commit 6e178d2012909bb7a61e6070cf0d514982b5863f Author: root Date: Wed May 13 14:20:41 2026 +0000 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cdfb184 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +site/node_modules/ +.env +*.log +dist/ +build/ diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..77154aa --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,73 @@ +# Развёртывание production сайта + +## Архитектура + +``` +┌─────────────────────────────────────────────────────────┐ +│ HTTPS :443 │ +│ (host nginx + Let's Encrypt) │ +└────────────────────┬────────────────────────────────────┘ + │ + ┌───────────┴───────────┐ + │ │ + ▼ ▼ +┌─────────────────┐ ┌─────────────────┐ +│ Next.js site │ │ BFF API │ +│ localhost:3000 │ │ localhost:3001 │ +│ (Docker) │ │ (Docker) │ +└─────────────────┘ └─────────────────┘ +``` + +## 1. SSL сертификат (уже установлен) + +Сертификаты находятся в `/etc/letsencrypt/live/uno-click.pip-test.ru/` + +## 2. Конфигурация nginx (обновлена) + +Хост nginx проксирует запросы: +- `/` → Next.js на `127.0.0.1:3000` +- `/api/` → BFF на `127.0.0.1:3001` +- `/files/` → MinIO на `127.0.0.1:9000` + +## 3. Запуск через docker-compose + +```bash +cd /opt/uno-click + +# Пересоберите образ site +docker compose build site + +# Запустите все сервисы +docker compose up -d +``` + +## 4. Проверка + +- Сайт: https://uno-click.pip-test.ru/ +- BFF API: https://uno-click.pip-test.ru/api/health + +## 5. Логи + +```bash +# Все сервисы +docker compose logs -f + +# Конкретный сервис +docker compose logs -f site +docker compose logs -f bff +``` + +## 6. Обновление + +```bash +# Пересобрать и перезапустить site +docker compose build site +docker compose up -d site +``` + +## CSRF защита + +Используется автоматическая CSRF защита через: +- **SameSite=Lax** cookie — браузер автоматически блокирует cross-site запросы +- Cookie автоматически отправляются с same-origin запросами +- Не нужно вручную передавать `x-csrf-token` в заголовках diff --git a/Dockerfile.n8n b/Dockerfile.n8n new file mode 100644 index 0000000..4b84e0d --- /dev/null +++ b/Dockerfile.n8n @@ -0,0 +1,10 @@ +FROM docker.n8n.io/n8nio/n8n:stable + +USER root + +RUN apt-get update \ + && apt-get install -y ffmpeg \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +USER node \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 0000000..37e5663 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,8 @@ +FROM node:20-alpine +WORKDIR /app +COPY package.json ./ +RUN npm install --omit=dev +COPY server.js ./ +ENV NODE_ENV=production +EXPOSE 3001 +CMD ["npm", "start"] diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..5217acb --- /dev/null +++ b/backend/package.json @@ -0,0 +1,14 @@ +{ + "name": "uno-bff", + "version": "1.0.0", + "main": "server.js", + "type": "commonjs", + "scripts": { + "start": "node server.js" + }, + "dependencies": { + "express": "^4.21.2", + "express-rate-limit": "^7.5.0", + "helmet": "^8.1.0" + } +} diff --git a/backend/server.js b/backend/server.js new file mode 100644 index 0000000..78838ee --- /dev/null +++ b/backend/server.js @@ -0,0 +1,156 @@ +const express = require('express'); +const helmet = require('helmet'); +const rateLimit = require('express-rate-limit'); +const crypto = require('crypto'); + +const app = express(); + +const PORT = Number(process.env.PORT || 3001); +const INTERNAL_TOKEN = process.env.INTERNAL_WEBHOOK_TOKEN || ''; +const TEXT_WEBHOOK = process.env.N8N_TEXT_SUBMIT_WEBHOOK || ''; +const SCENARIO_WEBHOOK = process.env.N8N_SCENARIO_WEBHOOK || ''; +const ALLOWED_SCENARIOS = new Set( + (process.env.ALLOWED_SCENARIOS || 'demo-1,demo-2') + .split(',') + .map(s => s.trim()) + .filter(Boolean) +); + +app.use(helmet({ contentSecurityPolicy: false })); +app.use(express.json({ limit: '2mb' })); +app.use(rateLimit({ + windowMs: 60 * 1000, + max: 60, + standardHeaders: true, + legacyHeaders: false +})); + +function ok(res, data = {}, message = 'OK') { + return res.json({ ok: true, data, message }); +} + +function fail(res, status, error, message, details = null) { + return res.status(status).json({ ok: false, error, message, details }); +} + +async function postToN8N(url, payload) { + if (!url) { + throw new Error('Webhook URL is empty'); + } + + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-Internal-Token': INTERNAL_TOKEN + }, + body: JSON.stringify(payload) + }); + + const raw = await response.text(); + + let parsed; + try { + parsed = raw ? JSON.parse(raw) : {}; + } catch { + parsed = { raw }; + } + + if (!response.ok) { + const err = new Error(parsed.message || raw || `n8n returned ${response.status}`); + err.status = response.status; + err.payload = parsed; + throw err; + } + + return parsed; +} + +app.get('/api/health', (req, res) => { + return ok(res, { + service: 'uno-bff', + nowTs: Date.now() + }, 'BFF is healthy'); +}); + +app.post('/api/forms/text-submit', async (req, res) => { + const text = typeof req.body?.text === 'string' ? req.body.text.trim() : ''; + + if (!text) { + return fail(res, 400, 'VALIDATION_ERROR', 'Поле text обязательно'); + } + + if (text.length > 500) { + return fail(res, 400, 'VALIDATION_ERROR', 'Поле text должно быть не длиннее 500 символов'); + } + + const payload = { + requestId: req.body?.requestId || crypto.randomUUID(), + source: 'uno-click-site', + text, + ts: Date.now(), + clientIp: req.headers['x-forwarded-for'] || req.socket.remoteAddress || '', + userAgent: req.headers['user-agent'] || '' + }; + + try { + const result = await postToN8N(TEXT_WEBHOOK, payload); + return ok(res, result, 'Текст успешно отправлен'); + } catch (error) { + console.error('text-submit error:', error); + return fail( + res, + 502, + 'N8N_ERROR', + 'Не удалось обработать запрос в n8n', + error.payload || error.message + ); + } +}); + +app.post('/api/actions/run-scenario', async (req, res) => { + const scenarioId = typeof req.body?.scenarioId === 'string' ? req.body.scenarioId.trim() : ''; + const payload = (req.body?.payload && typeof req.body.payload === 'object' && !Array.isArray(req.body.payload)) + ? req.body.payload + : {}; + + if (!scenarioId) { + return fail(res, 400, 'VALIDATION_ERROR', 'Поле scenarioId обязательно'); + } + + if (!ALLOWED_SCENARIOS.has(scenarioId)) { + return fail(res, 400, 'VALIDATION_ERROR', `Сценарий ${scenarioId} не разрешен`); + } + + const body = { + requestId: req.body?.requestId || crypto.randomUUID(), + source: 'uno-click-site', + scenarioId, + payload, + ts: Date.now(), + clientIp: req.headers['x-forwarded-for'] || req.socket.remoteAddress || '', + userAgent: req.headers['user-agent'] || '' + }; + + try { + const result = await postToN8N(SCENARIO_WEBHOOK, body); + return ok(res, result, 'Сценарий успешно запущен'); + } catch (error) { + console.error('run-scenario error:', error); + return fail( + res, + 502, + 'N8N_ERROR', + 'Не удалось запустить сценарий в n8n', + error.payload || error.message + ); + } +}); + +app.use((req, res) => { + return fail(res, 404, 'NOT_FOUND', 'Маршрут не найден'); +}); + +app.listen(PORT, '0.0.0.0', () => { + console.log(`uno-bff listening on port ${PORT}`); +}); diff --git a/bff/Dockerfile b/bff/Dockerfile new file mode 100644 index 0000000..a6a3421 --- /dev/null +++ b/bff/Dockerfile @@ -0,0 +1,13 @@ +FROM node:20-alpine + +WORKDIR /app + +COPY package*.json ./ + +RUN npm install --production + +COPY . . + +EXPOSE 3001 + +CMD ["node", "app.js"] diff --git a/bff/app.js b/bff/app.js new file mode 100644 index 0000000..757efe9 --- /dev/null +++ b/bff/app.js @@ -0,0 +1,68 @@ +import 'dotenv/config'; +import express from 'express'; +import cors from 'cors'; +import cookieParser from 'cookie-parser'; + +import authRoutes from './routes/auth.routes.js'; +import scenarioRoutes from './routes/scenario.routes.js'; +import resultRoutes from './routes/result.routes.js'; +import uploadRoutes from './routes/upload.routes.js'; +import mediaRoutes from './routes/media.routes.js'; +import telegramRoutes from './routes/telegram.routes.js'; +import { errorHandler } from './middleware/errorHandler.js'; + +const app = express(); + +// CORS настройка +const allowedOrigins = (process.env.FRONTEND_URL || 'http://localhost:3000') + .split(',').map(o => o.trim()); + +const corsOptions = { + origin: (origin, callback) => { + // Разрешаем запросы без origin (от nginx proxy) + if (!origin) return callback(null, true); + + const isReplit = origin && (origin.endsWith('.replit.dev') || origin.endsWith('.repl.co')); + if (allowedOrigins.includes(origin) || isReplit) callback(null, true); + else callback(new Error('Not allowed by CORS')); + }, + credentials: true, + allowedHeaders: ['Content-Type', 'Authorization', 'x-csrf-token'], + methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], +}; +app.use(cors(corsOptions)); + +// Статические файлы +app.use(express.static('public')); + +// Увеличенные лимиты для больших файлов +app.use(express.json({ limit: '500mb' })); +app.use(express.urlencoded({ extended: true, limit: '500mb' })); +app.use(cookieParser()); + +// health +app.get('/api/health', (req, res) => { + res.json({ ok: true }); +}); + +// routes +app.use('/api/auth', authRoutes); +app.use('/api/scenario', scenarioRoutes); +app.use('/api/result', resultRoutes); +app.use('/api/upload', uploadRoutes); +app.use('/api/media', mediaRoutes); +app.use('/api/telegram', telegramRoutes); + +// errors +app.use(errorHandler); + +export default app; + +const PORT = Number(process.env.PORT || 3001); +const HOST = process.env.HOST || '127.0.0.1'; + +app.set('trust proxy', 1); + +app.listen(PORT, HOST, () => { + console.log(`BFF started on http://${HOST}:${PORT}`); +}); \ No newline at end of file diff --git a/bff/app.js.bak.20260423_104351 b/bff/app.js.bak.20260423_104351 new file mode 100644 index 0000000..e0235e6 --- /dev/null +++ b/bff/app.js.bak.20260423_104351 @@ -0,0 +1,66 @@ +import 'dotenv/config'; +import express from 'express'; +import cors from 'cors'; +import cookieParser from 'cookie-parser'; + +import authRoutes from './routes/auth.routes.js'; +import scenarioRoutes from './routes/scenario.routes.js'; +import resultRoutes from './routes/result.routes.js'; +import uploadRoutes from './routes/upload.routes.js'; +import mediaRoutes from './routes/media.routes.js'; +import { errorHandler } from './middleware/errorHandler.js'; + +const app = express(); + +// CORS настройка +const allowedOrigins = (process.env.FRONTEND_URL || 'http://localhost:3000') + .split(',').map(o => o.trim()); + +const corsOptions = { + origin: (origin, callback) => { + // Разрешаем запросы без origin (от nginx proxy) + if (!origin) return callback(null, true); + + const isReplit = origin && (origin.endsWith('.replit.dev') || origin.endsWith('.repl.co')); + if (allowedOrigins.includes(origin) || isReplit) callback(null, true); + else callback(new Error('Not allowed by CORS')); + }, + credentials: true, + allowedHeaders: ['Content-Type', 'Authorization', 'x-csrf-token'], + methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], +}; +app.use(cors(corsOptions)); + +// Статические файлы +app.use(express.static('public')); + +// Увеличенные лимиты для больших файлов +app.use(express.json({ limit: '500mb' })); +app.use(express.urlencoded({ extended: true, limit: '500mb' })); +app.use(cookieParser()); + +// health +app.get('/api/health', (req, res) => { + res.json({ ok: true }); +}); + +// routes +app.use('/api/auth', authRoutes); +app.use('/api/scenario', scenarioRoutes); +app.use('/api/result', resultRoutes); +app.use('/api/upload', uploadRoutes); +app.use('/api/media', mediaRoutes); + +// errors +app.use(errorHandler); + +export default app; + +const PORT = Number(process.env.PORT || 3001); +const HOST = process.env.HOST || '127.0.0.1'; + +app.set('trust proxy', 1); + +app.listen(PORT, HOST, () => { + console.log(`BFF started on http://${HOST}:${PORT}`); +}); \ No newline at end of file diff --git a/bff/config/env.js b/bff/config/env.js new file mode 100644 index 0000000..dcdf09c --- /dev/null +++ b/bff/config/env.js @@ -0,0 +1,35 @@ +export const env = { + NODE_ENV: process.env.NODE_ENV || 'development', + PORT: Number(process.env.PORT || 3001), + + COOKIE_ACCESS_NAME: process.env.COOKIE_ACCESS_NAME || '__Host-access_token', + COOKIE_REFRESH_NAME: process.env.COOKIE_REFRESH_NAME || '__Host-refresh_token', + COOKIE_CSRF_NAME: process.env.COOKIE_CSRF_NAME || 'csrf_token', + COOKIE_DOMAIN: process.env.COOKIE_DOMAIN || undefined, + + ACCESS_TOKEN_TTL_SEC: Number(process.env.ACCESS_TOKEN_TTL_SEC || 900), // 15 min + REFRESH_TOKEN_TTL_SEC: Number(process.env.REFRESH_TOKEN_TTL_SEC || 2592000), // 30 days + + JWT_ISSUER: process.env.JWT_ISSUER || 'uno-click-bff', + JWT_AUDIENCE: process.env.JWT_AUDIENCE || 'uno-click-web', + JWT_PRIVATE_KEY: process.env.JWT_PRIVATE_KEY || '', + JWT_PUBLIC_KEY: process.env.JWT_PUBLIC_KEY || '', + + COOKIE_SECURE: process.env.COOKIE_SECURE !== 'false', + COOKIE_SAME_SITE: process.env.COOKIE_SAME_SITE || 'lax', + + N8N_BASE_URL: process.env.N8N_BASE_URL || 'https://n8n.uno-click.pip-test.ru', + + FRONTEND_URL: process.env.FRONTEND_URL || 'http://localhost:3000', + + // S3 (MinIO) Configuration + S3_ENDPOINT: process.env.S3_ENDPOINT || 'http://127.0.0.1:9000', + S3_ACCESS_KEY: process.env.S3_ACCESS_KEY || '', + S3_SECRET_KEY: process.env.S3_SECRET_KEY || '', + S3_BUCKET: process.env.S3_BUCKET || 'uno-click', + S3_IMAGES_INPUT_FOLDER: process.env.S3_IMAGES_INPUT_FOLDER || 'images_input', + S3_PRESIGNED_URL_EXPIRES_IN: Number(process.env.S3_PRESIGNED_URL_EXPIRES_IN || 3600), + + // Public S3 endpoint for browser access (via nginx proxy) + S3_PUBLIC_ENDPOINT: process.env.S3_PUBLIC_ENDPOINT || 'https://uno-click.pip-test.ru/s3-upload/uno-click/', +}; \ No newline at end of file diff --git a/bff/db.js b/bff/db.js new file mode 100644 index 0000000..b095de0 --- /dev/null +++ b/bff/db.js @@ -0,0 +1,12 @@ +import 'dotenv/config'; +import pg from 'pg'; + +const { Pool } = pg; + +export const pool = new Pool({ + host: process.env.PG_HOST, + port: Number(process.env.PG_PORT || 5432), + database: process.env.PG_DATABASE, + user: process.env.PG_USER, + password: process.env.PG_PASSWORD, +}); \ No newline at end of file diff --git a/bff/ecosystem.config.cjs b/bff/ecosystem.config.cjs new file mode 100644 index 0000000..bc73622 --- /dev/null +++ b/bff/ecosystem.config.cjs @@ -0,0 +1,20 @@ +module.exports = { + apps: [{ + name: 'uno-bff', + script: './app.js', + instances: 1, + autorestart: true, + watch: false, + max_memory_restart: '500M', + env: { + NODE_ENV: 'production', + PORT: 3001, + S3_ENDPOINT: 'http://127.0.0.1:9000', + S3_ACCESS_KEY: 'UN0-admin', + S3_SECRET_KEY: 'RAygtZHqGN49qKn', + S3_BUCKET: 'uno-click', + S3_IMAGES_INPUT_FOLDER: 'images_input', + S3_PRESIGNED_URL_EXPIRES_IN: 3600, + }, + }], +}; diff --git a/bff/init-s3.sh b/bff/init-s3.sh new file mode 100644 index 0000000..83e079f --- /dev/null +++ b/bff/init-s3.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# Wait for MinIO to be ready +echo "Waiting for MinIO to be ready..." +while ! nc -z minio 9000; do + sleep 1 +done + +echo "MinIO is ready!" + +# Create bucket if it doesn't exist +echo "Creating bucket: uno-click" +mc alias set myminio http://minio:9000 UN0-admin RAygtZHqGN49qKn +mc mb --ignore-existing myminio/uno-click +mc anonymous set download myminio/uno-click/images_input + +echo "Bucket setup complete!" diff --git a/bff/middleware/authRequired.js b/bff/middleware/authRequired.js new file mode 100644 index 0000000..af53118 --- /dev/null +++ b/bff/middleware/authRequired.js @@ -0,0 +1,33 @@ +import { env } from '../config/env.js'; +import { verifyAccessToken } from '../services/token.service.js'; + +export async function authRequired(req, res, next) { + try { + let token = req.cookies?.[env.COOKIE_ACCESS_NAME]; + + // Если нет cookie — пробуем Authorization: Bearer + if (!token) { + const auth = req.headers['authorization']; + if (auth && auth.startsWith('Bearer ')) { + token = auth.slice(7); + } + } + + if (!token) { + return res.status(401).json({ error: 'UNAUTHORIZED', message: 'Access token is missing' }); + } + + const payload = await verifyAccessToken(token); + + req.user = { + id: payload.sub, + role: payload.role, + email: payload.email, + sessionId: payload.sid, + }; + + next(); + } catch (err) { + return res.status(401).json({ error: 'UNAUTHORIZED', message: 'Invalid access token' }); + } +} diff --git a/bff/middleware/csrfRequired.js b/bff/middleware/csrfRequired.js new file mode 100644 index 0000000..0d76bf8 --- /dev/null +++ b/bff/middleware/csrfRequired.js @@ -0,0 +1,28 @@ +import { env } from '../config/env.js'; + +export function csrfRequired(req, res, next) { + const cookieToken = req.cookies?.[env.COOKIE_CSRF_NAME]; + const headerToken = req.get('x-csrf-token'); + + // Для SameSite cookie защита уже встроена в браузер + // Если cookie есть и SameSite установлен - это уже защита от CSRF + // Дополнительная проверка заголовка для обратной совместимости + if (cookieToken) { + // Cookie с SameSite=Lax/Strict уже защищает от CSRF + // Если заголовок есть - проверяем совпадение (double submit pattern) + if (headerToken && cookieToken !== headerToken) { + return res.status(403).json({ + error: 'CSRF_INVALID', + message: 'CSRF token mismatch', + }); + } + // Если заголовка нет - разрешаем (SameSite cookie защищает) + return next(); + } + + // Cookie нет - это ошибка + return res.status(403).json({ + error: 'CSRF_INVALID', + message: 'CSRF token is missing', + }); +} \ No newline at end of file diff --git a/bff/middleware/errorHandler.js b/bff/middleware/errorHandler.js new file mode 100644 index 0000000..f3b2594 --- /dev/null +++ b/bff/middleware/errorHandler.js @@ -0,0 +1,24 @@ +export function errorHandler(err, req, res, next) { + const statusCode = err.statusCode || 500; + const code = err.code || 'INTERNAL_ERROR'; + + console.error('[BFF ERROR]', { + code, + statusCode, + message: err.message, + stack: err.stack, + }); + + const response = { + ok: false, + error: code, + message: err.message || 'Internal server error', + }; + + // Добавляем детали валидации если есть + if (err.details && Array.isArray(err.details)) { + response.details = err.details; + } + + res.status(statusCode).json(response); +} diff --git a/bff/middleware/validateImage.js b/bff/middleware/validateImage.js new file mode 100644 index 0000000..309ea03 --- /dev/null +++ b/bff/middleware/validateImage.js @@ -0,0 +1,51 @@ +const ALLOWED_MIME_TYPES = new Set([ + 'image/jpeg', + 'image/jpg', + 'image/png', + 'image/gif', + 'image/webp', +]); + +const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10 MB + +export function validateImage(req, res, next) { + const file = req.file; + + if (!file) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Файл не предоставлен', + }); + } + + if (!ALLOWED_MIME_TYPES.has(file.mimetype)) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILE_TYPE', + message: `Недопустимый тип файла. Разрешены: JPEG, PNG, GIF, WebP`, + }); + } + + if (file.size > MAX_FILE_SIZE) { + return res.status(400).json({ + ok: false, + error: 'FILE_TOO_LARGE', + message: `Файл слишком большой. Максимум: ${MAX_FILE_SIZE / 1024 / 1024}MB`, + }); + } + + const filename = file.originalname || file.filename; + const ext = filename.split('.').pop().toLowerCase(); + const validExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp']; + + if (!validExtensions.includes(ext)) { + return res.status(400).json({ + ok: false, + error: 'INVALID_EXTENSION', + message: 'Недопустимое расширение файла', + }); + } + + next(); +} diff --git a/bff/migrations/001-create-user-files-table.sql b/bff/migrations/001-create-user-files-table.sql new file mode 100644 index 0000000..2d2d6ed --- /dev/null +++ b/bff/migrations/001-create-user-files-table.sql @@ -0,0 +1,33 @@ +-- Создание схемы, если не существует +CREATE SCHEMA IF NOT EXISTS uno_bff; + +-- Таблица для хранения метаданных загруженных файлов пользователей +CREATE TABLE IF NOT EXISTS uno_bff.user_files ( + id BIGSERIAL PRIMARY KEY, + user_id UUID NOT NULL, + s3_key VARCHAR(512) NOT NULL, + original_filename VARCHAR(255) NOT NULL, + file_size BIGINT NOT NULL, + content_type VARCHAR(128) NOT NULL, + file_type VARCHAR(32) NOT NULL DEFAULT 'image', -- image, video + folder VARCHAR(64) NOT NULL DEFAULT 'images_input', + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT user_files_user_id_fk FOREIGN KEY (user_id) REFERENCES uno_bff.users(id) ON DELETE CASCADE +); + +-- Индексы для ускорения поиска +CREATE INDEX IF NOT EXISTS idx_user_files_user_id ON uno_bff.user_files(user_id); +CREATE INDEX IF NOT EXISTS idx_user_files_s3_key ON uno_bff.user_files(s3_key); +CREATE INDEX IF NOT EXISTS idx_user_files_folder ON uno_bff.user_files(folder); +CREATE INDEX IF NOT EXISTS idx_user_files_created_at ON uno_bff.user_files(created_at DESC); +CREATE INDEX IF NOT EXISTS idx_user_files_file_type ON uno_bff.user_files(file_type); + +-- Комментарий +COMMENT ON TABLE uno_bff.user_files IS 'Метаданные загруженных файлов пользователей в S3'; +COMMENT ON COLUMN uno_bff.user_files.user_id IS 'ID владельца файла (UUID)'; +COMMENT ON COLUMN uno_bff.user_files.s3_key IS 'Путь к файлу в S3 хранилище'; +COMMENT ON COLUMN uno_bff.user_files.original_filename IS 'Оригинальное имя файла'; +COMMENT ON COLUMN uno_bff.user_files.file_type IS 'Тип файла: image, video'; +COMMENT ON COLUMN uno_bff.user_files.folder IS 'Папка в S3 бакете (images_input, videos_input, etc.)'; diff --git a/bff/migrations/002-add-status-to-user-files.sql b/bff/migrations/002-add-status-to-user-files.sql new file mode 100644 index 0000000..181ebc6 --- /dev/null +++ b/bff/migrations/002-add-status-to-user-files.sql @@ -0,0 +1,14 @@ +-- Добавляем поле status для отслеживания состояния загрузки +ALTER TABLE uno_bff.user_files +ADD COLUMN IF NOT EXISTS status VARCHAR(32) DEFAULT 'uploaded'; + +-- Добавляем поле upload_id для multipart upload +ALTER TABLE uno_bff.user_files +ADD COLUMN IF NOT EXISTS upload_id VARCHAR(255); + +-- Индекс для поиска по статусу +CREATE INDEX IF NOT EXISTS idx_user_files_status ON uno_bff.user_files(status); + +-- Комментарий +COMMENT ON COLUMN uno_bff.user_files.status IS 'Статус файла: uploading, uploaded, failed'; +COMMENT ON COLUMN uno_bff.user_files.upload_id IS 'S3 UploadId для multipart upload'; diff --git a/bff/migrations/002-link-user-files-to-generations.sql b/bff/migrations/002-link-user-files-to-generations.sql new file mode 100644 index 0000000..f8b1ad0 --- /dev/null +++ b/bff/migrations/002-link-user-files-to-generations.sql @@ -0,0 +1,14 @@ +-- Миграция: связываем user_files с generations и generation_steps + +-- Добавляем новые колонки в user_files +ALTER TABLE uno_bff.user_files + ADD COLUMN IF NOT EXISTS generation_uuid uuid REFERENCES uno_bff.generations(generation_uuid) ON DELETE SET NULL, + ADD COLUMN IF NOT EXISTS generation_step_id bigint REFERENCES uno_bff.generation_steps(id) ON DELETE SET NULL; + +-- Индексы для ускорения поиска по генерациям +CREATE INDEX IF NOT EXISTS idx_user_files_generation_uuid ON uno_bff.user_files(generation_uuid); +CREATE INDEX IF NOT EXISTS idx_user_files_generation_step_id ON uno_bff.user_files(generation_step_id); + +-- Комментарий +COMMENT ON COLUMN uno_bff.user_files.generation_uuid IS 'UUID генерации, в рамках которой загружен файл'; +COMMENT ON COLUMN uno_bff.user_files.generation_step_id IS 'ID шага генерации, в рамках которого загружен файл'; diff --git a/bff/node_modules/.bin/fxparser b/bff/node_modules/.bin/fxparser new file mode 120000 index 0000000..75327ed --- /dev/null +++ b/bff/node_modules/.bin/fxparser @@ -0,0 +1 @@ +../fast-xml-parser/src/cli/cli.js \ No newline at end of file diff --git a/bff/node_modules/.bin/mkdirp b/bff/node_modules/.bin/mkdirp new file mode 120000 index 0000000..017896c --- /dev/null +++ b/bff/node_modules/.bin/mkdirp @@ -0,0 +1 @@ +../mkdirp/bin/cmd.js \ No newline at end of file diff --git a/bff/node_modules/.bin/semver b/bff/node_modules/.bin/semver new file mode 120000 index 0000000..5aaadf4 --- /dev/null +++ b/bff/node_modules/.bin/semver @@ -0,0 +1 @@ +../semver/bin/semver.js \ No newline at end of file diff --git a/bff/node_modules/.package-lock.json b/bff/node_modules/.package-lock.json new file mode 100644 index 0000000..0ed695f --- /dev/null +++ b/bff/node_modules/.package-lock.json @@ -0,0 +1,3054 @@ +{ + "name": "bff", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.1021.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1021.0.tgz", + "integrity": "sha512-BCfggq8gYSjlKOZlMSVApix3cgKAQIWGeoJFX/AU5HMvqz1BZBEw83jJFL9LYrqTPCocH8NGl++1Xr70ro+jcg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-node": "^3.972.29", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.8", + "@aws-sdk/middleware-expect-continue": "^3.972.8", + "@aws-sdk/middleware-flexible-checksums": "^3.974.6", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-location-constraint": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.9", + "@aws-sdk/middleware-sdk-s3": "^3.972.27", + "@aws-sdk/middleware-ssec": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.28", + "@aws-sdk/region-config-resolver": "^3.972.10", + "@aws-sdk/signature-v4-multi-region": "^3.996.15", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.14", + "@smithy/config-resolver": "^4.4.13", + "@smithy/core": "^3.23.13", + "@smithy/eventstream-serde-browser": "^4.2.12", + "@smithy/eventstream-serde-config-resolver": "^4.3.12", + "@smithy/eventstream-serde-node": "^4.2.12", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-blob-browser": "^4.2.13", + "@smithy/hash-node": "^4.2.12", + "@smithy/hash-stream-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/md5-js": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.13", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.14", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.973.26", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.26.tgz", + "integrity": "sha512-A/E6n2W42ruU+sfWk+mMUOyVXbsSgGrY3MJ9/0Az5qUdG67y8I6HYzzoAa+e/lzxxl1uCYmEL6BTMi9ZiZnplQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/xml-builder": "^3.972.16", + "@smithy/core": "^3.23.13", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/crc64-nvme": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.5.tgz", + "integrity": "sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.24.tgz", + "integrity": "sha512-FWg8uFmT6vQM7VuzELzwVo5bzExGaKHdubn0StjgrcU5FvuLExUe+k06kn/40uKv59rYzhez8eFNM4yYE/Yb/w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.26", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.26.tgz", + "integrity": "sha512-CY4ppZ+qHYqcXqBVi//sdHST1QK3KzOEiLtpLsc9W2k2vfZPKExGaQIsOwcyvjpjUEolotitmd3mUNY56IwDEA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.21", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.28.tgz", + "integrity": "sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-env": "^3.972.24", + "@aws-sdk/credential-provider-http": "^3.972.26", + "@aws-sdk/credential-provider-login": "^3.972.28", + "@aws-sdk/credential-provider-process": "^3.972.24", + "@aws-sdk/credential-provider-sso": "^3.972.28", + "@aws-sdk/credential-provider-web-identity": "^3.972.28", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.28.tgz", + "integrity": "sha512-ZSTfO6jqUTCysbdBPtEX5OUR//3rbD0lN7jO3sQeS2Gjr/Y+DT6SbIJ0oT2cemNw3UzKu97sNONd1CwNMthuZQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.29", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.29.tgz", + "integrity": "sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.24", + "@aws-sdk/credential-provider-http": "^3.972.26", + "@aws-sdk/credential-provider-ini": "^3.972.28", + "@aws-sdk/credential-provider-process": "^3.972.24", + "@aws-sdk/credential-provider-sso": "^3.972.28", + "@aws-sdk/credential-provider-web-identity": "^3.972.28", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.24.tgz", + "integrity": "sha512-Q2k/XLrFXhEztPHqj4SLCNID3hEPdlhh1CDLBpNnM+1L8fq7P+yON9/9M1IGN/dA5W45v44ylERfXtDAlmMNmw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.28.tgz", + "integrity": "sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/token-providers": "3.1021.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.28.tgz", + "integrity": "sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.8.tgz", + "integrity": "sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.8.tgz", + "integrity": "sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.974.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.6.tgz", + "integrity": "sha512-YckB8k1ejbyCg/g36gUMFLNzE4W5cERIa4MtsdO+wpTmJEP0+TB7okWIt7d8TDOvnb7SwvxJ21E4TGOBxFpSWQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/crc64-nvme": "^3.972.5", + "@aws-sdk/types": "^3.973.6", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", + "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.8.tgz", + "integrity": "sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", + "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.9.tgz", + "integrity": "sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.972.27", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.27.tgz", + "integrity": "sha512-gomO6DZwx+1D/9mbCpcqO5tPBqYBK7DtdgjTIjZ4yvfh/S7ETwAPS0XbJgP2JD8Ycr5CwVrEkV1sFtu3ShXeOw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/core": "^3.23.13", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.8.tgz", + "integrity": "sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.28.tgz", + "integrity": "sha512-cfWZFlVh7Va9lRay4PN2A9ARFzaBYcA097InT5M2CdRS05ECF5yaz86jET8Wsl2WcyKYEvVr/QNmKtYtafUHtQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@smithy/core": "^3.23.13", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-retry": "^4.2.13", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.996.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.18.tgz", + "integrity": "sha512-c7ZSIXrESxHKx2Mcopgd8AlzZgoXMr20fkx5ViPWPOLBvmyhw9VwJx/Govg8Ef/IhEon5R9l53Z8fdYSEmp6VA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.9", + "@aws-sdk/middleware-user-agent": "^3.972.28", + "@aws-sdk/region-config-resolver": "^3.972.10", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.14", + "@smithy/config-resolver": "^4.4.13", + "@smithy/core": "^3.23.13", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.13", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.10.tgz", + "integrity": "sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.13", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.1021.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.1021.0.tgz", + "integrity": "sha512-kkIzsIAc7wnG7vVRkZFIwJ3noOyF3S6ozOQ9t2KxzPde1LsmpmPwYbmiB91DzdfuGySdk4Hpb0JmHh4KhGECXQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "^3.996.15", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-format-url": "^3.972.8", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.996.15", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.15.tgz", + "integrity": "sha512-Ukw2RpqvaL96CjfH/FgfBmy/ZosHBqoHBCFsN61qGg99F33vpntIVii8aNeh65XuOja73arSduskoa4OJea9RQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "^3.972.27", + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.1021.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1021.0.tgz", + "integrity": "sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.973.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", + "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", + "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.996.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", + "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-endpoints": "^3.3.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.972.8.tgz", + "integrity": "sha512-J6DS9oocrgxM8xlUTTmQOuwRF6rnAGEujAN9SAzllcrQmwn5iJ58ogxy3SEhD0Q7JZvlA5jvIXBkpQRqEqlE9A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", + "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.973.14", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.14.tgz", + "integrity": "sha512-vNSB/DYaPOyujVZBg/zUznH9QC142MaTHVmaFlF7uzzfg3CgT9f/l4C0Yi+vU/tbBhxVcXVB90Oohk5+o+ZbWw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "^3.972.28", + "@aws-sdk/types": "^3.973.6", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.972.16", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.16.tgz", + "integrity": "sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "fast-xml-parser": "5.5.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", + "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", + "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.13.tgz", + "integrity": "sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.23.13", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.13.tgz", + "integrity": "sha512-J+2TT9D6oGsUVXVEMvz8h2EmdVnkBiy2auCie4aSJMvKlzUtO5hqjEzXhoCUkIMo7gAYjbQcN0g/MMSXEhDs1Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.12.tgz", + "integrity": "sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.12.tgz", + "integrity": "sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.12.tgz", + "integrity": "sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.12.tgz", + "integrity": "sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.12.tgz", + "integrity": "sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.12.tgz", + "integrity": "sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.15", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz", + "integrity": "sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.13.tgz", + "integrity": "sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.2", + "@smithy/chunked-blob-reader-native": "^4.2.3", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.12.tgz", + "integrity": "sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.12.tgz", + "integrity": "sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz", + "integrity": "sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.12.tgz", + "integrity": "sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz", + "integrity": "sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.4.28", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.28.tgz", + "integrity": "sha512-p1gfYpi91CHcs5cBq982UlGlDrxoYUX6XdHSo91cQ2KFuz6QloHosO7Jc60pJiVmkWrKOV8kFYlGFFbQ2WUKKQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.13", + "@smithy/middleware-serde": "^4.2.16", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.46", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.46.tgz", + "integrity": "sha512-SpvWNNOPOrKQGUqZbEPO+es+FRXMWvIyzUKUOYdDgdlA6BdZj/R58p4umoQ76c2oJC44PiM7mKizyyex1IJzow==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/service-error-classification": "^4.2.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.13", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.16", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.16.tgz", + "integrity": "sha512-beqfV+RZ9RSv+sQqor3xroUUYgRFCGRw6niGstPG8zO9LgTl0B0MCucxjmrH/2WwksQN7UUgI7KNANoZv+KALA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.13", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.12.tgz", + "integrity": "sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.12.tgz", + "integrity": "sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.5.1.tgz", + "integrity": "sha512-ejjxdAXjkPIs9lyYyVutOGNOraqUE9v/NjGMKwwFrfOM354wfSD8lmlj8hVwUzQmlLLF4+udhfCX9Exnbmvfzw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.12.tgz", + "integrity": "sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", + "integrity": "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz", + "integrity": "sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-uri-escape": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.12.tgz", + "integrity": "sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.12.tgz", + "integrity": "sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz", + "integrity": "sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", + "integrity": "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.12.8", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", + "integrity": "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.13", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.21", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", + "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.12.tgz", + "integrity": "sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.44", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.44.tgz", + "integrity": "sha512-eZg6XzaCbVr2S5cAErU5eGBDaOVTuTo1I65i4tQcHENRcZ8rMWhQy1DaIYUSLyZjsfXvmCqZrstSMYyGFocvHA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.48", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.48.tgz", + "integrity": "sha512-FqOKTlqSaoV3nzO55pMs5NBnZX8EhoI0DGmn9kbYeXWppgHD6dchyuj2HLqp4INJDJbSrj6OFYJkAh/WhSzZPg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.13", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz", + "integrity": "sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.12.tgz", + "integrity": "sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.13.tgz", + "integrity": "sha512-qQQsIvL0MGIbUjeSrg0/VlQ3jGNKyM3/2iU3FPNgy01z+Sp4OvcaxbgIoFOTvB61ZoohtutuOvOcgmhbD0katQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.21", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.21.tgz", + "integrity": "sha512-KzSg+7KKywLnkoKejRtIBXDmwBfjGvg1U1i/etkC7XSWUyFCoLno1IohV2c74IzQqdhX5y3uE44r/8/wuK+A7Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.14.tgz", + "integrity": "sha512-2zqq5o/oizvMaFUlNiTyZ7dbgYv1a893aGut2uaxtbzTx/VYYnRxWzDHuD/ftgcw94ffenua+ZNLrbqwUYE+Bg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", + "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/bowser": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", + "license": "MIT" + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", + "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", + "dependencies": { + "cookie": "0.7.2", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dotenv": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-xml-builder": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.5.8", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz", + "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.2.0", + "strnum": "^2.2.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/multer": { + "version": "1.4.5-lts.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.2.tgz", + "integrity": "sha512-VzGiVigcG9zUAoCNU+xShztrlr1auZOlurXynNvO9GiWD1/mTBbUljOKY+qMeazBqXgRnjzeEgJI/wyjJUHg9A==", + "deprecated": "Multer 1.x is impacted by a number of vulnerabilities, which have been patched in 2.x. You should upgrade to the latest 2.x version.", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-expression-matcher": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", + "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.0.tgz", + "integrity": "sha512-PuseHIvAnz3bjrM2rGJtSgo1zjgxapTLZ7x2pjhzWwlp4SJQgK3f3iZIQwkpEnBaKz6seKBADpM4B4ySkuYypg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/pg": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", + "dependencies": { + "pg-connection-string": "^2.12.0", + "pg-pool": "^3.13.0", + "pg-protocol": "^1.13.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.3.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", + "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", + "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/strnum": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", + "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + } + } +} diff --git a/bff/node_modules/@aws-crypto/crc32/CHANGELOG.md b/bff/node_modules/@aws-crypto/crc32/CHANGELOG.md new file mode 100644 index 0000000..7d76500 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32/CHANGELOG.md @@ -0,0 +1,100 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +### Features + +- Use @smithy/util-utf8 ([#730](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/730)) ([00fb851](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/00fb851ca3559d5a1f370f9256814de1210826b8)), closes [#699](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/699) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +**Note:** Version bump only for package @aws-crypto/crc32 + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/crc32 + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +- feat!: replace Hash implementations with Checksum interface (#492) ([da43dc0](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/da43dc0fdf669d9ebb5bfb1b1f7c79e46c4aaae1)), closes [#492](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/492) + +### BREAKING CHANGES + +- All classes that implemented `Hash` now implement `Checksum`. + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +### Bug Fixes + +- **#337:** update @aws-sdk/types ([#373](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/373)) ([b26a811](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/b26a811a392f5209c7ec7e57251500d4d78f97ff)), closes [#337](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/337) + +## [2.0.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.0...v2.0.1) (2021-12-09) + +**Note:** Version bump only for package @aws-crypto/crc32 + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/crc32 + +## [1.2.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.1...v1.2.2) (2021-10-12) + +### Bug Fixes + +- **crc32c:** ie11 does not support Array.from ([#221](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/221)) ([5f49547](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/5f495472ab8988cf203e0f2a70a51f7e1fcd7e60)) + +## [1.2.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.0...v1.2.1) (2021-09-17) + +**Note:** Version bump only for package @aws-crypto/crc32 + +# [1.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.1.1...v1.2.0) (2021-09-17) + +### Features + +- Add AwsCrc32 Hash ([f5d7e81](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/f5d7e815fcbe0f8da1edb855fea3bd33eb1edc15)) + +# [1.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/crc32@1.0.0...@aws-crypto/crc32@1.1.0) (2021-08-11) + +### Features + +- Create CRC-32C implementation ([#201](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/201)) ([e43c7ec](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e43c7ecd30d6499fa696f5839ecc30502a34b8b6)) + +# [1.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/crc32@1.0.0-alpha.0...@aws-crypto/crc32@1.0.0) (2020-10-22) + +**Note:** Version bump only for package @aws-crypto/crc32 + +# [1.0.0-alpha.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/crc32@0.1.0-preview.4...@aws-crypto/crc32@1.0.0-alpha.0) (2020-02-07) + +**Note:** Version bump only for package @aws-crypto/crc32 + +# [0.1.0-preview.4](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/crc32@0.1.0-preview.2...@aws-crypto/crc32@0.1.0-preview.4) (2020-01-16) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.3](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/crc32@0.1.0-preview.2...@aws-crypto/crc32@0.1.0-preview.3) (2019-11-15) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.2](https://github.com/aws/aws-javascript-crypto-helpers/compare/@aws-crypto/crc32@0.1.0-preview.1...@aws-crypto/crc32@0.1.0-preview.2) (2019-10-30) + +### Bug Fixes + +- remove /src/ from .npmignore (for sourcemaps) ([#5](https://github.com/aws/aws-javascript-crypto-helpers/issues/5)) ([ec52056](https://github.com/aws/aws-javascript-crypto-helpers/commit/ec52056)) diff --git a/bff/node_modules/@aws-crypto/crc32/LICENSE b/bff/node_modules/@aws-crypto/crc32/LICENSE new file mode 100644 index 0000000..980a15a --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-crypto/crc32/README.md b/bff/node_modules/@aws-crypto/crc32/README.md new file mode 100644 index 0000000..b54737a --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32/README.md @@ -0,0 +1,16 @@ +# @aws-crypto/crc32 + +Pure JS implementation of CRC32 https://en.wikipedia.org/wiki/Cyclic_redundancy_check + +## Usage + +``` +import { Crc32 } from '@aws-crypto/crc32'; + +const crc32Digest = (new Crc32).update(buffer).digest() + +``` + +## Test + +`npm test` diff --git a/bff/node_modules/@aws-crypto/crc32/package.json b/bff/node_modules/@aws-crypto/crc32/package.json new file mode 100644 index 0000000..9e83975 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32/package.json @@ -0,0 +1,32 @@ +{ + "name": "@aws-crypto/crc32", + "version": "5.2.0", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/crc32", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/bff/node_modules/@aws-crypto/crc32/src/aws_crc32.ts b/bff/node_modules/@aws-crypto/crc32/src/aws_crc32.ts new file mode 100644 index 0000000..bee48c9 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32/src/aws_crc32.ts @@ -0,0 +1,24 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { SourceData, Checksum } from "@aws-sdk/types"; +import { convertToBuffer, isEmptyData, numToUint8 } from "@aws-crypto/util"; +import { Crc32 } from "./index"; + +export class AwsCrc32 implements Checksum { + private crc32 = new Crc32(); + + update(toHash: SourceData) { + if (isEmptyData(toHash)) return; + + this.crc32.update(convertToBuffer(toHash)); + } + + async digest(): Promise { + return numToUint8(this.crc32.digest()); + } + + reset(): void { + this.crc32 = new Crc32(); + } +} diff --git a/bff/node_modules/@aws-crypto/crc32/src/index.ts b/bff/node_modules/@aws-crypto/crc32/src/index.ts new file mode 100644 index 0000000..4762386 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32/src/index.ts @@ -0,0 +1,92 @@ +import {uint32ArrayFrom} from "@aws-crypto/util"; + +export function crc32(data: Uint8Array): number { + return new Crc32().update(data).digest(); +} + +export class Crc32 { + private checksum = 0xffffffff; + + update(data: Uint8Array): this { + for (const byte of data) { + this.checksum = + (this.checksum >>> 8) ^ lookupTable[(this.checksum ^ byte) & 0xff]; + } + + return this; + } + + digest(): number { + return (this.checksum ^ 0xffffffff) >>> 0; + } +} + +// prettier-ignore +const a_lookUpTable = [ + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, + 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, + 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, + 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91, + 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, + 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, + 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, + 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, + 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, + 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, + 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, + 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, + 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, + 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, + 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, + 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, + 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433, + 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, + 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, + 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, + 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, + 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, + 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, + 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, + 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, + 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, + 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, + 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, + 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, + 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, + 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683, + 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, + 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, + 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, + 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, + 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, + 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, + 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, + 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, + 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, + 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, + 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, + 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, + 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, + 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, + 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, + 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, + 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, + 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, + 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, + 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, + 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, + 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, + 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, + 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, + 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, + 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, + 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D, +]; +const lookupTable: Uint32Array = uint32ArrayFrom(a_lookUpTable) +export { AwsCrc32 } from "./aws_crc32"; diff --git a/bff/node_modules/@aws-crypto/crc32/tsconfig.json b/bff/node_modules/@aws-crypto/crc32/tsconfig.json new file mode 100644 index 0000000..2b996d0 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build/main", + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/bff/node_modules/@aws-crypto/crc32/tsconfig.module.json b/bff/node_modules/@aws-crypto/crc32/tsconfig.module.json new file mode 100644 index 0000000..7d0cfdd --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/bff/node_modules/@aws-crypto/crc32c/CHANGELOG.md b/bff/node_modules/@aws-crypto/crc32c/CHANGELOG.md new file mode 100644 index 0000000..f3a9ea6 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32c/CHANGELOG.md @@ -0,0 +1,76 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +### Features + +- Use @smithy/util-utf8 ([#730](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/730)) ([00fb851](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/00fb851ca3559d5a1f370f9256814de1210826b8)), closes [#699](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/699) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +**Note:** Version bump only for package @aws-crypto/crc32c + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/crc32c + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +- feat!: replace Hash implementations with Checksum interface (#492) ([da43dc0](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/da43dc0fdf669d9ebb5bfb1b1f7c79e46c4aaae1)), closes [#492](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/492) + +### BREAKING CHANGES + +- All classes that implemented `Hash` now implement `Checksum`. + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +### Bug Fixes + +- **#337:** update @aws-sdk/types ([#373](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/373)) ([b26a811](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/b26a811a392f5209c7ec7e57251500d4d78f97ff)), closes [#337](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/337) + +## [2.0.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.0...v2.0.1) (2021-12-09) + +**Note:** Version bump only for package @aws-crypto/crc32c + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/crc32c + +## [1.2.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.1...v1.2.2) (2021-10-12) + +### Bug Fixes + +- **crc32c:** ie11 does not support Array.from ([#221](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/221)) ([5f49547](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/5f495472ab8988cf203e0f2a70a51f7e1fcd7e60)) + +## [1.2.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.0...v1.2.1) (2021-09-17) + +**Note:** Version bump only for package @aws-crypto/crc32c + +# [1.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.1.1...v1.2.0) (2021-09-17) + +### Features + +- Add AwsCrc32C Hash ([4840c83](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/4840c83bdd7c461dded777ebc45a8f99258ba21c)) + +## [0.2.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/crc32c@0.2.0...@aws-crypto/crc32c@0.2.1) (2021-08-24) + +**Note:** Version bump only for package @aws-crypto/crc32c + +# 0.2.0 (2021-08-11) + +### Features + +- Create CRC-32C implementation ([#201](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/201)) ([e43c7ec](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e43c7ecd30d6499fa696f5839ecc30502a34b8b6)) diff --git a/bff/node_modules/@aws-crypto/crc32c/LICENSE b/bff/node_modules/@aws-crypto/crc32c/LICENSE new file mode 100644 index 0000000..980a15a --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32c/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-crypto/crc32c/README.md b/bff/node_modules/@aws-crypto/crc32c/README.md new file mode 100644 index 0000000..2b8ef80 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32c/README.md @@ -0,0 +1,16 @@ +# @aws-crypto/crc32c + +Pure JS implementation of CRC32-C https://en.wikipedia.org/wiki/Cyclic_redundancy_check + +## Usage + +``` +import { Crc32c } from '@aws-crypto/crc32c'; + +const crc32Digest = (new Crc32c).update(buffer).digest() + +``` + +## Test + +`npm test` diff --git a/bff/node_modules/@aws-crypto/crc32c/package.json b/bff/node_modules/@aws-crypto/crc32c/package.json new file mode 100644 index 0000000..1862d9e --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32c/package.json @@ -0,0 +1,32 @@ +{ + "name": "@aws-crypto/crc32c", + "version": "5.2.0", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/crc32c", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/bff/node_modules/@aws-crypto/crc32c/src/aws_crc32c.ts b/bff/node_modules/@aws-crypto/crc32c/src/aws_crc32c.ts new file mode 100644 index 0000000..0108cb3 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32c/src/aws_crc32c.ts @@ -0,0 +1,24 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { Checksum, SourceData } from "@aws-sdk/types"; +import { convertToBuffer, isEmptyData, numToUint8 } from "@aws-crypto/util"; +import { Crc32c } from "./index"; + +export class AwsCrc32c implements Checksum { + private crc32c = new Crc32c(); + + update(toHash: SourceData) { + if (isEmptyData(toHash)) return; + + this.crc32c.update(convertToBuffer(toHash)); + } + + async digest(): Promise { + return numToUint8(this.crc32c.digest()); + } + + reset(): void { + this.crc32c = new Crc32c(); + } +} diff --git a/bff/node_modules/@aws-crypto/crc32c/src/index.ts b/bff/node_modules/@aws-crypto/crc32c/src/index.ts new file mode 100644 index 0000000..83a7824 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32c/src/index.ts @@ -0,0 +1,64 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import {uint32ArrayFrom} from "@aws-crypto/util"; + +export function crc32c(data: Uint8Array): number { + return new Crc32c().update(data).digest(); +} + +export class Crc32c { + private checksum = 0xffffffff; + + update(data: Uint8Array): this { + for (const byte of data) { + this.checksum = + (this.checksum >>> 8) ^ lookupTable[(this.checksum ^ byte) & 0xff]; + } + + return this; + } + + digest(): number { + return (this.checksum ^ 0xffffffff) >>> 0; + } +} + +// prettier-ignore +const a_lookupTable = [ + 0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB, + 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24, + 0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384, + 0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B, + 0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35, + 0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA, + 0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A, + 0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595, + 0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957, + 0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687, 0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198, + 0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927, 0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38, + 0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8, 0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7, + 0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096, 0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789, + 0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859, 0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46, + 0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9, 0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6, + 0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36, 0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829, + 0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C, 0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93, + 0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043, 0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C, + 0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3, 0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC, + 0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C, 0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033, + 0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652, 0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D, + 0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D, 0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982, + 0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D, 0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622, + 0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2, 0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED, + 0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530, 0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F, + 0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF, 0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0, + 0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F, 0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540, + 0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90, 0x9E902E7B, 0x6CFBAD78, 0x7FAB5E8C, 0x8DC0DD8F, + 0xE330A81A, 0x115B2B19, 0x020BD8ED, 0xF0605BEE, 0x24AA3F05, 0xD6C1BC06, 0xC5914FF2, 0x37FACCF1, + 0x69E9F0D5, 0x9B8273D6, 0x88D28022, 0x7AB90321, 0xAE7367CA, 0x5C18E4C9, 0x4F48173D, 0xBD23943E, + 0xF36E6F75, 0x0105EC76, 0x12551F82, 0xE03E9C81, 0x34F4F86A, 0xC69F7B69, 0xD5CF889D, 0x27A40B9E, + 0x79B737BA, 0x8BDCB4B9, 0x988C474D, 0x6AE7C44E, 0xBE2DA0A5, 0x4C4623A6, 0x5F16D052, 0xAD7D5351, +]; + +const lookupTable: Uint32Array = uint32ArrayFrom(a_lookupTable) +export { AwsCrc32c } from "./aws_crc32c"; diff --git a/bff/node_modules/@aws-crypto/crc32c/tsconfig.json b/bff/node_modules/@aws-crypto/crc32c/tsconfig.json new file mode 100644 index 0000000..2b996d0 --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32c/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build/main", + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/bff/node_modules/@aws-crypto/crc32c/tsconfig.module.json b/bff/node_modules/@aws-crypto/crc32c/tsconfig.module.json new file mode 100644 index 0000000..7d0cfdd --- /dev/null +++ b/bff/node_modules/@aws-crypto/crc32c/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/bff/node_modules/@aws-crypto/sha1-browser/CHANGELOG.md b/bff/node_modules/@aws-crypto/sha1-browser/CHANGELOG.md new file mode 100644 index 0000000..fc58d4d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/CHANGELOG.md @@ -0,0 +1,62 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +### Features + +- Use @smithy/util-utf8 ([#730](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/730)) ([00fb851](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/00fb851ca3559d5a1f370f9256814de1210826b8)), closes [#699](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/699) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +- feat!: drop support for IE 11 (#629) ([6c49fb6](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6c49fb6c1b1f18bbff02dbd77a37a21bdb40c959)), closes [#629](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/629) + +### BREAKING CHANGES + +- Remove support for IE11 + +Co-authored-by: texastony <5892063+texastony@users.noreply.github.com> + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/sha1-browser + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +- feat!: replace Hash implementations with Checksum interface (#492) ([da43dc0](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/da43dc0fdf669d9ebb5bfb1b1f7c79e46c4aaae1)), closes [#492](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/492) + +### BREAKING CHANGES + +- All classes that implemented `Hash` now implement `Checksum`. + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +### Bug Fixes + +- **#337:** update @aws-sdk/types ([#373](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/373)) ([b26a811](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/b26a811a392f5209c7ec7e57251500d4d78f97ff)), closes [#337](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/337) + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/sha1-browser + +# [1.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.1.1...v1.2.0) (2021-09-17) + +### Bug Fixes + +- Adding ie11-detection dependency to sha1-browser ([#213](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/213)) ([138750d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/138750d96385b8cc479b6f54c500ee1b5380648c)) + +### Features + +- Add SHA1 ([#208](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/208)) ([45c50ff](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/45c50ffa3acc9e3bf4039ab59a0102e4d40455ec)) diff --git a/bff/node_modules/@aws-crypto/sha1-browser/LICENSE b/bff/node_modules/@aws-crypto/sha1-browser/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-crypto/sha1-browser/README.md b/bff/node_modules/@aws-crypto/sha1-browser/README.md new file mode 100644 index 0000000..e03244f --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/README.md @@ -0,0 +1,21 @@ +# @aws-crypto/sha1-browser + +SHA1 wrapper for browsers that prefers `window.crypto.subtle`. + +SHA1 is **NOT** a cryptographically secure algorithm. +It should _only_ be used for non cryptographic functions like checksums. + +## Usage + +``` +import {Sha1} from '@aws-crypto/sha1-browser' + +const hash = new Sha1(); +hash.update('some data'); +const result = await hash.digest(); + +``` + +## Test + +`npm test` diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/LICENSE b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/README.md b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/README.md new file mode 100644 index 0000000..31853f2 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/README.md @@ -0,0 +1,10 @@ +# @smithy/is-array-buffer + +[![NPM version](https://img.shields.io/npm/v/@smithy/is-array-buffer/latest.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/is-array-buffer.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-cjs/index.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-cjs/index.js new file mode 100644 index 0000000..5d792e7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-cjs/index.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + isArrayBuffer: () => isArrayBuffer +}); +module.exports = __toCommonJS(src_exports); +var isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === "[object ArrayBuffer]", "isArrayBuffer"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + isArrayBuffer +}); + diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-es/index.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-es/index.js new file mode 100644 index 0000000..8096cca --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-es/index.js @@ -0,0 +1,2 @@ +export const isArrayBuffer = (arg) => (typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer) || + Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts new file mode 100644 index 0000000..64f452e --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ca8fd6b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/package.json b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/package.json new file mode 100644 index 0000000..ed8affc --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/is-array-buffer", + "version": "2.2.0", + "description": "Provides a function for detecting if an argument is an ArrayBuffer", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline is-array-buffer", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/is-array-buffer", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/is-array-buffer" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/LICENSE b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/README.md b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/README.md new file mode 100644 index 0000000..c896b04 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/README.md @@ -0,0 +1,10 @@ +# @smithy/util-buffer-from + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-buffer-from/latest.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-buffer-from.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-cjs/index.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-cjs/index.js new file mode 100644 index 0000000..c6738d9 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-cjs/index.js @@ -0,0 +1,47 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromArrayBuffer: () => fromArrayBuffer, + fromString: () => fromString +}); +module.exports = __toCommonJS(src_exports); +var import_is_array_buffer = require("@smithy/is-array-buffer"); +var import_buffer = require("buffer"); +var fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => { + if (!(0, import_is_array_buffer.isArrayBuffer)(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return import_buffer.Buffer.from(input, offset, length); +}, "fromArrayBuffer"); +var fromString = /* @__PURE__ */ __name((input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? import_buffer.Buffer.from(input, encoding) : import_buffer.Buffer.from(input); +}, "fromString"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromArrayBuffer, + fromString +}); + diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-es/index.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-es/index.js new file mode 100644 index 0000000..718f831 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-es/index.js @@ -0,0 +1,14 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +import { Buffer } from "buffer"; +export const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return Buffer.from(input, offset, length); +}; +export const fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? Buffer.from(input, encoding) : Buffer.from(input); +}; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts new file mode 100644 index 0000000..a523134 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..f9173f7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/package.json b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/package.json new file mode 100644 index 0000000..a12e51c --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/util-buffer-from", + "version": "2.2.0", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-buffer-from", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^14.14.31", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-buffer-from", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-buffer-from" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/LICENSE b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/README.md b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/README.md new file mode 100644 index 0000000..fc5db6d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/README.md @@ -0,0 +1,4 @@ +# @smithy/util-utf8 + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-utf8/latest.svg)](https://www.npmjs.com/package/@smithy/util-utf8) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-utf8.svg)](https://www.npmjs.com/package/@smithy/util-utf8) diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/index.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/index.js new file mode 100644 index 0000000..0b22680 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/index.js @@ -0,0 +1,65 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromUtf8: () => fromUtf8, + toUint8Array: () => toUint8Array, + toUtf8: () => toUtf8 +}); +module.exports = __toCommonJS(src_exports); + +// src/fromUtf8.ts +var import_util_buffer_from = require("@smithy/util-buffer-from"); +var fromUtf8 = /* @__PURE__ */ __name((input) => { + const buf = (0, import_util_buffer_from.fromString)(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}, "fromUtf8"); + +// src/toUint8Array.ts +var toUint8Array = /* @__PURE__ */ __name((data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}, "toUint8Array"); + +// src/toUtf8.ts + +var toUtf8 = /* @__PURE__ */ __name((input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return (0, import_util_buffer_from.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}, "toUtf8"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromUtf8, + toUint8Array, + toUtf8 +}); + diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js new file mode 100644 index 0000000..7344190 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js @@ -0,0 +1 @@ +export const fromUtf8 = (input) => new TextEncoder().encode(input); diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js new file mode 100644 index 0000000..6dc438b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js @@ -0,0 +1,5 @@ +import { fromString } from "@smithy/util-buffer-from"; +export const fromUtf8 = (input) => { + const buf = fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/index.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/index.js new file mode 100644 index 0000000..00ba465 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js new file mode 100644 index 0000000..2cd36f7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js @@ -0,0 +1,10 @@ +import { fromUtf8 } from "./fromUtf8"; +export const toUint8Array = (data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js new file mode 100644 index 0000000..c292127 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js @@ -0,0 +1,9 @@ +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return new TextDecoder("utf-8").decode(input); +}; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.js b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.js new file mode 100644 index 0000000..7be8745 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.js @@ -0,0 +1,10 @@ +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts new file mode 100644 index 0000000..dd91981 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts new file mode 100644 index 0000000..dd91981 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/index.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/index.d.ts new file mode 100644 index 0000000..00ba465 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts new file mode 100644 index 0000000..11b6342 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts new file mode 100644 index 0000000..8494acd --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts new file mode 100644 index 0000000..8494acd --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts new file mode 100644 index 0000000..39f3d6d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts new file mode 100644 index 0000000..39f3d6d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ef9761d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts new file mode 100644 index 0000000..562fe10 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts new file mode 100644 index 0000000..33511ad --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts new file mode 100644 index 0000000..33511ad --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/package.json b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/package.json new file mode 100644 index 0000000..78bfb4d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/util-utf8", + "version": "2.3.0", + "description": "A UTF-8 string <-> UInt8Array converter", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-utf8", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/fromUtf8": "./dist-es/fromUtf8.browser", + "./dist-es/toUtf8": "./dist-es/toUtf8.browser" + }, + "react-native": {}, + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-utf8", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-utf8" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha1-browser/package.json b/bff/node_modules/@aws-crypto/sha1-browser/package.json new file mode 100644 index 0000000..3517bc7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/package.json @@ -0,0 +1,35 @@ +{ + "name": "@aws-crypto/sha1-browser", + "version": "5.2.0", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/sha1-browser", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + }, + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "publishConfig": { + "access": "public" + }, + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/bff/node_modules/@aws-crypto/sha1-browser/src/constants.ts b/bff/node_modules/@aws-crypto/sha1-browser/src/constants.ts new file mode 100644 index 0000000..6b7dfcd --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/src/constants.ts @@ -0,0 +1,29 @@ +export const SHA_1_HASH: { name: "SHA-1" } = { name: "SHA-1" }; + +export const SHA_1_HMAC_ALGO: { name: "HMAC"; hash: { name: "SHA-1" } } = { + name: "HMAC", + hash: SHA_1_HASH, +}; + +export const EMPTY_DATA_SHA_1 = new Uint8Array([ + 218, + 57, + 163, + 238, + 94, + 107, + 75, + 13, + 50, + 85, + 191, + 239, + 149, + 96, + 24, + 144, + 175, + 216, + 7, + 9, +]); diff --git a/bff/node_modules/@aws-crypto/sha1-browser/src/crossPlatformSha1.ts b/bff/node_modules/@aws-crypto/sha1-browser/src/crossPlatformSha1.ts new file mode 100644 index 0000000..24ad4ee --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/src/crossPlatformSha1.ts @@ -0,0 +1,29 @@ +import { Sha1 as WebCryptoSha1 } from "./webCryptoSha1"; +import { Checksum, SourceData } from "@aws-sdk/types"; +import { supportsWebCrypto } from "@aws-crypto/supports-web-crypto"; +import { locateWindow } from "@aws-sdk/util-locate-window"; +import { convertToBuffer } from "@aws-crypto/util"; + +export class Sha1 implements Checksum { + private hash: Checksum; + + constructor(secret?: SourceData) { + if (supportsWebCrypto(locateWindow())) { + this.hash = new WebCryptoSha1(secret); + } else { + throw new Error("SHA1 not supported"); + } + } + + update(data: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void { + this.hash.update(convertToBuffer(data)); + } + + digest(): Promise { + return this.hash.digest(); + } + + reset(): void { + this.hash.reset(); + } +} diff --git a/bff/node_modules/@aws-crypto/sha1-browser/src/index.ts b/bff/node_modules/@aws-crypto/sha1-browser/src/index.ts new file mode 100644 index 0000000..1b6072d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/src/index.ts @@ -0,0 +1,2 @@ +export * from "./crossPlatformSha1"; +export { Sha1 as WebCryptoSha1 } from "./webCryptoSha1"; diff --git a/bff/node_modules/@aws-crypto/sha1-browser/src/isEmptyData.ts b/bff/node_modules/@aws-crypto/sha1-browser/src/isEmptyData.ts new file mode 100644 index 0000000..538971f --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/src/isEmptyData.ts @@ -0,0 +1,9 @@ +import { SourceData } from "@aws-sdk/types"; + +export function isEmptyData(data: SourceData): boolean { + if (typeof data === "string") { + return data.length === 0; + } + + return data.byteLength === 0; +} diff --git a/bff/node_modules/@aws-crypto/sha1-browser/src/webCryptoSha1.ts b/bff/node_modules/@aws-crypto/sha1-browser/src/webCryptoSha1.ts new file mode 100644 index 0000000..ffa020b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/src/webCryptoSha1.ts @@ -0,0 +1,79 @@ +import { Checksum, SourceData } from "@aws-sdk/types"; +import { fromUtf8 } from "@smithy/util-utf8"; +import { isEmptyData } from "./isEmptyData"; +import { EMPTY_DATA_SHA_1, SHA_1_HASH, SHA_1_HMAC_ALGO } from "./constants"; +import { locateWindow } from "@aws-sdk/util-locate-window"; + +export class Sha1 implements Checksum { + private readonly key: Promise | undefined; + private toHash: Uint8Array = new Uint8Array(0); + + constructor(secret?: SourceData) { + if (secret !== void 0) { + this.key = new Promise((resolve, reject) => { + locateWindow() + .crypto.subtle.importKey( + "raw", + convertToBuffer(secret), + SHA_1_HMAC_ALGO, + false, + ["sign"] + ) + .then(resolve, reject); + }); + this.key.catch(() => {}); + } + } + + update(data: SourceData): void { + if (isEmptyData(data)) { + return; + } + + const update = convertToBuffer(data); + const typedArray = new Uint8Array( + this.toHash.byteLength + update.byteLength + ); + typedArray.set(this.toHash, 0); + typedArray.set(update, this.toHash.byteLength); + this.toHash = typedArray; + } + + digest(): Promise { + if (this.key) { + return this.key.then((key) => + locateWindow() + .crypto.subtle.sign(SHA_1_HMAC_ALGO, key, this.toHash) + .then((data) => new Uint8Array(data)) + ); + } + + if (isEmptyData(this.toHash)) { + return Promise.resolve(EMPTY_DATA_SHA_1); + } + + return Promise.resolve() + .then(() => locateWindow().crypto.subtle.digest(SHA_1_HASH, this.toHash)) + .then((data) => Promise.resolve(new Uint8Array(data))); + } + + reset(): void { + this.toHash = new Uint8Array(0); + } +} + +function convertToBuffer(data: SourceData): Uint8Array { + if (typeof data === "string") { + return fromUtf8(data); + } + + if (ArrayBuffer.isView(data)) { + return new Uint8Array( + data.buffer, + data.byteOffset, + data.byteLength / Uint8Array.BYTES_PER_ELEMENT + ); + } + + return new Uint8Array(data); +} diff --git a/bff/node_modules/@aws-crypto/sha1-browser/tsconfig.json b/bff/node_modules/@aws-crypto/sha1-browser/tsconfig.json new file mode 100644 index 0000000..fb9aa95 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build/main", + "lib": ["dom"], + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/bff/node_modules/@aws-crypto/sha1-browser/tsconfig.module.json b/bff/node_modules/@aws-crypto/sha1-browser/tsconfig.module.json new file mode 100644 index 0000000..7d0cfdd --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha1-browser/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/bff/node_modules/@aws-crypto/sha256-browser/CHANGELOG.md b/bff/node_modules/@aws-crypto/sha256-browser/CHANGELOG.md new file mode 100644 index 0000000..e6036f8 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/CHANGELOG.md @@ -0,0 +1,118 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +### Features + +- Use @smithy/util-utf8 ([#730](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/730)) ([00fb851](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/00fb851ca3559d5a1f370f9256814de1210826b8)), closes [#699](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/699) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +- feat!: drop support for IE 11 (#629) ([6c49fb6](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6c49fb6c1b1f18bbff02dbd77a37a21bdb40c959)), closes [#629](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/629) + +### BREAKING CHANGES + +- Remove support for IE11 + +Co-authored-by: texastony <5892063+texastony@users.noreply.github.com> + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +### Bug Fixes + +- **docs:** sha256 packages, clarify hmac support ([#455](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/455)) ([1be5043](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/1be5043325991f3f5ccb52a8dd928f004b4d442e)) + +- feat!: replace Hash implementations with Checksum interface (#492) ([da43dc0](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/da43dc0fdf669d9ebb5bfb1b1f7c79e46c4aaae1)), closes [#492](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/492) + +### BREAKING CHANGES + +- All classes that implemented `Hash` now implement `Checksum`. + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +### Bug Fixes + +- **#337:** update @aws-sdk/types ([#373](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/373)) ([b26a811](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/b26a811a392f5209c7ec7e57251500d4d78f97ff)), closes [#337](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/337) + +## [2.0.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.0...v2.0.1) (2021-12-09) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +## [1.2.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.1...v1.2.2) (2021-10-12) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +## [1.2.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.0...v1.2.1) (2021-09-17) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [1.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.1.1...v1.2.0) (2021-09-17) + +### Features + +- add @aws-crypto/util ([8f489cb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/8f489cbe4c0e134f826bac66f1bf5172597048b9)) + +## [1.1.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@1.1.0...@aws-crypto/sha256-browser@1.1.1) (2021-07-13) + +### Bug Fixes + +- **sha256-browser:** throw errors not string ([#194](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/194)) ([7fa7ac4](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/7fa7ac445ef7a04dfb1ff479e7114aba045b2b2c)) + +# [1.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@1.0.0...@aws-crypto/sha256-browser@1.1.0) (2021-01-13) + +### Bug Fixes + +- remove package lock ([6002a5a](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6002a5ab9218dc8798c19dc205d3eebd3bec5b43)) +- **aws-crypto:** export explicit dependencies on [@aws-types](https://github.com/aws-types) ([6a1873a](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6a1873a4dcc2aaa4a1338595703cfa7099f17b8c)) +- **deps-dev:** move @aws-sdk/types to devDependencies ([#188](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/188)) ([08efdf4](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/08efdf46dcc612d88c441e29945d787f253ee77d)) + +# [1.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@1.0.0-alpha.0...@aws-crypto/sha256-browser@1.0.0) (2020-10-22) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [1.0.0-alpha.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@0.1.0-preview.4...@aws-crypto/sha256-browser@1.0.0-alpha.0) (2020-02-07) + +**Note:** Version bump only for package @aws-crypto/sha256-browser + +# [0.1.0-preview.4](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@0.1.0-preview.2...@aws-crypto/sha256-browser@0.1.0-preview.4) (2020-01-16) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- es2015.iterable required ([#10](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/10)) ([6e08d83](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6e08d83c33667ad8cbeeaaa7cedf1bbe05f79ed8)) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.3](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-browser@0.1.0-preview.2...@aws-crypto/sha256-browser@0.1.0-preview.3) (2019-11-15) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- es2015.iterable required ([#10](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/10)) ([6e08d83](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6e08d83c33667ad8cbeeaaa7cedf1bbe05f79ed8)) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.2](https://github.com/aws/aws-javascript-crypto-helpers/compare/@aws-crypto/sha256-browser@0.1.0-preview.1...@aws-crypto/sha256-browser@0.1.0-preview.2) (2019-10-30) + +### Bug Fixes + +- remove /src/ from .npmignore (for sourcemaps) ([#5](https://github.com/aws/aws-javascript-crypto-helpers/issues/5)) ([ec52056](https://github.com/aws/aws-javascript-crypto-helpers/commit/ec52056)) diff --git a/bff/node_modules/@aws-crypto/sha256-browser/LICENSE b/bff/node_modules/@aws-crypto/sha256-browser/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-crypto/sha256-browser/README.md b/bff/node_modules/@aws-crypto/sha256-browser/README.md new file mode 100644 index 0000000..75bf105 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/README.md @@ -0,0 +1,31 @@ +# @aws-crypto/sha256-browser + +SHA256 wrapper for browsers that prefers `window.crypto.subtle` but will +fall back to a pure JS implementation in @aws-crypto/sha256-js +to provide a consistent interface for SHA256. + +## Usage + +- To hash "some data" +``` +import {Sha256} from '@aws-crypto/sha256-browser' + +const hash = new Sha256(); +hash.update('some data'); +const result = await hash.digest(); + +``` + +- To hmac "some data" with "a key" +``` +import {Sha256} from '@aws-crypto/sha256-browser' + +const hash = new Sha256('a key'); +hash.update('some data'); +const result = await hash.digest(); + +``` + +## Test + +`npm test` diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/LICENSE b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/README.md b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/README.md new file mode 100644 index 0000000..31853f2 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/README.md @@ -0,0 +1,10 @@ +# @smithy/is-array-buffer + +[![NPM version](https://img.shields.io/npm/v/@smithy/is-array-buffer/latest.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/is-array-buffer.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-cjs/index.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-cjs/index.js new file mode 100644 index 0000000..5d792e7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-cjs/index.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + isArrayBuffer: () => isArrayBuffer +}); +module.exports = __toCommonJS(src_exports); +var isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === "[object ArrayBuffer]", "isArrayBuffer"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + isArrayBuffer +}); + diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-es/index.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-es/index.js new file mode 100644 index 0000000..8096cca --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-es/index.js @@ -0,0 +1,2 @@ +export const isArrayBuffer = (arg) => (typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer) || + Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts new file mode 100644 index 0000000..64f452e --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ca8fd6b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/package.json b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/package.json new file mode 100644 index 0000000..ed8affc --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/is-array-buffer", + "version": "2.2.0", + "description": "Provides a function for detecting if an argument is an ArrayBuffer", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline is-array-buffer", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/is-array-buffer", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/is-array-buffer" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/LICENSE b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/README.md b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/README.md new file mode 100644 index 0000000..c896b04 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/README.md @@ -0,0 +1,10 @@ +# @smithy/util-buffer-from + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-buffer-from/latest.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-buffer-from.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-cjs/index.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-cjs/index.js new file mode 100644 index 0000000..c6738d9 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-cjs/index.js @@ -0,0 +1,47 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromArrayBuffer: () => fromArrayBuffer, + fromString: () => fromString +}); +module.exports = __toCommonJS(src_exports); +var import_is_array_buffer = require("@smithy/is-array-buffer"); +var import_buffer = require("buffer"); +var fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => { + if (!(0, import_is_array_buffer.isArrayBuffer)(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return import_buffer.Buffer.from(input, offset, length); +}, "fromArrayBuffer"); +var fromString = /* @__PURE__ */ __name((input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? import_buffer.Buffer.from(input, encoding) : import_buffer.Buffer.from(input); +}, "fromString"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromArrayBuffer, + fromString +}); + diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-es/index.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-es/index.js new file mode 100644 index 0000000..718f831 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-es/index.js @@ -0,0 +1,14 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +import { Buffer } from "buffer"; +export const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return Buffer.from(input, offset, length); +}; +export const fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? Buffer.from(input, encoding) : Buffer.from(input); +}; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts new file mode 100644 index 0000000..a523134 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..f9173f7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/package.json b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/package.json new file mode 100644 index 0000000..a12e51c --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/util-buffer-from", + "version": "2.2.0", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-buffer-from", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^14.14.31", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-buffer-from", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-buffer-from" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/LICENSE b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/README.md b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/README.md new file mode 100644 index 0000000..fc5db6d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/README.md @@ -0,0 +1,4 @@ +# @smithy/util-utf8 + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-utf8/latest.svg)](https://www.npmjs.com/package/@smithy/util-utf8) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-utf8.svg)](https://www.npmjs.com/package/@smithy/util-utf8) diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/index.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/index.js new file mode 100644 index 0000000..0b22680 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/index.js @@ -0,0 +1,65 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromUtf8: () => fromUtf8, + toUint8Array: () => toUint8Array, + toUtf8: () => toUtf8 +}); +module.exports = __toCommonJS(src_exports); + +// src/fromUtf8.ts +var import_util_buffer_from = require("@smithy/util-buffer-from"); +var fromUtf8 = /* @__PURE__ */ __name((input) => { + const buf = (0, import_util_buffer_from.fromString)(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}, "fromUtf8"); + +// src/toUint8Array.ts +var toUint8Array = /* @__PURE__ */ __name((data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}, "toUint8Array"); + +// src/toUtf8.ts + +var toUtf8 = /* @__PURE__ */ __name((input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return (0, import_util_buffer_from.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}, "toUtf8"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromUtf8, + toUint8Array, + toUtf8 +}); + diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js new file mode 100644 index 0000000..7344190 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js @@ -0,0 +1 @@ +export const fromUtf8 = (input) => new TextEncoder().encode(input); diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js new file mode 100644 index 0000000..6dc438b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js @@ -0,0 +1,5 @@ +import { fromString } from "@smithy/util-buffer-from"; +export const fromUtf8 = (input) => { + const buf = fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/index.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/index.js new file mode 100644 index 0000000..00ba465 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js new file mode 100644 index 0000000..2cd36f7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js @@ -0,0 +1,10 @@ +import { fromUtf8 } from "./fromUtf8"; +export const toUint8Array = (data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js new file mode 100644 index 0000000..c292127 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js @@ -0,0 +1,9 @@ +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return new TextDecoder("utf-8").decode(input); +}; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.js b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.js new file mode 100644 index 0000000..7be8745 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/toUtf8.js @@ -0,0 +1,10 @@ +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts new file mode 100644 index 0000000..dd91981 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts new file mode 100644 index 0000000..dd91981 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/index.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/index.d.ts new file mode 100644 index 0000000..00ba465 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts new file mode 100644 index 0000000..11b6342 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts new file mode 100644 index 0000000..8494acd --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts new file mode 100644 index 0000000..8494acd --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts new file mode 100644 index 0000000..39f3d6d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts new file mode 100644 index 0000000..39f3d6d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ef9761d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts new file mode 100644 index 0000000..562fe10 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts new file mode 100644 index 0000000..33511ad --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts new file mode 100644 index 0000000..33511ad --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/package.json b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/package.json new file mode 100644 index 0000000..78bfb4d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/util-utf8", + "version": "2.3.0", + "description": "A UTF-8 string <-> UInt8Array converter", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-utf8", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/fromUtf8": "./dist-es/fromUtf8.browser", + "./dist-es/toUtf8": "./dist-es/toUtf8.browser" + }, + "react-native": {}, + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-utf8", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-utf8" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-browser/package.json b/bff/node_modules/@aws-crypto/sha256-browser/package.json new file mode 100644 index 0000000..2688ecf --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/package.json @@ -0,0 +1,33 @@ +{ + "name": "@aws-crypto/sha256-browser", + "version": "5.2.0", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/sha256-browser", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + }, + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/bff/node_modules/@aws-crypto/sha256-browser/src/constants.ts b/bff/node_modules/@aws-crypto/sha256-browser/src/constants.ts new file mode 100644 index 0000000..7f68e2a --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/src/constants.ts @@ -0,0 +1,41 @@ +export const SHA_256_HASH: { name: "SHA-256" } = { name: "SHA-256" }; + +export const SHA_256_HMAC_ALGO: { name: "HMAC"; hash: { name: "SHA-256" } } = { + name: "HMAC", + hash: SHA_256_HASH +}; + +export const EMPTY_DATA_SHA_256 = new Uint8Array([ + 227, + 176, + 196, + 66, + 152, + 252, + 28, + 20, + 154, + 251, + 244, + 200, + 153, + 111, + 185, + 36, + 39, + 174, + 65, + 228, + 100, + 155, + 147, + 76, + 164, + 149, + 153, + 27, + 120, + 82, + 184, + 85 +]); diff --git a/bff/node_modules/@aws-crypto/sha256-browser/src/crossPlatformSha256.ts b/bff/node_modules/@aws-crypto/sha256-browser/src/crossPlatformSha256.ts new file mode 100644 index 0000000..8cb9ff0 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/src/crossPlatformSha256.ts @@ -0,0 +1,30 @@ +import { Sha256 as WebCryptoSha256 } from "./webCryptoSha256"; +import { Sha256 as JsSha256 } from "@aws-crypto/sha256-js"; +import { Checksum, SourceData } from "@aws-sdk/types"; +import { supportsWebCrypto } from "@aws-crypto/supports-web-crypto"; +import { locateWindow } from "@aws-sdk/util-locate-window"; +import { convertToBuffer } from "@aws-crypto/util"; + +export class Sha256 implements Checksum { + private hash: Checksum; + + constructor(secret?: SourceData) { + if (supportsWebCrypto(locateWindow())) { + this.hash = new WebCryptoSha256(secret); + } else { + this.hash = new JsSha256(secret); + } + } + + update(data: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void { + this.hash.update(convertToBuffer(data)); + } + + digest(): Promise { + return this.hash.digest(); + } + + reset(): void { + this.hash.reset(); + } +} diff --git a/bff/node_modules/@aws-crypto/sha256-browser/src/index.ts b/bff/node_modules/@aws-crypto/sha256-browser/src/index.ts new file mode 100644 index 0000000..60ab397 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/src/index.ts @@ -0,0 +1,2 @@ +export * from "./crossPlatformSha256"; +export { Sha256 as WebCryptoSha256 } from "./webCryptoSha256"; diff --git a/bff/node_modules/@aws-crypto/sha256-browser/src/isEmptyData.ts b/bff/node_modules/@aws-crypto/sha256-browser/src/isEmptyData.ts new file mode 100644 index 0000000..538971f --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/src/isEmptyData.ts @@ -0,0 +1,9 @@ +import { SourceData } from "@aws-sdk/types"; + +export function isEmptyData(data: SourceData): boolean { + if (typeof data === "string") { + return data.length === 0; + } + + return data.byteLength === 0; +} diff --git a/bff/node_modules/@aws-crypto/sha256-browser/src/webCryptoSha256.ts b/bff/node_modules/@aws-crypto/sha256-browser/src/webCryptoSha256.ts new file mode 100644 index 0000000..fe4db57 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/src/webCryptoSha256.ts @@ -0,0 +1,71 @@ +import { Checksum, SourceData } from "@aws-sdk/types"; +import { isEmptyData, convertToBuffer } from "@aws-crypto/util"; +import { + EMPTY_DATA_SHA_256, + SHA_256_HASH, + SHA_256_HMAC_ALGO, +} from "./constants"; +import { locateWindow } from "@aws-sdk/util-locate-window"; + +export class Sha256 implements Checksum { + private readonly secret?: SourceData; + private key: Promise | undefined; + private toHash: Uint8Array = new Uint8Array(0); + + constructor(secret?: SourceData) { + this.secret = secret; + this.reset(); + } + + update(data: SourceData): void { + if (isEmptyData(data)) { + return; + } + + const update = convertToBuffer(data); + const typedArray = new Uint8Array( + this.toHash.byteLength + update.byteLength + ); + typedArray.set(this.toHash, 0); + typedArray.set(update, this.toHash.byteLength); + this.toHash = typedArray; + } + + digest(): Promise { + if (this.key) { + return this.key.then((key) => + locateWindow() + .crypto.subtle.sign(SHA_256_HMAC_ALGO, key, this.toHash) + .then((data) => new Uint8Array(data)) + ); + } + + if (isEmptyData(this.toHash)) { + return Promise.resolve(EMPTY_DATA_SHA_256); + } + + return Promise.resolve() + .then(() => + locateWindow().crypto.subtle.digest(SHA_256_HASH, this.toHash) + ) + .then((data) => Promise.resolve(new Uint8Array(data))); + } + + reset(): void { + this.toHash = new Uint8Array(0); + if (this.secret && this.secret !== void 0) { + this.key = new Promise((resolve, reject) => { + locateWindow() + .crypto.subtle.importKey( + "raw", + convertToBuffer(this.secret as SourceData), + SHA_256_HMAC_ALGO, + false, + ["sign"] + ) + .then(resolve, reject); + }); + this.key.catch(() => {}); + } + } +} diff --git a/bff/node_modules/@aws-crypto/sha256-browser/tsconfig.json b/bff/node_modules/@aws-crypto/sha256-browser/tsconfig.json new file mode 100644 index 0000000..fb9aa95 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build/main", + "lib": ["dom"], + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/bff/node_modules/@aws-crypto/sha256-browser/tsconfig.module.json b/bff/node_modules/@aws-crypto/sha256-browser/tsconfig.module.json new file mode 100644 index 0000000..7d0cfdd --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-browser/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/bff/node_modules/@aws-crypto/sha256-js/CHANGELOG.md b/bff/node_modules/@aws-crypto/sha256-js/CHANGELOG.md new file mode 100644 index 0000000..97c1f60 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/CHANGELOG.md @@ -0,0 +1,106 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +### Bug Fixes + +- **docs:** sha256 packages, clarify hmac support ([#455](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/455)) ([1be5043](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/1be5043325991f3f5ccb52a8dd928f004b4d442e)) + +- feat!: replace Hash implementations with Checksum interface (#492) ([da43dc0](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/da43dc0fdf669d9ebb5bfb1b1f7c79e46c4aaae1)), closes [#492](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/492) + +### BREAKING CHANGES + +- All classes that implemented `Hash` now implement `Checksum`. + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +### Bug Fixes + +- **#337:** update @aws-sdk/types ([#373](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/373)) ([b26a811](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/b26a811a392f5209c7ec7e57251500d4d78f97ff)), closes [#337](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/337) + +## [2.0.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.0...v2.0.1) (2021-12-09) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +## [1.2.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.1...v1.2.2) (2021-10-12) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +## [1.2.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.0...v1.2.1) (2021-09-17) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [1.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.1.1...v1.2.0) (2021-09-17) + +### Features + +- add @aws-crypto/util ([8f489cb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/8f489cbe4c0e134f826bac66f1bf5172597048b9)) + +# [1.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@1.0.0...@aws-crypto/sha256-js@1.1.0) (2021-01-13) + +### Bug Fixes + +- remove package lock ([6002a5a](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6002a5ab9218dc8798c19dc205d3eebd3bec5b43)) +- **aws-crypto:** export explicit dependencies on [@aws-types](https://github.com/aws-types) ([6a1873a](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6a1873a4dcc2aaa4a1338595703cfa7099f17b8c)) +- **deps-dev:** move @aws-sdk/types to devDependencies ([#188](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/188)) ([08efdf4](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/08efdf46dcc612d88c441e29945d787f253ee77d)) + +# [1.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@1.0.0-alpha.0...@aws-crypto/sha256-js@1.0.0) (2020-10-22) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [1.0.0-alpha.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@0.1.0-preview.4...@aws-crypto/sha256-js@1.0.0-alpha.0) (2020-02-07) + +**Note:** Version bump only for package @aws-crypto/sha256-js + +# [0.1.0-preview.4](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@0.1.0-preview.2...@aws-crypto/sha256-js@0.1.0-preview.4) (2020-01-16) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- es2015.iterable required ([#10](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/10)) ([6e08d83](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6e08d83c33667ad8cbeeaaa7cedf1bbe05f79ed8)) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.3](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/sha256-js@0.1.0-preview.2...@aws-crypto/sha256-js@0.1.0-preview.3) (2019-11-15) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- es2015.iterable required ([#10](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/10)) ([6e08d83](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/6e08d83c33667ad8cbeeaaa7cedf1bbe05f79ed8)) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.2](https://github.com/aws/aws-javascript-crypto-helpers/compare/@aws-crypto/sha256-js@0.1.0-preview.1...@aws-crypto/sha256-js@0.1.0-preview.2) (2019-10-30) + +### Bug Fixes + +- remove /src/ from .npmignore (for sourcemaps) ([#5](https://github.com/aws/aws-javascript-crypto-helpers/issues/5)) ([ec52056](https://github.com/aws/aws-javascript-crypto-helpers/commit/ec52056)) + +### Features + +- **sha256-js:** expose synchronous digest ([#7](https://github.com/aws/aws-javascript-crypto-helpers/issues/7)) ([9edaef7](https://github.com/aws/aws-javascript-crypto-helpers/commit/9edaef7)), closes [#6](https://github.com/aws/aws-javascript-crypto-helpers/issues/6) diff --git a/bff/node_modules/@aws-crypto/sha256-js/LICENSE b/bff/node_modules/@aws-crypto/sha256-js/LICENSE new file mode 100644 index 0000000..ad410e1 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/sha256-js/README.md b/bff/node_modules/@aws-crypto/sha256-js/README.md new file mode 100644 index 0000000..f769f5b --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/README.md @@ -0,0 +1,29 @@ +# crypto-sha256-js + +A pure JS implementation SHA256. + +## Usage + +- To hash "some data" +``` +import {Sha256} from '@aws-crypto/sha256-js'; + +const hash = new Sha256(); +hash.update('some data'); +const result = await hash.digest(); + +``` + +- To hmac "some data" with "a key" +``` +import {Sha256} from '@aws-crypto/sha256-js'; + +const hash = new Sha256('a key'); +hash.update('some data'); +const result = await hash.digest(); + +``` + +## Test + +`npm test` diff --git a/bff/node_modules/@aws-crypto/sha256-js/package.json b/bff/node_modules/@aws-crypto/sha256-js/package.json new file mode 100644 index 0000000..e8ef52d --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/package.json @@ -0,0 +1,32 @@ +{ + "name": "@aws-crypto/sha256-js", + "version": "5.2.0", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/sha256-js", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/bff/node_modules/@aws-crypto/sha256-js/src/RawSha256.ts b/bff/node_modules/@aws-crypto/sha256-js/src/RawSha256.ts new file mode 100644 index 0000000..f4a385c --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/src/RawSha256.ts @@ -0,0 +1,164 @@ +import { + BLOCK_SIZE, + DIGEST_LENGTH, + INIT, + KEY, + MAX_HASHABLE_LENGTH +} from "./constants"; + +/** + * @internal + */ +export class RawSha256 { + private state: Int32Array = Int32Array.from(INIT); + private temp: Int32Array = new Int32Array(64); + private buffer: Uint8Array = new Uint8Array(64); + private bufferLength: number = 0; + private bytesHashed: number = 0; + + /** + * @internal + */ + finished: boolean = false; + + update(data: Uint8Array): void { + if (this.finished) { + throw new Error("Attempted to update an already finished hash."); + } + + let position = 0; + let { byteLength } = data; + this.bytesHashed += byteLength; + + if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) { + throw new Error("Cannot hash more than 2^53 - 1 bits"); + } + + while (byteLength > 0) { + this.buffer[this.bufferLength++] = data[position++]; + byteLength--; + + if (this.bufferLength === BLOCK_SIZE) { + this.hashBuffer(); + this.bufferLength = 0; + } + } + } + + digest(): Uint8Array { + if (!this.finished) { + const bitsHashed = this.bytesHashed * 8; + const bufferView = new DataView( + this.buffer.buffer, + this.buffer.byteOffset, + this.buffer.byteLength + ); + + const undecoratedLength = this.bufferLength; + bufferView.setUint8(this.bufferLength++, 0x80); + + // Ensure the final block has enough room for the hashed length + if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) { + for (let i = this.bufferLength; i < BLOCK_SIZE; i++) { + bufferView.setUint8(i, 0); + } + this.hashBuffer(); + this.bufferLength = 0; + } + + for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) { + bufferView.setUint8(i, 0); + } + bufferView.setUint32( + BLOCK_SIZE - 8, + Math.floor(bitsHashed / 0x100000000), + true + ); + bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed); + + this.hashBuffer(); + + this.finished = true; + } + + // The value in state is little-endian rather than big-endian, so flip + // each word into a new Uint8Array + const out = new Uint8Array(DIGEST_LENGTH); + for (let i = 0; i < 8; i++) { + out[i * 4] = (this.state[i] >>> 24) & 0xff; + out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff; + out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff; + out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff; + } + + return out; + } + + private hashBuffer(): void { + const { buffer, state } = this; + + let state0 = state[0], + state1 = state[1], + state2 = state[2], + state3 = state[3], + state4 = state[4], + state5 = state[5], + state6 = state[6], + state7 = state[7]; + + for (let i = 0; i < BLOCK_SIZE; i++) { + if (i < 16) { + this.temp[i] = + ((buffer[i * 4] & 0xff) << 24) | + ((buffer[i * 4 + 1] & 0xff) << 16) | + ((buffer[i * 4 + 2] & 0xff) << 8) | + (buffer[i * 4 + 3] & 0xff); + } else { + let u = this.temp[i - 2]; + const t1 = + ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10); + + u = this.temp[i - 15]; + const t2 = + ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3); + + this.temp[i] = + ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0); + } + + const t1 = + ((((((state4 >>> 6) | (state4 << 26)) ^ + ((state4 >>> 11) | (state4 << 21)) ^ + ((state4 >>> 25) | (state4 << 7))) + + ((state4 & state5) ^ (~state4 & state6))) | + 0) + + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | + 0; + + const t2 = + ((((state0 >>> 2) | (state0 << 30)) ^ + ((state0 >>> 13) | (state0 << 19)) ^ + ((state0 >>> 22) | (state0 << 10))) + + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | + 0; + + state7 = state6; + state6 = state5; + state5 = state4; + state4 = (state3 + t1) | 0; + state3 = state2; + state2 = state1; + state1 = state0; + state0 = (t1 + t2) | 0; + } + + state[0] += state0; + state[1] += state1; + state[2] += state2; + state[3] += state3; + state[4] += state4; + state[5] += state5; + state[6] += state6; + state[7] += state7; + } +} diff --git a/bff/node_modules/@aws-crypto/sha256-js/src/constants.ts b/bff/node_modules/@aws-crypto/sha256-js/src/constants.ts new file mode 100644 index 0000000..8cede57 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/src/constants.ts @@ -0,0 +1,98 @@ +/** + * @internal + */ +export const BLOCK_SIZE: number = 64; + +/** + * @internal + */ +export const DIGEST_LENGTH: number = 32; + +/** + * @internal + */ +export const KEY = new Uint32Array([ + 0x428a2f98, + 0x71374491, + 0xb5c0fbcf, + 0xe9b5dba5, + 0x3956c25b, + 0x59f111f1, + 0x923f82a4, + 0xab1c5ed5, + 0xd807aa98, + 0x12835b01, + 0x243185be, + 0x550c7dc3, + 0x72be5d74, + 0x80deb1fe, + 0x9bdc06a7, + 0xc19bf174, + 0xe49b69c1, + 0xefbe4786, + 0x0fc19dc6, + 0x240ca1cc, + 0x2de92c6f, + 0x4a7484aa, + 0x5cb0a9dc, + 0x76f988da, + 0x983e5152, + 0xa831c66d, + 0xb00327c8, + 0xbf597fc7, + 0xc6e00bf3, + 0xd5a79147, + 0x06ca6351, + 0x14292967, + 0x27b70a85, + 0x2e1b2138, + 0x4d2c6dfc, + 0x53380d13, + 0x650a7354, + 0x766a0abb, + 0x81c2c92e, + 0x92722c85, + 0xa2bfe8a1, + 0xa81a664b, + 0xc24b8b70, + 0xc76c51a3, + 0xd192e819, + 0xd6990624, + 0xf40e3585, + 0x106aa070, + 0x19a4c116, + 0x1e376c08, + 0x2748774c, + 0x34b0bcb5, + 0x391c0cb3, + 0x4ed8aa4a, + 0x5b9cca4f, + 0x682e6ff3, + 0x748f82ee, + 0x78a5636f, + 0x84c87814, + 0x8cc70208, + 0x90befffa, + 0xa4506ceb, + 0xbef9a3f7, + 0xc67178f2 +]); + +/** + * @internal + */ +export const INIT = [ + 0x6a09e667, + 0xbb67ae85, + 0x3c6ef372, + 0xa54ff53a, + 0x510e527f, + 0x9b05688c, + 0x1f83d9ab, + 0x5be0cd19 +]; + +/** + * @internal + */ +export const MAX_HASHABLE_LENGTH = 2 ** 53 - 1; diff --git a/bff/node_modules/@aws-crypto/sha256-js/src/index.ts b/bff/node_modules/@aws-crypto/sha256-js/src/index.ts new file mode 100644 index 0000000..4554d8a --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/src/index.ts @@ -0,0 +1 @@ +export * from "./jsSha256"; diff --git a/bff/node_modules/@aws-crypto/sha256-js/src/jsSha256.ts b/bff/node_modules/@aws-crypto/sha256-js/src/jsSha256.ts new file mode 100644 index 0000000..f7bd993 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/src/jsSha256.ts @@ -0,0 +1,94 @@ +import { BLOCK_SIZE } from "./constants"; +import { RawSha256 } from "./RawSha256"; +import { Checksum, SourceData } from "@aws-sdk/types"; +import { isEmptyData, convertToBuffer } from "@aws-crypto/util"; + +export class Sha256 implements Checksum { + private readonly secret?: SourceData; + private hash: RawSha256; + private outer?: RawSha256; + private error: any; + + constructor(secret?: SourceData) { + this.secret = secret; + this.hash = new RawSha256(); + this.reset(); + } + + update(toHash: SourceData): void { + if (isEmptyData(toHash) || this.error) { + return; + } + + try { + this.hash.update(convertToBuffer(toHash)); + } catch (e) { + this.error = e; + } + } + + /* This synchronous method keeps compatibility + * with the v2 aws-sdk. + */ + digestSync(): Uint8Array { + if (this.error) { + throw this.error; + } + + if (this.outer) { + if (!this.outer.finished) { + this.outer.update(this.hash.digest()); + } + + return this.outer.digest(); + } + + return this.hash.digest(); + } + + /* The underlying digest method here is synchronous. + * To keep the same interface with the other hash functions + * the default is to expose this as an async method. + * However, it can sometimes be useful to have a sync method. + */ + async digest(): Promise { + return this.digestSync(); + } + + reset(): void { + this.hash = new RawSha256(); + if (this.secret) { + this.outer = new RawSha256(); + const inner = bufferFromSecret(this.secret); + const outer = new Uint8Array(BLOCK_SIZE); + outer.set(inner); + + for (let i = 0; i < BLOCK_SIZE; i++) { + inner[i] ^= 0x36; + outer[i] ^= 0x5c; + } + + this.hash.update(inner); + this.outer.update(outer); + + // overwrite the copied key in memory + for (let i = 0; i < inner.byteLength; i++) { + inner[i] = 0; + } + } + } +} + +function bufferFromSecret(secret: SourceData): Uint8Array { + let input = convertToBuffer(secret); + + if (input.byteLength > BLOCK_SIZE) { + const bufferHash = new RawSha256(); + bufferHash.update(input); + input = bufferHash.digest(); + } + + const buffer = new Uint8Array(BLOCK_SIZE); + buffer.set(input); + return buffer; +} diff --git a/bff/node_modules/@aws-crypto/sha256-js/src/knownHashes.fixture.ts b/bff/node_modules/@aws-crypto/sha256-js/src/knownHashes.fixture.ts new file mode 100644 index 0000000..c83dae2 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/src/knownHashes.fixture.ts @@ -0,0 +1,401 @@ +import { fromHex } from "@aws-sdk/util-hex-encoding"; + +const millionChars = new Uint8Array(1000000); +for (let i = 0; i < 1000000; i++) { + millionChars[i] = 97; +} + +export const hashTestVectors: Array<[Uint8Array, Uint8Array]> = [ + [ + Uint8Array.from([97, 98, 99]), + fromHex("ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") + ], + [ + new Uint8Array(0), + fromHex("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") + ], + [ + fromHex("61"), + fromHex("ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb") + ], + [ + fromHex("6161"), + fromHex("961b6dd3ede3cb8ecbaacbd68de040cd78eb2ed5889130cceb4c49268ea4d506") + ], + [ + fromHex("616161"), + fromHex("9834876dcfb05cb167a5c24953eba58c4ac89b1adf57f28f2f9d09af107ee8f0") + ], + [ + fromHex("61616161"), + fromHex("61be55a8e2f6b4e172338bddf184d6dbee29c98853e0a0485ecee7f27b9af0b4") + ], + [ + fromHex("6161616161"), + fromHex("ed968e840d10d2d313a870bc131a4e2c311d7ad09bdf32b3418147221f51a6e2") + ], + [ + fromHex("616161616161"), + fromHex("ed02457b5c41d964dbd2f2a609d63fe1bb7528dbe55e1abf5b52c249cd735797") + ], + [ + fromHex("61616161616161"), + fromHex("e46240714b5db3a23eee60479a623efba4d633d27fe4f03c904b9e219a7fbe60") + ], + [ + fromHex("6161616161616161"), + fromHex("1f3ce40415a2081fa3eee75fc39fff8e56c22270d1a978a7249b592dcebd20b4") + ], + [ + fromHex("616161616161616161"), + fromHex("f2aca93b80cae681221f0445fa4e2cae8a1f9f8fa1e1741d9639caad222f537d") + ], + [ + fromHex("61616161616161616161"), + fromHex("bf2cb58a68f684d95a3b78ef8f661c9a4e5b09e82cc8f9cc88cce90528caeb27") + ], + [ + fromHex("6161616161616161616161"), + fromHex("28cb017dfc99073aa1b47c1b30f413e3ce774c4991eb4158de50f9dbb36d8043") + ], + [ + fromHex("616161616161616161616161"), + fromHex("f24abc34b13fade76e805799f71187da6cd90b9cac373ae65ed57f143bd664e5") + ], + [ + fromHex("61616161616161616161616161"), + fromHex("a689d786e81340e45511dec6c7ab2d978434e5db123362450fe10cfac70d19d0") + ], + [ + fromHex("6161616161616161616161616161"), + fromHex("82cab7df0abfb9d95dca4e5937ce2968c798c726fea48c016bf9763221efda13") + ], + [ + fromHex("616161616161616161616161616161"), + fromHex("ef2df0b539c6c23de0f4cbe42648c301ae0e22e887340a4599fb4ef4e2678e48") + ], + [ + fromHex("61616161616161616161616161616161"), + fromHex("0c0beacef8877bbf2416eb00f2b5dc96354e26dd1df5517320459b1236860f8c") + ], + [ + fromHex("6161616161616161616161616161616161"), + fromHex("b860666ee2966dd8f903be44ee605c6e1366f926d9f17a8f49937d11624eb99d") + ], + [ + fromHex("616161616161616161616161616161616161"), + fromHex("c926defaaa3d13eda2fc63a553bb7fb7326bece6e7cb67ca5296e4727d89bab4") + ], + [ + fromHex("61616161616161616161616161616161616161"), + fromHex("a0b4aaab8a966e2193ba172d68162c4656860197f256b5f45f0203397ff3f99c") + ], + [ + fromHex("6161616161616161616161616161616161616161"), + fromHex("42492da06234ad0ac76f5d5debdb6d1ae027cffbe746a1c13b89bb8bc0139137") + ], + [ + fromHex("616161616161616161616161616161616161616161"), + fromHex("7df8e299c834de198e264c3e374bc58ecd9382252a705c183beb02f275571e3b") + ], + [ + fromHex("61616161616161616161616161616161616161616161"), + fromHex("ec7c494df6d2a7ea36668d656e6b8979e33641bfea378c15038af3964db057a3") + ], + [ + fromHex("6161616161616161616161616161616161616161616161"), + fromHex("897d3e95b65f26676081f8b9f3a98b6ee4424566303e8d4e7c7522ebae219eab") + ], + [ + fromHex("616161616161616161616161616161616161616161616161"), + fromHex("09f61f8d9cd65e6a0c258087c485b6293541364e42bd97b2d7936580c8aa3c54") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161"), + fromHex("2f521e2a7d0bd812cbc035f4ed6806eb8d851793b04ba147e8f66b72f5d1f20f") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161"), + fromHex("9976d549a25115dab4e36d0c1fb8f31cb07da87dd83275977360eb7dc09e88de") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161"), + fromHex("cc0616e61cbd6e8e5e34e9fb2d320f37de915820206f5696c31f1fbd24aa16de") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161"), + fromHex("9c547cb8115a44883b9f70ba68f75117cd55359c92611875e386f8af98c172ab") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161"), + fromHex("6913c9c7fd42fe23df8b6bcd4dbaf1c17748948d97f2980b432319c39eddcf6c") + ], + [ + fromHex("616161616161616161616161616161616161616161616161616161616161"), + fromHex("3a54fc0cbc0b0ef48b6507b7788096235d10292dd3ae24e22f5aa062d4f9864a") + ], + [ + fromHex("61616161616161616161616161616161616161616161616161616161616161"), + fromHex("61c60b487d1a921e0bcc9bf853dda0fb159b30bf57b2e2d2c753b00be15b5a09") + ], + [ + fromHex("6161616161616161616161616161616161616161616161616161616161616161"), + fromHex("3ba3f5f43b92602683c19aee62a20342b084dd5971ddd33808d81a328879a547") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("852785c805c77e71a22340a54e9d95933ed49121e7d2bf3c2d358854bc1359ea") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("a27c896c4859204843166af66f0e902b9c3b3ed6d2fd13d435abc020065c526f") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("629362afc62c74497caed2272e30f8125ecd0965f8d8d7cfc4e260f7f8dd319d") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("22c1d24bcd03e9aee9832efccd6da613fc702793178e5f12c945c7b67ddda933") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("21ec055b38ce759cd4d0f477e9bdec2c5b8199945db4439bae334a964df6246c") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("365a9c3e2c2af0a56e47a9dac51c2c5381bf8f41273bad3175e0e619126ad087") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("b4d5e56e929ba4cda349e9274e3603d0be246b82016bca20f363963c5f2d6845") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("e33cdf9c7f7120b98e8c78408953e07f2ecd183006b5606df349b4c212acf43e") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("c0f8bd4dbc2b0c03107c1c37913f2a7501f521467f45dd0fef6958e9a4692719") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("7a538607fdaab9296995929f451565bbb8142e1844117322aafd2b3d76b01aff") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("66d34fba71f8f450f7e45598853e53bfc23bbd129027cbb131a2f4ffd7878cd0") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("16849877c6c21ef0bfa68e4f6747300ddb171b170b9f00e189edc4c2fc4db93e") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("52789e3423b72beeb898456a4f49662e46b0cbb960784c5ef4b1399d327e7c27") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("6643110c5628fff59edf76d82d5bf573bf800f16a4d65dfb1e5d6f1a46296d0b") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("11eaed932c6c6fddfc2efc394e609facf4abe814fc6180d03b14fce13a07d0e5") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("97daac0ee9998dfcad6c9c0970da5ca411c86233a944c25b47566f6a7bc1ddd5") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("8f9bec6a62dd28ebd36d1227745592de6658b36974a3bb98a4c582f683ea6c42") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("160b4e433e384e05e537dc59b467f7cb2403f0214db15c5db58862a3f1156d2e") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("bfc5fe0e360152ca98c50fab4ed7e3078c17debc2917740d5000913b686ca129") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("6c1b3dc7a706b9dc81352a6716b9c666c608d8626272c64b914ab05572fc6e84") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("abe346a7259fc90b4c27185419628e5e6af6466b1ae9b5446cac4bfc26cf05c4") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("a3f01b6939256127582ac8ae9fb47a382a244680806a3f613a118851c1ca1d47") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("9f4390f8d30c2dd92ec9f095b65e2b9ae9b0a925a5258e241c9f1e910f734318") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("b35439a4ac6f0948b6d6f9e3c6af0f5f590ce20f1bde7090ef7970686ec6738a") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("f13b2d724659eb3bf47f2dd6af1accc87b81f09f59f2b75e5c0bed6589dfe8c6") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("d5c039b748aa64665782974ec3dc3025c042edf54dcdc2b5de31385b094cb678") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("111bb261277afd65f0744b247cd3e47d386d71563d0ed995517807d5ebd4fba3") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("11ee391211c6256460b6ed375957fadd8061cafbb31daf967db875aebd5aaad4") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("35d5fc17cfbbadd00f5e710ada39f194c5ad7c766ad67072245f1fad45f0f530") + ], + [ + fromHex( + "6161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("f506898cc7c2e092f9eb9fadae7ba50383f5b46a2a4fe5597dbb553a78981268") + ], + [ + fromHex( + "616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("7d3e74a05d7db15bce4ad9ec0658ea98e3f06eeecf16b4c6fff2da457ddc2f34") + ], + [ + fromHex( + "61616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161" + ), + fromHex("ffe054fe7ae0cb6dc65c3af9b61d5209f439851db43d0ba5997337df154668eb") + ], + [ + fromHex( + "de188941a3375d3a8a061e67576e926dc71a7fa3f0cceb97452b4d3227965f9ea8cc75076d9fb9c5417aa5cb30fc22198b34982dbb629e" + ), + fromHex("038051e9c324393bd1ca1978dd0952c2aa3742ca4f1bd5cd4611cea83892d382") + ], + [ + millionChars, + fromHex("cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0") + ], + [ + fromHex( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ), + fromHex("45ad4b37c6e2fc0a2cfcc1b5da524132ec707615c2cae1dbbc43c97aa521db81") + ] +]; + +/** + * @see https://tools.ietf.org/html/rfc4231 + */ +export const hmacTestVectors: Array<[Uint8Array, Uint8Array, Uint8Array]> = [ + [ + fromHex("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"), + fromHex("4869205468657265"), + fromHex("b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7") + ], + [ + fromHex("4a656665"), + fromHex("7768617420646f2079612077616e7420666f72206e6f7468696e673f"), + fromHex("5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843") + ], + [ + fromHex("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"), + fromHex( + "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" + ), + fromHex("773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe") + ], + [ + fromHex("0102030405060708090a0b0c0d0e0f10111213141516171819"), + fromHex( + "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd" + ), + fromHex("82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b") + ], + [ + fromHex( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ), + fromHex( + "54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374" + ), + fromHex("60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54") + ], + [ + fromHex( + "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + ), + fromHex( + "5468697320697320612074657374207573696e672061206c6172676572207468616e20626c6f636b2d73697a65206b657920616e642061206c6172676572207468616e20626c6f636b2d73697a6520646174612e20546865206b6579206e6565647320746f20626520686173686564206265666f7265206265696e6720757365642062792074686520484d414320616c676f726974686d2e" + ), + fromHex("9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2") + ] +]; diff --git a/bff/node_modules/@aws-crypto/sha256-js/tsconfig.json b/bff/node_modules/@aws-crypto/sha256-js/tsconfig.json new file mode 100644 index 0000000..fb9aa95 --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build/main", + "lib": ["dom"], + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/bff/node_modules/@aws-crypto/sha256-js/tsconfig.module.json b/bff/node_modules/@aws-crypto/sha256-js/tsconfig.module.json new file mode 100644 index 0000000..7d0cfdd --- /dev/null +++ b/bff/node_modules/@aws-crypto/sha256-js/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/bff/node_modules/@aws-crypto/supports-web-crypto/CHANGELOG.md b/bff/node_modules/@aws-crypto/supports-web-crypto/CHANGELOG.md new file mode 100644 index 0000000..13023ad --- /dev/null +++ b/bff/node_modules/@aws-crypto/supports-web-crypto/CHANGELOG.md @@ -0,0 +1,66 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [1.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/supports-web-crypto@1.0.0-alpha.0...@aws-crypto/supports-web-crypto@1.0.0) (2020-10-22) + +### Bug Fixes + +- replace `sourceRoot` -> `rootDir` in tsconfig ([#169](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/169)) ([d437167](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/d437167b51d1c56a4fcc2bb8a446b74a7e3b7e06)) + +# [1.0.0-alpha.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/supports-web-crypto@0.1.0-preview.4...@aws-crypto/supports-web-crypto@1.0.0-alpha.0) (2020-02-07) + +**Note:** Version bump only for package @aws-crypto/supports-web-crypto + +# [0.1.0-preview.4](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/supports-web-crypto@0.1.0-preview.2...@aws-crypto/supports-web-crypto@0.1.0-preview.4) (2020-01-16) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.3](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/@aws-crypto/supports-web-crypto@0.1.0-preview.2...@aws-crypto/supports-web-crypto@0.1.0-preview.3) (2019-11-15) + +### Bug Fixes + +- Changed package.json files to point to the right Git repo ([#9](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/9)) ([028245d](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/028245d72e642ca98d82226afb300eb154503c4a)), closes [#8](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/8) +- lerna version maintains package-lock ([#14](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/14)) ([2ef29e1](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/2ef29e13779703a5c9b32e93d18918fcb33b7272)), closes [#13](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/13) + +# [0.1.0-preview.2](https://github.com/aws/aws-javascript-crypto-helpers/compare/@aws-crypto/supports-web-crypto@0.1.0-preview.1...@aws-crypto/supports-web-crypto@0.1.0-preview.2) (2019-10-30) + +### Bug Fixes + +- remove /src/ from .npmignore (for sourcemaps) ([#5](https://github.com/aws/aws-javascript-crypto-helpers/issues/5)) ([ec52056](https://github.com/aws/aws-javascript-crypto-helpers/commit/ec52056)) diff --git a/bff/node_modules/@aws-crypto/supports-web-crypto/LICENSE b/bff/node_modules/@aws-crypto/supports-web-crypto/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/bff/node_modules/@aws-crypto/supports-web-crypto/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-crypto/supports-web-crypto/README.md b/bff/node_modules/@aws-crypto/supports-web-crypto/README.md new file mode 100644 index 0000000..7891357 --- /dev/null +++ b/bff/node_modules/@aws-crypto/supports-web-crypto/README.md @@ -0,0 +1,32 @@ +# @aws-crypto/supports-web-crypto + +Functions to check web crypto support for browsers. + +## Usage + +``` +import {supportsWebCrypto} from '@aws-crypto/supports-web-crypto'; + +if (supportsWebCrypto(window)) { + // window.crypto.subtle.encrypt will exist +} + +``` + +## supportsWebCrypto + +Used to make sure `window.crypto.subtle` exists and implements crypto functions +as well as a cryptographic secure random source exists. + +## supportsSecureRandom + +Used to make sure that a cryptographic secure random source exists. +Does not check for `window.crypto.subtle`. + +## supportsSubtleCrypto + +## supportsZeroByteGCM + +## Test + +`npm test` diff --git a/bff/node_modules/@aws-crypto/supports-web-crypto/package.json b/bff/node_modules/@aws-crypto/supports-web-crypto/package.json new file mode 100644 index 0000000..a97bf01 --- /dev/null +++ b/bff/node_modules/@aws-crypto/supports-web-crypto/package.json @@ -0,0 +1,28 @@ +{ + "name": "@aws-crypto/supports-web-crypto", + "version": "5.2.0", + "description": "Provides functions for detecting if the host environment supports the WebCrypto API", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/supports-web-crypto", + "license": "Apache-2.0", + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/bff/node_modules/@aws-crypto/supports-web-crypto/src/index.ts b/bff/node_modules/@aws-crypto/supports-web-crypto/src/index.ts new file mode 100644 index 0000000..9725c9c --- /dev/null +++ b/bff/node_modules/@aws-crypto/supports-web-crypto/src/index.ts @@ -0,0 +1 @@ +export * from "./supportsWebCrypto"; diff --git a/bff/node_modules/@aws-crypto/supports-web-crypto/src/supportsWebCrypto.ts b/bff/node_modules/@aws-crypto/supports-web-crypto/src/supportsWebCrypto.ts new file mode 100644 index 0000000..7eef629 --- /dev/null +++ b/bff/node_modules/@aws-crypto/supports-web-crypto/src/supportsWebCrypto.ts @@ -0,0 +1,76 @@ +type SubtleCryptoMethod = + | "decrypt" + | "digest" + | "encrypt" + | "exportKey" + | "generateKey" + | "importKey" + | "sign" + | "verify"; + +const subtleCryptoMethods: Array = [ + "decrypt", + "digest", + "encrypt", + "exportKey", + "generateKey", + "importKey", + "sign", + "verify" +]; + +export function supportsWebCrypto(window: Window): boolean { + if ( + supportsSecureRandom(window) && + typeof window.crypto.subtle === "object" + ) { + const { subtle } = window.crypto; + + return supportsSubtleCrypto(subtle); + } + + return false; +} + +export function supportsSecureRandom(window: Window): boolean { + if (typeof window === "object" && typeof window.crypto === "object") { + const { getRandomValues } = window.crypto; + + return typeof getRandomValues === "function"; + } + + return false; +} + +export function supportsSubtleCrypto(subtle: SubtleCrypto) { + return ( + subtle && + subtleCryptoMethods.every( + methodName => typeof subtle[methodName] === "function" + ) + ); +} + +export async function supportsZeroByteGCM(subtle: SubtleCrypto) { + if (!supportsSubtleCrypto(subtle)) return false; + try { + const key = await subtle.generateKey( + { name: "AES-GCM", length: 128 }, + false, + ["encrypt"] + ); + const zeroByteAuthTag = await subtle.encrypt( + { + name: "AES-GCM", + iv: new Uint8Array(Array(12)), + additionalData: new Uint8Array(Array(16)), + tagLength: 128 + }, + key, + new Uint8Array(0) + ); + return zeroByteAuthTag.byteLength === 16; + } catch { + return false; + } +} diff --git a/bff/node_modules/@aws-crypto/supports-web-crypto/tsconfig.json b/bff/node_modules/@aws-crypto/supports-web-crypto/tsconfig.json new file mode 100644 index 0000000..efca6de --- /dev/null +++ b/bff/node_modules/@aws-crypto/supports-web-crypto/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "lib": ["dom"], + "rootDir": "./src", + "outDir": "./build/main", + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/bff/node_modules/@aws-crypto/supports-web-crypto/tsconfig.module.json b/bff/node_modules/@aws-crypto/supports-web-crypto/tsconfig.module.json new file mode 100644 index 0000000..7d0cfdd --- /dev/null +++ b/bff/node_modules/@aws-crypto/supports-web-crypto/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/bff/node_modules/@aws-crypto/util/CHANGELOG.md b/bff/node_modules/@aws-crypto/util/CHANGELOG.md new file mode 100644 index 0000000..df2cecb --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/CHANGELOG.md @@ -0,0 +1,71 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [5.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.1.0...v5.2.0) (2023-10-16) + +### Features + +- support ESM artifacts in all packages ([#752](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/752)) ([e930ffb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/e930ffba5cfef66dd242049e7d514ced232c1e3b)) + +# [5.1.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v5.0.0...v5.1.0) (2023-09-22) + +### Bug Fixes + +- Update tsc to 2.x ([#735](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/735)) ([782e0de](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/782e0de9f5fef41f694130580a69d940894b6b8c)) + +### Features + +- Use @smithy/util-utf8 ([#730](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/730)) ([00fb851](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/00fb851ca3559d5a1f370f9256814de1210826b8)), closes [#699](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/699) + +# [5.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v4.0.1...v5.0.0) (2023-07-13) + +**Note:** Version bump only for package @aws-crypto/util + +# [4.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v3.0.0...v4.0.0) (2023-02-20) + +**Note:** Version bump only for package @aws-crypto/util + +# [3.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.2...v3.0.0) (2023-01-12) + +- feat!: replace Hash implementations with Checksum interface (#492) ([da43dc0](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/da43dc0fdf669d9ebb5bfb1b1f7c79e46c4aaae1)), closes [#492](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/492) + +### BREAKING CHANGES + +- All classes that implemented `Hash` now implement `Checksum`. + +## [2.0.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.1...v2.0.2) (2022-09-07) + +### Bug Fixes + +- **#337:** update @aws-sdk/types ([#373](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/373)) ([b26a811](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/b26a811a392f5209c7ec7e57251500d4d78f97ff)), closes [#337](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/337) +- **docs:** update README for packages/util ([#382](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/382)) ([f3e650e](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/f3e650e1b4792ffbea2e8a1a015fd55fb951a3a4)) + +## [2.0.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v2.0.0...v2.0.1) (2021-12-09) + +### Bug Fixes + +- **uint32ArrayFrom:** increment index & polyfill for Uint32Array ([#270](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/270)) ([a70d603](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/a70d603f3ba7600d3c1213f297d4160a4b3793bd)) + +# [2.0.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.2...v2.0.0) (2021-10-25) + +**Note:** Version bump only for package @aws-crypto/util + +## [1.2.2](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.1...v1.2.2) (2021-10-12) + +### Bug Fixes + +- **crc32c:** ie11 does not support Array.from ([#221](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/221)) ([5f49547](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/5f495472ab8988cf203e0f2a70a51f7e1fcd7e60)) + +## [1.2.1](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.2.0...v1.2.1) (2021-09-17) + +### Bug Fixes + +- better pollyfill check for Buffer ([#217](https://github.com/aws/aws-sdk-js-crypto-helpers/issues/217)) ([bc97da2](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/bc97da29aaf473943e4407c9a29cc30f74f15723)) + +# [1.2.0](https://github.com/aws/aws-sdk-js-crypto-helpers/compare/v1.1.1...v1.2.0) (2021-09-17) + +### Features + +- add @aws-crypto/util ([8f489cb](https://github.com/aws/aws-sdk-js-crypto-helpers/commit/8f489cbe4c0e134f826bac66f1bf5172597048b9)) diff --git a/bff/node_modules/@aws-crypto/util/LICENSE b/bff/node_modules/@aws-crypto/util/LICENSE new file mode 100644 index 0000000..980a15a --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-crypto/util/README.md b/bff/node_modules/@aws-crypto/util/README.md new file mode 100644 index 0000000..4c1c8aa --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/README.md @@ -0,0 +1,16 @@ +# @aws-crypto/util + +Helper functions + +## Usage + +``` +import { convertToBuffer } from '@aws-crypto/util'; + +const data = "asdf"; +const utf8EncodedUint8Array = convertToBuffer(data); +``` + +## Test + +`npm test` diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/LICENSE b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/README.md b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/README.md new file mode 100644 index 0000000..31853f2 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/README.md @@ -0,0 +1,10 @@ +# @smithy/is-array-buffer + +[![NPM version](https://img.shields.io/npm/v/@smithy/is-array-buffer/latest.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/is-array-buffer.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-cjs/index.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-cjs/index.js new file mode 100644 index 0000000..5d792e7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-cjs/index.js @@ -0,0 +1,32 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + isArrayBuffer: () => isArrayBuffer +}); +module.exports = __toCommonJS(src_exports); +var isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === "[object ArrayBuffer]", "isArrayBuffer"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + isArrayBuffer +}); + diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-es/index.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-es/index.js new file mode 100644 index 0000000..8096cca --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-es/index.js @@ -0,0 +1,2 @@ +export const isArrayBuffer = (arg) => (typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer) || + Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts new file mode 100644 index 0000000..64f452e --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ca8fd6b --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/package.json b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/package.json new file mode 100644 index 0000000..ed8affc --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/is-array-buffer", + "version": "2.2.0", + "description": "Provides a function for detecting if an argument is an ArrayBuffer", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline is-array-buffer", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/is-array-buffer", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/is-array-buffer" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/LICENSE b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/README.md b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/README.md new file mode 100644 index 0000000..c896b04 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/README.md @@ -0,0 +1,10 @@ +# @smithy/util-buffer-from + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-buffer-from/latest.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-buffer-from.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-cjs/index.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-cjs/index.js new file mode 100644 index 0000000..c6738d9 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-cjs/index.js @@ -0,0 +1,47 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromArrayBuffer: () => fromArrayBuffer, + fromString: () => fromString +}); +module.exports = __toCommonJS(src_exports); +var import_is_array_buffer = require("@smithy/is-array-buffer"); +var import_buffer = require("buffer"); +var fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => { + if (!(0, import_is_array_buffer.isArrayBuffer)(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return import_buffer.Buffer.from(input, offset, length); +}, "fromArrayBuffer"); +var fromString = /* @__PURE__ */ __name((input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? import_buffer.Buffer.from(input, encoding) : import_buffer.Buffer.from(input); +}, "fromString"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromArrayBuffer, + fromString +}); + diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-es/index.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-es/index.js new file mode 100644 index 0000000..718f831 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-es/index.js @@ -0,0 +1,14 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +import { Buffer } from "buffer"; +export const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return Buffer.from(input, offset, length); +}; +export const fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? Buffer.from(input, encoding) : Buffer.from(input); +}; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts new file mode 100644 index 0000000..a523134 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..f9173f7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/package.json b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/package.json new file mode 100644 index 0000000..a12e51c --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/util-buffer-from", + "version": "2.2.0", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-buffer-from", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^14.14.31", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-buffer-from", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-buffer-from" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/LICENSE b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/README.md b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/README.md new file mode 100644 index 0000000..fc5db6d --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/README.md @@ -0,0 +1,4 @@ +# @smithy/util-utf8 + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-utf8/latest.svg)](https://www.npmjs.com/package/@smithy/util-utf8) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-utf8.svg)](https://www.npmjs.com/package/@smithy/util-utf8) diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/fromUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/index.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/index.js new file mode 100644 index 0000000..0b22680 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/index.js @@ -0,0 +1,65 @@ +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var src_exports = {}; +__export(src_exports, { + fromUtf8: () => fromUtf8, + toUint8Array: () => toUint8Array, + toUtf8: () => toUtf8 +}); +module.exports = __toCommonJS(src_exports); + +// src/fromUtf8.ts +var import_util_buffer_from = require("@smithy/util-buffer-from"); +var fromUtf8 = /* @__PURE__ */ __name((input) => { + const buf = (0, import_util_buffer_from.fromString)(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}, "fromUtf8"); + +// src/toUint8Array.ts +var toUint8Array = /* @__PURE__ */ __name((data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}, "toUint8Array"); + +// src/toUtf8.ts + +var toUtf8 = /* @__PURE__ */ __name((input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return (0, import_util_buffer_from.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}, "toUtf8"); +// Annotate the CommonJS export names for ESM import in node: + +0 && (module.exports = { + fromUtf8, + toUint8Array, + toUtf8 +}); + diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUint8Array.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.browser.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js new file mode 100644 index 0000000..532e610 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-cjs/toUtf8.js @@ -0,0 +1 @@ +module.exports = require("./index.js"); \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js new file mode 100644 index 0000000..7344190 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js @@ -0,0 +1 @@ +export const fromUtf8 = (input) => new TextEncoder().encode(input); diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js new file mode 100644 index 0000000..6dc438b --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js @@ -0,0 +1,5 @@ +import { fromString } from "@smithy/util-buffer-from"; +export const fromUtf8 = (input) => { + const buf = fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/index.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/index.js new file mode 100644 index 0000000..00ba465 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js new file mode 100644 index 0000000..2cd36f7 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js @@ -0,0 +1,10 @@ +import { fromUtf8 } from "./fromUtf8"; +export const toUint8Array = (data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js new file mode 100644 index 0000000..c292127 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js @@ -0,0 +1,9 @@ +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return new TextDecoder("utf-8").decode(input); +}; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.js b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.js new file mode 100644 index 0000000..7be8745 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-es/toUtf8.js @@ -0,0 +1,10 @@ +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts new file mode 100644 index 0000000..dd91981 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts new file mode 100644 index 0000000..dd91981 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/index.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/index.d.ts new file mode 100644 index 0000000..00ba465 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts new file mode 100644 index 0000000..11b6342 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts new file mode 100644 index 0000000..8494acd --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts new file mode 100644 index 0000000..8494acd --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts new file mode 100644 index 0000000..39f3d6d --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts new file mode 100644 index 0000000..39f3d6d --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ef9761d --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts new file mode 100644 index 0000000..562fe10 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts new file mode 100644 index 0000000..33511ad --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts new file mode 100644 index 0000000..33511ad --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/package.json b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/package.json new file mode 100644 index 0000000..78bfb4d --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/util-utf8", + "version": "2.3.0", + "description": "A UTF-8 string <-> UInt8Array converter", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-utf8", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "rimraf ./.release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo || exit 0", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:jest" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=14.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/fromUtf8": "./dist-es/fromUtf8.browser", + "./dist-es/toUtf8": "./dist-es/toUtf8.browser" + }, + "react-native": {}, + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages/util-utf8", + "repository": { + "type": "git", + "url": "https://github.com/awslabs/smithy-typescript.git", + "directory": "packages/util-utf8" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@aws-crypto/util/package.json b/bff/node_modules/@aws-crypto/util/package.json new file mode 100644 index 0000000..431107a --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/package.json @@ -0,0 +1,32 @@ +{ + "name": "@aws-crypto/util", + "version": "5.2.0", + "scripts": { + "prepublishOnly": "tsc -p tsconfig.json && tsc -p tsconfig.module.json", + "pretest": "tsc -p tsconfig.test.json", + "test": "mocha --require ts-node/register test/**/*test.ts" + }, + "main": "./build/main/index.js", + "module": "./build/module/index.js", + "types": "./build/main/index.d.ts", + "repository": { + "type": "git", + "url": "git@github.com:aws/aws-sdk-js-crypto-helpers.git" + }, + "author": { + "name": "AWS Crypto Tools Team", + "email": "aws-cryptools@amazon.com", + "url": "https://docs.aws.amazon.com/aws-crypto-tools/index.html?id=docs_gateway#lang/en_us" + }, + "homepage": "https://github.com/aws/aws-sdk-js-crypto-helpers/tree/master/packages/util", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + }, + "publishConfig": { + "access": "public" + }, + "gitHead": "c11b171b35ec5c093364f0e0d8dc4ab1af68e748" +} diff --git a/bff/node_modules/@aws-crypto/util/src/convertToBuffer.ts b/bff/node_modules/@aws-crypto/util/src/convertToBuffer.ts new file mode 100644 index 0000000..f9f163e --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/src/convertToBuffer.ts @@ -0,0 +1,30 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { SourceData } from "@aws-sdk/types"; +import { fromUtf8 as fromUtf8Browser } from "@smithy/util-utf8"; + +// Quick polyfill +const fromUtf8 = + typeof Buffer !== "undefined" && Buffer.from + ? (input: string) => Buffer.from(input, "utf8") + : fromUtf8Browser; + +export function convertToBuffer(data: SourceData): Uint8Array { + // Already a Uint8, do nothing + if (data instanceof Uint8Array) return data; + + if (typeof data === "string") { + return fromUtf8(data); + } + + if (ArrayBuffer.isView(data)) { + return new Uint8Array( + data.buffer, + data.byteOffset, + data.byteLength / Uint8Array.BYTES_PER_ELEMENT + ); + } + + return new Uint8Array(data); +} diff --git a/bff/node_modules/@aws-crypto/util/src/index.ts b/bff/node_modules/@aws-crypto/util/src/index.ts new file mode 100644 index 0000000..2f6c62a --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/src/index.ts @@ -0,0 +1,7 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +export { convertToBuffer } from "./convertToBuffer"; +export { isEmptyData } from "./isEmptyData"; +export { numToUint8 } from "./numToUint8"; +export {uint32ArrayFrom} from './uint32ArrayFrom'; diff --git a/bff/node_modules/@aws-crypto/util/src/isEmptyData.ts b/bff/node_modules/@aws-crypto/util/src/isEmptyData.ts new file mode 100644 index 0000000..089764d --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/src/isEmptyData.ts @@ -0,0 +1,12 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { SourceData } from "@aws-sdk/types"; + +export function isEmptyData(data: SourceData): boolean { + if (typeof data === "string") { + return data.length === 0; + } + + return data.byteLength === 0; +} diff --git a/bff/node_modules/@aws-crypto/util/src/numToUint8.ts b/bff/node_modules/@aws-crypto/util/src/numToUint8.ts new file mode 100644 index 0000000..2f40ace --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/src/numToUint8.ts @@ -0,0 +1,11 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +export function numToUint8(num: number) { + return new Uint8Array([ + (num & 0xff000000) >> 24, + (num & 0x00ff0000) >> 16, + (num & 0x0000ff00) >> 8, + num & 0x000000ff, + ]); +} diff --git a/bff/node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts b/bff/node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts new file mode 100644 index 0000000..b9b6d88 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts @@ -0,0 +1,16 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// IE 11 does not support Array.from, so we do it manually +export function uint32ArrayFrom(a_lookUpTable: Array): Uint32Array { + if (!Uint32Array.from) { + const return_array = new Uint32Array(a_lookUpTable.length) + let a_index = 0 + while (a_index < a_lookUpTable.length) { + return_array[a_index] = a_lookUpTable[a_index] + a_index += 1 + } + return return_array + } + return Uint32Array.from(a_lookUpTable) +} diff --git a/bff/node_modules/@aws-crypto/util/tsconfig.json b/bff/node_modules/@aws-crypto/util/tsconfig.json new file mode 100644 index 0000000..2b996d0 --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./build/main", + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules/**"] +} diff --git a/bff/node_modules/@aws-crypto/util/tsconfig.module.json b/bff/node_modules/@aws-crypto/util/tsconfig.module.json new file mode 100644 index 0000000..7d0cfdd --- /dev/null +++ b/bff/node_modules/@aws-crypto/util/tsconfig.module.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "outDir": "build/module", + "module": "esnext", + } +} diff --git a/bff/node_modules/@aws-sdk/client-s3/LICENSE b/bff/node_modules/@aws-sdk/client-s3/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/client-s3/README.md b/bff/node_modules/@aws-sdk/client-s3/README.md new file mode 100644 index 0000000..2568a7d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/README.md @@ -0,0 +1,930 @@ + + +# @aws-sdk/client-s3 + +## Description + +AWS SDK for JavaScript S3 Client for Node.js, Browser and React Native. + +

+ +## Installing + +To install this package, use the CLI of your favorite package manager: + +- `npm install @aws-sdk/client-s3` +- `yarn add @aws-sdk/client-s3` +- `pnpm add @aws-sdk/client-s3` + +## Getting Started + +### Import + +The AWS SDK is modulized by clients and commands. +To send a request, you only need to import the `S3Client` and +the commands you need, for example `ListBucketsCommand`: + +```js +// ES5 example +const { S3Client, ListBucketsCommand } = require("@aws-sdk/client-s3"); +``` + +```ts +// ES6+ example +import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3"; +``` + +### Usage + +To send a request: + +- Instantiate a client with configuration (e.g. credentials, region). + - See [docs/CLIENTS](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md) for configuration details. + - See [@aws-sdk/config](https://github.com/aws/aws-sdk-js-v3/blob/main/packages/config/README.md) for additional options. +- Instantiate a command with input parameters. +- Call the `send` operation on the client, providing the command object as input. + +```js +const client = new S3Client({ region: "REGION" }); + +const params = { /** input parameters */ }; +const command = new ListBucketsCommand(params); +``` + +#### Async/await + +We recommend using the [await](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await) +operator to wait for the promise returned by send operation as follows: + +```js +// async/await. +try { + const data = await client.send(command); + // process data. +} catch (error) { + // error handling. +} finally { + // finally. +} +``` + +#### Promises + +You can also use [Promise chaining](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises#chaining). + +```js +client + .send(command) + .then((data) => { + // process data. + }) + .catch((error) => { + // error handling. + }) + .finally(() => { + // finally. + }); +``` + +#### Aggregated client + +The aggregated client class is exported from the same package, but without the "Client" suffix. + +`S3` extends `S3Client` and additionally supports all operations, waiters, and paginators as methods. +This style may be familiar to you from the AWS SDK for JavaScript v2. + +If you are bundling the AWS SDK, we recommend using only the bare-bones client (`S3Client`). +More details are in the blog post on +[modular packages in AWS SDK for JavaScript](https://aws.amazon.com/blogs/developer/modular-packages-in-aws-sdk-for-javascript/). + +```ts +import { S3 } from "@aws-sdk/client-s3"; + +const client = new S3({ region: "REGION" }); + +// async/await. +try { + const data = await client.listBuckets(params); + // process data. +} catch (error) { + // error handling. +} + +// Promises. +client + .listBuckets(params) + .then((data) => { + // process data. + }) + .catch((error) => { + // error handling. + }); + +// callbacks (not recommended). +client.listBuckets(params, (err, data) => { + // process err and data. +}); +``` + +### Troubleshooting + +When the service returns an exception, the error will include the exception information, +as well as response metadata (e.g. request id). + +```js +try { + const data = await client.send(command); + // process data. +} catch (error) { + const { requestId, cfId, extendedRequestId } = error.$metadata; + console.log({ requestId, cfId, extendedRequestId }); + /** + * The keys within exceptions are also parsed. + * You can access them by specifying exception names: + * if (error.name === 'SomeServiceException') { + * const value = error.specialKeyInException; + * } + */ +} +``` + +See also [docs/ERROR_HANDLING](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/ERROR_HANDLING.md). + +## Getting Help + +Please use these community resources for getting help. +We use GitHub issues for tracking bugs and feature requests, but have limited bandwidth to address them. + +- Visit the [Developer Guide](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/welcome.html) + or [API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/index.html). +- Check out the blog posts tagged with [`aws-sdk-js`](https://aws.amazon.com/blogs/developer/tag/aws-sdk-js/) + on AWS Developer Blog. +- Ask a question on [StackOverflow](https://stackoverflow.com/questions/tagged/aws-sdk-js) and tag it with `aws-sdk-js`. +- Join the AWS JavaScript community on [gitter](https://gitter.im/aws/aws-sdk-js-v3). +- If it turns out that you may have found a bug, please [open an issue](https://github.com/aws/aws-sdk-js-v3/issues/new/choose). + +To test your universal JavaScript code in Node.js, browser and react-native environments, +visit our [code samples repo](https://github.com/aws-samples/aws-sdk-js-tests). + +## Contributing + +This client code is generated automatically. Any modifications will be overwritten the next time the `@aws-sdk/client-s3` package is updated. +To contribute to client you can check our [generate clients scripts](https://github.com/aws/aws-sdk-js-v3/tree/main/scripts/generate-clients). + +## License + +This SDK is distributed under the +[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0), +see LICENSE for more information. + +## Client Commands (Operations List) + +
+ +AbortMultipartUpload + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/AbortMultipartUploadCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/AbortMultipartUploadCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/AbortMultipartUploadCommandOutput/) +
+
+ +CompleteMultipartUpload + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/CompleteMultipartUploadCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CompleteMultipartUploadCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CompleteMultipartUploadCommandOutput/) +
+
+ +CopyObject + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/CopyObjectCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CopyObjectCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CopyObjectCommandOutput/) +
+
+ +CreateBucket + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/CreateBucketCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateBucketCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateBucketCommandOutput/) +
+
+ +CreateBucketMetadataConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/CreateBucketMetadataConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateBucketMetadataConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateBucketMetadataConfigurationCommandOutput/) +
+
+ +CreateBucketMetadataTableConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/CreateBucketMetadataTableConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateBucketMetadataTableConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateBucketMetadataTableConfigurationCommandOutput/) +
+
+ +CreateMultipartUpload + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/CreateMultipartUploadCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateMultipartUploadCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateMultipartUploadCommandOutput/) +
+
+ +CreateSession + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/CreateSessionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateSessionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/CreateSessionCommandOutput/) +
+
+ +DeleteBucket + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketCommandOutput/) +
+
+ +DeleteBucketAnalyticsConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketAnalyticsConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketAnalyticsConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketAnalyticsConfigurationCommandOutput/) +
+
+ +DeleteBucketCors + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketCorsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketCorsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketCorsCommandOutput/) +
+
+ +DeleteBucketEncryption + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketEncryptionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketEncryptionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketEncryptionCommandOutput/) +
+
+ +DeleteBucketIntelligentTieringConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketIntelligentTieringConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketIntelligentTieringConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketIntelligentTieringConfigurationCommandOutput/) +
+
+ +DeleteBucketInventoryConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketInventoryConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketInventoryConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketInventoryConfigurationCommandOutput/) +
+
+ +DeleteBucketLifecycle + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketLifecycleCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketLifecycleCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketLifecycleCommandOutput/) +
+
+ +DeleteBucketMetadataConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketMetadataConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketMetadataConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketMetadataConfigurationCommandOutput/) +
+
+ +DeleteBucketMetadataTableConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketMetadataTableConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketMetadataTableConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketMetadataTableConfigurationCommandOutput/) +
+
+ +DeleteBucketMetricsConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketMetricsConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketMetricsConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketMetricsConfigurationCommandOutput/) +
+
+ +DeleteBucketOwnershipControls + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketOwnershipControlsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketOwnershipControlsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketOwnershipControlsCommandOutput/) +
+
+ +DeleteBucketPolicy + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketPolicyCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketPolicyCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketPolicyCommandOutput/) +
+
+ +DeleteBucketReplication + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketReplicationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketReplicationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketReplicationCommandOutput/) +
+
+ +DeleteBucketTagging + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketTaggingCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketTaggingCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketTaggingCommandOutput/) +
+
+ +DeleteBucketWebsite + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteBucketWebsiteCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketWebsiteCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteBucketWebsiteCommandOutput/) +
+
+ +DeleteObject + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteObjectCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteObjectCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteObjectCommandOutput/) +
+
+ +DeleteObjects + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteObjectsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteObjectsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteObjectsCommandOutput/) +
+
+ +DeleteObjectTagging + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeleteObjectTaggingCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteObjectTaggingCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeleteObjectTaggingCommandOutput/) +
+
+ +DeletePublicAccessBlock + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/DeletePublicAccessBlockCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeletePublicAccessBlockCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/DeletePublicAccessBlockCommandOutput/) +
+
+ +GetBucketAbac + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketAbacCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketAbacCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketAbacCommandOutput/) +
+
+ +GetBucketAccelerateConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketAccelerateConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketAccelerateConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketAccelerateConfigurationCommandOutput/) +
+
+ +GetBucketAcl + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketAclCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketAclCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketAclCommandOutput/) +
+
+ +GetBucketAnalyticsConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketAnalyticsConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketAnalyticsConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketAnalyticsConfigurationCommandOutput/) +
+
+ +GetBucketCors + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketCorsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketCorsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketCorsCommandOutput/) +
+
+ +GetBucketEncryption + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketEncryptionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketEncryptionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketEncryptionCommandOutput/) +
+
+ +GetBucketIntelligentTieringConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketIntelligentTieringConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketIntelligentTieringConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketIntelligentTieringConfigurationCommandOutput/) +
+
+ +GetBucketInventoryConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketInventoryConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketInventoryConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketInventoryConfigurationCommandOutput/) +
+
+ +GetBucketLifecycleConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketLifecycleConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketLifecycleConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketLifecycleConfigurationCommandOutput/) +
+
+ +GetBucketLocation + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketLocationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketLocationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketLocationCommandOutput/) +
+
+ +GetBucketLogging + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketLoggingCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketLoggingCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketLoggingCommandOutput/) +
+
+ +GetBucketMetadataConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketMetadataConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketMetadataConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketMetadataConfigurationCommandOutput/) +
+
+ +GetBucketMetadataTableConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketMetadataTableConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketMetadataTableConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketMetadataTableConfigurationCommandOutput/) +
+
+ +GetBucketMetricsConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketMetricsConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketMetricsConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketMetricsConfigurationCommandOutput/) +
+
+ +GetBucketNotificationConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketNotificationConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketNotificationConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketNotificationConfigurationCommandOutput/) +
+
+ +GetBucketOwnershipControls + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketOwnershipControlsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketOwnershipControlsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketOwnershipControlsCommandOutput/) +
+
+ +GetBucketPolicy + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketPolicyCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketPolicyCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketPolicyCommandOutput/) +
+
+ +GetBucketPolicyStatus + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketPolicyStatusCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketPolicyStatusCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketPolicyStatusCommandOutput/) +
+
+ +GetBucketReplication + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketReplicationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketReplicationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketReplicationCommandOutput/) +
+
+ +GetBucketRequestPayment + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketRequestPaymentCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketRequestPaymentCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketRequestPaymentCommandOutput/) +
+
+ +GetBucketTagging + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketTaggingCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketTaggingCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketTaggingCommandOutput/) +
+
+ +GetBucketVersioning + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketVersioningCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketVersioningCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketVersioningCommandOutput/) +
+
+ +GetBucketWebsite + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetBucketWebsiteCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketWebsiteCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetBucketWebsiteCommandOutput/) +
+
+ +GetObject + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectCommandOutput/) +
+
+ +GetObjectAcl + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectAclCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectAclCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectAclCommandOutput/) +
+
+ +GetObjectAttributes + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectAttributesCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectAttributesCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectAttributesCommandOutput/) +
+
+ +GetObjectLegalHold + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectLegalHoldCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectLegalHoldCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectLegalHoldCommandOutput/) +
+
+ +GetObjectLockConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectLockConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectLockConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectLockConfigurationCommandOutput/) +
+
+ +GetObjectRetention + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectRetentionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectRetentionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectRetentionCommandOutput/) +
+
+ +GetObjectTagging + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectTaggingCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectTaggingCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectTaggingCommandOutput/) +
+
+ +GetObjectTorrent + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetObjectTorrentCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectTorrentCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetObjectTorrentCommandOutput/) +
+
+ +GetPublicAccessBlock + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/GetPublicAccessBlockCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetPublicAccessBlockCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/GetPublicAccessBlockCommandOutput/) +
+
+ +HeadBucket + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/HeadBucketCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/HeadBucketCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/HeadBucketCommandOutput/) +
+
+ +HeadObject + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/HeadObjectCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/HeadObjectCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/HeadObjectCommandOutput/) +
+
+ +ListBucketAnalyticsConfigurations + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListBucketAnalyticsConfigurationsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketAnalyticsConfigurationsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketAnalyticsConfigurationsCommandOutput/) +
+
+ +ListBucketIntelligentTieringConfigurations + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListBucketIntelligentTieringConfigurationsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketIntelligentTieringConfigurationsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketIntelligentTieringConfigurationsCommandOutput/) +
+
+ +ListBucketInventoryConfigurations + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListBucketInventoryConfigurationsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketInventoryConfigurationsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketInventoryConfigurationsCommandOutput/) +
+
+ +ListBucketMetricsConfigurations + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListBucketMetricsConfigurationsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketMetricsConfigurationsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketMetricsConfigurationsCommandOutput/) +
+
+ +ListBuckets + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListBucketsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListBucketsCommandOutput/) +
+
+ +ListDirectoryBuckets + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListDirectoryBucketsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListDirectoryBucketsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListDirectoryBucketsCommandOutput/) +
+
+ +ListMultipartUploads + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListMultipartUploadsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListMultipartUploadsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListMultipartUploadsCommandOutput/) +
+
+ +ListObjects + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListObjectsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListObjectsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListObjectsCommandOutput/) +
+
+ +ListObjectsV2 + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListObjectsV2Command/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListObjectsV2CommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListObjectsV2CommandOutput/) +
+
+ +ListObjectVersions + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListObjectVersionsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListObjectVersionsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListObjectVersionsCommandOutput/) +
+
+ +ListParts + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/ListPartsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListPartsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/ListPartsCommandOutput/) +
+
+ +PutBucketAbac + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketAbacCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketAbacCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketAbacCommandOutput/) +
+
+ +PutBucketAccelerateConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketAccelerateConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketAccelerateConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketAccelerateConfigurationCommandOutput/) +
+
+ +PutBucketAcl + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketAclCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketAclCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketAclCommandOutput/) +
+
+ +PutBucketAnalyticsConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketAnalyticsConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketAnalyticsConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketAnalyticsConfigurationCommandOutput/) +
+
+ +PutBucketCors + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketCorsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketCorsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketCorsCommandOutput/) +
+
+ +PutBucketEncryption + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketEncryptionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketEncryptionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketEncryptionCommandOutput/) +
+
+ +PutBucketIntelligentTieringConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketIntelligentTieringConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketIntelligentTieringConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketIntelligentTieringConfigurationCommandOutput/) +
+
+ +PutBucketInventoryConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketInventoryConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketInventoryConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketInventoryConfigurationCommandOutput/) +
+
+ +PutBucketLifecycleConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketLifecycleConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketLifecycleConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketLifecycleConfigurationCommandOutput/) +
+
+ +PutBucketLogging + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketLoggingCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketLoggingCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketLoggingCommandOutput/) +
+
+ +PutBucketMetricsConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketMetricsConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketMetricsConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketMetricsConfigurationCommandOutput/) +
+
+ +PutBucketNotificationConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketNotificationConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketNotificationConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketNotificationConfigurationCommandOutput/) +
+
+ +PutBucketOwnershipControls + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketOwnershipControlsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketOwnershipControlsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketOwnershipControlsCommandOutput/) +
+
+ +PutBucketPolicy + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketPolicyCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketPolicyCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketPolicyCommandOutput/) +
+
+ +PutBucketReplication + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketReplicationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketReplicationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketReplicationCommandOutput/) +
+
+ +PutBucketRequestPayment + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketRequestPaymentCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketRequestPaymentCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketRequestPaymentCommandOutput/) +
+
+ +PutBucketTagging + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketTaggingCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketTaggingCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketTaggingCommandOutput/) +
+
+ +PutBucketVersioning + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketVersioningCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketVersioningCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketVersioningCommandOutput/) +
+
+ +PutBucketWebsite + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketWebsiteCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketWebsiteCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutBucketWebsiteCommandOutput/) +
+
+ +PutObject + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutObjectCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectCommandOutput/) +
+
+ +PutObjectAcl + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutObjectAclCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectAclCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectAclCommandOutput/) +
+
+ +PutObjectLegalHold + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutObjectLegalHoldCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectLegalHoldCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectLegalHoldCommandOutput/) +
+
+ +PutObjectLockConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutObjectLockConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectLockConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectLockConfigurationCommandOutput/) +
+
+ +PutObjectRetention + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutObjectRetentionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectRetentionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectRetentionCommandOutput/) +
+
+ +PutObjectTagging + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutObjectTaggingCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectTaggingCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutObjectTaggingCommandOutput/) +
+
+ +PutPublicAccessBlock + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutPublicAccessBlockCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutPublicAccessBlockCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/PutPublicAccessBlockCommandOutput/) +
+
+ +RenameObject + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/RenameObjectCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/RenameObjectCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/RenameObjectCommandOutput/) +
+
+ +RestoreObject + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/RestoreObjectCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/RestoreObjectCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/RestoreObjectCommandOutput/) +
+
+ +SelectObjectContent + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/SelectObjectContentCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/SelectObjectContentCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/SelectObjectContentCommandOutput/) +
+
+ +UpdateBucketMetadataInventoryTableConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/UpdateBucketMetadataInventoryTableConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UpdateBucketMetadataInventoryTableConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UpdateBucketMetadataInventoryTableConfigurationCommandOutput/) +
+
+ +UpdateBucketMetadataJournalTableConfiguration + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/UpdateBucketMetadataJournalTableConfigurationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UpdateBucketMetadataJournalTableConfigurationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UpdateBucketMetadataJournalTableConfigurationCommandOutput/) +
+
+ +UpdateObjectEncryption + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/UpdateObjectEncryptionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UpdateObjectEncryptionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UpdateObjectEncryptionCommandOutput/) +
+
+ +UploadPart + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/UploadPartCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UploadPartCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UploadPartCommandOutput/) +
+
+ +UploadPartCopy + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/UploadPartCopyCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UploadPartCopyCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/UploadPartCopyCommandOutput/) +
+
+ +WriteGetObjectResponse + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/WriteGetObjectResponseCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/WriteGetObjectResponseCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-s3/Interface/WriteGetObjectResponseCommandOutput/) +
diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..30b1d25 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/auth/httpAuthSchemeProvider.js @@ -0,0 +1,126 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultS3HttpAuthSchemeProvider = exports.defaultS3HttpAuthSchemeParametersProvider = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const signature_v4_multi_region_1 = require("@aws-sdk/signature-v4-multi-region"); +const middleware_endpoint_1 = require("@smithy/middleware-endpoint"); +const util_middleware_1 = require("@smithy/util-middleware"); +const endpointResolver_1 = require("../endpoint/endpointResolver"); +const createEndpointRuleSetHttpAuthSchemeParametersProvider = (defaultHttpAuthSchemeParametersProvider) => async (config, context, input) => { + if (!input) { + throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`"); + } + const defaultParameters = await defaultHttpAuthSchemeParametersProvider(config, context, input); + const instructionsFn = (0, util_middleware_1.getSmithyContext)(context)?.commandInstance?.constructor + ?.getEndpointParameterInstructions; + if (!instructionsFn) { + throw new Error(`getEndpointParameterInstructions() is not defined on '${context.commandName}'`); + } + const endpointParameters = await (0, middleware_endpoint_1.resolveParams)(input, { getEndpointParameterInstructions: instructionsFn }, config); + return Object.assign(defaultParameters, endpointParameters); +}; +const _defaultS3HttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: await (0, util_middleware_1.normalizeProvider)(config.region)() || (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultS3HttpAuthSchemeParametersProvider = createEndpointRuleSetHttpAuthSchemeParametersProvider(_defaultS3HttpAuthSchemeParametersProvider); +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "s3", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createAwsAuthSigv4aHttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4a", + signingProperties: { + name: "s3", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +const createEndpointRuleSetHttpAuthSchemeProvider = (defaultEndpointResolver, defaultHttpAuthSchemeResolver, createHttpAuthOptionFunctions) => { + const endpointRuleSetHttpAuthSchemeProvider = (authParameters) => { + const endpoint = defaultEndpointResolver(authParameters); + const authSchemes = endpoint.properties?.authSchemes; + if (!authSchemes) { + return defaultHttpAuthSchemeResolver(authParameters); + } + const options = []; + for (const scheme of authSchemes) { + const { name: resolvedName, properties = {}, ...rest } = scheme; + const name = resolvedName.toLowerCase(); + if (resolvedName !== name) { + console.warn(`HttpAuthScheme has been normalized with lowercasing: '${resolvedName}' to '${name}'`); + } + let schemeId; + if (name === "sigv4a") { + schemeId = "aws.auth#sigv4a"; + const sigv4Present = authSchemes.find((s) => { + const name = s.name.toLowerCase(); + return name !== "sigv4a" && name.startsWith("sigv4"); + }); + if (signature_v4_multi_region_1.SignatureV4MultiRegion.sigv4aDependency() === "none" && sigv4Present) { + continue; + } + } + else if (name.startsWith("sigv4")) { + schemeId = "aws.auth#sigv4"; + } + else { + throw new Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${name}'`); + } + const createOption = createHttpAuthOptionFunctions[schemeId]; + if (!createOption) { + throw new Error(`Could not find HttpAuthOption create function for '${schemeId}'`); + } + const option = createOption(authParameters); + option.schemeId = schemeId; + option.signingProperties = { ...(option.signingProperties || {}), ...rest, ...properties }; + options.push(option); + } + return options; + }; + return endpointRuleSetHttpAuthSchemeProvider; +}; +const _defaultS3HttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + options.push(createAwsAuthSigv4aHttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultS3HttpAuthSchemeProvider = createEndpointRuleSetHttpAuthSchemeProvider(endpointResolver_1.defaultEndpointResolver, _defaultS3HttpAuthSchemeProvider, { + "aws.auth#sigv4": createAwsAuthSigv4HttpAuthOption, + "aws.auth#sigv4a": createAwsAuthSigv4aHttpAuthOption, +}); +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, httpAuthSchemes_1.resolveAwsSdkSigV4Config)(config); + const config_1 = (0, httpAuthSchemes_1.resolveAwsSdkSigV4AConfig)(config_0); + return Object.assign(config_1, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/endpoint/endpointResolver.js new file mode 100644 index 0000000..c5ecbab --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/endpoint/endpointResolver.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: [ + "Accelerate", + "Bucket", + "DisableAccessPoints", + "DisableMultiRegionAccessPoints", + "DisableS3ExpressSessionAuth", + "Endpoint", + "ForcePathStyle", + "Region", + "UseArnRegion", + "UseDualStack", + "UseFIPS", + "UseGlobalEndpoint", + "UseObjectLambdaEndpoint", + "UseS3ExpressControlEndpoint", + ], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/endpoint/ruleset.js new file mode 100644 index 0000000..110e261 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/endpoint/ruleset.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const cs = "required", ct = "type", cu = "rules", cv = "conditions", cw = "fn", cx = "argv", cy = "ref", cz = "assign", cA = "url", cB = "properties", cC = "backend", cD = "authSchemes", cE = "disableDoubleEncoding", cF = "signingName", cG = "signingRegion", cH = "headers", cI = "signingRegionSet"; +const a = 6, b = false, c = true, d = "isSet", e = "booleanEquals", f = "error", g = "aws.partition", h = "stringEquals", i = "getAttr", j = "name", k = "substring", l = "bucketSuffix", m = "parseURL", n = "endpoint", o = "tree", p = "aws.isVirtualHostableS3Bucket", q = "{url#scheme}://{Bucket}.{url#authority}{url#path}", r = "not", s = "accessPointSuffix", t = "{url#scheme}://{url#authority}{url#path}", u = "hardwareType", v = "regionPrefix", w = "bucketAliasSuffix", x = "outpostId", y = "isValidHostLabel", z = "sigv4a", A = "s3-outposts", B = "s3", C = "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", D = "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", E = "https://{Bucket}.s3.{partitionResult#dnsSuffix}", F = "aws.parseArn", G = "bucketArn", H = "arnType", I = "", J = "s3-object-lambda", K = "accesspoint", L = "accessPointName", M = "{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}", N = "mrapPartition", O = "outpostType", P = "arnPrefix", Q = "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", R = "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", S = "https://s3.{partitionResult#dnsSuffix}", T = { [cs]: false, [ct]: "string" }, U = { [cs]: true, "default": false, [ct]: "boolean" }, V = { [cs]: false, [ct]: "boolean" }, W = { [cw]: e, [cx]: [{ [cy]: "Accelerate" }, true] }, X = { [cw]: e, [cx]: [{ [cy]: "UseFIPS" }, true] }, Y = { [cw]: e, [cx]: [{ [cy]: "UseDualStack" }, true] }, Z = { [cw]: d, [cx]: [{ [cy]: "Endpoint" }] }, aa = { [cw]: g, [cx]: [{ [cy]: "Region" }], [cz]: "partitionResult" }, ab = { [cw]: h, [cx]: [{ [cw]: i, [cx]: [{ [cy]: "partitionResult" }, j] }, "aws-cn"] }, ac = { [cw]: d, [cx]: [{ [cy]: "Bucket" }] }, ad = { [cy]: "Bucket" }, ae = { [cv]: [W], [f]: "S3Express does not support S3 Accelerate.", [ct]: f }, af = { [cv]: [Z, { [cw]: m, [cx]: [{ [cy]: "Endpoint" }], [cz]: "url" }], [cu]: [{ [cv]: [{ [cw]: d, [cx]: [{ [cy]: "DisableS3ExpressSessionAuth" }] }, { [cw]: e, [cx]: [{ [cy]: "DisableS3ExpressSessionAuth" }, true] }], [cu]: [{ [cv]: [{ [cw]: e, [cx]: [{ [cw]: i, [cx]: [{ [cy]: "url" }, "isIp"] }, true] }], [cu]: [{ [cv]: [{ [cw]: "uriEncode", [cx]: [ad], [cz]: "uri_encoded_bucket" }], [cu]: [{ [n]: { [cA]: "{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: p, [cx]: [ad, false] }], [cu]: [{ [n]: { [cA]: q, [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], [ct]: o }, { [f]: "S3Express bucket name is not a valid virtual hostable name.", [ct]: f }], [ct]: o }, { [cv]: [{ [cw]: e, [cx]: [{ [cw]: i, [cx]: [{ [cy]: "url" }, "isIp"] }, true] }], [cu]: [{ [cv]: [{ [cw]: "uriEncode", [cx]: [ad], [cz]: "uri_encoded_bucket" }], [cu]: [{ [n]: { [cA]: "{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: p, [cx]: [ad, false] }], [cu]: [{ [n]: { [cA]: q, [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], [ct]: o }, { [f]: "S3Express bucket name is not a valid virtual hostable name.", [ct]: f }], [ct]: o }, ag = { [cw]: m, [cx]: [{ [cy]: "Endpoint" }], [cz]: "url" }, ah = { [cw]: e, [cx]: [{ [cw]: i, [cx]: [{ [cy]: "url" }, "isIp"] }, true] }, ai = { [cy]: "url" }, aj = { [cw]: "uriEncode", [cx]: [ad], [cz]: "uri_encoded_bucket" }, ak = { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: "s3express", [cG]: "{Region}" }] }, al = {}, am = { [cw]: p, [cx]: [ad, false] }, an = { [f]: "S3Express bucket name is not a valid virtual hostable name.", [ct]: f }, ao = { [cw]: d, [cx]: [{ [cy]: "UseS3ExpressControlEndpoint" }] }, ap = { [cw]: e, [cx]: [{ [cy]: "UseS3ExpressControlEndpoint" }, true] }, aq = { [cw]: r, [cx]: [Z] }, ar = { [cw]: e, [cx]: [{ [cy]: "UseDualStack" }, false] }, as = { [cw]: e, [cx]: [{ [cy]: "UseFIPS" }, false] }, at = { [f]: "Unrecognized S3Express bucket name format.", [ct]: f }, au = { [cw]: r, [cx]: [ac] }, av = { [cy]: u }, aw = { [cv]: [aq], [f]: "Expected a endpoint to be specified but no endpoint was found", [ct]: f }, ax = { [cD]: [{ [cE]: true, [j]: z, [cF]: A, [cI]: ["*"] }, { [cE]: true, [j]: "sigv4", [cF]: A, [cG]: "{Region}" }] }, ay = { [cw]: e, [cx]: [{ [cy]: "ForcePathStyle" }, false] }, az = { [cy]: "ForcePathStyle" }, aA = { [cw]: e, [cx]: [{ [cy]: "Accelerate" }, false] }, aB = { [cw]: h, [cx]: [{ [cy]: "Region" }, "aws-global"] }, aC = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: B, [cG]: "us-east-1" }] }, aD = { [cw]: r, [cx]: [aB] }, aE = { [cw]: e, [cx]: [{ [cy]: "UseGlobalEndpoint" }, true] }, aF = { [cA]: "https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: B, [cG]: "{Region}" }] }, [cH]: {} }, aG = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: B, [cG]: "{Region}" }] }, aH = { [cw]: e, [cx]: [{ [cy]: "UseGlobalEndpoint" }, false] }, aI = { [cA]: "https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, aJ = { [cA]: "https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, aK = { [cA]: "https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, aL = { [cw]: e, [cx]: [{ [cw]: i, [cx]: [ai, "isIp"] }, false] }, aM = { [cA]: C, [cB]: aG, [cH]: {} }, aN = { [cA]: q, [cB]: aG, [cH]: {} }, aO = { [n]: aN, [ct]: n }, aP = { [cA]: D, [cB]: aG, [cH]: {} }, aQ = { [cA]: "https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, aR = { [f]: "Invalid region: region was not a valid DNS name.", [ct]: f }, aS = { [cy]: G }, aT = { [cy]: H }, aU = { [cw]: i, [cx]: [aS, "service"] }, aV = { [cy]: L }, aW = { [cv]: [Y], [f]: "S3 Object Lambda does not support Dual-stack", [ct]: f }, aX = { [cv]: [W], [f]: "S3 Object Lambda does not support S3 Accelerate", [ct]: f }, aY = { [cv]: [{ [cw]: d, [cx]: [{ [cy]: "DisableAccessPoints" }] }, { [cw]: e, [cx]: [{ [cy]: "DisableAccessPoints" }, true] }], [f]: "Access points are not supported for this operation", [ct]: f }, aZ = { [cv]: [{ [cw]: d, [cx]: [{ [cy]: "UseArnRegion" }] }, { [cw]: e, [cx]: [{ [cy]: "UseArnRegion" }, false] }, { [cw]: r, [cx]: [{ [cw]: h, [cx]: [{ [cw]: i, [cx]: [aS, "region"] }, "{Region}"] }] }], [f]: "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`", [ct]: f }, ba = { [cw]: i, [cx]: [{ [cy]: "bucketPartition" }, j] }, bb = { [cw]: i, [cx]: [aS, "accountId"] }, bc = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: J, [cG]: "{bucketArn#region}" }] }, bd = { [f]: "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`", [ct]: f }, be = { [f]: "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`", [ct]: f }, bf = { [f]: "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)", [ct]: f }, bg = { [f]: "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`", [ct]: f }, bh = { [f]: "Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.", [ct]: f }, bi = { [f]: "Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided", [ct]: f }, bj = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: B, [cG]: "{bucketArn#region}" }] }, bk = { [cD]: [{ [cE]: true, [j]: z, [cF]: A, [cI]: ["*"] }, { [cE]: true, [j]: "sigv4", [cF]: A, [cG]: "{bucketArn#region}" }] }, bl = { [cw]: F, [cx]: [ad] }, bm = { [cA]: "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aG, [cH]: {} }, bn = { [cA]: "https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aG, [cH]: {} }, bo = { [cA]: "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aG, [cH]: {} }, bp = { [cA]: Q, [cB]: aG, [cH]: {} }, bq = { [cA]: "https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aG, [cH]: {} }, br = { [cy]: "UseObjectLambdaEndpoint" }, bs = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: J, [cG]: "{Region}" }] }, bt = { [cA]: "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, bu = { [cA]: "https://s3-fips.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, bv = { [cA]: "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, bw = { [cA]: t, [cB]: aG, [cH]: {} }, bx = { [cA]: "https://s3.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, by = [{ [cy]: "Region" }], bz = [{ [cy]: "Endpoint" }], bA = [ad], bB = [W], bC = [Z, ag], bD = [{ [cw]: d, [cx]: [{ [cy]: "DisableS3ExpressSessionAuth" }] }, { [cw]: e, [cx]: [{ [cy]: "DisableS3ExpressSessionAuth" }, true] }], bE = [aj], bF = [am], bG = [aa], bH = [X, Y], bI = [X, ar], bJ = [as, Y], bK = [as, ar], bL = [{ [cw]: k, [cx]: [ad, 6, 14, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 14, 16, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bM = [{ [cv]: [X, Y], [n]: { [cA]: "https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: {} }, [ct]: n }, { [cv]: bI, [n]: { [cA]: "https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: {} }, [ct]: n }, { [cv]: bJ, [n]: { [cA]: "https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: {} }, [ct]: n }, { [cv]: bK, [n]: { [cA]: "https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: {} }, [ct]: n }], bN = [{ [cw]: k, [cx]: [ad, 6, 15, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 15, 17, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bO = [{ [cw]: k, [cx]: [ad, 6, 19, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 19, 21, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bP = [{ [cw]: k, [cx]: [ad, 6, 20, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 20, 22, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bQ = [{ [cw]: k, [cx]: [ad, 6, 26, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 26, 28, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bR = [{ [cv]: [X, Y], [n]: { [cA]: "https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }, { [cv]: bI, [n]: { [cA]: "https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }, { [cv]: bJ, [n]: { [cA]: "https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }, { [cv]: bK, [n]: { [cA]: "https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], bS = [ad, 0, 7, true], bT = [{ [cw]: k, [cx]: [ad, 7, 15, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 15, 17, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bU = [{ [cw]: k, [cx]: [ad, 7, 16, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 16, 18, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bV = [{ [cw]: k, [cx]: [ad, 7, 20, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 20, 22, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bW = [{ [cw]: k, [cx]: [ad, 7, 21, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 21, 23, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bX = [{ [cw]: k, [cx]: [ad, 7, 27, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 27, 29, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bY = [ac], bZ = [{ [cw]: y, [cx]: [{ [cy]: x }, false] }], ca = [{ [cw]: h, [cx]: [{ [cy]: v }, "beta"] }], cb = ["*"], cc = [{ [cw]: y, [cx]: [{ [cy]: "Region" }, false] }], cd = [{ [cw]: h, [cx]: [{ [cy]: "Region" }, "us-east-1"] }], ce = [{ [cw]: h, [cx]: [aT, K] }], cf = [{ [cw]: i, [cx]: [aS, "resourceId[1]"], [cz]: L }, { [cw]: r, [cx]: [{ [cw]: h, [cx]: [aV, I] }] }], cg = [aS, "resourceId[1]"], ch = [Y], ci = [{ [cw]: r, [cx]: [{ [cw]: h, [cx]: [{ [cw]: i, [cx]: [aS, "region"] }, I] }] }], cj = [{ [cw]: r, [cx]: [{ [cw]: d, [cx]: [{ [cw]: i, [cx]: [aS, "resourceId[2]"] }] }] }], ck = [aS, "resourceId[2]"], cl = [{ [cw]: g, [cx]: [{ [cw]: i, [cx]: [aS, "region"] }], [cz]: "bucketPartition" }], cm = [{ [cw]: h, [cx]: [ba, { [cw]: i, [cx]: [{ [cy]: "partitionResult" }, j] }] }], cn = [{ [cw]: y, [cx]: [{ [cw]: i, [cx]: [aS, "region"] }, true] }], co = [{ [cw]: y, [cx]: [bb, false] }], cp = [{ [cw]: y, [cx]: [aV, false] }], cq = [X], cr = [{ [cw]: y, [cx]: [{ [cy]: "Region" }, true] }]; +const _data = { version: "1.0", parameters: { Bucket: T, Region: T, UseFIPS: U, UseDualStack: U, Endpoint: T, ForcePathStyle: U, Accelerate: U, UseGlobalEndpoint: U, UseObjectLambdaEndpoint: V, Key: T, Prefix: T, CopySource: T, DisableAccessPoints: V, DisableMultiRegionAccessPoints: U, UseArnRegion: V, UseS3ExpressControlEndpoint: V, DisableS3ExpressSessionAuth: V }, [cu]: [{ [cv]: [{ [cw]: d, [cx]: by }], [cu]: [{ [cv]: [W, X], error: "Accelerate cannot be used with FIPS", [ct]: f }, { [cv]: [Y, Z], error: "Cannot set dual-stack in combination with a custom endpoint.", [ct]: f }, { [cv]: [Z, X], error: "A custom endpoint cannot be combined with FIPS", [ct]: f }, { [cv]: [Z, W], error: "A custom endpoint cannot be combined with S3 Accelerate", [ct]: f }, { [cv]: [X, aa, ab], error: "Partition does not support FIPS", [ct]: f }, { [cv]: [ac, { [cw]: k, [cx]: [ad, 0, a, c], [cz]: l }, { [cw]: h, [cx]: [{ [cy]: l }, "--x-s3"] }], [cu]: [ae, af, { [cv]: [ao, ap], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: [aj, aq], [cu]: [{ [cv]: bH, endpoint: { [cA]: "https://s3express-control-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bI, endpoint: { [cA]: "https://s3express-control-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bJ, endpoint: { [cA]: "https://s3express-control.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bK, endpoint: { [cA]: "https://s3express-control.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: ak, [cH]: al }, [ct]: n }], [ct]: o }], [ct]: o }], [ct]: o }, { [cv]: bF, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: bD, [cu]: [{ [cv]: bL, [cu]: bM, [ct]: o }, { [cv]: bN, [cu]: bM, [ct]: o }, { [cv]: bO, [cu]: bM, [ct]: o }, { [cv]: bP, [cu]: bM, [ct]: o }, { [cv]: bQ, [cu]: bM, [ct]: o }, at], [ct]: o }, { [cv]: bL, [cu]: bR, [ct]: o }, { [cv]: bN, [cu]: bR, [ct]: o }, { [cv]: bO, [cu]: bR, [ct]: o }, { [cv]: bP, [cu]: bR, [ct]: o }, { [cv]: bQ, [cu]: bR, [ct]: o }, at], [ct]: o }], [ct]: o }, an], [ct]: o }, { [cv]: [ac, { [cw]: k, [cx]: bS, [cz]: s }, { [cw]: h, [cx]: [{ [cy]: s }, "--xa-s3"] }], [cu]: [ae, af, { [cv]: bF, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: bD, [cu]: [{ [cv]: bT, [cu]: bM, [ct]: o }, { [cv]: bU, [cu]: bM, [ct]: o }, { [cv]: bV, [cu]: bM, [ct]: o }, { [cv]: bW, [cu]: bM, [ct]: o }, { [cv]: bX, [cu]: bM, [ct]: o }, at], [ct]: o }, { [cv]: bT, [cu]: bR, [ct]: o }, { [cv]: bU, [cu]: bR, [ct]: o }, { [cv]: bV, [cu]: bR, [ct]: o }, { [cv]: bW, [cu]: bR, [ct]: o }, { [cv]: bX, [cu]: bR, [ct]: o }, at], [ct]: o }], [ct]: o }, an], [ct]: o }, { [cv]: [au, ao, ap], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: bC, endpoint: { [cA]: t, [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bH, endpoint: { [cA]: "https://s3express-control-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bI, endpoint: { [cA]: "https://s3express-control-fips.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bJ, endpoint: { [cA]: "https://s3express-control.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bK, endpoint: { [cA]: "https://s3express-control.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: al }, [ct]: n }], [ct]: o }], [ct]: o }, { [cv]: [ac, { [cw]: k, [cx]: [ad, 49, 50, c], [cz]: u }, { [cw]: k, [cx]: [ad, 8, 12, c], [cz]: v }, { [cw]: k, [cx]: bS, [cz]: w }, { [cw]: k, [cx]: [ad, 32, 49, c], [cz]: x }, { [cw]: g, [cx]: by, [cz]: "regionPartition" }, { [cw]: h, [cx]: [{ [cy]: w }, "--op-s3"] }], [cu]: [{ [cv]: bZ, [cu]: [{ [cv]: bF, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [av, "e"] }], [cu]: [{ [cv]: ca, [cu]: [aw, { [cv]: bC, endpoint: { [cA]: "https://{Bucket}.ec2.{url#authority}", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { endpoint: { [cA]: "https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { [cv]: [{ [cw]: h, [cx]: [av, "o"] }], [cu]: [{ [cv]: ca, [cu]: [aw, { [cv]: bC, endpoint: { [cA]: "https://{Bucket}.op-{outpostId}.{url#authority}", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { endpoint: { [cA]: "https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { error: "Unrecognized hardware type: \"Expected hardware type o or e but got {hardwareType}\"", [ct]: f }], [ct]: o }, { error: "Invalid Outposts Bucket alias - it must be a valid bucket name.", [ct]: f }], [ct]: o }, { error: "Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.", [ct]: f }], [ct]: o }, { [cv]: bY, [cu]: [{ [cv]: [Z, { [cw]: r, [cx]: [{ [cw]: d, [cx]: [{ [cw]: m, [cx]: bz }] }] }], error: "Custom endpoint `{Endpoint}` was not a valid URI", [ct]: f }, { [cv]: [ay, am], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cc, [cu]: [{ [cv]: [W, ab], error: "S3 Accelerate cannot be used in this region", [ct]: f }, { [cv]: [Y, X, aA, aq, aB], endpoint: { [cA]: "https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, X, aA, aq, aD, aE], [cu]: [{ endpoint: aF, [ct]: n }], [ct]: o }, { [cv]: [Y, X, aA, aq, aD, aH], endpoint: aF, [ct]: n }, { [cv]: [ar, X, aA, aq, aB], endpoint: { [cA]: "https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, X, aA, aq, aD, aE], [cu]: [{ endpoint: aI, [ct]: n }], [ct]: o }, { [cv]: [ar, X, aA, aq, aD, aH], endpoint: aI, [ct]: n }, { [cv]: [Y, as, W, aq, aB], endpoint: { [cA]: "https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, as, W, aq, aD, aE], [cu]: [{ endpoint: aJ, [ct]: n }], [ct]: o }, { [cv]: [Y, as, W, aq, aD, aH], endpoint: aJ, [ct]: n }, { [cv]: [Y, as, aA, aq, aB], endpoint: { [cA]: "https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, as, aA, aq, aD, aE], [cu]: [{ endpoint: aK, [ct]: n }], [ct]: o }, { [cv]: [Y, as, aA, aq, aD, aH], endpoint: aK, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, ah, aB], endpoint: { [cA]: C, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, aL, aB], endpoint: { [cA]: q, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, ah, aD, aE], [cu]: [{ [cv]: cd, endpoint: aM, [ct]: n }, { endpoint: aM, [ct]: n }], [ct]: o }, { [cv]: [ar, as, aA, Z, ag, aL, aD, aE], [cu]: [{ [cv]: cd, endpoint: aN, [ct]: n }, aO], [ct]: o }, { [cv]: [ar, as, aA, Z, ag, ah, aD, aH], endpoint: aM, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, aL, aD, aH], endpoint: aN, [ct]: n }, { [cv]: [ar, as, W, aq, aB], endpoint: { [cA]: D, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, W, aq, aD, aE], [cu]: [{ [cv]: cd, endpoint: aP, [ct]: n }, { endpoint: aP, [ct]: n }], [ct]: o }, { [cv]: [ar, as, W, aq, aD, aH], endpoint: aP, [ct]: n }, { [cv]: [ar, as, aA, aq, aB], endpoint: { [cA]: E, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, aA, aq, aD, aE], [cu]: [{ [cv]: cd, endpoint: { [cA]: E, [cB]: aG, [cH]: al }, [ct]: n }, { endpoint: aQ, [ct]: n }], [ct]: o }, { [cv]: [ar, as, aA, aq, aD, aH], endpoint: aQ, [ct]: n }], [ct]: o }, aR], [ct]: o }], [ct]: o }, { [cv]: [Z, ag, { [cw]: h, [cx]: [{ [cw]: i, [cx]: [ai, "scheme"] }, "http"] }, { [cw]: p, [cx]: [ad, c] }, ay, as, ar, aA], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cc, [cu]: [aO], [ct]: o }, aR], [ct]: o }], [ct]: o }, { [cv]: [ay, { [cw]: F, [cx]: bA, [cz]: G }], [cu]: [{ [cv]: [{ [cw]: i, [cx]: [aS, "resourceId[0]"], [cz]: H }, { [cw]: r, [cx]: [{ [cw]: h, [cx]: [aT, I] }] }], [cu]: [{ [cv]: [{ [cw]: h, [cx]: [aU, J] }], [cu]: [{ [cv]: ce, [cu]: [{ [cv]: cf, [cu]: [aW, aX, { [cv]: ci, [cu]: [aY, { [cv]: cj, [cu]: [aZ, { [cv]: cl, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cm, [cu]: [{ [cv]: cn, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [bb, I] }], error: "Invalid ARN: Missing account id", [ct]: f }, { [cv]: co, [cu]: [{ [cv]: cp, [cu]: [{ [cv]: bC, endpoint: { [cA]: M, [cB]: bc, [cH]: al }, [ct]: n }, { [cv]: cq, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bc, [cH]: al }, [ct]: n }, { endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bc, [cH]: al }, [ct]: n }], [ct]: o }, bd], [ct]: o }, be], [ct]: o }, bf], [ct]: o }, bg], [ct]: o }], [ct]: o }], [ct]: o }, bh], [ct]: o }, { error: "Invalid ARN: bucket ARN is missing a region", [ct]: f }], [ct]: o }, bi], [ct]: o }, { error: "Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`", [ct]: f }], [ct]: o }, { [cv]: ce, [cu]: [{ [cv]: cf, [cu]: [{ [cv]: ci, [cu]: [{ [cv]: ce, [cu]: [{ [cv]: ci, [cu]: [aY, { [cv]: cj, [cu]: [aZ, { [cv]: cl, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [ba, "{partitionResult#name}"] }], [cu]: [{ [cv]: cn, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [aU, B] }], [cu]: [{ [cv]: co, [cu]: [{ [cv]: cp, [cu]: [{ [cv]: bB, error: "Access Points do not support S3 Accelerate", [ct]: f }, { [cv]: bH, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: bI, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: bJ, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: [as, ar, Z, ag], endpoint: { [cA]: M, [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: bK, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bj, [cH]: al }, [ct]: n }], [ct]: o }, bd], [ct]: o }, be], [ct]: o }, { error: "Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}", [ct]: f }], [ct]: o }, bf], [ct]: o }, bg], [ct]: o }], [ct]: o }], [ct]: o }, bh], [ct]: o }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: y, [cx]: [aV, c] }], [cu]: [{ [cv]: ch, error: "S3 MRAP does not support dual-stack", [ct]: f }, { [cv]: cq, error: "S3 MRAP does not support FIPS", [ct]: f }, { [cv]: bB, error: "S3 MRAP does not support S3 Accelerate", [ct]: f }, { [cv]: [{ [cw]: e, [cx]: [{ [cy]: "DisableMultiRegionAccessPoints" }, c] }], error: "Invalid configuration: Multi-Region Access Point ARNs are disabled.", [ct]: f }, { [cv]: [{ [cw]: g, [cx]: by, [cz]: N }], [cu]: [{ [cv]: [{ [cw]: h, [cx]: [{ [cw]: i, [cx]: [{ [cy]: N }, j] }, { [cw]: i, [cx]: [aS, "partition"] }] }], [cu]: [{ endpoint: { [cA]: "https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}", [cB]: { [cD]: [{ [cE]: c, name: z, [cF]: B, [cI]: cb }] }, [cH]: al }, [ct]: n }], [ct]: o }, { error: "Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`", [ct]: f }], [ct]: o }], [ct]: o }, { error: "Invalid Access Point Name", [ct]: f }], [ct]: o }, bi], [ct]: o }, { [cv]: [{ [cw]: h, [cx]: [aU, A] }], [cu]: [{ [cv]: ch, error: "S3 Outposts does not support Dual-stack", [ct]: f }, { [cv]: cq, error: "S3 Outposts does not support FIPS", [ct]: f }, { [cv]: bB, error: "S3 Outposts does not support S3 Accelerate", [ct]: f }, { [cv]: [{ [cw]: d, [cx]: [{ [cw]: i, [cx]: [aS, "resourceId[4]"] }] }], error: "Invalid Arn: Outpost Access Point ARN contains sub resources", [ct]: f }, { [cv]: [{ [cw]: i, [cx]: cg, [cz]: x }], [cu]: [{ [cv]: bZ, [cu]: [aZ, { [cv]: cl, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cm, [cu]: [{ [cv]: cn, [cu]: [{ [cv]: co, [cu]: [{ [cv]: [{ [cw]: i, [cx]: ck, [cz]: O }], [cu]: [{ [cv]: [{ [cw]: i, [cx]: [aS, "resourceId[3]"], [cz]: L }], [cu]: [{ [cv]: [{ [cw]: h, [cx]: [{ [cy]: O }, K] }], [cu]: [{ [cv]: bC, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}", [cB]: bk, [cH]: al }, [ct]: n }, { endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bk, [cH]: al }, [ct]: n }], [ct]: o }, { error: "Expected an outpost type `accesspoint`, found {outpostType}", [ct]: f }], [ct]: o }, { error: "Invalid ARN: expected an access point name", [ct]: f }], [ct]: o }, { error: "Invalid ARN: Expected a 4-component resource", [ct]: f }], [ct]: o }, be], [ct]: o }, bf], [ct]: o }, bg], [ct]: o }], [ct]: o }], [ct]: o }, { error: "Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`", [ct]: f }], [ct]: o }, { error: "Invalid ARN: The Outpost Id was not set", [ct]: f }], [ct]: o }, { error: "Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})", [ct]: f }], [ct]: o }, { error: "Invalid ARN: No ARN type specified", [ct]: f }], [ct]: o }, { [cv]: [{ [cw]: k, [cx]: [ad, 0, 4, b], [cz]: P }, { [cw]: h, [cx]: [{ [cy]: P }, "arn:"] }, { [cw]: r, [cx]: [{ [cw]: d, [cx]: [bl] }] }], error: "Invalid ARN: `{Bucket}` was not a valid ARN", [ct]: f }, { [cv]: [{ [cw]: e, [cx]: [az, c] }, bl], error: "Path-style addressing cannot be used with ARN buckets", [ct]: f }, { [cv]: bE, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: [aA], [cu]: [{ [cv]: [Y, aq, X, aB], endpoint: { [cA]: "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, aq, X, aD, aE], [cu]: [{ endpoint: bm, [ct]: n }], [ct]: o }, { [cv]: [Y, aq, X, aD, aH], endpoint: bm, [ct]: n }, { [cv]: [ar, aq, X, aB], endpoint: { [cA]: "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, aq, X, aD, aE], [cu]: [{ endpoint: bn, [ct]: n }], [ct]: o }, { [cv]: [ar, aq, X, aD, aH], endpoint: bn, [ct]: n }, { [cv]: [Y, aq, as, aB], endpoint: { [cA]: "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, aq, as, aD, aE], [cu]: [{ endpoint: bo, [ct]: n }], [ct]: o }, { [cv]: [Y, aq, as, aD, aH], endpoint: bo, [ct]: n }, { [cv]: [ar, Z, ag, as, aB], endpoint: { [cA]: Q, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, Z, ag, as, aD, aE], [cu]: [{ [cv]: cd, endpoint: bp, [ct]: n }, { endpoint: bp, [ct]: n }], [ct]: o }, { [cv]: [ar, Z, ag, as, aD, aH], endpoint: bp, [ct]: n }, { [cv]: [ar, aq, as, aB], endpoint: { [cA]: R, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, aq, as, aD, aE], [cu]: [{ [cv]: cd, endpoint: { [cA]: R, [cB]: aG, [cH]: al }, [ct]: n }, { endpoint: bq, [ct]: n }], [ct]: o }, { [cv]: [ar, aq, as, aD, aH], endpoint: bq, [ct]: n }], [ct]: o }, { error: "Path-style addressing cannot be used with S3 Accelerate", [ct]: f }], [ct]: o }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: d, [cx]: [br] }, { [cw]: e, [cx]: [br, c] }], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cr, [cu]: [aW, aX, { [cv]: bC, endpoint: { [cA]: t, [cB]: bs, [cH]: al }, [ct]: n }, { [cv]: cq, endpoint: { [cA]: "https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}", [cB]: bs, [cH]: al }, [ct]: n }, { endpoint: { [cA]: "https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}", [cB]: bs, [cH]: al }, [ct]: n }], [ct]: o }, aR], [ct]: o }], [ct]: o }, { [cv]: [au], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cr, [cu]: [{ [cv]: [X, Y, aq, aB], endpoint: { [cA]: "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [X, Y, aq, aD, aE], [cu]: [{ endpoint: bt, [ct]: n }], [ct]: o }, { [cv]: [X, Y, aq, aD, aH], endpoint: bt, [ct]: n }, { [cv]: [X, ar, aq, aB], endpoint: { [cA]: "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [X, ar, aq, aD, aE], [cu]: [{ endpoint: bu, [ct]: n }], [ct]: o }, { [cv]: [X, ar, aq, aD, aH], endpoint: bu, [ct]: n }, { [cv]: [as, Y, aq, aB], endpoint: { [cA]: "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [as, Y, aq, aD, aE], [cu]: [{ endpoint: bv, [ct]: n }], [ct]: o }, { [cv]: [as, Y, aq, aD, aH], endpoint: bv, [ct]: n }, { [cv]: [as, ar, Z, ag, aB], endpoint: { [cA]: t, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [as, ar, Z, ag, aD, aE], [cu]: [{ [cv]: cd, endpoint: bw, [ct]: n }, { endpoint: bw, [ct]: n }], [ct]: o }, { [cv]: [as, ar, Z, ag, aD, aH], endpoint: bw, [ct]: n }, { [cv]: [as, ar, aq, aB], endpoint: { [cA]: S, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [as, ar, aq, aD, aE], [cu]: [{ [cv]: cd, endpoint: { [cA]: S, [cB]: aG, [cH]: al }, [ct]: n }, { endpoint: bx, [ct]: n }], [ct]: o }, { [cv]: [as, ar, aq, aD, aH], endpoint: bx, [ct]: n }], [ct]: o }, aR], [ct]: o }], [ct]: o }], [ct]: o }, { error: "A region must be set when sending requests to S3.", [ct]: f }] }; +exports.ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/index.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/index.js new file mode 100644 index 0000000..d6a42c2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/index.js @@ -0,0 +1,3058 @@ +'use strict'; + +var middlewareExpectContinue = require('@aws-sdk/middleware-expect-continue'); +var middlewareFlexibleChecksums = require('@aws-sdk/middleware-flexible-checksums'); +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareSdkS3 = require('@aws-sdk/middleware-sdk-s3'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var eventstreamSerdeConfigResolver = require('@smithy/eventstream-serde-config-resolver'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var schemas_0 = require('./schemas/schemas_0'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var middlewareSsec = require('@aws-sdk/middleware-ssec'); +var middlewareLocationConstraint = require('@aws-sdk/middleware-location-constraint'); +var utilWaiter = require('@smithy/util-waiter'); +var errors = require('./models/errors'); +var S3ServiceException = require('./models/S3ServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useFipsEndpoint: options.useFipsEndpoint ?? false, + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + forcePathStyle: options.forcePathStyle ?? false, + useAccelerateEndpoint: options.useAccelerateEndpoint ?? false, + useGlobalEndpoint: options.useGlobalEndpoint ?? false, + disableMultiregionAccessPoints: options.disableMultiregionAccessPoints ?? false, + defaultSigningName: "s3", + clientContextParams: options.clientContextParams ?? {}, + }); +}; +const commonParams = { + ForcePathStyle: { type: "clientContextParams", name: "forcePathStyle" }, + UseArnRegion: { type: "clientContextParams", name: "useArnRegion" }, + DisableMultiRegionAccessPoints: { type: "clientContextParams", name: "disableMultiregionAccessPoints" }, + Accelerate: { type: "clientContextParams", name: "useAccelerateEndpoint" }, + DisableS3ExpressSessionAuth: { type: "clientContextParams", name: "disableS3ExpressSessionAuth" }, + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +class CreateSessionCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + DisableS3ExpressSessionAuth: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "CreateSession", {}) + .n("S3Client", "CreateSessionCommand") + .sc(schemas_0.CreateSession$) + .build() { +} + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class S3Client extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareFlexibleChecksums.resolveFlexibleChecksumsConfig(_config_2); + const _config_4 = middlewareRetry.resolveRetryConfig(_config_3); + const _config_5 = configResolver.resolveRegionConfig(_config_4); + const _config_6 = middlewareHostHeader.resolveHostHeaderConfig(_config_5); + const _config_7 = middlewareEndpoint.resolveEndpointConfig(_config_6); + const _config_8 = eventstreamSerdeConfigResolver.resolveEventStreamSerdeConfig(_config_7); + const _config_9 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_8); + const _config_10 = middlewareSdkS3.resolveS3Config(_config_9, { session: [() => this, CreateSessionCommand] }); + const _config_11 = resolveRuntimeExtensions(_config_10, configuration?.extensions || []); + this.config = _config_11; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultS3HttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + "aws.auth#sigv4a": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + this.middlewareStack.use(middlewareSdkS3.getValidateBucketNamePlugin(this.config)); + this.middlewareStack.use(middlewareExpectContinue.getAddExpectContinuePlugin(this.config)); + this.middlewareStack.use(middlewareSdkS3.getRegionRedirectMiddlewarePlugin(this.config)); + this.middlewareStack.use(middlewareSdkS3.getS3ExpressPlugin(this.config)); + this.middlewareStack.use(middlewareSdkS3.getS3ExpressHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class AbortMultipartUploadCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "AbortMultipartUpload", {}) + .n("S3Client", "AbortMultipartUploadCommand") + .sc(schemas_0.AbortMultipartUpload$) + .build() { +} + +class CompleteMultipartUploadCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "CompleteMultipartUpload", {}) + .n("S3Client", "CompleteMultipartUploadCommand") + .sc(schemas_0.CompleteMultipartUpload$) + .build() { +} + +class CopyObjectCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + DisableS3ExpressSessionAuth: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, + CopySource: { type: "contextParams", name: "CopySource" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "CopyObject", {}) + .n("S3Client", "CopyObjectCommand") + .sc(schemas_0.CopyObject$) + .build() { +} + +class CreateBucketCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + DisableAccessPoints: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareLocationConstraint.getLocationConstraintPlugin(config), + ]; +}) + .s("AmazonS3", "CreateBucket", {}) + .n("S3Client", "CreateBucketCommand") + .sc(schemas_0.CreateBucket$) + .build() { +} + +class CreateBucketMetadataConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "CreateBucketMetadataConfiguration", {}) + .n("S3Client", "CreateBucketMetadataConfigurationCommand") + .sc(schemas_0.CreateBucketMetadataConfiguration$) + .build() { +} + +class CreateBucketMetadataTableConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "CreateBucketMetadataTableConfiguration", {}) + .n("S3Client", "CreateBucketMetadataTableConfigurationCommand") + .sc(schemas_0.CreateBucketMetadataTableConfiguration$) + .build() { +} + +class CreateMultipartUploadCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "CreateMultipartUpload", {}) + .n("S3Client", "CreateMultipartUploadCommand") + .sc(schemas_0.CreateMultipartUpload$) + .build() { +} + +class DeleteBucketAnalyticsConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketAnalyticsConfiguration", {}) + .n("S3Client", "DeleteBucketAnalyticsConfigurationCommand") + .sc(schemas_0.DeleteBucketAnalyticsConfiguration$) + .build() { +} + +class DeleteBucketCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucket", {}) + .n("S3Client", "DeleteBucketCommand") + .sc(schemas_0.DeleteBucket$) + .build() { +} + +class DeleteBucketCorsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketCors", {}) + .n("S3Client", "DeleteBucketCorsCommand") + .sc(schemas_0.DeleteBucketCors$) + .build() { +} + +class DeleteBucketEncryptionCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketEncryption", {}) + .n("S3Client", "DeleteBucketEncryptionCommand") + .sc(schemas_0.DeleteBucketEncryption$) + .build() { +} + +class DeleteBucketIntelligentTieringConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketIntelligentTieringConfiguration", {}) + .n("S3Client", "DeleteBucketIntelligentTieringConfigurationCommand") + .sc(schemas_0.DeleteBucketIntelligentTieringConfiguration$) + .build() { +} + +class DeleteBucketInventoryConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketInventoryConfiguration", {}) + .n("S3Client", "DeleteBucketInventoryConfigurationCommand") + .sc(schemas_0.DeleteBucketInventoryConfiguration$) + .build() { +} + +class DeleteBucketLifecycleCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketLifecycle", {}) + .n("S3Client", "DeleteBucketLifecycleCommand") + .sc(schemas_0.DeleteBucketLifecycle$) + .build() { +} + +class DeleteBucketMetadataConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketMetadataConfiguration", {}) + .n("S3Client", "DeleteBucketMetadataConfigurationCommand") + .sc(schemas_0.DeleteBucketMetadataConfiguration$) + .build() { +} + +class DeleteBucketMetadataTableConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketMetadataTableConfiguration", {}) + .n("S3Client", "DeleteBucketMetadataTableConfigurationCommand") + .sc(schemas_0.DeleteBucketMetadataTableConfiguration$) + .build() { +} + +class DeleteBucketMetricsConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketMetricsConfiguration", {}) + .n("S3Client", "DeleteBucketMetricsConfigurationCommand") + .sc(schemas_0.DeleteBucketMetricsConfiguration$) + .build() { +} + +class DeleteBucketOwnershipControlsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketOwnershipControls", {}) + .n("S3Client", "DeleteBucketOwnershipControlsCommand") + .sc(schemas_0.DeleteBucketOwnershipControls$) + .build() { +} + +class DeleteBucketPolicyCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketPolicy", {}) + .n("S3Client", "DeleteBucketPolicyCommand") + .sc(schemas_0.DeleteBucketPolicy$) + .build() { +} + +class DeleteBucketReplicationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketReplication", {}) + .n("S3Client", "DeleteBucketReplicationCommand") + .sc(schemas_0.DeleteBucketReplication$) + .build() { +} + +class DeleteBucketTaggingCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketTagging", {}) + .n("S3Client", "DeleteBucketTaggingCommand") + .sc(schemas_0.DeleteBucketTagging$) + .build() { +} + +class DeleteBucketWebsiteCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketWebsite", {}) + .n("S3Client", "DeleteBucketWebsiteCommand") + .sc(schemas_0.DeleteBucketWebsite$) + .build() { +} + +class DeleteObjectCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "DeleteObject", {}) + .n("S3Client", "DeleteObjectCommand") + .sc(schemas_0.DeleteObject$) + .build() { +} + +class DeleteObjectsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "DeleteObjects", {}) + .n("S3Client", "DeleteObjectsCommand") + .sc(schemas_0.DeleteObjects$) + .build() { +} + +class DeleteObjectTaggingCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "DeleteObjectTagging", {}) + .n("S3Client", "DeleteObjectTaggingCommand") + .sc(schemas_0.DeleteObjectTagging$) + .build() { +} + +class DeletePublicAccessBlockCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeletePublicAccessBlock", {}) + .n("S3Client", "DeletePublicAccessBlockCommand") + .sc(schemas_0.DeletePublicAccessBlock$) + .build() { +} + +class GetBucketAbacCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketAbac", {}) + .n("S3Client", "GetBucketAbacCommand") + .sc(schemas_0.GetBucketAbac$) + .build() { +} + +class GetBucketAccelerateConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketAccelerateConfiguration", {}) + .n("S3Client", "GetBucketAccelerateConfigurationCommand") + .sc(schemas_0.GetBucketAccelerateConfiguration$) + .build() { +} + +class GetBucketAclCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketAcl", {}) + .n("S3Client", "GetBucketAclCommand") + .sc(schemas_0.GetBucketAcl$) + .build() { +} + +class GetBucketAnalyticsConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketAnalyticsConfiguration", {}) + .n("S3Client", "GetBucketAnalyticsConfigurationCommand") + .sc(schemas_0.GetBucketAnalyticsConfiguration$) + .build() { +} + +class GetBucketCorsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketCors", {}) + .n("S3Client", "GetBucketCorsCommand") + .sc(schemas_0.GetBucketCors$) + .build() { +} + +class GetBucketEncryptionCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketEncryption", {}) + .n("S3Client", "GetBucketEncryptionCommand") + .sc(schemas_0.GetBucketEncryption$) + .build() { +} + +class GetBucketIntelligentTieringConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketIntelligentTieringConfiguration", {}) + .n("S3Client", "GetBucketIntelligentTieringConfigurationCommand") + .sc(schemas_0.GetBucketIntelligentTieringConfiguration$) + .build() { +} + +class GetBucketInventoryConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketInventoryConfiguration", {}) + .n("S3Client", "GetBucketInventoryConfigurationCommand") + .sc(schemas_0.GetBucketInventoryConfiguration$) + .build() { +} + +class GetBucketLifecycleConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketLifecycleConfiguration", {}) + .n("S3Client", "GetBucketLifecycleConfigurationCommand") + .sc(schemas_0.GetBucketLifecycleConfiguration$) + .build() { +} + +class GetBucketLocationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketLocation", {}) + .n("S3Client", "GetBucketLocationCommand") + .sc(schemas_0.GetBucketLocation$) + .build() { +} + +class GetBucketLoggingCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketLogging", {}) + .n("S3Client", "GetBucketLoggingCommand") + .sc(schemas_0.GetBucketLogging$) + .build() { +} + +class GetBucketMetadataConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketMetadataConfiguration", {}) + .n("S3Client", "GetBucketMetadataConfigurationCommand") + .sc(schemas_0.GetBucketMetadataConfiguration$) + .build() { +} + +class GetBucketMetadataTableConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketMetadataTableConfiguration", {}) + .n("S3Client", "GetBucketMetadataTableConfigurationCommand") + .sc(schemas_0.GetBucketMetadataTableConfiguration$) + .build() { +} + +class GetBucketMetricsConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketMetricsConfiguration", {}) + .n("S3Client", "GetBucketMetricsConfigurationCommand") + .sc(schemas_0.GetBucketMetricsConfiguration$) + .build() { +} + +class GetBucketNotificationConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketNotificationConfiguration", {}) + .n("S3Client", "GetBucketNotificationConfigurationCommand") + .sc(schemas_0.GetBucketNotificationConfiguration$) + .build() { +} + +class GetBucketOwnershipControlsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketOwnershipControls", {}) + .n("S3Client", "GetBucketOwnershipControlsCommand") + .sc(schemas_0.GetBucketOwnershipControls$) + .build() { +} + +class GetBucketPolicyCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketPolicy", {}) + .n("S3Client", "GetBucketPolicyCommand") + .sc(schemas_0.GetBucketPolicy$) + .build() { +} + +class GetBucketPolicyStatusCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketPolicyStatus", {}) + .n("S3Client", "GetBucketPolicyStatusCommand") + .sc(schemas_0.GetBucketPolicyStatus$) + .build() { +} + +class GetBucketReplicationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketReplication", {}) + .n("S3Client", "GetBucketReplicationCommand") + .sc(schemas_0.GetBucketReplication$) + .build() { +} + +class GetBucketRequestPaymentCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketRequestPayment", {}) + .n("S3Client", "GetBucketRequestPaymentCommand") + .sc(schemas_0.GetBucketRequestPayment$) + .build() { +} + +class GetBucketTaggingCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketTagging", {}) + .n("S3Client", "GetBucketTaggingCommand") + .sc(schemas_0.GetBucketTagging$) + .build() { +} + +class GetBucketVersioningCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketVersioning", {}) + .n("S3Client", "GetBucketVersioningCommand") + .sc(schemas_0.GetBucketVersioning$) + .build() { +} + +class GetBucketWebsiteCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketWebsite", {}) + .n("S3Client", "GetBucketWebsiteCommand") + .sc(schemas_0.GetBucketWebsite$) + .build() { +} + +class GetObjectAclCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectAcl", {}) + .n("S3Client", "GetObjectAclCommand") + .sc(schemas_0.GetObjectAcl$) + .build() { +} + +class GetObjectAttributesCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectAttributes", {}) + .n("S3Client", "GetObjectAttributesCommand") + .sc(schemas_0.GetObjectAttributes$) + .build() { +} + +class GetObjectCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestChecksumRequired: false, + requestValidationModeMember: 'ChecksumMode', + 'responseAlgorithms': ['CRC64NVME', 'CRC32', 'CRC32C', 'SHA256', 'SHA1'], + }), + middlewareSsec.getSsecPlugin(config), + middlewareSdkS3.getS3ExpiresMiddlewarePlugin(config), + ]; +}) + .s("AmazonS3", "GetObject", {}) + .n("S3Client", "GetObjectCommand") + .sc(schemas_0.GetObject$) + .build() { +} + +class GetObjectLegalHoldCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectLegalHold", {}) + .n("S3Client", "GetObjectLegalHoldCommand") + .sc(schemas_0.GetObjectLegalHold$) + .build() { +} + +class GetObjectLockConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectLockConfiguration", {}) + .n("S3Client", "GetObjectLockConfigurationCommand") + .sc(schemas_0.GetObjectLockConfiguration$) + .build() { +} + +class GetObjectRetentionCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectRetention", {}) + .n("S3Client", "GetObjectRetentionCommand") + .sc(schemas_0.GetObjectRetention$) + .build() { +} + +class GetObjectTaggingCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectTagging", {}) + .n("S3Client", "GetObjectTaggingCommand") + .sc(schemas_0.GetObjectTagging$) + .build() { +} + +class GetObjectTorrentCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "GetObjectTorrent", {}) + .n("S3Client", "GetObjectTorrentCommand") + .sc(schemas_0.GetObjectTorrent$) + .build() { +} + +class GetPublicAccessBlockCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetPublicAccessBlock", {}) + .n("S3Client", "GetPublicAccessBlockCommand") + .sc(schemas_0.GetPublicAccessBlock$) + .build() { +} + +class HeadBucketCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "HeadBucket", {}) + .n("S3Client", "HeadBucketCommand") + .sc(schemas_0.HeadBucket$) + .build() { +} + +class HeadObjectCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + middlewareSdkS3.getS3ExpiresMiddlewarePlugin(config), + ]; +}) + .s("AmazonS3", "HeadObject", {}) + .n("S3Client", "HeadObjectCommand") + .sc(schemas_0.HeadObject$) + .build() { +} + +class ListBucketAnalyticsConfigurationsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBucketAnalyticsConfigurations", {}) + .n("S3Client", "ListBucketAnalyticsConfigurationsCommand") + .sc(schemas_0.ListBucketAnalyticsConfigurations$) + .build() { +} + +class ListBucketIntelligentTieringConfigurationsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBucketIntelligentTieringConfigurations", {}) + .n("S3Client", "ListBucketIntelligentTieringConfigurationsCommand") + .sc(schemas_0.ListBucketIntelligentTieringConfigurations$) + .build() { +} + +class ListBucketInventoryConfigurationsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBucketInventoryConfigurations", {}) + .n("S3Client", "ListBucketInventoryConfigurationsCommand") + .sc(schemas_0.ListBucketInventoryConfigurations$) + .build() { +} + +class ListBucketMetricsConfigurationsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBucketMetricsConfigurations", {}) + .n("S3Client", "ListBucketMetricsConfigurationsCommand") + .sc(schemas_0.ListBucketMetricsConfigurations$) + .build() { +} + +class ListBucketsCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBuckets", {}) + .n("S3Client", "ListBucketsCommand") + .sc(schemas_0.ListBuckets$) + .build() { +} + +class ListDirectoryBucketsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListDirectoryBuckets", {}) + .n("S3Client", "ListDirectoryBucketsCommand") + .sc(schemas_0.ListDirectoryBuckets$) + .build() { +} + +class ListMultipartUploadsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Prefix: { type: "contextParams", name: "Prefix" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListMultipartUploads", {}) + .n("S3Client", "ListMultipartUploadsCommand") + .sc(schemas_0.ListMultipartUploads$) + .build() { +} + +class ListObjectsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Prefix: { type: "contextParams", name: "Prefix" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListObjects", {}) + .n("S3Client", "ListObjectsCommand") + .sc(schemas_0.ListObjects$) + .build() { +} + +class ListObjectsV2Command extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Prefix: { type: "contextParams", name: "Prefix" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListObjectsV2", {}) + .n("S3Client", "ListObjectsV2Command") + .sc(schemas_0.ListObjectsV2$) + .build() { +} + +class ListObjectVersionsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Prefix: { type: "contextParams", name: "Prefix" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListObjectVersions", {}) + .n("S3Client", "ListObjectVersionsCommand") + .sc(schemas_0.ListObjectVersions$) + .build() { +} + +class ListPartsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "ListParts", {}) + .n("S3Client", "ListPartsCommand") + .sc(schemas_0.ListParts$) + .build() { +} + +class PutBucketAbacCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + ]; +}) + .s("AmazonS3", "PutBucketAbac", {}) + .n("S3Client", "PutBucketAbacCommand") + .sc(schemas_0.PutBucketAbac$) + .build() { +} + +class PutBucketAccelerateConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + ]; +}) + .s("AmazonS3", "PutBucketAccelerateConfiguration", {}) + .n("S3Client", "PutBucketAccelerateConfigurationCommand") + .sc(schemas_0.PutBucketAccelerateConfiguration$) + .build() { +} + +class PutBucketAclCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketAcl", {}) + .n("S3Client", "PutBucketAclCommand") + .sc(schemas_0.PutBucketAcl$) + .build() { +} + +class PutBucketAnalyticsConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketAnalyticsConfiguration", {}) + .n("S3Client", "PutBucketAnalyticsConfigurationCommand") + .sc(schemas_0.PutBucketAnalyticsConfiguration$) + .build() { +} + +class PutBucketCorsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketCors", {}) + .n("S3Client", "PutBucketCorsCommand") + .sc(schemas_0.PutBucketCors$) + .build() { +} + +class PutBucketEncryptionCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketEncryption", {}) + .n("S3Client", "PutBucketEncryptionCommand") + .sc(schemas_0.PutBucketEncryption$) + .build() { +} + +class PutBucketIntelligentTieringConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketIntelligentTieringConfiguration", {}) + .n("S3Client", "PutBucketIntelligentTieringConfigurationCommand") + .sc(schemas_0.PutBucketIntelligentTieringConfiguration$) + .build() { +} + +class PutBucketInventoryConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketInventoryConfiguration", {}) + .n("S3Client", "PutBucketInventoryConfigurationCommand") + .sc(schemas_0.PutBucketInventoryConfiguration$) + .build() { +} + +class PutBucketLifecycleConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutBucketLifecycleConfiguration", {}) + .n("S3Client", "PutBucketLifecycleConfigurationCommand") + .sc(schemas_0.PutBucketLifecycleConfiguration$) + .build() { +} + +class PutBucketLoggingCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketLogging", {}) + .n("S3Client", "PutBucketLoggingCommand") + .sc(schemas_0.PutBucketLogging$) + .build() { +} + +class PutBucketMetricsConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketMetricsConfiguration", {}) + .n("S3Client", "PutBucketMetricsConfigurationCommand") + .sc(schemas_0.PutBucketMetricsConfiguration$) + .build() { +} + +class PutBucketNotificationConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketNotificationConfiguration", {}) + .n("S3Client", "PutBucketNotificationConfigurationCommand") + .sc(schemas_0.PutBucketNotificationConfiguration$) + .build() { +} + +class PutBucketOwnershipControlsCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketOwnershipControls", {}) + .n("S3Client", "PutBucketOwnershipControlsCommand") + .sc(schemas_0.PutBucketOwnershipControls$) + .build() { +} + +class PutBucketPolicyCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketPolicy", {}) + .n("S3Client", "PutBucketPolicyCommand") + .sc(schemas_0.PutBucketPolicy$) + .build() { +} + +class PutBucketReplicationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketReplication", {}) + .n("S3Client", "PutBucketReplicationCommand") + .sc(schemas_0.PutBucketReplication$) + .build() { +} + +class PutBucketRequestPaymentCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketRequestPayment", {}) + .n("S3Client", "PutBucketRequestPaymentCommand") + .sc(schemas_0.PutBucketRequestPayment$) + .build() { +} + +class PutBucketTaggingCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketTagging", {}) + .n("S3Client", "PutBucketTaggingCommand") + .sc(schemas_0.PutBucketTagging$) + .build() { +} + +class PutBucketVersioningCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketVersioning", {}) + .n("S3Client", "PutBucketVersioningCommand") + .sc(schemas_0.PutBucketVersioning$) + .build() { +} + +class PutBucketWebsiteCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketWebsite", {}) + .n("S3Client", "PutBucketWebsiteCommand") + .sc(schemas_0.PutBucketWebsite$) + .build() { +} + +class PutObjectAclCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectAcl", {}) + .n("S3Client", "PutObjectAclCommand") + .sc(schemas_0.PutObjectAcl$) + .build() { +} + +class PutObjectCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + middlewareSdkS3.getCheckContentLengthHeaderPlugin(config), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "PutObject", {}) + .n("S3Client", "PutObjectCommand") + .sc(schemas_0.PutObject$) + .build() { +} + +class PutObjectLegalHoldCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectLegalHold", {}) + .n("S3Client", "PutObjectLegalHoldCommand") + .sc(schemas_0.PutObjectLegalHold$) + .build() { +} + +class PutObjectLockConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectLockConfiguration", {}) + .n("S3Client", "PutObjectLockConfigurationCommand") + .sc(schemas_0.PutObjectLockConfiguration$) + .build() { +} + +class PutObjectRetentionCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectRetention", {}) + .n("S3Client", "PutObjectRetentionCommand") + .sc(schemas_0.PutObjectRetention$) + .build() { +} + +class PutObjectTaggingCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectTagging", {}) + .n("S3Client", "PutObjectTaggingCommand") + .sc(schemas_0.PutObjectTagging$) + .build() { +} + +class PutPublicAccessBlockCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutPublicAccessBlock", {}) + .n("S3Client", "PutPublicAccessBlockCommand") + .sc(schemas_0.PutPublicAccessBlock$) + .build() { +} + +class RenameObjectCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "RenameObject", {}) + .n("S3Client", "RenameObjectCommand") + .sc(schemas_0.RenameObject$) + .build() { +} + +class RestoreObjectCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "RestoreObject", {}) + .n("S3Client", "RestoreObjectCommand") + .sc(schemas_0.RestoreObject$) + .build() { +} + +class SelectObjectContentCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "SelectObjectContent", { + eventStream: { + output: true, + }, +}) + .n("S3Client", "SelectObjectContentCommand") + .sc(schemas_0.SelectObjectContent$) + .build() { +} + +class UpdateBucketMetadataInventoryTableConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "UpdateBucketMetadataInventoryTableConfiguration", {}) + .n("S3Client", "UpdateBucketMetadataInventoryTableConfigurationCommand") + .sc(schemas_0.UpdateBucketMetadataInventoryTableConfiguration$) + .build() { +} + +class UpdateBucketMetadataJournalTableConfigurationCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "UpdateBucketMetadataJournalTableConfiguration", {}) + .n("S3Client", "UpdateBucketMetadataJournalTableConfigurationCommand") + .sc(schemas_0.UpdateBucketMetadataJournalTableConfiguration$) + .build() { +} + +class UpdateObjectEncryptionCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "UpdateObjectEncryption", {}) + .n("S3Client", "UpdateObjectEncryptionCommand") + .sc(schemas_0.UpdateObjectEncryption$) + .build() { +} + +class UploadPartCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareFlexibleChecksums.getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "UploadPart", {}) + .n("S3Client", "UploadPartCommand") + .sc(schemas_0.UploadPart$) + .build() { +} + +class UploadPartCopyCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + DisableS3ExpressSessionAuth: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + middlewareSdkS3.getThrow200ExceptionsPlugin(config), + middlewareSsec.getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "UploadPartCopy", {}) + .n("S3Client", "UploadPartCopyCommand") + .sc(schemas_0.UploadPartCopy$) + .build() { +} + +class WriteGetObjectResponseCommand extends smithyClient.Command + .classBuilder() + .ep({ + ...commonParams, + UseObjectLambdaEndpoint: { type: "staticContextParams", value: true }, +}) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "WriteGetObjectResponse", {}) + .n("S3Client", "WriteGetObjectResponseCommand") + .sc(schemas_0.WriteGetObjectResponse$) + .build() { +} + +const paginateListBuckets = core.createPaginator(S3Client, ListBucketsCommand, "ContinuationToken", "ContinuationToken", "MaxBuckets"); + +const paginateListDirectoryBuckets = core.createPaginator(S3Client, ListDirectoryBucketsCommand, "ContinuationToken", "ContinuationToken", "MaxDirectoryBuckets"); + +const paginateListObjectsV2 = core.createPaginator(S3Client, ListObjectsV2Command, "ContinuationToken", "NextContinuationToken", "MaxKeys"); + +const paginateListParts = core.createPaginator(S3Client, ListPartsCommand, "PartNumberMarker", "NextPartNumberMarker", "MaxParts"); + +const checkState$3 = async (client, input) => { + let reason; + try { + let result = await client.send(new HeadBucketCommand(input)); + reason = result; + return { state: utilWaiter.WaiterState.SUCCESS, reason }; + } + catch (exception) { + reason = exception; + if (exception.name && exception.name == "NotFound") { + return { state: utilWaiter.WaiterState.RETRY, reason }; + } + } + return { state: utilWaiter.WaiterState.RETRY, reason }; +}; +const waitForBucketExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return utilWaiter.createWaiter({ ...serviceDefaults, ...params }, input, checkState$3); +}; +const waitUntilBucketExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await utilWaiter.createWaiter({ ...serviceDefaults, ...params }, input, checkState$3); + return utilWaiter.checkExceptions(result); +}; + +const checkState$2 = async (client, input) => { + let reason; + try { + let result = await client.send(new HeadBucketCommand(input)); + reason = result; + } + catch (exception) { + reason = exception; + if (exception.name && exception.name == "NotFound") { + return { state: utilWaiter.WaiterState.SUCCESS, reason }; + } + } + return { state: utilWaiter.WaiterState.RETRY, reason }; +}; +const waitForBucketNotExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return utilWaiter.createWaiter({ ...serviceDefaults, ...params }, input, checkState$2); +}; +const waitUntilBucketNotExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await utilWaiter.createWaiter({ ...serviceDefaults, ...params }, input, checkState$2); + return utilWaiter.checkExceptions(result); +}; + +const checkState$1 = async (client, input) => { + let reason; + try { + let result = await client.send(new HeadObjectCommand(input)); + reason = result; + return { state: utilWaiter.WaiterState.SUCCESS, reason }; + } + catch (exception) { + reason = exception; + if (exception.name && exception.name == "NotFound") { + return { state: utilWaiter.WaiterState.RETRY, reason }; + } + } + return { state: utilWaiter.WaiterState.RETRY, reason }; +}; +const waitForObjectExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return utilWaiter.createWaiter({ ...serviceDefaults, ...params }, input, checkState$1); +}; +const waitUntilObjectExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await utilWaiter.createWaiter({ ...serviceDefaults, ...params }, input, checkState$1); + return utilWaiter.checkExceptions(result); +}; + +const checkState = async (client, input) => { + let reason; + try { + let result = await client.send(new HeadObjectCommand(input)); + reason = result; + } + catch (exception) { + reason = exception; + if (exception.name && exception.name == "NotFound") { + return { state: utilWaiter.WaiterState.SUCCESS, reason }; + } + } + return { state: utilWaiter.WaiterState.RETRY, reason }; +}; +const waitForObjectNotExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return utilWaiter.createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +const waitUntilObjectNotExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await utilWaiter.createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return utilWaiter.checkExceptions(result); +}; + +const commands = { + AbortMultipartUploadCommand, + CompleteMultipartUploadCommand, + CopyObjectCommand, + CreateBucketCommand, + CreateBucketMetadataConfigurationCommand, + CreateBucketMetadataTableConfigurationCommand, + CreateMultipartUploadCommand, + CreateSessionCommand, + DeleteBucketCommand, + DeleteBucketAnalyticsConfigurationCommand, + DeleteBucketCorsCommand, + DeleteBucketEncryptionCommand, + DeleteBucketIntelligentTieringConfigurationCommand, + DeleteBucketInventoryConfigurationCommand, + DeleteBucketLifecycleCommand, + DeleteBucketMetadataConfigurationCommand, + DeleteBucketMetadataTableConfigurationCommand, + DeleteBucketMetricsConfigurationCommand, + DeleteBucketOwnershipControlsCommand, + DeleteBucketPolicyCommand, + DeleteBucketReplicationCommand, + DeleteBucketTaggingCommand, + DeleteBucketWebsiteCommand, + DeleteObjectCommand, + DeleteObjectsCommand, + DeleteObjectTaggingCommand, + DeletePublicAccessBlockCommand, + GetBucketAbacCommand, + GetBucketAccelerateConfigurationCommand, + GetBucketAclCommand, + GetBucketAnalyticsConfigurationCommand, + GetBucketCorsCommand, + GetBucketEncryptionCommand, + GetBucketIntelligentTieringConfigurationCommand, + GetBucketInventoryConfigurationCommand, + GetBucketLifecycleConfigurationCommand, + GetBucketLocationCommand, + GetBucketLoggingCommand, + GetBucketMetadataConfigurationCommand, + GetBucketMetadataTableConfigurationCommand, + GetBucketMetricsConfigurationCommand, + GetBucketNotificationConfigurationCommand, + GetBucketOwnershipControlsCommand, + GetBucketPolicyCommand, + GetBucketPolicyStatusCommand, + GetBucketReplicationCommand, + GetBucketRequestPaymentCommand, + GetBucketTaggingCommand, + GetBucketVersioningCommand, + GetBucketWebsiteCommand, + GetObjectCommand, + GetObjectAclCommand, + GetObjectAttributesCommand, + GetObjectLegalHoldCommand, + GetObjectLockConfigurationCommand, + GetObjectRetentionCommand, + GetObjectTaggingCommand, + GetObjectTorrentCommand, + GetPublicAccessBlockCommand, + HeadBucketCommand, + HeadObjectCommand, + ListBucketAnalyticsConfigurationsCommand, + ListBucketIntelligentTieringConfigurationsCommand, + ListBucketInventoryConfigurationsCommand, + ListBucketMetricsConfigurationsCommand, + ListBucketsCommand, + ListDirectoryBucketsCommand, + ListMultipartUploadsCommand, + ListObjectsCommand, + ListObjectsV2Command, + ListObjectVersionsCommand, + ListPartsCommand, + PutBucketAbacCommand, + PutBucketAccelerateConfigurationCommand, + PutBucketAclCommand, + PutBucketAnalyticsConfigurationCommand, + PutBucketCorsCommand, + PutBucketEncryptionCommand, + PutBucketIntelligentTieringConfigurationCommand, + PutBucketInventoryConfigurationCommand, + PutBucketLifecycleConfigurationCommand, + PutBucketLoggingCommand, + PutBucketMetricsConfigurationCommand, + PutBucketNotificationConfigurationCommand, + PutBucketOwnershipControlsCommand, + PutBucketPolicyCommand, + PutBucketReplicationCommand, + PutBucketRequestPaymentCommand, + PutBucketTaggingCommand, + PutBucketVersioningCommand, + PutBucketWebsiteCommand, + PutObjectCommand, + PutObjectAclCommand, + PutObjectLegalHoldCommand, + PutObjectLockConfigurationCommand, + PutObjectRetentionCommand, + PutObjectTaggingCommand, + PutPublicAccessBlockCommand, + RenameObjectCommand, + RestoreObjectCommand, + SelectObjectContentCommand, + UpdateBucketMetadataInventoryTableConfigurationCommand, + UpdateBucketMetadataJournalTableConfigurationCommand, + UpdateObjectEncryptionCommand, + UploadPartCommand, + UploadPartCopyCommand, + WriteGetObjectResponseCommand, +}; +const paginators = { + paginateListBuckets, + paginateListDirectoryBuckets, + paginateListObjectsV2, + paginateListParts, +}; +const waiters = { + waitUntilBucketExists, + waitUntilBucketNotExists, + waitUntilObjectExists, + waitUntilObjectNotExists, +}; +class S3 extends S3Client { +} +smithyClient.createAggregatedClient(commands, S3, { paginators, waiters }); + +const BucketAbacStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const RequestCharged = { + requester: "requester", +}; +const RequestPayer = { + requester: "requester", +}; +const BucketAccelerateStatus = { + Enabled: "Enabled", + Suspended: "Suspended", +}; +const Type = { + AmazonCustomerByEmail: "AmazonCustomerByEmail", + CanonicalUser: "CanonicalUser", + Group: "Group", +}; +const Permission = { + FULL_CONTROL: "FULL_CONTROL", + READ: "READ", + READ_ACP: "READ_ACP", + WRITE: "WRITE", + WRITE_ACP: "WRITE_ACP", +}; +const OwnerOverride = { + Destination: "Destination", +}; +const ChecksumType = { + COMPOSITE: "COMPOSITE", + FULL_OBJECT: "FULL_OBJECT", +}; +const ServerSideEncryption = { + AES256: "AES256", + aws_fsx: "aws:fsx", + aws_kms: "aws:kms", + aws_kms_dsse: "aws:kms:dsse", +}; +const ObjectCannedACL = { + authenticated_read: "authenticated-read", + aws_exec_read: "aws-exec-read", + bucket_owner_full_control: "bucket-owner-full-control", + bucket_owner_read: "bucket-owner-read", + private: "private", + public_read: "public-read", + public_read_write: "public-read-write", +}; +const ChecksumAlgorithm = { + CRC32: "CRC32", + CRC32C: "CRC32C", + CRC64NVME: "CRC64NVME", + SHA1: "SHA1", + SHA256: "SHA256", +}; +const MetadataDirective = { + COPY: "COPY", + REPLACE: "REPLACE", +}; +const ObjectLockLegalHoldStatus = { + OFF: "OFF", + ON: "ON", +}; +const ObjectLockMode = { + COMPLIANCE: "COMPLIANCE", + GOVERNANCE: "GOVERNANCE", +}; +const StorageClass = { + DEEP_ARCHIVE: "DEEP_ARCHIVE", + EXPRESS_ONEZONE: "EXPRESS_ONEZONE", + FSX_ONTAP: "FSX_ONTAP", + FSX_OPENZFS: "FSX_OPENZFS", + GLACIER: "GLACIER", + GLACIER_IR: "GLACIER_IR", + INTELLIGENT_TIERING: "INTELLIGENT_TIERING", + ONEZONE_IA: "ONEZONE_IA", + OUTPOSTS: "OUTPOSTS", + REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY", + SNOW: "SNOW", + STANDARD: "STANDARD", + STANDARD_IA: "STANDARD_IA", +}; +const TaggingDirective = { + COPY: "COPY", + REPLACE: "REPLACE", +}; +const BucketCannedACL = { + authenticated_read: "authenticated-read", + private: "private", + public_read: "public-read", + public_read_write: "public-read-write", +}; +const BucketNamespace = { + ACCOUNT_REGIONAL: "account-regional", + GLOBAL: "global", +}; +const DataRedundancy = { + SingleAvailabilityZone: "SingleAvailabilityZone", + SingleLocalZone: "SingleLocalZone", +}; +const BucketType = { + Directory: "Directory", +}; +const LocationType = { + AvailabilityZone: "AvailabilityZone", + LocalZone: "LocalZone", +}; +const BucketLocationConstraint = { + EU: "EU", + af_south_1: "af-south-1", + ap_east_1: "ap-east-1", + ap_northeast_1: "ap-northeast-1", + ap_northeast_2: "ap-northeast-2", + ap_northeast_3: "ap-northeast-3", + ap_south_1: "ap-south-1", + ap_south_2: "ap-south-2", + ap_southeast_1: "ap-southeast-1", + ap_southeast_2: "ap-southeast-2", + ap_southeast_3: "ap-southeast-3", + ap_southeast_4: "ap-southeast-4", + ap_southeast_5: "ap-southeast-5", + ca_central_1: "ca-central-1", + cn_north_1: "cn-north-1", + cn_northwest_1: "cn-northwest-1", + eu_central_1: "eu-central-1", + eu_central_2: "eu-central-2", + eu_north_1: "eu-north-1", + eu_south_1: "eu-south-1", + eu_south_2: "eu-south-2", + eu_west_1: "eu-west-1", + eu_west_2: "eu-west-2", + eu_west_3: "eu-west-3", + il_central_1: "il-central-1", + me_central_1: "me-central-1", + me_south_1: "me-south-1", + sa_east_1: "sa-east-1", + us_east_2: "us-east-2", + us_gov_east_1: "us-gov-east-1", + us_gov_west_1: "us-gov-west-1", + us_west_1: "us-west-1", + us_west_2: "us-west-2", +}; +const ObjectOwnership = { + BucketOwnerEnforced: "BucketOwnerEnforced", + BucketOwnerPreferred: "BucketOwnerPreferred", + ObjectWriter: "ObjectWriter", +}; +const InventoryConfigurationState = { + DISABLED: "DISABLED", + ENABLED: "ENABLED", +}; +const TableSseAlgorithm = { + AES256: "AES256", + aws_kms: "aws:kms", +}; +const ExpirationState = { + DISABLED: "DISABLED", + ENABLED: "ENABLED", +}; +const SessionMode = { + ReadOnly: "ReadOnly", + ReadWrite: "ReadWrite", +}; +const AnalyticsS3ExportFileFormat = { + CSV: "CSV", +}; +const StorageClassAnalysisSchemaVersion = { + V_1: "V_1", +}; +const EncryptionType = { + NONE: "NONE", + SSE_C: "SSE-C", +}; +const IntelligentTieringStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const IntelligentTieringAccessTier = { + ARCHIVE_ACCESS: "ARCHIVE_ACCESS", + DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS", +}; +const InventoryFormat = { + CSV: "CSV", + ORC: "ORC", + Parquet: "Parquet", +}; +const InventoryIncludedObjectVersions = { + All: "All", + Current: "Current", +}; +const InventoryOptionalField = { + BucketKeyStatus: "BucketKeyStatus", + ChecksumAlgorithm: "ChecksumAlgorithm", + ETag: "ETag", + EncryptionStatus: "EncryptionStatus", + IntelligentTieringAccessTier: "IntelligentTieringAccessTier", + IsMultipartUploaded: "IsMultipartUploaded", + LastModifiedDate: "LastModifiedDate", + LifecycleExpirationDate: "LifecycleExpirationDate", + ObjectAccessControlList: "ObjectAccessControlList", + ObjectLockLegalHoldStatus: "ObjectLockLegalHoldStatus", + ObjectLockMode: "ObjectLockMode", + ObjectLockRetainUntilDate: "ObjectLockRetainUntilDate", + ObjectOwner: "ObjectOwner", + ReplicationStatus: "ReplicationStatus", + Size: "Size", + StorageClass: "StorageClass", +}; +const InventoryFrequency = { + Daily: "Daily", + Weekly: "Weekly", +}; +const TransitionStorageClass = { + DEEP_ARCHIVE: "DEEP_ARCHIVE", + GLACIER: "GLACIER", + GLACIER_IR: "GLACIER_IR", + INTELLIGENT_TIERING: "INTELLIGENT_TIERING", + ONEZONE_IA: "ONEZONE_IA", + STANDARD_IA: "STANDARD_IA", +}; +const ExpirationStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const TransitionDefaultMinimumObjectSize = { + all_storage_classes_128K: "all_storage_classes_128K", + varies_by_storage_class: "varies_by_storage_class", +}; +const BucketLogsPermission = { + FULL_CONTROL: "FULL_CONTROL", + READ: "READ", + WRITE: "WRITE", +}; +const PartitionDateSource = { + DeliveryTime: "DeliveryTime", + EventTime: "EventTime", +}; +const S3TablesBucketType = { + aws: "aws", + customer: "customer", +}; +const Event = { + s3_IntelligentTiering: "s3:IntelligentTiering", + s3_LifecycleExpiration_: "s3:LifecycleExpiration:*", + s3_LifecycleExpiration_Delete: "s3:LifecycleExpiration:Delete", + s3_LifecycleExpiration_DeleteMarkerCreated: "s3:LifecycleExpiration:DeleteMarkerCreated", + s3_LifecycleTransition: "s3:LifecycleTransition", + s3_ObjectAcl_Put: "s3:ObjectAcl:Put", + s3_ObjectCreated_: "s3:ObjectCreated:*", + s3_ObjectCreated_CompleteMultipartUpload: "s3:ObjectCreated:CompleteMultipartUpload", + s3_ObjectCreated_Copy: "s3:ObjectCreated:Copy", + s3_ObjectCreated_Post: "s3:ObjectCreated:Post", + s3_ObjectCreated_Put: "s3:ObjectCreated:Put", + s3_ObjectRemoved_: "s3:ObjectRemoved:*", + s3_ObjectRemoved_Delete: "s3:ObjectRemoved:Delete", + s3_ObjectRemoved_DeleteMarkerCreated: "s3:ObjectRemoved:DeleteMarkerCreated", + s3_ObjectRestore_: "s3:ObjectRestore:*", + s3_ObjectRestore_Completed: "s3:ObjectRestore:Completed", + s3_ObjectRestore_Delete: "s3:ObjectRestore:Delete", + s3_ObjectRestore_Post: "s3:ObjectRestore:Post", + s3_ObjectTagging_: "s3:ObjectTagging:*", + s3_ObjectTagging_Delete: "s3:ObjectTagging:Delete", + s3_ObjectTagging_Put: "s3:ObjectTagging:Put", + s3_ReducedRedundancyLostObject: "s3:ReducedRedundancyLostObject", + s3_Replication_: "s3:Replication:*", + s3_Replication_OperationFailedReplication: "s3:Replication:OperationFailedReplication", + s3_Replication_OperationMissedThreshold: "s3:Replication:OperationMissedThreshold", + s3_Replication_OperationNotTracked: "s3:Replication:OperationNotTracked", + s3_Replication_OperationReplicatedAfterThreshold: "s3:Replication:OperationReplicatedAfterThreshold", +}; +const FilterRuleName = { + prefix: "prefix", + suffix: "suffix", +}; +const DeleteMarkerReplicationStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const MetricsStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const ReplicationTimeStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const ExistingObjectReplicationStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const ReplicaModificationsStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const SseKmsEncryptedObjectsStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const ReplicationRuleStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const Payer = { + BucketOwner: "BucketOwner", + Requester: "Requester", +}; +const MFADeleteStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const BucketVersioningStatus = { + Enabled: "Enabled", + Suspended: "Suspended", +}; +const Protocol = { + http: "http", + https: "https", +}; +const ReplicationStatus = { + COMPLETE: "COMPLETE", + COMPLETED: "COMPLETED", + FAILED: "FAILED", + PENDING: "PENDING", + REPLICA: "REPLICA", +}; +const ChecksumMode = { + ENABLED: "ENABLED", +}; +const ObjectAttributes = { + CHECKSUM: "Checksum", + ETAG: "ETag", + OBJECT_PARTS: "ObjectParts", + OBJECT_SIZE: "ObjectSize", + STORAGE_CLASS: "StorageClass", +}; +const ObjectLockEnabled = { + Enabled: "Enabled", +}; +const ObjectLockRetentionMode = { + COMPLIANCE: "COMPLIANCE", + GOVERNANCE: "GOVERNANCE", +}; +const ArchiveStatus = { + ARCHIVE_ACCESS: "ARCHIVE_ACCESS", + DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS", +}; +const EncodingType = { + url: "url", +}; +const ObjectStorageClass = { + DEEP_ARCHIVE: "DEEP_ARCHIVE", + EXPRESS_ONEZONE: "EXPRESS_ONEZONE", + FSX_ONTAP: "FSX_ONTAP", + FSX_OPENZFS: "FSX_OPENZFS", + GLACIER: "GLACIER", + GLACIER_IR: "GLACIER_IR", + INTELLIGENT_TIERING: "INTELLIGENT_TIERING", + ONEZONE_IA: "ONEZONE_IA", + OUTPOSTS: "OUTPOSTS", + REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY", + SNOW: "SNOW", + STANDARD: "STANDARD", + STANDARD_IA: "STANDARD_IA", +}; +const OptionalObjectAttributes = { + RESTORE_STATUS: "RestoreStatus", +}; +const ObjectVersionStorageClass = { + STANDARD: "STANDARD", +}; +const MFADelete = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +const Tier = { + Bulk: "Bulk", + Expedited: "Expedited", + Standard: "Standard", +}; +const ExpressionType = { + SQL: "SQL", +}; +const CompressionType = { + BZIP2: "BZIP2", + GZIP: "GZIP", + NONE: "NONE", +}; +const FileHeaderInfo = { + IGNORE: "IGNORE", + NONE: "NONE", + USE: "USE", +}; +const JSONType = { + DOCUMENT: "DOCUMENT", + LINES: "LINES", +}; +const QuoteFields = { + ALWAYS: "ALWAYS", + ASNEEDED: "ASNEEDED", +}; +const RestoreRequestType = { + SELECT: "SELECT", +}; + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.S3ServiceException = S3ServiceException.S3ServiceException; +exports.AbortMultipartUploadCommand = AbortMultipartUploadCommand; +exports.AnalyticsS3ExportFileFormat = AnalyticsS3ExportFileFormat; +exports.ArchiveStatus = ArchiveStatus; +exports.BucketAbacStatus = BucketAbacStatus; +exports.BucketAccelerateStatus = BucketAccelerateStatus; +exports.BucketCannedACL = BucketCannedACL; +exports.BucketLocationConstraint = BucketLocationConstraint; +exports.BucketLogsPermission = BucketLogsPermission; +exports.BucketNamespace = BucketNamespace; +exports.BucketType = BucketType; +exports.BucketVersioningStatus = BucketVersioningStatus; +exports.ChecksumAlgorithm = ChecksumAlgorithm; +exports.ChecksumMode = ChecksumMode; +exports.ChecksumType = ChecksumType; +exports.CompleteMultipartUploadCommand = CompleteMultipartUploadCommand; +exports.CompressionType = CompressionType; +exports.CopyObjectCommand = CopyObjectCommand; +exports.CreateBucketCommand = CreateBucketCommand; +exports.CreateBucketMetadataConfigurationCommand = CreateBucketMetadataConfigurationCommand; +exports.CreateBucketMetadataTableConfigurationCommand = CreateBucketMetadataTableConfigurationCommand; +exports.CreateMultipartUploadCommand = CreateMultipartUploadCommand; +exports.CreateSessionCommand = CreateSessionCommand; +exports.DataRedundancy = DataRedundancy; +exports.DeleteBucketAnalyticsConfigurationCommand = DeleteBucketAnalyticsConfigurationCommand; +exports.DeleteBucketCommand = DeleteBucketCommand; +exports.DeleteBucketCorsCommand = DeleteBucketCorsCommand; +exports.DeleteBucketEncryptionCommand = DeleteBucketEncryptionCommand; +exports.DeleteBucketIntelligentTieringConfigurationCommand = DeleteBucketIntelligentTieringConfigurationCommand; +exports.DeleteBucketInventoryConfigurationCommand = DeleteBucketInventoryConfigurationCommand; +exports.DeleteBucketLifecycleCommand = DeleteBucketLifecycleCommand; +exports.DeleteBucketMetadataConfigurationCommand = DeleteBucketMetadataConfigurationCommand; +exports.DeleteBucketMetadataTableConfigurationCommand = DeleteBucketMetadataTableConfigurationCommand; +exports.DeleteBucketMetricsConfigurationCommand = DeleteBucketMetricsConfigurationCommand; +exports.DeleteBucketOwnershipControlsCommand = DeleteBucketOwnershipControlsCommand; +exports.DeleteBucketPolicyCommand = DeleteBucketPolicyCommand; +exports.DeleteBucketReplicationCommand = DeleteBucketReplicationCommand; +exports.DeleteBucketTaggingCommand = DeleteBucketTaggingCommand; +exports.DeleteBucketWebsiteCommand = DeleteBucketWebsiteCommand; +exports.DeleteMarkerReplicationStatus = DeleteMarkerReplicationStatus; +exports.DeleteObjectCommand = DeleteObjectCommand; +exports.DeleteObjectTaggingCommand = DeleteObjectTaggingCommand; +exports.DeleteObjectsCommand = DeleteObjectsCommand; +exports.DeletePublicAccessBlockCommand = DeletePublicAccessBlockCommand; +exports.EncodingType = EncodingType; +exports.EncryptionType = EncryptionType; +exports.Event = Event; +exports.ExistingObjectReplicationStatus = ExistingObjectReplicationStatus; +exports.ExpirationState = ExpirationState; +exports.ExpirationStatus = ExpirationStatus; +exports.ExpressionType = ExpressionType; +exports.FileHeaderInfo = FileHeaderInfo; +exports.FilterRuleName = FilterRuleName; +exports.GetBucketAbacCommand = GetBucketAbacCommand; +exports.GetBucketAccelerateConfigurationCommand = GetBucketAccelerateConfigurationCommand; +exports.GetBucketAclCommand = GetBucketAclCommand; +exports.GetBucketAnalyticsConfigurationCommand = GetBucketAnalyticsConfigurationCommand; +exports.GetBucketCorsCommand = GetBucketCorsCommand; +exports.GetBucketEncryptionCommand = GetBucketEncryptionCommand; +exports.GetBucketIntelligentTieringConfigurationCommand = GetBucketIntelligentTieringConfigurationCommand; +exports.GetBucketInventoryConfigurationCommand = GetBucketInventoryConfigurationCommand; +exports.GetBucketLifecycleConfigurationCommand = GetBucketLifecycleConfigurationCommand; +exports.GetBucketLocationCommand = GetBucketLocationCommand; +exports.GetBucketLoggingCommand = GetBucketLoggingCommand; +exports.GetBucketMetadataConfigurationCommand = GetBucketMetadataConfigurationCommand; +exports.GetBucketMetadataTableConfigurationCommand = GetBucketMetadataTableConfigurationCommand; +exports.GetBucketMetricsConfigurationCommand = GetBucketMetricsConfigurationCommand; +exports.GetBucketNotificationConfigurationCommand = GetBucketNotificationConfigurationCommand; +exports.GetBucketOwnershipControlsCommand = GetBucketOwnershipControlsCommand; +exports.GetBucketPolicyCommand = GetBucketPolicyCommand; +exports.GetBucketPolicyStatusCommand = GetBucketPolicyStatusCommand; +exports.GetBucketReplicationCommand = GetBucketReplicationCommand; +exports.GetBucketRequestPaymentCommand = GetBucketRequestPaymentCommand; +exports.GetBucketTaggingCommand = GetBucketTaggingCommand; +exports.GetBucketVersioningCommand = GetBucketVersioningCommand; +exports.GetBucketWebsiteCommand = GetBucketWebsiteCommand; +exports.GetObjectAclCommand = GetObjectAclCommand; +exports.GetObjectAttributesCommand = GetObjectAttributesCommand; +exports.GetObjectCommand = GetObjectCommand; +exports.GetObjectLegalHoldCommand = GetObjectLegalHoldCommand; +exports.GetObjectLockConfigurationCommand = GetObjectLockConfigurationCommand; +exports.GetObjectRetentionCommand = GetObjectRetentionCommand; +exports.GetObjectTaggingCommand = GetObjectTaggingCommand; +exports.GetObjectTorrentCommand = GetObjectTorrentCommand; +exports.GetPublicAccessBlockCommand = GetPublicAccessBlockCommand; +exports.HeadBucketCommand = HeadBucketCommand; +exports.HeadObjectCommand = HeadObjectCommand; +exports.IntelligentTieringAccessTier = IntelligentTieringAccessTier; +exports.IntelligentTieringStatus = IntelligentTieringStatus; +exports.InventoryConfigurationState = InventoryConfigurationState; +exports.InventoryFormat = InventoryFormat; +exports.InventoryFrequency = InventoryFrequency; +exports.InventoryIncludedObjectVersions = InventoryIncludedObjectVersions; +exports.InventoryOptionalField = InventoryOptionalField; +exports.JSONType = JSONType; +exports.ListBucketAnalyticsConfigurationsCommand = ListBucketAnalyticsConfigurationsCommand; +exports.ListBucketIntelligentTieringConfigurationsCommand = ListBucketIntelligentTieringConfigurationsCommand; +exports.ListBucketInventoryConfigurationsCommand = ListBucketInventoryConfigurationsCommand; +exports.ListBucketMetricsConfigurationsCommand = ListBucketMetricsConfigurationsCommand; +exports.ListBucketsCommand = ListBucketsCommand; +exports.ListDirectoryBucketsCommand = ListDirectoryBucketsCommand; +exports.ListMultipartUploadsCommand = ListMultipartUploadsCommand; +exports.ListObjectVersionsCommand = ListObjectVersionsCommand; +exports.ListObjectsCommand = ListObjectsCommand; +exports.ListObjectsV2Command = ListObjectsV2Command; +exports.ListPartsCommand = ListPartsCommand; +exports.LocationType = LocationType; +exports.MFADelete = MFADelete; +exports.MFADeleteStatus = MFADeleteStatus; +exports.MetadataDirective = MetadataDirective; +exports.MetricsStatus = MetricsStatus; +exports.ObjectAttributes = ObjectAttributes; +exports.ObjectCannedACL = ObjectCannedACL; +exports.ObjectLockEnabled = ObjectLockEnabled; +exports.ObjectLockLegalHoldStatus = ObjectLockLegalHoldStatus; +exports.ObjectLockMode = ObjectLockMode; +exports.ObjectLockRetentionMode = ObjectLockRetentionMode; +exports.ObjectOwnership = ObjectOwnership; +exports.ObjectStorageClass = ObjectStorageClass; +exports.ObjectVersionStorageClass = ObjectVersionStorageClass; +exports.OptionalObjectAttributes = OptionalObjectAttributes; +exports.OwnerOverride = OwnerOverride; +exports.PartitionDateSource = PartitionDateSource; +exports.Payer = Payer; +exports.Permission = Permission; +exports.Protocol = Protocol; +exports.PutBucketAbacCommand = PutBucketAbacCommand; +exports.PutBucketAccelerateConfigurationCommand = PutBucketAccelerateConfigurationCommand; +exports.PutBucketAclCommand = PutBucketAclCommand; +exports.PutBucketAnalyticsConfigurationCommand = PutBucketAnalyticsConfigurationCommand; +exports.PutBucketCorsCommand = PutBucketCorsCommand; +exports.PutBucketEncryptionCommand = PutBucketEncryptionCommand; +exports.PutBucketIntelligentTieringConfigurationCommand = PutBucketIntelligentTieringConfigurationCommand; +exports.PutBucketInventoryConfigurationCommand = PutBucketInventoryConfigurationCommand; +exports.PutBucketLifecycleConfigurationCommand = PutBucketLifecycleConfigurationCommand; +exports.PutBucketLoggingCommand = PutBucketLoggingCommand; +exports.PutBucketMetricsConfigurationCommand = PutBucketMetricsConfigurationCommand; +exports.PutBucketNotificationConfigurationCommand = PutBucketNotificationConfigurationCommand; +exports.PutBucketOwnershipControlsCommand = PutBucketOwnershipControlsCommand; +exports.PutBucketPolicyCommand = PutBucketPolicyCommand; +exports.PutBucketReplicationCommand = PutBucketReplicationCommand; +exports.PutBucketRequestPaymentCommand = PutBucketRequestPaymentCommand; +exports.PutBucketTaggingCommand = PutBucketTaggingCommand; +exports.PutBucketVersioningCommand = PutBucketVersioningCommand; +exports.PutBucketWebsiteCommand = PutBucketWebsiteCommand; +exports.PutObjectAclCommand = PutObjectAclCommand; +exports.PutObjectCommand = PutObjectCommand; +exports.PutObjectLegalHoldCommand = PutObjectLegalHoldCommand; +exports.PutObjectLockConfigurationCommand = PutObjectLockConfigurationCommand; +exports.PutObjectRetentionCommand = PutObjectRetentionCommand; +exports.PutObjectTaggingCommand = PutObjectTaggingCommand; +exports.PutPublicAccessBlockCommand = PutPublicAccessBlockCommand; +exports.QuoteFields = QuoteFields; +exports.RenameObjectCommand = RenameObjectCommand; +exports.ReplicaModificationsStatus = ReplicaModificationsStatus; +exports.ReplicationRuleStatus = ReplicationRuleStatus; +exports.ReplicationStatus = ReplicationStatus; +exports.ReplicationTimeStatus = ReplicationTimeStatus; +exports.RequestCharged = RequestCharged; +exports.RequestPayer = RequestPayer; +exports.RestoreObjectCommand = RestoreObjectCommand; +exports.RestoreRequestType = RestoreRequestType; +exports.S3 = S3; +exports.S3Client = S3Client; +exports.S3TablesBucketType = S3TablesBucketType; +exports.SelectObjectContentCommand = SelectObjectContentCommand; +exports.ServerSideEncryption = ServerSideEncryption; +exports.SessionMode = SessionMode; +exports.SseKmsEncryptedObjectsStatus = SseKmsEncryptedObjectsStatus; +exports.StorageClass = StorageClass; +exports.StorageClassAnalysisSchemaVersion = StorageClassAnalysisSchemaVersion; +exports.TableSseAlgorithm = TableSseAlgorithm; +exports.TaggingDirective = TaggingDirective; +exports.Tier = Tier; +exports.TransitionDefaultMinimumObjectSize = TransitionDefaultMinimumObjectSize; +exports.TransitionStorageClass = TransitionStorageClass; +exports.Type = Type; +exports.UpdateBucketMetadataInventoryTableConfigurationCommand = UpdateBucketMetadataInventoryTableConfigurationCommand; +exports.UpdateBucketMetadataJournalTableConfigurationCommand = UpdateBucketMetadataJournalTableConfigurationCommand; +exports.UpdateObjectEncryptionCommand = UpdateObjectEncryptionCommand; +exports.UploadPartCommand = UploadPartCommand; +exports.UploadPartCopyCommand = UploadPartCopyCommand; +exports.WriteGetObjectResponseCommand = WriteGetObjectResponseCommand; +exports.paginateListBuckets = paginateListBuckets; +exports.paginateListDirectoryBuckets = paginateListDirectoryBuckets; +exports.paginateListObjectsV2 = paginateListObjectsV2; +exports.paginateListParts = paginateListParts; +exports.waitForBucketExists = waitForBucketExists; +exports.waitForBucketNotExists = waitForBucketNotExists; +exports.waitForObjectExists = waitForObjectExists; +exports.waitForObjectNotExists = waitForObjectNotExists; +exports.waitUntilBucketExists = waitUntilBucketExists; +exports.waitUntilBucketNotExists = waitUntilBucketNotExists; +exports.waitUntilObjectExists = waitUntilObjectExists; +exports.waitUntilObjectNotExists = waitUntilObjectNotExists; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/models/S3ServiceException.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/models/S3ServiceException.js new file mode 100644 index 0000000..1d6aa67 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/models/S3ServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.S3ServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class S3ServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, S3ServiceException.prototype); + } +} +exports.S3ServiceException = S3ServiceException; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/models/errors.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/models/errors.js new file mode 100644 index 0000000..a70e596 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/models/errors.js @@ -0,0 +1,203 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ObjectAlreadyInActiveTierError = exports.IdempotencyParameterMismatch = exports.TooManyParts = exports.InvalidWriteOffset = exports.InvalidRequest = exports.EncryptionTypeMismatch = exports.NotFound = exports.NoSuchKey = exports.InvalidObjectState = exports.NoSuchBucket = exports.BucketAlreadyOwnedByYou = exports.BucketAlreadyExists = exports.ObjectNotInActiveTierError = exports.AccessDenied = exports.NoSuchUpload = void 0; +const S3ServiceException_1 = require("./S3ServiceException"); +class NoSuchUpload extends S3ServiceException_1.S3ServiceException { + name = "NoSuchUpload"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchUpload", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NoSuchUpload.prototype); + } +} +exports.NoSuchUpload = NoSuchUpload; +class AccessDenied extends S3ServiceException_1.S3ServiceException { + name = "AccessDenied"; + $fault = "client"; + constructor(opts) { + super({ + name: "AccessDenied", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDenied.prototype); + } +} +exports.AccessDenied = AccessDenied; +class ObjectNotInActiveTierError extends S3ServiceException_1.S3ServiceException { + name = "ObjectNotInActiveTierError"; + $fault = "client"; + constructor(opts) { + super({ + name: "ObjectNotInActiveTierError", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ObjectNotInActiveTierError.prototype); + } +} +exports.ObjectNotInActiveTierError = ObjectNotInActiveTierError; +class BucketAlreadyExists extends S3ServiceException_1.S3ServiceException { + name = "BucketAlreadyExists"; + $fault = "client"; + constructor(opts) { + super({ + name: "BucketAlreadyExists", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, BucketAlreadyExists.prototype); + } +} +exports.BucketAlreadyExists = BucketAlreadyExists; +class BucketAlreadyOwnedByYou extends S3ServiceException_1.S3ServiceException { + name = "BucketAlreadyOwnedByYou"; + $fault = "client"; + constructor(opts) { + super({ + name: "BucketAlreadyOwnedByYou", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, BucketAlreadyOwnedByYou.prototype); + } +} +exports.BucketAlreadyOwnedByYou = BucketAlreadyOwnedByYou; +class NoSuchBucket extends S3ServiceException_1.S3ServiceException { + name = "NoSuchBucket"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchBucket", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NoSuchBucket.prototype); + } +} +exports.NoSuchBucket = NoSuchBucket; +class InvalidObjectState extends S3ServiceException_1.S3ServiceException { + name = "InvalidObjectState"; + $fault = "client"; + StorageClass; + AccessTier; + constructor(opts) { + super({ + name: "InvalidObjectState", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidObjectState.prototype); + this.StorageClass = opts.StorageClass; + this.AccessTier = opts.AccessTier; + } +} +exports.InvalidObjectState = InvalidObjectState; +class NoSuchKey extends S3ServiceException_1.S3ServiceException { + name = "NoSuchKey"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchKey", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NoSuchKey.prototype); + } +} +exports.NoSuchKey = NoSuchKey; +class NotFound extends S3ServiceException_1.S3ServiceException { + name = "NotFound"; + $fault = "client"; + constructor(opts) { + super({ + name: "NotFound", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NotFound.prototype); + } +} +exports.NotFound = NotFound; +class EncryptionTypeMismatch extends S3ServiceException_1.S3ServiceException { + name = "EncryptionTypeMismatch"; + $fault = "client"; + constructor(opts) { + super({ + name: "EncryptionTypeMismatch", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, EncryptionTypeMismatch.prototype); + } +} +exports.EncryptionTypeMismatch = EncryptionTypeMismatch; +class InvalidRequest extends S3ServiceException_1.S3ServiceException { + name = "InvalidRequest"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidRequest", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequest.prototype); + } +} +exports.InvalidRequest = InvalidRequest; +class InvalidWriteOffset extends S3ServiceException_1.S3ServiceException { + name = "InvalidWriteOffset"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidWriteOffset", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidWriteOffset.prototype); + } +} +exports.InvalidWriteOffset = InvalidWriteOffset; +class TooManyParts extends S3ServiceException_1.S3ServiceException { + name = "TooManyParts"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyParts", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyParts.prototype); + } +} +exports.TooManyParts = TooManyParts; +class IdempotencyParameterMismatch extends S3ServiceException_1.S3ServiceException { + name = "IdempotencyParameterMismatch"; + $fault = "client"; + constructor(opts) { + super({ + name: "IdempotencyParameterMismatch", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IdempotencyParameterMismatch.prototype); + } +} +exports.IdempotencyParameterMismatch = IdempotencyParameterMismatch; +class ObjectAlreadyInActiveTierError extends S3ServiceException_1.S3ServiceException { + name = "ObjectAlreadyInActiveTierError"; + $fault = "client"; + constructor(opts) { + super({ + name: "ObjectAlreadyInActiveTierError", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ObjectAlreadyInActiveTierError.prototype); + } +} +exports.ObjectAlreadyInActiveTierError = ObjectAlreadyInActiveTierError; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.browser.js new file mode 100644 index 0000000..e1b65f4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.browser.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../package.json")); +const sha1_browser_1 = require("@aws-crypto/sha1-browser"); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const eventstream_serde_browser_1 = require("@smithy/eventstream-serde-browser"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const hash_blob_browser_1 = require("@smithy/hash-blob-browser"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const md5_js_1 = require("@smithy/md5-js"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + eventStreamSerdeProvider: config?.eventStreamSerdeProvider ?? eventstream_serde_browser_1.eventStreamSerdeProvider, + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + md5: config?.md5 ?? md5_js_1.Md5, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha1: config?.sha1 ?? sha1_browser_1.Sha1, + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + streamHasher: config?.streamHasher ?? hash_blob_browser_1.blobHasher, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.js new file mode 100644 index 0000000..6477252 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.js @@ -0,0 +1,68 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../package.json")); +const client_1 = require("@aws-sdk/core/client"); +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const credential_provider_node_1 = require("@aws-sdk/credential-provider-node"); +const middleware_bucket_endpoint_1 = require("@aws-sdk/middleware-bucket-endpoint"); +const middleware_flexible_checksums_1 = require("@aws-sdk/middleware-flexible-checksums"); +const middleware_sdk_s3_1 = require("@aws-sdk/middleware-sdk-s3"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const eventstream_serde_node_1 = require("@smithy/eventstream-serde-node"); +const hash_node_1 = require("@smithy/hash-node"); +const hash_stream_node_1 = require("@smithy/hash-stream-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, client_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(httpAuthSchemes_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + disableS3ExpressSessionAuth: config?.disableS3ExpressSessionAuth ?? (0, node_config_provider_1.loadConfig)(middleware_sdk_s3_1.NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS, loaderConfig), + eventStreamSerdeProvider: config?.eventStreamSerdeProvider ?? eventstream_serde_node_1.eventStreamSerdeProvider, + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + md5: config?.md5 ?? hash_node_1.Hash.bind(null, "md5"), + region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestChecksumCalculation: config?.requestChecksumCalculation ?? (0, node_config_provider_1.loadConfig)(middleware_flexible_checksums_1.NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS, loaderConfig), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + responseChecksumValidation: config?.responseChecksumValidation ?? (0, node_config_provider_1.loadConfig)(middleware_flexible_checksums_1.NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS, loaderConfig), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha1: config?.sha1 ?? hash_node_1.Hash.bind(null, "sha1"), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + sigv4aSigningRegionSet: config?.sigv4aSigningRegionSet ?? (0, node_config_provider_1.loadConfig)(httpAuthSchemes_1.NODE_SIGV4A_CONFIG_OPTIONS, loaderConfig), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + streamHasher: config?.streamHasher ?? hash_stream_node_1.readableStreamHasher, + useArnRegion: config?.useArnRegion ?? (0, node_config_provider_1.loadConfig)(middleware_bucket_endpoint_1.NODE_USE_ARN_REGION_CONFIG_OPTIONS, loaderConfig), + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.native.js new file mode 100644 index 0000000..34c5f8e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.shared.js new file mode 100644 index 0000000..df4b8a9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.shared.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const middleware_sdk_s3_1 = require("@aws-sdk/middleware-sdk-s3"); +const signature_v4_multi_region_1 = require("@aws-sdk/signature-v4-multi-region"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_stream_1 = require("@smithy/util-stream"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2006-03-01", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + getAwsChunkedEncodingStream: config?.getAwsChunkedEncodingStream ?? util_stream_1.getAwsChunkedEncodingStream, + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultS3HttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new httpAuthSchemes_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "aws.auth#sigv4a", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4a"), + signer: new httpAuthSchemes_1.AwsSdkSigV4ASigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? middleware_sdk_s3_1.S3RestXmlProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.s3", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + xmlNamespace: "http://s3.amazonaws.com/doc/2006-03-01/", + version: "2006-03-01", + serviceTarget: "AmazonS3", + }, + sdkStreamMixin: config?.sdkStreamMixin ?? util_stream_1.sdkStreamMixin, + serviceId: config?.serviceId ?? "S3", + signerConstructor: config?.signerConstructor ?? signature_v4_multi_region_1.SignatureV4MultiRegion, + signingEscapePath: config?.signingEscapePath ?? false, + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + useArnRegion: config?.useArnRegion ?? undefined, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-cjs/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/schemas/schemas_0.js new file mode 100644 index 0000000..53592c0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-cjs/schemas/schemas_0.js @@ -0,0 +1,3258 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateBucketMetadataTableConfigurationRequest$ = exports.CreateBucketMetadataConfigurationRequest$ = exports.CreateBucketConfiguration$ = exports.CORSRule$ = exports.CORSConfiguration$ = exports.CopyPartResult$ = exports.CopyObjectResult$ = exports.CopyObjectRequest$ = exports.CopyObjectOutput$ = exports.ContinuationEvent$ = exports.Condition$ = exports.CompleteMultipartUploadRequest$ = exports.CompleteMultipartUploadOutput$ = exports.CompletedPart$ = exports.CompletedMultipartUpload$ = exports.CommonPrefix$ = exports.Checksum$ = exports.BucketLoggingStatus$ = exports.BucketLifecycleConfiguration$ = exports.BucketInfo$ = exports.Bucket$ = exports.BlockedEncryptionTypes$ = exports.AnalyticsS3BucketDestination$ = exports.AnalyticsExportDestination$ = exports.AnalyticsConfiguration$ = exports.AnalyticsAndOperator$ = exports.AccessControlTranslation$ = exports.AccessControlPolicy$ = exports.AccelerateConfiguration$ = exports.AbortMultipartUploadRequest$ = exports.AbortMultipartUploadOutput$ = exports.AbortIncompleteMultipartUpload$ = exports.AbacStatus$ = exports.errorTypeRegistries = exports.TooManyParts$ = exports.ObjectNotInActiveTierError$ = exports.ObjectAlreadyInActiveTierError$ = exports.NotFound$ = exports.NoSuchUpload$ = exports.NoSuchKey$ = exports.NoSuchBucket$ = exports.InvalidWriteOffset$ = exports.InvalidRequest$ = exports.InvalidObjectState$ = exports.IdempotencyParameterMismatch$ = exports.EncryptionTypeMismatch$ = exports.BucketAlreadyOwnedByYou$ = exports.BucketAlreadyExists$ = exports.AccessDenied$ = exports.S3ServiceException$ = void 0; +exports.GetBucketAccelerateConfigurationRequest$ = exports.GetBucketAccelerateConfigurationOutput$ = exports.GetBucketAbacRequest$ = exports.GetBucketAbacOutput$ = exports.FilterRule$ = exports.ExistingObjectReplication$ = exports.EventBridgeConfiguration$ = exports.ErrorDocument$ = exports.ErrorDetails$ = exports._Error$ = exports.EndEvent$ = exports.EncryptionConfiguration$ = exports.Encryption$ = exports.DestinationResult$ = exports.Destination$ = exports.DeletePublicAccessBlockRequest$ = exports.DeleteObjectTaggingRequest$ = exports.DeleteObjectTaggingOutput$ = exports.DeleteObjectsRequest$ = exports.DeleteObjectsOutput$ = exports.DeleteObjectRequest$ = exports.DeleteObjectOutput$ = exports.DeleteMarkerReplication$ = exports.DeleteMarkerEntry$ = exports.DeletedObject$ = exports.DeleteBucketWebsiteRequest$ = exports.DeleteBucketTaggingRequest$ = exports.DeleteBucketRequest$ = exports.DeleteBucketReplicationRequest$ = exports.DeleteBucketPolicyRequest$ = exports.DeleteBucketOwnershipControlsRequest$ = exports.DeleteBucketMetricsConfigurationRequest$ = exports.DeleteBucketMetadataTableConfigurationRequest$ = exports.DeleteBucketMetadataConfigurationRequest$ = exports.DeleteBucketLifecycleRequest$ = exports.DeleteBucketInventoryConfigurationRequest$ = exports.DeleteBucketIntelligentTieringConfigurationRequest$ = exports.DeleteBucketEncryptionRequest$ = exports.DeleteBucketCorsRequest$ = exports.DeleteBucketAnalyticsConfigurationRequest$ = exports.Delete$ = exports.DefaultRetention$ = exports.CSVOutput$ = exports.CSVInput$ = exports.CreateSessionRequest$ = exports.CreateSessionOutput$ = exports.CreateMultipartUploadRequest$ = exports.CreateMultipartUploadOutput$ = exports.CreateBucketRequest$ = exports.CreateBucketOutput$ = void 0; +exports.GetObjectLegalHoldRequest$ = exports.GetObjectLegalHoldOutput$ = exports.GetObjectAttributesRequest$ = exports.GetObjectAttributesParts$ = exports.GetObjectAttributesOutput$ = exports.GetObjectAclRequest$ = exports.GetObjectAclOutput$ = exports.GetBucketWebsiteRequest$ = exports.GetBucketWebsiteOutput$ = exports.GetBucketVersioningRequest$ = exports.GetBucketVersioningOutput$ = exports.GetBucketTaggingRequest$ = exports.GetBucketTaggingOutput$ = exports.GetBucketRequestPaymentRequest$ = exports.GetBucketRequestPaymentOutput$ = exports.GetBucketReplicationRequest$ = exports.GetBucketReplicationOutput$ = exports.GetBucketPolicyStatusRequest$ = exports.GetBucketPolicyStatusOutput$ = exports.GetBucketPolicyRequest$ = exports.GetBucketPolicyOutput$ = exports.GetBucketOwnershipControlsRequest$ = exports.GetBucketOwnershipControlsOutput$ = exports.GetBucketNotificationConfigurationRequest$ = exports.GetBucketMetricsConfigurationRequest$ = exports.GetBucketMetricsConfigurationOutput$ = exports.GetBucketMetadataTableConfigurationResult$ = exports.GetBucketMetadataTableConfigurationRequest$ = exports.GetBucketMetadataTableConfigurationOutput$ = exports.GetBucketMetadataConfigurationResult$ = exports.GetBucketMetadataConfigurationRequest$ = exports.GetBucketMetadataConfigurationOutput$ = exports.GetBucketLoggingRequest$ = exports.GetBucketLoggingOutput$ = exports.GetBucketLocationRequest$ = exports.GetBucketLocationOutput$ = exports.GetBucketLifecycleConfigurationRequest$ = exports.GetBucketLifecycleConfigurationOutput$ = exports.GetBucketInventoryConfigurationRequest$ = exports.GetBucketInventoryConfigurationOutput$ = exports.GetBucketIntelligentTieringConfigurationRequest$ = exports.GetBucketIntelligentTieringConfigurationOutput$ = exports.GetBucketEncryptionRequest$ = exports.GetBucketEncryptionOutput$ = exports.GetBucketCorsRequest$ = exports.GetBucketCorsOutput$ = exports.GetBucketAnalyticsConfigurationRequest$ = exports.GetBucketAnalyticsConfigurationOutput$ = exports.GetBucketAclRequest$ = exports.GetBucketAclOutput$ = void 0; +exports.ListBucketInventoryConfigurationsRequest$ = exports.ListBucketInventoryConfigurationsOutput$ = exports.ListBucketIntelligentTieringConfigurationsRequest$ = exports.ListBucketIntelligentTieringConfigurationsOutput$ = exports.ListBucketAnalyticsConfigurationsRequest$ = exports.ListBucketAnalyticsConfigurationsOutput$ = exports.LifecycleRuleFilter$ = exports.LifecycleRuleAndOperator$ = exports.LifecycleRule$ = exports.LifecycleExpiration$ = exports.LambdaFunctionConfiguration$ = exports.JSONOutput$ = exports.JSONInput$ = exports.JournalTableConfigurationUpdates$ = exports.JournalTableConfigurationResult$ = exports.JournalTableConfiguration$ = exports.InventoryTableConfigurationUpdates$ = exports.InventoryTableConfigurationResult$ = exports.InventoryTableConfiguration$ = exports.InventorySchedule$ = exports.InventoryS3BucketDestination$ = exports.InventoryFilter$ = exports.InventoryEncryption$ = exports.InventoryDestination$ = exports.InventoryConfiguration$ = exports.IntelligentTieringFilter$ = exports.IntelligentTieringConfiguration$ = exports.IntelligentTieringAndOperator$ = exports.InputSerialization$ = exports.Initiator$ = exports.IndexDocument$ = exports.HeadObjectRequest$ = exports.HeadObjectOutput$ = exports.HeadBucketRequest$ = exports.HeadBucketOutput$ = exports.Grantee$ = exports.Grant$ = exports.GlacierJobParameters$ = exports.GetPublicAccessBlockRequest$ = exports.GetPublicAccessBlockOutput$ = exports.GetObjectTorrentRequest$ = exports.GetObjectTorrentOutput$ = exports.GetObjectTaggingRequest$ = exports.GetObjectTaggingOutput$ = exports.GetObjectRetentionRequest$ = exports.GetObjectRetentionOutput$ = exports.GetObjectRequest$ = exports.GetObjectOutput$ = exports.GetObjectLockConfigurationRequest$ = exports.GetObjectLockConfigurationOutput$ = void 0; +exports.Progress$ = exports.PolicyStatus$ = exports.PartitionedPrefix$ = exports.Part$ = exports.ParquetInput$ = exports.OwnershipControlsRule$ = exports.OwnershipControls$ = exports.Owner$ = exports.OutputSerialization$ = exports.OutputLocation$ = exports.ObjectVersion$ = exports.ObjectPart$ = exports.ObjectLockRule$ = exports.ObjectLockRetention$ = exports.ObjectLockLegalHold$ = exports.ObjectLockConfiguration$ = exports.ObjectIdentifier$ = exports._Object$ = exports.NotificationConfigurationFilter$ = exports.NotificationConfiguration$ = exports.NoncurrentVersionTransition$ = exports.NoncurrentVersionExpiration$ = exports.MultipartUpload$ = exports.MetricsConfiguration$ = exports.MetricsAndOperator$ = exports.Metrics$ = exports.MetadataTableEncryptionConfiguration$ = exports.MetadataTableConfigurationResult$ = exports.MetadataTableConfiguration$ = exports.MetadataEntry$ = exports.MetadataConfigurationResult$ = exports.MetadataConfiguration$ = exports.LoggingEnabled$ = exports.LocationInfo$ = exports.ListPartsRequest$ = exports.ListPartsOutput$ = exports.ListObjectVersionsRequest$ = exports.ListObjectVersionsOutput$ = exports.ListObjectsV2Request$ = exports.ListObjectsV2Output$ = exports.ListObjectsRequest$ = exports.ListObjectsOutput$ = exports.ListMultipartUploadsRequest$ = exports.ListMultipartUploadsOutput$ = exports.ListDirectoryBucketsRequest$ = exports.ListDirectoryBucketsOutput$ = exports.ListBucketsRequest$ = exports.ListBucketsOutput$ = exports.ListBucketMetricsConfigurationsRequest$ = exports.ListBucketMetricsConfigurationsOutput$ = void 0; +exports.RequestPaymentConfiguration$ = exports.ReplicationTimeValue$ = exports.ReplicationTime$ = exports.ReplicationRuleFilter$ = exports.ReplicationRuleAndOperator$ = exports.ReplicationRule$ = exports.ReplicationConfiguration$ = exports.ReplicaModifications$ = exports.RenameObjectRequest$ = exports.RenameObjectOutput$ = exports.RedirectAllRequestsTo$ = exports.Redirect$ = exports.RecordsEvent$ = exports.RecordExpiration$ = exports.QueueConfiguration$ = exports.PutPublicAccessBlockRequest$ = exports.PutObjectTaggingRequest$ = exports.PutObjectTaggingOutput$ = exports.PutObjectRetentionRequest$ = exports.PutObjectRetentionOutput$ = exports.PutObjectRequest$ = exports.PutObjectOutput$ = exports.PutObjectLockConfigurationRequest$ = exports.PutObjectLockConfigurationOutput$ = exports.PutObjectLegalHoldRequest$ = exports.PutObjectLegalHoldOutput$ = exports.PutObjectAclRequest$ = exports.PutObjectAclOutput$ = exports.PutBucketWebsiteRequest$ = exports.PutBucketVersioningRequest$ = exports.PutBucketTaggingRequest$ = exports.PutBucketRequestPaymentRequest$ = exports.PutBucketReplicationRequest$ = exports.PutBucketPolicyRequest$ = exports.PutBucketOwnershipControlsRequest$ = exports.PutBucketNotificationConfigurationRequest$ = exports.PutBucketMetricsConfigurationRequest$ = exports.PutBucketLoggingRequest$ = exports.PutBucketLifecycleConfigurationRequest$ = exports.PutBucketLifecycleConfigurationOutput$ = exports.PutBucketInventoryConfigurationRequest$ = exports.PutBucketIntelligentTieringConfigurationRequest$ = exports.PutBucketEncryptionRequest$ = exports.PutBucketCorsRequest$ = exports.PutBucketAnalyticsConfigurationRequest$ = exports.PutBucketAclRequest$ = exports.PutBucketAccelerateConfigurationRequest$ = exports.PutBucketAbacRequest$ = exports.PublicAccessBlockConfiguration$ = exports.ProgressEvent$ = void 0; +exports.SelectObjectContentEventStream$ = exports.ObjectEncryption$ = exports.MetricsFilter$ = exports.AnalyticsFilter$ = exports.WriteGetObjectResponseRequest$ = exports.WebsiteConfiguration$ = exports.VersioningConfiguration$ = exports.UploadPartRequest$ = exports.UploadPartOutput$ = exports.UploadPartCopyRequest$ = exports.UploadPartCopyOutput$ = exports.UpdateObjectEncryptionResponse$ = exports.UpdateObjectEncryptionRequest$ = exports.UpdateBucketMetadataJournalTableConfigurationRequest$ = exports.UpdateBucketMetadataInventoryTableConfigurationRequest$ = exports.Transition$ = exports.TopicConfiguration$ = exports.Tiering$ = exports.TargetObjectKeyFormat$ = exports.TargetGrant$ = exports.Tagging$ = exports.Tag$ = exports.StorageClassAnalysisDataExport$ = exports.StorageClassAnalysis$ = exports.StatsEvent$ = exports.Stats$ = exports.SSES3$ = exports.SSEKMSEncryption$ = exports.SseKmsEncryptedObjects$ = exports.SSEKMS$ = exports.SourceSelectionCriteria$ = exports.SimplePrefix$ = exports.SessionCredentials$ = exports.ServerSideEncryptionRule$ = exports.ServerSideEncryptionConfiguration$ = exports.ServerSideEncryptionByDefault$ = exports.SelectParameters$ = exports.SelectObjectContentRequest$ = exports.SelectObjectContentOutput$ = exports.ScanRange$ = exports.S3TablesDestinationResult$ = exports.S3TablesDestination$ = exports.S3Location$ = exports.S3KeyFilter$ = exports.RoutingRule$ = exports.RestoreStatus$ = exports.RestoreRequest$ = exports.RestoreObjectRequest$ = exports.RestoreObjectOutput$ = exports.RequestProgress$ = void 0; +exports.GetBucketWebsite$ = exports.GetBucketVersioning$ = exports.GetBucketTagging$ = exports.GetBucketRequestPayment$ = exports.GetBucketReplication$ = exports.GetBucketPolicyStatus$ = exports.GetBucketPolicy$ = exports.GetBucketOwnershipControls$ = exports.GetBucketNotificationConfiguration$ = exports.GetBucketMetricsConfiguration$ = exports.GetBucketMetadataTableConfiguration$ = exports.GetBucketMetadataConfiguration$ = exports.GetBucketLogging$ = exports.GetBucketLocation$ = exports.GetBucketLifecycleConfiguration$ = exports.GetBucketInventoryConfiguration$ = exports.GetBucketIntelligentTieringConfiguration$ = exports.GetBucketEncryption$ = exports.GetBucketCors$ = exports.GetBucketAnalyticsConfiguration$ = exports.GetBucketAcl$ = exports.GetBucketAccelerateConfiguration$ = exports.GetBucketAbac$ = exports.DeletePublicAccessBlock$ = exports.DeleteObjectTagging$ = exports.DeleteObjects$ = exports.DeleteObject$ = exports.DeleteBucketWebsite$ = exports.DeleteBucketTagging$ = exports.DeleteBucketReplication$ = exports.DeleteBucketPolicy$ = exports.DeleteBucketOwnershipControls$ = exports.DeleteBucketMetricsConfiguration$ = exports.DeleteBucketMetadataTableConfiguration$ = exports.DeleteBucketMetadataConfiguration$ = exports.DeleteBucketLifecycle$ = exports.DeleteBucketInventoryConfiguration$ = exports.DeleteBucketIntelligentTieringConfiguration$ = exports.DeleteBucketEncryption$ = exports.DeleteBucketCors$ = exports.DeleteBucketAnalyticsConfiguration$ = exports.DeleteBucket$ = exports.CreateSession$ = exports.CreateMultipartUpload$ = exports.CreateBucketMetadataTableConfiguration$ = exports.CreateBucketMetadataConfiguration$ = exports.CreateBucket$ = exports.CopyObject$ = exports.CompleteMultipartUpload$ = exports.AbortMultipartUpload$ = void 0; +exports.RestoreObject$ = exports.RenameObject$ = exports.PutPublicAccessBlock$ = exports.PutObjectTagging$ = exports.PutObjectRetention$ = exports.PutObjectLockConfiguration$ = exports.PutObjectLegalHold$ = exports.PutObjectAcl$ = exports.PutObject$ = exports.PutBucketWebsite$ = exports.PutBucketVersioning$ = exports.PutBucketTagging$ = exports.PutBucketRequestPayment$ = exports.PutBucketReplication$ = exports.PutBucketPolicy$ = exports.PutBucketOwnershipControls$ = exports.PutBucketNotificationConfiguration$ = exports.PutBucketMetricsConfiguration$ = exports.PutBucketLogging$ = exports.PutBucketLifecycleConfiguration$ = exports.PutBucketInventoryConfiguration$ = exports.PutBucketIntelligentTieringConfiguration$ = exports.PutBucketEncryption$ = exports.PutBucketCors$ = exports.PutBucketAnalyticsConfiguration$ = exports.PutBucketAcl$ = exports.PutBucketAccelerateConfiguration$ = exports.PutBucketAbac$ = exports.ListParts$ = exports.ListObjectVersions$ = exports.ListObjectsV2$ = exports.ListObjects$ = exports.ListMultipartUploads$ = exports.ListDirectoryBuckets$ = exports.ListBuckets$ = exports.ListBucketMetricsConfigurations$ = exports.ListBucketInventoryConfigurations$ = exports.ListBucketIntelligentTieringConfigurations$ = exports.ListBucketAnalyticsConfigurations$ = exports.HeadObject$ = exports.HeadBucket$ = exports.GetPublicAccessBlock$ = exports.GetObjectTorrent$ = exports.GetObjectTagging$ = exports.GetObjectRetention$ = exports.GetObjectLockConfiguration$ = exports.GetObjectLegalHold$ = exports.GetObjectAttributes$ = exports.GetObjectAcl$ = exports.GetObject$ = void 0; +exports.WriteGetObjectResponse$ = exports.UploadPartCopy$ = exports.UploadPart$ = exports.UpdateObjectEncryption$ = exports.UpdateBucketMetadataJournalTableConfiguration$ = exports.UpdateBucketMetadataInventoryTableConfiguration$ = exports.SelectObjectContent$ = void 0; +const _A = "Account"; +const _AAO = "AnalyticsAndOperator"; +const _AC = "AccelerateConfiguration"; +const _ACL = "AccessControlList"; +const _ACL_ = "ACL"; +const _ACLn = "AnalyticsConfigurationList"; +const _ACP = "AccessControlPolicy"; +const _ACT = "AccessControlTranslation"; +const _ACn = "AnalyticsConfiguration"; +const _AD = "AccessDenied"; +const _ADb = "AbortDate"; +const _AED = "AnalyticsExportDestination"; +const _AF = "AnalyticsFilter"; +const _AH = "AllowedHeaders"; +const _AHl = "AllowedHeader"; +const _AI = "AccountId"; +const _AIMU = "AbortIncompleteMultipartUpload"; +const _AKI = "AccessKeyId"; +const _AM = "AllowedMethods"; +const _AMU = "AbortMultipartUpload"; +const _AMUO = "AbortMultipartUploadOutput"; +const _AMUR = "AbortMultipartUploadRequest"; +const _AMl = "AllowedMethod"; +const _AO = "AllowedOrigins"; +const _AOl = "AllowedOrigin"; +const _APA = "AccessPointAlias"; +const _APAc = "AccessPointArn"; +const _AQRD = "AllowQuotedRecordDelimiter"; +const _AR = "AcceptRanges"; +const _ARI = "AbortRuleId"; +const _AS = "AbacStatus"; +const _ASBD = "AnalyticsS3BucketDestination"; +const _ASSEBD = "ApplyServerSideEncryptionByDefault"; +const _ASr = "ArchiveStatus"; +const _AT = "AccessTier"; +const _An = "And"; +const _B = "Bucket"; +const _BA = "BucketArn"; +const _BAE = "BucketAlreadyExists"; +const _BAI = "BucketAccountId"; +const _BAOBY = "BucketAlreadyOwnedByYou"; +const _BET = "BlockedEncryptionTypes"; +const _BGR = "BypassGovernanceRetention"; +const _BI = "BucketInfo"; +const _BKE = "BucketKeyEnabled"; +const _BLC = "BucketLifecycleConfiguration"; +const _BLN = "BucketLocationName"; +const _BLS = "BucketLoggingStatus"; +const _BLT = "BucketLocationType"; +const _BN = "BucketNamespace"; +const _BNu = "BucketName"; +const _BP = "BytesProcessed"; +const _BPA = "BlockPublicAcls"; +const _BPP = "BlockPublicPolicy"; +const _BR = "BucketRegion"; +const _BRy = "BytesReturned"; +const _BS = "BytesScanned"; +const _Bo = "Body"; +const _Bu = "Buckets"; +const _C = "Checksum"; +const _CA = "ChecksumAlgorithm"; +const _CACL = "CannedACL"; +const _CB = "CreateBucket"; +const _CBC = "CreateBucketConfiguration"; +const _CBMC = "CreateBucketMetadataConfiguration"; +const _CBMCR = "CreateBucketMetadataConfigurationRequest"; +const _CBMTC = "CreateBucketMetadataTableConfiguration"; +const _CBMTCR = "CreateBucketMetadataTableConfigurationRequest"; +const _CBO = "CreateBucketOutput"; +const _CBR = "CreateBucketRequest"; +const _CC = "CacheControl"; +const _CCRC = "ChecksumCRC32"; +const _CCRCC = "ChecksumCRC32C"; +const _CCRCNVME = "ChecksumCRC64NVME"; +const _CC_ = "Cache-Control"; +const _CD = "CreationDate"; +const _CD_ = "Content-Disposition"; +const _CDo = "ContentDisposition"; +const _CE = "ContinuationEvent"; +const _CE_ = "Content-Encoding"; +const _CEo = "ContentEncoding"; +const _CF = "CloudFunction"; +const _CFC = "CloudFunctionConfiguration"; +const _CL = "ContentLanguage"; +const _CL_ = "Content-Language"; +const _CL__ = "Content-Length"; +const _CLo = "ContentLength"; +const _CM = "Content-MD5"; +const _CMD = "ContentMD5"; +const _CMU = "CompletedMultipartUpload"; +const _CMUO = "CompleteMultipartUploadOutput"; +const _CMUOr = "CreateMultipartUploadOutput"; +const _CMUR = "CompleteMultipartUploadResult"; +const _CMURo = "CompleteMultipartUploadRequest"; +const _CMURr = "CreateMultipartUploadRequest"; +const _CMUo = "CompleteMultipartUpload"; +const _CMUr = "CreateMultipartUpload"; +const _CMh = "ChecksumMode"; +const _CO = "CopyObject"; +const _COO = "CopyObjectOutput"; +const _COR = "CopyObjectResult"; +const _CORSC = "CORSConfiguration"; +const _CORSR = "CORSRules"; +const _CORSRu = "CORSRule"; +const _CORo = "CopyObjectRequest"; +const _CP = "CommonPrefix"; +const _CPL = "CommonPrefixList"; +const _CPLo = "CompletedPartList"; +const _CPR = "CopyPartResult"; +const _CPo = "CompletedPart"; +const _CPom = "CommonPrefixes"; +const _CR = "ContentRange"; +const _CRSBA = "ConfirmRemoveSelfBucketAccess"; +const _CR_ = "Content-Range"; +const _CS = "CopySource"; +const _CSHA = "ChecksumSHA1"; +const _CSHAh = "ChecksumSHA256"; +const _CSIM = "CopySourceIfMatch"; +const _CSIMS = "CopySourceIfModifiedSince"; +const _CSINM = "CopySourceIfNoneMatch"; +const _CSIUS = "CopySourceIfUnmodifiedSince"; +const _CSO = "CreateSessionOutput"; +const _CSR = "CreateSessionResult"; +const _CSRo = "CopySourceRange"; +const _CSRr = "CreateSessionRequest"; +const _CSSSECA = "CopySourceSSECustomerAlgorithm"; +const _CSSSECK = "CopySourceSSECustomerKey"; +const _CSSSECKMD = "CopySourceSSECustomerKeyMD5"; +const _CSV = "CSV"; +const _CSVI = "CopySourceVersionId"; +const _CSVIn = "CSVInput"; +const _CSVO = "CSVOutput"; +const _CSo = "ConfigurationState"; +const _CSr = "CreateSession"; +const _CT = "ChecksumType"; +const _CT_ = "Content-Type"; +const _CTl = "ClientToken"; +const _CTo = "ContentType"; +const _CTom = "CompressionType"; +const _CTon = "ContinuationToken"; +const _Co = "Condition"; +const _Cod = "Code"; +const _Com = "Comments"; +const _Con = "Contents"; +const _Cont = "Cont"; +const _Cr = "Credentials"; +const _D = "Days"; +const _DAI = "DaysAfterInitiation"; +const _DB = "DeleteBucket"; +const _DBAC = "DeleteBucketAnalyticsConfiguration"; +const _DBACR = "DeleteBucketAnalyticsConfigurationRequest"; +const _DBC = "DeleteBucketCors"; +const _DBCR = "DeleteBucketCorsRequest"; +const _DBE = "DeleteBucketEncryption"; +const _DBER = "DeleteBucketEncryptionRequest"; +const _DBIC = "DeleteBucketInventoryConfiguration"; +const _DBICR = "DeleteBucketInventoryConfigurationRequest"; +const _DBITC = "DeleteBucketIntelligentTieringConfiguration"; +const _DBITCR = "DeleteBucketIntelligentTieringConfigurationRequest"; +const _DBL = "DeleteBucketLifecycle"; +const _DBLR = "DeleteBucketLifecycleRequest"; +const _DBMC = "DeleteBucketMetadataConfiguration"; +const _DBMCR = "DeleteBucketMetadataConfigurationRequest"; +const _DBMCRe = "DeleteBucketMetricsConfigurationRequest"; +const _DBMCe = "DeleteBucketMetricsConfiguration"; +const _DBMTC = "DeleteBucketMetadataTableConfiguration"; +const _DBMTCR = "DeleteBucketMetadataTableConfigurationRequest"; +const _DBOC = "DeleteBucketOwnershipControls"; +const _DBOCR = "DeleteBucketOwnershipControlsRequest"; +const _DBP = "DeleteBucketPolicy"; +const _DBPR = "DeleteBucketPolicyRequest"; +const _DBR = "DeleteBucketRequest"; +const _DBRR = "DeleteBucketReplicationRequest"; +const _DBRe = "DeleteBucketReplication"; +const _DBT = "DeleteBucketTagging"; +const _DBTR = "DeleteBucketTaggingRequest"; +const _DBW = "DeleteBucketWebsite"; +const _DBWR = "DeleteBucketWebsiteRequest"; +const _DE = "DataExport"; +const _DIM = "DestinationIfMatch"; +const _DIMS = "DestinationIfModifiedSince"; +const _DINM = "DestinationIfNoneMatch"; +const _DIUS = "DestinationIfUnmodifiedSince"; +const _DM = "DeleteMarker"; +const _DME = "DeleteMarkerEntry"; +const _DMR = "DeleteMarkerReplication"; +const _DMVI = "DeleteMarkerVersionId"; +const _DMe = "DeleteMarkers"; +const _DN = "DisplayName"; +const _DO = "DeletedObject"; +const _DOO = "DeleteObjectOutput"; +const _DOOe = "DeleteObjectsOutput"; +const _DOR = "DeleteObjectRequest"; +const _DORe = "DeleteObjectsRequest"; +const _DOT = "DeleteObjectTagging"; +const _DOTO = "DeleteObjectTaggingOutput"; +const _DOTR = "DeleteObjectTaggingRequest"; +const _DOe = "DeletedObjects"; +const _DOel = "DeleteObject"; +const _DOele = "DeleteObjects"; +const _DPAB = "DeletePublicAccessBlock"; +const _DPABR = "DeletePublicAccessBlockRequest"; +const _DR = "DataRedundancy"; +const _DRe = "DefaultRetention"; +const _DRel = "DeleteResult"; +const _DRes = "DestinationResult"; +const _Da = "Date"; +const _De = "Delete"; +const _Del = "Deleted"; +const _Deli = "Delimiter"; +const _Des = "Destination"; +const _Desc = "Description"; +const _Det = "Details"; +const _E = "Expiration"; +const _EA = "EmailAddress"; +const _EBC = "EventBridgeConfiguration"; +const _EBO = "ExpectedBucketOwner"; +const _EC = "EncryptionConfiguration"; +const _ECr = "ErrorCode"; +const _ED = "ErrorDetails"; +const _EDr = "ErrorDocument"; +const _EE = "EndEvent"; +const _EH = "ExposeHeaders"; +const _EHx = "ExposeHeader"; +const _EM = "ErrorMessage"; +const _EODM = "ExpiredObjectDeleteMarker"; +const _EOR = "ExistingObjectReplication"; +const _ES = "ExpiresString"; +const _ESBO = "ExpectedSourceBucketOwner"; +const _ET = "EncryptionType"; +const _ETL = "EncryptionTypeList"; +const _ETM = "EncryptionTypeMismatch"; +const _ETa = "ETag"; +const _ETn = "EncodingType"; +const _ETv = "EventThreshold"; +const _ETx = "ExpressionType"; +const _En = "Encryption"; +const _Ena = "Enabled"; +const _End = "End"; +const _Er = "Errors"; +const _Err = "Error"; +const _Ev = "Events"; +const _Eve = "Event"; +const _Ex = "Expires"; +const _Exp = "Expression"; +const _F = "Filter"; +const _FD = "FieldDelimiter"; +const _FHI = "FileHeaderInfo"; +const _FO = "FetchOwner"; +const _FR = "FilterRule"; +const _FRL = "FilterRuleList"; +const _FRi = "FilterRules"; +const _Fi = "Field"; +const _Fo = "Format"; +const _Fr = "Frequency"; +const _G = "Grants"; +const _GBA = "GetBucketAbac"; +const _GBAC = "GetBucketAccelerateConfiguration"; +const _GBACO = "GetBucketAccelerateConfigurationOutput"; +const _GBACOe = "GetBucketAnalyticsConfigurationOutput"; +const _GBACR = "GetBucketAccelerateConfigurationRequest"; +const _GBACRe = "GetBucketAnalyticsConfigurationRequest"; +const _GBACe = "GetBucketAnalyticsConfiguration"; +const _GBAO = "GetBucketAbacOutput"; +const _GBAOe = "GetBucketAclOutput"; +const _GBAR = "GetBucketAbacRequest"; +const _GBARe = "GetBucketAclRequest"; +const _GBAe = "GetBucketAcl"; +const _GBC = "GetBucketCors"; +const _GBCO = "GetBucketCorsOutput"; +const _GBCR = "GetBucketCorsRequest"; +const _GBE = "GetBucketEncryption"; +const _GBEO = "GetBucketEncryptionOutput"; +const _GBER = "GetBucketEncryptionRequest"; +const _GBIC = "GetBucketInventoryConfiguration"; +const _GBICO = "GetBucketInventoryConfigurationOutput"; +const _GBICR = "GetBucketInventoryConfigurationRequest"; +const _GBITC = "GetBucketIntelligentTieringConfiguration"; +const _GBITCO = "GetBucketIntelligentTieringConfigurationOutput"; +const _GBITCR = "GetBucketIntelligentTieringConfigurationRequest"; +const _GBL = "GetBucketLocation"; +const _GBLC = "GetBucketLifecycleConfiguration"; +const _GBLCO = "GetBucketLifecycleConfigurationOutput"; +const _GBLCR = "GetBucketLifecycleConfigurationRequest"; +const _GBLO = "GetBucketLocationOutput"; +const _GBLOe = "GetBucketLoggingOutput"; +const _GBLR = "GetBucketLocationRequest"; +const _GBLRe = "GetBucketLoggingRequest"; +const _GBLe = "GetBucketLogging"; +const _GBMC = "GetBucketMetadataConfiguration"; +const _GBMCO = "GetBucketMetadataConfigurationOutput"; +const _GBMCOe = "GetBucketMetricsConfigurationOutput"; +const _GBMCR = "GetBucketMetadataConfigurationResult"; +const _GBMCRe = "GetBucketMetadataConfigurationRequest"; +const _GBMCRet = "GetBucketMetricsConfigurationRequest"; +const _GBMCe = "GetBucketMetricsConfiguration"; +const _GBMTC = "GetBucketMetadataTableConfiguration"; +const _GBMTCO = "GetBucketMetadataTableConfigurationOutput"; +const _GBMTCR = "GetBucketMetadataTableConfigurationResult"; +const _GBMTCRe = "GetBucketMetadataTableConfigurationRequest"; +const _GBNC = "GetBucketNotificationConfiguration"; +const _GBNCR = "GetBucketNotificationConfigurationRequest"; +const _GBOC = "GetBucketOwnershipControls"; +const _GBOCO = "GetBucketOwnershipControlsOutput"; +const _GBOCR = "GetBucketOwnershipControlsRequest"; +const _GBP = "GetBucketPolicy"; +const _GBPO = "GetBucketPolicyOutput"; +const _GBPR = "GetBucketPolicyRequest"; +const _GBPS = "GetBucketPolicyStatus"; +const _GBPSO = "GetBucketPolicyStatusOutput"; +const _GBPSR = "GetBucketPolicyStatusRequest"; +const _GBR = "GetBucketReplication"; +const _GBRO = "GetBucketReplicationOutput"; +const _GBRP = "GetBucketRequestPayment"; +const _GBRPO = "GetBucketRequestPaymentOutput"; +const _GBRPR = "GetBucketRequestPaymentRequest"; +const _GBRR = "GetBucketReplicationRequest"; +const _GBT = "GetBucketTagging"; +const _GBTO = "GetBucketTaggingOutput"; +const _GBTR = "GetBucketTaggingRequest"; +const _GBV = "GetBucketVersioning"; +const _GBVO = "GetBucketVersioningOutput"; +const _GBVR = "GetBucketVersioningRequest"; +const _GBW = "GetBucketWebsite"; +const _GBWO = "GetBucketWebsiteOutput"; +const _GBWR = "GetBucketWebsiteRequest"; +const _GFC = "GrantFullControl"; +const _GJP = "GlacierJobParameters"; +const _GO = "GetObject"; +const _GOA = "GetObjectAcl"; +const _GOAO = "GetObjectAclOutput"; +const _GOAOe = "GetObjectAttributesOutput"; +const _GOAP = "GetObjectAttributesParts"; +const _GOAR = "GetObjectAclRequest"; +const _GOARe = "GetObjectAttributesResponse"; +const _GOARet = "GetObjectAttributesRequest"; +const _GOAe = "GetObjectAttributes"; +const _GOLC = "GetObjectLockConfiguration"; +const _GOLCO = "GetObjectLockConfigurationOutput"; +const _GOLCR = "GetObjectLockConfigurationRequest"; +const _GOLH = "GetObjectLegalHold"; +const _GOLHO = "GetObjectLegalHoldOutput"; +const _GOLHR = "GetObjectLegalHoldRequest"; +const _GOO = "GetObjectOutput"; +const _GOR = "GetObjectRequest"; +const _GORO = "GetObjectRetentionOutput"; +const _GORR = "GetObjectRetentionRequest"; +const _GORe = "GetObjectRetention"; +const _GOT = "GetObjectTagging"; +const _GOTO = "GetObjectTaggingOutput"; +const _GOTOe = "GetObjectTorrentOutput"; +const _GOTR = "GetObjectTaggingRequest"; +const _GOTRe = "GetObjectTorrentRequest"; +const _GOTe = "GetObjectTorrent"; +const _GPAB = "GetPublicAccessBlock"; +const _GPABO = "GetPublicAccessBlockOutput"; +const _GPABR = "GetPublicAccessBlockRequest"; +const _GR = "GrantRead"; +const _GRACP = "GrantReadACP"; +const _GW = "GrantWrite"; +const _GWACP = "GrantWriteACP"; +const _Gr = "Grant"; +const _Gra = "Grantee"; +const _HB = "HeadBucket"; +const _HBO = "HeadBucketOutput"; +const _HBR = "HeadBucketRequest"; +const _HECRE = "HttpErrorCodeReturnedEquals"; +const _HN = "HostName"; +const _HO = "HeadObject"; +const _HOO = "HeadObjectOutput"; +const _HOR = "HeadObjectRequest"; +const _HRC = "HttpRedirectCode"; +const _I = "Id"; +const _IC = "InventoryConfiguration"; +const _ICL = "InventoryConfigurationList"; +const _ID = "ID"; +const _IDn = "IndexDocument"; +const _IDnv = "InventoryDestination"; +const _IE = "IsEnabled"; +const _IEn = "InventoryEncryption"; +const _IF = "InventoryFilter"; +const _IL = "IsLatest"; +const _IM = "IfMatch"; +const _IMIT = "IfMatchInitiatedTime"; +const _IMLMT = "IfMatchLastModifiedTime"; +const _IMS = "IfMatchSize"; +const _IMS_ = "If-Modified-Since"; +const _IMSf = "IfModifiedSince"; +const _IMUR = "InitiateMultipartUploadResult"; +const _IM_ = "If-Match"; +const _INM = "IfNoneMatch"; +const _INM_ = "If-None-Match"; +const _IOF = "InventoryOptionalFields"; +const _IOS = "InvalidObjectState"; +const _IOV = "IncludedObjectVersions"; +const _IP = "IsPublic"; +const _IPA = "IgnorePublicAcls"; +const _IPM = "IdempotencyParameterMismatch"; +const _IR = "InvalidRequest"; +const _IRIP = "IsRestoreInProgress"; +const _IS = "InputSerialization"; +const _ISBD = "InventoryS3BucketDestination"; +const _ISn = "InventorySchedule"; +const _IT = "IsTruncated"; +const _ITAO = "IntelligentTieringAndOperator"; +const _ITC = "IntelligentTieringConfiguration"; +const _ITCL = "IntelligentTieringConfigurationList"; +const _ITCR = "InventoryTableConfigurationResult"; +const _ITCU = "InventoryTableConfigurationUpdates"; +const _ITCn = "InventoryTableConfiguration"; +const _ITF = "IntelligentTieringFilter"; +const _IUS = "IfUnmodifiedSince"; +const _IUS_ = "If-Unmodified-Since"; +const _IWO = "InvalidWriteOffset"; +const _In = "Initiator"; +const _Ini = "Initiated"; +const _JSON = "JSON"; +const _JSONI = "JSONInput"; +const _JSONO = "JSONOutput"; +const _JTC = "JournalTableConfiguration"; +const _JTCR = "JournalTableConfigurationResult"; +const _JTCU = "JournalTableConfigurationUpdates"; +const _K = "Key"; +const _KC = "KeyCount"; +const _KI = "KeyId"; +const _KKA = "KmsKeyArn"; +const _KM = "KeyMarker"; +const _KMSC = "KMSContext"; +const _KMSKA = "KMSKeyArn"; +const _KMSKI = "KMSKeyId"; +const _KMSMKID = "KMSMasterKeyID"; +const _KPE = "KeyPrefixEquals"; +const _L = "Location"; +const _LAMBR = "ListAllMyBucketsResult"; +const _LAMDBR = "ListAllMyDirectoryBucketsResult"; +const _LB = "ListBuckets"; +const _LBAC = "ListBucketAnalyticsConfigurations"; +const _LBACO = "ListBucketAnalyticsConfigurationsOutput"; +const _LBACR = "ListBucketAnalyticsConfigurationResult"; +const _LBACRi = "ListBucketAnalyticsConfigurationsRequest"; +const _LBIC = "ListBucketInventoryConfigurations"; +const _LBICO = "ListBucketInventoryConfigurationsOutput"; +const _LBICR = "ListBucketInventoryConfigurationsRequest"; +const _LBITC = "ListBucketIntelligentTieringConfigurations"; +const _LBITCO = "ListBucketIntelligentTieringConfigurationsOutput"; +const _LBITCR = "ListBucketIntelligentTieringConfigurationsRequest"; +const _LBMC = "ListBucketMetricsConfigurations"; +const _LBMCO = "ListBucketMetricsConfigurationsOutput"; +const _LBMCR = "ListBucketMetricsConfigurationsRequest"; +const _LBO = "ListBucketsOutput"; +const _LBR = "ListBucketsRequest"; +const _LBRi = "ListBucketResult"; +const _LC = "LocationConstraint"; +const _LCi = "LifecycleConfiguration"; +const _LDB = "ListDirectoryBuckets"; +const _LDBO = "ListDirectoryBucketsOutput"; +const _LDBR = "ListDirectoryBucketsRequest"; +const _LE = "LoggingEnabled"; +const _LEi = "LifecycleExpiration"; +const _LFA = "LambdaFunctionArn"; +const _LFC = "LambdaFunctionConfiguration"; +const _LFCL = "LambdaFunctionConfigurationList"; +const _LFCa = "LambdaFunctionConfigurations"; +const _LH = "LegalHold"; +const _LI = "LocationInfo"; +const _LICR = "ListInventoryConfigurationsResult"; +const _LM = "LastModified"; +const _LMCR = "ListMetricsConfigurationsResult"; +const _LMT = "LastModifiedTime"; +const _LMU = "ListMultipartUploads"; +const _LMUO = "ListMultipartUploadsOutput"; +const _LMUR = "ListMultipartUploadsResult"; +const _LMURi = "ListMultipartUploadsRequest"; +const _LM_ = "Last-Modified"; +const _LO = "ListObjects"; +const _LOO = "ListObjectsOutput"; +const _LOR = "ListObjectsRequest"; +const _LOV = "ListObjectsV2"; +const _LOVO = "ListObjectsV2Output"; +const _LOVOi = "ListObjectVersionsOutput"; +const _LOVR = "ListObjectsV2Request"; +const _LOVRi = "ListObjectVersionsRequest"; +const _LOVi = "ListObjectVersions"; +const _LP = "ListParts"; +const _LPO = "ListPartsOutput"; +const _LPR = "ListPartsResult"; +const _LPRi = "ListPartsRequest"; +const _LR = "LifecycleRule"; +const _LRAO = "LifecycleRuleAndOperator"; +const _LRF = "LifecycleRuleFilter"; +const _LRi = "LifecycleRules"; +const _LVR = "ListVersionsResult"; +const _M = "Metadata"; +const _MAO = "MetricsAndOperator"; +const _MAS = "MaxAgeSeconds"; +const _MB = "MaxBuckets"; +const _MC = "MetadataConfiguration"; +const _MCL = "MetricsConfigurationList"; +const _MCR = "MetadataConfigurationResult"; +const _MCe = "MetricsConfiguration"; +const _MD = "MetadataDirective"; +const _MDB = "MaxDirectoryBuckets"; +const _MDf = "MfaDelete"; +const _ME = "MetadataEntry"; +const _MF = "MetricsFilter"; +const _MFA = "MFA"; +const _MFAD = "MFADelete"; +const _MK = "MaxKeys"; +const _MM = "MissingMeta"; +const _MOS = "MpuObjectSize"; +const _MP = "MaxParts"; +const _MTC = "MetadataTableConfiguration"; +const _MTCR = "MetadataTableConfigurationResult"; +const _MTEC = "MetadataTableEncryptionConfiguration"; +const _MU = "MultipartUpload"; +const _MUL = "MultipartUploadList"; +const _MUa = "MaxUploads"; +const _Ma = "Marker"; +const _Me = "Metrics"; +const _Mes = "Message"; +const _Mi = "Minutes"; +const _Mo = "Mode"; +const _N = "Name"; +const _NC = "NotificationConfiguration"; +const _NCF = "NotificationConfigurationFilter"; +const _NCT = "NextContinuationToken"; +const _ND = "NoncurrentDays"; +const _NEKKAS = "NonEmptyKmsKeyArnString"; +const _NF = "NotFound"; +const _NKM = "NextKeyMarker"; +const _NM = "NextMarker"; +const _NNV = "NewerNoncurrentVersions"; +const _NPNM = "NextPartNumberMarker"; +const _NSB = "NoSuchBucket"; +const _NSK = "NoSuchKey"; +const _NSU = "NoSuchUpload"; +const _NUIM = "NextUploadIdMarker"; +const _NVE = "NoncurrentVersionExpiration"; +const _NVIM = "NextVersionIdMarker"; +const _NVT = "NoncurrentVersionTransitions"; +const _NVTL = "NoncurrentVersionTransitionList"; +const _NVTo = "NoncurrentVersionTransition"; +const _O = "Owner"; +const _OA = "ObjectAttributes"; +const _OAIATE = "ObjectAlreadyInActiveTierError"; +const _OC = "OwnershipControls"; +const _OCR = "OwnershipControlsRule"; +const _OCRw = "OwnershipControlsRules"; +const _OE = "ObjectEncryption"; +const _OF = "OptionalFields"; +const _OI = "ObjectIdentifier"; +const _OIL = "ObjectIdentifierList"; +const _OL = "OutputLocation"; +const _OLC = "ObjectLockConfiguration"; +const _OLE = "ObjectLockEnabled"; +const _OLEFB = "ObjectLockEnabledForBucket"; +const _OLLH = "ObjectLockLegalHold"; +const _OLLHS = "ObjectLockLegalHoldStatus"; +const _OLM = "ObjectLockMode"; +const _OLR = "ObjectLockRetention"; +const _OLRUD = "ObjectLockRetainUntilDate"; +const _OLRb = "ObjectLockRule"; +const _OLb = "ObjectList"; +const _ONIATE = "ObjectNotInActiveTierError"; +const _OO = "ObjectOwnership"; +const _OOA = "OptionalObjectAttributes"; +const _OP = "ObjectParts"; +const _OPb = "ObjectPart"; +const _OS = "ObjectSize"; +const _OSGT = "ObjectSizeGreaterThan"; +const _OSLT = "ObjectSizeLessThan"; +const _OSV = "OutputSchemaVersion"; +const _OSu = "OutputSerialization"; +const _OV = "ObjectVersion"; +const _OVL = "ObjectVersionList"; +const _Ob = "Objects"; +const _Obj = "Object"; +const _P = "Prefix"; +const _PABC = "PublicAccessBlockConfiguration"; +const _PBA = "PutBucketAbac"; +const _PBAC = "PutBucketAccelerateConfiguration"; +const _PBACR = "PutBucketAccelerateConfigurationRequest"; +const _PBACRu = "PutBucketAnalyticsConfigurationRequest"; +const _PBACu = "PutBucketAnalyticsConfiguration"; +const _PBAR = "PutBucketAbacRequest"; +const _PBARu = "PutBucketAclRequest"; +const _PBAu = "PutBucketAcl"; +const _PBC = "PutBucketCors"; +const _PBCR = "PutBucketCorsRequest"; +const _PBE = "PutBucketEncryption"; +const _PBER = "PutBucketEncryptionRequest"; +const _PBIC = "PutBucketInventoryConfiguration"; +const _PBICR = "PutBucketInventoryConfigurationRequest"; +const _PBITC = "PutBucketIntelligentTieringConfiguration"; +const _PBITCR = "PutBucketIntelligentTieringConfigurationRequest"; +const _PBL = "PutBucketLogging"; +const _PBLC = "PutBucketLifecycleConfiguration"; +const _PBLCO = "PutBucketLifecycleConfigurationOutput"; +const _PBLCR = "PutBucketLifecycleConfigurationRequest"; +const _PBLR = "PutBucketLoggingRequest"; +const _PBMC = "PutBucketMetricsConfiguration"; +const _PBMCR = "PutBucketMetricsConfigurationRequest"; +const _PBNC = "PutBucketNotificationConfiguration"; +const _PBNCR = "PutBucketNotificationConfigurationRequest"; +const _PBOC = "PutBucketOwnershipControls"; +const _PBOCR = "PutBucketOwnershipControlsRequest"; +const _PBP = "PutBucketPolicy"; +const _PBPR = "PutBucketPolicyRequest"; +const _PBR = "PutBucketReplication"; +const _PBRP = "PutBucketRequestPayment"; +const _PBRPR = "PutBucketRequestPaymentRequest"; +const _PBRR = "PutBucketReplicationRequest"; +const _PBT = "PutBucketTagging"; +const _PBTR = "PutBucketTaggingRequest"; +const _PBV = "PutBucketVersioning"; +const _PBVR = "PutBucketVersioningRequest"; +const _PBW = "PutBucketWebsite"; +const _PBWR = "PutBucketWebsiteRequest"; +const _PC = "PartsCount"; +const _PDS = "PartitionDateSource"; +const _PE = "ProgressEvent"; +const _PI = "ParquetInput"; +const _PL = "PartsList"; +const _PN = "PartNumber"; +const _PNM = "PartNumberMarker"; +const _PO = "PutObject"; +const _POA = "PutObjectAcl"; +const _POAO = "PutObjectAclOutput"; +const _POAR = "PutObjectAclRequest"; +const _POLC = "PutObjectLockConfiguration"; +const _POLCO = "PutObjectLockConfigurationOutput"; +const _POLCR = "PutObjectLockConfigurationRequest"; +const _POLH = "PutObjectLegalHold"; +const _POLHO = "PutObjectLegalHoldOutput"; +const _POLHR = "PutObjectLegalHoldRequest"; +const _POO = "PutObjectOutput"; +const _POR = "PutObjectRequest"; +const _PORO = "PutObjectRetentionOutput"; +const _PORR = "PutObjectRetentionRequest"; +const _PORu = "PutObjectRetention"; +const _POT = "PutObjectTagging"; +const _POTO = "PutObjectTaggingOutput"; +const _POTR = "PutObjectTaggingRequest"; +const _PP = "PartitionedPrefix"; +const _PPAB = "PutPublicAccessBlock"; +const _PPABR = "PutPublicAccessBlockRequest"; +const _PS = "PolicyStatus"; +const _Pa = "Parts"; +const _Par = "Part"; +const _Parq = "Parquet"; +const _Pay = "Payer"; +const _Payl = "Payload"; +const _Pe = "Permission"; +const _Po = "Policy"; +const _Pr = "Progress"; +const _Pri = "Priority"; +const _Pro = "Protocol"; +const _Q = "Quiet"; +const _QA = "QueueArn"; +const _QC = "QuoteCharacter"; +const _QCL = "QueueConfigurationList"; +const _QCu = "QueueConfigurations"; +const _QCue = "QueueConfiguration"; +const _QEC = "QuoteEscapeCharacter"; +const _QF = "QuoteFields"; +const _Qu = "Queue"; +const _R = "Rules"; +const _RART = "RedirectAllRequestsTo"; +const _RC = "RequestCharged"; +const _RCC = "ResponseCacheControl"; +const _RCD = "ResponseContentDisposition"; +const _RCE = "ResponseContentEncoding"; +const _RCL = "ResponseContentLanguage"; +const _RCT = "ResponseContentType"; +const _RCe = "ReplicationConfiguration"; +const _RD = "RecordDelimiter"; +const _RE = "ResponseExpires"; +const _RED = "RestoreExpiryDate"; +const _REe = "RecordExpiration"; +const _REec = "RecordsEvent"; +const _RKKID = "ReplicaKmsKeyID"; +const _RKPW = "ReplaceKeyPrefixWith"; +const _RKW = "ReplaceKeyWith"; +const _RM = "ReplicaModifications"; +const _RO = "RenameObject"; +const _ROO = "RenameObjectOutput"; +const _ROOe = "RestoreObjectOutput"; +const _ROP = "RestoreOutputPath"; +const _ROR = "RenameObjectRequest"; +const _RORe = "RestoreObjectRequest"; +const _ROe = "RestoreObject"; +const _RP = "RequestPayer"; +const _RPB = "RestrictPublicBuckets"; +const _RPC = "RequestPaymentConfiguration"; +const _RPe = "RequestProgress"; +const _RR = "RoutingRules"; +const _RRAO = "ReplicationRuleAndOperator"; +const _RRF = "ReplicationRuleFilter"; +const _RRe = "ReplicationRule"; +const _RRep = "ReplicationRules"; +const _RReq = "RequestRoute"; +const _RRes = "RestoreRequest"; +const _RRo = "RoutingRule"; +const _RS = "ReplicationStatus"; +const _RSe = "RestoreStatus"; +const _RSen = "RenameSource"; +const _RT = "ReplicationTime"; +const _RTV = "ReplicationTimeValue"; +const _RTe = "RequestToken"; +const _RUD = "RetainUntilDate"; +const _Ra = "Range"; +const _Re = "Restore"; +const _Rec = "Records"; +const _Red = "Redirect"; +const _Ret = "Retention"; +const _Ro = "Role"; +const _Ru = "Rule"; +const _S = "Status"; +const _SA = "StartAfter"; +const _SAK = "SecretAccessKey"; +const _SAs = "SseAlgorithm"; +const _SB = "StreamingBlob"; +const _SBD = "S3BucketDestination"; +const _SC = "StorageClass"; +const _SCA = "StorageClassAnalysis"; +const _SCADE = "StorageClassAnalysisDataExport"; +const _SCV = "SessionCredentialValue"; +const _SCe = "SessionCredentials"; +const _SCt = "StatusCode"; +const _SDV = "SkipDestinationValidation"; +const _SE = "StatsEvent"; +const _SIM = "SourceIfMatch"; +const _SIMS = "SourceIfModifiedSince"; +const _SINM = "SourceIfNoneMatch"; +const _SIUS = "SourceIfUnmodifiedSince"; +const _SK = "SSE-KMS"; +const _SKEO = "SseKmsEncryptedObjects"; +const _SKF = "S3KeyFilter"; +const _SKe = "S3Key"; +const _SL = "S3Location"; +const _SM = "SessionMode"; +const _SOC = "SelectObjectContent"; +const _SOCES = "SelectObjectContentEventStream"; +const _SOCO = "SelectObjectContentOutput"; +const _SOCR = "SelectObjectContentRequest"; +const _SP = "SelectParameters"; +const _SPi = "SimplePrefix"; +const _SR = "ScanRange"; +const _SS = "SSE-S3"; +const _SSC = "SourceSelectionCriteria"; +const _SSE = "ServerSideEncryption"; +const _SSEA = "SSEAlgorithm"; +const _SSEBD = "ServerSideEncryptionByDefault"; +const _SSEC = "ServerSideEncryptionConfiguration"; +const _SSECA = "SSECustomerAlgorithm"; +const _SSECK = "SSECustomerKey"; +const _SSECKMD = "SSECustomerKeyMD5"; +const _SSEKMS = "SSEKMS"; +const _SSEKMSE = "SSEKMSEncryption"; +const _SSEKMSEC = "SSEKMSEncryptionContext"; +const _SSEKMSKI = "SSEKMSKeyId"; +const _SSER = "ServerSideEncryptionRule"; +const _SSERe = "ServerSideEncryptionRules"; +const _SSES = "SSES3"; +const _ST = "SessionToken"; +const _STD = "S3TablesDestination"; +const _STDR = "S3TablesDestinationResult"; +const _S_ = "S3"; +const _Sc = "Schedule"; +const _Si = "Size"; +const _St = "Start"; +const _Sta = "Stats"; +const _Su = "Suffix"; +const _T = "Tags"; +const _TA = "TableArn"; +const _TAo = "TopicArn"; +const _TB = "TargetBucket"; +const _TBA = "TableBucketArn"; +const _TBT = "TableBucketType"; +const _TC = "TagCount"; +const _TCL = "TopicConfigurationList"; +const _TCo = "TopicConfigurations"; +const _TCop = "TopicConfiguration"; +const _TD = "TaggingDirective"; +const _TDMOS = "TransitionDefaultMinimumObjectSize"; +const _TG = "TargetGrants"; +const _TGa = "TargetGrant"; +const _TL = "TieringList"; +const _TLr = "TransitionList"; +const _TMP = "TooManyParts"; +const _TN = "TableNamespace"; +const _TNa = "TableName"; +const _TOKF = "TargetObjectKeyFormat"; +const _TP = "TargetPrefix"; +const _TPC = "TotalPartsCount"; +const _TS = "TagSet"; +const _TSa = "TableStatus"; +const _Ta = "Tag"; +const _Tag = "Tagging"; +const _Ti = "Tier"; +const _Tie = "Tierings"; +const _Tier = "Tiering"; +const _Tim = "Time"; +const _To = "Token"; +const _Top = "Topic"; +const _Tr = "Transitions"; +const _Tra = "Transition"; +const _Ty = "Type"; +const _U = "Uploads"; +const _UBMITC = "UpdateBucketMetadataInventoryTableConfiguration"; +const _UBMITCR = "UpdateBucketMetadataInventoryTableConfigurationRequest"; +const _UBMJTC = "UpdateBucketMetadataJournalTableConfiguration"; +const _UBMJTCR = "UpdateBucketMetadataJournalTableConfigurationRequest"; +const _UI = "UploadId"; +const _UIM = "UploadIdMarker"; +const _UM = "UserMetadata"; +const _UOE = "UpdateObjectEncryption"; +const _UOER = "UpdateObjectEncryptionRequest"; +const _UOERp = "UpdateObjectEncryptionResponse"; +const _UP = "UploadPart"; +const _UPC = "UploadPartCopy"; +const _UPCO = "UploadPartCopyOutput"; +const _UPCR = "UploadPartCopyRequest"; +const _UPO = "UploadPartOutput"; +const _UPR = "UploadPartRequest"; +const _URI = "URI"; +const _Up = "Upload"; +const _V = "Value"; +const _VC = "VersioningConfiguration"; +const _VI = "VersionId"; +const _VIM = "VersionIdMarker"; +const _Ve = "Versions"; +const _Ver = "Version"; +const _WC = "WebsiteConfiguration"; +const _WGOR = "WriteGetObjectResponse"; +const _WGORR = "WriteGetObjectResponseRequest"; +const _WOB = "WriteOffsetBytes"; +const _WRL = "WebsiteRedirectLocation"; +const _Y = "Years"; +const _ar = "accept-ranges"; +const _br = "bucket-region"; +const _c = "client"; +const _ct = "continuation-token"; +const _d = "delimiter"; +const _e = "error"; +const _eP = "eventPayload"; +const _en = "endpoint"; +const _et = "encoding-type"; +const _fo = "fetch-owner"; +const _h = "http"; +const _hC = "httpChecksum"; +const _hE = "httpError"; +const _hH = "httpHeader"; +const _hL = "hostLabel"; +const _hP = "httpPayload"; +const _hPH = "httpPrefixHeaders"; +const _hQ = "httpQuery"; +const _hi = "http://www.w3.org/2001/XMLSchema-instance"; +const _i = "id"; +const _iT = "idempotencyToken"; +const _km = "key-marker"; +const _m = "marker"; +const _mb = "max-buckets"; +const _mdb = "max-directory-buckets"; +const _mk = "max-keys"; +const _mp = "max-parts"; +const _mu = "max-uploads"; +const _p = "prefix"; +const _pN = "partNumber"; +const _pnm = "part-number-marker"; +const _rcc = "response-cache-control"; +const _rcd = "response-content-disposition"; +const _rce = "response-content-encoding"; +const _rcl = "response-content-language"; +const _rct = "response-content-type"; +const _re = "response-expires"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.s3"; +const _sa = "start-after"; +const _st = "streaming"; +const _uI = "uploadId"; +const _uim = "upload-id-marker"; +const _vI = "versionId"; +const _vim = "version-id-marker"; +const _x = "xsi"; +const _xA = "xmlAttribute"; +const _xF = "xmlFlattened"; +const _xN = "xmlName"; +const _xNm = "xmlNamespace"; +const _xaa = "x-amz-acl"; +const _xaad = "x-amz-abort-date"; +const _xaapa = "x-amz-access-point-alias"; +const _xaari = "x-amz-abort-rule-id"; +const _xaas = "x-amz-archive-status"; +const _xaba = "x-amz-bucket-arn"; +const _xabgr = "x-amz-bypass-governance-retention"; +const _xabln = "x-amz-bucket-location-name"; +const _xablt = "x-amz-bucket-location-type"; +const _xabn = "x-amz-bucket-namespace"; +const _xabole = "x-amz-bucket-object-lock-enabled"; +const _xabolt = "x-amz-bucket-object-lock-token"; +const _xabr = "x-amz-bucket-region"; +const _xaca = "x-amz-checksum-algorithm"; +const _xacc = "x-amz-checksum-crc32"; +const _xacc_ = "x-amz-checksum-crc32c"; +const _xacc__ = "x-amz-checksum-crc64nvme"; +const _xacm = "x-amz-checksum-mode"; +const _xacrsba = "x-amz-confirm-remove-self-bucket-access"; +const _xacs = "x-amz-checksum-sha1"; +const _xacs_ = "x-amz-checksum-sha256"; +const _xacs__ = "x-amz-copy-source"; +const _xacsim = "x-amz-copy-source-if-match"; +const _xacsims = "x-amz-copy-source-if-modified-since"; +const _xacsinm = "x-amz-copy-source-if-none-match"; +const _xacsius = "x-amz-copy-source-if-unmodified-since"; +const _xacsm = "x-amz-create-session-mode"; +const _xacsr = "x-amz-copy-source-range"; +const _xacssseca = "x-amz-copy-source-server-side-encryption-customer-algorithm"; +const _xacssseck = "x-amz-copy-source-server-side-encryption-customer-key"; +const _xacssseckM = "x-amz-copy-source-server-side-encryption-customer-key-MD5"; +const _xacsvi = "x-amz-copy-source-version-id"; +const _xact = "x-amz-checksum-type"; +const _xact_ = "x-amz-client-token"; +const _xadm = "x-amz-delete-marker"; +const _xae = "x-amz-expiration"; +const _xaebo = "x-amz-expected-bucket-owner"; +const _xafec = "x-amz-fwd-error-code"; +const _xafem = "x-amz-fwd-error-message"; +const _xafhCC = "x-amz-fwd-header-Cache-Control"; +const _xafhCD = "x-amz-fwd-header-Content-Disposition"; +const _xafhCE = "x-amz-fwd-header-Content-Encoding"; +const _xafhCL = "x-amz-fwd-header-Content-Language"; +const _xafhCR = "x-amz-fwd-header-Content-Range"; +const _xafhCT = "x-amz-fwd-header-Content-Type"; +const _xafhE = "x-amz-fwd-header-ETag"; +const _xafhE_ = "x-amz-fwd-header-Expires"; +const _xafhLM = "x-amz-fwd-header-Last-Modified"; +const _xafhar = "x-amz-fwd-header-accept-ranges"; +const _xafhxacc = "x-amz-fwd-header-x-amz-checksum-crc32"; +const _xafhxacc_ = "x-amz-fwd-header-x-amz-checksum-crc32c"; +const _xafhxacc__ = "x-amz-fwd-header-x-amz-checksum-crc64nvme"; +const _xafhxacs = "x-amz-fwd-header-x-amz-checksum-sha1"; +const _xafhxacs_ = "x-amz-fwd-header-x-amz-checksum-sha256"; +const _xafhxadm = "x-amz-fwd-header-x-amz-delete-marker"; +const _xafhxae = "x-amz-fwd-header-x-amz-expiration"; +const _xafhxamm = "x-amz-fwd-header-x-amz-missing-meta"; +const _xafhxampc = "x-amz-fwd-header-x-amz-mp-parts-count"; +const _xafhxaollh = "x-amz-fwd-header-x-amz-object-lock-legal-hold"; +const _xafhxaolm = "x-amz-fwd-header-x-amz-object-lock-mode"; +const _xafhxaolrud = "x-amz-fwd-header-x-amz-object-lock-retain-until-date"; +const _xafhxar = "x-amz-fwd-header-x-amz-restore"; +const _xafhxarc = "x-amz-fwd-header-x-amz-request-charged"; +const _xafhxars = "x-amz-fwd-header-x-amz-replication-status"; +const _xafhxasc = "x-amz-fwd-header-x-amz-storage-class"; +const _xafhxasse = "x-amz-fwd-header-x-amz-server-side-encryption"; +const _xafhxasseakki = "x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id"; +const _xafhxassebke = "x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled"; +const _xafhxasseca = "x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm"; +const _xafhxasseckM = "x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5"; +const _xafhxatc = "x-amz-fwd-header-x-amz-tagging-count"; +const _xafhxavi = "x-amz-fwd-header-x-amz-version-id"; +const _xafs = "x-amz-fwd-status"; +const _xagfc = "x-amz-grant-full-control"; +const _xagr = "x-amz-grant-read"; +const _xagra = "x-amz-grant-read-acp"; +const _xagw = "x-amz-grant-write"; +const _xagwa = "x-amz-grant-write-acp"; +const _xaimit = "x-amz-if-match-initiated-time"; +const _xaimlmt = "x-amz-if-match-last-modified-time"; +const _xaims = "x-amz-if-match-size"; +const _xam = "x-amz-meta-"; +const _xam_ = "x-amz-mfa"; +const _xamd = "x-amz-metadata-directive"; +const _xamm = "x-amz-missing-meta"; +const _xamos = "x-amz-mp-object-size"; +const _xamp = "x-amz-max-parts"; +const _xampc = "x-amz-mp-parts-count"; +const _xaoa = "x-amz-object-attributes"; +const _xaollh = "x-amz-object-lock-legal-hold"; +const _xaolm = "x-amz-object-lock-mode"; +const _xaolrud = "x-amz-object-lock-retain-until-date"; +const _xaoo = "x-amz-object-ownership"; +const _xaooa = "x-amz-optional-object-attributes"; +const _xaos = "x-amz-object-size"; +const _xapnm = "x-amz-part-number-marker"; +const _xar = "x-amz-restore"; +const _xarc = "x-amz-request-charged"; +const _xarop = "x-amz-restore-output-path"; +const _xarp = "x-amz-request-payer"; +const _xarr = "x-amz-request-route"; +const _xars = "x-amz-replication-status"; +const _xars_ = "x-amz-rename-source"; +const _xarsim = "x-amz-rename-source-if-match"; +const _xarsims = "x-amz-rename-source-if-modified-since"; +const _xarsinm = "x-amz-rename-source-if-none-match"; +const _xarsius = "x-amz-rename-source-if-unmodified-since"; +const _xart = "x-amz-request-token"; +const _xasc = "x-amz-storage-class"; +const _xasca = "x-amz-sdk-checksum-algorithm"; +const _xasdv = "x-amz-skip-destination-validation"; +const _xasebo = "x-amz-source-expected-bucket-owner"; +const _xasse = "x-amz-server-side-encryption"; +const _xasseakki = "x-amz-server-side-encryption-aws-kms-key-id"; +const _xassebke = "x-amz-server-side-encryption-bucket-key-enabled"; +const _xassec = "x-amz-server-side-encryption-context"; +const _xasseca = "x-amz-server-side-encryption-customer-algorithm"; +const _xasseck = "x-amz-server-side-encryption-customer-key"; +const _xasseckM = "x-amz-server-side-encryption-customer-key-MD5"; +const _xat = "x-amz-tagging"; +const _xatc = "x-amz-tagging-count"; +const _xatd = "x-amz-tagging-directive"; +const _xatdmos = "x-amz-transition-default-minimum-object-size"; +const _xavi = "x-amz-version-id"; +const _xawob = "x-amz-write-offset-bytes"; +const _xawrl = "x-amz-website-redirect-location"; +const _xs = "xsi:type"; +const n0 = "com.amazonaws.s3"; +const schema_1 = require("@smithy/core/schema"); +const errors_1 = require("../models/errors"); +const S3ServiceException_1 = require("../models/S3ServiceException"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.S3ServiceException$ = [-3, _s, "S3ServiceException", 0, [], []]; +_s_registry.registerError(exports.S3ServiceException$, S3ServiceException_1.S3ServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.AccessDenied$ = [-3, n0, _AD, + { [_e]: _c, [_hE]: 403 }, + [], + [] +]; +n0_registry.registerError(exports.AccessDenied$, errors_1.AccessDenied); +exports.BucketAlreadyExists$ = [-3, n0, _BAE, + { [_e]: _c, [_hE]: 409 }, + [], + [] +]; +n0_registry.registerError(exports.BucketAlreadyExists$, errors_1.BucketAlreadyExists); +exports.BucketAlreadyOwnedByYou$ = [-3, n0, _BAOBY, + { [_e]: _c, [_hE]: 409 }, + [], + [] +]; +n0_registry.registerError(exports.BucketAlreadyOwnedByYou$, errors_1.BucketAlreadyOwnedByYou); +exports.EncryptionTypeMismatch$ = [-3, n0, _ETM, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(exports.EncryptionTypeMismatch$, errors_1.EncryptionTypeMismatch); +exports.IdempotencyParameterMismatch$ = [-3, n0, _IPM, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(exports.IdempotencyParameterMismatch$, errors_1.IdempotencyParameterMismatch); +exports.InvalidObjectState$ = [-3, n0, _IOS, + { [_e]: _c, [_hE]: 403 }, + [_SC, _AT], + [0, 0] +]; +n0_registry.registerError(exports.InvalidObjectState$, errors_1.InvalidObjectState); +exports.InvalidRequest$ = [-3, n0, _IR, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(exports.InvalidRequest$, errors_1.InvalidRequest); +exports.InvalidWriteOffset$ = [-3, n0, _IWO, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(exports.InvalidWriteOffset$, errors_1.InvalidWriteOffset); +exports.NoSuchBucket$ = [-3, n0, _NSB, + { [_e]: _c, [_hE]: 404 }, + [], + [] +]; +n0_registry.registerError(exports.NoSuchBucket$, errors_1.NoSuchBucket); +exports.NoSuchKey$ = [-3, n0, _NSK, + { [_e]: _c, [_hE]: 404 }, + [], + [] +]; +n0_registry.registerError(exports.NoSuchKey$, errors_1.NoSuchKey); +exports.NoSuchUpload$ = [-3, n0, _NSU, + { [_e]: _c, [_hE]: 404 }, + [], + [] +]; +n0_registry.registerError(exports.NoSuchUpload$, errors_1.NoSuchUpload); +exports.NotFound$ = [-3, n0, _NF, + { [_e]: _c }, + [], + [] +]; +n0_registry.registerError(exports.NotFound$, errors_1.NotFound); +exports.ObjectAlreadyInActiveTierError$ = [-3, n0, _OAIATE, + { [_e]: _c, [_hE]: 403 }, + [], + [] +]; +n0_registry.registerError(exports.ObjectAlreadyInActiveTierError$, errors_1.ObjectAlreadyInActiveTierError); +exports.ObjectNotInActiveTierError$ = [-3, n0, _ONIATE, + { [_e]: _c, [_hE]: 403 }, + [], + [] +]; +n0_registry.registerError(exports.ObjectNotInActiveTierError$, errors_1.ObjectNotInActiveTierError); +exports.TooManyParts$ = [-3, n0, _TMP, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(exports.TooManyParts$, errors_1.TooManyParts); +exports.errorTypeRegistries = [ + _s_registry, + n0_registry, +]; +var CopySourceSSECustomerKey = [0, n0, _CSSSECK, 8, 0]; +var NonEmptyKmsKeyArnString = [0, n0, _NEKKAS, 8, 0]; +var SessionCredentialValue = [0, n0, _SCV, 8, 0]; +var SSECustomerKey = [0, n0, _SSECK, 8, 0]; +var SSEKMSEncryptionContext = [0, n0, _SSEKMSEC, 8, 0]; +var SSEKMSKeyId = [0, n0, _SSEKMSKI, 8, 0]; +var StreamingBlob = [0, n0, _SB, { [_st]: 1 }, 42]; +exports.AbacStatus$ = [3, n0, _AS, + 0, + [_S], + [0] +]; +exports.AbortIncompleteMultipartUpload$ = [3, n0, _AIMU, + 0, + [_DAI], + [1] +]; +exports.AbortMultipartUploadOutput$ = [3, n0, _AMUO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +exports.AbortMultipartUploadRequest$ = [3, n0, _AMUR, + 0, + [_B, _K, _UI, _RP, _EBO, _IMIT], + [[0, 1], [0, 1], [0, { [_hQ]: _uI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [6, { [_hH]: _xaimit }]], 3 +]; +exports.AccelerateConfiguration$ = [3, n0, _AC, + 0, + [_S], + [0] +]; +exports.AccessControlPolicy$ = [3, n0, _ACP, + 0, + [_G, _O], + [[() => Grants, { [_xN]: _ACL }], () => exports.Owner$] +]; +exports.AccessControlTranslation$ = [3, n0, _ACT, + 0, + [_O], + [0], 1 +]; +exports.AnalyticsAndOperator$ = [3, n0, _AAO, + 0, + [_P, _T], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }]] +]; +exports.AnalyticsConfiguration$ = [3, n0, _ACn, + 0, + [_I, _SCA, _F], + [0, () => exports.StorageClassAnalysis$, [() => exports.AnalyticsFilter$, 0]], 2 +]; +exports.AnalyticsExportDestination$ = [3, n0, _AED, + 0, + [_SBD], + [() => exports.AnalyticsS3BucketDestination$], 1 +]; +exports.AnalyticsS3BucketDestination$ = [3, n0, _ASBD, + 0, + [_Fo, _B, _BAI, _P], + [0, 0, 0, 0], 2 +]; +exports.BlockedEncryptionTypes$ = [3, n0, _BET, + 0, + [_ET], + [[() => EncryptionTypeList, { [_xF]: 1 }]] +]; +exports.Bucket$ = [3, n0, _B, + 0, + [_N, _CD, _BR, _BA], + [0, 4, 0, 0] +]; +exports.BucketInfo$ = [3, n0, _BI, + 0, + [_DR, _Ty], + [0, 0] +]; +exports.BucketLifecycleConfiguration$ = [3, n0, _BLC, + 0, + [_R], + [[() => LifecycleRules, { [_xF]: 1, [_xN]: _Ru }]], 1 +]; +exports.BucketLoggingStatus$ = [3, n0, _BLS, + 0, + [_LE], + [[() => exports.LoggingEnabled$, 0]] +]; +exports.Checksum$ = [3, n0, _C, + 0, + [_CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT], + [0, 0, 0, 0, 0, 0] +]; +exports.CommonPrefix$ = [3, n0, _CP, + 0, + [_P], + [0] +]; +exports.CompletedMultipartUpload$ = [3, n0, _CMU, + 0, + [_Pa], + [[() => CompletedPartList, { [_xF]: 1, [_xN]: _Par }]] +]; +exports.CompletedPart$ = [3, n0, _CPo, + 0, + [_ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _PN], + [0, 0, 0, 0, 0, 0, 1] +]; +exports.CompleteMultipartUploadOutput$ = [3, n0, _CMUO, + { [_xN]: _CMUR }, + [_L, _B, _K, _E, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _SSE, _VI, _SSEKMSKI, _BKE, _RC], + [0, 0, 0, [0, { [_hH]: _xae }], 0, 0, 0, 0, 0, 0, 0, [0, { [_hH]: _xasse }], [0, { [_hH]: _xavi }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]] +]; +exports.CompleteMultipartUploadRequest$ = [3, n0, _CMURo, + 0, + [_B, _K, _UI, _MU, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _MOS, _RP, _EBO, _IM, _INM, _SSECA, _SSECK, _SSECKMD], + [[0, 1], [0, 1], [0, { [_hQ]: _uI }], [() => exports.CompletedMultipartUpload$, { [_hP]: 1, [_xN]: _CMUo }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [1, { [_hH]: _xamos }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }]], 3 +]; +exports.Condition$ = [3, n0, _Co, + 0, + [_HECRE, _KPE], + [0, 0] +]; +exports.ContinuationEvent$ = [3, n0, _CE, + 0, + [], + [] +]; +exports.CopyObjectOutput$ = [3, n0, _COO, + 0, + [_COR, _E, _CSVI, _VI, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RC], + [[() => exports.CopyObjectResult$, 16], [0, { [_hH]: _xae }], [0, { [_hH]: _xacsvi }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]] +]; +exports.CopyObjectRequest$ = [3, n0, _CORo, + 0, + [_B, _CS, _K, _ACL_, _CC, _CA, _CDo, _CEo, _CL, _CTo, _CSIM, _CSIMS, _CSINM, _CSIUS, _Ex, _GFC, _GR, _GRACP, _GWACP, _IM, _INM, _M, _MD, _TD, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _CSSSECA, _CSSSECK, _CSSSECKMD, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _EBO, _ESBO], + [[0, 1], [0, { [_hH]: _xacs__ }], [0, 1], [0, { [_hH]: _xaa }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _xaca }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CT_ }], [0, { [_hH]: _xacsim }], [4, { [_hH]: _xacsims }], [0, { [_hH]: _xacsinm }], [4, { [_hH]: _xacsius }], [4, { [_hH]: _Ex }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagwa }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xamd }], [0, { [_hH]: _xatd }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xacssseca }], [() => CopySourceSSECustomerKey, { [_hH]: _xacssseck }], [0, { [_hH]: _xacssseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xat }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasebo }]], 3 +]; +exports.CopyObjectResult$ = [3, n0, _COR, + 0, + [_ETa, _LM, _CT, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh], + [0, 4, 0, 0, 0, 0, 0, 0] +]; +exports.CopyPartResult$ = [3, n0, _CPR, + 0, + [_ETa, _LM, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh], + [0, 4, 0, 0, 0, 0, 0] +]; +exports.CORSConfiguration$ = [3, n0, _CORSC, + 0, + [_CORSR], + [[() => CORSRules, { [_xF]: 1, [_xN]: _CORSRu }]], 1 +]; +exports.CORSRule$ = [3, n0, _CORSRu, + 0, + [_AM, _AO, _ID, _AH, _EH, _MAS], + [[64 | 0, { [_xF]: 1, [_xN]: _AMl }], [64 | 0, { [_xF]: 1, [_xN]: _AOl }], 0, [64 | 0, { [_xF]: 1, [_xN]: _AHl }], [64 | 0, { [_xF]: 1, [_xN]: _EHx }], 1], 2 +]; +exports.CreateBucketConfiguration$ = [3, n0, _CBC, + 0, + [_LC, _L, _B, _T], + [0, () => exports.LocationInfo$, () => exports.BucketInfo$, [() => TagSet, 0]] +]; +exports.CreateBucketMetadataConfigurationRequest$ = [3, n0, _CBMCR, + 0, + [_B, _MC, _CMD, _CA, _EBO], + [[0, 1], [() => exports.MetadataConfiguration$, { [_hP]: 1, [_xN]: _MC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.CreateBucketMetadataTableConfigurationRequest$ = [3, n0, _CBMTCR, + 0, + [_B, _MTC, _CMD, _CA, _EBO], + [[0, 1], [() => exports.MetadataTableConfiguration$, { [_hP]: 1, [_xN]: _MTC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.CreateBucketOutput$ = [3, n0, _CBO, + 0, + [_L, _BA], + [[0, { [_hH]: _L }], [0, { [_hH]: _xaba }]] +]; +exports.CreateBucketRequest$ = [3, n0, _CBR, + 0, + [_B, _ACL_, _CBC, _GFC, _GR, _GRACP, _GW, _GWACP, _OLEFB, _OO, _BN], + [[0, 1], [0, { [_hH]: _xaa }], [() => exports.CreateBucketConfiguration$, { [_hP]: 1, [_xN]: _CBC }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagw }], [0, { [_hH]: _xagwa }], [2, { [_hH]: _xabole }], [0, { [_hH]: _xaoo }], [0, { [_hH]: _xabn }]], 1 +]; +exports.CreateMultipartUploadOutput$ = [3, n0, _CMUOr, + { [_xN]: _IMUR }, + [_ADb, _ARI, _B, _K, _UI, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RC, _CA, _CT], + [[4, { [_hH]: _xaad }], [0, { [_hH]: _xaari }], [0, { [_xN]: _B }], 0, 0, [0, { [_hH]: _xasse }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }], [0, { [_hH]: _xaca }], [0, { [_hH]: _xact }]] +]; +exports.CreateMultipartUploadRequest$ = [3, n0, _CMURr, + 0, + [_B, _K, _ACL_, _CC, _CDo, _CEo, _CL, _CTo, _Ex, _GFC, _GR, _GRACP, _GWACP, _M, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _EBO, _CA, _CT], + [[0, 1], [0, 1], [0, { [_hH]: _xaa }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CT_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagwa }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xat }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xaca }], [0, { [_hH]: _xact }]], 2 +]; +exports.CreateSessionOutput$ = [3, n0, _CSO, + { [_xN]: _CSR }, + [_Cr, _SSE, _SSEKMSKI, _SSEKMSEC, _BKE], + [[() => exports.SessionCredentials$, { [_xN]: _Cr }], [0, { [_hH]: _xasse }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }]], 1 +]; +exports.CreateSessionRequest$ = [3, n0, _CSRr, + 0, + [_B, _SM, _SSE, _SSEKMSKI, _SSEKMSEC, _BKE], + [[0, 1], [0, { [_hH]: _xacsm }], [0, { [_hH]: _xasse }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }]], 1 +]; +exports.CSVInput$ = [3, n0, _CSVIn, + 0, + [_FHI, _Com, _QEC, _RD, _FD, _QC, _AQRD], + [0, 0, 0, 0, 0, 0, 2] +]; +exports.CSVOutput$ = [3, n0, _CSVO, + 0, + [_QF, _QEC, _RD, _FD, _QC], + [0, 0, 0, 0, 0] +]; +exports.DefaultRetention$ = [3, n0, _DRe, + 0, + [_Mo, _D, _Y], + [0, 1, 1] +]; +exports.Delete$ = [3, n0, _De, + 0, + [_Ob, _Q], + [[() => ObjectIdentifierList, { [_xF]: 1, [_xN]: _Obj }], 2], 1 +]; +exports.DeleteBucketAnalyticsConfigurationRequest$ = [3, n0, _DBACR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.DeleteBucketCorsRequest$ = [3, n0, _DBCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketEncryptionRequest$ = [3, n0, _DBER, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketIntelligentTieringConfigurationRequest$ = [3, n0, _DBITCR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.DeleteBucketInventoryConfigurationRequest$ = [3, n0, _DBICR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.DeleteBucketLifecycleRequest$ = [3, n0, _DBLR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketMetadataConfigurationRequest$ = [3, n0, _DBMCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketMetadataTableConfigurationRequest$ = [3, n0, _DBMTCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketMetricsConfigurationRequest$ = [3, n0, _DBMCRe, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.DeleteBucketOwnershipControlsRequest$ = [3, n0, _DBOCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketPolicyRequest$ = [3, n0, _DBPR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketReplicationRequest$ = [3, n0, _DBRR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketRequest$ = [3, n0, _DBR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketTaggingRequest$ = [3, n0, _DBTR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeleteBucketWebsiteRequest$ = [3, n0, _DBWR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.DeletedObject$ = [3, n0, _DO, + 0, + [_K, _VI, _DM, _DMVI], + [0, 0, 2, 0] +]; +exports.DeleteMarkerEntry$ = [3, n0, _DME, + 0, + [_O, _K, _VI, _IL, _LM], + [() => exports.Owner$, 0, 0, 2, 4] +]; +exports.DeleteMarkerReplication$ = [3, n0, _DMR, + 0, + [_S], + [0] +]; +exports.DeleteObjectOutput$ = [3, n0, _DOO, + 0, + [_DM, _VI, _RC], + [[2, { [_hH]: _xadm }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xarc }]] +]; +exports.DeleteObjectRequest$ = [3, n0, _DOR, + 0, + [_B, _K, _MFA, _VI, _RP, _BGR, _EBO, _IM, _IMLMT, _IMS], + [[0, 1], [0, 1], [0, { [_hH]: _xam_ }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [2, { [_hH]: _xabgr }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _IM_ }], [6, { [_hH]: _xaimlmt }], [1, { [_hH]: _xaims }]], 2 +]; +exports.DeleteObjectsOutput$ = [3, n0, _DOOe, + { [_xN]: _DRel }, + [_Del, _RC, _Er], + [[() => DeletedObjects, { [_xF]: 1 }], [0, { [_hH]: _xarc }], [() => Errors, { [_xF]: 1, [_xN]: _Err }]] +]; +exports.DeleteObjectsRequest$ = [3, n0, _DORe, + 0, + [_B, _De, _MFA, _RP, _BGR, _EBO, _CA], + [[0, 1], [() => exports.Delete$, { [_hP]: 1, [_xN]: _De }], [0, { [_hH]: _xam_ }], [0, { [_hH]: _xarp }], [2, { [_hH]: _xabgr }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasca }]], 2 +]; +exports.DeleteObjectTaggingOutput$ = [3, n0, _DOTO, + 0, + [_VI], + [[0, { [_hH]: _xavi }]] +]; +exports.DeleteObjectTaggingRequest$ = [3, n0, _DOTR, + 0, + [_B, _K, _VI, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.DeletePublicAccessBlockRequest$ = [3, n0, _DPABR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.Destination$ = [3, n0, _Des, + 0, + [_B, _A, _SC, _ACT, _EC, _RT, _Me], + [0, 0, 0, () => exports.AccessControlTranslation$, () => exports.EncryptionConfiguration$, () => exports.ReplicationTime$, () => exports.Metrics$], 1 +]; +exports.DestinationResult$ = [3, n0, _DRes, + 0, + [_TBT, _TBA, _TN], + [0, 0, 0] +]; +exports.Encryption$ = [3, n0, _En, + 0, + [_ET, _KMSKI, _KMSC], + [0, [() => SSEKMSKeyId, 0], 0], 1 +]; +exports.EncryptionConfiguration$ = [3, n0, _EC, + 0, + [_RKKID], + [0] +]; +exports.EndEvent$ = [3, n0, _EE, + 0, + [], + [] +]; +exports._Error$ = [3, n0, _Err, + 0, + [_K, _VI, _Cod, _Mes], + [0, 0, 0, 0] +]; +exports.ErrorDetails$ = [3, n0, _ED, + 0, + [_ECr, _EM], + [0, 0] +]; +exports.ErrorDocument$ = [3, n0, _EDr, + 0, + [_K], + [0], 1 +]; +exports.EventBridgeConfiguration$ = [3, n0, _EBC, + 0, + [], + [] +]; +exports.ExistingObjectReplication$ = [3, n0, _EOR, + 0, + [_S], + [0], 1 +]; +exports.FilterRule$ = [3, n0, _FR, + 0, + [_N, _V], + [0, 0] +]; +exports.GetBucketAbacOutput$ = [3, n0, _GBAO, + 0, + [_AS], + [[() => exports.AbacStatus$, 16]] +]; +exports.GetBucketAbacRequest$ = [3, n0, _GBAR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketAccelerateConfigurationOutput$ = [3, n0, _GBACO, + { [_xN]: _AC }, + [_S, _RC], + [0, [0, { [_hH]: _xarc }]] +]; +exports.GetBucketAccelerateConfigurationRequest$ = [3, n0, _GBACR, + 0, + [_B, _EBO, _RP], + [[0, 1], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 1 +]; +exports.GetBucketAclOutput$ = [3, n0, _GBAOe, + { [_xN]: _ACP }, + [_O, _G], + [() => exports.Owner$, [() => Grants, { [_xN]: _ACL }]] +]; +exports.GetBucketAclRequest$ = [3, n0, _GBARe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketAnalyticsConfigurationOutput$ = [3, n0, _GBACOe, + 0, + [_ACn], + [[() => exports.AnalyticsConfiguration$, 16]] +]; +exports.GetBucketAnalyticsConfigurationRequest$ = [3, n0, _GBACRe, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.GetBucketCorsOutput$ = [3, n0, _GBCO, + { [_xN]: _CORSC }, + [_CORSR], + [[() => CORSRules, { [_xF]: 1, [_xN]: _CORSRu }]] +]; +exports.GetBucketCorsRequest$ = [3, n0, _GBCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketEncryptionOutput$ = [3, n0, _GBEO, + 0, + [_SSEC], + [[() => exports.ServerSideEncryptionConfiguration$, 16]] +]; +exports.GetBucketEncryptionRequest$ = [3, n0, _GBER, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketIntelligentTieringConfigurationOutput$ = [3, n0, _GBITCO, + 0, + [_ITC], + [[() => exports.IntelligentTieringConfiguration$, 16]] +]; +exports.GetBucketIntelligentTieringConfigurationRequest$ = [3, n0, _GBITCR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.GetBucketInventoryConfigurationOutput$ = [3, n0, _GBICO, + 0, + [_IC], + [[() => exports.InventoryConfiguration$, 16]] +]; +exports.GetBucketInventoryConfigurationRequest$ = [3, n0, _GBICR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.GetBucketLifecycleConfigurationOutput$ = [3, n0, _GBLCO, + { [_xN]: _LCi }, + [_R, _TDMOS], + [[() => LifecycleRules, { [_xF]: 1, [_xN]: _Ru }], [0, { [_hH]: _xatdmos }]] +]; +exports.GetBucketLifecycleConfigurationRequest$ = [3, n0, _GBLCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketLocationOutput$ = [3, n0, _GBLO, + { [_xN]: _LC }, + [_LC], + [0] +]; +exports.GetBucketLocationRequest$ = [3, n0, _GBLR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketLoggingOutput$ = [3, n0, _GBLOe, + { [_xN]: _BLS }, + [_LE], + [[() => exports.LoggingEnabled$, 0]] +]; +exports.GetBucketLoggingRequest$ = [3, n0, _GBLRe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketMetadataConfigurationOutput$ = [3, n0, _GBMCO, + 0, + [_GBMCR], + [[() => exports.GetBucketMetadataConfigurationResult$, 16]] +]; +exports.GetBucketMetadataConfigurationRequest$ = [3, n0, _GBMCRe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketMetadataConfigurationResult$ = [3, n0, _GBMCR, + 0, + [_MCR], + [() => exports.MetadataConfigurationResult$], 1 +]; +exports.GetBucketMetadataTableConfigurationOutput$ = [3, n0, _GBMTCO, + 0, + [_GBMTCR], + [[() => exports.GetBucketMetadataTableConfigurationResult$, 16]] +]; +exports.GetBucketMetadataTableConfigurationRequest$ = [3, n0, _GBMTCRe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketMetadataTableConfigurationResult$ = [3, n0, _GBMTCR, + 0, + [_MTCR, _S, _Err], + [() => exports.MetadataTableConfigurationResult$, 0, () => exports.ErrorDetails$], 2 +]; +exports.GetBucketMetricsConfigurationOutput$ = [3, n0, _GBMCOe, + 0, + [_MCe], + [[() => exports.MetricsConfiguration$, 16]] +]; +exports.GetBucketMetricsConfigurationRequest$ = [3, n0, _GBMCRet, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.GetBucketNotificationConfigurationRequest$ = [3, n0, _GBNCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketOwnershipControlsOutput$ = [3, n0, _GBOCO, + 0, + [_OC], + [[() => exports.OwnershipControls$, 16]] +]; +exports.GetBucketOwnershipControlsRequest$ = [3, n0, _GBOCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketPolicyOutput$ = [3, n0, _GBPO, + 0, + [_Po], + [[0, 16]] +]; +exports.GetBucketPolicyRequest$ = [3, n0, _GBPR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketPolicyStatusOutput$ = [3, n0, _GBPSO, + 0, + [_PS], + [[() => exports.PolicyStatus$, 16]] +]; +exports.GetBucketPolicyStatusRequest$ = [3, n0, _GBPSR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketReplicationOutput$ = [3, n0, _GBRO, + 0, + [_RCe], + [[() => exports.ReplicationConfiguration$, 16]] +]; +exports.GetBucketReplicationRequest$ = [3, n0, _GBRR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketRequestPaymentOutput$ = [3, n0, _GBRPO, + { [_xN]: _RPC }, + [_Pay], + [0] +]; +exports.GetBucketRequestPaymentRequest$ = [3, n0, _GBRPR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketTaggingOutput$ = [3, n0, _GBTO, + { [_xN]: _Tag }, + [_TS], + [[() => TagSet, 0]], 1 +]; +exports.GetBucketTaggingRequest$ = [3, n0, _GBTR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketVersioningOutput$ = [3, n0, _GBVO, + { [_xN]: _VC }, + [_S, _MFAD], + [0, [0, { [_xN]: _MDf }]] +]; +exports.GetBucketVersioningRequest$ = [3, n0, _GBVR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetBucketWebsiteOutput$ = [3, n0, _GBWO, + { [_xN]: _WC }, + [_RART, _IDn, _EDr, _RR], + [() => exports.RedirectAllRequestsTo$, () => exports.IndexDocument$, () => exports.ErrorDocument$, [() => RoutingRules, 0]] +]; +exports.GetBucketWebsiteRequest$ = [3, n0, _GBWR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetObjectAclOutput$ = [3, n0, _GOAO, + { [_xN]: _ACP }, + [_O, _G, _RC], + [() => exports.Owner$, [() => Grants, { [_xN]: _ACL }], [0, { [_hH]: _xarc }]] +]; +exports.GetObjectAclRequest$ = [3, n0, _GOAR, + 0, + [_B, _K, _VI, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.GetObjectAttributesOutput$ = [3, n0, _GOAOe, + { [_xN]: _GOARe }, + [_DM, _LM, _VI, _RC, _ETa, _C, _OP, _SC, _OS], + [[2, { [_hH]: _xadm }], [4, { [_hH]: _LM_ }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xarc }], 0, () => exports.Checksum$, [() => exports.GetObjectAttributesParts$, 0], 0, 1] +]; +exports.GetObjectAttributesParts$ = [3, n0, _GOAP, + 0, + [_TPC, _PNM, _NPNM, _MP, _IT, _Pa], + [[1, { [_xN]: _PC }], 0, 0, 1, 2, [() => PartsList, { [_xF]: 1, [_xN]: _Par }]] +]; +exports.GetObjectAttributesRequest$ = [3, n0, _GOARet, + 0, + [_B, _K, _OA, _VI, _MP, _PNM, _SSECA, _SSECK, _SSECKMD, _RP, _EBO], + [[0, 1], [0, 1], [64 | 0, { [_hH]: _xaoa }], [0, { [_hQ]: _vI }], [1, { [_hH]: _xamp }], [0, { [_hH]: _xapnm }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 3 +]; +exports.GetObjectLegalHoldOutput$ = [3, n0, _GOLHO, + 0, + [_LH], + [[() => exports.ObjectLockLegalHold$, { [_hP]: 1, [_xN]: _LH }]] +]; +exports.GetObjectLegalHoldRequest$ = [3, n0, _GOLHR, + 0, + [_B, _K, _VI, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.GetObjectLockConfigurationOutput$ = [3, n0, _GOLCO, + 0, + [_OLC], + [[() => exports.ObjectLockConfiguration$, 16]] +]; +exports.GetObjectLockConfigurationRequest$ = [3, n0, _GOLCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GetObjectOutput$ = [3, n0, _GOO, + 0, + [_Bo, _DM, _AR, _E, _Re, _LM, _CLo, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _MM, _VI, _CC, _CDo, _CEo, _CL, _CR, _CTo, _Ex, _ES, _WRL, _SSE, _M, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _SC, _RC, _RS, _PC, _TC, _OLM, _OLRUD, _OLLHS], + [[() => StreamingBlob, 16], [2, { [_hH]: _xadm }], [0, { [_hH]: _ar }], [0, { [_hH]: _xae }], [0, { [_hH]: _xar }], [4, { [_hH]: _LM_ }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _ETa }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [1, { [_hH]: _xamm }], [0, { [_hH]: _xavi }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CR_ }], [0, { [_hH]: _CT_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _ES }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasse }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xarc }], [0, { [_hH]: _xars }], [1, { [_hH]: _xampc }], [1, { [_hH]: _xatc }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }]] +]; +exports.GetObjectRequest$ = [3, n0, _GOR, + 0, + [_B, _K, _IM, _IMSf, _INM, _IUS, _Ra, _RCC, _RCD, _RCE, _RCL, _RCT, _RE, _VI, _SSECA, _SSECK, _SSECKMD, _RP, _PN, _EBO, _CMh], + [[0, 1], [0, 1], [0, { [_hH]: _IM_ }], [4, { [_hH]: _IMS_ }], [0, { [_hH]: _INM_ }], [4, { [_hH]: _IUS_ }], [0, { [_hH]: _Ra }], [0, { [_hQ]: _rcc }], [0, { [_hQ]: _rcd }], [0, { [_hQ]: _rce }], [0, { [_hQ]: _rcl }], [0, { [_hQ]: _rct }], [6, { [_hQ]: _re }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [1, { [_hQ]: _pN }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xacm }]], 2 +]; +exports.GetObjectRetentionOutput$ = [3, n0, _GORO, + 0, + [_Ret], + [[() => exports.ObjectLockRetention$, { [_hP]: 1, [_xN]: _Ret }]] +]; +exports.GetObjectRetentionRequest$ = [3, n0, _GORR, + 0, + [_B, _K, _VI, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.GetObjectTaggingOutput$ = [3, n0, _GOTO, + { [_xN]: _Tag }, + [_TS, _VI], + [[() => TagSet, 0], [0, { [_hH]: _xavi }]], 1 +]; +exports.GetObjectTaggingRequest$ = [3, n0, _GOTR, + 0, + [_B, _K, _VI, _EBO, _RP], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 2 +]; +exports.GetObjectTorrentOutput$ = [3, n0, _GOTOe, + 0, + [_Bo, _RC], + [[() => StreamingBlob, 16], [0, { [_hH]: _xarc }]] +]; +exports.GetObjectTorrentRequest$ = [3, n0, _GOTRe, + 0, + [_B, _K, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.GetPublicAccessBlockOutput$ = [3, n0, _GPABO, + 0, + [_PABC], + [[() => exports.PublicAccessBlockConfiguration$, 16]] +]; +exports.GetPublicAccessBlockRequest$ = [3, n0, _GPABR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.GlacierJobParameters$ = [3, n0, _GJP, + 0, + [_Ti], + [0], 1 +]; +exports.Grant$ = [3, n0, _Gr, + 0, + [_Gra, _Pe], + [[() => exports.Grantee$, { [_xNm]: [_x, _hi] }], 0] +]; +exports.Grantee$ = [3, n0, _Gra, + 0, + [_Ty, _DN, _EA, _ID, _URI], + [[0, { [_xA]: 1, [_xN]: _xs }], 0, 0, 0, 0], 1 +]; +exports.HeadBucketOutput$ = [3, n0, _HBO, + 0, + [_BA, _BLT, _BLN, _BR, _APA], + [[0, { [_hH]: _xaba }], [0, { [_hH]: _xablt }], [0, { [_hH]: _xabln }], [0, { [_hH]: _xabr }], [2, { [_hH]: _xaapa }]] +]; +exports.HeadBucketRequest$ = [3, n0, _HBR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +exports.HeadObjectOutput$ = [3, n0, _HOO, + 0, + [_DM, _AR, _E, _Re, _ASr, _LM, _CLo, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _ETa, _MM, _VI, _CC, _CDo, _CEo, _CL, _CTo, _CR, _Ex, _ES, _WRL, _SSE, _M, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _SC, _RC, _RS, _PC, _TC, _OLM, _OLRUD, _OLLHS], + [[2, { [_hH]: _xadm }], [0, { [_hH]: _ar }], [0, { [_hH]: _xae }], [0, { [_hH]: _xar }], [0, { [_hH]: _xaas }], [4, { [_hH]: _LM_ }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [0, { [_hH]: _ETa }], [1, { [_hH]: _xamm }], [0, { [_hH]: _xavi }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CT_ }], [0, { [_hH]: _CR_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _ES }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasse }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xarc }], [0, { [_hH]: _xars }], [1, { [_hH]: _xampc }], [1, { [_hH]: _xatc }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }]] +]; +exports.HeadObjectRequest$ = [3, n0, _HOR, + 0, + [_B, _K, _IM, _IMSf, _INM, _IUS, _Ra, _RCC, _RCD, _RCE, _RCL, _RCT, _RE, _VI, _SSECA, _SSECK, _SSECKMD, _RP, _PN, _EBO, _CMh], + [[0, 1], [0, 1], [0, { [_hH]: _IM_ }], [4, { [_hH]: _IMS_ }], [0, { [_hH]: _INM_ }], [4, { [_hH]: _IUS_ }], [0, { [_hH]: _Ra }], [0, { [_hQ]: _rcc }], [0, { [_hQ]: _rcd }], [0, { [_hQ]: _rce }], [0, { [_hQ]: _rcl }], [0, { [_hQ]: _rct }], [6, { [_hQ]: _re }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [1, { [_hQ]: _pN }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xacm }]], 2 +]; +exports.IndexDocument$ = [3, n0, _IDn, + 0, + [_Su], + [0], 1 +]; +exports.Initiator$ = [3, n0, _In, + 0, + [_ID, _DN], + [0, 0] +]; +exports.InputSerialization$ = [3, n0, _IS, + 0, + [_CSV, _CTom, _JSON, _Parq], + [() => exports.CSVInput$, 0, () => exports.JSONInput$, () => exports.ParquetInput$] +]; +exports.IntelligentTieringAndOperator$ = [3, n0, _ITAO, + 0, + [_P, _T], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }]] +]; +exports.IntelligentTieringConfiguration$ = [3, n0, _ITC, + 0, + [_I, _S, _Tie, _F], + [0, 0, [() => TieringList, { [_xF]: 1, [_xN]: _Tier }], [() => exports.IntelligentTieringFilter$, 0]], 3 +]; +exports.IntelligentTieringFilter$ = [3, n0, _ITF, + 0, + [_P, _Ta, _An], + [0, () => exports.Tag$, [() => exports.IntelligentTieringAndOperator$, 0]] +]; +exports.InventoryConfiguration$ = [3, n0, _IC, + 0, + [_Des, _IE, _I, _IOV, _Sc, _F, _OF], + [[() => exports.InventoryDestination$, 0], 2, 0, 0, () => exports.InventorySchedule$, () => exports.InventoryFilter$, [() => InventoryOptionalFields, 0]], 5 +]; +exports.InventoryDestination$ = [3, n0, _IDnv, + 0, + [_SBD], + [[() => exports.InventoryS3BucketDestination$, 0]], 1 +]; +exports.InventoryEncryption$ = [3, n0, _IEn, + 0, + [_SSES, _SSEKMS], + [[() => exports.SSES3$, { [_xN]: _SS }], [() => exports.SSEKMS$, { [_xN]: _SK }]] +]; +exports.InventoryFilter$ = [3, n0, _IF, + 0, + [_P], + [0], 1 +]; +exports.InventoryS3BucketDestination$ = [3, n0, _ISBD, + 0, + [_B, _Fo, _AI, _P, _En], + [0, 0, 0, 0, [() => exports.InventoryEncryption$, 0]], 2 +]; +exports.InventorySchedule$ = [3, n0, _ISn, + 0, + [_Fr], + [0], 1 +]; +exports.InventoryTableConfiguration$ = [3, n0, _ITCn, + 0, + [_CSo, _EC], + [0, () => exports.MetadataTableEncryptionConfiguration$], 1 +]; +exports.InventoryTableConfigurationResult$ = [3, n0, _ITCR, + 0, + [_CSo, _TSa, _Err, _TNa, _TA], + [0, 0, () => exports.ErrorDetails$, 0, 0], 1 +]; +exports.InventoryTableConfigurationUpdates$ = [3, n0, _ITCU, + 0, + [_CSo, _EC], + [0, () => exports.MetadataTableEncryptionConfiguration$], 1 +]; +exports.JournalTableConfiguration$ = [3, n0, _JTC, + 0, + [_REe, _EC], + [() => exports.RecordExpiration$, () => exports.MetadataTableEncryptionConfiguration$], 1 +]; +exports.JournalTableConfigurationResult$ = [3, n0, _JTCR, + 0, + [_TSa, _TNa, _REe, _Err, _TA], + [0, 0, () => exports.RecordExpiration$, () => exports.ErrorDetails$, 0], 3 +]; +exports.JournalTableConfigurationUpdates$ = [3, n0, _JTCU, + 0, + [_REe], + [() => exports.RecordExpiration$], 1 +]; +exports.JSONInput$ = [3, n0, _JSONI, + 0, + [_Ty], + [0] +]; +exports.JSONOutput$ = [3, n0, _JSONO, + 0, + [_RD], + [0] +]; +exports.LambdaFunctionConfiguration$ = [3, n0, _LFC, + 0, + [_LFA, _Ev, _I, _F], + [[0, { [_xN]: _CF }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => exports.NotificationConfigurationFilter$, 0]], 2 +]; +exports.LifecycleExpiration$ = [3, n0, _LEi, + 0, + [_Da, _D, _EODM], + [5, 1, 2] +]; +exports.LifecycleRule$ = [3, n0, _LR, + 0, + [_S, _E, _ID, _P, _F, _Tr, _NVT, _NVE, _AIMU], + [0, () => exports.LifecycleExpiration$, 0, 0, [() => exports.LifecycleRuleFilter$, 0], [() => TransitionList, { [_xF]: 1, [_xN]: _Tra }], [() => NoncurrentVersionTransitionList, { [_xF]: 1, [_xN]: _NVTo }], () => exports.NoncurrentVersionExpiration$, () => exports.AbortIncompleteMultipartUpload$], 1 +]; +exports.LifecycleRuleAndOperator$ = [3, n0, _LRAO, + 0, + [_P, _T, _OSGT, _OSLT], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }], 1, 1] +]; +exports.LifecycleRuleFilter$ = [3, n0, _LRF, + 0, + [_P, _Ta, _OSGT, _OSLT, _An], + [0, () => exports.Tag$, 1, 1, [() => exports.LifecycleRuleAndOperator$, 0]] +]; +exports.ListBucketAnalyticsConfigurationsOutput$ = [3, n0, _LBACO, + { [_xN]: _LBACR }, + [_IT, _CTon, _NCT, _ACLn], + [2, 0, 0, [() => AnalyticsConfigurationList, { [_xF]: 1, [_xN]: _ACn }]] +]; +exports.ListBucketAnalyticsConfigurationsRequest$ = [3, n0, _LBACRi, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1 +]; +exports.ListBucketIntelligentTieringConfigurationsOutput$ = [3, n0, _LBITCO, + 0, + [_IT, _CTon, _NCT, _ITCL], + [2, 0, 0, [() => IntelligentTieringConfigurationList, { [_xF]: 1, [_xN]: _ITC }]] +]; +exports.ListBucketIntelligentTieringConfigurationsRequest$ = [3, n0, _LBITCR, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1 +]; +exports.ListBucketInventoryConfigurationsOutput$ = [3, n0, _LBICO, + { [_xN]: _LICR }, + [_CTon, _ICL, _IT, _NCT], + [0, [() => InventoryConfigurationList, { [_xF]: 1, [_xN]: _IC }], 2, 0] +]; +exports.ListBucketInventoryConfigurationsRequest$ = [3, n0, _LBICR, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1 +]; +exports.ListBucketMetricsConfigurationsOutput$ = [3, n0, _LBMCO, + { [_xN]: _LMCR }, + [_IT, _CTon, _NCT, _MCL], + [2, 0, 0, [() => MetricsConfigurationList, { [_xF]: 1, [_xN]: _MCe }]] +]; +exports.ListBucketMetricsConfigurationsRequest$ = [3, n0, _LBMCR, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1 +]; +exports.ListBucketsOutput$ = [3, n0, _LBO, + { [_xN]: _LAMBR }, + [_Bu, _O, _CTon, _P], + [[() => Buckets, 0], () => exports.Owner$, 0, 0] +]; +exports.ListBucketsRequest$ = [3, n0, _LBR, + 0, + [_MB, _CTon, _P, _BR], + [[1, { [_hQ]: _mb }], [0, { [_hQ]: _ct }], [0, { [_hQ]: _p }], [0, { [_hQ]: _br }]] +]; +exports.ListDirectoryBucketsOutput$ = [3, n0, _LDBO, + { [_xN]: _LAMDBR }, + [_Bu, _CTon], + [[() => Buckets, 0], 0] +]; +exports.ListDirectoryBucketsRequest$ = [3, n0, _LDBR, + 0, + [_CTon, _MDB], + [[0, { [_hQ]: _ct }], [1, { [_hQ]: _mdb }]] +]; +exports.ListMultipartUploadsOutput$ = [3, n0, _LMUO, + { [_xN]: _LMUR }, + [_B, _KM, _UIM, _NKM, _P, _Deli, _NUIM, _MUa, _IT, _U, _CPom, _ETn, _RC], + [0, 0, 0, 0, 0, 0, 0, 1, 2, [() => MultipartUploadList, { [_xF]: 1, [_xN]: _Up }], [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH]: _xarc }]] +]; +exports.ListMultipartUploadsRequest$ = [3, n0, _LMURi, + 0, + [_B, _Deli, _ETn, _KM, _MUa, _P, _UIM, _EBO, _RP], + [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [0, { [_hQ]: _km }], [1, { [_hQ]: _mu }], [0, { [_hQ]: _p }], [0, { [_hQ]: _uim }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 1 +]; +exports.ListObjectsOutput$ = [3, n0, _LOO, + { [_xN]: _LBRi }, + [_IT, _Ma, _NM, _Con, _N, _P, _Deli, _MK, _CPom, _ETn, _RC], + [2, 0, 0, [() => ObjectList, { [_xF]: 1 }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH]: _xarc }]] +]; +exports.ListObjectsRequest$ = [3, n0, _LOR, + 0, + [_B, _Deli, _ETn, _Ma, _MK, _P, _RP, _EBO, _OOA], + [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [0, { [_hQ]: _m }], [1, { [_hQ]: _mk }], [0, { [_hQ]: _p }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [64 | 0, { [_hH]: _xaooa }]], 1 +]; +exports.ListObjectsV2Output$ = [3, n0, _LOVO, + { [_xN]: _LBRi }, + [_IT, _Con, _N, _P, _Deli, _MK, _CPom, _ETn, _KC, _CTon, _NCT, _SA, _RC], + [2, [() => ObjectList, { [_xF]: 1 }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, 1, 0, 0, 0, [0, { [_hH]: _xarc }]] +]; +exports.ListObjectsV2Request$ = [3, n0, _LOVR, + 0, + [_B, _Deli, _ETn, _MK, _P, _CTon, _FO, _SA, _RP, _EBO, _OOA], + [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [1, { [_hQ]: _mk }], [0, { [_hQ]: _p }], [0, { [_hQ]: _ct }], [2, { [_hQ]: _fo }], [0, { [_hQ]: _sa }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [64 | 0, { [_hH]: _xaooa }]], 1 +]; +exports.ListObjectVersionsOutput$ = [3, n0, _LOVOi, + { [_xN]: _LVR }, + [_IT, _KM, _VIM, _NKM, _NVIM, _Ve, _DMe, _N, _P, _Deli, _MK, _CPom, _ETn, _RC], + [2, 0, 0, 0, 0, [() => ObjectVersionList, { [_xF]: 1, [_xN]: _Ver }], [() => DeleteMarkers, { [_xF]: 1, [_xN]: _DM }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH]: _xarc }]] +]; +exports.ListObjectVersionsRequest$ = [3, n0, _LOVRi, + 0, + [_B, _Deli, _ETn, _KM, _MK, _P, _VIM, _EBO, _RP, _OOA], + [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [0, { [_hQ]: _km }], [1, { [_hQ]: _mk }], [0, { [_hQ]: _p }], [0, { [_hQ]: _vim }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }], [64 | 0, { [_hH]: _xaooa }]], 1 +]; +exports.ListPartsOutput$ = [3, n0, _LPO, + { [_xN]: _LPR }, + [_ADb, _ARI, _B, _K, _UI, _PNM, _NPNM, _MP, _IT, _Pa, _In, _O, _SC, _RC, _CA, _CT], + [[4, { [_hH]: _xaad }], [0, { [_hH]: _xaari }], 0, 0, 0, 0, 0, 1, 2, [() => Parts, { [_xF]: 1, [_xN]: _Par }], () => exports.Initiator$, () => exports.Owner$, 0, [0, { [_hH]: _xarc }], 0, 0] +]; +exports.ListPartsRequest$ = [3, n0, _LPRi, + 0, + [_B, _K, _UI, _MP, _PNM, _RP, _EBO, _SSECA, _SSECK, _SSECKMD], + [[0, 1], [0, 1], [0, { [_hQ]: _uI }], [1, { [_hQ]: _mp }], [0, { [_hQ]: _pnm }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }]], 3 +]; +exports.LocationInfo$ = [3, n0, _LI, + 0, + [_Ty, _N], + [0, 0] +]; +exports.LoggingEnabled$ = [3, n0, _LE, + 0, + [_TB, _TP, _TG, _TOKF], + [0, 0, [() => TargetGrants, 0], [() => exports.TargetObjectKeyFormat$, 0]], 2 +]; +exports.MetadataConfiguration$ = [3, n0, _MC, + 0, + [_JTC, _ITCn], + [() => exports.JournalTableConfiguration$, () => exports.InventoryTableConfiguration$], 1 +]; +exports.MetadataConfigurationResult$ = [3, n0, _MCR, + 0, + [_DRes, _JTCR, _ITCR], + [() => exports.DestinationResult$, () => exports.JournalTableConfigurationResult$, () => exports.InventoryTableConfigurationResult$], 1 +]; +exports.MetadataEntry$ = [3, n0, _ME, + 0, + [_N, _V], + [0, 0] +]; +exports.MetadataTableConfiguration$ = [3, n0, _MTC, + 0, + [_STD], + [() => exports.S3TablesDestination$], 1 +]; +exports.MetadataTableConfigurationResult$ = [3, n0, _MTCR, + 0, + [_STDR], + [() => exports.S3TablesDestinationResult$], 1 +]; +exports.MetadataTableEncryptionConfiguration$ = [3, n0, _MTEC, + 0, + [_SAs, _KKA], + [0, 0], 1 +]; +exports.Metrics$ = [3, n0, _Me, + 0, + [_S, _ETv], + [0, () => exports.ReplicationTimeValue$], 1 +]; +exports.MetricsAndOperator$ = [3, n0, _MAO, + 0, + [_P, _T, _APAc], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }], 0] +]; +exports.MetricsConfiguration$ = [3, n0, _MCe, + 0, + [_I, _F], + [0, [() => exports.MetricsFilter$, 0]], 1 +]; +exports.MultipartUpload$ = [3, n0, _MU, + 0, + [_UI, _K, _Ini, _SC, _O, _In, _CA, _CT], + [0, 0, 4, 0, () => exports.Owner$, () => exports.Initiator$, 0, 0] +]; +exports.NoncurrentVersionExpiration$ = [3, n0, _NVE, + 0, + [_ND, _NNV], + [1, 1] +]; +exports.NoncurrentVersionTransition$ = [3, n0, _NVTo, + 0, + [_ND, _SC, _NNV], + [1, 0, 1] +]; +exports.NotificationConfiguration$ = [3, n0, _NC, + 0, + [_TCo, _QCu, _LFCa, _EBC], + [[() => TopicConfigurationList, { [_xF]: 1, [_xN]: _TCop }], [() => QueueConfigurationList, { [_xF]: 1, [_xN]: _QCue }], [() => LambdaFunctionConfigurationList, { [_xF]: 1, [_xN]: _CFC }], () => exports.EventBridgeConfiguration$] +]; +exports.NotificationConfigurationFilter$ = [3, n0, _NCF, + 0, + [_K], + [[() => exports.S3KeyFilter$, { [_xN]: _SKe }]] +]; +exports._Object$ = [3, n0, _Obj, + 0, + [_K, _LM, _ETa, _CA, _CT, _Si, _SC, _O, _RSe], + [0, 4, 0, [64 | 0, { [_xF]: 1 }], 0, 1, 0, () => exports.Owner$, () => exports.RestoreStatus$] +]; +exports.ObjectIdentifier$ = [3, n0, _OI, + 0, + [_K, _VI, _ETa, _LMT, _Si], + [0, 0, 0, 6, 1], 1 +]; +exports.ObjectLockConfiguration$ = [3, n0, _OLC, + 0, + [_OLE, _Ru], + [0, () => exports.ObjectLockRule$] +]; +exports.ObjectLockLegalHold$ = [3, n0, _OLLH, + 0, + [_S], + [0] +]; +exports.ObjectLockRetention$ = [3, n0, _OLR, + 0, + [_Mo, _RUD], + [0, 5] +]; +exports.ObjectLockRule$ = [3, n0, _OLRb, + 0, + [_DRe], + [() => exports.DefaultRetention$] +]; +exports.ObjectPart$ = [3, n0, _OPb, + 0, + [_PN, _Si, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh], + [1, 1, 0, 0, 0, 0, 0] +]; +exports.ObjectVersion$ = [3, n0, _OV, + 0, + [_ETa, _CA, _CT, _Si, _SC, _K, _VI, _IL, _LM, _O, _RSe], + [0, [64 | 0, { [_xF]: 1 }], 0, 1, 0, 0, 0, 2, 4, () => exports.Owner$, () => exports.RestoreStatus$] +]; +exports.OutputLocation$ = [3, n0, _OL, + 0, + [_S_], + [[() => exports.S3Location$, 0]] +]; +exports.OutputSerialization$ = [3, n0, _OSu, + 0, + [_CSV, _JSON], + [() => exports.CSVOutput$, () => exports.JSONOutput$] +]; +exports.Owner$ = [3, n0, _O, + 0, + [_DN, _ID], + [0, 0] +]; +exports.OwnershipControls$ = [3, n0, _OC, + 0, + [_R], + [[() => OwnershipControlsRules, { [_xF]: 1, [_xN]: _Ru }]], 1 +]; +exports.OwnershipControlsRule$ = [3, n0, _OCR, + 0, + [_OO], + [0], 1 +]; +exports.ParquetInput$ = [3, n0, _PI, + 0, + [], + [] +]; +exports.Part$ = [3, n0, _Par, + 0, + [_PN, _LM, _ETa, _Si, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh], + [1, 4, 0, 1, 0, 0, 0, 0, 0] +]; +exports.PartitionedPrefix$ = [3, n0, _PP, + { [_xN]: _PP }, + [_PDS], + [0] +]; +exports.PolicyStatus$ = [3, n0, _PS, + 0, + [_IP], + [[2, { [_xN]: _IP }]] +]; +exports.Progress$ = [3, n0, _Pr, + 0, + [_BS, _BP, _BRy], + [1, 1, 1] +]; +exports.ProgressEvent$ = [3, n0, _PE, + 0, + [_Det], + [[() => exports.Progress$, { [_eP]: 1 }]] +]; +exports.PublicAccessBlockConfiguration$ = [3, n0, _PABC, + 0, + [_BPA, _IPA, _BPP, _RPB], + [[2, { [_xN]: _BPA }], [2, { [_xN]: _IPA }], [2, { [_xN]: _BPP }], [2, { [_xN]: _RPB }]] +]; +exports.PutBucketAbacRequest$ = [3, n0, _PBAR, + 0, + [_B, _AS, _CMD, _CA, _EBO], + [[0, 1], [() => exports.AbacStatus$, { [_hP]: 1, [_xN]: _AS }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutBucketAccelerateConfigurationRequest$ = [3, n0, _PBACR, + 0, + [_B, _AC, _EBO, _CA], + [[0, 1], [() => exports.AccelerateConfiguration$, { [_hP]: 1, [_xN]: _AC }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasca }]], 2 +]; +exports.PutBucketAclRequest$ = [3, n0, _PBARu, + 0, + [_B, _ACL_, _ACP, _CMD, _CA, _GFC, _GR, _GRACP, _GW, _GWACP, _EBO], + [[0, 1], [0, { [_hH]: _xaa }], [() => exports.AccessControlPolicy$, { [_hP]: 1, [_xN]: _ACP }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagw }], [0, { [_hH]: _xagwa }], [0, { [_hH]: _xaebo }]], 1 +]; +exports.PutBucketAnalyticsConfigurationRequest$ = [3, n0, _PBACRu, + 0, + [_B, _I, _ACn, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [() => exports.AnalyticsConfiguration$, { [_hP]: 1, [_xN]: _ACn }], [0, { [_hH]: _xaebo }]], 3 +]; +exports.PutBucketCorsRequest$ = [3, n0, _PBCR, + 0, + [_B, _CORSC, _CMD, _CA, _EBO], + [[0, 1], [() => exports.CORSConfiguration$, { [_hP]: 1, [_xN]: _CORSC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutBucketEncryptionRequest$ = [3, n0, _PBER, + 0, + [_B, _SSEC, _CMD, _CA, _EBO], + [[0, 1], [() => exports.ServerSideEncryptionConfiguration$, { [_hP]: 1, [_xN]: _SSEC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutBucketIntelligentTieringConfigurationRequest$ = [3, n0, _PBITCR, + 0, + [_B, _I, _ITC, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [() => exports.IntelligentTieringConfiguration$, { [_hP]: 1, [_xN]: _ITC }], [0, { [_hH]: _xaebo }]], 3 +]; +exports.PutBucketInventoryConfigurationRequest$ = [3, n0, _PBICR, + 0, + [_B, _I, _IC, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [() => exports.InventoryConfiguration$, { [_hP]: 1, [_xN]: _IC }], [0, { [_hH]: _xaebo }]], 3 +]; +exports.PutBucketLifecycleConfigurationOutput$ = [3, n0, _PBLCO, + 0, + [_TDMOS], + [[0, { [_hH]: _xatdmos }]] +]; +exports.PutBucketLifecycleConfigurationRequest$ = [3, n0, _PBLCR, + 0, + [_B, _CA, _LCi, _EBO, _TDMOS], + [[0, 1], [0, { [_hH]: _xasca }], [() => exports.BucketLifecycleConfiguration$, { [_hP]: 1, [_xN]: _LCi }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xatdmos }]], 1 +]; +exports.PutBucketLoggingRequest$ = [3, n0, _PBLR, + 0, + [_B, _BLS, _CMD, _CA, _EBO], + [[0, 1], [() => exports.BucketLoggingStatus$, { [_hP]: 1, [_xN]: _BLS }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutBucketMetricsConfigurationRequest$ = [3, n0, _PBMCR, + 0, + [_B, _I, _MCe, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [() => exports.MetricsConfiguration$, { [_hP]: 1, [_xN]: _MCe }], [0, { [_hH]: _xaebo }]], 3 +]; +exports.PutBucketNotificationConfigurationRequest$ = [3, n0, _PBNCR, + 0, + [_B, _NC, _EBO, _SDV], + [[0, 1], [() => exports.NotificationConfiguration$, { [_hP]: 1, [_xN]: _NC }], [0, { [_hH]: _xaebo }], [2, { [_hH]: _xasdv }]], 2 +]; +exports.PutBucketOwnershipControlsRequest$ = [3, n0, _PBOCR, + 0, + [_B, _OC, _CMD, _EBO, _CA], + [[0, 1], [() => exports.OwnershipControls$, { [_hP]: 1, [_xN]: _OC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasca }]], 2 +]; +exports.PutBucketPolicyRequest$ = [3, n0, _PBPR, + 0, + [_B, _Po, _CMD, _CA, _CRSBA, _EBO], + [[0, 1], [0, 16], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [2, { [_hH]: _xacrsba }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutBucketReplicationRequest$ = [3, n0, _PBRR, + 0, + [_B, _RCe, _CMD, _CA, _To, _EBO], + [[0, 1], [() => exports.ReplicationConfiguration$, { [_hP]: 1, [_xN]: _RCe }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xabolt }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutBucketRequestPaymentRequest$ = [3, n0, _PBRPR, + 0, + [_B, _RPC, _CMD, _CA, _EBO], + [[0, 1], [() => exports.RequestPaymentConfiguration$, { [_hP]: 1, [_xN]: _RPC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutBucketTaggingRequest$ = [3, n0, _PBTR, + 0, + [_B, _Tag, _CMD, _CA, _EBO], + [[0, 1], [() => exports.Tagging$, { [_hP]: 1, [_xN]: _Tag }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutBucketVersioningRequest$ = [3, n0, _PBVR, + 0, + [_B, _VC, _CMD, _CA, _MFA, _EBO], + [[0, 1], [() => exports.VersioningConfiguration$, { [_hP]: 1, [_xN]: _VC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xam_ }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutBucketWebsiteRequest$ = [3, n0, _PBWR, + 0, + [_B, _WC, _CMD, _CA, _EBO], + [[0, 1], [() => exports.WebsiteConfiguration$, { [_hP]: 1, [_xN]: _WC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutObjectAclOutput$ = [3, n0, _POAO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +exports.PutObjectAclRequest$ = [3, n0, _POAR, + 0, + [_B, _K, _ACL_, _ACP, _CMD, _CA, _GFC, _GR, _GRACP, _GW, _GWACP, _RP, _VI, _EBO], + [[0, 1], [0, 1], [0, { [_hH]: _xaa }], [() => exports.AccessControlPolicy$, { [_hP]: 1, [_xN]: _ACP }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagw }], [0, { [_hH]: _xagwa }], [0, { [_hH]: _xarp }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutObjectLegalHoldOutput$ = [3, n0, _POLHO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +exports.PutObjectLegalHoldRequest$ = [3, n0, _POLHR, + 0, + [_B, _K, _LH, _RP, _VI, _CMD, _CA, _EBO], + [[0, 1], [0, 1], [() => exports.ObjectLockLegalHold$, { [_hP]: 1, [_xN]: _LH }], [0, { [_hH]: _xarp }], [0, { [_hQ]: _vI }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutObjectLockConfigurationOutput$ = [3, n0, _POLCO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +exports.PutObjectLockConfigurationRequest$ = [3, n0, _POLCR, + 0, + [_B, _OLC, _RP, _To, _CMD, _CA, _EBO], + [[0, 1], [() => exports.ObjectLockConfiguration$, { [_hP]: 1, [_xN]: _OLC }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xabolt }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 1 +]; +exports.PutObjectOutput$ = [3, n0, _POO, + 0, + [_E, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _SSE, _VI, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _Si, _RC], + [[0, { [_hH]: _xae }], [0, { [_hH]: _ETa }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [1, { [_hH]: _xaos }], [0, { [_hH]: _xarc }]] +]; +exports.PutObjectRequest$ = [3, n0, _POR, + 0, + [_B, _K, _ACL_, _Bo, _CC, _CDo, _CEo, _CL, _CLo, _CMD, _CTo, _CA, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _Ex, _IM, _INM, _GFC, _GR, _GRACP, _GWACP, _WOB, _M, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _EBO], + [[0, 1], [0, 1], [0, { [_hH]: _xaa }], [() => StreamingBlob, 16], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _CM }], [0, { [_hH]: _CT_ }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagwa }], [1, { [_hH]: _xawob }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xat }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutObjectRetentionOutput$ = [3, n0, _PORO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +exports.PutObjectRetentionRequest$ = [3, n0, _PORR, + 0, + [_B, _K, _Ret, _RP, _VI, _BGR, _CMD, _CA, _EBO], + [[0, 1], [0, 1], [() => exports.ObjectLockRetention$, { [_hP]: 1, [_xN]: _Ret }], [0, { [_hH]: _xarp }], [0, { [_hQ]: _vI }], [2, { [_hH]: _xabgr }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.PutObjectTaggingOutput$ = [3, n0, _POTO, + 0, + [_VI], + [[0, { [_hH]: _xavi }]] +]; +exports.PutObjectTaggingRequest$ = [3, n0, _POTR, + 0, + [_B, _K, _Tag, _VI, _CMD, _CA, _EBO, _RP], + [[0, 1], [0, 1], [() => exports.Tagging$, { [_hP]: 1, [_xN]: _Tag }], [0, { [_hQ]: _vI }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 3 +]; +exports.PutPublicAccessBlockRequest$ = [3, n0, _PPABR, + 0, + [_B, _PABC, _CMD, _CA, _EBO], + [[0, 1], [() => exports.PublicAccessBlockConfiguration$, { [_hP]: 1, [_xN]: _PABC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.QueueConfiguration$ = [3, n0, _QCue, + 0, + [_QA, _Ev, _I, _F], + [[0, { [_xN]: _Qu }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => exports.NotificationConfigurationFilter$, 0]], 2 +]; +exports.RecordExpiration$ = [3, n0, _REe, + 0, + [_E, _D], + [0, 1], 1 +]; +exports.RecordsEvent$ = [3, n0, _REec, + 0, + [_Payl], + [[21, { [_eP]: 1 }]] +]; +exports.Redirect$ = [3, n0, _Red, + 0, + [_HN, _HRC, _Pro, _RKPW, _RKW], + [0, 0, 0, 0, 0] +]; +exports.RedirectAllRequestsTo$ = [3, n0, _RART, + 0, + [_HN, _Pro], + [0, 0], 1 +]; +exports.RenameObjectOutput$ = [3, n0, _ROO, + 0, + [], + [] +]; +exports.RenameObjectRequest$ = [3, n0, _ROR, + 0, + [_B, _K, _RSen, _DIM, _DINM, _DIMS, _DIUS, _SIM, _SINM, _SIMS, _SIUS, _CTl], + [[0, 1], [0, 1], [0, { [_hH]: _xars_ }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [4, { [_hH]: _IMS_ }], [4, { [_hH]: _IUS_ }], [0, { [_hH]: _xarsim }], [0, { [_hH]: _xarsinm }], [6, { [_hH]: _xarsims }], [6, { [_hH]: _xarsius }], [0, { [_hH]: _xact_, [_iT]: 1 }]], 3 +]; +exports.ReplicaModifications$ = [3, n0, _RM, + 0, + [_S], + [0], 1 +]; +exports.ReplicationConfiguration$ = [3, n0, _RCe, + 0, + [_Ro, _R], + [0, [() => ReplicationRules, { [_xF]: 1, [_xN]: _Ru }]], 2 +]; +exports.ReplicationRule$ = [3, n0, _RRe, + 0, + [_S, _Des, _ID, _Pri, _P, _F, _SSC, _EOR, _DMR], + [0, () => exports.Destination$, 0, 1, 0, [() => exports.ReplicationRuleFilter$, 0], () => exports.SourceSelectionCriteria$, () => exports.ExistingObjectReplication$, () => exports.DeleteMarkerReplication$], 2 +]; +exports.ReplicationRuleAndOperator$ = [3, n0, _RRAO, + 0, + [_P, _T], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }]] +]; +exports.ReplicationRuleFilter$ = [3, n0, _RRF, + 0, + [_P, _Ta, _An], + [0, () => exports.Tag$, [() => exports.ReplicationRuleAndOperator$, 0]] +]; +exports.ReplicationTime$ = [3, n0, _RT, + 0, + [_S, _Tim], + [0, () => exports.ReplicationTimeValue$], 2 +]; +exports.ReplicationTimeValue$ = [3, n0, _RTV, + 0, + [_Mi], + [1] +]; +exports.RequestPaymentConfiguration$ = [3, n0, _RPC, + 0, + [_Pay], + [0], 1 +]; +exports.RequestProgress$ = [3, n0, _RPe, + 0, + [_Ena], + [2] +]; +exports.RestoreObjectOutput$ = [3, n0, _ROOe, + 0, + [_RC, _ROP], + [[0, { [_hH]: _xarc }], [0, { [_hH]: _xarop }]] +]; +exports.RestoreObjectRequest$ = [3, n0, _RORe, + 0, + [_B, _K, _VI, _RRes, _RP, _CA, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [() => exports.RestoreRequest$, { [_hP]: 1, [_xN]: _RRes }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.RestoreRequest$ = [3, n0, _RRes, + 0, + [_D, _GJP, _Ty, _Ti, _Desc, _SP, _OL], + [1, () => exports.GlacierJobParameters$, 0, 0, 0, () => exports.SelectParameters$, [() => exports.OutputLocation$, 0]] +]; +exports.RestoreStatus$ = [3, n0, _RSe, + 0, + [_IRIP, _RED], + [2, 4] +]; +exports.RoutingRule$ = [3, n0, _RRo, + 0, + [_Red, _Co], + [() => exports.Redirect$, () => exports.Condition$], 1 +]; +exports.S3KeyFilter$ = [3, n0, _SKF, + 0, + [_FRi], + [[() => FilterRuleList, { [_xF]: 1, [_xN]: _FR }]] +]; +exports.S3Location$ = [3, n0, _SL, + 0, + [_BNu, _P, _En, _CACL, _ACL, _Tag, _UM, _SC], + [0, 0, [() => exports.Encryption$, 0], 0, [() => Grants, 0], [() => exports.Tagging$, 0], [() => UserMetadata, 0], 0], 2 +]; +exports.S3TablesDestination$ = [3, n0, _STD, + 0, + [_TBA, _TNa], + [0, 0], 2 +]; +exports.S3TablesDestinationResult$ = [3, n0, _STDR, + 0, + [_TBA, _TNa, _TA, _TN], + [0, 0, 0, 0], 4 +]; +exports.ScanRange$ = [3, n0, _SR, + 0, + [_St, _End], + [1, 1] +]; +exports.SelectObjectContentOutput$ = [3, n0, _SOCO, + 0, + [_Payl], + [[() => exports.SelectObjectContentEventStream$, 16]] +]; +exports.SelectObjectContentRequest$ = [3, n0, _SOCR, + 0, + [_B, _K, _Exp, _ETx, _IS, _OSu, _SSECA, _SSECK, _SSECKMD, _RPe, _SR, _EBO], + [[0, 1], [0, 1], 0, 0, () => exports.InputSerialization$, () => exports.OutputSerialization$, [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], () => exports.RequestProgress$, () => exports.ScanRange$, [0, { [_hH]: _xaebo }]], 6 +]; +exports.SelectParameters$ = [3, n0, _SP, + 0, + [_IS, _ETx, _Exp, _OSu], + [() => exports.InputSerialization$, 0, 0, () => exports.OutputSerialization$], 4 +]; +exports.ServerSideEncryptionByDefault$ = [3, n0, _SSEBD, + 0, + [_SSEA, _KMSMKID], + [0, [() => SSEKMSKeyId, 0]], 1 +]; +exports.ServerSideEncryptionConfiguration$ = [3, n0, _SSEC, + 0, + [_R], + [[() => ServerSideEncryptionRules, { [_xF]: 1, [_xN]: _Ru }]], 1 +]; +exports.ServerSideEncryptionRule$ = [3, n0, _SSER, + 0, + [_ASSEBD, _BKE, _BET], + [[() => exports.ServerSideEncryptionByDefault$, 0], 2, [() => exports.BlockedEncryptionTypes$, 0]] +]; +exports.SessionCredentials$ = [3, n0, _SCe, + 0, + [_AKI, _SAK, _ST, _E], + [[0, { [_xN]: _AKI }], [() => SessionCredentialValue, { [_xN]: _SAK }], [() => SessionCredentialValue, { [_xN]: _ST }], [4, { [_xN]: _E }]], 4 +]; +exports.SimplePrefix$ = [3, n0, _SPi, + { [_xN]: _SPi }, + [], + [] +]; +exports.SourceSelectionCriteria$ = [3, n0, _SSC, + 0, + [_SKEO, _RM], + [() => exports.SseKmsEncryptedObjects$, () => exports.ReplicaModifications$] +]; +exports.SSEKMS$ = [3, n0, _SSEKMS, + { [_xN]: _SK }, + [_KI], + [[() => SSEKMSKeyId, 0]], 1 +]; +exports.SseKmsEncryptedObjects$ = [3, n0, _SKEO, + 0, + [_S], + [0], 1 +]; +exports.SSEKMSEncryption$ = [3, n0, _SSEKMSE, + { [_xN]: _SK }, + [_KMSKA, _BKE], + [[() => NonEmptyKmsKeyArnString, 0], 2], 1 +]; +exports.SSES3$ = [3, n0, _SSES, + { [_xN]: _SS }, + [], + [] +]; +exports.Stats$ = [3, n0, _Sta, + 0, + [_BS, _BP, _BRy], + [1, 1, 1] +]; +exports.StatsEvent$ = [3, n0, _SE, + 0, + [_Det], + [[() => exports.Stats$, { [_eP]: 1 }]] +]; +exports.StorageClassAnalysis$ = [3, n0, _SCA, + 0, + [_DE], + [() => exports.StorageClassAnalysisDataExport$] +]; +exports.StorageClassAnalysisDataExport$ = [3, n0, _SCADE, + 0, + [_OSV, _Des], + [0, () => exports.AnalyticsExportDestination$], 2 +]; +exports.Tag$ = [3, n0, _Ta, + 0, + [_K, _V], + [0, 0], 2 +]; +exports.Tagging$ = [3, n0, _Tag, + 0, + [_TS], + [[() => TagSet, 0]], 1 +]; +exports.TargetGrant$ = [3, n0, _TGa, + 0, + [_Gra, _Pe], + [[() => exports.Grantee$, { [_xNm]: [_x, _hi] }], 0] +]; +exports.TargetObjectKeyFormat$ = [3, n0, _TOKF, + 0, + [_SPi, _PP], + [[() => exports.SimplePrefix$, { [_xN]: _SPi }], [() => exports.PartitionedPrefix$, { [_xN]: _PP }]] +]; +exports.Tiering$ = [3, n0, _Tier, + 0, + [_D, _AT], + [1, 0], 2 +]; +exports.TopicConfiguration$ = [3, n0, _TCop, + 0, + [_TAo, _Ev, _I, _F], + [[0, { [_xN]: _Top }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => exports.NotificationConfigurationFilter$, 0]], 2 +]; +exports.Transition$ = [3, n0, _Tra, + 0, + [_Da, _D, _SC], + [5, 1, 0] +]; +exports.UpdateBucketMetadataInventoryTableConfigurationRequest$ = [3, n0, _UBMITCR, + 0, + [_B, _ITCn, _CMD, _CA, _EBO], + [[0, 1], [() => exports.InventoryTableConfigurationUpdates$, { [_hP]: 1, [_xN]: _ITCn }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.UpdateBucketMetadataJournalTableConfigurationRequest$ = [3, n0, _UBMJTCR, + 0, + [_B, _JTC, _CMD, _CA, _EBO], + [[0, 1], [() => exports.JournalTableConfigurationUpdates$, { [_hP]: 1, [_xN]: _JTC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +exports.UpdateObjectEncryptionRequest$ = [3, n0, _UOER, + 0, + [_B, _K, _OE, _VI, _RP, _EBO, _CMD, _CA], + [[0, 1], [0, 1], [() => exports.ObjectEncryption$, 16], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }]], 3 +]; +exports.UpdateObjectEncryptionResponse$ = [3, n0, _UOERp, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +exports.UploadPartCopyOutput$ = [3, n0, _UPCO, + 0, + [_CSVI, _CPR, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _RC], + [[0, { [_hH]: _xacsvi }], [() => exports.CopyPartResult$, 16], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]] +]; +exports.UploadPartCopyRequest$ = [3, n0, _UPCR, + 0, + [_B, _CS, _K, _PN, _UI, _CSIM, _CSIMS, _CSINM, _CSIUS, _CSRo, _SSECA, _SSECK, _SSECKMD, _CSSSECA, _CSSSECK, _CSSSECKMD, _RP, _EBO, _ESBO], + [[0, 1], [0, { [_hH]: _xacs__ }], [0, 1], [1, { [_hQ]: _pN }], [0, { [_hQ]: _uI }], [0, { [_hH]: _xacsim }], [4, { [_hH]: _xacsims }], [0, { [_hH]: _xacsinm }], [4, { [_hH]: _xacsius }], [0, { [_hH]: _xacsr }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xacssseca }], [() => CopySourceSSECustomerKey, { [_hH]: _xacssseck }], [0, { [_hH]: _xacssseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasebo }]], 5 +]; +exports.UploadPartOutput$ = [3, n0, _UPO, + 0, + [_SSE, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _RC], + [[0, { [_hH]: _xasse }], [0, { [_hH]: _ETa }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]] +]; +exports.UploadPartRequest$ = [3, n0, _UPR, + 0, + [_B, _K, _PN, _UI, _Bo, _CLo, _CMD, _CA, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _SSECA, _SSECK, _SSECKMD, _RP, _EBO], + [[0, 1], [0, 1], [1, { [_hQ]: _pN }], [0, { [_hQ]: _uI }], [() => StreamingBlob, 16], [1, { [_hH]: _CL__ }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 4 +]; +exports.VersioningConfiguration$ = [3, n0, _VC, + 0, + [_MFAD, _S], + [[0, { [_xN]: _MDf }], 0] +]; +exports.WebsiteConfiguration$ = [3, n0, _WC, + 0, + [_EDr, _IDn, _RART, _RR], + [() => exports.ErrorDocument$, () => exports.IndexDocument$, () => exports.RedirectAllRequestsTo$, [() => RoutingRules, 0]] +]; +exports.WriteGetObjectResponseRequest$ = [3, n0, _WGORR, + 0, + [_RReq, _RTe, _Bo, _SCt, _ECr, _EM, _AR, _CC, _CDo, _CEo, _CL, _CLo, _CR, _CTo, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _DM, _ETa, _Ex, _E, _LM, _MM, _M, _OLM, _OLLHS, _OLRUD, _PC, _RS, _RC, _Re, _SSE, _SSECA, _SSEKMSKI, _SSECKMD, _SC, _TC, _VI, _BKE], + [[0, { [_hL]: 1, [_hH]: _xarr }], [0, { [_hH]: _xart }], [() => StreamingBlob, 16], [1, { [_hH]: _xafs }], [0, { [_hH]: _xafec }], [0, { [_hH]: _xafem }], [0, { [_hH]: _xafhar }], [0, { [_hH]: _xafhCC }], [0, { [_hH]: _xafhCD }], [0, { [_hH]: _xafhCE }], [0, { [_hH]: _xafhCL }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _xafhCR }], [0, { [_hH]: _xafhCT }], [0, { [_hH]: _xafhxacc }], [0, { [_hH]: _xafhxacc_ }], [0, { [_hH]: _xafhxacc__ }], [0, { [_hH]: _xafhxacs }], [0, { [_hH]: _xafhxacs_ }], [2, { [_hH]: _xafhxadm }], [0, { [_hH]: _xafhE }], [4, { [_hH]: _xafhE_ }], [0, { [_hH]: _xafhxae }], [4, { [_hH]: _xafhLM }], [1, { [_hH]: _xafhxamm }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xafhxaolm }], [0, { [_hH]: _xafhxaollh }], [5, { [_hH]: _xafhxaolrud }], [1, { [_hH]: _xafhxampc }], [0, { [_hH]: _xafhxars }], [0, { [_hH]: _xafhxarc }], [0, { [_hH]: _xafhxar }], [0, { [_hH]: _xafhxasse }], [0, { [_hH]: _xafhxasseca }], [() => SSEKMSKeyId, { [_hH]: _xafhxasseakki }], [0, { [_hH]: _xafhxasseckM }], [0, { [_hH]: _xafhxasc }], [1, { [_hH]: _xafhxatc }], [0, { [_hH]: _xafhxavi }], [2, { [_hH]: _xafhxassebke }]], 2 +]; +var __Unit = "unit"; +var AllowedHeaders = 64 | 0; +var AllowedMethods = 64 | 0; +var AllowedOrigins = 64 | 0; +var AnalyticsConfigurationList = [1, n0, _ACLn, + 0, [() => exports.AnalyticsConfiguration$, + 0] +]; +var Buckets = [1, n0, _Bu, + 0, [() => exports.Bucket$, + { [_xN]: _B }] +]; +var ChecksumAlgorithmList = 64 | 0; +var CommonPrefixList = [1, n0, _CPL, + 0, () => exports.CommonPrefix$ +]; +var CompletedPartList = [1, n0, _CPLo, + 0, () => exports.CompletedPart$ +]; +var CORSRules = [1, n0, _CORSR, + 0, [() => exports.CORSRule$, + 0] +]; +var DeletedObjects = [1, n0, _DOe, + 0, () => exports.DeletedObject$ +]; +var DeleteMarkers = [1, n0, _DMe, + 0, () => exports.DeleteMarkerEntry$ +]; +var EncryptionTypeList = [1, n0, _ETL, + 0, [0, + { [_xN]: _ET }] +]; +var Errors = [1, n0, _Er, + 0, () => exports._Error$ +]; +var EventList = 64 | 0; +var ExposeHeaders = 64 | 0; +var FilterRuleList = [1, n0, _FRL, + 0, () => exports.FilterRule$ +]; +var Grants = [1, n0, _G, + 0, [() => exports.Grant$, + { [_xN]: _Gr }] +]; +var IntelligentTieringConfigurationList = [1, n0, _ITCL, + 0, [() => exports.IntelligentTieringConfiguration$, + 0] +]; +var InventoryConfigurationList = [1, n0, _ICL, + 0, [() => exports.InventoryConfiguration$, + 0] +]; +var InventoryOptionalFields = [1, n0, _IOF, + 0, [0, + { [_xN]: _Fi }] +]; +var LambdaFunctionConfigurationList = [1, n0, _LFCL, + 0, [() => exports.LambdaFunctionConfiguration$, + 0] +]; +var LifecycleRules = [1, n0, _LRi, + 0, [() => exports.LifecycleRule$, + 0] +]; +var MetricsConfigurationList = [1, n0, _MCL, + 0, [() => exports.MetricsConfiguration$, + 0] +]; +var MultipartUploadList = [1, n0, _MUL, + 0, () => exports.MultipartUpload$ +]; +var NoncurrentVersionTransitionList = [1, n0, _NVTL, + 0, () => exports.NoncurrentVersionTransition$ +]; +var ObjectAttributesList = 64 | 0; +var ObjectIdentifierList = [1, n0, _OIL, + 0, () => exports.ObjectIdentifier$ +]; +var ObjectList = [1, n0, _OLb, + 0, [() => exports._Object$, + 0] +]; +var ObjectVersionList = [1, n0, _OVL, + 0, [() => exports.ObjectVersion$, + 0] +]; +var OptionalObjectAttributesList = 64 | 0; +var OwnershipControlsRules = [1, n0, _OCRw, + 0, () => exports.OwnershipControlsRule$ +]; +var Parts = [1, n0, _Pa, + 0, () => exports.Part$ +]; +var PartsList = [1, n0, _PL, + 0, () => exports.ObjectPart$ +]; +var QueueConfigurationList = [1, n0, _QCL, + 0, [() => exports.QueueConfiguration$, + 0] +]; +var ReplicationRules = [1, n0, _RRep, + 0, [() => exports.ReplicationRule$, + 0] +]; +var RoutingRules = [1, n0, _RR, + 0, [() => exports.RoutingRule$, + { [_xN]: _RRo }] +]; +var ServerSideEncryptionRules = [1, n0, _SSERe, + 0, [() => exports.ServerSideEncryptionRule$, + 0] +]; +var TagSet = [1, n0, _TS, + 0, [() => exports.Tag$, + { [_xN]: _Ta }] +]; +var TargetGrants = [1, n0, _TG, + 0, [() => exports.TargetGrant$, + { [_xN]: _Gr }] +]; +var TieringList = [1, n0, _TL, + 0, () => exports.Tiering$ +]; +var TopicConfigurationList = [1, n0, _TCL, + 0, [() => exports.TopicConfiguration$, + 0] +]; +var TransitionList = [1, n0, _TLr, + 0, () => exports.Transition$ +]; +var UserMetadata = [1, n0, _UM, + 0, [() => exports.MetadataEntry$, + { [_xN]: _ME }] +]; +var Metadata = 128 | 0; +exports.AnalyticsFilter$ = [4, n0, _AF, + 0, + [_P, _Ta, _An], + [0, () => exports.Tag$, [() => exports.AnalyticsAndOperator$, 0]] +]; +exports.MetricsFilter$ = [4, n0, _MF, + 0, + [_P, _Ta, _APAc, _An], + [0, () => exports.Tag$, 0, [() => exports.MetricsAndOperator$, 0]] +]; +exports.ObjectEncryption$ = [4, n0, _OE, + 0, + [_SSEKMS], + [[() => exports.SSEKMSEncryption$, { [_xN]: _SK }]] +]; +exports.SelectObjectContentEventStream$ = [4, n0, _SOCES, + { [_st]: 1 }, + [_Rec, _Sta, _Pr, _Cont, _End], + [[() => exports.RecordsEvent$, 0], [() => exports.StatsEvent$, 0], [() => exports.ProgressEvent$, 0], () => exports.ContinuationEvent$, () => exports.EndEvent$] +]; +exports.AbortMultipartUpload$ = [9, n0, _AMU, + { [_h]: ["DELETE", "/{Key+}?x-id=AbortMultipartUpload", 204] }, () => exports.AbortMultipartUploadRequest$, () => exports.AbortMultipartUploadOutput$ +]; +exports.CompleteMultipartUpload$ = [9, n0, _CMUo, + { [_h]: ["POST", "/{Key+}", 200] }, () => exports.CompleteMultipartUploadRequest$, () => exports.CompleteMultipartUploadOutput$ +]; +exports.CopyObject$ = [9, n0, _CO, + { [_h]: ["PUT", "/{Key+}?x-id=CopyObject", 200] }, () => exports.CopyObjectRequest$, () => exports.CopyObjectOutput$ +]; +exports.CreateBucket$ = [9, n0, _CB, + { [_h]: ["PUT", "/", 200] }, () => exports.CreateBucketRequest$, () => exports.CreateBucketOutput$ +]; +exports.CreateBucketMetadataConfiguration$ = [9, n0, _CBMC, + { [_hC]: "-", [_h]: ["POST", "/?metadataConfiguration", 200] }, () => exports.CreateBucketMetadataConfigurationRequest$, () => __Unit +]; +exports.CreateBucketMetadataTableConfiguration$ = [9, n0, _CBMTC, + { [_hC]: "-", [_h]: ["POST", "/?metadataTable", 200] }, () => exports.CreateBucketMetadataTableConfigurationRequest$, () => __Unit +]; +exports.CreateMultipartUpload$ = [9, n0, _CMUr, + { [_h]: ["POST", "/{Key+}?uploads", 200] }, () => exports.CreateMultipartUploadRequest$, () => exports.CreateMultipartUploadOutput$ +]; +exports.CreateSession$ = [9, n0, _CSr, + { [_h]: ["GET", "/?session", 200] }, () => exports.CreateSessionRequest$, () => exports.CreateSessionOutput$ +]; +exports.DeleteBucket$ = [9, n0, _DB, + { [_h]: ["DELETE", "/", 204] }, () => exports.DeleteBucketRequest$, () => __Unit +]; +exports.DeleteBucketAnalyticsConfiguration$ = [9, n0, _DBAC, + { [_h]: ["DELETE", "/?analytics", 204] }, () => exports.DeleteBucketAnalyticsConfigurationRequest$, () => __Unit +]; +exports.DeleteBucketCors$ = [9, n0, _DBC, + { [_h]: ["DELETE", "/?cors", 204] }, () => exports.DeleteBucketCorsRequest$, () => __Unit +]; +exports.DeleteBucketEncryption$ = [9, n0, _DBE, + { [_h]: ["DELETE", "/?encryption", 204] }, () => exports.DeleteBucketEncryptionRequest$, () => __Unit +]; +exports.DeleteBucketIntelligentTieringConfiguration$ = [9, n0, _DBITC, + { [_h]: ["DELETE", "/?intelligent-tiering", 204] }, () => exports.DeleteBucketIntelligentTieringConfigurationRequest$, () => __Unit +]; +exports.DeleteBucketInventoryConfiguration$ = [9, n0, _DBIC, + { [_h]: ["DELETE", "/?inventory", 204] }, () => exports.DeleteBucketInventoryConfigurationRequest$, () => __Unit +]; +exports.DeleteBucketLifecycle$ = [9, n0, _DBL, + { [_h]: ["DELETE", "/?lifecycle", 204] }, () => exports.DeleteBucketLifecycleRequest$, () => __Unit +]; +exports.DeleteBucketMetadataConfiguration$ = [9, n0, _DBMC, + { [_h]: ["DELETE", "/?metadataConfiguration", 204] }, () => exports.DeleteBucketMetadataConfigurationRequest$, () => __Unit +]; +exports.DeleteBucketMetadataTableConfiguration$ = [9, n0, _DBMTC, + { [_h]: ["DELETE", "/?metadataTable", 204] }, () => exports.DeleteBucketMetadataTableConfigurationRequest$, () => __Unit +]; +exports.DeleteBucketMetricsConfiguration$ = [9, n0, _DBMCe, + { [_h]: ["DELETE", "/?metrics", 204] }, () => exports.DeleteBucketMetricsConfigurationRequest$, () => __Unit +]; +exports.DeleteBucketOwnershipControls$ = [9, n0, _DBOC, + { [_h]: ["DELETE", "/?ownershipControls", 204] }, () => exports.DeleteBucketOwnershipControlsRequest$, () => __Unit +]; +exports.DeleteBucketPolicy$ = [9, n0, _DBP, + { [_h]: ["DELETE", "/?policy", 204] }, () => exports.DeleteBucketPolicyRequest$, () => __Unit +]; +exports.DeleteBucketReplication$ = [9, n0, _DBRe, + { [_h]: ["DELETE", "/?replication", 204] }, () => exports.DeleteBucketReplicationRequest$, () => __Unit +]; +exports.DeleteBucketTagging$ = [9, n0, _DBT, + { [_h]: ["DELETE", "/?tagging", 204] }, () => exports.DeleteBucketTaggingRequest$, () => __Unit +]; +exports.DeleteBucketWebsite$ = [9, n0, _DBW, + { [_h]: ["DELETE", "/?website", 204] }, () => exports.DeleteBucketWebsiteRequest$, () => __Unit +]; +exports.DeleteObject$ = [9, n0, _DOel, + { [_h]: ["DELETE", "/{Key+}?x-id=DeleteObject", 204] }, () => exports.DeleteObjectRequest$, () => exports.DeleteObjectOutput$ +]; +exports.DeleteObjects$ = [9, n0, _DOele, + { [_hC]: "-", [_h]: ["POST", "/?delete", 200] }, () => exports.DeleteObjectsRequest$, () => exports.DeleteObjectsOutput$ +]; +exports.DeleteObjectTagging$ = [9, n0, _DOT, + { [_h]: ["DELETE", "/{Key+}?tagging", 204] }, () => exports.DeleteObjectTaggingRequest$, () => exports.DeleteObjectTaggingOutput$ +]; +exports.DeletePublicAccessBlock$ = [9, n0, _DPAB, + { [_h]: ["DELETE", "/?publicAccessBlock", 204] }, () => exports.DeletePublicAccessBlockRequest$, () => __Unit +]; +exports.GetBucketAbac$ = [9, n0, _GBA, + { [_h]: ["GET", "/?abac", 200] }, () => exports.GetBucketAbacRequest$, () => exports.GetBucketAbacOutput$ +]; +exports.GetBucketAccelerateConfiguration$ = [9, n0, _GBAC, + { [_h]: ["GET", "/?accelerate", 200] }, () => exports.GetBucketAccelerateConfigurationRequest$, () => exports.GetBucketAccelerateConfigurationOutput$ +]; +exports.GetBucketAcl$ = [9, n0, _GBAe, + { [_h]: ["GET", "/?acl", 200] }, () => exports.GetBucketAclRequest$, () => exports.GetBucketAclOutput$ +]; +exports.GetBucketAnalyticsConfiguration$ = [9, n0, _GBACe, + { [_h]: ["GET", "/?analytics&x-id=GetBucketAnalyticsConfiguration", 200] }, () => exports.GetBucketAnalyticsConfigurationRequest$, () => exports.GetBucketAnalyticsConfigurationOutput$ +]; +exports.GetBucketCors$ = [9, n0, _GBC, + { [_h]: ["GET", "/?cors", 200] }, () => exports.GetBucketCorsRequest$, () => exports.GetBucketCorsOutput$ +]; +exports.GetBucketEncryption$ = [9, n0, _GBE, + { [_h]: ["GET", "/?encryption", 200] }, () => exports.GetBucketEncryptionRequest$, () => exports.GetBucketEncryptionOutput$ +]; +exports.GetBucketIntelligentTieringConfiguration$ = [9, n0, _GBITC, + { [_h]: ["GET", "/?intelligent-tiering&x-id=GetBucketIntelligentTieringConfiguration", 200] }, () => exports.GetBucketIntelligentTieringConfigurationRequest$, () => exports.GetBucketIntelligentTieringConfigurationOutput$ +]; +exports.GetBucketInventoryConfiguration$ = [9, n0, _GBIC, + { [_h]: ["GET", "/?inventory&x-id=GetBucketInventoryConfiguration", 200] }, () => exports.GetBucketInventoryConfigurationRequest$, () => exports.GetBucketInventoryConfigurationOutput$ +]; +exports.GetBucketLifecycleConfiguration$ = [9, n0, _GBLC, + { [_h]: ["GET", "/?lifecycle", 200] }, () => exports.GetBucketLifecycleConfigurationRequest$, () => exports.GetBucketLifecycleConfigurationOutput$ +]; +exports.GetBucketLocation$ = [9, n0, _GBL, + { [_h]: ["GET", "/?location", 200] }, () => exports.GetBucketLocationRequest$, () => exports.GetBucketLocationOutput$ +]; +exports.GetBucketLogging$ = [9, n0, _GBLe, + { [_h]: ["GET", "/?logging", 200] }, () => exports.GetBucketLoggingRequest$, () => exports.GetBucketLoggingOutput$ +]; +exports.GetBucketMetadataConfiguration$ = [9, n0, _GBMC, + { [_h]: ["GET", "/?metadataConfiguration", 200] }, () => exports.GetBucketMetadataConfigurationRequest$, () => exports.GetBucketMetadataConfigurationOutput$ +]; +exports.GetBucketMetadataTableConfiguration$ = [9, n0, _GBMTC, + { [_h]: ["GET", "/?metadataTable", 200] }, () => exports.GetBucketMetadataTableConfigurationRequest$, () => exports.GetBucketMetadataTableConfigurationOutput$ +]; +exports.GetBucketMetricsConfiguration$ = [9, n0, _GBMCe, + { [_h]: ["GET", "/?metrics&x-id=GetBucketMetricsConfiguration", 200] }, () => exports.GetBucketMetricsConfigurationRequest$, () => exports.GetBucketMetricsConfigurationOutput$ +]; +exports.GetBucketNotificationConfiguration$ = [9, n0, _GBNC, + { [_h]: ["GET", "/?notification", 200] }, () => exports.GetBucketNotificationConfigurationRequest$, () => exports.NotificationConfiguration$ +]; +exports.GetBucketOwnershipControls$ = [9, n0, _GBOC, + { [_h]: ["GET", "/?ownershipControls", 200] }, () => exports.GetBucketOwnershipControlsRequest$, () => exports.GetBucketOwnershipControlsOutput$ +]; +exports.GetBucketPolicy$ = [9, n0, _GBP, + { [_h]: ["GET", "/?policy", 200] }, () => exports.GetBucketPolicyRequest$, () => exports.GetBucketPolicyOutput$ +]; +exports.GetBucketPolicyStatus$ = [9, n0, _GBPS, + { [_h]: ["GET", "/?policyStatus", 200] }, () => exports.GetBucketPolicyStatusRequest$, () => exports.GetBucketPolicyStatusOutput$ +]; +exports.GetBucketReplication$ = [9, n0, _GBR, + { [_h]: ["GET", "/?replication", 200] }, () => exports.GetBucketReplicationRequest$, () => exports.GetBucketReplicationOutput$ +]; +exports.GetBucketRequestPayment$ = [9, n0, _GBRP, + { [_h]: ["GET", "/?requestPayment", 200] }, () => exports.GetBucketRequestPaymentRequest$, () => exports.GetBucketRequestPaymentOutput$ +]; +exports.GetBucketTagging$ = [9, n0, _GBT, + { [_h]: ["GET", "/?tagging", 200] }, () => exports.GetBucketTaggingRequest$, () => exports.GetBucketTaggingOutput$ +]; +exports.GetBucketVersioning$ = [9, n0, _GBV, + { [_h]: ["GET", "/?versioning", 200] }, () => exports.GetBucketVersioningRequest$, () => exports.GetBucketVersioningOutput$ +]; +exports.GetBucketWebsite$ = [9, n0, _GBW, + { [_h]: ["GET", "/?website", 200] }, () => exports.GetBucketWebsiteRequest$, () => exports.GetBucketWebsiteOutput$ +]; +exports.GetObject$ = [9, n0, _GO, + { [_hC]: "-", [_h]: ["GET", "/{Key+}?x-id=GetObject", 200] }, () => exports.GetObjectRequest$, () => exports.GetObjectOutput$ +]; +exports.GetObjectAcl$ = [9, n0, _GOA, + { [_h]: ["GET", "/{Key+}?acl", 200] }, () => exports.GetObjectAclRequest$, () => exports.GetObjectAclOutput$ +]; +exports.GetObjectAttributes$ = [9, n0, _GOAe, + { [_h]: ["GET", "/{Key+}?attributes", 200] }, () => exports.GetObjectAttributesRequest$, () => exports.GetObjectAttributesOutput$ +]; +exports.GetObjectLegalHold$ = [9, n0, _GOLH, + { [_h]: ["GET", "/{Key+}?legal-hold", 200] }, () => exports.GetObjectLegalHoldRequest$, () => exports.GetObjectLegalHoldOutput$ +]; +exports.GetObjectLockConfiguration$ = [9, n0, _GOLC, + { [_h]: ["GET", "/?object-lock", 200] }, () => exports.GetObjectLockConfigurationRequest$, () => exports.GetObjectLockConfigurationOutput$ +]; +exports.GetObjectRetention$ = [9, n0, _GORe, + { [_h]: ["GET", "/{Key+}?retention", 200] }, () => exports.GetObjectRetentionRequest$, () => exports.GetObjectRetentionOutput$ +]; +exports.GetObjectTagging$ = [9, n0, _GOT, + { [_h]: ["GET", "/{Key+}?tagging", 200] }, () => exports.GetObjectTaggingRequest$, () => exports.GetObjectTaggingOutput$ +]; +exports.GetObjectTorrent$ = [9, n0, _GOTe, + { [_h]: ["GET", "/{Key+}?torrent", 200] }, () => exports.GetObjectTorrentRequest$, () => exports.GetObjectTorrentOutput$ +]; +exports.GetPublicAccessBlock$ = [9, n0, _GPAB, + { [_h]: ["GET", "/?publicAccessBlock", 200] }, () => exports.GetPublicAccessBlockRequest$, () => exports.GetPublicAccessBlockOutput$ +]; +exports.HeadBucket$ = [9, n0, _HB, + { [_h]: ["HEAD", "/", 200] }, () => exports.HeadBucketRequest$, () => exports.HeadBucketOutput$ +]; +exports.HeadObject$ = [9, n0, _HO, + { [_h]: ["HEAD", "/{Key+}", 200] }, () => exports.HeadObjectRequest$, () => exports.HeadObjectOutput$ +]; +exports.ListBucketAnalyticsConfigurations$ = [9, n0, _LBAC, + { [_h]: ["GET", "/?analytics&x-id=ListBucketAnalyticsConfigurations", 200] }, () => exports.ListBucketAnalyticsConfigurationsRequest$, () => exports.ListBucketAnalyticsConfigurationsOutput$ +]; +exports.ListBucketIntelligentTieringConfigurations$ = [9, n0, _LBITC, + { [_h]: ["GET", "/?intelligent-tiering&x-id=ListBucketIntelligentTieringConfigurations", 200] }, () => exports.ListBucketIntelligentTieringConfigurationsRequest$, () => exports.ListBucketIntelligentTieringConfigurationsOutput$ +]; +exports.ListBucketInventoryConfigurations$ = [9, n0, _LBIC, + { [_h]: ["GET", "/?inventory&x-id=ListBucketInventoryConfigurations", 200] }, () => exports.ListBucketInventoryConfigurationsRequest$, () => exports.ListBucketInventoryConfigurationsOutput$ +]; +exports.ListBucketMetricsConfigurations$ = [9, n0, _LBMC, + { [_h]: ["GET", "/?metrics&x-id=ListBucketMetricsConfigurations", 200] }, () => exports.ListBucketMetricsConfigurationsRequest$, () => exports.ListBucketMetricsConfigurationsOutput$ +]; +exports.ListBuckets$ = [9, n0, _LB, + { [_h]: ["GET", "/?x-id=ListBuckets", 200] }, () => exports.ListBucketsRequest$, () => exports.ListBucketsOutput$ +]; +exports.ListDirectoryBuckets$ = [9, n0, _LDB, + { [_h]: ["GET", "/?x-id=ListDirectoryBuckets", 200] }, () => exports.ListDirectoryBucketsRequest$, () => exports.ListDirectoryBucketsOutput$ +]; +exports.ListMultipartUploads$ = [9, n0, _LMU, + { [_h]: ["GET", "/?uploads", 200] }, () => exports.ListMultipartUploadsRequest$, () => exports.ListMultipartUploadsOutput$ +]; +exports.ListObjects$ = [9, n0, _LO, + { [_h]: ["GET", "/", 200] }, () => exports.ListObjectsRequest$, () => exports.ListObjectsOutput$ +]; +exports.ListObjectsV2$ = [9, n0, _LOV, + { [_h]: ["GET", "/?list-type=2", 200] }, () => exports.ListObjectsV2Request$, () => exports.ListObjectsV2Output$ +]; +exports.ListObjectVersions$ = [9, n0, _LOVi, + { [_h]: ["GET", "/?versions", 200] }, () => exports.ListObjectVersionsRequest$, () => exports.ListObjectVersionsOutput$ +]; +exports.ListParts$ = [9, n0, _LP, + { [_h]: ["GET", "/{Key+}?x-id=ListParts", 200] }, () => exports.ListPartsRequest$, () => exports.ListPartsOutput$ +]; +exports.PutBucketAbac$ = [9, n0, _PBA, + { [_hC]: "-", [_h]: ["PUT", "/?abac", 200] }, () => exports.PutBucketAbacRequest$, () => __Unit +]; +exports.PutBucketAccelerateConfiguration$ = [9, n0, _PBAC, + { [_hC]: "-", [_h]: ["PUT", "/?accelerate", 200] }, () => exports.PutBucketAccelerateConfigurationRequest$, () => __Unit +]; +exports.PutBucketAcl$ = [9, n0, _PBAu, + { [_hC]: "-", [_h]: ["PUT", "/?acl", 200] }, () => exports.PutBucketAclRequest$, () => __Unit +]; +exports.PutBucketAnalyticsConfiguration$ = [9, n0, _PBACu, + { [_h]: ["PUT", "/?analytics", 200] }, () => exports.PutBucketAnalyticsConfigurationRequest$, () => __Unit +]; +exports.PutBucketCors$ = [9, n0, _PBC, + { [_hC]: "-", [_h]: ["PUT", "/?cors", 200] }, () => exports.PutBucketCorsRequest$, () => __Unit +]; +exports.PutBucketEncryption$ = [9, n0, _PBE, + { [_hC]: "-", [_h]: ["PUT", "/?encryption", 200] }, () => exports.PutBucketEncryptionRequest$, () => __Unit +]; +exports.PutBucketIntelligentTieringConfiguration$ = [9, n0, _PBITC, + { [_h]: ["PUT", "/?intelligent-tiering", 200] }, () => exports.PutBucketIntelligentTieringConfigurationRequest$, () => __Unit +]; +exports.PutBucketInventoryConfiguration$ = [9, n0, _PBIC, + { [_h]: ["PUT", "/?inventory", 200] }, () => exports.PutBucketInventoryConfigurationRequest$, () => __Unit +]; +exports.PutBucketLifecycleConfiguration$ = [9, n0, _PBLC, + { [_hC]: "-", [_h]: ["PUT", "/?lifecycle", 200] }, () => exports.PutBucketLifecycleConfigurationRequest$, () => exports.PutBucketLifecycleConfigurationOutput$ +]; +exports.PutBucketLogging$ = [9, n0, _PBL, + { [_hC]: "-", [_h]: ["PUT", "/?logging", 200] }, () => exports.PutBucketLoggingRequest$, () => __Unit +]; +exports.PutBucketMetricsConfiguration$ = [9, n0, _PBMC, + { [_h]: ["PUT", "/?metrics", 200] }, () => exports.PutBucketMetricsConfigurationRequest$, () => __Unit +]; +exports.PutBucketNotificationConfiguration$ = [9, n0, _PBNC, + { [_h]: ["PUT", "/?notification", 200] }, () => exports.PutBucketNotificationConfigurationRequest$, () => __Unit +]; +exports.PutBucketOwnershipControls$ = [9, n0, _PBOC, + { [_hC]: "-", [_h]: ["PUT", "/?ownershipControls", 200] }, () => exports.PutBucketOwnershipControlsRequest$, () => __Unit +]; +exports.PutBucketPolicy$ = [9, n0, _PBP, + { [_hC]: "-", [_h]: ["PUT", "/?policy", 200] }, () => exports.PutBucketPolicyRequest$, () => __Unit +]; +exports.PutBucketReplication$ = [9, n0, _PBR, + { [_hC]: "-", [_h]: ["PUT", "/?replication", 200] }, () => exports.PutBucketReplicationRequest$, () => __Unit +]; +exports.PutBucketRequestPayment$ = [9, n0, _PBRP, + { [_hC]: "-", [_h]: ["PUT", "/?requestPayment", 200] }, () => exports.PutBucketRequestPaymentRequest$, () => __Unit +]; +exports.PutBucketTagging$ = [9, n0, _PBT, + { [_hC]: "-", [_h]: ["PUT", "/?tagging", 200] }, () => exports.PutBucketTaggingRequest$, () => __Unit +]; +exports.PutBucketVersioning$ = [9, n0, _PBV, + { [_hC]: "-", [_h]: ["PUT", "/?versioning", 200] }, () => exports.PutBucketVersioningRequest$, () => __Unit +]; +exports.PutBucketWebsite$ = [9, n0, _PBW, + { [_hC]: "-", [_h]: ["PUT", "/?website", 200] }, () => exports.PutBucketWebsiteRequest$, () => __Unit +]; +exports.PutObject$ = [9, n0, _PO, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?x-id=PutObject", 200] }, () => exports.PutObjectRequest$, () => exports.PutObjectOutput$ +]; +exports.PutObjectAcl$ = [9, n0, _POA, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?acl", 200] }, () => exports.PutObjectAclRequest$, () => exports.PutObjectAclOutput$ +]; +exports.PutObjectLegalHold$ = [9, n0, _POLH, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?legal-hold", 200] }, () => exports.PutObjectLegalHoldRequest$, () => exports.PutObjectLegalHoldOutput$ +]; +exports.PutObjectLockConfiguration$ = [9, n0, _POLC, + { [_hC]: "-", [_h]: ["PUT", "/?object-lock", 200] }, () => exports.PutObjectLockConfigurationRequest$, () => exports.PutObjectLockConfigurationOutput$ +]; +exports.PutObjectRetention$ = [9, n0, _PORu, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?retention", 200] }, () => exports.PutObjectRetentionRequest$, () => exports.PutObjectRetentionOutput$ +]; +exports.PutObjectTagging$ = [9, n0, _POT, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?tagging", 200] }, () => exports.PutObjectTaggingRequest$, () => exports.PutObjectTaggingOutput$ +]; +exports.PutPublicAccessBlock$ = [9, n0, _PPAB, + { [_hC]: "-", [_h]: ["PUT", "/?publicAccessBlock", 200] }, () => exports.PutPublicAccessBlockRequest$, () => __Unit +]; +exports.RenameObject$ = [9, n0, _RO, + { [_h]: ["PUT", "/{Key+}?renameObject", 200] }, () => exports.RenameObjectRequest$, () => exports.RenameObjectOutput$ +]; +exports.RestoreObject$ = [9, n0, _ROe, + { [_hC]: "-", [_h]: ["POST", "/{Key+}?restore", 200] }, () => exports.RestoreObjectRequest$, () => exports.RestoreObjectOutput$ +]; +exports.SelectObjectContent$ = [9, n0, _SOC, + { [_h]: ["POST", "/{Key+}?select&select-type=2", 200] }, () => exports.SelectObjectContentRequest$, () => exports.SelectObjectContentOutput$ +]; +exports.UpdateBucketMetadataInventoryTableConfiguration$ = [9, n0, _UBMITC, + { [_hC]: "-", [_h]: ["PUT", "/?metadataInventoryTable", 200] }, () => exports.UpdateBucketMetadataInventoryTableConfigurationRequest$, () => __Unit +]; +exports.UpdateBucketMetadataJournalTableConfiguration$ = [9, n0, _UBMJTC, + { [_hC]: "-", [_h]: ["PUT", "/?metadataJournalTable", 200] }, () => exports.UpdateBucketMetadataJournalTableConfigurationRequest$, () => __Unit +]; +exports.UpdateObjectEncryption$ = [9, n0, _UOE, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?encryption", 200] }, () => exports.UpdateObjectEncryptionRequest$, () => exports.UpdateObjectEncryptionResponse$ +]; +exports.UploadPart$ = [9, n0, _UP, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?x-id=UploadPart", 200] }, () => exports.UploadPartRequest$, () => exports.UploadPartOutput$ +]; +exports.UploadPartCopy$ = [9, n0, _UPC, + { [_h]: ["PUT", "/{Key+}?x-id=UploadPartCopy", 200] }, () => exports.UploadPartCopyRequest$, () => exports.UploadPartCopyOutput$ +]; +exports.WriteGetObjectResponse$ = [9, n0, _WGOR, + { [_en]: ["{RequestRoute}."], [_h]: ["POST", "/WriteGetObjectResponse", 200] }, () => exports.WriteGetObjectResponseRequest$, () => __Unit +]; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/S3.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/S3.js new file mode 100644 index 0000000..a1b2c67 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/S3.js @@ -0,0 +1,241 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { AbortMultipartUploadCommand, } from "./commands/AbortMultipartUploadCommand"; +import { CompleteMultipartUploadCommand, } from "./commands/CompleteMultipartUploadCommand"; +import { CopyObjectCommand, } from "./commands/CopyObjectCommand"; +import { CreateBucketCommand, } from "./commands/CreateBucketCommand"; +import { CreateBucketMetadataConfigurationCommand, } from "./commands/CreateBucketMetadataConfigurationCommand"; +import { CreateBucketMetadataTableConfigurationCommand, } from "./commands/CreateBucketMetadataTableConfigurationCommand"; +import { CreateMultipartUploadCommand, } from "./commands/CreateMultipartUploadCommand"; +import { CreateSessionCommand, } from "./commands/CreateSessionCommand"; +import { DeleteBucketAnalyticsConfigurationCommand, } from "./commands/DeleteBucketAnalyticsConfigurationCommand"; +import { DeleteBucketCommand, } from "./commands/DeleteBucketCommand"; +import { DeleteBucketCorsCommand, } from "./commands/DeleteBucketCorsCommand"; +import { DeleteBucketEncryptionCommand, } from "./commands/DeleteBucketEncryptionCommand"; +import { DeleteBucketIntelligentTieringConfigurationCommand, } from "./commands/DeleteBucketIntelligentTieringConfigurationCommand"; +import { DeleteBucketInventoryConfigurationCommand, } from "./commands/DeleteBucketInventoryConfigurationCommand"; +import { DeleteBucketLifecycleCommand, } from "./commands/DeleteBucketLifecycleCommand"; +import { DeleteBucketMetadataConfigurationCommand, } from "./commands/DeleteBucketMetadataConfigurationCommand"; +import { DeleteBucketMetadataTableConfigurationCommand, } from "./commands/DeleteBucketMetadataTableConfigurationCommand"; +import { DeleteBucketMetricsConfigurationCommand, } from "./commands/DeleteBucketMetricsConfigurationCommand"; +import { DeleteBucketOwnershipControlsCommand, } from "./commands/DeleteBucketOwnershipControlsCommand"; +import { DeleteBucketPolicyCommand, } from "./commands/DeleteBucketPolicyCommand"; +import { DeleteBucketReplicationCommand, } from "./commands/DeleteBucketReplicationCommand"; +import { DeleteBucketTaggingCommand, } from "./commands/DeleteBucketTaggingCommand"; +import { DeleteBucketWebsiteCommand, } from "./commands/DeleteBucketWebsiteCommand"; +import { DeleteObjectCommand, } from "./commands/DeleteObjectCommand"; +import { DeleteObjectsCommand, } from "./commands/DeleteObjectsCommand"; +import { DeleteObjectTaggingCommand, } from "./commands/DeleteObjectTaggingCommand"; +import { DeletePublicAccessBlockCommand, } from "./commands/DeletePublicAccessBlockCommand"; +import { GetBucketAbacCommand, } from "./commands/GetBucketAbacCommand"; +import { GetBucketAccelerateConfigurationCommand, } from "./commands/GetBucketAccelerateConfigurationCommand"; +import { GetBucketAclCommand, } from "./commands/GetBucketAclCommand"; +import { GetBucketAnalyticsConfigurationCommand, } from "./commands/GetBucketAnalyticsConfigurationCommand"; +import { GetBucketCorsCommand, } from "./commands/GetBucketCorsCommand"; +import { GetBucketEncryptionCommand, } from "./commands/GetBucketEncryptionCommand"; +import { GetBucketIntelligentTieringConfigurationCommand, } from "./commands/GetBucketIntelligentTieringConfigurationCommand"; +import { GetBucketInventoryConfigurationCommand, } from "./commands/GetBucketInventoryConfigurationCommand"; +import { GetBucketLifecycleConfigurationCommand, } from "./commands/GetBucketLifecycleConfigurationCommand"; +import { GetBucketLocationCommand, } from "./commands/GetBucketLocationCommand"; +import { GetBucketLoggingCommand, } from "./commands/GetBucketLoggingCommand"; +import { GetBucketMetadataConfigurationCommand, } from "./commands/GetBucketMetadataConfigurationCommand"; +import { GetBucketMetadataTableConfigurationCommand, } from "./commands/GetBucketMetadataTableConfigurationCommand"; +import { GetBucketMetricsConfigurationCommand, } from "./commands/GetBucketMetricsConfigurationCommand"; +import { GetBucketNotificationConfigurationCommand, } from "./commands/GetBucketNotificationConfigurationCommand"; +import { GetBucketOwnershipControlsCommand, } from "./commands/GetBucketOwnershipControlsCommand"; +import { GetBucketPolicyCommand, } from "./commands/GetBucketPolicyCommand"; +import { GetBucketPolicyStatusCommand, } from "./commands/GetBucketPolicyStatusCommand"; +import { GetBucketReplicationCommand, } from "./commands/GetBucketReplicationCommand"; +import { GetBucketRequestPaymentCommand, } from "./commands/GetBucketRequestPaymentCommand"; +import { GetBucketTaggingCommand, } from "./commands/GetBucketTaggingCommand"; +import { GetBucketVersioningCommand, } from "./commands/GetBucketVersioningCommand"; +import { GetBucketWebsiteCommand, } from "./commands/GetBucketWebsiteCommand"; +import { GetObjectAclCommand, } from "./commands/GetObjectAclCommand"; +import { GetObjectAttributesCommand, } from "./commands/GetObjectAttributesCommand"; +import { GetObjectCommand } from "./commands/GetObjectCommand"; +import { GetObjectLegalHoldCommand, } from "./commands/GetObjectLegalHoldCommand"; +import { GetObjectLockConfigurationCommand, } from "./commands/GetObjectLockConfigurationCommand"; +import { GetObjectRetentionCommand, } from "./commands/GetObjectRetentionCommand"; +import { GetObjectTaggingCommand, } from "./commands/GetObjectTaggingCommand"; +import { GetObjectTorrentCommand, } from "./commands/GetObjectTorrentCommand"; +import { GetPublicAccessBlockCommand, } from "./commands/GetPublicAccessBlockCommand"; +import { HeadBucketCommand, } from "./commands/HeadBucketCommand"; +import { HeadObjectCommand, } from "./commands/HeadObjectCommand"; +import { ListBucketAnalyticsConfigurationsCommand, } from "./commands/ListBucketAnalyticsConfigurationsCommand"; +import { ListBucketIntelligentTieringConfigurationsCommand, } from "./commands/ListBucketIntelligentTieringConfigurationsCommand"; +import { ListBucketInventoryConfigurationsCommand, } from "./commands/ListBucketInventoryConfigurationsCommand"; +import { ListBucketMetricsConfigurationsCommand, } from "./commands/ListBucketMetricsConfigurationsCommand"; +import { ListBucketsCommand, } from "./commands/ListBucketsCommand"; +import { ListDirectoryBucketsCommand, } from "./commands/ListDirectoryBucketsCommand"; +import { ListMultipartUploadsCommand, } from "./commands/ListMultipartUploadsCommand"; +import { ListObjectsCommand, } from "./commands/ListObjectsCommand"; +import { ListObjectsV2Command, } from "./commands/ListObjectsV2Command"; +import { ListObjectVersionsCommand, } from "./commands/ListObjectVersionsCommand"; +import { ListPartsCommand } from "./commands/ListPartsCommand"; +import { PutBucketAbacCommand, } from "./commands/PutBucketAbacCommand"; +import { PutBucketAccelerateConfigurationCommand, } from "./commands/PutBucketAccelerateConfigurationCommand"; +import { PutBucketAclCommand, } from "./commands/PutBucketAclCommand"; +import { PutBucketAnalyticsConfigurationCommand, } from "./commands/PutBucketAnalyticsConfigurationCommand"; +import { PutBucketCorsCommand, } from "./commands/PutBucketCorsCommand"; +import { PutBucketEncryptionCommand, } from "./commands/PutBucketEncryptionCommand"; +import { PutBucketIntelligentTieringConfigurationCommand, } from "./commands/PutBucketIntelligentTieringConfigurationCommand"; +import { PutBucketInventoryConfigurationCommand, } from "./commands/PutBucketInventoryConfigurationCommand"; +import { PutBucketLifecycleConfigurationCommand, } from "./commands/PutBucketLifecycleConfigurationCommand"; +import { PutBucketLoggingCommand, } from "./commands/PutBucketLoggingCommand"; +import { PutBucketMetricsConfigurationCommand, } from "./commands/PutBucketMetricsConfigurationCommand"; +import { PutBucketNotificationConfigurationCommand, } from "./commands/PutBucketNotificationConfigurationCommand"; +import { PutBucketOwnershipControlsCommand, } from "./commands/PutBucketOwnershipControlsCommand"; +import { PutBucketPolicyCommand, } from "./commands/PutBucketPolicyCommand"; +import { PutBucketReplicationCommand, } from "./commands/PutBucketReplicationCommand"; +import { PutBucketRequestPaymentCommand, } from "./commands/PutBucketRequestPaymentCommand"; +import { PutBucketTaggingCommand, } from "./commands/PutBucketTaggingCommand"; +import { PutBucketVersioningCommand, } from "./commands/PutBucketVersioningCommand"; +import { PutBucketWebsiteCommand, } from "./commands/PutBucketWebsiteCommand"; +import { PutObjectAclCommand, } from "./commands/PutObjectAclCommand"; +import { PutObjectCommand } from "./commands/PutObjectCommand"; +import { PutObjectLegalHoldCommand, } from "./commands/PutObjectLegalHoldCommand"; +import { PutObjectLockConfigurationCommand, } from "./commands/PutObjectLockConfigurationCommand"; +import { PutObjectRetentionCommand, } from "./commands/PutObjectRetentionCommand"; +import { PutObjectTaggingCommand, } from "./commands/PutObjectTaggingCommand"; +import { PutPublicAccessBlockCommand, } from "./commands/PutPublicAccessBlockCommand"; +import { RenameObjectCommand, } from "./commands/RenameObjectCommand"; +import { RestoreObjectCommand, } from "./commands/RestoreObjectCommand"; +import { SelectObjectContentCommand, } from "./commands/SelectObjectContentCommand"; +import { UpdateBucketMetadataInventoryTableConfigurationCommand, } from "./commands/UpdateBucketMetadataInventoryTableConfigurationCommand"; +import { UpdateBucketMetadataJournalTableConfigurationCommand, } from "./commands/UpdateBucketMetadataJournalTableConfigurationCommand"; +import { UpdateObjectEncryptionCommand, } from "./commands/UpdateObjectEncryptionCommand"; +import { UploadPartCommand, } from "./commands/UploadPartCommand"; +import { UploadPartCopyCommand, } from "./commands/UploadPartCopyCommand"; +import { WriteGetObjectResponseCommand, } from "./commands/WriteGetObjectResponseCommand"; +import { paginateListBuckets } from "./pagination/ListBucketsPaginator"; +import { paginateListDirectoryBuckets } from "./pagination/ListDirectoryBucketsPaginator"; +import { paginateListObjectsV2 } from "./pagination/ListObjectsV2Paginator"; +import { paginateListParts } from "./pagination/ListPartsPaginator"; +import { S3Client } from "./S3Client"; +import { waitUntilBucketExists } from "./waiters/waitForBucketExists"; +import { waitUntilBucketNotExists } from "./waiters/waitForBucketNotExists"; +import { waitUntilObjectExists } from "./waiters/waitForObjectExists"; +import { waitUntilObjectNotExists } from "./waiters/waitForObjectNotExists"; +const commands = { + AbortMultipartUploadCommand, + CompleteMultipartUploadCommand, + CopyObjectCommand, + CreateBucketCommand, + CreateBucketMetadataConfigurationCommand, + CreateBucketMetadataTableConfigurationCommand, + CreateMultipartUploadCommand, + CreateSessionCommand, + DeleteBucketCommand, + DeleteBucketAnalyticsConfigurationCommand, + DeleteBucketCorsCommand, + DeleteBucketEncryptionCommand, + DeleteBucketIntelligentTieringConfigurationCommand, + DeleteBucketInventoryConfigurationCommand, + DeleteBucketLifecycleCommand, + DeleteBucketMetadataConfigurationCommand, + DeleteBucketMetadataTableConfigurationCommand, + DeleteBucketMetricsConfigurationCommand, + DeleteBucketOwnershipControlsCommand, + DeleteBucketPolicyCommand, + DeleteBucketReplicationCommand, + DeleteBucketTaggingCommand, + DeleteBucketWebsiteCommand, + DeleteObjectCommand, + DeleteObjectsCommand, + DeleteObjectTaggingCommand, + DeletePublicAccessBlockCommand, + GetBucketAbacCommand, + GetBucketAccelerateConfigurationCommand, + GetBucketAclCommand, + GetBucketAnalyticsConfigurationCommand, + GetBucketCorsCommand, + GetBucketEncryptionCommand, + GetBucketIntelligentTieringConfigurationCommand, + GetBucketInventoryConfigurationCommand, + GetBucketLifecycleConfigurationCommand, + GetBucketLocationCommand, + GetBucketLoggingCommand, + GetBucketMetadataConfigurationCommand, + GetBucketMetadataTableConfigurationCommand, + GetBucketMetricsConfigurationCommand, + GetBucketNotificationConfigurationCommand, + GetBucketOwnershipControlsCommand, + GetBucketPolicyCommand, + GetBucketPolicyStatusCommand, + GetBucketReplicationCommand, + GetBucketRequestPaymentCommand, + GetBucketTaggingCommand, + GetBucketVersioningCommand, + GetBucketWebsiteCommand, + GetObjectCommand, + GetObjectAclCommand, + GetObjectAttributesCommand, + GetObjectLegalHoldCommand, + GetObjectLockConfigurationCommand, + GetObjectRetentionCommand, + GetObjectTaggingCommand, + GetObjectTorrentCommand, + GetPublicAccessBlockCommand, + HeadBucketCommand, + HeadObjectCommand, + ListBucketAnalyticsConfigurationsCommand, + ListBucketIntelligentTieringConfigurationsCommand, + ListBucketInventoryConfigurationsCommand, + ListBucketMetricsConfigurationsCommand, + ListBucketsCommand, + ListDirectoryBucketsCommand, + ListMultipartUploadsCommand, + ListObjectsCommand, + ListObjectsV2Command, + ListObjectVersionsCommand, + ListPartsCommand, + PutBucketAbacCommand, + PutBucketAccelerateConfigurationCommand, + PutBucketAclCommand, + PutBucketAnalyticsConfigurationCommand, + PutBucketCorsCommand, + PutBucketEncryptionCommand, + PutBucketIntelligentTieringConfigurationCommand, + PutBucketInventoryConfigurationCommand, + PutBucketLifecycleConfigurationCommand, + PutBucketLoggingCommand, + PutBucketMetricsConfigurationCommand, + PutBucketNotificationConfigurationCommand, + PutBucketOwnershipControlsCommand, + PutBucketPolicyCommand, + PutBucketReplicationCommand, + PutBucketRequestPaymentCommand, + PutBucketTaggingCommand, + PutBucketVersioningCommand, + PutBucketWebsiteCommand, + PutObjectCommand, + PutObjectAclCommand, + PutObjectLegalHoldCommand, + PutObjectLockConfigurationCommand, + PutObjectRetentionCommand, + PutObjectTaggingCommand, + PutPublicAccessBlockCommand, + RenameObjectCommand, + RestoreObjectCommand, + SelectObjectContentCommand, + UpdateBucketMetadataInventoryTableConfigurationCommand, + UpdateBucketMetadataJournalTableConfigurationCommand, + UpdateObjectEncryptionCommand, + UploadPartCommand, + UploadPartCopyCommand, + WriteGetObjectResponseCommand, +}; +const paginators = { + paginateListBuckets, + paginateListDirectoryBuckets, + paginateListObjectsV2, + paginateListParts, +}; +const waiters = { + waitUntilBucketExists, + waitUntilBucketNotExists, + waitUntilObjectExists, + waitUntilObjectNotExists, +}; +export class S3 extends S3Client { +} +createAggregatedClient(commands, S3, { paginators, waiters }); diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js new file mode 100644 index 0000000..d8ca9a0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/S3Client.js @@ -0,0 +1,64 @@ +import { getAddExpectContinuePlugin } from "@aws-sdk/middleware-expect-continue"; +import { resolveFlexibleChecksumsConfig, } from "@aws-sdk/middleware-flexible-checksums"; +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getRegionRedirectMiddlewarePlugin, getS3ExpressHttpSigningPlugin, getS3ExpressPlugin, getValidateBucketNamePlugin, resolveS3Config, } from "@aws-sdk/middleware-sdk-s3"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { resolveEventStreamSerdeConfig, } from "@smithy/eventstream-serde-config-resolver"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultS3HttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { CreateSessionCommand, } from "./commands/CreateSessionCommand"; +import { resolveClientEndpointParameters, } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class S3Client extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveFlexibleChecksumsConfig(_config_2); + const _config_4 = resolveRetryConfig(_config_3); + const _config_5 = resolveRegionConfig(_config_4); + const _config_6 = resolveHostHeaderConfig(_config_5); + const _config_7 = resolveEndpointConfig(_config_6); + const _config_8 = resolveEventStreamSerdeConfig(_config_7); + const _config_9 = resolveHttpAuthSchemeConfig(_config_8); + const _config_10 = resolveS3Config(_config_9, { session: [() => this, CreateSessionCommand] }); + const _config_11 = resolveRuntimeExtensions(_config_10, configuration?.extensions || []); + this.config = _config_11; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultS3HttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + "aws.auth#sigv4a": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + this.middlewareStack.use(getValidateBucketNamePlugin(this.config)); + this.middlewareStack.use(getAddExpectContinuePlugin(this.config)); + this.middlewareStack.use(getRegionRedirectMiddlewarePlugin(this.config)); + this.middlewareStack.use(getS3ExpressPlugin(this.config)); + this.middlewareStack.use(getS3ExpressHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthExtensionConfiguration.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 0000000..2ba1d48 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..cd7c1a0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/auth/httpAuthSchemeProvider.js @@ -0,0 +1,122 @@ +import { resolveAwsSdkSigV4AConfig, resolveAwsSdkSigV4Config, } from "@aws-sdk/core/httpAuthSchemes"; +import { SignatureV4MultiRegion } from "@aws-sdk/signature-v4-multi-region"; +import { resolveParams } from "@smithy/middleware-endpoint"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +import { defaultEndpointResolver } from "../endpoint/endpointResolver"; +const createEndpointRuleSetHttpAuthSchemeParametersProvider = (defaultHttpAuthSchemeParametersProvider) => async (config, context, input) => { + if (!input) { + throw new Error("Could not find `input` for `defaultEndpointRuleSetHttpAuthSchemeParametersProvider`"); + } + const defaultParameters = await defaultHttpAuthSchemeParametersProvider(config, context, input); + const instructionsFn = getSmithyContext(context)?.commandInstance?.constructor + ?.getEndpointParameterInstructions; + if (!instructionsFn) { + throw new Error(`getEndpointParameterInstructions() is not defined on '${context.commandName}'`); + } + const endpointParameters = await resolveParams(input, { getEndpointParameterInstructions: instructionsFn }, config); + return Object.assign(defaultParameters, endpointParameters); +}; +const _defaultS3HttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: await normalizeProvider(config.region)() || (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +export const defaultS3HttpAuthSchemeParametersProvider = createEndpointRuleSetHttpAuthSchemeParametersProvider(_defaultS3HttpAuthSchemeParametersProvider); +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "s3", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createAwsAuthSigv4aHttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4a", + signingProperties: { + name: "s3", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +const createEndpointRuleSetHttpAuthSchemeProvider = (defaultEndpointResolver, defaultHttpAuthSchemeResolver, createHttpAuthOptionFunctions) => { + const endpointRuleSetHttpAuthSchemeProvider = (authParameters) => { + const endpoint = defaultEndpointResolver(authParameters); + const authSchemes = endpoint.properties?.authSchemes; + if (!authSchemes) { + return defaultHttpAuthSchemeResolver(authParameters); + } + const options = []; + for (const scheme of authSchemes) { + const { name: resolvedName, properties = {}, ...rest } = scheme; + const name = resolvedName.toLowerCase(); + if (resolvedName !== name) { + console.warn(`HttpAuthScheme has been normalized with lowercasing: '${resolvedName}' to '${name}'`); + } + let schemeId; + if (name === "sigv4a") { + schemeId = "aws.auth#sigv4a"; + const sigv4Present = authSchemes.find((s) => { + const name = s.name.toLowerCase(); + return name !== "sigv4a" && name.startsWith("sigv4"); + }); + if (SignatureV4MultiRegion.sigv4aDependency() === "none" && sigv4Present) { + continue; + } + } + else if (name.startsWith("sigv4")) { + schemeId = "aws.auth#sigv4"; + } + else { + throw new Error(`Unknown HttpAuthScheme found in '@smithy.rules#endpointRuleSet': '${name}'`); + } + const createOption = createHttpAuthOptionFunctions[schemeId]; + if (!createOption) { + throw new Error(`Could not find HttpAuthOption create function for '${schemeId}'`); + } + const option = createOption(authParameters); + option.schemeId = schemeId; + option.signingProperties = { ...(option.signingProperties || {}), ...rest, ...properties }; + options.push(option); + } + return options; + }; + return endpointRuleSetHttpAuthSchemeProvider; +}; +const _defaultS3HttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + options.push(createAwsAuthSigv4aHttpAuthOption(authParameters)); + } + } + return options; +}; +export const defaultS3HttpAuthSchemeProvider = createEndpointRuleSetHttpAuthSchemeProvider(defaultEndpointResolver, _defaultS3HttpAuthSchemeProvider, { + "aws.auth#sigv4": createAwsAuthSigv4HttpAuthOption, + "aws.auth#sigv4a": createAwsAuthSigv4aHttpAuthOption, +}); +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + const config_1 = resolveAwsSdkSigV4AConfig(config_0); + return Object.assign(config_1, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/AbortMultipartUploadCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/AbortMultipartUploadCommand.js new file mode 100644 index 0000000..fce426a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/AbortMultipartUploadCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { AbortMultipartUpload$ } from "../schemas/schemas_0"; +export { $Command }; +export class AbortMultipartUploadCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "AbortMultipartUpload", {}) + .n("S3Client", "AbortMultipartUploadCommand") + .sc(AbortMultipartUpload$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CompleteMultipartUploadCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CompleteMultipartUploadCommand.js new file mode 100644 index 0000000..893eab8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CompleteMultipartUploadCommand.js @@ -0,0 +1,26 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CompleteMultipartUpload$ } from "../schemas/schemas_0"; +export { $Command }; +export class CompleteMultipartUploadCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "CompleteMultipartUpload", {}) + .n("S3Client", "CompleteMultipartUploadCommand") + .sc(CompleteMultipartUpload$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CopyObjectCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CopyObjectCommand.js new file mode 100644 index 0000000..5f536c4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CopyObjectCommand.js @@ -0,0 +1,28 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CopyObject$ } from "../schemas/schemas_0"; +export { $Command }; +export class CopyObjectCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + DisableS3ExpressSessionAuth: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, + CopySource: { type: "contextParams", name: "CopySource" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "CopyObject", {}) + .n("S3Client", "CopyObjectCommand") + .sc(CopyObject$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateBucketCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateBucketCommand.js new file mode 100644 index 0000000..7dca0e5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateBucketCommand.js @@ -0,0 +1,27 @@ +import { getLocationConstraintPlugin } from "@aws-sdk/middleware-location-constraint"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateBucket$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateBucketCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + DisableAccessPoints: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + getLocationConstraintPlugin(config), + ]; +}) + .s("AmazonS3", "CreateBucket", {}) + .n("S3Client", "CreateBucketCommand") + .sc(CreateBucket$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateBucketMetadataConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateBucketMetadataConfigurationCommand.js new file mode 100644 index 0000000..b02cc9a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateBucketMetadataConfigurationCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateBucketMetadataConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateBucketMetadataConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "CreateBucketMetadataConfiguration", {}) + .n("S3Client", "CreateBucketMetadataConfigurationCommand") + .sc(CreateBucketMetadataConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateBucketMetadataTableConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateBucketMetadataTableConfigurationCommand.js new file mode 100644 index 0000000..57fab98 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateBucketMetadataTableConfigurationCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateBucketMetadataTableConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateBucketMetadataTableConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "CreateBucketMetadataTableConfiguration", {}) + .n("S3Client", "CreateBucketMetadataTableConfigurationCommand") + .sc(CreateBucketMetadataTableConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateMultipartUploadCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateMultipartUploadCommand.js new file mode 100644 index 0000000..4e393ef --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateMultipartUploadCommand.js @@ -0,0 +1,26 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateMultipartUpload$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateMultipartUploadCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "CreateMultipartUpload", {}) + .n("S3Client", "CreateMultipartUploadCommand") + .sc(CreateMultipartUpload$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateSessionCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateSessionCommand.js new file mode 100644 index 0000000..3646e7c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/CreateSessionCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateSession$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateSessionCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + DisableS3ExpressSessionAuth: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "CreateSession", {}) + .n("S3Client", "CreateSessionCommand") + .sc(CreateSession$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketAnalyticsConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketAnalyticsConfigurationCommand.js new file mode 100644 index 0000000..0833ffe --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketAnalyticsConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketAnalyticsConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketAnalyticsConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketAnalyticsConfiguration", {}) + .n("S3Client", "DeleteBucketAnalyticsConfigurationCommand") + .sc(DeleteBucketAnalyticsConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketCommand.js new file mode 100644 index 0000000..166fc55 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucket$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucket", {}) + .n("S3Client", "DeleteBucketCommand") + .sc(DeleteBucket$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketCorsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketCorsCommand.js new file mode 100644 index 0000000..4a6711f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketCorsCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketCors$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketCorsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketCors", {}) + .n("S3Client", "DeleteBucketCorsCommand") + .sc(DeleteBucketCors$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketEncryptionCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketEncryptionCommand.js new file mode 100644 index 0000000..83961bb --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketEncryptionCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketEncryption$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketEncryptionCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketEncryption", {}) + .n("S3Client", "DeleteBucketEncryptionCommand") + .sc(DeleteBucketEncryption$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketIntelligentTieringConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketIntelligentTieringConfigurationCommand.js new file mode 100644 index 0000000..18f07d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketIntelligentTieringConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketIntelligentTieringConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketIntelligentTieringConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketIntelligentTieringConfiguration", {}) + .n("S3Client", "DeleteBucketIntelligentTieringConfigurationCommand") + .sc(DeleteBucketIntelligentTieringConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketInventoryConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketInventoryConfigurationCommand.js new file mode 100644 index 0000000..4c2dcf5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketInventoryConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketInventoryConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketInventoryConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketInventoryConfiguration", {}) + .n("S3Client", "DeleteBucketInventoryConfigurationCommand") + .sc(DeleteBucketInventoryConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketLifecycleCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketLifecycleCommand.js new file mode 100644 index 0000000..8234b0c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketLifecycleCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketLifecycle$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketLifecycleCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketLifecycle", {}) + .n("S3Client", "DeleteBucketLifecycleCommand") + .sc(DeleteBucketLifecycle$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketMetadataConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketMetadataConfigurationCommand.js new file mode 100644 index 0000000..5780e33 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketMetadataConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketMetadataConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketMetadataConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketMetadataConfiguration", {}) + .n("S3Client", "DeleteBucketMetadataConfigurationCommand") + .sc(DeleteBucketMetadataConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketMetadataTableConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketMetadataTableConfigurationCommand.js new file mode 100644 index 0000000..19ddb15 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketMetadataTableConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketMetadataTableConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketMetadataTableConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketMetadataTableConfiguration", {}) + .n("S3Client", "DeleteBucketMetadataTableConfigurationCommand") + .sc(DeleteBucketMetadataTableConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketMetricsConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketMetricsConfigurationCommand.js new file mode 100644 index 0000000..2951a5f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketMetricsConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketMetricsConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketMetricsConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketMetricsConfiguration", {}) + .n("S3Client", "DeleteBucketMetricsConfigurationCommand") + .sc(DeleteBucketMetricsConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketOwnershipControlsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketOwnershipControlsCommand.js new file mode 100644 index 0000000..4a28437 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketOwnershipControlsCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketOwnershipControls$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketOwnershipControlsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketOwnershipControls", {}) + .n("S3Client", "DeleteBucketOwnershipControlsCommand") + .sc(DeleteBucketOwnershipControls$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketPolicyCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketPolicyCommand.js new file mode 100644 index 0000000..76c84df --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketPolicyCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketPolicy$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketPolicyCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketPolicy", {}) + .n("S3Client", "DeleteBucketPolicyCommand") + .sc(DeleteBucketPolicy$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketReplicationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketReplicationCommand.js new file mode 100644 index 0000000..1fe367d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketReplicationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketReplication$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketReplicationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketReplication", {}) + .n("S3Client", "DeleteBucketReplicationCommand") + .sc(DeleteBucketReplication$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketTaggingCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketTaggingCommand.js new file mode 100644 index 0000000..c4f880b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketTaggingCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketTagging$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketTaggingCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketTagging", {}) + .n("S3Client", "DeleteBucketTaggingCommand") + .sc(DeleteBucketTagging$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketWebsiteCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketWebsiteCommand.js new file mode 100644 index 0000000..c0f9c77 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteBucketWebsiteCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteBucketWebsite$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteBucketWebsiteCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeleteBucketWebsite", {}) + .n("S3Client", "DeleteBucketWebsiteCommand") + .sc(DeleteBucketWebsite$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectCommand.js new file mode 100644 index 0000000..c7e0fae --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteObject$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteObjectCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "DeleteObject", {}) + .n("S3Client", "DeleteObjectCommand") + .sc(DeleteObject$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectTaggingCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectTaggingCommand.js new file mode 100644 index 0000000..cd8b84e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectTaggingCommand.js @@ -0,0 +1,23 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteObjectTagging$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteObjectTaggingCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "DeleteObjectTagging", {}) + .n("S3Client", "DeleteObjectTaggingCommand") + .sc(DeleteObjectTagging$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectsCommand.js new file mode 100644 index 0000000..0962113 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectsCommand.js @@ -0,0 +1,28 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeleteObjects$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeleteObjectsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "DeleteObjects", {}) + .n("S3Client", "DeleteObjectsCommand") + .sc(DeleteObjects$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeletePublicAccessBlockCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeletePublicAccessBlockCommand.js new file mode 100644 index 0000000..1c456a7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/DeletePublicAccessBlockCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { DeletePublicAccessBlock$ } from "../schemas/schemas_0"; +export { $Command }; +export class DeletePublicAccessBlockCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "DeletePublicAccessBlock", {}) + .n("S3Client", "DeletePublicAccessBlockCommand") + .sc(DeletePublicAccessBlock$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAbacCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAbacCommand.js new file mode 100644 index 0000000..9d0fd2c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAbacCommand.js @@ -0,0 +1,23 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketAbac$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketAbacCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketAbac", {}) + .n("S3Client", "GetBucketAbacCommand") + .sc(GetBucketAbac$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAccelerateConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAccelerateConfigurationCommand.js new file mode 100644 index 0000000..471eb2b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAccelerateConfigurationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketAccelerateConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketAccelerateConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketAccelerateConfiguration", {}) + .n("S3Client", "GetBucketAccelerateConfigurationCommand") + .sc(GetBucketAccelerateConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAclCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAclCommand.js new file mode 100644 index 0000000..204abcc --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAclCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketAcl$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketAclCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketAcl", {}) + .n("S3Client", "GetBucketAclCommand") + .sc(GetBucketAcl$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAnalyticsConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAnalyticsConfigurationCommand.js new file mode 100644 index 0000000..8790d27 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketAnalyticsConfigurationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketAnalyticsConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketAnalyticsConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketAnalyticsConfiguration", {}) + .n("S3Client", "GetBucketAnalyticsConfigurationCommand") + .sc(GetBucketAnalyticsConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketCorsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketCorsCommand.js new file mode 100644 index 0000000..8fc9346 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketCorsCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketCors$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketCorsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketCors", {}) + .n("S3Client", "GetBucketCorsCommand") + .sc(GetBucketCors$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketEncryptionCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketEncryptionCommand.js new file mode 100644 index 0000000..d356874 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketEncryptionCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketEncryption$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketEncryptionCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketEncryption", {}) + .n("S3Client", "GetBucketEncryptionCommand") + .sc(GetBucketEncryption$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketIntelligentTieringConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketIntelligentTieringConfigurationCommand.js new file mode 100644 index 0000000..2fca709 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketIntelligentTieringConfigurationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketIntelligentTieringConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketIntelligentTieringConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketIntelligentTieringConfiguration", {}) + .n("S3Client", "GetBucketIntelligentTieringConfigurationCommand") + .sc(GetBucketIntelligentTieringConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketInventoryConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketInventoryConfigurationCommand.js new file mode 100644 index 0000000..7d43dff --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketInventoryConfigurationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketInventoryConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketInventoryConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketInventoryConfiguration", {}) + .n("S3Client", "GetBucketInventoryConfigurationCommand") + .sc(GetBucketInventoryConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketLifecycleConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketLifecycleConfigurationCommand.js new file mode 100644 index 0000000..5d2deee --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketLifecycleConfigurationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketLifecycleConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketLifecycleConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketLifecycleConfiguration", {}) + .n("S3Client", "GetBucketLifecycleConfigurationCommand") + .sc(GetBucketLifecycleConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketLocationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketLocationCommand.js new file mode 100644 index 0000000..e74f731 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketLocationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketLocation$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketLocationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketLocation", {}) + .n("S3Client", "GetBucketLocationCommand") + .sc(GetBucketLocation$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketLoggingCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketLoggingCommand.js new file mode 100644 index 0000000..691f922 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketLoggingCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketLogging$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketLoggingCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketLogging", {}) + .n("S3Client", "GetBucketLoggingCommand") + .sc(GetBucketLogging$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketMetadataConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketMetadataConfigurationCommand.js new file mode 100644 index 0000000..3179f23 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketMetadataConfigurationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketMetadataConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketMetadataConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketMetadataConfiguration", {}) + .n("S3Client", "GetBucketMetadataConfigurationCommand") + .sc(GetBucketMetadataConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketMetadataTableConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketMetadataTableConfigurationCommand.js new file mode 100644 index 0000000..e442eab --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketMetadataTableConfigurationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketMetadataTableConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketMetadataTableConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketMetadataTableConfiguration", {}) + .n("S3Client", "GetBucketMetadataTableConfigurationCommand") + .sc(GetBucketMetadataTableConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketMetricsConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketMetricsConfigurationCommand.js new file mode 100644 index 0000000..d9f10c2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketMetricsConfigurationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketMetricsConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketMetricsConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketMetricsConfiguration", {}) + .n("S3Client", "GetBucketMetricsConfigurationCommand") + .sc(GetBucketMetricsConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketNotificationConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketNotificationConfigurationCommand.js new file mode 100644 index 0000000..8bdbe08 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketNotificationConfigurationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketNotificationConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketNotificationConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketNotificationConfiguration", {}) + .n("S3Client", "GetBucketNotificationConfigurationCommand") + .sc(GetBucketNotificationConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketOwnershipControlsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketOwnershipControlsCommand.js new file mode 100644 index 0000000..cf93484 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketOwnershipControlsCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketOwnershipControls$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketOwnershipControlsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketOwnershipControls", {}) + .n("S3Client", "GetBucketOwnershipControlsCommand") + .sc(GetBucketOwnershipControls$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketPolicyCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketPolicyCommand.js new file mode 100644 index 0000000..742315f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketPolicyCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketPolicy$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketPolicyCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketPolicy", {}) + .n("S3Client", "GetBucketPolicyCommand") + .sc(GetBucketPolicy$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketPolicyStatusCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketPolicyStatusCommand.js new file mode 100644 index 0000000..627fa2d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketPolicyStatusCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketPolicyStatus$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketPolicyStatusCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketPolicyStatus", {}) + .n("S3Client", "GetBucketPolicyStatusCommand") + .sc(GetBucketPolicyStatus$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketReplicationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketReplicationCommand.js new file mode 100644 index 0000000..546dd81 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketReplicationCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketReplication$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketReplicationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketReplication", {}) + .n("S3Client", "GetBucketReplicationCommand") + .sc(GetBucketReplication$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketRequestPaymentCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketRequestPaymentCommand.js new file mode 100644 index 0000000..a8e1222 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketRequestPaymentCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketRequestPayment$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketRequestPaymentCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketRequestPayment", {}) + .n("S3Client", "GetBucketRequestPaymentCommand") + .sc(GetBucketRequestPayment$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketTaggingCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketTaggingCommand.js new file mode 100644 index 0000000..0129ec9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketTaggingCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketTagging$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketTaggingCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketTagging", {}) + .n("S3Client", "GetBucketTaggingCommand") + .sc(GetBucketTagging$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketVersioningCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketVersioningCommand.js new file mode 100644 index 0000000..8b511b8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketVersioningCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketVersioning$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketVersioningCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketVersioning", {}) + .n("S3Client", "GetBucketVersioningCommand") + .sc(GetBucketVersioning$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketWebsiteCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketWebsiteCommand.js new file mode 100644 index 0000000..46a0601 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetBucketWebsiteCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetBucketWebsite$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetBucketWebsiteCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetBucketWebsite", {}) + .n("S3Client", "GetBucketWebsiteCommand") + .sc(GetBucketWebsite$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectAclCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectAclCommand.js new file mode 100644 index 0000000..2ffc929 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectAclCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetObjectAcl$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetObjectAclCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectAcl", {}) + .n("S3Client", "GetObjectAclCommand") + .sc(GetObjectAcl$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectAttributesCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectAttributesCommand.js new file mode 100644 index 0000000..6d2f60a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectAttributesCommand.js @@ -0,0 +1,25 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetObjectAttributes$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetObjectAttributesCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectAttributes", {}) + .n("S3Client", "GetObjectAttributesCommand") + .sc(GetObjectAttributes$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectCommand.js new file mode 100644 index 0000000..69d8209 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectCommand.js @@ -0,0 +1,32 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getS3ExpiresMiddlewarePlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetObject$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetObjectCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestChecksumRequired: false, + requestValidationModeMember: 'ChecksumMode', + 'responseAlgorithms': ['CRC64NVME', 'CRC32', 'CRC32C', 'SHA256', 'SHA1'], + }), + getSsecPlugin(config), + getS3ExpiresMiddlewarePlugin(config), + ]; +}) + .s("AmazonS3", "GetObject", {}) + .n("S3Client", "GetObjectCommand") + .sc(GetObject$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectLegalHoldCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectLegalHoldCommand.js new file mode 100644 index 0000000..3f2a8c4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectLegalHoldCommand.js @@ -0,0 +1,23 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetObjectLegalHold$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetObjectLegalHoldCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectLegalHold", {}) + .n("S3Client", "GetObjectLegalHoldCommand") + .sc(GetObjectLegalHold$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectLockConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectLockConfigurationCommand.js new file mode 100644 index 0000000..4f51bf3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectLockConfigurationCommand.js @@ -0,0 +1,23 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetObjectLockConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetObjectLockConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectLockConfiguration", {}) + .n("S3Client", "GetObjectLockConfigurationCommand") + .sc(GetObjectLockConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectRetentionCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectRetentionCommand.js new file mode 100644 index 0000000..6f8d840 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectRetentionCommand.js @@ -0,0 +1,23 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetObjectRetention$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetObjectRetentionCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectRetention", {}) + .n("S3Client", "GetObjectRetentionCommand") + .sc(GetObjectRetention$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectTaggingCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectTaggingCommand.js new file mode 100644 index 0000000..43e9d21 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectTaggingCommand.js @@ -0,0 +1,23 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetObjectTagging$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetObjectTaggingCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetObjectTagging", {}) + .n("S3Client", "GetObjectTaggingCommand") + .sc(GetObjectTagging$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectTorrentCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectTorrentCommand.js new file mode 100644 index 0000000..94ed4c8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectTorrentCommand.js @@ -0,0 +1,19 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetObjectTorrent$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetObjectTorrentCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "GetObjectTorrent", {}) + .n("S3Client", "GetObjectTorrentCommand") + .sc(GetObjectTorrent$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetPublicAccessBlockCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetPublicAccessBlockCommand.js new file mode 100644 index 0000000..9e09f15 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/GetPublicAccessBlockCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetPublicAccessBlock$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetPublicAccessBlockCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "GetPublicAccessBlock", {}) + .n("S3Client", "GetPublicAccessBlockCommand") + .sc(GetPublicAccessBlock$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/HeadBucketCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/HeadBucketCommand.js new file mode 100644 index 0000000..fad4548 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/HeadBucketCommand.js @@ -0,0 +1,23 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { HeadBucket$ } from "../schemas/schemas_0"; +export { $Command }; +export class HeadBucketCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "HeadBucket", {}) + .n("S3Client", "HeadBucketCommand") + .sc(HeadBucket$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/HeadObjectCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/HeadObjectCommand.js new file mode 100644 index 0000000..e5cef6d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/HeadObjectCommand.js @@ -0,0 +1,27 @@ +import { getS3ExpiresMiddlewarePlugin, getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { HeadObject$ } from "../schemas/schemas_0"; +export { $Command }; +export class HeadObjectCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + getS3ExpiresMiddlewarePlugin(config), + ]; +}) + .s("AmazonS3", "HeadObject", {}) + .n("S3Client", "HeadObjectCommand") + .sc(HeadObject$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketAnalyticsConfigurationsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketAnalyticsConfigurationsCommand.js new file mode 100644 index 0000000..a084e11 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketAnalyticsConfigurationsCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListBucketAnalyticsConfigurations$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListBucketAnalyticsConfigurationsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBucketAnalyticsConfigurations", {}) + .n("S3Client", "ListBucketAnalyticsConfigurationsCommand") + .sc(ListBucketAnalyticsConfigurations$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketIntelligentTieringConfigurationsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketIntelligentTieringConfigurationsCommand.js new file mode 100644 index 0000000..6b1cb9f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketIntelligentTieringConfigurationsCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListBucketIntelligentTieringConfigurations$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListBucketIntelligentTieringConfigurationsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBucketIntelligentTieringConfigurations", {}) + .n("S3Client", "ListBucketIntelligentTieringConfigurationsCommand") + .sc(ListBucketIntelligentTieringConfigurations$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketInventoryConfigurationsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketInventoryConfigurationsCommand.js new file mode 100644 index 0000000..59c5b2e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketInventoryConfigurationsCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListBucketInventoryConfigurations$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListBucketInventoryConfigurationsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBucketInventoryConfigurations", {}) + .n("S3Client", "ListBucketInventoryConfigurationsCommand") + .sc(ListBucketInventoryConfigurations$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketMetricsConfigurationsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketMetricsConfigurationsCommand.js new file mode 100644 index 0000000..4115180 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketMetricsConfigurationsCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListBucketMetricsConfigurations$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListBucketMetricsConfigurationsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBucketMetricsConfigurations", {}) + .n("S3Client", "ListBucketMetricsConfigurationsCommand") + .sc(ListBucketMetricsConfigurations$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketsCommand.js new file mode 100644 index 0000000..27736f9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListBucketsCommand.js @@ -0,0 +1,20 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListBuckets$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListBucketsCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListBuckets", {}) + .n("S3Client", "ListBucketsCommand") + .sc(ListBuckets$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListDirectoryBucketsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListDirectoryBucketsCommand.js new file mode 100644 index 0000000..50c443d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListDirectoryBucketsCommand.js @@ -0,0 +1,23 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListDirectoryBuckets$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListDirectoryBucketsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListDirectoryBuckets", {}) + .n("S3Client", "ListDirectoryBucketsCommand") + .sc(ListDirectoryBuckets$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListMultipartUploadsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListMultipartUploadsCommand.js new file mode 100644 index 0000000..d12a034 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListMultipartUploadsCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListMultipartUploads$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListMultipartUploadsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Prefix: { type: "contextParams", name: "Prefix" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListMultipartUploads", {}) + .n("S3Client", "ListMultipartUploadsCommand") + .sc(ListMultipartUploads$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectVersionsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectVersionsCommand.js new file mode 100644 index 0000000..1f62728 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectVersionsCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListObjectVersions$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListObjectVersionsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Prefix: { type: "contextParams", name: "Prefix" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListObjectVersions", {}) + .n("S3Client", "ListObjectVersionsCommand") + .sc(ListObjectVersions$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectsCommand.js new file mode 100644 index 0000000..52c92e5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectsCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListObjects$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListObjectsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Prefix: { type: "contextParams", name: "Prefix" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListObjects", {}) + .n("S3Client", "ListObjectsCommand") + .sc(ListObjects$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectsV2Command.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectsV2Command.js new file mode 100644 index 0000000..59b4bee --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectsV2Command.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListObjectsV2$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListObjectsV2Command extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Prefix: { type: "contextParams", name: "Prefix" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "ListObjectsV2", {}) + .n("S3Client", "ListObjectsV2Command") + .sc(ListObjectsV2$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListPartsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListPartsCommand.js new file mode 100644 index 0000000..3e045d2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/ListPartsCommand.js @@ -0,0 +1,26 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListParts$ } from "../schemas/schemas_0"; +export { $Command }; +export class ListPartsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "ListParts", {}) + .n("S3Client", "ListPartsCommand") + .sc(ListParts$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAbacCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAbacCommand.js new file mode 100644 index 0000000..b638cda --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAbacCommand.js @@ -0,0 +1,26 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketAbac$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketAbacCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + ]; +}) + .s("AmazonS3", "PutBucketAbac", {}) + .n("S3Client", "PutBucketAbacCommand") + .sc(PutBucketAbac$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAccelerateConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAccelerateConfigurationCommand.js new file mode 100644 index 0000000..be3c299 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAccelerateConfigurationCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketAccelerateConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketAccelerateConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + ]; +}) + .s("AmazonS3", "PutBucketAccelerateConfiguration", {}) + .n("S3Client", "PutBucketAccelerateConfigurationCommand") + .sc(PutBucketAccelerateConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAclCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAclCommand.js new file mode 100644 index 0000000..06e1aaa --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAclCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketAcl$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketAclCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketAcl", {}) + .n("S3Client", "PutBucketAclCommand") + .sc(PutBucketAcl$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAnalyticsConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAnalyticsConfigurationCommand.js new file mode 100644 index 0000000..5a45b2f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAnalyticsConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketAnalyticsConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketAnalyticsConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketAnalyticsConfiguration", {}) + .n("S3Client", "PutBucketAnalyticsConfigurationCommand") + .sc(PutBucketAnalyticsConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketCorsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketCorsCommand.js new file mode 100644 index 0000000..b50b2a5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketCorsCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketCors$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketCorsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketCors", {}) + .n("S3Client", "PutBucketCorsCommand") + .sc(PutBucketCors$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketEncryptionCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketEncryptionCommand.js new file mode 100644 index 0000000..912d5fd --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketEncryptionCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketEncryption$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketEncryptionCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketEncryption", {}) + .n("S3Client", "PutBucketEncryptionCommand") + .sc(PutBucketEncryption$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketIntelligentTieringConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketIntelligentTieringConfigurationCommand.js new file mode 100644 index 0000000..fa94708 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketIntelligentTieringConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketIntelligentTieringConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketIntelligentTieringConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketIntelligentTieringConfiguration", {}) + .n("S3Client", "PutBucketIntelligentTieringConfigurationCommand") + .sc(PutBucketIntelligentTieringConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketInventoryConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketInventoryConfigurationCommand.js new file mode 100644 index 0000000..f7d1b77 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketInventoryConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketInventoryConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketInventoryConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketInventoryConfiguration", {}) + .n("S3Client", "PutBucketInventoryConfigurationCommand") + .sc(PutBucketInventoryConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLifecycleConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLifecycleConfigurationCommand.js new file mode 100644 index 0000000..c4b910a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLifecycleConfigurationCommand.js @@ -0,0 +1,29 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketLifecycleConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketLifecycleConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutBucketLifecycleConfiguration", {}) + .n("S3Client", "PutBucketLifecycleConfigurationCommand") + .sc(PutBucketLifecycleConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLoggingCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLoggingCommand.js new file mode 100644 index 0000000..0724694 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLoggingCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketLogging$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketLoggingCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketLogging", {}) + .n("S3Client", "PutBucketLoggingCommand") + .sc(PutBucketLogging$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketMetricsConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketMetricsConfigurationCommand.js new file mode 100644 index 0000000..c5f0de4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketMetricsConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketMetricsConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketMetricsConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketMetricsConfiguration", {}) + .n("S3Client", "PutBucketMetricsConfigurationCommand") + .sc(PutBucketMetricsConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketNotificationConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketNotificationConfigurationCommand.js new file mode 100644 index 0000000..3d6d8d8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketNotificationConfigurationCommand.js @@ -0,0 +1,20 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketNotificationConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketNotificationConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "PutBucketNotificationConfiguration", {}) + .n("S3Client", "PutBucketNotificationConfigurationCommand") + .sc(PutBucketNotificationConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketOwnershipControlsCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketOwnershipControlsCommand.js new file mode 100644 index 0000000..6eb8744 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketOwnershipControlsCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketOwnershipControls$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketOwnershipControlsCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketOwnershipControls", {}) + .n("S3Client", "PutBucketOwnershipControlsCommand") + .sc(PutBucketOwnershipControls$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketPolicyCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketPolicyCommand.js new file mode 100644 index 0000000..9cf7fc6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketPolicyCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketPolicy$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketPolicyCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketPolicy", {}) + .n("S3Client", "PutBucketPolicyCommand") + .sc(PutBucketPolicy$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketReplicationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketReplicationCommand.js new file mode 100644 index 0000000..5f6442d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketReplicationCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketReplication$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketReplicationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketReplication", {}) + .n("S3Client", "PutBucketReplicationCommand") + .sc(PutBucketReplication$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketRequestPaymentCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketRequestPaymentCommand.js new file mode 100644 index 0000000..dbb0d4a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketRequestPaymentCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketRequestPayment$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketRequestPaymentCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketRequestPayment", {}) + .n("S3Client", "PutBucketRequestPaymentCommand") + .sc(PutBucketRequestPayment$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketTaggingCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketTaggingCommand.js new file mode 100644 index 0000000..d33dfde --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketTaggingCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketTagging$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketTaggingCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketTagging", {}) + .n("S3Client", "PutBucketTaggingCommand") + .sc(PutBucketTagging$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketVersioningCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketVersioningCommand.js new file mode 100644 index 0000000..569904b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketVersioningCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketVersioning$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketVersioningCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketVersioning", {}) + .n("S3Client", "PutBucketVersioningCommand") + .sc(PutBucketVersioning$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketWebsiteCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketWebsiteCommand.js new file mode 100644 index 0000000..5aea451 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketWebsiteCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutBucketWebsite$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutBucketWebsiteCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutBucketWebsite", {}) + .n("S3Client", "PutBucketWebsiteCommand") + .sc(PutBucketWebsite$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectAclCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectAclCommand.js new file mode 100644 index 0000000..5caf947 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectAclCommand.js @@ -0,0 +1,29 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutObjectAcl$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutObjectAclCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectAcl", {}) + .n("S3Client", "PutObjectAclCommand") + .sc(PutObjectAcl$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectCommand.js new file mode 100644 index 0000000..501adfa --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectCommand.js @@ -0,0 +1,32 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getCheckContentLengthHeaderPlugin, getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutObject$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutObjectCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + getCheckContentLengthHeaderPlugin(config), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "PutObject", {}) + .n("S3Client", "PutObjectCommand") + .sc(PutObject$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLegalHoldCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLegalHoldCommand.js new file mode 100644 index 0000000..91e57b5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLegalHoldCommand.js @@ -0,0 +1,28 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutObjectLegalHold$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutObjectLegalHoldCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectLegalHold", {}) + .n("S3Client", "PutObjectLegalHoldCommand") + .sc(PutObjectLegalHold$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLockConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLockConfigurationCommand.js new file mode 100644 index 0000000..e59e4b7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLockConfigurationCommand.js @@ -0,0 +1,28 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutObjectLockConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutObjectLockConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectLockConfiguration", {}) + .n("S3Client", "PutObjectLockConfigurationCommand") + .sc(PutObjectLockConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectRetentionCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectRetentionCommand.js new file mode 100644 index 0000000..31773ad --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectRetentionCommand.js @@ -0,0 +1,28 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutObjectRetention$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutObjectRetentionCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectRetention", {}) + .n("S3Client", "PutObjectRetentionCommand") + .sc(PutObjectRetention$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectTaggingCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectTaggingCommand.js new file mode 100644 index 0000000..11e9b99 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectTaggingCommand.js @@ -0,0 +1,28 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutObjectTagging$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutObjectTaggingCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "PutObjectTagging", {}) + .n("S3Client", "PutObjectTaggingCommand") + .sc(PutObjectTagging$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutPublicAccessBlockCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutPublicAccessBlockCommand.js new file mode 100644 index 0000000..6a31b34 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/PutPublicAccessBlockCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { PutPublicAccessBlock$ } from "../schemas/schemas_0"; +export { $Command }; +export class PutPublicAccessBlockCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "PutPublicAccessBlock", {}) + .n("S3Client", "PutPublicAccessBlockCommand") + .sc(PutPublicAccessBlock$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/RenameObjectCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/RenameObjectCommand.js new file mode 100644 index 0000000..cd62653 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/RenameObjectCommand.js @@ -0,0 +1,24 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { RenameObject$ } from "../schemas/schemas_0"; +export { $Command }; +export class RenameObjectCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "RenameObject", {}) + .n("S3Client", "RenameObjectCommand") + .sc(RenameObject$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/RestoreObjectCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/RestoreObjectCommand.js new file mode 100644 index 0000000..5408574 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/RestoreObjectCommand.js @@ -0,0 +1,28 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { RestoreObject$ } from "../schemas/schemas_0"; +export { $Command }; +export class RestoreObjectCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "RestoreObject", {}) + .n("S3Client", "RestoreObjectCommand") + .sc(RestoreObject$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/SelectObjectContentCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/SelectObjectContentCommand.js new file mode 100644 index 0000000..7863d83 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/SelectObjectContentCommand.js @@ -0,0 +1,29 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { SelectObjectContent$ } from "../schemas/schemas_0"; +export { $Command }; +export class SelectObjectContentCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "SelectObjectContent", { + eventStream: { + output: true, + }, +}) + .n("S3Client", "SelectObjectContentCommand") + .sc(SelectObjectContent$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateBucketMetadataInventoryTableConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateBucketMetadataInventoryTableConfigurationCommand.js new file mode 100644 index 0000000..04b1648 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateBucketMetadataInventoryTableConfigurationCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UpdateBucketMetadataInventoryTableConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class UpdateBucketMetadataInventoryTableConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "UpdateBucketMetadataInventoryTableConfiguration", {}) + .n("S3Client", "UpdateBucketMetadataInventoryTableConfigurationCommand") + .sc(UpdateBucketMetadataInventoryTableConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateBucketMetadataJournalTableConfigurationCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateBucketMetadataJournalTableConfigurationCommand.js new file mode 100644 index 0000000..893ac50 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateBucketMetadataJournalTableConfigurationCommand.js @@ -0,0 +1,27 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UpdateBucketMetadataJournalTableConfiguration$ } from "../schemas/schemas_0"; +export { $Command }; +export class UpdateBucketMetadataJournalTableConfigurationCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseS3ExpressControlEndpoint: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + ]; +}) + .s("AmazonS3", "UpdateBucketMetadataJournalTableConfiguration", {}) + .n("S3Client", "UpdateBucketMetadataJournalTableConfigurationCommand") + .sc(UpdateBucketMetadataJournalTableConfiguration$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateObjectEncryptionCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateObjectEncryptionCommand.js new file mode 100644 index 0000000..c88caad --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateObjectEncryptionCommand.js @@ -0,0 +1,28 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UpdateObjectEncryption$ } from "../schemas/schemas_0"; +export { $Command }; +export class UpdateObjectEncryptionCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: true, + }), + getThrow200ExceptionsPlugin(config), + ]; +}) + .s("AmazonS3", "UpdateObjectEncryption", {}) + .n("S3Client", "UpdateObjectEncryptionCommand") + .sc(UpdateObjectEncryption$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UploadPartCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UploadPartCommand.js new file mode 100644 index 0000000..56bc35b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UploadPartCommand.js @@ -0,0 +1,31 @@ +import { getFlexibleChecksumsPlugin } from "@aws-sdk/middleware-flexible-checksums"; +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UploadPart$ } from "../schemas/schemas_0"; +export { $Command }; +export class UploadPartCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + Bucket: { type: "contextParams", name: "Bucket" }, + Key: { type: "contextParams", name: "Key" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getFlexibleChecksumsPlugin(config, { + requestAlgorithmMember: { 'httpHeader': 'x-amz-sdk-checksum-algorithm', 'name': 'ChecksumAlgorithm' }, + requestChecksumRequired: false, + }), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "UploadPart", {}) + .n("S3Client", "UploadPartCommand") + .sc(UploadPart$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UploadPartCopyCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UploadPartCopyCommand.js new file mode 100644 index 0000000..c8b5724 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/UploadPartCopyCommand.js @@ -0,0 +1,26 @@ +import { getThrow200ExceptionsPlugin } from "@aws-sdk/middleware-sdk-s3"; +import { getSsecPlugin } from "@aws-sdk/middleware-ssec"; +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UploadPartCopy$ } from "../schemas/schemas_0"; +export { $Command }; +export class UploadPartCopyCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + DisableS3ExpressSessionAuth: { type: "staticContextParams", value: true }, + Bucket: { type: "contextParams", name: "Bucket" }, +}) + .m(function (Command, cs, config, o) { + return [ + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + getThrow200ExceptionsPlugin(config), + getSsecPlugin(config), + ]; +}) + .s("AmazonS3", "UploadPartCopy", {}) + .n("S3Client", "UploadPartCopyCommand") + .sc(UploadPartCopy$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/WriteGetObjectResponseCommand.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/WriteGetObjectResponseCommand.js new file mode 100644 index 0000000..f24c16d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/WriteGetObjectResponseCommand.js @@ -0,0 +1,19 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { WriteGetObjectResponse$ } from "../schemas/schemas_0"; +export { $Command }; +export class WriteGetObjectResponseCommand extends $Command + .classBuilder() + .ep({ + ...commonParams, + UseObjectLambdaEndpoint: { type: "staticContextParams", value: true }, +}) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AmazonS3", "WriteGetObjectResponse", {}) + .n("S3Client", "WriteGetObjectResponseCommand") + .sc(WriteGetObjectResponse$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/index.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/index.js new file mode 100644 index 0000000..2d7b505 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/commands/index.js @@ -0,0 +1,107 @@ +export * from "./AbortMultipartUploadCommand"; +export * from "./CompleteMultipartUploadCommand"; +export * from "./CopyObjectCommand"; +export * from "./CreateBucketCommand"; +export * from "./CreateBucketMetadataConfigurationCommand"; +export * from "./CreateBucketMetadataTableConfigurationCommand"; +export * from "./CreateMultipartUploadCommand"; +export * from "./CreateSessionCommand"; +export * from "./DeleteBucketAnalyticsConfigurationCommand"; +export * from "./DeleteBucketCommand"; +export * from "./DeleteBucketCorsCommand"; +export * from "./DeleteBucketEncryptionCommand"; +export * from "./DeleteBucketIntelligentTieringConfigurationCommand"; +export * from "./DeleteBucketInventoryConfigurationCommand"; +export * from "./DeleteBucketLifecycleCommand"; +export * from "./DeleteBucketMetadataConfigurationCommand"; +export * from "./DeleteBucketMetadataTableConfigurationCommand"; +export * from "./DeleteBucketMetricsConfigurationCommand"; +export * from "./DeleteBucketOwnershipControlsCommand"; +export * from "./DeleteBucketPolicyCommand"; +export * from "./DeleteBucketReplicationCommand"; +export * from "./DeleteBucketTaggingCommand"; +export * from "./DeleteBucketWebsiteCommand"; +export * from "./DeleteObjectCommand"; +export * from "./DeleteObjectTaggingCommand"; +export * from "./DeleteObjectsCommand"; +export * from "./DeletePublicAccessBlockCommand"; +export * from "./GetBucketAbacCommand"; +export * from "./GetBucketAccelerateConfigurationCommand"; +export * from "./GetBucketAclCommand"; +export * from "./GetBucketAnalyticsConfigurationCommand"; +export * from "./GetBucketCorsCommand"; +export * from "./GetBucketEncryptionCommand"; +export * from "./GetBucketIntelligentTieringConfigurationCommand"; +export * from "./GetBucketInventoryConfigurationCommand"; +export * from "./GetBucketLifecycleConfigurationCommand"; +export * from "./GetBucketLocationCommand"; +export * from "./GetBucketLoggingCommand"; +export * from "./GetBucketMetadataConfigurationCommand"; +export * from "./GetBucketMetadataTableConfigurationCommand"; +export * from "./GetBucketMetricsConfigurationCommand"; +export * from "./GetBucketNotificationConfigurationCommand"; +export * from "./GetBucketOwnershipControlsCommand"; +export * from "./GetBucketPolicyCommand"; +export * from "./GetBucketPolicyStatusCommand"; +export * from "./GetBucketReplicationCommand"; +export * from "./GetBucketRequestPaymentCommand"; +export * from "./GetBucketTaggingCommand"; +export * from "./GetBucketVersioningCommand"; +export * from "./GetBucketWebsiteCommand"; +export * from "./GetObjectAclCommand"; +export * from "./GetObjectAttributesCommand"; +export * from "./GetObjectCommand"; +export * from "./GetObjectLegalHoldCommand"; +export * from "./GetObjectLockConfigurationCommand"; +export * from "./GetObjectRetentionCommand"; +export * from "./GetObjectTaggingCommand"; +export * from "./GetObjectTorrentCommand"; +export * from "./GetPublicAccessBlockCommand"; +export * from "./HeadBucketCommand"; +export * from "./HeadObjectCommand"; +export * from "./ListBucketAnalyticsConfigurationsCommand"; +export * from "./ListBucketIntelligentTieringConfigurationsCommand"; +export * from "./ListBucketInventoryConfigurationsCommand"; +export * from "./ListBucketMetricsConfigurationsCommand"; +export * from "./ListBucketsCommand"; +export * from "./ListDirectoryBucketsCommand"; +export * from "./ListMultipartUploadsCommand"; +export * from "./ListObjectVersionsCommand"; +export * from "./ListObjectsCommand"; +export * from "./ListObjectsV2Command"; +export * from "./ListPartsCommand"; +export * from "./PutBucketAbacCommand"; +export * from "./PutBucketAccelerateConfigurationCommand"; +export * from "./PutBucketAclCommand"; +export * from "./PutBucketAnalyticsConfigurationCommand"; +export * from "./PutBucketCorsCommand"; +export * from "./PutBucketEncryptionCommand"; +export * from "./PutBucketIntelligentTieringConfigurationCommand"; +export * from "./PutBucketInventoryConfigurationCommand"; +export * from "./PutBucketLifecycleConfigurationCommand"; +export * from "./PutBucketLoggingCommand"; +export * from "./PutBucketMetricsConfigurationCommand"; +export * from "./PutBucketNotificationConfigurationCommand"; +export * from "./PutBucketOwnershipControlsCommand"; +export * from "./PutBucketPolicyCommand"; +export * from "./PutBucketReplicationCommand"; +export * from "./PutBucketRequestPaymentCommand"; +export * from "./PutBucketTaggingCommand"; +export * from "./PutBucketVersioningCommand"; +export * from "./PutBucketWebsiteCommand"; +export * from "./PutObjectAclCommand"; +export * from "./PutObjectCommand"; +export * from "./PutObjectLegalHoldCommand"; +export * from "./PutObjectLockConfigurationCommand"; +export * from "./PutObjectRetentionCommand"; +export * from "./PutObjectTaggingCommand"; +export * from "./PutPublicAccessBlockCommand"; +export * from "./RenameObjectCommand"; +export * from "./RestoreObjectCommand"; +export * from "./SelectObjectContentCommand"; +export * from "./UpdateBucketMetadataInventoryTableConfigurationCommand"; +export * from "./UpdateBucketMetadataJournalTableConfigurationCommand"; +export * from "./UpdateObjectEncryptionCommand"; +export * from "./UploadPartCommand"; +export * from "./UploadPartCopyCommand"; +export * from "./WriteGetObjectResponseCommand"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/endpoint/EndpointParameters.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/endpoint/EndpointParameters.js new file mode 100644 index 0000000..9af9299 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/endpoint/EndpointParameters.js @@ -0,0 +1,25 @@ +const clientContextParamDefaults = {}; +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useFipsEndpoint: options.useFipsEndpoint ?? false, + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + forcePathStyle: options.forcePathStyle ?? false, + useAccelerateEndpoint: options.useAccelerateEndpoint ?? false, + useGlobalEndpoint: options.useGlobalEndpoint ?? false, + disableMultiregionAccessPoints: options.disableMultiregionAccessPoints ?? false, + defaultSigningName: "s3", + clientContextParams: options.clientContextParams ?? {}, + }); +}; +export const commonParams = { + ForcePathStyle: { type: "clientContextParams", name: "forcePathStyle" }, + UseArnRegion: { type: "clientContextParams", name: "useArnRegion" }, + DisableMultiRegionAccessPoints: { type: "clientContextParams", name: "disableMultiregionAccessPoints" }, + Accelerate: { type: "clientContextParams", name: "useAccelerateEndpoint" }, + DisableS3ExpressSessionAuth: { type: "clientContextParams", name: "disableS3ExpressSessionAuth" }, + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/endpoint/endpointResolver.js new file mode 100644 index 0000000..f415db6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/endpoint/endpointResolver.js @@ -0,0 +1,29 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: [ + "Accelerate", + "Bucket", + "DisableAccessPoints", + "DisableMultiRegionAccessPoints", + "DisableS3ExpressSessionAuth", + "Endpoint", + "ForcePathStyle", + "Region", + "UseArnRegion", + "UseDualStack", + "UseFIPS", + "UseGlobalEndpoint", + "UseObjectLambdaEndpoint", + "UseS3ExpressControlEndpoint", + ], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/endpoint/ruleset.js new file mode 100644 index 0000000..80b3819 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/endpoint/ruleset.js @@ -0,0 +1,4 @@ +const cs = "required", ct = "type", cu = "rules", cv = "conditions", cw = "fn", cx = "argv", cy = "ref", cz = "assign", cA = "url", cB = "properties", cC = "backend", cD = "authSchemes", cE = "disableDoubleEncoding", cF = "signingName", cG = "signingRegion", cH = "headers", cI = "signingRegionSet"; +const a = 6, b = false, c = true, d = "isSet", e = "booleanEquals", f = "error", g = "aws.partition", h = "stringEquals", i = "getAttr", j = "name", k = "substring", l = "bucketSuffix", m = "parseURL", n = "endpoint", o = "tree", p = "aws.isVirtualHostableS3Bucket", q = "{url#scheme}://{Bucket}.{url#authority}{url#path}", r = "not", s = "accessPointSuffix", t = "{url#scheme}://{url#authority}{url#path}", u = "hardwareType", v = "regionPrefix", w = "bucketAliasSuffix", x = "outpostId", y = "isValidHostLabel", z = "sigv4a", A = "s3-outposts", B = "s3", C = "{url#scheme}://{url#authority}{url#normalizedPath}{Bucket}", D = "https://{Bucket}.s3-accelerate.{partitionResult#dnsSuffix}", E = "https://{Bucket}.s3.{partitionResult#dnsSuffix}", F = "aws.parseArn", G = "bucketArn", H = "arnType", I = "", J = "s3-object-lambda", K = "accesspoint", L = "accessPointName", M = "{url#scheme}://{accessPointName}-{bucketArn#accountId}.{url#authority}{url#path}", N = "mrapPartition", O = "outpostType", P = "arnPrefix", Q = "{url#scheme}://{url#authority}{url#normalizedPath}{uri_encoded_bucket}", R = "https://s3.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", S = "https://s3.{partitionResult#dnsSuffix}", T = { [cs]: false, [ct]: "string" }, U = { [cs]: true, "default": false, [ct]: "boolean" }, V = { [cs]: false, [ct]: "boolean" }, W = { [cw]: e, [cx]: [{ [cy]: "Accelerate" }, true] }, X = { [cw]: e, [cx]: [{ [cy]: "UseFIPS" }, true] }, Y = { [cw]: e, [cx]: [{ [cy]: "UseDualStack" }, true] }, Z = { [cw]: d, [cx]: [{ [cy]: "Endpoint" }] }, aa = { [cw]: g, [cx]: [{ [cy]: "Region" }], [cz]: "partitionResult" }, ab = { [cw]: h, [cx]: [{ [cw]: i, [cx]: [{ [cy]: "partitionResult" }, j] }, "aws-cn"] }, ac = { [cw]: d, [cx]: [{ [cy]: "Bucket" }] }, ad = { [cy]: "Bucket" }, ae = { [cv]: [W], [f]: "S3Express does not support S3 Accelerate.", [ct]: f }, af = { [cv]: [Z, { [cw]: m, [cx]: [{ [cy]: "Endpoint" }], [cz]: "url" }], [cu]: [{ [cv]: [{ [cw]: d, [cx]: [{ [cy]: "DisableS3ExpressSessionAuth" }] }, { [cw]: e, [cx]: [{ [cy]: "DisableS3ExpressSessionAuth" }, true] }], [cu]: [{ [cv]: [{ [cw]: e, [cx]: [{ [cw]: i, [cx]: [{ [cy]: "url" }, "isIp"] }, true] }], [cu]: [{ [cv]: [{ [cw]: "uriEncode", [cx]: [ad], [cz]: "uri_encoded_bucket" }], [cu]: [{ [n]: { [cA]: "{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: p, [cx]: [ad, false] }], [cu]: [{ [n]: { [cA]: q, [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], [ct]: o }, { [f]: "S3Express bucket name is not a valid virtual hostable name.", [ct]: f }], [ct]: o }, { [cv]: [{ [cw]: e, [cx]: [{ [cw]: i, [cx]: [{ [cy]: "url" }, "isIp"] }, true] }], [cu]: [{ [cv]: [{ [cw]: "uriEncode", [cx]: [ad], [cz]: "uri_encoded_bucket" }], [cu]: [{ [n]: { [cA]: "{url#scheme}://{url#authority}/{uri_encoded_bucket}{url#path}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: p, [cx]: [ad, false] }], [cu]: [{ [n]: { [cA]: q, [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], [ct]: o }, { [f]: "S3Express bucket name is not a valid virtual hostable name.", [ct]: f }], [ct]: o }, ag = { [cw]: m, [cx]: [{ [cy]: "Endpoint" }], [cz]: "url" }, ah = { [cw]: e, [cx]: [{ [cw]: i, [cx]: [{ [cy]: "url" }, "isIp"] }, true] }, ai = { [cy]: "url" }, aj = { [cw]: "uriEncode", [cx]: [ad], [cz]: "uri_encoded_bucket" }, ak = { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: "s3express", [cG]: "{Region}" }] }, al = {}, am = { [cw]: p, [cx]: [ad, false] }, an = { [f]: "S3Express bucket name is not a valid virtual hostable name.", [ct]: f }, ao = { [cw]: d, [cx]: [{ [cy]: "UseS3ExpressControlEndpoint" }] }, ap = { [cw]: e, [cx]: [{ [cy]: "UseS3ExpressControlEndpoint" }, true] }, aq = { [cw]: r, [cx]: [Z] }, ar = { [cw]: e, [cx]: [{ [cy]: "UseDualStack" }, false] }, as = { [cw]: e, [cx]: [{ [cy]: "UseFIPS" }, false] }, at = { [f]: "Unrecognized S3Express bucket name format.", [ct]: f }, au = { [cw]: r, [cx]: [ac] }, av = { [cy]: u }, aw = { [cv]: [aq], [f]: "Expected a endpoint to be specified but no endpoint was found", [ct]: f }, ax = { [cD]: [{ [cE]: true, [j]: z, [cF]: A, [cI]: ["*"] }, { [cE]: true, [j]: "sigv4", [cF]: A, [cG]: "{Region}" }] }, ay = { [cw]: e, [cx]: [{ [cy]: "ForcePathStyle" }, false] }, az = { [cy]: "ForcePathStyle" }, aA = { [cw]: e, [cx]: [{ [cy]: "Accelerate" }, false] }, aB = { [cw]: h, [cx]: [{ [cy]: "Region" }, "aws-global"] }, aC = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: B, [cG]: "us-east-1" }] }, aD = { [cw]: r, [cx]: [aB] }, aE = { [cw]: e, [cx]: [{ [cy]: "UseGlobalEndpoint" }, true] }, aF = { [cA]: "https://{Bucket}.s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: B, [cG]: "{Region}" }] }, [cH]: {} }, aG = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: B, [cG]: "{Region}" }] }, aH = { [cw]: e, [cx]: [{ [cy]: "UseGlobalEndpoint" }, false] }, aI = { [cA]: "https://{Bucket}.s3-fips.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, aJ = { [cA]: "https://{Bucket}.s3-accelerate.dualstack.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, aK = { [cA]: "https://{Bucket}.s3.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, aL = { [cw]: e, [cx]: [{ [cw]: i, [cx]: [ai, "isIp"] }, false] }, aM = { [cA]: C, [cB]: aG, [cH]: {} }, aN = { [cA]: q, [cB]: aG, [cH]: {} }, aO = { [n]: aN, [ct]: n }, aP = { [cA]: D, [cB]: aG, [cH]: {} }, aQ = { [cA]: "https://{Bucket}.s3.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, aR = { [f]: "Invalid region: region was not a valid DNS name.", [ct]: f }, aS = { [cy]: G }, aT = { [cy]: H }, aU = { [cw]: i, [cx]: [aS, "service"] }, aV = { [cy]: L }, aW = { [cv]: [Y], [f]: "S3 Object Lambda does not support Dual-stack", [ct]: f }, aX = { [cv]: [W], [f]: "S3 Object Lambda does not support S3 Accelerate", [ct]: f }, aY = { [cv]: [{ [cw]: d, [cx]: [{ [cy]: "DisableAccessPoints" }] }, { [cw]: e, [cx]: [{ [cy]: "DisableAccessPoints" }, true] }], [f]: "Access points are not supported for this operation", [ct]: f }, aZ = { [cv]: [{ [cw]: d, [cx]: [{ [cy]: "UseArnRegion" }] }, { [cw]: e, [cx]: [{ [cy]: "UseArnRegion" }, false] }, { [cw]: r, [cx]: [{ [cw]: h, [cx]: [{ [cw]: i, [cx]: [aS, "region"] }, "{Region}"] }] }], [f]: "Invalid configuration: region from ARN `{bucketArn#region}` does not match client region `{Region}` and UseArnRegion is `false`", [ct]: f }, ba = { [cw]: i, [cx]: [{ [cy]: "bucketPartition" }, j] }, bb = { [cw]: i, [cx]: [aS, "accountId"] }, bc = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: J, [cG]: "{bucketArn#region}" }] }, bd = { [f]: "Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `{accessPointName}`", [ct]: f }, be = { [f]: "Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `{bucketArn#accountId}`", [ct]: f }, bf = { [f]: "Invalid region in ARN: `{bucketArn#region}` (invalid DNS name)", [ct]: f }, bg = { [f]: "Client was configured for partition `{partitionResult#name}` but ARN (`{Bucket}`) has `{bucketPartition#name}`", [ct]: f }, bh = { [f]: "Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.", [ct]: f }, bi = { [f]: "Invalid ARN: Expected a resource of the format `accesspoint:` but no name was provided", [ct]: f }, bj = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: B, [cG]: "{bucketArn#region}" }] }, bk = { [cD]: [{ [cE]: true, [j]: z, [cF]: A, [cI]: ["*"] }, { [cE]: true, [j]: "sigv4", [cF]: A, [cG]: "{bucketArn#region}" }] }, bl = { [cw]: F, [cx]: [ad] }, bm = { [cA]: "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aG, [cH]: {} }, bn = { [cA]: "https://s3-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aG, [cH]: {} }, bo = { [cA]: "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aG, [cH]: {} }, bp = { [cA]: Q, [cB]: aG, [cH]: {} }, bq = { [cA]: "https://s3.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aG, [cH]: {} }, br = { [cy]: "UseObjectLambdaEndpoint" }, bs = { [cD]: [{ [cE]: true, [j]: "sigv4", [cF]: J, [cG]: "{Region}" }] }, bt = { [cA]: "https://s3-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, bu = { [cA]: "https://s3-fips.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, bv = { [cA]: "https://s3.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, bw = { [cA]: t, [cB]: aG, [cH]: {} }, bx = { [cA]: "https://s3.{Region}.{partitionResult#dnsSuffix}", [cB]: aG, [cH]: {} }, by = [{ [cy]: "Region" }], bz = [{ [cy]: "Endpoint" }], bA = [ad], bB = [W], bC = [Z, ag], bD = [{ [cw]: d, [cx]: [{ [cy]: "DisableS3ExpressSessionAuth" }] }, { [cw]: e, [cx]: [{ [cy]: "DisableS3ExpressSessionAuth" }, true] }], bE = [aj], bF = [am], bG = [aa], bH = [X, Y], bI = [X, ar], bJ = [as, Y], bK = [as, ar], bL = [{ [cw]: k, [cx]: [ad, 6, 14, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 14, 16, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bM = [{ [cv]: [X, Y], [n]: { [cA]: "https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: {} }, [ct]: n }, { [cv]: bI, [n]: { [cA]: "https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: {} }, [ct]: n }, { [cv]: bJ, [n]: { [cA]: "https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: {} }, [ct]: n }, { [cv]: bK, [n]: { [cA]: "https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: {} }, [ct]: n }], bN = [{ [cw]: k, [cx]: [ad, 6, 15, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 15, 17, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bO = [{ [cw]: k, [cx]: [ad, 6, 19, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 19, 21, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bP = [{ [cw]: k, [cx]: [ad, 6, 20, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 20, 22, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bQ = [{ [cw]: k, [cx]: [ad, 6, 26, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 26, 28, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bR = [{ [cv]: [X, Y], [n]: { [cA]: "https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }, { [cv]: bI, [n]: { [cA]: "https://{Bucket}.s3express-fips-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }, { [cv]: bJ, [n]: { [cA]: "https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }, { [cv]: bK, [n]: { [cA]: "https://{Bucket}.s3express-{s3expressAvailabilityZoneId}.{Region}.{partitionResult#dnsSuffix}", [cB]: { [cC]: "S3Express", [cD]: [{ [cE]: true, [j]: "sigv4-s3express", [cF]: "s3express", [cG]: "{Region}" }] }, [cH]: {} }, [ct]: n }], bS = [ad, 0, 7, true], bT = [{ [cw]: k, [cx]: [ad, 7, 15, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 15, 17, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bU = [{ [cw]: k, [cx]: [ad, 7, 16, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 16, 18, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bV = [{ [cw]: k, [cx]: [ad, 7, 20, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 20, 22, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bW = [{ [cw]: k, [cx]: [ad, 7, 21, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 21, 23, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bX = [{ [cw]: k, [cx]: [ad, 7, 27, true], [cz]: "s3expressAvailabilityZoneId" }, { [cw]: k, [cx]: [ad, 27, 29, true], [cz]: "s3expressAvailabilityZoneDelim" }, { [cw]: h, [cx]: [{ [cy]: "s3expressAvailabilityZoneDelim" }, "--"] }], bY = [ac], bZ = [{ [cw]: y, [cx]: [{ [cy]: x }, false] }], ca = [{ [cw]: h, [cx]: [{ [cy]: v }, "beta"] }], cb = ["*"], cc = [{ [cw]: y, [cx]: [{ [cy]: "Region" }, false] }], cd = [{ [cw]: h, [cx]: [{ [cy]: "Region" }, "us-east-1"] }], ce = [{ [cw]: h, [cx]: [aT, K] }], cf = [{ [cw]: i, [cx]: [aS, "resourceId[1]"], [cz]: L }, { [cw]: r, [cx]: [{ [cw]: h, [cx]: [aV, I] }] }], cg = [aS, "resourceId[1]"], ch = [Y], ci = [{ [cw]: r, [cx]: [{ [cw]: h, [cx]: [{ [cw]: i, [cx]: [aS, "region"] }, I] }] }], cj = [{ [cw]: r, [cx]: [{ [cw]: d, [cx]: [{ [cw]: i, [cx]: [aS, "resourceId[2]"] }] }] }], ck = [aS, "resourceId[2]"], cl = [{ [cw]: g, [cx]: [{ [cw]: i, [cx]: [aS, "region"] }], [cz]: "bucketPartition" }], cm = [{ [cw]: h, [cx]: [ba, { [cw]: i, [cx]: [{ [cy]: "partitionResult" }, j] }] }], cn = [{ [cw]: y, [cx]: [{ [cw]: i, [cx]: [aS, "region"] }, true] }], co = [{ [cw]: y, [cx]: [bb, false] }], cp = [{ [cw]: y, [cx]: [aV, false] }], cq = [X], cr = [{ [cw]: y, [cx]: [{ [cy]: "Region" }, true] }]; +const _data = { version: "1.0", parameters: { Bucket: T, Region: T, UseFIPS: U, UseDualStack: U, Endpoint: T, ForcePathStyle: U, Accelerate: U, UseGlobalEndpoint: U, UseObjectLambdaEndpoint: V, Key: T, Prefix: T, CopySource: T, DisableAccessPoints: V, DisableMultiRegionAccessPoints: U, UseArnRegion: V, UseS3ExpressControlEndpoint: V, DisableS3ExpressSessionAuth: V }, [cu]: [{ [cv]: [{ [cw]: d, [cx]: by }], [cu]: [{ [cv]: [W, X], error: "Accelerate cannot be used with FIPS", [ct]: f }, { [cv]: [Y, Z], error: "Cannot set dual-stack in combination with a custom endpoint.", [ct]: f }, { [cv]: [Z, X], error: "A custom endpoint cannot be combined with FIPS", [ct]: f }, { [cv]: [Z, W], error: "A custom endpoint cannot be combined with S3 Accelerate", [ct]: f }, { [cv]: [X, aa, ab], error: "Partition does not support FIPS", [ct]: f }, { [cv]: [ac, { [cw]: k, [cx]: [ad, 0, a, c], [cz]: l }, { [cw]: h, [cx]: [{ [cy]: l }, "--x-s3"] }], [cu]: [ae, af, { [cv]: [ao, ap], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: [aj, aq], [cu]: [{ [cv]: bH, endpoint: { [cA]: "https://s3express-control-fips.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bI, endpoint: { [cA]: "https://s3express-control-fips.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bJ, endpoint: { [cA]: "https://s3express-control.dualstack.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bK, endpoint: { [cA]: "https://s3express-control.{Region}.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: ak, [cH]: al }, [ct]: n }], [ct]: o }], [ct]: o }], [ct]: o }, { [cv]: bF, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: bD, [cu]: [{ [cv]: bL, [cu]: bM, [ct]: o }, { [cv]: bN, [cu]: bM, [ct]: o }, { [cv]: bO, [cu]: bM, [ct]: o }, { [cv]: bP, [cu]: bM, [ct]: o }, { [cv]: bQ, [cu]: bM, [ct]: o }, at], [ct]: o }, { [cv]: bL, [cu]: bR, [ct]: o }, { [cv]: bN, [cu]: bR, [ct]: o }, { [cv]: bO, [cu]: bR, [ct]: o }, { [cv]: bP, [cu]: bR, [ct]: o }, { [cv]: bQ, [cu]: bR, [ct]: o }, at], [ct]: o }], [ct]: o }, an], [ct]: o }, { [cv]: [ac, { [cw]: k, [cx]: bS, [cz]: s }, { [cw]: h, [cx]: [{ [cy]: s }, "--xa-s3"] }], [cu]: [ae, af, { [cv]: bF, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: bD, [cu]: [{ [cv]: bT, [cu]: bM, [ct]: o }, { [cv]: bU, [cu]: bM, [ct]: o }, { [cv]: bV, [cu]: bM, [ct]: o }, { [cv]: bW, [cu]: bM, [ct]: o }, { [cv]: bX, [cu]: bM, [ct]: o }, at], [ct]: o }, { [cv]: bT, [cu]: bR, [ct]: o }, { [cv]: bU, [cu]: bR, [ct]: o }, { [cv]: bV, [cu]: bR, [ct]: o }, { [cv]: bW, [cu]: bR, [ct]: o }, { [cv]: bX, [cu]: bR, [ct]: o }, at], [ct]: o }], [ct]: o }, an], [ct]: o }, { [cv]: [au, ao, ap], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: bC, endpoint: { [cA]: t, [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bH, endpoint: { [cA]: "https://s3express-control-fips.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bI, endpoint: { [cA]: "https://s3express-control-fips.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bJ, endpoint: { [cA]: "https://s3express-control.dualstack.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: al }, [ct]: n }, { [cv]: bK, endpoint: { [cA]: "https://s3express-control.{Region}.{partitionResult#dnsSuffix}", [cB]: ak, [cH]: al }, [ct]: n }], [ct]: o }], [ct]: o }, { [cv]: [ac, { [cw]: k, [cx]: [ad, 49, 50, c], [cz]: u }, { [cw]: k, [cx]: [ad, 8, 12, c], [cz]: v }, { [cw]: k, [cx]: bS, [cz]: w }, { [cw]: k, [cx]: [ad, 32, 49, c], [cz]: x }, { [cw]: g, [cx]: by, [cz]: "regionPartition" }, { [cw]: h, [cx]: [{ [cy]: w }, "--op-s3"] }], [cu]: [{ [cv]: bZ, [cu]: [{ [cv]: bF, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [av, "e"] }], [cu]: [{ [cv]: ca, [cu]: [aw, { [cv]: bC, endpoint: { [cA]: "https://{Bucket}.ec2.{url#authority}", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { endpoint: { [cA]: "https://{Bucket}.ec2.s3-outposts.{Region}.{regionPartition#dnsSuffix}", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { [cv]: [{ [cw]: h, [cx]: [av, "o"] }], [cu]: [{ [cv]: ca, [cu]: [aw, { [cv]: bC, endpoint: { [cA]: "https://{Bucket}.op-{outpostId}.{url#authority}", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { endpoint: { [cA]: "https://{Bucket}.op-{outpostId}.s3-outposts.{Region}.{regionPartition#dnsSuffix}", [cB]: ax, [cH]: al }, [ct]: n }], [ct]: o }, { error: "Unrecognized hardware type: \"Expected hardware type o or e but got {hardwareType}\"", [ct]: f }], [ct]: o }, { error: "Invalid Outposts Bucket alias - it must be a valid bucket name.", [ct]: f }], [ct]: o }, { error: "Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.", [ct]: f }], [ct]: o }, { [cv]: bY, [cu]: [{ [cv]: [Z, { [cw]: r, [cx]: [{ [cw]: d, [cx]: [{ [cw]: m, [cx]: bz }] }] }], error: "Custom endpoint `{Endpoint}` was not a valid URI", [ct]: f }, { [cv]: [ay, am], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cc, [cu]: [{ [cv]: [W, ab], error: "S3 Accelerate cannot be used in this region", [ct]: f }, { [cv]: [Y, X, aA, aq, aB], endpoint: { [cA]: "https://{Bucket}.s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, X, aA, aq, aD, aE], [cu]: [{ endpoint: aF, [ct]: n }], [ct]: o }, { [cv]: [Y, X, aA, aq, aD, aH], endpoint: aF, [ct]: n }, { [cv]: [ar, X, aA, aq, aB], endpoint: { [cA]: "https://{Bucket}.s3-fips.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, X, aA, aq, aD, aE], [cu]: [{ endpoint: aI, [ct]: n }], [ct]: o }, { [cv]: [ar, X, aA, aq, aD, aH], endpoint: aI, [ct]: n }, { [cv]: [Y, as, W, aq, aB], endpoint: { [cA]: "https://{Bucket}.s3-accelerate.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, as, W, aq, aD, aE], [cu]: [{ endpoint: aJ, [ct]: n }], [ct]: o }, { [cv]: [Y, as, W, aq, aD, aH], endpoint: aJ, [ct]: n }, { [cv]: [Y, as, aA, aq, aB], endpoint: { [cA]: "https://{Bucket}.s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, as, aA, aq, aD, aE], [cu]: [{ endpoint: aK, [ct]: n }], [ct]: o }, { [cv]: [Y, as, aA, aq, aD, aH], endpoint: aK, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, ah, aB], endpoint: { [cA]: C, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, aL, aB], endpoint: { [cA]: q, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, ah, aD, aE], [cu]: [{ [cv]: cd, endpoint: aM, [ct]: n }, { endpoint: aM, [ct]: n }], [ct]: o }, { [cv]: [ar, as, aA, Z, ag, aL, aD, aE], [cu]: [{ [cv]: cd, endpoint: aN, [ct]: n }, aO], [ct]: o }, { [cv]: [ar, as, aA, Z, ag, ah, aD, aH], endpoint: aM, [ct]: n }, { [cv]: [ar, as, aA, Z, ag, aL, aD, aH], endpoint: aN, [ct]: n }, { [cv]: [ar, as, W, aq, aB], endpoint: { [cA]: D, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, W, aq, aD, aE], [cu]: [{ [cv]: cd, endpoint: aP, [ct]: n }, { endpoint: aP, [ct]: n }], [ct]: o }, { [cv]: [ar, as, W, aq, aD, aH], endpoint: aP, [ct]: n }, { [cv]: [ar, as, aA, aq, aB], endpoint: { [cA]: E, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, as, aA, aq, aD, aE], [cu]: [{ [cv]: cd, endpoint: { [cA]: E, [cB]: aG, [cH]: al }, [ct]: n }, { endpoint: aQ, [ct]: n }], [ct]: o }, { [cv]: [ar, as, aA, aq, aD, aH], endpoint: aQ, [ct]: n }], [ct]: o }, aR], [ct]: o }], [ct]: o }, { [cv]: [Z, ag, { [cw]: h, [cx]: [{ [cw]: i, [cx]: [ai, "scheme"] }, "http"] }, { [cw]: p, [cx]: [ad, c] }, ay, as, ar, aA], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cc, [cu]: [aO], [ct]: o }, aR], [ct]: o }], [ct]: o }, { [cv]: [ay, { [cw]: F, [cx]: bA, [cz]: G }], [cu]: [{ [cv]: [{ [cw]: i, [cx]: [aS, "resourceId[0]"], [cz]: H }, { [cw]: r, [cx]: [{ [cw]: h, [cx]: [aT, I] }] }], [cu]: [{ [cv]: [{ [cw]: h, [cx]: [aU, J] }], [cu]: [{ [cv]: ce, [cu]: [{ [cv]: cf, [cu]: [aW, aX, { [cv]: ci, [cu]: [aY, { [cv]: cj, [cu]: [aZ, { [cv]: cl, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cm, [cu]: [{ [cv]: cn, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [bb, I] }], error: "Invalid ARN: Missing account id", [ct]: f }, { [cv]: co, [cu]: [{ [cv]: cp, [cu]: [{ [cv]: bC, endpoint: { [cA]: M, [cB]: bc, [cH]: al }, [ct]: n }, { [cv]: cq, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bc, [cH]: al }, [ct]: n }, { endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-object-lambda.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bc, [cH]: al }, [ct]: n }], [ct]: o }, bd], [ct]: o }, be], [ct]: o }, bf], [ct]: o }, bg], [ct]: o }], [ct]: o }], [ct]: o }, bh], [ct]: o }, { error: "Invalid ARN: bucket ARN is missing a region", [ct]: f }], [ct]: o }, bi], [ct]: o }, { error: "Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `{arnType}`", [ct]: f }], [ct]: o }, { [cv]: ce, [cu]: [{ [cv]: cf, [cu]: [{ [cv]: ci, [cu]: [{ [cv]: ce, [cu]: [{ [cv]: ci, [cu]: [aY, { [cv]: cj, [cu]: [aZ, { [cv]: cl, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [ba, "{partitionResult#name}"] }], [cu]: [{ [cv]: cn, [cu]: [{ [cv]: [{ [cw]: h, [cx]: [aU, B] }], [cu]: [{ [cv]: co, [cu]: [{ [cv]: cp, [cu]: [{ [cv]: bB, error: "Access Points do not support S3 Accelerate", [ct]: f }, { [cv]: bH, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: bI, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint-fips.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: bJ, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.dualstack.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: [as, ar, Z, ag], endpoint: { [cA]: M, [cB]: bj, [cH]: al }, [ct]: n }, { [cv]: bK, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.s3-accesspoint.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bj, [cH]: al }, [ct]: n }], [ct]: o }, bd], [ct]: o }, be], [ct]: o }, { error: "Invalid ARN: The ARN was not for the S3 service, found: {bucketArn#service}", [ct]: f }], [ct]: o }, bf], [ct]: o }, bg], [ct]: o }], [ct]: o }], [ct]: o }, bh], [ct]: o }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: y, [cx]: [aV, c] }], [cu]: [{ [cv]: ch, error: "S3 MRAP does not support dual-stack", [ct]: f }, { [cv]: cq, error: "S3 MRAP does not support FIPS", [ct]: f }, { [cv]: bB, error: "S3 MRAP does not support S3 Accelerate", [ct]: f }, { [cv]: [{ [cw]: e, [cx]: [{ [cy]: "DisableMultiRegionAccessPoints" }, c] }], error: "Invalid configuration: Multi-Region Access Point ARNs are disabled.", [ct]: f }, { [cv]: [{ [cw]: g, [cx]: by, [cz]: N }], [cu]: [{ [cv]: [{ [cw]: h, [cx]: [{ [cw]: i, [cx]: [{ [cy]: N }, j] }, { [cw]: i, [cx]: [aS, "partition"] }] }], [cu]: [{ endpoint: { [cA]: "https://{accessPointName}.accesspoint.s3-global.{mrapPartition#dnsSuffix}", [cB]: { [cD]: [{ [cE]: c, name: z, [cF]: B, [cI]: cb }] }, [cH]: al }, [ct]: n }], [ct]: o }, { error: "Client was configured for partition `{mrapPartition#name}` but bucket referred to partition `{bucketArn#partition}`", [ct]: f }], [ct]: o }], [ct]: o }, { error: "Invalid Access Point Name", [ct]: f }], [ct]: o }, bi], [ct]: o }, { [cv]: [{ [cw]: h, [cx]: [aU, A] }], [cu]: [{ [cv]: ch, error: "S3 Outposts does not support Dual-stack", [ct]: f }, { [cv]: cq, error: "S3 Outposts does not support FIPS", [ct]: f }, { [cv]: bB, error: "S3 Outposts does not support S3 Accelerate", [ct]: f }, { [cv]: [{ [cw]: d, [cx]: [{ [cw]: i, [cx]: [aS, "resourceId[4]"] }] }], error: "Invalid Arn: Outpost Access Point ARN contains sub resources", [ct]: f }, { [cv]: [{ [cw]: i, [cx]: cg, [cz]: x }], [cu]: [{ [cv]: bZ, [cu]: [aZ, { [cv]: cl, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cm, [cu]: [{ [cv]: cn, [cu]: [{ [cv]: co, [cu]: [{ [cv]: [{ [cw]: i, [cx]: ck, [cz]: O }], [cu]: [{ [cv]: [{ [cw]: i, [cx]: [aS, "resourceId[3]"], [cz]: L }], [cu]: [{ [cv]: [{ [cw]: h, [cx]: [{ [cy]: O }, K] }], [cu]: [{ [cv]: bC, endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.{outpostId}.{url#authority}", [cB]: bk, [cH]: al }, [ct]: n }, { endpoint: { [cA]: "https://{accessPointName}-{bucketArn#accountId}.{outpostId}.s3-outposts.{bucketArn#region}.{bucketPartition#dnsSuffix}", [cB]: bk, [cH]: al }, [ct]: n }], [ct]: o }, { error: "Expected an outpost type `accesspoint`, found {outpostType}", [ct]: f }], [ct]: o }, { error: "Invalid ARN: expected an access point name", [ct]: f }], [ct]: o }, { error: "Invalid ARN: Expected a 4-component resource", [ct]: f }], [ct]: o }, be], [ct]: o }, bf], [ct]: o }, bg], [ct]: o }], [ct]: o }], [ct]: o }, { error: "Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `{outpostId}`", [ct]: f }], [ct]: o }, { error: "Invalid ARN: The Outpost Id was not set", [ct]: f }], [ct]: o }, { error: "Invalid ARN: Unrecognized format: {Bucket} (type: {arnType})", [ct]: f }], [ct]: o }, { error: "Invalid ARN: No ARN type specified", [ct]: f }], [ct]: o }, { [cv]: [{ [cw]: k, [cx]: [ad, 0, 4, b], [cz]: P }, { [cw]: h, [cx]: [{ [cy]: P }, "arn:"] }, { [cw]: r, [cx]: [{ [cw]: d, [cx]: [bl] }] }], error: "Invalid ARN: `{Bucket}` was not a valid ARN", [ct]: f }, { [cv]: [{ [cw]: e, [cx]: [az, c] }, bl], error: "Path-style addressing cannot be used with ARN buckets", [ct]: f }, { [cv]: bE, [cu]: [{ [cv]: bG, [cu]: [{ [cv]: [aA], [cu]: [{ [cv]: [Y, aq, X, aB], endpoint: { [cA]: "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, aq, X, aD, aE], [cu]: [{ endpoint: bm, [ct]: n }], [ct]: o }, { [cv]: [Y, aq, X, aD, aH], endpoint: bm, [ct]: n }, { [cv]: [ar, aq, X, aB], endpoint: { [cA]: "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, aq, X, aD, aE], [cu]: [{ endpoint: bn, [ct]: n }], [ct]: o }, { [cv]: [ar, aq, X, aD, aH], endpoint: bn, [ct]: n }, { [cv]: [Y, aq, as, aB], endpoint: { [cA]: "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}/{uri_encoded_bucket}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [Y, aq, as, aD, aE], [cu]: [{ endpoint: bo, [ct]: n }], [ct]: o }, { [cv]: [Y, aq, as, aD, aH], endpoint: bo, [ct]: n }, { [cv]: [ar, Z, ag, as, aB], endpoint: { [cA]: Q, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, Z, ag, as, aD, aE], [cu]: [{ [cv]: cd, endpoint: bp, [ct]: n }, { endpoint: bp, [ct]: n }], [ct]: o }, { [cv]: [ar, Z, ag, as, aD, aH], endpoint: bp, [ct]: n }, { [cv]: [ar, aq, as, aB], endpoint: { [cA]: R, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [ar, aq, as, aD, aE], [cu]: [{ [cv]: cd, endpoint: { [cA]: R, [cB]: aG, [cH]: al }, [ct]: n }, { endpoint: bq, [ct]: n }], [ct]: o }, { [cv]: [ar, aq, as, aD, aH], endpoint: bq, [ct]: n }], [ct]: o }, { error: "Path-style addressing cannot be used with S3 Accelerate", [ct]: f }], [ct]: o }], [ct]: o }], [ct]: o }, { [cv]: [{ [cw]: d, [cx]: [br] }, { [cw]: e, [cx]: [br, c] }], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cr, [cu]: [aW, aX, { [cv]: bC, endpoint: { [cA]: t, [cB]: bs, [cH]: al }, [ct]: n }, { [cv]: cq, endpoint: { [cA]: "https://s3-object-lambda-fips.{Region}.{partitionResult#dnsSuffix}", [cB]: bs, [cH]: al }, [ct]: n }, { endpoint: { [cA]: "https://s3-object-lambda.{Region}.{partitionResult#dnsSuffix}", [cB]: bs, [cH]: al }, [ct]: n }], [ct]: o }, aR], [ct]: o }], [ct]: o }, { [cv]: [au], [cu]: [{ [cv]: bG, [cu]: [{ [cv]: cr, [cu]: [{ [cv]: [X, Y, aq, aB], endpoint: { [cA]: "https://s3-fips.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [X, Y, aq, aD, aE], [cu]: [{ endpoint: bt, [ct]: n }], [ct]: o }, { [cv]: [X, Y, aq, aD, aH], endpoint: bt, [ct]: n }, { [cv]: [X, ar, aq, aB], endpoint: { [cA]: "https://s3-fips.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [X, ar, aq, aD, aE], [cu]: [{ endpoint: bu, [ct]: n }], [ct]: o }, { [cv]: [X, ar, aq, aD, aH], endpoint: bu, [ct]: n }, { [cv]: [as, Y, aq, aB], endpoint: { [cA]: "https://s3.dualstack.us-east-1.{partitionResult#dnsSuffix}", [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [as, Y, aq, aD, aE], [cu]: [{ endpoint: bv, [ct]: n }], [ct]: o }, { [cv]: [as, Y, aq, aD, aH], endpoint: bv, [ct]: n }, { [cv]: [as, ar, Z, ag, aB], endpoint: { [cA]: t, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [as, ar, Z, ag, aD, aE], [cu]: [{ [cv]: cd, endpoint: bw, [ct]: n }, { endpoint: bw, [ct]: n }], [ct]: o }, { [cv]: [as, ar, Z, ag, aD, aH], endpoint: bw, [ct]: n }, { [cv]: [as, ar, aq, aB], endpoint: { [cA]: S, [cB]: aC, [cH]: al }, [ct]: n }, { [cv]: [as, ar, aq, aD, aE], [cu]: [{ [cv]: cd, endpoint: { [cA]: S, [cB]: aG, [cH]: al }, [ct]: n }, { endpoint: bx, [ct]: n }], [ct]: o }, { [cv]: [as, ar, aq, aD, aH], endpoint: bx, [ct]: n }], [ct]: o }, aR], [ct]: o }], [ct]: o }], [ct]: o }, { error: "A region must be set when sending requests to S3.", [ct]: f }] }; +export const ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/extensionConfiguration.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/extensionConfiguration.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/index.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/index.js new file mode 100644 index 0000000..495e0c3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/index.js @@ -0,0 +1,11 @@ +export * from "./S3Client"; +export * from "./S3"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./pagination"; +export * from "./waiters"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export * from "./models/models_1"; +export { S3ServiceException } from "./models/S3ServiceException"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/models/S3ServiceException.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/S3ServiceException.js new file mode 100644 index 0000000..cd434cd --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/S3ServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class S3ServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, S3ServiceException.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/models/enums.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/enums.js new file mode 100644 index 0000000..0782b94 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/enums.js @@ -0,0 +1,403 @@ +export const BucketAbacStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const RequestCharged = { + requester: "requester", +}; +export const RequestPayer = { + requester: "requester", +}; +export const BucketAccelerateStatus = { + Enabled: "Enabled", + Suspended: "Suspended", +}; +export const Type = { + AmazonCustomerByEmail: "AmazonCustomerByEmail", + CanonicalUser: "CanonicalUser", + Group: "Group", +}; +export const Permission = { + FULL_CONTROL: "FULL_CONTROL", + READ: "READ", + READ_ACP: "READ_ACP", + WRITE: "WRITE", + WRITE_ACP: "WRITE_ACP", +}; +export const OwnerOverride = { + Destination: "Destination", +}; +export const ChecksumType = { + COMPOSITE: "COMPOSITE", + FULL_OBJECT: "FULL_OBJECT", +}; +export const ServerSideEncryption = { + AES256: "AES256", + aws_fsx: "aws:fsx", + aws_kms: "aws:kms", + aws_kms_dsse: "aws:kms:dsse", +}; +export const ObjectCannedACL = { + authenticated_read: "authenticated-read", + aws_exec_read: "aws-exec-read", + bucket_owner_full_control: "bucket-owner-full-control", + bucket_owner_read: "bucket-owner-read", + private: "private", + public_read: "public-read", + public_read_write: "public-read-write", +}; +export const ChecksumAlgorithm = { + CRC32: "CRC32", + CRC32C: "CRC32C", + CRC64NVME: "CRC64NVME", + SHA1: "SHA1", + SHA256: "SHA256", +}; +export const MetadataDirective = { + COPY: "COPY", + REPLACE: "REPLACE", +}; +export const ObjectLockLegalHoldStatus = { + OFF: "OFF", + ON: "ON", +}; +export const ObjectLockMode = { + COMPLIANCE: "COMPLIANCE", + GOVERNANCE: "GOVERNANCE", +}; +export const StorageClass = { + DEEP_ARCHIVE: "DEEP_ARCHIVE", + EXPRESS_ONEZONE: "EXPRESS_ONEZONE", + FSX_ONTAP: "FSX_ONTAP", + FSX_OPENZFS: "FSX_OPENZFS", + GLACIER: "GLACIER", + GLACIER_IR: "GLACIER_IR", + INTELLIGENT_TIERING: "INTELLIGENT_TIERING", + ONEZONE_IA: "ONEZONE_IA", + OUTPOSTS: "OUTPOSTS", + REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY", + SNOW: "SNOW", + STANDARD: "STANDARD", + STANDARD_IA: "STANDARD_IA", +}; +export const TaggingDirective = { + COPY: "COPY", + REPLACE: "REPLACE", +}; +export const BucketCannedACL = { + authenticated_read: "authenticated-read", + private: "private", + public_read: "public-read", + public_read_write: "public-read-write", +}; +export const BucketNamespace = { + ACCOUNT_REGIONAL: "account-regional", + GLOBAL: "global", +}; +export const DataRedundancy = { + SingleAvailabilityZone: "SingleAvailabilityZone", + SingleLocalZone: "SingleLocalZone", +}; +export const BucketType = { + Directory: "Directory", +}; +export const LocationType = { + AvailabilityZone: "AvailabilityZone", + LocalZone: "LocalZone", +}; +export const BucketLocationConstraint = { + EU: "EU", + af_south_1: "af-south-1", + ap_east_1: "ap-east-1", + ap_northeast_1: "ap-northeast-1", + ap_northeast_2: "ap-northeast-2", + ap_northeast_3: "ap-northeast-3", + ap_south_1: "ap-south-1", + ap_south_2: "ap-south-2", + ap_southeast_1: "ap-southeast-1", + ap_southeast_2: "ap-southeast-2", + ap_southeast_3: "ap-southeast-3", + ap_southeast_4: "ap-southeast-4", + ap_southeast_5: "ap-southeast-5", + ca_central_1: "ca-central-1", + cn_north_1: "cn-north-1", + cn_northwest_1: "cn-northwest-1", + eu_central_1: "eu-central-1", + eu_central_2: "eu-central-2", + eu_north_1: "eu-north-1", + eu_south_1: "eu-south-1", + eu_south_2: "eu-south-2", + eu_west_1: "eu-west-1", + eu_west_2: "eu-west-2", + eu_west_3: "eu-west-3", + il_central_1: "il-central-1", + me_central_1: "me-central-1", + me_south_1: "me-south-1", + sa_east_1: "sa-east-1", + us_east_2: "us-east-2", + us_gov_east_1: "us-gov-east-1", + us_gov_west_1: "us-gov-west-1", + us_west_1: "us-west-1", + us_west_2: "us-west-2", +}; +export const ObjectOwnership = { + BucketOwnerEnforced: "BucketOwnerEnforced", + BucketOwnerPreferred: "BucketOwnerPreferred", + ObjectWriter: "ObjectWriter", +}; +export const InventoryConfigurationState = { + DISABLED: "DISABLED", + ENABLED: "ENABLED", +}; +export const TableSseAlgorithm = { + AES256: "AES256", + aws_kms: "aws:kms", +}; +export const ExpirationState = { + DISABLED: "DISABLED", + ENABLED: "ENABLED", +}; +export const SessionMode = { + ReadOnly: "ReadOnly", + ReadWrite: "ReadWrite", +}; +export const AnalyticsS3ExportFileFormat = { + CSV: "CSV", +}; +export const StorageClassAnalysisSchemaVersion = { + V_1: "V_1", +}; +export const EncryptionType = { + NONE: "NONE", + SSE_C: "SSE-C", +}; +export const IntelligentTieringStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const IntelligentTieringAccessTier = { + ARCHIVE_ACCESS: "ARCHIVE_ACCESS", + DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS", +}; +export const InventoryFormat = { + CSV: "CSV", + ORC: "ORC", + Parquet: "Parquet", +}; +export const InventoryIncludedObjectVersions = { + All: "All", + Current: "Current", +}; +export const InventoryOptionalField = { + BucketKeyStatus: "BucketKeyStatus", + ChecksumAlgorithm: "ChecksumAlgorithm", + ETag: "ETag", + EncryptionStatus: "EncryptionStatus", + IntelligentTieringAccessTier: "IntelligentTieringAccessTier", + IsMultipartUploaded: "IsMultipartUploaded", + LastModifiedDate: "LastModifiedDate", + LifecycleExpirationDate: "LifecycleExpirationDate", + ObjectAccessControlList: "ObjectAccessControlList", + ObjectLockLegalHoldStatus: "ObjectLockLegalHoldStatus", + ObjectLockMode: "ObjectLockMode", + ObjectLockRetainUntilDate: "ObjectLockRetainUntilDate", + ObjectOwner: "ObjectOwner", + ReplicationStatus: "ReplicationStatus", + Size: "Size", + StorageClass: "StorageClass", +}; +export const InventoryFrequency = { + Daily: "Daily", + Weekly: "Weekly", +}; +export const TransitionStorageClass = { + DEEP_ARCHIVE: "DEEP_ARCHIVE", + GLACIER: "GLACIER", + GLACIER_IR: "GLACIER_IR", + INTELLIGENT_TIERING: "INTELLIGENT_TIERING", + ONEZONE_IA: "ONEZONE_IA", + STANDARD_IA: "STANDARD_IA", +}; +export const ExpirationStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const TransitionDefaultMinimumObjectSize = { + all_storage_classes_128K: "all_storage_classes_128K", + varies_by_storage_class: "varies_by_storage_class", +}; +export const BucketLogsPermission = { + FULL_CONTROL: "FULL_CONTROL", + READ: "READ", + WRITE: "WRITE", +}; +export const PartitionDateSource = { + DeliveryTime: "DeliveryTime", + EventTime: "EventTime", +}; +export const S3TablesBucketType = { + aws: "aws", + customer: "customer", +}; +export const Event = { + s3_IntelligentTiering: "s3:IntelligentTiering", + s3_LifecycleExpiration_: "s3:LifecycleExpiration:*", + s3_LifecycleExpiration_Delete: "s3:LifecycleExpiration:Delete", + s3_LifecycleExpiration_DeleteMarkerCreated: "s3:LifecycleExpiration:DeleteMarkerCreated", + s3_LifecycleTransition: "s3:LifecycleTransition", + s3_ObjectAcl_Put: "s3:ObjectAcl:Put", + s3_ObjectCreated_: "s3:ObjectCreated:*", + s3_ObjectCreated_CompleteMultipartUpload: "s3:ObjectCreated:CompleteMultipartUpload", + s3_ObjectCreated_Copy: "s3:ObjectCreated:Copy", + s3_ObjectCreated_Post: "s3:ObjectCreated:Post", + s3_ObjectCreated_Put: "s3:ObjectCreated:Put", + s3_ObjectRemoved_: "s3:ObjectRemoved:*", + s3_ObjectRemoved_Delete: "s3:ObjectRemoved:Delete", + s3_ObjectRemoved_DeleteMarkerCreated: "s3:ObjectRemoved:DeleteMarkerCreated", + s3_ObjectRestore_: "s3:ObjectRestore:*", + s3_ObjectRestore_Completed: "s3:ObjectRestore:Completed", + s3_ObjectRestore_Delete: "s3:ObjectRestore:Delete", + s3_ObjectRestore_Post: "s3:ObjectRestore:Post", + s3_ObjectTagging_: "s3:ObjectTagging:*", + s3_ObjectTagging_Delete: "s3:ObjectTagging:Delete", + s3_ObjectTagging_Put: "s3:ObjectTagging:Put", + s3_ReducedRedundancyLostObject: "s3:ReducedRedundancyLostObject", + s3_Replication_: "s3:Replication:*", + s3_Replication_OperationFailedReplication: "s3:Replication:OperationFailedReplication", + s3_Replication_OperationMissedThreshold: "s3:Replication:OperationMissedThreshold", + s3_Replication_OperationNotTracked: "s3:Replication:OperationNotTracked", + s3_Replication_OperationReplicatedAfterThreshold: "s3:Replication:OperationReplicatedAfterThreshold", +}; +export const FilterRuleName = { + prefix: "prefix", + suffix: "suffix", +}; +export const DeleteMarkerReplicationStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const MetricsStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const ReplicationTimeStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const ExistingObjectReplicationStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const ReplicaModificationsStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const SseKmsEncryptedObjectsStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const ReplicationRuleStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const Payer = { + BucketOwner: "BucketOwner", + Requester: "Requester", +}; +export const MFADeleteStatus = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const BucketVersioningStatus = { + Enabled: "Enabled", + Suspended: "Suspended", +}; +export const Protocol = { + http: "http", + https: "https", +}; +export const ReplicationStatus = { + COMPLETE: "COMPLETE", + COMPLETED: "COMPLETED", + FAILED: "FAILED", + PENDING: "PENDING", + REPLICA: "REPLICA", +}; +export const ChecksumMode = { + ENABLED: "ENABLED", +}; +export const ObjectAttributes = { + CHECKSUM: "Checksum", + ETAG: "ETag", + OBJECT_PARTS: "ObjectParts", + OBJECT_SIZE: "ObjectSize", + STORAGE_CLASS: "StorageClass", +}; +export const ObjectLockEnabled = { + Enabled: "Enabled", +}; +export const ObjectLockRetentionMode = { + COMPLIANCE: "COMPLIANCE", + GOVERNANCE: "GOVERNANCE", +}; +export const ArchiveStatus = { + ARCHIVE_ACCESS: "ARCHIVE_ACCESS", + DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS", +}; +export const EncodingType = { + url: "url", +}; +export const ObjectStorageClass = { + DEEP_ARCHIVE: "DEEP_ARCHIVE", + EXPRESS_ONEZONE: "EXPRESS_ONEZONE", + FSX_ONTAP: "FSX_ONTAP", + FSX_OPENZFS: "FSX_OPENZFS", + GLACIER: "GLACIER", + GLACIER_IR: "GLACIER_IR", + INTELLIGENT_TIERING: "INTELLIGENT_TIERING", + ONEZONE_IA: "ONEZONE_IA", + OUTPOSTS: "OUTPOSTS", + REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY", + SNOW: "SNOW", + STANDARD: "STANDARD", + STANDARD_IA: "STANDARD_IA", +}; +export const OptionalObjectAttributes = { + RESTORE_STATUS: "RestoreStatus", +}; +export const ObjectVersionStorageClass = { + STANDARD: "STANDARD", +}; +export const MFADelete = { + Disabled: "Disabled", + Enabled: "Enabled", +}; +export const Tier = { + Bulk: "Bulk", + Expedited: "Expedited", + Standard: "Standard", +}; +export const ExpressionType = { + SQL: "SQL", +}; +export const CompressionType = { + BZIP2: "BZIP2", + GZIP: "GZIP", + NONE: "NONE", +}; +export const FileHeaderInfo = { + IGNORE: "IGNORE", + NONE: "NONE", + USE: "USE", +}; +export const JSONType = { + DOCUMENT: "DOCUMENT", + LINES: "LINES", +}; +export const QuoteFields = { + ALWAYS: "ALWAYS", + ASNEEDED: "ASNEEDED", +}; +export const RestoreRequestType = { + SELECT: "SELECT", +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/models/errors.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/errors.js new file mode 100644 index 0000000..557aa5e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/errors.js @@ -0,0 +1,185 @@ +import { S3ServiceException as __BaseException } from "./S3ServiceException"; +export class NoSuchUpload extends __BaseException { + name = "NoSuchUpload"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchUpload", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NoSuchUpload.prototype); + } +} +export class AccessDenied extends __BaseException { + name = "AccessDenied"; + $fault = "client"; + constructor(opts) { + super({ + name: "AccessDenied", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDenied.prototype); + } +} +export class ObjectNotInActiveTierError extends __BaseException { + name = "ObjectNotInActiveTierError"; + $fault = "client"; + constructor(opts) { + super({ + name: "ObjectNotInActiveTierError", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ObjectNotInActiveTierError.prototype); + } +} +export class BucketAlreadyExists extends __BaseException { + name = "BucketAlreadyExists"; + $fault = "client"; + constructor(opts) { + super({ + name: "BucketAlreadyExists", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, BucketAlreadyExists.prototype); + } +} +export class BucketAlreadyOwnedByYou extends __BaseException { + name = "BucketAlreadyOwnedByYou"; + $fault = "client"; + constructor(opts) { + super({ + name: "BucketAlreadyOwnedByYou", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, BucketAlreadyOwnedByYou.prototype); + } +} +export class NoSuchBucket extends __BaseException { + name = "NoSuchBucket"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchBucket", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NoSuchBucket.prototype); + } +} +export class InvalidObjectState extends __BaseException { + name = "InvalidObjectState"; + $fault = "client"; + StorageClass; + AccessTier; + constructor(opts) { + super({ + name: "InvalidObjectState", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidObjectState.prototype); + this.StorageClass = opts.StorageClass; + this.AccessTier = opts.AccessTier; + } +} +export class NoSuchKey extends __BaseException { + name = "NoSuchKey"; + $fault = "client"; + constructor(opts) { + super({ + name: "NoSuchKey", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NoSuchKey.prototype); + } +} +export class NotFound extends __BaseException { + name = "NotFound"; + $fault = "client"; + constructor(opts) { + super({ + name: "NotFound", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NotFound.prototype); + } +} +export class EncryptionTypeMismatch extends __BaseException { + name = "EncryptionTypeMismatch"; + $fault = "client"; + constructor(opts) { + super({ + name: "EncryptionTypeMismatch", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, EncryptionTypeMismatch.prototype); + } +} +export class InvalidRequest extends __BaseException { + name = "InvalidRequest"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidRequest", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequest.prototype); + } +} +export class InvalidWriteOffset extends __BaseException { + name = "InvalidWriteOffset"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidWriteOffset", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidWriteOffset.prototype); + } +} +export class TooManyParts extends __BaseException { + name = "TooManyParts"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyParts", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyParts.prototype); + } +} +export class IdempotencyParameterMismatch extends __BaseException { + name = "IdempotencyParameterMismatch"; + $fault = "client"; + constructor(opts) { + super({ + name: "IdempotencyParameterMismatch", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IdempotencyParameterMismatch.prototype); + } +} +export class ObjectAlreadyInActiveTierError extends __BaseException { + name = "ObjectAlreadyInActiveTierError"; + $fault = "client"; + constructor(opts) { + super({ + name: "ObjectAlreadyInActiveTierError", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ObjectAlreadyInActiveTierError.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/models/models_0.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/models_0.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/models/models_1.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/models_1.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/models/models_1.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/Interfaces.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/Interfaces.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/Interfaces.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListBucketsPaginator.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListBucketsPaginator.js new file mode 100644 index 0000000..83d3305 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListBucketsPaginator.js @@ -0,0 +1,4 @@ +import { createPaginator } from "@smithy/core"; +import { ListBucketsCommand } from "../commands/ListBucketsCommand"; +import { S3Client } from "../S3Client"; +export const paginateListBuckets = createPaginator(S3Client, ListBucketsCommand, "ContinuationToken", "ContinuationToken", "MaxBuckets"); diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListDirectoryBucketsPaginator.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListDirectoryBucketsPaginator.js new file mode 100644 index 0000000..e01aa45 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListDirectoryBucketsPaginator.js @@ -0,0 +1,4 @@ +import { createPaginator } from "@smithy/core"; +import { ListDirectoryBucketsCommand, } from "../commands/ListDirectoryBucketsCommand"; +import { S3Client } from "../S3Client"; +export const paginateListDirectoryBuckets = createPaginator(S3Client, ListDirectoryBucketsCommand, "ContinuationToken", "ContinuationToken", "MaxDirectoryBuckets"); diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListObjectsV2Paginator.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListObjectsV2Paginator.js new file mode 100644 index 0000000..dfabccc --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListObjectsV2Paginator.js @@ -0,0 +1,4 @@ +import { createPaginator } from "@smithy/core"; +import { ListObjectsV2Command, } from "../commands/ListObjectsV2Command"; +import { S3Client } from "../S3Client"; +export const paginateListObjectsV2 = createPaginator(S3Client, ListObjectsV2Command, "ContinuationToken", "NextContinuationToken", "MaxKeys"); diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListPartsPaginator.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListPartsPaginator.js new file mode 100644 index 0000000..0c1e60a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListPartsPaginator.js @@ -0,0 +1,4 @@ +import { createPaginator } from "@smithy/core"; +import { ListPartsCommand } from "../commands/ListPartsCommand"; +import { S3Client } from "../S3Client"; +export const paginateListParts = createPaginator(S3Client, ListPartsCommand, "PartNumberMarker", "NextPartNumberMarker", "MaxParts"); diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/index.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/index.js new file mode 100644 index 0000000..9438ebe --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/pagination/index.js @@ -0,0 +1,5 @@ +export * from "./Interfaces"; +export * from "./ListBucketsPaginator"; +export * from "./ListDirectoryBucketsPaginator"; +export * from "./ListObjectsV2Paginator"; +export * from "./ListPartsPaginator"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.browser.js new file mode 100644 index 0000000..52b243c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.browser.js @@ -0,0 +1,41 @@ +import packageInfo from "../package.json"; +import { Sha1 } from "@aws-crypto/sha1-browser"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { eventStreamSerdeProvider } from "@smithy/eventstream-serde-browser"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { blobHasher as streamHasher } from "@smithy/hash-blob-browser"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { Md5 } from "@smithy/md5-js"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + eventStreamSerdeProvider: config?.eventStreamSerdeProvider ?? eventStreamSerdeProvider, + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + md5: config?.md5 ?? Md5, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha1: config?.sha1 ?? Sha1, + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + streamHasher: config?.streamHasher ?? streamHasher, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js new file mode 100644 index 0000000..65fcc61 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js @@ -0,0 +1,63 @@ +import packageInfo from "../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core/client"; +import { NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, NODE_SIGV4A_CONFIG_OPTIONS } from "@aws-sdk/core/httpAuthSchemes"; +import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node"; +import { NODE_USE_ARN_REGION_CONFIG_OPTIONS } from "@aws-sdk/middleware-bucket-endpoint"; +import { NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS, NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS, } from "@aws-sdk/middleware-flexible-checksums"; +import { NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS } from "@aws-sdk/middleware-sdk-s3"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { eventStreamSerdeProvider } from "@smithy/eventstream-serde-node"; +import { Hash } from "@smithy/hash-node"; +import { readableStreamHasher as streamHasher } from "@smithy/hash-stream-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? credentialDefaultProvider, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + disableS3ExpressSessionAuth: config?.disableS3ExpressSessionAuth ?? loadNodeConfig(NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS, loaderConfig), + eventStreamSerdeProvider: config?.eventStreamSerdeProvider ?? eventStreamSerdeProvider, + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + md5: config?.md5 ?? Hash.bind(null, "md5"), + region: config?.region ?? loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestChecksumCalculation: config?.requestChecksumCalculation ?? loadNodeConfig(NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS, loaderConfig), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + responseChecksumValidation: config?.responseChecksumValidation ?? loadNodeConfig(NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS, loaderConfig), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha1: config?.sha1 ?? Hash.bind(null, "sha1"), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + sigv4aSigningRegionSet: config?.sigv4aSigningRegionSet ?? loadNodeConfig(NODE_SIGV4A_CONFIG_OPTIONS, loaderConfig), + streamCollector: config?.streamCollector ?? streamCollector, + streamHasher: config?.streamHasher ?? streamHasher, + useArnRegion: config?.useArnRegion ?? loadNodeConfig(NODE_USE_ARN_REGION_CONFIG_OPTIONS, loaderConfig), + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.native.js new file mode 100644 index 0000000..0b54695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.shared.js new file mode 100644 index 0000000..a963582 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.shared.js @@ -0,0 +1,52 @@ +import { AwsSdkSigV4ASigner, AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { S3RestXmlProtocol } from "@aws-sdk/middleware-sdk-s3"; +import { SignatureV4MultiRegion } from "@aws-sdk/signature-v4-multi-region"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { getAwsChunkedEncodingStream, sdkStreamMixin } from "@smithy/util-stream"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultS3HttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2006-03-01", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + getAwsChunkedEncodingStream: config?.getAwsChunkedEncodingStream ?? getAwsChunkedEncodingStream, + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultS3HttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "aws.auth#sigv4a", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4a"), + signer: new AwsSdkSigV4ASigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? S3RestXmlProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.s3", + errorTypeRegistries, + xmlNamespace: "http://s3.amazonaws.com/doc/2006-03-01/", + version: "2006-03-01", + serviceTarget: "AmazonS3", + }, + sdkStreamMixin: config?.sdkStreamMixin ?? sdkStreamMixin, + serviceId: config?.serviceId ?? "S3", + signerConstructor: config?.signerConstructor ?? SignatureV4MultiRegion, + signingEscapePath: config?.signingEscapePath ?? false, + urlParser: config?.urlParser ?? parseUrl, + useArnRegion: config?.useArnRegion ?? undefined, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js new file mode 100644 index 0000000..5b29695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js new file mode 100644 index 0000000..beb19ea --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js @@ -0,0 +1,3246 @@ +const _A = "Account"; +const _AAO = "AnalyticsAndOperator"; +const _AC = "AccelerateConfiguration"; +const _ACL = "AccessControlList"; +const _ACL_ = "ACL"; +const _ACLn = "AnalyticsConfigurationList"; +const _ACP = "AccessControlPolicy"; +const _ACT = "AccessControlTranslation"; +const _ACn = "AnalyticsConfiguration"; +const _AD = "AccessDenied"; +const _ADb = "AbortDate"; +const _AED = "AnalyticsExportDestination"; +const _AF = "AnalyticsFilter"; +const _AH = "AllowedHeaders"; +const _AHl = "AllowedHeader"; +const _AI = "AccountId"; +const _AIMU = "AbortIncompleteMultipartUpload"; +const _AKI = "AccessKeyId"; +const _AM = "AllowedMethods"; +const _AMU = "AbortMultipartUpload"; +const _AMUO = "AbortMultipartUploadOutput"; +const _AMUR = "AbortMultipartUploadRequest"; +const _AMl = "AllowedMethod"; +const _AO = "AllowedOrigins"; +const _AOl = "AllowedOrigin"; +const _APA = "AccessPointAlias"; +const _APAc = "AccessPointArn"; +const _AQRD = "AllowQuotedRecordDelimiter"; +const _AR = "AcceptRanges"; +const _ARI = "AbortRuleId"; +const _AS = "AbacStatus"; +const _ASBD = "AnalyticsS3BucketDestination"; +const _ASSEBD = "ApplyServerSideEncryptionByDefault"; +const _ASr = "ArchiveStatus"; +const _AT = "AccessTier"; +const _An = "And"; +const _B = "Bucket"; +const _BA = "BucketArn"; +const _BAE = "BucketAlreadyExists"; +const _BAI = "BucketAccountId"; +const _BAOBY = "BucketAlreadyOwnedByYou"; +const _BET = "BlockedEncryptionTypes"; +const _BGR = "BypassGovernanceRetention"; +const _BI = "BucketInfo"; +const _BKE = "BucketKeyEnabled"; +const _BLC = "BucketLifecycleConfiguration"; +const _BLN = "BucketLocationName"; +const _BLS = "BucketLoggingStatus"; +const _BLT = "BucketLocationType"; +const _BN = "BucketNamespace"; +const _BNu = "BucketName"; +const _BP = "BytesProcessed"; +const _BPA = "BlockPublicAcls"; +const _BPP = "BlockPublicPolicy"; +const _BR = "BucketRegion"; +const _BRy = "BytesReturned"; +const _BS = "BytesScanned"; +const _Bo = "Body"; +const _Bu = "Buckets"; +const _C = "Checksum"; +const _CA = "ChecksumAlgorithm"; +const _CACL = "CannedACL"; +const _CB = "CreateBucket"; +const _CBC = "CreateBucketConfiguration"; +const _CBMC = "CreateBucketMetadataConfiguration"; +const _CBMCR = "CreateBucketMetadataConfigurationRequest"; +const _CBMTC = "CreateBucketMetadataTableConfiguration"; +const _CBMTCR = "CreateBucketMetadataTableConfigurationRequest"; +const _CBO = "CreateBucketOutput"; +const _CBR = "CreateBucketRequest"; +const _CC = "CacheControl"; +const _CCRC = "ChecksumCRC32"; +const _CCRCC = "ChecksumCRC32C"; +const _CCRCNVME = "ChecksumCRC64NVME"; +const _CC_ = "Cache-Control"; +const _CD = "CreationDate"; +const _CD_ = "Content-Disposition"; +const _CDo = "ContentDisposition"; +const _CE = "ContinuationEvent"; +const _CE_ = "Content-Encoding"; +const _CEo = "ContentEncoding"; +const _CF = "CloudFunction"; +const _CFC = "CloudFunctionConfiguration"; +const _CL = "ContentLanguage"; +const _CL_ = "Content-Language"; +const _CL__ = "Content-Length"; +const _CLo = "ContentLength"; +const _CM = "Content-MD5"; +const _CMD = "ContentMD5"; +const _CMU = "CompletedMultipartUpload"; +const _CMUO = "CompleteMultipartUploadOutput"; +const _CMUOr = "CreateMultipartUploadOutput"; +const _CMUR = "CompleteMultipartUploadResult"; +const _CMURo = "CompleteMultipartUploadRequest"; +const _CMURr = "CreateMultipartUploadRequest"; +const _CMUo = "CompleteMultipartUpload"; +const _CMUr = "CreateMultipartUpload"; +const _CMh = "ChecksumMode"; +const _CO = "CopyObject"; +const _COO = "CopyObjectOutput"; +const _COR = "CopyObjectResult"; +const _CORSC = "CORSConfiguration"; +const _CORSR = "CORSRules"; +const _CORSRu = "CORSRule"; +const _CORo = "CopyObjectRequest"; +const _CP = "CommonPrefix"; +const _CPL = "CommonPrefixList"; +const _CPLo = "CompletedPartList"; +const _CPR = "CopyPartResult"; +const _CPo = "CompletedPart"; +const _CPom = "CommonPrefixes"; +const _CR = "ContentRange"; +const _CRSBA = "ConfirmRemoveSelfBucketAccess"; +const _CR_ = "Content-Range"; +const _CS = "CopySource"; +const _CSHA = "ChecksumSHA1"; +const _CSHAh = "ChecksumSHA256"; +const _CSIM = "CopySourceIfMatch"; +const _CSIMS = "CopySourceIfModifiedSince"; +const _CSINM = "CopySourceIfNoneMatch"; +const _CSIUS = "CopySourceIfUnmodifiedSince"; +const _CSO = "CreateSessionOutput"; +const _CSR = "CreateSessionResult"; +const _CSRo = "CopySourceRange"; +const _CSRr = "CreateSessionRequest"; +const _CSSSECA = "CopySourceSSECustomerAlgorithm"; +const _CSSSECK = "CopySourceSSECustomerKey"; +const _CSSSECKMD = "CopySourceSSECustomerKeyMD5"; +const _CSV = "CSV"; +const _CSVI = "CopySourceVersionId"; +const _CSVIn = "CSVInput"; +const _CSVO = "CSVOutput"; +const _CSo = "ConfigurationState"; +const _CSr = "CreateSession"; +const _CT = "ChecksumType"; +const _CT_ = "Content-Type"; +const _CTl = "ClientToken"; +const _CTo = "ContentType"; +const _CTom = "CompressionType"; +const _CTon = "ContinuationToken"; +const _Co = "Condition"; +const _Cod = "Code"; +const _Com = "Comments"; +const _Con = "Contents"; +const _Cont = "Cont"; +const _Cr = "Credentials"; +const _D = "Days"; +const _DAI = "DaysAfterInitiation"; +const _DB = "DeleteBucket"; +const _DBAC = "DeleteBucketAnalyticsConfiguration"; +const _DBACR = "DeleteBucketAnalyticsConfigurationRequest"; +const _DBC = "DeleteBucketCors"; +const _DBCR = "DeleteBucketCorsRequest"; +const _DBE = "DeleteBucketEncryption"; +const _DBER = "DeleteBucketEncryptionRequest"; +const _DBIC = "DeleteBucketInventoryConfiguration"; +const _DBICR = "DeleteBucketInventoryConfigurationRequest"; +const _DBITC = "DeleteBucketIntelligentTieringConfiguration"; +const _DBITCR = "DeleteBucketIntelligentTieringConfigurationRequest"; +const _DBL = "DeleteBucketLifecycle"; +const _DBLR = "DeleteBucketLifecycleRequest"; +const _DBMC = "DeleteBucketMetadataConfiguration"; +const _DBMCR = "DeleteBucketMetadataConfigurationRequest"; +const _DBMCRe = "DeleteBucketMetricsConfigurationRequest"; +const _DBMCe = "DeleteBucketMetricsConfiguration"; +const _DBMTC = "DeleteBucketMetadataTableConfiguration"; +const _DBMTCR = "DeleteBucketMetadataTableConfigurationRequest"; +const _DBOC = "DeleteBucketOwnershipControls"; +const _DBOCR = "DeleteBucketOwnershipControlsRequest"; +const _DBP = "DeleteBucketPolicy"; +const _DBPR = "DeleteBucketPolicyRequest"; +const _DBR = "DeleteBucketRequest"; +const _DBRR = "DeleteBucketReplicationRequest"; +const _DBRe = "DeleteBucketReplication"; +const _DBT = "DeleteBucketTagging"; +const _DBTR = "DeleteBucketTaggingRequest"; +const _DBW = "DeleteBucketWebsite"; +const _DBWR = "DeleteBucketWebsiteRequest"; +const _DE = "DataExport"; +const _DIM = "DestinationIfMatch"; +const _DIMS = "DestinationIfModifiedSince"; +const _DINM = "DestinationIfNoneMatch"; +const _DIUS = "DestinationIfUnmodifiedSince"; +const _DM = "DeleteMarker"; +const _DME = "DeleteMarkerEntry"; +const _DMR = "DeleteMarkerReplication"; +const _DMVI = "DeleteMarkerVersionId"; +const _DMe = "DeleteMarkers"; +const _DN = "DisplayName"; +const _DO = "DeletedObject"; +const _DOO = "DeleteObjectOutput"; +const _DOOe = "DeleteObjectsOutput"; +const _DOR = "DeleteObjectRequest"; +const _DORe = "DeleteObjectsRequest"; +const _DOT = "DeleteObjectTagging"; +const _DOTO = "DeleteObjectTaggingOutput"; +const _DOTR = "DeleteObjectTaggingRequest"; +const _DOe = "DeletedObjects"; +const _DOel = "DeleteObject"; +const _DOele = "DeleteObjects"; +const _DPAB = "DeletePublicAccessBlock"; +const _DPABR = "DeletePublicAccessBlockRequest"; +const _DR = "DataRedundancy"; +const _DRe = "DefaultRetention"; +const _DRel = "DeleteResult"; +const _DRes = "DestinationResult"; +const _Da = "Date"; +const _De = "Delete"; +const _Del = "Deleted"; +const _Deli = "Delimiter"; +const _Des = "Destination"; +const _Desc = "Description"; +const _Det = "Details"; +const _E = "Expiration"; +const _EA = "EmailAddress"; +const _EBC = "EventBridgeConfiguration"; +const _EBO = "ExpectedBucketOwner"; +const _EC = "EncryptionConfiguration"; +const _ECr = "ErrorCode"; +const _ED = "ErrorDetails"; +const _EDr = "ErrorDocument"; +const _EE = "EndEvent"; +const _EH = "ExposeHeaders"; +const _EHx = "ExposeHeader"; +const _EM = "ErrorMessage"; +const _EODM = "ExpiredObjectDeleteMarker"; +const _EOR = "ExistingObjectReplication"; +const _ES = "ExpiresString"; +const _ESBO = "ExpectedSourceBucketOwner"; +const _ET = "EncryptionType"; +const _ETL = "EncryptionTypeList"; +const _ETM = "EncryptionTypeMismatch"; +const _ETa = "ETag"; +const _ETn = "EncodingType"; +const _ETv = "EventThreshold"; +const _ETx = "ExpressionType"; +const _En = "Encryption"; +const _Ena = "Enabled"; +const _End = "End"; +const _Er = "Errors"; +const _Err = "Error"; +const _Ev = "Events"; +const _Eve = "Event"; +const _Ex = "Expires"; +const _Exp = "Expression"; +const _F = "Filter"; +const _FD = "FieldDelimiter"; +const _FHI = "FileHeaderInfo"; +const _FO = "FetchOwner"; +const _FR = "FilterRule"; +const _FRL = "FilterRuleList"; +const _FRi = "FilterRules"; +const _Fi = "Field"; +const _Fo = "Format"; +const _Fr = "Frequency"; +const _G = "Grants"; +const _GBA = "GetBucketAbac"; +const _GBAC = "GetBucketAccelerateConfiguration"; +const _GBACO = "GetBucketAccelerateConfigurationOutput"; +const _GBACOe = "GetBucketAnalyticsConfigurationOutput"; +const _GBACR = "GetBucketAccelerateConfigurationRequest"; +const _GBACRe = "GetBucketAnalyticsConfigurationRequest"; +const _GBACe = "GetBucketAnalyticsConfiguration"; +const _GBAO = "GetBucketAbacOutput"; +const _GBAOe = "GetBucketAclOutput"; +const _GBAR = "GetBucketAbacRequest"; +const _GBARe = "GetBucketAclRequest"; +const _GBAe = "GetBucketAcl"; +const _GBC = "GetBucketCors"; +const _GBCO = "GetBucketCorsOutput"; +const _GBCR = "GetBucketCorsRequest"; +const _GBE = "GetBucketEncryption"; +const _GBEO = "GetBucketEncryptionOutput"; +const _GBER = "GetBucketEncryptionRequest"; +const _GBIC = "GetBucketInventoryConfiguration"; +const _GBICO = "GetBucketInventoryConfigurationOutput"; +const _GBICR = "GetBucketInventoryConfigurationRequest"; +const _GBITC = "GetBucketIntelligentTieringConfiguration"; +const _GBITCO = "GetBucketIntelligentTieringConfigurationOutput"; +const _GBITCR = "GetBucketIntelligentTieringConfigurationRequest"; +const _GBL = "GetBucketLocation"; +const _GBLC = "GetBucketLifecycleConfiguration"; +const _GBLCO = "GetBucketLifecycleConfigurationOutput"; +const _GBLCR = "GetBucketLifecycleConfigurationRequest"; +const _GBLO = "GetBucketLocationOutput"; +const _GBLOe = "GetBucketLoggingOutput"; +const _GBLR = "GetBucketLocationRequest"; +const _GBLRe = "GetBucketLoggingRequest"; +const _GBLe = "GetBucketLogging"; +const _GBMC = "GetBucketMetadataConfiguration"; +const _GBMCO = "GetBucketMetadataConfigurationOutput"; +const _GBMCOe = "GetBucketMetricsConfigurationOutput"; +const _GBMCR = "GetBucketMetadataConfigurationResult"; +const _GBMCRe = "GetBucketMetadataConfigurationRequest"; +const _GBMCRet = "GetBucketMetricsConfigurationRequest"; +const _GBMCe = "GetBucketMetricsConfiguration"; +const _GBMTC = "GetBucketMetadataTableConfiguration"; +const _GBMTCO = "GetBucketMetadataTableConfigurationOutput"; +const _GBMTCR = "GetBucketMetadataTableConfigurationResult"; +const _GBMTCRe = "GetBucketMetadataTableConfigurationRequest"; +const _GBNC = "GetBucketNotificationConfiguration"; +const _GBNCR = "GetBucketNotificationConfigurationRequest"; +const _GBOC = "GetBucketOwnershipControls"; +const _GBOCO = "GetBucketOwnershipControlsOutput"; +const _GBOCR = "GetBucketOwnershipControlsRequest"; +const _GBP = "GetBucketPolicy"; +const _GBPO = "GetBucketPolicyOutput"; +const _GBPR = "GetBucketPolicyRequest"; +const _GBPS = "GetBucketPolicyStatus"; +const _GBPSO = "GetBucketPolicyStatusOutput"; +const _GBPSR = "GetBucketPolicyStatusRequest"; +const _GBR = "GetBucketReplication"; +const _GBRO = "GetBucketReplicationOutput"; +const _GBRP = "GetBucketRequestPayment"; +const _GBRPO = "GetBucketRequestPaymentOutput"; +const _GBRPR = "GetBucketRequestPaymentRequest"; +const _GBRR = "GetBucketReplicationRequest"; +const _GBT = "GetBucketTagging"; +const _GBTO = "GetBucketTaggingOutput"; +const _GBTR = "GetBucketTaggingRequest"; +const _GBV = "GetBucketVersioning"; +const _GBVO = "GetBucketVersioningOutput"; +const _GBVR = "GetBucketVersioningRequest"; +const _GBW = "GetBucketWebsite"; +const _GBWO = "GetBucketWebsiteOutput"; +const _GBWR = "GetBucketWebsiteRequest"; +const _GFC = "GrantFullControl"; +const _GJP = "GlacierJobParameters"; +const _GO = "GetObject"; +const _GOA = "GetObjectAcl"; +const _GOAO = "GetObjectAclOutput"; +const _GOAOe = "GetObjectAttributesOutput"; +const _GOAP = "GetObjectAttributesParts"; +const _GOAR = "GetObjectAclRequest"; +const _GOARe = "GetObjectAttributesResponse"; +const _GOARet = "GetObjectAttributesRequest"; +const _GOAe = "GetObjectAttributes"; +const _GOLC = "GetObjectLockConfiguration"; +const _GOLCO = "GetObjectLockConfigurationOutput"; +const _GOLCR = "GetObjectLockConfigurationRequest"; +const _GOLH = "GetObjectLegalHold"; +const _GOLHO = "GetObjectLegalHoldOutput"; +const _GOLHR = "GetObjectLegalHoldRequest"; +const _GOO = "GetObjectOutput"; +const _GOR = "GetObjectRequest"; +const _GORO = "GetObjectRetentionOutput"; +const _GORR = "GetObjectRetentionRequest"; +const _GORe = "GetObjectRetention"; +const _GOT = "GetObjectTagging"; +const _GOTO = "GetObjectTaggingOutput"; +const _GOTOe = "GetObjectTorrentOutput"; +const _GOTR = "GetObjectTaggingRequest"; +const _GOTRe = "GetObjectTorrentRequest"; +const _GOTe = "GetObjectTorrent"; +const _GPAB = "GetPublicAccessBlock"; +const _GPABO = "GetPublicAccessBlockOutput"; +const _GPABR = "GetPublicAccessBlockRequest"; +const _GR = "GrantRead"; +const _GRACP = "GrantReadACP"; +const _GW = "GrantWrite"; +const _GWACP = "GrantWriteACP"; +const _Gr = "Grant"; +const _Gra = "Grantee"; +const _HB = "HeadBucket"; +const _HBO = "HeadBucketOutput"; +const _HBR = "HeadBucketRequest"; +const _HECRE = "HttpErrorCodeReturnedEquals"; +const _HN = "HostName"; +const _HO = "HeadObject"; +const _HOO = "HeadObjectOutput"; +const _HOR = "HeadObjectRequest"; +const _HRC = "HttpRedirectCode"; +const _I = "Id"; +const _IC = "InventoryConfiguration"; +const _ICL = "InventoryConfigurationList"; +const _ID = "ID"; +const _IDn = "IndexDocument"; +const _IDnv = "InventoryDestination"; +const _IE = "IsEnabled"; +const _IEn = "InventoryEncryption"; +const _IF = "InventoryFilter"; +const _IL = "IsLatest"; +const _IM = "IfMatch"; +const _IMIT = "IfMatchInitiatedTime"; +const _IMLMT = "IfMatchLastModifiedTime"; +const _IMS = "IfMatchSize"; +const _IMS_ = "If-Modified-Since"; +const _IMSf = "IfModifiedSince"; +const _IMUR = "InitiateMultipartUploadResult"; +const _IM_ = "If-Match"; +const _INM = "IfNoneMatch"; +const _INM_ = "If-None-Match"; +const _IOF = "InventoryOptionalFields"; +const _IOS = "InvalidObjectState"; +const _IOV = "IncludedObjectVersions"; +const _IP = "IsPublic"; +const _IPA = "IgnorePublicAcls"; +const _IPM = "IdempotencyParameterMismatch"; +const _IR = "InvalidRequest"; +const _IRIP = "IsRestoreInProgress"; +const _IS = "InputSerialization"; +const _ISBD = "InventoryS3BucketDestination"; +const _ISn = "InventorySchedule"; +const _IT = "IsTruncated"; +const _ITAO = "IntelligentTieringAndOperator"; +const _ITC = "IntelligentTieringConfiguration"; +const _ITCL = "IntelligentTieringConfigurationList"; +const _ITCR = "InventoryTableConfigurationResult"; +const _ITCU = "InventoryTableConfigurationUpdates"; +const _ITCn = "InventoryTableConfiguration"; +const _ITF = "IntelligentTieringFilter"; +const _IUS = "IfUnmodifiedSince"; +const _IUS_ = "If-Unmodified-Since"; +const _IWO = "InvalidWriteOffset"; +const _In = "Initiator"; +const _Ini = "Initiated"; +const _JSON = "JSON"; +const _JSONI = "JSONInput"; +const _JSONO = "JSONOutput"; +const _JTC = "JournalTableConfiguration"; +const _JTCR = "JournalTableConfigurationResult"; +const _JTCU = "JournalTableConfigurationUpdates"; +const _K = "Key"; +const _KC = "KeyCount"; +const _KI = "KeyId"; +const _KKA = "KmsKeyArn"; +const _KM = "KeyMarker"; +const _KMSC = "KMSContext"; +const _KMSKA = "KMSKeyArn"; +const _KMSKI = "KMSKeyId"; +const _KMSMKID = "KMSMasterKeyID"; +const _KPE = "KeyPrefixEquals"; +const _L = "Location"; +const _LAMBR = "ListAllMyBucketsResult"; +const _LAMDBR = "ListAllMyDirectoryBucketsResult"; +const _LB = "ListBuckets"; +const _LBAC = "ListBucketAnalyticsConfigurations"; +const _LBACO = "ListBucketAnalyticsConfigurationsOutput"; +const _LBACR = "ListBucketAnalyticsConfigurationResult"; +const _LBACRi = "ListBucketAnalyticsConfigurationsRequest"; +const _LBIC = "ListBucketInventoryConfigurations"; +const _LBICO = "ListBucketInventoryConfigurationsOutput"; +const _LBICR = "ListBucketInventoryConfigurationsRequest"; +const _LBITC = "ListBucketIntelligentTieringConfigurations"; +const _LBITCO = "ListBucketIntelligentTieringConfigurationsOutput"; +const _LBITCR = "ListBucketIntelligentTieringConfigurationsRequest"; +const _LBMC = "ListBucketMetricsConfigurations"; +const _LBMCO = "ListBucketMetricsConfigurationsOutput"; +const _LBMCR = "ListBucketMetricsConfigurationsRequest"; +const _LBO = "ListBucketsOutput"; +const _LBR = "ListBucketsRequest"; +const _LBRi = "ListBucketResult"; +const _LC = "LocationConstraint"; +const _LCi = "LifecycleConfiguration"; +const _LDB = "ListDirectoryBuckets"; +const _LDBO = "ListDirectoryBucketsOutput"; +const _LDBR = "ListDirectoryBucketsRequest"; +const _LE = "LoggingEnabled"; +const _LEi = "LifecycleExpiration"; +const _LFA = "LambdaFunctionArn"; +const _LFC = "LambdaFunctionConfiguration"; +const _LFCL = "LambdaFunctionConfigurationList"; +const _LFCa = "LambdaFunctionConfigurations"; +const _LH = "LegalHold"; +const _LI = "LocationInfo"; +const _LICR = "ListInventoryConfigurationsResult"; +const _LM = "LastModified"; +const _LMCR = "ListMetricsConfigurationsResult"; +const _LMT = "LastModifiedTime"; +const _LMU = "ListMultipartUploads"; +const _LMUO = "ListMultipartUploadsOutput"; +const _LMUR = "ListMultipartUploadsResult"; +const _LMURi = "ListMultipartUploadsRequest"; +const _LM_ = "Last-Modified"; +const _LO = "ListObjects"; +const _LOO = "ListObjectsOutput"; +const _LOR = "ListObjectsRequest"; +const _LOV = "ListObjectsV2"; +const _LOVO = "ListObjectsV2Output"; +const _LOVOi = "ListObjectVersionsOutput"; +const _LOVR = "ListObjectsV2Request"; +const _LOVRi = "ListObjectVersionsRequest"; +const _LOVi = "ListObjectVersions"; +const _LP = "ListParts"; +const _LPO = "ListPartsOutput"; +const _LPR = "ListPartsResult"; +const _LPRi = "ListPartsRequest"; +const _LR = "LifecycleRule"; +const _LRAO = "LifecycleRuleAndOperator"; +const _LRF = "LifecycleRuleFilter"; +const _LRi = "LifecycleRules"; +const _LVR = "ListVersionsResult"; +const _M = "Metadata"; +const _MAO = "MetricsAndOperator"; +const _MAS = "MaxAgeSeconds"; +const _MB = "MaxBuckets"; +const _MC = "MetadataConfiguration"; +const _MCL = "MetricsConfigurationList"; +const _MCR = "MetadataConfigurationResult"; +const _MCe = "MetricsConfiguration"; +const _MD = "MetadataDirective"; +const _MDB = "MaxDirectoryBuckets"; +const _MDf = "MfaDelete"; +const _ME = "MetadataEntry"; +const _MF = "MetricsFilter"; +const _MFA = "MFA"; +const _MFAD = "MFADelete"; +const _MK = "MaxKeys"; +const _MM = "MissingMeta"; +const _MOS = "MpuObjectSize"; +const _MP = "MaxParts"; +const _MTC = "MetadataTableConfiguration"; +const _MTCR = "MetadataTableConfigurationResult"; +const _MTEC = "MetadataTableEncryptionConfiguration"; +const _MU = "MultipartUpload"; +const _MUL = "MultipartUploadList"; +const _MUa = "MaxUploads"; +const _Ma = "Marker"; +const _Me = "Metrics"; +const _Mes = "Message"; +const _Mi = "Minutes"; +const _Mo = "Mode"; +const _N = "Name"; +const _NC = "NotificationConfiguration"; +const _NCF = "NotificationConfigurationFilter"; +const _NCT = "NextContinuationToken"; +const _ND = "NoncurrentDays"; +const _NEKKAS = "NonEmptyKmsKeyArnString"; +const _NF = "NotFound"; +const _NKM = "NextKeyMarker"; +const _NM = "NextMarker"; +const _NNV = "NewerNoncurrentVersions"; +const _NPNM = "NextPartNumberMarker"; +const _NSB = "NoSuchBucket"; +const _NSK = "NoSuchKey"; +const _NSU = "NoSuchUpload"; +const _NUIM = "NextUploadIdMarker"; +const _NVE = "NoncurrentVersionExpiration"; +const _NVIM = "NextVersionIdMarker"; +const _NVT = "NoncurrentVersionTransitions"; +const _NVTL = "NoncurrentVersionTransitionList"; +const _NVTo = "NoncurrentVersionTransition"; +const _O = "Owner"; +const _OA = "ObjectAttributes"; +const _OAIATE = "ObjectAlreadyInActiveTierError"; +const _OC = "OwnershipControls"; +const _OCR = "OwnershipControlsRule"; +const _OCRw = "OwnershipControlsRules"; +const _OE = "ObjectEncryption"; +const _OF = "OptionalFields"; +const _OI = "ObjectIdentifier"; +const _OIL = "ObjectIdentifierList"; +const _OL = "OutputLocation"; +const _OLC = "ObjectLockConfiguration"; +const _OLE = "ObjectLockEnabled"; +const _OLEFB = "ObjectLockEnabledForBucket"; +const _OLLH = "ObjectLockLegalHold"; +const _OLLHS = "ObjectLockLegalHoldStatus"; +const _OLM = "ObjectLockMode"; +const _OLR = "ObjectLockRetention"; +const _OLRUD = "ObjectLockRetainUntilDate"; +const _OLRb = "ObjectLockRule"; +const _OLb = "ObjectList"; +const _ONIATE = "ObjectNotInActiveTierError"; +const _OO = "ObjectOwnership"; +const _OOA = "OptionalObjectAttributes"; +const _OP = "ObjectParts"; +const _OPb = "ObjectPart"; +const _OS = "ObjectSize"; +const _OSGT = "ObjectSizeGreaterThan"; +const _OSLT = "ObjectSizeLessThan"; +const _OSV = "OutputSchemaVersion"; +const _OSu = "OutputSerialization"; +const _OV = "ObjectVersion"; +const _OVL = "ObjectVersionList"; +const _Ob = "Objects"; +const _Obj = "Object"; +const _P = "Prefix"; +const _PABC = "PublicAccessBlockConfiguration"; +const _PBA = "PutBucketAbac"; +const _PBAC = "PutBucketAccelerateConfiguration"; +const _PBACR = "PutBucketAccelerateConfigurationRequest"; +const _PBACRu = "PutBucketAnalyticsConfigurationRequest"; +const _PBACu = "PutBucketAnalyticsConfiguration"; +const _PBAR = "PutBucketAbacRequest"; +const _PBARu = "PutBucketAclRequest"; +const _PBAu = "PutBucketAcl"; +const _PBC = "PutBucketCors"; +const _PBCR = "PutBucketCorsRequest"; +const _PBE = "PutBucketEncryption"; +const _PBER = "PutBucketEncryptionRequest"; +const _PBIC = "PutBucketInventoryConfiguration"; +const _PBICR = "PutBucketInventoryConfigurationRequest"; +const _PBITC = "PutBucketIntelligentTieringConfiguration"; +const _PBITCR = "PutBucketIntelligentTieringConfigurationRequest"; +const _PBL = "PutBucketLogging"; +const _PBLC = "PutBucketLifecycleConfiguration"; +const _PBLCO = "PutBucketLifecycleConfigurationOutput"; +const _PBLCR = "PutBucketLifecycleConfigurationRequest"; +const _PBLR = "PutBucketLoggingRequest"; +const _PBMC = "PutBucketMetricsConfiguration"; +const _PBMCR = "PutBucketMetricsConfigurationRequest"; +const _PBNC = "PutBucketNotificationConfiguration"; +const _PBNCR = "PutBucketNotificationConfigurationRequest"; +const _PBOC = "PutBucketOwnershipControls"; +const _PBOCR = "PutBucketOwnershipControlsRequest"; +const _PBP = "PutBucketPolicy"; +const _PBPR = "PutBucketPolicyRequest"; +const _PBR = "PutBucketReplication"; +const _PBRP = "PutBucketRequestPayment"; +const _PBRPR = "PutBucketRequestPaymentRequest"; +const _PBRR = "PutBucketReplicationRequest"; +const _PBT = "PutBucketTagging"; +const _PBTR = "PutBucketTaggingRequest"; +const _PBV = "PutBucketVersioning"; +const _PBVR = "PutBucketVersioningRequest"; +const _PBW = "PutBucketWebsite"; +const _PBWR = "PutBucketWebsiteRequest"; +const _PC = "PartsCount"; +const _PDS = "PartitionDateSource"; +const _PE = "ProgressEvent"; +const _PI = "ParquetInput"; +const _PL = "PartsList"; +const _PN = "PartNumber"; +const _PNM = "PartNumberMarker"; +const _PO = "PutObject"; +const _POA = "PutObjectAcl"; +const _POAO = "PutObjectAclOutput"; +const _POAR = "PutObjectAclRequest"; +const _POLC = "PutObjectLockConfiguration"; +const _POLCO = "PutObjectLockConfigurationOutput"; +const _POLCR = "PutObjectLockConfigurationRequest"; +const _POLH = "PutObjectLegalHold"; +const _POLHO = "PutObjectLegalHoldOutput"; +const _POLHR = "PutObjectLegalHoldRequest"; +const _POO = "PutObjectOutput"; +const _POR = "PutObjectRequest"; +const _PORO = "PutObjectRetentionOutput"; +const _PORR = "PutObjectRetentionRequest"; +const _PORu = "PutObjectRetention"; +const _POT = "PutObjectTagging"; +const _POTO = "PutObjectTaggingOutput"; +const _POTR = "PutObjectTaggingRequest"; +const _PP = "PartitionedPrefix"; +const _PPAB = "PutPublicAccessBlock"; +const _PPABR = "PutPublicAccessBlockRequest"; +const _PS = "PolicyStatus"; +const _Pa = "Parts"; +const _Par = "Part"; +const _Parq = "Parquet"; +const _Pay = "Payer"; +const _Payl = "Payload"; +const _Pe = "Permission"; +const _Po = "Policy"; +const _Pr = "Progress"; +const _Pri = "Priority"; +const _Pro = "Protocol"; +const _Q = "Quiet"; +const _QA = "QueueArn"; +const _QC = "QuoteCharacter"; +const _QCL = "QueueConfigurationList"; +const _QCu = "QueueConfigurations"; +const _QCue = "QueueConfiguration"; +const _QEC = "QuoteEscapeCharacter"; +const _QF = "QuoteFields"; +const _Qu = "Queue"; +const _R = "Rules"; +const _RART = "RedirectAllRequestsTo"; +const _RC = "RequestCharged"; +const _RCC = "ResponseCacheControl"; +const _RCD = "ResponseContentDisposition"; +const _RCE = "ResponseContentEncoding"; +const _RCL = "ResponseContentLanguage"; +const _RCT = "ResponseContentType"; +const _RCe = "ReplicationConfiguration"; +const _RD = "RecordDelimiter"; +const _RE = "ResponseExpires"; +const _RED = "RestoreExpiryDate"; +const _REe = "RecordExpiration"; +const _REec = "RecordsEvent"; +const _RKKID = "ReplicaKmsKeyID"; +const _RKPW = "ReplaceKeyPrefixWith"; +const _RKW = "ReplaceKeyWith"; +const _RM = "ReplicaModifications"; +const _RO = "RenameObject"; +const _ROO = "RenameObjectOutput"; +const _ROOe = "RestoreObjectOutput"; +const _ROP = "RestoreOutputPath"; +const _ROR = "RenameObjectRequest"; +const _RORe = "RestoreObjectRequest"; +const _ROe = "RestoreObject"; +const _RP = "RequestPayer"; +const _RPB = "RestrictPublicBuckets"; +const _RPC = "RequestPaymentConfiguration"; +const _RPe = "RequestProgress"; +const _RR = "RoutingRules"; +const _RRAO = "ReplicationRuleAndOperator"; +const _RRF = "ReplicationRuleFilter"; +const _RRe = "ReplicationRule"; +const _RRep = "ReplicationRules"; +const _RReq = "RequestRoute"; +const _RRes = "RestoreRequest"; +const _RRo = "RoutingRule"; +const _RS = "ReplicationStatus"; +const _RSe = "RestoreStatus"; +const _RSen = "RenameSource"; +const _RT = "ReplicationTime"; +const _RTV = "ReplicationTimeValue"; +const _RTe = "RequestToken"; +const _RUD = "RetainUntilDate"; +const _Ra = "Range"; +const _Re = "Restore"; +const _Rec = "Records"; +const _Red = "Redirect"; +const _Ret = "Retention"; +const _Ro = "Role"; +const _Ru = "Rule"; +const _S = "Status"; +const _SA = "StartAfter"; +const _SAK = "SecretAccessKey"; +const _SAs = "SseAlgorithm"; +const _SB = "StreamingBlob"; +const _SBD = "S3BucketDestination"; +const _SC = "StorageClass"; +const _SCA = "StorageClassAnalysis"; +const _SCADE = "StorageClassAnalysisDataExport"; +const _SCV = "SessionCredentialValue"; +const _SCe = "SessionCredentials"; +const _SCt = "StatusCode"; +const _SDV = "SkipDestinationValidation"; +const _SE = "StatsEvent"; +const _SIM = "SourceIfMatch"; +const _SIMS = "SourceIfModifiedSince"; +const _SINM = "SourceIfNoneMatch"; +const _SIUS = "SourceIfUnmodifiedSince"; +const _SK = "SSE-KMS"; +const _SKEO = "SseKmsEncryptedObjects"; +const _SKF = "S3KeyFilter"; +const _SKe = "S3Key"; +const _SL = "S3Location"; +const _SM = "SessionMode"; +const _SOC = "SelectObjectContent"; +const _SOCES = "SelectObjectContentEventStream"; +const _SOCO = "SelectObjectContentOutput"; +const _SOCR = "SelectObjectContentRequest"; +const _SP = "SelectParameters"; +const _SPi = "SimplePrefix"; +const _SR = "ScanRange"; +const _SS = "SSE-S3"; +const _SSC = "SourceSelectionCriteria"; +const _SSE = "ServerSideEncryption"; +const _SSEA = "SSEAlgorithm"; +const _SSEBD = "ServerSideEncryptionByDefault"; +const _SSEC = "ServerSideEncryptionConfiguration"; +const _SSECA = "SSECustomerAlgorithm"; +const _SSECK = "SSECustomerKey"; +const _SSECKMD = "SSECustomerKeyMD5"; +const _SSEKMS = "SSEKMS"; +const _SSEKMSE = "SSEKMSEncryption"; +const _SSEKMSEC = "SSEKMSEncryptionContext"; +const _SSEKMSKI = "SSEKMSKeyId"; +const _SSER = "ServerSideEncryptionRule"; +const _SSERe = "ServerSideEncryptionRules"; +const _SSES = "SSES3"; +const _ST = "SessionToken"; +const _STD = "S3TablesDestination"; +const _STDR = "S3TablesDestinationResult"; +const _S_ = "S3"; +const _Sc = "Schedule"; +const _Si = "Size"; +const _St = "Start"; +const _Sta = "Stats"; +const _Su = "Suffix"; +const _T = "Tags"; +const _TA = "TableArn"; +const _TAo = "TopicArn"; +const _TB = "TargetBucket"; +const _TBA = "TableBucketArn"; +const _TBT = "TableBucketType"; +const _TC = "TagCount"; +const _TCL = "TopicConfigurationList"; +const _TCo = "TopicConfigurations"; +const _TCop = "TopicConfiguration"; +const _TD = "TaggingDirective"; +const _TDMOS = "TransitionDefaultMinimumObjectSize"; +const _TG = "TargetGrants"; +const _TGa = "TargetGrant"; +const _TL = "TieringList"; +const _TLr = "TransitionList"; +const _TMP = "TooManyParts"; +const _TN = "TableNamespace"; +const _TNa = "TableName"; +const _TOKF = "TargetObjectKeyFormat"; +const _TP = "TargetPrefix"; +const _TPC = "TotalPartsCount"; +const _TS = "TagSet"; +const _TSa = "TableStatus"; +const _Ta = "Tag"; +const _Tag = "Tagging"; +const _Ti = "Tier"; +const _Tie = "Tierings"; +const _Tier = "Tiering"; +const _Tim = "Time"; +const _To = "Token"; +const _Top = "Topic"; +const _Tr = "Transitions"; +const _Tra = "Transition"; +const _Ty = "Type"; +const _U = "Uploads"; +const _UBMITC = "UpdateBucketMetadataInventoryTableConfiguration"; +const _UBMITCR = "UpdateBucketMetadataInventoryTableConfigurationRequest"; +const _UBMJTC = "UpdateBucketMetadataJournalTableConfiguration"; +const _UBMJTCR = "UpdateBucketMetadataJournalTableConfigurationRequest"; +const _UI = "UploadId"; +const _UIM = "UploadIdMarker"; +const _UM = "UserMetadata"; +const _UOE = "UpdateObjectEncryption"; +const _UOER = "UpdateObjectEncryptionRequest"; +const _UOERp = "UpdateObjectEncryptionResponse"; +const _UP = "UploadPart"; +const _UPC = "UploadPartCopy"; +const _UPCO = "UploadPartCopyOutput"; +const _UPCR = "UploadPartCopyRequest"; +const _UPO = "UploadPartOutput"; +const _UPR = "UploadPartRequest"; +const _URI = "URI"; +const _Up = "Upload"; +const _V = "Value"; +const _VC = "VersioningConfiguration"; +const _VI = "VersionId"; +const _VIM = "VersionIdMarker"; +const _Ve = "Versions"; +const _Ver = "Version"; +const _WC = "WebsiteConfiguration"; +const _WGOR = "WriteGetObjectResponse"; +const _WGORR = "WriteGetObjectResponseRequest"; +const _WOB = "WriteOffsetBytes"; +const _WRL = "WebsiteRedirectLocation"; +const _Y = "Years"; +const _ar = "accept-ranges"; +const _br = "bucket-region"; +const _c = "client"; +const _ct = "continuation-token"; +const _d = "delimiter"; +const _e = "error"; +const _eP = "eventPayload"; +const _en = "endpoint"; +const _et = "encoding-type"; +const _fo = "fetch-owner"; +const _h = "http"; +const _hC = "httpChecksum"; +const _hE = "httpError"; +const _hH = "httpHeader"; +const _hL = "hostLabel"; +const _hP = "httpPayload"; +const _hPH = "httpPrefixHeaders"; +const _hQ = "httpQuery"; +const _hi = "http://www.w3.org/2001/XMLSchema-instance"; +const _i = "id"; +const _iT = "idempotencyToken"; +const _km = "key-marker"; +const _m = "marker"; +const _mb = "max-buckets"; +const _mdb = "max-directory-buckets"; +const _mk = "max-keys"; +const _mp = "max-parts"; +const _mu = "max-uploads"; +const _p = "prefix"; +const _pN = "partNumber"; +const _pnm = "part-number-marker"; +const _rcc = "response-cache-control"; +const _rcd = "response-content-disposition"; +const _rce = "response-content-encoding"; +const _rcl = "response-content-language"; +const _rct = "response-content-type"; +const _re = "response-expires"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.s3"; +const _sa = "start-after"; +const _st = "streaming"; +const _uI = "uploadId"; +const _uim = "upload-id-marker"; +const _vI = "versionId"; +const _vim = "version-id-marker"; +const _x = "xsi"; +const _xA = "xmlAttribute"; +const _xF = "xmlFlattened"; +const _xN = "xmlName"; +const _xNm = "xmlNamespace"; +const _xaa = "x-amz-acl"; +const _xaad = "x-amz-abort-date"; +const _xaapa = "x-amz-access-point-alias"; +const _xaari = "x-amz-abort-rule-id"; +const _xaas = "x-amz-archive-status"; +const _xaba = "x-amz-bucket-arn"; +const _xabgr = "x-amz-bypass-governance-retention"; +const _xabln = "x-amz-bucket-location-name"; +const _xablt = "x-amz-bucket-location-type"; +const _xabn = "x-amz-bucket-namespace"; +const _xabole = "x-amz-bucket-object-lock-enabled"; +const _xabolt = "x-amz-bucket-object-lock-token"; +const _xabr = "x-amz-bucket-region"; +const _xaca = "x-amz-checksum-algorithm"; +const _xacc = "x-amz-checksum-crc32"; +const _xacc_ = "x-amz-checksum-crc32c"; +const _xacc__ = "x-amz-checksum-crc64nvme"; +const _xacm = "x-amz-checksum-mode"; +const _xacrsba = "x-amz-confirm-remove-self-bucket-access"; +const _xacs = "x-amz-checksum-sha1"; +const _xacs_ = "x-amz-checksum-sha256"; +const _xacs__ = "x-amz-copy-source"; +const _xacsim = "x-amz-copy-source-if-match"; +const _xacsims = "x-amz-copy-source-if-modified-since"; +const _xacsinm = "x-amz-copy-source-if-none-match"; +const _xacsius = "x-amz-copy-source-if-unmodified-since"; +const _xacsm = "x-amz-create-session-mode"; +const _xacsr = "x-amz-copy-source-range"; +const _xacssseca = "x-amz-copy-source-server-side-encryption-customer-algorithm"; +const _xacssseck = "x-amz-copy-source-server-side-encryption-customer-key"; +const _xacssseckM = "x-amz-copy-source-server-side-encryption-customer-key-MD5"; +const _xacsvi = "x-amz-copy-source-version-id"; +const _xact = "x-amz-checksum-type"; +const _xact_ = "x-amz-client-token"; +const _xadm = "x-amz-delete-marker"; +const _xae = "x-amz-expiration"; +const _xaebo = "x-amz-expected-bucket-owner"; +const _xafec = "x-amz-fwd-error-code"; +const _xafem = "x-amz-fwd-error-message"; +const _xafhCC = "x-amz-fwd-header-Cache-Control"; +const _xafhCD = "x-amz-fwd-header-Content-Disposition"; +const _xafhCE = "x-amz-fwd-header-Content-Encoding"; +const _xafhCL = "x-amz-fwd-header-Content-Language"; +const _xafhCR = "x-amz-fwd-header-Content-Range"; +const _xafhCT = "x-amz-fwd-header-Content-Type"; +const _xafhE = "x-amz-fwd-header-ETag"; +const _xafhE_ = "x-amz-fwd-header-Expires"; +const _xafhLM = "x-amz-fwd-header-Last-Modified"; +const _xafhar = "x-amz-fwd-header-accept-ranges"; +const _xafhxacc = "x-amz-fwd-header-x-amz-checksum-crc32"; +const _xafhxacc_ = "x-amz-fwd-header-x-amz-checksum-crc32c"; +const _xafhxacc__ = "x-amz-fwd-header-x-amz-checksum-crc64nvme"; +const _xafhxacs = "x-amz-fwd-header-x-amz-checksum-sha1"; +const _xafhxacs_ = "x-amz-fwd-header-x-amz-checksum-sha256"; +const _xafhxadm = "x-amz-fwd-header-x-amz-delete-marker"; +const _xafhxae = "x-amz-fwd-header-x-amz-expiration"; +const _xafhxamm = "x-amz-fwd-header-x-amz-missing-meta"; +const _xafhxampc = "x-amz-fwd-header-x-amz-mp-parts-count"; +const _xafhxaollh = "x-amz-fwd-header-x-amz-object-lock-legal-hold"; +const _xafhxaolm = "x-amz-fwd-header-x-amz-object-lock-mode"; +const _xafhxaolrud = "x-amz-fwd-header-x-amz-object-lock-retain-until-date"; +const _xafhxar = "x-amz-fwd-header-x-amz-restore"; +const _xafhxarc = "x-amz-fwd-header-x-amz-request-charged"; +const _xafhxars = "x-amz-fwd-header-x-amz-replication-status"; +const _xafhxasc = "x-amz-fwd-header-x-amz-storage-class"; +const _xafhxasse = "x-amz-fwd-header-x-amz-server-side-encryption"; +const _xafhxasseakki = "x-amz-fwd-header-x-amz-server-side-encryption-aws-kms-key-id"; +const _xafhxassebke = "x-amz-fwd-header-x-amz-server-side-encryption-bucket-key-enabled"; +const _xafhxasseca = "x-amz-fwd-header-x-amz-server-side-encryption-customer-algorithm"; +const _xafhxasseckM = "x-amz-fwd-header-x-amz-server-side-encryption-customer-key-MD5"; +const _xafhxatc = "x-amz-fwd-header-x-amz-tagging-count"; +const _xafhxavi = "x-amz-fwd-header-x-amz-version-id"; +const _xafs = "x-amz-fwd-status"; +const _xagfc = "x-amz-grant-full-control"; +const _xagr = "x-amz-grant-read"; +const _xagra = "x-amz-grant-read-acp"; +const _xagw = "x-amz-grant-write"; +const _xagwa = "x-amz-grant-write-acp"; +const _xaimit = "x-amz-if-match-initiated-time"; +const _xaimlmt = "x-amz-if-match-last-modified-time"; +const _xaims = "x-amz-if-match-size"; +const _xam = "x-amz-meta-"; +const _xam_ = "x-amz-mfa"; +const _xamd = "x-amz-metadata-directive"; +const _xamm = "x-amz-missing-meta"; +const _xamos = "x-amz-mp-object-size"; +const _xamp = "x-amz-max-parts"; +const _xampc = "x-amz-mp-parts-count"; +const _xaoa = "x-amz-object-attributes"; +const _xaollh = "x-amz-object-lock-legal-hold"; +const _xaolm = "x-amz-object-lock-mode"; +const _xaolrud = "x-amz-object-lock-retain-until-date"; +const _xaoo = "x-amz-object-ownership"; +const _xaooa = "x-amz-optional-object-attributes"; +const _xaos = "x-amz-object-size"; +const _xapnm = "x-amz-part-number-marker"; +const _xar = "x-amz-restore"; +const _xarc = "x-amz-request-charged"; +const _xarop = "x-amz-restore-output-path"; +const _xarp = "x-amz-request-payer"; +const _xarr = "x-amz-request-route"; +const _xars = "x-amz-replication-status"; +const _xars_ = "x-amz-rename-source"; +const _xarsim = "x-amz-rename-source-if-match"; +const _xarsims = "x-amz-rename-source-if-modified-since"; +const _xarsinm = "x-amz-rename-source-if-none-match"; +const _xarsius = "x-amz-rename-source-if-unmodified-since"; +const _xart = "x-amz-request-token"; +const _xasc = "x-amz-storage-class"; +const _xasca = "x-amz-sdk-checksum-algorithm"; +const _xasdv = "x-amz-skip-destination-validation"; +const _xasebo = "x-amz-source-expected-bucket-owner"; +const _xasse = "x-amz-server-side-encryption"; +const _xasseakki = "x-amz-server-side-encryption-aws-kms-key-id"; +const _xassebke = "x-amz-server-side-encryption-bucket-key-enabled"; +const _xassec = "x-amz-server-side-encryption-context"; +const _xasseca = "x-amz-server-side-encryption-customer-algorithm"; +const _xasseck = "x-amz-server-side-encryption-customer-key"; +const _xasseckM = "x-amz-server-side-encryption-customer-key-MD5"; +const _xat = "x-amz-tagging"; +const _xatc = "x-amz-tagging-count"; +const _xatd = "x-amz-tagging-directive"; +const _xatdmos = "x-amz-transition-default-minimum-object-size"; +const _xavi = "x-amz-version-id"; +const _xawob = "x-amz-write-offset-bytes"; +const _xawrl = "x-amz-website-redirect-location"; +const _xs = "xsi:type"; +const n0 = "com.amazonaws.s3"; +import { TypeRegistry } from "@smithy/core/schema"; +import { AccessDenied, BucketAlreadyExists, BucketAlreadyOwnedByYou, EncryptionTypeMismatch, IdempotencyParameterMismatch, InvalidObjectState, InvalidRequest, InvalidWriteOffset, NoSuchBucket, NoSuchKey, NoSuchUpload, NotFound, ObjectAlreadyInActiveTierError, ObjectNotInActiveTierError, TooManyParts, } from "../models/errors"; +import { S3ServiceException } from "../models/S3ServiceException"; +const _s_registry = TypeRegistry.for(_s); +export var S3ServiceException$ = [-3, _s, "S3ServiceException", 0, [], []]; +_s_registry.registerError(S3ServiceException$, S3ServiceException); +const n0_registry = TypeRegistry.for(n0); +export var AccessDenied$ = [-3, n0, _AD, + { [_e]: _c, [_hE]: 403 }, + [], + [] +]; +n0_registry.registerError(AccessDenied$, AccessDenied); +export var BucketAlreadyExists$ = [-3, n0, _BAE, + { [_e]: _c, [_hE]: 409 }, + [], + [] +]; +n0_registry.registerError(BucketAlreadyExists$, BucketAlreadyExists); +export var BucketAlreadyOwnedByYou$ = [-3, n0, _BAOBY, + { [_e]: _c, [_hE]: 409 }, + [], + [] +]; +n0_registry.registerError(BucketAlreadyOwnedByYou$, BucketAlreadyOwnedByYou); +export var EncryptionTypeMismatch$ = [-3, n0, _ETM, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(EncryptionTypeMismatch$, EncryptionTypeMismatch); +export var IdempotencyParameterMismatch$ = [-3, n0, _IPM, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(IdempotencyParameterMismatch$, IdempotencyParameterMismatch); +export var InvalidObjectState$ = [-3, n0, _IOS, + { [_e]: _c, [_hE]: 403 }, + [_SC, _AT], + [0, 0] +]; +n0_registry.registerError(InvalidObjectState$, InvalidObjectState); +export var InvalidRequest$ = [-3, n0, _IR, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(InvalidRequest$, InvalidRequest); +export var InvalidWriteOffset$ = [-3, n0, _IWO, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(InvalidWriteOffset$, InvalidWriteOffset); +export var NoSuchBucket$ = [-3, n0, _NSB, + { [_e]: _c, [_hE]: 404 }, + [], + [] +]; +n0_registry.registerError(NoSuchBucket$, NoSuchBucket); +export var NoSuchKey$ = [-3, n0, _NSK, + { [_e]: _c, [_hE]: 404 }, + [], + [] +]; +n0_registry.registerError(NoSuchKey$, NoSuchKey); +export var NoSuchUpload$ = [-3, n0, _NSU, + { [_e]: _c, [_hE]: 404 }, + [], + [] +]; +n0_registry.registerError(NoSuchUpload$, NoSuchUpload); +export var NotFound$ = [-3, n0, _NF, + { [_e]: _c }, + [], + [] +]; +n0_registry.registerError(NotFound$, NotFound); +export var ObjectAlreadyInActiveTierError$ = [-3, n0, _OAIATE, + { [_e]: _c, [_hE]: 403 }, + [], + [] +]; +n0_registry.registerError(ObjectAlreadyInActiveTierError$, ObjectAlreadyInActiveTierError); +export var ObjectNotInActiveTierError$ = [-3, n0, _ONIATE, + { [_e]: _c, [_hE]: 403 }, + [], + [] +]; +n0_registry.registerError(ObjectNotInActiveTierError$, ObjectNotInActiveTierError); +export var TooManyParts$ = [-3, n0, _TMP, + { [_e]: _c, [_hE]: 400 }, + [], + [] +]; +n0_registry.registerError(TooManyParts$, TooManyParts); +export const errorTypeRegistries = [ + _s_registry, + n0_registry, +]; +var CopySourceSSECustomerKey = [0, n0, _CSSSECK, 8, 0]; +var NonEmptyKmsKeyArnString = [0, n0, _NEKKAS, 8, 0]; +var SessionCredentialValue = [0, n0, _SCV, 8, 0]; +var SSECustomerKey = [0, n0, _SSECK, 8, 0]; +var SSEKMSEncryptionContext = [0, n0, _SSEKMSEC, 8, 0]; +var SSEKMSKeyId = [0, n0, _SSEKMSKI, 8, 0]; +var StreamingBlob = [0, n0, _SB, { [_st]: 1 }, 42]; +export var AbacStatus$ = [3, n0, _AS, + 0, + [_S], + [0] +]; +export var AbortIncompleteMultipartUpload$ = [3, n0, _AIMU, + 0, + [_DAI], + [1] +]; +export var AbortMultipartUploadOutput$ = [3, n0, _AMUO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +export var AbortMultipartUploadRequest$ = [3, n0, _AMUR, + 0, + [_B, _K, _UI, _RP, _EBO, _IMIT], + [[0, 1], [0, 1], [0, { [_hQ]: _uI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [6, { [_hH]: _xaimit }]], 3 +]; +export var AccelerateConfiguration$ = [3, n0, _AC, + 0, + [_S], + [0] +]; +export var AccessControlPolicy$ = [3, n0, _ACP, + 0, + [_G, _O], + [[() => Grants, { [_xN]: _ACL }], () => Owner$] +]; +export var AccessControlTranslation$ = [3, n0, _ACT, + 0, + [_O], + [0], 1 +]; +export var AnalyticsAndOperator$ = [3, n0, _AAO, + 0, + [_P, _T], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }]] +]; +export var AnalyticsConfiguration$ = [3, n0, _ACn, + 0, + [_I, _SCA, _F], + [0, () => StorageClassAnalysis$, [() => AnalyticsFilter$, 0]], 2 +]; +export var AnalyticsExportDestination$ = [3, n0, _AED, + 0, + [_SBD], + [() => AnalyticsS3BucketDestination$], 1 +]; +export var AnalyticsS3BucketDestination$ = [3, n0, _ASBD, + 0, + [_Fo, _B, _BAI, _P], + [0, 0, 0, 0], 2 +]; +export var BlockedEncryptionTypes$ = [3, n0, _BET, + 0, + [_ET], + [[() => EncryptionTypeList, { [_xF]: 1 }]] +]; +export var Bucket$ = [3, n0, _B, + 0, + [_N, _CD, _BR, _BA], + [0, 4, 0, 0] +]; +export var BucketInfo$ = [3, n0, _BI, + 0, + [_DR, _Ty], + [0, 0] +]; +export var BucketLifecycleConfiguration$ = [3, n0, _BLC, + 0, + [_R], + [[() => LifecycleRules, { [_xF]: 1, [_xN]: _Ru }]], 1 +]; +export var BucketLoggingStatus$ = [3, n0, _BLS, + 0, + [_LE], + [[() => LoggingEnabled$, 0]] +]; +export var Checksum$ = [3, n0, _C, + 0, + [_CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT], + [0, 0, 0, 0, 0, 0] +]; +export var CommonPrefix$ = [3, n0, _CP, + 0, + [_P], + [0] +]; +export var CompletedMultipartUpload$ = [3, n0, _CMU, + 0, + [_Pa], + [[() => CompletedPartList, { [_xF]: 1, [_xN]: _Par }]] +]; +export var CompletedPart$ = [3, n0, _CPo, + 0, + [_ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _PN], + [0, 0, 0, 0, 0, 0, 1] +]; +export var CompleteMultipartUploadOutput$ = [3, n0, _CMUO, + { [_xN]: _CMUR }, + [_L, _B, _K, _E, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _SSE, _VI, _SSEKMSKI, _BKE, _RC], + [0, 0, 0, [0, { [_hH]: _xae }], 0, 0, 0, 0, 0, 0, 0, [0, { [_hH]: _xasse }], [0, { [_hH]: _xavi }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]] +]; +export var CompleteMultipartUploadRequest$ = [3, n0, _CMURo, + 0, + [_B, _K, _UI, _MU, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _MOS, _RP, _EBO, _IM, _INM, _SSECA, _SSECK, _SSECKMD], + [[0, 1], [0, 1], [0, { [_hQ]: _uI }], [() => CompletedMultipartUpload$, { [_hP]: 1, [_xN]: _CMUo }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [1, { [_hH]: _xamos }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }]], 3 +]; +export var Condition$ = [3, n0, _Co, + 0, + [_HECRE, _KPE], + [0, 0] +]; +export var ContinuationEvent$ = [3, n0, _CE, + 0, + [], + [] +]; +export var CopyObjectOutput$ = [3, n0, _COO, + 0, + [_COR, _E, _CSVI, _VI, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RC], + [[() => CopyObjectResult$, 16], [0, { [_hH]: _xae }], [0, { [_hH]: _xacsvi }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]] +]; +export var CopyObjectRequest$ = [3, n0, _CORo, + 0, + [_B, _CS, _K, _ACL_, _CC, _CA, _CDo, _CEo, _CL, _CTo, _CSIM, _CSIMS, _CSINM, _CSIUS, _Ex, _GFC, _GR, _GRACP, _GWACP, _IM, _INM, _M, _MD, _TD, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _CSSSECA, _CSSSECK, _CSSSECKMD, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _EBO, _ESBO], + [[0, 1], [0, { [_hH]: _xacs__ }], [0, 1], [0, { [_hH]: _xaa }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _xaca }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CT_ }], [0, { [_hH]: _xacsim }], [4, { [_hH]: _xacsims }], [0, { [_hH]: _xacsinm }], [4, { [_hH]: _xacsius }], [4, { [_hH]: _Ex }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagwa }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xamd }], [0, { [_hH]: _xatd }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xacssseca }], [() => CopySourceSSECustomerKey, { [_hH]: _xacssseck }], [0, { [_hH]: _xacssseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xat }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasebo }]], 3 +]; +export var CopyObjectResult$ = [3, n0, _COR, + 0, + [_ETa, _LM, _CT, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh], + [0, 4, 0, 0, 0, 0, 0, 0] +]; +export var CopyPartResult$ = [3, n0, _CPR, + 0, + [_ETa, _LM, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh], + [0, 4, 0, 0, 0, 0, 0] +]; +export var CORSConfiguration$ = [3, n0, _CORSC, + 0, + [_CORSR], + [[() => CORSRules, { [_xF]: 1, [_xN]: _CORSRu }]], 1 +]; +export var CORSRule$ = [3, n0, _CORSRu, + 0, + [_AM, _AO, _ID, _AH, _EH, _MAS], + [[64 | 0, { [_xF]: 1, [_xN]: _AMl }], [64 | 0, { [_xF]: 1, [_xN]: _AOl }], 0, [64 | 0, { [_xF]: 1, [_xN]: _AHl }], [64 | 0, { [_xF]: 1, [_xN]: _EHx }], 1], 2 +]; +export var CreateBucketConfiguration$ = [3, n0, _CBC, + 0, + [_LC, _L, _B, _T], + [0, () => LocationInfo$, () => BucketInfo$, [() => TagSet, 0]] +]; +export var CreateBucketMetadataConfigurationRequest$ = [3, n0, _CBMCR, + 0, + [_B, _MC, _CMD, _CA, _EBO], + [[0, 1], [() => MetadataConfiguration$, { [_hP]: 1, [_xN]: _MC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var CreateBucketMetadataTableConfigurationRequest$ = [3, n0, _CBMTCR, + 0, + [_B, _MTC, _CMD, _CA, _EBO], + [[0, 1], [() => MetadataTableConfiguration$, { [_hP]: 1, [_xN]: _MTC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var CreateBucketOutput$ = [3, n0, _CBO, + 0, + [_L, _BA], + [[0, { [_hH]: _L }], [0, { [_hH]: _xaba }]] +]; +export var CreateBucketRequest$ = [3, n0, _CBR, + 0, + [_B, _ACL_, _CBC, _GFC, _GR, _GRACP, _GW, _GWACP, _OLEFB, _OO, _BN], + [[0, 1], [0, { [_hH]: _xaa }], [() => CreateBucketConfiguration$, { [_hP]: 1, [_xN]: _CBC }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagw }], [0, { [_hH]: _xagwa }], [2, { [_hH]: _xabole }], [0, { [_hH]: _xaoo }], [0, { [_hH]: _xabn }]], 1 +]; +export var CreateMultipartUploadOutput$ = [3, n0, _CMUOr, + { [_xN]: _IMUR }, + [_ADb, _ARI, _B, _K, _UI, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RC, _CA, _CT], + [[4, { [_hH]: _xaad }], [0, { [_hH]: _xaari }], [0, { [_xN]: _B }], 0, 0, [0, { [_hH]: _xasse }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }], [0, { [_hH]: _xaca }], [0, { [_hH]: _xact }]] +]; +export var CreateMultipartUploadRequest$ = [3, n0, _CMURr, + 0, + [_B, _K, _ACL_, _CC, _CDo, _CEo, _CL, _CTo, _Ex, _GFC, _GR, _GRACP, _GWACP, _M, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _EBO, _CA, _CT], + [[0, 1], [0, 1], [0, { [_hH]: _xaa }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CT_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagwa }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xat }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xaca }], [0, { [_hH]: _xact }]], 2 +]; +export var CreateSessionOutput$ = [3, n0, _CSO, + { [_xN]: _CSR }, + [_Cr, _SSE, _SSEKMSKI, _SSEKMSEC, _BKE], + [[() => SessionCredentials$, { [_xN]: _Cr }], [0, { [_hH]: _xasse }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }]], 1 +]; +export var CreateSessionRequest$ = [3, n0, _CSRr, + 0, + [_B, _SM, _SSE, _SSEKMSKI, _SSEKMSEC, _BKE], + [[0, 1], [0, { [_hH]: _xacsm }], [0, { [_hH]: _xasse }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }]], 1 +]; +export var CSVInput$ = [3, n0, _CSVIn, + 0, + [_FHI, _Com, _QEC, _RD, _FD, _QC, _AQRD], + [0, 0, 0, 0, 0, 0, 2] +]; +export var CSVOutput$ = [3, n0, _CSVO, + 0, + [_QF, _QEC, _RD, _FD, _QC], + [0, 0, 0, 0, 0] +]; +export var DefaultRetention$ = [3, n0, _DRe, + 0, + [_Mo, _D, _Y], + [0, 1, 1] +]; +export var Delete$ = [3, n0, _De, + 0, + [_Ob, _Q], + [[() => ObjectIdentifierList, { [_xF]: 1, [_xN]: _Obj }], 2], 1 +]; +export var DeleteBucketAnalyticsConfigurationRequest$ = [3, n0, _DBACR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +export var DeleteBucketCorsRequest$ = [3, n0, _DBCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketEncryptionRequest$ = [3, n0, _DBER, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketIntelligentTieringConfigurationRequest$ = [3, n0, _DBITCR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +export var DeleteBucketInventoryConfigurationRequest$ = [3, n0, _DBICR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +export var DeleteBucketLifecycleRequest$ = [3, n0, _DBLR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketMetadataConfigurationRequest$ = [3, n0, _DBMCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketMetadataTableConfigurationRequest$ = [3, n0, _DBMTCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketMetricsConfigurationRequest$ = [3, n0, _DBMCRe, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +export var DeleteBucketOwnershipControlsRequest$ = [3, n0, _DBOCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketPolicyRequest$ = [3, n0, _DBPR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketReplicationRequest$ = [3, n0, _DBRR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketRequest$ = [3, n0, _DBR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketTaggingRequest$ = [3, n0, _DBTR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeleteBucketWebsiteRequest$ = [3, n0, _DBWR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var DeletedObject$ = [3, n0, _DO, + 0, + [_K, _VI, _DM, _DMVI], + [0, 0, 2, 0] +]; +export var DeleteMarkerEntry$ = [3, n0, _DME, + 0, + [_O, _K, _VI, _IL, _LM], + [() => Owner$, 0, 0, 2, 4] +]; +export var DeleteMarkerReplication$ = [3, n0, _DMR, + 0, + [_S], + [0] +]; +export var DeleteObjectOutput$ = [3, n0, _DOO, + 0, + [_DM, _VI, _RC], + [[2, { [_hH]: _xadm }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xarc }]] +]; +export var DeleteObjectRequest$ = [3, n0, _DOR, + 0, + [_B, _K, _MFA, _VI, _RP, _BGR, _EBO, _IM, _IMLMT, _IMS], + [[0, 1], [0, 1], [0, { [_hH]: _xam_ }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [2, { [_hH]: _xabgr }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _IM_ }], [6, { [_hH]: _xaimlmt }], [1, { [_hH]: _xaims }]], 2 +]; +export var DeleteObjectsOutput$ = [3, n0, _DOOe, + { [_xN]: _DRel }, + [_Del, _RC, _Er], + [[() => DeletedObjects, { [_xF]: 1 }], [0, { [_hH]: _xarc }], [() => Errors, { [_xF]: 1, [_xN]: _Err }]] +]; +export var DeleteObjectsRequest$ = [3, n0, _DORe, + 0, + [_B, _De, _MFA, _RP, _BGR, _EBO, _CA], + [[0, 1], [() => Delete$, { [_hP]: 1, [_xN]: _De }], [0, { [_hH]: _xam_ }], [0, { [_hH]: _xarp }], [2, { [_hH]: _xabgr }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasca }]], 2 +]; +export var DeleteObjectTaggingOutput$ = [3, n0, _DOTO, + 0, + [_VI], + [[0, { [_hH]: _xavi }]] +]; +export var DeleteObjectTaggingRequest$ = [3, n0, _DOTR, + 0, + [_B, _K, _VI, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xaebo }]], 2 +]; +export var DeletePublicAccessBlockRequest$ = [3, n0, _DPABR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var Destination$ = [3, n0, _Des, + 0, + [_B, _A, _SC, _ACT, _EC, _RT, _Me], + [0, 0, 0, () => AccessControlTranslation$, () => EncryptionConfiguration$, () => ReplicationTime$, () => Metrics$], 1 +]; +export var DestinationResult$ = [3, n0, _DRes, + 0, + [_TBT, _TBA, _TN], + [0, 0, 0] +]; +export var Encryption$ = [3, n0, _En, + 0, + [_ET, _KMSKI, _KMSC], + [0, [() => SSEKMSKeyId, 0], 0], 1 +]; +export var EncryptionConfiguration$ = [3, n0, _EC, + 0, + [_RKKID], + [0] +]; +export var EndEvent$ = [3, n0, _EE, + 0, + [], + [] +]; +export var _Error$ = [3, n0, _Err, + 0, + [_K, _VI, _Cod, _Mes], + [0, 0, 0, 0] +]; +export var ErrorDetails$ = [3, n0, _ED, + 0, + [_ECr, _EM], + [0, 0] +]; +export var ErrorDocument$ = [3, n0, _EDr, + 0, + [_K], + [0], 1 +]; +export var EventBridgeConfiguration$ = [3, n0, _EBC, + 0, + [], + [] +]; +export var ExistingObjectReplication$ = [3, n0, _EOR, + 0, + [_S], + [0], 1 +]; +export var FilterRule$ = [3, n0, _FR, + 0, + [_N, _V], + [0, 0] +]; +export var GetBucketAbacOutput$ = [3, n0, _GBAO, + 0, + [_AS], + [[() => AbacStatus$, 16]] +]; +export var GetBucketAbacRequest$ = [3, n0, _GBAR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketAccelerateConfigurationOutput$ = [3, n0, _GBACO, + { [_xN]: _AC }, + [_S, _RC], + [0, [0, { [_hH]: _xarc }]] +]; +export var GetBucketAccelerateConfigurationRequest$ = [3, n0, _GBACR, + 0, + [_B, _EBO, _RP], + [[0, 1], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 1 +]; +export var GetBucketAclOutput$ = [3, n0, _GBAOe, + { [_xN]: _ACP }, + [_O, _G], + [() => Owner$, [() => Grants, { [_xN]: _ACL }]] +]; +export var GetBucketAclRequest$ = [3, n0, _GBARe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketAnalyticsConfigurationOutput$ = [3, n0, _GBACOe, + 0, + [_ACn], + [[() => AnalyticsConfiguration$, 16]] +]; +export var GetBucketAnalyticsConfigurationRequest$ = [3, n0, _GBACRe, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +export var GetBucketCorsOutput$ = [3, n0, _GBCO, + { [_xN]: _CORSC }, + [_CORSR], + [[() => CORSRules, { [_xF]: 1, [_xN]: _CORSRu }]] +]; +export var GetBucketCorsRequest$ = [3, n0, _GBCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketEncryptionOutput$ = [3, n0, _GBEO, + 0, + [_SSEC], + [[() => ServerSideEncryptionConfiguration$, 16]] +]; +export var GetBucketEncryptionRequest$ = [3, n0, _GBER, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketIntelligentTieringConfigurationOutput$ = [3, n0, _GBITCO, + 0, + [_ITC], + [[() => IntelligentTieringConfiguration$, 16]] +]; +export var GetBucketIntelligentTieringConfigurationRequest$ = [3, n0, _GBITCR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +export var GetBucketInventoryConfigurationOutput$ = [3, n0, _GBICO, + 0, + [_IC], + [[() => InventoryConfiguration$, 16]] +]; +export var GetBucketInventoryConfigurationRequest$ = [3, n0, _GBICR, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +export var GetBucketLifecycleConfigurationOutput$ = [3, n0, _GBLCO, + { [_xN]: _LCi }, + [_R, _TDMOS], + [[() => LifecycleRules, { [_xF]: 1, [_xN]: _Ru }], [0, { [_hH]: _xatdmos }]] +]; +export var GetBucketLifecycleConfigurationRequest$ = [3, n0, _GBLCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketLocationOutput$ = [3, n0, _GBLO, + { [_xN]: _LC }, + [_LC], + [0] +]; +export var GetBucketLocationRequest$ = [3, n0, _GBLR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketLoggingOutput$ = [3, n0, _GBLOe, + { [_xN]: _BLS }, + [_LE], + [[() => LoggingEnabled$, 0]] +]; +export var GetBucketLoggingRequest$ = [3, n0, _GBLRe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketMetadataConfigurationOutput$ = [3, n0, _GBMCO, + 0, + [_GBMCR], + [[() => GetBucketMetadataConfigurationResult$, 16]] +]; +export var GetBucketMetadataConfigurationRequest$ = [3, n0, _GBMCRe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketMetadataConfigurationResult$ = [3, n0, _GBMCR, + 0, + [_MCR], + [() => MetadataConfigurationResult$], 1 +]; +export var GetBucketMetadataTableConfigurationOutput$ = [3, n0, _GBMTCO, + 0, + [_GBMTCR], + [[() => GetBucketMetadataTableConfigurationResult$, 16]] +]; +export var GetBucketMetadataTableConfigurationRequest$ = [3, n0, _GBMTCRe, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketMetadataTableConfigurationResult$ = [3, n0, _GBMTCR, + 0, + [_MTCR, _S, _Err], + [() => MetadataTableConfigurationResult$, 0, () => ErrorDetails$], 2 +]; +export var GetBucketMetricsConfigurationOutput$ = [3, n0, _GBMCOe, + 0, + [_MCe], + [[() => MetricsConfiguration$, 16]] +]; +export var GetBucketMetricsConfigurationRequest$ = [3, n0, _GBMCRet, + 0, + [_B, _I, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [0, { [_hH]: _xaebo }]], 2 +]; +export var GetBucketNotificationConfigurationRequest$ = [3, n0, _GBNCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketOwnershipControlsOutput$ = [3, n0, _GBOCO, + 0, + [_OC], + [[() => OwnershipControls$, 16]] +]; +export var GetBucketOwnershipControlsRequest$ = [3, n0, _GBOCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketPolicyOutput$ = [3, n0, _GBPO, + 0, + [_Po], + [[0, 16]] +]; +export var GetBucketPolicyRequest$ = [3, n0, _GBPR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketPolicyStatusOutput$ = [3, n0, _GBPSO, + 0, + [_PS], + [[() => PolicyStatus$, 16]] +]; +export var GetBucketPolicyStatusRequest$ = [3, n0, _GBPSR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketReplicationOutput$ = [3, n0, _GBRO, + 0, + [_RCe], + [[() => ReplicationConfiguration$, 16]] +]; +export var GetBucketReplicationRequest$ = [3, n0, _GBRR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketRequestPaymentOutput$ = [3, n0, _GBRPO, + { [_xN]: _RPC }, + [_Pay], + [0] +]; +export var GetBucketRequestPaymentRequest$ = [3, n0, _GBRPR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketTaggingOutput$ = [3, n0, _GBTO, + { [_xN]: _Tag }, + [_TS], + [[() => TagSet, 0]], 1 +]; +export var GetBucketTaggingRequest$ = [3, n0, _GBTR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketVersioningOutput$ = [3, n0, _GBVO, + { [_xN]: _VC }, + [_S, _MFAD], + [0, [0, { [_xN]: _MDf }]] +]; +export var GetBucketVersioningRequest$ = [3, n0, _GBVR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetBucketWebsiteOutput$ = [3, n0, _GBWO, + { [_xN]: _WC }, + [_RART, _IDn, _EDr, _RR], + [() => RedirectAllRequestsTo$, () => IndexDocument$, () => ErrorDocument$, [() => RoutingRules, 0]] +]; +export var GetBucketWebsiteRequest$ = [3, n0, _GBWR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetObjectAclOutput$ = [3, n0, _GOAO, + { [_xN]: _ACP }, + [_O, _G, _RC], + [() => Owner$, [() => Grants, { [_xN]: _ACL }], [0, { [_hH]: _xarc }]] +]; +export var GetObjectAclRequest$ = [3, n0, _GOAR, + 0, + [_B, _K, _VI, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2 +]; +export var GetObjectAttributesOutput$ = [3, n0, _GOAOe, + { [_xN]: _GOARe }, + [_DM, _LM, _VI, _RC, _ETa, _C, _OP, _SC, _OS], + [[2, { [_hH]: _xadm }], [4, { [_hH]: _LM_ }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xarc }], 0, () => Checksum$, [() => GetObjectAttributesParts$, 0], 0, 1] +]; +export var GetObjectAttributesParts$ = [3, n0, _GOAP, + 0, + [_TPC, _PNM, _NPNM, _MP, _IT, _Pa], + [[1, { [_xN]: _PC }], 0, 0, 1, 2, [() => PartsList, { [_xF]: 1, [_xN]: _Par }]] +]; +export var GetObjectAttributesRequest$ = [3, n0, _GOARet, + 0, + [_B, _K, _OA, _VI, _MP, _PNM, _SSECA, _SSECK, _SSECKMD, _RP, _EBO], + [[0, 1], [0, 1], [64 | 0, { [_hH]: _xaoa }], [0, { [_hQ]: _vI }], [1, { [_hH]: _xamp }], [0, { [_hH]: _xapnm }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 3 +]; +export var GetObjectLegalHoldOutput$ = [3, n0, _GOLHO, + 0, + [_LH], + [[() => ObjectLockLegalHold$, { [_hP]: 1, [_xN]: _LH }]] +]; +export var GetObjectLegalHoldRequest$ = [3, n0, _GOLHR, + 0, + [_B, _K, _VI, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2 +]; +export var GetObjectLockConfigurationOutput$ = [3, n0, _GOLCO, + 0, + [_OLC], + [[() => ObjectLockConfiguration$, 16]] +]; +export var GetObjectLockConfigurationRequest$ = [3, n0, _GOLCR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GetObjectOutput$ = [3, n0, _GOO, + 0, + [_Bo, _DM, _AR, _E, _Re, _LM, _CLo, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _MM, _VI, _CC, _CDo, _CEo, _CL, _CR, _CTo, _Ex, _ES, _WRL, _SSE, _M, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _SC, _RC, _RS, _PC, _TC, _OLM, _OLRUD, _OLLHS], + [[() => StreamingBlob, 16], [2, { [_hH]: _xadm }], [0, { [_hH]: _ar }], [0, { [_hH]: _xae }], [0, { [_hH]: _xar }], [4, { [_hH]: _LM_ }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _ETa }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [1, { [_hH]: _xamm }], [0, { [_hH]: _xavi }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CR_ }], [0, { [_hH]: _CT_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _ES }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasse }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xarc }], [0, { [_hH]: _xars }], [1, { [_hH]: _xampc }], [1, { [_hH]: _xatc }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }]] +]; +export var GetObjectRequest$ = [3, n0, _GOR, + 0, + [_B, _K, _IM, _IMSf, _INM, _IUS, _Ra, _RCC, _RCD, _RCE, _RCL, _RCT, _RE, _VI, _SSECA, _SSECK, _SSECKMD, _RP, _PN, _EBO, _CMh], + [[0, 1], [0, 1], [0, { [_hH]: _IM_ }], [4, { [_hH]: _IMS_ }], [0, { [_hH]: _INM_ }], [4, { [_hH]: _IUS_ }], [0, { [_hH]: _Ra }], [0, { [_hQ]: _rcc }], [0, { [_hQ]: _rcd }], [0, { [_hQ]: _rce }], [0, { [_hQ]: _rcl }], [0, { [_hQ]: _rct }], [6, { [_hQ]: _re }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [1, { [_hQ]: _pN }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xacm }]], 2 +]; +export var GetObjectRetentionOutput$ = [3, n0, _GORO, + 0, + [_Ret], + [[() => ObjectLockRetention$, { [_hP]: 1, [_xN]: _Ret }]] +]; +export var GetObjectRetentionRequest$ = [3, n0, _GORR, + 0, + [_B, _K, _VI, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2 +]; +export var GetObjectTaggingOutput$ = [3, n0, _GOTO, + { [_xN]: _Tag }, + [_TS, _VI], + [[() => TagSet, 0], [0, { [_hH]: _xavi }]], 1 +]; +export var GetObjectTaggingRequest$ = [3, n0, _GOTR, + 0, + [_B, _K, _VI, _EBO, _RP], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 2 +]; +export var GetObjectTorrentOutput$ = [3, n0, _GOTOe, + 0, + [_Bo, _RC], + [[() => StreamingBlob, 16], [0, { [_hH]: _xarc }]] +]; +export var GetObjectTorrentRequest$ = [3, n0, _GOTRe, + 0, + [_B, _K, _RP, _EBO], + [[0, 1], [0, 1], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 2 +]; +export var GetPublicAccessBlockOutput$ = [3, n0, _GPABO, + 0, + [_PABC], + [[() => PublicAccessBlockConfiguration$, 16]] +]; +export var GetPublicAccessBlockRequest$ = [3, n0, _GPABR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var GlacierJobParameters$ = [3, n0, _GJP, + 0, + [_Ti], + [0], 1 +]; +export var Grant$ = [3, n0, _Gr, + 0, + [_Gra, _Pe], + [[() => Grantee$, { [_xNm]: [_x, _hi] }], 0] +]; +export var Grantee$ = [3, n0, _Gra, + 0, + [_Ty, _DN, _EA, _ID, _URI], + [[0, { [_xA]: 1, [_xN]: _xs }], 0, 0, 0, 0], 1 +]; +export var HeadBucketOutput$ = [3, n0, _HBO, + 0, + [_BA, _BLT, _BLN, _BR, _APA], + [[0, { [_hH]: _xaba }], [0, { [_hH]: _xablt }], [0, { [_hH]: _xabln }], [0, { [_hH]: _xabr }], [2, { [_hH]: _xaapa }]] +]; +export var HeadBucketRequest$ = [3, n0, _HBR, + 0, + [_B, _EBO], + [[0, 1], [0, { [_hH]: _xaebo }]], 1 +]; +export var HeadObjectOutput$ = [3, n0, _HOO, + 0, + [_DM, _AR, _E, _Re, _ASr, _LM, _CLo, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _ETa, _MM, _VI, _CC, _CDo, _CEo, _CL, _CTo, _CR, _Ex, _ES, _WRL, _SSE, _M, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _SC, _RC, _RS, _PC, _TC, _OLM, _OLRUD, _OLLHS], + [[2, { [_hH]: _xadm }], [0, { [_hH]: _ar }], [0, { [_hH]: _xae }], [0, { [_hH]: _xar }], [0, { [_hH]: _xaas }], [4, { [_hH]: _LM_ }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [0, { [_hH]: _ETa }], [1, { [_hH]: _xamm }], [0, { [_hH]: _xavi }], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [0, { [_hH]: _CT_ }], [0, { [_hH]: _CR_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _ES }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasse }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xarc }], [0, { [_hH]: _xars }], [1, { [_hH]: _xampc }], [1, { [_hH]: _xatc }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }]] +]; +export var HeadObjectRequest$ = [3, n0, _HOR, + 0, + [_B, _K, _IM, _IMSf, _INM, _IUS, _Ra, _RCC, _RCD, _RCE, _RCL, _RCT, _RE, _VI, _SSECA, _SSECK, _SSECKMD, _RP, _PN, _EBO, _CMh], + [[0, 1], [0, 1], [0, { [_hH]: _IM_ }], [4, { [_hH]: _IMS_ }], [0, { [_hH]: _INM_ }], [4, { [_hH]: _IUS_ }], [0, { [_hH]: _Ra }], [0, { [_hQ]: _rcc }], [0, { [_hQ]: _rcd }], [0, { [_hQ]: _rce }], [0, { [_hQ]: _rcl }], [0, { [_hQ]: _rct }], [6, { [_hQ]: _re }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [1, { [_hQ]: _pN }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xacm }]], 2 +]; +export var IndexDocument$ = [3, n0, _IDn, + 0, + [_Su], + [0], 1 +]; +export var Initiator$ = [3, n0, _In, + 0, + [_ID, _DN], + [0, 0] +]; +export var InputSerialization$ = [3, n0, _IS, + 0, + [_CSV, _CTom, _JSON, _Parq], + [() => CSVInput$, 0, () => JSONInput$, () => ParquetInput$] +]; +export var IntelligentTieringAndOperator$ = [3, n0, _ITAO, + 0, + [_P, _T], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }]] +]; +export var IntelligentTieringConfiguration$ = [3, n0, _ITC, + 0, + [_I, _S, _Tie, _F], + [0, 0, [() => TieringList, { [_xF]: 1, [_xN]: _Tier }], [() => IntelligentTieringFilter$, 0]], 3 +]; +export var IntelligentTieringFilter$ = [3, n0, _ITF, + 0, + [_P, _Ta, _An], + [0, () => Tag$, [() => IntelligentTieringAndOperator$, 0]] +]; +export var InventoryConfiguration$ = [3, n0, _IC, + 0, + [_Des, _IE, _I, _IOV, _Sc, _F, _OF], + [[() => InventoryDestination$, 0], 2, 0, 0, () => InventorySchedule$, () => InventoryFilter$, [() => InventoryOptionalFields, 0]], 5 +]; +export var InventoryDestination$ = [3, n0, _IDnv, + 0, + [_SBD], + [[() => InventoryS3BucketDestination$, 0]], 1 +]; +export var InventoryEncryption$ = [3, n0, _IEn, + 0, + [_SSES, _SSEKMS], + [[() => SSES3$, { [_xN]: _SS }], [() => SSEKMS$, { [_xN]: _SK }]] +]; +export var InventoryFilter$ = [3, n0, _IF, + 0, + [_P], + [0], 1 +]; +export var InventoryS3BucketDestination$ = [3, n0, _ISBD, + 0, + [_B, _Fo, _AI, _P, _En], + [0, 0, 0, 0, [() => InventoryEncryption$, 0]], 2 +]; +export var InventorySchedule$ = [3, n0, _ISn, + 0, + [_Fr], + [0], 1 +]; +export var InventoryTableConfiguration$ = [3, n0, _ITCn, + 0, + [_CSo, _EC], + [0, () => MetadataTableEncryptionConfiguration$], 1 +]; +export var InventoryTableConfigurationResult$ = [3, n0, _ITCR, + 0, + [_CSo, _TSa, _Err, _TNa, _TA], + [0, 0, () => ErrorDetails$, 0, 0], 1 +]; +export var InventoryTableConfigurationUpdates$ = [3, n0, _ITCU, + 0, + [_CSo, _EC], + [0, () => MetadataTableEncryptionConfiguration$], 1 +]; +export var JournalTableConfiguration$ = [3, n0, _JTC, + 0, + [_REe, _EC], + [() => RecordExpiration$, () => MetadataTableEncryptionConfiguration$], 1 +]; +export var JournalTableConfigurationResult$ = [3, n0, _JTCR, + 0, + [_TSa, _TNa, _REe, _Err, _TA], + [0, 0, () => RecordExpiration$, () => ErrorDetails$, 0], 3 +]; +export var JournalTableConfigurationUpdates$ = [3, n0, _JTCU, + 0, + [_REe], + [() => RecordExpiration$], 1 +]; +export var JSONInput$ = [3, n0, _JSONI, + 0, + [_Ty], + [0] +]; +export var JSONOutput$ = [3, n0, _JSONO, + 0, + [_RD], + [0] +]; +export var LambdaFunctionConfiguration$ = [3, n0, _LFC, + 0, + [_LFA, _Ev, _I, _F], + [[0, { [_xN]: _CF }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => NotificationConfigurationFilter$, 0]], 2 +]; +export var LifecycleExpiration$ = [3, n0, _LEi, + 0, + [_Da, _D, _EODM], + [5, 1, 2] +]; +export var LifecycleRule$ = [3, n0, _LR, + 0, + [_S, _E, _ID, _P, _F, _Tr, _NVT, _NVE, _AIMU], + [0, () => LifecycleExpiration$, 0, 0, [() => LifecycleRuleFilter$, 0], [() => TransitionList, { [_xF]: 1, [_xN]: _Tra }], [() => NoncurrentVersionTransitionList, { [_xF]: 1, [_xN]: _NVTo }], () => NoncurrentVersionExpiration$, () => AbortIncompleteMultipartUpload$], 1 +]; +export var LifecycleRuleAndOperator$ = [3, n0, _LRAO, + 0, + [_P, _T, _OSGT, _OSLT], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }], 1, 1] +]; +export var LifecycleRuleFilter$ = [3, n0, _LRF, + 0, + [_P, _Ta, _OSGT, _OSLT, _An], + [0, () => Tag$, 1, 1, [() => LifecycleRuleAndOperator$, 0]] +]; +export var ListBucketAnalyticsConfigurationsOutput$ = [3, n0, _LBACO, + { [_xN]: _LBACR }, + [_IT, _CTon, _NCT, _ACLn], + [2, 0, 0, [() => AnalyticsConfigurationList, { [_xF]: 1, [_xN]: _ACn }]] +]; +export var ListBucketAnalyticsConfigurationsRequest$ = [3, n0, _LBACRi, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1 +]; +export var ListBucketIntelligentTieringConfigurationsOutput$ = [3, n0, _LBITCO, + 0, + [_IT, _CTon, _NCT, _ITCL], + [2, 0, 0, [() => IntelligentTieringConfigurationList, { [_xF]: 1, [_xN]: _ITC }]] +]; +export var ListBucketIntelligentTieringConfigurationsRequest$ = [3, n0, _LBITCR, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1 +]; +export var ListBucketInventoryConfigurationsOutput$ = [3, n0, _LBICO, + { [_xN]: _LICR }, + [_CTon, _ICL, _IT, _NCT], + [0, [() => InventoryConfigurationList, { [_xF]: 1, [_xN]: _IC }], 2, 0] +]; +export var ListBucketInventoryConfigurationsRequest$ = [3, n0, _LBICR, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1 +]; +export var ListBucketMetricsConfigurationsOutput$ = [3, n0, _LBMCO, + { [_xN]: _LMCR }, + [_IT, _CTon, _NCT, _MCL], + [2, 0, 0, [() => MetricsConfigurationList, { [_xF]: 1, [_xN]: _MCe }]] +]; +export var ListBucketMetricsConfigurationsRequest$ = [3, n0, _LBMCR, + 0, + [_B, _CTon, _EBO], + [[0, 1], [0, { [_hQ]: _ct }], [0, { [_hH]: _xaebo }]], 1 +]; +export var ListBucketsOutput$ = [3, n0, _LBO, + { [_xN]: _LAMBR }, + [_Bu, _O, _CTon, _P], + [[() => Buckets, 0], () => Owner$, 0, 0] +]; +export var ListBucketsRequest$ = [3, n0, _LBR, + 0, + [_MB, _CTon, _P, _BR], + [[1, { [_hQ]: _mb }], [0, { [_hQ]: _ct }], [0, { [_hQ]: _p }], [0, { [_hQ]: _br }]] +]; +export var ListDirectoryBucketsOutput$ = [3, n0, _LDBO, + { [_xN]: _LAMDBR }, + [_Bu, _CTon], + [[() => Buckets, 0], 0] +]; +export var ListDirectoryBucketsRequest$ = [3, n0, _LDBR, + 0, + [_CTon, _MDB], + [[0, { [_hQ]: _ct }], [1, { [_hQ]: _mdb }]] +]; +export var ListMultipartUploadsOutput$ = [3, n0, _LMUO, + { [_xN]: _LMUR }, + [_B, _KM, _UIM, _NKM, _P, _Deli, _NUIM, _MUa, _IT, _U, _CPom, _ETn, _RC], + [0, 0, 0, 0, 0, 0, 0, 1, 2, [() => MultipartUploadList, { [_xF]: 1, [_xN]: _Up }], [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH]: _xarc }]] +]; +export var ListMultipartUploadsRequest$ = [3, n0, _LMURi, + 0, + [_B, _Deli, _ETn, _KM, _MUa, _P, _UIM, _EBO, _RP], + [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [0, { [_hQ]: _km }], [1, { [_hQ]: _mu }], [0, { [_hQ]: _p }], [0, { [_hQ]: _uim }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 1 +]; +export var ListObjectsOutput$ = [3, n0, _LOO, + { [_xN]: _LBRi }, + [_IT, _Ma, _NM, _Con, _N, _P, _Deli, _MK, _CPom, _ETn, _RC], + [2, 0, 0, [() => ObjectList, { [_xF]: 1 }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH]: _xarc }]] +]; +export var ListObjectsRequest$ = [3, n0, _LOR, + 0, + [_B, _Deli, _ETn, _Ma, _MK, _P, _RP, _EBO, _OOA], + [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [0, { [_hQ]: _m }], [1, { [_hQ]: _mk }], [0, { [_hQ]: _p }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [64 | 0, { [_hH]: _xaooa }]], 1 +]; +export var ListObjectsV2Output$ = [3, n0, _LOVO, + { [_xN]: _LBRi }, + [_IT, _Con, _N, _P, _Deli, _MK, _CPom, _ETn, _KC, _CTon, _NCT, _SA, _RC], + [2, [() => ObjectList, { [_xF]: 1 }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, 1, 0, 0, 0, [0, { [_hH]: _xarc }]] +]; +export var ListObjectsV2Request$ = [3, n0, _LOVR, + 0, + [_B, _Deli, _ETn, _MK, _P, _CTon, _FO, _SA, _RP, _EBO, _OOA], + [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [1, { [_hQ]: _mk }], [0, { [_hQ]: _p }], [0, { [_hQ]: _ct }], [2, { [_hQ]: _fo }], [0, { [_hQ]: _sa }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [64 | 0, { [_hH]: _xaooa }]], 1 +]; +export var ListObjectVersionsOutput$ = [3, n0, _LOVOi, + { [_xN]: _LVR }, + [_IT, _KM, _VIM, _NKM, _NVIM, _Ve, _DMe, _N, _P, _Deli, _MK, _CPom, _ETn, _RC], + [2, 0, 0, 0, 0, [() => ObjectVersionList, { [_xF]: 1, [_xN]: _Ver }], [() => DeleteMarkers, { [_xF]: 1, [_xN]: _DM }], 0, 0, 0, 1, [() => CommonPrefixList, { [_xF]: 1 }], 0, [0, { [_hH]: _xarc }]] +]; +export var ListObjectVersionsRequest$ = [3, n0, _LOVRi, + 0, + [_B, _Deli, _ETn, _KM, _MK, _P, _VIM, _EBO, _RP, _OOA], + [[0, 1], [0, { [_hQ]: _d }], [0, { [_hQ]: _et }], [0, { [_hQ]: _km }], [1, { [_hQ]: _mk }], [0, { [_hQ]: _p }], [0, { [_hQ]: _vim }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }], [64 | 0, { [_hH]: _xaooa }]], 1 +]; +export var ListPartsOutput$ = [3, n0, _LPO, + { [_xN]: _LPR }, + [_ADb, _ARI, _B, _K, _UI, _PNM, _NPNM, _MP, _IT, _Pa, _In, _O, _SC, _RC, _CA, _CT], + [[4, { [_hH]: _xaad }], [0, { [_hH]: _xaari }], 0, 0, 0, 0, 0, 1, 2, [() => Parts, { [_xF]: 1, [_xN]: _Par }], () => Initiator$, () => Owner$, 0, [0, { [_hH]: _xarc }], 0, 0] +]; +export var ListPartsRequest$ = [3, n0, _LPRi, + 0, + [_B, _K, _UI, _MP, _PNM, _RP, _EBO, _SSECA, _SSECK, _SSECKMD], + [[0, 1], [0, 1], [0, { [_hQ]: _uI }], [1, { [_hQ]: _mp }], [0, { [_hQ]: _pnm }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }]], 3 +]; +export var LocationInfo$ = [3, n0, _LI, + 0, + [_Ty, _N], + [0, 0] +]; +export var LoggingEnabled$ = [3, n0, _LE, + 0, + [_TB, _TP, _TG, _TOKF], + [0, 0, [() => TargetGrants, 0], [() => TargetObjectKeyFormat$, 0]], 2 +]; +export var MetadataConfiguration$ = [3, n0, _MC, + 0, + [_JTC, _ITCn], + [() => JournalTableConfiguration$, () => InventoryTableConfiguration$], 1 +]; +export var MetadataConfigurationResult$ = [3, n0, _MCR, + 0, + [_DRes, _JTCR, _ITCR], + [() => DestinationResult$, () => JournalTableConfigurationResult$, () => InventoryTableConfigurationResult$], 1 +]; +export var MetadataEntry$ = [3, n0, _ME, + 0, + [_N, _V], + [0, 0] +]; +export var MetadataTableConfiguration$ = [3, n0, _MTC, + 0, + [_STD], + [() => S3TablesDestination$], 1 +]; +export var MetadataTableConfigurationResult$ = [3, n0, _MTCR, + 0, + [_STDR], + [() => S3TablesDestinationResult$], 1 +]; +export var MetadataTableEncryptionConfiguration$ = [3, n0, _MTEC, + 0, + [_SAs, _KKA], + [0, 0], 1 +]; +export var Metrics$ = [3, n0, _Me, + 0, + [_S, _ETv], + [0, () => ReplicationTimeValue$], 1 +]; +export var MetricsAndOperator$ = [3, n0, _MAO, + 0, + [_P, _T, _APAc], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }], 0] +]; +export var MetricsConfiguration$ = [3, n0, _MCe, + 0, + [_I, _F], + [0, [() => MetricsFilter$, 0]], 1 +]; +export var MultipartUpload$ = [3, n0, _MU, + 0, + [_UI, _K, _Ini, _SC, _O, _In, _CA, _CT], + [0, 0, 4, 0, () => Owner$, () => Initiator$, 0, 0] +]; +export var NoncurrentVersionExpiration$ = [3, n0, _NVE, + 0, + [_ND, _NNV], + [1, 1] +]; +export var NoncurrentVersionTransition$ = [3, n0, _NVTo, + 0, + [_ND, _SC, _NNV], + [1, 0, 1] +]; +export var NotificationConfiguration$ = [3, n0, _NC, + 0, + [_TCo, _QCu, _LFCa, _EBC], + [[() => TopicConfigurationList, { [_xF]: 1, [_xN]: _TCop }], [() => QueueConfigurationList, { [_xF]: 1, [_xN]: _QCue }], [() => LambdaFunctionConfigurationList, { [_xF]: 1, [_xN]: _CFC }], () => EventBridgeConfiguration$] +]; +export var NotificationConfigurationFilter$ = [3, n0, _NCF, + 0, + [_K], + [[() => S3KeyFilter$, { [_xN]: _SKe }]] +]; +export var _Object$ = [3, n0, _Obj, + 0, + [_K, _LM, _ETa, _CA, _CT, _Si, _SC, _O, _RSe], + [0, 4, 0, [64 | 0, { [_xF]: 1 }], 0, 1, 0, () => Owner$, () => RestoreStatus$] +]; +export var ObjectIdentifier$ = [3, n0, _OI, + 0, + [_K, _VI, _ETa, _LMT, _Si], + [0, 0, 0, 6, 1], 1 +]; +export var ObjectLockConfiguration$ = [3, n0, _OLC, + 0, + [_OLE, _Ru], + [0, () => ObjectLockRule$] +]; +export var ObjectLockLegalHold$ = [3, n0, _OLLH, + 0, + [_S], + [0] +]; +export var ObjectLockRetention$ = [3, n0, _OLR, + 0, + [_Mo, _RUD], + [0, 5] +]; +export var ObjectLockRule$ = [3, n0, _OLRb, + 0, + [_DRe], + [() => DefaultRetention$] +]; +export var ObjectPart$ = [3, n0, _OPb, + 0, + [_PN, _Si, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh], + [1, 1, 0, 0, 0, 0, 0] +]; +export var ObjectVersion$ = [3, n0, _OV, + 0, + [_ETa, _CA, _CT, _Si, _SC, _K, _VI, _IL, _LM, _O, _RSe], + [0, [64 | 0, { [_xF]: 1 }], 0, 1, 0, 0, 0, 2, 4, () => Owner$, () => RestoreStatus$] +]; +export var OutputLocation$ = [3, n0, _OL, + 0, + [_S_], + [[() => S3Location$, 0]] +]; +export var OutputSerialization$ = [3, n0, _OSu, + 0, + [_CSV, _JSON], + [() => CSVOutput$, () => JSONOutput$] +]; +export var Owner$ = [3, n0, _O, + 0, + [_DN, _ID], + [0, 0] +]; +export var OwnershipControls$ = [3, n0, _OC, + 0, + [_R], + [[() => OwnershipControlsRules, { [_xF]: 1, [_xN]: _Ru }]], 1 +]; +export var OwnershipControlsRule$ = [3, n0, _OCR, + 0, + [_OO], + [0], 1 +]; +export var ParquetInput$ = [3, n0, _PI, + 0, + [], + [] +]; +export var Part$ = [3, n0, _Par, + 0, + [_PN, _LM, _ETa, _Si, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh], + [1, 4, 0, 1, 0, 0, 0, 0, 0] +]; +export var PartitionedPrefix$ = [3, n0, _PP, + { [_xN]: _PP }, + [_PDS], + [0] +]; +export var PolicyStatus$ = [3, n0, _PS, + 0, + [_IP], + [[2, { [_xN]: _IP }]] +]; +export var Progress$ = [3, n0, _Pr, + 0, + [_BS, _BP, _BRy], + [1, 1, 1] +]; +export var ProgressEvent$ = [3, n0, _PE, + 0, + [_Det], + [[() => Progress$, { [_eP]: 1 }]] +]; +export var PublicAccessBlockConfiguration$ = [3, n0, _PABC, + 0, + [_BPA, _IPA, _BPP, _RPB], + [[2, { [_xN]: _BPA }], [2, { [_xN]: _IPA }], [2, { [_xN]: _BPP }], [2, { [_xN]: _RPB }]] +]; +export var PutBucketAbacRequest$ = [3, n0, _PBAR, + 0, + [_B, _AS, _CMD, _CA, _EBO], + [[0, 1], [() => AbacStatus$, { [_hP]: 1, [_xN]: _AS }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutBucketAccelerateConfigurationRequest$ = [3, n0, _PBACR, + 0, + [_B, _AC, _EBO, _CA], + [[0, 1], [() => AccelerateConfiguration$, { [_hP]: 1, [_xN]: _AC }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasca }]], 2 +]; +export var PutBucketAclRequest$ = [3, n0, _PBARu, + 0, + [_B, _ACL_, _ACP, _CMD, _CA, _GFC, _GR, _GRACP, _GW, _GWACP, _EBO], + [[0, 1], [0, { [_hH]: _xaa }], [() => AccessControlPolicy$, { [_hP]: 1, [_xN]: _ACP }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagw }], [0, { [_hH]: _xagwa }], [0, { [_hH]: _xaebo }]], 1 +]; +export var PutBucketAnalyticsConfigurationRequest$ = [3, n0, _PBACRu, + 0, + [_B, _I, _ACn, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [() => AnalyticsConfiguration$, { [_hP]: 1, [_xN]: _ACn }], [0, { [_hH]: _xaebo }]], 3 +]; +export var PutBucketCorsRequest$ = [3, n0, _PBCR, + 0, + [_B, _CORSC, _CMD, _CA, _EBO], + [[0, 1], [() => CORSConfiguration$, { [_hP]: 1, [_xN]: _CORSC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutBucketEncryptionRequest$ = [3, n0, _PBER, + 0, + [_B, _SSEC, _CMD, _CA, _EBO], + [[0, 1], [() => ServerSideEncryptionConfiguration$, { [_hP]: 1, [_xN]: _SSEC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutBucketIntelligentTieringConfigurationRequest$ = [3, n0, _PBITCR, + 0, + [_B, _I, _ITC, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [() => IntelligentTieringConfiguration$, { [_hP]: 1, [_xN]: _ITC }], [0, { [_hH]: _xaebo }]], 3 +]; +export var PutBucketInventoryConfigurationRequest$ = [3, n0, _PBICR, + 0, + [_B, _I, _IC, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [() => InventoryConfiguration$, { [_hP]: 1, [_xN]: _IC }], [0, { [_hH]: _xaebo }]], 3 +]; +export var PutBucketLifecycleConfigurationOutput$ = [3, n0, _PBLCO, + 0, + [_TDMOS], + [[0, { [_hH]: _xatdmos }]] +]; +export var PutBucketLifecycleConfigurationRequest$ = [3, n0, _PBLCR, + 0, + [_B, _CA, _LCi, _EBO, _TDMOS], + [[0, 1], [0, { [_hH]: _xasca }], [() => BucketLifecycleConfiguration$, { [_hP]: 1, [_xN]: _LCi }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xatdmos }]], 1 +]; +export var PutBucketLoggingRequest$ = [3, n0, _PBLR, + 0, + [_B, _BLS, _CMD, _CA, _EBO], + [[0, 1], [() => BucketLoggingStatus$, { [_hP]: 1, [_xN]: _BLS }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutBucketMetricsConfigurationRequest$ = [3, n0, _PBMCR, + 0, + [_B, _I, _MCe, _EBO], + [[0, 1], [0, { [_hQ]: _i }], [() => MetricsConfiguration$, { [_hP]: 1, [_xN]: _MCe }], [0, { [_hH]: _xaebo }]], 3 +]; +export var PutBucketNotificationConfigurationRequest$ = [3, n0, _PBNCR, + 0, + [_B, _NC, _EBO, _SDV], + [[0, 1], [() => NotificationConfiguration$, { [_hP]: 1, [_xN]: _NC }], [0, { [_hH]: _xaebo }], [2, { [_hH]: _xasdv }]], 2 +]; +export var PutBucketOwnershipControlsRequest$ = [3, n0, _PBOCR, + 0, + [_B, _OC, _CMD, _EBO, _CA], + [[0, 1], [() => OwnershipControls$, { [_hP]: 1, [_xN]: _OC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasca }]], 2 +]; +export var PutBucketPolicyRequest$ = [3, n0, _PBPR, + 0, + [_B, _Po, _CMD, _CA, _CRSBA, _EBO], + [[0, 1], [0, 16], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [2, { [_hH]: _xacrsba }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutBucketReplicationRequest$ = [3, n0, _PBRR, + 0, + [_B, _RCe, _CMD, _CA, _To, _EBO], + [[0, 1], [() => ReplicationConfiguration$, { [_hP]: 1, [_xN]: _RCe }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xabolt }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutBucketRequestPaymentRequest$ = [3, n0, _PBRPR, + 0, + [_B, _RPC, _CMD, _CA, _EBO], + [[0, 1], [() => RequestPaymentConfiguration$, { [_hP]: 1, [_xN]: _RPC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutBucketTaggingRequest$ = [3, n0, _PBTR, + 0, + [_B, _Tag, _CMD, _CA, _EBO], + [[0, 1], [() => Tagging$, { [_hP]: 1, [_xN]: _Tag }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutBucketVersioningRequest$ = [3, n0, _PBVR, + 0, + [_B, _VC, _CMD, _CA, _MFA, _EBO], + [[0, 1], [() => VersioningConfiguration$, { [_hP]: 1, [_xN]: _VC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xam_ }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutBucketWebsiteRequest$ = [3, n0, _PBWR, + 0, + [_B, _WC, _CMD, _CA, _EBO], + [[0, 1], [() => WebsiteConfiguration$, { [_hP]: 1, [_xN]: _WC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutObjectAclOutput$ = [3, n0, _POAO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +export var PutObjectAclRequest$ = [3, n0, _POAR, + 0, + [_B, _K, _ACL_, _ACP, _CMD, _CA, _GFC, _GR, _GRACP, _GW, _GWACP, _RP, _VI, _EBO], + [[0, 1], [0, 1], [0, { [_hH]: _xaa }], [() => AccessControlPolicy$, { [_hP]: 1, [_xN]: _ACP }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagw }], [0, { [_hH]: _xagwa }], [0, { [_hH]: _xarp }], [0, { [_hQ]: _vI }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutObjectLegalHoldOutput$ = [3, n0, _POLHO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +export var PutObjectLegalHoldRequest$ = [3, n0, _POLHR, + 0, + [_B, _K, _LH, _RP, _VI, _CMD, _CA, _EBO], + [[0, 1], [0, 1], [() => ObjectLockLegalHold$, { [_hP]: 1, [_xN]: _LH }], [0, { [_hH]: _xarp }], [0, { [_hQ]: _vI }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutObjectLockConfigurationOutput$ = [3, n0, _POLCO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +export var PutObjectLockConfigurationRequest$ = [3, n0, _POLCR, + 0, + [_B, _OLC, _RP, _To, _CMD, _CA, _EBO], + [[0, 1], [() => ObjectLockConfiguration$, { [_hP]: 1, [_xN]: _OLC }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xabolt }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 1 +]; +export var PutObjectOutput$ = [3, n0, _POO, + 0, + [_E, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _CT, _SSE, _VI, _SSECA, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _Si, _RC], + [[0, { [_hH]: _xae }], [0, { [_hH]: _ETa }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xact }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xavi }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [1, { [_hH]: _xaos }], [0, { [_hH]: _xarc }]] +]; +export var PutObjectRequest$ = [3, n0, _POR, + 0, + [_B, _K, _ACL_, _Bo, _CC, _CDo, _CEo, _CL, _CLo, _CMD, _CTo, _CA, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _Ex, _IM, _INM, _GFC, _GR, _GRACP, _GWACP, _WOB, _M, _SSE, _SC, _WRL, _SSECA, _SSECK, _SSECKMD, _SSEKMSKI, _SSEKMSEC, _BKE, _RP, _Tag, _OLM, _OLRUD, _OLLHS, _EBO], + [[0, 1], [0, 1], [0, { [_hH]: _xaa }], [() => StreamingBlob, 16], [0, { [_hH]: _CC_ }], [0, { [_hH]: _CD_ }], [0, { [_hH]: _CE_ }], [0, { [_hH]: _CL_ }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _CM }], [0, { [_hH]: _CT_ }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [4, { [_hH]: _Ex }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [0, { [_hH]: _xagfc }], [0, { [_hH]: _xagr }], [0, { [_hH]: _xagra }], [0, { [_hH]: _xagwa }], [1, { [_hH]: _xawob }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasc }], [0, { [_hH]: _xawrl }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [() => SSEKMSEncryptionContext, { [_hH]: _xassec }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xat }], [0, { [_hH]: _xaolm }], [5, { [_hH]: _xaolrud }], [0, { [_hH]: _xaollh }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutObjectRetentionOutput$ = [3, n0, _PORO, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +export var PutObjectRetentionRequest$ = [3, n0, _PORR, + 0, + [_B, _K, _Ret, _RP, _VI, _BGR, _CMD, _CA, _EBO], + [[0, 1], [0, 1], [() => ObjectLockRetention$, { [_hP]: 1, [_xN]: _Ret }], [0, { [_hH]: _xarp }], [0, { [_hQ]: _vI }], [2, { [_hH]: _xabgr }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var PutObjectTaggingOutput$ = [3, n0, _POTO, + 0, + [_VI], + [[0, { [_hH]: _xavi }]] +]; +export var PutObjectTaggingRequest$ = [3, n0, _POTR, + 0, + [_B, _K, _Tag, _VI, _CMD, _CA, _EBO, _RP], + [[0, 1], [0, 1], [() => Tagging$, { [_hP]: 1, [_xN]: _Tag }], [0, { [_hQ]: _vI }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xarp }]], 3 +]; +export var PutPublicAccessBlockRequest$ = [3, n0, _PPABR, + 0, + [_B, _PABC, _CMD, _CA, _EBO], + [[0, 1], [() => PublicAccessBlockConfiguration$, { [_hP]: 1, [_xN]: _PABC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var QueueConfiguration$ = [3, n0, _QCue, + 0, + [_QA, _Ev, _I, _F], + [[0, { [_xN]: _Qu }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => NotificationConfigurationFilter$, 0]], 2 +]; +export var RecordExpiration$ = [3, n0, _REe, + 0, + [_E, _D], + [0, 1], 1 +]; +export var RecordsEvent$ = [3, n0, _REec, + 0, + [_Payl], + [[21, { [_eP]: 1 }]] +]; +export var Redirect$ = [3, n0, _Red, + 0, + [_HN, _HRC, _Pro, _RKPW, _RKW], + [0, 0, 0, 0, 0] +]; +export var RedirectAllRequestsTo$ = [3, n0, _RART, + 0, + [_HN, _Pro], + [0, 0], 1 +]; +export var RenameObjectOutput$ = [3, n0, _ROO, + 0, + [], + [] +]; +export var RenameObjectRequest$ = [3, n0, _ROR, + 0, + [_B, _K, _RSen, _DIM, _DINM, _DIMS, _DIUS, _SIM, _SINM, _SIMS, _SIUS, _CTl], + [[0, 1], [0, 1], [0, { [_hH]: _xars_ }], [0, { [_hH]: _IM_ }], [0, { [_hH]: _INM_ }], [4, { [_hH]: _IMS_ }], [4, { [_hH]: _IUS_ }], [0, { [_hH]: _xarsim }], [0, { [_hH]: _xarsinm }], [6, { [_hH]: _xarsims }], [6, { [_hH]: _xarsius }], [0, { [_hH]: _xact_, [_iT]: 1 }]], 3 +]; +export var ReplicaModifications$ = [3, n0, _RM, + 0, + [_S], + [0], 1 +]; +export var ReplicationConfiguration$ = [3, n0, _RCe, + 0, + [_Ro, _R], + [0, [() => ReplicationRules, { [_xF]: 1, [_xN]: _Ru }]], 2 +]; +export var ReplicationRule$ = [3, n0, _RRe, + 0, + [_S, _Des, _ID, _Pri, _P, _F, _SSC, _EOR, _DMR], + [0, () => Destination$, 0, 1, 0, [() => ReplicationRuleFilter$, 0], () => SourceSelectionCriteria$, () => ExistingObjectReplication$, () => DeleteMarkerReplication$], 2 +]; +export var ReplicationRuleAndOperator$ = [3, n0, _RRAO, + 0, + [_P, _T], + [0, [() => TagSet, { [_xF]: 1, [_xN]: _Ta }]] +]; +export var ReplicationRuleFilter$ = [3, n0, _RRF, + 0, + [_P, _Ta, _An], + [0, () => Tag$, [() => ReplicationRuleAndOperator$, 0]] +]; +export var ReplicationTime$ = [3, n0, _RT, + 0, + [_S, _Tim], + [0, () => ReplicationTimeValue$], 2 +]; +export var ReplicationTimeValue$ = [3, n0, _RTV, + 0, + [_Mi], + [1] +]; +export var RequestPaymentConfiguration$ = [3, n0, _RPC, + 0, + [_Pay], + [0], 1 +]; +export var RequestProgress$ = [3, n0, _RPe, + 0, + [_Ena], + [2] +]; +export var RestoreObjectOutput$ = [3, n0, _ROOe, + 0, + [_RC, _ROP], + [[0, { [_hH]: _xarc }], [0, { [_hH]: _xarop }]] +]; +export var RestoreObjectRequest$ = [3, n0, _RORe, + 0, + [_B, _K, _VI, _RRes, _RP, _CA, _EBO], + [[0, 1], [0, 1], [0, { [_hQ]: _vI }], [() => RestoreRequest$, { [_hP]: 1, [_xN]: _RRes }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var RestoreRequest$ = [3, n0, _RRes, + 0, + [_D, _GJP, _Ty, _Ti, _Desc, _SP, _OL], + [1, () => GlacierJobParameters$, 0, 0, 0, () => SelectParameters$, [() => OutputLocation$, 0]] +]; +export var RestoreStatus$ = [3, n0, _RSe, + 0, + [_IRIP, _RED], + [2, 4] +]; +export var RoutingRule$ = [3, n0, _RRo, + 0, + [_Red, _Co], + [() => Redirect$, () => Condition$], 1 +]; +export var S3KeyFilter$ = [3, n0, _SKF, + 0, + [_FRi], + [[() => FilterRuleList, { [_xF]: 1, [_xN]: _FR }]] +]; +export var S3Location$ = [3, n0, _SL, + 0, + [_BNu, _P, _En, _CACL, _ACL, _Tag, _UM, _SC], + [0, 0, [() => Encryption$, 0], 0, [() => Grants, 0], [() => Tagging$, 0], [() => UserMetadata, 0], 0], 2 +]; +export var S3TablesDestination$ = [3, n0, _STD, + 0, + [_TBA, _TNa], + [0, 0], 2 +]; +export var S3TablesDestinationResult$ = [3, n0, _STDR, + 0, + [_TBA, _TNa, _TA, _TN], + [0, 0, 0, 0], 4 +]; +export var ScanRange$ = [3, n0, _SR, + 0, + [_St, _End], + [1, 1] +]; +export var SelectObjectContentOutput$ = [3, n0, _SOCO, + 0, + [_Payl], + [[() => SelectObjectContentEventStream$, 16]] +]; +export var SelectObjectContentRequest$ = [3, n0, _SOCR, + 0, + [_B, _K, _Exp, _ETx, _IS, _OSu, _SSECA, _SSECK, _SSECKMD, _RPe, _SR, _EBO], + [[0, 1], [0, 1], 0, 0, () => InputSerialization$, () => OutputSerialization$, [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], () => RequestProgress$, () => ScanRange$, [0, { [_hH]: _xaebo }]], 6 +]; +export var SelectParameters$ = [3, n0, _SP, + 0, + [_IS, _ETx, _Exp, _OSu], + [() => InputSerialization$, 0, 0, () => OutputSerialization$], 4 +]; +export var ServerSideEncryptionByDefault$ = [3, n0, _SSEBD, + 0, + [_SSEA, _KMSMKID], + [0, [() => SSEKMSKeyId, 0]], 1 +]; +export var ServerSideEncryptionConfiguration$ = [3, n0, _SSEC, + 0, + [_R], + [[() => ServerSideEncryptionRules, { [_xF]: 1, [_xN]: _Ru }]], 1 +]; +export var ServerSideEncryptionRule$ = [3, n0, _SSER, + 0, + [_ASSEBD, _BKE, _BET], + [[() => ServerSideEncryptionByDefault$, 0], 2, [() => BlockedEncryptionTypes$, 0]] +]; +export var SessionCredentials$ = [3, n0, _SCe, + 0, + [_AKI, _SAK, _ST, _E], + [[0, { [_xN]: _AKI }], [() => SessionCredentialValue, { [_xN]: _SAK }], [() => SessionCredentialValue, { [_xN]: _ST }], [4, { [_xN]: _E }]], 4 +]; +export var SimplePrefix$ = [3, n0, _SPi, + { [_xN]: _SPi }, + [], + [] +]; +export var SourceSelectionCriteria$ = [3, n0, _SSC, + 0, + [_SKEO, _RM], + [() => SseKmsEncryptedObjects$, () => ReplicaModifications$] +]; +export var SSEKMS$ = [3, n0, _SSEKMS, + { [_xN]: _SK }, + [_KI], + [[() => SSEKMSKeyId, 0]], 1 +]; +export var SseKmsEncryptedObjects$ = [3, n0, _SKEO, + 0, + [_S], + [0], 1 +]; +export var SSEKMSEncryption$ = [3, n0, _SSEKMSE, + { [_xN]: _SK }, + [_KMSKA, _BKE], + [[() => NonEmptyKmsKeyArnString, 0], 2], 1 +]; +export var SSES3$ = [3, n0, _SSES, + { [_xN]: _SS }, + [], + [] +]; +export var Stats$ = [3, n0, _Sta, + 0, + [_BS, _BP, _BRy], + [1, 1, 1] +]; +export var StatsEvent$ = [3, n0, _SE, + 0, + [_Det], + [[() => Stats$, { [_eP]: 1 }]] +]; +export var StorageClassAnalysis$ = [3, n0, _SCA, + 0, + [_DE], + [() => StorageClassAnalysisDataExport$] +]; +export var StorageClassAnalysisDataExport$ = [3, n0, _SCADE, + 0, + [_OSV, _Des], + [0, () => AnalyticsExportDestination$], 2 +]; +export var Tag$ = [3, n0, _Ta, + 0, + [_K, _V], + [0, 0], 2 +]; +export var Tagging$ = [3, n0, _Tag, + 0, + [_TS], + [[() => TagSet, 0]], 1 +]; +export var TargetGrant$ = [3, n0, _TGa, + 0, + [_Gra, _Pe], + [[() => Grantee$, { [_xNm]: [_x, _hi] }], 0] +]; +export var TargetObjectKeyFormat$ = [3, n0, _TOKF, + 0, + [_SPi, _PP], + [[() => SimplePrefix$, { [_xN]: _SPi }], [() => PartitionedPrefix$, { [_xN]: _PP }]] +]; +export var Tiering$ = [3, n0, _Tier, + 0, + [_D, _AT], + [1, 0], 2 +]; +export var TopicConfiguration$ = [3, n0, _TCop, + 0, + [_TAo, _Ev, _I, _F], + [[0, { [_xN]: _Top }], [64 | 0, { [_xF]: 1, [_xN]: _Eve }], 0, [() => NotificationConfigurationFilter$, 0]], 2 +]; +export var Transition$ = [3, n0, _Tra, + 0, + [_Da, _D, _SC], + [5, 1, 0] +]; +export var UpdateBucketMetadataInventoryTableConfigurationRequest$ = [3, n0, _UBMITCR, + 0, + [_B, _ITCn, _CMD, _CA, _EBO], + [[0, 1], [() => InventoryTableConfigurationUpdates$, { [_hP]: 1, [_xN]: _ITCn }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var UpdateBucketMetadataJournalTableConfigurationRequest$ = [3, n0, _UBMJTCR, + 0, + [_B, _JTC, _CMD, _CA, _EBO], + [[0, 1], [() => JournalTableConfigurationUpdates$, { [_hP]: 1, [_xN]: _JTC }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xaebo }]], 2 +]; +export var UpdateObjectEncryptionRequest$ = [3, n0, _UOER, + 0, + [_B, _K, _OE, _VI, _RP, _EBO, _CMD, _CA], + [[0, 1], [0, 1], [() => ObjectEncryption$, 16], [0, { [_hQ]: _vI }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }]], 3 +]; +export var UpdateObjectEncryptionResponse$ = [3, n0, _UOERp, + 0, + [_RC], + [[0, { [_hH]: _xarc }]] +]; +export var UploadPartCopyOutput$ = [3, n0, _UPCO, + 0, + [_CSVI, _CPR, _SSE, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _RC], + [[0, { [_hH]: _xacsvi }], [() => CopyPartResult$, 16], [0, { [_hH]: _xasse }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]] +]; +export var UploadPartCopyRequest$ = [3, n0, _UPCR, + 0, + [_B, _CS, _K, _PN, _UI, _CSIM, _CSIMS, _CSINM, _CSIUS, _CSRo, _SSECA, _SSECK, _SSECKMD, _CSSSECA, _CSSSECK, _CSSSECKMD, _RP, _EBO, _ESBO], + [[0, 1], [0, { [_hH]: _xacs__ }], [0, 1], [1, { [_hQ]: _pN }], [0, { [_hQ]: _uI }], [0, { [_hH]: _xacsim }], [4, { [_hH]: _xacsims }], [0, { [_hH]: _xacsinm }], [4, { [_hH]: _xacsius }], [0, { [_hH]: _xacsr }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xacssseca }], [() => CopySourceSSECustomerKey, { [_hH]: _xacssseck }], [0, { [_hH]: _xacssseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }], [0, { [_hH]: _xasebo }]], 5 +]; +export var UploadPartOutput$ = [3, n0, _UPO, + 0, + [_SSE, _ETa, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _SSECA, _SSECKMD, _SSEKMSKI, _BKE, _RC], + [[0, { [_hH]: _xasse }], [0, { [_hH]: _ETa }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xasseca }], [0, { [_hH]: _xasseckM }], [() => SSEKMSKeyId, { [_hH]: _xasseakki }], [2, { [_hH]: _xassebke }], [0, { [_hH]: _xarc }]] +]; +export var UploadPartRequest$ = [3, n0, _UPR, + 0, + [_B, _K, _PN, _UI, _Bo, _CLo, _CMD, _CA, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _SSECA, _SSECK, _SSECKMD, _RP, _EBO], + [[0, 1], [0, 1], [1, { [_hQ]: _pN }], [0, { [_hQ]: _uI }], [() => StreamingBlob, 16], [1, { [_hH]: _CL__ }], [0, { [_hH]: _CM }], [0, { [_hH]: _xasca }], [0, { [_hH]: _xacc }], [0, { [_hH]: _xacc_ }], [0, { [_hH]: _xacc__ }], [0, { [_hH]: _xacs }], [0, { [_hH]: _xacs_ }], [0, { [_hH]: _xasseca }], [() => SSECustomerKey, { [_hH]: _xasseck }], [0, { [_hH]: _xasseckM }], [0, { [_hH]: _xarp }], [0, { [_hH]: _xaebo }]], 4 +]; +export var VersioningConfiguration$ = [3, n0, _VC, + 0, + [_MFAD, _S], + [[0, { [_xN]: _MDf }], 0] +]; +export var WebsiteConfiguration$ = [3, n0, _WC, + 0, + [_EDr, _IDn, _RART, _RR], + [() => ErrorDocument$, () => IndexDocument$, () => RedirectAllRequestsTo$, [() => RoutingRules, 0]] +]; +export var WriteGetObjectResponseRequest$ = [3, n0, _WGORR, + 0, + [_RReq, _RTe, _Bo, _SCt, _ECr, _EM, _AR, _CC, _CDo, _CEo, _CL, _CLo, _CR, _CTo, _CCRC, _CCRCC, _CCRCNVME, _CSHA, _CSHAh, _DM, _ETa, _Ex, _E, _LM, _MM, _M, _OLM, _OLLHS, _OLRUD, _PC, _RS, _RC, _Re, _SSE, _SSECA, _SSEKMSKI, _SSECKMD, _SC, _TC, _VI, _BKE], + [[0, { [_hL]: 1, [_hH]: _xarr }], [0, { [_hH]: _xart }], [() => StreamingBlob, 16], [1, { [_hH]: _xafs }], [0, { [_hH]: _xafec }], [0, { [_hH]: _xafem }], [0, { [_hH]: _xafhar }], [0, { [_hH]: _xafhCC }], [0, { [_hH]: _xafhCD }], [0, { [_hH]: _xafhCE }], [0, { [_hH]: _xafhCL }], [1, { [_hH]: _CL__ }], [0, { [_hH]: _xafhCR }], [0, { [_hH]: _xafhCT }], [0, { [_hH]: _xafhxacc }], [0, { [_hH]: _xafhxacc_ }], [0, { [_hH]: _xafhxacc__ }], [0, { [_hH]: _xafhxacs }], [0, { [_hH]: _xafhxacs_ }], [2, { [_hH]: _xafhxadm }], [0, { [_hH]: _xafhE }], [4, { [_hH]: _xafhE_ }], [0, { [_hH]: _xafhxae }], [4, { [_hH]: _xafhLM }], [1, { [_hH]: _xafhxamm }], [128 | 0, { [_hPH]: _xam }], [0, { [_hH]: _xafhxaolm }], [0, { [_hH]: _xafhxaollh }], [5, { [_hH]: _xafhxaolrud }], [1, { [_hH]: _xafhxampc }], [0, { [_hH]: _xafhxars }], [0, { [_hH]: _xafhxarc }], [0, { [_hH]: _xafhxar }], [0, { [_hH]: _xafhxasse }], [0, { [_hH]: _xafhxasseca }], [() => SSEKMSKeyId, { [_hH]: _xafhxasseakki }], [0, { [_hH]: _xafhxasseckM }], [0, { [_hH]: _xafhxasc }], [1, { [_hH]: _xafhxatc }], [0, { [_hH]: _xafhxavi }], [2, { [_hH]: _xafhxassebke }]], 2 +]; +var __Unit = "unit"; +var AllowedHeaders = 64 | 0; +var AllowedMethods = 64 | 0; +var AllowedOrigins = 64 | 0; +var AnalyticsConfigurationList = [1, n0, _ACLn, + 0, [() => AnalyticsConfiguration$, + 0] +]; +var Buckets = [1, n0, _Bu, + 0, [() => Bucket$, + { [_xN]: _B }] +]; +var ChecksumAlgorithmList = 64 | 0; +var CommonPrefixList = [1, n0, _CPL, + 0, () => CommonPrefix$ +]; +var CompletedPartList = [1, n0, _CPLo, + 0, () => CompletedPart$ +]; +var CORSRules = [1, n0, _CORSR, + 0, [() => CORSRule$, + 0] +]; +var DeletedObjects = [1, n0, _DOe, + 0, () => DeletedObject$ +]; +var DeleteMarkers = [1, n0, _DMe, + 0, () => DeleteMarkerEntry$ +]; +var EncryptionTypeList = [1, n0, _ETL, + 0, [0, + { [_xN]: _ET }] +]; +var Errors = [1, n0, _Er, + 0, () => _Error$ +]; +var EventList = 64 | 0; +var ExposeHeaders = 64 | 0; +var FilterRuleList = [1, n0, _FRL, + 0, () => FilterRule$ +]; +var Grants = [1, n0, _G, + 0, [() => Grant$, + { [_xN]: _Gr }] +]; +var IntelligentTieringConfigurationList = [1, n0, _ITCL, + 0, [() => IntelligentTieringConfiguration$, + 0] +]; +var InventoryConfigurationList = [1, n0, _ICL, + 0, [() => InventoryConfiguration$, + 0] +]; +var InventoryOptionalFields = [1, n0, _IOF, + 0, [0, + { [_xN]: _Fi }] +]; +var LambdaFunctionConfigurationList = [1, n0, _LFCL, + 0, [() => LambdaFunctionConfiguration$, + 0] +]; +var LifecycleRules = [1, n0, _LRi, + 0, [() => LifecycleRule$, + 0] +]; +var MetricsConfigurationList = [1, n0, _MCL, + 0, [() => MetricsConfiguration$, + 0] +]; +var MultipartUploadList = [1, n0, _MUL, + 0, () => MultipartUpload$ +]; +var NoncurrentVersionTransitionList = [1, n0, _NVTL, + 0, () => NoncurrentVersionTransition$ +]; +var ObjectAttributesList = 64 | 0; +var ObjectIdentifierList = [1, n0, _OIL, + 0, () => ObjectIdentifier$ +]; +var ObjectList = [1, n0, _OLb, + 0, [() => _Object$, + 0] +]; +var ObjectVersionList = [1, n0, _OVL, + 0, [() => ObjectVersion$, + 0] +]; +var OptionalObjectAttributesList = 64 | 0; +var OwnershipControlsRules = [1, n0, _OCRw, + 0, () => OwnershipControlsRule$ +]; +var Parts = [1, n0, _Pa, + 0, () => Part$ +]; +var PartsList = [1, n0, _PL, + 0, () => ObjectPart$ +]; +var QueueConfigurationList = [1, n0, _QCL, + 0, [() => QueueConfiguration$, + 0] +]; +var ReplicationRules = [1, n0, _RRep, + 0, [() => ReplicationRule$, + 0] +]; +var RoutingRules = [1, n0, _RR, + 0, [() => RoutingRule$, + { [_xN]: _RRo }] +]; +var ServerSideEncryptionRules = [1, n0, _SSERe, + 0, [() => ServerSideEncryptionRule$, + 0] +]; +var TagSet = [1, n0, _TS, + 0, [() => Tag$, + { [_xN]: _Ta }] +]; +var TargetGrants = [1, n0, _TG, + 0, [() => TargetGrant$, + { [_xN]: _Gr }] +]; +var TieringList = [1, n0, _TL, + 0, () => Tiering$ +]; +var TopicConfigurationList = [1, n0, _TCL, + 0, [() => TopicConfiguration$, + 0] +]; +var TransitionList = [1, n0, _TLr, + 0, () => Transition$ +]; +var UserMetadata = [1, n0, _UM, + 0, [() => MetadataEntry$, + { [_xN]: _ME }] +]; +var Metadata = 128 | 0; +export var AnalyticsFilter$ = [4, n0, _AF, + 0, + [_P, _Ta, _An], + [0, () => Tag$, [() => AnalyticsAndOperator$, 0]] +]; +export var MetricsFilter$ = [4, n0, _MF, + 0, + [_P, _Ta, _APAc, _An], + [0, () => Tag$, 0, [() => MetricsAndOperator$, 0]] +]; +export var ObjectEncryption$ = [4, n0, _OE, + 0, + [_SSEKMS], + [[() => SSEKMSEncryption$, { [_xN]: _SK }]] +]; +export var SelectObjectContentEventStream$ = [4, n0, _SOCES, + { [_st]: 1 }, + [_Rec, _Sta, _Pr, _Cont, _End], + [[() => RecordsEvent$, 0], [() => StatsEvent$, 0], [() => ProgressEvent$, 0], () => ContinuationEvent$, () => EndEvent$] +]; +export var AbortMultipartUpload$ = [9, n0, _AMU, + { [_h]: ["DELETE", "/{Key+}?x-id=AbortMultipartUpload", 204] }, () => AbortMultipartUploadRequest$, () => AbortMultipartUploadOutput$ +]; +export var CompleteMultipartUpload$ = [9, n0, _CMUo, + { [_h]: ["POST", "/{Key+}", 200] }, () => CompleteMultipartUploadRequest$, () => CompleteMultipartUploadOutput$ +]; +export var CopyObject$ = [9, n0, _CO, + { [_h]: ["PUT", "/{Key+}?x-id=CopyObject", 200] }, () => CopyObjectRequest$, () => CopyObjectOutput$ +]; +export var CreateBucket$ = [9, n0, _CB, + { [_h]: ["PUT", "/", 200] }, () => CreateBucketRequest$, () => CreateBucketOutput$ +]; +export var CreateBucketMetadataConfiguration$ = [9, n0, _CBMC, + { [_hC]: "-", [_h]: ["POST", "/?metadataConfiguration", 200] }, () => CreateBucketMetadataConfigurationRequest$, () => __Unit +]; +export var CreateBucketMetadataTableConfiguration$ = [9, n0, _CBMTC, + { [_hC]: "-", [_h]: ["POST", "/?metadataTable", 200] }, () => CreateBucketMetadataTableConfigurationRequest$, () => __Unit +]; +export var CreateMultipartUpload$ = [9, n0, _CMUr, + { [_h]: ["POST", "/{Key+}?uploads", 200] }, () => CreateMultipartUploadRequest$, () => CreateMultipartUploadOutput$ +]; +export var CreateSession$ = [9, n0, _CSr, + { [_h]: ["GET", "/?session", 200] }, () => CreateSessionRequest$, () => CreateSessionOutput$ +]; +export var DeleteBucket$ = [9, n0, _DB, + { [_h]: ["DELETE", "/", 204] }, () => DeleteBucketRequest$, () => __Unit +]; +export var DeleteBucketAnalyticsConfiguration$ = [9, n0, _DBAC, + { [_h]: ["DELETE", "/?analytics", 204] }, () => DeleteBucketAnalyticsConfigurationRequest$, () => __Unit +]; +export var DeleteBucketCors$ = [9, n0, _DBC, + { [_h]: ["DELETE", "/?cors", 204] }, () => DeleteBucketCorsRequest$, () => __Unit +]; +export var DeleteBucketEncryption$ = [9, n0, _DBE, + { [_h]: ["DELETE", "/?encryption", 204] }, () => DeleteBucketEncryptionRequest$, () => __Unit +]; +export var DeleteBucketIntelligentTieringConfiguration$ = [9, n0, _DBITC, + { [_h]: ["DELETE", "/?intelligent-tiering", 204] }, () => DeleteBucketIntelligentTieringConfigurationRequest$, () => __Unit +]; +export var DeleteBucketInventoryConfiguration$ = [9, n0, _DBIC, + { [_h]: ["DELETE", "/?inventory", 204] }, () => DeleteBucketInventoryConfigurationRequest$, () => __Unit +]; +export var DeleteBucketLifecycle$ = [9, n0, _DBL, + { [_h]: ["DELETE", "/?lifecycle", 204] }, () => DeleteBucketLifecycleRequest$, () => __Unit +]; +export var DeleteBucketMetadataConfiguration$ = [9, n0, _DBMC, + { [_h]: ["DELETE", "/?metadataConfiguration", 204] }, () => DeleteBucketMetadataConfigurationRequest$, () => __Unit +]; +export var DeleteBucketMetadataTableConfiguration$ = [9, n0, _DBMTC, + { [_h]: ["DELETE", "/?metadataTable", 204] }, () => DeleteBucketMetadataTableConfigurationRequest$, () => __Unit +]; +export var DeleteBucketMetricsConfiguration$ = [9, n0, _DBMCe, + { [_h]: ["DELETE", "/?metrics", 204] }, () => DeleteBucketMetricsConfigurationRequest$, () => __Unit +]; +export var DeleteBucketOwnershipControls$ = [9, n0, _DBOC, + { [_h]: ["DELETE", "/?ownershipControls", 204] }, () => DeleteBucketOwnershipControlsRequest$, () => __Unit +]; +export var DeleteBucketPolicy$ = [9, n0, _DBP, + { [_h]: ["DELETE", "/?policy", 204] }, () => DeleteBucketPolicyRequest$, () => __Unit +]; +export var DeleteBucketReplication$ = [9, n0, _DBRe, + { [_h]: ["DELETE", "/?replication", 204] }, () => DeleteBucketReplicationRequest$, () => __Unit +]; +export var DeleteBucketTagging$ = [9, n0, _DBT, + { [_h]: ["DELETE", "/?tagging", 204] }, () => DeleteBucketTaggingRequest$, () => __Unit +]; +export var DeleteBucketWebsite$ = [9, n0, _DBW, + { [_h]: ["DELETE", "/?website", 204] }, () => DeleteBucketWebsiteRequest$, () => __Unit +]; +export var DeleteObject$ = [9, n0, _DOel, + { [_h]: ["DELETE", "/{Key+}?x-id=DeleteObject", 204] }, () => DeleteObjectRequest$, () => DeleteObjectOutput$ +]; +export var DeleteObjects$ = [9, n0, _DOele, + { [_hC]: "-", [_h]: ["POST", "/?delete", 200] }, () => DeleteObjectsRequest$, () => DeleteObjectsOutput$ +]; +export var DeleteObjectTagging$ = [9, n0, _DOT, + { [_h]: ["DELETE", "/{Key+}?tagging", 204] }, () => DeleteObjectTaggingRequest$, () => DeleteObjectTaggingOutput$ +]; +export var DeletePublicAccessBlock$ = [9, n0, _DPAB, + { [_h]: ["DELETE", "/?publicAccessBlock", 204] }, () => DeletePublicAccessBlockRequest$, () => __Unit +]; +export var GetBucketAbac$ = [9, n0, _GBA, + { [_h]: ["GET", "/?abac", 200] }, () => GetBucketAbacRequest$, () => GetBucketAbacOutput$ +]; +export var GetBucketAccelerateConfiguration$ = [9, n0, _GBAC, + { [_h]: ["GET", "/?accelerate", 200] }, () => GetBucketAccelerateConfigurationRequest$, () => GetBucketAccelerateConfigurationOutput$ +]; +export var GetBucketAcl$ = [9, n0, _GBAe, + { [_h]: ["GET", "/?acl", 200] }, () => GetBucketAclRequest$, () => GetBucketAclOutput$ +]; +export var GetBucketAnalyticsConfiguration$ = [9, n0, _GBACe, + { [_h]: ["GET", "/?analytics&x-id=GetBucketAnalyticsConfiguration", 200] }, () => GetBucketAnalyticsConfigurationRequest$, () => GetBucketAnalyticsConfigurationOutput$ +]; +export var GetBucketCors$ = [9, n0, _GBC, + { [_h]: ["GET", "/?cors", 200] }, () => GetBucketCorsRequest$, () => GetBucketCorsOutput$ +]; +export var GetBucketEncryption$ = [9, n0, _GBE, + { [_h]: ["GET", "/?encryption", 200] }, () => GetBucketEncryptionRequest$, () => GetBucketEncryptionOutput$ +]; +export var GetBucketIntelligentTieringConfiguration$ = [9, n0, _GBITC, + { [_h]: ["GET", "/?intelligent-tiering&x-id=GetBucketIntelligentTieringConfiguration", 200] }, () => GetBucketIntelligentTieringConfigurationRequest$, () => GetBucketIntelligentTieringConfigurationOutput$ +]; +export var GetBucketInventoryConfiguration$ = [9, n0, _GBIC, + { [_h]: ["GET", "/?inventory&x-id=GetBucketInventoryConfiguration", 200] }, () => GetBucketInventoryConfigurationRequest$, () => GetBucketInventoryConfigurationOutput$ +]; +export var GetBucketLifecycleConfiguration$ = [9, n0, _GBLC, + { [_h]: ["GET", "/?lifecycle", 200] }, () => GetBucketLifecycleConfigurationRequest$, () => GetBucketLifecycleConfigurationOutput$ +]; +export var GetBucketLocation$ = [9, n0, _GBL, + { [_h]: ["GET", "/?location", 200] }, () => GetBucketLocationRequest$, () => GetBucketLocationOutput$ +]; +export var GetBucketLogging$ = [9, n0, _GBLe, + { [_h]: ["GET", "/?logging", 200] }, () => GetBucketLoggingRequest$, () => GetBucketLoggingOutput$ +]; +export var GetBucketMetadataConfiguration$ = [9, n0, _GBMC, + { [_h]: ["GET", "/?metadataConfiguration", 200] }, () => GetBucketMetadataConfigurationRequest$, () => GetBucketMetadataConfigurationOutput$ +]; +export var GetBucketMetadataTableConfiguration$ = [9, n0, _GBMTC, + { [_h]: ["GET", "/?metadataTable", 200] }, () => GetBucketMetadataTableConfigurationRequest$, () => GetBucketMetadataTableConfigurationOutput$ +]; +export var GetBucketMetricsConfiguration$ = [9, n0, _GBMCe, + { [_h]: ["GET", "/?metrics&x-id=GetBucketMetricsConfiguration", 200] }, () => GetBucketMetricsConfigurationRequest$, () => GetBucketMetricsConfigurationOutput$ +]; +export var GetBucketNotificationConfiguration$ = [9, n0, _GBNC, + { [_h]: ["GET", "/?notification", 200] }, () => GetBucketNotificationConfigurationRequest$, () => NotificationConfiguration$ +]; +export var GetBucketOwnershipControls$ = [9, n0, _GBOC, + { [_h]: ["GET", "/?ownershipControls", 200] }, () => GetBucketOwnershipControlsRequest$, () => GetBucketOwnershipControlsOutput$ +]; +export var GetBucketPolicy$ = [9, n0, _GBP, + { [_h]: ["GET", "/?policy", 200] }, () => GetBucketPolicyRequest$, () => GetBucketPolicyOutput$ +]; +export var GetBucketPolicyStatus$ = [9, n0, _GBPS, + { [_h]: ["GET", "/?policyStatus", 200] }, () => GetBucketPolicyStatusRequest$, () => GetBucketPolicyStatusOutput$ +]; +export var GetBucketReplication$ = [9, n0, _GBR, + { [_h]: ["GET", "/?replication", 200] }, () => GetBucketReplicationRequest$, () => GetBucketReplicationOutput$ +]; +export var GetBucketRequestPayment$ = [9, n0, _GBRP, + { [_h]: ["GET", "/?requestPayment", 200] }, () => GetBucketRequestPaymentRequest$, () => GetBucketRequestPaymentOutput$ +]; +export var GetBucketTagging$ = [9, n0, _GBT, + { [_h]: ["GET", "/?tagging", 200] }, () => GetBucketTaggingRequest$, () => GetBucketTaggingOutput$ +]; +export var GetBucketVersioning$ = [9, n0, _GBV, + { [_h]: ["GET", "/?versioning", 200] }, () => GetBucketVersioningRequest$, () => GetBucketVersioningOutput$ +]; +export var GetBucketWebsite$ = [9, n0, _GBW, + { [_h]: ["GET", "/?website", 200] }, () => GetBucketWebsiteRequest$, () => GetBucketWebsiteOutput$ +]; +export var GetObject$ = [9, n0, _GO, + { [_hC]: "-", [_h]: ["GET", "/{Key+}?x-id=GetObject", 200] }, () => GetObjectRequest$, () => GetObjectOutput$ +]; +export var GetObjectAcl$ = [9, n0, _GOA, + { [_h]: ["GET", "/{Key+}?acl", 200] }, () => GetObjectAclRequest$, () => GetObjectAclOutput$ +]; +export var GetObjectAttributes$ = [9, n0, _GOAe, + { [_h]: ["GET", "/{Key+}?attributes", 200] }, () => GetObjectAttributesRequest$, () => GetObjectAttributesOutput$ +]; +export var GetObjectLegalHold$ = [9, n0, _GOLH, + { [_h]: ["GET", "/{Key+}?legal-hold", 200] }, () => GetObjectLegalHoldRequest$, () => GetObjectLegalHoldOutput$ +]; +export var GetObjectLockConfiguration$ = [9, n0, _GOLC, + { [_h]: ["GET", "/?object-lock", 200] }, () => GetObjectLockConfigurationRequest$, () => GetObjectLockConfigurationOutput$ +]; +export var GetObjectRetention$ = [9, n0, _GORe, + { [_h]: ["GET", "/{Key+}?retention", 200] }, () => GetObjectRetentionRequest$, () => GetObjectRetentionOutput$ +]; +export var GetObjectTagging$ = [9, n0, _GOT, + { [_h]: ["GET", "/{Key+}?tagging", 200] }, () => GetObjectTaggingRequest$, () => GetObjectTaggingOutput$ +]; +export var GetObjectTorrent$ = [9, n0, _GOTe, + { [_h]: ["GET", "/{Key+}?torrent", 200] }, () => GetObjectTorrentRequest$, () => GetObjectTorrentOutput$ +]; +export var GetPublicAccessBlock$ = [9, n0, _GPAB, + { [_h]: ["GET", "/?publicAccessBlock", 200] }, () => GetPublicAccessBlockRequest$, () => GetPublicAccessBlockOutput$ +]; +export var HeadBucket$ = [9, n0, _HB, + { [_h]: ["HEAD", "/", 200] }, () => HeadBucketRequest$, () => HeadBucketOutput$ +]; +export var HeadObject$ = [9, n0, _HO, + { [_h]: ["HEAD", "/{Key+}", 200] }, () => HeadObjectRequest$, () => HeadObjectOutput$ +]; +export var ListBucketAnalyticsConfigurations$ = [9, n0, _LBAC, + { [_h]: ["GET", "/?analytics&x-id=ListBucketAnalyticsConfigurations", 200] }, () => ListBucketAnalyticsConfigurationsRequest$, () => ListBucketAnalyticsConfigurationsOutput$ +]; +export var ListBucketIntelligentTieringConfigurations$ = [9, n0, _LBITC, + { [_h]: ["GET", "/?intelligent-tiering&x-id=ListBucketIntelligentTieringConfigurations", 200] }, () => ListBucketIntelligentTieringConfigurationsRequest$, () => ListBucketIntelligentTieringConfigurationsOutput$ +]; +export var ListBucketInventoryConfigurations$ = [9, n0, _LBIC, + { [_h]: ["GET", "/?inventory&x-id=ListBucketInventoryConfigurations", 200] }, () => ListBucketInventoryConfigurationsRequest$, () => ListBucketInventoryConfigurationsOutput$ +]; +export var ListBucketMetricsConfigurations$ = [9, n0, _LBMC, + { [_h]: ["GET", "/?metrics&x-id=ListBucketMetricsConfigurations", 200] }, () => ListBucketMetricsConfigurationsRequest$, () => ListBucketMetricsConfigurationsOutput$ +]; +export var ListBuckets$ = [9, n0, _LB, + { [_h]: ["GET", "/?x-id=ListBuckets", 200] }, () => ListBucketsRequest$, () => ListBucketsOutput$ +]; +export var ListDirectoryBuckets$ = [9, n0, _LDB, + { [_h]: ["GET", "/?x-id=ListDirectoryBuckets", 200] }, () => ListDirectoryBucketsRequest$, () => ListDirectoryBucketsOutput$ +]; +export var ListMultipartUploads$ = [9, n0, _LMU, + { [_h]: ["GET", "/?uploads", 200] }, () => ListMultipartUploadsRequest$, () => ListMultipartUploadsOutput$ +]; +export var ListObjects$ = [9, n0, _LO, + { [_h]: ["GET", "/", 200] }, () => ListObjectsRequest$, () => ListObjectsOutput$ +]; +export var ListObjectsV2$ = [9, n0, _LOV, + { [_h]: ["GET", "/?list-type=2", 200] }, () => ListObjectsV2Request$, () => ListObjectsV2Output$ +]; +export var ListObjectVersions$ = [9, n0, _LOVi, + { [_h]: ["GET", "/?versions", 200] }, () => ListObjectVersionsRequest$, () => ListObjectVersionsOutput$ +]; +export var ListParts$ = [9, n0, _LP, + { [_h]: ["GET", "/{Key+}?x-id=ListParts", 200] }, () => ListPartsRequest$, () => ListPartsOutput$ +]; +export var PutBucketAbac$ = [9, n0, _PBA, + { [_hC]: "-", [_h]: ["PUT", "/?abac", 200] }, () => PutBucketAbacRequest$, () => __Unit +]; +export var PutBucketAccelerateConfiguration$ = [9, n0, _PBAC, + { [_hC]: "-", [_h]: ["PUT", "/?accelerate", 200] }, () => PutBucketAccelerateConfigurationRequest$, () => __Unit +]; +export var PutBucketAcl$ = [9, n0, _PBAu, + { [_hC]: "-", [_h]: ["PUT", "/?acl", 200] }, () => PutBucketAclRequest$, () => __Unit +]; +export var PutBucketAnalyticsConfiguration$ = [9, n0, _PBACu, + { [_h]: ["PUT", "/?analytics", 200] }, () => PutBucketAnalyticsConfigurationRequest$, () => __Unit +]; +export var PutBucketCors$ = [9, n0, _PBC, + { [_hC]: "-", [_h]: ["PUT", "/?cors", 200] }, () => PutBucketCorsRequest$, () => __Unit +]; +export var PutBucketEncryption$ = [9, n0, _PBE, + { [_hC]: "-", [_h]: ["PUT", "/?encryption", 200] }, () => PutBucketEncryptionRequest$, () => __Unit +]; +export var PutBucketIntelligentTieringConfiguration$ = [9, n0, _PBITC, + { [_h]: ["PUT", "/?intelligent-tiering", 200] }, () => PutBucketIntelligentTieringConfigurationRequest$, () => __Unit +]; +export var PutBucketInventoryConfiguration$ = [9, n0, _PBIC, + { [_h]: ["PUT", "/?inventory", 200] }, () => PutBucketInventoryConfigurationRequest$, () => __Unit +]; +export var PutBucketLifecycleConfiguration$ = [9, n0, _PBLC, + { [_hC]: "-", [_h]: ["PUT", "/?lifecycle", 200] }, () => PutBucketLifecycleConfigurationRequest$, () => PutBucketLifecycleConfigurationOutput$ +]; +export var PutBucketLogging$ = [9, n0, _PBL, + { [_hC]: "-", [_h]: ["PUT", "/?logging", 200] }, () => PutBucketLoggingRequest$, () => __Unit +]; +export var PutBucketMetricsConfiguration$ = [9, n0, _PBMC, + { [_h]: ["PUT", "/?metrics", 200] }, () => PutBucketMetricsConfigurationRequest$, () => __Unit +]; +export var PutBucketNotificationConfiguration$ = [9, n0, _PBNC, + { [_h]: ["PUT", "/?notification", 200] }, () => PutBucketNotificationConfigurationRequest$, () => __Unit +]; +export var PutBucketOwnershipControls$ = [9, n0, _PBOC, + { [_hC]: "-", [_h]: ["PUT", "/?ownershipControls", 200] }, () => PutBucketOwnershipControlsRequest$, () => __Unit +]; +export var PutBucketPolicy$ = [9, n0, _PBP, + { [_hC]: "-", [_h]: ["PUT", "/?policy", 200] }, () => PutBucketPolicyRequest$, () => __Unit +]; +export var PutBucketReplication$ = [9, n0, _PBR, + { [_hC]: "-", [_h]: ["PUT", "/?replication", 200] }, () => PutBucketReplicationRequest$, () => __Unit +]; +export var PutBucketRequestPayment$ = [9, n0, _PBRP, + { [_hC]: "-", [_h]: ["PUT", "/?requestPayment", 200] }, () => PutBucketRequestPaymentRequest$, () => __Unit +]; +export var PutBucketTagging$ = [9, n0, _PBT, + { [_hC]: "-", [_h]: ["PUT", "/?tagging", 200] }, () => PutBucketTaggingRequest$, () => __Unit +]; +export var PutBucketVersioning$ = [9, n0, _PBV, + { [_hC]: "-", [_h]: ["PUT", "/?versioning", 200] }, () => PutBucketVersioningRequest$, () => __Unit +]; +export var PutBucketWebsite$ = [9, n0, _PBW, + { [_hC]: "-", [_h]: ["PUT", "/?website", 200] }, () => PutBucketWebsiteRequest$, () => __Unit +]; +export var PutObject$ = [9, n0, _PO, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?x-id=PutObject", 200] }, () => PutObjectRequest$, () => PutObjectOutput$ +]; +export var PutObjectAcl$ = [9, n0, _POA, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?acl", 200] }, () => PutObjectAclRequest$, () => PutObjectAclOutput$ +]; +export var PutObjectLegalHold$ = [9, n0, _POLH, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?legal-hold", 200] }, () => PutObjectLegalHoldRequest$, () => PutObjectLegalHoldOutput$ +]; +export var PutObjectLockConfiguration$ = [9, n0, _POLC, + { [_hC]: "-", [_h]: ["PUT", "/?object-lock", 200] }, () => PutObjectLockConfigurationRequest$, () => PutObjectLockConfigurationOutput$ +]; +export var PutObjectRetention$ = [9, n0, _PORu, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?retention", 200] }, () => PutObjectRetentionRequest$, () => PutObjectRetentionOutput$ +]; +export var PutObjectTagging$ = [9, n0, _POT, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?tagging", 200] }, () => PutObjectTaggingRequest$, () => PutObjectTaggingOutput$ +]; +export var PutPublicAccessBlock$ = [9, n0, _PPAB, + { [_hC]: "-", [_h]: ["PUT", "/?publicAccessBlock", 200] }, () => PutPublicAccessBlockRequest$, () => __Unit +]; +export var RenameObject$ = [9, n0, _RO, + { [_h]: ["PUT", "/{Key+}?renameObject", 200] }, () => RenameObjectRequest$, () => RenameObjectOutput$ +]; +export var RestoreObject$ = [9, n0, _ROe, + { [_hC]: "-", [_h]: ["POST", "/{Key+}?restore", 200] }, () => RestoreObjectRequest$, () => RestoreObjectOutput$ +]; +export var SelectObjectContent$ = [9, n0, _SOC, + { [_h]: ["POST", "/{Key+}?select&select-type=2", 200] }, () => SelectObjectContentRequest$, () => SelectObjectContentOutput$ +]; +export var UpdateBucketMetadataInventoryTableConfiguration$ = [9, n0, _UBMITC, + { [_hC]: "-", [_h]: ["PUT", "/?metadataInventoryTable", 200] }, () => UpdateBucketMetadataInventoryTableConfigurationRequest$, () => __Unit +]; +export var UpdateBucketMetadataJournalTableConfiguration$ = [9, n0, _UBMJTC, + { [_hC]: "-", [_h]: ["PUT", "/?metadataJournalTable", 200] }, () => UpdateBucketMetadataJournalTableConfigurationRequest$, () => __Unit +]; +export var UpdateObjectEncryption$ = [9, n0, _UOE, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?encryption", 200] }, () => UpdateObjectEncryptionRequest$, () => UpdateObjectEncryptionResponse$ +]; +export var UploadPart$ = [9, n0, _UP, + { [_hC]: "-", [_h]: ["PUT", "/{Key+}?x-id=UploadPart", 200] }, () => UploadPartRequest$, () => UploadPartOutput$ +]; +export var UploadPartCopy$ = [9, n0, _UPC, + { [_h]: ["PUT", "/{Key+}?x-id=UploadPartCopy", 200] }, () => UploadPartCopyRequest$, () => UploadPartCopyOutput$ +]; +export var WriteGetObjectResponse$ = [9, n0, _WGOR, + { [_en]: ["{RequestRoute}."], [_h]: ["POST", "/WriteGetObjectResponse", 200] }, () => WriteGetObjectResponseRequest$, () => __Unit +]; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/index.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/index.js new file mode 100644 index 0000000..a139674 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/index.js @@ -0,0 +1,4 @@ +export * from "./waitForBucketExists"; +export * from "./waitForBucketNotExists"; +export * from "./waitForObjectExists"; +export * from "./waitForObjectNotExists"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForBucketExists.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForBucketExists.js new file mode 100644 index 0000000..1492294 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForBucketExists.js @@ -0,0 +1,26 @@ +import { checkExceptions, createWaiter, WaiterState, } from "@smithy/util-waiter"; +import { HeadBucketCommand } from "../commands/HeadBucketCommand"; +const checkState = async (client, input) => { + let reason; + try { + let result = await client.send(new HeadBucketCommand(input)); + reason = result; + return { state: WaiterState.SUCCESS, reason }; + } + catch (exception) { + reason = exception; + if (exception.name && exception.name == "NotFound") { + return { state: WaiterState.RETRY, reason }; + } + } + return { state: WaiterState.RETRY, reason }; +}; +export const waitForBucketExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +export const waitUntilBucketExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForBucketNotExists.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForBucketNotExists.js new file mode 100644 index 0000000..ea4e5ef --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForBucketNotExists.js @@ -0,0 +1,25 @@ +import { checkExceptions, createWaiter, WaiterState, } from "@smithy/util-waiter"; +import { HeadBucketCommand } from "../commands/HeadBucketCommand"; +const checkState = async (client, input) => { + let reason; + try { + let result = await client.send(new HeadBucketCommand(input)); + reason = result; + } + catch (exception) { + reason = exception; + if (exception.name && exception.name == "NotFound") { + return { state: WaiterState.SUCCESS, reason }; + } + } + return { state: WaiterState.RETRY, reason }; +}; +export const waitForBucketNotExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +export const waitUntilBucketNotExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForObjectExists.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForObjectExists.js new file mode 100644 index 0000000..370710e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForObjectExists.js @@ -0,0 +1,26 @@ +import { checkExceptions, createWaiter, WaiterState, } from "@smithy/util-waiter"; +import { HeadObjectCommand } from "../commands/HeadObjectCommand"; +const checkState = async (client, input) => { + let reason; + try { + let result = await client.send(new HeadObjectCommand(input)); + reason = result; + return { state: WaiterState.SUCCESS, reason }; + } + catch (exception) { + reason = exception; + if (exception.name && exception.name == "NotFound") { + return { state: WaiterState.RETRY, reason }; + } + } + return { state: WaiterState.RETRY, reason }; +}; +export const waitForObjectExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +export const waitUntilObjectExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForObjectNotExists.js b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForObjectNotExists.js new file mode 100644 index 0000000..a70d5cc --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-es/waiters/waitForObjectNotExists.js @@ -0,0 +1,25 @@ +import { checkExceptions, createWaiter, WaiterState, } from "@smithy/util-waiter"; +import { HeadObjectCommand } from "../commands/HeadObjectCommand"; +const checkState = async (client, input) => { + let reason; + try { + let result = await client.send(new HeadObjectCommand(input)); + reason = result; + } + catch (exception) { + reason = exception; + if (exception.name && exception.name == "NotFound") { + return { state: WaiterState.SUCCESS, reason }; + } + } + return { state: WaiterState.RETRY, reason }; +}; +export const waitForObjectNotExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +export const waitUntilObjectNotExists = async (params, input) => { + const serviceDefaults = { minDelay: 5, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/S3.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/S3.d.ts new file mode 100644 index 0000000..fdee55e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/S3.d.ts @@ -0,0 +1,814 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions, PaginationConfiguration, Paginator, WaiterConfiguration } from "@smithy/types"; +import type { WaiterResult } from "@smithy/util-waiter"; +import { type AbortMultipartUploadCommandInput, type AbortMultipartUploadCommandOutput } from "./commands/AbortMultipartUploadCommand"; +import { type CompleteMultipartUploadCommandInput, type CompleteMultipartUploadCommandOutput } from "./commands/CompleteMultipartUploadCommand"; +import { type CopyObjectCommandInput, type CopyObjectCommandOutput } from "./commands/CopyObjectCommand"; +import { type CreateBucketCommandInput, type CreateBucketCommandOutput } from "./commands/CreateBucketCommand"; +import { type CreateBucketMetadataConfigurationCommandInput, type CreateBucketMetadataConfigurationCommandOutput } from "./commands/CreateBucketMetadataConfigurationCommand"; +import { type CreateBucketMetadataTableConfigurationCommandInput, type CreateBucketMetadataTableConfigurationCommandOutput } from "./commands/CreateBucketMetadataTableConfigurationCommand"; +import { type CreateMultipartUploadCommandInput, type CreateMultipartUploadCommandOutput } from "./commands/CreateMultipartUploadCommand"; +import { type CreateSessionCommandInput, type CreateSessionCommandOutput } from "./commands/CreateSessionCommand"; +import { type DeleteBucketAnalyticsConfigurationCommandInput, type DeleteBucketAnalyticsConfigurationCommandOutput } from "./commands/DeleteBucketAnalyticsConfigurationCommand"; +import { type DeleteBucketCommandInput, type DeleteBucketCommandOutput } from "./commands/DeleteBucketCommand"; +import { type DeleteBucketCorsCommandInput, type DeleteBucketCorsCommandOutput } from "./commands/DeleteBucketCorsCommand"; +import { type DeleteBucketEncryptionCommandInput, type DeleteBucketEncryptionCommandOutput } from "./commands/DeleteBucketEncryptionCommand"; +import { type DeleteBucketIntelligentTieringConfigurationCommandInput, type DeleteBucketIntelligentTieringConfigurationCommandOutput } from "./commands/DeleteBucketIntelligentTieringConfigurationCommand"; +import { type DeleteBucketInventoryConfigurationCommandInput, type DeleteBucketInventoryConfigurationCommandOutput } from "./commands/DeleteBucketInventoryConfigurationCommand"; +import { type DeleteBucketLifecycleCommandInput, type DeleteBucketLifecycleCommandOutput } from "./commands/DeleteBucketLifecycleCommand"; +import { type DeleteBucketMetadataConfigurationCommandInput, type DeleteBucketMetadataConfigurationCommandOutput } from "./commands/DeleteBucketMetadataConfigurationCommand"; +import { type DeleteBucketMetadataTableConfigurationCommandInput, type DeleteBucketMetadataTableConfigurationCommandOutput } from "./commands/DeleteBucketMetadataTableConfigurationCommand"; +import { type DeleteBucketMetricsConfigurationCommandInput, type DeleteBucketMetricsConfigurationCommandOutput } from "./commands/DeleteBucketMetricsConfigurationCommand"; +import { type DeleteBucketOwnershipControlsCommandInput, type DeleteBucketOwnershipControlsCommandOutput } from "./commands/DeleteBucketOwnershipControlsCommand"; +import { type DeleteBucketPolicyCommandInput, type DeleteBucketPolicyCommandOutput } from "./commands/DeleteBucketPolicyCommand"; +import { type DeleteBucketReplicationCommandInput, type DeleteBucketReplicationCommandOutput } from "./commands/DeleteBucketReplicationCommand"; +import { type DeleteBucketTaggingCommandInput, type DeleteBucketTaggingCommandOutput } from "./commands/DeleteBucketTaggingCommand"; +import { type DeleteBucketWebsiteCommandInput, type DeleteBucketWebsiteCommandOutput } from "./commands/DeleteBucketWebsiteCommand"; +import { type DeleteObjectCommandInput, type DeleteObjectCommandOutput } from "./commands/DeleteObjectCommand"; +import { type DeleteObjectsCommandInput, type DeleteObjectsCommandOutput } from "./commands/DeleteObjectsCommand"; +import { type DeleteObjectTaggingCommandInput, type DeleteObjectTaggingCommandOutput } from "./commands/DeleteObjectTaggingCommand"; +import { type DeletePublicAccessBlockCommandInput, type DeletePublicAccessBlockCommandOutput } from "./commands/DeletePublicAccessBlockCommand"; +import { type GetBucketAbacCommandInput, type GetBucketAbacCommandOutput } from "./commands/GetBucketAbacCommand"; +import { type GetBucketAccelerateConfigurationCommandInput, type GetBucketAccelerateConfigurationCommandOutput } from "./commands/GetBucketAccelerateConfigurationCommand"; +import { type GetBucketAclCommandInput, type GetBucketAclCommandOutput } from "./commands/GetBucketAclCommand"; +import { type GetBucketAnalyticsConfigurationCommandInput, type GetBucketAnalyticsConfigurationCommandOutput } from "./commands/GetBucketAnalyticsConfigurationCommand"; +import { type GetBucketCorsCommandInput, type GetBucketCorsCommandOutput } from "./commands/GetBucketCorsCommand"; +import { type GetBucketEncryptionCommandInput, type GetBucketEncryptionCommandOutput } from "./commands/GetBucketEncryptionCommand"; +import { type GetBucketIntelligentTieringConfigurationCommandInput, type GetBucketIntelligentTieringConfigurationCommandOutput } from "./commands/GetBucketIntelligentTieringConfigurationCommand"; +import { type GetBucketInventoryConfigurationCommandInput, type GetBucketInventoryConfigurationCommandOutput } from "./commands/GetBucketInventoryConfigurationCommand"; +import { type GetBucketLifecycleConfigurationCommandInput, type GetBucketLifecycleConfigurationCommandOutput } from "./commands/GetBucketLifecycleConfigurationCommand"; +import { type GetBucketLocationCommandInput, type GetBucketLocationCommandOutput } from "./commands/GetBucketLocationCommand"; +import { type GetBucketLoggingCommandInput, type GetBucketLoggingCommandOutput } from "./commands/GetBucketLoggingCommand"; +import { type GetBucketMetadataConfigurationCommandInput, type GetBucketMetadataConfigurationCommandOutput } from "./commands/GetBucketMetadataConfigurationCommand"; +import { type GetBucketMetadataTableConfigurationCommandInput, type GetBucketMetadataTableConfigurationCommandOutput } from "./commands/GetBucketMetadataTableConfigurationCommand"; +import { type GetBucketMetricsConfigurationCommandInput, type GetBucketMetricsConfigurationCommandOutput } from "./commands/GetBucketMetricsConfigurationCommand"; +import { type GetBucketNotificationConfigurationCommandInput, type GetBucketNotificationConfigurationCommandOutput } from "./commands/GetBucketNotificationConfigurationCommand"; +import { type GetBucketOwnershipControlsCommandInput, type GetBucketOwnershipControlsCommandOutput } from "./commands/GetBucketOwnershipControlsCommand"; +import { type GetBucketPolicyCommandInput, type GetBucketPolicyCommandOutput } from "./commands/GetBucketPolicyCommand"; +import { type GetBucketPolicyStatusCommandInput, type GetBucketPolicyStatusCommandOutput } from "./commands/GetBucketPolicyStatusCommand"; +import { type GetBucketReplicationCommandInput, type GetBucketReplicationCommandOutput } from "./commands/GetBucketReplicationCommand"; +import { type GetBucketRequestPaymentCommandInput, type GetBucketRequestPaymentCommandOutput } from "./commands/GetBucketRequestPaymentCommand"; +import { type GetBucketTaggingCommandInput, type GetBucketTaggingCommandOutput } from "./commands/GetBucketTaggingCommand"; +import { type GetBucketVersioningCommandInput, type GetBucketVersioningCommandOutput } from "./commands/GetBucketVersioningCommand"; +import { type GetBucketWebsiteCommandInput, type GetBucketWebsiteCommandOutput } from "./commands/GetBucketWebsiteCommand"; +import { type GetObjectAclCommandInput, type GetObjectAclCommandOutput } from "./commands/GetObjectAclCommand"; +import { type GetObjectAttributesCommandInput, type GetObjectAttributesCommandOutput } from "./commands/GetObjectAttributesCommand"; +import { type GetObjectCommandInput, type GetObjectCommandOutput } from "./commands/GetObjectCommand"; +import { type GetObjectLegalHoldCommandInput, type GetObjectLegalHoldCommandOutput } from "./commands/GetObjectLegalHoldCommand"; +import { type GetObjectLockConfigurationCommandInput, type GetObjectLockConfigurationCommandOutput } from "./commands/GetObjectLockConfigurationCommand"; +import { type GetObjectRetentionCommandInput, type GetObjectRetentionCommandOutput } from "./commands/GetObjectRetentionCommand"; +import { type GetObjectTaggingCommandInput, type GetObjectTaggingCommandOutput } from "./commands/GetObjectTaggingCommand"; +import { type GetObjectTorrentCommandInput, type GetObjectTorrentCommandOutput } from "./commands/GetObjectTorrentCommand"; +import { type GetPublicAccessBlockCommandInput, type GetPublicAccessBlockCommandOutput } from "./commands/GetPublicAccessBlockCommand"; +import { type HeadBucketCommandInput, type HeadBucketCommandOutput } from "./commands/HeadBucketCommand"; +import { type HeadObjectCommandInput, type HeadObjectCommandOutput } from "./commands/HeadObjectCommand"; +import { type ListBucketAnalyticsConfigurationsCommandInput, type ListBucketAnalyticsConfigurationsCommandOutput } from "./commands/ListBucketAnalyticsConfigurationsCommand"; +import { type ListBucketIntelligentTieringConfigurationsCommandInput, type ListBucketIntelligentTieringConfigurationsCommandOutput } from "./commands/ListBucketIntelligentTieringConfigurationsCommand"; +import { type ListBucketInventoryConfigurationsCommandInput, type ListBucketInventoryConfigurationsCommandOutput } from "./commands/ListBucketInventoryConfigurationsCommand"; +import { type ListBucketMetricsConfigurationsCommandInput, type ListBucketMetricsConfigurationsCommandOutput } from "./commands/ListBucketMetricsConfigurationsCommand"; +import { type ListBucketsCommandInput, type ListBucketsCommandOutput } from "./commands/ListBucketsCommand"; +import { type ListDirectoryBucketsCommandInput, type ListDirectoryBucketsCommandOutput } from "./commands/ListDirectoryBucketsCommand"; +import { type ListMultipartUploadsCommandInput, type ListMultipartUploadsCommandOutput } from "./commands/ListMultipartUploadsCommand"; +import { type ListObjectsCommandInput, type ListObjectsCommandOutput } from "./commands/ListObjectsCommand"; +import { type ListObjectsV2CommandInput, type ListObjectsV2CommandOutput } from "./commands/ListObjectsV2Command"; +import { type ListObjectVersionsCommandInput, type ListObjectVersionsCommandOutput } from "./commands/ListObjectVersionsCommand"; +import { type ListPartsCommandInput, type ListPartsCommandOutput } from "./commands/ListPartsCommand"; +import { type PutBucketAbacCommandInput, type PutBucketAbacCommandOutput } from "./commands/PutBucketAbacCommand"; +import { type PutBucketAccelerateConfigurationCommandInput, type PutBucketAccelerateConfigurationCommandOutput } from "./commands/PutBucketAccelerateConfigurationCommand"; +import { type PutBucketAclCommandInput, type PutBucketAclCommandOutput } from "./commands/PutBucketAclCommand"; +import { type PutBucketAnalyticsConfigurationCommandInput, type PutBucketAnalyticsConfigurationCommandOutput } from "./commands/PutBucketAnalyticsConfigurationCommand"; +import { type PutBucketCorsCommandInput, type PutBucketCorsCommandOutput } from "./commands/PutBucketCorsCommand"; +import { type PutBucketEncryptionCommandInput, type PutBucketEncryptionCommandOutput } from "./commands/PutBucketEncryptionCommand"; +import { type PutBucketIntelligentTieringConfigurationCommandInput, type PutBucketIntelligentTieringConfigurationCommandOutput } from "./commands/PutBucketIntelligentTieringConfigurationCommand"; +import { type PutBucketInventoryConfigurationCommandInput, type PutBucketInventoryConfigurationCommandOutput } from "./commands/PutBucketInventoryConfigurationCommand"; +import { type PutBucketLifecycleConfigurationCommandInput, type PutBucketLifecycleConfigurationCommandOutput } from "./commands/PutBucketLifecycleConfigurationCommand"; +import { type PutBucketLoggingCommandInput, type PutBucketLoggingCommandOutput } from "./commands/PutBucketLoggingCommand"; +import { type PutBucketMetricsConfigurationCommandInput, type PutBucketMetricsConfigurationCommandOutput } from "./commands/PutBucketMetricsConfigurationCommand"; +import { type PutBucketNotificationConfigurationCommandInput, type PutBucketNotificationConfigurationCommandOutput } from "./commands/PutBucketNotificationConfigurationCommand"; +import { type PutBucketOwnershipControlsCommandInput, type PutBucketOwnershipControlsCommandOutput } from "./commands/PutBucketOwnershipControlsCommand"; +import { type PutBucketPolicyCommandInput, type PutBucketPolicyCommandOutput } from "./commands/PutBucketPolicyCommand"; +import { type PutBucketReplicationCommandInput, type PutBucketReplicationCommandOutput } from "./commands/PutBucketReplicationCommand"; +import { type PutBucketRequestPaymentCommandInput, type PutBucketRequestPaymentCommandOutput } from "./commands/PutBucketRequestPaymentCommand"; +import { type PutBucketTaggingCommandInput, type PutBucketTaggingCommandOutput } from "./commands/PutBucketTaggingCommand"; +import { type PutBucketVersioningCommandInput, type PutBucketVersioningCommandOutput } from "./commands/PutBucketVersioningCommand"; +import { type PutBucketWebsiteCommandInput, type PutBucketWebsiteCommandOutput } from "./commands/PutBucketWebsiteCommand"; +import { type PutObjectAclCommandInput, type PutObjectAclCommandOutput } from "./commands/PutObjectAclCommand"; +import { type PutObjectCommandInput, type PutObjectCommandOutput } from "./commands/PutObjectCommand"; +import { type PutObjectLegalHoldCommandInput, type PutObjectLegalHoldCommandOutput } from "./commands/PutObjectLegalHoldCommand"; +import { type PutObjectLockConfigurationCommandInput, type PutObjectLockConfigurationCommandOutput } from "./commands/PutObjectLockConfigurationCommand"; +import { type PutObjectRetentionCommandInput, type PutObjectRetentionCommandOutput } from "./commands/PutObjectRetentionCommand"; +import { type PutObjectTaggingCommandInput, type PutObjectTaggingCommandOutput } from "./commands/PutObjectTaggingCommand"; +import { type PutPublicAccessBlockCommandInput, type PutPublicAccessBlockCommandOutput } from "./commands/PutPublicAccessBlockCommand"; +import { type RenameObjectCommandInput, type RenameObjectCommandOutput } from "./commands/RenameObjectCommand"; +import { type RestoreObjectCommandInput, type RestoreObjectCommandOutput } from "./commands/RestoreObjectCommand"; +import { type SelectObjectContentCommandInput, type SelectObjectContentCommandOutput } from "./commands/SelectObjectContentCommand"; +import { type UpdateBucketMetadataInventoryTableConfigurationCommandInput, type UpdateBucketMetadataInventoryTableConfigurationCommandOutput } from "./commands/UpdateBucketMetadataInventoryTableConfigurationCommand"; +import { type UpdateBucketMetadataJournalTableConfigurationCommandInput, type UpdateBucketMetadataJournalTableConfigurationCommandOutput } from "./commands/UpdateBucketMetadataJournalTableConfigurationCommand"; +import { type UpdateObjectEncryptionCommandInput, type UpdateObjectEncryptionCommandOutput } from "./commands/UpdateObjectEncryptionCommand"; +import { type UploadPartCommandInput, type UploadPartCommandOutput } from "./commands/UploadPartCommand"; +import { type UploadPartCopyCommandInput, type UploadPartCopyCommandOutput } from "./commands/UploadPartCopyCommand"; +import { type WriteGetObjectResponseCommandInput, type WriteGetObjectResponseCommandOutput } from "./commands/WriteGetObjectResponseCommand"; +import { S3Client } from "./S3Client"; +export interface S3 { + /** + * @see {@link AbortMultipartUploadCommand} + */ + abortMultipartUpload(args: AbortMultipartUploadCommandInput, options?: __HttpHandlerOptions): Promise; + abortMultipartUpload(args: AbortMultipartUploadCommandInput, cb: (err: any, data?: AbortMultipartUploadCommandOutput) => void): void; + abortMultipartUpload(args: AbortMultipartUploadCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: AbortMultipartUploadCommandOutput) => void): void; + /** + * @see {@link CompleteMultipartUploadCommand} + */ + completeMultipartUpload(args: CompleteMultipartUploadCommandInput, options?: __HttpHandlerOptions): Promise; + completeMultipartUpload(args: CompleteMultipartUploadCommandInput, cb: (err: any, data?: CompleteMultipartUploadCommandOutput) => void): void; + completeMultipartUpload(args: CompleteMultipartUploadCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CompleteMultipartUploadCommandOutput) => void): void; + /** + * @see {@link CopyObjectCommand} + */ + copyObject(args: CopyObjectCommandInput, options?: __HttpHandlerOptions): Promise; + copyObject(args: CopyObjectCommandInput, cb: (err: any, data?: CopyObjectCommandOutput) => void): void; + copyObject(args: CopyObjectCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CopyObjectCommandOutput) => void): void; + /** + * @see {@link CreateBucketCommand} + */ + createBucket(args: CreateBucketCommandInput, options?: __HttpHandlerOptions): Promise; + createBucket(args: CreateBucketCommandInput, cb: (err: any, data?: CreateBucketCommandOutput) => void): void; + createBucket(args: CreateBucketCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateBucketCommandOutput) => void): void; + /** + * @see {@link CreateBucketMetadataConfigurationCommand} + */ + createBucketMetadataConfiguration(args: CreateBucketMetadataConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + createBucketMetadataConfiguration(args: CreateBucketMetadataConfigurationCommandInput, cb: (err: any, data?: CreateBucketMetadataConfigurationCommandOutput) => void): void; + createBucketMetadataConfiguration(args: CreateBucketMetadataConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateBucketMetadataConfigurationCommandOutput) => void): void; + /** + * @see {@link CreateBucketMetadataTableConfigurationCommand} + */ + createBucketMetadataTableConfiguration(args: CreateBucketMetadataTableConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + createBucketMetadataTableConfiguration(args: CreateBucketMetadataTableConfigurationCommandInput, cb: (err: any, data?: CreateBucketMetadataTableConfigurationCommandOutput) => void): void; + createBucketMetadataTableConfiguration(args: CreateBucketMetadataTableConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateBucketMetadataTableConfigurationCommandOutput) => void): void; + /** + * @see {@link CreateMultipartUploadCommand} + */ + createMultipartUpload(args: CreateMultipartUploadCommandInput, options?: __HttpHandlerOptions): Promise; + createMultipartUpload(args: CreateMultipartUploadCommandInput, cb: (err: any, data?: CreateMultipartUploadCommandOutput) => void): void; + createMultipartUpload(args: CreateMultipartUploadCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateMultipartUploadCommandOutput) => void): void; + /** + * @see {@link CreateSessionCommand} + */ + createSession(args: CreateSessionCommandInput, options?: __HttpHandlerOptions): Promise; + createSession(args: CreateSessionCommandInput, cb: (err: any, data?: CreateSessionCommandOutput) => void): void; + createSession(args: CreateSessionCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateSessionCommandOutput) => void): void; + /** + * @see {@link DeleteBucketCommand} + */ + deleteBucket(args: DeleteBucketCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucket(args: DeleteBucketCommandInput, cb: (err: any, data?: DeleteBucketCommandOutput) => void): void; + deleteBucket(args: DeleteBucketCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketCommandOutput) => void): void; + /** + * @see {@link DeleteBucketAnalyticsConfigurationCommand} + */ + deleteBucketAnalyticsConfiguration(args: DeleteBucketAnalyticsConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketAnalyticsConfiguration(args: DeleteBucketAnalyticsConfigurationCommandInput, cb: (err: any, data?: DeleteBucketAnalyticsConfigurationCommandOutput) => void): void; + deleteBucketAnalyticsConfiguration(args: DeleteBucketAnalyticsConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketAnalyticsConfigurationCommandOutput) => void): void; + /** + * @see {@link DeleteBucketCorsCommand} + */ + deleteBucketCors(args: DeleteBucketCorsCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketCors(args: DeleteBucketCorsCommandInput, cb: (err: any, data?: DeleteBucketCorsCommandOutput) => void): void; + deleteBucketCors(args: DeleteBucketCorsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketCorsCommandOutput) => void): void; + /** + * @see {@link DeleteBucketEncryptionCommand} + */ + deleteBucketEncryption(args: DeleteBucketEncryptionCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketEncryption(args: DeleteBucketEncryptionCommandInput, cb: (err: any, data?: DeleteBucketEncryptionCommandOutput) => void): void; + deleteBucketEncryption(args: DeleteBucketEncryptionCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketEncryptionCommandOutput) => void): void; + /** + * @see {@link DeleteBucketIntelligentTieringConfigurationCommand} + */ + deleteBucketIntelligentTieringConfiguration(args: DeleteBucketIntelligentTieringConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketIntelligentTieringConfiguration(args: DeleteBucketIntelligentTieringConfigurationCommandInput, cb: (err: any, data?: DeleteBucketIntelligentTieringConfigurationCommandOutput) => void): void; + deleteBucketIntelligentTieringConfiguration(args: DeleteBucketIntelligentTieringConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketIntelligentTieringConfigurationCommandOutput) => void): void; + /** + * @see {@link DeleteBucketInventoryConfigurationCommand} + */ + deleteBucketInventoryConfiguration(args: DeleteBucketInventoryConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketInventoryConfiguration(args: DeleteBucketInventoryConfigurationCommandInput, cb: (err: any, data?: DeleteBucketInventoryConfigurationCommandOutput) => void): void; + deleteBucketInventoryConfiguration(args: DeleteBucketInventoryConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketInventoryConfigurationCommandOutput) => void): void; + /** + * @see {@link DeleteBucketLifecycleCommand} + */ + deleteBucketLifecycle(args: DeleteBucketLifecycleCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketLifecycle(args: DeleteBucketLifecycleCommandInput, cb: (err: any, data?: DeleteBucketLifecycleCommandOutput) => void): void; + deleteBucketLifecycle(args: DeleteBucketLifecycleCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketLifecycleCommandOutput) => void): void; + /** + * @see {@link DeleteBucketMetadataConfigurationCommand} + */ + deleteBucketMetadataConfiguration(args: DeleteBucketMetadataConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketMetadataConfiguration(args: DeleteBucketMetadataConfigurationCommandInput, cb: (err: any, data?: DeleteBucketMetadataConfigurationCommandOutput) => void): void; + deleteBucketMetadataConfiguration(args: DeleteBucketMetadataConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketMetadataConfigurationCommandOutput) => void): void; + /** + * @see {@link DeleteBucketMetadataTableConfigurationCommand} + */ + deleteBucketMetadataTableConfiguration(args: DeleteBucketMetadataTableConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketMetadataTableConfiguration(args: DeleteBucketMetadataTableConfigurationCommandInput, cb: (err: any, data?: DeleteBucketMetadataTableConfigurationCommandOutput) => void): void; + deleteBucketMetadataTableConfiguration(args: DeleteBucketMetadataTableConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketMetadataTableConfigurationCommandOutput) => void): void; + /** + * @see {@link DeleteBucketMetricsConfigurationCommand} + */ + deleteBucketMetricsConfiguration(args: DeleteBucketMetricsConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketMetricsConfiguration(args: DeleteBucketMetricsConfigurationCommandInput, cb: (err: any, data?: DeleteBucketMetricsConfigurationCommandOutput) => void): void; + deleteBucketMetricsConfiguration(args: DeleteBucketMetricsConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketMetricsConfigurationCommandOutput) => void): void; + /** + * @see {@link DeleteBucketOwnershipControlsCommand} + */ + deleteBucketOwnershipControls(args: DeleteBucketOwnershipControlsCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketOwnershipControls(args: DeleteBucketOwnershipControlsCommandInput, cb: (err: any, data?: DeleteBucketOwnershipControlsCommandOutput) => void): void; + deleteBucketOwnershipControls(args: DeleteBucketOwnershipControlsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketOwnershipControlsCommandOutput) => void): void; + /** + * @see {@link DeleteBucketPolicyCommand} + */ + deleteBucketPolicy(args: DeleteBucketPolicyCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketPolicy(args: DeleteBucketPolicyCommandInput, cb: (err: any, data?: DeleteBucketPolicyCommandOutput) => void): void; + deleteBucketPolicy(args: DeleteBucketPolicyCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketPolicyCommandOutput) => void): void; + /** + * @see {@link DeleteBucketReplicationCommand} + */ + deleteBucketReplication(args: DeleteBucketReplicationCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketReplication(args: DeleteBucketReplicationCommandInput, cb: (err: any, data?: DeleteBucketReplicationCommandOutput) => void): void; + deleteBucketReplication(args: DeleteBucketReplicationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketReplicationCommandOutput) => void): void; + /** + * @see {@link DeleteBucketTaggingCommand} + */ + deleteBucketTagging(args: DeleteBucketTaggingCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketTagging(args: DeleteBucketTaggingCommandInput, cb: (err: any, data?: DeleteBucketTaggingCommandOutput) => void): void; + deleteBucketTagging(args: DeleteBucketTaggingCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketTaggingCommandOutput) => void): void; + /** + * @see {@link DeleteBucketWebsiteCommand} + */ + deleteBucketWebsite(args: DeleteBucketWebsiteCommandInput, options?: __HttpHandlerOptions): Promise; + deleteBucketWebsite(args: DeleteBucketWebsiteCommandInput, cb: (err: any, data?: DeleteBucketWebsiteCommandOutput) => void): void; + deleteBucketWebsite(args: DeleteBucketWebsiteCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteBucketWebsiteCommandOutput) => void): void; + /** + * @see {@link DeleteObjectCommand} + */ + deleteObject(args: DeleteObjectCommandInput, options?: __HttpHandlerOptions): Promise; + deleteObject(args: DeleteObjectCommandInput, cb: (err: any, data?: DeleteObjectCommandOutput) => void): void; + deleteObject(args: DeleteObjectCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteObjectCommandOutput) => void): void; + /** + * @see {@link DeleteObjectsCommand} + */ + deleteObjects(args: DeleteObjectsCommandInput, options?: __HttpHandlerOptions): Promise; + deleteObjects(args: DeleteObjectsCommandInput, cb: (err: any, data?: DeleteObjectsCommandOutput) => void): void; + deleteObjects(args: DeleteObjectsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteObjectsCommandOutput) => void): void; + /** + * @see {@link DeleteObjectTaggingCommand} + */ + deleteObjectTagging(args: DeleteObjectTaggingCommandInput, options?: __HttpHandlerOptions): Promise; + deleteObjectTagging(args: DeleteObjectTaggingCommandInput, cb: (err: any, data?: DeleteObjectTaggingCommandOutput) => void): void; + deleteObjectTagging(args: DeleteObjectTaggingCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeleteObjectTaggingCommandOutput) => void): void; + /** + * @see {@link DeletePublicAccessBlockCommand} + */ + deletePublicAccessBlock(args: DeletePublicAccessBlockCommandInput, options?: __HttpHandlerOptions): Promise; + deletePublicAccessBlock(args: DeletePublicAccessBlockCommandInput, cb: (err: any, data?: DeletePublicAccessBlockCommandOutput) => void): void; + deletePublicAccessBlock(args: DeletePublicAccessBlockCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: DeletePublicAccessBlockCommandOutput) => void): void; + /** + * @see {@link GetBucketAbacCommand} + */ + getBucketAbac(args: GetBucketAbacCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketAbac(args: GetBucketAbacCommandInput, cb: (err: any, data?: GetBucketAbacCommandOutput) => void): void; + getBucketAbac(args: GetBucketAbacCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketAbacCommandOutput) => void): void; + /** + * @see {@link GetBucketAccelerateConfigurationCommand} + */ + getBucketAccelerateConfiguration(args: GetBucketAccelerateConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketAccelerateConfiguration(args: GetBucketAccelerateConfigurationCommandInput, cb: (err: any, data?: GetBucketAccelerateConfigurationCommandOutput) => void): void; + getBucketAccelerateConfiguration(args: GetBucketAccelerateConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketAccelerateConfigurationCommandOutput) => void): void; + /** + * @see {@link GetBucketAclCommand} + */ + getBucketAcl(args: GetBucketAclCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketAcl(args: GetBucketAclCommandInput, cb: (err: any, data?: GetBucketAclCommandOutput) => void): void; + getBucketAcl(args: GetBucketAclCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketAclCommandOutput) => void): void; + /** + * @see {@link GetBucketAnalyticsConfigurationCommand} + */ + getBucketAnalyticsConfiguration(args: GetBucketAnalyticsConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketAnalyticsConfiguration(args: GetBucketAnalyticsConfigurationCommandInput, cb: (err: any, data?: GetBucketAnalyticsConfigurationCommandOutput) => void): void; + getBucketAnalyticsConfiguration(args: GetBucketAnalyticsConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketAnalyticsConfigurationCommandOutput) => void): void; + /** + * @see {@link GetBucketCorsCommand} + */ + getBucketCors(args: GetBucketCorsCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketCors(args: GetBucketCorsCommandInput, cb: (err: any, data?: GetBucketCorsCommandOutput) => void): void; + getBucketCors(args: GetBucketCorsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketCorsCommandOutput) => void): void; + /** + * @see {@link GetBucketEncryptionCommand} + */ + getBucketEncryption(args: GetBucketEncryptionCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketEncryption(args: GetBucketEncryptionCommandInput, cb: (err: any, data?: GetBucketEncryptionCommandOutput) => void): void; + getBucketEncryption(args: GetBucketEncryptionCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketEncryptionCommandOutput) => void): void; + /** + * @see {@link GetBucketIntelligentTieringConfigurationCommand} + */ + getBucketIntelligentTieringConfiguration(args: GetBucketIntelligentTieringConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketIntelligentTieringConfiguration(args: GetBucketIntelligentTieringConfigurationCommandInput, cb: (err: any, data?: GetBucketIntelligentTieringConfigurationCommandOutput) => void): void; + getBucketIntelligentTieringConfiguration(args: GetBucketIntelligentTieringConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketIntelligentTieringConfigurationCommandOutput) => void): void; + /** + * @see {@link GetBucketInventoryConfigurationCommand} + */ + getBucketInventoryConfiguration(args: GetBucketInventoryConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketInventoryConfiguration(args: GetBucketInventoryConfigurationCommandInput, cb: (err: any, data?: GetBucketInventoryConfigurationCommandOutput) => void): void; + getBucketInventoryConfiguration(args: GetBucketInventoryConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketInventoryConfigurationCommandOutput) => void): void; + /** + * @see {@link GetBucketLifecycleConfigurationCommand} + */ + getBucketLifecycleConfiguration(args: GetBucketLifecycleConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketLifecycleConfiguration(args: GetBucketLifecycleConfigurationCommandInput, cb: (err: any, data?: GetBucketLifecycleConfigurationCommandOutput) => void): void; + getBucketLifecycleConfiguration(args: GetBucketLifecycleConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketLifecycleConfigurationCommandOutput) => void): void; + /** + * @see {@link GetBucketLocationCommand} + */ + getBucketLocation(args: GetBucketLocationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketLocation(args: GetBucketLocationCommandInput, cb: (err: any, data?: GetBucketLocationCommandOutput) => void): void; + getBucketLocation(args: GetBucketLocationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketLocationCommandOutput) => void): void; + /** + * @see {@link GetBucketLoggingCommand} + */ + getBucketLogging(args: GetBucketLoggingCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketLogging(args: GetBucketLoggingCommandInput, cb: (err: any, data?: GetBucketLoggingCommandOutput) => void): void; + getBucketLogging(args: GetBucketLoggingCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketLoggingCommandOutput) => void): void; + /** + * @see {@link GetBucketMetadataConfigurationCommand} + */ + getBucketMetadataConfiguration(args: GetBucketMetadataConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketMetadataConfiguration(args: GetBucketMetadataConfigurationCommandInput, cb: (err: any, data?: GetBucketMetadataConfigurationCommandOutput) => void): void; + getBucketMetadataConfiguration(args: GetBucketMetadataConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketMetadataConfigurationCommandOutput) => void): void; + /** + * @see {@link GetBucketMetadataTableConfigurationCommand} + */ + getBucketMetadataTableConfiguration(args: GetBucketMetadataTableConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketMetadataTableConfiguration(args: GetBucketMetadataTableConfigurationCommandInput, cb: (err: any, data?: GetBucketMetadataTableConfigurationCommandOutput) => void): void; + getBucketMetadataTableConfiguration(args: GetBucketMetadataTableConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketMetadataTableConfigurationCommandOutput) => void): void; + /** + * @see {@link GetBucketMetricsConfigurationCommand} + */ + getBucketMetricsConfiguration(args: GetBucketMetricsConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketMetricsConfiguration(args: GetBucketMetricsConfigurationCommandInput, cb: (err: any, data?: GetBucketMetricsConfigurationCommandOutput) => void): void; + getBucketMetricsConfiguration(args: GetBucketMetricsConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketMetricsConfigurationCommandOutput) => void): void; + /** + * @see {@link GetBucketNotificationConfigurationCommand} + */ + getBucketNotificationConfiguration(args: GetBucketNotificationConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketNotificationConfiguration(args: GetBucketNotificationConfigurationCommandInput, cb: (err: any, data?: GetBucketNotificationConfigurationCommandOutput) => void): void; + getBucketNotificationConfiguration(args: GetBucketNotificationConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketNotificationConfigurationCommandOutput) => void): void; + /** + * @see {@link GetBucketOwnershipControlsCommand} + */ + getBucketOwnershipControls(args: GetBucketOwnershipControlsCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketOwnershipControls(args: GetBucketOwnershipControlsCommandInput, cb: (err: any, data?: GetBucketOwnershipControlsCommandOutput) => void): void; + getBucketOwnershipControls(args: GetBucketOwnershipControlsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketOwnershipControlsCommandOutput) => void): void; + /** + * @see {@link GetBucketPolicyCommand} + */ + getBucketPolicy(args: GetBucketPolicyCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketPolicy(args: GetBucketPolicyCommandInput, cb: (err: any, data?: GetBucketPolicyCommandOutput) => void): void; + getBucketPolicy(args: GetBucketPolicyCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketPolicyCommandOutput) => void): void; + /** + * @see {@link GetBucketPolicyStatusCommand} + */ + getBucketPolicyStatus(args: GetBucketPolicyStatusCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketPolicyStatus(args: GetBucketPolicyStatusCommandInput, cb: (err: any, data?: GetBucketPolicyStatusCommandOutput) => void): void; + getBucketPolicyStatus(args: GetBucketPolicyStatusCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketPolicyStatusCommandOutput) => void): void; + /** + * @see {@link GetBucketReplicationCommand} + */ + getBucketReplication(args: GetBucketReplicationCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketReplication(args: GetBucketReplicationCommandInput, cb: (err: any, data?: GetBucketReplicationCommandOutput) => void): void; + getBucketReplication(args: GetBucketReplicationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketReplicationCommandOutput) => void): void; + /** + * @see {@link GetBucketRequestPaymentCommand} + */ + getBucketRequestPayment(args: GetBucketRequestPaymentCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketRequestPayment(args: GetBucketRequestPaymentCommandInput, cb: (err: any, data?: GetBucketRequestPaymentCommandOutput) => void): void; + getBucketRequestPayment(args: GetBucketRequestPaymentCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketRequestPaymentCommandOutput) => void): void; + /** + * @see {@link GetBucketTaggingCommand} + */ + getBucketTagging(args: GetBucketTaggingCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketTagging(args: GetBucketTaggingCommandInput, cb: (err: any, data?: GetBucketTaggingCommandOutput) => void): void; + getBucketTagging(args: GetBucketTaggingCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketTaggingCommandOutput) => void): void; + /** + * @see {@link GetBucketVersioningCommand} + */ + getBucketVersioning(args: GetBucketVersioningCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketVersioning(args: GetBucketVersioningCommandInput, cb: (err: any, data?: GetBucketVersioningCommandOutput) => void): void; + getBucketVersioning(args: GetBucketVersioningCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketVersioningCommandOutput) => void): void; + /** + * @see {@link GetBucketWebsiteCommand} + */ + getBucketWebsite(args: GetBucketWebsiteCommandInput, options?: __HttpHandlerOptions): Promise; + getBucketWebsite(args: GetBucketWebsiteCommandInput, cb: (err: any, data?: GetBucketWebsiteCommandOutput) => void): void; + getBucketWebsite(args: GetBucketWebsiteCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetBucketWebsiteCommandOutput) => void): void; + /** + * @see {@link GetObjectCommand} + */ + getObject(args: GetObjectCommandInput, options?: __HttpHandlerOptions): Promise; + getObject(args: GetObjectCommandInput, cb: (err: any, data?: GetObjectCommandOutput) => void): void; + getObject(args: GetObjectCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetObjectCommandOutput) => void): void; + /** + * @see {@link GetObjectAclCommand} + */ + getObjectAcl(args: GetObjectAclCommandInput, options?: __HttpHandlerOptions): Promise; + getObjectAcl(args: GetObjectAclCommandInput, cb: (err: any, data?: GetObjectAclCommandOutput) => void): void; + getObjectAcl(args: GetObjectAclCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetObjectAclCommandOutput) => void): void; + /** + * @see {@link GetObjectAttributesCommand} + */ + getObjectAttributes(args: GetObjectAttributesCommandInput, options?: __HttpHandlerOptions): Promise; + getObjectAttributes(args: GetObjectAttributesCommandInput, cb: (err: any, data?: GetObjectAttributesCommandOutput) => void): void; + getObjectAttributes(args: GetObjectAttributesCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetObjectAttributesCommandOutput) => void): void; + /** + * @see {@link GetObjectLegalHoldCommand} + */ + getObjectLegalHold(args: GetObjectLegalHoldCommandInput, options?: __HttpHandlerOptions): Promise; + getObjectLegalHold(args: GetObjectLegalHoldCommandInput, cb: (err: any, data?: GetObjectLegalHoldCommandOutput) => void): void; + getObjectLegalHold(args: GetObjectLegalHoldCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetObjectLegalHoldCommandOutput) => void): void; + /** + * @see {@link GetObjectLockConfigurationCommand} + */ + getObjectLockConfiguration(args: GetObjectLockConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + getObjectLockConfiguration(args: GetObjectLockConfigurationCommandInput, cb: (err: any, data?: GetObjectLockConfigurationCommandOutput) => void): void; + getObjectLockConfiguration(args: GetObjectLockConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetObjectLockConfigurationCommandOutput) => void): void; + /** + * @see {@link GetObjectRetentionCommand} + */ + getObjectRetention(args: GetObjectRetentionCommandInput, options?: __HttpHandlerOptions): Promise; + getObjectRetention(args: GetObjectRetentionCommandInput, cb: (err: any, data?: GetObjectRetentionCommandOutput) => void): void; + getObjectRetention(args: GetObjectRetentionCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetObjectRetentionCommandOutput) => void): void; + /** + * @see {@link GetObjectTaggingCommand} + */ + getObjectTagging(args: GetObjectTaggingCommandInput, options?: __HttpHandlerOptions): Promise; + getObjectTagging(args: GetObjectTaggingCommandInput, cb: (err: any, data?: GetObjectTaggingCommandOutput) => void): void; + getObjectTagging(args: GetObjectTaggingCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetObjectTaggingCommandOutput) => void): void; + /** + * @see {@link GetObjectTorrentCommand} + */ + getObjectTorrent(args: GetObjectTorrentCommandInput, options?: __HttpHandlerOptions): Promise; + getObjectTorrent(args: GetObjectTorrentCommandInput, cb: (err: any, data?: GetObjectTorrentCommandOutput) => void): void; + getObjectTorrent(args: GetObjectTorrentCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetObjectTorrentCommandOutput) => void): void; + /** + * @see {@link GetPublicAccessBlockCommand} + */ + getPublicAccessBlock(args: GetPublicAccessBlockCommandInput, options?: __HttpHandlerOptions): Promise; + getPublicAccessBlock(args: GetPublicAccessBlockCommandInput, cb: (err: any, data?: GetPublicAccessBlockCommandOutput) => void): void; + getPublicAccessBlock(args: GetPublicAccessBlockCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetPublicAccessBlockCommandOutput) => void): void; + /** + * @see {@link HeadBucketCommand} + */ + headBucket(args: HeadBucketCommandInput, options?: __HttpHandlerOptions): Promise; + headBucket(args: HeadBucketCommandInput, cb: (err: any, data?: HeadBucketCommandOutput) => void): void; + headBucket(args: HeadBucketCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: HeadBucketCommandOutput) => void): void; + /** + * @see {@link HeadObjectCommand} + */ + headObject(args: HeadObjectCommandInput, options?: __HttpHandlerOptions): Promise; + headObject(args: HeadObjectCommandInput, cb: (err: any, data?: HeadObjectCommandOutput) => void): void; + headObject(args: HeadObjectCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: HeadObjectCommandOutput) => void): void; + /** + * @see {@link ListBucketAnalyticsConfigurationsCommand} + */ + listBucketAnalyticsConfigurations(args: ListBucketAnalyticsConfigurationsCommandInput, options?: __HttpHandlerOptions): Promise; + listBucketAnalyticsConfigurations(args: ListBucketAnalyticsConfigurationsCommandInput, cb: (err: any, data?: ListBucketAnalyticsConfigurationsCommandOutput) => void): void; + listBucketAnalyticsConfigurations(args: ListBucketAnalyticsConfigurationsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListBucketAnalyticsConfigurationsCommandOutput) => void): void; + /** + * @see {@link ListBucketIntelligentTieringConfigurationsCommand} + */ + listBucketIntelligentTieringConfigurations(args: ListBucketIntelligentTieringConfigurationsCommandInput, options?: __HttpHandlerOptions): Promise; + listBucketIntelligentTieringConfigurations(args: ListBucketIntelligentTieringConfigurationsCommandInput, cb: (err: any, data?: ListBucketIntelligentTieringConfigurationsCommandOutput) => void): void; + listBucketIntelligentTieringConfigurations(args: ListBucketIntelligentTieringConfigurationsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListBucketIntelligentTieringConfigurationsCommandOutput) => void): void; + /** + * @see {@link ListBucketInventoryConfigurationsCommand} + */ + listBucketInventoryConfigurations(args: ListBucketInventoryConfigurationsCommandInput, options?: __HttpHandlerOptions): Promise; + listBucketInventoryConfigurations(args: ListBucketInventoryConfigurationsCommandInput, cb: (err: any, data?: ListBucketInventoryConfigurationsCommandOutput) => void): void; + listBucketInventoryConfigurations(args: ListBucketInventoryConfigurationsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListBucketInventoryConfigurationsCommandOutput) => void): void; + /** + * @see {@link ListBucketMetricsConfigurationsCommand} + */ + listBucketMetricsConfigurations(args: ListBucketMetricsConfigurationsCommandInput, options?: __HttpHandlerOptions): Promise; + listBucketMetricsConfigurations(args: ListBucketMetricsConfigurationsCommandInput, cb: (err: any, data?: ListBucketMetricsConfigurationsCommandOutput) => void): void; + listBucketMetricsConfigurations(args: ListBucketMetricsConfigurationsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListBucketMetricsConfigurationsCommandOutput) => void): void; + /** + * @see {@link ListBucketsCommand} + */ + listBuckets(): Promise; + listBuckets(args: ListBucketsCommandInput, options?: __HttpHandlerOptions): Promise; + listBuckets(args: ListBucketsCommandInput, cb: (err: any, data?: ListBucketsCommandOutput) => void): void; + listBuckets(args: ListBucketsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListBucketsCommandOutput) => void): void; + /** + * @see {@link ListDirectoryBucketsCommand} + */ + listDirectoryBuckets(): Promise; + listDirectoryBuckets(args: ListDirectoryBucketsCommandInput, options?: __HttpHandlerOptions): Promise; + listDirectoryBuckets(args: ListDirectoryBucketsCommandInput, cb: (err: any, data?: ListDirectoryBucketsCommandOutput) => void): void; + listDirectoryBuckets(args: ListDirectoryBucketsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListDirectoryBucketsCommandOutput) => void): void; + /** + * @see {@link ListMultipartUploadsCommand} + */ + listMultipartUploads(args: ListMultipartUploadsCommandInput, options?: __HttpHandlerOptions): Promise; + listMultipartUploads(args: ListMultipartUploadsCommandInput, cb: (err: any, data?: ListMultipartUploadsCommandOutput) => void): void; + listMultipartUploads(args: ListMultipartUploadsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListMultipartUploadsCommandOutput) => void): void; + /** + * @see {@link ListObjectsCommand} + */ + listObjects(args: ListObjectsCommandInput, options?: __HttpHandlerOptions): Promise; + listObjects(args: ListObjectsCommandInput, cb: (err: any, data?: ListObjectsCommandOutput) => void): void; + listObjects(args: ListObjectsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListObjectsCommandOutput) => void): void; + /** + * @see {@link ListObjectsV2Command} + */ + listObjectsV2(args: ListObjectsV2CommandInput, options?: __HttpHandlerOptions): Promise; + listObjectsV2(args: ListObjectsV2CommandInput, cb: (err: any, data?: ListObjectsV2CommandOutput) => void): void; + listObjectsV2(args: ListObjectsV2CommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListObjectsV2CommandOutput) => void): void; + /** + * @see {@link ListObjectVersionsCommand} + */ + listObjectVersions(args: ListObjectVersionsCommandInput, options?: __HttpHandlerOptions): Promise; + listObjectVersions(args: ListObjectVersionsCommandInput, cb: (err: any, data?: ListObjectVersionsCommandOutput) => void): void; + listObjectVersions(args: ListObjectVersionsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListObjectVersionsCommandOutput) => void): void; + /** + * @see {@link ListPartsCommand} + */ + listParts(args: ListPartsCommandInput, options?: __HttpHandlerOptions): Promise; + listParts(args: ListPartsCommandInput, cb: (err: any, data?: ListPartsCommandOutput) => void): void; + listParts(args: ListPartsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: ListPartsCommandOutput) => void): void; + /** + * @see {@link PutBucketAbacCommand} + */ + putBucketAbac(args: PutBucketAbacCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketAbac(args: PutBucketAbacCommandInput, cb: (err: any, data?: PutBucketAbacCommandOutput) => void): void; + putBucketAbac(args: PutBucketAbacCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketAbacCommandOutput) => void): void; + /** + * @see {@link PutBucketAccelerateConfigurationCommand} + */ + putBucketAccelerateConfiguration(args: PutBucketAccelerateConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketAccelerateConfiguration(args: PutBucketAccelerateConfigurationCommandInput, cb: (err: any, data?: PutBucketAccelerateConfigurationCommandOutput) => void): void; + putBucketAccelerateConfiguration(args: PutBucketAccelerateConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketAccelerateConfigurationCommandOutput) => void): void; + /** + * @see {@link PutBucketAclCommand} + */ + putBucketAcl(args: PutBucketAclCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketAcl(args: PutBucketAclCommandInput, cb: (err: any, data?: PutBucketAclCommandOutput) => void): void; + putBucketAcl(args: PutBucketAclCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketAclCommandOutput) => void): void; + /** + * @see {@link PutBucketAnalyticsConfigurationCommand} + */ + putBucketAnalyticsConfiguration(args: PutBucketAnalyticsConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketAnalyticsConfiguration(args: PutBucketAnalyticsConfigurationCommandInput, cb: (err: any, data?: PutBucketAnalyticsConfigurationCommandOutput) => void): void; + putBucketAnalyticsConfiguration(args: PutBucketAnalyticsConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketAnalyticsConfigurationCommandOutput) => void): void; + /** + * @see {@link PutBucketCorsCommand} + */ + putBucketCors(args: PutBucketCorsCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketCors(args: PutBucketCorsCommandInput, cb: (err: any, data?: PutBucketCorsCommandOutput) => void): void; + putBucketCors(args: PutBucketCorsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketCorsCommandOutput) => void): void; + /** + * @see {@link PutBucketEncryptionCommand} + */ + putBucketEncryption(args: PutBucketEncryptionCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketEncryption(args: PutBucketEncryptionCommandInput, cb: (err: any, data?: PutBucketEncryptionCommandOutput) => void): void; + putBucketEncryption(args: PutBucketEncryptionCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketEncryptionCommandOutput) => void): void; + /** + * @see {@link PutBucketIntelligentTieringConfigurationCommand} + */ + putBucketIntelligentTieringConfiguration(args: PutBucketIntelligentTieringConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketIntelligentTieringConfiguration(args: PutBucketIntelligentTieringConfigurationCommandInput, cb: (err: any, data?: PutBucketIntelligentTieringConfigurationCommandOutput) => void): void; + putBucketIntelligentTieringConfiguration(args: PutBucketIntelligentTieringConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketIntelligentTieringConfigurationCommandOutput) => void): void; + /** + * @see {@link PutBucketInventoryConfigurationCommand} + */ + putBucketInventoryConfiguration(args: PutBucketInventoryConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketInventoryConfiguration(args: PutBucketInventoryConfigurationCommandInput, cb: (err: any, data?: PutBucketInventoryConfigurationCommandOutput) => void): void; + putBucketInventoryConfiguration(args: PutBucketInventoryConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketInventoryConfigurationCommandOutput) => void): void; + /** + * @see {@link PutBucketLifecycleConfigurationCommand} + */ + putBucketLifecycleConfiguration(args: PutBucketLifecycleConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketLifecycleConfiguration(args: PutBucketLifecycleConfigurationCommandInput, cb: (err: any, data?: PutBucketLifecycleConfigurationCommandOutput) => void): void; + putBucketLifecycleConfiguration(args: PutBucketLifecycleConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketLifecycleConfigurationCommandOutput) => void): void; + /** + * @see {@link PutBucketLoggingCommand} + */ + putBucketLogging(args: PutBucketLoggingCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketLogging(args: PutBucketLoggingCommandInput, cb: (err: any, data?: PutBucketLoggingCommandOutput) => void): void; + putBucketLogging(args: PutBucketLoggingCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketLoggingCommandOutput) => void): void; + /** + * @see {@link PutBucketMetricsConfigurationCommand} + */ + putBucketMetricsConfiguration(args: PutBucketMetricsConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketMetricsConfiguration(args: PutBucketMetricsConfigurationCommandInput, cb: (err: any, data?: PutBucketMetricsConfigurationCommandOutput) => void): void; + putBucketMetricsConfiguration(args: PutBucketMetricsConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketMetricsConfigurationCommandOutput) => void): void; + /** + * @see {@link PutBucketNotificationConfigurationCommand} + */ + putBucketNotificationConfiguration(args: PutBucketNotificationConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketNotificationConfiguration(args: PutBucketNotificationConfigurationCommandInput, cb: (err: any, data?: PutBucketNotificationConfigurationCommandOutput) => void): void; + putBucketNotificationConfiguration(args: PutBucketNotificationConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketNotificationConfigurationCommandOutput) => void): void; + /** + * @see {@link PutBucketOwnershipControlsCommand} + */ + putBucketOwnershipControls(args: PutBucketOwnershipControlsCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketOwnershipControls(args: PutBucketOwnershipControlsCommandInput, cb: (err: any, data?: PutBucketOwnershipControlsCommandOutput) => void): void; + putBucketOwnershipControls(args: PutBucketOwnershipControlsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketOwnershipControlsCommandOutput) => void): void; + /** + * @see {@link PutBucketPolicyCommand} + */ + putBucketPolicy(args: PutBucketPolicyCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketPolicy(args: PutBucketPolicyCommandInput, cb: (err: any, data?: PutBucketPolicyCommandOutput) => void): void; + putBucketPolicy(args: PutBucketPolicyCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketPolicyCommandOutput) => void): void; + /** + * @see {@link PutBucketReplicationCommand} + */ + putBucketReplication(args: PutBucketReplicationCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketReplication(args: PutBucketReplicationCommandInput, cb: (err: any, data?: PutBucketReplicationCommandOutput) => void): void; + putBucketReplication(args: PutBucketReplicationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketReplicationCommandOutput) => void): void; + /** + * @see {@link PutBucketRequestPaymentCommand} + */ + putBucketRequestPayment(args: PutBucketRequestPaymentCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketRequestPayment(args: PutBucketRequestPaymentCommandInput, cb: (err: any, data?: PutBucketRequestPaymentCommandOutput) => void): void; + putBucketRequestPayment(args: PutBucketRequestPaymentCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketRequestPaymentCommandOutput) => void): void; + /** + * @see {@link PutBucketTaggingCommand} + */ + putBucketTagging(args: PutBucketTaggingCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketTagging(args: PutBucketTaggingCommandInput, cb: (err: any, data?: PutBucketTaggingCommandOutput) => void): void; + putBucketTagging(args: PutBucketTaggingCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketTaggingCommandOutput) => void): void; + /** + * @see {@link PutBucketVersioningCommand} + */ + putBucketVersioning(args: PutBucketVersioningCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketVersioning(args: PutBucketVersioningCommandInput, cb: (err: any, data?: PutBucketVersioningCommandOutput) => void): void; + putBucketVersioning(args: PutBucketVersioningCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketVersioningCommandOutput) => void): void; + /** + * @see {@link PutBucketWebsiteCommand} + */ + putBucketWebsite(args: PutBucketWebsiteCommandInput, options?: __HttpHandlerOptions): Promise; + putBucketWebsite(args: PutBucketWebsiteCommandInput, cb: (err: any, data?: PutBucketWebsiteCommandOutput) => void): void; + putBucketWebsite(args: PutBucketWebsiteCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutBucketWebsiteCommandOutput) => void): void; + /** + * @see {@link PutObjectCommand} + */ + putObject(args: PutObjectCommandInput, options?: __HttpHandlerOptions): Promise; + putObject(args: PutObjectCommandInput, cb: (err: any, data?: PutObjectCommandOutput) => void): void; + putObject(args: PutObjectCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutObjectCommandOutput) => void): void; + /** + * @see {@link PutObjectAclCommand} + */ + putObjectAcl(args: PutObjectAclCommandInput, options?: __HttpHandlerOptions): Promise; + putObjectAcl(args: PutObjectAclCommandInput, cb: (err: any, data?: PutObjectAclCommandOutput) => void): void; + putObjectAcl(args: PutObjectAclCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutObjectAclCommandOutput) => void): void; + /** + * @see {@link PutObjectLegalHoldCommand} + */ + putObjectLegalHold(args: PutObjectLegalHoldCommandInput, options?: __HttpHandlerOptions): Promise; + putObjectLegalHold(args: PutObjectLegalHoldCommandInput, cb: (err: any, data?: PutObjectLegalHoldCommandOutput) => void): void; + putObjectLegalHold(args: PutObjectLegalHoldCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutObjectLegalHoldCommandOutput) => void): void; + /** + * @see {@link PutObjectLockConfigurationCommand} + */ + putObjectLockConfiguration(args: PutObjectLockConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + putObjectLockConfiguration(args: PutObjectLockConfigurationCommandInput, cb: (err: any, data?: PutObjectLockConfigurationCommandOutput) => void): void; + putObjectLockConfiguration(args: PutObjectLockConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutObjectLockConfigurationCommandOutput) => void): void; + /** + * @see {@link PutObjectRetentionCommand} + */ + putObjectRetention(args: PutObjectRetentionCommandInput, options?: __HttpHandlerOptions): Promise; + putObjectRetention(args: PutObjectRetentionCommandInput, cb: (err: any, data?: PutObjectRetentionCommandOutput) => void): void; + putObjectRetention(args: PutObjectRetentionCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutObjectRetentionCommandOutput) => void): void; + /** + * @see {@link PutObjectTaggingCommand} + */ + putObjectTagging(args: PutObjectTaggingCommandInput, options?: __HttpHandlerOptions): Promise; + putObjectTagging(args: PutObjectTaggingCommandInput, cb: (err: any, data?: PutObjectTaggingCommandOutput) => void): void; + putObjectTagging(args: PutObjectTaggingCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutObjectTaggingCommandOutput) => void): void; + /** + * @see {@link PutPublicAccessBlockCommand} + */ + putPublicAccessBlock(args: PutPublicAccessBlockCommandInput, options?: __HttpHandlerOptions): Promise; + putPublicAccessBlock(args: PutPublicAccessBlockCommandInput, cb: (err: any, data?: PutPublicAccessBlockCommandOutput) => void): void; + putPublicAccessBlock(args: PutPublicAccessBlockCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: PutPublicAccessBlockCommandOutput) => void): void; + /** + * @see {@link RenameObjectCommand} + */ + renameObject(args: RenameObjectCommandInput, options?: __HttpHandlerOptions): Promise; + renameObject(args: RenameObjectCommandInput, cb: (err: any, data?: RenameObjectCommandOutput) => void): void; + renameObject(args: RenameObjectCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: RenameObjectCommandOutput) => void): void; + /** + * @see {@link RestoreObjectCommand} + */ + restoreObject(args: RestoreObjectCommandInput, options?: __HttpHandlerOptions): Promise; + restoreObject(args: RestoreObjectCommandInput, cb: (err: any, data?: RestoreObjectCommandOutput) => void): void; + restoreObject(args: RestoreObjectCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: RestoreObjectCommandOutput) => void): void; + /** + * @see {@link SelectObjectContentCommand} + */ + selectObjectContent(args: SelectObjectContentCommandInput, options?: __HttpHandlerOptions): Promise; + selectObjectContent(args: SelectObjectContentCommandInput, cb: (err: any, data?: SelectObjectContentCommandOutput) => void): void; + selectObjectContent(args: SelectObjectContentCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: SelectObjectContentCommandOutput) => void): void; + /** + * @see {@link UpdateBucketMetadataInventoryTableConfigurationCommand} + */ + updateBucketMetadataInventoryTableConfiguration(args: UpdateBucketMetadataInventoryTableConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + updateBucketMetadataInventoryTableConfiguration(args: UpdateBucketMetadataInventoryTableConfigurationCommandInput, cb: (err: any, data?: UpdateBucketMetadataInventoryTableConfigurationCommandOutput) => void): void; + updateBucketMetadataInventoryTableConfiguration(args: UpdateBucketMetadataInventoryTableConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: UpdateBucketMetadataInventoryTableConfigurationCommandOutput) => void): void; + /** + * @see {@link UpdateBucketMetadataJournalTableConfigurationCommand} + */ + updateBucketMetadataJournalTableConfiguration(args: UpdateBucketMetadataJournalTableConfigurationCommandInput, options?: __HttpHandlerOptions): Promise; + updateBucketMetadataJournalTableConfiguration(args: UpdateBucketMetadataJournalTableConfigurationCommandInput, cb: (err: any, data?: UpdateBucketMetadataJournalTableConfigurationCommandOutput) => void): void; + updateBucketMetadataJournalTableConfiguration(args: UpdateBucketMetadataJournalTableConfigurationCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: UpdateBucketMetadataJournalTableConfigurationCommandOutput) => void): void; + /** + * @see {@link UpdateObjectEncryptionCommand} + */ + updateObjectEncryption(args: UpdateObjectEncryptionCommandInput, options?: __HttpHandlerOptions): Promise; + updateObjectEncryption(args: UpdateObjectEncryptionCommandInput, cb: (err: any, data?: UpdateObjectEncryptionCommandOutput) => void): void; + updateObjectEncryption(args: UpdateObjectEncryptionCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: UpdateObjectEncryptionCommandOutput) => void): void; + /** + * @see {@link UploadPartCommand} + */ + uploadPart(args: UploadPartCommandInput, options?: __HttpHandlerOptions): Promise; + uploadPart(args: UploadPartCommandInput, cb: (err: any, data?: UploadPartCommandOutput) => void): void; + uploadPart(args: UploadPartCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: UploadPartCommandOutput) => void): void; + /** + * @see {@link UploadPartCopyCommand} + */ + uploadPartCopy(args: UploadPartCopyCommandInput, options?: __HttpHandlerOptions): Promise; + uploadPartCopy(args: UploadPartCopyCommandInput, cb: (err: any, data?: UploadPartCopyCommandOutput) => void): void; + uploadPartCopy(args: UploadPartCopyCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: UploadPartCopyCommandOutput) => void): void; + /** + * @see {@link WriteGetObjectResponseCommand} + */ + writeGetObjectResponse(args: WriteGetObjectResponseCommandInput, options?: __HttpHandlerOptions): Promise; + writeGetObjectResponse(args: WriteGetObjectResponseCommandInput, cb: (err: any, data?: WriteGetObjectResponseCommandOutput) => void): void; + writeGetObjectResponse(args: WriteGetObjectResponseCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: WriteGetObjectResponseCommandOutput) => void): void; + /** + * @see {@link ListBucketsCommand} + * @param args - command input. + * @param paginationConfig - optional pagination config. + * @returns AsyncIterable of {@link ListBucketsCommandOutput}. + */ + paginateListBuckets(args?: ListBucketsCommandInput, paginationConfig?: Omit): Paginator; + /** + * @see {@link ListDirectoryBucketsCommand} + * @param args - command input. + * @param paginationConfig - optional pagination config. + * @returns AsyncIterable of {@link ListDirectoryBucketsCommandOutput}. + */ + paginateListDirectoryBuckets(args?: ListDirectoryBucketsCommandInput, paginationConfig?: Omit): Paginator; + /** + * @see {@link ListObjectsV2Command} + * @param args - command input. + * @param paginationConfig - optional pagination config. + * @returns AsyncIterable of {@link ListObjectsV2CommandOutput}. + */ + paginateListObjectsV2(args: ListObjectsV2CommandInput, paginationConfig?: Omit): Paginator; + /** + * @see {@link ListPartsCommand} + * @param args - command input. + * @param paginationConfig - optional pagination config. + * @returns AsyncIterable of {@link ListPartsCommandOutput}. + */ + paginateListParts(args: ListPartsCommandInput, paginationConfig?: Omit): Paginator; + /** + * @see {@link HeadBucketCommand} + * @param args - command input. + * @param waiterConfig - `maxWaitTime` in seconds or waiter config object. + */ + waitUntilBucketExists(args: HeadBucketCommandInput, waiterConfig: number | Omit, "client">): Promise; + /** + * @see {@link HeadBucketCommand} + * @param args - command input. + * @param waiterConfig - `maxWaitTime` in seconds or waiter config object. + */ + waitUntilBucketNotExists(args: HeadBucketCommandInput, waiterConfig: number | Omit, "client">): Promise; + /** + * @see {@link HeadObjectCommand} + * @param args - command input. + * @param waiterConfig - `maxWaitTime` in seconds or waiter config object. + */ + waitUntilObjectExists(args: HeadObjectCommandInput, waiterConfig: number | Omit, "client">): Promise; + /** + * @see {@link HeadObjectCommand} + * @param args - command input. + * @param waiterConfig - `maxWaitTime` in seconds or waiter config object. + */ + waitUntilObjectNotExists(args: HeadObjectCommandInput, waiterConfig: number | Omit, "client">): Promise; +} +/** + *

+ * @public + */ +export declare class S3 extends S3Client implements S3 { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/S3Client.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/S3Client.d.ts new file mode 100644 index 0000000..0476708 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/S3Client.d.ts @@ -0,0 +1,339 @@ +import { type FlexibleChecksumsInputConfig, type FlexibleChecksumsResolvedConfig } from "@aws-sdk/middleware-flexible-checksums"; +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type S3InputConfig, type S3ResolvedConfig } from "@aws-sdk/middleware-sdk-s3"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import type { GetAwsChunkedEncodingStream } from "@aws-sdk/types"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EventStreamSerdeInputConfig, type EventStreamSerdeResolvedConfig } from "@smithy/eventstream-serde-config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { AwsCredentialIdentityProvider, BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, Decoder as __Decoder, Encoder as __Encoder, EventStreamSerdeProvider as __EventStreamSerdeProvider, HashConstructor as __HashConstructor, HttpHandlerOptions as __HttpHandlerOptions, Logger as __Logger, Provider as __Provider, SdkStreamMixinInjector as __SdkStreamMixinInjector, StreamCollector as __StreamCollector, StreamHasher as __StreamHasher, UrlParser as __UrlParser, UserAgent as __UserAgent } from "@smithy/types"; +import type { Readable as Readable } from "node:stream"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { AbortMultipartUploadCommandInput, AbortMultipartUploadCommandOutput } from "./commands/AbortMultipartUploadCommand"; +import type { CompleteMultipartUploadCommandInput, CompleteMultipartUploadCommandOutput } from "./commands/CompleteMultipartUploadCommand"; +import type { CopyObjectCommandInput, CopyObjectCommandOutput } from "./commands/CopyObjectCommand"; +import type { CreateBucketCommandInput, CreateBucketCommandOutput } from "./commands/CreateBucketCommand"; +import type { CreateBucketMetadataConfigurationCommandInput, CreateBucketMetadataConfigurationCommandOutput } from "./commands/CreateBucketMetadataConfigurationCommand"; +import type { CreateBucketMetadataTableConfigurationCommandInput, CreateBucketMetadataTableConfigurationCommandOutput } from "./commands/CreateBucketMetadataTableConfigurationCommand"; +import type { CreateMultipartUploadCommandInput, CreateMultipartUploadCommandOutput } from "./commands/CreateMultipartUploadCommand"; +import { type CreateSessionCommandInput, type CreateSessionCommandOutput } from "./commands/CreateSessionCommand"; +import type { DeleteBucketAnalyticsConfigurationCommandInput, DeleteBucketAnalyticsConfigurationCommandOutput } from "./commands/DeleteBucketAnalyticsConfigurationCommand"; +import type { DeleteBucketCommandInput, DeleteBucketCommandOutput } from "./commands/DeleteBucketCommand"; +import type { DeleteBucketCorsCommandInput, DeleteBucketCorsCommandOutput } from "./commands/DeleteBucketCorsCommand"; +import type { DeleteBucketEncryptionCommandInput, DeleteBucketEncryptionCommandOutput } from "./commands/DeleteBucketEncryptionCommand"; +import type { DeleteBucketIntelligentTieringConfigurationCommandInput, DeleteBucketIntelligentTieringConfigurationCommandOutput } from "./commands/DeleteBucketIntelligentTieringConfigurationCommand"; +import type { DeleteBucketInventoryConfigurationCommandInput, DeleteBucketInventoryConfigurationCommandOutput } from "./commands/DeleteBucketInventoryConfigurationCommand"; +import type { DeleteBucketLifecycleCommandInput, DeleteBucketLifecycleCommandOutput } from "./commands/DeleteBucketLifecycleCommand"; +import type { DeleteBucketMetadataConfigurationCommandInput, DeleteBucketMetadataConfigurationCommandOutput } from "./commands/DeleteBucketMetadataConfigurationCommand"; +import type { DeleteBucketMetadataTableConfigurationCommandInput, DeleteBucketMetadataTableConfigurationCommandOutput } from "./commands/DeleteBucketMetadataTableConfigurationCommand"; +import type { DeleteBucketMetricsConfigurationCommandInput, DeleteBucketMetricsConfigurationCommandOutput } from "./commands/DeleteBucketMetricsConfigurationCommand"; +import type { DeleteBucketOwnershipControlsCommandInput, DeleteBucketOwnershipControlsCommandOutput } from "./commands/DeleteBucketOwnershipControlsCommand"; +import type { DeleteBucketPolicyCommandInput, DeleteBucketPolicyCommandOutput } from "./commands/DeleteBucketPolicyCommand"; +import type { DeleteBucketReplicationCommandInput, DeleteBucketReplicationCommandOutput } from "./commands/DeleteBucketReplicationCommand"; +import type { DeleteBucketTaggingCommandInput, DeleteBucketTaggingCommandOutput } from "./commands/DeleteBucketTaggingCommand"; +import type { DeleteBucketWebsiteCommandInput, DeleteBucketWebsiteCommandOutput } from "./commands/DeleteBucketWebsiteCommand"; +import type { DeleteObjectCommandInput, DeleteObjectCommandOutput } from "./commands/DeleteObjectCommand"; +import type { DeleteObjectsCommandInput, DeleteObjectsCommandOutput } from "./commands/DeleteObjectsCommand"; +import type { DeleteObjectTaggingCommandInput, DeleteObjectTaggingCommandOutput } from "./commands/DeleteObjectTaggingCommand"; +import type { DeletePublicAccessBlockCommandInput, DeletePublicAccessBlockCommandOutput } from "./commands/DeletePublicAccessBlockCommand"; +import type { GetBucketAbacCommandInput, GetBucketAbacCommandOutput } from "./commands/GetBucketAbacCommand"; +import type { GetBucketAccelerateConfigurationCommandInput, GetBucketAccelerateConfigurationCommandOutput } from "./commands/GetBucketAccelerateConfigurationCommand"; +import type { GetBucketAclCommandInput, GetBucketAclCommandOutput } from "./commands/GetBucketAclCommand"; +import type { GetBucketAnalyticsConfigurationCommandInput, GetBucketAnalyticsConfigurationCommandOutput } from "./commands/GetBucketAnalyticsConfigurationCommand"; +import type { GetBucketCorsCommandInput, GetBucketCorsCommandOutput } from "./commands/GetBucketCorsCommand"; +import type { GetBucketEncryptionCommandInput, GetBucketEncryptionCommandOutput } from "./commands/GetBucketEncryptionCommand"; +import type { GetBucketIntelligentTieringConfigurationCommandInput, GetBucketIntelligentTieringConfigurationCommandOutput } from "./commands/GetBucketIntelligentTieringConfigurationCommand"; +import type { GetBucketInventoryConfigurationCommandInput, GetBucketInventoryConfigurationCommandOutput } from "./commands/GetBucketInventoryConfigurationCommand"; +import type { GetBucketLifecycleConfigurationCommandInput, GetBucketLifecycleConfigurationCommandOutput } from "./commands/GetBucketLifecycleConfigurationCommand"; +import type { GetBucketLocationCommandInput, GetBucketLocationCommandOutput } from "./commands/GetBucketLocationCommand"; +import type { GetBucketLoggingCommandInput, GetBucketLoggingCommandOutput } from "./commands/GetBucketLoggingCommand"; +import type { GetBucketMetadataConfigurationCommandInput, GetBucketMetadataConfigurationCommandOutput } from "./commands/GetBucketMetadataConfigurationCommand"; +import type { GetBucketMetadataTableConfigurationCommandInput, GetBucketMetadataTableConfigurationCommandOutput } from "./commands/GetBucketMetadataTableConfigurationCommand"; +import type { GetBucketMetricsConfigurationCommandInput, GetBucketMetricsConfigurationCommandOutput } from "./commands/GetBucketMetricsConfigurationCommand"; +import type { GetBucketNotificationConfigurationCommandInput, GetBucketNotificationConfigurationCommandOutput } from "./commands/GetBucketNotificationConfigurationCommand"; +import type { GetBucketOwnershipControlsCommandInput, GetBucketOwnershipControlsCommandOutput } from "./commands/GetBucketOwnershipControlsCommand"; +import type { GetBucketPolicyCommandInput, GetBucketPolicyCommandOutput } from "./commands/GetBucketPolicyCommand"; +import type { GetBucketPolicyStatusCommandInput, GetBucketPolicyStatusCommandOutput } from "./commands/GetBucketPolicyStatusCommand"; +import type { GetBucketReplicationCommandInput, GetBucketReplicationCommandOutput } from "./commands/GetBucketReplicationCommand"; +import type { GetBucketRequestPaymentCommandInput, GetBucketRequestPaymentCommandOutput } from "./commands/GetBucketRequestPaymentCommand"; +import type { GetBucketTaggingCommandInput, GetBucketTaggingCommandOutput } from "./commands/GetBucketTaggingCommand"; +import type { GetBucketVersioningCommandInput, GetBucketVersioningCommandOutput } from "./commands/GetBucketVersioningCommand"; +import type { GetBucketWebsiteCommandInput, GetBucketWebsiteCommandOutput } from "./commands/GetBucketWebsiteCommand"; +import type { GetObjectAclCommandInput, GetObjectAclCommandOutput } from "./commands/GetObjectAclCommand"; +import type { GetObjectAttributesCommandInput, GetObjectAttributesCommandOutput } from "./commands/GetObjectAttributesCommand"; +import type { GetObjectCommandInput, GetObjectCommandOutput } from "./commands/GetObjectCommand"; +import type { GetObjectLegalHoldCommandInput, GetObjectLegalHoldCommandOutput } from "./commands/GetObjectLegalHoldCommand"; +import type { GetObjectLockConfigurationCommandInput, GetObjectLockConfigurationCommandOutput } from "./commands/GetObjectLockConfigurationCommand"; +import type { GetObjectRetentionCommandInput, GetObjectRetentionCommandOutput } from "./commands/GetObjectRetentionCommand"; +import type { GetObjectTaggingCommandInput, GetObjectTaggingCommandOutput } from "./commands/GetObjectTaggingCommand"; +import type { GetObjectTorrentCommandInput, GetObjectTorrentCommandOutput } from "./commands/GetObjectTorrentCommand"; +import type { GetPublicAccessBlockCommandInput, GetPublicAccessBlockCommandOutput } from "./commands/GetPublicAccessBlockCommand"; +import type { HeadBucketCommandInput, HeadBucketCommandOutput } from "./commands/HeadBucketCommand"; +import type { HeadObjectCommandInput, HeadObjectCommandOutput } from "./commands/HeadObjectCommand"; +import type { ListBucketAnalyticsConfigurationsCommandInput, ListBucketAnalyticsConfigurationsCommandOutput } from "./commands/ListBucketAnalyticsConfigurationsCommand"; +import type { ListBucketIntelligentTieringConfigurationsCommandInput, ListBucketIntelligentTieringConfigurationsCommandOutput } from "./commands/ListBucketIntelligentTieringConfigurationsCommand"; +import type { ListBucketInventoryConfigurationsCommandInput, ListBucketInventoryConfigurationsCommandOutput } from "./commands/ListBucketInventoryConfigurationsCommand"; +import type { ListBucketMetricsConfigurationsCommandInput, ListBucketMetricsConfigurationsCommandOutput } from "./commands/ListBucketMetricsConfigurationsCommand"; +import type { ListBucketsCommandInput, ListBucketsCommandOutput } from "./commands/ListBucketsCommand"; +import type { ListDirectoryBucketsCommandInput, ListDirectoryBucketsCommandOutput } from "./commands/ListDirectoryBucketsCommand"; +import type { ListMultipartUploadsCommandInput, ListMultipartUploadsCommandOutput } from "./commands/ListMultipartUploadsCommand"; +import type { ListObjectsCommandInput, ListObjectsCommandOutput } from "./commands/ListObjectsCommand"; +import type { ListObjectsV2CommandInput, ListObjectsV2CommandOutput } from "./commands/ListObjectsV2Command"; +import type { ListObjectVersionsCommandInput, ListObjectVersionsCommandOutput } from "./commands/ListObjectVersionsCommand"; +import type { ListPartsCommandInput, ListPartsCommandOutput } from "./commands/ListPartsCommand"; +import type { PutBucketAbacCommandInput, PutBucketAbacCommandOutput } from "./commands/PutBucketAbacCommand"; +import type { PutBucketAccelerateConfigurationCommandInput, PutBucketAccelerateConfigurationCommandOutput } from "./commands/PutBucketAccelerateConfigurationCommand"; +import type { PutBucketAclCommandInput, PutBucketAclCommandOutput } from "./commands/PutBucketAclCommand"; +import type { PutBucketAnalyticsConfigurationCommandInput, PutBucketAnalyticsConfigurationCommandOutput } from "./commands/PutBucketAnalyticsConfigurationCommand"; +import type { PutBucketCorsCommandInput, PutBucketCorsCommandOutput } from "./commands/PutBucketCorsCommand"; +import type { PutBucketEncryptionCommandInput, PutBucketEncryptionCommandOutput } from "./commands/PutBucketEncryptionCommand"; +import type { PutBucketIntelligentTieringConfigurationCommandInput, PutBucketIntelligentTieringConfigurationCommandOutput } from "./commands/PutBucketIntelligentTieringConfigurationCommand"; +import type { PutBucketInventoryConfigurationCommandInput, PutBucketInventoryConfigurationCommandOutput } from "./commands/PutBucketInventoryConfigurationCommand"; +import type { PutBucketLifecycleConfigurationCommandInput, PutBucketLifecycleConfigurationCommandOutput } from "./commands/PutBucketLifecycleConfigurationCommand"; +import type { PutBucketLoggingCommandInput, PutBucketLoggingCommandOutput } from "./commands/PutBucketLoggingCommand"; +import type { PutBucketMetricsConfigurationCommandInput, PutBucketMetricsConfigurationCommandOutput } from "./commands/PutBucketMetricsConfigurationCommand"; +import type { PutBucketNotificationConfigurationCommandInput, PutBucketNotificationConfigurationCommandOutput } from "./commands/PutBucketNotificationConfigurationCommand"; +import type { PutBucketOwnershipControlsCommandInput, PutBucketOwnershipControlsCommandOutput } from "./commands/PutBucketOwnershipControlsCommand"; +import type { PutBucketPolicyCommandInput, PutBucketPolicyCommandOutput } from "./commands/PutBucketPolicyCommand"; +import type { PutBucketReplicationCommandInput, PutBucketReplicationCommandOutput } from "./commands/PutBucketReplicationCommand"; +import type { PutBucketRequestPaymentCommandInput, PutBucketRequestPaymentCommandOutput } from "./commands/PutBucketRequestPaymentCommand"; +import type { PutBucketTaggingCommandInput, PutBucketTaggingCommandOutput } from "./commands/PutBucketTaggingCommand"; +import type { PutBucketVersioningCommandInput, PutBucketVersioningCommandOutput } from "./commands/PutBucketVersioningCommand"; +import type { PutBucketWebsiteCommandInput, PutBucketWebsiteCommandOutput } from "./commands/PutBucketWebsiteCommand"; +import type { PutObjectAclCommandInput, PutObjectAclCommandOutput } from "./commands/PutObjectAclCommand"; +import type { PutObjectCommandInput, PutObjectCommandOutput } from "./commands/PutObjectCommand"; +import type { PutObjectLegalHoldCommandInput, PutObjectLegalHoldCommandOutput } from "./commands/PutObjectLegalHoldCommand"; +import type { PutObjectLockConfigurationCommandInput, PutObjectLockConfigurationCommandOutput } from "./commands/PutObjectLockConfigurationCommand"; +import type { PutObjectRetentionCommandInput, PutObjectRetentionCommandOutput } from "./commands/PutObjectRetentionCommand"; +import type { PutObjectTaggingCommandInput, PutObjectTaggingCommandOutput } from "./commands/PutObjectTaggingCommand"; +import type { PutPublicAccessBlockCommandInput, PutPublicAccessBlockCommandOutput } from "./commands/PutPublicAccessBlockCommand"; +import type { RenameObjectCommandInput, RenameObjectCommandOutput } from "./commands/RenameObjectCommand"; +import type { RestoreObjectCommandInput, RestoreObjectCommandOutput } from "./commands/RestoreObjectCommand"; +import type { SelectObjectContentCommandInput, SelectObjectContentCommandOutput } from "./commands/SelectObjectContentCommand"; +import type { UpdateBucketMetadataInventoryTableConfigurationCommandInput, UpdateBucketMetadataInventoryTableConfigurationCommandOutput } from "./commands/UpdateBucketMetadataInventoryTableConfigurationCommand"; +import type { UpdateBucketMetadataJournalTableConfigurationCommandInput, UpdateBucketMetadataJournalTableConfigurationCommandOutput } from "./commands/UpdateBucketMetadataJournalTableConfigurationCommand"; +import type { UpdateObjectEncryptionCommandInput, UpdateObjectEncryptionCommandOutput } from "./commands/UpdateObjectEncryptionCommand"; +import type { UploadPartCommandInput, UploadPartCommandOutput } from "./commands/UploadPartCommand"; +import type { UploadPartCopyCommandInput, UploadPartCopyCommandOutput } from "./commands/UploadPartCopyCommand"; +import type { WriteGetObjectResponseCommandInput, WriteGetObjectResponseCommandOutput } from "./commands/WriteGetObjectResponseCommand"; +import { type ClientInputEndpointParameters, type ClientResolvedEndpointParameters, type EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = AbortMultipartUploadCommandInput | CompleteMultipartUploadCommandInput | CopyObjectCommandInput | CreateBucketCommandInput | CreateBucketMetadataConfigurationCommandInput | CreateBucketMetadataTableConfigurationCommandInput | CreateMultipartUploadCommandInput | CreateSessionCommandInput | DeleteBucketAnalyticsConfigurationCommandInput | DeleteBucketCommandInput | DeleteBucketCorsCommandInput | DeleteBucketEncryptionCommandInput | DeleteBucketIntelligentTieringConfigurationCommandInput | DeleteBucketInventoryConfigurationCommandInput | DeleteBucketLifecycleCommandInput | DeleteBucketMetadataConfigurationCommandInput | DeleteBucketMetadataTableConfigurationCommandInput | DeleteBucketMetricsConfigurationCommandInput | DeleteBucketOwnershipControlsCommandInput | DeleteBucketPolicyCommandInput | DeleteBucketReplicationCommandInput | DeleteBucketTaggingCommandInput | DeleteBucketWebsiteCommandInput | DeleteObjectCommandInput | DeleteObjectTaggingCommandInput | DeleteObjectsCommandInput | DeletePublicAccessBlockCommandInput | GetBucketAbacCommandInput | GetBucketAccelerateConfigurationCommandInput | GetBucketAclCommandInput | GetBucketAnalyticsConfigurationCommandInput | GetBucketCorsCommandInput | GetBucketEncryptionCommandInput | GetBucketIntelligentTieringConfigurationCommandInput | GetBucketInventoryConfigurationCommandInput | GetBucketLifecycleConfigurationCommandInput | GetBucketLocationCommandInput | GetBucketLoggingCommandInput | GetBucketMetadataConfigurationCommandInput | GetBucketMetadataTableConfigurationCommandInput | GetBucketMetricsConfigurationCommandInput | GetBucketNotificationConfigurationCommandInput | GetBucketOwnershipControlsCommandInput | GetBucketPolicyCommandInput | GetBucketPolicyStatusCommandInput | GetBucketReplicationCommandInput | GetBucketRequestPaymentCommandInput | GetBucketTaggingCommandInput | GetBucketVersioningCommandInput | GetBucketWebsiteCommandInput | GetObjectAclCommandInput | GetObjectAttributesCommandInput | GetObjectCommandInput | GetObjectLegalHoldCommandInput | GetObjectLockConfigurationCommandInput | GetObjectRetentionCommandInput | GetObjectTaggingCommandInput | GetObjectTorrentCommandInput | GetPublicAccessBlockCommandInput | HeadBucketCommandInput | HeadObjectCommandInput | ListBucketAnalyticsConfigurationsCommandInput | ListBucketIntelligentTieringConfigurationsCommandInput | ListBucketInventoryConfigurationsCommandInput | ListBucketMetricsConfigurationsCommandInput | ListBucketsCommandInput | ListDirectoryBucketsCommandInput | ListMultipartUploadsCommandInput | ListObjectVersionsCommandInput | ListObjectsCommandInput | ListObjectsV2CommandInput | ListPartsCommandInput | PutBucketAbacCommandInput | PutBucketAccelerateConfigurationCommandInput | PutBucketAclCommandInput | PutBucketAnalyticsConfigurationCommandInput | PutBucketCorsCommandInput | PutBucketEncryptionCommandInput | PutBucketIntelligentTieringConfigurationCommandInput | PutBucketInventoryConfigurationCommandInput | PutBucketLifecycleConfigurationCommandInput | PutBucketLoggingCommandInput | PutBucketMetricsConfigurationCommandInput | PutBucketNotificationConfigurationCommandInput | PutBucketOwnershipControlsCommandInput | PutBucketPolicyCommandInput | PutBucketReplicationCommandInput | PutBucketRequestPaymentCommandInput | PutBucketTaggingCommandInput | PutBucketVersioningCommandInput | PutBucketWebsiteCommandInput | PutObjectAclCommandInput | PutObjectCommandInput | PutObjectLegalHoldCommandInput | PutObjectLockConfigurationCommandInput | PutObjectRetentionCommandInput | PutObjectTaggingCommandInput | PutPublicAccessBlockCommandInput | RenameObjectCommandInput | RestoreObjectCommandInput | SelectObjectContentCommandInput | UpdateBucketMetadataInventoryTableConfigurationCommandInput | UpdateBucketMetadataJournalTableConfigurationCommandInput | UpdateObjectEncryptionCommandInput | UploadPartCommandInput | UploadPartCopyCommandInput | WriteGetObjectResponseCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = AbortMultipartUploadCommandOutput | CompleteMultipartUploadCommandOutput | CopyObjectCommandOutput | CreateBucketCommandOutput | CreateBucketMetadataConfigurationCommandOutput | CreateBucketMetadataTableConfigurationCommandOutput | CreateMultipartUploadCommandOutput | CreateSessionCommandOutput | DeleteBucketAnalyticsConfigurationCommandOutput | DeleteBucketCommandOutput | DeleteBucketCorsCommandOutput | DeleteBucketEncryptionCommandOutput | DeleteBucketIntelligentTieringConfigurationCommandOutput | DeleteBucketInventoryConfigurationCommandOutput | DeleteBucketLifecycleCommandOutput | DeleteBucketMetadataConfigurationCommandOutput | DeleteBucketMetadataTableConfigurationCommandOutput | DeleteBucketMetricsConfigurationCommandOutput | DeleteBucketOwnershipControlsCommandOutput | DeleteBucketPolicyCommandOutput | DeleteBucketReplicationCommandOutput | DeleteBucketTaggingCommandOutput | DeleteBucketWebsiteCommandOutput | DeleteObjectCommandOutput | DeleteObjectTaggingCommandOutput | DeleteObjectsCommandOutput | DeletePublicAccessBlockCommandOutput | GetBucketAbacCommandOutput | GetBucketAccelerateConfigurationCommandOutput | GetBucketAclCommandOutput | GetBucketAnalyticsConfigurationCommandOutput | GetBucketCorsCommandOutput | GetBucketEncryptionCommandOutput | GetBucketIntelligentTieringConfigurationCommandOutput | GetBucketInventoryConfigurationCommandOutput | GetBucketLifecycleConfigurationCommandOutput | GetBucketLocationCommandOutput | GetBucketLoggingCommandOutput | GetBucketMetadataConfigurationCommandOutput | GetBucketMetadataTableConfigurationCommandOutput | GetBucketMetricsConfigurationCommandOutput | GetBucketNotificationConfigurationCommandOutput | GetBucketOwnershipControlsCommandOutput | GetBucketPolicyCommandOutput | GetBucketPolicyStatusCommandOutput | GetBucketReplicationCommandOutput | GetBucketRequestPaymentCommandOutput | GetBucketTaggingCommandOutput | GetBucketVersioningCommandOutput | GetBucketWebsiteCommandOutput | GetObjectAclCommandOutput | GetObjectAttributesCommandOutput | GetObjectCommandOutput | GetObjectLegalHoldCommandOutput | GetObjectLockConfigurationCommandOutput | GetObjectRetentionCommandOutput | GetObjectTaggingCommandOutput | GetObjectTorrentCommandOutput | GetPublicAccessBlockCommandOutput | HeadBucketCommandOutput | HeadObjectCommandOutput | ListBucketAnalyticsConfigurationsCommandOutput | ListBucketIntelligentTieringConfigurationsCommandOutput | ListBucketInventoryConfigurationsCommandOutput | ListBucketMetricsConfigurationsCommandOutput | ListBucketsCommandOutput | ListDirectoryBucketsCommandOutput | ListMultipartUploadsCommandOutput | ListObjectVersionsCommandOutput | ListObjectsCommandOutput | ListObjectsV2CommandOutput | ListPartsCommandOutput | PutBucketAbacCommandOutput | PutBucketAccelerateConfigurationCommandOutput | PutBucketAclCommandOutput | PutBucketAnalyticsConfigurationCommandOutput | PutBucketCorsCommandOutput | PutBucketEncryptionCommandOutput | PutBucketIntelligentTieringConfigurationCommandOutput | PutBucketInventoryConfigurationCommandOutput | PutBucketLifecycleConfigurationCommandOutput | PutBucketLoggingCommandOutput | PutBucketMetricsConfigurationCommandOutput | PutBucketNotificationConfigurationCommandOutput | PutBucketOwnershipControlsCommandOutput | PutBucketPolicyCommandOutput | PutBucketReplicationCommandOutput | PutBucketRequestPaymentCommandOutput | PutBucketTaggingCommandOutput | PutBucketVersioningCommandOutput | PutBucketWebsiteCommandOutput | PutObjectAclCommandOutput | PutObjectCommandOutput | PutObjectLegalHoldCommandOutput | PutObjectLockConfigurationCommandOutput | PutObjectRetentionCommandOutput | PutObjectTaggingCommandOutput | PutPublicAccessBlockCommandOutput | RenameObjectCommandOutput | RestoreObjectCommandOutput | SelectObjectContentCommandOutput | UpdateBucketMetadataInventoryTableConfigurationCommandOutput | UpdateBucketMetadataJournalTableConfigurationCommandOutput | UpdateObjectEncryptionCommandOutput | UploadPartCommandOutput | UploadPartCopyCommandOutput | WriteGetObjectResponseCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: __Provider<__UserAgent>; + /** + * A function that, given a hash constructor and a stream, calculates the + * hash of the streamed value. + * @internal + */ + streamHasher?: __StreamHasher | __StreamHasher; + /** + * A constructor for a class implementing the {@link __Checksum} interface + * that computes MD5 hashes. + * @internal + */ + md5?: __ChecksumConstructor | __HashConstructor; + /** + * A constructor for a class implementing the {@link __Checksum} interface + * that computes SHA1 hashes. + * @internal + */ + sha1?: __ChecksumConstructor | __HashConstructor; + /** + * A function that returns Readable Stream which follows aws-chunked encoding stream. + * @internal + */ + getAwsChunkedEncodingStream?: GetAwsChunkedEncodingStream; + /** + * Default credentials provider; Not available in browser runtime. + * @deprecated + * @internal + */ + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The function that provides necessary utilities for generating and parsing event stream + */ + eventStreamSerdeProvider?: __EventStreamSerdeProvider; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; + /** + * Whether to escape request path when signing the request. + */ + signingEscapePath?: boolean; + /** + * Whether to override the request region with the region inferred from requested resource's ARN. Defaults to undefined. + */ + useArnRegion?: boolean | undefined | __Provider; + /** + * The internal function that inject utilities to runtime-specific stream to help users consume the data + * @internal + */ + sdkStreamMixin?: __SdkStreamMixinInjector; +} +/** + * @public + */ +export type S3ClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & FlexibleChecksumsInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & EventStreamSerdeInputConfig & HttpAuthSchemeInputConfig & S3InputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of S3Client class constructor that set the region, credentials and other options. + */ +export interface S3ClientConfig extends S3ClientConfigType { +} +/** + * @public + */ +export type S3ClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & FlexibleChecksumsResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & EventStreamSerdeResolvedConfig & HttpAuthSchemeResolvedConfig & S3ResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of S3Client class. This is resolved and normalized from the {@link S3ClientConfig | constructor configuration interface}. + */ +export interface S3ClientResolvedConfig extends S3ClientResolvedConfigType { +} +/** + *

+ * @public + */ +export declare class S3Client extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, S3ClientResolvedConfig> { + /** + * The resolved configuration of S3Client class. This is resolved and normalized from the {@link S3ClientConfig | constructor configuration interface}. + */ + readonly config: S3ClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..6f03fbb --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,29 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, HttpAuthScheme } from "@smithy/types"; +import type { S3HttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: S3HttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): S3HttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: S3HttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..09fa389 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,83 @@ +import { AwsSdkSigV4AAuthInputConfig, AwsSdkSigV4AAuthResolvedConfig, AwsSdkSigV4APreviouslyResolved, AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core/httpAuthSchemes"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { EndpointParameters } from "../endpoint/EndpointParameters"; +import { S3ClientResolvedConfig } from "../S3Client"; +/** + * @internal + */ +interface _S3HttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface S3HttpAuthSchemeParameters extends _S3HttpAuthSchemeParameters, EndpointParameters { + region?: string; +} +/** + * @internal + */ +export interface S3HttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultS3HttpAuthSchemeParametersProvider: S3HttpAuthSchemeParametersProvider; +/** + * @internal + */ +export interface S3HttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultS3HttpAuthSchemeProvider: S3HttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AAuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: S3HttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4AAuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: S3HttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved & AwsSdkSigV4APreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/AbortMultipartUploadCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/AbortMultipartUploadCommand.d.ts new file mode 100644 index 0000000..5944f5f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/AbortMultipartUploadCommand.d.ts @@ -0,0 +1,182 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { AbortMultipartUploadOutput, AbortMultipartUploadRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link AbortMultipartUploadCommand}. + */ +export interface AbortMultipartUploadCommandInput extends AbortMultipartUploadRequest { +} +/** + * @public + * + * The output of {@link AbortMultipartUploadCommand}. + */ +export interface AbortMultipartUploadCommandOutput extends AbortMultipartUploadOutput, __MetadataBearer { +} +declare const AbortMultipartUploadCommand_base: { + new (input: AbortMultipartUploadCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: AbortMultipartUploadCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

This operation aborts a multipart upload. After a multipart upload is aborted, no additional parts + * can be uploaded using that upload ID. The storage consumed by any previously uploaded parts will be + * freed. However, if any part uploads are currently in progress, those part uploads might or might not + * succeed. As a result, it might be necessary to abort a given multipart upload multiple times in order to + * completely free all storage consumed by all parts.

+ *

To verify that all parts have been removed and prevent getting charged for the part storage, you + * should call the ListParts API operation and ensure that the parts list is empty.

+ * + *
    + *
  • + *

    + * Directory buckets - If multipart uploads in a + * directory bucket are in progress, you can't delete the bucket until all the in-progress multipart + * uploads are aborted or completed. To delete these in-progress multipart uploads, use the + * ListMultipartUploads operation to list the in-progress multipart uploads in the + * bucket and use the AbortMultipartUpload operation to abort all the in-progress + * multipart uploads.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - For information + * about permissions required to use the multipart upload, see Multipart Upload and Permissions in + * the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to AbortMultipartUpload:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, AbortMultipartUploadCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, AbortMultipartUploadCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // AbortMultipartUploadRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * UploadId: "STRING_VALUE", // required + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * IfMatchInitiatedTime: new Date("TIMESTAMP"), + * }; + * const command = new AbortMultipartUploadCommand(input); + * const response = await client.send(command); + * // { // AbortMultipartUploadOutput + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param AbortMultipartUploadCommandInput - {@link AbortMultipartUploadCommandInput} + * @returns {@link AbortMultipartUploadCommandOutput} + * @see {@link AbortMultipartUploadCommandInput} for command's `input` shape. + * @see {@link AbortMultipartUploadCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link NoSuchUpload} (client fault) + *

The specified multipart upload does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To abort a multipart upload + * ```javascript + * // The following example aborts a multipart upload. + * const input = { + * Bucket: "examplebucket", + * Key: "bigobject", + * UploadId: "xadcOB_7YPBOJuoFiQ9cz4P3Pe6FIZwO4f7wN93uHsNBEw97pl5eNwzExg0LAT2dUN91cOmrEQHDsP3WA60CEg--" + * }; + * const command = new AbortMultipartUploadCommand(input); + * const response = await client.send(command); + * /* response is + * { /* empty *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class AbortMultipartUploadCommand extends AbortMultipartUploadCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: AbortMultipartUploadRequest; + output: AbortMultipartUploadOutput; + }; + sdk: { + input: AbortMultipartUploadCommandInput; + output: AbortMultipartUploadCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CompleteMultipartUploadCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CompleteMultipartUploadCommand.d.ts new file mode 100644 index 0000000..59effb2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CompleteMultipartUploadCommand.d.ts @@ -0,0 +1,311 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CompleteMultipartUploadOutput, CompleteMultipartUploadRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CompleteMultipartUploadCommand}. + */ +export interface CompleteMultipartUploadCommandInput extends CompleteMultipartUploadRequest { +} +/** + * @public + * + * The output of {@link CompleteMultipartUploadCommand}. + */ +export interface CompleteMultipartUploadCommandOutput extends CompleteMultipartUploadOutput, __MetadataBearer { +} +declare const CompleteMultipartUploadCommand_base: { + new (input: CompleteMultipartUploadCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CompleteMultipartUploadCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Completes a multipart upload by assembling previously uploaded parts.

+ *

You first initiate the multipart upload and then upload all parts using the UploadPart operation or the + * UploadPartCopy + * operation. After successfully uploading all relevant parts of an upload, you call this + * CompleteMultipartUpload operation to complete the upload. Upon receiving this request, + * Amazon S3 concatenates all the parts in ascending order by part number to create a new object. In the + * CompleteMultipartUpload request, you must provide the parts list and ensure that the parts list is + * complete. The CompleteMultipartUpload API operation concatenates the parts that you provide in the list. + * For each part in the list, you must provide the PartNumber value and the ETag + * value that are returned after that part was uploaded.

+ *

The processing of a CompleteMultipartUpload request could take several minutes to finalize. After + * Amazon S3 begins processing the request, it sends an HTTP response header that specifies a 200 + * OK response. While processing is in progress, Amazon S3 periodically sends white space characters to + * keep the connection from timing out. A request could fail after the initial 200 OK response + * has been sent. This means that a 200 OK response can contain either a success or an error. + * The error response might be embedded in the 200 OK response. If you call this API operation + * directly, make sure to design your application to parse the contents of the response and handle it + * appropriately. If you use Amazon Web Services SDKs, SDKs handle this condition. The SDKs detect the embedded error and + * apply error handling per your configuration settings (including automatically retrying the request as + * appropriate). If the condition persists, the SDKs throw an exception (or, for the SDKs that don't use + * exceptions, they return an error).

+ *

Note that if CompleteMultipartUpload fails, applications should be prepared to retry + * any failed requests (including 500 error responses). For more information, see Amazon S3 Error Best + * Practices.

+ * + *

You can't use Content-Type: application/x-www-form-urlencoded for the + * CompleteMultipartUpload requests. Also, if you don't provide a Content-Type header, + * CompleteMultipartUpload can still return a 200 OK response.

+ *
+ *

For more information about multipart uploads, see Uploading Objects Using Multipart Upload in + * the Amazon S3 User Guide.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - For information + * about permissions required to use the multipart upload API, see Multipart Upload and Permissions in + * the Amazon S3 User Guide.

    + *

    If you provide an additional checksum value in your MultipartUpload requests and the + * object is encrypted with Key Management Service, you must have permission to use the + * kms:Decrypt action for the CompleteMultipartUpload request to + * succeed.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *

    If the object is encrypted with SSE-KMS, you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key.

    + *
  • + *
+ *
+ *
Special errors
+ *
+ *
    + *
  • + *

    Error Code: EntityTooSmall + *

    + *
      + *
    • + *

      Description: Your proposed upload is smaller than the minimum allowed object size. + * Each part must be at least 5 MB in size, except the last part.

      + *
    • + *
    • + *

      HTTP Status Code: 400 Bad Request

      + *
    • + *
    + *
  • + *
  • + *

    Error Code: InvalidPart + *

    + *
      + *
    • + *

      Description: One or more of the specified parts could not be found. The part might not + * have been uploaded, or the specified ETag might not have matched the uploaded part's + * ETag.

      + *
    • + *
    • + *

      HTTP Status Code: 400 Bad Request

      + *
    • + *
    + *
  • + *
  • + *

    Error Code: InvalidPartOrder + *

    + *
      + *
    • + *

      Description: The list of parts was not in ascending order. The parts list must be + * specified in order by part number.

      + *
    • + *
    • + *

      HTTP Status Code: 400 Bad Request

      + *
    • + *
    + *
  • + *
  • + *

    Error Code: NoSuchUpload + *

    + *
      + *
    • + *

      Description: The specified multipart upload does not exist. The upload ID might be + * invalid, or the multipart upload might have been aborted or completed.

      + *
    • + *
    • + *

      HTTP Status Code: 404 Not Found

      + *
    • + *
    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to CompleteMultipartUpload:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, CompleteMultipartUploadCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, CompleteMultipartUploadCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // CompleteMultipartUploadRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * MultipartUpload: { // CompletedMultipartUpload + * Parts: [ // CompletedPartList + * { // CompletedPart + * ETag: "STRING_VALUE", + * ChecksumCRC32: "STRING_VALUE", + * ChecksumCRC32C: "STRING_VALUE", + * ChecksumCRC64NVME: "STRING_VALUE", + * ChecksumSHA1: "STRING_VALUE", + * ChecksumSHA256: "STRING_VALUE", + * PartNumber: Number("int"), + * }, + * ], + * }, + * UploadId: "STRING_VALUE", // required + * ChecksumCRC32: "STRING_VALUE", + * ChecksumCRC32C: "STRING_VALUE", + * ChecksumCRC64NVME: "STRING_VALUE", + * ChecksumSHA1: "STRING_VALUE", + * ChecksumSHA256: "STRING_VALUE", + * ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * MpuObjectSize: Number("long"), + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * IfMatch: "STRING_VALUE", + * IfNoneMatch: "STRING_VALUE", + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * }; + * const command = new CompleteMultipartUploadCommand(input); + * const response = await client.send(command); + * // { // CompleteMultipartUploadOutput + * // Location: "STRING_VALUE", + * // Bucket: "STRING_VALUE", + * // Key: "STRING_VALUE", + * // Expiration: "STRING_VALUE", + * // ETag: "STRING_VALUE", + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * // VersionId: "STRING_VALUE", + * // SSEKMSKeyId: "STRING_VALUE", + * // BucketKeyEnabled: true || false, + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param CompleteMultipartUploadCommandInput - {@link CompleteMultipartUploadCommandInput} + * @returns {@link CompleteMultipartUploadCommandOutput} + * @see {@link CompleteMultipartUploadCommandInput} for command's `input` shape. + * @see {@link CompleteMultipartUploadCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To complete multipart upload + * ```javascript + * // The following example completes a multipart upload. + * const input = { + * Bucket: "examplebucket", + * Key: "bigobject", + * MultipartUpload: { + * Parts: [ + * { + * ETag: `"d8c2eafd90c266e19ab9dcacc479f8af"`, + * PartNumber: 1 + * }, + * { + * ETag: `"d8c2eafd90c266e19ab9dcacc479f8af"`, + * PartNumber: 2 + * } + * ] + * }, + * UploadId: "7YPBOJuoFiQ9cz4P3Pe6FIZwO4f7wN93uHsNBEw97pl5eNwzExg0LAT2dUN91cOmrEQHDsP3WA60CEg--" + * }; + * const command = new CompleteMultipartUploadCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Bucket: "acexamplebucket", + * ETag: `"4d9031c7644d8081c2829f4ea23c55f7-2"`, + * Key: "bigobject", + * Location: "https://examplebucket.s3..amazonaws.com/bigobject" + * } + * *\/ + * ``` + * + * @public + */ +export declare class CompleteMultipartUploadCommand extends CompleteMultipartUploadCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CompleteMultipartUploadRequest; + output: CompleteMultipartUploadOutput; + }; + sdk: { + input: CompleteMultipartUploadCommandInput; + output: CompleteMultipartUploadCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CopyObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CopyObjectCommand.d.ts new file mode 100644 index 0000000..b07950f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CopyObjectCommand.d.ts @@ -0,0 +1,362 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CopyObjectOutput, CopyObjectRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CopyObjectCommand}. + */ +export interface CopyObjectCommandInput extends CopyObjectRequest { +} +/** + * @public + * + * The output of {@link CopyObjectCommand}. + */ +export interface CopyObjectCommandOutput extends CopyObjectOutput, __MetadataBearer { +} +declare const CopyObjectCommand_base: { + new (input: CopyObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CopyObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Creates a copy of an object that is already stored in Amazon S3.

+ * + *

End of support notice: As of October 1, 2025, Amazon S3 has discontinued support for Email Grantee Access Control Lists (ACLs). If you attempt to use an Email Grantee ACL in a request after October 1, 2025, + * the request will receive an HTTP 405 (Method Not Allowed) error.

+ *

This change affects the following Amazon Web Services Regions: US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Europe (Ireland), and South America (São Paulo).

+ *
+ * + *

You can store individual objects of up to 50 TB in Amazon S3. You create a copy of your + * object up to 5 GB in size in a single atomic action using this API. However, to copy an + * object greater than 5 GB, you must use the multipart upload Upload Part - Copy + * (UploadPartCopy) API. For more information, see Copy Object Using the REST + * Multipart Upload API.

+ *
+ *

You can copy individual objects between general purpose buckets, between directory buckets, and between + * general purpose buckets and directory buckets.

+ * + *
    + *
  • + *

    Amazon S3 supports copy operations using Multi-Region Access Points only as a destination when + * using the Multi-Region Access Point ARN.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
  • + *

    VPC endpoints don't support cross-Region requests (including copies). If you're using VPC + * endpoints, your source and destination buckets should be in the same Amazon Web Services Region as your VPC + * endpoint.

    + *
  • + *
+ *
+ *

Both the Region that you want to copy the object from and the Region that you want to copy the + * object to must be enabled for your account. For more information about how to enable a Region for your + * account, see Enable + * or disable a Region for standalone accounts in the Amazon Web Services Account Management + * Guide.

+ * + *

Amazon S3 transfer acceleration does not support cross-Region copies. If you request a cross-Region + * copy using a transfer acceleration endpoint, you get a 400 Bad Request error. For more + * information, see Transfer Acceleration.

+ *
+ *
+ *
Authentication and authorization
+ *
+ *

All CopyObject requests must be authenticated and signed by using IAM + * credentials (access key ID and secret access key for the IAM identities). All headers with the + * x-amz- prefix, including x-amz-copy-source, must be signed. For more + * information, see REST Authentication.

+ *

+ * Directory buckets - You must use the IAM + * credentials to authenticate and authorize your access to the CopyObject API + * operation, instead of using the temporary security credentials through the + * CreateSession API operation.

+ *

Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

+ *
+ *
Permissions
+ *
+ *

You must have read access to the source object and + * write access to the destination bucket.

+ *
    + *
  • + *

    + * General purpose bucket permissions - You must have + * permissions in an IAM policy based on the source and destination bucket types in a + * CopyObject operation.

    + *
      + *
    • + *

      If the source object is in a general purpose bucket, you must have + * s3:GetObject + * permission to read the source object that is + * being copied.

      + *
    • + *
    • + *

      If the destination bucket is a general purpose bucket, you must have + * s3:PutObject + * permission to write the object copy to the + * destination bucket.

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket permissions - You must have + * permissions in a bucket policy or an IAM identity-based policy based on the source and destination bucket types + * in a CopyObject operation.

    + *
      + *
    • + *

      If the source object that you want to copy is in a directory bucket, you must have + * the + * s3express:CreateSession + * permission in + * the Action element of a policy to read the object. If no session mode is specified, + * the session will be created with the maximum allowable privilege, attempting ReadWrite + * first, then ReadOnly if ReadWrite is not permitted. If you want to explicitly + * restrict the access to be read-only, you can set the s3express:SessionMode condition key to + * ReadOnly on the copy source bucket.

      + *
    • + *
    • + *

      If the copy destination is a directory bucket, you must have the + * s3express:CreateSession + * permission in the + * Action element of a policy to write the object to the destination. The + * s3express:SessionMode condition key can't be set to ReadOnly + * on the copy destination bucket.

      + *
    • + *
    + *

    If the object is encrypted with SSE-KMS, you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key.

    + *

    For example policies, see Example + * bucket policies for S3 Express One Zone and Amazon Web Services + * Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
Response and special errors
+ *
+ *

When the request is an HTTP 1.1 request, the response is chunk encoded. When the request is + * not an HTTP 1.1 request, the response would not contain the Content-Length. You + * always need to read the entire response body to check if the copy succeeds.

+ *
    + *
  • + *

    If the copy is successful, you receive a response with information about the copied + * object.

    + *
  • + *
  • + *

    A copy request might return an error when Amazon S3 receives the copy request or while Amazon S3 is + * copying the files. A 200 OK response can contain either a success or an + * error.

    + *
      + *
    • + *

      If the error occurs before the copy action starts, you receive a standard Amazon S3 + * error.

      + *
    • + *
    • + *

      If the error occurs during the copy operation, the error response is embedded in the + * 200 OK response. For example, in a cross-region copy, you may encounter + * throttling and receive a 200 OK response. For more information, see Resolve the Error + * 200 response when copying objects to Amazon S3. The 200 OK status code + * means the copy was accepted, but it doesn't mean the copy is complete. Another example is + * when you disconnect from Amazon S3 before the copy is complete, Amazon S3 might cancel the copy and + * you may receive a 200 OK response. You must stay connected to Amazon S3 until the + * entire response is successfully received and processed.

      + *

      If you call this API operation directly, make sure to design your application to parse + * the content of the response and handle it appropriately. If you use Amazon Web Services SDKs, SDKs + * handle this condition. The SDKs detect the embedded error and apply error handling per + * your configuration settings (including automatically retrying the request as appropriate). + * If the condition persists, the SDKs throw an exception (or, for the SDKs that don't use + * exceptions, they return an error).

      + *
    • + *
    + *
  • + *
+ *
+ *
Charge
+ *
+ *

The copy request charge is based on the storage class and Region that you specify for the + * destination object. The request can also result in a data retrieval charge for the source if the + * source storage class bills for data retrieval. If the copy source is in a different region, the + * data transfer is billed to the copy source account. For pricing information, see Amazon S3 pricing.

+ *
+ *
HTTP Host header syntax
+ *
+ *
    + *
  • + *

    + * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

    + *
  • + *
  • + *

    + * Amazon S3 on Outposts - When you use this action with + * S3 on Outposts through the REST API, you must direct requests to the S3 on Outposts hostname. The + * S3 on Outposts hostname takes the form + * + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. + * The hostname isn't required when you use the Amazon Web Services CLI or SDKs.

    + *
  • + *
+ *
+ *
+ *

The following operations are related to CopyObject:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, CopyObjectCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, CopyObjectCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // CopyObjectRequest + * ACL: "private" || "public-read" || "public-read-write" || "authenticated-read" || "aws-exec-read" || "bucket-owner-read" || "bucket-owner-full-control", + * Bucket: "STRING_VALUE", // required + * CacheControl: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ContentDisposition: "STRING_VALUE", + * ContentEncoding: "STRING_VALUE", + * ContentLanguage: "STRING_VALUE", + * ContentType: "STRING_VALUE", + * CopySource: "STRING_VALUE", // required + * CopySourceIfMatch: "STRING_VALUE", + * CopySourceIfModifiedSince: new Date("TIMESTAMP"), + * CopySourceIfNoneMatch: "STRING_VALUE", + * CopySourceIfUnmodifiedSince: new Date("TIMESTAMP"), + * Expires: new Date("TIMESTAMP"), + * GrantFullControl: "STRING_VALUE", + * GrantRead: "STRING_VALUE", + * GrantReadACP: "STRING_VALUE", + * GrantWriteACP: "STRING_VALUE", + * IfMatch: "STRING_VALUE", + * IfNoneMatch: "STRING_VALUE", + * Key: "STRING_VALUE", // required + * Metadata: { // Metadata + * "": "STRING_VALUE", + * }, + * MetadataDirective: "COPY" || "REPLACE", + * TaggingDirective: "COPY" || "REPLACE", + * ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * WebsiteRedirectLocation: "STRING_VALUE", + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * SSEKMSKeyId: "STRING_VALUE", + * SSEKMSEncryptionContext: "STRING_VALUE", + * BucketKeyEnabled: true || false, + * CopySourceSSECustomerAlgorithm: "STRING_VALUE", + * CopySourceSSECustomerKey: "STRING_VALUE", + * CopySourceSSECustomerKeyMD5: "STRING_VALUE", + * RequestPayer: "requester", + * Tagging: "STRING_VALUE", + * ObjectLockMode: "GOVERNANCE" || "COMPLIANCE", + * ObjectLockRetainUntilDate: new Date("TIMESTAMP"), + * ObjectLockLegalHoldStatus: "ON" || "OFF", + * ExpectedBucketOwner: "STRING_VALUE", + * ExpectedSourceBucketOwner: "STRING_VALUE", + * }; + * const command = new CopyObjectCommand(input); + * const response = await client.send(command); + * // { // CopyObjectOutput + * // CopyObjectResult: { // CopyObjectResult + * // ETag: "STRING_VALUE", + * // LastModified: new Date("TIMESTAMP"), + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // }, + * // Expiration: "STRING_VALUE", + * // CopySourceVersionId: "STRING_VALUE", + * // VersionId: "STRING_VALUE", + * // ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * // SSECustomerAlgorithm: "STRING_VALUE", + * // SSECustomerKeyMD5: "STRING_VALUE", + * // SSEKMSKeyId: "STRING_VALUE", + * // SSEKMSEncryptionContext: "STRING_VALUE", + * // BucketKeyEnabled: true || false, + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param CopyObjectCommandInput - {@link CopyObjectCommandInput} + * @returns {@link CopyObjectCommandOutput} + * @see {@link CopyObjectCommandInput} for command's `input` shape. + * @see {@link CopyObjectCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link ObjectNotInActiveTierError} (client fault) + *

The source object of the COPY action is not in the active tier and is only stored in Amazon S3 + * Glacier.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To copy an object + * ```javascript + * // The following example copies an object from one bucket to another. + * const input = { + * Bucket: "destinationbucket", + * CopySource: "/sourcebucket/HappyFacejpg", + * Key: "HappyFaceCopyjpg" + * }; + * const command = new CopyObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { + * CopyObjectResult: { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * LastModified: "2016-12-15T17:38:53.000Z" + * } + * } + * *\/ + * ``` + * + * @public + */ +export declare class CopyObjectCommand extends CopyObjectCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CopyObjectRequest; + output: CopyObjectOutput; + }; + sdk: { + input: CopyObjectCommandInput; + output: CopyObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketCommand.d.ts new file mode 100644 index 0000000..074aa66 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketCommand.d.ts @@ -0,0 +1,291 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CreateBucketOutput, CreateBucketRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateBucketCommand}. + */ +export interface CreateBucketCommandInput extends CreateBucketRequest { +} +/** + * @public + * + * The output of {@link CreateBucketCommand}. + */ +export interface CreateBucketCommandOutput extends CreateBucketOutput, __MetadataBearer { +} +declare const CreateBucketCommand_base: { + new (input: CreateBucketCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateBucketCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This action creates an Amazon S3 bucket. To create an Amazon S3 on Outposts bucket, see + * CreateBucket + * .

+ *
+ *

Creates a new S3 bucket. To create a bucket, you must set up Amazon S3 and have a valid Amazon Web Services Access Key + * ID to authenticate requests. Anonymous requests are never allowed to create buckets. By creating the + * bucket, you become the bucket owner.

+ *

There are two types of buckets: general purpose buckets and directory buckets. For more information about + * these bucket types, see Creating, configuring, and working with Amazon S3 + * buckets in the Amazon S3 User Guide.

+ *

General purpose buckets exist in a global namespace, which means that each bucket name must be unique + * across all Amazon Web Services accounts in all the Amazon Web Services Regions within a partition. A partition is a grouping of + * Regions. Amazon Web Services currently has four partitions: aws (Standard Regions), aws-cn + * (China Regions), aws-us-gov (Amazon Web Services GovCloud (US)), and aws-eusc + * (European Sovereign Cloud). When you create a general purpose bucket, you can choose to create a bucket in + * the shared global namespace or you can choose to create a bucket in your account regional namespace. + * Your account regional namespace is a subdivision of the global namespace that only your account can + * create buckets in. For more information on account regional namespaces, see Namespaces for general purpose buckets.

+ * + *
    + *
  • + *

    + * General purpose buckets - If you send your + * CreateBucket request to the s3.amazonaws.com global endpoint, the + * request goes to the us-east-1 Region. So the signature calculations in Signature + * Version 4 must use us-east-1 as the Region, even if the location constraint in the + * request specifies another Region where the bucket is to be created. If you create a bucket in a + * Region other than US East (N. Virginia), your application must be able to handle 307 redirect. For + * more information, see Virtual hosting of buckets in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - In addition to the + * s3:CreateBucket permission, the following permissions are required in a policy + * when your CreateBucket request includes specific headers:

    + *
      + *
    • + *

      + * Access control lists (ACLs) - In your + * CreateBucket request, if you specify an access control list (ACL) and set + * it to public-read, public-read-write, + * authenticated-read, or if you explicitly specify any other custom ACLs, + * both s3:CreateBucket and s3:PutBucketAcl permissions are + * required. In your CreateBucket request, if you set the ACL to + * private, or if you don't specify any ACLs, only the + * s3:CreateBucket permission is required.

      + *
    • + *
    • + *

      + * Object Lock - In your + * CreateBucket request, if you set + * x-amz-bucket-object-lock-enabled to true, the + * s3:PutBucketObjectLockConfiguration and s3:PutBucketVersioning + * permissions are required.

      + *
    • + *
    • + *

      + * S3 Object Ownership - If your + * CreateBucket request includes the x-amz-object-ownership + * header, then the s3:PutBucketOwnershipControls permission is required.

      + * + *

      To set an ACL on a bucket as part of a CreateBucket request, you must + * explicitly set S3 Object Ownership for the bucket to a different value than the default, + * BucketOwnerEnforced. Additionally, if your desired bucket ACL grants + * public access, you must first create the bucket (without the bucket ACL) and then + * explicitly disable Block Public Access on the bucket before using + * PutBucketAcl to set the ACL. If you try to create a bucket with a public + * ACL, the request will fail.

      + *

      For the majority of modern use cases in S3, we recommend that you keep all Block + * Public Access settings enabled and keep ACLs disabled. If you would like to share data + * with users outside of your account, you can use bucket policies as needed. For more + * information, see Controlling ownership of + * objects and disabling ACLs for your bucket and Blocking + * public access to your Amazon S3 storage in the + * Amazon S3 User Guide.

      + *
      + *
    • + *
    • + *

      + * S3 Block Public Access - If your specific use + * case requires granting public access to your S3 resources, you can disable Block Public + * Access. Specifically, you can create a new bucket with Block Public Access enabled, then + * separately call the + * DeletePublicAccessBlock + * API. To use this operation, you must have the + * s3:PutBucketPublicAccessBlock permission. For more information about S3 + * Block Public Access, see Blocking public + * access to your Amazon S3 storage in the Amazon S3 User Guide. + *

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket permissions - You must have the + * s3express:CreateBucket permission in an IAM identity-based policy instead of a bucket policy. + * Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + * + *

    The permissions for ACLs, Object Lock, S3 Object Ownership, and S3 Block Public Access + * are not supported for directory buckets. For directory buckets, all Block Public Access + * settings are enabled at the bucket level and S3 Object Ownership is set to Bucket owner + * enforced (ACLs disabled). These settings can't be modified.

    + *

    For more information about permissions for creating and working with directory buckets, + * see Directory buckets + * in the Amazon S3 User Guide. For more information about supported S3 + * features for directory buckets, see Features of + * S3 Express One Zone in the Amazon S3 User Guide.

    + *
    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to CreateBucket:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, CreateBucketCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, CreateBucketCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // CreateBucketRequest + * ACL: "private" || "public-read" || "public-read-write" || "authenticated-read", + * Bucket: "STRING_VALUE", // required + * CreateBucketConfiguration: { // CreateBucketConfiguration + * LocationConstraint: "af-south-1" || "ap-east-1" || "ap-northeast-1" || "ap-northeast-2" || "ap-northeast-3" || "ap-south-1" || "ap-south-2" || "ap-southeast-1" || "ap-southeast-2" || "ap-southeast-3" || "ap-southeast-4" || "ap-southeast-5" || "ca-central-1" || "cn-north-1" || "cn-northwest-1" || "EU" || "eu-central-1" || "eu-central-2" || "eu-north-1" || "eu-south-1" || "eu-south-2" || "eu-west-1" || "eu-west-2" || "eu-west-3" || "il-central-1" || "me-central-1" || "me-south-1" || "sa-east-1" || "us-east-2" || "us-gov-east-1" || "us-gov-west-1" || "us-west-1" || "us-west-2", + * Location: { // LocationInfo + * Type: "AvailabilityZone" || "LocalZone", + * Name: "STRING_VALUE", + * }, + * Bucket: { // BucketInfo + * DataRedundancy: "SingleAvailabilityZone" || "SingleLocalZone", + * Type: "Directory", + * }, + * Tags: [ // TagSet + * { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * }, + * GrantFullControl: "STRING_VALUE", + * GrantRead: "STRING_VALUE", + * GrantReadACP: "STRING_VALUE", + * GrantWrite: "STRING_VALUE", + * GrantWriteACP: "STRING_VALUE", + * ObjectLockEnabledForBucket: true || false, + * ObjectOwnership: "BucketOwnerPreferred" || "ObjectWriter" || "BucketOwnerEnforced", + * BucketNamespace: "account-regional" || "global", + * }; + * const command = new CreateBucketCommand(input); + * const response = await client.send(command); + * // { // CreateBucketOutput + * // Location: "STRING_VALUE", + * // BucketArn: "STRING_VALUE", + * // }; + * + * ``` + * + * @param CreateBucketCommandInput - {@link CreateBucketCommandInput} + * @returns {@link CreateBucketCommandOutput} + * @see {@link CreateBucketCommandInput} for command's `input` shape. + * @see {@link CreateBucketCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link BucketAlreadyExists} (client fault) + *

The requested bucket name is not available. The bucket namespace is shared by all users of the + * system. Select a different name and try again.

+ * + * @throws {@link BucketAlreadyOwnedByYou} (client fault) + *

The bucket you tried to create already exists, and you own it. Amazon S3 returns this error in all Amazon Web Services + * Regions except in the North Virginia Region. For legacy compatibility, if you re-create an existing + * bucket that you already own in the North Virginia Region, Amazon S3 returns 200 OK and resets the bucket + * access control lists (ACLs).

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To create a bucket in a specific region + * ```javascript + * // The following example creates a bucket. The request specifies an AWS region where to create the bucket. + * const input = { + * Bucket: "examplebucket", + * CreateBucketConfiguration: { + * LocationConstraint: "eu-west-1" + * } + * }; + * const command = new CreateBucketCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Location: "http://examplebucket..s3.amazonaws.com/" + * } + * *\/ + * ``` + * + * @example To create a bucket + * ```javascript + * // The following example creates a bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new CreateBucketCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Location: "/examplebucket" + * } + * *\/ + * ``` + * + * @public + */ +export declare class CreateBucketCommand extends CreateBucketCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateBucketRequest; + output: CreateBucketOutput; + }; + sdk: { + input: CreateBucketCommandInput; + output: CreateBucketCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketMetadataConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketMetadataConfigurationCommand.d.ts new file mode 100644 index 0000000..622b71c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketMetadataConfigurationCommand.d.ts @@ -0,0 +1,187 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CreateBucketMetadataConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateBucketMetadataConfigurationCommand}. + */ +export interface CreateBucketMetadataConfigurationCommandInput extends CreateBucketMetadataConfigurationRequest { +} +/** + * @public + * + * The output of {@link CreateBucketMetadataConfigurationCommand}. + */ +export interface CreateBucketMetadataConfigurationCommandOutput extends __MetadataBearer { +} +declare const CreateBucketMetadataConfigurationCommand_base: { + new (input: CreateBucketMetadataConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateBucketMetadataConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Creates an S3 Metadata V2 metadata configuration for a general purpose bucket. For more information, see + * Accelerating + * data discovery with S3 Metadata in the Amazon S3 User Guide.

+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have the following permissions. For more information, see + * Setting up permissions for configuring metadata tables in the + * Amazon S3 User Guide.

+ *

If you want to encrypt your metadata tables with server-side encryption with Key Management Service + * (KMS) keys (SSE-KMS), you need additional permissions in your KMS key policy. For more + * information, see + * Setting up permissions for configuring metadata tables in the + * Amazon S3 User Guide.

+ *

If you also want to integrate your table bucket with Amazon Web Services analytics services so that you can + * query your metadata table, you need additional permissions. For more information, see Integrating + * Amazon S3 Tables with Amazon Web Services analytics services in the + * Amazon S3 User Guide.

+ *

To query your metadata tables, you need additional permissions. For more information, see + * + * Permissions for querying metadata tables in the Amazon S3 User Guide.

+ *
    + *
  • + *

    + * s3:CreateBucketMetadataTableConfiguration + *

    + * + *

    The IAM policy action name is the same for the V1 and V2 API operations.

    + *
    + *
  • + *
  • + *

    + * s3tables:CreateTableBucket + *

    + *
  • + *
  • + *

    + * s3tables:CreateNamespace + *

    + *
  • + *
  • + *

    + * s3tables:GetTable + *

    + *
  • + *
  • + *

    + * s3tables:CreateTable + *

    + *
  • + *
  • + *

    + * s3tables:PutTablePolicy + *

    + *
  • + *
  • + *

    + * s3tables:PutTableEncryption + *

    + *
  • + *
  • + *

    + * kms:DescribeKey + *

    + *
  • + *
+ *
+ *
+ *

The following operations are related to CreateBucketMetadataConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, CreateBucketMetadataConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, CreateBucketMetadataConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // CreateBucketMetadataConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * MetadataConfiguration: { // MetadataConfiguration + * JournalTableConfiguration: { // JournalTableConfiguration + * RecordExpiration: { // RecordExpiration + * Expiration: "ENABLED" || "DISABLED", // required + * Days: Number("int"), + * }, + * EncryptionConfiguration: { // MetadataTableEncryptionConfiguration + * SseAlgorithm: "aws:kms" || "AES256", // required + * KmsKeyArn: "STRING_VALUE", + * }, + * }, + * InventoryTableConfiguration: { // InventoryTableConfiguration + * ConfigurationState: "ENABLED" || "DISABLED", // required + * EncryptionConfiguration: { + * SseAlgorithm: "aws:kms" || "AES256", // required + * KmsKeyArn: "STRING_VALUE", + * }, + * }, + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new CreateBucketMetadataConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param CreateBucketMetadataConfigurationCommandInput - {@link CreateBucketMetadataConfigurationCommandInput} + * @returns {@link CreateBucketMetadataConfigurationCommandOutput} + * @see {@link CreateBucketMetadataConfigurationCommandInput} for command's `input` shape. + * @see {@link CreateBucketMetadataConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class CreateBucketMetadataConfigurationCommand extends CreateBucketMetadataConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateBucketMetadataConfigurationRequest; + output: {}; + }; + sdk: { + input: CreateBucketMetadataConfigurationCommandInput; + output: CreateBucketMetadataConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketMetadataTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketMetadataTableConfigurationCommand.d.ts new file mode 100644 index 0000000..ef6dfd7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketMetadataTableConfigurationCommand.d.ts @@ -0,0 +1,153 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CreateBucketMetadataTableConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateBucketMetadataTableConfigurationCommand}. + */ +export interface CreateBucketMetadataTableConfigurationCommandInput extends CreateBucketMetadataTableConfigurationRequest { +} +/** + * @public + * + * The output of {@link CreateBucketMetadataTableConfigurationCommand}. + */ +export interface CreateBucketMetadataTableConfigurationCommandOutput extends __MetadataBearer { +} +declare const CreateBucketMetadataTableConfigurationCommand_base: { + new (input: CreateBucketMetadataTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateBucketMetadataTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

+ * We recommend that you create your S3 Metadata configurations by using the V2 + * CreateBucketMetadataConfiguration API operation. We no longer recommend using the V1 + * CreateBucketMetadataTableConfiguration API operation. + *

+ *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ *

Creates a V1 S3 Metadata configuration for a general purpose bucket. For more information, see + * Accelerating + * data discovery with S3 Metadata in the Amazon S3 User Guide.

+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have the following permissions. For more information, see + * Setting up permissions for configuring metadata tables in the + * Amazon S3 User Guide.

+ *

If you want to encrypt your metadata tables with server-side encryption with Key Management Service + * (KMS) keys (SSE-KMS), you need additional permissions. For more + * information, see + * Setting up permissions for configuring metadata tables in the + * Amazon S3 User Guide.

+ *

If you also want to integrate your table bucket with Amazon Web Services analytics services so that you can + * query your metadata table, you need additional permissions. For more information, see Integrating + * Amazon S3 Tables with Amazon Web Services analytics services in the + * Amazon S3 User Guide.

+ *
    + *
  • + *

    + * s3:CreateBucketMetadataTableConfiguration + *

    + *
  • + *
  • + *

    + * s3tables:CreateNamespace + *

    + *
  • + *
  • + *

    + * s3tables:GetTable + *

    + *
  • + *
  • + *

    + * s3tables:CreateTable + *

    + *
  • + *
  • + *

    + * s3tables:PutTablePolicy + *

    + *
  • + *
+ *
+ *
+ *

The following operations are related to CreateBucketMetadataTableConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, CreateBucketMetadataTableConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, CreateBucketMetadataTableConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // CreateBucketMetadataTableConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * MetadataTableConfiguration: { // MetadataTableConfiguration + * S3TablesDestination: { // S3TablesDestination + * TableBucketArn: "STRING_VALUE", // required + * TableName: "STRING_VALUE", // required + * }, + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new CreateBucketMetadataTableConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param CreateBucketMetadataTableConfigurationCommandInput - {@link CreateBucketMetadataTableConfigurationCommandInput} + * @returns {@link CreateBucketMetadataTableConfigurationCommandOutput} + * @see {@link CreateBucketMetadataTableConfigurationCommandInput} for command's `input` shape. + * @see {@link CreateBucketMetadataTableConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class CreateBucketMetadataTableConfigurationCommand extends CreateBucketMetadataTableConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateBucketMetadataTableConfigurationRequest; + output: {}; + }; + sdk: { + input: CreateBucketMetadataTableConfigurationCommandInput; + output: CreateBucketMetadataTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateMultipartUploadCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateMultipartUploadCommand.d.ts new file mode 100644 index 0000000..9a14031 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateMultipartUploadCommand.d.ts @@ -0,0 +1,386 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CreateMultipartUploadOutput, CreateMultipartUploadRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateMultipartUploadCommand}. + */ +export interface CreateMultipartUploadCommandInput extends CreateMultipartUploadRequest { +} +/** + * @public + * + * The output of {@link CreateMultipartUploadCommand}. + */ +export interface CreateMultipartUploadCommandOutput extends CreateMultipartUploadOutput, __MetadataBearer { +} +declare const CreateMultipartUploadCommand_base: { + new (input: CreateMultipartUploadCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateMultipartUploadCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

End of support notice: As of October 1, 2025, Amazon S3 has discontinued support for Email Grantee Access Control Lists (ACLs). If you attempt to use an Email Grantee ACL in a request after October 1, 2025, + * the request will receive an HTTP 405 (Method Not Allowed) error.

+ *

This change affects the following Amazon Web Services Regions: US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Europe (Ireland), and South America (São Paulo).

+ *
+ *

This action initiates a multipart upload and returns an upload ID. This upload ID is used to + * associate all of the parts in the specific multipart upload. You specify this upload ID in each of your + * subsequent upload part requests (see UploadPart). You also include this upload ID in + * the final request to either complete or abort the multipart upload request. For more information about + * multipart uploads, see Multipart + * Upload Overview in the Amazon S3 User Guide.

+ * + *

After you initiate a multipart upload and upload one or more parts, to stop being charged for + * storing the uploaded parts, you must either complete or abort the multipart upload. Amazon S3 frees up the + * space used to store the parts and stops charging you for storing them only after you either complete + * or abort a multipart upload.

+ *
+ *

If you have configured a lifecycle rule to abort incomplete multipart uploads, the created multipart + * upload must be completed within the number of days specified in the bucket lifecycle configuration. + * Otherwise, the incomplete multipart upload becomes eligible for an abort action and Amazon S3 aborts the + * multipart upload. For more information, see Aborting + * Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration.

+ * + *
    + *
  • + *

    + * Directory buckets - + * S3 Lifecycle is not supported by directory buckets.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
+ *
Request signing
+ *
+ *

For request signing, multipart upload is just a series of regular requests. You initiate a + * multipart upload, send one or more requests to upload parts, and then complete the multipart + * upload process. You sign each request individually. There is nothing special about signing + * multipart upload requests. For more information about signing, see Authenticating Requests (Amazon Web Services + * Signature Version 4) in the Amazon S3 User Guide.

+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - To perform a + * multipart upload with encryption using an Key Management Service (KMS) KMS key, the requester must have + * permission to the kms:Decrypt and kms:GenerateDataKey actions on the + * key. The requester must also have permissions for the kms:GenerateDataKey action + * for the CreateMultipartUpload API. Then, the requester needs permissions for the + * kms:Decrypt action on the UploadPart and + * UploadPartCopy APIs. These permissions are required because Amazon S3 must decrypt + * and read data from the encrypted file parts before it completes the multipart upload. For more + * information, see Multipart upload API and + * permissions and Protecting data using server-side + * encryption with Amazon Web Services KMS in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *
  • + *
+ *
+ *
Encryption
+ *
+ *
    + *
  • + *

    + * General purpose buckets - Server-side encryption is for + * data encryption at rest. Amazon S3 encrypts your data as it writes it to disks in its data centers + * and decrypts it when you access it. Amazon S3 automatically encrypts all new objects that are + * uploaded to an S3 bucket. When doing a multipart upload, if you don't specify encryption + * information in your request, the encryption setting of the uploaded parts is set to the + * default encryption configuration of the destination bucket. By default, all buckets have a + * base level of encryption configuration that uses server-side encryption with Amazon S3 managed keys + * (SSE-S3). If the destination bucket has a default encryption configuration that uses + * server-side encryption with an Key Management Service (KMS) key (SSE-KMS), or a customer-provided + * encryption key (SSE-C), Amazon S3 uses the corresponding KMS key, or a customer-provided key to + * encrypt the uploaded parts. When you perform a CreateMultipartUpload operation, if you want to + * use a different type of encryption setting for the uploaded parts, you can request that Amazon S3 + * encrypts the object with a different encryption key (such as an Amazon S3 managed key, a KMS key, + * or a customer-provided key). When the encryption setting in your request is different from the + * default encryption configuration of the destination bucket, the encryption setting in your + * request takes precedence. If you choose to provide your own encryption key, the request + * headers you provide in UploadPart and UploadPartCopy requests must match the headers you used in the + * CreateMultipartUpload request.

    + *
      + *
    • + *

      Use KMS keys (SSE-KMS) that include the Amazon Web Services managed key (aws/s3) and + * KMS customer managed keys stored in Key Management Service (KMS) – If you want Amazon Web Services to manage the keys used + * to encrypt data, specify the following headers in the request.

      + *
        + *
      • + *

        + * x-amz-server-side-encryption + *

        + *
      • + *
      • + *

        + * x-amz-server-side-encryption-aws-kms-key-id + *

        + *
      • + *
      • + *

        + * x-amz-server-side-encryption-context + *

        + *
      • + *
      + * + *
        + *
      • + *

        If you specify x-amz-server-side-encryption:aws:kms, but don't + * provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the + * Amazon Web Services managed key (aws/s3 key) in KMS to protect the data.

        + *
      • + *
      • + *

        To perform a multipart upload with encryption by using an Amazon Web Services KMS key, the + * requester must have permission to the kms:Decrypt and + * kms:GenerateDataKey* actions on the key. These permissions are + * required because Amazon S3 must decrypt and read data from the encrypted file parts + * before it completes the multipart upload. For more information, see Multipart + * upload API and permissions and Protecting data using + * server-side encryption with Amazon Web Services KMS in the + * Amazon S3 User Guide.

        + *
      • + *
      • + *

        If your Identity and Access Management (IAM) user or role is in the same Amazon Web Services account as the + * KMS key, then you must have these permissions on the key policy. If your IAM + * user or role is in a different account from the key, then you must have the + * permissions on both the key policy and your IAM user or role.

        + *
      • + *
      • + *

        All GET and PUT requests for an object protected by + * KMS fail if you don't make them by using Secure Sockets Layer (SSL), Transport + * Layer Security (TLS), or Signature Version 4. For information about configuring any + * of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see Specifying the Signature Version in Request + * Authentication in the Amazon S3 User Guide.

        + *
      • + *
      + *
      + *

      For more information about server-side encryption with KMS keys (SSE-KMS), see + * Protecting Data Using Server-Side Encryption with KMS keys in the + * Amazon S3 User Guide.

      + *
    • + *
    • + *

      Use customer-provided encryption keys (SSE-C) – If you want to manage your own + * encryption keys, provide all the following headers in the request.

      + *
        + *
      • + *

        + * x-amz-server-side-encryption-customer-algorithm + *

        + *
      • + *
      • + *

        + * x-amz-server-side-encryption-customer-key + *

        + *
      • + *
      • + *

        + * x-amz-server-side-encryption-customer-key-MD5 + *

        + *
      • + *
      + *

      For more information about server-side encryption with customer-provided encryption + * keys (SSE-C), see Protecting data + * using server-side encryption with customer-provided encryption keys (SSE-C) in + * the Amazon S3 User Guide.

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory buckets - + * For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your + * CreateSession requests or PUT object requests. Then, new objects + * are automatically encrypted with the desired encryption settings. For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

    + *

    In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, the encryption request headers must match the encryption settings that are specified in the CreateSession request. + * You can't override the values of the encryption settings (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, and x-amz-server-side-encryption-bucket-key-enabled) that are specified in the CreateSession request. + * You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and + * Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket. + *

    + * + *

    When you use the CLI or the Amazon Web Services SDKs, for CreateSession, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the + * CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. + * So in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), + * the encryption request headers must match the default encryption configuration of the directory bucket. + * + *

    + *
    + * + *

    For directory buckets, when you perform a CreateMultipartUpload operation + * and an UploadPartCopy operation, the request headers you provide in the + * CreateMultipartUpload request must match the default encryption configuration + * of the destination bucket.

    + *
    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to CreateMultipartUpload:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, CreateMultipartUploadCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, CreateMultipartUploadCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // CreateMultipartUploadRequest + * ACL: "private" || "public-read" || "public-read-write" || "authenticated-read" || "aws-exec-read" || "bucket-owner-read" || "bucket-owner-full-control", + * Bucket: "STRING_VALUE", // required + * CacheControl: "STRING_VALUE", + * ContentDisposition: "STRING_VALUE", + * ContentEncoding: "STRING_VALUE", + * ContentLanguage: "STRING_VALUE", + * ContentType: "STRING_VALUE", + * Expires: new Date("TIMESTAMP"), + * GrantFullControl: "STRING_VALUE", + * GrantRead: "STRING_VALUE", + * GrantReadACP: "STRING_VALUE", + * GrantWriteACP: "STRING_VALUE", + * Key: "STRING_VALUE", // required + * Metadata: { // Metadata + * "": "STRING_VALUE", + * }, + * ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * WebsiteRedirectLocation: "STRING_VALUE", + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * SSEKMSKeyId: "STRING_VALUE", + * SSEKMSEncryptionContext: "STRING_VALUE", + * BucketKeyEnabled: true || false, + * RequestPayer: "requester", + * Tagging: "STRING_VALUE", + * ObjectLockMode: "GOVERNANCE" || "COMPLIANCE", + * ObjectLockRetainUntilDate: new Date("TIMESTAMP"), + * ObjectLockLegalHoldStatus: "ON" || "OFF", + * ExpectedBucketOwner: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * }; + * const command = new CreateMultipartUploadCommand(input); + * const response = await client.send(command); + * // { // CreateMultipartUploadOutput + * // AbortDate: new Date("TIMESTAMP"), + * // AbortRuleId: "STRING_VALUE", + * // Bucket: "STRING_VALUE", + * // Key: "STRING_VALUE", + * // UploadId: "STRING_VALUE", + * // ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * // SSECustomerAlgorithm: "STRING_VALUE", + * // SSECustomerKeyMD5: "STRING_VALUE", + * // SSEKMSKeyId: "STRING_VALUE", + * // SSEKMSEncryptionContext: "STRING_VALUE", + * // BucketKeyEnabled: true || false, + * // RequestCharged: "requester", + * // ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // }; + * + * ``` + * + * @param CreateMultipartUploadCommandInput - {@link CreateMultipartUploadCommandInput} + * @returns {@link CreateMultipartUploadCommandOutput} + * @see {@link CreateMultipartUploadCommandInput} for command's `input` shape. + * @see {@link CreateMultipartUploadCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To initiate a multipart upload + * ```javascript + * // The following example initiates a multipart upload. + * const input = { + * Bucket: "examplebucket", + * Key: "largeobject" + * }; + * const command = new CreateMultipartUploadCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Bucket: "examplebucket", + * Key: "largeobject", + * UploadId: "ibZBv_75gd9r8lH_gqXatLdxMVpAlj6ZQjEs.OwyF3953YdwbcQnMA2BLGn8Lx12fQNICtMw5KyteFeHw.Sjng--" + * } + * *\/ + * ``` + * + * @public + */ +export declare class CreateMultipartUploadCommand extends CreateMultipartUploadCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateMultipartUploadRequest; + output: CreateMultipartUploadOutput; + }; + sdk: { + input: CreateMultipartUploadCommandInput; + output: CreateMultipartUploadCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateSessionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateSessionCommand.d.ts new file mode 100644 index 0000000..5f4f0a2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateSessionCommand.d.ts @@ -0,0 +1,197 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CreateSessionOutput, CreateSessionRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateSessionCommand}. + */ +export interface CreateSessionCommandInput extends CreateSessionRequest { +} +/** + * @public + * + * The output of {@link CreateSessionCommand}. + */ +export interface CreateSessionCommandOutput extends CreateSessionOutput, __MetadataBearer { +} +declare const CreateSessionCommand_base: { + new (input: CreateSessionCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateSessionCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Creates a session that establishes temporary security credentials to support fast authentication and + * authorization for the Zonal endpoint API operations on directory buckets. For more information about Zonal endpoint API operations that + * include the Availability Zone in the request endpoint, see S3 Express One Zone APIs in the + * Amazon S3 User Guide.

+ *

To make Zonal endpoint API requests on a directory bucket, use the CreateSession API + * operation. Specifically, you grant s3express:CreateSession permission to a bucket in + * a bucket policy or an IAM identity-based policy. Then, you use IAM credentials to make the CreateSession + * API request on the bucket, which returns temporary security credentials that include the access key ID, + * secret access key, session token, and expiration. These credentials have associated permissions to + * access the Zonal endpoint API operations. After the session is created, you don’t need to use other policies to grant + * permissions to each Zonal endpoint API individually. Instead, in your Zonal endpoint API requests, you sign your + * requests by applying the temporary security credentials of the session to the request headers and + * following the SigV4 protocol for authentication. You also apply the session token to the + * x-amz-s3session-token request header for authorization. Temporary security credentials + * are scoped to the bucket and expire after 5 minutes. After the expiration time, any calls that you make + * with those credentials will fail. You must use IAM credentials again to make a + * CreateSession API request that generates a new set of temporary credentials for use. + * Temporary credentials cannot be extended or refreshed beyond the original specified interval.

+ *

If you use Amazon Web Services SDKs, SDKs handle the session token refreshes automatically to avoid service + * interruptions when a session expires. We recommend that you use the Amazon Web Services SDKs to initiate and manage + * requests to the CreateSession API. For more information, see Performance guidelines and design patterns in the + * Amazon S3 User Guide.

+ * + *
    + *
  • + *

    You must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * + * CopyObject API operation - Unlike other + * Zonal endpoint API operations, the CopyObject API operation doesn't use the temporary security + * credentials returned from the CreateSession API operation for authentication and + * authorization. For information about authentication and authorization of the + * CopyObject API operation on directory buckets, see CopyObject.

    + *
  • + *
  • + *

    + * + * HeadBucket API operation - Unlike other + * Zonal endpoint API operations, the HeadBucket API operation doesn't use the temporary security + * credentials returned from the CreateSession API operation for authentication and + * authorization. For information about authentication and authorization of the + * HeadBucket API operation on directory buckets, see HeadBucket.

    + *
  • + *
+ *
+ *
+ *
Permissions
+ *
+ *

To obtain temporary security credentials, you must create a bucket policy or an IAM identity-based policy that + * grants s3express:CreateSession permission to the bucket. In a policy, you can have + * the s3express:SessionMode condition key to control who can create a + * ReadWrite or ReadOnly session. For more information about + * ReadWrite or ReadOnly sessions, see + * x-amz-create-session-mode + * . For example policies, see Example + * bucket policies for S3 Express One Zone and Amazon Web Services Identity + * and Access Management (IAM) identity-based policies for S3 Express One Zone in the + * Amazon S3 User Guide.

+ *

To grant cross-account access to Zonal endpoint API operations, the bucket policy should also grant both + * accounts the s3express:CreateSession permission.

+ *

If you want to encrypt objects with SSE-KMS, you must also have the + * kms:GenerateDataKey and the kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the target KMS key.

+ *
+ *
Encryption
+ *
+ *

For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your + * CreateSession requests or PUT object requests. Then, new objects + * are automatically encrypted with the desired encryption settings. For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

+ *

For Zonal endpoint (object-level) API operations except CopyObject and UploadPartCopy, + * you authenticate and authorize requests through CreateSession for low latency. + * To encrypt new objects in a directory bucket with SSE-KMS, you must specify SSE-KMS as the directory bucket's default encryption configuration with a KMS key (specifically, a customer managed key). Then, when a session is created for Zonal endpoint API operations, new objects are automatically encrypted and decrypted with SSE-KMS and S3 Bucket Keys during the session.

+ * + *

+ * Only 1 customer managed key is supported per directory bucket for the lifetime of the bucket. The Amazon Web Services managed key (aws/s3) isn't supported. + * After you specify SSE-KMS as your bucket's default encryption configuration with a customer managed key, you can't change the customer managed key for the bucket's SSE-KMS configuration. + *

+ *
+ *

In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, + * you can't override the values of the encryption settings (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, and x-amz-server-side-encryption-bucket-key-enabled) from the CreateSession request. + * You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and + * Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket. + *

+ * + *

When you use the CLI or the Amazon Web Services SDKs, for CreateSession, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the + * CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. + * Also, in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), + * it's not supported to override the values of the encryption settings from the CreateSession request. + * + *

+ *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, CreateSessionCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, CreateSessionCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // CreateSessionRequest + * SessionMode: "ReadOnly" || "ReadWrite", + * Bucket: "STRING_VALUE", // required + * ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * SSEKMSKeyId: "STRING_VALUE", + * SSEKMSEncryptionContext: "STRING_VALUE", + * BucketKeyEnabled: true || false, + * }; + * const command = new CreateSessionCommand(input); + * const response = await client.send(command); + * // { // CreateSessionOutput + * // ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * // SSEKMSKeyId: "STRING_VALUE", + * // SSEKMSEncryptionContext: "STRING_VALUE", + * // BucketKeyEnabled: true || false, + * // Credentials: { // SessionCredentials + * // AccessKeyId: "STRING_VALUE", // required + * // SecretAccessKey: "STRING_VALUE", // required + * // SessionToken: "STRING_VALUE", // required + * // Expiration: new Date("TIMESTAMP"), // required + * // }, + * // }; + * + * ``` + * + * @param CreateSessionCommandInput - {@link CreateSessionCommandInput} + * @returns {@link CreateSessionCommandOutput} + * @see {@link CreateSessionCommandInput} for command's `input` shape. + * @see {@link CreateSessionCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link NoSuchBucket} (client fault) + *

The specified bucket does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class CreateSessionCommand extends CreateSessionCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateSessionRequest; + output: CreateSessionOutput; + }; + sdk: { + input: CreateSessionCommandInput; + output: CreateSessionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketAnalyticsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketAnalyticsConfigurationCommand.d.ts new file mode 100644 index 0000000..d6a2d39 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketAnalyticsConfigurationCommand.d.ts @@ -0,0 +1,105 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketAnalyticsConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketAnalyticsConfigurationCommand}. + */ +export interface DeleteBucketAnalyticsConfigurationCommandInput extends DeleteBucketAnalyticsConfigurationRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketAnalyticsConfigurationCommand}. + */ +export interface DeleteBucketAnalyticsConfigurationCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketAnalyticsConfigurationCommand_base: { + new (input: DeleteBucketAnalyticsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketAnalyticsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Deletes an analytics configuration for the bucket (specified by the analytics configuration + * ID).

+ *

To use this operation, you must have permissions to perform the + * s3:PutAnalyticsConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *

For information about the Amazon S3 analytics feature, see Amazon S3 Analytics – Storage Class + * Analysis.

+ *

The following operations are related to DeleteBucketAnalyticsConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketAnalyticsConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketAnalyticsConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketAnalyticsConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketAnalyticsConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketAnalyticsConfigurationCommandInput - {@link DeleteBucketAnalyticsConfigurationCommandInput} + * @returns {@link DeleteBucketAnalyticsConfigurationCommandOutput} + * @see {@link DeleteBucketAnalyticsConfigurationCommandInput} for command's `input` shape. + * @see {@link DeleteBucketAnalyticsConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class DeleteBucketAnalyticsConfigurationCommand extends DeleteBucketAnalyticsConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketAnalyticsConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketAnalyticsConfigurationCommandInput; + output: DeleteBucketAnalyticsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCommand.d.ts new file mode 100644 index 0000000..cde54ad --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCommand.d.ts @@ -0,0 +1,144 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketCommand}. + */ +export interface DeleteBucketCommandInput extends DeleteBucketRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketCommand}. + */ +export interface DeleteBucketCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketCommand_base: { + new (input: DeleteBucketCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Deletes the S3 bucket. All objects (including all object versions and delete markers) in the bucket + * must be deleted before the bucket itself can be deleted.

+ * + *
    + *
  • + *

    + * Directory buckets - If multipart uploads in a + * directory bucket are in progress, you can't delete the bucket until all the in-progress multipart + * uploads are aborted or completed.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - You must have the + * s3:DeleteBucket permission on the specified bucket in a policy.

    + *
  • + *
  • + *

    + * Directory bucket permissions - You must have the + * s3express:DeleteBucket permission in an IAM identity-based policy instead of a bucket policy. + * Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to DeleteBucket:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketCommandInput - {@link DeleteBucketCommandInput} + * @returns {@link DeleteBucketCommandOutput} + * @see {@link DeleteBucketCommandInput} for command's `input` shape. + * @see {@link DeleteBucketCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To delete a bucket + * ```javascript + * // The following example deletes the specified bucket. + * const input = { + * Bucket: "forrandall2" + * }; + * const command = new DeleteBucketCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteBucketCommand extends DeleteBucketCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketRequest; + output: {}; + }; + sdk: { + input: DeleteBucketCommandInput; + output: DeleteBucketCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCorsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCorsCommand.d.ts new file mode 100644 index 0000000..76ca9dc --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCorsCommand.d.ts @@ -0,0 +1,111 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketCorsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketCorsCommand}. + */ +export interface DeleteBucketCorsCommandInput extends DeleteBucketCorsRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketCorsCommand}. + */ +export interface DeleteBucketCorsCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketCorsCommand_base: { + new (input: DeleteBucketCorsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketCorsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Deletes the cors configuration information set for the bucket.

+ *

To use this operation, you must have permission to perform the s3:PutBucketCORS action. + * The bucket owner has this permission by default and can grant this permission to others.

+ *

For information about cors, see Enabling Cross-Origin Resource Sharing in the + * Amazon S3 User Guide.

+ *

+ * Related Resources + *

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketCorsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketCorsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketCorsRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketCorsCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketCorsCommandInput - {@link DeleteBucketCorsCommandInput} + * @returns {@link DeleteBucketCorsCommandOutput} + * @see {@link DeleteBucketCorsCommandInput} for command's `input` shape. + * @see {@link DeleteBucketCorsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To delete cors configuration on a bucket. + * ```javascript + * // The following example deletes CORS configuration on a bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new DeleteBucketCorsCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteBucketCorsCommand extends DeleteBucketCorsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketCorsRequest; + output: {}; + }; + sdk: { + input: DeleteBucketCorsCommandInput; + output: DeleteBucketCorsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketEncryptionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketEncryptionCommand.d.ts new file mode 100644 index 0000000..ff88c90 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketEncryptionCommand.d.ts @@ -0,0 +1,134 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketEncryptionRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketEncryptionCommand}. + */ +export interface DeleteBucketEncryptionCommandInput extends DeleteBucketEncryptionRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketEncryptionCommand}. + */ +export interface DeleteBucketEncryptionCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketEncryptionCommand_base: { + new (input: DeleteBucketEncryptionCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketEncryptionCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

This implementation of the DELETE action resets the default encryption for the bucket as server-side + * encryption with Amazon S3 managed keys (SSE-S3).

+ * + * + * + *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:PutEncryptionConfiguration permission is required in a policy. The bucket + * owner has this permission by default. The bucket owner can grant this permission to others. + * For more information about permissions, see Permissions Related to Bucket Operations and Managing Access Permissions to Your + * Amazon S3 Resources.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:PutEncryptionConfiguration + * permission in an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to DeleteBucketEncryption:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketEncryptionCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketEncryptionCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketEncryptionRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketEncryptionCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketEncryptionCommandInput - {@link DeleteBucketEncryptionCommandInput} + * @returns {@link DeleteBucketEncryptionCommandOutput} + * @see {@link DeleteBucketEncryptionCommandInput} for command's `input` shape. + * @see {@link DeleteBucketEncryptionCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class DeleteBucketEncryptionCommand extends DeleteBucketEncryptionCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketEncryptionRequest; + output: {}; + }; + sdk: { + input: DeleteBucketEncryptionCommandInput; + output: DeleteBucketEncryptionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts new file mode 100644 index 0000000..e6c4417 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts @@ -0,0 +1,101 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketIntelligentTieringConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketIntelligentTieringConfigurationCommand}. + */ +export interface DeleteBucketIntelligentTieringConfigurationCommandInput extends DeleteBucketIntelligentTieringConfigurationRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketIntelligentTieringConfigurationCommand}. + */ +export interface DeleteBucketIntelligentTieringConfigurationCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketIntelligentTieringConfigurationCommand_base: { + new (input: DeleteBucketIntelligentTieringConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketIntelligentTieringConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Deletes the S3 Intelligent-Tiering configuration from the specified bucket.

+ *

The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in three low latency and high throughput access tiers. To get the lowest storage cost on data that can be accessed in minutes to hours, you can choose to activate additional archiving capabilities.

+ *

The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not monitored and not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.

+ *

For more information, see Storage class for automatically optimizing frequently and infrequently accessed objects.

+ *

Operations related to DeleteBucketIntelligentTieringConfiguration include:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketIntelligentTieringConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketIntelligentTieringConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketIntelligentTieringConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketIntelligentTieringConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketIntelligentTieringConfigurationCommandInput - {@link DeleteBucketIntelligentTieringConfigurationCommandInput} + * @returns {@link DeleteBucketIntelligentTieringConfigurationCommandOutput} + * @see {@link DeleteBucketIntelligentTieringConfigurationCommandInput} for command's `input` shape. + * @see {@link DeleteBucketIntelligentTieringConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class DeleteBucketIntelligentTieringConfigurationCommand extends DeleteBucketIntelligentTieringConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketIntelligentTieringConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketIntelligentTieringConfigurationCommandInput; + output: DeleteBucketIntelligentTieringConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketInventoryConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketInventoryConfigurationCommand.d.ts new file mode 100644 index 0000000..a3c3fca --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketInventoryConfigurationCommand.d.ts @@ -0,0 +1,107 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketInventoryConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketInventoryConfigurationCommand}. + */ +export interface DeleteBucketInventoryConfigurationCommandInput extends DeleteBucketInventoryConfigurationRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketInventoryConfigurationCommand}. + */ +export interface DeleteBucketInventoryConfigurationCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketInventoryConfigurationCommand_base: { + new (input: DeleteBucketInventoryConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketInventoryConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Deletes an S3 Inventory configuration (identified by the inventory ID) from the bucket.

+ *

To use this operation, you must have permissions to perform the + * s3:PutInventoryConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *

For information about the Amazon S3 inventory feature, see Amazon S3 Inventory.

+ * + *

After deleting a configuration, Amazon S3 might still deliver one additional inventory + * report during a brief transition period while the system processes the deletion.

+ *
+ *

Operations related to DeleteBucketInventoryConfiguration include:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketInventoryConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketInventoryConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketInventoryConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketInventoryConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketInventoryConfigurationCommandInput - {@link DeleteBucketInventoryConfigurationCommandInput} + * @returns {@link DeleteBucketInventoryConfigurationCommandOutput} + * @see {@link DeleteBucketInventoryConfigurationCommandInput} for command's `input` shape. + * @see {@link DeleteBucketInventoryConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class DeleteBucketInventoryConfigurationCommand extends DeleteBucketInventoryConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketInventoryConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketInventoryConfigurationCommandInput; + output: DeleteBucketInventoryConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketLifecycleCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketLifecycleCommand.d.ts new file mode 100644 index 0000000..82ed8b3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketLifecycleCommand.d.ts @@ -0,0 +1,153 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketLifecycleRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketLifecycleCommand}. + */ +export interface DeleteBucketLifecycleCommandInput extends DeleteBucketLifecycleRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketLifecycleCommand}. + */ +export interface DeleteBucketLifecycleCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketLifecycleCommand_base: { + new (input: DeleteBucketLifecycleCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketLifecycleCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Deletes the lifecycle configuration from the specified bucket. Amazon S3 removes all the lifecycle + * configuration rules in the lifecycle subresource associated with the bucket. Your objects never expire, + * and Amazon S3 no longer automatically deletes any objects on the basis of rules contained in the deleted + * lifecycle configuration.

+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - By default, all Amazon S3 + * resources are private, including buckets, objects, and related subresources (for example, + * lifecycle configuration and website configuration). Only the resource owner (that is, the + * Amazon Web Services account that created it) can access the resource. The resource owner can optionally + * grant access permissions to others by writing an access policy. For this operation, a user + * must have the s3:PutLifecycleConfiguration permission.

    + *

    For more information about permissions, see Managing Access Permissions to Your + * Amazon S3 Resources.

    + *
  • + *
+ *
    + *
  • + *

    + * Directory bucket permissions - You must have the + * s3express:PutLifecycleConfiguration permission in an IAM identity-based policy + * to use this operation. Cross-account access to this API operation isn't supported. The + * resource owner can optionally grant access permissions to others by creating a role or user + * for them as long as they are within the same account as the owner and resource.

    + *

    For more information about directory bucket policies and permissions, see Authorizing Regional endpoint APIs with IAM in the Amazon S3 User + * Guide.

    + * + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
    + *
  • + *
+ *
+ *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * s3express-control.region.amazonaws.com.

+ *
+ *
+ *

For more information about the object expiration, see Elements to + * Describe Lifecycle Actions.

+ *

Related actions include:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketLifecycleCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketLifecycleCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketLifecycleRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketLifecycleCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketLifecycleCommandInput - {@link DeleteBucketLifecycleCommandInput} + * @returns {@link DeleteBucketLifecycleCommandOutput} + * @see {@link DeleteBucketLifecycleCommandInput} for command's `input` shape. + * @see {@link DeleteBucketLifecycleCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To delete lifecycle configuration on a bucket. + * ```javascript + * // The following example deletes lifecycle configuration on a bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new DeleteBucketLifecycleCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteBucketLifecycleCommand extends DeleteBucketLifecycleCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketLifecycleRequest; + output: {}; + }; + sdk: { + input: DeleteBucketLifecycleCommandInput; + output: DeleteBucketLifecycleCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetadataConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetadataConfigurationCommand.d.ts new file mode 100644 index 0000000..292e675 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetadataConfigurationCommand.d.ts @@ -0,0 +1,119 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketMetadataConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketMetadataConfigurationCommand}. + */ +export interface DeleteBucketMetadataConfigurationCommandInput extends DeleteBucketMetadataConfigurationRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketMetadataConfigurationCommand}. + */ +export interface DeleteBucketMetadataConfigurationCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketMetadataConfigurationCommand_base: { + new (input: DeleteBucketMetadataConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketMetadataConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Deletes an S3 Metadata configuration from a general purpose bucket. For more information, see + * Accelerating + * data discovery with S3 Metadata in the Amazon S3 User Guide.

+ * + *

You can use the V2 DeleteBucketMetadataConfiguration API operation with V1 or V2 + * metadata configurations. However, if you try to use the V1 + * DeleteBucketMetadataTableConfiguration API operation with V2 configurations, you + * will receive an HTTP 405 Method Not Allowed error.

+ *
+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have the + * s3:DeleteBucketMetadataTableConfiguration permission. For more information, see + * Setting up permissions for configuring metadata tables in the + * Amazon S3 User Guide.

+ * + *

The IAM policy action name is the same for the V1 and V2 API operations.

+ *
+ *
+ *
+ *

The following operations are related to DeleteBucketMetadataConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketMetadataConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketMetadataConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketMetadataConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketMetadataConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketMetadataConfigurationCommandInput - {@link DeleteBucketMetadataConfigurationCommandInput} + * @returns {@link DeleteBucketMetadataConfigurationCommandOutput} + * @see {@link DeleteBucketMetadataConfigurationCommandInput} for command's `input` shape. + * @see {@link DeleteBucketMetadataConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class DeleteBucketMetadataConfigurationCommand extends DeleteBucketMetadataConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketMetadataConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketMetadataConfigurationCommandInput; + output: DeleteBucketMetadataConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetadataTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetadataTableConfigurationCommand.d.ts new file mode 100644 index 0000000..8ccb8d8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetadataTableConfigurationCommand.d.ts @@ -0,0 +1,119 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketMetadataTableConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketMetadataTableConfigurationCommand}. + */ +export interface DeleteBucketMetadataTableConfigurationCommandInput extends DeleteBucketMetadataTableConfigurationRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketMetadataTableConfigurationCommand}. + */ +export interface DeleteBucketMetadataTableConfigurationCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketMetadataTableConfigurationCommand_base: { + new (input: DeleteBucketMetadataTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketMetadataTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

+ * We recommend that you delete your S3 Metadata configurations by using the V2 + * DeleteBucketMetadataTableConfiguration API operation. We no longer recommend using + * the V1 DeleteBucketMetadataTableConfiguration API operation. + *

+ *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ *

Deletes a V1 S3 Metadata configuration from a general purpose bucket. For more information, see + * Accelerating + * data discovery with S3 Metadata in the Amazon S3 User Guide.

+ * + *

You can use the V2 DeleteBucketMetadataConfiguration API operation with V1 or V2 + * metadata table configurations. However, if you try to use the V1 + * DeleteBucketMetadataTableConfiguration API operation with V2 configurations, you + * will receive an HTTP 405 Method Not Allowed error.

+ *

Make sure that you update your processes to use the new V2 API operations + * (CreateBucketMetadataConfiguration, GetBucketMetadataConfiguration, and + * DeleteBucketMetadataConfiguration) instead of the V1 API operations.

+ *
+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have the + * s3:DeleteBucketMetadataTableConfiguration permission. For more information, see + * Setting up permissions for configuring metadata tables in the + * Amazon S3 User Guide.

+ *
+ *
+ *

The following operations are related to DeleteBucketMetadataTableConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketMetadataTableConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketMetadataTableConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketMetadataTableConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketMetadataTableConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketMetadataTableConfigurationCommandInput - {@link DeleteBucketMetadataTableConfigurationCommandInput} + * @returns {@link DeleteBucketMetadataTableConfigurationCommandOutput} + * @see {@link DeleteBucketMetadataTableConfigurationCommandInput} for command's `input` shape. + * @see {@link DeleteBucketMetadataTableConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class DeleteBucketMetadataTableConfigurationCommand extends DeleteBucketMetadataTableConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketMetadataTableConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketMetadataTableConfigurationCommandInput; + output: DeleteBucketMetadataTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetricsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetricsConfigurationCommand.d.ts new file mode 100644 index 0000000..2f7e33a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetricsConfigurationCommand.d.ts @@ -0,0 +1,141 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketMetricsConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketMetricsConfigurationCommand}. + */ +export interface DeleteBucketMetricsConfigurationCommandInput extends DeleteBucketMetricsConfigurationRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketMetricsConfigurationCommand}. + */ +export interface DeleteBucketMetricsConfigurationCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketMetricsConfigurationCommand_base: { + new (input: DeleteBucketMetricsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketMetricsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Deletes a metrics configuration for the Amazon CloudWatch request metrics (specified by the metrics + * configuration ID) from the bucket. Note that this doesn't include the daily storage metrics.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have permissions to perform the + * s3:PutMetricsConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:PutMetricsConfiguration permission is required in a policy. For more information + * about general purpose buckets permissions, see Using Bucket Policies and User + * Policies in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:PutMetricsConfiguration permission in + * an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

For information about CloudWatch request metrics for Amazon S3, see Monitoring Metrics with Amazon CloudWatch.

+ *

The following operations are related to DeleteBucketMetricsConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketMetricsConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketMetricsConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketMetricsConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketMetricsConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketMetricsConfigurationCommandInput - {@link DeleteBucketMetricsConfigurationCommandInput} + * @returns {@link DeleteBucketMetricsConfigurationCommandOutput} + * @see {@link DeleteBucketMetricsConfigurationCommandInput} for command's `input` shape. + * @see {@link DeleteBucketMetricsConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class DeleteBucketMetricsConfigurationCommand extends DeleteBucketMetricsConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketMetricsConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketMetricsConfigurationCommandInput; + output: DeleteBucketMetricsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketOwnershipControlsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketOwnershipControlsCommand.d.ts new file mode 100644 index 0000000..5cb0478 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketOwnershipControlsCommand.d.ts @@ -0,0 +1,96 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketOwnershipControlsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketOwnershipControlsCommand}. + */ +export interface DeleteBucketOwnershipControlsCommandInput extends DeleteBucketOwnershipControlsRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketOwnershipControlsCommand}. + */ +export interface DeleteBucketOwnershipControlsCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketOwnershipControlsCommand_base: { + new (input: DeleteBucketOwnershipControlsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketOwnershipControlsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Removes OwnershipControls for an Amazon S3 bucket. To use this operation, you must have the + * s3:PutBucketOwnershipControls permission. For more information about Amazon S3 permissions, + * see Specifying + * Permissions in a Policy.

+ *

For information about Amazon S3 Object Ownership, see Using Object Ownership.

+ *

The following operations are related to DeleteBucketOwnershipControls:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketOwnershipControlsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketOwnershipControlsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketOwnershipControlsRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketOwnershipControlsCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketOwnershipControlsCommandInput - {@link DeleteBucketOwnershipControlsCommandInput} + * @returns {@link DeleteBucketOwnershipControlsCommandOutput} + * @see {@link DeleteBucketOwnershipControlsCommandInput} for command's `input` shape. + * @see {@link DeleteBucketOwnershipControlsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class DeleteBucketOwnershipControlsCommand extends DeleteBucketOwnershipControlsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketOwnershipControlsRequest; + output: {}; + }; + sdk: { + input: DeleteBucketOwnershipControlsCommandInput; + output: DeleteBucketOwnershipControlsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketPolicyCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketPolicyCommand.d.ts new file mode 100644 index 0000000..90042eb --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketPolicyCommand.d.ts @@ -0,0 +1,152 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketPolicyRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketPolicyCommand}. + */ +export interface DeleteBucketPolicyCommandInput extends DeleteBucketPolicyRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketPolicyCommand}. + */ +export interface DeleteBucketPolicyCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketPolicyCommand_base: { + new (input: DeleteBucketPolicyCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketPolicyCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Deletes the policy of a specified bucket.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *

If you are using an identity other than the root user of the Amazon Web Services account that owns the + * bucket, the calling identity must both have the DeleteBucketPolicy permissions on the + * specified bucket and belong to the bucket owner's account in order to use this operation.

+ *

If you don't have DeleteBucketPolicy permissions, Amazon S3 returns a 403 Access + * Denied error. If you have the correct permissions, but you're not using an identity that + * belongs to the bucket owner's account, Amazon S3 returns a 405 Method Not Allowed + * error.

+ * + *

To ensure that bucket owners don't inadvertently lock themselves out of their own buckets, + * the root principal in a bucket owner's Amazon Web Services account can perform the + * GetBucketPolicy, PutBucketPolicy, and + * DeleteBucketPolicy API actions, even if their bucket policy explicitly denies the + * root principal's access. Bucket owner root principals can only be blocked from performing these + * API actions by VPC endpoint policies and Amazon Web Services Organizations policies.

+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:DeleteBucketPolicy permission is required in a policy. For more information + * about general purpose buckets bucket policies, see Using Bucket Policies and User + * Policies in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:DeleteBucketPolicy permission in + * an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to DeleteBucketPolicy + *

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketPolicyCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketPolicyCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketPolicyRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketPolicyCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketPolicyCommandInput - {@link DeleteBucketPolicyCommandInput} + * @returns {@link DeleteBucketPolicyCommandOutput} + * @see {@link DeleteBucketPolicyCommandInput} for command's `input` shape. + * @see {@link DeleteBucketPolicyCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To delete bucket policy + * ```javascript + * // The following example deletes bucket policy on the specified bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new DeleteBucketPolicyCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteBucketPolicyCommand extends DeleteBucketPolicyCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketPolicyRequest; + output: {}; + }; + sdk: { + input: DeleteBucketPolicyCommandInput; + output: DeleteBucketPolicyCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketReplicationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketReplicationCommand.d.ts new file mode 100644 index 0000000..dae9043 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketReplicationCommand.d.ts @@ -0,0 +1,114 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketReplicationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketReplicationCommand}. + */ +export interface DeleteBucketReplicationCommandInput extends DeleteBucketReplicationRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketReplicationCommand}. + */ +export interface DeleteBucketReplicationCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketReplicationCommand_base: { + new (input: DeleteBucketReplicationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketReplicationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Deletes the replication configuration from the bucket.

+ *

To use this operation, you must have permissions to perform the + * s3:PutReplicationConfiguration action. The bucket owner has these permissions by default + * and can grant it to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ * + *

It can take a while for the deletion of a replication configuration to fully propagate.

+ *
+ *

For information about replication configuration, see Replication in the + * Amazon S3 User Guide.

+ *

The following operations are related to DeleteBucketReplication:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketReplicationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketReplicationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketReplicationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketReplicationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketReplicationCommandInput - {@link DeleteBucketReplicationCommandInput} + * @returns {@link DeleteBucketReplicationCommandOutput} + * @see {@link DeleteBucketReplicationCommandInput} for command's `input` shape. + * @see {@link DeleteBucketReplicationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To delete bucket replication configuration + * ```javascript + * // The following example deletes replication configuration set on bucket. + * const input = { + * Bucket: "example" + * }; + * const command = new DeleteBucketReplicationCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteBucketReplicationCommand extends DeleteBucketReplicationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketReplicationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketReplicationCommandInput; + output: DeleteBucketReplicationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketTaggingCommand.d.ts new file mode 100644 index 0000000..d9e7712 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketTaggingCommand.d.ts @@ -0,0 +1,107 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketTaggingRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketTaggingCommand}. + */ +export interface DeleteBucketTaggingCommandInput extends DeleteBucketTaggingRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketTaggingCommand}. + */ +export interface DeleteBucketTaggingCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketTaggingCommand_base: { + new (input: DeleteBucketTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Deletes tags from the general purpose bucket if attribute based access control (ABAC) is not enabled for the bucket. When you enable ABAC for a general purpose bucket, you can no longer use this operation for that bucket and must use UntagResource instead.

+ *

To use this operation, you must have permission to perform the s3:PutBucketTagging + * action. By default, the bucket owner has this permission and can grant this permission to others.

+ *

The following operations are related to DeleteBucketTagging:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketTaggingCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketTaggingCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketTaggingRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketTaggingCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketTaggingCommandInput - {@link DeleteBucketTaggingCommandInput} + * @returns {@link DeleteBucketTaggingCommandOutput} + * @see {@link DeleteBucketTaggingCommandInput} for command's `input` shape. + * @see {@link DeleteBucketTaggingCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To delete bucket tags + * ```javascript + * // The following example deletes bucket tags. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new DeleteBucketTaggingCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteBucketTaggingCommand extends DeleteBucketTaggingCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketTaggingRequest; + output: {}; + }; + sdk: { + input: DeleteBucketTaggingCommandInput; + output: DeleteBucketTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketWebsiteCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketWebsiteCommand.d.ts new file mode 100644 index 0000000..4bb019f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketWebsiteCommand.d.ts @@ -0,0 +1,114 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteBucketWebsiteRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteBucketWebsiteCommand}. + */ +export interface DeleteBucketWebsiteCommandInput extends DeleteBucketWebsiteRequest { +} +/** + * @public + * + * The output of {@link DeleteBucketWebsiteCommand}. + */ +export interface DeleteBucketWebsiteCommandOutput extends __MetadataBearer { +} +declare const DeleteBucketWebsiteCommand_base: { + new (input: DeleteBucketWebsiteCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteBucketWebsiteCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

This action removes the website configuration for a bucket. Amazon S3 returns a 200 OK + * response upon successfully deleting a website configuration on the specified bucket. You will get a + * 200 OK response if the website configuration you are trying to delete does not exist on + * the bucket. Amazon S3 returns a 404 response if the bucket specified in the request does not + * exist.

+ *

This DELETE action requires the S3:DeleteBucketWebsite permission. By default, only the + * bucket owner can delete the website configuration attached to a bucket. However, bucket owners can grant + * other users permission to delete the website configuration by writing a bucket policy granting them the + * S3:DeleteBucketWebsite permission.

+ *

For more information about hosting websites, see Hosting Websites on Amazon S3.

+ *

The following operations are related to DeleteBucketWebsite:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteBucketWebsiteCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteBucketWebsiteCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteBucketWebsiteRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteBucketWebsiteCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeleteBucketWebsiteCommandInput - {@link DeleteBucketWebsiteCommandInput} + * @returns {@link DeleteBucketWebsiteCommandOutput} + * @see {@link DeleteBucketWebsiteCommandInput} for command's `input` shape. + * @see {@link DeleteBucketWebsiteCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To delete bucket website configuration + * ```javascript + * // The following example deletes bucket website configuration. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new DeleteBucketWebsiteCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteBucketWebsiteCommand extends DeleteBucketWebsiteCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteBucketWebsiteRequest; + output: {}; + }; + sdk: { + input: DeleteBucketWebsiteCommandInput; + output: DeleteBucketWebsiteCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectCommand.d.ts new file mode 100644 index 0000000..d628d35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectCommand.d.ts @@ -0,0 +1,237 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteObjectOutput, DeleteObjectRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteObjectCommand}. + */ +export interface DeleteObjectCommandInput extends DeleteObjectRequest { +} +/** + * @public + * + * The output of {@link DeleteObjectCommand}. + */ +export interface DeleteObjectCommandOutput extends DeleteObjectOutput, __MetadataBearer { +} +declare const DeleteObjectCommand_base: { + new (input: DeleteObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Removes an object from a bucket. The behavior depends on the bucket's versioning state:

+ *
    + *
  • + *

    If bucket versioning is not enabled, the operation permanently deletes the object.

    + *
  • + *
  • + *

    If bucket versioning is enabled, the operation inserts a delete marker, which becomes the + * current version of the object. To permanently delete an object in a versioned bucket, you must + * include the object’s versionId in the request. For more information about + * versioning-enabled buckets, see Deleting object versions from a + * versioning-enabled bucket.

    + *
  • + *
  • + *

    If bucket versioning is suspended, the operation removes the object that has a null + * versionId, if there is one, and inserts a delete marker that becomes the current + * version of the object. If there isn't an object with a null versionId, and all versions + * of the object have a versionId, Amazon S3 does not remove the object and only inserts a + * delete marker. To permanently delete an object that has a versionId, you must include + * the object’s versionId in the request. For more information about versioning-suspended + * buckets, see Deleting + * objects from versioning-suspended buckets.

    + *
  • + *
+ * + *
    + *
  • + *

    + * Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. + * You can only specify null to the versionId query parameter in the + * request.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *

To remove a specific version, you must use the versionId query parameter. Using this + * query parameter permanently deletes the version. If the object deleted is a delete marker, Amazon S3 sets the + * response header x-amz-delete-marker to true.

+ *

If the object you want to delete is in a bucket where the bucket versioning configuration is MFA + * Delete enabled, you must include the x-amz-mfa request header in the DELETE + * versionId request. Requests that include x-amz-mfa must use HTTPS. For more + * information about MFA Delete, see Using MFA Delete in the Amazon S3 User + * Guide. To see sample requests that use versioning, see Sample Request.

+ * + *

+ * Directory buckets - MFA delete is not supported by directory buckets.

+ *
+ *

You can delete objects by explicitly calling DELETE Object or calling (PutBucketLifecycle) to enable Amazon S3 to + * remove them for you. If you want to block users or accounts from removing or deleting objects from your + * bucket, you must deny them the s3:DeleteObject, s3:DeleteObjectVersion, and + * s3:PutLifeCycleConfiguration actions.

+ * + *

+ * Directory buckets - + * S3 Lifecycle is not supported by directory buckets.

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - The following + * permissions are required in your policies when your DeleteObjects request + * includes specific headers.

    + *
      + *
    • + *

      + * + * s3:DeleteObject + * - To + * delete an object from a bucket, you must always have the + * s3:DeleteObject permission.

      + *
    • + *
    • + *

      + * + * s3:DeleteObjectVersion + * - To delete a specific version of an object from a versioning-enabled + * bucket, you must have the s3:DeleteObjectVersion permission.

      + * + *

      If the s3:DeleteObject or s3:DeleteObjectVersion permissions are explicitly + * denied in your bucket policy, attempts to delete any unversioned objects + * result in a 403 Access Denied error.

      + *
      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following action is related to DeleteObject:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * + *

The If-Match header is supported for both general purpose and directory buckets. IfMatchLastModifiedTime and IfMatchSize is only supported for directory buckets.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteObjectCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteObjectCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteObjectRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * MFA: "STRING_VALUE", + * VersionId: "STRING_VALUE", + * RequestPayer: "requester", + * BypassGovernanceRetention: true || false, + * ExpectedBucketOwner: "STRING_VALUE", + * IfMatch: "STRING_VALUE", + * IfMatchLastModifiedTime: new Date("TIMESTAMP"), + * IfMatchSize: Number("long"), + * }; + * const command = new DeleteObjectCommand(input); + * const response = await client.send(command); + * // { // DeleteObjectOutput + * // DeleteMarker: true || false, + * // VersionId: "STRING_VALUE", + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param DeleteObjectCommandInput - {@link DeleteObjectCommandInput} + * @returns {@link DeleteObjectCommandOutput} + * @see {@link DeleteObjectCommandInput} for command's `input` shape. + * @see {@link DeleteObjectCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To delete an object (from a non-versioned bucket) + * ```javascript + * // The following example deletes an object from a non-versioned bucket. + * const input = { + * Bucket: "ExampleBucket", + * Key: "HappyFace.jpg" + * }; + * const command = new DeleteObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @example To delete an object + * ```javascript + * // The following example deletes an object from an S3 bucket. + * const input = { + * Bucket: "examplebucket", + * Key: "objectkey.jpg" + * }; + * const command = new DeleteObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { /* empty *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteObjectCommand extends DeleteObjectCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteObjectRequest; + output: DeleteObjectOutput; + }; + sdk: { + input: DeleteObjectCommandInput; + output: DeleteObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectTaggingCommand.d.ts new file mode 100644 index 0000000..430f1be --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectTaggingCommand.d.ts @@ -0,0 +1,135 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteObjectTaggingOutput, DeleteObjectTaggingRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteObjectTaggingCommand}. + */ +export interface DeleteObjectTaggingCommandInput extends DeleteObjectTaggingRequest { +} +/** + * @public + * + * The output of {@link DeleteObjectTaggingCommand}. + */ +export interface DeleteObjectTaggingCommandOutput extends DeleteObjectTaggingOutput, __MetadataBearer { +} +declare const DeleteObjectTaggingCommand_base: { + new (input: DeleteObjectTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteObjectTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Removes the entire tag set from the specified object. For more information about managing object + * tags, see Object + * Tagging.

+ *

To use this operation, you must have permission to perform the s3:DeleteObjectTagging + * action.

+ *

To delete tags of a specific object version, add the versionId query parameter in the + * request. You will need permission for the s3:DeleteObjectVersionTagging action.

+ *

The following operations are related to DeleteObjectTagging:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteObjectTaggingCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteObjectTaggingCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteObjectTaggingRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeleteObjectTaggingCommand(input); + * const response = await client.send(command); + * // { // DeleteObjectTaggingOutput + * // VersionId: "STRING_VALUE", + * // }; + * + * ``` + * + * @param DeleteObjectTaggingCommandInput - {@link DeleteObjectTaggingCommandInput} + * @returns {@link DeleteObjectTaggingCommandOutput} + * @see {@link DeleteObjectTaggingCommandInput} for command's `input` shape. + * @see {@link DeleteObjectTaggingCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To remove tag set from an object + * ```javascript + * // The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the operation removes tag set from the latest object version. + * const input = { + * Bucket: "examplebucket", + * Key: "HappyFace.jpg" + * }; + * const command = new DeleteObjectTaggingCommand(input); + * const response = await client.send(command); + * /* response is + * { + * VersionId: "null" + * } + * *\/ + * ``` + * + * @example To remove tag set from an object version + * ```javascript + * // The following example removes tag set associated with the specified object version. The request specifies both the object key and object version. + * const input = { + * Bucket: "examplebucket", + * Key: "HappyFace.jpg", + * VersionId: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" + * }; + * const command = new DeleteObjectTaggingCommand(input); + * const response = await client.send(command); + * /* response is + * { + * VersionId: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" + * } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteObjectTaggingCommand extends DeleteObjectTaggingCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteObjectTaggingRequest; + output: DeleteObjectTaggingOutput; + }; + sdk: { + input: DeleteObjectTaggingCommandInput; + output: DeleteObjectTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectsCommand.d.ts new file mode 100644 index 0000000..b09bf58 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectsCommand.d.ts @@ -0,0 +1,318 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeleteObjectsOutput, DeleteObjectsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeleteObjectsCommand}. + */ +export interface DeleteObjectsCommandInput extends DeleteObjectsRequest { +} +/** + * @public + * + * The output of {@link DeleteObjectsCommand}. + */ +export interface DeleteObjectsCommandOutput extends DeleteObjectsOutput, __MetadataBearer { +} +declare const DeleteObjectsCommand_base: { + new (input: DeleteObjectsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeleteObjectsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

This operation enables you to delete multiple objects from a bucket using a single HTTP request. If + * you know the object keys that you want to delete, then this operation provides a suitable alternative to + * sending individual delete requests, reducing per-request overhead.

+ *

The request can contain a list of up to 1,000 keys that you want to delete. In the XML, you provide + * the object key names, and optionally, version IDs if you want to delete a specific version of the object + * from a versioning-enabled bucket. For each key, Amazon S3 performs a delete operation and returns the result + * of that delete, success or failure, in the response. If the object specified in the request isn't found, + * Amazon S3 confirms the deletion by returning the result as deleted.

+ * + *
    + *
  • + *

    + * Directory buckets - + * S3 Versioning isn't enabled and supported for directory buckets.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *

The operation supports two modes for the response: verbose and quiet. By default, the operation uses + * verbose mode in which the response includes the result of deletion of each key in your request. In quiet + * mode the response includes only keys where the delete operation encountered an error. For a successful + * deletion in a quiet mode, the operation does not return any information about the delete in the response + * body.

+ *

When performing this action on an MFA Delete enabled bucket, that attempts to delete any versioned + * objects, you must include an MFA token. If you do not provide one, the entire request will fail, even if + * there are non-versioned objects you are trying to delete. If you provide an invalid token, whether there + * are versioned keys in the request or not, the entire Multi-Object Delete request will fail. For + * information about MFA Delete, see MFA Delete in the + * Amazon S3 User Guide.

+ * + *

+ * Directory buckets - MFA delete is not supported by directory buckets.

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - The following + * permissions are required in your policies when your DeleteObjects request + * includes specific headers.

    + *
      + *
    • + *

      + * + * s3:DeleteObject + * - To delete an + * object from a bucket, you must always specify the s3:DeleteObject + * permission.

      + *
    • + *
    • + *

      + * + * s3:DeleteObjectVersion + * - To delete a specific version of an object from a versioning-enabled + * bucket, you must specify the s3:DeleteObjectVersion permission.

      + * + *

      If the s3:DeleteObject or s3:DeleteObjectVersion permissions are explicitly + * denied in your bucket policy, attempts to delete any unversioned objects + * result in a 403 Access Denied error.

      + *
      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *
  • + *
+ *
+ *
Content-MD5 request header
+ *
+ *
    + *
  • + *

    + * General purpose bucket - The Content-MD5 request header + * is required for all Multi-Object Delete requests. Amazon S3 uses the header value to ensure that + * your request body has not been altered in transit.

    + *
  • + *
  • + *

    + * Directory bucket - The Content-MD5 request header + * or a additional checksum request header (including x-amz-checksum-crc32, + * x-amz-checksum-crc32c, x-amz-checksum-sha1, or + * x-amz-checksum-sha256) is required for all Multi-Object Delete requests.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to DeleteObjects:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeleteObjectsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeleteObjectsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeleteObjectsRequest + * Bucket: "STRING_VALUE", // required + * Delete: { // Delete + * Objects: [ // ObjectIdentifierList // required + * { // ObjectIdentifier + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * ETag: "STRING_VALUE", + * LastModifiedTime: new Date("TIMESTAMP"), + * Size: Number("long"), + * }, + * ], + * Quiet: true || false, + * }, + * MFA: "STRING_VALUE", + * RequestPayer: "requester", + * BypassGovernanceRetention: true || false, + * ExpectedBucketOwner: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * }; + * const command = new DeleteObjectsCommand(input); + * const response = await client.send(command); + * // { // DeleteObjectsOutput + * // Deleted: [ // DeletedObjects + * // { // DeletedObject + * // Key: "STRING_VALUE", + * // VersionId: "STRING_VALUE", + * // DeleteMarker: true || false, + * // DeleteMarkerVersionId: "STRING_VALUE", + * // }, + * // ], + * // RequestCharged: "requester", + * // Errors: [ // Errors + * // { // Error + * // Key: "STRING_VALUE", + * // VersionId: "STRING_VALUE", + * // Code: "STRING_VALUE", + * // Message: "STRING_VALUE", + * // }, + * // ], + * // }; + * + * ``` + * + * @param DeleteObjectsCommandInput - {@link DeleteObjectsCommandInput} + * @returns {@link DeleteObjectsCommandOutput} + * @see {@link DeleteObjectsCommandInput} for command's `input` shape. + * @see {@link DeleteObjectsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To delete multiple object versions from a versioned bucket + * ```javascript + * // The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object versions and returns the key and versions of deleted objects in the response. + * const input = { + * Bucket: "examplebucket", + * Delete: { + * Objects: [ + * { + * Key: "HappyFace.jpg", + * VersionId: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b" + * }, + * { + * Key: "HappyFace.jpg", + * VersionId: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd" + * } + * ], + * Quiet: false + * } + * }; + * const command = new DeleteObjectsCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Deleted: [ + * { + * Key: "HappyFace.jpg", + * VersionId: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd" + * }, + * { + * Key: "HappyFace.jpg", + * VersionId: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b" + * } + * ] + * } + * *\/ + * ``` + * + * @example To delete multiple objects from a versioned bucket + * ```javascript + * // The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker. + * const input = { + * Bucket: "examplebucket", + * Delete: { + * Objects: [ + * { + * Key: "objectkey1" + * }, + * { + * Key: "objectkey2" + * } + * ], + * Quiet: false + * } + * }; + * const command = new DeleteObjectsCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Deleted: [ + * { + * DeleteMarker: true, + * DeleteMarkerVersionId: "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F", + * Key: "objectkey1" + * }, + * { + * DeleteMarker: true, + * DeleteMarkerVersionId: "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt", + * Key: "objectkey2" + * } + * ] + * } + * *\/ + * ``` + * + * @public + */ +export declare class DeleteObjectsCommand extends DeleteObjectsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeleteObjectsRequest; + output: DeleteObjectsOutput; + }; + sdk: { + input: DeleteObjectsCommandInput; + output: DeleteObjectsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeletePublicAccessBlockCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeletePublicAccessBlockCommand.d.ts new file mode 100644 index 0000000..8b7db2b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/DeletePublicAccessBlockCommand.d.ts @@ -0,0 +1,108 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { DeletePublicAccessBlockRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link DeletePublicAccessBlockCommand}. + */ +export interface DeletePublicAccessBlockCommandInput extends DeletePublicAccessBlockRequest { +} +/** + * @public + * + * The output of {@link DeletePublicAccessBlockCommand}. + */ +export interface DeletePublicAccessBlockCommandOutput extends __MetadataBearer { +} +declare const DeletePublicAccessBlockCommand_base: { + new (input: DeletePublicAccessBlockCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: DeletePublicAccessBlockCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Removes the PublicAccessBlock configuration for an Amazon S3 bucket. This + * operation removes the bucket-level configuration only. The effective public access behavior + * will still be governed by account-level settings (which may inherit from organization-level + * policies). To use this operation, you must have the s3:PutBucketPublicAccessBlock + * permission. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access + * Permissions to Your Amazon S3 Resources.

+ *

The following operations are related to DeletePublicAccessBlock:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, DeletePublicAccessBlockCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, DeletePublicAccessBlockCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // DeletePublicAccessBlockRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new DeletePublicAccessBlockCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param DeletePublicAccessBlockCommandInput - {@link DeletePublicAccessBlockCommandInput} + * @returns {@link DeletePublicAccessBlockCommandOutput} + * @see {@link DeletePublicAccessBlockCommandInput} for command's `input` shape. + * @see {@link DeletePublicAccessBlockCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class DeletePublicAccessBlockCommand extends DeletePublicAccessBlockCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: DeletePublicAccessBlockRequest; + output: {}; + }; + sdk: { + input: DeletePublicAccessBlockCommandInput; + output: DeletePublicAccessBlockCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAbacCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAbacCommand.d.ts new file mode 100644 index 0000000..8cb5b30 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAbacCommand.d.ts @@ -0,0 +1,77 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketAbacOutput, GetBucketAbacRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketAbacCommand}. + */ +export interface GetBucketAbacCommandInput extends GetBucketAbacRequest { +} +/** + * @public + * + * The output of {@link GetBucketAbacCommand}. + */ +export interface GetBucketAbacCommandOutput extends GetBucketAbacOutput, __MetadataBearer { +} +declare const GetBucketAbacCommand_base: { + new (input: GetBucketAbacCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketAbacCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns the attribute-based access control (ABAC) property of the general purpose bucket. If ABAC is enabled on your bucket, you can use tags on the bucket for access control. For more information, see Enabling ABAC in general purpose buckets.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketAbacCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketAbacCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketAbacRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketAbacCommand(input); + * const response = await client.send(command); + * // { // GetBucketAbacOutput + * // AbacStatus: { // AbacStatus + * // Status: "Enabled" || "Disabled", + * // }, + * // }; + * + * ``` + * + * @param GetBucketAbacCommandInput - {@link GetBucketAbacCommandInput} + * @returns {@link GetBucketAbacCommandOutput} + * @see {@link GetBucketAbacCommandInput} for command's `input` shape. + * @see {@link GetBucketAbacCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketAbacCommand extends GetBucketAbacCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketAbacRequest; + output: GetBucketAbacOutput; + }; + sdk: { + input: GetBucketAbacCommandInput; + output: GetBucketAbacCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAccelerateConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAccelerateConfigurationCommand.d.ts new file mode 100644 index 0000000..9504ab1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAccelerateConfigurationCommand.d.ts @@ -0,0 +1,105 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketAccelerateConfigurationOutput, GetBucketAccelerateConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketAccelerateConfigurationCommand}. + */ +export interface GetBucketAccelerateConfigurationCommandInput extends GetBucketAccelerateConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetBucketAccelerateConfigurationCommand}. + */ +export interface GetBucketAccelerateConfigurationCommandOutput extends GetBucketAccelerateConfigurationOutput, __MetadataBearer { +} +declare const GetBucketAccelerateConfigurationCommand_base: { + new (input: GetBucketAccelerateConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketAccelerateConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

This implementation of the GET action uses the accelerate subresource to return the + * Transfer Acceleration state of a bucket, which is either Enabled or Suspended. + * Amazon S3 Transfer Acceleration is a bucket-level feature that enables you to perform faster data transfers + * to and from Amazon S3.

+ *

To use this operation, you must have permission to perform the + * s3:GetAccelerateConfiguration action. The bucket owner has this permission by default. + * The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to your Amazon S3 + * Resources in the Amazon S3 User Guide.

+ *

You set the Transfer Acceleration state of an existing bucket to Enabled or + * Suspended by using the PutBucketAccelerateConfiguration operation.

+ *

A GET accelerate request does not return a state value for a bucket that has no + * transfer acceleration state. A bucket has no Transfer Acceleration state if a state has never been set + * on the bucket.

+ *

For more information about transfer acceleration, see Transfer Acceleration in the + * Amazon S3 User Guide.

+ *

The following operations are related to GetBucketAccelerateConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketAccelerateConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketAccelerateConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketAccelerateConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * RequestPayer: "requester", + * }; + * const command = new GetBucketAccelerateConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetBucketAccelerateConfigurationOutput + * // Status: "Enabled" || "Suspended", + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param GetBucketAccelerateConfigurationCommandInput - {@link GetBucketAccelerateConfigurationCommandInput} + * @returns {@link GetBucketAccelerateConfigurationCommandOutput} + * @see {@link GetBucketAccelerateConfigurationCommandInput} for command's `input` shape. + * @see {@link GetBucketAccelerateConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketAccelerateConfigurationCommand extends GetBucketAccelerateConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketAccelerateConfigurationRequest; + output: GetBucketAccelerateConfigurationOutput; + }; + sdk: { + input: GetBucketAccelerateConfigurationCommandInput; + output: GetBucketAccelerateConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAclCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAclCommand.d.ts new file mode 100644 index 0000000..6a0f670 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAclCommand.d.ts @@ -0,0 +1,119 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketAclOutput, GetBucketAclRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketAclCommand}. + */ +export interface GetBucketAclCommandInput extends GetBucketAclRequest { +} +/** + * @public + * + * The output of {@link GetBucketAclCommand}. + */ +export interface GetBucketAclCommandOutput extends GetBucketAclOutput, __MetadataBearer { +} +declare const GetBucketAclCommand_base: { + new (input: GetBucketAclCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketAclCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

This implementation of the GET action uses the acl subresource to return + * the access control list (ACL) of a bucket. To use GET to return the ACL of the bucket, you + * must have the READ_ACP access to the bucket. If READ_ACP permission is granted + * to the anonymous user, you can return the ACL of the bucket without using an authorization + * header.

+ *

When you use this API operation with an access point, provide the alias of the access point in place of the bucket name.

+ *

When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ * + *

If your bucket uses the bucket owner enforced setting for S3 Object Ownership, requests to read + * ACLs are still supported and return the bucket-owner-full-control ACL with the owner + * being the account that created the bucket. For more information, see Controlling object ownership and + * disabling ACLs in the Amazon S3 User Guide.

+ *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ *

The following operations are related to GetBucketAcl:

+ * + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketAclCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketAclCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketAclRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketAclCommand(input); + * const response = await client.send(command); + * // { // GetBucketAclOutput + * // Owner: { // Owner + * // DisplayName: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // }, + * // Grants: [ // Grants + * // { // Grant + * // Grantee: { // Grantee + * // DisplayName: "STRING_VALUE", + * // EmailAddress: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // URI: "STRING_VALUE", + * // Type: "CanonicalUser" || "AmazonCustomerByEmail" || "Group", // required + * // }, + * // Permission: "FULL_CONTROL" || "WRITE" || "WRITE_ACP" || "READ" || "READ_ACP", + * // }, + * // ], + * // }; + * + * ``` + * + * @param GetBucketAclCommandInput - {@link GetBucketAclCommandInput} + * @returns {@link GetBucketAclCommandOutput} + * @see {@link GetBucketAclCommandInput} for command's `input` shape. + * @see {@link GetBucketAclCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketAclCommand extends GetBucketAclCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketAclRequest; + output: GetBucketAclOutput; + }; + sdk: { + input: GetBucketAclCommandInput; + output: GetBucketAclCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAnalyticsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAnalyticsConfigurationCommand.d.ts new file mode 100644 index 0000000..5160504 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAnalyticsConfigurationCommand.d.ts @@ -0,0 +1,138 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketAnalyticsConfigurationOutput, GetBucketAnalyticsConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketAnalyticsConfigurationCommand}. + */ +export interface GetBucketAnalyticsConfigurationCommandInput extends GetBucketAnalyticsConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetBucketAnalyticsConfigurationCommand}. + */ +export interface GetBucketAnalyticsConfigurationCommandOutput extends GetBucketAnalyticsConfigurationOutput, __MetadataBearer { +} +declare const GetBucketAnalyticsConfigurationCommand_base: { + new (input: GetBucketAnalyticsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketAnalyticsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

This implementation of the GET action returns an analytics configuration (identified by the + * analytics configuration ID) from the bucket.

+ *

To use this operation, you must have permissions to perform the + * s3:GetAnalyticsConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources in the Amazon S3 User Guide.

+ *

For information about Amazon S3 analytics feature, see Amazon S3 Analytics – Storage Class Analysis + * in the Amazon S3 User Guide.

+ *

The following operations are related to GetBucketAnalyticsConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketAnalyticsConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketAnalyticsConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketAnalyticsConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketAnalyticsConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetBucketAnalyticsConfigurationOutput + * // AnalyticsConfiguration: { // AnalyticsConfiguration + * // Id: "STRING_VALUE", // required + * // Filter: { // AnalyticsFilter Union: only one key present + * // Prefix: "STRING_VALUE", + * // Tag: { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // And: { // AnalyticsAndOperator + * // Prefix: "STRING_VALUE", + * // Tags: [ // TagSet + * // { + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // }, + * // }, + * // StorageClassAnalysis: { // StorageClassAnalysis + * // DataExport: { // StorageClassAnalysisDataExport + * // OutputSchemaVersion: "V_1", // required + * // Destination: { // AnalyticsExportDestination + * // S3BucketDestination: { // AnalyticsS3BucketDestination + * // Format: "CSV", // required + * // BucketAccountId: "STRING_VALUE", + * // Bucket: "STRING_VALUE", // required + * // Prefix: "STRING_VALUE", + * // }, + * // }, + * // }, + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetBucketAnalyticsConfigurationCommandInput - {@link GetBucketAnalyticsConfigurationCommandInput} + * @returns {@link GetBucketAnalyticsConfigurationCommandOutput} + * @see {@link GetBucketAnalyticsConfigurationCommandInput} for command's `input` shape. + * @see {@link GetBucketAnalyticsConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketAnalyticsConfigurationCommand extends GetBucketAnalyticsConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketAnalyticsConfigurationRequest; + output: GetBucketAnalyticsConfigurationOutput; + }; + sdk: { + input: GetBucketAnalyticsConfigurationCommandInput; + output: GetBucketAnalyticsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketCorsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketCorsCommand.d.ts new file mode 100644 index 0000000..4edb078 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketCorsCommand.d.ts @@ -0,0 +1,148 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketCorsOutput, GetBucketCorsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketCorsCommand}. + */ +export interface GetBucketCorsCommandInput extends GetBucketCorsRequest { +} +/** + * @public + * + * The output of {@link GetBucketCorsCommand}. + */ +export interface GetBucketCorsCommandOutput extends GetBucketCorsOutput, __MetadataBearer { +} +declare const GetBucketCorsCommand_base: { + new (input: GetBucketCorsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketCorsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the Cross-Origin Resource Sharing (CORS) configuration information set for the + * bucket.

+ *

To use this operation, you must have permission to perform the s3:GetBucketCORS + * action. By default, the bucket owner has this permission and can grant it to others.

+ *

When you use this API operation with an access point, provide the alias of the access point in place of the bucket name.

+ *

When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ *

For more information about CORS, see Enabling Cross-Origin Resource Sharing.

+ *

The following operations are related to GetBucketCors:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketCorsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketCorsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketCorsRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketCorsCommand(input); + * const response = await client.send(command); + * // { // GetBucketCorsOutput + * // CORSRules: [ // CORSRules + * // { // CORSRule + * // ID: "STRING_VALUE", + * // AllowedHeaders: [ // AllowedHeaders + * // "STRING_VALUE", + * // ], + * // AllowedMethods: [ // AllowedMethods // required + * // "STRING_VALUE", + * // ], + * // AllowedOrigins: [ // AllowedOrigins // required + * // "STRING_VALUE", + * // ], + * // ExposeHeaders: [ // ExposeHeaders + * // "STRING_VALUE", + * // ], + * // MaxAgeSeconds: Number("int"), + * // }, + * // ], + * // }; + * + * ``` + * + * @param GetBucketCorsCommandInput - {@link GetBucketCorsCommandInput} + * @returns {@link GetBucketCorsCommandOutput} + * @see {@link GetBucketCorsCommandInput} for command's `input` shape. + * @see {@link GetBucketCorsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get cors configuration set on a bucket + * ```javascript + * // The following example returns cross-origin resource sharing (CORS) configuration set on a bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new GetBucketCorsCommand(input); + * const response = await client.send(command); + * /* response is + * { + * CORSRules: [ + * { + * AllowedHeaders: [ + * "Authorization" + * ], + * AllowedMethods: [ + * "GET" + * ], + * AllowedOrigins: [ + * "*" + * ], + * MaxAgeSeconds: 3000 + * } + * ] + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetBucketCorsCommand extends GetBucketCorsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketCorsRequest; + output: GetBucketCorsOutput; + }; + sdk: { + input: GetBucketCorsCommandInput; + output: GetBucketCorsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketEncryptionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketEncryptionCommand.d.ts new file mode 100644 index 0000000..e4538a7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketEncryptionCommand.d.ts @@ -0,0 +1,151 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketEncryptionOutput, GetBucketEncryptionRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketEncryptionCommand}. + */ +export interface GetBucketEncryptionCommandInput extends GetBucketEncryptionRequest { +} +/** + * @public + * + * The output of {@link GetBucketEncryptionCommand}. + */ +export interface GetBucketEncryptionCommandOutput extends GetBucketEncryptionOutput, __MetadataBearer { +} +declare const GetBucketEncryptionCommand_base: { + new (input: GetBucketEncryptionCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketEncryptionCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns the default encryption configuration for an Amazon S3 bucket. By default, all buckets have a + * default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). This operation also returns the BucketKeyEnabled and BlockedEncryptionTypes statuses.

+ * + * + * + *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:GetEncryptionConfiguration permission is required in a policy. The bucket + * owner has this permission by default. The bucket owner can grant this permission to others. + * For more information about permissions, see Permissions Related to Bucket Operations and Managing Access Permissions to Your + * Amazon S3 Resources.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:GetEncryptionConfiguration + * permission in an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to GetBucketEncryption:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketEncryptionCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketEncryptionCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketEncryptionRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketEncryptionCommand(input); + * const response = await client.send(command); + * // { // GetBucketEncryptionOutput + * // ServerSideEncryptionConfiguration: { // ServerSideEncryptionConfiguration + * // Rules: [ // ServerSideEncryptionRules // required + * // { // ServerSideEncryptionRule + * // ApplyServerSideEncryptionByDefault: { // ServerSideEncryptionByDefault + * // SSEAlgorithm: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", // required + * // KMSMasterKeyID: "STRING_VALUE", + * // }, + * // BucketKeyEnabled: true || false, + * // BlockedEncryptionTypes: { // BlockedEncryptionTypes + * // EncryptionType: [ // EncryptionTypeList + * // "NONE" || "SSE-C", + * // ], + * // }, + * // }, + * // ], + * // }, + * // }; + * + * ``` + * + * @param GetBucketEncryptionCommandInput - {@link GetBucketEncryptionCommandInput} + * @returns {@link GetBucketEncryptionCommandOutput} + * @see {@link GetBucketEncryptionCommandInput} for command's `input` shape. + * @see {@link GetBucketEncryptionCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketEncryptionCommand extends GetBucketEncryptionCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketEncryptionRequest; + output: GetBucketEncryptionOutput; + }; + sdk: { + input: GetBucketEncryptionCommandInput; + output: GetBucketEncryptionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts new file mode 100644 index 0000000..bae56e8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts @@ -0,0 +1,128 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketIntelligentTieringConfigurationOutput, GetBucketIntelligentTieringConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketIntelligentTieringConfigurationCommand}. + */ +export interface GetBucketIntelligentTieringConfigurationCommandInput extends GetBucketIntelligentTieringConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetBucketIntelligentTieringConfigurationCommand}. + */ +export interface GetBucketIntelligentTieringConfigurationCommandOutput extends GetBucketIntelligentTieringConfigurationOutput, __MetadataBearer { +} +declare const GetBucketIntelligentTieringConfigurationCommand_base: { + new (input: GetBucketIntelligentTieringConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketIntelligentTieringConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Gets the S3 Intelligent-Tiering configuration from the specified bucket.

+ *

The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in three low latency and high throughput access tiers. To get the lowest storage cost on data that can be accessed in minutes to hours, you can choose to activate additional archiving capabilities.

+ *

The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not monitored and not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.

+ *

For more information, see Storage class for automatically optimizing frequently and infrequently accessed objects.

+ *

Operations related to GetBucketIntelligentTieringConfiguration include:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketIntelligentTieringConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketIntelligentTieringConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketIntelligentTieringConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketIntelligentTieringConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetBucketIntelligentTieringConfigurationOutput + * // IntelligentTieringConfiguration: { // IntelligentTieringConfiguration + * // Id: "STRING_VALUE", // required + * // Filter: { // IntelligentTieringFilter + * // Prefix: "STRING_VALUE", + * // Tag: { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // And: { // IntelligentTieringAndOperator + * // Prefix: "STRING_VALUE", + * // Tags: [ // TagSet + * // { + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // }, + * // }, + * // Status: "Enabled" || "Disabled", // required + * // Tierings: [ // TieringList // required + * // { // Tiering + * // Days: Number("int"), // required + * // AccessTier: "ARCHIVE_ACCESS" || "DEEP_ARCHIVE_ACCESS", // required + * // }, + * // ], + * // }, + * // }; + * + * ``` + * + * @param GetBucketIntelligentTieringConfigurationCommandInput - {@link GetBucketIntelligentTieringConfigurationCommandInput} + * @returns {@link GetBucketIntelligentTieringConfigurationCommandOutput} + * @see {@link GetBucketIntelligentTieringConfigurationCommandInput} for command's `input` shape. + * @see {@link GetBucketIntelligentTieringConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketIntelligentTieringConfigurationCommand extends GetBucketIntelligentTieringConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketIntelligentTieringConfigurationRequest; + output: GetBucketIntelligentTieringConfigurationOutput; + }; + sdk: { + input: GetBucketIntelligentTieringConfigurationCommandInput; + output: GetBucketIntelligentTieringConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketInventoryConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketInventoryConfigurationCommand.d.ts new file mode 100644 index 0000000..be0007d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketInventoryConfigurationCommand.d.ts @@ -0,0 +1,133 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketInventoryConfigurationOutput, GetBucketInventoryConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketInventoryConfigurationCommand}. + */ +export interface GetBucketInventoryConfigurationCommandInput extends GetBucketInventoryConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetBucketInventoryConfigurationCommand}. + */ +export interface GetBucketInventoryConfigurationCommandOutput extends GetBucketInventoryConfigurationOutput, __MetadataBearer { +} +declare const GetBucketInventoryConfigurationCommand_base: { + new (input: GetBucketInventoryConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketInventoryConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns an S3 Inventory configuration (identified by the inventory configuration ID) from the + * bucket.

+ *

To use this operation, you must have permissions to perform the + * s3:GetInventoryConfiguration action. The bucket owner has this permission by default and + * can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *

For information about the Amazon S3 inventory feature, see Amazon S3 Inventory.

+ *

The following operations are related to GetBucketInventoryConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketInventoryConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketInventoryConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketInventoryConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketInventoryConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetBucketInventoryConfigurationOutput + * // InventoryConfiguration: { // InventoryConfiguration + * // Destination: { // InventoryDestination + * // S3BucketDestination: { // InventoryS3BucketDestination + * // AccountId: "STRING_VALUE", + * // Bucket: "STRING_VALUE", // required + * // Format: "CSV" || "ORC" || "Parquet", // required + * // Prefix: "STRING_VALUE", + * // Encryption: { // InventoryEncryption + * // SSES3: {}, + * // SSEKMS: { // SSEKMS + * // KeyId: "STRING_VALUE", // required + * // }, + * // }, + * // }, + * // }, + * // IsEnabled: true || false, // required + * // Filter: { // InventoryFilter + * // Prefix: "STRING_VALUE", // required + * // }, + * // Id: "STRING_VALUE", // required + * // IncludedObjectVersions: "All" || "Current", // required + * // OptionalFields: [ // InventoryOptionalFields + * // "Size" || "LastModifiedDate" || "StorageClass" || "ETag" || "IsMultipartUploaded" || "ReplicationStatus" || "EncryptionStatus" || "ObjectLockRetainUntilDate" || "ObjectLockMode" || "ObjectLockLegalHoldStatus" || "IntelligentTieringAccessTier" || "BucketKeyStatus" || "ChecksumAlgorithm" || "ObjectAccessControlList" || "ObjectOwner" || "LifecycleExpirationDate", + * // ], + * // Schedule: { // InventorySchedule + * // Frequency: "Daily" || "Weekly", // required + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetBucketInventoryConfigurationCommandInput - {@link GetBucketInventoryConfigurationCommandInput} + * @returns {@link GetBucketInventoryConfigurationCommandOutput} + * @see {@link GetBucketInventoryConfigurationCommandInput} for command's `input` shape. + * @see {@link GetBucketInventoryConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketInventoryConfigurationCommand extends GetBucketInventoryConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketInventoryConfigurationRequest; + output: GetBucketInventoryConfigurationOutput; + }; + sdk: { + input: GetBucketInventoryConfigurationCommandInput; + output: GetBucketInventoryConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLifecycleConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLifecycleConfigurationCommand.d.ts new file mode 100644 index 0000000..1a518d8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLifecycleConfigurationCommand.d.ts @@ -0,0 +1,250 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketLifecycleConfigurationOutput, GetBucketLifecycleConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketLifecycleConfigurationCommand}. + */ +export interface GetBucketLifecycleConfigurationCommandInput extends GetBucketLifecycleConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetBucketLifecycleConfigurationCommand}. + */ +export interface GetBucketLifecycleConfigurationCommandOutput extends GetBucketLifecycleConfigurationOutput, __MetadataBearer { +} +declare const GetBucketLifecycleConfigurationCommand_base: { + new (input: GetBucketLifecycleConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketLifecycleConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns the lifecycle configuration information set on the bucket. For information about lifecycle + * configuration, see Object Lifecycle Management.

+ *

Bucket lifecycle configuration now supports specifying a lifecycle rule using an object key name + * prefix, one or more object tags, object size, or any combination of these. Accordingly, this section + * describes the latest API, which is compatible with the new functionality. The previous version of the + * API supported filtering based only on an object key name prefix, which is supported for general purpose + * buckets for backward compatibility. For the related API description, see GetBucketLifecycle.

+ * + *

Lifecyle configurations for directory buckets only support expiring objects and cancelling + * multipart uploads. Expiring of versioned objects, transitions and tag filters are not + * supported.

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - By default, all Amazon S3 + * resources are private, including buckets, objects, and related subresources (for example, + * lifecycle configuration and website configuration). Only the resource owner (that is, the + * Amazon Web Services account that created it) can access the resource. The resource owner can optionally + * grant access permissions to others by writing an access policy. For this operation, a user + * must have the s3:GetLifecycleConfiguration permission.

    + *

    For more information about permissions, see Managing Access Permissions to Your + * Amazon S3 Resources.

    + *
  • + *
+ *
    + *
  • + *

    + * Directory bucket permissions - You must have the + * s3express:GetLifecycleConfiguration permission in an IAM identity-based policy + * to use this operation. Cross-account access to this API operation isn't supported. The + * resource owner can optionally grant access permissions to others by creating a role or user + * for them as long as they are within the same account as the owner and resource.

    + *

    For more information about directory bucket policies and permissions, see Authorizing Regional endpoint APIs with IAM in the Amazon S3 User + * Guide.

    + * + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * s3express-control.region.amazonaws.com.

+ *
+ *
+ *

+ * GetBucketLifecycleConfiguration has the following special error:

+ *
    + *
  • + *

    Error code: NoSuchLifecycleConfiguration + *

    + *
      + *
    • + *

      Description: The lifecycle configuration does not exist.

      + *
    • + *
    • + *

      HTTP Status Code: 404 Not Found

      + *
    • + *
    • + *

      SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
+ *

The following operations are related to GetBucketLifecycleConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketLifecycleConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketLifecycleConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketLifecycleConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketLifecycleConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetBucketLifecycleConfigurationOutput + * // Rules: [ // LifecycleRules + * // { // LifecycleRule + * // Expiration: { // LifecycleExpiration + * // Date: new Date("TIMESTAMP"), + * // Days: Number("int"), + * // ExpiredObjectDeleteMarker: true || false, + * // }, + * // ID: "STRING_VALUE", + * // Prefix: "STRING_VALUE", + * // Filter: { // LifecycleRuleFilter + * // Prefix: "STRING_VALUE", + * // Tag: { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ObjectSizeGreaterThan: Number("long"), + * // ObjectSizeLessThan: Number("long"), + * // And: { // LifecycleRuleAndOperator + * // Prefix: "STRING_VALUE", + * // Tags: [ // TagSet + * // { + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // ObjectSizeGreaterThan: Number("long"), + * // ObjectSizeLessThan: Number("long"), + * // }, + * // }, + * // Status: "Enabled" || "Disabled", // required + * // Transitions: [ // TransitionList + * // { // Transition + * // Date: new Date("TIMESTAMP"), + * // Days: Number("int"), + * // StorageClass: "GLACIER" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "DEEP_ARCHIVE" || "GLACIER_IR", + * // }, + * // ], + * // NoncurrentVersionTransitions: [ // NoncurrentVersionTransitionList + * // { // NoncurrentVersionTransition + * // NoncurrentDays: Number("int"), + * // StorageClass: "GLACIER" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "DEEP_ARCHIVE" || "GLACIER_IR", + * // NewerNoncurrentVersions: Number("int"), + * // }, + * // ], + * // NoncurrentVersionExpiration: { // NoncurrentVersionExpiration + * // NoncurrentDays: Number("int"), + * // NewerNoncurrentVersions: Number("int"), + * // }, + * // AbortIncompleteMultipartUpload: { // AbortIncompleteMultipartUpload + * // DaysAfterInitiation: Number("int"), + * // }, + * // }, + * // ], + * // TransitionDefaultMinimumObjectSize: "varies_by_storage_class" || "all_storage_classes_128K", + * // }; + * + * ``` + * + * @param GetBucketLifecycleConfigurationCommandInput - {@link GetBucketLifecycleConfigurationCommandInput} + * @returns {@link GetBucketLifecycleConfigurationCommandOutput} + * @see {@link GetBucketLifecycleConfigurationCommandInput} for command's `input` shape. + * @see {@link GetBucketLifecycleConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get lifecycle configuration on a bucket + * ```javascript + * // The following example retrieves lifecycle configuration on set on a bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new GetBucketLifecycleConfigurationCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Rules: [ + * { + * ID: "Rule for TaxDocs/", + * Prefix: "TaxDocs", + * Status: "Enabled", + * Transitions: [ + * { + * Days: 365, + * StorageClass: "STANDARD_IA" + * } + * ] + * } + * ] + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetBucketLifecycleConfigurationCommand extends GetBucketLifecycleConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketLifecycleConfigurationRequest; + output: GetBucketLifecycleConfigurationOutput; + }; + sdk: { + input: GetBucketLifecycleConfigurationCommandInput; + output: GetBucketLifecycleConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLocationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLocationCommand.d.ts new file mode 100644 index 0000000..ca79786 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLocationCommand.d.ts @@ -0,0 +1,131 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketLocationOutput, GetBucketLocationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketLocationCommand}. + */ +export interface GetBucketLocationCommandInput extends GetBucketLocationRequest { +} +/** + * @public + * + * The output of {@link GetBucketLocationCommand}. + */ +export interface GetBucketLocationCommandOutput extends GetBucketLocationOutput, __MetadataBearer { +} +declare const GetBucketLocationCommand_base: { + new (input: GetBucketLocationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketLocationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

Using the GetBucketLocation operation is no longer a best practice. To return the + * Region that a bucket resides in, we recommend that you use the + * HeadBucket + * operation instead. For backward compatibility, Amazon S3 continues to support the + * GetBucketLocation operation.

+ *
+ *

Returns the Region the bucket resides in. You set the bucket's Region using the + * LocationConstraint request parameter in a CreateBucket request. For more + * information, see CreateBucket.

+ * + *

In a bucket's home Region, calls to the GetBucketLocation operation are governed + * by the bucket's policy. In other Regions, the bucket policy doesn't apply, which means that + * cross-account access won't be authorized. However, calls to the HeadBucket operation + * always return the bucket’s location through an HTTP response header, whether access to the bucket + * is authorized or not. Therefore, we recommend using the HeadBucket operation for + * bucket Region discovery and to avoid using the GetBucketLocation operation.

+ *
+ *

When you use this API operation with an access point, provide the alias of the access point in place of the bucket name.

+ *

When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ * + *

This operation is not supported for directory buckets.

+ *
+ *

The following operations are related to GetBucketLocation:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketLocationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketLocationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketLocationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketLocationCommand(input); + * const response = await client.send(command); + * // { // GetBucketLocationOutput + * // LocationConstraint: "af-south-1" || "ap-east-1" || "ap-northeast-1" || "ap-northeast-2" || "ap-northeast-3" || "ap-south-1" || "ap-south-2" || "ap-southeast-1" || "ap-southeast-2" || "ap-southeast-3" || "ap-southeast-4" || "ap-southeast-5" || "ca-central-1" || "cn-north-1" || "cn-northwest-1" || "EU" || "eu-central-1" || "eu-central-2" || "eu-north-1" || "eu-south-1" || "eu-south-2" || "eu-west-1" || "eu-west-2" || "eu-west-3" || "il-central-1" || "me-central-1" || "me-south-1" || "sa-east-1" || "us-east-2" || "us-gov-east-1" || "us-gov-west-1" || "us-west-1" || "us-west-2", + * // }; + * + * ``` + * + * @param GetBucketLocationCommandInput - {@link GetBucketLocationCommandInput} + * @returns {@link GetBucketLocationCommandOutput} + * @see {@link GetBucketLocationCommandInput} for command's `input` shape. + * @see {@link GetBucketLocationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get bucket location + * ```javascript + * // The following example returns bucket location. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new GetBucketLocationCommand(input); + * const response = await client.send(command); + * /* response is + * { + * LocationConstraint: "us-west-2" + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetBucketLocationCommand extends GetBucketLocationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketLocationRequest; + output: GetBucketLocationOutput; + }; + sdk: { + input: GetBucketLocationCommandInput; + output: GetBucketLocationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLoggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLoggingCommand.d.ts new file mode 100644 index 0000000..26972fa --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLoggingCommand.d.ts @@ -0,0 +1,116 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketLoggingOutput, GetBucketLoggingRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketLoggingCommand}. + */ +export interface GetBucketLoggingCommandInput extends GetBucketLoggingRequest { +} +/** + * @public + * + * The output of {@link GetBucketLoggingCommand}. + */ +export interface GetBucketLoggingCommandOutput extends GetBucketLoggingOutput, __MetadataBearer { +} +declare const GetBucketLoggingCommand_base: { + new (input: GetBucketLoggingCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketLoggingCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the logging status of a bucket and the permissions users have to view and modify that + * status.

+ *

The following operations are related to GetBucketLogging:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketLoggingCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketLoggingCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketLoggingRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketLoggingCommand(input); + * const response = await client.send(command); + * // { // GetBucketLoggingOutput + * // LoggingEnabled: { // LoggingEnabled + * // TargetBucket: "STRING_VALUE", // required + * // TargetGrants: [ // TargetGrants + * // { // TargetGrant + * // Grantee: { // Grantee + * // DisplayName: "STRING_VALUE", + * // EmailAddress: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // URI: "STRING_VALUE", + * // Type: "CanonicalUser" || "AmazonCustomerByEmail" || "Group", // required + * // }, + * // Permission: "FULL_CONTROL" || "READ" || "WRITE", + * // }, + * // ], + * // TargetPrefix: "STRING_VALUE", // required + * // TargetObjectKeyFormat: { // TargetObjectKeyFormat + * // SimplePrefix: {}, + * // PartitionedPrefix: { // PartitionedPrefix + * // PartitionDateSource: "EventTime" || "DeliveryTime", + * // }, + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetBucketLoggingCommandInput - {@link GetBucketLoggingCommandInput} + * @returns {@link GetBucketLoggingCommandOutput} + * @see {@link GetBucketLoggingCommandInput} for command's `input` shape. + * @see {@link GetBucketLoggingCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketLoggingCommand extends GetBucketLoggingCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketLoggingRequest; + output: GetBucketLoggingOutput; + }; + sdk: { + input: GetBucketLoggingCommandInput; + output: GetBucketLoggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetadataConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetadataConfigurationCommand.d.ts new file mode 100644 index 0000000..121bcef --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetadataConfigurationCommand.d.ts @@ -0,0 +1,151 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketMetadataConfigurationOutput, GetBucketMetadataConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketMetadataConfigurationCommand}. + */ +export interface GetBucketMetadataConfigurationCommandInput extends GetBucketMetadataConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetBucketMetadataConfigurationCommand}. + */ +export interface GetBucketMetadataConfigurationCommandOutput extends GetBucketMetadataConfigurationOutput, __MetadataBearer { +} +declare const GetBucketMetadataConfigurationCommand_base: { + new (input: GetBucketMetadataConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketMetadataConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Retrieves the S3 Metadata configuration for a general purpose bucket. For more information, see + * Accelerating + * data discovery with S3 Metadata in the Amazon S3 User Guide.

+ * + *

You can use the V2 GetBucketMetadataConfiguration API operation with V1 or V2 + * metadata configurations. However, if you try to use the V1 + * GetBucketMetadataTableConfiguration API operation with V2 configurations, you + * will receive an HTTP 405 Method Not Allowed error.

+ *
+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have the s3:GetBucketMetadataTableConfiguration + * permission. For more information, see Setting up permissions for + * configuring metadata tables in the Amazon S3 User Guide.

+ * + *

The IAM policy action name is the same for the V1 and V2 API operations.

+ *
+ *
+ *
+ *

The following operations are related to GetBucketMetadataConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketMetadataConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketMetadataConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketMetadataConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketMetadataConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetBucketMetadataConfigurationOutput + * // GetBucketMetadataConfigurationResult: { // GetBucketMetadataConfigurationResult + * // MetadataConfigurationResult: { // MetadataConfigurationResult + * // DestinationResult: { // DestinationResult + * // TableBucketType: "aws" || "customer", + * // TableBucketArn: "STRING_VALUE", + * // TableNamespace: "STRING_VALUE", + * // }, + * // JournalTableConfigurationResult: { // JournalTableConfigurationResult + * // TableStatus: "STRING_VALUE", // required + * // Error: { // ErrorDetails + * // ErrorCode: "STRING_VALUE", + * // ErrorMessage: "STRING_VALUE", + * // }, + * // TableName: "STRING_VALUE", // required + * // TableArn: "STRING_VALUE", + * // RecordExpiration: { // RecordExpiration + * // Expiration: "ENABLED" || "DISABLED", // required + * // Days: Number("int"), + * // }, + * // }, + * // InventoryTableConfigurationResult: { // InventoryTableConfigurationResult + * // ConfigurationState: "ENABLED" || "DISABLED", // required + * // TableStatus: "STRING_VALUE", + * // Error: { + * // ErrorCode: "STRING_VALUE", + * // ErrorMessage: "STRING_VALUE", + * // }, + * // TableName: "STRING_VALUE", + * // TableArn: "STRING_VALUE", + * // }, + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetBucketMetadataConfigurationCommandInput - {@link GetBucketMetadataConfigurationCommandInput} + * @returns {@link GetBucketMetadataConfigurationCommandOutput} + * @see {@link GetBucketMetadataConfigurationCommandInput} for command's `input` shape. + * @see {@link GetBucketMetadataConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketMetadataConfigurationCommand extends GetBucketMetadataConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketMetadataConfigurationRequest; + output: GetBucketMetadataConfigurationOutput; + }; + sdk: { + input: GetBucketMetadataConfigurationCommandInput; + output: GetBucketMetadataConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetadataTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetadataTableConfigurationCommand.d.ts new file mode 100644 index 0000000..a330858 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetadataTableConfigurationCommand.d.ts @@ -0,0 +1,134 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketMetadataTableConfigurationOutput, GetBucketMetadataTableConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketMetadataTableConfigurationCommand}. + */ +export interface GetBucketMetadataTableConfigurationCommandInput extends GetBucketMetadataTableConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetBucketMetadataTableConfigurationCommand}. + */ +export interface GetBucketMetadataTableConfigurationCommandOutput extends GetBucketMetadataTableConfigurationOutput, __MetadataBearer { +} +declare const GetBucketMetadataTableConfigurationCommand_base: { + new (input: GetBucketMetadataTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketMetadataTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

+ * We recommend that you retrieve your S3 Metadata configurations by using the V2 + * GetBucketMetadataTableConfiguration API operation. We no longer recommend using the V1 + * GetBucketMetadataTableConfiguration API operation. + *

+ *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ *

Retrieves the V1 S3 Metadata configuration for a general purpose bucket. For more information, see + * Accelerating + * data discovery with S3 Metadata in the Amazon S3 User Guide.

+ * + *

You can use the V2 GetBucketMetadataConfiguration API operation with V1 or V2 + * metadata table configurations. However, if you try to use the V1 + * GetBucketMetadataTableConfiguration API operation with V2 configurations, you + * will receive an HTTP 405 Method Not Allowed error.

+ *

Make sure that you update your processes to use the new V2 API operations + * (CreateBucketMetadataConfiguration, GetBucketMetadataConfiguration, and + * DeleteBucketMetadataConfiguration) instead of the V1 API operations.

+ *
+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have the s3:GetBucketMetadataTableConfiguration + * permission. For more information, see Setting up permissions for + * configuring metadata tables in the Amazon S3 User Guide.

+ *
+ *
+ *

The following operations are related to GetBucketMetadataTableConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketMetadataTableConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketMetadataTableConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketMetadataTableConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketMetadataTableConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetBucketMetadataTableConfigurationOutput + * // GetBucketMetadataTableConfigurationResult: { // GetBucketMetadataTableConfigurationResult + * // MetadataTableConfigurationResult: { // MetadataTableConfigurationResult + * // S3TablesDestinationResult: { // S3TablesDestinationResult + * // TableBucketArn: "STRING_VALUE", // required + * // TableName: "STRING_VALUE", // required + * // TableArn: "STRING_VALUE", // required + * // TableNamespace: "STRING_VALUE", // required + * // }, + * // }, + * // Status: "STRING_VALUE", // required + * // Error: { // ErrorDetails + * // ErrorCode: "STRING_VALUE", + * // ErrorMessage: "STRING_VALUE", + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetBucketMetadataTableConfigurationCommandInput - {@link GetBucketMetadataTableConfigurationCommandInput} + * @returns {@link GetBucketMetadataTableConfigurationCommandOutput} + * @see {@link GetBucketMetadataTableConfigurationCommandInput} for command's `input` shape. + * @see {@link GetBucketMetadataTableConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketMetadataTableConfigurationCommand extends GetBucketMetadataTableConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketMetadataTableConfigurationRequest; + output: GetBucketMetadataTableConfigurationOutput; + }; + sdk: { + input: GetBucketMetadataTableConfigurationCommandInput; + output: GetBucketMetadataTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetricsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetricsConfigurationCommand.d.ts new file mode 100644 index 0000000..4b6d41c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetricsConfigurationCommand.d.ts @@ -0,0 +1,164 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketMetricsConfigurationOutput, GetBucketMetricsConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketMetricsConfigurationCommand}. + */ +export interface GetBucketMetricsConfigurationCommandInput extends GetBucketMetricsConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetBucketMetricsConfigurationCommand}. + */ +export interface GetBucketMetricsConfigurationCommandOutput extends GetBucketMetricsConfigurationOutput, __MetadataBearer { +} +declare const GetBucketMetricsConfigurationCommand_base: { + new (input: GetBucketMetricsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketMetricsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Gets a metrics configuration (specified by the metrics configuration ID) from the bucket. Note that + * this doesn't include the daily storage metrics.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have permissions to perform the + * s3:GetMetricsConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:GetMetricsConfiguration permission is required in a policy. For more information + * about general purpose buckets permissions, see Using Bucket Policies and User + * Policies in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:GetMetricsConfiguration permission in + * an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

For information about CloudWatch request metrics for Amazon S3, see Monitoring Metrics with Amazon + * CloudWatch.

+ *

The following operations are related to GetBucketMetricsConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketMetricsConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketMetricsConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketMetricsConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketMetricsConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetBucketMetricsConfigurationOutput + * // MetricsConfiguration: { // MetricsConfiguration + * // Id: "STRING_VALUE", // required + * // Filter: { // MetricsFilter Union: only one key present + * // Prefix: "STRING_VALUE", + * // Tag: { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // AccessPointArn: "STRING_VALUE", + * // And: { // MetricsAndOperator + * // Prefix: "STRING_VALUE", + * // Tags: [ // TagSet + * // { + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // AccessPointArn: "STRING_VALUE", + * // }, + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetBucketMetricsConfigurationCommandInput - {@link GetBucketMetricsConfigurationCommandInput} + * @returns {@link GetBucketMetricsConfigurationCommandOutput} + * @see {@link GetBucketMetricsConfigurationCommandInput} for command's `input` shape. + * @see {@link GetBucketMetricsConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketMetricsConfigurationCommand extends GetBucketMetricsConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketMetricsConfigurationRequest; + output: GetBucketMetricsConfigurationOutput; + }; + sdk: { + input: GetBucketMetricsConfigurationCommandInput; + output: GetBucketMetricsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketNotificationConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketNotificationConfigurationCommand.d.ts new file mode 100644 index 0000000..ea2603f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketNotificationConfigurationCommand.d.ts @@ -0,0 +1,159 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketNotificationConfigurationRequest, NotificationConfiguration } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketNotificationConfigurationCommand}. + */ +export interface GetBucketNotificationConfigurationCommandInput extends GetBucketNotificationConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetBucketNotificationConfigurationCommand}. + */ +export interface GetBucketNotificationConfigurationCommandOutput extends NotificationConfiguration, __MetadataBearer { +} +declare const GetBucketNotificationConfigurationCommand_base: { + new (input: GetBucketNotificationConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketNotificationConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the notification configuration of a bucket.

+ *

If notifications are not enabled on the bucket, the action returns an empty + * NotificationConfiguration element.

+ *

By default, you must be the bucket owner to read the notification configuration of a bucket. + * However, the bucket owner can use a bucket policy to grant permission to other users to read this + * configuration with the s3:GetBucketNotification permission.

+ *

When you use this API operation with an access point, provide the alias of the access point in place of the bucket name.

+ *

When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ *

For more information about setting and reading the notification configuration on a bucket, see + * Setting Up Notification + * of Bucket Events. For more information about bucket policies, see Using Bucket Policies.

+ *

The following action is related to GetBucketNotification:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketNotificationConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketNotificationConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketNotificationConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketNotificationConfigurationCommand(input); + * const response = await client.send(command); + * // { // NotificationConfiguration + * // TopicConfigurations: [ // TopicConfigurationList + * // { // TopicConfiguration + * // Id: "STRING_VALUE", + * // TopicArn: "STRING_VALUE", // required + * // Events: [ // EventList // required + * // "s3:ReducedRedundancyLostObject" || "s3:ObjectCreated:*" || "s3:ObjectCreated:Put" || "s3:ObjectCreated:Post" || "s3:ObjectCreated:Copy" || "s3:ObjectCreated:CompleteMultipartUpload" || "s3:ObjectRemoved:*" || "s3:ObjectRemoved:Delete" || "s3:ObjectRemoved:DeleteMarkerCreated" || "s3:ObjectRestore:*" || "s3:ObjectRestore:Post" || "s3:ObjectRestore:Completed" || "s3:Replication:*" || "s3:Replication:OperationFailedReplication" || "s3:Replication:OperationNotTracked" || "s3:Replication:OperationMissedThreshold" || "s3:Replication:OperationReplicatedAfterThreshold" || "s3:ObjectRestore:Delete" || "s3:LifecycleTransition" || "s3:IntelligentTiering" || "s3:ObjectAcl:Put" || "s3:LifecycleExpiration:*" || "s3:LifecycleExpiration:Delete" || "s3:LifecycleExpiration:DeleteMarkerCreated" || "s3:ObjectTagging:*" || "s3:ObjectTagging:Put" || "s3:ObjectTagging:Delete", + * // ], + * // Filter: { // NotificationConfigurationFilter + * // Key: { // S3KeyFilter + * // FilterRules: [ // FilterRuleList + * // { // FilterRule + * // Name: "prefix" || "suffix", + * // Value: "STRING_VALUE", + * // }, + * // ], + * // }, + * // }, + * // }, + * // ], + * // QueueConfigurations: [ // QueueConfigurationList + * // { // QueueConfiguration + * // Id: "STRING_VALUE", + * // QueueArn: "STRING_VALUE", // required + * // Events: [ // required + * // "s3:ReducedRedundancyLostObject" || "s3:ObjectCreated:*" || "s3:ObjectCreated:Put" || "s3:ObjectCreated:Post" || "s3:ObjectCreated:Copy" || "s3:ObjectCreated:CompleteMultipartUpload" || "s3:ObjectRemoved:*" || "s3:ObjectRemoved:Delete" || "s3:ObjectRemoved:DeleteMarkerCreated" || "s3:ObjectRestore:*" || "s3:ObjectRestore:Post" || "s3:ObjectRestore:Completed" || "s3:Replication:*" || "s3:Replication:OperationFailedReplication" || "s3:Replication:OperationNotTracked" || "s3:Replication:OperationMissedThreshold" || "s3:Replication:OperationReplicatedAfterThreshold" || "s3:ObjectRestore:Delete" || "s3:LifecycleTransition" || "s3:IntelligentTiering" || "s3:ObjectAcl:Put" || "s3:LifecycleExpiration:*" || "s3:LifecycleExpiration:Delete" || "s3:LifecycleExpiration:DeleteMarkerCreated" || "s3:ObjectTagging:*" || "s3:ObjectTagging:Put" || "s3:ObjectTagging:Delete", + * // ], + * // Filter: { + * // Key: { + * // FilterRules: [ + * // { + * // Name: "prefix" || "suffix", + * // Value: "STRING_VALUE", + * // }, + * // ], + * // }, + * // }, + * // }, + * // ], + * // LambdaFunctionConfigurations: [ // LambdaFunctionConfigurationList + * // { // LambdaFunctionConfiguration + * // Id: "STRING_VALUE", + * // LambdaFunctionArn: "STRING_VALUE", // required + * // Events: [ // required + * // "s3:ReducedRedundancyLostObject" || "s3:ObjectCreated:*" || "s3:ObjectCreated:Put" || "s3:ObjectCreated:Post" || "s3:ObjectCreated:Copy" || "s3:ObjectCreated:CompleteMultipartUpload" || "s3:ObjectRemoved:*" || "s3:ObjectRemoved:Delete" || "s3:ObjectRemoved:DeleteMarkerCreated" || "s3:ObjectRestore:*" || "s3:ObjectRestore:Post" || "s3:ObjectRestore:Completed" || "s3:Replication:*" || "s3:Replication:OperationFailedReplication" || "s3:Replication:OperationNotTracked" || "s3:Replication:OperationMissedThreshold" || "s3:Replication:OperationReplicatedAfterThreshold" || "s3:ObjectRestore:Delete" || "s3:LifecycleTransition" || "s3:IntelligentTiering" || "s3:ObjectAcl:Put" || "s3:LifecycleExpiration:*" || "s3:LifecycleExpiration:Delete" || "s3:LifecycleExpiration:DeleteMarkerCreated" || "s3:ObjectTagging:*" || "s3:ObjectTagging:Put" || "s3:ObjectTagging:Delete", + * // ], + * // Filter: { + * // Key: { + * // FilterRules: [ + * // { + * // Name: "prefix" || "suffix", + * // Value: "STRING_VALUE", + * // }, + * // ], + * // }, + * // }, + * // }, + * // ], + * // EventBridgeConfiguration: {}, + * // }; + * + * ``` + * + * @param GetBucketNotificationConfigurationCommandInput - {@link GetBucketNotificationConfigurationCommandInput} + * @returns {@link GetBucketNotificationConfigurationCommandOutput} + * @see {@link GetBucketNotificationConfigurationCommandInput} for command's `input` shape. + * @see {@link GetBucketNotificationConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketNotificationConfigurationCommand extends GetBucketNotificationConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketNotificationConfigurationRequest; + output: NotificationConfiguration; + }; + sdk: { + input: GetBucketNotificationConfigurationCommandInput; + output: GetBucketNotificationConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketOwnershipControlsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketOwnershipControlsCommand.d.ts new file mode 100644 index 0000000..6d26920 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketOwnershipControlsCommand.d.ts @@ -0,0 +1,118 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketOwnershipControlsOutput, GetBucketOwnershipControlsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketOwnershipControlsCommand}. + */ +export interface GetBucketOwnershipControlsCommandInput extends GetBucketOwnershipControlsRequest { +} +/** + * @public + * + * The output of {@link GetBucketOwnershipControlsCommand}. + */ +export interface GetBucketOwnershipControlsCommandOutput extends GetBucketOwnershipControlsOutput, __MetadataBearer { +} +declare const GetBucketOwnershipControlsCommand_base: { + new (input: GetBucketOwnershipControlsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketOwnershipControlsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Retrieves OwnershipControls for an Amazon S3 bucket. To use this operation, you must have + * the s3:GetBucketOwnershipControls permission. For more information about Amazon S3 permissions, + * see Specifying + * permissions in a policy.

+ * + *

A bucket doesn't have OwnershipControls settings in the following cases:

+ *
    + *
  • + *

    The bucket was created before the BucketOwnerEnforced ownership setting was + * introduced and you've never explicitly applied this value

    + *
  • + *
  • + *

    You've manually deleted the bucket ownership control value using the + * DeleteBucketOwnershipControls API operation.

    + *
  • + *
+ *

By default, Amazon S3 sets OwnershipControls for all newly created buckets.

+ *
+ *

For information about Amazon S3 Object Ownership, see Using Object Ownership.

+ *

The following operations are related to GetBucketOwnershipControls:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketOwnershipControlsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketOwnershipControlsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketOwnershipControlsRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketOwnershipControlsCommand(input); + * const response = await client.send(command); + * // { // GetBucketOwnershipControlsOutput + * // OwnershipControls: { // OwnershipControls + * // Rules: [ // OwnershipControlsRules // required + * // { // OwnershipControlsRule + * // ObjectOwnership: "BucketOwnerPreferred" || "ObjectWriter" || "BucketOwnerEnforced", // required + * // }, + * // ], + * // }, + * // }; + * + * ``` + * + * @param GetBucketOwnershipControlsCommandInput - {@link GetBucketOwnershipControlsCommandInput} + * @returns {@link GetBucketOwnershipControlsCommandOutput} + * @see {@link GetBucketOwnershipControlsCommandInput} for command's `input` shape. + * @see {@link GetBucketOwnershipControlsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketOwnershipControlsCommand extends GetBucketOwnershipControlsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketOwnershipControlsRequest; + output: GetBucketOwnershipControlsOutput; + }; + sdk: { + input: GetBucketOwnershipControlsCommandInput; + output: GetBucketOwnershipControlsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyCommand.d.ts new file mode 100644 index 0000000..8f9f65b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyCommand.d.ts @@ -0,0 +1,159 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketPolicyOutput, GetBucketPolicyRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketPolicyCommand}. + */ +export interface GetBucketPolicyCommandInput extends GetBucketPolicyRequest { +} +/** + * @public + * + * The output of {@link GetBucketPolicyCommand}. + */ +export interface GetBucketPolicyCommandOutput extends GetBucketPolicyOutput, __MetadataBearer { +} +declare const GetBucketPolicyCommand_base: { + new (input: GetBucketPolicyCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketPolicyCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns the policy of a specified bucket.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *

If you are using an identity other than the root user of the Amazon Web Services account that owns the + * bucket, the calling identity must both have the GetBucketPolicy permissions on the + * specified bucket and belong to the bucket owner's account in order to use this operation.

+ *

If you don't have GetBucketPolicy permissions, Amazon S3 returns a 403 Access + * Denied error. If you have the correct permissions, but you're not using an identity that + * belongs to the bucket owner's account, Amazon S3 returns a 405 Method Not Allowed + * error.

+ * + *

To ensure that bucket owners don't inadvertently lock themselves out of their own buckets, + * the root principal in a bucket owner's Amazon Web Services account can perform the + * GetBucketPolicy, PutBucketPolicy, and + * DeleteBucketPolicy API actions, even if their bucket policy explicitly denies the + * root principal's access. Bucket owner root principals can only be blocked from performing these + * API actions by VPC endpoint policies and Amazon Web Services Organizations policies.

+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:GetBucketPolicy permission is required in a policy. For more information + * about general purpose buckets bucket policies, see Using Bucket Policies and User + * Policies in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:GetBucketPolicy permission in + * an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
Example bucket policies
+ *
+ *

+ * General purpose buckets example bucket policies - See Bucket policy + * examples in the Amazon S3 User Guide.

+ *

+ * Directory bucket example bucket policies - See Example + * bucket policies for S3 Express One Zone in the Amazon S3 User Guide.

+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

The following action is related to GetBucketPolicy:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketPolicyCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketPolicyCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketPolicyRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketPolicyCommand(input); + * const response = await client.send(command); + * // { // GetBucketPolicyOutput + * // Policy: "STRING_VALUE", + * // }; + * + * ``` + * + * @param GetBucketPolicyCommandInput - {@link GetBucketPolicyCommandInput} + * @returns {@link GetBucketPolicyCommandOutput} + * @see {@link GetBucketPolicyCommandInput} for command's `input` shape. + * @see {@link GetBucketPolicyCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get bucket policy + * ```javascript + * // The following example returns bucket policy associated with a bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new GetBucketPolicyCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Policy: `{"Version":"2008-10-17",&TCX5-2025-waiver;"Id":"LogPolicy","Statement":[{"Sid":"Enables the log delivery group to publish logs to your bucket ","Effect":"Allow","Principal":{"AWS":"111122223333"},"Action":["s3:GetBucketAcl","s3:GetObjectAcl","s3:PutObject"],"Resource":["arn:aws:s3:::policytest1/*","arn:aws:s3:::policytest1"]}]}` + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetBucketPolicyCommand extends GetBucketPolicyCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketPolicyRequest; + output: GetBucketPolicyOutput; + }; + sdk: { + input: GetBucketPolicyCommandInput; + output: GetBucketPolicyCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyStatusCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyStatusCommand.d.ts new file mode 100644 index 0000000..00a8f2b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyStatusCommand.d.ts @@ -0,0 +1,110 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketPolicyStatusOutput, GetBucketPolicyStatusRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketPolicyStatusCommand}. + */ +export interface GetBucketPolicyStatusCommandInput extends GetBucketPolicyStatusRequest { +} +/** + * @public + * + * The output of {@link GetBucketPolicyStatusCommand}. + */ +export interface GetBucketPolicyStatusCommandOutput extends GetBucketPolicyStatusOutput, __MetadataBearer { +} +declare const GetBucketPolicyStatusCommand_base: { + new (input: GetBucketPolicyStatusCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketPolicyStatusCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Retrieves the policy status for an Amazon S3 bucket, indicating whether the bucket is public. In order to + * use this operation, you must have the s3:GetBucketPolicyStatus permission. For more + * information about Amazon S3 permissions, see Specifying Permissions in a + * Policy.

+ *

For more information about when Amazon S3 considers a bucket public, see The Meaning of "Public".

+ *

The following operations are related to GetBucketPolicyStatus:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketPolicyStatusCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketPolicyStatusCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketPolicyStatusRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketPolicyStatusCommand(input); + * const response = await client.send(command); + * // { // GetBucketPolicyStatusOutput + * // PolicyStatus: { // PolicyStatus + * // IsPublic: true || false, + * // }, + * // }; + * + * ``` + * + * @param GetBucketPolicyStatusCommandInput - {@link GetBucketPolicyStatusCommandInput} + * @returns {@link GetBucketPolicyStatusCommandOutput} + * @see {@link GetBucketPolicyStatusCommandInput} for command's `input` shape. + * @see {@link GetBucketPolicyStatusCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetBucketPolicyStatusCommand extends GetBucketPolicyStatusCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketPolicyStatusRequest; + output: GetBucketPolicyStatusOutput; + }; + sdk: { + input: GetBucketPolicyStatusCommandInput; + output: GetBucketPolicyStatusCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketReplicationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketReplicationCommand.d.ts new file mode 100644 index 0000000..640c9e4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketReplicationCommand.d.ts @@ -0,0 +1,199 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketReplicationOutput, GetBucketReplicationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketReplicationCommand}. + */ +export interface GetBucketReplicationCommandInput extends GetBucketReplicationRequest { +} +/** + * @public + * + * The output of {@link GetBucketReplicationCommand}. + */ +export interface GetBucketReplicationCommandOutput extends GetBucketReplicationOutput, __MetadataBearer { +} +declare const GetBucketReplicationCommand_base: { + new (input: GetBucketReplicationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketReplicationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the replication configuration of a bucket.

+ * + *

It can take a while to propagate the put or delete a replication configuration to all Amazon S3 + * systems. Therefore, a get request soon after put or delete can return a wrong result.

+ *
+ *

For information about replication configuration, see Replication in the + * Amazon S3 User Guide.

+ *

This action requires permissions for the s3:GetReplicationConfiguration action. For + * more information about permissions, see Using Bucket Policies and User + * Policies.

+ *

If you include the Filter element in a replication configuration, you must also include + * the DeleteMarkerReplication and Priority elements. The response also returns + * those elements.

+ *

For information about GetBucketReplication errors, see List of replication-related + * error codes + *

+ *

The following operations are related to GetBucketReplication:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketReplicationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketReplicationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketReplicationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketReplicationCommand(input); + * const response = await client.send(command); + * // { // GetBucketReplicationOutput + * // ReplicationConfiguration: { // ReplicationConfiguration + * // Role: "STRING_VALUE", // required + * // Rules: [ // ReplicationRules // required + * // { // ReplicationRule + * // ID: "STRING_VALUE", + * // Priority: Number("int"), + * // Prefix: "STRING_VALUE", + * // Filter: { // ReplicationRuleFilter + * // Prefix: "STRING_VALUE", + * // Tag: { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // And: { // ReplicationRuleAndOperator + * // Prefix: "STRING_VALUE", + * // Tags: [ // TagSet + * // { + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // }, + * // }, + * // Status: "Enabled" || "Disabled", // required + * // SourceSelectionCriteria: { // SourceSelectionCriteria + * // SseKmsEncryptedObjects: { // SseKmsEncryptedObjects + * // Status: "Enabled" || "Disabled", // required + * // }, + * // ReplicaModifications: { // ReplicaModifications + * // Status: "Enabled" || "Disabled", // required + * // }, + * // }, + * // ExistingObjectReplication: { // ExistingObjectReplication + * // Status: "Enabled" || "Disabled", // required + * // }, + * // Destination: { // Destination + * // Bucket: "STRING_VALUE", // required + * // Account: "STRING_VALUE", + * // StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * // AccessControlTranslation: { // AccessControlTranslation + * // Owner: "Destination", // required + * // }, + * // EncryptionConfiguration: { // EncryptionConfiguration + * // ReplicaKmsKeyID: "STRING_VALUE", + * // }, + * // ReplicationTime: { // ReplicationTime + * // Status: "Enabled" || "Disabled", // required + * // Time: { // ReplicationTimeValue + * // Minutes: Number("int"), + * // }, + * // }, + * // Metrics: { // Metrics + * // Status: "Enabled" || "Disabled", // required + * // EventThreshold: { + * // Minutes: Number("int"), + * // }, + * // }, + * // }, + * // DeleteMarkerReplication: { // DeleteMarkerReplication + * // Status: "Enabled" || "Disabled", + * // }, + * // }, + * // ], + * // }, + * // }; + * + * ``` + * + * @param GetBucketReplicationCommandInput - {@link GetBucketReplicationCommandInput} + * @returns {@link GetBucketReplicationCommandOutput} + * @see {@link GetBucketReplicationCommandInput} for command's `input` shape. + * @see {@link GetBucketReplicationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get replication configuration set on a bucket + * ```javascript + * // The following example returns replication configuration set on a bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new GetBucketReplicationCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ReplicationConfiguration: { + * Role: "arn:aws:iam::acct-id:role/example-role", + * Rules: [ + * { + * Destination: { + * Bucket: "arn:aws:s3:::destination-bucket" + * }, + * ID: "MWIwNTkwZmItMTE3MS00ZTc3LWJkZDEtNzRmODQwYzc1OTQy", + * Prefix: "Tax", + * Status: "Enabled" + * } + * ] + * } + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetBucketReplicationCommand extends GetBucketReplicationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketReplicationRequest; + output: GetBucketReplicationOutput; + }; + sdk: { + input: GetBucketReplicationCommandInput; + output: GetBucketReplicationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketRequestPaymentCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketRequestPaymentCommand.d.ts new file mode 100644 index 0000000..d0700e8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketRequestPaymentCommand.d.ts @@ -0,0 +1,105 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketRequestPaymentOutput, GetBucketRequestPaymentRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketRequestPaymentCommand}. + */ +export interface GetBucketRequestPaymentCommandInput extends GetBucketRequestPaymentRequest { +} +/** + * @public + * + * The output of {@link GetBucketRequestPaymentCommand}. + */ +export interface GetBucketRequestPaymentCommandOutput extends GetBucketRequestPaymentOutput, __MetadataBearer { +} +declare const GetBucketRequestPaymentCommand_base: { + new (input: GetBucketRequestPaymentCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketRequestPaymentCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the request payment configuration of a bucket. To use this version of the operation, you + * must be the bucket owner. For more information, see Requester Pays Buckets.

+ *

The following operations are related to GetBucketRequestPayment:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketRequestPaymentCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketRequestPaymentCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketRequestPaymentRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketRequestPaymentCommand(input); + * const response = await client.send(command); + * // { // GetBucketRequestPaymentOutput + * // Payer: "Requester" || "BucketOwner", + * // }; + * + * ``` + * + * @param GetBucketRequestPaymentCommandInput - {@link GetBucketRequestPaymentCommandInput} + * @returns {@link GetBucketRequestPaymentCommandOutput} + * @see {@link GetBucketRequestPaymentCommandInput} for command's `input` shape. + * @see {@link GetBucketRequestPaymentCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get bucket versioning configuration + * ```javascript + * // The following example retrieves bucket versioning configuration. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new GetBucketRequestPaymentCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Payer: "BucketOwner" + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetBucketRequestPaymentCommand extends GetBucketRequestPaymentCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketRequestPaymentRequest; + output: GetBucketRequestPaymentOutput; + }; + sdk: { + input: GetBucketRequestPaymentCommandInput; + output: GetBucketRequestPaymentCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketTaggingCommand.d.ts new file mode 100644 index 0000000..4525f22 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketTaggingCommand.d.ts @@ -0,0 +1,138 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketTaggingOutput, GetBucketTaggingRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketTaggingCommand}. + */ +export interface GetBucketTaggingCommandInput extends GetBucketTaggingRequest { +} +/** + * @public + * + * The output of {@link GetBucketTaggingCommand}. + */ +export interface GetBucketTaggingCommandOutput extends GetBucketTaggingOutput, __MetadataBearer { +} +declare const GetBucketTaggingCommand_base: { + new (input: GetBucketTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the tag set associated with the general purpose bucket.

+ *

To use this operation, you must have permission to perform the s3:GetBucketTagging + * action. By default, the bucket owner has this permission and can grant this permission to others.

+ *

+ * GetBucketTagging has the following special error:

+ *
    + *
  • + *

    Error code: NoSuchTagSet + *

    + *
      + *
    • + *

      Description: There is no tag set associated with the bucket.

      + *
    • + *
    + *
  • + *
+ *

The following operations are related to GetBucketTagging:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketTaggingCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketTaggingCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketTaggingRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketTaggingCommand(input); + * const response = await client.send(command); + * // { // GetBucketTaggingOutput + * // TagSet: [ // TagSet // required + * // { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // }; + * + * ``` + * + * @param GetBucketTaggingCommandInput - {@link GetBucketTaggingCommandInput} + * @returns {@link GetBucketTaggingCommandOutput} + * @see {@link GetBucketTaggingCommandInput} for command's `input` shape. + * @see {@link GetBucketTaggingCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get tag set associated with a bucket + * ```javascript + * // The following example returns tag set associated with a bucket + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new GetBucketTaggingCommand(input); + * const response = await client.send(command); + * /* response is + * { + * TagSet: [ + * { + * Key: "key1", + * Value: "value1" + * }, + * { + * Key: "key2", + * Value: "value2" + * } + * ] + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetBucketTaggingCommand extends GetBucketTaggingCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketTaggingRequest; + output: GetBucketTaggingOutput; + }; + sdk: { + input: GetBucketTaggingCommandInput; + output: GetBucketTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketVersioningCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketVersioningCommand.d.ts new file mode 100644 index 0000000..35066b5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketVersioningCommand.d.ts @@ -0,0 +1,120 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketVersioningOutput, GetBucketVersioningRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketVersioningCommand}. + */ +export interface GetBucketVersioningCommandInput extends GetBucketVersioningRequest { +} +/** + * @public + * + * The output of {@link GetBucketVersioningCommand}. + */ +export interface GetBucketVersioningCommandOutput extends GetBucketVersioningOutput, __MetadataBearer { +} +declare const GetBucketVersioningCommand_base: { + new (input: GetBucketVersioningCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketVersioningCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the versioning state of a bucket.

+ *

To retrieve the versioning state of a bucket, you must be the bucket owner.

+ *

This implementation also returns the MFA Delete status of the versioning state. If the MFA Delete + * status is enabled, the bucket owner must use an authentication device to change the + * versioning state of the bucket.

+ *

The following operations are related to GetBucketVersioning:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketVersioningCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketVersioningCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketVersioningRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketVersioningCommand(input); + * const response = await client.send(command); + * // { // GetBucketVersioningOutput + * // Status: "Enabled" || "Suspended", + * // MFADelete: "Enabled" || "Disabled", + * // }; + * + * ``` + * + * @param GetBucketVersioningCommandInput - {@link GetBucketVersioningCommandInput} + * @returns {@link GetBucketVersioningCommandOutput} + * @see {@link GetBucketVersioningCommandInput} for command's `input` shape. + * @see {@link GetBucketVersioningCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get bucket versioning configuration + * ```javascript + * // The following example retrieves bucket versioning configuration. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new GetBucketVersioningCommand(input); + * const response = await client.send(command); + * /* response is + * { + * MFADelete: "Disabled", + * Status: "Enabled" + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetBucketVersioningCommand extends GetBucketVersioningCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketVersioningRequest; + output: GetBucketVersioningOutput; + }; + sdk: { + input: GetBucketVersioningCommandInput; + output: GetBucketVersioningCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketWebsiteCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketWebsiteCommand.d.ts new file mode 100644 index 0000000..d10f797 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketWebsiteCommand.d.ts @@ -0,0 +1,143 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetBucketWebsiteOutput, GetBucketWebsiteRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetBucketWebsiteCommand}. + */ +export interface GetBucketWebsiteCommandInput extends GetBucketWebsiteRequest { +} +/** + * @public + * + * The output of {@link GetBucketWebsiteCommand}. + */ +export interface GetBucketWebsiteCommandOutput extends GetBucketWebsiteOutput, __MetadataBearer { +} +declare const GetBucketWebsiteCommand_base: { + new (input: GetBucketWebsiteCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetBucketWebsiteCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the website configuration for a bucket. To host website on Amazon S3, you can configure a bucket + * as website by adding a website configuration. For more information about hosting websites, see Hosting Websites on Amazon S3.

+ *

This GET action requires the S3:GetBucketWebsite permission. By default, only the + * bucket owner can read the bucket website configuration. However, bucket owners can allow other users to + * read the website configuration by writing a bucket policy granting them the + * S3:GetBucketWebsite permission.

+ *

The following operations are related to GetBucketWebsite:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetBucketWebsiteCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetBucketWebsiteCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetBucketWebsiteRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetBucketWebsiteCommand(input); + * const response = await client.send(command); + * // { // GetBucketWebsiteOutput + * // RedirectAllRequestsTo: { // RedirectAllRequestsTo + * // HostName: "STRING_VALUE", // required + * // Protocol: "http" || "https", + * // }, + * // IndexDocument: { // IndexDocument + * // Suffix: "STRING_VALUE", // required + * // }, + * // ErrorDocument: { // ErrorDocument + * // Key: "STRING_VALUE", // required + * // }, + * // RoutingRules: [ // RoutingRules + * // { // RoutingRule + * // Condition: { // Condition + * // HttpErrorCodeReturnedEquals: "STRING_VALUE", + * // KeyPrefixEquals: "STRING_VALUE", + * // }, + * // Redirect: { // Redirect + * // HostName: "STRING_VALUE", + * // HttpRedirectCode: "STRING_VALUE", + * // Protocol: "http" || "https", + * // ReplaceKeyPrefixWith: "STRING_VALUE", + * // ReplaceKeyWith: "STRING_VALUE", + * // }, + * // }, + * // ], + * // }; + * + * ``` + * + * @param GetBucketWebsiteCommandInput - {@link GetBucketWebsiteCommandInput} + * @returns {@link GetBucketWebsiteCommandOutput} + * @see {@link GetBucketWebsiteCommandInput} for command's `input` shape. + * @see {@link GetBucketWebsiteCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get bucket website configuration + * ```javascript + * // The following example retrieves website configuration of a bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new GetBucketWebsiteCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ErrorDocument: { + * Key: "error.html" + * }, + * IndexDocument: { + * Suffix: "index.html" + * } + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetBucketWebsiteCommand extends GetBucketWebsiteCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetBucketWebsiteRequest; + output: GetBucketWebsiteOutput; + }; + sdk: { + input: GetBucketWebsiteCommandInput; + output: GetBucketWebsiteCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAclCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAclCommand.d.ts new file mode 100644 index 0000000..46f4c11 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAclCommand.d.ts @@ -0,0 +1,192 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetObjectAclOutput, GetObjectAclRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetObjectAclCommand}. + */ +export interface GetObjectAclCommandInput extends GetObjectAclRequest { +} +/** + * @public + * + * The output of {@link GetObjectAclCommand}. + */ +export interface GetObjectAclCommandOutput extends GetObjectAclOutput, __MetadataBearer { +} +declare const GetObjectAclCommand_base: { + new (input: GetObjectAclCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetObjectAclCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the access control list (ACL) of an object. To use this operation, you must have + * s3:GetObjectAcl permissions or READ_ACP access to the object. For more + * information, see Mapping of ACL + * permissions and access policy permissions in the Amazon S3 User Guide + *

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ *

By default, GET returns ACL information about the current version of an object. To return ACL + * information about a different version, use the versionId subresource.

+ * + *

If your bucket uses the bucket owner enforced setting for S3 Object Ownership, requests to read + * ACLs are still supported and return the bucket-owner-full-control ACL with the owner + * being the account that created the bucket. For more information, see Controlling object ownership and + * disabling ACLs in the Amazon S3 User Guide.

+ *
+ *

The following operations are related to GetObjectAcl:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetObjectAclCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetObjectAclCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetObjectAclRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetObjectAclCommand(input); + * const response = await client.send(command); + * // { // GetObjectAclOutput + * // Owner: { // Owner + * // DisplayName: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // }, + * // Grants: [ // Grants + * // { // Grant + * // Grantee: { // Grantee + * // DisplayName: "STRING_VALUE", + * // EmailAddress: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // URI: "STRING_VALUE", + * // Type: "CanonicalUser" || "AmazonCustomerByEmail" || "Group", // required + * // }, + * // Permission: "FULL_CONTROL" || "WRITE" || "WRITE_ACP" || "READ" || "READ_ACP", + * // }, + * // ], + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param GetObjectAclCommandInput - {@link GetObjectAclCommandInput} + * @returns {@link GetObjectAclCommandOutput} + * @see {@link GetObjectAclCommandInput} for command's `input` shape. + * @see {@link GetObjectAclCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link NoSuchKey} (client fault) + *

The specified key does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To retrieve object ACL + * ```javascript + * // The following example retrieves access control list (ACL) of an object. + * const input = { + * Bucket: "examplebucket", + * Key: "HappyFace.jpg" + * }; + * const command = new GetObjectAclCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Grants: [ + * { + * Grantee: { + * DisplayName: "owner-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc", + * Type: "CanonicalUser" + * }, + * Permission: "WRITE" + * }, + * { + * Grantee: { + * DisplayName: "owner-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc", + * Type: "CanonicalUser" + * }, + * Permission: "WRITE_ACP" + * }, + * { + * Grantee: { + * DisplayName: "owner-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc", + * Type: "CanonicalUser" + * }, + * Permission: "READ" + * }, + * { + * Grantee: { + * DisplayName: "owner-display-name", + * ID: "852b113eexamplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc", + * Type: "CanonicalUser" + * }, + * Permission: "READ_ACP" + * } + * ], + * Owner: { + * DisplayName: "owner-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * } + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetObjectAclCommand extends GetObjectAclCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetObjectAclRequest; + output: GetObjectAclOutput; + }; + sdk: { + input: GetObjectAclCommandInput; + output: GetObjectAclCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAttributesCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAttributesCommand.d.ts new file mode 100644 index 0000000..5e79611 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAttributesCommand.d.ts @@ -0,0 +1,328 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetObjectAttributesOutput, GetObjectAttributesRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetObjectAttributesCommand}. + */ +export interface GetObjectAttributesCommandInput extends GetObjectAttributesRequest { +} +/** + * @public + * + * The output of {@link GetObjectAttributesCommand}. + */ +export interface GetObjectAttributesCommandOutput extends GetObjectAttributesOutput, __MetadataBearer { +} +declare const GetObjectAttributesCommand_base: { + new (input: GetObjectAttributesCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetObjectAttributesCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Retrieves all of the metadata from an object without returning the object itself. This operation is + * useful if you're interested only in an object's metadata.

+ *

+ * GetObjectAttributes combines the functionality of HeadObject and + * ListParts. All of the data returned with both of those individual calls can be returned + * with a single call to GetObjectAttributes.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - To use + * GetObjectAttributes, you must have READ access to the object.

    + *

    The other permissions that you need to use this operation depend on whether the bucket is + * versioned and if a version ID is passed in the GetObjectAttributes request.

    + *
      + *
    • + *

      If you pass a version ID in your request, you need both the + * s3:GetObjectVersion and s3:GetObjectVersionAttributes + * permissions.

      + *
    • + *
    • + *

      If you do not pass a version ID in your request, you need the + * s3:GetObject and s3:GetObjectAttributes permissions.

      + *
    • + *
    + *

    For more information, see Specifying Permissions in a + * Policy in the Amazon S3 User Guide.

    + *

    If the object that you request does not exist, the error Amazon S3 returns depends on whether + * you also have the s3:ListBucket permission.

    + *
      + *
    • + *

      If you have the s3:ListBucket permission on the bucket, Amazon S3 returns an + * HTTP status code 404 Not Found ("no such key") error.

      + *
    • + *
    • + *

      If you don't have the s3:ListBucket permission, Amazon S3 returns an HTTP + * status code 403 Forbidden ("access denied") error.

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *

    If + * the + * object is encrypted with SSE-KMS, you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key policies + * for the KMS key.

    + *
  • + *
+ *
+ *
Encryption
+ *
+ * + *

Encryption request headers, like x-amz-server-side-encryption, should not be + * sent for HEAD requests if your object uses server-side encryption with Key Management Service + * (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or + * server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The + * x-amz-server-side-encryption header is used when you PUT an object + * to S3 and want to specify the encryption method. If you include this header in a + * GET request for an object that uses these types of keys, you’ll get an HTTP + * 400 Bad Request error. It's because the encryption method can't be changed when + * you retrieve the object.

+ *
+ *

If you encrypted an object when you stored the object in Amazon S3 by using server-side encryption + * with customer-provided encryption keys (SSE-C), then when you retrieve the metadata from the + * object, you must use the following headers. These headers provide the server with the encryption + * key required to retrieve the object's metadata. The headers are:

+ *
    + *
  • + *

    + * x-amz-server-side-encryption-customer-algorithm + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key-MD5 + *

    + *
  • + *
+ *

For more information about SSE-C, see Server-Side Encryption (Using + * Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

+ * + *

+ * Directory bucket permissions - + * For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your + * CreateSession requests or PUT object requests. Then, new objects + * are automatically encrypted with the desired encryption settings. For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

+ *
+ *
+ *
Versioning
+ *
+ *

+ * Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. + * You can only specify null to the versionId query parameter in the + * request.

+ *
+ *
Conditional request headers
+ *
+ *

Consider the following when using request headers:

+ *
    + *
  • + *

    If both of the If-Match and If-Unmodified-Since headers are + * present in the request as follows, then Amazon S3 returns the HTTP status code 200 OK + * and the data requested:

    + *
      + *
    • + *

      + * If-Match condition evaluates to true.

      + *
    • + *
    • + *

      + * If-Unmodified-Since condition evaluates to false.

      + *
    • + *
    + *

    For more information about conditional requests, see RFC 7232.

    + *
  • + *
  • + *

    If both of the If-None-Match and If-Modified-Since headers are + * present in the request as follows, then Amazon S3 returns the HTTP status code 304 Not + * Modified:

    + *
      + *
    • + *

      + * If-None-Match condition evaluates to false.

      + *
    • + *
    • + *

      + * If-Modified-Since condition evaluates to true.

      + *
    • + *
    + *

    For more information about conditional requests, see RFC 7232.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following actions are related to GetObjectAttributes:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetObjectAttributesCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetObjectAttributesCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetObjectAttributesRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * MaxParts: Number("int"), + * PartNumberMarker: "STRING_VALUE", + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * ObjectAttributes: [ // ObjectAttributesList // required + * "ETag" || "Checksum" || "ObjectParts" || "StorageClass" || "ObjectSize", + * ], + * }; + * const command = new GetObjectAttributesCommand(input); + * const response = await client.send(command); + * // { // GetObjectAttributesOutput + * // DeleteMarker: true || false, + * // LastModified: new Date("TIMESTAMP"), + * // VersionId: "STRING_VALUE", + * // RequestCharged: "requester", + * // ETag: "STRING_VALUE", + * // Checksum: { // Checksum + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // }, + * // ObjectParts: { // GetObjectAttributesParts + * // TotalPartsCount: Number("int"), + * // PartNumberMarker: "STRING_VALUE", + * // NextPartNumberMarker: "STRING_VALUE", + * // MaxParts: Number("int"), + * // IsTruncated: true || false, + * // Parts: [ // PartsList + * // { // ObjectPart + * // PartNumber: Number("int"), + * // Size: Number("long"), + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // }, + * // ], + * // }, + * // StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * // ObjectSize: Number("long"), + * // }; + * + * ``` + * + * @param GetObjectAttributesCommandInput - {@link GetObjectAttributesCommandInput} + * @returns {@link GetObjectAttributesCommandOutput} + * @see {@link GetObjectAttributesCommandInput} for command's `input` shape. + * @see {@link GetObjectAttributesCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link NoSuchKey} (client fault) + *

The specified key does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetObjectAttributesCommand extends GetObjectAttributesCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetObjectAttributesRequest; + output: GetObjectAttributesOutput; + }; + sdk: { + input: GetObjectAttributesCommandInput; + output: GetObjectAttributesCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectCommand.d.ts new file mode 100644 index 0000000..7947ca4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectCommand.d.ts @@ -0,0 +1,373 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer, StreamingBlobPayloadOutputTypes } from "@smithy/types"; +import type { GetObjectOutput, GetObjectRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetObjectCommand}. + */ +export interface GetObjectCommandInput extends GetObjectRequest { +} +/** + * @public + * + * The output of {@link GetObjectCommand}. + */ +export interface GetObjectCommandOutput extends Omit, __MetadataBearer { + Body?: StreamingBlobPayloadOutputTypes; +} +declare const GetObjectCommand_base: { + new (input: GetObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Retrieves an object from Amazon S3.

+ *

In the GetObject request, specify the full key name for the object.

+ *

+ * General purpose buckets - Both the virtual-hosted-style requests + * and the path-style requests are supported. For a virtual hosted-style request example, if you have the + * object photos/2006/February/sample.jpg, specify the object key name as + * /photos/2006/February/sample.jpg. For a path-style request example, if you have the + * object photos/2006/February/sample.jpg in the bucket named examplebucket, + * specify the object key name as /examplebucket/photos/2006/February/sample.jpg. For more + * information about request types, see HTTP Host Header Bucket + * Specification in the Amazon S3 User Guide.

+ *

+ * Directory buckets - + * Only virtual-hosted-style requests are supported. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg in the bucket named amzn-s3-demo-bucket--usw2-az1--x-s3, specify the object key name as /photos/2006/February/sample.jpg. Also, when you make requests to this API operation, your requests are sent to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket-name.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - You must have the + * required permissions in a policy. To use GetObject, you must have the + * READ access to the object (or version). If you grant READ access + * to the anonymous user, the GetObject operation returns the object without using + * an authorization header. For more information, see Specifying permissions in a + * policy in the Amazon S3 User Guide.

    + *

    If you include a versionId in your request header, you must have the + * s3:GetObjectVersion permission to access a specific version of an object. The + * s3:GetObject permission is not required in this scenario.

    + *

    If you request the current version of an object without a specific versionId + * in the request header, only the s3:GetObject permission is required. The + * s3:GetObjectVersion permission is not required in this scenario.

    + *

    If the object that you request doesn’t exist, the error that Amazon S3 returns depends on + * whether you also have the s3:ListBucket permission.

    + *
      + *
    • + *

      If you have the s3:ListBucket permission on the bucket, Amazon S3 returns an + * HTTP status code 404 Not Found error.

      + *
    • + *
    • + *

      If you don’t have the s3:ListBucket permission, Amazon S3 returns an HTTP + * status code 403 Access Denied error.

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *

    If the object is + * encrypted using SSE-KMS, you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key policies + * for the KMS key.

    + *
  • + *
+ *
+ *
Storage classes
+ *
+ *

If the object you are retrieving is stored in the S3 Glacier Flexible Retrieval storage class, + * the S3 Glacier Deep Archive storage class, the S3 Intelligent-Tiering Archive Access tier, or the + * S3 Intelligent-Tiering Deep Archive Access tier, before you can retrieve the object you must first restore a + * copy using RestoreObject. Otherwise, this operation returns an InvalidObjectState + * error. For information about restoring archived objects, see Restoring Archived Objects in the + * Amazon S3 User Guide.

+ *

+ * Directory buckets - + * Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones. + * Unsupported storage class values won't write a destination object and will respond with the HTTP status code 400 Bad Request.

+ *
+ *
Encryption
+ *
+ *

Encryption request headers, like x-amz-server-side-encryption, should not be sent + * for the GetObject requests, if your object uses server-side encryption with Amazon S3 + * managed encryption keys (SSE-S3), server-side encryption with Key Management Service (KMS) keys (SSE-KMS), or + * dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you include the header in + * your GetObject requests for the object that uses these types of keys, you’ll get an + * HTTP 400 Bad Request error.

+ *

+ * Directory buckets - + * For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS. SSE-C isn't supported. For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

+ *
+ *
Overriding response header values through the request
+ *
+ *

There are times when you want to override certain response header values of a + * GetObject response. For example, you might override the + * Content-Disposition response header value through your GetObject + * request.

+ *

You can override values for a set of response headers. These modified response header values + * are included only in a successful response, that is, when the HTTP status code 200 OK + * is returned. The headers you can override using the following query parameters in the request are + * a subset of the headers that Amazon S3 accepts when you create an object.

+ *

The response headers that you can override for the GetObject response are + * Cache-Control, Content-Disposition, Content-Encoding, + * Content-Language, Content-Type, and Expires.

+ *

To override values for a set of response headers in the GetObject response, you + * can use the following query parameters in the request.

+ *
    + *
  • + *

    + * response-cache-control + *

    + *
  • + *
  • + *

    + * response-content-disposition + *

    + *
  • + *
  • + *

    + * response-content-encoding + *

    + *
  • + *
  • + *

    + * response-content-language + *

    + *
  • + *
  • + *

    + * response-content-type + *

    + *
  • + *
  • + *

    + * response-expires + *

    + *
  • + *
+ * + *

When you use these parameters, you must sign the request by using either an Authorization + * header or a presigned URL. These parameters cannot be used with an unsigned (anonymous) + * request.

+ *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to GetObject:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetObjectCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetObjectRequest + * Bucket: "STRING_VALUE", // required + * IfMatch: "STRING_VALUE", + * IfModifiedSince: new Date("TIMESTAMP"), + * IfNoneMatch: "STRING_VALUE", + * IfUnmodifiedSince: new Date("TIMESTAMP"), + * Key: "STRING_VALUE", // required + * Range: "STRING_VALUE", + * ResponseCacheControl: "STRING_VALUE", + * ResponseContentDisposition: "STRING_VALUE", + * ResponseContentEncoding: "STRING_VALUE", + * ResponseContentLanguage: "STRING_VALUE", + * ResponseContentType: "STRING_VALUE", + * ResponseExpires: new Date("TIMESTAMP"), + * VersionId: "STRING_VALUE", + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * RequestPayer: "requester", + * PartNumber: Number("int"), + * ExpectedBucketOwner: "STRING_VALUE", + * ChecksumMode: "ENABLED", + * }; + * const command = new GetObjectCommand(input); + * const response = await client.send(command); + * // consume or destroy the stream to free the socket. + * const bytes = await response.Body.transformToByteArray(); + * // const str = await response.Body.transformToString(); + * // response.Body.destroy(); // only applicable to Node.js Readable streams. + * + * // { // GetObjectOutput + * // Body: "", // see \@smithy/types -> StreamingBlobPayloadOutputTypes + * // DeleteMarker: true || false, + * // AcceptRanges: "STRING_VALUE", + * // Expiration: "STRING_VALUE", + * // Restore: "STRING_VALUE", + * // LastModified: new Date("TIMESTAMP"), + * // ContentLength: Number("long"), + * // ETag: "STRING_VALUE", + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // MissingMeta: Number("int"), + * // VersionId: "STRING_VALUE", + * // CacheControl: "STRING_VALUE", + * // ContentDisposition: "STRING_VALUE", + * // ContentEncoding: "STRING_VALUE", + * // ContentLanguage: "STRING_VALUE", + * // ContentRange: "STRING_VALUE", + * // ContentType: "STRING_VALUE", + * // Expires: new Date("TIMESTAMP"), + * // ExpiresString: "STRING_VALUE", + * // WebsiteRedirectLocation: "STRING_VALUE", + * // ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * // Metadata: { // Metadata + * // "": "STRING_VALUE", + * // }, + * // SSECustomerAlgorithm: "STRING_VALUE", + * // SSECustomerKeyMD5: "STRING_VALUE", + * // SSEKMSKeyId: "STRING_VALUE", + * // BucketKeyEnabled: true || false, + * // StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * // RequestCharged: "requester", + * // ReplicationStatus: "COMPLETE" || "PENDING" || "FAILED" || "REPLICA" || "COMPLETED", + * // PartsCount: Number("int"), + * // TagCount: Number("int"), + * // ObjectLockMode: "GOVERNANCE" || "COMPLIANCE", + * // ObjectLockRetainUntilDate: new Date("TIMESTAMP"), + * // ObjectLockLegalHoldStatus: "ON" || "OFF", + * // }; + * + * ``` + * + * @param GetObjectCommandInput - {@link GetObjectCommandInput} + * @returns {@link GetObjectCommandOutput} + * @see {@link GetObjectCommandInput} for command's `input` shape. + * @see {@link GetObjectCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link InvalidObjectState} (client fault) + *

Object is archived and inaccessible until restored.

+ *

If the object you are retrieving is stored in the S3 Glacier Flexible Retrieval storage class, the + * S3 Glacier Deep Archive storage class, the S3 Intelligent-Tiering Archive Access tier, or the + * S3 Intelligent-Tiering Deep Archive Access tier, before you can retrieve the object you must first restore a copy + * using RestoreObject. Otherwise, this operation returns an InvalidObjectState error. For + * information about restoring archived objects, see Restoring Archived Objects in the + * Amazon S3 User Guide.

+ * + * @throws {@link NoSuchKey} (client fault) + *

The specified key does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To retrieve a byte range of an object + * ```javascript + * // The following example retrieves an object for an S3 bucket. The request specifies the range header to retrieve a specific byte range. + * const input = { + * Bucket: "examplebucket", + * Key: "SampleFile.txt", + * Range: "bytes=0-9" + * }; + * const command = new GetObjectCommand(input); + * const response = await client.send(command); + * // consume or destroy the stream to free the socket. + * const bytes = await response.Body.transformToByteArray(); + * // const str = await response.Body.transformToString(); + * // response.Body.destroy(); // only applicable to Node.js Readable streams. + * + * /* response is + * { + * AcceptRanges: "bytes", + * ContentLength: 10, + * ContentRange: "bytes 0-9/43", + * ContentType: "text/plain", + * ETag: `"0d94420ffd0bc68cd3d152506b97a9cc"`, + * LastModified: "2014-10-09T22:57:28.000Z", + * Metadata: { /* empty *\/ }, + * VersionId: "null" + * } + * *\/ + * ``` + * + * @example To retrieve an object + * ```javascript + * // The following example retrieves an object for an S3 bucket. + * const input = { + * Bucket: "examplebucket", + * Key: "HappyFace.jpg" + * }; + * const command = new GetObjectCommand(input); + * const response = await client.send(command); + * // consume or destroy the stream to free the socket. + * const bytes = await response.Body.transformToByteArray(); + * // const str = await response.Body.transformToString(); + * // response.Body.destroy(); // only applicable to Node.js Readable streams. + * + * /* response is + * { + * AcceptRanges: "bytes", + * ContentLength: 3191, + * ContentType: "image/jpeg", + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * LastModified: "2016-12-15T01:19:41.000Z", + * Metadata: { /* empty *\/ }, + * TagCount: 2, + * VersionId: "null" + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetObjectCommand extends GetObjectCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetObjectRequest; + output: GetObjectOutput; + }; + sdk: { + input: GetObjectCommandInput; + output: GetObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLegalHoldCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLegalHoldCommand.d.ts new file mode 100644 index 0000000..03f1009 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLegalHoldCommand.d.ts @@ -0,0 +1,95 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetObjectLegalHoldOutput, GetObjectLegalHoldRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetObjectLegalHoldCommand}. + */ +export interface GetObjectLegalHoldCommandInput extends GetObjectLegalHoldRequest { +} +/** + * @public + * + * The output of {@link GetObjectLegalHoldCommand}. + */ +export interface GetObjectLegalHoldCommandOutput extends GetObjectLegalHoldOutput, __MetadataBearer { +} +declare const GetObjectLegalHoldCommand_base: { + new (input: GetObjectLegalHoldCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetObjectLegalHoldCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Gets an object's current legal hold status. For more information, see Locking Objects.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ *

The following action is related to GetObjectLegalHold:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetObjectLegalHoldCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetObjectLegalHoldCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetObjectLegalHoldRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetObjectLegalHoldCommand(input); + * const response = await client.send(command); + * // { // GetObjectLegalHoldOutput + * // LegalHold: { // ObjectLockLegalHold + * // Status: "ON" || "OFF", + * // }, + * // }; + * + * ``` + * + * @param GetObjectLegalHoldCommandInput - {@link GetObjectLegalHoldCommandInput} + * @returns {@link GetObjectLegalHoldCommandOutput} + * @see {@link GetObjectLegalHoldCommandInput} for command's `input` shape. + * @see {@link GetObjectLegalHoldCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetObjectLegalHoldCommand extends GetObjectLegalHoldCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetObjectLegalHoldRequest; + output: GetObjectLegalHoldOutput; + }; + sdk: { + input: GetObjectLegalHoldCommandInput; + output: GetObjectLegalHoldCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLockConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLockConfigurationCommand.d.ts new file mode 100644 index 0000000..be50e4e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLockConfigurationCommand.d.ts @@ -0,0 +1,100 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetObjectLockConfigurationOutput, GetObjectLockConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetObjectLockConfigurationCommand}. + */ +export interface GetObjectLockConfigurationCommandInput extends GetObjectLockConfigurationRequest { +} +/** + * @public + * + * The output of {@link GetObjectLockConfigurationCommand}. + */ +export interface GetObjectLockConfigurationCommandOutput extends GetObjectLockConfigurationOutput, __MetadataBearer { +} +declare const GetObjectLockConfigurationCommand_base: { + new (input: GetObjectLockConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetObjectLockConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Gets the Object Lock configuration for a bucket. The rule specified in the Object Lock configuration + * will be applied by default to every new object placed in the specified bucket. For more information, see + * Locking Objects.

+ *

The following action is related to GetObjectLockConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetObjectLockConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetObjectLockConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetObjectLockConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetObjectLockConfigurationCommand(input); + * const response = await client.send(command); + * // { // GetObjectLockConfigurationOutput + * // ObjectLockConfiguration: { // ObjectLockConfiguration + * // ObjectLockEnabled: "Enabled", + * // Rule: { // ObjectLockRule + * // DefaultRetention: { // DefaultRetention + * // Mode: "GOVERNANCE" || "COMPLIANCE", + * // Days: Number("int"), + * // Years: Number("int"), + * // }, + * // }, + * // }, + * // }; + * + * ``` + * + * @param GetObjectLockConfigurationCommandInput - {@link GetObjectLockConfigurationCommandInput} + * @returns {@link GetObjectLockConfigurationCommandOutput} + * @see {@link GetObjectLockConfigurationCommandInput} for command's `input` shape. + * @see {@link GetObjectLockConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetObjectLockConfigurationCommand extends GetObjectLockConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetObjectLockConfigurationRequest; + output: GetObjectLockConfigurationOutput; + }; + sdk: { + input: GetObjectLockConfigurationCommandInput; + output: GetObjectLockConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectRetentionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectRetentionCommand.d.ts new file mode 100644 index 0000000..2a4796e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectRetentionCommand.d.ts @@ -0,0 +1,96 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetObjectRetentionOutput, GetObjectRetentionRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetObjectRetentionCommand}. + */ +export interface GetObjectRetentionCommandInput extends GetObjectRetentionRequest { +} +/** + * @public + * + * The output of {@link GetObjectRetentionCommand}. + */ +export interface GetObjectRetentionCommandOutput extends GetObjectRetentionOutput, __MetadataBearer { +} +declare const GetObjectRetentionCommand_base: { + new (input: GetObjectRetentionCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetObjectRetentionCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Retrieves an object's retention settings. For more information, see Locking Objects.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ *

The following action is related to GetObjectRetention:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetObjectRetentionCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetObjectRetentionCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetObjectRetentionRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetObjectRetentionCommand(input); + * const response = await client.send(command); + * // { // GetObjectRetentionOutput + * // Retention: { // ObjectLockRetention + * // Mode: "GOVERNANCE" || "COMPLIANCE", + * // RetainUntilDate: new Date("TIMESTAMP"), + * // }, + * // }; + * + * ``` + * + * @param GetObjectRetentionCommandInput - {@link GetObjectRetentionCommandInput} + * @returns {@link GetObjectRetentionCommandOutput} + * @see {@link GetObjectRetentionCommandInput} for command's `input` shape. + * @see {@link GetObjectRetentionCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetObjectRetentionCommand extends GetObjectRetentionCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetObjectRetentionRequest; + output: GetObjectRetentionOutput; + }; + sdk: { + input: GetObjectRetentionCommandInput; + output: GetObjectRetentionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTaggingCommand.d.ts new file mode 100644 index 0000000..094690f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTaggingCommand.d.ts @@ -0,0 +1,165 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetObjectTaggingOutput, GetObjectTaggingRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetObjectTaggingCommand}. + */ +export interface GetObjectTaggingCommandInput extends GetObjectTaggingRequest { +} +/** + * @public + * + * The output of {@link GetObjectTaggingCommand}. + */ +export interface GetObjectTaggingCommandOutput extends GetObjectTaggingOutput, __MetadataBearer { +} +declare const GetObjectTaggingCommand_base: { + new (input: GetObjectTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetObjectTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns the tag-set of an object. You send the GET request against the tagging subresource + * associated with the object.

+ *

To use this operation, you must have permission to perform the s3:GetObjectTagging + * action. By default, the GET action returns information about current version of an object. For a + * versioned bucket, you can have multiple versions of an object in your bucket. To retrieve tags of any + * other version, use the versionId query parameter. You also need permission for the + * s3:GetObjectVersionTagging action.

+ *

By default, the bucket owner has this permission and can grant this permission to others.

+ *

For information about the Amazon S3 object tagging feature, see Object Tagging.

+ *

The following actions are related to GetObjectTagging:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetObjectTaggingCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetObjectTaggingCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetObjectTaggingRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * RequestPayer: "requester", + * }; + * const command = new GetObjectTaggingCommand(input); + * const response = await client.send(command); + * // { // GetObjectTaggingOutput + * // VersionId: "STRING_VALUE", + * // TagSet: [ // TagSet // required + * // { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // }; + * + * ``` + * + * @param GetObjectTaggingCommandInput - {@link GetObjectTaggingCommandInput} + * @returns {@link GetObjectTaggingCommandOutput} + * @see {@link GetObjectTaggingCommandInput} for command's `input` shape. + * @see {@link GetObjectTaggingCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To retrieve tag set of a specific object version + * ```javascript + * // The following example retrieves tag set of an object. The request specifies object version. + * const input = { + * Bucket: "examplebucket", + * Key: "exampleobject", + * VersionId: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" + * }; + * const command = new GetObjectTaggingCommand(input); + * const response = await client.send(command); + * /* response is + * { + * TagSet: [ + * { + * Key: "Key1", + * Value: "Value1" + * } + * ], + * VersionId: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI" + * } + * *\/ + * ``` + * + * @example To retrieve tag set of an object + * ```javascript + * // The following example retrieves tag set of an object. + * const input = { + * Bucket: "examplebucket", + * Key: "HappyFace.jpg" + * }; + * const command = new GetObjectTaggingCommand(input); + * const response = await client.send(command); + * /* response is + * { + * TagSet: [ + * { + * Key: "Key4", + * Value: "Value4" + * }, + * { + * Key: "Key3", + * Value: "Value3" + * } + * ], + * VersionId: "null" + * } + * *\/ + * ``` + * + * @public + */ +export declare class GetObjectTaggingCommand extends GetObjectTaggingCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetObjectTaggingRequest; + output: GetObjectTaggingOutput; + }; + sdk: { + input: GetObjectTaggingCommandInput; + output: GetObjectTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTorrentCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTorrentCommand.d.ts new file mode 100644 index 0000000..afcf169 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTorrentCommand.d.ts @@ -0,0 +1,124 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer, StreamingBlobPayloadOutputTypes } from "@smithy/types"; +import type { GetObjectTorrentOutput, GetObjectTorrentRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetObjectTorrentCommand}. + */ +export interface GetObjectTorrentCommandInput extends GetObjectTorrentRequest { +} +/** + * @public + * + * The output of {@link GetObjectTorrentCommand}. + */ +export interface GetObjectTorrentCommandOutput extends Omit, __MetadataBearer { + Body?: StreamingBlobPayloadOutputTypes; +} +declare const GetObjectTorrentCommand_base: { + new (input: GetObjectTorrentCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetObjectTorrentCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns torrent files from a bucket. BitTorrent can save you bandwidth when you're distributing + * large files.

+ * + *

You can get torrent only for objects that are less than 5 GB in size, and that are not encrypted + * using server-side encryption with a customer-provided encryption key.

+ *
+ *

To use GET, you must have READ access to the object.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ *

The following action is related to GetObjectTorrent:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetObjectTorrentCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetObjectTorrentCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetObjectTorrentRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetObjectTorrentCommand(input); + * const response = await client.send(command); + * // consume or destroy the stream to free the socket. + * const bytes = await response.Body.transformToByteArray(); + * // const str = await response.Body.transformToString(); + * // response.Body.destroy(); // only applicable to Node.js Readable streams. + * + * // { // GetObjectTorrentOutput + * // Body: "", // see \@smithy/types -> StreamingBlobPayloadOutputTypes + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param GetObjectTorrentCommandInput - {@link GetObjectTorrentCommandInput} + * @returns {@link GetObjectTorrentCommandOutput} + * @see {@link GetObjectTorrentCommandInput} for command's `input` shape. + * @see {@link GetObjectTorrentCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To retrieve torrent files for an object + * ```javascript + * // The following example retrieves torrent files of an object. + * const input = { + * Bucket: "examplebucket", + * Key: "HappyFace.jpg" + * }; + * const command = new GetObjectTorrentCommand(input); + * const response = await client.send(command); + * // consume or destroy the stream to free the socket. + * const bytes = await response.Body.transformToByteArray(); + * // const str = await response.Body.transformToString(); + * // response.Body.destroy(); // only applicable to Node.js Readable streams. + * + * /* response is + * { /* empty *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class GetObjectTorrentCommand extends GetObjectTorrentCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetObjectTorrentRequest; + output: GetObjectTorrentOutput; + }; + sdk: { + input: GetObjectTorrentCommandInput; + output: GetObjectTorrentCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetPublicAccessBlockCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetPublicAccessBlockCommand.d.ts new file mode 100644 index 0000000..180ddde --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/GetPublicAccessBlockCommand.d.ts @@ -0,0 +1,125 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetPublicAccessBlockOutput, GetPublicAccessBlockRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetPublicAccessBlockCommand}. + */ +export interface GetPublicAccessBlockCommandInput extends GetPublicAccessBlockRequest { +} +/** + * @public + * + * The output of {@link GetPublicAccessBlockCommand}. + */ +export interface GetPublicAccessBlockCommandOutput extends GetPublicAccessBlockOutput, __MetadataBearer { +} +declare const GetPublicAccessBlockCommand_base: { + new (input: GetPublicAccessBlockCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetPublicAccessBlockCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Retrieves the PublicAccessBlock configuration for an Amazon S3 bucket. This + * operation returns the bucket-level configuration only. To understand the effective public + * access behavior, you must also consider account-level settings (which may inherit from + * organization-level policies). To use this operation, you must have the + * s3:GetBucketPublicAccessBlock permission. For more information about Amazon S3 + * permissions, see Specifying Permissions in a + * Policy.

+ * + *

When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket or an + * object, it checks the PublicAccessBlock configuration for both the bucket (or + * the bucket that contains the object) and the bucket owner's account. Account-level settings + * automatically inherit from organization-level policies when present. If the + * PublicAccessBlock settings are different between the bucket and the account, + * Amazon S3 uses the most restrictive combination of the bucket-level and account-level + * settings.

+ *
+ *

For more information about when Amazon S3 considers a bucket or an object public, see The Meaning of "Public".

+ *

The following operations are related to GetPublicAccessBlock:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, GetPublicAccessBlockCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, GetPublicAccessBlockCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // GetPublicAccessBlockRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new GetPublicAccessBlockCommand(input); + * const response = await client.send(command); + * // { // GetPublicAccessBlockOutput + * // PublicAccessBlockConfiguration: { // PublicAccessBlockConfiguration + * // BlockPublicAcls: true || false, + * // IgnorePublicAcls: true || false, + * // BlockPublicPolicy: true || false, + * // RestrictPublicBuckets: true || false, + * // }, + * // }; + * + * ``` + * + * @param GetPublicAccessBlockCommandInput - {@link GetPublicAccessBlockCommandInput} + * @returns {@link GetPublicAccessBlockCommandOutput} + * @see {@link GetPublicAccessBlockCommandInput} for command's `input` shape. + * @see {@link GetPublicAccessBlockCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class GetPublicAccessBlockCommand extends GetPublicAccessBlockCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetPublicAccessBlockRequest; + output: GetPublicAccessBlockOutput; + }; + sdk: { + input: GetPublicAccessBlockCommandInput; + output: GetPublicAccessBlockCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadBucketCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadBucketCommand.d.ts new file mode 100644 index 0000000..d8e8a1d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadBucketCommand.d.ts @@ -0,0 +1,168 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { HeadBucketOutput, HeadBucketRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link HeadBucketCommand}. + */ +export interface HeadBucketCommandInput extends HeadBucketRequest { +} +/** + * @public + * + * The output of {@link HeadBucketCommand}. + */ +export interface HeadBucketCommandOutput extends HeadBucketOutput, __MetadataBearer { +} +declare const HeadBucketCommand_base: { + new (input: HeadBucketCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: HeadBucketCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

You can use this operation to determine if a bucket exists and if you have permission to access it. + * The action returns a 200 OK HTTP status code if the bucket exists and you have + * permission to access it. You can make a HeadBucket call on any bucket name to any + * Region in the partition, and regardless of the permissions on the bucket, you will receive a + * response header with the correct bucket location so that you can then make a proper, signed request + * to the appropriate Regional endpoint.

+ * + *

If the bucket doesn't exist or you don't have permission to access it, the HEAD + * request returns a generic 400 Bad Request, 403 Forbidden, or + * 404 Not Found HTTP status code. A message body isn't included, so you can't determine + * the exception beyond these HTTP response codes.

+ *
+ *
+ *
Authentication and authorization
+ *
+ *

+ * General purpose buckets - Request to public buckets that + * grant the s3:ListBucket permission publicly do not need to be signed. All other + * HeadBucket requests must be authenticated and signed by using IAM credentials + * (access key ID and secret access key for the IAM identities). All headers with the + * x-amz- prefix, including x-amz-copy-source, must be signed. For more + * information, see REST Authentication.

+ *

+ * Directory buckets - You must use IAM credentials to + * authenticate and authorize your access to the HeadBucket API operation, instead of + * using the temporary security credentials through the CreateSession API + * operation.

+ *

Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

+ *
+ *
Permissions
+ *
+ *

+ *
    + *
  • + *

    + * General purpose bucket permissions - To use this + * operation, you must have permissions to perform the s3:ListBucket action. The + * bucket owner has this permission by default and can grant this permission to others. For more + * information about permissions, see Managing access permissions to your + * Amazon S3 resources in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - You must have the + * + * s3express:CreateSession + * permission in the + * Action element of a policy. If no session mode is specified, the session will be + * created with the maximum allowable privilege, attempting ReadWrite first, + * then ReadOnly if ReadWrite is not permitted. If you want to explicitly + * restrict the access to be read-only, you can set the s3express:SessionMode condition key to + * ReadOnly on the bucket.

    + *

    For more information about example bucket policies, see Example + * bucket policies for S3 Express One Zone and Amazon Web Services + * Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ * + *

You must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, HeadBucketCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, HeadBucketCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // HeadBucketRequest + * Bucket: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new HeadBucketCommand(input); + * const response = await client.send(command); + * // { // HeadBucketOutput + * // BucketArn: "STRING_VALUE", + * // BucketLocationType: "AvailabilityZone" || "LocalZone", + * // BucketLocationName: "STRING_VALUE", + * // BucketRegion: "STRING_VALUE", + * // AccessPointAlias: true || false, + * // }; + * + * ``` + * + * @param HeadBucketCommandInput - {@link HeadBucketCommandInput} + * @returns {@link HeadBucketCommandOutput} + * @see {@link HeadBucketCommandInput} for command's `input` shape. + * @see {@link HeadBucketCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link NotFound} (client fault) + *

The specified content does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To determine if bucket exists + * ```javascript + * // This operation checks to see if a bucket exists. + * const input = { + * Bucket: "acl1" + * }; + * const command = new HeadBucketCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class HeadBucketCommand extends HeadBucketCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: HeadBucketRequest; + output: HeadBucketOutput; + }; + sdk: { + input: HeadBucketCommandInput; + output: HeadBucketCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadObjectCommand.d.ts new file mode 100644 index 0000000..0b4c935 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadObjectCommand.d.ts @@ -0,0 +1,312 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { HeadObjectOutput, HeadObjectRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link HeadObjectCommand}. + */ +export interface HeadObjectCommandInput extends HeadObjectRequest { +} +/** + * @public + * + * The output of {@link HeadObjectCommand}. + */ +export interface HeadObjectCommandOutput extends HeadObjectOutput, __MetadataBearer { +} +declare const HeadObjectCommand_base: { + new (input: HeadObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: HeadObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

The HEAD operation retrieves metadata from an object without returning the object + * itself. This operation is useful if you're interested only in an object's metadata.

+ * + *

A HEAD request has the same options as a GET operation on an object. The + * response is identical to the GET response except that there is no response body. Because + * of this, if the HEAD request generates an error, it returns a generic code, such as + * 400 Bad Request, 403 Forbidden, 404 Not Found, 405 + * Method Not Allowed, 412 Precondition Failed, or 304 Not Modified. + * It's not possible to retrieve the exact exception of these error codes.

+ *
+ *

Request headers are limited to 8 KB in size. For more information, see Common Request Headers.

+ *
+ *
Permissions
+ *
+ *

+ *
    + *
  • + *

    + * General purpose bucket permissions - To use + * HEAD, you must have the s3:GetObject permission. You need the + * relevant read object (or version) permission for this operation. For more information, see + * Actions, resources, + * and condition keys for Amazon S3 in the Amazon S3 User Guide. For more + * information about the permissions to S3 API operations by S3 resource types, see Required permissions for + * Amazon S3 API operations in the Amazon S3 User Guide.

    + *

    If the object you request doesn't exist, the error that Amazon S3 returns depends on whether + * you also have the s3:ListBucket permission.

    + *
      + *
    • + *

      If you have the s3:ListBucket permission on the bucket, Amazon S3 returns an + * HTTP status code 404 Not Found error.

      + *
    • + *
    • + *

      If you don’t have the s3:ListBucket permission, Amazon S3 returns an HTTP + * status code 403 Forbidden error.

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *

    If you enable x-amz-checksum-mode in the request and the object is encrypted + * with Amazon Web Services Key Management Service (Amazon Web Services KMS), you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key to retrieve the checksum of + * the object.

    + *
  • + *
+ *
+ *
Encryption
+ *
+ * + *

Encryption request headers, like x-amz-server-side-encryption, should not be + * sent for HEAD requests if your object uses server-side encryption with Key Management Service + * (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or + * server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The + * x-amz-server-side-encryption header is used when you PUT an object + * to S3 and want to specify the encryption method. If you include this header in a + * HEAD request for an object that uses these types of keys, you’ll get an HTTP + * 400 Bad Request error. It's because the encryption method can't be changed when + * you retrieve the object.

+ *
+ *

If you encrypt an object by using server-side encryption with customer-provided encryption + * keys (SSE-C) when you store the object in Amazon S3, then when you retrieve the metadata from the + * object, you must use the following headers to provide the encryption key for the server to be able + * to retrieve the object's metadata. The headers are:

+ *
    + *
  • + *

    + * x-amz-server-side-encryption-customer-algorithm + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key-MD5 + *

    + *
  • + *
+ *

For more information about SSE-C, see Server-Side Encryption (Using + * Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

+ * + *

+ * Directory bucket - + * For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS. SSE-C isn't supported. For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

+ *
+ *
+ *
Versioning
+ *
+ *
    + *
  • + *

    If the current version of the object is a delete marker, Amazon S3 behaves as if the object was + * deleted and includes x-amz-delete-marker: true in the response.

    + *
  • + *
  • + *

    If the specified version is a delete marker, the response returns a 405 Method Not + * Allowed error and the Last-Modified: timestamp response header.

    + *
  • + *
+ * + *
    + *
  • + *

    + * Directory buckets - + * Delete marker is not supported for directory buckets.

    + *
  • + *
  • + *

    + * Directory buckets - + * S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the + * versionId query parameter in the request.

    + *
  • + *
+ *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ * + *

For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
+ *

The following actions are related to HeadObject:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, HeadObjectCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, HeadObjectCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // HeadObjectRequest + * Bucket: "STRING_VALUE", // required + * IfMatch: "STRING_VALUE", + * IfModifiedSince: new Date("TIMESTAMP"), + * IfNoneMatch: "STRING_VALUE", + * IfUnmodifiedSince: new Date("TIMESTAMP"), + * Key: "STRING_VALUE", // required + * Range: "STRING_VALUE", + * ResponseCacheControl: "STRING_VALUE", + * ResponseContentDisposition: "STRING_VALUE", + * ResponseContentEncoding: "STRING_VALUE", + * ResponseContentLanguage: "STRING_VALUE", + * ResponseContentType: "STRING_VALUE", + * ResponseExpires: new Date("TIMESTAMP"), + * VersionId: "STRING_VALUE", + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * RequestPayer: "requester", + * PartNumber: Number("int"), + * ExpectedBucketOwner: "STRING_VALUE", + * ChecksumMode: "ENABLED", + * }; + * const command = new HeadObjectCommand(input); + * const response = await client.send(command); + * // { // HeadObjectOutput + * // DeleteMarker: true || false, + * // AcceptRanges: "STRING_VALUE", + * // Expiration: "STRING_VALUE", + * // Restore: "STRING_VALUE", + * // ArchiveStatus: "ARCHIVE_ACCESS" || "DEEP_ARCHIVE_ACCESS", + * // LastModified: new Date("TIMESTAMP"), + * // ContentLength: Number("long"), + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // ETag: "STRING_VALUE", + * // MissingMeta: Number("int"), + * // VersionId: "STRING_VALUE", + * // CacheControl: "STRING_VALUE", + * // ContentDisposition: "STRING_VALUE", + * // ContentEncoding: "STRING_VALUE", + * // ContentLanguage: "STRING_VALUE", + * // ContentType: "STRING_VALUE", + * // ContentRange: "STRING_VALUE", + * // Expires: new Date("TIMESTAMP"), + * // ExpiresString: "STRING_VALUE", + * // WebsiteRedirectLocation: "STRING_VALUE", + * // ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * // Metadata: { // Metadata + * // "": "STRING_VALUE", + * // }, + * // SSECustomerAlgorithm: "STRING_VALUE", + * // SSECustomerKeyMD5: "STRING_VALUE", + * // SSEKMSKeyId: "STRING_VALUE", + * // BucketKeyEnabled: true || false, + * // StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * // RequestCharged: "requester", + * // ReplicationStatus: "COMPLETE" || "PENDING" || "FAILED" || "REPLICA" || "COMPLETED", + * // PartsCount: Number("int"), + * // TagCount: Number("int"), + * // ObjectLockMode: "GOVERNANCE" || "COMPLIANCE", + * // ObjectLockRetainUntilDate: new Date("TIMESTAMP"), + * // ObjectLockLegalHoldStatus: "ON" || "OFF", + * // }; + * + * ``` + * + * @param HeadObjectCommandInput - {@link HeadObjectCommandInput} + * @returns {@link HeadObjectCommandOutput} + * @see {@link HeadObjectCommandInput} for command's `input` shape. + * @see {@link HeadObjectCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link NotFound} (client fault) + *

The specified content does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To retrieve metadata of an object without returning the object itself + * ```javascript + * // The following example retrieves an object metadata. + * const input = { + * Bucket: "examplebucket", + * Key: "HappyFace.jpg" + * }; + * const command = new HeadObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { + * AcceptRanges: "bytes", + * ContentLength: 3191, + * ContentType: "image/jpeg", + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * LastModified: "2016-12-15T01:19:41.000Z", + * Metadata: { /* empty *\/ }, + * VersionId: "null" + * } + * *\/ + * ``` + * + * @public + */ +export declare class HeadObjectCommand extends HeadObjectCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: HeadObjectRequest; + output: HeadObjectOutput; + }; + sdk: { + input: HeadObjectCommandInput; + output: HeadObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketAnalyticsConfigurationsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketAnalyticsConfigurationsCommand.d.ts new file mode 100644 index 0000000..ed5eadf --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketAnalyticsConfigurationsCommand.d.ts @@ -0,0 +1,150 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListBucketAnalyticsConfigurationsOutput, ListBucketAnalyticsConfigurationsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListBucketAnalyticsConfigurationsCommand}. + */ +export interface ListBucketAnalyticsConfigurationsCommandInput extends ListBucketAnalyticsConfigurationsRequest { +} +/** + * @public + * + * The output of {@link ListBucketAnalyticsConfigurationsCommand}. + */ +export interface ListBucketAnalyticsConfigurationsCommandOutput extends ListBucketAnalyticsConfigurationsOutput, __MetadataBearer { +} +declare const ListBucketAnalyticsConfigurationsCommand_base: { + new (input: ListBucketAnalyticsConfigurationsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListBucketAnalyticsConfigurationsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Lists the analytics configurations for the bucket. You can have up to 1,000 analytics configurations + * per bucket.

+ *

This action supports list pagination and does not return more than 100 configurations at a time. You + * should always check the IsTruncated element in the response. If there are no more + * configurations to list, IsTruncated is set to false. If there are more configurations to + * list, IsTruncated is set to true, and there will be a value in + * NextContinuationToken. You use the NextContinuationToken value to continue + * the pagination of the list by passing the value in continuation-token in the request to GET + * the next page.

+ *

To use this operation, you must have permissions to perform the + * s3:GetAnalyticsConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *

For information about Amazon S3 analytics feature, see Amazon S3 Analytics – Storage Class + * Analysis.

+ *

The following operations are related to ListBucketAnalyticsConfigurations:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListBucketAnalyticsConfigurationsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListBucketAnalyticsConfigurationsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListBucketAnalyticsConfigurationsRequest + * Bucket: "STRING_VALUE", // required + * ContinuationToken: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new ListBucketAnalyticsConfigurationsCommand(input); + * const response = await client.send(command); + * // { // ListBucketAnalyticsConfigurationsOutput + * // IsTruncated: true || false, + * // ContinuationToken: "STRING_VALUE", + * // NextContinuationToken: "STRING_VALUE", + * // AnalyticsConfigurationList: [ // AnalyticsConfigurationList + * // { // AnalyticsConfiguration + * // Id: "STRING_VALUE", // required + * // Filter: { // AnalyticsFilter Union: only one key present + * // Prefix: "STRING_VALUE", + * // Tag: { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // And: { // AnalyticsAndOperator + * // Prefix: "STRING_VALUE", + * // Tags: [ // TagSet + * // { + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // }, + * // }, + * // StorageClassAnalysis: { // StorageClassAnalysis + * // DataExport: { // StorageClassAnalysisDataExport + * // OutputSchemaVersion: "V_1", // required + * // Destination: { // AnalyticsExportDestination + * // S3BucketDestination: { // AnalyticsS3BucketDestination + * // Format: "CSV", // required + * // BucketAccountId: "STRING_VALUE", + * // Bucket: "STRING_VALUE", // required + * // Prefix: "STRING_VALUE", + * // }, + * // }, + * // }, + * // }, + * // }, + * // ], + * // }; + * + * ``` + * + * @param ListBucketAnalyticsConfigurationsCommandInput - {@link ListBucketAnalyticsConfigurationsCommandInput} + * @returns {@link ListBucketAnalyticsConfigurationsCommandOutput} + * @see {@link ListBucketAnalyticsConfigurationsCommandInput} for command's `input` shape. + * @see {@link ListBucketAnalyticsConfigurationsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class ListBucketAnalyticsConfigurationsCommand extends ListBucketAnalyticsConfigurationsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListBucketAnalyticsConfigurationsRequest; + output: ListBucketAnalyticsConfigurationsOutput; + }; + sdk: { + input: ListBucketAnalyticsConfigurationsCommandInput; + output: ListBucketAnalyticsConfigurationsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts new file mode 100644 index 0000000..9427357 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts @@ -0,0 +1,133 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListBucketIntelligentTieringConfigurationsOutput, ListBucketIntelligentTieringConfigurationsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListBucketIntelligentTieringConfigurationsCommand}. + */ +export interface ListBucketIntelligentTieringConfigurationsCommandInput extends ListBucketIntelligentTieringConfigurationsRequest { +} +/** + * @public + * + * The output of {@link ListBucketIntelligentTieringConfigurationsCommand}. + */ +export interface ListBucketIntelligentTieringConfigurationsCommandOutput extends ListBucketIntelligentTieringConfigurationsOutput, __MetadataBearer { +} +declare const ListBucketIntelligentTieringConfigurationsCommand_base: { + new (input: ListBucketIntelligentTieringConfigurationsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListBucketIntelligentTieringConfigurationsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Lists the S3 Intelligent-Tiering configuration from the specified bucket.

+ *

The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in three low latency and high throughput access tiers. To get the lowest storage cost on data that can be accessed in minutes to hours, you can choose to activate additional archiving capabilities.

+ *

The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not monitored and not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.

+ *

For more information, see Storage class for automatically optimizing frequently and infrequently accessed objects.

+ *

Operations related to ListBucketIntelligentTieringConfigurations include:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListBucketIntelligentTieringConfigurationsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListBucketIntelligentTieringConfigurationsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListBucketIntelligentTieringConfigurationsRequest + * Bucket: "STRING_VALUE", // required + * ContinuationToken: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new ListBucketIntelligentTieringConfigurationsCommand(input); + * const response = await client.send(command); + * // { // ListBucketIntelligentTieringConfigurationsOutput + * // IsTruncated: true || false, + * // ContinuationToken: "STRING_VALUE", + * // NextContinuationToken: "STRING_VALUE", + * // IntelligentTieringConfigurationList: [ // IntelligentTieringConfigurationList + * // { // IntelligentTieringConfiguration + * // Id: "STRING_VALUE", // required + * // Filter: { // IntelligentTieringFilter + * // Prefix: "STRING_VALUE", + * // Tag: { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // And: { // IntelligentTieringAndOperator + * // Prefix: "STRING_VALUE", + * // Tags: [ // TagSet + * // { + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // }, + * // }, + * // Status: "Enabled" || "Disabled", // required + * // Tierings: [ // TieringList // required + * // { // Tiering + * // Days: Number("int"), // required + * // AccessTier: "ARCHIVE_ACCESS" || "DEEP_ARCHIVE_ACCESS", // required + * // }, + * // ], + * // }, + * // ], + * // }; + * + * ``` + * + * @param ListBucketIntelligentTieringConfigurationsCommandInput - {@link ListBucketIntelligentTieringConfigurationsCommandInput} + * @returns {@link ListBucketIntelligentTieringConfigurationsCommandOutput} + * @see {@link ListBucketIntelligentTieringConfigurationsCommandInput} for command's `input` shape. + * @see {@link ListBucketIntelligentTieringConfigurationsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class ListBucketIntelligentTieringConfigurationsCommand extends ListBucketIntelligentTieringConfigurationsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListBucketIntelligentTieringConfigurationsRequest; + output: ListBucketIntelligentTieringConfigurationsOutput; + }; + sdk: { + input: ListBucketIntelligentTieringConfigurationsCommandInput; + output: ListBucketIntelligentTieringConfigurationsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketInventoryConfigurationsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketInventoryConfigurationsCommand.d.ts new file mode 100644 index 0000000..b93d83b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketInventoryConfigurationsCommand.d.ts @@ -0,0 +1,145 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListBucketInventoryConfigurationsOutput, ListBucketInventoryConfigurationsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListBucketInventoryConfigurationsCommand}. + */ +export interface ListBucketInventoryConfigurationsCommandInput extends ListBucketInventoryConfigurationsRequest { +} +/** + * @public + * + * The output of {@link ListBucketInventoryConfigurationsCommand}. + */ +export interface ListBucketInventoryConfigurationsCommandOutput extends ListBucketInventoryConfigurationsOutput, __MetadataBearer { +} +declare const ListBucketInventoryConfigurationsCommand_base: { + new (input: ListBucketInventoryConfigurationsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListBucketInventoryConfigurationsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns a list of S3 Inventory configurations for the bucket. You can have up to 1,000 inventory + * configurations per bucket.

+ *

This action supports list pagination and does not return more than 100 configurations at a time. + * Always check the IsTruncated element in the response. If there are no more configurations + * to list, IsTruncated is set to false. If there are more configurations to list, + * IsTruncated is set to true, and there is a value in NextContinuationToken. + * You use the NextContinuationToken value to continue the pagination of the list by passing + * the value in continuation-token in the request to GET the next page.

+ *

To use this operation, you must have permissions to perform the + * s3:GetInventoryConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *

For information about the Amazon S3 inventory feature, see Amazon S3 Inventory + *

+ *

The following operations are related to ListBucketInventoryConfigurations:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListBucketInventoryConfigurationsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListBucketInventoryConfigurationsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListBucketInventoryConfigurationsRequest + * Bucket: "STRING_VALUE", // required + * ContinuationToken: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new ListBucketInventoryConfigurationsCommand(input); + * const response = await client.send(command); + * // { // ListBucketInventoryConfigurationsOutput + * // ContinuationToken: "STRING_VALUE", + * // InventoryConfigurationList: [ // InventoryConfigurationList + * // { // InventoryConfiguration + * // Destination: { // InventoryDestination + * // S3BucketDestination: { // InventoryS3BucketDestination + * // AccountId: "STRING_VALUE", + * // Bucket: "STRING_VALUE", // required + * // Format: "CSV" || "ORC" || "Parquet", // required + * // Prefix: "STRING_VALUE", + * // Encryption: { // InventoryEncryption + * // SSES3: {}, + * // SSEKMS: { // SSEKMS + * // KeyId: "STRING_VALUE", // required + * // }, + * // }, + * // }, + * // }, + * // IsEnabled: true || false, // required + * // Filter: { // InventoryFilter + * // Prefix: "STRING_VALUE", // required + * // }, + * // Id: "STRING_VALUE", // required + * // IncludedObjectVersions: "All" || "Current", // required + * // OptionalFields: [ // InventoryOptionalFields + * // "Size" || "LastModifiedDate" || "StorageClass" || "ETag" || "IsMultipartUploaded" || "ReplicationStatus" || "EncryptionStatus" || "ObjectLockRetainUntilDate" || "ObjectLockMode" || "ObjectLockLegalHoldStatus" || "IntelligentTieringAccessTier" || "BucketKeyStatus" || "ChecksumAlgorithm" || "ObjectAccessControlList" || "ObjectOwner" || "LifecycleExpirationDate", + * // ], + * // Schedule: { // InventorySchedule + * // Frequency: "Daily" || "Weekly", // required + * // }, + * // }, + * // ], + * // IsTruncated: true || false, + * // NextContinuationToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param ListBucketInventoryConfigurationsCommandInput - {@link ListBucketInventoryConfigurationsCommandInput} + * @returns {@link ListBucketInventoryConfigurationsCommandOutput} + * @see {@link ListBucketInventoryConfigurationsCommandInput} for command's `input` shape. + * @see {@link ListBucketInventoryConfigurationsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class ListBucketInventoryConfigurationsCommand extends ListBucketInventoryConfigurationsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListBucketInventoryConfigurationsRequest; + output: ListBucketInventoryConfigurationsOutput; + }; + sdk: { + input: ListBucketInventoryConfigurationsCommandInput; + output: ListBucketInventoryConfigurationsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketMetricsConfigurationsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketMetricsConfigurationsCommand.d.ts new file mode 100644 index 0000000..9f517ac --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketMetricsConfigurationsCommand.d.ts @@ -0,0 +1,170 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListBucketMetricsConfigurationsOutput, ListBucketMetricsConfigurationsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListBucketMetricsConfigurationsCommand}. + */ +export interface ListBucketMetricsConfigurationsCommandInput extends ListBucketMetricsConfigurationsRequest { +} +/** + * @public + * + * The output of {@link ListBucketMetricsConfigurationsCommand}. + */ +export interface ListBucketMetricsConfigurationsCommandOutput extends ListBucketMetricsConfigurationsOutput, __MetadataBearer { +} +declare const ListBucketMetricsConfigurationsCommand_base: { + new (input: ListBucketMetricsConfigurationsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListBucketMetricsConfigurationsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Lists the metrics configurations for the bucket. The metrics configurations are only for the request + * metrics of the bucket and do not provide information on daily storage metrics. You can have up to 1,000 + * configurations per bucket.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *

This action supports list pagination and does not return more than 100 configurations at a time. + * Always check the IsTruncated element in the response. If there are no more configurations + * to list, IsTruncated is set to false. If there are more configurations to list, + * IsTruncated is set to true, and there is a value in NextContinuationToken. + * You use the NextContinuationToken value to continue the pagination of the list by passing + * the value in continuation-token in the request to GET the next page.

+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have permissions to perform the + * s3:GetMetricsConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:GetMetricsConfiguration permission is required in a policy. For more information + * about general purpose buckets permissions, see Using Bucket Policies and User + * Policies in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:GetMetricsConfiguration permission in + * an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

For more information about metrics configurations and CloudWatch request metrics, see Monitoring Metrics with + * Amazon CloudWatch.

+ *

The following operations are related to ListBucketMetricsConfigurations:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListBucketMetricsConfigurationsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListBucketMetricsConfigurationsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListBucketMetricsConfigurationsRequest + * Bucket: "STRING_VALUE", // required + * ContinuationToken: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new ListBucketMetricsConfigurationsCommand(input); + * const response = await client.send(command); + * // { // ListBucketMetricsConfigurationsOutput + * // IsTruncated: true || false, + * // ContinuationToken: "STRING_VALUE", + * // NextContinuationToken: "STRING_VALUE", + * // MetricsConfigurationList: [ // MetricsConfigurationList + * // { // MetricsConfiguration + * // Id: "STRING_VALUE", // required + * // Filter: { // MetricsFilter Union: only one key present + * // Prefix: "STRING_VALUE", + * // Tag: { // Tag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // AccessPointArn: "STRING_VALUE", + * // And: { // MetricsAndOperator + * // Prefix: "STRING_VALUE", + * // Tags: [ // TagSet + * // { + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // AccessPointArn: "STRING_VALUE", + * // }, + * // }, + * // }, + * // ], + * // }; + * + * ``` + * + * @param ListBucketMetricsConfigurationsCommandInput - {@link ListBucketMetricsConfigurationsCommandInput} + * @returns {@link ListBucketMetricsConfigurationsCommandOutput} + * @see {@link ListBucketMetricsConfigurationsCommandInput} for command's `input` shape. + * @see {@link ListBucketMetricsConfigurationsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class ListBucketMetricsConfigurationsCommand extends ListBucketMetricsConfigurationsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListBucketMetricsConfigurationsRequest; + output: ListBucketMetricsConfigurationsOutput; + }; + sdk: { + input: ListBucketMetricsConfigurationsCommandInput; + output: ListBucketMetricsConfigurationsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketsCommand.d.ts new file mode 100644 index 0000000..48f6f11 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketsCommand.d.ts @@ -0,0 +1,137 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListBucketsOutput, ListBucketsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListBucketsCommand}. + */ +export interface ListBucketsCommandInput extends ListBucketsRequest { +} +/** + * @public + * + * The output of {@link ListBucketsCommand}. + */ +export interface ListBucketsCommandOutput extends ListBucketsOutput, __MetadataBearer { +} +declare const ListBucketsCommand_base: { + new (input: ListBucketsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (...[input]: [] | [ListBucketsCommandInput]): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns a list of all buckets owned by the authenticated sender of the request. To grant IAM + * permission to use this operation, you must add the s3:ListAllMyBuckets policy action.

+ *

For information about Amazon S3 buckets, see Creating, configuring, and working with Amazon S3 + * buckets.

+ * + *

We strongly recommend using only paginated ListBuckets requests. Unpaginated + * ListBuckets requests are only supported for Amazon Web Services accounts set to the default general + * purpose bucket quota of 10,000. If you have an approved general purpose bucket quota above 10,000, you + * must send paginated ListBuckets requests to list your account’s buckets. All unpaginated + * ListBuckets requests will be rejected for Amazon Web Services accounts with a general purpose bucket + * quota greater than 10,000.

+ *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListBucketsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListBucketsRequest + * MaxBuckets: Number("int"), + * ContinuationToken: "STRING_VALUE", + * Prefix: "STRING_VALUE", + * BucketRegion: "STRING_VALUE", + * }; + * const command = new ListBucketsCommand(input); + * const response = await client.send(command); + * // { // ListBucketsOutput + * // Buckets: [ // Buckets + * // { // Bucket + * // Name: "STRING_VALUE", + * // CreationDate: new Date("TIMESTAMP"), + * // BucketRegion: "STRING_VALUE", + * // BucketArn: "STRING_VALUE", + * // }, + * // ], + * // Owner: { // Owner + * // DisplayName: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // }, + * // ContinuationToken: "STRING_VALUE", + * // Prefix: "STRING_VALUE", + * // }; + * + * ``` + * + * @param ListBucketsCommandInput - {@link ListBucketsCommandInput} + * @returns {@link ListBucketsCommandOutput} + * @see {@link ListBucketsCommandInput} for command's `input` shape. + * @see {@link ListBucketsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To list all buckets + * ```javascript + * // The following example returns all the buckets owned by the sender of this request. + * const input = { /* empty *\/ }; + * const command = new ListBucketsCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Buckets: [ + * { + * CreationDate: "2012-02-15T21:03:02.000Z", + * Name: "examplebucket" + * }, + * { + * CreationDate: "2011-07-24T19:33:50.000Z", + * Name: "examplebucket2" + * }, + * { + * CreationDate: "2010-12-17T00:56:49.000Z", + * Name: "examplebucket3" + * } + * ], + * Owner: { + * DisplayName: "own-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31" + * } + * } + * *\/ + * ``` + * + * @public + */ +export declare class ListBucketsCommand extends ListBucketsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListBucketsRequest; + output: ListBucketsOutput; + }; + sdk: { + input: ListBucketsCommandInput; + output: ListBucketsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListDirectoryBucketsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListDirectoryBucketsCommand.d.ts new file mode 100644 index 0000000..c9baa0f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListDirectoryBucketsCommand.d.ts @@ -0,0 +1,114 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListDirectoryBucketsOutput, ListDirectoryBucketsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListDirectoryBucketsCommand}. + */ +export interface ListDirectoryBucketsCommandInput extends ListDirectoryBucketsRequest { +} +/** + * @public + * + * The output of {@link ListDirectoryBucketsCommand}. + */ +export interface ListDirectoryBucketsCommandOutput extends ListDirectoryBucketsOutput, __MetadataBearer { +} +declare const ListDirectoryBucketsCommand_base: { + new (input: ListDirectoryBucketsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (...[input]: [] | [ListDirectoryBucketsCommandInput]): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns a list of all Amazon S3 directory buckets owned by the authenticated sender of the request. For + * more information about directory buckets, see Directory buckets in the + * Amazon S3 User Guide.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *

You must have the s3express:ListAllMyDirectoryBuckets permission in + * an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * s3express-control.region.amazonaws.com.

+ *
+ *
+ * + *

The BucketRegion response element is not part of the + * ListDirectoryBuckets Response Syntax.

+ *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListDirectoryBucketsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListDirectoryBucketsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListDirectoryBucketsRequest + * ContinuationToken: "STRING_VALUE", + * MaxDirectoryBuckets: Number("int"), + * }; + * const command = new ListDirectoryBucketsCommand(input); + * const response = await client.send(command); + * // { // ListDirectoryBucketsOutput + * // Buckets: [ // Buckets + * // { // Bucket + * // Name: "STRING_VALUE", + * // CreationDate: new Date("TIMESTAMP"), + * // BucketRegion: "STRING_VALUE", + * // BucketArn: "STRING_VALUE", + * // }, + * // ], + * // ContinuationToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param ListDirectoryBucketsCommandInput - {@link ListDirectoryBucketsCommandInput} + * @returns {@link ListDirectoryBucketsCommandOutput} + * @see {@link ListDirectoryBucketsCommandInput} for command's `input` shape. + * @see {@link ListDirectoryBucketsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class ListDirectoryBucketsCommand extends ListDirectoryBucketsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListDirectoryBucketsRequest; + output: ListDirectoryBucketsOutput; + }; + sdk: { + input: ListDirectoryBucketsCommandInput; + output: ListDirectoryBucketsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListMultipartUploadsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListMultipartUploadsCommand.d.ts new file mode 100644 index 0000000..5a84f46 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListMultipartUploadsCommand.d.ts @@ -0,0 +1,341 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListMultipartUploadsOutput, ListMultipartUploadsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListMultipartUploadsCommand}. + */ +export interface ListMultipartUploadsCommandInput extends ListMultipartUploadsRequest { +} +/** + * @public + * + * The output of {@link ListMultipartUploadsCommand}. + */ +export interface ListMultipartUploadsCommandOutput extends ListMultipartUploadsOutput, __MetadataBearer { +} +declare const ListMultipartUploadsCommand_base: { + new (input: ListMultipartUploadsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListMultipartUploadsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

This operation lists in-progress multipart uploads in a bucket. An in-progress multipart upload is a + * multipart upload that has been initiated by the CreateMultipartUpload request, but has not + * yet been completed or aborted.

+ * + *

+ * Directory buckets - If multipart uploads in a + * directory bucket are in progress, you can't delete the bucket until all the in-progress multipart + * uploads are aborted or completed. To delete these in-progress multipart uploads, use the + * ListMultipartUploads operation to list the in-progress multipart uploads in the bucket + * and use the AbortMultipartUpload operation to abort all the in-progress multipart + * uploads.

+ *
+ *

The ListMultipartUploads operation returns a maximum of 1,000 multipart uploads in the + * response. The limit of 1,000 multipart uploads is also the default value. You can further limit the + * number of uploads in a response by specifying the max-uploads request parameter. If there + * are more than 1,000 multipart uploads that satisfy your ListMultipartUploads request, the + * response returns an IsTruncated element with the value of true, a + * NextKeyMarker element, and a NextUploadIdMarker element. To list the + * remaining multipart uploads, you need to make subsequent ListMultipartUploads requests. In + * these requests, include two query parameters: key-marker and upload-id-marker. + * Set the value of key-marker to the NextKeyMarker value from the previous + * response. Similarly, set the value of upload-id-marker to the + * NextUploadIdMarker value from the previous response.

+ * + *

+ * Directory buckets - The upload-id-marker + * element and the NextUploadIdMarker element aren't supported by directory buckets. To + * list the additional multipart uploads, you only need to set the value of key-marker to + * the NextKeyMarker value from the previous response.

+ *
+ *

For more information about multipart uploads, see Uploading Objects Using Multipart Upload in + * the Amazon S3 User Guide.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - For information + * about permissions required to use the multipart upload API, see Multipart Upload and Permissions in + * the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *
  • + *
+ *
+ *
Sorting of multipart uploads in response
+ *
+ *
    + *
  • + *

    + * General purpose bucket - In the + * ListMultipartUploads response, the multipart uploads are sorted based on two + * criteria:

    + *
      + *
    • + *

      Key-based sorting - Multipart uploads are initially sorted in ascending order + * based on their object keys.

      + *
    • + *
    • + *

      Time-based sorting - For uploads that share the same object key, they are + * further sorted in ascending order based on the upload initiation time. Among uploads with + * the same key, the one that was initiated first will appear before the ones that were + * initiated later.

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket - In the + * ListMultipartUploads response, the multipart uploads aren't sorted + * lexicographically based on the object keys. + * + *

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to ListMultipartUploads:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListMultipartUploadsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListMultipartUploadsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListMultipartUploadsRequest + * Bucket: "STRING_VALUE", // required + * Delimiter: "STRING_VALUE", + * EncodingType: "url", + * KeyMarker: "STRING_VALUE", + * MaxUploads: Number("int"), + * Prefix: "STRING_VALUE", + * UploadIdMarker: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * RequestPayer: "requester", + * }; + * const command = new ListMultipartUploadsCommand(input); + * const response = await client.send(command); + * // { // ListMultipartUploadsOutput + * // Bucket: "STRING_VALUE", + * // KeyMarker: "STRING_VALUE", + * // UploadIdMarker: "STRING_VALUE", + * // NextKeyMarker: "STRING_VALUE", + * // Prefix: "STRING_VALUE", + * // Delimiter: "STRING_VALUE", + * // NextUploadIdMarker: "STRING_VALUE", + * // MaxUploads: Number("int"), + * // IsTruncated: true || false, + * // Uploads: [ // MultipartUploadList + * // { // MultipartUpload + * // UploadId: "STRING_VALUE", + * // Key: "STRING_VALUE", + * // Initiated: new Date("TIMESTAMP"), + * // StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * // Owner: { // Owner + * // DisplayName: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // }, + * // Initiator: { // Initiator + * // ID: "STRING_VALUE", + * // DisplayName: "STRING_VALUE", + * // }, + * // ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // }, + * // ], + * // CommonPrefixes: [ // CommonPrefixList + * // { // CommonPrefix + * // Prefix: "STRING_VALUE", + * // }, + * // ], + * // EncodingType: "url", + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param ListMultipartUploadsCommandInput - {@link ListMultipartUploadsCommandInput} + * @returns {@link ListMultipartUploadsCommandOutput} + * @see {@link ListMultipartUploadsCommandInput} for command's `input` shape. + * @see {@link ListMultipartUploadsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example List next set of multipart uploads when previous result is truncated + * ```javascript + * // The following example specifies the upload-id-marker and key-marker from previous truncated response to retrieve next setup of multipart uploads. + * const input = { + * Bucket: "examplebucket", + * KeyMarker: "nextkeyfrompreviousresponse", + * MaxUploads: 2, + * UploadIdMarker: "valuefrompreviousresponse" + * }; + * const command = new ListMultipartUploadsCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Bucket: "acl1", + * IsTruncated: true, + * KeyMarker: "", + * MaxUploads: 2, + * NextKeyMarker: "someobjectkey", + * NextUploadIdMarker: "examplelo91lv1iwvWpvCiJWugw2xXLPAD7Z8cJyX9.WiIRgNrdG6Ldsn.9FtS63TCl1Uf5faTB.1U5Ckcbmdw--", + * UploadIdMarker: "", + * Uploads: [ + * { + * Initiated: "2014-05-01T05:40:58.000Z", + * Initiator: { + * DisplayName: "ownder-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Key: "JavaFile", + * Owner: { + * DisplayName: "mohanataws", + * ID: "852b113e7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * StorageClass: "STANDARD", + * UploadId: "gZ30jIqlUa.CInXklLQtSMJITdUnoZ1Y5GACB5UckOtspm5zbDMCkPF_qkfZzMiFZ6dksmcnqxJyIBvQMG9X9Q--" + * }, + * { + * Initiated: "2014-05-01T05:41:27.000Z", + * Initiator: { + * DisplayName: "ownder-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Key: "JavaFile", + * Owner: { + * DisplayName: "ownder-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * StorageClass: "STANDARD", + * UploadId: "b7tZSqIlo91lv1iwvWpvCiJWugw2xXLPAD7Z8cJyX9.WiIRgNrdG6Ldsn.9FtS63TCl1Uf5faTB.1U5Ckcbmdw--" + * } + * ] + * } + * *\/ + * ``` + * + * @example To list in-progress multipart uploads on a bucket + * ```javascript + * // The following example lists in-progress multipart uploads on a specific bucket. + * const input = { + * Bucket: "examplebucket" + * }; + * const command = new ListMultipartUploadsCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Uploads: [ + * { + * Initiated: "2014-05-01T05:40:58.000Z", + * Initiator: { + * DisplayName: "display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Key: "JavaFile", + * Owner: { + * DisplayName: "display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * StorageClass: "STANDARD", + * UploadId: "examplelUa.CInXklLQtSMJITdUnoZ1Y5GACB5UckOtspm5zbDMCkPF_qkfZzMiFZ6dksmcnqxJyIBvQMG9X9Q--" + * }, + * { + * Initiated: "2014-05-01T05:41:27.000Z", + * Initiator: { + * DisplayName: "display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Key: "JavaFile", + * Owner: { + * DisplayName: "display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * StorageClass: "STANDARD", + * UploadId: "examplelo91lv1iwvWpvCiJWugw2xXLPAD7Z8cJyX9.WiIRgNrdG6Ldsn.9FtS63TCl1Uf5faTB.1U5Ckcbmdw--" + * } + * ] + * } + * *\/ + * ``` + * + * @public + */ +export declare class ListMultipartUploadsCommand extends ListMultipartUploadsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListMultipartUploadsRequest; + output: ListMultipartUploadsOutput; + }; + sdk: { + input: ListMultipartUploadsCommandInput; + output: ListMultipartUploadsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectVersionsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectVersionsCommand.d.ts new file mode 100644 index 0000000..cd93ad0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectVersionsCommand.d.ts @@ -0,0 +1,217 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListObjectVersionsOutput, ListObjectVersionsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListObjectVersionsCommand}. + */ +export interface ListObjectVersionsCommandInput extends ListObjectVersionsRequest { +} +/** + * @public + * + * The output of {@link ListObjectVersionsCommand}. + */ +export interface ListObjectVersionsCommandOutput extends ListObjectVersionsOutput, __MetadataBearer { +} +declare const ListObjectVersionsCommand_base: { + new (input: ListObjectVersionsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListObjectVersionsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns metadata about all versions of the objects in a bucket. You can also use request parameters + * as selection criteria to return metadata about a subset of all the object versions.

+ * + *

To use this operation, you must have permission to perform the s3:ListBucketVersions + * action. Be aware of the name difference.

+ *
+ * + *

A 200 OK response can contain valid or invalid XML. Make sure to design your + * application to parse the contents of the response and handle it appropriately.

+ *
+ *

To use this operation, you must have READ access to the bucket.

+ *

The following operations are related to ListObjectVersions:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListObjectVersionsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListObjectVersionsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListObjectVersionsRequest + * Bucket: "STRING_VALUE", // required + * Delimiter: "STRING_VALUE", + * EncodingType: "url", + * KeyMarker: "STRING_VALUE", + * MaxKeys: Number("int"), + * Prefix: "STRING_VALUE", + * VersionIdMarker: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * RequestPayer: "requester", + * OptionalObjectAttributes: [ // OptionalObjectAttributesList + * "RestoreStatus", + * ], + * }; + * const command = new ListObjectVersionsCommand(input); + * const response = await client.send(command); + * // { // ListObjectVersionsOutput + * // IsTruncated: true || false, + * // KeyMarker: "STRING_VALUE", + * // VersionIdMarker: "STRING_VALUE", + * // NextKeyMarker: "STRING_VALUE", + * // NextVersionIdMarker: "STRING_VALUE", + * // Versions: [ // ObjectVersionList + * // { // ObjectVersion + * // ETag: "STRING_VALUE", + * // ChecksumAlgorithm: [ // ChecksumAlgorithmList + * // "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * // ], + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // Size: Number("long"), + * // StorageClass: "STANDARD", + * // Key: "STRING_VALUE", + * // VersionId: "STRING_VALUE", + * // IsLatest: true || false, + * // LastModified: new Date("TIMESTAMP"), + * // Owner: { // Owner + * // DisplayName: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // }, + * // RestoreStatus: { // RestoreStatus + * // IsRestoreInProgress: true || false, + * // RestoreExpiryDate: new Date("TIMESTAMP"), + * // }, + * // }, + * // ], + * // DeleteMarkers: [ // DeleteMarkers + * // { // DeleteMarkerEntry + * // Owner: { + * // DisplayName: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // }, + * // Key: "STRING_VALUE", + * // VersionId: "STRING_VALUE", + * // IsLatest: true || false, + * // LastModified: new Date("TIMESTAMP"), + * // }, + * // ], + * // Name: "STRING_VALUE", + * // Prefix: "STRING_VALUE", + * // Delimiter: "STRING_VALUE", + * // MaxKeys: Number("int"), + * // CommonPrefixes: [ // CommonPrefixList + * // { // CommonPrefix + * // Prefix: "STRING_VALUE", + * // }, + * // ], + * // EncodingType: "url", + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param ListObjectVersionsCommandInput - {@link ListObjectVersionsCommandInput} + * @returns {@link ListObjectVersionsCommandOutput} + * @see {@link ListObjectVersionsCommandInput} for command's `input` shape. + * @see {@link ListObjectVersionsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To list object versions + * ```javascript + * // The following example returns versions of an object with specific key name prefix. + * const input = { + * Bucket: "examplebucket", + * Prefix: "HappyFace.jpg" + * }; + * const command = new ListObjectVersionsCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Versions: [ + * { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * IsLatest: true, + * Key: "HappyFace.jpg", + * LastModified: "2016-12-15T01:19:41.000Z", + * Owner: { + * DisplayName: "owner-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Size: 3191, + * StorageClass: "STANDARD", + * VersionId: "null" + * }, + * { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * IsLatest: false, + * Key: "HappyFace.jpg", + * LastModified: "2016-12-13T00:58:26.000Z", + * Owner: { + * DisplayName: "owner-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Size: 3191, + * StorageClass: "STANDARD", + * VersionId: "PHtexPGjH2y.zBgT8LmB7wwLI2mpbz.k" + * } + * ] + * } + * *\/ + * ``` + * + * @public + */ +export declare class ListObjectVersionsCommand extends ListObjectVersionsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListObjectVersionsRequest; + output: ListObjectVersionsOutput; + }; + sdk: { + input: ListObjectVersionsCommandInput; + output: ListObjectVersionsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsCommand.d.ts new file mode 100644 index 0000000..b406c99 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsCommand.d.ts @@ -0,0 +1,203 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListObjectsOutput, ListObjectsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListObjectsCommand}. + */ +export interface ListObjectsCommandInput extends ListObjectsRequest { +} +/** + * @public + * + * The output of {@link ListObjectsCommand}. + */ +export interface ListObjectsCommandOutput extends ListObjectsOutput, __MetadataBearer { +} +declare const ListObjectsCommand_base: { + new (input: ListObjectsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListObjectsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Returns some or all (up to 1,000) of the objects in a bucket. You can use the request parameters as + * selection criteria to return a subset of the objects in a bucket. A 200 OK response can contain valid or + * invalid XML. Be sure to design your application to parse the contents of the response and handle it + * appropriately.

+ * + *

This action has been revised. We recommend that you use the newer version, ListObjectsV2, when + * developing applications. For backward compatibility, Amazon S3 continues to support + * ListObjects.

+ *
+ *

The following operations are related to ListObjects:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListObjectsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListObjectsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListObjectsRequest + * Bucket: "STRING_VALUE", // required + * Delimiter: "STRING_VALUE", + * EncodingType: "url", + * Marker: "STRING_VALUE", + * MaxKeys: Number("int"), + * Prefix: "STRING_VALUE", + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * OptionalObjectAttributes: [ // OptionalObjectAttributesList + * "RestoreStatus", + * ], + * }; + * const command = new ListObjectsCommand(input); + * const response = await client.send(command); + * // { // ListObjectsOutput + * // IsTruncated: true || false, + * // Marker: "STRING_VALUE", + * // NextMarker: "STRING_VALUE", + * // Contents: [ // ObjectList + * // { // Object + * // Key: "STRING_VALUE", + * // LastModified: new Date("TIMESTAMP"), + * // ETag: "STRING_VALUE", + * // ChecksumAlgorithm: [ // ChecksumAlgorithmList + * // "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * // ], + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // Size: Number("long"), + * // StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "GLACIER" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * // Owner: { // Owner + * // DisplayName: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // }, + * // RestoreStatus: { // RestoreStatus + * // IsRestoreInProgress: true || false, + * // RestoreExpiryDate: new Date("TIMESTAMP"), + * // }, + * // }, + * // ], + * // Name: "STRING_VALUE", + * // Prefix: "STRING_VALUE", + * // Delimiter: "STRING_VALUE", + * // MaxKeys: Number("int"), + * // CommonPrefixes: [ // CommonPrefixList + * // { // CommonPrefix + * // Prefix: "STRING_VALUE", + * // }, + * // ], + * // EncodingType: "url", + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param ListObjectsCommandInput - {@link ListObjectsCommandInput} + * @returns {@link ListObjectsCommandOutput} + * @see {@link ListObjectsCommandInput} for command's `input` shape. + * @see {@link ListObjectsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link NoSuchBucket} (client fault) + *

The specified bucket does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To list objects in a bucket + * ```javascript + * // The following example list two objects in a bucket. + * const input = { + * Bucket: "examplebucket", + * MaxKeys: 2 + * }; + * const command = new ListObjectsCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Contents: [ + * { + * ETag: `"70ee1738b6b21e2c8a43f3a5ab0eee71"`, + * Key: "example1.jpg", + * LastModified: "2014-11-21T19:40:05.000Z", + * Owner: { + * DisplayName: "myname", + * ID: "12345example25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Size: 11, + * StorageClass: "STANDARD" + * }, + * { + * ETag: `"9c8af9a76df052144598c115ef33e511"`, + * Key: "example2.jpg", + * LastModified: "2013-11-15T01:10:49.000Z", + * Owner: { + * DisplayName: "myname", + * ID: "12345example25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Size: 713193, + * StorageClass: "STANDARD" + * } + * ], + * NextMarker: "eyJNYXJrZXIiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ==" + * } + * *\/ + * ``` + * + * @public + */ +export declare class ListObjectsCommand extends ListObjectsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListObjectsRequest; + output: ListObjectsOutput; + }; + sdk: { + input: ListObjectsCommandInput; + output: ListObjectsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsV2Command.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsV2Command.d.ts new file mode 100644 index 0000000..dc686b0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsV2Command.d.ts @@ -0,0 +1,264 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListObjectsV2Output, ListObjectsV2Request } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListObjectsV2Command}. + */ +export interface ListObjectsV2CommandInput extends ListObjectsV2Request { +} +/** + * @public + * + * The output of {@link ListObjectsV2Command}. + */ +export interface ListObjectsV2CommandOutput extends ListObjectsV2Output, __MetadataBearer { +} +declare const ListObjectsV2Command_base: { + new (input: ListObjectsV2CommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListObjectsV2CommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns some or all (up to 1,000) of the objects in a bucket with each request. You can use the + * request parameters as selection criteria to return a subset of the objects in a bucket. A 200 + * OK response can contain valid or invalid XML. Make sure to design your application to parse the + * contents of the response and handle it appropriately. For more information about listing objects, see + * Listing object + * keys programmatically in the Amazon S3 User Guide. To get a list of your + * buckets, see ListBuckets.

+ * + *
    + *
  • + *

    + * General purpose bucket - For general purpose buckets, + * ListObjectsV2 doesn't return prefixes that are related only to in-progress + * multipart uploads.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, + * ListObjectsV2 response includes the prefixes that are related only to in-progress + * multipart uploads.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - To use this + * operation, you must have READ access to the bucket. You must have permission to perform the + * s3:ListBucket action. The bucket owner has this permission by default and can + * grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access + * Permissions to Your Amazon S3 Resources in the + * Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *
  • + *
+ *
+ *
Sorting order of returned objects
+ *
+ *
    + *
  • + *

    + * General purpose bucket - For general purpose buckets, + * ListObjectsV2 returns objects in lexicographical order based on their key + * names.

    + *
  • + *
  • + *

    + * Directory bucket - For directory buckets, + * ListObjectsV2 does not return objects in lexicographical order.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ * + *

This section describes the latest revision of this action. We recommend that you use this revised + * API operation for application development. For backward compatibility, Amazon S3 continues to support the + * prior version of this API operation, ListObjects.

+ *
+ *

The following operations are related to ListObjectsV2:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListObjectsV2Command } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListObjectsV2Command } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListObjectsV2Request + * Bucket: "STRING_VALUE", // required + * Delimiter: "STRING_VALUE", + * EncodingType: "url", + * MaxKeys: Number("int"), + * Prefix: "STRING_VALUE", + * ContinuationToken: "STRING_VALUE", + * FetchOwner: true || false, + * StartAfter: "STRING_VALUE", + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * OptionalObjectAttributes: [ // OptionalObjectAttributesList + * "RestoreStatus", + * ], + * }; + * const command = new ListObjectsV2Command(input); + * const response = await client.send(command); + * // { // ListObjectsV2Output + * // IsTruncated: true || false, + * // Contents: [ // ObjectList + * // { // Object + * // Key: "STRING_VALUE", + * // LastModified: new Date("TIMESTAMP"), + * // ETag: "STRING_VALUE", + * // ChecksumAlgorithm: [ // ChecksumAlgorithmList + * // "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * // ], + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // Size: Number("long"), + * // StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "GLACIER" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * // Owner: { // Owner + * // DisplayName: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // }, + * // RestoreStatus: { // RestoreStatus + * // IsRestoreInProgress: true || false, + * // RestoreExpiryDate: new Date("TIMESTAMP"), + * // }, + * // }, + * // ], + * // Name: "STRING_VALUE", + * // Prefix: "STRING_VALUE", + * // Delimiter: "STRING_VALUE", + * // MaxKeys: Number("int"), + * // CommonPrefixes: [ // CommonPrefixList + * // { // CommonPrefix + * // Prefix: "STRING_VALUE", + * // }, + * // ], + * // EncodingType: "url", + * // KeyCount: Number("int"), + * // ContinuationToken: "STRING_VALUE", + * // NextContinuationToken: "STRING_VALUE", + * // StartAfter: "STRING_VALUE", + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param ListObjectsV2CommandInput - {@link ListObjectsV2CommandInput} + * @returns {@link ListObjectsV2CommandOutput} + * @see {@link ListObjectsV2CommandInput} for command's `input` shape. + * @see {@link ListObjectsV2CommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link NoSuchBucket} (client fault) + *

The specified bucket does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To get object list + * ```javascript + * // The following example retrieves object list. The request specifies max keys to limit response to include only 2 object keys. + * const input = { + * Bucket: "DOC-EXAMPLE-BUCKET", + * MaxKeys: 2 + * }; + * const command = new ListObjectsV2Command(input); + * const response = await client.send(command); + * /* response is + * { + * Contents: [ + * { + * ETag: `"70ee1738b6b21e2c8a43f3a5ab0eee71"`, + * Key: "happyface.jpg", + * LastModified: "2014-11-21T19:40:05.000Z", + * Size: 11, + * StorageClass: "STANDARD" + * }, + * { + * ETag: `"becf17f89c30367a9a44495d62ed521a-1"`, + * Key: "test.jpg", + * LastModified: "2014-05-02T04:51:50.000Z", + * Size: 4192256, + * StorageClass: "STANDARD" + * } + * ], + * IsTruncated: true, + * KeyCount: 2, + * MaxKeys: 2, + * Name: "DOC-EXAMPLE-BUCKET", + * NextContinuationToken: "1w41l63U0xa8q7smH50vCxyTQqdxo69O3EmK28Bi5PcROI4wI/EyIJg==", + * Prefix: "" + * } + * *\/ + * ``` + * + * @public + */ +export declare class ListObjectsV2Command extends ListObjectsV2Command_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListObjectsV2Request; + output: ListObjectsV2Output; + }; + sdk: { + input: ListObjectsV2CommandInput; + output: ListObjectsV2CommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListPartsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListPartsCommand.d.ts new file mode 100644 index 0000000..1e7ae39 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/ListPartsCommand.d.ts @@ -0,0 +1,242 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { ListPartsOutput, ListPartsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListPartsCommand}. + */ +export interface ListPartsCommandInput extends ListPartsRequest { +} +/** + * @public + * + * The output of {@link ListPartsCommand}. + */ +export interface ListPartsCommandOutput extends ListPartsOutput, __MetadataBearer { +} +declare const ListPartsCommand_base: { + new (input: ListPartsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: ListPartsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Lists the parts that have been uploaded for a specific multipart upload.

+ *

To use this operation, you must provide the upload ID in the request. You obtain this + * uploadID by sending the initiate multipart upload request through CreateMultipartUpload.

+ *

The ListParts request returns a maximum of 1,000 uploaded parts. The limit of 1,000 + * parts is also the default value. You can restrict the number of parts in a response by specifying the + * max-parts request parameter. If your multipart upload consists of more than 1,000 parts, + * the response returns an IsTruncated field with the value of true, and a + * NextPartNumberMarker element. To list remaining uploaded parts, in subsequent + * ListParts requests, include the part-number-marker query string parameter + * and set its value to the NextPartNumberMarker field value from the previous + * response.

+ *

For more information on multipart uploads, see Uploading Objects Using Multipart Upload in + * the Amazon S3 User Guide.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - For information + * about permissions required to use the multipart upload API, see Multipart Upload and Permissions in + * the Amazon S3 User Guide.

    + *

    If the upload was created using server-side encryption with Key Management Service (KMS) keys + * (SSE-KMS) or dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), you must have + * permission to the kms:Decrypt action for the ListParts request to + * succeed.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to ListParts:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, ListPartsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, ListPartsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // ListPartsRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * MaxParts: Number("int"), + * PartNumberMarker: "STRING_VALUE", + * UploadId: "STRING_VALUE", // required + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * }; + * const command = new ListPartsCommand(input); + * const response = await client.send(command); + * // { // ListPartsOutput + * // AbortDate: new Date("TIMESTAMP"), + * // AbortRuleId: "STRING_VALUE", + * // Bucket: "STRING_VALUE", + * // Key: "STRING_VALUE", + * // UploadId: "STRING_VALUE", + * // PartNumberMarker: "STRING_VALUE", + * // NextPartNumberMarker: "STRING_VALUE", + * // MaxParts: Number("int"), + * // IsTruncated: true || false, + * // Parts: [ // Parts + * // { // Part + * // PartNumber: Number("int"), + * // LastModified: new Date("TIMESTAMP"), + * // ETag: "STRING_VALUE", + * // Size: Number("long"), + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // }, + * // ], + * // Initiator: { // Initiator + * // ID: "STRING_VALUE", + * // DisplayName: "STRING_VALUE", + * // }, + * // Owner: { // Owner + * // DisplayName: "STRING_VALUE", + * // ID: "STRING_VALUE", + * // }, + * // StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * // RequestCharged: "requester", + * // ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // }; + * + * ``` + * + * @param ListPartsCommandInput - {@link ListPartsCommandInput} + * @returns {@link ListPartsCommandOutput} + * @see {@link ListPartsCommandInput} for command's `input` shape. + * @see {@link ListPartsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To list parts of a multipart upload. + * ```javascript + * // The following example lists parts uploaded for a specific multipart upload. + * const input = { + * Bucket: "examplebucket", + * Key: "bigobject", + * UploadId: "example7YPBOJuoFiQ9cz4P3Pe6FIZwO4f7wN93uHsNBEw97pl5eNwzExg0LAT2dUN91cOmrEQHDsP3WA60CEg--" + * }; + * const command = new ListPartsCommand(input); + * const response = await client.send(command); + * /* response is + * { + * Initiator: { + * DisplayName: "owner-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Owner: { + * DisplayName: "owner-display-name", + * ID: "examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484be31bebcc" + * }, + * Parts: [ + * { + * ETag: `"d8c2eafd90c266e19ab9dcacc479f8af"`, + * LastModified: "2016-12-16T00:11:42.000Z", + * PartNumber: 1, + * Size: 26246026 + * }, + * { + * ETag: `"d8c2eafd90c266e19ab9dcacc479f8af"`, + * LastModified: "2016-12-16T00:15:01.000Z", + * PartNumber: 2, + * Size: 26246026 + * } + * ], + * StorageClass: "STANDARD" + * } + * *\/ + * ``` + * + * @public + */ +export declare class ListPartsCommand extends ListPartsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: ListPartsRequest; + output: ListPartsOutput; + }; + sdk: { + input: ListPartsCommandInput; + output: ListPartsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAbacCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAbacCommand.d.ts new file mode 100644 index 0000000..879ac12 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAbacCommand.d.ts @@ -0,0 +1,78 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketAbacRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketAbacCommand}. + */ +export interface PutBucketAbacCommandInput extends PutBucketAbacRequest { +} +/** + * @public + * + * The output of {@link PutBucketAbacCommand}. + */ +export interface PutBucketAbacCommandOutput extends __MetadataBearer { +} +declare const PutBucketAbacCommand_base: { + new (input: PutBucketAbacCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketAbacCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Sets the attribute-based access control (ABAC) property of the general purpose bucket. You must have s3:PutBucketABAC permission to perform this action. When you enable ABAC, you can use tags for access control on your buckets. Additionally, when ABAC is enabled, you must use the TagResource and UntagResource actions to manage tags on your buckets. You can nolonger use the PutBucketTagging and DeleteBucketTagging actions to tag your bucket. For more information, see Enabling ABAC in general purpose buckets.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketAbacCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketAbacCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketAbacRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ExpectedBucketOwner: "STRING_VALUE", + * AbacStatus: { // AbacStatus + * Status: "Enabled" || "Disabled", + * }, + * }; + * const command = new PutBucketAbacCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketAbacCommandInput - {@link PutBucketAbacCommandInput} + * @returns {@link PutBucketAbacCommandOutput} + * @see {@link PutBucketAbacCommandInput} for command's `input` shape. + * @see {@link PutBucketAbacCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutBucketAbacCommand extends PutBucketAbacCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketAbacRequest; + output: {}; + }; + sdk: { + input: PutBucketAbacCommandInput; + output: PutBucketAbacCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAccelerateConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAccelerateConfigurationCommand.d.ts new file mode 100644 index 0000000..d514133 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAccelerateConfigurationCommand.d.ts @@ -0,0 +1,117 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketAccelerateConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketAccelerateConfigurationCommand}. + */ +export interface PutBucketAccelerateConfigurationCommandInput extends PutBucketAccelerateConfigurationRequest { +} +/** + * @public + * + * The output of {@link PutBucketAccelerateConfigurationCommand}. + */ +export interface PutBucketAccelerateConfigurationCommandOutput extends __MetadataBearer { +} +declare const PutBucketAccelerateConfigurationCommand_base: { + new (input: PutBucketAccelerateConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketAccelerateConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Sets the accelerate configuration of an existing bucket. Amazon S3 Transfer Acceleration is a + * bucket-level feature that enables you to perform faster data transfers to Amazon S3.

+ *

To use this operation, you must have permission to perform the + * s3:PutAccelerateConfiguration action. The bucket owner has this permission by default. + * The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *

The Transfer Acceleration state of a bucket can be set to one of the following two values:

+ *
    + *
  • + *

    Enabled – Enables accelerated data transfers to the bucket.

    + *
  • + *
  • + *

    Suspended – Disables accelerated data transfers to the bucket.

    + *
  • + *
+ *

The GetBucketAccelerateConfiguration action returns the transfer acceleration state of a + * bucket.

+ *

After setting the Transfer Acceleration state of a bucket to Enabled, it might take up to thirty + * minutes before the data transfer rates to the bucket increase.

+ *

The name of the bucket used for Transfer Acceleration must be DNS-compliant and must not contain + * periods (".").

+ *

For more information about transfer acceleration, see Transfer Acceleration.

+ *

The following operations are related to PutBucketAccelerateConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketAccelerateConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketAccelerateConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketAccelerateConfigurationRequest + * Bucket: "STRING_VALUE", // required + * AccelerateConfiguration: { // AccelerateConfiguration + * Status: "Enabled" || "Suspended", + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * }; + * const command = new PutBucketAccelerateConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketAccelerateConfigurationCommandInput - {@link PutBucketAccelerateConfigurationCommandInput} + * @returns {@link PutBucketAccelerateConfigurationCommandOutput} + * @see {@link PutBucketAccelerateConfigurationCommandInput} for command's `input` shape. + * @see {@link PutBucketAccelerateConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutBucketAccelerateConfigurationCommand extends PutBucketAccelerateConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketAccelerateConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketAccelerateConfigurationCommandInput; + output: PutBucketAccelerateConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAclCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAclCommand.d.ts new file mode 100644 index 0000000..a11e937 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAclCommand.d.ts @@ -0,0 +1,314 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketAclRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketAclCommand}. + */ +export interface PutBucketAclCommandInput extends PutBucketAclRequest { +} +/** + * @public + * + * The output of {@link PutBucketAclCommand}. + */ +export interface PutBucketAclCommandOutput extends __MetadataBearer { +} +declare const PutBucketAclCommand_base: { + new (input: PutBucketAclCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketAclCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

End of support notice: As of October 1, 2025, Amazon S3 has discontinued support for Email Grantee Access Control Lists (ACLs). If you attempt to use an Email Grantee ACL in a request after October 1, 2025, + * the request will receive an HTTP 405 (Method Not Allowed) error.

+ *

This change affects the following Amazon Web Services Regions: US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Europe (Ireland), and South America (São Paulo).

+ *
+ * + *

This operation is not supported for directory buckets.

+ *
+ *

Sets the permissions on an existing bucket using access control lists (ACL). For more information, + * see Using ACLs. To + * set the ACL of a bucket, you must have the WRITE_ACP permission.

+ *

You can use one of the following two ways to set a bucket's permissions:

+ *
    + *
  • + *

    Specify the ACL in the request body

    + *
  • + *
  • + *

    Specify permissions using request headers

    + *
  • + *
+ * + *

You cannot specify access permission using both the body and the request headers.

+ *
+ *

Depending on your application needs, you may choose to set the ACL on a bucket using either the + * request body or the headers. For example, if you have an existing application that updates a bucket ACL + * using the request body, then you can continue to use that approach.

+ * + *

If your bucket uses the bucket owner enforced setting for S3 Object Ownership, ACLs are disabled + * and no longer affect permissions. You must use policies to grant access to your bucket and the objects + * in it. Requests to set ACLs or update ACLs fail and return the + * AccessControlListNotSupported error code. Requests to read ACLs are still supported. + * For more information, see Controlling object ownership in + * the Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *

You can set access permissions by using one of the following methods:

+ *
    + *
  • + *

    Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports a set + * of predefined ACLs, known as canned ACLs. Each canned ACL has a + * predefined set of grantees and permissions. Specify the canned ACL name as the value of + * x-amz-acl. If you use this header, you cannot use other access control-specific + * headers in your request. For more information, see Canned ACL.

    + *
  • + *
  • + *

    Specify access permissions explicitly with the x-amz-grant-read, + * x-amz-grant-read-acp, x-amz-grant-write-acp, and + * x-amz-grant-full-control headers. When using these headers, you specify + * explicit access permissions and grantees (Amazon Web Services accounts or Amazon S3 groups) who will receive the + * permission. If you use these ACL-specific headers, you cannot use the x-amz-acl + * header to set a canned ACL. These parameters map to the set of permissions that Amazon S3 supports + * in an ACL. For more information, see Access Control List (ACL) + * Overview.

    + *

    You specify each grantee as a type=value pair, where the type is one of the + * following:

    + *
      + *
    • + *

      + * id – if the value specified is the canonical user ID of an + * Amazon Web Services account

      + *
    • + *
    • + *

      + * uri – if you are granting permissions to a predefined group

      + *
    • + *
    • + *

      + * emailAddress – if the value specified is the email address of an + * Amazon Web Services account

      + * + *

      Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

      + *
        + *
      • + *

        US East (N. Virginia)

        + *
      • + *
      • + *

        US West (N. California)

        + *
      • + *
      • + *

        US West (Oregon)

        + *
      • + *
      • + *

        Asia Pacific (Singapore)

        + *
      • + *
      • + *

        Asia Pacific (Sydney)

        + *
      • + *
      • + *

        Asia Pacific (Tokyo)

        + *
      • + *
      • + *

        Europe (Ireland)

        + *
      • + *
      • + *

        South America (São Paulo)

        + *
      • + *
      + *

      For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

      + *
      + *
    • + *
    + *

    For example, the following x-amz-grant-write header grants create, overwrite, + * and delete objects permission to LogDelivery group predefined by Amazon S3 and two Amazon Web Services accounts + * identified by their email addresses.

    + *

    + * x-amz-grant-write: uri="http://acs.amazonaws.com/groups/s3/LogDelivery", + * id="111122223333", id="555566667777" + *

    + *
  • + *
+ *

You can use either a canned ACL or specify access permissions explicitly. You cannot do + * both.

+ *
+ *
Grantee Values
+ *
+ *

You can specify the person (grantee) to whom you're assigning access rights (using request + * elements) in the following ways. For examples of how to specify these grantee values in JSON + * format, see the Amazon Web Services CLI example in Enabling Amazon S3 server + * access logging in the Amazon S3 User Guide.

+ *
    + *
  • + *

    By the person's ID:

    + *

    + * <>ID<><>GranteesEmail<> + * + *

    + *

    DisplayName is optional and ignored in the request

    + *
  • + *
  • + *

    By URI:

    + *

    + * <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<> + *

    + *
  • + *
  • + *

    By Email address:

    + *

    + * <>Grantees@email.com<>& + *

    + *

    The grantee is resolved to the CanonicalUser and, in a response to a GET Object acl + * request, appears as the CanonicalUser.

    + * + *

    Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

    + *
      + *
    • + *

      US East (N. Virginia)

      + *
    • + *
    • + *

      US West (N. California)

      + *
    • + *
    • + *

      US West (Oregon)

      + *
    • + *
    • + *

      Asia Pacific (Singapore)

      + *
    • + *
    • + *

      Asia Pacific (Sydney)

      + *
    • + *
    • + *

      Asia Pacific (Tokyo)

      + *
    • + *
    • + *

      Europe (Ireland)

      + *
    • + *
    • + *

      South America (São Paulo)

      + *
    • + *
    + *

    For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

    + *
    + *
  • + *
+ *
+ *
+ *

The following operations are related to PutBucketAcl:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketAclCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketAclCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketAclRequest + * ACL: "private" || "public-read" || "public-read-write" || "authenticated-read", + * AccessControlPolicy: { // AccessControlPolicy + * Grants: [ // Grants + * { // Grant + * Grantee: { // Grantee + * DisplayName: "STRING_VALUE", + * EmailAddress: "STRING_VALUE", + * ID: "STRING_VALUE", + * URI: "STRING_VALUE", + * Type: "CanonicalUser" || "AmazonCustomerByEmail" || "Group", // required + * }, + * Permission: "FULL_CONTROL" || "WRITE" || "WRITE_ACP" || "READ" || "READ_ACP", + * }, + * ], + * Owner: { // Owner + * DisplayName: "STRING_VALUE", + * ID: "STRING_VALUE", + * }, + * }, + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * GrantFullControl: "STRING_VALUE", + * GrantRead: "STRING_VALUE", + * GrantReadACP: "STRING_VALUE", + * GrantWrite: "STRING_VALUE", + * GrantWriteACP: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketAclCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketAclCommandInput - {@link PutBucketAclCommandInput} + * @returns {@link PutBucketAclCommandOutput} + * @see {@link PutBucketAclCommandInput} for command's `input` shape. + * @see {@link PutBucketAclCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Put bucket acl + * ```javascript + * // The following example replaces existing ACL on a bucket. The ACL grants the bucket owner (specified using the owner ID) and write permission to the LogDelivery group. Because this is a replace operation, you must specify all the grants in your request. To incrementally add or remove ACL grants, you might use the console. + * const input = { + * Bucket: "examplebucket", + * GrantFullControl: "id=examplee7a2f25102679df27bb0ae12b3f85be6f290b936c4393484", + * GrantWrite: "uri=http://acs.amazonaws.com/groups/s3/LogDelivery" + * }; + * const command = new PutBucketAclCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketAclCommand extends PutBucketAclCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketAclRequest; + output: {}; + }; + sdk: { + input: PutBucketAclCommandInput; + output: PutBucketAclCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAnalyticsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAnalyticsConfigurationCommand.d.ts new file mode 100644 index 0000000..137b99f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAnalyticsConfigurationCommand.d.ts @@ -0,0 +1,212 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketAnalyticsConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketAnalyticsConfigurationCommand}. + */ +export interface PutBucketAnalyticsConfigurationCommandInput extends PutBucketAnalyticsConfigurationRequest { +} +/** + * @public + * + * The output of {@link PutBucketAnalyticsConfigurationCommand}. + */ +export interface PutBucketAnalyticsConfigurationCommandOutput extends __MetadataBearer { +} +declare const PutBucketAnalyticsConfigurationCommand_base: { + new (input: PutBucketAnalyticsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketAnalyticsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Sets an analytics configuration for the bucket (specified by the analytics configuration ID). You + * can have up to 1,000 analytics configurations per bucket.

+ *

You can choose to have storage class analysis export analysis reports sent to a comma-separated + * values (CSV) flat file. See the DataExport request element. Reports are updated daily and + * are based on the object filters that you configure. When selecting data export, you specify a + * destination bucket and an optional destination prefix where the file is written. You can export the data + * to a destination bucket in a different account. However, the destination bucket must be in the same + * Region as the bucket that you are making the PUT analytics configuration to. For more information, see + * Amazon S3 Analytics – + * Storage Class Analysis.

+ * + *

You must create a bucket policy on the destination bucket where the exported file is written to + * grant permissions to Amazon S3 to write objects to the bucket. For an example policy, see Granting + * Permissions for Amazon S3 Inventory and Storage Class Analysis.

+ *
+ *

To use this operation, you must have permissions to perform the + * s3:PutAnalyticsConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *

+ * PutBucketAnalyticsConfiguration has the following special errors:

+ *
    + *
  • + *
      + *
    • + *

      + * HTTP Error: HTTP 400 Bad Request + *

      + *
    • + *
    • + *

      + * Code: InvalidArgument + *

      + *
    • + *
    • + *

      + * Cause: Invalid argument. + *

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * HTTP Error: HTTP 400 Bad Request + *

      + *
    • + *
    • + *

      + * Code: TooManyConfigurations + *

      + *
    • + *
    • + *

      + * Cause: You are attempting to create a new configuration but have already reached + * the 1,000-configuration limit. + *

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * HTTP Error: HTTP 403 Forbidden + *

      + *
    • + *
    • + *

      + * Code: AccessDenied + *

      + *
    • + *
    • + *

      + * Cause: You are not the owner of the specified bucket, or you do not have the + * s3:PutAnalyticsConfiguration bucket permission to set the configuration on the + * bucket. + *

      + *
    • + *
    + *
  • + *
+ *

The following operations are related to PutBucketAnalyticsConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketAnalyticsConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketAnalyticsConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketAnalyticsConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * AnalyticsConfiguration: { // AnalyticsConfiguration + * Id: "STRING_VALUE", // required + * Filter: { // AnalyticsFilter Union: only one key present + * Prefix: "STRING_VALUE", + * Tag: { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * And: { // AnalyticsAndOperator + * Prefix: "STRING_VALUE", + * Tags: [ // TagSet + * { + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * }, + * }, + * StorageClassAnalysis: { // StorageClassAnalysis + * DataExport: { // StorageClassAnalysisDataExport + * OutputSchemaVersion: "V_1", // required + * Destination: { // AnalyticsExportDestination + * S3BucketDestination: { // AnalyticsS3BucketDestination + * Format: "CSV", // required + * BucketAccountId: "STRING_VALUE", + * Bucket: "STRING_VALUE", // required + * Prefix: "STRING_VALUE", + * }, + * }, + * }, + * }, + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketAnalyticsConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketAnalyticsConfigurationCommandInput - {@link PutBucketAnalyticsConfigurationCommandInput} + * @returns {@link PutBucketAnalyticsConfigurationCommandOutput} + * @see {@link PutBucketAnalyticsConfigurationCommandInput} for command's `input` shape. + * @see {@link PutBucketAnalyticsConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutBucketAnalyticsConfigurationCommand extends PutBucketAnalyticsConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketAnalyticsConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketAnalyticsConfigurationCommandInput; + output: PutBucketAnalyticsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketCorsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketCorsCommand.d.ts new file mode 100644 index 0000000..e856451 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketCorsCommand.d.ts @@ -0,0 +1,197 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketCorsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketCorsCommand}. + */ +export interface PutBucketCorsCommandInput extends PutBucketCorsRequest { +} +/** + * @public + * + * The output of {@link PutBucketCorsCommand}. + */ +export interface PutBucketCorsCommandOutput extends __MetadataBearer { +} +declare const PutBucketCorsCommand_base: { + new (input: PutBucketCorsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketCorsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Sets the cors configuration for your bucket. If the configuration exists, Amazon S3 replaces + * it.

+ *

To use this operation, you must be allowed to perform the s3:PutBucketCORS action. By + * default, the bucket owner has this permission and can grant it to others.

+ *

You set this configuration on a bucket so that the bucket can service cross-origin requests. For + * example, you might want to enable a request whose origin is http://www.example.com to + * access your Amazon S3 bucket at my.example.bucket.com by using the browser's + * XMLHttpRequest capability.

+ *

To enable cross-origin resource sharing (CORS) on a bucket, you add the cors + * subresource to the bucket. The cors subresource is an XML document in which you configure + * rules that identify origins and the HTTP methods that can be executed on your bucket. The document is + * limited to 64 KB in size.

+ *

When Amazon S3 receives a cross-origin request (or a pre-flight OPTIONS request) against a bucket, it + * evaluates the cors configuration on the bucket and uses the first CORSRule + * rule that matches the incoming browser request to enable a cross-origin request. For a rule to match, + * the following conditions must be met:

+ *
    + *
  • + *

    The request's Origin header must match AllowedOrigin elements.

    + *
  • + *
  • + *

    The request method (for example, GET, PUT, HEAD, and so on) or the + * Access-Control-Request-Method header in case of a pre-flight OPTIONS + * request must be one of the AllowedMethod elements.

    + *
  • + *
  • + *

    Every header specified in the Access-Control-Request-Headers request header of a + * pre-flight request must match an AllowedHeader element.

    + *
  • + *
+ *

For more information about CORS, go to Enabling Cross-Origin Resource Sharing in the + * Amazon S3 User Guide.

+ *

The following operations are related to PutBucketCors:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketCorsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketCorsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketCorsRequest + * Bucket: "STRING_VALUE", // required + * CORSConfiguration: { // CORSConfiguration + * CORSRules: [ // CORSRules // required + * { // CORSRule + * ID: "STRING_VALUE", + * AllowedHeaders: [ // AllowedHeaders + * "STRING_VALUE", + * ], + * AllowedMethods: [ // AllowedMethods // required + * "STRING_VALUE", + * ], + * AllowedOrigins: [ // AllowedOrigins // required + * "STRING_VALUE", + * ], + * ExposeHeaders: [ // ExposeHeaders + * "STRING_VALUE", + * ], + * MaxAgeSeconds: Number("int"), + * }, + * ], + * }, + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketCorsCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketCorsCommandInput - {@link PutBucketCorsCommandInput} + * @returns {@link PutBucketCorsCommandOutput} + * @see {@link PutBucketCorsCommandInput} for command's `input` shape. + * @see {@link PutBucketCorsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To set cors configuration on a bucket. + * ```javascript + * // The following example enables PUT, POST, and DELETE requests from www.example.com, and enables GET requests from any domain. + * const input = { + * Bucket: "", + * CORSConfiguration: { + * CORSRules: [ + * { + * AllowedHeaders: [ + * "*" + * ], + * AllowedMethods: [ + * "PUT", + * "POST", + * "DELETE" + * ], + * AllowedOrigins: [ + * "http://www.example.com" + * ], + * ExposeHeaders: [ + * "x-amz-server-side-encryption" + * ], + * MaxAgeSeconds: 3000 + * }, + * { + * AllowedHeaders: [ + * "Authorization" + * ], + * AllowedMethods: [ + * "GET" + * ], + * AllowedOrigins: [ + * "*" + * ], + * MaxAgeSeconds: 3000 + * } + * ] + * }, + * ContentMD5: "" + * }; + * const command = new PutBucketCorsCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketCorsCommand extends PutBucketCorsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketCorsRequest; + output: {}; + }; + sdk: { + input: PutBucketCorsCommandInput; + output: PutBucketCorsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketEncryptionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketEncryptionCommand.d.ts new file mode 100644 index 0000000..6a72eb5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketEncryptionCommand.d.ts @@ -0,0 +1,212 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketEncryptionRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketEncryptionCommand}. + */ +export interface PutBucketEncryptionCommandInput extends PutBucketEncryptionRequest { +} +/** + * @public + * + * The output of {@link PutBucketEncryptionCommand}. + */ +export interface PutBucketEncryptionCommandOutput extends __MetadataBearer { +} +declare const PutBucketEncryptionCommand_base: { + new (input: PutBucketEncryptionCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketEncryptionCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

This operation configures default encryption and Amazon S3 Bucket Keys for an existing bucket. You can also block encryption types using this operation.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *

By default, all buckets have a default encryption configuration that uses server-side encryption + * with Amazon S3 managed keys (SSE-S3).

+ * + *
    + *
  • + *

    + * General purpose buckets + *

    + *
      + *
    • + *

      You can optionally configure default encryption for a bucket by using server-side + * encryption with Key Management Service (KMS) keys (SSE-KMS) or dual-layer server-side encryption with + * Amazon Web Services KMS keys (DSSE-KMS). If you specify default encryption by using SSE-KMS, you can also + * configure Amazon S3 Bucket + * Keys. For information about the bucket default encryption feature, see Amazon S3 Bucket Default + * Encryption in the Amazon S3 User Guide.

      + *
    • + *
    • + *

      If you use PutBucketEncryption to set your default bucket encryption to + * SSE-KMS, you should verify that your KMS key ID is correct. Amazon S3 doesn't validate the + * KMS key ID provided in PutBucketEncryption requests.

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory buckets - You can optionally configure + * default encryption for a bucket by using server-side encryption with Key Management Service (KMS) keys + * (SSE-KMS).

    + *
      + *
    • + *

      We recommend that the bucket's default encryption uses the desired encryption + * configuration and you don't override the bucket default encryption in your + * CreateSession requests or PUT object requests. Then, new objects + * are automatically encrypted with the desired encryption settings. + * For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

      + *
    • + *
    • + *

      Your SSE-KMS configuration can only support 1 customer managed key per directory bucket's lifetime. + * The Amazon Web Services managed key (aws/s3) isn't supported. + *

      + *
    • + *
    • + *

      S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or + * the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

      + *
    • + *
    • + *

      When you specify an KMS customer managed key for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.

      + *
    • + *
    • + *

      For directory buckets, if you use PutBucketEncryption to set your default bucket + * encryption to SSE-KMS, Amazon S3 validates the KMS key ID provided in + * PutBucketEncryption requests.

      + *
    • + *
    + *
  • + *
+ *
+ * + *

If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key + * ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. + * This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and + * not the bucket owner.

+ *

Also, this action requires Amazon Web Services Signature Version 4. For more information, see Authenticating + * Requests (Amazon Web Services Signature Version 4).

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:PutEncryptionConfiguration permission is required in a policy. The bucket + * owner has this permission by default. The bucket owner can grant this permission to others. + * For more information about permissions, see Permissions Related to Bucket Operations and Managing Access Permissions to Your + * Amazon S3 Resources in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:PutEncryptionConfiguration + * permission in an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *

    To set a directory bucket default encryption with SSE-KMS, you must also have the + * kms:GenerateDataKey and the kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the target KMS key.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to PutBucketEncryption:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketEncryptionCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketEncryptionCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketEncryptionRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ServerSideEncryptionConfiguration: { // ServerSideEncryptionConfiguration + * Rules: [ // ServerSideEncryptionRules // required + * { // ServerSideEncryptionRule + * ApplyServerSideEncryptionByDefault: { // ServerSideEncryptionByDefault + * SSEAlgorithm: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", // required + * KMSMasterKeyID: "STRING_VALUE", + * }, + * BucketKeyEnabled: true || false, + * BlockedEncryptionTypes: { // BlockedEncryptionTypes + * EncryptionType: [ // EncryptionTypeList + * "NONE" || "SSE-C", + * ], + * }, + * }, + * ], + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketEncryptionCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketEncryptionCommandInput - {@link PutBucketEncryptionCommandInput} + * @returns {@link PutBucketEncryptionCommandOutput} + * @see {@link PutBucketEncryptionCommandInput} for command's `input` shape. + * @see {@link PutBucketEncryptionCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutBucketEncryptionCommand extends PutBucketEncryptionCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketEncryptionRequest; + output: {}; + }; + sdk: { + input: PutBucketEncryptionCommandInput; + output: PutBucketEncryptionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts new file mode 100644 index 0000000..c5e6ebd --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts @@ -0,0 +1,159 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketIntelligentTieringConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketIntelligentTieringConfigurationCommand}. + */ +export interface PutBucketIntelligentTieringConfigurationCommandInput extends PutBucketIntelligentTieringConfigurationRequest { +} +/** + * @public + * + * The output of {@link PutBucketIntelligentTieringConfigurationCommand}. + */ +export interface PutBucketIntelligentTieringConfigurationCommandOutput extends __MetadataBearer { +} +declare const PutBucketIntelligentTieringConfigurationCommand_base: { + new (input: PutBucketIntelligentTieringConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketIntelligentTieringConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Puts a S3 Intelligent-Tiering configuration to the specified bucket. You can have up to 1,000 + * S3 Intelligent-Tiering configurations per bucket.

+ *

The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically moving data to the most cost-effective storage access tier, without performance impact or operational overhead. S3 Intelligent-Tiering delivers automatic cost savings in three low latency and high throughput access tiers. To get the lowest storage cost on data that can be accessed in minutes to hours, you can choose to activate additional archiving capabilities.

+ *

The S3 Intelligent-Tiering storage class is the ideal storage class for data with unknown, changing, or unpredictable access patterns, independent of object size or retention period. If the size of an object is less than 128 KB, it is not monitored and not eligible for auto-tiering. Smaller objects can be stored, but they are always charged at the Frequent Access tier rates in the S3 Intelligent-Tiering storage class.

+ *

For more information, see Storage class for automatically optimizing frequently and infrequently accessed objects.

+ *

Operations related to PutBucketIntelligentTieringConfiguration include:

+ * + * + *

You only need S3 Intelligent-Tiering enabled on a bucket if you want to automatically move objects + * stored in the S3 Intelligent-Tiering storage class to the Archive Access or Deep Archive Access + * tier.

+ *
+ *

+ * PutBucketIntelligentTieringConfiguration has the following special errors:

+ *
+ *
HTTP 400 Bad Request Error
+ *
+ *

+ * Code: InvalidArgument

+ *

+ * Cause: Invalid Argument

+ *
+ *
HTTP 400 Bad Request Error
+ *
+ *

+ * Code: TooManyConfigurations

+ *

+ * Cause: You are attempting to create a new configuration but have already + * reached the 1,000-configuration limit.

+ *
+ *
HTTP 403 Forbidden Error
+ *
+ *

+ * Cause: You are not the owner of the specified bucket, or you do not have + * the s3:PutIntelligentTieringConfiguration bucket permission to set the configuration + * on the bucket.

+ *
+ *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketIntelligentTieringConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketIntelligentTieringConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketIntelligentTieringConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * IntelligentTieringConfiguration: { // IntelligentTieringConfiguration + * Id: "STRING_VALUE", // required + * Filter: { // IntelligentTieringFilter + * Prefix: "STRING_VALUE", + * Tag: { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * And: { // IntelligentTieringAndOperator + * Prefix: "STRING_VALUE", + * Tags: [ // TagSet + * { + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * }, + * }, + * Status: "Enabled" || "Disabled", // required + * Tierings: [ // TieringList // required + * { // Tiering + * Days: Number("int"), // required + * AccessTier: "ARCHIVE_ACCESS" || "DEEP_ARCHIVE_ACCESS", // required + * }, + * ], + * }, + * }; + * const command = new PutBucketIntelligentTieringConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketIntelligentTieringConfigurationCommandInput - {@link PutBucketIntelligentTieringConfigurationCommandInput} + * @returns {@link PutBucketIntelligentTieringConfigurationCommandOutput} + * @see {@link PutBucketIntelligentTieringConfigurationCommandInput} for command's `input` shape. + * @see {@link PutBucketIntelligentTieringConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutBucketIntelligentTieringConfigurationCommand extends PutBucketIntelligentTieringConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketIntelligentTieringConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketIntelligentTieringConfigurationCommandInput; + output: PutBucketIntelligentTieringConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketInventoryConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketInventoryConfigurationCommand.d.ts new file mode 100644 index 0000000..46e7956 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketInventoryConfigurationCommand.d.ts @@ -0,0 +1,187 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketInventoryConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketInventoryConfigurationCommand}. + */ +export interface PutBucketInventoryConfigurationCommandInput extends PutBucketInventoryConfigurationRequest { +} +/** + * @public + * + * The output of {@link PutBucketInventoryConfigurationCommand}. + */ +export interface PutBucketInventoryConfigurationCommandOutput extends __MetadataBearer { +} +declare const PutBucketInventoryConfigurationCommand_base: { + new (input: PutBucketInventoryConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketInventoryConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

This implementation of the PUT action adds an S3 Inventory configuration (identified by + * the inventory ID) to the bucket. You can have up to 1,000 inventory configurations per bucket.

+ *

Amazon S3 inventory generates inventories of the objects in the bucket on a daily or weekly basis, and + * the results are published to a flat file. The bucket that is inventoried is called the + * source bucket, and the bucket where the inventory flat file is stored is called + * the destination bucket. The destination bucket must be in the + * same Amazon Web Services Region as the source bucket.

+ *

When you configure an inventory for a source bucket, you specify the + * destination bucket where you want the inventory to be stored, and whether to + * generate the inventory daily or weekly. You can also configure what object metadata to include and + * whether to inventory all object versions or only current versions. For more information, see Amazon S3 Inventory in the + * Amazon S3 User Guide.

+ * + *

You must create a bucket policy on the destination bucket to grant + * permissions to Amazon S3 to write objects to the bucket in the defined location. For an example policy, see + * Granting + * Permissions for Amazon S3 Inventory and Storage Class Analysis.

+ *
+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have permission to perform the + * s3:PutInventoryConfiguration action. The bucket owner has this permission by + * default and can grant this permission to others.

+ *

The s3:PutInventoryConfiguration permission allows a user to create an S3 Inventory + * report that includes all object metadata fields available and to specify the destination bucket to + * store the inventory. A user with read access to objects in the destination bucket can also access + * all object metadata fields that are available in the inventory report.

+ *

To restrict access to an inventory report, see Restricting access to an Amazon S3 Inventory report in the + * Amazon S3 User Guide. For more information about the metadata fields available + * in S3 Inventory, see Amazon S3 Inventory + * lists in the Amazon S3 User Guide. For more information about + * permissions, see Permissions related to bucket subresource operations and Identity and access management in + * Amazon S3 in the Amazon S3 User Guide.

+ *
+ *
+ *

+ * PutBucketInventoryConfiguration has the following special errors:

+ *
+ *
HTTP 400 Bad Request Error
+ *
+ *

+ * Code: InvalidArgument

+ *

+ * Cause: Invalid Argument

+ *
+ *
HTTP 400 Bad Request Error
+ *
+ *

+ * Code: TooManyConfigurations

+ *

+ * Cause: You are attempting to create a new configuration but have already + * reached the 1,000-configuration limit.

+ *
+ *
HTTP 403 Forbidden Error
+ *
+ *

+ * Cause: You are not the owner of the specified bucket, or you do not have + * the s3:PutInventoryConfiguration bucket permission to set the configuration on the + * bucket.

+ *
+ *
+ *

The following operations are related to PutBucketInventoryConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketInventoryConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketInventoryConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketInventoryConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * InventoryConfiguration: { // InventoryConfiguration + * Destination: { // InventoryDestination + * S3BucketDestination: { // InventoryS3BucketDestination + * AccountId: "STRING_VALUE", + * Bucket: "STRING_VALUE", // required + * Format: "CSV" || "ORC" || "Parquet", // required + * Prefix: "STRING_VALUE", + * Encryption: { // InventoryEncryption + * SSES3: {}, + * SSEKMS: { // SSEKMS + * KeyId: "STRING_VALUE", // required + * }, + * }, + * }, + * }, + * IsEnabled: true || false, // required + * Filter: { // InventoryFilter + * Prefix: "STRING_VALUE", // required + * }, + * Id: "STRING_VALUE", // required + * IncludedObjectVersions: "All" || "Current", // required + * OptionalFields: [ // InventoryOptionalFields + * "Size" || "LastModifiedDate" || "StorageClass" || "ETag" || "IsMultipartUploaded" || "ReplicationStatus" || "EncryptionStatus" || "ObjectLockRetainUntilDate" || "ObjectLockMode" || "ObjectLockLegalHoldStatus" || "IntelligentTieringAccessTier" || "BucketKeyStatus" || "ChecksumAlgorithm" || "ObjectAccessControlList" || "ObjectOwner" || "LifecycleExpirationDate", + * ], + * Schedule: { // InventorySchedule + * Frequency: "Daily" || "Weekly", // required + * }, + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketInventoryConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketInventoryConfigurationCommandInput - {@link PutBucketInventoryConfigurationCommandInput} + * @returns {@link PutBucketInventoryConfigurationCommandOutput} + * @see {@link PutBucketInventoryConfigurationCommandInput} for command's `input` shape. + * @see {@link PutBucketInventoryConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutBucketInventoryConfigurationCommand extends PutBucketInventoryConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketInventoryConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketInventoryConfigurationCommandInput; + output: PutBucketInventoryConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLifecycleConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLifecycleConfigurationCommand.d.ts new file mode 100644 index 0000000..7d2c948 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLifecycleConfigurationCommand.d.ts @@ -0,0 +1,292 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketLifecycleConfigurationOutput, PutBucketLifecycleConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketLifecycleConfigurationCommand}. + */ +export interface PutBucketLifecycleConfigurationCommandInput extends PutBucketLifecycleConfigurationRequest { +} +/** + * @public + * + * The output of {@link PutBucketLifecycleConfigurationCommand}. + */ +export interface PutBucketLifecycleConfigurationCommandOutput extends PutBucketLifecycleConfigurationOutput, __MetadataBearer { +} +declare const PutBucketLifecycleConfigurationCommand_base: { + new (input: PutBucketLifecycleConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketLifecycleConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Creates a new lifecycle configuration for the bucket or replaces an existing lifecycle + * configuration. Keep in mind that this will overwrite an existing lifecycle configuration, so if you want + * to retain any configuration details, they must be included in the new lifecycle configuration. For + * information about lifecycle configuration, see Managing your storage + * lifecycle.

+ * + *

Bucket lifecycle configuration now supports specifying a lifecycle rule using an object key name + * prefix, one or more object tags, object size, or any combination of these. Accordingly, this section + * describes the latest API. The previous version of the API supported filtering based only on an object + * key name prefix, which is supported for backward compatibility. For the related API description, see + * PutBucketLifecycle.

+ *
+ *
+ *
Rules
+ *
+ *

You specify the lifecycle configuration in your request body. The lifecycle configuration is + * specified as XML consisting of one or more rules. An Amazon S3 Lifecycle configuration can have up to + * 1,000 rules. This limit is not adjustable.

+ *

Bucket lifecycle configuration supports specifying a lifecycle rule using an object key name + * prefix, one or more object tags, object size, or any combination of these. Accordingly, this + * section describes the latest API. The previous version of the API supported filtering based only + * on an object key name prefix, which is supported for backward compatibility for general purpose + * buckets. For the related API description, see PutBucketLifecycle.

+ * + *

Lifecyle configurations for directory buckets only support expiring objects and cancelling + * multipart uploads. Expiring of versioned objects,transitions and tag filters are not + * supported.

+ *
+ *

A lifecycle rule consists of the following:

+ *
    + *
  • + *

    A filter identifying a subset of objects to which the rule applies. The filter can be + * based on a key name prefix, object tags, object size, or any combination of these.

    + *
  • + *
  • + *

    A status indicating whether the rule is in effect.

    + *
  • + *
  • + *

    One or more lifecycle transition and expiration actions that you want Amazon S3 to perform on + * the objects identified by the filter. If the state of your bucket is versioning-enabled or + * versioning-suspended, you can have many versions of the same object (one current version and + * zero or more noncurrent versions). Amazon S3 provides predefined actions that you can specify for + * current and noncurrent object versions.

    + *
  • + *
+ *

For more information, see Object Lifecycle Management and + * Lifecycle + * Configuration Elements.

+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - By default, all Amazon S3 + * resources are private, including buckets, objects, and related subresources (for example, + * lifecycle configuration and website configuration). Only the resource owner (that is, the + * Amazon Web Services account that created it) can access the resource. The resource owner can optionally + * grant access permissions to others by writing an access policy. For this operation, a user + * must have the s3:PutLifecycleConfiguration permission.

    + *

    You can also explicitly deny permissions. An explicit deny also supersedes any other + * permissions. If you want to block users or accounts from removing or deleting objects from + * your bucket, you must deny them permissions for the following actions:

    + * + *
  • + *
+ *
    + *
  • + *

    + * Directory bucket permissions - You must have the + * s3express:PutLifecycleConfiguration permission in an IAM identity-based policy + * to use this operation. Cross-account access to this API operation isn't supported. The + * resource owner can optionally grant access permissions to others by creating a role or user + * for them as long as they are within the same account as the owner and resource.

    + *

    For more information about directory bucket policies and permissions, see Authorizing Regional endpoint APIs with IAM in the Amazon S3 User + * Guide.

    + * + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * s3express-control.region.amazonaws.com.

+ *

The following operations are related to PutBucketLifecycleConfiguration:

+ * + *
+ *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketLifecycleConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketLifecycleConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketLifecycleConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * LifecycleConfiguration: { // BucketLifecycleConfiguration + * Rules: [ // LifecycleRules // required + * { // LifecycleRule + * Expiration: { // LifecycleExpiration + * Date: new Date("TIMESTAMP"), + * Days: Number("int"), + * ExpiredObjectDeleteMarker: true || false, + * }, + * ID: "STRING_VALUE", + * Prefix: "STRING_VALUE", + * Filter: { // LifecycleRuleFilter + * Prefix: "STRING_VALUE", + * Tag: { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ObjectSizeGreaterThan: Number("long"), + * ObjectSizeLessThan: Number("long"), + * And: { // LifecycleRuleAndOperator + * Prefix: "STRING_VALUE", + * Tags: [ // TagSet + * { + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * ObjectSizeGreaterThan: Number("long"), + * ObjectSizeLessThan: Number("long"), + * }, + * }, + * Status: "Enabled" || "Disabled", // required + * Transitions: [ // TransitionList + * { // Transition + * Date: new Date("TIMESTAMP"), + * Days: Number("int"), + * StorageClass: "GLACIER" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "DEEP_ARCHIVE" || "GLACIER_IR", + * }, + * ], + * NoncurrentVersionTransitions: [ // NoncurrentVersionTransitionList + * { // NoncurrentVersionTransition + * NoncurrentDays: Number("int"), + * StorageClass: "GLACIER" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "DEEP_ARCHIVE" || "GLACIER_IR", + * NewerNoncurrentVersions: Number("int"), + * }, + * ], + * NoncurrentVersionExpiration: { // NoncurrentVersionExpiration + * NoncurrentDays: Number("int"), + * NewerNoncurrentVersions: Number("int"), + * }, + * AbortIncompleteMultipartUpload: { // AbortIncompleteMultipartUpload + * DaysAfterInitiation: Number("int"), + * }, + * }, + * ], + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * TransitionDefaultMinimumObjectSize: "varies_by_storage_class" || "all_storage_classes_128K", + * }; + * const command = new PutBucketLifecycleConfigurationCommand(input); + * const response = await client.send(command); + * // { // PutBucketLifecycleConfigurationOutput + * // TransitionDefaultMinimumObjectSize: "varies_by_storage_class" || "all_storage_classes_128K", + * // }; + * + * ``` + * + * @param PutBucketLifecycleConfigurationCommandInput - {@link PutBucketLifecycleConfigurationCommandInput} + * @returns {@link PutBucketLifecycleConfigurationCommandOutput} + * @see {@link PutBucketLifecycleConfigurationCommandInput} for command's `input` shape. + * @see {@link PutBucketLifecycleConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Put bucket lifecycle + * ```javascript + * // The following example replaces existing lifecycle configuration, if any, on the specified bucket. + * const input = { + * Bucket: "examplebucket", + * LifecycleConfiguration: { + * Rules: [ + * { + * Expiration: { + * Days: 3650 + * }, + * Filter: { + * Prefix: "documents/" + * }, + * ID: "TestOnly", + * Status: "Enabled", + * Transitions: [ + * { + * Days: 365, + * StorageClass: "GLACIER" + * } + * ] + * } + * ] + * } + * }; + * const command = new PutBucketLifecycleConfigurationCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketLifecycleConfigurationCommand extends PutBucketLifecycleConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketLifecycleConfigurationRequest; + output: PutBucketLifecycleConfigurationOutput; + }; + sdk: { + input: PutBucketLifecycleConfigurationCommandInput; + output: PutBucketLifecycleConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLoggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLoggingCommand.d.ts new file mode 100644 index 0000000..16c5a43 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLoggingCommand.d.ts @@ -0,0 +1,218 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketLoggingRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketLoggingCommand}. + */ +export interface PutBucketLoggingCommandInput extends PutBucketLoggingRequest { +} +/** + * @public + * + * The output of {@link PutBucketLoggingCommand}. + */ +export interface PutBucketLoggingCommandOutput extends __MetadataBearer { +} +declare const PutBucketLoggingCommand_base: { + new (input: PutBucketLoggingCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketLoggingCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

End of support notice: As of October 1, 2025, Amazon S3 has discontinued support for Email Grantee Access Control Lists (ACLs). If you attempt to use an Email Grantee ACL in a request after October 1, 2025, + * the request will receive an HTTP 405 (Method Not Allowed) error.

+ *

This change affects the following Amazon Web Services Regions: US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Europe (Ireland), and South America (São Paulo).

+ *
+ * + *

This operation is not supported for directory buckets.

+ *
+ *

Set the logging parameters for a bucket and to specify permissions for who can view and modify the + * logging parameters. All logs are saved to buckets in the same Amazon Web Services Region as the source bucket. To set + * the logging status of a bucket, you must be the bucket owner.

+ *

The bucket owner is automatically granted FULL_CONTROL to all logs. You use the Grantee + * request element to grant access to other people. The Permissions request element specifies + * the kind of access the grantee has to the logs.

+ * + *

If the target bucket for log delivery uses the bucket owner enforced setting for S3 Object + * Ownership, you can't use the Grantee request element to grant access to others. + * Permissions can only be granted using policies. For more information, see Permissions for server access log delivery in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Grantee Values
+ *
+ *

You can specify the person (grantee) to whom you're assigning access rights (by using request + * elements) in the following ways. For examples of how to specify these grantee values in JSON + * format, see the Amazon Web Services CLI example in Enabling Amazon S3 server + * access logging in the Amazon S3 User Guide.

+ *
    + *
  • + *

    By the person's ID:

    + *

    + * <>ID<><>GranteesEmail<> + * + *

    + *

    + * DisplayName is optional and ignored in the request.

    + *
  • + *
  • + *

    By Email address:

    + *

    + * <>Grantees@email.com<> + *

    + *

    The grantee is resolved to the CanonicalUser and, in a response to a + * GETObjectAcl request, appears as the CanonicalUser.

    + *
  • + *
  • + *

    By URI:

    + *

    + * <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<> + *

    + *
  • + *
+ *
+ *
+ *

To enable logging, you use LoggingEnabled and its children request elements. To disable + * logging, you use an empty BucketLoggingStatus request element:

+ *

+ * + *

+ *

For more information about server access logging, see Server Access Logging in the + * Amazon S3 User Guide.

+ *

For more information about creating a bucket, see CreateBucket. For more information about + * returning the logging status of a bucket, see GetBucketLogging.

+ *

The following operations are related to PutBucketLogging:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketLoggingCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketLoggingCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketLoggingRequest + * Bucket: "STRING_VALUE", // required + * BucketLoggingStatus: { // BucketLoggingStatus + * LoggingEnabled: { // LoggingEnabled + * TargetBucket: "STRING_VALUE", // required + * TargetGrants: [ // TargetGrants + * { // TargetGrant + * Grantee: { // Grantee + * DisplayName: "STRING_VALUE", + * EmailAddress: "STRING_VALUE", + * ID: "STRING_VALUE", + * URI: "STRING_VALUE", + * Type: "CanonicalUser" || "AmazonCustomerByEmail" || "Group", // required + * }, + * Permission: "FULL_CONTROL" || "READ" || "WRITE", + * }, + * ], + * TargetPrefix: "STRING_VALUE", // required + * TargetObjectKeyFormat: { // TargetObjectKeyFormat + * SimplePrefix: {}, + * PartitionedPrefix: { // PartitionedPrefix + * PartitionDateSource: "EventTime" || "DeliveryTime", + * }, + * }, + * }, + * }, + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketLoggingCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketLoggingCommandInput - {@link PutBucketLoggingCommandInput} + * @returns {@link PutBucketLoggingCommandOutput} + * @see {@link PutBucketLoggingCommandInput} for command's `input` shape. + * @see {@link PutBucketLoggingCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Set logging configuration for a bucket + * ```javascript + * // The following example sets logging policy on a bucket. For the Log Delivery group to deliver logs to the destination bucket, it needs permission for the READ_ACP action which the policy grants. + * const input = { + * Bucket: "sourcebucket", + * BucketLoggingStatus: { + * LoggingEnabled: { + * TargetBucket: "targetbucket", + * TargetGrants: [ + * { + * Grantee: { + * Type: "Group", + * URI: "http://acs.amazonaws.com/groups/global/AllUsers" + * }, + * Permission: "READ" + * } + * ], + * TargetPrefix: "MyBucketLogs/" + * } + * } + * }; + * const command = new PutBucketLoggingCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketLoggingCommand extends PutBucketLoggingCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketLoggingRequest; + output: {}; + }; + sdk: { + input: PutBucketLoggingCommandInput; + output: PutBucketLoggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketMetricsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketMetricsConfigurationCommand.d.ts new file mode 100644 index 0000000..86689f5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketMetricsConfigurationCommand.d.ts @@ -0,0 +1,176 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketMetricsConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketMetricsConfigurationCommand}. + */ +export interface PutBucketMetricsConfigurationCommandInput extends PutBucketMetricsConfigurationRequest { +} +/** + * @public + * + * The output of {@link PutBucketMetricsConfigurationCommand}. + */ +export interface PutBucketMetricsConfigurationCommandOutput extends __MetadataBearer { +} +declare const PutBucketMetricsConfigurationCommand_base: { + new (input: PutBucketMetricsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketMetricsConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Sets a metrics configuration (specified by the metrics configuration ID) for the bucket. You can + * have up to 1,000 metrics configurations per bucket. If you're updating an existing metrics + * configuration, note that this is a full replacement of the existing metrics configuration. If you don't + * include the elements you want to keep, they are erased.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have permissions to perform the + * s3:PutMetricsConfiguration action. The bucket owner has this permission by default. The + * bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:PutMetricsConfiguration permission is required in a policy. For more information + * about general purpose buckets permissions, see Using Bucket Policies and User + * Policies in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:PutMetricsConfiguration permission in + * an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

For information about CloudWatch request metrics for Amazon S3, see Monitoring Metrics with Amazon + * CloudWatch.

+ *

The following operations are related to PutBucketMetricsConfiguration:

+ * + *

+ * PutBucketMetricsConfiguration has the following special error:

+ *
    + *
  • + *

    Error code: TooManyConfigurations + *

    + *
      + *
    • + *

      Description: You are attempting to create a new configuration but have already reached the + * 1,000-configuration limit.

      + *
    • + *
    • + *

      HTTP Status Code: HTTP 400 Bad Request

      + *
    • + *
    + *
  • + *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketMetricsConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketMetricsConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketMetricsConfigurationRequest + * Bucket: "STRING_VALUE", // required + * Id: "STRING_VALUE", // required + * MetricsConfiguration: { // MetricsConfiguration + * Id: "STRING_VALUE", // required + * Filter: { // MetricsFilter Union: only one key present + * Prefix: "STRING_VALUE", + * Tag: { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * AccessPointArn: "STRING_VALUE", + * And: { // MetricsAndOperator + * Prefix: "STRING_VALUE", + * Tags: [ // TagSet + * { + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * AccessPointArn: "STRING_VALUE", + * }, + * }, + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketMetricsConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketMetricsConfigurationCommandInput - {@link PutBucketMetricsConfigurationCommandInput} + * @returns {@link PutBucketMetricsConfigurationCommandOutput} + * @see {@link PutBucketMetricsConfigurationCommandInput} for command's `input` shape. + * @see {@link PutBucketMetricsConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutBucketMetricsConfigurationCommand extends PutBucketMetricsConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketMetricsConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketMetricsConfigurationCommandInput; + output: PutBucketMetricsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketNotificationConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketNotificationConfigurationCommand.d.ts new file mode 100644 index 0000000..fbeb238 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketNotificationConfigurationCommand.d.ts @@ -0,0 +1,208 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketNotificationConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketNotificationConfigurationCommand}. + */ +export interface PutBucketNotificationConfigurationCommandInput extends PutBucketNotificationConfigurationRequest { +} +/** + * @public + * + * The output of {@link PutBucketNotificationConfigurationCommand}. + */ +export interface PutBucketNotificationConfigurationCommandOutput extends __MetadataBearer { +} +declare const PutBucketNotificationConfigurationCommand_base: { + new (input: PutBucketNotificationConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketNotificationConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Enables notifications of specified events for a bucket. For more information about event + * notifications, see Configuring Event Notifications.

+ *

Using this API, you can replace an existing notification configuration. The configuration is an XML + * file that defines the event types that you want Amazon S3 to publish and the destination where you want Amazon S3 + * to publish an event notification when it detects an event of the specified type.

+ *

By default, your bucket has no event notifications configured. That is, the notification + * configuration will be an empty NotificationConfiguration.

+ *

+ * + *

+ *

+ * + *

+ *

This action replaces the existing notification configuration with the configuration you include in + * the request body.

+ *

After Amazon S3 receives this request, it first verifies that any Amazon Simple Notification Service + * (Amazon SNS) or Amazon Simple Queue Service (Amazon SQS) destination exists, and that the bucket owner + * has permission to publish to it by sending a test notification. In the case of Lambda destinations, + * Amazon S3 verifies that the Lambda function permissions grant Amazon S3 permission to invoke the function from the + * Amazon S3 bucket. For more information, see Configuring Notifications for Amazon S3 + * Events.

+ *

You can disable notifications by adding the empty NotificationConfiguration element.

+ *

For more information about the number of event notification configurations that you can create per + * bucket, see Amazon S3 service + * quotas in Amazon Web Services General Reference.

+ *

By default, only the bucket owner can configure notifications on a bucket. However, bucket owners + * can use a bucket policy to grant permission to other users to set this configuration with the required + * s3:PutBucketNotification permission.

+ * + *

The PUT notification is an atomic operation. For example, suppose your notification configuration + * includes SNS topic, SQS queue, and Lambda function configurations. When you send a PUT request with + * this configuration, Amazon S3 sends test messages to your SNS topic. If the message fails, the entire PUT + * action will fail, and Amazon S3 will not add the configuration to your bucket.

+ *
+ *

If the configuration in the request body includes only one TopicConfiguration + * specifying only the s3:ReducedRedundancyLostObject event type, the response will also + * include the x-amz-sns-test-message-id header containing the message ID of the test + * notification sent to the topic.

+ *

The following action is related to PutBucketNotificationConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketNotificationConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketNotificationConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketNotificationConfigurationRequest + * Bucket: "STRING_VALUE", // required + * NotificationConfiguration: { // NotificationConfiguration + * TopicConfigurations: [ // TopicConfigurationList + * { // TopicConfiguration + * Id: "STRING_VALUE", + * TopicArn: "STRING_VALUE", // required + * Events: [ // EventList // required + * "s3:ReducedRedundancyLostObject" || "s3:ObjectCreated:*" || "s3:ObjectCreated:Put" || "s3:ObjectCreated:Post" || "s3:ObjectCreated:Copy" || "s3:ObjectCreated:CompleteMultipartUpload" || "s3:ObjectRemoved:*" || "s3:ObjectRemoved:Delete" || "s3:ObjectRemoved:DeleteMarkerCreated" || "s3:ObjectRestore:*" || "s3:ObjectRestore:Post" || "s3:ObjectRestore:Completed" || "s3:Replication:*" || "s3:Replication:OperationFailedReplication" || "s3:Replication:OperationNotTracked" || "s3:Replication:OperationMissedThreshold" || "s3:Replication:OperationReplicatedAfterThreshold" || "s3:ObjectRestore:Delete" || "s3:LifecycleTransition" || "s3:IntelligentTiering" || "s3:ObjectAcl:Put" || "s3:LifecycleExpiration:*" || "s3:LifecycleExpiration:Delete" || "s3:LifecycleExpiration:DeleteMarkerCreated" || "s3:ObjectTagging:*" || "s3:ObjectTagging:Put" || "s3:ObjectTagging:Delete", + * ], + * Filter: { // NotificationConfigurationFilter + * Key: { // S3KeyFilter + * FilterRules: [ // FilterRuleList + * { // FilterRule + * Name: "prefix" || "suffix", + * Value: "STRING_VALUE", + * }, + * ], + * }, + * }, + * }, + * ], + * QueueConfigurations: [ // QueueConfigurationList + * { // QueueConfiguration + * Id: "STRING_VALUE", + * QueueArn: "STRING_VALUE", // required + * Events: [ // required + * "s3:ReducedRedundancyLostObject" || "s3:ObjectCreated:*" || "s3:ObjectCreated:Put" || "s3:ObjectCreated:Post" || "s3:ObjectCreated:Copy" || "s3:ObjectCreated:CompleteMultipartUpload" || "s3:ObjectRemoved:*" || "s3:ObjectRemoved:Delete" || "s3:ObjectRemoved:DeleteMarkerCreated" || "s3:ObjectRestore:*" || "s3:ObjectRestore:Post" || "s3:ObjectRestore:Completed" || "s3:Replication:*" || "s3:Replication:OperationFailedReplication" || "s3:Replication:OperationNotTracked" || "s3:Replication:OperationMissedThreshold" || "s3:Replication:OperationReplicatedAfterThreshold" || "s3:ObjectRestore:Delete" || "s3:LifecycleTransition" || "s3:IntelligentTiering" || "s3:ObjectAcl:Put" || "s3:LifecycleExpiration:*" || "s3:LifecycleExpiration:Delete" || "s3:LifecycleExpiration:DeleteMarkerCreated" || "s3:ObjectTagging:*" || "s3:ObjectTagging:Put" || "s3:ObjectTagging:Delete", + * ], + * Filter: { + * Key: { + * FilterRules: [ + * { + * Name: "prefix" || "suffix", + * Value: "STRING_VALUE", + * }, + * ], + * }, + * }, + * }, + * ], + * LambdaFunctionConfigurations: [ // LambdaFunctionConfigurationList + * { // LambdaFunctionConfiguration + * Id: "STRING_VALUE", + * LambdaFunctionArn: "STRING_VALUE", // required + * Events: [ // required + * "s3:ReducedRedundancyLostObject" || "s3:ObjectCreated:*" || "s3:ObjectCreated:Put" || "s3:ObjectCreated:Post" || "s3:ObjectCreated:Copy" || "s3:ObjectCreated:CompleteMultipartUpload" || "s3:ObjectRemoved:*" || "s3:ObjectRemoved:Delete" || "s3:ObjectRemoved:DeleteMarkerCreated" || "s3:ObjectRestore:*" || "s3:ObjectRestore:Post" || "s3:ObjectRestore:Completed" || "s3:Replication:*" || "s3:Replication:OperationFailedReplication" || "s3:Replication:OperationNotTracked" || "s3:Replication:OperationMissedThreshold" || "s3:Replication:OperationReplicatedAfterThreshold" || "s3:ObjectRestore:Delete" || "s3:LifecycleTransition" || "s3:IntelligentTiering" || "s3:ObjectAcl:Put" || "s3:LifecycleExpiration:*" || "s3:LifecycleExpiration:Delete" || "s3:LifecycleExpiration:DeleteMarkerCreated" || "s3:ObjectTagging:*" || "s3:ObjectTagging:Put" || "s3:ObjectTagging:Delete", + * ], + * Filter: { + * Key: { + * FilterRules: [ + * { + * Name: "prefix" || "suffix", + * Value: "STRING_VALUE", + * }, + * ], + * }, + * }, + * }, + * ], + * EventBridgeConfiguration: {}, + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * SkipDestinationValidation: true || false, + * }; + * const command = new PutBucketNotificationConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketNotificationConfigurationCommandInput - {@link PutBucketNotificationConfigurationCommandInput} + * @returns {@link PutBucketNotificationConfigurationCommandOutput} + * @see {@link PutBucketNotificationConfigurationCommandInput} for command's `input` shape. + * @see {@link PutBucketNotificationConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Set notification configuration for a bucket + * ```javascript + * // The following example sets notification configuration on a bucket to publish the object created events to an SNS topic. + * const input = { + * Bucket: "examplebucket", + * NotificationConfiguration: { + * TopicConfigurations: [ + * { + * Events: [ + * "s3:ObjectCreated:*" + * ], + * TopicArn: "arn:aws:sns:us-west-2:123456789012:s3-notification-topic" + * } + * ] + * } + * }; + * const command = new PutBucketNotificationConfigurationCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketNotificationConfigurationCommand extends PutBucketNotificationConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketNotificationConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketNotificationConfigurationCommandInput; + output: PutBucketNotificationConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketOwnershipControlsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketOwnershipControlsCommand.d.ts new file mode 100644 index 0000000..e3607b4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketOwnershipControlsCommand.d.ts @@ -0,0 +1,104 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketOwnershipControlsRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketOwnershipControlsCommand}. + */ +export interface PutBucketOwnershipControlsCommandInput extends PutBucketOwnershipControlsRequest { +} +/** + * @public + * + * The output of {@link PutBucketOwnershipControlsCommand}. + */ +export interface PutBucketOwnershipControlsCommandOutput extends __MetadataBearer { +} +declare const PutBucketOwnershipControlsCommand_base: { + new (input: PutBucketOwnershipControlsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketOwnershipControlsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Creates or modifies OwnershipControls for an Amazon S3 bucket. To use this operation, you + * must have the s3:PutBucketOwnershipControls permission. For more information about Amazon S3 + * permissions, see Specifying permissions in a policy.

+ *

For information about Amazon S3 Object Ownership, see Using object ownership.

+ *

The following operations are related to PutBucketOwnershipControls:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketOwnershipControlsCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketOwnershipControlsCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketOwnershipControlsRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * OwnershipControls: { // OwnershipControls + * Rules: [ // OwnershipControlsRules // required + * { // OwnershipControlsRule + * ObjectOwnership: "BucketOwnerPreferred" || "ObjectWriter" || "BucketOwnerEnforced", // required + * }, + * ], + * }, + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * }; + * const command = new PutBucketOwnershipControlsCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketOwnershipControlsCommandInput - {@link PutBucketOwnershipControlsCommandInput} + * @returns {@link PutBucketOwnershipControlsCommandOutput} + * @see {@link PutBucketOwnershipControlsCommandInput} for command's `input` shape. + * @see {@link PutBucketOwnershipControlsCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutBucketOwnershipControlsCommand extends PutBucketOwnershipControlsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketOwnershipControlsRequest; + output: {}; + }; + sdk: { + input: PutBucketOwnershipControlsCommandInput; + output: PutBucketOwnershipControlsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketPolicyCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketPolicyCommand.d.ts new file mode 100644 index 0000000..38ba2c1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketPolicyCommand.d.ts @@ -0,0 +1,165 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketPolicyRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketPolicyCommand}. + */ +export interface PutBucketPolicyCommandInput extends PutBucketPolicyRequest { +} +/** + * @public + * + * The output of {@link PutBucketPolicyCommand}. + */ +export interface PutBucketPolicyCommandOutput extends __MetadataBearer { +} +declare const PutBucketPolicyCommand_base: { + new (input: PutBucketPolicyCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketPolicyCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Applies an Amazon S3 bucket policy to an Amazon S3 bucket.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. + * For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *

If you are using an identity other than the root user of the Amazon Web Services account that owns the + * bucket, the calling identity must both have the PutBucketPolicy permissions on the + * specified bucket and belong to the bucket owner's account in order to use this operation.

+ *

If you don't have PutBucketPolicy permissions, Amazon S3 returns a 403 Access + * Denied error. If you have the correct permissions, but you're not using an identity that + * belongs to the bucket owner's account, Amazon S3 returns a 405 Method Not Allowed + * error.

+ * + *

To ensure that bucket owners don't inadvertently lock themselves out of their own buckets, + * the root principal in a bucket owner's Amazon Web Services account can perform the + * GetBucketPolicy, PutBucketPolicy, and + * DeleteBucketPolicy API actions, even if their bucket policy explicitly denies the + * root principal's access. Bucket owner root principals can only be blocked from performing these + * API actions by VPC endpoint policies and Amazon Web Services Organizations policies.

+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - The + * s3:PutBucketPolicy permission is required in a policy. For more information + * about general purpose buckets bucket policies, see Using Bucket Policies and User + * Policies in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to + * this API operation, you must have the s3express:PutBucketPolicy permission in + * an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. + * For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
Example bucket policies
+ *
+ *

+ * General purpose buckets example bucket policies - See Bucket policy + * examples in the Amazon S3 User Guide.

+ *

+ * Directory bucket example bucket policies - See Example + * bucket policies for S3 Express One Zone in the Amazon S3 User Guide.

+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is s3express-control.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to PutBucketPolicy:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketPolicyCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketPolicyCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketPolicyRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ConfirmRemoveSelfBucketAccess: true || false, + * Policy: "STRING_VALUE", // required + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketPolicyCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketPolicyCommandInput - {@link PutBucketPolicyCommandInput} + * @returns {@link PutBucketPolicyCommandOutput} + * @see {@link PutBucketPolicyCommandInput} for command's `input` shape. + * @see {@link PutBucketPolicyCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Set bucket policy + * ```javascript + * // The following example sets a permission policy on a bucket. + * const input = { + * Bucket: "examplebucket", + * Policy: `{"Version": "2012-10-17", "Statement": [{ "Sid": "id-1","Effect": "Allow","Principal": {"AWS": "arn:aws:iam::123456789012:root"}, "Action": [ "s3:PutObject","s3:PutObjectAcl"], "Resource": ["arn:aws:s3:::acl3/*" ] } ]}` + * }; + * const command = new PutBucketPolicyCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketPolicyCommand extends PutBucketPolicyCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketPolicyRequest; + output: {}; + }; + sdk: { + input: PutBucketPolicyCommandInput; + output: PutBucketPolicyCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketReplicationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketReplicationCommand.d.ts new file mode 100644 index 0000000..912859c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketReplicationCommand.d.ts @@ -0,0 +1,234 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketReplicationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketReplicationCommand}. + */ +export interface PutBucketReplicationCommandInput extends PutBucketReplicationRequest { +} +/** + * @public + * + * The output of {@link PutBucketReplicationCommand}. + */ +export interface PutBucketReplicationCommandOutput extends __MetadataBearer { +} +declare const PutBucketReplicationCommand_base: { + new (input: PutBucketReplicationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketReplicationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Creates a replication configuration or replaces an existing one. For more information, see Replication in the + * Amazon S3 User Guide.

+ *

Specify the replication configuration in the request body. In the replication configuration, you + * provide the name of the destination bucket or buckets where you want Amazon S3 to replicate objects, the + * IAM role that Amazon S3 can assume to replicate objects on your behalf, and other relevant information. You + * can invoke this request for a specific Amazon Web Services Region by using the + * aws:RequestedRegion + * condition key.

+ *

A replication configuration must include at least one rule, and can contain a maximum of 1,000. Each + * rule identifies a subset of objects to replicate by filtering the objects in the source bucket. To + * choose additional subsets of objects to replicate, add a rule for each subset.

+ *

To specify a subset of the objects in the source bucket to apply a replication rule to, add the + * Filter element as a child of the Rule element. You can filter objects based on an object key prefix, one + * or more object tags, or both. When you add the Filter element in the configuration, you must also add + * the following elements: DeleteMarkerReplication, Status, and + * Priority.

+ * + *

If you are using an earlier version of the replication configuration, Amazon S3 handles replication of + * delete markers differently. For more information, see Backward Compatibility.

+ *
+ *

For information about enabling versioning on a bucket, see Using Versioning.

+ *
+ *
Handling Replication of Encrypted Objects
+ *
+ *

By default, Amazon S3 doesn't replicate objects that are stored at rest using server-side + * encryption with KMS keys. To replicate Amazon Web Services KMS-encrypted objects, add the following: + * SourceSelectionCriteria, SseKmsEncryptedObjects, Status, + * EncryptionConfiguration, and ReplicaKmsKeyID. For information about + * replication configuration, see Replicating Objects Created + * with SSE Using KMS keys.

+ *

For information on PutBucketReplication errors, see List of + * replication-related error codes + *

+ *
+ *
Permissions
+ *
+ *

To create a PutBucketReplication request, you must have + * s3:PutReplicationConfiguration permissions for the bucket. + * + *

+ *

By default, a resource owner, in this case the Amazon Web Services account that created the bucket, can + * perform this operation. The resource owner can also grant others permissions to perform the + * operation. For more information about permissions, see Specifying Permissions in a Policy + * and Managing + * Access Permissions to Your Amazon S3 Resources.

+ * + *

To perform this operation, the user or role performing the action must have the iam:PassRole permission.

+ *
+ *
+ *
+ *

The following operations are related to PutBucketReplication:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketReplicationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketReplicationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketReplicationRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ReplicationConfiguration: { // ReplicationConfiguration + * Role: "STRING_VALUE", // required + * Rules: [ // ReplicationRules // required + * { // ReplicationRule + * ID: "STRING_VALUE", + * Priority: Number("int"), + * Prefix: "STRING_VALUE", + * Filter: { // ReplicationRuleFilter + * Prefix: "STRING_VALUE", + * Tag: { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * And: { // ReplicationRuleAndOperator + * Prefix: "STRING_VALUE", + * Tags: [ // TagSet + * { + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * }, + * }, + * Status: "Enabled" || "Disabled", // required + * SourceSelectionCriteria: { // SourceSelectionCriteria + * SseKmsEncryptedObjects: { // SseKmsEncryptedObjects + * Status: "Enabled" || "Disabled", // required + * }, + * ReplicaModifications: { // ReplicaModifications + * Status: "Enabled" || "Disabled", // required + * }, + * }, + * ExistingObjectReplication: { // ExistingObjectReplication + * Status: "Enabled" || "Disabled", // required + * }, + * Destination: { // Destination + * Bucket: "STRING_VALUE", // required + * Account: "STRING_VALUE", + * StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * AccessControlTranslation: { // AccessControlTranslation + * Owner: "Destination", // required + * }, + * EncryptionConfiguration: { // EncryptionConfiguration + * ReplicaKmsKeyID: "STRING_VALUE", + * }, + * ReplicationTime: { // ReplicationTime + * Status: "Enabled" || "Disabled", // required + * Time: { // ReplicationTimeValue + * Minutes: Number("int"), + * }, + * }, + * Metrics: { // Metrics + * Status: "Enabled" || "Disabled", // required + * EventThreshold: { + * Minutes: Number("int"), + * }, + * }, + * }, + * DeleteMarkerReplication: { // DeleteMarkerReplication + * Status: "Enabled" || "Disabled", + * }, + * }, + * ], + * }, + * Token: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketReplicationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketReplicationCommandInput - {@link PutBucketReplicationCommandInput} + * @returns {@link PutBucketReplicationCommandOutput} + * @see {@link PutBucketReplicationCommandInput} for command's `input` shape. + * @see {@link PutBucketReplicationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Set replication configuration on a bucket + * ```javascript + * // The following example sets replication configuration on a bucket. + * const input = { + * Bucket: "examplebucket", + * ReplicationConfiguration: { + * Role: "arn:aws:iam::123456789012:role/examplerole", + * Rules: [ + * { + * Destination: { + * Bucket: "arn:aws:s3:::destinationbucket", + * StorageClass: "STANDARD" + * }, + * Prefix: "", + * Status: "Enabled" + * } + * ] + * } + * }; + * const command = new PutBucketReplicationCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketReplicationCommand extends PutBucketReplicationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketReplicationRequest; + output: {}; + }; + sdk: { + input: PutBucketReplicationCommandInput; + output: PutBucketReplicationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketRequestPaymentCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketRequestPaymentCommand.d.ts new file mode 100644 index 0000000..4954de6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketRequestPaymentCommand.d.ts @@ -0,0 +1,116 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketRequestPaymentRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketRequestPaymentCommand}. + */ +export interface PutBucketRequestPaymentCommandInput extends PutBucketRequestPaymentRequest { +} +/** + * @public + * + * The output of {@link PutBucketRequestPaymentCommand}. + */ +export interface PutBucketRequestPaymentCommandOutput extends __MetadataBearer { +} +declare const PutBucketRequestPaymentCommand_base: { + new (input: PutBucketRequestPaymentCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketRequestPaymentCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Sets the request payment configuration for a bucket. By default, the bucket owner pays for downloads + * from the bucket. This configuration parameter enables the bucket owner (only) to specify that the person + * requesting the download will be charged for the download. For more information, see Requester Pays + * Buckets.

+ *

The following operations are related to PutBucketRequestPayment:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketRequestPaymentCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketRequestPaymentCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketRequestPaymentRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * RequestPaymentConfiguration: { // RequestPaymentConfiguration + * Payer: "Requester" || "BucketOwner", // required + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketRequestPaymentCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketRequestPaymentCommandInput - {@link PutBucketRequestPaymentCommandInput} + * @returns {@link PutBucketRequestPaymentCommandOutput} + * @see {@link PutBucketRequestPaymentCommandInput} for command's `input` shape. + * @see {@link PutBucketRequestPaymentCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Set request payment configuration on a bucket. + * ```javascript + * // The following example sets request payment configuration on a bucket so that person requesting the download is charged. + * const input = { + * Bucket: "examplebucket", + * RequestPaymentConfiguration: { + * Payer: "Requester" + * } + * }; + * const command = new PutBucketRequestPaymentCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketRequestPaymentCommand extends PutBucketRequestPaymentCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketRequestPaymentRequest; + output: {}; + }; + sdk: { + input: PutBucketRequestPaymentCommandInput; + output: PutBucketRequestPaymentCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketTaggingCommand.d.ts new file mode 100644 index 0000000..ea0e961 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketTaggingCommand.d.ts @@ -0,0 +1,165 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketTaggingRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketTaggingCommand}. + */ +export interface PutBucketTaggingCommandInput extends PutBucketTaggingRequest { +} +/** + * @public + * + * The output of {@link PutBucketTaggingCommand}. + */ +export interface PutBucketTaggingCommandOutput extends __MetadataBearer { +} +declare const PutBucketTaggingCommand_base: { + new (input: PutBucketTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Sets the tags for a general purpose bucket if attribute based access control (ABAC) is not enabled for the bucket. When you enable ABAC for a general purpose bucket, you can no longer use this operation for that bucket and must use the TagResource or UntagResource operations instead.

+ *

Use tags to organize your Amazon Web Services bill to reflect your own cost structure. To do this, sign up to get + * your Amazon Web Services account bill with tag key values included. Then, to see the cost of combined resources, + * organize your billing information according to resources with the same tag key values. For example, you + * can tag several resources with a specific application name, and then organize your billing information + * to see the total cost of that application across several services. For more information, see Cost Allocation and + * Tagging and Using Cost Allocation in Amazon S3 Bucket Tags.

+ * + *

When this operation sets the tags for a bucket, it will overwrite any current tags the bucket + * already has. You cannot use this operation to add tags to an existing list of tags.

+ *
+ *

To use this operation, you must have permissions to perform the s3:PutBucketTagging + * action. The bucket owner has this permission by default and can grant this permission to others. For + * more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources.

+ *

+ * PutBucketTagging has the following special errors. For more Amazon S3 errors see, Error Responses.

+ *
    + *
  • + *

    + * InvalidTag - The tag provided was not a valid tag. This error can occur if + * the tag did not pass input validation. For more information, see Using Cost Allocation in Amazon S3 Bucket + * Tags.

    + *
  • + *
  • + *

    + * MalformedXML - The XML provided does not match the schema.

    + *
  • + *
  • + *

    + * OperationAborted - A conflicting conditional action is currently in progress + * against this resource. Please try again.

    + *
  • + *
  • + *

    + * InternalError - The service was unable to apply the provided tag to the + * bucket.

    + *
  • + *
+ *

The following operations are related to PutBucketTagging:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketTaggingCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketTaggingCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketTaggingRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * Tagging: { // Tagging + * TagSet: [ // TagSet // required + * { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketTaggingCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketTaggingCommandInput - {@link PutBucketTaggingCommandInput} + * @returns {@link PutBucketTaggingCommandOutput} + * @see {@link PutBucketTaggingCommandInput} for command's `input` shape. + * @see {@link PutBucketTaggingCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Set tags on a bucket + * ```javascript + * // The following example sets tags on a bucket. Any existing tags are replaced. + * const input = { + * Bucket: "examplebucket", + * Tagging: { + * TagSet: [ + * { + * Key: "Key1", + * Value: "Value1" + * }, + * { + * Key: "Key2", + * Value: "Value2" + * } + * ] + * } + * }; + * const command = new PutBucketTaggingCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketTaggingCommand extends PutBucketTaggingCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketTaggingRequest; + output: {}; + }; + sdk: { + input: PutBucketTaggingCommandInput; + output: PutBucketTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketVersioningCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketVersioningCommand.d.ts new file mode 100644 index 0000000..d93bcf5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketVersioningCommand.d.ts @@ -0,0 +1,148 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketVersioningRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketVersioningCommand}. + */ +export interface PutBucketVersioningCommandInput extends PutBucketVersioningRequest { +} +/** + * @public + * + * The output of {@link PutBucketVersioningCommand}. + */ +export interface PutBucketVersioningCommandOutput extends __MetadataBearer { +} +declare const PutBucketVersioningCommand_base: { + new (input: PutBucketVersioningCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketVersioningCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ * + *

When you enable versioning on a bucket for the first time, it might take a short amount of time + * for the change to be fully propagated. While this change is propagating, you might encounter + * intermittent HTTP 404 NoSuchKey errors for requests to objects created or updated after + * enabling versioning. We recommend that you wait for 15 minutes after enabling versioning before + * issuing write operations (PUT or DELETE) on objects in the bucket.

+ *
+ *

Sets the versioning state of an existing bucket.

+ *

You can set the versioning state with one of the following values:

+ *

+ * Enabled—Enables versioning for the objects in the bucket. All + * objects added to the bucket receive a unique version ID.

+ *

+ * Suspended—Disables versioning for the objects in the bucket. All + * objects added to the bucket receive the version ID null.

+ *

If the versioning state has never been set on a bucket, it has no versioning state; a GetBucketVersioning request does not return a versioning state value.

+ *

In order to enable MFA Delete, you must be the bucket owner. If you are the bucket owner and want to + * enable MFA Delete in the bucket versioning configuration, you must include the x-amz-mfa + * request header and the Status and the MfaDelete request elements in a + * request to set the versioning state of the bucket.

+ * + *

If you have an object expiration lifecycle configuration in your non-versioned bucket and you want + * to maintain the same permanent delete behavior when you enable versioning, you must add a noncurrent + * expiration policy. The noncurrent expiration lifecycle configuration will manage the deletes of the + * noncurrent object versions in the version-enabled bucket. (A version-enabled bucket maintains one + * current and zero or more noncurrent object versions.) For more information, see Lifecycle and + * Versioning.

+ *
+ *

The following operations are related to PutBucketVersioning:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketVersioningCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketVersioningCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketVersioningRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * MFA: "STRING_VALUE", + * VersioningConfiguration: { // VersioningConfiguration + * MFADelete: "Enabled" || "Disabled", + * Status: "Enabled" || "Suspended", + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketVersioningCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketVersioningCommandInput - {@link PutBucketVersioningCommandInput} + * @returns {@link PutBucketVersioningCommandOutput} + * @see {@link PutBucketVersioningCommandInput} for command's `input` shape. + * @see {@link PutBucketVersioningCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Set versioning configuration on a bucket + * ```javascript + * // The following example sets versioning configuration on bucket. The configuration enables versioning on the bucket. + * const input = { + * Bucket: "examplebucket", + * VersioningConfiguration: { + * MFADelete: "Disabled", + * Status: "Enabled" + * } + * }; + * const command = new PutBucketVersioningCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketVersioningCommand extends PutBucketVersioningCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketVersioningRequest; + output: {}; + }; + sdk: { + input: PutBucketVersioningCommandInput; + output: PutBucketVersioningCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketWebsiteCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketWebsiteCommand.d.ts new file mode 100644 index 0000000..2852360 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketWebsiteCommand.d.ts @@ -0,0 +1,253 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutBucketWebsiteRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutBucketWebsiteCommand}. + */ +export interface PutBucketWebsiteCommandInput extends PutBucketWebsiteRequest { +} +/** + * @public + * + * The output of {@link PutBucketWebsiteCommand}. + */ +export interface PutBucketWebsiteCommandOutput extends __MetadataBearer { +} +declare const PutBucketWebsiteCommand_base: { + new (input: PutBucketWebsiteCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutBucketWebsiteCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Sets the configuration of the website that is specified in the website subresource. To + * configure a bucket as a website, you can add this subresource on the bucket with website configuration + * information such as the file name of the index document and any redirect rules. For more information, + * see Hosting Websites on + * Amazon S3.

+ *

This PUT action requires the S3:PutBucketWebsite permission. By default, only the + * bucket owner can configure the website attached to a bucket; however, bucket owners can allow other + * users to set the website configuration by writing a bucket policy that grants them the + * S3:PutBucketWebsite permission.

+ *

To redirect all website requests sent to the bucket's website endpoint, you add a website + * configuration with the following elements. Because all requests are sent to another website, you don't + * need to provide index document name for the bucket.

+ *
    + *
  • + *

    + * WebsiteConfiguration + *

    + *
  • + *
  • + *

    + * RedirectAllRequestsTo + *

    + *
  • + *
  • + *

    + * HostName + *

    + *
  • + *
  • + *

    + * Protocol + *

    + *
  • + *
+ *

If you want granular control over redirects, you can use the following elements to add routing rules + * that describe conditions for redirecting requests and information about the redirect destination. In + * this case, the website configuration must provide an index document for the bucket, because some + * requests might not be redirected.

+ *
    + *
  • + *

    + * WebsiteConfiguration + *

    + *
  • + *
  • + *

    + * IndexDocument + *

    + *
  • + *
  • + *

    + * Suffix + *

    + *
  • + *
  • + *

    + * ErrorDocument + *

    + *
  • + *
  • + *

    + * Key + *

    + *
  • + *
  • + *

    + * RoutingRules + *

    + *
  • + *
  • + *

    + * RoutingRule + *

    + *
  • + *
  • + *

    + * Condition + *

    + *
  • + *
  • + *

    + * HttpErrorCodeReturnedEquals + *

    + *
  • + *
  • + *

    + * KeyPrefixEquals + *

    + *
  • + *
  • + *

    + * Redirect + *

    + *
  • + *
  • + *

    + * Protocol + *

    + *
  • + *
  • + *

    + * HostName + *

    + *
  • + *
  • + *

    + * ReplaceKeyPrefixWith + *

    + *
  • + *
  • + *

    + * ReplaceKeyWith + *

    + *
  • + *
  • + *

    + * HttpRedirectCode + *

    + *
  • + *
+ *

Amazon S3 has a limitation of 50 routing rules per website configuration. If you require more than 50 + * routing rules, you can use object redirect. For more information, see Configuring an Object Redirect in the + * Amazon S3 User Guide.

+ *

The maximum request length is limited to 128 KB.

+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutBucketWebsiteCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutBucketWebsiteCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutBucketWebsiteRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * WebsiteConfiguration: { // WebsiteConfiguration + * ErrorDocument: { // ErrorDocument + * Key: "STRING_VALUE", // required + * }, + * IndexDocument: { // IndexDocument + * Suffix: "STRING_VALUE", // required + * }, + * RedirectAllRequestsTo: { // RedirectAllRequestsTo + * HostName: "STRING_VALUE", // required + * Protocol: "http" || "https", + * }, + * RoutingRules: [ // RoutingRules + * { // RoutingRule + * Condition: { // Condition + * HttpErrorCodeReturnedEquals: "STRING_VALUE", + * KeyPrefixEquals: "STRING_VALUE", + * }, + * Redirect: { // Redirect + * HostName: "STRING_VALUE", + * HttpRedirectCode: "STRING_VALUE", + * Protocol: "http" || "https", + * ReplaceKeyPrefixWith: "STRING_VALUE", + * ReplaceKeyWith: "STRING_VALUE", + * }, + * }, + * ], + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutBucketWebsiteCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutBucketWebsiteCommandInput - {@link PutBucketWebsiteCommandInput} + * @returns {@link PutBucketWebsiteCommandOutput} + * @see {@link PutBucketWebsiteCommandInput} for command's `input` shape. + * @see {@link PutBucketWebsiteCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example Set website configuration on a bucket + * ```javascript + * // The following example adds website configuration to a bucket. + * const input = { + * Bucket: "examplebucket", + * ContentMD5: "", + * WebsiteConfiguration: { + * ErrorDocument: { + * Key: "error.html" + * }, + * IndexDocument: { + * Suffix: "index.html" + * } + * } + * }; + * const command = new PutBucketWebsiteCommand(input); + * const response = await client.send(command); + * /* response is + * { /* metadata only *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutBucketWebsiteCommand extends PutBucketWebsiteCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutBucketWebsiteRequest; + output: {}; + }; + sdk: { + input: PutBucketWebsiteCommandInput; + output: PutBucketWebsiteCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectAclCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectAclCommand.d.ts new file mode 100644 index 0000000..c24f8a5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectAclCommand.d.ts @@ -0,0 +1,315 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutObjectAclOutput, PutObjectAclRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutObjectAclCommand}. + */ +export interface PutObjectAclCommandInput extends PutObjectAclRequest { +} +/** + * @public + * + * The output of {@link PutObjectAclCommand}. + */ +export interface PutObjectAclCommandOutput extends PutObjectAclOutput, __MetadataBearer { +} +declare const PutObjectAclCommand_base: { + new (input: PutObjectAclCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutObjectAclCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

End of support notice: As of October 1, 2025, Amazon S3 has discontinued support for Email Grantee Access Control Lists (ACLs). If you attempt to use an Email Grantee ACL in a request after October 1, 2025, + * the request will receive an HTTP 405 (Method Not Allowed) error.

+ *

This change affects the following Amazon Web Services Regions: US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Europe (Ireland), and South America (São Paulo).

+ *
+ * + *

This operation is not supported for directory buckets.

+ *
+ *

Uses the acl subresource to set the access control list (ACL) permissions for a new or + * existing object in an S3 bucket. You must have the WRITE_ACP permission to set the ACL of + * an object. For more information, see What permissions can I grant? in the + * Amazon S3 User Guide.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ *

Depending on your application needs, you can choose to set the ACL on an object using either the + * request body or the headers. For example, if you have an existing application that updates a bucket ACL + * using the request body, you can continue to use that approach. For more information, see Access Control List (ACL) + * Overview in the Amazon S3 User Guide.

+ * + *

If your bucket uses the bucket owner enforced setting for S3 Object Ownership, ACLs are disabled + * and no longer affect permissions. You must use policies to grant access to your bucket and the objects + * in it. Requests to set ACLs or update ACLs fail and return the + * AccessControlListNotSupported error code. Requests to read ACLs are still supported. + * For more information, see Controlling object ownership in + * the Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *

You can set access permissions using one of the following methods:

+ *
    + *
  • + *

    Specify a canned ACL with the x-amz-acl request header. Amazon S3 supports a set + * of predefined ACLs, known as canned ACLs. Each canned ACL has a predefined set of grantees and + * permissions. Specify the canned ACL name as the value of x-amz-acl. If you use + * this header, you cannot use other access control-specific headers in your request. For more + * information, see Canned ACL.

    + *
  • + *
  • + *

    Specify access permissions explicitly with the x-amz-grant-read, + * x-amz-grant-read-acp, x-amz-grant-write-acp, and + * x-amz-grant-full-control headers. When using these headers, you specify + * explicit access permissions and grantees (Amazon Web Services accounts or Amazon S3 groups) who will receive the + * permission. If you use these ACL-specific headers, you cannot use x-amz-acl + * header to set a canned ACL. These parameters map to the set of permissions that Amazon S3 supports + * in an ACL. For more information, see Access Control List (ACL) + * Overview.

    + *

    You specify each grantee as a type=value pair, where the type is one of the + * following:

    + *
      + *
    • + *

      + * id – if the value specified is the canonical user ID of an + * Amazon Web Services account

      + *
    • + *
    • + *

      + * uri – if you are granting permissions to a predefined group

      + *
    • + *
    • + *

      + * emailAddress – if the value specified is the email address of an + * Amazon Web Services account

      + * + *

      Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

      + *
        + *
      • + *

        US East (N. Virginia)

        + *
      • + *
      • + *

        US West (N. California)

        + *
      • + *
      • + *

        US West (Oregon)

        + *
      • + *
      • + *

        Asia Pacific (Singapore)

        + *
      • + *
      • + *

        Asia Pacific (Sydney)

        + *
      • + *
      • + *

        Asia Pacific (Tokyo)

        + *
      • + *
      • + *

        Europe (Ireland)

        + *
      • + *
      • + *

        South America (São Paulo)

        + *
      • + *
      + *

      For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

      + *
      + *
    • + *
    + *

    For example, the following x-amz-grant-read header grants list objects + * permission to the two Amazon Web Services accounts identified by their email addresses.

    + *

    + * x-amz-grant-read: emailAddress="xyz@amazon.com", emailAddress="abc@amazon.com" + * + *

    + *
  • + *
+ *

You can use either a canned ACL or specify access permissions explicitly. You cannot do + * both.

+ *
+ *
Grantee Values
+ *
+ *

You can specify the person (grantee) to whom you're assigning access rights (using request + * elements) in the following ways. For examples of how to specify these grantee values in JSON + * format, see the Amazon Web Services CLI example in Enabling Amazon S3 server + * access logging in the Amazon S3 User Guide.

+ *
    + *
  • + *

    By the person's ID:

    + *

    + * <>ID<><>GranteesEmail<> + * + *

    + *

    DisplayName is optional and ignored in the request.

    + *
  • + *
  • + *

    By URI:

    + *

    + * <>http://acs.amazonaws.com/groups/global/AuthenticatedUsers<> + *

    + *
  • + *
  • + *

    By Email address:

    + *

    + * <>Grantees@email.com<>lt;/Grantee> + *

    + *

    The grantee is resolved to the CanonicalUser and, in a response to a GET Object acl + * request, appears as the CanonicalUser.

    + * + *

    Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

    + *
      + *
    • + *

      US East (N. Virginia)

      + *
    • + *
    • + *

      US West (N. California)

      + *
    • + *
    • + *

      US West (Oregon)

      + *
    • + *
    • + *

      Asia Pacific (Singapore)

      + *
    • + *
    • + *

      Asia Pacific (Sydney)

      + *
    • + *
    • + *

      Asia Pacific (Tokyo)

      + *
    • + *
    • + *

      Europe (Ireland)

      + *
    • + *
    • + *

      South America (São Paulo)

      + *
    • + *
    + *

    For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

    + *
    + *
  • + *
+ *
+ *
Versioning
+ *
+ *

The ACL of an object is set at the object version level. By default, PUT sets the ACL of the + * current version of an object. To set the ACL of a different version, use the + * versionId subresource.

+ *
+ *
+ *

The following operations are related to PutObjectAcl:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutObjectAclCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutObjectAclCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutObjectAclRequest + * ACL: "private" || "public-read" || "public-read-write" || "authenticated-read" || "aws-exec-read" || "bucket-owner-read" || "bucket-owner-full-control", + * AccessControlPolicy: { // AccessControlPolicy + * Grants: [ // Grants + * { // Grant + * Grantee: { // Grantee + * DisplayName: "STRING_VALUE", + * EmailAddress: "STRING_VALUE", + * ID: "STRING_VALUE", + * URI: "STRING_VALUE", + * Type: "CanonicalUser" || "AmazonCustomerByEmail" || "Group", // required + * }, + * Permission: "FULL_CONTROL" || "WRITE" || "WRITE_ACP" || "READ" || "READ_ACP", + * }, + * ], + * Owner: { // Owner + * DisplayName: "STRING_VALUE", + * ID: "STRING_VALUE", + * }, + * }, + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * GrantFullControl: "STRING_VALUE", + * GrantRead: "STRING_VALUE", + * GrantReadACP: "STRING_VALUE", + * GrantWrite: "STRING_VALUE", + * GrantWriteACP: "STRING_VALUE", + * Key: "STRING_VALUE", // required + * RequestPayer: "requester", + * VersionId: "STRING_VALUE", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutObjectAclCommand(input); + * const response = await client.send(command); + * // { // PutObjectAclOutput + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param PutObjectAclCommandInput - {@link PutObjectAclCommandInput} + * @returns {@link PutObjectAclCommandOutput} + * @see {@link PutObjectAclCommandInput} for command's `input` shape. + * @see {@link PutObjectAclCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link NoSuchKey} (client fault) + *

The specified key does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To grant permissions using object ACL + * ```javascript + * // The following example adds grants to an object ACL. The first permission grants user1 and user2 FULL_CONTROL and the AllUsers group READ permission. + * const input = { + * AccessControlPolicy: { /* empty *\/ }, + * Bucket: "examplebucket", + * GrantFullControl: "emailaddress=user1@example.com,emailaddress=user2@example.com", + * GrantRead: "uri=http://acs.amazonaws.com/groups/global/AllUsers", + * Key: "HappyFace.jpg" + * }; + * const command = new PutObjectAclCommand(input); + * const response = await client.send(command); + * /* response is + * { /* empty *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class PutObjectAclCommand extends PutObjectAclCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutObjectAclRequest; + output: PutObjectAclOutput; + }; + sdk: { + input: PutObjectAclCommandInput; + output: PutObjectAclCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectCommand.d.ts new file mode 100644 index 0000000..92758a4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectCommand.d.ts @@ -0,0 +1,466 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer, StreamingBlobPayloadInputTypes } from "@smithy/types"; +import type { PutObjectOutput, PutObjectRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutObjectCommand}. + */ +export interface PutObjectCommandInput extends Omit { + Body?: StreamingBlobPayloadInputTypes; +} +/** + * @public + * + * The output of {@link PutObjectCommand}. + */ +export interface PutObjectCommandOutput extends PutObjectOutput, __MetadataBearer { +} +declare const PutObjectCommand_base: { + new (input: PutObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

End of support notice: As of October 1, 2025, Amazon S3 has discontinued support for Email Grantee Access Control Lists (ACLs). If you attempt to use an Email Grantee ACL in a request after October 1, 2025, + * the request will receive an HTTP 405 (Method Not Allowed) error.

+ *

This change affects the following Amazon Web Services Regions: US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), Europe (Ireland), and South America (São Paulo).

+ *
+ *

Adds an object to a bucket.

+ * + *
    + *
  • + *

    Amazon S3 never adds partial objects; if you receive a success response, Amazon S3 added the entire + * object to the bucket. You cannot use PutObject to only update a single piece of + * metadata for an existing object. You must put the entire object with updated metadata if you want + * to update some values.

    + *
  • + *
  • + *

    If your bucket uses the bucket owner enforced setting for Object Ownership, ACLs are disabled + * and no longer affect permissions. All objects written to the bucket by any account will be owned + * by the bucket owner.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *

Amazon S3 is a distributed system. If it receives multiple write requests for the same object + * simultaneously, it overwrites all but the last object written. However, Amazon S3 provides features that can + * modify this behavior:

+ *
    + *
  • + *

    + * S3 Object Lock - To prevent objects from being deleted + * or overwritten, you can use Amazon S3 Object Lock in the Amazon S3 User Guide.

    + * + *

    This functionality is not supported for directory buckets.

    + *
    + *
  • + *
  • + *

    + * If-None-Match - Uploads the object only if the object + * key name does not already exist in the specified bucket. Otherwise, Amazon S3 returns a 412 + * Precondition Failed error. If a conflicting operation occurs during the upload, S3 returns + * a 409 ConditionalRequestConflict response. On a 409 failure, retry the upload.

    + *

    Expects the * character (asterisk).

    + *

    For more information, see Add preconditions to S3 operations with + * conditional requests in the Amazon S3 User Guide or RFC 7232.

    + * + *

    This functionality is not supported for S3 on Outposts.

    + *
    + *
  • + *
  • + *

    + * S3 Versioning - When you enable versioning for a bucket, + * if Amazon S3 receives multiple write requests for the same object simultaneously, it stores all versions + * of the objects. For each write request that is made to the same object, Amazon S3 automatically generates + * a unique version ID of that object being stored in Amazon S3. You can retrieve, replace, or delete any + * version of the object. For more information about versioning, see Adding Objects to + * Versioning-Enabled Buckets in the Amazon S3 User Guide. For information + * about returning the versioning state of a bucket, see GetBucketVersioning.

    + * + *

    This functionality is not supported for directory buckets.

    + *
    + *
  • + *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - The following + * permissions are required in your policies when your PutObject request includes + * specific headers.

    + *
      + *
    • + *

      + * + * s3:PutObject + * - To successfully + * complete the PutObject request, you must always have the + * s3:PutObject permission on a bucket to add an object to it.

      + *
    • + *
    • + *

      + * + * s3:PutObjectAcl + * - To successfully change the objects ACL of your PutObject + * request, you must have the s3:PutObjectAcl.

      + *
    • + *
    • + *

      + * + * s3:PutObjectTagging + * - To successfully set the tag-set with your PutObject + * request, you must have the s3:PutObjectTagging.

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *

    If the object is encrypted with SSE-KMS, you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key.

    + *
  • + *
+ *
+ *
Data integrity with Content-MD5
+ *
+ *
    + *
  • + *

    + * General purpose bucket - To ensure that data is not + * corrupted traversing the network, use the Content-MD5 header. When you use this + * header, Amazon S3 checks the object against the provided MD5 value and, if they do not match, Amazon S3 + * returns an error. Alternatively, when the object's ETag is its MD5 digest, you can calculate + * the MD5 while putting the object to Amazon S3 and compare the returned ETag to the calculated MD5 + * value.

    + *
  • + *
  • + *

    + * Directory bucket - + * This functionality is not supported for directory buckets.

    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *
+ *
Errors
+ *
+ *
    + *
  • + *

    You might receive an InvalidRequest error for several reasons. Depending on the reason for the error, you might receive one of the following messages:

    + *
      + *
    • + *

      Cannot specify both a write offset value and user-defined object metadata for existing + * objects.

      + *
    • + *
    • + *

      Checksum Type mismatch occurred, expected checksum Type: sha1, actual checksum Type: + * crc32c.

      + *
    • + *
    • + *

      Request body cannot be empty when 'write offset' is specified.

      + *
    • + *
    + *
  • + *
+ *
+ *
+ *

For more information about related Amazon S3 APIs, see the following:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutObjectRequest + * ACL: "private" || "public-read" || "public-read-write" || "authenticated-read" || "aws-exec-read" || "bucket-owner-read" || "bucket-owner-full-control", + * Body: "MULTIPLE_TYPES_ACCEPTED", // see \@smithy/types -> StreamingBlobPayloadInputTypes + * Bucket: "STRING_VALUE", // required + * CacheControl: "STRING_VALUE", + * ContentDisposition: "STRING_VALUE", + * ContentEncoding: "STRING_VALUE", + * ContentLanguage: "STRING_VALUE", + * ContentLength: Number("long"), + * ContentMD5: "STRING_VALUE", + * ContentType: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ChecksumCRC32: "STRING_VALUE", + * ChecksumCRC32C: "STRING_VALUE", + * ChecksumCRC64NVME: "STRING_VALUE", + * ChecksumSHA1: "STRING_VALUE", + * ChecksumSHA256: "STRING_VALUE", + * Expires: new Date("TIMESTAMP"), + * IfMatch: "STRING_VALUE", + * IfNoneMatch: "STRING_VALUE", + * GrantFullControl: "STRING_VALUE", + * GrantRead: "STRING_VALUE", + * GrantReadACP: "STRING_VALUE", + * GrantWriteACP: "STRING_VALUE", + * Key: "STRING_VALUE", // required + * WriteOffsetBytes: Number("long"), + * Metadata: { // Metadata + * "": "STRING_VALUE", + * }, + * ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * WebsiteRedirectLocation: "STRING_VALUE", + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * SSEKMSKeyId: "STRING_VALUE", + * SSEKMSEncryptionContext: "STRING_VALUE", + * BucketKeyEnabled: true || false, + * RequestPayer: "requester", + * Tagging: "STRING_VALUE", + * ObjectLockMode: "GOVERNANCE" || "COMPLIANCE", + * ObjectLockRetainUntilDate: new Date("TIMESTAMP"), + * ObjectLockLegalHoldStatus: "ON" || "OFF", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutObjectCommand(input); + * const response = await client.send(command); + * // { // PutObjectOutput + * // Expiration: "STRING_VALUE", + * // ETag: "STRING_VALUE", + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // ChecksumType: "COMPOSITE" || "FULL_OBJECT", + * // ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * // VersionId: "STRING_VALUE", + * // SSECustomerAlgorithm: "STRING_VALUE", + * // SSECustomerKeyMD5: "STRING_VALUE", + * // SSEKMSKeyId: "STRING_VALUE", + * // SSEKMSEncryptionContext: "STRING_VALUE", + * // BucketKeyEnabled: true || false, + * // Size: Number("long"), + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param PutObjectCommandInput - {@link PutObjectCommandInput} + * @returns {@link PutObjectCommandOutput} + * @see {@link PutObjectCommandInput} for command's `input` shape. + * @see {@link PutObjectCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link EncryptionTypeMismatch} (client fault) + *

The existing object was created with a different encryption type. Subsequent write requests must + * include the appropriate encryption parameters in the request or while creating the session.

+ * + * @throws {@link InvalidRequest} (client fault) + *

A parameter or header in your request isn't valid. For details, see the description of this API + * operation.

+ * + * @throws {@link InvalidWriteOffset} (client fault) + *

The write offset value that you specified does not match the current object size.

+ * + * @throws {@link TooManyParts} (client fault) + *

You have attempted to add more parts than the maximum of 10000 that are allowed for this object. + * You can use the CopyObject operation to copy this object to another and then add more data to the newly + * copied object.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To create an object. + * ```javascript + * // The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response. + * const input = { + * Body: "filetoupload", + * Bucket: "examplebucket", + * Key: "objectkey" + * }; + * const command = new PutObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * VersionId: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ" + * } + * *\/ + * ``` + * + * @example To upload an object (specify optional headers) + * ```javascript + * // The following example uploads an object. The request specifies optional request headers to directs S3 to use specific storage class and use server-side encryption. + * const input = { + * Body: "HappyFace.jpg", + * Bucket: "examplebucket", + * Key: "HappyFace.jpg", + * ServerSideEncryption: "AES256", + * StorageClass: "STANDARD_IA" + * }; + * const command = new PutObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * ServerSideEncryption: "AES256", + * VersionId: "CG612hodqujkf8FaaNfp8U..FIhLROcp" + * } + * *\/ + * ``` + * + * @example To upload an object + * ```javascript + * // The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file syntax. S3 returns VersionId of the newly created object. + * const input = { + * Body: "HappyFace.jpg", + * Bucket: "examplebucket", + * Key: "HappyFace.jpg" + * }; + * const command = new PutObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * VersionId: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk" + * } + * *\/ + * ``` + * + * @example To upload an object and specify canned ACL. + * ```javascript + * // The following example uploads and object. The request specifies optional canned ACL (access control list) to all READ access to authenticated users. If the bucket is versioning enabled, S3 returns version ID in response. + * const input = { + * ACL: "authenticated-read", + * Body: "filetoupload", + * Bucket: "examplebucket", + * Key: "exampleobject" + * }; + * const command = new PutObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * VersionId: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr" + * } + * *\/ + * ``` + * + * @example To upload an object and specify optional tags + * ```javascript + * // The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore S3 returns version ID of the newly created object. + * const input = { + * Body: "c:\HappyFace.jpg", + * Bucket: "examplebucket", + * Key: "HappyFace.jpg", + * Tagging: "key1=value1&key2=value2" + * }; + * const command = new PutObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * VersionId: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a" + * } + * *\/ + * ``` + * + * @example To upload an object and specify server-side encryption and object tags + * ```javascript + * // The following example uploads an object. The request specifies the optional server-side encryption option. The request also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response. + * const input = { + * Body: "filetoupload", + * Bucket: "examplebucket", + * Key: "exampleobject", + * ServerSideEncryption: "AES256", + * Tagging: "key1=value1&key2=value2" + * }; + * const command = new PutObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * ServerSideEncryption: "AES256", + * VersionId: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt" + * } + * *\/ + * ``` + * + * @example To upload object and specify user-defined metadata + * ```javascript + * // The following example creates an object. The request also specifies optional metadata. If the bucket is versioning enabled, S3 returns version ID in response. + * const input = { + * Body: "filetoupload", + * Bucket: "examplebucket", + * Key: "exampleobject", + * Metadata: { + * metadata1: "value1", + * metadata2: "value2" + * } + * }; + * const command = new PutObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ETag: `"6805f2cfc46c0f04559748bb039d69ae"`, + * VersionId: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0" + * } + * *\/ + * ``` + * + * @public + */ +export declare class PutObjectCommand extends PutObjectCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutObjectRequest; + output: PutObjectOutput; + }; + sdk: { + input: PutObjectCommandInput; + output: PutObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLegalHoldCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLegalHoldCommand.d.ts new file mode 100644 index 0000000..289250b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLegalHoldCommand.d.ts @@ -0,0 +1,90 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutObjectLegalHoldOutput, PutObjectLegalHoldRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutObjectLegalHoldCommand}. + */ +export interface PutObjectLegalHoldCommandInput extends PutObjectLegalHoldRequest { +} +/** + * @public + * + * The output of {@link PutObjectLegalHoldCommand}. + */ +export interface PutObjectLegalHoldCommandOutput extends PutObjectLegalHoldOutput, __MetadataBearer { +} +declare const PutObjectLegalHoldCommand_base: { + new (input: PutObjectLegalHoldCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutObjectLegalHoldCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Applies a legal hold configuration to the specified object. For more information, see Locking Objects.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutObjectLegalHoldCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutObjectLegalHoldCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutObjectLegalHoldRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * LegalHold: { // ObjectLockLegalHold + * Status: "ON" || "OFF", + * }, + * RequestPayer: "requester", + * VersionId: "STRING_VALUE", + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutObjectLegalHoldCommand(input); + * const response = await client.send(command); + * // { // PutObjectLegalHoldOutput + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param PutObjectLegalHoldCommandInput - {@link PutObjectLegalHoldCommandInput} + * @returns {@link PutObjectLegalHoldCommandOutput} + * @see {@link PutObjectLegalHoldCommandInput} for command's `input` shape. + * @see {@link PutObjectLegalHoldCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutObjectLegalHoldCommand extends PutObjectLegalHoldCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutObjectLegalHoldRequest; + output: PutObjectLegalHoldOutput; + }; + sdk: { + input: PutObjectLegalHoldCommandInput; + output: PutObjectLegalHoldCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLockConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLockConfigurationCommand.d.ts new file mode 100644 index 0000000..1c37bec --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLockConfigurationCommand.d.ts @@ -0,0 +1,114 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutObjectLockConfigurationOutput, PutObjectLockConfigurationRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutObjectLockConfigurationCommand}. + */ +export interface PutObjectLockConfigurationCommandInput extends PutObjectLockConfigurationRequest { +} +/** + * @public + * + * The output of {@link PutObjectLockConfigurationCommand}. + */ +export interface PutObjectLockConfigurationCommandOutput extends PutObjectLockConfigurationOutput, __MetadataBearer { +} +declare const PutObjectLockConfigurationCommand_base: { + new (input: PutObjectLockConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutObjectLockConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Places an Object Lock configuration on the specified bucket. The rule specified in the Object Lock + * configuration will be applied by default to every new object placed in the specified bucket. For more + * information, see Locking + * Objects.

+ * + *
    + *
  • + *

    The DefaultRetention settings require both a mode and a period.

    + *
  • + *
  • + *

    The DefaultRetention period can be either Days or Years + * but you must select one. You cannot specify Days and Years at the same + * time.

    + *
  • + *
  • + *

    You can enable Object Lock for new or existing buckets. For more information, see Configuring + * Object Lock.

    + *
  • + *
+ *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutObjectLockConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutObjectLockConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutObjectLockConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ObjectLockConfiguration: { // ObjectLockConfiguration + * ObjectLockEnabled: "Enabled", + * Rule: { // ObjectLockRule + * DefaultRetention: { // DefaultRetention + * Mode: "GOVERNANCE" || "COMPLIANCE", + * Days: Number("int"), + * Years: Number("int"), + * }, + * }, + * }, + * RequestPayer: "requester", + * Token: "STRING_VALUE", + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutObjectLockConfigurationCommand(input); + * const response = await client.send(command); + * // { // PutObjectLockConfigurationOutput + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param PutObjectLockConfigurationCommandInput - {@link PutObjectLockConfigurationCommandInput} + * @returns {@link PutObjectLockConfigurationCommandOutput} + * @see {@link PutObjectLockConfigurationCommandInput} for command's `input` shape. + * @see {@link PutObjectLockConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutObjectLockConfigurationCommand extends PutObjectLockConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutObjectLockConfigurationRequest; + output: PutObjectLockConfigurationOutput; + }; + sdk: { + input: PutObjectLockConfigurationCommandInput; + output: PutObjectLockConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectRetentionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectRetentionCommand.d.ts new file mode 100644 index 0000000..c84954e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectRetentionCommand.d.ts @@ -0,0 +1,95 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutObjectRetentionOutput, PutObjectRetentionRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutObjectRetentionCommand}. + */ +export interface PutObjectRetentionCommandInput extends PutObjectRetentionRequest { +} +/** + * @public + * + * The output of {@link PutObjectRetentionCommand}. + */ +export interface PutObjectRetentionCommandOutput extends PutObjectRetentionOutput, __MetadataBearer { +} +declare const PutObjectRetentionCommand_base: { + new (input: PutObjectRetentionCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutObjectRetentionCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Places an Object Retention configuration on an object. For more information, see Locking Objects. Users or + * accounts require the s3:PutObjectRetention permission in order to place an Object Retention + * configuration on objects. Bypassing a Governance Retention configuration requires the + * s3:BypassGovernanceRetention permission.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutObjectRetentionCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutObjectRetentionCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutObjectRetentionRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * Retention: { // ObjectLockRetention + * Mode: "GOVERNANCE" || "COMPLIANCE", + * RetainUntilDate: new Date("TIMESTAMP"), + * }, + * RequestPayer: "requester", + * VersionId: "STRING_VALUE", + * BypassGovernanceRetention: true || false, + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutObjectRetentionCommand(input); + * const response = await client.send(command); + * // { // PutObjectRetentionOutput + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param PutObjectRetentionCommandInput - {@link PutObjectRetentionCommandInput} + * @returns {@link PutObjectRetentionCommandOutput} + * @see {@link PutObjectRetentionCommandInput} for command's `input` shape. + * @see {@link PutObjectRetentionCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutObjectRetentionCommand extends PutObjectRetentionCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutObjectRetentionRequest; + output: PutObjectRetentionOutput; + }; + sdk: { + input: PutObjectRetentionCommandInput; + output: PutObjectRetentionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectTaggingCommand.d.ts new file mode 100644 index 0000000..e2ccde2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectTaggingCommand.d.ts @@ -0,0 +1,168 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutObjectTaggingOutput, PutObjectTaggingRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutObjectTaggingCommand}. + */ +export interface PutObjectTaggingCommandInput extends PutObjectTaggingRequest { +} +/** + * @public + * + * The output of {@link PutObjectTaggingCommand}. + */ +export interface PutObjectTaggingCommandOutput extends PutObjectTaggingOutput, __MetadataBearer { +} +declare const PutObjectTaggingCommand_base: { + new (input: PutObjectTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutObjectTaggingCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Sets the supplied tag-set to an object that already exists in a bucket. A tag is a key-value pair. + * For more information, see Object Tagging.

+ *

You can associate tags with an object by sending a PUT request against the tagging subresource that + * is associated with the object. You can retrieve tags by sending a GET request. For more information, see + * GetObjectTagging.

+ *

For tagging-related restrictions related to characters and encodings, see Tag + * Restrictions. Note that Amazon S3 limits the maximum number of tags to 10 tags per object.

+ *

To use this operation, you must have permission to perform the s3:PutObjectTagging + * action. By default, the bucket owner has this permission and can grant this permission to others.

+ *

To put tags of any other version, use the versionId query parameter. You also need + * permission for the s3:PutObjectVersionTagging action.

+ *

+ * PutObjectTagging has the following special errors. For more Amazon S3 errors see, Error Responses.

+ *
    + *
  • + *

    + * InvalidTag - The tag provided was not a valid tag. This error can occur if + * the tag did not pass input validation. For more information, see Object Tagging.

    + *
  • + *
  • + *

    + * MalformedXML - The XML provided does not match the schema.

    + *
  • + *
  • + *

    + * OperationAborted - A conflicting conditional action is currently in progress + * against this resource. Please try again.

    + *
  • + *
  • + *

    + * InternalError - The service was unable to apply the provided tag to the + * object.

    + *
  • + *
+ *

The following operations are related to PutObjectTagging:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutObjectTaggingCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutObjectTaggingCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutObjectTaggingRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * Tagging: { // Tagging + * TagSet: [ // TagSet // required + * { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * RequestPayer: "requester", + * }; + * const command = new PutObjectTaggingCommand(input); + * const response = await client.send(command); + * // { // PutObjectTaggingOutput + * // VersionId: "STRING_VALUE", + * // }; + * + * ``` + * + * @param PutObjectTaggingCommandInput - {@link PutObjectTaggingCommandInput} + * @returns {@link PutObjectTaggingCommandOutput} + * @see {@link PutObjectTaggingCommandInput} for command's `input` shape. + * @see {@link PutObjectTaggingCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To add tags to an existing object + * ```javascript + * // The following example adds tags to an existing object. + * const input = { + * Bucket: "examplebucket", + * Key: "HappyFace.jpg", + * Tagging: { + * TagSet: [ + * { + * Key: "Key3", + * Value: "Value3" + * }, + * { + * Key: "Key4", + * Value: "Value4" + * } + * ] + * } + * }; + * const command = new PutObjectTaggingCommand(input); + * const response = await client.send(command); + * /* response is + * { + * VersionId: "null" + * } + * *\/ + * ``` + * + * @public + */ +export declare class PutObjectTaggingCommand extends PutObjectTaggingCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutObjectTaggingRequest; + output: PutObjectTaggingOutput; + }; + sdk: { + input: PutObjectTaggingCommandInput; + output: PutObjectTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutPublicAccessBlockCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutPublicAccessBlockCommand.d.ts new file mode 100644 index 0000000..b512b0c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/PutPublicAccessBlockCommand.d.ts @@ -0,0 +1,123 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { PutPublicAccessBlockRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link PutPublicAccessBlockCommand}. + */ +export interface PutPublicAccessBlockCommandInput extends PutPublicAccessBlockRequest { +} +/** + * @public + * + * The output of {@link PutPublicAccessBlockCommand}. + */ +export interface PutPublicAccessBlockCommandOutput extends __MetadataBearer { +} +declare const PutPublicAccessBlockCommand_base: { + new (input: PutPublicAccessBlockCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: PutPublicAccessBlockCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Creates or modifies the PublicAccessBlock configuration for an Amazon S3 bucket. To use this + * operation, you must have the s3:PutBucketPublicAccessBlock permission. For more information + * about Amazon S3 permissions, see Specifying Permissions in a + * Policy.

+ * + *

When Amazon S3 evaluates the PublicAccessBlock configuration for a bucket or an + * object, it checks the PublicAccessBlock configuration for both the bucket (or + * the bucket that contains the object) and the bucket owner's account. Account-level settings + * automatically inherit from organization-level policies when present. If the + * PublicAccessBlock configurations are different between the bucket and the + * account, Amazon S3 uses the most restrictive combination of the bucket-level and account-level + * settings.

+ *
+ *

For more information about when Amazon S3 considers a bucket or an object public, see The Meaning of "Public".

+ *

The following operations are related to PutPublicAccessBlock:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, PutPublicAccessBlockCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, PutPublicAccessBlockCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // PutPublicAccessBlockRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * PublicAccessBlockConfiguration: { // PublicAccessBlockConfiguration + * BlockPublicAcls: true || false, + * IgnorePublicAcls: true || false, + * BlockPublicPolicy: true || false, + * RestrictPublicBuckets: true || false, + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new PutPublicAccessBlockCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutPublicAccessBlockCommandInput - {@link PutPublicAccessBlockCommandInput} + * @returns {@link PutPublicAccessBlockCommandOutput} + * @see {@link PutPublicAccessBlockCommandInput} for command's `input` shape. + * @see {@link PutPublicAccessBlockCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class PutPublicAccessBlockCommand extends PutPublicAccessBlockCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: PutPublicAccessBlockRequest; + output: {}; + }; + sdk: { + input: PutPublicAccessBlockCommandInput; + output: PutPublicAccessBlockCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/RenameObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/RenameObjectCommand.d.ts new file mode 100644 index 0000000..4803146 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/RenameObjectCommand.d.ts @@ -0,0 +1,143 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { RenameObjectOutput, RenameObjectRequest } from "../models/models_0"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link RenameObjectCommand}. + */ +export interface RenameObjectCommandInput extends RenameObjectRequest { +} +/** + * @public + * + * The output of {@link RenameObjectCommand}. + */ +export interface RenameObjectCommandOutput extends RenameObjectOutput, __MetadataBearer { +} +declare const RenameObjectCommand_base: { + new (input: RenameObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: RenameObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Renames an existing object in a directory bucket that uses the S3 Express One Zone storage class. + * You can use RenameObject by specifying an existing object’s name as the source and the new + * name of the object as the destination within the same directory bucket.

+ * + *

+ * RenameObject is only supported for objects stored in the S3 Express One Zone storage + * class.

+ *
+ *

To prevent overwriting an object, you can use the If-None-Match conditional + * header.

+ *
    + *
  • + *

    + * If-None-Match - Renames the object only if an object + * with the specified name does not already exist in the directory bucket. If you don't want to + * overwrite an existing object, you can add the If-None-Match conditional header with the + * value ‘*’ in the RenameObject request. Amazon S3 then returns a 412 + * Precondition Failed error if the object with the specified name already exists. For more + * information, see RFC 7232.

    + *
  • + *
+ *
+ *
Permissions
+ *
+ *

To grant access to the RenameObject operation on a directory bucket, we + * recommend that you use the CreateSession operation for session-based authorization. + * Specifically, you grant the s3express:CreateSession permission to the directory + * bucket in a bucket policy or an IAM identity-based policy. Then, you make the + * CreateSession API call on the directory bucket to obtain a session token. With the + * session token in your request header, you can make API requests to this operation. After the + * session token expires, you make another CreateSession API call to generate a new + * session token for use. The Amazon Web Services CLI and SDKs will create and manage your session including + * refreshing the session token automatically to avoid service interruptions when a session expires. + * In your bucket policy, you can specify the s3express:SessionMode condition key to + * control who can create a ReadWrite or ReadOnly session. A + * ReadWrite session is required for executing all the Zonal endpoint API operations, + * including RenameObject. For more information about authorization, see + * CreateSession + * . To learn more about Zonal endpoint API operations, see + * Authorizing Zonal endpoint API operations with CreateSession in the Amazon S3 User + * Guide.

+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, RenameObjectCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, RenameObjectCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // RenameObjectRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * RenameSource: "STRING_VALUE", // required + * DestinationIfMatch: "STRING_VALUE", + * DestinationIfNoneMatch: "STRING_VALUE", + * DestinationIfModifiedSince: new Date("TIMESTAMP"), + * DestinationIfUnmodifiedSince: new Date("TIMESTAMP"), + * SourceIfMatch: "STRING_VALUE", + * SourceIfNoneMatch: "STRING_VALUE", + * SourceIfModifiedSince: new Date("TIMESTAMP"), + * SourceIfUnmodifiedSince: new Date("TIMESTAMP"), + * ClientToken: "STRING_VALUE", + * }; + * const command = new RenameObjectCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param RenameObjectCommandInput - {@link RenameObjectCommandInput} + * @returns {@link RenameObjectCommandOutput} + * @see {@link RenameObjectCommandInput} for command's `input` shape. + * @see {@link RenameObjectCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link IdempotencyParameterMismatch} (client fault) + *

Parameters on this idempotent request are inconsistent with parameters used in previous request(s).

+ *

For a list of error codes and more information on Amazon S3 errors, see Error codes.

+ * + *

Idempotency ensures that an API request completes no more than one time. With an idempotent + * request, if the original request completes successfully, any subsequent retries complete successfully + * without performing any further actions.

+ *
+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class RenameObjectCommand extends RenameObjectCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: RenameObjectRequest; + output: {}; + }; + sdk: { + input: RenameObjectCommandInput; + output: RenameObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/RestoreObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/RestoreObjectCommand.d.ts new file mode 100644 index 0000000..c2c75c8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/RestoreObjectCommand.d.ts @@ -0,0 +1,381 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { RestoreObjectOutput } from "../models/models_0"; +import type { RestoreObjectRequest } from "../models/models_1"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link RestoreObjectCommand}. + */ +export interface RestoreObjectCommandInput extends RestoreObjectRequest { +} +/** + * @public + * + * The output of {@link RestoreObjectCommand}. + */ +export interface RestoreObjectCommandOutput extends RestoreObjectOutput, __MetadataBearer { +} +declare const RestoreObjectCommand_base: { + new (input: RestoreObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: RestoreObjectCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Restores an archived copy of an object back into Amazon S3

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ *

This action performs the following types of requests:

+ *
    + *
  • + *

    + * restore an archive - Restore an archived object

    + *
  • + *
+ *

For more information about the S3 structure in the request body, see the + * following:

+ * + *
+ *
Permissions
+ *
+ *

To use this operation, you must have permissions to perform the s3:RestoreObject + * action. The bucket owner has this permission by default and can grant this permission to others. + * For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 + * Resources in the Amazon S3 User Guide.

+ *
+ *
Restoring objects
+ *
+ *

Objects that you archive to the S3 Glacier Flexible Retrieval or S3 Glacier Deep Archive + * storage class, and S3 Intelligent-Tiering Archive or S3 Intelligent-Tiering Deep Archive tiers, are not accessible in + * real time. For objects in the S3 Glacier Flexible Retrieval or S3 Glacier Deep Archive + * storage classes, you must first initiate a restore request, and then wait until a temporary copy + * of the object is available. If you want a permanent copy of the object, create a copy of it in the + * Amazon S3 Standard storage class in your S3 bucket. To access an archived object, you must restore the + * object for the duration (number of days) that you specify. For objects in the Archive Access or + * Deep Archive Access tiers of S3 Intelligent-Tiering, you must first initiate a restore request, and + * then wait until the object is moved into the Frequent Access tier.

+ *

To restore a specific object version, you can provide a version ID. If you don't provide a + * version ID, Amazon S3 restores the current version.

+ *

When restoring an archived object, you can specify one of the following data access tier + * options in the Tier element of the request body:

+ *
    + *
  • + *

    + * Expedited - Expedited retrievals allow you to quickly access your data stored + * in the S3 Glacier Flexible Retrieval storage class or S3 Intelligent-Tiering Archive tier when occasional + * urgent requests for restoring archives are required. For all but the largest archived objects + * (250 MB+), data accessed using Expedited retrievals is typically made available within 1–5 + * minutes. Provisioned capacity ensures that retrieval capacity for Expedited retrievals is + * available when you need it. Expedited retrievals and provisioned capacity are not available + * for objects stored in the S3 Glacier Deep Archive storage class or + * S3 Intelligent-Tiering Deep Archive tier.

    + *
  • + *
  • + *

    + * Standard - Standard retrievals allow you to access any of your archived + * objects within several hours. This is the default option for retrieval requests that do not + * specify the retrieval option. Standard retrievals typically finish within 3–5 hours for + * objects stored in the S3 Glacier Flexible Retrieval storage class or S3 Intelligent-Tiering Archive tier. + * They typically finish within 12 hours for objects stored in the + * S3 Glacier Deep Archive storage class or S3 Intelligent-Tiering Deep Archive tier. Standard + * retrievals are free for objects stored in S3 Intelligent-Tiering.

    + *
  • + *
  • + *

    + * Bulk - Bulk retrievals free for objects stored in the S3 Glacier Flexible + * Retrieval and S3 Intelligent-Tiering storage classes, enabling you to retrieve large amounts, + * even petabytes, of data at no cost. Bulk retrievals typically finish within 5–12 hours for + * objects stored in the S3 Glacier Flexible Retrieval storage class or S3 Intelligent-Tiering Archive tier. + * Bulk retrievals are also the lowest-cost retrieval option when restoring objects from + * S3 Glacier Deep Archive. They typically finish within 48 hours for objects stored in + * the S3 Glacier Deep Archive storage class or S3 Intelligent-Tiering Deep Archive tier.

    + *
  • + *
+ *

For more information about archive retrieval options and provisioned capacity for + * Expedited data access, see Restoring Archived Objects in the + * Amazon S3 User Guide.

+ *

You can use Amazon S3 restore speed upgrade to change the restore speed to a faster speed while it + * is in progress. For more information, see + * Upgrading the speed of an in-progress restore in the + * Amazon S3 User Guide.

+ *

To get the status of object restoration, you can send a HEAD request. Operations + * return the x-amz-restore header, which provides information about the restoration + * status, in the response. You can use Amazon S3 event notifications to notify you when a restore is + * initiated or completed. For more information, see Configuring Amazon S3 Event Notifications in + * the Amazon S3 User Guide.

+ *

After restoring an archived object, you can update the restoration period by reissuing the + * request with a new period. Amazon S3 updates the restoration period relative to the current time and + * charges only for the request-there are no data transfer charges. You cannot update the + * restoration period when Amazon S3 is actively processing your current restore request for the + * object.

+ *

If your bucket has a lifecycle configuration with a rule that includes an expiration action, + * the object expiration overrides the life span that you specify in a restore request. For example, + * if you restore an object copy for 10 days, but the object is scheduled to expire in 3 days, Amazon S3 + * deletes the object in 3 days. For more information about lifecycle configuration, see PutBucketLifecycleConfiguration and Object Lifecycle Management in + * Amazon S3 User Guide.

+ *
+ *
Responses
+ *
+ *

A successful action returns either the 200 OK or 202 Accepted status + * code.

+ *
    + *
  • + *

    If the object is not previously restored, then Amazon S3 returns 202 Accepted in + * the response.

    + *
  • + *
  • + *

    If the object is previously restored, Amazon S3 returns 200 OK in the response. + *

    + *
  • + *
+ *
    + *
  • + *

    Special errors:

    + *
      + *
    • + *

      + * Code: RestoreAlreadyInProgress + *

      + *
    • + *
    • + *

      + * Cause: Object restore is already in progress. + *

      + *
    • + *
    • + *

      + * HTTP Status Code: 409 Conflict + *

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client + *

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: GlacierExpeditedRetrievalNotAvailable + *

      + *
    • + *
    • + *

      + * Cause: expedited retrievals are currently not available. Try again later. + * (Returned if there is insufficient capacity to process the Expedited request. This error + * applies only to Expedited retrievals and not to S3 Standard or Bulk + * retrievals.) + *

      + *
    • + *
    • + *

      + * HTTP Status Code: 503 + *

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: N/A + *

      + *
    • + *
    + *
  • + *
+ *
+ *
+ *

The following operations are related to RestoreObject:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, RestoreObjectCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, RestoreObjectCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // RestoreObjectRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * RestoreRequest: { // RestoreRequest + * Days: Number("int"), + * GlacierJobParameters: { // GlacierJobParameters + * Tier: "Standard" || "Bulk" || "Expedited", // required + * }, + * Type: "SELECT", + * Tier: "Standard" || "Bulk" || "Expedited", + * Description: "STRING_VALUE", + * SelectParameters: { // SelectParameters + * InputSerialization: { // InputSerialization + * CSV: { // CSVInput + * FileHeaderInfo: "USE" || "IGNORE" || "NONE", + * Comments: "STRING_VALUE", + * QuoteEscapeCharacter: "STRING_VALUE", + * RecordDelimiter: "STRING_VALUE", + * FieldDelimiter: "STRING_VALUE", + * QuoteCharacter: "STRING_VALUE", + * AllowQuotedRecordDelimiter: true || false, + * }, + * CompressionType: "NONE" || "GZIP" || "BZIP2", + * JSON: { // JSONInput + * Type: "DOCUMENT" || "LINES", + * }, + * Parquet: {}, + * }, + * ExpressionType: "SQL", // required + * Expression: "STRING_VALUE", // required + * OutputSerialization: { // OutputSerialization + * CSV: { // CSVOutput + * QuoteFields: "ALWAYS" || "ASNEEDED", + * QuoteEscapeCharacter: "STRING_VALUE", + * RecordDelimiter: "STRING_VALUE", + * FieldDelimiter: "STRING_VALUE", + * QuoteCharacter: "STRING_VALUE", + * }, + * JSON: { // JSONOutput + * RecordDelimiter: "STRING_VALUE", + * }, + * }, + * }, + * OutputLocation: { // OutputLocation + * S3: { // S3Location + * BucketName: "STRING_VALUE", // required + * Prefix: "STRING_VALUE", // required + * Encryption: { // Encryption + * EncryptionType: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", // required + * KMSKeyId: "STRING_VALUE", + * KMSContext: "STRING_VALUE", + * }, + * CannedACL: "private" || "public-read" || "public-read-write" || "authenticated-read" || "aws-exec-read" || "bucket-owner-read" || "bucket-owner-full-control", + * AccessControlList: [ // Grants + * { // Grant + * Grantee: { // Grantee + * DisplayName: "STRING_VALUE", + * EmailAddress: "STRING_VALUE", + * ID: "STRING_VALUE", + * URI: "STRING_VALUE", + * Type: "CanonicalUser" || "AmazonCustomerByEmail" || "Group", // required + * }, + * Permission: "FULL_CONTROL" || "WRITE" || "WRITE_ACP" || "READ" || "READ_ACP", + * }, + * ], + * Tagging: { // Tagging + * TagSet: [ // TagSet // required + * { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * }, + * UserMetadata: [ // UserMetadata + * { // MetadataEntry + * Name: "STRING_VALUE", + * Value: "STRING_VALUE", + * }, + * ], + * StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * }, + * }, + * }, + * RequestPayer: "requester", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new RestoreObjectCommand(input); + * const response = await client.send(command); + * // { // RestoreObjectOutput + * // RequestCharged: "requester", + * // RestoreOutputPath: "STRING_VALUE", + * // }; + * + * ``` + * + * @param RestoreObjectCommandInput - {@link RestoreObjectCommandInput} + * @returns {@link RestoreObjectCommandOutput} + * @see {@link RestoreObjectCommandInput} for command's `input` shape. + * @see {@link RestoreObjectCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link ObjectAlreadyInActiveTierError} (client fault) + *

This action is not allowed against this storage tier.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To restore an archived object + * ```javascript + * // The following example restores for one day an archived copy of an object back into Amazon S3 bucket. + * const input = { + * Bucket: "examplebucket", + * Key: "archivedobjectkey", + * RestoreRequest: { + * Days: 1, + * GlacierJobParameters: { + * Tier: "Expedited" + * } + * } + * }; + * const command = new RestoreObjectCommand(input); + * const response = await client.send(command); + * /* response is + * { /* empty *\/ } + * *\/ + * ``` + * + * @public + */ +export declare class RestoreObjectCommand extends RestoreObjectCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: RestoreObjectRequest; + output: RestoreObjectOutput; + }; + sdk: { + input: RestoreObjectCommandInput; + output: RestoreObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/SelectObjectContentCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/SelectObjectContentCommand.d.ts new file mode 100644 index 0000000..c846177 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/SelectObjectContentCommand.d.ts @@ -0,0 +1,251 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { SelectObjectContentOutput, SelectObjectContentRequest } from "../models/models_1"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link SelectObjectContentCommand}. + */ +export interface SelectObjectContentCommandInput extends SelectObjectContentRequest { +} +/** + * @public + * + * The output of {@link SelectObjectContentCommand}. + */ +export interface SelectObjectContentCommandOutput extends SelectObjectContentOutput, __MetadataBearer { +} +declare const SelectObjectContentCommand_base: { + new (input: SelectObjectContentCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: SelectObjectContentCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

This action filters the contents of an Amazon S3 object based on a simple structured query language (SQL) + * statement. In the request, along with the SQL expression, you must also specify a data serialization + * format (JSON, CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse object data into + * records, and returns only records that match the specified SQL expression. You must also specify the + * data serialization format for the response.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ *

For more information about Amazon S3 Select, see Selecting Content from Objects + * and SELECT Command in + * the Amazon S3 User Guide.

+ *

+ *
+ *
Permissions
+ *
+ *

You must have the s3:GetObject permission for this operation. Amazon S3 Select does + * not support anonymous access. For more information about permissions, see Specifying Permissions + * in a Policy in the Amazon S3 User Guide.

+ *
+ *
Object Data Formats
+ *
+ *

You can use Amazon S3 Select to query objects that have the following format properties:

+ *
    + *
  • + *

    + * CSV, JSON, and Parquet - Objects must be in CSV, JSON, or Parquet + * format.

    + *
  • + *
  • + *

    + * UTF-8 - UTF-8 is the only encoding type Amazon S3 Select supports.

    + *
  • + *
  • + *

    + * GZIP or BZIP2 - CSV and JSON files can be compressed using GZIP or + * BZIP2. GZIP and BZIP2 are the only compression formats that Amazon S3 Select supports for CSV and + * JSON files. Amazon S3 Select supports columnar compression for Parquet using GZIP or Snappy. Amazon S3 + * Select does not support whole-object compression for Parquet objects.

    + *
  • + *
  • + *

    + * Server-side encryption - Amazon S3 Select supports querying objects that + * are protected with server-side encryption.

    + *

    For objects that are encrypted with customer-provided encryption keys (SSE-C), you must + * use HTTPS, and you must use the headers that are documented in the GetObject. For more information about + * SSE-C, see Server-Side Encryption + * (Using Customer-Provided Encryption Keys) in the + * Amazon S3 User Guide.

    + *

    For objects that are encrypted with Amazon S3 managed keys (SSE-S3) and Amazon Web Services KMS keys + * (SSE-KMS), server-side encryption is handled transparently, so you don't need to specify + * anything. For more information about server-side encryption, including SSE-S3 and SSE-KMS, see + * Protecting + * Data Using Server-Side Encryption in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
Working with the Response Body
+ *
+ *

Given the response size is unknown, Amazon S3 Select streams the response as a series of messages + * and includes a Transfer-Encoding header with chunked as its value in the + * response. For more information, see Appendix: SelectObjectContent + * Response.

+ *
+ *
GetObject Support
+ *
+ *

The SelectObjectContent action does not support the following + * GetObject functionality. For more information, see GetObject.

+ *
    + *
  • + *

    + * Range: Although you can specify a scan range for an Amazon S3 Select request (see + * SelectObjectContentRequest - ScanRange in the request parameters), you + * cannot specify the range of bytes of an object to return.

    + *
  • + *
  • + *

    The GLACIER, DEEP_ARCHIVE, and REDUCED_REDUNDANCY + * storage classes, or the ARCHIVE_ACCESS and DEEP_ARCHIVE_ACCESS + * access tiers of the INTELLIGENT_TIERING storage class: You cannot query objects + * in the GLACIER, DEEP_ARCHIVE, or REDUCED_REDUNDANCY + * storage classes, nor objects in the ARCHIVE_ACCESS or + * DEEP_ARCHIVE_ACCESS access tiers of the INTELLIGENT_TIERING + * storage class. For more information about storage classes, see Using Amazon S3 storage classes + * in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
Special Errors
+ *
+ *

For a list of special errors for this operation, see List of SELECT + * Object Content Error Codes + *

+ *
+ *
+ *

The following operations are related to SelectObjectContent:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, SelectObjectContentCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, SelectObjectContentCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // SelectObjectContentRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * Expression: "STRING_VALUE", // required + * ExpressionType: "SQL", // required + * RequestProgress: { // RequestProgress + * Enabled: true || false, + * }, + * InputSerialization: { // InputSerialization + * CSV: { // CSVInput + * FileHeaderInfo: "USE" || "IGNORE" || "NONE", + * Comments: "STRING_VALUE", + * QuoteEscapeCharacter: "STRING_VALUE", + * RecordDelimiter: "STRING_VALUE", + * FieldDelimiter: "STRING_VALUE", + * QuoteCharacter: "STRING_VALUE", + * AllowQuotedRecordDelimiter: true || false, + * }, + * CompressionType: "NONE" || "GZIP" || "BZIP2", + * JSON: { // JSONInput + * Type: "DOCUMENT" || "LINES", + * }, + * Parquet: {}, + * }, + * OutputSerialization: { // OutputSerialization + * CSV: { // CSVOutput + * QuoteFields: "ALWAYS" || "ASNEEDED", + * QuoteEscapeCharacter: "STRING_VALUE", + * RecordDelimiter: "STRING_VALUE", + * FieldDelimiter: "STRING_VALUE", + * QuoteCharacter: "STRING_VALUE", + * }, + * JSON: { // JSONOutput + * RecordDelimiter: "STRING_VALUE", + * }, + * }, + * ScanRange: { // ScanRange + * Start: Number("long"), + * End: Number("long"), + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new SelectObjectContentCommand(input); + * const response = await client.send(command); + * // { // SelectObjectContentOutput + * // Payload: { // SelectObjectContentEventStream Union: only one key present + * // Records: { // RecordsEvent + * // Payload: new Uint8Array(), + * // }, + * // Stats: { // StatsEvent + * // Details: { // Stats + * // BytesScanned: Number("long"), + * // BytesProcessed: Number("long"), + * // BytesReturned: Number("long"), + * // }, + * // }, + * // Progress: { // ProgressEvent + * // Details: { // Progress + * // BytesScanned: Number("long"), + * // BytesProcessed: Number("long"), + * // BytesReturned: Number("long"), + * // }, + * // }, + * // Cont: {}, + * // End: {}, + * // }, + * // }; + * + * ``` + * + * @param SelectObjectContentCommandInput - {@link SelectObjectContentCommandInput} + * @returns {@link SelectObjectContentCommandOutput} + * @see {@link SelectObjectContentCommandInput} for command's `input` shape. + * @see {@link SelectObjectContentCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class SelectObjectContentCommand extends SelectObjectContentCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: SelectObjectContentRequest; + output: SelectObjectContentOutput; + }; + sdk: { + input: SelectObjectContentCommandInput; + output: SelectObjectContentCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateBucketMetadataInventoryTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateBucketMetadataInventoryTableConfigurationCommand.d.ts new file mode 100644 index 0000000..d5d92f0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateBucketMetadataInventoryTableConfigurationCommand.d.ts @@ -0,0 +1,166 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { UpdateBucketMetadataInventoryTableConfigurationRequest } from "../models/models_1"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UpdateBucketMetadataInventoryTableConfigurationCommand}. + */ +export interface UpdateBucketMetadataInventoryTableConfigurationCommandInput extends UpdateBucketMetadataInventoryTableConfigurationRequest { +} +/** + * @public + * + * The output of {@link UpdateBucketMetadataInventoryTableConfigurationCommand}. + */ +export interface UpdateBucketMetadataInventoryTableConfigurationCommandOutput extends __MetadataBearer { +} +declare const UpdateBucketMetadataInventoryTableConfigurationCommand_base: { + new (input: UpdateBucketMetadataInventoryTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: UpdateBucketMetadataInventoryTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Enables or disables a live inventory table for an S3 Metadata configuration on a general + * purpose bucket. For more information, see + * Accelerating + * data discovery with S3 Metadata in the Amazon S3 User Guide.

+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have the following permissions. For more information, see + * Setting up permissions for configuring metadata tables in the + * Amazon S3 User Guide.

+ *

If you want to encrypt your inventory table with server-side encryption with Key Management Service + * (KMS) keys (SSE-KMS), you need additional permissions in your KMS key policy. For more + * information, see + * Setting up permissions for configuring metadata tables in the + * Amazon S3 User Guide.

+ *
    + *
  • + *

    + * s3:UpdateBucketMetadataInventoryTableConfiguration + *

    + *
  • + *
  • + *

    + * s3tables:CreateTableBucket + *

    + *
  • + *
  • + *

    + * s3tables:CreateNamespace + *

    + *
  • + *
  • + *

    + * s3tables:GetTable + *

    + *
  • + *
  • + *

    + * s3tables:CreateTable + *

    + *
  • + *
  • + *

    + * s3tables:PutTablePolicy + *

    + *
  • + *
  • + *

    + * s3tables:PutTableEncryption + *

    + *
  • + *
  • + *

    + * kms:DescribeKey + *

    + *
  • + *
+ *
+ *
+ *

The following operations are related to UpdateBucketMetadataInventoryTableConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, UpdateBucketMetadataInventoryTableConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, UpdateBucketMetadataInventoryTableConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // UpdateBucketMetadataInventoryTableConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * InventoryTableConfiguration: { // InventoryTableConfigurationUpdates + * ConfigurationState: "ENABLED" || "DISABLED", // required + * EncryptionConfiguration: { // MetadataTableEncryptionConfiguration + * SseAlgorithm: "aws:kms" || "AES256", // required + * KmsKeyArn: "STRING_VALUE", + * }, + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new UpdateBucketMetadataInventoryTableConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param UpdateBucketMetadataInventoryTableConfigurationCommandInput - {@link UpdateBucketMetadataInventoryTableConfigurationCommandInput} + * @returns {@link UpdateBucketMetadataInventoryTableConfigurationCommandOutput} + * @see {@link UpdateBucketMetadataInventoryTableConfigurationCommandInput} for command's `input` shape. + * @see {@link UpdateBucketMetadataInventoryTableConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class UpdateBucketMetadataInventoryTableConfigurationCommand extends UpdateBucketMetadataInventoryTableConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: UpdateBucketMetadataInventoryTableConfigurationRequest; + output: {}; + }; + sdk: { + input: UpdateBucketMetadataInventoryTableConfigurationCommandInput; + output: UpdateBucketMetadataInventoryTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateBucketMetadataJournalTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateBucketMetadataJournalTableConfigurationCommand.d.ts new file mode 100644 index 0000000..619e58a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateBucketMetadataJournalTableConfigurationCommand.d.ts @@ -0,0 +1,118 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { UpdateBucketMetadataJournalTableConfigurationRequest } from "../models/models_1"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UpdateBucketMetadataJournalTableConfigurationCommand}. + */ +export interface UpdateBucketMetadataJournalTableConfigurationCommandInput extends UpdateBucketMetadataJournalTableConfigurationRequest { +} +/** + * @public + * + * The output of {@link UpdateBucketMetadataJournalTableConfigurationCommand}. + */ +export interface UpdateBucketMetadataJournalTableConfigurationCommandOutput extends __MetadataBearer { +} +declare const UpdateBucketMetadataJournalTableConfigurationCommand_base: { + new (input: UpdateBucketMetadataJournalTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: UpdateBucketMetadataJournalTableConfigurationCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Enables or disables journal table record expiration for an S3 Metadata configuration on a general + * purpose bucket. For more information, see + * Accelerating + * data discovery with S3 Metadata in the Amazon S3 User Guide.

+ *
+ *
Permissions
+ *
+ *

To use this operation, you must have the s3:UpdateBucketMetadataJournalTableConfiguration + * permission. For more information, see Setting up permissions for + * configuring metadata tables in the Amazon S3 User Guide.

+ *
+ *
+ *

The following operations are related to UpdateBucketMetadataJournalTableConfiguration:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, UpdateBucketMetadataJournalTableConfigurationCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, UpdateBucketMetadataJournalTableConfigurationCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // UpdateBucketMetadataJournalTableConfigurationRequest + * Bucket: "STRING_VALUE", // required + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * JournalTableConfiguration: { // JournalTableConfigurationUpdates + * RecordExpiration: { // RecordExpiration + * Expiration: "ENABLED" || "DISABLED", // required + * Days: Number("int"), + * }, + * }, + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new UpdateBucketMetadataJournalTableConfigurationCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param UpdateBucketMetadataJournalTableConfigurationCommandInput - {@link UpdateBucketMetadataJournalTableConfigurationCommandInput} + * @returns {@link UpdateBucketMetadataJournalTableConfigurationCommandOutput} + * @see {@link UpdateBucketMetadataJournalTableConfigurationCommandInput} for command's `input` shape. + * @see {@link UpdateBucketMetadataJournalTableConfigurationCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class UpdateBucketMetadataJournalTableConfigurationCommand extends UpdateBucketMetadataJournalTableConfigurationCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: UpdateBucketMetadataJournalTableConfigurationRequest; + output: {}; + }; + sdk: { + input: UpdateBucketMetadataJournalTableConfigurationCommandInput; + output: UpdateBucketMetadataJournalTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateObjectEncryptionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateObjectEncryptionCommand.d.ts new file mode 100644 index 0000000..48326a1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateObjectEncryptionCommand.d.ts @@ -0,0 +1,259 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { UpdateObjectEncryptionRequest, UpdateObjectEncryptionResponse } from "../models/models_1"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UpdateObjectEncryptionCommand}. + */ +export interface UpdateObjectEncryptionCommandInput extends UpdateObjectEncryptionRequest { +} +/** + * @public + * + * The output of {@link UpdateObjectEncryptionCommand}. + */ +export interface UpdateObjectEncryptionCommandOutput extends UpdateObjectEncryptionResponse, __MetadataBearer { +} +declare const UpdateObjectEncryptionCommand_base: { + new (input: UpdateObjectEncryptionCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: UpdateObjectEncryptionCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets or Amazon S3 on Outposts buckets. + *

+ *
+ *

+ * Updates the server-side encryption type of an existing encrypted object in a general purpose bucket. + * You can use the UpdateObjectEncryption operation to change encrypted objects from + * server-side encryption with Amazon S3 managed keys (SSE-S3) to server-side encryption with Key Management Service (KMS) + * keys (SSE-KMS), or to apply S3 Bucket Keys. You can also use the UpdateObjectEncryption operation + * to change the customer-managed KMS key used to encrypt your data so that you can comply with custom + * key-rotation standards. + *

+ *

Using the UpdateObjectEncryption operation, you can atomically update the server-side + * encryption type of an existing object in a general purpose bucket without any data movement. The + * UpdateObjectEncryption operation uses envelope encryption to re-encrypt the data key used to + * encrypt and decrypt your object with your newly specified server-side encryption type. In other words, + * when you use the UpdateObjectEncryption operation, your data isn't copied, archived + * objects in the S3 Glacier Flexible Retrieval and S3 Glacier Deep Archive storage classes aren't + * restored, and objects in the S3 Intelligent-Tiering storage class aren't moved between tiers. + * Additionally, the UpdateObjectEncryption operation preserves all object metadata + * properties, including the storage class, creation date, last modified date, ETag, and checksum + * properties. For more information, see + * + * Updating server-side encryption for existing objects in the + * Amazon S3 User Guide.

+ *

By default, all UpdateObjectEncryption requests that specify a customer-managed + * KMS key are restricted to KMS keys that are owned by the bucket owner's Amazon Web Services account. If you're + * using Organizations, you can request the ability to use KMS keys owned by other member + * accounts within your organization by contacting Amazon Web Services Support.

+ * + *

Source objects that are unencrypted, or encrypted with either dual-layer server-side encryption + * with KMS keys (DSSE-KMS) or server-side encryption with customer-provided keys (SSE-C) aren't + * supported by this operation. Additionally, you cannot specify SSE-S3 encryption as the requested + * new encryption type UpdateObjectEncryption request.

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    To use the UpdateObjectEncryption operation, you must have the following + * permissions:

    + *
      + *
    • + *

      + * s3:PutObject + *

      + *
    • + *
    • + *

      + * s3:UpdateObjectEncryption + *

      + *
    • + *
    • + *

      + * kms:Encrypt + *

      + *
    • + *
    • + *

      + * kms:Decrypt + *

      + *
    • + *
    • + *

      + * kms:GenerateDataKey + *

      + *
    • + *
    • + *

      + * kms:ReEncrypt* + *

      + *
    • + *
    + *
  • + *
  • + *

    If you're using Organizations, to use this operation with customer-managed + * KMS keys from other Amazon Web Services accounts within your organization, you must have the + * organizations:DescribeAccount permission.

    + *
  • + *
+ *
+ *
+ *
+ *
Errors
+ *
+ *
    + *
  • + *

    You might receive an InvalidRequest error for several reasons. Depending + * on the reason for the error, you might receive one of the following messages:

    + *
      + *
    • + *

      The UpdateObjectEncryption operation doesn't supported unencrypted + * source objects. Only source objects encrypted with SSE-S3 or SSE-KMS are supported.

      + *
    • + *
    • + *

      The UpdateObjectEncryption operation doesn't support source objects + * with the encryption type DSSE-KMS or SSE-C. Only source objects encrypted with SSE-S3 + * or SSE-KMS are supported.

      + *
    • + *
    • + *

      The UpdateObjectEncryption operation doesn't support updating the + * encryption type to DSSE-KMS or SSE-C. Modify the request to specify SSE-KMS + * for the updated encryption type, and then try again.

      + *
    • + *
    • + *

      Requests that modify an object encryption configuration require Amazon Web Services Signature + * Version 4. Modify the request to use Amazon Web Services Signature Version 4, and then try again.

      + *
    • + *
    • + *

      Requests that modify an object encryption configuration require a valid new + * encryption type. Valid values are SSEKMS. Modify the request to specify + * SSE-KMS for the updated encryption type, and then try again.

      + *
    • + *
    • + *

      Requests that modify an object's encryption type to SSE-KMS require an Amazon Web Services KMS key + * Amazon Resource Name (ARN). Modify the request to specify a KMS key ARN, and then + * try again.

      + *
    • + *
    • + *

      Requests that modify an object's encryption type to SSE-KMS require a valid + * Amazon Web Services KMS key Amazon Resource Name (ARN). Confirm that you have a correctly formatted + * KMS key ARN in your request, and then try again.

      + *
    • + *
    • + *

      The BucketKeyEnabled value isn't valid. Valid values are + * true or false. Modify the request to specify a valid value, + * and then try again.

      + *
    • + *
    + *
  • + *
  • + *

    You might receive an AccessDenied error for several reasons. Depending on + * the reason for the error, you might receive one of the following messages:

    + *
      + *
    • + *

      The Amazon Web Services KMS key in the request must be owned by the same account as the bucket. Modify + * the request to specify a KMS key from the same account, and then try again.

      + *
    • + *
    • + *

      The bucket owner's account was approved to make UpdateObjectEncryption requests + * that use any Amazon Web Services KMS key in their organization, but the bucket owner's account isn't part of + * an organization in Organizations. Make sure that the bucket owner's account and the + * specified KMS key belong to the same organization, and then try again.

      + *
    • + *
    • + *

      The specified Amazon Web Services KMS key must be from the same organization in Organizations as + * the bucket. Specify a KMS key that belongs to the same organization as the bucket, and then + * try again.

      + *
    • + *
    • + *

      The encryption type for the specified object can’t be updated because that object is + * protected by S3 Object Lock. If the object has a governance-mode retention period or a legal + * hold, you must first remove the Object Lock status on the object before you issue your + * UpdateObjectEncryption request. You can't use the UpdateObjectEncryption + * operation with objects that have an Object Lock compliance mode retention period applied to them.

      + *
    • + *
    + *
  • + *
+ *
+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, UpdateObjectEncryptionCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, UpdateObjectEncryptionCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // UpdateObjectEncryptionRequest + * Bucket: "STRING_VALUE", // required + * Key: "STRING_VALUE", // required + * VersionId: "STRING_VALUE", + * ObjectEncryption: { // ObjectEncryption Union: only one key present + * SSEKMS: { // SSEKMSEncryption + * KMSKeyArn: "STRING_VALUE", // required + * BucketKeyEnabled: true || false, + * }, + * }, + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * }; + * const command = new UpdateObjectEncryptionCommand(input); + * const response = await client.send(command); + * // { // UpdateObjectEncryptionResponse + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param UpdateObjectEncryptionCommandInput - {@link UpdateObjectEncryptionCommandInput} + * @returns {@link UpdateObjectEncryptionCommandOutput} + * @see {@link UpdateObjectEncryptionCommandInput} for command's `input` shape. + * @see {@link UpdateObjectEncryptionCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link AccessDenied} (client fault) + *

+ * You might receive this error for several reasons. For details, see the description of this API + * operation.

+ * + * @throws {@link InvalidRequest} (client fault) + *

A parameter or header in your request isn't valid. For details, see the description of this API + * operation.

+ * + * @throws {@link NoSuchKey} (client fault) + *

The specified key does not exist.

+ * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class UpdateObjectEncryptionCommand extends UpdateObjectEncryptionCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: UpdateObjectEncryptionRequest; + output: UpdateObjectEncryptionResponse; + }; + sdk: { + input: UpdateObjectEncryptionCommandInput; + output: UpdateObjectEncryptionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCommand.d.ts new file mode 100644 index 0000000..7f1fdce --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCommand.d.ts @@ -0,0 +1,307 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer, StreamingBlobPayloadInputTypes } from "@smithy/types"; +import type { UploadPartOutput, UploadPartRequest } from "../models/models_1"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UploadPartCommand}. + */ +export interface UploadPartCommandInput extends Omit { + Body?: StreamingBlobPayloadInputTypes; +} +/** + * @public + * + * The output of {@link UploadPartCommand}. + */ +export interface UploadPartCommandOutput extends UploadPartOutput, __MetadataBearer { +} +declare const UploadPartCommand_base: { + new (input: UploadPartCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: UploadPartCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Uploads a part in a multipart upload.

+ * + *

In this operation, you provide new data as a part of an object in your request. However, you have + * an option to specify your existing Amazon S3 object as a data source for the part you are uploading. To + * upload a part from an existing object, you use the UploadPartCopy operation.

+ *
+ *

You must initiate a multipart upload (see CreateMultipartUpload) before you can + * upload any part. In response to your initiate request, Amazon S3 returns an upload ID, a unique identifier + * that you must include in your upload part request.

+ *

Part numbers can be any number from 1 to 10,000, inclusive. A part number uniquely identifies a part + * and also defines its position within the object being created. If you upload a new part using the same + * part number that was used with a previous part, the previously uploaded part is overwritten.

+ *

For information about maximum and minimum part sizes and other multipart upload specifications, see + * Multipart upload + * limits in the Amazon S3 User Guide.

+ * + *

After you initiate multipart upload and upload one or more parts, you must either complete or + * abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after + * you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you + * for the parts storage.

+ *
+ *

For more information on multipart uploads, go to Multipart Upload Overview in the + * Amazon S3 User Guide .

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Permissions
+ *
+ *
    + *
  • + *

    + * General purpose bucket permissions - To perform a + * multipart upload with encryption using an Key Management Service key, the requester must have permission to + * the kms:Decrypt and kms:GenerateDataKey actions on the key. The + * requester must also have permissions for the kms:GenerateDataKey action for the + * CreateMultipartUpload API. Then, the requester needs permissions for the + * kms:Decrypt action on the UploadPart and + * UploadPartCopy APIs.

    + *

    These permissions are required because Amazon S3 must decrypt and read data from the encrypted + * file parts before it completes the multipart upload. For more information about KMS + * permissions, see Protecting data using server-side + * encryption with KMS in the Amazon S3 User Guide. For information + * about the permissions required to use the multipart upload API, see Multipart upload and + * permissions and Multipart upload API and + * permissions in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the + * CreateSession + * API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. + * Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see + * CreateSession + * .

    + *

    If the object is encrypted with SSE-KMS, you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key.

    + *
  • + *
+ *
+ *
Data integrity
+ *
+ *

+ * General purpose bucket - To ensure that data is not corrupted + * traversing the network, specify the Content-MD5 header in the upload part request. + * Amazon S3 checks the part data against the provided MD5 value. If they do not match, Amazon S3 returns an + * error. If the upload request is signed with Signature Version 4, then Amazon Web Services S3 uses the + * x-amz-content-sha256 header as a checksum instead of Content-MD5. For + * more information see Authenticating Requests: + * Using the Authorization Header (Amazon Web Services Signature Version 4).

+ * + *

+ * Directory buckets - MD5 is not supported by directory buckets. You can use checksum algorithms to check object integrity.

+ *
+ *
+ *
Encryption
+ *
+ *
    + *
  • + *

    + * General purpose bucket - Server-side encryption is for + * data encryption at rest. Amazon S3 encrypts your data as it writes it to disks in its data centers + * and decrypts it when you access it. You have mutually exclusive options to protect data using + * server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. + * Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys + * (SSE-KMS), and Customer-Provided Keys (SSE-C). Amazon S3 encrypts data with server-side encryption + * using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at + * rest using server-side encryption with other key options. The option you use depends on + * whether you want to use KMS keys (SSE-KMS) or provide your own encryption key + * (SSE-C).

    + *

    Server-side encryption is supported by the S3 Multipart Upload operations. Unless you are + * using a customer-provided encryption key (SSE-C), you don't need to specify the encryption + * parameters in each UploadPart request. Instead, you only need to specify the server-side + * encryption parameters in the initial Initiate Multipart request. For more information, see + * CreateMultipartUpload.

    + * + *

    If you have server-side encryption with customer-provided keys (SSE-C) blocked for your general purpose bucket, you will get an HTTP 403 Access Denied error when you specify the SSE-C request headers while writing new data to your bucket. For more information, see Blocking or unblocking SSE-C for a general purpose bucket.

    + *
    + *

    If you request server-side encryption using a customer-provided encryption key (SSE-C) in + * your initiate multipart upload request, you must provide identical encryption information in + * each part upload using the following request headers.

    + *
      + *
    • + *

      x-amz-server-side-encryption-customer-algorithm

      + *
    • + *
    • + *

      x-amz-server-side-encryption-customer-key

      + *
    • + *
    • + *

      x-amz-server-side-encryption-customer-key-MD5

      + *
    • + *
    + *

    For more information, see Using Server-Side + * Encryption in the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory buckets - + * For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms).

    + *
  • + *
+ *
+ *
Special errors
+ *
+ *
    + *
  • + *

    Error Code: NoSuchUpload + *

    + *
      + *
    • + *

      Description: The specified multipart upload does not exist. The upload ID might be + * invalid, or the multipart upload might have been aborted or completed.

      + *
    • + *
    • + *

      HTTP Status Code: 404 Not Found

      + *
    • + *
    • + *

      SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to UploadPart:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, UploadPartCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, UploadPartCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // UploadPartRequest + * Body: "MULTIPLE_TYPES_ACCEPTED", // see \@smithy/types -> StreamingBlobPayloadInputTypes + * Bucket: "STRING_VALUE", // required + * ContentLength: Number("long"), + * ContentMD5: "STRING_VALUE", + * ChecksumAlgorithm: "CRC32" || "CRC32C" || "SHA1" || "SHA256" || "CRC64NVME", + * ChecksumCRC32: "STRING_VALUE", + * ChecksumCRC32C: "STRING_VALUE", + * ChecksumCRC64NVME: "STRING_VALUE", + * ChecksumSHA1: "STRING_VALUE", + * ChecksumSHA256: "STRING_VALUE", + * Key: "STRING_VALUE", // required + * PartNumber: Number("int"), // required + * UploadId: "STRING_VALUE", // required + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * }; + * const command = new UploadPartCommand(input); + * const response = await client.send(command); + * // { // UploadPartOutput + * // ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * // ETag: "STRING_VALUE", + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // SSECustomerAlgorithm: "STRING_VALUE", + * // SSECustomerKeyMD5: "STRING_VALUE", + * // SSEKMSKeyId: "STRING_VALUE", + * // BucketKeyEnabled: true || false, + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param UploadPartCommandInput - {@link UploadPartCommandInput} + * @returns {@link UploadPartCommandOutput} + * @see {@link UploadPartCommandInput} for command's `input` shape. + * @see {@link UploadPartCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To upload a part + * ```javascript + * // The following example uploads part 1 of a multipart upload. The example specifies a file name for the part data. The Upload ID is same that is returned by the initiate multipart upload. + * const input = { + * Body: "fileToUpload", + * Bucket: "examplebucket", + * Key: "examplelargeobject", + * PartNumber: 1, + * UploadId: "xadcOB_7YPBOJuoFiQ9cz4P3Pe6FIZwO4f7wN93uHsNBEw97pl5eNwzExg0LAT2dUN91cOmrEQHDsP3WA60CEg--" + * }; + * const command = new UploadPartCommand(input); + * const response = await client.send(command); + * /* response is + * { + * ETag: `"d8c2eafd90c266e19ab9dcacc479f8af"` + * } + * *\/ + * ``` + * + * @public + */ +export declare class UploadPartCommand extends UploadPartCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: UploadPartRequest; + output: UploadPartOutput; + }; + sdk: { + input: UploadPartCommandInput; + output: UploadPartCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCopyCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCopyCommand.d.ts new file mode 100644 index 0000000..d2243ad --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCopyCommand.d.ts @@ -0,0 +1,368 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { UploadPartCopyOutput, UploadPartCopyRequest } from "../models/models_1"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link UploadPartCopyCommand}. + */ +export interface UploadPartCopyCommandInput extends UploadPartCopyRequest { +} +/** + * @public + * + * The output of {@link UploadPartCopyCommand}. + */ +export interface UploadPartCopyCommandOutput extends UploadPartCopyOutput, __MetadataBearer { +} +declare const UploadPartCopyCommand_base: { + new (input: UploadPartCopyCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: UploadPartCopyCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Uploads a part by copying data from an existing object as data source. To specify the data source, + * you add the request header x-amz-copy-source in your request. To specify a byte range, you + * add the request header x-amz-copy-source-range in your request.

+ *

For information about maximum and minimum part sizes and other multipart upload specifications, see + * Multipart upload + * limits in the Amazon S3 User Guide.

+ * + *

Instead of copying data from an existing object as part data, you might use the UploadPart action to + * upload new data as a part of an object in your request.

+ *
+ *

You must initiate a multipart upload before you can upload any part. In response to your initiate + * request, Amazon S3 returns the upload ID, a unique identifier that you must include in your upload part + * request.

+ *

For conceptual information about multipart uploads, see Uploading Objects Using Multipart Upload in + * the Amazon S3 User Guide. For information about copying objects using a single atomic + * action vs. a multipart upload, see Operations on Objects in the + * Amazon S3 User Guide.

+ * + *

+ * Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://amzn-s3-demo-bucket.s3express-zone-id.region-code.amazonaws.com/key-name + * . Path-style requests are not supported. For more information about endpoints in Availability Zones, see Regional and Zonal endpoints for directory buckets in Availability Zones in the + * Amazon S3 User Guide. For more information about endpoints in Local Zones, see Concepts for directory buckets in Local Zones in the + * Amazon S3 User Guide.

+ *
+ *
+ *
Authentication and authorization
+ *
+ *

All UploadPartCopy requests must be authenticated and signed by using IAM + * credentials (access key ID and secret access key for the IAM identities). All headers with the + * x-amz- prefix, including x-amz-copy-source, must be signed. For more + * information, see REST Authentication.

+ *

+ * Directory buckets - You must use IAM credentials to + * authenticate and authorize your access to the UploadPartCopy API operation, instead + * of using the temporary security credentials through the CreateSession API + * operation.

+ *

Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

+ *
+ *
Permissions
+ *
+ *

You must have READ access to the source object and WRITE access to + * the destination bucket.

+ *
    + *
  • + *

    + * General purpose bucket permissions - You must have the + * permissions in a policy based on the bucket types of your source bucket and destination bucket + * in an UploadPartCopy operation.

    + *
      + *
    • + *

      If the source object is in a general purpose bucket, you must have the + * s3:GetObject + * permission to read the source object that is + * being copied.

      + *
    • + *
    • + *

      If the destination bucket is a general purpose bucket, you must have the + * s3:PutObject + * permission to write the object copy to + * the destination bucket.

      + *
    • + *
    • + *

      To perform a multipart upload with encryption using an Key Management Service key, the requester + * must have permission to the kms:Decrypt and kms:GenerateDataKey + * actions on the key. The requester must also have permissions for the + * kms:GenerateDataKey action for the CreateMultipartUpload API. + * Then, the requester needs permissions for the kms:Decrypt action on the + * UploadPart and UploadPartCopy APIs. These permissions are + * required because Amazon S3 must decrypt and read data from the encrypted file parts before it + * completes the multipart upload. For more information about KMS permissions, see Protecting + * data using server-side encryption with KMS in the + * Amazon S3 User Guide. For information about the permissions required to + * use the multipart upload API, see Multipart upload and + * permissions and Multipart upload API + * and permissions in the Amazon S3 User Guide.

      + *
    • + *
    + *
  • + *
  • + *

    + * Directory bucket permissions - You must have + * permissions in a bucket policy or an IAM identity-based policy based on the source and destination bucket types + * in an UploadPartCopy operation.

    + *
      + *
    • + *

      If the source object that you want to copy is in a directory bucket, you must have + * the + * s3express:CreateSession + * permission in + * the Action element of a policy to read the object. If no session mode is specified, + * the session will be created with the maximum allowable privilege, attempting + * ReadWrite first, then ReadOnly if ReadWrite is not permitted. + * If you want to explicitly restrict the access to be read-only, you can set the s3express:SessionMode + * condition key to ReadOnly on the copy source bucket.

      + *
    • + *
    • + *

      If the copy destination is a directory bucket, you must have the + * s3express:CreateSession + * permission in the + * Action element of a policy to write the object to the destination. The + * s3express:SessionMode condition key cannot be set to ReadOnly + * on the copy destination.

      + *
    • + *
    + *

    If the object is encrypted with SSE-KMS, you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key.

    + *

    For example policies, see Example + * bucket policies for S3 Express One Zone and Amazon Web Services + * Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the + * Amazon S3 User Guide.

    + *
  • + *
+ *
+ *
Encryption
+ *
+ *
    + *
  • + *

    + * General purpose buckets - + * For information about using server-side encryption with + * customer-provided encryption keys with the UploadPartCopy operation, see CopyObject and + * UploadPart.

    + * + *

    If you have server-side encryption with customer-provided keys (SSE-C) blocked for your general purpose bucket, you will get an HTTP 403 Access Denied error when you specify the SSE-C request headers while writing new data to your bucket. For more information, see Blocking or unblocking SSE-C for a general purpose bucket.

    + *
    + *
  • + *
  • + *

    + * Directory buckets - + * For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

    + * + *

    For directory buckets, when you perform a CreateMultipartUpload operation + * and an UploadPartCopy operation, the request headers you provide in the + * CreateMultipartUpload request must match the default encryption configuration + * of the destination bucket.

    + *
    + *

    S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through UploadPartCopy. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

    + *
  • + *
+ *
+ *
Special errors
+ *
+ *
    + *
  • + *

    Error Code: NoSuchUpload + *

    + *
      + *
    • + *

      Description: The specified multipart upload does not exist. The upload ID might be + * invalid, or the multipart upload might have been aborted or completed.

      + *
    • + *
    • + *

      HTTP Status Code: 404 Not Found

      + *
    • + *
    + *
  • + *
  • + *

    Error Code: InvalidRequest + *

    + *
      + *
    • + *

      Description: The specified copy source is not supported as a byte-range copy + * source.

      + *
    • + *
    • + *

      HTTP Status Code: 400 Bad Request

      + *
    • + *
    + *
  • + *
+ *
+ *
HTTP Host header syntax
+ *
+ *

+ * Directory buckets - The HTTP Host header syntax is + * Bucket-name.s3express-zone-id.region-code.amazonaws.com.

+ *
+ *
+ *

The following operations are related to UploadPartCopy:

+ * + * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, UploadPartCopyCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, UploadPartCopyCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // UploadPartCopyRequest + * Bucket: "STRING_VALUE", // required + * CopySource: "STRING_VALUE", // required + * CopySourceIfMatch: "STRING_VALUE", + * CopySourceIfModifiedSince: new Date("TIMESTAMP"), + * CopySourceIfNoneMatch: "STRING_VALUE", + * CopySourceIfUnmodifiedSince: new Date("TIMESTAMP"), + * CopySourceRange: "STRING_VALUE", + * Key: "STRING_VALUE", // required + * PartNumber: Number("int"), // required + * UploadId: "STRING_VALUE", // required + * SSECustomerAlgorithm: "STRING_VALUE", + * SSECustomerKey: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * CopySourceSSECustomerAlgorithm: "STRING_VALUE", + * CopySourceSSECustomerKey: "STRING_VALUE", + * CopySourceSSECustomerKeyMD5: "STRING_VALUE", + * RequestPayer: "requester", + * ExpectedBucketOwner: "STRING_VALUE", + * ExpectedSourceBucketOwner: "STRING_VALUE", + * }; + * const command = new UploadPartCopyCommand(input); + * const response = await client.send(command); + * // { // UploadPartCopyOutput + * // CopySourceVersionId: "STRING_VALUE", + * // CopyPartResult: { // CopyPartResult + * // ETag: "STRING_VALUE", + * // LastModified: new Date("TIMESTAMP"), + * // ChecksumCRC32: "STRING_VALUE", + * // ChecksumCRC32C: "STRING_VALUE", + * // ChecksumCRC64NVME: "STRING_VALUE", + * // ChecksumSHA1: "STRING_VALUE", + * // ChecksumSHA256: "STRING_VALUE", + * // }, + * // ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * // SSECustomerAlgorithm: "STRING_VALUE", + * // SSECustomerKeyMD5: "STRING_VALUE", + * // SSEKMSKeyId: "STRING_VALUE", + * // BucketKeyEnabled: true || false, + * // RequestCharged: "requester", + * // }; + * + * ``` + * + * @param UploadPartCopyCommandInput - {@link UploadPartCopyCommandInput} + * @returns {@link UploadPartCopyCommandOutput} + * @see {@link UploadPartCopyCommandInput} for command's `input` shape. + * @see {@link UploadPartCopyCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @example To upload a part by copying byte range from an existing object as data source + * ```javascript + * // The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as data source. + * const input = { + * Bucket: "examplebucket", + * CopySource: "/bucketname/sourceobjectkey", + * CopySourceRange: "bytes=1-100000", + * Key: "examplelargeobject", + * PartNumber: 2, + * UploadId: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--" + * }; + * const command = new UploadPartCopyCommand(input); + * const response = await client.send(command); + * /* response is + * { + * CopyPartResult: { + * ETag: `"65d16d19e65a7508a51f043180edcc36"`, + * LastModified: "2016-12-29T21:44:28.000Z" + * } + * } + * *\/ + * ``` + * + * @example To upload a part by copying data from an existing object as data source + * ```javascript + * // The following example uploads a part of a multipart upload by copying data from an existing object as data source. + * const input = { + * Bucket: "examplebucket", + * CopySource: "/bucketname/sourceobjectkey", + * Key: "examplelargeobject", + * PartNumber: 1, + * UploadId: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--" + * }; + * const command = new UploadPartCopyCommand(input); + * const response = await client.send(command); + * /* response is + * { + * CopyPartResult: { + * ETag: `"b0c6f0e7e054ab8fa2536a2677f8734d"`, + * LastModified: "2016-12-29T21:24:43.000Z" + * } + * } + * *\/ + * ``` + * + * @public + */ +export declare class UploadPartCopyCommand extends UploadPartCopyCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: UploadPartCopyRequest; + output: UploadPartCopyOutput; + }; + sdk: { + input: UploadPartCopyCommandInput; + output: UploadPartCopyCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/WriteGetObjectResponseCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/WriteGetObjectResponseCommand.d.ts new file mode 100644 index 0000000..cacc130 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/WriteGetObjectResponseCommand.d.ts @@ -0,0 +1,150 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer, StreamingBlobPayloadInputTypes } from "@smithy/types"; +import type { WriteGetObjectResponseRequest } from "../models/models_1"; +import type { S3ClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../S3Client"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link WriteGetObjectResponseCommand}. + */ +export interface WriteGetObjectResponseCommandInput extends Omit { + Body?: StreamingBlobPayloadInputTypes; +} +/** + * @public + * + * The output of {@link WriteGetObjectResponseCommand}. + */ +export interface WriteGetObjectResponseCommandOutput extends __MetadataBearer { +} +declare const WriteGetObjectResponseCommand_base: { + new (input: WriteGetObjectResponseCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: WriteGetObjectResponseCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * + *

This operation is not supported for directory buckets.

+ *
+ *

Passes transformed objects to a GetObject operation when using Object Lambda access points. For information + * about Object Lambda access points, see Transforming objects with Object Lambda access points in the Amazon S3 User Guide.

+ *

This operation supports metadata that can be returned by GetObject, in addition to + * RequestRoute, RequestToken, StatusCode, ErrorCode, + * and ErrorMessage. The GetObject response metadata is supported so that the + * WriteGetObjectResponse caller, typically an Lambda function, can provide the same + * metadata when it internally invokes GetObject. When WriteGetObjectResponse is + * called by a customer-owned Lambda function, the metadata returned to the end user GetObject + * call might differ from what Amazon S3 would normally return.

+ *

You can include any number of metadata headers. When including a metadata header, it should be + * prefaced with x-amz-meta. For example, x-amz-meta-my-custom-header: + * MyCustomValue. The primary use case for this is to forward GetObject + * metadata.

+ *

Amazon Web Services provides some prebuilt Lambda functions that you can use with S3 Object Lambda to detect and + * redact personally identifiable information (PII) and decompress S3 objects. These Lambda functions are + * available in the Amazon Web Services Serverless Application Repository, and can be selected through the Amazon Web Services + * Management Console when you create your Object Lambda access point.

+ *

Example 1: PII Access Control - This Lambda function uses Amazon Comprehend, a natural + * language processing (NLP) service using machine learning to find insights and relationships in text. It + * automatically detects personally identifiable information (PII) such as names, addresses, dates, credit + * card numbers, and social security numbers from documents in your Amazon S3 bucket.

+ *

Example 2: PII Redaction - This Lambda function uses Amazon Comprehend, a natural language + * processing (NLP) service using machine learning to find insights and relationships in text. It + * automatically redacts personally identifiable information (PII) such as names, addresses, dates, credit + * card numbers, and social security numbers from documents in your Amazon S3 bucket.

+ *

Example 3: Decompression - The Lambda function S3ObjectLambdaDecompression, is equipped to + * decompress objects stored in S3 in one of six compressed file formats including bzip2, gzip, snappy, + * zlib, zstandard and ZIP.

+ *

For information on how to view and use these functions, see Using Amazon Web Services built Lambda functions in the + * Amazon S3 User Guide.

+ * + *

You must URL encode any signed header values that contain spaces. For example, if your header value is my file.txt, containing two spaces after my, you must URL encode this value to my%20%20file.txt.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { S3Client, WriteGetObjectResponseCommand } from "@aws-sdk/client-s3"; // ES Modules import + * // const { S3Client, WriteGetObjectResponseCommand } = require("@aws-sdk/client-s3"); // CommonJS import + * // import type { S3ClientConfig } from "@aws-sdk/client-s3"; + * const config = {}; // type is S3ClientConfig + * const client = new S3Client(config); + * const input = { // WriteGetObjectResponseRequest + * RequestRoute: "STRING_VALUE", // required + * RequestToken: "STRING_VALUE", // required + * Body: "MULTIPLE_TYPES_ACCEPTED", // see \@smithy/types -> StreamingBlobPayloadInputTypes + * StatusCode: Number("int"), + * ErrorCode: "STRING_VALUE", + * ErrorMessage: "STRING_VALUE", + * AcceptRanges: "STRING_VALUE", + * CacheControl: "STRING_VALUE", + * ContentDisposition: "STRING_VALUE", + * ContentEncoding: "STRING_VALUE", + * ContentLanguage: "STRING_VALUE", + * ContentLength: Number("long"), + * ContentRange: "STRING_VALUE", + * ContentType: "STRING_VALUE", + * ChecksumCRC32: "STRING_VALUE", + * ChecksumCRC32C: "STRING_VALUE", + * ChecksumCRC64NVME: "STRING_VALUE", + * ChecksumSHA1: "STRING_VALUE", + * ChecksumSHA256: "STRING_VALUE", + * DeleteMarker: true || false, + * ETag: "STRING_VALUE", + * Expires: new Date("TIMESTAMP"), + * Expiration: "STRING_VALUE", + * LastModified: new Date("TIMESTAMP"), + * MissingMeta: Number("int"), + * Metadata: { // Metadata + * "": "STRING_VALUE", + * }, + * ObjectLockMode: "GOVERNANCE" || "COMPLIANCE", + * ObjectLockLegalHoldStatus: "ON" || "OFF", + * ObjectLockRetainUntilDate: new Date("TIMESTAMP"), + * PartsCount: Number("int"), + * ReplicationStatus: "COMPLETE" || "PENDING" || "FAILED" || "REPLICA" || "COMPLETED", + * RequestCharged: "requester", + * Restore: "STRING_VALUE", + * ServerSideEncryption: "AES256" || "aws:fsx" || "aws:kms" || "aws:kms:dsse", + * SSECustomerAlgorithm: "STRING_VALUE", + * SSEKMSKeyId: "STRING_VALUE", + * SSECustomerKeyMD5: "STRING_VALUE", + * StorageClass: "STANDARD" || "REDUCED_REDUNDANCY" || "STANDARD_IA" || "ONEZONE_IA" || "INTELLIGENT_TIERING" || "GLACIER" || "DEEP_ARCHIVE" || "OUTPOSTS" || "GLACIER_IR" || "SNOW" || "EXPRESS_ONEZONE" || "FSX_OPENZFS" || "FSX_ONTAP", + * TagCount: Number("int"), + * VersionId: "STRING_VALUE", + * BucketKeyEnabled: true || false, + * }; + * const command = new WriteGetObjectResponseCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param WriteGetObjectResponseCommandInput - {@link WriteGetObjectResponseCommandInput} + * @returns {@link WriteGetObjectResponseCommandOutput} + * @see {@link WriteGetObjectResponseCommandInput} for command's `input` shape. + * @see {@link WriteGetObjectResponseCommandOutput} for command's `response` shape. + * @see {@link S3ClientResolvedConfig | config} for S3Client's `config` shape. + * + * @throws {@link S3ServiceException} + *

Base exception class for all service exceptions from S3 service.

+ * + * + * @public + */ +export declare class WriteGetObjectResponseCommand extends WriteGetObjectResponseCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: WriteGetObjectResponseRequest; + output: {}; + }; + sdk: { + input: WriteGetObjectResponseCommandInput; + output: WriteGetObjectResponseCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/index.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/index.d.ts new file mode 100644 index 0000000..2d7b505 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/commands/index.d.ts @@ -0,0 +1,107 @@ +export * from "./AbortMultipartUploadCommand"; +export * from "./CompleteMultipartUploadCommand"; +export * from "./CopyObjectCommand"; +export * from "./CreateBucketCommand"; +export * from "./CreateBucketMetadataConfigurationCommand"; +export * from "./CreateBucketMetadataTableConfigurationCommand"; +export * from "./CreateMultipartUploadCommand"; +export * from "./CreateSessionCommand"; +export * from "./DeleteBucketAnalyticsConfigurationCommand"; +export * from "./DeleteBucketCommand"; +export * from "./DeleteBucketCorsCommand"; +export * from "./DeleteBucketEncryptionCommand"; +export * from "./DeleteBucketIntelligentTieringConfigurationCommand"; +export * from "./DeleteBucketInventoryConfigurationCommand"; +export * from "./DeleteBucketLifecycleCommand"; +export * from "./DeleteBucketMetadataConfigurationCommand"; +export * from "./DeleteBucketMetadataTableConfigurationCommand"; +export * from "./DeleteBucketMetricsConfigurationCommand"; +export * from "./DeleteBucketOwnershipControlsCommand"; +export * from "./DeleteBucketPolicyCommand"; +export * from "./DeleteBucketReplicationCommand"; +export * from "./DeleteBucketTaggingCommand"; +export * from "./DeleteBucketWebsiteCommand"; +export * from "./DeleteObjectCommand"; +export * from "./DeleteObjectTaggingCommand"; +export * from "./DeleteObjectsCommand"; +export * from "./DeletePublicAccessBlockCommand"; +export * from "./GetBucketAbacCommand"; +export * from "./GetBucketAccelerateConfigurationCommand"; +export * from "./GetBucketAclCommand"; +export * from "./GetBucketAnalyticsConfigurationCommand"; +export * from "./GetBucketCorsCommand"; +export * from "./GetBucketEncryptionCommand"; +export * from "./GetBucketIntelligentTieringConfigurationCommand"; +export * from "./GetBucketInventoryConfigurationCommand"; +export * from "./GetBucketLifecycleConfigurationCommand"; +export * from "./GetBucketLocationCommand"; +export * from "./GetBucketLoggingCommand"; +export * from "./GetBucketMetadataConfigurationCommand"; +export * from "./GetBucketMetadataTableConfigurationCommand"; +export * from "./GetBucketMetricsConfigurationCommand"; +export * from "./GetBucketNotificationConfigurationCommand"; +export * from "./GetBucketOwnershipControlsCommand"; +export * from "./GetBucketPolicyCommand"; +export * from "./GetBucketPolicyStatusCommand"; +export * from "./GetBucketReplicationCommand"; +export * from "./GetBucketRequestPaymentCommand"; +export * from "./GetBucketTaggingCommand"; +export * from "./GetBucketVersioningCommand"; +export * from "./GetBucketWebsiteCommand"; +export * from "./GetObjectAclCommand"; +export * from "./GetObjectAttributesCommand"; +export * from "./GetObjectCommand"; +export * from "./GetObjectLegalHoldCommand"; +export * from "./GetObjectLockConfigurationCommand"; +export * from "./GetObjectRetentionCommand"; +export * from "./GetObjectTaggingCommand"; +export * from "./GetObjectTorrentCommand"; +export * from "./GetPublicAccessBlockCommand"; +export * from "./HeadBucketCommand"; +export * from "./HeadObjectCommand"; +export * from "./ListBucketAnalyticsConfigurationsCommand"; +export * from "./ListBucketIntelligentTieringConfigurationsCommand"; +export * from "./ListBucketInventoryConfigurationsCommand"; +export * from "./ListBucketMetricsConfigurationsCommand"; +export * from "./ListBucketsCommand"; +export * from "./ListDirectoryBucketsCommand"; +export * from "./ListMultipartUploadsCommand"; +export * from "./ListObjectVersionsCommand"; +export * from "./ListObjectsCommand"; +export * from "./ListObjectsV2Command"; +export * from "./ListPartsCommand"; +export * from "./PutBucketAbacCommand"; +export * from "./PutBucketAccelerateConfigurationCommand"; +export * from "./PutBucketAclCommand"; +export * from "./PutBucketAnalyticsConfigurationCommand"; +export * from "./PutBucketCorsCommand"; +export * from "./PutBucketEncryptionCommand"; +export * from "./PutBucketIntelligentTieringConfigurationCommand"; +export * from "./PutBucketInventoryConfigurationCommand"; +export * from "./PutBucketLifecycleConfigurationCommand"; +export * from "./PutBucketLoggingCommand"; +export * from "./PutBucketMetricsConfigurationCommand"; +export * from "./PutBucketNotificationConfigurationCommand"; +export * from "./PutBucketOwnershipControlsCommand"; +export * from "./PutBucketPolicyCommand"; +export * from "./PutBucketReplicationCommand"; +export * from "./PutBucketRequestPaymentCommand"; +export * from "./PutBucketTaggingCommand"; +export * from "./PutBucketVersioningCommand"; +export * from "./PutBucketWebsiteCommand"; +export * from "./PutObjectAclCommand"; +export * from "./PutObjectCommand"; +export * from "./PutObjectLegalHoldCommand"; +export * from "./PutObjectLockConfigurationCommand"; +export * from "./PutObjectRetentionCommand"; +export * from "./PutObjectTaggingCommand"; +export * from "./PutPublicAccessBlockCommand"; +export * from "./RenameObjectCommand"; +export * from "./RestoreObjectCommand"; +export * from "./SelectObjectContentCommand"; +export * from "./UpdateBucketMetadataInventoryTableConfigurationCommand"; +export * from "./UpdateBucketMetadataJournalTableConfigurationCommand"; +export * from "./UpdateObjectEncryptionCommand"; +export * from "./UploadPartCommand"; +export * from "./UploadPartCopyCommand"; +export * from "./WriteGetObjectResponseCommand"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..487281c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/endpoint/EndpointParameters.d.ts @@ -0,0 +1,96 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + clientContextParams?: { + disableS3ExpressSessionAuth?: boolean | undefined | Provider; + }; + region?: string | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; + forcePathStyle?: boolean | undefined | Provider; + useAccelerateEndpoint?: boolean | undefined | Provider; + useGlobalEndpoint?: boolean | undefined | Provider; + disableMultiregionAccessPoints?: boolean | undefined | Provider; + useArnRegion?: boolean | undefined | Provider; + disableS3ExpressSessionAuth?: boolean | undefined | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly ForcePathStyle: { + readonly type: "clientContextParams"; + readonly name: "forcePathStyle"; + }; + readonly UseArnRegion: { + readonly type: "clientContextParams"; + readonly name: "useArnRegion"; + }; + readonly DisableMultiRegionAccessPoints: { + readonly type: "clientContextParams"; + readonly name: "disableMultiregionAccessPoints"; + }; + readonly Accelerate: { + readonly type: "clientContextParams"; + readonly name: "useAccelerateEndpoint"; + }; + readonly DisableS3ExpressSessionAuth: { + readonly type: "clientContextParams"; + readonly name: "disableS3ExpressSessionAuth"; + }; + readonly UseGlobalEndpoint: { + readonly type: "builtInParams"; + readonly name: "useGlobalEndpoint"; + }; + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Bucket?: string | undefined; + Region?: string | undefined; + UseFIPS?: boolean | undefined; + UseDualStack?: boolean | undefined; + Endpoint?: string | undefined; + ForcePathStyle?: boolean | undefined; + Accelerate?: boolean | undefined; + UseGlobalEndpoint?: boolean | undefined; + UseObjectLambdaEndpoint?: boolean | undefined; + Key?: string | undefined; + Prefix?: string | undefined; + CopySource?: string | undefined; + DisableAccessPoints?: boolean | undefined; + DisableMultiRegionAccessPoints?: boolean | undefined; + UseArnRegion?: boolean | undefined; + UseS3ExpressControlEndpoint?: boolean | undefined; + DisableS3ExpressSessionAuth?: boolean | undefined; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..c1de67d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4b23899 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/extensionConfiguration.d.ts new file mode 100644 index 0000000..6294e8f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface S3ExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/index.d.ts new file mode 100644 index 0000000..ca5f866 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/index.d.ts @@ -0,0 +1,19 @@ +/** + *

+ * + * @packageDocumentation + */ +export * from "./S3Client"; +export * from "./S3"; +export type { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { S3ExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./pagination"; +export * from "./waiters"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export * from "./models/models_1"; +export { S3ServiceException } from "./models/S3ServiceException"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/models/S3ServiceException.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/S3ServiceException.d.ts new file mode 100644 index 0000000..37e9751 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/S3ServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from S3 service. + */ +export declare class S3ServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/models/enums.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/enums.d.ts new file mode 100644 index 0000000..78add98 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/enums.d.ts @@ -0,0 +1,987 @@ +/** + * @public + * @enum + */ +export declare const BucketAbacStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type BucketAbacStatus = (typeof BucketAbacStatus)[keyof typeof BucketAbacStatus]; +/** + * @public + * @enum + */ +export declare const RequestCharged: { + readonly requester: "requester"; +}; +/** + * @public + */ +export type RequestCharged = (typeof RequestCharged)[keyof typeof RequestCharged]; +/** + * @public + * @enum + */ +export declare const RequestPayer: { + readonly requester: "requester"; +}; +/** + * @public + */ +export type RequestPayer = (typeof RequestPayer)[keyof typeof RequestPayer]; +/** + * @public + * @enum + */ +export declare const BucketAccelerateStatus: { + readonly Enabled: "Enabled"; + readonly Suspended: "Suspended"; +}; +/** + * @public + */ +export type BucketAccelerateStatus = (typeof BucketAccelerateStatus)[keyof typeof BucketAccelerateStatus]; +/** + * @public + * @enum + */ +export declare const Type: { + readonly AmazonCustomerByEmail: "AmazonCustomerByEmail"; + readonly CanonicalUser: "CanonicalUser"; + readonly Group: "Group"; +}; +/** + * @public + */ +export type Type = (typeof Type)[keyof typeof Type]; +/** + * @public + * @enum + */ +export declare const Permission: { + readonly FULL_CONTROL: "FULL_CONTROL"; + readonly READ: "READ"; + readonly READ_ACP: "READ_ACP"; + readonly WRITE: "WRITE"; + readonly WRITE_ACP: "WRITE_ACP"; +}; +/** + * @public + */ +export type Permission = (typeof Permission)[keyof typeof Permission]; +/** + * @public + * @enum + */ +export declare const OwnerOverride: { + readonly Destination: "Destination"; +}; +/** + * @public + */ +export type OwnerOverride = (typeof OwnerOverride)[keyof typeof OwnerOverride]; +/** + * @public + * @enum + */ +export declare const ChecksumType: { + readonly COMPOSITE: "COMPOSITE"; + readonly FULL_OBJECT: "FULL_OBJECT"; +}; +/** + * @public + */ +export type ChecksumType = (typeof ChecksumType)[keyof typeof ChecksumType]; +/** + * @public + * @enum + */ +export declare const ServerSideEncryption: { + readonly AES256: "AES256"; + readonly aws_fsx: "aws:fsx"; + readonly aws_kms: "aws:kms"; + readonly aws_kms_dsse: "aws:kms:dsse"; +}; +/** + * @public + */ +export type ServerSideEncryption = (typeof ServerSideEncryption)[keyof typeof ServerSideEncryption]; +/** + * @public + * @enum + */ +export declare const ObjectCannedACL: { + readonly authenticated_read: "authenticated-read"; + readonly aws_exec_read: "aws-exec-read"; + readonly bucket_owner_full_control: "bucket-owner-full-control"; + readonly bucket_owner_read: "bucket-owner-read"; + readonly private: "private"; + readonly public_read: "public-read"; + readonly public_read_write: "public-read-write"; +}; +/** + * @public + */ +export type ObjectCannedACL = (typeof ObjectCannedACL)[keyof typeof ObjectCannedACL]; +/** + * @public + * @enum + */ +export declare const ChecksumAlgorithm: { + readonly CRC32: "CRC32"; + readonly CRC32C: "CRC32C"; + readonly CRC64NVME: "CRC64NVME"; + readonly SHA1: "SHA1"; + readonly SHA256: "SHA256"; +}; +/** + * @public + */ +export type ChecksumAlgorithm = (typeof ChecksumAlgorithm)[keyof typeof ChecksumAlgorithm]; +/** + * @public + * @enum + */ +export declare const MetadataDirective: { + readonly COPY: "COPY"; + readonly REPLACE: "REPLACE"; +}; +/** + * @public + */ +export type MetadataDirective = (typeof MetadataDirective)[keyof typeof MetadataDirective]; +/** + * @public + * @enum + */ +export declare const ObjectLockLegalHoldStatus: { + readonly OFF: "OFF"; + readonly ON: "ON"; +}; +/** + * @public + */ +export type ObjectLockLegalHoldStatus = (typeof ObjectLockLegalHoldStatus)[keyof typeof ObjectLockLegalHoldStatus]; +/** + * @public + * @enum + */ +export declare const ObjectLockMode: { + readonly COMPLIANCE: "COMPLIANCE"; + readonly GOVERNANCE: "GOVERNANCE"; +}; +/** + * @public + */ +export type ObjectLockMode = (typeof ObjectLockMode)[keyof typeof ObjectLockMode]; +/** + * @public + * @enum + */ +export declare const StorageClass: { + readonly DEEP_ARCHIVE: "DEEP_ARCHIVE"; + readonly EXPRESS_ONEZONE: "EXPRESS_ONEZONE"; + readonly FSX_ONTAP: "FSX_ONTAP"; + readonly FSX_OPENZFS: "FSX_OPENZFS"; + readonly GLACIER: "GLACIER"; + readonly GLACIER_IR: "GLACIER_IR"; + readonly INTELLIGENT_TIERING: "INTELLIGENT_TIERING"; + readonly ONEZONE_IA: "ONEZONE_IA"; + readonly OUTPOSTS: "OUTPOSTS"; + readonly REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY"; + readonly SNOW: "SNOW"; + readonly STANDARD: "STANDARD"; + readonly STANDARD_IA: "STANDARD_IA"; +}; +/** + * @public + */ +export type StorageClass = (typeof StorageClass)[keyof typeof StorageClass]; +/** + * @public + * @enum + */ +export declare const TaggingDirective: { + readonly COPY: "COPY"; + readonly REPLACE: "REPLACE"; +}; +/** + * @public + */ +export type TaggingDirective = (typeof TaggingDirective)[keyof typeof TaggingDirective]; +/** + * @public + * @enum + */ +export declare const BucketCannedACL: { + readonly authenticated_read: "authenticated-read"; + readonly private: "private"; + readonly public_read: "public-read"; + readonly public_read_write: "public-read-write"; +}; +/** + * @public + */ +export type BucketCannedACL = (typeof BucketCannedACL)[keyof typeof BucketCannedACL]; +/** + * @public + * @enum + */ +export declare const BucketNamespace: { + readonly ACCOUNT_REGIONAL: "account-regional"; + readonly GLOBAL: "global"; +}; +/** + * @public + */ +export type BucketNamespace = (typeof BucketNamespace)[keyof typeof BucketNamespace]; +/** + * @public + * @enum + */ +export declare const DataRedundancy: { + readonly SingleAvailabilityZone: "SingleAvailabilityZone"; + readonly SingleLocalZone: "SingleLocalZone"; +}; +/** + * @public + */ +export type DataRedundancy = (typeof DataRedundancy)[keyof typeof DataRedundancy]; +/** + * @public + * @enum + */ +export declare const BucketType: { + readonly Directory: "Directory"; +}; +/** + * @public + */ +export type BucketType = (typeof BucketType)[keyof typeof BucketType]; +/** + * @public + * @enum + */ +export declare const LocationType: { + readonly AvailabilityZone: "AvailabilityZone"; + readonly LocalZone: "LocalZone"; +}; +/** + * @public + */ +export type LocationType = (typeof LocationType)[keyof typeof LocationType]; +/** + * @public + * @enum + */ +export declare const BucketLocationConstraint: { + readonly EU: "EU"; + readonly af_south_1: "af-south-1"; + readonly ap_east_1: "ap-east-1"; + readonly ap_northeast_1: "ap-northeast-1"; + readonly ap_northeast_2: "ap-northeast-2"; + readonly ap_northeast_3: "ap-northeast-3"; + readonly ap_south_1: "ap-south-1"; + readonly ap_south_2: "ap-south-2"; + readonly ap_southeast_1: "ap-southeast-1"; + readonly ap_southeast_2: "ap-southeast-2"; + readonly ap_southeast_3: "ap-southeast-3"; + readonly ap_southeast_4: "ap-southeast-4"; + readonly ap_southeast_5: "ap-southeast-5"; + readonly ca_central_1: "ca-central-1"; + readonly cn_north_1: "cn-north-1"; + readonly cn_northwest_1: "cn-northwest-1"; + readonly eu_central_1: "eu-central-1"; + readonly eu_central_2: "eu-central-2"; + readonly eu_north_1: "eu-north-1"; + readonly eu_south_1: "eu-south-1"; + readonly eu_south_2: "eu-south-2"; + readonly eu_west_1: "eu-west-1"; + readonly eu_west_2: "eu-west-2"; + readonly eu_west_3: "eu-west-3"; + readonly il_central_1: "il-central-1"; + readonly me_central_1: "me-central-1"; + readonly me_south_1: "me-south-1"; + readonly sa_east_1: "sa-east-1"; + readonly us_east_2: "us-east-2"; + readonly us_gov_east_1: "us-gov-east-1"; + readonly us_gov_west_1: "us-gov-west-1"; + readonly us_west_1: "us-west-1"; + readonly us_west_2: "us-west-2"; +}; +/** + * @public + */ +export type BucketLocationConstraint = (typeof BucketLocationConstraint)[keyof typeof BucketLocationConstraint]; +/** + * @public + * @enum + */ +export declare const ObjectOwnership: { + readonly BucketOwnerEnforced: "BucketOwnerEnforced"; + readonly BucketOwnerPreferred: "BucketOwnerPreferred"; + readonly ObjectWriter: "ObjectWriter"; +}; +/** + * @public + */ +export type ObjectOwnership = (typeof ObjectOwnership)[keyof typeof ObjectOwnership]; +/** + * @public + * @enum + */ +export declare const InventoryConfigurationState: { + readonly DISABLED: "DISABLED"; + readonly ENABLED: "ENABLED"; +}; +/** + * @public + */ +export type InventoryConfigurationState = (typeof InventoryConfigurationState)[keyof typeof InventoryConfigurationState]; +/** + * @public + * @enum + */ +export declare const TableSseAlgorithm: { + readonly AES256: "AES256"; + readonly aws_kms: "aws:kms"; +}; +/** + * @public + */ +export type TableSseAlgorithm = (typeof TableSseAlgorithm)[keyof typeof TableSseAlgorithm]; +/** + * @public + * @enum + */ +export declare const ExpirationState: { + readonly DISABLED: "DISABLED"; + readonly ENABLED: "ENABLED"; +}; +/** + * @public + */ +export type ExpirationState = (typeof ExpirationState)[keyof typeof ExpirationState]; +/** + * @public + * @enum + */ +export declare const SessionMode: { + readonly ReadOnly: "ReadOnly"; + readonly ReadWrite: "ReadWrite"; +}; +/** + * @public + */ +export type SessionMode = (typeof SessionMode)[keyof typeof SessionMode]; +/** + * @public + * @enum + */ +export declare const AnalyticsS3ExportFileFormat: { + readonly CSV: "CSV"; +}; +/** + * @public + */ +export type AnalyticsS3ExportFileFormat = (typeof AnalyticsS3ExportFileFormat)[keyof typeof AnalyticsS3ExportFileFormat]; +/** + * @public + * @enum + */ +export declare const StorageClassAnalysisSchemaVersion: { + readonly V_1: "V_1"; +}; +/** + * @public + */ +export type StorageClassAnalysisSchemaVersion = (typeof StorageClassAnalysisSchemaVersion)[keyof typeof StorageClassAnalysisSchemaVersion]; +/** + * @public + * @enum + */ +export declare const EncryptionType: { + readonly NONE: "NONE"; + readonly SSE_C: "SSE-C"; +}; +/** + * @public + */ +export type EncryptionType = (typeof EncryptionType)[keyof typeof EncryptionType]; +/** + * @public + * @enum + */ +export declare const IntelligentTieringStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type IntelligentTieringStatus = (typeof IntelligentTieringStatus)[keyof typeof IntelligentTieringStatus]; +/** + * @public + * @enum + */ +export declare const IntelligentTieringAccessTier: { + readonly ARCHIVE_ACCESS: "ARCHIVE_ACCESS"; + readonly DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS"; +}; +/** + * @public + */ +export type IntelligentTieringAccessTier = (typeof IntelligentTieringAccessTier)[keyof typeof IntelligentTieringAccessTier]; +/** + * @public + * @enum + */ +export declare const InventoryFormat: { + readonly CSV: "CSV"; + readonly ORC: "ORC"; + readonly Parquet: "Parquet"; +}; +/** + * @public + */ +export type InventoryFormat = (typeof InventoryFormat)[keyof typeof InventoryFormat]; +/** + * @public + * @enum + */ +export declare const InventoryIncludedObjectVersions: { + readonly All: "All"; + readonly Current: "Current"; +}; +/** + * @public + */ +export type InventoryIncludedObjectVersions = (typeof InventoryIncludedObjectVersions)[keyof typeof InventoryIncludedObjectVersions]; +/** + * @public + * @enum + */ +export declare const InventoryOptionalField: { + readonly BucketKeyStatus: "BucketKeyStatus"; + readonly ChecksumAlgorithm: "ChecksumAlgorithm"; + readonly ETag: "ETag"; + readonly EncryptionStatus: "EncryptionStatus"; + readonly IntelligentTieringAccessTier: "IntelligentTieringAccessTier"; + readonly IsMultipartUploaded: "IsMultipartUploaded"; + readonly LastModifiedDate: "LastModifiedDate"; + readonly LifecycleExpirationDate: "LifecycleExpirationDate"; + readonly ObjectAccessControlList: "ObjectAccessControlList"; + readonly ObjectLockLegalHoldStatus: "ObjectLockLegalHoldStatus"; + readonly ObjectLockMode: "ObjectLockMode"; + readonly ObjectLockRetainUntilDate: "ObjectLockRetainUntilDate"; + readonly ObjectOwner: "ObjectOwner"; + readonly ReplicationStatus: "ReplicationStatus"; + readonly Size: "Size"; + readonly StorageClass: "StorageClass"; +}; +/** + * @public + */ +export type InventoryOptionalField = (typeof InventoryOptionalField)[keyof typeof InventoryOptionalField]; +/** + * @public + * @enum + */ +export declare const InventoryFrequency: { + readonly Daily: "Daily"; + readonly Weekly: "Weekly"; +}; +/** + * @public + */ +export type InventoryFrequency = (typeof InventoryFrequency)[keyof typeof InventoryFrequency]; +/** + * @public + * @enum + */ +export declare const TransitionStorageClass: { + readonly DEEP_ARCHIVE: "DEEP_ARCHIVE"; + readonly GLACIER: "GLACIER"; + readonly GLACIER_IR: "GLACIER_IR"; + readonly INTELLIGENT_TIERING: "INTELLIGENT_TIERING"; + readonly ONEZONE_IA: "ONEZONE_IA"; + readonly STANDARD_IA: "STANDARD_IA"; +}; +/** + * @public + */ +export type TransitionStorageClass = (typeof TransitionStorageClass)[keyof typeof TransitionStorageClass]; +/** + * @public + * @enum + */ +export declare const ExpirationStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type ExpirationStatus = (typeof ExpirationStatus)[keyof typeof ExpirationStatus]; +/** + * @public + * @enum + */ +export declare const TransitionDefaultMinimumObjectSize: { + readonly all_storage_classes_128K: "all_storage_classes_128K"; + readonly varies_by_storage_class: "varies_by_storage_class"; +}; +/** + * @public + */ +export type TransitionDefaultMinimumObjectSize = (typeof TransitionDefaultMinimumObjectSize)[keyof typeof TransitionDefaultMinimumObjectSize]; +/** + * @public + * @enum + */ +export declare const BucketLogsPermission: { + readonly FULL_CONTROL: "FULL_CONTROL"; + readonly READ: "READ"; + readonly WRITE: "WRITE"; +}; +/** + * @public + */ +export type BucketLogsPermission = (typeof BucketLogsPermission)[keyof typeof BucketLogsPermission]; +/** + * @public + * @enum + */ +export declare const PartitionDateSource: { + readonly DeliveryTime: "DeliveryTime"; + readonly EventTime: "EventTime"; +}; +/** + * @public + */ +export type PartitionDateSource = (typeof PartitionDateSource)[keyof typeof PartitionDateSource]; +/** + * @public + * @enum + */ +export declare const S3TablesBucketType: { + readonly aws: "aws"; + readonly customer: "customer"; +}; +/** + * @public + */ +export type S3TablesBucketType = (typeof S3TablesBucketType)[keyof typeof S3TablesBucketType]; +/** + * @public + * @enum + */ +export declare const Event: { + readonly s3_IntelligentTiering: "s3:IntelligentTiering"; + readonly s3_LifecycleExpiration_: "s3:LifecycleExpiration:*"; + readonly s3_LifecycleExpiration_Delete: "s3:LifecycleExpiration:Delete"; + readonly s3_LifecycleExpiration_DeleteMarkerCreated: "s3:LifecycleExpiration:DeleteMarkerCreated"; + readonly s3_LifecycleTransition: "s3:LifecycleTransition"; + readonly s3_ObjectAcl_Put: "s3:ObjectAcl:Put"; + readonly s3_ObjectCreated_: "s3:ObjectCreated:*"; + readonly s3_ObjectCreated_CompleteMultipartUpload: "s3:ObjectCreated:CompleteMultipartUpload"; + readonly s3_ObjectCreated_Copy: "s3:ObjectCreated:Copy"; + readonly s3_ObjectCreated_Post: "s3:ObjectCreated:Post"; + readonly s3_ObjectCreated_Put: "s3:ObjectCreated:Put"; + readonly s3_ObjectRemoved_: "s3:ObjectRemoved:*"; + readonly s3_ObjectRemoved_Delete: "s3:ObjectRemoved:Delete"; + readonly s3_ObjectRemoved_DeleteMarkerCreated: "s3:ObjectRemoved:DeleteMarkerCreated"; + readonly s3_ObjectRestore_: "s3:ObjectRestore:*"; + readonly s3_ObjectRestore_Completed: "s3:ObjectRestore:Completed"; + readonly s3_ObjectRestore_Delete: "s3:ObjectRestore:Delete"; + readonly s3_ObjectRestore_Post: "s3:ObjectRestore:Post"; + readonly s3_ObjectTagging_: "s3:ObjectTagging:*"; + readonly s3_ObjectTagging_Delete: "s3:ObjectTagging:Delete"; + readonly s3_ObjectTagging_Put: "s3:ObjectTagging:Put"; + readonly s3_ReducedRedundancyLostObject: "s3:ReducedRedundancyLostObject"; + readonly s3_Replication_: "s3:Replication:*"; + readonly s3_Replication_OperationFailedReplication: "s3:Replication:OperationFailedReplication"; + readonly s3_Replication_OperationMissedThreshold: "s3:Replication:OperationMissedThreshold"; + readonly s3_Replication_OperationNotTracked: "s3:Replication:OperationNotTracked"; + readonly s3_Replication_OperationReplicatedAfterThreshold: "s3:Replication:OperationReplicatedAfterThreshold"; +}; +/** + * @public + */ +export type Event = (typeof Event)[keyof typeof Event]; +/** + * @public + * @enum + */ +export declare const FilterRuleName: { + readonly prefix: "prefix"; + readonly suffix: "suffix"; +}; +/** + * @public + */ +export type FilterRuleName = (typeof FilterRuleName)[keyof typeof FilterRuleName]; +/** + * @public + * @enum + */ +export declare const DeleteMarkerReplicationStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type DeleteMarkerReplicationStatus = (typeof DeleteMarkerReplicationStatus)[keyof typeof DeleteMarkerReplicationStatus]; +/** + * @public + * @enum + */ +export declare const MetricsStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type MetricsStatus = (typeof MetricsStatus)[keyof typeof MetricsStatus]; +/** + * @public + * @enum + */ +export declare const ReplicationTimeStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type ReplicationTimeStatus = (typeof ReplicationTimeStatus)[keyof typeof ReplicationTimeStatus]; +/** + * @public + * @enum + */ +export declare const ExistingObjectReplicationStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type ExistingObjectReplicationStatus = (typeof ExistingObjectReplicationStatus)[keyof typeof ExistingObjectReplicationStatus]; +/** + * @public + * @enum + */ +export declare const ReplicaModificationsStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type ReplicaModificationsStatus = (typeof ReplicaModificationsStatus)[keyof typeof ReplicaModificationsStatus]; +/** + * @public + * @enum + */ +export declare const SseKmsEncryptedObjectsStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type SseKmsEncryptedObjectsStatus = (typeof SseKmsEncryptedObjectsStatus)[keyof typeof SseKmsEncryptedObjectsStatus]; +/** + * @public + * @enum + */ +export declare const ReplicationRuleStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type ReplicationRuleStatus = (typeof ReplicationRuleStatus)[keyof typeof ReplicationRuleStatus]; +/** + * @public + * @enum + */ +export declare const Payer: { + readonly BucketOwner: "BucketOwner"; + readonly Requester: "Requester"; +}; +/** + * @public + */ +export type Payer = (typeof Payer)[keyof typeof Payer]; +/** + * @public + * @enum + */ +export declare const MFADeleteStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type MFADeleteStatus = (typeof MFADeleteStatus)[keyof typeof MFADeleteStatus]; +/** + * @public + * @enum + */ +export declare const BucketVersioningStatus: { + readonly Enabled: "Enabled"; + readonly Suspended: "Suspended"; +}; +/** + * @public + */ +export type BucketVersioningStatus = (typeof BucketVersioningStatus)[keyof typeof BucketVersioningStatus]; +/** + * @public + * @enum + */ +export declare const Protocol: { + readonly http: "http"; + readonly https: "https"; +}; +/** + * @public + */ +export type Protocol = (typeof Protocol)[keyof typeof Protocol]; +/** + * @public + * @enum + */ +export declare const ReplicationStatus: { + readonly COMPLETE: "COMPLETE"; + readonly COMPLETED: "COMPLETED"; + readonly FAILED: "FAILED"; + readonly PENDING: "PENDING"; + readonly REPLICA: "REPLICA"; +}; +/** + * @public + */ +export type ReplicationStatus = (typeof ReplicationStatus)[keyof typeof ReplicationStatus]; +/** + * @public + * @enum + */ +export declare const ChecksumMode: { + readonly ENABLED: "ENABLED"; +}; +/** + * @public + */ +export type ChecksumMode = (typeof ChecksumMode)[keyof typeof ChecksumMode]; +/** + * @public + * @enum + */ +export declare const ObjectAttributes: { + readonly CHECKSUM: "Checksum"; + readonly ETAG: "ETag"; + readonly OBJECT_PARTS: "ObjectParts"; + readonly OBJECT_SIZE: "ObjectSize"; + readonly STORAGE_CLASS: "StorageClass"; +}; +/** + * @public + */ +export type ObjectAttributes = (typeof ObjectAttributes)[keyof typeof ObjectAttributes]; +/** + * @public + * @enum + */ +export declare const ObjectLockEnabled: { + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type ObjectLockEnabled = (typeof ObjectLockEnabled)[keyof typeof ObjectLockEnabled]; +/** + * @public + * @enum + */ +export declare const ObjectLockRetentionMode: { + readonly COMPLIANCE: "COMPLIANCE"; + readonly GOVERNANCE: "GOVERNANCE"; +}; +/** + * @public + */ +export type ObjectLockRetentionMode = (typeof ObjectLockRetentionMode)[keyof typeof ObjectLockRetentionMode]; +/** + * @public + * @enum + */ +export declare const ArchiveStatus: { + readonly ARCHIVE_ACCESS: "ARCHIVE_ACCESS"; + readonly DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS"; +}; +/** + * @public + */ +export type ArchiveStatus = (typeof ArchiveStatus)[keyof typeof ArchiveStatus]; +/** + * @public + * @enum + */ +export declare const EncodingType: { + readonly url: "url"; +}; +/** + * @public + */ +export type EncodingType = (typeof EncodingType)[keyof typeof EncodingType]; +/** + * @public + * @enum + */ +export declare const ObjectStorageClass: { + readonly DEEP_ARCHIVE: "DEEP_ARCHIVE"; + readonly EXPRESS_ONEZONE: "EXPRESS_ONEZONE"; + readonly FSX_ONTAP: "FSX_ONTAP"; + readonly FSX_OPENZFS: "FSX_OPENZFS"; + readonly GLACIER: "GLACIER"; + readonly GLACIER_IR: "GLACIER_IR"; + readonly INTELLIGENT_TIERING: "INTELLIGENT_TIERING"; + readonly ONEZONE_IA: "ONEZONE_IA"; + readonly OUTPOSTS: "OUTPOSTS"; + readonly REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY"; + readonly SNOW: "SNOW"; + readonly STANDARD: "STANDARD"; + readonly STANDARD_IA: "STANDARD_IA"; +}; +/** + * @public + */ +export type ObjectStorageClass = (typeof ObjectStorageClass)[keyof typeof ObjectStorageClass]; +/** + * @public + * @enum + */ +export declare const OptionalObjectAttributes: { + readonly RESTORE_STATUS: "RestoreStatus"; +}; +/** + * @public + */ +export type OptionalObjectAttributes = (typeof OptionalObjectAttributes)[keyof typeof OptionalObjectAttributes]; +/** + * @public + * @enum + */ +export declare const ObjectVersionStorageClass: { + readonly STANDARD: "STANDARD"; +}; +/** + * @public + */ +export type ObjectVersionStorageClass = (typeof ObjectVersionStorageClass)[keyof typeof ObjectVersionStorageClass]; +/** + * @public + * @enum + */ +export declare const MFADelete: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +/** + * @public + */ +export type MFADelete = (typeof MFADelete)[keyof typeof MFADelete]; +/** + * @public + * @enum + */ +export declare const Tier: { + readonly Bulk: "Bulk"; + readonly Expedited: "Expedited"; + readonly Standard: "Standard"; +}; +/** + * @public + */ +export type Tier = (typeof Tier)[keyof typeof Tier]; +/** + * @public + * @enum + */ +export declare const ExpressionType: { + readonly SQL: "SQL"; +}; +/** + * @public + */ +export type ExpressionType = (typeof ExpressionType)[keyof typeof ExpressionType]; +/** + * @public + * @enum + */ +export declare const CompressionType: { + readonly BZIP2: "BZIP2"; + readonly GZIP: "GZIP"; + readonly NONE: "NONE"; +}; +/** + * @public + */ +export type CompressionType = (typeof CompressionType)[keyof typeof CompressionType]; +/** + * @public + * @enum + */ +export declare const FileHeaderInfo: { + readonly IGNORE: "IGNORE"; + readonly NONE: "NONE"; + readonly USE: "USE"; +}; +/** + * @public + */ +export type FileHeaderInfo = (typeof FileHeaderInfo)[keyof typeof FileHeaderInfo]; +/** + * @public + * @enum + */ +export declare const JSONType: { + readonly DOCUMENT: "DOCUMENT"; + readonly LINES: "LINES"; +}; +/** + * @public + */ +export type JSONType = (typeof JSONType)[keyof typeof JSONType]; +/** + * @public + * @enum + */ +export declare const QuoteFields: { + readonly ALWAYS: "ALWAYS"; + readonly ASNEEDED: "ASNEEDED"; +}; +/** + * @public + */ +export type QuoteFields = (typeof QuoteFields)[keyof typeof QuoteFields]; +/** + * @public + * @enum + */ +export declare const RestoreRequestType: { + readonly SELECT: "SELECT"; +}; +/** + * @public + */ +export type RestoreRequestType = (typeof RestoreRequestType)[keyof typeof RestoreRequestType]; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/models/errors.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/errors.d.ts new file mode 100644 index 0000000..98eb80d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/errors.d.ts @@ -0,0 +1,208 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import type { IntelligentTieringAccessTier, StorageClass } from "./enums"; +import { S3ServiceException as __BaseException } from "./S3ServiceException"; +/** + *

The specified multipart upload does not exist.

+ * @public + */ +export declare class NoSuchUpload extends __BaseException { + readonly name: "NoSuchUpload"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

+ * You might receive this error for several reasons. For details, see the description of this API + * operation.

+ * @public + */ +export declare class AccessDenied extends __BaseException { + readonly name: "AccessDenied"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The source object of the COPY action is not in the active tier and is only stored in Amazon S3 + * Glacier.

+ * @public + */ +export declare class ObjectNotInActiveTierError extends __BaseException { + readonly name: "ObjectNotInActiveTierError"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The requested bucket name is not available. The bucket namespace is shared by all users of the + * system. Select a different name and try again.

+ * @public + */ +export declare class BucketAlreadyExists extends __BaseException { + readonly name: "BucketAlreadyExists"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The bucket you tried to create already exists, and you own it. Amazon S3 returns this error in all Amazon Web Services + * Regions except in the North Virginia Region. For legacy compatibility, if you re-create an existing + * bucket that you already own in the North Virginia Region, Amazon S3 returns 200 OK and resets the bucket + * access control lists (ACLs).

+ * @public + */ +export declare class BucketAlreadyOwnedByYou extends __BaseException { + readonly name: "BucketAlreadyOwnedByYou"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The specified bucket does not exist.

+ * @public + */ +export declare class NoSuchBucket extends __BaseException { + readonly name: "NoSuchBucket"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Object is archived and inaccessible until restored.

+ *

If the object you are retrieving is stored in the S3 Glacier Flexible Retrieval storage class, the + * S3 Glacier Deep Archive storage class, the S3 Intelligent-Tiering Archive Access tier, or the + * S3 Intelligent-Tiering Deep Archive Access tier, before you can retrieve the object you must first restore a copy + * using RestoreObject. Otherwise, this operation returns an InvalidObjectState error. For + * information about restoring archived objects, see Restoring Archived Objects in the + * Amazon S3 User Guide.

+ * @public + */ +export declare class InvalidObjectState extends __BaseException { + readonly name: "InvalidObjectState"; + readonly $fault: "client"; + StorageClass?: StorageClass | undefined; + AccessTier?: IntelligentTieringAccessTier | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The specified key does not exist.

+ * @public + */ +export declare class NoSuchKey extends __BaseException { + readonly name: "NoSuchKey"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The specified content does not exist.

+ * @public + */ +export declare class NotFound extends __BaseException { + readonly name: "NotFound"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The existing object was created with a different encryption type. Subsequent write requests must + * include the appropriate encryption parameters in the request or while creating the session.

+ * @public + */ +export declare class EncryptionTypeMismatch extends __BaseException { + readonly name: "EncryptionTypeMismatch"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

A parameter or header in your request isn't valid. For details, see the description of this API + * operation.

+ * @public + */ +export declare class InvalidRequest extends __BaseException { + readonly name: "InvalidRequest"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The write offset value that you specified does not match the current object size.

+ * @public + */ +export declare class InvalidWriteOffset extends __BaseException { + readonly name: "InvalidWriteOffset"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

You have attempted to add more parts than the maximum of 10000 that are allowed for this object. + * You can use the CopyObject operation to copy this object to another and then add more data to the newly + * copied object.

+ * @public + */ +export declare class TooManyParts extends __BaseException { + readonly name: "TooManyParts"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Parameters on this idempotent request are inconsistent with parameters used in previous request(s).

+ *

For a list of error codes and more information on Amazon S3 errors, see Error codes.

+ * + *

Idempotency ensures that an API request completes no more than one time. With an idempotent + * request, if the original request completes successfully, any subsequent retries complete successfully + * without performing any further actions.

+ *
+ * @public + */ +export declare class IdempotencyParameterMismatch extends __BaseException { + readonly name: "IdempotencyParameterMismatch"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

This action is not allowed against this storage tier.

+ * @public + */ +export declare class ObjectAlreadyInActiveTierError extends __BaseException { + readonly name: "ObjectAlreadyInActiveTierError"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/models/models_0.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/models_0.d.ts new file mode 100644 index 0000000..3690ce1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/models_0.d.ts @@ -0,0 +1,15270 @@ +import type { StreamingBlobTypes } from "@smithy/types"; +import type { AnalyticsS3ExportFileFormat, ArchiveStatus, BucketAbacStatus, BucketAccelerateStatus, BucketCannedACL, BucketLocationConstraint, BucketLogsPermission, BucketNamespace, BucketType, BucketVersioningStatus, ChecksumAlgorithm, ChecksumMode, ChecksumType, DataRedundancy, DeleteMarkerReplicationStatus, EncodingType, EncryptionType, Event, ExistingObjectReplicationStatus, ExpirationState, ExpirationStatus, FileHeaderInfo, FilterRuleName, IntelligentTieringAccessTier, IntelligentTieringStatus, InventoryConfigurationState, InventoryFormat, InventoryFrequency, InventoryIncludedObjectVersions, InventoryOptionalField, JSONType, LocationType, MetadataDirective, MetricsStatus, MFADelete, MFADeleteStatus, ObjectAttributes, ObjectCannedACL, ObjectLockEnabled, ObjectLockLegalHoldStatus, ObjectLockMode, ObjectLockRetentionMode, ObjectOwnership, ObjectStorageClass, ObjectVersionStorageClass, OptionalObjectAttributes, OwnerOverride, PartitionDateSource, Payer, Permission, Protocol, ReplicaModificationsStatus, ReplicationRuleStatus, ReplicationStatus, ReplicationTimeStatus, RequestCharged, RequestPayer, S3TablesBucketType, ServerSideEncryption, SessionMode, SseKmsEncryptedObjectsStatus, StorageClass, StorageClassAnalysisSchemaVersion, TableSseAlgorithm, TaggingDirective, Tier, TransitionDefaultMinimumObjectSize, TransitionStorageClass, Type } from "./enums"; +/** + *

The ABAC status of the general purpose bucket. When ABAC is enabled for the general purpose bucket, you can use tags to manage access to the general purpose buckets as well as for cost tracking purposes. When ABAC is disabled for the general purpose buckets, you can only use tags for cost tracking purposes. For more information, see Using tags with S3 general purpose buckets.

+ * @public + */ +export interface AbacStatus { + /** + *

The ABAC status of the general purpose bucket.

+ * @public + */ + Status?: BucketAbacStatus | undefined; +} +/** + *

Specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will wait before + * permanently removing all parts of the upload. For more information, see Aborting + * Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration in the + * Amazon S3 User Guide.

+ * @public + */ +export interface AbortIncompleteMultipartUpload { + /** + *

Specifies the number of days after which Amazon S3 aborts an incomplete multipart upload.

+ * @public + */ + DaysAfterInitiation?: number | undefined; +} +/** + * @public + */ +export interface AbortMultipartUploadOutput { + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface AbortMultipartUploadRequest { + /** + *

The bucket name to which the upload was taking place.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Key of the object for which the multipart upload was initiated.

+ * @public + */ + Key: string | undefined; + /** + *

Upload ID that identifies the multipart upload.

+ * @public + */ + UploadId: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

If present, this header aborts an in progress multipart upload only if it was initiated on the + * provided timestamp. If the initiated timestamp of the multipart upload does not match the provided + * value, the operation returns a 412 Precondition Failed error. If the initiated timestamp + * matches or if the multipart upload doesn’t exist, the operation returns a 204 Success (No + * Content) response.

+ * + *

This functionality is only supported for directory buckets.

+ *
+ * @public + */ + IfMatchInitiatedTime?: Date | undefined; +} +/** + *

Configures the transfer acceleration state for an Amazon S3 bucket. For more information, see Amazon S3 Transfer + * Acceleration in the Amazon S3 User Guide.

+ * @public + */ +export interface AccelerateConfiguration { + /** + *

Specifies the transfer acceleration status of the bucket.

+ * @public + */ + Status?: BucketAccelerateStatus | undefined; +} +/** + *

Container for the person being granted permissions.

+ * @public + */ +export interface Grantee { + /** + *

+ * @public + */ + DisplayName?: string | undefined; + /** + *

+ * @public + */ + EmailAddress?: string | undefined; + /** + *

The canonical user ID of the grantee.

+ * @public + */ + ID?: string | undefined; + /** + *

URI of the grantee group.

+ * @public + */ + URI?: string | undefined; + /** + *

Type of grantee

+ * @public + */ + Type: Type | undefined; +} +/** + *

Container for grant information.

+ * @public + */ +export interface Grant { + /** + *

The person being granted permissions.

+ * @public + */ + Grantee?: Grantee | undefined; + /** + *

Specifies the permission given to the grantee.

+ * @public + */ + Permission?: Permission | undefined; +} +/** + *

Container for the owner's display name and ID.

+ * @public + */ +export interface Owner { + /** + *

+ * @public + */ + DisplayName?: string | undefined; + /** + *

Container for the ID of the owner.

+ * @public + */ + ID?: string | undefined; +} +/** + *

Contains the elements that set the ACL permissions for an object per grantee.

+ * @public + */ +export interface AccessControlPolicy { + /** + *

A list of grants.

+ * @public + */ + Grants?: Grant[] | undefined; + /** + *

Container for the bucket owner's display name and ID.

+ * @public + */ + Owner?: Owner | undefined; +} +/** + *

A container for information about access control for replicas.

+ * @public + */ +export interface AccessControlTranslation { + /** + *

Specifies the replica ownership. For default and valid values, see PUT bucket replication in the + * Amazon S3 API Reference.

+ * @public + */ + Owner: OwnerOverride | undefined; +} +/** + * @public + */ +export interface CompleteMultipartUploadOutput { + /** + *

The URI that identifies the newly created object.

+ * @public + */ + Location?: string | undefined; + /** + *

The name of the bucket that contains the newly created object. Does not return the access point ARN or access point + * alias if used.

+ * + *

Access points are not supported by directory buckets.

+ *
+ * @public + */ + Bucket?: string | undefined; + /** + *

The object key of the newly created object.

+ * @public + */ + Key?: string | undefined; + /** + *

If the object expiration is configured, this will contain the expiration date + * (expiry-date) and rule ID (rule-id). The value of rule-id is + * URL-encoded.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + Expiration?: string | undefined; + /** + *

Entity tag that identifies the newly created object's data. Objects with different object data will + * have different entity tags. The entity tag is an opaque string. The entity tag may or may not be an MD5 + * digest of the object data. If the entity tag is not an MD5 digest of the object data, it will contain + * one or more nonhexadecimal characters and/or will consist of less than 32 or more than 32 hexadecimal + * digits. For more information about how the entity tag is calculated, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ETag?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 64-bit CRC64NVME + * checksum of the object. The CRC64NVME checksum is always a full object checksum. For more + * information, see Checking object integrity in the Amazon S3 + * User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

The checksum type, which determines how part-level checksums are combined to create an object-level + * checksum for multipart objects. You can use this header as a data integrity check to verify that the + * checksum type that is received is the same checksum type that was specified during the + * CreateMultipartUpload request. For more information, see Checking object integrity in the Amazon S3 + * User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; + /** + *

The server-side encryption algorithm used when storing this object in Amazon S3.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ *

+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

Version ID of the newly created object, in case the bucket has versioning turned on.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

If present, indicates the ID of the KMS key that was used for object encryption.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with + * Key Management Service (KMS) keys (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + *

Details of the parts that were uploaded.

+ * @public + */ +export interface CompletedPart { + /** + *

Entity tag returned when the part was uploaded.

+ * @public + */ + ETag?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the part. This checksum is present if the + * multipart upload request was created with the CRC32 checksum algorithm. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the part. This checksum is present if the + * multipart upload request was created with the CRC32C checksum algorithm. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

The Base64 encoded, 64-bit CRC64NVME checksum of the part. This checksum is present if + * the multipart upload request was created with the CRC64NVME checksum algorithm to the + * uploaded object). For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 checksum of the part. This checksum is present if the + * multipart upload request was created with the SHA1 checksum algorithm. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 checksum of the part. This checksum is present if + * the multipart upload request was created with the SHA256 checksum algorithm. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

Part number that identifies the part. This is a positive integer between 1 and 10,000.

+ * + *
    + *
  • + *

    + * General purpose buckets - In + * CompleteMultipartUpload, when a additional checksum (including + * x-amz-checksum-crc32, x-amz-checksum-crc32c, + * x-amz-checksum-sha1, or x-amz-checksum-sha256) is applied to each + * part, the PartNumber must start at 1 and the part numbers must be consecutive. + * Otherwise, Amazon S3 generates an HTTP 400 Bad Request status code and an + * InvalidPartOrder error code.

    + *
  • + *
  • + *

    + * Directory buckets - In + * CompleteMultipartUpload, the PartNumber must start at 1 and the part + * numbers must be consecutive.

    + *
  • + *
+ *
+ * @public + */ + PartNumber?: number | undefined; +} +/** + *

The container for the completed multipart upload details.

+ * @public + */ +export interface CompletedMultipartUpload { + /** + *

Array of CompletedPart data types.

+ *

If you do not supply a valid Part with your request, the service sends back an HTTP 400 + * response.

+ * @public + */ + Parts?: CompletedPart[] | undefined; +} +/** + * @public + */ +export interface CompleteMultipartUploadRequest { + /** + *

Name of the bucket to which the multipart upload was initiated.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Object key for which the multipart upload was initiated.

+ * @public + */ + Key: string | undefined; + /** + *

The container for the multipart upload request information.

+ * @public + */ + MultipartUpload?: CompletedMultipartUpload | undefined; + /** + *

ID for the initiated multipart upload.

+ * @public + */ + UploadId: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 32-bit CRC32 checksum of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 32-bit CRC32C checksum of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 64-bit CRC64NVME + * checksum of the object. The CRC64NVME checksum is always a full object checksum. For more + * information, see Checking object integrity in the Amazon S3 + * User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 160-bit SHA1 digest of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 256-bit SHA256 digest of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

This header specifies the checksum type of the object, which determines how part-level checksums are + * combined to create an object-level checksum for multipart objects. You can use this header as a data + * integrity check to verify that the checksum type that is received is the same checksum that was + * specified. If the checksum type doesn’t match the checksum type that was specified for the object during + * the CreateMultipartUpload request, it’ll result in a BadDigest error. For more + * information, see Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; + /** + *

The expected total object size of the multipart upload request. If there’s a mismatch between the + * specified object size value and the actual object size value, it results in an HTTP 400 + * InvalidRequest error.

+ * @public + */ + MpuObjectSize?: number | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Uploads the object only if the ETag (entity tag) value provided during the WRITE operation matches + * the ETag of the object in S3. If the ETag values do not match, the operation returns a 412 + * Precondition Failed error.

+ *

If a conflicting operation occurs during the upload S3 returns a 409 + * ConditionalRequestConflict response. On a 409 failure you should fetch the object's ETag, + * re-initiate the multipart upload with CreateMultipartUpload, and re-upload each + * part.

+ *

Expects the ETag value as a string.

+ *

For more information about conditional requests, see RFC 7232, or Conditional requests in the + * Amazon S3 User Guide.

+ * @public + */ + IfMatch?: string | undefined; + /** + *

Uploads the object only if the object key name does not already exist in the bucket specified. + * Otherwise, Amazon S3 returns a 412 Precondition Failed error.

+ *

If a conflicting operation occurs during the upload S3 returns a 409 + * ConditionalRequestConflict response. On a 409 failure you should re-initiate the multipart + * upload with CreateMultipartUpload and re-upload each part.

+ *

Expects the '*' (asterisk) character.

+ *

For more information about conditional requests, see RFC 7232, or Conditional requests in the + * Amazon S3 User Guide.

+ * @public + */ + IfNoneMatch?: string | undefined; + /** + *

The server-side encryption (SSE) algorithm used to encrypt the object. This parameter is required + * only when the object was created using a checksum algorithm or if your bucket policy requires the use of + * SSE-C. For more information, see Protecting data using SSE-C keys in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

The server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. + * For more information, see + * Protecting data using SSE-C keys in the + * Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

The MD5 server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum + * algorithm. For more information, + * see Protecting data using SSE-C keys in the + * Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; +} +/** + *

Container for all response elements.

+ * @public + */ +export interface CopyObjectResult { + /** + *

Returns the ETag of the new object. The ETag reflects only changes to the contents of an object, not + * its metadata.

+ * @public + */ + ETag?: string | undefined; + /** + *

Creation date of the object.

+ * @public + */ + LastModified?: Date | undefined; + /** + *

The checksum type that is used to calculate the object’s checksum value. For more information, see + * Checking + * object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the object. This checksum is only present if the object was uploaded + * with the object. For more information, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. For more information, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

The Base64 encoded, 64-bit CRC64NVME checksum of the object. This checksum is present + * if the object being copied was uploaded with the CRC64NVME checksum algorithm, or if the + * object was uploaded without a checksum (and Amazon S3 added the default checksum, CRC64NVME, to + * the uploaded object). For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. For more information, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. For more information, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; +} +/** + * @public + */ +export interface CopyObjectOutput { + /** + *

Container for all response elements.

+ * @public + */ + CopyObjectResult?: CopyObjectResult | undefined; + /** + *

If the object expiration is configured, the response includes this header.

+ * + *

Object expiration information is not returned in directory buckets and this header returns the + * value "NotImplemented" in all responses for directory buckets.

+ *
+ * @public + */ + Expiration?: string | undefined; + /** + *

Version ID of the source object that was copied.

+ * + *

This functionality is not supported when the source object is in a directory bucket.

+ *
+ * @public + */ + CopySourceVersionId?: string | undefined; + /** + *

Version ID of the newly created copy.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to confirm the encryption algorithm that's used.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to provide the round-trip message integrity verification of the customer-provided + * encryption key.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

If present, indicates the ID of the KMS key that was used for object encryption.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of + * this header is a Base64 encoded UTF-8 string holding JSON with the encryption context key-value + * pairs.

+ * @public + */ + SSEKMSEncryptionContext?: string | undefined; + /** + *

Indicates whether the copied object uses an S3 Bucket Key for server-side encryption with Key Management Service + * (KMS) keys (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface CopyObjectRequest { + /** + *

The canned access control list (ACL) to apply to the object.

+ *

When you copy an object, the ACL metadata is not preserved and is set to private by + * default. Only the owner has full access control. To override the default ACL setting, specify a new ACL + * when you generate a copy request. For more information, see Using ACLs.

+ *

If the destination bucket that you're copying objects to uses the bucket owner enforced setting for + * S3 Object Ownership, ACLs are disabled and no longer affect permissions. Buckets that use this setting + * only accept PUT requests that don't specify an ACL or PUT requests that + * specify bucket owner full control ACLs, such as the bucket-owner-full-control canned ACL or + * an equivalent form of this ACL expressed in the XML format. For more information, see Controlling ownership + * of objects and disabling ACLs in the Amazon S3 User Guide.

+ * + *
    + *
  • + *

    If your destination bucket uses the bucket owner enforced setting for Object Ownership, all + * objects written to the bucket by any account will be owned by the bucket owner.

    + *
  • + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + ACL?: ObjectCannedACL | undefined; + /** + *

The name of the destination bucket.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ * + *

Copying objects across different Amazon Web Services Regions isn't supported when the source or destination + * bucket is in Amazon Web Services Local Zones. The source and destination buckets must have the same parent Amazon Web Services Region. + * Otherwise, you get an HTTP 400 Bad Request error with the error code + * InvalidRequest.

+ *
+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, + * you must use the Outpost bucket access point ARN or the access point alias for the destination bucket. + * You can only copy objects within the same Outpost bucket. It's not supported to copy objects across + * different Amazon Web Services Outposts, between buckets on the same Outposts, or between Outposts buckets and any + * other bucket types. For more information about S3 on Outposts, see What is S3 on Outposts? in the + * S3 on Outposts guide. When you use this action with S3 on Outposts through the REST + * API, you must direct requests to the S3 on Outposts hostname, in the format + * + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. + * The hostname isn't required when you use the Amazon Web Services CLI or SDKs.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Specifies the caching behavior along the request/reply chain.

+ * @public + */ + CacheControl?: string | undefined; + /** + *

Indicates the algorithm that you want Amazon S3 to use to create the checksum for the object. For more information, see + * Checking object integrity in + * the Amazon S3 User Guide.

+ *

When you copy an object, if the source object has a checksum, that checksum value will be copied to + * the new object by default. If the CopyObject request does not include this + * x-amz-checksum-algorithm header, the checksum algorithm will be copied from the source + * object to the destination object (if it's present on the source object). You can optionally specify a + * different checksum algorithm to use with the x-amz-checksum-algorithm header. Unrecognized + * or unsupported values will respond with the HTTP status code 400 Bad Request.

+ * + *

For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

+ *
+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Specifies presentational information for the object. Indicates whether an object should be displayed + * in a web browser or downloaded as a file. It allows specifying the desired filename for the downloaded + * file.

+ * @public + */ + ContentDisposition?: string | undefined; + /** + *

Specifies what content encodings have been applied to the object and thus what decoding mechanisms + * must be applied to obtain the media-type referenced by the Content-Type header field.

+ * + *

For directory buckets, only the aws-chunked value is supported in this header field.

+ *
+ * @public + */ + ContentEncoding?: string | undefined; + /** + *

The language the content is in.

+ * @public + */ + ContentLanguage?: string | undefined; + /** + *

A standard MIME type that describes the format of the object data.

+ * @public + */ + ContentType?: string | undefined; + /** + *

Specifies the source object for the copy operation. The source object can be up to 5 GB. If the + * source object is an object that was uploaded by using a multipart upload, the object copy will be a + * single part object after the source object is copied to the destination bucket.

+ *

You specify the value of the copy source in one of two formats, depending on whether you want to + * access the source object through an access point:

+ *
    + *
  • + *

    For objects not accessed through an access point, specify the name of the source bucket and the key of + * the source object, separated by a slash (/). For example, to copy the object + * reports/january.pdf from the general purpose bucket awsexamplebucket, use + * awsexamplebucket/reports/january.pdf. The value must be URL-encoded. To copy the + * object reports/january.pdf from the directory bucket + * awsexamplebucket--use1-az5--x-s3, use + * awsexamplebucket--use1-az5--x-s3/reports/january.pdf. The value must be + * URL-encoded.

    + *
  • + *
  • + *

    For objects accessed through access points, specify the Amazon Resource Name (ARN) of the object as accessed through the access point, in the format arn:aws:s3:::accesspoint//object/. For example, to copy the object reports/january.pdf through access point my-access-point owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf. The value must be URL encoded.

    + * + *
      + *
    • + *

      Amazon S3 supports copy operations using Access points only when the source and destination buckets are in the same Amazon Web Services Region.

      + *
    • + *
    • + *

      Access points are not supported by directory buckets.

      + *
    • + *
    + *
    + *

    Alternatively, for objects accessed through Amazon S3 on Outposts, specify the ARN of the object as accessed in the format arn:aws:s3-outposts:::outpost//object/. For example, to copy the object reports/january.pdf through outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf. The value must be URL-encoded.

    + *
  • + *
+ *

If your source bucket versioning is enabled, the x-amz-copy-source header by default + * identifies the current version of an object to copy. If the current version is a delete marker, Amazon S3 + * behaves as if the object was deleted. To copy a different version, use the versionId query + * parameter. Specifically, append ?versionId= to the value (for example, + * awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893). If + * you don't specify a version ID, Amazon S3 copies the latest version of the source object.

+ *

If you enable versioning on the destination bucket, Amazon S3 generates a unique version ID for the + * copied object. This version ID is different from the version ID of the source object. Amazon S3 returns the + * version ID of the copied object in the x-amz-version-id response header in the + * response.

+ *

If you do not enable versioning or suspend it on the destination bucket, the version ID that Amazon S3 + * generates in the x-amz-version-id response header is always null.

+ * + *

+ * Directory buckets - S3 Versioning isn't enabled and supported for directory buckets.

+ *
+ * @public + */ + CopySource: string | undefined; + /** + *

Copies the object if its entity tag (ETag) matches the specified tag.

+ *

If both the x-amz-copy-source-if-match and + * x-amz-copy-source-if-unmodified-since headers are present in the request and evaluate as + * follows, Amazon S3 returns 200 OK and copies the data:

+ *
    + *
  • + *

    + * x-amz-copy-source-if-match condition evaluates to true

    + *
  • + *
  • + *

    + * x-amz-copy-source-if-unmodified-since condition evaluates to false

    + *
  • + *
+ * @public + */ + CopySourceIfMatch?: string | undefined; + /** + *

Copies the object if it has been modified since the specified time.

+ *

If both the x-amz-copy-source-if-none-match and + * x-amz-copy-source-if-modified-since headers are present in the request and evaluate as + * follows, Amazon S3 returns the 412 Precondition Failed response code:

+ *
    + *
  • + *

    + * x-amz-copy-source-if-none-match condition evaluates to false

    + *
  • + *
  • + *

    + * x-amz-copy-source-if-modified-since condition evaluates to true

    + *
  • + *
+ * @public + */ + CopySourceIfModifiedSince?: Date | undefined; + /** + *

Copies the object if its entity tag (ETag) is different than the specified ETag.

+ *

If both the x-amz-copy-source-if-none-match and + * x-amz-copy-source-if-modified-since headers are present in the request and evaluate as + * follows, Amazon S3 returns the 412 Precondition Failed response code:

+ *
    + *
  • + *

    + * x-amz-copy-source-if-none-match condition evaluates to false

    + *
  • + *
  • + *

    + * x-amz-copy-source-if-modified-since condition evaluates to true

    + *
  • + *
+ * @public + */ + CopySourceIfNoneMatch?: string | undefined; + /** + *

Copies the object if it hasn't been modified since the specified time.

+ *

If both the x-amz-copy-source-if-match and + * x-amz-copy-source-if-unmodified-since headers are present in the request and evaluate as + * follows, Amazon S3 returns 200 OK and copies the data:

+ *
    + *
  • + *

    + * x-amz-copy-source-if-match condition evaluates to true

    + *
  • + *
  • + *

    + * x-amz-copy-source-if-unmodified-since condition evaluates to false

    + *
  • + *
+ * @public + */ + CopySourceIfUnmodifiedSince?: Date | undefined; + /** + *

The date and time at which the object is no longer cacheable.

+ * @public + */ + Expires?: Date | undefined; + /** + *

Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantFullControl?: string | undefined; + /** + *

Allows grantee to read the object data and its metadata.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantRead?: string | undefined; + /** + *

Allows grantee to read the object ACL.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantReadACP?: string | undefined; + /** + *

Allows grantee to write the ACL for the applicable object.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantWriteACP?: string | undefined; + /** + *

Copies the object if the entity tag (ETag) of the destination object matches the specified + * tag. If the ETag values do not match, the operation returns a 412 Precondition + * Failed error. If a concurrent operation occurs during the upload S3 returns a + * 409 ConditionalRequestConflict response. On a 409 failure you should fetch the + * object's ETag and retry the upload.

+ *

Expects the ETag value as a string.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfMatch?: string | undefined; + /** + *

Copies the object only if the object key name at the destination does not already exist in + * the bucket specified. Otherwise, Amazon S3 returns a 412 Precondition Failed error. If a + * concurrent operation occurs during the upload S3 returns a 409 ConditionalRequestConflict + * response. On a 409 failure you should retry the upload.

+ *

Expects the '*' (asterisk) character.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfNoneMatch?: string | undefined; + /** + *

The key of the destination object.

+ * @public + */ + Key: string | undefined; + /** + *

A map of metadata to store with the object in S3.

+ * @public + */ + Metadata?: Record | undefined; + /** + *

Specifies whether the metadata is copied from the source object or replaced with metadata that's + * provided in the request. When copying an object, you can preserve all metadata (the default) or specify + * new metadata. If this header isn’t specified, COPY is the default behavior.

+ *

+ * General purpose bucket - For general purpose buckets, when you grant + * permissions, you can use the s3:x-amz-metadata-directive condition key to enforce certain + * metadata behavior when objects are uploaded. For more information, see Amazon S3 condition key examples in the + * Amazon S3 User Guide.

+ * + *

+ * x-amz-website-redirect-location is unique to each object and is not copied when using + * the x-amz-metadata-directive header. To copy the value, you must specify + * x-amz-website-redirect-location in the request header.

+ *
+ * @public + */ + MetadataDirective?: MetadataDirective | undefined; + /** + *

Specifies whether the object tag-set is copied from the source object or replaced with the tag-set + * that's provided in the request.

+ *

The default value is COPY.

+ * + *

+ * Directory buckets - For directory buckets in a CopyObject operation, only the empty tag-set is supported. Any requests that attempt to write non-empty tags into directory buckets will receive a 501 Not Implemented status code. + * When the destination bucket is a directory bucket, you will receive a 501 Not Implemented response in any of the following situations:

+ *
    + *
  • + *

    When you attempt to COPY the tag-set from an S3 source object that has non-empty tags.

    + *
  • + *
  • + *

    When you attempt to REPLACE the tag-set of a source object and set a non-empty value to x-amz-tagging.

    + *
  • + *
  • + *

    When you don't set the x-amz-tagging-directive header and the source object has non-empty tags. This is because the default value of x-amz-tagging-directive is COPY.

    + *
  • + *
+ *

Because only the empty tag-set is supported for directory buckets in a CopyObject operation, the following situations are allowed:

+ *
    + *
  • + *

    When you attempt to COPY the tag-set from a directory bucket source object that has no tags to a general purpose bucket. It copies an empty tag-set to the destination object.

    + *
  • + *
  • + *

    When you attempt to REPLACE the tag-set of a directory bucket source object and set the x-amz-tagging value of the directory bucket destination object to empty.

    + *
  • + *
  • + *

    When you attempt to REPLACE the tag-set of a general purpose bucket source object that has non-empty tags and set the x-amz-tagging value of the directory bucket destination object to empty.

    + *
  • + *
  • + *

    When you attempt to REPLACE the tag-set of a directory bucket source object and don't set the x-amz-tagging value of the directory bucket destination object. This is because the default value of x-amz-tagging is the empty value.

    + *
  • + *
+ *
+ * @public + */ + TaggingDirective?: TaggingDirective | undefined; + /** + *

The server-side encryption algorithm used when storing this object in Amazon S3. Unrecognized or + * unsupported values won’t write a destination object and will receive a 400 Bad Request + * response.

+ *

Amazon S3 automatically encrypts all new objects that are copied to an S3 bucket. When copying an object, + * if you don't specify encryption information in your copy request, the encryption setting of the target + * object is set to the default encryption configuration of the destination bucket. By default, all buckets + * have a base level of encryption configuration that uses server-side encryption with Amazon S3 managed keys + * (SSE-S3). If the destination bucket has a different default encryption configuration, Amazon S3 uses the + * corresponding encryption key to encrypt the target object copy.

+ *

With server-side encryption, Amazon S3 encrypts your data as it writes your data to disks in its data + * centers and decrypts the data when you access it. For more information about server-side encryption, see + * Using Server-Side + * Encryption in the Amazon S3 User Guide.

+ *

+ * General purpose buckets + *

+ *
    + *
  • + *

    For general purpose buckets, there are the following supported options for server-side encryption: + * server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with + * Amazon Web Services KMS keys (DSSE-KMS), and server-side encryption with customer-provided encryption keys + * (SSE-C). Amazon S3 uses the corresponding KMS key, or a customer-provided key to encrypt the target + * object copy.

    + *
  • + *
  • + *

    When you perform a CopyObject operation, if you want to use a different type of + * encryption setting for the target object, you can specify appropriate encryption-related headers to + * encrypt the target object with an Amazon S3 managed key, a KMS key, or a customer-provided key. If the + * encryption setting in your request is different from the default encryption configuration of the + * destination bucket, the encryption setting in your request takes precedence.

    + *
  • + *
+ *

+ * Directory buckets + *

+ *
    + *
  • + *

    For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your + * CreateSession requests or PUT object requests. Then, new objects + * are automatically encrypted with the desired encryption settings. For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

    + *
  • + *
  • + *

    To encrypt new object copies to a directory bucket with SSE-KMS, we recommend you specify + * SSE-KMS as the directory bucket's default encryption configuration with a KMS key + * (specifically, a customer managed key). The Amazon Web Services managed key (aws/s3) isn't supported. Your SSE-KMS configuration can + * only support 1 customer managed key per + * directory bucket for the lifetime of the bucket. After you specify a customer managed key for SSE-KMS, you + * can't override the customer managed key for the bucket's SSE-KMS configuration. Then, when you + * perform a CopyObject operation and want to specify server-side encryption settings for + * new object copies with SSE-KMS in the encryption-related request headers, you must ensure the + * encryption key is the same customer managed key that you specified for the directory bucket's default + * encryption configuration. + *

    + *
  • + *
  • + *

    + * S3 access points for Amazon FSx - When accessing data stored in + * Amazon FSx file systems using S3 access points, the only valid server side encryption option is + * aws:fsx. All Amazon FSx file systems have encryption configured by default and are + * encrypted at rest. Data is automatically encrypted before being written to the file system, and + * automatically decrypted as it is read. These processes are handled transparently by Amazon FSx.

    + *
  • + *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

If the x-amz-storage-class header is not used, the copied object will be stored in the + * STANDARD Storage Class by default. The STANDARD storage class provides high + * durability and high availability. Depending on performance needs, you can specify a different Storage + * Class.

+ * + *
    + *
  • + *

    + * Directory buckets - + * Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones. + * Unsupported storage class values won't write a destination object and will respond with the HTTP status code 400 Bad Request.

    + *
  • + *
  • + *

    + * Amazon S3 on Outposts - S3 on Outposts only uses the + * OUTPOSTS Storage Class.

    + *
  • + *
+ *
+ *

You can use the CopyObject action to change the storage class of an object that is + * already stored in Amazon S3 by using the x-amz-storage-class header. For more information, see + * Storage Classes + * in the Amazon S3 User Guide.

+ *

Before using an object as a source object for the copy operation, you must restore a copy of it if + * it meets any of the following conditions:

+ *
    + *
  • + *

    The storage class of the source object is GLACIER or + * DEEP_ARCHIVE.

    + *
  • + *
  • + *

    The storage class of the source object is INTELLIGENT_TIERING and it's S3 + * Intelligent-Tiering access tier is Archive Access or Deep Archive + * Access.

    + *
  • + *
+ *

For more information, see RestoreObject and Copying Objects in the + * Amazon S3 User Guide.

+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

If the destination bucket is configured as a website, redirects requests for this object copy to + * another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the + * object metadata. This value is unique to each object and is not copied when using the + * x-amz-metadata-directive header. Instead, you may opt to provide this header in + * combination with the x-amz-metadata-directive header.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + WebsiteRedirectLocation?: string | undefined; + /** + *

Specifies the algorithm to use when encrypting the object (for example, AES256).

+ *

When you perform a CopyObject operation, if you want to use a different type of + * encryption setting for the target object, you can specify appropriate encryption-related headers to + * encrypt the target object with an Amazon S3 managed key, a KMS key, or a customer-provided key. If the + * encryption setting in your request is different from the default encryption configuration of the + * destination bucket, the encryption setting in your request takes precedence.

+ * + *

This functionality is not supported when the destination bucket is a directory bucket.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is + * used to store the object and then it is discarded. Amazon S3 does not store the encryption key. The key must + * be appropriate for use with the algorithm specified in the + * x-amz-server-side-encryption-customer-algorithm header.

+ * + *

This functionality is not supported when the destination bucket is a directory bucket.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header + * for a message integrity check to ensure that the encryption key was transmitted without error.

+ * + *

This functionality is not supported when the destination bucket is a directory bucket.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. All GET and + * PUT requests for an object protected by KMS will fail if they're not made via SSL or using SigV4. For + * information about configuring any of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see Specifying + * the Signature Version in Request Authentication in the + * Amazon S3 User Guide.

+ *

+ * Directory buckets - + * To encrypt data using SSE-KMS, it's recommended to specify the + * x-amz-server-side-encryption header to aws:kms. Then, the x-amz-server-side-encryption-aws-kms-key-id header implicitly uses + * the bucket's default KMS customer managed key ID. If you want to explicitly set the + * x-amz-server-side-encryption-aws-kms-key-id header, it must match the bucket's default customer managed key (using key ID or ARN, not alias). Your SSE-KMS configuration can only support 1 customer managed key per directory bucket's lifetime. + * The Amazon Web Services managed key (aws/s3) isn't supported. + * + * Incorrect key specification results in an HTTP 400 Bad Request error.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for the + * destination object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON + * with the encryption context key-value pairs.

+ *

+ * General purpose buckets - This value must be explicitly added to + * specify encryption context for CopyObject requests if you want an additional encryption + * context for your destination object. The additional encryption context of the source object won't be + * copied to the destination object. For more information, see Encryption context + * in the Amazon S3 User Guide.

+ *

+ * Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

+ * @public + */ + SSEKMSEncryptionContext?: string | undefined; + /** + *

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption + * using Key Management Service (KMS) keys (SSE-KMS). If a target object uses SSE-KMS, you can enable an S3 Bucket Key + * for the object.

+ *

Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption + * with SSE-KMS. Specifying this header with a COPY action doesn’t affect bucket-level settings for S3 + * Bucket Key.

+ *

For more information, see Amazon S3 + * Bucket Keys in the Amazon S3 User Guide.

+ * + *

+ * Directory buckets - + * S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

+ *
+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

Specifies the algorithm to use when decrypting the source object (for example, + * AES256).

+ *

If the source object for the copy is stored in Amazon S3 using SSE-C, you must provide the necessary + * encryption information in your request so that Amazon S3 can decrypt the object for copying.

+ * + *

This functionality is not supported when the source object is in a directory bucket.

+ *
+ * @public + */ + CopySourceSSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The + * encryption key provided in this header must be the same one that was used when the source object was + * created.

+ *

If the source object for the copy is stored in Amazon S3 using SSE-C, you must provide the necessary + * encryption information in your request so that Amazon S3 can decrypt the object for copying.

+ * + *

This functionality is not supported when the source object is in a directory bucket.

+ *
+ * @public + */ + CopySourceSSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header + * for a message integrity check to ensure that the encryption key was transmitted without error.

+ *

If the source object for the copy is stored in Amazon S3 using SSE-C, you must provide the necessary + * encryption information in your request so that Amazon S3 can decrypt the object for copying.

+ * + *

This functionality is not supported when the source object is in a directory bucket.

+ *
+ * @public + */ + CopySourceSSECustomerKeyMD5?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The tag-set for the object copy in the destination bucket. This value must be used in conjunction + * with the x-amz-tagging-directive if you choose REPLACE for the + * x-amz-tagging-directive. If you choose COPY for the + * x-amz-tagging-directive, you don't need to set the x-amz-tagging header, + * because the tag-set will be copied from the source object directly. The tag-set must be encoded as URL + * Query parameters.

+ *

The default value is the empty value.

+ * + *

+ * Directory buckets - For directory buckets in a CopyObject operation, only the empty tag-set is supported. Any requests that attempt to write non-empty tags into directory buckets will receive a 501 Not Implemented status code. + * When the destination bucket is a directory bucket, you will receive a 501 Not Implemented response in any of the following situations:

+ *
    + *
  • + *

    When you attempt to COPY the tag-set from an S3 source object that has non-empty tags.

    + *
  • + *
  • + *

    When you attempt to REPLACE the tag-set of a source object and set a non-empty value to x-amz-tagging.

    + *
  • + *
  • + *

    When you don't set the x-amz-tagging-directive header and the source object has non-empty tags. This is because the default value of x-amz-tagging-directive is COPY.

    + *
  • + *
+ *

Because only the empty tag-set is supported for directory buckets in a CopyObject operation, the following situations are allowed:

+ *
    + *
  • + *

    When you attempt to COPY the tag-set from a directory bucket source object that has no tags to a general purpose bucket. It copies an empty tag-set to the destination object.

    + *
  • + *
  • + *

    When you attempt to REPLACE the tag-set of a directory bucket source object and set the x-amz-tagging value of the directory bucket destination object to empty.

    + *
  • + *
  • + *

    When you attempt to REPLACE the tag-set of a general purpose bucket source object that has non-empty tags and set the x-amz-tagging value of the directory bucket destination object to empty.

    + *
  • + *
  • + *

    When you attempt to REPLACE the tag-set of a directory bucket source object and don't set the x-amz-tagging value of the directory bucket destination object. This is because the default value of x-amz-tagging is the empty value.

    + *
  • + *
+ *
+ * @public + */ + Tagging?: string | undefined; + /** + *

The Object Lock mode that you want to apply to the object copy.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockMode?: ObjectLockMode | undefined; + /** + *

The date and time when you want the Object Lock of the object copy to expire.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockRetainUntilDate?: Date | undefined; + /** + *

Specifies whether you want to apply a legal hold to the object copy.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; + /** + *

The account ID of the expected destination bucket owner. If the account ID that you provide does not match the actual owner of the destination bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

The account ID of the expected source bucket owner. If the account ID that you provide does not match the actual owner of the source bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedSourceBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface CreateBucketOutput { + /** + *

A forward slash followed by the name of the bucket.

+ * @public + */ + Location?: string | undefined; + /** + *

The Amazon Resource Name (ARN) of the S3 bucket. ARNs uniquely identify Amazon Web Services resources across all + * of Amazon Web Services.

+ * + *

This parameter is only supported for S3 directory buckets. For more information, see Using tags with + * directory buckets.

+ *
+ * @public + */ + BucketArn?: string | undefined; +} +/** + *

Specifies the information about the bucket that will be created. For more information about + * directory buckets, see Directory buckets in the + * Amazon S3 User Guide.

+ * + *

This functionality is only supported by directory buckets.

+ *
+ * @public + */ +export interface BucketInfo { + /** + *

The number of Zone (Availability Zone or Local Zone) that's used for redundancy for the bucket.

+ * @public + */ + DataRedundancy?: DataRedundancy | undefined; + /** + *

The type of bucket.

+ * @public + */ + Type?: BucketType | undefined; +} +/** + *

Specifies the location where the bucket will be created.

+ *

For directory buckets, the location type is Availability Zone or Local Zone. For more information about + * directory buckets, see Working with + * directory buckets in the Amazon S3 User Guide.

+ * + *

This functionality is only supported by directory buckets.

+ *
+ * @public + */ +export interface LocationInfo { + /** + *

The type of location where the bucket will be created.

+ * @public + */ + Type?: LocationType | undefined; + /** + *

The name of the location where the bucket will be created.

+ *

For directory buckets, the name of the location is the Zone ID of the Availability Zone (AZ) or Local Zone (LZ) where + * the bucket will be created. An example AZ ID value is usw2-az1.

+ * @public + */ + Name?: string | undefined; +} +/** + *

A container of a key value name pair.

+ * @public + */ +export interface Tag { + /** + *

Name of the object key.

+ * @public + */ + Key: string | undefined; + /** + *

Value of the tag.

+ * @public + */ + Value: string | undefined; +} +/** + *

The configuration information for the bucket.

+ * @public + */ +export interface CreateBucketConfiguration { + /** + *

Specifies the Region where the bucket will be created. You might choose a Region to optimize + * latency, minimize costs, or address regulatory requirements. For example, if you reside in Europe, you + * will probably find it advantageous to create buckets in the Europe (Ireland) Region.

+ *

If you don't specify a Region, the bucket is created in the US East (N. Virginia) Region (us-east-1) + * by default. Configurations using the value EU will create a bucket in + * eu-west-1.

+ *

For a list of the valid values for all of the Amazon Web Services Regions, see Regions and Endpoints.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + LocationConstraint?: BucketLocationConstraint | undefined; + /** + *

Specifies the location where the bucket will be created.

+ *

+ * Directory buckets - The location type is Availability Zone or Local Zone. To + * use the Local Zone location type, your account must be enabled + * for Local Zones. Otherwise, you get an HTTP 403 Forbidden error with the error code + * AccessDenied. To learn more, + * see Enable + * accounts for Local Zones in the Amazon S3 User Guide.

+ * + *

This functionality is only supported by directory buckets.

+ *
+ * @public + */ + Location?: LocationInfo | undefined; + /** + *

Specifies the information about the bucket that will be created.

+ * + *

This functionality is only supported by directory buckets.

+ *
+ * @public + */ + Bucket?: BucketInfo | undefined; + /** + *

An array of tags that you can apply to the bucket that you're creating. Tags are key-value pairs of metadata used to categorize and organize your buckets, track costs, and control access.

+ *

You must have the s3:TagResource permission to create a general + * purpose bucket with tags or the s3express:TagResource permission to create a directory bucket with tags.

+ *

When creating buckets with tags, note that tag-based conditions using aws:ResourceTag and s3:BucketTag condition keys are applicable only after ABAC is enabled on the bucket. To learn more, see Enabling ABAC in general purpose buckets.

+ * @public + */ + Tags?: Tag[] | undefined; +} +/** + * @public + */ +export interface CreateBucketRequest { + /** + *

The canned ACL to apply to the bucket.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ACL?: BucketCannedACL | undefined; + /** + *

The name of the bucket to create.

+ *

+ * General purpose buckets - For information about bucket naming + * restrictions, see Bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ * @public + */ + Bucket: string | undefined; + /** + *

The configuration information for the bucket.

+ * @public + */ + CreateBucketConfiguration?: CreateBucketConfiguration | undefined; + /** + *

Allows grantee the read, write, read ACP, and write ACP permissions on the bucket.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + GrantFullControl?: string | undefined; + /** + *

Allows grantee to list the objects in the bucket.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + GrantRead?: string | undefined; + /** + *

Allows grantee to read the bucket ACL.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + GrantReadACP?: string | undefined; + /** + *

Allows grantee to create new objects in the bucket.

+ *

For the bucket and object owners of existing objects, also allows deletions and overwrites of those + * objects.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + GrantWrite?: string | undefined; + /** + *

Allows grantee to write the ACL for the applicable bucket.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + GrantWriteACP?: string | undefined; + /** + *

Specifies whether you want S3 Object Lock to be enabled for the new bucket.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockEnabledForBucket?: boolean | undefined; + /** + *

The container element for object ownership for a bucket's ownership controls.

+ *

+ * BucketOwnerPreferred - Objects uploaded to the bucket change ownership to the bucket + * owner if the objects are uploaded with the bucket-owner-full-control canned ACL.

+ *

+ * ObjectWriter - The uploading account will own the object if the object is uploaded with + * the bucket-owner-full-control canned ACL.

+ *

+ * BucketOwnerEnforced - Access control lists (ACLs) are disabled and no longer affect + * permissions. The bucket owner automatically owns and has full control over every object in the bucket. + * The bucket only accepts PUT requests that don't specify an ACL or specify bucket owner full control ACLs + * (such as the predefined bucket-owner-full-control canned ACL or a custom ACL in XML format + * that grants the same permissions).

+ *

By default, ObjectOwnership is set to BucketOwnerEnforced and ACLs are + * disabled. We recommend keeping ACLs disabled, except in uncommon use cases where you must control access + * for each object individually. For more information about S3 Object Ownership, see Controlling + * ownership of objects and disabling ACLs for your bucket in the + * Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets. Directory buckets use the bucket owner enforced setting for S3 Object Ownership.

+ *
+ * @public + */ + ObjectOwnership?: ObjectOwnership | undefined; + /** + *

Specifies the namespace where you want to create your general purpose bucket. When you create a + * general purpose bucket, you can choose to create a bucket in the shared global namespace or you can choose to + * create a bucket in your account regional namespace. Your account regional namespace is a subdivision of + * the global namespace that only your account can create buckets in. For more information on bucket + * namespaces, see Namespaces for general purpose buckets.

+ *

General purpose buckets in your account regional namespace must follow a specific naming convention. These + * buckets consist of a bucket name prefix that you create, and a suffix that contains your 12-digit Amazon Web Services + * Account ID, the Amazon Web Services Region code, and ends with -an. Bucket names must follow the format + * bucket-name-prefix-accountId-region-an (for example, + * amzn-s3-demo-bucket-111122223333-us-west-2-an). For information about bucket naming + * restrictions, see Account regional namespace naming rules + * in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + BucketNamespace?: BucketNamespace | undefined; +} +/** + *

+ * The encryption settings for an S3 Metadata journal table or inventory table configuration. + *

+ * @public + */ +export interface MetadataTableEncryptionConfiguration { + /** + *

+ * The encryption type specified for a metadata table. To specify server-side encryption with + * Key Management Service (KMS) keys (SSE-KMS), use the aws:kms value. To specify server-side + * encryption with Amazon S3 managed keys (SSE-S3), use the AES256 value. + *

+ * @public + */ + SseAlgorithm: TableSseAlgorithm | undefined; + /** + *

+ * If server-side encryption with Key Management Service (KMS) keys (SSE-KMS) is specified, you must also + * specify the KMS key Amazon Resource Name (ARN). You must specify a customer-managed KMS key + * that's located in the same Region as the general purpose bucket that corresponds to the metadata + * table configuration. + *

+ * @public + */ + KmsKeyArn?: string | undefined; +} +/** + *

+ * The inventory table configuration for an S3 Metadata configuration. + *

+ * @public + */ +export interface InventoryTableConfiguration { + /** + *

+ * The configuration state of the inventory table, indicating whether the inventory table is enabled + * or disabled. + *

+ * @public + */ + ConfigurationState: InventoryConfigurationState | undefined; + /** + *

+ * The encryption configuration for the inventory table. + *

+ * @public + */ + EncryptionConfiguration?: MetadataTableEncryptionConfiguration | undefined; +} +/** + *

+ * The journal table record expiration settings for a journal table in an S3 Metadata configuration. + *

+ * @public + */ +export interface RecordExpiration { + /** + *

+ * Specifies whether journal table record expiration is enabled or disabled. + *

+ * @public + */ + Expiration: ExpirationState | undefined; + /** + *

+ * If you enable journal table record expiration, you can set the number of days to retain your + * journal table records. Journal table records must be retained for a minimum of 7 days. To set + * this value, specify any whole number from 7 to 2147483647. For example, + * to retain your journal table records for one year, set this value to 365. + *

+ * @public + */ + Days?: number | undefined; +} +/** + *

+ * The journal table configuration for an S3 Metadata configuration. + *

+ * @public + */ +export interface JournalTableConfiguration { + /** + *

+ * The journal table record expiration settings for the journal table. + *

+ * @public + */ + RecordExpiration: RecordExpiration | undefined; + /** + *

+ * The encryption configuration for the journal table. + *

+ * @public + */ + EncryptionConfiguration?: MetadataTableEncryptionConfiguration | undefined; +} +/** + *

+ * The S3 Metadata configuration for a general purpose bucket. + *

+ * @public + */ +export interface MetadataConfiguration { + /** + *

+ * The journal table configuration for a metadata configuration. + *

+ * @public + */ + JournalTableConfiguration: JournalTableConfiguration | undefined; + /** + *

+ * The inventory table configuration for a metadata configuration. + *

+ * @public + */ + InventoryTableConfiguration?: InventoryTableConfiguration | undefined; +} +/** + * @public + */ +export interface CreateBucketMetadataConfigurationRequest { + /** + *

+ * The general purpose bucket that you want to create the metadata configuration for. + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

+ * The Content-MD5 header for the metadata configuration. + *

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

+ * The checksum algorithm to use with your metadata configuration. + *

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

+ * The contents of your metadata configuration. + *

+ * @public + */ + MetadataConfiguration: MetadataConfiguration | undefined; + /** + *

+ * The expected owner of the general purpose bucket that corresponds to your metadata configuration. + *

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

The destination information for a V1 S3 Metadata configuration. The destination table bucket must + * be in the same Region and Amazon Web Services account as the general purpose bucket. The specified metadata table name + * must be unique within the aws_s3_metadata namespace in the destination table bucket. + *

+ * + *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ * @public + */ +export interface S3TablesDestination { + /** + *

The Amazon Resource Name (ARN) for the table bucket that's specified as the destination in the + * metadata table configuration. The destination table bucket must be in the same Region and Amazon Web Services account + * as the general purpose bucket.

+ * @public + */ + TableBucketArn: string | undefined; + /** + *

The name for the metadata table in your metadata table configuration. The specified metadata table + * name must be unique within the aws_s3_metadata namespace in the destination table bucket. + *

+ * @public + */ + TableName: string | undefined; +} +/** + *

The V1 S3 Metadata configuration for a general purpose bucket.

+ * + *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ * @public + */ +export interface MetadataTableConfiguration { + /** + *

The destination information for the metadata table configuration. The destination table bucket must + * be in the same Region and Amazon Web Services account as the general purpose bucket. The specified metadata table name + * must be unique within the aws_s3_metadata namespace in the destination table bucket. + *

+ * @public + */ + S3TablesDestination: S3TablesDestination | undefined; +} +/** + * @public + */ +export interface CreateBucketMetadataTableConfigurationRequest { + /** + *

The general purpose bucket that you want to create the metadata table configuration for.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Content-MD5 header for the metadata table configuration.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

The checksum algorithm to use with your metadata table configuration.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The contents of your metadata table configuration.

+ * @public + */ + MetadataTableConfiguration: MetadataTableConfiguration | undefined; + /** + *

The expected owner of the general purpose bucket that corresponds to your metadata table configuration. + *

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface CreateMultipartUploadOutput { + /** + *

If the bucket has a lifecycle rule configured with an action to abort incomplete multipart uploads + * and the prefix in the lifecycle rule matches the object name in the request, the response includes this + * header. The header indicates when the initiated multipart upload becomes eligible for an abort + * operation. For more information, see Aborting + * Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration in the + * Amazon S3 User Guide.

+ *

The response also includes the x-amz-abort-rule-id header that provides the ID of the + * lifecycle configuration rule that defines the abort action.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + AbortDate?: Date | undefined; + /** + *

This header is returned along with the x-amz-abort-date header. It identifies the + * applicable lifecycle configuration rule that defines the action to abort incomplete multipart + * uploads.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + AbortRuleId?: string | undefined; + /** + *

The name of the bucket to which the multipart upload was initiated. Does not return the access point ARN or + * access point alias if used.

+ * + *

Access points are not supported by directory buckets.

+ *
+ * @public + */ + Bucket?: string | undefined; + /** + *

Object key for which the multipart upload was initiated.

+ * @public + */ + Key?: string | undefined; + /** + *

ID for the initiated multipart upload.

+ * @public + */ + UploadId?: string | undefined; + /** + *

The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to confirm the encryption algorithm that's used.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to provide the round-trip message integrity verification of the customer-provided + * encryption key.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

If present, indicates the ID of the KMS key that was used for object encryption.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of + * this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs.

+ * @public + */ + SSEKMSEncryptionContext?: string | undefined; + /** + *

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with + * Key Management Service (KMS) keys (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; + /** + *

The algorithm that was used to create a checksum of the object.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Indicates the checksum type that you want Amazon S3 to use to calculate the object’s checksum + * value. For more information, see Checking object integrity in the Amazon S3 + * User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; +} +/** + * @public + */ +export interface CreateMultipartUploadRequest { + /** + *

The canned ACL to apply to the object. Amazon S3 supports a set of predefined ACLs, known as + * canned ACLs. Each canned ACL has a predefined set of grantees and permissions. + * For more information, see Canned ACL in the + * Amazon S3 User Guide.

+ *

By default, all objects are private. Only the owner has full access control. When uploading an + * object, you can grant access permissions to individual Amazon Web Services accounts or to predefined groups defined by + * Amazon S3. These permissions are then added to the access control list (ACL) on the new object. For more + * information, see Using + * ACLs. One way to grant the permissions using the request headers is to specify a canned ACL + * with the x-amz-acl request header.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + ACL?: ObjectCannedACL | undefined; + /** + *

The name of the bucket where the multipart upload is initiated and where the object is + * uploaded.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Specifies caching behavior along the request/reply chain.

+ * @public + */ + CacheControl?: string | undefined; + /** + *

Specifies presentational information for the object.

+ * @public + */ + ContentDisposition?: string | undefined; + /** + *

Specifies what content encodings have been applied to the object and thus what decoding mechanisms + * must be applied to obtain the media-type referenced by the Content-Type header field.

+ * + *

For directory buckets, only the aws-chunked value is supported in this header field.

+ *
+ * @public + */ + ContentEncoding?: string | undefined; + /** + *

The language that the content is in.

+ * @public + */ + ContentLanguage?: string | undefined; + /** + *

A standard MIME type describing the format of the object data.

+ * @public + */ + ContentType?: string | undefined; + /** + *

The date and time at which the object is no longer cacheable.

+ * @public + */ + Expires?: Date | undefined; + /** + *

Specify access permissions explicitly to give the grantee READ, READ_ACP, and WRITE_ACP permissions + * on the object.

+ *

By default, all objects are private. Only the owner has full access control. When uploading an + * object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or + * groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see + * Access Control List (ACL) + * Overview in the Amazon S3 User Guide.

+ *

You specify each grantee as a type=value pair, where the type is one of the following:

+ *
    + *
  • + *

    + * id – if the value specified is the canonical user ID of an Amazon Web Services account

    + *
  • + *
  • + *

    + * uri – if you are granting permissions to a predefined group

    + *
  • + *
  • + *

    + * emailAddress – if the value specified is the email address of an + * Amazon Web Services account

    + * + *

    Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

    + *
      + *
    • + *

      US East (N. Virginia)

      + *
    • + *
    • + *

      US West (N. California)

      + *
    • + *
    • + *

      US West (Oregon)

      + *
    • + *
    • + *

      Asia Pacific (Singapore)

      + *
    • + *
    • + *

      Asia Pacific (Sydney)

      + *
    • + *
    • + *

      Asia Pacific (Tokyo)

      + *
    • + *
    • + *

      Europe (Ireland)

      + *
    • + *
    • + *

      South America (São Paulo)

      + *
    • + *
    + *

    For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

    + *
    + *
  • + *
+ *

For example, the following x-amz-grant-read header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:

+ *

+ * x-amz-grant-read: id="11112222333", id="444455556666" + *

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantFullControl?: string | undefined; + /** + *

Specify access permissions explicitly to allow grantee to read the object data and its + * metadata.

+ *

By default, all objects are private. Only the owner has full access control. When uploading an + * object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or + * groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see + * Access Control List (ACL) + * Overview in the Amazon S3 User Guide.

+ *

You specify each grantee as a type=value pair, where the type is one of the following:

+ *
    + *
  • + *

    + * id – if the value specified is the canonical user ID of an Amazon Web Services account

    + *
  • + *
  • + *

    + * uri – if you are granting permissions to a predefined group

    + *
  • + *
  • + *

    + * emailAddress – if the value specified is the email address of an + * Amazon Web Services account

    + * + *

    Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

    + *
      + *
    • + *

      US East (N. Virginia)

      + *
    • + *
    • + *

      US West (N. California)

      + *
    • + *
    • + *

      US West (Oregon)

      + *
    • + *
    • + *

      Asia Pacific (Singapore)

      + *
    • + *
    • + *

      Asia Pacific (Sydney)

      + *
    • + *
    • + *

      Asia Pacific (Tokyo)

      + *
    • + *
    • + *

      Europe (Ireland)

      + *
    • + *
    • + *

      South America (São Paulo)

      + *
    • + *
    + *

    For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

    + *
    + *
  • + *
+ *

For example, the following x-amz-grant-read header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:

+ *

+ * x-amz-grant-read: id="11112222333", id="444455556666" + *

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantRead?: string | undefined; + /** + *

Specify access permissions explicitly to allows grantee to read the object ACL.

+ *

By default, all objects are private. Only the owner has full access control. When uploading an + * object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or + * groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see + * Access Control List (ACL) + * Overview in the Amazon S3 User Guide.

+ *

You specify each grantee as a type=value pair, where the type is one of the following:

+ *
    + *
  • + *

    + * id – if the value specified is the canonical user ID of an Amazon Web Services account

    + *
  • + *
  • + *

    + * uri – if you are granting permissions to a predefined group

    + *
  • + *
  • + *

    + * emailAddress – if the value specified is the email address of an + * Amazon Web Services account

    + * + *

    Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

    + *
      + *
    • + *

      US East (N. Virginia)

      + *
    • + *
    • + *

      US West (N. California)

      + *
    • + *
    • + *

      US West (Oregon)

      + *
    • + *
    • + *

      Asia Pacific (Singapore)

      + *
    • + *
    • + *

      Asia Pacific (Sydney)

      + *
    • + *
    • + *

      Asia Pacific (Tokyo)

      + *
    • + *
    • + *

      Europe (Ireland)

      + *
    • + *
    • + *

      South America (São Paulo)

      + *
    • + *
    + *

    For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

    + *
    + *
  • + *
+ *

For example, the following x-amz-grant-read header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:

+ *

+ * x-amz-grant-read: id="11112222333", id="444455556666" + *

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantReadACP?: string | undefined; + /** + *

Specify access permissions explicitly to allows grantee to allow grantee to write the ACL for the + * applicable object.

+ *

By default, all objects are private. Only the owner has full access control. When uploading an + * object, you can use this header to explicitly grant access permissions to specific Amazon Web Services accounts or + * groups. This header maps to specific permissions that Amazon S3 supports in an ACL. For more information, see + * Access Control List (ACL) + * Overview in the Amazon S3 User Guide.

+ *

You specify each grantee as a type=value pair, where the type is one of the following:

+ *
    + *
  • + *

    + * id – if the value specified is the canonical user ID of an Amazon Web Services account

    + *
  • + *
  • + *

    + * uri – if you are granting permissions to a predefined group

    + *
  • + *
  • + *

    + * emailAddress – if the value specified is the email address of an + * Amazon Web Services account

    + * + *

    Using email addresses to specify a grantee is only supported in the following Amazon Web Services Regions:

    + *
      + *
    • + *

      US East (N. Virginia)

      + *
    • + *
    • + *

      US West (N. California)

      + *
    • + *
    • + *

      US West (Oregon)

      + *
    • + *
    • + *

      Asia Pacific (Singapore)

      + *
    • + *
    • + *

      Asia Pacific (Sydney)

      + *
    • + *
    • + *

      Asia Pacific (Tokyo)

      + *
    • + *
    • + *

      Europe (Ireland)

      + *
    • + *
    • + *

      South America (São Paulo)

      + *
    • + *
    + *

    For a list of all the Amazon S3 supported Regions and endpoints, see Regions and Endpoints in the Amazon Web Services General Reference.

    + *
    + *
  • + *
+ *

For example, the following x-amz-grant-read header grants the Amazon Web Services accounts identified by account IDs permissions to read object data and its metadata:

+ *

+ * x-amz-grant-read: id="11112222333", id="444455556666" + *

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantWriteACP?: string | undefined; + /** + *

Object key for which the multipart upload is to be initiated.

+ * @public + */ + Key: string | undefined; + /** + *

A map of metadata to store with the object in S3.

+ * @public + */ + Metadata?: Record | undefined; + /** + *

The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.

+ *
    + *
  • + *

    + * Directory buckets - + * For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your + * CreateSession requests or PUT object requests. Then, new objects + * are automatically encrypted with the desired encryption settings. For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

    + *

    In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, the encryption request headers must match the encryption settings that are specified in the CreateSession request. + * You can't override the values of the encryption settings (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, and x-amz-server-side-encryption-bucket-key-enabled) that are specified in the CreateSession request. + * You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and + * Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket. + *

    + * + *

    When you use the CLI or the Amazon Web Services SDKs, for CreateSession, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the + * CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. + * So in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), + * the encryption request headers must match the default encryption configuration of the directory bucket. + * + *

    + *
    + *
  • + *
  • + *

    + * S3 access points for Amazon FSx - When accessing data stored in + * Amazon FSx file systems using S3 access points, the only valid server side encryption option is + * aws:fsx. All Amazon FSx file systems have encryption configured by default and are + * encrypted at rest. Data is automatically encrypted before being written to the file system, and + * automatically decrypted as it is read. These processes are handled transparently by Amazon FSx.

    + *
  • + *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. The STANDARD + * storage class provides high durability and high availability. Depending on performance needs, you can + * specify a different Storage Class. For more information, see Storage Classes in the + * Amazon S3 User Guide.

+ * + *
    + *
  • + *

    Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in + * Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in + * Dedicated Local Zones.

    + *
  • + *
  • + *

    Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.

    + *
  • + *
+ *
+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

If the bucket is configured as a website, redirects requests for this object to another object in + * the same bucket or to an external URL. Amazon S3 stores the value of this header in the object + * metadata.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + WebsiteRedirectLocation?: string | undefined; + /** + *

Specifies the algorithm to use when encrypting the object (for example, AES256).

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is + * used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must + * be appropriate for use with the algorithm specified in the + * x-amz-server-side-encryption-customer-algorithm header.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the customer-provided encryption key according to RFC 1321. Amazon S3 + * uses this header for a message integrity check to ensure that the encryption key was transmitted without + * error.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same + * account that's issuing the command, you must use the full Key ARN not the Key ID.

+ *

+ * General purpose buckets - If you specify x-amz-server-side-encryption with aws:kms or aws:kms:dsse, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS + * key to use. If you specify + * x-amz-server-side-encryption:aws:kms or + * x-amz-server-side-encryption:aws:kms:dsse, but do not provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key + * (aws/s3) to protect the data.

+ *

+ * Directory buckets - To encrypt data using SSE-KMS, it's recommended to specify the + * x-amz-server-side-encryption header to aws:kms. Then, the x-amz-server-side-encryption-aws-kms-key-id header implicitly uses + * the bucket's default KMS customer managed key ID. If you want to explicitly set the + * x-amz-server-side-encryption-aws-kms-key-id header, it must match the bucket's default customer managed key (using key ID or ARN, not alias). Your SSE-KMS configuration can only support 1 customer managed key per directory bucket's lifetime. + * The Amazon Web Services managed key (aws/s3) isn't supported. + * + * Incorrect key specification results in an HTTP 400 Bad Request error.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of + * this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs.

+ *

+ * Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

+ * @public + */ + SSEKMSEncryptionContext?: string | undefined; + /** + *

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with + * server-side encryption using Key Management Service (KMS) keys (SSE-KMS).

+ *

+ * General purpose buckets - Setting this header to + * true causes Amazon S3 to use an S3 Bucket Key for object encryption with + * SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 + * Bucket Key.

+ *

+ * Directory buckets - S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or + * the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The tag-set for the object. The tag-set must be encoded as URL Query parameters.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + Tagging?: string | undefined; + /** + *

Specifies the Object Lock mode that you want to apply to the uploaded object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockMode?: ObjectLockMode | undefined; + /** + *

Specifies the date and time when you want the Object Lock to expire.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockRetainUntilDate?: Date | undefined; + /** + *

Specifies whether you want to apply a legal hold to the uploaded object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Indicates the algorithm that you want Amazon S3 to use to create the checksum for the object. For more information, see + * Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Indicates the checksum type that you want Amazon S3 to use to calculate the object’s checksum value. For + * more information, see Checking object integrity in the Amazon S3 + * User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; +} +/** + *

The established temporary security credentials of the session.

+ * + *

+ * Directory buckets - These session credentials are only + * supported for the authentication and authorization of Zonal endpoint API operations on directory buckets.

+ *
+ * @public + */ +export interface SessionCredentials { + /** + *

A unique identifier that's associated with a secret access key. The access key ID and the secret + * access key are used together to sign programmatic Amazon Web Services requests cryptographically.

+ * @public + */ + AccessKeyId: string | undefined; + /** + *

A key that's used with the access key ID to cryptographically sign programmatic Amazon Web Services requests. + * Signing a request identifies the sender and prevents the request from being altered.

+ * @public + */ + SecretAccessKey: string | undefined; + /** + *

A part of the temporary security credentials. The session token is used to validate the temporary + * security credentials. + * + *

+ * @public + */ + SessionToken: string | undefined; + /** + *

Temporary security credentials expire after a specified interval. After temporary credentials + * expire, any calls that you make with those credentials will fail. So you must generate a new set of + * temporary credentials. Temporary credentials cannot be extended or refreshed beyond the original + * specified interval.

+ * @public + */ + Expiration: Date | undefined; +} +/** + * @public + */ +export interface CreateSessionOutput { + /** + *

The server-side encryption algorithm used when you store objects in the directory bucket.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

If you specify x-amz-server-side-encryption with aws:kms, this header indicates the ID of the KMS + * symmetric encryption customer managed key that was used for object encryption.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of + * this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. + * This value is stored as object metadata and automatically gets + * passed on to Amazon Web Services KMS for future GetObject + * operations on this object.

+ * @public + */ + SSEKMSEncryptionContext?: string | undefined; + /** + *

Indicates whether to use an S3 Bucket Key for server-side encryption + * with KMS keys (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

The established temporary security credentials for the created session.

+ * @public + */ + Credentials: SessionCredentials | undefined; +} +/** + * @public + */ +export interface CreateSessionRequest { + /** + *

Specifies the mode of the session that will be created, either ReadWrite or + * ReadOnly. If no session mode is specified, the default behavior attempts to create + * a session with the maximum allowable privilege. It will first attempt to create a + * ReadWrite session, and if that is not allowed by permissions, it will attempt to create a + * ReadOnly session. If neither session type is allowed, the request will return an Access Denied error. A + * ReadWrite session is capable of executing all the Zonal endpoint API operations on a directory bucket. A + * ReadOnly session is constrained to execute the following Zonal endpoint API operations: + * GetObject, HeadObject, ListObjectsV2, + * GetObjectAttributes, ListParts, and + * ListMultipartUploads.

+ * @public + */ + SessionMode?: SessionMode | undefined; + /** + *

The name of the bucket that you create a session for.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The server-side encryption algorithm to use when you store objects in the directory bucket.

+ *

For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). By default, Amazon S3 encrypts data with SSE-S3. + * For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

+ *

+ * S3 access points for Amazon FSx - When accessing data stored in Amazon FSx + * file systems using S3 access points, the only valid server side encryption option is aws:fsx. All + * Amazon FSx file systems have encryption configured by default and are encrypted at rest. Data is + * automatically encrypted before being written to the file system, and automatically decrypted as it is + * read. These processes are handled transparently by Amazon FSx.

+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

If you specify x-amz-server-side-encryption with aws:kms, you must specify the + * x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS + * symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. Also, if the KMS key doesn't exist in the same + * account that't issuing the command, you must use the full Key ARN not the Key ID.

+ *

Your SSE-KMS configuration can only support 1 customer managed key per directory bucket's lifetime. + * The Amazon Web Services managed key (aws/s3) isn't supported. + *

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of + * this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. + * This value is stored as object metadata and automatically gets passed on + * to Amazon Web Services KMS for future GetObject operations on + * this object.

+ *

+ * General purpose buckets - This value must be explicitly added during CopyObject operations if you want an additional encryption context for your object. For more information, see Encryption context in the Amazon S3 User Guide.

+ *

+ * Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

+ * @public + */ + SSEKMSEncryptionContext?: string | undefined; + /** + *

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with + * server-side encryption using KMS keys (SSE-KMS).

+ *

S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or + * the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; +} +/** + * @public + */ +export interface DeleteBucketRequest { + /** + *

Specifies the bucket being deleted.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketAnalyticsConfigurationRequest { + /** + *

The name of the bucket from which an analytics configuration is deleted.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID that identifies the analytics configuration.

+ * @public + */ + Id: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketCorsRequest { + /** + *

Specifies the bucket whose cors configuration is being deleted.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketEncryptionRequest { + /** + *

The name of the bucket containing the server-side encryption configuration to delete.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketIntelligentTieringConfigurationRequest { + /** + *

The name of the Amazon S3 bucket whose configuration you want to modify or retrieve.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID used to identify the S3 Intelligent-Tiering configuration.

+ * @public + */ + Id: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketInventoryConfigurationRequest { + /** + *

The name of the bucket containing the inventory configuration to delete.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID used to identify the inventory configuration.

+ * @public + */ + Id: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketLifecycleRequest { + /** + *

The bucket name of the lifecycle to delete.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketMetadataConfigurationRequest { + /** + *

+ * The general purpose bucket that you want to remove the metadata configuration from. + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

+ * The expected bucket owner of the general purpose bucket that you want to remove the metadata table + * configuration from. + *

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketMetadataTableConfigurationRequest { + /** + *

The general purpose bucket that you want to remove the metadata table configuration from.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The expected bucket owner of the general purpose bucket that you want to remove the metadata table + * configuration from.

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketMetricsConfigurationRequest { + /** + *

The name of the bucket containing the metrics configuration to delete.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID used to identify the metrics configuration. The ID has a 64 character limit and can only + * contain letters, numbers, periods, dashes, and underscores.

+ * @public + */ + Id: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketOwnershipControlsRequest { + /** + *

The Amazon S3 bucket whose OwnershipControls you want to delete.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketPolicyRequest { + /** + *

The bucket name.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketReplicationRequest { + /** + *

The bucket name.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketTaggingRequest { + /** + *

The bucket that has the tag set to be removed.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteBucketWebsiteRequest { + /** + *

The bucket name for which you want to remove the website configuration.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeleteObjectOutput { + /** + *

Indicates whether the specified object version that was permanently deleted was (true) or was not + * (false) a delete marker before deletion. In a simple DELETE, this header indicates whether (true) or not + * (false) the current version of the object is a delete marker. To learn more about delete markers, see + * Working with delete + * markers.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + DeleteMarker?: boolean | undefined; + /** + *

Returns the version ID of the delete marker created as a result of the DELETE operation.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface DeleteObjectRequest { + /** + *

The bucket name of the bucket containing the object.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Key name of the object to delete.

+ * @public + */ + Key: string | undefined; + /** + *

The concatenation of the authentication device's serial number, a space, and the value that is + * displayed on your authentication device. Required to permanently delete a versioned object if versioning + * is configured with MFA delete enabled.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + MFA?: string | undefined; + /** + *

Version ID used to reference a specific version of the object.

+ * + *

For directory buckets in this API operation, only the null value of the version ID is supported.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

Indicates whether S3 Object Lock should bypass Governance-mode restrictions to process this + * operation. To use this header, you must have the s3:BypassGovernanceRetention + * permission.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + BypassGovernanceRetention?: boolean | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Deletes the object if the ETag (entity tag) value provided during the delete operation matches the ETag of the object in S3. + * If the ETag values do not match, the operation returns a 412 Precondition Failed error.

+ *

Expects the ETag value as a string. If-Match does accept a string value of an '*' (asterisk) character to denote a match of any ETag.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfMatch?: string | undefined; + /** + *

If present, the object is deleted only if its modification times matches the provided + * Timestamp. If the Timestamp values do not match, the operation returns a + * 412 Precondition Failed error. If the Timestamp matches or if the object + * doesn’t exist, the operation returns a 204 Success (No Content) response.

+ * + *

This functionality is only supported for directory buckets.

+ *
+ * @public + */ + IfMatchLastModifiedTime?: Date | undefined; + /** + *

If present, the object is deleted only if its size matches the provided size in bytes. If the + * Size value does not match, the operation returns a 412 Precondition Failed + * error. If the Size matches or if the object doesn’t exist, the operation returns a + * 204 Success (No Content) response.

+ * + *

This functionality is only supported for directory buckets.

+ *
+ * + *

You can use the If-Match, x-amz-if-match-last-modified-time and + * x-amz-if-match-size conditional headers in conjunction with each-other or + * individually.

+ *
+ * @public + */ + IfMatchSize?: number | undefined; +} +/** + *

Information about the deleted object.

+ * @public + */ +export interface DeletedObject { + /** + *

The name of the deleted object.

+ * @public + */ + Key?: string | undefined; + /** + *

The version ID of the deleted object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

Indicates whether the specified object version that was permanently deleted was (true) or was not + * (false) a delete marker before deletion. In a simple DELETE, this header indicates whether (true) or not + * (false) the current version of the object is a delete marker. To learn more about delete markers, see + * Working with delete + * markers.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + DeleteMarker?: boolean | undefined; + /** + *

The version ID of the delete marker created as a result of the DELETE operation. If you delete a + * specific object version, the value returned by this header is the version ID of the object version + * deleted.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + DeleteMarkerVersionId?: string | undefined; +} +/** + *

Container for all error elements.

+ * @public + */ +export interface _Error { + /** + *

The error key.

+ * @public + */ + Key?: string | undefined; + /** + *

The version ID of the error.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

The error code is a string that uniquely identifies an error condition. It is meant to be read and + * understood by programs that detect and handle errors by type. The following is a list of Amazon S3 error + * codes. For more information, see Error responses.

+ *
    + *
  • + *
      + *
    • + *

      + * Code: AccessDenied

      + *
    • + *
    • + *

      + * Description: Access Denied

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: AccountProblem

      + *
    • + *
    • + *

      + * Description: There is a problem with your Amazon Web Services account that prevents + * the action from completing successfully. Contact Amazon Web Services Support for further assistance.

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: AllAccessDisabled

      + *
    • + *
    • + *

      + * Description: All access to this Amazon S3 resource has been disabled. + * Contact Amazon Web Services Support for further assistance.

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: AmbiguousGrantByEmailAddress

      + *
    • + *
    • + *

      + * Description: The email address you provided is associated with more + * than one account.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: AuthorizationHeaderMalformed

      + *
    • + *
    • + *

      + * Description: The authorization header you provided is invalid.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * HTTP Status Code: N/A

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: BadDigest

      + *
    • + *
    • + *

      + * Description: The Content-MD5 you specified did not match what we + * received.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: BucketAlreadyExists

      + *
    • + *
    • + *

      + * Description: The requested bucket name is not available. The bucket + * namespace is shared by all users of the system. Please select a different name and try + * again.

      + *
    • + *
    • + *

      + * HTTP Status Code: 409 Conflict

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: BucketAlreadyOwnedByYou

      + *
    • + *
    • + *

      + * Description: The bucket you tried to create already exists, and you own + * it. Amazon S3 returns this error in all Amazon Web Services Regions except in the North Virginia Region. For legacy + * compatibility, if you re-create an existing bucket that you already own in the North Virginia + * Region, Amazon S3 returns 200 OK and resets the bucket access control lists (ACLs).

      + *
    • + *
    • + *

      + * Code: 409 Conflict (in all Regions except the North Virginia Region) + *

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: BucketNotEmpty

      + *
    • + *
    • + *

      + * Description: The bucket you tried to delete is not empty.

      + *
    • + *
    • + *

      + * HTTP Status Code: 409 Conflict

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: CredentialsNotSupported

      + *
    • + *
    • + *

      + * Description: This request does not support credentials.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: CrossLocationLoggingProhibited

      + *
    • + *
    • + *

      + * Description: Cross-location logging not allowed. Buckets in one + * geographic location cannot log information to a bucket in another location.

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: EntityTooSmall

      + *
    • + *
    • + *

      + * Description: Your proposed upload is smaller than the minimum allowed + * object size.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: EntityTooLarge

      + *
    • + *
    • + *

      + * Description: Your proposed upload exceeds the maximum allowed object + * size.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: ExpiredToken

      + *
    • + *
    • + *

      + * Description: The provided token has expired.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: IllegalVersioningConfigurationException

      + *
    • + *
    • + *

      + * Description: Indicates that the versioning configuration specified in + * the request is invalid.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: IncompleteBody

      + *
    • + *
    • + *

      + * Description: You did not provide the number of bytes specified by the + * Content-Length HTTP header

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: IncorrectNumberOfFilesInPostRequest

      + *
    • + *
    • + *

      + * Description: POST requires exactly one file upload per request.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InlineDataTooLarge

      + *
    • + *
    • + *

      + * Description: Inline data exceeds the maximum allowed size.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InternalError

      + *
    • + *
    • + *

      + * Description: We encountered an internal error. Please try again.

      + *
    • + *
    • + *

      + * HTTP Status Code: 500 Internal Server Error

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Server

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidAccessKeyId

      + *
    • + *
    • + *

      + * Description: The Amazon Web Services access key ID you provided does not exist in our + * records.

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidAddressingHeader

      + *
    • + *
    • + *

      + * Description: You must specify the Anonymous role.

      + *
    • + *
    • + *

      + * HTTP Status Code: N/A

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidArgument

      + *
    • + *
    • + *

      + * Description: Invalid Argument

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidBucketName

      + *
    • + *
    • + *

      + * Description: The specified bucket is not valid.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidBucketState

      + *
    • + *
    • + *

      + * Description: The request is not valid with the current state of the + * bucket.

      + *
    • + *
    • + *

      + * HTTP Status Code: 409 Conflict

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidDigest

      + *
    • + *
    • + *

      + * Description: The Content-MD5 you specified is not valid.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidEncryptionAlgorithmError

      + *
    • + *
    • + *

      + * Description: The encryption request you specified is not valid. The + * valid value is AES256.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidLocationConstraint

      + *
    • + *
    • + *

      + * Description: The specified location constraint is not valid. For more + * information about Regions, see How to Select a Region for Your + * Buckets.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidObjectState

      + *
    • + *
    • + *

      + * Description: The action is not valid for the current state of the + * object.

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidPart

      + *
    • + *
    • + *

      + * Description: One or more of the specified parts could not be found. The + * part might not have been uploaded, or the specified entity tag might not have matched the part's + * entity tag.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidPartOrder

      + *
    • + *
    • + *

      + * Description: The list of parts was not in ascending order. Parts list + * must be specified in order by part number.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidPayer

      + *
    • + *
    • + *

      + * Description: All access to this object has been disabled. Please + * contact Amazon Web Services Support for further assistance.

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidPolicyDocument

      + *
    • + *
    • + *

      + * Description: The content of the form does not meet the conditions + * specified in the policy document.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRange

      + *
    • + *
    • + *

      + * Description: The requested range cannot be satisfied.

      + *
    • + *
    • + *

      + * HTTP Status Code: 416 Requested Range Not Satisfiable

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRequest

      + *
    • + *
    • + *

      + * Description: Please use AWS4-HMAC-SHA256.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * Code: N/A

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRequest

      + *
    • + *
    • + *

      + * Description: SOAP requests must be made over an HTTPS + * connection.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRequest

      + *
    • + *
    • + *

      + * Description: Amazon S3 Transfer Acceleration is not supported for buckets + * with non-DNS compliant names.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * Code: N/A

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRequest

      + *
    • + *
    • + *

      + * Description: Amazon S3 Transfer Acceleration is not supported for buckets + * with periods (.) in their names.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * Code: N/A

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRequest

      + *
    • + *
    • + *

      + * Description: Amazon S3 Transfer Accelerate endpoint only supports virtual + * style requests.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * Code: N/A

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRequest

      + *
    • + *
    • + *

      + * Description: Amazon S3 Transfer Accelerate is not configured on this + * bucket.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * Code: N/A

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRequest

      + *
    • + *
    • + *

      + * Description: Amazon S3 Transfer Accelerate is disabled on this + * bucket.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * Code: N/A

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRequest

      + *
    • + *
    • + *

      + * Description: Amazon S3 Transfer Acceleration is not supported on this + * bucket. Contact Amazon Web Services Support for more information.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * Code: N/A

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidRequest

      + *
    • + *
    • + *

      + * Description: Amazon S3 Transfer Acceleration cannot be enabled on this + * bucket. Contact Amazon Web Services Support for more information.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * Code: N/A

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidSecurity

      + *
    • + *
    • + *

      + * Description: The provided security credentials are not valid.

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidSOAPRequest

      + *
    • + *
    • + *

      + * Description: The SOAP request body is invalid.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidStorageClass

      + *
    • + *
    • + *

      + * Description: The storage class you specified is not valid.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidTargetBucketForLogging

      + *
    • + *
    • + *

      + * Description: The target bucket for logging does not exist, is not owned + * by you, or does not have the appropriate grants for the log-delivery group.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidToken

      + *
    • + *
    • + *

      + * Description: The provided token is malformed or otherwise + * invalid.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: InvalidURI

      + *
    • + *
    • + *

      + * Description: Couldn't parse the specified URI.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: KeyTooLongError

      + *
    • + *
    • + *

      + * Description: Your key is too long.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MalformedACLError

      + *
    • + *
    • + *

      + * Description: The XML you provided was not well-formed or did not + * validate against our published schema.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MalformedPOSTRequest

      + *
    • + *
    • + *

      + * Description: The body of your POST request is not well-formed + * multipart/form-data.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MalformedXML

      + *
    • + *
    • + *

      + * Description: This happens when the user sends malformed XML (XML that + * doesn't conform to the published XSD) for the configuration. The error message is, "The XML you + * provided was not well-formed or did not validate against our published schema."

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MaxMessageLengthExceeded

      + *
    • + *
    • + *

      + * Description: Your request was too big.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MaxPostPreDataLengthExceededError

      + *
    • + *
    • + *

      + * Description: Your POST request fields preceding the upload file were + * too large.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MetadataTooLarge

      + *
    • + *
    • + *

      + * Description: Your metadata headers exceed the maximum allowed metadata + * size.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MethodNotAllowed

      + *
    • + *
    • + *

      + * Description: The specified method is not allowed against this + * resource.

      + *
    • + *
    • + *

      + * HTTP Status Code: 405 Method Not Allowed

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MissingAttachment

      + *
    • + *
    • + *

      + * Description: A SOAP attachment was expected, but none were + * found.

      + *
    • + *
    • + *

      + * HTTP Status Code: N/A

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MissingContentLength

      + *
    • + *
    • + *

      + * Description: You must provide the Content-Length HTTP header.

      + *
    • + *
    • + *

      + * HTTP Status Code: 411 Length Required

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MissingRequestBodyError

      + *
    • + *
    • + *

      + * Description: This happens when the user sends an empty XML document as + * a request. The error message is, "Request body is empty."

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MissingSecurityElement

      + *
    • + *
    • + *

      + * Description: The SOAP 1.1 request is missing a security element.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: MissingSecurityHeader

      + *
    • + *
    • + *

      + * Description: Your request is missing a required header.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: NoLoggingStatusForKey

      + *
    • + *
    • + *

      + * Description: There is no such thing as a logging status subresource for + * a key.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: NoSuchBucket

      + *
    • + *
    • + *

      + * Description: The specified bucket does not exist.

      + *
    • + *
    • + *

      + * HTTP Status Code: 404 Not Found

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: NoSuchBucketPolicy

      + *
    • + *
    • + *

      + * Description: The specified bucket does not have a bucket policy.

      + *
    • + *
    • + *

      + * HTTP Status Code: 404 Not Found

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: NoSuchKey

      + *
    • + *
    • + *

      + * Description: The specified key does not exist.

      + *
    • + *
    • + *

      + * HTTP Status Code: 404 Not Found

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: NoSuchLifecycleConfiguration

      + *
    • + *
    • + *

      + * Description: The lifecycle configuration does not exist.

      + *
    • + *
    • + *

      + * HTTP Status Code: 404 Not Found

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: NoSuchUpload

      + *
    • + *
    • + *

      + * Description: The specified multipart upload does not exist. The upload + * ID might be invalid, or the multipart upload might have been aborted or completed.

      + *
    • + *
    • + *

      + * HTTP Status Code: 404 Not Found

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: NoSuchVersion

      + *
    • + *
    • + *

      + * Description: Indicates that the version ID specified in the request + * does not match an existing version.

      + *
    • + *
    • + *

      + * HTTP Status Code: 404 Not Found

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: NotImplemented

      + *
    • + *
    • + *

      + * Description: A header you provided implies functionality that is not + * implemented.

      + *
    • + *
    • + *

      + * HTTP Status Code: 501 Not Implemented

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Server

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: NotSignedUp

      + *
    • + *
    • + *

      + * Description: Your account is not signed up for the Amazon S3 service. You + * must sign up before you can use Amazon S3. You can sign up at the following URL: Amazon S3 + *

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: OperationAborted

      + *
    • + *
    • + *

      + * Description: A conflicting conditional action is currently in progress + * against this resource. Try again.

      + *
    • + *
    • + *

      + * HTTP Status Code: 409 Conflict

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: PermanentRedirect

      + *
    • + *
    • + *

      + * Description: The bucket you are attempting to access must be addressed + * using the specified endpoint. Send all future requests to this endpoint.

      + *
    • + *
    • + *

      + * HTTP Status Code: 301 Moved Permanently

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: PreconditionFailed

      + *
    • + *
    • + *

      + * Description: At least one of the preconditions you specified did not + * hold.

      + *
    • + *
    • + *

      + * HTTP Status Code: 412 Precondition Failed

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: Redirect

      + *
    • + *
    • + *

      + * Description: Temporary redirect.

      + *
    • + *
    • + *

      + * HTTP Status Code: 307 Moved Temporarily

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: RestoreAlreadyInProgress

      + *
    • + *
    • + *

      + * Description: Object restore is already in progress.

      + *
    • + *
    • + *

      + * HTTP Status Code: 409 Conflict

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: RequestIsNotMultiPartContent

      + *
    • + *
    • + *

      + * Description: Bucket POST must be of the enclosure-type + * multipart/form-data.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: RequestTimeout

      + *
    • + *
    • + *

      + * Description: Your socket connection to the server was not read from or + * written to within the timeout period.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: RequestTimeTooSkewed

      + *
    • + *
    • + *

      + * Description: The difference between the request time and the server's + * time is too large.

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: RequestTorrentOfBucketError

      + *
    • + *
    • + *

      + * Description: Requesting the torrent file of a bucket is not + * permitted.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: SignatureDoesNotMatch

      + *
    • + *
    • + *

      + * Description: The request signature we calculated does not match the + * signature you provided. Check your Amazon Web Services secret access key and signing method. For more + * information, see REST Authentication and SOAP Authentication for + * details.

      + *
    • + *
    • + *

      + * HTTP Status Code: 403 Forbidden

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: ServiceUnavailable

      + *
    • + *
    • + *

      + * Description: Service is unable to handle request.

      + *
    • + *
    • + *

      + * HTTP Status Code: 503 Service Unavailable

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Server

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: SlowDown

      + *
    • + *
    • + *

      + * Description: Reduce your request rate.

      + *
    • + *
    • + *

      + * HTTP Status Code: 503 Slow Down

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Server

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: TemporaryRedirect

      + *
    • + *
    • + *

      + * Description: You are being redirected to the bucket while DNS + * updates.

      + *
    • + *
    • + *

      + * HTTP Status Code: 307 Moved Temporarily

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: TokenRefreshRequired

      + *
    • + *
    • + *

      + * Description: The provided token must be refreshed.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: TooManyBuckets

      + *
    • + *
    • + *

      + * Description: You have attempted to create more buckets than + * allowed.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: UnexpectedContent

      + *
    • + *
    • + *

      + * Description: This request does not support content.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: UnresolvableGrantByEmailAddress

      + *
    • + *
    • + *

      + * Description: The email address you provided does not match any account + * on record.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
  • + *
      + *
    • + *

      + * Code: UserKeyMustBeSpecified

      + *
    • + *
    • + *

      + * Description: The bucket POST must contain the specified field name. If + * it is specified, check the order of the fields.

      + *
    • + *
    • + *

      + * HTTP Status Code: 400 Bad Request

      + *
    • + *
    • + *

      + * SOAP Fault Code Prefix: Client

      + *
    • + *
    + *
  • + *
+ *

+ * @public + */ + Code?: string | undefined; + /** + *

The error message contains a generic description of the error condition in English. It is intended + * for a human audience. Simple programs display the message directly to the end user if they encounter an + * error condition they don't know how or don't care to handle. Sophisticated programs with more exhaustive + * error handling and proper internationalization are more likely to ignore the error message.

+ * @public + */ + Message?: string | undefined; +} +/** + * @public + */ +export interface DeleteObjectsOutput { + /** + *

Container element for a successful delete. It identifies the object that was successfully + * deleted.

+ * @public + */ + Deleted?: DeletedObject[] | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; + /** + *

Container for a failed delete action that describes the object that Amazon S3 attempted to delete and the + * error it encountered.

+ * @public + */ + Errors?: _Error[] | undefined; +} +/** + *

Object Identifier is unique value to identify objects.

+ * @public + */ +export interface ObjectIdentifier { + /** + *

Key name of the object.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * @public + */ + Key: string | undefined; + /** + *

Version ID for the specific version of the object to delete.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

An entity tag (ETag) is an identifier assigned by a web server to a specific version of a resource + * found at a URL. This header field makes the request method conditional on ETags.

+ * + *

Entity tags (ETags) for S3 Express One Zone are random alphanumeric strings unique to the object. + *

+ *
+ * @public + */ + ETag?: string | undefined; + /** + *

If present, the objects are deleted only if its modification times matches the provided + * Timestamp.

+ * + *

This functionality is only supported for directory buckets.

+ *
+ * @public + */ + LastModifiedTime?: Date | undefined; + /** + *

If present, the objects are deleted only if its size matches the provided size in bytes.

+ * + *

This functionality is only supported for directory buckets.

+ *
+ * @public + */ + Size?: number | undefined; +} +/** + *

Container for the objects to delete.

+ * @public + */ +export interface Delete { + /** + *

The object to delete.

+ * + *

+ * Directory buckets - For directory buckets, an object + * that's composed entirely of whitespace characters is not supported by the DeleteObjects + * API operation. The request will receive a 400 Bad Request error and none of the objects + * in the request will be deleted.

+ *
+ * @public + */ + Objects: ObjectIdentifier[] | undefined; + /** + *

Element to enable quiet mode for the request. When you add this element, you must set its value to + * true.

+ * @public + */ + Quiet?: boolean | undefined; +} +/** + * @public + */ +export interface DeleteObjectsRequest { + /** + *

The bucket name containing the objects to delete.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Container for the request.

+ * @public + */ + Delete: Delete | undefined; + /** + *

The concatenation of the authentication device's serial number, a space, and the value that is + * displayed on your authentication device. Required to permanently delete a versioned object if versioning + * is configured with MFA delete enabled.

+ *

When performing the DeleteObjects operation on an MFA delete enabled bucket, which + * attempts to delete the specified versioned objects, you must include an MFA token. If you don't provide + * an MFA token, the entire request will fail, even if there are non-versioned objects that you are trying + * to delete. If you provide an invalid token, whether there are versioned object keys in the request or + * not, the entire Multi-Object Delete request will fail. For information about MFA Delete, see MFA + * Delete in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + MFA?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

Specifies whether you want to delete this object even if it has a Governance-type Object Lock in + * place. To use this header, you must have the s3:BypassGovernanceRetention + * permission.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + BypassGovernanceRetention?: boolean | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum-algorithm + * or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request.

+ *

For the x-amz-checksum-algorithm + * header, replace + * algorithm + * with the supported algorithm from the following list:

+ *
    + *
  • + *

    + * CRC32 + *

    + *
  • + *
  • + *

    + * CRC32C + *

    + *
  • + *
  • + *

    + * CRC64NVME + *

    + *
  • + *
  • + *

    + * SHA1 + *

    + *
  • + *
  • + *

    + * SHA256 + *

    + *
  • + *
+ *

For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If the individual checksum value you provide through x-amz-checksum-algorithm + * doesn't match the checksum algorithm you set through x-amz-sdk-checksum-algorithm, Amazon S3 fails the request with a BadDigest error.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; +} +/** + * @public + */ +export interface DeleteObjectTaggingOutput { + /** + *

The versionId of the object the tag-set was removed from.

+ * @public + */ + VersionId?: string | undefined; +} +/** + * @public + */ +export interface DeleteObjectTaggingRequest { + /** + *

The bucket name containing the objects from which to remove the tags.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The key that identifies the object in the bucket from which to remove all tags.

+ * @public + */ + Key: string | undefined; + /** + *

The versionId of the object that the tag-set will be removed from.

+ * @public + */ + VersionId?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface DeletePublicAccessBlockRequest { + /** + *

The Amazon S3 bucket whose PublicAccessBlock configuration you want to delete.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetBucketAbacOutput { + /** + *

The ABAC status of the general purpose bucket.

+ * @public + */ + AbacStatus?: AbacStatus | undefined; +} +/** + * @public + */ +export interface GetBucketAbacRequest { + /** + *

The name of the general purpose bucket.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Amazon Web Services account ID of the general purpose bucket's owner.

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetBucketAccelerateConfigurationOutput { + /** + *

The accelerate configuration of the bucket.

+ * @public + */ + Status?: BucketAccelerateStatus | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface GetBucketAccelerateConfigurationRequest { + /** + *

The name of the bucket for which the accelerate configuration is retrieved.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; +} +/** + * @public + */ +export interface GetBucketAclOutput { + /** + *

Container for the bucket owner's ID.

+ * @public + */ + Owner?: Owner | undefined; + /** + *

A list of grants.

+ * @public + */ + Grants?: Grant[] | undefined; +} +/** + * @public + */ +export interface GetBucketAclRequest { + /** + *

Specifies the S3 bucket whose ACL is being requested.

+ *

When you use this API operation with an access point, provide the alias of the access point in place of the bucket name.

+ *

When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

A conjunction (logical AND) of predicates, which is used in evaluating a metrics filter. The + * operator must have at least two predicates in any combination, and an object must match all of the + * predicates for the filter to apply.

+ * @public + */ +export interface AnalyticsAndOperator { + /** + *

The prefix to use when evaluating an AND predicate: The prefix that an object must have to be + * included in the metrics results.

+ * @public + */ + Prefix?: string | undefined; + /** + *

The list of tags to use when evaluating an AND predicate.

+ * @public + */ + Tags?: Tag[] | undefined; +} +/** + *

The filter used to describe a set of objects for analyses. A filter must have exactly one prefix, + * one tag, or one conjunction (AnalyticsAndOperator). If no filter is provided, all objects will be + * considered in any analysis.

+ * @public + */ +export type AnalyticsFilter = AnalyticsFilter.AndMember | AnalyticsFilter.PrefixMember | AnalyticsFilter.TagMember | AnalyticsFilter.$UnknownMember; +/** + * @public + */ +export declare namespace AnalyticsFilter { + /** + *

The prefix to use when evaluating an analytics filter.

+ * @public + */ + interface PrefixMember { + Prefix: string; + Tag?: never; + And?: never; + $unknown?: never; + } + /** + *

The tag to use when evaluating an analytics filter.

+ * @public + */ + interface TagMember { + Prefix?: never; + Tag: Tag; + And?: never; + $unknown?: never; + } + /** + *

A conjunction (logical AND) of predicates, which is used in evaluating an analytics filter. The + * operator must have at least two predicates.

+ * @public + */ + interface AndMember { + Prefix?: never; + Tag?: never; + And: AnalyticsAndOperator; + $unknown?: never; + } + /** + * @public + */ + interface $UnknownMember { + Prefix?: never; + Tag?: never; + And?: never; + $unknown: [string, any]; + } + /** + * @deprecated unused in schema-serde mode. + * + */ + interface Visitor { + Prefix: (value: string) => T; + Tag: (value: Tag) => T; + And: (value: AnalyticsAndOperator) => T; + _: (name: string, value: any) => T; + } +} +/** + *

Contains information about where to publish the analytics results.

+ * @public + */ +export interface AnalyticsS3BucketDestination { + /** + *

Specifies the file format used when exporting data to Amazon S3.

+ * @public + */ + Format: AnalyticsS3ExportFileFormat | undefined; + /** + *

The account ID that owns the destination S3 bucket. If no account ID is provided, the owner is not + * validated before exporting data.

+ * + *

Although this value is optional, we strongly recommend that you set it to help prevent problems + * if the destination bucket ownership changes.

+ *
+ * @public + */ + BucketAccountId?: string | undefined; + /** + *

The Amazon Resource Name (ARN) of the bucket to which data is exported.

+ * @public + */ + Bucket: string | undefined; + /** + *

The prefix to use when exporting data. The prefix is prepended to all results.

+ * @public + */ + Prefix?: string | undefined; +} +/** + *

Where to publish the analytics results.

+ * @public + */ +export interface AnalyticsExportDestination { + /** + *

A destination signifying output to an S3 bucket.

+ * @public + */ + S3BucketDestination: AnalyticsS3BucketDestination | undefined; +} +/** + *

Container for data related to the storage class analysis for an Amazon S3 bucket for export.

+ * @public + */ +export interface StorageClassAnalysisDataExport { + /** + *

The version of the output schema to use when exporting data. Must be V_1.

+ * @public + */ + OutputSchemaVersion: StorageClassAnalysisSchemaVersion | undefined; + /** + *

The place to store the data for an analysis.

+ * @public + */ + Destination: AnalyticsExportDestination | undefined; +} +/** + *

Specifies data related to access patterns to be collected and made available to analyze the + * tradeoffs between different storage classes for an Amazon S3 bucket.

+ * @public + */ +export interface StorageClassAnalysis { + /** + *

Specifies how data related to the storage class analysis for an Amazon S3 bucket should be + * exported.

+ * @public + */ + DataExport?: StorageClassAnalysisDataExport | undefined; +} +/** + *

Specifies the configuration and any analyses for the analytics filter of an Amazon S3 bucket.

+ * @public + */ +export interface AnalyticsConfiguration { + /** + *

The ID that identifies the analytics configuration.

+ * @public + */ + Id: string | undefined; + /** + *

The filter used to describe a set of objects for analyses. A filter must have exactly one prefix, + * one tag, or one conjunction (AnalyticsAndOperator). If no filter is provided, all objects will be + * considered in any analysis.

+ * @public + */ + Filter?: AnalyticsFilter | undefined; + /** + *

Contains data related to access patterns to be collected and made available to analyze the + * tradeoffs between different storage classes.

+ * @public + */ + StorageClassAnalysis: StorageClassAnalysis | undefined; +} +/** + * @public + */ +export interface GetBucketAnalyticsConfigurationOutput { + /** + *

The configuration and any analyses for the analytics filter.

+ * @public + */ + AnalyticsConfiguration?: AnalyticsConfiguration | undefined; +} +/** + * @public + */ +export interface GetBucketAnalyticsConfigurationRequest { + /** + *

The name of the bucket from which an analytics configuration is retrieved.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID that identifies the analytics configuration.

+ * @public + */ + Id: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Specifies a cross-origin access rule for an Amazon S3 bucket.

+ * @public + */ +export interface CORSRule { + /** + *

Unique identifier for the rule. The value cannot be longer than 255 characters.

+ * @public + */ + ID?: string | undefined; + /** + *

Headers that are specified in the Access-Control-Request-Headers header. These headers + * are allowed in a preflight OPTIONS request. In response to any preflight OPTIONS request, Amazon S3 returns + * any requested headers that are allowed.

+ * @public + */ + AllowedHeaders?: string[] | undefined; + /** + *

An HTTP method that you allow the origin to execute. Valid values are GET, + * PUT, HEAD, POST, and DELETE.

+ * @public + */ + AllowedMethods: string[] | undefined; + /** + *

One or more origins you want customers to be able to access the bucket from.

+ * @public + */ + AllowedOrigins: string[] | undefined; + /** + *

One or more headers in the response that you want customers to be able to access from their + * applications (for example, from a JavaScript XMLHttpRequest object).

+ * @public + */ + ExposeHeaders?: string[] | undefined; + /** + *

The time in seconds that your browser is to cache the preflight response for the specified + * resource.

+ * @public + */ + MaxAgeSeconds?: number | undefined; +} +/** + * @public + */ +export interface GetBucketCorsOutput { + /** + *

A set of origins and methods (cross-origin access that you want to allow). You can add up to 100 + * rules to the configuration.

+ * @public + */ + CORSRules?: CORSRule[] | undefined; +} +/** + * @public + */ +export interface GetBucketCorsRequest { + /** + *

The bucket name for which to get the cors configuration.

+ *

When you use this API operation with an access point, provide the alias of the access point in place of the bucket name.

+ *

When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Describes the default server-side encryption to apply to new objects in the bucket. If a PUT Object + * request doesn't specify any server-side encryption, this default encryption will be applied. For more + * information, see PutBucketEncryption.

+ * + *
    + *
  • + *

    + * General purpose buckets - If you don't specify a customer managed key + * at configuration, Amazon S3 automatically creates an Amazon Web Services KMS key (aws/s3) in your Amazon Web Services + * account the first time that you add an object encrypted with SSE-KMS to a bucket. By default, Amazon S3 + * uses this KMS key for SSE-KMS.

    + *
  • + *
  • + *

    + * Directory buckets - + * Your SSE-KMS configuration can only support 1 customer managed key per directory bucket's lifetime. + * The Amazon Web Services managed key (aws/s3) isn't supported. + *

    + *
  • + *
  • + *

    + * Directory buckets - + * For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS.

    + *
  • + *
+ *
+ * @public + */ +export interface ServerSideEncryptionByDefault { + /** + *

Server-side encryption algorithm to use for the default encryption.

+ * + *

For directory buckets, there are only two supported values for server-side encryption: AES256 and aws:kms.

+ *
+ * @public + */ + SSEAlgorithm: ServerSideEncryption | undefined; + /** + *

Amazon Web Services Key Management Service (KMS) customer managed key ID to use for the default encryption.

+ * + *
    + *
  • + *

    + * General purpose buckets - This parameter is allowed if and + * only if SSEAlgorithm is set to aws:kms or + * aws:kms:dsse.

    + *
  • + *
  • + *

    + * Directory buckets - This parameter is allowed if and + * only if SSEAlgorithm is set to aws:kms.

    + *
  • + *
+ *
+ *

You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.

+ *
    + *
  • + *

    Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab + *

    + *
  • + *
  • + *

    Key ARN: + * arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab + *

    + *
  • + *
  • + *

    Key Alias: alias/alias-name + *

    + *
  • + *
+ *

If you are using encryption with cross-account or Amazon Web Services service operations, you must use a fully + * qualified KMS key ARN. For more information, see Using + * encryption for cross-account operations.

+ * + *
    + *
  • + *

    + * General purpose buckets - If you're specifying a customer + * managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key + * alias instead, then KMS resolves the key within the requester’s account. This behavior can + * result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket + * owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when + * creating a VPC flow log.

    + *
  • + *
  • + *

    + * Directory buckets - + * When you specify an KMS customer managed key for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.

    + *
  • + *
+ *
+ * + *

Amazon S3 only supports symmetric encryption KMS keys. For more information, see Asymmetric keys in + * Amazon Web Services KMS in the Amazon Web Services Key Management Service Developer Guide.

+ *
+ * @public + */ + KMSMasterKeyID?: string | undefined; +} +/** + *

A bucket-level setting for Amazon S3 general purpose buckets used to prevent the upload of new objects encrypted with the specified server-side encryption type. For example, blocking an encryption type will block PutObject, CopyObject, PostObject, multipart upload, and replication requests to the bucket for objects with the specified encryption type. However, you can continue to read and list any pre-existing objects already encrypted with the specified encryption type. For more information, see Blocking or unblocking SSE-C for a general purpose bucket.

+ *

This data type is used with the following actions:

+ * + *
+ *
Permissions
+ *
+ *

You must have the s3:PutEncryptionConfiguration permission to block or unblock an encryption type for a bucket.

+ *

You must have the s3:GetEncryptionConfiguration permission to view a bucket's encryption type.

+ *
+ *
+ * @public + */ +export interface BlockedEncryptionTypes { + /** + *

The object encryption type that you want to block or unblock for an Amazon S3 general purpose bucket.

+ * + *

Currently, this parameter only supports blocking or unblocking server side encryption with customer-provided keys (SSE-C). For more information about SSE-C, see Using server-side encryption with customer-provided keys (SSE-C).

+ *
+ * @public + */ + EncryptionType?: EncryptionType[] | undefined; +} +/** + *

Specifies the default server-side encryption configuration.

+ * + *
    + *
  • + *

    + * General purpose buckets - If you're specifying a customer + * managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key + * alias instead, then KMS resolves the key within the requester’s account. This behavior can + * result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket + * owner.

    + *
  • + *
  • + *

    + * Directory buckets - + * When you specify an KMS customer managed key for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.

    + *
  • + *
+ *
+ * @public + */ +export interface ServerSideEncryptionRule { + /** + *

Specifies the default server-side encryption to apply to new objects in the bucket. If a PUT Object + * request doesn't specify any server-side encryption, this default encryption will be applied.

+ * @public + */ + ApplyServerSideEncryptionByDefault?: ServerSideEncryptionByDefault | undefined; + /** + *

Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) + * for new objects in the bucket. Existing objects are not affected. Setting the + * BucketKeyEnabled element to true causes Amazon S3 to use an S3 Bucket Key.

+ * + *
    + *
  • + *

    + * General purpose buckets - By default, S3 Bucket Key is not + * enabled. For more information, see Amazon S3 Bucket Keys in the + * Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory buckets - + * S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or + * the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

    + *
  • + *
+ *
+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

A bucket-level setting for Amazon S3 general purpose buckets used to prevent the upload of new objects encrypted with the specified server-side encryption type. For example, blocking an encryption type will block PutObject, CopyObject, PostObject, multipart upload, and replication requests to the bucket for objects with the specified encryption type. However, you can continue to read and list any pre-existing objects already encrypted with the specified encryption type. For more information, see Blocking or unblocking SSE-C for a general purpose bucket.

+ * + *

Currently, this parameter only supports blocking or unblocking server-side encryption with customer-provided keys (SSE-C). For more information about SSE-C, see Using server-side encryption with customer-provided keys (SSE-C).

+ *
+ * @public + */ + BlockedEncryptionTypes?: BlockedEncryptionTypes | undefined; +} +/** + *

Specifies the default server-side-encryption configuration.

+ * @public + */ +export interface ServerSideEncryptionConfiguration { + /** + *

Container for information about a particular server-side encryption configuration rule.

+ * @public + */ + Rules: ServerSideEncryptionRule[] | undefined; +} +/** + * @public + */ +export interface GetBucketEncryptionOutput { + /** + *

Specifies the default server-side-encryption configuration.

+ * @public + */ + ServerSideEncryptionConfiguration?: ServerSideEncryptionConfiguration | undefined; +} +/** + * @public + */ +export interface GetBucketEncryptionRequest { + /** + *

The name of the bucket from which the server-side encryption configuration is retrieved.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

A container for specifying S3 Intelligent-Tiering filters. The filters determine the subset of + * objects to which the rule applies.

+ * @public + */ +export interface IntelligentTieringAndOperator { + /** + *

An object key name prefix that identifies the subset of objects to which the configuration + * applies.

+ * @public + */ + Prefix?: string | undefined; + /** + *

All of these tags must exist in the object's tag set in order for the configuration to apply.

+ * @public + */ + Tags?: Tag[] | undefined; +} +/** + *

The Filter is used to identify objects that the S3 Intelligent-Tiering configuration + * applies to.

+ * @public + */ +export interface IntelligentTieringFilter { + /** + *

An object key name prefix that identifies the subset of objects to which the rule applies.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * @public + */ + Prefix?: string | undefined; + /** + *

A container of a key value name pair.

+ * @public + */ + Tag?: Tag | undefined; + /** + *

A conjunction (logical AND) of predicates, which is used in evaluating a metrics filter. The + * operator must have at least two predicates, and an object must match all of the predicates in order for + * the filter to apply.

+ * @public + */ + And?: IntelligentTieringAndOperator | undefined; +} +/** + *

The S3 Intelligent-Tiering storage class is designed to optimize storage costs by automatically + * moving data to the most cost-effective storage access tier, without additional operational + * overhead.

+ * @public + */ +export interface Tiering { + /** + *

The number of consecutive days of no access after which an object will be eligible to be + * transitioned to the corresponding tier. The minimum number of days specified for Archive Access tier + * must be at least 90 days and Deep Archive Access tier must be at least 180 days. The maximum can be up to + * 2 years (730 days).

+ * @public + */ + Days: number | undefined; + /** + *

S3 Intelligent-Tiering access tier. See Storage class for + * automatically optimizing frequently and infrequently accessed objects for a list of access + * tiers in the S3 Intelligent-Tiering storage class.

+ * @public + */ + AccessTier: IntelligentTieringAccessTier | undefined; +} +/** + *

Specifies the S3 Intelligent-Tiering configuration for an Amazon S3 bucket.

+ *

For information about the S3 Intelligent-Tiering storage class, see Storage class for + * automatically optimizing frequently and infrequently accessed objects.

+ * @public + */ +export interface IntelligentTieringConfiguration { + /** + *

The ID used to identify the S3 Intelligent-Tiering configuration.

+ * @public + */ + Id: string | undefined; + /** + *

Specifies a bucket filter. The configuration only includes objects that meet the filter's + * criteria.

+ * @public + */ + Filter?: IntelligentTieringFilter | undefined; + /** + *

Specifies the status of the configuration.

+ * @public + */ + Status: IntelligentTieringStatus | undefined; + /** + *

Specifies the S3 Intelligent-Tiering storage class tier of the configuration.

+ * @public + */ + Tierings: Tiering[] | undefined; +} +/** + * @public + */ +export interface GetBucketIntelligentTieringConfigurationOutput { + /** + *

Container for S3 Intelligent-Tiering configuration.

+ * @public + */ + IntelligentTieringConfiguration?: IntelligentTieringConfiguration | undefined; +} +/** + * @public + */ +export interface GetBucketIntelligentTieringConfigurationRequest { + /** + *

The name of the Amazon S3 bucket whose configuration you want to modify or retrieve.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID used to identify the S3 Intelligent-Tiering configuration.

+ * @public + */ + Id: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Specifies the use of SSE-KMS to encrypt delivered inventory reports.

+ * @public + */ +export interface SSEKMS { + /** + *

Specifies the ID of the Key Management Service (KMS) symmetric encryption customer managed key to use for encrypting + * inventory reports.

+ * @public + */ + KeyId: string | undefined; +} +/** + *

Specifies the use of SSE-S3 to encrypt delivered inventory reports.

+ * @public + */ +export interface SSES3 { +} +/** + *

Contains the type of server-side encryption used to encrypt the S3 Inventory results.

+ * @public + */ +export interface InventoryEncryption { + /** + *

Specifies the use of SSE-S3 to encrypt delivered inventory reports.

+ * @public + */ + SSES3?: SSES3 | undefined; + /** + *

Specifies the use of SSE-KMS to encrypt delivered inventory reports.

+ * @public + */ + SSEKMS?: SSEKMS | undefined; +} +/** + *

Contains the bucket name, file format, bucket owner (optional), and prefix (optional) where + * S3 Inventory results are published.

+ * @public + */ +export interface InventoryS3BucketDestination { + /** + *

The account ID that owns the destination S3 bucket. If no account ID is provided, the owner is not + * validated before exporting data.

+ * + *

Although this value is optional, we strongly recommend that you set it to help prevent problems + * if the destination bucket ownership changes.

+ *
+ * @public + */ + AccountId?: string | undefined; + /** + *

The Amazon Resource Name (ARN) of the bucket where inventory results will be published.

+ * @public + */ + Bucket: string | undefined; + /** + *

Specifies the output format of the inventory results.

+ * @public + */ + Format: InventoryFormat | undefined; + /** + *

The prefix that is prepended to all inventory results.

+ * @public + */ + Prefix?: string | undefined; + /** + *

Contains the type of server-side encryption used to encrypt the inventory results.

+ * @public + */ + Encryption?: InventoryEncryption | undefined; +} +/** + *

Specifies the S3 Inventory configuration for an Amazon S3 bucket.

+ * @public + */ +export interface InventoryDestination { + /** + *

Contains the bucket name, file format, bucket owner (optional), and prefix (optional) where + * inventory results are published.

+ * @public + */ + S3BucketDestination: InventoryS3BucketDestination | undefined; +} +/** + *

Specifies an S3 Inventory filter. The inventory only includes objects that meet the filter's + * criteria.

+ * @public + */ +export interface InventoryFilter { + /** + *

The prefix that an object must have to be included in the inventory results.

+ * @public + */ + Prefix: string | undefined; +} +/** + *

Specifies the schedule for generating S3 Inventory results.

+ * @public + */ +export interface InventorySchedule { + /** + *

Specifies how frequently inventory results are produced.

+ * @public + */ + Frequency: InventoryFrequency | undefined; +} +/** + *

Specifies the S3 Inventory configuration for an Amazon S3 bucket. For more information, see GET Bucket + * inventory in the Amazon S3 API Reference.

+ * @public + */ +export interface InventoryConfiguration { + /** + *

Contains information about where to publish the inventory results.

+ * @public + */ + Destination: InventoryDestination | undefined; + /** + *

Specifies whether the inventory is enabled or disabled. If set to True, an inventory + * list is generated. If set to False, no inventory list is generated.

+ * @public + */ + IsEnabled: boolean | undefined; + /** + *

Specifies an inventory filter. The inventory only includes objects that meet the filter's + * criteria.

+ * @public + */ + Filter?: InventoryFilter | undefined; + /** + *

The ID used to identify the inventory configuration.

+ * @public + */ + Id: string | undefined; + /** + *

Object versions to include in the inventory list. If set to All, the list includes all + * the object versions, which adds the version-related fields VersionId, + * IsLatest, and DeleteMarker to the list. If set to Current, the + * list does not contain these version-related fields.

+ * @public + */ + IncludedObjectVersions: InventoryIncludedObjectVersions | undefined; + /** + *

Contains the optional fields that are included in the inventory results.

+ * @public + */ + OptionalFields?: InventoryOptionalField[] | undefined; + /** + *

Specifies the schedule for generating inventory results.

+ * @public + */ + Schedule: InventorySchedule | undefined; +} +/** + * @public + */ +export interface GetBucketInventoryConfigurationOutput { + /** + *

Specifies the inventory configuration.

+ * @public + */ + InventoryConfiguration?: InventoryConfiguration | undefined; +} +/** + * @public + */ +export interface GetBucketInventoryConfigurationRequest { + /** + *

The name of the bucket containing the inventory configuration to retrieve.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID used to identify the inventory configuration.

+ * @public + */ + Id: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Container for the expiration for the lifecycle of the object.

+ *

For more information see, Managing your storage lifecycle in + * the Amazon S3 User Guide.

+ * @public + */ +export interface LifecycleExpiration { + /** + *

Indicates at what date the object is to be moved or deleted. The date value must conform to the ISO + * 8601 format. The time is always midnight UTC.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + Date?: Date | undefined; + /** + *

Indicates the lifetime, in days, of the objects that are subject to the rule. The value must be a + * non-zero positive integer.

+ * @public + */ + Days?: number | undefined; + /** + *

Indicates whether Amazon S3 will remove a delete marker with no noncurrent versions. If set to true, the + * delete marker will be expired; if set to false the policy takes no action. This cannot be specified with + * Days or Date in a Lifecycle Expiration Policy.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + ExpiredObjectDeleteMarker?: boolean | undefined; +} +/** + *

This is used in a Lifecycle Rule Filter to apply a logical AND to two or more predicates. The + * Lifecycle Rule will apply to any object matching all of the predicates configured inside the And + * operator.

+ * @public + */ +export interface LifecycleRuleAndOperator { + /** + *

Prefix identifying one or more objects to which the rule applies.

+ * @public + */ + Prefix?: string | undefined; + /** + *

All of these tags must exist in the object's tag set in order for the rule to apply.

+ * @public + */ + Tags?: Tag[] | undefined; + /** + *

Minimum object size to which the rule applies.

+ * @public + */ + ObjectSizeGreaterThan?: number | undefined; + /** + *

Maximum object size to which the rule applies.

+ * @public + */ + ObjectSizeLessThan?: number | undefined; +} +/** + *

The Filter is used to identify objects that a Lifecycle Rule applies to. A + * Filter can have exactly one of Prefix, Tag, + * ObjectSizeGreaterThan, ObjectSizeLessThan, or And specified. If + * the Filter element is left empty, the Lifecycle Rule applies to all objects in the + * bucket.

+ * @public + */ +export interface LifecycleRuleFilter { + /** + *

Prefix identifying one or more objects to which the rule applies.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * @public + */ + Prefix?: string | undefined; + /** + *

This tag must exist in the object's tag set in order for the rule to apply.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + Tag?: Tag | undefined; + /** + *

Minimum object size to which the rule applies.

+ * @public + */ + ObjectSizeGreaterThan?: number | undefined; + /** + *

Maximum object size to which the rule applies.

+ * @public + */ + ObjectSizeLessThan?: number | undefined; + /** + *

This is used in a Lifecycle Rule Filter to apply a logical AND to two or more predicates. The + * Lifecycle Rule will apply to any object matching all of the predicates configured inside the And + * operator.

+ * @public + */ + And?: LifecycleRuleAndOperator | undefined; +} +/** + *

Specifies when noncurrent object versions expire. Upon expiration, Amazon S3 permanently deletes the + * noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning + * enabled (or suspended) to request that Amazon S3 delete noncurrent object versions at a specific period in + * the object's lifetime.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ +export interface NoncurrentVersionExpiration { + /** + *

Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. + * The value must be a non-zero positive integer. For information about the noncurrent days calculations, + * see How Amazon S3 Calculates + * When an Object Became Noncurrent in the Amazon S3 User Guide.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + NoncurrentDays?: number | undefined; + /** + *

Specifies how many noncurrent versions Amazon S3 will retain. You can specify up to 100 noncurrent + * versions to retain. Amazon S3 will permanently delete any additional noncurrent versions beyond the specified + * number to retain. For more information about noncurrent versions, see Lifecycle configuration elements in + * the Amazon S3 User Guide.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + NewerNoncurrentVersions?: number | undefined; +} +/** + *

Container for the transition rule that describes when noncurrent objects transition to the + * STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, + * GLACIER_IR, GLACIER, or DEEP_ARCHIVE storage class. If your + * bucket is versioning-enabled (or versioning is suspended), you can set this action to request that Amazon S3 + * transition noncurrent object versions to the STANDARD_IA, ONEZONE_IA, + * INTELLIGENT_TIERING, GLACIER_IR, GLACIER, or + * DEEP_ARCHIVE storage class at a specific period in the object's lifetime.

+ * @public + */ +export interface NoncurrentVersionTransition { + /** + *

Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. + * For information about the noncurrent days calculations, see How Amazon S3 Calculates + * How Long an Object Has Been Noncurrent in the Amazon S3 User Guide.

+ * @public + */ + NoncurrentDays?: number | undefined; + /** + *

The class of storage used to store the object.

+ * @public + */ + StorageClass?: TransitionStorageClass | undefined; + /** + *

Specifies how many noncurrent versions Amazon S3 will retain in the same storage class before + * transitioning objects. You can specify up to 100 noncurrent versions to retain. Amazon S3 will transition any + * additional noncurrent versions beyond the specified number to retain. For more information about + * noncurrent versions, see Lifecycle configuration elements in + * the Amazon S3 User Guide.

+ * @public + */ + NewerNoncurrentVersions?: number | undefined; +} +/** + *

Specifies when an object transitions to a specified storage class. For more information about Amazon S3 + * lifecycle configuration rules, see Transitioning Objects Using + * Amazon S3 Lifecycle in the Amazon S3 User Guide.

+ * @public + */ +export interface Transition { + /** + *

Indicates when objects are transitioned to the specified storage class. The date value must be in + * ISO 8601 format. The time is always midnight UTC.

+ * @public + */ + Date?: Date | undefined; + /** + *

Indicates the number of days after creation when objects are transitioned to the specified storage + * class. If the specified storage class is INTELLIGENT_TIERING, GLACIER_IR, + * GLACIER, or DEEP_ARCHIVE, valid values are 0 or positive + * integers. If the specified storage class is STANDARD_IA or ONEZONE_IA, valid + * values are positive integers greater than 30. Be aware that some storage classes have a + * minimum storage duration and that you're charged for transitioning objects before their minimum storage + * duration. For more information, see Constraints and considerations for transitions in the Amazon S3 User + * Guide.

+ * @public + */ + Days?: number | undefined; + /** + *

The storage class to which you want the object to transition.

+ * @public + */ + StorageClass?: TransitionStorageClass | undefined; +} +/** + *

A lifecycle rule for individual objects in an Amazon S3 bucket.

+ *

For more information see, Managing your storage lifecycle in + * the Amazon S3 User Guide.

+ * @public + */ +export interface LifecycleRule { + /** + *

Specifies the expiration for the lifecycle of the object in the form of date, days and, whether the + * object has a delete marker.

+ * @public + */ + Expiration?: LifecycleExpiration | undefined; + /** + *

Unique identifier for the rule. The value cannot be longer than 255 characters.

+ * @public + */ + ID?: string | undefined; + /** + *

The general purpose bucket prefix that identifies one or more objects to which the rule applies. We recommend using Filter instead of Prefix for new PUTs. Previous configurations where a prefix is defined will continue to operate as before.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * + * @deprecated deprecated. + * @public + */ + Prefix?: string | undefined; + /** + *

The Filter is used to identify objects that a Lifecycle Rule applies to. A + * Filter must have exactly one of Prefix, Tag, + * ObjectSizeGreaterThan, ObjectSizeLessThan, or And specified. + * Filter is required if the LifecycleRule does not contain a + * Prefix element.

+ *

For more information about Tag filters, see Adding filters to Lifecycle rules + * in the Amazon S3 User Guide.

+ * + *

+ * Tag filters are not supported for directory buckets.

+ *
+ * @public + */ + Filter?: LifecycleRuleFilter | undefined; + /** + *

If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is not currently being + * applied.

+ * @public + */ + Status: ExpirationStatus | undefined; + /** + *

Specifies when an Amazon S3 object transitions to a specified storage class.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + Transitions?: Transition[] | undefined; + /** + *

Specifies the transition rule for the lifecycle rule that describes when noncurrent objects + * transition to a specific storage class. If your bucket is versioning-enabled (or versioning is + * suspended), you can set this action to request that Amazon S3 transition noncurrent object versions to a + * specific storage class at a set period in the object's lifetime.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + NoncurrentVersionTransitions?: NoncurrentVersionTransition[] | undefined; + /** + *

Specifies when noncurrent object versions expire. Upon expiration, Amazon S3 permanently deletes the + * noncurrent object versions. You set this lifecycle configuration action on a bucket that has versioning + * enabled (or suspended) to request that Amazon S3 delete noncurrent object versions at a specific period in + * the object's lifetime.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + NoncurrentVersionExpiration?: NoncurrentVersionExpiration | undefined; + /** + *

Specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will wait before + * permanently removing all parts of the upload. For more information, see Aborting + * Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration in the + * Amazon S3 User Guide.

+ * @public + */ + AbortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload | undefined; +} +/** + * @public + */ +export interface GetBucketLifecycleConfigurationOutput { + /** + *

Container for a lifecycle rule.

+ * @public + */ + Rules?: LifecycleRule[] | undefined; + /** + *

Indicates which default minimum object size behavior is applied to the lifecycle + * configuration.

+ * + *

This parameter applies to general purpose buckets only. It isn't supported for directory bucket + * lifecycle configurations.

+ *
+ *
    + *
  • + *

    + * all_storage_classes_128K - Objects smaller than 128 KB will not transition to + * any storage class by default.

    + *
  • + *
  • + *

    + * varies_by_storage_class - Objects smaller than 128 KB will transition to Glacier + * Flexible Retrieval or Glacier Deep Archive storage classes. By default, all other storage classes + * will prevent transitions smaller than 128 KB.

    + *
  • + *
+ *

To customize the minimum object size for any transition you can add a filter that specifies a custom + * ObjectSizeGreaterThan or ObjectSizeLessThan in the body of your transition + * rule. Custom filters always take precedence over the default transition behavior.

+ * @public + */ + TransitionDefaultMinimumObjectSize?: TransitionDefaultMinimumObjectSize | undefined; +} +/** + * @public + */ +export interface GetBucketLifecycleConfigurationRequest { + /** + *

The name of the bucket for which to get the lifecycle information.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetBucketLocationOutput { + /** + *

Specifies the Region where the bucket resides. For a list of all the Amazon S3 supported location + * constraints by Region, see Regions and Endpoints.

+ *

Buckets in Region us-east-1 have a LocationConstraint of null. Buckets + * with a LocationConstraint of EU reside in eu-west-1.

+ * @public + */ + LocationConstraint?: BucketLocationConstraint | undefined; +} +/** + * @public + */ +export interface GetBucketLocationRequest { + /** + *

The name of the bucket for which to get the location.

+ *

When you use this API operation with an access point, provide the alias of the access point in place of the bucket name.

+ *

When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Container for granting information.

+ *

Buckets that use the bucket owner enforced setting for Object Ownership don't support target grants. + * For more information, see Permissions server access log delivery in the Amazon S3 User Guide.

+ * @public + */ +export interface TargetGrant { + /** + *

Container for the person being granted permissions.

+ * @public + */ + Grantee?: Grantee | undefined; + /** + *

Logging permissions assigned to the grantee for the bucket.

+ * @public + */ + Permission?: BucketLogsPermission | undefined; +} +/** + *

Amazon S3 keys for log objects are partitioned in the following format:

+ *

+ * [DestinationPrefix][SourceAccountId]/[SourceRegion]/[SourceBucket]/[YYYY]/[MM]/[DD]/[YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString] + *

+ *

PartitionedPrefix defaults to EventTime delivery when server access logs are delivered.

+ * @public + */ +export interface PartitionedPrefix { + /** + *

Specifies the partition date source for the partitioned prefix. PartitionDateSource can + * be EventTime or DeliveryTime.

+ *

For DeliveryTime, the time in the log file names corresponds to the delivery time for + * the log files.

+ *

For EventTime, The logs delivered are for a specific day only. The year, month, and + * day correspond to the day on which the event occurred, and the hour, minutes and seconds are set to 00 + * in the key.

+ * @public + */ + PartitionDateSource?: PartitionDateSource | undefined; +} +/** + *

To use simple format for S3 keys for log objects, set SimplePrefix to an empty object.

+ *

+ * [DestinationPrefix][YYYY]-[MM]-[DD]-[hh]-[mm]-[ss]-[UniqueString] + *

+ * @public + */ +export interface SimplePrefix { +} +/** + *

Amazon S3 key format for log objects. Only one format, PartitionedPrefix or SimplePrefix, is + * allowed.

+ * @public + */ +export interface TargetObjectKeyFormat { + /** + *

To use the simple format for S3 keys for log objects. To specify SimplePrefix format, set + * SimplePrefix to \{\}.

+ * @public + */ + SimplePrefix?: SimplePrefix | undefined; + /** + *

Partitioned S3 key for log objects.

+ * @public + */ + PartitionedPrefix?: PartitionedPrefix | undefined; +} +/** + *

Describes where logs are stored and the prefix that Amazon S3 assigns to all log object keys for a + * bucket. For more information, see PUT Bucket logging in the + * Amazon S3 API Reference.

+ * @public + */ +export interface LoggingEnabled { + /** + *

Specifies the bucket where you want Amazon S3 to store server access logs. You can have your logs + * delivered to any bucket that you own, including the same bucket that is being logged. You can also + * configure multiple buckets to deliver their logs to the same target bucket. In this case, you should + * choose a different TargetPrefix for each source bucket so that the delivered log files can + * be distinguished by key.

+ * @public + */ + TargetBucket: string | undefined; + /** + *

Container for granting information.

+ *

Buckets that use the bucket owner enforced setting for Object Ownership don't support target grants. + * For more information, see Permissions for server access log delivery in the + * Amazon S3 User Guide.

+ * @public + */ + TargetGrants?: TargetGrant[] | undefined; + /** + *

A prefix for all log object keys. If you store log files from multiple Amazon S3 buckets in a single + * bucket, you can use a prefix to distinguish which log files came from which bucket.

+ * @public + */ + TargetPrefix: string | undefined; + /** + *

Amazon S3 key format for log objects.

+ * @public + */ + TargetObjectKeyFormat?: TargetObjectKeyFormat | undefined; +} +/** + * @public + */ +export interface GetBucketLoggingOutput { + /** + *

Describes where logs are stored and the prefix that Amazon S3 assigns to all log object keys for a + * bucket. For more information, see PUT Bucket logging in the + * Amazon S3 API Reference.

+ * @public + */ + LoggingEnabled?: LoggingEnabled | undefined; +} +/** + * @public + */ +export interface GetBucketLoggingRequest { + /** + *

The bucket name for which to get the logging information.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

+ * The destination information for the S3 Metadata configuration. + *

+ * @public + */ +export interface DestinationResult { + /** + *

+ * The type of the table bucket where the metadata configuration is stored. The aws + * value indicates an Amazon Web Services managed table bucket, and the customer value indicates a + * customer-managed table bucket. V2 metadata configurations are stored in Amazon Web Services managed table + * buckets, and V1 metadata configurations are stored in customer-managed table buckets. + *

+ * @public + */ + TableBucketType?: S3TablesBucketType | undefined; + /** + *

+ * The Amazon Resource Name (ARN) of the table bucket where the metadata configuration is stored. + *

+ * @public + */ + TableBucketArn?: string | undefined; + /** + *

+ * The namespace in the table bucket where the metadata tables for a metadata configuration are + * stored. + *

+ * @public + */ + TableNamespace?: string | undefined; +} +/** + *

If an S3 Metadata V1 CreateBucketMetadataTableConfiguration or V2 + * CreateBucketMetadataConfiguration request succeeds, but S3 Metadata was + * unable to create the table, this structure contains the error code and error message.

+ * + *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ * @public + */ +export interface ErrorDetails { + /** + *

If the V1 CreateBucketMetadataTableConfiguration request succeeds, but S3 Metadata was + * unable to create the table, this structure contains the error code. The possible error codes and error + * messages are as follows:

+ *
    + *
  • + *

    + * AccessDeniedCreatingResources - You don't have sufficient permissions to create the + * required resources. Make sure that you have s3tables:CreateNamespace, + * s3tables:CreateTable, s3tables:GetTable and + * s3tables:PutTablePolicy permissions, and then try again. To create a new metadata + * table, you must delete the metadata configuration for this bucket, and then create a new metadata + * configuration.

    + *
  • + *
  • + *

    + * AccessDeniedWritingToTable - Unable to write to the metadata table because of + * missing resource permissions. To fix the resource policy, Amazon S3 needs to create a new metadata + * table. To create a new metadata table, you must delete the metadata configuration for this bucket, + * and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * DestinationTableNotFound - The destination table doesn't exist. To create a new + * metadata table, you must delete the metadata configuration for this bucket, and then create a new + * metadata configuration.

    + *
  • + *
  • + *

    + * ServerInternalError - An internal error has occurred. To create a new metadata + * table, you must delete the metadata configuration for this bucket, and then create a new metadata + * configuration.

    + *
  • + *
  • + *

    + * TableAlreadyExists - The table that you specified already exists in the table + * bucket's namespace. Specify a different table name. To create a new metadata table, you must delete + * the metadata configuration for this bucket, and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * TableBucketNotFound - The table bucket that you specified doesn't exist in this + * Amazon Web Services Region and account. Create or choose a different table bucket. To create a new metadata table, + * you must delete the metadata configuration for this bucket, and then create a new metadata + * configuration.

    + *
  • + *
+ *

If the V2 CreateBucketMetadataConfiguration request succeeds, but S3 Metadata was + * unable to create the table, this structure contains the error code. The possible error codes and error + * messages are as follows:

+ *
    + *
  • + *

    + * AccessDeniedCreatingResources - You don't have sufficient permissions to create + * the required resources. Make sure that you have s3tables:CreateTableBucket, + * s3tables:CreateNamespace, s3tables:CreateTable, + * s3tables:GetTable, s3tables:PutTablePolicy, + * kms:DescribeKey, and s3tables:PutTableEncryption permissions. + * Additionally, ensure that the KMS key used to encrypt the table still exists, is active and + * has a resource policy granting access to the S3 service principals + * 'maintenance.s3tables.amazonaws.com' and 'metadata.s3.amazonaws.com'. + * To create a new metadata table, you must delete the metadata configuration for this bucket, and + * then create a new metadata configuration.

    + *
  • + *
  • + *

    + * AccessDeniedWritingToTable - Unable to write to the metadata table because of + * missing resource permissions. To fix the resource policy, Amazon S3 needs to create a new metadata + * table. To create a new metadata table, you must delete the metadata configuration for this bucket, + * and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * DestinationTableNotFound - The destination table doesn't exist. To create a new + * metadata table, you must delete the metadata configuration for this bucket, and then create a new + * metadata configuration.

    + *
  • + *
  • + *

    + * ServerInternalError - An internal error has occurred. To create a new metadata + * table, you must delete the metadata configuration for this bucket, and then create a new metadata + * configuration.

    + *
  • + *
  • + *

    + * JournalTableAlreadyExists - A journal table already exists in the Amazon Web Services managed table bucket's + * namespace. Delete the journal table, and then try again. To create a new metadata table, you must delete + * the metadata configuration for this bucket, and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * InventoryTableAlreadyExists - An inventory table already exists in the Amazon Web Services managed table + * bucket's namespace. Delete the inventory table, and then try again. To create a new metadata table, you must delete + * the metadata configuration for this bucket, and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * JournalTableNotAvailable - The journal table that the inventory table relies on + * has a FAILED status. An inventory table requires a journal table with an + * ACTIVE status. To create a new journal or inventory table, you must delete the metadata + * configuration for this bucket, along with any journal or inventory tables, and then create a new + * metadata configuration.

    + *
  • + *
  • + *

    + * NoSuchBucket - The specified general purpose bucket does not exist.

    + *
  • + *
+ * @public + */ + ErrorCode?: string | undefined; + /** + *

If the V1 CreateBucketMetadataTableConfiguration request succeeds, but S3 Metadata was + * unable to create the table, this structure contains the error message. The possible error codes and + * error messages are as follows:

+ *
    + *
  • + *

    + * AccessDeniedCreatingResources - You don't have sufficient permissions to create the + * required resources. Make sure that you have s3tables:CreateNamespace, + * s3tables:CreateTable, s3tables:GetTable and + * s3tables:PutTablePolicy permissions, and then try again. To create a new metadata + * table, you must delete the metadata configuration for this bucket, and then create a new metadata + * configuration.

    + *
  • + *
  • + *

    + * AccessDeniedWritingToTable - Unable to write to the metadata table because of + * missing resource permissions. To fix the resource policy, Amazon S3 needs to create a new metadata + * table. To create a new metadata table, you must delete the metadata configuration for this bucket, + * and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * DestinationTableNotFound - The destination table doesn't exist. To create a new + * metadata table, you must delete the metadata configuration for this bucket, and then create a new + * metadata configuration.

    + *
  • + *
  • + *

    + * ServerInternalError - An internal error has occurred. To create a new metadata + * table, you must delete the metadata configuration for this bucket, and then create a new metadata + * configuration.

    + *
  • + *
  • + *

    + * TableAlreadyExists - The table that you specified already exists in the table + * bucket's namespace. Specify a different table name. To create a new metadata table, you must delete + * the metadata configuration for this bucket, and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * TableBucketNotFound - The table bucket that you specified doesn't exist in this + * Amazon Web Services Region and account. Create or choose a different table bucket. To create a new metadata table, + * you must delete the metadata configuration for this bucket, and then create a new metadata + * configuration.

    + *
  • + *
+ *

If the V2 CreateBucketMetadataConfiguration request succeeds, but S3 Metadata was + * unable to create the table, this structure contains the error code. The possible error codes and error + * messages are as follows:

+ *
    + *
  • + *

    + * AccessDeniedCreatingResources - You don't have sufficient permissions to create + * the required resources. Make sure that you have s3tables:CreateTableBucket, + * s3tables:CreateNamespace, s3tables:CreateTable, + * s3tables:GetTable, s3tables:PutTablePolicy, + * kms:DescribeKey, and s3tables:PutTableEncryption permissions. + * Additionally, ensure that the KMS key used to encrypt the table still exists, is active and + * has a resource policy granting access to the S3 service principals + * 'maintenance.s3tables.amazonaws.com' and 'metadata.s3.amazonaws.com'. + * To create a new metadata table, you must delete the metadata configuration for this bucket, and + * then create a new metadata configuration.

    + *
  • + *
  • + *

    + * AccessDeniedWritingToTable - Unable to write to the metadata table because of + * missing resource permissions. To fix the resource policy, Amazon S3 needs to create a new metadata + * table. To create a new metadata table, you must delete the metadata configuration for this bucket, + * and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * DestinationTableNotFound - The destination table doesn't exist. To create a new + * metadata table, you must delete the metadata configuration for this bucket, and then create a new + * metadata configuration.

    + *
  • + *
  • + *

    + * ServerInternalError - An internal error has occurred. To create a new metadata + * table, you must delete the metadata configuration for this bucket, and then create a new metadata + * configuration.

    + *
  • + *
  • + *

    + * JournalTableAlreadyExists - A journal table already exists in the Amazon Web Services managed table bucket's + * namespace. Delete the journal table, and then try again. To create a new metadata table, you must delete + * the metadata configuration for this bucket, and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * InventoryTableAlreadyExists - An inventory table already exists in the Amazon Web Services managed table + * bucket's namespace. Delete the inventory table, and then try again. To create a new metadata table, you must delete + * the metadata configuration for this bucket, and then create a new metadata configuration.

    + *
  • + *
  • + *

    + * JournalTableNotAvailable - The journal table that the inventory table relies on + * has a FAILED status. An inventory table requires a journal table with an + * ACTIVE status. To create a new journal or inventory table, you must delete the metadata + * configuration for this bucket, along with any journal or inventory tables, and then create a new + * metadata configuration.

    + *
  • + *
  • + *

    + * NoSuchBucket - The specified general purpose bucket does not exist.

    + *
  • + *
+ * @public + */ + ErrorMessage?: string | undefined; +} +/** + *

+ * The inventory table configuration for an S3 Metadata configuration. + *

+ * @public + */ +export interface InventoryTableConfigurationResult { + /** + *

+ * The configuration state of the inventory table, indicating whether the inventory table is enabled + * or disabled. + *

+ * @public + */ + ConfigurationState: InventoryConfigurationState | undefined; + /** + *

The status of the inventory table. The status values are:

+ *
    + *
  • + *

    + * CREATING - The inventory table is in the process of being created in the specified + * Amazon Web Services managed table bucket.

    + *
  • + *
  • + *

    + * BACKFILLING - The inventory table is in the process of being backfilled. When + * you enable the inventory table for your metadata configuration, the table goes through a + * process known as backfilling, during which Amazon S3 scans your general purpose bucket to retrieve + * the initial metadata for all objects in the bucket. Depending on the number of objects in your + * bucket, this process can take several hours. When the backfilling process is finished, the + * status of your inventory table changes from BACKFILLING to ACTIVE. + * After backfilling is completed, updates to your objects are reflected in the inventory table + * within one hour.

    + *
  • + *
  • + *

    + * ACTIVE - The inventory table has been created successfully, and records are being + * delivered to the table.

    + *
  • + *
  • + *

    + * FAILED - Amazon S3 is unable to create the inventory table, or Amazon S3 is unable to deliver + * records.

    + *
  • + *
+ * @public + */ + TableStatus?: string | undefined; + /** + *

If an S3 Metadata V1 CreateBucketMetadataTableConfiguration or V2 + * CreateBucketMetadataConfiguration request succeeds, but S3 Metadata was + * unable to create the table, this structure contains the error code and error message.

+ * + *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ * @public + */ + Error?: ErrorDetails | undefined; + /** + *

+ * The name of the inventory table. + *

+ * @public + */ + TableName?: string | undefined; + /** + *

+ * The Amazon Resource Name (ARN) for the inventory table. + *

+ * @public + */ + TableArn?: string | undefined; +} +/** + *

+ * The journal table configuration for the S3 Metadata configuration. + *

+ * @public + */ +export interface JournalTableConfigurationResult { + /** + *

The status of the journal table. The status values are:

+ *
    + *
  • + *

    + * CREATING - The journal table is in the process of being created in the specified + * table bucket.

    + *
  • + *
  • + *

    + * ACTIVE - The journal table has been created successfully, and records are being + * delivered to the table.

    + *
  • + *
  • + *

    + * FAILED - Amazon S3 is unable to create the journal table, or Amazon S3 is unable to deliver + * records.

    + *
  • + *
+ * @public + */ + TableStatus: string | undefined; + /** + *

If an S3 Metadata V1 CreateBucketMetadataTableConfiguration or V2 + * CreateBucketMetadataConfiguration request succeeds, but S3 Metadata was + * unable to create the table, this structure contains the error code and error message.

+ * + *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ * @public + */ + Error?: ErrorDetails | undefined; + /** + *

+ * The name of the journal table. + *

+ * @public + */ + TableName: string | undefined; + /** + *

+ * The Amazon Resource Name (ARN) for the journal table. + *

+ * @public + */ + TableArn?: string | undefined; + /** + *

+ * The journal table record expiration settings for the journal table. + *

+ * @public + */ + RecordExpiration: RecordExpiration | undefined; +} +/** + *

+ * The S3 Metadata configuration for a general purpose bucket. + *

+ * @public + */ +export interface MetadataConfigurationResult { + /** + *

+ * The destination settings for a metadata configuration. + *

+ * @public + */ + DestinationResult: DestinationResult | undefined; + /** + *

+ * The journal table configuration for a metadata configuration. + *

+ * @public + */ + JournalTableConfigurationResult?: JournalTableConfigurationResult | undefined; + /** + *

+ * The inventory table configuration for a metadata configuration. + *

+ * @public + */ + InventoryTableConfigurationResult?: InventoryTableConfigurationResult | undefined; +} +/** + *

+ * The S3 Metadata configuration for a general purpose bucket. + *

+ * @public + */ +export interface GetBucketMetadataConfigurationResult { + /** + *

+ * The metadata configuration for a general purpose bucket. + *

+ * @public + */ + MetadataConfigurationResult: MetadataConfigurationResult | undefined; +} +/** + * @public + */ +export interface GetBucketMetadataConfigurationOutput { + /** + *

+ * The metadata configuration for the general purpose bucket. + *

+ * @public + */ + GetBucketMetadataConfigurationResult?: GetBucketMetadataConfigurationResult | undefined; +} +/** + * @public + */ +export interface GetBucketMetadataConfigurationRequest { + /** + *

+ * The general purpose bucket that corresponds to the metadata configuration that you want to + * retrieve. + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

+ * The expected owner of the general purpose bucket that you want to retrieve the metadata table + * configuration for. + *

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

The destination information for a V1 S3 Metadata configuration. The destination table bucket must + * be in the same Region and Amazon Web Services account as the general purpose bucket. The specified metadata table name + * must be unique within the aws_s3_metadata namespace in the destination table bucket. + *

+ * + *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ * @public + */ +export interface S3TablesDestinationResult { + /** + *

The Amazon Resource Name (ARN) for the table bucket that's specified as the destination in the + * metadata table configuration. The destination table bucket must be in the same Region and Amazon Web Services account + * as the general purpose bucket.

+ * @public + */ + TableBucketArn: string | undefined; + /** + *

The name for the metadata table in your metadata table configuration. The specified metadata table + * name must be unique within the aws_s3_metadata namespace in the destination table bucket. + *

+ * @public + */ + TableName: string | undefined; + /** + *

The Amazon Resource Name (ARN) for the metadata table in the metadata table configuration. The + * specified metadata table name must be unique within the aws_s3_metadata namespace in the + * destination table bucket.

+ * @public + */ + TableArn: string | undefined; + /** + *

The table bucket namespace for the metadata table in your metadata table configuration. This value + * is always aws_s3_metadata.

+ * @public + */ + TableNamespace: string | undefined; +} +/** + *

The V1 S3 Metadata configuration for a general purpose bucket. The destination table bucket must be + * in the same Region and Amazon Web Services account as the general purpose bucket. The specified metadata table name + * must be unique within the aws_s3_metadata namespace in the destination table bucket. + *

+ * + *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ * @public + */ +export interface MetadataTableConfigurationResult { + /** + *

The destination information for the metadata table configuration. The destination table bucket must + * be in the same Region and Amazon Web Services account as the general purpose bucket. The specified metadata table name + * must be unique within the aws_s3_metadata namespace in the destination table bucket. + *

+ * @public + */ + S3TablesDestinationResult: S3TablesDestinationResult | undefined; +} +/** + *

The V1 S3 Metadata configuration for a general purpose bucket.

+ * + *

If you created your S3 Metadata configuration before July 15, 2025, we recommend that you delete + * and re-create your configuration by using CreateBucketMetadataConfiguration so that you can expire journal table records and create + * a live inventory table.

+ *
+ * @public + */ +export interface GetBucketMetadataTableConfigurationResult { + /** + *

The V1 S3 Metadata configuration for a general purpose bucket.

+ * @public + */ + MetadataTableConfigurationResult: MetadataTableConfigurationResult | undefined; + /** + *

The status of the metadata table. The status values are:

+ *
    + *
  • + *

    + * CREATING - The metadata table is in the process of being created in the specified + * table bucket.

    + *
  • + *
  • + *

    + * ACTIVE - The metadata table has been created successfully, and records are being + * delivered to the table.

    + *
  • + *
  • + *

    + * FAILED - Amazon S3 is unable to create the metadata table, or Amazon S3 is unable to deliver + * records. See ErrorDetails for details.

    + *
  • + *
+ * @public + */ + Status: string | undefined; + /** + *

If the CreateBucketMetadataTableConfiguration request succeeds, but S3 Metadata was + * unable to create the table, this structure contains the error code and error message.

+ * @public + */ + Error?: ErrorDetails | undefined; +} +/** + * @public + */ +export interface GetBucketMetadataTableConfigurationOutput { + /** + *

The metadata table configuration for the general purpose bucket.

+ * @public + */ + GetBucketMetadataTableConfigurationResult?: GetBucketMetadataTableConfigurationResult | undefined; +} +/** + * @public + */ +export interface GetBucketMetadataTableConfigurationRequest { + /** + *

The general purpose bucket that corresponds to the metadata table configuration that you want to + * retrieve.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The expected owner of the general purpose bucket that you want to retrieve the metadata table + * configuration for.

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

A conjunction (logical AND) of predicates, which is used in evaluating a metrics filter. The + * operator must have at least two predicates, and an object must match all of the predicates in order for + * the filter to apply.

+ * @public + */ +export interface MetricsAndOperator { + /** + *

The prefix used when evaluating an AND predicate.

+ * @public + */ + Prefix?: string | undefined; + /** + *

The list of tags used when evaluating an AND predicate.

+ * + *

+ * Tag filters are not supported for directory buckets.

+ *
+ * @public + */ + Tags?: Tag[] | undefined; + /** + *

The access point ARN used when evaluating an AND predicate.

+ * @public + */ + AccessPointArn?: string | undefined; +} +/** + *

Specifies a metrics configuration filter. The metrics configuration only includes objects that meet + * the filter's criteria. A filter must be a prefix, an object tag, an access point ARN, or a conjunction + * (MetricsAndOperator). For more information, see PutBucketMetricsConfiguration.

+ * @public + */ +export type MetricsFilter = MetricsFilter.AccessPointArnMember | MetricsFilter.AndMember | MetricsFilter.PrefixMember | MetricsFilter.TagMember | MetricsFilter.$UnknownMember; +/** + * @public + */ +export declare namespace MetricsFilter { + /** + *

The prefix used when evaluating a metrics filter.

+ * @public + */ + interface PrefixMember { + Prefix: string; + Tag?: never; + AccessPointArn?: never; + And?: never; + $unknown?: never; + } + /** + *

The tag used when evaluating a metrics filter.

+ * + *

+ * Tag filters are not supported for directory buckets.

+ *
+ * @public + */ + interface TagMember { + Prefix?: never; + Tag: Tag; + AccessPointArn?: never; + And?: never; + $unknown?: never; + } + /** + *

The access point ARN used when evaluating a metrics filter.

+ * @public + */ + interface AccessPointArnMember { + Prefix?: never; + Tag?: never; + AccessPointArn: string; + And?: never; + $unknown?: never; + } + /** + *

A conjunction (logical AND) of predicates, which is used in evaluating a metrics filter. The + * operator must have at least two predicates, and an object must match all of the predicates in order for + * the filter to apply.

+ * @public + */ + interface AndMember { + Prefix?: never; + Tag?: never; + AccessPointArn?: never; + And: MetricsAndOperator; + $unknown?: never; + } + /** + * @public + */ + interface $UnknownMember { + Prefix?: never; + Tag?: never; + AccessPointArn?: never; + And?: never; + $unknown: [string, any]; + } + /** + * @deprecated unused in schema-serde mode. + * + */ + interface Visitor { + Prefix: (value: string) => T; + Tag: (value: Tag) => T; + AccessPointArn: (value: string) => T; + And: (value: MetricsAndOperator) => T; + _: (name: string, value: any) => T; + } +} +/** + *

Specifies a metrics configuration for the CloudWatch request metrics (specified by the metrics + * configuration ID) from an Amazon S3 bucket. If you're updating an existing metrics configuration, note that + * this is a full replacement of the existing metrics configuration. If you don't include the elements you + * want to keep, they are erased. For more information, see PutBucketMetricsConfiguration.

+ * @public + */ +export interface MetricsConfiguration { + /** + *

The ID used to identify the metrics configuration. The ID has a 64 character limit and can only + * contain letters, numbers, periods, dashes, and underscores.

+ * @public + */ + Id: string | undefined; + /** + *

Specifies a metrics configuration filter. The metrics configuration will only include objects that + * meet the filter's criteria. A filter must be a prefix, an object tag, an access point ARN, or a + * conjunction (MetricsAndOperator).

+ * + *

Metrics configurations for directory buckets do not support tag filters.

+ *
+ * @public + */ + Filter?: MetricsFilter | undefined; +} +/** + * @public + */ +export interface GetBucketMetricsConfigurationOutput { + /** + *

Specifies the metrics configuration.

+ * @public + */ + MetricsConfiguration?: MetricsConfiguration | undefined; +} +/** + * @public + */ +export interface GetBucketMetricsConfigurationRequest { + /** + *

The name of the bucket containing the metrics configuration to retrieve.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID used to identify the metrics configuration. The ID has a 64 character limit and can only + * contain letters, numbers, periods, dashes, and underscores.

+ * @public + */ + Id: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetBucketNotificationConfigurationRequest { + /** + *

The name of the bucket for which to get the notification configuration.

+ *

When you use this API operation with an access point, provide the alias of the access point in place of the bucket name.

+ *

When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

A container for specifying the configuration for Amazon EventBridge.

+ * @public + */ +export interface EventBridgeConfiguration { +} +/** + *

Specifies the Amazon S3 object key name to filter on. An object key name is the name assigned to an + * object in your Amazon S3 bucket. You specify whether to filter on the suffix or prefix of the object key + * name. A prefix is a specific string of characters at the beginning of an object key name, which you can + * use to organize objects. For example, you can start the key names of related objects with a prefix, such + * as 2023- or engineering/. Then, you can use FilterRule to find + * objects in a bucket with key names that have the same prefix. A suffix is similar to a prefix, but it is + * at the end of the object key name instead of at the beginning.

+ * @public + */ +export interface FilterRule { + /** + *

The object key name prefix or suffix identifying one or more objects to which the filtering rule + * applies. The maximum length is 1,024 characters. Overlapping prefixes and suffixes are not supported. + * For more information, see Configuring Event Notifications in the Amazon S3 User Guide.

+ * @public + */ + Name?: FilterRuleName | undefined; + /** + *

The value that the filter searches for in object key names.

+ * @public + */ + Value?: string | undefined; +} +/** + *

A container for object key name prefix and suffix filtering rules.

+ * @public + */ +export interface S3KeyFilter { + /** + *

A list of containers for the key-value pair that defines the criteria for the filter rule.

+ * @public + */ + FilterRules?: FilterRule[] | undefined; +} +/** + *

Specifies object key name filtering rules. For information about key name filtering, see Configuring + * event notifications using object key name filtering in the + * Amazon S3 User Guide.

+ * @public + */ +export interface NotificationConfigurationFilter { + /** + *

A container for object key name prefix and suffix filtering rules.

+ * @public + */ + Key?: S3KeyFilter | undefined; +} +/** + *

A container for specifying the configuration for Lambda notifications.

+ * @public + */ +export interface LambdaFunctionConfiguration { + /** + *

An optional unique identifier for configurations in a notification configuration. If you don't + * provide one, Amazon S3 will assign an ID.

+ * @public + */ + Id?: string | undefined; + /** + *

The Amazon Resource Name (ARN) of the Lambda function that Amazon S3 invokes when the specified event + * type occurs.

+ * @public + */ + LambdaFunctionArn: string | undefined; + /** + *

The Amazon S3 bucket event for which to invoke the Lambda function. For more information, see Supported Event Types in + * the Amazon S3 User Guide.

+ * @public + */ + Events: Event[] | undefined; + /** + *

Specifies object key name filtering rules. For information about key name filtering, see Configuring + * event notifications using object key name filtering in the + * Amazon S3 User Guide.

+ * @public + */ + Filter?: NotificationConfigurationFilter | undefined; +} +/** + *

Specifies the configuration for publishing messages to an Amazon Simple Queue Service (Amazon SQS) + * queue when Amazon S3 detects specified events.

+ * @public + */ +export interface QueueConfiguration { + /** + *

An optional unique identifier for configurations in a notification configuration. If you don't + * provide one, Amazon S3 will assign an ID.

+ * @public + */ + Id?: string | undefined; + /** + *

The Amazon Resource Name (ARN) of the Amazon SQS queue to which Amazon S3 publishes a message when it + * detects events of the specified type.

+ * @public + */ + QueueArn: string | undefined; + /** + *

A collection of bucket events for which to send notifications

+ * @public + */ + Events: Event[] | undefined; + /** + *

Specifies object key name filtering rules. For information about key name filtering, see Configuring + * event notifications using object key name filtering in the + * Amazon S3 User Guide.

+ * @public + */ + Filter?: NotificationConfigurationFilter | undefined; +} +/** + *

A container for specifying the configuration for publication of messages to an Amazon Simple + * Notification Service (Amazon SNS) topic when Amazon S3 detects specified events.

+ * @public + */ +export interface TopicConfiguration { + /** + *

An optional unique identifier for configurations in a notification configuration. If you don't + * provide one, Amazon S3 will assign an ID.

+ * @public + */ + Id?: string | undefined; + /** + *

The Amazon Resource Name (ARN) of the Amazon SNS topic to which Amazon S3 publishes a message when it + * detects events of the specified type.

+ * @public + */ + TopicArn: string | undefined; + /** + *

The Amazon S3 bucket event about which to send notifications. For more information, see Supported Event Types in + * the Amazon S3 User Guide.

+ * @public + */ + Events: Event[] | undefined; + /** + *

Specifies object key name filtering rules. For information about key name filtering, see Configuring + * event notifications using object key name filtering in the + * Amazon S3 User Guide.

+ * @public + */ + Filter?: NotificationConfigurationFilter | undefined; +} +/** + *

A container for specifying the notification configuration of the bucket. If this element is empty, + * notifications are turned off for the bucket.

+ * @public + */ +export interface NotificationConfiguration { + /** + *

The topic to which notifications are sent and the events for which notifications are + * generated.

+ * @public + */ + TopicConfigurations?: TopicConfiguration[] | undefined; + /** + *

The Amazon Simple Queue Service queues to publish messages to and the events for which to publish + * messages.

+ * @public + */ + QueueConfigurations?: QueueConfiguration[] | undefined; + /** + *

Describes the Lambda functions to invoke and the events for which to invoke them.

+ * @public + */ + LambdaFunctionConfigurations?: LambdaFunctionConfiguration[] | undefined; + /** + *

Enables delivery of events to Amazon EventBridge.

+ * @public + */ + EventBridgeConfiguration?: EventBridgeConfiguration | undefined; +} +/** + *

The container element for an ownership control rule.

+ * @public + */ +export interface OwnershipControlsRule { + /** + *

The container element for object ownership for a bucket's ownership controls.

+ *

+ * BucketOwnerPreferred - Objects uploaded to the bucket change ownership to the bucket + * owner if the objects are uploaded with the bucket-owner-full-control canned ACL.

+ *

+ * ObjectWriter - The uploading account will own the object if the object is uploaded with + * the bucket-owner-full-control canned ACL.

+ *

+ * BucketOwnerEnforced - Access control lists (ACLs) are disabled and no longer affect + * permissions. The bucket owner automatically owns and has full control over every object in the bucket. + * The bucket only accepts PUT requests that don't specify an ACL or specify bucket owner full control ACLs + * (such as the predefined bucket-owner-full-control canned ACL or a custom ACL in XML format + * that grants the same permissions).

+ *

By default, ObjectOwnership is set to BucketOwnerEnforced and ACLs are + * disabled. We recommend keeping ACLs disabled, except in uncommon use cases where you must control access + * for each object individually. For more information about S3 Object Ownership, see Controlling + * ownership of objects and disabling ACLs for your bucket in the + * Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets. Directory buckets use the bucket owner enforced setting for S3 Object Ownership.

+ *
+ * @public + */ + ObjectOwnership: ObjectOwnership | undefined; +} +/** + *

The container element for a bucket's ownership controls.

+ * @public + */ +export interface OwnershipControls { + /** + *

The container element for an ownership control rule.

+ * @public + */ + Rules: OwnershipControlsRule[] | undefined; +} +/** + * @public + */ +export interface GetBucketOwnershipControlsOutput { + /** + *

The OwnershipControls (BucketOwnerEnforced, BucketOwnerPreferred, or ObjectWriter) + * currently in effect for this Amazon S3 bucket.

+ * @public + */ + OwnershipControls?: OwnershipControls | undefined; +} +/** + * @public + */ +export interface GetBucketOwnershipControlsRequest { + /** + *

The name of the Amazon S3 bucket whose OwnershipControls you want to retrieve.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetBucketPolicyOutput { + /** + *

The bucket policy as a JSON document.

+ * @public + */ + Policy?: string | undefined; +} +/** + * @public + */ +export interface GetBucketPolicyRequest { + /** + *

The bucket name to get the bucket policy for.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

+ * Access points - When you use this API operation with an access point, provide the alias of the access point in place of the bucket name.

+ *

+ * Object Lambda access points - When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

The container element for a bucket's policy status.

+ * @public + */ +export interface PolicyStatus { + /** + *

The policy status for this bucket. TRUE indicates that this bucket is public. + * FALSE indicates that the bucket is not public.

+ * @public + */ + IsPublic?: boolean | undefined; +} +/** + * @public + */ +export interface GetBucketPolicyStatusOutput { + /** + *

The policy status for the specified bucket.

+ * @public + */ + PolicyStatus?: PolicyStatus | undefined; +} +/** + * @public + */ +export interface GetBucketPolicyStatusRequest { + /** + *

The name of the Amazon S3 bucket whose policy status you want to retrieve.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Specifies whether Amazon S3 replicates delete markers. If you specify a Filter in your + * replication configuration, you must also include a DeleteMarkerReplication element. If your + * Filter includes a Tag element, the DeleteMarkerReplication + * Status must be set to Disabled, because Amazon S3 does not support replicating delete markers + * for tag-based rules. For an example configuration, see Basic Rule + * Configuration.

+ *

For more information about delete marker replication, see Basic Rule Configuration.

+ * + *

If you are using an earlier version of the replication configuration, Amazon S3 handles replication of + * delete markers differently. For more information, see Backward Compatibility.

+ *
+ * @public + */ +export interface DeleteMarkerReplication { + /** + *

Indicates whether to replicate delete markers.

+ * + *

Indicates whether to replicate delete markers.

+ *
+ * @public + */ + Status?: DeleteMarkerReplicationStatus | undefined; +} +/** + *

Specifies encryption-related information for an Amazon S3 bucket that is a destination for replicated + * objects.

+ * + *

If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key + * ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. + * This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and + * not the bucket owner.

+ *
+ * @public + */ +export interface EncryptionConfiguration { + /** + *

Specifies the ID (Key ARN or Alias ARN) of the customer managed Amazon Web Services KMS key stored in Amazon Web Services Key + * Management Service (KMS) for the destination bucket. Amazon S3 uses this key to encrypt replica objects. Amazon S3 + * only supports symmetric encryption KMS keys. For more information, see Asymmetric keys in Amazon Web Services KMS in the + * Amazon Web Services Key Management Service Developer Guide.

+ * @public + */ + ReplicaKmsKeyID?: string | undefined; +} +/** + *

A container specifying the time value for S3 Replication Time Control (S3 RTC) and replication metrics + * EventThreshold.

+ * @public + */ +export interface ReplicationTimeValue { + /** + *

Contains an integer specifying time in minutes.

+ *

Valid value: 15

+ * @public + */ + Minutes?: number | undefined; +} +/** + *

A container specifying replication metrics-related settings enabling replication metrics and + * events.

+ * @public + */ +export interface Metrics { + /** + *

Specifies whether the replication metrics are enabled.

+ * @public + */ + Status: MetricsStatus | undefined; + /** + *

A container specifying the time threshold for emitting the + * s3:Replication:OperationMissedThreshold event.

+ * @public + */ + EventThreshold?: ReplicationTimeValue | undefined; +} +/** + *

A container specifying S3 Replication Time Control (S3 RTC) related information, including whether S3 RTC is enabled and + * the time when all objects and operations on objects must be replicated. Must be specified together with + * a Metrics block.

+ * @public + */ +export interface ReplicationTime { + /** + *

Specifies whether the replication time is enabled.

+ * @public + */ + Status: ReplicationTimeStatus | undefined; + /** + *

A container specifying the time by which replication should be complete for all objects and + * operations on objects.

+ * @public + */ + Time: ReplicationTimeValue | undefined; +} +/** + *

Specifies information about where to publish analysis or configuration results for an Amazon S3 bucket + * and S3 Replication Time Control (S3 RTC).

+ * @public + */ +export interface Destination { + /** + *

The Amazon Resource Name (ARN) of the bucket where you want Amazon S3 to store the results.

+ * @public + */ + Bucket: string | undefined; + /** + *

Destination bucket owner account ID. In a cross-account scenario, if you direct Amazon S3 to change + * replica ownership to the Amazon Web Services account that owns the destination bucket by specifying the + * AccessControlTranslation property, this is the account ID of the destination bucket + * owner. For more information, see Replication Additional Configuration: Changing + * the Replica Owner in the Amazon S3 User Guide.

+ * @public + */ + Account?: string | undefined; + /** + *

The storage class to use when replicating objects, such as S3 Standard or reduced redundancy. By + * default, Amazon S3 uses the storage class of the source object to create the object replica.

+ *

For valid values, see the StorageClass element of the PUT Bucket replication action in the + * Amazon S3 API Reference.

+ *

+ * FSX_OPENZFS is not an accepted value when replicating objects.

+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

Specify this only in a cross-account scenario (where source and destination bucket owners are not + * the same), and you want to change replica ownership to the Amazon Web Services account that owns the destination + * bucket. If this is not specified in the replication configuration, the replicas are owned by same + * Amazon Web Services account that owns the source object.

+ * @public + */ + AccessControlTranslation?: AccessControlTranslation | undefined; + /** + *

A container that provides information about encryption. If SourceSelectionCriteria is + * specified, you must specify this element.

+ * @public + */ + EncryptionConfiguration?: EncryptionConfiguration | undefined; + /** + *

A container specifying S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all + * objects and operations on objects must be replicated. Must be specified together with a + * Metrics block.

+ * @public + */ + ReplicationTime?: ReplicationTime | undefined; + /** + *

A container specifying replication metrics-related settings enabling replication metrics and + * events.

+ * @public + */ + Metrics?: Metrics | undefined; +} +/** + *

Optional configuration to replicate existing source bucket objects.

+ * + *

This parameter is no longer supported. To replicate existing objects, see Replicating + * existing objects with S3 Batch Replication in the + * Amazon S3 User Guide.

+ *
+ * @public + */ +export interface ExistingObjectReplication { + /** + *

Specifies whether Amazon S3 replicates existing source bucket objects.

+ * @public + */ + Status: ExistingObjectReplicationStatus | undefined; +} +/** + *

A container for specifying rule filters. The filters determine the subset of objects to which the + * rule applies. This element is required only if you specify more than one filter.

+ *

For example:

+ *
    + *
  • + *

    If you specify both a Prefix and a Tag filter, wrap these filters in + * an And tag.

    + *
  • + *
  • + *

    If you specify a filter based on multiple tags, wrap the Tag elements in an + * And tag.

    + *
  • + *
+ * @public + */ +export interface ReplicationRuleAndOperator { + /** + *

An object key name prefix that identifies the subset of objects to which the rule applies.

+ * @public + */ + Prefix?: string | undefined; + /** + *

An array of tags containing key and value pairs.

+ * @public + */ + Tags?: Tag[] | undefined; +} +/** + *

A filter that identifies the subset of objects to which the replication rule applies. A + * Filter must specify exactly one Prefix, Tag, or an + * And child element.

+ * @public + */ +export interface ReplicationRuleFilter { + /** + *

An object key name prefix that identifies the subset of objects to which the rule applies.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * @public + */ + Prefix?: string | undefined; + /** + *

A container for specifying a tag key and value.

+ *

The rule applies only to objects that have the tag in their tag set.

+ * @public + */ + Tag?: Tag | undefined; + /** + *

A container for specifying rule filters. The filters determine the subset of objects to which the + * rule applies. This element is required only if you specify more than one filter. For example:

+ *
    + *
  • + *

    If you specify both a Prefix and a Tag filter, wrap these filters in + * an And tag.

    + *
  • + *
  • + *

    If you specify a filter based on multiple tags, wrap the Tag elements in an + * And tag.

    + *
  • + *
+ * @public + */ + And?: ReplicationRuleAndOperator | undefined; +} +/** + *

A filter that you can specify for selection for modifications on replicas. Amazon S3 doesn't replicate + * replica modifications by default. In the latest version of replication configuration (when + * Filter is specified), you can specify this element and set the status to + * Enabled to replicate modifications on replicas.

+ * + *

If you don't specify the Filter element, Amazon S3 assumes that the replication + * configuration is the earlier version, V1. In the earlier version, this element is not allowed.

+ *
+ * @public + */ +export interface ReplicaModifications { + /** + *

Specifies whether Amazon S3 replicates modifications on replicas.

+ * @public + */ + Status: ReplicaModificationsStatus | undefined; +} +/** + *

A container for filter information for the selection of S3 objects encrypted with Amazon Web Services KMS.

+ * @public + */ +export interface SseKmsEncryptedObjects { + /** + *

Specifies whether Amazon S3 replicates objects created with server-side encryption using an Amazon Web Services KMS key + * stored in Amazon Web Services Key Management Service.

+ * @public + */ + Status: SseKmsEncryptedObjectsStatus | undefined; +} +/** + *

A container that describes additional filters for identifying the source objects that you want to + * replicate. You can choose to enable or disable the replication of these objects. Currently, Amazon S3 + * supports only the filter that you can specify for objects created with server-side encryption using a + * customer managed key stored in Amazon Web Services Key Management Service (SSE-KMS).

+ * @public + */ +export interface SourceSelectionCriteria { + /** + *

A container for filter information for the selection of Amazon S3 objects encrypted with Amazon Web Services KMS. If + * you include SourceSelectionCriteria in the replication configuration, this element is + * required.

+ * @public + */ + SseKmsEncryptedObjects?: SseKmsEncryptedObjects | undefined; + /** + *

A filter that you can specify for selections for modifications on replicas. Amazon S3 doesn't replicate + * replica modifications by default. In the latest version of replication configuration (when + * Filter is specified), you can specify this element and set the status to + * Enabled to replicate modifications on replicas.

+ * + *

If you don't specify the Filter element, Amazon S3 assumes that the replication + * configuration is the earlier version, V1. In the earlier version, this element is not allowed

+ *
+ * @public + */ + ReplicaModifications?: ReplicaModifications | undefined; +} +/** + *

Specifies which Amazon S3 objects to replicate and where to store the replicas.

+ * @public + */ +export interface ReplicationRule { + /** + *

A unique identifier for the rule. The maximum value is 255 characters.

+ * @public + */ + ID?: string | undefined; + /** + *

The priority indicates which rule has precedence whenever two or more replication rules conflict. + * Amazon S3 will attempt to replicate objects according to all replication rules. However, if there are two or + * more rules with the same destination bucket, then objects will be replicated according to the rule with + * the highest priority. The higher the number, the higher the priority.

+ *

For more information, see Replication in the Amazon S3 User Guide.

+ * @public + */ + Priority?: number | undefined; + /** + *

An object key name prefix that identifies the object or objects to which the rule applies. The + * maximum prefix length is 1,024 characters. To include all objects in a bucket, specify an empty string. + *

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * + * @deprecated deprecated. + * @public + */ + Prefix?: string | undefined; + /** + *

A filter that identifies the subset of objects to which the replication rule applies. A + * Filter must specify exactly one Prefix, Tag, or an + * And child element.

+ * @public + */ + Filter?: ReplicationRuleFilter | undefined; + /** + *

Specifies whether the rule is enabled.

+ * @public + */ + Status: ReplicationRuleStatus | undefined; + /** + *

A container that describes additional filters for identifying the source objects that you want to + * replicate. You can choose to enable or disable the replication of these objects. Currently, Amazon S3 + * supports only the filter that you can specify for objects created with server-side encryption using a + * customer managed key stored in Amazon Web Services Key Management Service (SSE-KMS).

+ * @public + */ + SourceSelectionCriteria?: SourceSelectionCriteria | undefined; + /** + *

Optional configuration to replicate existing source bucket objects.

+ * + *

This parameter is no longer supported. To replicate existing objects, see Replicating + * existing objects with S3 Batch Replication in the + * Amazon S3 User Guide.

+ *
+ * @public + */ + ExistingObjectReplication?: ExistingObjectReplication | undefined; + /** + *

A container for information about the replication destination and its configurations including + * enabling the S3 Replication Time Control (S3 RTC).

+ * @public + */ + Destination: Destination | undefined; + /** + *

Specifies whether Amazon S3 replicates delete markers. If you specify a Filter in your + * replication configuration, you must also include a DeleteMarkerReplication element. If your + * Filter includes a Tag element, the DeleteMarkerReplication + * Status must be set to Disabled, because Amazon S3 does not support replicating delete markers + * for tag-based rules. For an example configuration, see Basic Rule + * Configuration.

+ *

For more information about delete marker replication, see Basic Rule Configuration.

+ * + *

If you are using an earlier version of the replication configuration, Amazon S3 handles replication of + * delete markers differently. For more information, see Backward Compatibility.

+ *
+ * @public + */ + DeleteMarkerReplication?: DeleteMarkerReplication | undefined; +} +/** + *

A container for replication rules. You can add up to 1,000 rules. The maximum size of a replication + * configuration is 2 MB.

+ * @public + */ +export interface ReplicationConfiguration { + /** + *

The Amazon Resource Name (ARN) of the Identity and Access Management (IAM) role that Amazon S3 assumes when replicating + * objects. For more information, see How to Set Up Replication in the + * Amazon S3 User Guide.

+ * @public + */ + Role: string | undefined; + /** + *

A container for one or more replication rules. A replication configuration must have at least one + * rule and can contain a maximum of 1,000 rules.

+ * @public + */ + Rules: ReplicationRule[] | undefined; +} +/** + * @public + */ +export interface GetBucketReplicationOutput { + /** + *

A container for replication rules. You can add up to 1,000 rules. The maximum size of a replication + * configuration is 2 MB.

+ * @public + */ + ReplicationConfiguration?: ReplicationConfiguration | undefined; +} +/** + * @public + */ +export interface GetBucketReplicationRequest { + /** + *

The bucket name for which to get the replication information.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetBucketRequestPaymentOutput { + /** + *

Specifies who pays for the download and request fees.

+ * @public + */ + Payer?: Payer | undefined; +} +/** + * @public + */ +export interface GetBucketRequestPaymentRequest { + /** + *

The name of the bucket for which to get the payment request configuration

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetBucketTaggingOutput { + /** + *

Contains the tag set.

+ * @public + */ + TagSet: Tag[] | undefined; +} +/** + * @public + */ +export interface GetBucketTaggingRequest { + /** + *

The name of the bucket for which to get the tagging information.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetBucketVersioningOutput { + /** + *

The versioning state of the bucket.

+ * @public + */ + Status?: BucketVersioningStatus | undefined; + /** + *

Specifies whether MFA delete is enabled in the bucket versioning configuration. This element is only + * returned if the bucket has been configured with MFA delete. If the bucket has never been so configured, + * this element is not returned.

+ * @public + */ + MFADelete?: MFADeleteStatus | undefined; +} +/** + * @public + */ +export interface GetBucketVersioningRequest { + /** + *

The name of the bucket for which to get the versioning information.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

The error information.

+ * @public + */ +export interface ErrorDocument { + /** + *

The object key name to use when a 4XX class error occurs.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * @public + */ + Key: string | undefined; +} +/** + *

Container for the Suffix element.

+ * @public + */ +export interface IndexDocument { + /** + *

A suffix that is appended to a request that is for a directory on the website endpoint. (For + * example, if the suffix is index.html and you make a request to + * samplebucket/images/, the data that is returned will be for the object with the key name + * images/index.html.) The suffix must not be empty and must not include a slash + * character.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * @public + */ + Suffix: string | undefined; +} +/** + *

Specifies the redirect behavior of all requests to a website endpoint of an Amazon S3 bucket.

+ * @public + */ +export interface RedirectAllRequestsTo { + /** + *

Name of the host where requests are redirected.

+ * @public + */ + HostName: string | undefined; + /** + *

Protocol to use when redirecting requests. The default is the protocol that is used in the original + * request.

+ * @public + */ + Protocol?: Protocol | undefined; +} +/** + *

A container for describing a condition that must be met for the specified redirect to apply. For + * example, 1. If request is for pages in the /docs folder, redirect to the + * /documents folder. 2. If request results in HTTP error 4xx, redirect request to another + * host where you might process the error.

+ * @public + */ +export interface Condition { + /** + *

The HTTP error code when the redirect is applied. In the event of an error, if the error code equals + * this value, then the specified redirect is applied. Required when parent element Condition + * is specified and sibling KeyPrefixEquals is not specified. If both are specified, then both + * must be true for the redirect to be applied.

+ * @public + */ + HttpErrorCodeReturnedEquals?: string | undefined; + /** + *

The object key name prefix when the redirect is applied. For example, to redirect requests for + * ExamplePage.html, the key prefix will be ExamplePage.html. To redirect + * request for all pages with the prefix docs/, the key prefix will be /docs, + * which identifies all objects in the docs/ folder. Required when the parent element + * Condition is specified and sibling HttpErrorCodeReturnedEquals is not + * specified. If both conditions are specified, both must be true for the redirect to be applied.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * @public + */ + KeyPrefixEquals?: string | undefined; +} +/** + *

Specifies how requests are redirected. In the event of an error, you can specify a different error + * code to return.

+ * @public + */ +export interface Redirect { + /** + *

The host name to use in the redirect request.

+ * @public + */ + HostName?: string | undefined; + /** + *

The HTTP redirect code to use on the response. Not required if one of the siblings is + * present.

+ * @public + */ + HttpRedirectCode?: string | undefined; + /** + *

Protocol to use when redirecting requests. The default is the protocol that is used in the original + * request.

+ * @public + */ + Protocol?: Protocol | undefined; + /** + *

The object key prefix to use in the redirect request. For example, to redirect requests for all + * pages with prefix docs/ (objects in the docs/ folder) to + * documents/, you can set a condition block with KeyPrefixEquals set to + * docs/ and in the Redirect set ReplaceKeyPrefixWith to + * /documents. Not required if one of the siblings is present. Can be present only if + * ReplaceKeyWith is not provided.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * @public + */ + ReplaceKeyPrefixWith?: string | undefined; + /** + *

The specific object key to use in the redirect request. For example, redirect request to + * error.html. Not required if one of the siblings is present. Can be present only if + * ReplaceKeyPrefixWith is not provided.

+ * + *

Replacement must be made for object keys containing special characters (such as carriage returns) when using + * XML requests. For more information, see + * XML related object key constraints.

+ *
+ * @public + */ + ReplaceKeyWith?: string | undefined; +} +/** + *

Specifies the redirect behavior and when a redirect is applied. For more information about routing + * rules, see Configuring + * advanced conditional redirects in the Amazon S3 User Guide.

+ * @public + */ +export interface RoutingRule { + /** + *

A container for describing a condition that must be met for the specified redirect to apply. For + * example, 1. If request is for pages in the /docs folder, redirect to the + * /documents folder. 2. If request results in HTTP error 4xx, redirect request to another + * host where you might process the error.

+ * @public + */ + Condition?: Condition | undefined; + /** + *

Container for redirect information. You can redirect requests to another host, to another page, or + * with another protocol. In the event of an error, you can specify a different error code to + * return.

+ * @public + */ + Redirect: Redirect | undefined; +} +/** + * @public + */ +export interface GetBucketWebsiteOutput { + /** + *

Specifies the redirect behavior of all requests to a website endpoint of an Amazon S3 bucket.

+ * @public + */ + RedirectAllRequestsTo?: RedirectAllRequestsTo | undefined; + /** + *

The name of the index document for the website (for example index.html).

+ * @public + */ + IndexDocument?: IndexDocument | undefined; + /** + *

The object key name of the website error document to use for 4XX class errors.

+ * @public + */ + ErrorDocument?: ErrorDocument | undefined; + /** + *

Rules that define when a redirect is applied and the redirect behavior.

+ * @public + */ + RoutingRules?: RoutingRule[] | undefined; +} +/** + * @public + */ +export interface GetBucketWebsiteRequest { + /** + *

The bucket name for which to get the website configuration.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetObjectOutput { + /** + *

Object data.

+ * @public + */ + Body?: StreamingBlobTypes | undefined; + /** + *

Indicates whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this + * response header does not appear in the response.

+ * + *
    + *
  • + *

    If the current version of the object is a delete marker, Amazon S3 behaves as if the object was + * deleted and includes x-amz-delete-marker: true in the response.

    + *
  • + *
  • + *

    If the specified version in the request is a delete marker, the response returns a 405 + * Method Not Allowed error and the Last-Modified: timestamp response + * header.

    + *
  • + *
+ *
+ * @public + */ + DeleteMarker?: boolean | undefined; + /** + *

Indicates that a range of bytes was specified in the request.

+ * @public + */ + AcceptRanges?: string | undefined; + /** + *

If the object expiration is configured (see + * PutBucketLifecycleConfiguration + * ), the response includes this header. It + * includes the expiry-date and rule-id key-value pairs providing object + * expiration information. The value of the rule-id is URL-encoded.

+ * + *

Object expiration information is not returned in directory buckets and this header returns the + * value "NotImplemented" in all responses for directory buckets.

+ *
+ * @public + */ + Expiration?: string | undefined; + /** + *

Provides information about object restoration action and expiration time of the restored object + * copy.

+ * + *

This functionality is not supported for directory buckets. Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ + Restore?: string | undefined; + /** + *

Date and time when the object was last modified.

+ *

+ * General purpose buckets - When you specify a + * versionId of the object in your request, if the specified version in the request is a + * delete marker, the response returns a 405 Method Not Allowed error and the + * Last-Modified: timestamp response header.

+ * @public + */ + LastModified?: Date | undefined; + /** + *

Size of the body in bytes.

+ * @public + */ + ContentLength?: number | undefined; + /** + *

An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a + * resource found at a URL.

+ * @public + */ + ETag?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the object. This checksum is only present if the object was uploaded + * with the object. For more information, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. For more information, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

The Base64 encoded, 64-bit CRC64NVME checksum of the object. For more information, see + * Checking + * object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. For more information, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. For more information, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

The checksum type, which determines how part-level checksums are combined to create an object-level + * checksum for multipart objects. You can use this header response to verify that the checksum type that + * is received is the same checksum type that was specified in the CreateMultipartUpload + * request. For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; + /** + *

This is set to the number of metadata entries not returned in the headers that are prefixed with + * x-amz-meta-. This can happen if you create metadata using an API like SOAP that supports + * more flexible metadata than the REST API. For example, using SOAP, you can create metadata whose values + * are not legal HTTP headers.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + MissingMeta?: number | undefined; + /** + *

Version ID of the object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

Specifies caching behavior along the request/reply chain.

+ * @public + */ + CacheControl?: string | undefined; + /** + *

Specifies presentational information for the object.

+ * @public + */ + ContentDisposition?: string | undefined; + /** + *

Indicates what content encodings have been applied to the object and thus what decoding mechanisms + * must be applied to obtain the media-type referenced by the Content-Type header field.

+ * @public + */ + ContentEncoding?: string | undefined; + /** + *

The language the content is in.

+ * @public + */ + ContentLanguage?: string | undefined; + /** + *

The portion of the object returned in the response.

+ * @public + */ + ContentRange?: string | undefined; + /** + *

A standard MIME type describing the format of the object data.

+ * @public + */ + ContentType?: string | undefined; + /** + * Deprecated in favor of ExpiresString. + * + * @deprecated deprecated. + * @public + */ + Expires?: Date | undefined; + /** + *

The date and time at which the object is no longer cacheable.

+ * @public + */ + ExpiresString?: string | undefined; + /** + *

If the bucket is configured as a website, redirects requests for this object to another object in + * the same bucket or to an external URL. Amazon S3 stores the value of this header in the object + * metadata.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + WebsiteRedirectLocation?: string | undefined; + /** + *

The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

A map of metadata to store with the object in S3.

+ * @public + */ + Metadata?: Record | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to confirm the encryption algorithm that's used.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to provide the round-trip message integrity verification of the customer-provided + * encryption key.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

If present, indicates the ID of the KMS key that was used for object encryption.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) + * keys (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

Provides storage class information of the object. Amazon S3 returns this header for all objects except + * for S3 Standard storage class objects.

+ * + *

+ * Directory buckets - + * Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; + /** + *

Amazon S3 can return this if your request involves a bucket that is either a source or destination in a + * replication rule.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ReplicationStatus?: ReplicationStatus | undefined; + /** + *

The count of parts this object has. This value is only returned if you specify + * partNumber in your request and the object was uploaded as a multipart upload.

+ * @public + */ + PartsCount?: number | undefined; + /** + *

The number of tags, if any, on the object, when you have the relevant permission to read object + * tags.

+ *

You can use GetObjectTagging to retrieve the tag set associated with an object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + TagCount?: number | undefined; + /** + *

The Object Lock mode that's currently in place for this object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockMode?: ObjectLockMode | undefined; + /** + *

The date and time when this object's Object Lock will expire.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockRetainUntilDate?: Date | undefined; + /** + *

Indicates whether this object has an active legal hold. This field is only returned if you have + * permission to view an object's legal hold status.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; +} +/** + * @public + */ +export interface GetObjectRequest { + /** + *

The bucket name containing the object.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

+ * Object Lambda access points - When you use this action with an Object Lambda access point, you must direct requests to the Object Lambda access point hostname. The Object Lambda access point hostname takes the form AccessPointName-AccountId.s3-object-lambda.Region.amazonaws.com.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Return the object only if its entity tag (ETag) is the same as the one specified in this header; + * otherwise, return a 412 Precondition Failed error.

+ *

If both of the If-Match and If-Unmodified-Since headers are present in the + * request as follows: If-Match condition evaluates to true, and; + * If-Unmodified-Since condition evaluates to false; then, S3 returns 200 + * OK and the data requested.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfMatch?: string | undefined; + /** + *

Return the object only if it has been modified since the specified time; otherwise, return a + * 304 Not Modified error.

+ *

If both of the If-None-Match and If-Modified-Since headers are present in + * the request as follows: If-None-Match condition evaluates to false, and; + * If-Modified-Since condition evaluates to true; then, S3 returns 304 + * Not Modified status code.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfModifiedSince?: Date | undefined; + /** + *

Return the object only if its entity tag (ETag) is different from the one specified in this header; + * otherwise, return a 304 Not Modified error.

+ *

If both of the If-None-Match and If-Modified-Since headers are present in + * the request as follows: If-None-Match condition evaluates to false, and; + * If-Modified-Since condition evaluates to true; then, S3 returns 304 + * Not Modified HTTP status code.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfNoneMatch?: string | undefined; + /** + *

Return the object only if it has not been modified since the specified time; otherwise, return a + * 412 Precondition Failed error.

+ *

If both of the If-Match and If-Unmodified-Since headers are present in the + * request as follows: If-Match condition evaluates to true, and; + * If-Unmodified-Since condition evaluates to false; then, S3 returns 200 + * OK and the data requested.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfUnmodifiedSince?: Date | undefined; + /** + *

Key of the object to get.

+ * @public + */ + Key: string | undefined; + /** + *

Downloads the specified byte range of an object. For more information about the HTTP Range header, + * see https://www.rfc-editor.org/rfc/rfc9110.html#name-range.

+ * + *

Amazon S3 doesn't support retrieving multiple ranges of data per GET request.

+ *
+ * @public + */ + Range?: string | undefined; + /** + *

Sets the Cache-Control header of the response.

+ * @public + */ + ResponseCacheControl?: string | undefined; + /** + *

Sets the Content-Disposition header of the response.

+ * @public + */ + ResponseContentDisposition?: string | undefined; + /** + *

Sets the Content-Encoding header of the response.

+ * @public + */ + ResponseContentEncoding?: string | undefined; + /** + *

Sets the Content-Language header of the response.

+ * @public + */ + ResponseContentLanguage?: string | undefined; + /** + *

Sets the Content-Type header of the response.

+ * @public + */ + ResponseContentType?: string | undefined; + /** + *

Sets the Expires header of the response.

+ * @public + */ + ResponseExpires?: Date | undefined; + /** + *

Version ID used to reference a specific version of the object.

+ *

By default, the GetObject operation returns the current version of an object. To return + * a different version, use the versionId subresource.

+ * + *
    + *
  • + *

    If you include a versionId in your request header, you must have the + * s3:GetObjectVersion permission to access a specific version of an object. The + * s3:GetObject permission is not required in this scenario.

    + *
  • + *
  • + *

    If you request the current version of an object without a specific versionId in + * the request header, only the s3:GetObject permission is required. The + * s3:GetObjectVersion permission is not required in this scenario.

    + *
  • + *
  • + *

    + * Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. + * You can only specify null to the versionId query parameter in the + * request.

    + *
  • + *
+ *
+ *

For more information about versioning, see PutBucketVersioning.

+ * @public + */ + VersionId?: string | undefined; + /** + *

Specifies the algorithm to use when decrypting the object (for example, AES256).

+ *

If you encrypt an object by using server-side encryption with customer-provided encryption keys + * (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following + * headers:

+ *
    + *
  • + *

    + * x-amz-server-side-encryption-customer-algorithm + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key-MD5 + *

    + *
  • + *
+ *

For more information about SSE-C, see Server-Side Encryption (Using + * Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key that you originally provided for Amazon S3 to encrypt the + * data before storing it. This value is used to decrypt the object when recovering it and must match the + * one used when storing the data. The key must be appropriate for use with the algorithm specified in the + * x-amz-server-side-encryption-customer-algorithm header.

+ *

If you encrypt an object by using server-side encryption with customer-provided encryption keys + * (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following + * headers:

+ *
    + *
  • + *

    + * x-amz-server-side-encryption-customer-algorithm + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key-MD5 + *

    + *
  • + *
+ *

For more information about SSE-C, see Server-Side Encryption (Using + * Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the customer-provided encryption key according to RFC 1321. Amazon S3 + * uses this header for a message integrity check to ensure that the encryption key was transmitted without + * error.

+ *

If you encrypt an object by using server-side encryption with customer-provided encryption keys + * (SSE-C) when you store the object in Amazon S3, then when you GET the object, you must use the following + * headers:

+ *
    + *
  • + *

    + * x-amz-server-side-encryption-customer-algorithm + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key + *

    + *
  • + *
  • + *

    + * x-amz-server-side-encryption-customer-key-MD5 + *

    + *
  • + *
+ *

For more information about SSE-C, see Server-Side Encryption (Using + * Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively + * performs a 'ranged' GET request for the part specified. Useful for downloading just a part of an + * object.

+ * @public + */ + PartNumber?: number | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

To retrieve the checksum, this mode must be enabled.

+ * @public + */ + ChecksumMode?: ChecksumMode | undefined; +} +/** + * @public + */ +export interface GetObjectAclOutput { + /** + *

Container for the bucket owner's ID.

+ * @public + */ + Owner?: Owner | undefined; + /** + *

A list of grants.

+ * @public + */ + Grants?: Grant[] | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface GetObjectAclRequest { + /** + *

The bucket name that contains the object for which to get the ACL information.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The key of the object for which to get the ACL information.

+ * @public + */ + Key: string | undefined; + /** + *

Version ID used to reference a specific version of the object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Contains all the possible checksum or digest values for an object.

+ * @public + */ +export interface Checksum { + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

The Base64 encoded, 64-bit CRC64NVME checksum of the object. This checksum is present + * if the object was uploaded with the CRC64NVME checksum algorithm, or if the object was + * uploaded without a checksum (and Amazon S3 added the default checksum, CRC64NVME, to the + * uploaded object). For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

The checksum type that is used to calculate the object’s checksum value. For more information, see + * Checking + * object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; +} +/** + *

A container for elements related to an individual part.

+ * @public + */ +export interface ObjectPart { + /** + *

The part number identifying the part. This value is a positive integer between 1 and 10,000.

+ * @public + */ + PartNumber?: number | undefined; + /** + *

The size of the uploaded part in bytes.

+ * @public + */ + Size?: number | undefined; + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the part. This checksum is present if the + * multipart upload request was created with the CRC32 checksum algorithm. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the part. This checksum is present if the + * multipart upload request was created with the CRC32C checksum algorithm. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

The Base64 encoded, 64-bit CRC64NVME checksum of the part. This checksum is present if + * the multipart upload request was created with the CRC64NVME checksum algorithm, or if the + * object was uploaded without a checksum (and Amazon S3 added the default checksum, CRC64NVME, to + * the uploaded object). For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 checksum of the part. This checksum is present if the + * multipart upload request was created with the SHA1 checksum algorithm. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 checksum of the part. This checksum is present if + * the multipart upload request was created with the SHA256 checksum algorithm. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; +} +/** + *

A collection of parts associated with a multipart upload.

+ * @public + */ +export interface GetObjectAttributesParts { + /** + *

The total number of parts.

+ * @public + */ + TotalPartsCount?: number | undefined; + /** + *

The marker for the current part.

+ * @public + */ + PartNumberMarker?: string | undefined; + /** + *

When a list is truncated, this element specifies the last part in the list, as well as the value to + * use for the PartNumberMarker request parameter in a subsequent request.

+ * @public + */ + NextPartNumberMarker?: string | undefined; + /** + *

The maximum number of parts allowed in the response.

+ * @public + */ + MaxParts?: number | undefined; + /** + *

Indicates whether the returned list of parts is truncated. A value of true indicates + * that the list was truncated. A list can be truncated if the number of parts exceeds the limit returned + * in the MaxParts element.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

A container for elements related to a particular part. A response can contain zero or more + * Parts elements.

+ * + *
    + *
  • + *

    + * General purpose buckets - For + * GetObjectAttributes, if an additional checksum (including + * x-amz-checksum-crc32, x-amz-checksum-crc32c, + * x-amz-checksum-sha1, or x-amz-checksum-sha256) isn't applied to the + * object specified in the request, the response doesn't return the Part element.

    + *
  • + *
  • + *

    + * Directory buckets - For + * GetObjectAttributes, regardless of whether an additional checksum is applied to the + * object specified in the request, the response returns the Part element.

    + *
  • + *
+ *
+ * @public + */ + Parts?: ObjectPart[] | undefined; +} +/** + * @public + */ +export interface GetObjectAttributesOutput { + /** + *

Specifies whether the object retrieved was (true) or was not (false) a + * delete marker. If false, this response header does not appear in the response. To learn + * more about delete markers, see Working with delete markers.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + DeleteMarker?: boolean | undefined; + /** + *

Date and time when the object was last modified.

+ * @public + */ + LastModified?: Date | undefined; + /** + *

The version ID of the object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; + /** + *

An ETag is an opaque identifier assigned by a web server to a specific version of a resource found + * at a URL.

+ * @public + */ + ETag?: string | undefined; + /** + *

The checksum or digest of the object.

+ * @public + */ + Checksum?: Checksum | undefined; + /** + *

A collection of parts associated with a multipart upload.

+ * @public + */ + ObjectParts?: GetObjectAttributesParts | undefined; + /** + *

Provides the storage class information of the object. Amazon S3 returns this header for all objects + * except for S3 Standard storage class objects.

+ *

For more information, see Storage Classes.

+ * + *

+ * Directory buckets - + * Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

The size of the object in bytes.

+ * @public + */ + ObjectSize?: number | undefined; +} +/** + * @public + */ +export interface GetObjectAttributesRequest { + /** + *

The name of the bucket that contains the object.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The object key.

+ * @public + */ + Key: string | undefined; + /** + *

The version ID used to reference a specific version of the object.

+ * + *

S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the + * versionId query parameter in the request.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

Sets the maximum number of parts to return. For more information, see Uploading and copying objects using multipart upload + * in Amazon S3 in the Amazon Simple Storage Service user guide.

+ * @public + */ + MaxParts?: number | undefined; + /** + *

Specifies the part after which listing should begin. Only parts with higher part numbers will be + * listed. For more information, see Uploading and copying objects using multipart upload + * in Amazon S3 in the Amazon Simple Storage Service user guide.

+ * @public + */ + PartNumberMarker?: string | undefined; + /** + *

Specifies the algorithm to use when encrypting the object (for example, AES256).

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is + * used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must + * be appropriate for use with the algorithm specified in the + * x-amz-server-side-encryption-customer-algorithm header.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header + * for a message integrity check to ensure that the encryption key was transmitted without error.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Specifies the fields at the root level that you want returned in the response. Fields that you do + * not specify are not returned.

+ * @public + */ + ObjectAttributes: ObjectAttributes[] | undefined; +} +/** + *

A legal hold configuration for an object.

+ * @public + */ +export interface ObjectLockLegalHold { + /** + *

Indicates whether the specified object has a legal hold in place.

+ * @public + */ + Status?: ObjectLockLegalHoldStatus | undefined; +} +/** + * @public + */ +export interface GetObjectLegalHoldOutput { + /** + *

The current legal hold status for the specified object.

+ * @public + */ + LegalHold?: ObjectLockLegalHold | undefined; +} +/** + * @public + */ +export interface GetObjectLegalHoldRequest { + /** + *

The bucket name containing the object whose legal hold status you want to retrieve.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The key name for the object whose legal hold status you want to retrieve.

+ * @public + */ + Key: string | undefined; + /** + *

The version ID of the object whose legal hold status you want to retrieve.

+ * @public + */ + VersionId?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

The container element for optionally specifying the default Object Lock retention settings for new + * objects placed in the specified bucket.

+ * + *
    + *
  • + *

    The DefaultRetention settings require both a mode and a period.

    + *
  • + *
  • + *

    The DefaultRetention period can be either Days or Years + * but you must select one. You cannot specify Days and Years at the same + * time.

    + *
  • + *
+ *
+ * @public + */ +export interface DefaultRetention { + /** + *

The default Object Lock retention mode you want to apply to new objects placed in the specified + * bucket. Must be used with either Days or Years.

+ * @public + */ + Mode?: ObjectLockRetentionMode | undefined; + /** + *

The number of days that you want to specify for the default retention period. Must be used with + * Mode.

+ * @public + */ + Days?: number | undefined; + /** + *

The number of years that you want to specify for the default retention period. Must be used with + * Mode.

+ * @public + */ + Years?: number | undefined; +} +/** + *

The container element for an Object Lock rule.

+ * @public + */ +export interface ObjectLockRule { + /** + *

The default Object Lock retention mode and period that you want to apply to new objects placed in + * the specified bucket. Bucket settings require both a mode and a period. The period can be either + * Days or Years but you must select one. You cannot specify Days + * and Years at the same time.

+ * @public + */ + DefaultRetention?: DefaultRetention | undefined; +} +/** + *

The container element for Object Lock configuration parameters.

+ * @public + */ +export interface ObjectLockConfiguration { + /** + *

Indicates whether this bucket has an Object Lock configuration enabled. Enable + * ObjectLockEnabled when you apply ObjectLockConfiguration to a bucket. + *

+ * @public + */ + ObjectLockEnabled?: ObjectLockEnabled | undefined; + /** + *

Specifies the Object Lock rule for the specified object. Enable the this rule when you apply + * ObjectLockConfiguration to a bucket. Bucket settings require both a mode and a period. + * The period can be either Days or Years but you must select one. You cannot + * specify Days and Years at the same time.

+ * @public + */ + Rule?: ObjectLockRule | undefined; +} +/** + * @public + */ +export interface GetObjectLockConfigurationOutput { + /** + *

The specified bucket's Object Lock configuration.

+ * @public + */ + ObjectLockConfiguration?: ObjectLockConfiguration | undefined; +} +/** + * @public + */ +export interface GetObjectLockConfigurationRequest { + /** + *

The bucket whose Object Lock configuration you want to retrieve.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

A Retention configuration for an object.

+ * @public + */ +export interface ObjectLockRetention { + /** + *

Indicates the Retention mode for the specified object.

+ * @public + */ + Mode?: ObjectLockRetentionMode | undefined; + /** + *

The date on which this Object Lock Retention will expire.

+ * @public + */ + RetainUntilDate?: Date | undefined; +} +/** + * @public + */ +export interface GetObjectRetentionOutput { + /** + *

The container element for an object's retention settings.

+ * @public + */ + Retention?: ObjectLockRetention | undefined; +} +/** + * @public + */ +export interface GetObjectRetentionRequest { + /** + *

The bucket name containing the object whose retention settings you want to retrieve.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The key name for the object whose retention settings you want to retrieve.

+ * @public + */ + Key: string | undefined; + /** + *

The version ID for the object whose retention settings you want to retrieve.

+ * @public + */ + VersionId?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface GetObjectTaggingOutput { + /** + *

The versionId of the object for which you got the tagging information.

+ * @public + */ + VersionId?: string | undefined; + /** + *

Contains the tag set.

+ * @public + */ + TagSet: Tag[] | undefined; +} +/** + * @public + */ +export interface GetObjectTaggingRequest { + /** + *

The bucket name containing the object for which to get the tagging information.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Object key for which to get the tagging information.

+ * @public + */ + Key: string | undefined; + /** + *

The versionId of the object for which to get the tagging information.

+ * @public + */ + VersionId?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; +} +/** + * @public + */ +export interface GetObjectTorrentOutput { + /** + *

A Bencoded dictionary as defined by the BitTorrent specification

+ * @public + */ + Body?: StreamingBlobTypes | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface GetObjectTorrentRequest { + /** + *

The name of the bucket containing the object for which to get the torrent files.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The object key for which to get the information.

+ * @public + */ + Key: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

The PublicAccessBlock configuration that you want to apply to this Amazon S3 bucket. You can + * enable the configuration options in any combination. Bucket-level settings work alongside + * account-level settings (which may inherit from organization-level policies). For more + * information about when Amazon S3 considers a bucket or object public, see The Meaning of "Public" in the Amazon S3 User Guide.

+ * @public + */ +export interface PublicAccessBlockConfiguration { + /** + *

Specifies whether Amazon S3 should block public access control lists (ACLs) for this bucket and objects + * in this bucket. Setting this element to TRUE causes the following behavior:

+ *
    + *
  • + *

    PUT Bucket ACL and PUT Object ACL calls fail if the specified ACL is public.

    + *
  • + *
  • + *

    PUT Object calls fail if the request includes a public ACL.

    + *
  • + *
  • + *

    PUT Bucket calls fail if the request includes a public ACL.

    + *
  • + *
+ *

Enabling this setting doesn't affect existing policies or ACLs.

+ * @public + */ + BlockPublicAcls?: boolean | undefined; + /** + *

Specifies whether Amazon S3 should ignore public ACLs for this bucket and objects in this bucket. Setting + * this element to TRUE causes Amazon S3 to ignore all public ACLs on this bucket and objects in + * this bucket.

+ *

Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new + * public ACLs from being set.

+ * @public + */ + IgnorePublicAcls?: boolean | undefined; + /** + *

Specifies whether Amazon S3 should block public bucket policies for this bucket. Setting this element to + * TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy + * allows public access.

+ *

Enabling this setting doesn't affect existing bucket policies.

+ * @public + */ + BlockPublicPolicy?: boolean | undefined; + /** + *

Specifies whether Amazon S3 should restrict public bucket policies for this bucket. Setting this element + * to TRUE restricts access to this bucket to only Amazon Web Services service principals and + * authorized users within this account if the bucket has a public policy.

+ *

Enabling this setting doesn't affect previously stored bucket policies, except that public and + * cross-account access within any public bucket policy, including non-public delegation to specific + * accounts, is blocked.

+ * @public + */ + RestrictPublicBuckets?: boolean | undefined; +} +/** + * @public + */ +export interface GetPublicAccessBlockOutput { + /** + *

The PublicAccessBlock configuration currently in effect for this Amazon S3 bucket.

+ * @public + */ + PublicAccessBlockConfiguration?: PublicAccessBlockConfiguration | undefined; +} +/** + * @public + */ +export interface GetPublicAccessBlockRequest { + /** + *

The name of the Amazon S3 bucket whose PublicAccessBlock configuration you want to retrieve. + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface HeadBucketOutput { + /** + *

The Amazon Resource Name (ARN) of the S3 bucket. ARNs uniquely identify Amazon Web Services resources across all + * of Amazon Web Services.

+ * + *

This parameter is only supported for S3 directory buckets. For more information, see Using tags with + * directory buckets.

+ *
+ * @public + */ + BucketArn?: string | undefined; + /** + *

The type of location where the bucket is created.

+ * + *

This functionality is only supported by directory buckets.

+ *
+ * @public + */ + BucketLocationType?: LocationType | undefined; + /** + *

The name of the location where the bucket will be created.

+ *

For directory buckets, the Zone ID of the Availability Zone or the Local Zone where the bucket is created. An example + * Zone ID value for an Availability Zone is usw2-az1.

+ * + *

This functionality is only supported by directory buckets.

+ *
+ * @public + */ + BucketLocationName?: string | undefined; + /** + *

The Region that the bucket is located.

+ * @public + */ + BucketRegion?: string | undefined; + /** + *

Indicates whether the bucket name used in the request is an access point alias.

+ * + *

For directory buckets, the value of this field is false.

+ *
+ * @public + */ + AccessPointAlias?: boolean | undefined; +} +/** + * @public + */ +export interface HeadBucketRequest { + /** + *

The bucket name.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

+ * Object Lambda access points - When you use this API operation with an Object Lambda access point, provide the alias of the Object Lambda access point in place of the bucket name. + * If the Object Lambda access point alias in a request is not valid, the error code InvalidAccessPointAliasError is returned. + * For more information about InvalidAccessPointAliasError, see List of + * Error Codes.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface HeadObjectOutput { + /** + *

Specifies whether the object retrieved was (true) or was not (false) a Delete Marker. If false, this + * response header does not appear in the response.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + DeleteMarker?: boolean | undefined; + /** + *

Indicates that a range of bytes was specified.

+ * @public + */ + AcceptRanges?: string | undefined; + /** + *

If the object expiration is configured (see + * PutBucketLifecycleConfiguration + * ), the response includes this header. It + * includes the expiry-date and rule-id key-value pairs providing object + * expiration information. The value of the rule-id is URL-encoded.

+ * + *

Object expiration information is not returned in directory buckets and this header returns the + * value "NotImplemented" in all responses for directory buckets.

+ *
+ * @public + */ + Expiration?: string | undefined; + /** + *

If the object is an archived object (an object whose storage class is GLACIER), the response + * includes this header if either the archive restoration is in progress (see RestoreObject or an archive copy is already + * restored.

+ *

If an archive copy is already restored, the header value indicates when Amazon S3 is scheduled to delete + * the object copy. For example:

+ *

+ * x-amz-restore: ongoing-request="false", expiry-date="Fri, 21 Dec 2012 00:00:00 + * GMT" + *

+ *

If the object restoration is in progress, the header returns the value + * ongoing-request="true".

+ *

For more information about archiving objects, see Transitioning Objects: General Considerations.

+ * + *

This functionality is not supported for directory buckets. Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ + Restore?: string | undefined; + /** + *

The archive state of the head object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ArchiveStatus?: ArchiveStatus | undefined; + /** + *

Date and time when the object was last modified.

+ * @public + */ + LastModified?: Date | undefined; + /** + *

Size of the body in bytes.

+ * @public + */ + ContentLength?: number | undefined; + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

The Base64 encoded, 64-bit CRC64NVME checksum of the object. For more information, see + * Checking + * object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

The checksum type, which determines how part-level checksums are combined to create an object-level + * checksum for multipart objects. You can use this header response to verify that the checksum type that + * is received is the same checksum type that was specified in CreateMultipartUpload request. + * For more information, see Checking object integrity in the Amazon S3 + * User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; + /** + *

An entity tag (ETag) is an opaque identifier assigned by a web server to a specific version of a + * resource found at a URL.

+ * @public + */ + ETag?: string | undefined; + /** + *

This is set to the number of metadata entries not returned in x-amz-meta headers. This + * can happen if you create metadata using an API like SOAP that supports more flexible metadata than the + * REST API. For example, using SOAP, you can create metadata whose values are not legal HTTP + * headers.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + MissingMeta?: number | undefined; + /** + *

Version ID of the object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

Specifies caching behavior along the request/reply chain.

+ * @public + */ + CacheControl?: string | undefined; + /** + *

Specifies presentational information for the object.

+ * @public + */ + ContentDisposition?: string | undefined; + /** + *

Indicates what content encodings have been applied to the object and thus what decoding mechanisms + * must be applied to obtain the media-type referenced by the Content-Type header field.

+ * @public + */ + ContentEncoding?: string | undefined; + /** + *

The language the content is in.

+ * @public + */ + ContentLanguage?: string | undefined; + /** + *

A standard MIME type describing the format of the object data.

+ * @public + */ + ContentType?: string | undefined; + /** + *

The portion of the object returned in the response for a GET request.

+ * @public + */ + ContentRange?: string | undefined; + /** + * Deprecated in favor of ExpiresString. + * + * @deprecated deprecated. + * @public + */ + Expires?: Date | undefined; + /** + *

The date and time at which the object is no longer cacheable.

+ * @public + */ + ExpiresString?: string | undefined; + /** + *

If the bucket is configured as a website, redirects requests for this object to another object in + * the same bucket or to an external URL. Amazon S3 stores the value of this header in the object + * metadata.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + WebsiteRedirectLocation?: string | undefined; + /** + *

The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

A map of metadata to store with the object in S3.

+ * @public + */ + Metadata?: Record | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to confirm the encryption algorithm that's used.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to provide the round-trip message integrity verification of the customer-provided + * encryption key.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

If present, indicates the ID of the KMS key that was used for object encryption.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) + * keys (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

Provides storage class information of the object. Amazon S3 returns this header for all objects except + * for S3 Standard storage class objects.

+ *

For more information, see Storage Classes.

+ * + *

+ * Directory buckets - + * Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; + /** + *

Amazon S3 can return this header if your request involves a bucket that is either a source or a + * destination in a replication rule.

+ *

In replication, you have a source bucket on which you configure replication and destination bucket + * or buckets where Amazon S3 stores object replicas. When you request an object (GetObject) or + * object metadata (HeadObject) from these buckets, Amazon S3 will return the + * x-amz-replication-status header in the response as follows:

+ *
    + *
  • + *

    + * If requesting an object from the source bucket, Amazon S3 will + * return the x-amz-replication-status header if the object in your request is eligible + * for replication.

    + *

    For example, suppose that in your replication configuration, you specify object prefix + * TaxDocs requesting Amazon S3 to replicate objects with key prefix TaxDocs. + * Any objects you upload with this key name prefix, for example TaxDocs/document1.pdf, + * are eligible for replication. For any object request with this key name prefix, Amazon S3 will return the + * x-amz-replication-status header with value PENDING, COMPLETED or FAILED indicating + * object replication status.

    + *
  • + *
  • + *

    + * If requesting an object from a destination bucket, Amazon S3 will + * return the x-amz-replication-status header with value REPLICA if the object in your + * request is a replica that Amazon S3 created and there is no replica modification replication in + * progress.

    + *
  • + *
  • + *

    + * When replicating objects to multiple destination buckets, the + * x-amz-replication-status header acts differently. The header of the source object + * will only return a value of COMPLETED when replication is successful to all destinations. The header + * will remain at value PENDING until replication has completed for all destinations. If one or more + * destinations fails replication the header will return FAILED.

    + *
  • + *
+ *

For more information, see Replication.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ReplicationStatus?: ReplicationStatus | undefined; + /** + *

The count of parts this object has. This value is only returned if you specify + * partNumber in your request and the object was uploaded as a multipart upload.

+ * @public + */ + PartsCount?: number | undefined; + /** + *

The number of tags, if any, on the object, when you have the relevant permission to read object + * tags.

+ *

You can use GetObjectTagging to retrieve the tag set associated with an object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + TagCount?: number | undefined; + /** + *

The Object Lock mode, if any, that's in effect for this object. This header is only returned if the + * requester has the s3:GetObjectRetention permission. For more information about S3 Object + * Lock, see Object Lock.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockMode?: ObjectLockMode | undefined; + /** + *

The date and time when the Object Lock retention period expires. This header is only returned if the + * requester has the s3:GetObjectRetention permission.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockRetainUntilDate?: Date | undefined; + /** + *

Specifies whether a legal hold is in effect for this object. This header is only returned if the + * requester has the s3:GetObjectLegalHold permission. This header is not returned if the + * specified version of this object has never had a legal hold applied. For more information about S3 + * Object Lock, see Object + * Lock.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; +} +/** + * @public + */ +export interface HeadObjectRequest { + /** + *

The name of the bucket that contains the object.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Return the object only if its entity tag (ETag) is the same as the one specified; otherwise, return + * a 412 (precondition failed) error.

+ *

If both of the If-Match and If-Unmodified-Since headers are present in the + * request as follows:

+ *
    + *
  • + *

    + * If-Match condition evaluates to true, and;

    + *
  • + *
  • + *

    + * If-Unmodified-Since condition evaluates to false;

    + *
  • + *
+ *

Then Amazon S3 returns 200 OK and the data requested.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfMatch?: string | undefined; + /** + *

Return the object only if it has been modified since the specified time; otherwise, return a 304 + * (not modified) error.

+ *

If both of the If-None-Match and If-Modified-Since headers are present in + * the request as follows:

+ *
    + *
  • + *

    + * If-None-Match condition evaluates to false, and;

    + *
  • + *
  • + *

    + * If-Modified-Since condition evaluates to true;

    + *
  • + *
+ *

Then Amazon S3 returns the 304 Not Modified response code.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfModifiedSince?: Date | undefined; + /** + *

Return the object only if its entity tag (ETag) is different from the one specified; otherwise, + * return a 304 (not modified) error.

+ *

If both of the If-None-Match and If-Modified-Since headers are present in + * the request as follows:

+ *
    + *
  • + *

    + * If-None-Match condition evaluates to false, and;

    + *
  • + *
  • + *

    + * If-Modified-Since condition evaluates to true;

    + *
  • + *
+ *

Then Amazon S3 returns the 304 Not Modified response code.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfNoneMatch?: string | undefined; + /** + *

Return the object only if it has not been modified since the specified time; otherwise, return a 412 + * (precondition failed) error.

+ *

If both of the If-Match and If-Unmodified-Since headers are present in the + * request as follows:

+ *
    + *
  • + *

    + * If-Match condition evaluates to true, and;

    + *
  • + *
  • + *

    + * If-Unmodified-Since condition evaluates to false;

    + *
  • + *
+ *

Then Amazon S3 returns 200 OK and the data requested.

+ *

For more information about conditional requests, see RFC 7232.

+ * @public + */ + IfUnmodifiedSince?: Date | undefined; + /** + *

The object key.

+ * @public + */ + Key: string | undefined; + /** + *

HeadObject returns only the metadata for an object. If the Range is satisfiable, only the + * ContentLength is affected in the response. If the Range is not satisfiable, S3 returns a + * 416 - Requested Range Not Satisfiable error.

+ * @public + */ + Range?: string | undefined; + /** + *

Sets the Cache-Control header of the response.

+ * @public + */ + ResponseCacheControl?: string | undefined; + /** + *

Sets the Content-Disposition header of the response.

+ * @public + */ + ResponseContentDisposition?: string | undefined; + /** + *

Sets the Content-Encoding header of the response.

+ * @public + */ + ResponseContentEncoding?: string | undefined; + /** + *

Sets the Content-Language header of the response.

+ * @public + */ + ResponseContentLanguage?: string | undefined; + /** + *

Sets the Content-Type header of the response.

+ * @public + */ + ResponseContentType?: string | undefined; + /** + *

Sets the Expires header of the response.

+ * @public + */ + ResponseExpires?: Date | undefined; + /** + *

Version ID used to reference a specific version of the object.

+ * + *

For directory buckets in this API operation, only the null value of the version ID is supported.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

Specifies the algorithm to use when encrypting the object (for example, AES256).

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is + * used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must + * be appropriate for use with the algorithm specified in the + * x-amz-server-side-encryption-customer-algorithm header.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header + * for a message integrity check to ensure that the encryption key was transmitted without error.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

Part number of the object being read. This is a positive integer between 1 and 10,000. Effectively + * performs a 'ranged' HEAD request for the part specified. Useful querying about the size of the part and + * the number of parts in this object.

+ * @public + */ + PartNumber?: number | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

To retrieve the checksum, this parameter must be enabled.

+ *

+ * General purpose buckets - + * If you enable checksum mode and the object is uploaded with a checksum and encrypted with + * an Key Management Service (KMS) key, you must have permission to use the kms:Decrypt action to + * retrieve the checksum.

+ *

+ * Directory buckets - If you enable ChecksumMode + * and the object is encrypted with Amazon Web Services Key Management Service (Amazon Web Services KMS), you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based + * policies and KMS key policies for the KMS key to retrieve the checksum of the object.

+ * @public + */ + ChecksumMode?: ChecksumMode | undefined; +} +/** + * @public + */ +export interface ListBucketAnalyticsConfigurationsOutput { + /** + *

Indicates whether the returned list of analytics configurations is complete. A value of true + * indicates that the list is not complete and the NextContinuationToken will be provided for a subsequent + * request.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

The marker that is used as a starting point for this analytics configuration list response. This + * value is present if it was sent in the request.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

+ * NextContinuationToken is sent when isTruncated is true, which indicates + * that there are more analytics configurations to list. The next request must include this + * NextContinuationToken. The token is obfuscated and is not a usable value.

+ * @public + */ + NextContinuationToken?: string | undefined; + /** + *

The list of analytics configurations for a bucket.

+ * @public + */ + AnalyticsConfigurationList?: AnalyticsConfiguration[] | undefined; +} +/** + * @public + */ +export interface ListBucketAnalyticsConfigurationsRequest { + /** + *

The name of the bucket from which analytics configurations are retrieved.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ContinuationToken that represents a placeholder from where this request should + * begin.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface ListBucketIntelligentTieringConfigurationsOutput { + /** + *

Indicates whether the returned list of analytics configurations is complete. A value of + * true indicates that the list is not complete and the NextContinuationToken + * will be provided for a subsequent request.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

The ContinuationToken that represents a placeholder from where this request should + * begin.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

The marker used to continue this inventory configuration listing. Use the + * NextContinuationToken from this response to continue the listing in a subsequent request. + * The continuation token is an opaque value that Amazon S3 understands.

+ * @public + */ + NextContinuationToken?: string | undefined; + /** + *

The list of S3 Intelligent-Tiering configurations for a bucket.

+ * @public + */ + IntelligentTieringConfigurationList?: IntelligentTieringConfiguration[] | undefined; +} +/** + * @public + */ +export interface ListBucketIntelligentTieringConfigurationsRequest { + /** + *

The name of the Amazon S3 bucket whose configuration you want to modify or retrieve.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ContinuationToken that represents a placeholder from where this request should + * begin.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface ListBucketInventoryConfigurationsOutput { + /** + *

If sent in the request, the marker that is used as a starting point for this inventory configuration + * list response.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

The list of inventory configurations for a bucket.

+ * @public + */ + InventoryConfigurationList?: InventoryConfiguration[] | undefined; + /** + *

Tells whether the returned list of inventory configurations is complete. A value of true indicates + * that the list is not complete and the NextContinuationToken is provided for a subsequent request.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

The marker used to continue this inventory configuration listing. Use the + * NextContinuationToken from this response to continue the listing in a subsequent request. + * The continuation token is an opaque value that Amazon S3 understands.

+ * @public + */ + NextContinuationToken?: string | undefined; +} +/** + * @public + */ +export interface ListBucketInventoryConfigurationsRequest { + /** + *

The name of the bucket containing the inventory configurations to retrieve.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The marker used to continue an inventory configuration listing that has been truncated. Use the + * NextContinuationToken from a previously truncated list response to continue the listing. + * The continuation token is an opaque value that Amazon S3 understands.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface ListBucketMetricsConfigurationsOutput { + /** + *

Indicates whether the returned list of metrics configurations is complete. A value of true indicates + * that the list is not complete and the NextContinuationToken will be provided for a subsequent + * request.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

The marker that is used as a starting point for this metrics configuration list response. This value + * is present if it was sent in the request.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

The marker used to continue a metrics configuration listing that has been truncated. Use the + * NextContinuationToken from a previously truncated list response to continue the listing. + * The continuation token is an opaque value that Amazon S3 understands.

+ * @public + */ + NextContinuationToken?: string | undefined; + /** + *

The list of metrics configurations for a bucket.

+ * @public + */ + MetricsConfigurationList?: MetricsConfiguration[] | undefined; +} +/** + * @public + */ +export interface ListBucketMetricsConfigurationsRequest { + /** + *

The name of the bucket containing the metrics configurations to retrieve.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The marker that is used to continue a metrics configuration listing that has been truncated. Use the + * NextContinuationToken from a previously truncated list response to continue the listing. + * The continuation token is an opaque value that Amazon S3 understands.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

In terms of implementation, a Bucket is a resource.

+ * @public + */ +export interface Bucket { + /** + *

The name of the bucket.

+ * @public + */ + Name?: string | undefined; + /** + *

Date the bucket was created. This date can change when making changes to your bucket, such as + * editing its bucket policy.

+ * @public + */ + CreationDate?: Date | undefined; + /** + *

+ * BucketRegion indicates the Amazon Web Services region where the bucket is located. If the request + * contains at least one valid parameter, it is included in the response.

+ * @public + */ + BucketRegion?: string | undefined; + /** + *

The Amazon Resource Name (ARN) of the S3 bucket. ARNs uniquely identify Amazon Web Services resources across all + * of Amazon Web Services.

+ * + *

This parameter is only supported for S3 directory buckets. For more information, see Using tags with + * directory buckets.

+ *
+ * @public + */ + BucketArn?: string | undefined; +} +/** + * @public + */ +export interface ListBucketsOutput { + /** + *

The list of buckets owned by the requester.

+ * @public + */ + Buckets?: Bucket[] | undefined; + /** + *

The owner of the buckets listed.

+ * @public + */ + Owner?: Owner | undefined; + /** + *

+ * ContinuationToken is included in the response when there are more buckets that can be + * listed with pagination. The next ListBuckets request to Amazon S3 can be continued with this + * ContinuationToken. ContinuationToken is obfuscated and is not a real + * bucket.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

If Prefix was sent with the request, it is included in the response.

+ *

All bucket names in the response begin with the specified bucket name prefix.

+ * @public + */ + Prefix?: string | undefined; +} +/** + * @public + */ +export interface ListBucketsRequest { + /** + *

Maximum number of buckets to be returned in response. When the number is more than the count of + * buckets that are owned by an Amazon Web Services account, return all the buckets in response.

+ * @public + */ + MaxBuckets?: number | undefined; + /** + *

+ * ContinuationToken indicates to Amazon S3 that the list is being continued on this bucket + * with a token. ContinuationToken is obfuscated and is not a real key. You can use this + * ContinuationToken for pagination of the list results.

+ *

Length Constraints: Minimum length of 0. Maximum length of 1024.

+ *

Required: No.

+ * + *

If you specify the bucket-region, prefix, or + * continuation-token query parameters without using max-buckets to set the + * maximum number of buckets returned in the response, Amazon S3 applies a default page size of 10,000 and + * provides a continuation token if there are more buckets.

+ *
+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

Limits the response to bucket names that begin with the specified bucket name prefix.

+ * @public + */ + Prefix?: string | undefined; + /** + *

Limits the response to buckets that are located in the specified Amazon Web Services Region. The Amazon Web Services Region must + * be expressed according to the Amazon Web Services Region code, such as us-west-2 for the US West (Oregon) + * Region. For a list of the valid values for all of the Amazon Web Services Regions, see Regions and Endpoints.

+ * + *

Requests made to a Regional endpoint that is different from the bucket-region + * parameter are not supported. For example, if you want to limit the response to your buckets in Region + * us-west-2, the request must be made to an endpoint in Region + * us-west-2.

+ *
+ * @public + */ + BucketRegion?: string | undefined; +} +/** + * @public + */ +export interface ListDirectoryBucketsOutput { + /** + *

The list of buckets owned by the requester.

+ * @public + */ + Buckets?: Bucket[] | undefined; + /** + *

If ContinuationToken was sent with the request, it is included in the response. You can + * use the returned ContinuationToken for pagination of the list response.

+ * @public + */ + ContinuationToken?: string | undefined; +} +/** + * @public + */ +export interface ListDirectoryBucketsRequest { + /** + *

+ * ContinuationToken indicates to Amazon S3 that the list is being continued on buckets in this + * account with a token. ContinuationToken is obfuscated and is not a real bucket name. You + * can use this ContinuationToken for the pagination of the list results.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

Maximum number of buckets to be returned in response. When the number is more than the count of + * buckets that are owned by an Amazon Web Services account, return all the buckets in response.

+ * @public + */ + MaxDirectoryBuckets?: number | undefined; +} +/** + *

Container for all (if there are any) keys between Prefix and the next occurrence of the string + * specified by a delimiter. CommonPrefixes lists keys that act like subdirectories in the directory + * specified by Prefix. For example, if the prefix is notes/ and the delimiter is a slash (/) as in + * notes/summer/july, the common prefix is notes/summer/.

+ * @public + */ +export interface CommonPrefix { + /** + *

Container for the specified common prefix.

+ * @public + */ + Prefix?: string | undefined; +} +/** + *

Container element that identifies who initiated the multipart upload.

+ * @public + */ +export interface Initiator { + /** + *

If the principal is an Amazon Web Services account, it provides the Canonical User ID. If the principal is an + * IAM User, it provides a user ARN value.

+ * + *

+ * Directory buckets - If the principal is an Amazon Web Services account, + * it provides the Amazon Web Services account ID. If the principal is an IAM User, it provides a user ARN + * value.

+ *
+ * @public + */ + ID?: string | undefined; + /** + *

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + DisplayName?: string | undefined; +} +/** + *

Container for the MultipartUpload for the Amazon S3 object.

+ * @public + */ +export interface MultipartUpload { + /** + *

Upload ID that identifies the multipart upload.

+ * @public + */ + UploadId?: string | undefined; + /** + *

Key of the object for which the multipart upload was initiated.

+ * @public + */ + Key?: string | undefined; + /** + *

Date and time at which the multipart upload was initiated.

+ * @public + */ + Initiated?: Date | undefined; + /** + *

The class of storage used to store the object.

+ * + *

+ * Directory buckets - + * Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

Specifies the owner of the object that is part of the multipart upload.

+ * + *

+ * Directory buckets - The bucket owner is returned as the + * object owner for all the objects.

+ *
+ * @public + */ + Owner?: Owner | undefined; + /** + *

Identifies who initiated the multipart upload.

+ * @public + */ + Initiator?: Initiator | undefined; + /** + *

The algorithm that was used to create a checksum of the object.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The checksum type that is used to calculate the object’s checksum value. For more information, see + * Checking + * object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; +} +/** + * @public + */ +export interface ListMultipartUploadsOutput { + /** + *

The name of the bucket to which the multipart upload was initiated. Does not return the access point ARN or + * access point alias if used.

+ * @public + */ + Bucket?: string | undefined; + /** + *

The key at or after which the listing began.

+ * @public + */ + KeyMarker?: string | undefined; + /** + *

Together with key-marker, specifies the multipart upload after which listing should begin. If + * key-marker is not specified, the upload-id-marker parameter is ignored. Otherwise, any multipart uploads + * for a key equal to the key-marker might be included in the list only if they have an upload ID + * lexicographically greater than the specified upload-id-marker.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + UploadIdMarker?: string | undefined; + /** + *

When a list is truncated, this element specifies the value that should be used for the key-marker + * request parameter in a subsequent request.

+ * @public + */ + NextKeyMarker?: string | undefined; + /** + *

When a prefix is provided in the request, this field contains the specified prefix. The result + * contains only keys starting with the specified prefix.

+ * + *

+ * Directory buckets - For directory buckets, only prefixes that end in a delimiter (/) are supported.

+ *
+ * @public + */ + Prefix?: string | undefined; + /** + *

Contains the delimiter you specified in the request. If you don't specify a delimiter in your + * request, this element is absent from the response.

+ * + *

+ * Directory buckets - For directory buckets, / is the only supported delimiter.

+ *
+ * @public + */ + Delimiter?: string | undefined; + /** + *

When a list is truncated, this element specifies the value that should be used for the + * upload-id-marker request parameter in a subsequent request.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + NextUploadIdMarker?: string | undefined; + /** + *

Maximum number of multipart uploads that could have been included in the response.

+ * @public + */ + MaxUploads?: number | undefined; + /** + *

Indicates whether the returned list of multipart uploads is truncated. A value of true indicates + * that the list was truncated. The list can be truncated if the number of multipart uploads exceeds the + * limit allowed or specified by max uploads.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

Container for elements related to a particular multipart upload. A response can contain zero or more + * Upload elements.

+ * @public + */ + Uploads?: MultipartUpload[] | undefined; + /** + *

If you specify a delimiter in the request, then the result returns each distinct key prefix + * containing the delimiter in a CommonPrefixes element. The distinct key prefixes are + * returned in the Prefix child element.

+ * + *

+ * Directory buckets - For directory buckets, only prefixes that end in a delimiter (/) are supported.

+ *
+ * @public + */ + CommonPrefixes?: CommonPrefix[] | undefined; + /** + *

Encoding type used by Amazon S3 to encode object keys in the response.

+ *

If you specify the encoding-type request parameter, Amazon S3 includes this element in the + * response, and returns encoded key name values in the following response elements:

+ *

+ * Delimiter, KeyMarker, Prefix, NextKeyMarker, + * Key.

+ * @public + */ + EncodingType?: EncodingType | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface ListMultipartUploadsRequest { + /** + *

The name of the bucket to which the multipart upload was initiated.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Character you use to group keys.

+ *

All keys that contain the same string between the prefix, if specified, and the first occurrence of + * the delimiter after the prefix are grouped under a single result element, CommonPrefixes. + * If you don't specify the prefix parameter, then the substring starts at the beginning of the key. The + * keys that are grouped under CommonPrefixes result element are not returned elsewhere in the + * response.

+ *

+ * CommonPrefixes is filtered out from results if it is not lexicographically greater than + * the key-marker.

+ * + *

+ * Directory buckets - For directory buckets, / is the only supported delimiter.

+ *
+ * @public + */ + Delimiter?: string | undefined; + /** + *

Encoding type used by Amazon S3 to encode the object keys in the response. Responses are + * encoded only in UTF-8. An object key can contain any Unicode character. However, the XML 1.0 parser + * can't parse certain characters, such as characters with an ASCII value from 0 to 10. For characters that + * aren't supported in XML 1.0, you can add this parameter to request that Amazon S3 encode the keys in the + * response. For more information about characters to avoid in object key names, see Object key + * naming guidelines.

+ * + *

When using the URL encoding type, non-ASCII characters that are used in an object's key name will + * be percent-encoded according to UTF-8 code values. For example, the object + * test_file(3).png will appear as test_file%283%29.png.

+ *
+ * @public + */ + EncodingType?: EncodingType | undefined; + /** + *

Specifies the multipart upload after which listing should begin.

+ * + *
    + *
  • + *

    + * General purpose buckets - For general purpose buckets, + * key-marker is an object key. Together with upload-id-marker, this + * parameter specifies the multipart upload after which listing should begin.

    + *

    If upload-id-marker is not specified, only the keys lexicographically greater + * than the specified key-marker will be included in the list.

    + *

    If upload-id-marker is specified, any multipart uploads for a key equal to the + * key-marker might also be included, provided those multipart uploads have upload IDs + * lexicographically greater than the specified upload-id-marker.

    + *
  • + *
  • + *

    + * Directory buckets - For directory buckets, + * key-marker is obfuscated and isn't a real object key. The + * upload-id-marker parameter isn't supported by directory buckets. To list the + * additional multipart uploads, you only need to set the value of key-marker to the + * NextKeyMarker value from the previous response.

    + *

    In the ListMultipartUploads response, the multipart uploads aren't sorted + * lexicographically based on the object keys. + * + *

    + *
  • + *
+ *
+ * @public + */ + KeyMarker?: string | undefined; + /** + *

Sets the maximum number of multipart uploads, from 1 to 1,000, to return in the response body. 1,000 + * is the maximum number of uploads that can be returned in a response.

+ * @public + */ + MaxUploads?: number | undefined; + /** + *

Lists in-progress uploads only for those keys that begin with the specified prefix. You can use + * prefixes to separate a bucket into different grouping of keys. (You can think of using + * prefix to make groups in the same way that you'd use a folder in a file system.)

+ * + *

+ * Directory buckets - For directory buckets, only prefixes that end in a delimiter (/) are supported.

+ *
+ * @public + */ + Prefix?: string | undefined; + /** + *

Together with key-marker, specifies the multipart upload after which listing should begin. If + * key-marker is not specified, the upload-id-marker parameter is ignored. Otherwise, any multipart uploads + * for a key equal to the key-marker might be included in the list only if they have an upload ID + * lexicographically greater than the specified upload-id-marker.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + UploadIdMarker?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; +} +/** + *

Specifies the restoration status of an object. Objects in certain storage classes must be restored + * before they can be retrieved. For more information about these storage classes and how to work with + * archived objects, see + * Working with archived objects in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets. Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ +export interface RestoreStatus { + /** + *

Specifies whether the object is currently being restored. If the object restoration is in progress, + * the header returns the value TRUE. For example:

+ *

+ * x-amz-optional-object-attributes: IsRestoreInProgress="true" + *

+ *

If the object restoration has completed, the header returns the value FALSE. For + * example:

+ *

+ * x-amz-optional-object-attributes: IsRestoreInProgress="false", + * RestoreExpiryDate="2012-12-21T00:00:00.000Z" + *

+ *

If the object hasn't been restored, there is no header response.

+ * @public + */ + IsRestoreInProgress?: boolean | undefined; + /** + *

Indicates when the restored copy will expire. This value is populated only if the object has already + * been restored. For example:

+ *

+ * x-amz-optional-object-attributes: IsRestoreInProgress="false", + * RestoreExpiryDate="2012-12-21T00:00:00.000Z" + *

+ * @public + */ + RestoreExpiryDate?: Date | undefined; +} +/** + *

An object consists of data and its descriptive metadata.

+ * @public + */ +export interface _Object { + /** + *

The name that you assign to an object. You use the object key to retrieve the object.

+ * @public + */ + Key?: string | undefined; + /** + *

Creation date of the object.

+ * @public + */ + LastModified?: Date | undefined; + /** + *

The entity tag is a hash of the object. The ETag reflects changes only to the contents of an object, + * not its metadata. The ETag may or may not be an MD5 digest of the object data. Whether or not it is + * depends on how the object was created and how it is encrypted as described below:

+ *
    + *
  • + *

    Objects created by the PUT Object, POST Object, or Copy operation, or through the Amazon Web Services + * Management Console, and are encrypted by SSE-S3 or plaintext, have ETags that are an MD5 digest of + * their object data.

    + *
  • + *
  • + *

    Objects created by the PUT Object, POST Object, or Copy operation, or through the Amazon Web Services + * Management Console, and are encrypted by SSE-C or SSE-KMS, have ETags that are not an MD5 digest of + * their object data.

    + *
  • + *
  • + *

    If an object is created by either the Multipart Upload or Part Copy operation, the ETag is not + * an MD5 digest, regardless of the method of encryption. If an object is larger than 16 MB, the Amazon Web Services + * Management Console will upload or copy that object as a Multipart Upload, and therefore the ETag + * will not be an MD5 digest.

    + *
  • + *
+ * + *

+ * Directory buckets - MD5 is not supported by directory buckets.

+ *
+ * @public + */ + ETag?: string | undefined; + /** + *

The algorithm that was used to create a checksum of the object.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm[] | undefined; + /** + *

The checksum type that is used to calculate the object’s checksum value. For more information, see + * Checking + * object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; + /** + *

Size in bytes of the object

+ * @public + */ + Size?: number | undefined; + /** + *

The class of storage used to store the object.

+ * + *

+ * Directory buckets - + * Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ + StorageClass?: ObjectStorageClass | undefined; + /** + *

The owner of the object

+ * + *

+ * Directory buckets - The bucket owner is returned as the + * object owner.

+ *
+ * @public + */ + Owner?: Owner | undefined; + /** + *

Specifies the restoration status of an object. Objects in certain storage classes must be restored + * before they can be retrieved. For more information about these storage classes and how to work with + * archived objects, see + * Working with archived objects in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets. Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ + RestoreStatus?: RestoreStatus | undefined; +} +/** + * @public + */ +export interface ListObjectsOutput { + /** + *

A flag that indicates whether Amazon S3 returned all of the results that satisfied the search + * criteria.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

Indicates where in the bucket listing begins. Marker is included in the response if it was sent with + * the request.

+ * @public + */ + Marker?: string | undefined; + /** + *

When the response is truncated (the IsTruncated element value in the response is + * true), you can use the key name in this field as the marker parameter in the + * subsequent request to get the next set of objects. Amazon S3 lists objects in alphabetical order.

+ * + *

This element is returned only if you have the delimiter request parameter specified. + * If the response does not include the NextMarker element and it is truncated, you can use + * the value of the last Key element in the response as the marker parameter in + * the subsequent request to get the next set of object keys.

+ *
+ * @public + */ + NextMarker?: string | undefined; + /** + *

Metadata about each object returned.

+ * @public + */ + Contents?: _Object[] | undefined; + /** + *

The bucket name.

+ * @public + */ + Name?: string | undefined; + /** + *

Keys that begin with the indicated prefix.

+ * @public + */ + Prefix?: string | undefined; + /** + *

Causes keys that contain the same string between the prefix and the first occurrence of the + * delimiter to be rolled up into a single result element in the CommonPrefixes collection. + * These rolled-up keys are not returned elsewhere in the response. Each rolled-up result counts as only + * one return against the MaxKeys value.

+ * @public + */ + Delimiter?: string | undefined; + /** + *

The maximum number of keys returned in the response body.

+ * @public + */ + MaxKeys?: number | undefined; + /** + *

All of the keys (up to 1,000) rolled up in a common prefix count as a single return when calculating + * the number of returns.

+ *

A response can contain CommonPrefixes only if you specify a delimiter.

+ *

+ * CommonPrefixes contains all (if there are any) keys between Prefix and the + * next occurrence of the string specified by the delimiter.

+ *

+ * CommonPrefixes lists keys that act like subdirectories in the directory specified by + * Prefix.

+ *

For example, if the prefix is notes/ and the delimiter is a slash (/), as + * in notes/summer/july, the common prefix is notes/summer/. All of the keys that + * roll up into a common prefix count as a single return when calculating the number of returns.

+ * @public + */ + CommonPrefixes?: CommonPrefix[] | undefined; + /** + *

Encoding type used by Amazon S3 to encode the object keys in the response. Responses are + * encoded only in UTF-8. An object key can contain any Unicode character. However, the XML 1.0 parser + * can't parse certain characters, such as characters with an ASCII value from 0 to 10. For characters that + * aren't supported in XML 1.0, you can add this parameter to request that Amazon S3 encode the keys in the + * response. For more information about characters to avoid in object key names, see Object key + * naming guidelines.

+ * + *

When using the URL encoding type, non-ASCII characters that are used in an object's key name will + * be percent-encoded according to UTF-8 code values. For example, the object + * test_file(3).png will appear as test_file%283%29.png.

+ *
+ * @public + */ + EncodingType?: EncodingType | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface ListObjectsRequest { + /** + *

The name of the bucket containing the objects.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

A delimiter is a character that you use to group keys.

+ *

+ * CommonPrefixes is filtered out from results if it is not lexicographically greater than + * the key-marker.

+ * @public + */ + Delimiter?: string | undefined; + /** + *

Encoding type used by Amazon S3 to encode the object keys in the response. Responses are + * encoded only in UTF-8. An object key can contain any Unicode character. However, the XML 1.0 parser + * can't parse certain characters, such as characters with an ASCII value from 0 to 10. For characters that + * aren't supported in XML 1.0, you can add this parameter to request that Amazon S3 encode the keys in the + * response. For more information about characters to avoid in object key names, see Object key + * naming guidelines.

+ * + *

When using the URL encoding type, non-ASCII characters that are used in an object's key name will + * be percent-encoded according to UTF-8 code values. For example, the object + * test_file(3).png will appear as test_file%283%29.png.

+ *
+ * @public + */ + EncodingType?: EncodingType | undefined; + /** + *

Marker is where you want Amazon S3 to start listing from. Amazon S3 starts listing after this specified + * key. Marker can be any key in the bucket.

+ * @public + */ + Marker?: string | undefined; + /** + *

Sets the maximum number of keys returned in the response. By default, the action returns up to 1,000 + * key names. The response might contain fewer keys but will never contain more.

+ * @public + */ + MaxKeys?: number | undefined; + /** + *

Limits the response to keys that begin with the specified prefix.

+ * @public + */ + Prefix?: string | undefined; + /** + *

Confirms that the requester knows that she or he will be charged for the list objects request. + * Bucket owners need not specify this parameter in their requests.

+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Specifies the optional fields that you want returned in the response. Fields that you do not specify + * are not returned.

+ * @public + */ + OptionalObjectAttributes?: OptionalObjectAttributes[] | undefined; +} +/** + * @public + */ +export interface ListObjectsV2Output { + /** + *

Set to false if all of the results were returned. Set to true if more keys + * are available to return. If the number of results exceeds that specified by MaxKeys, all of + * the results might not be returned.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

Metadata about each object returned.

+ * @public + */ + Contents?: _Object[] | undefined; + /** + *

The bucket name.

+ * @public + */ + Name?: string | undefined; + /** + *

Keys that begin with the indicated prefix.

+ * + *

+ * Directory buckets - For directory buckets, only prefixes that end in a delimiter (/) are supported.

+ *
+ * @public + */ + Prefix?: string | undefined; + /** + *

Causes keys that contain the same string between the prefix and the first occurrence of + * the delimiter to be rolled up into a single result element in the CommonPrefixes + * collection. These rolled-up keys are not returned elsewhere in the response. Each rolled-up result + * counts as only one return against the MaxKeys value.

+ * + *

+ * Directory buckets - For directory buckets, / is the only supported delimiter.

+ *
+ * @public + */ + Delimiter?: string | undefined; + /** + *

Sets the maximum number of keys returned in the response. By default, the action returns up to 1,000 + * key names. The response might contain fewer keys but will never contain more.

+ * @public + */ + MaxKeys?: number | undefined; + /** + *

All of the keys (up to 1,000) that share the same prefix are grouped together. When counting the + * total numbers of returns by this API operation, this group of keys is considered as one item.

+ *

A response can contain CommonPrefixes only if you specify a delimiter.

+ *

+ * CommonPrefixes contains all (if there are any) keys between Prefix and the + * next occurrence of the string specified by a delimiter.

+ *

+ * CommonPrefixes lists keys that act like subdirectories in the directory specified by + * Prefix.

+ *

For example, if the prefix is notes/ and the delimiter is a slash (/) as + * in notes/summer/july, the common prefix is notes/summer/. All of the keys that + * roll up into a common prefix count as a single return when calculating the number of returns.

+ * + *
    + *
  • + *

    + * Directory buckets - For directory buckets, only prefixes that end in a delimiter (/) are supported.

    + *
  • + *
  • + *

    + * Directory buckets - When you query + * ListObjectsV2 with a delimiter during in-progress multipart uploads, the + * CommonPrefixes response parameter contains the prefixes that are associated with + * the in-progress multipart uploads. For more information about multipart uploads, see Multipart Upload + * Overview in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ * @public + */ + CommonPrefixes?: CommonPrefix[] | undefined; + /** + *

Encoding type used by Amazon S3 to encode object key names in the XML response.

+ *

If you specify the encoding-type request parameter, Amazon S3 includes this element in the + * response, and returns encoded key name values in the following response elements:

+ *

+ * Delimiter, Prefix, Key, and StartAfter.

+ * @public + */ + EncodingType?: EncodingType | undefined; + /** + *

+ * KeyCount is the number of keys returned with this request. KeyCount will + * always be less than or equal to the MaxKeys field. For example, if you ask for 50 keys, + * your result will include 50 keys or fewer.

+ * @public + */ + KeyCount?: number | undefined; + /** + *

If ContinuationToken was sent with the request, it is included in the response. You + * can use the returned ContinuationToken for pagination of the list response.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

+ * NextContinuationToken is sent when isTruncated is true, which means there + * are more keys in the bucket that can be listed. The next list requests to Amazon S3 can be continued with + * this NextContinuationToken. NextContinuationToken is obfuscated and is not a + * real key

+ * @public + */ + NextContinuationToken?: string | undefined; + /** + *

If StartAfter was sent with the request, it is included in the response.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + StartAfter?: string | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface ListObjectsV2Request { + /** + *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

A delimiter is a character that you use to group keys.

+ *

+ * CommonPrefixes is filtered out from results if it is not lexicographically greater than + * the StartAfter value.

+ * + *
    + *
  • + *

    + * Directory buckets - For directory buckets, / is the only supported delimiter.

    + *
  • + *
  • + *

    + * Directory buckets - When you query + * ListObjectsV2 with a delimiter during in-progress multipart uploads, the + * CommonPrefixes response parameter contains the prefixes that are associated with + * the in-progress multipart uploads. For more information about multipart uploads, see Multipart Upload + * Overview in the Amazon S3 User Guide.

    + *
  • + *
+ *
+ * @public + */ + Delimiter?: string | undefined; + /** + *

Encoding type used by Amazon S3 to encode the object keys in the response. Responses are + * encoded only in UTF-8. An object key can contain any Unicode character. However, the XML 1.0 parser + * can't parse certain characters, such as characters with an ASCII value from 0 to 10. For characters that + * aren't supported in XML 1.0, you can add this parameter to request that Amazon S3 encode the keys in the + * response. For more information about characters to avoid in object key names, see Object key + * naming guidelines.

+ * + *

When using the URL encoding type, non-ASCII characters that are used in an object's key name will + * be percent-encoded according to UTF-8 code values. For example, the object + * test_file(3).png will appear as test_file%283%29.png.

+ *
+ * @public + */ + EncodingType?: EncodingType | undefined; + /** + *

Sets the maximum number of keys returned in the response. By default, the action returns up to 1,000 + * key names. The response might contain fewer keys but will never contain more.

+ * @public + */ + MaxKeys?: number | undefined; + /** + *

Limits the response to keys that begin with the specified prefix.

+ * + *

+ * Directory buckets - For directory buckets, only prefixes that end in a delimiter (/) are supported.

+ *
+ * @public + */ + Prefix?: string | undefined; + /** + *

+ * ContinuationToken indicates to Amazon S3 that the list is being continued on this bucket + * with a token. ContinuationToken is obfuscated and is not a real key. You can use this + * ContinuationToken for pagination of the list results.

+ * @public + */ + ContinuationToken?: string | undefined; + /** + *

The owner field is not present in ListObjectsV2 by default. If you want to return the + * owner field with each key in the result, then set the FetchOwner field to + * true.

+ * + *

+ * Directory buckets - For directory buckets, the bucket + * owner is returned as the object owner for all objects.

+ *
+ * @public + */ + FetchOwner?: boolean | undefined; + /** + *

StartAfter is where you want Amazon S3 to start listing from. Amazon S3 starts listing after this specified + * key. StartAfter can be any key in the bucket.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + StartAfter?: string | undefined; + /** + *

Confirms that the requester knows that she or he will be charged for the list objects request in V2 + * style. Bucket owners need not specify this parameter in their requests.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Specifies the optional fields that you want returned in the response. Fields that you do not specify + * are not returned.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + OptionalObjectAttributes?: OptionalObjectAttributes[] | undefined; +} +/** + *

Information about the delete marker.

+ * @public + */ +export interface DeleteMarkerEntry { + /** + *

The account that created the delete marker.

+ * @public + */ + Owner?: Owner | undefined; + /** + *

The object key.

+ * @public + */ + Key?: string | undefined; + /** + *

Version ID of an object.

+ * @public + */ + VersionId?: string | undefined; + /** + *

Specifies whether the object is (true) or is not (false) the latest version of an object.

+ * @public + */ + IsLatest?: boolean | undefined; + /** + *

Date and time when the object was last modified.

+ * @public + */ + LastModified?: Date | undefined; +} +/** + *

The version of an object.

+ * @public + */ +export interface ObjectVersion { + /** + *

The entity tag is an MD5 hash of that version of the object.

+ * @public + */ + ETag?: string | undefined; + /** + *

The algorithm that was used to create a checksum of the object.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm[] | undefined; + /** + *

The checksum type that is used to calculate the object’s checksum value. For more information, see + * Checking + * object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; + /** + *

Size in bytes of the object.

+ * @public + */ + Size?: number | undefined; + /** + *

The class of storage used to store the object.

+ * @public + */ + StorageClass?: ObjectVersionStorageClass | undefined; + /** + *

The object key.

+ * @public + */ + Key?: string | undefined; + /** + *

Version ID of an object.

+ * @public + */ + VersionId?: string | undefined; + /** + *

Specifies whether the object is (true) or is not (false) the latest version of an object.

+ * @public + */ + IsLatest?: boolean | undefined; + /** + *

Date and time when the object was last modified.

+ * @public + */ + LastModified?: Date | undefined; + /** + *

Specifies the owner of the object.

+ * @public + */ + Owner?: Owner | undefined; + /** + *

Specifies the restoration status of an object. Objects in certain storage classes must be restored + * before they can be retrieved. For more information about these storage classes and how to work with + * archived objects, see + * Working with archived objects in the Amazon S3 User Guide.

+ * @public + */ + RestoreStatus?: RestoreStatus | undefined; +} +/** + * @public + */ +export interface ListObjectVersionsOutput { + /** + *

A flag that indicates whether Amazon S3 returned all of the results that satisfied the search criteria. + * If your results were truncated, you can make a follow-up paginated request by using the + * NextKeyMarker and NextVersionIdMarker response parameters as a starting + * place in another request to return the rest of the results.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

Marks the last key returned in a truncated response.

+ * @public + */ + KeyMarker?: string | undefined; + /** + *

Marks the last version of the key returned in a truncated response.

+ * @public + */ + VersionIdMarker?: string | undefined; + /** + *

When the number of responses exceeds the value of MaxKeys, NextKeyMarker + * specifies the first key not returned that satisfies the search criteria. Use this value for the + * key-marker request parameter in a subsequent request.

+ * @public + */ + NextKeyMarker?: string | undefined; + /** + *

When the number of responses exceeds the value of MaxKeys, + * NextVersionIdMarker specifies the first object version not returned that satisfies the + * search criteria. Use this value for the version-id-marker request parameter in a subsequent + * request.

+ * @public + */ + NextVersionIdMarker?: string | undefined; + /** + *

Container for version information.

+ * @public + */ + Versions?: ObjectVersion[] | undefined; + /** + *

Container for an object that is a delete marker. To learn more about delete markers, see Working with delete + * markers.

+ * @public + */ + DeleteMarkers?: DeleteMarkerEntry[] | undefined; + /** + *

The bucket name.

+ * @public + */ + Name?: string | undefined; + /** + *

Selects objects that start with the value supplied by this parameter.

+ * @public + */ + Prefix?: string | undefined; + /** + *

The delimiter grouping the included keys. A delimiter is a character that you specify to group keys. + * All keys that contain the same string between the prefix and the first occurrence of the delimiter are + * grouped under a single result element in CommonPrefixes. These groups are counted as one + * result against the max-keys limitation. These keys are not returned elsewhere in the + * response.

+ * @public + */ + Delimiter?: string | undefined; + /** + *

Specifies the maximum number of objects to return.

+ * @public + */ + MaxKeys?: number | undefined; + /** + *

All of the keys rolled up into a common prefix count as a single return when calculating the number + * of returns.

+ * @public + */ + CommonPrefixes?: CommonPrefix[] | undefined; + /** + *

Encoding type used by Amazon S3 to encode object key names in the XML response.

+ *

If you specify the encoding-type request parameter, Amazon S3 includes this element in the + * response, and returns encoded key name values in the following response elements:

+ *

+ * KeyMarker, NextKeyMarker, Prefix, Key, and Delimiter.

+ * @public + */ + EncodingType?: EncodingType | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface ListObjectVersionsRequest { + /** + *

The bucket name that contains the objects.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

A delimiter is a character that you specify to group keys. All keys that contain the same string + * between the prefix and the first occurrence of the delimiter are grouped under a single + * result element in CommonPrefixes. These groups are counted as one result against the + * max-keys limitation. These keys are not returned elsewhere in the response.

+ *

+ * CommonPrefixes is filtered out from results if it is not lexicographically greater than + * the key-marker.

+ * @public + */ + Delimiter?: string | undefined; + /** + *

Encoding type used by Amazon S3 to encode the object keys in the response. Responses are + * encoded only in UTF-8. An object key can contain any Unicode character. However, the XML 1.0 parser + * can't parse certain characters, such as characters with an ASCII value from 0 to 10. For characters that + * aren't supported in XML 1.0, you can add this parameter to request that Amazon S3 encode the keys in the + * response. For more information about characters to avoid in object key names, see Object key + * naming guidelines.

+ * + *

When using the URL encoding type, non-ASCII characters that are used in an object's key name will + * be percent-encoded according to UTF-8 code values. For example, the object + * test_file(3).png will appear as test_file%283%29.png.

+ *
+ * @public + */ + EncodingType?: EncodingType | undefined; + /** + *

Specifies the key to start with when listing objects in a bucket.

+ * @public + */ + KeyMarker?: string | undefined; + /** + *

Sets the maximum number of keys returned in the response. By default, the action returns up to 1,000 + * key names. The response might contain fewer keys but will never contain more. If additional keys satisfy + * the search criteria, but were not returned because max-keys was exceeded, the response + * contains true. To return the additional keys, see + * key-marker and version-id-marker.

+ * @public + */ + MaxKeys?: number | undefined; + /** + *

Use this parameter to select only those keys that begin with the specified prefix. You can use + * prefixes to separate a bucket into different groupings of keys. (You can think of using + * prefix to make groups in the same way that you'd use a folder in a file system.) You can + * use prefix with delimiter to roll up numerous objects into a single result + * under CommonPrefixes.

+ * @public + */ + Prefix?: string | undefined; + /** + *

Specifies the object version you want to start listing from.

+ * @public + */ + VersionIdMarker?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

Specifies the optional fields that you want returned in the response. Fields that you do not specify + * are not returned.

+ * @public + */ + OptionalObjectAttributes?: OptionalObjectAttributes[] | undefined; +} +/** + *

Container for elements related to a part.

+ * @public + */ +export interface Part { + /** + *

Part number identifying the part. This is a positive integer between 1 and 10,000.

+ * @public + */ + PartNumber?: number | undefined; + /** + *

Date and time at which the part was uploaded.

+ * @public + */ + LastModified?: Date | undefined; + /** + *

Entity tag returned when the part was uploaded.

+ * @public + */ + ETag?: string | undefined; + /** + *

Size in bytes of the uploaded part data.

+ * @public + */ + Size?: number | undefined; + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the part. This checksum is present if the + * object was uploaded with the CRC32 checksum algorithm. For more information, see Checking object + * integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the part. This checksum is present if the + * object was uploaded with the CRC32C checksum algorithm. For more information, see Checking object + * integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

The Base64 encoded, 64-bit CRC64NVME checksum of the part. This checksum is present if + * the multipart upload request was created with the CRC64NVME checksum algorithm, or if the + * object was uploaded without a checksum (and Amazon S3 added the default checksum, CRC64NVME, to + * the uploaded object). For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 checksum of the part. This checksum is present if the + * object was uploaded with the SHA1 checksum algorithm. For more information, see Checking object + * integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 checksum of the part. This checksum is present if + * the object was uploaded with the SHA256 checksum algorithm. For more information, see + * Checking + * object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; +} +/** + * @public + */ +export interface ListPartsOutput { + /** + *

If the bucket has a lifecycle rule configured with an action to abort incomplete multipart uploads + * and the prefix in the lifecycle rule matches the object name in the request, then the response includes + * this header indicating when the initiated multipart upload will become eligible for abort operation. For + * more information, see Aborting + * Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration.

+ *

The response will also include the x-amz-abort-rule-id header that will provide the ID + * of the lifecycle configuration rule that defines this action.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + AbortDate?: Date | undefined; + /** + *

This header is returned along with the x-amz-abort-date header. It identifies + * applicable lifecycle configuration rule that defines the action to abort incomplete multipart + * uploads.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + AbortRuleId?: string | undefined; + /** + *

The name of the bucket to which the multipart upload was initiated. Does not return the access point ARN or + * access point alias if used.

+ * @public + */ + Bucket?: string | undefined; + /** + *

Object key for which the multipart upload was initiated.

+ * @public + */ + Key?: string | undefined; + /** + *

Upload ID identifying the multipart upload whose parts are being listed.

+ * @public + */ + UploadId?: string | undefined; + /** + *

Specifies the part after which listing should begin. Only parts with higher part numbers will be + * listed.

+ * @public + */ + PartNumberMarker?: string | undefined; + /** + *

When a list is truncated, this element specifies the last part in the list, as well as the value to + * use for the part-number-marker request parameter in a subsequent request.

+ * @public + */ + NextPartNumberMarker?: string | undefined; + /** + *

Maximum number of parts that were allowed in the response.

+ * @public + */ + MaxParts?: number | undefined; + /** + *

Indicates whether the returned list of parts is truncated. A true value indicates that the list was + * truncated. A list can be truncated if the number of parts exceeds the limit returned in the MaxParts + * element.

+ * @public + */ + IsTruncated?: boolean | undefined; + /** + *

Container for elements related to a particular part. A response can contain zero or more + * Part elements.

+ * @public + */ + Parts?: Part[] | undefined; + /** + *

Container element that identifies who initiated the multipart upload. If the initiator is an + * Amazon Web Services account, this element provides the same information as the Owner element. If the + * initiator is an IAM User, this element provides the user ARN.

+ * @public + */ + Initiator?: Initiator | undefined; + /** + *

Container element that identifies the object owner, after the object is created. If multipart upload + * is initiated by an IAM user, this element provides the parent account ID.

+ * + *

+ * Directory buckets - The bucket owner is returned as the + * object owner for all the parts.

+ *
+ * @public + */ + Owner?: Owner | undefined; + /** + *

The class of storage used to store the uploaded object.

+ * + *

+ * Directory buckets - + * Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in Dedicated Local Zones.

+ *
+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; + /** + *

The algorithm that was used to create a checksum of the object.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The checksum type, which determines how part-level checksums are combined to create an object-level + * checksum for multipart objects. You can use this header response to verify that the checksum type that + * is received is the same checksum type that was specified in CreateMultipartUpload request. + * For more information, see Checking object integrity in the Amazon S3 + * User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; +} +/** + * @public + */ +export interface ListPartsRequest { + /** + *

The name of the bucket to which the parts are being uploaded.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Object key for which the multipart upload was initiated.

+ * @public + */ + Key: string | undefined; + /** + *

Sets the maximum number of parts to return.

+ * @public + */ + MaxParts?: number | undefined; + /** + *

Specifies the part after which listing should begin. Only parts with higher part numbers will be + * listed.

+ * @public + */ + PartNumberMarker?: string | undefined; + /** + *

Upload ID identifying the multipart upload whose parts are being listed.

+ * @public + */ + UploadId: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

The server-side encryption (SSE) algorithm used to encrypt the object. This parameter is needed only when the object was created + * using a checksum algorithm. For more information, + * see Protecting data using SSE-C keys in the + * Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

The server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. + * For more information, see + * Protecting data using SSE-C keys in the + * Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

The MD5 server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum + * algorithm. For more information, + * see Protecting data using SSE-C keys in the + * Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; +} +/** + * @public + */ +export interface PutBucketAbacRequest { + /** + *

The name of the general purpose bucket.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The MD5 hash of the PutBucketAbac request body.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm that you want Amazon S3 to use to create the checksum. For more + * information, see Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The Amazon Web Services account ID of the general purpose bucket's owner.

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

The ABAC status of the general purpose bucket. When ABAC is enabled for the general purpose bucket, you can use tags to manage access to the general purpose buckets as well as for cost tracking purposes. When ABAC is disabled for the general purpose buckets, you can only use tags for cost tracking purposes. For more information, see Using tags with S3 general purpose buckets.

+ * @public + */ + AbacStatus: AbacStatus | undefined; +} +/** + * @public + */ +export interface PutBucketAccelerateConfigurationRequest { + /** + *

The name of the bucket for which the accelerate configuration is set.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Container for setting the transfer acceleration state.

+ * @public + */ + AccelerateConfiguration: AccelerateConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; +} +/** + * @public + */ +export interface PutBucketAclRequest { + /** + *

The canned ACL to apply to the bucket.

+ * @public + */ + ACL?: BucketCannedACL | undefined; + /** + *

Contains the elements that set the ACL permissions for an object per grantee.

+ * @public + */ + AccessControlPolicy?: AccessControlPolicy | undefined; + /** + *

The bucket to which to apply the ACL.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the data. This header must be used as a + * message integrity check to verify that the request body was not corrupted in transit. For more + * information, go to RFC 1864. + *

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Allows grantee the read, write, read ACP, and write ACP permissions on the bucket.

+ * @public + */ + GrantFullControl?: string | undefined; + /** + *

Allows grantee to list the objects in the bucket.

+ * @public + */ + GrantRead?: string | undefined; + /** + *

Allows grantee to read the bucket ACL.

+ * @public + */ + GrantReadACP?: string | undefined; + /** + *

Allows grantee to create new objects in the bucket.

+ *

For the bucket and object owners of existing objects, also allows deletions and overwrites of those + * objects.

+ * @public + */ + GrantWrite?: string | undefined; + /** + *

Allows grantee to write the ACL for the applicable bucket.

+ * @public + */ + GrantWriteACP?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutBucketAnalyticsConfigurationRequest { + /** + *

The name of the bucket to which an analytics configuration is stored.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID that identifies the analytics configuration.

+ * @public + */ + Id: string | undefined; + /** + *

The configuration and any analyses for the analytics filter.

+ * @public + */ + AnalyticsConfiguration: AnalyticsConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more information, + * see Enabling Cross-Origin Resource + * Sharing in the Amazon S3 User Guide.

+ * @public + */ +export interface CORSConfiguration { + /** + *

A set of origins and methods (cross-origin access that you want to allow). You can add up to 100 + * rules to the configuration.

+ * @public + */ + CORSRules: CORSRule[] | undefined; +} +/** + * @public + */ +export interface PutBucketCorsRequest { + /** + *

Specifies the bucket impacted by the corsconfiguration.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Describes the cross-origin access configuration for objects in an Amazon S3 bucket. For more information, + * see Enabling Cross-Origin Resource + * Sharing in the Amazon S3 User Guide.

+ * @public + */ + CORSConfiguration: CORSConfiguration | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the data. This header must be used as a + * message integrity check to verify that the request body was not corrupted in transit. For more + * information, go to RFC 1864. + *

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutBucketEncryptionRequest { + /** + *

Specifies default encryption for a bucket using server-side encryption with different key + * options.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the server-side encryption + * configuration.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * + *

For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

+ *
+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Specifies the default server-side-encryption configuration.

+ * @public + */ + ServerSideEncryptionConfiguration: ServerSideEncryptionConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutBucketIntelligentTieringConfigurationRequest { + /** + *

The name of the Amazon S3 bucket whose configuration you want to modify or retrieve.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID used to identify the S3 Intelligent-Tiering configuration.

+ * @public + */ + Id: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Container for S3 Intelligent-Tiering configuration.

+ * @public + */ + IntelligentTieringConfiguration: IntelligentTieringConfiguration | undefined; +} +/** + * @public + */ +export interface PutBucketInventoryConfigurationRequest { + /** + *

The name of the bucket where the inventory configuration will be stored.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID used to identify the inventory configuration.

+ * @public + */ + Id: string | undefined; + /** + *

Specifies the inventory configuration.

+ * @public + */ + InventoryConfiguration: InventoryConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutBucketLifecycleConfigurationOutput { + /** + *

Indicates which default minimum object size behavior is applied to the lifecycle + * configuration.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ *
    + *
  • + *

    + * all_storage_classes_128K - Objects smaller than 128 KB will not transition to + * any storage class by default.

    + *
  • + *
  • + *

    + * varies_by_storage_class - Objects smaller than 128 KB will transition to Glacier + * Flexible Retrieval or Glacier Deep Archive storage classes. By default, all other storage classes + * will prevent transitions smaller than 128 KB.

    + *
  • + *
+ *

To customize the minimum object size for any transition you can add a filter that specifies a custom + * ObjectSizeGreaterThan or ObjectSizeLessThan in the body of your transition + * rule. Custom filters always take precedence over the default transition behavior.

+ * @public + */ + TransitionDefaultMinimumObjectSize?: TransitionDefaultMinimumObjectSize | undefined; +} +/** + *

Specifies the lifecycle configuration for objects in an Amazon S3 bucket. For more information, see + * Object Lifecycle + * Management in the Amazon S3 User Guide.

+ * @public + */ +export interface BucketLifecycleConfiguration { + /** + *

A lifecycle rule for individual objects in an Amazon S3 bucket.

+ * @public + */ + Rules: LifecycleRule[] | undefined; +} +/** + * @public + */ +export interface PutBucketLifecycleConfigurationRequest { + /** + *

The name of the bucket for which to set the configuration.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Container for lifecycle rules. You can add as many as 1,000 rules.

+ * @public + */ + LifecycleConfiguration?: BucketLifecycleConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Indicates which default minimum object size behavior is applied to the lifecycle + * configuration.

+ * + *

This parameter applies to general purpose buckets only. It is not supported for directory bucket + * lifecycle configurations.

+ *
+ *
    + *
  • + *

    + * all_storage_classes_128K - Objects smaller than 128 KB will not transition to + * any storage class by default.

    + *
  • + *
  • + *

    + * varies_by_storage_class - Objects smaller than 128 KB will transition to Glacier + * Flexible Retrieval or Glacier Deep Archive storage classes. By default, all other storage classes + * will prevent transitions smaller than 128 KB.

    + *
  • + *
+ *

To customize the minimum object size for any transition you can add a filter that specifies a custom + * ObjectSizeGreaterThan or ObjectSizeLessThan in the body of your transition + * rule. Custom filters always take precedence over the default transition behavior.

+ * @public + */ + TransitionDefaultMinimumObjectSize?: TransitionDefaultMinimumObjectSize | undefined; +} +/** + *

Container for logging status information.

+ * @public + */ +export interface BucketLoggingStatus { + /** + *

Describes where logs are stored and the prefix that Amazon S3 assigns to all log object keys for a + * bucket. For more information, see PUT Bucket logging in the + * Amazon S3 API Reference.

+ * @public + */ + LoggingEnabled?: LoggingEnabled | undefined; +} +/** + * @public + */ +export interface PutBucketLoggingRequest { + /** + *

The name of the bucket for which to set the logging parameters.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Container for logging status information.

+ * @public + */ + BucketLoggingStatus: BucketLoggingStatus | undefined; + /** + *

The MD5 hash of the PutBucketLogging request body.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutBucketMetricsConfigurationRequest { + /** + *

The name of the bucket for which the metrics configuration is set.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The ID used to identify the metrics configuration. The ID has a 64 character limit and can only + * contain letters, numbers, periods, dashes, and underscores.

+ * @public + */ + Id: string | undefined; + /** + *

Specifies the metrics configuration.

+ * @public + */ + MetricsConfiguration: MetricsConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutBucketNotificationConfigurationRequest { + /** + *

The name of the bucket.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

A container for specifying the notification configuration of the bucket. If this element is empty, + * notifications are turned off for the bucket.

+ * @public + */ + NotificationConfiguration: NotificationConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Skips validation of Amazon SQS, Amazon SNS, and Lambda destinations. + * True or false value.

+ * @public + */ + SkipDestinationValidation?: boolean | undefined; +} +/** + * @public + */ +export interface PutBucketOwnershipControlsRequest { + /** + *

The name of the Amazon S3 bucket whose OwnershipControls you want to set.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The MD5 hash of the OwnershipControls request body.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

The OwnershipControls (BucketOwnerEnforced, BucketOwnerPreferred, or ObjectWriter) that + * you want to apply to this Amazon S3 bucket.

+ * @public + */ + OwnershipControls: OwnershipControls | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This + * header will not provide any additional functionality if you don't use the SDK. When you send this + * header, there must be a corresponding x-amz-checksum-algorithm + * header + * sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; +} +/** + * @public + */ +export interface PutBucketPolicyRequest { + /** + *

The name of the bucket.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region-code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must also follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The MD5 hash of the request body.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum-algorithm + * or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request.

+ *

For the x-amz-checksum-algorithm + * header, replace + * algorithm + * with the supported algorithm from the following list:

+ *
    + *
  • + *

    + * CRC32 + *

    + *
  • + *
  • + *

    + * CRC32C + *

    + *
  • + *
  • + *

    + * CRC64NVME + *

    + *
  • + *
  • + *

    + * SHA1 + *

    + *
  • + *
  • + *

    + * SHA256 + *

    + *
  • + *
+ *

For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If the individual checksum value you provide through x-amz-checksum-algorithm + * doesn't match the checksum algorithm you set through x-amz-sdk-checksum-algorithm, Amazon S3 fails the request with a BadDigest error.

+ * + *

For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

+ *
+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Set this parameter to true to confirm that you want to remove your permissions to change this bucket + * policy in the future.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ConfirmRemoveSelfBucketAccess?: boolean | undefined; + /** + *

The bucket policy as a JSON document.

+ *

For directory buckets, the only IAM action supported in the bucket policy is + * s3express:CreateSession.

+ * @public + */ + Policy: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * + *

For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code + * 501 Not Implemented.

+ *
+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutBucketReplicationRequest { + /** + *

The name of the bucket

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the data. You must use this header as a + * message integrity check to verify that the request body was not corrupted in transit. For more + * information, see RFC 1864.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

A container for replication rules. You can add up to 1,000 rules. The maximum size of a replication + * configuration is 2 MB.

+ * @public + */ + ReplicationConfiguration: ReplicationConfiguration | undefined; + /** + *

A token to allow Object Lock to be enabled for an existing bucket.

+ * @public + */ + Token?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Container for Payer.

+ * @public + */ +export interface RequestPaymentConfiguration { + /** + *

Specifies who pays for the download and request fees.

+ * @public + */ + Payer: Payer | undefined; +} +/** + * @public + */ +export interface PutBucketRequestPaymentRequest { + /** + *

The bucket name.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the data. You must use this header as a + * message integrity check to verify that the request body was not corrupted in transit. For more + * information, see RFC 1864.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Container for Payer.

+ * @public + */ + RequestPaymentConfiguration: RequestPaymentConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Container for TagSet elements.

+ * @public + */ +export interface Tagging { + /** + *

A collection for a set of tags

+ * @public + */ + TagSet: Tag[] | undefined; +} +/** + * @public + */ +export interface PutBucketTaggingRequest { + /** + *

The bucket name.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the data. You must use this header as a + * message integrity check to verify that the request body was not corrupted in transit. For more + * information, see RFC 1864.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Container for the TagSet and Tag elements.

+ * @public + */ + Tagging: Tagging | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Describes the versioning state of an Amazon S3 bucket. For more information, see PUT Bucket + * versioning in the Amazon S3 API Reference.

+ * @public + */ +export interface VersioningConfiguration { + /** + *

Specifies whether MFA delete is enabled in the bucket versioning configuration. This element is only + * returned if the bucket has been configured with MFA delete. If the bucket has never been so configured, + * this element is not returned.

+ * @public + */ + MFADelete?: MFADelete | undefined; + /** + *

The versioning state of the bucket.

+ * @public + */ + Status?: BucketVersioningStatus | undefined; +} +/** + * @public + */ +export interface PutBucketVersioningRequest { + /** + *

The bucket name.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

>The Base64 encoded 128-bit MD5 digest of the data. You must use this header as a + * message integrity check to verify that the request body was not corrupted in transit. For more + * information, see RFC 1864.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. The serial number is the number that uniquely identifies the MFA device. For physical MFA devices, this is the unique serial number that's provided with the device. For virtual MFA devices, the serial number is the device ARN. For more information, see Enabling versioning on buckets and Configuring MFA delete in the Amazon Simple Storage Service User Guide.

+ * @public + */ + MFA?: string | undefined; + /** + *

Container for setting the versioning state.

+ * @public + */ + VersioningConfiguration: VersioningConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Specifies website configuration parameters for an Amazon S3 bucket.

+ * @public + */ +export interface WebsiteConfiguration { + /** + *

The name of the error document for the website.

+ * @public + */ + ErrorDocument?: ErrorDocument | undefined; + /** + *

The name of the index document for the website.

+ * @public + */ + IndexDocument?: IndexDocument | undefined; + /** + *

The redirect behavior for every request to this bucket's website endpoint.

+ * + *

If you specify this property, you can't specify any other property.

+ *
+ * @public + */ + RedirectAllRequestsTo?: RedirectAllRequestsTo | undefined; + /** + *

Rules that define when a redirect is applied and the redirect behavior.

+ * @public + */ + RoutingRules?: RoutingRule[] | undefined; +} +/** + * @public + */ +export interface PutBucketWebsiteRequest { + /** + *

The bucket name.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the data. You must use this header as a + * message integrity check to verify that the request body was not corrupted in transit. For more + * information, see RFC 1864.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the request when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Container for the request.

+ * @public + */ + WebsiteConfiguration: WebsiteConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutObjectOutput { + /** + *

If the expiration is configured for the object (see PutBucketLifecycleConfiguration) in the Amazon S3 User Guide, the response + * includes this header. It includes the expiry-date and rule-id key-value pairs + * that provide information about object expiration. The value of the rule-id is + * URL-encoded.

+ * + *

Object expiration information is not returned in directory buckets and this header returns the + * value "NotImplemented" in all responses for directory buckets.

+ *
+ * @public + */ + Expiration?: string | undefined; + /** + *

Entity tag for the uploaded object.

+ *

+ * General purpose buckets - To ensure that data is not corrupted + * traversing the network, for objects where the ETag is the MD5 digest of the object, you can calculate + * the MD5 while putting an object to Amazon S3 and compare the returned ETag to the calculated MD5 + * value.

+ *

+ * Directory buckets - The ETag for the object in a + * directory bucket isn't the MD5 digest of the object.

+ * @public + */ + ETag?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

The Base64 encoded, 64-bit CRC64NVME checksum of the object. This header is present if + * the object was uploaded with the CRC64NVME checksum algorithm, or if it was uploaded + * without a checksum (and Amazon S3 added the default checksum, CRC64NVME, to the uploaded + * object). For more information about how checksums are calculated with multipart uploads, see Checking object + * integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

This header specifies the checksum type of the object, which determines how part-level checksums are + * combined to create an object-level checksum for multipart objects. For PutObject uploads, + * the checksum type is always FULL_OBJECT. You can use this header as a data integrity check + * to verify that the checksum type that is received is the same checksum that was specified. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumType?: ChecksumType | undefined; + /** + *

The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

Version ID of the object.

+ *

If you enable versioning for a bucket, Amazon S3 automatically generates a unique version ID for the + * object being stored. Amazon S3 returns this ID in the response. When you enable versioning for a bucket, if + * Amazon S3 receives multiple write requests for the same object simultaneously, it stores all of the objects. + * For more information about versioning, see Adding Objects to + * Versioning-Enabled Buckets in the Amazon S3 User Guide. For information about + * returning the versioning state of a bucket, see GetBucketVersioning.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to confirm the encryption algorithm that's used.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to provide the round-trip message integrity verification of the customer-provided + * encryption key.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

If present, indicates the ID of the KMS key that was used for object encryption.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of + * this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. + * This value is stored as object metadata and automatically gets + * passed on to Amazon Web Services KMS for future GetObject + * operations on this object.

+ * @public + */ + SSEKMSEncryptionContext?: string | undefined; + /** + *

Indicates whether the uploaded object uses an S3 Bucket Key for server-side encryption with + * Key Management Service (KMS) keys (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

The size of the object in bytes. This value is only be present if you append to an object.

+ * + *

This functionality is only supported for objects in the Amazon S3 Express One Zone storage class in + * directory buckets.

+ *
+ * @public + */ + Size?: number | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface PutObjectRequest { + /** + *

The canned ACL to apply to the object. For more information, see Canned ACL in the + * Amazon S3 User Guide.

+ *

When adding a new object, you can use headers to grant ACL-based permissions to individual + * Amazon Web Services accounts or to predefined groups defined by Amazon S3. These permissions are then added to the ACL on + * the object. By default, all objects are private. Only the owner has full access control. For more + * information, see Access Control + * List (ACL) Overview and Managing ACLs Using the REST API in the + * Amazon S3 User Guide.

+ *

If the bucket that you're uploading objects to uses the bucket owner enforced setting for S3 Object + * Ownership, ACLs are disabled and no longer affect permissions. Buckets that use this setting only accept + * PUT requests that don't specify an ACL or PUT requests that specify bucket owner full control ACLs, such + * as the bucket-owner-full-control canned ACL or an equivalent form of this ACL expressed in + * the XML format. PUT requests that contain other ACLs (for example, custom grants to certain + * Amazon Web Services accounts) fail and return a 400 error with the error code + * AccessControlListNotSupported. For more information, see Controlling ownership of objects and + * disabling ACLs in the Amazon S3 User Guide.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + ACL?: ObjectCannedACL | undefined; + /** + *

Object data.

+ * @public + */ + Body?: StreamingBlobTypes | undefined; + /** + *

The bucket name to which the PUT action was initiated.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Can be used to specify caching behavior along the request/reply chain. For more information, see + * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.

+ * @public + */ + CacheControl?: string | undefined; + /** + *

Specifies presentational information for the object. For more information, see https://www.rfc-editor.org/rfc/rfc6266#section-4.

+ * @public + */ + ContentDisposition?: string | undefined; + /** + *

Specifies what content encodings have been applied to the object and thus what decoding mechanisms + * must be applied to obtain the media-type referenced by the Content-Type header field. For more + * information, see https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding.

+ * @public + */ + ContentEncoding?: string | undefined; + /** + *

The language the content is in.

+ * @public + */ + ContentLanguage?: string | undefined; + /** + *

Size of the body in bytes. This parameter is useful when the size of the body cannot be determined + * automatically. For more information, see https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length.

+ * @public + */ + ContentLength?: number | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the message (without the headers) according to + * RFC 1864. This header can be used as a message integrity check to verify that the data is the same data + * that was originally sent. Although it is optional, we recommend using the Content-MD5 mechanism as an + * end-to-end integrity check. For more information about REST request authentication, see REST + * Authentication.

+ * + *

The Content-MD5 or x-amz-sdk-checksum-algorithm header is required for + * any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more + * information, see Uploading objects + * to an Object Lock enabled bucket in the Amazon S3 User Guide.

+ *
+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ContentMD5?: string | undefined; + /** + *

A standard MIME type describing the format of the contents. For more information, see https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type.

+ * @public + */ + ContentType?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum-algorithm + * or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request.

+ *

For the x-amz-checksum-algorithm + * header, replace + * algorithm + * with the supported algorithm from the following list:

+ *
    + *
  • + *

    + * CRC32 + *

    + *
  • + *
  • + *

    + * CRC32C + *

    + *
  • + *
  • + *

    + * CRC64NVME + *

    + *
  • + *
  • + *

    + * SHA1 + *

    + *
  • + *
  • + *

    + * SHA256 + *

    + *
  • + *
+ *

For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If the individual checksum value you provide through x-amz-checksum-algorithm + * doesn't match the checksum algorithm you set through x-amz-sdk-checksum-algorithm, Amazon S3 fails the request with a BadDigest error.

+ * + *

The Content-MD5 or x-amz-sdk-checksum-algorithm header is required for + * any request to upload an object with a retention period configured using Amazon S3 Object Lock. For more + * information, see Uploading objects + * to an Object Lock enabled bucket in the Amazon S3 User Guide.

+ *
+ *

For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 32-bit CRC32 checksum of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 32-bit CRC32C checksum of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 64-bit CRC64NVME + * checksum of the object. The CRC64NVME checksum is always a full object checksum. For more + * information, see Checking object integrity in the Amazon S3 + * User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 160-bit SHA1 digest of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 256-bit SHA256 digest of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

The date and time at which the object is no longer cacheable. For more information, see https://www.rfc-editor.org/rfc/rfc7234#section-5.3.

+ * @public + */ + Expires?: Date | undefined; + /** + *

Uploads the object only if the ETag (entity tag) value provided during the WRITE operation matches + * the ETag of the object in S3. If the ETag values do not match, the operation returns a 412 + * Precondition Failed error.

+ *

If a conflicting operation occurs during the upload S3 returns a 409 + * ConditionalRequestConflict response. On a 409 failure you should fetch the object's ETag and + * retry the upload.

+ *

Expects the ETag value as a string.

+ *

For more information about conditional requests, see RFC 7232, or Conditional requests in the + * Amazon S3 User Guide.

+ * @public + */ + IfMatch?: string | undefined; + /** + *

Uploads the object only if the object key name does not already exist in the bucket specified. + * Otherwise, Amazon S3 returns a 412 Precondition Failed error.

+ *

If a conflicting operation occurs during the upload S3 returns a 409 + * ConditionalRequestConflict response. On a 409 failure you should retry the upload.

+ *

Expects the '*' (asterisk) character.

+ *

For more information about conditional requests, see RFC 7232, or Conditional requests in the + * Amazon S3 User Guide.

+ * @public + */ + IfNoneMatch?: string | undefined; + /** + *

Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantFullControl?: string | undefined; + /** + *

Allows grantee to read the object data and its metadata.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantRead?: string | undefined; + /** + *

Allows grantee to read the object ACL.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantReadACP?: string | undefined; + /** + *

Allows grantee to write the ACL for the applicable object.

+ * + *
    + *
  • + *

    This functionality is not supported for directory buckets.

    + *
  • + *
  • + *

    This functionality is not supported for Amazon S3 on Outposts.

    + *
  • + *
+ *
+ * @public + */ + GrantWriteACP?: string | undefined; + /** + *

Object key for which the PUT action was initiated.

+ * @public + */ + Key: string | undefined; + /** + *

Specifies the offset for appending data to existing objects in bytes. The offset must be equal to + * the size of the existing object being appended to. If no object exists, setting this header to 0 will + * create a new object.

+ * + *

This functionality is only supported for objects in the Amazon S3 Express One Zone storage class in + * directory buckets.

+ *
+ * @public + */ + WriteOffsetBytes?: number | undefined; + /** + *

A map of metadata to store with the object in S3.

+ * @public + */ + Metadata?: Record | undefined; + /** + *

The server-side encryption algorithm that was used when you store this object in Amazon S3 or + * Amazon FSx.

+ *
    + *
  • + *

    + * General purpose buckets - You have four mutually exclusive + * options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage + * the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), + * Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with + * server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 + * to encrypt data at rest by using server-side encryption with other key options. For more + * information, see Using Server-Side Encryption in + * the Amazon S3 User Guide.

    + *
  • + *
  • + *

    + * Directory buckets - + * For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your + * CreateSession requests or PUT object requests. Then, new objects + * are automatically encrypted with the desired encryption settings. For more + * information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

    + *

    In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, the encryption request headers must match the encryption settings that are specified in the CreateSession request. + * You can't override the values of the encryption settings (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, and x-amz-server-side-encryption-bucket-key-enabled) that are specified in the CreateSession request. + * You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and + * Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket. + *

    + * + *

    When you use the CLI or the Amazon Web Services SDKs, for CreateSession, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the + * CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. + * So in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), + * the encryption request headers must match the default encryption configuration of the directory bucket. + * + *

    + *
    + *
  • + *
  • + *

    + * S3 access points for Amazon FSx - When accessing data stored in + * Amazon FSx file systems using S3 access points, the only valid server side encryption option is + * aws:fsx. All Amazon FSx file systems have encryption configured by default and are + * encrypted at rest. Data is automatically encrypted before being written to the file system, and + * automatically decrypted as it is read. These processes are handled transparently by Amazon FSx.

    + *
  • + *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

By default, Amazon S3 uses the STANDARD Storage Class to store newly created objects. The STANDARD + * storage class provides high durability and high availability. Depending on performance needs, you can + * specify a different Storage Class. For more information, see Storage Classes in the + * Amazon S3 User Guide.

+ * + *
    + *
  • + *

    Directory buckets only support EXPRESS_ONEZONE (the S3 Express One Zone storage class) in + * Availability Zones and ONEZONE_IA (the S3 One Zone-Infrequent Access storage class) in + * Dedicated Local Zones.

    + *
  • + *
  • + *

    Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.

    + *
  • + *
+ *
+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

If the bucket is configured as a website, redirects requests for this object to another object in + * the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. For + * information about object metadata, see Object Key and Metadata in the Amazon S3 + * User Guide.

+ *

In the following example, the request header sets the redirect to an object (anotherPage.html) in + * the same bucket:

+ *

+ * x-amz-website-redirect-location: /anotherPage.html + *

+ *

In the following example, the request header sets the object redirect to another website:

+ *

+ * x-amz-website-redirect-location: http://www.example.com/ + *

+ *

For more information about website hosting in Amazon S3, see Hosting Websites on Amazon S3 and How to Configure Website Page + * Redirects in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + WebsiteRedirectLocation?: string | undefined; + /** + *

Specifies the algorithm to use when encrypting the object (for example, AES256).

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is + * used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must + * be appropriate for use with the algorithm specified in the + * x-amz-server-side-encryption-customer-algorithm header.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header + * for a message integrity check to ensure that the encryption key was transmitted without error.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same + * account that's issuing the command, you must use the full Key ARN not the Key ID.

+ *

+ * General purpose buckets - If you specify x-amz-server-side-encryption with aws:kms or aws:kms:dsse, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS + * key to use. If you specify + * x-amz-server-side-encryption:aws:kms or + * x-amz-server-side-encryption:aws:kms:dsse, but do not provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key + * (aws/s3) to protect the data.

+ *

+ * Directory buckets - To encrypt data using SSE-KMS, it's recommended to specify the + * x-amz-server-side-encryption header to aws:kms. Then, the x-amz-server-side-encryption-aws-kms-key-id header implicitly uses + * the bucket's default KMS customer managed key ID. If you want to explicitly set the + * x-amz-server-side-encryption-aws-kms-key-id header, it must match the bucket's default customer managed key (using key ID or ARN, not alias). Your SSE-KMS configuration can only support 1 customer managed key per directory bucket's lifetime. + * The Amazon Web Services managed key (aws/s3) isn't supported. + * + * Incorrect key specification results in an HTTP 400 Bad Request error.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of + * this header is a Base64 encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. + * This value is stored as object metadata and automatically gets passed on + * to Amazon Web Services KMS for future GetObject operations on + * this object.

+ *

+ * General purpose buckets - This value must be explicitly added during CopyObject operations if you want an additional encryption context for your object. For more information, see Encryption context in the Amazon S3 User Guide.

+ *

+ * Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

+ * @public + */ + SSEKMSEncryptionContext?: string | undefined; + /** + *

Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with + * server-side encryption using Key Management Service (KMS) keys (SSE-KMS).

+ *

+ * General purpose buckets - Setting this header to + * true causes Amazon S3 to use an S3 Bucket Key for object encryption with + * SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 + * Bucket Key.

+ *

+ * Directory buckets - S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or + * the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For example, + * "Key1=Value1")

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + Tagging?: string | undefined; + /** + *

The Object Lock mode that you want to apply to this object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockMode?: ObjectLockMode | undefined; + /** + *

The date and time when you want this object's Object Lock to expire. Must be formatted as a + * timestamp parameter.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockRetainUntilDate?: Date | undefined; + /** + *

Specifies whether a legal hold will be applied to this object. For more information about S3 Object + * Lock, see Object Lock in + * the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutObjectAclOutput { + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface PutObjectAclRequest { + /** + *

The canned ACL to apply to the object. For more information, see Canned ACL.

+ * @public + */ + ACL?: ObjectCannedACL | undefined; + /** + *

Contains the elements that set the ACL permissions for an object per grantee.

+ * @public + */ + AccessControlPolicy?: AccessControlPolicy | undefined; + /** + *

The bucket name that contains the object to which you want to attach the ACL.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the data. This header must be used as a + * message integrity check to verify that the request body was not corrupted in transit. For more + * information, go to RFC 1864.> + *

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Allows grantee the read, write, read ACP, and write ACP permissions on the bucket.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ * @public + */ + GrantFullControl?: string | undefined; + /** + *

Allows grantee to list the objects in the bucket.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ * @public + */ + GrantRead?: string | undefined; + /** + *

Allows grantee to read the bucket ACL.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ * @public + */ + GrantReadACP?: string | undefined; + /** + *

Allows grantee to create new objects in the bucket.

+ *

For the bucket and object owners of existing objects, also allows deletions and overwrites of those + * objects.

+ * @public + */ + GrantWrite?: string | undefined; + /** + *

Allows grantee to write the ACL for the applicable bucket.

+ *

This functionality is not supported for Amazon S3 on Outposts.

+ * @public + */ + GrantWriteACP?: string | undefined; + /** + *

Key for which the PUT action was initiated.

+ * @public + */ + Key: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

Version ID used to reference a specific version of the object.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + VersionId?: string | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutObjectLegalHoldOutput { + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface PutObjectLegalHoldRequest { + /** + *

The bucket name containing the object that you want to place a legal hold on.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The key name for the object that you want to place a legal hold on.

+ * @public + */ + Key: string | undefined; + /** + *

Container element for the legal hold configuration you want to apply to the specified object.

+ * @public + */ + LegalHold?: ObjectLockLegalHold | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The version ID of the object that you want to place a legal hold on.

+ * @public + */ + VersionId?: string | undefined; + /** + *

The MD5 hash for the request body.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutObjectLockConfigurationOutput { + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface PutObjectLockConfigurationRequest { + /** + *

The bucket whose Object Lock configuration you want to create or replace.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The Object Lock configuration that you want to apply to the specified bucket.

+ * @public + */ + ObjectLockConfiguration?: ObjectLockConfiguration | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

A token to allow Object Lock to be enabled for an existing bucket.

+ * @public + */ + Token?: string | undefined; + /** + *

The MD5 hash for the request body.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutObjectRetentionOutput { + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface PutObjectRetentionRequest { + /** + *

The bucket name that contains the object you want to apply this Object Retention configuration to.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The key name for the object that you want to apply this Object Retention configuration to.

+ * @public + */ + Key: string | undefined; + /** + *

The container element for the Object Retention configuration.

+ * @public + */ + Retention?: ObjectLockRetention | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The version ID for the object that you want to apply this Object Retention configuration to.

+ * @public + */ + VersionId?: string | undefined; + /** + *

Indicates whether this action should bypass Governance-mode restrictions.

+ * @public + */ + BypassGovernanceRetention?: boolean | undefined; + /** + *

The MD5 hash for the request body.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface PutObjectTaggingOutput { + /** + *

The versionId of the object the tag-set was added to.

+ * @public + */ + VersionId?: string | undefined; +} +/** + * @public + */ +export interface PutObjectTaggingRequest { + /** + *

The bucket name containing the object.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Name of the object key.

+ * @public + */ + Key: string | undefined; + /** + *

The versionId of the object that the tag-set will be added to.

+ * @public + */ + VersionId?: string | undefined; + /** + *

The MD5 hash for the request body.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

Container for the TagSet and Tag elements

+ * @public + */ + Tagging: Tagging | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

Confirms that the requester knows that she or he will be charged for the tagging object + * request. Bucket owners need not specify this parameter in their requests.

+ * @public + */ + RequestPayer?: RequestPayer | undefined; +} +/** + * @public + */ +export interface PutPublicAccessBlockRequest { + /** + *

The name of the Amazon S3 bucket whose PublicAccessBlock configuration you want to + * set.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The MD5 hash of the PutPublicAccessBlock request body.

+ *

For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The PublicAccessBlock configuration that you want to apply to this Amazon S3 + * bucket. You can enable the configuration options in any combination. For more information + * about when Amazon S3 considers a bucket or object public, see The Meaning of "Public" in the Amazon S3 User Guide.

+ * @public + */ + PublicAccessBlockConfiguration: PublicAccessBlockConfiguration | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface RenameObjectOutput { +} +/** + * @public + */ +export interface RenameObjectRequest { + /** + *

The bucket name of the directory bucket containing the object.

+ *

You must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not + * supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must + * follow the format bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming restrictions, see + * Directory bucket naming rules in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Key name of the object to rename.

+ * @public + */ + Key: string | undefined; + /** + *

Specifies the source for the rename operation. The value must be URL encoded.

+ * @public + */ + RenameSource: string | undefined; + /** + *

Renames the object only if the ETag (entity tag) value provided during the operation matches the + * ETag of the object in S3. The If-Match header field makes the request method conditional on + * ETags. If the ETag values do not match, the operation returns a 412 Precondition Failed + * error.

+ *

Expects the ETag value as a string.

+ * @public + */ + DestinationIfMatch?: string | undefined; + /** + *

Renames the object only if the destination does not already exist in the specified directory + * bucket. If the object does exist when you send a request with If-None-Match:*, the S3 API + * will return a 412 Precondition Failed error, preventing an overwrite. The + * If-None-Match header prevents overwrites of existing data by validating that there's not + * an object with the same key name already in your directory bucket.

+ *

Expects the * character (asterisk).

+ * @public + */ + DestinationIfNoneMatch?: string | undefined; + /** + *

Renames the object if the destination exists and if it has been modified since the specified + * time.

+ * @public + */ + DestinationIfModifiedSince?: Date | undefined; + /** + *

Renames the object if it hasn't been modified since the specified time.

+ * @public + */ + DestinationIfUnmodifiedSince?: Date | undefined; + /** + *

Renames the object if the source exists and if its entity tag (ETag) matches the specified ETag. + *

+ * @public + */ + SourceIfMatch?: string | undefined; + /** + *

Renames the object if the source exists and if its entity tag (ETag) is different than the specified + * ETag. If an asterisk (*) character is provided, the operation will fail and return a + * 412 Precondition Failed error.

+ * @public + */ + SourceIfNoneMatch?: string | undefined; + /** + *

Renames the object if the source exists and if it has been modified since the specified time.

+ * @public + */ + SourceIfModifiedSince?: Date | undefined; + /** + *

Renames the object if the source exists and hasn't been modified since the specified time.

+ * @public + */ + SourceIfUnmodifiedSince?: Date | undefined; + /** + *

A unique string with a max of 64 ASCII characters in the ASCII range of 33 - 126.

+ * + *

+ * RenameObject supports idempotency using a client token. To make an idempotent API request + * using RenameObject, specify a client token in the request. You should not reuse the same + * client token for other API requests. If you retry a request that completed successfully using the same + * client token and the same parameters, the retry succeeds without performing any further actions. If + * you retry a successful request using the same client token, but one or more of the parameters are + * different, the retry fails and an IdempotentParameterMismatch error is returned.

+ *
+ * @public + */ + ClientToken?: string | undefined; +} +/** + * @public + */ +export interface RestoreObjectOutput { + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; + /** + *

Indicates the path in the provided S3 output location where Select results will be restored + * to.

+ * @public + */ + RestoreOutputPath?: string | undefined; +} +/** + *

Container for S3 Glacier job parameters.

+ * @public + */ +export interface GlacierJobParameters { + /** + *

Retrieval tier at which the restore will be processed.

+ * @public + */ + Tier: Tier | undefined; +} +/** + *

Contains the type of server-side encryption used.

+ * @public + */ +export interface Encryption { + /** + *

The server-side encryption algorithm used when storing job results in Amazon S3 (for example, AES256, + * aws:kms).

+ * @public + */ + EncryptionType: ServerSideEncryption | undefined; + /** + *

If the encryption type is aws:kms, this optional value specifies the ID of the + * symmetric encryption customer managed key to use for encryption of job results. Amazon S3 only supports symmetric + * encryption KMS keys. For more information, see Asymmetric keys in KMS in the + * Amazon Web Services Key Management Service Developer Guide.

+ * @public + */ + KMSKeyId?: string | undefined; + /** + *

If the encryption type is aws:kms, this optional value can be used to specify the + * encryption context for the restore results.

+ * @public + */ + KMSContext?: string | undefined; +} +/** + *

A metadata key-value pair to store with an object.

+ * @public + */ +export interface MetadataEntry { + /** + *

Name of the object.

+ * @public + */ + Name?: string | undefined; + /** + *

Value of the object.

+ * @public + */ + Value?: string | undefined; +} +/** + *

Describes an Amazon S3 location that will receive the results of the restore request.

+ * @public + */ +export interface S3Location { + /** + *

The name of the bucket where the restore results will be placed.

+ * @public + */ + BucketName: string | undefined; + /** + *

The prefix that is prepended to the restore results for this request.

+ * @public + */ + Prefix: string | undefined; + /** + *

Contains the type of server-side encryption used.

+ * @public + */ + Encryption?: Encryption | undefined; + /** + *

The canned ACL to apply to the restore results.

+ * @public + */ + CannedACL?: ObjectCannedACL | undefined; + /** + *

A list of grants that control access to the staged results.

+ * @public + */ + AccessControlList?: Grant[] | undefined; + /** + *

The tag-set that is applied to the restore results.

+ * @public + */ + Tagging?: Tagging | undefined; + /** + *

A list of metadata to store with the restore results in S3.

+ * @public + */ + UserMetadata?: MetadataEntry[] | undefined; + /** + *

The class of storage used to store the restore results.

+ * @public + */ + StorageClass?: StorageClass | undefined; +} +/** + *

Describes the location where the restore job's output is stored.

+ * @public + */ +export interface OutputLocation { + /** + *

Describes an S3 location that will receive the results of the restore request.

+ * @public + */ + S3?: S3Location | undefined; +} +/** + *

Describes how an uncompressed comma-separated values (CSV)-formatted input object is + * formatted.

+ * @public + */ +export interface CSVInput { + /** + *

Describes the first line of input. Valid values are:

+ *
    + *
  • + *

    + * NONE: First line is not a header.

    + *
  • + *
  • + *

    + * IGNORE: First line is a header, but you can't use the header values to indicate the + * column in an expression. You can use column position (such as _1, _2, …) to indicate the column + * (SELECT s._1 FROM OBJECT s).

    + *
  • + *
  • + *

    + * Use: First line is a header, and you can use the header value to identify a column + * in an expression (SELECT "name" FROM OBJECT).

    + *
  • + *
+ * @public + */ + FileHeaderInfo?: FileHeaderInfo | undefined; + /** + *

A single character used to indicate that a row should be ignored when the character is present at + * the start of that row. You can specify any character to indicate a comment line. The default character + * is #.

+ *

Default: # + *

+ * @public + */ + Comments?: string | undefined; + /** + *

A single character used for escaping the quotation mark character inside an already escaped value. + * For example, the value """ a , b """ is parsed as " a , b ".

+ * @public + */ + QuoteEscapeCharacter?: string | undefined; + /** + *

A single character used to separate individual records in the input. Instead of the default value, + * you can specify an arbitrary delimiter.

+ * @public + */ + RecordDelimiter?: string | undefined; + /** + *

A single character used to separate individual fields in a record. You can specify an arbitrary + * delimiter.

+ * @public + */ + FieldDelimiter?: string | undefined; + /** + *

A single character used for escaping when the field delimiter is part of the value. For example, if + * the value is a, b, Amazon S3 wraps this field value in quotation marks, as follows: " a , + * b ".

+ *

Type: String

+ *

Default: " + *

+ *

Ancestors: CSV + *

+ * @public + */ + QuoteCharacter?: string | undefined; + /** + *

Specifies that CSV field values may contain quoted record delimiters and such records should be + * allowed. Default value is FALSE. Setting this value to TRUE may lower performance.

+ * @public + */ + AllowQuotedRecordDelimiter?: boolean | undefined; +} +/** + *

Specifies JSON as object's input serialization format.

+ * @public + */ +export interface JSONInput { + /** + *

The type of JSON. Valid values: Document, Lines.

+ * @public + */ + Type?: JSONType | undefined; +} +/** + *

Container for Parquet.

+ * @public + */ +export interface ParquetInput { +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/models/models_1.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/models_1.d.ts new file mode 100644 index 0000000..5fba01e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/models/models_1.d.ts @@ -0,0 +1,1875 @@ +import type { StreamingBlobTypes } from "@smithy/types"; +import type { ChecksumAlgorithm, CompressionType, ExpressionType, InventoryConfigurationState, ObjectLockLegalHoldStatus, ObjectLockMode, QuoteFields, ReplicationStatus, RequestCharged, RequestPayer, RestoreRequestType, ServerSideEncryption, StorageClass, Tier } from "./enums"; +import type { CSVInput, GlacierJobParameters, JSONInput, MetadataTableEncryptionConfiguration, OutputLocation, ParquetInput, RecordExpiration } from "./models_0"; +/** + *

Describes the serialization format of the object.

+ * @public + */ +export interface InputSerialization { + /** + *

Describes the serialization of a CSV-encoded object.

+ * @public + */ + CSV?: CSVInput | undefined; + /** + *

Specifies object's compression format. Valid values: NONE, GZIP, BZIP2. Default Value: NONE.

+ * @public + */ + CompressionType?: CompressionType | undefined; + /** + *

Specifies JSON as object's input serialization format.

+ * @public + */ + JSON?: JSONInput | undefined; + /** + *

Specifies Parquet as object's input serialization format.

+ * @public + */ + Parquet?: ParquetInput | undefined; +} +/** + *

Describes how uncompressed comma-separated values (CSV)-formatted results are formatted.

+ * @public + */ +export interface CSVOutput { + /** + *

Indicates whether to use quotation marks around output fields.

+ *
    + *
  • + *

    + * ALWAYS: Always use quotation marks for output fields.

    + *
  • + *
  • + *

    + * ASNEEDED: Use quotation marks for output fields when needed.

    + *
  • + *
+ * @public + */ + QuoteFields?: QuoteFields | undefined; + /** + *

The single character used for escaping the quote character inside an already escaped value.

+ * @public + */ + QuoteEscapeCharacter?: string | undefined; + /** + *

A single character used to separate individual records in the output. Instead of the default value, + * you can specify an arbitrary delimiter.

+ * @public + */ + RecordDelimiter?: string | undefined; + /** + *

The value used to separate individual fields in a record. You can specify an arbitrary + * delimiter.

+ * @public + */ + FieldDelimiter?: string | undefined; + /** + *

A single character used for escaping when the field delimiter is part of the value. For example, if + * the value is a, b, Amazon S3 wraps this field value in quotation marks, as follows: " a , + * b ".

+ * @public + */ + QuoteCharacter?: string | undefined; +} +/** + *

Specifies JSON as request's output serialization format.

+ * @public + */ +export interface JSONOutput { + /** + *

The value used to separate individual records in the output. If no value is specified, Amazon S3 uses a + * newline character ('\n').

+ * @public + */ + RecordDelimiter?: string | undefined; +} +/** + *

Describes how results of the Select job are serialized.

+ * @public + */ +export interface OutputSerialization { + /** + *

Describes the serialization of CSV-encoded Select results.

+ * @public + */ + CSV?: CSVOutput | undefined; + /** + *

Specifies JSON as request's output serialization format.

+ * @public + */ + JSON?: JSONOutput | undefined; +} +/** + * + *

Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can + * continue to use the feature as usual. Learn more + *

+ *
+ *

Describes the parameters for Select job types.

+ *

Learn How to + * optimize querying your data in Amazon S3 using Amazon Athena, S3 Object Lambda, or client-side + * filtering.

+ * @public + */ +export interface SelectParameters { + /** + *

Describes the serialization format of the object.

+ * @public + */ + InputSerialization: InputSerialization | undefined; + /** + *

The type of the provided expression (for example, SQL).

+ * @public + */ + ExpressionType: ExpressionType | undefined; + /** + * + *

Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can + * continue to use the feature as usual. Learn more + *

+ *
+ *

The expression that is used to query the object.

+ * @public + */ + Expression: string | undefined; + /** + *

Describes how the results of the Select job are serialized.

+ * @public + */ + OutputSerialization: OutputSerialization | undefined; +} +/** + *

Container for restore job parameters.

+ * @public + */ +export interface RestoreRequest { + /** + *

Lifetime of the active copy in days. Do not use with restores that specify + * OutputLocation.

+ *

The Days element is required for regular restores, and must not be provided for select + * requests.

+ * @public + */ + Days?: number | undefined; + /** + *

S3 Glacier related parameters pertaining to this job. Do not use with restores that specify + * OutputLocation.

+ * @public + */ + GlacierJobParameters?: GlacierJobParameters | undefined; + /** + * + *

Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can + * continue to use the feature as usual. Learn more + *

+ *
+ *

Type of restore request.

+ * @public + */ + Type?: RestoreRequestType | undefined; + /** + *

Retrieval tier at which the restore will be processed.

+ * @public + */ + Tier?: Tier | undefined; + /** + *

The optional description for the job.

+ * @public + */ + Description?: string | undefined; + /** + * + *

Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 Select can + * continue to use the feature as usual. Learn more + *

+ *
+ *

Describes the parameters for Select job types.

+ * @public + */ + SelectParameters?: SelectParameters | undefined; + /** + *

Describes the location where the restore job's output is stored.

+ * @public + */ + OutputLocation?: OutputLocation | undefined; +} +/** + * @public + */ +export interface RestoreObjectRequest { + /** + *

The bucket name containing the object to restore.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Object key for which the action was initiated.

+ * @public + */ + Key: string | undefined; + /** + *

VersionId used to reference a specific version of the object.

+ * @public + */ + VersionId?: string | undefined; + /** + *

Container for restore job parameters.

+ * @public + */ + RestoreRequest?: RestoreRequest | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

+ * @public + */ +export interface ContinuationEvent { +} +/** + *

A message that indicates the request is complete and no more messages will be sent. You should not + * assume that the request is complete until the client receives an EndEvent.

+ * @public + */ +export interface EndEvent { +} +/** + *

This data type contains information about progress of an operation.

+ * @public + */ +export interface Progress { + /** + *

The current number of object bytes scanned.

+ * @public + */ + BytesScanned?: number | undefined; + /** + *

The current number of uncompressed object bytes processed.

+ * @public + */ + BytesProcessed?: number | undefined; + /** + *

The current number of bytes of records payload data returned.

+ * @public + */ + BytesReturned?: number | undefined; +} +/** + *

This data type contains information about the progress event of an operation.

+ * @public + */ +export interface ProgressEvent { + /** + *

The Progress event details.

+ * @public + */ + Details?: Progress | undefined; +} +/** + *

The container for the records event.

+ * @public + */ +export interface RecordsEvent { + /** + *

The byte array of partial, one or more result records. S3 Select doesn't guarantee that a record + * will be self-contained in one record frame. To ensure continuous streaming of data, S3 Select might + * split the same record across multiple record frames instead of aggregating the results in memory. Some + * S3 clients (for example, the SDK for Java) handle this behavior by creating a + * ByteStream out of the response by default. Other clients might not handle this behavior + * by default. In those cases, you must aggregate the results on the client side and parse the + * response.

+ * @public + */ + Payload?: Uint8Array | undefined; +} +/** + *

Container for the stats details.

+ * @public + */ +export interface Stats { + /** + *

The total number of object bytes scanned.

+ * @public + */ + BytesScanned?: number | undefined; + /** + *

The total number of uncompressed object bytes processed.

+ * @public + */ + BytesProcessed?: number | undefined; + /** + *

The total number of bytes of records payload data returned.

+ * @public + */ + BytesReturned?: number | undefined; +} +/** + *

Container for the Stats Event.

+ * @public + */ +export interface StatsEvent { + /** + *

The Stats event details.

+ * @public + */ + Details?: Stats | undefined; +} +/** + *

The container for selecting objects from a content event stream.

+ * @public + */ +export type SelectObjectContentEventStream = SelectObjectContentEventStream.ContMember | SelectObjectContentEventStream.EndMember | SelectObjectContentEventStream.ProgressMember | SelectObjectContentEventStream.RecordsMember | SelectObjectContentEventStream.StatsMember | SelectObjectContentEventStream.$UnknownMember; +/** + * @public + */ +export declare namespace SelectObjectContentEventStream { + /** + *

The Records Event.

+ * @public + */ + interface RecordsMember { + Records: RecordsEvent; + Stats?: never; + Progress?: never; + Cont?: never; + End?: never; + $unknown?: never; + } + /** + *

The Stats Event.

+ * @public + */ + interface StatsMember { + Records?: never; + Stats: StatsEvent; + Progress?: never; + Cont?: never; + End?: never; + $unknown?: never; + } + /** + *

The Progress Event.

+ * @public + */ + interface ProgressMember { + Records?: never; + Stats?: never; + Progress: ProgressEvent; + Cont?: never; + End?: never; + $unknown?: never; + } + /** + *

The Continuation Event.

+ * @public + */ + interface ContMember { + Records?: never; + Stats?: never; + Progress?: never; + Cont: ContinuationEvent; + End?: never; + $unknown?: never; + } + /** + *

The End Event.

+ * @public + */ + interface EndMember { + Records?: never; + Stats?: never; + Progress?: never; + Cont?: never; + End: EndEvent; + $unknown?: never; + } + /** + * @public + */ + interface $UnknownMember { + Records?: never; + Stats?: never; + Progress?: never; + Cont?: never; + End?: never; + $unknown: [string, any]; + } + /** + * @deprecated unused in schema-serde mode. + * + */ + interface Visitor { + Records: (value: RecordsEvent) => T; + Stats: (value: StatsEvent) => T; + Progress: (value: ProgressEvent) => T; + Cont: (value: ContinuationEvent) => T; + End: (value: EndEvent) => T; + _: (name: string, value: any) => T; + } +} +/** + * @public + */ +export interface SelectObjectContentOutput { + /** + *

The array of results.

+ * @public + */ + Payload?: AsyncIterable | undefined; +} +/** + *

Container for specifying if periodic QueryProgress messages should be sent.

+ * @public + */ +export interface RequestProgress { + /** + *

Specifies whether periodic QueryProgress frames should be sent. Valid values: TRUE, FALSE. Default + * value: FALSE.

+ * @public + */ + Enabled?: boolean | undefined; +} +/** + *

Specifies the byte range of the object to get the records from. A record is processed when its first + * byte is contained by the range. This parameter is optional, but when specified, it must not be empty. + * See RFC 2616, Section 14.35.1 about how to specify the start and end of the range.

+ * @public + */ +export interface ScanRange { + /** + *

Specifies the start of the byte range. This parameter is optional. Valid values: non-negative + * integers. The default value is 0. If only start is supplied, it means scan from that point + * to the end of the file. For example, + * 50 means scan from byte 50 + * until the end of the file.

+ * @public + */ + Start?: number | undefined; + /** + *

Specifies the end of the byte range. This parameter is optional. Valid values: non-negative + * integers. The default value is one less than the size of the object being queried. If only the End + * parameter is supplied, it is interpreted to mean scan the last N bytes of the file. For example, + * 50 means scan the last 50 + * bytes.

+ * @public + */ + End?: number | undefined; +} +/** + * + *

Learn Amazon S3 Select is no longer available to new customers. Existing customers of Amazon S3 + * Select can continue to use the feature as usual. Learn more + *

+ *
+ *

Request to filter the contents of an Amazon S3 object based on a simple Structured Query Language (SQL) + * statement. In the request, along with the SQL expression, you must specify a data serialization format + * (JSON or CSV) of the object. Amazon S3 uses this to parse object data into records. It returns only records + * that match the specified SQL expression. You must also specify the data serialization format for the + * response. For more information, see S3Select API Documentation.

+ * @public + */ +export interface SelectObjectContentRequest { + /** + *

The S3 bucket.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

The object key.

+ * @public + */ + Key: string | undefined; + /** + *

The server-side encryption (SSE) algorithm used to encrypt the object. This parameter is needed only when the object was created + * using a checksum algorithm. For more information, + * see Protecting data using SSE-C keys in the + * Amazon S3 User Guide.

+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

The server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum algorithm. + * For more information, see + * Protecting data using SSE-C keys in the + * Amazon S3 User Guide.

+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

The MD5 server-side encryption (SSE) customer managed key. This parameter is needed only when the object was created using a checksum + * algorithm. For more information, + * see Protecting data using SSE-C keys in the + * Amazon S3 User Guide.

+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

The expression that is used to query the object.

+ * @public + */ + Expression: string | undefined; + /** + *

The type of the provided expression (for example, SQL).

+ * @public + */ + ExpressionType: ExpressionType | undefined; + /** + *

Specifies if periodic request progress information should be enabled.

+ * @public + */ + RequestProgress?: RequestProgress | undefined; + /** + *

Describes the format of the data in the object that is being queried.

+ * @public + */ + InputSerialization: InputSerialization | undefined; + /** + *

Describes the format of the data that you want Amazon S3 to return in response.

+ * @public + */ + OutputSerialization: OutputSerialization | undefined; + /** + *

Specifies the byte range of the object to get the records from. A record is processed when its first + * byte is contained by the range. This parameter is optional, but when specified, it must not be empty. + * See RFC 2616, Section 14.35.1 about how to specify the start and end of the range.

+ *

+ * ScanRangemay be used in the following ways:

+ *
    + *
  • + *

    + * 50100 + * - process only the records starting between the bytes 50 and 100 (inclusive, counting from + * zero)

    + *
  • + *
  • + *

    + * 50 - process only the + * records starting after the byte 50

    + *
  • + *
  • + *

    + * 50 - process only the + * records within the last 50 bytes of the file.

    + *
  • + *
+ * @public + */ + ScanRange?: ScanRange | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

+ * The specified updates to the S3 Metadata inventory table configuration. + *

+ * @public + */ +export interface InventoryTableConfigurationUpdates { + /** + *

+ * The configuration state of the inventory table, indicating whether the inventory table is enabled + * or disabled. + *

+ * @public + */ + ConfigurationState: InventoryConfigurationState | undefined; + /** + *

+ * The encryption configuration for the inventory table. + *

+ * @public + */ + EncryptionConfiguration?: MetadataTableEncryptionConfiguration | undefined; +} +/** + * @public + */ +export interface UpdateBucketMetadataInventoryTableConfigurationRequest { + /** + *

+ * The general purpose bucket that corresponds to the metadata configuration that you want to + * enable or disable an inventory table for. + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

+ * The Content-MD5 header for the inventory table configuration. + *

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

+ * The checksum algorithm to use with your inventory table configuration. + *

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

+ * The contents of your inventory table configuration. + *

+ * @public + */ + InventoryTableConfiguration: InventoryTableConfigurationUpdates | undefined; + /** + *

+ * The expected owner of the general purpose bucket that corresponds to the metadata table + * configuration that you want to enable or disable an inventory table for. + *

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

+ * The specified updates to the S3 Metadata journal table configuration. + *

+ * @public + */ +export interface JournalTableConfigurationUpdates { + /** + *

+ * The journal table record expiration settings for the journal table. + *

+ * @public + */ + RecordExpiration: RecordExpiration | undefined; +} +/** + * @public + */ +export interface UpdateBucketMetadataJournalTableConfigurationRequest { + /** + *

+ * The general purpose bucket that corresponds to the metadata configuration that you want to + * enable or disable journal table record expiration for. + *

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

+ * The Content-MD5 header for the journal table configuration. + *

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

+ * The checksum algorithm to use with your journal table configuration. + *

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

+ * The contents of your journal table configuration. + *

+ * @public + */ + JournalTableConfiguration: JournalTableConfigurationUpdates | undefined; + /** + *

+ * The expected owner of the general purpose bucket that corresponds to the metadata table + * configuration that you want to enable or disable journal table record expiration for. + *

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

+ * If SSEKMS is specified for ObjectEncryption, this data type specifies + * the Amazon Web Services KMS key Amazon Resource Name (ARN) to use and whether to use an S3 Bucket Key for + * server-side encryption using Key Management Service (KMS) keys (SSE-KMS). + *

+ * @public + */ +export interface SSEKMSEncryption { + /** + *

+ * Specifies the Amazon Web Services KMS key Amazon Resource Name (ARN) to use for the updated server-side encryption + * type. Required if ObjectEncryption specifies SSEKMS. + *

+ * + *

You must specify the full Amazon Web Services KMS key ARN. The KMS key ID and KMS key alias aren't + * supported.

+ *
+ *

Pattern: (arn:aws[-a-z0-9]*:kms:[-a-z0-9]*:[0-9]\{12\}:key/.+)

+ * @public + */ + KMSKeyArn: string | undefined; + /** + *

+ * Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption + * using Key Management Service (KMS) keys (SSE-KMS). If this value isn't specified, it defaults to false. + * Setting this value to true causes Amazon S3 to use an S3 Bucket Key for object encryption with + * SSE-KMS. For more information, see + * + * Using Amazon S3 Bucket Keys in the Amazon S3 User Guide. + *

+ *

Valid Values: true | false + *

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; +} +/** + *

+ * The updated server-side encryption type for this object. The UpdateObjectEncryption + * operation supports the SSE-S3 and SSE-KMS encryption types. + *

+ *

Valid Values: SSES3 | SSEKMS + *

+ * @public + */ +export type ObjectEncryption = ObjectEncryption.SSEKMSMember | ObjectEncryption.$UnknownMember; +/** + * @public + */ +export declare namespace ObjectEncryption { + /** + *

+ * Specifies to update the object encryption type to server-side encryption with Key Management Service (KMS) keys + * (SSE-KMS). + *

+ * @public + */ + interface SSEKMSMember { + SSEKMS: SSEKMSEncryption; + $unknown?: never; + } + /** + * @public + */ + interface $UnknownMember { + SSEKMS?: never; + $unknown: [string, any]; + } + /** + * @deprecated unused in schema-serde mode. + * + */ + interface Visitor { + SSEKMS: (value: SSEKMSEncryption) => T; + _: (name: string, value: any) => T; + } +} +/** + * @public + */ +export interface UpdateObjectEncryptionRequest { + /** + *

+ * The name of the general purpose bucket that contains the specified object key name. + *

+ *

When you use this operation with an access point attached to a general purpose bucket, you + * must either provide the alias of the access point in place of the bucket name or you must specify + * the access point Amazon Resource Name (ARN). When using the access point ARN, you must direct + * requests to the access point hostname. The access point hostname takes the form + * + * AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. + * When using this operation with an access point through the Amazon Web Services SDKs, you provide the access point + * ARN in place of the bucket name. For more information about access point ARNs, see + * + * Referencing access points in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

+ * The key name of the object that you want to update the server-side encryption type for. + *

+ * @public + */ + Key: string | undefined; + /** + *

+ * The version ID of the object that you want to update the server-side encryption type for. + *

+ * @public + */ + VersionId?: string | undefined; + /** + *

+ * The updated server-side encryption type for this object. The UpdateObjectEncryption + * operation supports the SSE-S3 and SSE-KMS encryption types. + *

+ *

Valid Values: SSES3 | SSEKMS + *

+ * @public + */ + ObjectEncryption: ObjectEncryption | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

+ * The account ID of the expected bucket owner. If the account ID that you provide doesn't match the + * actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden + * (access denied). + *

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

+ * The MD5 hash for the request body. For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically. + *

+ * @public + */ + ContentMD5?: string | undefined; + /** + *

+ * Indicates the algorithm used to create the checksum for the object when you use an Amazon Web Services SDK. This header + * doesn't provide any additional functionality if you don't use the SDK. When you send this header, + * there must be a corresponding x-amz-checksum or x-amz-trailer header sent. + * Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see + * Checking object integrity in the Amazon S3 User Guide. + *

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; +} +/** + * @public + */ +export interface UpdateObjectEncryptionResponse { + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface UploadPartOutput { + /** + *

The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

Entity tag for the uploaded object.

+ * @public + */ + ETag?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32 checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

The Base64 encoded, 32-bit CRC32C checksum of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 64-bit CRC64NVME + * checksum of the part. For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

The Base64 encoded, 160-bit SHA1 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use the API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

The Base64 encoded, 256-bit SHA256 digest of the object. This checksum is only present if the checksum was uploaded + * with the object. When you use an API operation on an object that was uploaded using multipart uploads, this value may not be a direct checksum value of the full object. Instead, it's a calculation based on the checksum values of each individual part. For more information about how checksums are calculated + * with multipart uploads, see + * Checking object integrity in the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to confirm the encryption algorithm that's used.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to provide the round-trip message integrity verification of the customer-provided + * encryption key.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

If present, indicates the ID of the KMS key that was used for object encryption.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with + * Key Management Service (KMS) keys (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface UploadPartRequest { + /** + *

Object data.

+ * @public + */ + Body?: StreamingBlobTypes | undefined; + /** + *

The name of the bucket to which the multipart upload was initiated.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Size of the body in bytes. This parameter is useful when the size of the body cannot be determined + * automatically.

+ * @public + */ + ContentLength?: number | undefined; + /** + *

The Base64 encoded 128-bit MD5 digest of the part data. This parameter is auto-populated when using + * the command from the CLI. This parameter is required if object lock parameters are specified.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + ContentMD5?: string | undefined; + /** + *

Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any + * additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or + * x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more + * information, see Checking object integrity in + * the Amazon S3 User Guide.

+ *

If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm + * parameter.

+ *

This checksum algorithm must be the same for all parts and it match the checksum value supplied in + * the CreateMultipartUpload request.

+ * @public + */ + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 32-bit CRC32 checksum of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 32-bit CRC32C checksum of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 64-bit CRC64NVME + * checksum of the part. For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 160-bit SHA1 digest of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data that was originally sent. + * This header specifies the Base64 encoded, 256-bit SHA256 digest of the object. For more information, see + * Checking object integrity in the + * Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

Object key for which the multipart upload was initiated.

+ * @public + */ + Key: string | undefined; + /** + *

Part number of part being uploaded. This is a positive integer between 1 and 10,000.

+ * @public + */ + PartNumber: number | undefined; + /** + *

Upload ID identifying the multipart upload whose part is being uploaded.

+ * @public + */ + UploadId: string | undefined; + /** + *

Specifies the algorithm to use when encrypting the object (for example, AES256).

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is + * used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must + * be appropriate for use with the algorithm specified in the + * x-amz-server-side-encryption-customer-algorithm header. This must be the same encryption + * key specified in the initiate multipart upload request.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header + * for a message integrity check to ensure that the encryption key was transmitted without error.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; +} +/** + *

Container for all response elements.

+ * @public + */ +export interface CopyPartResult { + /** + *

Entity tag of the object.

+ * @public + */ + ETag?: string | undefined; + /** + *

Date and time at which the object was uploaded.

+ * @public + */ + LastModified?: Date | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 32-bit CRC32 checksum + * of the part. For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 32-bit CRC32C checksum + * of the part. For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

The Base64 encoded, 64-bit CRC64NVME checksum of the part. This checksum is present if + * the multipart upload request was created with the CRC64NVME checksum algorithm to the + * uploaded object). For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 160-bit SHA1 checksum + * of the part. For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 256-bit SHA256 checksum + * of the part. For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumSHA256?: string | undefined; +} +/** + * @public + */ +export interface UploadPartCopyOutput { + /** + *

The version of the source object that was copied, if you have enabled versioning on the source + * bucket.

+ * + *

This functionality is not supported when the source object is in a directory bucket.

+ *
+ * @public + */ + CopySourceVersionId?: string | undefined; + /** + *

Container for all response elements.

+ * @public + */ + CopyPartResult?: CopyPartResult | undefined; + /** + *

The server-side encryption algorithm used when you store this object in Amazon S3 or Amazon FSx.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to confirm the encryption algorithm that's used.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

If server-side encryption with a customer-provided encryption key was requested, the response will + * include this header to provide the round-trip message integrity verification of the customer-provided + * encryption key.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

If present, indicates the ID of the KMS key that was used for object encryption.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with + * Key Management Service (KMS) keys (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; +} +/** + * @public + */ +export interface UploadPartCopyRequest { + /** + *

The bucket name.

+ *

+ * Directory buckets - When you use this operation with a directory bucket, you must use virtual-hosted-style requests in the format + * Bucket-name.s3express-zone-id.region-code.amazonaws.com. Path-style requests are not supported. Directory bucket names must be unique in the chosen Zone (Availability Zone or Local Zone). Bucket names must follow the format + * bucket-base-name--zone-id--x-s3 (for example, + * amzn-s3-demo-bucket--usw2-az1--x-s3). For information about bucket naming + * restrictions, see Directory bucket naming + * rules in the Amazon S3 User Guide.

+ * + *

Copying objects across different Amazon Web Services Regions isn't supported when the source or destination + * bucket is in Amazon Web Services Local Zones. The source and destination buckets must have the same parent Amazon Web Services Region. + * Otherwise, you get an HTTP 400 Bad Request error with the error code + * InvalidRequest.

+ *
+ *

+ * Access points - When you use this action with an access point for general purpose buckets, you must provide the alias of the access point in place of the bucket name or specify the access point ARN. When you use this action with an access point for directory buckets, you must provide the access point name in place of the bucket name. When using the access point ARN, you must direct requests to the access point hostname. The access point hostname takes the form AccessPointName-AccountId.s3-accesspoint.Region.amazonaws.com. When using this action with an access point through the Amazon Web Services SDKs, you provide the access point ARN in place of the bucket name. For more information about access point ARNs, see Using access points in the Amazon S3 User Guide.

+ * + *

Object Lambda access points are not supported by directory buckets.

+ *
+ *

+ * S3 on Outposts - When you use this action with S3 on Outposts, you must direct requests to the S3 on Outposts hostname. The S3 on Outposts hostname takes the + * form + * AccessPointName-AccountId.outpostID.s3-outposts.Region.amazonaws.com. When you use this action with S3 on Outposts, the destination bucket must be the Outposts access point ARN or the access point alias. For more information about S3 on Outposts, see What is S3 on Outposts? in the Amazon S3 User Guide.

+ *

Note: To supply the Multi-region Access Point (MRAP) to Bucket, you need to install the "@aws-sdk/signature-v4-crt" package to your project dependencies. + * For more information, please go to https://github.com/aws/aws-sdk-js-v3#known-issues

+ * @public + */ + Bucket: string | undefined; + /** + *

Specifies the source object for the copy operation. You specify the value in one of two formats, + * depending on whether you want to access the source object through an access point:

+ *
    + *
  • + *

    For objects not accessed through an access point, specify the name of the source bucket and key of the + * source object, separated by a slash (/). For example, to copy the object + * reports/january.pdf from the bucket awsexamplebucket, use + * awsexamplebucket/reports/january.pdf. The value must be URL-encoded.

    + *
  • + *
  • + *

    For objects accessed through access points, specify the Amazon Resource Name (ARN) of the object as accessed through the access point, in the format arn:aws:s3:::accesspoint//object/. For example, to copy the object reports/january.pdf through access point my-access-point owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf. The value must be URL encoded.

    + * + *
      + *
    • + *

      Amazon S3 supports copy operations using Access points only when the source and destination buckets are in the same Amazon Web Services Region.

      + *
    • + *
    • + *

      Access points are not supported by directory buckets.

      + *
    • + *
    + *
    + *

    Alternatively, for objects accessed through Amazon S3 on Outposts, specify the ARN of the object as accessed in the format arn:aws:s3-outposts:::outpost//object/. For example, to copy the object reports/january.pdf through outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf. The value must be URL-encoded.

    + *
  • + *
+ *

If your bucket has versioning enabled, you could have multiple versions of the same object. By + * default, x-amz-copy-source identifies the current version of the source object to copy. To + * copy a specific version of the source object to copy, append ?versionId= to + * the x-amz-copy-source request header (for example, x-amz-copy-source: + * /awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893).

+ *

If the current version is a delete marker and you don't specify a versionId in the + * x-amz-copy-source request header, Amazon S3 returns a 404 Not Found error, + * because the object does not exist. If you specify versionId in the x-amz-copy-source and + * the versionId is a delete marker, Amazon S3 returns an HTTP 400 Bad Request error, because you + * are not allowed to specify a delete marker as a version for the x-amz-copy-source.

+ * + *

+ * Directory buckets - S3 Versioning isn't enabled and supported for directory buckets.

+ *
+ * @public + */ + CopySource: string | undefined; + /** + *

Copies the object if its entity tag (ETag) matches the specified tag.

+ *

If both of the x-amz-copy-source-if-match and + * x-amz-copy-source-if-unmodified-since headers are present in the request as + * follows:

+ *

+ * x-amz-copy-source-if-match condition evaluates to true, and;

+ *

+ * x-amz-copy-source-if-unmodified-since condition evaluates to false;

+ *

Amazon S3 returns 200 OK and copies the data. + *

+ * @public + */ + CopySourceIfMatch?: string | undefined; + /** + *

Copies the object if it has been modified since the specified time.

+ *

If both of the x-amz-copy-source-if-none-match and + * x-amz-copy-source-if-modified-since headers are present in the request as follows:

+ *

+ * x-amz-copy-source-if-none-match condition evaluates to false, and;

+ *

+ * x-amz-copy-source-if-modified-since condition evaluates to true;

+ *

Amazon S3 returns 412 Precondition Failed response code. + *

+ * @public + */ + CopySourceIfModifiedSince?: Date | undefined; + /** + *

Copies the object if its entity tag (ETag) is different than the specified ETag.

+ *

If both of the x-amz-copy-source-if-none-match and + * x-amz-copy-source-if-modified-since headers are present in the request as follows:

+ *

+ * x-amz-copy-source-if-none-match condition evaluates to false, and;

+ *

+ * x-amz-copy-source-if-modified-since condition evaluates to true;

+ *

Amazon S3 returns 412 Precondition Failed response code. + *

+ * @public + */ + CopySourceIfNoneMatch?: string | undefined; + /** + *

Copies the object if it hasn't been modified since the specified time.

+ *

If both of the x-amz-copy-source-if-match and + * x-amz-copy-source-if-unmodified-since headers are present in the request as + * follows:

+ *

+ * x-amz-copy-source-if-match condition evaluates to true, and;

+ *

+ * x-amz-copy-source-if-unmodified-since condition evaluates to false;

+ *

Amazon S3 returns 200 OK and copies the data. + *

+ * @public + */ + CopySourceIfUnmodifiedSince?: Date | undefined; + /** + *

The range of bytes to copy from the source object. The range value must use the form + * bytes=first-last, where the first and last are the zero-based byte offsets to copy. For example, + * bytes=0-9 indicates that you want to copy the first 10 bytes of the source. You can copy a range only if + * the source object is greater than 5 MB.

+ * @public + */ + CopySourceRange?: string | undefined; + /** + *

Object key for which the multipart upload was initiated.

+ * @public + */ + Key: string | undefined; + /** + *

Part number of part being copied. This is a positive integer between 1 and 10,000.

+ * @public + */ + PartNumber: number | undefined; + /** + *

Upload ID identifying the multipart upload whose part is being copied.

+ * @public + */ + UploadId: string | undefined; + /** + *

Specifies the algorithm to use when encrypting the object (for example, AES256).

+ * + *

This functionality is not supported when the destination bucket is a directory bucket.

+ *
+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is + * used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must + * be appropriate for use with the algorithm specified in the + * x-amz-server-side-encryption-customer-algorithm header. This must be the same encryption + * key specified in the initiate multipart upload request.

+ * + *

This functionality is not supported when the destination bucket is a directory bucket.

+ *
+ * @public + */ + SSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header + * for a message integrity check to ensure that the encryption key was transmitted without error.

+ * + *

This functionality is not supported when the destination bucket is a directory bucket.

+ *
+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

Specifies the algorithm to use when decrypting the source object (for example, + * AES256).

+ * + *

This functionality is not supported when the source object is in a directory bucket.

+ *
+ * @public + */ + CopySourceSSECustomerAlgorithm?: string | undefined; + /** + *

Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The + * encryption key provided in this header must be one that was used when the source object was + * created.

+ * + *

This functionality is not supported when the source object is in a directory bucket.

+ *
+ * @public + */ + CopySourceSSECustomerKey?: string | undefined; + /** + *

Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header + * for a message integrity check to ensure that the encryption key was transmitted without error.

+ * + *

This functionality is not supported when the source object is in a directory bucket.

+ *
+ * @public + */ + CopySourceSSECustomerKeyMD5?: string | undefined; + /** + *

Confirms that the requester knows that they will be charged for the request. Bucket owners need not + * specify this parameter in their requests. If either the source or destination S3 bucket has Requester + * Pays enabled, the requester will pay for the corresponding charges. For information about + * downloading objects from Requester Pays buckets, see Downloading Objects in Requester Pays + * Buckets in the Amazon S3 User Guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestPayer?: RequestPayer | undefined; + /** + *

The account ID of the expected destination bucket owner. If the account ID that you provide does not match the actual owner of the destination bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedBucketOwner?: string | undefined; + /** + *

The account ID of the expected source bucket owner. If the account ID that you provide does not match the actual owner of the source bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

+ * @public + */ + ExpectedSourceBucketOwner?: string | undefined; +} +/** + * @public + */ +export interface WriteGetObjectResponseRequest { + /** + *

Route prefix to the HTTP URL generated.

+ * @public + */ + RequestRoute: string | undefined; + /** + *

A single use encrypted token that maps WriteGetObjectResponse to the end user + * GetObject request.

+ * @public + */ + RequestToken: string | undefined; + /** + *

The object data.

+ * @public + */ + Body?: StreamingBlobTypes | undefined; + /** + *

The integer status code for an HTTP response of a corresponding GetObject request. The + * following is a list of status codes.

+ *
    + *
  • + *

    + * 200 - OK + *

    + *
  • + *
  • + *

    + * 206 - Partial Content + *

    + *
  • + *
  • + *

    + * 304 - Not Modified + *

    + *
  • + *
  • + *

    + * 400 - Bad Request + *

    + *
  • + *
  • + *

    + * 401 - Unauthorized + *

    + *
  • + *
  • + *

    + * 403 - Forbidden + *

    + *
  • + *
  • + *

    + * 404 - Not Found + *

    + *
  • + *
  • + *

    + * 405 - Method Not Allowed + *

    + *
  • + *
  • + *

    + * 409 - Conflict + *

    + *
  • + *
  • + *

    + * 411 - Length Required + *

    + *
  • + *
  • + *

    + * 412 - Precondition Failed + *

    + *
  • + *
  • + *

    + * 416 - Range Not Satisfiable + *

    + *
  • + *
  • + *

    + * 500 - Internal Server Error + *

    + *
  • + *
  • + *

    + * 503 - Service Unavailable + *

    + *
  • + *
+ * @public + */ + StatusCode?: number | undefined; + /** + *

A string that uniquely identifies an error condition. Returned in the tag of the error + * XML response for a corresponding GetObject call. Cannot be used with a successful + * StatusCode header or when the transformed object is provided in the body. All error codes + * from S3 are sentence-cased. The regular expression (regex) value is + * "^[A-Z][a-zA-Z]+$".

+ * @public + */ + ErrorCode?: string | undefined; + /** + *

Contains a generic description of the error condition. Returned in the tag of the + * error XML response for a corresponding GetObject call. Cannot be used with a successful + * StatusCode header or when the transformed object is provided in body.

+ * @public + */ + ErrorMessage?: string | undefined; + /** + *

Indicates that a range of bytes was specified.

+ * @public + */ + AcceptRanges?: string | undefined; + /** + *

Specifies caching behavior along the request/reply chain.

+ * @public + */ + CacheControl?: string | undefined; + /** + *

Specifies presentational information for the object.

+ * @public + */ + ContentDisposition?: string | undefined; + /** + *

Specifies what content encodings have been applied to the object and thus what decoding mechanisms + * must be applied to obtain the media-type referenced by the Content-Type header field.

+ * @public + */ + ContentEncoding?: string | undefined; + /** + *

The language the content is in.

+ * @public + */ + ContentLanguage?: string | undefined; + /** + *

The size of the content body in bytes.

+ * @public + */ + ContentLength?: number | undefined; + /** + *

The portion of the object returned in the response.

+ * @public + */ + ContentRange?: string | undefined; + /** + *

A standard MIME type describing the format of the object data.

+ * @public + */ + ContentType?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This specifies the Base64 encoded, 32-bit CRC32 checksum of the + * object returned by the Object Lambda function. This may not match the checksum for the object stored in + * Amazon S3. Amazon S3 will perform validation of the checksum values only when the original GetObject + * request required checksum validation. For more information about checksums, see Checking object + * integrity in the Amazon S3 User Guide.

+ *

Only one checksum header can be specified at a time. If you supply multiple checksum headers, this + * request will fail.

+ *

+ * @public + */ + ChecksumCRC32?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This specifies the Base64 encoded, 32-bit CRC32C checksum of the + * object returned by the Object Lambda function. This may not match the checksum for the object stored in + * Amazon S3. Amazon S3 will perform validation of the checksum values only when the original GetObject + * request required checksum validation. For more information about checksums, see Checking object + * integrity in the Amazon S3 User Guide.

+ *

Only one checksum header can be specified at a time. If you supply multiple checksum headers, this + * request will fail.

+ * @public + */ + ChecksumCRC32C?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This header specifies the Base64 encoded, 64-bit CRC64NVME + * checksum of the part. For more information, see Checking object integrity in + * the Amazon S3 User Guide.

+ * @public + */ + ChecksumCRC64NVME?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This specifies the Base64 encoded, 160-bit SHA1 digest of the + * object returned by the Object Lambda function. This may not match the checksum for the object stored in + * Amazon S3. Amazon S3 will perform validation of the checksum values only when the original GetObject + * request required checksum validation. For more information about checksums, see Checking object + * integrity in the Amazon S3 User Guide.

+ *

Only one checksum header can be specified at a time. If you supply multiple checksum headers, this + * request will fail.

+ * @public + */ + ChecksumSHA1?: string | undefined; + /** + *

This header can be used as a data integrity check to verify that the data received is the same data + * that was originally sent. This specifies the Base64 encoded, 256-bit SHA256 digest of the + * object returned by the Object Lambda function. This may not match the checksum for the object stored in + * Amazon S3. Amazon S3 will perform validation of the checksum values only when the original GetObject + * request required checksum validation. For more information about checksums, see Checking object + * integrity in the Amazon S3 User Guide.

+ *

Only one checksum header can be specified at a time. If you supply multiple checksum headers, this + * request will fail.

+ * @public + */ + ChecksumSHA256?: string | undefined; + /** + *

Specifies whether an object stored in Amazon S3 is (true) or is not (false) a + * delete marker. To learn more about delete markers, see Working with delete markers.

+ * @public + */ + DeleteMarker?: boolean | undefined; + /** + *

An opaque identifier assigned by a web server to a specific version of a resource found at a URL. + *

+ * @public + */ + ETag?: string | undefined; + /** + *

The date and time at which the object is no longer cacheable.

+ * @public + */ + Expires?: Date | undefined; + /** + *

If the object expiration is configured (see PUT Bucket lifecycle), the response includes this + * header. It includes the expiry-date and rule-id key-value pairs that provide + * the object expiration information. The value of the rule-id is URL-encoded.

+ * @public + */ + Expiration?: string | undefined; + /** + *

The date and time that the object was last modified.

+ * @public + */ + LastModified?: Date | undefined; + /** + *

Set to the number of metadata entries not returned in x-amz-meta headers. This can + * happen if you create metadata using an API like SOAP that supports more flexible metadata than the REST + * API. For example, using SOAP, you can create metadata whose values are not legal HTTP headers.

+ * @public + */ + MissingMeta?: number | undefined; + /** + *

A map of metadata to store with the object in S3.

+ * @public + */ + Metadata?: Record | undefined; + /** + *

Indicates whether an object stored in Amazon S3 has Object Lock enabled. For more information about S3 + * Object Lock, see Object + * Lock.

+ * @public + */ + ObjectLockMode?: ObjectLockMode | undefined; + /** + *

Indicates whether an object stored in Amazon S3 has an active legal hold.

+ * @public + */ + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; + /** + *

The date and time when Object Lock is configured to expire.

+ * @public + */ + ObjectLockRetainUntilDate?: Date | undefined; + /** + *

The count of parts this object has.

+ * @public + */ + PartsCount?: number | undefined; + /** + *

Indicates if request involves bucket that is either a source or destination in a Replication rule. + * For more information about S3 Replication, see Replication.

+ * @public + */ + ReplicationStatus?: ReplicationStatus | undefined; + /** + *

If present, indicates that the requester was successfully charged for the request. For more + * information, see Using Requester Pays buckets for storage transfers and usage in the Amazon Simple + * Storage Service user guide.

+ * + *

This functionality is not supported for directory buckets.

+ *
+ * @public + */ + RequestCharged?: RequestCharged | undefined; + /** + *

Provides information about object restoration operation and expiration time of the restored object + * copy.

+ * @public + */ + Restore?: string | undefined; + /** + *

The server-side encryption algorithm used when storing requested object in Amazon S3 or Amazon FSx.

+ * + *

When accessing data stored in Amazon FSx file systems using S3 access points, the only valid server side + * encryption option is aws:fsx.

+ *
+ * @public + */ + ServerSideEncryption?: ServerSideEncryption | undefined; + /** + *

Encryption algorithm used if server-side encryption with a customer-provided encryption key was + * specified for object stored in Amazon S3.

+ * @public + */ + SSECustomerAlgorithm?: string | undefined; + /** + *

If present, specifies the ID (Key ID, Key ARN, or Key Alias) of the Amazon Web Services Key Management Service + * (Amazon Web Services KMS) symmetric encryption customer managed key that was used for stored in Amazon S3 object.

+ * @public + */ + SSEKMSKeyId?: string | undefined; + /** + *

128-bit MD5 digest of customer-provided encryption key used in Amazon S3 to encrypt data stored in S3. + * For more information, see Protecting data using + * server-side encryption with customer-provided encryption keys (SSE-C).

+ * @public + */ + SSECustomerKeyMD5?: string | undefined; + /** + *

Provides storage class information of the object. Amazon S3 returns this header for all objects except + * for S3 Standard storage class objects.

+ *

For more information, see Storage Classes.

+ * @public + */ + StorageClass?: StorageClass | undefined; + /** + *

The number of tags, if any, on the object.

+ * @public + */ + TagCount?: number | undefined; + /** + *

An ID used to reference a specific version of the object.

+ * @public + */ + VersionId?: string | undefined; + /** + *

Indicates whether the object stored in Amazon S3 uses an S3 bucket key for server-side encryption with + * Amazon Web Services KMS (SSE-KMS).

+ * @public + */ + BucketKeyEnabled?: boolean | undefined; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/Interfaces.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/Interfaces.d.ts new file mode 100644 index 0000000..74637ae --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/Interfaces.d.ts @@ -0,0 +1,8 @@ +import type { PaginationConfiguration } from "@smithy/types"; +import { S3Client } from "../S3Client"; +/** + * @public + */ +export interface S3PaginationConfiguration extends PaginationConfiguration { + client: S3Client; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListBucketsPaginator.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListBucketsPaginator.d.ts new file mode 100644 index 0000000..a604b49 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListBucketsPaginator.d.ts @@ -0,0 +1,7 @@ +import type { Paginator } from "@smithy/types"; +import { ListBucketsCommandInput, ListBucketsCommandOutput } from "../commands/ListBucketsCommand"; +import type { S3PaginationConfiguration } from "./Interfaces"; +/** + * @public + */ +export declare const paginateListBuckets: (config: S3PaginationConfiguration, input: ListBucketsCommandInput, ...rest: any[]) => Paginator; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListDirectoryBucketsPaginator.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListDirectoryBucketsPaginator.d.ts new file mode 100644 index 0000000..beae798 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListDirectoryBucketsPaginator.d.ts @@ -0,0 +1,7 @@ +import type { Paginator } from "@smithy/types"; +import { ListDirectoryBucketsCommandInput, ListDirectoryBucketsCommandOutput } from "../commands/ListDirectoryBucketsCommand"; +import type { S3PaginationConfiguration } from "./Interfaces"; +/** + * @public + */ +export declare const paginateListDirectoryBuckets: (config: S3PaginationConfiguration, input: ListDirectoryBucketsCommandInput, ...rest: any[]) => Paginator; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListObjectsV2Paginator.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListObjectsV2Paginator.d.ts new file mode 100644 index 0000000..30e6fb9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListObjectsV2Paginator.d.ts @@ -0,0 +1,7 @@ +import type { Paginator } from "@smithy/types"; +import { ListObjectsV2CommandInput, ListObjectsV2CommandOutput } from "../commands/ListObjectsV2Command"; +import type { S3PaginationConfiguration } from "./Interfaces"; +/** + * @public + */ +export declare const paginateListObjectsV2: (config: S3PaginationConfiguration, input: ListObjectsV2CommandInput, ...rest: any[]) => Paginator; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListPartsPaginator.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListPartsPaginator.d.ts new file mode 100644 index 0000000..018f69f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListPartsPaginator.d.ts @@ -0,0 +1,7 @@ +import type { Paginator } from "@smithy/types"; +import { ListPartsCommandInput, ListPartsCommandOutput } from "../commands/ListPartsCommand"; +import type { S3PaginationConfiguration } from "./Interfaces"; +/** + * @public + */ +export declare const paginateListParts: (config: S3PaginationConfiguration, input: ListPartsCommandInput, ...rest: any[]) => Paginator; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/index.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/index.d.ts new file mode 100644 index 0000000..9438ebe --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/pagination/index.d.ts @@ -0,0 +1,5 @@ +export * from "./Interfaces"; +export * from "./ListBucketsPaginator"; +export * from "./ListDirectoryBucketsPaginator"; +export * from "./ListObjectsV2Paginator"; +export * from "./ListPartsPaginator"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..54a62fb --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.browser.d.ts @@ -0,0 +1,87 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { S3ClientConfig } from "./S3Client"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: S3ClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + eventStreamSerdeProvider: import("@smithy/types").EventStreamSerdeProvider; + maxAttempts: number | import("@smithy/types").Provider; + md5: import("@smithy/types").HashConstructor; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha1: import("@smithy/types").HashConstructor; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + streamHasher: import("@smithy/types").StreamHasher | import("@smithy/types").StreamHasher; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/middleware-sdk-s3").S3RestXmlProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + getAwsChunkedEncodingStream: import("@smithy/types").GetAwsChunkedEncodingStream | typeof import("@smithy/util-stream").getAwsChunkedEncodingStream; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + signingEscapePath: boolean; + useArnRegion: boolean | undefined | import("@smithy/types").Provider; + sdkStreamMixin: import("@smithy/types").SdkStreamMixinInjector; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + requestChecksumCalculation?: import("@aws-sdk/middleware-flexible-checksums").RequestChecksumCalculation | import("@smithy/types").Provider; + responseChecksumValidation?: import("@aws-sdk/middleware-flexible-checksums").ResponseChecksumValidation | import("@smithy/types").Provider; + requestStreamBufferSize?: number | false; + checksumAlgorithms?: { + CRC32?: import("@smithy/types").ChecksumConstructor; + CRC32C?: import("@smithy/types").ChecksumConstructor; + CRC64NVME?: import("@smithy/types").ChecksumConstructor; + SHA1?: import("@smithy/types").ChecksumConstructor; + SHA256?: import("@smithy/types").ChecksumConstructor; + } & { + [algorithmId: string]: import("@smithy/types").ChecksumConstructor; + }; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").S3HttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + systemClockOffset?: number; + signingRegion?: string; + signerConstructor: typeof import("@aws-sdk/signature-v4-multi-region").SignatureV4MultiRegion | (new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner); + sigv4aSigningRegionSet?: string[] | undefined | import("@smithy/types").Provider; + forcePathStyle?: (boolean & (boolean | import("@smithy/types").Provider)) | undefined; + useAccelerateEndpoint?: (boolean & (boolean | import("@smithy/types").Provider)) | undefined; + disableMultiregionAccessPoints?: (boolean & (boolean | import("@smithy/types").Provider)) | undefined; + followRegionRedirects?: boolean; + s3ExpressIdentityProvider?: import("@aws-sdk/middleware-sdk-s3").S3ExpressIdentityProvider; + bucketEndpoint?: boolean; + expectContinueHeader?: boolean | number; + clientContextParams?: { + disableS3ExpressSessionAuth?: boolean | undefined | import("@smithy/types").Provider; + }; + useGlobalEndpoint?: boolean | undefined | import("@smithy/types").Provider; + disableS3ExpressSessionAuth?: boolean | undefined | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.d.ts new file mode 100644 index 0000000..7bde590 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.d.ts @@ -0,0 +1,88 @@ +import { ChecksumConstructor as __ChecksumConstructor, HashConstructor as __HashConstructor } from "@aws-sdk/types"; +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { S3ClientConfig } from "./S3Client"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: S3ClientConfig) => { + runtime: string; + defaultsMode: import("@aws-sdk/types").Provider; + authSchemePreference: string[] | import("@aws-sdk/types").Provider; + bodyLengthChecker: import("@aws-sdk/types").BodyLengthCalculator; + credentialDefaultProvider: ((input: any) => import("@aws-sdk/types").AwsCredentialIdentityProvider) | ((init?: import("@aws-sdk/credential-provider-node").DefaultProviderInit) => import("@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain").MemoizedRuntimeConfigAwsCredentialIdentityProvider); + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + disableS3ExpressSessionAuth: boolean | import("@aws-sdk/types").Provider; + eventStreamSerdeProvider: import("@aws-sdk/types").EventStreamSerdeProvider; + maxAttempts: number | import("@aws-sdk/types").Provider; + md5: __HashConstructor; + region: string | import("@aws-sdk/types").Provider; + requestChecksumCalculation: import("@aws-sdk/middleware-flexible-checksums").RequestChecksumCalculation | import("@aws-sdk/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + responseChecksumValidation: import("@aws-sdk/middleware-flexible-checksums").ResponseChecksumValidation | import("@aws-sdk/types").Provider; + retryMode: string | import("@aws-sdk/types").Provider; + sha1: __HashConstructor; + sha256: __HashConstructor; + sigv4aSigningRegionSet: string[] | import("@aws-sdk/types").Provider; + streamCollector: import("@aws-sdk/types").StreamCollector; + streamHasher: import("@aws-sdk/types").StreamHasher | import("@aws-sdk/types").StreamHasher; + useArnRegion: boolean | import("@aws-sdk/types").Provider; + useDualstackEndpoint: boolean | import("@aws-sdk/types").Provider; + useFipsEndpoint: boolean | import("@aws-sdk/types").Provider; + userAgentAppId: string | import("@aws-sdk/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/middleware-sdk-s3").S3RestXmlProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@aws-sdk/types").UrlParser; + base64Decoder: import("@aws-sdk/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@aws-sdk/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + getAwsChunkedEncodingStream: import("@aws-sdk/types").GetAwsChunkedEncodingStream | typeof import("@smithy/util-stream").getAwsChunkedEncodingStream; + logger: import("@aws-sdk/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + signingEscapePath: boolean; + sdkStreamMixin: import("@aws-sdk/types").SdkStreamMixinInjector; + customUserAgent?: string | import("@aws-sdk/types").UserAgent; + requestStreamBufferSize?: number | false; + checksumAlgorithms?: { + CRC32?: __ChecksumConstructor; + CRC32C?: __ChecksumConstructor; + CRC64NVME?: __ChecksumConstructor; + SHA1?: __ChecksumConstructor; + SHA256?: __ChecksumConstructor; + } & { + [algorithmId: string]: __ChecksumConstructor; + }; + retryStrategy?: import("@aws-sdk/types").RetryStrategy | import("@aws-sdk/types").RetryStrategyV2; + endpoint?: ((string | import("@aws-sdk/types").Endpoint | import("@aws-sdk/types").Provider | import("@aws-sdk/types").EndpointV2 | import("@aws-sdk/types").Provider) & (string | import("@aws-sdk/types").Provider | import("@aws-sdk/types").Endpoint | import("@aws-sdk/types").Provider | import("@aws-sdk/types").EndpointV2 | import("@aws-sdk/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@aws-sdk/types").Logger; + }) => import("@aws-sdk/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").S3HttpAuthSchemeProvider; + credentials?: import("@aws-sdk/types").AwsCredentialIdentity | import("@aws-sdk/types").AwsCredentialIdentityProvider; + signer?: import("@aws-sdk/types").RequestSigner | ((authScheme?: import("@aws-sdk/types").AuthScheme) => Promise); + systemClockOffset?: number; + signingRegion?: string; + signerConstructor: typeof import("@aws-sdk/signature-v4-multi-region").SignatureV4MultiRegion | (new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@aws-sdk/types").RequestSigner); + forcePathStyle?: (boolean & (boolean | import("@aws-sdk/types").Provider)) | undefined; + useAccelerateEndpoint?: (boolean & (boolean | import("@aws-sdk/types").Provider)) | undefined; + disableMultiregionAccessPoints?: (boolean & (boolean | import("@aws-sdk/types").Provider)) | undefined; + followRegionRedirects?: boolean; + s3ExpressIdentityProvider?: import("@aws-sdk/middleware-sdk-s3").S3ExpressIdentityProvider; + bucketEndpoint?: boolean; + expectContinueHeader?: boolean | number; + clientContextParams?: { + disableS3ExpressSessionAuth?: boolean | undefined | import("@aws-sdk/types").Provider; + }; + useGlobalEndpoint?: boolean | undefined | import("@aws-sdk/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.native.d.ts new file mode 100644 index 0000000..282ee7d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.native.d.ts @@ -0,0 +1,86 @@ +import type { S3ClientConfig } from "./S3Client"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: S3ClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/middleware-sdk-s3").S3RestXmlProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + streamHasher: import("@smithy/types").StreamHasher | import("@smithy/types").StreamHasher; + md5: import("@smithy/types").HashConstructor; + sha1: import("@smithy/types").HashConstructor; + getAwsChunkedEncodingStream: import("@smithy/types").GetAwsChunkedEncodingStream | typeof import("@smithy/util-stream").getAwsChunkedEncodingStream; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + eventStreamSerdeProvider: import("@smithy/types").EventStreamSerdeProvider; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + signingEscapePath: boolean; + useArnRegion: boolean | undefined | import("@smithy/types").Provider; + sdkStreamMixin: import("@smithy/types").SdkStreamMixinInjector; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + requestChecksumCalculation?: import("@aws-sdk/middleware-flexible-checksums").RequestChecksumCalculation | import("@smithy/types").Provider; + responseChecksumValidation?: import("@aws-sdk/middleware-flexible-checksums").ResponseChecksumValidation | import("@smithy/types").Provider; + requestStreamBufferSize?: number | false; + checksumAlgorithms?: { + CRC32?: import("@smithy/types").ChecksumConstructor; + CRC32C?: import("@smithy/types").ChecksumConstructor; + CRC64NVME?: import("@smithy/types").ChecksumConstructor; + SHA1?: import("@smithy/types").ChecksumConstructor; + SHA256?: import("@smithy/types").ChecksumConstructor; + } & { + [algorithmId: string]: import("@smithy/types").ChecksumConstructor; + }; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").S3HttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + systemClockOffset?: number; + signingRegion?: string; + signerConstructor: typeof import("@aws-sdk/signature-v4-multi-region").SignatureV4MultiRegion | (new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner); + sigv4aSigningRegionSet?: string[] | undefined | import("@smithy/types").Provider; + forcePathStyle?: (boolean & (boolean | import("@smithy/types").Provider)) | undefined; + useAccelerateEndpoint?: (boolean & (boolean | import("@smithy/types").Provider)) | undefined; + disableMultiregionAccessPoints?: (boolean & (boolean | import("@smithy/types").Provider)) | undefined; + followRegionRedirects?: boolean; + s3ExpressIdentityProvider?: import("@aws-sdk/middleware-sdk-s3").S3ExpressIdentityProvider; + bucketEndpoint?: boolean; + expectContinueHeader?: boolean | number; + clientContextParams?: { + disableS3ExpressSessionAuth?: boolean | undefined | import("@smithy/types").Provider; + }; + useGlobalEndpoint?: boolean | undefined | import("@smithy/types").Provider; + disableS3ExpressSessionAuth?: boolean | undefined | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..555479a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.shared.d.ts @@ -0,0 +1,34 @@ +import { S3RestXmlProtocol } from "@aws-sdk/middleware-sdk-s3"; +import { SignatureV4MultiRegion } from "@aws-sdk/signature-v4-multi-region"; +import { getAwsChunkedEncodingStream } from "@smithy/util-stream"; +import type { S3ClientConfig } from "./S3Client"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: S3ClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + getAwsChunkedEncodingStream: import("@smithy/types").GetAwsChunkedEncodingStream | typeof getAwsChunkedEncodingStream; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").S3HttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof S3RestXmlProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + sdkStreamMixin: import("@smithy/types").SdkStreamMixinInjector; + serviceId: string; + signerConstructor: typeof SignatureV4MultiRegion | (new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner); + signingEscapePath: boolean; + urlParser: import("@smithy/types").UrlParser; + useArnRegion: boolean | import("@smithy/types").Provider | undefined; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeExtensions.d.ts new file mode 100644 index 0000000..1c8c846 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { S3ExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: S3ExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/schemas/schemas_0.d.ts new file mode 100644 index 0000000..3d4cb0a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/schemas/schemas_0.d.ts @@ -0,0 +1,464 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema, StaticUnionSchema } from "@smithy/types"; +export declare var S3ServiceException$: StaticErrorSchema; +export declare var AccessDenied$: StaticErrorSchema; +export declare var BucketAlreadyExists$: StaticErrorSchema; +export declare var BucketAlreadyOwnedByYou$: StaticErrorSchema; +export declare var EncryptionTypeMismatch$: StaticErrorSchema; +export declare var IdempotencyParameterMismatch$: StaticErrorSchema; +export declare var InvalidObjectState$: StaticErrorSchema; +export declare var InvalidRequest$: StaticErrorSchema; +export declare var InvalidWriteOffset$: StaticErrorSchema; +export declare var NoSuchBucket$: StaticErrorSchema; +export declare var NoSuchKey$: StaticErrorSchema; +export declare var NoSuchUpload$: StaticErrorSchema; +export declare var NotFound$: StaticErrorSchema; +export declare var ObjectAlreadyInActiveTierError$: StaticErrorSchema; +export declare var ObjectNotInActiveTierError$: StaticErrorSchema; +export declare var TooManyParts$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AbacStatus$: StaticStructureSchema; +export declare var AbortIncompleteMultipartUpload$: StaticStructureSchema; +export declare var AbortMultipartUploadOutput$: StaticStructureSchema; +export declare var AbortMultipartUploadRequest$: StaticStructureSchema; +export declare var AccelerateConfiguration$: StaticStructureSchema; +export declare var AccessControlPolicy$: StaticStructureSchema; +export declare var AccessControlTranslation$: StaticStructureSchema; +export declare var AnalyticsAndOperator$: StaticStructureSchema; +export declare var AnalyticsConfiguration$: StaticStructureSchema; +export declare var AnalyticsExportDestination$: StaticStructureSchema; +export declare var AnalyticsS3BucketDestination$: StaticStructureSchema; +export declare var BlockedEncryptionTypes$: StaticStructureSchema; +export declare var Bucket$: StaticStructureSchema; +export declare var BucketInfo$: StaticStructureSchema; +export declare var BucketLifecycleConfiguration$: StaticStructureSchema; +export declare var BucketLoggingStatus$: StaticStructureSchema; +export declare var Checksum$: StaticStructureSchema; +export declare var CommonPrefix$: StaticStructureSchema; +export declare var CompletedMultipartUpload$: StaticStructureSchema; +export declare var CompletedPart$: StaticStructureSchema; +export declare var CompleteMultipartUploadOutput$: StaticStructureSchema; +export declare var CompleteMultipartUploadRequest$: StaticStructureSchema; +export declare var Condition$: StaticStructureSchema; +export declare var ContinuationEvent$: StaticStructureSchema; +export declare var CopyObjectOutput$: StaticStructureSchema; +export declare var CopyObjectRequest$: StaticStructureSchema; +export declare var CopyObjectResult$: StaticStructureSchema; +export declare var CopyPartResult$: StaticStructureSchema; +export declare var CORSConfiguration$: StaticStructureSchema; +export declare var CORSRule$: StaticStructureSchema; +export declare var CreateBucketConfiguration$: StaticStructureSchema; +export declare var CreateBucketMetadataConfigurationRequest$: StaticStructureSchema; +export declare var CreateBucketMetadataTableConfigurationRequest$: StaticStructureSchema; +export declare var CreateBucketOutput$: StaticStructureSchema; +export declare var CreateBucketRequest$: StaticStructureSchema; +export declare var CreateMultipartUploadOutput$: StaticStructureSchema; +export declare var CreateMultipartUploadRequest$: StaticStructureSchema; +export declare var CreateSessionOutput$: StaticStructureSchema; +export declare var CreateSessionRequest$: StaticStructureSchema; +export declare var CSVInput$: StaticStructureSchema; +export declare var CSVOutput$: StaticStructureSchema; +export declare var DefaultRetention$: StaticStructureSchema; +export declare var Delete$: StaticStructureSchema; +export declare var DeleteBucketAnalyticsConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketCorsRequest$: StaticStructureSchema; +export declare var DeleteBucketEncryptionRequest$: StaticStructureSchema; +export declare var DeleteBucketIntelligentTieringConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketInventoryConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketLifecycleRequest$: StaticStructureSchema; +export declare var DeleteBucketMetadataConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketMetadataTableConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketMetricsConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketOwnershipControlsRequest$: StaticStructureSchema; +export declare var DeleteBucketPolicyRequest$: StaticStructureSchema; +export declare var DeleteBucketReplicationRequest$: StaticStructureSchema; +export declare var DeleteBucketRequest$: StaticStructureSchema; +export declare var DeleteBucketTaggingRequest$: StaticStructureSchema; +export declare var DeleteBucketWebsiteRequest$: StaticStructureSchema; +export declare var DeletedObject$: StaticStructureSchema; +export declare var DeleteMarkerEntry$: StaticStructureSchema; +export declare var DeleteMarkerReplication$: StaticStructureSchema; +export declare var DeleteObjectOutput$: StaticStructureSchema; +export declare var DeleteObjectRequest$: StaticStructureSchema; +export declare var DeleteObjectsOutput$: StaticStructureSchema; +export declare var DeleteObjectsRequest$: StaticStructureSchema; +export declare var DeleteObjectTaggingOutput$: StaticStructureSchema; +export declare var DeleteObjectTaggingRequest$: StaticStructureSchema; +export declare var DeletePublicAccessBlockRequest$: StaticStructureSchema; +export declare var Destination$: StaticStructureSchema; +export declare var DestinationResult$: StaticStructureSchema; +export declare var Encryption$: StaticStructureSchema; +export declare var EncryptionConfiguration$: StaticStructureSchema; +export declare var EndEvent$: StaticStructureSchema; +export declare var _Error$: StaticStructureSchema; +export declare var ErrorDetails$: StaticStructureSchema; +export declare var ErrorDocument$: StaticStructureSchema; +export declare var EventBridgeConfiguration$: StaticStructureSchema; +export declare var ExistingObjectReplication$: StaticStructureSchema; +export declare var FilterRule$: StaticStructureSchema; +export declare var GetBucketAbacOutput$: StaticStructureSchema; +export declare var GetBucketAbacRequest$: StaticStructureSchema; +export declare var GetBucketAccelerateConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketAccelerateConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketAclOutput$: StaticStructureSchema; +export declare var GetBucketAclRequest$: StaticStructureSchema; +export declare var GetBucketAnalyticsConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketAnalyticsConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketCorsOutput$: StaticStructureSchema; +export declare var GetBucketCorsRequest$: StaticStructureSchema; +export declare var GetBucketEncryptionOutput$: StaticStructureSchema; +export declare var GetBucketEncryptionRequest$: StaticStructureSchema; +export declare var GetBucketIntelligentTieringConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketIntelligentTieringConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketInventoryConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketInventoryConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketLifecycleConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketLifecycleConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketLocationOutput$: StaticStructureSchema; +export declare var GetBucketLocationRequest$: StaticStructureSchema; +export declare var GetBucketLoggingOutput$: StaticStructureSchema; +export declare var GetBucketLoggingRequest$: StaticStructureSchema; +export declare var GetBucketMetadataConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketMetadataConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketMetadataConfigurationResult$: StaticStructureSchema; +export declare var GetBucketMetadataTableConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketMetadataTableConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketMetadataTableConfigurationResult$: StaticStructureSchema; +export declare var GetBucketMetricsConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketMetricsConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketNotificationConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketOwnershipControlsOutput$: StaticStructureSchema; +export declare var GetBucketOwnershipControlsRequest$: StaticStructureSchema; +export declare var GetBucketPolicyOutput$: StaticStructureSchema; +export declare var GetBucketPolicyRequest$: StaticStructureSchema; +export declare var GetBucketPolicyStatusOutput$: StaticStructureSchema; +export declare var GetBucketPolicyStatusRequest$: StaticStructureSchema; +export declare var GetBucketReplicationOutput$: StaticStructureSchema; +export declare var GetBucketReplicationRequest$: StaticStructureSchema; +export declare var GetBucketRequestPaymentOutput$: StaticStructureSchema; +export declare var GetBucketRequestPaymentRequest$: StaticStructureSchema; +export declare var GetBucketTaggingOutput$: StaticStructureSchema; +export declare var GetBucketTaggingRequest$: StaticStructureSchema; +export declare var GetBucketVersioningOutput$: StaticStructureSchema; +export declare var GetBucketVersioningRequest$: StaticStructureSchema; +export declare var GetBucketWebsiteOutput$: StaticStructureSchema; +export declare var GetBucketWebsiteRequest$: StaticStructureSchema; +export declare var GetObjectAclOutput$: StaticStructureSchema; +export declare var GetObjectAclRequest$: StaticStructureSchema; +export declare var GetObjectAttributesOutput$: StaticStructureSchema; +export declare var GetObjectAttributesParts$: StaticStructureSchema; +export declare var GetObjectAttributesRequest$: StaticStructureSchema; +export declare var GetObjectLegalHoldOutput$: StaticStructureSchema; +export declare var GetObjectLegalHoldRequest$: StaticStructureSchema; +export declare var GetObjectLockConfigurationOutput$: StaticStructureSchema; +export declare var GetObjectLockConfigurationRequest$: StaticStructureSchema; +export declare var GetObjectOutput$: StaticStructureSchema; +export declare var GetObjectRequest$: StaticStructureSchema; +export declare var GetObjectRetentionOutput$: StaticStructureSchema; +export declare var GetObjectRetentionRequest$: StaticStructureSchema; +export declare var GetObjectTaggingOutput$: StaticStructureSchema; +export declare var GetObjectTaggingRequest$: StaticStructureSchema; +export declare var GetObjectTorrentOutput$: StaticStructureSchema; +export declare var GetObjectTorrentRequest$: StaticStructureSchema; +export declare var GetPublicAccessBlockOutput$: StaticStructureSchema; +export declare var GetPublicAccessBlockRequest$: StaticStructureSchema; +export declare var GlacierJobParameters$: StaticStructureSchema; +export declare var Grant$: StaticStructureSchema; +export declare var Grantee$: StaticStructureSchema; +export declare var HeadBucketOutput$: StaticStructureSchema; +export declare var HeadBucketRequest$: StaticStructureSchema; +export declare var HeadObjectOutput$: StaticStructureSchema; +export declare var HeadObjectRequest$: StaticStructureSchema; +export declare var IndexDocument$: StaticStructureSchema; +export declare var Initiator$: StaticStructureSchema; +export declare var InputSerialization$: StaticStructureSchema; +export declare var IntelligentTieringAndOperator$: StaticStructureSchema; +export declare var IntelligentTieringConfiguration$: StaticStructureSchema; +export declare var IntelligentTieringFilter$: StaticStructureSchema; +export declare var InventoryConfiguration$: StaticStructureSchema; +export declare var InventoryDestination$: StaticStructureSchema; +export declare var InventoryEncryption$: StaticStructureSchema; +export declare var InventoryFilter$: StaticStructureSchema; +export declare var InventoryS3BucketDestination$: StaticStructureSchema; +export declare var InventorySchedule$: StaticStructureSchema; +export declare var InventoryTableConfiguration$: StaticStructureSchema; +export declare var InventoryTableConfigurationResult$: StaticStructureSchema; +export declare var InventoryTableConfigurationUpdates$: StaticStructureSchema; +export declare var JournalTableConfiguration$: StaticStructureSchema; +export declare var JournalTableConfigurationResult$: StaticStructureSchema; +export declare var JournalTableConfigurationUpdates$: StaticStructureSchema; +export declare var JSONInput$: StaticStructureSchema; +export declare var JSONOutput$: StaticStructureSchema; +export declare var LambdaFunctionConfiguration$: StaticStructureSchema; +export declare var LifecycleExpiration$: StaticStructureSchema; +export declare var LifecycleRule$: StaticStructureSchema; +export declare var LifecycleRuleAndOperator$: StaticStructureSchema; +export declare var LifecycleRuleFilter$: StaticStructureSchema; +export declare var ListBucketAnalyticsConfigurationsOutput$: StaticStructureSchema; +export declare var ListBucketAnalyticsConfigurationsRequest$: StaticStructureSchema; +export declare var ListBucketIntelligentTieringConfigurationsOutput$: StaticStructureSchema; +export declare var ListBucketIntelligentTieringConfigurationsRequest$: StaticStructureSchema; +export declare var ListBucketInventoryConfigurationsOutput$: StaticStructureSchema; +export declare var ListBucketInventoryConfigurationsRequest$: StaticStructureSchema; +export declare var ListBucketMetricsConfigurationsOutput$: StaticStructureSchema; +export declare var ListBucketMetricsConfigurationsRequest$: StaticStructureSchema; +export declare var ListBucketsOutput$: StaticStructureSchema; +export declare var ListBucketsRequest$: StaticStructureSchema; +export declare var ListDirectoryBucketsOutput$: StaticStructureSchema; +export declare var ListDirectoryBucketsRequest$: StaticStructureSchema; +export declare var ListMultipartUploadsOutput$: StaticStructureSchema; +export declare var ListMultipartUploadsRequest$: StaticStructureSchema; +export declare var ListObjectsOutput$: StaticStructureSchema; +export declare var ListObjectsRequest$: StaticStructureSchema; +export declare var ListObjectsV2Output$: StaticStructureSchema; +export declare var ListObjectsV2Request$: StaticStructureSchema; +export declare var ListObjectVersionsOutput$: StaticStructureSchema; +export declare var ListObjectVersionsRequest$: StaticStructureSchema; +export declare var ListPartsOutput$: StaticStructureSchema; +export declare var ListPartsRequest$: StaticStructureSchema; +export declare var LocationInfo$: StaticStructureSchema; +export declare var LoggingEnabled$: StaticStructureSchema; +export declare var MetadataConfiguration$: StaticStructureSchema; +export declare var MetadataConfigurationResult$: StaticStructureSchema; +export declare var MetadataEntry$: StaticStructureSchema; +export declare var MetadataTableConfiguration$: StaticStructureSchema; +export declare var MetadataTableConfigurationResult$: StaticStructureSchema; +export declare var MetadataTableEncryptionConfiguration$: StaticStructureSchema; +export declare var Metrics$: StaticStructureSchema; +export declare var MetricsAndOperator$: StaticStructureSchema; +export declare var MetricsConfiguration$: StaticStructureSchema; +export declare var MultipartUpload$: StaticStructureSchema; +export declare var NoncurrentVersionExpiration$: StaticStructureSchema; +export declare var NoncurrentVersionTransition$: StaticStructureSchema; +export declare var NotificationConfiguration$: StaticStructureSchema; +export declare var NotificationConfigurationFilter$: StaticStructureSchema; +export declare var _Object$: StaticStructureSchema; +export declare var ObjectIdentifier$: StaticStructureSchema; +export declare var ObjectLockConfiguration$: StaticStructureSchema; +export declare var ObjectLockLegalHold$: StaticStructureSchema; +export declare var ObjectLockRetention$: StaticStructureSchema; +export declare var ObjectLockRule$: StaticStructureSchema; +export declare var ObjectPart$: StaticStructureSchema; +export declare var ObjectVersion$: StaticStructureSchema; +export declare var OutputLocation$: StaticStructureSchema; +export declare var OutputSerialization$: StaticStructureSchema; +export declare var Owner$: StaticStructureSchema; +export declare var OwnershipControls$: StaticStructureSchema; +export declare var OwnershipControlsRule$: StaticStructureSchema; +export declare var ParquetInput$: StaticStructureSchema; +export declare var Part$: StaticStructureSchema; +export declare var PartitionedPrefix$: StaticStructureSchema; +export declare var PolicyStatus$: StaticStructureSchema; +export declare var Progress$: StaticStructureSchema; +export declare var ProgressEvent$: StaticStructureSchema; +export declare var PublicAccessBlockConfiguration$: StaticStructureSchema; +export declare var PutBucketAbacRequest$: StaticStructureSchema; +export declare var PutBucketAccelerateConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketAclRequest$: StaticStructureSchema; +export declare var PutBucketAnalyticsConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketCorsRequest$: StaticStructureSchema; +export declare var PutBucketEncryptionRequest$: StaticStructureSchema; +export declare var PutBucketIntelligentTieringConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketInventoryConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketLifecycleConfigurationOutput$: StaticStructureSchema; +export declare var PutBucketLifecycleConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketLoggingRequest$: StaticStructureSchema; +export declare var PutBucketMetricsConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketNotificationConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketOwnershipControlsRequest$: StaticStructureSchema; +export declare var PutBucketPolicyRequest$: StaticStructureSchema; +export declare var PutBucketReplicationRequest$: StaticStructureSchema; +export declare var PutBucketRequestPaymentRequest$: StaticStructureSchema; +export declare var PutBucketTaggingRequest$: StaticStructureSchema; +export declare var PutBucketVersioningRequest$: StaticStructureSchema; +export declare var PutBucketWebsiteRequest$: StaticStructureSchema; +export declare var PutObjectAclOutput$: StaticStructureSchema; +export declare var PutObjectAclRequest$: StaticStructureSchema; +export declare var PutObjectLegalHoldOutput$: StaticStructureSchema; +export declare var PutObjectLegalHoldRequest$: StaticStructureSchema; +export declare var PutObjectLockConfigurationOutput$: StaticStructureSchema; +export declare var PutObjectLockConfigurationRequest$: StaticStructureSchema; +export declare var PutObjectOutput$: StaticStructureSchema; +export declare var PutObjectRequest$: StaticStructureSchema; +export declare var PutObjectRetentionOutput$: StaticStructureSchema; +export declare var PutObjectRetentionRequest$: StaticStructureSchema; +export declare var PutObjectTaggingOutput$: StaticStructureSchema; +export declare var PutObjectTaggingRequest$: StaticStructureSchema; +export declare var PutPublicAccessBlockRequest$: StaticStructureSchema; +export declare var QueueConfiguration$: StaticStructureSchema; +export declare var RecordExpiration$: StaticStructureSchema; +export declare var RecordsEvent$: StaticStructureSchema; +export declare var Redirect$: StaticStructureSchema; +export declare var RedirectAllRequestsTo$: StaticStructureSchema; +export declare var RenameObjectOutput$: StaticStructureSchema; +export declare var RenameObjectRequest$: StaticStructureSchema; +export declare var ReplicaModifications$: StaticStructureSchema; +export declare var ReplicationConfiguration$: StaticStructureSchema; +export declare var ReplicationRule$: StaticStructureSchema; +export declare var ReplicationRuleAndOperator$: StaticStructureSchema; +export declare var ReplicationRuleFilter$: StaticStructureSchema; +export declare var ReplicationTime$: StaticStructureSchema; +export declare var ReplicationTimeValue$: StaticStructureSchema; +export declare var RequestPaymentConfiguration$: StaticStructureSchema; +export declare var RequestProgress$: StaticStructureSchema; +export declare var RestoreObjectOutput$: StaticStructureSchema; +export declare var RestoreObjectRequest$: StaticStructureSchema; +export declare var RestoreRequest$: StaticStructureSchema; +export declare var RestoreStatus$: StaticStructureSchema; +export declare var RoutingRule$: StaticStructureSchema; +export declare var S3KeyFilter$: StaticStructureSchema; +export declare var S3Location$: StaticStructureSchema; +export declare var S3TablesDestination$: StaticStructureSchema; +export declare var S3TablesDestinationResult$: StaticStructureSchema; +export declare var ScanRange$: StaticStructureSchema; +export declare var SelectObjectContentOutput$: StaticStructureSchema; +export declare var SelectObjectContentRequest$: StaticStructureSchema; +export declare var SelectParameters$: StaticStructureSchema; +export declare var ServerSideEncryptionByDefault$: StaticStructureSchema; +export declare var ServerSideEncryptionConfiguration$: StaticStructureSchema; +export declare var ServerSideEncryptionRule$: StaticStructureSchema; +export declare var SessionCredentials$: StaticStructureSchema; +export declare var SimplePrefix$: StaticStructureSchema; +export declare var SourceSelectionCriteria$: StaticStructureSchema; +export declare var SSEKMS$: StaticStructureSchema; +export declare var SseKmsEncryptedObjects$: StaticStructureSchema; +export declare var SSEKMSEncryption$: StaticStructureSchema; +export declare var SSES3$: StaticStructureSchema; +export declare var Stats$: StaticStructureSchema; +export declare var StatsEvent$: StaticStructureSchema; +export declare var StorageClassAnalysis$: StaticStructureSchema; +export declare var StorageClassAnalysisDataExport$: StaticStructureSchema; +export declare var Tag$: StaticStructureSchema; +export declare var Tagging$: StaticStructureSchema; +export declare var TargetGrant$: StaticStructureSchema; +export declare var TargetObjectKeyFormat$: StaticStructureSchema; +export declare var Tiering$: StaticStructureSchema; +export declare var TopicConfiguration$: StaticStructureSchema; +export declare var Transition$: StaticStructureSchema; +export declare var UpdateBucketMetadataInventoryTableConfigurationRequest$: StaticStructureSchema; +export declare var UpdateBucketMetadataJournalTableConfigurationRequest$: StaticStructureSchema; +export declare var UpdateObjectEncryptionRequest$: StaticStructureSchema; +export declare var UpdateObjectEncryptionResponse$: StaticStructureSchema; +export declare var UploadPartCopyOutput$: StaticStructureSchema; +export declare var UploadPartCopyRequest$: StaticStructureSchema; +export declare var UploadPartOutput$: StaticStructureSchema; +export declare var UploadPartRequest$: StaticStructureSchema; +export declare var VersioningConfiguration$: StaticStructureSchema; +export declare var WebsiteConfiguration$: StaticStructureSchema; +export declare var WriteGetObjectResponseRequest$: StaticStructureSchema; +export declare var AnalyticsFilter$: StaticUnionSchema; +export declare var MetricsFilter$: StaticUnionSchema; +export declare var ObjectEncryption$: StaticUnionSchema; +export declare var SelectObjectContentEventStream$: StaticUnionSchema; +export declare var AbortMultipartUpload$: StaticOperationSchema; +export declare var CompleteMultipartUpload$: StaticOperationSchema; +export declare var CopyObject$: StaticOperationSchema; +export declare var CreateBucket$: StaticOperationSchema; +export declare var CreateBucketMetadataConfiguration$: StaticOperationSchema; +export declare var CreateBucketMetadataTableConfiguration$: StaticOperationSchema; +export declare var CreateMultipartUpload$: StaticOperationSchema; +export declare var CreateSession$: StaticOperationSchema; +export declare var DeleteBucket$: StaticOperationSchema; +export declare var DeleteBucketAnalyticsConfiguration$: StaticOperationSchema; +export declare var DeleteBucketCors$: StaticOperationSchema; +export declare var DeleteBucketEncryption$: StaticOperationSchema; +export declare var DeleteBucketIntelligentTieringConfiguration$: StaticOperationSchema; +export declare var DeleteBucketInventoryConfiguration$: StaticOperationSchema; +export declare var DeleteBucketLifecycle$: StaticOperationSchema; +export declare var DeleteBucketMetadataConfiguration$: StaticOperationSchema; +export declare var DeleteBucketMetadataTableConfiguration$: StaticOperationSchema; +export declare var DeleteBucketMetricsConfiguration$: StaticOperationSchema; +export declare var DeleteBucketOwnershipControls$: StaticOperationSchema; +export declare var DeleteBucketPolicy$: StaticOperationSchema; +export declare var DeleteBucketReplication$: StaticOperationSchema; +export declare var DeleteBucketTagging$: StaticOperationSchema; +export declare var DeleteBucketWebsite$: StaticOperationSchema; +export declare var DeleteObject$: StaticOperationSchema; +export declare var DeleteObjects$: StaticOperationSchema; +export declare var DeleteObjectTagging$: StaticOperationSchema; +export declare var DeletePublicAccessBlock$: StaticOperationSchema; +export declare var GetBucketAbac$: StaticOperationSchema; +export declare var GetBucketAccelerateConfiguration$: StaticOperationSchema; +export declare var GetBucketAcl$: StaticOperationSchema; +export declare var GetBucketAnalyticsConfiguration$: StaticOperationSchema; +export declare var GetBucketCors$: StaticOperationSchema; +export declare var GetBucketEncryption$: StaticOperationSchema; +export declare var GetBucketIntelligentTieringConfiguration$: StaticOperationSchema; +export declare var GetBucketInventoryConfiguration$: StaticOperationSchema; +export declare var GetBucketLifecycleConfiguration$: StaticOperationSchema; +export declare var GetBucketLocation$: StaticOperationSchema; +export declare var GetBucketLogging$: StaticOperationSchema; +export declare var GetBucketMetadataConfiguration$: StaticOperationSchema; +export declare var GetBucketMetadataTableConfiguration$: StaticOperationSchema; +export declare var GetBucketMetricsConfiguration$: StaticOperationSchema; +export declare var GetBucketNotificationConfiguration$: StaticOperationSchema; +export declare var GetBucketOwnershipControls$: StaticOperationSchema; +export declare var GetBucketPolicy$: StaticOperationSchema; +export declare var GetBucketPolicyStatus$: StaticOperationSchema; +export declare var GetBucketReplication$: StaticOperationSchema; +export declare var GetBucketRequestPayment$: StaticOperationSchema; +export declare var GetBucketTagging$: StaticOperationSchema; +export declare var GetBucketVersioning$: StaticOperationSchema; +export declare var GetBucketWebsite$: StaticOperationSchema; +export declare var GetObject$: StaticOperationSchema; +export declare var GetObjectAcl$: StaticOperationSchema; +export declare var GetObjectAttributes$: StaticOperationSchema; +export declare var GetObjectLegalHold$: StaticOperationSchema; +export declare var GetObjectLockConfiguration$: StaticOperationSchema; +export declare var GetObjectRetention$: StaticOperationSchema; +export declare var GetObjectTagging$: StaticOperationSchema; +export declare var GetObjectTorrent$: StaticOperationSchema; +export declare var GetPublicAccessBlock$: StaticOperationSchema; +export declare var HeadBucket$: StaticOperationSchema; +export declare var HeadObject$: StaticOperationSchema; +export declare var ListBucketAnalyticsConfigurations$: StaticOperationSchema; +export declare var ListBucketIntelligentTieringConfigurations$: StaticOperationSchema; +export declare var ListBucketInventoryConfigurations$: StaticOperationSchema; +export declare var ListBucketMetricsConfigurations$: StaticOperationSchema; +export declare var ListBuckets$: StaticOperationSchema; +export declare var ListDirectoryBuckets$: StaticOperationSchema; +export declare var ListMultipartUploads$: StaticOperationSchema; +export declare var ListObjects$: StaticOperationSchema; +export declare var ListObjectsV2$: StaticOperationSchema; +export declare var ListObjectVersions$: StaticOperationSchema; +export declare var ListParts$: StaticOperationSchema; +export declare var PutBucketAbac$: StaticOperationSchema; +export declare var PutBucketAccelerateConfiguration$: StaticOperationSchema; +export declare var PutBucketAcl$: StaticOperationSchema; +export declare var PutBucketAnalyticsConfiguration$: StaticOperationSchema; +export declare var PutBucketCors$: StaticOperationSchema; +export declare var PutBucketEncryption$: StaticOperationSchema; +export declare var PutBucketIntelligentTieringConfiguration$: StaticOperationSchema; +export declare var PutBucketInventoryConfiguration$: StaticOperationSchema; +export declare var PutBucketLifecycleConfiguration$: StaticOperationSchema; +export declare var PutBucketLogging$: StaticOperationSchema; +export declare var PutBucketMetricsConfiguration$: StaticOperationSchema; +export declare var PutBucketNotificationConfiguration$: StaticOperationSchema; +export declare var PutBucketOwnershipControls$: StaticOperationSchema; +export declare var PutBucketPolicy$: StaticOperationSchema; +export declare var PutBucketReplication$: StaticOperationSchema; +export declare var PutBucketRequestPayment$: StaticOperationSchema; +export declare var PutBucketTagging$: StaticOperationSchema; +export declare var PutBucketVersioning$: StaticOperationSchema; +export declare var PutBucketWebsite$: StaticOperationSchema; +export declare var PutObject$: StaticOperationSchema; +export declare var PutObjectAcl$: StaticOperationSchema; +export declare var PutObjectLegalHold$: StaticOperationSchema; +export declare var PutObjectLockConfiguration$: StaticOperationSchema; +export declare var PutObjectRetention$: StaticOperationSchema; +export declare var PutObjectTagging$: StaticOperationSchema; +export declare var PutPublicAccessBlock$: StaticOperationSchema; +export declare var RenameObject$: StaticOperationSchema; +export declare var RestoreObject$: StaticOperationSchema; +export declare var SelectObjectContent$: StaticOperationSchema; +export declare var UpdateBucketMetadataInventoryTableConfiguration$: StaticOperationSchema; +export declare var UpdateBucketMetadataJournalTableConfiguration$: StaticOperationSchema; +export declare var UpdateObjectEncryption$: StaticOperationSchema; +export declare var UploadPart$: StaticOperationSchema; +export declare var UploadPartCopy$: StaticOperationSchema; +export declare var WriteGetObjectResponse$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/S3.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/S3.d.ts new file mode 100644 index 0000000..350156b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/S3.d.ts @@ -0,0 +1,1998 @@ +import { + HttpHandlerOptions as __HttpHandlerOptions, + PaginationConfiguration, + Paginator, + WaiterConfiguration, +} from "@smithy/types"; +import { WaiterResult } from "@smithy/util-waiter"; +import { + AbortMultipartUploadCommandInput, + AbortMultipartUploadCommandOutput, +} from "./commands/AbortMultipartUploadCommand"; +import { + CompleteMultipartUploadCommandInput, + CompleteMultipartUploadCommandOutput, +} from "./commands/CompleteMultipartUploadCommand"; +import { + CopyObjectCommandInput, + CopyObjectCommandOutput, +} from "./commands/CopyObjectCommand"; +import { + CreateBucketCommandInput, + CreateBucketCommandOutput, +} from "./commands/CreateBucketCommand"; +import { + CreateBucketMetadataConfigurationCommandInput, + CreateBucketMetadataConfigurationCommandOutput, +} from "./commands/CreateBucketMetadataConfigurationCommand"; +import { + CreateBucketMetadataTableConfigurationCommandInput, + CreateBucketMetadataTableConfigurationCommandOutput, +} from "./commands/CreateBucketMetadataTableConfigurationCommand"; +import { + CreateMultipartUploadCommandInput, + CreateMultipartUploadCommandOutput, +} from "./commands/CreateMultipartUploadCommand"; +import { + CreateSessionCommandInput, + CreateSessionCommandOutput, +} from "./commands/CreateSessionCommand"; +import { + DeleteBucketAnalyticsConfigurationCommandInput, + DeleteBucketAnalyticsConfigurationCommandOutput, +} from "./commands/DeleteBucketAnalyticsConfigurationCommand"; +import { + DeleteBucketCommandInput, + DeleteBucketCommandOutput, +} from "./commands/DeleteBucketCommand"; +import { + DeleteBucketCorsCommandInput, + DeleteBucketCorsCommandOutput, +} from "./commands/DeleteBucketCorsCommand"; +import { + DeleteBucketEncryptionCommandInput, + DeleteBucketEncryptionCommandOutput, +} from "./commands/DeleteBucketEncryptionCommand"; +import { + DeleteBucketIntelligentTieringConfigurationCommandInput, + DeleteBucketIntelligentTieringConfigurationCommandOutput, +} from "./commands/DeleteBucketIntelligentTieringConfigurationCommand"; +import { + DeleteBucketInventoryConfigurationCommandInput, + DeleteBucketInventoryConfigurationCommandOutput, +} from "./commands/DeleteBucketInventoryConfigurationCommand"; +import { + DeleteBucketLifecycleCommandInput, + DeleteBucketLifecycleCommandOutput, +} from "./commands/DeleteBucketLifecycleCommand"; +import { + DeleteBucketMetadataConfigurationCommandInput, + DeleteBucketMetadataConfigurationCommandOutput, +} from "./commands/DeleteBucketMetadataConfigurationCommand"; +import { + DeleteBucketMetadataTableConfigurationCommandInput, + DeleteBucketMetadataTableConfigurationCommandOutput, +} from "./commands/DeleteBucketMetadataTableConfigurationCommand"; +import { + DeleteBucketMetricsConfigurationCommandInput, + DeleteBucketMetricsConfigurationCommandOutput, +} from "./commands/DeleteBucketMetricsConfigurationCommand"; +import { + DeleteBucketOwnershipControlsCommandInput, + DeleteBucketOwnershipControlsCommandOutput, +} from "./commands/DeleteBucketOwnershipControlsCommand"; +import { + DeleteBucketPolicyCommandInput, + DeleteBucketPolicyCommandOutput, +} from "./commands/DeleteBucketPolicyCommand"; +import { + DeleteBucketReplicationCommandInput, + DeleteBucketReplicationCommandOutput, +} from "./commands/DeleteBucketReplicationCommand"; +import { + DeleteBucketTaggingCommandInput, + DeleteBucketTaggingCommandOutput, +} from "./commands/DeleteBucketTaggingCommand"; +import { + DeleteBucketWebsiteCommandInput, + DeleteBucketWebsiteCommandOutput, +} from "./commands/DeleteBucketWebsiteCommand"; +import { + DeleteObjectCommandInput, + DeleteObjectCommandOutput, +} from "./commands/DeleteObjectCommand"; +import { + DeleteObjectsCommandInput, + DeleteObjectsCommandOutput, +} from "./commands/DeleteObjectsCommand"; +import { + DeleteObjectTaggingCommandInput, + DeleteObjectTaggingCommandOutput, +} from "./commands/DeleteObjectTaggingCommand"; +import { + DeletePublicAccessBlockCommandInput, + DeletePublicAccessBlockCommandOutput, +} from "./commands/DeletePublicAccessBlockCommand"; +import { + GetBucketAbacCommandInput, + GetBucketAbacCommandOutput, +} from "./commands/GetBucketAbacCommand"; +import { + GetBucketAccelerateConfigurationCommandInput, + GetBucketAccelerateConfigurationCommandOutput, +} from "./commands/GetBucketAccelerateConfigurationCommand"; +import { + GetBucketAclCommandInput, + GetBucketAclCommandOutput, +} from "./commands/GetBucketAclCommand"; +import { + GetBucketAnalyticsConfigurationCommandInput, + GetBucketAnalyticsConfigurationCommandOutput, +} from "./commands/GetBucketAnalyticsConfigurationCommand"; +import { + GetBucketCorsCommandInput, + GetBucketCorsCommandOutput, +} from "./commands/GetBucketCorsCommand"; +import { + GetBucketEncryptionCommandInput, + GetBucketEncryptionCommandOutput, +} from "./commands/GetBucketEncryptionCommand"; +import { + GetBucketIntelligentTieringConfigurationCommandInput, + GetBucketIntelligentTieringConfigurationCommandOutput, +} from "./commands/GetBucketIntelligentTieringConfigurationCommand"; +import { + GetBucketInventoryConfigurationCommandInput, + GetBucketInventoryConfigurationCommandOutput, +} from "./commands/GetBucketInventoryConfigurationCommand"; +import { + GetBucketLifecycleConfigurationCommandInput, + GetBucketLifecycleConfigurationCommandOutput, +} from "./commands/GetBucketLifecycleConfigurationCommand"; +import { + GetBucketLocationCommandInput, + GetBucketLocationCommandOutput, +} from "./commands/GetBucketLocationCommand"; +import { + GetBucketLoggingCommandInput, + GetBucketLoggingCommandOutput, +} from "./commands/GetBucketLoggingCommand"; +import { + GetBucketMetadataConfigurationCommandInput, + GetBucketMetadataConfigurationCommandOutput, +} from "./commands/GetBucketMetadataConfigurationCommand"; +import { + GetBucketMetadataTableConfigurationCommandInput, + GetBucketMetadataTableConfigurationCommandOutput, +} from "./commands/GetBucketMetadataTableConfigurationCommand"; +import { + GetBucketMetricsConfigurationCommandInput, + GetBucketMetricsConfigurationCommandOutput, +} from "./commands/GetBucketMetricsConfigurationCommand"; +import { + GetBucketNotificationConfigurationCommandInput, + GetBucketNotificationConfigurationCommandOutput, +} from "./commands/GetBucketNotificationConfigurationCommand"; +import { + GetBucketOwnershipControlsCommandInput, + GetBucketOwnershipControlsCommandOutput, +} from "./commands/GetBucketOwnershipControlsCommand"; +import { + GetBucketPolicyCommandInput, + GetBucketPolicyCommandOutput, +} from "./commands/GetBucketPolicyCommand"; +import { + GetBucketPolicyStatusCommandInput, + GetBucketPolicyStatusCommandOutput, +} from "./commands/GetBucketPolicyStatusCommand"; +import { + GetBucketReplicationCommandInput, + GetBucketReplicationCommandOutput, +} from "./commands/GetBucketReplicationCommand"; +import { + GetBucketRequestPaymentCommandInput, + GetBucketRequestPaymentCommandOutput, +} from "./commands/GetBucketRequestPaymentCommand"; +import { + GetBucketTaggingCommandInput, + GetBucketTaggingCommandOutput, +} from "./commands/GetBucketTaggingCommand"; +import { + GetBucketVersioningCommandInput, + GetBucketVersioningCommandOutput, +} from "./commands/GetBucketVersioningCommand"; +import { + GetBucketWebsiteCommandInput, + GetBucketWebsiteCommandOutput, +} from "./commands/GetBucketWebsiteCommand"; +import { + GetObjectAclCommandInput, + GetObjectAclCommandOutput, +} from "./commands/GetObjectAclCommand"; +import { + GetObjectAttributesCommandInput, + GetObjectAttributesCommandOutput, +} from "./commands/GetObjectAttributesCommand"; +import { + GetObjectCommandInput, + GetObjectCommandOutput, +} from "./commands/GetObjectCommand"; +import { + GetObjectLegalHoldCommandInput, + GetObjectLegalHoldCommandOutput, +} from "./commands/GetObjectLegalHoldCommand"; +import { + GetObjectLockConfigurationCommandInput, + GetObjectLockConfigurationCommandOutput, +} from "./commands/GetObjectLockConfigurationCommand"; +import { + GetObjectRetentionCommandInput, + GetObjectRetentionCommandOutput, +} from "./commands/GetObjectRetentionCommand"; +import { + GetObjectTaggingCommandInput, + GetObjectTaggingCommandOutput, +} from "./commands/GetObjectTaggingCommand"; +import { + GetObjectTorrentCommandInput, + GetObjectTorrentCommandOutput, +} from "./commands/GetObjectTorrentCommand"; +import { + GetPublicAccessBlockCommandInput, + GetPublicAccessBlockCommandOutput, +} from "./commands/GetPublicAccessBlockCommand"; +import { + HeadBucketCommandInput, + HeadBucketCommandOutput, +} from "./commands/HeadBucketCommand"; +import { + HeadObjectCommandInput, + HeadObjectCommandOutput, +} from "./commands/HeadObjectCommand"; +import { + ListBucketAnalyticsConfigurationsCommandInput, + ListBucketAnalyticsConfigurationsCommandOutput, +} from "./commands/ListBucketAnalyticsConfigurationsCommand"; +import { + ListBucketIntelligentTieringConfigurationsCommandInput, + ListBucketIntelligentTieringConfigurationsCommandOutput, +} from "./commands/ListBucketIntelligentTieringConfigurationsCommand"; +import { + ListBucketInventoryConfigurationsCommandInput, + ListBucketInventoryConfigurationsCommandOutput, +} from "./commands/ListBucketInventoryConfigurationsCommand"; +import { + ListBucketMetricsConfigurationsCommandInput, + ListBucketMetricsConfigurationsCommandOutput, +} from "./commands/ListBucketMetricsConfigurationsCommand"; +import { + ListBucketsCommandInput, + ListBucketsCommandOutput, +} from "./commands/ListBucketsCommand"; +import { + ListDirectoryBucketsCommandInput, + ListDirectoryBucketsCommandOutput, +} from "./commands/ListDirectoryBucketsCommand"; +import { + ListMultipartUploadsCommandInput, + ListMultipartUploadsCommandOutput, +} from "./commands/ListMultipartUploadsCommand"; +import { + ListObjectsCommandInput, + ListObjectsCommandOutput, +} from "./commands/ListObjectsCommand"; +import { + ListObjectsV2CommandInput, + ListObjectsV2CommandOutput, +} from "./commands/ListObjectsV2Command"; +import { + ListObjectVersionsCommandInput, + ListObjectVersionsCommandOutput, +} from "./commands/ListObjectVersionsCommand"; +import { + ListPartsCommandInput, + ListPartsCommandOutput, +} from "./commands/ListPartsCommand"; +import { + PutBucketAbacCommandInput, + PutBucketAbacCommandOutput, +} from "./commands/PutBucketAbacCommand"; +import { + PutBucketAccelerateConfigurationCommandInput, + PutBucketAccelerateConfigurationCommandOutput, +} from "./commands/PutBucketAccelerateConfigurationCommand"; +import { + PutBucketAclCommandInput, + PutBucketAclCommandOutput, +} from "./commands/PutBucketAclCommand"; +import { + PutBucketAnalyticsConfigurationCommandInput, + PutBucketAnalyticsConfigurationCommandOutput, +} from "./commands/PutBucketAnalyticsConfigurationCommand"; +import { + PutBucketCorsCommandInput, + PutBucketCorsCommandOutput, +} from "./commands/PutBucketCorsCommand"; +import { + PutBucketEncryptionCommandInput, + PutBucketEncryptionCommandOutput, +} from "./commands/PutBucketEncryptionCommand"; +import { + PutBucketIntelligentTieringConfigurationCommandInput, + PutBucketIntelligentTieringConfigurationCommandOutput, +} from "./commands/PutBucketIntelligentTieringConfigurationCommand"; +import { + PutBucketInventoryConfigurationCommandInput, + PutBucketInventoryConfigurationCommandOutput, +} from "./commands/PutBucketInventoryConfigurationCommand"; +import { + PutBucketLifecycleConfigurationCommandInput, + PutBucketLifecycleConfigurationCommandOutput, +} from "./commands/PutBucketLifecycleConfigurationCommand"; +import { + PutBucketLoggingCommandInput, + PutBucketLoggingCommandOutput, +} from "./commands/PutBucketLoggingCommand"; +import { + PutBucketMetricsConfigurationCommandInput, + PutBucketMetricsConfigurationCommandOutput, +} from "./commands/PutBucketMetricsConfigurationCommand"; +import { + PutBucketNotificationConfigurationCommandInput, + PutBucketNotificationConfigurationCommandOutput, +} from "./commands/PutBucketNotificationConfigurationCommand"; +import { + PutBucketOwnershipControlsCommandInput, + PutBucketOwnershipControlsCommandOutput, +} from "./commands/PutBucketOwnershipControlsCommand"; +import { + PutBucketPolicyCommandInput, + PutBucketPolicyCommandOutput, +} from "./commands/PutBucketPolicyCommand"; +import { + PutBucketReplicationCommandInput, + PutBucketReplicationCommandOutput, +} from "./commands/PutBucketReplicationCommand"; +import { + PutBucketRequestPaymentCommandInput, + PutBucketRequestPaymentCommandOutput, +} from "./commands/PutBucketRequestPaymentCommand"; +import { + PutBucketTaggingCommandInput, + PutBucketTaggingCommandOutput, +} from "./commands/PutBucketTaggingCommand"; +import { + PutBucketVersioningCommandInput, + PutBucketVersioningCommandOutput, +} from "./commands/PutBucketVersioningCommand"; +import { + PutBucketWebsiteCommandInput, + PutBucketWebsiteCommandOutput, +} from "./commands/PutBucketWebsiteCommand"; +import { + PutObjectAclCommandInput, + PutObjectAclCommandOutput, +} from "./commands/PutObjectAclCommand"; +import { + PutObjectCommandInput, + PutObjectCommandOutput, +} from "./commands/PutObjectCommand"; +import { + PutObjectLegalHoldCommandInput, + PutObjectLegalHoldCommandOutput, +} from "./commands/PutObjectLegalHoldCommand"; +import { + PutObjectLockConfigurationCommandInput, + PutObjectLockConfigurationCommandOutput, +} from "./commands/PutObjectLockConfigurationCommand"; +import { + PutObjectRetentionCommandInput, + PutObjectRetentionCommandOutput, +} from "./commands/PutObjectRetentionCommand"; +import { + PutObjectTaggingCommandInput, + PutObjectTaggingCommandOutput, +} from "./commands/PutObjectTaggingCommand"; +import { + PutPublicAccessBlockCommandInput, + PutPublicAccessBlockCommandOutput, +} from "./commands/PutPublicAccessBlockCommand"; +import { + RenameObjectCommandInput, + RenameObjectCommandOutput, +} from "./commands/RenameObjectCommand"; +import { + RestoreObjectCommandInput, + RestoreObjectCommandOutput, +} from "./commands/RestoreObjectCommand"; +import { + SelectObjectContentCommandInput, + SelectObjectContentCommandOutput, +} from "./commands/SelectObjectContentCommand"; +import { + UpdateBucketMetadataInventoryTableConfigurationCommandInput, + UpdateBucketMetadataInventoryTableConfigurationCommandOutput, +} from "./commands/UpdateBucketMetadataInventoryTableConfigurationCommand"; +import { + UpdateBucketMetadataJournalTableConfigurationCommandInput, + UpdateBucketMetadataJournalTableConfigurationCommandOutput, +} from "./commands/UpdateBucketMetadataJournalTableConfigurationCommand"; +import { + UpdateObjectEncryptionCommandInput, + UpdateObjectEncryptionCommandOutput, +} from "./commands/UpdateObjectEncryptionCommand"; +import { + UploadPartCommandInput, + UploadPartCommandOutput, +} from "./commands/UploadPartCommand"; +import { + UploadPartCopyCommandInput, + UploadPartCopyCommandOutput, +} from "./commands/UploadPartCopyCommand"; +import { + WriteGetObjectResponseCommandInput, + WriteGetObjectResponseCommandOutput, +} from "./commands/WriteGetObjectResponseCommand"; +import { S3Client } from "./S3Client"; +export interface S3 { + abortMultipartUpload( + args: AbortMultipartUploadCommandInput, + options?: __HttpHandlerOptions + ): Promise; + abortMultipartUpload( + args: AbortMultipartUploadCommandInput, + cb: (err: any, data?: AbortMultipartUploadCommandOutput) => void + ): void; + abortMultipartUpload( + args: AbortMultipartUploadCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: AbortMultipartUploadCommandOutput) => void + ): void; + completeMultipartUpload( + args: CompleteMultipartUploadCommandInput, + options?: __HttpHandlerOptions + ): Promise; + completeMultipartUpload( + args: CompleteMultipartUploadCommandInput, + cb: (err: any, data?: CompleteMultipartUploadCommandOutput) => void + ): void; + completeMultipartUpload( + args: CompleteMultipartUploadCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CompleteMultipartUploadCommandOutput) => void + ): void; + copyObject( + args: CopyObjectCommandInput, + options?: __HttpHandlerOptions + ): Promise; + copyObject( + args: CopyObjectCommandInput, + cb: (err: any, data?: CopyObjectCommandOutput) => void + ): void; + copyObject( + args: CopyObjectCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CopyObjectCommandOutput) => void + ): void; + createBucket( + args: CreateBucketCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createBucket( + args: CreateBucketCommandInput, + cb: (err: any, data?: CreateBucketCommandOutput) => void + ): void; + createBucket( + args: CreateBucketCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateBucketCommandOutput) => void + ): void; + createBucketMetadataConfiguration( + args: CreateBucketMetadataConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createBucketMetadataConfiguration( + args: CreateBucketMetadataConfigurationCommandInput, + cb: ( + err: any, + data?: CreateBucketMetadataConfigurationCommandOutput + ) => void + ): void; + createBucketMetadataConfiguration( + args: CreateBucketMetadataConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: CreateBucketMetadataConfigurationCommandOutput + ) => void + ): void; + createBucketMetadataTableConfiguration( + args: CreateBucketMetadataTableConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createBucketMetadataTableConfiguration( + args: CreateBucketMetadataTableConfigurationCommandInput, + cb: ( + err: any, + data?: CreateBucketMetadataTableConfigurationCommandOutput + ) => void + ): void; + createBucketMetadataTableConfiguration( + args: CreateBucketMetadataTableConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: CreateBucketMetadataTableConfigurationCommandOutput + ) => void + ): void; + createMultipartUpload( + args: CreateMultipartUploadCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createMultipartUpload( + args: CreateMultipartUploadCommandInput, + cb: (err: any, data?: CreateMultipartUploadCommandOutput) => void + ): void; + createMultipartUpload( + args: CreateMultipartUploadCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateMultipartUploadCommandOutput) => void + ): void; + createSession( + args: CreateSessionCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createSession( + args: CreateSessionCommandInput, + cb: (err: any, data?: CreateSessionCommandOutput) => void + ): void; + createSession( + args: CreateSessionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateSessionCommandOutput) => void + ): void; + deleteBucket( + args: DeleteBucketCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucket( + args: DeleteBucketCommandInput, + cb: (err: any, data?: DeleteBucketCommandOutput) => void + ): void; + deleteBucket( + args: DeleteBucketCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketCommandOutput) => void + ): void; + deleteBucketAnalyticsConfiguration( + args: DeleteBucketAnalyticsConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketAnalyticsConfiguration( + args: DeleteBucketAnalyticsConfigurationCommandInput, + cb: ( + err: any, + data?: DeleteBucketAnalyticsConfigurationCommandOutput + ) => void + ): void; + deleteBucketAnalyticsConfiguration( + args: DeleteBucketAnalyticsConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: DeleteBucketAnalyticsConfigurationCommandOutput + ) => void + ): void; + deleteBucketCors( + args: DeleteBucketCorsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketCors( + args: DeleteBucketCorsCommandInput, + cb: (err: any, data?: DeleteBucketCorsCommandOutput) => void + ): void; + deleteBucketCors( + args: DeleteBucketCorsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketCorsCommandOutput) => void + ): void; + deleteBucketEncryption( + args: DeleteBucketEncryptionCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketEncryption( + args: DeleteBucketEncryptionCommandInput, + cb: (err: any, data?: DeleteBucketEncryptionCommandOutput) => void + ): void; + deleteBucketEncryption( + args: DeleteBucketEncryptionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketEncryptionCommandOutput) => void + ): void; + deleteBucketIntelligentTieringConfiguration( + args: DeleteBucketIntelligentTieringConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketIntelligentTieringConfiguration( + args: DeleteBucketIntelligentTieringConfigurationCommandInput, + cb: ( + err: any, + data?: DeleteBucketIntelligentTieringConfigurationCommandOutput + ) => void + ): void; + deleteBucketIntelligentTieringConfiguration( + args: DeleteBucketIntelligentTieringConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: DeleteBucketIntelligentTieringConfigurationCommandOutput + ) => void + ): void; + deleteBucketInventoryConfiguration( + args: DeleteBucketInventoryConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketInventoryConfiguration( + args: DeleteBucketInventoryConfigurationCommandInput, + cb: ( + err: any, + data?: DeleteBucketInventoryConfigurationCommandOutput + ) => void + ): void; + deleteBucketInventoryConfiguration( + args: DeleteBucketInventoryConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: DeleteBucketInventoryConfigurationCommandOutput + ) => void + ): void; + deleteBucketLifecycle( + args: DeleteBucketLifecycleCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketLifecycle( + args: DeleteBucketLifecycleCommandInput, + cb: (err: any, data?: DeleteBucketLifecycleCommandOutput) => void + ): void; + deleteBucketLifecycle( + args: DeleteBucketLifecycleCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketLifecycleCommandOutput) => void + ): void; + deleteBucketMetadataConfiguration( + args: DeleteBucketMetadataConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketMetadataConfiguration( + args: DeleteBucketMetadataConfigurationCommandInput, + cb: ( + err: any, + data?: DeleteBucketMetadataConfigurationCommandOutput + ) => void + ): void; + deleteBucketMetadataConfiguration( + args: DeleteBucketMetadataConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: DeleteBucketMetadataConfigurationCommandOutput + ) => void + ): void; + deleteBucketMetadataTableConfiguration( + args: DeleteBucketMetadataTableConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketMetadataTableConfiguration( + args: DeleteBucketMetadataTableConfigurationCommandInput, + cb: ( + err: any, + data?: DeleteBucketMetadataTableConfigurationCommandOutput + ) => void + ): void; + deleteBucketMetadataTableConfiguration( + args: DeleteBucketMetadataTableConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: DeleteBucketMetadataTableConfigurationCommandOutput + ) => void + ): void; + deleteBucketMetricsConfiguration( + args: DeleteBucketMetricsConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketMetricsConfiguration( + args: DeleteBucketMetricsConfigurationCommandInput, + cb: (err: any, data?: DeleteBucketMetricsConfigurationCommandOutput) => void + ): void; + deleteBucketMetricsConfiguration( + args: DeleteBucketMetricsConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketMetricsConfigurationCommandOutput) => void + ): void; + deleteBucketOwnershipControls( + args: DeleteBucketOwnershipControlsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketOwnershipControls( + args: DeleteBucketOwnershipControlsCommandInput, + cb: (err: any, data?: DeleteBucketOwnershipControlsCommandOutput) => void + ): void; + deleteBucketOwnershipControls( + args: DeleteBucketOwnershipControlsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketOwnershipControlsCommandOutput) => void + ): void; + deleteBucketPolicy( + args: DeleteBucketPolicyCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketPolicy( + args: DeleteBucketPolicyCommandInput, + cb: (err: any, data?: DeleteBucketPolicyCommandOutput) => void + ): void; + deleteBucketPolicy( + args: DeleteBucketPolicyCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketPolicyCommandOutput) => void + ): void; + deleteBucketReplication( + args: DeleteBucketReplicationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketReplication( + args: DeleteBucketReplicationCommandInput, + cb: (err: any, data?: DeleteBucketReplicationCommandOutput) => void + ): void; + deleteBucketReplication( + args: DeleteBucketReplicationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketReplicationCommandOutput) => void + ): void; + deleteBucketTagging( + args: DeleteBucketTaggingCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketTagging( + args: DeleteBucketTaggingCommandInput, + cb: (err: any, data?: DeleteBucketTaggingCommandOutput) => void + ): void; + deleteBucketTagging( + args: DeleteBucketTaggingCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketTaggingCommandOutput) => void + ): void; + deleteBucketWebsite( + args: DeleteBucketWebsiteCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteBucketWebsite( + args: DeleteBucketWebsiteCommandInput, + cb: (err: any, data?: DeleteBucketWebsiteCommandOutput) => void + ): void; + deleteBucketWebsite( + args: DeleteBucketWebsiteCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteBucketWebsiteCommandOutput) => void + ): void; + deleteObject( + args: DeleteObjectCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteObject( + args: DeleteObjectCommandInput, + cb: (err: any, data?: DeleteObjectCommandOutput) => void + ): void; + deleteObject( + args: DeleteObjectCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteObjectCommandOutput) => void + ): void; + deleteObjects( + args: DeleteObjectsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteObjects( + args: DeleteObjectsCommandInput, + cb: (err: any, data?: DeleteObjectsCommandOutput) => void + ): void; + deleteObjects( + args: DeleteObjectsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteObjectsCommandOutput) => void + ): void; + deleteObjectTagging( + args: DeleteObjectTaggingCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deleteObjectTagging( + args: DeleteObjectTaggingCommandInput, + cb: (err: any, data?: DeleteObjectTaggingCommandOutput) => void + ): void; + deleteObjectTagging( + args: DeleteObjectTaggingCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeleteObjectTaggingCommandOutput) => void + ): void; + deletePublicAccessBlock( + args: DeletePublicAccessBlockCommandInput, + options?: __HttpHandlerOptions + ): Promise; + deletePublicAccessBlock( + args: DeletePublicAccessBlockCommandInput, + cb: (err: any, data?: DeletePublicAccessBlockCommandOutput) => void + ): void; + deletePublicAccessBlock( + args: DeletePublicAccessBlockCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: DeletePublicAccessBlockCommandOutput) => void + ): void; + getBucketAbac( + args: GetBucketAbacCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketAbac( + args: GetBucketAbacCommandInput, + cb: (err: any, data?: GetBucketAbacCommandOutput) => void + ): void; + getBucketAbac( + args: GetBucketAbacCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketAbacCommandOutput) => void + ): void; + getBucketAccelerateConfiguration( + args: GetBucketAccelerateConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketAccelerateConfiguration( + args: GetBucketAccelerateConfigurationCommandInput, + cb: (err: any, data?: GetBucketAccelerateConfigurationCommandOutput) => void + ): void; + getBucketAccelerateConfiguration( + args: GetBucketAccelerateConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketAccelerateConfigurationCommandOutput) => void + ): void; + getBucketAcl( + args: GetBucketAclCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketAcl( + args: GetBucketAclCommandInput, + cb: (err: any, data?: GetBucketAclCommandOutput) => void + ): void; + getBucketAcl( + args: GetBucketAclCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketAclCommandOutput) => void + ): void; + getBucketAnalyticsConfiguration( + args: GetBucketAnalyticsConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketAnalyticsConfiguration( + args: GetBucketAnalyticsConfigurationCommandInput, + cb: (err: any, data?: GetBucketAnalyticsConfigurationCommandOutput) => void + ): void; + getBucketAnalyticsConfiguration( + args: GetBucketAnalyticsConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketAnalyticsConfigurationCommandOutput) => void + ): void; + getBucketCors( + args: GetBucketCorsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketCors( + args: GetBucketCorsCommandInput, + cb: (err: any, data?: GetBucketCorsCommandOutput) => void + ): void; + getBucketCors( + args: GetBucketCorsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketCorsCommandOutput) => void + ): void; + getBucketEncryption( + args: GetBucketEncryptionCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketEncryption( + args: GetBucketEncryptionCommandInput, + cb: (err: any, data?: GetBucketEncryptionCommandOutput) => void + ): void; + getBucketEncryption( + args: GetBucketEncryptionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketEncryptionCommandOutput) => void + ): void; + getBucketIntelligentTieringConfiguration( + args: GetBucketIntelligentTieringConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketIntelligentTieringConfiguration( + args: GetBucketIntelligentTieringConfigurationCommandInput, + cb: ( + err: any, + data?: GetBucketIntelligentTieringConfigurationCommandOutput + ) => void + ): void; + getBucketIntelligentTieringConfiguration( + args: GetBucketIntelligentTieringConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: GetBucketIntelligentTieringConfigurationCommandOutput + ) => void + ): void; + getBucketInventoryConfiguration( + args: GetBucketInventoryConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketInventoryConfiguration( + args: GetBucketInventoryConfigurationCommandInput, + cb: (err: any, data?: GetBucketInventoryConfigurationCommandOutput) => void + ): void; + getBucketInventoryConfiguration( + args: GetBucketInventoryConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketInventoryConfigurationCommandOutput) => void + ): void; + getBucketLifecycleConfiguration( + args: GetBucketLifecycleConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketLifecycleConfiguration( + args: GetBucketLifecycleConfigurationCommandInput, + cb: (err: any, data?: GetBucketLifecycleConfigurationCommandOutput) => void + ): void; + getBucketLifecycleConfiguration( + args: GetBucketLifecycleConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketLifecycleConfigurationCommandOutput) => void + ): void; + getBucketLocation( + args: GetBucketLocationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketLocation( + args: GetBucketLocationCommandInput, + cb: (err: any, data?: GetBucketLocationCommandOutput) => void + ): void; + getBucketLocation( + args: GetBucketLocationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketLocationCommandOutput) => void + ): void; + getBucketLogging( + args: GetBucketLoggingCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketLogging( + args: GetBucketLoggingCommandInput, + cb: (err: any, data?: GetBucketLoggingCommandOutput) => void + ): void; + getBucketLogging( + args: GetBucketLoggingCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketLoggingCommandOutput) => void + ): void; + getBucketMetadataConfiguration( + args: GetBucketMetadataConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketMetadataConfiguration( + args: GetBucketMetadataConfigurationCommandInput, + cb: (err: any, data?: GetBucketMetadataConfigurationCommandOutput) => void + ): void; + getBucketMetadataConfiguration( + args: GetBucketMetadataConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketMetadataConfigurationCommandOutput) => void + ): void; + getBucketMetadataTableConfiguration( + args: GetBucketMetadataTableConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketMetadataTableConfiguration( + args: GetBucketMetadataTableConfigurationCommandInput, + cb: ( + err: any, + data?: GetBucketMetadataTableConfigurationCommandOutput + ) => void + ): void; + getBucketMetadataTableConfiguration( + args: GetBucketMetadataTableConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: GetBucketMetadataTableConfigurationCommandOutput + ) => void + ): void; + getBucketMetricsConfiguration( + args: GetBucketMetricsConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketMetricsConfiguration( + args: GetBucketMetricsConfigurationCommandInput, + cb: (err: any, data?: GetBucketMetricsConfigurationCommandOutput) => void + ): void; + getBucketMetricsConfiguration( + args: GetBucketMetricsConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketMetricsConfigurationCommandOutput) => void + ): void; + getBucketNotificationConfiguration( + args: GetBucketNotificationConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketNotificationConfiguration( + args: GetBucketNotificationConfigurationCommandInput, + cb: ( + err: any, + data?: GetBucketNotificationConfigurationCommandOutput + ) => void + ): void; + getBucketNotificationConfiguration( + args: GetBucketNotificationConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: GetBucketNotificationConfigurationCommandOutput + ) => void + ): void; + getBucketOwnershipControls( + args: GetBucketOwnershipControlsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketOwnershipControls( + args: GetBucketOwnershipControlsCommandInput, + cb: (err: any, data?: GetBucketOwnershipControlsCommandOutput) => void + ): void; + getBucketOwnershipControls( + args: GetBucketOwnershipControlsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketOwnershipControlsCommandOutput) => void + ): void; + getBucketPolicy( + args: GetBucketPolicyCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketPolicy( + args: GetBucketPolicyCommandInput, + cb: (err: any, data?: GetBucketPolicyCommandOutput) => void + ): void; + getBucketPolicy( + args: GetBucketPolicyCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketPolicyCommandOutput) => void + ): void; + getBucketPolicyStatus( + args: GetBucketPolicyStatusCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketPolicyStatus( + args: GetBucketPolicyStatusCommandInput, + cb: (err: any, data?: GetBucketPolicyStatusCommandOutput) => void + ): void; + getBucketPolicyStatus( + args: GetBucketPolicyStatusCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketPolicyStatusCommandOutput) => void + ): void; + getBucketReplication( + args: GetBucketReplicationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketReplication( + args: GetBucketReplicationCommandInput, + cb: (err: any, data?: GetBucketReplicationCommandOutput) => void + ): void; + getBucketReplication( + args: GetBucketReplicationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketReplicationCommandOutput) => void + ): void; + getBucketRequestPayment( + args: GetBucketRequestPaymentCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketRequestPayment( + args: GetBucketRequestPaymentCommandInput, + cb: (err: any, data?: GetBucketRequestPaymentCommandOutput) => void + ): void; + getBucketRequestPayment( + args: GetBucketRequestPaymentCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketRequestPaymentCommandOutput) => void + ): void; + getBucketTagging( + args: GetBucketTaggingCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketTagging( + args: GetBucketTaggingCommandInput, + cb: (err: any, data?: GetBucketTaggingCommandOutput) => void + ): void; + getBucketTagging( + args: GetBucketTaggingCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketTaggingCommandOutput) => void + ): void; + getBucketVersioning( + args: GetBucketVersioningCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketVersioning( + args: GetBucketVersioningCommandInput, + cb: (err: any, data?: GetBucketVersioningCommandOutput) => void + ): void; + getBucketVersioning( + args: GetBucketVersioningCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketVersioningCommandOutput) => void + ): void; + getBucketWebsite( + args: GetBucketWebsiteCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getBucketWebsite( + args: GetBucketWebsiteCommandInput, + cb: (err: any, data?: GetBucketWebsiteCommandOutput) => void + ): void; + getBucketWebsite( + args: GetBucketWebsiteCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetBucketWebsiteCommandOutput) => void + ): void; + getObject( + args: GetObjectCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getObject( + args: GetObjectCommandInput, + cb: (err: any, data?: GetObjectCommandOutput) => void + ): void; + getObject( + args: GetObjectCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetObjectCommandOutput) => void + ): void; + getObjectAcl( + args: GetObjectAclCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getObjectAcl( + args: GetObjectAclCommandInput, + cb: (err: any, data?: GetObjectAclCommandOutput) => void + ): void; + getObjectAcl( + args: GetObjectAclCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetObjectAclCommandOutput) => void + ): void; + getObjectAttributes( + args: GetObjectAttributesCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getObjectAttributes( + args: GetObjectAttributesCommandInput, + cb: (err: any, data?: GetObjectAttributesCommandOutput) => void + ): void; + getObjectAttributes( + args: GetObjectAttributesCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetObjectAttributesCommandOutput) => void + ): void; + getObjectLegalHold( + args: GetObjectLegalHoldCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getObjectLegalHold( + args: GetObjectLegalHoldCommandInput, + cb: (err: any, data?: GetObjectLegalHoldCommandOutput) => void + ): void; + getObjectLegalHold( + args: GetObjectLegalHoldCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetObjectLegalHoldCommandOutput) => void + ): void; + getObjectLockConfiguration( + args: GetObjectLockConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getObjectLockConfiguration( + args: GetObjectLockConfigurationCommandInput, + cb: (err: any, data?: GetObjectLockConfigurationCommandOutput) => void + ): void; + getObjectLockConfiguration( + args: GetObjectLockConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetObjectLockConfigurationCommandOutput) => void + ): void; + getObjectRetention( + args: GetObjectRetentionCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getObjectRetention( + args: GetObjectRetentionCommandInput, + cb: (err: any, data?: GetObjectRetentionCommandOutput) => void + ): void; + getObjectRetention( + args: GetObjectRetentionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetObjectRetentionCommandOutput) => void + ): void; + getObjectTagging( + args: GetObjectTaggingCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getObjectTagging( + args: GetObjectTaggingCommandInput, + cb: (err: any, data?: GetObjectTaggingCommandOutput) => void + ): void; + getObjectTagging( + args: GetObjectTaggingCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetObjectTaggingCommandOutput) => void + ): void; + getObjectTorrent( + args: GetObjectTorrentCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getObjectTorrent( + args: GetObjectTorrentCommandInput, + cb: (err: any, data?: GetObjectTorrentCommandOutput) => void + ): void; + getObjectTorrent( + args: GetObjectTorrentCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetObjectTorrentCommandOutput) => void + ): void; + getPublicAccessBlock( + args: GetPublicAccessBlockCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getPublicAccessBlock( + args: GetPublicAccessBlockCommandInput, + cb: (err: any, data?: GetPublicAccessBlockCommandOutput) => void + ): void; + getPublicAccessBlock( + args: GetPublicAccessBlockCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetPublicAccessBlockCommandOutput) => void + ): void; + headBucket( + args: HeadBucketCommandInput, + options?: __HttpHandlerOptions + ): Promise; + headBucket( + args: HeadBucketCommandInput, + cb: (err: any, data?: HeadBucketCommandOutput) => void + ): void; + headBucket( + args: HeadBucketCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: HeadBucketCommandOutput) => void + ): void; + headObject( + args: HeadObjectCommandInput, + options?: __HttpHandlerOptions + ): Promise; + headObject( + args: HeadObjectCommandInput, + cb: (err: any, data?: HeadObjectCommandOutput) => void + ): void; + headObject( + args: HeadObjectCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: HeadObjectCommandOutput) => void + ): void; + listBucketAnalyticsConfigurations( + args: ListBucketAnalyticsConfigurationsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listBucketAnalyticsConfigurations( + args: ListBucketAnalyticsConfigurationsCommandInput, + cb: ( + err: any, + data?: ListBucketAnalyticsConfigurationsCommandOutput + ) => void + ): void; + listBucketAnalyticsConfigurations( + args: ListBucketAnalyticsConfigurationsCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: ListBucketAnalyticsConfigurationsCommandOutput + ) => void + ): void; + listBucketIntelligentTieringConfigurations( + args: ListBucketIntelligentTieringConfigurationsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listBucketIntelligentTieringConfigurations( + args: ListBucketIntelligentTieringConfigurationsCommandInput, + cb: ( + err: any, + data?: ListBucketIntelligentTieringConfigurationsCommandOutput + ) => void + ): void; + listBucketIntelligentTieringConfigurations( + args: ListBucketIntelligentTieringConfigurationsCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: ListBucketIntelligentTieringConfigurationsCommandOutput + ) => void + ): void; + listBucketInventoryConfigurations( + args: ListBucketInventoryConfigurationsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listBucketInventoryConfigurations( + args: ListBucketInventoryConfigurationsCommandInput, + cb: ( + err: any, + data?: ListBucketInventoryConfigurationsCommandOutput + ) => void + ): void; + listBucketInventoryConfigurations( + args: ListBucketInventoryConfigurationsCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: ListBucketInventoryConfigurationsCommandOutput + ) => void + ): void; + listBucketMetricsConfigurations( + args: ListBucketMetricsConfigurationsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listBucketMetricsConfigurations( + args: ListBucketMetricsConfigurationsCommandInput, + cb: (err: any, data?: ListBucketMetricsConfigurationsCommandOutput) => void + ): void; + listBucketMetricsConfigurations( + args: ListBucketMetricsConfigurationsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListBucketMetricsConfigurationsCommandOutput) => void + ): void; + listBuckets(): Promise; + listBuckets( + args: ListBucketsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listBuckets( + args: ListBucketsCommandInput, + cb: (err: any, data?: ListBucketsCommandOutput) => void + ): void; + listBuckets( + args: ListBucketsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListBucketsCommandOutput) => void + ): void; + listDirectoryBuckets(): Promise; + listDirectoryBuckets( + args: ListDirectoryBucketsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listDirectoryBuckets( + args: ListDirectoryBucketsCommandInput, + cb: (err: any, data?: ListDirectoryBucketsCommandOutput) => void + ): void; + listDirectoryBuckets( + args: ListDirectoryBucketsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListDirectoryBucketsCommandOutput) => void + ): void; + listMultipartUploads( + args: ListMultipartUploadsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listMultipartUploads( + args: ListMultipartUploadsCommandInput, + cb: (err: any, data?: ListMultipartUploadsCommandOutput) => void + ): void; + listMultipartUploads( + args: ListMultipartUploadsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListMultipartUploadsCommandOutput) => void + ): void; + listObjects( + args: ListObjectsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listObjects( + args: ListObjectsCommandInput, + cb: (err: any, data?: ListObjectsCommandOutput) => void + ): void; + listObjects( + args: ListObjectsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListObjectsCommandOutput) => void + ): void; + listObjectsV2( + args: ListObjectsV2CommandInput, + options?: __HttpHandlerOptions + ): Promise; + listObjectsV2( + args: ListObjectsV2CommandInput, + cb: (err: any, data?: ListObjectsV2CommandOutput) => void + ): void; + listObjectsV2( + args: ListObjectsV2CommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListObjectsV2CommandOutput) => void + ): void; + listObjectVersions( + args: ListObjectVersionsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listObjectVersions( + args: ListObjectVersionsCommandInput, + cb: (err: any, data?: ListObjectVersionsCommandOutput) => void + ): void; + listObjectVersions( + args: ListObjectVersionsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListObjectVersionsCommandOutput) => void + ): void; + listParts( + args: ListPartsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listParts( + args: ListPartsCommandInput, + cb: (err: any, data?: ListPartsCommandOutput) => void + ): void; + listParts( + args: ListPartsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListPartsCommandOutput) => void + ): void; + putBucketAbac( + args: PutBucketAbacCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketAbac( + args: PutBucketAbacCommandInput, + cb: (err: any, data?: PutBucketAbacCommandOutput) => void + ): void; + putBucketAbac( + args: PutBucketAbacCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketAbacCommandOutput) => void + ): void; + putBucketAccelerateConfiguration( + args: PutBucketAccelerateConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketAccelerateConfiguration( + args: PutBucketAccelerateConfigurationCommandInput, + cb: (err: any, data?: PutBucketAccelerateConfigurationCommandOutput) => void + ): void; + putBucketAccelerateConfiguration( + args: PutBucketAccelerateConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketAccelerateConfigurationCommandOutput) => void + ): void; + putBucketAcl( + args: PutBucketAclCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketAcl( + args: PutBucketAclCommandInput, + cb: (err: any, data?: PutBucketAclCommandOutput) => void + ): void; + putBucketAcl( + args: PutBucketAclCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketAclCommandOutput) => void + ): void; + putBucketAnalyticsConfiguration( + args: PutBucketAnalyticsConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketAnalyticsConfiguration( + args: PutBucketAnalyticsConfigurationCommandInput, + cb: (err: any, data?: PutBucketAnalyticsConfigurationCommandOutput) => void + ): void; + putBucketAnalyticsConfiguration( + args: PutBucketAnalyticsConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketAnalyticsConfigurationCommandOutput) => void + ): void; + putBucketCors( + args: PutBucketCorsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketCors( + args: PutBucketCorsCommandInput, + cb: (err: any, data?: PutBucketCorsCommandOutput) => void + ): void; + putBucketCors( + args: PutBucketCorsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketCorsCommandOutput) => void + ): void; + putBucketEncryption( + args: PutBucketEncryptionCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketEncryption( + args: PutBucketEncryptionCommandInput, + cb: (err: any, data?: PutBucketEncryptionCommandOutput) => void + ): void; + putBucketEncryption( + args: PutBucketEncryptionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketEncryptionCommandOutput) => void + ): void; + putBucketIntelligentTieringConfiguration( + args: PutBucketIntelligentTieringConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketIntelligentTieringConfiguration( + args: PutBucketIntelligentTieringConfigurationCommandInput, + cb: ( + err: any, + data?: PutBucketIntelligentTieringConfigurationCommandOutput + ) => void + ): void; + putBucketIntelligentTieringConfiguration( + args: PutBucketIntelligentTieringConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: PutBucketIntelligentTieringConfigurationCommandOutput + ) => void + ): void; + putBucketInventoryConfiguration( + args: PutBucketInventoryConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketInventoryConfiguration( + args: PutBucketInventoryConfigurationCommandInput, + cb: (err: any, data?: PutBucketInventoryConfigurationCommandOutput) => void + ): void; + putBucketInventoryConfiguration( + args: PutBucketInventoryConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketInventoryConfigurationCommandOutput) => void + ): void; + putBucketLifecycleConfiguration( + args: PutBucketLifecycleConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketLifecycleConfiguration( + args: PutBucketLifecycleConfigurationCommandInput, + cb: (err: any, data?: PutBucketLifecycleConfigurationCommandOutput) => void + ): void; + putBucketLifecycleConfiguration( + args: PutBucketLifecycleConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketLifecycleConfigurationCommandOutput) => void + ): void; + putBucketLogging( + args: PutBucketLoggingCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketLogging( + args: PutBucketLoggingCommandInput, + cb: (err: any, data?: PutBucketLoggingCommandOutput) => void + ): void; + putBucketLogging( + args: PutBucketLoggingCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketLoggingCommandOutput) => void + ): void; + putBucketMetricsConfiguration( + args: PutBucketMetricsConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketMetricsConfiguration( + args: PutBucketMetricsConfigurationCommandInput, + cb: (err: any, data?: PutBucketMetricsConfigurationCommandOutput) => void + ): void; + putBucketMetricsConfiguration( + args: PutBucketMetricsConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketMetricsConfigurationCommandOutput) => void + ): void; + putBucketNotificationConfiguration( + args: PutBucketNotificationConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketNotificationConfiguration( + args: PutBucketNotificationConfigurationCommandInput, + cb: ( + err: any, + data?: PutBucketNotificationConfigurationCommandOutput + ) => void + ): void; + putBucketNotificationConfiguration( + args: PutBucketNotificationConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: PutBucketNotificationConfigurationCommandOutput + ) => void + ): void; + putBucketOwnershipControls( + args: PutBucketOwnershipControlsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketOwnershipControls( + args: PutBucketOwnershipControlsCommandInput, + cb: (err: any, data?: PutBucketOwnershipControlsCommandOutput) => void + ): void; + putBucketOwnershipControls( + args: PutBucketOwnershipControlsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketOwnershipControlsCommandOutput) => void + ): void; + putBucketPolicy( + args: PutBucketPolicyCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketPolicy( + args: PutBucketPolicyCommandInput, + cb: (err: any, data?: PutBucketPolicyCommandOutput) => void + ): void; + putBucketPolicy( + args: PutBucketPolicyCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketPolicyCommandOutput) => void + ): void; + putBucketReplication( + args: PutBucketReplicationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketReplication( + args: PutBucketReplicationCommandInput, + cb: (err: any, data?: PutBucketReplicationCommandOutput) => void + ): void; + putBucketReplication( + args: PutBucketReplicationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketReplicationCommandOutput) => void + ): void; + putBucketRequestPayment( + args: PutBucketRequestPaymentCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketRequestPayment( + args: PutBucketRequestPaymentCommandInput, + cb: (err: any, data?: PutBucketRequestPaymentCommandOutput) => void + ): void; + putBucketRequestPayment( + args: PutBucketRequestPaymentCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketRequestPaymentCommandOutput) => void + ): void; + putBucketTagging( + args: PutBucketTaggingCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketTagging( + args: PutBucketTaggingCommandInput, + cb: (err: any, data?: PutBucketTaggingCommandOutput) => void + ): void; + putBucketTagging( + args: PutBucketTaggingCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketTaggingCommandOutput) => void + ): void; + putBucketVersioning( + args: PutBucketVersioningCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketVersioning( + args: PutBucketVersioningCommandInput, + cb: (err: any, data?: PutBucketVersioningCommandOutput) => void + ): void; + putBucketVersioning( + args: PutBucketVersioningCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketVersioningCommandOutput) => void + ): void; + putBucketWebsite( + args: PutBucketWebsiteCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putBucketWebsite( + args: PutBucketWebsiteCommandInput, + cb: (err: any, data?: PutBucketWebsiteCommandOutput) => void + ): void; + putBucketWebsite( + args: PutBucketWebsiteCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutBucketWebsiteCommandOutput) => void + ): void; + putObject( + args: PutObjectCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putObject( + args: PutObjectCommandInput, + cb: (err: any, data?: PutObjectCommandOutput) => void + ): void; + putObject( + args: PutObjectCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutObjectCommandOutput) => void + ): void; + putObjectAcl( + args: PutObjectAclCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putObjectAcl( + args: PutObjectAclCommandInput, + cb: (err: any, data?: PutObjectAclCommandOutput) => void + ): void; + putObjectAcl( + args: PutObjectAclCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutObjectAclCommandOutput) => void + ): void; + putObjectLegalHold( + args: PutObjectLegalHoldCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putObjectLegalHold( + args: PutObjectLegalHoldCommandInput, + cb: (err: any, data?: PutObjectLegalHoldCommandOutput) => void + ): void; + putObjectLegalHold( + args: PutObjectLegalHoldCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutObjectLegalHoldCommandOutput) => void + ): void; + putObjectLockConfiguration( + args: PutObjectLockConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putObjectLockConfiguration( + args: PutObjectLockConfigurationCommandInput, + cb: (err: any, data?: PutObjectLockConfigurationCommandOutput) => void + ): void; + putObjectLockConfiguration( + args: PutObjectLockConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutObjectLockConfigurationCommandOutput) => void + ): void; + putObjectRetention( + args: PutObjectRetentionCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putObjectRetention( + args: PutObjectRetentionCommandInput, + cb: (err: any, data?: PutObjectRetentionCommandOutput) => void + ): void; + putObjectRetention( + args: PutObjectRetentionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutObjectRetentionCommandOutput) => void + ): void; + putObjectTagging( + args: PutObjectTaggingCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putObjectTagging( + args: PutObjectTaggingCommandInput, + cb: (err: any, data?: PutObjectTaggingCommandOutput) => void + ): void; + putObjectTagging( + args: PutObjectTaggingCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutObjectTaggingCommandOutput) => void + ): void; + putPublicAccessBlock( + args: PutPublicAccessBlockCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putPublicAccessBlock( + args: PutPublicAccessBlockCommandInput, + cb: (err: any, data?: PutPublicAccessBlockCommandOutput) => void + ): void; + putPublicAccessBlock( + args: PutPublicAccessBlockCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutPublicAccessBlockCommandOutput) => void + ): void; + renameObject( + args: RenameObjectCommandInput, + options?: __HttpHandlerOptions + ): Promise; + renameObject( + args: RenameObjectCommandInput, + cb: (err: any, data?: RenameObjectCommandOutput) => void + ): void; + renameObject( + args: RenameObjectCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: RenameObjectCommandOutput) => void + ): void; + restoreObject( + args: RestoreObjectCommandInput, + options?: __HttpHandlerOptions + ): Promise; + restoreObject( + args: RestoreObjectCommandInput, + cb: (err: any, data?: RestoreObjectCommandOutput) => void + ): void; + restoreObject( + args: RestoreObjectCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: RestoreObjectCommandOutput) => void + ): void; + selectObjectContent( + args: SelectObjectContentCommandInput, + options?: __HttpHandlerOptions + ): Promise; + selectObjectContent( + args: SelectObjectContentCommandInput, + cb: (err: any, data?: SelectObjectContentCommandOutput) => void + ): void; + selectObjectContent( + args: SelectObjectContentCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: SelectObjectContentCommandOutput) => void + ): void; + updateBucketMetadataInventoryTableConfiguration( + args: UpdateBucketMetadataInventoryTableConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + updateBucketMetadataInventoryTableConfiguration( + args: UpdateBucketMetadataInventoryTableConfigurationCommandInput, + cb: ( + err: any, + data?: UpdateBucketMetadataInventoryTableConfigurationCommandOutput + ) => void + ): void; + updateBucketMetadataInventoryTableConfiguration( + args: UpdateBucketMetadataInventoryTableConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: UpdateBucketMetadataInventoryTableConfigurationCommandOutput + ) => void + ): void; + updateBucketMetadataJournalTableConfiguration( + args: UpdateBucketMetadataJournalTableConfigurationCommandInput, + options?: __HttpHandlerOptions + ): Promise; + updateBucketMetadataJournalTableConfiguration( + args: UpdateBucketMetadataJournalTableConfigurationCommandInput, + cb: ( + err: any, + data?: UpdateBucketMetadataJournalTableConfigurationCommandOutput + ) => void + ): void; + updateBucketMetadataJournalTableConfiguration( + args: UpdateBucketMetadataJournalTableConfigurationCommandInput, + options: __HttpHandlerOptions, + cb: ( + err: any, + data?: UpdateBucketMetadataJournalTableConfigurationCommandOutput + ) => void + ): void; + updateObjectEncryption( + args: UpdateObjectEncryptionCommandInput, + options?: __HttpHandlerOptions + ): Promise; + updateObjectEncryption( + args: UpdateObjectEncryptionCommandInput, + cb: (err: any, data?: UpdateObjectEncryptionCommandOutput) => void + ): void; + updateObjectEncryption( + args: UpdateObjectEncryptionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UpdateObjectEncryptionCommandOutput) => void + ): void; + uploadPart( + args: UploadPartCommandInput, + options?: __HttpHandlerOptions + ): Promise; + uploadPart( + args: UploadPartCommandInput, + cb: (err: any, data?: UploadPartCommandOutput) => void + ): void; + uploadPart( + args: UploadPartCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UploadPartCommandOutput) => void + ): void; + uploadPartCopy( + args: UploadPartCopyCommandInput, + options?: __HttpHandlerOptions + ): Promise; + uploadPartCopy( + args: UploadPartCopyCommandInput, + cb: (err: any, data?: UploadPartCopyCommandOutput) => void + ): void; + uploadPartCopy( + args: UploadPartCopyCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UploadPartCopyCommandOutput) => void + ): void; + writeGetObjectResponse( + args: WriteGetObjectResponseCommandInput, + options?: __HttpHandlerOptions + ): Promise; + writeGetObjectResponse( + args: WriteGetObjectResponseCommandInput, + cb: (err: any, data?: WriteGetObjectResponseCommandOutput) => void + ): void; + writeGetObjectResponse( + args: WriteGetObjectResponseCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: WriteGetObjectResponseCommandOutput) => void + ): void; + paginateListBuckets( + args?: ListBucketsCommandInput, + paginationConfig?: Pick< + PaginationConfiguration, + Exclude + > + ): Paginator; + paginateListDirectoryBuckets( + args?: ListDirectoryBucketsCommandInput, + paginationConfig?: Pick< + PaginationConfiguration, + Exclude + > + ): Paginator; + paginateListObjectsV2( + args: ListObjectsV2CommandInput, + paginationConfig?: Pick< + PaginationConfiguration, + Exclude + > + ): Paginator; + paginateListParts( + args: ListPartsCommandInput, + paginationConfig?: Pick< + PaginationConfiguration, + Exclude + > + ): Paginator; + waitUntilBucketExists( + args: HeadBucketCommandInput, + waiterConfig: + | number + | Pick< + WaiterConfiguration, + Exclude, "client"> + > + ): Promise; + waitUntilBucketNotExists( + args: HeadBucketCommandInput, + waiterConfig: + | number + | Pick< + WaiterConfiguration, + Exclude, "client"> + > + ): Promise; + waitUntilObjectExists( + args: HeadObjectCommandInput, + waiterConfig: + | number + | Pick< + WaiterConfiguration, + Exclude, "client"> + > + ): Promise; + waitUntilObjectNotExists( + args: HeadObjectCommandInput, + waiterConfig: + | number + | Pick< + WaiterConfiguration, + Exclude, "client"> + > + ): Promise; +} +export declare class S3 extends S3Client implements S3 {} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/S3Client.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/S3Client.d.ts new file mode 100644 index 0000000..e9c68d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/S3Client.d.ts @@ -0,0 +1,785 @@ +import { + FlexibleChecksumsInputConfig, + FlexibleChecksumsResolvedConfig, +} from "@aws-sdk/middleware-flexible-checksums"; +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { S3InputConfig, S3ResolvedConfig } from "@aws-sdk/middleware-sdk-s3"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { GetAwsChunkedEncodingStream } from "@aws-sdk/types"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EventStreamSerdeInputConfig, + EventStreamSerdeResolvedConfig, +} from "@smithy/eventstream-serde-config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { + AwsCredentialIdentityProvider, + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + EventStreamSerdeProvider as __EventStreamSerdeProvider, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + SdkStreamMixinInjector as __SdkStreamMixinInjector, + StreamCollector as __StreamCollector, + StreamHasher as __StreamHasher, + UrlParser as __UrlParser, + UserAgent as __UserAgent, +} from "@smithy/types"; +import { Readable as Readable } from "node:stream"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + AbortMultipartUploadCommandInput, + AbortMultipartUploadCommandOutput, +} from "./commands/AbortMultipartUploadCommand"; +import { + CompleteMultipartUploadCommandInput, + CompleteMultipartUploadCommandOutput, +} from "./commands/CompleteMultipartUploadCommand"; +import { + CopyObjectCommandInput, + CopyObjectCommandOutput, +} from "./commands/CopyObjectCommand"; +import { + CreateBucketCommandInput, + CreateBucketCommandOutput, +} from "./commands/CreateBucketCommand"; +import { + CreateBucketMetadataConfigurationCommandInput, + CreateBucketMetadataConfigurationCommandOutput, +} from "./commands/CreateBucketMetadataConfigurationCommand"; +import { + CreateBucketMetadataTableConfigurationCommandInput, + CreateBucketMetadataTableConfigurationCommandOutput, +} from "./commands/CreateBucketMetadataTableConfigurationCommand"; +import { + CreateMultipartUploadCommandInput, + CreateMultipartUploadCommandOutput, +} from "./commands/CreateMultipartUploadCommand"; +import { + CreateSessionCommandInput, + CreateSessionCommandOutput, +} from "./commands/CreateSessionCommand"; +import { + DeleteBucketAnalyticsConfigurationCommandInput, + DeleteBucketAnalyticsConfigurationCommandOutput, +} from "./commands/DeleteBucketAnalyticsConfigurationCommand"; +import { + DeleteBucketCommandInput, + DeleteBucketCommandOutput, +} from "./commands/DeleteBucketCommand"; +import { + DeleteBucketCorsCommandInput, + DeleteBucketCorsCommandOutput, +} from "./commands/DeleteBucketCorsCommand"; +import { + DeleteBucketEncryptionCommandInput, + DeleteBucketEncryptionCommandOutput, +} from "./commands/DeleteBucketEncryptionCommand"; +import { + DeleteBucketIntelligentTieringConfigurationCommandInput, + DeleteBucketIntelligentTieringConfigurationCommandOutput, +} from "./commands/DeleteBucketIntelligentTieringConfigurationCommand"; +import { + DeleteBucketInventoryConfigurationCommandInput, + DeleteBucketInventoryConfigurationCommandOutput, +} from "./commands/DeleteBucketInventoryConfigurationCommand"; +import { + DeleteBucketLifecycleCommandInput, + DeleteBucketLifecycleCommandOutput, +} from "./commands/DeleteBucketLifecycleCommand"; +import { + DeleteBucketMetadataConfigurationCommandInput, + DeleteBucketMetadataConfigurationCommandOutput, +} from "./commands/DeleteBucketMetadataConfigurationCommand"; +import { + DeleteBucketMetadataTableConfigurationCommandInput, + DeleteBucketMetadataTableConfigurationCommandOutput, +} from "./commands/DeleteBucketMetadataTableConfigurationCommand"; +import { + DeleteBucketMetricsConfigurationCommandInput, + DeleteBucketMetricsConfigurationCommandOutput, +} from "./commands/DeleteBucketMetricsConfigurationCommand"; +import { + DeleteBucketOwnershipControlsCommandInput, + DeleteBucketOwnershipControlsCommandOutput, +} from "./commands/DeleteBucketOwnershipControlsCommand"; +import { + DeleteBucketPolicyCommandInput, + DeleteBucketPolicyCommandOutput, +} from "./commands/DeleteBucketPolicyCommand"; +import { + DeleteBucketReplicationCommandInput, + DeleteBucketReplicationCommandOutput, +} from "./commands/DeleteBucketReplicationCommand"; +import { + DeleteBucketTaggingCommandInput, + DeleteBucketTaggingCommandOutput, +} from "./commands/DeleteBucketTaggingCommand"; +import { + DeleteBucketWebsiteCommandInput, + DeleteBucketWebsiteCommandOutput, +} from "./commands/DeleteBucketWebsiteCommand"; +import { + DeleteObjectCommandInput, + DeleteObjectCommandOutput, +} from "./commands/DeleteObjectCommand"; +import { + DeleteObjectsCommandInput, + DeleteObjectsCommandOutput, +} from "./commands/DeleteObjectsCommand"; +import { + DeleteObjectTaggingCommandInput, + DeleteObjectTaggingCommandOutput, +} from "./commands/DeleteObjectTaggingCommand"; +import { + DeletePublicAccessBlockCommandInput, + DeletePublicAccessBlockCommandOutput, +} from "./commands/DeletePublicAccessBlockCommand"; +import { + GetBucketAbacCommandInput, + GetBucketAbacCommandOutput, +} from "./commands/GetBucketAbacCommand"; +import { + GetBucketAccelerateConfigurationCommandInput, + GetBucketAccelerateConfigurationCommandOutput, +} from "./commands/GetBucketAccelerateConfigurationCommand"; +import { + GetBucketAclCommandInput, + GetBucketAclCommandOutput, +} from "./commands/GetBucketAclCommand"; +import { + GetBucketAnalyticsConfigurationCommandInput, + GetBucketAnalyticsConfigurationCommandOutput, +} from "./commands/GetBucketAnalyticsConfigurationCommand"; +import { + GetBucketCorsCommandInput, + GetBucketCorsCommandOutput, +} from "./commands/GetBucketCorsCommand"; +import { + GetBucketEncryptionCommandInput, + GetBucketEncryptionCommandOutput, +} from "./commands/GetBucketEncryptionCommand"; +import { + GetBucketIntelligentTieringConfigurationCommandInput, + GetBucketIntelligentTieringConfigurationCommandOutput, +} from "./commands/GetBucketIntelligentTieringConfigurationCommand"; +import { + GetBucketInventoryConfigurationCommandInput, + GetBucketInventoryConfigurationCommandOutput, +} from "./commands/GetBucketInventoryConfigurationCommand"; +import { + GetBucketLifecycleConfigurationCommandInput, + GetBucketLifecycleConfigurationCommandOutput, +} from "./commands/GetBucketLifecycleConfigurationCommand"; +import { + GetBucketLocationCommandInput, + GetBucketLocationCommandOutput, +} from "./commands/GetBucketLocationCommand"; +import { + GetBucketLoggingCommandInput, + GetBucketLoggingCommandOutput, +} from "./commands/GetBucketLoggingCommand"; +import { + GetBucketMetadataConfigurationCommandInput, + GetBucketMetadataConfigurationCommandOutput, +} from "./commands/GetBucketMetadataConfigurationCommand"; +import { + GetBucketMetadataTableConfigurationCommandInput, + GetBucketMetadataTableConfigurationCommandOutput, +} from "./commands/GetBucketMetadataTableConfigurationCommand"; +import { + GetBucketMetricsConfigurationCommandInput, + GetBucketMetricsConfigurationCommandOutput, +} from "./commands/GetBucketMetricsConfigurationCommand"; +import { + GetBucketNotificationConfigurationCommandInput, + GetBucketNotificationConfigurationCommandOutput, +} from "./commands/GetBucketNotificationConfigurationCommand"; +import { + GetBucketOwnershipControlsCommandInput, + GetBucketOwnershipControlsCommandOutput, +} from "./commands/GetBucketOwnershipControlsCommand"; +import { + GetBucketPolicyCommandInput, + GetBucketPolicyCommandOutput, +} from "./commands/GetBucketPolicyCommand"; +import { + GetBucketPolicyStatusCommandInput, + GetBucketPolicyStatusCommandOutput, +} from "./commands/GetBucketPolicyStatusCommand"; +import { + GetBucketReplicationCommandInput, + GetBucketReplicationCommandOutput, +} from "./commands/GetBucketReplicationCommand"; +import { + GetBucketRequestPaymentCommandInput, + GetBucketRequestPaymentCommandOutput, +} from "./commands/GetBucketRequestPaymentCommand"; +import { + GetBucketTaggingCommandInput, + GetBucketTaggingCommandOutput, +} from "./commands/GetBucketTaggingCommand"; +import { + GetBucketVersioningCommandInput, + GetBucketVersioningCommandOutput, +} from "./commands/GetBucketVersioningCommand"; +import { + GetBucketWebsiteCommandInput, + GetBucketWebsiteCommandOutput, +} from "./commands/GetBucketWebsiteCommand"; +import { + GetObjectAclCommandInput, + GetObjectAclCommandOutput, +} from "./commands/GetObjectAclCommand"; +import { + GetObjectAttributesCommandInput, + GetObjectAttributesCommandOutput, +} from "./commands/GetObjectAttributesCommand"; +import { + GetObjectCommandInput, + GetObjectCommandOutput, +} from "./commands/GetObjectCommand"; +import { + GetObjectLegalHoldCommandInput, + GetObjectLegalHoldCommandOutput, +} from "./commands/GetObjectLegalHoldCommand"; +import { + GetObjectLockConfigurationCommandInput, + GetObjectLockConfigurationCommandOutput, +} from "./commands/GetObjectLockConfigurationCommand"; +import { + GetObjectRetentionCommandInput, + GetObjectRetentionCommandOutput, +} from "./commands/GetObjectRetentionCommand"; +import { + GetObjectTaggingCommandInput, + GetObjectTaggingCommandOutput, +} from "./commands/GetObjectTaggingCommand"; +import { + GetObjectTorrentCommandInput, + GetObjectTorrentCommandOutput, +} from "./commands/GetObjectTorrentCommand"; +import { + GetPublicAccessBlockCommandInput, + GetPublicAccessBlockCommandOutput, +} from "./commands/GetPublicAccessBlockCommand"; +import { + HeadBucketCommandInput, + HeadBucketCommandOutput, +} from "./commands/HeadBucketCommand"; +import { + HeadObjectCommandInput, + HeadObjectCommandOutput, +} from "./commands/HeadObjectCommand"; +import { + ListBucketAnalyticsConfigurationsCommandInput, + ListBucketAnalyticsConfigurationsCommandOutput, +} from "./commands/ListBucketAnalyticsConfigurationsCommand"; +import { + ListBucketIntelligentTieringConfigurationsCommandInput, + ListBucketIntelligentTieringConfigurationsCommandOutput, +} from "./commands/ListBucketIntelligentTieringConfigurationsCommand"; +import { + ListBucketInventoryConfigurationsCommandInput, + ListBucketInventoryConfigurationsCommandOutput, +} from "./commands/ListBucketInventoryConfigurationsCommand"; +import { + ListBucketMetricsConfigurationsCommandInput, + ListBucketMetricsConfigurationsCommandOutput, +} from "./commands/ListBucketMetricsConfigurationsCommand"; +import { + ListBucketsCommandInput, + ListBucketsCommandOutput, +} from "./commands/ListBucketsCommand"; +import { + ListDirectoryBucketsCommandInput, + ListDirectoryBucketsCommandOutput, +} from "./commands/ListDirectoryBucketsCommand"; +import { + ListMultipartUploadsCommandInput, + ListMultipartUploadsCommandOutput, +} from "./commands/ListMultipartUploadsCommand"; +import { + ListObjectsCommandInput, + ListObjectsCommandOutput, +} from "./commands/ListObjectsCommand"; +import { + ListObjectsV2CommandInput, + ListObjectsV2CommandOutput, +} from "./commands/ListObjectsV2Command"; +import { + ListObjectVersionsCommandInput, + ListObjectVersionsCommandOutput, +} from "./commands/ListObjectVersionsCommand"; +import { + ListPartsCommandInput, + ListPartsCommandOutput, +} from "./commands/ListPartsCommand"; +import { + PutBucketAbacCommandInput, + PutBucketAbacCommandOutput, +} from "./commands/PutBucketAbacCommand"; +import { + PutBucketAccelerateConfigurationCommandInput, + PutBucketAccelerateConfigurationCommandOutput, +} from "./commands/PutBucketAccelerateConfigurationCommand"; +import { + PutBucketAclCommandInput, + PutBucketAclCommandOutput, +} from "./commands/PutBucketAclCommand"; +import { + PutBucketAnalyticsConfigurationCommandInput, + PutBucketAnalyticsConfigurationCommandOutput, +} from "./commands/PutBucketAnalyticsConfigurationCommand"; +import { + PutBucketCorsCommandInput, + PutBucketCorsCommandOutput, +} from "./commands/PutBucketCorsCommand"; +import { + PutBucketEncryptionCommandInput, + PutBucketEncryptionCommandOutput, +} from "./commands/PutBucketEncryptionCommand"; +import { + PutBucketIntelligentTieringConfigurationCommandInput, + PutBucketIntelligentTieringConfigurationCommandOutput, +} from "./commands/PutBucketIntelligentTieringConfigurationCommand"; +import { + PutBucketInventoryConfigurationCommandInput, + PutBucketInventoryConfigurationCommandOutput, +} from "./commands/PutBucketInventoryConfigurationCommand"; +import { + PutBucketLifecycleConfigurationCommandInput, + PutBucketLifecycleConfigurationCommandOutput, +} from "./commands/PutBucketLifecycleConfigurationCommand"; +import { + PutBucketLoggingCommandInput, + PutBucketLoggingCommandOutput, +} from "./commands/PutBucketLoggingCommand"; +import { + PutBucketMetricsConfigurationCommandInput, + PutBucketMetricsConfigurationCommandOutput, +} from "./commands/PutBucketMetricsConfigurationCommand"; +import { + PutBucketNotificationConfigurationCommandInput, + PutBucketNotificationConfigurationCommandOutput, +} from "./commands/PutBucketNotificationConfigurationCommand"; +import { + PutBucketOwnershipControlsCommandInput, + PutBucketOwnershipControlsCommandOutput, +} from "./commands/PutBucketOwnershipControlsCommand"; +import { + PutBucketPolicyCommandInput, + PutBucketPolicyCommandOutput, +} from "./commands/PutBucketPolicyCommand"; +import { + PutBucketReplicationCommandInput, + PutBucketReplicationCommandOutput, +} from "./commands/PutBucketReplicationCommand"; +import { + PutBucketRequestPaymentCommandInput, + PutBucketRequestPaymentCommandOutput, +} from "./commands/PutBucketRequestPaymentCommand"; +import { + PutBucketTaggingCommandInput, + PutBucketTaggingCommandOutput, +} from "./commands/PutBucketTaggingCommand"; +import { + PutBucketVersioningCommandInput, + PutBucketVersioningCommandOutput, +} from "./commands/PutBucketVersioningCommand"; +import { + PutBucketWebsiteCommandInput, + PutBucketWebsiteCommandOutput, +} from "./commands/PutBucketWebsiteCommand"; +import { + PutObjectAclCommandInput, + PutObjectAclCommandOutput, +} from "./commands/PutObjectAclCommand"; +import { + PutObjectCommandInput, + PutObjectCommandOutput, +} from "./commands/PutObjectCommand"; +import { + PutObjectLegalHoldCommandInput, + PutObjectLegalHoldCommandOutput, +} from "./commands/PutObjectLegalHoldCommand"; +import { + PutObjectLockConfigurationCommandInput, + PutObjectLockConfigurationCommandOutput, +} from "./commands/PutObjectLockConfigurationCommand"; +import { + PutObjectRetentionCommandInput, + PutObjectRetentionCommandOutput, +} from "./commands/PutObjectRetentionCommand"; +import { + PutObjectTaggingCommandInput, + PutObjectTaggingCommandOutput, +} from "./commands/PutObjectTaggingCommand"; +import { + PutPublicAccessBlockCommandInput, + PutPublicAccessBlockCommandOutput, +} from "./commands/PutPublicAccessBlockCommand"; +import { + RenameObjectCommandInput, + RenameObjectCommandOutput, +} from "./commands/RenameObjectCommand"; +import { + RestoreObjectCommandInput, + RestoreObjectCommandOutput, +} from "./commands/RestoreObjectCommand"; +import { + SelectObjectContentCommandInput, + SelectObjectContentCommandOutput, +} from "./commands/SelectObjectContentCommand"; +import { + UpdateBucketMetadataInventoryTableConfigurationCommandInput, + UpdateBucketMetadataInventoryTableConfigurationCommandOutput, +} from "./commands/UpdateBucketMetadataInventoryTableConfigurationCommand"; +import { + UpdateBucketMetadataJournalTableConfigurationCommandInput, + UpdateBucketMetadataJournalTableConfigurationCommandOutput, +} from "./commands/UpdateBucketMetadataJournalTableConfigurationCommand"; +import { + UpdateObjectEncryptionCommandInput, + UpdateObjectEncryptionCommandOutput, +} from "./commands/UpdateObjectEncryptionCommand"; +import { + UploadPartCommandInput, + UploadPartCommandOutput, +} from "./commands/UploadPartCommand"; +import { + UploadPartCopyCommandInput, + UploadPartCopyCommandOutput, +} from "./commands/UploadPartCopyCommand"; +import { + WriteGetObjectResponseCommandInput, + WriteGetObjectResponseCommandOutput, +} from "./commands/WriteGetObjectResponseCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = + | AbortMultipartUploadCommandInput + | CompleteMultipartUploadCommandInput + | CopyObjectCommandInput + | CreateBucketCommandInput + | CreateBucketMetadataConfigurationCommandInput + | CreateBucketMetadataTableConfigurationCommandInput + | CreateMultipartUploadCommandInput + | CreateSessionCommandInput + | DeleteBucketAnalyticsConfigurationCommandInput + | DeleteBucketCommandInput + | DeleteBucketCorsCommandInput + | DeleteBucketEncryptionCommandInput + | DeleteBucketIntelligentTieringConfigurationCommandInput + | DeleteBucketInventoryConfigurationCommandInput + | DeleteBucketLifecycleCommandInput + | DeleteBucketMetadataConfigurationCommandInput + | DeleteBucketMetadataTableConfigurationCommandInput + | DeleteBucketMetricsConfigurationCommandInput + | DeleteBucketOwnershipControlsCommandInput + | DeleteBucketPolicyCommandInput + | DeleteBucketReplicationCommandInput + | DeleteBucketTaggingCommandInput + | DeleteBucketWebsiteCommandInput + | DeleteObjectCommandInput + | DeleteObjectTaggingCommandInput + | DeleteObjectsCommandInput + | DeletePublicAccessBlockCommandInput + | GetBucketAbacCommandInput + | GetBucketAccelerateConfigurationCommandInput + | GetBucketAclCommandInput + | GetBucketAnalyticsConfigurationCommandInput + | GetBucketCorsCommandInput + | GetBucketEncryptionCommandInput + | GetBucketIntelligentTieringConfigurationCommandInput + | GetBucketInventoryConfigurationCommandInput + | GetBucketLifecycleConfigurationCommandInput + | GetBucketLocationCommandInput + | GetBucketLoggingCommandInput + | GetBucketMetadataConfigurationCommandInput + | GetBucketMetadataTableConfigurationCommandInput + | GetBucketMetricsConfigurationCommandInput + | GetBucketNotificationConfigurationCommandInput + | GetBucketOwnershipControlsCommandInput + | GetBucketPolicyCommandInput + | GetBucketPolicyStatusCommandInput + | GetBucketReplicationCommandInput + | GetBucketRequestPaymentCommandInput + | GetBucketTaggingCommandInput + | GetBucketVersioningCommandInput + | GetBucketWebsiteCommandInput + | GetObjectAclCommandInput + | GetObjectAttributesCommandInput + | GetObjectCommandInput + | GetObjectLegalHoldCommandInput + | GetObjectLockConfigurationCommandInput + | GetObjectRetentionCommandInput + | GetObjectTaggingCommandInput + | GetObjectTorrentCommandInput + | GetPublicAccessBlockCommandInput + | HeadBucketCommandInput + | HeadObjectCommandInput + | ListBucketAnalyticsConfigurationsCommandInput + | ListBucketIntelligentTieringConfigurationsCommandInput + | ListBucketInventoryConfigurationsCommandInput + | ListBucketMetricsConfigurationsCommandInput + | ListBucketsCommandInput + | ListDirectoryBucketsCommandInput + | ListMultipartUploadsCommandInput + | ListObjectVersionsCommandInput + | ListObjectsCommandInput + | ListObjectsV2CommandInput + | ListPartsCommandInput + | PutBucketAbacCommandInput + | PutBucketAccelerateConfigurationCommandInput + | PutBucketAclCommandInput + | PutBucketAnalyticsConfigurationCommandInput + | PutBucketCorsCommandInput + | PutBucketEncryptionCommandInput + | PutBucketIntelligentTieringConfigurationCommandInput + | PutBucketInventoryConfigurationCommandInput + | PutBucketLifecycleConfigurationCommandInput + | PutBucketLoggingCommandInput + | PutBucketMetricsConfigurationCommandInput + | PutBucketNotificationConfigurationCommandInput + | PutBucketOwnershipControlsCommandInput + | PutBucketPolicyCommandInput + | PutBucketReplicationCommandInput + | PutBucketRequestPaymentCommandInput + | PutBucketTaggingCommandInput + | PutBucketVersioningCommandInput + | PutBucketWebsiteCommandInput + | PutObjectAclCommandInput + | PutObjectCommandInput + | PutObjectLegalHoldCommandInput + | PutObjectLockConfigurationCommandInput + | PutObjectRetentionCommandInput + | PutObjectTaggingCommandInput + | PutPublicAccessBlockCommandInput + | RenameObjectCommandInput + | RestoreObjectCommandInput + | SelectObjectContentCommandInput + | UpdateBucketMetadataInventoryTableConfigurationCommandInput + | UpdateBucketMetadataJournalTableConfigurationCommandInput + | UpdateObjectEncryptionCommandInput + | UploadPartCommandInput + | UploadPartCopyCommandInput + | WriteGetObjectResponseCommandInput; +export type ServiceOutputTypes = + | AbortMultipartUploadCommandOutput + | CompleteMultipartUploadCommandOutput + | CopyObjectCommandOutput + | CreateBucketCommandOutput + | CreateBucketMetadataConfigurationCommandOutput + | CreateBucketMetadataTableConfigurationCommandOutput + | CreateMultipartUploadCommandOutput + | CreateSessionCommandOutput + | DeleteBucketAnalyticsConfigurationCommandOutput + | DeleteBucketCommandOutput + | DeleteBucketCorsCommandOutput + | DeleteBucketEncryptionCommandOutput + | DeleteBucketIntelligentTieringConfigurationCommandOutput + | DeleteBucketInventoryConfigurationCommandOutput + | DeleteBucketLifecycleCommandOutput + | DeleteBucketMetadataConfigurationCommandOutput + | DeleteBucketMetadataTableConfigurationCommandOutput + | DeleteBucketMetricsConfigurationCommandOutput + | DeleteBucketOwnershipControlsCommandOutput + | DeleteBucketPolicyCommandOutput + | DeleteBucketReplicationCommandOutput + | DeleteBucketTaggingCommandOutput + | DeleteBucketWebsiteCommandOutput + | DeleteObjectCommandOutput + | DeleteObjectTaggingCommandOutput + | DeleteObjectsCommandOutput + | DeletePublicAccessBlockCommandOutput + | GetBucketAbacCommandOutput + | GetBucketAccelerateConfigurationCommandOutput + | GetBucketAclCommandOutput + | GetBucketAnalyticsConfigurationCommandOutput + | GetBucketCorsCommandOutput + | GetBucketEncryptionCommandOutput + | GetBucketIntelligentTieringConfigurationCommandOutput + | GetBucketInventoryConfigurationCommandOutput + | GetBucketLifecycleConfigurationCommandOutput + | GetBucketLocationCommandOutput + | GetBucketLoggingCommandOutput + | GetBucketMetadataConfigurationCommandOutput + | GetBucketMetadataTableConfigurationCommandOutput + | GetBucketMetricsConfigurationCommandOutput + | GetBucketNotificationConfigurationCommandOutput + | GetBucketOwnershipControlsCommandOutput + | GetBucketPolicyCommandOutput + | GetBucketPolicyStatusCommandOutput + | GetBucketReplicationCommandOutput + | GetBucketRequestPaymentCommandOutput + | GetBucketTaggingCommandOutput + | GetBucketVersioningCommandOutput + | GetBucketWebsiteCommandOutput + | GetObjectAclCommandOutput + | GetObjectAttributesCommandOutput + | GetObjectCommandOutput + | GetObjectLegalHoldCommandOutput + | GetObjectLockConfigurationCommandOutput + | GetObjectRetentionCommandOutput + | GetObjectTaggingCommandOutput + | GetObjectTorrentCommandOutput + | GetPublicAccessBlockCommandOutput + | HeadBucketCommandOutput + | HeadObjectCommandOutput + | ListBucketAnalyticsConfigurationsCommandOutput + | ListBucketIntelligentTieringConfigurationsCommandOutput + | ListBucketInventoryConfigurationsCommandOutput + | ListBucketMetricsConfigurationsCommandOutput + | ListBucketsCommandOutput + | ListDirectoryBucketsCommandOutput + | ListMultipartUploadsCommandOutput + | ListObjectVersionsCommandOutput + | ListObjectsCommandOutput + | ListObjectsV2CommandOutput + | ListPartsCommandOutput + | PutBucketAbacCommandOutput + | PutBucketAccelerateConfigurationCommandOutput + | PutBucketAclCommandOutput + | PutBucketAnalyticsConfigurationCommandOutput + | PutBucketCorsCommandOutput + | PutBucketEncryptionCommandOutput + | PutBucketIntelligentTieringConfigurationCommandOutput + | PutBucketInventoryConfigurationCommandOutput + | PutBucketLifecycleConfigurationCommandOutput + | PutBucketLoggingCommandOutput + | PutBucketMetricsConfigurationCommandOutput + | PutBucketNotificationConfigurationCommandOutput + | PutBucketOwnershipControlsCommandOutput + | PutBucketPolicyCommandOutput + | PutBucketReplicationCommandOutput + | PutBucketRequestPaymentCommandOutput + | PutBucketTaggingCommandOutput + | PutBucketVersioningCommandOutput + | PutBucketWebsiteCommandOutput + | PutObjectAclCommandOutput + | PutObjectCommandOutput + | PutObjectLegalHoldCommandOutput + | PutObjectLockConfigurationCommandOutput + | PutObjectRetentionCommandOutput + | PutObjectTaggingCommandOutput + | PutPublicAccessBlockCommandOutput + | RenameObjectCommandOutput + | RestoreObjectCommandOutput + | SelectObjectContentCommandOutput + | UpdateBucketMetadataInventoryTableConfigurationCommandOutput + | UpdateBucketMetadataJournalTableConfigurationCommandOutput + | UpdateObjectEncryptionCommandOutput + | UploadPartCommandOutput + | UploadPartCopyCommandOutput + | WriteGetObjectResponseCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: __Provider<__UserAgent>; + streamHasher?: __StreamHasher | __StreamHasher; + md5?: __ChecksumConstructor | __HashConstructor; + sha1?: __ChecksumConstructor | __HashConstructor; + getAwsChunkedEncodingStream?: GetAwsChunkedEncodingStream; + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + eventStreamSerdeProvider?: __EventStreamSerdeProvider; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; + signingEscapePath?: boolean; + useArnRegion?: boolean | undefined | __Provider; + sdkStreamMixin?: __SdkStreamMixinInjector; +} +export type S3ClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + FlexibleChecksumsInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + EventStreamSerdeInputConfig & + HttpAuthSchemeInputConfig & + S3InputConfig & + ClientInputEndpointParameters; +export interface S3ClientConfig extends S3ClientConfigType {} +export type S3ClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + FlexibleChecksumsResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + EventStreamSerdeResolvedConfig & + HttpAuthSchemeResolvedConfig & + S3ResolvedConfig & + ClientResolvedEndpointParameters; +export interface S3ClientResolvedConfig extends S3ClientResolvedConfigType {} +export declare class S3Client extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + S3ClientResolvedConfig +> { + readonly config: S3ClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..9a00449 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + HttpAuthScheme, +} from "@smithy/types"; +import { S3HttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: S3HttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): S3HttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: S3HttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..4359721 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,58 @@ +import { + AwsSdkSigV4AAuthInputConfig, + AwsSdkSigV4AAuthResolvedConfig, + AwsSdkSigV4APreviouslyResolved, + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core/httpAuthSchemes"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { EndpointParameters } from "../endpoint/EndpointParameters"; +import { S3ClientResolvedConfig } from "../S3Client"; +interface _S3HttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +export interface S3HttpAuthSchemeParameters + extends _S3HttpAuthSchemeParameters, + EndpointParameters { + region?: string; +} +export interface S3HttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + S3ClientResolvedConfig, + HandlerExecutionContext, + S3HttpAuthSchemeParameters, + object + > {} +export declare const defaultS3HttpAuthSchemeParametersProvider: S3HttpAuthSchemeParametersProvider; +export interface S3HttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultS3HttpAuthSchemeProvider: S3HttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig + extends AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AAuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: S3HttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4AAuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: S3HttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & + HttpAuthSchemeInputConfig & + AwsSdkSigV4PreviouslyResolved & + AwsSdkSigV4APreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/AbortMultipartUploadCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/AbortMultipartUploadCommand.d.ts new file mode 100644 index 0000000..fa2ab3a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/AbortMultipartUploadCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + AbortMultipartUploadOutput, + AbortMultipartUploadRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface AbortMultipartUploadCommandInput + extends AbortMultipartUploadRequest {} +export interface AbortMultipartUploadCommandOutput + extends AbortMultipartUploadOutput, + __MetadataBearer {} +declare const AbortMultipartUploadCommand_base: { + new ( + input: AbortMultipartUploadCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AbortMultipartUploadCommandInput, + AbortMultipartUploadCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: AbortMultipartUploadCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AbortMultipartUploadCommandInput, + AbortMultipartUploadCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class AbortMultipartUploadCommand extends AbortMultipartUploadCommand_base { + protected static __types: { + api: { + input: AbortMultipartUploadRequest; + output: AbortMultipartUploadOutput; + }; + sdk: { + input: AbortMultipartUploadCommandInput; + output: AbortMultipartUploadCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CompleteMultipartUploadCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CompleteMultipartUploadCommand.d.ts new file mode 100644 index 0000000..b3beb1f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CompleteMultipartUploadCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CompleteMultipartUploadOutput, + CompleteMultipartUploadRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface CompleteMultipartUploadCommandInput + extends CompleteMultipartUploadRequest {} +export interface CompleteMultipartUploadCommandOutput + extends CompleteMultipartUploadOutput, + __MetadataBearer {} +declare const CompleteMultipartUploadCommand_base: { + new ( + input: CompleteMultipartUploadCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CompleteMultipartUploadCommandInput, + CompleteMultipartUploadCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: CompleteMultipartUploadCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CompleteMultipartUploadCommandInput, + CompleteMultipartUploadCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CompleteMultipartUploadCommand extends CompleteMultipartUploadCommand_base { + protected static __types: { + api: { + input: CompleteMultipartUploadRequest; + output: CompleteMultipartUploadOutput; + }; + sdk: { + input: CompleteMultipartUploadCommandInput; + output: CompleteMultipartUploadCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CopyObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CopyObjectCommand.d.ts new file mode 100644 index 0000000..c909be0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CopyObjectCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { CopyObjectOutput, CopyObjectRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface CopyObjectCommandInput extends CopyObjectRequest {} +export interface CopyObjectCommandOutput + extends CopyObjectOutput, + __MetadataBearer {} +declare const CopyObjectCommand_base: { + new ( + input: CopyObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CopyObjectCommandInput, + CopyObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: CopyObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CopyObjectCommandInput, + CopyObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CopyObjectCommand extends CopyObjectCommand_base { + protected static __types: { + api: { + input: CopyObjectRequest; + output: CopyObjectOutput; + }; + sdk: { + input: CopyObjectCommandInput; + output: CopyObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateBucketCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateBucketCommand.d.ts new file mode 100644 index 0000000..cf2769c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateBucketCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { CreateBucketOutput, CreateBucketRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateBucketCommandInput extends CreateBucketRequest {} +export interface CreateBucketCommandOutput + extends CreateBucketOutput, + __MetadataBearer {} +declare const CreateBucketCommand_base: { + new ( + input: CreateBucketCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateBucketCommandInput, + CreateBucketCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: CreateBucketCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateBucketCommandInput, + CreateBucketCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateBucketCommand extends CreateBucketCommand_base { + protected static __types: { + api: { + input: CreateBucketRequest; + output: CreateBucketOutput; + }; + sdk: { + input: CreateBucketCommandInput; + output: CreateBucketCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateBucketMetadataConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateBucketMetadataConfigurationCommand.d.ts new file mode 100644 index 0000000..de96654 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateBucketMetadataConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { CreateBucketMetadataConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateBucketMetadataConfigurationCommandInput + extends CreateBucketMetadataConfigurationRequest {} +export interface CreateBucketMetadataConfigurationCommandOutput + extends __MetadataBearer {} +declare const CreateBucketMetadataConfigurationCommand_base: { + new ( + input: CreateBucketMetadataConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateBucketMetadataConfigurationCommandInput, + CreateBucketMetadataConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: CreateBucketMetadataConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateBucketMetadataConfigurationCommandInput, + CreateBucketMetadataConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateBucketMetadataConfigurationCommand extends CreateBucketMetadataConfigurationCommand_base { + protected static __types: { + api: { + input: CreateBucketMetadataConfigurationRequest; + output: {}; + }; + sdk: { + input: CreateBucketMetadataConfigurationCommandInput; + output: CreateBucketMetadataConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateBucketMetadataTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateBucketMetadataTableConfigurationCommand.d.ts new file mode 100644 index 0000000..6244983 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateBucketMetadataTableConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { CreateBucketMetadataTableConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateBucketMetadataTableConfigurationCommandInput + extends CreateBucketMetadataTableConfigurationRequest {} +export interface CreateBucketMetadataTableConfigurationCommandOutput + extends __MetadataBearer {} +declare const CreateBucketMetadataTableConfigurationCommand_base: { + new ( + input: CreateBucketMetadataTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateBucketMetadataTableConfigurationCommandInput, + CreateBucketMetadataTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: CreateBucketMetadataTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateBucketMetadataTableConfigurationCommandInput, + CreateBucketMetadataTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateBucketMetadataTableConfigurationCommand extends CreateBucketMetadataTableConfigurationCommand_base { + protected static __types: { + api: { + input: CreateBucketMetadataTableConfigurationRequest; + output: {}; + }; + sdk: { + input: CreateBucketMetadataTableConfigurationCommandInput; + output: CreateBucketMetadataTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateMultipartUploadCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateMultipartUploadCommand.d.ts new file mode 100644 index 0000000..d29115f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateMultipartUploadCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CreateMultipartUploadOutput, + CreateMultipartUploadRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateMultipartUploadCommandInput + extends CreateMultipartUploadRequest {} +export interface CreateMultipartUploadCommandOutput + extends CreateMultipartUploadOutput, + __MetadataBearer {} +declare const CreateMultipartUploadCommand_base: { + new ( + input: CreateMultipartUploadCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateMultipartUploadCommandInput, + CreateMultipartUploadCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: CreateMultipartUploadCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateMultipartUploadCommandInput, + CreateMultipartUploadCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateMultipartUploadCommand extends CreateMultipartUploadCommand_base { + protected static __types: { + api: { + input: CreateMultipartUploadRequest; + output: CreateMultipartUploadOutput; + }; + sdk: { + input: CreateMultipartUploadCommandInput; + output: CreateMultipartUploadCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateSessionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateSessionCommand.d.ts new file mode 100644 index 0000000..d4a3f26 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/CreateSessionCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { CreateSessionOutput, CreateSessionRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateSessionCommandInput extends CreateSessionRequest {} +export interface CreateSessionCommandOutput + extends CreateSessionOutput, + __MetadataBearer {} +declare const CreateSessionCommand_base: { + new ( + input: CreateSessionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateSessionCommandInput, + CreateSessionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: CreateSessionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateSessionCommandInput, + CreateSessionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateSessionCommand extends CreateSessionCommand_base { + protected static __types: { + api: { + input: CreateSessionRequest; + output: CreateSessionOutput; + }; + sdk: { + input: CreateSessionCommandInput; + output: CreateSessionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketAnalyticsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketAnalyticsConfigurationCommand.d.ts new file mode 100644 index 0000000..9a48fdd --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketAnalyticsConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketAnalyticsConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketAnalyticsConfigurationCommandInput + extends DeleteBucketAnalyticsConfigurationRequest {} +export interface DeleteBucketAnalyticsConfigurationCommandOutput + extends __MetadataBearer {} +declare const DeleteBucketAnalyticsConfigurationCommand_base: { + new ( + input: DeleteBucketAnalyticsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketAnalyticsConfigurationCommandInput, + DeleteBucketAnalyticsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketAnalyticsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketAnalyticsConfigurationCommandInput, + DeleteBucketAnalyticsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketAnalyticsConfigurationCommand extends DeleteBucketAnalyticsConfigurationCommand_base { + protected static __types: { + api: { + input: DeleteBucketAnalyticsConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketAnalyticsConfigurationCommandInput; + output: DeleteBucketAnalyticsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketCommand.d.ts new file mode 100644 index 0000000..9ad8a7c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketCommandInput extends DeleteBucketRequest {} +export interface DeleteBucketCommandOutput extends __MetadataBearer {} +declare const DeleteBucketCommand_base: { + new ( + input: DeleteBucketCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketCommandInput, + DeleteBucketCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketCommandInput, + DeleteBucketCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketCommand extends DeleteBucketCommand_base { + protected static __types: { + api: { + input: DeleteBucketRequest; + output: {}; + }; + sdk: { + input: DeleteBucketCommandInput; + output: DeleteBucketCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketCorsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketCorsCommand.d.ts new file mode 100644 index 0000000..d87223d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketCorsCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketCorsRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketCorsCommandInput extends DeleteBucketCorsRequest {} +export interface DeleteBucketCorsCommandOutput extends __MetadataBearer {} +declare const DeleteBucketCorsCommand_base: { + new ( + input: DeleteBucketCorsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketCorsCommandInput, + DeleteBucketCorsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketCorsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketCorsCommandInput, + DeleteBucketCorsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketCorsCommand extends DeleteBucketCorsCommand_base { + protected static __types: { + api: { + input: DeleteBucketCorsRequest; + output: {}; + }; + sdk: { + input: DeleteBucketCorsCommandInput; + output: DeleteBucketCorsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketEncryptionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketEncryptionCommand.d.ts new file mode 100644 index 0000000..338ae26 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketEncryptionCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketEncryptionRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketEncryptionCommandInput + extends DeleteBucketEncryptionRequest {} +export interface DeleteBucketEncryptionCommandOutput extends __MetadataBearer {} +declare const DeleteBucketEncryptionCommand_base: { + new ( + input: DeleteBucketEncryptionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketEncryptionCommandInput, + DeleteBucketEncryptionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketEncryptionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketEncryptionCommandInput, + DeleteBucketEncryptionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketEncryptionCommand extends DeleteBucketEncryptionCommand_base { + protected static __types: { + api: { + input: DeleteBucketEncryptionRequest; + output: {}; + }; + sdk: { + input: DeleteBucketEncryptionCommandInput; + output: DeleteBucketEncryptionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts new file mode 100644 index 0000000..1e8ef97 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketIntelligentTieringConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketIntelligentTieringConfigurationCommandInput + extends DeleteBucketIntelligentTieringConfigurationRequest {} +export interface DeleteBucketIntelligentTieringConfigurationCommandOutput + extends __MetadataBearer {} +declare const DeleteBucketIntelligentTieringConfigurationCommand_base: { + new ( + input: DeleteBucketIntelligentTieringConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketIntelligentTieringConfigurationCommandInput, + DeleteBucketIntelligentTieringConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketIntelligentTieringConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketIntelligentTieringConfigurationCommandInput, + DeleteBucketIntelligentTieringConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketIntelligentTieringConfigurationCommand extends DeleteBucketIntelligentTieringConfigurationCommand_base { + protected static __types: { + api: { + input: DeleteBucketIntelligentTieringConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketIntelligentTieringConfigurationCommandInput; + output: DeleteBucketIntelligentTieringConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketInventoryConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketInventoryConfigurationCommand.d.ts new file mode 100644 index 0000000..b0cfe13 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketInventoryConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketInventoryConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketInventoryConfigurationCommandInput + extends DeleteBucketInventoryConfigurationRequest {} +export interface DeleteBucketInventoryConfigurationCommandOutput + extends __MetadataBearer {} +declare const DeleteBucketInventoryConfigurationCommand_base: { + new ( + input: DeleteBucketInventoryConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketInventoryConfigurationCommandInput, + DeleteBucketInventoryConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketInventoryConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketInventoryConfigurationCommandInput, + DeleteBucketInventoryConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketInventoryConfigurationCommand extends DeleteBucketInventoryConfigurationCommand_base { + protected static __types: { + api: { + input: DeleteBucketInventoryConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketInventoryConfigurationCommandInput; + output: DeleteBucketInventoryConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketLifecycleCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketLifecycleCommand.d.ts new file mode 100644 index 0000000..6acbea0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketLifecycleCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketLifecycleRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketLifecycleCommandInput + extends DeleteBucketLifecycleRequest {} +export interface DeleteBucketLifecycleCommandOutput extends __MetadataBearer {} +declare const DeleteBucketLifecycleCommand_base: { + new ( + input: DeleteBucketLifecycleCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketLifecycleCommandInput, + DeleteBucketLifecycleCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketLifecycleCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketLifecycleCommandInput, + DeleteBucketLifecycleCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketLifecycleCommand extends DeleteBucketLifecycleCommand_base { + protected static __types: { + api: { + input: DeleteBucketLifecycleRequest; + output: {}; + }; + sdk: { + input: DeleteBucketLifecycleCommandInput; + output: DeleteBucketLifecycleCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketMetadataConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketMetadataConfigurationCommand.d.ts new file mode 100644 index 0000000..1c2ec42 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketMetadataConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketMetadataConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketMetadataConfigurationCommandInput + extends DeleteBucketMetadataConfigurationRequest {} +export interface DeleteBucketMetadataConfigurationCommandOutput + extends __MetadataBearer {} +declare const DeleteBucketMetadataConfigurationCommand_base: { + new ( + input: DeleteBucketMetadataConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketMetadataConfigurationCommandInput, + DeleteBucketMetadataConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketMetadataConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketMetadataConfigurationCommandInput, + DeleteBucketMetadataConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketMetadataConfigurationCommand extends DeleteBucketMetadataConfigurationCommand_base { + protected static __types: { + api: { + input: DeleteBucketMetadataConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketMetadataConfigurationCommandInput; + output: DeleteBucketMetadataConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketMetadataTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketMetadataTableConfigurationCommand.d.ts new file mode 100644 index 0000000..1f01054 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketMetadataTableConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketMetadataTableConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketMetadataTableConfigurationCommandInput + extends DeleteBucketMetadataTableConfigurationRequest {} +export interface DeleteBucketMetadataTableConfigurationCommandOutput + extends __MetadataBearer {} +declare const DeleteBucketMetadataTableConfigurationCommand_base: { + new ( + input: DeleteBucketMetadataTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketMetadataTableConfigurationCommandInput, + DeleteBucketMetadataTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketMetadataTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketMetadataTableConfigurationCommandInput, + DeleteBucketMetadataTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketMetadataTableConfigurationCommand extends DeleteBucketMetadataTableConfigurationCommand_base { + protected static __types: { + api: { + input: DeleteBucketMetadataTableConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketMetadataTableConfigurationCommandInput; + output: DeleteBucketMetadataTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketMetricsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketMetricsConfigurationCommand.d.ts new file mode 100644 index 0000000..4e4ecee --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketMetricsConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketMetricsConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketMetricsConfigurationCommandInput + extends DeleteBucketMetricsConfigurationRequest {} +export interface DeleteBucketMetricsConfigurationCommandOutput + extends __MetadataBearer {} +declare const DeleteBucketMetricsConfigurationCommand_base: { + new ( + input: DeleteBucketMetricsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketMetricsConfigurationCommandInput, + DeleteBucketMetricsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketMetricsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketMetricsConfigurationCommandInput, + DeleteBucketMetricsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketMetricsConfigurationCommand extends DeleteBucketMetricsConfigurationCommand_base { + protected static __types: { + api: { + input: DeleteBucketMetricsConfigurationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketMetricsConfigurationCommandInput; + output: DeleteBucketMetricsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketOwnershipControlsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketOwnershipControlsCommand.d.ts new file mode 100644 index 0000000..38009af --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketOwnershipControlsCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketOwnershipControlsRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketOwnershipControlsCommandInput + extends DeleteBucketOwnershipControlsRequest {} +export interface DeleteBucketOwnershipControlsCommandOutput + extends __MetadataBearer {} +declare const DeleteBucketOwnershipControlsCommand_base: { + new ( + input: DeleteBucketOwnershipControlsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketOwnershipControlsCommandInput, + DeleteBucketOwnershipControlsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketOwnershipControlsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketOwnershipControlsCommandInput, + DeleteBucketOwnershipControlsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketOwnershipControlsCommand extends DeleteBucketOwnershipControlsCommand_base { + protected static __types: { + api: { + input: DeleteBucketOwnershipControlsRequest; + output: {}; + }; + sdk: { + input: DeleteBucketOwnershipControlsCommandInput; + output: DeleteBucketOwnershipControlsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketPolicyCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketPolicyCommand.d.ts new file mode 100644 index 0000000..7b2765d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketPolicyCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketPolicyRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketPolicyCommandInput + extends DeleteBucketPolicyRequest {} +export interface DeleteBucketPolicyCommandOutput extends __MetadataBearer {} +declare const DeleteBucketPolicyCommand_base: { + new ( + input: DeleteBucketPolicyCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketPolicyCommandInput, + DeleteBucketPolicyCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketPolicyCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketPolicyCommandInput, + DeleteBucketPolicyCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketPolicyCommand extends DeleteBucketPolicyCommand_base { + protected static __types: { + api: { + input: DeleteBucketPolicyRequest; + output: {}; + }; + sdk: { + input: DeleteBucketPolicyCommandInput; + output: DeleteBucketPolicyCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketReplicationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketReplicationCommand.d.ts new file mode 100644 index 0000000..c3d3360 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketReplicationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketReplicationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketReplicationCommandInput + extends DeleteBucketReplicationRequest {} +export interface DeleteBucketReplicationCommandOutput + extends __MetadataBearer {} +declare const DeleteBucketReplicationCommand_base: { + new ( + input: DeleteBucketReplicationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketReplicationCommandInput, + DeleteBucketReplicationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketReplicationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketReplicationCommandInput, + DeleteBucketReplicationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketReplicationCommand extends DeleteBucketReplicationCommand_base { + protected static __types: { + api: { + input: DeleteBucketReplicationRequest; + output: {}; + }; + sdk: { + input: DeleteBucketReplicationCommandInput; + output: DeleteBucketReplicationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketTaggingCommand.d.ts new file mode 100644 index 0000000..5651977 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketTaggingCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketTaggingRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketTaggingCommandInput + extends DeleteBucketTaggingRequest {} +export interface DeleteBucketTaggingCommandOutput extends __MetadataBearer {} +declare const DeleteBucketTaggingCommand_base: { + new ( + input: DeleteBucketTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketTaggingCommandInput, + DeleteBucketTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketTaggingCommandInput, + DeleteBucketTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketTaggingCommand extends DeleteBucketTaggingCommand_base { + protected static __types: { + api: { + input: DeleteBucketTaggingRequest; + output: {}; + }; + sdk: { + input: DeleteBucketTaggingCommandInput; + output: DeleteBucketTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketWebsiteCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketWebsiteCommand.d.ts new file mode 100644 index 0000000..3176422 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteBucketWebsiteCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteBucketWebsiteRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteBucketWebsiteCommandInput + extends DeleteBucketWebsiteRequest {} +export interface DeleteBucketWebsiteCommandOutput extends __MetadataBearer {} +declare const DeleteBucketWebsiteCommand_base: { + new ( + input: DeleteBucketWebsiteCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketWebsiteCommandInput, + DeleteBucketWebsiteCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteBucketWebsiteCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteBucketWebsiteCommandInput, + DeleteBucketWebsiteCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteBucketWebsiteCommand extends DeleteBucketWebsiteCommand_base { + protected static __types: { + api: { + input: DeleteBucketWebsiteRequest; + output: {}; + }; + sdk: { + input: DeleteBucketWebsiteCommandInput; + output: DeleteBucketWebsiteCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectCommand.d.ts new file mode 100644 index 0000000..28547ff --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteObjectOutput, DeleteObjectRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteObjectCommandInput extends DeleteObjectRequest {} +export interface DeleteObjectCommandOutput + extends DeleteObjectOutput, + __MetadataBearer {} +declare const DeleteObjectCommand_base: { + new ( + input: DeleteObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteObjectCommandInput, + DeleteObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteObjectCommandInput, + DeleteObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteObjectCommand extends DeleteObjectCommand_base { + protected static __types: { + api: { + input: DeleteObjectRequest; + output: DeleteObjectOutput; + }; + sdk: { + input: DeleteObjectCommandInput; + output: DeleteObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectTaggingCommand.d.ts new file mode 100644 index 0000000..820300f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectTaggingCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + DeleteObjectTaggingOutput, + DeleteObjectTaggingRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteObjectTaggingCommandInput + extends DeleteObjectTaggingRequest {} +export interface DeleteObjectTaggingCommandOutput + extends DeleteObjectTaggingOutput, + __MetadataBearer {} +declare const DeleteObjectTaggingCommand_base: { + new ( + input: DeleteObjectTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteObjectTaggingCommandInput, + DeleteObjectTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteObjectTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteObjectTaggingCommandInput, + DeleteObjectTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteObjectTaggingCommand extends DeleteObjectTaggingCommand_base { + protected static __types: { + api: { + input: DeleteObjectTaggingRequest; + output: DeleteObjectTaggingOutput; + }; + sdk: { + input: DeleteObjectTaggingCommandInput; + output: DeleteObjectTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectsCommand.d.ts new file mode 100644 index 0000000..0f8a30f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectsCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeleteObjectsOutput, DeleteObjectsRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeleteObjectsCommandInput extends DeleteObjectsRequest {} +export interface DeleteObjectsCommandOutput + extends DeleteObjectsOutput, + __MetadataBearer {} +declare const DeleteObjectsCommand_base: { + new ( + input: DeleteObjectsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteObjectsCommandInput, + DeleteObjectsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeleteObjectsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeleteObjectsCommandInput, + DeleteObjectsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeleteObjectsCommand extends DeleteObjectsCommand_base { + protected static __types: { + api: { + input: DeleteObjectsRequest; + output: DeleteObjectsOutput; + }; + sdk: { + input: DeleteObjectsCommandInput; + output: DeleteObjectsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeletePublicAccessBlockCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeletePublicAccessBlockCommand.d.ts new file mode 100644 index 0000000..d572811 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeletePublicAccessBlockCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { DeletePublicAccessBlockRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface DeletePublicAccessBlockCommandInput + extends DeletePublicAccessBlockRequest {} +export interface DeletePublicAccessBlockCommandOutput + extends __MetadataBearer {} +declare const DeletePublicAccessBlockCommand_base: { + new ( + input: DeletePublicAccessBlockCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeletePublicAccessBlockCommandInput, + DeletePublicAccessBlockCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: DeletePublicAccessBlockCommandInput + ): import("@smithy/smithy-client").CommandImpl< + DeletePublicAccessBlockCommandInput, + DeletePublicAccessBlockCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class DeletePublicAccessBlockCommand extends DeletePublicAccessBlockCommand_base { + protected static __types: { + api: { + input: DeletePublicAccessBlockRequest; + output: {}; + }; + sdk: { + input: DeletePublicAccessBlockCommandInput; + output: DeletePublicAccessBlockCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAbacCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAbacCommand.d.ts new file mode 100644 index 0000000..f57e1d3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAbacCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { GetBucketAbacOutput, GetBucketAbacRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketAbacCommandInput extends GetBucketAbacRequest {} +export interface GetBucketAbacCommandOutput + extends GetBucketAbacOutput, + __MetadataBearer {} +declare const GetBucketAbacCommand_base: { + new ( + input: GetBucketAbacCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketAbacCommandInput, + GetBucketAbacCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketAbacCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketAbacCommandInput, + GetBucketAbacCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketAbacCommand extends GetBucketAbacCommand_base { + protected static __types: { + api: { + input: GetBucketAbacRequest; + output: GetBucketAbacOutput; + }; + sdk: { + input: GetBucketAbacCommandInput; + output: GetBucketAbacCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAccelerateConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAccelerateConfigurationCommand.d.ts new file mode 100644 index 0000000..44c8db8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAccelerateConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketAccelerateConfigurationOutput, + GetBucketAccelerateConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketAccelerateConfigurationCommandInput + extends GetBucketAccelerateConfigurationRequest {} +export interface GetBucketAccelerateConfigurationCommandOutput + extends GetBucketAccelerateConfigurationOutput, + __MetadataBearer {} +declare const GetBucketAccelerateConfigurationCommand_base: { + new ( + input: GetBucketAccelerateConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketAccelerateConfigurationCommandInput, + GetBucketAccelerateConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketAccelerateConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketAccelerateConfigurationCommandInput, + GetBucketAccelerateConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketAccelerateConfigurationCommand extends GetBucketAccelerateConfigurationCommand_base { + protected static __types: { + api: { + input: GetBucketAccelerateConfigurationRequest; + output: GetBucketAccelerateConfigurationOutput; + }; + sdk: { + input: GetBucketAccelerateConfigurationCommandInput; + output: GetBucketAccelerateConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAclCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAclCommand.d.ts new file mode 100644 index 0000000..895e35f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAclCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { GetBucketAclOutput, GetBucketAclRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketAclCommandInput extends GetBucketAclRequest {} +export interface GetBucketAclCommandOutput + extends GetBucketAclOutput, + __MetadataBearer {} +declare const GetBucketAclCommand_base: { + new ( + input: GetBucketAclCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketAclCommandInput, + GetBucketAclCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketAclCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketAclCommandInput, + GetBucketAclCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketAclCommand extends GetBucketAclCommand_base { + protected static __types: { + api: { + input: GetBucketAclRequest; + output: GetBucketAclOutput; + }; + sdk: { + input: GetBucketAclCommandInput; + output: GetBucketAclCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAnalyticsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAnalyticsConfigurationCommand.d.ts new file mode 100644 index 0000000..1016a1c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketAnalyticsConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketAnalyticsConfigurationOutput, + GetBucketAnalyticsConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketAnalyticsConfigurationCommandInput + extends GetBucketAnalyticsConfigurationRequest {} +export interface GetBucketAnalyticsConfigurationCommandOutput + extends GetBucketAnalyticsConfigurationOutput, + __MetadataBearer {} +declare const GetBucketAnalyticsConfigurationCommand_base: { + new ( + input: GetBucketAnalyticsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketAnalyticsConfigurationCommandInput, + GetBucketAnalyticsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketAnalyticsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketAnalyticsConfigurationCommandInput, + GetBucketAnalyticsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketAnalyticsConfigurationCommand extends GetBucketAnalyticsConfigurationCommand_base { + protected static __types: { + api: { + input: GetBucketAnalyticsConfigurationRequest; + output: GetBucketAnalyticsConfigurationOutput; + }; + sdk: { + input: GetBucketAnalyticsConfigurationCommandInput; + output: GetBucketAnalyticsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketCorsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketCorsCommand.d.ts new file mode 100644 index 0000000..e1e7062 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketCorsCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { GetBucketCorsOutput, GetBucketCorsRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketCorsCommandInput extends GetBucketCorsRequest {} +export interface GetBucketCorsCommandOutput + extends GetBucketCorsOutput, + __MetadataBearer {} +declare const GetBucketCorsCommand_base: { + new ( + input: GetBucketCorsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketCorsCommandInput, + GetBucketCorsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketCorsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketCorsCommandInput, + GetBucketCorsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketCorsCommand extends GetBucketCorsCommand_base { + protected static __types: { + api: { + input: GetBucketCorsRequest; + output: GetBucketCorsOutput; + }; + sdk: { + input: GetBucketCorsCommandInput; + output: GetBucketCorsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketEncryptionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketEncryptionCommand.d.ts new file mode 100644 index 0000000..d57f75c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketEncryptionCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketEncryptionOutput, + GetBucketEncryptionRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketEncryptionCommandInput + extends GetBucketEncryptionRequest {} +export interface GetBucketEncryptionCommandOutput + extends GetBucketEncryptionOutput, + __MetadataBearer {} +declare const GetBucketEncryptionCommand_base: { + new ( + input: GetBucketEncryptionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketEncryptionCommandInput, + GetBucketEncryptionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketEncryptionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketEncryptionCommandInput, + GetBucketEncryptionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketEncryptionCommand extends GetBucketEncryptionCommand_base { + protected static __types: { + api: { + input: GetBucketEncryptionRequest; + output: GetBucketEncryptionOutput; + }; + sdk: { + input: GetBucketEncryptionCommandInput; + output: GetBucketEncryptionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts new file mode 100644 index 0000000..287af0c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketIntelligentTieringConfigurationOutput, + GetBucketIntelligentTieringConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketIntelligentTieringConfigurationCommandInput + extends GetBucketIntelligentTieringConfigurationRequest {} +export interface GetBucketIntelligentTieringConfigurationCommandOutput + extends GetBucketIntelligentTieringConfigurationOutput, + __MetadataBearer {} +declare const GetBucketIntelligentTieringConfigurationCommand_base: { + new ( + input: GetBucketIntelligentTieringConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketIntelligentTieringConfigurationCommandInput, + GetBucketIntelligentTieringConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketIntelligentTieringConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketIntelligentTieringConfigurationCommandInput, + GetBucketIntelligentTieringConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketIntelligentTieringConfigurationCommand extends GetBucketIntelligentTieringConfigurationCommand_base { + protected static __types: { + api: { + input: GetBucketIntelligentTieringConfigurationRequest; + output: GetBucketIntelligentTieringConfigurationOutput; + }; + sdk: { + input: GetBucketIntelligentTieringConfigurationCommandInput; + output: GetBucketIntelligentTieringConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketInventoryConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketInventoryConfigurationCommand.d.ts new file mode 100644 index 0000000..d20b096 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketInventoryConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketInventoryConfigurationOutput, + GetBucketInventoryConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketInventoryConfigurationCommandInput + extends GetBucketInventoryConfigurationRequest {} +export interface GetBucketInventoryConfigurationCommandOutput + extends GetBucketInventoryConfigurationOutput, + __MetadataBearer {} +declare const GetBucketInventoryConfigurationCommand_base: { + new ( + input: GetBucketInventoryConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketInventoryConfigurationCommandInput, + GetBucketInventoryConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketInventoryConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketInventoryConfigurationCommandInput, + GetBucketInventoryConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketInventoryConfigurationCommand extends GetBucketInventoryConfigurationCommand_base { + protected static __types: { + api: { + input: GetBucketInventoryConfigurationRequest; + output: GetBucketInventoryConfigurationOutput; + }; + sdk: { + input: GetBucketInventoryConfigurationCommandInput; + output: GetBucketInventoryConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketLifecycleConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketLifecycleConfigurationCommand.d.ts new file mode 100644 index 0000000..69e0f8c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketLifecycleConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketLifecycleConfigurationOutput, + GetBucketLifecycleConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketLifecycleConfigurationCommandInput + extends GetBucketLifecycleConfigurationRequest {} +export interface GetBucketLifecycleConfigurationCommandOutput + extends GetBucketLifecycleConfigurationOutput, + __MetadataBearer {} +declare const GetBucketLifecycleConfigurationCommand_base: { + new ( + input: GetBucketLifecycleConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketLifecycleConfigurationCommandInput, + GetBucketLifecycleConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketLifecycleConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketLifecycleConfigurationCommandInput, + GetBucketLifecycleConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketLifecycleConfigurationCommand extends GetBucketLifecycleConfigurationCommand_base { + protected static __types: { + api: { + input: GetBucketLifecycleConfigurationRequest; + output: GetBucketLifecycleConfigurationOutput; + }; + sdk: { + input: GetBucketLifecycleConfigurationCommandInput; + output: GetBucketLifecycleConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketLocationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketLocationCommand.d.ts new file mode 100644 index 0000000..bbe5ed2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketLocationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketLocationOutput, + GetBucketLocationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketLocationCommandInput + extends GetBucketLocationRequest {} +export interface GetBucketLocationCommandOutput + extends GetBucketLocationOutput, + __MetadataBearer {} +declare const GetBucketLocationCommand_base: { + new ( + input: GetBucketLocationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketLocationCommandInput, + GetBucketLocationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketLocationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketLocationCommandInput, + GetBucketLocationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketLocationCommand extends GetBucketLocationCommand_base { + protected static __types: { + api: { + input: GetBucketLocationRequest; + output: GetBucketLocationOutput; + }; + sdk: { + input: GetBucketLocationCommandInput; + output: GetBucketLocationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketLoggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketLoggingCommand.d.ts new file mode 100644 index 0000000..18c5137 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketLoggingCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketLoggingOutput, + GetBucketLoggingRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketLoggingCommandInput extends GetBucketLoggingRequest {} +export interface GetBucketLoggingCommandOutput + extends GetBucketLoggingOutput, + __MetadataBearer {} +declare const GetBucketLoggingCommand_base: { + new ( + input: GetBucketLoggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketLoggingCommandInput, + GetBucketLoggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketLoggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketLoggingCommandInput, + GetBucketLoggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketLoggingCommand extends GetBucketLoggingCommand_base { + protected static __types: { + api: { + input: GetBucketLoggingRequest; + output: GetBucketLoggingOutput; + }; + sdk: { + input: GetBucketLoggingCommandInput; + output: GetBucketLoggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketMetadataConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketMetadataConfigurationCommand.d.ts new file mode 100644 index 0000000..358472b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketMetadataConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketMetadataConfigurationOutput, + GetBucketMetadataConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketMetadataConfigurationCommandInput + extends GetBucketMetadataConfigurationRequest {} +export interface GetBucketMetadataConfigurationCommandOutput + extends GetBucketMetadataConfigurationOutput, + __MetadataBearer {} +declare const GetBucketMetadataConfigurationCommand_base: { + new ( + input: GetBucketMetadataConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketMetadataConfigurationCommandInput, + GetBucketMetadataConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketMetadataConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketMetadataConfigurationCommandInput, + GetBucketMetadataConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketMetadataConfigurationCommand extends GetBucketMetadataConfigurationCommand_base { + protected static __types: { + api: { + input: GetBucketMetadataConfigurationRequest; + output: GetBucketMetadataConfigurationOutput; + }; + sdk: { + input: GetBucketMetadataConfigurationCommandInput; + output: GetBucketMetadataConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketMetadataTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketMetadataTableConfigurationCommand.d.ts new file mode 100644 index 0000000..44708c4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketMetadataTableConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketMetadataTableConfigurationOutput, + GetBucketMetadataTableConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketMetadataTableConfigurationCommandInput + extends GetBucketMetadataTableConfigurationRequest {} +export interface GetBucketMetadataTableConfigurationCommandOutput + extends GetBucketMetadataTableConfigurationOutput, + __MetadataBearer {} +declare const GetBucketMetadataTableConfigurationCommand_base: { + new ( + input: GetBucketMetadataTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketMetadataTableConfigurationCommandInput, + GetBucketMetadataTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketMetadataTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketMetadataTableConfigurationCommandInput, + GetBucketMetadataTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketMetadataTableConfigurationCommand extends GetBucketMetadataTableConfigurationCommand_base { + protected static __types: { + api: { + input: GetBucketMetadataTableConfigurationRequest; + output: GetBucketMetadataTableConfigurationOutput; + }; + sdk: { + input: GetBucketMetadataTableConfigurationCommandInput; + output: GetBucketMetadataTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketMetricsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketMetricsConfigurationCommand.d.ts new file mode 100644 index 0000000..39bb6ec --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketMetricsConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketMetricsConfigurationOutput, + GetBucketMetricsConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketMetricsConfigurationCommandInput + extends GetBucketMetricsConfigurationRequest {} +export interface GetBucketMetricsConfigurationCommandOutput + extends GetBucketMetricsConfigurationOutput, + __MetadataBearer {} +declare const GetBucketMetricsConfigurationCommand_base: { + new ( + input: GetBucketMetricsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketMetricsConfigurationCommandInput, + GetBucketMetricsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketMetricsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketMetricsConfigurationCommandInput, + GetBucketMetricsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketMetricsConfigurationCommand extends GetBucketMetricsConfigurationCommand_base { + protected static __types: { + api: { + input: GetBucketMetricsConfigurationRequest; + output: GetBucketMetricsConfigurationOutput; + }; + sdk: { + input: GetBucketMetricsConfigurationCommandInput; + output: GetBucketMetricsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketNotificationConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketNotificationConfigurationCommand.d.ts new file mode 100644 index 0000000..8a5de9d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketNotificationConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketNotificationConfigurationRequest, + NotificationConfiguration, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketNotificationConfigurationCommandInput + extends GetBucketNotificationConfigurationRequest {} +export interface GetBucketNotificationConfigurationCommandOutput + extends NotificationConfiguration, + __MetadataBearer {} +declare const GetBucketNotificationConfigurationCommand_base: { + new ( + input: GetBucketNotificationConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketNotificationConfigurationCommandInput, + GetBucketNotificationConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketNotificationConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketNotificationConfigurationCommandInput, + GetBucketNotificationConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketNotificationConfigurationCommand extends GetBucketNotificationConfigurationCommand_base { + protected static __types: { + api: { + input: GetBucketNotificationConfigurationRequest; + output: NotificationConfiguration; + }; + sdk: { + input: GetBucketNotificationConfigurationCommandInput; + output: GetBucketNotificationConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketOwnershipControlsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketOwnershipControlsCommand.d.ts new file mode 100644 index 0000000..03f323d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketOwnershipControlsCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketOwnershipControlsOutput, + GetBucketOwnershipControlsRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketOwnershipControlsCommandInput + extends GetBucketOwnershipControlsRequest {} +export interface GetBucketOwnershipControlsCommandOutput + extends GetBucketOwnershipControlsOutput, + __MetadataBearer {} +declare const GetBucketOwnershipControlsCommand_base: { + new ( + input: GetBucketOwnershipControlsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketOwnershipControlsCommandInput, + GetBucketOwnershipControlsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketOwnershipControlsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketOwnershipControlsCommandInput, + GetBucketOwnershipControlsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketOwnershipControlsCommand extends GetBucketOwnershipControlsCommand_base { + protected static __types: { + api: { + input: GetBucketOwnershipControlsRequest; + output: GetBucketOwnershipControlsOutput; + }; + sdk: { + input: GetBucketOwnershipControlsCommandInput; + output: GetBucketOwnershipControlsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketPolicyCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketPolicyCommand.d.ts new file mode 100644 index 0000000..edc1810 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketPolicyCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketPolicyOutput, + GetBucketPolicyRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketPolicyCommandInput extends GetBucketPolicyRequest {} +export interface GetBucketPolicyCommandOutput + extends GetBucketPolicyOutput, + __MetadataBearer {} +declare const GetBucketPolicyCommand_base: { + new ( + input: GetBucketPolicyCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketPolicyCommandInput, + GetBucketPolicyCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketPolicyCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketPolicyCommandInput, + GetBucketPolicyCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketPolicyCommand extends GetBucketPolicyCommand_base { + protected static __types: { + api: { + input: GetBucketPolicyRequest; + output: GetBucketPolicyOutput; + }; + sdk: { + input: GetBucketPolicyCommandInput; + output: GetBucketPolicyCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketPolicyStatusCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketPolicyStatusCommand.d.ts new file mode 100644 index 0000000..20dada2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketPolicyStatusCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketPolicyStatusOutput, + GetBucketPolicyStatusRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketPolicyStatusCommandInput + extends GetBucketPolicyStatusRequest {} +export interface GetBucketPolicyStatusCommandOutput + extends GetBucketPolicyStatusOutput, + __MetadataBearer {} +declare const GetBucketPolicyStatusCommand_base: { + new ( + input: GetBucketPolicyStatusCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketPolicyStatusCommandInput, + GetBucketPolicyStatusCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketPolicyStatusCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketPolicyStatusCommandInput, + GetBucketPolicyStatusCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketPolicyStatusCommand extends GetBucketPolicyStatusCommand_base { + protected static __types: { + api: { + input: GetBucketPolicyStatusRequest; + output: GetBucketPolicyStatusOutput; + }; + sdk: { + input: GetBucketPolicyStatusCommandInput; + output: GetBucketPolicyStatusCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketReplicationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketReplicationCommand.d.ts new file mode 100644 index 0000000..a595ba5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketReplicationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketReplicationOutput, + GetBucketReplicationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketReplicationCommandInput + extends GetBucketReplicationRequest {} +export interface GetBucketReplicationCommandOutput + extends GetBucketReplicationOutput, + __MetadataBearer {} +declare const GetBucketReplicationCommand_base: { + new ( + input: GetBucketReplicationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketReplicationCommandInput, + GetBucketReplicationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketReplicationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketReplicationCommandInput, + GetBucketReplicationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketReplicationCommand extends GetBucketReplicationCommand_base { + protected static __types: { + api: { + input: GetBucketReplicationRequest; + output: GetBucketReplicationOutput; + }; + sdk: { + input: GetBucketReplicationCommandInput; + output: GetBucketReplicationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketRequestPaymentCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketRequestPaymentCommand.d.ts new file mode 100644 index 0000000..1393dfb --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketRequestPaymentCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketRequestPaymentOutput, + GetBucketRequestPaymentRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketRequestPaymentCommandInput + extends GetBucketRequestPaymentRequest {} +export interface GetBucketRequestPaymentCommandOutput + extends GetBucketRequestPaymentOutput, + __MetadataBearer {} +declare const GetBucketRequestPaymentCommand_base: { + new ( + input: GetBucketRequestPaymentCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketRequestPaymentCommandInput, + GetBucketRequestPaymentCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketRequestPaymentCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketRequestPaymentCommandInput, + GetBucketRequestPaymentCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketRequestPaymentCommand extends GetBucketRequestPaymentCommand_base { + protected static __types: { + api: { + input: GetBucketRequestPaymentRequest; + output: GetBucketRequestPaymentOutput; + }; + sdk: { + input: GetBucketRequestPaymentCommandInput; + output: GetBucketRequestPaymentCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketTaggingCommand.d.ts new file mode 100644 index 0000000..f092499 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketTaggingCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketTaggingOutput, + GetBucketTaggingRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketTaggingCommandInput extends GetBucketTaggingRequest {} +export interface GetBucketTaggingCommandOutput + extends GetBucketTaggingOutput, + __MetadataBearer {} +declare const GetBucketTaggingCommand_base: { + new ( + input: GetBucketTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketTaggingCommandInput, + GetBucketTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketTaggingCommandInput, + GetBucketTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketTaggingCommand extends GetBucketTaggingCommand_base { + protected static __types: { + api: { + input: GetBucketTaggingRequest; + output: GetBucketTaggingOutput; + }; + sdk: { + input: GetBucketTaggingCommandInput; + output: GetBucketTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketVersioningCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketVersioningCommand.d.ts new file mode 100644 index 0000000..3cb0553 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketVersioningCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketVersioningOutput, + GetBucketVersioningRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketVersioningCommandInput + extends GetBucketVersioningRequest {} +export interface GetBucketVersioningCommandOutput + extends GetBucketVersioningOutput, + __MetadataBearer {} +declare const GetBucketVersioningCommand_base: { + new ( + input: GetBucketVersioningCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketVersioningCommandInput, + GetBucketVersioningCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketVersioningCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketVersioningCommandInput, + GetBucketVersioningCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketVersioningCommand extends GetBucketVersioningCommand_base { + protected static __types: { + api: { + input: GetBucketVersioningRequest; + output: GetBucketVersioningOutput; + }; + sdk: { + input: GetBucketVersioningCommandInput; + output: GetBucketVersioningCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketWebsiteCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketWebsiteCommand.d.ts new file mode 100644 index 0000000..5fda11e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetBucketWebsiteCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetBucketWebsiteOutput, + GetBucketWebsiteRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetBucketWebsiteCommandInput extends GetBucketWebsiteRequest {} +export interface GetBucketWebsiteCommandOutput + extends GetBucketWebsiteOutput, + __MetadataBearer {} +declare const GetBucketWebsiteCommand_base: { + new ( + input: GetBucketWebsiteCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketWebsiteCommandInput, + GetBucketWebsiteCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetBucketWebsiteCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetBucketWebsiteCommandInput, + GetBucketWebsiteCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetBucketWebsiteCommand extends GetBucketWebsiteCommand_base { + protected static __types: { + api: { + input: GetBucketWebsiteRequest; + output: GetBucketWebsiteOutput; + }; + sdk: { + input: GetBucketWebsiteCommandInput; + output: GetBucketWebsiteCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectAclCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectAclCommand.d.ts new file mode 100644 index 0000000..3b6a32e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectAclCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { GetObjectAclOutput, GetObjectAclRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetObjectAclCommandInput extends GetObjectAclRequest {} +export interface GetObjectAclCommandOutput + extends GetObjectAclOutput, + __MetadataBearer {} +declare const GetObjectAclCommand_base: { + new ( + input: GetObjectAclCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectAclCommandInput, + GetObjectAclCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetObjectAclCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectAclCommandInput, + GetObjectAclCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetObjectAclCommand extends GetObjectAclCommand_base { + protected static __types: { + api: { + input: GetObjectAclRequest; + output: GetObjectAclOutput; + }; + sdk: { + input: GetObjectAclCommandInput; + output: GetObjectAclCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectAttributesCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectAttributesCommand.d.ts new file mode 100644 index 0000000..77cfbb7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectAttributesCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetObjectAttributesOutput, + GetObjectAttributesRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetObjectAttributesCommandInput + extends GetObjectAttributesRequest {} +export interface GetObjectAttributesCommandOutput + extends GetObjectAttributesOutput, + __MetadataBearer {} +declare const GetObjectAttributesCommand_base: { + new ( + input: GetObjectAttributesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectAttributesCommandInput, + GetObjectAttributesCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetObjectAttributesCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectAttributesCommandInput, + GetObjectAttributesCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetObjectAttributesCommand extends GetObjectAttributesCommand_base { + protected static __types: { + api: { + input: GetObjectAttributesRequest; + output: GetObjectAttributesOutput; + }; + sdk: { + input: GetObjectAttributesCommandInput; + output: GetObjectAttributesCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectCommand.d.ts new file mode 100644 index 0000000..9bf02a6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectCommand.d.ts @@ -0,0 +1,52 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { + MetadataBearer as __MetadataBearer, + StreamingBlobPayloadOutputTypes, +} from "@smithy/types"; +import { GetObjectOutput, GetObjectRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetObjectCommandInput extends GetObjectRequest {} +export interface GetObjectCommandOutput + extends Pick>, + __MetadataBearer { + Body?: StreamingBlobPayloadOutputTypes; +} +declare const GetObjectCommand_base: { + new ( + input: GetObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectCommandInput, + GetObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectCommandInput, + GetObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetObjectCommand extends GetObjectCommand_base { + protected static __types: { + api: { + input: GetObjectRequest; + output: GetObjectOutput; + }; + sdk: { + input: GetObjectCommandInput; + output: GetObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectLegalHoldCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectLegalHoldCommand.d.ts new file mode 100644 index 0000000..8ce0a07 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectLegalHoldCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetObjectLegalHoldOutput, + GetObjectLegalHoldRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetObjectLegalHoldCommandInput + extends GetObjectLegalHoldRequest {} +export interface GetObjectLegalHoldCommandOutput + extends GetObjectLegalHoldOutput, + __MetadataBearer {} +declare const GetObjectLegalHoldCommand_base: { + new ( + input: GetObjectLegalHoldCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectLegalHoldCommandInput, + GetObjectLegalHoldCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetObjectLegalHoldCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectLegalHoldCommandInput, + GetObjectLegalHoldCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetObjectLegalHoldCommand extends GetObjectLegalHoldCommand_base { + protected static __types: { + api: { + input: GetObjectLegalHoldRequest; + output: GetObjectLegalHoldOutput; + }; + sdk: { + input: GetObjectLegalHoldCommandInput; + output: GetObjectLegalHoldCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectLockConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectLockConfigurationCommand.d.ts new file mode 100644 index 0000000..7e85446 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectLockConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetObjectLockConfigurationOutput, + GetObjectLockConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetObjectLockConfigurationCommandInput + extends GetObjectLockConfigurationRequest {} +export interface GetObjectLockConfigurationCommandOutput + extends GetObjectLockConfigurationOutput, + __MetadataBearer {} +declare const GetObjectLockConfigurationCommand_base: { + new ( + input: GetObjectLockConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectLockConfigurationCommandInput, + GetObjectLockConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetObjectLockConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectLockConfigurationCommandInput, + GetObjectLockConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetObjectLockConfigurationCommand extends GetObjectLockConfigurationCommand_base { + protected static __types: { + api: { + input: GetObjectLockConfigurationRequest; + output: GetObjectLockConfigurationOutput; + }; + sdk: { + input: GetObjectLockConfigurationCommandInput; + output: GetObjectLockConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectRetentionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectRetentionCommand.d.ts new file mode 100644 index 0000000..8b937e4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectRetentionCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetObjectRetentionOutput, + GetObjectRetentionRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetObjectRetentionCommandInput + extends GetObjectRetentionRequest {} +export interface GetObjectRetentionCommandOutput + extends GetObjectRetentionOutput, + __MetadataBearer {} +declare const GetObjectRetentionCommand_base: { + new ( + input: GetObjectRetentionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectRetentionCommandInput, + GetObjectRetentionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetObjectRetentionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectRetentionCommandInput, + GetObjectRetentionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetObjectRetentionCommand extends GetObjectRetentionCommand_base { + protected static __types: { + api: { + input: GetObjectRetentionRequest; + output: GetObjectRetentionOutput; + }; + sdk: { + input: GetObjectRetentionCommandInput; + output: GetObjectRetentionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectTaggingCommand.d.ts new file mode 100644 index 0000000..3987335 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectTaggingCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetObjectTaggingOutput, + GetObjectTaggingRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetObjectTaggingCommandInput extends GetObjectTaggingRequest {} +export interface GetObjectTaggingCommandOutput + extends GetObjectTaggingOutput, + __MetadataBearer {} +declare const GetObjectTaggingCommand_base: { + new ( + input: GetObjectTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectTaggingCommandInput, + GetObjectTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetObjectTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectTaggingCommandInput, + GetObjectTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetObjectTaggingCommand extends GetObjectTaggingCommand_base { + protected static __types: { + api: { + input: GetObjectTaggingRequest; + output: GetObjectTaggingOutput; + }; + sdk: { + input: GetObjectTaggingCommandInput; + output: GetObjectTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectTorrentCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectTorrentCommand.d.ts new file mode 100644 index 0000000..f8f7b1f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectTorrentCommand.d.ts @@ -0,0 +1,58 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { + MetadataBearer as __MetadataBearer, + StreamingBlobPayloadOutputTypes, +} from "@smithy/types"; +import { + GetObjectTorrentOutput, + GetObjectTorrentRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetObjectTorrentCommandInput extends GetObjectTorrentRequest {} +export interface GetObjectTorrentCommandOutput + extends Pick< + GetObjectTorrentOutput, + Exclude + >, + __MetadataBearer { + Body?: StreamingBlobPayloadOutputTypes; +} +declare const GetObjectTorrentCommand_base: { + new ( + input: GetObjectTorrentCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectTorrentCommandInput, + GetObjectTorrentCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetObjectTorrentCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetObjectTorrentCommandInput, + GetObjectTorrentCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetObjectTorrentCommand extends GetObjectTorrentCommand_base { + protected static __types: { + api: { + input: GetObjectTorrentRequest; + output: GetObjectTorrentOutput; + }; + sdk: { + input: GetObjectTorrentCommandInput; + output: GetObjectTorrentCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetPublicAccessBlockCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetPublicAccessBlockCommand.d.ts new file mode 100644 index 0000000..97417f4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetPublicAccessBlockCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetPublicAccessBlockOutput, + GetPublicAccessBlockRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface GetPublicAccessBlockCommandInput + extends GetPublicAccessBlockRequest {} +export interface GetPublicAccessBlockCommandOutput + extends GetPublicAccessBlockOutput, + __MetadataBearer {} +declare const GetPublicAccessBlockCommand_base: { + new ( + input: GetPublicAccessBlockCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetPublicAccessBlockCommandInput, + GetPublicAccessBlockCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetPublicAccessBlockCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetPublicAccessBlockCommandInput, + GetPublicAccessBlockCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetPublicAccessBlockCommand extends GetPublicAccessBlockCommand_base { + protected static __types: { + api: { + input: GetPublicAccessBlockRequest; + output: GetPublicAccessBlockOutput; + }; + sdk: { + input: GetPublicAccessBlockCommandInput; + output: GetPublicAccessBlockCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/HeadBucketCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/HeadBucketCommand.d.ts new file mode 100644 index 0000000..654e06d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/HeadBucketCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { HeadBucketOutput, HeadBucketRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface HeadBucketCommandInput extends HeadBucketRequest {} +export interface HeadBucketCommandOutput + extends HeadBucketOutput, + __MetadataBearer {} +declare const HeadBucketCommand_base: { + new ( + input: HeadBucketCommandInput + ): import("@smithy/smithy-client").CommandImpl< + HeadBucketCommandInput, + HeadBucketCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: HeadBucketCommandInput + ): import("@smithy/smithy-client").CommandImpl< + HeadBucketCommandInput, + HeadBucketCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class HeadBucketCommand extends HeadBucketCommand_base { + protected static __types: { + api: { + input: HeadBucketRequest; + output: HeadBucketOutput; + }; + sdk: { + input: HeadBucketCommandInput; + output: HeadBucketCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/HeadObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/HeadObjectCommand.d.ts new file mode 100644 index 0000000..b6bb937 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/HeadObjectCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { HeadObjectOutput, HeadObjectRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface HeadObjectCommandInput extends HeadObjectRequest {} +export interface HeadObjectCommandOutput + extends HeadObjectOutput, + __MetadataBearer {} +declare const HeadObjectCommand_base: { + new ( + input: HeadObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + HeadObjectCommandInput, + HeadObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: HeadObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + HeadObjectCommandInput, + HeadObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class HeadObjectCommand extends HeadObjectCommand_base { + protected static __types: { + api: { + input: HeadObjectRequest; + output: HeadObjectOutput; + }; + sdk: { + input: HeadObjectCommandInput; + output: HeadObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketAnalyticsConfigurationsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketAnalyticsConfigurationsCommand.d.ts new file mode 100644 index 0000000..d0bfe9f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketAnalyticsConfigurationsCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + ListBucketAnalyticsConfigurationsOutput, + ListBucketAnalyticsConfigurationsRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListBucketAnalyticsConfigurationsCommandInput + extends ListBucketAnalyticsConfigurationsRequest {} +export interface ListBucketAnalyticsConfigurationsCommandOutput + extends ListBucketAnalyticsConfigurationsOutput, + __MetadataBearer {} +declare const ListBucketAnalyticsConfigurationsCommand_base: { + new ( + input: ListBucketAnalyticsConfigurationsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListBucketAnalyticsConfigurationsCommandInput, + ListBucketAnalyticsConfigurationsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListBucketAnalyticsConfigurationsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListBucketAnalyticsConfigurationsCommandInput, + ListBucketAnalyticsConfigurationsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListBucketAnalyticsConfigurationsCommand extends ListBucketAnalyticsConfigurationsCommand_base { + protected static __types: { + api: { + input: ListBucketAnalyticsConfigurationsRequest; + output: ListBucketAnalyticsConfigurationsOutput; + }; + sdk: { + input: ListBucketAnalyticsConfigurationsCommandInput; + output: ListBucketAnalyticsConfigurationsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts new file mode 100644 index 0000000..9d3ef72 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + ListBucketIntelligentTieringConfigurationsOutput, + ListBucketIntelligentTieringConfigurationsRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListBucketIntelligentTieringConfigurationsCommandInput + extends ListBucketIntelligentTieringConfigurationsRequest {} +export interface ListBucketIntelligentTieringConfigurationsCommandOutput + extends ListBucketIntelligentTieringConfigurationsOutput, + __MetadataBearer {} +declare const ListBucketIntelligentTieringConfigurationsCommand_base: { + new ( + input: ListBucketIntelligentTieringConfigurationsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListBucketIntelligentTieringConfigurationsCommandInput, + ListBucketIntelligentTieringConfigurationsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListBucketIntelligentTieringConfigurationsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListBucketIntelligentTieringConfigurationsCommandInput, + ListBucketIntelligentTieringConfigurationsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListBucketIntelligentTieringConfigurationsCommand extends ListBucketIntelligentTieringConfigurationsCommand_base { + protected static __types: { + api: { + input: ListBucketIntelligentTieringConfigurationsRequest; + output: ListBucketIntelligentTieringConfigurationsOutput; + }; + sdk: { + input: ListBucketIntelligentTieringConfigurationsCommandInput; + output: ListBucketIntelligentTieringConfigurationsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketInventoryConfigurationsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketInventoryConfigurationsCommand.d.ts new file mode 100644 index 0000000..1b4f0d6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketInventoryConfigurationsCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + ListBucketInventoryConfigurationsOutput, + ListBucketInventoryConfigurationsRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListBucketInventoryConfigurationsCommandInput + extends ListBucketInventoryConfigurationsRequest {} +export interface ListBucketInventoryConfigurationsCommandOutput + extends ListBucketInventoryConfigurationsOutput, + __MetadataBearer {} +declare const ListBucketInventoryConfigurationsCommand_base: { + new ( + input: ListBucketInventoryConfigurationsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListBucketInventoryConfigurationsCommandInput, + ListBucketInventoryConfigurationsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListBucketInventoryConfigurationsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListBucketInventoryConfigurationsCommandInput, + ListBucketInventoryConfigurationsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListBucketInventoryConfigurationsCommand extends ListBucketInventoryConfigurationsCommand_base { + protected static __types: { + api: { + input: ListBucketInventoryConfigurationsRequest; + output: ListBucketInventoryConfigurationsOutput; + }; + sdk: { + input: ListBucketInventoryConfigurationsCommandInput; + output: ListBucketInventoryConfigurationsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketMetricsConfigurationsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketMetricsConfigurationsCommand.d.ts new file mode 100644 index 0000000..84aa37e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketMetricsConfigurationsCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + ListBucketMetricsConfigurationsOutput, + ListBucketMetricsConfigurationsRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListBucketMetricsConfigurationsCommandInput + extends ListBucketMetricsConfigurationsRequest {} +export interface ListBucketMetricsConfigurationsCommandOutput + extends ListBucketMetricsConfigurationsOutput, + __MetadataBearer {} +declare const ListBucketMetricsConfigurationsCommand_base: { + new ( + input: ListBucketMetricsConfigurationsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListBucketMetricsConfigurationsCommandInput, + ListBucketMetricsConfigurationsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListBucketMetricsConfigurationsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListBucketMetricsConfigurationsCommandInput, + ListBucketMetricsConfigurationsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListBucketMetricsConfigurationsCommand extends ListBucketMetricsConfigurationsCommand_base { + protected static __types: { + api: { + input: ListBucketMetricsConfigurationsRequest; + output: ListBucketMetricsConfigurationsOutput; + }; + sdk: { + input: ListBucketMetricsConfigurationsCommandInput; + output: ListBucketMetricsConfigurationsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketsCommand.d.ts new file mode 100644 index 0000000..ab0696e --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListBucketsCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { ListBucketsOutput, ListBucketsRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListBucketsCommandInput extends ListBucketsRequest {} +export interface ListBucketsCommandOutput + extends ListBucketsOutput, + __MetadataBearer {} +declare const ListBucketsCommand_base: { + new ( + input: ListBucketsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListBucketsCommandInput, + ListBucketsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + ...[input]: [] | [ListBucketsCommandInput] + ): import("@smithy/smithy-client").CommandImpl< + ListBucketsCommandInput, + ListBucketsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListBucketsCommand extends ListBucketsCommand_base { + protected static __types: { + api: { + input: ListBucketsRequest; + output: ListBucketsOutput; + }; + sdk: { + input: ListBucketsCommandInput; + output: ListBucketsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListDirectoryBucketsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListDirectoryBucketsCommand.d.ts new file mode 100644 index 0000000..0b0103c --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListDirectoryBucketsCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + ListDirectoryBucketsOutput, + ListDirectoryBucketsRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListDirectoryBucketsCommandInput + extends ListDirectoryBucketsRequest {} +export interface ListDirectoryBucketsCommandOutput + extends ListDirectoryBucketsOutput, + __MetadataBearer {} +declare const ListDirectoryBucketsCommand_base: { + new ( + input: ListDirectoryBucketsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListDirectoryBucketsCommandInput, + ListDirectoryBucketsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + ...[input]: [] | [ListDirectoryBucketsCommandInput] + ): import("@smithy/smithy-client").CommandImpl< + ListDirectoryBucketsCommandInput, + ListDirectoryBucketsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListDirectoryBucketsCommand extends ListDirectoryBucketsCommand_base { + protected static __types: { + api: { + input: ListDirectoryBucketsRequest; + output: ListDirectoryBucketsOutput; + }; + sdk: { + input: ListDirectoryBucketsCommandInput; + output: ListDirectoryBucketsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListMultipartUploadsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListMultipartUploadsCommand.d.ts new file mode 100644 index 0000000..210c157 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListMultipartUploadsCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + ListMultipartUploadsOutput, + ListMultipartUploadsRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListMultipartUploadsCommandInput + extends ListMultipartUploadsRequest {} +export interface ListMultipartUploadsCommandOutput + extends ListMultipartUploadsOutput, + __MetadataBearer {} +declare const ListMultipartUploadsCommand_base: { + new ( + input: ListMultipartUploadsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListMultipartUploadsCommandInput, + ListMultipartUploadsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListMultipartUploadsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListMultipartUploadsCommandInput, + ListMultipartUploadsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListMultipartUploadsCommand extends ListMultipartUploadsCommand_base { + protected static __types: { + api: { + input: ListMultipartUploadsRequest; + output: ListMultipartUploadsOutput; + }; + sdk: { + input: ListMultipartUploadsCommandInput; + output: ListMultipartUploadsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectVersionsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectVersionsCommand.d.ts new file mode 100644 index 0000000..b6bfb22 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectVersionsCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + ListObjectVersionsOutput, + ListObjectVersionsRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListObjectVersionsCommandInput + extends ListObjectVersionsRequest {} +export interface ListObjectVersionsCommandOutput + extends ListObjectVersionsOutput, + __MetadataBearer {} +declare const ListObjectVersionsCommand_base: { + new ( + input: ListObjectVersionsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListObjectVersionsCommandInput, + ListObjectVersionsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListObjectVersionsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListObjectVersionsCommandInput, + ListObjectVersionsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListObjectVersionsCommand extends ListObjectVersionsCommand_base { + protected static __types: { + api: { + input: ListObjectVersionsRequest; + output: ListObjectVersionsOutput; + }; + sdk: { + input: ListObjectVersionsCommandInput; + output: ListObjectVersionsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectsCommand.d.ts new file mode 100644 index 0000000..4608002 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectsCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { ListObjectsOutput, ListObjectsRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListObjectsCommandInput extends ListObjectsRequest {} +export interface ListObjectsCommandOutput + extends ListObjectsOutput, + __MetadataBearer {} +declare const ListObjectsCommand_base: { + new ( + input: ListObjectsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListObjectsCommandInput, + ListObjectsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListObjectsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListObjectsCommandInput, + ListObjectsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListObjectsCommand extends ListObjectsCommand_base { + protected static __types: { + api: { + input: ListObjectsRequest; + output: ListObjectsOutput; + }; + sdk: { + input: ListObjectsCommandInput; + output: ListObjectsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectsV2Command.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectsV2Command.d.ts new file mode 100644 index 0000000..e0086bb --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectsV2Command.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { ListObjectsV2Output, ListObjectsV2Request } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListObjectsV2CommandInput extends ListObjectsV2Request {} +export interface ListObjectsV2CommandOutput + extends ListObjectsV2Output, + __MetadataBearer {} +declare const ListObjectsV2Command_base: { + new ( + input: ListObjectsV2CommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListObjectsV2CommandInput, + ListObjectsV2CommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListObjectsV2CommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListObjectsV2CommandInput, + ListObjectsV2CommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListObjectsV2Command extends ListObjectsV2Command_base { + protected static __types: { + api: { + input: ListObjectsV2Request; + output: ListObjectsV2Output; + }; + sdk: { + input: ListObjectsV2CommandInput; + output: ListObjectsV2CommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListPartsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListPartsCommand.d.ts new file mode 100644 index 0000000..df51d6b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListPartsCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { ListPartsOutput, ListPartsRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface ListPartsCommandInput extends ListPartsRequest {} +export interface ListPartsCommandOutput + extends ListPartsOutput, + __MetadataBearer {} +declare const ListPartsCommand_base: { + new ( + input: ListPartsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListPartsCommandInput, + ListPartsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: ListPartsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + ListPartsCommandInput, + ListPartsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class ListPartsCommand extends ListPartsCommand_base { + protected static __types: { + api: { + input: ListPartsRequest; + output: ListPartsOutput; + }; + sdk: { + input: ListPartsCommandInput; + output: ListPartsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAbacCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAbacCommand.d.ts new file mode 100644 index 0000000..6dc11aa --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAbacCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketAbacRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketAbacCommandInput extends PutBucketAbacRequest {} +export interface PutBucketAbacCommandOutput extends __MetadataBearer {} +declare const PutBucketAbacCommand_base: { + new ( + input: PutBucketAbacCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketAbacCommandInput, + PutBucketAbacCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketAbacCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketAbacCommandInput, + PutBucketAbacCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketAbacCommand extends PutBucketAbacCommand_base { + protected static __types: { + api: { + input: PutBucketAbacRequest; + output: {}; + }; + sdk: { + input: PutBucketAbacCommandInput; + output: PutBucketAbacCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAccelerateConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAccelerateConfigurationCommand.d.ts new file mode 100644 index 0000000..3e60a66 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAccelerateConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketAccelerateConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketAccelerateConfigurationCommandInput + extends PutBucketAccelerateConfigurationRequest {} +export interface PutBucketAccelerateConfigurationCommandOutput + extends __MetadataBearer {} +declare const PutBucketAccelerateConfigurationCommand_base: { + new ( + input: PutBucketAccelerateConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketAccelerateConfigurationCommandInput, + PutBucketAccelerateConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketAccelerateConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketAccelerateConfigurationCommandInput, + PutBucketAccelerateConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketAccelerateConfigurationCommand extends PutBucketAccelerateConfigurationCommand_base { + protected static __types: { + api: { + input: PutBucketAccelerateConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketAccelerateConfigurationCommandInput; + output: PutBucketAccelerateConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAclCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAclCommand.d.ts new file mode 100644 index 0000000..a33e9de --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAclCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketAclRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketAclCommandInput extends PutBucketAclRequest {} +export interface PutBucketAclCommandOutput extends __MetadataBearer {} +declare const PutBucketAclCommand_base: { + new ( + input: PutBucketAclCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketAclCommandInput, + PutBucketAclCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketAclCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketAclCommandInput, + PutBucketAclCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketAclCommand extends PutBucketAclCommand_base { + protected static __types: { + api: { + input: PutBucketAclRequest; + output: {}; + }; + sdk: { + input: PutBucketAclCommandInput; + output: PutBucketAclCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAnalyticsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAnalyticsConfigurationCommand.d.ts new file mode 100644 index 0000000..e86547b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketAnalyticsConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketAnalyticsConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketAnalyticsConfigurationCommandInput + extends PutBucketAnalyticsConfigurationRequest {} +export interface PutBucketAnalyticsConfigurationCommandOutput + extends __MetadataBearer {} +declare const PutBucketAnalyticsConfigurationCommand_base: { + new ( + input: PutBucketAnalyticsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketAnalyticsConfigurationCommandInput, + PutBucketAnalyticsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketAnalyticsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketAnalyticsConfigurationCommandInput, + PutBucketAnalyticsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketAnalyticsConfigurationCommand extends PutBucketAnalyticsConfigurationCommand_base { + protected static __types: { + api: { + input: PutBucketAnalyticsConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketAnalyticsConfigurationCommandInput; + output: PutBucketAnalyticsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketCorsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketCorsCommand.d.ts new file mode 100644 index 0000000..da0300a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketCorsCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketCorsRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketCorsCommandInput extends PutBucketCorsRequest {} +export interface PutBucketCorsCommandOutput extends __MetadataBearer {} +declare const PutBucketCorsCommand_base: { + new ( + input: PutBucketCorsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketCorsCommandInput, + PutBucketCorsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketCorsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketCorsCommandInput, + PutBucketCorsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketCorsCommand extends PutBucketCorsCommand_base { + protected static __types: { + api: { + input: PutBucketCorsRequest; + output: {}; + }; + sdk: { + input: PutBucketCorsCommandInput; + output: PutBucketCorsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketEncryptionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketEncryptionCommand.d.ts new file mode 100644 index 0000000..b8fb8d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketEncryptionCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketEncryptionRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketEncryptionCommandInput + extends PutBucketEncryptionRequest {} +export interface PutBucketEncryptionCommandOutput extends __MetadataBearer {} +declare const PutBucketEncryptionCommand_base: { + new ( + input: PutBucketEncryptionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketEncryptionCommandInput, + PutBucketEncryptionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketEncryptionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketEncryptionCommandInput, + PutBucketEncryptionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketEncryptionCommand extends PutBucketEncryptionCommand_base { + protected static __types: { + api: { + input: PutBucketEncryptionRequest; + output: {}; + }; + sdk: { + input: PutBucketEncryptionCommandInput; + output: PutBucketEncryptionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts new file mode 100644 index 0000000..357ca08 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketIntelligentTieringConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketIntelligentTieringConfigurationCommandInput + extends PutBucketIntelligentTieringConfigurationRequest {} +export interface PutBucketIntelligentTieringConfigurationCommandOutput + extends __MetadataBearer {} +declare const PutBucketIntelligentTieringConfigurationCommand_base: { + new ( + input: PutBucketIntelligentTieringConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketIntelligentTieringConfigurationCommandInput, + PutBucketIntelligentTieringConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketIntelligentTieringConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketIntelligentTieringConfigurationCommandInput, + PutBucketIntelligentTieringConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketIntelligentTieringConfigurationCommand extends PutBucketIntelligentTieringConfigurationCommand_base { + protected static __types: { + api: { + input: PutBucketIntelligentTieringConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketIntelligentTieringConfigurationCommandInput; + output: PutBucketIntelligentTieringConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketInventoryConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketInventoryConfigurationCommand.d.ts new file mode 100644 index 0000000..96a8c07 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketInventoryConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketInventoryConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketInventoryConfigurationCommandInput + extends PutBucketInventoryConfigurationRequest {} +export interface PutBucketInventoryConfigurationCommandOutput + extends __MetadataBearer {} +declare const PutBucketInventoryConfigurationCommand_base: { + new ( + input: PutBucketInventoryConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketInventoryConfigurationCommandInput, + PutBucketInventoryConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketInventoryConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketInventoryConfigurationCommandInput, + PutBucketInventoryConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketInventoryConfigurationCommand extends PutBucketInventoryConfigurationCommand_base { + protected static __types: { + api: { + input: PutBucketInventoryConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketInventoryConfigurationCommandInput; + output: PutBucketInventoryConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLifecycleConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLifecycleConfigurationCommand.d.ts new file mode 100644 index 0000000..592872b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLifecycleConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + PutBucketLifecycleConfigurationOutput, + PutBucketLifecycleConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketLifecycleConfigurationCommandInput + extends PutBucketLifecycleConfigurationRequest {} +export interface PutBucketLifecycleConfigurationCommandOutput + extends PutBucketLifecycleConfigurationOutput, + __MetadataBearer {} +declare const PutBucketLifecycleConfigurationCommand_base: { + new ( + input: PutBucketLifecycleConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketLifecycleConfigurationCommandInput, + PutBucketLifecycleConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketLifecycleConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketLifecycleConfigurationCommandInput, + PutBucketLifecycleConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketLifecycleConfigurationCommand extends PutBucketLifecycleConfigurationCommand_base { + protected static __types: { + api: { + input: PutBucketLifecycleConfigurationRequest; + output: PutBucketLifecycleConfigurationOutput; + }; + sdk: { + input: PutBucketLifecycleConfigurationCommandInput; + output: PutBucketLifecycleConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLoggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLoggingCommand.d.ts new file mode 100644 index 0000000..c19a247 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLoggingCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketLoggingRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketLoggingCommandInput extends PutBucketLoggingRequest {} +export interface PutBucketLoggingCommandOutput extends __MetadataBearer {} +declare const PutBucketLoggingCommand_base: { + new ( + input: PutBucketLoggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketLoggingCommandInput, + PutBucketLoggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketLoggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketLoggingCommandInput, + PutBucketLoggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketLoggingCommand extends PutBucketLoggingCommand_base { + protected static __types: { + api: { + input: PutBucketLoggingRequest; + output: {}; + }; + sdk: { + input: PutBucketLoggingCommandInput; + output: PutBucketLoggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketMetricsConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketMetricsConfigurationCommand.d.ts new file mode 100644 index 0000000..1d38b53 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketMetricsConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketMetricsConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketMetricsConfigurationCommandInput + extends PutBucketMetricsConfigurationRequest {} +export interface PutBucketMetricsConfigurationCommandOutput + extends __MetadataBearer {} +declare const PutBucketMetricsConfigurationCommand_base: { + new ( + input: PutBucketMetricsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketMetricsConfigurationCommandInput, + PutBucketMetricsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketMetricsConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketMetricsConfigurationCommandInput, + PutBucketMetricsConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketMetricsConfigurationCommand extends PutBucketMetricsConfigurationCommand_base { + protected static __types: { + api: { + input: PutBucketMetricsConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketMetricsConfigurationCommandInput; + output: PutBucketMetricsConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketNotificationConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketNotificationConfigurationCommand.d.ts new file mode 100644 index 0000000..c85d1e9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketNotificationConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketNotificationConfigurationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketNotificationConfigurationCommandInput + extends PutBucketNotificationConfigurationRequest {} +export interface PutBucketNotificationConfigurationCommandOutput + extends __MetadataBearer {} +declare const PutBucketNotificationConfigurationCommand_base: { + new ( + input: PutBucketNotificationConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketNotificationConfigurationCommandInput, + PutBucketNotificationConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketNotificationConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketNotificationConfigurationCommandInput, + PutBucketNotificationConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketNotificationConfigurationCommand extends PutBucketNotificationConfigurationCommand_base { + protected static __types: { + api: { + input: PutBucketNotificationConfigurationRequest; + output: {}; + }; + sdk: { + input: PutBucketNotificationConfigurationCommandInput; + output: PutBucketNotificationConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketOwnershipControlsCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketOwnershipControlsCommand.d.ts new file mode 100644 index 0000000..5274485 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketOwnershipControlsCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketOwnershipControlsRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketOwnershipControlsCommandInput + extends PutBucketOwnershipControlsRequest {} +export interface PutBucketOwnershipControlsCommandOutput + extends __MetadataBearer {} +declare const PutBucketOwnershipControlsCommand_base: { + new ( + input: PutBucketOwnershipControlsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketOwnershipControlsCommandInput, + PutBucketOwnershipControlsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketOwnershipControlsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketOwnershipControlsCommandInput, + PutBucketOwnershipControlsCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketOwnershipControlsCommand extends PutBucketOwnershipControlsCommand_base { + protected static __types: { + api: { + input: PutBucketOwnershipControlsRequest; + output: {}; + }; + sdk: { + input: PutBucketOwnershipControlsCommandInput; + output: PutBucketOwnershipControlsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketPolicyCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketPolicyCommand.d.ts new file mode 100644 index 0000000..73acb03 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketPolicyCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketPolicyRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketPolicyCommandInput extends PutBucketPolicyRequest {} +export interface PutBucketPolicyCommandOutput extends __MetadataBearer {} +declare const PutBucketPolicyCommand_base: { + new ( + input: PutBucketPolicyCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketPolicyCommandInput, + PutBucketPolicyCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketPolicyCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketPolicyCommandInput, + PutBucketPolicyCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketPolicyCommand extends PutBucketPolicyCommand_base { + protected static __types: { + api: { + input: PutBucketPolicyRequest; + output: {}; + }; + sdk: { + input: PutBucketPolicyCommandInput; + output: PutBucketPolicyCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketReplicationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketReplicationCommand.d.ts new file mode 100644 index 0000000..a9463a8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketReplicationCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketReplicationRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketReplicationCommandInput + extends PutBucketReplicationRequest {} +export interface PutBucketReplicationCommandOutput extends __MetadataBearer {} +declare const PutBucketReplicationCommand_base: { + new ( + input: PutBucketReplicationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketReplicationCommandInput, + PutBucketReplicationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketReplicationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketReplicationCommandInput, + PutBucketReplicationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketReplicationCommand extends PutBucketReplicationCommand_base { + protected static __types: { + api: { + input: PutBucketReplicationRequest; + output: {}; + }; + sdk: { + input: PutBucketReplicationCommandInput; + output: PutBucketReplicationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketRequestPaymentCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketRequestPaymentCommand.d.ts new file mode 100644 index 0000000..b839020 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketRequestPaymentCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketRequestPaymentRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketRequestPaymentCommandInput + extends PutBucketRequestPaymentRequest {} +export interface PutBucketRequestPaymentCommandOutput + extends __MetadataBearer {} +declare const PutBucketRequestPaymentCommand_base: { + new ( + input: PutBucketRequestPaymentCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketRequestPaymentCommandInput, + PutBucketRequestPaymentCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketRequestPaymentCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketRequestPaymentCommandInput, + PutBucketRequestPaymentCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketRequestPaymentCommand extends PutBucketRequestPaymentCommand_base { + protected static __types: { + api: { + input: PutBucketRequestPaymentRequest; + output: {}; + }; + sdk: { + input: PutBucketRequestPaymentCommandInput; + output: PutBucketRequestPaymentCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketTaggingCommand.d.ts new file mode 100644 index 0000000..510c983 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketTaggingCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketTaggingRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketTaggingCommandInput extends PutBucketTaggingRequest {} +export interface PutBucketTaggingCommandOutput extends __MetadataBearer {} +declare const PutBucketTaggingCommand_base: { + new ( + input: PutBucketTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketTaggingCommandInput, + PutBucketTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketTaggingCommandInput, + PutBucketTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketTaggingCommand extends PutBucketTaggingCommand_base { + protected static __types: { + api: { + input: PutBucketTaggingRequest; + output: {}; + }; + sdk: { + input: PutBucketTaggingCommandInput; + output: PutBucketTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketVersioningCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketVersioningCommand.d.ts new file mode 100644 index 0000000..cf4e308 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketVersioningCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketVersioningRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketVersioningCommandInput + extends PutBucketVersioningRequest {} +export interface PutBucketVersioningCommandOutput extends __MetadataBearer {} +declare const PutBucketVersioningCommand_base: { + new ( + input: PutBucketVersioningCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketVersioningCommandInput, + PutBucketVersioningCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketVersioningCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketVersioningCommandInput, + PutBucketVersioningCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketVersioningCommand extends PutBucketVersioningCommand_base { + protected static __types: { + api: { + input: PutBucketVersioningRequest; + output: {}; + }; + sdk: { + input: PutBucketVersioningCommandInput; + output: PutBucketVersioningCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketWebsiteCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketWebsiteCommand.d.ts new file mode 100644 index 0000000..c60bfce --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketWebsiteCommand.d.ts @@ -0,0 +1,45 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutBucketWebsiteRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutBucketWebsiteCommandInput extends PutBucketWebsiteRequest {} +export interface PutBucketWebsiteCommandOutput extends __MetadataBearer {} +declare const PutBucketWebsiteCommand_base: { + new ( + input: PutBucketWebsiteCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketWebsiteCommandInput, + PutBucketWebsiteCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutBucketWebsiteCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutBucketWebsiteCommandInput, + PutBucketWebsiteCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutBucketWebsiteCommand extends PutBucketWebsiteCommand_base { + protected static __types: { + api: { + input: PutBucketWebsiteRequest; + output: {}; + }; + sdk: { + input: PutBucketWebsiteCommandInput; + output: PutBucketWebsiteCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectAclCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectAclCommand.d.ts new file mode 100644 index 0000000..99b7755 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectAclCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutObjectAclOutput, PutObjectAclRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutObjectAclCommandInput extends PutObjectAclRequest {} +export interface PutObjectAclCommandOutput + extends PutObjectAclOutput, + __MetadataBearer {} +declare const PutObjectAclCommand_base: { + new ( + input: PutObjectAclCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectAclCommandInput, + PutObjectAclCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutObjectAclCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectAclCommandInput, + PutObjectAclCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutObjectAclCommand extends PutObjectAclCommand_base { + protected static __types: { + api: { + input: PutObjectAclRequest; + output: PutObjectAclOutput; + }; + sdk: { + input: PutObjectAclCommandInput; + output: PutObjectAclCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectCommand.d.ts new file mode 100644 index 0000000..134bda9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectCommand.d.ts @@ -0,0 +1,53 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { + MetadataBearer as __MetadataBearer, + StreamingBlobPayloadInputTypes, +} from "@smithy/types"; +import { PutObjectOutput, PutObjectRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutObjectCommandInput + extends Pick> { + Body?: StreamingBlobPayloadInputTypes; +} +export interface PutObjectCommandOutput + extends PutObjectOutput, + __MetadataBearer {} +declare const PutObjectCommand_base: { + new ( + input: PutObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectCommandInput, + PutObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectCommandInput, + PutObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutObjectCommand extends PutObjectCommand_base { + protected static __types: { + api: { + input: PutObjectRequest; + output: PutObjectOutput; + }; + sdk: { + input: PutObjectCommandInput; + output: PutObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectLegalHoldCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectLegalHoldCommand.d.ts new file mode 100644 index 0000000..4937a29 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectLegalHoldCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + PutObjectLegalHoldOutput, + PutObjectLegalHoldRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutObjectLegalHoldCommandInput + extends PutObjectLegalHoldRequest {} +export interface PutObjectLegalHoldCommandOutput + extends PutObjectLegalHoldOutput, + __MetadataBearer {} +declare const PutObjectLegalHoldCommand_base: { + new ( + input: PutObjectLegalHoldCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectLegalHoldCommandInput, + PutObjectLegalHoldCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutObjectLegalHoldCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectLegalHoldCommandInput, + PutObjectLegalHoldCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutObjectLegalHoldCommand extends PutObjectLegalHoldCommand_base { + protected static __types: { + api: { + input: PutObjectLegalHoldRequest; + output: PutObjectLegalHoldOutput; + }; + sdk: { + input: PutObjectLegalHoldCommandInput; + output: PutObjectLegalHoldCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectLockConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectLockConfigurationCommand.d.ts new file mode 100644 index 0000000..5b813ce --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectLockConfigurationCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + PutObjectLockConfigurationOutput, + PutObjectLockConfigurationRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutObjectLockConfigurationCommandInput + extends PutObjectLockConfigurationRequest {} +export interface PutObjectLockConfigurationCommandOutput + extends PutObjectLockConfigurationOutput, + __MetadataBearer {} +declare const PutObjectLockConfigurationCommand_base: { + new ( + input: PutObjectLockConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectLockConfigurationCommandInput, + PutObjectLockConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutObjectLockConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectLockConfigurationCommandInput, + PutObjectLockConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutObjectLockConfigurationCommand extends PutObjectLockConfigurationCommand_base { + protected static __types: { + api: { + input: PutObjectLockConfigurationRequest; + output: PutObjectLockConfigurationOutput; + }; + sdk: { + input: PutObjectLockConfigurationCommandInput; + output: PutObjectLockConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectRetentionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectRetentionCommand.d.ts new file mode 100644 index 0000000..24018b5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectRetentionCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + PutObjectRetentionOutput, + PutObjectRetentionRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutObjectRetentionCommandInput + extends PutObjectRetentionRequest {} +export interface PutObjectRetentionCommandOutput + extends PutObjectRetentionOutput, + __MetadataBearer {} +declare const PutObjectRetentionCommand_base: { + new ( + input: PutObjectRetentionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectRetentionCommandInput, + PutObjectRetentionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutObjectRetentionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectRetentionCommandInput, + PutObjectRetentionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutObjectRetentionCommand extends PutObjectRetentionCommand_base { + protected static __types: { + api: { + input: PutObjectRetentionRequest; + output: PutObjectRetentionOutput; + }; + sdk: { + input: PutObjectRetentionCommandInput; + output: PutObjectRetentionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectTaggingCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectTaggingCommand.d.ts new file mode 100644 index 0000000..cf3b55b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectTaggingCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + PutObjectTaggingOutput, + PutObjectTaggingRequest, +} from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutObjectTaggingCommandInput extends PutObjectTaggingRequest {} +export interface PutObjectTaggingCommandOutput + extends PutObjectTaggingOutput, + __MetadataBearer {} +declare const PutObjectTaggingCommand_base: { + new ( + input: PutObjectTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectTaggingCommandInput, + PutObjectTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutObjectTaggingCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutObjectTaggingCommandInput, + PutObjectTaggingCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutObjectTaggingCommand extends PutObjectTaggingCommand_base { + protected static __types: { + api: { + input: PutObjectTaggingRequest; + output: PutObjectTaggingOutput; + }; + sdk: { + input: PutObjectTaggingCommandInput; + output: PutObjectTaggingCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutPublicAccessBlockCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutPublicAccessBlockCommand.d.ts new file mode 100644 index 0000000..0b0c16d --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutPublicAccessBlockCommand.d.ts @@ -0,0 +1,46 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { PutPublicAccessBlockRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface PutPublicAccessBlockCommandInput + extends PutPublicAccessBlockRequest {} +export interface PutPublicAccessBlockCommandOutput extends __MetadataBearer {} +declare const PutPublicAccessBlockCommand_base: { + new ( + input: PutPublicAccessBlockCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutPublicAccessBlockCommandInput, + PutPublicAccessBlockCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: PutPublicAccessBlockCommandInput + ): import("@smithy/smithy-client").CommandImpl< + PutPublicAccessBlockCommandInput, + PutPublicAccessBlockCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class PutPublicAccessBlockCommand extends PutPublicAccessBlockCommand_base { + protected static __types: { + api: { + input: PutPublicAccessBlockRequest; + output: {}; + }; + sdk: { + input: PutPublicAccessBlockCommandInput; + output: PutPublicAccessBlockCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RenameObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RenameObjectCommand.d.ts new file mode 100644 index 0000000..cbfc38b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RenameObjectCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { RenameObjectOutput, RenameObjectRequest } from "../models/models_0"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface RenameObjectCommandInput extends RenameObjectRequest {} +export interface RenameObjectCommandOutput + extends RenameObjectOutput, + __MetadataBearer {} +declare const RenameObjectCommand_base: { + new ( + input: RenameObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + RenameObjectCommandInput, + RenameObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: RenameObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + RenameObjectCommandInput, + RenameObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class RenameObjectCommand extends RenameObjectCommand_base { + protected static __types: { + api: { + input: RenameObjectRequest; + output: {}; + }; + sdk: { + input: RenameObjectCommandInput; + output: RenameObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RestoreObjectCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RestoreObjectCommand.d.ts new file mode 100644 index 0000000..3774431 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RestoreObjectCommand.d.ts @@ -0,0 +1,48 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { RestoreObjectOutput } from "../models/models_0"; +import { RestoreObjectRequest } from "../models/models_1"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface RestoreObjectCommandInput extends RestoreObjectRequest {} +export interface RestoreObjectCommandOutput + extends RestoreObjectOutput, + __MetadataBearer {} +declare const RestoreObjectCommand_base: { + new ( + input: RestoreObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + RestoreObjectCommandInput, + RestoreObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: RestoreObjectCommandInput + ): import("@smithy/smithy-client").CommandImpl< + RestoreObjectCommandInput, + RestoreObjectCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class RestoreObjectCommand extends RestoreObjectCommand_base { + protected static __types: { + api: { + input: RestoreObjectRequest; + output: RestoreObjectOutput; + }; + sdk: { + input: RestoreObjectCommandInput; + output: RestoreObjectCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/SelectObjectContentCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/SelectObjectContentCommand.d.ts new file mode 100644 index 0000000..ee25665 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/SelectObjectContentCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + SelectObjectContentOutput, + SelectObjectContentRequest, +} from "../models/models_1"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface SelectObjectContentCommandInput + extends SelectObjectContentRequest {} +export interface SelectObjectContentCommandOutput + extends SelectObjectContentOutput, + __MetadataBearer {} +declare const SelectObjectContentCommand_base: { + new ( + input: SelectObjectContentCommandInput + ): import("@smithy/smithy-client").CommandImpl< + SelectObjectContentCommandInput, + SelectObjectContentCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: SelectObjectContentCommandInput + ): import("@smithy/smithy-client").CommandImpl< + SelectObjectContentCommandInput, + SelectObjectContentCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class SelectObjectContentCommand extends SelectObjectContentCommand_base { + protected static __types: { + api: { + input: SelectObjectContentRequest; + output: SelectObjectContentOutput; + }; + sdk: { + input: SelectObjectContentCommandInput; + output: SelectObjectContentCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateBucketMetadataInventoryTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateBucketMetadataInventoryTableConfigurationCommand.d.ts new file mode 100644 index 0000000..158af3a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateBucketMetadataInventoryTableConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { UpdateBucketMetadataInventoryTableConfigurationRequest } from "../models/models_1"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface UpdateBucketMetadataInventoryTableConfigurationCommandInput + extends UpdateBucketMetadataInventoryTableConfigurationRequest {} +export interface UpdateBucketMetadataInventoryTableConfigurationCommandOutput + extends __MetadataBearer {} +declare const UpdateBucketMetadataInventoryTableConfigurationCommand_base: { + new ( + input: UpdateBucketMetadataInventoryTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UpdateBucketMetadataInventoryTableConfigurationCommandInput, + UpdateBucketMetadataInventoryTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: UpdateBucketMetadataInventoryTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UpdateBucketMetadataInventoryTableConfigurationCommandInput, + UpdateBucketMetadataInventoryTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class UpdateBucketMetadataInventoryTableConfigurationCommand extends UpdateBucketMetadataInventoryTableConfigurationCommand_base { + protected static __types: { + api: { + input: UpdateBucketMetadataInventoryTableConfigurationRequest; + output: {}; + }; + sdk: { + input: UpdateBucketMetadataInventoryTableConfigurationCommandInput; + output: UpdateBucketMetadataInventoryTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateBucketMetadataJournalTableConfigurationCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateBucketMetadataJournalTableConfigurationCommand.d.ts new file mode 100644 index 0000000..77f8061 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateBucketMetadataJournalTableConfigurationCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { UpdateBucketMetadataJournalTableConfigurationRequest } from "../models/models_1"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface UpdateBucketMetadataJournalTableConfigurationCommandInput + extends UpdateBucketMetadataJournalTableConfigurationRequest {} +export interface UpdateBucketMetadataJournalTableConfigurationCommandOutput + extends __MetadataBearer {} +declare const UpdateBucketMetadataJournalTableConfigurationCommand_base: { + new ( + input: UpdateBucketMetadataJournalTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UpdateBucketMetadataJournalTableConfigurationCommandInput, + UpdateBucketMetadataJournalTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: UpdateBucketMetadataJournalTableConfigurationCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UpdateBucketMetadataJournalTableConfigurationCommandInput, + UpdateBucketMetadataJournalTableConfigurationCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class UpdateBucketMetadataJournalTableConfigurationCommand extends UpdateBucketMetadataJournalTableConfigurationCommand_base { + protected static __types: { + api: { + input: UpdateBucketMetadataJournalTableConfigurationRequest; + output: {}; + }; + sdk: { + input: UpdateBucketMetadataJournalTableConfigurationCommandInput; + output: UpdateBucketMetadataJournalTableConfigurationCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateObjectEncryptionCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateObjectEncryptionCommand.d.ts new file mode 100644 index 0000000..a8fecd5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateObjectEncryptionCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + UpdateObjectEncryptionRequest, + UpdateObjectEncryptionResponse, +} from "../models/models_1"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface UpdateObjectEncryptionCommandInput + extends UpdateObjectEncryptionRequest {} +export interface UpdateObjectEncryptionCommandOutput + extends UpdateObjectEncryptionResponse, + __MetadataBearer {} +declare const UpdateObjectEncryptionCommand_base: { + new ( + input: UpdateObjectEncryptionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UpdateObjectEncryptionCommandInput, + UpdateObjectEncryptionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: UpdateObjectEncryptionCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UpdateObjectEncryptionCommandInput, + UpdateObjectEncryptionCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class UpdateObjectEncryptionCommand extends UpdateObjectEncryptionCommand_base { + protected static __types: { + api: { + input: UpdateObjectEncryptionRequest; + output: UpdateObjectEncryptionResponse; + }; + sdk: { + input: UpdateObjectEncryptionCommandInput; + output: UpdateObjectEncryptionCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UploadPartCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UploadPartCommand.d.ts new file mode 100644 index 0000000..7e89a24 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UploadPartCommand.d.ts @@ -0,0 +1,53 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { + MetadataBearer as __MetadataBearer, + StreamingBlobPayloadInputTypes, +} from "@smithy/types"; +import { UploadPartOutput, UploadPartRequest } from "../models/models_1"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface UploadPartCommandInput + extends Pick> { + Body?: StreamingBlobPayloadInputTypes; +} +export interface UploadPartCommandOutput + extends UploadPartOutput, + __MetadataBearer {} +declare const UploadPartCommand_base: { + new ( + input: UploadPartCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UploadPartCommandInput, + UploadPartCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: UploadPartCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UploadPartCommandInput, + UploadPartCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class UploadPartCommand extends UploadPartCommand_base { + protected static __types: { + api: { + input: UploadPartRequest; + output: UploadPartOutput; + }; + sdk: { + input: UploadPartCommandInput; + output: UploadPartCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UploadPartCopyCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UploadPartCopyCommand.d.ts new file mode 100644 index 0000000..a478464 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UploadPartCopyCommand.d.ts @@ -0,0 +1,50 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + UploadPartCopyOutput, + UploadPartCopyRequest, +} from "../models/models_1"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface UploadPartCopyCommandInput extends UploadPartCopyRequest {} +export interface UploadPartCopyCommandOutput + extends UploadPartCopyOutput, + __MetadataBearer {} +declare const UploadPartCopyCommand_base: { + new ( + input: UploadPartCopyCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UploadPartCopyCommandInput, + UploadPartCopyCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: UploadPartCopyCommandInput + ): import("@smithy/smithy-client").CommandImpl< + UploadPartCopyCommandInput, + UploadPartCopyCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class UploadPartCopyCommand extends UploadPartCopyCommand_base { + protected static __types: { + api: { + input: UploadPartCopyRequest; + output: UploadPartCopyOutput; + }; + sdk: { + input: UploadPartCopyCommandInput; + output: UploadPartCopyCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/WriteGetObjectResponseCommand.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/WriteGetObjectResponseCommand.d.ts new file mode 100644 index 0000000..b41fd7b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/WriteGetObjectResponseCommand.d.ts @@ -0,0 +1,54 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { + MetadataBearer as __MetadataBearer, + StreamingBlobPayloadInputTypes, +} from "@smithy/types"; +import { WriteGetObjectResponseRequest } from "../models/models_1"; +import { + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../S3Client"; +export { __MetadataBearer }; +export { $Command }; +export interface WriteGetObjectResponseCommandInput + extends Pick< + WriteGetObjectResponseRequest, + Exclude + > { + Body?: StreamingBlobPayloadInputTypes; +} +export interface WriteGetObjectResponseCommandOutput extends __MetadataBearer {} +declare const WriteGetObjectResponseCommand_base: { + new ( + input: WriteGetObjectResponseCommandInput + ): import("@smithy/smithy-client").CommandImpl< + WriteGetObjectResponseCommandInput, + WriteGetObjectResponseCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: WriteGetObjectResponseCommandInput + ): import("@smithy/smithy-client").CommandImpl< + WriteGetObjectResponseCommandInput, + WriteGetObjectResponseCommandOutput, + S3ClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class WriteGetObjectResponseCommand extends WriteGetObjectResponseCommand_base { + protected static __types: { + api: { + input: WriteGetObjectResponseRequest; + output: {}; + }; + sdk: { + input: WriteGetObjectResponseCommandInput; + output: WriteGetObjectResponseCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/index.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/index.d.ts new file mode 100644 index 0000000..2d7b505 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/index.d.ts @@ -0,0 +1,107 @@ +export * from "./AbortMultipartUploadCommand"; +export * from "./CompleteMultipartUploadCommand"; +export * from "./CopyObjectCommand"; +export * from "./CreateBucketCommand"; +export * from "./CreateBucketMetadataConfigurationCommand"; +export * from "./CreateBucketMetadataTableConfigurationCommand"; +export * from "./CreateMultipartUploadCommand"; +export * from "./CreateSessionCommand"; +export * from "./DeleteBucketAnalyticsConfigurationCommand"; +export * from "./DeleteBucketCommand"; +export * from "./DeleteBucketCorsCommand"; +export * from "./DeleteBucketEncryptionCommand"; +export * from "./DeleteBucketIntelligentTieringConfigurationCommand"; +export * from "./DeleteBucketInventoryConfigurationCommand"; +export * from "./DeleteBucketLifecycleCommand"; +export * from "./DeleteBucketMetadataConfigurationCommand"; +export * from "./DeleteBucketMetadataTableConfigurationCommand"; +export * from "./DeleteBucketMetricsConfigurationCommand"; +export * from "./DeleteBucketOwnershipControlsCommand"; +export * from "./DeleteBucketPolicyCommand"; +export * from "./DeleteBucketReplicationCommand"; +export * from "./DeleteBucketTaggingCommand"; +export * from "./DeleteBucketWebsiteCommand"; +export * from "./DeleteObjectCommand"; +export * from "./DeleteObjectTaggingCommand"; +export * from "./DeleteObjectsCommand"; +export * from "./DeletePublicAccessBlockCommand"; +export * from "./GetBucketAbacCommand"; +export * from "./GetBucketAccelerateConfigurationCommand"; +export * from "./GetBucketAclCommand"; +export * from "./GetBucketAnalyticsConfigurationCommand"; +export * from "./GetBucketCorsCommand"; +export * from "./GetBucketEncryptionCommand"; +export * from "./GetBucketIntelligentTieringConfigurationCommand"; +export * from "./GetBucketInventoryConfigurationCommand"; +export * from "./GetBucketLifecycleConfigurationCommand"; +export * from "./GetBucketLocationCommand"; +export * from "./GetBucketLoggingCommand"; +export * from "./GetBucketMetadataConfigurationCommand"; +export * from "./GetBucketMetadataTableConfigurationCommand"; +export * from "./GetBucketMetricsConfigurationCommand"; +export * from "./GetBucketNotificationConfigurationCommand"; +export * from "./GetBucketOwnershipControlsCommand"; +export * from "./GetBucketPolicyCommand"; +export * from "./GetBucketPolicyStatusCommand"; +export * from "./GetBucketReplicationCommand"; +export * from "./GetBucketRequestPaymentCommand"; +export * from "./GetBucketTaggingCommand"; +export * from "./GetBucketVersioningCommand"; +export * from "./GetBucketWebsiteCommand"; +export * from "./GetObjectAclCommand"; +export * from "./GetObjectAttributesCommand"; +export * from "./GetObjectCommand"; +export * from "./GetObjectLegalHoldCommand"; +export * from "./GetObjectLockConfigurationCommand"; +export * from "./GetObjectRetentionCommand"; +export * from "./GetObjectTaggingCommand"; +export * from "./GetObjectTorrentCommand"; +export * from "./GetPublicAccessBlockCommand"; +export * from "./HeadBucketCommand"; +export * from "./HeadObjectCommand"; +export * from "./ListBucketAnalyticsConfigurationsCommand"; +export * from "./ListBucketIntelligentTieringConfigurationsCommand"; +export * from "./ListBucketInventoryConfigurationsCommand"; +export * from "./ListBucketMetricsConfigurationsCommand"; +export * from "./ListBucketsCommand"; +export * from "./ListDirectoryBucketsCommand"; +export * from "./ListMultipartUploadsCommand"; +export * from "./ListObjectVersionsCommand"; +export * from "./ListObjectsCommand"; +export * from "./ListObjectsV2Command"; +export * from "./ListPartsCommand"; +export * from "./PutBucketAbacCommand"; +export * from "./PutBucketAccelerateConfigurationCommand"; +export * from "./PutBucketAclCommand"; +export * from "./PutBucketAnalyticsConfigurationCommand"; +export * from "./PutBucketCorsCommand"; +export * from "./PutBucketEncryptionCommand"; +export * from "./PutBucketIntelligentTieringConfigurationCommand"; +export * from "./PutBucketInventoryConfigurationCommand"; +export * from "./PutBucketLifecycleConfigurationCommand"; +export * from "./PutBucketLoggingCommand"; +export * from "./PutBucketMetricsConfigurationCommand"; +export * from "./PutBucketNotificationConfigurationCommand"; +export * from "./PutBucketOwnershipControlsCommand"; +export * from "./PutBucketPolicyCommand"; +export * from "./PutBucketReplicationCommand"; +export * from "./PutBucketRequestPaymentCommand"; +export * from "./PutBucketTaggingCommand"; +export * from "./PutBucketVersioningCommand"; +export * from "./PutBucketWebsiteCommand"; +export * from "./PutObjectAclCommand"; +export * from "./PutObjectCommand"; +export * from "./PutObjectLegalHoldCommand"; +export * from "./PutObjectLockConfigurationCommand"; +export * from "./PutObjectRetentionCommand"; +export * from "./PutObjectTaggingCommand"; +export * from "./PutPublicAccessBlockCommand"; +export * from "./RenameObjectCommand"; +export * from "./RestoreObjectCommand"; +export * from "./SelectObjectContentCommand"; +export * from "./UpdateBucketMetadataInventoryTableConfigurationCommand"; +export * from "./UpdateBucketMetadataJournalTableConfigurationCommand"; +export * from "./UpdateObjectEncryptionCommand"; +export * from "./UploadPartCommand"; +export * from "./UploadPartCopyCommand"; +export * from "./WriteGetObjectResponseCommand"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..b6a9ba9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/endpoint/EndpointParameters.d.ts @@ -0,0 +1,106 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + clientContextParams?: { + disableS3ExpressSessionAuth?: + | boolean + | undefined + | Provider; + }; + region?: string | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; + forcePathStyle?: boolean | undefined | Provider; + useAccelerateEndpoint?: boolean | undefined | Provider; + useGlobalEndpoint?: boolean | undefined | Provider; + disableMultiregionAccessPoints?: + | boolean + | undefined + | Provider; + useArnRegion?: boolean | undefined | Provider; + disableS3ExpressSessionAuth?: + | boolean + | undefined + | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly ForcePathStyle: { + readonly type: "clientContextParams"; + readonly name: "forcePathStyle"; + }; + readonly UseArnRegion: { + readonly type: "clientContextParams"; + readonly name: "useArnRegion"; + }; + readonly DisableMultiRegionAccessPoints: { + readonly type: "clientContextParams"; + readonly name: "disableMultiregionAccessPoints"; + }; + readonly Accelerate: { + readonly type: "clientContextParams"; + readonly name: "useAccelerateEndpoint"; + }; + readonly DisableS3ExpressSessionAuth: { + readonly type: "clientContextParams"; + readonly name: "disableS3ExpressSessionAuth"; + }; + readonly UseGlobalEndpoint: { + readonly type: "builtInParams"; + readonly name: "useGlobalEndpoint"; + }; + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Bucket?: string | undefined; + Region?: string | undefined; + UseFIPS?: boolean | undefined; + UseDualStack?: boolean | undefined; + Endpoint?: string | undefined; + ForcePathStyle?: boolean | undefined; + Accelerate?: boolean | undefined; + UseGlobalEndpoint?: boolean | undefined; + UseObjectLambdaEndpoint?: boolean | undefined; + Key?: string | undefined; + Prefix?: string | undefined; + CopySource?: string | undefined; + DisableAccessPoints?: boolean | undefined; + DisableMultiRegionAccessPoints?: boolean | undefined; + UseArnRegion?: boolean | undefined; + UseS3ExpressControlEndpoint?: boolean | undefined; + DisableS3ExpressSessionAuth?: boolean | undefined; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..5909925 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4b23899 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/extensionConfiguration.d.ts new file mode 100644 index 0000000..b559eff --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface S3ExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..0c1e183 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/index.d.ts @@ -0,0 +1,14 @@ +export * from "./S3Client"; +export * from "./S3"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { S3ExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./pagination"; +export * from "./waiters"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export * from "./models/models_1"; +export { S3ServiceException } from "./models/S3ServiceException"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/S3ServiceException.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/S3ServiceException.d.ts new file mode 100644 index 0000000..ce4e657 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/S3ServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class S3ServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/enums.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/enums.d.ts new file mode 100644 index 0000000..e72b4bc --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/enums.d.ts @@ -0,0 +1,529 @@ +export declare const BucketAbacStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type BucketAbacStatus = + (typeof BucketAbacStatus)[keyof typeof BucketAbacStatus]; +export declare const RequestCharged: { + readonly requester: "requester"; +}; +export type RequestCharged = + (typeof RequestCharged)[keyof typeof RequestCharged]; +export declare const RequestPayer: { + readonly requester: "requester"; +}; +export type RequestPayer = (typeof RequestPayer)[keyof typeof RequestPayer]; +export declare const BucketAccelerateStatus: { + readonly Enabled: "Enabled"; + readonly Suspended: "Suspended"; +}; +export type BucketAccelerateStatus = + (typeof BucketAccelerateStatus)[keyof typeof BucketAccelerateStatus]; +export declare const Type: { + readonly AmazonCustomerByEmail: "AmazonCustomerByEmail"; + readonly CanonicalUser: "CanonicalUser"; + readonly Group: "Group"; +}; +export type Type = (typeof Type)[keyof typeof Type]; +export declare const Permission: { + readonly FULL_CONTROL: "FULL_CONTROL"; + readonly READ: "READ"; + readonly READ_ACP: "READ_ACP"; + readonly WRITE: "WRITE"; + readonly WRITE_ACP: "WRITE_ACP"; +}; +export type Permission = (typeof Permission)[keyof typeof Permission]; +export declare const OwnerOverride: { + readonly Destination: "Destination"; +}; +export type OwnerOverride = (typeof OwnerOverride)[keyof typeof OwnerOverride]; +export declare const ChecksumType: { + readonly COMPOSITE: "COMPOSITE"; + readonly FULL_OBJECT: "FULL_OBJECT"; +}; +export type ChecksumType = (typeof ChecksumType)[keyof typeof ChecksumType]; +export declare const ServerSideEncryption: { + readonly AES256: "AES256"; + readonly aws_fsx: "aws:fsx"; + readonly aws_kms: "aws:kms"; + readonly aws_kms_dsse: "aws:kms:dsse"; +}; +export type ServerSideEncryption = + (typeof ServerSideEncryption)[keyof typeof ServerSideEncryption]; +export declare const ObjectCannedACL: { + readonly authenticated_read: "authenticated-read"; + readonly aws_exec_read: "aws-exec-read"; + readonly bucket_owner_full_control: "bucket-owner-full-control"; + readonly bucket_owner_read: "bucket-owner-read"; + readonly private: "private"; + readonly public_read: "public-read"; + readonly public_read_write: "public-read-write"; +}; +export type ObjectCannedACL = + (typeof ObjectCannedACL)[keyof typeof ObjectCannedACL]; +export declare const ChecksumAlgorithm: { + readonly CRC32: "CRC32"; + readonly CRC32C: "CRC32C"; + readonly CRC64NVME: "CRC64NVME"; + readonly SHA1: "SHA1"; + readonly SHA256: "SHA256"; +}; +export type ChecksumAlgorithm = + (typeof ChecksumAlgorithm)[keyof typeof ChecksumAlgorithm]; +export declare const MetadataDirective: { + readonly COPY: "COPY"; + readonly REPLACE: "REPLACE"; +}; +export type MetadataDirective = + (typeof MetadataDirective)[keyof typeof MetadataDirective]; +export declare const ObjectLockLegalHoldStatus: { + readonly OFF: "OFF"; + readonly ON: "ON"; +}; +export type ObjectLockLegalHoldStatus = + (typeof ObjectLockLegalHoldStatus)[keyof typeof ObjectLockLegalHoldStatus]; +export declare const ObjectLockMode: { + readonly COMPLIANCE: "COMPLIANCE"; + readonly GOVERNANCE: "GOVERNANCE"; +}; +export type ObjectLockMode = + (typeof ObjectLockMode)[keyof typeof ObjectLockMode]; +export declare const StorageClass: { + readonly DEEP_ARCHIVE: "DEEP_ARCHIVE"; + readonly EXPRESS_ONEZONE: "EXPRESS_ONEZONE"; + readonly FSX_ONTAP: "FSX_ONTAP"; + readonly FSX_OPENZFS: "FSX_OPENZFS"; + readonly GLACIER: "GLACIER"; + readonly GLACIER_IR: "GLACIER_IR"; + readonly INTELLIGENT_TIERING: "INTELLIGENT_TIERING"; + readonly ONEZONE_IA: "ONEZONE_IA"; + readonly OUTPOSTS: "OUTPOSTS"; + readonly REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY"; + readonly SNOW: "SNOW"; + readonly STANDARD: "STANDARD"; + readonly STANDARD_IA: "STANDARD_IA"; +}; +export type StorageClass = (typeof StorageClass)[keyof typeof StorageClass]; +export declare const TaggingDirective: { + readonly COPY: "COPY"; + readonly REPLACE: "REPLACE"; +}; +export type TaggingDirective = + (typeof TaggingDirective)[keyof typeof TaggingDirective]; +export declare const BucketCannedACL: { + readonly authenticated_read: "authenticated-read"; + readonly private: "private"; + readonly public_read: "public-read"; + readonly public_read_write: "public-read-write"; +}; +export type BucketCannedACL = + (typeof BucketCannedACL)[keyof typeof BucketCannedACL]; +export declare const BucketNamespace: { + readonly ACCOUNT_REGIONAL: "account-regional"; + readonly GLOBAL: "global"; +}; +export type BucketNamespace = + (typeof BucketNamespace)[keyof typeof BucketNamespace]; +export declare const DataRedundancy: { + readonly SingleAvailabilityZone: "SingleAvailabilityZone"; + readonly SingleLocalZone: "SingleLocalZone"; +}; +export type DataRedundancy = + (typeof DataRedundancy)[keyof typeof DataRedundancy]; +export declare const BucketType: { + readonly Directory: "Directory"; +}; +export type BucketType = (typeof BucketType)[keyof typeof BucketType]; +export declare const LocationType: { + readonly AvailabilityZone: "AvailabilityZone"; + readonly LocalZone: "LocalZone"; +}; +export type LocationType = (typeof LocationType)[keyof typeof LocationType]; +export declare const BucketLocationConstraint: { + readonly EU: "EU"; + readonly af_south_1: "af-south-1"; + readonly ap_east_1: "ap-east-1"; + readonly ap_northeast_1: "ap-northeast-1"; + readonly ap_northeast_2: "ap-northeast-2"; + readonly ap_northeast_3: "ap-northeast-3"; + readonly ap_south_1: "ap-south-1"; + readonly ap_south_2: "ap-south-2"; + readonly ap_southeast_1: "ap-southeast-1"; + readonly ap_southeast_2: "ap-southeast-2"; + readonly ap_southeast_3: "ap-southeast-3"; + readonly ap_southeast_4: "ap-southeast-4"; + readonly ap_southeast_5: "ap-southeast-5"; + readonly ca_central_1: "ca-central-1"; + readonly cn_north_1: "cn-north-1"; + readonly cn_northwest_1: "cn-northwest-1"; + readonly eu_central_1: "eu-central-1"; + readonly eu_central_2: "eu-central-2"; + readonly eu_north_1: "eu-north-1"; + readonly eu_south_1: "eu-south-1"; + readonly eu_south_2: "eu-south-2"; + readonly eu_west_1: "eu-west-1"; + readonly eu_west_2: "eu-west-2"; + readonly eu_west_3: "eu-west-3"; + readonly il_central_1: "il-central-1"; + readonly me_central_1: "me-central-1"; + readonly me_south_1: "me-south-1"; + readonly sa_east_1: "sa-east-1"; + readonly us_east_2: "us-east-2"; + readonly us_gov_east_1: "us-gov-east-1"; + readonly us_gov_west_1: "us-gov-west-1"; + readonly us_west_1: "us-west-1"; + readonly us_west_2: "us-west-2"; +}; +export type BucketLocationConstraint = + (typeof BucketLocationConstraint)[keyof typeof BucketLocationConstraint]; +export declare const ObjectOwnership: { + readonly BucketOwnerEnforced: "BucketOwnerEnforced"; + readonly BucketOwnerPreferred: "BucketOwnerPreferred"; + readonly ObjectWriter: "ObjectWriter"; +}; +export type ObjectOwnership = + (typeof ObjectOwnership)[keyof typeof ObjectOwnership]; +export declare const InventoryConfigurationState: { + readonly DISABLED: "DISABLED"; + readonly ENABLED: "ENABLED"; +}; +export type InventoryConfigurationState = + (typeof InventoryConfigurationState)[keyof typeof InventoryConfigurationState]; +export declare const TableSseAlgorithm: { + readonly AES256: "AES256"; + readonly aws_kms: "aws:kms"; +}; +export type TableSseAlgorithm = + (typeof TableSseAlgorithm)[keyof typeof TableSseAlgorithm]; +export declare const ExpirationState: { + readonly DISABLED: "DISABLED"; + readonly ENABLED: "ENABLED"; +}; +export type ExpirationState = + (typeof ExpirationState)[keyof typeof ExpirationState]; +export declare const SessionMode: { + readonly ReadOnly: "ReadOnly"; + readonly ReadWrite: "ReadWrite"; +}; +export type SessionMode = (typeof SessionMode)[keyof typeof SessionMode]; +export declare const AnalyticsS3ExportFileFormat: { + readonly CSV: "CSV"; +}; +export type AnalyticsS3ExportFileFormat = + (typeof AnalyticsS3ExportFileFormat)[keyof typeof AnalyticsS3ExportFileFormat]; +export declare const StorageClassAnalysisSchemaVersion: { + readonly V_1: "V_1"; +}; +export type StorageClassAnalysisSchemaVersion = + (typeof StorageClassAnalysisSchemaVersion)[keyof typeof StorageClassAnalysisSchemaVersion]; +export declare const EncryptionType: { + readonly NONE: "NONE"; + readonly SSE_C: "SSE-C"; +}; +export type EncryptionType = + (typeof EncryptionType)[keyof typeof EncryptionType]; +export declare const IntelligentTieringStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type IntelligentTieringStatus = + (typeof IntelligentTieringStatus)[keyof typeof IntelligentTieringStatus]; +export declare const IntelligentTieringAccessTier: { + readonly ARCHIVE_ACCESS: "ARCHIVE_ACCESS"; + readonly DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS"; +}; +export type IntelligentTieringAccessTier = + (typeof IntelligentTieringAccessTier)[keyof typeof IntelligentTieringAccessTier]; +export declare const InventoryFormat: { + readonly CSV: "CSV"; + readonly ORC: "ORC"; + readonly Parquet: "Parquet"; +}; +export type InventoryFormat = + (typeof InventoryFormat)[keyof typeof InventoryFormat]; +export declare const InventoryIncludedObjectVersions: { + readonly All: "All"; + readonly Current: "Current"; +}; +export type InventoryIncludedObjectVersions = + (typeof InventoryIncludedObjectVersions)[keyof typeof InventoryIncludedObjectVersions]; +export declare const InventoryOptionalField: { + readonly BucketKeyStatus: "BucketKeyStatus"; + readonly ChecksumAlgorithm: "ChecksumAlgorithm"; + readonly ETag: "ETag"; + readonly EncryptionStatus: "EncryptionStatus"; + readonly IntelligentTieringAccessTier: "IntelligentTieringAccessTier"; + readonly IsMultipartUploaded: "IsMultipartUploaded"; + readonly LastModifiedDate: "LastModifiedDate"; + readonly LifecycleExpirationDate: "LifecycleExpirationDate"; + readonly ObjectAccessControlList: "ObjectAccessControlList"; + readonly ObjectLockLegalHoldStatus: "ObjectLockLegalHoldStatus"; + readonly ObjectLockMode: "ObjectLockMode"; + readonly ObjectLockRetainUntilDate: "ObjectLockRetainUntilDate"; + readonly ObjectOwner: "ObjectOwner"; + readonly ReplicationStatus: "ReplicationStatus"; + readonly Size: "Size"; + readonly StorageClass: "StorageClass"; +}; +export type InventoryOptionalField = + (typeof InventoryOptionalField)[keyof typeof InventoryOptionalField]; +export declare const InventoryFrequency: { + readonly Daily: "Daily"; + readonly Weekly: "Weekly"; +}; +export type InventoryFrequency = + (typeof InventoryFrequency)[keyof typeof InventoryFrequency]; +export declare const TransitionStorageClass: { + readonly DEEP_ARCHIVE: "DEEP_ARCHIVE"; + readonly GLACIER: "GLACIER"; + readonly GLACIER_IR: "GLACIER_IR"; + readonly INTELLIGENT_TIERING: "INTELLIGENT_TIERING"; + readonly ONEZONE_IA: "ONEZONE_IA"; + readonly STANDARD_IA: "STANDARD_IA"; +}; +export type TransitionStorageClass = + (typeof TransitionStorageClass)[keyof typeof TransitionStorageClass]; +export declare const ExpirationStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type ExpirationStatus = + (typeof ExpirationStatus)[keyof typeof ExpirationStatus]; +export declare const TransitionDefaultMinimumObjectSize: { + readonly all_storage_classes_128K: "all_storage_classes_128K"; + readonly varies_by_storage_class: "varies_by_storage_class"; +}; +export type TransitionDefaultMinimumObjectSize = + (typeof TransitionDefaultMinimumObjectSize)[keyof typeof TransitionDefaultMinimumObjectSize]; +export declare const BucketLogsPermission: { + readonly FULL_CONTROL: "FULL_CONTROL"; + readonly READ: "READ"; + readonly WRITE: "WRITE"; +}; +export type BucketLogsPermission = + (typeof BucketLogsPermission)[keyof typeof BucketLogsPermission]; +export declare const PartitionDateSource: { + readonly DeliveryTime: "DeliveryTime"; + readonly EventTime: "EventTime"; +}; +export type PartitionDateSource = + (typeof PartitionDateSource)[keyof typeof PartitionDateSource]; +export declare const S3TablesBucketType: { + readonly aws: "aws"; + readonly customer: "customer"; +}; +export type S3TablesBucketType = + (typeof S3TablesBucketType)[keyof typeof S3TablesBucketType]; +export declare const Event: { + readonly s3_IntelligentTiering: "s3:IntelligentTiering"; + readonly s3_LifecycleExpiration_: "s3:LifecycleExpiration:*"; + readonly s3_LifecycleExpiration_Delete: "s3:LifecycleExpiration:Delete"; + readonly s3_LifecycleExpiration_DeleteMarkerCreated: "s3:LifecycleExpiration:DeleteMarkerCreated"; + readonly s3_LifecycleTransition: "s3:LifecycleTransition"; + readonly s3_ObjectAcl_Put: "s3:ObjectAcl:Put"; + readonly s3_ObjectCreated_: "s3:ObjectCreated:*"; + readonly s3_ObjectCreated_CompleteMultipartUpload: "s3:ObjectCreated:CompleteMultipartUpload"; + readonly s3_ObjectCreated_Copy: "s3:ObjectCreated:Copy"; + readonly s3_ObjectCreated_Post: "s3:ObjectCreated:Post"; + readonly s3_ObjectCreated_Put: "s3:ObjectCreated:Put"; + readonly s3_ObjectRemoved_: "s3:ObjectRemoved:*"; + readonly s3_ObjectRemoved_Delete: "s3:ObjectRemoved:Delete"; + readonly s3_ObjectRemoved_DeleteMarkerCreated: "s3:ObjectRemoved:DeleteMarkerCreated"; + readonly s3_ObjectRestore_: "s3:ObjectRestore:*"; + readonly s3_ObjectRestore_Completed: "s3:ObjectRestore:Completed"; + readonly s3_ObjectRestore_Delete: "s3:ObjectRestore:Delete"; + readonly s3_ObjectRestore_Post: "s3:ObjectRestore:Post"; + readonly s3_ObjectTagging_: "s3:ObjectTagging:*"; + readonly s3_ObjectTagging_Delete: "s3:ObjectTagging:Delete"; + readonly s3_ObjectTagging_Put: "s3:ObjectTagging:Put"; + readonly s3_ReducedRedundancyLostObject: "s3:ReducedRedundancyLostObject"; + readonly s3_Replication_: "s3:Replication:*"; + readonly s3_Replication_OperationFailedReplication: "s3:Replication:OperationFailedReplication"; + readonly s3_Replication_OperationMissedThreshold: "s3:Replication:OperationMissedThreshold"; + readonly s3_Replication_OperationNotTracked: "s3:Replication:OperationNotTracked"; + readonly s3_Replication_OperationReplicatedAfterThreshold: "s3:Replication:OperationReplicatedAfterThreshold"; +}; +export type Event = (typeof Event)[keyof typeof Event]; +export declare const FilterRuleName: { + readonly prefix: "prefix"; + readonly suffix: "suffix"; +}; +export type FilterRuleName = + (typeof FilterRuleName)[keyof typeof FilterRuleName]; +export declare const DeleteMarkerReplicationStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type DeleteMarkerReplicationStatus = + (typeof DeleteMarkerReplicationStatus)[keyof typeof DeleteMarkerReplicationStatus]; +export declare const MetricsStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type MetricsStatus = (typeof MetricsStatus)[keyof typeof MetricsStatus]; +export declare const ReplicationTimeStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type ReplicationTimeStatus = + (typeof ReplicationTimeStatus)[keyof typeof ReplicationTimeStatus]; +export declare const ExistingObjectReplicationStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type ExistingObjectReplicationStatus = + (typeof ExistingObjectReplicationStatus)[keyof typeof ExistingObjectReplicationStatus]; +export declare const ReplicaModificationsStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type ReplicaModificationsStatus = + (typeof ReplicaModificationsStatus)[keyof typeof ReplicaModificationsStatus]; +export declare const SseKmsEncryptedObjectsStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type SseKmsEncryptedObjectsStatus = + (typeof SseKmsEncryptedObjectsStatus)[keyof typeof SseKmsEncryptedObjectsStatus]; +export declare const ReplicationRuleStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type ReplicationRuleStatus = + (typeof ReplicationRuleStatus)[keyof typeof ReplicationRuleStatus]; +export declare const Payer: { + readonly BucketOwner: "BucketOwner"; + readonly Requester: "Requester"; +}; +export type Payer = (typeof Payer)[keyof typeof Payer]; +export declare const MFADeleteStatus: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type MFADeleteStatus = + (typeof MFADeleteStatus)[keyof typeof MFADeleteStatus]; +export declare const BucketVersioningStatus: { + readonly Enabled: "Enabled"; + readonly Suspended: "Suspended"; +}; +export type BucketVersioningStatus = + (typeof BucketVersioningStatus)[keyof typeof BucketVersioningStatus]; +export declare const Protocol: { + readonly http: "http"; + readonly https: "https"; +}; +export type Protocol = (typeof Protocol)[keyof typeof Protocol]; +export declare const ReplicationStatus: { + readonly COMPLETE: "COMPLETE"; + readonly COMPLETED: "COMPLETED"; + readonly FAILED: "FAILED"; + readonly PENDING: "PENDING"; + readonly REPLICA: "REPLICA"; +}; +export type ReplicationStatus = + (typeof ReplicationStatus)[keyof typeof ReplicationStatus]; +export declare const ChecksumMode: { + readonly ENABLED: "ENABLED"; +}; +export type ChecksumMode = (typeof ChecksumMode)[keyof typeof ChecksumMode]; +export declare const ObjectAttributes: { + readonly CHECKSUM: "Checksum"; + readonly ETAG: "ETag"; + readonly OBJECT_PARTS: "ObjectParts"; + readonly OBJECT_SIZE: "ObjectSize"; + readonly STORAGE_CLASS: "StorageClass"; +}; +export type ObjectAttributes = + (typeof ObjectAttributes)[keyof typeof ObjectAttributes]; +export declare const ObjectLockEnabled: { + readonly Enabled: "Enabled"; +}; +export type ObjectLockEnabled = + (typeof ObjectLockEnabled)[keyof typeof ObjectLockEnabled]; +export declare const ObjectLockRetentionMode: { + readonly COMPLIANCE: "COMPLIANCE"; + readonly GOVERNANCE: "GOVERNANCE"; +}; +export type ObjectLockRetentionMode = + (typeof ObjectLockRetentionMode)[keyof typeof ObjectLockRetentionMode]; +export declare const ArchiveStatus: { + readonly ARCHIVE_ACCESS: "ARCHIVE_ACCESS"; + readonly DEEP_ARCHIVE_ACCESS: "DEEP_ARCHIVE_ACCESS"; +}; +export type ArchiveStatus = (typeof ArchiveStatus)[keyof typeof ArchiveStatus]; +export declare const EncodingType: { + readonly url: "url"; +}; +export type EncodingType = (typeof EncodingType)[keyof typeof EncodingType]; +export declare const ObjectStorageClass: { + readonly DEEP_ARCHIVE: "DEEP_ARCHIVE"; + readonly EXPRESS_ONEZONE: "EXPRESS_ONEZONE"; + readonly FSX_ONTAP: "FSX_ONTAP"; + readonly FSX_OPENZFS: "FSX_OPENZFS"; + readonly GLACIER: "GLACIER"; + readonly GLACIER_IR: "GLACIER_IR"; + readonly INTELLIGENT_TIERING: "INTELLIGENT_TIERING"; + readonly ONEZONE_IA: "ONEZONE_IA"; + readonly OUTPOSTS: "OUTPOSTS"; + readonly REDUCED_REDUNDANCY: "REDUCED_REDUNDANCY"; + readonly SNOW: "SNOW"; + readonly STANDARD: "STANDARD"; + readonly STANDARD_IA: "STANDARD_IA"; +}; +export type ObjectStorageClass = + (typeof ObjectStorageClass)[keyof typeof ObjectStorageClass]; +export declare const OptionalObjectAttributes: { + readonly RESTORE_STATUS: "RestoreStatus"; +}; +export type OptionalObjectAttributes = + (typeof OptionalObjectAttributes)[keyof typeof OptionalObjectAttributes]; +export declare const ObjectVersionStorageClass: { + readonly STANDARD: "STANDARD"; +}; +export type ObjectVersionStorageClass = + (typeof ObjectVersionStorageClass)[keyof typeof ObjectVersionStorageClass]; +export declare const MFADelete: { + readonly Disabled: "Disabled"; + readonly Enabled: "Enabled"; +}; +export type MFADelete = (typeof MFADelete)[keyof typeof MFADelete]; +export declare const Tier: { + readonly Bulk: "Bulk"; + readonly Expedited: "Expedited"; + readonly Standard: "Standard"; +}; +export type Tier = (typeof Tier)[keyof typeof Tier]; +export declare const ExpressionType: { + readonly SQL: "SQL"; +}; +export type ExpressionType = + (typeof ExpressionType)[keyof typeof ExpressionType]; +export declare const CompressionType: { + readonly BZIP2: "BZIP2"; + readonly GZIP: "GZIP"; + readonly NONE: "NONE"; +}; +export type CompressionType = + (typeof CompressionType)[keyof typeof CompressionType]; +export declare const FileHeaderInfo: { + readonly IGNORE: "IGNORE"; + readonly NONE: "NONE"; + readonly USE: "USE"; +}; +export type FileHeaderInfo = + (typeof FileHeaderInfo)[keyof typeof FileHeaderInfo]; +export declare const JSONType: { + readonly DOCUMENT: "DOCUMENT"; + readonly LINES: "LINES"; +}; +export type JSONType = (typeof JSONType)[keyof typeof JSONType]; +export declare const QuoteFields: { + readonly ALWAYS: "ALWAYS"; + readonly ASNEEDED: "ASNEEDED"; +}; +export type QuoteFields = (typeof QuoteFields)[keyof typeof QuoteFields]; +export declare const RestoreRequestType: { + readonly SELECT: "SELECT"; +}; +export type RestoreRequestType = + (typeof RestoreRequestType)[keyof typeof RestoreRequestType]; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/errors.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/errors.d.ts new file mode 100644 index 0000000..379325b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/errors.d.ts @@ -0,0 +1,92 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { IntelligentTieringAccessTier, StorageClass } from "./enums"; +import { S3ServiceException as __BaseException } from "./S3ServiceException"; +export declare class NoSuchUpload extends __BaseException { + readonly name: "NoSuchUpload"; + readonly $fault: "client"; + constructor(opts: __ExceptionOptionType); +} +export declare class AccessDenied extends __BaseException { + readonly name: "AccessDenied"; + readonly $fault: "client"; + constructor(opts: __ExceptionOptionType); +} +export declare class ObjectNotInActiveTierError extends __BaseException { + readonly name: "ObjectNotInActiveTierError"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class BucketAlreadyExists extends __BaseException { + readonly name: "BucketAlreadyExists"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class BucketAlreadyOwnedByYou extends __BaseException { + readonly name: "BucketAlreadyOwnedByYou"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class NoSuchBucket extends __BaseException { + readonly name: "NoSuchBucket"; + readonly $fault: "client"; + constructor(opts: __ExceptionOptionType); +} +export declare class InvalidObjectState extends __BaseException { + readonly name: "InvalidObjectState"; + readonly $fault: "client"; + StorageClass?: StorageClass | undefined; + AccessTier?: IntelligentTieringAccessTier | undefined; + constructor(opts: __ExceptionOptionType); +} +export declare class NoSuchKey extends __BaseException { + readonly name: "NoSuchKey"; + readonly $fault: "client"; + constructor(opts: __ExceptionOptionType); +} +export declare class NotFound extends __BaseException { + readonly name: "NotFound"; + readonly $fault: "client"; + constructor(opts: __ExceptionOptionType); +} +export declare class EncryptionTypeMismatch extends __BaseException { + readonly name: "EncryptionTypeMismatch"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidRequest extends __BaseException { + readonly name: "InvalidRequest"; + readonly $fault: "client"; + constructor(opts: __ExceptionOptionType); +} +export declare class InvalidWriteOffset extends __BaseException { + readonly name: "InvalidWriteOffset"; + readonly $fault: "client"; + constructor(opts: __ExceptionOptionType); +} +export declare class TooManyParts extends __BaseException { + readonly name: "TooManyParts"; + readonly $fault: "client"; + constructor(opts: __ExceptionOptionType); +} +export declare class IdempotencyParameterMismatch extends __BaseException { + readonly name: "IdempotencyParameterMismatch"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ObjectAlreadyInActiveTierError extends __BaseException { + readonly name: "ObjectAlreadyInActiveTierError"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_0.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_0.d.ts new file mode 100644 index 0000000..541464b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_0.d.ts @@ -0,0 +1,2045 @@ +import { StreamingBlobTypes } from "@smithy/types"; +import { + AnalyticsS3ExportFileFormat, + ArchiveStatus, + BucketAbacStatus, + BucketAccelerateStatus, + BucketCannedACL, + BucketLocationConstraint, + BucketLogsPermission, + BucketNamespace, + BucketType, + BucketVersioningStatus, + ChecksumAlgorithm, + ChecksumMode, + ChecksumType, + DataRedundancy, + DeleteMarkerReplicationStatus, + EncodingType, + EncryptionType, + Event, + ExistingObjectReplicationStatus, + ExpirationState, + ExpirationStatus, + FileHeaderInfo, + FilterRuleName, + IntelligentTieringAccessTier, + IntelligentTieringStatus, + InventoryConfigurationState, + InventoryFormat, + InventoryFrequency, + InventoryIncludedObjectVersions, + InventoryOptionalField, + JSONType, + LocationType, + MetadataDirective, + MetricsStatus, + MFADelete, + MFADeleteStatus, + ObjectAttributes, + ObjectCannedACL, + ObjectLockEnabled, + ObjectLockLegalHoldStatus, + ObjectLockMode, + ObjectLockRetentionMode, + ObjectOwnership, + ObjectStorageClass, + ObjectVersionStorageClass, + OptionalObjectAttributes, + OwnerOverride, + PartitionDateSource, + Payer, + Permission, + Protocol, + ReplicaModificationsStatus, + ReplicationRuleStatus, + ReplicationStatus, + ReplicationTimeStatus, + RequestCharged, + RequestPayer, + S3TablesBucketType, + ServerSideEncryption, + SessionMode, + SseKmsEncryptedObjectsStatus, + StorageClass, + StorageClassAnalysisSchemaVersion, + TableSseAlgorithm, + TaggingDirective, + Tier, + TransitionDefaultMinimumObjectSize, + TransitionStorageClass, + Type, +} from "./enums"; +export interface AbacStatus { + Status?: BucketAbacStatus | undefined; +} +export interface AbortIncompleteMultipartUpload { + DaysAfterInitiation?: number | undefined; +} +export interface AbortMultipartUploadOutput { + RequestCharged?: RequestCharged | undefined; +} +export interface AbortMultipartUploadRequest { + Bucket: string | undefined; + Key: string | undefined; + UploadId: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; + IfMatchInitiatedTime?: Date | undefined; +} +export interface AccelerateConfiguration { + Status?: BucketAccelerateStatus | undefined; +} +export interface Grantee { + DisplayName?: string | undefined; + EmailAddress?: string | undefined; + ID?: string | undefined; + URI?: string | undefined; + Type: Type | undefined; +} +export interface Grant { + Grantee?: Grantee | undefined; + Permission?: Permission | undefined; +} +export interface Owner { + DisplayName?: string | undefined; + ID?: string | undefined; +} +export interface AccessControlPolicy { + Grants?: Grant[] | undefined; + Owner?: Owner | undefined; +} +export interface AccessControlTranslation { + Owner: OwnerOverride | undefined; +} +export interface CompleteMultipartUploadOutput { + Location?: string | undefined; + Bucket?: string | undefined; + Key?: string | undefined; + Expiration?: string | undefined; + ETag?: string | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + ChecksumType?: ChecksumType | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + VersionId?: string | undefined; + SSEKMSKeyId?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface CompletedPart { + ETag?: string | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + PartNumber?: number | undefined; +} +export interface CompletedMultipartUpload { + Parts?: CompletedPart[] | undefined; +} +export interface CompleteMultipartUploadRequest { + Bucket: string | undefined; + Key: string | undefined; + MultipartUpload?: CompletedMultipartUpload | undefined; + UploadId: string | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + ChecksumType?: ChecksumType | undefined; + MpuObjectSize?: number | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; + IfMatch?: string | undefined; + IfNoneMatch?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; +} +export interface CopyObjectResult { + ETag?: string | undefined; + LastModified?: Date | undefined; + ChecksumType?: ChecksumType | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; +} +export interface CopyObjectOutput { + CopyObjectResult?: CopyObjectResult | undefined; + Expiration?: string | undefined; + CopySourceVersionId?: string | undefined; + VersionId?: string | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + SSEKMSEncryptionContext?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface CopyObjectRequest { + ACL?: ObjectCannedACL | undefined; + Bucket: string | undefined; + CacheControl?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ContentDisposition?: string | undefined; + ContentEncoding?: string | undefined; + ContentLanguage?: string | undefined; + ContentType?: string | undefined; + CopySource: string | undefined; + CopySourceIfMatch?: string | undefined; + CopySourceIfModifiedSince?: Date | undefined; + CopySourceIfNoneMatch?: string | undefined; + CopySourceIfUnmodifiedSince?: Date | undefined; + Expires?: Date | undefined; + GrantFullControl?: string | undefined; + GrantRead?: string | undefined; + GrantReadACP?: string | undefined; + GrantWriteACP?: string | undefined; + IfMatch?: string | undefined; + IfNoneMatch?: string | undefined; + Key: string | undefined; + Metadata?: Record | undefined; + MetadataDirective?: MetadataDirective | undefined; + TaggingDirective?: TaggingDirective | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + StorageClass?: StorageClass | undefined; + WebsiteRedirectLocation?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + SSEKMSEncryptionContext?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + CopySourceSSECustomerAlgorithm?: string | undefined; + CopySourceSSECustomerKey?: string | undefined; + CopySourceSSECustomerKeyMD5?: string | undefined; + RequestPayer?: RequestPayer | undefined; + Tagging?: string | undefined; + ObjectLockMode?: ObjectLockMode | undefined; + ObjectLockRetainUntilDate?: Date | undefined; + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; + ExpectedBucketOwner?: string | undefined; + ExpectedSourceBucketOwner?: string | undefined; +} +export interface CreateBucketOutput { + Location?: string | undefined; + BucketArn?: string | undefined; +} +export interface BucketInfo { + DataRedundancy?: DataRedundancy | undefined; + Type?: BucketType | undefined; +} +export interface LocationInfo { + Type?: LocationType | undefined; + Name?: string | undefined; +} +export interface Tag { + Key: string | undefined; + Value: string | undefined; +} +export interface CreateBucketConfiguration { + LocationConstraint?: BucketLocationConstraint | undefined; + Location?: LocationInfo | undefined; + Bucket?: BucketInfo | undefined; + Tags?: Tag[] | undefined; +} +export interface CreateBucketRequest { + ACL?: BucketCannedACL | undefined; + Bucket: string | undefined; + CreateBucketConfiguration?: CreateBucketConfiguration | undefined; + GrantFullControl?: string | undefined; + GrantRead?: string | undefined; + GrantReadACP?: string | undefined; + GrantWrite?: string | undefined; + GrantWriteACP?: string | undefined; + ObjectLockEnabledForBucket?: boolean | undefined; + ObjectOwnership?: ObjectOwnership | undefined; + BucketNamespace?: BucketNamespace | undefined; +} +export interface MetadataTableEncryptionConfiguration { + SseAlgorithm: TableSseAlgorithm | undefined; + KmsKeyArn?: string | undefined; +} +export interface InventoryTableConfiguration { + ConfigurationState: InventoryConfigurationState | undefined; + EncryptionConfiguration?: MetadataTableEncryptionConfiguration | undefined; +} +export interface RecordExpiration { + Expiration: ExpirationState | undefined; + Days?: number | undefined; +} +export interface JournalTableConfiguration { + RecordExpiration: RecordExpiration | undefined; + EncryptionConfiguration?: MetadataTableEncryptionConfiguration | undefined; +} +export interface MetadataConfiguration { + JournalTableConfiguration: JournalTableConfiguration | undefined; + InventoryTableConfiguration?: InventoryTableConfiguration | undefined; +} +export interface CreateBucketMetadataConfigurationRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + MetadataConfiguration: MetadataConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface S3TablesDestination { + TableBucketArn: string | undefined; + TableName: string | undefined; +} +export interface MetadataTableConfiguration { + S3TablesDestination: S3TablesDestination | undefined; +} +export interface CreateBucketMetadataTableConfigurationRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + MetadataTableConfiguration: MetadataTableConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface CreateMultipartUploadOutput { + AbortDate?: Date | undefined; + AbortRuleId?: string | undefined; + Bucket?: string | undefined; + Key?: string | undefined; + UploadId?: string | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + SSEKMSEncryptionContext?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + RequestCharged?: RequestCharged | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ChecksumType?: ChecksumType | undefined; +} +export interface CreateMultipartUploadRequest { + ACL?: ObjectCannedACL | undefined; + Bucket: string | undefined; + CacheControl?: string | undefined; + ContentDisposition?: string | undefined; + ContentEncoding?: string | undefined; + ContentLanguage?: string | undefined; + ContentType?: string | undefined; + Expires?: Date | undefined; + GrantFullControl?: string | undefined; + GrantRead?: string | undefined; + GrantReadACP?: string | undefined; + GrantWriteACP?: string | undefined; + Key: string | undefined; + Metadata?: Record | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + StorageClass?: StorageClass | undefined; + WebsiteRedirectLocation?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + SSEKMSEncryptionContext?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + RequestPayer?: RequestPayer | undefined; + Tagging?: string | undefined; + ObjectLockMode?: ObjectLockMode | undefined; + ObjectLockRetainUntilDate?: Date | undefined; + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; + ExpectedBucketOwner?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ChecksumType?: ChecksumType | undefined; +} +export interface SessionCredentials { + AccessKeyId: string | undefined; + SecretAccessKey: string | undefined; + SessionToken: string | undefined; + Expiration: Date | undefined; +} +export interface CreateSessionOutput { + ServerSideEncryption?: ServerSideEncryption | undefined; + SSEKMSKeyId?: string | undefined; + SSEKMSEncryptionContext?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + Credentials: SessionCredentials | undefined; +} +export interface CreateSessionRequest { + SessionMode?: SessionMode | undefined; + Bucket: string | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + SSEKMSKeyId?: string | undefined; + SSEKMSEncryptionContext?: string | undefined; + BucketKeyEnabled?: boolean | undefined; +} +export interface DeleteBucketRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketAnalyticsConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketCorsRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketEncryptionRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketIntelligentTieringConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketInventoryConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketLifecycleRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketMetadataConfigurationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketMetadataTableConfigurationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketMetricsConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketOwnershipControlsRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketPolicyRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketReplicationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketTaggingRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteBucketWebsiteRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteObjectOutput { + DeleteMarker?: boolean | undefined; + VersionId?: string | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface DeleteObjectRequest { + Bucket: string | undefined; + Key: string | undefined; + MFA?: string | undefined; + VersionId?: string | undefined; + RequestPayer?: RequestPayer | undefined; + BypassGovernanceRetention?: boolean | undefined; + ExpectedBucketOwner?: string | undefined; + IfMatch?: string | undefined; + IfMatchLastModifiedTime?: Date | undefined; + IfMatchSize?: number | undefined; +} +export interface DeletedObject { + Key?: string | undefined; + VersionId?: string | undefined; + DeleteMarker?: boolean | undefined; + DeleteMarkerVersionId?: string | undefined; +} +export interface _Error { + Key?: string | undefined; + VersionId?: string | undefined; + Code?: string | undefined; + Message?: string | undefined; +} +export interface DeleteObjectsOutput { + Deleted?: DeletedObject[] | undefined; + RequestCharged?: RequestCharged | undefined; + Errors?: _Error[] | undefined; +} +export interface ObjectIdentifier { + Key: string | undefined; + VersionId?: string | undefined; + ETag?: string | undefined; + LastModifiedTime?: Date | undefined; + Size?: number | undefined; +} +export interface Delete { + Objects: ObjectIdentifier[] | undefined; + Quiet?: boolean | undefined; +} +export interface DeleteObjectsRequest { + Bucket: string | undefined; + Delete: Delete | undefined; + MFA?: string | undefined; + RequestPayer?: RequestPayer | undefined; + BypassGovernanceRetention?: boolean | undefined; + ExpectedBucketOwner?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; +} +export interface DeleteObjectTaggingOutput { + VersionId?: string | undefined; +} +export interface DeleteObjectTaggingRequest { + Bucket: string | undefined; + Key: string | undefined; + VersionId?: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeletePublicAccessBlockRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetBucketAbacOutput { + AbacStatus?: AbacStatus | undefined; +} +export interface GetBucketAbacRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetBucketAccelerateConfigurationOutput { + Status?: BucketAccelerateStatus | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface GetBucketAccelerateConfigurationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; + RequestPayer?: RequestPayer | undefined; +} +export interface GetBucketAclOutput { + Owner?: Owner | undefined; + Grants?: Grant[] | undefined; +} +export interface GetBucketAclRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface AnalyticsAndOperator { + Prefix?: string | undefined; + Tags?: Tag[] | undefined; +} +export type AnalyticsFilter = + | AnalyticsFilter.AndMember + | AnalyticsFilter.PrefixMember + | AnalyticsFilter.TagMember + | AnalyticsFilter.$UnknownMember; +export declare namespace AnalyticsFilter { + interface PrefixMember { + Prefix: string; + Tag?: never; + And?: never; + $unknown?: never; + } + interface TagMember { + Prefix?: never; + Tag: Tag; + And?: never; + $unknown?: never; + } + interface AndMember { + Prefix?: never; + Tag?: never; + And: AnalyticsAndOperator; + $unknown?: never; + } + interface $UnknownMember { + Prefix?: never; + Tag?: never; + And?: never; + $unknown: [string, any]; + } + interface Visitor { + Prefix: (value: string) => T; + Tag: (value: Tag) => T; + And: (value: AnalyticsAndOperator) => T; + _: (name: string, value: any) => T; + } +} +export interface AnalyticsS3BucketDestination { + Format: AnalyticsS3ExportFileFormat | undefined; + BucketAccountId?: string | undefined; + Bucket: string | undefined; + Prefix?: string | undefined; +} +export interface AnalyticsExportDestination { + S3BucketDestination: AnalyticsS3BucketDestination | undefined; +} +export interface StorageClassAnalysisDataExport { + OutputSchemaVersion: StorageClassAnalysisSchemaVersion | undefined; + Destination: AnalyticsExportDestination | undefined; +} +export interface StorageClassAnalysis { + DataExport?: StorageClassAnalysisDataExport | undefined; +} +export interface AnalyticsConfiguration { + Id: string | undefined; + Filter?: AnalyticsFilter | undefined; + StorageClassAnalysis: StorageClassAnalysis | undefined; +} +export interface GetBucketAnalyticsConfigurationOutput { + AnalyticsConfiguration?: AnalyticsConfiguration | undefined; +} +export interface GetBucketAnalyticsConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface CORSRule { + ID?: string | undefined; + AllowedHeaders?: string[] | undefined; + AllowedMethods: string[] | undefined; + AllowedOrigins: string[] | undefined; + ExposeHeaders?: string[] | undefined; + MaxAgeSeconds?: number | undefined; +} +export interface GetBucketCorsOutput { + CORSRules?: CORSRule[] | undefined; +} +export interface GetBucketCorsRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface ServerSideEncryptionByDefault { + SSEAlgorithm: ServerSideEncryption | undefined; + KMSMasterKeyID?: string | undefined; +} +export interface BlockedEncryptionTypes { + EncryptionType?: EncryptionType[] | undefined; +} +export interface ServerSideEncryptionRule { + ApplyServerSideEncryptionByDefault?: + | ServerSideEncryptionByDefault + | undefined; + BucketKeyEnabled?: boolean | undefined; + BlockedEncryptionTypes?: BlockedEncryptionTypes | undefined; +} +export interface ServerSideEncryptionConfiguration { + Rules: ServerSideEncryptionRule[] | undefined; +} +export interface GetBucketEncryptionOutput { + ServerSideEncryptionConfiguration?: + | ServerSideEncryptionConfiguration + | undefined; +} +export interface GetBucketEncryptionRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface IntelligentTieringAndOperator { + Prefix?: string | undefined; + Tags?: Tag[] | undefined; +} +export interface IntelligentTieringFilter { + Prefix?: string | undefined; + Tag?: Tag | undefined; + And?: IntelligentTieringAndOperator | undefined; +} +export interface Tiering { + Days: number | undefined; + AccessTier: IntelligentTieringAccessTier | undefined; +} +export interface IntelligentTieringConfiguration { + Id: string | undefined; + Filter?: IntelligentTieringFilter | undefined; + Status: IntelligentTieringStatus | undefined; + Tierings: Tiering[] | undefined; +} +export interface GetBucketIntelligentTieringConfigurationOutput { + IntelligentTieringConfiguration?: IntelligentTieringConfiguration | undefined; +} +export interface GetBucketIntelligentTieringConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface SSEKMS { + KeyId: string | undefined; +} +export interface SSES3 {} +export interface InventoryEncryption { + SSES3?: SSES3 | undefined; + SSEKMS?: SSEKMS | undefined; +} +export interface InventoryS3BucketDestination { + AccountId?: string | undefined; + Bucket: string | undefined; + Format: InventoryFormat | undefined; + Prefix?: string | undefined; + Encryption?: InventoryEncryption | undefined; +} +export interface InventoryDestination { + S3BucketDestination: InventoryS3BucketDestination | undefined; +} +export interface InventoryFilter { + Prefix: string | undefined; +} +export interface InventorySchedule { + Frequency: InventoryFrequency | undefined; +} +export interface InventoryConfiguration { + Destination: InventoryDestination | undefined; + IsEnabled: boolean | undefined; + Filter?: InventoryFilter | undefined; + Id: string | undefined; + IncludedObjectVersions: InventoryIncludedObjectVersions | undefined; + OptionalFields?: InventoryOptionalField[] | undefined; + Schedule: InventorySchedule | undefined; +} +export interface GetBucketInventoryConfigurationOutput { + InventoryConfiguration?: InventoryConfiguration | undefined; +} +export interface GetBucketInventoryConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface LifecycleExpiration { + Date?: Date | undefined; + Days?: number | undefined; + ExpiredObjectDeleteMarker?: boolean | undefined; +} +export interface LifecycleRuleAndOperator { + Prefix?: string | undefined; + Tags?: Tag[] | undefined; + ObjectSizeGreaterThan?: number | undefined; + ObjectSizeLessThan?: number | undefined; +} +export interface LifecycleRuleFilter { + Prefix?: string | undefined; + Tag?: Tag | undefined; + ObjectSizeGreaterThan?: number | undefined; + ObjectSizeLessThan?: number | undefined; + And?: LifecycleRuleAndOperator | undefined; +} +export interface NoncurrentVersionExpiration { + NoncurrentDays?: number | undefined; + NewerNoncurrentVersions?: number | undefined; +} +export interface NoncurrentVersionTransition { + NoncurrentDays?: number | undefined; + StorageClass?: TransitionStorageClass | undefined; + NewerNoncurrentVersions?: number | undefined; +} +export interface Transition { + Date?: Date | undefined; + Days?: number | undefined; + StorageClass?: TransitionStorageClass | undefined; +} +export interface LifecycleRule { + Expiration?: LifecycleExpiration | undefined; + ID?: string | undefined; + Prefix?: string | undefined; + Filter?: LifecycleRuleFilter | undefined; + Status: ExpirationStatus | undefined; + Transitions?: Transition[] | undefined; + NoncurrentVersionTransitions?: NoncurrentVersionTransition[] | undefined; + NoncurrentVersionExpiration?: NoncurrentVersionExpiration | undefined; + AbortIncompleteMultipartUpload?: AbortIncompleteMultipartUpload | undefined; +} +export interface GetBucketLifecycleConfigurationOutput { + Rules?: LifecycleRule[] | undefined; + TransitionDefaultMinimumObjectSize?: + | TransitionDefaultMinimumObjectSize + | undefined; +} +export interface GetBucketLifecycleConfigurationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetBucketLocationOutput { + LocationConstraint?: BucketLocationConstraint | undefined; +} +export interface GetBucketLocationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface TargetGrant { + Grantee?: Grantee | undefined; + Permission?: BucketLogsPermission | undefined; +} +export interface PartitionedPrefix { + PartitionDateSource?: PartitionDateSource | undefined; +} +export interface SimplePrefix {} +export interface TargetObjectKeyFormat { + SimplePrefix?: SimplePrefix | undefined; + PartitionedPrefix?: PartitionedPrefix | undefined; +} +export interface LoggingEnabled { + TargetBucket: string | undefined; + TargetGrants?: TargetGrant[] | undefined; + TargetPrefix: string | undefined; + TargetObjectKeyFormat?: TargetObjectKeyFormat | undefined; +} +export interface GetBucketLoggingOutput { + LoggingEnabled?: LoggingEnabled | undefined; +} +export interface GetBucketLoggingRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DestinationResult { + TableBucketType?: S3TablesBucketType | undefined; + TableBucketArn?: string | undefined; + TableNamespace?: string | undefined; +} +export interface ErrorDetails { + ErrorCode?: string | undefined; + ErrorMessage?: string | undefined; +} +export interface InventoryTableConfigurationResult { + ConfigurationState: InventoryConfigurationState | undefined; + TableStatus?: string | undefined; + Error?: ErrorDetails | undefined; + TableName?: string | undefined; + TableArn?: string | undefined; +} +export interface JournalTableConfigurationResult { + TableStatus: string | undefined; + Error?: ErrorDetails | undefined; + TableName: string | undefined; + TableArn?: string | undefined; + RecordExpiration: RecordExpiration | undefined; +} +export interface MetadataConfigurationResult { + DestinationResult: DestinationResult | undefined; + JournalTableConfigurationResult?: JournalTableConfigurationResult | undefined; + InventoryTableConfigurationResult?: + | InventoryTableConfigurationResult + | undefined; +} +export interface GetBucketMetadataConfigurationResult { + MetadataConfigurationResult: MetadataConfigurationResult | undefined; +} +export interface GetBucketMetadataConfigurationOutput { + GetBucketMetadataConfigurationResult?: + | GetBucketMetadataConfigurationResult + | undefined; +} +export interface GetBucketMetadataConfigurationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface S3TablesDestinationResult { + TableBucketArn: string | undefined; + TableName: string | undefined; + TableArn: string | undefined; + TableNamespace: string | undefined; +} +export interface MetadataTableConfigurationResult { + S3TablesDestinationResult: S3TablesDestinationResult | undefined; +} +export interface GetBucketMetadataTableConfigurationResult { + MetadataTableConfigurationResult: + | MetadataTableConfigurationResult + | undefined; + Status: string | undefined; + Error?: ErrorDetails | undefined; +} +export interface GetBucketMetadataTableConfigurationOutput { + GetBucketMetadataTableConfigurationResult?: + | GetBucketMetadataTableConfigurationResult + | undefined; +} +export interface GetBucketMetadataTableConfigurationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface MetricsAndOperator { + Prefix?: string | undefined; + Tags?: Tag[] | undefined; + AccessPointArn?: string | undefined; +} +export type MetricsFilter = + | MetricsFilter.AccessPointArnMember + | MetricsFilter.AndMember + | MetricsFilter.PrefixMember + | MetricsFilter.TagMember + | MetricsFilter.$UnknownMember; +export declare namespace MetricsFilter { + interface PrefixMember { + Prefix: string; + Tag?: never; + AccessPointArn?: never; + And?: never; + $unknown?: never; + } + interface TagMember { + Prefix?: never; + Tag: Tag; + AccessPointArn?: never; + And?: never; + $unknown?: never; + } + interface AccessPointArnMember { + Prefix?: never; + Tag?: never; + AccessPointArn: string; + And?: never; + $unknown?: never; + } + interface AndMember { + Prefix?: never; + Tag?: never; + AccessPointArn?: never; + And: MetricsAndOperator; + $unknown?: never; + } + interface $UnknownMember { + Prefix?: never; + Tag?: never; + AccessPointArn?: never; + And?: never; + $unknown: [string, any]; + } + interface Visitor { + Prefix: (value: string) => T; + Tag: (value: Tag) => T; + AccessPointArn: (value: string) => T; + And: (value: MetricsAndOperator) => T; + _: (name: string, value: any) => T; + } +} +export interface MetricsConfiguration { + Id: string | undefined; + Filter?: MetricsFilter | undefined; +} +export interface GetBucketMetricsConfigurationOutput { + MetricsConfiguration?: MetricsConfiguration | undefined; +} +export interface GetBucketMetricsConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetBucketNotificationConfigurationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface EventBridgeConfiguration {} +export interface FilterRule { + Name?: FilterRuleName | undefined; + Value?: string | undefined; +} +export interface S3KeyFilter { + FilterRules?: FilterRule[] | undefined; +} +export interface NotificationConfigurationFilter { + Key?: S3KeyFilter | undefined; +} +export interface LambdaFunctionConfiguration { + Id?: string | undefined; + LambdaFunctionArn: string | undefined; + Events: Event[] | undefined; + Filter?: NotificationConfigurationFilter | undefined; +} +export interface QueueConfiguration { + Id?: string | undefined; + QueueArn: string | undefined; + Events: Event[] | undefined; + Filter?: NotificationConfigurationFilter | undefined; +} +export interface TopicConfiguration { + Id?: string | undefined; + TopicArn: string | undefined; + Events: Event[] | undefined; + Filter?: NotificationConfigurationFilter | undefined; +} +export interface NotificationConfiguration { + TopicConfigurations?: TopicConfiguration[] | undefined; + QueueConfigurations?: QueueConfiguration[] | undefined; + LambdaFunctionConfigurations?: LambdaFunctionConfiguration[] | undefined; + EventBridgeConfiguration?: EventBridgeConfiguration | undefined; +} +export interface OwnershipControlsRule { + ObjectOwnership: ObjectOwnership | undefined; +} +export interface OwnershipControls { + Rules: OwnershipControlsRule[] | undefined; +} +export interface GetBucketOwnershipControlsOutput { + OwnershipControls?: OwnershipControls | undefined; +} +export interface GetBucketOwnershipControlsRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetBucketPolicyOutput { + Policy?: string | undefined; +} +export interface GetBucketPolicyRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PolicyStatus { + IsPublic?: boolean | undefined; +} +export interface GetBucketPolicyStatusOutput { + PolicyStatus?: PolicyStatus | undefined; +} +export interface GetBucketPolicyStatusRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DeleteMarkerReplication { + Status?: DeleteMarkerReplicationStatus | undefined; +} +export interface EncryptionConfiguration { + ReplicaKmsKeyID?: string | undefined; +} +export interface ReplicationTimeValue { + Minutes?: number | undefined; +} +export interface Metrics { + Status: MetricsStatus | undefined; + EventThreshold?: ReplicationTimeValue | undefined; +} +export interface ReplicationTime { + Status: ReplicationTimeStatus | undefined; + Time: ReplicationTimeValue | undefined; +} +export interface Destination { + Bucket: string | undefined; + Account?: string | undefined; + StorageClass?: StorageClass | undefined; + AccessControlTranslation?: AccessControlTranslation | undefined; + EncryptionConfiguration?: EncryptionConfiguration | undefined; + ReplicationTime?: ReplicationTime | undefined; + Metrics?: Metrics | undefined; +} +export interface ExistingObjectReplication { + Status: ExistingObjectReplicationStatus | undefined; +} +export interface ReplicationRuleAndOperator { + Prefix?: string | undefined; + Tags?: Tag[] | undefined; +} +export interface ReplicationRuleFilter { + Prefix?: string | undefined; + Tag?: Tag | undefined; + And?: ReplicationRuleAndOperator | undefined; +} +export interface ReplicaModifications { + Status: ReplicaModificationsStatus | undefined; +} +export interface SseKmsEncryptedObjects { + Status: SseKmsEncryptedObjectsStatus | undefined; +} +export interface SourceSelectionCriteria { + SseKmsEncryptedObjects?: SseKmsEncryptedObjects | undefined; + ReplicaModifications?: ReplicaModifications | undefined; +} +export interface ReplicationRule { + ID?: string | undefined; + Priority?: number | undefined; + Prefix?: string | undefined; + Filter?: ReplicationRuleFilter | undefined; + Status: ReplicationRuleStatus | undefined; + SourceSelectionCriteria?: SourceSelectionCriteria | undefined; + ExistingObjectReplication?: ExistingObjectReplication | undefined; + Destination: Destination | undefined; + DeleteMarkerReplication?: DeleteMarkerReplication | undefined; +} +export interface ReplicationConfiguration { + Role: string | undefined; + Rules: ReplicationRule[] | undefined; +} +export interface GetBucketReplicationOutput { + ReplicationConfiguration?: ReplicationConfiguration | undefined; +} +export interface GetBucketReplicationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetBucketRequestPaymentOutput { + Payer?: Payer | undefined; +} +export interface GetBucketRequestPaymentRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetBucketTaggingOutput { + TagSet: Tag[] | undefined; +} +export interface GetBucketTaggingRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetBucketVersioningOutput { + Status?: BucketVersioningStatus | undefined; + MFADelete?: MFADeleteStatus | undefined; +} +export interface GetBucketVersioningRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface ErrorDocument { + Key: string | undefined; +} +export interface IndexDocument { + Suffix: string | undefined; +} +export interface RedirectAllRequestsTo { + HostName: string | undefined; + Protocol?: Protocol | undefined; +} +export interface Condition { + HttpErrorCodeReturnedEquals?: string | undefined; + KeyPrefixEquals?: string | undefined; +} +export interface Redirect { + HostName?: string | undefined; + HttpRedirectCode?: string | undefined; + Protocol?: Protocol | undefined; + ReplaceKeyPrefixWith?: string | undefined; + ReplaceKeyWith?: string | undefined; +} +export interface RoutingRule { + Condition?: Condition | undefined; + Redirect: Redirect | undefined; +} +export interface GetBucketWebsiteOutput { + RedirectAllRequestsTo?: RedirectAllRequestsTo | undefined; + IndexDocument?: IndexDocument | undefined; + ErrorDocument?: ErrorDocument | undefined; + RoutingRules?: RoutingRule[] | undefined; +} +export interface GetBucketWebsiteRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetObjectOutput { + Body?: StreamingBlobTypes | undefined; + DeleteMarker?: boolean | undefined; + AcceptRanges?: string | undefined; + Expiration?: string | undefined; + Restore?: string | undefined; + LastModified?: Date | undefined; + ContentLength?: number | undefined; + ETag?: string | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + ChecksumType?: ChecksumType | undefined; + MissingMeta?: number | undefined; + VersionId?: string | undefined; + CacheControl?: string | undefined; + ContentDisposition?: string | undefined; + ContentEncoding?: string | undefined; + ContentLanguage?: string | undefined; + ContentRange?: string | undefined; + ContentType?: string | undefined; + Expires?: Date | undefined; + ExpiresString?: string | undefined; + WebsiteRedirectLocation?: string | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + Metadata?: Record | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + StorageClass?: StorageClass | undefined; + RequestCharged?: RequestCharged | undefined; + ReplicationStatus?: ReplicationStatus | undefined; + PartsCount?: number | undefined; + TagCount?: number | undefined; + ObjectLockMode?: ObjectLockMode | undefined; + ObjectLockRetainUntilDate?: Date | undefined; + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; +} +export interface GetObjectRequest { + Bucket: string | undefined; + IfMatch?: string | undefined; + IfModifiedSince?: Date | undefined; + IfNoneMatch?: string | undefined; + IfUnmodifiedSince?: Date | undefined; + Key: string | undefined; + Range?: string | undefined; + ResponseCacheControl?: string | undefined; + ResponseContentDisposition?: string | undefined; + ResponseContentEncoding?: string | undefined; + ResponseContentLanguage?: string | undefined; + ResponseContentType?: string | undefined; + ResponseExpires?: Date | undefined; + VersionId?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + RequestPayer?: RequestPayer | undefined; + PartNumber?: number | undefined; + ExpectedBucketOwner?: string | undefined; + ChecksumMode?: ChecksumMode | undefined; +} +export interface GetObjectAclOutput { + Owner?: Owner | undefined; + Grants?: Grant[] | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface GetObjectAclRequest { + Bucket: string | undefined; + Key: string | undefined; + VersionId?: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface Checksum { + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + ChecksumType?: ChecksumType | undefined; +} +export interface ObjectPart { + PartNumber?: number | undefined; + Size?: number | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; +} +export interface GetObjectAttributesParts { + TotalPartsCount?: number | undefined; + PartNumberMarker?: string | undefined; + NextPartNumberMarker?: string | undefined; + MaxParts?: number | undefined; + IsTruncated?: boolean | undefined; + Parts?: ObjectPart[] | undefined; +} +export interface GetObjectAttributesOutput { + DeleteMarker?: boolean | undefined; + LastModified?: Date | undefined; + VersionId?: string | undefined; + RequestCharged?: RequestCharged | undefined; + ETag?: string | undefined; + Checksum?: Checksum | undefined; + ObjectParts?: GetObjectAttributesParts | undefined; + StorageClass?: StorageClass | undefined; + ObjectSize?: number | undefined; +} +export interface GetObjectAttributesRequest { + Bucket: string | undefined; + Key: string | undefined; + VersionId?: string | undefined; + MaxParts?: number | undefined; + PartNumberMarker?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; + ObjectAttributes: ObjectAttributes[] | undefined; +} +export interface ObjectLockLegalHold { + Status?: ObjectLockLegalHoldStatus | undefined; +} +export interface GetObjectLegalHoldOutput { + LegalHold?: ObjectLockLegalHold | undefined; +} +export interface GetObjectLegalHoldRequest { + Bucket: string | undefined; + Key: string | undefined; + VersionId?: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface DefaultRetention { + Mode?: ObjectLockRetentionMode | undefined; + Days?: number | undefined; + Years?: number | undefined; +} +export interface ObjectLockRule { + DefaultRetention?: DefaultRetention | undefined; +} +export interface ObjectLockConfiguration { + ObjectLockEnabled?: ObjectLockEnabled | undefined; + Rule?: ObjectLockRule | undefined; +} +export interface GetObjectLockConfigurationOutput { + ObjectLockConfiguration?: ObjectLockConfiguration | undefined; +} +export interface GetObjectLockConfigurationRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface ObjectLockRetention { + Mode?: ObjectLockRetentionMode | undefined; + RetainUntilDate?: Date | undefined; +} +export interface GetObjectRetentionOutput { + Retention?: ObjectLockRetention | undefined; +} +export interface GetObjectRetentionRequest { + Bucket: string | undefined; + Key: string | undefined; + VersionId?: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface GetObjectTaggingOutput { + VersionId?: string | undefined; + TagSet: Tag[] | undefined; +} +export interface GetObjectTaggingRequest { + Bucket: string | undefined; + Key: string | undefined; + VersionId?: string | undefined; + ExpectedBucketOwner?: string | undefined; + RequestPayer?: RequestPayer | undefined; +} +export interface GetObjectTorrentOutput { + Body?: StreamingBlobTypes | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface GetObjectTorrentRequest { + Bucket: string | undefined; + Key: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PublicAccessBlockConfiguration { + BlockPublicAcls?: boolean | undefined; + IgnorePublicAcls?: boolean | undefined; + BlockPublicPolicy?: boolean | undefined; + RestrictPublicBuckets?: boolean | undefined; +} +export interface GetPublicAccessBlockOutput { + PublicAccessBlockConfiguration?: PublicAccessBlockConfiguration | undefined; +} +export interface GetPublicAccessBlockRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface HeadBucketOutput { + BucketArn?: string | undefined; + BucketLocationType?: LocationType | undefined; + BucketLocationName?: string | undefined; + BucketRegion?: string | undefined; + AccessPointAlias?: boolean | undefined; +} +export interface HeadBucketRequest { + Bucket: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface HeadObjectOutput { + DeleteMarker?: boolean | undefined; + AcceptRanges?: string | undefined; + Expiration?: string | undefined; + Restore?: string | undefined; + ArchiveStatus?: ArchiveStatus | undefined; + LastModified?: Date | undefined; + ContentLength?: number | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + ChecksumType?: ChecksumType | undefined; + ETag?: string | undefined; + MissingMeta?: number | undefined; + VersionId?: string | undefined; + CacheControl?: string | undefined; + ContentDisposition?: string | undefined; + ContentEncoding?: string | undefined; + ContentLanguage?: string | undefined; + ContentType?: string | undefined; + ContentRange?: string | undefined; + Expires?: Date | undefined; + ExpiresString?: string | undefined; + WebsiteRedirectLocation?: string | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + Metadata?: Record | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + StorageClass?: StorageClass | undefined; + RequestCharged?: RequestCharged | undefined; + ReplicationStatus?: ReplicationStatus | undefined; + PartsCount?: number | undefined; + TagCount?: number | undefined; + ObjectLockMode?: ObjectLockMode | undefined; + ObjectLockRetainUntilDate?: Date | undefined; + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; +} +export interface HeadObjectRequest { + Bucket: string | undefined; + IfMatch?: string | undefined; + IfModifiedSince?: Date | undefined; + IfNoneMatch?: string | undefined; + IfUnmodifiedSince?: Date | undefined; + Key: string | undefined; + Range?: string | undefined; + ResponseCacheControl?: string | undefined; + ResponseContentDisposition?: string | undefined; + ResponseContentEncoding?: string | undefined; + ResponseContentLanguage?: string | undefined; + ResponseContentType?: string | undefined; + ResponseExpires?: Date | undefined; + VersionId?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + RequestPayer?: RequestPayer | undefined; + PartNumber?: number | undefined; + ExpectedBucketOwner?: string | undefined; + ChecksumMode?: ChecksumMode | undefined; +} +export interface ListBucketAnalyticsConfigurationsOutput { + IsTruncated?: boolean | undefined; + ContinuationToken?: string | undefined; + NextContinuationToken?: string | undefined; + AnalyticsConfigurationList?: AnalyticsConfiguration[] | undefined; +} +export interface ListBucketAnalyticsConfigurationsRequest { + Bucket: string | undefined; + ContinuationToken?: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface ListBucketIntelligentTieringConfigurationsOutput { + IsTruncated?: boolean | undefined; + ContinuationToken?: string | undefined; + NextContinuationToken?: string | undefined; + IntelligentTieringConfigurationList?: + | IntelligentTieringConfiguration[] + | undefined; +} +export interface ListBucketIntelligentTieringConfigurationsRequest { + Bucket: string | undefined; + ContinuationToken?: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface ListBucketInventoryConfigurationsOutput { + ContinuationToken?: string | undefined; + InventoryConfigurationList?: InventoryConfiguration[] | undefined; + IsTruncated?: boolean | undefined; + NextContinuationToken?: string | undefined; +} +export interface ListBucketInventoryConfigurationsRequest { + Bucket: string | undefined; + ContinuationToken?: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface ListBucketMetricsConfigurationsOutput { + IsTruncated?: boolean | undefined; + ContinuationToken?: string | undefined; + NextContinuationToken?: string | undefined; + MetricsConfigurationList?: MetricsConfiguration[] | undefined; +} +export interface ListBucketMetricsConfigurationsRequest { + Bucket: string | undefined; + ContinuationToken?: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface Bucket { + Name?: string | undefined; + CreationDate?: Date | undefined; + BucketRegion?: string | undefined; + BucketArn?: string | undefined; +} +export interface ListBucketsOutput { + Buckets?: Bucket[] | undefined; + Owner?: Owner | undefined; + ContinuationToken?: string | undefined; + Prefix?: string | undefined; +} +export interface ListBucketsRequest { + MaxBuckets?: number | undefined; + ContinuationToken?: string | undefined; + Prefix?: string | undefined; + BucketRegion?: string | undefined; +} +export interface ListDirectoryBucketsOutput { + Buckets?: Bucket[] | undefined; + ContinuationToken?: string | undefined; +} +export interface ListDirectoryBucketsRequest { + ContinuationToken?: string | undefined; + MaxDirectoryBuckets?: number | undefined; +} +export interface CommonPrefix { + Prefix?: string | undefined; +} +export interface Initiator { + ID?: string | undefined; + DisplayName?: string | undefined; +} +export interface MultipartUpload { + UploadId?: string | undefined; + Key?: string | undefined; + Initiated?: Date | undefined; + StorageClass?: StorageClass | undefined; + Owner?: Owner | undefined; + Initiator?: Initiator | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ChecksumType?: ChecksumType | undefined; +} +export interface ListMultipartUploadsOutput { + Bucket?: string | undefined; + KeyMarker?: string | undefined; + UploadIdMarker?: string | undefined; + NextKeyMarker?: string | undefined; + Prefix?: string | undefined; + Delimiter?: string | undefined; + NextUploadIdMarker?: string | undefined; + MaxUploads?: number | undefined; + IsTruncated?: boolean | undefined; + Uploads?: MultipartUpload[] | undefined; + CommonPrefixes?: CommonPrefix[] | undefined; + EncodingType?: EncodingType | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface ListMultipartUploadsRequest { + Bucket: string | undefined; + Delimiter?: string | undefined; + EncodingType?: EncodingType | undefined; + KeyMarker?: string | undefined; + MaxUploads?: number | undefined; + Prefix?: string | undefined; + UploadIdMarker?: string | undefined; + ExpectedBucketOwner?: string | undefined; + RequestPayer?: RequestPayer | undefined; +} +export interface RestoreStatus { + IsRestoreInProgress?: boolean | undefined; + RestoreExpiryDate?: Date | undefined; +} +export interface _Object { + Key?: string | undefined; + LastModified?: Date | undefined; + ETag?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm[] | undefined; + ChecksumType?: ChecksumType | undefined; + Size?: number | undefined; + StorageClass?: ObjectStorageClass | undefined; + Owner?: Owner | undefined; + RestoreStatus?: RestoreStatus | undefined; +} +export interface ListObjectsOutput { + IsTruncated?: boolean | undefined; + Marker?: string | undefined; + NextMarker?: string | undefined; + Contents?: _Object[] | undefined; + Name?: string | undefined; + Prefix?: string | undefined; + Delimiter?: string | undefined; + MaxKeys?: number | undefined; + CommonPrefixes?: CommonPrefix[] | undefined; + EncodingType?: EncodingType | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface ListObjectsRequest { + Bucket: string | undefined; + Delimiter?: string | undefined; + EncodingType?: EncodingType | undefined; + Marker?: string | undefined; + MaxKeys?: number | undefined; + Prefix?: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; + OptionalObjectAttributes?: OptionalObjectAttributes[] | undefined; +} +export interface ListObjectsV2Output { + IsTruncated?: boolean | undefined; + Contents?: _Object[] | undefined; + Name?: string | undefined; + Prefix?: string | undefined; + Delimiter?: string | undefined; + MaxKeys?: number | undefined; + CommonPrefixes?: CommonPrefix[] | undefined; + EncodingType?: EncodingType | undefined; + KeyCount?: number | undefined; + ContinuationToken?: string | undefined; + NextContinuationToken?: string | undefined; + StartAfter?: string | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface ListObjectsV2Request { + Bucket: string | undefined; + Delimiter?: string | undefined; + EncodingType?: EncodingType | undefined; + MaxKeys?: number | undefined; + Prefix?: string | undefined; + ContinuationToken?: string | undefined; + FetchOwner?: boolean | undefined; + StartAfter?: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; + OptionalObjectAttributes?: OptionalObjectAttributes[] | undefined; +} +export interface DeleteMarkerEntry { + Owner?: Owner | undefined; + Key?: string | undefined; + VersionId?: string | undefined; + IsLatest?: boolean | undefined; + LastModified?: Date | undefined; +} +export interface ObjectVersion { + ETag?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm[] | undefined; + ChecksumType?: ChecksumType | undefined; + Size?: number | undefined; + StorageClass?: ObjectVersionStorageClass | undefined; + Key?: string | undefined; + VersionId?: string | undefined; + IsLatest?: boolean | undefined; + LastModified?: Date | undefined; + Owner?: Owner | undefined; + RestoreStatus?: RestoreStatus | undefined; +} +export interface ListObjectVersionsOutput { + IsTruncated?: boolean | undefined; + KeyMarker?: string | undefined; + VersionIdMarker?: string | undefined; + NextKeyMarker?: string | undefined; + NextVersionIdMarker?: string | undefined; + Versions?: ObjectVersion[] | undefined; + DeleteMarkers?: DeleteMarkerEntry[] | undefined; + Name?: string | undefined; + Prefix?: string | undefined; + Delimiter?: string | undefined; + MaxKeys?: number | undefined; + CommonPrefixes?: CommonPrefix[] | undefined; + EncodingType?: EncodingType | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface ListObjectVersionsRequest { + Bucket: string | undefined; + Delimiter?: string | undefined; + EncodingType?: EncodingType | undefined; + KeyMarker?: string | undefined; + MaxKeys?: number | undefined; + Prefix?: string | undefined; + VersionIdMarker?: string | undefined; + ExpectedBucketOwner?: string | undefined; + RequestPayer?: RequestPayer | undefined; + OptionalObjectAttributes?: OptionalObjectAttributes[] | undefined; +} +export interface Part { + PartNumber?: number | undefined; + LastModified?: Date | undefined; + ETag?: string | undefined; + Size?: number | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; +} +export interface ListPartsOutput { + AbortDate?: Date | undefined; + AbortRuleId?: string | undefined; + Bucket?: string | undefined; + Key?: string | undefined; + UploadId?: string | undefined; + PartNumberMarker?: string | undefined; + NextPartNumberMarker?: string | undefined; + MaxParts?: number | undefined; + IsTruncated?: boolean | undefined; + Parts?: Part[] | undefined; + Initiator?: Initiator | undefined; + Owner?: Owner | undefined; + StorageClass?: StorageClass | undefined; + RequestCharged?: RequestCharged | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ChecksumType?: ChecksumType | undefined; +} +export interface ListPartsRequest { + Bucket: string | undefined; + Key: string | undefined; + MaxParts?: number | undefined; + PartNumberMarker?: string | undefined; + UploadId: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; +} +export interface PutBucketAbacRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ExpectedBucketOwner?: string | undefined; + AbacStatus: AbacStatus | undefined; +} +export interface PutBucketAccelerateConfigurationRequest { + Bucket: string | undefined; + AccelerateConfiguration: AccelerateConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; +} +export interface PutBucketAclRequest { + ACL?: BucketCannedACL | undefined; + AccessControlPolicy?: AccessControlPolicy | undefined; + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + GrantFullControl?: string | undefined; + GrantRead?: string | undefined; + GrantReadACP?: string | undefined; + GrantWrite?: string | undefined; + GrantWriteACP?: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutBucketAnalyticsConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + AnalyticsConfiguration: AnalyticsConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface CORSConfiguration { + CORSRules: CORSRule[] | undefined; +} +export interface PutBucketCorsRequest { + Bucket: string | undefined; + CORSConfiguration: CORSConfiguration | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutBucketEncryptionRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ServerSideEncryptionConfiguration: + | ServerSideEncryptionConfiguration + | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutBucketIntelligentTieringConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + ExpectedBucketOwner?: string | undefined; + IntelligentTieringConfiguration: IntelligentTieringConfiguration | undefined; +} +export interface PutBucketInventoryConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + InventoryConfiguration: InventoryConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutBucketLifecycleConfigurationOutput { + TransitionDefaultMinimumObjectSize?: + | TransitionDefaultMinimumObjectSize + | undefined; +} +export interface BucketLifecycleConfiguration { + Rules: LifecycleRule[] | undefined; +} +export interface PutBucketLifecycleConfigurationRequest { + Bucket: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + LifecycleConfiguration?: BucketLifecycleConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; + TransitionDefaultMinimumObjectSize?: + | TransitionDefaultMinimumObjectSize + | undefined; +} +export interface BucketLoggingStatus { + LoggingEnabled?: LoggingEnabled | undefined; +} +export interface PutBucketLoggingRequest { + Bucket: string | undefined; + BucketLoggingStatus: BucketLoggingStatus | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutBucketMetricsConfigurationRequest { + Bucket: string | undefined; + Id: string | undefined; + MetricsConfiguration: MetricsConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutBucketNotificationConfigurationRequest { + Bucket: string | undefined; + NotificationConfiguration: NotificationConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; + SkipDestinationValidation?: boolean | undefined; +} +export interface PutBucketOwnershipControlsRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ExpectedBucketOwner?: string | undefined; + OwnershipControls: OwnershipControls | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; +} +export interface PutBucketPolicyRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ConfirmRemoveSelfBucketAccess?: boolean | undefined; + Policy: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutBucketReplicationRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ReplicationConfiguration: ReplicationConfiguration | undefined; + Token?: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface RequestPaymentConfiguration { + Payer: Payer | undefined; +} +export interface PutBucketRequestPaymentRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + RequestPaymentConfiguration: RequestPaymentConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface Tagging { + TagSet: Tag[] | undefined; +} +export interface PutBucketTaggingRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + Tagging: Tagging | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface VersioningConfiguration { + MFADelete?: MFADelete | undefined; + Status?: BucketVersioningStatus | undefined; +} +export interface PutBucketVersioningRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + MFA?: string | undefined; + VersioningConfiguration: VersioningConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface WebsiteConfiguration { + ErrorDocument?: ErrorDocument | undefined; + IndexDocument?: IndexDocument | undefined; + RedirectAllRequestsTo?: RedirectAllRequestsTo | undefined; + RoutingRules?: RoutingRule[] | undefined; +} +export interface PutBucketWebsiteRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + WebsiteConfiguration: WebsiteConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutObjectOutput { + Expiration?: string | undefined; + ETag?: string | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + ChecksumType?: ChecksumType | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + VersionId?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + SSEKMSEncryptionContext?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + Size?: number | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface PutObjectRequest { + ACL?: ObjectCannedACL | undefined; + Body?: StreamingBlobTypes | undefined; + Bucket: string | undefined; + CacheControl?: string | undefined; + ContentDisposition?: string | undefined; + ContentEncoding?: string | undefined; + ContentLanguage?: string | undefined; + ContentLength?: number | undefined; + ContentMD5?: string | undefined; + ContentType?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + Expires?: Date | undefined; + IfMatch?: string | undefined; + IfNoneMatch?: string | undefined; + GrantFullControl?: string | undefined; + GrantRead?: string | undefined; + GrantReadACP?: string | undefined; + GrantWriteACP?: string | undefined; + Key: string | undefined; + WriteOffsetBytes?: number | undefined; + Metadata?: Record | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + StorageClass?: StorageClass | undefined; + WebsiteRedirectLocation?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + SSEKMSEncryptionContext?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + RequestPayer?: RequestPayer | undefined; + Tagging?: string | undefined; + ObjectLockMode?: ObjectLockMode | undefined; + ObjectLockRetainUntilDate?: Date | undefined; + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutObjectAclOutput { + RequestCharged?: RequestCharged | undefined; +} +export interface PutObjectAclRequest { + ACL?: ObjectCannedACL | undefined; + AccessControlPolicy?: AccessControlPolicy | undefined; + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + GrantFullControl?: string | undefined; + GrantRead?: string | undefined; + GrantReadACP?: string | undefined; + GrantWrite?: string | undefined; + GrantWriteACP?: string | undefined; + Key: string | undefined; + RequestPayer?: RequestPayer | undefined; + VersionId?: string | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutObjectLegalHoldOutput { + RequestCharged?: RequestCharged | undefined; +} +export interface PutObjectLegalHoldRequest { + Bucket: string | undefined; + Key: string | undefined; + LegalHold?: ObjectLockLegalHold | undefined; + RequestPayer?: RequestPayer | undefined; + VersionId?: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutObjectLockConfigurationOutput { + RequestCharged?: RequestCharged | undefined; +} +export interface PutObjectLockConfigurationRequest { + Bucket: string | undefined; + ObjectLockConfiguration?: ObjectLockConfiguration | undefined; + RequestPayer?: RequestPayer | undefined; + Token?: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutObjectRetentionOutput { + RequestCharged?: RequestCharged | undefined; +} +export interface PutObjectRetentionRequest { + Bucket: string | undefined; + Key: string | undefined; + Retention?: ObjectLockRetention | undefined; + RequestPayer?: RequestPayer | undefined; + VersionId?: string | undefined; + BypassGovernanceRetention?: boolean | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface PutObjectTaggingOutput { + VersionId?: string | undefined; +} +export interface PutObjectTaggingRequest { + Bucket: string | undefined; + Key: string | undefined; + VersionId?: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + Tagging: Tagging | undefined; + ExpectedBucketOwner?: string | undefined; + RequestPayer?: RequestPayer | undefined; +} +export interface PutPublicAccessBlockRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + PublicAccessBlockConfiguration: PublicAccessBlockConfiguration | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface RenameObjectOutput {} +export interface RenameObjectRequest { + Bucket: string | undefined; + Key: string | undefined; + RenameSource: string | undefined; + DestinationIfMatch?: string | undefined; + DestinationIfNoneMatch?: string | undefined; + DestinationIfModifiedSince?: Date | undefined; + DestinationIfUnmodifiedSince?: Date | undefined; + SourceIfMatch?: string | undefined; + SourceIfNoneMatch?: string | undefined; + SourceIfModifiedSince?: Date | undefined; + SourceIfUnmodifiedSince?: Date | undefined; + ClientToken?: string | undefined; +} +export interface RestoreObjectOutput { + RequestCharged?: RequestCharged | undefined; + RestoreOutputPath?: string | undefined; +} +export interface GlacierJobParameters { + Tier: Tier | undefined; +} +export interface Encryption { + EncryptionType: ServerSideEncryption | undefined; + KMSKeyId?: string | undefined; + KMSContext?: string | undefined; +} +export interface MetadataEntry { + Name?: string | undefined; + Value?: string | undefined; +} +export interface S3Location { + BucketName: string | undefined; + Prefix: string | undefined; + Encryption?: Encryption | undefined; + CannedACL?: ObjectCannedACL | undefined; + AccessControlList?: Grant[] | undefined; + Tagging?: Tagging | undefined; + UserMetadata?: MetadataEntry[] | undefined; + StorageClass?: StorageClass | undefined; +} +export interface OutputLocation { + S3?: S3Location | undefined; +} +export interface CSVInput { + FileHeaderInfo?: FileHeaderInfo | undefined; + Comments?: string | undefined; + QuoteEscapeCharacter?: string | undefined; + RecordDelimiter?: string | undefined; + FieldDelimiter?: string | undefined; + QuoteCharacter?: string | undefined; + AllowQuotedRecordDelimiter?: boolean | undefined; +} +export interface JSONInput { + Type?: JSONType | undefined; +} +export interface ParquetInput {} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_1.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_1.d.ts new file mode 100644 index 0000000..9786d4f --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_1.d.ts @@ -0,0 +1,352 @@ +import { StreamingBlobTypes } from "@smithy/types"; +import { + ChecksumAlgorithm, + CompressionType, + ExpressionType, + InventoryConfigurationState, + ObjectLockLegalHoldStatus, + ObjectLockMode, + QuoteFields, + ReplicationStatus, + RequestCharged, + RequestPayer, + RestoreRequestType, + ServerSideEncryption, + StorageClass, + Tier, +} from "./enums"; +import { + CSVInput, + GlacierJobParameters, + JSONInput, + MetadataTableEncryptionConfiguration, + OutputLocation, + ParquetInput, + RecordExpiration, +} from "./models_0"; +export interface InputSerialization { + CSV?: CSVInput | undefined; + CompressionType?: CompressionType | undefined; + JSON?: JSONInput | undefined; + Parquet?: ParquetInput | undefined; +} +export interface CSVOutput { + QuoteFields?: QuoteFields | undefined; + QuoteEscapeCharacter?: string | undefined; + RecordDelimiter?: string | undefined; + FieldDelimiter?: string | undefined; + QuoteCharacter?: string | undefined; +} +export interface JSONOutput { + RecordDelimiter?: string | undefined; +} +export interface OutputSerialization { + CSV?: CSVOutput | undefined; + JSON?: JSONOutput | undefined; +} +export interface SelectParameters { + InputSerialization: InputSerialization | undefined; + ExpressionType: ExpressionType | undefined; + Expression: string | undefined; + OutputSerialization: OutputSerialization | undefined; +} +export interface RestoreRequest { + Days?: number | undefined; + GlacierJobParameters?: GlacierJobParameters | undefined; + Type?: RestoreRequestType | undefined; + Tier?: Tier | undefined; + Description?: string | undefined; + SelectParameters?: SelectParameters | undefined; + OutputLocation?: OutputLocation | undefined; +} +export interface RestoreObjectRequest { + Bucket: string | undefined; + Key: string | undefined; + VersionId?: string | undefined; + RestoreRequest?: RestoreRequest | undefined; + RequestPayer?: RequestPayer | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface ContinuationEvent {} +export interface EndEvent {} +export interface Progress { + BytesScanned?: number | undefined; + BytesProcessed?: number | undefined; + BytesReturned?: number | undefined; +} +export interface ProgressEvent { + Details?: Progress | undefined; +} +export interface RecordsEvent { + Payload?: Uint8Array | undefined; +} +export interface Stats { + BytesScanned?: number | undefined; + BytesProcessed?: number | undefined; + BytesReturned?: number | undefined; +} +export interface StatsEvent { + Details?: Stats | undefined; +} +export type SelectObjectContentEventStream = + | SelectObjectContentEventStream.ContMember + | SelectObjectContentEventStream.EndMember + | SelectObjectContentEventStream.ProgressMember + | SelectObjectContentEventStream.RecordsMember + | SelectObjectContentEventStream.StatsMember + | SelectObjectContentEventStream.$UnknownMember; +export declare namespace SelectObjectContentEventStream { + interface RecordsMember { + Records: RecordsEvent; + Stats?: never; + Progress?: never; + Cont?: never; + End?: never; + $unknown?: never; + } + interface StatsMember { + Records?: never; + Stats: StatsEvent; + Progress?: never; + Cont?: never; + End?: never; + $unknown?: never; + } + interface ProgressMember { + Records?: never; + Stats?: never; + Progress: ProgressEvent; + Cont?: never; + End?: never; + $unknown?: never; + } + interface ContMember { + Records?: never; + Stats?: never; + Progress?: never; + Cont: ContinuationEvent; + End?: never; + $unknown?: never; + } + interface EndMember { + Records?: never; + Stats?: never; + Progress?: never; + Cont?: never; + End: EndEvent; + $unknown?: never; + } + interface $UnknownMember { + Records?: never; + Stats?: never; + Progress?: never; + Cont?: never; + End?: never; + $unknown: [string, any]; + } + interface Visitor { + Records: (value: RecordsEvent) => T; + Stats: (value: StatsEvent) => T; + Progress: (value: ProgressEvent) => T; + Cont: (value: ContinuationEvent) => T; + End: (value: EndEvent) => T; + _: (name: string, value: any) => T; + } +} +export interface SelectObjectContentOutput { + Payload?: AsyncIterable | undefined; +} +export interface RequestProgress { + Enabled?: boolean | undefined; +} +export interface ScanRange { + Start?: number | undefined; + End?: number | undefined; +} +export interface SelectObjectContentRequest { + Bucket: string | undefined; + Key: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + Expression: string | undefined; + ExpressionType: ExpressionType | undefined; + RequestProgress?: RequestProgress | undefined; + InputSerialization: InputSerialization | undefined; + OutputSerialization: OutputSerialization | undefined; + ScanRange?: ScanRange | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface InventoryTableConfigurationUpdates { + ConfigurationState: InventoryConfigurationState | undefined; + EncryptionConfiguration?: MetadataTableEncryptionConfiguration | undefined; +} +export interface UpdateBucketMetadataInventoryTableConfigurationRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + InventoryTableConfiguration: InventoryTableConfigurationUpdates | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface JournalTableConfigurationUpdates { + RecordExpiration: RecordExpiration | undefined; +} +export interface UpdateBucketMetadataJournalTableConfigurationRequest { + Bucket: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + JournalTableConfiguration: JournalTableConfigurationUpdates | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface SSEKMSEncryption { + KMSKeyArn: string | undefined; + BucketKeyEnabled?: boolean | undefined; +} +export type ObjectEncryption = + | ObjectEncryption.SSEKMSMember + | ObjectEncryption.$UnknownMember; +export declare namespace ObjectEncryption { + interface SSEKMSMember { + SSEKMS: SSEKMSEncryption; + $unknown?: never; + } + interface $UnknownMember { + SSEKMS?: never; + $unknown: [string, any]; + } + interface Visitor { + SSEKMS: (value: SSEKMSEncryption) => T; + _: (name: string, value: any) => T; + } +} +export interface UpdateObjectEncryptionRequest { + Bucket: string | undefined; + Key: string | undefined; + VersionId?: string | undefined; + ObjectEncryption: ObjectEncryption | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; +} +export interface UpdateObjectEncryptionResponse { + RequestCharged?: RequestCharged | undefined; +} +export interface UploadPartOutput { + ServerSideEncryption?: ServerSideEncryption | undefined; + ETag?: string | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface UploadPartRequest { + Body?: StreamingBlobTypes | undefined; + Bucket: string | undefined; + ContentLength?: number | undefined; + ContentMD5?: string | undefined; + ChecksumAlgorithm?: ChecksumAlgorithm | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + Key: string | undefined; + PartNumber: number | undefined; + UploadId: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; +} +export interface CopyPartResult { + ETag?: string | undefined; + LastModified?: Date | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; +} +export interface UploadPartCopyOutput { + CopySourceVersionId?: string | undefined; + CopyPartResult?: CopyPartResult | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + SSEKMSKeyId?: string | undefined; + BucketKeyEnabled?: boolean | undefined; + RequestCharged?: RequestCharged | undefined; +} +export interface UploadPartCopyRequest { + Bucket: string | undefined; + CopySource: string | undefined; + CopySourceIfMatch?: string | undefined; + CopySourceIfModifiedSince?: Date | undefined; + CopySourceIfNoneMatch?: string | undefined; + CopySourceIfUnmodifiedSince?: Date | undefined; + CopySourceRange?: string | undefined; + Key: string | undefined; + PartNumber: number | undefined; + UploadId: string | undefined; + SSECustomerAlgorithm?: string | undefined; + SSECustomerKey?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + CopySourceSSECustomerAlgorithm?: string | undefined; + CopySourceSSECustomerKey?: string | undefined; + CopySourceSSECustomerKeyMD5?: string | undefined; + RequestPayer?: RequestPayer | undefined; + ExpectedBucketOwner?: string | undefined; + ExpectedSourceBucketOwner?: string | undefined; +} +export interface WriteGetObjectResponseRequest { + RequestRoute: string | undefined; + RequestToken: string | undefined; + Body?: StreamingBlobTypes | undefined; + StatusCode?: number | undefined; + ErrorCode?: string | undefined; + ErrorMessage?: string | undefined; + AcceptRanges?: string | undefined; + CacheControl?: string | undefined; + ContentDisposition?: string | undefined; + ContentEncoding?: string | undefined; + ContentLanguage?: string | undefined; + ContentLength?: number | undefined; + ContentRange?: string | undefined; + ContentType?: string | undefined; + ChecksumCRC32?: string | undefined; + ChecksumCRC32C?: string | undefined; + ChecksumCRC64NVME?: string | undefined; + ChecksumSHA1?: string | undefined; + ChecksumSHA256?: string | undefined; + DeleteMarker?: boolean | undefined; + ETag?: string | undefined; + Expires?: Date | undefined; + Expiration?: string | undefined; + LastModified?: Date | undefined; + MissingMeta?: number | undefined; + Metadata?: Record | undefined; + ObjectLockMode?: ObjectLockMode | undefined; + ObjectLockLegalHoldStatus?: ObjectLockLegalHoldStatus | undefined; + ObjectLockRetainUntilDate?: Date | undefined; + PartsCount?: number | undefined; + ReplicationStatus?: ReplicationStatus | undefined; + RequestCharged?: RequestCharged | undefined; + Restore?: string | undefined; + ServerSideEncryption?: ServerSideEncryption | undefined; + SSECustomerAlgorithm?: string | undefined; + SSEKMSKeyId?: string | undefined; + SSECustomerKeyMD5?: string | undefined; + StorageClass?: StorageClass | undefined; + TagCount?: number | undefined; + VersionId?: string | undefined; + BucketKeyEnabled?: boolean | undefined; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/Interfaces.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/Interfaces.d.ts new file mode 100644 index 0000000..0c7a2b1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/Interfaces.d.ts @@ -0,0 +1,5 @@ +import { PaginationConfiguration } from "@smithy/types"; +import { S3Client } from "../S3Client"; +export interface S3PaginationConfiguration extends PaginationConfiguration { + client: S3Client; +} diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListBucketsPaginator.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListBucketsPaginator.d.ts new file mode 100644 index 0000000..55b27e6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListBucketsPaginator.d.ts @@ -0,0 +1,11 @@ +import { Paginator } from "@smithy/types"; +import { + ListBucketsCommandInput, + ListBucketsCommandOutput, +} from "../commands/ListBucketsCommand"; +import { S3PaginationConfiguration } from "./Interfaces"; +export declare const paginateListBuckets: ( + config: S3PaginationConfiguration, + input: ListBucketsCommandInput, + ...rest: any[] +) => Paginator; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListDirectoryBucketsPaginator.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListDirectoryBucketsPaginator.d.ts new file mode 100644 index 0000000..30dc9d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListDirectoryBucketsPaginator.d.ts @@ -0,0 +1,11 @@ +import { Paginator } from "@smithy/types"; +import { + ListDirectoryBucketsCommandInput, + ListDirectoryBucketsCommandOutput, +} from "../commands/ListDirectoryBucketsCommand"; +import { S3PaginationConfiguration } from "./Interfaces"; +export declare const paginateListDirectoryBuckets: ( + config: S3PaginationConfiguration, + input: ListDirectoryBucketsCommandInput, + ...rest: any[] +) => Paginator; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListObjectsV2Paginator.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListObjectsV2Paginator.d.ts new file mode 100644 index 0000000..84168dd --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListObjectsV2Paginator.d.ts @@ -0,0 +1,11 @@ +import { Paginator } from "@smithy/types"; +import { + ListObjectsV2CommandInput, + ListObjectsV2CommandOutput, +} from "../commands/ListObjectsV2Command"; +import { S3PaginationConfiguration } from "./Interfaces"; +export declare const paginateListObjectsV2: ( + config: S3PaginationConfiguration, + input: ListObjectsV2CommandInput, + ...rest: any[] +) => Paginator; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListPartsPaginator.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListPartsPaginator.d.ts new file mode 100644 index 0000000..b3585db --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListPartsPaginator.d.ts @@ -0,0 +1,11 @@ +import { Paginator } from "@smithy/types"; +import { + ListPartsCommandInput, + ListPartsCommandOutput, +} from "../commands/ListPartsCommand"; +import { S3PaginationConfiguration } from "./Interfaces"; +export declare const paginateListParts: ( + config: S3PaginationConfiguration, + input: ListPartsCommandInput, + ...rest: any[] +) => Paginator; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/index.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/index.d.ts new file mode 100644 index 0000000..9438ebe --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/index.d.ts @@ -0,0 +1,5 @@ +export * from "./Interfaces"; +export * from "./ListBucketsPaginator"; +export * from "./ListDirectoryBucketsPaginator"; +export * from "./ListObjectsV2Paginator"; +export * from "./ListPartsPaginator"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..cf14b99 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.browser.d.ts @@ -0,0 +1,170 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { S3ClientConfig } from "./S3Client"; +export declare const getRuntimeConfig: (config: S3ClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + eventStreamSerdeProvider: import("@smithy/types").EventStreamSerdeProvider; + maxAttempts: number | import("@smithy/types").Provider; + md5: import("@smithy/types").HashConstructor; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha1: import("@smithy/types").HashConstructor; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + streamHasher: + | import("@smithy/types").StreamHasher + | import("@smithy/types").StreamHasher; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/middleware-sdk-s3").S3RestXmlProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + getAwsChunkedEncodingStream: + | import("@smithy/types").GetAwsChunkedEncodingStream + | typeof import("@smithy/util-stream").getAwsChunkedEncodingStream; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + signingEscapePath: boolean; + useArnRegion: + | boolean + | undefined + | import("@smithy/types").Provider; + sdkStreamMixin: import("@smithy/types").SdkStreamMixinInjector; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + requestChecksumCalculation?: + | import("@aws-sdk/middleware-flexible-checksums").RequestChecksumCalculation + | import("@smithy/types").Provider< + import("@aws-sdk/middleware-flexible-checksums").RequestChecksumCalculation + >; + responseChecksumValidation?: + | import("@aws-sdk/middleware-flexible-checksums").ResponseChecksumValidation + | import("@smithy/types").Provider< + import("@aws-sdk/middleware-flexible-checksums").ResponseChecksumValidation + >; + requestStreamBufferSize?: number | false; + checksumAlgorithms?: { + CRC32?: import("@smithy/types").ChecksumConstructor; + CRC32C?: import("@smithy/types").ChecksumConstructor; + CRC64NVME?: import("@smithy/types").ChecksumConstructor; + SHA1?: import("@smithy/types").ChecksumConstructor; + SHA256?: import("@smithy/types").ChecksumConstructor; + } & { + [algorithmId: string]: import("@smithy/types").ChecksumConstructor; + }; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").S3HttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + systemClockOffset?: number; + signingRegion?: string; + signerConstructor: + | typeof import("@aws-sdk/signature-v4-multi-region").SignatureV4MultiRegion + | (new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner); + sigv4aSigningRegionSet?: + | string[] + | undefined + | import("@smithy/types").Provider; + forcePathStyle?: + | (boolean & + (boolean | import("@smithy/types").Provider)) + | undefined; + useAccelerateEndpoint?: + | (boolean & + (boolean | import("@smithy/types").Provider)) + | undefined; + disableMultiregionAccessPoints?: + | (boolean & + (boolean | import("@smithy/types").Provider)) + | undefined; + followRegionRedirects?: boolean; + s3ExpressIdentityProvider?: import("@aws-sdk/middleware-sdk-s3").S3ExpressIdentityProvider; + bucketEndpoint?: boolean; + expectContinueHeader?: boolean | number; + clientContextParams?: { + disableS3ExpressSessionAuth?: + | boolean + | undefined + | import("@smithy/types").Provider; + }; + useGlobalEndpoint?: + | boolean + | undefined + | import("@smithy/types").Provider; + disableS3ExpressSessionAuth?: + | boolean + | undefined + | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.d.ts new file mode 100644 index 0000000..17b5b24 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.d.ts @@ -0,0 +1,170 @@ +import { + ChecksumConstructor as __ChecksumConstructor, + HashConstructor as __HashConstructor, +} from "@aws-sdk/types"; +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { S3ClientConfig } from "./S3Client"; +export declare const getRuntimeConfig: (config: S3ClientConfig) => { + runtime: string; + defaultsMode: import("@aws-sdk/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@aws-sdk/types").Provider; + bodyLengthChecker: import("@aws-sdk/types").BodyLengthCalculator; + credentialDefaultProvider: + | ((input: any) => import("@aws-sdk/types").AwsCredentialIdentityProvider) + | (( + init?: import("@aws-sdk/credential-provider-node").DefaultProviderInit + ) => import("@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain").MemoizedRuntimeConfigAwsCredentialIdentityProvider); + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + disableS3ExpressSessionAuth: + | boolean + | import("@aws-sdk/types").Provider; + eventStreamSerdeProvider: import("@aws-sdk/types").EventStreamSerdeProvider; + maxAttempts: number | import("@aws-sdk/types").Provider; + md5: __HashConstructor; + region: string | import("@aws-sdk/types").Provider; + requestChecksumCalculation: + | import("@aws-sdk/middleware-flexible-checksums").RequestChecksumCalculation + | import("@aws-sdk/types").Provider< + import("@aws-sdk/middleware-flexible-checksums").RequestChecksumCalculation + >; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + responseChecksumValidation: + | import("@aws-sdk/middleware-flexible-checksums").ResponseChecksumValidation + | import("@aws-sdk/types").Provider< + import("@aws-sdk/middleware-flexible-checksums").ResponseChecksumValidation + >; + retryMode: string | import("@aws-sdk/types").Provider; + sha1: __HashConstructor; + sha256: __HashConstructor; + sigv4aSigningRegionSet: + | string[] + | import("@aws-sdk/types").Provider; + streamCollector: import("@aws-sdk/types").StreamCollector; + streamHasher: + | import("@aws-sdk/types").StreamHasher + | import("@aws-sdk/types").StreamHasher; + useArnRegion: + | boolean + | import("@aws-sdk/types").Provider; + useDualstackEndpoint: boolean | import("@aws-sdk/types").Provider; + useFipsEndpoint: boolean | import("@aws-sdk/types").Provider; + userAgentAppId: + | string + | import("@aws-sdk/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/middleware-sdk-s3").S3RestXmlProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@aws-sdk/types").UrlParser; + base64Decoder: import("@aws-sdk/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@aws-sdk/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + getAwsChunkedEncodingStream: + | import("@aws-sdk/types").GetAwsChunkedEncodingStream + | typeof import("@smithy/util-stream").getAwsChunkedEncodingStream; + logger: import("@aws-sdk/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + signingEscapePath: boolean; + sdkStreamMixin: import("@aws-sdk/types").SdkStreamMixinInjector; + customUserAgent?: string | import("@aws-sdk/types").UserAgent; + requestStreamBufferSize?: number | false; + checksumAlgorithms?: { + CRC32?: __ChecksumConstructor; + CRC32C?: __ChecksumConstructor; + CRC64NVME?: __ChecksumConstructor; + SHA1?: __ChecksumConstructor; + SHA256?: __ChecksumConstructor; + } & { + [algorithmId: string]: __ChecksumConstructor; + }; + retryStrategy?: + | import("@aws-sdk/types").RetryStrategy + | import("@aws-sdk/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@aws-sdk/types").Endpoint + | import("@aws-sdk/types").Provider + | import("@aws-sdk/types").EndpointV2 + | import("@aws-sdk/types").Provider + ) & + ( + | string + | import("@aws-sdk/types").Provider + | import("@aws-sdk/types").Endpoint + | import("@aws-sdk/types").Provider + | import("@aws-sdk/types").EndpointV2 + | import("@aws-sdk/types").Provider< + import("@aws-sdk/types").EndpointV2 + > + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@aws-sdk/types").Logger; + } + ) => import("@aws-sdk/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").S3HttpAuthSchemeProvider; + credentials?: + | import("@aws-sdk/types").AwsCredentialIdentity + | import("@aws-sdk/types").AwsCredentialIdentityProvider; + signer?: + | import("@aws-sdk/types").RequestSigner + | (( + authScheme?: import("@aws-sdk/types").AuthScheme + ) => Promise); + systemClockOffset?: number; + signingRegion?: string; + signerConstructor: + | typeof import("@aws-sdk/signature-v4-multi-region").SignatureV4MultiRegion + | (new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@aws-sdk/types").RequestSigner); + forcePathStyle?: + | (boolean & + (boolean | import("@aws-sdk/types").Provider)) + | undefined; + useAccelerateEndpoint?: + | (boolean & + (boolean | import("@aws-sdk/types").Provider)) + | undefined; + disableMultiregionAccessPoints?: + | (boolean & + (boolean | import("@aws-sdk/types").Provider)) + | undefined; + followRegionRedirects?: boolean; + s3ExpressIdentityProvider?: import("@aws-sdk/middleware-sdk-s3").S3ExpressIdentityProvider; + bucketEndpoint?: boolean; + expectContinueHeader?: boolean | number; + clientContextParams?: { + disableS3ExpressSessionAuth?: + | boolean + | undefined + | import("@aws-sdk/types").Provider; + }; + useGlobalEndpoint?: + | boolean + | undefined + | import("@aws-sdk/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.native.d.ts new file mode 100644 index 0000000..220b6f8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.native.d.ts @@ -0,0 +1,174 @@ +import { S3ClientConfig } from "./S3Client"; +export declare const getRuntimeConfig: (config: S3ClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/middleware-sdk-s3").S3RestXmlProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + streamHasher: + | import("@smithy/types").StreamHasher + | import("@smithy/types").StreamHasher; + md5: import("@smithy/types").HashConstructor; + sha1: import("@smithy/types").HashConstructor; + getAwsChunkedEncodingStream: + | import("@smithy/types").GetAwsChunkedEncodingStream + | typeof import("@smithy/util-stream").getAwsChunkedEncodingStream; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + eventStreamSerdeProvider: import("@smithy/types").EventStreamSerdeProvider; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + signingEscapePath: boolean; + useArnRegion: + | boolean + | undefined + | import("@smithy/types").Provider; + sdkStreamMixin: import("@smithy/types").SdkStreamMixinInjector; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + requestChecksumCalculation?: + | import("@aws-sdk/middleware-flexible-checksums").RequestChecksumCalculation + | import("@smithy/types").Provider< + import("@aws-sdk/middleware-flexible-checksums").RequestChecksumCalculation + >; + responseChecksumValidation?: + | import("@aws-sdk/middleware-flexible-checksums").ResponseChecksumValidation + | import("@smithy/types").Provider< + import("@aws-sdk/middleware-flexible-checksums").ResponseChecksumValidation + >; + requestStreamBufferSize?: number | false; + checksumAlgorithms?: { + CRC32?: import("@smithy/types").ChecksumConstructor; + CRC32C?: import("@smithy/types").ChecksumConstructor; + CRC64NVME?: import("@smithy/types").ChecksumConstructor; + SHA1?: import("@smithy/types").ChecksumConstructor; + SHA256?: import("@smithy/types").ChecksumConstructor; + } & { + [algorithmId: string]: import("@smithy/types").ChecksumConstructor; + }; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").S3HttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + systemClockOffset?: number; + signingRegion?: string; + signerConstructor: + | typeof import("@aws-sdk/signature-v4-multi-region").SignatureV4MultiRegion + | (new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner); + sigv4aSigningRegionSet?: + | string[] + | undefined + | import("@smithy/types").Provider; + forcePathStyle?: + | (boolean & + (boolean | import("@smithy/types").Provider)) + | undefined; + useAccelerateEndpoint?: + | (boolean & + (boolean | import("@smithy/types").Provider)) + | undefined; + disableMultiregionAccessPoints?: + | (boolean & + (boolean | import("@smithy/types").Provider)) + | undefined; + followRegionRedirects?: boolean; + s3ExpressIdentityProvider?: import("@aws-sdk/middleware-sdk-s3").S3ExpressIdentityProvider; + bucketEndpoint?: boolean; + expectContinueHeader?: boolean | number; + clientContextParams?: { + disableS3ExpressSessionAuth?: + | boolean + | undefined + | import("@smithy/types").Provider; + }; + useGlobalEndpoint?: + | boolean + | undefined + | import("@smithy/types").Provider; + disableS3ExpressSessionAuth?: + | boolean + | undefined + | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..a6cd0ff --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.shared.d.ts @@ -0,0 +1,47 @@ +import { S3RestXmlProtocol } from "@aws-sdk/middleware-sdk-s3"; +import { SignatureV4MultiRegion } from "@aws-sdk/signature-v4-multi-region"; +import { getAwsChunkedEncodingStream } from "@smithy/util-stream"; +import { S3ClientConfig } from "./S3Client"; +export declare const getRuntimeConfig: (config: S3ClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + getAwsChunkedEncodingStream: + | import("@smithy/types").GetAwsChunkedEncodingStream + | typeof getAwsChunkedEncodingStream; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").S3HttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof S3RestXmlProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + sdkStreamMixin: import("@smithy/types").SdkStreamMixinInjector; + serviceId: string; + signerConstructor: + | typeof SignatureV4MultiRegion + | (new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner); + signingEscapePath: boolean; + urlParser: import("@smithy/types").UrlParser; + useArnRegion: + | boolean + | import("@smithy/types").Provider + | undefined; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeExtensions.d.ts new file mode 100644 index 0000000..90793a4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeExtensions.d.ts @@ -0,0 +1,11 @@ +import { S3ExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure(extensionConfiguration: S3ExtensionConfiguration): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/schemas/schemas_0.d.ts new file mode 100644 index 0000000..4618930 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/schemas/schemas_0.d.ts @@ -0,0 +1,464 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, + StaticUnionSchema, +} from "@smithy/types"; +export declare var S3ServiceException$: StaticErrorSchema; +export declare var AccessDenied$: StaticErrorSchema; +export declare var BucketAlreadyExists$: StaticErrorSchema; +export declare var BucketAlreadyOwnedByYou$: StaticErrorSchema; +export declare var EncryptionTypeMismatch$: StaticErrorSchema; +export declare var IdempotencyParameterMismatch$: StaticErrorSchema; +export declare var InvalidObjectState$: StaticErrorSchema; +export declare var InvalidRequest$: StaticErrorSchema; +export declare var InvalidWriteOffset$: StaticErrorSchema; +export declare var NoSuchBucket$: StaticErrorSchema; +export declare var NoSuchKey$: StaticErrorSchema; +export declare var NoSuchUpload$: StaticErrorSchema; +export declare var NotFound$: StaticErrorSchema; +export declare var ObjectAlreadyInActiveTierError$: StaticErrorSchema; +export declare var ObjectNotInActiveTierError$: StaticErrorSchema; +export declare var TooManyParts$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AbacStatus$: StaticStructureSchema; +export declare var AbortIncompleteMultipartUpload$: StaticStructureSchema; +export declare var AbortMultipartUploadOutput$: StaticStructureSchema; +export declare var AbortMultipartUploadRequest$: StaticStructureSchema; +export declare var AccelerateConfiguration$: StaticStructureSchema; +export declare var AccessControlPolicy$: StaticStructureSchema; +export declare var AccessControlTranslation$: StaticStructureSchema; +export declare var AnalyticsAndOperator$: StaticStructureSchema; +export declare var AnalyticsConfiguration$: StaticStructureSchema; +export declare var AnalyticsExportDestination$: StaticStructureSchema; +export declare var AnalyticsS3BucketDestination$: StaticStructureSchema; +export declare var BlockedEncryptionTypes$: StaticStructureSchema; +export declare var Bucket$: StaticStructureSchema; +export declare var BucketInfo$: StaticStructureSchema; +export declare var BucketLifecycleConfiguration$: StaticStructureSchema; +export declare var BucketLoggingStatus$: StaticStructureSchema; +export declare var Checksum$: StaticStructureSchema; +export declare var CommonPrefix$: StaticStructureSchema; +export declare var CompletedMultipartUpload$: StaticStructureSchema; +export declare var CompletedPart$: StaticStructureSchema; +export declare var CompleteMultipartUploadOutput$: StaticStructureSchema; +export declare var CompleteMultipartUploadRequest$: StaticStructureSchema; +export declare var Condition$: StaticStructureSchema; +export declare var ContinuationEvent$: StaticStructureSchema; +export declare var CopyObjectOutput$: StaticStructureSchema; +export declare var CopyObjectRequest$: StaticStructureSchema; +export declare var CopyObjectResult$: StaticStructureSchema; +export declare var CopyPartResult$: StaticStructureSchema; +export declare var CORSConfiguration$: StaticStructureSchema; +export declare var CORSRule$: StaticStructureSchema; +export declare var CreateBucketConfiguration$: StaticStructureSchema; +export declare var CreateBucketMetadataConfigurationRequest$: StaticStructureSchema; +export declare var CreateBucketMetadataTableConfigurationRequest$: StaticStructureSchema; +export declare var CreateBucketOutput$: StaticStructureSchema; +export declare var CreateBucketRequest$: StaticStructureSchema; +export declare var CreateMultipartUploadOutput$: StaticStructureSchema; +export declare var CreateMultipartUploadRequest$: StaticStructureSchema; +export declare var CreateSessionOutput$: StaticStructureSchema; +export declare var CreateSessionRequest$: StaticStructureSchema; +export declare var CSVInput$: StaticStructureSchema; +export declare var CSVOutput$: StaticStructureSchema; +export declare var DefaultRetention$: StaticStructureSchema; +export declare var Delete$: StaticStructureSchema; +export declare var DeleteBucketAnalyticsConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketCorsRequest$: StaticStructureSchema; +export declare var DeleteBucketEncryptionRequest$: StaticStructureSchema; +export declare var DeleteBucketIntelligentTieringConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketInventoryConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketLifecycleRequest$: StaticStructureSchema; +export declare var DeleteBucketMetadataConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketMetadataTableConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketMetricsConfigurationRequest$: StaticStructureSchema; +export declare var DeleteBucketOwnershipControlsRequest$: StaticStructureSchema; +export declare var DeleteBucketPolicyRequest$: StaticStructureSchema; +export declare var DeleteBucketReplicationRequest$: StaticStructureSchema; +export declare var DeleteBucketRequest$: StaticStructureSchema; +export declare var DeleteBucketTaggingRequest$: StaticStructureSchema; +export declare var DeleteBucketWebsiteRequest$: StaticStructureSchema; +export declare var DeletedObject$: StaticStructureSchema; +export declare var DeleteMarkerEntry$: StaticStructureSchema; +export declare var DeleteMarkerReplication$: StaticStructureSchema; +export declare var DeleteObjectOutput$: StaticStructureSchema; +export declare var DeleteObjectRequest$: StaticStructureSchema; +export declare var DeleteObjectsOutput$: StaticStructureSchema; +export declare var DeleteObjectsRequest$: StaticStructureSchema; +export declare var DeleteObjectTaggingOutput$: StaticStructureSchema; +export declare var DeleteObjectTaggingRequest$: StaticStructureSchema; +export declare var DeletePublicAccessBlockRequest$: StaticStructureSchema; +export declare var Destination$: StaticStructureSchema; +export declare var DestinationResult$: StaticStructureSchema; +export declare var Encryption$: StaticStructureSchema; +export declare var EncryptionConfiguration$: StaticStructureSchema; +export declare var EndEvent$: StaticStructureSchema; +export declare var _Error$: StaticStructureSchema; +export declare var ErrorDetails$: StaticStructureSchema; +export declare var ErrorDocument$: StaticStructureSchema; +export declare var EventBridgeConfiguration$: StaticStructureSchema; +export declare var ExistingObjectReplication$: StaticStructureSchema; +export declare var FilterRule$: StaticStructureSchema; +export declare var GetBucketAbacOutput$: StaticStructureSchema; +export declare var GetBucketAbacRequest$: StaticStructureSchema; +export declare var GetBucketAccelerateConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketAccelerateConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketAclOutput$: StaticStructureSchema; +export declare var GetBucketAclRequest$: StaticStructureSchema; +export declare var GetBucketAnalyticsConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketAnalyticsConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketCorsOutput$: StaticStructureSchema; +export declare var GetBucketCorsRequest$: StaticStructureSchema; +export declare var GetBucketEncryptionOutput$: StaticStructureSchema; +export declare var GetBucketEncryptionRequest$: StaticStructureSchema; +export declare var GetBucketIntelligentTieringConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketIntelligentTieringConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketInventoryConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketInventoryConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketLifecycleConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketLifecycleConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketLocationOutput$: StaticStructureSchema; +export declare var GetBucketLocationRequest$: StaticStructureSchema; +export declare var GetBucketLoggingOutput$: StaticStructureSchema; +export declare var GetBucketLoggingRequest$: StaticStructureSchema; +export declare var GetBucketMetadataConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketMetadataConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketMetadataConfigurationResult$: StaticStructureSchema; +export declare var GetBucketMetadataTableConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketMetadataTableConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketMetadataTableConfigurationResult$: StaticStructureSchema; +export declare var GetBucketMetricsConfigurationOutput$: StaticStructureSchema; +export declare var GetBucketMetricsConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketNotificationConfigurationRequest$: StaticStructureSchema; +export declare var GetBucketOwnershipControlsOutput$: StaticStructureSchema; +export declare var GetBucketOwnershipControlsRequest$: StaticStructureSchema; +export declare var GetBucketPolicyOutput$: StaticStructureSchema; +export declare var GetBucketPolicyRequest$: StaticStructureSchema; +export declare var GetBucketPolicyStatusOutput$: StaticStructureSchema; +export declare var GetBucketPolicyStatusRequest$: StaticStructureSchema; +export declare var GetBucketReplicationOutput$: StaticStructureSchema; +export declare var GetBucketReplicationRequest$: StaticStructureSchema; +export declare var GetBucketRequestPaymentOutput$: StaticStructureSchema; +export declare var GetBucketRequestPaymentRequest$: StaticStructureSchema; +export declare var GetBucketTaggingOutput$: StaticStructureSchema; +export declare var GetBucketTaggingRequest$: StaticStructureSchema; +export declare var GetBucketVersioningOutput$: StaticStructureSchema; +export declare var GetBucketVersioningRequest$: StaticStructureSchema; +export declare var GetBucketWebsiteOutput$: StaticStructureSchema; +export declare var GetBucketWebsiteRequest$: StaticStructureSchema; +export declare var GetObjectAclOutput$: StaticStructureSchema; +export declare var GetObjectAclRequest$: StaticStructureSchema; +export declare var GetObjectAttributesOutput$: StaticStructureSchema; +export declare var GetObjectAttributesParts$: StaticStructureSchema; +export declare var GetObjectAttributesRequest$: StaticStructureSchema; +export declare var GetObjectLegalHoldOutput$: StaticStructureSchema; +export declare var GetObjectLegalHoldRequest$: StaticStructureSchema; +export declare var GetObjectLockConfigurationOutput$: StaticStructureSchema; +export declare var GetObjectLockConfigurationRequest$: StaticStructureSchema; +export declare var GetObjectOutput$: StaticStructureSchema; +export declare var GetObjectRequest$: StaticStructureSchema; +export declare var GetObjectRetentionOutput$: StaticStructureSchema; +export declare var GetObjectRetentionRequest$: StaticStructureSchema; +export declare var GetObjectTaggingOutput$: StaticStructureSchema; +export declare var GetObjectTaggingRequest$: StaticStructureSchema; +export declare var GetObjectTorrentOutput$: StaticStructureSchema; +export declare var GetObjectTorrentRequest$: StaticStructureSchema; +export declare var GetPublicAccessBlockOutput$: StaticStructureSchema; +export declare var GetPublicAccessBlockRequest$: StaticStructureSchema; +export declare var GlacierJobParameters$: StaticStructureSchema; +export declare var Grant$: StaticStructureSchema; +export declare var Grantee$: StaticStructureSchema; +export declare var HeadBucketOutput$: StaticStructureSchema; +export declare var HeadBucketRequest$: StaticStructureSchema; +export declare var HeadObjectOutput$: StaticStructureSchema; +export declare var HeadObjectRequest$: StaticStructureSchema; +export declare var IndexDocument$: StaticStructureSchema; +export declare var Initiator$: StaticStructureSchema; +export declare var InputSerialization$: StaticStructureSchema; +export declare var IntelligentTieringAndOperator$: StaticStructureSchema; +export declare var IntelligentTieringConfiguration$: StaticStructureSchema; +export declare var IntelligentTieringFilter$: StaticStructureSchema; +export declare var InventoryConfiguration$: StaticStructureSchema; +export declare var InventoryDestination$: StaticStructureSchema; +export declare var InventoryEncryption$: StaticStructureSchema; +export declare var InventoryFilter$: StaticStructureSchema; +export declare var InventoryS3BucketDestination$: StaticStructureSchema; +export declare var InventorySchedule$: StaticStructureSchema; +export declare var InventoryTableConfiguration$: StaticStructureSchema; +export declare var InventoryTableConfigurationResult$: StaticStructureSchema; +export declare var InventoryTableConfigurationUpdates$: StaticStructureSchema; +export declare var JournalTableConfiguration$: StaticStructureSchema; +export declare var JournalTableConfigurationResult$: StaticStructureSchema; +export declare var JournalTableConfigurationUpdates$: StaticStructureSchema; +export declare var JSONInput$: StaticStructureSchema; +export declare var JSONOutput$: StaticStructureSchema; +export declare var LambdaFunctionConfiguration$: StaticStructureSchema; +export declare var LifecycleExpiration$: StaticStructureSchema; +export declare var LifecycleRule$: StaticStructureSchema; +export declare var LifecycleRuleAndOperator$: StaticStructureSchema; +export declare var LifecycleRuleFilter$: StaticStructureSchema; +export declare var ListBucketAnalyticsConfigurationsOutput$: StaticStructureSchema; +export declare var ListBucketAnalyticsConfigurationsRequest$: StaticStructureSchema; +export declare var ListBucketIntelligentTieringConfigurationsOutput$: StaticStructureSchema; +export declare var ListBucketIntelligentTieringConfigurationsRequest$: StaticStructureSchema; +export declare var ListBucketInventoryConfigurationsOutput$: StaticStructureSchema; +export declare var ListBucketInventoryConfigurationsRequest$: StaticStructureSchema; +export declare var ListBucketMetricsConfigurationsOutput$: StaticStructureSchema; +export declare var ListBucketMetricsConfigurationsRequest$: StaticStructureSchema; +export declare var ListBucketsOutput$: StaticStructureSchema; +export declare var ListBucketsRequest$: StaticStructureSchema; +export declare var ListDirectoryBucketsOutput$: StaticStructureSchema; +export declare var ListDirectoryBucketsRequest$: StaticStructureSchema; +export declare var ListMultipartUploadsOutput$: StaticStructureSchema; +export declare var ListMultipartUploadsRequest$: StaticStructureSchema; +export declare var ListObjectsOutput$: StaticStructureSchema; +export declare var ListObjectsRequest$: StaticStructureSchema; +export declare var ListObjectsV2Output$: StaticStructureSchema; +export declare var ListObjectsV2Request$: StaticStructureSchema; +export declare var ListObjectVersionsOutput$: StaticStructureSchema; +export declare var ListObjectVersionsRequest$: StaticStructureSchema; +export declare var ListPartsOutput$: StaticStructureSchema; +export declare var ListPartsRequest$: StaticStructureSchema; +export declare var LocationInfo$: StaticStructureSchema; +export declare var LoggingEnabled$: StaticStructureSchema; +export declare var MetadataConfiguration$: StaticStructureSchema; +export declare var MetadataConfigurationResult$: StaticStructureSchema; +export declare var MetadataEntry$: StaticStructureSchema; +export declare var MetadataTableConfiguration$: StaticStructureSchema; +export declare var MetadataTableConfigurationResult$: StaticStructureSchema; +export declare var MetadataTableEncryptionConfiguration$: StaticStructureSchema; +export declare var Metrics$: StaticStructureSchema; +export declare var MetricsAndOperator$: StaticStructureSchema; +export declare var MetricsConfiguration$: StaticStructureSchema; +export declare var MultipartUpload$: StaticStructureSchema; +export declare var NoncurrentVersionExpiration$: StaticStructureSchema; +export declare var NoncurrentVersionTransition$: StaticStructureSchema; +export declare var NotificationConfiguration$: StaticStructureSchema; +export declare var NotificationConfigurationFilter$: StaticStructureSchema; +export declare var _Object$: StaticStructureSchema; +export declare var ObjectIdentifier$: StaticStructureSchema; +export declare var ObjectLockConfiguration$: StaticStructureSchema; +export declare var ObjectLockLegalHold$: StaticStructureSchema; +export declare var ObjectLockRetention$: StaticStructureSchema; +export declare var ObjectLockRule$: StaticStructureSchema; +export declare var ObjectPart$: StaticStructureSchema; +export declare var ObjectVersion$: StaticStructureSchema; +export declare var OutputLocation$: StaticStructureSchema; +export declare var OutputSerialization$: StaticStructureSchema; +export declare var Owner$: StaticStructureSchema; +export declare var OwnershipControls$: StaticStructureSchema; +export declare var OwnershipControlsRule$: StaticStructureSchema; +export declare var ParquetInput$: StaticStructureSchema; +export declare var Part$: StaticStructureSchema; +export declare var PartitionedPrefix$: StaticStructureSchema; +export declare var PolicyStatus$: StaticStructureSchema; +export declare var Progress$: StaticStructureSchema; +export declare var ProgressEvent$: StaticStructureSchema; +export declare var PublicAccessBlockConfiguration$: StaticStructureSchema; +export declare var PutBucketAbacRequest$: StaticStructureSchema; +export declare var PutBucketAccelerateConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketAclRequest$: StaticStructureSchema; +export declare var PutBucketAnalyticsConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketCorsRequest$: StaticStructureSchema; +export declare var PutBucketEncryptionRequest$: StaticStructureSchema; +export declare var PutBucketIntelligentTieringConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketInventoryConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketLifecycleConfigurationOutput$: StaticStructureSchema; +export declare var PutBucketLifecycleConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketLoggingRequest$: StaticStructureSchema; +export declare var PutBucketMetricsConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketNotificationConfigurationRequest$: StaticStructureSchema; +export declare var PutBucketOwnershipControlsRequest$: StaticStructureSchema; +export declare var PutBucketPolicyRequest$: StaticStructureSchema; +export declare var PutBucketReplicationRequest$: StaticStructureSchema; +export declare var PutBucketRequestPaymentRequest$: StaticStructureSchema; +export declare var PutBucketTaggingRequest$: StaticStructureSchema; +export declare var PutBucketVersioningRequest$: StaticStructureSchema; +export declare var PutBucketWebsiteRequest$: StaticStructureSchema; +export declare var PutObjectAclOutput$: StaticStructureSchema; +export declare var PutObjectAclRequest$: StaticStructureSchema; +export declare var PutObjectLegalHoldOutput$: StaticStructureSchema; +export declare var PutObjectLegalHoldRequest$: StaticStructureSchema; +export declare var PutObjectLockConfigurationOutput$: StaticStructureSchema; +export declare var PutObjectLockConfigurationRequest$: StaticStructureSchema; +export declare var PutObjectOutput$: StaticStructureSchema; +export declare var PutObjectRequest$: StaticStructureSchema; +export declare var PutObjectRetentionOutput$: StaticStructureSchema; +export declare var PutObjectRetentionRequest$: StaticStructureSchema; +export declare var PutObjectTaggingOutput$: StaticStructureSchema; +export declare var PutObjectTaggingRequest$: StaticStructureSchema; +export declare var PutPublicAccessBlockRequest$: StaticStructureSchema; +export declare var QueueConfiguration$: StaticStructureSchema; +export declare var RecordExpiration$: StaticStructureSchema; +export declare var RecordsEvent$: StaticStructureSchema; +export declare var Redirect$: StaticStructureSchema; +export declare var RedirectAllRequestsTo$: StaticStructureSchema; +export declare var RenameObjectOutput$: StaticStructureSchema; +export declare var RenameObjectRequest$: StaticStructureSchema; +export declare var ReplicaModifications$: StaticStructureSchema; +export declare var ReplicationConfiguration$: StaticStructureSchema; +export declare var ReplicationRule$: StaticStructureSchema; +export declare var ReplicationRuleAndOperator$: StaticStructureSchema; +export declare var ReplicationRuleFilter$: StaticStructureSchema; +export declare var ReplicationTime$: StaticStructureSchema; +export declare var ReplicationTimeValue$: StaticStructureSchema; +export declare var RequestPaymentConfiguration$: StaticStructureSchema; +export declare var RequestProgress$: StaticStructureSchema; +export declare var RestoreObjectOutput$: StaticStructureSchema; +export declare var RestoreObjectRequest$: StaticStructureSchema; +export declare var RestoreRequest$: StaticStructureSchema; +export declare var RestoreStatus$: StaticStructureSchema; +export declare var RoutingRule$: StaticStructureSchema; +export declare var S3KeyFilter$: StaticStructureSchema; +export declare var S3Location$: StaticStructureSchema; +export declare var S3TablesDestination$: StaticStructureSchema; +export declare var S3TablesDestinationResult$: StaticStructureSchema; +export declare var ScanRange$: StaticStructureSchema; +export declare var SelectObjectContentOutput$: StaticStructureSchema; +export declare var SelectObjectContentRequest$: StaticStructureSchema; +export declare var SelectParameters$: StaticStructureSchema; +export declare var ServerSideEncryptionByDefault$: StaticStructureSchema; +export declare var ServerSideEncryptionConfiguration$: StaticStructureSchema; +export declare var ServerSideEncryptionRule$: StaticStructureSchema; +export declare var SessionCredentials$: StaticStructureSchema; +export declare var SimplePrefix$: StaticStructureSchema; +export declare var SourceSelectionCriteria$: StaticStructureSchema; +export declare var SSEKMS$: StaticStructureSchema; +export declare var SseKmsEncryptedObjects$: StaticStructureSchema; +export declare var SSEKMSEncryption$: StaticStructureSchema; +export declare var SSES3$: StaticStructureSchema; +export declare var Stats$: StaticStructureSchema; +export declare var StatsEvent$: StaticStructureSchema; +export declare var StorageClassAnalysis$: StaticStructureSchema; +export declare var StorageClassAnalysisDataExport$: StaticStructureSchema; +export declare var Tag$: StaticStructureSchema; +export declare var Tagging$: StaticStructureSchema; +export declare var TargetGrant$: StaticStructureSchema; +export declare var TargetObjectKeyFormat$: StaticStructureSchema; +export declare var Tiering$: StaticStructureSchema; +export declare var TopicConfiguration$: StaticStructureSchema; +export declare var Transition$: StaticStructureSchema; +export declare var UpdateBucketMetadataInventoryTableConfigurationRequest$: StaticStructureSchema; +export declare var UpdateBucketMetadataJournalTableConfigurationRequest$: StaticStructureSchema; +export declare var UpdateObjectEncryptionRequest$: StaticStructureSchema; +export declare var UpdateObjectEncryptionResponse$: StaticStructureSchema; +export declare var UploadPartCopyOutput$: StaticStructureSchema; +export declare var UploadPartCopyRequest$: StaticStructureSchema; +export declare var UploadPartOutput$: StaticStructureSchema; +export declare var UploadPartRequest$: StaticStructureSchema; +export declare var VersioningConfiguration$: StaticStructureSchema; +export declare var WebsiteConfiguration$: StaticStructureSchema; +export declare var WriteGetObjectResponseRequest$: StaticStructureSchema; +export declare var AnalyticsFilter$: StaticUnionSchema; +export declare var MetricsFilter$: StaticUnionSchema; +export declare var ObjectEncryption$: StaticUnionSchema; +export declare var SelectObjectContentEventStream$: StaticUnionSchema; +export declare var AbortMultipartUpload$: StaticOperationSchema; +export declare var CompleteMultipartUpload$: StaticOperationSchema; +export declare var CopyObject$: StaticOperationSchema; +export declare var CreateBucket$: StaticOperationSchema; +export declare var CreateBucketMetadataConfiguration$: StaticOperationSchema; +export declare var CreateBucketMetadataTableConfiguration$: StaticOperationSchema; +export declare var CreateMultipartUpload$: StaticOperationSchema; +export declare var CreateSession$: StaticOperationSchema; +export declare var DeleteBucket$: StaticOperationSchema; +export declare var DeleteBucketAnalyticsConfiguration$: StaticOperationSchema; +export declare var DeleteBucketCors$: StaticOperationSchema; +export declare var DeleteBucketEncryption$: StaticOperationSchema; +export declare var DeleteBucketIntelligentTieringConfiguration$: StaticOperationSchema; +export declare var DeleteBucketInventoryConfiguration$: StaticOperationSchema; +export declare var DeleteBucketLifecycle$: StaticOperationSchema; +export declare var DeleteBucketMetadataConfiguration$: StaticOperationSchema; +export declare var DeleteBucketMetadataTableConfiguration$: StaticOperationSchema; +export declare var DeleteBucketMetricsConfiguration$: StaticOperationSchema; +export declare var DeleteBucketOwnershipControls$: StaticOperationSchema; +export declare var DeleteBucketPolicy$: StaticOperationSchema; +export declare var DeleteBucketReplication$: StaticOperationSchema; +export declare var DeleteBucketTagging$: StaticOperationSchema; +export declare var DeleteBucketWebsite$: StaticOperationSchema; +export declare var DeleteObject$: StaticOperationSchema; +export declare var DeleteObjects$: StaticOperationSchema; +export declare var DeleteObjectTagging$: StaticOperationSchema; +export declare var DeletePublicAccessBlock$: StaticOperationSchema; +export declare var GetBucketAbac$: StaticOperationSchema; +export declare var GetBucketAccelerateConfiguration$: StaticOperationSchema; +export declare var GetBucketAcl$: StaticOperationSchema; +export declare var GetBucketAnalyticsConfiguration$: StaticOperationSchema; +export declare var GetBucketCors$: StaticOperationSchema; +export declare var GetBucketEncryption$: StaticOperationSchema; +export declare var GetBucketIntelligentTieringConfiguration$: StaticOperationSchema; +export declare var GetBucketInventoryConfiguration$: StaticOperationSchema; +export declare var GetBucketLifecycleConfiguration$: StaticOperationSchema; +export declare var GetBucketLocation$: StaticOperationSchema; +export declare var GetBucketLogging$: StaticOperationSchema; +export declare var GetBucketMetadataConfiguration$: StaticOperationSchema; +export declare var GetBucketMetadataTableConfiguration$: StaticOperationSchema; +export declare var GetBucketMetricsConfiguration$: StaticOperationSchema; +export declare var GetBucketNotificationConfiguration$: StaticOperationSchema; +export declare var GetBucketOwnershipControls$: StaticOperationSchema; +export declare var GetBucketPolicy$: StaticOperationSchema; +export declare var GetBucketPolicyStatus$: StaticOperationSchema; +export declare var GetBucketReplication$: StaticOperationSchema; +export declare var GetBucketRequestPayment$: StaticOperationSchema; +export declare var GetBucketTagging$: StaticOperationSchema; +export declare var GetBucketVersioning$: StaticOperationSchema; +export declare var GetBucketWebsite$: StaticOperationSchema; +export declare var GetObject$: StaticOperationSchema; +export declare var GetObjectAcl$: StaticOperationSchema; +export declare var GetObjectAttributes$: StaticOperationSchema; +export declare var GetObjectLegalHold$: StaticOperationSchema; +export declare var GetObjectLockConfiguration$: StaticOperationSchema; +export declare var GetObjectRetention$: StaticOperationSchema; +export declare var GetObjectTagging$: StaticOperationSchema; +export declare var GetObjectTorrent$: StaticOperationSchema; +export declare var GetPublicAccessBlock$: StaticOperationSchema; +export declare var HeadBucket$: StaticOperationSchema; +export declare var HeadObject$: StaticOperationSchema; +export declare var ListBucketAnalyticsConfigurations$: StaticOperationSchema; +export declare var ListBucketIntelligentTieringConfigurations$: StaticOperationSchema; +export declare var ListBucketInventoryConfigurations$: StaticOperationSchema; +export declare var ListBucketMetricsConfigurations$: StaticOperationSchema; +export declare var ListBuckets$: StaticOperationSchema; +export declare var ListDirectoryBuckets$: StaticOperationSchema; +export declare var ListMultipartUploads$: StaticOperationSchema; +export declare var ListObjects$: StaticOperationSchema; +export declare var ListObjectsV2$: StaticOperationSchema; +export declare var ListObjectVersions$: StaticOperationSchema; +export declare var ListParts$: StaticOperationSchema; +export declare var PutBucketAbac$: StaticOperationSchema; +export declare var PutBucketAccelerateConfiguration$: StaticOperationSchema; +export declare var PutBucketAcl$: StaticOperationSchema; +export declare var PutBucketAnalyticsConfiguration$: StaticOperationSchema; +export declare var PutBucketCors$: StaticOperationSchema; +export declare var PutBucketEncryption$: StaticOperationSchema; +export declare var PutBucketIntelligentTieringConfiguration$: StaticOperationSchema; +export declare var PutBucketInventoryConfiguration$: StaticOperationSchema; +export declare var PutBucketLifecycleConfiguration$: StaticOperationSchema; +export declare var PutBucketLogging$: StaticOperationSchema; +export declare var PutBucketMetricsConfiguration$: StaticOperationSchema; +export declare var PutBucketNotificationConfiguration$: StaticOperationSchema; +export declare var PutBucketOwnershipControls$: StaticOperationSchema; +export declare var PutBucketPolicy$: StaticOperationSchema; +export declare var PutBucketReplication$: StaticOperationSchema; +export declare var PutBucketRequestPayment$: StaticOperationSchema; +export declare var PutBucketTagging$: StaticOperationSchema; +export declare var PutBucketVersioning$: StaticOperationSchema; +export declare var PutBucketWebsite$: StaticOperationSchema; +export declare var PutObject$: StaticOperationSchema; +export declare var PutObjectAcl$: StaticOperationSchema; +export declare var PutObjectLegalHold$: StaticOperationSchema; +export declare var PutObjectLockConfiguration$: StaticOperationSchema; +export declare var PutObjectRetention$: StaticOperationSchema; +export declare var PutObjectTagging$: StaticOperationSchema; +export declare var PutPublicAccessBlock$: StaticOperationSchema; +export declare var RenameObject$: StaticOperationSchema; +export declare var RestoreObject$: StaticOperationSchema; +export declare var SelectObjectContent$: StaticOperationSchema; +export declare var UpdateBucketMetadataInventoryTableConfiguration$: StaticOperationSchema; +export declare var UpdateBucketMetadataJournalTableConfiguration$: StaticOperationSchema; +export declare var UpdateObjectEncryption$: StaticOperationSchema; +export declare var UploadPart$: StaticOperationSchema; +export declare var UploadPartCopy$: StaticOperationSchema; +export declare var WriteGetObjectResponse$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/index.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/index.d.ts new file mode 100644 index 0000000..a139674 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/index.d.ts @@ -0,0 +1,4 @@ +export * from "./waitForBucketExists"; +export * from "./waitForBucketNotExists"; +export * from "./waitForObjectExists"; +export * from "./waitForObjectNotExists"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForBucketExists.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForBucketExists.d.ts new file mode 100644 index 0000000..e9976fc --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForBucketExists.d.ts @@ -0,0 +1,11 @@ +import { WaiterConfiguration, WaiterResult } from "@smithy/util-waiter"; +import { HeadBucketCommandInput } from "../commands/HeadBucketCommand"; +import { S3Client } from "../S3Client"; +export declare const waitForBucketExists: ( + params: WaiterConfiguration, + input: HeadBucketCommandInput +) => Promise; +export declare const waitUntilBucketExists: ( + params: WaiterConfiguration, + input: HeadBucketCommandInput +) => Promise; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForBucketNotExists.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForBucketNotExists.d.ts new file mode 100644 index 0000000..3da8b19 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForBucketNotExists.d.ts @@ -0,0 +1,11 @@ +import { WaiterConfiguration, WaiterResult } from "@smithy/util-waiter"; +import { HeadBucketCommandInput } from "../commands/HeadBucketCommand"; +import { S3Client } from "../S3Client"; +export declare const waitForBucketNotExists: ( + params: WaiterConfiguration, + input: HeadBucketCommandInput +) => Promise; +export declare const waitUntilBucketNotExists: ( + params: WaiterConfiguration, + input: HeadBucketCommandInput +) => Promise; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForObjectExists.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForObjectExists.d.ts new file mode 100644 index 0000000..54d815a --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForObjectExists.d.ts @@ -0,0 +1,11 @@ +import { WaiterConfiguration, WaiterResult } from "@smithy/util-waiter"; +import { HeadObjectCommandInput } from "../commands/HeadObjectCommand"; +import { S3Client } from "../S3Client"; +export declare const waitForObjectExists: ( + params: WaiterConfiguration, + input: HeadObjectCommandInput +) => Promise; +export declare const waitUntilObjectExists: ( + params: WaiterConfiguration, + input: HeadObjectCommandInput +) => Promise; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForObjectNotExists.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForObjectNotExists.d.ts new file mode 100644 index 0000000..fbea261 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/waiters/waitForObjectNotExists.d.ts @@ -0,0 +1,11 @@ +import { WaiterConfiguration, WaiterResult } from "@smithy/util-waiter"; +import { HeadObjectCommandInput } from "../commands/HeadObjectCommand"; +import { S3Client } from "../S3Client"; +export declare const waitForObjectNotExists: ( + params: WaiterConfiguration, + input: HeadObjectCommandInput +) => Promise; +export declare const waitUntilObjectNotExists: ( + params: WaiterConfiguration, + input: HeadObjectCommandInput +) => Promise; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/index.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/index.d.ts new file mode 100644 index 0000000..a139674 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/index.d.ts @@ -0,0 +1,4 @@ +export * from "./waitForBucketExists"; +export * from "./waitForBucketNotExists"; +export * from "./waitForObjectExists"; +export * from "./waitForObjectNotExists"; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForBucketExists.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForBucketExists.d.ts new file mode 100644 index 0000000..495b21b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForBucketExists.d.ts @@ -0,0 +1,14 @@ +import { type WaiterConfiguration, type WaiterResult } from "@smithy/util-waiter"; +import { type HeadBucketCommandInput } from "../commands/HeadBucketCommand"; +import type { S3Client } from "../S3Client"; +/** + * + * @deprecated Use waitUntilBucketExists instead. waitForBucketExists does not throw error in non-success cases. + */ +export declare const waitForBucketExists: (params: WaiterConfiguration, input: HeadBucketCommandInput) => Promise; +/** + * + * @param params - Waiter configuration options. + * @param input - The input to HeadBucketCommand for polling. + */ +export declare const waitUntilBucketExists: (params: WaiterConfiguration, input: HeadBucketCommandInput) => Promise; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForBucketNotExists.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForBucketNotExists.d.ts new file mode 100644 index 0000000..56aeab8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForBucketNotExists.d.ts @@ -0,0 +1,14 @@ +import { type WaiterConfiguration, type WaiterResult } from "@smithy/util-waiter"; +import { type HeadBucketCommandInput } from "../commands/HeadBucketCommand"; +import type { S3Client } from "../S3Client"; +/** + * + * @deprecated Use waitUntilBucketNotExists instead. waitForBucketNotExists does not throw error in non-success cases. + */ +export declare const waitForBucketNotExists: (params: WaiterConfiguration, input: HeadBucketCommandInput) => Promise; +/** + * + * @param params - Waiter configuration options. + * @param input - The input to HeadBucketCommand for polling. + */ +export declare const waitUntilBucketNotExists: (params: WaiterConfiguration, input: HeadBucketCommandInput) => Promise; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForObjectExists.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForObjectExists.d.ts new file mode 100644 index 0000000..9b8aba3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForObjectExists.d.ts @@ -0,0 +1,14 @@ +import { type WaiterConfiguration, type WaiterResult } from "@smithy/util-waiter"; +import { type HeadObjectCommandInput } from "../commands/HeadObjectCommand"; +import type { S3Client } from "../S3Client"; +/** + * + * @deprecated Use waitUntilObjectExists instead. waitForObjectExists does not throw error in non-success cases. + */ +export declare const waitForObjectExists: (params: WaiterConfiguration, input: HeadObjectCommandInput) => Promise; +/** + * + * @param params - Waiter configuration options. + * @param input - The input to HeadObjectCommand for polling. + */ +export declare const waitUntilObjectExists: (params: WaiterConfiguration, input: HeadObjectCommandInput) => Promise; diff --git a/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForObjectNotExists.d.ts b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForObjectNotExists.d.ts new file mode 100644 index 0000000..dcfbc7b --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/dist-types/waiters/waitForObjectNotExists.d.ts @@ -0,0 +1,14 @@ +import { type WaiterConfiguration, type WaiterResult } from "@smithy/util-waiter"; +import { type HeadObjectCommandInput } from "../commands/HeadObjectCommand"; +import type { S3Client } from "../S3Client"; +/** + * + * @deprecated Use waitUntilObjectNotExists instead. waitForObjectNotExists does not throw error in non-success cases. + */ +export declare const waitForObjectNotExists: (params: WaiterConfiguration, input: HeadObjectCommandInput) => Promise; +/** + * + * @param params - Waiter configuration options. + * @param input - The input to HeadObjectCommand for polling. + */ +export declare const waitUntilObjectNotExists: (params: WaiterConfiguration, input: HeadObjectCommandInput) => Promise; diff --git a/bff/node_modules/@aws-sdk/client-s3/package.json b/bff/node_modules/@aws-sdk/client-s3/package.json new file mode 100644 index 0000000..abf1eb2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/client-s3/package.json @@ -0,0 +1,127 @@ +{ + "name": "@aws-sdk/client-s3", + "description": "AWS SDK for JavaScript S3 Client for Node.js, Browser and React Native", + "version": "3.1021.0", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline client-s3", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "generate:client": "node ../../scripts/generate-clients/single-service --solo s3", + "test": "yarn g:vitest run", + "test:browser": "node ./test/browser-build/esbuild && yarn g:vitest run -c vitest.config.browser.mts", + "test:browser:watch": "node ./test/browser-build/esbuild && yarn g:vitest watch -c vitest.config.browser.mts", + "test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts && yarn test:browser", + "test:e2e:watch": "yarn g:vitest watch -c vitest.config.e2e.mts", + "test:index": "tsc --noEmit ./test/index-types.ts && node ./test/index-objects.spec.mjs", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "types": "./dist-types/index.d.ts", + "module": "./dist-es/index.js", + "sideEffects": false, + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-node": "^3.972.29", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.8", + "@aws-sdk/middleware-expect-continue": "^3.972.8", + "@aws-sdk/middleware-flexible-checksums": "^3.974.6", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-location-constraint": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.9", + "@aws-sdk/middleware-sdk-s3": "^3.972.27", + "@aws-sdk/middleware-ssec": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.28", + "@aws-sdk/region-config-resolver": "^3.972.10", + "@aws-sdk/signature-v4-multi-region": "^3.996.15", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.14", + "@smithy/config-resolver": "^4.4.13", + "@smithy/core": "^3.23.13", + "@smithy/eventstream-serde-browser": "^4.2.12", + "@smithy/eventstream-serde-config-resolver": "^4.3.12", + "@smithy/eventstream-serde-node": "^4.2.12", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-blob-browser": "^4.2.13", + "@smithy/hash-node": "^4.2.12", + "@smithy/hash-stream-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/md5-js": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.13", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.14", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@aws-sdk/signature-v4-crt": "3.1021.0", + "@smithy/snapshot-testing": "^2.0.4", + "@tsconfig/node20": "20.1.8", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3", + "vitest": "^4.0.17" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "browser": { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.browser" + }, + "react-native": { + "./dist-es/runtimeConfig": "./dist-es/runtimeConfig.native" + }, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-s3", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "clients/client-s3" + } +} diff --git a/bff/node_modules/@aws-sdk/core/LICENSE b/bff/node_modules/@aws-sdk/core/LICENSE new file mode 100644 index 0000000..0322cba --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/core/README.md b/bff/node_modules/@aws-sdk/core/README.md new file mode 100644 index 0000000..6056468 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/README.md @@ -0,0 +1,39 @@ +# `@aws-sdk/core` + +This package provides common or core functionality to the AWS SDK for JavaScript (v3). + +You do not need to explicitly install this package, since it will be transitively installed by AWS SDK clients. + +## `@aws-sdk/core` submodules + +Core submodules are organized for distribution via the `package.json` `exports` field. + +`exports` is supported by default by the latest Node.js, webpack, and esbuild. For react-native, it can be +enabled via instructions found at [reactnative.dev/blog](https://reactnative.dev/blog/2023/06/21/package-exports-support). + +Think of `@aws-sdk/core` as a mono-package within the monorepo. +It preserves the benefits of modularization, for example to optimize Node.js initialization speed, +while making it easier to have a consistent version of core dependencies, reducing package sprawl when +installing an SDK client. + +### Guide for submodules + +- Each `index.ts` file corresponding to the pattern `./src/submodules//index.ts` will be + published as a separate `dist-cjs` bundled submodule index using the `Inliner.js` build script. +- create a folder as `./src/submodules/` including an `index.ts` file and a `README.md` file. + - The linter will throw an error on missing submodule metadata in `package.json` and the various `tsconfig.json` files, but it will automatically fix them if possible. +- a submodule is equivalent to a standalone `@aws-sdk/` package in that importing it in Node.js will resolve a separate bundle. +- submodules may not relatively import files from other submodules. Instead, directly use the `@scope/pkg/submodule` name as the import. + - The linter will check for this and throw an error. +- To the extent possible, correctly declaring submodule metadata is validated by the linter in `@aws-sdk/core`. + The linter runs during `yarn build` and also as `yarn lint`. + +### When should I create an `@aws-sdk/core/submodule` vs. `@aws-sdk/new-package`? + +Keep in mind that the core package is installed by all AWS SDK clients. + +If the component functionality is upstream of multiple clients, it is +a good candidate for a core submodule. For example, XML serialization. + +If the component's functionality is downstream of a client, for example S3 pre-signing, +it should be a standalone package with potentially a peer or runtime dependency on an AWS SDK client. diff --git a/bff/node_modules/@aws-sdk/core/account-id-endpoint.d.ts b/bff/node_modules/@aws-sdk/core/account-id-endpoint.d.ts new file mode 100644 index 0000000..60f14d1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/account-id-endpoint.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/core/account-id-endpoint" { + export * from "@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d"; +} diff --git a/bff/node_modules/@aws-sdk/core/account-id-endpoint.js b/bff/node_modules/@aws-sdk/core/account-id-endpoint.js new file mode 100644 index 0000000..d86e100 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/account-id-endpoint.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/account-id-endpoint/index.js"); diff --git a/bff/node_modules/@aws-sdk/core/client.d.ts b/bff/node_modules/@aws-sdk/core/client.d.ts new file mode 100644 index 0000000..ce995ae --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/client.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/core/client" { + export * from "@aws-sdk/core/dist-types/submodules/client/index.d"; +} diff --git a/bff/node_modules/@aws-sdk/core/client.js b/bff/node_modules/@aws-sdk/core/client.js new file mode 100644 index 0000000..e3a644b --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/client.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/client/index.js"); diff --git a/bff/node_modules/@aws-sdk/core/dist-cjs/index.js b/bff/node_modules/@aws-sdk/core/dist-cjs/index.js new file mode 100644 index 0000000..be9a83e --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-cjs/index.js @@ -0,0 +1,2245 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var core = require('@smithy/core'); +var propertyProvider = require('@smithy/property-provider'); +var client = require('@aws-sdk/core/client'); +var signatureV4 = require('@smithy/signature-v4'); +var cbor = require('@smithy/core/cbor'); +var schema = require('@smithy/core/schema'); +var smithyClient = require('@smithy/smithy-client'); +var protocols = require('@smithy/core/protocols'); +var serde = require('@smithy/core/serde'); +var utilBase64 = require('@smithy/util-base64'); +var utilUtf8 = require('@smithy/util-utf8'); +var xmlBuilder = require('@aws-sdk/xml-builder'); + +const state = { + warningEmitted: false, +}; +const emitWarningIfUnsupportedVersion = (version) => { + if (version && !state.warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 20) { + state.warningEmitted = true; + process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will +no longer support Node.js ${version} in January 2026. + +To continue receiving updates to AWS services, bug fixes, and security +updates please upgrade to a supported Node.js LTS version. + +More information can be found at: https://a.co/c895JFp`); + } +}; + +function setCredentialFeature(credentials, feature, value) { + if (!credentials.$source) { + credentials.$source = {}; + } + credentials.$source[feature] = value; + return credentials; +} + +function setFeature(context, feature, value) { + if (!context.__aws_sdk_context) { + context.__aws_sdk_context = { + features: {}, + }; + } + else if (!context.__aws_sdk_context.features) { + context.__aws_sdk_context.features = {}; + } + context.__aws_sdk_context.features[feature] = value; +} + +function setTokenFeature(token, feature, value) { + if (!token.$source) { + token.$source = {}; + } + token.$source[feature] = value; + return token; +} + +const getDateHeader = (response) => protocolHttp.HttpResponse.isInstance(response) ? response.headers?.date ?? response.headers?.Date : undefined; + +const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset); + +const isClockSkewed = (clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 300000; + +const getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => { + const clockTimeInMs = Date.parse(clockTime); + if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) { + return clockTimeInMs - Date.now(); + } + return currentSystemClockOffset; +}; + +const throwSigningPropertyError = (name, property) => { + if (!property) { + throw new Error(`Property \`${name}\` is not resolved for AWS SDK SigV4Auth`); + } + return property; +}; +const validateSigningProperties = async (signingProperties) => { + const context = throwSigningPropertyError("context", signingProperties.context); + const config = throwSigningPropertyError("config", signingProperties.config); + const authScheme = context.endpointV2?.properties?.authSchemes?.[0]; + const signerFunction = throwSigningPropertyError("signer", config.signer); + const signer = await signerFunction(authScheme); + const signingRegion = signingProperties?.signingRegion; + const signingRegionSet = signingProperties?.signingRegionSet; + const signingName = signingProperties?.signingName; + return { + config, + signer, + signingRegion, + signingRegionSet, + signingName, + }; +}; +class AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!protocolHttp.HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const validatedProps = await validateSigningProperties(signingProperties); + const { config, signer } = validatedProps; + let { signingRegion, signingName } = validatedProps; + const handlerExecutionContext = signingProperties.context; + if (handlerExecutionContext?.authSchemes?.length ?? 0 > 1) { + const [first, second] = handlerExecutionContext.authSchemes; + if (first?.name === "sigv4a" && second?.name === "sigv4") { + signingRegion = second?.signingRegion ?? signingRegion; + signingName = second?.signingName ?? signingName; + } + } + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: signingRegion, + signingService: signingName, + }); + return signedRequest; + } + errorHandler(signingProperties) { + return (error) => { + const serverTime = error.ServerTime ?? getDateHeader(error.$response); + if (serverTime) { + const config = throwSigningPropertyError("config", signingProperties.config); + const initialSystemClockOffset = config.systemClockOffset; + config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset); + const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset; + if (clockSkewCorrected && error.$metadata) { + error.$metadata.clockSkewCorrected = true; + } + } + throw error; + }; + } + successHandler(httpResponse, signingProperties) { + const dateHeader = getDateHeader(httpResponse); + if (dateHeader) { + const config = throwSigningPropertyError("config", signingProperties.config); + config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset); + } + } +} +const AWSSDKSigV4Signer = AwsSdkSigV4Signer; + +class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!protocolHttp.HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const { config, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(signingProperties); + const configResolvedSigningRegionSet = await config.sigv4aSigningRegionSet?.(); + const multiRegionOverride = (configResolvedSigningRegionSet ?? + signingRegionSet ?? [signingRegion]).join(","); + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: multiRegionOverride, + signingService: signingName, + }); + return signedRequest; + } +} + +const getArrayForCommaSeparatedString = (str) => typeof str === "string" && str.length > 0 ? str.split(",").map((item) => item.trim()) : []; + +const getBearerTokenEnvKey = (signingName) => `AWS_BEARER_TOKEN_${signingName.replace(/[\s-]/g, "_").toUpperCase()}`; + +const NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY = "AWS_AUTH_SCHEME_PREFERENCE"; +const NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY = "auth_scheme_preference"; +const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = { + environmentVariableSelector: (env, options) => { + if (options?.signingName) { + const bearerTokenKey = getBearerTokenEnvKey(options.signingName); + if (bearerTokenKey in env) + return ["httpBearerAuth"]; + } + if (!(NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY in env)) + return undefined; + return getArrayForCommaSeparatedString(env[NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY]); + }, + configFileSelector: (profile) => { + if (!(NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY in profile)) + return undefined; + return getArrayForCommaSeparatedString(profile[NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY]); + }, + default: [], +}; + +const resolveAwsSdkSigV4AConfig = (config) => { + config.sigv4aSigningRegionSet = core.normalizeProvider(config.sigv4aSigningRegionSet); + return config; +}; +const NODE_SIGV4A_CONFIG_OPTIONS = { + environmentVariableSelector(env) { + if (env.AWS_SIGV4A_SIGNING_REGION_SET) { + return env.AWS_SIGV4A_SIGNING_REGION_SET.split(",").map((_) => _.trim()); + } + throw new propertyProvider.ProviderError("AWS_SIGV4A_SIGNING_REGION_SET not set in env.", { + tryNextLink: true, + }); + }, + configFileSelector(profile) { + if (profile.sigv4a_signing_region_set) { + return (profile.sigv4a_signing_region_set ?? "").split(",").map((_) => _.trim()); + } + throw new propertyProvider.ProviderError("sigv4a_signing_region_set not set in profile.", { + tryNextLink: true, + }); + }, + default: undefined, +}; + +const resolveAwsSdkSigV4Config = (config) => { + let inputCredentials = config.credentials; + let isUserSupplied = !!config.credentials; + let resolvedCredentials = undefined; + Object.defineProperty(config, "credentials", { + set(credentials) { + if (credentials && credentials !== inputCredentials && credentials !== resolvedCredentials) { + isUserSupplied = true; + } + inputCredentials = credentials; + const memoizedProvider = normalizeCredentialProvider(config, { + credentials: inputCredentials, + credentialDefaultProvider: config.credentialDefaultProvider, + }); + const boundProvider = bindCallerConfig(config, memoizedProvider); + if (isUserSupplied && !boundProvider.attributed) { + const isCredentialObject = typeof inputCredentials === "object" && inputCredentials !== null; + resolvedCredentials = async (options) => { + const creds = await boundProvider(options); + const attributedCreds = creds; + if (isCredentialObject && (!attributedCreds.$source || Object.keys(attributedCreds.$source).length === 0)) { + return client.setCredentialFeature(attributedCreds, "CREDENTIALS_CODE", "e"); + } + return attributedCreds; + }; + resolvedCredentials.memoized = boundProvider.memoized; + resolvedCredentials.configBound = boundProvider.configBound; + resolvedCredentials.attributed = true; + } + else { + resolvedCredentials = boundProvider; + } + }, + get() { + return resolvedCredentials; + }, + enumerable: true, + configurable: true, + }); + config.credentials = inputCredentials; + const { signingEscapePath = true, systemClockOffset = config.systemClockOffset || 0, sha256, } = config; + let signer; + if (config.signer) { + signer = core.normalizeProvider(config.signer); + } + else if (config.regionInfoProvider) { + signer = () => core.normalizeProvider(config.region)() + .then(async (region) => [ + (await config.regionInfoProvider(region, { + useFipsEndpoint: await config.useFipsEndpoint(), + useDualstackEndpoint: await config.useDualstackEndpoint(), + })) || {}, + region, + ]) + .then(([regionInfo, region]) => { + const { signingRegion, signingService } = regionInfo; + config.signingRegion = config.signingRegion || signingRegion || region; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || signatureV4.SignatureV4; + return new SignerCtor(params); + }); + } + else { + signer = async (authScheme) => { + authScheme = Object.assign({}, { + name: "sigv4", + signingName: config.signingName || config.defaultSigningName, + signingRegion: await core.normalizeProvider(config.region)(), + properties: {}, + }, authScheme); + const signingRegion = authScheme.signingRegion; + const signingService = authScheme.signingName; + config.signingRegion = config.signingRegion || signingRegion; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || signatureV4.SignatureV4; + return new SignerCtor(params); + }; + } + const resolvedConfig = Object.assign(config, { + systemClockOffset, + signingEscapePath, + signer, + }); + return resolvedConfig; +}; +const resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config; +function normalizeCredentialProvider(config, { credentials, credentialDefaultProvider, }) { + let credentialsProvider; + if (credentials) { + if (!credentials?.memoized) { + credentialsProvider = core.memoizeIdentityProvider(credentials, core.isIdentityExpired, core.doesIdentityRequireRefresh); + } + else { + credentialsProvider = credentials; + } + } + else { + if (credentialDefaultProvider) { + credentialsProvider = core.normalizeProvider(credentialDefaultProvider(Object.assign({}, config, { + parentClientConfig: config, + }))); + } + else { + credentialsProvider = async () => { + throw new Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured."); + }; + } + } + credentialsProvider.memoized = true; + return credentialsProvider; +} +function bindCallerConfig(config, credentialsProvider) { + if (credentialsProvider.configBound) { + return credentialsProvider; + } + const fn = async (options) => credentialsProvider({ ...options, callerClientConfig: config }); + fn.memoized = credentialsProvider.memoized; + fn.configBound = true; + return fn; +} + +class ProtocolLib { + queryCompat; + errorRegistry; + constructor(queryCompat = false) { + this.queryCompat = queryCompat; + } + resolveRestContentType(defaultContentType, inputSchema) { + const members = inputSchema.getMemberSchemas(); + const httpPayloadMember = Object.values(members).find((m) => { + return !!m.getMergedTraits().httpPayload; + }); + if (httpPayloadMember) { + const mediaType = httpPayloadMember.getMergedTraits().mediaType; + if (mediaType) { + return mediaType; + } + else if (httpPayloadMember.isStringSchema()) { + return "text/plain"; + } + else if (httpPayloadMember.isBlobSchema()) { + return "application/octet-stream"; + } + else { + return defaultContentType; + } + } + else if (!inputSchema.isUnitSchema()) { + const hasBody = Object.values(members).find((m) => { + const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m.getMergedTraits(); + const noPrefixHeaders = httpPrefixHeaders === void 0; + return !httpQuery && !httpQueryParams && !httpHeader && !httpLabel && noPrefixHeaders; + }); + if (hasBody) { + return defaultContentType; + } + } + } + async getErrorSchemaOrThrowBaseException(errorIdentifier, defaultNamespace, response, dataObject, metadata, getErrorSchema) { + let errorName = errorIdentifier; + if (errorIdentifier.includes("#")) { + [, errorName] = errorIdentifier.split("#"); + } + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode < 500 ? "client" : "server", + }; + if (!this.errorRegistry) { + throw new Error("@aws-sdk/core/protocols - error handler not initialized."); + } + try { + const errorSchema = getErrorSchema?.(this.errorRegistry, errorName) ?? + this.errorRegistry.getSchema(errorIdentifier); + return { errorSchema, errorMetadata }; + } + catch (e) { + dataObject.message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const synthetic = this.errorRegistry; + const baseExceptionSchema = synthetic.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = synthetic.getErrorCtor(baseExceptionSchema) ?? Error; + throw this.decorateServiceException(Object.assign(new ErrorCtor({ name: errorName }), errorMetadata), dataObject); + } + const d = dataObject; + const message = d?.message ?? d?.Message ?? d?.Error?.Message ?? d?.Error?.message; + throw this.decorateServiceException(Object.assign(new Error(message), { + name: errorName, + }, errorMetadata), dataObject); + } + } + compose(composite, errorIdentifier, defaultNamespace) { + let namespace = defaultNamespace; + if (errorIdentifier.includes("#")) { + [namespace] = errorIdentifier.split("#"); + } + const staticRegistry = schema.TypeRegistry.for(namespace); + const defaultSyntheticRegistry = schema.TypeRegistry.for("smithy.ts.sdk.synthetic." + defaultNamespace); + composite.copyFrom(staticRegistry); + composite.copyFrom(defaultSyntheticRegistry); + this.errorRegistry = composite; + } + decorateServiceException(exception, additions = {}) { + if (this.queryCompat) { + const msg = exception.Message ?? additions.Message; + const error = smithyClient.decorateServiceException(exception, additions); + if (msg) { + error.message = msg; + } + error.Error = { + ...error.Error, + Type: error.Error?.Type, + Code: error.Error?.Code, + Message: error.Error?.message ?? error.Error?.Message ?? msg, + }; + const reqId = error.$metadata.requestId; + if (reqId) { + error.RequestId = reqId; + } + return error; + } + return smithyClient.decorateServiceException(exception, additions); + } + setQueryCompatError(output, response) { + const queryErrorHeader = response.headers?.["x-amzn-query-error"]; + if (output !== undefined && queryErrorHeader != null) { + const [Code, Type] = queryErrorHeader.split(";"); + const entries = Object.entries(output); + const Error = { + Code, + Type, + }; + Object.assign(output, Error); + for (const [k, v] of entries) { + Error[k === "message" ? "Message" : k] = v; + } + delete Error.__type; + output.Error = Error; + } + } + queryCompatOutput(queryCompatErrorData, errorData) { + if (queryCompatErrorData.Error) { + errorData.Error = queryCompatErrorData.Error; + } + if (queryCompatErrorData.Type) { + errorData.Type = queryCompatErrorData.Type; + } + if (queryCompatErrorData.Code) { + errorData.Code = queryCompatErrorData.Code; + } + } + findQueryCompatibleError(registry, errorName) { + try { + return registry.getSchema(errorName); + } + catch (e) { + return registry.find((schema$1) => schema.NormalizedSchema.of(schema$1).getMergedTraits().awsQueryError?.[0] === errorName); + } + } +} + +class AwsSmithyRpcV2CborProtocol extends cbor.SmithyRpcV2CborProtocol { + awsQueryCompatible; + mixin; + constructor({ defaultNamespace, errorTypeRegistries, awsQueryCompatible, }) { + super({ defaultNamespace, errorTypeRegistries }); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + return request; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorName = (() => { + const compatHeader = response.headers["x-amzn-query-error"]; + if (compatHeader && this.awsQueryCompatible) { + return compatHeader.split(";")[0]; + } + return cbor.loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + })(); + this.mixin.compose(this.compositeErrorRegistry, errorName, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorName, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} + +const _toStr = (val) => { + if (val == null) { + return val; + } + if (typeof val === "number" || typeof val === "bigint") { + const warning = new Error(`Received number ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + if (typeof val === "boolean") { + const warning = new Error(`Received boolean ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + return val; +}; +const _toBool = (val) => { + if (val == null) { + return val; + } + if (typeof val === "string") { + const lowercase = val.toLowerCase(); + if (val !== "" && lowercase !== "false" && lowercase !== "true") { + const warning = new Error(`Received string "${val}" where a boolean was expected.`); + warning.name = "Warning"; + console.warn(warning); + } + return val !== "" && lowercase !== "false"; + } + return val; +}; +const _toNum = (val) => { + if (val == null) { + return val; + } + if (typeof val === "string") { + const num = Number(val); + if (num.toString() !== val) { + const warning = new Error(`Received string "${val}" where a number was expected.`); + warning.name = "Warning"; + console.warn(warning); + return val; + } + return num; + } + return val; +}; + +class SerdeContextConfig { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} + +class UnionSerde { + from; + to; + keys; + constructor(from, to) { + this.from = from; + this.to = to; + this.keys = new Set(Object.keys(this.from).filter((k) => k !== "__type")); + } + mark(key) { + this.keys.delete(key); + } + hasUnknown() { + return this.keys.size === 1 && Object.keys(this.to).length === 0; + } + writeUnknown() { + if (this.hasUnknown()) { + const k = this.keys.values().next().value; + const v = this.from[k]; + this.to.$unknown = [k, v]; + } + } +} + +function jsonReviver(key, value, context) { + if (context?.source) { + const numericString = context.source; + if (typeof value === "number") { + if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER || numericString !== String(value)) { + const isFractional = numericString.includes("."); + if (isFractional) { + return new serde.NumericValue(numericString, "bigDecimal"); + } + else { + return BigInt(numericString); + } + } + } + } + return value; +} + +const collectBodyString = (streamBody, context) => smithyClient.collectBody(streamBody, context).then((body) => (context?.utf8Encoder ?? utilUtf8.toUtf8)(body)); + +const parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + try { + return JSON.parse(encoded); + } + catch (e) { + if (e?.name === "SyntaxError") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + } + return {}; +}); +const parseJsonErrorBody = async (errorBody, context) => { + const value = await parseJsonBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +const loadRestJsonErrorCode = (output, data) => { + const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()); + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + const headerKey = findKey(output.headers, "x-amzn-errortype"); + if (headerKey !== undefined) { + return sanitizeErrorCode(output.headers[headerKey]); + } + if (data && typeof data === "object") { + const codeKey = findKey(data, "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + } +}; + +class JsonShapeDeserializer extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + async read(schema, data) { + return this._read(schema, typeof data === "string" ? JSON.parse(data, jsonReviver) : await parseJsonBody(data, this.serdeContext)); + } + readObject(schema, data) { + return this._read(schema, data); + } + _read(schema$1, value) { + const isObject = value !== null && typeof value === "object"; + const ns = schema.NormalizedSchema.of(schema$1); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const union = ns.isUnionSchema(); + const out = {}; + let nameMap = void 0; + const { jsonName } = this.settings; + if (jsonName) { + nameMap = {}; + } + let unionSerde; + if (union) { + unionSerde = new UnionSerde(record, out); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + let fromKey = memberName; + if (jsonName) { + fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey; + nameMap[fromKey] = memberName; + } + if (union) { + unionSerde.mark(fromKey); + } + if (record[fromKey] != null) { + out[memberName] = this._read(memberSchema, record[fromKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const t = jsonName ? nameMap[k] ?? k : k; + if (!(t in out)) { + out[t] = v; + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + for (const item of value) { + out.push(this._read(listMember, item)); + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + for (const [_k, _v] of Object.entries(value)) { + out[_k] = this._read(mapMember, _v); + } + return out; + } + } + if (ns.isBlobSchema() && typeof value === "string") { + return utilBase64.fromBase64(value); + } + const mediaType = ns.getMergedTraits().mediaType; + if (ns.isStringSchema() && typeof value === "string" && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return serde.LazyJsonString.from(value); + } + return value; + } + if (ns.isTimestampSchema() && value != null) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return serde.parseRfc3339DateTimeWithOffset(value); + case 6: + return serde.parseRfc7231DateTime(value); + case 7: + return serde.parseEpochTimestamp(value); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", value); + return new Date(value); + } + } + if (ns.isBigIntegerSchema() && (typeof value === "number" || typeof value === "string")) { + return BigInt(value); + } + if (ns.isBigDecimalSchema() && value != undefined) { + if (value instanceof serde.NumericValue) { + return value; + } + const untyped = value; + if (untyped.type === "bigDecimal" && "string" in untyped) { + return new serde.NumericValue(untyped.string, untyped.type); + } + return new serde.NumericValue(String(value), "bigDecimal"); + } + if (ns.isNumericSchema() && typeof value === "string") { + switch (value) { + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + case "NaN": + return NaN; + } + return value; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof serde.NumericValue) { + out[k] = v; + } + else { + out[k] = this._read(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} + +const NUMERIC_CONTROL_CHAR = String.fromCharCode(925); +class JsonReplacer { + values = new Map(); + counter = 0; + stage = 0; + createReplacer() { + if (this.stage === 1) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer already created."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 1; + return (key, value) => { + if (value instanceof serde.NumericValue) { + const v = `${NUMERIC_CONTROL_CHAR + "nv" + this.counter++}_` + value.string; + this.values.set(`"${v}"`, value.string); + return v; + } + if (typeof value === "bigint") { + const s = value.toString(); + const v = `${NUMERIC_CONTROL_CHAR + "b" + this.counter++}_` + s; + this.values.set(`"${v}"`, s); + return v; + } + return value; + }; + } + replaceInJson(json) { + if (this.stage === 0) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer not created yet."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 2; + if (this.counter === 0) { + return json; + } + for (const [key, value] of this.values) { + json = json.replace(key, value); + } + return json; + } +} + +class JsonShapeSerializer extends SerdeContextConfig { + settings; + buffer; + useReplacer = false; + rootSchema; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + this.rootSchema = schema.NormalizedSchema.of(schema$1); + this.buffer = this._write(this.rootSchema, value); + } + writeDiscriminatedDocument(schema$1, value) { + this.write(schema$1, value); + if (typeof this.buffer === "object") { + this.buffer.__type = schema.NormalizedSchema.of(schema$1).getName(true); + } + } + flush() { + const { rootSchema, useReplacer } = this; + this.rootSchema = undefined; + this.useReplacer = false; + if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) { + if (!useReplacer) { + return JSON.stringify(this.buffer); + } + const replacer = new JsonReplacer(); + return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0)); + } + return this.buffer; + } + _write(schema$1, value, container) { + const isObject = value !== null && typeof value === "object"; + const ns = schema.NormalizedSchema.of(schema$1); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const out = {}; + const { jsonName } = this.settings; + let nameMap = void 0; + if (jsonName) { + nameMap = {}; + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const serializableValue = this._write(memberSchema, record[memberName], ns); + if (serializableValue !== undefined) { + let targetKey = memberName; + if (jsonName) { + targetKey = memberSchema.getMergedTraits().jsonName ?? memberName; + nameMap[memberName] = targetKey; + } + out[targetKey] = serializableValue; + } + } + if (ns.isUnionSchema() && Object.keys(out).length === 0) { + const { $unknown } = record; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + out[k] = this._write(15, v); + } + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const targetKey = jsonName ? nameMap[k] ?? k : k; + if (!(targetKey in out)) { + out[targetKey] = this._write(15, v); + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + const sparse = !!ns.getMergedTraits().sparse; + for (const item of value) { + if (sparse || item != null) { + out.push(this._write(listMember, item)); + } + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + const sparse = !!ns.getMergedTraits().sparse; + for (const [_k, _v] of Object.entries(value)) { + if (sparse || _v != null) { + out[_k] = this._write(mapMember, _v); + } + } + return out; + } + if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return value.toISOString().replace(".000Z", "Z"); + case 6: + return serde.dateToUtcString(value); + case 7: + return value.getTime() / 1000; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + return value.getTime() / 1000; + } + } + if (value instanceof serde.NumericValue) { + this.useReplacer = true; + } + } + if (value === null && container?.isStructSchema()) { + return void 0; + } + if (ns.isStringSchema()) { + if (typeof value === "undefined" && ns.isIdempotencyToken()) { + return serde.generateIdempotencyToken(); + } + const mediaType = ns.getMergedTraits().mediaType; + if (value != null && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return serde.LazyJsonString.from(value); + } + } + return value; + } + if (typeof value === "number" && ns.isNumericSchema()) { + if (Math.abs(value) === Infinity || isNaN(value)) { + return String(value); + } + return value; + } + if (typeof value === "string" && ns.isBlobSchema()) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + if (typeof value === "bigint") { + this.useReplacer = true; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof serde.NumericValue) { + this.useReplacer = true; + out[k] = v; + } + else { + out[k] = this._write(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} + +class JsonCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new JsonShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new JsonShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} + +class AwsJsonRpcProtocol extends protocols.RpcProtocol { + serializer; + deserializer; + serviceTarget; + codec; + mixin; + awsQueryCompatible; + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + errorTypeRegistries, + }); + this.serviceTarget = serviceTarget; + this.codec = + jsonCodec ?? + new JsonCodec({ + timestampFormat: { + useTrait: true, + default: 7, + }, + jsonName: false, + }); + this.serializer = this.codec.createSerializer(); + this.deserializer = this.codec.createDeserializer(); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-amz-json-${this.getJsonRpcVersion()}`, + "x-amz-target": `${this.serviceTarget}.${operationSchema.name}`, + }); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + if (schema.deref(operationSchema.input) === "unit" || !request.body) { + request.body = "{}"; + } + return request; + } + getPayloadCodec() { + return this.codec; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.codec.createDeserializer().readObject(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} + +class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + errorTypeRegistries, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_0"; + } + getJsonRpcVersion() { + return "1.0"; + } + getDefaultContentType() { + return "application/x-amz-json-1.0"; + } +} + +class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + errorTypeRegistries, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_1"; + } + getJsonRpcVersion() { + return "1.1"; + } + getDefaultContentType() { + return "application/x-amz-json-1.1"; + } +} + +class AwsRestJsonProtocol extends protocols.HttpBindingProtocol { + serializer; + deserializer; + codec; + mixin = new ProtocolLib(); + constructor({ defaultNamespace, errorTypeRegistries, }) { + super({ + defaultNamespace, + errorTypeRegistries, + }); + const settings = { + timestampFormat: { + useTrait: true, + default: 7, + }, + httpBindings: true, + jsonName: true, + }; + this.codec = new JsonCodec(settings); + this.serializer = new protocols.HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new protocols.HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getShapeId() { + return "aws.protocols#restJson1"; + } + getPayloadCodec() { + return this.codec; + } + setSerdeContext(serdeContext) { + this.codec.setSerdeContext(serdeContext); + super.setSerdeContext(serdeContext); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = schema.NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (request.body == null && request.headers["content-type"] === this.getDefaultContentType()) { + request.body = "{}"; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const output = await super.deserializeResponse(operationSchema, context, response); + const outputSchema = schema.NormalizedSchema.of(operationSchema.output); + for (const [name, member] of outputSchema.structIterator()) { + if (member.getMemberTraits().httpPayload && !(name in output)) { + output[name] = null; + } + } + return output; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().jsonName ?? name; + output[name] = this.codec.createDeserializer().readObject(member, dataObject[target]); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/json"; + } +} + +const awsExpectUnion = (value) => { + if (value == null) { + return undefined; + } + if (typeof value === "object" && "__type" in value) { + delete value.__type; + } + return smithyClient.expectUnion(value); +}; + +class XmlShapeDeserializer extends SerdeContextConfig { + settings; + stringDeserializer; + constructor(settings) { + super(); + this.settings = settings; + this.stringDeserializer = new protocols.FromStringShapeDeserializer(settings); + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.stringDeserializer.setSerdeContext(serdeContext); + } + read(schema$1, bytes, key) { + const ns = schema.NormalizedSchema.of(schema$1); + const memberSchemas = ns.getMemberSchemas(); + const isEventPayload = ns.isStructSchema() && + ns.isMemberSchema() && + !!Object.values(memberSchemas).find((memberNs) => { + return !!memberNs.getMemberTraits().eventPayload; + }); + if (isEventPayload) { + const output = {}; + const memberName = Object.keys(memberSchemas)[0]; + const eventMemberSchema = memberSchemas[memberName]; + if (eventMemberSchema.isBlobSchema()) { + output[memberName] = bytes; + } + else { + output[memberName] = this.read(memberSchemas[memberName], bytes); + } + return output; + } + const xmlString = (this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8)(bytes); + const parsedObject = this.parseXml(xmlString); + return this.readSchema(schema$1, key ? parsedObject[key] : parsedObject); + } + readSchema(_schema, value) { + const ns = schema.NormalizedSchema.of(_schema); + if (ns.isUnitSchema()) { + return; + } + const traits = ns.getMergedTraits(); + if (ns.isListSchema() && !Array.isArray(value)) { + return this.readSchema(ns, [value]); + } + if (value == null) { + return value; + } + if (typeof value === "object") { + const flat = !!traits.xmlFlattened; + if (ns.isListSchema()) { + const listValue = ns.getValueSchema(); + const buffer = []; + const sourceKey = listValue.getMergedTraits().xmlName ?? "member"; + const source = flat ? value : (value[0] ?? value)[sourceKey]; + if (source == null) { + return buffer; + } + const sourceArray = Array.isArray(source) ? source : [source]; + for (const v of sourceArray) { + buffer.push(this.readSchema(listValue, v)); + } + return buffer; + } + const buffer = {}; + if (ns.isMapSchema()) { + const keyNs = ns.getKeySchema(); + const memberNs = ns.getValueSchema(); + let entries; + if (flat) { + entries = Array.isArray(value) ? value : [value]; + } + else { + entries = Array.isArray(value.entry) ? value.entry : [value.entry]; + } + const keyProperty = keyNs.getMergedTraits().xmlName ?? "key"; + const valueProperty = memberNs.getMergedTraits().xmlName ?? "value"; + for (const entry of entries) { + const key = entry[keyProperty]; + const value = entry[valueProperty]; + buffer[key] = this.readSchema(memberNs, value); + } + return buffer; + } + if (ns.isStructSchema()) { + const union = ns.isUnionSchema(); + let unionSerde; + if (union) { + unionSerde = new UnionSerde(value, buffer); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMergedTraits(); + const xmlObjectKey = !memberTraits.httpPayload + ? memberSchema.getMemberTraits().xmlName ?? memberName + : memberTraits.xmlName ?? memberSchema.getName(); + if (union) { + unionSerde.mark(xmlObjectKey); + } + if (value[xmlObjectKey] != null) { + buffer[memberName] = this.readSchema(memberSchema, value[xmlObjectKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + return buffer; + } + if (ns.isDocumentSchema()) { + return value; + } + throw new Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${ns.getName(true)}`); + } + if (ns.isListSchema()) { + return []; + } + if (ns.isMapSchema() || ns.isStructSchema()) { + return {}; + } + return this.stringDeserializer.read(ns, value); + } + parseXml(xml) { + if (xml.length) { + let parsedObj; + try { + parsedObj = xmlBuilder.parseXML(xml); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: xml, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return smithyClient.getValueFromTextNode(parsedObjToReturn); + } + return {}; + } +} + +class QueryShapeSerializer extends SerdeContextConfig { + settings; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value, prefix = "") { + if (this.buffer === undefined) { + this.buffer = ""; + } + const ns = schema.NormalizedSchema.of(schema$1); + if (prefix && !prefix.endsWith(".")) { + prefix += "."; + } + if (ns.isBlobSchema()) { + if (typeof value === "string" || value instanceof Uint8Array) { + this.writeKey(prefix); + this.writeValue((this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value)); + } + } + else if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isStringSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + else if (ns.isIdempotencyToken()) { + this.writeKey(prefix); + this.writeValue(serde.generateIdempotencyToken()); + } + } + else if (ns.isBigIntegerSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isBigDecimalSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(value instanceof serde.NumericValue ? value.string : String(value)); + } + } + else if (ns.isTimestampSchema()) { + if (value instanceof Date) { + this.writeKey(prefix); + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.writeValue(value.toISOString().replace(".000Z", "Z")); + break; + case 6: + this.writeValue(smithyClient.dateToUtcString(value)); + break; + case 7: + this.writeValue(String(value.getTime() / 1000)); + break; + } + } + } + else if (ns.isDocumentSchema()) { + if (Array.isArray(value)) { + this.write(64 | 15, value, prefix); + } + else if (value instanceof Date) { + this.write(4, value, prefix); + } + else if (value instanceof Uint8Array) { + this.write(21, value, prefix); + } + else if (value && typeof value === "object") { + this.write(128 | 15, value, prefix); + } + else { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isListSchema()) { + if (Array.isArray(value)) { + if (value.length === 0) { + if (this.settings.serializeEmptyLists) { + this.writeKey(prefix); + this.writeValue(""); + } + } + else { + const member = ns.getValueSchema(); + const flat = this.settings.flattenLists || ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const item of value) { + if (item == null) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey("member", traits.xmlName, traits.ec2QueryName); + const key = flat ? `${prefix}${i}` : `${prefix}${suffix}.${i}`; + this.write(member, item, key); + ++i; + } + } + } + } + else if (ns.isMapSchema()) { + if (value && typeof value === "object") { + const keySchema = ns.getKeySchema(); + const memberSchema = ns.getValueSchema(); + const flat = ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const [k, v] of Object.entries(value)) { + if (v == null) { + continue; + } + const keyTraits = keySchema.getMergedTraits(); + const keySuffix = this.getKey("key", keyTraits.xmlName, keyTraits.ec2QueryName); + const key = flat ? `${prefix}${i}.${keySuffix}` : `${prefix}entry.${i}.${keySuffix}`; + const valTraits = memberSchema.getMergedTraits(); + const valueSuffix = this.getKey("value", valTraits.xmlName, valTraits.ec2QueryName); + const valueKey = flat ? `${prefix}${i}.${valueSuffix}` : `${prefix}entry.${i}.${valueSuffix}`; + this.write(keySchema, k, key); + this.write(memberSchema, v, valueKey); + ++i; + } + } + } + else if (ns.isStructSchema()) { + if (value && typeof value === "object") { + let didWriteMember = false; + for (const [memberName, member] of ns.structIterator()) { + if (value[memberName] == null && !member.isIdempotencyToken()) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey(memberName, traits.xmlName, traits.ec2QueryName, "struct"); + const key = `${prefix}${suffix}`; + this.write(member, value[memberName], key); + didWriteMember = true; + } + if (!didWriteMember && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + const key = `${prefix}${k}`; + this.write(15, v, key); + } + } + } + } + else if (ns.isUnitSchema()) ; + else { + throw new Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${ns.getName(true)}`); + } + } + flush() { + if (this.buffer === undefined) { + throw new Error("@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer."); + } + const str = this.buffer; + delete this.buffer; + return str; + } + getKey(memberName, xmlName, ec2QueryName, keySource) { + const { ec2, capitalizeKeys } = this.settings; + if (ec2 && ec2QueryName) { + return ec2QueryName; + } + const key = xmlName ?? memberName; + if (capitalizeKeys && keySource === "struct") { + return key[0].toUpperCase() + key.slice(1); + } + return key; + } + writeKey(key) { + if (key.endsWith(".")) { + key = key.slice(0, key.length - 1); + } + this.buffer += `&${protocols.extendedEncodeURIComponent(key)}=`; + } + writeValue(value) { + this.buffer += protocols.extendedEncodeURIComponent(value); + } +} + +class AwsQueryProtocol extends protocols.RpcProtocol { + options; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super({ + defaultNamespace: options.defaultNamespace, + errorTypeRegistries: options.errorTypeRegistries, + }); + this.options = options; + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: false, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + serializeEmptyLists: true, + }; + this.serializer = new QueryShapeSerializer(settings); + this.deserializer = new XmlShapeDeserializer(settings); + } + getShapeId() { + return "aws.protocols#awsQuery"; + } + setSerdeContext(serdeContext) { + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + } + getPayloadCodec() { + throw new Error("AWSQuery protocol has no payload codec."); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-www-form-urlencoded`, + }); + if (schema.deref(operationSchema.input) === "unit" || !request.body) { + request.body = ""; + } + const action = operationSchema.name.split("#")[1] ?? operationSchema.name; + request.body = `Action=${action}&Version=${this.options.version}` + request.body; + if (request.body.endsWith("&")) { + request.body = request.body.slice(-1); + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await protocols.collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const shortName = operationSchema.name.split("#")[1] ?? operationSchema.name; + const awsQueryResultKey = ns.isStructSchema() && this.useNestedResult() ? shortName + "Result" : undefined; + const bytes = await protocols.collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes, awsQueryResultKey)); + } + const output = { + $metadata: this.deserializeMetadata(response), + ...dataObject, + }; + return output; + } + useNestedResult() { + return true; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = this.loadQueryErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const errorData = this.loadQueryError(dataObject) ?? {}; + const message = this.loadQueryErrorMessage(dataObject); + errorData.message = message; + errorData.Error = { + Type: errorData.Type, + Code: errorData.Code, + Message: message, + }; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, errorData, metadata, this.mixin.findQueryCompatibleError); + const ns = schema.NormalizedSchema.of(errorSchema); + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = { + Type: errorData.Error.Type, + Code: errorData.Error.Code, + Error: errorData.Error, + }; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = errorData[target] ?? dataObject[target]; + output[name] = this.deserializer.readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + loadQueryErrorCode(output, data) { + const code = (data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error)?.Code; + if (code !== undefined) { + return code; + } + if (output.statusCode == 404) { + return "NotFound"; + } + } + loadQueryError(data) { + return data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error; + } + loadQueryErrorMessage(data) { + const errorData = this.loadQueryError(data); + return errorData?.message ?? errorData?.Message ?? data.message ?? data.Message ?? "Unknown"; + } + getDefaultContentType() { + return "application/x-www-form-urlencoded"; + } +} + +class AwsEc2QueryProtocol extends AwsQueryProtocol { + options; + constructor(options) { + super(options); + this.options = options; + const ec2Settings = { + capitalizeKeys: true, + flattenLists: true, + serializeEmptyLists: false, + ec2: true, + }; + Object.assign(this.serializer.settings, ec2Settings); + } + getShapeId() { + return "aws.protocols#ec2Query"; + } + useNestedResult() { + return false; + } +} + +const parseXmlBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + let parsedObj; + try { + parsedObj = xmlBuilder.parseXML(encoded); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return smithyClient.getValueFromTextNode(parsedObjToReturn); + } + return {}; +}); +const parseXmlErrorBody = async (errorBody, context) => { + const value = await parseXmlBody(errorBody, context); + if (value.Error) { + value.Error.message = value.Error.message ?? value.Error.Message; + } + return value; +}; +const loadRestXmlErrorCode = (output, data) => { + if (data?.Error?.Code !== undefined) { + return data.Error.Code; + } + if (data?.Code !== undefined) { + return data.Code; + } + if (output.statusCode == 404) { + return "NotFound"; + } +}; + +class XmlShapeSerializer extends SerdeContextConfig { + settings; + stringBuffer; + byteBuffer; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + const ns = schema.NormalizedSchema.of(schema$1); + if (ns.isStringSchema() && typeof value === "string") { + this.stringBuffer = value; + } + else if (ns.isBlobSchema()) { + this.byteBuffer = + "byteLength" in value + ? value + : (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(value); + } + else { + this.buffer = this.writeStruct(ns, value, undefined); + const traits = ns.getMergedTraits(); + if (traits.httpPayload && !traits.xmlName) { + this.buffer.withName(ns.getName()); + } + } + } + flush() { + if (this.byteBuffer !== undefined) { + const bytes = this.byteBuffer; + delete this.byteBuffer; + return bytes; + } + if (this.stringBuffer !== undefined) { + const str = this.stringBuffer; + delete this.stringBuffer; + return str; + } + const buffer = this.buffer; + if (this.settings.xmlNamespace) { + if (!buffer?.attributes?.["xmlns"]) { + buffer.addAttribute("xmlns", this.settings.xmlNamespace); + } + } + delete this.buffer; + return buffer.toString(); + } + writeStruct(ns, value, parentXmlns) { + const traits = ns.getMergedTraits(); + const name = ns.isMemberSchema() && !traits.httpPayload + ? ns.getMemberTraits().xmlName ?? ns.getMemberName() + : traits.xmlName ?? ns.getName(); + if (!name || !ns.isStructSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write struct with empty name or non-struct, schema=${ns.getName(true)}.`); + } + const structXmlNode = xmlBuilder.XmlNode.of(name); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + for (const [memberName, memberSchema] of ns.structIterator()) { + const val = value[memberName]; + if (val != null || memberSchema.isIdempotencyToken()) { + if (memberSchema.getMergedTraits().xmlAttribute) { + structXmlNode.addAttribute(memberSchema.getMergedTraits().xmlName ?? memberName, this.writeSimple(memberSchema, val)); + continue; + } + if (memberSchema.isListSchema()) { + this.writeList(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isMapSchema()) { + this.writeMap(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isStructSchema()) { + structXmlNode.addChildNode(this.writeStruct(memberSchema, val, xmlns)); + } + else { + const memberNode = xmlBuilder.XmlNode.of(memberSchema.getMergedTraits().xmlName ?? memberSchema.getMemberName()); + this.writeSimpleInto(memberSchema, val, memberNode, xmlns); + structXmlNode.addChildNode(memberNode); + } + } + } + const { $unknown } = value; + if ($unknown && ns.isUnionSchema() && Array.isArray($unknown) && Object.keys(value).length === 1) { + const [k, v] = $unknown; + const node = xmlBuilder.XmlNode.of(k); + if (typeof v !== "string") { + if (value instanceof xmlBuilder.XmlNode || value instanceof xmlBuilder.XmlText) { + structXmlNode.addChildNode(value); + } + else { + throw new Error(`@aws-sdk - $unknown union member in XML requires ` + + `value of type string, @aws-sdk/xml-builder::XmlNode or XmlText.`); + } + } + this.writeSimpleInto(0, v, node, xmlns); + structXmlNode.addChildNode(node); + } + if (xmlns) { + structXmlNode.addAttribute(xmlnsAttr, xmlns); + } + return structXmlNode; + } + writeList(listMember, array, container, parentXmlns) { + if (!listMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member list: ${listMember.getName(true)}`); + } + const listTraits = listMember.getMergedTraits(); + const listValueSchema = listMember.getValueSchema(); + const listValueTraits = listValueSchema.getMergedTraits(); + const sparse = !!listValueTraits.sparse; + const flat = !!listTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(listMember, parentXmlns); + const writeItem = (container, value) => { + if (listValueSchema.isListSchema()) { + this.writeList(listValueSchema, Array.isArray(value) ? value : [value], container, xmlns); + } + else if (listValueSchema.isMapSchema()) { + this.writeMap(listValueSchema, value, container, xmlns); + } + else if (listValueSchema.isStructSchema()) { + const struct = this.writeStruct(listValueSchema, value, xmlns); + container.addChildNode(struct.withName(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member")); + } + else { + const listItemNode = xmlBuilder.XmlNode.of(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member"); + this.writeSimpleInto(listValueSchema, value, listItemNode, xmlns); + container.addChildNode(listItemNode); + } + }; + if (flat) { + for (const value of array) { + if (sparse || value != null) { + writeItem(container, value); + } + } + } + else { + const listNode = xmlBuilder.XmlNode.of(listTraits.xmlName ?? listMember.getMemberName()); + if (xmlns) { + listNode.addAttribute(xmlnsAttr, xmlns); + } + for (const value of array) { + if (sparse || value != null) { + writeItem(listNode, value); + } + } + container.addChildNode(listNode); + } + } + writeMap(mapMember, map, container, parentXmlns, containerIsMap = false) { + if (!mapMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member map: ${mapMember.getName(true)}`); + } + const mapTraits = mapMember.getMergedTraits(); + const mapKeySchema = mapMember.getKeySchema(); + const mapKeyTraits = mapKeySchema.getMergedTraits(); + const keyTag = mapKeyTraits.xmlName ?? "key"; + const mapValueSchema = mapMember.getValueSchema(); + const mapValueTraits = mapValueSchema.getMergedTraits(); + const valueTag = mapValueTraits.xmlName ?? "value"; + const sparse = !!mapValueTraits.sparse; + const flat = !!mapTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(mapMember, parentXmlns); + const addKeyValue = (entry, key, val) => { + const keyNode = xmlBuilder.XmlNode.of(keyTag, key); + const [keyXmlnsAttr, keyXmlns] = this.getXmlnsAttribute(mapKeySchema, xmlns); + if (keyXmlns) { + keyNode.addAttribute(keyXmlnsAttr, keyXmlns); + } + entry.addChildNode(keyNode); + let valueNode = xmlBuilder.XmlNode.of(valueTag); + if (mapValueSchema.isListSchema()) { + this.writeList(mapValueSchema, val, valueNode, xmlns); + } + else if (mapValueSchema.isMapSchema()) { + this.writeMap(mapValueSchema, val, valueNode, xmlns, true); + } + else if (mapValueSchema.isStructSchema()) { + valueNode = this.writeStruct(mapValueSchema, val, xmlns); + } + else { + this.writeSimpleInto(mapValueSchema, val, valueNode, xmlns); + } + entry.addChildNode(valueNode); + }; + if (flat) { + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = xmlBuilder.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + addKeyValue(entry, key, val); + container.addChildNode(entry); + } + } + } + else { + let mapNode; + if (!containerIsMap) { + mapNode = xmlBuilder.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + if (xmlns) { + mapNode.addAttribute(xmlnsAttr, xmlns); + } + container.addChildNode(mapNode); + } + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = xmlBuilder.XmlNode.of("entry"); + addKeyValue(entry, key, val); + (containerIsMap ? container : mapNode).addChildNode(entry); + } + } + } + } + writeSimple(_schema, value) { + if (null === value) { + throw new Error("@aws-sdk/core/protocols - (XML serializer) cannot write null value."); + } + const ns = schema.NormalizedSchema.of(_schema); + let nodeContents = null; + if (value && typeof value === "object") { + if (ns.isBlobSchema()) { + nodeContents = (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + else if (ns.isTimestampSchema() && value instanceof Date) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + nodeContents = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + nodeContents = smithyClient.dateToUtcString(value); + break; + case 7: + nodeContents = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using http date", value); + nodeContents = smithyClient.dateToUtcString(value); + break; + } + } + else if (ns.isBigDecimalSchema() && value) { + if (value instanceof serde.NumericValue) { + return value.string; + } + return String(value); + } + else if (ns.isMapSchema() || ns.isListSchema()) { + throw new Error("@aws-sdk/core/protocols - xml serializer, cannot call _write() on List/Map schema, call writeList or writeMap() instead."); + } + else { + throw new Error(`@aws-sdk/core/protocols - xml serializer, unhandled schema type for object value and schema: ${ns.getName(true)}`); + } + } + if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isBigIntegerSchema() || ns.isBigDecimalSchema()) { + nodeContents = String(value); + } + if (ns.isStringSchema()) { + if (value === undefined && ns.isIdempotencyToken()) { + nodeContents = serde.generateIdempotencyToken(); + } + else { + nodeContents = String(value); + } + } + if (nodeContents === null) { + throw new Error(`Unhandled schema-value pair ${ns.getName(true)}=${value}`); + } + return nodeContents; + } + writeSimpleInto(_schema, value, into, parentXmlns) { + const nodeContents = this.writeSimple(_schema, value); + const ns = schema.NormalizedSchema.of(_schema); + const content = new xmlBuilder.XmlText(nodeContents); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + if (xmlns) { + into.addAttribute(xmlnsAttr, xmlns); + } + into.addChildNode(content); + } + getXmlnsAttribute(ns, parentXmlns) { + const traits = ns.getMergedTraits(); + const [prefix, xmlns] = traits.xmlNamespace ?? []; + if (xmlns && xmlns !== parentXmlns) { + return [prefix ? `xmlns:${prefix}` : "xmlns", xmlns]; + } + return [void 0, void 0]; + } +} + +class XmlCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new XmlShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new XmlShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} + +class AwsRestXmlProtocol extends protocols.HttpBindingProtocol { + codec; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super(options); + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: true, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + }; + this.codec = new XmlCodec(settings); + this.serializer = new protocols.HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new protocols.HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + this.compositeErrorRegistry; + } + getPayloadCodec() { + return this.codec; + } + getShapeId() { + return "aws.protocols#restXml"; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = schema.NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (typeof request.body === "string" && + request.headers["content-type"] === this.getDefaultContentType() && + !request.body.startsWith("' + request.body; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestXmlErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + if (dataObject.Error && typeof dataObject.Error === "object") { + for (const key of Object.keys(dataObject.Error)) { + dataObject[key] = dataObject.Error[key]; + if (key.toLowerCase() === "message") { + dataObject.message = dataObject.Error[key]; + } + } + } + if (dataObject.RequestId && !metadata.requestId) { + metadata.requestId = dataObject.RequestId; + } + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.Error?.message ?? + dataObject.Error?.Message ?? + dataObject.message ?? + dataObject.Message ?? + "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = dataObject.Error?.[target] ?? dataObject[target]; + output[name] = this.codec.createDeserializer().readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/xml"; + } + hasUnstructuredPayloadBinding(ns) { + for (const [, member] of ns.structIterator()) { + if (member.getMergedTraits().httpPayload) { + return !(member.isStructSchema() || member.isMapSchema() || member.isListSchema()); + } + } + return false; + } +} + +exports.AWSSDKSigV4Signer = AWSSDKSigV4Signer; +exports.AwsEc2QueryProtocol = AwsEc2QueryProtocol; +exports.AwsJson1_0Protocol = AwsJson1_0Protocol; +exports.AwsJson1_1Protocol = AwsJson1_1Protocol; +exports.AwsJsonRpcProtocol = AwsJsonRpcProtocol; +exports.AwsQueryProtocol = AwsQueryProtocol; +exports.AwsRestJsonProtocol = AwsRestJsonProtocol; +exports.AwsRestXmlProtocol = AwsRestXmlProtocol; +exports.AwsSdkSigV4ASigner = AwsSdkSigV4ASigner; +exports.AwsSdkSigV4Signer = AwsSdkSigV4Signer; +exports.AwsSmithyRpcV2CborProtocol = AwsSmithyRpcV2CborProtocol; +exports.JsonCodec = JsonCodec; +exports.JsonShapeDeserializer = JsonShapeDeserializer; +exports.JsonShapeSerializer = JsonShapeSerializer; +exports.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = NODE_AUTH_SCHEME_PREFERENCE_OPTIONS; +exports.NODE_SIGV4A_CONFIG_OPTIONS = NODE_SIGV4A_CONFIG_OPTIONS; +exports.QueryShapeSerializer = QueryShapeSerializer; +exports.XmlCodec = XmlCodec; +exports.XmlShapeDeserializer = XmlShapeDeserializer; +exports.XmlShapeSerializer = XmlShapeSerializer; +exports._toBool = _toBool; +exports._toNum = _toNum; +exports._toStr = _toStr; +exports.awsExpectUnion = awsExpectUnion; +exports.emitWarningIfUnsupportedVersion = emitWarningIfUnsupportedVersion; +exports.getBearerTokenEnvKey = getBearerTokenEnvKey; +exports.loadRestJsonErrorCode = loadRestJsonErrorCode; +exports.loadRestXmlErrorCode = loadRestXmlErrorCode; +exports.parseJsonBody = parseJsonBody; +exports.parseJsonErrorBody = parseJsonErrorBody; +exports.parseXmlBody = parseXmlBody; +exports.parseXmlErrorBody = parseXmlErrorBody; +exports.resolveAWSSDKSigV4Config = resolveAWSSDKSigV4Config; +exports.resolveAwsSdkSigV4AConfig = resolveAwsSdkSigV4AConfig; +exports.resolveAwsSdkSigV4Config = resolveAwsSdkSigV4Config; +exports.setCredentialFeature = setCredentialFeature; +exports.setFeature = setFeature; +exports.setTokenFeature = setTokenFeature; +exports.state = state; +exports.validateSigningProperties = validateSigningProperties; diff --git a/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js b/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js new file mode 100644 index 0000000..5016c37 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js @@ -0,0 +1,55 @@ +'use strict'; + +var utilMiddleware = require('@smithy/util-middleware'); + +const DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = "preferred"; +const ACCOUNT_ID_ENDPOINT_MODE_VALUES = ["disabled", "preferred", "required"]; +function validateAccountIdEndpointMode(value) { + return ACCOUNT_ID_ENDPOINT_MODE_VALUES.includes(value); +} + +const resolveAccountIdEndpointModeConfig = (input) => { + const { accountIdEndpointMode } = input; + const accountIdEndpointModeProvider = utilMiddleware.normalizeProvider(accountIdEndpointMode ?? DEFAULT_ACCOUNT_ID_ENDPOINT_MODE); + return Object.assign(input, { + accountIdEndpointMode: async () => { + const accIdMode = await accountIdEndpointModeProvider(); + if (!validateAccountIdEndpointMode(accIdMode)) { + throw new Error(`Invalid value for accountIdEndpointMode: ${accIdMode}. Valid values are: "required", "preferred", "disabled".`); + } + return accIdMode; + }, + }); +}; + +const err = "Invalid AccountIdEndpointMode value"; +const _throw = (message) => { + throw new Error(message); +}; +const ENV_ACCOUNT_ID_ENDPOINT_MODE = "AWS_ACCOUNT_ID_ENDPOINT_MODE"; +const CONFIG_ACCOUNT_ID_ENDPOINT_MODE = "account_id_endpoint_mode"; +const NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[ENV_ACCOUNT_ID_ENDPOINT_MODE]; + if (value && !validateAccountIdEndpointMode(value)) { + _throw(err); + } + return value; + }, + configFileSelector: (profile) => { + const value = profile[CONFIG_ACCOUNT_ID_ENDPOINT_MODE]; + if (value && !validateAccountIdEndpointMode(value)) { + _throw(err); + } + return value; + }, + default: DEFAULT_ACCOUNT_ID_ENDPOINT_MODE, +}; + +exports.ACCOUNT_ID_ENDPOINT_MODE_VALUES = ACCOUNT_ID_ENDPOINT_MODE_VALUES; +exports.CONFIG_ACCOUNT_ID_ENDPOINT_MODE = CONFIG_ACCOUNT_ID_ENDPOINT_MODE; +exports.DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = DEFAULT_ACCOUNT_ID_ENDPOINT_MODE; +exports.ENV_ACCOUNT_ID_ENDPOINT_MODE = ENV_ACCOUNT_ID_ENDPOINT_MODE; +exports.NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS = NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS; +exports.resolveAccountIdEndpointModeConfig = resolveAccountIdEndpointModeConfig; +exports.validateAccountIdEndpointMode = validateAccountIdEndpointMode; diff --git a/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js b/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js new file mode 100644 index 0000000..ac64112 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js @@ -0,0 +1,51 @@ +'use strict'; + +const state = { + warningEmitted: false, +}; +const emitWarningIfUnsupportedVersion = (version) => { + if (version && !state.warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 20) { + state.warningEmitted = true; + process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will +no longer support Node.js ${version} in January 2026. + +To continue receiving updates to AWS services, bug fixes, and security +updates please upgrade to a supported Node.js LTS version. + +More information can be found at: https://a.co/c895JFp`); + } +}; + +function setCredentialFeature(credentials, feature, value) { + if (!credentials.$source) { + credentials.$source = {}; + } + credentials.$source[feature] = value; + return credentials; +} + +function setFeature(context, feature, value) { + if (!context.__aws_sdk_context) { + context.__aws_sdk_context = { + features: {}, + }; + } + else if (!context.__aws_sdk_context.features) { + context.__aws_sdk_context.features = {}; + } + context.__aws_sdk_context.features[feature] = value; +} + +function setTokenFeature(token, feature, value) { + if (!token.$source) { + token.$source = {}; + } + token.$source[feature] = value; + return token; +} + +exports.emitWarningIfUnsupportedVersion = emitWarningIfUnsupportedVersion; +exports.setCredentialFeature = setCredentialFeature; +exports.setFeature = setFeature; +exports.setTokenFeature = setTokenFeature; +exports.state = state; diff --git a/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js b/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js new file mode 100644 index 0000000..26b6301 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js @@ -0,0 +1,307 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var core = require('@smithy/core'); +var propertyProvider = require('@smithy/property-provider'); +var client = require('@aws-sdk/core/client'); +var signatureV4 = require('@smithy/signature-v4'); + +const getDateHeader = (response) => protocolHttp.HttpResponse.isInstance(response) ? response.headers?.date ?? response.headers?.Date : undefined; + +const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset); + +const isClockSkewed = (clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 300000; + +const getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => { + const clockTimeInMs = Date.parse(clockTime); + if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) { + return clockTimeInMs - Date.now(); + } + return currentSystemClockOffset; +}; + +const throwSigningPropertyError = (name, property) => { + if (!property) { + throw new Error(`Property \`${name}\` is not resolved for AWS SDK SigV4Auth`); + } + return property; +}; +const validateSigningProperties = async (signingProperties) => { + const context = throwSigningPropertyError("context", signingProperties.context); + const config = throwSigningPropertyError("config", signingProperties.config); + const authScheme = context.endpointV2?.properties?.authSchemes?.[0]; + const signerFunction = throwSigningPropertyError("signer", config.signer); + const signer = await signerFunction(authScheme); + const signingRegion = signingProperties?.signingRegion; + const signingRegionSet = signingProperties?.signingRegionSet; + const signingName = signingProperties?.signingName; + return { + config, + signer, + signingRegion, + signingRegionSet, + signingName, + }; +}; +class AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!protocolHttp.HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const validatedProps = await validateSigningProperties(signingProperties); + const { config, signer } = validatedProps; + let { signingRegion, signingName } = validatedProps; + const handlerExecutionContext = signingProperties.context; + if (handlerExecutionContext?.authSchemes?.length ?? 0 > 1) { + const [first, second] = handlerExecutionContext.authSchemes; + if (first?.name === "sigv4a" && second?.name === "sigv4") { + signingRegion = second?.signingRegion ?? signingRegion; + signingName = second?.signingName ?? signingName; + } + } + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: signingRegion, + signingService: signingName, + }); + return signedRequest; + } + errorHandler(signingProperties) { + return (error) => { + const serverTime = error.ServerTime ?? getDateHeader(error.$response); + if (serverTime) { + const config = throwSigningPropertyError("config", signingProperties.config); + const initialSystemClockOffset = config.systemClockOffset; + config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset); + const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset; + if (clockSkewCorrected && error.$metadata) { + error.$metadata.clockSkewCorrected = true; + } + } + throw error; + }; + } + successHandler(httpResponse, signingProperties) { + const dateHeader = getDateHeader(httpResponse); + if (dateHeader) { + const config = throwSigningPropertyError("config", signingProperties.config); + config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset); + } + } +} +const AWSSDKSigV4Signer = AwsSdkSigV4Signer; + +class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!protocolHttp.HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const { config, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(signingProperties); + const configResolvedSigningRegionSet = await config.sigv4aSigningRegionSet?.(); + const multiRegionOverride = (configResolvedSigningRegionSet ?? + signingRegionSet ?? [signingRegion]).join(","); + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: multiRegionOverride, + signingService: signingName, + }); + return signedRequest; + } +} + +const getArrayForCommaSeparatedString = (str) => typeof str === "string" && str.length > 0 ? str.split(",").map((item) => item.trim()) : []; + +const getBearerTokenEnvKey = (signingName) => `AWS_BEARER_TOKEN_${signingName.replace(/[\s-]/g, "_").toUpperCase()}`; + +const NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY = "AWS_AUTH_SCHEME_PREFERENCE"; +const NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY = "auth_scheme_preference"; +const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = { + environmentVariableSelector: (env, options) => { + if (options?.signingName) { + const bearerTokenKey = getBearerTokenEnvKey(options.signingName); + if (bearerTokenKey in env) + return ["httpBearerAuth"]; + } + if (!(NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY in env)) + return undefined; + return getArrayForCommaSeparatedString(env[NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY]); + }, + configFileSelector: (profile) => { + if (!(NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY in profile)) + return undefined; + return getArrayForCommaSeparatedString(profile[NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY]); + }, + default: [], +}; + +const resolveAwsSdkSigV4AConfig = (config) => { + config.sigv4aSigningRegionSet = core.normalizeProvider(config.sigv4aSigningRegionSet); + return config; +}; +const NODE_SIGV4A_CONFIG_OPTIONS = { + environmentVariableSelector(env) { + if (env.AWS_SIGV4A_SIGNING_REGION_SET) { + return env.AWS_SIGV4A_SIGNING_REGION_SET.split(",").map((_) => _.trim()); + } + throw new propertyProvider.ProviderError("AWS_SIGV4A_SIGNING_REGION_SET not set in env.", { + tryNextLink: true, + }); + }, + configFileSelector(profile) { + if (profile.sigv4a_signing_region_set) { + return (profile.sigv4a_signing_region_set ?? "").split(",").map((_) => _.trim()); + } + throw new propertyProvider.ProviderError("sigv4a_signing_region_set not set in profile.", { + tryNextLink: true, + }); + }, + default: undefined, +}; + +const resolveAwsSdkSigV4Config = (config) => { + let inputCredentials = config.credentials; + let isUserSupplied = !!config.credentials; + let resolvedCredentials = undefined; + Object.defineProperty(config, "credentials", { + set(credentials) { + if (credentials && credentials !== inputCredentials && credentials !== resolvedCredentials) { + isUserSupplied = true; + } + inputCredentials = credentials; + const memoizedProvider = normalizeCredentialProvider(config, { + credentials: inputCredentials, + credentialDefaultProvider: config.credentialDefaultProvider, + }); + const boundProvider = bindCallerConfig(config, memoizedProvider); + if (isUserSupplied && !boundProvider.attributed) { + const isCredentialObject = typeof inputCredentials === "object" && inputCredentials !== null; + resolvedCredentials = async (options) => { + const creds = await boundProvider(options); + const attributedCreds = creds; + if (isCredentialObject && (!attributedCreds.$source || Object.keys(attributedCreds.$source).length === 0)) { + return client.setCredentialFeature(attributedCreds, "CREDENTIALS_CODE", "e"); + } + return attributedCreds; + }; + resolvedCredentials.memoized = boundProvider.memoized; + resolvedCredentials.configBound = boundProvider.configBound; + resolvedCredentials.attributed = true; + } + else { + resolvedCredentials = boundProvider; + } + }, + get() { + return resolvedCredentials; + }, + enumerable: true, + configurable: true, + }); + config.credentials = inputCredentials; + const { signingEscapePath = true, systemClockOffset = config.systemClockOffset || 0, sha256, } = config; + let signer; + if (config.signer) { + signer = core.normalizeProvider(config.signer); + } + else if (config.regionInfoProvider) { + signer = () => core.normalizeProvider(config.region)() + .then(async (region) => [ + (await config.regionInfoProvider(region, { + useFipsEndpoint: await config.useFipsEndpoint(), + useDualstackEndpoint: await config.useDualstackEndpoint(), + })) || {}, + region, + ]) + .then(([regionInfo, region]) => { + const { signingRegion, signingService } = regionInfo; + config.signingRegion = config.signingRegion || signingRegion || region; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || signatureV4.SignatureV4; + return new SignerCtor(params); + }); + } + else { + signer = async (authScheme) => { + authScheme = Object.assign({}, { + name: "sigv4", + signingName: config.signingName || config.defaultSigningName, + signingRegion: await core.normalizeProvider(config.region)(), + properties: {}, + }, authScheme); + const signingRegion = authScheme.signingRegion; + const signingService = authScheme.signingName; + config.signingRegion = config.signingRegion || signingRegion; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || signatureV4.SignatureV4; + return new SignerCtor(params); + }; + } + const resolvedConfig = Object.assign(config, { + systemClockOffset, + signingEscapePath, + signer, + }); + return resolvedConfig; +}; +const resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config; +function normalizeCredentialProvider(config, { credentials, credentialDefaultProvider, }) { + let credentialsProvider; + if (credentials) { + if (!credentials?.memoized) { + credentialsProvider = core.memoizeIdentityProvider(credentials, core.isIdentityExpired, core.doesIdentityRequireRefresh); + } + else { + credentialsProvider = credentials; + } + } + else { + if (credentialDefaultProvider) { + credentialsProvider = core.normalizeProvider(credentialDefaultProvider(Object.assign({}, config, { + parentClientConfig: config, + }))); + } + else { + credentialsProvider = async () => { + throw new Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured."); + }; + } + } + credentialsProvider.memoized = true; + return credentialsProvider; +} +function bindCallerConfig(config, credentialsProvider) { + if (credentialsProvider.configBound) { + return credentialsProvider; + } + const fn = async (options) => credentialsProvider({ ...options, callerClientConfig: config }); + fn.memoized = credentialsProvider.memoized; + fn.configBound = true; + return fn; +} + +exports.AWSSDKSigV4Signer = AWSSDKSigV4Signer; +exports.AwsSdkSigV4ASigner = AwsSdkSigV4ASigner; +exports.AwsSdkSigV4Signer = AwsSdkSigV4Signer; +exports.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = NODE_AUTH_SCHEME_PREFERENCE_OPTIONS; +exports.NODE_SIGV4A_CONFIG_OPTIONS = NODE_SIGV4A_CONFIG_OPTIONS; +exports.getBearerTokenEnvKey = getBearerTokenEnvKey; +exports.resolveAWSSDKSigV4Config = resolveAWSSDKSigV4Config; +exports.resolveAwsSdkSigV4AConfig = resolveAwsSdkSigV4AConfig; +exports.resolveAwsSdkSigV4Config = resolveAwsSdkSigV4Config; +exports.validateSigningProperties = validateSigningProperties; diff --git a/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js b/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js new file mode 100644 index 0000000..fede8ac --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js @@ -0,0 +1,1892 @@ +'use strict'; + +var cbor = require('@smithy/core/cbor'); +var schema = require('@smithy/core/schema'); +var smithyClient = require('@smithy/smithy-client'); +var protocols = require('@smithy/core/protocols'); +var serde = require('@smithy/core/serde'); +var utilBase64 = require('@smithy/util-base64'); +var utilUtf8 = require('@smithy/util-utf8'); +var xmlBuilder = require('@aws-sdk/xml-builder'); + +class ProtocolLib { + queryCompat; + errorRegistry; + constructor(queryCompat = false) { + this.queryCompat = queryCompat; + } + resolveRestContentType(defaultContentType, inputSchema) { + const members = inputSchema.getMemberSchemas(); + const httpPayloadMember = Object.values(members).find((m) => { + return !!m.getMergedTraits().httpPayload; + }); + if (httpPayloadMember) { + const mediaType = httpPayloadMember.getMergedTraits().mediaType; + if (mediaType) { + return mediaType; + } + else if (httpPayloadMember.isStringSchema()) { + return "text/plain"; + } + else if (httpPayloadMember.isBlobSchema()) { + return "application/octet-stream"; + } + else { + return defaultContentType; + } + } + else if (!inputSchema.isUnitSchema()) { + const hasBody = Object.values(members).find((m) => { + const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m.getMergedTraits(); + const noPrefixHeaders = httpPrefixHeaders === void 0; + return !httpQuery && !httpQueryParams && !httpHeader && !httpLabel && noPrefixHeaders; + }); + if (hasBody) { + return defaultContentType; + } + } + } + async getErrorSchemaOrThrowBaseException(errorIdentifier, defaultNamespace, response, dataObject, metadata, getErrorSchema) { + let errorName = errorIdentifier; + if (errorIdentifier.includes("#")) { + [, errorName] = errorIdentifier.split("#"); + } + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode < 500 ? "client" : "server", + }; + if (!this.errorRegistry) { + throw new Error("@aws-sdk/core/protocols - error handler not initialized."); + } + try { + const errorSchema = getErrorSchema?.(this.errorRegistry, errorName) ?? + this.errorRegistry.getSchema(errorIdentifier); + return { errorSchema, errorMetadata }; + } + catch (e) { + dataObject.message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const synthetic = this.errorRegistry; + const baseExceptionSchema = synthetic.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = synthetic.getErrorCtor(baseExceptionSchema) ?? Error; + throw this.decorateServiceException(Object.assign(new ErrorCtor({ name: errorName }), errorMetadata), dataObject); + } + const d = dataObject; + const message = d?.message ?? d?.Message ?? d?.Error?.Message ?? d?.Error?.message; + throw this.decorateServiceException(Object.assign(new Error(message), { + name: errorName, + }, errorMetadata), dataObject); + } + } + compose(composite, errorIdentifier, defaultNamespace) { + let namespace = defaultNamespace; + if (errorIdentifier.includes("#")) { + [namespace] = errorIdentifier.split("#"); + } + const staticRegistry = schema.TypeRegistry.for(namespace); + const defaultSyntheticRegistry = schema.TypeRegistry.for("smithy.ts.sdk.synthetic." + defaultNamespace); + composite.copyFrom(staticRegistry); + composite.copyFrom(defaultSyntheticRegistry); + this.errorRegistry = composite; + } + decorateServiceException(exception, additions = {}) { + if (this.queryCompat) { + const msg = exception.Message ?? additions.Message; + const error = smithyClient.decorateServiceException(exception, additions); + if (msg) { + error.message = msg; + } + error.Error = { + ...error.Error, + Type: error.Error?.Type, + Code: error.Error?.Code, + Message: error.Error?.message ?? error.Error?.Message ?? msg, + }; + const reqId = error.$metadata.requestId; + if (reqId) { + error.RequestId = reqId; + } + return error; + } + return smithyClient.decorateServiceException(exception, additions); + } + setQueryCompatError(output, response) { + const queryErrorHeader = response.headers?.["x-amzn-query-error"]; + if (output !== undefined && queryErrorHeader != null) { + const [Code, Type] = queryErrorHeader.split(";"); + const entries = Object.entries(output); + const Error = { + Code, + Type, + }; + Object.assign(output, Error); + for (const [k, v] of entries) { + Error[k === "message" ? "Message" : k] = v; + } + delete Error.__type; + output.Error = Error; + } + } + queryCompatOutput(queryCompatErrorData, errorData) { + if (queryCompatErrorData.Error) { + errorData.Error = queryCompatErrorData.Error; + } + if (queryCompatErrorData.Type) { + errorData.Type = queryCompatErrorData.Type; + } + if (queryCompatErrorData.Code) { + errorData.Code = queryCompatErrorData.Code; + } + } + findQueryCompatibleError(registry, errorName) { + try { + return registry.getSchema(errorName); + } + catch (e) { + return registry.find((schema$1) => schema.NormalizedSchema.of(schema$1).getMergedTraits().awsQueryError?.[0] === errorName); + } + } +} + +class AwsSmithyRpcV2CborProtocol extends cbor.SmithyRpcV2CborProtocol { + awsQueryCompatible; + mixin; + constructor({ defaultNamespace, errorTypeRegistries, awsQueryCompatible, }) { + super({ defaultNamespace, errorTypeRegistries }); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + return request; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorName = (() => { + const compatHeader = response.headers["x-amzn-query-error"]; + if (compatHeader && this.awsQueryCompatible) { + return compatHeader.split(";")[0]; + } + return cbor.loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + })(); + this.mixin.compose(this.compositeErrorRegistry, errorName, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorName, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} + +const _toStr = (val) => { + if (val == null) { + return val; + } + if (typeof val === "number" || typeof val === "bigint") { + const warning = new Error(`Received number ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + if (typeof val === "boolean") { + const warning = new Error(`Received boolean ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + return val; +}; +const _toBool = (val) => { + if (val == null) { + return val; + } + if (typeof val === "string") { + const lowercase = val.toLowerCase(); + if (val !== "" && lowercase !== "false" && lowercase !== "true") { + const warning = new Error(`Received string "${val}" where a boolean was expected.`); + warning.name = "Warning"; + console.warn(warning); + } + return val !== "" && lowercase !== "false"; + } + return val; +}; +const _toNum = (val) => { + if (val == null) { + return val; + } + if (typeof val === "string") { + const num = Number(val); + if (num.toString() !== val) { + const warning = new Error(`Received string "${val}" where a number was expected.`); + warning.name = "Warning"; + console.warn(warning); + return val; + } + return num; + } + return val; +}; + +class SerdeContextConfig { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} + +class UnionSerde { + from; + to; + keys; + constructor(from, to) { + this.from = from; + this.to = to; + this.keys = new Set(Object.keys(this.from).filter((k) => k !== "__type")); + } + mark(key) { + this.keys.delete(key); + } + hasUnknown() { + return this.keys.size === 1 && Object.keys(this.to).length === 0; + } + writeUnknown() { + if (this.hasUnknown()) { + const k = this.keys.values().next().value; + const v = this.from[k]; + this.to.$unknown = [k, v]; + } + } +} + +function jsonReviver(key, value, context) { + if (context?.source) { + const numericString = context.source; + if (typeof value === "number") { + if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER || numericString !== String(value)) { + const isFractional = numericString.includes("."); + if (isFractional) { + return new serde.NumericValue(numericString, "bigDecimal"); + } + else { + return BigInt(numericString); + } + } + } + } + return value; +} + +const collectBodyString = (streamBody, context) => smithyClient.collectBody(streamBody, context).then((body) => (context?.utf8Encoder ?? utilUtf8.toUtf8)(body)); + +const parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + try { + return JSON.parse(encoded); + } + catch (e) { + if (e?.name === "SyntaxError") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + } + return {}; +}); +const parseJsonErrorBody = async (errorBody, context) => { + const value = await parseJsonBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +const loadRestJsonErrorCode = (output, data) => { + const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()); + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + const headerKey = findKey(output.headers, "x-amzn-errortype"); + if (headerKey !== undefined) { + return sanitizeErrorCode(output.headers[headerKey]); + } + if (data && typeof data === "object") { + const codeKey = findKey(data, "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + } +}; + +class JsonShapeDeserializer extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + async read(schema, data) { + return this._read(schema, typeof data === "string" ? JSON.parse(data, jsonReviver) : await parseJsonBody(data, this.serdeContext)); + } + readObject(schema, data) { + return this._read(schema, data); + } + _read(schema$1, value) { + const isObject = value !== null && typeof value === "object"; + const ns = schema.NormalizedSchema.of(schema$1); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const union = ns.isUnionSchema(); + const out = {}; + let nameMap = void 0; + const { jsonName } = this.settings; + if (jsonName) { + nameMap = {}; + } + let unionSerde; + if (union) { + unionSerde = new UnionSerde(record, out); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + let fromKey = memberName; + if (jsonName) { + fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey; + nameMap[fromKey] = memberName; + } + if (union) { + unionSerde.mark(fromKey); + } + if (record[fromKey] != null) { + out[memberName] = this._read(memberSchema, record[fromKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const t = jsonName ? nameMap[k] ?? k : k; + if (!(t in out)) { + out[t] = v; + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + for (const item of value) { + out.push(this._read(listMember, item)); + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + for (const [_k, _v] of Object.entries(value)) { + out[_k] = this._read(mapMember, _v); + } + return out; + } + } + if (ns.isBlobSchema() && typeof value === "string") { + return utilBase64.fromBase64(value); + } + const mediaType = ns.getMergedTraits().mediaType; + if (ns.isStringSchema() && typeof value === "string" && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return serde.LazyJsonString.from(value); + } + return value; + } + if (ns.isTimestampSchema() && value != null) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return serde.parseRfc3339DateTimeWithOffset(value); + case 6: + return serde.parseRfc7231DateTime(value); + case 7: + return serde.parseEpochTimestamp(value); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", value); + return new Date(value); + } + } + if (ns.isBigIntegerSchema() && (typeof value === "number" || typeof value === "string")) { + return BigInt(value); + } + if (ns.isBigDecimalSchema() && value != undefined) { + if (value instanceof serde.NumericValue) { + return value; + } + const untyped = value; + if (untyped.type === "bigDecimal" && "string" in untyped) { + return new serde.NumericValue(untyped.string, untyped.type); + } + return new serde.NumericValue(String(value), "bigDecimal"); + } + if (ns.isNumericSchema() && typeof value === "string") { + switch (value) { + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + case "NaN": + return NaN; + } + return value; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof serde.NumericValue) { + out[k] = v; + } + else { + out[k] = this._read(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} + +const NUMERIC_CONTROL_CHAR = String.fromCharCode(925); +class JsonReplacer { + values = new Map(); + counter = 0; + stage = 0; + createReplacer() { + if (this.stage === 1) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer already created."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 1; + return (key, value) => { + if (value instanceof serde.NumericValue) { + const v = `${NUMERIC_CONTROL_CHAR + "nv" + this.counter++}_` + value.string; + this.values.set(`"${v}"`, value.string); + return v; + } + if (typeof value === "bigint") { + const s = value.toString(); + const v = `${NUMERIC_CONTROL_CHAR + "b" + this.counter++}_` + s; + this.values.set(`"${v}"`, s); + return v; + } + return value; + }; + } + replaceInJson(json) { + if (this.stage === 0) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer not created yet."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 2; + if (this.counter === 0) { + return json; + } + for (const [key, value] of this.values) { + json = json.replace(key, value); + } + return json; + } +} + +class JsonShapeSerializer extends SerdeContextConfig { + settings; + buffer; + useReplacer = false; + rootSchema; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + this.rootSchema = schema.NormalizedSchema.of(schema$1); + this.buffer = this._write(this.rootSchema, value); + } + writeDiscriminatedDocument(schema$1, value) { + this.write(schema$1, value); + if (typeof this.buffer === "object") { + this.buffer.__type = schema.NormalizedSchema.of(schema$1).getName(true); + } + } + flush() { + const { rootSchema, useReplacer } = this; + this.rootSchema = undefined; + this.useReplacer = false; + if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) { + if (!useReplacer) { + return JSON.stringify(this.buffer); + } + const replacer = new JsonReplacer(); + return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0)); + } + return this.buffer; + } + _write(schema$1, value, container) { + const isObject = value !== null && typeof value === "object"; + const ns = schema.NormalizedSchema.of(schema$1); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const out = {}; + const { jsonName } = this.settings; + let nameMap = void 0; + if (jsonName) { + nameMap = {}; + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const serializableValue = this._write(memberSchema, record[memberName], ns); + if (serializableValue !== undefined) { + let targetKey = memberName; + if (jsonName) { + targetKey = memberSchema.getMergedTraits().jsonName ?? memberName; + nameMap[memberName] = targetKey; + } + out[targetKey] = serializableValue; + } + } + if (ns.isUnionSchema() && Object.keys(out).length === 0) { + const { $unknown } = record; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + out[k] = this._write(15, v); + } + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const targetKey = jsonName ? nameMap[k] ?? k : k; + if (!(targetKey in out)) { + out[targetKey] = this._write(15, v); + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + const sparse = !!ns.getMergedTraits().sparse; + for (const item of value) { + if (sparse || item != null) { + out.push(this._write(listMember, item)); + } + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + const sparse = !!ns.getMergedTraits().sparse; + for (const [_k, _v] of Object.entries(value)) { + if (sparse || _v != null) { + out[_k] = this._write(mapMember, _v); + } + } + return out; + } + if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return value.toISOString().replace(".000Z", "Z"); + case 6: + return serde.dateToUtcString(value); + case 7: + return value.getTime() / 1000; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + return value.getTime() / 1000; + } + } + if (value instanceof serde.NumericValue) { + this.useReplacer = true; + } + } + if (value === null && container?.isStructSchema()) { + return void 0; + } + if (ns.isStringSchema()) { + if (typeof value === "undefined" && ns.isIdempotencyToken()) { + return serde.generateIdempotencyToken(); + } + const mediaType = ns.getMergedTraits().mediaType; + if (value != null && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return serde.LazyJsonString.from(value); + } + } + return value; + } + if (typeof value === "number" && ns.isNumericSchema()) { + if (Math.abs(value) === Infinity || isNaN(value)) { + return String(value); + } + return value; + } + if (typeof value === "string" && ns.isBlobSchema()) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + if (typeof value === "bigint") { + this.useReplacer = true; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof serde.NumericValue) { + this.useReplacer = true; + out[k] = v; + } + else { + out[k] = this._write(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} + +class JsonCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new JsonShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new JsonShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} + +class AwsJsonRpcProtocol extends protocols.RpcProtocol { + serializer; + deserializer; + serviceTarget; + codec; + mixin; + awsQueryCompatible; + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + errorTypeRegistries, + }); + this.serviceTarget = serviceTarget; + this.codec = + jsonCodec ?? + new JsonCodec({ + timestampFormat: { + useTrait: true, + default: 7, + }, + jsonName: false, + }); + this.serializer = this.codec.createSerializer(); + this.deserializer = this.codec.createDeserializer(); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-amz-json-${this.getJsonRpcVersion()}`, + "x-amz-target": `${this.serviceTarget}.${operationSchema.name}`, + }); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + if (schema.deref(operationSchema.input) === "unit" || !request.body) { + request.body = "{}"; + } + return request; + } + getPayloadCodec() { + return this.codec; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.codec.createDeserializer().readObject(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} + +class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + errorTypeRegistries, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_0"; + } + getJsonRpcVersion() { + return "1.0"; + } + getDefaultContentType() { + return "application/x-amz-json-1.0"; + } +} + +class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + errorTypeRegistries, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_1"; + } + getJsonRpcVersion() { + return "1.1"; + } + getDefaultContentType() { + return "application/x-amz-json-1.1"; + } +} + +class AwsRestJsonProtocol extends protocols.HttpBindingProtocol { + serializer; + deserializer; + codec; + mixin = new ProtocolLib(); + constructor({ defaultNamespace, errorTypeRegistries, }) { + super({ + defaultNamespace, + errorTypeRegistries, + }); + const settings = { + timestampFormat: { + useTrait: true, + default: 7, + }, + httpBindings: true, + jsonName: true, + }; + this.codec = new JsonCodec(settings); + this.serializer = new protocols.HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new protocols.HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getShapeId() { + return "aws.protocols#restJson1"; + } + getPayloadCodec() { + return this.codec; + } + setSerdeContext(serdeContext) { + this.codec.setSerdeContext(serdeContext); + super.setSerdeContext(serdeContext); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = schema.NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (request.body == null && request.headers["content-type"] === this.getDefaultContentType()) { + request.body = "{}"; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const output = await super.deserializeResponse(operationSchema, context, response); + const outputSchema = schema.NormalizedSchema.of(operationSchema.output); + for (const [name, member] of outputSchema.structIterator()) { + if (member.getMemberTraits().httpPayload && !(name in output)) { + output[name] = null; + } + } + return output; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().jsonName ?? name; + output[name] = this.codec.createDeserializer().readObject(member, dataObject[target]); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/json"; + } +} + +const awsExpectUnion = (value) => { + if (value == null) { + return undefined; + } + if (typeof value === "object" && "__type" in value) { + delete value.__type; + } + return smithyClient.expectUnion(value); +}; + +class XmlShapeDeserializer extends SerdeContextConfig { + settings; + stringDeserializer; + constructor(settings) { + super(); + this.settings = settings; + this.stringDeserializer = new protocols.FromStringShapeDeserializer(settings); + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.stringDeserializer.setSerdeContext(serdeContext); + } + read(schema$1, bytes, key) { + const ns = schema.NormalizedSchema.of(schema$1); + const memberSchemas = ns.getMemberSchemas(); + const isEventPayload = ns.isStructSchema() && + ns.isMemberSchema() && + !!Object.values(memberSchemas).find((memberNs) => { + return !!memberNs.getMemberTraits().eventPayload; + }); + if (isEventPayload) { + const output = {}; + const memberName = Object.keys(memberSchemas)[0]; + const eventMemberSchema = memberSchemas[memberName]; + if (eventMemberSchema.isBlobSchema()) { + output[memberName] = bytes; + } + else { + output[memberName] = this.read(memberSchemas[memberName], bytes); + } + return output; + } + const xmlString = (this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8)(bytes); + const parsedObject = this.parseXml(xmlString); + return this.readSchema(schema$1, key ? parsedObject[key] : parsedObject); + } + readSchema(_schema, value) { + const ns = schema.NormalizedSchema.of(_schema); + if (ns.isUnitSchema()) { + return; + } + const traits = ns.getMergedTraits(); + if (ns.isListSchema() && !Array.isArray(value)) { + return this.readSchema(ns, [value]); + } + if (value == null) { + return value; + } + if (typeof value === "object") { + const flat = !!traits.xmlFlattened; + if (ns.isListSchema()) { + const listValue = ns.getValueSchema(); + const buffer = []; + const sourceKey = listValue.getMergedTraits().xmlName ?? "member"; + const source = flat ? value : (value[0] ?? value)[sourceKey]; + if (source == null) { + return buffer; + } + const sourceArray = Array.isArray(source) ? source : [source]; + for (const v of sourceArray) { + buffer.push(this.readSchema(listValue, v)); + } + return buffer; + } + const buffer = {}; + if (ns.isMapSchema()) { + const keyNs = ns.getKeySchema(); + const memberNs = ns.getValueSchema(); + let entries; + if (flat) { + entries = Array.isArray(value) ? value : [value]; + } + else { + entries = Array.isArray(value.entry) ? value.entry : [value.entry]; + } + const keyProperty = keyNs.getMergedTraits().xmlName ?? "key"; + const valueProperty = memberNs.getMergedTraits().xmlName ?? "value"; + for (const entry of entries) { + const key = entry[keyProperty]; + const value = entry[valueProperty]; + buffer[key] = this.readSchema(memberNs, value); + } + return buffer; + } + if (ns.isStructSchema()) { + const union = ns.isUnionSchema(); + let unionSerde; + if (union) { + unionSerde = new UnionSerde(value, buffer); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMergedTraits(); + const xmlObjectKey = !memberTraits.httpPayload + ? memberSchema.getMemberTraits().xmlName ?? memberName + : memberTraits.xmlName ?? memberSchema.getName(); + if (union) { + unionSerde.mark(xmlObjectKey); + } + if (value[xmlObjectKey] != null) { + buffer[memberName] = this.readSchema(memberSchema, value[xmlObjectKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + return buffer; + } + if (ns.isDocumentSchema()) { + return value; + } + throw new Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${ns.getName(true)}`); + } + if (ns.isListSchema()) { + return []; + } + if (ns.isMapSchema() || ns.isStructSchema()) { + return {}; + } + return this.stringDeserializer.read(ns, value); + } + parseXml(xml) { + if (xml.length) { + let parsedObj; + try { + parsedObj = xmlBuilder.parseXML(xml); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: xml, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return smithyClient.getValueFromTextNode(parsedObjToReturn); + } + return {}; + } +} + +class QueryShapeSerializer extends SerdeContextConfig { + settings; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value, prefix = "") { + if (this.buffer === undefined) { + this.buffer = ""; + } + const ns = schema.NormalizedSchema.of(schema$1); + if (prefix && !prefix.endsWith(".")) { + prefix += "."; + } + if (ns.isBlobSchema()) { + if (typeof value === "string" || value instanceof Uint8Array) { + this.writeKey(prefix); + this.writeValue((this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value)); + } + } + else if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isStringSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + else if (ns.isIdempotencyToken()) { + this.writeKey(prefix); + this.writeValue(serde.generateIdempotencyToken()); + } + } + else if (ns.isBigIntegerSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isBigDecimalSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(value instanceof serde.NumericValue ? value.string : String(value)); + } + } + else if (ns.isTimestampSchema()) { + if (value instanceof Date) { + this.writeKey(prefix); + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.writeValue(value.toISOString().replace(".000Z", "Z")); + break; + case 6: + this.writeValue(smithyClient.dateToUtcString(value)); + break; + case 7: + this.writeValue(String(value.getTime() / 1000)); + break; + } + } + } + else if (ns.isDocumentSchema()) { + if (Array.isArray(value)) { + this.write(64 | 15, value, prefix); + } + else if (value instanceof Date) { + this.write(4, value, prefix); + } + else if (value instanceof Uint8Array) { + this.write(21, value, prefix); + } + else if (value && typeof value === "object") { + this.write(128 | 15, value, prefix); + } + else { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isListSchema()) { + if (Array.isArray(value)) { + if (value.length === 0) { + if (this.settings.serializeEmptyLists) { + this.writeKey(prefix); + this.writeValue(""); + } + } + else { + const member = ns.getValueSchema(); + const flat = this.settings.flattenLists || ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const item of value) { + if (item == null) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey("member", traits.xmlName, traits.ec2QueryName); + const key = flat ? `${prefix}${i}` : `${prefix}${suffix}.${i}`; + this.write(member, item, key); + ++i; + } + } + } + } + else if (ns.isMapSchema()) { + if (value && typeof value === "object") { + const keySchema = ns.getKeySchema(); + const memberSchema = ns.getValueSchema(); + const flat = ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const [k, v] of Object.entries(value)) { + if (v == null) { + continue; + } + const keyTraits = keySchema.getMergedTraits(); + const keySuffix = this.getKey("key", keyTraits.xmlName, keyTraits.ec2QueryName); + const key = flat ? `${prefix}${i}.${keySuffix}` : `${prefix}entry.${i}.${keySuffix}`; + const valTraits = memberSchema.getMergedTraits(); + const valueSuffix = this.getKey("value", valTraits.xmlName, valTraits.ec2QueryName); + const valueKey = flat ? `${prefix}${i}.${valueSuffix}` : `${prefix}entry.${i}.${valueSuffix}`; + this.write(keySchema, k, key); + this.write(memberSchema, v, valueKey); + ++i; + } + } + } + else if (ns.isStructSchema()) { + if (value && typeof value === "object") { + let didWriteMember = false; + for (const [memberName, member] of ns.structIterator()) { + if (value[memberName] == null && !member.isIdempotencyToken()) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey(memberName, traits.xmlName, traits.ec2QueryName, "struct"); + const key = `${prefix}${suffix}`; + this.write(member, value[memberName], key); + didWriteMember = true; + } + if (!didWriteMember && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + const key = `${prefix}${k}`; + this.write(15, v, key); + } + } + } + } + else if (ns.isUnitSchema()) ; + else { + throw new Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${ns.getName(true)}`); + } + } + flush() { + if (this.buffer === undefined) { + throw new Error("@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer."); + } + const str = this.buffer; + delete this.buffer; + return str; + } + getKey(memberName, xmlName, ec2QueryName, keySource) { + const { ec2, capitalizeKeys } = this.settings; + if (ec2 && ec2QueryName) { + return ec2QueryName; + } + const key = xmlName ?? memberName; + if (capitalizeKeys && keySource === "struct") { + return key[0].toUpperCase() + key.slice(1); + } + return key; + } + writeKey(key) { + if (key.endsWith(".")) { + key = key.slice(0, key.length - 1); + } + this.buffer += `&${protocols.extendedEncodeURIComponent(key)}=`; + } + writeValue(value) { + this.buffer += protocols.extendedEncodeURIComponent(value); + } +} + +class AwsQueryProtocol extends protocols.RpcProtocol { + options; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super({ + defaultNamespace: options.defaultNamespace, + errorTypeRegistries: options.errorTypeRegistries, + }); + this.options = options; + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: false, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + serializeEmptyLists: true, + }; + this.serializer = new QueryShapeSerializer(settings); + this.deserializer = new XmlShapeDeserializer(settings); + } + getShapeId() { + return "aws.protocols#awsQuery"; + } + setSerdeContext(serdeContext) { + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + } + getPayloadCodec() { + throw new Error("AWSQuery protocol has no payload codec."); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-www-form-urlencoded`, + }); + if (schema.deref(operationSchema.input) === "unit" || !request.body) { + request.body = ""; + } + const action = operationSchema.name.split("#")[1] ?? operationSchema.name; + request.body = `Action=${action}&Version=${this.options.version}` + request.body; + if (request.body.endsWith("&")) { + request.body = request.body.slice(-1); + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await protocols.collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const shortName = operationSchema.name.split("#")[1] ?? operationSchema.name; + const awsQueryResultKey = ns.isStructSchema() && this.useNestedResult() ? shortName + "Result" : undefined; + const bytes = await protocols.collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes, awsQueryResultKey)); + } + const output = { + $metadata: this.deserializeMetadata(response), + ...dataObject, + }; + return output; + } + useNestedResult() { + return true; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = this.loadQueryErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const errorData = this.loadQueryError(dataObject) ?? {}; + const message = this.loadQueryErrorMessage(dataObject); + errorData.message = message; + errorData.Error = { + Type: errorData.Type, + Code: errorData.Code, + Message: message, + }; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, errorData, metadata, this.mixin.findQueryCompatibleError); + const ns = schema.NormalizedSchema.of(errorSchema); + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = { + Type: errorData.Error.Type, + Code: errorData.Error.Code, + Error: errorData.Error, + }; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = errorData[target] ?? dataObject[target]; + output[name] = this.deserializer.readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + loadQueryErrorCode(output, data) { + const code = (data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error)?.Code; + if (code !== undefined) { + return code; + } + if (output.statusCode == 404) { + return "NotFound"; + } + } + loadQueryError(data) { + return data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error; + } + loadQueryErrorMessage(data) { + const errorData = this.loadQueryError(data); + return errorData?.message ?? errorData?.Message ?? data.message ?? data.Message ?? "Unknown"; + } + getDefaultContentType() { + return "application/x-www-form-urlencoded"; + } +} + +class AwsEc2QueryProtocol extends AwsQueryProtocol { + options; + constructor(options) { + super(options); + this.options = options; + const ec2Settings = { + capitalizeKeys: true, + flattenLists: true, + serializeEmptyLists: false, + ec2: true, + }; + Object.assign(this.serializer.settings, ec2Settings); + } + getShapeId() { + return "aws.protocols#ec2Query"; + } + useNestedResult() { + return false; + } +} + +const parseXmlBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + let parsedObj; + try { + parsedObj = xmlBuilder.parseXML(encoded); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return smithyClient.getValueFromTextNode(parsedObjToReturn); + } + return {}; +}); +const parseXmlErrorBody = async (errorBody, context) => { + const value = await parseXmlBody(errorBody, context); + if (value.Error) { + value.Error.message = value.Error.message ?? value.Error.Message; + } + return value; +}; +const loadRestXmlErrorCode = (output, data) => { + if (data?.Error?.Code !== undefined) { + return data.Error.Code; + } + if (data?.Code !== undefined) { + return data.Code; + } + if (output.statusCode == 404) { + return "NotFound"; + } +}; + +class XmlShapeSerializer extends SerdeContextConfig { + settings; + stringBuffer; + byteBuffer; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + const ns = schema.NormalizedSchema.of(schema$1); + if (ns.isStringSchema() && typeof value === "string") { + this.stringBuffer = value; + } + else if (ns.isBlobSchema()) { + this.byteBuffer = + "byteLength" in value + ? value + : (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(value); + } + else { + this.buffer = this.writeStruct(ns, value, undefined); + const traits = ns.getMergedTraits(); + if (traits.httpPayload && !traits.xmlName) { + this.buffer.withName(ns.getName()); + } + } + } + flush() { + if (this.byteBuffer !== undefined) { + const bytes = this.byteBuffer; + delete this.byteBuffer; + return bytes; + } + if (this.stringBuffer !== undefined) { + const str = this.stringBuffer; + delete this.stringBuffer; + return str; + } + const buffer = this.buffer; + if (this.settings.xmlNamespace) { + if (!buffer?.attributes?.["xmlns"]) { + buffer.addAttribute("xmlns", this.settings.xmlNamespace); + } + } + delete this.buffer; + return buffer.toString(); + } + writeStruct(ns, value, parentXmlns) { + const traits = ns.getMergedTraits(); + const name = ns.isMemberSchema() && !traits.httpPayload + ? ns.getMemberTraits().xmlName ?? ns.getMemberName() + : traits.xmlName ?? ns.getName(); + if (!name || !ns.isStructSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write struct with empty name or non-struct, schema=${ns.getName(true)}.`); + } + const structXmlNode = xmlBuilder.XmlNode.of(name); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + for (const [memberName, memberSchema] of ns.structIterator()) { + const val = value[memberName]; + if (val != null || memberSchema.isIdempotencyToken()) { + if (memberSchema.getMergedTraits().xmlAttribute) { + structXmlNode.addAttribute(memberSchema.getMergedTraits().xmlName ?? memberName, this.writeSimple(memberSchema, val)); + continue; + } + if (memberSchema.isListSchema()) { + this.writeList(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isMapSchema()) { + this.writeMap(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isStructSchema()) { + structXmlNode.addChildNode(this.writeStruct(memberSchema, val, xmlns)); + } + else { + const memberNode = xmlBuilder.XmlNode.of(memberSchema.getMergedTraits().xmlName ?? memberSchema.getMemberName()); + this.writeSimpleInto(memberSchema, val, memberNode, xmlns); + structXmlNode.addChildNode(memberNode); + } + } + } + const { $unknown } = value; + if ($unknown && ns.isUnionSchema() && Array.isArray($unknown) && Object.keys(value).length === 1) { + const [k, v] = $unknown; + const node = xmlBuilder.XmlNode.of(k); + if (typeof v !== "string") { + if (value instanceof xmlBuilder.XmlNode || value instanceof xmlBuilder.XmlText) { + structXmlNode.addChildNode(value); + } + else { + throw new Error(`@aws-sdk - $unknown union member in XML requires ` + + `value of type string, @aws-sdk/xml-builder::XmlNode or XmlText.`); + } + } + this.writeSimpleInto(0, v, node, xmlns); + structXmlNode.addChildNode(node); + } + if (xmlns) { + structXmlNode.addAttribute(xmlnsAttr, xmlns); + } + return structXmlNode; + } + writeList(listMember, array, container, parentXmlns) { + if (!listMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member list: ${listMember.getName(true)}`); + } + const listTraits = listMember.getMergedTraits(); + const listValueSchema = listMember.getValueSchema(); + const listValueTraits = listValueSchema.getMergedTraits(); + const sparse = !!listValueTraits.sparse; + const flat = !!listTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(listMember, parentXmlns); + const writeItem = (container, value) => { + if (listValueSchema.isListSchema()) { + this.writeList(listValueSchema, Array.isArray(value) ? value : [value], container, xmlns); + } + else if (listValueSchema.isMapSchema()) { + this.writeMap(listValueSchema, value, container, xmlns); + } + else if (listValueSchema.isStructSchema()) { + const struct = this.writeStruct(listValueSchema, value, xmlns); + container.addChildNode(struct.withName(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member")); + } + else { + const listItemNode = xmlBuilder.XmlNode.of(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member"); + this.writeSimpleInto(listValueSchema, value, listItemNode, xmlns); + container.addChildNode(listItemNode); + } + }; + if (flat) { + for (const value of array) { + if (sparse || value != null) { + writeItem(container, value); + } + } + } + else { + const listNode = xmlBuilder.XmlNode.of(listTraits.xmlName ?? listMember.getMemberName()); + if (xmlns) { + listNode.addAttribute(xmlnsAttr, xmlns); + } + for (const value of array) { + if (sparse || value != null) { + writeItem(listNode, value); + } + } + container.addChildNode(listNode); + } + } + writeMap(mapMember, map, container, parentXmlns, containerIsMap = false) { + if (!mapMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member map: ${mapMember.getName(true)}`); + } + const mapTraits = mapMember.getMergedTraits(); + const mapKeySchema = mapMember.getKeySchema(); + const mapKeyTraits = mapKeySchema.getMergedTraits(); + const keyTag = mapKeyTraits.xmlName ?? "key"; + const mapValueSchema = mapMember.getValueSchema(); + const mapValueTraits = mapValueSchema.getMergedTraits(); + const valueTag = mapValueTraits.xmlName ?? "value"; + const sparse = !!mapValueTraits.sparse; + const flat = !!mapTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(mapMember, parentXmlns); + const addKeyValue = (entry, key, val) => { + const keyNode = xmlBuilder.XmlNode.of(keyTag, key); + const [keyXmlnsAttr, keyXmlns] = this.getXmlnsAttribute(mapKeySchema, xmlns); + if (keyXmlns) { + keyNode.addAttribute(keyXmlnsAttr, keyXmlns); + } + entry.addChildNode(keyNode); + let valueNode = xmlBuilder.XmlNode.of(valueTag); + if (mapValueSchema.isListSchema()) { + this.writeList(mapValueSchema, val, valueNode, xmlns); + } + else if (mapValueSchema.isMapSchema()) { + this.writeMap(mapValueSchema, val, valueNode, xmlns, true); + } + else if (mapValueSchema.isStructSchema()) { + valueNode = this.writeStruct(mapValueSchema, val, xmlns); + } + else { + this.writeSimpleInto(mapValueSchema, val, valueNode, xmlns); + } + entry.addChildNode(valueNode); + }; + if (flat) { + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = xmlBuilder.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + addKeyValue(entry, key, val); + container.addChildNode(entry); + } + } + } + else { + let mapNode; + if (!containerIsMap) { + mapNode = xmlBuilder.XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + if (xmlns) { + mapNode.addAttribute(xmlnsAttr, xmlns); + } + container.addChildNode(mapNode); + } + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = xmlBuilder.XmlNode.of("entry"); + addKeyValue(entry, key, val); + (containerIsMap ? container : mapNode).addChildNode(entry); + } + } + } + } + writeSimple(_schema, value) { + if (null === value) { + throw new Error("@aws-sdk/core/protocols - (XML serializer) cannot write null value."); + } + const ns = schema.NormalizedSchema.of(_schema); + let nodeContents = null; + if (value && typeof value === "object") { + if (ns.isBlobSchema()) { + nodeContents = (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + } + else if (ns.isTimestampSchema() && value instanceof Date) { + const format = protocols.determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + nodeContents = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + nodeContents = smithyClient.dateToUtcString(value); + break; + case 7: + nodeContents = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using http date", value); + nodeContents = smithyClient.dateToUtcString(value); + break; + } + } + else if (ns.isBigDecimalSchema() && value) { + if (value instanceof serde.NumericValue) { + return value.string; + } + return String(value); + } + else if (ns.isMapSchema() || ns.isListSchema()) { + throw new Error("@aws-sdk/core/protocols - xml serializer, cannot call _write() on List/Map schema, call writeList or writeMap() instead."); + } + else { + throw new Error(`@aws-sdk/core/protocols - xml serializer, unhandled schema type for object value and schema: ${ns.getName(true)}`); + } + } + if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isBigIntegerSchema() || ns.isBigDecimalSchema()) { + nodeContents = String(value); + } + if (ns.isStringSchema()) { + if (value === undefined && ns.isIdempotencyToken()) { + nodeContents = serde.generateIdempotencyToken(); + } + else { + nodeContents = String(value); + } + } + if (nodeContents === null) { + throw new Error(`Unhandled schema-value pair ${ns.getName(true)}=${value}`); + } + return nodeContents; + } + writeSimpleInto(_schema, value, into, parentXmlns) { + const nodeContents = this.writeSimple(_schema, value); + const ns = schema.NormalizedSchema.of(_schema); + const content = new xmlBuilder.XmlText(nodeContents); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + if (xmlns) { + into.addAttribute(xmlnsAttr, xmlns); + } + into.addChildNode(content); + } + getXmlnsAttribute(ns, parentXmlns) { + const traits = ns.getMergedTraits(); + const [prefix, xmlns] = traits.xmlNamespace ?? []; + if (xmlns && xmlns !== parentXmlns) { + return [prefix ? `xmlns:${prefix}` : "xmlns", xmlns]; + } + return [void 0, void 0]; + } +} + +class XmlCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new XmlShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new XmlShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} + +class AwsRestXmlProtocol extends protocols.HttpBindingProtocol { + codec; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super(options); + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: true, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + }; + this.codec = new XmlCodec(settings); + this.serializer = new protocols.HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new protocols.HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + this.compositeErrorRegistry; + } + getPayloadCodec() { + return this.codec; + } + getShapeId() { + return "aws.protocols#restXml"; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = schema.NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (typeof request.body === "string" && + request.headers["content-type"] === this.getDefaultContentType() && + !request.body.startsWith("' + request.body; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestXmlErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + if (dataObject.Error && typeof dataObject.Error === "object") { + for (const key of Object.keys(dataObject.Error)) { + dataObject[key] = dataObject.Error[key]; + if (key.toLowerCase() === "message") { + dataObject.message = dataObject.Error[key]; + } + } + } + if (dataObject.RequestId && !metadata.requestId) { + metadata.requestId = dataObject.RequestId; + } + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = schema.NormalizedSchema.of(errorSchema); + const message = dataObject.Error?.message ?? + dataObject.Error?.Message ?? + dataObject.message ?? + dataObject.Message ?? + "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = dataObject.Error?.[target] ?? dataObject[target]; + output[name] = this.codec.createDeserializer().readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/xml"; + } + hasUnstructuredPayloadBinding(ns) { + for (const [, member] of ns.structIterator()) { + if (member.getMergedTraits().httpPayload) { + return !(member.isStructSchema() || member.isMapSchema() || member.isListSchema()); + } + } + return false; + } +} + +exports.AwsEc2QueryProtocol = AwsEc2QueryProtocol; +exports.AwsJson1_0Protocol = AwsJson1_0Protocol; +exports.AwsJson1_1Protocol = AwsJson1_1Protocol; +exports.AwsJsonRpcProtocol = AwsJsonRpcProtocol; +exports.AwsQueryProtocol = AwsQueryProtocol; +exports.AwsRestJsonProtocol = AwsRestJsonProtocol; +exports.AwsRestXmlProtocol = AwsRestXmlProtocol; +exports.AwsSmithyRpcV2CborProtocol = AwsSmithyRpcV2CborProtocol; +exports.JsonCodec = JsonCodec; +exports.JsonShapeDeserializer = JsonShapeDeserializer; +exports.JsonShapeSerializer = JsonShapeSerializer; +exports.QueryShapeSerializer = QueryShapeSerializer; +exports.XmlCodec = XmlCodec; +exports.XmlShapeDeserializer = XmlShapeDeserializer; +exports.XmlShapeSerializer = XmlShapeSerializer; +exports._toBool = _toBool; +exports._toNum = _toNum; +exports._toStr = _toStr; +exports.awsExpectUnion = awsExpectUnion; +exports.loadRestJsonErrorCode = loadRestJsonErrorCode; +exports.loadRestXmlErrorCode = loadRestXmlErrorCode; +exports.parseJsonBody = parseJsonBody; +exports.parseJsonErrorBody = parseJsonErrorBody; +exports.parseXmlBody = parseXmlBody; +exports.parseXmlErrorBody = parseXmlErrorBody; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/index.js b/bff/node_modules/@aws-sdk/core/dist-es/index.js new file mode 100644 index 0000000..239de7a --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./submodules/client/index"; +export * from "./submodules/httpAuthSchemes/index"; +export * from "./submodules/protocols/index"; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js new file mode 100644 index 0000000..9f56daf --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js @@ -0,0 +1,15 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +import { DEFAULT_ACCOUNT_ID_ENDPOINT_MODE, validateAccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +export const resolveAccountIdEndpointModeConfig = (input) => { + const { accountIdEndpointMode } = input; + const accountIdEndpointModeProvider = normalizeProvider(accountIdEndpointMode ?? DEFAULT_ACCOUNT_ID_ENDPOINT_MODE); + return Object.assign(input, { + accountIdEndpointMode: async () => { + const accIdMode = await accountIdEndpointModeProvider(); + if (!validateAccountIdEndpointMode(accIdMode)) { + throw new Error(`Invalid value for accountIdEndpointMode: ${accIdMode}. Valid values are: "required", "preferred", "disabled".`); + } + return accIdMode; + }, + }); +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConstants.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConstants.js new file mode 100644 index 0000000..e7a2ca0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConstants.js @@ -0,0 +1,5 @@ +export const DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = "preferred"; +export const ACCOUNT_ID_ENDPOINT_MODE_VALUES = ["disabled", "preferred", "required"]; +export function validateAccountIdEndpointMode(value) { + return ACCOUNT_ID_ENDPOINT_MODE_VALUES.includes(value); +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.js new file mode 100644 index 0000000..adc1496 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.js @@ -0,0 +1,24 @@ +import { DEFAULT_ACCOUNT_ID_ENDPOINT_MODE, validateAccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +const err = "Invalid AccountIdEndpointMode value"; +const _throw = (message) => { + throw new Error(message); +}; +export const ENV_ACCOUNT_ID_ENDPOINT_MODE = "AWS_ACCOUNT_ID_ENDPOINT_MODE"; +export const CONFIG_ACCOUNT_ID_ENDPOINT_MODE = "account_id_endpoint_mode"; +export const NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[ENV_ACCOUNT_ID_ENDPOINT_MODE]; + if (value && !validateAccountIdEndpointMode(value)) { + _throw(err); + } + return value; + }, + configFileSelector: (profile) => { + const value = profile[CONFIG_ACCOUNT_ID_ENDPOINT_MODE]; + if (value && !validateAccountIdEndpointMode(value)) { + _throw(err); + } + return value; + }, + default: DEFAULT_ACCOUNT_ID_ENDPOINT_MODE, +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/index.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/index.js new file mode 100644 index 0000000..52af11d --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/index.js @@ -0,0 +1,3 @@ +export * from "./AccountIdEndpointModeConfigResolver"; +export * from "./AccountIdEndpointModeConstants"; +export * from "./NodeAccountIdEndpointModeConfigOptions"; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js new file mode 100644 index 0000000..b254425 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js @@ -0,0 +1,15 @@ +export const state = { + warningEmitted: false, +}; +export const emitWarningIfUnsupportedVersion = (version) => { + if (version && !state.warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 20) { + state.warningEmitted = true; + process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will +no longer support Node.js ${version} in January 2026. + +To continue receiving updates to AWS services, bug fixes, and security +updates please upgrade to a supported Node.js LTS version. + +More information can be found at: https://a.co/c895JFp`); + } +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js new file mode 100644 index 0000000..492c6cd --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js @@ -0,0 +1,4 @@ +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./setCredentialFeature"; +export * from "./setFeature"; +export * from "./setTokenFeature"; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js new file mode 100644 index 0000000..a489c40 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js @@ -0,0 +1,7 @@ +export function setCredentialFeature(credentials, feature, value) { + if (!credentials.$source) { + credentials.$source = {}; + } + credentials.$source[feature] = value; + return credentials; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js new file mode 100644 index 0000000..2d8804b --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js @@ -0,0 +1,11 @@ +export function setFeature(context, feature, value) { + if (!context.__aws_sdk_context) { + context.__aws_sdk_context = { + features: {}, + }; + } + else if (!context.__aws_sdk_context.features) { + context.__aws_sdk_context.features = {}; + } + context.__aws_sdk_context.features[feature] = value; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js new file mode 100644 index 0000000..3f2bc60 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/client/setTokenFeature.js @@ -0,0 +1,7 @@ +export function setTokenFeature(token, feature, value) { + if (!token.$source) { + token.$source = {}; + } + token.$source[feature] = value; + return token; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js new file mode 100644 index 0000000..548fefb --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.js @@ -0,0 +1,20 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { getSkewCorrectedDate } from "../utils"; +import { AwsSdkSigV4Signer, validateSigningProperties } from "./AwsSdkSigV4Signer"; +export class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const { config, signer, signingRegion, signingRegionSet, signingName } = await validateSigningProperties(signingProperties); + const configResolvedSigningRegionSet = await config.sigv4aSigningRegionSet?.(); + const multiRegionOverride = (configResolvedSigningRegionSet ?? + signingRegionSet ?? [signingRegion]).join(","); + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: multiRegionOverride, + signingService: signingName, + }); + return signedRequest; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js new file mode 100644 index 0000000..ee236cd --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js @@ -0,0 +1,72 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { getDateHeader, getSkewCorrectedDate, getUpdatedSystemClockOffset } from "../utils"; +const throwSigningPropertyError = (name, property) => { + if (!property) { + throw new Error(`Property \`${name}\` is not resolved for AWS SDK SigV4Auth`); + } + return property; +}; +export const validateSigningProperties = async (signingProperties) => { + const context = throwSigningPropertyError("context", signingProperties.context); + const config = throwSigningPropertyError("config", signingProperties.config); + const authScheme = context.endpointV2?.properties?.authSchemes?.[0]; + const signerFunction = throwSigningPropertyError("signer", config.signer); + const signer = await signerFunction(authScheme); + const signingRegion = signingProperties?.signingRegion; + const signingRegionSet = signingProperties?.signingRegionSet; + const signingName = signingProperties?.signingName; + return { + config, + signer, + signingRegion, + signingRegionSet, + signingName, + }; +}; +export class AwsSdkSigV4Signer { + async sign(httpRequest, identity, signingProperties) { + if (!HttpRequest.isInstance(httpRequest)) { + throw new Error("The request is not an instance of `HttpRequest` and cannot be signed"); + } + const validatedProps = await validateSigningProperties(signingProperties); + const { config, signer } = validatedProps; + let { signingRegion, signingName } = validatedProps; + const handlerExecutionContext = signingProperties.context; + if (handlerExecutionContext?.authSchemes?.length ?? 0 > 1) { + const [first, second] = handlerExecutionContext.authSchemes; + if (first?.name === "sigv4a" && second?.name === "sigv4") { + signingRegion = second?.signingRegion ?? signingRegion; + signingName = second?.signingName ?? signingName; + } + } + const signedRequest = await signer.sign(httpRequest, { + signingDate: getSkewCorrectedDate(config.systemClockOffset), + signingRegion: signingRegion, + signingService: signingName, + }); + return signedRequest; + } + errorHandler(signingProperties) { + return (error) => { + const serverTime = error.ServerTime ?? getDateHeader(error.$response); + if (serverTime) { + const config = throwSigningPropertyError("config", signingProperties.config); + const initialSystemClockOffset = config.systemClockOffset; + config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset); + const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset; + if (clockSkewCorrected && error.$metadata) { + error.$metadata.clockSkewCorrected = true; + } + } + throw error; + }; + } + successHandler(httpResponse, signingProperties) { + const dateHeader = getDateHeader(httpResponse); + if (dateHeader) { + const config = throwSigningPropertyError("config", signingProperties.config); + config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset); + } + } +} +export const AWSSDKSigV4Signer = AwsSdkSigV4Signer; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js new file mode 100644 index 0000000..5d7cf82 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.js @@ -0,0 +1,22 @@ +import { getArrayForCommaSeparatedString } from "../utils/getArrayForCommaSeparatedString"; +import { getBearerTokenEnvKey } from "../utils/getBearerTokenEnvKey"; +const NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY = "AWS_AUTH_SCHEME_PREFERENCE"; +const NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY = "auth_scheme_preference"; +export const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS = { + environmentVariableSelector: (env, options) => { + if (options?.signingName) { + const bearerTokenKey = getBearerTokenEnvKey(options.signingName); + if (bearerTokenKey in env) + return ["httpBearerAuth"]; + } + if (!(NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY in env)) + return undefined; + return getArrayForCommaSeparatedString(env[NODE_AUTH_SCHEME_PREFERENCE_ENV_KEY]); + }, + configFileSelector: (profile) => { + if (!(NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY in profile)) + return undefined; + return getArrayForCommaSeparatedString(profile[NODE_AUTH_SCHEME_PREFERENCE_CONFIG_KEY]); + }, + default: [], +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js new file mode 100644 index 0000000..4071225 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/index.js @@ -0,0 +1,5 @@ +export { AwsSdkSigV4Signer, AWSSDKSigV4Signer, validateSigningProperties } from "./AwsSdkSigV4Signer"; +export { AwsSdkSigV4ASigner } from "./AwsSdkSigV4ASigner"; +export * from "./NODE_AUTH_SCHEME_PREFERENCE_OPTIONS"; +export * from "./resolveAwsSdkSigV4AConfig"; +export * from "./resolveAwsSdkSigV4Config"; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js new file mode 100644 index 0000000..0e62ef0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.js @@ -0,0 +1,25 @@ +import { normalizeProvider } from "@smithy/core"; +import { ProviderError } from "@smithy/property-provider"; +export const resolveAwsSdkSigV4AConfig = (config) => { + config.sigv4aSigningRegionSet = normalizeProvider(config.sigv4aSigningRegionSet); + return config; +}; +export const NODE_SIGV4A_CONFIG_OPTIONS = { + environmentVariableSelector(env) { + if (env.AWS_SIGV4A_SIGNING_REGION_SET) { + return env.AWS_SIGV4A_SIGNING_REGION_SET.split(",").map((_) => _.trim()); + } + throw new ProviderError("AWS_SIGV4A_SIGNING_REGION_SET not set in env.", { + tryNextLink: true, + }); + }, + configFileSelector(profile) { + if (profile.sigv4a_signing_region_set) { + return (profile.sigv4a_signing_region_set ?? "").split(",").map((_) => _.trim()); + } + throw new ProviderError("sigv4a_signing_region_set not set in profile.", { + tryNextLink: true, + }); + }, + default: undefined, +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js new file mode 100644 index 0000000..8c8db4f --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js @@ -0,0 +1,139 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { doesIdentityRequireRefresh, isIdentityExpired, memoizeIdentityProvider, normalizeProvider, } from "@smithy/core"; +import { SignatureV4 } from "@smithy/signature-v4"; +export const resolveAwsSdkSigV4Config = (config) => { + let inputCredentials = config.credentials; + let isUserSupplied = !!config.credentials; + let resolvedCredentials = undefined; + Object.defineProperty(config, "credentials", { + set(credentials) { + if (credentials && credentials !== inputCredentials && credentials !== resolvedCredentials) { + isUserSupplied = true; + } + inputCredentials = credentials; + const memoizedProvider = normalizeCredentialProvider(config, { + credentials: inputCredentials, + credentialDefaultProvider: config.credentialDefaultProvider, + }); + const boundProvider = bindCallerConfig(config, memoizedProvider); + if (isUserSupplied && !boundProvider.attributed) { + const isCredentialObject = typeof inputCredentials === "object" && inputCredentials !== null; + resolvedCredentials = async (options) => { + const creds = await boundProvider(options); + const attributedCreds = creds; + if (isCredentialObject && (!attributedCreds.$source || Object.keys(attributedCreds.$source).length === 0)) { + return setCredentialFeature(attributedCreds, "CREDENTIALS_CODE", "e"); + } + return attributedCreds; + }; + resolvedCredentials.memoized = boundProvider.memoized; + resolvedCredentials.configBound = boundProvider.configBound; + resolvedCredentials.attributed = true; + } + else { + resolvedCredentials = boundProvider; + } + }, + get() { + return resolvedCredentials; + }, + enumerable: true, + configurable: true, + }); + config.credentials = inputCredentials; + const { signingEscapePath = true, systemClockOffset = config.systemClockOffset || 0, sha256, } = config; + let signer; + if (config.signer) { + signer = normalizeProvider(config.signer); + } + else if (config.regionInfoProvider) { + signer = () => normalizeProvider(config.region)() + .then(async (region) => [ + (await config.regionInfoProvider(region, { + useFipsEndpoint: await config.useFipsEndpoint(), + useDualstackEndpoint: await config.useDualstackEndpoint(), + })) || {}, + region, + ]) + .then(([regionInfo, region]) => { + const { signingRegion, signingService } = regionInfo; + config.signingRegion = config.signingRegion || signingRegion || region; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || SignatureV4; + return new SignerCtor(params); + }); + } + else { + signer = async (authScheme) => { + authScheme = Object.assign({}, { + name: "sigv4", + signingName: config.signingName || config.defaultSigningName, + signingRegion: await normalizeProvider(config.region)(), + properties: {}, + }, authScheme); + const signingRegion = authScheme.signingRegion; + const signingService = authScheme.signingName; + config.signingRegion = config.signingRegion || signingRegion; + config.signingName = config.signingName || signingService || config.serviceId; + const params = { + ...config, + credentials: config.credentials, + region: config.signingRegion, + service: config.signingName, + sha256, + uriEscapePath: signingEscapePath, + }; + const SignerCtor = config.signerConstructor || SignatureV4; + return new SignerCtor(params); + }; + } + const resolvedConfig = Object.assign(config, { + systemClockOffset, + signingEscapePath, + signer, + }); + return resolvedConfig; +}; +export const resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config; +function normalizeCredentialProvider(config, { credentials, credentialDefaultProvider, }) { + let credentialsProvider; + if (credentials) { + if (!credentials?.memoized) { + credentialsProvider = memoizeIdentityProvider(credentials, isIdentityExpired, doesIdentityRequireRefresh); + } + else { + credentialsProvider = credentials; + } + } + else { + if (credentialDefaultProvider) { + credentialsProvider = normalizeProvider(credentialDefaultProvider(Object.assign({}, config, { + parentClientConfig: config, + }))); + } + else { + credentialsProvider = async () => { + throw new Error("@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured."); + }; + } + } + credentialsProvider.memoized = true; + return credentialsProvider; +} +function bindCallerConfig(config, credentialsProvider) { + if (credentialsProvider.configBound) { + return credentialsProvider; + } + const fn = async (options) => credentialsProvider({ ...options, callerClientConfig: config }); + fn.memoized = credentialsProvider.memoized; + fn.configBound = true; + return fn; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js new file mode 100644 index 0000000..3927741 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/index.js @@ -0,0 +1,2 @@ +export * from "./aws_sdk"; +export * from "./utils/getBearerTokenEnvKey"; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js new file mode 100644 index 0000000..aa60799 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.js @@ -0,0 +1 @@ +export const getArrayForCommaSeparatedString = (str) => typeof str === "string" && str.length > 0 ? str.split(",").map((item) => item.trim()) : []; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js new file mode 100644 index 0000000..27eff7f --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.js @@ -0,0 +1 @@ +export const getBearerTokenEnvKey = (signingName) => `AWS_BEARER_TOKEN_${signingName.replace(/[\s-]/g, "_").toUpperCase()}`; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js new file mode 100644 index 0000000..449c182 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js @@ -0,0 +1,2 @@ +import { HttpResponse } from "@smithy/protocol-http"; +export const getDateHeader = (response) => HttpResponse.isInstance(response) ? response.headers?.date ?? response.headers?.Date : undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js new file mode 100644 index 0000000..6ee8036 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js @@ -0,0 +1 @@ +export const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset); diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js new file mode 100644 index 0000000..859c41a --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js @@ -0,0 +1,8 @@ +import { isClockSkewed } from "./isClockSkewed"; +export const getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => { + const clockTimeInMs = Date.parse(clockTime); + if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) { + return clockTimeInMs - Date.now(); + } + return currentSystemClockOffset; +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js new file mode 100644 index 0000000..07c2195 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/index.js @@ -0,0 +1,3 @@ +export * from "./getDateHeader"; +export * from "./getSkewCorrectedDate"; +export * from "./getUpdatedSystemClockOffset"; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js new file mode 100644 index 0000000..086d7a8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js @@ -0,0 +1,2 @@ +import { getSkewCorrectedDate } from "./getSkewCorrectedDate"; +export const isClockSkewed = (clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 300000; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js new file mode 100644 index 0000000..0684ab6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ConfigurableSerdeContext.js @@ -0,0 +1,6 @@ +export class SerdeContextConfig { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js new file mode 100644 index 0000000..95da94d --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js @@ -0,0 +1,140 @@ +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { decorateServiceException } from "@smithy/smithy-client"; +export class ProtocolLib { + queryCompat; + errorRegistry; + constructor(queryCompat = false) { + this.queryCompat = queryCompat; + } + resolveRestContentType(defaultContentType, inputSchema) { + const members = inputSchema.getMemberSchemas(); + const httpPayloadMember = Object.values(members).find((m) => { + return !!m.getMergedTraits().httpPayload; + }); + if (httpPayloadMember) { + const mediaType = httpPayloadMember.getMergedTraits().mediaType; + if (mediaType) { + return mediaType; + } + else if (httpPayloadMember.isStringSchema()) { + return "text/plain"; + } + else if (httpPayloadMember.isBlobSchema()) { + return "application/octet-stream"; + } + else { + return defaultContentType; + } + } + else if (!inputSchema.isUnitSchema()) { + const hasBody = Object.values(members).find((m) => { + const { httpQuery, httpQueryParams, httpHeader, httpLabel, httpPrefixHeaders } = m.getMergedTraits(); + const noPrefixHeaders = httpPrefixHeaders === void 0; + return !httpQuery && !httpQueryParams && !httpHeader && !httpLabel && noPrefixHeaders; + }); + if (hasBody) { + return defaultContentType; + } + } + } + async getErrorSchemaOrThrowBaseException(errorIdentifier, defaultNamespace, response, dataObject, metadata, getErrorSchema) { + let errorName = errorIdentifier; + if (errorIdentifier.includes("#")) { + [, errorName] = errorIdentifier.split("#"); + } + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode < 500 ? "client" : "server", + }; + if (!this.errorRegistry) { + throw new Error("@aws-sdk/core/protocols - error handler not initialized."); + } + try { + const errorSchema = getErrorSchema?.(this.errorRegistry, errorName) ?? + this.errorRegistry.getSchema(errorIdentifier); + return { errorSchema, errorMetadata }; + } + catch (e) { + dataObject.message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const synthetic = this.errorRegistry; + const baseExceptionSchema = synthetic.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = synthetic.getErrorCtor(baseExceptionSchema) ?? Error; + throw this.decorateServiceException(Object.assign(new ErrorCtor({ name: errorName }), errorMetadata), dataObject); + } + const d = dataObject; + const message = d?.message ?? d?.Message ?? d?.Error?.Message ?? d?.Error?.message; + throw this.decorateServiceException(Object.assign(new Error(message), { + name: errorName, + }, errorMetadata), dataObject); + } + } + compose(composite, errorIdentifier, defaultNamespace) { + let namespace = defaultNamespace; + if (errorIdentifier.includes("#")) { + [namespace] = errorIdentifier.split("#"); + } + const staticRegistry = TypeRegistry.for(namespace); + const defaultSyntheticRegistry = TypeRegistry.for("smithy.ts.sdk.synthetic." + defaultNamespace); + composite.copyFrom(staticRegistry); + composite.copyFrom(defaultSyntheticRegistry); + this.errorRegistry = composite; + } + decorateServiceException(exception, additions = {}) { + if (this.queryCompat) { + const msg = exception.Message ?? additions.Message; + const error = decorateServiceException(exception, additions); + if (msg) { + error.message = msg; + } + error.Error = { + ...error.Error, + Type: error.Error?.Type, + Code: error.Error?.Code, + Message: error.Error?.message ?? error.Error?.Message ?? msg, + }; + const reqId = error.$metadata.requestId; + if (reqId) { + error.RequestId = reqId; + } + return error; + } + return decorateServiceException(exception, additions); + } + setQueryCompatError(output, response) { + const queryErrorHeader = response.headers?.["x-amzn-query-error"]; + if (output !== undefined && queryErrorHeader != null) { + const [Code, Type] = queryErrorHeader.split(";"); + const entries = Object.entries(output); + const Error = { + Code, + Type, + }; + Object.assign(output, Error); + for (const [k, v] of entries) { + Error[k === "message" ? "Message" : k] = v; + } + delete Error.__type; + output.Error = Error; + } + } + queryCompatOutput(queryCompatErrorData, errorData) { + if (queryCompatErrorData.Error) { + errorData.Error = queryCompatErrorData.Error; + } + if (queryCompatErrorData.Type) { + errorData.Type = queryCompatErrorData.Type; + } + if (queryCompatErrorData.Code) { + errorData.Code = queryCompatErrorData.Code; + } + } + findQueryCompatibleError(registry, errorName) { + try { + return registry.getSchema(errorName); + } + catch (e) { + return registry.find((schema) => NormalizedSchema.of(schema).getMergedTraits().awsQueryError?.[0] === errorName); + } + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js new file mode 100644 index 0000000..ed75be6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js @@ -0,0 +1,23 @@ +export class UnionSerde { + from; + to; + keys; + constructor(from, to) { + this.from = from; + this.to = to; + this.keys = new Set(Object.keys(this.from).filter((k) => k !== "__type")); + } + mark(key) { + this.keys.delete(key); + } + hasUnknown() { + return this.keys.size === 1 && Object.keys(this.to).length === 0; + } + writeUnknown() { + if (this.hasUnknown()) { + const k = this.keys.values().next().value; + const v = this.from[k]; + this.to.$unknown = [k, v]; + } + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js new file mode 100644 index 0000000..9e64354 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.js @@ -0,0 +1,50 @@ +import { loadSmithyRpcV2CborErrorCode, SmithyRpcV2CborProtocol } from "@smithy/core/cbor"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +export class AwsSmithyRpcV2CborProtocol extends SmithyRpcV2CborProtocol { + awsQueryCompatible; + mixin; + constructor({ defaultNamespace, errorTypeRegistries, awsQueryCompatible, }) { + super({ defaultNamespace, errorTypeRegistries }); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + return request; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorName = (() => { + const compatHeader = response.headers["x-amzn-query-error"]; + if (compatHeader && this.awsQueryCompatible) { + return compatHeader.split(";")[0]; + } + return loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + })(); + this.mixin.compose(this.compositeErrorRegistry, errorName, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorName, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/coercing-serializers.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/coercing-serializers.js new file mode 100644 index 0000000..fce893b --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/coercing-serializers.js @@ -0,0 +1,53 @@ +export const _toStr = (val) => { + if (val == null) { + return val; + } + if (typeof val === "number" || typeof val === "bigint") { + const warning = new Error(`Received number ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + if (typeof val === "boolean") { + const warning = new Error(`Received boolean ${val} where a string was expected.`); + warning.name = "Warning"; + console.warn(warning); + return String(val); + } + return val; +}; +export const _toBool = (val) => { + if (val == null) { + return val; + } + if (typeof val === "number") { + } + if (typeof val === "string") { + const lowercase = val.toLowerCase(); + if (val !== "" && lowercase !== "false" && lowercase !== "true") { + const warning = new Error(`Received string "${val}" where a boolean was expected.`); + warning.name = "Warning"; + console.warn(warning); + } + return val !== "" && lowercase !== "false"; + } + return val; +}; +export const _toNum = (val) => { + if (val == null) { + return val; + } + if (typeof val === "boolean") { + } + if (typeof val === "string") { + const num = Number(val); + if (num.toString() !== val) { + const warning = new Error(`Received string "${val}" where a number was expected.`); + warning.name = "Warning"; + console.warn(warning); + return val; + } + return num; + } + return val; +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js new file mode 100644 index 0000000..1b16750 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js @@ -0,0 +1,3 @@ +import { collectBody } from "@smithy/smithy-client"; +import { toUtf8 } from "@smithy/util-utf8"; +export const collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => (context?.utf8Encoder ?? toUtf8)(body)); diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js new file mode 100644 index 0000000..0a230f9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/index.js @@ -0,0 +1,20 @@ +export * from "./cbor/AwsSmithyRpcV2CborProtocol"; +export * from "./coercing-serializers"; +export * from "./json/AwsJson1_0Protocol"; +export * from "./json/AwsJson1_1Protocol"; +export * from "./json/AwsJsonRpcProtocol"; +export * from "./json/AwsRestJsonProtocol"; +export * from "./json/JsonCodec"; +export * from "./json/JsonShapeDeserializer"; +export * from "./json/JsonShapeSerializer"; +export * from "./json/awsExpectUnion"; +export * from "./json/parseJsonBody"; +export * from "./query/AwsEc2QueryProtocol"; +export * from "./query/AwsQueryProtocol"; +export * from "./query/QuerySerializerSettings"; +export * from "./query/QueryShapeSerializer"; +export * from "./xml/AwsRestXmlProtocol"; +export * from "./xml/XmlCodec"; +export * from "./xml/XmlShapeDeserializer"; +export * from "./xml/XmlShapeSerializer"; +export * from "./xml/parseXmlBody"; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js new file mode 100644 index 0000000..c25db44 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_0Protocol.js @@ -0,0 +1,21 @@ +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +export class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + errorTypeRegistries, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_0"; + } + getJsonRpcVersion() { + return "1.0"; + } + getDefaultContentType() { + return "application/x-amz-json-1.0"; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js new file mode 100644 index 0000000..28d0145 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJson1_1Protocol.js @@ -0,0 +1,21 @@ +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +export class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + errorTypeRegistries, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }); + } + getShapeId() { + return "aws.protocols#awsJson1_1"; + } + getJsonRpcVersion() { + return "1.1"; + } + getDefaultContentType() { + return "application/x-amz-json-1.1"; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js new file mode 100644 index 0000000..6e4f3be --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js @@ -0,0 +1,78 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { deref, NormalizedSchema } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +import { JsonCodec } from "./JsonCodec"; +import { loadRestJsonErrorCode } from "./parseJsonBody"; +export class AwsJsonRpcProtocol extends RpcProtocol { + serializer; + deserializer; + serviceTarget; + codec; + mixin; + awsQueryCompatible; + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }) { + super({ + defaultNamespace, + errorTypeRegistries, + }); + this.serviceTarget = serviceTarget; + this.codec = + jsonCodec ?? + new JsonCodec({ + timestampFormat: { + useTrait: true, + default: 7, + }, + jsonName: false, + }); + this.serializer = this.codec.createSerializer(); + this.deserializer = this.codec.createDeserializer(); + this.awsQueryCompatible = !!awsQueryCompatible; + this.mixin = new ProtocolLib(this.awsQueryCompatible); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-amz-json-${this.getJsonRpcVersion()}`, + "x-amz-target": `${this.serviceTarget}.${operationSchema.name}`, + }); + if (this.awsQueryCompatible) { + request.headers["x-amzn-query-mode"] = "true"; + } + if (deref(operationSchema.input) === "unit" || !request.body) { + request.body = "{}"; + } + return request; + } + getPayloadCodec() { + return this.codec; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + if (this.awsQueryCompatible) { + this.mixin.setQueryCompatError(dataObject, response); + } + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata, this.awsQueryCompatible ? this.mixin.findQueryCompatibleError : undefined); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + if (dataObject[name] != null) { + output[name] = this.codec.createDeserializer().readObject(member, dataObject[name]); + } + } + if (this.awsQueryCompatible) { + this.mixin.queryCompatOutput(dataObject, output); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js new file mode 100644 index 0000000..5baab18 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js @@ -0,0 +1,84 @@ +import { HttpBindingProtocol, HttpInterceptingShapeDeserializer, HttpInterceptingShapeSerializer, } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +import { JsonCodec } from "./JsonCodec"; +import { loadRestJsonErrorCode } from "./parseJsonBody"; +export class AwsRestJsonProtocol extends HttpBindingProtocol { + serializer; + deserializer; + codec; + mixin = new ProtocolLib(); + constructor({ defaultNamespace, errorTypeRegistries, }) { + super({ + defaultNamespace, + errorTypeRegistries, + }); + const settings = { + timestampFormat: { + useTrait: true, + default: 7, + }, + httpBindings: true, + jsonName: true, + }; + this.codec = new JsonCodec(settings); + this.serializer = new HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + } + getShapeId() { + return "aws.protocols#restJson1"; + } + getPayloadCodec() { + return this.codec; + } + setSerdeContext(serdeContext) { + this.codec.setSerdeContext(serdeContext); + super.setSerdeContext(serdeContext); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (request.body == null && request.headers["content-type"] === this.getDefaultContentType()) { + request.body = "{}"; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const output = await super.deserializeResponse(operationSchema, context, response); + const outputSchema = NormalizedSchema.of(operationSchema.output); + for (const [name, member] of outputSchema.structIterator()) { + if (member.getMemberTraits().httpPayload && !(name in output)) { + output[name] = null; + } + } + return output; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestJsonErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().jsonName ?? name; + output[name] = this.codec.createDeserializer().readObject(member, dataObject[target]); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/json"; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js new file mode 100644 index 0000000..9a0b234 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonCodec.js @@ -0,0 +1,20 @@ +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonShapeDeserializer } from "./JsonShapeDeserializer"; +import { JsonShapeSerializer } from "./JsonShapeSerializer"; +export class JsonCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new JsonShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new JsonShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js new file mode 100644 index 0000000..5e29279 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js @@ -0,0 +1,149 @@ +import { determineTimestampFormat } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { LazyJsonString, NumericValue, parseEpochTimestamp, parseRfc3339DateTimeWithOffset, parseRfc7231DateTime, } from "@smithy/core/serde"; +import { fromBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { UnionSerde } from "../UnionSerde"; +import { jsonReviver } from "./jsonReviver"; +import { parseJsonBody } from "./parseJsonBody"; +export class JsonShapeDeserializer extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + async read(schema, data) { + return this._read(schema, typeof data === "string" ? JSON.parse(data, jsonReviver) : await parseJsonBody(data, this.serdeContext)); + } + readObject(schema, data) { + return this._read(schema, data); + } + _read(schema, value) { + const isObject = value !== null && typeof value === "object"; + const ns = NormalizedSchema.of(schema); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const union = ns.isUnionSchema(); + const out = {}; + let nameMap = void 0; + const { jsonName } = this.settings; + if (jsonName) { + nameMap = {}; + } + let unionSerde; + if (union) { + unionSerde = new UnionSerde(record, out); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + let fromKey = memberName; + if (jsonName) { + fromKey = memberSchema.getMergedTraits().jsonName ?? fromKey; + nameMap[fromKey] = memberName; + } + if (union) { + unionSerde.mark(fromKey); + } + if (record[fromKey] != null) { + out[memberName] = this._read(memberSchema, record[fromKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const t = jsonName ? nameMap[k] ?? k : k; + if (!(t in out)) { + out[t] = v; + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + for (const item of value) { + out.push(this._read(listMember, item)); + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + for (const [_k, _v] of Object.entries(value)) { + out[_k] = this._read(mapMember, _v); + } + return out; + } + } + if (ns.isBlobSchema() && typeof value === "string") { + return fromBase64(value); + } + const mediaType = ns.getMergedTraits().mediaType; + if (ns.isStringSchema() && typeof value === "string" && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return LazyJsonString.from(value); + } + return value; + } + if (ns.isTimestampSchema() && value != null) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return parseRfc3339DateTimeWithOffset(value); + case 6: + return parseRfc7231DateTime(value); + case 7: + return parseEpochTimestamp(value); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", value); + return new Date(value); + } + } + if (ns.isBigIntegerSchema() && (typeof value === "number" || typeof value === "string")) { + return BigInt(value); + } + if (ns.isBigDecimalSchema() && value != undefined) { + if (value instanceof NumericValue) { + return value; + } + const untyped = value; + if (untyped.type === "bigDecimal" && "string" in untyped) { + return new NumericValue(untyped.string, untyped.type); + } + return new NumericValue(String(value), "bigDecimal"); + } + if (ns.isNumericSchema() && typeof value === "string") { + switch (value) { + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + case "NaN": + return NaN; + } + return value; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof NumericValue) { + out[k] = v; + } + else { + out[k] = this._read(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js new file mode 100644 index 0000000..8f5e202 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js @@ -0,0 +1,176 @@ +import { determineTimestampFormat } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { dateToUtcString, generateIdempotencyToken, LazyJsonString, NumericValue } from "@smithy/core/serde"; +import { toBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonReplacer } from "./jsonReplacer"; +export class JsonShapeSerializer extends SerdeContextConfig { + settings; + buffer; + useReplacer = false; + rootSchema; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value) { + this.rootSchema = NormalizedSchema.of(schema); + this.buffer = this._write(this.rootSchema, value); + } + writeDiscriminatedDocument(schema, value) { + this.write(schema, value); + if (typeof this.buffer === "object") { + this.buffer.__type = NormalizedSchema.of(schema).getName(true); + } + } + flush() { + const { rootSchema, useReplacer } = this; + this.rootSchema = undefined; + this.useReplacer = false; + if (rootSchema?.isStructSchema() || rootSchema?.isDocumentSchema()) { + if (!useReplacer) { + return JSON.stringify(this.buffer); + } + const replacer = new JsonReplacer(); + return replacer.replaceInJson(JSON.stringify(this.buffer, replacer.createReplacer(), 0)); + } + return this.buffer; + } + _write(schema, value, container) { + const isObject = value !== null && typeof value === "object"; + const ns = NormalizedSchema.of(schema); + if (isObject) { + if (ns.isStructSchema()) { + const record = value; + const out = {}; + const { jsonName } = this.settings; + let nameMap = void 0; + if (jsonName) { + nameMap = {}; + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const serializableValue = this._write(memberSchema, record[memberName], ns); + if (serializableValue !== undefined) { + let targetKey = memberName; + if (jsonName) { + targetKey = memberSchema.getMergedTraits().jsonName ?? memberName; + nameMap[memberName] = targetKey; + } + out[targetKey] = serializableValue; + } + } + if (ns.isUnionSchema() && Object.keys(out).length === 0) { + const { $unknown } = record; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + out[k] = this._write(15, v); + } + } + else if (typeof record.__type === "string") { + for (const [k, v] of Object.entries(record)) { + const targetKey = jsonName ? nameMap[k] ?? k : k; + if (!(targetKey in out)) { + out[targetKey] = this._write(15, v); + } + } + } + return out; + } + if (Array.isArray(value) && ns.isListSchema()) { + const listMember = ns.getValueSchema(); + const out = []; + const sparse = !!ns.getMergedTraits().sparse; + for (const item of value) { + if (sparse || item != null) { + out.push(this._write(listMember, item)); + } + } + return out; + } + if (ns.isMapSchema()) { + const mapMember = ns.getValueSchema(); + const out = {}; + const sparse = !!ns.getMergedTraits().sparse; + for (const [_k, _v] of Object.entries(value)) { + if (sparse || _v != null) { + out[_k] = this._write(mapMember, _v); + } + } + return out; + } + if (value instanceof Uint8Array && (ns.isBlobSchema() || ns.isDocumentSchema())) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? toBase64)(value); + } + if (value instanceof Date && (ns.isTimestampSchema() || ns.isDocumentSchema())) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return value.toISOString().replace(".000Z", "Z"); + case 6: + return dateToUtcString(value); + case 7: + return value.getTime() / 1000; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + return value.getTime() / 1000; + } + } + if (value instanceof NumericValue) { + this.useReplacer = true; + } + } + if (value === null && container?.isStructSchema()) { + return void 0; + } + if (ns.isStringSchema()) { + if (typeof value === "undefined" && ns.isIdempotencyToken()) { + return generateIdempotencyToken(); + } + const mediaType = ns.getMergedTraits().mediaType; + if (value != null && mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return LazyJsonString.from(value); + } + } + return value; + } + if (typeof value === "number" && ns.isNumericSchema()) { + if (Math.abs(value) === Infinity || isNaN(value)) { + return String(value); + } + return value; + } + if (typeof value === "string" && ns.isBlobSchema()) { + if (ns === this.rootSchema) { + return value; + } + return (this.serdeContext?.base64Encoder ?? toBase64)(value); + } + if (typeof value === "bigint") { + this.useReplacer = true; + } + if (ns.isDocumentSchema()) { + if (isObject) { + const out = Array.isArray(value) ? [] : {}; + for (const [k, v] of Object.entries(value)) { + if (v instanceof NumericValue) { + this.useReplacer = true; + out[k] = v; + } + else { + out[k] = this._write(ns, v); + } + } + return out; + } + else { + return structuredClone(value); + } + } + return value; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/awsExpectUnion.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/awsExpectUnion.js new file mode 100644 index 0000000..1c6cc32 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/awsExpectUnion.js @@ -0,0 +1,10 @@ +import { expectUnion } from "@smithy/smithy-client"; +export const awsExpectUnion = (value) => { + if (value == null) { + return undefined; + } + if (typeof value === "object" && "__type" in value) { + delete value.__type; + } + return expectUnion(value); +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.js new file mode 100644 index 0000000..31d0439 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.js @@ -0,0 +1,135 @@ +import { determineTimestampFormat } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { dateToUtcString, generateIdempotencyToken, LazyJsonString, NumericValue } from "@smithy/core/serde"; +import { toBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../../ConfigurableSerdeContext"; +export class SinglePassJsonShapeSerializer extends SerdeContextConfig { + settings; + buffer; + rootSchema; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value) { + this.rootSchema = NormalizedSchema.of(schema); + this.buffer = this.writeObject(this.rootSchema, value); + } + writeDiscriminatedDocument(schema, value) { + this.write(schema, value); + if (typeof this.buffer === "object") { + this.buffer.__type = NormalizedSchema.of(schema).getName(true); + } + } + flush() { + this.rootSchema = undefined; + return this.buffer; + } + writeObject(schema, value) { + if (value == undefined) { + return ""; + } + let b = ""; + const ns = NormalizedSchema.of(schema); + const sparse = !!ns.getMergedTraits().sparse; + if (Array.isArray(value) && (ns.isDocumentSchema() || ns.isListSchema())) { + b += "["; + for (let i = 0; i < value.length; ++i) { + const item = value[i]; + if (item != null || sparse) { + b += this.writeValue(ns.getValueSchema(), item); + b += ","; + } + } + } + else if (ns.isStructSchema()) { + b += "{"; + let didWriteMember = false; + for (const [name, member] of ns.structIterator()) { + const item = value[name]; + const targetKey = this.settings.jsonName ? member.getMergedTraits().jsonName ?? name : name; + const serializableValue = this.writeValue(member, item); + if (item != null || member.isIdempotencyToken()) { + didWriteMember = true; + b += `"${targetKey}":${serializableValue}`; + b += ","; + } + } + if (!didWriteMember && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + b += `"${k}":${this.writeValue(15, v)}`; + } + } + } + else if (ns.isMapSchema() || ns.isDocumentSchema()) { + b += "{"; + for (const [k, v] of Object.entries(value)) { + if (v != null || sparse) { + b += `"${k}":${this.writeValue(ns, v)}`; + b += ","; + } + } + } + if (b[b.length - 1] === ",") { + b = b.slice(0, -1); + } + if (b[0] === "[") { + b += "]"; + } + if (b[0] === "{") { + b += "}"; + } + return b; + } + writeValue(schema, value) { + const isObject = value !== null && typeof value === "object"; + const ns = NormalizedSchema.of(schema); + const quote = (_) => `"${_}"`; + if ((ns.isBlobSchema() && (value instanceof Uint8Array || typeof value === "string")) || + (ns.isDocumentSchema() && value instanceof Uint8Array)) { + return quote((this.serdeContext?.base64Encoder ?? toBase64)(value)); + } + if ((ns.isTimestampSchema() || ns.isDocumentSchema()) && value instanceof Date) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return quote(value.toISOString().replace(".000Z", "Z")); + case 6: + return quote(dateToUtcString(value)); + case 7: + return String(value.getTime() / 1000); + default: + console.warn("Missing timestamp format, using epoch seconds", value); + return String(value.getTime() / 1000); + } + } + if (ns.isNumericSchema() && typeof value === "number") { + if (Math.abs(value) === Infinity || isNaN(value)) { + return quote(String(value)); + } + } + if (ns.isStringSchema()) { + if (typeof value === "undefined" && ns.isIdempotencyToken()) { + return quote(generateIdempotencyToken()); + } + if (typeof value === "string") { + const mediaType = ns.getMergedTraits().mediaType; + if (mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + return quote(LazyJsonString.from(value).toString()); + } + } + } + } + if (value instanceof NumericValue) { + return value.string; + } + if (isObject) { + return this.writeObject(ns, value); + } + return typeof value === "string" ? quote(value) : String(value); + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js new file mode 100644 index 0000000..7dbb98c --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReplacer.js @@ -0,0 +1,46 @@ +import { NumericValue } from "@smithy/core/serde"; +const NUMERIC_CONTROL_CHAR = String.fromCharCode(925); +export class JsonReplacer { + values = new Map(); + counter = 0; + stage = 0; + createReplacer() { + if (this.stage === 1) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer already created."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 1; + return (key, value) => { + if (value instanceof NumericValue) { + const v = `${NUMERIC_CONTROL_CHAR + "nv" + this.counter++}_` + value.string; + this.values.set(`"${v}"`, value.string); + return v; + } + if (typeof value === "bigint") { + const s = value.toString(); + const v = `${NUMERIC_CONTROL_CHAR + "b" + this.counter++}_` + s; + this.values.set(`"${v}"`, s); + return v; + } + return value; + }; + } + replaceInJson(json) { + if (this.stage === 0) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer not created yet."); + } + if (this.stage === 2) { + throw new Error("@aws-sdk/core/protocols - JsonReplacer exhausted."); + } + this.stage = 2; + if (this.counter === 0) { + return json; + } + for (const [key, value] of this.values) { + json = json.replace(key, value); + } + return json; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js new file mode 100644 index 0000000..ab01eef --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/jsonReviver.js @@ -0,0 +1,18 @@ +import { NumericValue } from "@smithy/core/serde"; +export function jsonReviver(key, value, context) { + if (context?.source) { + const numericString = context.source; + if (typeof value === "number") { + if (value > Number.MAX_SAFE_INTEGER || value < Number.MIN_SAFE_INTEGER || numericString !== String(value)) { + const isFractional = numericString.includes("."); + if (isFractional) { + return new NumericValue(numericString, "bigDecimal"); + } + else { + return BigInt(numericString); + } + } + } + } + return value; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js new file mode 100644 index 0000000..39f4910 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js @@ -0,0 +1,54 @@ +import { collectBodyString } from "../common"; +export const parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + try { + return JSON.parse(encoded); + } + catch (e) { + if (e?.name === "SyntaxError") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + } + return {}; +}); +export const parseJsonErrorBody = async (errorBody, context) => { + const value = await parseJsonBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +export const loadRestJsonErrorCode = (output, data) => { + const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()); + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + const headerKey = findKey(output.headers, "x-amzn-errortype"); + if (headerKey !== undefined) { + return sanitizeErrorCode(output.headers[headerKey]); + } + if (data && typeof data === "object") { + const codeKey = findKey(data, "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + } +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js new file mode 100644 index 0000000..349fd9a --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsEc2QueryProtocol.js @@ -0,0 +1,21 @@ +import { AwsQueryProtocol } from "./AwsQueryProtocol"; +export class AwsEc2QueryProtocol extends AwsQueryProtocol { + options; + constructor(options) { + super(options); + this.options = options; + const ec2Settings = { + capitalizeKeys: true, + flattenLists: true, + serializeEmptyLists: false, + ec2: true, + }; + Object.assign(this.serializer.settings, ec2Settings); + } + getShapeId() { + return "aws.protocols#ec2Query"; + } + useNestedResult() { + return false; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js new file mode 100644 index 0000000..f2530e6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js @@ -0,0 +1,138 @@ +import { collectBody, RpcProtocol } from "@smithy/core/protocols"; +import { deref, NormalizedSchema } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +import { XmlShapeDeserializer } from "../xml/XmlShapeDeserializer"; +import { QueryShapeSerializer } from "./QueryShapeSerializer"; +export class AwsQueryProtocol extends RpcProtocol { + options; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super({ + defaultNamespace: options.defaultNamespace, + errorTypeRegistries: options.errorTypeRegistries, + }); + this.options = options; + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: false, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + serializeEmptyLists: true, + }; + this.serializer = new QueryShapeSerializer(settings); + this.deserializer = new XmlShapeDeserializer(settings); + } + getShapeId() { + return "aws.protocols#awsQuery"; + } + setSerdeContext(serdeContext) { + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + } + getPayloadCodec() { + throw new Error("AWSQuery protocol has no payload codec."); + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + if (!request.path.endsWith("/")) { + request.path += "/"; + } + Object.assign(request.headers, { + "content-type": `application/x-www-form-urlencoded`, + }); + if (deref(operationSchema.input) === "unit" || !request.body) { + request.body = ""; + } + const action = operationSchema.name.split("#")[1] ?? operationSchema.name; + request.body = `Action=${action}&Version=${this.options.version}` + request.body; + if (request.body.endsWith("&")) { + request.body = request.body.slice(-1); + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const shortName = operationSchema.name.split("#")[1] ?? operationSchema.name; + const awsQueryResultKey = ns.isStructSchema() && this.useNestedResult() ? shortName + "Result" : undefined; + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes, awsQueryResultKey)); + } + const output = { + $metadata: this.deserializeMetadata(response), + ...dataObject, + }; + return output; + } + useNestedResult() { + return true; + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = this.loadQueryErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + const errorData = this.loadQueryError(dataObject) ?? {}; + const message = this.loadQueryErrorMessage(dataObject); + errorData.message = message; + errorData.Error = { + Type: errorData.Type, + Code: errorData.Code, + Message: message, + }; + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, errorData, metadata, this.mixin.findQueryCompatibleError); + const ns = NormalizedSchema.of(errorSchema); + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + const output = { + Type: errorData.Error.Type, + Code: errorData.Error.Code, + Error: errorData.Error, + }; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = errorData[target] ?? dataObject[target]; + output[name] = this.deserializer.readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + loadQueryErrorCode(output, data) { + const code = (data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error)?.Code; + if (code !== undefined) { + return code; + } + if (output.statusCode == 404) { + return "NotFound"; + } + } + loadQueryError(data) { + return data.Errors?.[0]?.Error ?? data.Errors?.Error ?? data.Error; + } + loadQueryErrorMessage(data) { + const errorData = this.loadQueryError(data); + return errorData?.message ?? errorData?.Message ?? data.message ?? data.Message ?? "Unknown"; + } + getDefaultContentType() { + return "application/x-www-form-urlencoded"; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QuerySerializerSettings.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QuerySerializerSettings.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QuerySerializerSettings.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js new file mode 100644 index 0000000..d584c51 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js @@ -0,0 +1,189 @@ +import { determineTimestampFormat, extendedEncodeURIComponent } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { generateIdempotencyToken, NumericValue } from "@smithy/core/serde"; +import { dateToUtcString } from "@smithy/smithy-client"; +import { toBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +export class QueryShapeSerializer extends SerdeContextConfig { + settings; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value, prefix = "") { + if (this.buffer === undefined) { + this.buffer = ""; + } + const ns = NormalizedSchema.of(schema); + if (prefix && !prefix.endsWith(".")) { + prefix += "."; + } + if (ns.isBlobSchema()) { + if (typeof value === "string" || value instanceof Uint8Array) { + this.writeKey(prefix); + this.writeValue((this.serdeContext?.base64Encoder ?? toBase64)(value)); + } + } + else if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isStringSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + else if (ns.isIdempotencyToken()) { + this.writeKey(prefix); + this.writeValue(generateIdempotencyToken()); + } + } + else if (ns.isBigIntegerSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isBigDecimalSchema()) { + if (value != null) { + this.writeKey(prefix); + this.writeValue(value instanceof NumericValue ? value.string : String(value)); + } + } + else if (ns.isTimestampSchema()) { + if (value instanceof Date) { + this.writeKey(prefix); + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.writeValue(value.toISOString().replace(".000Z", "Z")); + break; + case 6: + this.writeValue(dateToUtcString(value)); + break; + case 7: + this.writeValue(String(value.getTime() / 1000)); + break; + } + } + } + else if (ns.isDocumentSchema()) { + if (Array.isArray(value)) { + this.write(64 | 15, value, prefix); + } + else if (value instanceof Date) { + this.write(4, value, prefix); + } + else if (value instanceof Uint8Array) { + this.write(21, value, prefix); + } + else if (value && typeof value === "object") { + this.write(128 | 15, value, prefix); + } + else { + this.writeKey(prefix); + this.writeValue(String(value)); + } + } + else if (ns.isListSchema()) { + if (Array.isArray(value)) { + if (value.length === 0) { + if (this.settings.serializeEmptyLists) { + this.writeKey(prefix); + this.writeValue(""); + } + } + else { + const member = ns.getValueSchema(); + const flat = this.settings.flattenLists || ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const item of value) { + if (item == null) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey("member", traits.xmlName, traits.ec2QueryName); + const key = flat ? `${prefix}${i}` : `${prefix}${suffix}.${i}`; + this.write(member, item, key); + ++i; + } + } + } + } + else if (ns.isMapSchema()) { + if (value && typeof value === "object") { + const keySchema = ns.getKeySchema(); + const memberSchema = ns.getValueSchema(); + const flat = ns.getMergedTraits().xmlFlattened; + let i = 1; + for (const [k, v] of Object.entries(value)) { + if (v == null) { + continue; + } + const keyTraits = keySchema.getMergedTraits(); + const keySuffix = this.getKey("key", keyTraits.xmlName, keyTraits.ec2QueryName); + const key = flat ? `${prefix}${i}.${keySuffix}` : `${prefix}entry.${i}.${keySuffix}`; + const valTraits = memberSchema.getMergedTraits(); + const valueSuffix = this.getKey("value", valTraits.xmlName, valTraits.ec2QueryName); + const valueKey = flat ? `${prefix}${i}.${valueSuffix}` : `${prefix}entry.${i}.${valueSuffix}`; + this.write(keySchema, k, key); + this.write(memberSchema, v, valueKey); + ++i; + } + } + } + else if (ns.isStructSchema()) { + if (value && typeof value === "object") { + let didWriteMember = false; + for (const [memberName, member] of ns.structIterator()) { + if (value[memberName] == null && !member.isIdempotencyToken()) { + continue; + } + const traits = member.getMergedTraits(); + const suffix = this.getKey(memberName, traits.xmlName, traits.ec2QueryName, "struct"); + const key = `${prefix}${suffix}`; + this.write(member, value[memberName], key); + didWriteMember = true; + } + if (!didWriteMember && ns.isUnionSchema()) { + const { $unknown } = value; + if (Array.isArray($unknown)) { + const [k, v] = $unknown; + const key = `${prefix}${k}`; + this.write(15, v, key); + } + } + } + } + else if (ns.isUnitSchema()) { + } + else { + throw new Error(`@aws-sdk/core/protocols - QuerySerializer unrecognized schema type ${ns.getName(true)}`); + } + } + flush() { + if (this.buffer === undefined) { + throw new Error("@aws-sdk/core/protocols - QuerySerializer cannot flush with nothing written to buffer."); + } + const str = this.buffer; + delete this.buffer; + return str; + } + getKey(memberName, xmlName, ec2QueryName, keySource) { + const { ec2, capitalizeKeys } = this.settings; + if (ec2 && ec2QueryName) { + return ec2QueryName; + } + const key = xmlName ?? memberName; + if (capitalizeKeys && keySource === "struct") { + return key[0].toUpperCase() + key.slice(1); + } + return key; + } + writeKey(key) { + if (key.endsWith(".")) { + key = key.slice(0, key.length - 1); + } + this.buffer += `&${extendedEncodeURIComponent(key)}=`; + } + writeValue(value) { + this.buffer += extendedEncodeURIComponent(value); + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js new file mode 100644 index 0000000..4226ffd --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js @@ -0,0 +1,99 @@ +import { HttpBindingProtocol, HttpInterceptingShapeDeserializer, HttpInterceptingShapeSerializer, } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { ProtocolLib } from "../ProtocolLib"; +import { loadRestXmlErrorCode } from "./parseXmlBody"; +import { XmlCodec } from "./XmlCodec"; +export class AwsRestXmlProtocol extends HttpBindingProtocol { + codec; + serializer; + deserializer; + mixin = new ProtocolLib(); + constructor(options) { + super(options); + const settings = { + timestampFormat: { + useTrait: true, + default: 5, + }, + httpBindings: true, + xmlNamespace: options.xmlNamespace, + serviceNamespace: options.defaultNamespace, + }; + this.codec = new XmlCodec(settings); + this.serializer = new HttpInterceptingShapeSerializer(this.codec.createSerializer(), settings); + this.deserializer = new HttpInterceptingShapeDeserializer(this.codec.createDeserializer(), settings); + this.compositeErrorRegistry; + } + getPayloadCodec() { + return this.codec; + } + getShapeId() { + return "aws.protocols#restXml"; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const inputSchema = NormalizedSchema.of(operationSchema.input); + if (!request.headers["content-type"]) { + const contentType = this.mixin.resolveRestContentType(this.getDefaultContentType(), inputSchema); + if (contentType) { + request.headers["content-type"] = contentType; + } + } + if (typeof request.body === "string" && + request.headers["content-type"] === this.getDefaultContentType() && + !request.body.startsWith("' + request.body; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorIdentifier = loadRestXmlErrorCode(response, dataObject) ?? "Unknown"; + this.mixin.compose(this.compositeErrorRegistry, errorIdentifier, this.options.defaultNamespace); + if (dataObject.Error && typeof dataObject.Error === "object") { + for (const key of Object.keys(dataObject.Error)) { + dataObject[key] = dataObject.Error[key]; + if (key.toLowerCase() === "message") { + dataObject.message = dataObject.Error[key]; + } + } + } + if (dataObject.RequestId && !metadata.requestId) { + metadata.requestId = dataObject.RequestId; + } + const { errorSchema, errorMetadata } = await this.mixin.getErrorSchemaOrThrowBaseException(errorIdentifier, this.options.defaultNamespace, response, dataObject, metadata); + const ns = NormalizedSchema.of(errorSchema); + const message = dataObject.Error?.message ?? + dataObject.Error?.Message ?? + dataObject.message ?? + dataObject.Message ?? + "UnknownError"; + const ErrorCtor = this.compositeErrorRegistry.getErrorCtor(errorSchema) ?? Error; + const exception = new ErrorCtor(message); + await this.deserializeHttpMessage(errorSchema, context, response, dataObject); + const output = {}; + for (const [name, member] of ns.structIterator()) { + const target = member.getMergedTraits().xmlName ?? name; + const value = dataObject.Error?.[target] ?? dataObject[target]; + output[name] = this.codec.createDeserializer().readSchema(member, value); + } + throw this.mixin.decorateServiceException(Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output), dataObject); + } + getDefaultContentType() { + return "application/xml"; + } + hasUnstructuredPayloadBinding(ns) { + for (const [, member] of ns.structIterator()) { + if (member.getMergedTraits().httpPayload) { + return !(member.isStructSchema() || member.isMapSchema() || member.isListSchema()); + } + } + return false; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js new file mode 100644 index 0000000..0a148dc --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlCodec.js @@ -0,0 +1,20 @@ +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlShapeDeserializer } from "./XmlShapeDeserializer"; +import { XmlShapeSerializer } from "./XmlShapeSerializer"; +export class XmlCodec extends SerdeContextConfig { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + createSerializer() { + const serializer = new XmlShapeSerializer(this.settings); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new XmlShapeDeserializer(this.settings); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js new file mode 100644 index 0000000..847a514 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeDeserializer.js @@ -0,0 +1,153 @@ +import { parseXML } from "@aws-sdk/xml-builder"; +import { FromStringShapeDeserializer } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { getValueFromTextNode } from "@smithy/smithy-client"; +import { toUtf8 } from "@smithy/util-utf8"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { UnionSerde } from "../UnionSerde"; +export class XmlShapeDeserializer extends SerdeContextConfig { + settings; + stringDeserializer; + constructor(settings) { + super(); + this.settings = settings; + this.stringDeserializer = new FromStringShapeDeserializer(settings); + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.stringDeserializer.setSerdeContext(serdeContext); + } + read(schema, bytes, key) { + const ns = NormalizedSchema.of(schema); + const memberSchemas = ns.getMemberSchemas(); + const isEventPayload = ns.isStructSchema() && + ns.isMemberSchema() && + !!Object.values(memberSchemas).find((memberNs) => { + return !!memberNs.getMemberTraits().eventPayload; + }); + if (isEventPayload) { + const output = {}; + const memberName = Object.keys(memberSchemas)[0]; + const eventMemberSchema = memberSchemas[memberName]; + if (eventMemberSchema.isBlobSchema()) { + output[memberName] = bytes; + } + else { + output[memberName] = this.read(memberSchemas[memberName], bytes); + } + return output; + } + const xmlString = (this.serdeContext?.utf8Encoder ?? toUtf8)(bytes); + const parsedObject = this.parseXml(xmlString); + return this.readSchema(schema, key ? parsedObject[key] : parsedObject); + } + readSchema(_schema, value) { + const ns = NormalizedSchema.of(_schema); + if (ns.isUnitSchema()) { + return; + } + const traits = ns.getMergedTraits(); + if (ns.isListSchema() && !Array.isArray(value)) { + return this.readSchema(ns, [value]); + } + if (value == null) { + return value; + } + if (typeof value === "object") { + const flat = !!traits.xmlFlattened; + if (ns.isListSchema()) { + const listValue = ns.getValueSchema(); + const buffer = []; + const sourceKey = listValue.getMergedTraits().xmlName ?? "member"; + const source = flat ? value : (value[0] ?? value)[sourceKey]; + if (source == null) { + return buffer; + } + const sourceArray = Array.isArray(source) ? source : [source]; + for (const v of sourceArray) { + buffer.push(this.readSchema(listValue, v)); + } + return buffer; + } + const buffer = {}; + if (ns.isMapSchema()) { + const keyNs = ns.getKeySchema(); + const memberNs = ns.getValueSchema(); + let entries; + if (flat) { + entries = Array.isArray(value) ? value : [value]; + } + else { + entries = Array.isArray(value.entry) ? value.entry : [value.entry]; + } + const keyProperty = keyNs.getMergedTraits().xmlName ?? "key"; + const valueProperty = memberNs.getMergedTraits().xmlName ?? "value"; + for (const entry of entries) { + const key = entry[keyProperty]; + const value = entry[valueProperty]; + buffer[key] = this.readSchema(memberNs, value); + } + return buffer; + } + if (ns.isStructSchema()) { + const union = ns.isUnionSchema(); + let unionSerde; + if (union) { + unionSerde = new UnionSerde(value, buffer); + } + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMergedTraits(); + const xmlObjectKey = !memberTraits.httpPayload + ? memberSchema.getMemberTraits().xmlName ?? memberName + : memberTraits.xmlName ?? memberSchema.getName(); + if (union) { + unionSerde.mark(xmlObjectKey); + } + if (value[xmlObjectKey] != null) { + buffer[memberName] = this.readSchema(memberSchema, value[xmlObjectKey]); + } + } + if (union) { + unionSerde.writeUnknown(); + } + return buffer; + } + if (ns.isDocumentSchema()) { + return value; + } + throw new Error(`@aws-sdk/core/protocols - xml deserializer unhandled schema type for ${ns.getName(true)}`); + } + if (ns.isListSchema()) { + return []; + } + if (ns.isMapSchema() || ns.isStructSchema()) { + return {}; + } + return this.stringDeserializer.read(ns, value); + } + parseXml(xml) { + if (xml.length) { + let parsedObj; + try { + parsedObj = parseXML(xml); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: xml, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return getValueFromTextNode(parsedObjToReturn); + } + return {}; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js new file mode 100644 index 0000000..701ed93 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js @@ -0,0 +1,295 @@ +import { XmlNode, XmlText } from "@aws-sdk/xml-builder"; +import { determineTimestampFormat } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { generateIdempotencyToken, NumericValue } from "@smithy/core/serde"; +import { dateToUtcString } from "@smithy/smithy-client"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +export class XmlShapeSerializer extends SerdeContextConfig { + settings; + stringBuffer; + byteBuffer; + buffer; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value) { + const ns = NormalizedSchema.of(schema); + if (ns.isStringSchema() && typeof value === "string") { + this.stringBuffer = value; + } + else if (ns.isBlobSchema()) { + this.byteBuffer = + "byteLength" in value + ? value + : (this.serdeContext?.base64Decoder ?? fromBase64)(value); + } + else { + this.buffer = this.writeStruct(ns, value, undefined); + const traits = ns.getMergedTraits(); + if (traits.httpPayload && !traits.xmlName) { + this.buffer.withName(ns.getName()); + } + } + } + flush() { + if (this.byteBuffer !== undefined) { + const bytes = this.byteBuffer; + delete this.byteBuffer; + return bytes; + } + if (this.stringBuffer !== undefined) { + const str = this.stringBuffer; + delete this.stringBuffer; + return str; + } + const buffer = this.buffer; + if (this.settings.xmlNamespace) { + if (!buffer?.attributes?.["xmlns"]) { + buffer.addAttribute("xmlns", this.settings.xmlNamespace); + } + } + delete this.buffer; + return buffer.toString(); + } + writeStruct(ns, value, parentXmlns) { + const traits = ns.getMergedTraits(); + const name = ns.isMemberSchema() && !traits.httpPayload + ? ns.getMemberTraits().xmlName ?? ns.getMemberName() + : traits.xmlName ?? ns.getName(); + if (!name || !ns.isStructSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write struct with empty name or non-struct, schema=${ns.getName(true)}.`); + } + const structXmlNode = XmlNode.of(name); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + for (const [memberName, memberSchema] of ns.structIterator()) { + const val = value[memberName]; + if (val != null || memberSchema.isIdempotencyToken()) { + if (memberSchema.getMergedTraits().xmlAttribute) { + structXmlNode.addAttribute(memberSchema.getMergedTraits().xmlName ?? memberName, this.writeSimple(memberSchema, val)); + continue; + } + if (memberSchema.isListSchema()) { + this.writeList(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isMapSchema()) { + this.writeMap(memberSchema, val, structXmlNode, xmlns); + } + else if (memberSchema.isStructSchema()) { + structXmlNode.addChildNode(this.writeStruct(memberSchema, val, xmlns)); + } + else { + const memberNode = XmlNode.of(memberSchema.getMergedTraits().xmlName ?? memberSchema.getMemberName()); + this.writeSimpleInto(memberSchema, val, memberNode, xmlns); + structXmlNode.addChildNode(memberNode); + } + } + } + const { $unknown } = value; + if ($unknown && ns.isUnionSchema() && Array.isArray($unknown) && Object.keys(value).length === 1) { + const [k, v] = $unknown; + const node = XmlNode.of(k); + if (typeof v !== "string") { + if (value instanceof XmlNode || value instanceof XmlText) { + structXmlNode.addChildNode(value); + } + else { + throw new Error(`@aws-sdk - $unknown union member in XML requires ` + + `value of type string, @aws-sdk/xml-builder::XmlNode or XmlText.`); + } + } + this.writeSimpleInto(0, v, node, xmlns); + structXmlNode.addChildNode(node); + } + if (xmlns) { + structXmlNode.addAttribute(xmlnsAttr, xmlns); + } + return structXmlNode; + } + writeList(listMember, array, container, parentXmlns) { + if (!listMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member list: ${listMember.getName(true)}`); + } + const listTraits = listMember.getMergedTraits(); + const listValueSchema = listMember.getValueSchema(); + const listValueTraits = listValueSchema.getMergedTraits(); + const sparse = !!listValueTraits.sparse; + const flat = !!listTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(listMember, parentXmlns); + const writeItem = (container, value) => { + if (listValueSchema.isListSchema()) { + this.writeList(listValueSchema, Array.isArray(value) ? value : [value], container, xmlns); + } + else if (listValueSchema.isMapSchema()) { + this.writeMap(listValueSchema, value, container, xmlns); + } + else if (listValueSchema.isStructSchema()) { + const struct = this.writeStruct(listValueSchema, value, xmlns); + container.addChildNode(struct.withName(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member")); + } + else { + const listItemNode = XmlNode.of(flat ? listTraits.xmlName ?? listMember.getMemberName() : listValueTraits.xmlName ?? "member"); + this.writeSimpleInto(listValueSchema, value, listItemNode, xmlns); + container.addChildNode(listItemNode); + } + }; + if (flat) { + for (const value of array) { + if (sparse || value != null) { + writeItem(container, value); + } + } + } + else { + const listNode = XmlNode.of(listTraits.xmlName ?? listMember.getMemberName()); + if (xmlns) { + listNode.addAttribute(xmlnsAttr, xmlns); + } + for (const value of array) { + if (sparse || value != null) { + writeItem(listNode, value); + } + } + container.addChildNode(listNode); + } + } + writeMap(mapMember, map, container, parentXmlns, containerIsMap = false) { + if (!mapMember.isMemberSchema()) { + throw new Error(`@aws-sdk/core/protocols - xml serializer, cannot write non-member map: ${mapMember.getName(true)}`); + } + const mapTraits = mapMember.getMergedTraits(); + const mapKeySchema = mapMember.getKeySchema(); + const mapKeyTraits = mapKeySchema.getMergedTraits(); + const keyTag = mapKeyTraits.xmlName ?? "key"; + const mapValueSchema = mapMember.getValueSchema(); + const mapValueTraits = mapValueSchema.getMergedTraits(); + const valueTag = mapValueTraits.xmlName ?? "value"; + const sparse = !!mapValueTraits.sparse; + const flat = !!mapTraits.xmlFlattened; + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(mapMember, parentXmlns); + const addKeyValue = (entry, key, val) => { + const keyNode = XmlNode.of(keyTag, key); + const [keyXmlnsAttr, keyXmlns] = this.getXmlnsAttribute(mapKeySchema, xmlns); + if (keyXmlns) { + keyNode.addAttribute(keyXmlnsAttr, keyXmlns); + } + entry.addChildNode(keyNode); + let valueNode = XmlNode.of(valueTag); + if (mapValueSchema.isListSchema()) { + this.writeList(mapValueSchema, val, valueNode, xmlns); + } + else if (mapValueSchema.isMapSchema()) { + this.writeMap(mapValueSchema, val, valueNode, xmlns, true); + } + else if (mapValueSchema.isStructSchema()) { + valueNode = this.writeStruct(mapValueSchema, val, xmlns); + } + else { + this.writeSimpleInto(mapValueSchema, val, valueNode, xmlns); + } + entry.addChildNode(valueNode); + }; + if (flat) { + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + addKeyValue(entry, key, val); + container.addChildNode(entry); + } + } + } + else { + let mapNode; + if (!containerIsMap) { + mapNode = XmlNode.of(mapTraits.xmlName ?? mapMember.getMemberName()); + if (xmlns) { + mapNode.addAttribute(xmlnsAttr, xmlns); + } + container.addChildNode(mapNode); + } + for (const [key, val] of Object.entries(map)) { + if (sparse || val != null) { + const entry = XmlNode.of("entry"); + addKeyValue(entry, key, val); + (containerIsMap ? container : mapNode).addChildNode(entry); + } + } + } + } + writeSimple(_schema, value) { + if (null === value) { + throw new Error("@aws-sdk/core/protocols - (XML serializer) cannot write null value."); + } + const ns = NormalizedSchema.of(_schema); + let nodeContents = null; + if (value && typeof value === "object") { + if (ns.isBlobSchema()) { + nodeContents = (this.serdeContext?.base64Encoder ?? toBase64)(value); + } + else if (ns.isTimestampSchema() && value instanceof Date) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + nodeContents = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + nodeContents = dateToUtcString(value); + break; + case 7: + nodeContents = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using http date", value); + nodeContents = dateToUtcString(value); + break; + } + } + else if (ns.isBigDecimalSchema() && value) { + if (value instanceof NumericValue) { + return value.string; + } + return String(value); + } + else if (ns.isMapSchema() || ns.isListSchema()) { + throw new Error("@aws-sdk/core/protocols - xml serializer, cannot call _write() on List/Map schema, call writeList or writeMap() instead."); + } + else { + throw new Error(`@aws-sdk/core/protocols - xml serializer, unhandled schema type for object value and schema: ${ns.getName(true)}`); + } + } + if (ns.isBooleanSchema() || ns.isNumericSchema() || ns.isBigIntegerSchema() || ns.isBigDecimalSchema()) { + nodeContents = String(value); + } + if (ns.isStringSchema()) { + if (value === undefined && ns.isIdempotencyToken()) { + nodeContents = generateIdempotencyToken(); + } + else { + nodeContents = String(value); + } + } + if (nodeContents === null) { + throw new Error(`Unhandled schema-value pair ${ns.getName(true)}=${value}`); + } + return nodeContents; + } + writeSimpleInto(_schema, value, into, parentXmlns) { + const nodeContents = this.writeSimple(_schema, value); + const ns = NormalizedSchema.of(_schema); + const content = new XmlText(nodeContents); + const [xmlnsAttr, xmlns] = this.getXmlnsAttribute(ns, parentXmlns); + if (xmlns) { + into.addAttribute(xmlnsAttr, xmlns); + } + into.addChildNode(content); + } + getXmlnsAttribute(ns, parentXmlns) { + const traits = ns.getMergedTraits(); + const [prefix, xmlns] = traits.xmlNamespace ?? []; + if (xmlns && xmlns !== parentXmlns) { + return [prefix ? `xmlns:${prefix}` : "xmlns", xmlns]; + } + return [void 0, void 0]; + } +} diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js new file mode 100644 index 0000000..9ff7cad --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/parseXmlBody.js @@ -0,0 +1,46 @@ +import { parseXML } from "@aws-sdk/xml-builder"; +import { getValueFromTextNode } from "@smithy/smithy-client"; +import { collectBodyString } from "../common"; +export const parseXmlBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => { + if (encoded.length) { + let parsedObj; + try { + parsedObj = parseXML(encoded); + } + catch (e) { + if (e && typeof e === "object") { + Object.defineProperty(e, "$responseBodyText", { + value: encoded, + }); + } + throw e; + } + const textNodeName = "#text"; + const key = Object.keys(parsedObj)[0]; + const parsedObjToReturn = parsedObj[key]; + if (parsedObjToReturn[textNodeName]) { + parsedObjToReturn[key] = parsedObjToReturn[textNodeName]; + delete parsedObjToReturn[textNodeName]; + } + return getValueFromTextNode(parsedObjToReturn); + } + return {}; +}); +export const parseXmlErrorBody = async (errorBody, context) => { + const value = await parseXmlBody(errorBody, context); + if (value.Error) { + value.Error.message = value.Error.message ?? value.Error.Message; + } + return value; +}; +export const loadRestXmlErrorCode = (output, data) => { + if (data?.Error?.Code !== undefined) { + return data.Error.Code; + } + if (data?.Code !== undefined) { + return data.Code; + } + if (output.statusCode == 404) { + return "NotFound"; + } +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/simpleFormatXml.js b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/simpleFormatXml.js new file mode 100644 index 0000000..e61303b --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/simpleFormatXml.js @@ -0,0 +1,27 @@ +export function simpleFormatXml(xml) { + let b = ""; + let indentation = 0; + for (let i = 0; i < xml.length; ++i) { + const c = xml[i]; + if (c === "<") { + if (xml[i + 1] === "/") { + b += "\n" + " ".repeat(indentation - 2) + c; + indentation -= 4; + } + else { + b += c; + } + } + else if (c === ">") { + indentation += 2; + b += c + "\n" + " ".repeat(indentation); + } + else { + b += c; + } + } + return b + .split("\n") + .filter((s) => !!s.trim()) + .join("\n"); +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts new file mode 100644 index 0000000..e83f927 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/api-extractor-type-index.d.ts @@ -0,0 +1,5 @@ +export * from "./index"; +export * from "./submodules/account-id-endpoint/index"; +export * from "./submodules/client/index"; +export * from "./submodules/httpAuthSchemes/index"; +export * from "./submodules/protocols/index"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/index.d.ts new file mode 100644 index 0000000..5d51cdb --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/index.d.ts @@ -0,0 +1,22 @@ +/** + * Submodules annotated with "Legacy" are from prior to the submodule system. + * They are exported from the package's root index to preserve backwards compatibility. + * + * New development should go in a proper submodule and not be exported from the root index. + */ +/** + * Legacy submodule. + */ +export * from "./submodules/client/index"; +/** + * Legacy submodule. + */ +export * from "./submodules/httpAuthSchemes/index"; +/** + * Legacy submodule. + */ +export * from "./submodules/protocols/index"; +/** + * Warning: do not export any additional submodules from the root of this package. See readme.md for + * guide on developing submodules. + */ diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts new file mode 100644 index 0000000..56edb38 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts @@ -0,0 +1,27 @@ +import type { Provider } from "@smithy/types"; +import type { AccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +/** + * @public + */ +export interface AccountIdEndpointModeInputConfig { + /** + * The account ID endpoint mode to use. + */ + accountIdEndpointMode?: AccountIdEndpointMode | Provider; +} +/** + * @internal + */ +interface PreviouslyResolved { +} +/** + * @internal + */ +export interface AccountIdEndpointModeResolvedConfig { + accountIdEndpointMode: Provider; +} +/** + * @internal + */ +export declare const resolveAccountIdEndpointModeConfig: (input: T & AccountIdEndpointModeInputConfig & PreviouslyResolved) => T & AccountIdEndpointModeResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts new file mode 100644 index 0000000..640a747 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts @@ -0,0 +1,16 @@ +/** + * @public + */ +export type AccountIdEndpointMode = "disabled" | "preferred" | "required"; +/** + * @internal + */ +export declare const DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = "preferred"; +/** + * @internal + */ +export declare const ACCOUNT_ID_ENDPOINT_MODE_VALUES: AccountIdEndpointMode[]; +/** + * @internal + */ +export declare function validateAccountIdEndpointMode(value: any): value is AccountIdEndpointMode; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts new file mode 100644 index 0000000..ed26c32 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts @@ -0,0 +1,14 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import type { AccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +/** + * @internal + */ +export declare const ENV_ACCOUNT_ID_ENDPOINT_MODE = "AWS_ACCOUNT_ID_ENDPOINT_MODE"; +/** + * @internal + */ +export declare const CONFIG_ACCOUNT_ID_ENDPOINT_MODE = "account_id_endpoint_mode"; +/** + * @internal + */ +export declare const NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d.ts new file mode 100644 index 0000000..52af11d --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/account-id-endpoint/index.d.ts @@ -0,0 +1,3 @@ +export * from "./AccountIdEndpointModeConfigResolver"; +export * from "./AccountIdEndpointModeConstants"; +export * from "./NodeAccountIdEndpointModeConfigOptions"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts new file mode 100644 index 0000000..d97bc8c --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts @@ -0,0 +1,12 @@ +export declare const state: { + warningEmitted: boolean; +}; +/** + * @internal + * + * Emits warning if the provided Node.js version string is + * pending deprecation by AWS SDK JSv3. + * + * @param version - The Node.js version string. + */ +export declare const emitWarningIfUnsupportedVersion: (version: string) => void; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts new file mode 100644 index 0000000..492c6cd --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts @@ -0,0 +1,4 @@ +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./setCredentialFeature"; +export * from "./setFeature"; +export * from "./setTokenFeature"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts new file mode 100644 index 0000000..b3b4a68 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts @@ -0,0 +1,7 @@ +import type { AttributedAwsCredentialIdentity, AwsSdkCredentialsFeatures } from "@aws-sdk/types"; +/** + * @internal + * + * @returns the credentials with source feature attribution. + */ +export declare function setCredentialFeature(credentials: AttributedAwsCredentialIdentity, feature: F, value: AwsSdkCredentialsFeatures[F]): AttributedAwsCredentialIdentity; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts new file mode 100644 index 0000000..93458bf --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts @@ -0,0 +1,12 @@ +import type { AwsHandlerExecutionContext, AwsSdkFeatures } from "@aws-sdk/types"; +/** + * @internal + * Indicates to the request context that a given feature is active. + * + * @param context - handler execution context. + * @param feature - readable name of feature. + * @param value - encoding value of feature. This is required because the + * specification asks the SDK not to include a runtime lookup of all + * the feature identifiers. + */ +export declare function setFeature(context: AwsHandlerExecutionContext, feature: F, value: AwsSdkFeatures[F]): void; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/setTokenFeature.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/setTokenFeature.d.ts new file mode 100644 index 0000000..affb049 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/client/setTokenFeature.d.ts @@ -0,0 +1,7 @@ +import type { AttributedTokenIdentity, AwsSdkTokenFeatures } from "@aws-sdk/types"; +/** + * @internal + * + * @returns the token with source feature attribution. + */ +export declare function setTokenFeature(token: AttributedTokenIdentity, feature: F, value: AwsSdkTokenFeatures[F]): AttributedTokenIdentity; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts new file mode 100644 index 0000000..38e2fe9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts @@ -0,0 +1,10 @@ +import type { AwsCredentialIdentity, HttpRequest as IHttpRequest } from "@smithy/types"; +import { AwsSdkSigV4Signer } from "./AwsSdkSigV4Signer"; +/** + * @internal + * Note: this is not a signing algorithm implementation. The sign method + * accepts the real signer as an input parameter. + */ +export declare class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + sign(httpRequest: IHttpRequest, identity: AwsCredentialIdentity, signingProperties: Record): Promise; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts new file mode 100644 index 0000000..6795d9b --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts @@ -0,0 +1,43 @@ +import type { AuthScheme, AwsCredentialIdentity, HttpRequest as IHttpRequest, HttpResponse, HttpSigner, RequestSigner } from "@smithy/types"; +import type { AwsSdkSigV4AAuthResolvedConfig } from "./resolveAwsSdkSigV4AConfig"; +/** + * @internal + */ +interface AwsSdkSigV4Config extends AwsSdkSigV4AAuthResolvedConfig { + systemClockOffset: number; + signer: (authScheme?: AuthScheme) => Promise; +} +/** + * @internal + */ +interface AwsSdkSigV4AuthSigningProperties { + config: AwsSdkSigV4Config; + signer: RequestSigner; + signingRegion?: string; + signingRegionSet?: string[]; + signingName?: string; +} +/** + * @internal + */ +export declare const validateSigningProperties: (signingProperties: Record) => Promise; +/** + * Note: this is not a signing algorithm implementation. The sign method + * accepts the real signer as an input parameter. + * @internal + */ +export declare class AwsSdkSigV4Signer implements HttpSigner { + sign(httpRequest: IHttpRequest, + /** + * `identity` is bound in {@link resolveAWSSDKSigV4Config} + */ + identity: AwsCredentialIdentity, signingProperties: Record): Promise; + errorHandler(signingProperties: Record): (error: Error) => never; + successHandler(httpResponse: HttpResponse | unknown, signingProperties: Record): void; +} +/** + * @internal + * @deprecated renamed to {@link AwsSdkSigV4Signer} + */ +export declare const AWSSDKSigV4Signer: typeof AwsSdkSigV4Signer; +export {}; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts new file mode 100644 index 0000000..2d5bfc1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts @@ -0,0 +1,5 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @public + */ +export declare const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts new file mode 100644 index 0000000..4071225 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/index.d.ts @@ -0,0 +1,5 @@ +export { AwsSdkSigV4Signer, AWSSDKSigV4Signer, validateSigningProperties } from "./AwsSdkSigV4Signer"; +export { AwsSdkSigV4ASigner } from "./AwsSdkSigV4ASigner"; +export * from "./NODE_AUTH_SCHEME_PREFERENCE_OPTIONS"; +export * from "./resolveAwsSdkSigV4AConfig"; +export * from "./resolveAwsSdkSigV4Config"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts new file mode 100644 index 0000000..37d3902 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts @@ -0,0 +1,38 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import type { Provider } from "@smithy/types"; +/** + * @public + */ +export interface AwsSdkSigV4AAuthInputConfig { + /** + * This option will override the AWS sigv4a + * signing regionSet from any other source. + * + * The lookup order is: + * 1. this value + * 2. configuration file value of sigv4a_signing_region_set. + * 3. environment value of AWS_SIGV4A_SIGNING_REGION_SET. + * 4. signingRegionSet given by endpoint resolution. + * 5. the singular region of the SDK client. + */ + sigv4aSigningRegionSet?: string[] | undefined | Provider; +} +/** + * @internal + */ +export interface AwsSdkSigV4APreviouslyResolved { +} +/** + * @internal + */ +export interface AwsSdkSigV4AAuthResolvedConfig { + sigv4aSigningRegionSet: Provider; +} +/** + * @internal + */ +export declare const resolveAwsSdkSigV4AConfig: (config: T & AwsSdkSigV4AAuthInputConfig & AwsSdkSigV4APreviouslyResolved) => T & AwsSdkSigV4AAuthResolvedConfig; +/** + * @internal + */ +export declare const NODE_SIGV4A_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts new file mode 100644 index 0000000..a9e7395 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts @@ -0,0 +1,117 @@ +import type { MergeFunctions } from "@aws-sdk/types"; +import type { SignatureV4CryptoInit, SignatureV4Init } from "@smithy/signature-v4"; +import type { AuthScheme, AwsCredentialIdentity, AwsCredentialIdentityProvider, ChecksumConstructor, HashConstructor, MemoizedProvider, Provider, RegionInfoProvider, RequestSigner } from "@smithy/types"; +/** + * @public + */ +export interface AwsSdkSigV4AuthInputConfig { + /** + * The credentials used to sign requests. + */ + credentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + /** + * The signer to use when signing requests. + */ + signer?: RequestSigner | ((authScheme?: AuthScheme) => Promise); + /** + * Whether to escape request path when signing the request. + */ + signingEscapePath?: boolean; + /** + * An offset value in milliseconds to apply to all signing times. + */ + systemClockOffset?: number; + /** + * The region where you want to sign your request against. This + * can be different to the region in the endpoint. + */ + signingRegion?: string; + /** + * The injectable SigV4-compatible signer class constructor. If not supplied, + * regular SignatureV4 constructor will be used. + * + * @internal + */ + signerConstructor?: new (options: SignatureV4Init & SignatureV4CryptoInit) => RequestSigner; +} +/** + * Used to indicate whether a credential provider function was memoized by this resolver. + * @public + */ +export type AwsSdkSigV4Memoized = { + /** + * The credential provider has been memoized by the AWS SDK SigV4 config resolver. + */ + memoized?: boolean; + /** + * The credential provider has the caller client config object bound to its arguments. + */ + configBound?: boolean; + /** + * Function is wrapped with attribution transform. + */ + attributed?: boolean; +}; +/** + * @internal + */ +export interface AwsSdkSigV4PreviouslyResolved { + credentialDefaultProvider?: (input: any) => MemoizedProvider; + region: string | Provider; + sha256: ChecksumConstructor | HashConstructor; + signingName?: string; + regionInfoProvider?: RegionInfoProvider; + defaultSigningName?: string; + serviceId: string; + useFipsEndpoint: Provider; + useDualstackEndpoint: Provider; +} +/** + * @internal + */ +export interface AwsSdkSigV4AuthResolvedConfig { + /** + * Resolved value for input config {@link AwsSdkSigV4AuthInputConfig.credentials} + * This provider MAY memoize the loaded credentials for certain period. + */ + credentials: MergeFunctions> & AwsSdkSigV4Memoized; + /** + * Resolved value for input config {@link AwsSdkSigV4AuthInputConfig.signer} + */ + signer: (authScheme?: AuthScheme) => Promise; + /** + * Resolved value for input config {@link AwsSdkSigV4AuthInputConfig.signingEscapePath} + */ + signingEscapePath: boolean; + /** + * Resolved value for input config {@link AwsSdkSigV4AuthInputConfig.systemClockOffset} + */ + systemClockOffset: number; +} +/** + * @internal + */ +export declare const resolveAwsSdkSigV4Config: (config: T & AwsSdkSigV4AuthInputConfig & AwsSdkSigV4PreviouslyResolved) => T & AwsSdkSigV4AuthResolvedConfig; +/** + * @internal + * @deprecated renamed to {@link AwsSdkSigV4AuthInputConfig} + */ +export interface AWSSDKSigV4AuthInputConfig extends AwsSdkSigV4AuthInputConfig { +} +/** + * @internal + * @deprecated renamed to {@link AwsSdkSigV4PreviouslyResolved} + */ +export interface AWSSDKSigV4PreviouslyResolved extends AwsSdkSigV4PreviouslyResolved { +} +/** + * @internal + * @deprecated renamed to {@link AwsSdkSigV4AuthResolvedConfig} + */ +export interface AWSSDKSigV4AuthResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { +} +/** + * @internal + * @deprecated renamed to {@link resolveAwsSdkSigV4Config} + */ +export declare const resolveAWSSDKSigV4Config: (config: T & AwsSdkSigV4AuthInputConfig & AwsSdkSigV4PreviouslyResolved) => T & AwsSdkSigV4AuthResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d.ts new file mode 100644 index 0000000..3927741 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d.ts @@ -0,0 +1,2 @@ +export * from "./aws_sdk"; +export * from "./utils/getBearerTokenEnvKey"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts new file mode 100644 index 0000000..823921b --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a comma-separated string into an array of trimmed strings + * @param str The comma-separated input string to split + * @returns Array of trimmed strings split from the input + * + * @internal + */ +export declare const getArrayForCommaSeparatedString: (str: string) => string[]; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts new file mode 100644 index 0000000..b3df9cb --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts @@ -0,0 +1,6 @@ +/** + * Returns an environment variable key base on signing name. + * @param signingName - The signing name to use in the key + * @returns The environment variable key in format AWS_BEARER_TOKEN_ + */ +export declare const getBearerTokenEnvKey: (signingName: string) => string; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts new file mode 100644 index 0000000..2c9157b --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getDateHeader.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getDateHeader: (response: unknown) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts new file mode 100644 index 0000000..4b72690 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * + * Returns a date that is corrected for clock skew. + * + * @param systemClockOffset The offset of the system clock in milliseconds. + */ +export declare const getSkewCorrectedDate: (systemClockOffset: number) => Date; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts new file mode 100644 index 0000000..2d554b8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts @@ -0,0 +1,10 @@ +/** + * @internal + * + * If clock is skewed, it returns the difference between serverTime and current time. + * If clock is not skewed, it returns currentSystemClockOffset. + * + * @param clockTime The string value of the server time. + * @param currentSystemClockOffset The current system clock offset. + */ +export declare const getUpdatedSystemClockOffset: (clockTime: string, currentSystemClockOffset: number) => number; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/index.d.ts new file mode 100644 index 0000000..07c2195 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/index.d.ts @@ -0,0 +1,3 @@ +export * from "./getDateHeader"; +export * from "./getSkewCorrectedDate"; +export * from "./getUpdatedSystemClockOffset"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts new file mode 100644 index 0000000..970fa15 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + * + * Checks if the provided date is within the skew window of 300000ms. + * + * @param clockTime - The time to check for skew in milliseconds. + * @param systemClockOffset - The offset of the system clock in milliseconds. + */ +export declare const isClockSkewed: (clockTime: number, systemClockOffset: number) => boolean; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ConfigurableSerdeContext.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ConfigurableSerdeContext.d.ts new file mode 100644 index 0000000..29b2e61 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ConfigurableSerdeContext.d.ts @@ -0,0 +1,8 @@ +import type { ConfigurableSerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * @internal + */ +export declare class SerdeContextConfig implements ConfigurableSerdeContext { + protected serdeContext?: SerdeFunctions; + setSerdeContext(serdeContext: SerdeFunctions): void; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ProtocolLib.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ProtocolLib.d.ts new file mode 100644 index 0000000..32ce7c2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/ProtocolLib.d.ts @@ -0,0 +1,74 @@ +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import type { ServiceException as SDKBaseServiceException } from "@smithy/smithy-client"; +import type { HttpResponse as IHttpResponse, MetadataBearer, ResponseMetadata, StaticErrorSchema } from "@smithy/types"; +/** + * @internal + */ +type ErrorMetadataBearer = MetadataBearer & { + $fault: "client" | "server"; +}; +/** + * Shared code for Protocols. + * + * @internal + */ +export declare class ProtocolLib { + private queryCompat; + private errorRegistry?; + constructor(queryCompat?: boolean); + /** + * This is only for REST protocols. + * + * @param defaultContentType - of the protocol. + * @param inputSchema - schema for which to determine content type. + * + * @returns content-type header value or undefined when not applicable. + */ + resolveRestContentType(defaultContentType: string, inputSchema: NormalizedSchema): string | undefined; + /** + * Shared code for finding error schema or throwing an unmodeled base error. + * @returns error schema and error metadata. + * + * @throws ServiceBaseException or generic Error if no error schema could be found. + */ + getErrorSchemaOrThrowBaseException(errorIdentifier: string, defaultNamespace: string, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata, getErrorSchema?: (registry: TypeRegistry, errorName: string) => StaticErrorSchema): Promise<{ + errorSchema: StaticErrorSchema; + errorMetadata: ErrorMetadataBearer; + }>; + /** + * This method exists because in older clients, no `errorTypeRegistries` array is provided to the Protocol + * implementation. This means that the TypeRegistry queried by the error's namespace or the service's defaultNamespace + * must be composed into the possibly-empty local compositeErrorRegistry. + * + * + * @param composite - TypeRegistry instance local to instances of HttpProtocol. In newer clients, this instance directly + * receives the error registries exported by the client. + * @param errorIdentifier - parsed from the response, used to look up the error schema within the registry. + * @param defaultNamespace - property of the Protocol implementation pointing to a specific service. + */ + compose(composite: TypeRegistry, errorIdentifier: string, defaultNamespace: string): void; + /** + * Assigns additions onto exception if not already present. + */ + decorateServiceException(exception: E, additions?: Record): E; + /** + * Reads the x-amzn-query-error header for awsQuery compatibility. + * + * @param output - values that will be assigned to an error object. + * @param response - from which to read awsQueryError headers. + */ + setQueryCompatError(output: Record, response: IHttpResponse): void; + /** + * Assigns Error, Type, Code from the awsQuery error object to the output error object. + * @param queryCompatErrorData - query compat error object. + * @param errorData - canonical error object returned to the caller. + */ + queryCompatOutput(queryCompatErrorData: any, errorData: any): void; + /** + * Finds the canonical modeled error using the awsQueryError alias. + * @param registry - service error registry. + * @param errorName - awsQueryError name or regular qualified shapeId. + */ + findQueryCompatibleError(registry: TypeRegistry, errorName: string): StaticErrorSchema; +} +export {}; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/UnionSerde.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/UnionSerde.d.ts new file mode 100644 index 0000000..51b5940 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/UnionSerde.d.ts @@ -0,0 +1,24 @@ +/** + * Helper for identifying unknown union members during deserialization. + */ +export declare class UnionSerde { + private from; + private to; + private keys; + constructor(from: any, to: any); + /** + * Marks the key as being a known member. + * @param key - to mark. + */ + mark(key: string): void; + /** + * @returns whether only one key remains unmarked and nothing has been written, + * implying the object is a union. + */ + hasUnknown(): boolean; + /** + * Writes the unknown key-value pair, if present, into the $unknown property + * of the union object. + */ + writeUnknown(): void; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts new file mode 100644 index 0000000..b827578 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts @@ -0,0 +1,25 @@ +import { SmithyRpcV2CborProtocol } from "@smithy/core/cbor"; +import type { TypeRegistry } from "@smithy/core/schema"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest, HttpResponse, OperationSchema, ResponseMetadata, SerdeFunctions } from "@smithy/types"; +/** + * Extends the Smithy implementation to add AwsQueryCompatibility support. + * + * @public + */ +export declare class AwsSmithyRpcV2CborProtocol extends SmithyRpcV2CborProtocol { + private readonly awsQueryCompatible; + private readonly mixin; + constructor({ defaultNamespace, errorTypeRegistries, awsQueryCompatible, }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + awsQueryCompatible?: boolean; + }); + /** + * @override + */ + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + /** + * @override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: HttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/coercing-serializers.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/coercing-serializers.d.ts new file mode 100644 index 0000000..10d9d39 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/coercing-serializers.d.ts @@ -0,0 +1,18 @@ +/** + * @internal + * + * Used for awsQueryCompatibility trait. + */ +export declare const _toStr: (val: unknown) => string | undefined; +/** + * @internal + * + * Used for awsQueryCompatibility trait. + */ +export declare const _toBool: (val: unknown) => boolean | undefined; +/** + * @internal + * + * Used for awsQueryCompatibility trait. + */ +export declare const _toNum: (val: unknown) => number | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/common.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/common.d.ts new file mode 100644 index 0000000..2b9b171 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/common.d.ts @@ -0,0 +1,2 @@ +import type { SerdeFunctions } from "@smithy/types"; +export declare const collectBodyString: (streamBody: any, context: SerdeFunctions) => Promise; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/index.d.ts new file mode 100644 index 0000000..0a230f9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/index.d.ts @@ -0,0 +1,20 @@ +export * from "./cbor/AwsSmithyRpcV2CborProtocol"; +export * from "./coercing-serializers"; +export * from "./json/AwsJson1_0Protocol"; +export * from "./json/AwsJson1_1Protocol"; +export * from "./json/AwsJsonRpcProtocol"; +export * from "./json/AwsRestJsonProtocol"; +export * from "./json/JsonCodec"; +export * from "./json/JsonShapeDeserializer"; +export * from "./json/JsonShapeSerializer"; +export * from "./json/awsExpectUnion"; +export * from "./json/parseJsonBody"; +export * from "./query/AwsEc2QueryProtocol"; +export * from "./query/AwsQueryProtocol"; +export * from "./query/QuerySerializerSettings"; +export * from "./query/QueryShapeSerializer"; +export * from "./xml/AwsRestXmlProtocol"; +export * from "./xml/XmlCodec"; +export * from "./xml/XmlShapeDeserializer"; +export * from "./xml/XmlShapeSerializer"; +export * from "./xml/parseXmlBody"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts new file mode 100644 index 0000000..20bcd09 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_0Protocol.d.ts @@ -0,0 +1,22 @@ +import type { TypeRegistry } from "@smithy/core/schema"; +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +import type { JsonCodec } from "./JsonCodec"; +/** + * @public + * @see https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html#differences-between-awsjson1-0-and-awsjson1-1 + */ +export declare class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + getShapeId(): string; + protected getJsonRpcVersion(): "1.0"; + /** + * @override + */ + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts new file mode 100644 index 0000000..a52f24d --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJson1_1Protocol.d.ts @@ -0,0 +1,22 @@ +import type { TypeRegistry } from "@smithy/core/schema"; +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +import type { JsonCodec } from "./JsonCodec"; +/** + * @public + * @see https://smithy.io/2.0/aws/protocols/aws-json-1_1-protocol.html#differences-between-awsjson1-0-and-awsjson1-1 + */ +export declare class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + getShapeId(): string; + protected getJsonRpcVersion(): "1.1"; + /** + * @override + */ + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts new file mode 100644 index 0000000..4b21680 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsJsonRpcProtocol.d.ts @@ -0,0 +1,29 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import type { TypeRegistry } from "@smithy/core/schema"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest, HttpResponse, OperationSchema, ResponseMetadata, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { JsonCodec } from "./JsonCodec"; +/** + * @public + */ +export declare abstract class AwsJsonRpcProtocol extends RpcProtocol { + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + protected serviceTarget: string; + private readonly codec; + private readonly mixin; + private readonly awsQueryCompatible; + protected constructor({ defaultNamespace, errorTypeRegistries, serviceTarget, awsQueryCompatible, jsonCodec, }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + getPayloadCodec(): JsonCodec; + protected abstract getJsonRpcVersion(): "1.1" | "1.0"; + /** + * @override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: HttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts new file mode 100644 index 0000000..e945d08 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/AwsRestJsonProtocol.d.ts @@ -0,0 +1,36 @@ +import { HttpBindingProtocol } from "@smithy/core/protocols"; +import type { TypeRegistry } from "@smithy/core/schema"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest, HttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { JsonCodec } from "./JsonCodec"; +/** + * @public + */ +export declare class AwsRestJsonProtocol extends HttpBindingProtocol { + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + private readonly codec; + private readonly mixin; + constructor({ defaultNamespace, errorTypeRegistries, }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getShapeId(): string; + getPayloadCodec(): JsonCodec; + setSerdeContext(serdeContext: SerdeFunctions): void; + /** + * @override + */ + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + /** + * @override + */ + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: HttpResponse): Promise; + /** + * @override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: HttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + /** + * @override + */ + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonCodec.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonCodec.d.ts new file mode 100644 index 0000000..3553758 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonCodec.d.ts @@ -0,0 +1,19 @@ +import type { Codec, CodecSettings } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonShapeDeserializer } from "./JsonShapeDeserializer"; +import { JsonShapeSerializer } from "./JsonShapeSerializer"; +/** + * @public + */ +export type JsonSettings = CodecSettings & { + jsonName: boolean; +}; +/** + * @public + */ +export declare class JsonCodec extends SerdeContextConfig implements Codec { + readonly settings: JsonSettings; + constructor(settings: JsonSettings); + createSerializer(): JsonShapeSerializer; + createDeserializer(): JsonShapeDeserializer; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts new file mode 100644 index 0000000..19fddf8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeDeserializer.d.ts @@ -0,0 +1,13 @@ +import type { DocumentType, Schema, ShapeDeserializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { JsonSettings } from "./JsonCodec"; +/** + * @public + */ +export declare class JsonShapeDeserializer extends SerdeContextConfig implements ShapeDeserializer { + readonly settings: JsonSettings; + constructor(settings: JsonSettings); + read(schema: Schema, data: string | Uint8Array | unknown): Promise; + readObject(schema: Schema, data: DocumentType): any; + protected _read(schema: Schema, value: unknown): any; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts new file mode 100644 index 0000000..0b0d8ab --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts @@ -0,0 +1,28 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import type { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { JsonSettings } from "./JsonCodec"; +/** + * @public + */ +export declare class JsonShapeSerializer extends SerdeContextConfig implements ShapeSerializer { + readonly settings: JsonSettings; + /** + * Write buffer. Reused per value serialization pass. + * In the initial implementation, this is not an incremental buffer. + */ + protected buffer: any; + protected useReplacer: boolean; + protected rootSchema: NormalizedSchema | undefined; + constructor(settings: JsonSettings); + write(schema: Schema, value: unknown): void; + /** + * @internal + */ + writeDiscriminatedDocument(schema: Schema, value: unknown): void; + flush(): string; + /** + * Order if-statements by order of likelihood. + */ + protected _write(schema: Schema, value: unknown, container?: NormalizedSchema): any; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsExpectUnion.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsExpectUnion.d.ts new file mode 100644 index 0000000..98607ea --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/awsExpectUnion.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Forwards to Smithy's expectUnion function, but also ignores + * the `__type` field if it is present. + */ +export declare const awsExpectUnion: (value: unknown) => Record | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts new file mode 100644 index 0000000..54724c5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts @@ -0,0 +1,27 @@ +import type { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../../ConfigurableSerdeContext"; +import type { JsonSettings } from "../JsonCodec"; +/** + * This implementation uses single-pass JSON serialization with JS code instead of + * JSON.stringify. + * + * It isn't significantly faster than dual-pass ending with native JSON.stringify + * that I would want to use it. It seems to be barely faster in some mid-range object + * sizes but slower on the high end. + * + * @internal + */ +export declare class SinglePassJsonShapeSerializer extends SerdeContextConfig implements ShapeSerializer { + readonly settings: JsonSettings; + private buffer; + private rootSchema; + constructor(settings: JsonSettings); + write(schema: Schema, value: unknown): void; + /** + * @internal + */ + writeDiscriminatedDocument(schema: Schema, value: unknown): void; + flush(): string; + private writeObject; + private writeValue; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReplacer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReplacer.d.ts new file mode 100644 index 0000000..ae1c9b5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReplacer.d.ts @@ -0,0 +1,21 @@ +/** + * Serializes BigInt and NumericValue to JSON-number. + * @internal + */ +export declare class JsonReplacer { + /** + * Stores placeholder key to true serialized value lookup. + */ + private readonly values; + private counter; + private stage; + /** + * Creates a jsonReplacer function that reserves big integer and big decimal values + * for later replacement. + */ + createReplacer(): (key: string, value: unknown) => unknown; + /** + * Replaces placeholder keys with their true values. + */ + replaceInJson(json: string): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReviver.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReviver.d.ts new file mode 100644 index 0000000..aedfd87 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/jsonReviver.d.ts @@ -0,0 +1,15 @@ +/** + * @param key - JSON object key. + * @param value - parsed value. + * @param context - original JSON string for reference. Not available until Node.js 21 and unavailable in Safari as + * of April 2025. + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#browser_compatibility + * + * @internal + * + * @returns transformed value. + */ +export declare function jsonReviver(key: string, value: any, context?: { + source?: string; +}): any; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts new file mode 100644 index 0000000..947a0eb --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/parseJsonBody.d.ts @@ -0,0 +1,13 @@ +import type { HttpResponse, SerdeFunctions } from "@smithy/types"; +/** + * @internal + */ +export declare const parseJsonBody: (streamBody: any, context: SerdeFunctions) => any; +/** + * @internal + */ +export declare const parseJsonErrorBody: (errorBody: any, context: SerdeFunctions) => Promise; +/** + * @internal + */ +export declare const loadRestJsonErrorCode: (output: HttpResponse, data: any) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts new file mode 100644 index 0000000..ec5b879 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsEc2QueryProtocol.d.ts @@ -0,0 +1,27 @@ +import type { TypeRegistry } from "@smithy/core/schema"; +import { AwsQueryProtocol } from "./AwsQueryProtocol"; +/** + * @public + */ +export declare class AwsEc2QueryProtocol extends AwsQueryProtocol { + options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + errorTypeRegistries?: TypeRegistry[]; + }; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + errorTypeRegistries?: TypeRegistry[]; + }); + /** + * @override + */ + getShapeId(): string; + /** + * EC2 Query reads XResponse.XResult instead of XResponse directly. + */ + protected useNestedResult(): boolean; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts new file mode 100644 index 0000000..d61d929 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/AwsQueryProtocol.d.ts @@ -0,0 +1,49 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import type { TypeRegistry } from "@smithy/core/schema"; +import type { Codec, EndpointBearer, HandlerExecutionContext, HttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions } from "@smithy/types"; +import { XmlShapeDeserializer } from "../xml/XmlShapeDeserializer"; +import { QueryShapeSerializer } from "./QueryShapeSerializer"; +/** + * @public + */ +export declare class AwsQueryProtocol extends RpcProtocol { + options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + errorTypeRegistries?: TypeRegistry[]; + }; + protected serializer: QueryShapeSerializer; + protected deserializer: XmlShapeDeserializer; + private readonly mixin; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getShapeId(): string; + setSerdeContext(serdeContext: SerdeFunctions): void; + getPayloadCodec(): Codec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + /** + * EC2 Query overrides this. + */ + protected useNestedResult(): boolean; + /** + * override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + /** + * The variations in the error and error message locations are attributed to + * divergence between AWS Query and EC2 Query behavior. + */ + protected loadQueryErrorCode(output: IHttpResponse, data: any): string | undefined; + protected loadQueryError(data: any): any | undefined; + protected loadQueryErrorMessage(data: any): string; + /** + * @override + */ + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts new file mode 100644 index 0000000..cab2d47 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QuerySerializerSettings.d.ts @@ -0,0 +1,13 @@ +import type { CodecSettings } from "@smithy/types"; +/** + * @internal + */ +export type QuerySerializerSettings = CodecSettings & { + capitalizeKeys?: boolean; + flattenLists?: boolean; + serializeEmptyLists?: boolean; + /** + * Whether to read from ec2QueryName before xmlName. + */ + ec2?: boolean; +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts new file mode 100644 index 0000000..1c30e48 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/query/QueryShapeSerializer.d.ts @@ -0,0 +1,16 @@ +import type { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { QuerySerializerSettings } from "./QuerySerializerSettings"; +/** + * @public + */ +export declare class QueryShapeSerializer extends SerdeContextConfig implements ShapeSerializer { + readonly settings: QuerySerializerSettings; + private buffer; + constructor(settings: QuerySerializerSettings); + write(schema: Schema, value: unknown, prefix?: string): void; + flush(): string | Uint8Array; + protected getKey(memberName: string, xmlName?: string, ec2QueryName?: unknown, keySource?: string): string; + protected writeKey(key: string): void; + protected writeValue(value: string): void; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts new file mode 100644 index 0000000..dffa1d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/AwsRestXmlProtocol.d.ts @@ -0,0 +1,31 @@ +import { HttpBindingProtocol } from "@smithy/core/protocols"; +import type { TypeRegistry } from "@smithy/core/schema"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { XmlCodec } from "./XmlCodec"; +/** + * @public + */ +export declare class AwsRestXmlProtocol extends HttpBindingProtocol { + private readonly codec; + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + private readonly mixin; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getPayloadCodec(): XmlCodec; + getShapeId(): string; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + /** + * @override + */ + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + /** + * @override + */ + protected getDefaultContentType(): string; + private hasUnstructuredPayloadBinding; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlCodec.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlCodec.d.ts new file mode 100644 index 0000000..4d69b40 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlCodec.d.ts @@ -0,0 +1,14 @@ +import type { Codec, CodecSettings } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlShapeDeserializer } from "./XmlShapeDeserializer"; +import { XmlShapeSerializer } from "./XmlShapeSerializer"; +export type XmlSettings = CodecSettings & { + xmlNamespace: string; + serviceNamespace: string; +}; +export declare class XmlCodec extends SerdeContextConfig implements Codec { + readonly settings: XmlSettings; + constructor(settings: XmlSettings); + createSerializer(): XmlShapeSerializer; + createDeserializer(): XmlShapeDeserializer; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeDeserializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeDeserializer.d.ts new file mode 100644 index 0000000..ee2e034 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeDeserializer.d.ts @@ -0,0 +1,20 @@ +import type { Schema, SerdeFunctions, ShapeDeserializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { XmlSettings } from "./XmlCodec"; +/** + * @public + */ +export declare class XmlShapeDeserializer extends SerdeContextConfig implements ShapeDeserializer { + readonly settings: XmlSettings; + private stringDeserializer; + constructor(settings: XmlSettings); + setSerdeContext(serdeContext: SerdeFunctions): void; + /** + * @param schema - describing the data. + * @param bytes - serialized data. + * @param key - used by AwsQuery to step one additional depth into the object before reading it. + */ + read(schema: Schema, bytes: Uint8Array | string, key?: string): any; + readSchema(_schema: Schema, value: any): any; + protected parseXml(xml: string): any; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeSerializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeSerializer.d.ts new file mode 100644 index 0000000..5289f5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/XmlShapeSerializer.d.ts @@ -0,0 +1,21 @@ +import type { Schema as ISchema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import type { XmlSettings } from "./XmlCodec"; +/** + * @public + */ +export declare class XmlShapeSerializer extends SerdeContextConfig implements ShapeSerializer { + readonly settings: XmlSettings; + private stringBuffer?; + private byteBuffer?; + private buffer?; + constructor(settings: XmlSettings); + write(schema: ISchema, value: unknown): void; + flush(): string | Uint8Array; + private writeStruct; + private writeList; + private writeMap; + private writeSimple; + private writeSimpleInto; + private getXmlnsAttribute; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parseXmlBody.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parseXmlBody.d.ts new file mode 100644 index 0000000..30cfc30 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/parseXmlBody.d.ts @@ -0,0 +1,13 @@ +import type { HttpResponse, SerdeContext } from "@smithy/types"; +/** + * @internal + */ +export declare const parseXmlBody: (streamBody: any, context: SerdeContext) => any; +/** + * @internal + */ +export declare const parseXmlErrorBody: (errorBody: any, context: SerdeContext) => Promise; +/** + * @internal + */ +export declare const loadRestXmlErrorCode: (output: HttpResponse, data: any) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/simpleFormatXml.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/simpleFormatXml.d.ts new file mode 100644 index 0000000..43da7fc --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/submodules/protocols/xml/simpleFormatXml.d.ts @@ -0,0 +1,6 @@ +/** + * Formats XML, for testing only. + * @internal + * @deprecated don't use in runtime code. + */ +export declare function simpleFormatXml(xml: string): string; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts new file mode 100644 index 0000000..e83f927 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/api-extractor-type-index.d.ts @@ -0,0 +1,5 @@ +export * from "./index"; +export * from "./submodules/account-id-endpoint/index"; +export * from "./submodules/client/index"; +export * from "./submodules/httpAuthSchemes/index"; +export * from "./submodules/protocols/index"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..239de7a --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./submodules/client/index"; +export * from "./submodules/httpAuthSchemes/index"; +export * from "./submodules/protocols/index"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts new file mode 100644 index 0000000..10d5c21 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.d.ts @@ -0,0 +1,15 @@ +import { Provider } from "@smithy/types"; +import { AccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +export interface AccountIdEndpointModeInputConfig { + accountIdEndpointMode?: + | AccountIdEndpointMode + | Provider; +} +interface PreviouslyResolved {} +export interface AccountIdEndpointModeResolvedConfig { + accountIdEndpointMode: Provider; +} +export declare const resolveAccountIdEndpointModeConfig: ( + input: T & AccountIdEndpointModeInputConfig & PreviouslyResolved +) => T & AccountIdEndpointModeResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts new file mode 100644 index 0000000..27bdce9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/AccountIdEndpointModeConstants.d.ts @@ -0,0 +1,6 @@ +export type AccountIdEndpointMode = "disabled" | "preferred" | "required"; +export declare const DEFAULT_ACCOUNT_ID_ENDPOINT_MODE = "preferred"; +export declare const ACCOUNT_ID_ENDPOINT_MODE_VALUES: AccountIdEndpointMode[]; +export declare function validateAccountIdEndpointMode( + value: any +): value is AccountIdEndpointMode; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts new file mode 100644 index 0000000..9b04566 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/NodeAccountIdEndpointModeConfigOptions.d.ts @@ -0,0 +1,7 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { AccountIdEndpointMode } from "./AccountIdEndpointModeConstants"; +export declare const ENV_ACCOUNT_ID_ENDPOINT_MODE = + "AWS_ACCOUNT_ID_ENDPOINT_MODE"; +export declare const CONFIG_ACCOUNT_ID_ENDPOINT_MODE = + "account_id_endpoint_mode"; +export declare const NODE_ACCOUNT_ID_ENDPOINT_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts new file mode 100644 index 0000000..52af11d --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/account-id-endpoint/index.d.ts @@ -0,0 +1,3 @@ +export * from "./AccountIdEndpointModeConfigResolver"; +export * from "./AccountIdEndpointModeConstants"; +export * from "./NodeAccountIdEndpointModeConfigOptions"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts new file mode 100644 index 0000000..84af567 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts @@ -0,0 +1,4 @@ +export declare const state: { + warningEmitted: boolean; +}; +export declare const emitWarningIfUnsupportedVersion: (version: string) => void; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts new file mode 100644 index 0000000..492c6cd --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts @@ -0,0 +1,4 @@ +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./setCredentialFeature"; +export * from "./setFeature"; +export * from "./setTokenFeature"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts new file mode 100644 index 0000000..1336619 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts @@ -0,0 +1,11 @@ +import { + AttributedAwsCredentialIdentity, + AwsSdkCredentialsFeatures, +} from "@aws-sdk/types"; +export declare function setCredentialFeature< + F extends keyof AwsSdkCredentialsFeatures +>( + credentials: AttributedAwsCredentialIdentity, + feature: F, + value: AwsSdkCredentialsFeatures[F] +): AttributedAwsCredentialIdentity; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts new file mode 100644 index 0000000..84482ee --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts @@ -0,0 +1,6 @@ +import { AwsHandlerExecutionContext, AwsSdkFeatures } from "@aws-sdk/types"; +export declare function setFeature( + context: AwsHandlerExecutionContext, + feature: F, + value: AwsSdkFeatures[F] +): void; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts new file mode 100644 index 0000000..469548c --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setTokenFeature.d.ts @@ -0,0 +1,6 @@ +import { AttributedTokenIdentity, AwsSdkTokenFeatures } from "@aws-sdk/types"; +export declare function setTokenFeature( + token: AttributedTokenIdentity, + feature: F, + value: AwsSdkTokenFeatures[F] +): AttributedTokenIdentity; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts new file mode 100644 index 0000000..b8c2b74 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4ASigner.d.ts @@ -0,0 +1,12 @@ +import { + AwsCredentialIdentity, + HttpRequest as IHttpRequest, +} from "@smithy/types"; +import { AwsSdkSigV4Signer } from "./AwsSdkSigV4Signer"; +export declare class AwsSdkSigV4ASigner extends AwsSdkSigV4Signer { + sign( + httpRequest: IHttpRequest, + identity: AwsCredentialIdentity, + signingProperties: Record + ): Promise; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts new file mode 100644 index 0000000..0be6b41 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.d.ts @@ -0,0 +1,39 @@ +import { + AuthScheme, + AwsCredentialIdentity, + HttpRequest as IHttpRequest, + HttpResponse, + HttpSigner, + RequestSigner, +} from "@smithy/types"; +import { AwsSdkSigV4AAuthResolvedConfig } from "./resolveAwsSdkSigV4AConfig"; +interface AwsSdkSigV4Config extends AwsSdkSigV4AAuthResolvedConfig { + systemClockOffset: number; + signer: (authScheme?: AuthScheme) => Promise; +} +interface AwsSdkSigV4AuthSigningProperties { + config: AwsSdkSigV4Config; + signer: RequestSigner; + signingRegion?: string; + signingRegionSet?: string[]; + signingName?: string; +} +export declare const validateSigningProperties: ( + signingProperties: Record +) => Promise; +export declare class AwsSdkSigV4Signer implements HttpSigner { + sign( + httpRequest: IHttpRequest, + identity: AwsCredentialIdentity, + signingProperties: Record + ): Promise; + errorHandler( + signingProperties: Record + ): (error: Error) => never; + successHandler( + httpResponse: HttpResponse | unknown, + signingProperties: Record + ): void; +} +export declare const AWSSDKSigV4Signer: typeof AwsSdkSigV4Signer; +export {}; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts new file mode 100644 index 0000000..effc1e0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/NODE_AUTH_SCHEME_PREFERENCE_OPTIONS.d.ts @@ -0,0 +1,4 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const NODE_AUTH_SCHEME_PREFERENCE_OPTIONS: LoadedConfigSelectors< + string[] +>; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts new file mode 100644 index 0000000..6047921 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/index.d.ts @@ -0,0 +1,9 @@ +export { + AwsSdkSigV4Signer, + AWSSDKSigV4Signer, + validateSigningProperties, +} from "./AwsSdkSigV4Signer"; +export { AwsSdkSigV4ASigner } from "./AwsSdkSigV4ASigner"; +export * from "./NODE_AUTH_SCHEME_PREFERENCE_OPTIONS"; +export * from "./resolveAwsSdkSigV4AConfig"; +export * from "./resolveAwsSdkSigV4Config"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts new file mode 100644 index 0000000..9f949b0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4AConfig.d.ts @@ -0,0 +1,18 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { Provider } from "@smithy/types"; +export interface AwsSdkSigV4AAuthInputConfig { + sigv4aSigningRegionSet?: + | string[] + | undefined + | Provider; +} +export interface AwsSdkSigV4APreviouslyResolved {} +export interface AwsSdkSigV4AAuthResolvedConfig { + sigv4aSigningRegionSet: Provider; +} +export declare const resolveAwsSdkSigV4AConfig: ( + config: T & AwsSdkSigV4AAuthInputConfig & AwsSdkSigV4APreviouslyResolved +) => T & AwsSdkSigV4AAuthResolvedConfig; +export declare const NODE_SIGV4A_CONFIG_OPTIONS: LoadedConfigSelectors< + string[] | undefined +>; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts new file mode 100644 index 0000000..fc562d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.d.ts @@ -0,0 +1,65 @@ +import { MergeFunctions } from "@aws-sdk/types"; +import { SignatureV4CryptoInit, SignatureV4Init } from "@smithy/signature-v4"; +import { + AuthScheme, + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + ChecksumConstructor, + HashConstructor, + MemoizedProvider, + Provider, + RegionInfoProvider, + RequestSigner, +} from "@smithy/types"; +export interface AwsSdkSigV4AuthInputConfig { + credentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + signer?: + | RequestSigner + | ((authScheme?: AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: SignatureV4Init & SignatureV4CryptoInit + ) => RequestSigner; +} +export type AwsSdkSigV4Memoized = { + memoized?: boolean; + configBound?: boolean; + attributed?: boolean; +}; +export interface AwsSdkSigV4PreviouslyResolved { + credentialDefaultProvider?: ( + input: any + ) => MemoizedProvider; + region: string | Provider; + sha256: ChecksumConstructor | HashConstructor; + signingName?: string; + regionInfoProvider?: RegionInfoProvider; + defaultSigningName?: string; + serviceId: string; + useFipsEndpoint: Provider; + useDualstackEndpoint: Provider; +} +export interface AwsSdkSigV4AuthResolvedConfig { + credentials: MergeFunctions< + AwsCredentialIdentityProvider, + MemoizedProvider + > & + AwsSdkSigV4Memoized; + signer: (authScheme?: AuthScheme) => Promise; + signingEscapePath: boolean; + systemClockOffset: number; +} +export declare const resolveAwsSdkSigV4Config: ( + config: T & AwsSdkSigV4AuthInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & AwsSdkSigV4AuthResolvedConfig; +export interface AWSSDKSigV4AuthInputConfig + extends AwsSdkSigV4AuthInputConfig {} +export interface AWSSDKSigV4PreviouslyResolved + extends AwsSdkSigV4PreviouslyResolved {} +export interface AWSSDKSigV4AuthResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig {} +export declare const resolveAWSSDKSigV4Config: ( + config: T & AwsSdkSigV4AuthInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & AwsSdkSigV4AuthResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts new file mode 100644 index 0000000..3927741 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/index.d.ts @@ -0,0 +1,2 @@ +export * from "./aws_sdk"; +export * from "./utils/getBearerTokenEnvKey"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts new file mode 100644 index 0000000..aee2328 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getArrayForCommaSeparatedString.d.ts @@ -0,0 +1 @@ +export declare const getArrayForCommaSeparatedString: (str: string) => string[]; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts new file mode 100644 index 0000000..2904f0b --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getBearerTokenEnvKey.d.ts @@ -0,0 +1 @@ +export declare const getBearerTokenEnvKey: (signingName: string) => string; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts new file mode 100644 index 0000000..73fc529 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getDateHeader.d.ts @@ -0,0 +1 @@ +export declare const getDateHeader: (response: unknown) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts new file mode 100644 index 0000000..741c5ea --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.d.ts @@ -0,0 +1 @@ +export declare const getSkewCorrectedDate: (systemClockOffset: number) => Date; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts new file mode 100644 index 0000000..eae3311 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.d.ts @@ -0,0 +1,4 @@ +export declare const getUpdatedSystemClockOffset: ( + clockTime: string, + currentSystemClockOffset: number +) => number; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts new file mode 100644 index 0000000..07c2195 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/index.d.ts @@ -0,0 +1,3 @@ +export * from "./getDateHeader"; +export * from "./getSkewCorrectedDate"; +export * from "./getUpdatedSystemClockOffset"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts new file mode 100644 index 0000000..9f994f8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/httpAuthSchemes/utils/isClockSkewed.d.ts @@ -0,0 +1,4 @@ +export declare const isClockSkewed: ( + clockTime: number, + systemClockOffset: number +) => boolean; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts new file mode 100644 index 0000000..a225d08 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ConfigurableSerdeContext.d.ts @@ -0,0 +1,5 @@ +import { ConfigurableSerdeContext, SerdeFunctions } from "@smithy/types"; +export declare class SerdeContextConfig implements ConfigurableSerdeContext { + protected serdeContext?: SerdeFunctions; + setSerdeContext(serdeContext: SerdeFunctions): void; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts new file mode 100644 index 0000000..58f7c54 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/ProtocolLib.d.ts @@ -0,0 +1,53 @@ +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { ServiceException as SDKBaseServiceException } from "@smithy/smithy-client"; +import { + HttpResponse as IHttpResponse, + MetadataBearer, + ResponseMetadata, + StaticErrorSchema, +} from "@smithy/types"; +type ErrorMetadataBearer = MetadataBearer & { + $fault: "client" | "server"; +}; +export declare class ProtocolLib { + private queryCompat; + private errorRegistry?; + constructor(queryCompat?: boolean); + resolveRestContentType( + defaultContentType: string, + inputSchema: NormalizedSchema + ): string | undefined; + getErrorSchemaOrThrowBaseException( + errorIdentifier: string, + defaultNamespace: string, + response: IHttpResponse, + dataObject: any, + metadata: ResponseMetadata, + getErrorSchema?: ( + registry: TypeRegistry, + errorName: string + ) => StaticErrorSchema + ): Promise<{ + errorSchema: StaticErrorSchema; + errorMetadata: ErrorMetadataBearer; + }>; + compose( + composite: TypeRegistry, + errorIdentifier: string, + defaultNamespace: string + ): void; + decorateServiceException( + exception: E, + additions?: Record + ): E; + setQueryCompatError( + output: Record, + response: IHttpResponse + ): void; + queryCompatOutput(queryCompatErrorData: any, errorData: any): void; + findQueryCompatibleError( + registry: TypeRegistry, + errorName: string + ): StaticErrorSchema; +} +export {}; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/UnionSerde.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/UnionSerde.d.ts new file mode 100644 index 0000000..0daa335 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/UnionSerde.d.ts @@ -0,0 +1,9 @@ +export declare class UnionSerde { + private from; + private to; + private keys; + constructor(from: any, to: any); + mark(key: string): void; + hasUnknown(): boolean; + writeUnknown(): void; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts new file mode 100644 index 0000000..555d46f --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/cbor/AwsSmithyRpcV2CborProtocol.d.ts @@ -0,0 +1,36 @@ +import { SmithyRpcV2CborProtocol } from "@smithy/core/cbor"; +import { TypeRegistry } from "@smithy/core/schema"; +import { + EndpointBearer, + HandlerExecutionContext, + HttpRequest, + HttpResponse, + OperationSchema, + ResponseMetadata, + SerdeFunctions, +} from "@smithy/types"; +export declare class AwsSmithyRpcV2CborProtocol extends SmithyRpcV2CborProtocol { + private readonly awsQueryCompatible; + private readonly mixin; + constructor({ + defaultNamespace, + errorTypeRegistries, + awsQueryCompatible, + }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + awsQueryCompatible?: boolean; + }); + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: HttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts new file mode 100644 index 0000000..7657ceb --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/coercing-serializers.d.ts @@ -0,0 +1,3 @@ +export declare const _toStr: (val: unknown) => string | undefined; +export declare const _toBool: (val: unknown) => boolean | undefined; +export declare const _toNum: (val: unknown) => number | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/common.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/common.d.ts new file mode 100644 index 0000000..105253e --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/common.d.ts @@ -0,0 +1,5 @@ +import { SerdeFunctions } from "@smithy/types"; +export declare const collectBodyString: ( + streamBody: any, + context: SerdeFunctions +) => Promise; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/index.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/index.d.ts new file mode 100644 index 0000000..0a230f9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/index.d.ts @@ -0,0 +1,20 @@ +export * from "./cbor/AwsSmithyRpcV2CborProtocol"; +export * from "./coercing-serializers"; +export * from "./json/AwsJson1_0Protocol"; +export * from "./json/AwsJson1_1Protocol"; +export * from "./json/AwsJsonRpcProtocol"; +export * from "./json/AwsRestJsonProtocol"; +export * from "./json/JsonCodec"; +export * from "./json/JsonShapeDeserializer"; +export * from "./json/JsonShapeSerializer"; +export * from "./json/awsExpectUnion"; +export * from "./json/parseJsonBody"; +export * from "./query/AwsEc2QueryProtocol"; +export * from "./query/AwsQueryProtocol"; +export * from "./query/QuerySerializerSettings"; +export * from "./query/QueryShapeSerializer"; +export * from "./xml/AwsRestXmlProtocol"; +export * from "./xml/XmlCodec"; +export * from "./xml/XmlShapeDeserializer"; +export * from "./xml/XmlShapeSerializer"; +export * from "./xml/parseXmlBody"; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts new file mode 100644 index 0000000..87fd366 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_0Protocol.d.ts @@ -0,0 +1,21 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +import { JsonCodec } from "./JsonCodec"; +export declare class AwsJson1_0Protocol extends AwsJsonRpcProtocol { + constructor({ + defaultNamespace, + errorTypeRegistries, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + getShapeId(): string; + protected getJsonRpcVersion(): "1.0"; + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts new file mode 100644 index 0000000..17a7439 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJson1_1Protocol.d.ts @@ -0,0 +1,21 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { AwsJsonRpcProtocol } from "./AwsJsonRpcProtocol"; +import { JsonCodec } from "./JsonCodec"; +export declare class AwsJson1_1Protocol extends AwsJsonRpcProtocol { + constructor({ + defaultNamespace, + errorTypeRegistries, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + getShapeId(): string; + protected getJsonRpcVersion(): "1.1"; + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts new file mode 100644 index 0000000..4b954b4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsJsonRpcProtocol.d.ts @@ -0,0 +1,49 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import { + EndpointBearer, + HandlerExecutionContext, + HttpRequest, + HttpResponse, + OperationSchema, + ResponseMetadata, + SerdeFunctions, + ShapeDeserializer, + ShapeSerializer, +} from "@smithy/types"; +import { JsonCodec } from "./JsonCodec"; +export declare abstract class AwsJsonRpcProtocol extends RpcProtocol { + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + protected serviceTarget: string; + private readonly codec; + private readonly mixin; + private readonly awsQueryCompatible; + protected constructor({ + defaultNamespace, + errorTypeRegistries, + serviceTarget, + awsQueryCompatible, + jsonCodec, + }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + serviceTarget: string; + awsQueryCompatible?: boolean; + jsonCodec?: JsonCodec; + }); + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + getPayloadCodec(): JsonCodec; + protected abstract getJsonRpcVersion(): "1.1" | "1.0"; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: HttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts new file mode 100644 index 0000000..bc74f0b --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/AwsRestJsonProtocol.d.ts @@ -0,0 +1,49 @@ +import { HttpBindingProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import { + EndpointBearer, + HandlerExecutionContext, + HttpRequest, + HttpResponse, + MetadataBearer, + OperationSchema, + ResponseMetadata, + SerdeFunctions, + ShapeDeserializer, + ShapeSerializer, +} from "@smithy/types"; +import { JsonCodec } from "./JsonCodec"; +export declare class AwsRestJsonProtocol extends HttpBindingProtocol { + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + private readonly codec; + private readonly mixin; + constructor({ + defaultNamespace, + errorTypeRegistries, + }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getShapeId(): string; + getPayloadCodec(): JsonCodec; + setSerdeContext(serdeContext: SerdeFunctions): void; + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + deserializeResponse( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: HttpResponse + ): Promise; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: HttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts new file mode 100644 index 0000000..225608a --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonCodec.d.ts @@ -0,0 +1,16 @@ +import { Codec, CodecSettings } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonShapeDeserializer } from "./JsonShapeDeserializer"; +import { JsonShapeSerializer } from "./JsonShapeSerializer"; +export type JsonSettings = CodecSettings & { + jsonName: boolean; +}; +export declare class JsonCodec + extends SerdeContextConfig + implements Codec +{ + readonly settings: JsonSettings; + constructor(settings: JsonSettings); + createSerializer(): JsonShapeSerializer; + createDeserializer(): JsonShapeDeserializer; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts new file mode 100644 index 0000000..ae1579f --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeDeserializer.d.ts @@ -0,0 +1,13 @@ +import { DocumentType, Schema, ShapeDeserializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonSettings } from "./JsonCodec"; +export declare class JsonShapeDeserializer + extends SerdeContextConfig + implements ShapeDeserializer +{ + readonly settings: JsonSettings; + constructor(settings: JsonSettings); + read(schema: Schema, data: string | Uint8Array | unknown): Promise; + readObject(schema: Schema, data: DocumentType): any; + protected _read(schema: Schema, value: unknown): any; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts new file mode 100644 index 0000000..41d82e6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts @@ -0,0 +1,22 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { JsonSettings } from "./JsonCodec"; +export declare class JsonShapeSerializer + extends SerdeContextConfig + implements ShapeSerializer +{ + readonly settings: JsonSettings; + protected buffer: any; + protected useReplacer: boolean; + protected rootSchema: NormalizedSchema | undefined; + constructor(settings: JsonSettings); + write(schema: Schema, value: unknown): void; + writeDiscriminatedDocument(schema: Schema, value: unknown): void; + flush(): string; + protected _write( + schema: Schema, + value: unknown, + container?: NormalizedSchema + ): any; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts new file mode 100644 index 0000000..fdc331e --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/awsExpectUnion.d.ts @@ -0,0 +1,3 @@ +export declare const awsExpectUnion: ( + value: unknown +) => Record | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts new file mode 100644 index 0000000..d6b97bf --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.d.ts @@ -0,0 +1,17 @@ +import { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../../ConfigurableSerdeContext"; +import { JsonSettings } from "../JsonCodec"; +export declare class SinglePassJsonShapeSerializer + extends SerdeContextConfig + implements ShapeSerializer +{ + readonly settings: JsonSettings; + private buffer; + private rootSchema; + constructor(settings: JsonSettings); + write(schema: Schema, value: unknown): void; + writeDiscriminatedDocument(schema: Schema, value: unknown): void; + flush(): string; + private writeObject; + private writeValue; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts new file mode 100644 index 0000000..c781ab9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReplacer.d.ts @@ -0,0 +1,7 @@ +export declare class JsonReplacer { + private readonly values; + private counter; + private stage; + createReplacer(): (key: string, value: unknown) => unknown; + replaceInJson(json: string): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts new file mode 100644 index 0000000..6411604 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/jsonReviver.d.ts @@ -0,0 +1,7 @@ +export declare function jsonReviver( + key: string, + value: any, + context?: { + source?: string; + } +): any; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts new file mode 100644 index 0000000..f13884a --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/parseJsonBody.d.ts @@ -0,0 +1,13 @@ +import { HttpResponse, SerdeFunctions } from "@smithy/types"; +export declare const parseJsonBody: ( + streamBody: any, + context: SerdeFunctions +) => any; +export declare const parseJsonErrorBody: ( + errorBody: any, + context: SerdeFunctions +) => Promise; +export declare const loadRestJsonErrorCode: ( + output: HttpResponse, + data: any +) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts new file mode 100644 index 0000000..781dcd6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsEc2QueryProtocol.d.ts @@ -0,0 +1,18 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { AwsQueryProtocol } from "./AwsQueryProtocol"; +export declare class AwsEc2QueryProtocol extends AwsQueryProtocol { + options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + errorTypeRegistries?: TypeRegistry[]; + }; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getShapeId(): string; + protected useNestedResult(): boolean; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts new file mode 100644 index 0000000..ef1632f --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/AwsQueryProtocol.d.ts @@ -0,0 +1,60 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import { + Codec, + EndpointBearer, + HandlerExecutionContext, + HttpRequest, + HttpResponse as IHttpResponse, + MetadataBearer, + OperationSchema, + ResponseMetadata, + SerdeFunctions, +} from "@smithy/types"; +import { XmlShapeDeserializer } from "../xml/XmlShapeDeserializer"; +import { QueryShapeSerializer } from "./QueryShapeSerializer"; +export declare class AwsQueryProtocol extends RpcProtocol { + options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + errorTypeRegistries?: TypeRegistry[]; + }; + protected serializer: QueryShapeSerializer; + protected deserializer: XmlShapeDeserializer; + private readonly mixin; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + version: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getShapeId(): string; + setSerdeContext(serdeContext: SerdeFunctions): void; + getPayloadCodec(): Codec; + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + deserializeResponse( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: IHttpResponse + ): Promise; + protected useNestedResult(): boolean; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: IHttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; + protected loadQueryErrorCode( + output: IHttpResponse, + data: any + ): string | undefined; + protected loadQueryError(data: any): any | undefined; + protected loadQueryErrorMessage(data: any): string; + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts new file mode 100644 index 0000000..315d4aa --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QuerySerializerSettings.d.ts @@ -0,0 +1,7 @@ +import { CodecSettings } from "@smithy/types"; +export type QuerySerializerSettings = CodecSettings & { + capitalizeKeys?: boolean; + flattenLists?: boolean; + serializeEmptyLists?: boolean; + ec2?: boolean; +}; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts new file mode 100644 index 0000000..f373507 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/query/QueryShapeSerializer.d.ts @@ -0,0 +1,21 @@ +import { Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { QuerySerializerSettings } from "./QuerySerializerSettings"; +export declare class QueryShapeSerializer + extends SerdeContextConfig + implements ShapeSerializer +{ + readonly settings: QuerySerializerSettings; + private buffer; + constructor(settings: QuerySerializerSettings); + write(schema: Schema, value: unknown, prefix?: string): void; + flush(): string | Uint8Array; + protected getKey( + memberName: string, + xmlName?: string, + ec2QueryName?: unknown, + keySource?: string + ): string; + protected writeKey(key: string): void; + protected writeValue(value: string): void; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts new file mode 100644 index 0000000..5985cea --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/AwsRestXmlProtocol.d.ts @@ -0,0 +1,47 @@ +import { HttpBindingProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import { + EndpointBearer, + HandlerExecutionContext, + HttpRequest as IHttpRequest, + HttpResponse as IHttpResponse, + MetadataBearer, + OperationSchema, + ResponseMetadata, + SerdeFunctions, + ShapeDeserializer, + ShapeSerializer, +} from "@smithy/types"; +import { XmlCodec } from "./XmlCodec"; +export declare class AwsRestXmlProtocol extends HttpBindingProtocol { + private readonly codec; + protected serializer: ShapeSerializer; + protected deserializer: ShapeDeserializer; + private readonly mixin; + constructor(options: { + defaultNamespace: string; + xmlNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getPayloadCodec(): XmlCodec; + getShapeId(): string; + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; + deserializeResponse( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: IHttpResponse + ): Promise; + protected handleError( + operationSchema: OperationSchema, + context: HandlerExecutionContext & SerdeFunctions, + response: IHttpResponse, + dataObject: any, + metadata: ResponseMetadata + ): Promise; + protected getDefaultContentType(): string; + private hasUnstructuredPayloadBinding; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts new file mode 100644 index 0000000..14f46e0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlCodec.d.ts @@ -0,0 +1,17 @@ +import { Codec, CodecSettings } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlShapeDeserializer } from "./XmlShapeDeserializer"; +import { XmlShapeSerializer } from "./XmlShapeSerializer"; +export type XmlSettings = CodecSettings & { + xmlNamespace: string; + serviceNamespace: string; +}; +export declare class XmlCodec + extends SerdeContextConfig + implements Codec +{ + readonly settings: XmlSettings; + constructor(settings: XmlSettings); + createSerializer(): XmlShapeSerializer; + createDeserializer(): XmlShapeDeserializer; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts new file mode 100644 index 0000000..0c5b7cd --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeDeserializer.d.ts @@ -0,0 +1,15 @@ +import { Schema, SerdeFunctions, ShapeDeserializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlSettings } from "./XmlCodec"; +export declare class XmlShapeDeserializer + extends SerdeContextConfig + implements ShapeDeserializer +{ + readonly settings: XmlSettings; + private stringDeserializer; + constructor(settings: XmlSettings); + setSerdeContext(serdeContext: SerdeFunctions): void; + read(schema: Schema, bytes: Uint8Array | string, key?: string): any; + readSchema(_schema: Schema, value: any): any; + protected parseXml(xml: string): any; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts new file mode 100644 index 0000000..9ad3736 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/XmlShapeSerializer.d.ts @@ -0,0 +1,21 @@ +import { Schema as ISchema, ShapeSerializer } from "@smithy/types"; +import { SerdeContextConfig } from "../ConfigurableSerdeContext"; +import { XmlSettings } from "./XmlCodec"; +export declare class XmlShapeSerializer + extends SerdeContextConfig + implements ShapeSerializer +{ + readonly settings: XmlSettings; + private stringBuffer?; + private byteBuffer?; + private buffer?; + constructor(settings: XmlSettings); + write(schema: ISchema, value: unknown): void; + flush(): string | Uint8Array; + private writeStruct; + private writeList; + private writeMap; + private writeSimple; + private writeSimpleInto; + private getXmlnsAttribute; +} diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts new file mode 100644 index 0000000..f151834 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/parseXmlBody.d.ts @@ -0,0 +1,13 @@ +import { HttpResponse, SerdeContext } from "@smithy/types"; +export declare const parseXmlBody: ( + streamBody: any, + context: SerdeContext +) => any; +export declare const parseXmlErrorBody: ( + errorBody: any, + context: SerdeContext +) => Promise; +export declare const loadRestXmlErrorCode: ( + output: HttpResponse, + data: any +) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts new file mode 100644 index 0000000..b70cfc4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/xml/simpleFormatXml.d.ts @@ -0,0 +1 @@ +export declare function simpleFormatXml(xml: string): string; diff --git a/bff/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts b/bff/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts new file mode 100644 index 0000000..3783b5e --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/httpAuthSchemes.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/core/httpAuthSchemes" { + export * from "@aws-sdk/core/dist-types/submodules/httpAuthSchemes/index.d"; +} diff --git a/bff/node_modules/@aws-sdk/core/httpAuthSchemes.js b/bff/node_modules/@aws-sdk/core/httpAuthSchemes.js new file mode 100644 index 0000000..17685b0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/httpAuthSchemes.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/httpAuthSchemes/index.js"); diff --git a/bff/node_modules/@aws-sdk/core/package.json b/bff/node_modules/@aws-sdk/core/package.json new file mode 100644 index 0000000..d06430c --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/package.json @@ -0,0 +1,121 @@ +{ + "name": "@aws-sdk/core", + "version": "3.973.26", + "description": "Core functions & classes shared by multiple AWS SDK clients.", + "scripts": { + "build": "yarn lint && concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline core && premove ./dist-cjs/api-extractor-type-index.js", + "build:es": "tsc -p tsconfig.es.json && premove ./dist-es/api-extractor-type-index.js", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "lint": "node ../../scripts/validation/submodules-linter.js --pkg core", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "exports": { + ".": { + "types": "./dist-types/index.d.ts", + "module": "./dist-es/index.js", + "node": "./dist-cjs/index.js", + "import": "./dist-es/index.js", + "require": "./dist-cjs/index.js" + }, + "./package.json": { + "module": "./package.json", + "node": "./package.json", + "import": "./package.json", + "require": "./package.json" + }, + "./client": { + "types": "./dist-types/submodules/client/index.d.ts", + "module": "./dist-es/submodules/client/index.js", + "node": "./dist-cjs/submodules/client/index.js", + "import": "./dist-es/submodules/client/index.js", + "require": "./dist-cjs/submodules/client/index.js" + }, + "./httpAuthSchemes": { + "types": "./dist-types/submodules/httpAuthSchemes/index.d.ts", + "module": "./dist-es/submodules/httpAuthSchemes/index.js", + "node": "./dist-cjs/submodules/httpAuthSchemes/index.js", + "import": "./dist-es/submodules/httpAuthSchemes/index.js", + "require": "./dist-cjs/submodules/httpAuthSchemes/index.js" + }, + "./account-id-endpoint": { + "types": "./dist-types/submodules/account-id-endpoint/index.d.ts", + "module": "./dist-es/submodules/account-id-endpoint/index.js", + "node": "./dist-cjs/submodules/account-id-endpoint/index.js", + "import": "./dist-es/submodules/account-id-endpoint/index.js", + "require": "./dist-cjs/submodules/account-id-endpoint/index.js" + }, + "./protocols": { + "types": "./dist-types/submodules/protocols/index.d.ts", + "module": "./dist-es/submodules/protocols/index.js", + "node": "./dist-cjs/submodules/protocols/index.js", + "import": "./dist-es/submodules/protocols/index.js", + "require": "./dist-cjs/submodules/protocols/index.js" + } + }, + "files": [ + "./account-id-endpoint.d.ts", + "./account-id-endpoint.js", + "./client.d.ts", + "./client.js", + "./httpAuthSchemes.d.ts", + "./httpAuthSchemes.js", + "./protocols.d.ts", + "./protocols.js", + "dist-*/**" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/xml-builder": "^3.972.16", + "@smithy/core": "^3.23.13", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/core", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/core" + } +} diff --git a/bff/node_modules/@aws-sdk/core/protocols.d.ts b/bff/node_modules/@aws-sdk/core/protocols.d.ts new file mode 100644 index 0000000..7a36334 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/protocols.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/core/protocols" { + export * from "@aws-sdk/core/dist-types/submodules/protocols/index.d"; +} diff --git a/bff/node_modules/@aws-sdk/core/protocols.js b/bff/node_modules/@aws-sdk/core/protocols.js new file mode 100644 index 0000000..e2916e8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/core/protocols.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/protocols/index.js"); diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/LICENSE b/bff/node_modules/@aws-sdk/crc64-nvme/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/README.md b/bff/node_modules/@aws-sdk/crc64-nvme/README.md new file mode 100644 index 0000000..b1b6c45 --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/README.md @@ -0,0 +1,61 @@ +# @aws-sdk/crc64-nvme + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/crc64-nvme/latest.svg)](https://www.npmjs.com/package/@aws-sdk/crc64-nvme) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/crc64-nvme.svg)](https://www.npmjs.com/package/@aws-sdk/crc64-nvme) + +JavaScript Implementation of CRC64NVME which follows Smithy Checksum interface. + +## Usage + +### Basic Usage + +```javascript +import { Crc64Nvme } from "@aws-sdk/crc64-nvme"; + +const checksum = new Crc64Nvme(); +checksum.update(new Uint8Array([1, 2, 3, 4, 5])); +const result = await checksum.digest(); +console.log(result); // Uint8Array(8) containing the checksum +``` + +### String Input + +```javascript +import { Crc64Nvme } from "@aws-sdk/crc64-nvme"; + +const checksum = new Crc64Nvme(); +const data = new TextEncoder().encode("Hello, World!"); +checksum.update(data); +const result = await checksum.digest(); +``` + +### Incremental Updates + +```javascript +import { Crc64Nvme } from "@aws-sdk/crc64-nvme"; + +const checksum = new Crc64Nvme(); + +// Process data in chunks +checksum.update(new TextEncoder().encode("Hello, ")); +checksum.update(new TextEncoder().encode("World!")); + +const result = await checksum.digest(); +``` + +### Reset and Reuse + +```javascript +import { Crc64Nvme } from "@aws-sdk/crc64-nvme"; + +const checksum = new Crc64Nvme(); + +// First calculation +checksum.update(new TextEncoder().encode("data1")); +const result1 = await checksum.digest(); + +// Reset for new calculation +checksum.reset(); +checksum.update(new TextEncoder().encode("data2")); +const result2 = await checksum.digest(); +``` diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-cjs/index.js b/bff/node_modules/@aws-sdk/crc64-nvme/dist-cjs/index.js new file mode 100644 index 0000000..20b07f1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-cjs/index.js @@ -0,0 +1,101 @@ +'use strict'; + +const generateCRC64NVMETable = () => { + const sliceLength = 8; + const tables = new Array(sliceLength); + for (let slice = 0; slice < sliceLength; slice++) { + const table = new Array(512); + for (let i = 0; i < 256; i++) { + let crc = BigInt(i); + for (let j = 0; j < 8 * (slice + 1); j++) { + if (crc & 1n) { + crc = (crc >> 1n) ^ 0x9a6c9329ac4bc9b5n; + } + else { + crc = crc >> 1n; + } + } + table[i * 2] = Number((crc >> 32n) & 0xffffffffn); + table[i * 2 + 1] = Number(crc & 0xffffffffn); + } + tables[slice] = new Uint32Array(table); + } + return tables; +}; +let CRC64_NVME_REVERSED_TABLE; +let t0, t1, t2, t3; +let t4, t5, t6, t7; +const ensureTablesInitialized = () => { + if (!CRC64_NVME_REVERSED_TABLE) { + CRC64_NVME_REVERSED_TABLE = generateCRC64NVMETable(); + [t0, t1, t2, t3, t4, t5, t6, t7] = CRC64_NVME_REVERSED_TABLE; + } +}; +class Crc64Nvme { + c1 = 0; + c2 = 0; + constructor() { + ensureTablesInitialized(); + this.reset(); + } + update(data) { + const len = data.length; + let i = 0; + let crc1 = this.c1; + let crc2 = this.c2; + while (i + 8 <= len) { + const idx0 = ((crc2 ^ data[i++]) & 255) << 1; + const idx1 = (((crc2 >>> 8) ^ data[i++]) & 255) << 1; + const idx2 = (((crc2 >>> 16) ^ data[i++]) & 255) << 1; + const idx3 = (((crc2 >>> 24) ^ data[i++]) & 255) << 1; + const idx4 = ((crc1 ^ data[i++]) & 255) << 1; + const idx5 = (((crc1 >>> 8) ^ data[i++]) & 255) << 1; + const idx6 = (((crc1 >>> 16) ^ data[i++]) & 255) << 1; + const idx7 = (((crc1 >>> 24) ^ data[i++]) & 255) << 1; + crc1 = t7[idx0] ^ t6[idx1] ^ t5[idx2] ^ t4[idx3] ^ t3[idx4] ^ t2[idx5] ^ t1[idx6] ^ t0[idx7]; + crc2 = + t7[idx0 + 1] ^ + t6[idx1 + 1] ^ + t5[idx2 + 1] ^ + t4[idx3 + 1] ^ + t3[idx4 + 1] ^ + t2[idx5 + 1] ^ + t1[idx6 + 1] ^ + t0[idx7 + 1]; + } + while (i < len) { + const idx = ((crc2 ^ data[i]) & 255) << 1; + crc2 = ((crc2 >>> 8) | ((crc1 & 255) << 24)) >>> 0; + crc1 = (crc1 >>> 8) ^ t0[idx]; + crc2 ^= t0[idx + 1]; + i++; + } + this.c1 = crc1; + this.c2 = crc2; + } + async digest() { + const c1 = this.c1 ^ 4294967295; + const c2 = this.c2 ^ 4294967295; + return new Uint8Array([ + c1 >>> 24, + (c1 >>> 16) & 255, + (c1 >>> 8) & 255, + c1 & 255, + c2 >>> 24, + (c2 >>> 16) & 255, + (c2 >>> 8) & 255, + c2 & 255, + ]); + } + reset() { + this.c1 = 4294967295; + this.c2 = 4294967295; + } +} + +const crc64NvmeCrtContainer = { + CrtCrc64Nvme: null, +}; + +exports.Crc64Nvme = Crc64Nvme; +exports.crc64NvmeCrtContainer = crc64NvmeCrtContainer; diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-es/Crc64Nvme.js b/bff/node_modules/@aws-sdk/crc64-nvme/dist-es/Crc64Nvme.js new file mode 100644 index 0000000..86d8275 --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-es/Crc64Nvme.js @@ -0,0 +1,92 @@ +const generateCRC64NVMETable = () => { + const sliceLength = 8; + const tables = new Array(sliceLength); + for (let slice = 0; slice < sliceLength; slice++) { + const table = new Array(512); + for (let i = 0; i < 256; i++) { + let crc = BigInt(i); + for (let j = 0; j < 8 * (slice + 1); j++) { + if (crc & 1n) { + crc = (crc >> 1n) ^ 0x9a6c9329ac4bc9b5n; + } + else { + crc = crc >> 1n; + } + } + table[i * 2] = Number((crc >> 32n) & 0xffffffffn); + table[i * 2 + 1] = Number(crc & 0xffffffffn); + } + tables[slice] = new Uint32Array(table); + } + return tables; +}; +let CRC64_NVME_REVERSED_TABLE; +let t0, t1, t2, t3; +let t4, t5, t6, t7; +const ensureTablesInitialized = () => { + if (!CRC64_NVME_REVERSED_TABLE) { + CRC64_NVME_REVERSED_TABLE = generateCRC64NVMETable(); + [t0, t1, t2, t3, t4, t5, t6, t7] = CRC64_NVME_REVERSED_TABLE; + } +}; +export class Crc64Nvme { + c1 = 0; + c2 = 0; + constructor() { + ensureTablesInitialized(); + this.reset(); + } + update(data) { + const len = data.length; + let i = 0; + let crc1 = this.c1; + let crc2 = this.c2; + while (i + 8 <= len) { + const idx0 = ((crc2 ^ data[i++]) & 255) << 1; + const idx1 = (((crc2 >>> 8) ^ data[i++]) & 255) << 1; + const idx2 = (((crc2 >>> 16) ^ data[i++]) & 255) << 1; + const idx3 = (((crc2 >>> 24) ^ data[i++]) & 255) << 1; + const idx4 = ((crc1 ^ data[i++]) & 255) << 1; + const idx5 = (((crc1 >>> 8) ^ data[i++]) & 255) << 1; + const idx6 = (((crc1 >>> 16) ^ data[i++]) & 255) << 1; + const idx7 = (((crc1 >>> 24) ^ data[i++]) & 255) << 1; + crc1 = t7[idx0] ^ t6[idx1] ^ t5[idx2] ^ t4[idx3] ^ t3[idx4] ^ t2[idx5] ^ t1[idx6] ^ t0[idx7]; + crc2 = + t7[idx0 + 1] ^ + t6[idx1 + 1] ^ + t5[idx2 + 1] ^ + t4[idx3 + 1] ^ + t3[idx4 + 1] ^ + t2[idx5 + 1] ^ + t1[idx6 + 1] ^ + t0[idx7 + 1]; + } + while (i < len) { + const idx = ((crc2 ^ data[i]) & 255) << 1; + crc2 = ((crc2 >>> 8) | ((crc1 & 255) << 24)) >>> 0; + crc1 = (crc1 >>> 8) ^ t0[idx]; + crc2 ^= t0[idx + 1]; + i++; + } + this.c1 = crc1; + this.c2 = crc2; + } + async digest() { + const c1 = this.c1 ^ 4294967295; + const c2 = this.c2 ^ 4294967295; + return new Uint8Array([ + c1 >>> 24, + (c1 >>> 16) & 255, + (c1 >>> 8) & 255, + c1 & 255, + c2 >>> 24, + (c2 >>> 16) & 255, + (c2 >>> 8) & 255, + c2 & 255, + ]); + } + reset() { + this.c1 = 4294967295; + this.c2 = 4294967295; + } +} diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-es/crc64-nvme-crt-container.js b/bff/node_modules/@aws-sdk/crc64-nvme/dist-es/crc64-nvme-crt-container.js new file mode 100644 index 0000000..6cc799b --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-es/crc64-nvme-crt-container.js @@ -0,0 +1,3 @@ +export const crc64NvmeCrtContainer = { + CrtCrc64Nvme: null, +}; diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-es/index.js b/bff/node_modules/@aws-sdk/crc64-nvme/dist-es/index.js new file mode 100644 index 0000000..b79240f --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./Crc64Nvme"; +export * from "./crc64-nvme-crt-container"; diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/Crc64Nvme.d.ts b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/Crc64Nvme.d.ts new file mode 100644 index 0000000..008bc50 --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/Crc64Nvme.d.ts @@ -0,0 +1,24 @@ +import type { Checksum } from "@smithy/types"; +/** + * Implements CRC-64/NVME checksum algorithm. + * + * This class provides CRC-64 checksum calculation using the NVMe polynomial (0x9a6c9329ac4bc9b5). + * It uses an 8-slice lookup table for efficient computation. + * + * @example + * ```typescript + * const checksum = new Crc64Nvme(); + * checksum.update(new Uint8Array([1, 2, 3])); + * const result = await checksum.digest(); + * ``` + * + * @public + */ +export declare class Crc64Nvme implements Checksum { + private c1; + private c2; + constructor(); + update(data: Uint8Array): void; + digest(): Promise; + reset(): void; +} diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/crc64-nvme-crt-container.d.ts b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/crc64-nvme-crt-container.d.ts new file mode 100644 index 0000000..f2459c1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/crc64-nvme-crt-container.d.ts @@ -0,0 +1,13 @@ +import type { ChecksumConstructor } from "@smithy/types"; +/** + * @internal + * + * \@aws-sdk/crc64-nvme-crt will install the constructor in this + * container if it is installed. + * + * This avoids a runtime-require being interpreted statically by bundlers. + * + */ +export declare const crc64NvmeCrtContainer: { + CrtCrc64Nvme: null | ChecksumConstructor; +}; diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/index.d.ts new file mode 100644 index 0000000..b79240f --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./Crc64Nvme"; +export * from "./crc64-nvme-crt-container"; diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/ts3.4/Crc64Nvme.d.ts b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/ts3.4/Crc64Nvme.d.ts new file mode 100644 index 0000000..4975dbe --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/ts3.4/Crc64Nvme.d.ts @@ -0,0 +1,9 @@ +import { Checksum } from "@smithy/types"; +export declare class Crc64Nvme implements Checksum { + private c1; + private c2; + constructor(); + update(data: Uint8Array): void; + digest(): Promise; + reset(): void; +} diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/ts3.4/crc64-nvme-crt-container.d.ts b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/ts3.4/crc64-nvme-crt-container.d.ts new file mode 100644 index 0000000..4277ae5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/ts3.4/crc64-nvme-crt-container.d.ts @@ -0,0 +1,4 @@ +import { ChecksumConstructor } from "@smithy/types"; +export declare const crc64NvmeCrtContainer: { + CrtCrc64Nvme: null | ChecksumConstructor; +}; diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..b79240f --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./Crc64Nvme"; +export * from "./crc64-nvme-crt-container"; diff --git a/bff/node_modules/@aws-sdk/crc64-nvme/package.json b/bff/node_modules/@aws-sdk/crc64-nvme/package.json new file mode 100644 index 0000000..3927c4a --- /dev/null +++ b/bff/node_modules/@aws-sdk/crc64-nvme/package.json @@ -0,0 +1,50 @@ +{ + "name": "@aws-sdk/crc64-nvme", + "version": "3.972.5", + "description": "A pure JS implementation of CRC64-NVME checksum", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline crc64-nvme", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "sideEffects": true, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/util-base64": "^4.3.2", + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/crc64-nvme", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/crc64-nvme" + } +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/LICENSE b/bff/node_modules/@aws-sdk/credential-provider-env/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/README.md b/bff/node_modules/@aws-sdk/credential-provider-env/README.md new file mode 100644 index 0000000..ac40adc --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/README.md @@ -0,0 +1,20 @@ +# @aws-sdk/credential-provider-env + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-env/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-env) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-env.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-env) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- + +Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js b/bff/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js new file mode 100644 index 0000000..74d76aa --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js @@ -0,0 +1,41 @@ +'use strict'; + +var client = require('@aws-sdk/core/client'); +var propertyProvider = require('@smithy/property-provider'); + +const ENV_KEY = "AWS_ACCESS_KEY_ID"; +const ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; +const ENV_SESSION = "AWS_SESSION_TOKEN"; +const ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; +const ENV_CREDENTIAL_SCOPE = "AWS_CREDENTIAL_SCOPE"; +const ENV_ACCOUNT_ID = "AWS_ACCOUNT_ID"; +const fromEnv = (init) => async () => { + init?.logger?.debug("@aws-sdk/credential-provider-env - fromEnv"); + const accessKeyId = process.env[ENV_KEY]; + const secretAccessKey = process.env[ENV_SECRET]; + const sessionToken = process.env[ENV_SESSION]; + const expiry = process.env[ENV_EXPIRATION]; + const credentialScope = process.env[ENV_CREDENTIAL_SCOPE]; + const accountId = process.env[ENV_ACCOUNT_ID]; + if (accessKeyId && secretAccessKey) { + const credentials = { + accessKeyId, + secretAccessKey, + ...(sessionToken && { sessionToken }), + ...(expiry && { expiration: new Date(expiry) }), + ...(credentialScope && { credentialScope }), + ...(accountId && { accountId }), + }; + client.setCredentialFeature(credentials, "CREDENTIALS_ENV_VARS", "g"); + return credentials; + } + throw new propertyProvider.CredentialsProviderError("Unable to find environment variable credentials.", { logger: init?.logger }); +}; + +exports.ENV_ACCOUNT_ID = ENV_ACCOUNT_ID; +exports.ENV_CREDENTIAL_SCOPE = ENV_CREDENTIAL_SCOPE; +exports.ENV_EXPIRATION = ENV_EXPIRATION; +exports.ENV_KEY = ENV_KEY; +exports.ENV_SECRET = ENV_SECRET; +exports.ENV_SESSION = ENV_SESSION; +exports.fromEnv = fromEnv; diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js b/bff/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js new file mode 100644 index 0000000..a6a2928 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js @@ -0,0 +1,30 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { CredentialsProviderError } from "@smithy/property-provider"; +export const ENV_KEY = "AWS_ACCESS_KEY_ID"; +export const ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; +export const ENV_SESSION = "AWS_SESSION_TOKEN"; +export const ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; +export const ENV_CREDENTIAL_SCOPE = "AWS_CREDENTIAL_SCOPE"; +export const ENV_ACCOUNT_ID = "AWS_ACCOUNT_ID"; +export const fromEnv = (init) => async () => { + init?.logger?.debug("@aws-sdk/credential-provider-env - fromEnv"); + const accessKeyId = process.env[ENV_KEY]; + const secretAccessKey = process.env[ENV_SECRET]; + const sessionToken = process.env[ENV_SESSION]; + const expiry = process.env[ENV_EXPIRATION]; + const credentialScope = process.env[ENV_CREDENTIAL_SCOPE]; + const accountId = process.env[ENV_ACCOUNT_ID]; + if (accessKeyId && secretAccessKey) { + const credentials = { + accessKeyId, + secretAccessKey, + ...(sessionToken && { sessionToken }), + ...(expiry && { expiration: new Date(expiry) }), + ...(credentialScope && { credentialScope }), + ...(accountId && { accountId }), + }; + setCredentialFeature(credentials, "CREDENTIALS_ENV_VARS", "g"); + return credentials; + } + throw new CredentialsProviderError("Unable to find environment variable credentials.", { logger: init?.logger }); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/dist-es/index.js b/bff/node_modules/@aws-sdk/credential-provider-env/dist-es/index.js new file mode 100644 index 0000000..17bf6da --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/dist-es/index.js @@ -0,0 +1 @@ +export * from "./fromEnv"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/fromEnv.d.ts b/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/fromEnv.d.ts new file mode 100644 index 0000000..dbf5ba6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/fromEnv.d.ts @@ -0,0 +1,36 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +export interface FromEnvInit extends CredentialProviderOptions { +} +/** + * @internal + */ +export declare const ENV_KEY = "AWS_ACCESS_KEY_ID"; +/** + * @internal + */ +export declare const ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; +/** + * @internal + */ +export declare const ENV_SESSION = "AWS_SESSION_TOKEN"; +/** + * @internal + */ +export declare const ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; +/** + * @internal + */ +export declare const ENV_CREDENTIAL_SCOPE = "AWS_CREDENTIAL_SCOPE"; +/** + * @internal + */ +export declare const ENV_ACCOUNT_ID = "AWS_ACCOUNT_ID"; +/** + * @internal + * + * Source AWS credentials from known environment variables. If either the + * `AWS_ACCESS_KEY_ID` or `AWS_SECRET_ACCESS_KEY` environment variable is not + * set in this process, the provider will return a rejected promise. + */ +export declare const fromEnv: (init?: FromEnvInit) => AwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/index.d.ts new file mode 100644 index 0000000..fe76e31 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./fromEnv"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/fromEnv.d.ts b/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/fromEnv.d.ts new file mode 100644 index 0000000..55c454e --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/fromEnv.d.ts @@ -0,0 +1,12 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export interface FromEnvInit extends CredentialProviderOptions {} +export declare const ENV_KEY = "AWS_ACCESS_KEY_ID"; +export declare const ENV_SECRET = "AWS_SECRET_ACCESS_KEY"; +export declare const ENV_SESSION = "AWS_SESSION_TOKEN"; +export declare const ENV_EXPIRATION = "AWS_CREDENTIAL_EXPIRATION"; +export declare const ENV_CREDENTIAL_SCOPE = "AWS_CREDENTIAL_SCOPE"; +export declare const ENV_ACCOUNT_ID = "AWS_ACCOUNT_ID"; +export declare const fromEnv: ( + init?: FromEnvInit +) => AwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..17bf6da --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./fromEnv"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-env/package.json b/bff/node_modules/@aws-sdk/credential-provider-env/package.json new file mode 100644 index 0000000..b018831 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-env/package.json @@ -0,0 +1,63 @@ +{ + "name": "@aws-sdk/credential-provider-env", + "version": "3.972.24", + "description": "AWS credential provider that sources credentials from known environment variables", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-env", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-env", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-env" + } +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/README.md b/bff/node_modules/@aws-sdk/credential-provider-http/README.md new file mode 100644 index 0000000..e8f19f8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/README.md @@ -0,0 +1,10 @@ +# @aws-sdk/credential-provider-http + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-http/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-http) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-http.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-http) + +> An internal transitively required package. + +## Usage + +See https://www.npmjs.com/package/@aws-sdk/credential-providers diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js new file mode 100644 index 0000000..c4adb5f --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.checkUrl = void 0; +const property_provider_1 = require("@smithy/property-provider"); +const LOOPBACK_CIDR_IPv4 = "127.0.0.0/8"; +const LOOPBACK_CIDR_IPv6 = "::1/128"; +const ECS_CONTAINER_HOST = "169.254.170.2"; +const EKS_CONTAINER_HOST_IPv4 = "169.254.170.23"; +const EKS_CONTAINER_HOST_IPv6 = "[fd00:ec2::23]"; +const checkUrl = (url, logger) => { + if (url.protocol === "https:") { + return; + } + if (url.hostname === ECS_CONTAINER_HOST || + url.hostname === EKS_CONTAINER_HOST_IPv4 || + url.hostname === EKS_CONTAINER_HOST_IPv6) { + return; + } + if (url.hostname.includes("[")) { + if (url.hostname === "[::1]" || url.hostname === "[0000:0000:0000:0000:0000:0000:0000:0001]") { + return; + } + } + else { + if (url.hostname === "localhost") { + return; + } + const ipComponents = url.hostname.split("."); + const inRange = (component) => { + const num = parseInt(component, 10); + return 0 <= num && num <= 255; + }; + if (ipComponents[0] === "127" && + inRange(ipComponents[1]) && + inRange(ipComponents[2]) && + inRange(ipComponents[3]) && + ipComponents.length === 4) { + return; + } + } + throw new property_provider_1.CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following: + - loopback CIDR 127.0.0.0/8 or [::1/128] + - ECS container host 169.254.170.2 + - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger }); +}; +exports.checkUrl = checkUrl; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js new file mode 100644 index 0000000..d7c0efa --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const property_provider_1 = require("@smithy/property-provider"); +const checkUrl_1 = require("./checkUrl"); +const requestHelpers_1 = require("./requestHelpers"); +const retry_wrapper_1 = require("./retry-wrapper"); +const fromHttp = (options = {}) => { + options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp"); + let host; + const full = options.credentialsFullUri; + if (full) { + host = full; + } + else { + throw new property_provider_1.CredentialsProviderError("No HTTP credential provider host provided.", { logger: options.logger }); + } + const url = new URL(host); + (0, checkUrl_1.checkUrl)(url, options.logger); + const requestHandler = new fetch_http_handler_1.FetchHttpHandler(); + return (0, retry_wrapper_1.retryWrapper)(async () => { + const request = (0, requestHelpers_1.createGetRequest)(url); + if (options.authorizationToken) { + request.headers.Authorization = options.authorizationToken; + } + const result = await requestHandler.handle(request); + return (0, requestHelpers_1.getCredentials)(result.response); + }, options.maxRetries ?? 3, options.timeout ?? 1000); +}; +exports.fromHttp = fromHttp; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js new file mode 100644 index 0000000..2950193 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js @@ -0,0 +1,70 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +const tslib_1 = require("tslib"); +const client_1 = require("@aws-sdk/core/client"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const property_provider_1 = require("@smithy/property-provider"); +const promises_1 = tslib_1.__importDefault(require("node:fs/promises")); +const checkUrl_1 = require("./checkUrl"); +const requestHelpers_1 = require("./requestHelpers"); +const retry_wrapper_1 = require("./retry-wrapper"); +const AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +const DEFAULT_LINK_LOCAL_HOST = "http://169.254.170.2"; +const AWS_CONTAINER_CREDENTIALS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +const AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE"; +const AWS_CONTAINER_AUTHORIZATION_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +const fromHttp = (options = {}) => { + options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp"); + let host; + const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI]; + const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI]; + const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN]; + const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE]; + const warn = options.logger?.constructor?.name === "NoOpLogger" || !options.logger?.warn + ? console.warn + : options.logger.warn.bind(options.logger); + if (relative && full) { + warn("@aws-sdk/credential-provider-http: " + + "you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri."); + warn("awsContainerCredentialsFullUri will take precedence."); + } + if (token && tokenFile) { + warn("@aws-sdk/credential-provider-http: " + + "you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile."); + warn("awsContainerAuthorizationToken will take precedence."); + } + if (full) { + host = full; + } + else if (relative) { + host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`; + } + else { + throw new property_provider_1.CredentialsProviderError(`No HTTP credential provider host provided. +Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger }); + } + const url = new URL(host); + (0, checkUrl_1.checkUrl)(url, options.logger); + const requestHandler = node_http_handler_1.NodeHttpHandler.create({ + requestTimeout: options.timeout ?? 1000, + connectionTimeout: options.timeout ?? 1000, + }); + return (0, retry_wrapper_1.retryWrapper)(async () => { + const request = (0, requestHelpers_1.createGetRequest)(url); + if (token) { + request.headers.Authorization = token; + } + else if (tokenFile) { + request.headers.Authorization = (await promises_1.default.readFile(tokenFile)).toString(); + } + try { + const result = await requestHandler.handle(request); + return (0, requestHelpers_1.getCredentials)(result.response).then((creds) => (0, client_1.setCredentialFeature)(creds, "CREDENTIALS_HTTP", "z")); + } + catch (e) { + throw new property_provider_1.CredentialsProviderError(String(e), { logger: options.logger }); + } + }, options.maxRetries ?? 3, options.timeout ?? 1000); +}; +exports.fromHttp = fromHttp; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttpTypes.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttpTypes.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttpTypes.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js new file mode 100644 index 0000000..48159a3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createGetRequest = createGetRequest; +exports.getCredentials = getCredentials; +const property_provider_1 = require("@smithy/property-provider"); +const protocol_http_1 = require("@smithy/protocol-http"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_stream_1 = require("@smithy/util-stream"); +function createGetRequest(url) { + return new protocol_http_1.HttpRequest({ + protocol: url.protocol, + hostname: url.hostname, + port: Number(url.port), + path: url.pathname, + query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => { + acc[k] = v; + return acc; + }, {}), + fragment: url.hash, + }); +} +async function getCredentials(response, logger) { + const stream = (0, util_stream_1.sdkStreamMixin)(response.body); + const str = await stream.transformToString(); + if (response.statusCode === 200) { + const parsed = JSON.parse(str); + if (typeof parsed.AccessKeyId !== "string" || + typeof parsed.SecretAccessKey !== "string" || + typeof parsed.Token !== "string" || + typeof parsed.Expiration !== "string") { + throw new property_provider_1.CredentialsProviderError("HTTP credential provider response not of the required format, an object matching: " + + "{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }", { logger }); + } + return { + accessKeyId: parsed.AccessKeyId, + secretAccessKey: parsed.SecretAccessKey, + sessionToken: parsed.Token, + expiration: (0, smithy_client_1.parseRfc3339DateTime)(parsed.Expiration), + }; + } + if (response.statusCode >= 400 && response.statusCode < 500) { + let parsedBody = {}; + try { + parsedBody = JSON.parse(str); + } + catch (e) { } + throw Object.assign(new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), { + Code: parsedBody.Code, + Message: parsedBody.Message, + }); + } + throw new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }); +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js new file mode 100644 index 0000000..b99b2ef --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.retryWrapper = void 0; +const retryWrapper = (toRetry, maxRetries, delayMs) => { + return async () => { + for (let i = 0; i < maxRetries; ++i) { + try { + return await toRetry(); + } + catch (e) { + await new Promise((resolve) => setTimeout(resolve, delayMs)); + } + } + return await toRetry(); + }; +}; +exports.retryWrapper = retryWrapper; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js new file mode 100644 index 0000000..9300747 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +var fromHttp_browser_1 = require("./fromHttp/fromHttp.browser"); +Object.defineProperty(exports, "fromHttp", { enumerable: true, get: function () { return fromHttp_browser_1.fromHttp; } }); diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js new file mode 100644 index 0000000..0286ea0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromHttp = void 0; +var fromHttp_1 = require("./fromHttp/fromHttp"); +Object.defineProperty(exports, "fromHttp", { enumerable: true, get: function () { return fromHttp_1.fromHttp; } }); diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/checkUrl.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/checkUrl.js new file mode 100644 index 0000000..2a42ed7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/checkUrl.js @@ -0,0 +1,42 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +const LOOPBACK_CIDR_IPv4 = "127.0.0.0/8"; +const LOOPBACK_CIDR_IPv6 = "::1/128"; +const ECS_CONTAINER_HOST = "169.254.170.2"; +const EKS_CONTAINER_HOST_IPv4 = "169.254.170.23"; +const EKS_CONTAINER_HOST_IPv6 = "[fd00:ec2::23]"; +export const checkUrl = (url, logger) => { + if (url.protocol === "https:") { + return; + } + if (url.hostname === ECS_CONTAINER_HOST || + url.hostname === EKS_CONTAINER_HOST_IPv4 || + url.hostname === EKS_CONTAINER_HOST_IPv6) { + return; + } + if (url.hostname.includes("[")) { + if (url.hostname === "[::1]" || url.hostname === "[0000:0000:0000:0000:0000:0000:0000:0001]") { + return; + } + } + else { + if (url.hostname === "localhost") { + return; + } + const ipComponents = url.hostname.split("."); + const inRange = (component) => { + const num = parseInt(component, 10); + return 0 <= num && num <= 255; + }; + if (ipComponents[0] === "127" && + inRange(ipComponents[1]) && + inRange(ipComponents[2]) && + inRange(ipComponents[3]) && + ipComponents.length === 4) { + return; + } + } + throw new CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following: + - loopback CIDR 127.0.0.0/8 or [::1/128] + - ECS container host 169.254.170.2 + - EKS container host 169.254.170.23 or [fd00:ec2::23]`, { logger }); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.browser.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.browser.js new file mode 100644 index 0000000..7189b92 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.browser.js @@ -0,0 +1,27 @@ +import { FetchHttpHandler } from "@smithy/fetch-http-handler"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { checkUrl } from "./checkUrl"; +import { createGetRequest, getCredentials } from "./requestHelpers"; +import { retryWrapper } from "./retry-wrapper"; +export const fromHttp = (options = {}) => { + options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp"); + let host; + const full = options.credentialsFullUri; + if (full) { + host = full; + } + else { + throw new CredentialsProviderError("No HTTP credential provider host provided.", { logger: options.logger }); + } + const url = new URL(host); + checkUrl(url, options.logger); + const requestHandler = new FetchHttpHandler(); + return retryWrapper(async () => { + const request = createGetRequest(url); + if (options.authorizationToken) { + request.headers.Authorization = options.authorizationToken; + } + const result = await requestHandler.handle(request); + return getCredentials(result.response); + }, options.maxRetries ?? 3, options.timeout ?? 1000); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js new file mode 100644 index 0000000..40b6a76 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js @@ -0,0 +1,65 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { NodeHttpHandler } from "@smithy/node-http-handler"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import fs from "node:fs/promises"; +import { checkUrl } from "./checkUrl"; +import { createGetRequest, getCredentials } from "./requestHelpers"; +import { retryWrapper } from "./retry-wrapper"; +const AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +const DEFAULT_LINK_LOCAL_HOST = "http://169.254.170.2"; +const AWS_CONTAINER_CREDENTIALS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +const AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = "AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE"; +const AWS_CONTAINER_AUTHORIZATION_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +export const fromHttp = (options = {}) => { + options.logger?.debug("@aws-sdk/credential-provider-http - fromHttp"); + let host; + const relative = options.awsContainerCredentialsRelativeUri ?? process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI]; + const full = options.awsContainerCredentialsFullUri ?? process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI]; + const token = options.awsContainerAuthorizationToken ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN]; + const tokenFile = options.awsContainerAuthorizationTokenFile ?? process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE]; + const warn = options.logger?.constructor?.name === "NoOpLogger" || !options.logger?.warn + ? console.warn + : options.logger.warn.bind(options.logger); + if (relative && full) { + warn("@aws-sdk/credential-provider-http: " + + "you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri."); + warn("awsContainerCredentialsFullUri will take precedence."); + } + if (token && tokenFile) { + warn("@aws-sdk/credential-provider-http: " + + "you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile."); + warn("awsContainerAuthorizationToken will take precedence."); + } + if (full) { + host = full; + } + else if (relative) { + host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`; + } + else { + throw new CredentialsProviderError(`No HTTP credential provider host provided. +Set AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`, { logger: options.logger }); + } + const url = new URL(host); + checkUrl(url, options.logger); + const requestHandler = NodeHttpHandler.create({ + requestTimeout: options.timeout ?? 1000, + connectionTimeout: options.timeout ?? 1000, + }); + return retryWrapper(async () => { + const request = createGetRequest(url); + if (token) { + request.headers.Authorization = token; + } + else if (tokenFile) { + request.headers.Authorization = (await fs.readFile(tokenFile)).toString(); + } + try { + const result = await requestHandler.handle(request); + return getCredentials(result.response).then((creds) => setCredentialFeature(creds, "CREDENTIALS_HTTP", "z")); + } + catch (e) { + throw new CredentialsProviderError(String(e), { logger: options.logger }); + } + }, options.maxRetries ?? 3, options.timeout ?? 1000); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttpTypes.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttpTypes.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttpTypes.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/requestHelpers.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/requestHelpers.js new file mode 100644 index 0000000..9e271ce --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/requestHelpers.js @@ -0,0 +1,49 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { HttpRequest } from "@smithy/protocol-http"; +import { parseRfc3339DateTime } from "@smithy/smithy-client"; +import { sdkStreamMixin } from "@smithy/util-stream"; +export function createGetRequest(url) { + return new HttpRequest({ + protocol: url.protocol, + hostname: url.hostname, + port: Number(url.port), + path: url.pathname, + query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => { + acc[k] = v; + return acc; + }, {}), + fragment: url.hash, + }); +} +export async function getCredentials(response, logger) { + const stream = sdkStreamMixin(response.body); + const str = await stream.transformToString(); + if (response.statusCode === 200) { + const parsed = JSON.parse(str); + if (typeof parsed.AccessKeyId !== "string" || + typeof parsed.SecretAccessKey !== "string" || + typeof parsed.Token !== "string" || + typeof parsed.Expiration !== "string") { + throw new CredentialsProviderError("HTTP credential provider response not of the required format, an object matching: " + + "{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }", { logger }); + } + return { + accessKeyId: parsed.AccessKeyId, + secretAccessKey: parsed.SecretAccessKey, + sessionToken: parsed.Token, + expiration: parseRfc3339DateTime(parsed.Expiration), + }; + } + if (response.statusCode >= 400 && response.statusCode < 500) { + let parsedBody = {}; + try { + parsedBody = JSON.parse(str); + } + catch (e) { } + throw Object.assign(new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }), { + Code: parsedBody.Code, + Message: parsedBody.Message, + }); + } + throw new CredentialsProviderError(`Server responded with status: ${response.statusCode}`, { logger }); +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/retry-wrapper.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/retry-wrapper.js new file mode 100644 index 0000000..7006f3c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/retry-wrapper.js @@ -0,0 +1,13 @@ +export const retryWrapper = (toRetry, maxRetries, delayMs) => { + return async () => { + for (let i = 0; i < maxRetries; ++i) { + try { + return await toRetry(); + } + catch (e) { + await new Promise((resolve) => setTimeout(resolve, delayMs)); + } + } + return await toRetry(); + }; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/index.browser.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/index.browser.js new file mode 100644 index 0000000..98204c5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/index.browser.js @@ -0,0 +1 @@ +export { fromHttp } from "./fromHttp/fromHttp.browser"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/index.js b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/index.js new file mode 100644 index 0000000..2911386 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-es/index.js @@ -0,0 +1 @@ +export { fromHttp } from "./fromHttp/fromHttp"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/checkUrl.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/checkUrl.d.ts new file mode 100644 index 0000000..8451855 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/checkUrl.d.ts @@ -0,0 +1,9 @@ +import type { Logger } from "@smithy/types"; +/** + * @internal + * + * @param url - to be validated. + * @param logger - passed to CredentialsProviderError. + * @throws if not acceptable to this provider. + */ +export declare const checkUrl: (url: URL, logger?: Logger) => void; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.browser.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.browser.d.ts new file mode 100644 index 0000000..a4a9427 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.browser.d.ts @@ -0,0 +1,6 @@ +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +import type { FromHttpOptions } from "./fromHttpTypes"; +/** + * Creates a provider that gets credentials via HTTP request. + */ +export declare const fromHttp: (options?: FromHttpOptions) => AwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.d.ts new file mode 100644 index 0000000..a4a9427 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttp.d.ts @@ -0,0 +1,6 @@ +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +import type { FromHttpOptions } from "./fromHttpTypes"; +/** + * Creates a provider that gets credentials via HTTP request. + */ +export declare const fromHttp: (options?: FromHttpOptions) => AwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttpTypes.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttpTypes.d.ts new file mode 100644 index 0000000..b751ded --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/fromHttpTypes.d.ts @@ -0,0 +1,69 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +/** + * @public + * + * Input for the fromHttp function in the HTTP Credentials Provider for Node.js. + */ +export interface FromHttpOptions extends CredentialProviderOptions { + /** + * If this value is provided, it will be used as-is. + * + * For browser environments, use instead {@link credentialsFullUri}. + */ + awsContainerCredentialsFullUri?: string; + /** + * If this value is provided instead of the full URI, it + * will be appended to the default link local host of 169.254.170.2. + * + * Not supported in browsers. + */ + awsContainerCredentialsRelativeUri?: string; + /** + * Will be read on each credentials request to + * add an Authorization request header value. + * + * Not supported in browsers. + */ + awsContainerAuthorizationTokenFile?: string; + /** + * An alternative to awsContainerAuthorizationTokenFile, + * this is the token value itself. + * + * For browser environments, use instead {@link authorizationToken}. + */ + awsContainerAuthorizationToken?: string; + /** + * BROWSER ONLY. + * + * In browsers, a relative URI is not allowed, and a full URI must be provided. + * HTTPS is required. + * + * This value is required for the browser environment. + */ + credentialsFullUri?: string; + /** + * BROWSER ONLY. + * + * Providing this value will set an "Authorization" request + * header value on the GET request. + */ + authorizationToken?: string; + /** + * Default is 3 retry attempts or 4 total attempts. + */ + maxRetries?: number; + /** + * Default is 1000ms. Time in milliseconds to spend waiting between retry attempts. + */ + timeout?: number; +} +/** + * @public + */ +export type HttpProviderCredentials = { + AccessKeyId: string; + SecretAccessKey: string; + Token: string; + AccountId?: string; + Expiration: string; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/requestHelpers.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/requestHelpers.d.ts new file mode 100644 index 0000000..0ebd8d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/requestHelpers.d.ts @@ -0,0 +1,11 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +import { HttpRequest } from "@smithy/protocol-http"; +import type { HttpResponse, Logger } from "@smithy/types"; +/** + * @internal + */ +export declare function createGetRequest(url: URL): HttpRequest; +/** + * @internal + */ +export declare function getCredentials(response: HttpResponse, logger?: Logger): Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/retry-wrapper.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/retry-wrapper.d.ts new file mode 100644 index 0000000..bf63add --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/fromHttp/retry-wrapper.d.ts @@ -0,0 +1,10 @@ +/** + * @internal + */ +export interface RetryableProvider { + (): Promise; +} +/** + * @internal + */ +export declare const retryWrapper: (toRetry: RetryableProvider, maxRetries: number, delayMs: number) => RetryableProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/index.browser.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/index.browser.d.ts new file mode 100644 index 0000000..2a9e4ec --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/index.browser.d.ts @@ -0,0 +1,2 @@ +export { fromHttp } from "./fromHttp/fromHttp.browser"; +export type { FromHttpOptions, HttpProviderCredentials } from "./fromHttp/fromHttpTypes"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/index.d.ts new file mode 100644 index 0000000..b1e9985 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export { fromHttp } from "./fromHttp/fromHttp"; +export type { FromHttpOptions, HttpProviderCredentials } from "./fromHttp/fromHttpTypes"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/checkUrl.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/checkUrl.d.ts new file mode 100644 index 0000000..9f518b0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/checkUrl.d.ts @@ -0,0 +1,2 @@ +import { Logger } from "@smithy/types"; +export declare const checkUrl: (url: URL, logger?: Logger) => void; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.browser.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.browser.d.ts new file mode 100644 index 0000000..00f1506 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.browser.d.ts @@ -0,0 +1,5 @@ +import { AwsCredentialIdentityProvider } from "@smithy/types"; +import { FromHttpOptions } from "./fromHttpTypes"; +export declare const fromHttp: ( + options?: FromHttpOptions +) => AwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.d.ts new file mode 100644 index 0000000..00f1506 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttp.d.ts @@ -0,0 +1,5 @@ +import { AwsCredentialIdentityProvider } from "@smithy/types"; +import { FromHttpOptions } from "./fromHttpTypes"; +export declare const fromHttp: ( + options?: FromHttpOptions +) => AwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttpTypes.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttpTypes.d.ts new file mode 100644 index 0000000..767b6b0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/fromHttpTypes.d.ts @@ -0,0 +1,18 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +export interface FromHttpOptions extends CredentialProviderOptions { + awsContainerCredentialsFullUri?: string; + awsContainerCredentialsRelativeUri?: string; + awsContainerAuthorizationTokenFile?: string; + awsContainerAuthorizationToken?: string; + credentialsFullUri?: string; + authorizationToken?: string; + maxRetries?: number; + timeout?: number; +} +export type HttpProviderCredentials = { + AccessKeyId: string; + SecretAccessKey: string; + Token: string; + AccountId?: string; + Expiration: string; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/requestHelpers.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/requestHelpers.d.ts new file mode 100644 index 0000000..68a3285 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/requestHelpers.d.ts @@ -0,0 +1,8 @@ +import { AwsCredentialIdentity } from "@aws-sdk/types"; +import { HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse, Logger } from "@smithy/types"; +export declare function createGetRequest(url: URL): HttpRequest; +export declare function getCredentials( + response: HttpResponse, + logger?: Logger +): Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/retry-wrapper.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/retry-wrapper.d.ts new file mode 100644 index 0000000..f992038 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/fromHttp/retry-wrapper.d.ts @@ -0,0 +1,8 @@ +export interface RetryableProvider { + (): Promise; +} +export declare const retryWrapper: ( + toRetry: RetryableProvider, + maxRetries: number, + delayMs: number +) => RetryableProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.browser.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.browser.d.ts new file mode 100644 index 0000000..40696b9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.browser.d.ts @@ -0,0 +1,5 @@ +export { fromHttp } from "./fromHttp/fromHttp.browser"; +export { + FromHttpOptions, + HttpProviderCredentials, +} from "./fromHttp/fromHttpTypes"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..560256f --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +export { fromHttp } from "./fromHttp/fromHttp"; +export { + FromHttpOptions, + HttpProviderCredentials, +} from "./fromHttp/fromHttpTypes"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-http/package.json b/bff/node_modules/@aws-sdk/credential-provider-http/package.json new file mode 100644 index 0000000..eaa126c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-http/package.json @@ -0,0 +1,70 @@ +{ + "name": "@aws-sdk/credential-provider-http", + "version": "3.972.26", + "description": "AWS credential provider for containers and HTTP sources", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "browser": "./dist-es/index.browser.js", + "react-native": "./dist-es/index.browser.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-http", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.21", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-http", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-http" + } +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/LICENSE b/bff/node_modules/@aws-sdk/credential-provider-ini/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/README.md b/bff/node_modules/@aws-sdk/credential-provider-ini/README.md new file mode 100644 index 0000000..fb7bf85 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/README.md @@ -0,0 +1,20 @@ +# @aws-sdk/credential-provider-ini + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-ini/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-ini) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-ini.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-ini) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- + +Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js new file mode 100644 index 0000000..6fe2f31 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js @@ -0,0 +1,224 @@ +'use strict'; + +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var propertyProvider = require('@smithy/property-provider'); +var client = require('@aws-sdk/core/client'); +var credentialProviderLogin = require('@aws-sdk/credential-provider-login'); + +const resolveCredentialSource = (credentialSource, profileName, logger) => { + const sourceProvidersMap = { + EcsContainer: async (options) => { + const { fromHttp } = await import('@aws-sdk/credential-provider-http'); + const { fromContainerMetadata } = await import('@smithy/credential-provider-imds'); + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"); + return async () => propertyProvider.chain(fromHttp(options ?? {}), fromContainerMetadata(options))().then(setNamedProvider); + }, + Ec2InstanceMetadata: async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata"); + const { fromInstanceMetadata } = await import('@smithy/credential-provider-imds'); + return async () => fromInstanceMetadata(options)().then(setNamedProvider); + }, + Environment: async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment"); + const { fromEnv } = await import('@aws-sdk/credential-provider-env'); + return async () => fromEnv(options)().then(setNamedProvider); + }, + }; + if (credentialSource in sourceProvidersMap) { + return sourceProvidersMap[credentialSource]; + } + else { + throw new propertyProvider.CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, ` + + `expected EcsContainer or Ec2InstanceMetadata or Environment.`, { logger }); + } +}; +const setNamedProvider = (creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_NAMED_PROVIDER", "p"); + +const isAssumeRoleProfile = (arg, { profile = "default", logger } = {}) => { + return (Boolean(arg) && + typeof arg === "object" && + typeof arg.role_arn === "string" && + ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1 && + ["undefined", "string"].indexOf(typeof arg.external_id) > -1 && + ["undefined", "string"].indexOf(typeof arg.mfa_serial) > -1 && + (isAssumeRoleWithSourceProfile(arg, { profile, logger }) || isCredentialSourceProfile(arg, { profile, logger }))); +}; +const isAssumeRoleWithSourceProfile = (arg, { profile, logger }) => { + const withSourceProfile = typeof arg.source_profile === "string" && typeof arg.credential_source === "undefined"; + if (withSourceProfile) { + logger?.debug?.(` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`); + } + return withSourceProfile; +}; +const isCredentialSourceProfile = (arg, { profile, logger }) => { + const withProviderProfile = typeof arg.credential_source === "string" && typeof arg.source_profile === "undefined"; + if (withProviderProfile) { + logger?.debug?.(` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`); + } + return withProviderProfile; +}; +const resolveAssumeRoleCredentials = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, resolveProfileData) => { + options.logger?.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)"); + const profileData = profiles[profileName]; + const { source_profile, region } = profileData; + if (!options.roleAssumer) { + const { getDefaultRoleAssumer } = await import('@aws-sdk/nested-clients/sts'); + options.roleAssumer = getDefaultRoleAssumer({ + ...options.clientConfig, + credentialProviderLogger: options.logger, + parentClientConfig: { + ...callerClientConfig, + ...options?.parentClientConfig, + region: region ?? options?.parentClientConfig?.region ?? callerClientConfig?.region, + }, + }, options.clientPlugins); + } + if (source_profile && source_profile in visitedProfiles) { + throw new propertyProvider.CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile` + + ` ${sharedIniFileLoader.getProfileName(options)}. Profiles visited: ` + + Object.keys(visitedProfiles).join(", "), { logger: options.logger }); + } + options.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${source_profile ? `source_profile=[${source_profile}]` : `profile=[${profileName}]`}`); + const sourceCredsProvider = source_profile + ? resolveProfileData(source_profile, profiles, options, callerClientConfig, { + ...visitedProfiles, + [source_profile]: true, + }, isCredentialSourceWithoutRoleArn(profiles[source_profile] ?? {})) + : (await resolveCredentialSource(profileData.credential_source, profileName, options.logger)(options))(); + if (isCredentialSourceWithoutRoleArn(profileData)) { + return sourceCredsProvider.then((creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } + else { + const params = { + RoleArn: profileData.role_arn, + RoleSessionName: profileData.role_session_name || `aws-sdk-js-${Date.now()}`, + ExternalId: profileData.external_id, + DurationSeconds: parseInt(profileData.duration_seconds || "3600", 10), + }; + const { mfa_serial } = profileData; + if (mfa_serial) { + if (!options.mfaCodeProvider) { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`, { logger: options.logger, tryNextLink: false }); + } + params.SerialNumber = mfa_serial; + params.TokenCode = await options.mfaCodeProvider(mfa_serial); + } + const sourceCreds = await sourceCredsProvider; + return options.roleAssumer(sourceCreds, params).then((creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } +}; +const isCredentialSourceWithoutRoleArn = (section) => { + return !section.role_arn && !!section.credential_source; +}; + +const isLoginProfile = (data) => { + return Boolean(data && data.login_session); +}; +const resolveLoginCredentials = async (profileName, options, callerClientConfig) => { + const credentials = await credentialProviderLogin.fromLoginCredentials({ + ...options, + profile: profileName, + })({ callerClientConfig }); + return client.setCredentialFeature(credentials, "CREDENTIALS_PROFILE_LOGIN", "AC"); +}; + +const isProcessProfile = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.credential_process === "string"; +const resolveProcessCredentials = async (options, profile) => import('@aws-sdk/credential-provider-process').then(({ fromProcess }) => fromProcess({ + ...options, + profile, +})().then((creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_PROCESS", "v"))); + +const resolveSsoCredentials = async (profile, profileData, options = {}, callerClientConfig) => { + const { fromSSO } = await import('@aws-sdk/credential-provider-sso'); + return fromSSO({ + profile, + logger: options.logger, + parentClientConfig: options.parentClientConfig, + clientConfig: options.clientConfig, + })({ + callerClientConfig, + }).then((creds) => { + if (profileData.sso_session) { + return client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_SSO", "r"); + } + else { + return client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_SSO_LEGACY", "t"); + } + }); +}; +const isSsoProfile = (arg) => arg && + (typeof arg.sso_start_url === "string" || + typeof arg.sso_account_id === "string" || + typeof arg.sso_session === "string" || + typeof arg.sso_region === "string" || + typeof arg.sso_role_name === "string"); + +const isStaticCredsProfile = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.aws_access_key_id === "string" && + typeof arg.aws_secret_access_key === "string" && + ["undefined", "string"].indexOf(typeof arg.aws_session_token) > -1 && + ["undefined", "string"].indexOf(typeof arg.aws_account_id) > -1; +const resolveStaticCredentials = async (profile, options) => { + options?.logger?.debug("@aws-sdk/credential-provider-ini - resolveStaticCredentials"); + const credentials = { + accessKeyId: profile.aws_access_key_id, + secretAccessKey: profile.aws_secret_access_key, + sessionToken: profile.aws_session_token, + ...(profile.aws_credential_scope && { credentialScope: profile.aws_credential_scope }), + ...(profile.aws_account_id && { accountId: profile.aws_account_id }), + }; + return client.setCredentialFeature(credentials, "CREDENTIALS_PROFILE", "n"); +}; + +const isWebIdentityProfile = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.web_identity_token_file === "string" && + typeof arg.role_arn === "string" && + ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1; +const resolveWebIdentityCredentials = async (profile, options, callerClientConfig) => import('@aws-sdk/credential-provider-web-identity').then(({ fromTokenFile }) => fromTokenFile({ + webIdentityTokenFile: profile.web_identity_token_file, + roleArn: profile.role_arn, + roleSessionName: profile.role_session_name, + roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity, + logger: options.logger, + parentClientConfig: options.parentClientConfig, +})({ + callerClientConfig, +}).then((creds) => client.setCredentialFeature(creds, "CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN", "q"))); + +const resolveProfileData = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, isAssumeRoleRecursiveCall = false) => { + const data = profiles[profileName]; + if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isAssumeRoleRecursiveCall || isAssumeRoleProfile(data, { profile: profileName, logger: options.logger })) { + return resolveAssumeRoleCredentials(profileName, profiles, options, callerClientConfig, visitedProfiles, resolveProfileData); + } + if (isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isWebIdentityProfile(data)) { + return resolveWebIdentityCredentials(data, options, callerClientConfig); + } + if (isProcessProfile(data)) { + return resolveProcessCredentials(options, profileName); + } + if (isSsoProfile(data)) { + return await resolveSsoCredentials(profileName, data, options, callerClientConfig); + } + if (isLoginProfile(data)) { + return resolveLoginCredentials(profileName, options, callerClientConfig); + } + throw new propertyProvider.CredentialsProviderError(`Could not resolve credentials using profile: [${profileName}] in configuration/credentials file(s).`, { logger: options.logger }); +}; + +const fromIni = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-ini - fromIni"); + const profiles = await sharedIniFileLoader.parseKnownFiles(init); + return resolveProfileData(sharedIniFileLoader.getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }), profiles, init, callerClientConfig); +}; + +exports.fromIni = fromIni; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/fromIni.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/fromIni.js new file mode 100644 index 0000000..b79b4fb --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/fromIni.js @@ -0,0 +1,9 @@ +import { getProfileName, parseKnownFiles } from "@smithy/shared-ini-file-loader"; +import { resolveProfileData } from "./resolveProfileData"; +export const fromIni = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-ini - fromIni"); + const profiles = await parseKnownFiles(init); + return resolveProfileData(getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }), profiles, init, callerClientConfig); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/index.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/index.js new file mode 100644 index 0000000..b019131 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/index.js @@ -0,0 +1 @@ +export * from "./fromIni"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js new file mode 100644 index 0000000..6258240 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js @@ -0,0 +1,80 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName } from "@smithy/shared-ini-file-loader"; +import { resolveCredentialSource } from "./resolveCredentialSource"; +export const isAssumeRoleProfile = (arg, { profile = "default", logger } = {}) => { + return (Boolean(arg) && + typeof arg === "object" && + typeof arg.role_arn === "string" && + ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1 && + ["undefined", "string"].indexOf(typeof arg.external_id) > -1 && + ["undefined", "string"].indexOf(typeof arg.mfa_serial) > -1 && + (isAssumeRoleWithSourceProfile(arg, { profile, logger }) || isCredentialSourceProfile(arg, { profile, logger }))); +}; +const isAssumeRoleWithSourceProfile = (arg, { profile, logger }) => { + const withSourceProfile = typeof arg.source_profile === "string" && typeof arg.credential_source === "undefined"; + if (withSourceProfile) { + logger?.debug?.(` ${profile} isAssumeRoleWithSourceProfile source_profile=${arg.source_profile}`); + } + return withSourceProfile; +}; +const isCredentialSourceProfile = (arg, { profile, logger }) => { + const withProviderProfile = typeof arg.credential_source === "string" && typeof arg.source_profile === "undefined"; + if (withProviderProfile) { + logger?.debug?.(` ${profile} isCredentialSourceProfile credential_source=${arg.credential_source}`); + } + return withProviderProfile; +}; +export const resolveAssumeRoleCredentials = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, resolveProfileData) => { + options.logger?.debug("@aws-sdk/credential-provider-ini - resolveAssumeRoleCredentials (STS)"); + const profileData = profiles[profileName]; + const { source_profile, region } = profileData; + if (!options.roleAssumer) { + const { getDefaultRoleAssumer } = await import("@aws-sdk/nested-clients/sts"); + options.roleAssumer = getDefaultRoleAssumer({ + ...options.clientConfig, + credentialProviderLogger: options.logger, + parentClientConfig: { + ...callerClientConfig, + ...options?.parentClientConfig, + region: region ?? options?.parentClientConfig?.region ?? callerClientConfig?.region, + }, + }, options.clientPlugins); + } + if (source_profile && source_profile in visitedProfiles) { + throw new CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile` + + ` ${getProfileName(options)}. Profiles visited: ` + + Object.keys(visitedProfiles).join(", "), { logger: options.logger }); + } + options.logger?.debug(`@aws-sdk/credential-provider-ini - finding credential resolver using ${source_profile ? `source_profile=[${source_profile}]` : `profile=[${profileName}]`}`); + const sourceCredsProvider = source_profile + ? resolveProfileData(source_profile, profiles, options, callerClientConfig, { + ...visitedProfiles, + [source_profile]: true, + }, isCredentialSourceWithoutRoleArn(profiles[source_profile] ?? {})) + : (await resolveCredentialSource(profileData.credential_source, profileName, options.logger)(options))(); + if (isCredentialSourceWithoutRoleArn(profileData)) { + return sourceCredsProvider.then((creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } + else { + const params = { + RoleArn: profileData.role_arn, + RoleSessionName: profileData.role_session_name || `aws-sdk-js-${Date.now()}`, + ExternalId: profileData.external_id, + DurationSeconds: parseInt(profileData.duration_seconds || "3600", 10), + }; + const { mfa_serial } = profileData; + if (mfa_serial) { + if (!options.mfaCodeProvider) { + throw new CredentialsProviderError(`Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`, { logger: options.logger, tryNextLink: false }); + } + params.SerialNumber = mfa_serial; + params.TokenCode = await options.mfaCodeProvider(mfa_serial); + } + const sourceCreds = await sourceCredsProvider; + return options.roleAssumer(sourceCreds, params).then((creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_SOURCE_PROFILE", "o")); + } +}; +const isCredentialSourceWithoutRoleArn = (section) => { + return !section.role_arn && !!section.credential_source; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js new file mode 100644 index 0000000..b004933 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js @@ -0,0 +1,30 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { chain, CredentialsProviderError } from "@smithy/property-provider"; +export const resolveCredentialSource = (credentialSource, profileName, logger) => { + const sourceProvidersMap = { + EcsContainer: async (options) => { + const { fromHttp } = await import("@aws-sdk/credential-provider-http"); + const { fromContainerMetadata } = await import("@smithy/credential-provider-imds"); + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is EcsContainer"); + return async () => chain(fromHttp(options ?? {}), fromContainerMetadata(options))().then(setNamedProvider); + }, + Ec2InstanceMetadata: async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Ec2InstanceMetadata"); + const { fromInstanceMetadata } = await import("@smithy/credential-provider-imds"); + return async () => fromInstanceMetadata(options)().then(setNamedProvider); + }, + Environment: async (options) => { + logger?.debug("@aws-sdk/credential-provider-ini - credential_source is Environment"); + const { fromEnv } = await import("@aws-sdk/credential-provider-env"); + return async () => fromEnv(options)().then(setNamedProvider); + }, + }; + if (credentialSource in sourceProvidersMap) { + return sourceProvidersMap[credentialSource]; + } + else { + throw new CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, ` + + `expected EcsContainer or Ec2InstanceMetadata or Environment.`, { logger }); + } +}; +const setNamedProvider = (creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_NAMED_PROVIDER", "p"); diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveLoginCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveLoginCredentials.js new file mode 100644 index 0000000..845b6a1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveLoginCredentials.js @@ -0,0 +1,12 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { fromLoginCredentials } from "@aws-sdk/credential-provider-login"; +export const isLoginProfile = (data) => { + return Boolean(data && data.login_session); +}; +export const resolveLoginCredentials = async (profileName, options, callerClientConfig) => { + const credentials = await fromLoginCredentials({ + ...options, + profile: profileName, + })({ callerClientConfig }); + return setCredentialFeature(credentials, "CREDENTIALS_PROFILE_LOGIN", "AC"); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js new file mode 100644 index 0000000..5a9f975 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js @@ -0,0 +1,6 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const isProcessProfile = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.credential_process === "string"; +export const resolveProcessCredentials = async (options, profile) => import("@aws-sdk/credential-provider-process").then(({ fromProcess }) => fromProcess({ + ...options, + profile, +})().then((creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_PROCESS", "v"))); diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js new file mode 100644 index 0000000..c0d1547 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js @@ -0,0 +1,32 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { isAssumeRoleProfile, resolveAssumeRoleCredentials } from "./resolveAssumeRoleCredentials"; +import { isLoginProfile, resolveLoginCredentials } from "./resolveLoginCredentials"; +import { isProcessProfile, resolveProcessCredentials } from "./resolveProcessCredentials"; +import { isSsoProfile, resolveSsoCredentials } from "./resolveSsoCredentials"; +import { isStaticCredsProfile, resolveStaticCredentials } from "./resolveStaticCredentials"; +import { isWebIdentityProfile, resolveWebIdentityCredentials } from "./resolveWebIdentityCredentials"; +export const resolveProfileData = async (profileName, profiles, options, callerClientConfig, visitedProfiles = {}, isAssumeRoleRecursiveCall = false) => { + const data = profiles[profileName]; + if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isAssumeRoleRecursiveCall || isAssumeRoleProfile(data, { profile: profileName, logger: options.logger })) { + return resolveAssumeRoleCredentials(profileName, profiles, options, callerClientConfig, visitedProfiles, resolveProfileData); + } + if (isStaticCredsProfile(data)) { + return resolveStaticCredentials(data, options); + } + if (isWebIdentityProfile(data)) { + return resolveWebIdentityCredentials(data, options, callerClientConfig); + } + if (isProcessProfile(data)) { + return resolveProcessCredentials(options, profileName); + } + if (isSsoProfile(data)) { + return await resolveSsoCredentials(profileName, data, options, callerClientConfig); + } + if (isLoginProfile(data)) { + return resolveLoginCredentials(profileName, options, callerClientConfig); + } + throw new CredentialsProviderError(`Could not resolve credentials using profile: [${profileName}] in configuration/credentials file(s).`, { logger: options.logger }); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js new file mode 100644 index 0000000..3e81627 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js @@ -0,0 +1,25 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const resolveSsoCredentials = async (profile, profileData, options = {}, callerClientConfig) => { + const { fromSSO } = await import("@aws-sdk/credential-provider-sso"); + return fromSSO({ + profile, + logger: options.logger, + parentClientConfig: options.parentClientConfig, + clientConfig: options.clientConfig, + })({ + callerClientConfig, + }).then((creds) => { + if (profileData.sso_session) { + return setCredentialFeature(creds, "CREDENTIALS_PROFILE_SSO", "r"); + } + else { + return setCredentialFeature(creds, "CREDENTIALS_PROFILE_SSO_LEGACY", "t"); + } + }); +}; +export const isSsoProfile = (arg) => arg && + (typeof arg.sso_start_url === "string" || + typeof arg.sso_account_id === "string" || + typeof arg.sso_session === "string" || + typeof arg.sso_region === "string" || + typeof arg.sso_role_name === "string"); diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js new file mode 100644 index 0000000..c04435f --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js @@ -0,0 +1,18 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const isStaticCredsProfile = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.aws_access_key_id === "string" && + typeof arg.aws_secret_access_key === "string" && + ["undefined", "string"].indexOf(typeof arg.aws_session_token) > -1 && + ["undefined", "string"].indexOf(typeof arg.aws_account_id) > -1; +export const resolveStaticCredentials = async (profile, options) => { + options?.logger?.debug("@aws-sdk/credential-provider-ini - resolveStaticCredentials"); + const credentials = { + accessKeyId: profile.aws_access_key_id, + secretAccessKey: profile.aws_secret_access_key, + sessionToken: profile.aws_session_token, + ...(profile.aws_credential_scope && { credentialScope: profile.aws_credential_scope }), + ...(profile.aws_account_id && { accountId: profile.aws_account_id }), + }; + return setCredentialFeature(credentials, "CREDENTIALS_PROFILE", "n"); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js new file mode 100644 index 0000000..102e2fc --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js @@ -0,0 +1,16 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const isWebIdentityProfile = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.web_identity_token_file === "string" && + typeof arg.role_arn === "string" && + ["undefined", "string"].indexOf(typeof arg.role_session_name) > -1; +export const resolveWebIdentityCredentials = async (profile, options, callerClientConfig) => import("@aws-sdk/credential-provider-web-identity").then(({ fromTokenFile }) => fromTokenFile({ + webIdentityTokenFile: profile.web_identity_token_file, + roleArn: profile.role_arn, + roleSessionName: profile.role_session_name, + roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity, + logger: options.logger, + parentClientConfig: options.parentClientConfig, +})({ + callerClientConfig, +}).then((creds) => setCredentialFeature(creds, "CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN", "q"))); diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/fromIni.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/fromIni.d.ts new file mode 100644 index 0000000..90e795f --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/fromIni.d.ts @@ -0,0 +1,55 @@ +import type { FromLoginCredentialsInit } from "@aws-sdk/credential-provider-login"; +import type { AssumeRoleWithWebIdentityParams } from "@aws-sdk/credential-provider-web-identity"; +import type { CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import type { AwsCredentialIdentity, Pluggable } from "@smithy/types"; +import type { AssumeRoleParams } from "./resolveAssumeRoleCredentials"; +/** + * @public + */ +export interface FromIniInit extends SourceProfileInit, CredentialProviderOptions, FromLoginCredentialsInit { + /** + * A function that returns a promise fulfilled with an MFA token code for + * the provided MFA Serial code. If a profile requires an MFA code and + * `mfaCodeProvider` is not a valid function, the credential provider + * promise will be rejected. + * + * @param mfaSerial The serial code of the MFA device specified. + */ + mfaCodeProvider?: (mfaSerial: string) => Promise; + /** + * A function that assumes a role and returns a promise fulfilled with + * credentials for the assumed role. + * + * @param sourceCreds The credentials with which to assume a role. + * @param params + */ + roleAssumer?: (sourceCreds: AwsCredentialIdentity, params: AssumeRoleParams) => Promise; + /** + * A function that assumes a role with web identity and returns a promise fulfilled with + * credentials for the assumed role. + * + * @param sourceCreds The credentials with which to assume a role. + * @param params + */ + roleAssumerWithWebIdentity?: (params: AssumeRoleWithWebIdentityParams) => Promise; + /** + * AWS SDK Client configuration to be used for creating inner client + * for auth operations. Inner clients include STS, SSO, and Signin clients. + * @internal + */ + clientConfig?: any; + clientPlugins?: Pluggable[]; + /** + * When true, always reload credentials from the file system instead of using cached values. + * This is useful when you need to detect changes to the credentials file. + */ + ignoreCache?: boolean; +} +/** + * @internal + * + * Creates a credential provider that will read from ini files and supports + * role assumption and multi-factor authentication. + */ +export declare const fromIni: (init?: FromIniInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/index.d.ts new file mode 100644 index 0000000..75680c0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./fromIni"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveAssumeRoleCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveAssumeRoleCredentials.d.ts new file mode 100644 index 0000000..1b73de6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveAssumeRoleCredentials.d.ts @@ -0,0 +1,48 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { Logger, ParsedIniData } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +import type { ResolveProfileData } from "./resolveProfileData"; +/** + * @internal + * + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sts/command/AssumeRoleCommand/ + */ +export interface AssumeRoleParams { + /** + * The identifier of the role to be assumed. + */ + RoleArn: string; + /** + * A name for the assumed role session. + */ + RoleSessionName: string; + /** + * A unique identifier that is used by third parties when assuming roles in + * their customers' accounts. + */ + ExternalId?: string; + /** + * The identification number of the MFA device that is associated with the + * user who is making the `AssumeRole` call. + */ + SerialNumber?: string; + /** + * The value provided by the MFA device. + */ + TokenCode?: string; + /** + * The duration, in seconds, of the role session. + */ + DurationSeconds?: number; +} +/** + * @internal + */ +export declare const isAssumeRoleProfile: (arg: any, { profile, logger }?: { + profile?: string; + logger?: Logger; +}) => boolean; +/** + * @internal + */ +export declare const resolveAssumeRoleCredentials: (profileName: string, profiles: ParsedIniData, options: FromIniInit, callerClientConfig: AwsIdentityProperties["callerClientConfig"] | undefined, visitedProfiles: Record | undefined, resolveProfileData: ResolveProfileData) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveCredentialSource.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveCredentialSource.d.ts new file mode 100644 index 0000000..0746bd2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveCredentialSource.d.ts @@ -0,0 +1,12 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { AwsCredentialIdentityProvider, Logger } from "@smithy/types"; +/** + * @internal + * + * Resolve the `credential_source` entry from the profile, and return the + * credential providers respectively. No memoization is needed for the + * credential source providers because memoization should be added outside the + * fromIni() provider. The source credential needs to be refreshed every time + * fromIni() is called. + */ +export declare const resolveCredentialSource: (credentialSource: string, profileName: string, logger?: Logger) => ((options?: CredentialProviderOptions) => Promise); diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveLoginCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveLoginCredentials.d.ts new file mode 100644 index 0000000..ab4d276 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveLoginCredentials.d.ts @@ -0,0 +1,11 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export declare const isLoginProfile: (data: ParsedIniData[string]) => boolean; +/** + * @internal + */ +export declare const resolveLoginCredentials: (profileName: string, options: FromIniInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProcessCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProcessCredentials.d.ts new file mode 100644 index 0000000..1aa4c1c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProcessCredentials.d.ts @@ -0,0 +1,16 @@ +import type { Credentials, Profile } from "@aws-sdk/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export interface ProcessProfile extends Profile { + credential_process: string; +} +/** + * @internal + */ +export declare const isProcessProfile: (arg: any) => arg is ProcessProfile; +/** + * @internal + */ +export declare const resolveProcessCredentials: (options: FromIniInit, profile: string) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProfileData.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProfileData.d.ts new file mode 100644 index 0000000..4b0c730 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveProfileData.d.ts @@ -0,0 +1,19 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export type ResolveProfileData = typeof resolveProfileData; +/** + * @internal + */ +export declare const resolveProfileData: (profileName: string, profiles: ParsedIniData, options: FromIniInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"], visitedProfiles?: Record, +/** + * This override comes from recursive calls only. + * It is used to flag a recursive profile section + * that does not have a role_arn, e.g. a credential_source + * with no role_arn, as part of a larger recursive assume-role + * call stack, and to re-enter the assume-role resolver function. + */ +isAssumeRoleRecursiveCall?: boolean) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveSsoCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveSsoCredentials.d.ts new file mode 100644 index 0000000..51c9148 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveSsoCredentials.d.ts @@ -0,0 +1,13 @@ +import type { SsoProfile } from "@aws-sdk/credential-provider-sso"; +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { IniSection, Profile } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export declare const resolveSsoCredentials: (profile: string, profileData: IniSection, options?: FromIniInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; +/** + * @internal + * duplicated from \@aws-sdk/credential-provider-sso to defer import. + */ +export declare const isSsoProfile: (arg: Profile) => arg is Partial; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveStaticCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveStaticCredentials.d.ts new file mode 100644 index 0000000..d1464b9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveStaticCredentials.d.ts @@ -0,0 +1,20 @@ +import type { AwsCredentialIdentity, Profile } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export interface StaticCredsProfile extends Profile { + aws_access_key_id: string; + aws_secret_access_key: string; + aws_session_token?: string; + aws_credential_scope?: string; + aws_account_id?: string; +} +/** + * @internal + */ +export declare const isStaticCredsProfile: (arg: any) => arg is StaticCredsProfile; +/** + * @internal + */ +export declare const resolveStaticCredentials: (profile: StaticCredsProfile, options?: FromIniInit) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveWebIdentityCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveWebIdentityCredentials.d.ts new file mode 100644 index 0000000..c8c1a35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveWebIdentityCredentials.d.ts @@ -0,0 +1,19 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, Profile } from "@smithy/types"; +import type { FromIniInit } from "./fromIni"; +/** + * @internal + */ +export interface WebIdentityProfile extends Profile { + web_identity_token_file: string; + role_arn: string; + role_session_name?: string; +} +/** + * @internal + */ +export declare const isWebIdentityProfile: (arg: any) => arg is WebIdentityProfile; +/** + * @internal + */ +export declare const resolveWebIdentityCredentials: (profile: WebIdentityProfile, options: FromIniInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/fromIni.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/fromIni.d.ts new file mode 100644 index 0000000..a9703a1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/fromIni.d.ts @@ -0,0 +1,28 @@ +import { FromLoginCredentialsInit } from "@aws-sdk/credential-provider-login"; +import { AssumeRoleWithWebIdentityParams } from "@aws-sdk/credential-provider-web-identity"; +import { + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import { AwsCredentialIdentity, Pluggable } from "@smithy/types"; +import { AssumeRoleParams } from "./resolveAssumeRoleCredentials"; +export interface FromIniInit + extends SourceProfileInit, + CredentialProviderOptions, + FromLoginCredentialsInit { + mfaCodeProvider?: (mfaSerial: string) => Promise; + roleAssumer?: ( + sourceCreds: AwsCredentialIdentity, + params: AssumeRoleParams + ) => Promise; + roleAssumerWithWebIdentity?: ( + params: AssumeRoleWithWebIdentityParams + ) => Promise; + clientConfig?: any; + clientPlugins?: Pluggable[]; + ignoreCache?: boolean; +} +export declare const fromIni: ( + init?: FromIniInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..b019131 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./fromIni"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveAssumeRoleCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveAssumeRoleCredentials.d.ts new file mode 100644 index 0000000..6e79cdd --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveAssumeRoleCredentials.d.ts @@ -0,0 +1,30 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { Logger, ParsedIniData } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +import { ResolveProfileData } from "./resolveProfileData"; +export interface AssumeRoleParams { + RoleArn: string; + RoleSessionName: string; + ExternalId?: string; + SerialNumber?: string; + TokenCode?: string; + DurationSeconds?: number; +} +export declare const isAssumeRoleProfile: ( + arg: any, + { + profile, + logger, + }?: { + profile?: string; + logger?: Logger; + } +) => boolean; +export declare const resolveAssumeRoleCredentials: ( + profileName: string, + profiles: ParsedIniData, + options: FromIniInit, + callerClientConfig: AwsIdentityProperties["callerClientConfig"] | undefined, + visitedProfiles: Record | undefined, + resolveProfileData: ResolveProfileData +) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveCredentialSource.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveCredentialSource.d.ts new file mode 100644 index 0000000..21a7f9f --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveCredentialSource.d.ts @@ -0,0 +1,9 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { AwsCredentialIdentityProvider, Logger } from "@smithy/types"; +export declare const resolveCredentialSource: ( + credentialSource: string, + profileName: string, + logger?: Logger +) => ( + options?: CredentialProviderOptions +) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveLoginCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveLoginCredentials.d.ts new file mode 100644 index 0000000..9f67a6c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveLoginCredentials.d.ts @@ -0,0 +1,9 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export declare const isLoginProfile: (data: ParsedIniData[string]) => boolean; +export declare const resolveLoginCredentials: ( + profileName: string, + options: FromIniInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProcessCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProcessCredentials.d.ts new file mode 100644 index 0000000..dbd5583 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProcessCredentials.d.ts @@ -0,0 +1,10 @@ +import { Credentials, Profile } from "@aws-sdk/types"; +import { FromIniInit } from "./fromIni"; +export interface ProcessProfile extends Profile { + credential_process: string; +} +export declare const isProcessProfile: (arg: any) => arg is ProcessProfile; +export declare const resolveProcessCredentials: ( + options: FromIniInit, + profile: string +) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProfileData.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProfileData.d.ts new file mode 100644 index 0000000..b439b9f --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveProfileData.d.ts @@ -0,0 +1,12 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export type ResolveProfileData = typeof resolveProfileData; +export declare const resolveProfileData: ( + profileName: string, + profiles: ParsedIniData, + options: FromIniInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"], + visitedProfiles?: Record, + isAssumeRoleRecursiveCall?: boolean +) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveSsoCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveSsoCredentials.d.ts new file mode 100644 index 0000000..749c5fc --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveSsoCredentials.d.ts @@ -0,0 +1,11 @@ +import { SsoProfile } from "@aws-sdk/credential-provider-sso"; +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { IniSection, Profile } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export declare const resolveSsoCredentials: ( + profile: string, + profileData: IniSection, + options?: FromIniInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise; +export declare const isSsoProfile: (arg: Profile) => arg is Partial; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveStaticCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveStaticCredentials.d.ts new file mode 100644 index 0000000..5f5daa9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveStaticCredentials.d.ts @@ -0,0 +1,16 @@ +import { AwsCredentialIdentity, Profile } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export interface StaticCredsProfile extends Profile { + aws_access_key_id: string; + aws_secret_access_key: string; + aws_session_token?: string; + aws_credential_scope?: string; + aws_account_id?: string; +} +export declare const isStaticCredsProfile: ( + arg: any +) => arg is StaticCredsProfile; +export declare const resolveStaticCredentials: ( + profile: StaticCredsProfile, + options?: FromIniInit +) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveWebIdentityCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveWebIdentityCredentials.d.ts new file mode 100644 index 0000000..02d11b0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveWebIdentityCredentials.d.ts @@ -0,0 +1,16 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { AwsCredentialIdentity, Profile } from "@smithy/types"; +import { FromIniInit } from "./fromIni"; +export interface WebIdentityProfile extends Profile { + web_identity_token_file: string; + role_arn: string; + role_session_name?: string; +} +export declare const isWebIdentityProfile: ( + arg: any +) => arg is WebIdentityProfile; +export declare const resolveWebIdentityCredentials: ( + profile: WebIdentityProfile, + options: FromIniInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-ini/package.json b/bff/node_modules/@aws-sdk/credential-provider-ini/package.json new file mode 100644 index 0000000..b013107 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-ini/package.json @@ -0,0 +1,74 @@ +{ + "name": "@aws-sdk/credential-provider-ini", + "version": "3.972.28", + "description": "AWS credential provider that sources credentials from ~/.aws/credentials and ~/.aws/config", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-ini", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-env": "^3.972.24", + "@aws-sdk/credential-provider-http": "^3.972.26", + "@aws-sdk/credential-provider-login": "^3.972.28", + "@aws-sdk/credential-provider-process": "^3.972.24", + "@aws-sdk/credential-provider-sso": "^3.972.28", + "@aws-sdk/credential-provider-web-identity": "^3.972.28", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-ini", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-ini" + } +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/README.md b/bff/node_modules/@aws-sdk/credential-provider-login/README.md new file mode 100644 index 0000000..4f51261 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/README.md @@ -0,0 +1,16 @@ +# @aws-sdk/credential-provider-login + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- + +Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) instead. diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js b/bff/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js new file mode 100644 index 0000000..487bc23 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js @@ -0,0 +1,286 @@ +'use strict'; + +var client = require('@aws-sdk/core/client'); +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var protocolHttp = require('@smithy/protocol-http'); +var node_crypto = require('node:crypto'); +var node_fs = require('node:fs'); +var node_os = require('node:os'); +var node_path = require('node:path'); + +class LoginCredentialsFetcher { + profileData; + init; + callerClientConfig; + static REFRESH_THRESHOLD = 5 * 60 * 1000; + constructor(profileData, init, callerClientConfig) { + this.profileData = profileData; + this.init = init; + this.callerClientConfig = callerClientConfig; + } + async loadCredentials() { + const token = await this.loadToken(); + if (!token) { + throw new propertyProvider.CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`, { tryNextLink: false, logger: this.logger }); + } + const accessToken = token.accessToken; + const now = Date.now(); + const expiryTime = new Date(accessToken.expiresAt).getTime(); + const timeUntilExpiry = expiryTime - now; + if (timeUntilExpiry <= LoginCredentialsFetcher.REFRESH_THRESHOLD) { + return this.refresh(token); + } + return { + accessKeyId: accessToken.accessKeyId, + secretAccessKey: accessToken.secretAccessKey, + sessionToken: accessToken.sessionToken, + accountId: accessToken.accountId, + expiration: new Date(accessToken.expiresAt), + }; + } + get logger() { + return this.init?.logger; + } + get loginSession() { + return this.profileData.login_session; + } + async refresh(token) { + const { SigninClient, CreateOAuth2TokenCommand } = await import('@aws-sdk/nested-clients/signin'); + const { logger, userAgentAppId } = this.callerClientConfig ?? {}; + const isH2 = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2"; + }; + const requestHandler = isH2(this.callerClientConfig?.requestHandler) + ? undefined + : this.callerClientConfig?.requestHandler; + const region = this.profileData.region ?? (await this.callerClientConfig?.region?.()) ?? process.env.AWS_REGION; + const client = new SigninClient({ + credentials: { + accessKeyId: "", + secretAccessKey: "", + }, + region, + requestHandler, + logger, + userAgentAppId, + ...this.init?.clientConfig, + }); + this.createDPoPInterceptor(client.middlewareStack); + const commandInput = { + tokenInput: { + clientId: token.clientId, + refreshToken: token.refreshToken, + grantType: "refresh_token", + }, + }; + try { + const response = await client.send(new CreateOAuth2TokenCommand(commandInput)); + const { accessKeyId, secretAccessKey, sessionToken } = response.tokenOutput?.accessToken ?? {}; + const { refreshToken, expiresIn } = response.tokenOutput ?? {}; + if (!accessKeyId || !secretAccessKey || !sessionToken || !refreshToken) { + throw new propertyProvider.CredentialsProviderError("Token refresh response missing required fields", { + logger: this.logger, + tryNextLink: false, + }); + } + const expiresInMs = (expiresIn ?? 900) * 1000; + const expiration = new Date(Date.now() + expiresInMs); + const updatedToken = { + ...token, + accessToken: { + ...token.accessToken, + accessKeyId: accessKeyId, + secretAccessKey: secretAccessKey, + sessionToken: sessionToken, + expiresAt: expiration.toISOString(), + }, + refreshToken: refreshToken, + }; + await this.saveToken(updatedToken); + const newAccessToken = updatedToken.accessToken; + return { + accessKeyId: newAccessToken.accessKeyId, + secretAccessKey: newAccessToken.secretAccessKey, + sessionToken: newAccessToken.sessionToken, + accountId: newAccessToken.accountId, + expiration, + }; + } + catch (error) { + if (error.name === "AccessDeniedException") { + const errorType = error.error; + let message; + switch (errorType) { + case "TOKEN_EXPIRED": + message = "Your session has expired. Please reauthenticate."; + break; + case "USER_CREDENTIALS_CHANGED": + message = + "Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password."; + break; + case "INSUFFICIENT_PERMISSIONS": + message = + "Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action."; + break; + default: + message = `Failed to refresh token: ${String(error)}. Please re-authenticate using \`aws login\``; + } + throw new propertyProvider.CredentialsProviderError(message, { logger: this.logger, tryNextLink: false }); + } + throw new propertyProvider.CredentialsProviderError(`Failed to refresh token: ${String(error)}. Please re-authenticate using aws login`, { logger: this.logger }); + } + } + async loadToken() { + const tokenFilePath = this.getTokenFilePath(); + try { + let tokenData; + try { + tokenData = await sharedIniFileLoader.readFile(tokenFilePath, { ignoreCache: this.init?.ignoreCache }); + } + catch { + tokenData = await node_fs.promises.readFile(tokenFilePath, "utf8"); + } + const token = JSON.parse(tokenData); + const missingFields = ["accessToken", "clientId", "refreshToken", "dpopKey"].filter((k) => !token[k]); + if (!token.accessToken?.accountId) { + missingFields.push("accountId"); + } + if (missingFields.length > 0) { + throw new propertyProvider.CredentialsProviderError(`Token validation failed, missing fields: ${missingFields.join(", ")}`, { + logger: this.logger, + tryNextLink: false, + }); + } + return token; + } + catch (error) { + throw new propertyProvider.CredentialsProviderError(`Failed to load token from ${tokenFilePath}: ${String(error)}`, { + logger: this.logger, + tryNextLink: false, + }); + } + } + async saveToken(token) { + const tokenFilePath = this.getTokenFilePath(); + const directory = node_path.dirname(tokenFilePath); + try { + await node_fs.promises.mkdir(directory, { recursive: true }); + } + catch (error) { + } + await node_fs.promises.writeFile(tokenFilePath, JSON.stringify(token, null, 2), "utf8"); + } + getTokenFilePath() { + const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? node_path.join(node_os.homedir(), ".aws", "login", "cache"); + const loginSessionBytes = Buffer.from(this.loginSession, "utf8"); + const loginSessionSha256 = node_crypto.createHash("sha256").update(loginSessionBytes).digest("hex"); + return node_path.join(directory, `${loginSessionSha256}.json`); + } + derToRawSignature(derSignature) { + let offset = 2; + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const rLength = derSignature[offset++]; + let r = derSignature.subarray(offset, offset + rLength); + offset += rLength; + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const sLength = derSignature[offset++]; + let s = derSignature.subarray(offset, offset + sLength); + r = r[0] === 0x00 ? r.subarray(1) : r; + s = s[0] === 0x00 ? s.subarray(1) : s; + const rPadded = Buffer.concat([Buffer.alloc(32 - r.length), r]); + const sPadded = Buffer.concat([Buffer.alloc(32 - s.length), s]); + return Buffer.concat([rPadded, sPadded]); + } + createDPoPInterceptor(middlewareStack) { + middlewareStack.add((next) => async (args) => { + if (protocolHttp.HttpRequest.isInstance(args.request)) { + const request = args.request; + const actualEndpoint = `${request.protocol}//${request.hostname}${request.port ? `:${request.port}` : ""}${request.path}`; + const dpop = await this.generateDpop(request.method, actualEndpoint); + request.headers = { + ...request.headers, + DPoP: dpop, + }; + } + return next(args); + }, { + step: "finalizeRequest", + name: "dpopInterceptor", + override: true, + }); + } + async generateDpop(method = "POST", endpoint) { + const token = await this.loadToken(); + try { + const privateKey = node_crypto.createPrivateKey({ + key: token.dpopKey, + format: "pem", + type: "sec1", + }); + const publicKey = node_crypto.createPublicKey(privateKey); + const publicDer = publicKey.export({ format: "der", type: "spki" }); + let pointStart = -1; + for (let i = 0; i < publicDer.length; i++) { + if (publicDer[i] === 0x04) { + pointStart = i; + break; + } + } + const x = publicDer.slice(pointStart + 1, pointStart + 33); + const y = publicDer.slice(pointStart + 33, pointStart + 65); + const header = { + alg: "ES256", + typ: "dpop+jwt", + jwk: { + kty: "EC", + crv: "P-256", + x: x.toString("base64url"), + y: y.toString("base64url"), + }, + }; + const payload = { + jti: crypto.randomUUID(), + htm: method, + htu: endpoint, + iat: Math.floor(Date.now() / 1000), + }; + const headerB64 = Buffer.from(JSON.stringify(header)).toString("base64url"); + const payloadB64 = Buffer.from(JSON.stringify(payload)).toString("base64url"); + const message = `${headerB64}.${payloadB64}`; + const asn1Signature = node_crypto.sign("sha256", Buffer.from(message), privateKey); + const rawSignature = this.derToRawSignature(asn1Signature); + const signatureB64 = rawSignature.toString("base64url"); + return `${message}.${signatureB64}`; + } + catch (error) { + throw new propertyProvider.CredentialsProviderError(`Failed to generate Dpop proof: ${error instanceof Error ? error.message : String(error)}`, { logger: this.logger, tryNextLink: false }); + } + } +} + +const fromLoginCredentials = (init) => async ({ callerClientConfig } = {}) => { + init?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials"); + const profiles = await sharedIniFileLoader.parseKnownFiles(init || {}); + const profileName = sharedIniFileLoader.getProfileName({ + profile: init?.profile ?? callerClientConfig?.profile, + }); + const profile = profiles[profileName]; + if (!profile?.login_session) { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} does not contain login_session.`, { + tryNextLink: true, + logger: init?.logger, + }); + } + const fetcher = new LoginCredentialsFetcher(profile, init, callerClientConfig); + const credentials = await fetcher.loadCredentials(); + return client.setCredentialFeature(credentials, "CREDENTIALS_LOGIN", "AD"); +}; + +exports.fromLoginCredentials = fromLoginCredentials; diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/LoginCredentialsFetcher.js b/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/LoginCredentialsFetcher.js new file mode 100644 index 0000000..875b9ee --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/LoginCredentialsFetcher.js @@ -0,0 +1,262 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { HttpRequest } from "@smithy/protocol-http"; +import { readFile } from "@smithy/shared-ini-file-loader"; +import { createHash, createPrivateKey, createPublicKey, sign } from "node:crypto"; +import { promises as fs } from "node:fs"; +import { homedir } from "node:os"; +import { dirname, join } from "node:path"; +export class LoginCredentialsFetcher { + profileData; + init; + callerClientConfig; + static REFRESH_THRESHOLD = 5 * 60 * 1000; + constructor(profileData, init, callerClientConfig) { + this.profileData = profileData; + this.init = init; + this.callerClientConfig = callerClientConfig; + } + async loadCredentials() { + const token = await this.loadToken(); + if (!token) { + throw new CredentialsProviderError(`Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`, { tryNextLink: false, logger: this.logger }); + } + const accessToken = token.accessToken; + const now = Date.now(); + const expiryTime = new Date(accessToken.expiresAt).getTime(); + const timeUntilExpiry = expiryTime - now; + if (timeUntilExpiry <= LoginCredentialsFetcher.REFRESH_THRESHOLD) { + return this.refresh(token); + } + return { + accessKeyId: accessToken.accessKeyId, + secretAccessKey: accessToken.secretAccessKey, + sessionToken: accessToken.sessionToken, + accountId: accessToken.accountId, + expiration: new Date(accessToken.expiresAt), + }; + } + get logger() { + return this.init?.logger; + } + get loginSession() { + return this.profileData.login_session; + } + async refresh(token) { + const { SigninClient, CreateOAuth2TokenCommand } = await import("@aws-sdk/nested-clients/signin"); + const { logger, userAgentAppId } = this.callerClientConfig ?? {}; + const isH2 = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2"; + }; + const requestHandler = isH2(this.callerClientConfig?.requestHandler) + ? undefined + : this.callerClientConfig?.requestHandler; + const region = this.profileData.region ?? (await this.callerClientConfig?.region?.()) ?? process.env.AWS_REGION; + const client = new SigninClient({ + credentials: { + accessKeyId: "", + secretAccessKey: "", + }, + region, + requestHandler, + logger, + userAgentAppId, + ...this.init?.clientConfig, + }); + this.createDPoPInterceptor(client.middlewareStack); + const commandInput = { + tokenInput: { + clientId: token.clientId, + refreshToken: token.refreshToken, + grantType: "refresh_token", + }, + }; + try { + const response = await client.send(new CreateOAuth2TokenCommand(commandInput)); + const { accessKeyId, secretAccessKey, sessionToken } = response.tokenOutput?.accessToken ?? {}; + const { refreshToken, expiresIn } = response.tokenOutput ?? {}; + if (!accessKeyId || !secretAccessKey || !sessionToken || !refreshToken) { + throw new CredentialsProviderError("Token refresh response missing required fields", { + logger: this.logger, + tryNextLink: false, + }); + } + const expiresInMs = (expiresIn ?? 900) * 1000; + const expiration = new Date(Date.now() + expiresInMs); + const updatedToken = { + ...token, + accessToken: { + ...token.accessToken, + accessKeyId: accessKeyId, + secretAccessKey: secretAccessKey, + sessionToken: sessionToken, + expiresAt: expiration.toISOString(), + }, + refreshToken: refreshToken, + }; + await this.saveToken(updatedToken); + const newAccessToken = updatedToken.accessToken; + return { + accessKeyId: newAccessToken.accessKeyId, + secretAccessKey: newAccessToken.secretAccessKey, + sessionToken: newAccessToken.sessionToken, + accountId: newAccessToken.accountId, + expiration, + }; + } + catch (error) { + if (error.name === "AccessDeniedException") { + const errorType = error.error; + let message; + switch (errorType) { + case "TOKEN_EXPIRED": + message = "Your session has expired. Please reauthenticate."; + break; + case "USER_CREDENTIALS_CHANGED": + message = + "Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password."; + break; + case "INSUFFICIENT_PERMISSIONS": + message = + "Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action."; + break; + default: + message = `Failed to refresh token: ${String(error)}. Please re-authenticate using \`aws login\``; + } + throw new CredentialsProviderError(message, { logger: this.logger, tryNextLink: false }); + } + throw new CredentialsProviderError(`Failed to refresh token: ${String(error)}. Please re-authenticate using aws login`, { logger: this.logger }); + } + } + async loadToken() { + const tokenFilePath = this.getTokenFilePath(); + try { + let tokenData; + try { + tokenData = await readFile(tokenFilePath, { ignoreCache: this.init?.ignoreCache }); + } + catch { + tokenData = await fs.readFile(tokenFilePath, "utf8"); + } + const token = JSON.parse(tokenData); + const missingFields = ["accessToken", "clientId", "refreshToken", "dpopKey"].filter((k) => !token[k]); + if (!token.accessToken?.accountId) { + missingFields.push("accountId"); + } + if (missingFields.length > 0) { + throw new CredentialsProviderError(`Token validation failed, missing fields: ${missingFields.join(", ")}`, { + logger: this.logger, + tryNextLink: false, + }); + } + return token; + } + catch (error) { + throw new CredentialsProviderError(`Failed to load token from ${tokenFilePath}: ${String(error)}`, { + logger: this.logger, + tryNextLink: false, + }); + } + } + async saveToken(token) { + const tokenFilePath = this.getTokenFilePath(); + const directory = dirname(tokenFilePath); + try { + await fs.mkdir(directory, { recursive: true }); + } + catch (error) { + } + await fs.writeFile(tokenFilePath, JSON.stringify(token, null, 2), "utf8"); + } + getTokenFilePath() { + const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join(homedir(), ".aws", "login", "cache"); + const loginSessionBytes = Buffer.from(this.loginSession, "utf8"); + const loginSessionSha256 = createHash("sha256").update(loginSessionBytes).digest("hex"); + return join(directory, `${loginSessionSha256}.json`); + } + derToRawSignature(derSignature) { + let offset = 2; + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const rLength = derSignature[offset++]; + let r = derSignature.subarray(offset, offset + rLength); + offset += rLength; + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const sLength = derSignature[offset++]; + let s = derSignature.subarray(offset, offset + sLength); + r = r[0] === 0x00 ? r.subarray(1) : r; + s = s[0] === 0x00 ? s.subarray(1) : s; + const rPadded = Buffer.concat([Buffer.alloc(32 - r.length), r]); + const sPadded = Buffer.concat([Buffer.alloc(32 - s.length), s]); + return Buffer.concat([rPadded, sPadded]); + } + createDPoPInterceptor(middlewareStack) { + middlewareStack.add((next) => async (args) => { + if (HttpRequest.isInstance(args.request)) { + const request = args.request; + const actualEndpoint = `${request.protocol}//${request.hostname}${request.port ? `:${request.port}` : ""}${request.path}`; + const dpop = await this.generateDpop(request.method, actualEndpoint); + request.headers = { + ...request.headers, + DPoP: dpop, + }; + } + return next(args); + }, { + step: "finalizeRequest", + name: "dpopInterceptor", + override: true, + }); + } + async generateDpop(method = "POST", endpoint) { + const token = await this.loadToken(); + try { + const privateKey = createPrivateKey({ + key: token.dpopKey, + format: "pem", + type: "sec1", + }); + const publicKey = createPublicKey(privateKey); + const publicDer = publicKey.export({ format: "der", type: "spki" }); + let pointStart = -1; + for (let i = 0; i < publicDer.length; i++) { + if (publicDer[i] === 0x04) { + pointStart = i; + break; + } + } + const x = publicDer.slice(pointStart + 1, pointStart + 33); + const y = publicDer.slice(pointStart + 33, pointStart + 65); + const header = { + alg: "ES256", + typ: "dpop+jwt", + jwk: { + kty: "EC", + crv: "P-256", + x: x.toString("base64url"), + y: y.toString("base64url"), + }, + }; + const payload = { + jti: crypto.randomUUID(), + htm: method, + htu: endpoint, + iat: Math.floor(Date.now() / 1000), + }; + const headerB64 = Buffer.from(JSON.stringify(header)).toString("base64url"); + const payloadB64 = Buffer.from(JSON.stringify(payload)).toString("base64url"); + const message = `${headerB64}.${payloadB64}`; + const asn1Signature = sign("sha256", Buffer.from(message), privateKey); + const rawSignature = this.derToRawSignature(asn1Signature); + const signatureB64 = rawSignature.toString("base64url"); + return `${message}.${signatureB64}`; + } + catch (error) { + throw new CredentialsProviderError(`Failed to generate Dpop proof: ${error instanceof Error ? error.message : String(error)}`, { logger: this.logger, tryNextLink: false }); + } + } +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/fromLoginCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/fromLoginCredentials.js new file mode 100644 index 0000000..6022841 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/fromLoginCredentials.js @@ -0,0 +1,21 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName, parseKnownFiles } from "@smithy/shared-ini-file-loader"; +import { LoginCredentialsFetcher } from "./LoginCredentialsFetcher"; +export const fromLoginCredentials = (init) => async ({ callerClientConfig } = {}) => { + init?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials"); + const profiles = await parseKnownFiles(init || {}); + const profileName = getProfileName({ + profile: init?.profile ?? callerClientConfig?.profile, + }); + const profile = profiles[profileName]; + if (!profile?.login_session) { + throw new CredentialsProviderError(`Profile ${profileName} does not contain login_session.`, { + tryNextLink: true, + logger: init?.logger, + }); + } + const fetcher = new LoginCredentialsFetcher(profile, init, callerClientConfig); + const credentials = await fetcher.loadCredentials(); + return setCredentialFeature(credentials, "CREDENTIALS_LOGIN", "AD"); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/index.js b/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/index.js new file mode 100644 index 0000000..d559017 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./fromLoginCredentials"; +export * from "./types"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/types.js b/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/LoginCredentialsFetcher.d.ts b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/LoginCredentialsFetcher.d.ts new file mode 100644 index 0000000..e9b1b9c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/LoginCredentialsFetcher.d.ts @@ -0,0 +1,42 @@ +import type { AwsCredentialIdentity, AwsIdentityProperties } from "@aws-sdk/types"; +import type { IniSection } from "@smithy/types"; +import type { FromLoginCredentialsInit } from "./types"; +/** + * Handles loading and refreshing Sign-In credentials from cached tokens. + * @internal + */ +export declare class LoginCredentialsFetcher { + private readonly profileData; + private readonly init?; + private readonly callerClientConfig?; + private static readonly REFRESH_THRESHOLD; + constructor(profileData: IniSection, init?: FromLoginCredentialsInit | undefined, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]); + /** + * Loads credentials and refreshes if necessary + */ + loadCredentials(): Promise; + private get logger(); + private get loginSession(); + private refresh; + private loadToken; + private saveToken; + private getTokenFilePath; + /** + * Converts ASN.1 DER encoded ECDSA signature to raw r||s format. + * raw format is a fixed 64-byte concatenation of r and s values (32 bytes each). + * + * References: + * - ECDSA algorithm: https://thecopenhagenbook.com/cryptography/ecdsa + * - ASN.1 DER encoding: https://www.rfc-editor.org/rfc/rfc5480#section-2.2 + * + * @param derSignature - ASN.1 DER encoded signature from crypto.sign() + * @returns Raw signature as 64-byte buffer (32-byte r + 32-byte s) + */ + private derToRawSignature; + /** + * Creates a DPoP interceptor that updates the DPoP header with the actual resolved endpoint + * @internal + */ + private createDPoPInterceptor; + private generateDpop; +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/fromLoginCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/fromLoginCredentials.d.ts new file mode 100644 index 0000000..bcca25c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/fromLoginCredentials.d.ts @@ -0,0 +1,7 @@ +import type { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { FromLoginCredentialsInit } from "./types"; +/** + * Creates a credential provider that sources credentials from aws login cached tokens + * @internal + */ +export declare const fromLoginCredentials: (init?: FromLoginCredentialsInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/index.d.ts new file mode 100644 index 0000000..2986833 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./fromLoginCredentials"; +/** + * @internal + */ +export * from "./types"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/LoginCredentialsFetcher.d.ts b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/LoginCredentialsFetcher.d.ts new file mode 100644 index 0000000..2d714b7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/LoginCredentialsFetcher.d.ts @@ -0,0 +1,24 @@ +import { AwsCredentialIdentity, AwsIdentityProperties } from "@aws-sdk/types"; +import { IniSection } from "@smithy/types"; +import { FromLoginCredentialsInit } from "./types"; +export declare class LoginCredentialsFetcher { + private readonly profileData; + private readonly init?; + private readonly callerClientConfig?; + private static readonly REFRESH_THRESHOLD; + constructor( + profileData: IniSection, + init?: FromLoginCredentialsInit | undefined, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] + ); + loadCredentials(): Promise; + private readonly logger: any; + private readonly loginSession: any; + private refresh; + private loadToken; + private saveToken; + private getTokenFilePath; + private derToRawSignature; + private createDPoPInterceptor; + private generateDpop; +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/fromLoginCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/fromLoginCredentials.d.ts new file mode 100644 index 0000000..6435c82 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/fromLoginCredentials.d.ts @@ -0,0 +1,5 @@ +import { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import { FromLoginCredentialsInit } from "./types"; +export declare const fromLoginCredentials: ( + init?: FromLoginCredentialsInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..d559017 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fromLoginCredentials"; +export * from "./types"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/types.d.ts b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..e0f84c9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/ts3.4/types.d.ts @@ -0,0 +1,39 @@ +import { SigninClientConfig } from "@aws-sdk/nested-clients/signin"; +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { SharedConfigInit } from "@smithy/shared-ini-file-loader"; +export interface FromLoginCredentialsInit + extends CredentialProviderOptions, + SharedConfigInit { + profile?: string; + clientConfig?: SigninClientConfig; +} +export interface LoginToken { + accessToken: { + accessKeyId: string; + secretAccessKey: string; + sessionToken: string; + accountId?: string; + expiresAt: string; + }; + tokenType: string; + clientId: string; + refreshToken: string; + idToken: string; + dpopKey: string; +} +export interface DpopHeader { + typ: "dpop+jwt"; + alg: "ES256"; + jwk: { + kty: "EC"; + crv: "P-256"; + x: string; + y: string; + }; +} +export interface DpopPayload { + jti: string; + htm: string; + htu: string; + iat: number; +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/types.d.ts b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/types.d.ts new file mode 100644 index 0000000..d19f4f4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/dist-types/types.d.ts @@ -0,0 +1,59 @@ +import type { SigninClientConfig } from "@aws-sdk/nested-clients/signin"; +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { SharedConfigInit } from "@smithy/shared-ini-file-loader"; +/** + * Configuration options for the Login credential provider + * @public + */ +export interface FromLoginCredentialsInit extends CredentialProviderOptions, SharedConfigInit { + /** + * Profile name to use for Login credentials + */ + profile?: string; + /** + * Login client configuration for token refresh operations + */ + clientConfig?: SigninClientConfig; +} +/** + * Login token structure stored on disk + * @internal + */ +export interface LoginToken { + accessToken: { + accessKeyId: string; + secretAccessKey: string; + sessionToken: string; + accountId?: string; + expiresAt: string; + }; + tokenType: string; + clientId: string; + refreshToken: string; + idToken: string; + dpopKey: string; +} +/** + * DPoP header structure for OAuth 2.0 Demonstrating Proof of Possession + * @internal + */ +export interface DpopHeader { + typ: "dpop+jwt"; + alg: "ES256"; + jwk: { + kty: "EC"; + crv: "P-256"; + x: string; + y: string; + }; +} +/** + * DPoP payload structure + * @internal + */ +export interface DpopPayload { + jti: string; + htm: string; + htu: string; + iat: number; +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-login/package.json b/bff/node_modules/@aws-sdk/credential-provider-login/package.json new file mode 100644 index 0000000..5971fd8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-login/package.json @@ -0,0 +1,68 @@ +{ + "name": "@aws-sdk/credential-provider-login", + "version": "3.972.28", + "description": "AWS credential provider that sources credentials from aws login cached tokens", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-login", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials", + "signin", + "login" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-login", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-login" + } +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/LICENSE b/bff/node_modules/@aws-sdk/credential-provider-node/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/README.md b/bff/node_modules/@aws-sdk/credential-provider-node/README.md new file mode 100644 index 0000000..74e9902 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/README.md @@ -0,0 +1,104 @@ +# @aws-sdk/credential-provider-node + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-node/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-node) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-node.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-node) + +## AWS Credential Provider for Node.JS + +This module provides a factory function, `defaultProvider`, that will attempt to +source AWS credentials from a Node.JS environment. It will attempt to find +credentials from the following sources (listed in order of precedence): + +- Environment variables exposed via `process.env` +- SSO credentials from token cache +- Web identity token credentials +- Shared credentials and config ini files +- The EC2/ECS Instance Metadata Service + +The default credential provider will invoke one provider at a time and only +continue to the next if no credentials have been located. For example, if the +process finds values defined via the `AWS_ACCESS_KEY_ID` and +`AWS_SECRET_ACCESS_KEY` environment variables, the files at `~/.aws/credentials` +and `~/.aws/config` will not be read, nor will any messages be sent to the +Instance Metadata Service. + +If invalid configuration is encountered (such as a profile in +`~/.aws/credentials` specifying as its `source_profile` the name of a profile +that does not exist), then the chained provider will be rejected with an error +and will not invoke the next provider in the list. + +_IMPORTANT_: if you intend to acquire credentials using EKS +[IAM Roles for Service Accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html), +then you must explicitly specify a value for `roleAssumerWithWebIdentity`. There is a +default function available in `@aws-sdk/client-sts` package. An example of using +this: + +```js +const { getDefaultRoleAssumerWithWebIdentity } = require("@aws-sdk/client-sts"); +const { defaultProvider } = require("@aws-sdk/credential-provider-node"); +const { S3Client, GetObjectCommand } = require("@aws-sdk/client-s3"); + +const provider = defaultProvider({ + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity({ + // You must explicitly pass a region if you are not using us-east-1 + region: "eu-west-1", + }), +}); + +const client = new S3Client({ credentialDefaultProvider: provider }); +``` + +_IMPORTANT_: We provide a wrapper of this provider in `@aws-sdk/credential-providers` +package to save you from importing `getDefaultRoleAssumerWithWebIdentity()` or +`getDefaultRoleAssume()` from STS package. Similarly, you can do: + +```js +const { fromNodeProviderChain } = require("@aws-sdk/credential-providers"); + +const credentials = fromNodeProviderChain(); + +const client = new S3Client({ credentials }); +``` + +## Supported configuration + +You may customize how credentials are resolved by providing an options hash to +the `defaultProvider` factory function. The following options are +supported: + +- `profile` - The configuration profile to use. If not specified, the provider + will use the value in the `AWS_PROFILE` environment variable or a default of + `default`. +- `filepath` - The path to the shared credentials file. If not specified, the + provider will use the value in the `AWS_SHARED_CREDENTIALS_FILE` environment + variable or a default of `~/.aws/credentials`. +- `configFilepath` - The path to the shared config file. If not specified, the + provider will use the value in the `AWS_CONFIG_FILE` environment variable or a + default of `~/.aws/config`. +- `mfaCodeProvider` - A function that returns a a promise fulfilled with an + MFA token code for the provided MFA Serial code. If a profile requires an MFA + code and `mfaCodeProvider` is not a valid function, the credential provider + promise will be rejected. +- `roleAssumer` - A function that assumes a role and returns a promise + fulfilled with credentials for the assumed role. If not specified, no role + will be assumed, and an error will be thrown. +- `roleArn` - ARN to assume. If not specified, the provider will use the value + in the `AWS_ROLE_ARN` environment variable. +- `webIdentityTokenFile` - File location of where the `OIDC` token is stored. + If not specified, the provider will use the value in the `AWS_WEB_IDENTITY_TOKEN_FILE` + environment variable. +- `roleAssumerWithWebIdentity` - A function that assumes a role with web identity and + returns a promise fulfilled with credentials for the assumed role. +- `timeout` - The connection timeout (in milliseconds) to apply to any remote + requests. If not specified, a default value of `1000` (one second) is used. +- `maxRetries` - The maximum number of times any HTTP connections should be + retried. If not specified, a default value of `0` will be used. + +## Related packages: + +- [AWS Credential Provider for Node.JS - Environment Variables](../credential-provider-env) +- [AWS Credential Provider for Node.JS - SSO](../credential-provider-sso) +- [AWS Credential Provider for Node.JS - Web Identity](../credential-provider-web-identity) +- [AWS Credential Provider for Node.JS - Shared Configuration Files](../credential-provider-ini) +- [AWS Credential Provider for Node.JS - Instance and Container Metadata](../credential-provider-imds) +- [AWS Shared Configuration File Loader](../shared-ini-file-loader) diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js b/bff/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js new file mode 100644 index 0000000..171b35a --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js @@ -0,0 +1,156 @@ +'use strict'; + +var credentialProviderEnv = require('@aws-sdk/credential-provider-env'); +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); + +const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +const remoteProvider = async (init) => { + const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await import('@smithy/credential-provider-imds'); + if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) { + init.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata"); + const { fromHttp } = await import('@aws-sdk/credential-provider-http'); + return propertyProvider.chain(fromHttp(init), fromContainerMetadata(init)); + } + if (process.env[ENV_IMDS_DISABLED] && process.env[ENV_IMDS_DISABLED] !== "false") { + return async () => { + throw new propertyProvider.CredentialsProviderError("EC2 Instance Metadata Service access disabled", { logger: init.logger }); + }; + } + init.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"); + return fromInstanceMetadata(init); +}; + +function memoizeChain(providers, treatAsExpired) { + const chain = internalCreateChain(providers); + let activeLock; + let passiveLock; + let credentials; + const provider = async (options) => { + if (options?.forceRefresh) { + return await chain(options); + } + if (credentials?.expiration) { + if (credentials?.expiration?.getTime() < Date.now()) { + credentials = undefined; + } + } + if (activeLock) { + await activeLock; + } + else if (!credentials || treatAsExpired?.(credentials)) { + if (credentials) { + if (!passiveLock) { + passiveLock = chain(options) + .then((c) => { + credentials = c; + }) + .finally(() => { + passiveLock = undefined; + }); + } + } + else { + activeLock = chain(options) + .then((c) => { + credentials = c; + }) + .finally(() => { + activeLock = undefined; + }); + return provider(options); + } + } + return credentials; + }; + return provider; +} +const internalCreateChain = (providers) => async (awsIdentityProperties) => { + let lastProviderError; + for (const provider of providers) { + try { + return await provider(awsIdentityProperties); + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; + +let multipleCredentialSourceWarningEmitted = false; +const defaultProvider = (init = {}) => memoizeChain([ + async () => { + const profile = init.profile ?? process.env[sharedIniFileLoader.ENV_PROFILE]; + if (profile) { + const envStaticCredentialsAreSet = process.env[credentialProviderEnv.ENV_KEY] && process.env[credentialProviderEnv.ENV_SECRET]; + if (envStaticCredentialsAreSet) { + if (!multipleCredentialSourceWarningEmitted) { + const warnFn = init.logger?.warn && init.logger?.constructor?.name !== "NoOpLogger" + ? init.logger.warn.bind(init.logger) + : console.warn; + warnFn(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING: + Multiple credential sources detected: + Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set. + This SDK will proceed with the AWS_PROFILE value. + + However, a future version may change this behavior to prefer the ENV static credentials. + Please ensure that your environment only sets either the AWS_PROFILE or the + AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair. +`); + multipleCredentialSourceWarningEmitted = true; + } + } + throw new propertyProvider.CredentialsProviderError("AWS_PROFILE is set, skipping fromEnv provider.", { + logger: init.logger, + tryNextLink: true, + }); + } + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"); + return credentialProviderEnv.fromEnv(init)(); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init; + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + throw new propertyProvider.CredentialsProviderError("Skipping SSO provider in default chain (inputs do not include SSO fields).", { logger: init.logger }); + } + const { fromSSO } = await import('@aws-sdk/credential-provider-sso'); + return fromSSO(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni"); + const { fromIni } = await import('@aws-sdk/credential-provider-ini'); + return fromIni(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess"); + const { fromProcess } = await import('@aws-sdk/credential-provider-process'); + return fromProcess(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile"); + const { fromTokenFile } = await import('@aws-sdk/credential-provider-web-identity'); + return fromTokenFile(init)(awsIdentityProperties); + }, + async () => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"); + return (await remoteProvider(init))(); + }, + async () => { + throw new propertyProvider.CredentialsProviderError("Could not load credentials from any providers", { + tryNextLink: false, + logger: init.logger, + }); + }, +], credentialsTreatedAsExpired); +const credentialsWillNeedRefresh = (credentials) => credentials?.expiration !== undefined; +const credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000; + +exports.credentialsTreatedAsExpired = credentialsTreatedAsExpired; +exports.credentialsWillNeedRefresh = credentialsWillNeedRefresh; +exports.defaultProvider = defaultProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js b/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js new file mode 100644 index 0000000..092ff56 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/defaultProvider.js @@ -0,0 +1,73 @@ +import { ENV_KEY, ENV_SECRET, fromEnv } from "@aws-sdk/credential-provider-env"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { ENV_PROFILE } from "@smithy/shared-ini-file-loader"; +import { remoteProvider } from "./remoteProvider"; +import { memoizeChain } from "./runtime/memoize-chain"; +let multipleCredentialSourceWarningEmitted = false; +export const defaultProvider = (init = {}) => memoizeChain([ + async () => { + const profile = init.profile ?? process.env[ENV_PROFILE]; + if (profile) { + const envStaticCredentialsAreSet = process.env[ENV_KEY] && process.env[ENV_SECRET]; + if (envStaticCredentialsAreSet) { + if (!multipleCredentialSourceWarningEmitted) { + const warnFn = init.logger?.warn && init.logger?.constructor?.name !== "NoOpLogger" + ? init.logger.warn.bind(init.logger) + : console.warn; + warnFn(`@aws-sdk/credential-provider-node - defaultProvider::fromEnv WARNING: + Multiple credential sources detected: + Both AWS_PROFILE and the pair AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY static credentials are set. + This SDK will proceed with the AWS_PROFILE value. + + However, a future version may change this behavior to prefer the ENV static credentials. + Please ensure that your environment only sets either the AWS_PROFILE or the + AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY pair. +`); + multipleCredentialSourceWarningEmitted = true; + } + } + throw new CredentialsProviderError("AWS_PROFILE is set, skipping fromEnv provider.", { + logger: init.logger, + tryNextLink: true, + }); + } + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromEnv"); + return fromEnv(init)(); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init; + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + throw new CredentialsProviderError("Skipping SSO provider in default chain (inputs do not include SSO fields).", { logger: init.logger }); + } + const { fromSSO } = await import("@aws-sdk/credential-provider-sso"); + return fromSSO(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromIni"); + const { fromIni } = await import("@aws-sdk/credential-provider-ini"); + return fromIni(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromProcess"); + const { fromProcess } = await import("@aws-sdk/credential-provider-process"); + return fromProcess(init)(awsIdentityProperties); + }, + async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::fromTokenFile"); + const { fromTokenFile } = await import("@aws-sdk/credential-provider-web-identity"); + return fromTokenFile(init)(awsIdentityProperties); + }, + async () => { + init.logger?.debug("@aws-sdk/credential-provider-node - defaultProvider::remoteProvider"); + return (await remoteProvider(init))(); + }, + async () => { + throw new CredentialsProviderError("Could not load credentials from any providers", { + tryNextLink: false, + logger: init.logger, + }); + }, +], credentialsTreatedAsExpired); +export const credentialsWillNeedRefresh = (credentials) => credentials?.expiration !== undefined; +export const credentialsTreatedAsExpired = (credentials) => credentials?.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/index.js b/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/index.js new file mode 100644 index 0000000..c82818e --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/index.js @@ -0,0 +1 @@ +export * from "./defaultProvider"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js b/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js new file mode 100644 index 0000000..c455bc1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/remoteProvider.js @@ -0,0 +1,17 @@ +import { chain, CredentialsProviderError } from "@smithy/property-provider"; +export const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +export const remoteProvider = async (init) => { + const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await import("@smithy/credential-provider-imds"); + if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) { + init.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromHttp/fromContainerMetadata"); + const { fromHttp } = await import("@aws-sdk/credential-provider-http"); + return chain(fromHttp(init), fromContainerMetadata(init)); + } + if (process.env[ENV_IMDS_DISABLED] && process.env[ENV_IMDS_DISABLED] !== "false") { + return async () => { + throw new CredentialsProviderError("EC2 Instance Metadata Service access disabled", { logger: init.logger }); + }; + } + init.logger?.debug("@aws-sdk/credential-provider-node - remoteProvider::fromInstanceMetadata"); + return fromInstanceMetadata(init); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js b/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js new file mode 100644 index 0000000..741ddf0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-es/runtime/memoize-chain.js @@ -0,0 +1,60 @@ +export function memoizeChain(providers, treatAsExpired) { + const chain = internalCreateChain(providers); + let activeLock; + let passiveLock; + let credentials; + const provider = async (options) => { + if (options?.forceRefresh) { + return await chain(options); + } + if (credentials?.expiration) { + if (credentials?.expiration?.getTime() < Date.now()) { + credentials = undefined; + } + } + if (activeLock) { + await activeLock; + } + else if (!credentials || treatAsExpired?.(credentials)) { + if (credentials) { + if (!passiveLock) { + passiveLock = chain(options) + .then((c) => { + credentials = c; + }) + .finally(() => { + passiveLock = undefined; + }); + } + } + else { + activeLock = chain(options) + .then((c) => { + credentials = c; + }) + .finally(() => { + activeLock = undefined; + }); + return provider(options); + } + } + return credentials; + }; + return provider; +} +export const internalCreateChain = (providers) => async (awsIdentityProperties) => { + let lastProviderError; + for (const provider of providers) { + try { + return await provider(awsIdentityProperties); + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/defaultProvider.d.ts b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/defaultProvider.d.ts new file mode 100644 index 0000000..ed50dde --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/defaultProvider.d.ts @@ -0,0 +1,59 @@ +import type { FromHttpOptions } from "@aws-sdk/credential-provider-http"; +import type { FromIniInit } from "@aws-sdk/credential-provider-ini"; +import type { FromProcessInit } from "@aws-sdk/credential-provider-process"; +import type { FromSSOInit, SsoCredentialsParameters } from "@aws-sdk/credential-provider-sso"; +import type { FromTokenFileInit } from "@aws-sdk/credential-provider-web-identity"; +import type { RemoteProviderInit } from "@smithy/credential-provider-imds"; +import type { AwsCredentialIdentity } from "@smithy/types"; +import { type MemoizedRuntimeConfigAwsCredentialIdentityProvider } from "./runtime/memoize-chain"; +/** + * @public + */ +export type DefaultProviderInit = FromIniInit & FromHttpOptions & RemoteProviderInit & FromProcessInit & (FromSSOInit & Partial) & FromTokenFileInit; +/** + * Creates a credential provider that will attempt to find credentials from the + * following sources (listed in order of precedence): + * * Environment variables exposed via `process.env` + * * SSO credentials from token cache + * * Web identity token credentials + * * Shared credentials and config ini files + * * The EC2/ECS Instance Metadata Service + * + * The default credential provider will invoke one provider at a time and only + * continue to the next if no credentials have been located. For example, if + * the process finds values defined via the `AWS_ACCESS_KEY_ID` and + * `AWS_SECRET_ACCESS_KEY` environment variables, the files at + * `~/.aws/credentials` and `~/.aws/config` will not be read, nor will any + * messages be sent to the Instance Metadata Service. + * + * @param init Configuration that is passed to each individual + * provider + * + * @see {@link fromEnv} The function used to source credentials from + * environment variables. + * @see {@link fromSSO} The function used to source credentials from + * resolved SSO token cache. + * @see {@link fromTokenFile} The function used to source credentials from + * token file. + * @see {@link fromIni} The function used to source credentials from INI + * files. + * @see {@link fromProcess} The function used to sources credentials from + * credential_process in INI files. + * @see {@link fromInstanceMetadata} The function used to source credentials from the + * EC2 Instance Metadata Service. + * @see {@link fromContainerMetadata} The function used to source credentials from the + * ECS Container Metadata Service. + */ +export declare const defaultProvider: (init?: DefaultProviderInit) => MemoizedRuntimeConfigAwsCredentialIdentityProvider; +/** + * @internal + * + * @returns credentials have expiration. + */ +export declare const credentialsWillNeedRefresh: (credentials: AwsCredentialIdentity) => boolean; +/** + * @internal + * + * @returns credentials with less than 5 minutes left. + */ +export declare const credentialsTreatedAsExpired: (credentials: AwsCredentialIdentity) => boolean; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/index.d.ts new file mode 100644 index 0000000..c82818e --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/index.d.ts @@ -0,0 +1 @@ +export * from "./defaultProvider"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/remoteProvider.d.ts b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/remoteProvider.d.ts new file mode 100644 index 0000000..4022a4e --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/remoteProvider.d.ts @@ -0,0 +1,11 @@ +import type { FromHttpOptions } from "@aws-sdk/credential-provider-http"; +import type { RemoteProviderInit } from "@smithy/credential-provider-imds"; +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +/** + * @internal + */ +export declare const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +/** + * @internal + */ +export declare const remoteProvider: (init: RemoteProviderInit | FromHttpOptions) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain.d.ts b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain.d.ts new file mode 100644 index 0000000..63fa7b7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/runtime/memoize-chain.d.ts @@ -0,0 +1,18 @@ +import type { AwsCredentialIdentity, AwsIdentityProperties, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +/** + * Memoized provider chain for AWS credentials. + * The options are only reevaluated if forceRefresh=true is passed or a natural + * refresh occurs. + * + * @public + */ +export interface MemoizedRuntimeConfigAwsCredentialIdentityProvider { + (options?: AwsIdentityProperties & { + forceRefresh?: boolean; + }): Promise; +} +/** + * @internal + */ +export declare function memoizeChain(providers: RuntimeConfigAwsCredentialIdentityProvider[], treatAsExpired: (resolved: AwsCredentialIdentity) => boolean): MemoizedRuntimeConfigAwsCredentialIdentityProvider; +export declare const internalCreateChain: (providers: RuntimeConfigAwsCredentialIdentityProvider[]) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/defaultProvider.d.ts b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/defaultProvider.d.ts new file mode 100644 index 0000000..a8711c0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/defaultProvider.d.ts @@ -0,0 +1,26 @@ +import { FromHttpOptions } from "@aws-sdk/credential-provider-http"; +import { FromIniInit } from "@aws-sdk/credential-provider-ini"; +import { FromProcessInit } from "@aws-sdk/credential-provider-process"; +import { + FromSSOInit, + SsoCredentialsParameters, +} from "@aws-sdk/credential-provider-sso"; +import { FromTokenFileInit } from "@aws-sdk/credential-provider-web-identity"; +import { RemoteProviderInit } from "@smithy/credential-provider-imds"; +import { AwsCredentialIdentity } from "@smithy/types"; +import { MemoizedRuntimeConfigAwsCredentialIdentityProvider } from "./runtime/memoize-chain"; +export type DefaultProviderInit = FromIniInit & + FromHttpOptions & + RemoteProviderInit & + FromProcessInit & + (FromSSOInit & Partial) & + FromTokenFileInit; +export declare const defaultProvider: ( + init?: DefaultProviderInit +) => MemoizedRuntimeConfigAwsCredentialIdentityProvider; +export declare const credentialsWillNeedRefresh: ( + credentials: AwsCredentialIdentity +) => boolean; +export declare const credentialsTreatedAsExpired: ( + credentials: AwsCredentialIdentity +) => boolean; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..c82818e --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./defaultProvider"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/remoteProvider.d.ts b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/remoteProvider.d.ts new file mode 100644 index 0000000..90948cc --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/remoteProvider.d.ts @@ -0,0 +1,7 @@ +import { FromHttpOptions } from "@aws-sdk/credential-provider-http"; +import { RemoteProviderInit } from "@smithy/credential-provider-imds"; +import { AwsCredentialIdentityProvider } from "@smithy/types"; +export declare const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +export declare const remoteProvider: ( + init: RemoteProviderInit | FromHttpOptions +) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/runtime/memoize-chain.d.ts b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/runtime/memoize-chain.d.ts new file mode 100644 index 0000000..dc72157 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/dist-types/ts3.4/runtime/memoize-chain.d.ts @@ -0,0 +1,19 @@ +import { + AwsCredentialIdentity, + AwsIdentityProperties, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +export interface MemoizedRuntimeConfigAwsCredentialIdentityProvider { + ( + options?: AwsIdentityProperties & { + forceRefresh?: boolean; + } + ): Promise; +} +export declare function memoizeChain( + providers: RuntimeConfigAwsCredentialIdentityProvider[], + treatAsExpired: (resolved: AwsCredentialIdentity) => boolean +): MemoizedRuntimeConfigAwsCredentialIdentityProvider; +export declare const internalCreateChain: ( + providers: RuntimeConfigAwsCredentialIdentityProvider[] +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-node/package.json b/bff/node_modules/@aws-sdk/credential-provider-node/package.json new file mode 100644 index 0000000..da0bfc9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-node/package.json @@ -0,0 +1,72 @@ +{ + "name": "@aws-sdk/credential-provider-node", + "version": "3.972.29", + "description": "AWS credential provider that sources credentials from a Node.JS environment. ", + "engines": { + "node": ">=20.0.0" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-node", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run --reporter verbose", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.24", + "@aws-sdk/credential-provider-http": "^3.972.26", + "@aws-sdk/credential-provider-ini": "^3.972.28", + "@aws-sdk/credential-provider-process": "^3.972.24", + "@aws-sdk/credential-provider-sso": "^3.972.28", + "@aws-sdk/credential-provider-web-identity": "^3.972.28", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-node", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-node" + } +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/LICENSE b/bff/node_modules/@aws-sdk/credential-provider-process/LICENSE new file mode 100644 index 0000000..f9a6673 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/README.md b/bff/node_modules/@aws-sdk/credential-provider-process/README.md new file mode 100644 index 0000000..4d47cd2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/README.md @@ -0,0 +1,20 @@ +# @aws-sdk/credential-provider-process + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-process/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-process) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-process.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-process) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- + +Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js b/bff/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js new file mode 100644 index 0000000..899fefb --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js @@ -0,0 +1,79 @@ +'use strict'; + +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var propertyProvider = require('@smithy/property-provider'); +var node_child_process = require('node:child_process'); +var node_util = require('node:util'); +var client = require('@aws-sdk/core/client'); + +const getValidatedProcessCredentials = (profileName, data, profiles) => { + if (data.Version !== 1) { + throw Error(`Profile ${profileName} credential_process did not return Version 1.`); + } + if (data.AccessKeyId === undefined || data.SecretAccessKey === undefined) { + throw Error(`Profile ${profileName} credential_process returned invalid credentials.`); + } + if (data.Expiration) { + const currentTime = new Date(); + const expireTime = new Date(data.Expiration); + if (expireTime < currentTime) { + throw Error(`Profile ${profileName} credential_process returned expired credentials.`); + } + } + let accountId = data.AccountId; + if (!accountId && profiles?.[profileName]?.aws_account_id) { + accountId = profiles[profileName].aws_account_id; + } + const credentials = { + accessKeyId: data.AccessKeyId, + secretAccessKey: data.SecretAccessKey, + ...(data.SessionToken && { sessionToken: data.SessionToken }), + ...(data.Expiration && { expiration: new Date(data.Expiration) }), + ...(data.CredentialScope && { credentialScope: data.CredentialScope }), + ...(accountId && { accountId }), + }; + client.setCredentialFeature(credentials, "CREDENTIALS_PROCESS", "w"); + return credentials; +}; + +const resolveProcessCredentials = async (profileName, profiles, logger) => { + const profile = profiles[profileName]; + if (profiles[profileName]) { + const credentialProcess = profile["credential_process"]; + if (credentialProcess !== undefined) { + const execPromise = node_util.promisify(sharedIniFileLoader.externalDataInterceptor?.getTokenRecord?.().exec ?? node_child_process.exec); + try { + const { stdout } = await execPromise(credentialProcess); + let data; + try { + data = JSON.parse(stdout.trim()); + } + catch { + throw Error(`Profile ${profileName} credential_process returned invalid JSON.`); + } + return getValidatedProcessCredentials(profileName, data, profiles); + } + catch (error) { + throw new propertyProvider.CredentialsProviderError(error.message, { logger }); + } + } + else { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger }); + } + } + else { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, { + logger, + }); + } +}; + +const fromProcess = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-process - fromProcess"); + const profiles = await sharedIniFileLoader.parseKnownFiles(init); + return resolveProcessCredentials(sharedIniFileLoader.getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }), profiles, init.logger); +}; + +exports.fromProcess = fromProcess; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/ProcessCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/ProcessCredentials.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/ProcessCredentials.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/fromProcess.js b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/fromProcess.js new file mode 100644 index 0000000..9e1e800 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/fromProcess.js @@ -0,0 +1,9 @@ +import { getProfileName, parseKnownFiles } from "@smithy/shared-ini-file-loader"; +import { resolveProcessCredentials } from "./resolveProcessCredentials"; +export const fromProcess = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-process - fromProcess"); + const profiles = await parseKnownFiles(init); + return resolveProcessCredentials(getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }), profiles, init.logger); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js new file mode 100644 index 0000000..caa0dd1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js @@ -0,0 +1,30 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +export const getValidatedProcessCredentials = (profileName, data, profiles) => { + if (data.Version !== 1) { + throw Error(`Profile ${profileName} credential_process did not return Version 1.`); + } + if (data.AccessKeyId === undefined || data.SecretAccessKey === undefined) { + throw Error(`Profile ${profileName} credential_process returned invalid credentials.`); + } + if (data.Expiration) { + const currentTime = new Date(); + const expireTime = new Date(data.Expiration); + if (expireTime < currentTime) { + throw Error(`Profile ${profileName} credential_process returned expired credentials.`); + } + } + let accountId = data.AccountId; + if (!accountId && profiles?.[profileName]?.aws_account_id) { + accountId = profiles[profileName].aws_account_id; + } + const credentials = { + accessKeyId: data.AccessKeyId, + secretAccessKey: data.SecretAccessKey, + ...(data.SessionToken && { sessionToken: data.SessionToken }), + ...(data.Expiration && { expiration: new Date(data.Expiration) }), + ...(data.CredentialScope && { credentialScope: data.CredentialScope }), + ...(accountId && { accountId }), + }; + setCredentialFeature(credentials, "CREDENTIALS_PROCESS", "w"); + return credentials; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/index.js b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/index.js new file mode 100644 index 0000000..b921d35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/index.js @@ -0,0 +1 @@ +export * from "./fromProcess"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js new file mode 100644 index 0000000..d3bc161 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-es/resolveProcessCredentials.js @@ -0,0 +1,36 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { externalDataInterceptor } from "@smithy/shared-ini-file-loader"; +import { exec } from "node:child_process"; +import { promisify } from "node:util"; +import { getValidatedProcessCredentials } from "./getValidatedProcessCredentials"; +export const resolveProcessCredentials = async (profileName, profiles, logger) => { + const profile = profiles[profileName]; + if (profiles[profileName]) { + const credentialProcess = profile["credential_process"]; + if (credentialProcess !== undefined) { + const execPromise = promisify(externalDataInterceptor?.getTokenRecord?.().exec ?? exec); + try { + const { stdout } = await execPromise(credentialProcess); + let data; + try { + data = JSON.parse(stdout.trim()); + } + catch { + throw Error(`Profile ${profileName} credential_process returned invalid JSON.`); + } + return getValidatedProcessCredentials(profileName, data, profiles); + } + catch (error) { + throw new CredentialsProviderError(error.message, { logger }); + } + } + else { + throw new CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`, { logger }); + } + } + else { + throw new CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`, { + logger, + }); + } +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ProcessCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ProcessCredentials.d.ts new file mode 100644 index 0000000..a4e6b46 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ProcessCredentials.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export type ProcessCredentials = { + Version: number; + AccessKeyId: string; + SecretAccessKey: string; + SessionToken?: string; + Expiration?: number; + CredentialScope?: string; + AccountId?: string; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/fromProcess.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/fromProcess.d.ts new file mode 100644 index 0000000..ec73f39 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/fromProcess.d.ts @@ -0,0 +1,14 @@ +import type { CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +/** + * @internal + */ +export interface FromProcessInit extends SourceProfileInit, CredentialProviderOptions { +} +/** + * @internal + * + * Creates a credential provider that will read from a credential_process specified + * in ini files. + */ +export declare const fromProcess: (init?: FromProcessInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/getValidatedProcessCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/getValidatedProcessCredentials.d.ts new file mode 100644 index 0000000..d3faa05 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/getValidatedProcessCredentials.d.ts @@ -0,0 +1,6 @@ +import type { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import type { ProcessCredentials } from "./ProcessCredentials"; +/** + * @internal + */ +export declare const getValidatedProcessCredentials: (profileName: string, data: ProcessCredentials, profiles: ParsedIniData) => AwsCredentialIdentity; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/index.d.ts new file mode 100644 index 0000000..adad939 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./fromProcess"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/resolveProcessCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/resolveProcessCredentials.d.ts new file mode 100644 index 0000000..cd4b76f --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/resolveProcessCredentials.d.ts @@ -0,0 +1,5 @@ +import type { AwsCredentialIdentity, Logger, ParsedIniData } from "@smithy/types"; +/** + * @internal + */ +export declare const resolveProcessCredentials: (profileName: string, profiles: ParsedIniData, logger?: Logger) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/ProcessCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/ProcessCredentials.d.ts new file mode 100644 index 0000000..45acf5e --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/ProcessCredentials.d.ts @@ -0,0 +1,9 @@ +export type ProcessCredentials = { + Version: number; + AccessKeyId: string; + SecretAccessKey: string; + SessionToken?: string; + Expiration?: number; + CredentialScope?: string; + AccountId?: string; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/fromProcess.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/fromProcess.d.ts new file mode 100644 index 0000000..8e39656 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/fromProcess.d.ts @@ -0,0 +1,11 @@ +import { + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +export interface FromProcessInit + extends SourceProfileInit, + CredentialProviderOptions {} +export declare const fromProcess: ( + init?: FromProcessInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/getValidatedProcessCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/getValidatedProcessCredentials.d.ts new file mode 100644 index 0000000..f44c81c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/getValidatedProcessCredentials.d.ts @@ -0,0 +1,7 @@ +import { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; +import { ProcessCredentials } from "./ProcessCredentials"; +export declare const getValidatedProcessCredentials: ( + profileName: string, + data: ProcessCredentials, + profiles: ParsedIniData +) => AwsCredentialIdentity; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..b921d35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./fromProcess"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/resolveProcessCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/resolveProcessCredentials.d.ts new file mode 100644 index 0000000..a204db4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/dist-types/ts3.4/resolveProcessCredentials.d.ts @@ -0,0 +1,6 @@ +import { AwsCredentialIdentity, Logger, ParsedIniData } from "@smithy/types"; +export declare const resolveProcessCredentials: ( + profileName: string, + profiles: ParsedIniData, + logger?: Logger +) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-process/package.json b/bff/node_modules/@aws-sdk/credential-provider-process/package.json new file mode 100644 index 0000000..45c109f --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-process/package.json @@ -0,0 +1,64 @@ +{ + "name": "@aws-sdk/credential-provider-process", + "version": "3.972.24", + "description": "AWS credential provider that sources credential_process from ~/.aws/credentials and ~/.aws/config", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-process", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-process", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-process" + } +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/LICENSE b/bff/node_modules/@aws-sdk/credential-provider-sso/LICENSE new file mode 100644 index 0000000..f9a6673 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/README.md b/bff/node_modules/@aws-sdk/credential-provider-sso/README.md new file mode 100644 index 0000000..f5b7623 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/README.md @@ -0,0 +1,20 @@ +# @aws-sdk/credential-provider-sso + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-sso/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-sso) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-sso.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-sso) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- + +Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js new file mode 100644 index 0000000..85d3612 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js @@ -0,0 +1,192 @@ +'use strict'; + +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var client = require('@aws-sdk/core/client'); +var tokenProviders = require('@aws-sdk/token-providers'); + +const isSsoProfile = (arg) => arg && + (typeof arg.sso_start_url === "string" || + typeof arg.sso_account_id === "string" || + typeof arg.sso_session === "string" || + typeof arg.sso_region === "string" || + typeof arg.sso_role_name === "string"); + +const SHOULD_FAIL_CREDENTIAL_CHAIN = false; +const resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger, }) => { + let token; + const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`; + if (ssoSession) { + try { + const _token = await tokenProviders.fromSso({ + profile, + filepath, + configFilepath, + ignoreCache, + })(); + token = { + accessToken: _token.token, + expiresAt: new Date(_token.expiration).toISOString(), + }; + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(e.message, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + } + else { + try { + token = await sharedIniFileLoader.getSSOTokenFromFile(ssoStartUrl); + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + } + if (new Date(token.expiresAt).getTime() - Date.now() <= 0) { + throw new propertyProvider.CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const { accessToken } = token; + const { SSOClient, GetRoleCredentialsCommand } = await Promise.resolve().then(function () { return require('./loadSso-BKDNrsal.js'); }); + const sso = ssoClient || + new SSOClient(Object.assign({}, clientConfig ?? {}, { + logger: clientConfig?.logger ?? callerClientConfig?.logger ?? parentClientConfig?.logger, + region: clientConfig?.region ?? ssoRegion, + userAgentAppId: clientConfig?.userAgentAppId ?? callerClientConfig?.userAgentAppId ?? parentClientConfig?.userAgentAppId, + })); + let ssoResp; + try { + ssoResp = await sso.send(new GetRoleCredentialsCommand({ + accountId: ssoAccountId, + roleName: ssoRoleName, + accessToken, + })); + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(e, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {}, } = ssoResp; + if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) { + throw new propertyProvider.CredentialsProviderError("SSO returns an invalid temporary credential.", { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const credentials = { + accessKeyId, + secretAccessKey, + sessionToken, + expiration: new Date(expiration), + ...(credentialScope && { credentialScope }), + ...(accountId && { accountId }), + }; + if (ssoSession) { + client.setCredentialFeature(credentials, "CREDENTIALS_SSO", "s"); + } + else { + client.setCredentialFeature(credentials, "CREDENTIALS_SSO_LEGACY", "u"); + } + return credentials; +}; + +const validateSsoProfile = (profile, logger) => { + const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile; + if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) { + throw new propertyProvider.CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", ` + + `"sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger }); + } + return profile; +}; + +const fromSSO = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-sso - fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init; + const { ssoClient } = init; + const profileName = sharedIniFileLoader.getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }); + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + const profiles = await sharedIniFileLoader.parseKnownFiles(init); + const profile = profiles[profileName]; + if (!profile) { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init.logger }); + } + if (!isSsoProfile(profile)) { + throw new propertyProvider.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, { + logger: init.logger, + }); + } + if (profile?.sso_session) { + const ssoSessions = await sharedIniFileLoader.loadSsoSessionData(init); + const session = ssoSessions[profile.sso_session]; + const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`; + if (ssoRegion && ssoRegion !== session.sso_region) { + throw new propertyProvider.CredentialsProviderError(`Conflicting SSO region` + conflictMsg, { + tryNextLink: false, + logger: init.logger, + }); + } + if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) { + throw new propertyProvider.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, { + tryNextLink: false, + logger: init.logger, + }); + } + profile.sso_region = session.sso_region; + profile.sso_start_url = session.sso_start_url; + } + const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile, init.logger); + return resolveSSOCredentials({ + ssoStartUrl: sso_start_url, + ssoSession: sso_session, + ssoAccountId: sso_account_id, + ssoRegion: sso_region, + ssoRoleName: sso_role_name, + ssoClient: ssoClient, + clientConfig: init.clientConfig, + parentClientConfig: init.parentClientConfig, + callerClientConfig: init.callerClientConfig, + profile: profileName, + filepath: init.filepath, + configFilepath: init.configFilepath, + ignoreCache: init.ignoreCache, + logger: init.logger, + }); + } + else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) { + throw new propertyProvider.CredentialsProviderError("Incomplete configuration. The fromSSO() argument hash must include " + + '"ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"', { tryNextLink: false, logger: init.logger }); + } + else { + return resolveSSOCredentials({ + ssoStartUrl, + ssoSession, + ssoAccountId, + ssoRegion, + ssoRoleName, + ssoClient, + clientConfig: init.clientConfig, + parentClientConfig: init.parentClientConfig, + callerClientConfig: init.callerClientConfig, + profile: profileName, + filepath: init.filepath, + configFilepath: init.configFilepath, + ignoreCache: init.ignoreCache, + logger: init.logger, + }); + } +}; + +exports.fromSSO = fromSSO; +exports.isSsoProfile = isSsoProfile; +exports.validateSsoProfile = validateSsoProfile; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BKDNrsal.js b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BKDNrsal.js new file mode 100644 index 0000000..f2e8e97 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BKDNrsal.js @@ -0,0 +1,8 @@ +'use strict'; + +var sso = require('@aws-sdk/nested-clients/sso'); + + + +exports.GetRoleCredentialsCommand = sso.GetRoleCredentialsCommand; +exports.SSOClient = sso.SSOClient; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/fromSSO.js b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/fromSSO.js new file mode 100644 index 0000000..60daab1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/fromSSO.js @@ -0,0 +1,83 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName, loadSsoSessionData, parseKnownFiles } from "@smithy/shared-ini-file-loader"; +import { isSsoProfile } from "./isSsoProfile"; +import { resolveSSOCredentials } from "./resolveSSOCredentials"; +import { validateSsoProfile } from "./validateSsoProfile"; +export const fromSSO = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/credential-provider-sso - fromSSO"); + const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init; + const { ssoClient } = init; + const profileName = getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }); + if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) { + const profiles = await parseKnownFiles(init); + const profile = profiles[profileName]; + if (!profile) { + throw new CredentialsProviderError(`Profile ${profileName} was not found.`, { logger: init.logger }); + } + if (!isSsoProfile(profile)) { + throw new CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`, { + logger: init.logger, + }); + } + if (profile?.sso_session) { + const ssoSessions = await loadSsoSessionData(init); + const session = ssoSessions[profile.sso_session]; + const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`; + if (ssoRegion && ssoRegion !== session.sso_region) { + throw new CredentialsProviderError(`Conflicting SSO region` + conflictMsg, { + tryNextLink: false, + logger: init.logger, + }); + } + if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) { + throw new CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, { + tryNextLink: false, + logger: init.logger, + }); + } + profile.sso_region = session.sso_region; + profile.sso_start_url = session.sso_start_url; + } + const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile, init.logger); + return resolveSSOCredentials({ + ssoStartUrl: sso_start_url, + ssoSession: sso_session, + ssoAccountId: sso_account_id, + ssoRegion: sso_region, + ssoRoleName: sso_role_name, + ssoClient: ssoClient, + clientConfig: init.clientConfig, + parentClientConfig: init.parentClientConfig, + callerClientConfig: init.callerClientConfig, + profile: profileName, + filepath: init.filepath, + configFilepath: init.configFilepath, + ignoreCache: init.ignoreCache, + logger: init.logger, + }); + } + else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) { + throw new CredentialsProviderError("Incomplete configuration. The fromSSO() argument hash must include " + + '"ssoStartUrl", "ssoAccountId", "ssoRegion", "ssoRoleName"', { tryNextLink: false, logger: init.logger }); + } + else { + return resolveSSOCredentials({ + ssoStartUrl, + ssoSession, + ssoAccountId, + ssoRegion, + ssoRoleName, + ssoClient, + clientConfig: init.clientConfig, + parentClientConfig: init.parentClientConfig, + callerClientConfig: init.callerClientConfig, + profile: profileName, + filepath: init.filepath, + configFilepath: init.configFilepath, + ignoreCache: init.ignoreCache, + logger: init.logger, + }); + } +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/index.js b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/index.js new file mode 100644 index 0000000..7215fb6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/index.js @@ -0,0 +1,4 @@ +export * from "./fromSSO"; +export * from "./isSsoProfile"; +export * from "./types"; +export * from "./validateSsoProfile"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/isSsoProfile.js b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/isSsoProfile.js new file mode 100644 index 0000000..e655438 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/isSsoProfile.js @@ -0,0 +1,6 @@ +export const isSsoProfile = (arg) => arg && + (typeof arg.sso_start_url === "string" || + typeof arg.sso_account_id === "string" || + typeof arg.sso_session === "string" || + typeof arg.sso_region === "string" || + typeof arg.sso_role_name === "string"); diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/loadSso.js b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/loadSso.js new file mode 100644 index 0000000..67d9d9c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/loadSso.js @@ -0,0 +1,2 @@ +import { GetRoleCredentialsCommand, SSOClient } from "@aws-sdk/nested-clients/sso"; +export { GetRoleCredentialsCommand, SSOClient }; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js new file mode 100644 index 0000000..71b54b8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js @@ -0,0 +1,90 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { fromSso as getSsoTokenProvider } from "@aws-sdk/token-providers"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getSSOTokenFromFile } from "@smithy/shared-ini-file-loader"; +const SHOULD_FAIL_CREDENTIAL_CHAIN = false; +export const resolveSSOCredentials = async ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger, }) => { + let token; + const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`; + if (ssoSession) { + try { + const _token = await getSsoTokenProvider({ + profile, + filepath, + configFilepath, + ignoreCache, + })(); + token = { + accessToken: _token.token, + expiresAt: new Date(_token.expiration).toISOString(), + }; + } + catch (e) { + throw new CredentialsProviderError(e.message, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + } + else { + try { + token = await getSSOTokenFromFile(ssoStartUrl); + } + catch (e) { + throw new CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + } + if (new Date(token.expiresAt).getTime() - Date.now() <= 0) { + throw new CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const { accessToken } = token; + const { SSOClient, GetRoleCredentialsCommand } = await import("./loadSso"); + const sso = ssoClient || + new SSOClient(Object.assign({}, clientConfig ?? {}, { + logger: clientConfig?.logger ?? callerClientConfig?.logger ?? parentClientConfig?.logger, + region: clientConfig?.region ?? ssoRegion, + userAgentAppId: clientConfig?.userAgentAppId ?? callerClientConfig?.userAgentAppId ?? parentClientConfig?.userAgentAppId, + })); + let ssoResp; + try { + ssoResp = await sso.send(new GetRoleCredentialsCommand({ + accountId: ssoAccountId, + roleName: ssoRoleName, + accessToken, + })); + } + catch (e) { + throw new CredentialsProviderError(e, { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope, accountId } = {}, } = ssoResp; + if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) { + throw new CredentialsProviderError("SSO returns an invalid temporary credential.", { + tryNextLink: SHOULD_FAIL_CREDENTIAL_CHAIN, + logger, + }); + } + const credentials = { + accessKeyId, + secretAccessKey, + sessionToken, + expiration: new Date(expiration), + ...(credentialScope && { credentialScope }), + ...(accountId && { accountId }), + }; + if (ssoSession) { + setCredentialFeature(credentials, "CREDENTIALS_SSO", "s"); + } + else { + setCredentialFeature(credentials, "CREDENTIALS_SSO_LEGACY", "u"); + } + return credentials; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/types.js b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/validateSsoProfile.js b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/validateSsoProfile.js new file mode 100644 index 0000000..94174b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-es/validateSsoProfile.js @@ -0,0 +1,9 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +export const validateSsoProfile = (profile, logger) => { + const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile; + if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) { + throw new CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters "sso_account_id", ` + + `"sso_region", "sso_role_name", "sso_start_url". Got ${Object.keys(profile).join(", ")}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, { tryNextLink: false, logger }); + } + return profile; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/fromSSO.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/fromSSO.d.ts new file mode 100644 index 0000000..76747b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/fromSSO.d.ts @@ -0,0 +1,69 @@ +import type { AwsIdentityProperties, CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import type { SSOClient, SSOClientConfig } from "./loadSso"; +/** + * @internal + */ +export interface SsoCredentialsParameters { + /** + * The URL to the AWS SSO service. + */ + ssoStartUrl: string; + /** + * SSO session identifier. + * Presence implies usage of the SSOTokenProvider. + */ + ssoSession?: string; + /** + * The ID of the AWS account to use for temporary credentials. + */ + ssoAccountId: string; + /** + * The AWS region to use for temporary credentials. + */ + ssoRegion: string; + /** + * The name of the AWS role to assume. + */ + ssoRoleName: string; +} +/** + * @internal + */ +export interface FromSSOInit extends SourceProfileInit, CredentialProviderOptions { + ssoClient?: SSOClient; + clientConfig?: SSOClientConfig; + callerClientConfig?: AwsIdentityProperties["callerClientConfig"]; +} +/** + * @internal + * + * Creates a credential provider that will read from a credential_process specified + * in ini files. + * + * The SSO credential provider must support both + * + * 1. the legacy profile format, + * @example + * ``` + * [profile sample-profile] + * sso_account_id = 012345678901 + * sso_region = us-east-1 + * sso_role_name = SampleRole + * sso_start_url = https://www.....com/start + * ``` + * + * 2. and the profile format for SSO Token Providers. + * @example + * ``` + * [profile sso-profile] + * sso_session = dev + * sso_account_id = 012345678901 + * sso_role_name = SampleRole + * + * [sso-session dev] + * sso_region = us-east-1 + * sso_start_url = https://www.....com/start + * ``` + */ +export declare const fromSSO: (init?: FromSSOInit & Partial) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/index.d.ts new file mode 100644 index 0000000..d851c15 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/index.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export * from "./fromSSO"; +/** + * @internal + */ +export * from "./isSsoProfile"; +/** + * @internal + */ +export * from "./types"; +/** + * @internal + */ +export * from "./validateSsoProfile"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/isSsoProfile.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/isSsoProfile.d.ts new file mode 100644 index 0000000..f627420 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/isSsoProfile.d.ts @@ -0,0 +1,6 @@ +import type { Profile } from "@smithy/types"; +import type { SsoProfile } from "./types"; +/** + * @internal + */ +export declare const isSsoProfile: (arg: Profile) => arg is Partial; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/loadSso.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/loadSso.d.ts new file mode 100644 index 0000000..182bec1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/loadSso.d.ts @@ -0,0 +1,3 @@ +import { GetRoleCredentialsCommand, SSOClient } from "@aws-sdk/nested-clients/sso"; +export { GetRoleCredentialsCommand, SSOClient }; +export type { SSOClientConfig, GetRoleCredentialsCommandOutput } from "@aws-sdk/nested-clients/sso"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/resolveSSOCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/resolveSSOCredentials.d.ts new file mode 100644 index 0000000..f395deb --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/resolveSSOCredentials.d.ts @@ -0,0 +1,6 @@ +import type { AwsCredentialIdentity } from "@smithy/types"; +import type { FromSSOInit, SsoCredentialsParameters } from "./fromSSO"; +/** + * @internal + */ +export declare const resolveSSOCredentials: ({ ssoStartUrl, ssoSession, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, clientConfig, parentClientConfig, callerClientConfig, profile, filepath, configFilepath, ignoreCache, logger, }: FromSSOInit & SsoCredentialsParameters) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/fromSSO.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/fromSSO.d.ts new file mode 100644 index 0000000..39b0d5a --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/fromSSO.d.ts @@ -0,0 +1,24 @@ +import { + AwsIdentityProperties, + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import { SSOClient, SSOClientConfig } from "./loadSso"; +export interface SsoCredentialsParameters { + ssoStartUrl: string; + ssoSession?: string; + ssoAccountId: string; + ssoRegion: string; + ssoRoleName: string; +} +export interface FromSSOInit + extends SourceProfileInit, + CredentialProviderOptions { + ssoClient?: SSOClient; + clientConfig?: SSOClientConfig; + callerClientConfig?: AwsIdentityProperties["callerClientConfig"]; +} +export declare const fromSSO: ( + init?: FromSSOInit & Partial +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..7215fb6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +export * from "./fromSSO"; +export * from "./isSsoProfile"; +export * from "./types"; +export * from "./validateSsoProfile"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/isSsoProfile.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/isSsoProfile.d.ts new file mode 100644 index 0000000..b4e8bdd --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/isSsoProfile.d.ts @@ -0,0 +1,3 @@ +import { Profile } from "@smithy/types"; +import { SsoProfile } from "./types"; +export declare const isSsoProfile: (arg: Profile) => arg is Partial; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/loadSso.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/loadSso.d.ts new file mode 100644 index 0000000..749ebc1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/loadSso.d.ts @@ -0,0 +1,9 @@ +import { + GetRoleCredentialsCommand, + SSOClient, +} from "@aws-sdk/nested-clients/sso"; +export { GetRoleCredentialsCommand, SSOClient }; +export { + SSOClientConfig, + GetRoleCredentialsCommandOutput, +} from "@aws-sdk/nested-clients/sso"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/resolveSSOCredentials.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/resolveSSOCredentials.d.ts new file mode 100644 index 0000000..044a759 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/resolveSSOCredentials.d.ts @@ -0,0 +1,18 @@ +import { AwsCredentialIdentity } from "@smithy/types"; +import { FromSSOInit, SsoCredentialsParameters } from "./fromSSO"; +export declare const resolveSSOCredentials: ({ + ssoStartUrl, + ssoSession, + ssoAccountId, + ssoRegion, + ssoRoleName, + ssoClient, + clientConfig, + parentClientConfig, + callerClientConfig, + profile, + filepath, + configFilepath, + ignoreCache, + logger, +}: FromSSOInit & SsoCredentialsParameters) => Promise; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/types.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..4a3986b --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/types.d.ts @@ -0,0 +1,14 @@ +import { Profile } from "@smithy/types"; +export interface SSOToken { + accessToken: string; + expiresAt: string; + region?: string; + startUrl?: string; +} +export interface SsoProfile extends Profile { + sso_start_url: string; + sso_session?: string; + sso_account_id: string; + sso_region: string; + sso_role_name: string; +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/validateSsoProfile.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/validateSsoProfile.d.ts new file mode 100644 index 0000000..6572fc4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/ts3.4/validateSsoProfile.d.ts @@ -0,0 +1,6 @@ +import { Logger } from "@smithy/types"; +import { SsoProfile } from "./types"; +export declare const validateSsoProfile: ( + profile: Partial, + logger?: Logger +) => SsoProfile; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/types.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/types.d.ts new file mode 100644 index 0000000..632bb16 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/types.d.ts @@ -0,0 +1,22 @@ +import type { Profile } from "@smithy/types"; +/** + * @internal + * + * Cached SSO token retrieved from SSO login flow. + */ +export interface SSOToken { + accessToken: string; + expiresAt: string; + region?: string; + startUrl?: string; +} +/** + * @internal + */ +export interface SsoProfile extends Profile { + sso_start_url: string; + sso_session?: string; + sso_account_id: string; + sso_region: string; + sso_role_name: string; +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/validateSsoProfile.d.ts b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/validateSsoProfile.d.ts new file mode 100644 index 0000000..9df0144 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/dist-types/validateSsoProfile.d.ts @@ -0,0 +1,6 @@ +import type { Logger } from "@smithy/types"; +import type { SsoProfile } from "./types"; +/** + * @internal + */ +export declare const validateSsoProfile: (profile: Partial, logger?: Logger) => SsoProfile; diff --git a/bff/node_modules/@aws-sdk/credential-provider-sso/package.json b/bff/node_modules/@aws-sdk/credential-provider-sso/package.json new file mode 100644 index 0000000..127956f --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-sso/package.json @@ -0,0 +1,66 @@ +{ + "name": "@aws-sdk/credential-provider-sso", + "version": "3.972.28", + "description": "AWS credential provider that exchanges a resolved SSO login token file for temporary AWS credentials", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-sso", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/token-providers": "3.1021.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-sso", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-sso" + } +} diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/LICENSE b/bff/node_modules/@aws-sdk/credential-provider-web-identity/LICENSE new file mode 100644 index 0000000..f9a6673 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/README.md b/bff/node_modules/@aws-sdk/credential-provider-web-identity/README.md new file mode 100644 index 0000000..98f74c9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/README.md @@ -0,0 +1,20 @@ +# @aws-sdk/credential-provider-web-identity + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/credential-provider-web-identity/latest.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/credential-provider-web-identity.svg)](https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- + +Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) +instead. diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js new file mode 100644 index 0000000..fe46312 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromTokenFile = void 0; +const client_1 = require("@aws-sdk/core/client"); +const property_provider_1 = require("@smithy/property-provider"); +const shared_ini_file_loader_1 = require("@smithy/shared-ini-file-loader"); +const node_fs_1 = require("node:fs"); +const fromWebToken_1 = require("./fromWebToken"); +const ENV_TOKEN_FILE = "AWS_WEB_IDENTITY_TOKEN_FILE"; +const ENV_ROLE_ARN = "AWS_ROLE_ARN"; +const ENV_ROLE_SESSION_NAME = "AWS_ROLE_SESSION_NAME"; +const fromTokenFile = (init = {}) => async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-web-identity - fromTokenFile"); + const webIdentityTokenFile = init?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE]; + const roleArn = init?.roleArn ?? process.env[ENV_ROLE_ARN]; + const roleSessionName = init?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME]; + if (!webIdentityTokenFile || !roleArn) { + throw new property_provider_1.CredentialsProviderError("Web identity configuration not specified", { + logger: init.logger, + }); + } + const credentials = await (0, fromWebToken_1.fromWebToken)({ + ...init, + webIdentityToken: shared_ini_file_loader_1.externalDataInterceptor?.getTokenRecord?.()[webIdentityTokenFile] ?? + (0, node_fs_1.readFileSync)(webIdentityTokenFile, { encoding: "ascii" }), + roleArn, + roleSessionName, + })(awsIdentityProperties); + if (webIdentityTokenFile === process.env[ENV_TOKEN_FILE]) { + (0, client_1.setCredentialFeature)(credentials, "CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN", "h"); + } + return credentials; +}; +exports.fromTokenFile = fromTokenFile; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js new file mode 100644 index 0000000..b92af29 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js @@ -0,0 +1,62 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromWebToken = void 0; +const fromWebToken = (init) => async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-web-identity - fromWebToken"); + const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init; + let { roleAssumerWithWebIdentity } = init; + if (!roleAssumerWithWebIdentity) { + const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar(require("@aws-sdk/nested-clients/sts"))); + roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({ + ...init.clientConfig, + credentialProviderLogger: init.logger, + parentClientConfig: { + ...awsIdentityProperties?.callerClientConfig, + ...init.parentClientConfig, + }, + }, init.clientPlugins); + } + return roleAssumerWithWebIdentity({ + RoleArn: roleArn, + RoleSessionName: roleSessionName ?? `aws-sdk-js-session-${Date.now()}`, + WebIdentityToken: webIdentityToken, + ProviderId: providerId, + PolicyArns: policyArns, + Policy: policy, + DurationSeconds: durationSeconds, + }); +}; +exports.fromWebToken = fromWebToken; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js new file mode 100644 index 0000000..d4674e7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js @@ -0,0 +1,27 @@ +'use strict'; + +var fromTokenFile = require('./fromTokenFile'); +var fromWebToken = require('./fromWebToken'); + + + +Object.prototype.hasOwnProperty.call(fromTokenFile, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: fromTokenFile['__proto__'] + }); + +Object.keys(fromTokenFile).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = fromTokenFile[k]; +}); +Object.prototype.hasOwnProperty.call(fromWebToken, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: fromWebToken['__proto__'] + }); + +Object.keys(fromWebToken).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = fromWebToken[k]; +}); diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js new file mode 100644 index 0000000..a624407 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js @@ -0,0 +1,30 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { externalDataInterceptor } from "@smithy/shared-ini-file-loader"; +import { readFileSync } from "node:fs"; +import { fromWebToken } from "./fromWebToken"; +const ENV_TOKEN_FILE = "AWS_WEB_IDENTITY_TOKEN_FILE"; +const ENV_ROLE_ARN = "AWS_ROLE_ARN"; +const ENV_ROLE_SESSION_NAME = "AWS_ROLE_SESSION_NAME"; +export const fromTokenFile = (init = {}) => async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-web-identity - fromTokenFile"); + const webIdentityTokenFile = init?.webIdentityTokenFile ?? process.env[ENV_TOKEN_FILE]; + const roleArn = init?.roleArn ?? process.env[ENV_ROLE_ARN]; + const roleSessionName = init?.roleSessionName ?? process.env[ENV_ROLE_SESSION_NAME]; + if (!webIdentityTokenFile || !roleArn) { + throw new CredentialsProviderError("Web identity configuration not specified", { + logger: init.logger, + }); + } + const credentials = await fromWebToken({ + ...init, + webIdentityToken: externalDataInterceptor?.getTokenRecord?.()[webIdentityTokenFile] ?? + readFileSync(webIdentityTokenFile, { encoding: "ascii" }), + roleArn, + roleSessionName, + })(awsIdentityProperties); + if (webIdentityTokenFile === process.env[ENV_TOKEN_FILE]) { + setCredentialFeature(credentials, "CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN", "h"); + } + return credentials; +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromWebToken.js b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromWebToken.js new file mode 100644 index 0000000..268e0aa --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromWebToken.js @@ -0,0 +1,25 @@ +export const fromWebToken = (init) => async (awsIdentityProperties) => { + init.logger?.debug("@aws-sdk/credential-provider-web-identity - fromWebToken"); + const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init; + let { roleAssumerWithWebIdentity } = init; + if (!roleAssumerWithWebIdentity) { + const { getDefaultRoleAssumerWithWebIdentity } = await import("@aws-sdk/nested-clients/sts"); + roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({ + ...init.clientConfig, + credentialProviderLogger: init.logger, + parentClientConfig: { + ...awsIdentityProperties?.callerClientConfig, + ...init.parentClientConfig, + }, + }, init.clientPlugins); + } + return roleAssumerWithWebIdentity({ + RoleArn: roleArn, + RoleSessionName: roleSessionName ?? `aws-sdk-js-session-${Date.now()}`, + WebIdentityToken: webIdentityToken, + ProviderId: providerId, + PolicyArns: policyArns, + Policy: policy, + DurationSeconds: durationSeconds, + }); +}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/index.js b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/index.js new file mode 100644 index 0000000..0e900c0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./fromTokenFile"; +export * from "./fromWebToken"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromTokenFile.d.ts b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromTokenFile.d.ts new file mode 100644 index 0000000..6aa9a14 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromTokenFile.d.ts @@ -0,0 +1,17 @@ +import type { CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { FromWebTokenInit } from "./fromWebToken"; +/** + * @public + */ +export interface FromTokenFileInit extends Partial>, CredentialProviderOptions { + /** + * File location of where the `OIDC` token is stored. + */ + webIdentityTokenFile?: string; +} +/** + * @internal + * + * Represents OIDC credentials from a file on disk. + */ +export declare const fromTokenFile: (init?: FromTokenFileInit) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromWebToken.d.ts b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromWebToken.d.ts new file mode 100644 index 0000000..6b5e066 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/fromWebToken.d.ts @@ -0,0 +1,145 @@ +import type { CredentialProviderOptions, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, Pluggable } from "@smithy/types"; +/** + * @public + */ +export interface AssumeRoleWithWebIdentityParams { + /** + *

The Amazon Resource Name (ARN) of the role that the caller is assuming.

+ */ + RoleArn: string; + /** + *

An identifier for the assumed role session. Typically, you pass the name or identifier + * that is associated with the user who is using your application. That way, the temporary + * security credentials that your application will use are associated with that user. This + * session name is included as part of the ARN and assumed role ID in the + * AssumedRoleUser response element.

+ *

The regex used to validate this parameter is a string of characters + * consisting of upper- and lower-case alphanumeric characters with no spaces. You can + * also include underscores or any of the following characters: =,.@-

+ */ + RoleSessionName: string; + /** + *

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity + * provider. Your application must get this token by authenticating the user who is using your + * application with a web identity provider before the application makes an + * AssumeRoleWithWebIdentity call.

+ */ + WebIdentityToken: string; + /** + *

The fully qualified host component of the domain name of the identity provider.

+ *

Specify this value only for OAuth 2.0 access tokens. Currently + * www.amazon.com and graph.facebook.com are the only supported + * identity providers for OAuth 2.0 access tokens. Do not include URL schemes and port + * numbers.

+ *

Do not specify this value for OpenID Connect ID tokens.

+ */ + ProviderId?: string; + /** + *

The Amazon Resource Names (ARNs) of the IAM managed policies that you want to use as + * managed session policies. The policies must exist in the same account as the role.

+ *

This parameter is optional. You can provide up to 10 managed policy ARNs. However, the + * plain text that you use for both inline and managed session policies can't exceed 2,048 + * characters. For more information about ARNs, see Amazon Resource Names (ARNs) and AWS + * Service Namespaces in the AWS General Reference.

+ * + *

An AWS conversion compresses the passed session policies and session tags into a + * packed binary format that has a separate limit. Your request can fail for this limit + * even if your plain text meets the other requirements. The PackedPolicySize + * response element indicates by percentage how close the policies and tags for your + * request are to the upper size limit. + *

+ *
+ * + *

Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent AWS API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ */ + PolicyArns?: { + arn?: string; + }[]; + /** + *

An IAM policy in JSON format that you want to use as an inline session policy.

+ *

This parameter is optional. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent AWS API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

The plain text that you use for both inline and managed session policies can't exceed + * 2,048 characters. The JSON policy characters can be any ASCII character from the space + * character to the end of the valid character list (\u0020 through \u00FF). It can also + * include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) + * characters.

+ * + *

An AWS conversion compresses the passed session policies and session tags into a + * packed binary format that has a separate limit. Your request can fail for this limit + * even if your plain text meets the other requirements. The PackedPolicySize + * response element indicates by percentage how close the policies and tags for your + * request are to the upper size limit. + *

+ *
+ */ + Policy?: string; + /** + *

The duration, in seconds, of the role session. The value can range from 900 seconds (15 + * minutes) up to the maximum session duration setting for the role. This setting can have a + * value from 1 hour to 12 hours. If you specify a value higher than this setting, the + * operation fails. For example, if you specify a session duration of 12 hours, but your + * administrator set the maximum session duration to 6 hours, your operation fails. To learn + * how to view the maximum value for your role, see View the + * Maximum Session Duration Setting for a Role in the + * IAM User Guide.

+ *

By default, the value is set to 3600 seconds.

+ * + *

The DurationSeconds parameter is separate from the duration of a console + * session that you might request using the returned credentials. The request to the + * federation endpoint for a console sign-in token takes a SessionDuration + * parameter that specifies the maximum length of the console session. For more + * information, see Creating a URL + * that Enables Federated Users to Access the AWS Management Console in the + * IAM User Guide.

+ *
+ */ + DurationSeconds?: number; +} +type LowerCaseKey = { + [K in keyof T as `${Uncapitalize}`]: T[K]; +}; +/** + * @public + */ +export interface FromWebTokenInit extends Omit, "roleSessionName">, CredentialProviderOptions { + /** + * The IAM session name used to distinguish sessions. + */ + roleSessionName?: string; + /** + * A function that assumes a role with web identity and returns a promise fulfilled with + * credentials for the assumed role. + * + * @param params input parameter of sts:AssumeRoleWithWebIdentity API. + */ + roleAssumerWithWebIdentity?: (params: AssumeRoleWithWebIdentityParams) => Promise; + /** + * STSClientConfig to be used for creating STS Client for assuming role. + * @internal + */ + clientConfig?: any; + /** + * @internal + */ + clientPlugins?: Pluggable[]; +} +/** + * @internal + */ +export declare const fromWebToken: (init: FromWebTokenInit) => RuntimeConfigAwsCredentialIdentityProvider; +export {}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/index.d.ts new file mode 100644 index 0000000..36c15dc --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./fromTokenFile"; +/** + * @internal + */ +export * from "./fromWebToken"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromTokenFile.d.ts b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromTokenFile.d.ts new file mode 100644 index 0000000..2db3394 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromTokenFile.d.ts @@ -0,0 +1,18 @@ +import { + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { FromWebTokenInit } from "./fromWebToken"; +export interface FromTokenFileInit + extends Partial< + Pick< + FromWebTokenInit, + Exclude + > + >, + CredentialProviderOptions { + webIdentityTokenFile?: string; +} +export declare const fromTokenFile: ( + init?: FromTokenFileInit +) => RuntimeConfigAwsCredentialIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromWebToken.d.ts b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromWebToken.d.ts new file mode 100644 index 0000000..73529a1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/fromWebToken.d.ts @@ -0,0 +1,39 @@ +import { + CredentialProviderOptions, + RuntimeConfigAwsCredentialIdentityProvider, +} from "@aws-sdk/types"; +import { AwsCredentialIdentity, Pluggable } from "@smithy/types"; +export interface AssumeRoleWithWebIdentityParams { + RoleArn: string; + RoleSessionName: string; + WebIdentityToken: string; + ProviderId?: string; + PolicyArns?: { + arn?: string; + }[]; + Policy?: string; + DurationSeconds?: number; +} +type LowerCaseKey = { + [K in keyof T as `${Uncapitalize}`]: T[K]; +}; +export interface FromWebTokenInit + extends Pick< + LowerCaseKey, + Exclude< + keyof LowerCaseKey, + "roleSessionName" + > + >, + CredentialProviderOptions { + roleSessionName?: string; + roleAssumerWithWebIdentity?: ( + params: AssumeRoleWithWebIdentityParams + ) => Promise; + clientConfig?: any; + clientPlugins?: Pluggable[]; +} +export declare const fromWebToken: ( + init: FromWebTokenInit +) => RuntimeConfigAwsCredentialIdentityProvider; +export {}; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..0e900c0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fromTokenFile"; +export * from "./fromWebToken"; diff --git a/bff/node_modules/@aws-sdk/credential-provider-web-identity/package.json b/bff/node_modules/@aws-sdk/credential-provider-web-identity/package.json new file mode 100644 index 0000000..1278886 --- /dev/null +++ b/bff/node_modules/@aws-sdk/credential-provider-web-identity/package.json @@ -0,0 +1,73 @@ +{ + "name": "@aws-sdk/credential-provider-web-identity", + "version": "3.972.28", + "description": "AWS credential provider that calls STS assumeRole for temporary AWS credentials", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-web-identity", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "browser": { + "./dist-cjs/fromTokenFile": false, + "./dist-es/fromTokenFile": false + }, + "react-native": { + "./dist-es/fromTokenFile": false, + "./dist-cjs/fromTokenFile": false + }, + "keywords": [ + "aws", + "credentials" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/credential-provider-web-identity", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/credential-provider-web-identity" + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/LICENSE b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/README.md b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/README.md new file mode 100644 index 0000000..99cd3c5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-bucket-endpoint + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-bucket-endpoint/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-bucket-endpoint) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-bucket-endpoint.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-bucket-endpoint) diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-cjs/index.js new file mode 100644 index 0000000..94ab3f7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-cjs/index.js @@ -0,0 +1,352 @@ +'use strict'; + +var utilConfigProvider = require('@smithy/util-config-provider'); +var utilArnParser = require('@aws-sdk/util-arn-parser'); +var protocolHttp = require('@smithy/protocol-http'); + +const NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME = "AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS"; +const NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME = "s3_disable_multiregion_access_points"; +const NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME, utilConfigProvider.SelectorType.ENV), + configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME, utilConfigProvider.SelectorType.CONFIG), + default: false, +}; + +const NODE_USE_ARN_REGION_ENV_NAME = "AWS_S3_USE_ARN_REGION"; +const NODE_USE_ARN_REGION_INI_NAME = "s3_use_arn_region"; +const NODE_USE_ARN_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, NODE_USE_ARN_REGION_ENV_NAME, utilConfigProvider.SelectorType.ENV), + configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, NODE_USE_ARN_REGION_INI_NAME, utilConfigProvider.SelectorType.CONFIG), + default: undefined, +}; + +const DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; +const IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; +const DOTS_PATTERN = /\.\./; +const DOT_PATTERN = /\./; +const S3_HOSTNAME_PATTERN = /^(.+\.)?s3(-fips)?(\.dualstack)?[.-]([a-z0-9-]+)\./; +const S3_US_EAST_1_ALTNAME_PATTERN = /^s3(-external-1)?\.amazonaws\.com$/; +const AWS_PARTITION_SUFFIX = "amazonaws.com"; +const isBucketNameOptions = (options) => typeof options.bucketName === "string"; +const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName); +const getRegionalSuffix = (hostname) => { + const parts = hostname.match(S3_HOSTNAME_PATTERN); + return [parts[4], hostname.replace(new RegExp(`^${parts[0]}`), "")]; +}; +const getSuffix = (hostname) => S3_US_EAST_1_ALTNAME_PATTERN.test(hostname) ? ["us-east-1", AWS_PARTITION_SUFFIX] : getRegionalSuffix(hostname); +const getSuffixForArnEndpoint = (hostname) => S3_US_EAST_1_ALTNAME_PATTERN.test(hostname) + ? [hostname.replace(`.${AWS_PARTITION_SUFFIX}`, ""), AWS_PARTITION_SUFFIX] + : getRegionalSuffix(hostname); +const validateArnEndpointOptions = (options) => { + if (options.pathStyleEndpoint) { + throw new Error("Path-style S3 endpoint is not supported when bucket is an ARN"); + } + if (options.accelerateEndpoint) { + throw new Error("Accelerate endpoint is not supported when bucket is an ARN"); + } + if (!options.tlsCompatible) { + throw new Error("HTTPS is required when bucket is an ARN"); + } +}; +const validateService = (service) => { + if (service !== "s3" && service !== "s3-outposts" && service !== "s3-object-lambda") { + throw new Error("Expect 's3' or 's3-outposts' or 's3-object-lambda' in ARN service component"); + } +}; +const validateS3Service = (service) => { + if (service !== "s3") { + throw new Error("Expect 's3' in Accesspoint ARN service component"); + } +}; +const validateOutpostService = (service) => { + if (service !== "s3-outposts") { + throw new Error("Expect 's3-posts' in Outpost ARN service component"); + } +}; +const validatePartition = (partition, options) => { + if (partition !== options.clientPartition) { + throw new Error(`Partition in ARN is incompatible, got "${partition}" but expected "${options.clientPartition}"`); + } +}; +const validateRegion = (region, options) => { }; +const validateRegionalClient = (region) => { + if (["s3-external-1", "aws-global"].includes(region)) { + throw new Error(`Client region ${region} is not regional`); + } +}; +const validateAccountId = (accountId) => { + if (!/[0-9]{12}/.exec(accountId)) { + throw new Error("Access point ARN accountID does not match regex '[0-9]{12}'"); + } +}; +const validateDNSHostLabel = (label, options = { tlsCompatible: true }) => { + if (label.length >= 64 || + !/^[a-z0-9][a-z0-9.-]*[a-z0-9]$/.test(label) || + /(\d+\.){3}\d+/.test(label) || + /[.-]{2}/.test(label) || + (options?.tlsCompatible && DOT_PATTERN.test(label))) { + throw new Error(`Invalid DNS label ${label}`); + } +}; +const validateCustomEndpoint = (options) => { + if (options.isCustomEndpoint) { + if (options.dualstackEndpoint) + throw new Error("Dualstack endpoint is not supported with custom endpoint"); + if (options.accelerateEndpoint) + throw new Error("Accelerate endpoint is not supported with custom endpoint"); + } +}; +const getArnResources = (resource) => { + const delimiter = resource.includes(":") ? ":" : "/"; + const [resourceType, ...rest] = resource.split(delimiter); + if (resourceType === "accesspoint") { + if (rest.length !== 1 || rest[0] === "") { + throw new Error(`Access Point ARN should have one resource accesspoint${delimiter}{accesspointname}`); + } + return { accesspointName: rest[0] }; + } + else if (resourceType === "outpost") { + if (!rest[0] || rest[1] !== "accesspoint" || !rest[2] || rest.length !== 3) { + throw new Error(`Outpost ARN should have resource outpost${delimiter}{outpostId}${delimiter}accesspoint${delimiter}{accesspointName}`); + } + const [outpostId, _, accesspointName] = rest; + return { outpostId, accesspointName }; + } + else { + throw new Error(`ARN resource should begin with 'accesspoint${delimiter}' or 'outpost${delimiter}'`); + } +}; +const validateNoDualstack = (dualstackEndpoint) => { }; +const validateNoFIPS = (useFipsEndpoint) => { + if (useFipsEndpoint) + throw new Error(`FIPS region is not supported with Outpost.`); +}; +const validateMrapAlias = (name) => { + try { + name.split(".").forEach((label) => { + validateDNSHostLabel(label); + }); + } + catch (e) { + throw new Error(`"${name}" is not a DNS compatible name.`); + } +}; + +const bucketHostname = (options) => { + validateCustomEndpoint(options); + return isBucketNameOptions(options) + ? + getEndpointFromBucketName(options) + : + getEndpointFromArn(options); +}; +const getEndpointFromBucketName = ({ accelerateEndpoint = false, clientRegion: region, baseHostname, bucketName, dualstackEndpoint = false, fipsEndpoint = false, pathStyleEndpoint = false, tlsCompatible = true, isCustomEndpoint = false, }) => { + const [clientRegion, hostnameSuffix] = isCustomEndpoint ? [region, baseHostname] : getSuffix(baseHostname); + if (pathStyleEndpoint || !isDnsCompatibleBucketName(bucketName) || (tlsCompatible && DOT_PATTERN.test(bucketName))) { + return { + bucketEndpoint: false, + hostname: dualstackEndpoint ? `s3.dualstack.${clientRegion}.${hostnameSuffix}` : baseHostname, + }; + } + if (accelerateEndpoint) { + baseHostname = `s3-accelerate${dualstackEndpoint ? ".dualstack" : ""}.${hostnameSuffix}`; + } + else if (dualstackEndpoint) { + baseHostname = `s3.dualstack.${clientRegion}.${hostnameSuffix}`; + } + return { + bucketEndpoint: true, + hostname: `${bucketName}.${baseHostname}`, + }; +}; +const getEndpointFromArn = (options) => { + const { isCustomEndpoint, baseHostname, clientRegion } = options; + const hostnameSuffix = isCustomEndpoint ? baseHostname : getSuffixForArnEndpoint(baseHostname)[1]; + const { pathStyleEndpoint, accelerateEndpoint = false, fipsEndpoint = false, tlsCompatible = true, bucketName, clientPartition = "aws", } = options; + validateArnEndpointOptions({ pathStyleEndpoint, accelerateEndpoint, tlsCompatible }); + const { service, partition, accountId, region, resource } = bucketName; + validateService(service); + validatePartition(partition, { clientPartition }); + validateAccountId(accountId); + const { accesspointName, outpostId } = getArnResources(resource); + if (service === "s3-object-lambda") { + return getEndpointFromObjectLambdaArn({ ...options, tlsCompatible, bucketName, accesspointName, hostnameSuffix }); + } + if (region === "") { + return getEndpointFromMRAPArn({ ...options, mrapAlias: accesspointName, hostnameSuffix }); + } + if (outpostId) { + return getEndpointFromOutpostArn({ ...options, clientRegion, outpostId, accesspointName, hostnameSuffix }); + } + return getEndpointFromAccessPointArn({ ...options, clientRegion, accesspointName, hostnameSuffix }); +}; +const getEndpointFromObjectLambdaArn = ({ dualstackEndpoint = false, fipsEndpoint = false, tlsCompatible = true, useArnRegion, clientRegion, clientSigningRegion = clientRegion, accesspointName, bucketName, hostnameSuffix, }) => { + const { accountId, region, service } = bucketName; + validateRegionalClient(clientRegion); + const DNSHostLabel = `${accesspointName}-${accountId}`; + validateDNSHostLabel(DNSHostLabel, { tlsCompatible }); + const endpointRegion = useArnRegion ? region : clientRegion; + const signingRegion = useArnRegion ? region : clientSigningRegion; + return { + bucketEndpoint: true, + hostname: `${DNSHostLabel}.${service}${fipsEndpoint ? "-fips" : ""}.${endpointRegion}.${hostnameSuffix}`, + signingRegion, + signingService: service, + }; +}; +const getEndpointFromMRAPArn = ({ disableMultiregionAccessPoints, dualstackEndpoint = false, isCustomEndpoint, mrapAlias, hostnameSuffix, }) => { + if (disableMultiregionAccessPoints === true) { + throw new Error("SDK is attempting to use a MRAP ARN. Please enable to feature."); + } + validateMrapAlias(mrapAlias); + return { + bucketEndpoint: true, + hostname: `${mrapAlias}${isCustomEndpoint ? "" : `.accesspoint.s3-global`}.${hostnameSuffix}`, + signingRegion: "*", + }; +}; +const getEndpointFromOutpostArn = ({ useArnRegion, clientRegion, clientSigningRegion = clientRegion, bucketName, outpostId, dualstackEndpoint = false, fipsEndpoint = false, tlsCompatible = true, accesspointName, isCustomEndpoint, hostnameSuffix, }) => { + validateRegionalClient(clientRegion); + const DNSHostLabel = `${accesspointName}-${bucketName.accountId}`; + validateDNSHostLabel(DNSHostLabel, { tlsCompatible }); + const endpointRegion = useArnRegion ? bucketName.region : clientRegion; + const signingRegion = useArnRegion ? bucketName.region : clientSigningRegion; + validateOutpostService(bucketName.service); + validateDNSHostLabel(outpostId, { tlsCompatible }); + validateNoFIPS(fipsEndpoint); + const hostnamePrefix = `${DNSHostLabel}.${outpostId}`; + return { + bucketEndpoint: true, + hostname: `${hostnamePrefix}${isCustomEndpoint ? "" : `.s3-outposts.${endpointRegion}`}.${hostnameSuffix}`, + signingRegion, + signingService: "s3-outposts", + }; +}; +const getEndpointFromAccessPointArn = ({ useArnRegion, clientRegion, clientSigningRegion = clientRegion, bucketName, dualstackEndpoint = false, fipsEndpoint = false, tlsCompatible = true, accesspointName, isCustomEndpoint, hostnameSuffix, }) => { + validateRegionalClient(clientRegion); + const hostnamePrefix = `${accesspointName}-${bucketName.accountId}`; + validateDNSHostLabel(hostnamePrefix, { tlsCompatible }); + const endpointRegion = useArnRegion ? bucketName.region : clientRegion; + const signingRegion = useArnRegion ? bucketName.region : clientSigningRegion; + validateS3Service(bucketName.service); + return { + bucketEndpoint: true, + hostname: `${hostnamePrefix}${isCustomEndpoint + ? "" + : `.s3-accesspoint${fipsEndpoint ? "-fips" : ""}${dualstackEndpoint ? ".dualstack" : ""}.${endpointRegion}`}.${hostnameSuffix}`, + signingRegion, + }; +}; + +const bucketEndpointMiddleware = (options) => (next, context) => async (args) => { + const { Bucket: bucketName } = args.input; + let replaceBucketInPath = options.bucketEndpoint; + const request = args.request; + if (protocolHttp.HttpRequest.isInstance(request)) { + if (options.bucketEndpoint) { + request.hostname = bucketName; + } + else if (utilArnParser.validate(bucketName)) { + const bucketArn = utilArnParser.parse(bucketName); + const clientRegion = await options.region(); + const useDualstackEndpoint = await options.useDualstackEndpoint(); + const useFipsEndpoint = await options.useFipsEndpoint(); + const { partition, signingRegion = clientRegion } = (await options.regionInfoProvider(clientRegion, { useDualstackEndpoint, useFipsEndpoint })) || {}; + const useArnRegion = await options.useArnRegion(); + const { hostname, bucketEndpoint, signingRegion: modifiedSigningRegion, signingService, } = bucketHostname({ + bucketName: bucketArn, + baseHostname: request.hostname, + accelerateEndpoint: options.useAccelerateEndpoint, + dualstackEndpoint: useDualstackEndpoint, + fipsEndpoint: useFipsEndpoint, + pathStyleEndpoint: options.forcePathStyle, + tlsCompatible: request.protocol === "https:", + useArnRegion, + clientPartition: partition, + clientSigningRegion: signingRegion, + clientRegion: clientRegion, + isCustomEndpoint: options.isCustomEndpoint, + disableMultiregionAccessPoints: await options.disableMultiregionAccessPoints(), + }); + if (modifiedSigningRegion && modifiedSigningRegion !== signingRegion) { + context["signing_region"] = modifiedSigningRegion; + } + if (signingService && signingService !== "s3") { + context["signing_service"] = signingService; + } + request.hostname = hostname; + replaceBucketInPath = bucketEndpoint; + } + else { + const clientRegion = await options.region(); + const dualstackEndpoint = await options.useDualstackEndpoint(); + const fipsEndpoint = await options.useFipsEndpoint(); + const { hostname, bucketEndpoint } = bucketHostname({ + bucketName, + clientRegion, + baseHostname: request.hostname, + accelerateEndpoint: options.useAccelerateEndpoint, + dualstackEndpoint, + fipsEndpoint, + pathStyleEndpoint: options.forcePathStyle, + tlsCompatible: request.protocol === "https:", + isCustomEndpoint: options.isCustomEndpoint, + }); + request.hostname = hostname; + replaceBucketInPath = bucketEndpoint; + } + if (replaceBucketInPath) { + request.path = request.path.replace(/^(\/)?[^\/]+/, ""); + if (request.path === "") { + request.path = "/"; + } + } + } + return next({ ...args, request }); +}; +const bucketEndpointMiddlewareOptions = { + tags: ["BUCKET_ENDPOINT"], + name: "bucketEndpointMiddleware", + relation: "before", + toMiddleware: "hostHeaderMiddleware", + override: true, +}; +const getBucketEndpointPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(bucketEndpointMiddleware(options), bucketEndpointMiddlewareOptions); + }, +}); + +function resolveBucketEndpointConfig(input) { + const { bucketEndpoint = false, forcePathStyle = false, useAccelerateEndpoint = false, useArnRegion, disableMultiregionAccessPoints = false, } = input; + return Object.assign(input, { + bucketEndpoint, + forcePathStyle, + useAccelerateEndpoint, + useArnRegion: typeof useArnRegion === "function" ? useArnRegion : () => Promise.resolve(useArnRegion), + disableMultiregionAccessPoints: typeof disableMultiregionAccessPoints === "function" + ? disableMultiregionAccessPoints + : () => Promise.resolve(disableMultiregionAccessPoints), + }); +} + +exports.NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS = NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS; +exports.NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME = NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME; +exports.NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME = NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME; +exports.NODE_USE_ARN_REGION_CONFIG_OPTIONS = NODE_USE_ARN_REGION_CONFIG_OPTIONS; +exports.NODE_USE_ARN_REGION_ENV_NAME = NODE_USE_ARN_REGION_ENV_NAME; +exports.NODE_USE_ARN_REGION_INI_NAME = NODE_USE_ARN_REGION_INI_NAME; +exports.bucketEndpointMiddleware = bucketEndpointMiddleware; +exports.bucketEndpointMiddlewareOptions = bucketEndpointMiddlewareOptions; +exports.bucketHostname = bucketHostname; +exports.getArnResources = getArnResources; +exports.getBucketEndpointPlugin = getBucketEndpointPlugin; +exports.getSuffixForArnEndpoint = getSuffixForArnEndpoint; +exports.resolveBucketEndpointConfig = resolveBucketEndpointConfig; +exports.validateAccountId = validateAccountId; +exports.validateDNSHostLabel = validateDNSHostLabel; +exports.validateNoDualstack = validateNoDualstack; +exports.validateNoFIPS = validateNoFIPS; +exports.validateOutpostService = validateOutpostService; +exports.validatePartition = validatePartition; +exports.validateRegion = validateRegion; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/NodeDisableMultiregionAccessPointConfigOptions.js b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/NodeDisableMultiregionAccessPointConfigOptions.js new file mode 100644 index 0000000..ebcf87f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/NodeDisableMultiregionAccessPointConfigOptions.js @@ -0,0 +1,8 @@ +import { booleanSelector, SelectorType } from "@smithy/util-config-provider"; +export const NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME = "AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS"; +export const NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME = "s3_disable_multiregion_access_points"; +export const NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => booleanSelector(env, NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME, SelectorType.ENV), + configFileSelector: (profile) => booleanSelector(profile, NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME, SelectorType.CONFIG), + default: false, +}; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/NodeUseArnRegionConfigOptions.js b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/NodeUseArnRegionConfigOptions.js new file mode 100644 index 0000000..6d04557 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/NodeUseArnRegionConfigOptions.js @@ -0,0 +1,8 @@ +import { booleanSelector, SelectorType } from "@smithy/util-config-provider"; +export const NODE_USE_ARN_REGION_ENV_NAME = "AWS_S3_USE_ARN_REGION"; +export const NODE_USE_ARN_REGION_INI_NAME = "s3_use_arn_region"; +export const NODE_USE_ARN_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => booleanSelector(env, NODE_USE_ARN_REGION_ENV_NAME, SelectorType.ENV), + configFileSelector: (profile) => booleanSelector(profile, NODE_USE_ARN_REGION_INI_NAME, SelectorType.CONFIG), + default: undefined, +}; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/bucketEndpointMiddleware.js b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/bucketEndpointMiddleware.js new file mode 100644 index 0000000..6e0f8f8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/bucketEndpointMiddleware.js @@ -0,0 +1,81 @@ +import { parse as parseArn, validate as validateArn } from "@aws-sdk/util-arn-parser"; +import { HttpRequest } from "@smithy/protocol-http"; +import { bucketHostname } from "./bucketHostname"; +export const bucketEndpointMiddleware = (options) => (next, context) => async (args) => { + const { Bucket: bucketName } = args.input; + let replaceBucketInPath = options.bucketEndpoint; + const request = args.request; + if (HttpRequest.isInstance(request)) { + if (options.bucketEndpoint) { + request.hostname = bucketName; + } + else if (validateArn(bucketName)) { + const bucketArn = parseArn(bucketName); + const clientRegion = await options.region(); + const useDualstackEndpoint = await options.useDualstackEndpoint(); + const useFipsEndpoint = await options.useFipsEndpoint(); + const { partition, signingRegion = clientRegion } = (await options.regionInfoProvider(clientRegion, { useDualstackEndpoint, useFipsEndpoint })) || {}; + const useArnRegion = await options.useArnRegion(); + const { hostname, bucketEndpoint, signingRegion: modifiedSigningRegion, signingService, } = bucketHostname({ + bucketName: bucketArn, + baseHostname: request.hostname, + accelerateEndpoint: options.useAccelerateEndpoint, + dualstackEndpoint: useDualstackEndpoint, + fipsEndpoint: useFipsEndpoint, + pathStyleEndpoint: options.forcePathStyle, + tlsCompatible: request.protocol === "https:", + useArnRegion, + clientPartition: partition, + clientSigningRegion: signingRegion, + clientRegion: clientRegion, + isCustomEndpoint: options.isCustomEndpoint, + disableMultiregionAccessPoints: await options.disableMultiregionAccessPoints(), + }); + if (modifiedSigningRegion && modifiedSigningRegion !== signingRegion) { + context["signing_region"] = modifiedSigningRegion; + } + if (signingService && signingService !== "s3") { + context["signing_service"] = signingService; + } + request.hostname = hostname; + replaceBucketInPath = bucketEndpoint; + } + else { + const clientRegion = await options.region(); + const dualstackEndpoint = await options.useDualstackEndpoint(); + const fipsEndpoint = await options.useFipsEndpoint(); + const { hostname, bucketEndpoint } = bucketHostname({ + bucketName, + clientRegion, + baseHostname: request.hostname, + accelerateEndpoint: options.useAccelerateEndpoint, + dualstackEndpoint, + fipsEndpoint, + pathStyleEndpoint: options.forcePathStyle, + tlsCompatible: request.protocol === "https:", + isCustomEndpoint: options.isCustomEndpoint, + }); + request.hostname = hostname; + replaceBucketInPath = bucketEndpoint; + } + if (replaceBucketInPath) { + request.path = request.path.replace(/^(\/)?[^\/]+/, ""); + if (request.path === "") { + request.path = "/"; + } + } + } + return next({ ...args, request }); +}; +export const bucketEndpointMiddlewareOptions = { + tags: ["BUCKET_ENDPOINT"], + name: "bucketEndpointMiddleware", + relation: "before", + toMiddleware: "hostHeaderMiddleware", + override: true, +}; +export const getBucketEndpointPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(bucketEndpointMiddleware(options), bucketEndpointMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/bucketHostname.js b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/bucketHostname.js new file mode 100644 index 0000000..1e6fdbb --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/bucketHostname.js @@ -0,0 +1,106 @@ +import { DOT_PATTERN, getArnResources, getSuffix, getSuffixForArnEndpoint, isBucketNameOptions, isDnsCompatibleBucketName, validateAccountId, validateArnEndpointOptions, validateCustomEndpoint, validateDNSHostLabel, validateMrapAlias, validateNoFIPS, validateOutpostService, validatePartition, validateRegionalClient, validateS3Service, validateService, } from "./bucketHostnameUtils"; +export const bucketHostname = (options) => { + validateCustomEndpoint(options); + return isBucketNameOptions(options) + ? + getEndpointFromBucketName(options) + : + getEndpointFromArn(options); +}; +const getEndpointFromBucketName = ({ accelerateEndpoint = false, clientRegion: region, baseHostname, bucketName, dualstackEndpoint = false, fipsEndpoint = false, pathStyleEndpoint = false, tlsCompatible = true, isCustomEndpoint = false, }) => { + const [clientRegion, hostnameSuffix] = isCustomEndpoint ? [region, baseHostname] : getSuffix(baseHostname); + if (pathStyleEndpoint || !isDnsCompatibleBucketName(bucketName) || (tlsCompatible && DOT_PATTERN.test(bucketName))) { + return { + bucketEndpoint: false, + hostname: dualstackEndpoint ? `s3.dualstack.${clientRegion}.${hostnameSuffix}` : baseHostname, + }; + } + if (accelerateEndpoint) { + baseHostname = `s3-accelerate${dualstackEndpoint ? ".dualstack" : ""}.${hostnameSuffix}`; + } + else if (dualstackEndpoint) { + baseHostname = `s3.dualstack.${clientRegion}.${hostnameSuffix}`; + } + return { + bucketEndpoint: true, + hostname: `${bucketName}.${baseHostname}`, + }; +}; +const getEndpointFromArn = (options) => { + const { isCustomEndpoint, baseHostname, clientRegion } = options; + const hostnameSuffix = isCustomEndpoint ? baseHostname : getSuffixForArnEndpoint(baseHostname)[1]; + const { pathStyleEndpoint, accelerateEndpoint = false, fipsEndpoint = false, tlsCompatible = true, bucketName, clientPartition = "aws", } = options; + validateArnEndpointOptions({ pathStyleEndpoint, accelerateEndpoint, tlsCompatible }); + const { service, partition, accountId, region, resource } = bucketName; + validateService(service); + validatePartition(partition, { clientPartition }); + validateAccountId(accountId); + const { accesspointName, outpostId } = getArnResources(resource); + if (service === "s3-object-lambda") { + return getEndpointFromObjectLambdaArn({ ...options, tlsCompatible, bucketName, accesspointName, hostnameSuffix }); + } + if (region === "") { + return getEndpointFromMRAPArn({ ...options, clientRegion, mrapAlias: accesspointName, hostnameSuffix }); + } + if (outpostId) { + return getEndpointFromOutpostArn({ ...options, clientRegion, outpostId, accesspointName, hostnameSuffix }); + } + return getEndpointFromAccessPointArn({ ...options, clientRegion, accesspointName, hostnameSuffix }); +}; +const getEndpointFromObjectLambdaArn = ({ dualstackEndpoint = false, fipsEndpoint = false, tlsCompatible = true, useArnRegion, clientRegion, clientSigningRegion = clientRegion, accesspointName, bucketName, hostnameSuffix, }) => { + const { accountId, region, service } = bucketName; + validateRegionalClient(clientRegion); + const DNSHostLabel = `${accesspointName}-${accountId}`; + validateDNSHostLabel(DNSHostLabel, { tlsCompatible }); + const endpointRegion = useArnRegion ? region : clientRegion; + const signingRegion = useArnRegion ? region : clientSigningRegion; + return { + bucketEndpoint: true, + hostname: `${DNSHostLabel}.${service}${fipsEndpoint ? "-fips" : ""}.${endpointRegion}.${hostnameSuffix}`, + signingRegion, + signingService: service, + }; +}; +const getEndpointFromMRAPArn = ({ disableMultiregionAccessPoints, dualstackEndpoint = false, isCustomEndpoint, mrapAlias, hostnameSuffix, }) => { + if (disableMultiregionAccessPoints === true) { + throw new Error("SDK is attempting to use a MRAP ARN. Please enable to feature."); + } + validateMrapAlias(mrapAlias); + return { + bucketEndpoint: true, + hostname: `${mrapAlias}${isCustomEndpoint ? "" : `.accesspoint.s3-global`}.${hostnameSuffix}`, + signingRegion: "*", + }; +}; +const getEndpointFromOutpostArn = ({ useArnRegion, clientRegion, clientSigningRegion = clientRegion, bucketName, outpostId, dualstackEndpoint = false, fipsEndpoint = false, tlsCompatible = true, accesspointName, isCustomEndpoint, hostnameSuffix, }) => { + validateRegionalClient(clientRegion); + const DNSHostLabel = `${accesspointName}-${bucketName.accountId}`; + validateDNSHostLabel(DNSHostLabel, { tlsCompatible }); + const endpointRegion = useArnRegion ? bucketName.region : clientRegion; + const signingRegion = useArnRegion ? bucketName.region : clientSigningRegion; + validateOutpostService(bucketName.service); + validateDNSHostLabel(outpostId, { tlsCompatible }); + validateNoFIPS(fipsEndpoint); + const hostnamePrefix = `${DNSHostLabel}.${outpostId}`; + return { + bucketEndpoint: true, + hostname: `${hostnamePrefix}${isCustomEndpoint ? "" : `.s3-outposts.${endpointRegion}`}.${hostnameSuffix}`, + signingRegion, + signingService: "s3-outposts", + }; +}; +const getEndpointFromAccessPointArn = ({ useArnRegion, clientRegion, clientSigningRegion = clientRegion, bucketName, dualstackEndpoint = false, fipsEndpoint = false, tlsCompatible = true, accesspointName, isCustomEndpoint, hostnameSuffix, }) => { + validateRegionalClient(clientRegion); + const hostnamePrefix = `${accesspointName}-${bucketName.accountId}`; + validateDNSHostLabel(hostnamePrefix, { tlsCompatible }); + const endpointRegion = useArnRegion ? bucketName.region : clientRegion; + const signingRegion = useArnRegion ? bucketName.region : clientSigningRegion; + validateS3Service(bucketName.service); + return { + bucketEndpoint: true, + hostname: `${hostnamePrefix}${isCustomEndpoint + ? "" + : `.s3-accesspoint${fipsEndpoint ? "-fips" : ""}${dualstackEndpoint ? ".dualstack" : ""}.${endpointRegion}`}.${hostnameSuffix}`, + signingRegion, + }; +}; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/bucketHostnameUtils.js b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/bucketHostnameUtils.js new file mode 100644 index 0000000..8283cd8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/bucketHostnameUtils.js @@ -0,0 +1,111 @@ +const DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; +const IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; +const DOTS_PATTERN = /\.\./; +export const DOT_PATTERN = /\./; +export const S3_HOSTNAME_PATTERN = /^(.+\.)?s3(-fips)?(\.dualstack)?[.-]([a-z0-9-]+)\./; +const S3_US_EAST_1_ALTNAME_PATTERN = /^s3(-external-1)?\.amazonaws\.com$/; +const AWS_PARTITION_SUFFIX = "amazonaws.com"; +export const isBucketNameOptions = (options) => typeof options.bucketName === "string"; +export const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName); +const getRegionalSuffix = (hostname) => { + const parts = hostname.match(S3_HOSTNAME_PATTERN); + return [parts[4], hostname.replace(new RegExp(`^${parts[0]}`), "")]; +}; +export const getSuffix = (hostname) => S3_US_EAST_1_ALTNAME_PATTERN.test(hostname) ? ["us-east-1", AWS_PARTITION_SUFFIX] : getRegionalSuffix(hostname); +export const getSuffixForArnEndpoint = (hostname) => S3_US_EAST_1_ALTNAME_PATTERN.test(hostname) + ? [hostname.replace(`.${AWS_PARTITION_SUFFIX}`, ""), AWS_PARTITION_SUFFIX] + : getRegionalSuffix(hostname); +export const validateArnEndpointOptions = (options) => { + if (options.pathStyleEndpoint) { + throw new Error("Path-style S3 endpoint is not supported when bucket is an ARN"); + } + if (options.accelerateEndpoint) { + throw new Error("Accelerate endpoint is not supported when bucket is an ARN"); + } + if (!options.tlsCompatible) { + throw new Error("HTTPS is required when bucket is an ARN"); + } +}; +export const validateService = (service) => { + if (service !== "s3" && service !== "s3-outposts" && service !== "s3-object-lambda") { + throw new Error("Expect 's3' or 's3-outposts' or 's3-object-lambda' in ARN service component"); + } +}; +export const validateS3Service = (service) => { + if (service !== "s3") { + throw new Error("Expect 's3' in Accesspoint ARN service component"); + } +}; +export const validateOutpostService = (service) => { + if (service !== "s3-outposts") { + throw new Error("Expect 's3-posts' in Outpost ARN service component"); + } +}; +export const validatePartition = (partition, options) => { + if (partition !== options.clientPartition) { + throw new Error(`Partition in ARN is incompatible, got "${partition}" but expected "${options.clientPartition}"`); + } +}; +export const validateRegion = (region, options) => { }; +export const validateRegionalClient = (region) => { + if (["s3-external-1", "aws-global"].includes(region)) { + throw new Error(`Client region ${region} is not regional`); + } +}; +export const validateAccountId = (accountId) => { + if (!/[0-9]{12}/.exec(accountId)) { + throw new Error("Access point ARN accountID does not match regex '[0-9]{12}'"); + } +}; +export const validateDNSHostLabel = (label, options = { tlsCompatible: true }) => { + if (label.length >= 64 || + !/^[a-z0-9][a-z0-9.-]*[a-z0-9]$/.test(label) || + /(\d+\.){3}\d+/.test(label) || + /[.-]{2}/.test(label) || + (options?.tlsCompatible && DOT_PATTERN.test(label))) { + throw new Error(`Invalid DNS label ${label}`); + } +}; +export const validateCustomEndpoint = (options) => { + if (options.isCustomEndpoint) { + if (options.dualstackEndpoint) + throw new Error("Dualstack endpoint is not supported with custom endpoint"); + if (options.accelerateEndpoint) + throw new Error("Accelerate endpoint is not supported with custom endpoint"); + } +}; +export const getArnResources = (resource) => { + const delimiter = resource.includes(":") ? ":" : "/"; + const [resourceType, ...rest] = resource.split(delimiter); + if (resourceType === "accesspoint") { + if (rest.length !== 1 || rest[0] === "") { + throw new Error(`Access Point ARN should have one resource accesspoint${delimiter}{accesspointname}`); + } + return { accesspointName: rest[0] }; + } + else if (resourceType === "outpost") { + if (!rest[0] || rest[1] !== "accesspoint" || !rest[2] || rest.length !== 3) { + throw new Error(`Outpost ARN should have resource outpost${delimiter}{outpostId}${delimiter}accesspoint${delimiter}{accesspointName}`); + } + const [outpostId, _, accesspointName] = rest; + return { outpostId, accesspointName }; + } + else { + throw new Error(`ARN resource should begin with 'accesspoint${delimiter}' or 'outpost${delimiter}'`); + } +}; +export const validateNoDualstack = (dualstackEndpoint) => { }; +export const validateNoFIPS = (useFipsEndpoint) => { + if (useFipsEndpoint) + throw new Error(`FIPS region is not supported with Outpost.`); +}; +export const validateMrapAlias = (name) => { + try { + name.split(".").forEach((label) => { + validateDNSHostLabel(label); + }); + } + catch (e) { + throw new Error(`"${name}" is not a DNS compatible name.`); + } +}; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/configurations.js b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/configurations.js new file mode 100644 index 0000000..a465f51 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/configurations.js @@ -0,0 +1,12 @@ +export function resolveBucketEndpointConfig(input) { + const { bucketEndpoint = false, forcePathStyle = false, useAccelerateEndpoint = false, useArnRegion, disableMultiregionAccessPoints = false, } = input; + return Object.assign(input, { + bucketEndpoint, + forcePathStyle, + useAccelerateEndpoint, + useArnRegion: typeof useArnRegion === "function" ? useArnRegion : () => Promise.resolve(useArnRegion), + disableMultiregionAccessPoints: typeof disableMultiregionAccessPoints === "function" + ? disableMultiregionAccessPoints + : () => Promise.resolve(disableMultiregionAccessPoints), + }); +} diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/index.js new file mode 100644 index 0000000..c8583c2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./NodeDisableMultiregionAccessPointConfigOptions"; +export * from "./NodeUseArnRegionConfigOptions"; +export * from "./bucketEndpointMiddleware"; +export * from "./bucketHostname"; +export * from "./configurations"; +export { getArnResources, getSuffixForArnEndpoint, validateOutpostService, validatePartition, validateAccountId, validateRegion, validateDNSHostLabel, validateNoDualstack, validateNoFIPS, } from "./bucketHostnameUtils"; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/NodeDisableMultiregionAccessPointConfigOptions.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/NodeDisableMultiregionAccessPointConfigOptions.d.ts new file mode 100644 index 0000000..adcbbc9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/NodeDisableMultiregionAccessPointConfigOptions.d.ts @@ -0,0 +1,4 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME = "AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS"; +export declare const NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME = "s3_disable_multiregion_access_points"; +export declare const NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/NodeUseArnRegionConfigOptions.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/NodeUseArnRegionConfigOptions.d.ts new file mode 100644 index 0000000..9cfd0c1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/NodeUseArnRegionConfigOptions.d.ts @@ -0,0 +1,9 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const NODE_USE_ARN_REGION_ENV_NAME = "AWS_S3_USE_ARN_REGION"; +export declare const NODE_USE_ARN_REGION_INI_NAME = "s3_use_arn_region"; +/** + * Config to load useArnRegion from environment variables and shared INI files + * + * @internal + */ +export declare const NODE_USE_ARN_REGION_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/bucketEndpointMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/bucketEndpointMiddleware.d.ts new file mode 100644 index 0000000..9e58bb4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/bucketEndpointMiddleware.d.ts @@ -0,0 +1,17 @@ +import type { BuildMiddleware, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +import type { BucketEndpointResolvedConfig } from "./configurations"; +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export declare const bucketEndpointMiddleware: (options: BucketEndpointResolvedConfig) => BuildMiddleware; +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export declare const bucketEndpointMiddlewareOptions: RelativeMiddlewareOptions; +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export declare const getBucketEndpointPlugin: (options: BucketEndpointResolvedConfig) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/bucketHostname.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/bucketHostname.d.ts new file mode 100644 index 0000000..7f1ae40 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/bucketHostname.d.ts @@ -0,0 +1,16 @@ +import type { ArnHostnameParams, BucketHostnameParams } from "./bucketHostnameUtils"; +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export interface BucketHostname { + hostname: string; + bucketEndpoint: boolean; + signingRegion?: string; + signingService?: string; +} +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export declare const bucketHostname: (options: BucketHostnameParams | ArnHostnameParams) => BucketHostname; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/bucketHostnameUtils.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/bucketHostnameUtils.d.ts new file mode 100644 index 0000000..62982aa --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/bucketHostnameUtils.d.ts @@ -0,0 +1,174 @@ +import type { ARN } from "@aws-sdk/util-arn-parser"; +/** + * @deprecated unused as of EndpointsV2. + */ +export declare const DOT_PATTERN: RegExp; +/** + * @deprecated unused as of EndpointsV2. + */ +export declare const S3_HOSTNAME_PATTERN: RegExp; +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export interface AccessPointArn extends ARN { + accessPointName: string; +} +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export interface BucketHostnameParams { + isCustomEndpoint?: boolean; + baseHostname: string; + bucketName: string; + clientRegion: string; + accelerateEndpoint?: boolean; + dualstackEndpoint?: boolean; + fipsEndpoint?: boolean; + pathStyleEndpoint?: boolean; + tlsCompatible?: boolean; +} +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export interface ArnHostnameParams extends Omit { + bucketName: ARN; + clientSigningRegion?: string; + clientPartition?: string; + useArnRegion?: boolean; + disableMultiregionAccessPoints?: boolean; +} +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export declare const isBucketNameOptions: (options: BucketHostnameParams | ArnHostnameParams) => options is BucketHostnameParams; +/** + * Determines whether a given string is DNS compliant per the rules outlined by + * S3. Length, capitaization, and leading dot restrictions are enforced by the + * DOMAIN_PATTERN regular expression. + * @internal + * + * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html + * + * @deprecated unused as of EndpointsV2. + */ +export declare const isDnsCompatibleBucketName: (bucketName: string) => boolean; +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export declare const getSuffix: (hostname: string) => [string, string]; +/** + * Infer region and hostname suffix from a complete hostname + * @internal + * @param hostname - Hostname + * @returns [Region, Hostname suffix] + * + * @deprecated unused as of EndpointsV2. + */ +export declare const getSuffixForArnEndpoint: (hostname: string) => [string, string]; +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export declare const validateArnEndpointOptions: (options: { + accelerateEndpoint?: boolean; + tlsCompatible?: boolean; + pathStyleEndpoint?: boolean; +}) => void; +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export declare const validateService: (service: string) => void; +/** + * @deprecated unused as of EndpointsV2. + * @internal + */ +export declare const validateS3Service: (service: string) => void; +/** + * @internal + */ +export declare const validateOutpostService: (service: string) => void; +/** + * Validate partition inferred from ARN is the same to `options.clientPartition`. + * @internal + */ +export declare const validatePartition: (partition: string, options: { + clientPartition: string; +}) => void; +/** + * (Previous to deprecation) + * validate region value inferred from ARN. If `options.useArnRegion` is set, it validates the region is not a FIPS + * region. If `options.useArnRegion` is unset, it validates the region is equal to `options.clientRegion` or + * `options.clientSigningRegion`. + * + * @internal + * + * @deprecated validation is deferred to the endpoint ruleset. + */ +export declare const validateRegion: (region: string, options: { + useArnRegion?: boolean; + allowFipsRegion?: boolean; + clientRegion: string; + clientSigningRegion: string; + useFipsEndpoint: boolean; +}) => void; +/** + * @deprecated unused as of EndpointsV2. + */ +export declare const validateRegionalClient: (region: string) => void; +/** + * Validate an account ID + * @internal + */ +export declare const validateAccountId: (accountId: string) => void; +/** + * Validate a host label according to https://tools.ietf.org/html/rfc3986#section-3.2.2 + * @internal + * @deprecated unused as of EndpointsV2. + */ +export declare const validateDNSHostLabel: (label: string, options?: { + tlsCompatible?: boolean; +}) => void; +/** + * @deprecated unused as of EndpointsV2. + */ +export declare const validateCustomEndpoint: (options: { + isCustomEndpoint?: boolean; + dualstackEndpoint?: boolean; + accelerateEndpoint?: boolean; +}) => void; +/** + * Validate and parse an Access Point ARN or Outposts ARN + * @internal + * + * @param resource - The resource section of an ARN + * @returns Access Point Name and optional Outpost ID. + */ +export declare const getArnResources: (resource: string) => { + accesspointName: string; + outpostId?: string; +}; +/** + * (Prior to deprecation) Throw if dual stack configuration is set to true. + * @internal + * + * @deprecated validation deferred to endpoints ruleset. + */ +export declare const validateNoDualstack: (dualstackEndpoint?: boolean) => void; +/** + * Validate fips endpoint is not set up. + * @internal + * @deprecated unused as of EndpointsV2. + */ +export declare const validateNoFIPS: (useFipsEndpoint?: boolean) => void; +/** + * Validate the multi-region access point alias. + * @internal + * @deprecated unused as of EndpointsV2. + */ +export declare const validateMrapAlias: (name: string) => void; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/configurations.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/configurations.d.ts new file mode 100644 index 0000000..3396b90 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/configurations.d.ts @@ -0,0 +1,95 @@ +import type { Provider, RegionInfoProvider } from "@smithy/types"; +/** + * @deprecated unused as of EndpointsV2. + */ +export interface BucketEndpointInputConfig { + /** + * Whether to use the bucket name as the endpoint for this request. The bucket + * name must be a domain name with a CNAME record alias to an appropriate virtual + * hosted-style S3 hostname, e.g. a bucket of `images.johnsmith.net` and a DNS + * record of: + * + * ``` + * images.johnsmith.net CNAME images.johnsmith.net.s3.amazonaws.com. + * ``` + * + * @see https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#VirtualHostingCustomURLs + */ + bucketEndpoint?: boolean; + /** + * Whether to force path style URLs for S3 objects (e.g., https://s3.amazonaws.com// instead of https://.s3.amazonaws.com/ + */ + forcePathStyle?: boolean; + /** + * Whether to use the S3 Transfer Acceleration endpoint by default + */ + useAccelerateEndpoint?: boolean; + /** + * Whether to override the request region with the region inferred from requested resource's ARN. Defaults to false + */ + useArnRegion?: boolean | Provider; + /** + * Whether to prevent SDK from making cross-region request when supplied bucket is a multi-region access point ARN. + * Defaults to false + */ + disableMultiregionAccessPoints?: boolean | Provider; +} +/** + * @deprecated unused as of EndpointsV2. + */ +interface PreviouslyResolved { + isCustomEndpoint?: boolean; + region: Provider; + regionInfoProvider: RegionInfoProvider; + useFipsEndpoint: Provider; + useDualstackEndpoint: Provider; +} +/** + * @deprecated unused as of EndpointsV2. + */ +export interface BucketEndpointResolvedConfig { + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint?: boolean; + /** + * Resolved value for input config {@link BucketEndpointInputConfig.bucketEndpoint} + */ + bucketEndpoint: boolean; + /** + * Resolved value for input config {@link BucketEndpointInputConfig.forcePathStyle} + */ + forcePathStyle: boolean; + /** + * Resolved value for input config {@link BucketEndpointInputConfig.useAccelerateEndpoint} + */ + useAccelerateEndpoint: boolean; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint: Provider; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint: Provider; + /** + * Resolved value for input config {@link BucketEndpointInputConfig.useArnRegion} + */ + useArnRegion: Provider; + /** + * Resolved value for input config {@link RegionInputConfig.region} + */ + region: Provider; + /** + * Fetch related hostname, signing name or signing region with given region. + * @internal + */ + regionInfoProvider: RegionInfoProvider; + disableMultiregionAccessPoints: Provider; +} +/** + * @deprecated unused as of EndpointsV2. + */ +export declare function resolveBucketEndpointConfig(input: T & PreviouslyResolved & BucketEndpointInputConfig): T & BucketEndpointResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/index.d.ts new file mode 100644 index 0000000..c8583c2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./NodeDisableMultiregionAccessPointConfigOptions"; +export * from "./NodeUseArnRegionConfigOptions"; +export * from "./bucketEndpointMiddleware"; +export * from "./bucketHostname"; +export * from "./configurations"; +export { getArnResources, getSuffixForArnEndpoint, validateOutpostService, validatePartition, validateAccountId, validateRegion, validateDNSHostLabel, validateNoDualstack, validateNoFIPS, } from "./bucketHostnameUtils"; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/NodeDisableMultiregionAccessPointConfigOptions.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/NodeDisableMultiregionAccessPointConfigOptions.d.ts new file mode 100644 index 0000000..2275039 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/NodeDisableMultiregionAccessPointConfigOptions.d.ts @@ -0,0 +1,6 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const NODE_DISABLE_MULTIREGION_ACCESS_POINT_ENV_NAME = + "AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS"; +export declare const NODE_DISABLE_MULTIREGION_ACCESS_POINT_INI_NAME = + "s3_disable_multiregion_access_points"; +export declare const NODE_DISABLE_MULTIREGION_ACCESS_POINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/NodeUseArnRegionConfigOptions.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/NodeUseArnRegionConfigOptions.d.ts new file mode 100644 index 0000000..5d60ffa --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/NodeUseArnRegionConfigOptions.d.ts @@ -0,0 +1,6 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const NODE_USE_ARN_REGION_ENV_NAME = "AWS_S3_USE_ARN_REGION"; +export declare const NODE_USE_ARN_REGION_INI_NAME = "s3_use_arn_region"; +export declare const NODE_USE_ARN_REGION_CONFIG_OPTIONS: LoadedConfigSelectors< + boolean | undefined +>; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/bucketEndpointMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/bucketEndpointMiddleware.d.ts new file mode 100644 index 0000000..e54851b --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/bucketEndpointMiddleware.d.ts @@ -0,0 +1,13 @@ +import { + BuildMiddleware, + Pluggable, + RelativeMiddlewareOptions, +} from "@smithy/types"; +import { BucketEndpointResolvedConfig } from "./configurations"; +export declare const bucketEndpointMiddleware: ( + options: BucketEndpointResolvedConfig +) => BuildMiddleware; +export declare const bucketEndpointMiddlewareOptions: RelativeMiddlewareOptions; +export declare const getBucketEndpointPlugin: ( + options: BucketEndpointResolvedConfig +) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/bucketHostname.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/bucketHostname.d.ts new file mode 100644 index 0000000..1d2b948 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/bucketHostname.d.ts @@ -0,0 +1,10 @@ +import { ArnHostnameParams, BucketHostnameParams } from "./bucketHostnameUtils"; +export interface BucketHostname { + hostname: string; + bucketEndpoint: boolean; + signingRegion?: string; + signingService?: string; +} +export declare const bucketHostname: ( + options: BucketHostnameParams | ArnHostnameParams +) => BucketHostname; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/bucketHostnameUtils.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/bucketHostnameUtils.d.ts new file mode 100644 index 0000000..30091f7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/bucketHostnameUtils.d.ts @@ -0,0 +1,80 @@ +import { ARN } from "@aws-sdk/util-arn-parser"; +export declare const DOT_PATTERN: RegExp; +export declare const S3_HOSTNAME_PATTERN: RegExp; +export interface AccessPointArn extends ARN { + accessPointName: string; +} +export interface BucketHostnameParams { + isCustomEndpoint?: boolean; + baseHostname: string; + bucketName: string; + clientRegion: string; + accelerateEndpoint?: boolean; + dualstackEndpoint?: boolean; + fipsEndpoint?: boolean; + pathStyleEndpoint?: boolean; + tlsCompatible?: boolean; +} +export interface ArnHostnameParams + extends Pick< + BucketHostnameParams, + Exclude + > { + bucketName: ARN; + clientSigningRegion?: string; + clientPartition?: string; + useArnRegion?: boolean; + disableMultiregionAccessPoints?: boolean; +} +export declare const isBucketNameOptions: ( + options: BucketHostnameParams | ArnHostnameParams +) => options is BucketHostnameParams; +export declare const isDnsCompatibleBucketName: (bucketName: string) => boolean; +export declare const getSuffix: (hostname: string) => [string, string]; +export declare const getSuffixForArnEndpoint: ( + hostname: string +) => [string, string]; +export declare const validateArnEndpointOptions: (options: { + accelerateEndpoint?: boolean; + tlsCompatible?: boolean; + pathStyleEndpoint?: boolean; +}) => void; +export declare const validateService: (service: string) => void; +export declare const validateS3Service: (service: string) => void; +export declare const validateOutpostService: (service: string) => void; +export declare const validatePartition: ( + partition: string, + options: { + clientPartition: string; + } +) => void; +export declare const validateRegion: ( + region: string, + options: { + useArnRegion?: boolean; + allowFipsRegion?: boolean; + clientRegion: string; + clientSigningRegion: string; + useFipsEndpoint: boolean; + } +) => void; +export declare const validateRegionalClient: (region: string) => void; +export declare const validateAccountId: (accountId: string) => void; +export declare const validateDNSHostLabel: ( + label: string, + options?: { + tlsCompatible?: boolean; + } +) => void; +export declare const validateCustomEndpoint: (options: { + isCustomEndpoint?: boolean; + dualstackEndpoint?: boolean; + accelerateEndpoint?: boolean; +}) => void; +export declare const getArnResources: (resource: string) => { + accesspointName: string; + outpostId?: string; +}; +export declare const validateNoDualstack: (dualstackEndpoint?: boolean) => void; +export declare const validateNoFIPS: (useFipsEndpoint?: boolean) => void; +export declare const validateMrapAlias: (name: string) => void; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/configurations.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/configurations.d.ts new file mode 100644 index 0000000..c800ab5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/configurations.d.ts @@ -0,0 +1,31 @@ +import { Provider, RegionInfoProvider } from "@smithy/types"; +export interface BucketEndpointInputConfig { + bucketEndpoint?: boolean; + forcePathStyle?: boolean; + useAccelerateEndpoint?: boolean; + useArnRegion?: boolean | Provider; + disableMultiregionAccessPoints?: boolean | Provider; +} +interface PreviouslyResolved { + isCustomEndpoint?: boolean; + region: Provider; + regionInfoProvider: RegionInfoProvider; + useFipsEndpoint: Provider; + useDualstackEndpoint: Provider; +} +export interface BucketEndpointResolvedConfig { + isCustomEndpoint?: boolean; + bucketEndpoint: boolean; + forcePathStyle: boolean; + useAccelerateEndpoint: boolean; + useFipsEndpoint: Provider; + useDualstackEndpoint: Provider; + useArnRegion: Provider; + region: Provider; + regionInfoProvider: RegionInfoProvider; + disableMultiregionAccessPoints: Provider; +} +export declare function resolveBucketEndpointConfig( + input: T & PreviouslyResolved & BucketEndpointInputConfig +): T & BucketEndpointResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..9687a3e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/dist-types/ts3.4/index.d.ts @@ -0,0 +1,16 @@ +export * from "./NodeDisableMultiregionAccessPointConfigOptions"; +export * from "./NodeUseArnRegionConfigOptions"; +export * from "./bucketEndpointMiddleware"; +export * from "./bucketHostname"; +export * from "./configurations"; +export { + getArnResources, + getSuffixForArnEndpoint, + validateOutpostService, + validatePartition, + validateAccountId, + validateRegion, + validateDNSHostLabel, + validateNoDualstack, + validateNoFIPS, +} from "./bucketHostnameUtils"; diff --git a/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/package.json b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/package.json new file mode 100644 index 0000000..a62d318 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-bucket-endpoint/package.json @@ -0,0 +1,60 @@ +{ + "name": "@aws-sdk/middleware-bucket-endpoint", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-bucket-endpoint", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-bucket-endpoint", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-bucket-endpoint" + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-expect-continue/LICENSE b/bff/node_modules/@aws-sdk/middleware-expect-continue/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-expect-continue/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/middleware-expect-continue/README.md b/bff/node_modules/@aws-sdk/middleware-expect-continue/README.md new file mode 100644 index 0000000..e19bd83 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-expect-continue/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-expect-continue + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-expect-continue/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-expect-continue) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-expect-continue.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-expect-continue) diff --git a/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-cjs/index.js new file mode 100644 index 0000000..c22c8dc --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-cjs/index.js @@ -0,0 +1,48 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); + +function addExpectContinueMiddleware(options) { + return (next) => async (args) => { + const { request } = args; + if (options.expectContinueHeader !== false && + protocolHttp.HttpRequest.isInstance(request) && + request.body && + options.runtime === "node" && + options.requestHandler?.constructor?.name !== "FetchHttpHandler") { + let sendHeader = true; + if (typeof options.expectContinueHeader === "number") { + try { + const bodyLength = Number(request.headers?.["content-length"]) ?? options.bodyLengthChecker?.(request.body) ?? Infinity; + sendHeader = bodyLength >= options.expectContinueHeader; + } + catch (e) { } + } + else { + sendHeader = !!options.expectContinueHeader; + } + if (sendHeader) { + request.headers.Expect = "100-continue"; + } + } + return next({ + ...args, + request, + }); + }; +} +const addExpectContinueMiddlewareOptions = { + step: "build", + tags: ["SET_EXPECT_HEADER", "EXPECT_HEADER"], + name: "addExpectContinueMiddleware", + override: true, +}; +const getAddExpectContinuePlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(addExpectContinueMiddleware(options), addExpectContinueMiddlewareOptions); + }, +}); + +exports.addExpectContinueMiddleware = addExpectContinueMiddleware; +exports.addExpectContinueMiddlewareOptions = addExpectContinueMiddlewareOptions; +exports.getAddExpectContinuePlugin = getAddExpectContinuePlugin; diff --git a/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-es/index.js new file mode 100644 index 0000000..7fcef09 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-es/index.js @@ -0,0 +1,41 @@ +import { HttpRequest } from "@smithy/protocol-http"; +export function addExpectContinueMiddleware(options) { + return (next) => async (args) => { + const { request } = args; + if (options.expectContinueHeader !== false && + HttpRequest.isInstance(request) && + request.body && + options.runtime === "node" && + options.requestHandler?.constructor?.name !== "FetchHttpHandler") { + let sendHeader = true; + if (typeof options.expectContinueHeader === "number") { + try { + const bodyLength = Number(request.headers?.["content-length"]) ?? options.bodyLengthChecker?.(request.body) ?? Infinity; + sendHeader = bodyLength >= options.expectContinueHeader; + } + catch (e) { } + } + else { + sendHeader = !!options.expectContinueHeader; + } + if (sendHeader) { + request.headers.Expect = "100-continue"; + } + } + return next({ + ...args, + request, + }); + }; +} +export const addExpectContinueMiddlewareOptions = { + step: "build", + tags: ["SET_EXPECT_HEADER", "EXPECT_HEADER"], + name: "addExpectContinueMiddleware", + override: true, +}; +export const getAddExpectContinuePlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(addExpectContinueMiddleware(options), addExpectContinueMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-types/index.d.ts new file mode 100644 index 0000000..f8897cb --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-types/index.d.ts @@ -0,0 +1,12 @@ +import type { HttpHandler } from "@smithy/protocol-http"; +import type { BodyLengthCalculator, BuildHandlerOptions, BuildMiddleware, Pluggable, RequestHandler } from "@smithy/types"; +interface PreviouslyResolved { + runtime: string; + requestHandler?: RequestHandler | HttpHandler; + bodyLengthChecker?: BodyLengthCalculator; + expectContinueHeader?: boolean | number; +} +export declare function addExpectContinueMiddleware(options: PreviouslyResolved): BuildMiddleware; +export declare const addExpectContinueMiddlewareOptions: BuildHandlerOptions; +export declare const getAddExpectContinuePlugin: (options: PreviouslyResolved) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..447cff5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-expect-continue/dist-types/ts3.4/index.d.ts @@ -0,0 +1,22 @@ +import { HttpHandler } from "@smithy/protocol-http"; +import { + BodyLengthCalculator, + BuildHandlerOptions, + BuildMiddleware, + Pluggable, + RequestHandler, +} from "@smithy/types"; +interface PreviouslyResolved { + runtime: string; + requestHandler?: RequestHandler | HttpHandler; + bodyLengthChecker?: BodyLengthCalculator; + expectContinueHeader?: boolean | number; +} +export declare function addExpectContinueMiddleware( + options: PreviouslyResolved +): BuildMiddleware; +export declare const addExpectContinueMiddlewareOptions: BuildHandlerOptions; +export declare const getAddExpectContinuePlugin: ( + options: PreviouslyResolved +) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-expect-continue/package.json b/bff/node_modules/@aws-sdk/middleware-expect-continue/package.json new file mode 100644 index 0000000..87f9d14 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-expect-continue/package.json @@ -0,0 +1,58 @@ +{ + "name": "@aws-sdk/middleware-expect-continue", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-expect-continue", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-expect-continue", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-expect-continue" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/LICENSE b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/LICENSE new file mode 100644 index 0000000..8efcd8d --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/README.md b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/README.md new file mode 100644 index 0000000..ac7b4d3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/README.md @@ -0,0 +1,7 @@ +# @aws-sdk/middleware-flexible-checksums + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-flexible-checksums/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-flexible-checksums) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-flexible-checksums.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-flexible-checksums) + +This package provides AWS SDK for JavaScript middleware that applies a checksum +of the request body as a header. diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.browser.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.browser.js new file mode 100644 index 0000000..3fc2576 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.browser.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCrc32ChecksumAlgorithmFunction = void 0; +const crc32_1 = require("@aws-crypto/crc32"); +const getCrc32ChecksumAlgorithmFunction = () => crc32_1.AwsCrc32; +exports.getCrc32ChecksumAlgorithmFunction = getCrc32ChecksumAlgorithmFunction; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.js new file mode 100644 index 0000000..97883e7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCrc32ChecksumAlgorithmFunction = void 0; +const tslib_1 = require("tslib"); +const crc32_1 = require("@aws-crypto/crc32"); +const util_1 = require("@aws-crypto/util"); +const zlib = tslib_1.__importStar(require("node:zlib")); +class NodeCrc32 { + checksum = 0; + update(data) { + this.checksum = zlib.crc32(data, this.checksum); + } + async digest() { + return (0, util_1.numToUint8)(this.checksum); + } + reset() { + this.checksum = 0; + } +} +const getCrc32ChecksumAlgorithmFunction = () => { + if (typeof zlib.crc32 === "undefined") { + return crc32_1.AwsCrc32; + } + return NodeCrc32; +}; +exports.getCrc32ChecksumAlgorithmFunction = getCrc32ChecksumAlgorithmFunction; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/index.js new file mode 100644 index 0000000..7124ba9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/index.js @@ -0,0 +1,451 @@ +'use strict'; + +var client = require('@aws-sdk/core/client'); +var protocolHttp = require('@smithy/protocol-http'); +var utilStream = require('@smithy/util-stream'); +var isArrayBuffer = require('@smithy/is-array-buffer'); +var crc32c = require('@aws-crypto/crc32c'); +var crc64Nvme = require('@aws-sdk/crc64-nvme'); +var getCrc32ChecksumAlgorithmFunction = require('./getCrc32ChecksumAlgorithmFunction'); +var utilUtf8 = require('@smithy/util-utf8'); +var utilMiddleware = require('@smithy/util-middleware'); + +const RequestChecksumCalculation = { + WHEN_SUPPORTED: "WHEN_SUPPORTED", + WHEN_REQUIRED: "WHEN_REQUIRED", +}; +const DEFAULT_REQUEST_CHECKSUM_CALCULATION = RequestChecksumCalculation.WHEN_SUPPORTED; +const ResponseChecksumValidation = { + WHEN_SUPPORTED: "WHEN_SUPPORTED", + WHEN_REQUIRED: "WHEN_REQUIRED", +}; +const DEFAULT_RESPONSE_CHECKSUM_VALIDATION = RequestChecksumCalculation.WHEN_SUPPORTED; +exports.ChecksumAlgorithm = void 0; +(function (ChecksumAlgorithm) { + ChecksumAlgorithm["MD5"] = "MD5"; + ChecksumAlgorithm["CRC32"] = "CRC32"; + ChecksumAlgorithm["CRC32C"] = "CRC32C"; + ChecksumAlgorithm["CRC64NVME"] = "CRC64NVME"; + ChecksumAlgorithm["SHA1"] = "SHA1"; + ChecksumAlgorithm["SHA256"] = "SHA256"; +})(exports.ChecksumAlgorithm || (exports.ChecksumAlgorithm = {})); +exports.ChecksumLocation = void 0; +(function (ChecksumLocation) { + ChecksumLocation["HEADER"] = "header"; + ChecksumLocation["TRAILER"] = "trailer"; +})(exports.ChecksumLocation || (exports.ChecksumLocation = {})); +const DEFAULT_CHECKSUM_ALGORITHM = exports.ChecksumAlgorithm.CRC32; + +var SelectorType; +(function (SelectorType) { + SelectorType["ENV"] = "env"; + SelectorType["CONFIG"] = "shared config entry"; +})(SelectorType || (SelectorType = {})); +const stringUnionSelector = (obj, key, union, type) => { + if (!(key in obj)) + return undefined; + const value = obj[key].toUpperCase(); + if (!Object.values(union).includes(value)) { + throw new TypeError(`Cannot load ${type} '${key}'. Expected one of ${Object.values(union)}, got '${obj[key]}'.`); + } + return value; +}; + +const ENV_REQUEST_CHECKSUM_CALCULATION = "AWS_REQUEST_CHECKSUM_CALCULATION"; +const CONFIG_REQUEST_CHECKSUM_CALCULATION = "request_checksum_calculation"; +const NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => stringUnionSelector(env, ENV_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation, SelectorType.ENV), + configFileSelector: (profile) => stringUnionSelector(profile, CONFIG_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation, SelectorType.CONFIG), + default: DEFAULT_REQUEST_CHECKSUM_CALCULATION, +}; + +const ENV_RESPONSE_CHECKSUM_VALIDATION = "AWS_RESPONSE_CHECKSUM_VALIDATION"; +const CONFIG_RESPONSE_CHECKSUM_VALIDATION = "response_checksum_validation"; +const NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => stringUnionSelector(env, ENV_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation, SelectorType.ENV), + configFileSelector: (profile) => stringUnionSelector(profile, CONFIG_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation, SelectorType.CONFIG), + default: DEFAULT_RESPONSE_CHECKSUM_VALIDATION, +}; + +const getChecksumAlgorithmForRequest = (input, { requestChecksumRequired, requestAlgorithmMember, requestChecksumCalculation }) => { + if (!requestAlgorithmMember) { + return requestChecksumCalculation === RequestChecksumCalculation.WHEN_SUPPORTED || requestChecksumRequired + ? DEFAULT_CHECKSUM_ALGORITHM + : undefined; + } + if (!input[requestAlgorithmMember]) { + return undefined; + } + const checksumAlgorithm = input[requestAlgorithmMember]; + return checksumAlgorithm; +}; + +const getChecksumLocationName = (algorithm) => algorithm === exports.ChecksumAlgorithm.MD5 ? "content-md5" : `x-amz-checksum-${algorithm.toLowerCase()}`; + +const hasHeader = (header, headers) => { + const soughtHeader = header.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return true; + } + } + return false; +}; + +const hasHeaderWithPrefix = (headerPrefix, headers) => { + const soughtHeaderPrefix = headerPrefix.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (headerName.toLowerCase().startsWith(soughtHeaderPrefix)) { + return true; + } + } + return false; +}; + +const isStreaming = (body) => body !== undefined && typeof body !== "string" && !ArrayBuffer.isView(body) && !isArrayBuffer.isArrayBuffer(body); + +const CLIENT_SUPPORTED_ALGORITHMS = [ + exports.ChecksumAlgorithm.CRC32, + exports.ChecksumAlgorithm.CRC32C, + exports.ChecksumAlgorithm.CRC64NVME, + exports.ChecksumAlgorithm.SHA1, + exports.ChecksumAlgorithm.SHA256, +]; +const PRIORITY_ORDER_ALGORITHMS = [ + exports.ChecksumAlgorithm.SHA256, + exports.ChecksumAlgorithm.SHA1, + exports.ChecksumAlgorithm.CRC32, + exports.ChecksumAlgorithm.CRC32C, + exports.ChecksumAlgorithm.CRC64NVME, +]; + +const selectChecksumAlgorithmFunction = (checksumAlgorithm, config) => { + const { checksumAlgorithms = {} } = config; + switch (checksumAlgorithm) { + case exports.ChecksumAlgorithm.MD5: + return checksumAlgorithms?.MD5 ?? config.md5; + case exports.ChecksumAlgorithm.CRC32: + return checksumAlgorithms?.CRC32 ?? getCrc32ChecksumAlgorithmFunction.getCrc32ChecksumAlgorithmFunction(); + case exports.ChecksumAlgorithm.CRC32C: + return checksumAlgorithms?.CRC32C ?? crc32c.AwsCrc32c; + case exports.ChecksumAlgorithm.CRC64NVME: + if (typeof crc64Nvme.crc64NvmeCrtContainer.CrtCrc64Nvme !== "function") { + return checksumAlgorithms?.CRC64NVME ?? crc64Nvme.Crc64Nvme; + } + return checksumAlgorithms?.CRC64NVME ?? crc64Nvme.crc64NvmeCrtContainer.CrtCrc64Nvme; + case exports.ChecksumAlgorithm.SHA1: + return checksumAlgorithms?.SHA1 ?? config.sha1; + case exports.ChecksumAlgorithm.SHA256: + return checksumAlgorithms?.SHA256 ?? config.sha256; + default: + if (checksumAlgorithms?.[checksumAlgorithm]) { + return checksumAlgorithms[checksumAlgorithm]; + } + throw new Error(`The checksum algorithm "${checksumAlgorithm}" is not supported by the client.` + + ` Select one of ${CLIENT_SUPPORTED_ALGORITHMS}, or provide an implementation to ` + + ` the client constructor checksums field.`); + } +}; + +const stringHasher = (checksumAlgorithmFn, body) => { + const hash = new checksumAlgorithmFn(); + hash.update(utilUtf8.toUint8Array(body || "")); + return hash.digest(); +}; + +const flexibleChecksumsMiddlewareOptions = { + name: "flexibleChecksumsMiddleware", + step: "build", + tags: ["BODY_CHECKSUM"], + override: true, +}; +const flexibleChecksumsMiddleware = (config, middlewareConfig) => (next, context) => async (args) => { + if (!protocolHttp.HttpRequest.isInstance(args.request)) { + return next(args); + } + if (hasHeaderWithPrefix("x-amz-checksum-", args.request.headers)) { + return next(args); + } + const { request, input } = args; + const { body: requestBody, headers } = request; + const { base64Encoder, streamHasher } = config; + const { requestChecksumRequired, requestAlgorithmMember } = middlewareConfig; + const requestChecksumCalculation = await config.requestChecksumCalculation(); + const requestAlgorithmMemberName = requestAlgorithmMember?.name; + const requestAlgorithmMemberHttpHeader = requestAlgorithmMember?.httpHeader; + if (requestAlgorithmMemberName && !input[requestAlgorithmMemberName]) { + if (requestChecksumCalculation === RequestChecksumCalculation.WHEN_SUPPORTED || requestChecksumRequired) { + input[requestAlgorithmMemberName] = DEFAULT_CHECKSUM_ALGORITHM; + if (requestAlgorithmMemberHttpHeader) { + headers[requestAlgorithmMemberHttpHeader] = DEFAULT_CHECKSUM_ALGORITHM; + } + } + } + const checksumAlgorithm = getChecksumAlgorithmForRequest(input, { + requestChecksumRequired, + requestAlgorithmMember: requestAlgorithmMember?.name, + requestChecksumCalculation, + }); + let updatedBody = requestBody; + let updatedHeaders = headers; + if (checksumAlgorithm) { + switch (checksumAlgorithm) { + case exports.ChecksumAlgorithm.CRC32: + client.setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_CRC32", "U"); + break; + case exports.ChecksumAlgorithm.CRC32C: + client.setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_CRC32C", "V"); + break; + case exports.ChecksumAlgorithm.CRC64NVME: + client.setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_CRC64", "W"); + break; + case exports.ChecksumAlgorithm.SHA1: + client.setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_SHA1", "X"); + break; + case exports.ChecksumAlgorithm.SHA256: + client.setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_SHA256", "Y"); + break; + } + const checksumLocationName = getChecksumLocationName(checksumAlgorithm); + const checksumAlgorithmFn = selectChecksumAlgorithmFunction(checksumAlgorithm, config); + if (isStreaming(requestBody)) { + const { getAwsChunkedEncodingStream, bodyLengthChecker } = config; + updatedBody = getAwsChunkedEncodingStream(typeof config.requestStreamBufferSize === "number" && config.requestStreamBufferSize >= 8 * 1024 + ? utilStream.createBufferedReadable(requestBody, config.requestStreamBufferSize, context.logger) + : requestBody, { + base64Encoder, + bodyLengthChecker, + checksumLocationName, + checksumAlgorithmFn, + streamHasher, + }); + updatedHeaders = { + ...headers, + "content-encoding": headers["content-encoding"] + ? `${headers["content-encoding"]},aws-chunked` + : "aws-chunked", + "transfer-encoding": "chunked", + "x-amz-decoded-content-length": headers["content-length"], + "x-amz-content-sha256": "STREAMING-UNSIGNED-PAYLOAD-TRAILER", + "x-amz-trailer": checksumLocationName, + }; + delete updatedHeaders["content-length"]; + } + else if (!hasHeader(checksumLocationName, headers)) { + const rawChecksum = await stringHasher(checksumAlgorithmFn, requestBody); + updatedHeaders = { + ...headers, + [checksumLocationName]: base64Encoder(rawChecksum), + }; + } + } + try { + const result = await next({ + ...args, + request: { + ...request, + headers: updatedHeaders, + body: updatedBody, + }, + }); + return result; + } + catch (e) { + if (e instanceof Error && e.name === "InvalidChunkSizeError") { + try { + if (!e.message.endsWith(".")) { + e.message += "."; + } + e.message += + " Set [requestStreamBufferSize=number e.g. 65_536] in client constructor to instruct AWS SDK to buffer your input stream."; + } + catch (ignored) { + } + } + throw e; + } +}; + +const flexibleChecksumsInputMiddlewareOptions = { + name: "flexibleChecksumsInputMiddleware", + toMiddleware: "serializerMiddleware", + relation: "before", + tags: ["BODY_CHECKSUM"], + override: true, +}; +const flexibleChecksumsInputMiddleware = (config, middlewareConfig) => (next, context) => async (args) => { + const input = args.input; + const { requestValidationModeMember } = middlewareConfig; + const requestChecksumCalculation = await config.requestChecksumCalculation(); + const responseChecksumValidation = await config.responseChecksumValidation(); + switch (requestChecksumCalculation) { + case RequestChecksumCalculation.WHEN_REQUIRED: + client.setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED", "a"); + break; + case RequestChecksumCalculation.WHEN_SUPPORTED: + client.setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED", "Z"); + break; + } + switch (responseChecksumValidation) { + case ResponseChecksumValidation.WHEN_REQUIRED: + client.setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED", "c"); + break; + case ResponseChecksumValidation.WHEN_SUPPORTED: + client.setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED", "b"); + break; + } + if (requestValidationModeMember && !input[requestValidationModeMember]) { + if (responseChecksumValidation === ResponseChecksumValidation.WHEN_SUPPORTED) { + input[requestValidationModeMember] = "ENABLED"; + } + } + return next(args); +}; + +const getChecksumAlgorithmListForResponse = (responseAlgorithms = []) => { + const validChecksumAlgorithms = []; + let i = PRIORITY_ORDER_ALGORITHMS.length; + for (const algorithm of responseAlgorithms) { + const priority = PRIORITY_ORDER_ALGORITHMS.indexOf(algorithm); + if (priority !== -1) { + validChecksumAlgorithms[priority] = algorithm; + } + else { + validChecksumAlgorithms[i++] = algorithm; + } + } + return validChecksumAlgorithms.filter(Boolean); +}; + +const isChecksumWithPartNumber = (checksum) => { + const lastHyphenIndex = checksum.lastIndexOf("-"); + if (lastHyphenIndex !== -1) { + const numberPart = checksum.slice(lastHyphenIndex + 1); + if (!numberPart.startsWith("0")) { + const number = parseInt(numberPart, 10); + if (!isNaN(number) && number >= 1 && number <= 10000) { + return true; + } + } + } + return false; +}; + +const getChecksum = async (body, { checksumAlgorithmFn, base64Encoder }) => base64Encoder(await stringHasher(checksumAlgorithmFn, body)); + +const validateChecksumFromResponse = async (response, { config, responseAlgorithms, logger }) => { + const checksumAlgorithms = getChecksumAlgorithmListForResponse(responseAlgorithms); + const { body: responseBody, headers: responseHeaders } = response; + for (const algorithm of checksumAlgorithms) { + const responseHeader = getChecksumLocationName(algorithm); + const checksumFromResponse = responseHeaders[responseHeader]; + if (checksumFromResponse) { + let checksumAlgorithmFn; + try { + checksumAlgorithmFn = selectChecksumAlgorithmFunction(algorithm, config); + } + catch (error) { + if (algorithm === exports.ChecksumAlgorithm.CRC64NVME) { + logger?.warn(`Skipping ${exports.ChecksumAlgorithm.CRC64NVME} checksum validation: ${error.message}`); + continue; + } + throw error; + } + const { base64Encoder } = config; + if (isStreaming(responseBody)) { + response.body = utilStream.createChecksumStream({ + expectedChecksum: checksumFromResponse, + checksumSourceLocation: responseHeader, + checksum: new checksumAlgorithmFn(), + source: responseBody, + base64Encoder, + }); + return; + } + const checksum = await getChecksum(responseBody, { checksumAlgorithmFn, base64Encoder }); + if (checksum === checksumFromResponse) { + break; + } + throw new Error(`Checksum mismatch: expected "${checksum}" but received "${checksumFromResponse}"` + + ` in response header "${responseHeader}".`); + } + } +}; + +const flexibleChecksumsResponseMiddlewareOptions = { + name: "flexibleChecksumsResponseMiddleware", + toMiddleware: "deserializerMiddleware", + relation: "after", + tags: ["BODY_CHECKSUM"], + override: true, +}; +const flexibleChecksumsResponseMiddleware = (config, middlewareConfig) => (next, context) => async (args) => { + if (!protocolHttp.HttpRequest.isInstance(args.request)) { + return next(args); + } + const input = args.input; + const result = await next(args); + const response = result.response; + const { requestValidationModeMember, responseAlgorithms } = middlewareConfig; + if (requestValidationModeMember && input[requestValidationModeMember] === "ENABLED") { + const { clientName, commandName } = context; + const customChecksumAlgorithms = Object.keys(config.checksumAlgorithms ?? {}).filter((algorithm) => { + const responseHeader = getChecksumLocationName(algorithm); + return response.headers[responseHeader] !== undefined; + }); + const algoList = getChecksumAlgorithmListForResponse([ + ...(responseAlgorithms ?? []), + ...customChecksumAlgorithms, + ]); + const isS3WholeObjectMultipartGetResponseChecksum = clientName === "S3Client" && + commandName === "GetObjectCommand" && + algoList.every((algorithm) => { + const responseHeader = getChecksumLocationName(algorithm); + const checksumFromResponse = response.headers[responseHeader]; + return !checksumFromResponse || isChecksumWithPartNumber(checksumFromResponse); + }); + if (isS3WholeObjectMultipartGetResponseChecksum) { + return result; + } + await validateChecksumFromResponse(response, { + config, + responseAlgorithms: algoList, + logger: context.logger, + }); + } + return result; +}; + +const getFlexibleChecksumsPlugin = (config, middlewareConfig) => ({ + applyToStack: (clientStack) => { + clientStack.add(flexibleChecksumsMiddleware(config, middlewareConfig), flexibleChecksumsMiddlewareOptions); + clientStack.addRelativeTo(flexibleChecksumsInputMiddleware(config, middlewareConfig), flexibleChecksumsInputMiddlewareOptions); + clientStack.addRelativeTo(flexibleChecksumsResponseMiddleware(config, middlewareConfig), flexibleChecksumsResponseMiddlewareOptions); + }, +}); + +const resolveFlexibleChecksumsConfig = (input) => { + const { requestChecksumCalculation, responseChecksumValidation, requestStreamBufferSize } = input; + return Object.assign(input, { + requestChecksumCalculation: utilMiddleware.normalizeProvider(requestChecksumCalculation ?? DEFAULT_REQUEST_CHECKSUM_CALCULATION), + responseChecksumValidation: utilMiddleware.normalizeProvider(responseChecksumValidation ?? DEFAULT_RESPONSE_CHECKSUM_VALIDATION), + requestStreamBufferSize: Number(requestStreamBufferSize ?? 0), + checksumAlgorithms: input.checksumAlgorithms ?? {}, + }); +}; + +exports.CONFIG_REQUEST_CHECKSUM_CALCULATION = CONFIG_REQUEST_CHECKSUM_CALCULATION; +exports.CONFIG_RESPONSE_CHECKSUM_VALIDATION = CONFIG_RESPONSE_CHECKSUM_VALIDATION; +exports.DEFAULT_CHECKSUM_ALGORITHM = DEFAULT_CHECKSUM_ALGORITHM; +exports.DEFAULT_REQUEST_CHECKSUM_CALCULATION = DEFAULT_REQUEST_CHECKSUM_CALCULATION; +exports.DEFAULT_RESPONSE_CHECKSUM_VALIDATION = DEFAULT_RESPONSE_CHECKSUM_VALIDATION; +exports.ENV_REQUEST_CHECKSUM_CALCULATION = ENV_REQUEST_CHECKSUM_CALCULATION; +exports.ENV_RESPONSE_CHECKSUM_VALIDATION = ENV_RESPONSE_CHECKSUM_VALIDATION; +exports.NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS = NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS; +exports.NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS = NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS; +exports.RequestChecksumCalculation = RequestChecksumCalculation; +exports.ResponseChecksumValidation = ResponseChecksumValidation; +exports.flexibleChecksumsMiddleware = flexibleChecksumsMiddleware; +exports.flexibleChecksumsMiddlewareOptions = flexibleChecksumsMiddlewareOptions; +exports.getFlexibleChecksumsPlugin = getFlexibleChecksumsPlugin; +exports.resolveFlexibleChecksumsConfig = resolveFlexibleChecksumsConfig; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.js new file mode 100644 index 0000000..b46f933 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.js @@ -0,0 +1,9 @@ +import { DEFAULT_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation } from "./constants"; +import { SelectorType, stringUnionSelector } from "./stringUnionSelector"; +export const ENV_REQUEST_CHECKSUM_CALCULATION = "AWS_REQUEST_CHECKSUM_CALCULATION"; +export const CONFIG_REQUEST_CHECKSUM_CALCULATION = "request_checksum_calculation"; +export const NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => stringUnionSelector(env, ENV_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation, SelectorType.ENV), + configFileSelector: (profile) => stringUnionSelector(profile, CONFIG_REQUEST_CHECKSUM_CALCULATION, RequestChecksumCalculation, SelectorType.CONFIG), + default: DEFAULT_REQUEST_CHECKSUM_CALCULATION, +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.js new file mode 100644 index 0000000..36619f7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.js @@ -0,0 +1,9 @@ +import { DEFAULT_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation } from "./constants"; +import { SelectorType, stringUnionSelector } from "./stringUnionSelector"; +export const ENV_RESPONSE_CHECKSUM_VALIDATION = "AWS_RESPONSE_CHECKSUM_VALIDATION"; +export const CONFIG_RESPONSE_CHECKSUM_VALIDATION = "response_checksum_validation"; +export const NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => stringUnionSelector(env, ENV_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation, SelectorType.ENV), + configFileSelector: (profile) => stringUnionSelector(profile, CONFIG_RESPONSE_CHECKSUM_VALIDATION, ResponseChecksumValidation, SelectorType.CONFIG), + default: DEFAULT_RESPONSE_CHECKSUM_VALIDATION, +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/configuration.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/configuration.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/configuration.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/constants.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/constants.js new file mode 100644 index 0000000..a817c53 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/constants.js @@ -0,0 +1,25 @@ +export const RequestChecksumCalculation = { + WHEN_SUPPORTED: "WHEN_SUPPORTED", + WHEN_REQUIRED: "WHEN_REQUIRED", +}; +export const DEFAULT_REQUEST_CHECKSUM_CALCULATION = RequestChecksumCalculation.WHEN_SUPPORTED; +export const ResponseChecksumValidation = { + WHEN_SUPPORTED: "WHEN_SUPPORTED", + WHEN_REQUIRED: "WHEN_REQUIRED", +}; +export const DEFAULT_RESPONSE_CHECKSUM_VALIDATION = RequestChecksumCalculation.WHEN_SUPPORTED; +export var ChecksumAlgorithm; +(function (ChecksumAlgorithm) { + ChecksumAlgorithm["MD5"] = "MD5"; + ChecksumAlgorithm["CRC32"] = "CRC32"; + ChecksumAlgorithm["CRC32C"] = "CRC32C"; + ChecksumAlgorithm["CRC64NVME"] = "CRC64NVME"; + ChecksumAlgorithm["SHA1"] = "SHA1"; + ChecksumAlgorithm["SHA256"] = "SHA256"; +})(ChecksumAlgorithm || (ChecksumAlgorithm = {})); +export var ChecksumLocation; +(function (ChecksumLocation) { + ChecksumLocation["HEADER"] = "header"; + ChecksumLocation["TRAILER"] = "trailer"; +})(ChecksumLocation || (ChecksumLocation = {})); +export const DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.CRC32; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsInputMiddleware.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsInputMiddleware.js new file mode 100644 index 0000000..12cf788 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsInputMiddleware.js @@ -0,0 +1,37 @@ +import { setFeature } from "@aws-sdk/core/client"; +import { RequestChecksumCalculation, ResponseChecksumValidation } from "./constants"; +export const flexibleChecksumsInputMiddlewareOptions = { + name: "flexibleChecksumsInputMiddleware", + toMiddleware: "serializerMiddleware", + relation: "before", + tags: ["BODY_CHECKSUM"], + override: true, +}; +export const flexibleChecksumsInputMiddleware = (config, middlewareConfig) => (next, context) => async (args) => { + const input = args.input; + const { requestValidationModeMember } = middlewareConfig; + const requestChecksumCalculation = await config.requestChecksumCalculation(); + const responseChecksumValidation = await config.responseChecksumValidation(); + switch (requestChecksumCalculation) { + case RequestChecksumCalculation.WHEN_REQUIRED: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED", "a"); + break; + case RequestChecksumCalculation.WHEN_SUPPORTED: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED", "Z"); + break; + } + switch (responseChecksumValidation) { + case ResponseChecksumValidation.WHEN_REQUIRED: + setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED", "c"); + break; + case ResponseChecksumValidation.WHEN_SUPPORTED: + setFeature(context, "FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED", "b"); + break; + } + if (requestValidationModeMember && !input[requestValidationModeMember]) { + if (responseChecksumValidation === ResponseChecksumValidation.WHEN_SUPPORTED) { + input[requestValidationModeMember] = "ENABLED"; + } + } + return next(args); +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsMiddleware.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsMiddleware.js new file mode 100644 index 0000000..6b1f980 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsMiddleware.js @@ -0,0 +1,123 @@ +import { setFeature } from "@aws-sdk/core/client"; +import { HttpRequest } from "@smithy/protocol-http"; +import { createBufferedReadable } from "@smithy/util-stream"; +import { ChecksumAlgorithm, DEFAULT_CHECKSUM_ALGORITHM, RequestChecksumCalculation } from "./constants"; +import { getChecksumAlgorithmForRequest } from "./getChecksumAlgorithmForRequest"; +import { getChecksumLocationName } from "./getChecksumLocationName"; +import { hasHeader } from "./hasHeader"; +import { hasHeaderWithPrefix } from "./hasHeaderWithPrefix"; +import { isStreaming } from "./isStreaming"; +import { selectChecksumAlgorithmFunction } from "./selectChecksumAlgorithmFunction"; +import { stringHasher } from "./stringHasher"; +export const flexibleChecksumsMiddlewareOptions = { + name: "flexibleChecksumsMiddleware", + step: "build", + tags: ["BODY_CHECKSUM"], + override: true, +}; +export const flexibleChecksumsMiddleware = (config, middlewareConfig) => (next, context) => async (args) => { + if (!HttpRequest.isInstance(args.request)) { + return next(args); + } + if (hasHeaderWithPrefix("x-amz-checksum-", args.request.headers)) { + return next(args); + } + const { request, input } = args; + const { body: requestBody, headers } = request; + const { base64Encoder, streamHasher } = config; + const { requestChecksumRequired, requestAlgorithmMember } = middlewareConfig; + const requestChecksumCalculation = await config.requestChecksumCalculation(); + const requestAlgorithmMemberName = requestAlgorithmMember?.name; + const requestAlgorithmMemberHttpHeader = requestAlgorithmMember?.httpHeader; + if (requestAlgorithmMemberName && !input[requestAlgorithmMemberName]) { + if (requestChecksumCalculation === RequestChecksumCalculation.WHEN_SUPPORTED || requestChecksumRequired) { + input[requestAlgorithmMemberName] = DEFAULT_CHECKSUM_ALGORITHM; + if (requestAlgorithmMemberHttpHeader) { + headers[requestAlgorithmMemberHttpHeader] = DEFAULT_CHECKSUM_ALGORITHM; + } + } + } + const checksumAlgorithm = getChecksumAlgorithmForRequest(input, { + requestChecksumRequired, + requestAlgorithmMember: requestAlgorithmMember?.name, + requestChecksumCalculation, + }); + let updatedBody = requestBody; + let updatedHeaders = headers; + if (checksumAlgorithm) { + switch (checksumAlgorithm) { + case ChecksumAlgorithm.CRC32: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_CRC32", "U"); + break; + case ChecksumAlgorithm.CRC32C: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_CRC32C", "V"); + break; + case ChecksumAlgorithm.CRC64NVME: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_CRC64", "W"); + break; + case ChecksumAlgorithm.SHA1: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_SHA1", "X"); + break; + case ChecksumAlgorithm.SHA256: + setFeature(context, "FLEXIBLE_CHECKSUMS_REQ_SHA256", "Y"); + break; + } + const checksumLocationName = getChecksumLocationName(checksumAlgorithm); + const checksumAlgorithmFn = selectChecksumAlgorithmFunction(checksumAlgorithm, config); + if (isStreaming(requestBody)) { + const { getAwsChunkedEncodingStream, bodyLengthChecker } = config; + updatedBody = getAwsChunkedEncodingStream(typeof config.requestStreamBufferSize === "number" && config.requestStreamBufferSize >= 8 * 1024 + ? createBufferedReadable(requestBody, config.requestStreamBufferSize, context.logger) + : requestBody, { + base64Encoder, + bodyLengthChecker, + checksumLocationName, + checksumAlgorithmFn, + streamHasher, + }); + updatedHeaders = { + ...headers, + "content-encoding": headers["content-encoding"] + ? `${headers["content-encoding"]},aws-chunked` + : "aws-chunked", + "transfer-encoding": "chunked", + "x-amz-decoded-content-length": headers["content-length"], + "x-amz-content-sha256": "STREAMING-UNSIGNED-PAYLOAD-TRAILER", + "x-amz-trailer": checksumLocationName, + }; + delete updatedHeaders["content-length"]; + } + else if (!hasHeader(checksumLocationName, headers)) { + const rawChecksum = await stringHasher(checksumAlgorithmFn, requestBody); + updatedHeaders = { + ...headers, + [checksumLocationName]: base64Encoder(rawChecksum), + }; + } + } + try { + const result = await next({ + ...args, + request: { + ...request, + headers: updatedHeaders, + body: updatedBody, + }, + }); + return result; + } + catch (e) { + if (e instanceof Error && e.name === "InvalidChunkSizeError") { + try { + if (!e.message.endsWith(".")) { + e.message += "."; + } + e.message += + " Set [requestStreamBufferSize=number e.g. 65_536] in client constructor to instruct AWS SDK to buffer your input stream."; + } + catch (ignored) { + } + } + throw e; + } +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsResponseMiddleware.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsResponseMiddleware.js new file mode 100644 index 0000000..383b257 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsResponseMiddleware.js @@ -0,0 +1,48 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { getChecksumAlgorithmListForResponse } from "./getChecksumAlgorithmListForResponse"; +import { getChecksumLocationName } from "./getChecksumLocationName"; +import { isChecksumWithPartNumber } from "./isChecksumWithPartNumber"; +import { validateChecksumFromResponse } from "./validateChecksumFromResponse"; +export const flexibleChecksumsResponseMiddlewareOptions = { + name: "flexibleChecksumsResponseMiddleware", + toMiddleware: "deserializerMiddleware", + relation: "after", + tags: ["BODY_CHECKSUM"], + override: true, +}; +export const flexibleChecksumsResponseMiddleware = (config, middlewareConfig) => (next, context) => async (args) => { + if (!HttpRequest.isInstance(args.request)) { + return next(args); + } + const input = args.input; + const result = await next(args); + const response = result.response; + const { requestValidationModeMember, responseAlgorithms } = middlewareConfig; + if (requestValidationModeMember && input[requestValidationModeMember] === "ENABLED") { + const { clientName, commandName } = context; + const customChecksumAlgorithms = Object.keys(config.checksumAlgorithms ?? {}).filter((algorithm) => { + const responseHeader = getChecksumLocationName(algorithm); + return response.headers[responseHeader] !== undefined; + }); + const algoList = getChecksumAlgorithmListForResponse([ + ...(responseAlgorithms ?? []), + ...customChecksumAlgorithms, + ]); + const isS3WholeObjectMultipartGetResponseChecksum = clientName === "S3Client" && + commandName === "GetObjectCommand" && + algoList.every((algorithm) => { + const responseHeader = getChecksumLocationName(algorithm); + const checksumFromResponse = response.headers[responseHeader]; + return !checksumFromResponse || isChecksumWithPartNumber(checksumFromResponse); + }); + if (isS3WholeObjectMultipartGetResponseChecksum) { + return result; + } + await validateChecksumFromResponse(response, { + config, + responseAlgorithms: algoList, + logger: context.logger, + }); + } + return result; +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksum.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksum.js new file mode 100644 index 0000000..886d669 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksum.js @@ -0,0 +1,2 @@ +import { stringHasher } from "./stringHasher"; +export const getChecksum = async (body, { checksumAlgorithmFn, base64Encoder }) => base64Encoder(await stringHasher(checksumAlgorithmFn, body)); diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmForRequest.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmForRequest.js new file mode 100644 index 0000000..5cc5652 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmForRequest.js @@ -0,0 +1,13 @@ +import { DEFAULT_CHECKSUM_ALGORITHM, RequestChecksumCalculation } from "./constants"; +export const getChecksumAlgorithmForRequest = (input, { requestChecksumRequired, requestAlgorithmMember, requestChecksumCalculation }) => { + if (!requestAlgorithmMember) { + return requestChecksumCalculation === RequestChecksumCalculation.WHEN_SUPPORTED || requestChecksumRequired + ? DEFAULT_CHECKSUM_ALGORITHM + : undefined; + } + if (!input[requestAlgorithmMember]) { + return undefined; + } + const checksumAlgorithm = input[requestAlgorithmMember]; + return checksumAlgorithm; +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmListForResponse.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmListForResponse.js new file mode 100644 index 0000000..8f2860c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumAlgorithmListForResponse.js @@ -0,0 +1,15 @@ +import { PRIORITY_ORDER_ALGORITHMS } from "./types"; +export const getChecksumAlgorithmListForResponse = (responseAlgorithms = []) => { + const validChecksumAlgorithms = []; + let i = PRIORITY_ORDER_ALGORITHMS.length; + for (const algorithm of responseAlgorithms) { + const priority = PRIORITY_ORDER_ALGORITHMS.indexOf(algorithm); + if (priority !== -1) { + validChecksumAlgorithms[priority] = algorithm; + } + else { + validChecksumAlgorithms[i++] = algorithm; + } + } + return validChecksumAlgorithms.filter(Boolean); +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumLocationName.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumLocationName.js new file mode 100644 index 0000000..0e2d21e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksumLocationName.js @@ -0,0 +1,2 @@ +import { ChecksumAlgorithm } from "./constants"; +export const getChecksumLocationName = (algorithm) => algorithm === ChecksumAlgorithm.MD5 ? "content-md5" : `x-amz-checksum-${algorithm.toLowerCase()}`; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.browser.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.browser.js new file mode 100644 index 0000000..904c4e0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.browser.js @@ -0,0 +1,2 @@ +import { AwsCrc32 } from "@aws-crypto/crc32"; +export const getCrc32ChecksumAlgorithmFunction = () => AwsCrc32; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.js new file mode 100644 index 0000000..7698356 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.js @@ -0,0 +1,21 @@ +import { AwsCrc32 } from "@aws-crypto/crc32"; +import { numToUint8 } from "@aws-crypto/util"; +import * as zlib from "node:zlib"; +class NodeCrc32 { + checksum = 0; + update(data) { + this.checksum = zlib.crc32(data, this.checksum); + } + async digest() { + return numToUint8(this.checksum); + } + reset() { + this.checksum = 0; + } +} +export const getCrc32ChecksumAlgorithmFunction = () => { + if (typeof zlib.crc32 === "undefined") { + return AwsCrc32; + } + return NodeCrc32; +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getFlexibleChecksumsPlugin.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getFlexibleChecksumsPlugin.js new file mode 100644 index 0000000..dfe9ebb --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getFlexibleChecksumsPlugin.js @@ -0,0 +1,10 @@ +import { flexibleChecksumsInputMiddleware, flexibleChecksumsInputMiddlewareOptions, } from "./flexibleChecksumsInputMiddleware"; +import { flexibleChecksumsMiddleware, flexibleChecksumsMiddlewareOptions } from "./flexibleChecksumsMiddleware"; +import { flexibleChecksumsResponseMiddleware, flexibleChecksumsResponseMiddlewareOptions, } from "./flexibleChecksumsResponseMiddleware"; +export const getFlexibleChecksumsPlugin = (config, middlewareConfig) => ({ + applyToStack: (clientStack) => { + clientStack.add(flexibleChecksumsMiddleware(config, middlewareConfig), flexibleChecksumsMiddlewareOptions); + clientStack.addRelativeTo(flexibleChecksumsInputMiddleware(config, middlewareConfig), flexibleChecksumsInputMiddlewareOptions); + clientStack.addRelativeTo(flexibleChecksumsResponseMiddleware(config, middlewareConfig), flexibleChecksumsResponseMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/hasHeader.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/hasHeader.js new file mode 100644 index 0000000..8455075 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/hasHeader.js @@ -0,0 +1,9 @@ +export const hasHeader = (header, headers) => { + const soughtHeader = header.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return true; + } + } + return false; +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/hasHeaderWithPrefix.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/hasHeaderWithPrefix.js new file mode 100644 index 0000000..cf9bdfe --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/hasHeaderWithPrefix.js @@ -0,0 +1,9 @@ +export const hasHeaderWithPrefix = (headerPrefix, headers) => { + const soughtHeaderPrefix = headerPrefix.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (headerName.toLowerCase().startsWith(soughtHeaderPrefix)) { + return true; + } + } + return false; +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/index.js new file mode 100644 index 0000000..c014f44 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS"; +export * from "./NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS"; +export * from "./constants"; +export * from "./flexibleChecksumsMiddleware"; +export * from "./getFlexibleChecksumsPlugin"; +export * from "./resolveFlexibleChecksumsConfig"; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isChecksumWithPartNumber.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isChecksumWithPartNumber.js new file mode 100644 index 0000000..aa1d840 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isChecksumWithPartNumber.js @@ -0,0 +1,13 @@ +export const isChecksumWithPartNumber = (checksum) => { + const lastHyphenIndex = checksum.lastIndexOf("-"); + if (lastHyphenIndex !== -1) { + const numberPart = checksum.slice(lastHyphenIndex + 1); + if (!numberPart.startsWith("0")) { + const number = parseInt(numberPart, 10); + if (!isNaN(number) && number >= 1 && number <= 10000) { + return true; + } + } + } + return false; +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isStreaming.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isStreaming.js new file mode 100644 index 0000000..e9fcd7e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/isStreaming.js @@ -0,0 +1,2 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +export const isStreaming = (body) => body !== undefined && typeof body !== "string" && !ArrayBuffer.isView(body) && !isArrayBuffer(body); diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/resolveFlexibleChecksumsConfig.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/resolveFlexibleChecksumsConfig.js new file mode 100644 index 0000000..7ee20d2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/resolveFlexibleChecksumsConfig.js @@ -0,0 +1,11 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +import { DEFAULT_REQUEST_CHECKSUM_CALCULATION, DEFAULT_RESPONSE_CHECKSUM_VALIDATION } from "./constants"; +export const resolveFlexibleChecksumsConfig = (input) => { + const { requestChecksumCalculation, responseChecksumValidation, requestStreamBufferSize } = input; + return Object.assign(input, { + requestChecksumCalculation: normalizeProvider(requestChecksumCalculation ?? DEFAULT_REQUEST_CHECKSUM_CALCULATION), + responseChecksumValidation: normalizeProvider(responseChecksumValidation ?? DEFAULT_RESPONSE_CHECKSUM_VALIDATION), + requestStreamBufferSize: Number(requestStreamBufferSize ?? 0), + checksumAlgorithms: input.checksumAlgorithms ?? {}, + }); +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/selectChecksumAlgorithmFunction.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/selectChecksumAlgorithmFunction.js new file mode 100644 index 0000000..ec9ccf5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/selectChecksumAlgorithmFunction.js @@ -0,0 +1,32 @@ +import { AwsCrc32c } from "@aws-crypto/crc32c"; +import { Crc64Nvme, crc64NvmeCrtContainer } from "@aws-sdk/crc64-nvme"; +import { ChecksumAlgorithm } from "./constants"; +import { getCrc32ChecksumAlgorithmFunction } from "./getCrc32ChecksumAlgorithmFunction"; +import { CLIENT_SUPPORTED_ALGORITHMS } from "./types"; +export const selectChecksumAlgorithmFunction = (checksumAlgorithm, config) => { + const { checksumAlgorithms = {} } = config; + switch (checksumAlgorithm) { + case ChecksumAlgorithm.MD5: + return checksumAlgorithms?.MD5 ?? config.md5; + case ChecksumAlgorithm.CRC32: + return checksumAlgorithms?.CRC32 ?? getCrc32ChecksumAlgorithmFunction(); + case ChecksumAlgorithm.CRC32C: + return checksumAlgorithms?.CRC32C ?? AwsCrc32c; + case ChecksumAlgorithm.CRC64NVME: + if (typeof crc64NvmeCrtContainer.CrtCrc64Nvme !== "function") { + return checksumAlgorithms?.CRC64NVME ?? Crc64Nvme; + } + return checksumAlgorithms?.CRC64NVME ?? crc64NvmeCrtContainer.CrtCrc64Nvme; + case ChecksumAlgorithm.SHA1: + return checksumAlgorithms?.SHA1 ?? config.sha1; + case ChecksumAlgorithm.SHA256: + return checksumAlgorithms?.SHA256 ?? config.sha256; + default: + if (checksumAlgorithms?.[checksumAlgorithm]) { + return checksumAlgorithms[checksumAlgorithm]; + } + throw new Error(`The checksum algorithm "${checksumAlgorithm}" is not supported by the client.` + + ` Select one of ${CLIENT_SUPPORTED_ALGORITHMS}, or provide an implementation to ` + + ` the client constructor checksums field.`); + } +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/stringHasher.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/stringHasher.js new file mode 100644 index 0000000..642325d --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/stringHasher.js @@ -0,0 +1,6 @@ +import { toUint8Array } from "@smithy/util-utf8"; +export const stringHasher = (checksumAlgorithmFn, body) => { + const hash = new checksumAlgorithmFn(); + hash.update(toUint8Array(body || "")); + return hash.digest(); +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/stringUnionSelector.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/stringUnionSelector.js new file mode 100644 index 0000000..5f5bfc8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/stringUnionSelector.js @@ -0,0 +1,14 @@ +export var SelectorType; +(function (SelectorType) { + SelectorType["ENV"] = "env"; + SelectorType["CONFIG"] = "shared config entry"; +})(SelectorType || (SelectorType = {})); +export const stringUnionSelector = (obj, key, union, type) => { + if (!(key in obj)) + return undefined; + const value = obj[key].toUpperCase(); + if (!Object.values(union).includes(value)) { + throw new TypeError(`Cannot load ${type} '${key}'. Expected one of ${Object.values(union)}, got '${obj[key]}'.`); + } + return value; +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/types.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/types.js new file mode 100644 index 0000000..751d4c5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/types.js @@ -0,0 +1,15 @@ +import { ChecksumAlgorithm } from "./constants"; +export const CLIENT_SUPPORTED_ALGORITHMS = [ + ChecksumAlgorithm.CRC32, + ChecksumAlgorithm.CRC32C, + ChecksumAlgorithm.CRC64NVME, + ChecksumAlgorithm.SHA1, + ChecksumAlgorithm.SHA256, +]; +export const PRIORITY_ORDER_ALGORITHMS = [ + ChecksumAlgorithm.SHA256, + ChecksumAlgorithm.SHA1, + ChecksumAlgorithm.CRC32, + ChecksumAlgorithm.CRC32C, + ChecksumAlgorithm.CRC64NVME, +]; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/validateChecksumFromResponse.js b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/validateChecksumFromResponse.js new file mode 100644 index 0000000..1ce8d74 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/validateChecksumFromResponse.js @@ -0,0 +1,45 @@ +import { createChecksumStream } from "@smithy/util-stream"; +import { ChecksumAlgorithm } from "./constants"; +import { getChecksum } from "./getChecksum"; +import { getChecksumAlgorithmListForResponse } from "./getChecksumAlgorithmListForResponse"; +import { getChecksumLocationName } from "./getChecksumLocationName"; +import { isStreaming } from "./isStreaming"; +import { selectChecksumAlgorithmFunction } from "./selectChecksumAlgorithmFunction"; +export const validateChecksumFromResponse = async (response, { config, responseAlgorithms, logger }) => { + const checksumAlgorithms = getChecksumAlgorithmListForResponse(responseAlgorithms); + const { body: responseBody, headers: responseHeaders } = response; + for (const algorithm of checksumAlgorithms) { + const responseHeader = getChecksumLocationName(algorithm); + const checksumFromResponse = responseHeaders[responseHeader]; + if (checksumFromResponse) { + let checksumAlgorithmFn; + try { + checksumAlgorithmFn = selectChecksumAlgorithmFunction(algorithm, config); + } + catch (error) { + if (algorithm === ChecksumAlgorithm.CRC64NVME) { + logger?.warn(`Skipping ${ChecksumAlgorithm.CRC64NVME} checksum validation: ${error.message}`); + continue; + } + throw error; + } + const { base64Encoder } = config; + if (isStreaming(responseBody)) { + response.body = createChecksumStream({ + expectedChecksum: checksumFromResponse, + checksumSourceLocation: responseHeader, + checksum: new checksumAlgorithmFn(), + source: responseBody, + base64Encoder, + }); + return; + } + const checksum = await getChecksum(responseBody, { checksumAlgorithmFn, base64Encoder }); + if (checksum === checksumFromResponse) { + break; + } + throw new Error(`Checksum mismatch: expected "${checksum}" but received "${checksumFromResponse}"` + + ` in response header "${responseHeader}".`); + } + } +}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.d.ts new file mode 100644 index 0000000..b74b243 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.d.ts @@ -0,0 +1,14 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { RequestChecksumCalculation } from "./constants"; +/** + * @internal + */ +export declare const ENV_REQUEST_CHECKSUM_CALCULATION = "AWS_REQUEST_CHECKSUM_CALCULATION"; +/** + * @internal + */ +export declare const CONFIG_REQUEST_CHECKSUM_CALCULATION = "request_checksum_calculation"; +/** + * @internal + */ +export declare const NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.d.ts new file mode 100644 index 0000000..2b98b48 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.d.ts @@ -0,0 +1,14 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { ResponseChecksumValidation } from "./constants"; +/** + * @internal + */ +export declare const ENV_RESPONSE_CHECKSUM_VALIDATION = "AWS_RESPONSE_CHECKSUM_VALIDATION"; +/** + * @internal + */ +export declare const CONFIG_RESPONSE_CHECKSUM_VALIDATION = "response_checksum_validation"; +/** + * @internal + */ +export declare const NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/configuration.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/configuration.d.ts new file mode 100644 index 0000000..ac3ffa7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/configuration.d.ts @@ -0,0 +1,58 @@ +import type { BodyLengthCalculator, ChecksumConstructor, Encoder, GetAwsChunkedEncodingStream, HashConstructor, Provider, StreamCollector, StreamHasher } from "@smithy/types"; +import type { RequestChecksumCalculation, ResponseChecksumValidation } from "./constants"; +import type { FlexibleChecksumsInputConfig } from "./resolveFlexibleChecksumsConfig"; +/** + * @internal + */ +export interface PreviouslyResolved { + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder: Encoder; + /** + * A function that can calculate the length of a body. + */ + bodyLengthChecker: BodyLengthCalculator; + /** + * A function that returns Readable Stream which follows aws-chunked encoding stream. + */ + getAwsChunkedEncodingStream: GetAwsChunkedEncodingStream; + /** + * A constructor for a class implementing the {@link Hash} interface that computes MD5 hashes. + * @internal + */ + md5: ChecksumConstructor | HashConstructor; + /** + * Determines when a checksum will be calculated for request payloads + */ + requestChecksumCalculation: Provider; + /** + * Determines when a checksum will be calculated for response payloads + */ + responseChecksumValidation: Provider; + /** + * A constructor for a class implementing the {@link Hash} interface that computes SHA1 hashes. + * @internal + */ + sha1: ChecksumConstructor | HashConstructor; + /** + * A constructor for a class implementing the {@link Hash} interface that computes SHA256 hashes. + * @internal + */ + sha256: ChecksumConstructor | HashConstructor; + /** + * A function that, given a hash constructor and a stream, calculates the hash of the streamed value. + * @internal + */ + streamHasher: StreamHasher; + /** + * Collects streams into buffers. + */ + streamCollector: StreamCollector; + /** + * Minimum bytes from a stream to buffer into a chunk before passing to chunked encoding. + */ + requestStreamBufferSize: number; + checksumAlgorithms?: FlexibleChecksumsInputConfig["checksumAlgorithms"]; +} diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/constants.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/constants.d.ts new file mode 100644 index 0000000..5da3f00 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/constants.d.ts @@ -0,0 +1,83 @@ +/** + * Determines when a checksum will be calculated for request payloads. + * @public + */ +export declare const RequestChecksumCalculation: { + /** + * When set, a checksum will be calculated for all request payloads of operations + * modeled with the {@link httpChecksum} trait where `requestChecksumRequired` is `true` + * AND/OR a `requestAlgorithmMember` is modeled. + * {@link https://smithy.io/2.0/aws/aws-core.html#aws-protocols-httpchecksum-trait httpChecksum} + */ + readonly WHEN_SUPPORTED: "WHEN_SUPPORTED"; + /** + * When set, a checksum will only be calculated for request payloads of operations + * modeled with the {@link httpChecksum} trait where `requestChecksumRequired` is `true` + * OR where a `requestAlgorithmMember` is modeled and the user sets it. + * {@link https://smithy.io/2.0/aws/aws-core.html#aws-protocols-httpchecksum-trait httpChecksum} + */ + readonly WHEN_REQUIRED: "WHEN_REQUIRED"; +}; +/** + * @public + */ +export type RequestChecksumCalculation = (typeof RequestChecksumCalculation)[keyof typeof RequestChecksumCalculation]; +/** + * @internal + */ +export declare const DEFAULT_REQUEST_CHECKSUM_CALCULATION: "WHEN_SUPPORTED"; +/** + * Determines when checksum validation will be performed on response payloads. + * @public + */ +export declare const ResponseChecksumValidation: { + /** + * When set, checksum validation MUST be performed on all response payloads of operations + * modeled with the {@link httpChecksum} trait where `responseAlgorithms` is modeled, + * except when no modeled checksum algorithms are supported by an SDK. + * {@link https://smithy.io/2.0/aws/aws-core.html#aws-protocols-httpchecksum-trait httpChecksum} + */ + readonly WHEN_SUPPORTED: "WHEN_SUPPORTED"; + /** + * When set, checksum validation MUST NOT be performed on response payloads of operations UNLESS + * the SDK supports the modeled checksum algorithms AND the user has set the `requestValidationModeMember` to `ENABLED`. + * It is currently impossible to model an operation as requiring a response checksum, + * but this setting leaves the door open for future updates. + */ + readonly WHEN_REQUIRED: "WHEN_REQUIRED"; +}; +/** + * @public + */ +export type ResponseChecksumValidation = (typeof ResponseChecksumValidation)[keyof typeof ResponseChecksumValidation]; +/** + * @internal + */ +export declare const DEFAULT_RESPONSE_CHECKSUM_VALIDATION: "WHEN_SUPPORTED"; +/** + * Checksum Algorithms supported by the SDK. + * @public + */ +export declare enum ChecksumAlgorithm { + /** + * @deprecated Use {@link ChecksumAlgorithm.CRC32} instead. + */ + MD5 = "MD5", + CRC32 = "CRC32", + CRC32C = "CRC32C", + CRC64NVME = "CRC64NVME", + SHA1 = "SHA1", + SHA256 = "SHA256" +} +/** + * Location when the checksum is stored in the request body. + * @internal + */ +export declare enum ChecksumLocation { + HEADER = "header", + TRAILER = "trailer" +} +/** + * @internal + */ +export declare const DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.CRC32; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsInputMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsInputMiddleware.d.ts new file mode 100644 index 0000000..5ba128b --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsInputMiddleware.d.ts @@ -0,0 +1,22 @@ +import type { RelativeMiddlewareOptions, SerializeMiddleware } from "@smithy/types"; +import type { PreviouslyResolved } from "./configuration"; +/** + * @internal + */ +export interface FlexibleChecksumsInputMiddlewareConfig { + /** + * Defines a top-level operation input member used to opt-in to best-effort validation + * of a checksum returned in the HTTP response of the operation. + */ + requestValidationModeMember?: string; +} +/** + * @internal + */ +export declare const flexibleChecksumsInputMiddlewareOptions: RelativeMiddlewareOptions; +/** + * @internal + * + * The input counterpart to the flexibleChecksumsMiddleware. + */ +export declare const flexibleChecksumsInputMiddleware: (config: PreviouslyResolved, middlewareConfig: FlexibleChecksumsInputMiddlewareConfig) => SerializeMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsMiddleware.d.ts new file mode 100644 index 0000000..363b0a6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsMiddleware.d.ts @@ -0,0 +1,33 @@ +import type { BuildHandlerOptions, BuildMiddleware } from "@smithy/types"; +import type { PreviouslyResolved } from "./configuration"; +/** + * @internal + */ +export interface FlexibleChecksumsRequestMiddlewareConfig { + /** + * Indicates an operation requires a checksum in its HTTP request. + */ + requestChecksumRequired: boolean; + /** + * Member that is used to configure request checksum behavior. + */ + requestAlgorithmMember?: { + /** + * Defines a top-level operation input member that is used to configure request checksum behavior. + */ + name: string; + /** + * The {@link httpHeader} value, if present. + * {@link https://smithy.io/2.0/spec/http-bindings.html#httpheader-trait httpHeader} + */ + httpHeader?: string; + }; +} +/** + * @internal + */ +export declare const flexibleChecksumsMiddlewareOptions: BuildHandlerOptions; +/** + * @internal + */ +export declare const flexibleChecksumsMiddleware: (config: PreviouslyResolved, middlewareConfig: FlexibleChecksumsRequestMiddlewareConfig) => BuildMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsResponseMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsResponseMiddleware.d.ts new file mode 100644 index 0000000..e0f2404 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsResponseMiddleware.d.ts @@ -0,0 +1,27 @@ +import type { DeserializeMiddleware, RelativeMiddlewareOptions } from "@smithy/types"; +import type { PreviouslyResolved } from "./configuration"; +/** + * @internal + */ +export interface FlexibleChecksumsResponseMiddlewareConfig { + /** + * Defines a top-level operation input member used to opt-in to best-effort validation + * of a checksum returned in the HTTP response of the operation. + */ + requestValidationModeMember?: string; + /** + * Defines the checksum algorithms clients SHOULD look for when validating checksums + * returned in the HTTP response. + */ + responseAlgorithms?: string[]; +} +/** + * @internal + */ +export declare const flexibleChecksumsResponseMiddlewareOptions: RelativeMiddlewareOptions; +/** + * @internal + * + * The validation counterpart to the flexibleChecksumsMiddleware. + */ +export declare const flexibleChecksumsResponseMiddleware: (config: PreviouslyResolved, middlewareConfig: FlexibleChecksumsResponseMiddlewareConfig) => DeserializeMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksum.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksum.d.ts new file mode 100644 index 0000000..e97fefb --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksum.d.ts @@ -0,0 +1,6 @@ +import type { ChecksumConstructor, Encoder, HashConstructor } from "@smithy/types"; +export interface GetChecksumDigestOptions { + checksumAlgorithmFn: ChecksumConstructor | HashConstructor; + base64Encoder: Encoder; +} +export declare const getChecksum: (body: unknown, { checksumAlgorithmFn, base64Encoder }: GetChecksumDigestOptions) => Promise; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksumAlgorithmForRequest.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksumAlgorithmForRequest.d.ts new file mode 100644 index 0000000..15d776e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksumAlgorithmForRequest.d.ts @@ -0,0 +1,22 @@ +import type { ChecksumAlgorithm } from "./constants"; +import { RequestChecksumCalculation } from "./constants"; +export interface GetChecksumAlgorithmForRequestOptions { + /** + * Indicates an operation requires a checksum in its HTTP request. + */ + requestChecksumRequired: boolean; + /** + * Defines a top-level operation input member that is used to configure request checksum behavior. + */ + requestAlgorithmMember?: string; + /** + * Determines when a checksum will be calculated for request payloads + */ + requestChecksumCalculation: RequestChecksumCalculation; +} +/** + * Returns the checksum algorithm to use for the request, along with + * the priority array of location to use to populate checksum and names + * to be used as a key at the location. + */ +export declare const getChecksumAlgorithmForRequest: (input: any, { requestChecksumRequired, requestAlgorithmMember, requestChecksumCalculation }: GetChecksumAlgorithmForRequestOptions) => ChecksumAlgorithm | string | undefined; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksumAlgorithmListForResponse.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksumAlgorithmListForResponse.d.ts new file mode 100644 index 0000000..42f1195 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksumAlgorithmListForResponse.d.ts @@ -0,0 +1,6 @@ +import type { ChecksumAlgorithm } from "./constants"; +/** + * Returns the priority array of algorithm to use to verify checksum and names + * to be used as a key in the response header. + */ +export declare const getChecksumAlgorithmListForResponse: (responseAlgorithms?: string[]) => ChecksumAlgorithm[]; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksumLocationName.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksumLocationName.d.ts new file mode 100644 index 0000000..3f7d6b8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksumLocationName.d.ts @@ -0,0 +1,5 @@ +import { ChecksumAlgorithm } from "./constants"; +/** + * Returns location (header/trailer) name to use to populate checksum in. + */ +export declare const getChecksumLocationName: (algorithm: ChecksumAlgorithm | string) => string; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.browser.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.browser.d.ts new file mode 100644 index 0000000..889142f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.browser.d.ts @@ -0,0 +1,2 @@ +import { AwsCrc32 } from "@aws-crypto/crc32"; +export declare const getCrc32ChecksumAlgorithmFunction: () => typeof AwsCrc32; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.d.ts new file mode 100644 index 0000000..43ab51b --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.d.ts @@ -0,0 +1,10 @@ +import { AwsCrc32 } from "@aws-crypto/crc32"; +import type { Checksum } from "@smithy/types"; +declare class NodeCrc32 implements Checksum { + private checksum; + update(data: Uint8Array): void; + digest(): Promise; + reset(): void; +} +export declare const getCrc32ChecksumAlgorithmFunction: () => typeof NodeCrc32 | typeof AwsCrc32; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getFlexibleChecksumsPlugin.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getFlexibleChecksumsPlugin.d.ts new file mode 100644 index 0000000..ce223be --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getFlexibleChecksumsPlugin.d.ts @@ -0,0 +1,14 @@ +import type { Pluggable } from "@smithy/types"; +import type { PreviouslyResolved } from "./configuration"; +import type { FlexibleChecksumsInputMiddlewareConfig } from "./flexibleChecksumsInputMiddleware"; +import type { FlexibleChecksumsRequestMiddlewareConfig } from "./flexibleChecksumsMiddleware"; +import type { FlexibleChecksumsResponseMiddlewareConfig } from "./flexibleChecksumsResponseMiddleware"; +/** + * @internal + */ +export interface FlexibleChecksumsMiddlewareConfig extends FlexibleChecksumsRequestMiddlewareConfig, FlexibleChecksumsInputMiddlewareConfig, FlexibleChecksumsResponseMiddlewareConfig { +} +/** + * @internal + */ +export declare const getFlexibleChecksumsPlugin: (config: PreviouslyResolved, middlewareConfig: FlexibleChecksumsMiddlewareConfig) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/hasHeader.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/hasHeader.d.ts new file mode 100644 index 0000000..d0ae5f9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/hasHeader.d.ts @@ -0,0 +1,6 @@ +import type { HeaderBag } from "@smithy/types"; +/** + * Returns true if header is present in headers. + * Comparisons are case-insensitive. + */ +export declare const hasHeader: (header: string, headers: HeaderBag) => boolean; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/hasHeaderWithPrefix.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/hasHeaderWithPrefix.d.ts new file mode 100644 index 0000000..69c63f3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/hasHeaderWithPrefix.d.ts @@ -0,0 +1,6 @@ +import type { HeaderBag } from "@smithy/types"; +/** + * Returns true if header with headerPrefix is present in headers. + * Comparisons are case-insensitive. + */ +export declare const hasHeaderWithPrefix: (headerPrefix: string, headers: HeaderBag) => boolean; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/index.d.ts new file mode 100644 index 0000000..c014f44 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS"; +export * from "./NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS"; +export * from "./constants"; +export * from "./flexibleChecksumsMiddleware"; +export * from "./getFlexibleChecksumsPlugin"; +export * from "./resolveFlexibleChecksumsConfig"; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/isChecksumWithPartNumber.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/isChecksumWithPartNumber.d.ts new file mode 100644 index 0000000..99f6c79 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/isChecksumWithPartNumber.d.ts @@ -0,0 +1 @@ +export declare const isChecksumWithPartNumber: (checksum: string) => boolean; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/isStreaming.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/isStreaming.d.ts new file mode 100644 index 0000000..8f38d14 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/isStreaming.d.ts @@ -0,0 +1,4 @@ +/** + * Returns true if the given value is a streaming response. + */ +export declare const isStreaming: (body: unknown) => boolean; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/resolveFlexibleChecksumsConfig.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/resolveFlexibleChecksumsConfig.d.ts new file mode 100644 index 0000000..e4a8102 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/resolveFlexibleChecksumsConfig.d.ts @@ -0,0 +1,57 @@ +import type { ChecksumConstructor, Provider } from "@smithy/types"; +import type { RequestChecksumCalculation, ResponseChecksumValidation } from "./constants"; +/** + * @public + */ +export interface FlexibleChecksumsInputConfig { + /** + * Determines when a checksum will be calculated for request payloads. + */ + requestChecksumCalculation?: RequestChecksumCalculation | Provider; + /** + * Determines when checksum validation will be performed on response payloads. + */ + responseChecksumValidation?: ResponseChecksumValidation | Provider; + /** + * Default 0 (off). + * + * When set to a value greater than or equal to 8192, sets the minimum number + * of bytes to buffer into a chunk when processing input streams + * with chunked encoding (that is, when request checksums are enabled). + * A minimum of 8kb = 8 * 1024 is required, and 64kb or higher is recommended. + * + * See https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-streaming.html. + * + * This has a slight performance penalty because it must wrap and buffer + * your input stream. + * You do not need to set this value if your stream already flows chunks + * of 8kb or greater. + */ + requestStreamBufferSize?: number | false; + /** + * Optional implementations of checksum algorithms adhering to the + * Checksum interface. + */ + checksumAlgorithms?: { + CRC32?: ChecksumConstructor; + CRC32C?: ChecksumConstructor; + CRC64NVME?: ChecksumConstructor; + SHA1?: ChecksumConstructor; + SHA256?: ChecksumConstructor; + } & { + [algorithmId: string]: ChecksumConstructor; + }; +} +/** + * @internal + */ +export interface FlexibleChecksumsResolvedConfig { + requestChecksumCalculation: Provider; + responseChecksumValidation: Provider; + requestStreamBufferSize: number; + checksumAlgorithms?: FlexibleChecksumsInputConfig["checksumAlgorithms"]; +} +/** + * @internal + */ +export declare const resolveFlexibleChecksumsConfig: (input: T & FlexibleChecksumsInputConfig) => T & FlexibleChecksumsResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/selectChecksumAlgorithmFunction.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/selectChecksumAlgorithmFunction.d.ts new file mode 100644 index 0000000..2a19160 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/selectChecksumAlgorithmFunction.d.ts @@ -0,0 +1,7 @@ +import type { ChecksumConstructor, HashConstructor } from "@smithy/types"; +import type { PreviouslyResolved } from "./configuration"; +import { ChecksumAlgorithm } from "./constants"; +/** + * Returns the function that will compute the checksum for the given {@link ChecksumAlgorithm}. + */ +export declare const selectChecksumAlgorithmFunction: (checksumAlgorithm: ChecksumAlgorithm | string, config: PreviouslyResolved) => ChecksumConstructor | HashConstructor; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/stringHasher.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/stringHasher.d.ts new file mode 100644 index 0000000..ed9433c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/stringHasher.d.ts @@ -0,0 +1,5 @@ +import type { ChecksumConstructor, HashConstructor } from "@smithy/types"; +/** + * A function that, given a hash constructor and a string, calculates the hash of the string. + */ +export declare const stringHasher: (checksumAlgorithmFn: ChecksumConstructor | HashConstructor, body: any) => Promise; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/stringUnionSelector.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/stringUnionSelector.d.ts new file mode 100644 index 0000000..446f09d --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/stringUnionSelector.d.ts @@ -0,0 +1,12 @@ +export declare enum SelectorType { + ENV = "env", + CONFIG = "shared config entry" +} +/** + * Returns undefined, if obj[key] is not defined. + * Returns string value, if the string is defined in obj[key] and it's uppercase matches union value. + * Throws error for all other cases. + * + * @internal + */ +export declare const stringUnionSelector: (obj: Record, key: string, union: U, type: SelectorType) => U[K] | undefined; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.d.ts new file mode 100644 index 0000000..4ce4dc5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS.d.ts @@ -0,0 +1,7 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { RequestChecksumCalculation } from "./constants"; +export declare const ENV_REQUEST_CHECKSUM_CALCULATION = + "AWS_REQUEST_CHECKSUM_CALCULATION"; +export declare const CONFIG_REQUEST_CHECKSUM_CALCULATION = + "request_checksum_calculation"; +export declare const NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.d.ts new file mode 100644 index 0000000..be8aa90 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS.d.ts @@ -0,0 +1,7 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { ResponseChecksumValidation } from "./constants"; +export declare const ENV_RESPONSE_CHECKSUM_VALIDATION = + "AWS_RESPONSE_CHECKSUM_VALIDATION"; +export declare const CONFIG_RESPONSE_CHECKSUM_VALIDATION = + "response_checksum_validation"; +export declare const NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/configuration.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/configuration.d.ts new file mode 100644 index 0000000..0f06fb0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/configuration.d.ts @@ -0,0 +1,29 @@ +import { + BodyLengthCalculator, + ChecksumConstructor, + Encoder, + GetAwsChunkedEncodingStream, + HashConstructor, + Provider, + StreamCollector, + StreamHasher, +} from "@smithy/types"; +import { + RequestChecksumCalculation, + ResponseChecksumValidation, +} from "./constants"; +import { FlexibleChecksumsInputConfig } from "./resolveFlexibleChecksumsConfig"; +export interface PreviouslyResolved { + base64Encoder: Encoder; + bodyLengthChecker: BodyLengthCalculator; + getAwsChunkedEncodingStream: GetAwsChunkedEncodingStream; + md5: ChecksumConstructor | HashConstructor; + requestChecksumCalculation: Provider; + responseChecksumValidation: Provider; + sha1: ChecksumConstructor | HashConstructor; + sha256: ChecksumConstructor | HashConstructor; + streamHasher: StreamHasher; + streamCollector: StreamCollector; + requestStreamBufferSize: number; + checksumAlgorithms?: FlexibleChecksumsInputConfig["checksumAlgorithms"]; +} diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..4f75272 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,27 @@ +export declare const RequestChecksumCalculation: { + readonly WHEN_SUPPORTED: "WHEN_SUPPORTED"; + readonly WHEN_REQUIRED: "WHEN_REQUIRED"; +}; +export type RequestChecksumCalculation = + (typeof RequestChecksumCalculation)[keyof typeof RequestChecksumCalculation]; +export declare const DEFAULT_REQUEST_CHECKSUM_CALCULATION: "WHEN_SUPPORTED"; +export declare const ResponseChecksumValidation: { + readonly WHEN_SUPPORTED: "WHEN_SUPPORTED"; + readonly WHEN_REQUIRED: "WHEN_REQUIRED"; +}; +export type ResponseChecksumValidation = + (typeof ResponseChecksumValidation)[keyof typeof ResponseChecksumValidation]; +export declare const DEFAULT_RESPONSE_CHECKSUM_VALIDATION: "WHEN_SUPPORTED"; +export declare enum ChecksumAlgorithm { + MD5 = "MD5", + CRC32 = "CRC32", + CRC32C = "CRC32C", + CRC64NVME = "CRC64NVME", + SHA1 = "SHA1", + SHA256 = "SHA256", +} +export declare enum ChecksumLocation { + HEADER = "header", + TRAILER = "trailer", +} +export declare const DEFAULT_CHECKSUM_ALGORITHM = ChecksumAlgorithm.CRC32; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsInputMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsInputMiddleware.d.ts new file mode 100644 index 0000000..b853721 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsInputMiddleware.d.ts @@ -0,0 +1,10 @@ +import { RelativeMiddlewareOptions, SerializeMiddleware } from "@smithy/types"; +import { PreviouslyResolved } from "./configuration"; +export interface FlexibleChecksumsInputMiddlewareConfig { + requestValidationModeMember?: string; +} +export declare const flexibleChecksumsInputMiddlewareOptions: RelativeMiddlewareOptions; +export declare const flexibleChecksumsInputMiddleware: ( + config: PreviouslyResolved, + middlewareConfig: FlexibleChecksumsInputMiddlewareConfig +) => SerializeMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsMiddleware.d.ts new file mode 100644 index 0000000..14f45d6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsMiddleware.d.ts @@ -0,0 +1,14 @@ +import { BuildHandlerOptions, BuildMiddleware } from "@smithy/types"; +import { PreviouslyResolved } from "./configuration"; +export interface FlexibleChecksumsRequestMiddlewareConfig { + requestChecksumRequired: boolean; + requestAlgorithmMember?: { + name: string; + httpHeader?: string; + }; +} +export declare const flexibleChecksumsMiddlewareOptions: BuildHandlerOptions; +export declare const flexibleChecksumsMiddleware: ( + config: PreviouslyResolved, + middlewareConfig: FlexibleChecksumsRequestMiddlewareConfig +) => BuildMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsResponseMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsResponseMiddleware.d.ts new file mode 100644 index 0000000..6d39d5f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsResponseMiddleware.d.ts @@ -0,0 +1,14 @@ +import { + DeserializeMiddleware, + RelativeMiddlewareOptions, +} from "@smithy/types"; +import { PreviouslyResolved } from "./configuration"; +export interface FlexibleChecksumsResponseMiddlewareConfig { + requestValidationModeMember?: string; + responseAlgorithms?: string[]; +} +export declare const flexibleChecksumsResponseMiddlewareOptions: RelativeMiddlewareOptions; +export declare const flexibleChecksumsResponseMiddleware: ( + config: PreviouslyResolved, + middlewareConfig: FlexibleChecksumsResponseMiddlewareConfig +) => DeserializeMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksum.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksum.d.ts new file mode 100644 index 0000000..ab46bb5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksum.d.ts @@ -0,0 +1,9 @@ +import { ChecksumConstructor, Encoder, HashConstructor } from "@smithy/types"; +export interface GetChecksumDigestOptions { + checksumAlgorithmFn: ChecksumConstructor | HashConstructor; + base64Encoder: Encoder; +} +export declare const getChecksum: ( + body: unknown, + { checksumAlgorithmFn, base64Encoder }: GetChecksumDigestOptions +) => Promise; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksumAlgorithmForRequest.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksumAlgorithmForRequest.d.ts new file mode 100644 index 0000000..8f0ad68 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksumAlgorithmForRequest.d.ts @@ -0,0 +1,15 @@ +import { ChecksumAlgorithm } from "./constants"; +import { RequestChecksumCalculation } from "./constants"; +export interface GetChecksumAlgorithmForRequestOptions { + requestChecksumRequired: boolean; + requestAlgorithmMember?: string; + requestChecksumCalculation: RequestChecksumCalculation; +} +export declare const getChecksumAlgorithmForRequest: ( + input: any, + { + requestChecksumRequired, + requestAlgorithmMember, + requestChecksumCalculation, + }: GetChecksumAlgorithmForRequestOptions +) => ChecksumAlgorithm | string | undefined; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksumAlgorithmListForResponse.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksumAlgorithmListForResponse.d.ts new file mode 100644 index 0000000..39f2eb5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksumAlgorithmListForResponse.d.ts @@ -0,0 +1,4 @@ +import { ChecksumAlgorithm } from "./constants"; +export declare const getChecksumAlgorithmListForResponse: ( + responseAlgorithms?: string[] +) => ChecksumAlgorithm[]; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksumLocationName.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksumLocationName.d.ts new file mode 100644 index 0000000..5aacd1f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksumLocationName.d.ts @@ -0,0 +1,4 @@ +import { ChecksumAlgorithm } from "./constants"; +export declare const getChecksumLocationName: ( + algorithm: ChecksumAlgorithm | string +) => string; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.browser.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.browser.d.ts new file mode 100644 index 0000000..889142f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.browser.d.ts @@ -0,0 +1,2 @@ +import { AwsCrc32 } from "@aws-crypto/crc32"; +export declare const getCrc32ChecksumAlgorithmFunction: () => typeof AwsCrc32; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.d.ts new file mode 100644 index 0000000..62f01df --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.d.ts @@ -0,0 +1,12 @@ +import { AwsCrc32 } from "@aws-crypto/crc32"; +import { Checksum } from "@smithy/types"; +declare class NodeCrc32 implements Checksum { + private checksum; + update(data: Uint8Array): void; + digest(): Promise; + reset(): void; +} +export declare const getCrc32ChecksumAlgorithmFunction: () => + | typeof NodeCrc32 + | typeof AwsCrc32; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getFlexibleChecksumsPlugin.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getFlexibleChecksumsPlugin.d.ts new file mode 100644 index 0000000..2d4b094 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getFlexibleChecksumsPlugin.d.ts @@ -0,0 +1,13 @@ +import { Pluggable } from "@smithy/types"; +import { PreviouslyResolved } from "./configuration"; +import { FlexibleChecksumsInputMiddlewareConfig } from "./flexibleChecksumsInputMiddleware"; +import { FlexibleChecksumsRequestMiddlewareConfig } from "./flexibleChecksumsMiddleware"; +import { FlexibleChecksumsResponseMiddlewareConfig } from "./flexibleChecksumsResponseMiddleware"; +export interface FlexibleChecksumsMiddlewareConfig + extends FlexibleChecksumsRequestMiddlewareConfig, + FlexibleChecksumsInputMiddlewareConfig, + FlexibleChecksumsResponseMiddlewareConfig {} +export declare const getFlexibleChecksumsPlugin: ( + config: PreviouslyResolved, + middlewareConfig: FlexibleChecksumsMiddlewareConfig +) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/hasHeader.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/hasHeader.d.ts new file mode 100644 index 0000000..a3f38cd --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/hasHeader.d.ts @@ -0,0 +1,2 @@ +import { HeaderBag } from "@smithy/types"; +export declare const hasHeader: (header: string, headers: HeaderBag) => boolean; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/hasHeaderWithPrefix.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/hasHeaderWithPrefix.d.ts new file mode 100644 index 0000000..3caf7a2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/hasHeaderWithPrefix.d.ts @@ -0,0 +1,5 @@ +import { HeaderBag } from "@smithy/types"; +export declare const hasHeaderWithPrefix: ( + headerPrefix: string, + headers: HeaderBag +) => boolean; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..c014f44 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/index.d.ts @@ -0,0 +1,6 @@ +export * from "./NODE_REQUEST_CHECKSUM_CALCULATION_CONFIG_OPTIONS"; +export * from "./NODE_RESPONSE_CHECKSUM_VALIDATION_CONFIG_OPTIONS"; +export * from "./constants"; +export * from "./flexibleChecksumsMiddleware"; +export * from "./getFlexibleChecksumsPlugin"; +export * from "./resolveFlexibleChecksumsConfig"; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/isChecksumWithPartNumber.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/isChecksumWithPartNumber.d.ts new file mode 100644 index 0000000..99f6c79 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/isChecksumWithPartNumber.d.ts @@ -0,0 +1 @@ +export declare const isChecksumWithPartNumber: (checksum: string) => boolean; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/isStreaming.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/isStreaming.d.ts new file mode 100644 index 0000000..0ee946e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/isStreaming.d.ts @@ -0,0 +1 @@ +export declare const isStreaming: (body: unknown) => boolean; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/resolveFlexibleChecksumsConfig.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/resolveFlexibleChecksumsConfig.d.ts new file mode 100644 index 0000000..7e66b9e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/resolveFlexibleChecksumsConfig.d.ts @@ -0,0 +1,32 @@ +import { ChecksumConstructor, Provider } from "@smithy/types"; +import { + RequestChecksumCalculation, + ResponseChecksumValidation, +} from "./constants"; +export interface FlexibleChecksumsInputConfig { + requestChecksumCalculation?: + | RequestChecksumCalculation + | Provider; + responseChecksumValidation?: + | ResponseChecksumValidation + | Provider; + requestStreamBufferSize?: number | false; + checksumAlgorithms?: { + CRC32?: ChecksumConstructor; + CRC32C?: ChecksumConstructor; + CRC64NVME?: ChecksumConstructor; + SHA1?: ChecksumConstructor; + SHA256?: ChecksumConstructor; + } & { + [algorithmId: string]: ChecksumConstructor; + }; +} +export interface FlexibleChecksumsResolvedConfig { + requestChecksumCalculation: Provider; + responseChecksumValidation: Provider; + requestStreamBufferSize: number; + checksumAlgorithms?: FlexibleChecksumsInputConfig["checksumAlgorithms"]; +} +export declare const resolveFlexibleChecksumsConfig: ( + input: T & FlexibleChecksumsInputConfig +) => T & FlexibleChecksumsResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/selectChecksumAlgorithmFunction.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/selectChecksumAlgorithmFunction.d.ts new file mode 100644 index 0000000..4bd6031 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/selectChecksumAlgorithmFunction.d.ts @@ -0,0 +1,7 @@ +import { ChecksumConstructor, HashConstructor } from "@smithy/types"; +import { PreviouslyResolved } from "./configuration"; +import { ChecksumAlgorithm } from "./constants"; +export declare const selectChecksumAlgorithmFunction: ( + checksumAlgorithm: ChecksumAlgorithm | string, + config: PreviouslyResolved +) => ChecksumConstructor | HashConstructor; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/stringHasher.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/stringHasher.d.ts new file mode 100644 index 0000000..fbccb53 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/stringHasher.d.ts @@ -0,0 +1,5 @@ +import { ChecksumConstructor, HashConstructor } from "@smithy/types"; +export declare const stringHasher: ( + checksumAlgorithmFn: ChecksumConstructor | HashConstructor, + body: any +) => Promise; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/stringUnionSelector.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/stringUnionSelector.d.ts new file mode 100644 index 0000000..88f2875 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/stringUnionSelector.d.ts @@ -0,0 +1,10 @@ +export declare enum SelectorType { + ENV = "env", + CONFIG = "shared config entry", +} +export declare const stringUnionSelector: ( + obj: Record, + key: string, + union: U, + type: SelectorType +) => U[K] | undefined; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/types.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..0006541 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/types.d.ts @@ -0,0 +1,3 @@ +import { ChecksumAlgorithm } from "./constants"; +export declare const CLIENT_SUPPORTED_ALGORITHMS: ChecksumAlgorithm[]; +export declare const PRIORITY_ORDER_ALGORITHMS: ChecksumAlgorithm[]; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/validateChecksumFromResponse.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/validateChecksumFromResponse.d.ts new file mode 100644 index 0000000..0fc2fd0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/validateChecksumFromResponse.d.ts @@ -0,0 +1,12 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { Logger } from "@smithy/types"; +import { PreviouslyResolved } from "./configuration"; +export interface ValidateChecksumFromResponseOptions { + config: PreviouslyResolved; + responseAlgorithms?: string[]; + logger?: Logger; +} +export declare const validateChecksumFromResponse: ( + response: HttpResponse, + { config, responseAlgorithms, logger }: ValidateChecksumFromResponseOptions +) => Promise; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/types.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/types.d.ts new file mode 100644 index 0000000..518b84e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/types.d.ts @@ -0,0 +1,9 @@ +import { ChecksumAlgorithm } from "./constants"; +/** + * List of algorithms supported by client. + */ +export declare const CLIENT_SUPPORTED_ALGORITHMS: ChecksumAlgorithm[]; +/** + * Priority order for validating checksum algorithm. A faster algorithm has higher priority. + */ +export declare const PRIORITY_ORDER_ALGORITHMS: ChecksumAlgorithm[]; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/validateChecksumFromResponse.d.ts b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/validateChecksumFromResponse.d.ts new file mode 100644 index 0000000..7163b67 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/validateChecksumFromResponse.d.ts @@ -0,0 +1,13 @@ +import type { HttpResponse } from "@smithy/protocol-http"; +import type { Logger } from "@smithy/types"; +import type { PreviouslyResolved } from "./configuration"; +export interface ValidateChecksumFromResponseOptions { + config: PreviouslyResolved; + /** + * Defines the checksum algorithms clients SHOULD look for when validating checksums + * returned in the HTTP response. + */ + responseAlgorithms?: string[]; + logger?: Logger; +} +export declare const validateChecksumFromResponse: (response: HttpResponse, { config, responseAlgorithms, logger }: ValidateChecksumFromResponseOptions) => Promise; diff --git a/bff/node_modules/@aws-sdk/middleware-flexible-checksums/package.json b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/package.json new file mode 100644 index 0000000..a48e2a9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-flexible-checksums/package.json @@ -0,0 +1,78 @@ +{ + "name": "@aws-sdk/middleware-flexible-checksums", + "version": "3.974.6", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-flexible-checksums", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts", + "test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts", + "test:e2e:watch": "yarn g:vitest watch -c vitest.config.e2e.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "browser": { + "./dist-es/getCrc32ChecksumAlgorithmFunction": "./dist-es/getCrc32ChecksumAlgorithmFunction.browser" + }, + "react-native": { + "./dist-es/getCrc32ChecksumAlgorithmFunction": "./dist-es/getCrc32ChecksumAlgorithmFunction.browser", + "./dist-cjs/getCrc32ChecksumAlgorithmFunction": "./dist-cjs/getCrc32ChecksumAlgorithmFunction.browser" + }, + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/crc64-nvme": "^3.972.5", + "@aws-sdk/types": "^3.973.6", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/node-http-handler": "^4.5.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-flexible-checksums", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-flexible-checksums" + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-host-header/LICENSE b/bff/node_modules/@aws-sdk/middleware-host-header/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-host-header/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/middleware-host-header/README.md b/bff/node_modules/@aws-sdk/middleware-host-header/README.md new file mode 100644 index 0000000..123940e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-host-header/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-host-header + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-host-header/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-host-header) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-host-header.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-host-header) diff --git a/bff/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js new file mode 100644 index 0000000..2dc022c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js @@ -0,0 +1,41 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); + +function resolveHostHeaderConfig(input) { + return input; +} +const hostHeaderMiddleware = (options) => (next) => async (args) => { + if (!protocolHttp.HttpRequest.isInstance(args.request)) + return next(args); + const { request } = args; + const { handlerProtocol = "" } = options.requestHandler.metadata || {}; + if (handlerProtocol.indexOf("h2") >= 0 && !request.headers[":authority"]) { + delete request.headers["host"]; + request.headers[":authority"] = request.hostname + (request.port ? ":" + request.port : ""); + } + else if (!request.headers["host"]) { + let host = request.hostname; + if (request.port != null) + host += `:${request.port}`; + request.headers["host"] = host; + } + return next(args); +}; +const hostHeaderMiddlewareOptions = { + name: "hostHeaderMiddleware", + step: "build", + priority: "low", + tags: ["HOST"], + override: true, +}; +const getHostHeaderPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions); + }, +}); + +exports.getHostHeaderPlugin = getHostHeaderPlugin; +exports.hostHeaderMiddleware = hostHeaderMiddleware; +exports.hostHeaderMiddlewareOptions = hostHeaderMiddlewareOptions; +exports.resolveHostHeaderConfig = resolveHostHeaderConfig; diff --git a/bff/node_modules/@aws-sdk/middleware-host-header/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-host-header/dist-es/index.js new file mode 100644 index 0000000..2e2fb62 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-host-header/dist-es/index.js @@ -0,0 +1,33 @@ +import { HttpRequest } from "@smithy/protocol-http"; +export function resolveHostHeaderConfig(input) { + return input; +} +export const hostHeaderMiddleware = (options) => (next) => async (args) => { + if (!HttpRequest.isInstance(args.request)) + return next(args); + const { request } = args; + const { handlerProtocol = "" } = options.requestHandler.metadata || {}; + if (handlerProtocol.indexOf("h2") >= 0 && !request.headers[":authority"]) { + delete request.headers["host"]; + request.headers[":authority"] = request.hostname + (request.port ? ":" + request.port : ""); + } + else if (!request.headers["host"]) { + let host = request.hostname; + if (request.port != null) + host += `:${request.port}`; + request.headers["host"] = host; + } + return next(args); +}; +export const hostHeaderMiddlewareOptions = { + name: "hostHeaderMiddleware", + step: "build", + priority: "low", + tags: ["HOST"], + override: true, +}; +export const getHostHeaderPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts new file mode 100644 index 0000000..d6b348c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-host-header/dist-types/index.d.ts @@ -0,0 +1,35 @@ +import type { AbsoluteLocation, BuildHandlerOptions, BuildMiddleware, Pluggable, RequestHandler } from "@smithy/types"; +/** + * @public + */ +export interface HostHeaderInputConfig { +} +interface PreviouslyResolved { + requestHandler: RequestHandler; +} +/** + * @internal + */ +export interface HostHeaderResolvedConfig { + /** + * The HTTP handler to use. Fetch in browser and Https in Nodejs. + */ + requestHandler: RequestHandler; +} +/** + * @internal + */ +export declare function resolveHostHeaderConfig(input: T & PreviouslyResolved & HostHeaderInputConfig): T & HostHeaderResolvedConfig; +/** + * @internal + */ +export declare const hostHeaderMiddleware: (options: HostHeaderResolvedConfig) => BuildMiddleware; +/** + * @internal + */ +export declare const hostHeaderMiddlewareOptions: BuildHandlerOptions & AbsoluteLocation; +/** + * @internal + */ +export declare const getHostHeaderPlugin: (options: HostHeaderResolvedConfig) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-host-header/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-host-header/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..3ca5561 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-host-header/dist-types/ts3.4/index.d.ts @@ -0,0 +1,29 @@ +import { + AbsoluteLocation, + BuildHandlerOptions, + BuildMiddleware, + Pluggable, + RequestHandler, +} from "@smithy/types"; +export interface HostHeaderInputConfig {} +interface PreviouslyResolved { + requestHandler: RequestHandler; +} +export interface HostHeaderResolvedConfig { + requestHandler: RequestHandler; +} +export declare function resolveHostHeaderConfig( + input: T & PreviouslyResolved & HostHeaderInputConfig +): T & HostHeaderResolvedConfig; +export declare const hostHeaderMiddleware: < + Input extends object, + Output extends object +>( + options: HostHeaderResolvedConfig +) => BuildMiddleware; +export declare const hostHeaderMiddlewareOptions: BuildHandlerOptions & + AbsoluteLocation; +export declare const getHostHeaderPlugin: ( + options: HostHeaderResolvedConfig +) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-host-header/package.json b/bff/node_modules/@aws-sdk/middleware-host-header/package.json new file mode 100644 index 0000000..b939962 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-host-header/package.json @@ -0,0 +1,59 @@ +{ + "name": "@aws-sdk/middleware-host-header", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-host-header", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-host-header", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-host-header" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/LICENSE b/bff/node_modules/@aws-sdk/middleware-location-constraint/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/README.md b/bff/node_modules/@aws-sdk/middleware-location-constraint/README.md new file mode 100644 index 0000000..2a1b4f0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-location-constraint + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-location-constraint/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-location-constraint) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-location-constraint.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-location-constraint) diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-cjs/index.js new file mode 100644 index 0000000..31b3fcb --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-cjs/index.js @@ -0,0 +1,30 @@ +'use strict'; + +function locationConstraintMiddleware(options) { + return (next) => async (args) => { + const { CreateBucketConfiguration } = args.input; + const region = await options.region(); + if (!CreateBucketConfiguration?.LocationConstraint && !CreateBucketConfiguration?.Location) { + if (region !== "us-east-1") { + args.input.CreateBucketConfiguration = args.input.CreateBucketConfiguration ?? {}; + args.input.CreateBucketConfiguration.LocationConstraint = region; + } + } + return next(args); + }; +} +const locationConstraintMiddlewareOptions = { + step: "initialize", + tags: ["LOCATION_CONSTRAINT", "CREATE_BUCKET_CONFIGURATION"], + name: "locationConstraintMiddleware", + override: true, +}; +const getLocationConstraintPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.add(locationConstraintMiddleware(config), locationConstraintMiddlewareOptions); + }, +}); + +exports.getLocationConstraintPlugin = getLocationConstraintPlugin; +exports.locationConstraintMiddleware = locationConstraintMiddleware; +exports.locationConstraintMiddlewareOptions = locationConstraintMiddlewareOptions; diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-es/configuration.js b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-es/configuration.js new file mode 100644 index 0000000..40dfb35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-es/configuration.js @@ -0,0 +1,3 @@ +export function resolveLocationConstraintConfig(input) { + return input; +} diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-es/index.js new file mode 100644 index 0000000..acea671 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-es/index.js @@ -0,0 +1,24 @@ +export function locationConstraintMiddleware(options) { + return (next) => async (args) => { + const { CreateBucketConfiguration } = args.input; + const region = await options.region(); + if (!CreateBucketConfiguration?.LocationConstraint && !CreateBucketConfiguration?.Location) { + if (region !== "us-east-1") { + args.input.CreateBucketConfiguration = args.input.CreateBucketConfiguration ?? {}; + args.input.CreateBucketConfiguration.LocationConstraint = region; + } + } + return next(args); + }; +} +export const locationConstraintMiddlewareOptions = { + step: "initialize", + tags: ["LOCATION_CONSTRAINT", "CREATE_BUCKET_CONFIGURATION"], + name: "locationConstraintMiddleware", + override: true, +}; +export const getLocationConstraintPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.add(locationConstraintMiddleware(config), locationConstraintMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/configuration.d.ts b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/configuration.d.ts new file mode 100644 index 0000000..103b6af --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/configuration.d.ts @@ -0,0 +1,17 @@ +import type { Provider } from "@smithy/types"; +/** + * @public + */ +export interface LocationConstraintInputConfig { +} +interface PreviouslyResolved { + region: Provider; +} +export interface LocationConstraintResolvedConfig { + /** + * Resolved value for input config {@link RegionInputConfig.region} + */ + region: Provider; +} +export declare function resolveLocationConstraintConfig(input: T & LocationConstraintInputConfig & PreviouslyResolved): T & LocationConstraintResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/index.d.ts new file mode 100644 index 0000000..7d6ce0e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/index.d.ts @@ -0,0 +1,10 @@ +import type { InitializeHandlerOptions, InitializeMiddleware, Pluggable } from "@smithy/types"; +import type { LocationConstraintResolvedConfig } from "./configuration"; +/** + * This middleware modifies the input on S3 CreateBucket requests. If the LocationConstraint has not been set, this + * middleware will set a LocationConstraint to match the configured region. The CreateBucketConfiguration will be + * removed entirely on requests to the us-east-1 region. + */ +export declare function locationConstraintMiddleware(options: LocationConstraintResolvedConfig): InitializeMiddleware; +export declare const locationConstraintMiddlewareOptions: InitializeHandlerOptions; +export declare const getLocationConstraintPlugin: (config: LocationConstraintResolvedConfig) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/ts3.4/configuration.d.ts b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/ts3.4/configuration.d.ts new file mode 100644 index 0000000..05fd779 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/ts3.4/configuration.d.ts @@ -0,0 +1,12 @@ +import { Provider } from "@smithy/types"; +export interface LocationConstraintInputConfig {} +interface PreviouslyResolved { + region: Provider; +} +export interface LocationConstraintResolvedConfig { + region: Provider; +} +export declare function resolveLocationConstraintConfig( + input: T & LocationConstraintInputConfig & PreviouslyResolved +): T & LocationConstraintResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..5e11513 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { + InitializeHandlerOptions, + InitializeMiddleware, + Pluggable, +} from "@smithy/types"; +import { LocationConstraintResolvedConfig } from "./configuration"; +export declare function locationConstraintMiddleware( + options: LocationConstraintResolvedConfig +): InitializeMiddleware; +export declare const locationConstraintMiddlewareOptions: InitializeHandlerOptions; +export declare const getLocationConstraintPlugin: ( + config: LocationConstraintResolvedConfig +) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-location-constraint/package.json b/bff/node_modules/@aws-sdk/middleware-location-constraint/package.json new file mode 100644 index 0000000..ec50053 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-location-constraint/package.json @@ -0,0 +1,57 @@ +{ + "name": "@aws-sdk/middleware-location-constraint", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-location-constraint", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-location-constraint", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-location-constraint" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-logger/LICENSE b/bff/node_modules/@aws-sdk/middleware-logger/LICENSE new file mode 100644 index 0000000..74d4e5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/middleware-logger/README.md b/bff/node_modules/@aws-sdk/middleware-logger/README.md new file mode 100644 index 0000000..861fa43 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-logger + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-logger/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-logger) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-logger.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-logger) diff --git a/bff/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js new file mode 100644 index 0000000..584a4fa --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js @@ -0,0 +1,48 @@ +'use strict'; + +const loggerMiddleware = () => (next, context) => async (args) => { + try { + const response = await next(args); + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog; + const { $metadata, ...outputWithoutMetadata } = response.output; + logger?.info?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + output: outputFilterSensitiveLog(outputWithoutMetadata), + metadata: $metadata, + }); + return response; + } + catch (error) { + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + logger?.error?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + error, + metadata: error.$metadata, + }); + throw error; + } +}; +const loggerMiddlewareOptions = { + name: "loggerMiddleware", + tags: ["LOGGER"], + step: "initialize", + override: true, +}; +const getLoggerPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(loggerMiddleware(), loggerMiddlewareOptions); + }, +}); + +exports.getLoggerPlugin = getLoggerPlugin; +exports.loggerMiddleware = loggerMiddleware; +exports.loggerMiddlewareOptions = loggerMiddlewareOptions; diff --git a/bff/node_modules/@aws-sdk/middleware-logger/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-logger/dist-es/index.js new file mode 100644 index 0000000..171e3bc --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/dist-es/index.js @@ -0,0 +1 @@ +export * from "./loggerMiddleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js b/bff/node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js new file mode 100644 index 0000000..50da4cc --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js @@ -0,0 +1,42 @@ +export const loggerMiddleware = () => (next, context) => async (args) => { + try { + const response = await next(args); + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog; + const { $metadata, ...outputWithoutMetadata } = response.output; + logger?.info?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + output: outputFilterSensitiveLog(outputWithoutMetadata), + metadata: $metadata, + }); + return response; + } + catch (error) { + const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context; + const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions; + const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog; + logger?.error?.({ + clientName, + commandName, + input: inputFilterSensitiveLog(args.input), + error, + metadata: error.$metadata, + }); + throw error; + } +}; +export const loggerMiddlewareOptions = { + name: "loggerMiddleware", + tags: ["LOGGER"], + step: "initialize", + override: true, +}; +export const getLoggerPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(loggerMiddleware(), loggerMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts new file mode 100644 index 0000000..171e3bc --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/dist-types/index.d.ts @@ -0,0 +1 @@ +export * from "./loggerMiddleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-logger/dist-types/loggerMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-logger/dist-types/loggerMiddleware.d.ts new file mode 100644 index 0000000..3aaa0dd --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/dist-types/loggerMiddleware.d.ts @@ -0,0 +1,4 @@ +import type { AbsoluteLocation, HandlerExecutionContext, InitializeHandler, InitializeHandlerOptions, MetadataBearer, Pluggable } from "@smithy/types"; +export declare const loggerMiddleware: () => (next: InitializeHandler, context: HandlerExecutionContext) => InitializeHandler; +export declare const loggerMiddlewareOptions: InitializeHandlerOptions & AbsoluteLocation; +export declare const getLoggerPlugin: (options: any) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..171e3bc --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./loggerMiddleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/loggerMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/loggerMiddleware.d.ts new file mode 100644 index 0000000..10ded9e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/dist-types/ts3.4/loggerMiddleware.d.ts @@ -0,0 +1,17 @@ +import { + AbsoluteLocation, + HandlerExecutionContext, + InitializeHandler, + InitializeHandlerOptions, + MetadataBearer, + Pluggable, +} from "@smithy/types"; +export declare const loggerMiddleware: () => < + Output extends MetadataBearer = MetadataBearer +>( + next: InitializeHandler, + context: HandlerExecutionContext +) => InitializeHandler; +export declare const loggerMiddlewareOptions: InitializeHandlerOptions & + AbsoluteLocation; +export declare const getLoggerPlugin: (options: any) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-logger/package.json b/bff/node_modules/@aws-sdk/middleware-logger/package.json new file mode 100644 index 0000000..d49920c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-logger/package.json @@ -0,0 +1,59 @@ +{ + "name": "@aws-sdk/middleware-logger", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-logger", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-logger", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-logger" + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE b/bff/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/README.md b/bff/node_modules/@aws-sdk/middleware-recursion-detection/README.md new file mode 100644 index 0000000..5009aaa --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/README.md @@ -0,0 +1,17 @@ +# @aws-sdk/middleware-recursion-detection + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-recursion-detection/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-recursion-detection) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-recursion-detection.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-recursion-detection) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js new file mode 100644 index 0000000..0b01212 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js @@ -0,0 +1,29 @@ +'use strict'; + +var recursionDetectionMiddleware = require('./recursionDetectionMiddleware'); + +const recursionDetectionMiddlewareOptions = { + step: "build", + tags: ["RECURSION_DETECTION"], + name: "recursionDetectionMiddleware", + override: true, + priority: "low", +}; + +const getRecursionDetectionPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(recursionDetectionMiddleware.recursionDetectionMiddleware(), recursionDetectionMiddlewareOptions); + }, +}); + +exports.getRecursionDetectionPlugin = getRecursionDetectionPlugin; +Object.prototype.hasOwnProperty.call(recursionDetectionMiddleware, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: recursionDetectionMiddleware['__proto__'] + }); + +Object.keys(recursionDetectionMiddleware).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = recursionDetectionMiddleware[k]; +}); diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js new file mode 100644 index 0000000..1300be0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.recursionDetectionMiddleware = void 0; +const lambda_invoke_store_1 = require("@aws/lambda-invoke-store"); +const protocol_http_1 = require("@smithy/protocol-http"); +const TRACE_ID_HEADER_NAME = "X-Amzn-Trace-Id"; +const ENV_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME"; +const ENV_TRACE_ID = "_X_AMZN_TRACE_ID"; +const recursionDetectionMiddleware = () => (next) => async (args) => { + const { request } = args; + if (!protocol_http_1.HttpRequest.isInstance(request)) { + return next(args); + } + const traceIdHeader = Object.keys(request.headers ?? {}).find((h) => h.toLowerCase() === TRACE_ID_HEADER_NAME.toLowerCase()) ?? + TRACE_ID_HEADER_NAME; + if (request.headers.hasOwnProperty(traceIdHeader)) { + return next(args); + } + const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME]; + const traceIdFromEnv = process.env[ENV_TRACE_ID]; + const invokeStore = await lambda_invoke_store_1.InvokeStore.getInstanceAsync(); + const traceIdFromInvokeStore = invokeStore?.getXRayTraceId(); + const traceId = traceIdFromInvokeStore ?? traceIdFromEnv; + const nonEmptyString = (str) => typeof str === "string" && str.length > 0; + if (nonEmptyString(functionName) && nonEmptyString(traceId)) { + request.headers[TRACE_ID_HEADER_NAME] = traceId; + } + return next({ + ...args, + request, + }); +}; +exports.recursionDetectionMiddleware = recursionDetectionMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js new file mode 100644 index 0000000..fb26510 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/recursionDetectionMiddleware.native.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.recursionDetectionMiddleware = void 0; +const recursionDetectionMiddleware = () => (next) => async (args) => next(args); +exports.recursionDetectionMiddleware = recursionDetectionMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/configuration.js b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/configuration.js new file mode 100644 index 0000000..059715f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/configuration.js @@ -0,0 +1,7 @@ +export const recursionDetectionMiddlewareOptions = { + step: "build", + tags: ["RECURSION_DETECTION"], + name: "recursionDetectionMiddleware", + override: true, + priority: "low", +}; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/getRecursionDetectionPlugin.js b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/getRecursionDetectionPlugin.js new file mode 100644 index 0000000..3a35e02 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/getRecursionDetectionPlugin.js @@ -0,0 +1,7 @@ +import { recursionDetectionMiddlewareOptions } from "./configuration"; +import { recursionDetectionMiddleware } from "./recursionDetectionMiddleware"; +export const getRecursionDetectionPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(recursionDetectionMiddleware(), recursionDetectionMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js new file mode 100644 index 0000000..88e92b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./getRecursionDetectionPlugin"; +export * from "./recursionDetectionMiddleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.browser.js b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.browser.js new file mode 100644 index 0000000..74f4d0f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.browser.js @@ -0,0 +1 @@ +export const recursionDetectionMiddleware = () => (next) => async (args) => next(args); diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.js b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.js new file mode 100644 index 0000000..5deb6b4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.js @@ -0,0 +1,29 @@ +import { InvokeStore } from "@aws/lambda-invoke-store"; +import { HttpRequest } from "@smithy/protocol-http"; +const TRACE_ID_HEADER_NAME = "X-Amzn-Trace-Id"; +const ENV_LAMBDA_FUNCTION_NAME = "AWS_LAMBDA_FUNCTION_NAME"; +const ENV_TRACE_ID = "_X_AMZN_TRACE_ID"; +export const recursionDetectionMiddleware = () => (next) => async (args) => { + const { request } = args; + if (!HttpRequest.isInstance(request)) { + return next(args); + } + const traceIdHeader = Object.keys(request.headers ?? {}).find((h) => h.toLowerCase() === TRACE_ID_HEADER_NAME.toLowerCase()) ?? + TRACE_ID_HEADER_NAME; + if (request.headers.hasOwnProperty(traceIdHeader)) { + return next(args); + } + const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME]; + const traceIdFromEnv = process.env[ENV_TRACE_ID]; + const invokeStore = await InvokeStore.getInstanceAsync(); + const traceIdFromInvokeStore = invokeStore?.getXRayTraceId(); + const traceId = traceIdFromInvokeStore ?? traceIdFromEnv; + const nonEmptyString = (str) => typeof str === "string" && str.length > 0; + if (nonEmptyString(functionName) && nonEmptyString(traceId)) { + request.headers[TRACE_ID_HEADER_NAME] = traceId; + } + return next({ + ...args, + request, + }); +}; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.native.js b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.native.js new file mode 100644 index 0000000..74f4d0f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-es/recursionDetectionMiddleware.native.js @@ -0,0 +1 @@ +export const recursionDetectionMiddleware = () => (next) => async (args) => next(args); diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/configuration.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/configuration.d.ts new file mode 100644 index 0000000..83243af --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/configuration.d.ts @@ -0,0 +1,5 @@ +import type { AbsoluteLocation, BuildHandlerOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const recursionDetectionMiddlewareOptions: BuildHandlerOptions & AbsoluteLocation; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts new file mode 100644 index 0000000..27a7c12 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/getRecursionDetectionPlugin.d.ts @@ -0,0 +1,5 @@ +import type { Pluggable } from "@smithy/types"; +/** + * @internal + */ +export declare const getRecursionDetectionPlugin: (options: any) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts new file mode 100644 index 0000000..88e92b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./getRecursionDetectionPlugin"; +export * from "./recursionDetectionMiddleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.browser.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.browser.d.ts new file mode 100644 index 0000000..c199825 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.browser.d.ts @@ -0,0 +1,6 @@ +import type { BuildMiddleware } from "@smithy/types"; +/** + * No-op middleware for runtimes outside of Node.js + * @internal + */ +export declare const recursionDetectionMiddleware: () => BuildMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.d.ts new file mode 100644 index 0000000..b8a39d5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.d.ts @@ -0,0 +1,6 @@ +import type { BuildMiddleware } from "@smithy/types"; +/** + * Inject to trace ID to request header to detect recursion invocation in Lambda. + * @internal + */ +export declare const recursionDetectionMiddleware: () => BuildMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.native.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.native.d.ts new file mode 100644 index 0000000..c199825 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/recursionDetectionMiddleware.native.d.ts @@ -0,0 +1,6 @@ +import type { BuildMiddleware } from "@smithy/types"; +/** + * No-op middleware for runtimes outside of Node.js + * @internal + */ +export declare const recursionDetectionMiddleware: () => BuildMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/configuration.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/configuration.d.ts new file mode 100644 index 0000000..2ff2544 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/configuration.d.ts @@ -0,0 +1,3 @@ +import { AbsoluteLocation, BuildHandlerOptions } from "@smithy/types"; +export declare const recursionDetectionMiddlewareOptions: BuildHandlerOptions & + AbsoluteLocation; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts new file mode 100644 index 0000000..cf326dd --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/getRecursionDetectionPlugin.d.ts @@ -0,0 +1,4 @@ +import { Pluggable } from "@smithy/types"; +export declare const getRecursionDetectionPlugin: ( + options: any +) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..88e92b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./getRecursionDetectionPlugin"; +export * from "./recursionDetectionMiddleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.browser.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.browser.d.ts new file mode 100644 index 0000000..3981c31 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.browser.d.ts @@ -0,0 +1,5 @@ +import { BuildMiddleware } from "@smithy/types"; +export declare const recursionDetectionMiddleware: () => BuildMiddleware< + any, + any +>; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.d.ts new file mode 100644 index 0000000..3981c31 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.d.ts @@ -0,0 +1,5 @@ +import { BuildMiddleware } from "@smithy/types"; +export declare const recursionDetectionMiddleware: () => BuildMiddleware< + any, + any +>; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.native.d.ts b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.native.d.ts new file mode 100644 index 0000000..3981c31 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/dist-types/ts3.4/recursionDetectionMiddleware.native.d.ts @@ -0,0 +1,5 @@ +import { BuildMiddleware } from "@smithy/types"; +export declare const recursionDetectionMiddleware: () => BuildMiddleware< + any, + any +>; diff --git a/bff/node_modules/@aws-sdk/middleware-recursion-detection/package.json b/bff/node_modules/@aws-sdk/middleware-recursion-detection/package.json new file mode 100644 index 0000000..8a1bf4b --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-recursion-detection/package.json @@ -0,0 +1,63 @@ +{ + "name": "@aws-sdk/middleware-recursion-detection", + "version": "3.972.9", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-recursion-detection", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-recursion-detection", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-recursion-detection" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "browser": { + "./dist-es/recursionDetectionMiddleware": "./dist-es/recursionDetectionMiddleware.browser" + }, + "react-native": {} +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/LICENSE b/bff/node_modules/@aws-sdk/middleware-sdk-s3/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/README.md b/bff/node_modules/@aws-sdk/middleware-sdk-s3/README.md new file mode 100644 index 0000000..8163944 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-sdk-s3 + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-sdk-s3/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-sdk-s3) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-sdk-s3.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-sdk-s3) diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js new file mode 100644 index 0000000..076bfdf --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js @@ -0,0 +1,597 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var smithyClient = require('@smithy/smithy-client'); +var utilStream = require('@smithy/util-stream'); +var utilArnParser = require('@aws-sdk/util-arn-parser'); +var protocols = require('@aws-sdk/core/protocols'); +var schema = require('@smithy/core/schema'); +var signatureV4 = require('@smithy/signature-v4'); +var utilConfigProvider = require('@smithy/util-config-provider'); +var client = require('@aws-sdk/core/client'); +var core = require('@smithy/core'); +var utilMiddleware = require('@smithy/util-middleware'); + +const CONTENT_LENGTH_HEADER = "content-length"; +const DECODED_CONTENT_LENGTH_HEADER = "x-amz-decoded-content-length"; +function checkContentLengthHeader() { + return (next, context) => async (args) => { + const { request } = args; + if (protocolHttp.HttpRequest.isInstance(request)) { + if (!(CONTENT_LENGTH_HEADER in request.headers) && !(DECODED_CONTENT_LENGTH_HEADER in request.headers)) { + const message = `Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.`; + if (typeof context?.logger?.warn === "function" && !(context.logger instanceof smithyClient.NoOpLogger)) { + context.logger.warn(message); + } + else { + console.warn(message); + } + } + } + return next({ ...args }); + }; +} +const checkContentLengthHeaderMiddlewareOptions = { + step: "finalizeRequest", + tags: ["CHECK_CONTENT_LENGTH_HEADER"], + name: "getCheckContentLengthHeaderPlugin", + override: true, +}; +const getCheckContentLengthHeaderPlugin = (unused) => ({ + applyToStack: (clientStack) => { + clientStack.add(checkContentLengthHeader(), checkContentLengthHeaderMiddlewareOptions); + }, +}); + +const regionRedirectEndpointMiddleware = (config) => { + return (next, context) => async (args) => { + const originalRegion = await config.region(); + const regionProviderRef = config.region; + let unlock = () => { }; + if (context.__s3RegionRedirect) { + Object.defineProperty(config, "region", { + writable: false, + value: async () => { + return context.__s3RegionRedirect; + }, + }); + unlock = () => Object.defineProperty(config, "region", { + writable: true, + value: regionProviderRef, + }); + } + try { + const result = await next(args); + if (context.__s3RegionRedirect) { + unlock(); + const region = await config.region(); + if (originalRegion !== region) { + throw new Error("Region was not restored following S3 region redirect."); + } + } + return result; + } + catch (e) { + unlock(); + throw e; + } + }; +}; +const regionRedirectEndpointMiddlewareOptions = { + tags: ["REGION_REDIRECT", "S3"], + name: "regionRedirectEndpointMiddleware", + override: true, + relation: "before", + toMiddleware: "endpointV2Middleware", +}; + +function regionRedirectMiddleware(clientConfig) { + return (next, context) => async (args) => { + try { + return await next(args); + } + catch (err) { + if (clientConfig.followRegionRedirects) { + const statusCode = err?.$metadata?.httpStatusCode; + const isHeadBucket = context.commandName === "HeadBucketCommand"; + const bucketRegionHeader = err?.$response?.headers?.["x-amz-bucket-region"]; + if (bucketRegionHeader) { + if (statusCode === 301 || + (statusCode === 400 && (err?.name === "IllegalLocationConstraintException" || isHeadBucket))) { + try { + const actualRegion = bucketRegionHeader; + context.logger?.debug(`Redirecting from ${await clientConfig.region()} to ${actualRegion}`); + context.__s3RegionRedirect = actualRegion; + } + catch (e) { + throw new Error("Region redirect failed: " + e); + } + return next(args); + } + } + } + throw err; + } + }; +} +const regionRedirectMiddlewareOptions = { + step: "initialize", + tags: ["REGION_REDIRECT", "S3"], + name: "regionRedirectMiddleware", + override: true, +}; +const getRegionRedirectMiddlewarePlugin = (clientConfig) => ({ + applyToStack: (clientStack) => { + clientStack.add(regionRedirectMiddleware(clientConfig), regionRedirectMiddlewareOptions); + clientStack.addRelativeTo(regionRedirectEndpointMiddleware(clientConfig), regionRedirectEndpointMiddlewareOptions); + }, +}); + +const s3ExpiresMiddleware = (config) => { + return (next, context) => async (args) => { + const result = await next(args); + const { response } = result; + if (protocolHttp.HttpResponse.isInstance(response)) { + if (response.headers.expires) { + response.headers.expiresstring = response.headers.expires; + try { + smithyClient.parseRfc7231DateTime(response.headers.expires); + } + catch (e) { + context.logger?.warn(`AWS SDK Warning for ${context.clientName}::${context.commandName} response parsing (${response.headers.expires}): ${e}`); + delete response.headers.expires; + } + } + } + return result; + }; +}; +const s3ExpiresMiddlewareOptions = { + tags: ["S3"], + name: "s3ExpiresMiddleware", + override: true, + relation: "after", + toMiddleware: "deserializerMiddleware", +}; +const getS3ExpiresMiddlewarePlugin = (clientConfig) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(s3ExpiresMiddleware(), s3ExpiresMiddlewareOptions); + }, +}); + +class S3ExpressIdentityCache { + data; + lastPurgeTime = Date.now(); + static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS = 30_000; + constructor(data = {}) { + this.data = data; + } + get(key) { + const entry = this.data[key]; + if (!entry) { + return; + } + return entry; + } + set(key, entry) { + this.data[key] = entry; + return entry; + } + delete(key) { + delete this.data[key]; + } + async purgeExpired() { + const now = Date.now(); + if (this.lastPurgeTime + S3ExpressIdentityCache.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS > now) { + return; + } + for (const key in this.data) { + const entry = this.data[key]; + if (!entry.isRefreshing) { + const credential = await entry.identity; + if (credential.expiration) { + if (credential.expiration.getTime() < now) { + delete this.data[key]; + } + } + } + } + } +} + +class S3ExpressIdentityCacheEntry { + _identity; + isRefreshing; + accessed; + constructor(_identity, isRefreshing = false, accessed = Date.now()) { + this._identity = _identity; + this.isRefreshing = isRefreshing; + this.accessed = accessed; + } + get identity() { + this.accessed = Date.now(); + return this._identity; + } +} + +class S3ExpressIdentityProviderImpl { + createSessionFn; + cache; + static REFRESH_WINDOW_MS = 60_000; + constructor(createSessionFn, cache = new S3ExpressIdentityCache()) { + this.createSessionFn = createSessionFn; + this.cache = cache; + } + async getS3ExpressIdentity(awsIdentity, identityProperties) { + const key = identityProperties.Bucket; + const { cache } = this; + const entry = cache.get(key); + if (entry) { + return entry.identity.then((identity) => { + const isExpired = (identity.expiration?.getTime() ?? 0) < Date.now(); + if (isExpired) { + return cache.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity; + } + const isExpiringSoon = (identity.expiration?.getTime() ?? 0) < Date.now() + S3ExpressIdentityProviderImpl.REFRESH_WINDOW_MS; + if (isExpiringSoon && !entry.isRefreshing) { + entry.isRefreshing = true; + this.getIdentity(key).then((id) => { + cache.set(key, new S3ExpressIdentityCacheEntry(Promise.resolve(id))); + }); + } + return identity; + }); + } + return cache.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity; + } + async getIdentity(key) { + await this.cache.purgeExpired().catch((error) => { + console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n" + error); + }); + const session = await this.createSessionFn(key); + if (!session.Credentials?.AccessKeyId || !session.Credentials?.SecretAccessKey) { + throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey."); + } + const identity = { + accessKeyId: session.Credentials.AccessKeyId, + secretAccessKey: session.Credentials.SecretAccessKey, + sessionToken: session.Credentials.SessionToken, + expiration: session.Credentials.Expiration ? new Date(session.Credentials.Expiration) : undefined, + }; + return identity; + } +} + +const S3_EXPRESS_BUCKET_TYPE = "Directory"; +const S3_EXPRESS_BACKEND = "S3Express"; +const S3_EXPRESS_AUTH_SCHEME = "sigv4-s3express"; +const SESSION_TOKEN_QUERY_PARAM = "X-Amz-S3session-Token"; +const SESSION_TOKEN_HEADER = SESSION_TOKEN_QUERY_PARAM.toLowerCase(); +const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME = "AWS_S3_DISABLE_EXPRESS_SESSION_AUTH"; +const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME = "s3_disable_express_session_auth"; +const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS = { + environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME, utilConfigProvider.SelectorType.ENV), + configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME, utilConfigProvider.SelectorType.CONFIG), + default: false, +}; + +class SignatureV4S3Express extends signatureV4.SignatureV4 { + async signWithCredentials(requestToSign, credentials, options) { + const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials); + requestToSign.headers[SESSION_TOKEN_HEADER] = credentials.sessionToken; + const privateAccess = this; + setSingleOverride(privateAccess, credentialsWithoutSessionToken); + return privateAccess.signRequest(requestToSign, options ?? {}); + } + async presignWithCredentials(requestToSign, credentials, options) { + const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials); + delete requestToSign.headers[SESSION_TOKEN_HEADER]; + requestToSign.headers[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken; + requestToSign.query = requestToSign.query ?? {}; + requestToSign.query[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken; + const privateAccess = this; + setSingleOverride(privateAccess, credentialsWithoutSessionToken); + return this.presign(requestToSign, options); + } +} +function getCredentialsWithoutSessionToken(credentials) { + const credentialsWithoutSessionToken = { + accessKeyId: credentials.accessKeyId, + secretAccessKey: credentials.secretAccessKey, + expiration: credentials.expiration, + }; + return credentialsWithoutSessionToken; +} +function setSingleOverride(privateAccess, credentialsWithoutSessionToken) { + const id = setTimeout(() => { + throw new Error("SignatureV4S3Express credential override was created but not called."); + }, 10); + const currentCredentialProvider = privateAccess.credentialProvider; + const overrideCredentialsProviderOnce = () => { + clearTimeout(id); + privateAccess.credentialProvider = currentCredentialProvider; + return Promise.resolve(credentialsWithoutSessionToken); + }; + privateAccess.credentialProvider = overrideCredentialsProviderOnce; +} + +const s3ExpressMiddleware = (options) => { + return (next, context) => async (args) => { + if (context.endpointV2) { + const endpoint = context.endpointV2; + const isS3ExpressAuth = endpoint.properties?.authSchemes?.[0]?.name === S3_EXPRESS_AUTH_SCHEME; + const isS3ExpressBucket = endpoint.properties?.backend === S3_EXPRESS_BACKEND || + endpoint.properties?.bucketType === S3_EXPRESS_BUCKET_TYPE; + if (isS3ExpressBucket) { + client.setFeature(context, "S3_EXPRESS_BUCKET", "J"); + context.isS3ExpressBucket = true; + } + if (isS3ExpressAuth) { + const requestBucket = args.input.Bucket; + if (requestBucket) { + const s3ExpressIdentity = await options.s3ExpressIdentityProvider.getS3ExpressIdentity(await options.credentials(), { + Bucket: requestBucket, + }); + context.s3ExpressIdentity = s3ExpressIdentity; + if (protocolHttp.HttpRequest.isInstance(args.request) && s3ExpressIdentity.sessionToken) { + args.request.headers[SESSION_TOKEN_HEADER] = s3ExpressIdentity.sessionToken; + } + } + } + } + return next(args); + }; +}; +const s3ExpressMiddlewareOptions = { + name: "s3ExpressMiddleware", + step: "build", + tags: ["S3", "S3_EXPRESS"], + override: true, +}; +const getS3ExpressPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(s3ExpressMiddleware(options), s3ExpressMiddlewareOptions); + }, +}); + +const signS3Express = async (s3ExpressIdentity, signingOptions, request, sigV4MultiRegionSigner) => { + const signedRequest = await sigV4MultiRegionSigner.signWithCredentials(request, s3ExpressIdentity, {}); + if (signedRequest.headers["X-Amz-Security-Token"] || signedRequest.headers["x-amz-security-token"]) { + throw new Error("X-Amz-Security-Token must not be set for s3-express requests."); + } + return signedRequest; +}; + +const defaultErrorHandler = (signingProperties) => (error) => { + throw error; +}; +const defaultSuccessHandler = (httpResponse, signingProperties) => { }; +const s3ExpressHttpSigningMiddlewareOptions = core.httpSigningMiddlewareOptions; +const s3ExpressHttpSigningMiddleware = (config) => (next, context) => async (args) => { + if (!protocolHttp.HttpRequest.isInstance(args.request)) { + return next(args); + } + const smithyContext = utilMiddleware.getSmithyContext(context); + const scheme = smithyContext.selectedHttpAuthScheme; + if (!scheme) { + throw new Error(`No HttpAuthScheme was selected: unable to sign request`); + } + const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme; + let request; + if (context.s3ExpressIdentity) { + request = await signS3Express(context.s3ExpressIdentity, signingProperties, args.request, await config.signer()); + } + else { + request = await signer.sign(args.request, identity, signingProperties); + } + const output = await next({ + ...args, + request, + }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); + (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); + return output; +}; +const getS3ExpressHttpSigningPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(s3ExpressHttpSigningMiddleware(config), core.httpSigningMiddlewareOptions); + }, +}); + +const resolveS3Config = (input, { session, }) => { + const [s3ClientProvider, CreateSessionCommandCtor] = session; + const { forcePathStyle, useAccelerateEndpoint, disableMultiregionAccessPoints, followRegionRedirects, s3ExpressIdentityProvider, bucketEndpoint, expectContinueHeader, } = input; + return Object.assign(input, { + forcePathStyle: forcePathStyle ?? false, + useAccelerateEndpoint: useAccelerateEndpoint ?? false, + disableMultiregionAccessPoints: disableMultiregionAccessPoints ?? false, + followRegionRedirects: followRegionRedirects ?? false, + s3ExpressIdentityProvider: s3ExpressIdentityProvider ?? + new S3ExpressIdentityProviderImpl(async (key) => s3ClientProvider().send(new CreateSessionCommandCtor({ + Bucket: key, + }))), + bucketEndpoint: bucketEndpoint ?? false, + expectContinueHeader: expectContinueHeader ?? 2_097_152, + }); +}; + +const THROW_IF_EMPTY_BODY = { + CopyObjectCommand: true, + UploadPartCopyCommand: true, + CompleteMultipartUploadCommand: true, +}; +const MAX_BYTES_TO_INSPECT = 3000; +const throw200ExceptionsMiddleware = (config) => (next, context) => async (args) => { + const result = await next(args); + const { response } = result; + if (!protocolHttp.HttpResponse.isInstance(response)) { + return result; + } + const { statusCode, body: sourceBody } = response; + if (statusCode < 200 || statusCode >= 300) { + return result; + } + const isSplittableStream = typeof sourceBody?.stream === "function" || + typeof sourceBody?.pipe === "function" || + typeof sourceBody?.tee === "function"; + if (!isSplittableStream) { + return result; + } + let bodyCopy = sourceBody; + let body = sourceBody; + if (sourceBody && typeof sourceBody === "object" && !(sourceBody instanceof Uint8Array)) { + [bodyCopy, body] = await utilStream.splitStream(sourceBody); + } + response.body = body; + const bodyBytes = await collectBody(bodyCopy, { + streamCollector: async (stream) => { + return utilStream.headStream(stream, MAX_BYTES_TO_INSPECT); + }, + }); + if (typeof bodyCopy?.destroy === "function") { + bodyCopy.destroy(); + } + const bodyStringTail = config.utf8Encoder(bodyBytes.subarray(bodyBytes.length - 16)); + if (bodyBytes.length === 0 && THROW_IF_EMPTY_BODY[context.commandName]) { + const err = new Error("S3 aborted request"); + err.name = "InternalError"; + throw err; + } + if (bodyStringTail && bodyStringTail.endsWith("")) { + response.statusCode = 400; + } + return result; +}; +const collectBody = (streamBody = new Uint8Array(), context) => { + if (streamBody instanceof Uint8Array) { + return Promise.resolve(streamBody); + } + return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array()); +}; +const throw200ExceptionsMiddlewareOptions = { + relation: "after", + toMiddleware: "deserializerMiddleware", + tags: ["THROW_200_EXCEPTIONS", "S3"], + name: "throw200ExceptionsMiddleware", + override: true, +}; +const getThrow200ExceptionsPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(throw200ExceptionsMiddleware(config), throw200ExceptionsMiddlewareOptions); + }, +}); + +function bucketEndpointMiddleware(options) { + return (next, context) => async (args) => { + if (options.bucketEndpoint) { + const endpoint = context.endpointV2; + if (endpoint) { + const bucket = args.input.Bucket; + if (typeof bucket === "string") { + try { + const bucketEndpointUrl = new URL(bucket); + context.endpointV2 = { + ...endpoint, + url: bucketEndpointUrl, + }; + } + catch (e) { + const warning = `@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${bucket} could not be parsed as URL.`; + if (context.logger?.constructor?.name === "NoOpLogger") { + console.warn(warning); + } + else { + context.logger?.warn?.(warning); + } + throw e; + } + } + } + } + return next(args); + }; +} +const bucketEndpointMiddlewareOptions = { + name: "bucketEndpointMiddleware", + override: true, + relation: "after", + toMiddleware: "endpointV2Middleware", +}; + +function validateBucketNameMiddleware({ bucketEndpoint }) { + return (next) => async (args) => { + const { input: { Bucket }, } = args; + if (!bucketEndpoint && typeof Bucket === "string" && !utilArnParser.validate(Bucket) && Bucket.indexOf("/") >= 0) { + const err = new Error(`Bucket name shouldn't contain '/', received '${Bucket}'`); + err.name = "InvalidBucketName"; + throw err; + } + return next({ ...args }); + }; +} +const validateBucketNameMiddlewareOptions = { + step: "initialize", + tags: ["VALIDATE_BUCKET_NAME"], + name: "validateBucketNameMiddleware", + override: true, +}; +const getValidateBucketNamePlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(validateBucketNameMiddleware(options), validateBucketNameMiddlewareOptions); + clientStack.addRelativeTo(bucketEndpointMiddleware(options), bucketEndpointMiddlewareOptions); + }, +}); + +class S3RestXmlProtocol extends protocols.AwsRestXmlProtocol { + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const ns = schema.NormalizedSchema.of(operationSchema.input); + const staticStructureSchema = ns.getSchema(); + let bucketMemberIndex = 0; + const requiredMemberCount = staticStructureSchema[6] ?? 0; + if (input && typeof input === "object") { + for (const [memberName, memberNs] of ns.structIterator()) { + if (++bucketMemberIndex > requiredMemberCount) { + break; + } + if (memberName === "Bucket") { + if (!input.Bucket && memberNs.getMergedTraits().httpLabel) { + throw new Error(`No value provided for input HTTP label: Bucket.`); + } + break; + } + } + } + return request; + } +} + +exports.NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS = NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS; +exports.S3ExpressIdentityCache = S3ExpressIdentityCache; +exports.S3ExpressIdentityCacheEntry = S3ExpressIdentityCacheEntry; +exports.S3ExpressIdentityProviderImpl = S3ExpressIdentityProviderImpl; +exports.S3RestXmlProtocol = S3RestXmlProtocol; +exports.SignatureV4S3Express = SignatureV4S3Express; +exports.checkContentLengthHeader = checkContentLengthHeader; +exports.checkContentLengthHeaderMiddlewareOptions = checkContentLengthHeaderMiddlewareOptions; +exports.getCheckContentLengthHeaderPlugin = getCheckContentLengthHeaderPlugin; +exports.getRegionRedirectMiddlewarePlugin = getRegionRedirectMiddlewarePlugin; +exports.getS3ExpiresMiddlewarePlugin = getS3ExpiresMiddlewarePlugin; +exports.getS3ExpressHttpSigningPlugin = getS3ExpressHttpSigningPlugin; +exports.getS3ExpressPlugin = getS3ExpressPlugin; +exports.getThrow200ExceptionsPlugin = getThrow200ExceptionsPlugin; +exports.getValidateBucketNamePlugin = getValidateBucketNamePlugin; +exports.regionRedirectEndpointMiddleware = regionRedirectEndpointMiddleware; +exports.regionRedirectEndpointMiddlewareOptions = regionRedirectEndpointMiddlewareOptions; +exports.regionRedirectMiddleware = regionRedirectMiddleware; +exports.regionRedirectMiddlewareOptions = regionRedirectMiddlewareOptions; +exports.resolveS3Config = resolveS3Config; +exports.s3ExpiresMiddleware = s3ExpiresMiddleware; +exports.s3ExpiresMiddlewareOptions = s3ExpiresMiddlewareOptions; +exports.s3ExpressHttpSigningMiddleware = s3ExpressHttpSigningMiddleware; +exports.s3ExpressHttpSigningMiddlewareOptions = s3ExpressHttpSigningMiddlewareOptions; +exports.s3ExpressMiddleware = s3ExpressMiddleware; +exports.s3ExpressMiddlewareOptions = s3ExpressMiddlewareOptions; +exports.throw200ExceptionsMiddleware = throw200ExceptionsMiddleware; +exports.throw200ExceptionsMiddlewareOptions = throw200ExceptionsMiddlewareOptions; +exports.validateBucketNameMiddleware = validateBucketNameMiddleware; +exports.validateBucketNameMiddlewareOptions = validateBucketNameMiddlewareOptions; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/bucket-endpoint-middleware.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/bucket-endpoint-middleware.js new file mode 100644 index 0000000..1902faf --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/bucket-endpoint-middleware.js @@ -0,0 +1,36 @@ +export function bucketEndpointMiddleware(options) { + return (next, context) => async (args) => { + if (options.bucketEndpoint) { + const endpoint = context.endpointV2; + if (endpoint) { + const bucket = args.input.Bucket; + if (typeof bucket === "string") { + try { + const bucketEndpointUrl = new URL(bucket); + context.endpointV2 = { + ...endpoint, + url: bucketEndpointUrl, + }; + } + catch (e) { + const warning = `@aws-sdk/middleware-sdk-s3: bucketEndpoint=true was set but Bucket=${bucket} could not be parsed as URL.`; + if (context.logger?.constructor?.name === "NoOpLogger") { + console.warn(warning); + } + else { + context.logger?.warn?.(warning); + } + throw e; + } + } + } + } + return next(args); + }; +} +export const bucketEndpointMiddlewareOptions = { + name: "bucketEndpointMiddleware", + override: true, + relation: "after", + toMiddleware: "endpointV2Middleware", +}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/check-content-length-header.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/check-content-length-header.js new file mode 100644 index 0000000..87498fe --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/check-content-length-header.js @@ -0,0 +1,32 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { NoOpLogger } from "@smithy/smithy-client"; +const CONTENT_LENGTH_HEADER = "content-length"; +const DECODED_CONTENT_LENGTH_HEADER = "x-amz-decoded-content-length"; +export function checkContentLengthHeader() { + return (next, context) => async (args) => { + const { request } = args; + if (HttpRequest.isInstance(request)) { + if (!(CONTENT_LENGTH_HEADER in request.headers) && !(DECODED_CONTENT_LENGTH_HEADER in request.headers)) { + const message = `Are you using a Stream of unknown length as the Body of a PutObject request? Consider using Upload instead from @aws-sdk/lib-storage.`; + if (typeof context?.logger?.warn === "function" && !(context.logger instanceof NoOpLogger)) { + context.logger.warn(message); + } + else { + console.warn(message); + } + } + } + return next({ ...args }); + }; +} +export const checkContentLengthHeaderMiddlewareOptions = { + step: "finalizeRequest", + tags: ["CHECK_CONTENT_LENGTH_HEADER"], + name: "getCheckContentLengthHeaderPlugin", + override: true, +}; +export const getCheckContentLengthHeaderPlugin = (unused) => ({ + applyToStack: (clientStack) => { + clientStack.add(checkContentLengthHeader(), checkContentLengthHeaderMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/index.js new file mode 100644 index 0000000..129fc2a --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/index.js @@ -0,0 +1,9 @@ +export * from "./check-content-length-header"; +export * from "./region-redirect-endpoint-middleware"; +export * from "./region-redirect-middleware"; +export * from "./s3-expires-middleware"; +export * from "./s3-express/index"; +export * from "./s3Configuration"; +export * from "./throw-200-exceptions"; +export * from "./validate-bucket-name"; +export { S3RestXmlProtocol } from "./protocol/S3RestXmlProtocol"; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/protocol/S3RestXmlProtocol.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/protocol/S3RestXmlProtocol.js new file mode 100644 index 0000000..26b3e44 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/protocol/S3RestXmlProtocol.js @@ -0,0 +1,25 @@ +import { AwsRestXmlProtocol } from "@aws-sdk/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +export class S3RestXmlProtocol extends AwsRestXmlProtocol { + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + const ns = NormalizedSchema.of(operationSchema.input); + const staticStructureSchema = ns.getSchema(); + let bucketMemberIndex = 0; + const requiredMemberCount = staticStructureSchema[6] ?? 0; + if (input && typeof input === "object") { + for (const [memberName, memberNs] of ns.structIterator()) { + if (++bucketMemberIndex > requiredMemberCount) { + break; + } + if (memberName === "Bucket") { + if (!input.Bucket && memberNs.getMergedTraits().httpLabel) { + throw new Error(`No value provided for input HTTP label: Bucket.`); + } + break; + } + } + } + return request; + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-endpoint-middleware.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-endpoint-middleware.js new file mode 100644 index 0000000..cd72761 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-endpoint-middleware.js @@ -0,0 +1,41 @@ +export const regionRedirectEndpointMiddleware = (config) => { + return (next, context) => async (args) => { + const originalRegion = await config.region(); + const regionProviderRef = config.region; + let unlock = () => { }; + if (context.__s3RegionRedirect) { + Object.defineProperty(config, "region", { + writable: false, + value: async () => { + return context.__s3RegionRedirect; + }, + }); + unlock = () => Object.defineProperty(config, "region", { + writable: true, + value: regionProviderRef, + }); + } + try { + const result = await next(args); + if (context.__s3RegionRedirect) { + unlock(); + const region = await config.region(); + if (originalRegion !== region) { + throw new Error("Region was not restored following S3 region redirect."); + } + } + return result; + } + catch (e) { + unlock(); + throw e; + } + }; +}; +export const regionRedirectEndpointMiddlewareOptions = { + tags: ["REGION_REDIRECT", "S3"], + name: "regionRedirectEndpointMiddleware", + override: true, + relation: "before", + toMiddleware: "endpointV2Middleware", +}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-middleware.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-middleware.js new file mode 100644 index 0000000..0f835d0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-middleware.js @@ -0,0 +1,42 @@ +import { regionRedirectEndpointMiddleware, regionRedirectEndpointMiddlewareOptions, } from "./region-redirect-endpoint-middleware"; +export function regionRedirectMiddleware(clientConfig) { + return (next, context) => async (args) => { + try { + return await next(args); + } + catch (err) { + if (clientConfig.followRegionRedirects) { + const statusCode = err?.$metadata?.httpStatusCode; + const isHeadBucket = context.commandName === "HeadBucketCommand"; + const bucketRegionHeader = err?.$response?.headers?.["x-amz-bucket-region"]; + if (bucketRegionHeader) { + if (statusCode === 301 || + (statusCode === 400 && (err?.name === "IllegalLocationConstraintException" || isHeadBucket))) { + try { + const actualRegion = bucketRegionHeader; + context.logger?.debug(`Redirecting from ${await clientConfig.region()} to ${actualRegion}`); + context.__s3RegionRedirect = actualRegion; + } + catch (e) { + throw new Error("Region redirect failed: " + e); + } + return next(args); + } + } + } + throw err; + } + }; +} +export const regionRedirectMiddlewareOptions = { + step: "initialize", + tags: ["REGION_REDIRECT", "S3"], + name: "regionRedirectMiddleware", + override: true, +}; +export const getRegionRedirectMiddlewarePlugin = (clientConfig) => ({ + applyToStack: (clientStack) => { + clientStack.add(regionRedirectMiddleware(clientConfig), regionRedirectMiddlewareOptions); + clientStack.addRelativeTo(regionRedirectEndpointMiddleware(clientConfig), regionRedirectEndpointMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-expires-middleware.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-expires-middleware.js new file mode 100644 index 0000000..1256487 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-expires-middleware.js @@ -0,0 +1,33 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { parseRfc7231DateTime } from "@smithy/smithy-client"; +export const s3ExpiresMiddleware = (config) => { + return (next, context) => async (args) => { + const result = await next(args); + const { response } = result; + if (HttpResponse.isInstance(response)) { + if (response.headers.expires) { + response.headers.expiresstring = response.headers.expires; + try { + parseRfc7231DateTime(response.headers.expires); + } + catch (e) { + context.logger?.warn(`AWS SDK Warning for ${context.clientName}::${context.commandName} response parsing (${response.headers.expires}): ${e}`); + delete response.headers.expires; + } + } + } + return result; + }; +}; +export const s3ExpiresMiddlewareOptions = { + tags: ["S3"], + name: "s3ExpiresMiddleware", + override: true, + relation: "after", + toMiddleware: "deserializerMiddleware", +}; +export const getS3ExpiresMiddlewarePlugin = (clientConfig) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(s3ExpiresMiddleware(clientConfig), s3ExpiresMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCache.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCache.js new file mode 100644 index 0000000..2693b25 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCache.js @@ -0,0 +1,39 @@ +export class S3ExpressIdentityCache { + data; + lastPurgeTime = Date.now(); + static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS = 30_000; + constructor(data = {}) { + this.data = data; + } + get(key) { + const entry = this.data[key]; + if (!entry) { + return; + } + return entry; + } + set(key, entry) { + this.data[key] = entry; + return entry; + } + delete(key) { + delete this.data[key]; + } + async purgeExpired() { + const now = Date.now(); + if (this.lastPurgeTime + S3ExpressIdentityCache.EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS > now) { + return; + } + for (const key in this.data) { + const entry = this.data[key]; + if (!entry.isRefreshing) { + const credential = await entry.identity; + if (credential.expiration) { + if (credential.expiration.getTime() < now) { + delete this.data[key]; + } + } + } + } + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCacheEntry.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCacheEntry.js new file mode 100644 index 0000000..30b284e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCacheEntry.js @@ -0,0 +1,14 @@ +export class S3ExpressIdentityCacheEntry { + _identity; + isRefreshing; + accessed; + constructor(_identity, isRefreshing = false, accessed = Date.now()) { + this._identity = _identity; + this.isRefreshing = isRefreshing; + this.accessed = accessed; + } + get identity() { + this.accessed = Date.now(); + return this._identity; + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityProviderImpl.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityProviderImpl.js new file mode 100644 index 0000000..3c70b30 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityProviderImpl.js @@ -0,0 +1,49 @@ +import { S3ExpressIdentityCache } from "./S3ExpressIdentityCache"; +import { S3ExpressIdentityCacheEntry } from "./S3ExpressIdentityCacheEntry"; +export class S3ExpressIdentityProviderImpl { + createSessionFn; + cache; + static REFRESH_WINDOW_MS = 60_000; + constructor(createSessionFn, cache = new S3ExpressIdentityCache()) { + this.createSessionFn = createSessionFn; + this.cache = cache; + } + async getS3ExpressIdentity(awsIdentity, identityProperties) { + const key = identityProperties.Bucket; + const { cache } = this; + const entry = cache.get(key); + if (entry) { + return entry.identity.then((identity) => { + const isExpired = (identity.expiration?.getTime() ?? 0) < Date.now(); + if (isExpired) { + return cache.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity; + } + const isExpiringSoon = (identity.expiration?.getTime() ?? 0) < Date.now() + S3ExpressIdentityProviderImpl.REFRESH_WINDOW_MS; + if (isExpiringSoon && !entry.isRefreshing) { + entry.isRefreshing = true; + this.getIdentity(key).then((id) => { + cache.set(key, new S3ExpressIdentityCacheEntry(Promise.resolve(id))); + }); + } + return identity; + }); + } + return cache.set(key, new S3ExpressIdentityCacheEntry(this.getIdentity(key))).identity; + } + async getIdentity(key) { + await this.cache.purgeExpired().catch((error) => { + console.warn("Error while clearing expired entries in S3ExpressIdentityCache: \n" + error); + }); + const session = await this.createSessionFn(key); + if (!session.Credentials?.AccessKeyId || !session.Credentials?.SecretAccessKey) { + throw new Error("s3#createSession response credential missing AccessKeyId or SecretAccessKey."); + } + const identity = { + accessKeyId: session.Credentials.AccessKeyId, + secretAccessKey: session.Credentials.SecretAccessKey, + sessionToken: session.Credentials.SessionToken, + expiration: session.Credentials.Expiration ? new Date(session.Credentials.Expiration) : undefined, + }; + return identity; + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/SignatureV4S3Express.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/SignatureV4S3Express.js new file mode 100644 index 0000000..af66190 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/SignatureV4S3Express.js @@ -0,0 +1,41 @@ +import { SignatureV4 } from "@smithy/signature-v4"; +import { SESSION_TOKEN_HEADER, SESSION_TOKEN_QUERY_PARAM } from "../constants"; +export class SignatureV4S3Express extends SignatureV4 { + async signWithCredentials(requestToSign, credentials, options) { + const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials); + requestToSign.headers[SESSION_TOKEN_HEADER] = credentials.sessionToken; + const privateAccess = this; + setSingleOverride(privateAccess, credentialsWithoutSessionToken); + return privateAccess.signRequest(requestToSign, options ?? {}); + } + async presignWithCredentials(requestToSign, credentials, options) { + const credentialsWithoutSessionToken = getCredentialsWithoutSessionToken(credentials); + delete requestToSign.headers[SESSION_TOKEN_HEADER]; + requestToSign.headers[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken; + requestToSign.query = requestToSign.query ?? {}; + requestToSign.query[SESSION_TOKEN_QUERY_PARAM] = credentials.sessionToken; + const privateAccess = this; + setSingleOverride(privateAccess, credentialsWithoutSessionToken); + return this.presign(requestToSign, options); + } +} +function getCredentialsWithoutSessionToken(credentials) { + const credentialsWithoutSessionToken = { + accessKeyId: credentials.accessKeyId, + secretAccessKey: credentials.secretAccessKey, + expiration: credentials.expiration, + }; + return credentialsWithoutSessionToken; +} +function setSingleOverride(privateAccess, credentialsWithoutSessionToken) { + const id = setTimeout(() => { + throw new Error("SignatureV4S3Express credential override was created but not called."); + }, 10); + const currentCredentialProvider = privateAccess.credentialProvider; + const overrideCredentialsProviderOnce = () => { + clearTimeout(id); + privateAccess.credentialProvider = currentCredentialProvider; + return Promise.resolve(credentialsWithoutSessionToken); + }; + privateAccess.credentialProvider = overrideCredentialsProviderOnce; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/constants.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/constants.js new file mode 100644 index 0000000..8ede71e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/constants.js @@ -0,0 +1,13 @@ +import { booleanSelector, SelectorType } from "@smithy/util-config-provider"; +export const S3_EXPRESS_BUCKET_TYPE = "Directory"; +export const S3_EXPRESS_BACKEND = "S3Express"; +export const S3_EXPRESS_AUTH_SCHEME = "sigv4-s3express"; +export const SESSION_TOKEN_QUERY_PARAM = "X-Amz-S3session-Token"; +export const SESSION_TOKEN_HEADER = SESSION_TOKEN_QUERY_PARAM.toLowerCase(); +export const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME = "AWS_S3_DISABLE_EXPRESS_SESSION_AUTH"; +export const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME = "s3_disable_express_session_auth"; +export const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS = { + environmentVariableSelector: (env) => booleanSelector(env, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME, SelectorType.ENV), + configFileSelector: (profile) => booleanSelector(profile, NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME, SelectorType.CONFIG), + default: false, +}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressHttpSigningMiddleware.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressHttpSigningMiddleware.js new file mode 100644 index 0000000..dedb24e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressHttpSigningMiddleware.js @@ -0,0 +1,38 @@ +import { httpSigningMiddlewareOptions } from "@smithy/core"; +import { HttpRequest } from "@smithy/protocol-http"; +import { getSmithyContext } from "@smithy/util-middleware"; +import { signS3Express } from "./signS3Express"; +const defaultErrorHandler = (signingProperties) => (error) => { + throw error; +}; +const defaultSuccessHandler = (httpResponse, signingProperties) => { }; +export const s3ExpressHttpSigningMiddlewareOptions = httpSigningMiddlewareOptions; +export const s3ExpressHttpSigningMiddleware = (config) => (next, context) => async (args) => { + if (!HttpRequest.isInstance(args.request)) { + return next(args); + } + const smithyContext = getSmithyContext(context); + const scheme = smithyContext.selectedHttpAuthScheme; + if (!scheme) { + throw new Error(`No HttpAuthScheme was selected: unable to sign request`); + } + const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme; + let request; + if (context.s3ExpressIdentity) { + request = await signS3Express(context.s3ExpressIdentity, signingProperties, args.request, await config.signer()); + } + else { + request = await signer.sign(args.request, identity, signingProperties); + } + const output = await next({ + ...args, + request, + }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); + (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); + return output; +}; +export const getS3ExpressHttpSigningPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(s3ExpressHttpSigningMiddleware(config), httpSigningMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressMiddleware.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressMiddleware.js new file mode 100644 index 0000000..ad519fa --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressMiddleware.js @@ -0,0 +1,41 @@ +import { setFeature } from "@aws-sdk/core/client"; +import { HttpRequest } from "@smithy/protocol-http"; +import { S3_EXPRESS_AUTH_SCHEME, S3_EXPRESS_BACKEND, S3_EXPRESS_BUCKET_TYPE, SESSION_TOKEN_HEADER } from "../constants"; +export const s3ExpressMiddleware = (options) => { + return (next, context) => async (args) => { + if (context.endpointV2) { + const endpoint = context.endpointV2; + const isS3ExpressAuth = endpoint.properties?.authSchemes?.[0]?.name === S3_EXPRESS_AUTH_SCHEME; + const isS3ExpressBucket = endpoint.properties?.backend === S3_EXPRESS_BACKEND || + endpoint.properties?.bucketType === S3_EXPRESS_BUCKET_TYPE; + if (isS3ExpressBucket) { + setFeature(context, "S3_EXPRESS_BUCKET", "J"); + context.isS3ExpressBucket = true; + } + if (isS3ExpressAuth) { + const requestBucket = args.input.Bucket; + if (requestBucket) { + const s3ExpressIdentity = await options.s3ExpressIdentityProvider.getS3ExpressIdentity(await options.credentials(), { + Bucket: requestBucket, + }); + context.s3ExpressIdentity = s3ExpressIdentity; + if (HttpRequest.isInstance(args.request) && s3ExpressIdentity.sessionToken) { + args.request.headers[SESSION_TOKEN_HEADER] = s3ExpressIdentity.sessionToken; + } + } + } + } + return next(args); + }; +}; +export const s3ExpressMiddlewareOptions = { + name: "s3ExpressMiddleware", + step: "build", + tags: ["S3", "S3_EXPRESS"], + override: true, +}; +export const getS3ExpressPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(s3ExpressMiddleware(options), s3ExpressMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/signS3Express.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/signS3Express.js new file mode 100644 index 0000000..b12c9ec --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/signS3Express.js @@ -0,0 +1,7 @@ +export const signS3Express = async (s3ExpressIdentity, signingOptions, request, sigV4MultiRegionSigner) => { + const signedRequest = await sigV4MultiRegionSigner.signWithCredentials(request, s3ExpressIdentity, {}); + if (signedRequest.headers["X-Amz-Security-Token"] || signedRequest.headers["x-amz-security-token"]) { + throw new Error("X-Amz-Security-Token must not be set for s3-express requests."); + } + return signedRequest; +}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/index.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/index.js new file mode 100644 index 0000000..e6c1da7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/index.js @@ -0,0 +1,7 @@ +export { S3ExpressIdentityCache } from "./classes/S3ExpressIdentityCache"; +export { S3ExpressIdentityCacheEntry } from "./classes/S3ExpressIdentityCacheEntry"; +export { S3ExpressIdentityProviderImpl } from "./classes/S3ExpressIdentityProviderImpl"; +export { SignatureV4S3Express } from "./classes/SignatureV4S3Express"; +export { NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS } from "./constants"; +export { getS3ExpressPlugin, s3ExpressMiddleware, s3ExpressMiddlewareOptions } from "./functions/s3ExpressMiddleware"; +export { getS3ExpressHttpSigningPlugin, s3ExpressHttpSigningMiddleware, s3ExpressHttpSigningMiddlewareOptions, } from "./functions/s3ExpressHttpSigningMiddleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/interfaces/S3ExpressIdentity.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/interfaces/S3ExpressIdentity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/interfaces/S3ExpressIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/interfaces/S3ExpressIdentityProvider.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/interfaces/S3ExpressIdentityProvider.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/interfaces/S3ExpressIdentityProvider.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3Configuration.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3Configuration.js new file mode 100644 index 0000000..50295e2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3Configuration.js @@ -0,0 +1,17 @@ +import { S3ExpressIdentityProviderImpl } from "./s3-express"; +export const resolveS3Config = (input, { session, }) => { + const [s3ClientProvider, CreateSessionCommandCtor] = session; + const { forcePathStyle, useAccelerateEndpoint, disableMultiregionAccessPoints, followRegionRedirects, s3ExpressIdentityProvider, bucketEndpoint, expectContinueHeader, } = input; + return Object.assign(input, { + forcePathStyle: forcePathStyle ?? false, + useAccelerateEndpoint: useAccelerateEndpoint ?? false, + disableMultiregionAccessPoints: disableMultiregionAccessPoints ?? false, + followRegionRedirects: followRegionRedirects ?? false, + s3ExpressIdentityProvider: s3ExpressIdentityProvider ?? + new S3ExpressIdentityProviderImpl(async (key) => s3ClientProvider().send(new CreateSessionCommandCtor({ + Bucket: key, + }))), + bucketEndpoint: bucketEndpoint ?? false, + expectContinueHeader: expectContinueHeader ?? 2_097_152, + }); +}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/throw-200-exceptions.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/throw-200-exceptions.js new file mode 100644 index 0000000..f0f5ca3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/throw-200-exceptions.js @@ -0,0 +1,67 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { headStream, splitStream } from "@smithy/util-stream"; +const THROW_IF_EMPTY_BODY = { + CopyObjectCommand: true, + UploadPartCopyCommand: true, + CompleteMultipartUploadCommand: true, +}; +const MAX_BYTES_TO_INSPECT = 3000; +export const throw200ExceptionsMiddleware = (config) => (next, context) => async (args) => { + const result = await next(args); + const { response } = result; + if (!HttpResponse.isInstance(response)) { + return result; + } + const { statusCode, body: sourceBody } = response; + if (statusCode < 200 || statusCode >= 300) { + return result; + } + const isSplittableStream = typeof sourceBody?.stream === "function" || + typeof sourceBody?.pipe === "function" || + typeof sourceBody?.tee === "function"; + if (!isSplittableStream) { + return result; + } + let bodyCopy = sourceBody; + let body = sourceBody; + if (sourceBody && typeof sourceBody === "object" && !(sourceBody instanceof Uint8Array)) { + [bodyCopy, body] = await splitStream(sourceBody); + } + response.body = body; + const bodyBytes = await collectBody(bodyCopy, { + streamCollector: async (stream) => { + return headStream(stream, MAX_BYTES_TO_INSPECT); + }, + }); + if (typeof bodyCopy?.destroy === "function") { + bodyCopy.destroy(); + } + const bodyStringTail = config.utf8Encoder(bodyBytes.subarray(bodyBytes.length - 16)); + if (bodyBytes.length === 0 && THROW_IF_EMPTY_BODY[context.commandName]) { + const err = new Error("S3 aborted request"); + err.name = "InternalError"; + throw err; + } + if (bodyStringTail && bodyStringTail.endsWith("")) { + response.statusCode = 400; + } + return result; +}; +const collectBody = (streamBody = new Uint8Array(), context) => { + if (streamBody instanceof Uint8Array) { + return Promise.resolve(streamBody); + } + return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array()); +}; +export const throw200ExceptionsMiddlewareOptions = { + relation: "after", + toMiddleware: "deserializerMiddleware", + tags: ["THROW_200_EXCEPTIONS", "S3"], + name: "throw200ExceptionsMiddleware", + override: true, +}; +export const getThrow200ExceptionsPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(throw200ExceptionsMiddleware(config), throw200ExceptionsMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/validate-bucket-name.js b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/validate-bucket-name.js new file mode 100644 index 0000000..9636cbe --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/validate-bucket-name.js @@ -0,0 +1,25 @@ +import { validate as validateArn } from "@aws-sdk/util-arn-parser"; +import { bucketEndpointMiddleware, bucketEndpointMiddlewareOptions } from "./bucket-endpoint-middleware"; +export function validateBucketNameMiddleware({ bucketEndpoint }) { + return (next) => async (args) => { + const { input: { Bucket }, } = args; + if (!bucketEndpoint && typeof Bucket === "string" && !validateArn(Bucket) && Bucket.indexOf("/") >= 0) { + const err = new Error(`Bucket name shouldn't contain '/', received '${Bucket}'`); + err.name = "InvalidBucketName"; + throw err; + } + return next({ ...args }); + }; +} +export const validateBucketNameMiddlewareOptions = { + step: "initialize", + tags: ["VALIDATE_BUCKET_NAME"], + name: "validateBucketNameMiddleware", + override: true, +}; +export const getValidateBucketNamePlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(validateBucketNameMiddleware(options), validateBucketNameMiddlewareOptions); + clientStack.addRelativeTo(bucketEndpointMiddleware(options), bucketEndpointMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/bucket-endpoint-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/bucket-endpoint-middleware.d.ts new file mode 100644 index 0000000..22d6ab0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/bucket-endpoint-middleware.d.ts @@ -0,0 +1,13 @@ +import type { RelativeMiddlewareOptions, SerializeMiddleware } from "@smithy/types"; +interface PreviouslyResolved { + bucketEndpoint?: boolean; +} +/** + * @internal + */ +export declare function bucketEndpointMiddleware(options: PreviouslyResolved): SerializeMiddleware; +/** + * @internal + */ +export declare const bucketEndpointMiddlewareOptions: RelativeMiddlewareOptions; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/check-content-length-header.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/check-content-length-header.d.ts new file mode 100644 index 0000000..9cd37a4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/check-content-length-header.d.ts @@ -0,0 +1,16 @@ +import type { FinalizeRequestHandlerOptions, FinalizeRequestMiddleware, Pluggable } from "@smithy/types"; +/** + * @internal + * + * Log a warning if the input to PutObject is detected to be a Stream of unknown ContentLength and + * recommend the usage of the @aws-sdk/lib-storage Upload class. + */ +export declare function checkContentLengthHeader(): FinalizeRequestMiddleware; +/** + * @internal + */ +export declare const checkContentLengthHeaderMiddlewareOptions: FinalizeRequestHandlerOptions; +/** + * @internal + */ +export declare const getCheckContentLengthHeaderPlugin: (unused: any) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/index.d.ts new file mode 100644 index 0000000..129fc2a --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/index.d.ts @@ -0,0 +1,9 @@ +export * from "./check-content-length-header"; +export * from "./region-redirect-endpoint-middleware"; +export * from "./region-redirect-middleware"; +export * from "./s3-expires-middleware"; +export * from "./s3-express/index"; +export * from "./s3Configuration"; +export * from "./throw-200-exceptions"; +export * from "./validate-bucket-name"; +export { S3RestXmlProtocol } from "./protocol/S3RestXmlProtocol"; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/protocol/S3RestXmlProtocol.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/protocol/S3RestXmlProtocol.d.ts new file mode 100644 index 0000000..4fbdcc9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/protocol/S3RestXmlProtocol.d.ts @@ -0,0 +1,20 @@ +import { AwsRestXmlProtocol } from "@aws-sdk/core/protocols"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest, OperationSchema, SerdeFunctions } from "@smithy/types"; +/** + * Customization for S3 backwards compatibility. + * + * In the S3 model, Bucket is considered an HTTP label, and we normally perform http label client + * side validation. However, the standard validation is that the http label appears in + * the request path. Bucket is unique in that it is an endpoint context param. It appears + * where the endpoint resolver decides, rather than in the URL path (although sometimes it does appear there). + * + * For consistency with older code generated clients, we throw the HTTP label validation + * error when the Bucket input is missing, if-and-only-if it is an httpLabel and is a required top level member. + * + * This does not apply to S3 Control. + * + * @internal + */ +export declare class S3RestXmlProtocol extends AwsRestXmlProtocol { + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-endpoint-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-endpoint-middleware.d.ts new file mode 100644 index 0000000..6c94b8f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-endpoint-middleware.d.ts @@ -0,0 +1,10 @@ +import type { RelativeMiddlewareOptions, SerializeMiddleware } from "@smithy/types"; +import type { PreviouslyResolved } from "./region-redirect-middleware"; +/** + * @internal + */ +export declare const regionRedirectEndpointMiddleware: (config: PreviouslyResolved) => SerializeMiddleware; +/** + * @internal + */ +export declare const regionRedirectEndpointMiddlewareOptions: RelativeMiddlewareOptions; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-middleware.d.ts new file mode 100644 index 0000000..c96efaa --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-middleware.d.ts @@ -0,0 +1,20 @@ +import type { InitializeHandlerOptions, InitializeMiddleware, Pluggable, Provider } from "@smithy/types"; +/** + * @internal + */ +export interface PreviouslyResolved { + region: Provider; + followRegionRedirects: boolean; +} +/** + * @internal + */ +export declare function regionRedirectMiddleware(clientConfig: PreviouslyResolved): InitializeMiddleware; +/** + * @internal + */ +export declare const regionRedirectMiddlewareOptions: InitializeHandlerOptions; +/** + * @internal + */ +export declare const getRegionRedirectMiddlewarePlugin: (clientConfig: PreviouslyResolved) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-expires-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-expires-middleware.d.ts new file mode 100644 index 0000000..48e204a --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-expires-middleware.d.ts @@ -0,0 +1,26 @@ +import type { DeserializeMiddleware, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +/** + * @internal + */ +interface PreviouslyResolved { +} +/** + * @internal + * + * From the S3 Expires compatibility spec. + * A model transform will ensure S3#Expires remains a timestamp shape, though + * it is deprecated. + * If a particular object has a non-date string set as the Expires value, + * the SDK will have the raw string as "ExpiresString" on the response. + * + */ +export declare const s3ExpiresMiddleware: (config: PreviouslyResolved) => DeserializeMiddleware; +/** + * @internal + */ +export declare const s3ExpiresMiddlewareOptions: RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getS3ExpiresMiddlewarePlugin: (clientConfig: PreviouslyResolved) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityCache.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityCache.d.ts new file mode 100644 index 0000000..7193036 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityCache.d.ts @@ -0,0 +1,16 @@ +import type { S3ExpressIdentityCacheEntry } from "./S3ExpressIdentityCacheEntry"; +/** + * @internal + * + * Stores identities by key. + */ +export declare class S3ExpressIdentityCache { + private data; + private lastPurgeTime; + static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS: number; + constructor(data?: Record); + get(key: string): undefined | S3ExpressIdentityCacheEntry; + set(key: string, entry: S3ExpressIdentityCacheEntry): S3ExpressIdentityCacheEntry; + delete(key: string): void; + purgeExpired(): Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityCacheEntry.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityCacheEntry.d.ts new file mode 100644 index 0000000..2d8290d --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityCacheEntry.d.ts @@ -0,0 +1,16 @@ +import type { S3ExpressIdentity } from "../interfaces/S3ExpressIdentity"; +/** + * @internal + */ +export declare class S3ExpressIdentityCacheEntry { + private _identity; + isRefreshing: boolean; + accessed: number; + /** + * @param identity - stored identity. + * @param accessed - timestamp of last access in epoch ms. + * @param isRefreshing - this key is currently in the process of being refreshed (background). + */ + constructor(_identity: Promise, isRefreshing?: boolean, accessed?: number); + get identity(): Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityProviderImpl.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityProviderImpl.d.ts new file mode 100644 index 0000000..f20cf59 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityProviderImpl.d.ts @@ -0,0 +1,32 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +import type { S3ExpressIdentity } from "../interfaces/S3ExpressIdentity"; +import type { S3ExpressIdentityProvider } from "../interfaces/S3ExpressIdentityProvider"; +import { S3ExpressIdentityCache } from "./S3ExpressIdentityCache"; +/** + * @internal + * + * This should match S3::CreateSessionCommandOutput::SessionCredentials + * but it is not imported since that would create a circular dependency. + */ +type Credentials = { + AccessKeyId: string | undefined; + SecretAccessKey: string | undefined; + SessionToken: string | undefined; + Expiration: Date | undefined; +}; +/** + * @internal + */ +export declare class S3ExpressIdentityProviderImpl implements S3ExpressIdentityProvider { + private createSessionFn; + private cache; + static REFRESH_WINDOW_MS: number; + constructor(createSessionFn: (key: string) => Promise<{ + Credentials: Credentials; + }>, cache?: S3ExpressIdentityCache); + getS3ExpressIdentity(awsIdentity: AwsCredentialIdentity, identityProperties: { + Bucket: string; + } & Record): Promise; + private getIdentity; +} +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/SignatureV4S3Express.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/SignatureV4S3Express.d.ts new file mode 100644 index 0000000..841c111 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/SignatureV4S3Express.d.ts @@ -0,0 +1,17 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +import { SignatureV4 } from "@smithy/signature-v4"; +import type { HttpRequest as IHttpRequest, RequestPresigningArguments, RequestSigningArguments } from "@smithy/types"; +export declare class SignatureV4S3Express extends SignatureV4 { + /** + * Signs with alternate provided credentials instead of those provided in the + * constructor. + * + * Additionally omits the credential sessionToken and assigns it to the + * alternate header field for S3 Express. + */ + signWithCredentials(requestToSign: IHttpRequest, credentials: AwsCredentialIdentity, options?: RequestSigningArguments): Promise; + /** + * Similar to {@link SignatureV4S3Express#signWithCredentials} but for presigning. + */ + presignWithCredentials(requestToSign: IHttpRequest, credentials: AwsCredentialIdentity, options?: RequestPresigningArguments): Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/constants.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/constants.d.ts new file mode 100644 index 0000000..328e504 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/constants.d.ts @@ -0,0 +1,37 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + * + * @deprecated will be replaced by backend. + * + * TODO(s3-express): non-beta value, backend == S3Express. + */ +export declare const S3_EXPRESS_BUCKET_TYPE = "Directory"; +/** + * @internal + */ +export declare const S3_EXPRESS_BACKEND = "S3Express"; +/** + * @internal + */ +export declare const S3_EXPRESS_AUTH_SCHEME = "sigv4-s3express"; +/** + * @internal + */ +export declare const SESSION_TOKEN_QUERY_PARAM = "X-Amz-S3session-Token"; +/** + * @internal + */ +export declare const SESSION_TOKEN_HEADER: string; +/** + * @internal + */ +export declare const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME = "AWS_S3_DISABLE_EXPRESS_SESSION_AUTH"; +/** + * @internal + */ +export declare const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME = "s3_disable_express_session_auth"; +/** + * @internal + */ +export declare const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3ExpressHttpSigningMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3ExpressHttpSigningMiddleware.d.ts new file mode 100644 index 0000000..ca9b364 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3ExpressHttpSigningMiddleware.d.ts @@ -0,0 +1,27 @@ +import type { IHttpRequest } from "@smithy/protocol-http"; +import type { AuthScheme, AwsCredentialIdentity, FinalizeRequestMiddleware, Pluggable, RequestSigner } from "@smithy/types"; +interface SigningProperties { + signingRegion: string; + signingDate: Date; + signingService: string; +} +interface PreviouslyResolved { + signer: (authScheme?: AuthScheme | undefined) => Promise): Promise; + }>; +} +/** + * @internal + */ +export declare const s3ExpressHttpSigningMiddlewareOptions: import("@smithy/types").FinalizeRequestHandlerOptions & import("@smithy/types").RelativeLocation & Omit; +/** + * @internal + */ +export declare const s3ExpressHttpSigningMiddleware: (config: PreviouslyResolved) => FinalizeRequestMiddleware; +/** + * @internal + */ +export declare const getS3ExpressHttpSigningPlugin: (config: { + signer: (authScheme?: AuthScheme | undefined) => Promise; +}) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3ExpressMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3ExpressMiddleware.d.ts new file mode 100644 index 0000000..40b56bb --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3ExpressMiddleware.d.ts @@ -0,0 +1,32 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +import type { BuildHandlerOptions, BuildMiddleware, Logger, MemoizedProvider, Pluggable } from "@smithy/types"; +import type { S3ExpressIdentity } from "../interfaces/S3ExpressIdentity"; +import type { S3ExpressIdentityProvider } from "../interfaces/S3ExpressIdentityProvider"; +declare module "@smithy/types" { + interface HandlerExecutionContext { + /** + * Reserved key, only when using S3. + */ + s3ExpressIdentity?: S3ExpressIdentity; + } +} +/** + * @internal + */ +export interface S3ExpressResolvedConfig { + logger?: Logger; + s3ExpressIdentityProvider: S3ExpressIdentityProvider; + credentials: MemoizedProvider; +} +/** + * @internal + */ +export declare const s3ExpressMiddleware: (options: S3ExpressResolvedConfig) => BuildMiddleware; +/** + * @internal + */ +export declare const s3ExpressMiddlewareOptions: BuildHandlerOptions; +/** + * @internal + */ +export declare const getS3ExpressPlugin: (options: S3ExpressResolvedConfig) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/signS3Express.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/signS3Express.d.ts new file mode 100644 index 0000000..0233086 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/signS3Express.d.ts @@ -0,0 +1,9 @@ +import type { AwsCredentialIdentity, HttpRequest as IHttpRequest } from "@smithy/types"; +import type { S3ExpressIdentity } from "../interfaces/S3ExpressIdentity"; +export declare const signS3Express: (s3ExpressIdentity: S3ExpressIdentity, signingOptions: { + signingDate: Date; + signingRegion: string; + signingService: string; +}, request: IHttpRequest, sigV4MultiRegionSigner: { + signWithCredentials(req: IHttpRequest, identity: AwsCredentialIdentity, opts?: Partial): Promise; +}) => Promise; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/index.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/index.d.ts new file mode 100644 index 0000000..a8a239a --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/index.d.ts @@ -0,0 +1,9 @@ +export { S3ExpressIdentityCache } from "./classes/S3ExpressIdentityCache"; +export { S3ExpressIdentityCacheEntry } from "./classes/S3ExpressIdentityCacheEntry"; +export { S3ExpressIdentityProviderImpl } from "./classes/S3ExpressIdentityProviderImpl"; +export { SignatureV4S3Express } from "./classes/SignatureV4S3Express"; +export { NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS } from "./constants"; +export { getS3ExpressPlugin, s3ExpressMiddleware, s3ExpressMiddlewareOptions } from "./functions/s3ExpressMiddleware"; +export { getS3ExpressHttpSigningPlugin, s3ExpressHttpSigningMiddleware, s3ExpressHttpSigningMiddlewareOptions, } from "./functions/s3ExpressHttpSigningMiddleware"; +export { S3ExpressIdentity } from "./interfaces/S3ExpressIdentity"; +export { S3ExpressIdentityProvider } from "./interfaces/S3ExpressIdentityProvider"; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/S3ExpressIdentity.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/S3ExpressIdentity.d.ts new file mode 100644 index 0000000..0dcbdb4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/S3ExpressIdentity.d.ts @@ -0,0 +1,6 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +/** + * @public + */ +export interface S3ExpressIdentity extends AwsCredentialIdentity { +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/S3ExpressIdentityProvider.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/S3ExpressIdentityProvider.d.ts new file mode 100644 index 0000000..688f025 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/S3ExpressIdentityProvider.d.ts @@ -0,0 +1,12 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +import type { S3ExpressIdentity } from "./S3ExpressIdentity"; +/** + * @public + */ +export interface S3ExpressIdentityProvider { + /** + * @param awsIdentity - pre-existing credentials. + * @param identityProperties - unknown. + */ + getS3ExpressIdentity(awsIdentity: AwsCredentialIdentity, identityProperties: Record): Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3Configuration.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3Configuration.d.ts new file mode 100644 index 0000000..7e1ffd2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3Configuration.d.ts @@ -0,0 +1,79 @@ +import type { Client, Command } from "@smithy/types"; +import type { S3ExpressIdentityProvider } from "./s3-express"; +/** + * All endpoint parameters with built-in bindings of AWS::S3::* + * @public + */ +export interface S3InputConfig { + /** + * Whether to force path style URLs for S3 objects + * (e.g., https://s3.amazonaws.com// instead of https://.s3.amazonaws.com/ + */ + forcePathStyle?: boolean; + /** + * Whether to use the S3 Transfer Acceleration endpoint by default + */ + useAccelerateEndpoint?: boolean; + /** + * Whether multi-region access points (MRAP) should be disabled. + */ + disableMultiregionAccessPoints?: boolean; + /** + * This feature was previously called the S3 Global Client. + * This can result in additional latency as failed requests are retried + * with a corrected region when receiving a permanent redirect error with status 301. + * This feature should only be used as a last resort if you do not know the region of your bucket(s) ahead of time. + */ + followRegionRedirects?: boolean; + /** + * Identity provider for an S3 feature. + */ + s3ExpressIdentityProvider?: S3ExpressIdentityProvider; + /** + * Whether to use the bucket name as the endpoint for this client. + */ + bucketEndpoint?: boolean; + /** + * This field configures the SDK's behavior around setting the `expect: 100-continue` header. + * + * Default: 2_097_152 (2 MB) + * + * When given as a boolean - always send or omit the header. + * When given as a number - minimum byte threshold of the payload before setting the header. + * Unmeasurable payload sizes (streams) will set the header too. + * + * The `expect: 100-continue` header is used to allow the server a chance to validate the PUT request + * headers before the client begins to send the object payload. This avoids wasteful data transmission for a + * request that is rejected. + * + * However, there is a trade-off where the request will take longer to complete. + */ + expectContinueHeader?: boolean | number; +} +/** + * This is a placeholder for the actual + * S3Client type from \@aws-sdk/client-s3. It is not explicitly + * imported to avoid a circular dependency. + * @internal + */ +type PlaceholderS3Client = Client & any; +/** + * Placeholder for the constructor for CreateSessionCommand. + * @internal + */ +type PlaceholderCreateSessionCommandCtor = { + new (args: any): Command; +}; +export interface S3ResolvedConfig { + forcePathStyle: boolean; + useAccelerateEndpoint: boolean; + disableMultiregionAccessPoints: boolean; + followRegionRedirects: boolean; + s3ExpressIdentityProvider: S3ExpressIdentityProvider; + bucketEndpoint: boolean; + expectContinueHeader: boolean | number; +} +export declare const resolveS3Config: (input: T & S3InputConfig, { session, }: { + session: [() => PlaceholderS3Client, PlaceholderCreateSessionCommandCtor]; +}) => T & S3ResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/throw-200-exceptions.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/throw-200-exceptions.d.ts new file mode 100644 index 0000000..ed9a48d --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/throw-200-exceptions.d.ts @@ -0,0 +1,20 @@ +import type { DeserializeMiddleware, Encoder, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +type PreviouslyResolved = { + utf8Encoder: Encoder; +}; +/** + * In case of an internal error/terminated connection, S3 operations may return 200 errors. CopyObject, UploadPartCopy, + * CompleteMultipartUpload may return empty payload or payload with only xml Preamble. + * @internal + */ +export declare const throw200ExceptionsMiddleware: (config: PreviouslyResolved) => DeserializeMiddleware; +/** + * @internal + */ +export declare const throw200ExceptionsMiddlewareOptions: RelativeMiddlewareOptions; +/** + * + * @internal + */ +export declare const getThrow200ExceptionsPlugin: (config: PreviouslyResolved) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/bucket-endpoint-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/bucket-endpoint-middleware.d.ts new file mode 100644 index 0000000..1b4e2a6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/bucket-endpoint-middleware.d.ts @@ -0,0 +1,9 @@ +import { RelativeMiddlewareOptions, SerializeMiddleware } from "@smithy/types"; +interface PreviouslyResolved { + bucketEndpoint?: boolean; +} +export declare function bucketEndpointMiddleware( + options: PreviouslyResolved +): SerializeMiddleware; +export declare const bucketEndpointMiddlewareOptions: RelativeMiddlewareOptions; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/check-content-length-header.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/check-content-length-header.d.ts new file mode 100644 index 0000000..09db7f0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/check-content-length-header.d.ts @@ -0,0 +1,13 @@ +import { + FinalizeRequestHandlerOptions, + FinalizeRequestMiddleware, + Pluggable, +} from "@smithy/types"; +export declare function checkContentLengthHeader(): FinalizeRequestMiddleware< + any, + any +>; +export declare const checkContentLengthHeaderMiddlewareOptions: FinalizeRequestHandlerOptions; +export declare const getCheckContentLengthHeaderPlugin: ( + unused: any +) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..129fc2a --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/index.d.ts @@ -0,0 +1,9 @@ +export * from "./check-content-length-header"; +export * from "./region-redirect-endpoint-middleware"; +export * from "./region-redirect-middleware"; +export * from "./s3-expires-middleware"; +export * from "./s3-express/index"; +export * from "./s3Configuration"; +export * from "./throw-200-exceptions"; +export * from "./validate-bucket-name"; +export { S3RestXmlProtocol } from "./protocol/S3RestXmlProtocol"; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/protocol/S3RestXmlProtocol.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/protocol/S3RestXmlProtocol.d.ts new file mode 100644 index 0000000..fe78dd4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/protocol/S3RestXmlProtocol.d.ts @@ -0,0 +1,15 @@ +import { AwsRestXmlProtocol } from "@aws-sdk/core/protocols"; +import { + EndpointBearer, + HandlerExecutionContext, + HttpRequest, + OperationSchema, + SerdeFunctions, +} from "@smithy/types"; +export declare class S3RestXmlProtocol extends AwsRestXmlProtocol { + serializeRequest( + operationSchema: OperationSchema, + input: Input, + context: HandlerExecutionContext & SerdeFunctions & EndpointBearer + ): Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/region-redirect-endpoint-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/region-redirect-endpoint-middleware.d.ts new file mode 100644 index 0000000..bbe5b12 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/region-redirect-endpoint-middleware.d.ts @@ -0,0 +1,6 @@ +import { RelativeMiddlewareOptions, SerializeMiddleware } from "@smithy/types"; +import { PreviouslyResolved } from "./region-redirect-middleware"; +export declare const regionRedirectEndpointMiddleware: ( + config: PreviouslyResolved +) => SerializeMiddleware; +export declare const regionRedirectEndpointMiddlewareOptions: RelativeMiddlewareOptions; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/region-redirect-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/region-redirect-middleware.d.ts new file mode 100644 index 0000000..7be451a --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/region-redirect-middleware.d.ts @@ -0,0 +1,17 @@ +import { + InitializeHandlerOptions, + InitializeMiddleware, + Pluggable, + Provider, +} from "@smithy/types"; +export interface PreviouslyResolved { + region: Provider; + followRegionRedirects: boolean; +} +export declare function regionRedirectMiddleware( + clientConfig: PreviouslyResolved +): InitializeMiddleware; +export declare const regionRedirectMiddlewareOptions: InitializeHandlerOptions; +export declare const getRegionRedirectMiddlewarePlugin: ( + clientConfig: PreviouslyResolved +) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-expires-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-expires-middleware.d.ts new file mode 100644 index 0000000..652274f --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-expires-middleware.d.ts @@ -0,0 +1,14 @@ +import { + DeserializeMiddleware, + Pluggable, + RelativeMiddlewareOptions, +} from "@smithy/types"; +interface PreviouslyResolved {} +export declare const s3ExpiresMiddleware: ( + config: PreviouslyResolved +) => DeserializeMiddleware; +export declare const s3ExpiresMiddlewareOptions: RelativeMiddlewareOptions; +export declare const getS3ExpiresMiddlewarePlugin: ( + clientConfig: PreviouslyResolved +) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityCache.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityCache.d.ts new file mode 100644 index 0000000..7fc0c0e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityCache.d.ts @@ -0,0 +1,14 @@ +import { S3ExpressIdentityCacheEntry } from "./S3ExpressIdentityCacheEntry"; +export declare class S3ExpressIdentityCache { + private data; + private lastPurgeTime; + static EXPIRED_CREDENTIAL_PURGE_INTERVAL_MS: number; + constructor(data?: Record); + get(key: string): undefined | S3ExpressIdentityCacheEntry; + set( + key: string, + entry: S3ExpressIdentityCacheEntry + ): S3ExpressIdentityCacheEntry; + delete(key: string): void; + purgeExpired(): Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityCacheEntry.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityCacheEntry.d.ts new file mode 100644 index 0000000..5c0ed4c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityCacheEntry.d.ts @@ -0,0 +1,12 @@ +import { S3ExpressIdentity } from "../interfaces/S3ExpressIdentity"; +export declare class S3ExpressIdentityCacheEntry { + private _identity; + isRefreshing: boolean; + accessed: number; + constructor( + _identity: Promise, + isRefreshing?: boolean, + accessed?: number + ); + readonly identity: Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityProviderImpl.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityProviderImpl.d.ts new file mode 100644 index 0000000..3ee33c3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityProviderImpl.d.ts @@ -0,0 +1,31 @@ +import { AwsCredentialIdentity } from "@aws-sdk/types"; +import { S3ExpressIdentity } from "../interfaces/S3ExpressIdentity"; +import { S3ExpressIdentityProvider } from "../interfaces/S3ExpressIdentityProvider"; +import { S3ExpressIdentityCache } from "./S3ExpressIdentityCache"; +type Credentials = { + AccessKeyId: string | undefined; + SecretAccessKey: string | undefined; + SessionToken: string | undefined; + Expiration: Date | undefined; +}; +export declare class S3ExpressIdentityProviderImpl + implements S3ExpressIdentityProvider +{ + private createSessionFn; + private cache; + static REFRESH_WINDOW_MS: number; + constructor( + createSessionFn: (key: string) => Promise<{ + Credentials: Credentials; + }>, + cache?: S3ExpressIdentityCache + ); + getS3ExpressIdentity( + awsIdentity: AwsCredentialIdentity, + identityProperties: { + Bucket: string; + } & Record + ): Promise; + private getIdentity; +} +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/SignatureV4S3Express.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/SignatureV4S3Express.d.ts new file mode 100644 index 0000000..effd0eb --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/SignatureV4S3Express.d.ts @@ -0,0 +1,19 @@ +import { AwsCredentialIdentity } from "@aws-sdk/types"; +import { SignatureV4 } from "@smithy/signature-v4"; +import { + HttpRequest as IHttpRequest, + RequestPresigningArguments, + RequestSigningArguments, +} from "@smithy/types"; +export declare class SignatureV4S3Express extends SignatureV4 { + signWithCredentials( + requestToSign: IHttpRequest, + credentials: AwsCredentialIdentity, + options?: RequestSigningArguments + ): Promise; + presignWithCredentials( + requestToSign: IHttpRequest, + credentials: AwsCredentialIdentity, + options?: RequestPresigningArguments + ): Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/constants.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/constants.d.ts new file mode 100644 index 0000000..58629b1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/constants.d.ts @@ -0,0 +1,11 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const S3_EXPRESS_BUCKET_TYPE = "Directory"; +export declare const S3_EXPRESS_BACKEND = "S3Express"; +export declare const S3_EXPRESS_AUTH_SCHEME = "sigv4-s3express"; +export declare const SESSION_TOKEN_QUERY_PARAM = "X-Amz-S3session-Token"; +export declare const SESSION_TOKEN_HEADER: string; +export declare const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_ENV_NAME = + "AWS_S3_DISABLE_EXPRESS_SESSION_AUTH"; +export declare const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_INI_NAME = + "s3_disable_express_session_auth"; +export declare const NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/s3ExpressHttpSigningMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/s3ExpressHttpSigningMiddleware.d.ts new file mode 100644 index 0000000..269ad83 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/s3ExpressHttpSigningMiddleware.d.ts @@ -0,0 +1,40 @@ +import { IHttpRequest } from "@smithy/protocol-http"; +import { + AuthScheme, + AwsCredentialIdentity, + FinalizeRequestMiddleware, + Pluggable, + RequestSigner, +} from "@smithy/types"; +interface SigningProperties { + signingRegion: string; + signingDate: Date; + signingService: string; +} +interface PreviouslyResolved { + signer: (authScheme?: AuthScheme | undefined) => Promise< + RequestSigner & { + signWithCredentials( + req: IHttpRequest, + identity: AwsCredentialIdentity, + opts?: Partial + ): Promise; + } + >; +} +export declare const s3ExpressHttpSigningMiddlewareOptions: import("@smithy/types").FinalizeRequestHandlerOptions & + import("@smithy/types").RelativeLocation & + Pick< + import("@smithy/types").HandlerOptions, + Exclude + >; +export declare const s3ExpressHttpSigningMiddleware: < + Input extends object, + Output extends object +>( + config: PreviouslyResolved +) => FinalizeRequestMiddleware; +export declare const getS3ExpressHttpSigningPlugin: (config: { + signer: (authScheme?: AuthScheme | undefined) => Promise; +}) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/s3ExpressMiddleware.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/s3ExpressMiddleware.d.ts new file mode 100644 index 0000000..a85634e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/s3ExpressMiddleware.d.ts @@ -0,0 +1,27 @@ +import { AwsCredentialIdentity } from "@aws-sdk/types"; +import { + BuildHandlerOptions, + BuildMiddleware, + Logger, + MemoizedProvider, + Pluggable, +} from "@smithy/types"; +import { S3ExpressIdentity } from "../interfaces/S3ExpressIdentity"; +import { S3ExpressIdentityProvider } from "../interfaces/S3ExpressIdentityProvider"; +declare module "@smithy/types" { + interface HandlerExecutionContext { + s3ExpressIdentity?: S3ExpressIdentity; + } +} +export interface S3ExpressResolvedConfig { + logger?: Logger; + s3ExpressIdentityProvider: S3ExpressIdentityProvider; + credentials: MemoizedProvider; +} +export declare const s3ExpressMiddleware: ( + options: S3ExpressResolvedConfig +) => BuildMiddleware; +export declare const s3ExpressMiddlewareOptions: BuildHandlerOptions; +export declare const getS3ExpressPlugin: ( + options: S3ExpressResolvedConfig +) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/signS3Express.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/signS3Express.d.ts new file mode 100644 index 0000000..95921d2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/signS3Express.d.ts @@ -0,0 +1,21 @@ +import { + AwsCredentialIdentity, + HttpRequest as IHttpRequest, +} from "@smithy/types"; +import { S3ExpressIdentity } from "../interfaces/S3ExpressIdentity"; +export declare const signS3Express: ( + s3ExpressIdentity: S3ExpressIdentity, + signingOptions: { + signingDate: Date; + signingRegion: string; + signingService: string; + }, + request: IHttpRequest, + sigV4MultiRegionSigner: { + signWithCredentials( + req: IHttpRequest, + identity: AwsCredentialIdentity, + opts?: Partial + ): Promise; + } +) => Promise; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/index.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/index.d.ts new file mode 100644 index 0000000..4051937 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/index.d.ts @@ -0,0 +1,17 @@ +export { S3ExpressIdentityCache } from "./classes/S3ExpressIdentityCache"; +export { S3ExpressIdentityCacheEntry } from "./classes/S3ExpressIdentityCacheEntry"; +export { S3ExpressIdentityProviderImpl } from "./classes/S3ExpressIdentityProviderImpl"; +export { SignatureV4S3Express } from "./classes/SignatureV4S3Express"; +export { NODE_DISABLE_S3_EXPRESS_SESSION_AUTH_OPTIONS } from "./constants"; +export { + getS3ExpressPlugin, + s3ExpressMiddleware, + s3ExpressMiddlewareOptions, +} from "./functions/s3ExpressMiddleware"; +export { + getS3ExpressHttpSigningPlugin, + s3ExpressHttpSigningMiddleware, + s3ExpressHttpSigningMiddlewareOptions, +} from "./functions/s3ExpressHttpSigningMiddleware"; +export { S3ExpressIdentity } from "./interfaces/S3ExpressIdentity"; +export { S3ExpressIdentityProvider } from "./interfaces/S3ExpressIdentityProvider"; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/interfaces/S3ExpressIdentity.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/interfaces/S3ExpressIdentity.d.ts new file mode 100644 index 0000000..2ee15c9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/interfaces/S3ExpressIdentity.d.ts @@ -0,0 +1,2 @@ +import { AwsCredentialIdentity } from "@aws-sdk/types"; +export interface S3ExpressIdentity extends AwsCredentialIdentity {} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/interfaces/S3ExpressIdentityProvider.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/interfaces/S3ExpressIdentityProvider.d.ts new file mode 100644 index 0000000..2c1d36c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/interfaces/S3ExpressIdentityProvider.d.ts @@ -0,0 +1,8 @@ +import { AwsCredentialIdentity } from "@aws-sdk/types"; +import { S3ExpressIdentity } from "./S3ExpressIdentity"; +export interface S3ExpressIdentityProvider { + getS3ExpressIdentity( + awsIdentity: AwsCredentialIdentity, + identityProperties: Record + ): Promise; +} diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3Configuration.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3Configuration.d.ts new file mode 100644 index 0000000..cbb2466 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3Configuration.d.ts @@ -0,0 +1,33 @@ +import { Client, Command } from "@smithy/types"; +import { S3ExpressIdentityProvider } from "./s3-express"; +export interface S3InputConfig { + forcePathStyle?: boolean; + useAccelerateEndpoint?: boolean; + disableMultiregionAccessPoints?: boolean; + followRegionRedirects?: boolean; + s3ExpressIdentityProvider?: S3ExpressIdentityProvider; + bucketEndpoint?: boolean; + expectContinueHeader?: boolean | number; +} +type PlaceholderS3Client = Client & any; +type PlaceholderCreateSessionCommandCtor = { + new (args: any): Command; +}; +export interface S3ResolvedConfig { + forcePathStyle: boolean; + useAccelerateEndpoint: boolean; + disableMultiregionAccessPoints: boolean; + followRegionRedirects: boolean; + s3ExpressIdentityProvider: S3ExpressIdentityProvider; + bucketEndpoint: boolean; + expectContinueHeader: boolean | number; +} +export declare const resolveS3Config: ( + input: T & S3InputConfig, + { + session, + }: { + session: [() => PlaceholderS3Client, PlaceholderCreateSessionCommandCtor]; + } +) => T & S3ResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/throw-200-exceptions.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/throw-200-exceptions.d.ts new file mode 100644 index 0000000..413b96a --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/throw-200-exceptions.d.ts @@ -0,0 +1,17 @@ +import { + DeserializeMiddleware, + Encoder, + Pluggable, + RelativeMiddlewareOptions, +} from "@smithy/types"; +type PreviouslyResolved = { + utf8Encoder: Encoder; +}; +export declare const throw200ExceptionsMiddleware: ( + config: PreviouslyResolved +) => DeserializeMiddleware; +export declare const throw200ExceptionsMiddlewareOptions: RelativeMiddlewareOptions; +export declare const getThrow200ExceptionsPlugin: ( + config: PreviouslyResolved +) => Pluggable; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/validate-bucket-name.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/validate-bucket-name.d.ts new file mode 100644 index 0000000..1775731 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/validate-bucket-name.d.ts @@ -0,0 +1,13 @@ +import { + InitializeHandlerOptions, + InitializeMiddleware, + Pluggable, +} from "@smithy/types"; +import { S3ResolvedConfig } from "./s3Configuration"; +export declare function validateBucketNameMiddleware({ + bucketEndpoint, +}: S3ResolvedConfig): InitializeMiddleware; +export declare const validateBucketNameMiddlewareOptions: InitializeHandlerOptions; +export declare const getValidateBucketNamePlugin: ( + options: S3ResolvedConfig +) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/validate-bucket-name.d.ts b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/validate-bucket-name.d.ts new file mode 100644 index 0000000..01311f5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/validate-bucket-name.d.ts @@ -0,0 +1,14 @@ +import type { InitializeHandlerOptions, InitializeMiddleware, Pluggable } from "@smithy/types"; +import type { S3ResolvedConfig } from "./s3Configuration"; +/** + * @internal + */ +export declare function validateBucketNameMiddleware({ bucketEndpoint }: S3ResolvedConfig): InitializeMiddleware; +/** + * @internal + */ +export declare const validateBucketNameMiddlewareOptions: InitializeHandlerOptions; +/** + * @internal + */ +export declare const getValidateBucketNamePlugin: (options: S3ResolvedConfig) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-sdk-s3/package.json b/bff/node_modules/@aws-sdk/middleware-sdk-s3/package.json new file mode 100644 index 0000000..f2ea063 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-sdk-s3/package.json @@ -0,0 +1,72 @@ +{ + "name": "@aws-sdk/middleware-sdk-s3", + "version": "3.972.27", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-sdk-s3", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:types": "tsc -p tsconfig.test.json", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts && yarn test:types", + "test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts --mode development", + "extract:docs": "api-extractor run --local", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts", + "test:e2e:watch": "yarn g:vitest watch -c vitest.config.e2e.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/core": "^3.23.13", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-sdk-s3", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-sdk-s3" + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-ssec/LICENSE b/bff/node_modules/@aws-sdk/middleware-ssec/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-ssec/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/middleware-ssec/README.md b/bff/node_modules/@aws-sdk/middleware-ssec/README.md new file mode 100644 index 0000000..a25f60b --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-ssec/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-ssec + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-ssec/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-ssec) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-ssec.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-ssec) diff --git a/bff/node_modules/@aws-sdk/middleware-ssec/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-ssec/dist-cjs/index.js new file mode 100644 index 0000000..c364847 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-ssec/dist-cjs/index.js @@ -0,0 +1,73 @@ +'use strict'; + +function ssecMiddleware(options) { + return (next) => async (args) => { + const input = { ...args.input }; + const properties = [ + { + target: "SSECustomerKey", + hash: "SSECustomerKeyMD5", + }, + { + target: "CopySourceSSECustomerKey", + hash: "CopySourceSSECustomerKeyMD5", + }, + ]; + for (const prop of properties) { + const value = input[prop.target]; + if (value) { + let valueForHash; + if (typeof value === "string") { + if (isValidBase64EncodedSSECustomerKey(value, options)) { + valueForHash = options.base64Decoder(value); + } + else { + valueForHash = options.utf8Decoder(value); + input[prop.target] = options.base64Encoder(valueForHash); + } + } + else { + valueForHash = ArrayBuffer.isView(value) + ? new Uint8Array(value.buffer, value.byteOffset, value.byteLength) + : new Uint8Array(value); + input[prop.target] = options.base64Encoder(valueForHash); + } + const hash = new options.md5(); + hash.update(valueForHash); + input[prop.hash] = options.base64Encoder(await hash.digest()); + } + } + return next({ + ...args, + input, + }); + }; +} +const ssecMiddlewareOptions = { + name: "ssecMiddleware", + step: "initialize", + tags: ["SSE"], + override: true, +}; +const getSsecPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.add(ssecMiddleware(config), ssecMiddlewareOptions); + }, +}); +function isValidBase64EncodedSSECustomerKey(str, options) { + const base64Regex = /^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/; + if (!base64Regex.test(str)) + return false; + try { + const decodedBytes = options.base64Decoder(str); + return decodedBytes.length === 32; + } + catch { + return false; + } +} + +exports.getSsecPlugin = getSsecPlugin; +exports.isValidBase64EncodedSSECustomerKey = isValidBase64EncodedSSECustomerKey; +exports.ssecMiddleware = ssecMiddleware; +exports.ssecMiddlewareOptions = ssecMiddlewareOptions; diff --git a/bff/node_modules/@aws-sdk/middleware-ssec/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-ssec/dist-es/index.js new file mode 100644 index 0000000..3abb4b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-ssec/dist-es/index.js @@ -0,0 +1,66 @@ +export function ssecMiddleware(options) { + return (next) => async (args) => { + const input = { ...args.input }; + const properties = [ + { + target: "SSECustomerKey", + hash: "SSECustomerKeyMD5", + }, + { + target: "CopySourceSSECustomerKey", + hash: "CopySourceSSECustomerKeyMD5", + }, + ]; + for (const prop of properties) { + const value = input[prop.target]; + if (value) { + let valueForHash; + if (typeof value === "string") { + if (isValidBase64EncodedSSECustomerKey(value, options)) { + valueForHash = options.base64Decoder(value); + } + else { + valueForHash = options.utf8Decoder(value); + input[prop.target] = options.base64Encoder(valueForHash); + } + } + else { + valueForHash = ArrayBuffer.isView(value) + ? new Uint8Array(value.buffer, value.byteOffset, value.byteLength) + : new Uint8Array(value); + input[prop.target] = options.base64Encoder(valueForHash); + } + const hash = new options.md5(); + hash.update(valueForHash); + input[prop.hash] = options.base64Encoder(await hash.digest()); + } + } + return next({ + ...args, + input, + }); + }; +} +export const ssecMiddlewareOptions = { + name: "ssecMiddleware", + step: "initialize", + tags: ["SSE"], + override: true, +}; +export const getSsecPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.add(ssecMiddleware(config), ssecMiddlewareOptions); + }, +}); +export function isValidBase64EncodedSSECustomerKey(str, options) { + const base64Regex = /^(?:[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/; + if (!base64Regex.test(str)) + return false; + try { + const decodedBytes = options.base64Decoder(str); + return decodedBytes.length === 32; + } + catch { + return false; + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-ssec/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-ssec/dist-types/index.d.ts new file mode 100644 index 0000000..ee7e98a --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-ssec/dist-types/index.d.ts @@ -0,0 +1,12 @@ +import type { ChecksumConstructor, Decoder, Encoder, HashConstructor, InitializeHandlerOptions, InitializeMiddleware, Pluggable } from "@smithy/types"; +interface PreviouslyResolved { + base64Encoder: Encoder; + md5: ChecksumConstructor | HashConstructor; + utf8Decoder: Decoder; + base64Decoder: Decoder; +} +export declare function ssecMiddleware(options: PreviouslyResolved): InitializeMiddleware; +export declare const ssecMiddlewareOptions: InitializeHandlerOptions; +export declare const getSsecPlugin: (config: PreviouslyResolved) => Pluggable; +export declare function isValidBase64EncodedSSECustomerKey(str: string, options: PreviouslyResolved): boolean; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-ssec/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-ssec/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..cfffd59 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-ssec/dist-types/ts3.4/index.d.ts @@ -0,0 +1,27 @@ +import { + ChecksumConstructor, + Decoder, + Encoder, + HashConstructor, + InitializeHandlerOptions, + InitializeMiddleware, + Pluggable, +} from "@smithy/types"; +interface PreviouslyResolved { + base64Encoder: Encoder; + md5: ChecksumConstructor | HashConstructor; + utf8Decoder: Decoder; + base64Decoder: Decoder; +} +export declare function ssecMiddleware( + options: PreviouslyResolved +): InitializeMiddleware; +export declare const ssecMiddlewareOptions: InitializeHandlerOptions; +export declare const getSsecPlugin: ( + config: PreviouslyResolved +) => Pluggable; +export declare function isValidBase64EncodedSSECustomerKey( + str: string, + options: PreviouslyResolved +): boolean; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-ssec/package.json b/bff/node_modules/@aws-sdk/middleware-ssec/package.json new file mode 100644 index 0000000..dfea501 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-ssec/package.json @@ -0,0 +1,57 @@ +{ + "name": "@aws-sdk/middleware-ssec", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-ssec", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-ssec", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-ssec" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/LICENSE b/bff/node_modules/@aws-sdk/middleware-user-agent/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/README.md b/bff/node_modules/@aws-sdk/middleware-user-agent/README.md new file mode 100644 index 0000000..a0bf1a9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/middleware-user-agent + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/middleware-user-agent/latest.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-user-agent) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/middleware-user-agent.svg)](https://www.npmjs.com/package/@aws-sdk/middleware-user-agent) diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js new file mode 100644 index 0000000..2d4fecb --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js @@ -0,0 +1,194 @@ +'use strict'; + +var core = require('@smithy/core'); +var utilEndpoints = require('@aws-sdk/util-endpoints'); +var protocolHttp = require('@smithy/protocol-http'); +var client = require('@aws-sdk/core/client'); +var utilRetry = require('@smithy/util-retry'); + +const DEFAULT_UA_APP_ID = undefined; +function isValidUserAgentAppId(appId) { + if (appId === undefined) { + return true; + } + return typeof appId === "string" && appId.length <= 50; +} +function resolveUserAgentConfig(input) { + const normalizedAppIdProvider = core.normalizeProvider(input.userAgentAppId ?? DEFAULT_UA_APP_ID); + const { customUserAgent } = input; + return Object.assign(input, { + customUserAgent: typeof customUserAgent === "string" ? [[customUserAgent]] : customUserAgent, + userAgentAppId: async () => { + const appId = await normalizedAppIdProvider(); + if (!isValidUserAgentAppId(appId)) { + const logger = input.logger?.constructor?.name === "NoOpLogger" || !input.logger ? console : input.logger; + if (typeof appId !== "string") { + logger?.warn("userAgentAppId must be a string or undefined."); + } + else if (appId.length > 50) { + logger?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters."); + } + } + return appId; + }, + }); +} + +const ACCOUNT_ID_ENDPOINT_REGEX = /\d{12}\.ddb/; +async function checkFeatures(context, config, args) { + const request = args.request; + if (request?.headers?.["smithy-protocol"] === "rpc-v2-cbor") { + client.setFeature(context, "PROTOCOL_RPC_V2_CBOR", "M"); + } + if (typeof config.retryStrategy === "function") { + const retryStrategy = await config.retryStrategy(); + if (typeof retryStrategy.mode === "string") { + switch (retryStrategy.mode) { + case utilRetry.RETRY_MODES.ADAPTIVE: + client.setFeature(context, "RETRY_MODE_ADAPTIVE", "F"); + break; + case utilRetry.RETRY_MODES.STANDARD: + client.setFeature(context, "RETRY_MODE_STANDARD", "E"); + break; + } + } + } + if (typeof config.accountIdEndpointMode === "function") { + const endpointV2 = context.endpointV2; + if (String(endpointV2?.url?.hostname).match(ACCOUNT_ID_ENDPOINT_REGEX)) { + client.setFeature(context, "ACCOUNT_ID_ENDPOINT", "O"); + } + switch (await config.accountIdEndpointMode?.()) { + case "disabled": + client.setFeature(context, "ACCOUNT_ID_MODE_DISABLED", "Q"); + break; + case "preferred": + client.setFeature(context, "ACCOUNT_ID_MODE_PREFERRED", "P"); + break; + case "required": + client.setFeature(context, "ACCOUNT_ID_MODE_REQUIRED", "R"); + break; + } + } + const identity = context.__smithy_context?.selectedHttpAuthScheme?.identity; + if (identity?.$source) { + const credentials = identity; + if (credentials.accountId) { + client.setFeature(context, "RESOLVED_ACCOUNT_ID", "T"); + } + for (const [key, value] of Object.entries(credentials.$source ?? {})) { + client.setFeature(context, key, value); + } + } +} + +const USER_AGENT = "user-agent"; +const X_AMZ_USER_AGENT = "x-amz-user-agent"; +const SPACE = " "; +const UA_NAME_SEPARATOR = "/"; +const UA_NAME_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w]/g; +const UA_VALUE_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w#]/g; +const UA_ESCAPE_CHAR = "-"; + +const BYTE_LIMIT = 1024; +function encodeFeatures(features) { + let buffer = ""; + for (const key in features) { + const val = features[key]; + if (buffer.length + val.length + 1 <= BYTE_LIMIT) { + if (buffer.length) { + buffer += "," + val; + } + else { + buffer += val; + } + continue; + } + break; + } + return buffer; +} + +const userAgentMiddleware = (options) => (next, context) => async (args) => { + const { request } = args; + if (!protocolHttp.HttpRequest.isInstance(request)) { + return next(args); + } + const { headers } = request; + const userAgent = context?.userAgent?.map(escapeUserAgent) || []; + const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent); + await checkFeatures(context, options, args); + const awsContext = context; + defaultUserAgent.push(`m/${encodeFeatures(Object.assign({}, context.__smithy_context?.features, awsContext.__aws_sdk_context?.features))}`); + const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || []; + const appId = await options.userAgentAppId(); + if (appId) { + defaultUserAgent.push(escapeUserAgent([`app`, `${appId}`])); + } + const prefix = utilEndpoints.getUserAgentPrefix(); + const sdkUserAgentValue = (prefix ? [prefix] : []) + .concat([...defaultUserAgent, ...userAgent, ...customUserAgent]) + .join(SPACE); + const normalUAValue = [ + ...defaultUserAgent.filter((section) => section.startsWith("aws-sdk-")), + ...customUserAgent, + ].join(SPACE); + if (options.runtime !== "browser") { + if (normalUAValue) { + headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] + ? `${headers[USER_AGENT]} ${normalUAValue}` + : normalUAValue; + } + headers[USER_AGENT] = sdkUserAgentValue; + } + else { + headers[X_AMZ_USER_AGENT] = sdkUserAgentValue; + } + return next({ + ...args, + request, + }); +}; +const escapeUserAgent = (userAgentPair) => { + const name = userAgentPair[0] + .split(UA_NAME_SEPARATOR) + .map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)) + .join(UA_NAME_SEPARATOR); + const version = userAgentPair[1]?.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR); + const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR); + const prefix = name.substring(0, prefixSeparatorIndex); + let uaName = name.substring(prefixSeparatorIndex + 1); + if (prefix === "api") { + uaName = uaName.toLowerCase(); + } + return [prefix, uaName, version] + .filter((item) => item && item.length > 0) + .reduce((acc, item, index) => { + switch (index) { + case 0: + return item; + case 1: + return `${acc}/${item}`; + default: + return `${acc}#${item}`; + } + }, ""); +}; +const getUserAgentMiddlewareOptions = { + name: "getUserAgentMiddleware", + step: "build", + priority: "low", + tags: ["SET_USER_AGENT", "USER_AGENT"], + override: true, +}; +const getUserAgentPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions); + }, +}); + +exports.DEFAULT_UA_APP_ID = DEFAULT_UA_APP_ID; +exports.getUserAgentMiddlewareOptions = getUserAgentMiddlewareOptions; +exports.getUserAgentPlugin = getUserAgentPlugin; +exports.resolveUserAgentConfig = resolveUserAgentConfig; +exports.userAgentMiddleware = userAgentMiddleware; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js new file mode 100644 index 0000000..7a39d10 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js @@ -0,0 +1,49 @@ +import { setFeature } from "@aws-sdk/core/client"; +import { RETRY_MODES } from "@smithy/util-retry"; +const ACCOUNT_ID_ENDPOINT_REGEX = /\d{12}\.ddb/; +export async function checkFeatures(context, config, args) { + const request = args.request; + if (request?.headers?.["smithy-protocol"] === "rpc-v2-cbor") { + setFeature(context, "PROTOCOL_RPC_V2_CBOR", "M"); + } + if (typeof config.retryStrategy === "function") { + const retryStrategy = await config.retryStrategy(); + if (typeof retryStrategy.mode === "string") { + switch (retryStrategy.mode) { + case RETRY_MODES.ADAPTIVE: + setFeature(context, "RETRY_MODE_ADAPTIVE", "F"); + break; + case RETRY_MODES.STANDARD: + setFeature(context, "RETRY_MODE_STANDARD", "E"); + break; + } + } + } + if (typeof config.accountIdEndpointMode === "function") { + const endpointV2 = context.endpointV2; + if (String(endpointV2?.url?.hostname).match(ACCOUNT_ID_ENDPOINT_REGEX)) { + setFeature(context, "ACCOUNT_ID_ENDPOINT", "O"); + } + switch (await config.accountIdEndpointMode?.()) { + case "disabled": + setFeature(context, "ACCOUNT_ID_MODE_DISABLED", "Q"); + break; + case "preferred": + setFeature(context, "ACCOUNT_ID_MODE_PREFERRED", "P"); + break; + case "required": + setFeature(context, "ACCOUNT_ID_MODE_REQUIRED", "R"); + break; + } + } + const identity = context.__smithy_context?.selectedHttpAuthScheme?.identity; + if (identity?.$source) { + const credentials = identity; + if (credentials.accountId) { + setFeature(context, "RESOLVED_ACCOUNT_ID", "T"); + } + for (const [key, value] of Object.entries(credentials.$source ?? {})) { + setFeature(context, key, value); + } + } +} diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js new file mode 100644 index 0000000..7fff087 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js @@ -0,0 +1,28 @@ +import { normalizeProvider } from "@smithy/core"; +export const DEFAULT_UA_APP_ID = undefined; +function isValidUserAgentAppId(appId) { + if (appId === undefined) { + return true; + } + return typeof appId === "string" && appId.length <= 50; +} +export function resolveUserAgentConfig(input) { + const normalizedAppIdProvider = normalizeProvider(input.userAgentAppId ?? DEFAULT_UA_APP_ID); + const { customUserAgent } = input; + return Object.assign(input, { + customUserAgent: typeof customUserAgent === "string" ? [[customUserAgent]] : customUserAgent, + userAgentAppId: async () => { + const appId = await normalizedAppIdProvider(); + if (!isValidUserAgentAppId(appId)) { + const logger = input.logger?.constructor?.name === "NoOpLogger" || !input.logger ? console : input.logger; + if (typeof appId !== "string") { + logger?.warn("userAgentAppId must be a string or undefined."); + } + else if (appId.length > 50) { + logger?.warn("The provided userAgentAppId exceeds the maximum length of 50 characters."); + } + } + return appId; + }, + }); +} diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js new file mode 100644 index 0000000..3d23893 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js @@ -0,0 +1,7 @@ +export const USER_AGENT = "user-agent"; +export const X_AMZ_USER_AGENT = "x-amz-user-agent"; +export const SPACE = " "; +export const UA_NAME_SEPARATOR = "/"; +export const UA_NAME_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w]/g; +export const UA_VALUE_ESCAPE_REGEX = /[^!$%&'*+\-.^_`|~\w#]/g; +export const UA_ESCAPE_CHAR = "-"; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js new file mode 100644 index 0000000..23002b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js @@ -0,0 +1,18 @@ +const BYTE_LIMIT = 1024; +export function encodeFeatures(features) { + let buffer = ""; + for (const key in features) { + const val = features[key]; + if (buffer.length + val.length + 1 <= BYTE_LIMIT) { + if (buffer.length) { + buffer += "," + val; + } + else { + buffer += val; + } + continue; + } + break; + } + return buffer; +} diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js new file mode 100644 index 0000000..0456ec7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./configurations"; +export * from "./user-agent-middleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js new file mode 100644 index 0000000..7085ec6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js @@ -0,0 +1,82 @@ +import { getUserAgentPrefix } from "@aws-sdk/util-endpoints"; +import { HttpRequest } from "@smithy/protocol-http"; +import { checkFeatures } from "./check-features"; +import { SPACE, UA_ESCAPE_CHAR, UA_NAME_ESCAPE_REGEX, UA_NAME_SEPARATOR, UA_VALUE_ESCAPE_REGEX, USER_AGENT, X_AMZ_USER_AGENT, } from "./constants"; +import { encodeFeatures } from "./encode-features"; +export const userAgentMiddleware = (options) => (next, context) => async (args) => { + const { request } = args; + if (!HttpRequest.isInstance(request)) { + return next(args); + } + const { headers } = request; + const userAgent = context?.userAgent?.map(escapeUserAgent) || []; + const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent); + await checkFeatures(context, options, args); + const awsContext = context; + defaultUserAgent.push(`m/${encodeFeatures(Object.assign({}, context.__smithy_context?.features, awsContext.__aws_sdk_context?.features))}`); + const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || []; + const appId = await options.userAgentAppId(); + if (appId) { + defaultUserAgent.push(escapeUserAgent([`app`, `${appId}`])); + } + const prefix = getUserAgentPrefix(); + const sdkUserAgentValue = (prefix ? [prefix] : []) + .concat([...defaultUserAgent, ...userAgent, ...customUserAgent]) + .join(SPACE); + const normalUAValue = [ + ...defaultUserAgent.filter((section) => section.startsWith("aws-sdk-")), + ...customUserAgent, + ].join(SPACE); + if (options.runtime !== "browser") { + if (normalUAValue) { + headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] + ? `${headers[USER_AGENT]} ${normalUAValue}` + : normalUAValue; + } + headers[USER_AGENT] = sdkUserAgentValue; + } + else { + headers[X_AMZ_USER_AGENT] = sdkUserAgentValue; + } + return next({ + ...args, + request, + }); +}; +const escapeUserAgent = (userAgentPair) => { + const name = userAgentPair[0] + .split(UA_NAME_SEPARATOR) + .map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)) + .join(UA_NAME_SEPARATOR); + const version = userAgentPair[1]?.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR); + const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR); + const prefix = name.substring(0, prefixSeparatorIndex); + let uaName = name.substring(prefixSeparatorIndex + 1); + if (prefix === "api") { + uaName = uaName.toLowerCase(); + } + return [prefix, uaName, version] + .filter((item) => item && item.length > 0) + .reduce((acc, item, index) => { + switch (index) { + case 0: + return item; + case 1: + return `${acc}/${item}`; + default: + return `${acc}#${item}`; + } + }, ""); +}; +export const getUserAgentMiddlewareOptions = { + name: "getUserAgentMiddleware", + step: "build", + priority: "low", + tags: ["SET_USER_AGENT", "USER_AGENT"], + override: true, +}; +export const getUserAgentPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts new file mode 100644 index 0000000..fc8c17c --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts @@ -0,0 +1,20 @@ +import type { AccountIdEndpointMode } from "@aws-sdk/core/account-id-endpoint"; +import type { AwsHandlerExecutionContext } from "@aws-sdk/types"; +import type { AwsCredentialIdentityProvider, BuildHandlerArguments, Provider } from "@smithy/types"; +/** + * @internal + */ +type PreviouslyResolved = Partial<{ + credentials?: AwsCredentialIdentityProvider; + accountIdEndpointMode?: Provider; + retryStrategy?: Provider<{ + mode?: string; + }>; +}>; +/** + * @internal + * Check for features that don't have a middleware activation site but + * may be detected on the context, client config, or request. + */ +export declare function checkFeatures(context: AwsHandlerExecutionContext, config: PreviouslyResolved, args: BuildHandlerArguments): Promise; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts new file mode 100644 index 0000000..cfed670 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts @@ -0,0 +1,44 @@ +import type { Logger, Provider, UserAgent } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULT_UA_APP_ID: undefined; +/** + * @public + */ +export interface UserAgentInputConfig { + /** + * The custom user agent header that would be appended to default one + */ + customUserAgent?: string | UserAgent; + /** + * The application ID used to identify the application. + */ + userAgentAppId?: string | undefined | Provider; +} +interface PreviouslyResolved { + defaultUserAgentProvider: Provider; + runtime: string; + logger?: Logger; +} +export interface UserAgentResolvedConfig { + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header. + * @internal + */ + defaultUserAgentProvider: Provider; + /** + * The custom user agent header that would be appended to default one + */ + customUserAgent?: UserAgent; + /** + * The runtime environment + */ + runtime: string; + /** + * Resolved value for input config {config.userAgentAppId} + */ + userAgentAppId: Provider; +} +export declare function resolveUserAgentConfig(input: T & PreviouslyResolved & UserAgentInputConfig): T & UserAgentResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/constants.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/constants.d.ts new file mode 100644 index 0000000..8c0dfc9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/constants.d.ts @@ -0,0 +1,7 @@ +export declare const USER_AGENT = "user-agent"; +export declare const X_AMZ_USER_AGENT = "x-amz-user-agent"; +export declare const SPACE = " "; +export declare const UA_NAME_SEPARATOR = "/"; +export declare const UA_NAME_ESCAPE_REGEX: RegExp; +export declare const UA_VALUE_ESCAPE_REGEX: RegExp; +export declare const UA_ESCAPE_CHAR = "-"; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts new file mode 100644 index 0000000..d6079ae --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts @@ -0,0 +1,5 @@ +import type { AwsSdkFeatures } from "@aws-sdk/types"; +/** + * @internal + */ +export declare function encodeFeatures(features: AwsSdkFeatures): string; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts new file mode 100644 index 0000000..0456ec7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./configurations"; +export * from "./user-agent-middleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts new file mode 100644 index 0000000..d1aa102 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts @@ -0,0 +1,20 @@ +import { AccountIdEndpointMode } from "@aws-sdk/core/account-id-endpoint"; +import { AwsHandlerExecutionContext } from "@aws-sdk/types"; +import { + AwsCredentialIdentityProvider, + BuildHandlerArguments, + Provider, +} from "@smithy/types"; +type PreviouslyResolved = Partial<{ + credentials?: AwsCredentialIdentityProvider; + accountIdEndpointMode?: Provider; + retryStrategy?: Provider<{ + mode?: string; + }>; +}>; +export declare function checkFeatures( + context: AwsHandlerExecutionContext, + config: PreviouslyResolved, + args: BuildHandlerArguments +): Promise; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts new file mode 100644 index 0000000..a4a1b10 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts @@ -0,0 +1,21 @@ +import { Logger, Provider, UserAgent } from "@smithy/types"; +export declare const DEFAULT_UA_APP_ID: undefined; +export interface UserAgentInputConfig { + customUserAgent?: string | UserAgent; + userAgentAppId?: string | undefined | Provider; +} +interface PreviouslyResolved { + defaultUserAgentProvider: Provider; + runtime: string; + logger?: Logger; +} +export interface UserAgentResolvedConfig { + defaultUserAgentProvider: Provider; + customUserAgent?: UserAgent; + runtime: string; + userAgentAppId: Provider; +} +export declare function resolveUserAgentConfig( + input: T & PreviouslyResolved & UserAgentInputConfig +): T & UserAgentResolvedConfig; +export {}; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..8c0dfc9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,7 @@ +export declare const USER_AGENT = "user-agent"; +export declare const X_AMZ_USER_AGENT = "x-amz-user-agent"; +export declare const SPACE = " "; +export declare const UA_NAME_SEPARATOR = "/"; +export declare const UA_NAME_ESCAPE_REGEX: RegExp; +export declare const UA_VALUE_ESCAPE_REGEX: RegExp; +export declare const UA_ESCAPE_CHAR = "-"; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts new file mode 100644 index 0000000..a7be5b7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts @@ -0,0 +1,2 @@ +import { AwsSdkFeatures } from "@aws-sdk/types"; +export declare function encodeFeatures(features: AwsSdkFeatures): string; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..0456ec7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./configurations"; +export * from "./user-agent-middleware"; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts new file mode 100644 index 0000000..a4da01e --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts @@ -0,0 +1,21 @@ +import { AwsHandlerExecutionContext } from "@aws-sdk/types"; +import { + AbsoluteLocation, + BuildHandler, + BuildHandlerOptions, + HandlerExecutionContext, + MetadataBearer, + Pluggable, +} from "@smithy/types"; +import { UserAgentResolvedConfig } from "./configurations"; +export declare const userAgentMiddleware: ( + options: UserAgentResolvedConfig +) => ( + next: BuildHandler, + context: HandlerExecutionContext | AwsHandlerExecutionContext +) => BuildHandler; +export declare const getUserAgentMiddlewareOptions: BuildHandlerOptions & + AbsoluteLocation; +export declare const getUserAgentPlugin: ( + config: UserAgentResolvedConfig +) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts new file mode 100644 index 0000000..d2096c9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts @@ -0,0 +1,18 @@ +import type { AwsHandlerExecutionContext } from "@aws-sdk/types"; +import type { AbsoluteLocation, BuildHandler, BuildHandlerOptions, HandlerExecutionContext, MetadataBearer, Pluggable } from "@smithy/types"; +import type { UserAgentResolvedConfig } from "./configurations"; +/** + * Build user agent header sections from: + * 1. runtime-specific default user agent provider; + * 2. custom user agent from `customUserAgent` client config; + * 3. handler execution context set by internal SDK components; + * The built user agent will be set to `x-amz-user-agent` header for ALL the + * runtimes. + * Please note that any override to the `user-agent` or `x-amz-user-agent` header + * in the HTTP request is discouraged. Please use `customUserAgent` client + * config or middleware setting the `userAgent` context to generate desired user + * agent. + */ +export declare const userAgentMiddleware: (options: UserAgentResolvedConfig) => (next: BuildHandler, context: HandlerExecutionContext | AwsHandlerExecutionContext) => BuildHandler; +export declare const getUserAgentMiddlewareOptions: BuildHandlerOptions & AbsoluteLocation; +export declare const getUserAgentPlugin: (config: UserAgentResolvedConfig) => Pluggable; diff --git a/bff/node_modules/@aws-sdk/middleware-user-agent/package.json b/bff/node_modules/@aws-sdk/middleware-user-agent/package.json new file mode 100644 index 0000000..b903386 --- /dev/null +++ b/bff/node_modules/@aws-sdk/middleware-user-agent/package.json @@ -0,0 +1,63 @@ +{ + "name": "@aws-sdk/middleware-user-agent", + "version": "3.972.28", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline middleware-user-agent", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "extract:docs": "api-extractor run --local", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@smithy/core": "^3.23.13", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-retry": "^4.2.13", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/middleware-user-agent", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/middleware-user-agent" + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/README.md b/bff/node_modules/@aws-sdk/nested-clients/README.md new file mode 100644 index 0000000..1182bbd --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/README.md @@ -0,0 +1,13 @@ +# @aws-sdk/nested-clients + +## Description + +This is an internal package. Do not install this as a direct dependency. + +This package contains separate internal implementations of the STS and SSO-OIDC AWS SDK clients +to be used by the AWS SDK credential providers to break a cyclic dependency. + +### Bundlers + +This package may be marked as external if you do not use STS nor SSO-OIDC +in your credential resolution process. diff --git a/bff/node_modules/@aws-sdk/nested-clients/cognito-identity.d.ts b/bff/node_modules/@aws-sdk/nested-clients/cognito-identity.d.ts new file mode 100644 index 0000000..a16db4e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/cognito-identity.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/cognito-identity" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d"; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/cognito-identity.js b/bff/node_modules/@aws-sdk/nested-clients/cognito-identity.js new file mode 100644 index 0000000..cdfed35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/cognito-identity.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/cognito-identity/index.js"); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js new file mode 100644 index 0000000..eb109ab --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js @@ -0,0 +1,2 @@ +'use strict'; + diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..b419ecb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/auth/httpAuthSchemeProvider.js @@ -0,0 +1,60 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultCognitoIdentityHttpAuthSchemeProvider = exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_middleware_1 = require("@smithy/util-middleware"); +const defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = defaultCognitoIdentityHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "cognito-identity", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetCredentialsForIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + case "GetId": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultCognitoIdentityHttpAuthSchemeProvider = defaultCognitoIdentityHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, httpAuthSchemes_1.resolveAwsSdkSigV4Config)(config); + return Object.assign(config_0, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/endpointResolver.js new file mode 100644 index 0000000..7258a35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/ruleset.js new file mode 100644 index 0000000..77610c0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/ruleset.js @@ -0,0 +1,146 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const w = "required", x = "fn", y = "argv", z = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = "stringEquals", j = { [w]: false, type: "string" }, k = { [w]: true, default: false, type: "boolean" }, l = { [z]: "Endpoint" }, m = { [x]: c, [y]: [{ [z]: "UseFIPS" }, true] }, n = { [x]: c, [y]: [{ [z]: "UseDualStack" }, true] }, o = {}, p = { [z]: "Region" }, q = { [x]: h, [y]: [{ [z]: g }, "supportsFIPS"] }, r = { [z]: g }, s = { [x]: c, [y]: [true, { [x]: h, [y]: [r, "supportsDualStack"] }] }, t = [m], u = [n], v = [p]; +const _data = { + version: "1.0", + parameters: { Region: j, UseDualStack: k, UseFIPS: k, Endpoint: j }, + rules: [ + { + conditions: [{ [x]: b, [y]: [l] }], + rules: [ + { conditions: t, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: u, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: l, properties: o, headers: o }, type: e }, + ], + type: f, + }, + { + conditions: [{ [x]: b, [y]: v }], + rules: [ + { + conditions: [{ [x]: "aws.partition", [y]: v, assign: g }], + rules: [ + { + conditions: [m, n], + rules: [ + { + conditions: [{ [x]: c, [y]: [a, q] }, s], + rules: [ + { + conditions: [{ [x]: i, [y]: [p, "us-east-1"] }], + endpoint: { + url: "https://cognito-identity-fips.us-east-1.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-east-2"] }], + endpoint: { + url: "https://cognito-identity-fips.us-east-2.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-west-1"] }], + endpoint: { + url: "https://cognito-identity-fips.us-west-1.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-west-2"] }], + endpoint: { + url: "https://cognito-identity-fips.us-west-2.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + endpoint: { + url: "https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: t, + rules: [ + { + conditions: [{ [x]: c, [y]: [q, a] }], + rules: [ + { + endpoint: { + url: "https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: u, + rules: [ + { + conditions: [s], + rules: [ + { + conditions: [{ [x]: i, [y]: ["aws", { [x]: h, [y]: [r, "name"] }] }], + endpoint: { url: "https://cognito-identity.{Region}.amazonaws.com", properties: o, headers: o }, + type: e, + }, + { + endpoint: { + url: "https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { + url: "https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +exports.ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js new file mode 100644 index 0000000..cda8758 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js @@ -0,0 +1,174 @@ +'use strict'; + +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var CognitoIdentityServiceException = require('./models/CognitoIdentityServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "cognito-identity", + }); +}; +const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class CognitoIdentityClient extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareRetry.resolveRetryConfig(_config_2); + const _config_4 = configResolver.resolveRegionConfig(_config_3); + const _config_5 = middlewareHostHeader.resolveHostHeaderConfig(_config_4); + const _config_6 = middlewareEndpoint.resolveEndpointConfig(_config_5); + const _config_7 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultCognitoIdentityHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class GetCredentialsForIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetCredentialsForIdentity", {}) + .n("CognitoIdentityClient", "GetCredentialsForIdentityCommand") + .sc(schemas_0.GetCredentialsForIdentity$) + .build() { +} + +class GetIdCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetId", {}) + .n("CognitoIdentityClient", "GetIdCommand") + .sc(schemas_0.GetId$) + .build() { +} + +const commands = { + GetCredentialsForIdentityCommand, + GetIdCommand, +}; +class CognitoIdentity extends CognitoIdentityClient { +} +smithyClient.createAggregatedClient(commands, CognitoIdentity); + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.CognitoIdentityServiceException = CognitoIdentityServiceException.CognitoIdentityServiceException; +exports.CognitoIdentity = CognitoIdentity; +exports.CognitoIdentityClient = CognitoIdentityClient; +exports.GetCredentialsForIdentityCommand = GetCredentialsForIdentityCommand; +exports.GetIdCommand = GetIdCommand; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/CognitoIdentityServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/CognitoIdentityServiceException.js new file mode 100644 index 0000000..8d4847a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/CognitoIdentityServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CognitoIdentityServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class CognitoIdentityServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, CognitoIdentityServiceException.prototype); + } +} +exports.CognitoIdentityServiceException = CognitoIdentityServiceException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/errors.js new file mode 100644 index 0000000..72ce0c6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/models/errors.js @@ -0,0 +1,121 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LimitExceededException = exports.TooManyRequestsException = exports.ResourceNotFoundException = exports.ResourceConflictException = exports.NotAuthorizedException = exports.InvalidParameterException = exports.InvalidIdentityPoolConfigurationException = exports.InternalErrorException = exports.ExternalServiceException = void 0; +const CognitoIdentityServiceException_1 = require("./CognitoIdentityServiceException"); +class ExternalServiceException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ExternalServiceException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExternalServiceException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExternalServiceException.prototype); + } +} +exports.ExternalServiceException = ExternalServiceException; +class InternalErrorException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "InternalErrorException"; + $fault = "server"; + constructor(opts) { + super({ + name: "InternalErrorException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalErrorException.prototype); + } +} +exports.InternalErrorException = InternalErrorException; +class InvalidIdentityPoolConfigurationException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "InvalidIdentityPoolConfigurationException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityPoolConfigurationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityPoolConfigurationException.prototype); + } +} +exports.InvalidIdentityPoolConfigurationException = InvalidIdentityPoolConfigurationException; +class InvalidParameterException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "InvalidParameterException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidParameterException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidParameterException.prototype); + } +} +exports.InvalidParameterException = InvalidParameterException; +class NotAuthorizedException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "NotAuthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "NotAuthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NotAuthorizedException.prototype); + } +} +exports.NotAuthorizedException = NotAuthorizedException; +class ResourceConflictException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ResourceConflictException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceConflictException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceConflictException.prototype); + } +} +exports.ResourceConflictException = ResourceConflictException; +class ResourceNotFoundException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +exports.ResourceNotFoundException = ResourceNotFoundException; +class TooManyRequestsException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +exports.TooManyRequestsException = TooManyRequestsException; +class LimitExceededException extends CognitoIdentityServiceException_1.CognitoIdentityServiceException { + name = "LimitExceededException"; + $fault = "client"; + constructor(opts) { + super({ + name: "LimitExceededException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, LimitExceededException.prototype); + } +} +exports.LimitExceededException = LimitExceededException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.browser.js new file mode 100644 index 0000000..9f7380e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.browser.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.js new file mode 100644 index 0000000..572fca0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const client_1 = require("@aws-sdk/core/client"); +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, client_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(httpAuthSchemes_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.native.js new file mode 100644 index 0000000..34c5f8e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.shared.js new file mode 100644 index 0000000..72acdb4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/runtimeConfig.shared.js @@ -0,0 +1,50 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_1 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2014-06-30", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCognitoIdentityHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new httpAuthSchemes_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_1.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsJson1_1Protocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.cognitoidentity", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + xmlNamespace: "http://cognito-identity.amazonaws.com/doc/2014-06-30/", + version: "2014-06-30", + serviceTarget: "AWSCognitoIdentityService", + }, + serviceId: config?.serviceId ?? "Cognito Identity", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/schemas/schemas_0.js new file mode 100644 index 0000000..027f610 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/schemas/schemas_0.js @@ -0,0 +1,110 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetId$ = exports.GetCredentialsForIdentity$ = exports.GetIdResponse$ = exports.GetIdInput$ = exports.GetCredentialsForIdentityResponse$ = exports.GetCredentialsForIdentityInput$ = exports.Credentials$ = exports.errorTypeRegistries = exports.TooManyRequestsException$ = exports.ResourceNotFoundException$ = exports.ResourceConflictException$ = exports.NotAuthorizedException$ = exports.LimitExceededException$ = exports.InvalidParameterException$ = exports.InvalidIdentityPoolConfigurationException$ = exports.InternalErrorException$ = exports.ExternalServiceException$ = exports.CognitoIdentityServiceException$ = void 0; +const _AI = "AccountId"; +const _AKI = "AccessKeyId"; +const _C = "Credentials"; +const _CRA = "CustomRoleArn"; +const _E = "Expiration"; +const _ESE = "ExternalServiceException"; +const _GCFI = "GetCredentialsForIdentity"; +const _GCFII = "GetCredentialsForIdentityInput"; +const _GCFIR = "GetCredentialsForIdentityResponse"; +const _GI = "GetId"; +const _GII = "GetIdInput"; +const _GIR = "GetIdResponse"; +const _IEE = "InternalErrorException"; +const _II = "IdentityId"; +const _IIPCE = "InvalidIdentityPoolConfigurationException"; +const _IPE = "InvalidParameterException"; +const _IPI = "IdentityPoolId"; +const _IPT = "IdentityProviderToken"; +const _L = "Logins"; +const _LEE = "LimitExceededException"; +const _LM = "LoginsMap"; +const _NAE = "NotAuthorizedException"; +const _RCE = "ResourceConflictException"; +const _RNFE = "ResourceNotFoundException"; +const _SK = "SecretKey"; +const _SKS = "SecretKeyString"; +const _ST = "SessionToken"; +const _TMRE = "TooManyRequestsException"; +const _c = "client"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.cognitoidentity"; +const _se = "server"; +const n0 = "com.amazonaws.cognitoidentity"; +const schema_1 = require("@smithy/core/schema"); +const CognitoIdentityServiceException_1 = require("../models/CognitoIdentityServiceException"); +const errors_1 = require("../models/errors"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.CognitoIdentityServiceException$ = [-3, _s, "CognitoIdentityServiceException", 0, [], []]; +_s_registry.registerError(exports.CognitoIdentityServiceException$, CognitoIdentityServiceException_1.CognitoIdentityServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.ExternalServiceException$ = [-3, n0, _ESE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(exports.ExternalServiceException$, errors_1.ExternalServiceException); +exports.InternalErrorException$ = [-3, n0, _IEE, { [_e]: _se }, [_m], [0]]; +n0_registry.registerError(exports.InternalErrorException$, errors_1.InternalErrorException); +exports.InvalidIdentityPoolConfigurationException$ = [ + -3, + n0, + _IIPCE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.InvalidIdentityPoolConfigurationException$, errors_1.InvalidIdentityPoolConfigurationException); +exports.InvalidParameterException$ = [-3, n0, _IPE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(exports.InvalidParameterException$, errors_1.InvalidParameterException); +exports.LimitExceededException$ = [-3, n0, _LEE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(exports.LimitExceededException$, errors_1.LimitExceededException); +exports.NotAuthorizedException$ = [-3, n0, _NAE, { [_e]: _c, [_hE]: 403 }, [_m], [0]]; +n0_registry.registerError(exports.NotAuthorizedException$, errors_1.NotAuthorizedException); +exports.ResourceConflictException$ = [-3, n0, _RCE, { [_e]: _c, [_hE]: 409 }, [_m], [0]]; +n0_registry.registerError(exports.ResourceConflictException$, errors_1.ResourceConflictException); +exports.ResourceNotFoundException$ = [-3, n0, _RNFE, { [_e]: _c, [_hE]: 404 }, [_m], [0]]; +n0_registry.registerError(exports.ResourceNotFoundException$, errors_1.ResourceNotFoundException); +exports.TooManyRequestsException$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_m], [0]]; +n0_registry.registerError(exports.TooManyRequestsException$, errors_1.TooManyRequestsException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var IdentityProviderToken = [0, n0, _IPT, 8, 0]; +var SecretKeyString = [0, n0, _SKS, 8, 0]; +exports.Credentials$ = [ + 3, + n0, + _C, + 0, + [_AKI, _SK, _ST, _E], + [0, [() => SecretKeyString, 0], 0, 4], +]; +exports.GetCredentialsForIdentityInput$ = [ + 3, + n0, + _GCFII, + 0, + [_II, _L, _CRA], + [0, [() => LoginsMap, 0], 0], + 1, +]; +exports.GetCredentialsForIdentityResponse$ = [ + 3, + n0, + _GCFIR, + 0, + [_II, _C], + [0, [() => exports.Credentials$, 0]], +]; +exports.GetIdInput$ = [3, n0, _GII, 0, [_IPI, _AI, _L], [0, 0, [() => LoginsMap, 0]], 1]; +exports.GetIdResponse$ = [3, n0, _GIR, 0, [_II], [0]]; +var LoginsMap = [2, n0, _LM, 0, [0, 0], [() => IdentityProviderToken, 0]]; +exports.GetCredentialsForIdentity$ = [ + 9, + n0, + _GCFI, + 0, + () => exports.GetCredentialsForIdentityInput$, + () => exports.GetCredentialsForIdentityResponse$, +]; +exports.GetId$ = [9, n0, _GI, 0, () => exports.GetIdInput$, () => exports.GetIdResponse$]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..07622c8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/auth/httpAuthSchemeProvider.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultSigninHttpAuthSchemeProvider = exports.defaultSigninHttpAuthSchemeParametersProvider = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_middleware_1 = require("@smithy/util-middleware"); +const defaultSigninHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultSigninHttpAuthSchemeParametersProvider = defaultSigninHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "signin", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultSigninHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateOAuth2Token": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultSigninHttpAuthSchemeProvider = defaultSigninHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, httpAuthSchemes_1.resolveAwsSdkSigV4Config)(config); + return Object.assign(config_0, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/endpointResolver.js new file mode 100644 index 0000000..7258a35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/ruleset.js new file mode 100644 index 0000000..0a888e8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/ruleset.js @@ -0,0 +1,133 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "stringEquals", i = { [u]: true, default: false, type: "boolean" }, j = { [u]: false, type: "string" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: "getAttr", [w]: [{ [x]: g }, "name"] }, p = { [v]: c, [w]: [{ [x]: "UseFIPS" }, false] }, q = { [v]: c, [w]: [{ [x]: "UseDualStack" }, false] }, r = { [v]: "getAttr", [w]: [{ [x]: g }, "supportsFIPS"] }, s = { [v]: c, [w]: [true, { [v]: "getAttr", [w]: [{ [x]: g }, "supportsDualStack"] }] }, t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { UseDualStack: i, UseFIPS: i, Endpoint: j, Region: j }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: [l], error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { + rules: [ + { + conditions: [m], + error: "Invalid Configuration: Dualstack and custom endpoint are not supported", + type: d, + }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + ], + type: f, + }, + { + rules: [ + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [{ [v]: h, [w]: [o, "aws"] }, p, q], + endpoint: { url: "https://{Region}.signin.aws.amazon.com", properties: n, headers: n }, + type: e, + }, + { + conditions: [{ [v]: h, [w]: [o, "aws-cn"] }, p, q], + endpoint: { url: "https://{Region}.signin.amazonaws.cn", properties: n, headers: n }, + type: e, + }, + { + conditions: [{ [v]: h, [w]: [o, "aws-us-gov"] }, p, q], + endpoint: { url: "https://{Region}.signin.amazonaws-us-gov.com", properties: n, headers: n }, + type: e, + }, + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, r] }, s], + rules: [ + { + endpoint: { + url: "https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { + error: "FIPS and DualStack are enabled, but this partition does not support one or both", + type: d, + }, + ], + type: f, + }, + { + conditions: [l, q], + rules: [ + { + conditions: [{ [v]: c, [w]: [r, a] }], + rules: [ + { + endpoint: { + url: "https://signin-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: [p, m], + rules: [ + { + conditions: [s], + rules: [ + { + endpoint: { + url: "https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://signin.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], + type: f, + }, + ], +}; +exports.ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js new file mode 100644 index 0000000..cea6794 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js @@ -0,0 +1,170 @@ +'use strict'; + +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var SigninServiceException = require('./models/SigninServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "signin", + }); +}; +const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class SigninClient extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareRetry.resolveRetryConfig(_config_2); + const _config_4 = configResolver.resolveRegionConfig(_config_3); + const _config_5 = middlewareHostHeader.resolveHostHeaderConfig(_config_4); + const _config_6 = middlewareEndpoint.resolveEndpointConfig(_config_5); + const _config_7 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultSigninHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class CreateOAuth2TokenCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("Signin", "CreateOAuth2Token", {}) + .n("SigninClient", "CreateOAuth2TokenCommand") + .sc(schemas_0.CreateOAuth2Token$) + .build() { +} + +const commands = { + CreateOAuth2TokenCommand, +}; +class Signin extends SigninClient { +} +smithyClient.createAggregatedClient(commands, Signin); + +const OAuth2ErrorCode = { + AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED", + INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS", + INVALID_REQUEST: "INVALID_REQUEST", + SERVER_ERROR: "server_error", + TOKEN_EXPIRED: "TOKEN_EXPIRED", + USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED", +}; + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.SigninServiceException = SigninServiceException.SigninServiceException; +exports.CreateOAuth2TokenCommand = CreateOAuth2TokenCommand; +exports.OAuth2ErrorCode = OAuth2ErrorCode; +exports.Signin = Signin; +exports.SigninClient = SigninClient; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/SigninServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/SigninServiceException.js new file mode 100644 index 0000000..954bc68 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/SigninServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SigninServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class SigninServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SigninServiceException.prototype); + } +} +exports.SigninServiceException = SigninServiceException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/errors.js new file mode 100644 index 0000000..cdebf89 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/models/errors.js @@ -0,0 +1,64 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ValidationException = exports.TooManyRequestsError = exports.InternalServerException = exports.AccessDeniedException = void 0; +const SigninServiceException_1 = require("./SigninServiceException"); +class AccessDeniedException extends SigninServiceException_1.SigninServiceException { + name = "AccessDeniedException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDeniedException.prototype); + this.error = opts.error; + } +} +exports.AccessDeniedException = AccessDeniedException; +class InternalServerException extends SigninServiceException_1.SigninServiceException { + name = "InternalServerException"; + $fault = "server"; + error; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalServerException.prototype); + this.error = opts.error; + } +} +exports.InternalServerException = InternalServerException; +class TooManyRequestsError extends SigninServiceException_1.SigninServiceException { + name = "TooManyRequestsError"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "TooManyRequestsError", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsError.prototype); + this.error = opts.error; + } +} +exports.TooManyRequestsError = TooManyRequestsError; +class ValidationException extends SigninServiceException_1.SigninServiceException { + name = "ValidationException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "ValidationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ValidationException.prototype); + this.error = opts.error; + } +} +exports.ValidationException = ValidationException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.browser.js new file mode 100644 index 0000000..10986e2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.browser.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.js new file mode 100644 index 0000000..572fca0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const client_1 = require("@aws-sdk/core/client"); +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, client_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(httpAuthSchemes_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.native.js new file mode 100644 index 0000000..34c5f8e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.shared.js new file mode 100644 index 0000000..051743f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/runtimeConfig.shared.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_1 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2023-01-01", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSigninHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new httpAuthSchemes_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_1.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.signin", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + version: "2023-01-01", + serviceTarget: "Signin", + }, + serviceId: config?.serviceId ?? "Signin", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/schemas/schemas_0.js new file mode 100644 index 0000000..c9340b2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/schemas/schemas_0.js @@ -0,0 +1,125 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateOAuth2Token$ = exports.CreateOAuth2TokenResponseBody$ = exports.CreateOAuth2TokenResponse$ = exports.CreateOAuth2TokenRequestBody$ = exports.CreateOAuth2TokenRequest$ = exports.AccessToken$ = exports.errorTypeRegistries = exports.ValidationException$ = exports.TooManyRequestsError$ = exports.InternalServerException$ = exports.AccessDeniedException$ = exports.SigninServiceException$ = void 0; +const _ADE = "AccessDeniedException"; +const _AT = "AccessToken"; +const _COAT = "CreateOAuth2Token"; +const _COATR = "CreateOAuth2TokenRequest"; +const _COATRB = "CreateOAuth2TokenRequestBody"; +const _COATRBr = "CreateOAuth2TokenResponseBody"; +const _COATRr = "CreateOAuth2TokenResponse"; +const _ISE = "InternalServerException"; +const _RT = "RefreshToken"; +const _TMRE = "TooManyRequestsError"; +const _VE = "ValidationException"; +const _aKI = "accessKeyId"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cV = "codeVerifier"; +const _co = "code"; +const _e = "error"; +const _eI = "expiresIn"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _jN = "jsonName"; +const _m = "message"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.signin"; +const _sAK = "secretAccessKey"; +const _sT = "sessionToken"; +const _se = "server"; +const _tI = "tokenInput"; +const _tO = "tokenOutput"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.signin"; +const schema_1 = require("@smithy/core/schema"); +const errors_1 = require("../models/errors"); +const SigninServiceException_1 = require("../models/SigninServiceException"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.SigninServiceException$ = [-3, _s, "SigninServiceException", 0, [], []]; +_s_registry.registerError(exports.SigninServiceException$, SigninServiceException_1.SigninServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.AccessDeniedException$ = [-3, n0, _ADE, { [_e]: _c }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(exports.AccessDeniedException$, errors_1.AccessDeniedException); +exports.InternalServerException$ = [-3, n0, _ISE, { [_e]: _se, [_hE]: 500 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(exports.InternalServerException$, errors_1.InternalServerException); +exports.TooManyRequestsError$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(exports.TooManyRequestsError$, errors_1.TooManyRequestsError); +exports.ValidationException$ = [-3, n0, _VE, { [_e]: _c, [_hE]: 400 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(exports.ValidationException$, errors_1.ValidationException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var RefreshToken = [0, n0, _RT, 8, 0]; +exports.AccessToken$ = [ + 3, + n0, + _AT, + 8, + [_aKI, _sAK, _sT], + [ + [0, { [_jN]: _aKI }], + [0, { [_jN]: _sAK }], + [0, { [_jN]: _sT }], + ], + 3, +]; +exports.CreateOAuth2TokenRequest$ = [ + 3, + n0, + _COATR, + 0, + [_tI], + [[() => exports.CreateOAuth2TokenRequestBody$, 16]], + 1, +]; +exports.CreateOAuth2TokenRequestBody$ = [ + 3, + n0, + _COATRB, + 0, + [_cI, _gT, _co, _rU, _cV, _rT], + [ + [0, { [_jN]: _cI }], + [0, { [_jN]: _gT }], + 0, + [0, { [_jN]: _rU }], + [0, { [_jN]: _cV }], + [() => RefreshToken, { [_jN]: _rT }], + ], + 2, +]; +exports.CreateOAuth2TokenResponse$ = [ + 3, + n0, + _COATRr, + 0, + [_tO], + [[() => exports.CreateOAuth2TokenResponseBody$, 16]], + 1, +]; +exports.CreateOAuth2TokenResponseBody$ = [ + 3, + n0, + _COATRBr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [ + [() => exports.AccessToken$, { [_jN]: _aT }], + [0, { [_jN]: _tT }], + [1, { [_jN]: _eI }], + [() => RefreshToken, { [_jN]: _rT }], + [0, { [_jN]: _iT }], + ], + 4, +]; +exports.CreateOAuth2Token$ = [ + 9, + n0, + _COAT, + { [_h]: ["POST", "/v1/token", 200] }, + () => exports.CreateOAuth2TokenRequest$, + () => exports.CreateOAuth2TokenResponse$, +]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..8c1fa2a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/auth/httpAuthSchemeProvider.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultSSOOIDCHttpAuthSchemeProvider = exports.defaultSSOOIDCHttpAuthSchemeParametersProvider = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_middleware_1 = require("@smithy/util-middleware"); +const defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultSSOOIDCHttpAuthSchemeParametersProvider = defaultSSOOIDCHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sso-oauth", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateToken": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultSSOOIDCHttpAuthSchemeProvider = defaultSSOOIDCHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, httpAuthSchemes_1.resolveAwsSdkSigV4Config)(config); + return Object.assign(config_0, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js new file mode 100644 index 0000000..7258a35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js new file mode 100644 index 0000000..bf97a89 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js @@ -0,0 +1,106 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = { [u]: false, type: "string" }, j = { [u]: true, default: false, type: "boolean" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, "supportsFIPS"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, "supportsDualStack"] }] }, r = [l], s = [m], t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: r, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: s, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, o] }, q], + rules: [ + { + endpoint: { + url: "https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: r, + rules: [ + { + conditions: [{ [v]: c, [w]: [o, a] }], + rules: [ + { + conditions: [{ [v]: "stringEquals", [w]: [{ [v]: h, [w]: [p, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://oidc.{Region}.amazonaws.com", properties: n, headers: n }, + type: e, + }, + { + endpoint: { + url: "https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: s, + rules: [ + { + conditions: [q], + rules: [ + { + endpoint: { + url: "https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://oidc.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +exports.ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js new file mode 100644 index 0000000..3f841d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js @@ -0,0 +1,172 @@ +'use strict'; + +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var SSOOIDCServiceException = require('./models/SSOOIDCServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "sso-oauth", + }); +}; +const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class SSOOIDCClient extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareRetry.resolveRetryConfig(_config_2); + const _config_4 = configResolver.resolveRegionConfig(_config_3); + const _config_5 = middlewareHostHeader.resolveHostHeaderConfig(_config_4); + const _config_6 = middlewareEndpoint.resolveEndpointConfig(_config_5); + const _config_7 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultSSOOIDCHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class CreateTokenCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSSOOIDCService", "CreateToken", {}) + .n("SSOOIDCClient", "CreateTokenCommand") + .sc(schemas_0.CreateToken$) + .build() { +} + +const commands = { + CreateTokenCommand, +}; +class SSOOIDC extends SSOOIDCClient { +} +smithyClient.createAggregatedClient(commands, SSOOIDC); + +const AccessDeniedExceptionReason = { + KMS_ACCESS_DENIED: "KMS_AccessDeniedException", +}; +const InvalidRequestExceptionReason = { + KMS_DISABLED_KEY: "KMS_DisabledException", + KMS_INVALID_KEY_USAGE: "KMS_InvalidKeyUsageException", + KMS_INVALID_STATE: "KMS_InvalidStateException", + KMS_KEY_NOT_FOUND: "KMS_NotFoundException", +}; + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.SSOOIDCServiceException = SSOOIDCServiceException.SSOOIDCServiceException; +exports.AccessDeniedExceptionReason = AccessDeniedExceptionReason; +exports.CreateTokenCommand = CreateTokenCommand; +exports.InvalidRequestExceptionReason = InvalidRequestExceptionReason; +exports.SSOOIDC = SSOOIDC; +exports.SSOOIDCClient = SSOOIDCClient; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/SSOOIDCServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/SSOOIDCServiceException.js new file mode 100644 index 0000000..878e098 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/SSOOIDCServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SSOOIDCServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class SSOOIDCServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SSOOIDCServiceException.prototype); + } +} +exports.SSOOIDCServiceException = SSOOIDCServiceException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/errors.js new file mode 100644 index 0000000..c937588 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/models/errors.js @@ -0,0 +1,195 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UnsupportedGrantTypeException = exports.UnauthorizedClientException = exports.SlowDownException = exports.InvalidScopeException = exports.InvalidRequestException = exports.InvalidGrantException = exports.InvalidClientException = exports.InternalServerException = exports.ExpiredTokenException = exports.AuthorizationPendingException = exports.AccessDeniedException = void 0; +const SSOOIDCServiceException_1 = require("./SSOOIDCServiceException"); +class AccessDeniedException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "AccessDeniedException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDeniedException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } +} +exports.AccessDeniedException = AccessDeniedException; +class AuthorizationPendingException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "AuthorizationPendingException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "AuthorizationPendingException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AuthorizationPendingException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.AuthorizationPendingException = AuthorizationPendingException; +class ExpiredTokenException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "ExpiredTokenException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExpiredTokenException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.ExpiredTokenException = ExpiredTokenException; +class InternalServerException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InternalServerException"; + $fault = "server"; + error; + error_description; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalServerException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.InternalServerException = InternalServerException; +class InvalidClientException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InvalidClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidClientException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.InvalidClientException = InvalidClientException; +class InvalidGrantException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InvalidGrantException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidGrantException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidGrantException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.InvalidGrantException = InvalidGrantException; +class InvalidRequestException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InvalidRequestException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequestException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } +} +exports.InvalidRequestException = InvalidRequestException; +class InvalidScopeException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "InvalidScopeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidScopeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidScopeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.InvalidScopeException = InvalidScopeException; +class SlowDownException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "SlowDownException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "SlowDownException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, SlowDownException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.SlowDownException = SlowDownException; +class UnauthorizedClientException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "UnauthorizedClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnauthorizedClientException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnauthorizedClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.UnauthorizedClientException = UnauthorizedClientException; +class UnsupportedGrantTypeException extends SSOOIDCServiceException_1.SSOOIDCServiceException { + name = "UnsupportedGrantTypeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnsupportedGrantTypeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnsupportedGrantTypeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +exports.UnsupportedGrantTypeException = UnsupportedGrantTypeException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js new file mode 100644 index 0000000..9f7380e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.browser.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.js new file mode 100644 index 0000000..572fca0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const client_1 = require("@aws-sdk/core/client"); +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, client_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(httpAuthSchemes_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.native.js new file mode 100644 index 0000000..34c5f8e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.shared.js new file mode 100644 index 0000000..f2c364c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/runtimeConfig.shared.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_1 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOOIDCHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new httpAuthSchemes_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_1.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.ssooidc", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + version: "2019-06-10", + serviceTarget: "AWSSSOOIDCService", + }, + serviceId: config?.serviceId ?? "SSO OIDC", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/schemas/schemas_0.js new file mode 100644 index 0000000..685cafb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/schemas/schemas_0.js @@ -0,0 +1,140 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CreateToken$ = exports.CreateTokenResponse$ = exports.CreateTokenRequest$ = exports.errorTypeRegistries = exports.UnsupportedGrantTypeException$ = exports.UnauthorizedClientException$ = exports.SlowDownException$ = exports.InvalidScopeException$ = exports.InvalidRequestException$ = exports.InvalidGrantException$ = exports.InvalidClientException$ = exports.InternalServerException$ = exports.ExpiredTokenException$ = exports.AuthorizationPendingException$ = exports.AccessDeniedException$ = exports.SSOOIDCServiceException$ = void 0; +const _ADE = "AccessDeniedException"; +const _APE = "AuthorizationPendingException"; +const _AT = "AccessToken"; +const _CS = "ClientSecret"; +const _CT = "CreateToken"; +const _CTR = "CreateTokenRequest"; +const _CTRr = "CreateTokenResponse"; +const _CV = "CodeVerifier"; +const _ETE = "ExpiredTokenException"; +const _ICE = "InvalidClientException"; +const _IGE = "InvalidGrantException"; +const _IRE = "InvalidRequestException"; +const _ISE = "InternalServerException"; +const _ISEn = "InvalidScopeException"; +const _IT = "IdToken"; +const _RT = "RefreshToken"; +const _SDE = "SlowDownException"; +const _UCE = "UnauthorizedClientException"; +const _UGTE = "UnsupportedGrantTypeException"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cS = "clientSecret"; +const _cV = "codeVerifier"; +const _co = "code"; +const _dC = "deviceCode"; +const _e = "error"; +const _eI = "expiresIn"; +const _ed = "error_description"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _r = "reason"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc"; +const _sc = "scope"; +const _se = "server"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.ssooidc"; +const schema_1 = require("@smithy/core/schema"); +const errors_1 = require("../models/errors"); +const SSOOIDCServiceException_1 = require("../models/SSOOIDCServiceException"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.SSOOIDCServiceException$ = [-3, _s, "SSOOIDCServiceException", 0, [], []]; +_s_registry.registerError(exports.SSOOIDCServiceException$, SSOOIDCServiceException_1.SSOOIDCServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.AccessDeniedException$ = [ + -3, + n0, + _ADE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0], +]; +n0_registry.registerError(exports.AccessDeniedException$, errors_1.AccessDeniedException); +exports.AuthorizationPendingException$ = [ + -3, + n0, + _APE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(exports.AuthorizationPendingException$, errors_1.AuthorizationPendingException); +exports.ExpiredTokenException$ = [-3, n0, _ETE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.ExpiredTokenException$, errors_1.ExpiredTokenException); +exports.InternalServerException$ = [-3, n0, _ISE, { [_e]: _se, [_hE]: 500 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.InternalServerException$, errors_1.InternalServerException); +exports.InvalidClientException$ = [-3, n0, _ICE, { [_e]: _c, [_hE]: 401 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.InvalidClientException$, errors_1.InvalidClientException); +exports.InvalidGrantException$ = [-3, n0, _IGE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.InvalidGrantException$, errors_1.InvalidGrantException); +exports.InvalidRequestException$ = [ + -3, + n0, + _IRE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0], +]; +n0_registry.registerError(exports.InvalidRequestException$, errors_1.InvalidRequestException); +exports.InvalidScopeException$ = [-3, n0, _ISEn, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.InvalidScopeException$, errors_1.InvalidScopeException); +exports.SlowDownException$ = [-3, n0, _SDE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(exports.SlowDownException$, errors_1.SlowDownException); +exports.UnauthorizedClientException$ = [ + -3, + n0, + _UCE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(exports.UnauthorizedClientException$, errors_1.UnauthorizedClientException); +exports.UnsupportedGrantTypeException$ = [ + -3, + n0, + _UGTE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(exports.UnsupportedGrantTypeException$, errors_1.UnsupportedGrantTypeException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var AccessToken = [0, n0, _AT, 8, 0]; +var ClientSecret = [0, n0, _CS, 8, 0]; +var CodeVerifier = [0, n0, _CV, 8, 0]; +var IdToken = [0, n0, _IT, 8, 0]; +var RefreshToken = [0, n0, _RT, 8, 0]; +exports.CreateTokenRequest$ = [ + 3, + n0, + _CTR, + 0, + [_cI, _cS, _gT, _dC, _co, _rT, _sc, _rU, _cV], + [0, [() => ClientSecret, 0], 0, 0, 0, [() => RefreshToken, 0], 64 | 0, 0, [() => CodeVerifier, 0]], + 3, +]; +exports.CreateTokenResponse$ = [ + 3, + n0, + _CTRr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [[() => AccessToken, 0], 0, 1, [() => RefreshToken, 0], [() => IdToken, 0]], +]; +var Scopes = 64 | 0; +exports.CreateToken$ = [ + 9, + n0, + _CT, + { [_h]: ["POST", "/token", 200] }, + () => exports.CreateTokenRequest$, + () => exports.CreateTokenResponse$, +]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..810fb29 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/auth/httpAuthSchemeProvider.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.defaultSSOHttpAuthSchemeProvider = exports.defaultSSOHttpAuthSchemeParametersProvider = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_middleware_1 = require("@smithy/util-middleware"); +const defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultSSOHttpAuthSchemeParametersProvider = defaultSSOHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "awsssoportal", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultSSOHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetRoleCredentials": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultSSOHttpAuthSchemeProvider = defaultSSOHttpAuthSchemeProvider; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, httpAuthSchemes_1.resolveAwsSdkSigV4Config)(config); + return Object.assign(config_0, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/endpointResolver.js new file mode 100644 index 0000000..7258a35 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/ruleset.js new file mode 100644 index 0000000..b46fe78 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/ruleset.js @@ -0,0 +1,106 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = { [u]: false, type: "string" }, j = { [u]: true, default: false, type: "boolean" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, "supportsFIPS"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, "supportsDualStack"] }] }, r = [l], s = [m], t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: r, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: s, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, o] }, q], + rules: [ + { + endpoint: { + url: "https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: r, + rules: [ + { + conditions: [{ [v]: c, [w]: [o, a] }], + rules: [ + { + conditions: [{ [v]: "stringEquals", [w]: [{ [v]: h, [w]: [p, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://portal.sso.{Region}.amazonaws.com", properties: n, headers: n }, + type: e, + }, + { + endpoint: { + url: "https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: s, + rules: [ + { + conditions: [q], + rules: [ + { + endpoint: { + url: "https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://portal.sso.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +exports.ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js new file mode 100644 index 0000000..29c9e0b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js @@ -0,0 +1,160 @@ +'use strict'; + +var middlewareHostHeader = require('@aws-sdk/middleware-host-header'); +var middlewareLogger = require('@aws-sdk/middleware-logger'); +var middlewareRecursionDetection = require('@aws-sdk/middleware-recursion-detection'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); +var configResolver = require('@smithy/config-resolver'); +var core = require('@smithy/core'); +var schema = require('@smithy/core/schema'); +var middlewareContentLength = require('@smithy/middleware-content-length'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var middlewareRetry = require('@smithy/middleware-retry'); +var smithyClient = require('@smithy/smithy-client'); +var httpAuthSchemeProvider = require('./auth/httpAuthSchemeProvider'); +var runtimeConfig = require('./runtimeConfig'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var protocolHttp = require('@smithy/protocol-http'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var SSOServiceException = require('./models/SSOServiceException'); + +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "awsssoportal", + }); +}; +const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; + +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; + +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(regionConfigResolver.getAwsRegionExtensionConfiguration(runtimeConfig), smithyClient.getDefaultExtensionConfiguration(runtimeConfig), protocolHttp.getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, regionConfigResolver.resolveAwsRegionExtensionConfiguration(extensionConfiguration), smithyClient.resolveDefaultRuntimeConfig(extensionConfiguration), protocolHttp.resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; + +class SSOClient extends smithyClient.Client { + config; + constructor(...[configuration]) { + const _config_0 = runtimeConfig.getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = middlewareUserAgent.resolveUserAgentConfig(_config_1); + const _config_3 = middlewareRetry.resolveRetryConfig(_config_2); + const _config_4 = configResolver.resolveRegionConfig(_config_3); + const _config_5 = middlewareHostHeader.resolveHostHeaderConfig(_config_4); + const _config_6 = middlewareEndpoint.resolveEndpointConfig(_config_5); + const _config_7 = httpAuthSchemeProvider.resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(schema.getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(middlewareUserAgent.getUserAgentPlugin(this.config)); + this.middlewareStack.use(middlewareRetry.getRetryPlugin(this.config)); + this.middlewareStack.use(middlewareContentLength.getContentLengthPlugin(this.config)); + this.middlewareStack.use(middlewareHostHeader.getHostHeaderPlugin(this.config)); + this.middlewareStack.use(middlewareLogger.getLoggerPlugin(this.config)); + this.middlewareStack.use(middlewareRecursionDetection.getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(core.getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider.defaultSSOHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(core.getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} + +class GetRoleCredentialsCommand extends smithyClient.Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("SWBPortalService", "GetRoleCredentials", {}) + .n("SSOClient", "GetRoleCredentialsCommand") + .sc(schemas_0.GetRoleCredentials$) + .build() { +} + +const commands = { + GetRoleCredentialsCommand, +}; +class SSO extends SSOClient { +} +smithyClient.createAggregatedClient(commands, SSO); + +exports.$Command = smithyClient.Command; +exports.__Client = smithyClient.Client; +exports.SSOServiceException = SSOServiceException.SSOServiceException; +exports.GetRoleCredentialsCommand = GetRoleCredentialsCommand; +exports.SSO = SSO; +exports.SSOClient = SSOClient; +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/SSOServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/SSOServiceException.js new file mode 100644 index 0000000..97ba0d8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/SSOServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SSOServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class SSOServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SSOServiceException.prototype); + } +} +exports.SSOServiceException = SSOServiceException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/errors.js new file mode 100644 index 0000000..a27b96c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/models/errors.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UnauthorizedException = exports.TooManyRequestsException = exports.ResourceNotFoundException = exports.InvalidRequestException = void 0; +const SSOServiceException_1 = require("./SSOServiceException"); +class InvalidRequestException extends SSOServiceException_1.SSOServiceException { + name = "InvalidRequestException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequestException.prototype); + } +} +exports.InvalidRequestException = InvalidRequestException; +class ResourceNotFoundException extends SSOServiceException_1.SSOServiceException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +exports.ResourceNotFoundException = ResourceNotFoundException; +class TooManyRequestsException extends SSOServiceException_1.SSOServiceException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +exports.TooManyRequestsException = TooManyRequestsException; +class UnauthorizedException extends SSOServiceException_1.SSOServiceException { + name = "UnauthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "UnauthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnauthorizedException.prototype); + } +} +exports.UnauthorizedException = UnauthorizedException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.browser.js new file mode 100644 index 0000000..9f7380e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.browser.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.js new file mode 100644 index 0000000..572fca0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const client_1 = require("@aws-sdk/core/client"); +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, client_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(httpAuthSchemes_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.native.js new file mode 100644 index 0000000..34c5f8e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.shared.js new file mode 100644 index 0000000..ec81275 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/runtimeConfig.shared.js @@ -0,0 +1,49 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_1 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new httpAuthSchemes_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_1.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sso", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + version: "2019-06-10", + serviceTarget: "SWBPortalService", + }, + serviceId: config?.serviceId ?? "SSO", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/schemas/schemas_0.js new file mode 100644 index 0000000..bec44e6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/schemas/schemas_0.js @@ -0,0 +1,90 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GetRoleCredentials$ = exports.RoleCredentials$ = exports.GetRoleCredentialsResponse$ = exports.GetRoleCredentialsRequest$ = exports.errorTypeRegistries = exports.UnauthorizedException$ = exports.TooManyRequestsException$ = exports.ResourceNotFoundException$ = exports.InvalidRequestException$ = exports.SSOServiceException$ = void 0; +const _ATT = "AccessTokenType"; +const _GRC = "GetRoleCredentials"; +const _GRCR = "GetRoleCredentialsRequest"; +const _GRCRe = "GetRoleCredentialsResponse"; +const _IRE = "InvalidRequestException"; +const _RC = "RoleCredentials"; +const _RNFE = "ResourceNotFoundException"; +const _SAKT = "SecretAccessKeyType"; +const _STT = "SessionTokenType"; +const _TMRE = "TooManyRequestsException"; +const _UE = "UnauthorizedException"; +const _aI = "accountId"; +const _aKI = "accessKeyId"; +const _aT = "accessToken"; +const _ai = "account_id"; +const _c = "client"; +const _e = "error"; +const _ex = "expiration"; +const _h = "http"; +const _hE = "httpError"; +const _hH = "httpHeader"; +const _hQ = "httpQuery"; +const _m = "message"; +const _rC = "roleCredentials"; +const _rN = "roleName"; +const _rn = "role_name"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sso"; +const _sAK = "secretAccessKey"; +const _sT = "sessionToken"; +const _xasbt = "x-amz-sso_bearer_token"; +const n0 = "com.amazonaws.sso"; +const schema_1 = require("@smithy/core/schema"); +const errors_1 = require("../models/errors"); +const SSOServiceException_1 = require("../models/SSOServiceException"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.SSOServiceException$ = [-3, _s, "SSOServiceException", 0, [], []]; +_s_registry.registerError(exports.SSOServiceException$, SSOServiceException_1.SSOServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.InvalidRequestException$ = [-3, n0, _IRE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(exports.InvalidRequestException$, errors_1.InvalidRequestException); +exports.ResourceNotFoundException$ = [-3, n0, _RNFE, { [_e]: _c, [_hE]: 404 }, [_m], [0]]; +n0_registry.registerError(exports.ResourceNotFoundException$, errors_1.ResourceNotFoundException); +exports.TooManyRequestsException$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_m], [0]]; +n0_registry.registerError(exports.TooManyRequestsException$, errors_1.TooManyRequestsException); +exports.UnauthorizedException$ = [-3, n0, _UE, { [_e]: _c, [_hE]: 401 }, [_m], [0]]; +n0_registry.registerError(exports.UnauthorizedException$, errors_1.UnauthorizedException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var AccessTokenType = [0, n0, _ATT, 8, 0]; +var SecretAccessKeyType = [0, n0, _SAKT, 8, 0]; +var SessionTokenType = [0, n0, _STT, 8, 0]; +exports.GetRoleCredentialsRequest$ = [ + 3, + n0, + _GRCR, + 0, + [_rN, _aI, _aT], + [ + [0, { [_hQ]: _rn }], + [0, { [_hQ]: _ai }], + [() => AccessTokenType, { [_hH]: _xasbt }], + ], + 3, +]; +exports.GetRoleCredentialsResponse$ = [ + 3, + n0, + _GRCRe, + 0, + [_rC], + [[() => exports.RoleCredentials$, 0]], +]; +exports.RoleCredentials$ = [ + 3, + n0, + _RC, + 0, + [_aKI, _sAK, _sT, _ex], + [0, [() => SecretAccessKeyType, 0], [() => SessionTokenType, 0], 1], +]; +exports.GetRoleCredentials$ = [ + 9, + n0, + _GRC, + { [_h]: ["GET", "/federation/credentials", 200] }, + () => exports.GetRoleCredentialsRequest$, + () => exports.GetRoleCredentialsResponse$, +]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js new file mode 100644 index 0000000..879af8b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.STSClient = exports.__Client = void 0; +const middleware_host_header_1 = require("@aws-sdk/middleware-host-header"); +const middleware_logger_1 = require("@aws-sdk/middleware-logger"); +const middleware_recursion_detection_1 = require("@aws-sdk/middleware-recursion-detection"); +const middleware_user_agent_1 = require("@aws-sdk/middleware-user-agent"); +const config_resolver_1 = require("@smithy/config-resolver"); +const core_1 = require("@smithy/core"); +const schema_1 = require("@smithy/core/schema"); +const middleware_content_length_1 = require("@smithy/middleware-content-length"); +const middleware_endpoint_1 = require("@smithy/middleware-endpoint"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__Client", { enumerable: true, get: function () { return smithy_client_1.Client; } }); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const EndpointParameters_1 = require("./endpoint/EndpointParameters"); +const runtimeConfig_1 = require("./runtimeConfig"); +const runtimeExtensions_1 = require("./runtimeExtensions"); +class STSClient extends smithy_client_1.Client { + config; + constructor(...[configuration]) { + const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0); + const _config_2 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_1); + const _config_3 = (0, middleware_retry_1.resolveRetryConfig)(_config_2); + const _config_4 = (0, config_resolver_1.resolveRegionConfig)(_config_3); + const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4); + const _config_6 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_5); + const _config_7 = (0, httpAuthSchemeProvider_1.resolveHttpAuthSchemeConfig)(_config_6); + const _config_8 = (0, runtimeExtensions_1.resolveRuntimeExtensions)(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use((0, schema_1.getSchemaSerdePlugin)(this.config)); + this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config)); + this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config)); + this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config)); + this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config)); + this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config)); + this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config)); + this.middlewareStack.use((0, core_1.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, { + httpAuthSchemeParametersProvider: httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new core_1.DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use((0, core_1.getHttpSigningPlugin)(this.config)); + } + destroy() { + super.destroy(); + } +} +exports.STSClient = STSClient; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 0000000..239095e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthRuntimeConfig = exports.getHttpAuthExtensionConfiguration = void 0; +const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +exports.getHttpAuthExtensionConfiguration = getHttpAuthExtensionConfiguration; +const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; +exports.resolveHttpAuthRuntimeConfig = resolveHttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..132cce4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js @@ -0,0 +1,62 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveHttpAuthSchemeConfig = exports.resolveStsAuthConfig = exports.defaultSTSHttpAuthSchemeProvider = exports.defaultSTSHttpAuthSchemeParametersProvider = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_middleware_1 = require("@smithy/util-middleware"); +const STSClient_1 = require("../STSClient"); +const defaultSTSHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: (0, util_middleware_1.getSmithyContext)(context).operation, + region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +exports.defaultSTSHttpAuthSchemeParametersProvider = defaultSTSHttpAuthSchemeParametersProvider; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sts", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +const defaultSTSHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "AssumeRoleWithWebIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +exports.defaultSTSHttpAuthSchemeProvider = defaultSTSHttpAuthSchemeProvider; +const resolveStsAuthConfig = (input) => Object.assign(input, { + stsClientCtor: STSClient_1.STSClient, +}); +exports.resolveStsAuthConfig = resolveStsAuthConfig; +const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = (0, exports.resolveStsAuthConfig)(config); + const config_1 = (0, httpAuthSchemes_1.resolveAwsSdkSigV4Config)(config_0); + return Object.assign(config_1, { + authSchemePreference: (0, util_middleware_1.normalizeProvider)(config.authSchemePreference ?? []), + }); +}; +exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/EndpointParameters.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/EndpointParameters.js new file mode 100644 index 0000000..3aec6a5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/EndpointParameters.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.commonParams = exports.resolveClientEndpointParameters = void 0; +const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + useGlobalEndpoint: options.useGlobalEndpoint ?? false, + defaultSigningName: "sts", + }); +}; +exports.resolveClientEndpointParameters = resolveClientEndpointParameters; +exports.commonParams = { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/endpointResolver.js new file mode 100644 index 0000000..6bfb6e9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/endpointResolver.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultEndpointResolver = void 0; +const util_endpoints_1 = require("@aws-sdk/util-endpoints"); +const util_endpoints_2 = require("@smithy/util-endpoints"); +const ruleset_1 = require("./ruleset"); +const cache = new util_endpoints_2.EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS", "UseGlobalEndpoint"], +}); +const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +exports.defaultEndpointResolver = defaultEndpointResolver; +util_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/ruleset.js new file mode 100644 index 0000000..66cb867 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/ruleset.js @@ -0,0 +1,145 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ruleSet = void 0; +const F = "required", G = "type", H = "fn", I = "argv", J = "ref"; +const a = false, b = true, c = "booleanEquals", d = "stringEquals", e = "sigv4", f = "sts", g = "us-east-1", h = "endpoint", i = "https://sts.{Region}.{PartitionResult#dnsSuffix}", j = "tree", k = "error", l = "getAttr", m = { [F]: false, [G]: "string" }, n = { [F]: true, default: false, [G]: "boolean" }, o = { [J]: "Endpoint" }, p = { [H]: "isSet", [I]: [{ [J]: "Region" }] }, q = { [J]: "Region" }, r = { [H]: "aws.partition", [I]: [q], assign: "PartitionResult" }, s = { [J]: "UseFIPS" }, t = { [J]: "UseDualStack" }, u = { + url: "https://sts.amazonaws.com", + properties: { authSchemes: [{ name: e, signingName: f, signingRegion: g }] }, + headers: {}, +}, v = {}, w = { conditions: [{ [H]: d, [I]: [q, "aws-global"] }], [h]: u, [G]: h }, x = { [H]: c, [I]: [s, true] }, y = { [H]: c, [I]: [t, true] }, z = { [H]: l, [I]: [{ [J]: "PartitionResult" }, "supportsFIPS"] }, A = { [J]: "PartitionResult" }, B = { [H]: c, [I]: [true, { [H]: l, [I]: [A, "supportsDualStack"] }] }, C = [{ [H]: "isSet", [I]: [o] }], D = [x], E = [y]; +const _data = { + version: "1.0", + parameters: { Region: m, UseDualStack: n, UseFIPS: n, Endpoint: m, UseGlobalEndpoint: n }, + rules: [ + { + conditions: [ + { [H]: c, [I]: [{ [J]: "UseGlobalEndpoint" }, b] }, + { [H]: "not", [I]: C }, + p, + r, + { [H]: c, [I]: [s, a] }, + { [H]: c, [I]: [t, a] }, + ], + rules: [ + { conditions: [{ [H]: d, [I]: [q, "ap-northeast-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-south-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-southeast-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-southeast-2"] }], endpoint: u, [G]: h }, + w, + { conditions: [{ [H]: d, [I]: [q, "ca-central-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-central-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-north-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-2"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-3"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "sa-east-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, g] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-east-2"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-west-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-west-2"] }], endpoint: u, [G]: h }, + { + endpoint: { + url: i, + properties: { authSchemes: [{ name: e, signingName: f, signingRegion: "{Region}" }] }, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { + conditions: C, + rules: [ + { conditions: D, error: "Invalid Configuration: FIPS and custom endpoint are not supported", [G]: k }, + { conditions: E, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", [G]: k }, + { endpoint: { url: o, properties: v, headers: v }, [G]: h }, + ], + [G]: j, + }, + { + conditions: [p], + rules: [ + { + conditions: [r], + rules: [ + { + conditions: [x, y], + rules: [ + { + conditions: [{ [H]: c, [I]: [b, z] }, B], + rules: [ + { + endpoint: { + url: "https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", [G]: k }, + ], + [G]: j, + }, + { + conditions: D, + rules: [ + { + conditions: [{ [H]: c, [I]: [z, b] }], + rules: [ + { + conditions: [{ [H]: d, [I]: [{ [H]: l, [I]: [A, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://sts.{Region}.amazonaws.com", properties: v, headers: v }, + [G]: h, + }, + { + endpoint: { + url: "https://sts-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "FIPS is enabled but this partition does not support FIPS", [G]: k }, + ], + [G]: j, + }, + { + conditions: E, + rules: [ + { + conditions: [B], + rules: [ + { + endpoint: { + url: "https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "DualStack is enabled but this partition does not support DualStack", [G]: k }, + ], + [G]: j, + }, + w, + { endpoint: { url: i, properties: v, headers: v }, [G]: h }, + ], + [G]: j, + }, + ], + [G]: j, + }, + { error: "Invalid Configuration: Missing Region", [G]: k }, + ], +}; +exports.ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js new file mode 100644 index 0000000..2d1b3f5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js @@ -0,0 +1,202 @@ +'use strict'; + +var STSClient = require('./STSClient'); +var smithyClient = require('@smithy/smithy-client'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var EndpointParameters = require('./endpoint/EndpointParameters'); +var schemas_0 = require('./schemas/schemas_0'); +var errors = require('./models/errors'); +var client = require('@aws-sdk/core/client'); +var regionConfigResolver = require('@aws-sdk/region-config-resolver'); +var STSServiceException = require('./models/STSServiceException'); + +class AssumeRoleCommand extends smithyClient.Command + .classBuilder() + .ep(EndpointParameters.commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSecurityTokenServiceV20110615", "AssumeRole", {}) + .n("STSClient", "AssumeRoleCommand") + .sc(schemas_0.AssumeRole$) + .build() { +} + +class AssumeRoleWithWebIdentityCommand extends smithyClient.Command + .classBuilder() + .ep(EndpointParameters.commonParams) + .m(function (Command, cs, config, o) { + return [middlewareEndpoint.getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSecurityTokenServiceV20110615", "AssumeRoleWithWebIdentity", {}) + .n("STSClient", "AssumeRoleWithWebIdentityCommand") + .sc(schemas_0.AssumeRoleWithWebIdentity$) + .build() { +} + +const commands = { + AssumeRoleCommand, + AssumeRoleWithWebIdentityCommand, +}; +class STS extends STSClient.STSClient { +} +smithyClient.createAggregatedClient(commands, STS); + +const getAccountIdFromAssumedRoleUser = (assumedRoleUser) => { + if (typeof assumedRoleUser?.Arn === "string") { + const arnComponents = assumedRoleUser.Arn.split(":"); + if (arnComponents.length > 4 && arnComponents[4] !== "") { + return arnComponents[4]; + } + } + return undefined; +}; +const resolveRegion = async (_region, _parentRegion, credentialProviderLogger, loaderConfig = {}) => { + const region = typeof _region === "function" ? await _region() : _region; + const parentRegion = typeof _parentRegion === "function" ? await _parentRegion() : _parentRegion; + let stsDefaultRegion = ""; + const resolvedRegion = region ?? parentRegion ?? (stsDefaultRegion = await regionConfigResolver.stsRegionDefaultResolver(loaderConfig)()); + credentialProviderLogger?.debug?.("@aws-sdk/client-sts::resolveRegion", "accepting first of:", `${region} (credential provider clientConfig)`, `${parentRegion} (contextual client)`, `${stsDefaultRegion} (STS default: AWS_REGION, profile region, or us-east-1)`); + return resolvedRegion; +}; +const getDefaultRoleAssumer$1 = (stsOptions, STSClient) => { + let stsClient; + let closureSourceCreds; + return async (sourceCreds, params) => { + closureSourceCreds = sourceCreds; + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId, } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile, + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient({ + ...stsOptions, + userAgentAppId, + profile, + credentialDefaultProvider: () => async () => closureSourceCreds, + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : undefined, + logger: logger, + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...(Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }), + ...(accountId && { accountId }), + }; + client.setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE", "i"); + return credentials; + }; +}; +const getDefaultRoleAssumerWithWebIdentity$1 = (stsOptions, STSClient) => { + let stsClient; + return async (params) => { + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId, } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile, + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient({ + ...stsOptions, + userAgentAppId, + profile, + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : undefined, + logger: logger, + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...(Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }), + ...(accountId && { accountId }), + }; + if (accountId) { + client.setCredentialFeature(credentials, "RESOLVED_ACCOUNT_ID", "T"); + } + client.setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE_WEB_ID", "k"); + return credentials; + }; +}; +const isH2 = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2"; +}; + +const getCustomizableStsClientCtor = (baseCtor, customizations) => { + if (!customizations) + return baseCtor; + else + return class CustomizableSTSClient extends baseCtor { + constructor(config) { + super(config); + for (const customization of customizations) { + this.middlewareStack.use(customization); + } + } + }; +}; +const getDefaultRoleAssumer = (stsOptions = {}, stsPlugins) => getDefaultRoleAssumer$1(stsOptions, getCustomizableStsClientCtor(STSClient.STSClient, stsPlugins)); +const getDefaultRoleAssumerWithWebIdentity = (stsOptions = {}, stsPlugins) => getDefaultRoleAssumerWithWebIdentity$1(stsOptions, getCustomizableStsClientCtor(STSClient.STSClient, stsPlugins)); +const decorateDefaultCredentialProvider = (provider) => (input) => provider({ + roleAssumer: getDefaultRoleAssumer(input), + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity(input), + ...input, +}); + +exports.$Command = smithyClient.Command; +exports.STSServiceException = STSServiceException.STSServiceException; +exports.AssumeRoleCommand = AssumeRoleCommand; +exports.AssumeRoleWithWebIdentityCommand = AssumeRoleWithWebIdentityCommand; +exports.STS = STS; +exports.decorateDefaultCredentialProvider = decorateDefaultCredentialProvider; +exports.getDefaultRoleAssumer = getDefaultRoleAssumer; +exports.getDefaultRoleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity; +Object.prototype.hasOwnProperty.call(STSClient, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: STSClient['__proto__'] + }); + +Object.keys(STSClient).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = STSClient[k]; +}); +Object.prototype.hasOwnProperty.call(schemas_0, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: schemas_0['__proto__'] + }); + +Object.keys(schemas_0).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = schemas_0[k]; +}); +Object.prototype.hasOwnProperty.call(errors, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: errors['__proto__'] + }); + +Object.keys(errors).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = errors[k]; +}); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/STSServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/STSServiceException.js new file mode 100644 index 0000000..0e7b68a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/STSServiceException.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.STSServiceException = exports.__ServiceException = void 0; +const smithy_client_1 = require("@smithy/smithy-client"); +Object.defineProperty(exports, "__ServiceException", { enumerable: true, get: function () { return smithy_client_1.ServiceException; } }); +class STSServiceException extends smithy_client_1.ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, STSServiceException.prototype); + } +} +exports.STSServiceException = STSServiceException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/errors.js new file mode 100644 index 0000000..72f2ac8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/errors.js @@ -0,0 +1,95 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IDPCommunicationErrorException = exports.InvalidIdentityTokenException = exports.IDPRejectedClaimException = exports.RegionDisabledException = exports.PackedPolicyTooLargeException = exports.MalformedPolicyDocumentException = exports.ExpiredTokenException = void 0; +const STSServiceException_1 = require("./STSServiceException"); +class ExpiredTokenException extends STSServiceException_1.STSServiceException { + name = "ExpiredTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExpiredTokenException.prototype); + } +} +exports.ExpiredTokenException = ExpiredTokenException; +class MalformedPolicyDocumentException extends STSServiceException_1.STSServiceException { + name = "MalformedPolicyDocumentException"; + $fault = "client"; + constructor(opts) { + super({ + name: "MalformedPolicyDocumentException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, MalformedPolicyDocumentException.prototype); + } +} +exports.MalformedPolicyDocumentException = MalformedPolicyDocumentException; +class PackedPolicyTooLargeException extends STSServiceException_1.STSServiceException { + name = "PackedPolicyTooLargeException"; + $fault = "client"; + constructor(opts) { + super({ + name: "PackedPolicyTooLargeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, PackedPolicyTooLargeException.prototype); + } +} +exports.PackedPolicyTooLargeException = PackedPolicyTooLargeException; +class RegionDisabledException extends STSServiceException_1.STSServiceException { + name = "RegionDisabledException"; + $fault = "client"; + constructor(opts) { + super({ + name: "RegionDisabledException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, RegionDisabledException.prototype); + } +} +exports.RegionDisabledException = RegionDisabledException; +class IDPRejectedClaimException extends STSServiceException_1.STSServiceException { + name = "IDPRejectedClaimException"; + $fault = "client"; + constructor(opts) { + super({ + name: "IDPRejectedClaimException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IDPRejectedClaimException.prototype); + } +} +exports.IDPRejectedClaimException = IDPRejectedClaimException; +class InvalidIdentityTokenException extends STSServiceException_1.STSServiceException { + name = "InvalidIdentityTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityTokenException.prototype); + } +} +exports.InvalidIdentityTokenException = InvalidIdentityTokenException; +class IDPCommunicationErrorException extends STSServiceException_1.STSServiceException { + name = "IDPCommunicationErrorException"; + $fault = "client"; + constructor(opts) { + super({ + name: "IDPCommunicationErrorException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IDPCommunicationErrorException.prototype); + } +} +exports.IDPCommunicationErrorException = IDPCommunicationErrorException; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.browser.js new file mode 100644 index 0000000..10986e2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.browser.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const sha256_browser_1 = require("@aws-crypto/sha256-browser"); +const util_user_agent_browser_1 = require("@aws-sdk/util-user-agent-browser"); +const config_resolver_1 = require("@smithy/config-resolver"); +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const invalid_dependency_1 = require("@smithy/invalid-dependency"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_browser_1 = require("@smithy/util-body-length-browser"); +const util_defaults_mode_browser_1 = require("@smithy/util-defaults-mode-browser"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + const defaultsMode = (0, util_defaults_mode_browser_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_browser_1.calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_browser_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + maxAttempts: config?.maxAttempts ?? util_retry_1.DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? (0, invalid_dependency_1.invalidProvider)("Region is missing"), + requestHandler: fetch_http_handler_1.FetchHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? sha256_browser_1.Sha256, + streamCollector: config?.streamCollector ?? fetch_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(config_resolver_1.DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.js new file mode 100644 index 0000000..4d56dd6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.js @@ -0,0 +1,68 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const tslib_1 = require("tslib"); +const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); +const client_1 = require("@aws-sdk/core/client"); +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const util_user_agent_node_1 = require("@aws-sdk/util-user-agent-node"); +const config_resolver_1 = require("@smithy/config-resolver"); +const core_1 = require("@smithy/core"); +const hash_node_1 = require("@smithy/hash-node"); +const middleware_retry_1 = require("@smithy/middleware-retry"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +const node_http_handler_1 = require("@smithy/node-http-handler"); +const smithy_client_1 = require("@smithy/smithy-client"); +const util_body_length_node_1 = require("@smithy/util-body-length-node"); +const util_defaults_mode_node_1 = require("@smithy/util-defaults-mode-node"); +const util_retry_1 = require("@smithy/util-retry"); +const runtimeConfig_shared_1 = require("./runtimeConfig.shared"); +const getRuntimeConfig = (config) => { + (0, smithy_client_1.emitWarningIfUnsupportedVersion)(process.version); + const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config); + const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode); + const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config); + (0, client_1.emitWarningIfUnsupportedVersion)(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? (0, node_config_provider_1.loadConfig)(httpAuthSchemes_1.NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + (0, util_user_agent_node_1.createDefaultUserAgentProvider)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4") || + (async (idProps) => await config.credentialDefaultProvider(idProps?.__config || {})()), + signer: new httpAuthSchemes_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_1.NoAuthSigner(), + }, + ], + maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + (0, node_config_provider_1.loadConfig)({ + ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? (0, node_config_provider_1.loadConfig)(util_user_agent_node_1.NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.native.js new file mode 100644 index 0000000..34c5f8e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.native.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const sha256_js_1 = require("@aws-crypto/sha256-js"); +const runtimeConfig_browser_1 = require("./runtimeConfig.browser"); +const getRuntimeConfig = (config) => { + const browserDefaults = (0, runtimeConfig_browser_1.getRuntimeConfig)(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? sha256_js_1.Sha256, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.shared.js new file mode 100644 index 0000000..9d99445 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.shared.js @@ -0,0 +1,50 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRuntimeConfig = void 0; +const httpAuthSchemes_1 = require("@aws-sdk/core/httpAuthSchemes"); +const protocols_1 = require("@aws-sdk/core/protocols"); +const core_1 = require("@smithy/core"); +const smithy_client_1 = require("@smithy/smithy-client"); +const url_parser_1 = require("@smithy/url-parser"); +const util_base64_1 = require("@smithy/util-base64"); +const util_utf8_1 = require("@smithy/util-utf8"); +const httpAuthSchemeProvider_1 = require("./auth/httpAuthSchemeProvider"); +const endpointResolver_1 = require("./endpoint/endpointResolver"); +const schemas_0_1 = require("./schemas/schemas_0"); +const getRuntimeConfig = (config) => { + return { + apiVersion: "2011-06-15", + base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64, + base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new httpAuthSchemes_1.AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new core_1.NoAuthSigner(), + }, + ], + logger: config?.logger ?? new smithy_client_1.NoOpLogger(), + protocol: config?.protocol ?? protocols_1.AwsQueryProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sts", + errorTypeRegistries: schemas_0_1.errorTypeRegistries, + xmlNamespace: "https://sts.amazonaws.com/doc/2011-06-15/", + version: "2011-06-15", + serviceTarget: "AWSSecurityTokenServiceV20110615", + }, + serviceId: config?.serviceId ?? "STS", + urlParser: config?.urlParser ?? url_parser_1.parseUrl, + utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8, + utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8, + }; +}; +exports.getRuntimeConfig = getRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeExtensions.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeExtensions.js new file mode 100644 index 0000000..a50ebec --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeExtensions.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveRuntimeExtensions = void 0; +const region_config_resolver_1 = require("@aws-sdk/region-config-resolver"); +const protocol_http_1 = require("@smithy/protocol-http"); +const smithy_client_1 = require("@smithy/smithy-client"); +const httpAuthExtensionConfiguration_1 = require("./auth/httpAuthExtensionConfiguration"); +const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign((0, region_config_resolver_1.getAwsRegionExtensionConfiguration)(runtimeConfig), (0, smithy_client_1.getDefaultExtensionConfiguration)(runtimeConfig), (0, protocol_http_1.getHttpHandlerExtensionConfiguration)(runtimeConfig), (0, httpAuthExtensionConfiguration_1.getHttpAuthExtensionConfiguration)(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, (0, region_config_resolver_1.resolveAwsRegionExtensionConfiguration)(extensionConfiguration), (0, smithy_client_1.resolveDefaultRuntimeConfig)(extensionConfiguration), (0, protocol_http_1.resolveHttpHandlerRuntimeConfig)(extensionConfiguration), (0, httpAuthExtensionConfiguration_1.resolveHttpAuthRuntimeConfig)(extensionConfiguration)); +}; +exports.resolveRuntimeExtensions = resolveRuntimeExtensions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/schemas/schemas_0.js new file mode 100644 index 0000000..2030a47 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/schemas/schemas_0.js @@ -0,0 +1,195 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AssumeRoleWithWebIdentity$ = exports.AssumeRole$ = exports.Tag$ = exports.ProvidedContext$ = exports.PolicyDescriptorType$ = exports.Credentials$ = exports.AssumeRoleWithWebIdentityResponse$ = exports.AssumeRoleWithWebIdentityRequest$ = exports.AssumeRoleResponse$ = exports.AssumeRoleRequest$ = exports.AssumedRoleUser$ = exports.errorTypeRegistries = exports.RegionDisabledException$ = exports.PackedPolicyTooLargeException$ = exports.MalformedPolicyDocumentException$ = exports.InvalidIdentityTokenException$ = exports.IDPRejectedClaimException$ = exports.IDPCommunicationErrorException$ = exports.ExpiredTokenException$ = exports.STSServiceException$ = void 0; +const _A = "Arn"; +const _AKI = "AccessKeyId"; +const _AR = "AssumeRole"; +const _ARI = "AssumedRoleId"; +const _ARR = "AssumeRoleRequest"; +const _ARRs = "AssumeRoleResponse"; +const _ARU = "AssumedRoleUser"; +const _ARWWI = "AssumeRoleWithWebIdentity"; +const _ARWWIR = "AssumeRoleWithWebIdentityRequest"; +const _ARWWIRs = "AssumeRoleWithWebIdentityResponse"; +const _Au = "Audience"; +const _C = "Credentials"; +const _CA = "ContextAssertion"; +const _DS = "DurationSeconds"; +const _E = "Expiration"; +const _EI = "ExternalId"; +const _ETE = "ExpiredTokenException"; +const _IDPCEE = "IDPCommunicationErrorException"; +const _IDPRCE = "IDPRejectedClaimException"; +const _IITE = "InvalidIdentityTokenException"; +const _K = "Key"; +const _MPDE = "MalformedPolicyDocumentException"; +const _P = "Policy"; +const _PA = "PolicyArns"; +const _PAr = "ProviderArn"; +const _PC = "ProvidedContexts"; +const _PCLT = "ProvidedContextsListType"; +const _PCr = "ProvidedContext"; +const _PDT = "PolicyDescriptorType"; +const _PI = "ProviderId"; +const _PPS = "PackedPolicySize"; +const _PPTLE = "PackedPolicyTooLargeException"; +const _Pr = "Provider"; +const _RA = "RoleArn"; +const _RDE = "RegionDisabledException"; +const _RSN = "RoleSessionName"; +const _SAK = "SecretAccessKey"; +const _SFWIT = "SubjectFromWebIdentityToken"; +const _SI = "SourceIdentity"; +const _SN = "SerialNumber"; +const _ST = "SessionToken"; +const _T = "Tags"; +const _TC = "TokenCode"; +const _TTK = "TransitiveTagKeys"; +const _Ta = "Tag"; +const _V = "Value"; +const _WIT = "WebIdentityToken"; +const _a = "arn"; +const _aKST = "accessKeySecretType"; +const _aQE = "awsQueryError"; +const _c = "client"; +const _cTT = "clientTokenType"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _pDLT = "policyDescriptorListType"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sts"; +const _tLT = "tagListType"; +const n0 = "com.amazonaws.sts"; +const schema_1 = require("@smithy/core/schema"); +const errors_1 = require("../models/errors"); +const STSServiceException_1 = require("../models/STSServiceException"); +const _s_registry = schema_1.TypeRegistry.for(_s); +exports.STSServiceException$ = [-3, _s, "STSServiceException", 0, [], []]; +_s_registry.registerError(exports.STSServiceException$, STSServiceException_1.STSServiceException); +const n0_registry = schema_1.TypeRegistry.for(n0); +exports.ExpiredTokenException$ = [ + -3, + n0, + _ETE, + { [_aQE]: [`ExpiredTokenException`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.ExpiredTokenException$, errors_1.ExpiredTokenException); +exports.IDPCommunicationErrorException$ = [ + -3, + n0, + _IDPCEE, + { [_aQE]: [`IDPCommunicationError`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.IDPCommunicationErrorException$, errors_1.IDPCommunicationErrorException); +exports.IDPRejectedClaimException$ = [ + -3, + n0, + _IDPRCE, + { [_aQE]: [`IDPRejectedClaim`, 403], [_e]: _c, [_hE]: 403 }, + [_m], + [0], +]; +n0_registry.registerError(exports.IDPRejectedClaimException$, errors_1.IDPRejectedClaimException); +exports.InvalidIdentityTokenException$ = [ + -3, + n0, + _IITE, + { [_aQE]: [`InvalidIdentityToken`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.InvalidIdentityTokenException$, errors_1.InvalidIdentityTokenException); +exports.MalformedPolicyDocumentException$ = [ + -3, + n0, + _MPDE, + { [_aQE]: [`MalformedPolicyDocument`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.MalformedPolicyDocumentException$, errors_1.MalformedPolicyDocumentException); +exports.PackedPolicyTooLargeException$ = [ + -3, + n0, + _PPTLE, + { [_aQE]: [`PackedPolicyTooLarge`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(exports.PackedPolicyTooLargeException$, errors_1.PackedPolicyTooLargeException); +exports.RegionDisabledException$ = [ + -3, + n0, + _RDE, + { [_aQE]: [`RegionDisabledException`, 403], [_e]: _c, [_hE]: 403 }, + [_m], + [0], +]; +n0_registry.registerError(exports.RegionDisabledException$, errors_1.RegionDisabledException); +exports.errorTypeRegistries = [_s_registry, n0_registry]; +var accessKeySecretType = [0, n0, _aKST, 8, 0]; +var clientTokenType = [0, n0, _cTT, 8, 0]; +exports.AssumedRoleUser$ = [3, n0, _ARU, 0, [_ARI, _A], [0, 0], 2]; +exports.AssumeRoleRequest$ = [ + 3, + n0, + _ARR, + 0, + [_RA, _RSN, _PA, _P, _DS, _T, _TTK, _EI, _SN, _TC, _SI, _PC], + [0, 0, () => policyDescriptorListType, 0, 1, () => tagListType, 64 | 0, 0, 0, 0, 0, () => ProvidedContextsListType], + 2, +]; +exports.AssumeRoleResponse$ = [ + 3, + n0, + _ARRs, + 0, + [_C, _ARU, _PPS, _SI], + [[() => exports.Credentials$, 0], () => exports.AssumedRoleUser$, 1, 0], +]; +exports.AssumeRoleWithWebIdentityRequest$ = [ + 3, + n0, + _ARWWIR, + 0, + [_RA, _RSN, _WIT, _PI, _PA, _P, _DS], + [0, 0, [() => clientTokenType, 0], 0, () => policyDescriptorListType, 0, 1], + 3, +]; +exports.AssumeRoleWithWebIdentityResponse$ = [ + 3, + n0, + _ARWWIRs, + 0, + [_C, _SFWIT, _ARU, _PPS, _Pr, _Au, _SI], + [[() => exports.Credentials$, 0], 0, () => exports.AssumedRoleUser$, 1, 0, 0, 0], +]; +exports.Credentials$ = [ + 3, + n0, + _C, + 0, + [_AKI, _SAK, _ST, _E], + [0, [() => accessKeySecretType, 0], 0, 4], + 4, +]; +exports.PolicyDescriptorType$ = [3, n0, _PDT, 0, [_a], [0]]; +exports.ProvidedContext$ = [3, n0, _PCr, 0, [_PAr, _CA], [0, 0]]; +exports.Tag$ = [3, n0, _Ta, 0, [_K, _V], [0, 0], 2]; +var policyDescriptorListType = [1, n0, _pDLT, 0, () => exports.PolicyDescriptorType$]; +var ProvidedContextsListType = [1, n0, _PCLT, 0, () => exports.ProvidedContext$]; +var tagKeyListType = 64 | 0; +var tagListType = [1, n0, _tLT, 0, () => exports.Tag$]; +exports.AssumeRole$ = [9, n0, _AR, 0, () => exports.AssumeRoleRequest$, () => exports.AssumeRoleResponse$]; +exports.AssumeRoleWithWebIdentity$ = [ + 9, + n0, + _ARWWI, + 0, + () => exports.AssumeRoleWithWebIdentityRequest$, + () => exports.AssumeRoleWithWebIdentityResponse$, +]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/index.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/index.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentity.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentity.js new file mode 100644 index 0000000..efdf096 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentity.js @@ -0,0 +1,11 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { CognitoIdentityClient } from "./CognitoIdentityClient"; +import { GetCredentialsForIdentityCommand, } from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommand } from "./commands/GetIdCommand"; +const commands = { + GetCredentialsForIdentityCommand, + GetIdCommand, +}; +export class CognitoIdentity extends CognitoIdentityClient { +} +createAggregatedClient(commands, CognitoIdentity); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentityClient.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentityClient.js new file mode 100644 index 0000000..cfe0de0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/CognitoIdentityClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultCognitoIdentityHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters, } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class CognitoIdentityClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultCognitoIdentityHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 0000000..2ba1d48 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..7840ee0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/auth/httpAuthSchemeProvider.js @@ -0,0 +1,54 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core/httpAuthSchemes"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +export const defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "cognito-identity", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetCredentialsForIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + case "GetId": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.js new file mode 100644 index 0000000..4c9e29f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetCredentialsForIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetCredentialsForIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetCredentialsForIdentity", {}) + .n("CognitoIdentityClient", "GetCredentialsForIdentityCommand") + .sc(GetCredentialsForIdentity$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetIdCommand.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetIdCommand.js new file mode 100644 index 0000000..3125405 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/GetIdCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetId$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetIdCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSCognitoIdentityService", "GetId", {}) + .n("CognitoIdentityClient", "GetIdCommand") + .sc(GetId$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/index.js new file mode 100644 index 0000000..dc560a4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/commands/index.js @@ -0,0 +1,2 @@ +export * from "./GetCredentialsForIdentityCommand"; +export * from "./GetIdCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/EndpointParameters.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/EndpointParameters.js new file mode 100644 index 0000000..9cc09f0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/EndpointParameters.js @@ -0,0 +1,13 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "cognito-identity", + }); +}; +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/endpointResolver.js new file mode 100644 index 0000000..0ac15bc --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/ruleset.js new file mode 100644 index 0000000..ad1ec5a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/ruleset.js @@ -0,0 +1,143 @@ +const w = "required", x = "fn", y = "argv", z = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = "stringEquals", j = { [w]: false, type: "string" }, k = { [w]: true, default: false, type: "boolean" }, l = { [z]: "Endpoint" }, m = { [x]: c, [y]: [{ [z]: "UseFIPS" }, true] }, n = { [x]: c, [y]: [{ [z]: "UseDualStack" }, true] }, o = {}, p = { [z]: "Region" }, q = { [x]: h, [y]: [{ [z]: g }, "supportsFIPS"] }, r = { [z]: g }, s = { [x]: c, [y]: [true, { [x]: h, [y]: [r, "supportsDualStack"] }] }, t = [m], u = [n], v = [p]; +const _data = { + version: "1.0", + parameters: { Region: j, UseDualStack: k, UseFIPS: k, Endpoint: j }, + rules: [ + { + conditions: [{ [x]: b, [y]: [l] }], + rules: [ + { conditions: t, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: u, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: l, properties: o, headers: o }, type: e }, + ], + type: f, + }, + { + conditions: [{ [x]: b, [y]: v }], + rules: [ + { + conditions: [{ [x]: "aws.partition", [y]: v, assign: g }], + rules: [ + { + conditions: [m, n], + rules: [ + { + conditions: [{ [x]: c, [y]: [a, q] }, s], + rules: [ + { + conditions: [{ [x]: i, [y]: [p, "us-east-1"] }], + endpoint: { + url: "https://cognito-identity-fips.us-east-1.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-east-2"] }], + endpoint: { + url: "https://cognito-identity-fips.us-east-2.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-west-1"] }], + endpoint: { + url: "https://cognito-identity-fips.us-west-1.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + conditions: [{ [x]: i, [y]: [p, "us-west-2"] }], + endpoint: { + url: "https://cognito-identity-fips.us-west-2.amazonaws.com", + properties: o, + headers: o, + }, + type: e, + }, + { + endpoint: { + url: "https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: t, + rules: [ + { + conditions: [{ [x]: c, [y]: [q, a] }], + rules: [ + { + endpoint: { + url: "https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: u, + rules: [ + { + conditions: [s], + rules: [ + { + conditions: [{ [x]: i, [y]: ["aws", { [x]: h, [y]: [r, "name"] }] }], + endpoint: { url: "https://cognito-identity.{Region}.amazonaws.com", properties: o, headers: o }, + type: e, + }, + { + endpoint: { + url: "https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { + url: "https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}", + properties: o, + headers: o, + }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +export const ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/extensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/extensionConfiguration.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/index.js new file mode 100644 index 0000000..0fa6157 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/index.js @@ -0,0 +1,7 @@ +export * from "./CognitoIdentityClient"; +export * from "./CognitoIdentity"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { CognitoIdentityServiceException } from "./models/CognitoIdentityServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/CognitoIdentityServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/CognitoIdentityServiceException.js new file mode 100644 index 0000000..09c7613 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/CognitoIdentityServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class CognitoIdentityServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, CognitoIdentityServiceException.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/errors.js new file mode 100644 index 0000000..2f386d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/errors.js @@ -0,0 +1,109 @@ +import { CognitoIdentityServiceException as __BaseException } from "./CognitoIdentityServiceException"; +export class ExternalServiceException extends __BaseException { + name = "ExternalServiceException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExternalServiceException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExternalServiceException.prototype); + } +} +export class InternalErrorException extends __BaseException { + name = "InternalErrorException"; + $fault = "server"; + constructor(opts) { + super({ + name: "InternalErrorException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalErrorException.prototype); + } +} +export class InvalidIdentityPoolConfigurationException extends __BaseException { + name = "InvalidIdentityPoolConfigurationException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityPoolConfigurationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityPoolConfigurationException.prototype); + } +} +export class InvalidParameterException extends __BaseException { + name = "InvalidParameterException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidParameterException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidParameterException.prototype); + } +} +export class NotAuthorizedException extends __BaseException { + name = "NotAuthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "NotAuthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, NotAuthorizedException.prototype); + } +} +export class ResourceConflictException extends __BaseException { + name = "ResourceConflictException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceConflictException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceConflictException.prototype); + } +} +export class ResourceNotFoundException extends __BaseException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +export class TooManyRequestsException extends __BaseException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +export class LimitExceededException extends __BaseException { + name = "LimitExceededException"; + $fault = "client"; + constructor(opts) { + super({ + name: "LimitExceededException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, LimitExceededException.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/models_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/models_0.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js new file mode 100644 index 0000000..d147235 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.browser.js @@ -0,0 +1,33 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js new file mode 100644 index 0000000..95d5f98 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.js @@ -0,0 +1,49 @@ +import packageInfo from "../../../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core/client"; +import { NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core/httpAuthSchemes"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.native.js new file mode 100644 index 0000000..0b54695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.shared.js new file mode 100644 index 0000000..9f2955f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeConfig.shared.js @@ -0,0 +1,46 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsJson1_1Protocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultCognitoIdentityHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2014-06-30", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultCognitoIdentityHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsJson1_1Protocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.cognitoidentity", + errorTypeRegistries, + xmlNamespace: "http://cognito-identity.amazonaws.com/doc/2014-06-30/", + version: "2014-06-30", + serviceTarget: "AWSCognitoIdentityService", + }, + serviceId: config?.serviceId ?? "Cognito Identity", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeExtensions.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeExtensions.js new file mode 100644 index 0000000..5b29695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/schemas/schemas_0.js new file mode 100644 index 0000000..d69ca87 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/schemas/schemas_0.js @@ -0,0 +1,107 @@ +const _AI = "AccountId"; +const _AKI = "AccessKeyId"; +const _C = "Credentials"; +const _CRA = "CustomRoleArn"; +const _E = "Expiration"; +const _ESE = "ExternalServiceException"; +const _GCFI = "GetCredentialsForIdentity"; +const _GCFII = "GetCredentialsForIdentityInput"; +const _GCFIR = "GetCredentialsForIdentityResponse"; +const _GI = "GetId"; +const _GII = "GetIdInput"; +const _GIR = "GetIdResponse"; +const _IEE = "InternalErrorException"; +const _II = "IdentityId"; +const _IIPCE = "InvalidIdentityPoolConfigurationException"; +const _IPE = "InvalidParameterException"; +const _IPI = "IdentityPoolId"; +const _IPT = "IdentityProviderToken"; +const _L = "Logins"; +const _LEE = "LimitExceededException"; +const _LM = "LoginsMap"; +const _NAE = "NotAuthorizedException"; +const _RCE = "ResourceConflictException"; +const _RNFE = "ResourceNotFoundException"; +const _SK = "SecretKey"; +const _SKS = "SecretKeyString"; +const _ST = "SessionToken"; +const _TMRE = "TooManyRequestsException"; +const _c = "client"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.cognitoidentity"; +const _se = "server"; +const n0 = "com.amazonaws.cognitoidentity"; +import { TypeRegistry } from "@smithy/core/schema"; +import { CognitoIdentityServiceException } from "../models/CognitoIdentityServiceException"; +import { ExternalServiceException, InternalErrorException, InvalidIdentityPoolConfigurationException, InvalidParameterException, LimitExceededException, NotAuthorizedException, ResourceConflictException, ResourceNotFoundException, TooManyRequestsException, } from "../models/errors"; +const _s_registry = TypeRegistry.for(_s); +export var CognitoIdentityServiceException$ = [-3, _s, "CognitoIdentityServiceException", 0, [], []]; +_s_registry.registerError(CognitoIdentityServiceException$, CognitoIdentityServiceException); +const n0_registry = TypeRegistry.for(n0); +export var ExternalServiceException$ = [-3, n0, _ESE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(ExternalServiceException$, ExternalServiceException); +export var InternalErrorException$ = [-3, n0, _IEE, { [_e]: _se }, [_m], [0]]; +n0_registry.registerError(InternalErrorException$, InternalErrorException); +export var InvalidIdentityPoolConfigurationException$ = [ + -3, + n0, + _IIPCE, + { [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(InvalidIdentityPoolConfigurationException$, InvalidIdentityPoolConfigurationException); +export var InvalidParameterException$ = [-3, n0, _IPE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(InvalidParameterException$, InvalidParameterException); +export var LimitExceededException$ = [-3, n0, _LEE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(LimitExceededException$, LimitExceededException); +export var NotAuthorizedException$ = [-3, n0, _NAE, { [_e]: _c, [_hE]: 403 }, [_m], [0]]; +n0_registry.registerError(NotAuthorizedException$, NotAuthorizedException); +export var ResourceConflictException$ = [-3, n0, _RCE, { [_e]: _c, [_hE]: 409 }, [_m], [0]]; +n0_registry.registerError(ResourceConflictException$, ResourceConflictException); +export var ResourceNotFoundException$ = [-3, n0, _RNFE, { [_e]: _c, [_hE]: 404 }, [_m], [0]]; +n0_registry.registerError(ResourceNotFoundException$, ResourceNotFoundException); +export var TooManyRequestsException$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_m], [0]]; +n0_registry.registerError(TooManyRequestsException$, TooManyRequestsException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var IdentityProviderToken = [0, n0, _IPT, 8, 0]; +var SecretKeyString = [0, n0, _SKS, 8, 0]; +export var Credentials$ = [ + 3, + n0, + _C, + 0, + [_AKI, _SK, _ST, _E], + [0, [() => SecretKeyString, 0], 0, 4], +]; +export var GetCredentialsForIdentityInput$ = [ + 3, + n0, + _GCFII, + 0, + [_II, _L, _CRA], + [0, [() => LoginsMap, 0], 0], + 1, +]; +export var GetCredentialsForIdentityResponse$ = [ + 3, + n0, + _GCFIR, + 0, + [_II, _C], + [0, [() => Credentials$, 0]], +]; +export var GetIdInput$ = [3, n0, _GII, 0, [_IPI, _AI, _L], [0, 0, [() => LoginsMap, 0]], 1]; +export var GetIdResponse$ = [3, n0, _GIR, 0, [_II], [0]]; +var LoginsMap = [2, n0, _LM, 0, [0, 0], [() => IdentityProviderToken, 0]]; +export var GetCredentialsForIdentity$ = [ + 9, + n0, + _GCFI, + 0, + () => GetCredentialsForIdentityInput$, + () => GetCredentialsForIdentityResponse$, +]; +export var GetId$ = [9, n0, _GI, 0, () => GetIdInput$, () => GetIdResponse$]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/Signin.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/Signin.js new file mode 100644 index 0000000..5bfcd7f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/Signin.js @@ -0,0 +1,9 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { CreateOAuth2TokenCommand, } from "./commands/CreateOAuth2TokenCommand"; +import { SigninClient } from "./SigninClient"; +const commands = { + CreateOAuth2TokenCommand, +}; +export class Signin extends SigninClient { +} +createAggregatedClient(commands, Signin); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js new file mode 100644 index 0000000..4cf6ef5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/SigninClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultSigninHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters, } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class SigninClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSigninHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthExtensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 0000000..2ba1d48 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..9060076 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/auth/httpAuthSchemeProvider.js @@ -0,0 +1,50 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core/httpAuthSchemes"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +export const defaultSigninHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "signin", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultSigninHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateOAuth2Token": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js new file mode 100644 index 0000000..155b4c4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateOAuth2Token$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateOAuth2TokenCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("Signin", "CreateOAuth2Token", {}) + .n("SigninClient", "CreateOAuth2TokenCommand") + .sc(CreateOAuth2Token$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/index.js new file mode 100644 index 0000000..d32e4a3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/index.js @@ -0,0 +1 @@ +export * from "./CreateOAuth2TokenCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/EndpointParameters.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/EndpointParameters.js new file mode 100644 index 0000000..c6b9ec7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/EndpointParameters.js @@ -0,0 +1,13 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "signin", + }); +}; +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js new file mode 100644 index 0000000..0ac15bc --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/ruleset.js new file mode 100644 index 0000000..ff11614 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/ruleset.js @@ -0,0 +1,130 @@ +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "stringEquals", i = { [u]: true, default: false, type: "boolean" }, j = { [u]: false, type: "string" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: "getAttr", [w]: [{ [x]: g }, "name"] }, p = { [v]: c, [w]: [{ [x]: "UseFIPS" }, false] }, q = { [v]: c, [w]: [{ [x]: "UseDualStack" }, false] }, r = { [v]: "getAttr", [w]: [{ [x]: g }, "supportsFIPS"] }, s = { [v]: c, [w]: [true, { [v]: "getAttr", [w]: [{ [x]: g }, "supportsDualStack"] }] }, t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { UseDualStack: i, UseFIPS: i, Endpoint: j, Region: j }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: [l], error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { + rules: [ + { + conditions: [m], + error: "Invalid Configuration: Dualstack and custom endpoint are not supported", + type: d, + }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + ], + type: f, + }, + { + rules: [ + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [{ [v]: h, [w]: [o, "aws"] }, p, q], + endpoint: { url: "https://{Region}.signin.aws.amazon.com", properties: n, headers: n }, + type: e, + }, + { + conditions: [{ [v]: h, [w]: [o, "aws-cn"] }, p, q], + endpoint: { url: "https://{Region}.signin.amazonaws.cn", properties: n, headers: n }, + type: e, + }, + { + conditions: [{ [v]: h, [w]: [o, "aws-us-gov"] }, p, q], + endpoint: { url: "https://{Region}.signin.amazonaws-us-gov.com", properties: n, headers: n }, + type: e, + }, + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, r] }, s], + rules: [ + { + endpoint: { + url: "https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { + error: "FIPS and DualStack are enabled, but this partition does not support one or both", + type: d, + }, + ], + type: f, + }, + { + conditions: [l, q], + rules: [ + { + conditions: [{ [v]: c, [w]: [r, a] }], + rules: [ + { + endpoint: { + url: "https://signin-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: [p, m], + rules: [ + { + conditions: [s], + rules: [ + { + endpoint: { + url: "https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://signin.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], + type: f, + }, + ], +}; +export const ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/extensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/extensionConfiguration.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js new file mode 100644 index 0000000..9051da4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/index.js @@ -0,0 +1,8 @@ +export * from "./SigninClient"; +export * from "./Signin"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SigninServiceException } from "./models/SigninServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/SigninServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/SigninServiceException.js new file mode 100644 index 0000000..b931766 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/SigninServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class SigninServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SigninServiceException.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js new file mode 100644 index 0000000..8e379e3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js @@ -0,0 +1,8 @@ +export const OAuth2ErrorCode = { + AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED", + INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS", + INVALID_REQUEST: "INVALID_REQUEST", + SERVER_ERROR: "server_error", + TOKEN_EXPIRED: "TOKEN_EXPIRED", + USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED", +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/errors.js new file mode 100644 index 0000000..97974bb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/errors.js @@ -0,0 +1,57 @@ +import { SigninServiceException as __BaseException } from "./SigninServiceException"; +export class AccessDeniedException extends __BaseException { + name = "AccessDeniedException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDeniedException.prototype); + this.error = opts.error; + } +} +export class InternalServerException extends __BaseException { + name = "InternalServerException"; + $fault = "server"; + error; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalServerException.prototype); + this.error = opts.error; + } +} +export class TooManyRequestsError extends __BaseException { + name = "TooManyRequestsError"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "TooManyRequestsError", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsError.prototype); + this.error = opts.error; + } +} +export class ValidationException extends __BaseException { + name = "ValidationException"; + $fault = "client"; + error; + constructor(opts) { + super({ + name: "ValidationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ValidationException.prototype); + this.error = opts.error; + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/models_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/models_0.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js new file mode 100644 index 0000000..2102cbd --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.browser.js @@ -0,0 +1,34 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js new file mode 100644 index 0000000..95d5f98 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.js @@ -0,0 +1,49 @@ +import packageInfo from "../../../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core/client"; +import { NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core/httpAuthSchemes"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.native.js new file mode 100644 index 0000000..0b54695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js new file mode 100644 index 0000000..4c9f211 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeConfig.shared.js @@ -0,0 +1,45 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultSigninHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2023-01-01", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSigninHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.signin", + errorTypeRegistries, + version: "2023-01-01", + serviceTarget: "Signin", + }, + serviceId: config?.serviceId ?? "Signin", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js new file mode 100644 index 0000000..5b29695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/schemas/schemas_0.js new file mode 100644 index 0000000..b292094 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/schemas/schemas_0.js @@ -0,0 +1,122 @@ +const _ADE = "AccessDeniedException"; +const _AT = "AccessToken"; +const _COAT = "CreateOAuth2Token"; +const _COATR = "CreateOAuth2TokenRequest"; +const _COATRB = "CreateOAuth2TokenRequestBody"; +const _COATRBr = "CreateOAuth2TokenResponseBody"; +const _COATRr = "CreateOAuth2TokenResponse"; +const _ISE = "InternalServerException"; +const _RT = "RefreshToken"; +const _TMRE = "TooManyRequestsError"; +const _VE = "ValidationException"; +const _aKI = "accessKeyId"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cV = "codeVerifier"; +const _co = "code"; +const _e = "error"; +const _eI = "expiresIn"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _jN = "jsonName"; +const _m = "message"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.signin"; +const _sAK = "secretAccessKey"; +const _sT = "sessionToken"; +const _se = "server"; +const _tI = "tokenInput"; +const _tO = "tokenOutput"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.signin"; +import { TypeRegistry } from "@smithy/core/schema"; +import { AccessDeniedException, InternalServerException, TooManyRequestsError, ValidationException, } from "../models/errors"; +import { SigninServiceException } from "../models/SigninServiceException"; +const _s_registry = TypeRegistry.for(_s); +export var SigninServiceException$ = [-3, _s, "SigninServiceException", 0, [], []]; +_s_registry.registerError(SigninServiceException$, SigninServiceException); +const n0_registry = TypeRegistry.for(n0); +export var AccessDeniedException$ = [-3, n0, _ADE, { [_e]: _c }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(AccessDeniedException$, AccessDeniedException); +export var InternalServerException$ = [-3, n0, _ISE, { [_e]: _se, [_hE]: 500 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(InternalServerException$, InternalServerException); +export var TooManyRequestsError$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(TooManyRequestsError$, TooManyRequestsError); +export var ValidationException$ = [-3, n0, _VE, { [_e]: _c, [_hE]: 400 }, [_e, _m], [0, 0], 2]; +n0_registry.registerError(ValidationException$, ValidationException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var RefreshToken = [0, n0, _RT, 8, 0]; +export var AccessToken$ = [ + 3, + n0, + _AT, + 8, + [_aKI, _sAK, _sT], + [ + [0, { [_jN]: _aKI }], + [0, { [_jN]: _sAK }], + [0, { [_jN]: _sT }], + ], + 3, +]; +export var CreateOAuth2TokenRequest$ = [ + 3, + n0, + _COATR, + 0, + [_tI], + [[() => CreateOAuth2TokenRequestBody$, 16]], + 1, +]; +export var CreateOAuth2TokenRequestBody$ = [ + 3, + n0, + _COATRB, + 0, + [_cI, _gT, _co, _rU, _cV, _rT], + [ + [0, { [_jN]: _cI }], + [0, { [_jN]: _gT }], + 0, + [0, { [_jN]: _rU }], + [0, { [_jN]: _cV }], + [() => RefreshToken, { [_jN]: _rT }], + ], + 2, +]; +export var CreateOAuth2TokenResponse$ = [ + 3, + n0, + _COATRr, + 0, + [_tO], + [[() => CreateOAuth2TokenResponseBody$, 16]], + 1, +]; +export var CreateOAuth2TokenResponseBody$ = [ + 3, + n0, + _COATRBr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [ + [() => AccessToken$, { [_jN]: _aT }], + [0, { [_jN]: _tT }], + [1, { [_jN]: _eI }], + [() => RefreshToken, { [_jN]: _rT }], + [0, { [_jN]: _iT }], + ], + 4, +]; +export var CreateOAuth2Token$ = [ + 9, + n0, + _COAT, + { [_h]: ["POST", "/v1/token", 200] }, + () => CreateOAuth2TokenRequest$, + () => CreateOAuth2TokenResponse$, +]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js new file mode 100644 index 0000000..df0a0ed --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDC.js @@ -0,0 +1,9 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { CreateTokenCommand, } from "./commands/CreateTokenCommand"; +import { SSOOIDCClient } from "./SSOOIDCClient"; +const commands = { + CreateTokenCommand, +}; +export class SSOOIDC extends SSOOIDCClient { +} +createAggregatedClient(commands, SSOOIDC); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js new file mode 100644 index 0000000..ce8da7f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/SSOOIDCClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultSSOOIDCHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters, } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class SSOOIDCClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSSOOIDCHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 0000000..2ba1d48 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..eb3d2f6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/auth/httpAuthSchemeProvider.js @@ -0,0 +1,50 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core/httpAuthSchemes"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +export const defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sso-oauth", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "CreateToken": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js new file mode 100644 index 0000000..b8e1755 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/CreateTokenCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateToken$ } from "../schemas/schemas_0"; +export { $Command }; +export class CreateTokenCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSSOOIDCService", "CreateToken", {}) + .n("SSOOIDCClient", "CreateTokenCommand") + .sc(CreateToken$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js new file mode 100644 index 0000000..09214ca --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/commands/index.js @@ -0,0 +1 @@ +export * from "./CreateTokenCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js new file mode 100644 index 0000000..2b26c44 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/EndpointParameters.js @@ -0,0 +1,13 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "sso-oauth", + }); +}; +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js new file mode 100644 index 0000000..0ac15bc --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/ruleset.js new file mode 100644 index 0000000..f1bec7b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/ruleset.js @@ -0,0 +1,103 @@ +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = { [u]: false, type: "string" }, j = { [u]: true, default: false, type: "boolean" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, "supportsFIPS"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, "supportsDualStack"] }] }, r = [l], s = [m], t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: r, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: s, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, o] }, q], + rules: [ + { + endpoint: { + url: "https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: r, + rules: [ + { + conditions: [{ [v]: c, [w]: [o, a] }], + rules: [ + { + conditions: [{ [v]: "stringEquals", [w]: [{ [v]: h, [w]: [p, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://oidc.{Region}.amazonaws.com", properties: n, headers: n }, + type: e, + }, + { + endpoint: { + url: "https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: s, + rules: [ + { + conditions: [q], + rules: [ + { + endpoint: { + url: "https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://oidc.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +export const ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/extensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/extensionConfiguration.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js new file mode 100644 index 0000000..1da522c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/index.js @@ -0,0 +1,8 @@ +export * from "./SSOOIDCClient"; +export * from "./SSOOIDC"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOOIDCServiceException } from "./models/SSOOIDCServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js new file mode 100644 index 0000000..176cec3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/SSOOIDCServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class SSOOIDCServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SSOOIDCServiceException.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/enums.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/enums.js new file mode 100644 index 0000000..aab18c9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/enums.js @@ -0,0 +1,9 @@ +export const AccessDeniedExceptionReason = { + KMS_ACCESS_DENIED: "KMS_AccessDeniedException", +}; +export const InvalidRequestExceptionReason = { + KMS_DISABLED_KEY: "KMS_DisabledException", + KMS_INVALID_KEY_USAGE: "KMS_InvalidKeyUsageException", + KMS_INVALID_STATE: "KMS_InvalidStateException", + KMS_KEY_NOT_FOUND: "KMS_NotFoundException", +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/errors.js new file mode 100644 index 0000000..be72c7f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/errors.js @@ -0,0 +1,181 @@ +import { SSOOIDCServiceException as __BaseException } from "./SSOOIDCServiceException"; +export class AccessDeniedException extends __BaseException { + name = "AccessDeniedException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDeniedException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } +} +export class AuthorizationPendingException extends __BaseException { + name = "AuthorizationPendingException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "AuthorizationPendingException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AuthorizationPendingException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class ExpiredTokenException extends __BaseException { + name = "ExpiredTokenException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExpiredTokenException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class InternalServerException extends __BaseException { + name = "InternalServerException"; + $fault = "server"; + error; + error_description; + constructor(opts) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalServerException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class InvalidClientException extends __BaseException { + name = "InvalidClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidClientException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class InvalidGrantException extends __BaseException { + name = "InvalidGrantException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidGrantException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidGrantException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class InvalidRequestException extends __BaseException { + name = "InvalidRequestException"; + $fault = "client"; + error; + reason; + error_description; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequestException.prototype); + this.error = opts.error; + this.reason = opts.reason; + this.error_description = opts.error_description; + } +} +export class InvalidScopeException extends __BaseException { + name = "InvalidScopeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "InvalidScopeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidScopeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class SlowDownException extends __BaseException { + name = "SlowDownException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "SlowDownException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, SlowDownException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class UnauthorizedClientException extends __BaseException { + name = "UnauthorizedClientException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnauthorizedClientException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnauthorizedClientException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} +export class UnsupportedGrantTypeException extends __BaseException { + name = "UnsupportedGrantTypeException"; + $fault = "client"; + error; + error_description; + constructor(opts) { + super({ + name: "UnsupportedGrantTypeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnsupportedGrantTypeException.prototype); + this.error = opts.error; + this.error_description = opts.error_description; + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js new file mode 100644 index 0000000..d147235 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.browser.js @@ -0,0 +1,33 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js new file mode 100644 index 0000000..95d5f98 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.js @@ -0,0 +1,49 @@ +import packageInfo from "../../../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core/client"; +import { NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core/httpAuthSchemes"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.native.js new file mode 100644 index 0000000..0b54695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js new file mode 100644 index 0000000..3692996 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeConfig.shared.js @@ -0,0 +1,45 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultSSOOIDCHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSSOOIDCHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.ssooidc", + errorTypeRegistries, + version: "2019-06-10", + serviceTarget: "AWSSSOOIDCService", + }, + serviceId: config?.serviceId ?? "SSO OIDC", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js new file mode 100644 index 0000000..5b29695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/schemas/schemas_0.js new file mode 100644 index 0000000..a059db5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/schemas/schemas_0.js @@ -0,0 +1,137 @@ +const _ADE = "AccessDeniedException"; +const _APE = "AuthorizationPendingException"; +const _AT = "AccessToken"; +const _CS = "ClientSecret"; +const _CT = "CreateToken"; +const _CTR = "CreateTokenRequest"; +const _CTRr = "CreateTokenResponse"; +const _CV = "CodeVerifier"; +const _ETE = "ExpiredTokenException"; +const _ICE = "InvalidClientException"; +const _IGE = "InvalidGrantException"; +const _IRE = "InvalidRequestException"; +const _ISE = "InternalServerException"; +const _ISEn = "InvalidScopeException"; +const _IT = "IdToken"; +const _RT = "RefreshToken"; +const _SDE = "SlowDownException"; +const _UCE = "UnauthorizedClientException"; +const _UGTE = "UnsupportedGrantTypeException"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cS = "clientSecret"; +const _cV = "codeVerifier"; +const _co = "code"; +const _dC = "deviceCode"; +const _e = "error"; +const _eI = "expiresIn"; +const _ed = "error_description"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _r = "reason"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc"; +const _sc = "scope"; +const _se = "server"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.ssooidc"; +import { TypeRegistry } from "@smithy/core/schema"; +import { AccessDeniedException, AuthorizationPendingException, ExpiredTokenException, InternalServerException, InvalidClientException, InvalidGrantException, InvalidRequestException, InvalidScopeException, SlowDownException, UnauthorizedClientException, UnsupportedGrantTypeException, } from "../models/errors"; +import { SSOOIDCServiceException } from "../models/SSOOIDCServiceException"; +const _s_registry = TypeRegistry.for(_s); +export var SSOOIDCServiceException$ = [-3, _s, "SSOOIDCServiceException", 0, [], []]; +_s_registry.registerError(SSOOIDCServiceException$, SSOOIDCServiceException); +const n0_registry = TypeRegistry.for(n0); +export var AccessDeniedException$ = [ + -3, + n0, + _ADE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0], +]; +n0_registry.registerError(AccessDeniedException$, AccessDeniedException); +export var AuthorizationPendingException$ = [ + -3, + n0, + _APE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(AuthorizationPendingException$, AuthorizationPendingException); +export var ExpiredTokenException$ = [-3, n0, _ETE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(ExpiredTokenException$, ExpiredTokenException); +export var InternalServerException$ = [-3, n0, _ISE, { [_e]: _se, [_hE]: 500 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(InternalServerException$, InternalServerException); +export var InvalidClientException$ = [-3, n0, _ICE, { [_e]: _c, [_hE]: 401 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(InvalidClientException$, InvalidClientException); +export var InvalidGrantException$ = [-3, n0, _IGE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(InvalidGrantException$, InvalidGrantException); +export var InvalidRequestException$ = [ + -3, + n0, + _IRE, + { [_e]: _c, [_hE]: 400 }, + [_e, _r, _ed], + [0, 0, 0], +]; +n0_registry.registerError(InvalidRequestException$, InvalidRequestException); +export var InvalidScopeException$ = [-3, n0, _ISEn, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(InvalidScopeException$, InvalidScopeException); +export var SlowDownException$ = [-3, n0, _SDE, { [_e]: _c, [_hE]: 400 }, [_e, _ed], [0, 0]]; +n0_registry.registerError(SlowDownException$, SlowDownException); +export var UnauthorizedClientException$ = [ + -3, + n0, + _UCE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(UnauthorizedClientException$, UnauthorizedClientException); +export var UnsupportedGrantTypeException$ = [ + -3, + n0, + _UGTE, + { [_e]: _c, [_hE]: 400 }, + [_e, _ed], + [0, 0], +]; +n0_registry.registerError(UnsupportedGrantTypeException$, UnsupportedGrantTypeException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var AccessToken = [0, n0, _AT, 8, 0]; +var ClientSecret = [0, n0, _CS, 8, 0]; +var CodeVerifier = [0, n0, _CV, 8, 0]; +var IdToken = [0, n0, _IT, 8, 0]; +var RefreshToken = [0, n0, _RT, 8, 0]; +export var CreateTokenRequest$ = [ + 3, + n0, + _CTR, + 0, + [_cI, _cS, _gT, _dC, _co, _rT, _sc, _rU, _cV], + [0, [() => ClientSecret, 0], 0, 0, 0, [() => RefreshToken, 0], 64 | 0, 0, [() => CodeVerifier, 0]], + 3, +]; +export var CreateTokenResponse$ = [ + 3, + n0, + _CTRr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [[() => AccessToken, 0], 0, 1, [() => RefreshToken, 0], [() => IdToken, 0]], +]; +var Scopes = 64 | 0; +export var CreateToken$ = [ + 9, + n0, + _CT, + { [_h]: ["POST", "/token", 200] }, + () => CreateTokenRequest$, + () => CreateTokenResponse$, +]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSO.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSO.js new file mode 100644 index 0000000..e174534 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSO.js @@ -0,0 +1,9 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { GetRoleCredentialsCommand, } from "./commands/GetRoleCredentialsCommand"; +import { SSOClient } from "./SSOClient"; +const commands = { + GetRoleCredentialsCommand, +}; +export class SSO extends SSOClient { +} +createAggregatedClient(commands, SSO); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js new file mode 100644 index 0000000..de3ffa9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/SSOClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultSSOHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters, } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class SSOClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSSOHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthExtensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 0000000..2ba1d48 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..c169333 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/auth/httpAuthSchemeProvider.js @@ -0,0 +1,50 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core/httpAuthSchemes"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +export const defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "awsssoportal", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultSSOHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "GetRoleCredentials": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js new file mode 100644 index 0000000..9554e71 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/GetRoleCredentialsCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { GetRoleCredentials$ } from "../schemas/schemas_0"; +export { $Command }; +export class GetRoleCredentialsCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("SWBPortalService", "GetRoleCredentials", {}) + .n("SSOClient", "GetRoleCredentialsCommand") + .sc(GetRoleCredentials$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/index.js new file mode 100644 index 0000000..69ba055 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/commands/index.js @@ -0,0 +1 @@ +export * from "./GetRoleCredentialsCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/EndpointParameters.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/EndpointParameters.js new file mode 100644 index 0000000..77e34f8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/EndpointParameters.js @@ -0,0 +1,13 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "awsssoportal", + }); +}; +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js new file mode 100644 index 0000000..0ac15bc --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/ruleset.js new file mode 100644 index 0000000..ed10044 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/ruleset.js @@ -0,0 +1,103 @@ +const u = "required", v = "fn", w = "argv", x = "ref"; +const a = true, b = "isSet", c = "booleanEquals", d = "error", e = "endpoint", f = "tree", g = "PartitionResult", h = "getAttr", i = { [u]: false, type: "string" }, j = { [u]: true, default: false, type: "boolean" }, k = { [x]: "Endpoint" }, l = { [v]: c, [w]: [{ [x]: "UseFIPS" }, true] }, m = { [v]: c, [w]: [{ [x]: "UseDualStack" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, "supportsFIPS"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, "supportsDualStack"] }] }, r = [l], s = [m], t = [{ [x]: "Region" }]; +const _data = { + version: "1.0", + parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, + rules: [ + { + conditions: [{ [v]: b, [w]: [k] }], + rules: [ + { conditions: r, error: "Invalid Configuration: FIPS and custom endpoint are not supported", type: d }, + { conditions: s, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", type: d }, + { endpoint: { url: k, properties: n, headers: n }, type: e }, + ], + type: f, + }, + { + conditions: [{ [v]: b, [w]: t }], + rules: [ + { + conditions: [{ [v]: "aws.partition", [w]: t, assign: g }], + rules: [ + { + conditions: [l, m], + rules: [ + { + conditions: [{ [v]: c, [w]: [a, o] }, q], + rules: [ + { + endpoint: { + url: "https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", type: d }, + ], + type: f, + }, + { + conditions: r, + rules: [ + { + conditions: [{ [v]: c, [w]: [o, a] }], + rules: [ + { + conditions: [{ [v]: "stringEquals", [w]: [{ [v]: h, [w]: [p, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://portal.sso.{Region}.amazonaws.com", properties: n, headers: n }, + type: e, + }, + { + endpoint: { + url: "https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "FIPS is enabled but this partition does not support FIPS", type: d }, + ], + type: f, + }, + { + conditions: s, + rules: [ + { + conditions: [q], + rules: [ + { + endpoint: { + url: "https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: n, + headers: n, + }, + type: e, + }, + ], + type: f, + }, + { error: "DualStack is enabled but this partition does not support DualStack", type: d }, + ], + type: f, + }, + { + endpoint: { url: "https://portal.sso.{Region}.{PartitionResult#dnsSuffix}", properties: n, headers: n }, + type: e, + }, + ], + type: f, + }, + ], + type: f, + }, + { error: "Invalid Configuration: Missing Region", type: d }, + ], +}; +export const ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/extensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/extensionConfiguration.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js new file mode 100644 index 0000000..3838fb8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/index.js @@ -0,0 +1,7 @@ +export * from "./SSOClient"; +export * from "./SSO"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOServiceException } from "./models/SSOServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/SSOServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/SSOServiceException.js new file mode 100644 index 0000000..fa5d8fb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/SSOServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class SSOServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, SSOServiceException.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/errors.js new file mode 100644 index 0000000..81e418a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/errors.js @@ -0,0 +1,49 @@ +import { SSOServiceException as __BaseException } from "./SSOServiceException"; +export class InvalidRequestException extends __BaseException { + name = "InvalidRequestException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidRequestException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidRequestException.prototype); + } +} +export class ResourceNotFoundException extends __BaseException { + name = "ResourceNotFoundException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ResourceNotFoundException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ResourceNotFoundException.prototype); + } +} +export class TooManyRequestsException extends __BaseException { + name = "TooManyRequestsException"; + $fault = "client"; + constructor(opts) { + super({ + name: "TooManyRequestsException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsException.prototype); + } +} +export class UnauthorizedException extends __BaseException { + name = "UnauthorizedException"; + $fault = "client"; + constructor(opts) { + super({ + name: "UnauthorizedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, UnauthorizedException.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/models_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/models_0.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js new file mode 100644 index 0000000..d147235 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.browser.js @@ -0,0 +1,33 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js new file mode 100644 index 0000000..95d5f98 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.js @@ -0,0 +1,49 @@ +import packageInfo from "../../../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core/client"; +import { NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core/httpAuthSchemes"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.native.js new file mode 100644 index 0000000..0b54695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js new file mode 100644 index 0000000..c6ff386 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeConfig.shared.js @@ -0,0 +1,45 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultSSOHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2019-06-10", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSSOHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsRestJsonProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sso", + errorTypeRegistries, + version: "2019-06-10", + serviceTarget: "SWBPortalService", + }, + serviceId: config?.serviceId ?? "SSO", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js new file mode 100644 index 0000000..5b29695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/schemas/schemas_0.js new file mode 100644 index 0000000..f0be39c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/schemas/schemas_0.js @@ -0,0 +1,87 @@ +const _ATT = "AccessTokenType"; +const _GRC = "GetRoleCredentials"; +const _GRCR = "GetRoleCredentialsRequest"; +const _GRCRe = "GetRoleCredentialsResponse"; +const _IRE = "InvalidRequestException"; +const _RC = "RoleCredentials"; +const _RNFE = "ResourceNotFoundException"; +const _SAKT = "SecretAccessKeyType"; +const _STT = "SessionTokenType"; +const _TMRE = "TooManyRequestsException"; +const _UE = "UnauthorizedException"; +const _aI = "accountId"; +const _aKI = "accessKeyId"; +const _aT = "accessToken"; +const _ai = "account_id"; +const _c = "client"; +const _e = "error"; +const _ex = "expiration"; +const _h = "http"; +const _hE = "httpError"; +const _hH = "httpHeader"; +const _hQ = "httpQuery"; +const _m = "message"; +const _rC = "roleCredentials"; +const _rN = "roleName"; +const _rn = "role_name"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sso"; +const _sAK = "secretAccessKey"; +const _sT = "sessionToken"; +const _xasbt = "x-amz-sso_bearer_token"; +const n0 = "com.amazonaws.sso"; +import { TypeRegistry } from "@smithy/core/schema"; +import { InvalidRequestException, ResourceNotFoundException, TooManyRequestsException, UnauthorizedException, } from "../models/errors"; +import { SSOServiceException } from "../models/SSOServiceException"; +const _s_registry = TypeRegistry.for(_s); +export var SSOServiceException$ = [-3, _s, "SSOServiceException", 0, [], []]; +_s_registry.registerError(SSOServiceException$, SSOServiceException); +const n0_registry = TypeRegistry.for(n0); +export var InvalidRequestException$ = [-3, n0, _IRE, { [_e]: _c, [_hE]: 400 }, [_m], [0]]; +n0_registry.registerError(InvalidRequestException$, InvalidRequestException); +export var ResourceNotFoundException$ = [-3, n0, _RNFE, { [_e]: _c, [_hE]: 404 }, [_m], [0]]; +n0_registry.registerError(ResourceNotFoundException$, ResourceNotFoundException); +export var TooManyRequestsException$ = [-3, n0, _TMRE, { [_e]: _c, [_hE]: 429 }, [_m], [0]]; +n0_registry.registerError(TooManyRequestsException$, TooManyRequestsException); +export var UnauthorizedException$ = [-3, n0, _UE, { [_e]: _c, [_hE]: 401 }, [_m], [0]]; +n0_registry.registerError(UnauthorizedException$, UnauthorizedException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var AccessTokenType = [0, n0, _ATT, 8, 0]; +var SecretAccessKeyType = [0, n0, _SAKT, 8, 0]; +var SessionTokenType = [0, n0, _STT, 8, 0]; +export var GetRoleCredentialsRequest$ = [ + 3, + n0, + _GRCR, + 0, + [_rN, _aI, _aT], + [ + [0, { [_hQ]: _rn }], + [0, { [_hQ]: _ai }], + [() => AccessTokenType, { [_hH]: _xasbt }], + ], + 3, +]; +export var GetRoleCredentialsResponse$ = [ + 3, + n0, + _GRCRe, + 0, + [_rC], + [[() => RoleCredentials$, 0]], +]; +export var RoleCredentials$ = [ + 3, + n0, + _RC, + 0, + [_aKI, _sAK, _sT, _ex], + [0, [() => SecretAccessKeyType, 0], [() => SessionTokenType, 0], 1], +]; +export var GetRoleCredentials$ = [ + 9, + n0, + _GRC, + { [_h]: ["GET", "/federation/credentials", 200] }, + () => GetRoleCredentialsRequest$, + () => GetRoleCredentialsResponse$, +]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js new file mode 100644 index 0000000..eee7e54 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STS.js @@ -0,0 +1,11 @@ +import { createAggregatedClient } from "@smithy/smithy-client"; +import { AssumeRoleCommand, } from "./commands/AssumeRoleCommand"; +import { AssumeRoleWithWebIdentityCommand, } from "./commands/AssumeRoleWithWebIdentityCommand"; +import { STSClient } from "./STSClient"; +const commands = { + AssumeRoleCommand, + AssumeRoleWithWebIdentityCommand, +}; +export class STS extends STSClient { +} +createAggregatedClient(commands, STS); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js new file mode 100644 index 0000000..86ede13 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js @@ -0,0 +1,50 @@ +import { getHostHeaderPlugin, resolveHostHeaderConfig, } from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { getUserAgentPlugin, resolveUserAgentConfig, } from "@aws-sdk/middleware-user-agent"; +import { resolveRegionConfig } from "@smithy/config-resolver"; +import { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { resolveEndpointConfig, } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, } from "@smithy/middleware-retry"; +import { Client as __Client, } from "@smithy/smithy-client"; +import { defaultSTSHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { resolveClientEndpointParameters, } from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions } from "./runtimeExtensions"; +export { __Client }; +export class STSClient extends __Client { + config; + constructor(...[configuration]) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSTSHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + })); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + destroy() { + super.destroy(); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js new file mode 100644 index 0000000..2ba1d48 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthExtensionConfiguration.js @@ -0,0 +1,38 @@ +export const getHttpAuthExtensionConfiguration = (runtimeConfig) => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme) { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } + else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes() { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider) { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider() { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials) { + _credentials = credentials; + }, + credentials() { + return _credentials; + }, + }; +}; +export const resolveHttpAuthRuntimeConfig = (config) => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js new file mode 100644 index 0000000..a827d2e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js @@ -0,0 +1,55 @@ +import { resolveAwsSdkSigV4Config } from "@aws-sdk/core/httpAuthSchemes"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; +import { STSClient } from "../STSClient"; +export const defaultSTSHttpAuthSchemeParametersProvider = async (config, context, input) => { + return { + operation: getSmithyContext(context).operation, + region: (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; +function createAwsAuthSigv4HttpAuthOption(authParameters) { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "sts", + region: authParameters.region, + }, + propertiesExtractor: (config, context) => ({ + signingProperties: { + config, + context, + }, + }), + }; +} +function createSmithyApiNoAuthHttpAuthOption(authParameters) { + return { + schemeId: "smithy.api#noAuth", + }; +} +export const defaultSTSHttpAuthSchemeProvider = (authParameters) => { + const options = []; + switch (authParameters.operation) { + case "AssumeRoleWithWebIdentity": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; +export const resolveStsAuthConfig = (input) => Object.assign(input, { + stsClientCtor: STSClient, +}); +export const resolveHttpAuthSchemeConfig = (config) => { + const config_0 = resolveStsAuthConfig(config); + const config_1 = resolveAwsSdkSigV4Config(config_0); + return Object.assign(config_1, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js new file mode 100644 index 0000000..c8d64b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { AssumeRole$ } from "../schemas/schemas_0"; +export { $Command }; +export class AssumeRoleCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSecurityTokenServiceV20110615", "AssumeRole", {}) + .n("STSClient", "AssumeRoleCommand") + .sc(AssumeRole$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js new file mode 100644 index 0000000..d8c551e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.js @@ -0,0 +1,16 @@ +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { AssumeRoleWithWebIdentity$ } from "../schemas/schemas_0"; +export { $Command }; +export class AssumeRoleWithWebIdentityCommand extends $Command + .classBuilder() + .ep(commonParams) + .m(function (Command, cs, config, o) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; +}) + .s("AWSSecurityTokenServiceV20110615", "AssumeRoleWithWebIdentity", {}) + .n("STSClient", "AssumeRoleWithWebIdentityCommand") + .sc(AssumeRoleWithWebIdentity$) + .build() { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js new file mode 100644 index 0000000..0f200f5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/commands/index.js @@ -0,0 +1,2 @@ +export * from "./AssumeRoleCommand"; +export * from "./AssumeRoleWithWebIdentityCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js new file mode 100644 index 0000000..aafb8c4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultRoleAssumers.js @@ -0,0 +1,22 @@ +import { getDefaultRoleAssumer as StsGetDefaultRoleAssumer, getDefaultRoleAssumerWithWebIdentity as StsGetDefaultRoleAssumerWithWebIdentity, } from "./defaultStsRoleAssumers"; +import { STSClient } from "./STSClient"; +const getCustomizableStsClientCtor = (baseCtor, customizations) => { + if (!customizations) + return baseCtor; + else + return class CustomizableSTSClient extends baseCtor { + constructor(config) { + super(config); + for (const customization of customizations) { + this.middlewareStack.use(customization); + } + } + }; +}; +export const getDefaultRoleAssumer = (stsOptions = {}, stsPlugins) => StsGetDefaultRoleAssumer(stsOptions, getCustomizableStsClientCtor(STSClient, stsPlugins)); +export const getDefaultRoleAssumerWithWebIdentity = (stsOptions = {}, stsPlugins) => StsGetDefaultRoleAssumerWithWebIdentity(stsOptions, getCustomizableStsClientCtor(STSClient, stsPlugins)); +export const decorateDefaultCredentialProvider = (provider) => (input) => provider({ + roleAssumer: getDefaultRoleAssumer(input), + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity(input), + ...input, +}); diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js new file mode 100644 index 0000000..befc3b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/defaultStsRoleAssumers.js @@ -0,0 +1,107 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { stsRegionDefaultResolver } from "@aws-sdk/region-config-resolver"; +import { AssumeRoleCommand } from "./commands/AssumeRoleCommand"; +import { AssumeRoleWithWebIdentityCommand } from "./commands/AssumeRoleWithWebIdentityCommand"; +const getAccountIdFromAssumedRoleUser = (assumedRoleUser) => { + if (typeof assumedRoleUser?.Arn === "string") { + const arnComponents = assumedRoleUser.Arn.split(":"); + if (arnComponents.length > 4 && arnComponents[4] !== "") { + return arnComponents[4]; + } + } + return undefined; +}; +const resolveRegion = async (_region, _parentRegion, credentialProviderLogger, loaderConfig = {}) => { + const region = typeof _region === "function" ? await _region() : _region; + const parentRegion = typeof _parentRegion === "function" ? await _parentRegion() : _parentRegion; + let stsDefaultRegion = ""; + const resolvedRegion = region ?? parentRegion ?? (stsDefaultRegion = await stsRegionDefaultResolver(loaderConfig)()); + credentialProviderLogger?.debug?.("@aws-sdk/client-sts::resolveRegion", "accepting first of:", `${region} (credential provider clientConfig)`, `${parentRegion} (contextual client)`, `${stsDefaultRegion} (STS default: AWS_REGION, profile region, or us-east-1)`); + return resolvedRegion; +}; +export const getDefaultRoleAssumer = (stsOptions, STSClient) => { + let stsClient; + let closureSourceCreds; + return async (sourceCreds, params) => { + closureSourceCreds = sourceCreds; + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId, } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile, + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient({ + ...stsOptions, + userAgentAppId, + profile, + credentialDefaultProvider: () => async () => closureSourceCreds, + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : undefined, + logger: logger, + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...(Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }), + ...(accountId && { accountId }), + }; + setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE", "i"); + return credentials; + }; +}; +export const getDefaultRoleAssumerWithWebIdentity = (stsOptions, STSClient) => { + let stsClient; + return async (params) => { + if (!stsClient) { + const { logger = stsOptions?.parentClientConfig?.logger, profile = stsOptions?.parentClientConfig?.profile, region, requestHandler = stsOptions?.parentClientConfig?.requestHandler, credentialProviderLogger, userAgentAppId = stsOptions?.parentClientConfig?.userAgentAppId, } = stsOptions; + const resolvedRegion = await resolveRegion(region, stsOptions?.parentClientConfig?.region, credentialProviderLogger, { + logger, + profile, + }); + const isCompatibleRequestHandler = !isH2(requestHandler); + stsClient = new STSClient({ + ...stsOptions, + userAgentAppId, + profile, + region: resolvedRegion, + requestHandler: isCompatibleRequestHandler ? requestHandler : undefined, + logger: logger, + }); + } + const { Credentials, AssumedRoleUser } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params)); + if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) { + throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`); + } + const accountId = getAccountIdFromAssumedRoleUser(AssumedRoleUser); + const credentials = { + accessKeyId: Credentials.AccessKeyId, + secretAccessKey: Credentials.SecretAccessKey, + sessionToken: Credentials.SessionToken, + expiration: Credentials.Expiration, + ...(Credentials.CredentialScope && { credentialScope: Credentials.CredentialScope }), + ...(accountId && { accountId }), + }; + if (accountId) { + setCredentialFeature(credentials, "RESOLVED_ACCOUNT_ID", "T"); + } + setCredentialFeature(credentials, "CREDENTIALS_STS_ASSUME_ROLE_WEB_ID", "k"); + return credentials; + }; +}; +export const decorateDefaultCredentialProvider = (provider) => (input) => provider({ + roleAssumer: getDefaultRoleAssumer(input, input.stsClientCtor), + roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity(input, input.stsClientCtor), + ...input, +}); +const isH2 = (requestHandler) => { + return requestHandler?.metadata?.handlerProtocol === "h2"; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js new file mode 100644 index 0000000..1c74b01 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/EndpointParameters.js @@ -0,0 +1,15 @@ +export const resolveClientEndpointParameters = (options) => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + useGlobalEndpoint: options.useGlobalEndpoint ?? false, + defaultSigningName: "sts", + }); +}; +export const commonParams = { + UseGlobalEndpoint: { type: "builtInParams", name: "useGlobalEndpoint" }, + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js new file mode 100644 index 0000000..f54d279 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js @@ -0,0 +1,14 @@ +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { customEndpointFunctions, EndpointCache, resolveEndpoint } from "@smithy/util-endpoints"; +import { ruleSet } from "./ruleset"; +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS", "UseGlobalEndpoint"], +}); +export const defaultEndpointResolver = (endpointParams, context = {}) => { + return cache.get(endpointParams, () => resolveEndpoint(ruleSet, { + endpointParams: endpointParams, + logger: context.logger, + })); +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/ruleset.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/ruleset.js new file mode 100644 index 0000000..1eedbbd --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/ruleset.js @@ -0,0 +1,142 @@ +const F = "required", G = "type", H = "fn", I = "argv", J = "ref"; +const a = false, b = true, c = "booleanEquals", d = "stringEquals", e = "sigv4", f = "sts", g = "us-east-1", h = "endpoint", i = "https://sts.{Region}.{PartitionResult#dnsSuffix}", j = "tree", k = "error", l = "getAttr", m = { [F]: false, [G]: "string" }, n = { [F]: true, default: false, [G]: "boolean" }, o = { [J]: "Endpoint" }, p = { [H]: "isSet", [I]: [{ [J]: "Region" }] }, q = { [J]: "Region" }, r = { [H]: "aws.partition", [I]: [q], assign: "PartitionResult" }, s = { [J]: "UseFIPS" }, t = { [J]: "UseDualStack" }, u = { + url: "https://sts.amazonaws.com", + properties: { authSchemes: [{ name: e, signingName: f, signingRegion: g }] }, + headers: {}, +}, v = {}, w = { conditions: [{ [H]: d, [I]: [q, "aws-global"] }], [h]: u, [G]: h }, x = { [H]: c, [I]: [s, true] }, y = { [H]: c, [I]: [t, true] }, z = { [H]: l, [I]: [{ [J]: "PartitionResult" }, "supportsFIPS"] }, A = { [J]: "PartitionResult" }, B = { [H]: c, [I]: [true, { [H]: l, [I]: [A, "supportsDualStack"] }] }, C = [{ [H]: "isSet", [I]: [o] }], D = [x], E = [y]; +const _data = { + version: "1.0", + parameters: { Region: m, UseDualStack: n, UseFIPS: n, Endpoint: m, UseGlobalEndpoint: n }, + rules: [ + { + conditions: [ + { [H]: c, [I]: [{ [J]: "UseGlobalEndpoint" }, b] }, + { [H]: "not", [I]: C }, + p, + r, + { [H]: c, [I]: [s, a] }, + { [H]: c, [I]: [t, a] }, + ], + rules: [ + { conditions: [{ [H]: d, [I]: [q, "ap-northeast-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-south-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-southeast-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "ap-southeast-2"] }], endpoint: u, [G]: h }, + w, + { conditions: [{ [H]: d, [I]: [q, "ca-central-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-central-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-north-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-2"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "eu-west-3"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "sa-east-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, g] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-east-2"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-west-1"] }], endpoint: u, [G]: h }, + { conditions: [{ [H]: d, [I]: [q, "us-west-2"] }], endpoint: u, [G]: h }, + { + endpoint: { + url: i, + properties: { authSchemes: [{ name: e, signingName: f, signingRegion: "{Region}" }] }, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { + conditions: C, + rules: [ + { conditions: D, error: "Invalid Configuration: FIPS and custom endpoint are not supported", [G]: k }, + { conditions: E, error: "Invalid Configuration: Dualstack and custom endpoint are not supported", [G]: k }, + { endpoint: { url: o, properties: v, headers: v }, [G]: h }, + ], + [G]: j, + }, + { + conditions: [p], + rules: [ + { + conditions: [r], + rules: [ + { + conditions: [x, y], + rules: [ + { + conditions: [{ [H]: c, [I]: [b, z] }, B], + rules: [ + { + endpoint: { + url: "https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "FIPS and DualStack are enabled, but this partition does not support one or both", [G]: k }, + ], + [G]: j, + }, + { + conditions: D, + rules: [ + { + conditions: [{ [H]: c, [I]: [z, b] }], + rules: [ + { + conditions: [{ [H]: d, [I]: [{ [H]: l, [I]: [A, "name"] }, "aws-us-gov"] }], + endpoint: { url: "https://sts.{Region}.amazonaws.com", properties: v, headers: v }, + [G]: h, + }, + { + endpoint: { + url: "https://sts-fips.{Region}.{PartitionResult#dnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "FIPS is enabled but this partition does not support FIPS", [G]: k }, + ], + [G]: j, + }, + { + conditions: E, + rules: [ + { + conditions: [B], + rules: [ + { + endpoint: { + url: "https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}", + properties: v, + headers: v, + }, + [G]: h, + }, + ], + [G]: j, + }, + { error: "DualStack is enabled but this partition does not support DualStack", [G]: k }, + ], + [G]: j, + }, + w, + { endpoint: { url: i, properties: v, headers: v }, [G]: h }, + ], + [G]: j, + }, + ], + [G]: j, + }, + { error: "Invalid Configuration: Missing Region", [G]: k }, + ], +}; +export const ruleSet = _data; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/extensionConfiguration.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/extensionConfiguration.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/extensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js new file mode 100644 index 0000000..b77613a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/index.js @@ -0,0 +1,8 @@ +export * from "./STSClient"; +export * from "./STS"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export * from "./defaultRoleAssumers"; +export { STSServiceException } from "./models/STSServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js new file mode 100644 index 0000000..6d2963c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/STSServiceException.js @@ -0,0 +1,8 @@ +import { ServiceException as __ServiceException, } from "@smithy/smithy-client"; +export { __ServiceException }; +export class STSServiceException extends __ServiceException { + constructor(options) { + super(options); + Object.setPrototypeOf(this, STSServiceException.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/errors.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/errors.js new file mode 100644 index 0000000..d3447c2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/errors.js @@ -0,0 +1,85 @@ +import { STSServiceException as __BaseException } from "./STSServiceException"; +export class ExpiredTokenException extends __BaseException { + name = "ExpiredTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "ExpiredTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ExpiredTokenException.prototype); + } +} +export class MalformedPolicyDocumentException extends __BaseException { + name = "MalformedPolicyDocumentException"; + $fault = "client"; + constructor(opts) { + super({ + name: "MalformedPolicyDocumentException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, MalformedPolicyDocumentException.prototype); + } +} +export class PackedPolicyTooLargeException extends __BaseException { + name = "PackedPolicyTooLargeException"; + $fault = "client"; + constructor(opts) { + super({ + name: "PackedPolicyTooLargeException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, PackedPolicyTooLargeException.prototype); + } +} +export class RegionDisabledException extends __BaseException { + name = "RegionDisabledException"; + $fault = "client"; + constructor(opts) { + super({ + name: "RegionDisabledException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, RegionDisabledException.prototype); + } +} +export class IDPRejectedClaimException extends __BaseException { + name = "IDPRejectedClaimException"; + $fault = "client"; + constructor(opts) { + super({ + name: "IDPRejectedClaimException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IDPRejectedClaimException.prototype); + } +} +export class InvalidIdentityTokenException extends __BaseException { + name = "InvalidIdentityTokenException"; + $fault = "client"; + constructor(opts) { + super({ + name: "InvalidIdentityTokenException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, InvalidIdentityTokenException.prototype); + } +} +export class IDPCommunicationErrorException extends __BaseException { + name = "IDPCommunicationErrorException"; + $fault = "client"; + constructor(opts) { + super({ + name: "IDPCommunicationErrorException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, IDPCommunicationErrorException.prototype); + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/models_0.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js new file mode 100644 index 0000000..2102cbd --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.browser.js @@ -0,0 +1,34 @@ +import packageInfo from "../../../package.json"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error("Credential is missing"))), + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js new file mode 100644 index 0000000..68c9bec --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js @@ -0,0 +1,63 @@ +import packageInfo from "../../../package.json"; +import { emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core/client"; +import { AwsSdkSigV4Signer, NODE_AUTH_SCHEME_PREFERENCE_OPTIONS } from "@aws-sdk/core/httpAuthSchemes"; +import { createDefaultUserAgentProvider, NODE_APP_ID_CONFIG_OPTIONS } from "@aws-sdk/util-user-agent-node"; +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS, NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, } from "@smithy/config-resolver"; +import { NoAuthSigner } from "@smithy/core"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { emitWarningIfUnsupportedVersion, loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +export const getRuntimeConfig = (config) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4") || + (async (idProps) => await config.credentialDefaultProvider(idProps?.__config || {})()), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? + loadNodeConfig({ + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, config), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js new file mode 100644 index 0000000..0b54695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.native.js @@ -0,0 +1,11 @@ +import { Sha256 } from "@aws-crypto/sha256-js"; +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +export const getRuntimeConfig = (config) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js new file mode 100644 index 0000000..00f76f6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js @@ -0,0 +1,46 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsQueryProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { defaultSTSHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { errorTypeRegistries } from "./schemas/schemas_0"; +export const getRuntimeConfig = (config) => { + return { + apiVersion: "2011-06-15", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSTSHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc) => ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? AwsQueryProtocol, + protocolSettings: config?.protocolSettings ?? { + defaultNamespace: "com.amazonaws.sts", + errorTypeRegistries, + xmlNamespace: "https://sts.amazonaws.com/doc/2011-06-15/", + version: "2011-06-15", + serviceTarget: "AWSSecurityTokenServiceV20110615", + }, + serviceId: config?.serviceId ?? "STS", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js new file mode 100644 index 0000000..5b29695 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeExtensions.js @@ -0,0 +1,9 @@ +import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +export const resolveRuntimeExtensions = (runtimeConfig, extensions) => { + const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig)); + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration)); +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/schemas/schemas_0.js b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/schemas/schemas_0.js new file mode 100644 index 0000000..144d0a3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/schemas/schemas_0.js @@ -0,0 +1,192 @@ +const _A = "Arn"; +const _AKI = "AccessKeyId"; +const _AR = "AssumeRole"; +const _ARI = "AssumedRoleId"; +const _ARR = "AssumeRoleRequest"; +const _ARRs = "AssumeRoleResponse"; +const _ARU = "AssumedRoleUser"; +const _ARWWI = "AssumeRoleWithWebIdentity"; +const _ARWWIR = "AssumeRoleWithWebIdentityRequest"; +const _ARWWIRs = "AssumeRoleWithWebIdentityResponse"; +const _Au = "Audience"; +const _C = "Credentials"; +const _CA = "ContextAssertion"; +const _DS = "DurationSeconds"; +const _E = "Expiration"; +const _EI = "ExternalId"; +const _ETE = "ExpiredTokenException"; +const _IDPCEE = "IDPCommunicationErrorException"; +const _IDPRCE = "IDPRejectedClaimException"; +const _IITE = "InvalidIdentityTokenException"; +const _K = "Key"; +const _MPDE = "MalformedPolicyDocumentException"; +const _P = "Policy"; +const _PA = "PolicyArns"; +const _PAr = "ProviderArn"; +const _PC = "ProvidedContexts"; +const _PCLT = "ProvidedContextsListType"; +const _PCr = "ProvidedContext"; +const _PDT = "PolicyDescriptorType"; +const _PI = "ProviderId"; +const _PPS = "PackedPolicySize"; +const _PPTLE = "PackedPolicyTooLargeException"; +const _Pr = "Provider"; +const _RA = "RoleArn"; +const _RDE = "RegionDisabledException"; +const _RSN = "RoleSessionName"; +const _SAK = "SecretAccessKey"; +const _SFWIT = "SubjectFromWebIdentityToken"; +const _SI = "SourceIdentity"; +const _SN = "SerialNumber"; +const _ST = "SessionToken"; +const _T = "Tags"; +const _TC = "TokenCode"; +const _TTK = "TransitiveTagKeys"; +const _Ta = "Tag"; +const _V = "Value"; +const _WIT = "WebIdentityToken"; +const _a = "arn"; +const _aKST = "accessKeySecretType"; +const _aQE = "awsQueryError"; +const _c = "client"; +const _cTT = "clientTokenType"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _pDLT = "policyDescriptorListType"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sts"; +const _tLT = "tagListType"; +const n0 = "com.amazonaws.sts"; +import { TypeRegistry } from "@smithy/core/schema"; +import { ExpiredTokenException, IDPCommunicationErrorException, IDPRejectedClaimException, InvalidIdentityTokenException, MalformedPolicyDocumentException, PackedPolicyTooLargeException, RegionDisabledException, } from "../models/errors"; +import { STSServiceException } from "../models/STSServiceException"; +const _s_registry = TypeRegistry.for(_s); +export var STSServiceException$ = [-3, _s, "STSServiceException", 0, [], []]; +_s_registry.registerError(STSServiceException$, STSServiceException); +const n0_registry = TypeRegistry.for(n0); +export var ExpiredTokenException$ = [ + -3, + n0, + _ETE, + { [_aQE]: [`ExpiredTokenException`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(ExpiredTokenException$, ExpiredTokenException); +export var IDPCommunicationErrorException$ = [ + -3, + n0, + _IDPCEE, + { [_aQE]: [`IDPCommunicationError`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(IDPCommunicationErrorException$, IDPCommunicationErrorException); +export var IDPRejectedClaimException$ = [ + -3, + n0, + _IDPRCE, + { [_aQE]: [`IDPRejectedClaim`, 403], [_e]: _c, [_hE]: 403 }, + [_m], + [0], +]; +n0_registry.registerError(IDPRejectedClaimException$, IDPRejectedClaimException); +export var InvalidIdentityTokenException$ = [ + -3, + n0, + _IITE, + { [_aQE]: [`InvalidIdentityToken`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(InvalidIdentityTokenException$, InvalidIdentityTokenException); +export var MalformedPolicyDocumentException$ = [ + -3, + n0, + _MPDE, + { [_aQE]: [`MalformedPolicyDocument`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(MalformedPolicyDocumentException$, MalformedPolicyDocumentException); +export var PackedPolicyTooLargeException$ = [ + -3, + n0, + _PPTLE, + { [_aQE]: [`PackedPolicyTooLarge`, 400], [_e]: _c, [_hE]: 400 }, + [_m], + [0], +]; +n0_registry.registerError(PackedPolicyTooLargeException$, PackedPolicyTooLargeException); +export var RegionDisabledException$ = [ + -3, + n0, + _RDE, + { [_aQE]: [`RegionDisabledException`, 403], [_e]: _c, [_hE]: 403 }, + [_m], + [0], +]; +n0_registry.registerError(RegionDisabledException$, RegionDisabledException); +export const errorTypeRegistries = [_s_registry, n0_registry]; +var accessKeySecretType = [0, n0, _aKST, 8, 0]; +var clientTokenType = [0, n0, _cTT, 8, 0]; +export var AssumedRoleUser$ = [3, n0, _ARU, 0, [_ARI, _A], [0, 0], 2]; +export var AssumeRoleRequest$ = [ + 3, + n0, + _ARR, + 0, + [_RA, _RSN, _PA, _P, _DS, _T, _TTK, _EI, _SN, _TC, _SI, _PC], + [0, 0, () => policyDescriptorListType, 0, 1, () => tagListType, 64 | 0, 0, 0, 0, 0, () => ProvidedContextsListType], + 2, +]; +export var AssumeRoleResponse$ = [ + 3, + n0, + _ARRs, + 0, + [_C, _ARU, _PPS, _SI], + [[() => Credentials$, 0], () => AssumedRoleUser$, 1, 0], +]; +export var AssumeRoleWithWebIdentityRequest$ = [ + 3, + n0, + _ARWWIR, + 0, + [_RA, _RSN, _WIT, _PI, _PA, _P, _DS], + [0, 0, [() => clientTokenType, 0], 0, () => policyDescriptorListType, 0, 1], + 3, +]; +export var AssumeRoleWithWebIdentityResponse$ = [ + 3, + n0, + _ARWWIRs, + 0, + [_C, _SFWIT, _ARU, _PPS, _Pr, _Au, _SI], + [[() => Credentials$, 0], 0, () => AssumedRoleUser$, 1, 0, 0, 0], +]; +export var Credentials$ = [ + 3, + n0, + _C, + 0, + [_AKI, _SAK, _ST, _E], + [0, [() => accessKeySecretType, 0], 0, 4], + 4, +]; +export var PolicyDescriptorType$ = [3, n0, _PDT, 0, [_a], [0]]; +export var ProvidedContext$ = [3, n0, _PCr, 0, [_PAr, _CA], [0, 0]]; +export var Tag$ = [3, n0, _Ta, 0, [_K, _V], [0, 0], 2]; +var policyDescriptorListType = [1, n0, _pDLT, 0, () => PolicyDescriptorType$]; +var ProvidedContextsListType = [1, n0, _PCLT, 0, () => ProvidedContext$]; +var tagKeyListType = 64 | 0; +var tagListType = [1, n0, _tLT, 0, () => Tag$]; +export var AssumeRole$ = [9, n0, _AR, 0, () => AssumeRoleRequest$, () => AssumeRoleResponse$]; +export var AssumeRoleWithWebIdentity$ = [ + 9, + n0, + _ARWWI, + 0, + () => AssumeRoleWithWebIdentityRequest$, + () => AssumeRoleWithWebIdentityResponse$, +]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/index.d.ts new file mode 100644 index 0000000..9d99a73 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/index.d.ts @@ -0,0 +1,7 @@ +/** + * This package exports nothing at the root. + * Use submodules e.g. \@aws-sdk/nested-clients/client-sts. + * + * @internal + */ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentity.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentity.d.ts new file mode 100644 index 0000000..11028a6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentity.d.ts @@ -0,0 +1,38 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { CognitoIdentityClient } from "./CognitoIdentityClient"; +import { type GetCredentialsForIdentityCommandInput, type GetCredentialsForIdentityCommandOutput } from "./commands/GetCredentialsForIdentityCommand"; +import { type GetIdCommandInput, type GetIdCommandOutput } from "./commands/GetIdCommand"; +export interface CognitoIdentity { + /** + * @see {@link GetCredentialsForIdentityCommand} + */ + getCredentialsForIdentity(args: GetCredentialsForIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + getCredentialsForIdentity(args: GetCredentialsForIdentityCommandInput, cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void): void; + getCredentialsForIdentity(args: GetCredentialsForIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void): void; + /** + * @see {@link GetIdCommand} + */ + getId(args: GetIdCommandInput, options?: __HttpHandlerOptions): Promise; + getId(args: GetIdCommandInput, cb: (err: any, data?: GetIdCommandOutput) => void): void; + getId(args: GetIdCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetIdCommandOutput) => void): void; +} +/** + * Amazon Cognito Federated Identities + *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary + * credentials to mobile devices and other untrusted environments. It uniquely identifies a + * device and supplies the user with a consistent identity over the lifetime of an + * application.

+ *

Using Amazon Cognito Federated Identities, you can enable authentication with one or + * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon + * Cognito user pool, and you can also choose to support unauthenticated access from your app. + * Cognito delivers a unique identifier for each user and acts as an OpenID token provider + * trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+ *

For a description of the authentication flow from the Amazon Cognito Developer Guide + * see Authentication + * Flow.

+ *

For more information see Amazon Cognito Federated + * Identities.

+ * @public + */ +export declare class CognitoIdentity extends CognitoIdentityClient implements CognitoIdentity { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentityClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentityClient.d.ts new file mode 100644 index 0000000..ba7ab53 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/CognitoIdentityClient.d.ts @@ -0,0 +1,197 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, Decoder as __Decoder, Encoder as __Encoder, HashConstructor as __HashConstructor, HttpHandlerOptions as __HttpHandlerOptions, Logger as __Logger, Provider as __Provider, StreamCollector as __StreamCollector, UrlParser as __UrlParser, UserAgent as __UserAgent } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { GetCredentialsForIdentityCommandInput, GetCredentialsForIdentityCommandOutput } from "./commands/GetCredentialsForIdentityCommand"; +import type { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +import { type ClientInputEndpointParameters, type ClientResolvedEndpointParameters, type EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = GetCredentialsForIdentityCommandInput | GetIdCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = GetCredentialsForIdentityCommandOutput | GetIdCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: __Provider<__UserAgent>; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type CognitoIdentityClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of CognitoIdentityClient class constructor that set the region, credentials and other options. + */ +export interface CognitoIdentityClientConfig extends CognitoIdentityClientConfigType { +} +/** + * @public + */ +export type CognitoIdentityClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of CognitoIdentityClient class. This is resolved and normalized from the {@link CognitoIdentityClientConfig | constructor configuration interface}. + */ +export interface CognitoIdentityClientResolvedConfig extends CognitoIdentityClientResolvedConfigType { +} +/** + * Amazon Cognito Federated Identities + *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary + * credentials to mobile devices and other untrusted environments. It uniquely identifies a + * device and supplies the user with a consistent identity over the lifetime of an + * application.

+ *

Using Amazon Cognito Federated Identities, you can enable authentication with one or + * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon + * Cognito user pool, and you can also choose to support unauthenticated access from your app. + * Cognito delivers a unique identifier for each user and acts as an OpenID token provider + * trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+ *

For a description of the authentication flow from the Amazon Cognito Developer Guide + * see Authentication + * Flow.

+ *

For more information see Amazon Cognito Federated + * Identities.

+ * @public + */ +export declare class CognitoIdentityClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, CognitoIdentityClientResolvedConfig> { + /** + * The resolved configuration of CognitoIdentityClient class. This is resolved and normalized from the {@link CognitoIdentityClientConfig | constructor configuration interface}. + */ + readonly config: CognitoIdentityClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..022f9f9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,29 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, HttpAuthScheme } from "@smithy/types"; +import type { CognitoIdentityHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): CognitoIdentityHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..f09052e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,75 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core/httpAuthSchemes"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type CognitoIdentityClientResolvedConfig } from "../CognitoIdentityClient"; +/** + * @internal + */ +export interface CognitoIdentityHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface CognitoIdentityHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultCognitoIdentityHttpAuthSchemeParametersProvider: (config: CognitoIdentityClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface CognitoIdentityHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultCognitoIdentityHttpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: CognitoIdentityHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts new file mode 100644 index 0000000..0eecefa --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts @@ -0,0 +1,120 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetCredentialsForIdentityInput, GetCredentialsForIdentityResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetCredentialsForIdentityCommand}. + */ +export interface GetCredentialsForIdentityCommandInput extends GetCredentialsForIdentityInput { +} +/** + * @public + * + * The output of {@link GetCredentialsForIdentityCommand}. + */ +export interface GetCredentialsForIdentityCommandOutput extends GetCredentialsForIdentityResponse, __MetadataBearer { +} +declare const GetCredentialsForIdentityCommand_base: { + new (input: GetCredentialsForIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetCredentialsForIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns credentials for the provided identity ID. Any provided logins will be + * validated against supported login providers. If the token is for + * cognito-identity.amazonaws.com, it will be passed through to Security Token Service with the appropriate role for the token.

+ *

This is a public API. You do not need any credentials to call this API.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetCredentialsForIdentityCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetCredentialsForIdentityCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetCredentialsForIdentityInput + * IdentityId: "STRING_VALUE", // required + * Logins: { // LoginsMap + * "": "STRING_VALUE", + * }, + * CustomRoleArn: "STRING_VALUE", + * }; + * const command = new GetCredentialsForIdentityCommand(input); + * const response = await client.send(command); + * // { // GetCredentialsForIdentityResponse + * // IdentityId: "STRING_VALUE", + * // Credentials: { // Credentials + * // AccessKeyId: "STRING_VALUE", + * // SecretKey: "STRING_VALUE", + * // SessionToken: "STRING_VALUE", + * // Expiration: new Date("TIMESTAMP"), + * // }, + * // }; + * + * ``` + * + * @param GetCredentialsForIdentityCommandInput - {@link GetCredentialsForIdentityCommandInput} + * @returns {@link GetCredentialsForIdentityCommandOutput} + * @see {@link GetCredentialsForIdentityCommandInput} for command's `input` shape. + * @see {@link GetCredentialsForIdentityCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ExternalServiceException} (client fault) + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidIdentityPoolConfigurationException} (client fault) + *

If you provided authentication information in the request, the identity pool has no + * authenticated role configured, or STS returned an error response to the + * request to assume the authenticated role from the identity pool. If you provided no + * authentication information in the request, the identity pool has no unauthenticated role + * configured, or STS returned an error response to the request to assume the + * unauthenticated role from the identity pool.

+ *

Your role trust policy must grant AssumeRoleWithWebIdentity permissions to cognito-identity.amazonaws.com.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetCredentialsForIdentityCommand extends GetCredentialsForIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetCredentialsForIdentityInput; + output: GetCredentialsForIdentityResponse; + }; + sdk: { + input: GetCredentialsForIdentityCommandInput; + output: GetCredentialsForIdentityCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetIdCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetIdCommand.d.ts new file mode 100644 index 0000000..df1f81c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/GetIdCommand.d.ts @@ -0,0 +1,107 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CognitoIdentityClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../CognitoIdentityClient"; +import type { GetIdInput, GetIdResponse } from "../models/models_0"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetIdCommand}. + */ +export interface GetIdCommandInput extends GetIdInput { +} +/** + * @public + * + * The output of {@link GetIdCommand}. + */ +export interface GetIdCommandOutput extends GetIdResponse, __MetadataBearer { +} +declare const GetIdCommand_base: { + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Generates (or retrieves) IdentityID. Supplying multiple logins will create an + * implicit linked account.

+ *

This is a public API. You do not need any credentials to call this API.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { CognitoIdentityClient, GetIdCommand } from "@aws-sdk/client-cognito-identity"; // ES Modules import + * // const { CognitoIdentityClient, GetIdCommand } = require("@aws-sdk/client-cognito-identity"); // CommonJS import + * // import type { CognitoIdentityClientConfig } from "@aws-sdk/client-cognito-identity"; + * const config = {}; // type is CognitoIdentityClientConfig + * const client = new CognitoIdentityClient(config); + * const input = { // GetIdInput + * AccountId: "STRING_VALUE", + * IdentityPoolId: "STRING_VALUE", // required + * Logins: { // LoginsMap + * "": "STRING_VALUE", + * }, + * }; + * const command = new GetIdCommand(input); + * const response = await client.send(command); + * // { // GetIdResponse + * // IdentityId: "STRING_VALUE", + * // }; + * + * ``` + * + * @param GetIdCommandInput - {@link GetIdCommandInput} + * @returns {@link GetIdCommandOutput} + * @see {@link GetIdCommandInput} for command's `input` shape. + * @see {@link GetIdCommandOutput} for command's `response` shape. + * @see {@link CognitoIdentityClientResolvedConfig | config} for CognitoIdentityClient's `config` shape. + * + * @throws {@link ExternalServiceException} (client fault) + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * + * @throws {@link InternalErrorException} (server fault) + *

Thrown when the service encounters an error during processing the request.

+ * + * @throws {@link InvalidParameterException} (client fault) + *

Thrown for missing or bad input parameter(s).

+ * + * @throws {@link LimitExceededException} (client fault) + *

Thrown when the total number of user pools has exceeded a preset limit.

+ * + * @throws {@link NotAuthorizedException} (client fault) + *

Thrown when a user is not authorized to access the requested resource.

+ * + * @throws {@link ResourceConflictException} (client fault) + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Thrown when a request is throttled.

+ * + * @throws {@link CognitoIdentityServiceException} + *

Base exception class for all service exceptions from CognitoIdentity service.

+ * + * + * @public + */ +export declare class GetIdCommand extends GetIdCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetIdInput; + output: GetIdResponse; + }; + sdk: { + input: GetIdCommandInput; + output: GetIdCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/index.d.ts new file mode 100644 index 0000000..dc560a4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/commands/index.d.ts @@ -0,0 +1,2 @@ +export * from "./GetCredentialsForIdentityCommand"; +export * from "./GetIdCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..240d523 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/EndpointParameters.d.ts @@ -0,0 +1,50 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..c1de67d --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4dda20a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/extensionConfiguration.d.ts new file mode 100644 index 0000000..bfdae88 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface CognitoIdentityExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d.ts new file mode 100644 index 0000000..e1a9ca4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/index.d.ts @@ -0,0 +1,29 @@ +/** + * Amazon Cognito Federated Identities + *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary + * credentials to mobile devices and other untrusted environments. It uniquely identifies a + * device and supplies the user with a consistent identity over the lifetime of an + * application.

+ *

Using Amazon Cognito Federated Identities, you can enable authentication with one or + * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon + * Cognito user pool, and you can also choose to support unauthenticated access from your app. + * Cognito delivers a unique identifier for each user and acts as an OpenID token provider + * trusted by Security Token Service (STS) to access temporary, limited-privilege Amazon Web Services credentials.

+ *

For a description of the authentication flow from the Amazon Cognito Developer Guide + * see Authentication + * Flow.

+ *

For more information see Amazon Cognito Federated + * Identities.

+ * + * @packageDocumentation + */ +export * from "./CognitoIdentityClient"; +export * from "./CognitoIdentity"; +export type { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { CognitoIdentityServiceException } from "./models/CognitoIdentityServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts new file mode 100644 index 0000000..20b34eb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from CognitoIdentity service. + */ +export declare class CognitoIdentityServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/errors.d.ts new file mode 100644 index 0000000..f049b08 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/errors.d.ts @@ -0,0 +1,119 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { CognitoIdentityServiceException as __BaseException } from "./CognitoIdentityServiceException"; +/** + *

An exception thrown when a dependent service such as Facebook or Twitter is not + * responding

+ * @public + */ +export declare class ExternalServiceException extends __BaseException { + readonly name: "ExternalServiceException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when the service encounters an error during processing the request.

+ * @public + */ +export declare class InternalErrorException extends __BaseException { + readonly name: "InternalErrorException"; + readonly $fault: "server"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

If you provided authentication information in the request, the identity pool has no + * authenticated role configured, or STS returned an error response to the + * request to assume the authenticated role from the identity pool. If you provided no + * authentication information in the request, the identity pool has no unauthenticated role + * configured, or STS returned an error response to the request to assume the + * unauthenticated role from the identity pool.

+ *

Your role trust policy must grant AssumeRoleWithWebIdentity permissions to cognito-identity.amazonaws.com.

+ * @public + */ +export declare class InvalidIdentityPoolConfigurationException extends __BaseException { + readonly name: "InvalidIdentityPoolConfigurationException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown for missing or bad input parameter(s).

+ * @public + */ +export declare class InvalidParameterException extends __BaseException { + readonly name: "InvalidParameterException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when a user is not authorized to access the requested resource.

+ * @public + */ +export declare class NotAuthorizedException extends __BaseException { + readonly name: "NotAuthorizedException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when a user tries to use a login which is already linked to another + * account.

+ * @public + */ +export declare class ResourceConflictException extends __BaseException { + readonly name: "ResourceConflictException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when the requested resource (for example, a dataset or record) does not + * exist.

+ * @public + */ +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when a request is throttled.

+ * @public + */ +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Thrown when the total number of user pools has exceeded a preset limit.

+ * @public + */ +export declare class LimitExceededException extends __BaseException { + readonly name: "LimitExceededException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/models_0.d.ts new file mode 100644 index 0000000..3bf7c02 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/models/models_0.d.ts @@ -0,0 +1,136 @@ +/** + *

Input to the GetCredentialsForIdentity action.

+ * @public + */ +export interface GetCredentialsForIdentityInput { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId: string | undefined; + /** + *

A set of optional name-value pairs that map provider names to provider tokens. The + * name-value pair will follow the syntax "provider_name": + * "provider_user_identifier".

+ *

Logins should not be specified when trying to get credentials for an unauthenticated + * identity.

+ *

The Logins parameter is required when using identities associated with external + * identity providers such as Facebook. For examples of Logins maps, see the code + * examples in the External Identity + * Providers section of the Amazon Cognito Developer Guide.

+ * @public + */ + Logins?: Record | undefined; + /** + *

The Amazon Resource Name (ARN) of the role to be assumed when multiple roles were + * received in the token from the identity provider. For example, a SAML-based identity + * provider. This parameter is optional for identity providers that do not support role + * customization.

+ * @public + */ + CustomRoleArn?: string | undefined; +} +/** + *

Credentials for the provided identity ID.

+ * @public + */ +export interface Credentials { + /** + *

The Access Key portion of the credentials.

+ * @public + */ + AccessKeyId?: string | undefined; + /** + *

The Secret Access Key portion of the credentials

+ * @public + */ + SecretKey?: string | undefined; + /** + *

The Session Token portion of the credentials

+ * @public + */ + SessionToken?: string | undefined; + /** + *

The date at which these credentials will expire.

+ * @public + */ + Expiration?: Date | undefined; +} +/** + *

Returned in response to a successful GetCredentialsForIdentity + * operation.

+ * @public + */ +export interface GetCredentialsForIdentityResponse { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; + /** + *

Credentials for the provided identity ID.

+ * @public + */ + Credentials?: Credentials | undefined; +} +/** + *

Input to the GetId action.

+ * @public + */ +export interface GetIdInput { + /** + *

A standard Amazon Web Services account ID (9+ digits).

+ * @public + */ + AccountId?: string | undefined; + /** + *

An identity pool ID in the format REGION:GUID.

+ * @public + */ + IdentityPoolId: string | undefined; + /** + *

A set of optional name-value pairs that map provider names to provider tokens. The + * available provider names for Logins are as follows:

+ *
    + *
  • + *

    Facebook: graph.facebook.com + *

    + *
  • + *
  • + *

    Amazon Cognito user pool: + * cognito-idp..amazonaws.com/, + * for example, cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789. + *

    + *
  • + *
  • + *

    Google: accounts.google.com + *

    + *
  • + *
  • + *

    Amazon: www.amazon.com + *

    + *
  • + *
  • + *

    Twitter: api.twitter.com + *

    + *
  • + *
  • + *

    Digits: www.digits.com + *

    + *
  • + *
+ * @public + */ + Logins?: Record | undefined; +} +/** + *

Returned in response to a GetId request.

+ * @public + */ +export interface GetIdResponse { + /** + *

A unique identifier in the format REGION:GUID.

+ * @public + */ + IdentityId?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..e7c8e1c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.browser.d.ts @@ -0,0 +1,62 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts new file mode 100644 index 0000000..f9cbf64 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.d.ts @@ -0,0 +1,62 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts new file mode 100644 index 0000000..07e8a69 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.native.d.ts @@ -0,0 +1,61 @@ +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..8cd1708 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsJson1_1Protocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: CognitoIdentityClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsJson1_1Protocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeExtensions.d.ts new file mode 100644 index 0000000..2a4d33e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: CognitoIdentityExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/schemas/schemas_0.d.ts new file mode 100644 index 0000000..fd3092b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/schemas/schemas_0.d.ts @@ -0,0 +1,25 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var CognitoIdentityServiceException$: StaticErrorSchema; +export declare var ExternalServiceException$: StaticErrorSchema; +export declare var InternalErrorException$: StaticErrorSchema; +export declare var InvalidIdentityPoolConfigurationException$: StaticErrorSchema; +export declare var InvalidParameterException$: StaticErrorSchema; +export declare var LimitExceededException$: StaticErrorSchema; +export declare var NotAuthorizedException$: StaticErrorSchema; +export declare var ResourceConflictException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var Credentials$: StaticStructureSchema; +export declare var GetCredentialsForIdentityInput$: StaticStructureSchema; +export declare var GetCredentialsForIdentityResponse$: StaticStructureSchema; +export declare var GetIdInput$: StaticStructureSchema; +export declare var GetIdResponse$: StaticStructureSchema; +export declare var GetCredentialsForIdentity$: StaticOperationSchema; +export declare var GetId$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/Signin.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/Signin.d.ts new file mode 100644 index 0000000..3ccec3c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/Signin.d.ts @@ -0,0 +1,18 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { type CreateOAuth2TokenCommandInput, type CreateOAuth2TokenCommandOutput } from "./commands/CreateOAuth2TokenCommand"; +import { SigninClient } from "./SigninClient"; +export interface Signin { + /** + * @see {@link CreateOAuth2TokenCommand} + */ + createOAuth2Token(args: CreateOAuth2TokenCommandInput, options?: __HttpHandlerOptions): Promise; + createOAuth2Token(args: CreateOAuth2TokenCommandInput, cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void): void; + createOAuth2Token(args: CreateOAuth2TokenCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void): void; +} +/** + * AWS Sign-In manages authentication for AWS services. This service provides + * secure authentication flows for accessing AWS resources from the console and developer tools. + * @public + */ +export declare class Signin extends SigninClient implements Signin { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/SigninClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/SigninClient.d.ts new file mode 100644 index 0000000..f2db2e8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/SigninClient.d.ts @@ -0,0 +1,189 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { AwsCredentialIdentityProvider, BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, Decoder as __Decoder, Encoder as __Encoder, HashConstructor as __HashConstructor, HttpHandlerOptions as __HttpHandlerOptions, Logger as __Logger, Provider as __Provider, StreamCollector as __StreamCollector, UrlParser as __UrlParser, UserAgent as __UserAgent } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { CreateOAuth2TokenCommandInput, CreateOAuth2TokenCommandOutput } from "./commands/CreateOAuth2TokenCommand"; +import { type ClientInputEndpointParameters, type ClientResolvedEndpointParameters, type EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = CreateOAuth2TokenCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = CreateOAuth2TokenCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: __Provider<__UserAgent>; + /** + * Default credentials provider; Not available in browser runtime. + * @deprecated + * @internal + */ + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type SigninClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of SigninClient class constructor that set the region, credentials and other options. + */ +export interface SigninClientConfig extends SigninClientConfigType { +} +/** + * @public + */ +export type SigninClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of SigninClient class. This is resolved and normalized from the {@link SigninClientConfig | constructor configuration interface}. + */ +export interface SigninClientResolvedConfig extends SigninClientResolvedConfigType { +} +/** + * AWS Sign-In manages authentication for AWS services. This service provides + * secure authentication flows for accessing AWS resources from the console and developer tools. + * @public + */ +export declare class SigninClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, SigninClientResolvedConfig> { + /** + * The resolved configuration of SigninClient class. This is resolved and normalized from the {@link SigninClientConfig | constructor configuration interface}. + */ + readonly config: SigninClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..da4c63c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,29 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, HttpAuthScheme } from "@smithy/types"; +import type { SigninHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: SigninHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): SigninHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..c679adb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,75 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core/httpAuthSchemes"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type SigninClientResolvedConfig } from "../SigninClient"; +/** + * @internal + */ +export interface SigninHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface SigninHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultSigninHttpAuthSchemeParametersProvider: (config: SigninClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface SigninHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultSigninHttpAuthSchemeProvider: SigninHttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: SigninHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts new file mode 100644 index 0000000..d6950ed --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts @@ -0,0 +1,157 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CreateOAuth2TokenRequest, CreateOAuth2TokenResponse } from "../models/models_0"; +import type { SigninClientResolvedConfig } from "../SigninClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateOAuth2TokenCommand}. + */ +export interface CreateOAuth2TokenCommandInput extends CreateOAuth2TokenRequest { +} +/** + * @public + * + * The output of {@link CreateOAuth2TokenCommand}. + */ +export interface CreateOAuth2TokenCommandOutput extends CreateOAuth2TokenResponse, __MetadataBearer { +} +declare const CreateOAuth2TokenCommand_base: { + new (input: CreateOAuth2TokenCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateOAuth2TokenCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + * CreateOAuth2Token API + * + * Path: /v1/token + * Request Method: POST + * Content-Type: application/json or application/x-www-form-urlencoded + * + * This API implements OAuth 2.0 flows for AWS Sign-In CLI clients, supporting both: + * 1. Authorization code redemption (grant_type=authorization_code) - NOT idempotent + * 2. Token refresh (grant_type=refresh_token) - Idempotent within token validity window + * + * The operation behavior is determined by the grant_type parameter in the request body: + * + * **Authorization Code Flow (NOT Idempotent):** + * - JSON or form-encoded body with client_id, grant_type=authorization_code, code, redirect_uri, code_verifier + * - Returns access_token, token_type, expires_in, refresh_token, and id_token + * - Each authorization code can only be used ONCE for security (prevents replay attacks) + * + * **Token Refresh Flow (Idempotent):** + * - JSON or form-encoded body with client_id, grant_type=refresh_token, refresh_token + * - Returns access_token, token_type, expires_in, and refresh_token (no id_token) + * - Multiple calls with same refresh_token return consistent results within validity window + * + * Authentication and authorization: + * - Confidential clients: sigv4 signing required with signin:ExchangeToken permissions + * - CLI clients (public): authn/authz skipped based on client_id & grant_type + * + * Note: This operation cannot be marked as @idempotent because it handles both idempotent + * (token refresh) and non-idempotent (auth code redemption) flows in a single endpoint. + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { SigninClient, CreateOAuth2TokenCommand } from "@aws-sdk/client-signin"; // ES Modules import + * // const { SigninClient, CreateOAuth2TokenCommand } = require("@aws-sdk/client-signin"); // CommonJS import + * // import type { SigninClientConfig } from "@aws-sdk/client-signin"; + * const config = {}; // type is SigninClientConfig + * const client = new SigninClient(config); + * const input = { // CreateOAuth2TokenRequest + * tokenInput: { // CreateOAuth2TokenRequestBody + * clientId: "STRING_VALUE", // required + * grantType: "STRING_VALUE", // required + * code: "STRING_VALUE", + * redirectUri: "STRING_VALUE", + * codeVerifier: "STRING_VALUE", + * refreshToken: "STRING_VALUE", + * }, + * }; + * const command = new CreateOAuth2TokenCommand(input); + * const response = await client.send(command); + * // { // CreateOAuth2TokenResponse + * // tokenOutput: { // CreateOAuth2TokenResponseBody + * // accessToken: { // AccessToken + * // accessKeyId: "STRING_VALUE", // required + * // secretAccessKey: "STRING_VALUE", // required + * // sessionToken: "STRING_VALUE", // required + * // }, + * // tokenType: "STRING_VALUE", // required + * // expiresIn: Number("int"), // required + * // refreshToken: "STRING_VALUE", // required + * // idToken: "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param CreateOAuth2TokenCommandInput - {@link CreateOAuth2TokenCommandInput} + * @returns {@link CreateOAuth2TokenCommandOutput} + * @see {@link CreateOAuth2TokenCommandInput} for command's `input` shape. + * @see {@link CreateOAuth2TokenCommandOutput} for command's `response` shape. + * @see {@link SigninClientResolvedConfig | config} for SigninClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + * Error thrown for access denied scenarios with flexible HTTP status mapping + * + * Runtime HTTP Status Code Mapping: + * - HTTP 401 (Unauthorized): TOKEN_EXPIRED, AUTHCODE_EXPIRED + * - HTTP 403 (Forbidden): USER_CREDENTIALS_CHANGED, INSUFFICIENT_PERMISSIONS + * + * The specific HTTP status code is determined at runtime based on the error enum value. + * Consumers should use the error field to determine the specific access denial reason. + * + * @throws {@link InternalServerException} (server fault) + * Error thrown when an internal server error occurs + * + * HTTP Status Code: 500 Internal Server Error + * + * Used for unexpected server-side errors that prevent request processing. + * + * @throws {@link TooManyRequestsError} (client fault) + * Error thrown when rate limit is exceeded + * + * HTTP Status Code: 429 Too Many Requests + * + * Possible OAuth2ErrorCode values: + * - INVALID_REQUEST: Rate limiting, too many requests, abuse prevention + * + * Possible causes: + * - Too many token requests from the same client + * - Rate limiting based on client_id or IP address + * - Abuse prevention mechanisms triggered + * - Service protection against excessive token generation + * + * @throws {@link ValidationException} (client fault) + * Error thrown when request validation fails + * + * HTTP Status Code: 400 Bad Request + * + * Used for request validation errors such as malformed parameters, + * missing required fields, or invalid parameter values. + * + * @throws {@link SigninServiceException} + *

Base exception class for all service exceptions from Signin service.

+ * + * + * @public + */ +export declare class CreateOAuth2TokenCommand extends CreateOAuth2TokenCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateOAuth2TokenRequest; + output: CreateOAuth2TokenResponse; + }; + sdk: { + input: CreateOAuth2TokenCommandInput; + output: CreateOAuth2TokenCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/index.d.ts new file mode 100644 index 0000000..d32e4a3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./CreateOAuth2TokenCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..8c8611b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/EndpointParameters.d.ts @@ -0,0 +1,50 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; + region?: string | undefined | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; + Region?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..c1de67d --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4dda20a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/extensionConfiguration.d.ts new file mode 100644 index 0000000..33234b0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface SigninExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/index.d.ts new file mode 100644 index 0000000..91da90c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/index.d.ts @@ -0,0 +1,17 @@ +/** + * AWS Sign-In manages authentication for AWS services. This service provides + * secure authentication flows for accessing AWS resources from the console and developer tools. + * + * @packageDocumentation + */ +export * from "./SigninClient"; +export * from "./Signin"; +export type { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { SigninExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SigninServiceException } from "./models/SigninServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/SigninServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/SigninServiceException.d.ts new file mode 100644 index 0000000..4303adf --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/SigninServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from Signin service. + */ +export declare class SigninServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/enums.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/enums.d.ts new file mode 100644 index 0000000..8d46b8d --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/enums.d.ts @@ -0,0 +1,34 @@ +/** + * @public + * @enum + */ +export declare const OAuth2ErrorCode: { + /** + * Authorization code has expired + */ + readonly AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED"; + /** + * Insufficient permissions to perform this operation + */ + readonly INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS"; + /** + * The request is missing a required parameter, includes an invalid parameter value, or is otherwise malformed + */ + readonly INVALID_REQUEST: "INVALID_REQUEST"; + /** + * Internal server error occurred + */ + readonly SERVER_ERROR: "server_error"; + /** + * Token has expired and needs to be refreshed + */ + readonly TOKEN_EXPIRED: "TOKEN_EXPIRED"; + /** + * User credentials have been changed + */ + readonly USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED"; +}; +/** + * @public + */ +export type OAuth2ErrorCode = (typeof OAuth2ErrorCode)[keyof typeof OAuth2ErrorCode]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/errors.d.ts new file mode 100644 index 0000000..e5f8b6f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/errors.d.ts @@ -0,0 +1,102 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import type { OAuth2ErrorCode } from "./enums"; +import { SigninServiceException as __BaseException } from "./SigninServiceException"; +/** + * Error thrown for access denied scenarios with flexible HTTP status mapping + * + * Runtime HTTP Status Code Mapping: + * - HTTP 401 (Unauthorized): TOKEN_EXPIRED, AUTHCODE_EXPIRED + * - HTTP 403 (Forbidden): USER_CREDENTIALS_CHANGED, INSUFFICIENT_PERMISSIONS + * + * The specific HTTP status code is determined at runtime based on the error enum value. + * Consumers should use the error field to determine the specific access denial reason. + * @public + */ +export declare class AccessDeniedException extends __BaseException { + readonly name: "AccessDeniedException"; + readonly $fault: "client"; + /** + * OAuth 2.0 error code indicating the specific type of access denial + * Can be TOKEN_EXPIRED, AUTHCODE_EXPIRED, USER_CREDENTIALS_CHANGED, or INSUFFICIENT_PERMISSIONS + * @public + */ + error: OAuth2ErrorCode | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + * Error thrown when an internal server error occurs + * + * HTTP Status Code: 500 Internal Server Error + * + * Used for unexpected server-side errors that prevent request processing. + * @public + */ +export declare class InternalServerException extends __BaseException { + readonly name: "InternalServerException"; + readonly $fault: "server"; + /** + * OAuth 2.0 error code indicating server error + * Will be SERVER_ERROR for internal server errors + * @public + */ + error: OAuth2ErrorCode | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + * Error thrown when rate limit is exceeded + * + * HTTP Status Code: 429 Too Many Requests + * + * Possible OAuth2ErrorCode values: + * - INVALID_REQUEST: Rate limiting, too many requests, abuse prevention + * + * Possible causes: + * - Too many token requests from the same client + * - Rate limiting based on client_id or IP address + * - Abuse prevention mechanisms triggered + * - Service protection against excessive token generation + * @public + */ +export declare class TooManyRequestsError extends __BaseException { + readonly name: "TooManyRequestsError"; + readonly $fault: "client"; + /** + * OAuth 2.0 error code indicating the specific type of error + * Will be INVALID_REQUEST for rate limiting scenarios + * @public + */ + error: OAuth2ErrorCode | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + * Error thrown when request validation fails + * + * HTTP Status Code: 400 Bad Request + * + * Used for request validation errors such as malformed parameters, + * missing required fields, or invalid parameter values. + * @public + */ +export declare class ValidationException extends __BaseException { + readonly name: "ValidationException"; + readonly $fault: "client"; + /** + * OAuth 2.0 error code indicating validation failure + * Will be INVALID_REQUEST for validation errors + * @public + */ + error: OAuth2ErrorCode | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/models_0.d.ts new file mode 100644 index 0000000..3f59b64 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/models_0.d.ts @@ -0,0 +1,142 @@ +/** + * AWS credentials structure containing temporary access credentials + * + * The scoped-down, 15 minute duration AWS credentials. + * Scoping down will be based on CLI policy (CLI team needs to create it). + * Similar to cloud shell implementation. + * @public + */ +export interface AccessToken { + /** + * AWS access key ID for temporary credentials + * @public + */ + accessKeyId: string | undefined; + /** + * AWS secret access key for temporary credentials + * @public + */ + secretAccessKey: string | undefined; + /** + * AWS session token for temporary credentials + * @public + */ + sessionToken: string | undefined; +} +/** + * Request body payload for CreateOAuth2Token operation + * + * The operation type is determined by the grant_type parameter: + * - grant_type=authorization_code: Requires code, redirect_uri, code_verifier + * - grant_type=refresh_token: Requires refresh_token + * @public + */ +export interface CreateOAuth2TokenRequestBody { + /** + * The client identifier (ARN) used during Sign-In onboarding + * Required for both authorization code and refresh token flows + * @public + */ + clientId: string | undefined; + /** + * OAuth 2.0 grant type - determines which flow is used + * Must be "authorization_code" or "refresh_token" + * @public + */ + grantType: string | undefined; + /** + * The authorization code received from /v1/authorize + * Required only when grant_type=authorization_code + * @public + */ + code?: string | undefined; + /** + * The redirect URI that must match the original authorization request + * Required only when grant_type=authorization_code + * @public + */ + redirectUri?: string | undefined; + /** + * PKCE code verifier to prove possession of the original code challenge + * Required only when grant_type=authorization_code + * @public + */ + codeVerifier?: string | undefined; + /** + * The refresh token returned from auth_code redemption + * Required only when grant_type=refresh_token + * @public + */ + refreshToken?: string | undefined; +} +/** + * Input structure for CreateOAuth2Token operation + * + * Contains flattened token operation inputs for both authorization code and refresh token flows. + * The operation type is determined by the grant_type parameter in the request body. + * @public + */ +export interface CreateOAuth2TokenRequest { + /** + * Flattened token operation inputs + * The specific operation is determined by grant_type in the request body + * @public + */ + tokenInput: CreateOAuth2TokenRequestBody | undefined; +} +/** + * Response body payload for CreateOAuth2Token operation + * + * The response content depends on the grant_type from the request: + * - grant_type=authorization_code: Returns all fields including refresh_token and id_token + * - grant_type=refresh_token: Returns access_token, token_type, expires_in, refresh_token (no id_token) + * @public + */ +export interface CreateOAuth2TokenResponseBody { + /** + * Scoped-down AWS credentials (15 minute duration) + * Present for both authorization code redemption and token refresh + * @public + */ + accessToken: AccessToken | undefined; + /** + * Token type indicating this is AWS SigV4 credentials + * Value is "aws_sigv4" for both flows + * @public + */ + tokenType: string | undefined; + /** + * Time to expiry in seconds (maximum 900) + * Present for both authorization code redemption and token refresh + * @public + */ + expiresIn: number | undefined; + /** + * Encrypted refresh token with cnf.jkt (SHA-256 thumbprint of presented jwk) + * Always present in responses (required for both flows) + * @public + */ + refreshToken: string | undefined; + /** + * ID token containing user identity information + * Present only in authorization code redemption response (grant_type=authorization_code) + * Not included in token refresh responses + * @public + */ + idToken?: string | undefined; +} +/** + * Output structure for CreateOAuth2Token operation + * + * Contains flattened token operation outputs for both authorization code and refresh token flows. + * The response content depends on the grant_type from the original request. + * @public + */ +export interface CreateOAuth2TokenResponse { + /** + * Flattened token operation outputs + * The specific response fields depend on the grant_type used in the request + * @public + */ + tokenOutput: CreateOAuth2TokenResponseBody | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..d9491f5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.browser.d.ts @@ -0,0 +1,63 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { SigninClientConfig } from "./SigninClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts new file mode 100644 index 0000000..9ed5c56 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.d.ts @@ -0,0 +1,63 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { SigninClientConfig } from "./SigninClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + credentialDefaultProvider?: (input: any) => import("@smithy/types").AwsCredentialIdentityProvider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts new file mode 100644 index 0000000..cc37429 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.native.d.ts @@ -0,0 +1,62 @@ +import type { SigninClientConfig } from "./SigninClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..d9cea2a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { SigninClientConfig } from "./SigninClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeExtensions.d.ts new file mode 100644 index 0000000..cc51453 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { SigninExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: SigninExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/schemas/schemas_0.d.ts new file mode 100644 index 0000000..8a1f9e4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/schemas/schemas_0.d.ts @@ -0,0 +1,19 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var SigninServiceException$: StaticErrorSchema; +export declare var AccessDeniedException$: StaticErrorSchema; +export declare var InternalServerException$: StaticErrorSchema; +export declare var TooManyRequestsError$: StaticErrorSchema; +export declare var ValidationException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AccessToken$: StaticStructureSchema; +export declare var CreateOAuth2TokenRequest$: StaticStructureSchema; +export declare var CreateOAuth2TokenRequestBody$: StaticStructureSchema; +export declare var CreateOAuth2TokenResponse$: StaticStructureSchema; +export declare var CreateOAuth2TokenResponseBody$: StaticStructureSchema; +export declare var CreateOAuth2Token$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDC.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDC.d.ts new file mode 100644 index 0000000..750d255 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDC.d.ts @@ -0,0 +1,55 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { type CreateTokenCommandInput, type CreateTokenCommandOutput } from "./commands/CreateTokenCommand"; +import { SSOOIDCClient } from "./SSOOIDCClient"; +export interface SSOOIDC { + /** + * @see {@link CreateTokenCommand} + */ + createToken(args: CreateTokenCommandInput, options?: __HttpHandlerOptions): Promise; + createToken(args: CreateTokenCommandInput, cb: (err: any, data?: CreateTokenCommandOutput) => void): void; + createToken(args: CreateTokenCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: CreateTokenCommandOutput) => void): void; +} +/** + *

IAM Identity Center OpenID Connect (OIDC) is a web service that enables a client (such as CLI or a + * native application) to register with IAM Identity Center. The service also enables the client to fetch the + * user’s access token upon successful authentication and authorization with IAM Identity Center.

+ *

+ * API namespaces + *

+ *

IAM Identity Center uses the sso and identitystore API namespaces. IAM Identity Center + * OpenID Connect uses the sso-oauth namespace.

+ *

+ * Considerations for using this guide + *

+ *

Before you begin using this guide, we recommend that you first review the following + * important information about how the IAM Identity Center OIDC service works.

+ *
    + *
  • + *

    The IAM Identity Center OIDC service currently implements only the portions of the OAuth 2.0 Device + * Authorization Grant standard (https://tools.ietf.org/html/rfc8628) that are necessary to enable single + * sign-on authentication with the CLI.

    + *
  • + *
  • + *

    With older versions of the CLI, the service only emits OIDC access tokens, so to + * obtain a new token, users must explicitly re-authenticate. To access the OIDC flow that + * supports token refresh and doesn’t require re-authentication, update to the latest CLI + * version (1.27.10 for CLI V1 and 2.9.0 for CLI V2) with support for OIDC token refresh + * and configurable IAM Identity Center session durations. For more information, see Configure Amazon Web Services access portal session duration .

    + *
  • + *
  • + *

    The access tokens provided by this service grant access to all Amazon Web Services account + * entitlements assigned to an IAM Identity Center user, not just a particular application.

    + *
  • + *
  • + *

    The documentation in this guide does not describe the mechanism to convert the access + * token into Amazon Web Services Auth (“sigv4”) credentials for use with IAM-protected Amazon Web Services service + * endpoints. For more information, see GetRoleCredentials in the IAM Identity Center Portal API Reference + * Guide.

    + *
  • + *
+ *

For general information about IAM Identity Center, see What is + * IAM Identity Center? in the IAM Identity Center User Guide.

+ * @public + */ +export declare class SSOOIDC extends SSOOIDCClient implements SSOOIDC { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts new file mode 100644 index 0000000..0c06823 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/SSOOIDCClient.d.ts @@ -0,0 +1,220 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, Decoder as __Decoder, Encoder as __Encoder, HashConstructor as __HashConstructor, HttpHandlerOptions as __HttpHandlerOptions, Logger as __Logger, Provider as __Provider, StreamCollector as __StreamCollector, UrlParser as __UrlParser, UserAgent as __UserAgent } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { CreateTokenCommandInput, CreateTokenCommandOutput } from "./commands/CreateTokenCommand"; +import { type ClientInputEndpointParameters, type ClientResolvedEndpointParameters, type EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = CreateTokenCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = CreateTokenCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: __Provider<__UserAgent>; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type SSOOIDCClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of SSOOIDCClient class constructor that set the region, credentials and other options. + */ +export interface SSOOIDCClientConfig extends SSOOIDCClientConfigType { +} +/** + * @public + */ +export type SSOOIDCClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of SSOOIDCClient class. This is resolved and normalized from the {@link SSOOIDCClientConfig | constructor configuration interface}. + */ +export interface SSOOIDCClientResolvedConfig extends SSOOIDCClientResolvedConfigType { +} +/** + *

IAM Identity Center OpenID Connect (OIDC) is a web service that enables a client (such as CLI or a + * native application) to register with IAM Identity Center. The service also enables the client to fetch the + * user’s access token upon successful authentication and authorization with IAM Identity Center.

+ *

+ * API namespaces + *

+ *

IAM Identity Center uses the sso and identitystore API namespaces. IAM Identity Center + * OpenID Connect uses the sso-oauth namespace.

+ *

+ * Considerations for using this guide + *

+ *

Before you begin using this guide, we recommend that you first review the following + * important information about how the IAM Identity Center OIDC service works.

+ *
    + *
  • + *

    The IAM Identity Center OIDC service currently implements only the portions of the OAuth 2.0 Device + * Authorization Grant standard (https://tools.ietf.org/html/rfc8628) that are necessary to enable single + * sign-on authentication with the CLI.

    + *
  • + *
  • + *

    With older versions of the CLI, the service only emits OIDC access tokens, so to + * obtain a new token, users must explicitly re-authenticate. To access the OIDC flow that + * supports token refresh and doesn’t require re-authentication, update to the latest CLI + * version (1.27.10 for CLI V1 and 2.9.0 for CLI V2) with support for OIDC token refresh + * and configurable IAM Identity Center session durations. For more information, see Configure Amazon Web Services access portal session duration .

    + *
  • + *
  • + *

    The access tokens provided by this service grant access to all Amazon Web Services account + * entitlements assigned to an IAM Identity Center user, not just a particular application.

    + *
  • + *
  • + *

    The documentation in this guide does not describe the mechanism to convert the access + * token into Amazon Web Services Auth (“sigv4”) credentials for use with IAM-protected Amazon Web Services service + * endpoints. For more information, see GetRoleCredentials in the IAM Identity Center Portal API Reference + * Guide.

    + *
  • + *
+ *

For general information about IAM Identity Center, see What is + * IAM Identity Center? in the IAM Identity Center User Guide.

+ * @public + */ +export declare class SSOOIDCClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, SSOOIDCClientResolvedConfig> { + /** + * The resolved configuration of SSOOIDCClient class. This is resolved and normalized from the {@link SSOOIDCClientConfig | constructor configuration interface}. + */ + readonly config: SSOOIDCClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..fbbc160 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,29 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, HttpAuthScheme } from "@smithy/types"; +import type { SSOOIDCHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): SSOOIDCHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..e58d02b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,75 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core/httpAuthSchemes"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type SSOOIDCClientResolvedConfig } from "../SSOOIDCClient"; +/** + * @internal + */ +export interface SSOOIDCHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface SSOOIDCHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultSSOOIDCHttpAuthSchemeParametersProvider: (config: SSOOIDCClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface SSOOIDCHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultSSOOIDCHttpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: SSOOIDCHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts new file mode 100644 index 0000000..a4c900b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/CreateTokenCommand.d.ts @@ -0,0 +1,176 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { CreateTokenRequest, CreateTokenResponse } from "../models/models_0"; +import type { SSOOIDCClientResolvedConfig } from "../SSOOIDCClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateTokenCommand}. + */ +export interface CreateTokenCommandInput extends CreateTokenRequest { +} +/** + * @public + * + * The output of {@link CreateTokenCommand}. + */ +export interface CreateTokenCommandOutput extends CreateTokenResponse, __MetadataBearer { +} +declare const CreateTokenCommand_base: { + new (input: CreateTokenCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: CreateTokenCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Creates and returns access and refresh tokens for clients that are authenticated using + * client secrets. The access token can be used to fetch short-lived credentials for the assigned + * AWS accounts or to access application APIs using bearer authentication.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { SSOOIDCClient, CreateTokenCommand } from "@aws-sdk/client-sso-oidc"; // ES Modules import + * // const { SSOOIDCClient, CreateTokenCommand } = require("@aws-sdk/client-sso-oidc"); // CommonJS import + * // import type { SSOOIDCClientConfig } from "@aws-sdk/client-sso-oidc"; + * const config = {}; // type is SSOOIDCClientConfig + * const client = new SSOOIDCClient(config); + * const input = { // CreateTokenRequest + * clientId: "STRING_VALUE", // required + * clientSecret: "STRING_VALUE", // required + * grantType: "STRING_VALUE", // required + * deviceCode: "STRING_VALUE", + * code: "STRING_VALUE", + * refreshToken: "STRING_VALUE", + * scope: [ // Scopes + * "STRING_VALUE", + * ], + * redirectUri: "STRING_VALUE", + * codeVerifier: "STRING_VALUE", + * }; + * const command = new CreateTokenCommand(input); + * const response = await client.send(command); + * // { // CreateTokenResponse + * // accessToken: "STRING_VALUE", + * // tokenType: "STRING_VALUE", + * // expiresIn: Number("int"), + * // refreshToken: "STRING_VALUE", + * // idToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param CreateTokenCommandInput - {@link CreateTokenCommandInput} + * @returns {@link CreateTokenCommandOutput} + * @see {@link CreateTokenCommandInput} for command's `input` shape. + * @see {@link CreateTokenCommandOutput} for command's `response` shape. + * @see {@link SSOOIDCClientResolvedConfig | config} for SSOOIDCClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

You do not have sufficient access to perform this action.

+ * + * @throws {@link AuthorizationPendingException} (client fault) + *

Indicates that a request to authorize a client with an access user session token is + * pending.

+ * + * @throws {@link ExpiredTokenException} (client fault) + *

Indicates that the token issued by the service is expired and is no longer valid.

+ * + * @throws {@link InternalServerException} (server fault) + *

Indicates that an error from the service occurred while trying to process a + * request.

+ * + * @throws {@link InvalidClientException} (client fault) + *

Indicates that the clientId or clientSecret in the request is + * invalid. For example, this can occur when a client sends an incorrect clientId or + * an expired clientSecret.

+ * + * @throws {@link InvalidGrantException} (client fault) + *

Indicates that a request contains an invalid grant. This can occur if a client makes a + * CreateToken request with an invalid grant type.

+ * + * @throws {@link InvalidRequestException} (client fault) + *

Indicates that something is wrong with the input to the request. For example, a required + * parameter might be missing or out of range.

+ * + * @throws {@link InvalidScopeException} (client fault) + *

Indicates that the scope provided in the request is invalid.

+ * + * @throws {@link SlowDownException} (client fault) + *

Indicates that the client is making the request too frequently and is more than the + * service can handle.

+ * + * @throws {@link UnauthorizedClientException} (client fault) + *

Indicates that the client is not currently authorized to make the request. This can happen + * when a clientId is not issued for a public client.

+ * + * @throws {@link UnsupportedGrantTypeException} (client fault) + *

Indicates that the grant type in the request is not supported by the service.

+ * + * @throws {@link SSOOIDCServiceException} + *

Base exception class for all service exceptions from SSOOIDC service.

+ * + * + * @example Call OAuth/OIDC /token endpoint for Device Code grant with Secret authentication + * ```javascript + * // + * const input = { + * clientId: "_yzkThXVzLWVhc3QtMQEXAMPLECLIENTID", + * clientSecret: "VERYLONGSECRETeyJraWQiOiJrZXktMTU2NDAyODA5OSIsImFsZyI6IkhTMzg0In0", + * deviceCode: "yJraWQiOiJrZXktMTU2Njk2ODA4OCIsImFsZyI6IkhTMzIn0EXAMPLEDEVICECODE", + * grantType: "urn:ietf:params:oauth:grant-type:device-code" + * }; + * const command = new CreateTokenCommand(input); + * const response = await client.send(command); + * /* response is + * { + * accessToken: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN", + * expiresIn: 1579729529, + * refreshToken: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN", + * tokenType: "Bearer" + * } + * *\/ + * ``` + * + * @example Call OAuth/OIDC /token endpoint for Refresh Token grant with Secret authentication + * ```javascript + * // + * const input = { + * clientId: "_yzkThXVzLWVhc3QtMQEXAMPLECLIENTID", + * clientSecret: "VERYLONGSECRETeyJraWQiOiJrZXktMTU2NDAyODA5OSIsImFsZyI6IkhTMzg0In0", + * grantType: "refresh_token", + * refreshToken: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN", + * scope: [ + * "codewhisperer:completions" + * ] + * }; + * const command = new CreateTokenCommand(input); + * const response = await client.send(command); + * /* response is + * { + * accessToken: "aoal-YigITUDiNX1xZwOMXM5MxOWDL0E0jg9P6_C_jKQPxS_SKCP6f0kh1Up4g7TtvQqkMnD-GJiU_S1gvug6SrggAkc0:MGYCMQD3IatVjV7jAJU91kK3PkS/SfA2wtgWzOgZWDOR7sDGN9t0phCZz5It/aes/3C1Zj0CMQCKWOgRaiz6AIhza3DSXQNMLjRKXC8F8ceCsHlgYLMZ7hZidEXAMPLEACCESSTOKEN", + * expiresIn: 1579729529, + * refreshToken: "aorvJYubGpU6i91YnH7Mfo-AT2fIVa1zCfA_Rvq9yjVKIP3onFmmykuQ7E93y2I-9Nyj-A_sVvMufaLNL0bqnDRtgAkc0:MGUCMFrRsktMRVlWaOR70XGMFGLL0SlcCw4DiYveIiOVx1uK9BbD0gvAddsW3UTLozXKMgIxAJ3qxUvjpnlLIOaaKOoa/FuNgqJVvr9GMwDtnAtlh9iZzAkEXAMPLEREFRESHTOKEN", + * tokenType: "Bearer" + * } + * *\/ + * ``` + * + * @public + */ +export declare class CreateTokenCommand extends CreateTokenCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: CreateTokenRequest; + output: CreateTokenResponse; + }; + sdk: { + input: CreateTokenCommandInput; + output: CreateTokenCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/index.d.ts new file mode 100644 index 0000000..09214ca --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./CreateTokenCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..240d523 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/EndpointParameters.d.ts @@ -0,0 +1,50 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..c1de67d --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4dda20a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts new file mode 100644 index 0000000..4f50ca0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface SSOOIDCExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts new file mode 100644 index 0000000..2d7be0a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d.ts @@ -0,0 +1,54 @@ +/** + *

IAM Identity Center OpenID Connect (OIDC) is a web service that enables a client (such as CLI or a + * native application) to register with IAM Identity Center. The service also enables the client to fetch the + * user’s access token upon successful authentication and authorization with IAM Identity Center.

+ *

+ * API namespaces + *

+ *

IAM Identity Center uses the sso and identitystore API namespaces. IAM Identity Center + * OpenID Connect uses the sso-oauth namespace.

+ *

+ * Considerations for using this guide + *

+ *

Before you begin using this guide, we recommend that you first review the following + * important information about how the IAM Identity Center OIDC service works.

+ *
    + *
  • + *

    The IAM Identity Center OIDC service currently implements only the portions of the OAuth 2.0 Device + * Authorization Grant standard (https://tools.ietf.org/html/rfc8628) that are necessary to enable single + * sign-on authentication with the CLI.

    + *
  • + *
  • + *

    With older versions of the CLI, the service only emits OIDC access tokens, so to + * obtain a new token, users must explicitly re-authenticate. To access the OIDC flow that + * supports token refresh and doesn’t require re-authentication, update to the latest CLI + * version (1.27.10 for CLI V1 and 2.9.0 for CLI V2) with support for OIDC token refresh + * and configurable IAM Identity Center session durations. For more information, see Configure Amazon Web Services access portal session duration .

    + *
  • + *
  • + *

    The access tokens provided by this service grant access to all Amazon Web Services account + * entitlements assigned to an IAM Identity Center user, not just a particular application.

    + *
  • + *
  • + *

    The documentation in this guide does not describe the mechanism to convert the access + * token into Amazon Web Services Auth (“sigv4”) credentials for use with IAM-protected Amazon Web Services service + * endpoints. For more information, see GetRoleCredentials in the IAM Identity Center Portal API Reference + * Guide.

    + *
  • + *
+ *

For general information about IAM Identity Center, see What is + * IAM Identity Center? in the IAM Identity Center User Guide.

+ * + * @packageDocumentation + */ +export * from "./SSOOIDCClient"; +export * from "./SSOOIDC"; +export type { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { SSOOIDCExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOOIDCServiceException } from "./models/SSOOIDCServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts new file mode 100644 index 0000000..e9499ca --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from SSOOIDC service. + */ +export declare class SSOOIDCServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/enums.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/enums.d.ts new file mode 100644 index 0000000..176a463 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/enums.d.ts @@ -0,0 +1,25 @@ +/** + * @public + * @enum + */ +export declare const AccessDeniedExceptionReason: { + readonly KMS_ACCESS_DENIED: "KMS_AccessDeniedException"; +}; +/** + * @public + */ +export type AccessDeniedExceptionReason = (typeof AccessDeniedExceptionReason)[keyof typeof AccessDeniedExceptionReason]; +/** + * @public + * @enum + */ +export declare const InvalidRequestExceptionReason: { + readonly KMS_DISABLED_KEY: "KMS_DisabledException"; + readonly KMS_INVALID_KEY_USAGE: "KMS_InvalidKeyUsageException"; + readonly KMS_INVALID_STATE: "KMS_InvalidStateException"; + readonly KMS_KEY_NOT_FOUND: "KMS_NotFoundException"; +}; +/** + * @public + */ +export type InvalidRequestExceptionReason = (typeof InvalidRequestExceptionReason)[keyof typeof InvalidRequestExceptionReason]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/errors.d.ts new file mode 100644 index 0000000..48af951 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/errors.d.ts @@ -0,0 +1,279 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import type { AccessDeniedExceptionReason, InvalidRequestExceptionReason } from "./enums"; +import { SSOOIDCServiceException as __BaseException } from "./SSOOIDCServiceException"; +/** + *

You do not have sufficient access to perform this action.

+ * @public + */ +export declare class AccessDeniedException extends __BaseException { + readonly name: "AccessDeniedException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be access_denied.

+ * @public + */ + error?: string | undefined; + /** + *

A string that uniquely identifies a reason for the error.

+ * @public + */ + reason?: AccessDeniedExceptionReason | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that a request to authorize a client with an access user session token is + * pending.

+ * @public + */ +export declare class AuthorizationPendingException extends __BaseException { + readonly name: "AuthorizationPendingException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * authorization_pending.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the token issued by the service is expired and is no longer valid.

+ * @public + */ +export declare class ExpiredTokenException extends __BaseException { + readonly name: "ExpiredTokenException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be expired_token.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that an error from the service occurred while trying to process a + * request.

+ * @public + */ +export declare class InternalServerException extends __BaseException { + readonly name: "InternalServerException"; + readonly $fault: "server"; + /** + *

Single error code. For this exception the value will be server_error.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the clientId or clientSecret in the request is + * invalid. For example, this can occur when a client sends an incorrect clientId or + * an expired clientSecret.

+ * @public + */ +export declare class InvalidClientException extends __BaseException { + readonly name: "InvalidClientException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * invalid_client.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that a request contains an invalid grant. This can occur if a client makes a + * CreateToken request with an invalid grant type.

+ * @public + */ +export declare class InvalidGrantException extends __BaseException { + readonly name: "InvalidGrantException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be invalid_grant.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that something is wrong with the input to the request. For example, a required + * parameter might be missing or out of range.

+ * @public + */ +export declare class InvalidRequestException extends __BaseException { + readonly name: "InvalidRequestException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * invalid_request.

+ * @public + */ + error?: string | undefined; + /** + *

A string that uniquely identifies a reason for the error.

+ * @public + */ + reason?: InvalidRequestExceptionReason | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the scope provided in the request is invalid.

+ * @public + */ +export declare class InvalidScopeException extends __BaseException { + readonly name: "InvalidScopeException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be invalid_scope.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the client is making the request too frequently and is more than the + * service can handle.

+ * @public + */ +export declare class SlowDownException extends __BaseException { + readonly name: "SlowDownException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be slow_down.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the client is not currently authorized to make the request. This can happen + * when a clientId is not issued for a public client.

+ * @public + */ +export declare class UnauthorizedClientException extends __BaseException { + readonly name: "UnauthorizedClientException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * unauthorized_client.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the grant type in the request is not supported by the service.

+ * @public + */ +export declare class UnsupportedGrantTypeException extends __BaseException { + readonly name: "UnsupportedGrantTypeException"; + readonly $fault: "client"; + /** + *

Single error code. For this exception the value will be + * unsupported_grant_type.

+ * @public + */ + error?: string | undefined; + /** + *

Human-readable text providing additional information, used to assist the client developer + * in understanding the error that occurred.

+ * @public + */ + error_description?: string | undefined; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts new file mode 100644 index 0000000..24eec1b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/models/models_0.d.ts @@ -0,0 +1,109 @@ +/** + * @public + */ +export interface CreateTokenRequest { + /** + *

The unique identifier string for the client or application. This value comes from the + * result of the RegisterClient API.

+ * @public + */ + clientId: string | undefined; + /** + *

A secret string generated for the client. This value should come from the persisted result + * of the RegisterClient API.

+ * @public + */ + clientSecret: string | undefined; + /** + *

Supports the following OAuth grant types: Authorization Code, Device Code, and Refresh + * Token. Specify one of the following values, depending on the grant type that you want:

+ *

* Authorization Code - authorization_code + *

+ *

* Device Code - urn:ietf:params:oauth:grant-type:device_code + *

+ *

* Refresh Token - refresh_token + *

+ * @public + */ + grantType: string | undefined; + /** + *

Used only when calling this API for the Device Code grant type. This short-lived code is + * used to identify this authorization request. This comes from the result of the StartDeviceAuthorization API.

+ * @public + */ + deviceCode?: string | undefined; + /** + *

Used only when calling this API for the Authorization Code grant type. The short-lived + * code is used to identify this authorization request.

+ * @public + */ + code?: string | undefined; + /** + *

Used only when calling this API for the Refresh Token grant type. This token is used to + * refresh short-lived tokens, such as the access token, that might expire.

+ *

For more information about the features and limitations of the current IAM Identity Center OIDC + * implementation, see Considerations for Using this Guide in the IAM Identity Center + * OIDC API Reference.

+ * @public + */ + refreshToken?: string | undefined; + /** + *

The list of scopes for which authorization is requested. This parameter has no effect; the access token will always include all scopes configured during client registration.

+ * @public + */ + scope?: string[] | undefined; + /** + *

Used only when calling this API for the Authorization Code grant type. This value + * specifies the location of the client or application that has registered to receive the + * authorization code.

+ * @public + */ + redirectUri?: string | undefined; + /** + *

Used only when calling this API for the Authorization Code grant type. This value is + * generated by the client and presented to validate the original code challenge value the client + * passed at authorization time.

+ * @public + */ + codeVerifier?: string | undefined; +} +/** + * @public + */ +export interface CreateTokenResponse { + /** + *

A bearer token to access Amazon Web Services accounts and applications assigned to a user.

+ * @public + */ + accessToken?: string | undefined; + /** + *

Used to notify the client that the returned token is an access token. The supported token + * type is Bearer.

+ * @public + */ + tokenType?: string | undefined; + /** + *

Indicates the time in seconds when an access token will expire.

+ * @public + */ + expiresIn?: number | undefined; + /** + *

A token that, if present, can be used to refresh a previously issued access token that + * might have expired.

+ *

For more information about the features and limitations of the current IAM Identity Center OIDC + * implementation, see Considerations for Using this Guide in the IAM Identity Center + * OIDC API Reference.

+ * @public + */ + refreshToken?: string | undefined; + /** + *

The idToken is not implemented or supported. For more information about the + * features and limitations of the current IAM Identity Center OIDC implementation, see + * Considerations for Using this Guide in the IAM Identity Center + * OIDC API Reference.

+ *

A JSON Web Token (JWT) that identifies who is associated with the issued access token. + *

+ * @public + */ + idToken?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..f6b3f62 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.browser.d.ts @@ -0,0 +1,62 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { SSOOIDCClientConfig } from "./SSOOIDCClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts new file mode 100644 index 0000000..602d7e9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.d.ts @@ -0,0 +1,62 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { SSOOIDCClientConfig } from "./SSOOIDCClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts new file mode 100644 index 0000000..81e3542 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.native.d.ts @@ -0,0 +1,61 @@ +import type { SSOOIDCClientConfig } from "./SSOOIDCClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..cae7a84 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { SSOOIDCClientConfig } from "./SSOOIDCClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts new file mode 100644 index 0000000..442eab1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { SSOOIDCExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: SSOOIDCExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/schemas/schemas_0.d.ts new file mode 100644 index 0000000..472e687 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/schemas/schemas_0.d.ts @@ -0,0 +1,23 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var SSOOIDCServiceException$: StaticErrorSchema; +export declare var AccessDeniedException$: StaticErrorSchema; +export declare var AuthorizationPendingException$: StaticErrorSchema; +export declare var ExpiredTokenException$: StaticErrorSchema; +export declare var InternalServerException$: StaticErrorSchema; +export declare var InvalidClientException$: StaticErrorSchema; +export declare var InvalidGrantException$: StaticErrorSchema; +export declare var InvalidRequestException$: StaticErrorSchema; +export declare var InvalidScopeException$: StaticErrorSchema; +export declare var SlowDownException$: StaticErrorSchema; +export declare var UnauthorizedClientException$: StaticErrorSchema; +export declare var UnsupportedGrantTypeException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var CreateTokenRequest$: StaticStructureSchema; +export declare var CreateTokenResponse$: StaticStructureSchema; +export declare var CreateToken$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSO.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSO.d.ts new file mode 100644 index 0000000..5d448c0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSO.d.ts @@ -0,0 +1,32 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { type GetRoleCredentialsCommandInput, type GetRoleCredentialsCommandOutput } from "./commands/GetRoleCredentialsCommand"; +import { SSOClient } from "./SSOClient"; +export interface SSO { + /** + * @see {@link GetRoleCredentialsCommand} + */ + getRoleCredentials(args: GetRoleCredentialsCommandInput, options?: __HttpHandlerOptions): Promise; + getRoleCredentials(args: GetRoleCredentialsCommandInput, cb: (err: any, data?: GetRoleCredentialsCommandOutput) => void): void; + getRoleCredentials(args: GetRoleCredentialsCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: GetRoleCredentialsCommandOutput) => void): void; +} +/** + *

AWS IAM Identity Center (successor to AWS Single Sign-On) Portal is a web service that makes it easy for you to assign user access to + * IAM Identity Center resources such as the AWS access portal. Users can get AWS account applications and roles + * assigned to them and get federated into the application.

+ * + *

Although AWS Single Sign-On was renamed, the sso and + * identitystore API namespaces will continue to retain their original name for + * backward compatibility purposes. For more information, see IAM Identity Center rename.

+ *
+ *

This reference guide describes the IAM Identity Center Portal operations that you can call + * programatically and includes detailed information on data types and errors.

+ * + *

AWS provides SDKs that consist of libraries and sample code for various programming + * languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs provide a + * convenient way to create programmatic access to IAM Identity Center and other AWS services. For more + * information about the AWS SDKs, including how to download and install them, see Tools for Amazon Web Services.

+ *
+ * @public + */ +export declare class SSO extends SSOClient implements SSO { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSOClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSOClient.d.ts new file mode 100644 index 0000000..ec72214 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/SSOClient.d.ts @@ -0,0 +1,197 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, Decoder as __Decoder, Encoder as __Encoder, HashConstructor as __HashConstructor, HttpHandlerOptions as __HttpHandlerOptions, Logger as __Logger, Provider as __Provider, StreamCollector as __StreamCollector, UrlParser as __UrlParser, UserAgent as __UserAgent } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { GetRoleCredentialsCommandInput, GetRoleCredentialsCommandOutput } from "./commands/GetRoleCredentialsCommand"; +import { type ClientInputEndpointParameters, type ClientResolvedEndpointParameters, type EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = GetRoleCredentialsCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = GetRoleCredentialsCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: __Provider<__UserAgent>; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type SSOClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of SSOClient class constructor that set the region, credentials and other options. + */ +export interface SSOClientConfig extends SSOClientConfigType { +} +/** + * @public + */ +export type SSOClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of SSOClient class. This is resolved and normalized from the {@link SSOClientConfig | constructor configuration interface}. + */ +export interface SSOClientResolvedConfig extends SSOClientResolvedConfigType { +} +/** + *

AWS IAM Identity Center (successor to AWS Single Sign-On) Portal is a web service that makes it easy for you to assign user access to + * IAM Identity Center resources such as the AWS access portal. Users can get AWS account applications and roles + * assigned to them and get federated into the application.

+ * + *

Although AWS Single Sign-On was renamed, the sso and + * identitystore API namespaces will continue to retain their original name for + * backward compatibility purposes. For more information, see IAM Identity Center rename.

+ *
+ *

This reference guide describes the IAM Identity Center Portal operations that you can call + * programatically and includes detailed information on data types and errors.

+ * + *

AWS provides SDKs that consist of libraries and sample code for various programming + * languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs provide a + * convenient way to create programmatic access to IAM Identity Center and other AWS services. For more + * information about the AWS SDKs, including how to download and install them, see Tools for Amazon Web Services.

+ *
+ * @public + */ +export declare class SSOClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, SSOClientResolvedConfig> { + /** + * The resolved configuration of SSOClient class. This is resolved and normalized from the {@link SSOClientConfig | constructor configuration interface}. + */ + readonly config: SSOClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..2a00459 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,29 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, HttpAuthScheme } from "@smithy/types"; +import type { SSOHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: SSOHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): SSOHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SSOHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..5bcce6a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,75 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core/httpAuthSchemes"; +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type SSOClientResolvedConfig } from "../SSOClient"; +/** + * @internal + */ +export interface SSOHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface SSOHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultSSOHttpAuthSchemeParametersProvider: (config: SSOClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface SSOHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultSSOHttpAuthSchemeProvider: SSOHttpAuthSchemeProvider; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: SSOHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: SSOHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/GetRoleCredentialsCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/GetRoleCredentialsCommand.d.ts new file mode 100644 index 0000000..27cf2e1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/GetRoleCredentialsCommand.d.ts @@ -0,0 +1,97 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { GetRoleCredentialsRequest, GetRoleCredentialsResponse } from "../models/models_0"; +import type { SSOClientResolvedConfig } from "../SSOClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetRoleCredentialsCommand}. + */ +export interface GetRoleCredentialsCommandInput extends GetRoleCredentialsRequest { +} +/** + * @public + * + * The output of {@link GetRoleCredentialsCommand}. + */ +export interface GetRoleCredentialsCommandOutput extends GetRoleCredentialsResponse, __MetadataBearer { +} +declare const GetRoleCredentialsCommand_base: { + new (input: GetRoleCredentialsCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: GetRoleCredentialsCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns the STS short-term credentials for a given role name that is assigned to the + * user.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { SSOClient, GetRoleCredentialsCommand } from "@aws-sdk/client-sso"; // ES Modules import + * // const { SSOClient, GetRoleCredentialsCommand } = require("@aws-sdk/client-sso"); // CommonJS import + * // import type { SSOClientConfig } from "@aws-sdk/client-sso"; + * const config = {}; // type is SSOClientConfig + * const client = new SSOClient(config); + * const input = { // GetRoleCredentialsRequest + * roleName: "STRING_VALUE", // required + * accountId: "STRING_VALUE", // required + * accessToken: "STRING_VALUE", // required + * }; + * const command = new GetRoleCredentialsCommand(input); + * const response = await client.send(command); + * // { // GetRoleCredentialsResponse + * // roleCredentials: { // RoleCredentials + * // accessKeyId: "STRING_VALUE", + * // secretAccessKey: "STRING_VALUE", + * // sessionToken: "STRING_VALUE", + * // expiration: Number("long"), + * // }, + * // }; + * + * ``` + * + * @param GetRoleCredentialsCommandInput - {@link GetRoleCredentialsCommandInput} + * @returns {@link GetRoleCredentialsCommandOutput} + * @see {@link GetRoleCredentialsCommandInput} for command's `input` shape. + * @see {@link GetRoleCredentialsCommandOutput} for command's `response` shape. + * @see {@link SSOClientResolvedConfig | config} for SSOClient's `config` shape. + * + * @throws {@link InvalidRequestException} (client fault) + *

Indicates that a problem occurred with the input to the request. For example, a required + * parameter might be missing or out of range.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

The specified resource doesn't exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Indicates that the request is being made too frequently and is more than what the server + * can handle.

+ * + * @throws {@link UnauthorizedException} (client fault) + *

Indicates that the request is not authorized. This can happen due to an invalid access + * token in the request.

+ * + * @throws {@link SSOServiceException} + *

Base exception class for all service exceptions from SSO service.

+ * + * + * @public + */ +export declare class GetRoleCredentialsCommand extends GetRoleCredentialsCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: GetRoleCredentialsRequest; + output: GetRoleCredentialsResponse; + }; + sdk: { + input: GetRoleCredentialsCommandInput; + output: GetRoleCredentialsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/index.d.ts new file mode 100644 index 0000000..69ba055 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./GetRoleCredentialsCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..240d523 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/EndpointParameters.d.ts @@ -0,0 +1,50 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..c1de67d --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4dda20a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/extensionConfiguration.d.ts new file mode 100644 index 0000000..1d3c084 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface SSOExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/index.d.ts new file mode 100644 index 0000000..daf5d81 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/index.d.ts @@ -0,0 +1,30 @@ +/** + *

AWS IAM Identity Center (successor to AWS Single Sign-On) Portal is a web service that makes it easy for you to assign user access to + * IAM Identity Center resources such as the AWS access portal. Users can get AWS account applications and roles + * assigned to them and get federated into the application.

+ * + *

Although AWS Single Sign-On was renamed, the sso and + * identitystore API namespaces will continue to retain their original name for + * backward compatibility purposes. For more information, see IAM Identity Center rename.

+ *
+ *

This reference guide describes the IAM Identity Center Portal operations that you can call + * programatically and includes detailed information on data types and errors.

+ * + *

AWS provides SDKs that consist of libraries and sample code for various programming + * languages and platforms, such as Java, Ruby, .Net, iOS, or Android. The SDKs provide a + * convenient way to create programmatic access to IAM Identity Center and other AWS services. For more + * information about the AWS SDKs, including how to download and install them, see Tools for Amazon Web Services.

+ *
+ * + * @packageDocumentation + */ +export * from "./SSOClient"; +export * from "./SSO"; +export type { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { SSOExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOServiceException } from "./models/SSOServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/SSOServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/SSOServiceException.d.ts new file mode 100644 index 0000000..6cd0886 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/SSOServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from SSO service. + */ +export declare class SSOServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/errors.d.ts new file mode 100644 index 0000000..488bea4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/errors.d.ts @@ -0,0 +1,53 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { SSOServiceException as __BaseException } from "./SSOServiceException"; +/** + *

Indicates that a problem occurred with the input to the request. For example, a required + * parameter might be missing or out of range.

+ * @public + */ +export declare class InvalidRequestException extends __BaseException { + readonly name: "InvalidRequestException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The specified resource doesn't exist.

+ * @public + */ +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the request is being made too frequently and is more than what the server + * can handle.

+ * @public + */ +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

Indicates that the request is not authorized. This can happen due to an invalid access + * token in the request.

+ * @public + */ +export declare class UnauthorizedException extends __BaseException { + readonly name: "UnauthorizedException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/models_0.d.ts new file mode 100644 index 0000000..0eb108e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/models/models_0.d.ts @@ -0,0 +1,61 @@ +/** + * @public + */ +export interface GetRoleCredentialsRequest { + /** + *

The friendly name of the role that is assigned to the user.

+ * @public + */ + roleName: string | undefined; + /** + *

The identifier for the AWS account that is assigned to the user.

+ * @public + */ + accountId: string | undefined; + /** + *

The token issued by the CreateToken API call. For more information, see + * CreateToken in the IAM Identity Center OIDC API Reference Guide.

+ * @public + */ + accessToken: string | undefined; +} +/** + *

Provides information about the role credentials that are assigned to the user.

+ * @public + */ +export interface RoleCredentials { + /** + *

The identifier used for the temporary security credentials. For more information, see + * Using Temporary Security Credentials to Request Access to AWS Resources in the + * AWS IAM User Guide.

+ * @public + */ + accessKeyId?: string | undefined; + /** + *

The key that is used to sign the request. For more information, see Using Temporary Security Credentials to Request Access to AWS Resources in the + * AWS IAM User Guide.

+ * @public + */ + secretAccessKey?: string | undefined; + /** + *

The token used for temporary credentials. For more information, see Using Temporary Security Credentials to Request Access to AWS Resources in the + * AWS IAM User Guide.

+ * @public + */ + sessionToken?: string | undefined; + /** + *

The date on which temporary security credentials expire.

+ * @public + */ + expiration?: number | undefined; +} +/** + * @public + */ +export interface GetRoleCredentialsResponse { + /** + *

The credentials for the role that is assigned to the user.

+ * @public + */ + roleCredentials?: RoleCredentials | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..5331311 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.browser.d.ts @@ -0,0 +1,62 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { SSOClientConfig } from "./SSOClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts new file mode 100644 index 0000000..bfe3d02 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.d.ts @@ -0,0 +1,62 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { SSOClientConfig } from "./SSOClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts new file mode 100644 index 0000000..3b628d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.native.d.ts @@ -0,0 +1,61 @@ +import type { SSOClientConfig } from "./SSOClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..9644dd1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { SSOClientConfig } from "./SSOClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeExtensions.d.ts new file mode 100644 index 0000000..61b5376 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { SSOExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: SSOExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/schemas/schemas_0.d.ts new file mode 100644 index 0000000..bd50d99 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/schemas/schemas_0.d.ts @@ -0,0 +1,17 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var SSOServiceException$: StaticErrorSchema; +export declare var InvalidRequestException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +export declare var UnauthorizedException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var GetRoleCredentialsRequest$: StaticStructureSchema; +export declare var GetRoleCredentialsResponse$: StaticStructureSchema; +export declare var RoleCredentials$: StaticStructureSchema; +export declare var GetRoleCredentials$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STS.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STS.d.ts new file mode 100644 index 0000000..37a153e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STS.d.ts @@ -0,0 +1,27 @@ +import type { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { type AssumeRoleCommandInput, type AssumeRoleCommandOutput } from "./commands/AssumeRoleCommand"; +import { type AssumeRoleWithWebIdentityCommandInput, type AssumeRoleWithWebIdentityCommandOutput } from "./commands/AssumeRoleWithWebIdentityCommand"; +import { STSClient } from "./STSClient"; +export interface STS { + /** + * @see {@link AssumeRoleCommand} + */ + assumeRole(args: AssumeRoleCommandInput, options?: __HttpHandlerOptions): Promise; + assumeRole(args: AssumeRoleCommandInput, cb: (err: any, data?: AssumeRoleCommandOutput) => void): void; + assumeRole(args: AssumeRoleCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: AssumeRoleCommandOutput) => void): void; + /** + * @see {@link AssumeRoleWithWebIdentityCommand} + */ + assumeRoleWithWebIdentity(args: AssumeRoleWithWebIdentityCommandInput, options?: __HttpHandlerOptions): Promise; + assumeRoleWithWebIdentity(args: AssumeRoleWithWebIdentityCommandInput, cb: (err: any, data?: AssumeRoleWithWebIdentityCommandOutput) => void): void; + assumeRoleWithWebIdentity(args: AssumeRoleWithWebIdentityCommandInput, options: __HttpHandlerOptions, cb: (err: any, data?: AssumeRoleWithWebIdentityCommandOutput) => void): void; +} +/** + * Security Token Service + *

Security Token Service (STS) enables you to request temporary, limited-privilege + * credentials for users. This guide provides descriptions of the STS API. For + * more information about using this service, see Temporary Security Credentials.

+ * @public + */ +export declare class STS extends STSClient implements STS { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts new file mode 100644 index 0000000..509dff2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/STSClient.d.ts @@ -0,0 +1,192 @@ +import { type HostHeaderInputConfig, type HostHeaderResolvedConfig } from "@aws-sdk/middleware-host-header"; +import { type UserAgentInputConfig, type UserAgentResolvedConfig } from "@aws-sdk/middleware-user-agent"; +import { type RegionInputConfig, type RegionResolvedConfig } from "@smithy/config-resolver"; +import { type EndpointInputConfig, type EndpointResolvedConfig } from "@smithy/middleware-endpoint"; +import { type RetryInputConfig, type RetryResolvedConfig } from "@smithy/middleware-retry"; +import type { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { type DefaultsMode as __DefaultsMode, type SmithyConfiguration as __SmithyConfiguration, type SmithyResolvedConfiguration as __SmithyResolvedConfiguration, Client as __Client } from "@smithy/smithy-client"; +import type { AwsCredentialIdentityProvider, BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, Decoder as __Decoder, Encoder as __Encoder, HashConstructor as __HashConstructor, HttpHandlerOptions as __HttpHandlerOptions, Logger as __Logger, Provider as __Provider, StreamCollector as __StreamCollector, UrlParser as __UrlParser, UserAgent as __UserAgent } from "@smithy/types"; +import { type HttpAuthSchemeInputConfig, type HttpAuthSchemeResolvedConfig } from "./auth/httpAuthSchemeProvider"; +import type { AssumeRoleCommandInput, AssumeRoleCommandOutput } from "./commands/AssumeRoleCommand"; +import type { AssumeRoleWithWebIdentityCommandInput, AssumeRoleWithWebIdentityCommandOutput } from "./commands/AssumeRoleWithWebIdentityCommand"; +import { type ClientInputEndpointParameters, type ClientResolvedEndpointParameters, type EndpointParameters } from "./endpoint/EndpointParameters"; +import { type RuntimeExtension, type RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +/** + * @public + */ +export type ServiceInputTypes = AssumeRoleCommandInput | AssumeRoleWithWebIdentityCommandInput; +/** + * @public + */ +export type ServiceOutputTypes = AssumeRoleCommandOutput | AssumeRoleWithWebIdentityCommandOutput; +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + /** + * The runtime environment. + * @internal + */ + runtime?: string; + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: __Provider<__UserAgent>; + /** + * Default credentials provider; Not available in browser runtime. + * @deprecated + * @internal + */ + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +/** + * @public + */ +export type STSClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & ClientDefaults & UserAgentInputConfig & RetryInputConfig & RegionInputConfig & HostHeaderInputConfig & EndpointInputConfig & HttpAuthSchemeInputConfig & ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of STSClient class constructor that set the region, credentials and other options. + */ +export interface STSClientConfig extends STSClientConfigType { +} +/** + * @public + */ +export type STSClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & Required & RuntimeExtensionsConfig & UserAgentResolvedConfig & RetryResolvedConfig & RegionResolvedConfig & HostHeaderResolvedConfig & EndpointResolvedConfig & HttpAuthSchemeResolvedConfig & ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of STSClient class. This is resolved and normalized from the {@link STSClientConfig | constructor configuration interface}. + */ +export interface STSClientResolvedConfig extends STSClientResolvedConfigType { +} +/** + * Security Token Service + *

Security Token Service (STS) enables you to request temporary, limited-privilege + * credentials for users. This guide provides descriptions of the STS API. For + * more information about using this service, see Temporary Security Credentials.

+ * @public + */ +export declare class STSClient extends __Client<__HttpHandlerOptions, ServiceInputTypes, ServiceOutputTypes, STSClientResolvedConfig> { + /** + * The resolved configuration of STSClient class. This is resolved and normalized from the {@link STSClientConfig | constructor configuration interface}. + */ + readonly config: STSClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..389cad1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,29 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, HttpAuthScheme } from "@smithy/types"; +import type { STSHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: STSHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): STSHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: STSHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +/** + * @internal + */ +export declare const getHttpAuthExtensionConfiguration: (runtimeConfig: HttpAuthRuntimeConfig) => HttpAuthExtensionConfiguration; +/** + * @internal + */ +export declare const resolveHttpAuthRuntimeConfig: (config: HttpAuthExtensionConfiguration) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..fa0aff4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,85 @@ +import type { AwsSdkSigV4AuthInputConfig, AwsSdkSigV4AuthResolvedConfig, AwsSdkSigV4PreviouslyResolved } from "@aws-sdk/core/httpAuthSchemes"; +import type { Client, HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, Provider } from "@smithy/types"; +import { type STSClientResolvedConfig } from "../STSClient"; +/** + * @internal + */ +export interface STSHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +/** + * @internal + */ +export interface STSHttpAuthSchemeParametersProvider extends HttpAuthSchemeParametersProvider { +} +/** + * @internal + */ +export declare const defaultSTSHttpAuthSchemeParametersProvider: (config: STSClientResolvedConfig, context: HandlerExecutionContext, input: object) => Promise; +/** + * @internal + */ +export interface STSHttpAuthSchemeProvider extends HttpAuthSchemeProvider { +} +/** + * @internal + */ +export declare const defaultSTSHttpAuthSchemeProvider: STSHttpAuthSchemeProvider; +export interface StsAuthInputConfig { +} +export interface StsAuthResolvedConfig { + /** + * Reference to STSClient class constructor. + * @internal + */ + stsClientCtor: new (clientConfig: any) => Client; +} +export declare const resolveStsAuthConfig: (input: T & StsAuthInputConfig) => T & StsAuthResolvedConfig; +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends StsAuthInputConfig, AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: STSHttpAuthSchemeProvider; +} +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends StsAuthResolvedConfig, AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: STSHttpAuthSchemeProvider; +} +/** + * @internal + */ +export declare const resolveHttpAuthSchemeConfig: (config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts new file mode 100644 index 0000000..04ea0b2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleCommand.d.ts @@ -0,0 +1,270 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { AssumeRoleRequest, AssumeRoleResponse } from "../models/models_0"; +import type { ServiceInputTypes, ServiceOutputTypes, STSClientResolvedConfig } from "../STSClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link AssumeRoleCommand}. + */ +export interface AssumeRoleCommandInput extends AssumeRoleRequest { +} +/** + * @public + * + * The output of {@link AssumeRoleCommand}. + */ +export interface AssumeRoleCommandOutput extends AssumeRoleResponse, __MetadataBearer { +} +declare const AssumeRoleCommand_base: { + new (input: AssumeRoleCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: AssumeRoleCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns a set of temporary security credentials that you can use to access Amazon Web Services + * resources. These temporary credentials consist of an access key ID, a secret access key, + * and a security token. Typically, you use AssumeRole within your account or for + * cross-account access. For a comparison of AssumeRole with other API operations + * that produce temporary credentials, see Requesting Temporary Security + * Credentials and Compare STS + * credentials in the IAM User Guide.

+ *

+ * Permissions + *

+ *

The temporary security credentials created by AssumeRole can be used to + * make API calls to any Amazon Web Services service with the following exception: You cannot call the + * Amazon Web Services STS GetFederationToken or GetSessionToken API + * operations.

+ *

(Optional) You can pass inline or managed session policies to this operation. You can + * pass a single JSON policy document to use as an inline session policy. You can also specify + * up to 10 managed policy Amazon Resource Names (ARNs) to use as managed session policies. + * The plaintext that you use for both inline and managed session policies can't exceed 2,048 + * characters. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

When you create a role, you create two policies: a role trust policy that specifies + * who can assume the role, and a permissions policy that specifies + * what can be done with the role. You specify the trusted principal + * that is allowed to assume the role in the role trust policy.

+ *

To assume a role from a different account, your Amazon Web Services account must be trusted by the + * role. The trust relationship is defined in the role's trust policy when the role is + * created. That trust policy states which accounts are allowed to delegate that access to + * users in the account.

+ *

A user who wants to access a role in a different account must also have permissions that + * are delegated from the account administrator. The administrator must attach a policy that + * allows the user to call AssumeRole for the ARN of the role in the other + * account.

+ *

To allow a user to assume a role in the same account, you can do either of the + * following:

+ *
    + *
  • + *

    Attach a policy to the user that allows the user to call AssumeRole + * (as long as the role's trust policy trusts the account).

    + *
  • + *
  • + *

    Add the user as a principal directly in the role's trust policy.

    + *
  • + *
+ *

You can do either because the role’s trust policy acts as an IAM resource-based + * policy. When a resource-based policy grants access to a principal in the same account, no + * additional identity-based policy is required. For more information about trust policies and + * resource-based policies, see IAM Policies in the + * IAM User Guide.

+ *

+ * Tags + *

+ *

(Optional) You can pass tag key-value pairs to your session. These tags are called + * session tags. For more information about session tags, see Passing Session Tags in STS in the + * IAM User Guide.

+ *

An administrator must grant you the permissions necessary to pass session tags. The + * administrator can also create granular permissions to allow you to pass only specific + * session tags. For more information, see Tutorial: Using Tags + * for Attribute-Based Access Control in the + * IAM User Guide.

+ *

You can set the session tags as transitive. Transitive tags persist during role + * chaining. For more information, see Chaining Roles + * with Session Tags in the IAM User Guide.

+ *

+ * Using MFA with AssumeRole + *

+ *

(Optional) You can include multi-factor authentication (MFA) information when you call + * AssumeRole. This is useful for cross-account scenarios to ensure that the + * user that assumes the role has been authenticated with an Amazon Web Services MFA device. In that + * scenario, the trust policy of the role being assumed includes a condition that tests for + * MFA authentication. If the caller does not include valid MFA information, the request to + * assume the role is denied. The condition in a trust policy that tests for MFA + * authentication might look like the following example.

+ *

+ * "Condition": \{"Bool": \{"aws:MultiFactorAuthPresent": true\}\} + *

+ *

For more information, see Configuring MFA-Protected API Access + * in the IAM User Guide guide.

+ *

To use MFA with AssumeRole, you pass values for the + * SerialNumber and TokenCode parameters. The + * SerialNumber value identifies the user's hardware or virtual MFA device. + * The TokenCode is the time-based one-time password (TOTP) that the MFA device + * produces.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { STSClient, AssumeRoleCommand } from "@aws-sdk/client-sts"; // ES Modules import + * // const { STSClient, AssumeRoleCommand } = require("@aws-sdk/client-sts"); // CommonJS import + * // import type { STSClientConfig } from "@aws-sdk/client-sts"; + * const config = {}; // type is STSClientConfig + * const client = new STSClient(config); + * const input = { // AssumeRoleRequest + * RoleArn: "STRING_VALUE", // required + * RoleSessionName: "STRING_VALUE", // required + * PolicyArns: [ // policyDescriptorListType + * { // PolicyDescriptorType + * arn: "STRING_VALUE", + * }, + * ], + * Policy: "STRING_VALUE", + * DurationSeconds: Number("int"), + * Tags: [ // tagListType + * { // Tag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * TransitiveTagKeys: [ // tagKeyListType + * "STRING_VALUE", + * ], + * ExternalId: "STRING_VALUE", + * SerialNumber: "STRING_VALUE", + * TokenCode: "STRING_VALUE", + * SourceIdentity: "STRING_VALUE", + * ProvidedContexts: [ // ProvidedContextsListType + * { // ProvidedContext + * ProviderArn: "STRING_VALUE", + * ContextAssertion: "STRING_VALUE", + * }, + * ], + * }; + * const command = new AssumeRoleCommand(input); + * const response = await client.send(command); + * // { // AssumeRoleResponse + * // Credentials: { // Credentials + * // AccessKeyId: "STRING_VALUE", // required + * // SecretAccessKey: "STRING_VALUE", // required + * // SessionToken: "STRING_VALUE", // required + * // Expiration: new Date("TIMESTAMP"), // required + * // }, + * // AssumedRoleUser: { // AssumedRoleUser + * // AssumedRoleId: "STRING_VALUE", // required + * // Arn: "STRING_VALUE", // required + * // }, + * // PackedPolicySize: Number("int"), + * // SourceIdentity: "STRING_VALUE", + * // }; + * + * ``` + * + * @param AssumeRoleCommandInput - {@link AssumeRoleCommandInput} + * @returns {@link AssumeRoleCommandOutput} + * @see {@link AssumeRoleCommandInput} for command's `input` shape. + * @see {@link AssumeRoleCommandOutput} for command's `response` shape. + * @see {@link STSClientResolvedConfig | config} for STSClient's `config` shape. + * + * @throws {@link ExpiredTokenException} (client fault) + *

The web identity token that was passed is expired or is not valid. Get a new identity + * token from the identity provider and then retry the request.

+ * + * @throws {@link MalformedPolicyDocumentException} (client fault) + *

The request was rejected because the policy document was malformed. The error message + * describes the specific error.

+ * + * @throws {@link PackedPolicyTooLargeException} (client fault) + *

The request was rejected because the total packed size of the session policies and + * session tags combined was too large. An Amazon Web Services conversion compresses the session policy + * document, session policy ARNs, and session tags into a packed binary format that has a + * separate limit. The error message indicates by percentage how close the policies and + * tags are to the upper size limit. For more information, see Passing Session Tags in STS in + * the IAM User Guide.

+ *

You could receive this error even though you meet other defined session policy and + * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

+ * + * @throws {@link RegionDisabledException} (client fault) + *

STS is not activated in the requested region for the account that is being asked to + * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and Deactivating STS in an Amazon Web Services Region in the IAM + * User Guide.

+ * + * @throws {@link STSServiceException} + *

Base exception class for all service exceptions from STS service.

+ * + * + * @example To assume a role + * ```javascript + * // + * const input = { + * ExternalId: "123ABC", + * Policy: "escaped-JSON-IAM-POLICY", + * RoleArn: "arn:aws:iam::123456789012:role/demo", + * RoleSessionName: "testAssumeRoleSession", + * Tags: [ + * { + * Key: "Project", + * Value: "Unicorn" + * }, + * { + * Key: "Team", + * Value: "Automation" + * }, + * { + * Key: "Cost-Center", + * Value: "12345" + * } + * ], + * TransitiveTagKeys: [ + * "Project", + * "Cost-Center" + * ] + * }; + * const command = new AssumeRoleCommand(input); + * const response = await client.send(command); + * /* response is + * { + * AssumedRoleUser: { + * Arn: "arn:aws:sts::123456789012:assumed-role/demo/Bob", + * AssumedRoleId: "ARO123EXAMPLE123:Bob" + * }, + * Credentials: { + * AccessKeyId: "AKIAIOSFODNN7EXAMPLE", + * Expiration: "2011-07-15T23:28:33.359Z", + * SecretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", + * SessionToken: "AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGdQrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==" + * }, + * PackedPolicySize: 8 + * } + * *\/ + * ``` + * + * @public + */ +export declare class AssumeRoleCommand extends AssumeRoleCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: AssumeRoleRequest; + output: AssumeRoleResponse; + }; + sdk: { + input: AssumeRoleCommandInput; + output: AssumeRoleCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts new file mode 100644 index 0000000..d590715 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts @@ -0,0 +1,290 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import type { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import type { AssumeRoleWithWebIdentityRequest, AssumeRoleWithWebIdentityResponse } from "../models/models_0"; +import type { ServiceInputTypes, ServiceOutputTypes, STSClientResolvedConfig } from "../STSClient"; +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link AssumeRoleWithWebIdentityCommand}. + */ +export interface AssumeRoleWithWebIdentityCommandInput extends AssumeRoleWithWebIdentityRequest { +} +/** + * @public + * + * The output of {@link AssumeRoleWithWebIdentityCommand}. + */ +export interface AssumeRoleWithWebIdentityCommandOutput extends AssumeRoleWithWebIdentityResponse, __MetadataBearer { +} +declare const AssumeRoleWithWebIdentityCommand_base: { + new (input: AssumeRoleWithWebIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + new (input: AssumeRoleWithWebIdentityCommandInput): import("@smithy/smithy-client").CommandImpl; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +/** + *

Returns a set of temporary security credentials for users who have been authenticated in + * a mobile or web application with a web identity provider. Example providers include the + * OAuth 2.0 providers Login with Amazon and Facebook, or any OpenID Connect-compatible + * identity provider such as Google or Amazon Cognito federated identities.

+ * + *

For mobile applications, we recommend that you use Amazon Cognito. You can use Amazon Cognito with the + * Amazon Web Services SDK for iOS Developer Guide and the Amazon Web Services SDK for Android Developer Guide to uniquely + * identify a user. You can also supply the user with a consistent identity throughout the + * lifetime of an application.

+ *

To learn more about Amazon Cognito, see Amazon Cognito identity + * pools in Amazon Cognito Developer Guide.

+ *
+ *

Calling AssumeRoleWithWebIdentity does not require the use of Amazon Web Services + * security credentials. Therefore, you can distribute an application (for example, on mobile + * devices) that requests temporary security credentials without including long-term Amazon Web Services + * credentials in the application. You also don't need to deploy server-based proxy services + * that use long-term Amazon Web Services credentials. Instead, the identity of the caller is validated by + * using a token from the web identity provider. For a comparison of + * AssumeRoleWithWebIdentity with the other API operations that produce + * temporary credentials, see Requesting Temporary Security + * Credentials and Compare STS + * credentials in the IAM User Guide.

+ *

The temporary security credentials returned by this API consist of an access key ID, a + * secret access key, and a security token. Applications can use these temporary security + * credentials to sign calls to Amazon Web Services service API operations.

+ *

+ * Session Duration + *

+ *

By default, the temporary security credentials created by + * AssumeRoleWithWebIdentity last for one hour. However, you can use the + * optional DurationSeconds parameter to specify the duration of your session. + * You can provide a value from 900 seconds (15 minutes) up to the maximum session duration + * setting for the role. This setting can have a value from 1 hour to 12 hours. To learn how + * to view the maximum value for your role, see Update the maximum session duration for a role in the + * IAM User Guide. The maximum session duration limit applies when + * you use the AssumeRole* API operations or the assume-role* CLI + * commands. However the limit does not apply when you use those operations to create a + * console URL. For more information, see Using IAM Roles in the + * IAM User Guide.

+ *

+ * Permissions + *

+ *

The temporary security credentials created by AssumeRoleWithWebIdentity can + * be used to make API calls to any Amazon Web Services service with the following exception: you cannot + * call the STS GetFederationToken or GetSessionToken API + * operations.

+ *

(Optional) You can pass inline or managed session policies to + * this operation. You can pass a single JSON policy document to use as an inline session + * policy. You can also specify up to 10 managed policy Amazon Resource Names (ARNs) to use as + * managed session policies. The plaintext that you use for both inline and managed session + * policies can't exceed 2,048 characters. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

+ * Tags + *

+ *

(Optional) You can configure your IdP to pass attributes into your web identity token as + * session tags. Each session tag consists of a key name and an associated value. For more + * information about session tags, see Passing + * session tags using AssumeRoleWithWebIdentity in the + * IAM User Guide.

+ *

You can pass up to 50 session tags. The plaintext session tag keys can’t exceed 128 + * characters and the values can’t exceed 256 characters. For these and additional limits, see + * IAM + * and STS Character Limits in the IAM User Guide.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

You can pass a session tag with the same key as a tag that is attached to the role. When + * you do, the session tag overrides the role tag with the same key.

+ *

An administrator must grant you the permissions necessary to pass session tags. The + * administrator can also create granular permissions to allow you to pass only specific + * session tags. For more information, see Tutorial: Using Tags + * for Attribute-Based Access Control in the + * IAM User Guide.

+ *

You can set the session tags as transitive. Transitive tags persist during role + * chaining. For more information, see Chaining Roles + * with Session Tags in the IAM User Guide.

+ *

+ * Identities + *

+ *

Before your application can call AssumeRoleWithWebIdentity, you must have + * an identity token from a supported identity provider and create a role that the application + * can assume. The role that your application assumes must trust the identity provider that is + * associated with the identity token. In other words, the identity provider must be specified + * in the role's trust policy.

+ * + *

Calling AssumeRoleWithWebIdentity can result in an entry in your + * CloudTrail logs. The entry includes the Subject of + * the provided web identity token. We recommend that you avoid using any personally + * identifiable information (PII) in this field. For example, you could instead use a GUID + * or a pairwise identifier, as suggested + * in the OIDC specification.

+ *
+ *

For more information about how to use OIDC federation and the + * AssumeRoleWithWebIdentity API, see the following resources:

+ * + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { STSClient, AssumeRoleWithWebIdentityCommand } from "@aws-sdk/client-sts"; // ES Modules import + * // const { STSClient, AssumeRoleWithWebIdentityCommand } = require("@aws-sdk/client-sts"); // CommonJS import + * // import type { STSClientConfig } from "@aws-sdk/client-sts"; + * const config = {}; // type is STSClientConfig + * const client = new STSClient(config); + * const input = { // AssumeRoleWithWebIdentityRequest + * RoleArn: "STRING_VALUE", // required + * RoleSessionName: "STRING_VALUE", // required + * WebIdentityToken: "STRING_VALUE", // required + * ProviderId: "STRING_VALUE", + * PolicyArns: [ // policyDescriptorListType + * { // PolicyDescriptorType + * arn: "STRING_VALUE", + * }, + * ], + * Policy: "STRING_VALUE", + * DurationSeconds: Number("int"), + * }; + * const command = new AssumeRoleWithWebIdentityCommand(input); + * const response = await client.send(command); + * // { // AssumeRoleWithWebIdentityResponse + * // Credentials: { // Credentials + * // AccessKeyId: "STRING_VALUE", // required + * // SecretAccessKey: "STRING_VALUE", // required + * // SessionToken: "STRING_VALUE", // required + * // Expiration: new Date("TIMESTAMP"), // required + * // }, + * // SubjectFromWebIdentityToken: "STRING_VALUE", + * // AssumedRoleUser: { // AssumedRoleUser + * // AssumedRoleId: "STRING_VALUE", // required + * // Arn: "STRING_VALUE", // required + * // }, + * // PackedPolicySize: Number("int"), + * // Provider: "STRING_VALUE", + * // Audience: "STRING_VALUE", + * // SourceIdentity: "STRING_VALUE", + * // }; + * + * ``` + * + * @param AssumeRoleWithWebIdentityCommandInput - {@link AssumeRoleWithWebIdentityCommandInput} + * @returns {@link AssumeRoleWithWebIdentityCommandOutput} + * @see {@link AssumeRoleWithWebIdentityCommandInput} for command's `input` shape. + * @see {@link AssumeRoleWithWebIdentityCommandOutput} for command's `response` shape. + * @see {@link STSClientResolvedConfig | config} for STSClient's `config` shape. + * + * @throws {@link ExpiredTokenException} (client fault) + *

The web identity token that was passed is expired or is not valid. Get a new identity + * token from the identity provider and then retry the request.

+ * + * @throws {@link IDPCommunicationErrorException} (client fault) + *

The request could not be fulfilled because the identity provider (IDP) that was asked + * to verify the incoming identity token could not be reached. This is often a transient + * error caused by network conditions. Retry the request a limited number of times so that + * you don't exceed the request rate. If the error persists, the identity provider might be + * down or not responding.

+ * + * @throws {@link IDPRejectedClaimException} (client fault) + *

The identity provider (IdP) reported that authentication failed. This might be because + * the claim is invalid.

+ *

If this error is returned for the AssumeRoleWithWebIdentity operation, it + * can also mean that the claim has expired or has been explicitly revoked.

+ * + * @throws {@link InvalidIdentityTokenException} (client fault) + *

The web identity token that was passed could not be validated by Amazon Web Services. Get a new + * identity token from the identity provider and then retry the request.

+ * + * @throws {@link MalformedPolicyDocumentException} (client fault) + *

The request was rejected because the policy document was malformed. The error message + * describes the specific error.

+ * + * @throws {@link PackedPolicyTooLargeException} (client fault) + *

The request was rejected because the total packed size of the session policies and + * session tags combined was too large. An Amazon Web Services conversion compresses the session policy + * document, session policy ARNs, and session tags into a packed binary format that has a + * separate limit. The error message indicates by percentage how close the policies and + * tags are to the upper size limit. For more information, see Passing Session Tags in STS in + * the IAM User Guide.

+ *

You could receive this error even though you meet other defined session policy and + * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

+ * + * @throws {@link RegionDisabledException} (client fault) + *

STS is not activated in the requested region for the account that is being asked to + * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and Deactivating STS in an Amazon Web Services Region in the IAM + * User Guide.

+ * + * @throws {@link STSServiceException} + *

Base exception class for all service exceptions from STS service.

+ * + * + * @example To assume a role as an OpenID Connect-federated user + * ```javascript + * // + * const input = { + * DurationSeconds: 3600, + * Policy: "escaped-JSON-IAM-POLICY", + * ProviderId: "www.amazon.com", + * RoleArn: "arn:aws:iam::123456789012:role/FederatedWebIdentityRole", + * RoleSessionName: "app1", + * WebIdentityToken: "Atza%7CIQEBLjAsAhRFiXuWpUXuRvQ9PZL3GMFcYevydwIUFAHZwXZXXXXXXXXJnrulxKDHwy87oGKPznh0D6bEQZTSCzyoCtL_8S07pLpr0zMbn6w1lfVZKNTBdDansFBmtGnIsIapjI6xKR02Yc_2bQ8LZbUXSGm6Ry6_BG7PrtLZtj_dfCTj92xNGed-CrKqjG7nPBjNIL016GGvuS5gSvPRUxWES3VYfm1wl7WTI7jn-Pcb6M-buCgHhFOzTQxod27L9CqnOLio7N3gZAGpsp6n1-AJBOCJckcyXe2c6uD0srOJeZlKUm2eTDVMf8IehDVI0r1QOnTV6KzzAI3OY87Vd_cVMQ" + * }; + * const command = new AssumeRoleWithWebIdentityCommand(input); + * const response = await client.send(command); + * /* response is + * { + * AssumedRoleUser: { + * Arn: "arn:aws:sts::123456789012:assumed-role/FederatedWebIdentityRole/app1", + * AssumedRoleId: "AROACLKWSDQRAOEXAMPLE:app1" + * }, + * Audience: "client.5498841531868486423.1548@apps.example.com", + * Credentials: { + * AccessKeyId: "AKIAIOSFODNN7EXAMPLE", + * Expiration: "2014-10-24T23:00:23Z", + * SecretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY", + * SessionToken: "AQoDYXdzEE0a8ANXXXXXXXXNO1ewxE5TijQyp+IEXAMPLE" + * }, + * PackedPolicySize: 123, + * Provider: "www.amazon.com", + * SubjectFromWebIdentityToken: "amzn1.account.AF6RHO7KZU5XRVQJGXK6HEXAMPLE" + * } + * *\/ + * ``` + * + * @public + */ +export declare class AssumeRoleWithWebIdentityCommand extends AssumeRoleWithWebIdentityCommand_base { + /** @internal type navigation helper, not in runtime. */ + protected static __types: { + api: { + input: AssumeRoleWithWebIdentityRequest; + output: AssumeRoleWithWebIdentityResponse; + }; + sdk: { + input: AssumeRoleWithWebIdentityCommandInput; + output: AssumeRoleWithWebIdentityCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/index.d.ts new file mode 100644 index 0000000..0f200f5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/commands/index.d.ts @@ -0,0 +1,2 @@ +export * from "./AssumeRoleCommand"; +export * from "./AssumeRoleWithWebIdentityCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultRoleAssumers.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultRoleAssumers.d.ts new file mode 100644 index 0000000..ba9e542 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultRoleAssumers.d.ts @@ -0,0 +1,23 @@ +import type { Pluggable } from "@smithy/types"; +import type { DefaultCredentialProvider, RoleAssumer, RoleAssumerWithWebIdentity, STSRoleAssumerOptions } from "./defaultStsRoleAssumers"; +import type { ServiceInputTypes, ServiceOutputTypes } from "./STSClient"; +/** + * The default role assumer that used by credential providers when sts:AssumeRole API is needed. + */ +export declare const getDefaultRoleAssumer: (stsOptions?: STSRoleAssumerOptions, stsPlugins?: Pluggable[]) => RoleAssumer; +/** + * The default role assumer that used by credential providers when sts:AssumeRoleWithWebIdentity API is needed. + */ +export declare const getDefaultRoleAssumerWithWebIdentity: (stsOptions?: STSRoleAssumerOptions, stsPlugins?: Pluggable[]) => RoleAssumerWithWebIdentity; +/** + * The default credential providers depend STS client to assume role with desired API: sts:assumeRole, + * sts:assumeRoleWithWebIdentity, etc. This function decorates the default credential provider with role assumers which + * encapsulates the process of calling STS commands. This can only be imported by AWS client packages to avoid circular + * dependencies. + * + * @internal + * + * @deprecated this is no longer needed. Use the defaultProvider directly, + * which will load STS if needed. + */ +export declare const decorateDefaultCredentialProvider: (provider: DefaultCredentialProvider) => DefaultCredentialProvider; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts new file mode 100644 index 0000000..7833b21 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/defaultStsRoleAssumers.d.ts @@ -0,0 +1,43 @@ +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { AwsCredentialIdentity, Logger, Provider } from "@smithy/types"; +import type { AssumeRoleCommandInput } from "./commands/AssumeRoleCommand"; +import type { AssumeRoleWithWebIdentityCommandInput } from "./commands/AssumeRoleWithWebIdentityCommand"; +import type { STSClient, STSClientConfig } from "./STSClient"; +/** + * @public + */ +export type STSRoleAssumerOptions = Pick & { + credentialProviderLogger?: Logger; + parentClientConfig?: CredentialProviderOptions["parentClientConfig"]; +}; +/** + * @internal + */ +export type RoleAssumer = (sourceCreds: AwsCredentialIdentity, params: AssumeRoleCommandInput) => Promise; +/** + * The default role assumer that used by credential providers when sts:AssumeRole API is needed. + * @internal + */ +export declare const getDefaultRoleAssumer: (stsOptions: STSRoleAssumerOptions, STSClient: new (options: STSClientConfig) => STSClient) => RoleAssumer; +/** + * @internal + */ +export type RoleAssumerWithWebIdentity = (params: AssumeRoleWithWebIdentityCommandInput) => Promise; +/** + * The default role assumer that used by credential providers when sts:AssumeRoleWithWebIdentity API is needed. + * @internal + */ +export declare const getDefaultRoleAssumerWithWebIdentity: (stsOptions: STSRoleAssumerOptions, STSClient: new (options: STSClientConfig) => STSClient) => RoleAssumerWithWebIdentity; +/** + * @internal + */ +export type DefaultCredentialProvider = (input: any) => Provider; +/** + * The default credential providers depend STS client to assume role with desired API: sts:assumeRole, + * sts:assumeRoleWithWebIdentity, etc. This function decorates the default credential provider with role assumers which + * encapsulates the process of calling STS commands. This can only be imported by AWS client packages to avoid circular + * dependencies. + * + * @internal + */ +export declare const decorateDefaultCredentialProvider: (provider: DefaultCredentialProvider) => DefaultCredentialProvider; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..ca93660 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/EndpointParameters.d.ts @@ -0,0 +1,56 @@ +import type { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; +/** + * @public + */ +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; + useGlobalEndpoint?: boolean | undefined | Provider; +} +/** + * @public + */ +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; +/** + * @internal + */ +export declare const resolveClientEndpointParameters: (options: T & ClientInputEndpointParameters) => T & ClientResolvedEndpointParameters; +/** + * @internal + */ +export declare const commonParams: { + readonly UseGlobalEndpoint: { + readonly type: "builtInParams"; + readonly name: "useGlobalEndpoint"; + }; + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +/** + * @internal + */ +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; + UseGlobalEndpoint?: boolean | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..c1de67d --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2, Logger } from "@smithy/types"; +import type { EndpointParameters } from "./EndpointParameters"; +/** + * @internal + */ +export declare const defaultEndpointResolver: (endpointParams: EndpointParameters, context?: { + logger?: Logger; +}) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4dda20a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import type { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/extensionConfiguration.d.ts new file mode 100644 index 0000000..f80c369 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +/** + * @internal + */ +export interface STSExtensionConfiguration extends HttpHandlerExtensionConfiguration, DefaultExtensionConfiguration, AwsRegionExtensionConfiguration, HttpAuthExtensionConfiguration { +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts new file mode 100644 index 0000000..2f9af6e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/index.d.ts @@ -0,0 +1,19 @@ +/** + * Security Token Service + *

Security Token Service (STS) enables you to request temporary, limited-privilege + * credentials for users. This guide provides descriptions of the STS API. For + * more information about using this service, see Temporary Security Credentials.

+ * + * @packageDocumentation + */ +export * from "./STSClient"; +export * from "./STS"; +export type { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { STSExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export * from "./defaultRoleAssumers"; +export { STSServiceException } from "./models/STSServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/STSServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/STSServiceException.d.ts new file mode 100644 index 0000000..de90dfa --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/STSServiceException.d.ts @@ -0,0 +1,14 @@ +import { type ServiceExceptionOptions as __ServiceExceptionOptions, ServiceException as __ServiceException } from "@smithy/smithy-client"; +export type { __ServiceExceptionOptions }; +export { __ServiceException }; +/** + * @public + * + * Base exception class for all service exceptions from STS service. + */ +export declare class STSServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/errors.d.ts new file mode 100644 index 0000000..e1f8613 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/errors.d.ts @@ -0,0 +1,107 @@ +import type { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { STSServiceException as __BaseException } from "./STSServiceException"; +/** + *

The web identity token that was passed is expired or is not valid. Get a new identity + * token from the identity provider and then retry the request.

+ * @public + */ +export declare class ExpiredTokenException extends __BaseException { + readonly name: "ExpiredTokenException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The request was rejected because the policy document was malformed. The error message + * describes the specific error.

+ * @public + */ +export declare class MalformedPolicyDocumentException extends __BaseException { + readonly name: "MalformedPolicyDocumentException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The request was rejected because the total packed size of the session policies and + * session tags combined was too large. An Amazon Web Services conversion compresses the session policy + * document, session policy ARNs, and session tags into a packed binary format that has a + * separate limit. The error message indicates by percentage how close the policies and + * tags are to the upper size limit. For more information, see Passing Session Tags in STS in + * the IAM User Guide.

+ *

You could receive this error even though you meet other defined session policy and + * session tag limits. For more information, see IAM and STS Entity Character Limits in the IAM User + * Guide.

+ * @public + */ +export declare class PackedPolicyTooLargeException extends __BaseException { + readonly name: "PackedPolicyTooLargeException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

STS is not activated in the requested region for the account that is being asked to + * generate credentials. The account administrator must use the IAM console to activate + * STS in that region. For more information, see Activating and Deactivating STS in an Amazon Web Services Region in the IAM + * User Guide.

+ * @public + */ +export declare class RegionDisabledException extends __BaseException { + readonly name: "RegionDisabledException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The identity provider (IdP) reported that authentication failed. This might be because + * the claim is invalid.

+ *

If this error is returned for the AssumeRoleWithWebIdentity operation, it + * can also mean that the claim has expired or has been explicitly revoked.

+ * @public + */ +export declare class IDPRejectedClaimException extends __BaseException { + readonly name: "IDPRejectedClaimException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The web identity token that was passed could not be validated by Amazon Web Services. Get a new + * identity token from the identity provider and then retry the request.

+ * @public + */ +export declare class InvalidIdentityTokenException extends __BaseException { + readonly name: "InvalidIdentityTokenException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} +/** + *

The request could not be fulfilled because the identity provider (IDP) that was asked + * to verify the incoming identity token could not be reached. This is often a transient + * error caused by network conditions. Retry the request a limited number of times so that + * you don't exceed the request rate. If the error persists, the identity provider might be + * down or not responding.

+ * @public + */ +export declare class IDPCommunicationErrorException extends __BaseException { + readonly name: "IDPCommunicationErrorException"; + readonly $fault: "client"; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/models_0.d.ts new file mode 100644 index 0000000..2ee8377 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/models_0.d.ts @@ -0,0 +1,588 @@ +/** + *

The identifiers for the temporary security credentials that the operation + * returns.

+ * @public + */ +export interface AssumedRoleUser { + /** + *

A unique identifier that contains the role ID and the role session name of the role that + * is being assumed. The role ID is generated by Amazon Web Services when the role is created.

+ * @public + */ + AssumedRoleId: string | undefined; + /** + *

The ARN of the temporary security credentials that are returned from the AssumeRole action. For more information about ARNs and how to use them in + * policies, see IAM Identifiers in the + * IAM User Guide.

+ * @public + */ + Arn: string | undefined; +} +/** + *

A reference to the IAM managed policy that is passed as a session policy for a role + * session or a federated user session.

+ * @public + */ +export interface PolicyDescriptorType { + /** + *

The Amazon Resource Name (ARN) of the IAM managed policy to use as a session policy + * for the role. For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon Web Services + * Service Namespaces in the Amazon Web Services General Reference.

+ * @public + */ + arn?: string | undefined; +} +/** + *

Contains information about the provided context. This includes the signed and encrypted + * trusted context assertion and the context provider ARN from which the trusted context + * assertion was generated.

+ * @public + */ +export interface ProvidedContext { + /** + *

The context provider ARN from which the trusted context assertion was generated.

+ * @public + */ + ProviderArn?: string | undefined; + /** + *

The signed and encrypted trusted context assertion generated by the context provider. + * The trusted context assertion is signed and encrypted by Amazon Web Services STS.

+ * @public + */ + ContextAssertion?: string | undefined; +} +/** + *

You can pass custom key-value pair attributes when you assume a role or federate a user. + * These are called session tags. You can then use the session tags to control access to + * resources. For more information, see Tagging Amazon Web Services STS Sessions in the + * IAM User Guide.

+ * @public + */ +export interface Tag { + /** + *

The key for a session tag.

+ *

You can pass up to 50 session tags. The plain text session tag keys can’t exceed 128 + * characters. For these and additional limits, see IAM + * and STS Character Limits in the IAM User Guide.

+ * @public + */ + Key: string | undefined; + /** + *

The value for a session tag.

+ *

You can pass up to 50 session tags. The plain text session tag values can’t exceed 256 + * characters. For these and additional limits, see IAM + * and STS Character Limits in the IAM User Guide.

+ * @public + */ + Value: string | undefined; +} +/** + * @public + */ +export interface AssumeRoleRequest { + /** + *

The Amazon Resource Name (ARN) of the role to assume.

+ * @public + */ + RoleArn: string | undefined; + /** + *

An identifier for the assumed role session.

+ *

Use the role session name to uniquely identify a session when the same role is assumed + * by different principals or for different reasons. In cross-account scenarios, the role + * session name is visible to, and can be logged by the account that owns the role. The role + * session name is also used in the ARN of the assumed role principal. This means that + * subsequent cross-account API requests that use the temporary security credentials will + * expose the role session name to the external account in their CloudTrail logs.

+ *

For security purposes, administrators can view this field in CloudTrail logs to help identify who performed an action in Amazon Web Services. Your + * administrator might require that you specify your user name as the session name when you + * assume the role. For more information, see + * sts:RoleSessionName + * .

+ *

The regex used to validate this parameter is a string of + * characters consisting of upper- and lower-case alphanumeric characters with no spaces. + * You can also include underscores or any of the following characters: +=,.@-

+ * @public + */ + RoleSessionName: string | undefined; + /** + *

The Amazon Resource Names (ARNs) of the IAM managed policies that you want to use as + * managed session policies. The policies must exist in the same account as the role.

+ *

This parameter is optional. You can provide up to 10 managed policy ARNs. However, the + * plaintext that you use for both inline and managed session policies can't exceed 2,048 + * characters. For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon Web Services + * Service Namespaces in the Amazon Web Services General Reference.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ * @public + */ + PolicyArns?: PolicyDescriptorType[] | undefined; + /** + *

An IAM policy in JSON format that you want to use as an inline session policy.

+ *

This parameter is optional. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

The plaintext that you use for both inline and managed session policies can't exceed + * 2,048 characters. The JSON policy characters can be any ASCII character from the space + * character to the end of the valid character list (\u0020 through \u00FF). It can also + * include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) + * characters.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

For more information about role session permissions, see Session + * policies.

+ * @public + */ + Policy?: string | undefined; + /** + *

The duration, in seconds, of the role session. The value specified can range from 900 + * seconds (15 minutes) up to the maximum session duration set for the role. The maximum + * session duration setting can have a value from 1 hour to 12 hours. If you specify a value + * higher than this setting or the administrator setting (whichever is lower), the operation + * fails. For example, if you specify a session duration of 12 hours, but your administrator + * set the maximum session duration to 6 hours, your operation fails.

+ *

Role chaining limits your Amazon Web Services CLI or Amazon Web Services API role session to a maximum of one hour. + * When you use the AssumeRole API operation to assume a role, you can specify + * the duration of your role session with the DurationSeconds parameter. You can + * specify a parameter value of up to 43200 seconds (12 hours), depending on the maximum + * session duration setting for your role. However, if you assume a role using role chaining + * and provide a DurationSeconds parameter value greater than one hour, the + * operation fails. To learn how to view the maximum value for your role, see Update the maximum session duration for a role.

+ *

By default, the value is set to 3600 seconds.

+ * + *

The DurationSeconds parameter is separate from the duration of a console + * session that you might request using the returned credentials. The request to the + * federation endpoint for a console sign-in token takes a SessionDuration + * parameter that specifies the maximum length of the console session. For more + * information, see Creating a URL + * that Enables Federated Users to Access the Amazon Web Services Management Console in the + * IAM User Guide.

+ *
+ * @public + */ + DurationSeconds?: number | undefined; + /** + *

A list of session tags that you want to pass. Each session tag consists of a key name + * and an associated value. For more information about session tags, see Tagging Amazon Web Services STS + * Sessions in the IAM User Guide.

+ *

This parameter is optional. You can pass up to 50 session tags. The plaintext session + * tag keys can’t exceed 128 characters, and the values can’t exceed 256 characters. For these + * and additional limits, see IAM + * and STS Character Limits in the IAM User Guide.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

You can pass a session tag with the same key as a tag that is already attached to the + * role. When you do, session tags override a role tag with the same key.

+ *

Tag key–value pairs are not case sensitive, but case is preserved. This means that you + * cannot have separate Department and department tag keys. Assume + * that the role has the Department=Marketing tag and you pass the + * department=engineering session tag. Department + * and department are not saved as separate tags, and the session tag passed in + * the request takes precedence over the role tag.

+ *

Additionally, if you used temporary credentials to perform this operation, the new + * session inherits any transitive session tags from the calling session. If you pass a + * session tag with the same key as an inherited tag, the operation fails. To view the + * inherited tags for a session, see the CloudTrail logs. For more information, see Viewing Session Tags in CloudTrail in the + * IAM User Guide.

+ * @public + */ + Tags?: Tag[] | undefined; + /** + *

A list of keys for session tags that you want to set as transitive. If you set a tag key + * as transitive, the corresponding key and value passes to subsequent sessions in a role + * chain. For more information, see Chaining Roles + * with Session Tags in the IAM User Guide.

+ *

This parameter is optional. The transitive status of a session tag does not impact its + * packed binary size.

+ *

If you choose not to specify a transitive tag key, then no tags are passed from this + * session to any subsequent sessions.

+ * @public + */ + TransitiveTagKeys?: string[] | undefined; + /** + *

A unique identifier that might be required when you assume a role in another account. If + * the administrator of the account to which the role belongs provided you with an external + * ID, then provide that value in the ExternalId parameter. This value can be any + * string, such as a passphrase or account number. A cross-account role is usually set up to + * trust everyone in an account. Therefore, the administrator of the trusting account might + * send an external ID to the administrator of the trusted account. That way, only someone + * with the ID can assume the role, rather than everyone in the account. For more information + * about the external ID, see How to Use an External ID + * When Granting Access to Your Amazon Web Services Resources to a Third Party in the + * IAM User Guide.

+ *

The regex used to validate this parameter is a string of + * characters consisting of upper- and lower-case alphanumeric characters with no spaces. + * You can also include underscores or any of the following characters: +=,.@:\/-

+ * @public + */ + ExternalId?: string | undefined; + /** + *

The identification number of the MFA device that is associated with the user who is + * making the AssumeRole call. Specify this value if the trust policy of the role + * being assumed includes a condition that requires MFA authentication. The value is either + * the serial number for a hardware device (such as GAHT12345678) or an Amazon + * Resource Name (ARN) for a virtual device (such as + * arn:aws:iam::123456789012:mfa/user).

+ *

The regex used to validate this parameter is a string of + * characters consisting of upper- and lower-case alphanumeric characters with no spaces. + * You can also include underscores or any of the following characters: +=/:,.@-

+ * @public + */ + SerialNumber?: string | undefined; + /** + *

The value provided by the MFA device, if the trust policy of the role being assumed + * requires MFA. (In other words, if the policy includes a condition that tests for MFA). If + * the role being assumed requires MFA and if the TokenCode value is missing or + * expired, the AssumeRole call returns an "access denied" error.

+ *

The format for this parameter, as described by its regex pattern, is a sequence of six + * numeric digits.

+ * @public + */ + TokenCode?: string | undefined; + /** + *

The source identity specified by the principal that is calling the + * AssumeRole operation. The source identity value persists across chained role sessions.

+ *

You can require users to specify a source identity when they assume a role. You do this + * by using the + * sts:SourceIdentity + * condition key in a role trust policy. You + * can use source identity information in CloudTrail logs to determine who took actions with a + * role. You can use the aws:SourceIdentity condition key to further control + * access to Amazon Web Services resources based on the value of source identity. For more information about + * using source identity, see Monitor and control + * actions taken with assumed roles in the + * IAM User Guide.

+ *

The regex used to validate this parameter is a string of characters consisting of upper- + * and lower-case alphanumeric characters with no spaces. You can also include underscores or + * any of the following characters: +=,.@-. You cannot use a value that begins with the text + * aws:. This prefix is reserved for Amazon Web Services internal use.

+ * @public + */ + SourceIdentity?: string | undefined; + /** + *

A list of previously acquired trusted context assertions in the format of a JSON array. + * The trusted context assertion is signed and encrypted by Amazon Web Services STS.

+ *

The following is an example of a ProvidedContext value that includes a + * single trusted context assertion and the ARN of the context provider from which the trusted + * context assertion was generated.

+ *

+ * [\{"ProviderArn":"arn:aws:iam::aws:contextProvider/IdentityCenter","ContextAssertion":"trusted-context-assertion"\}] + *

+ * @public + */ + ProvidedContexts?: ProvidedContext[] | undefined; +} +/** + *

Amazon Web Services credentials for API authentication.

+ * @public + */ +export interface Credentials { + /** + *

The access key ID that identifies the temporary security credentials.

+ * @public + */ + AccessKeyId: string | undefined; + /** + *

The secret access key that can be used to sign requests.

+ * @public + */ + SecretAccessKey: string | undefined; + /** + *

The token that users must pass to the service API to use the temporary + * credentials.

+ * @public + */ + SessionToken: string | undefined; + /** + *

The date on which the current credentials expire.

+ * @public + */ + Expiration: Date | undefined; +} +/** + *

Contains the response to a successful AssumeRole request, including + * temporary Amazon Web Services credentials that can be used to make Amazon Web Services requests.

+ * @public + */ +export interface AssumeRoleResponse { + /** + *

The temporary security credentials, which include an access key ID, a secret access key, + * and a security (or session) token.

+ * + *

The size of the security token that STS API operations return is not fixed. We + * strongly recommend that you make no assumptions about the maximum size.

+ *
+ * @public + */ + Credentials?: Credentials | undefined; + /** + *

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you + * can use to refer to the resulting temporary security credentials. For example, you can + * reference these credentials as a principal in a resource-based policy by using the ARN or + * assumed role ID. The ARN and ID include the RoleSessionName that you specified + * when you called AssumeRole.

+ * @public + */ + AssumedRoleUser?: AssumedRoleUser | undefined; + /** + *

A percentage value that indicates the packed size of the session policies and session + * tags combined passed in the request. The request fails if the packed size is greater than 100 percent, + * which means the policies and tags exceeded the allowed space.

+ * @public + */ + PackedPolicySize?: number | undefined; + /** + *

The source identity specified by the principal that is calling the + * AssumeRole operation.

+ *

You can require users to specify a source identity when they assume a role. You do this + * by using the sts:SourceIdentity condition key in a role trust policy. You can + * use source identity information in CloudTrail logs to determine who took actions with a role. + * You can use the aws:SourceIdentity condition key to further control access to + * Amazon Web Services resources based on the value of source identity. For more information about using + * source identity, see Monitor and control + * actions taken with assumed roles in the + * IAM User Guide.

+ *

The regex used to validate this parameter is a string of characters consisting of upper- + * and lower-case alphanumeric characters with no spaces. You can also include underscores or + * any of the following characters: =,.@-

+ * @public + */ + SourceIdentity?: string | undefined; +} +/** + * @public + */ +export interface AssumeRoleWithWebIdentityRequest { + /** + *

The Amazon Resource Name (ARN) of the role that the caller is assuming.

+ * + *

Additional considerations apply to Amazon Cognito identity pools that assume cross-account IAM roles. The trust policies of these roles must accept the + * cognito-identity.amazonaws.com service principal and must contain the + * cognito-identity.amazonaws.com:aud condition key to restrict role + * assumption to users from your intended identity pools. A policy that trusts Amazon Cognito + * identity pools without this condition creates a risk that a user from an unintended + * identity pool can assume the role. For more information, see Trust policies for + * IAM roles in Basic (Classic) authentication in the Amazon Cognito + * Developer Guide.

+ *
+ * @public + */ + RoleArn: string | undefined; + /** + *

An identifier for the assumed role session. Typically, you pass the name or identifier + * that is associated with the user who is using your application. That way, the temporary + * security credentials that your application will use are associated with that user. This + * session name is included as part of the ARN and assumed role ID in the + * AssumedRoleUser response element.

+ *

For security purposes, administrators can view this field in CloudTrail logs to help identify who performed an action in Amazon Web Services. Your + * administrator might require that you specify your user name as the session name when you + * assume the role. For more information, see + * sts:RoleSessionName + * .

+ *

The regex used to validate this parameter is a string of characters + * consisting of upper- and lower-case alphanumeric characters with no spaces. You can + * also include underscores or any of the following characters: =,.@-

+ * @public + */ + RoleSessionName: string | undefined; + /** + *

The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity + * provider. Your application must get this token by authenticating the user who is using your + * application with a web identity provider before the application makes an + * AssumeRoleWithWebIdentity call. Timestamps in the token must be formatted + * as either an integer or a long integer. Tokens must be signed using either RSA keys (RS256, + * RS384, or RS512) or ECDSA keys (ES256, ES384, or ES512).

+ * @public + */ + WebIdentityToken: string | undefined; + /** + *

The fully qualified host component of the domain name of the OAuth 2.0 identity + * provider. Do not specify this value for an OpenID Connect identity provider.

+ *

Currently www.amazon.com and graph.facebook.com are the only + * supported identity providers for OAuth 2.0 access tokens. Do not include URL schemes and + * port numbers.

+ *

Do not specify this value for OpenID Connect ID tokens.

+ * @public + */ + ProviderId?: string | undefined; + /** + *

The Amazon Resource Names (ARNs) of the IAM managed policies that you want to use as + * managed session policies. The policies must exist in the same account as the role.

+ *

This parameter is optional. You can provide up to 10 managed policy ARNs. However, the + * plaintext that you use for both inline and managed session policies can't exceed 2,048 + * characters. For more information about ARNs, see Amazon Resource Names (ARNs) and Amazon Web Services + * Service Namespaces in the Amazon Web Services General Reference.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ *

Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ * @public + */ + PolicyArns?: PolicyDescriptorType[] | undefined; + /** + *

An IAM policy in JSON format that you want to use as an inline session policy.

+ *

This parameter is optional. Passing policies to this operation returns new + * temporary credentials. The resulting session's permissions are the intersection of the + * role's identity-based policy and the session policies. You can use the role's temporary + * credentials in subsequent Amazon Web Services API calls to access resources in the account that owns + * the role. You cannot use session policies to grant more permissions than those allowed + * by the identity-based policy of the role that is being assumed. For more information, see + * Session + * Policies in the IAM User Guide.

+ *

The plaintext that you use for both inline and managed session policies can't exceed + * 2,048 characters. The JSON policy characters can be any ASCII character from the space + * character to the end of the valid character list (\u0020 through \u00FF). It can also + * include the tab (\u0009), linefeed (\u000A), and carriage return (\u000D) + * characters.

+ *

For more information about role session permissions, see Session + * policies.

+ * + *

An Amazon Web Services conversion compresses the passed inline session policy, managed policy ARNs, + * and session tags into a packed binary format that has a separate limit. Your request can + * fail for this limit even if your plaintext meets the other requirements. The + * PackedPolicySize response element indicates by percentage how close the + * policies and tags for your request are to the upper size limit.

+ *
+ * @public + */ + Policy?: string | undefined; + /** + *

The duration, in seconds, of the role session. The value can range from 900 seconds (15 + * minutes) up to the maximum session duration setting for the role. This setting can have a + * value from 1 hour to 12 hours. If you specify a value higher than this setting, the + * operation fails. For example, if you specify a session duration of 12 hours, but your + * administrator set the maximum session duration to 6 hours, your operation fails. To learn + * how to view the maximum value for your role, see View the + * Maximum Session Duration Setting for a Role in the + * IAM User Guide.

+ *

By default, the value is set to 3600 seconds.

+ * + *

The DurationSeconds parameter is separate from the duration of a console + * session that you might request using the returned credentials. The request to the + * federation endpoint for a console sign-in token takes a SessionDuration + * parameter that specifies the maximum length of the console session. For more + * information, see Creating a URL + * that Enables Federated Users to Access the Amazon Web Services Management Console in the + * IAM User Guide.

+ *
+ * @public + */ + DurationSeconds?: number | undefined; +} +/** + *

Contains the response to a successful AssumeRoleWithWebIdentity + * request, including temporary Amazon Web Services credentials that can be used to make Amazon Web Services requests.

+ * @public + */ +export interface AssumeRoleWithWebIdentityResponse { + /** + *

The temporary security credentials, which include an access key ID, a secret access key, + * and a security token.

+ * + *

The size of the security token that STS API operations return is not fixed. We + * strongly recommend that you make no assumptions about the maximum size.

+ *
+ * @public + */ + Credentials?: Credentials | undefined; + /** + *

The unique user identifier that is returned by the identity provider. This identifier is + * associated with the WebIdentityToken that was submitted with the + * AssumeRoleWithWebIdentity call. The identifier is typically unique to the + * user and the application that acquired the WebIdentityToken (pairwise + * identifier). For OpenID Connect ID tokens, this field contains the value returned by the + * identity provider as the token's sub (Subject) claim.

+ * @public + */ + SubjectFromWebIdentityToken?: string | undefined; + /** + *

The Amazon Resource Name (ARN) and the assumed role ID, which are identifiers that you + * can use to refer to the resulting temporary security credentials. For example, you can + * reference these credentials as a principal in a resource-based policy by using the ARN or + * assumed role ID. The ARN and ID include the RoleSessionName that you specified + * when you called AssumeRole.

+ * @public + */ + AssumedRoleUser?: AssumedRoleUser | undefined; + /** + *

A percentage value that indicates the packed size of the session policies and session + * tags combined passed in the request. The request fails if the packed size is greater than 100 percent, + * which means the policies and tags exceeded the allowed space.

+ * @public + */ + PackedPolicySize?: number | undefined; + /** + *

The issuing authority of the web identity token presented. For OpenID Connect ID + * tokens, this contains the value of the iss field. For OAuth 2.0 access tokens, + * this contains the value of the ProviderId parameter that was passed in the + * AssumeRoleWithWebIdentity request.

+ * @public + */ + Provider?: string | undefined; + /** + *

The intended audience (also known as client ID) of the web identity token. This is + * traditionally the client identifier issued to the application that requested the web + * identity token.

+ * @public + */ + Audience?: string | undefined; + /** + *

The value of the source identity that is returned in the JSON web token (JWT) from the + * identity provider.

+ *

You can require users to set a source identity value when they assume a role. You do + * this by using the sts:SourceIdentity condition key in a role trust policy. + * That way, actions that are taken with the role are associated with that user. After the + * source identity is set, the value cannot be changed. It is present in the request for all + * actions that are taken by the role and persists across chained role + * sessions. You can configure your identity provider to use an attribute associated with your + * users, like user name or email, as the source identity when calling + * AssumeRoleWithWebIdentity. You do this by adding a claim to the JSON web + * token. To learn more about OIDC tokens and claims, see Using Tokens with User Pools in the Amazon Cognito Developer Guide. + * For more information about using source identity, see Monitor and control + * actions taken with assumed roles in the + * IAM User Guide.

+ *

The regex used to validate this parameter is a string of characters + * consisting of upper- and lower-case alphanumeric characters with no spaces. You can + * also include underscores or any of the following characters: =,.@-

+ * @public + */ + SourceIdentity?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..d6e5b3e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts @@ -0,0 +1,64 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import type { STSClientConfig } from "./STSClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: import("@smithy/protocol-http").HttpHandler | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (params: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: boolean | undefined | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts new file mode 100644 index 0000000..5cd4ef1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts @@ -0,0 +1,62 @@ +import { NoAuthSigner } from "@smithy/core"; +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { STSClientConfig } from "./STSClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved) => Promise; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + }[]; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: RequestHandler | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + credentialDefaultProvider?: (input: any) => import("@smithy/types").AwsCredentialIdentityProvider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (params: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: boolean | undefined | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts new file mode 100644 index 0000000..57434cc --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts @@ -0,0 +1,63 @@ +import type { STSClientConfig } from "./STSClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: import("@smithy/types").NodeHttpHandlerOptions | import("@smithy/types").FetchHttpHandlerOptions | Record | import("@smithy/protocol-http").HttpHandler | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: (config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved) => Promise; + credentialDefaultProvider: ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) | ((_: unknown) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: import("@smithy/smithy-client").DefaultsMode | import("@smithy/types").Provider; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: string | undefined | import("@smithy/types").Provider; + retryStrategy?: import("@smithy/types").RetryStrategy | import("@smithy/types").RetryStrategyV2; + endpoint?: ((string | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider) & (string | import("@smithy/types").Provider | import("@smithy/types").Endpoint | import("@smithy/types").Provider | import("@smithy/types").EndpointV2 | import("@smithy/types").Provider)) | undefined; + endpointProvider: (params: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: import("@smithy/types").IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + })[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: import("@smithy/types").AwsCredentialIdentity | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: import("@smithy/types").RequestSigner | ((authScheme?: import("@smithy/types").AuthScheme) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new (options: import("@smithy/signature-v4").SignatureV4Init & import("@smithy/signature-v4").SignatureV4CryptoInit) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: boolean | undefined | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..21b5fd3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts @@ -0,0 +1,38 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsQueryProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import type { IdentityProviderConfig } from "@smithy/types"; +import type { STSClientConfig } from "./STSClient"; +/** + * @internal + */ +export declare const getRuntimeConfig: (config: STSClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: (params: import("./endpoint/EndpointParameters").EndpointParameters, context?: { + logger?: import("@smithy/types").Logger; + }) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + httpAuthSchemes: import("@smithy/types").HttpAuthScheme[] | ({ + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | undefined; + signer: AwsSdkSigV4Signer; + } | { + schemeId: string; + identityProvider: (ipc: IdentityProviderConfig) => import("@smithy/types").IdentityProvider | (() => Promise<{}>); + signer: NoAuthSigner; + })[]; + logger: import("@smithy/types").Logger; + protocol: import("@smithy/types").ClientProtocol | import("@smithy/types").ClientProtocolCtor | typeof AwsQueryProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeExtensions.d.ts new file mode 100644 index 0000000..8b34a63 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeExtensions.d.ts @@ -0,0 +1,17 @@ +import type { STSExtensionConfiguration } from "./extensionConfiguration"; +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: STSExtensionConfiguration): void; +} +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +/** + * @internal + */ +export declare const resolveRuntimeExtensions: (runtimeConfig: any, extensions: RuntimeExtension[]) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/schemas/schemas_0.d.ts new file mode 100644 index 0000000..e8f1d2f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/schemas/schemas_0.d.ts @@ -0,0 +1,27 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import type { StaticErrorSchema, StaticOperationSchema, StaticStructureSchema } from "@smithy/types"; +export declare var STSServiceException$: StaticErrorSchema; +export declare var ExpiredTokenException$: StaticErrorSchema; +export declare var IDPCommunicationErrorException$: StaticErrorSchema; +export declare var IDPRejectedClaimException$: StaticErrorSchema; +export declare var InvalidIdentityTokenException$: StaticErrorSchema; +export declare var MalformedPolicyDocumentException$: StaticErrorSchema; +export declare var PackedPolicyTooLargeException$: StaticErrorSchema; +export declare var RegionDisabledException$: StaticErrorSchema; +/** + * TypeRegistry instances containing modeled errors. + * @internal + * + */ +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AssumedRoleUser$: StaticStructureSchema; +export declare var AssumeRoleRequest$: StaticStructureSchema; +export declare var AssumeRoleResponse$: StaticStructureSchema; +export declare var AssumeRoleWithWebIdentityRequest$: StaticStructureSchema; +export declare var AssumeRoleWithWebIdentityResponse$: StaticStructureSchema; +export declare var Credentials$: StaticStructureSchema; +export declare var PolicyDescriptorType$: StaticStructureSchema; +export declare var ProvidedContext$: StaticStructureSchema; +export declare var Tag$: StaticStructureSchema; +export declare var AssumeRole$: StaticOperationSchema; +export declare var AssumeRoleWithWebIdentity$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentity.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentity.d.ts new file mode 100644 index 0000000..7749e20 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentity.d.ts @@ -0,0 +1,38 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { CognitoIdentityClient } from "./CognitoIdentityClient"; +import { + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, +} from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +export interface CognitoIdentity { + getCredentialsForIdentity( + args: GetCredentialsForIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getCredentialsForIdentity( + args: GetCredentialsForIdentityCommandInput, + cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void + ): void; + getCredentialsForIdentity( + args: GetCredentialsForIdentityCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetCredentialsForIdentityCommandOutput) => void + ): void; + getId( + args: GetIdCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getId( + args: GetIdCommandInput, + cb: (err: any, data?: GetIdCommandOutput) => void + ): void; + getId( + args: GetIdCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetIdCommandOutput) => void + ): void; +} +export declare class CognitoIdentity + extends CognitoIdentityClient + implements CognitoIdentity {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentityClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentityClient.d.ts new file mode 100644 index 0000000..8678537 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/CognitoIdentityClient.d.ts @@ -0,0 +1,126 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, + UserAgent as __UserAgent, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, +} from "./commands/GetCredentialsForIdentityCommand"; +import { GetIdCommandInput, GetIdCommandOutput } from "./commands/GetIdCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = + | GetCredentialsForIdentityCommandInput + | GetIdCommandInput; +export type ServiceOutputTypes = + | GetCredentialsForIdentityCommandOutput + | GetIdCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: __Provider<__UserAgent>; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type CognitoIdentityClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface CognitoIdentityClientConfig + extends CognitoIdentityClientConfigType {} +export type CognitoIdentityClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface CognitoIdentityClientResolvedConfig + extends CognitoIdentityClientResolvedConfigType {} +export declare class CognitoIdentityClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + CognitoIdentityClientResolvedConfig +> { + readonly config: CognitoIdentityClientResolvedConfig; + constructor( + ...[configuration]: __CheckOptionalClientConfig + ); + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..bc87c28 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + HttpAuthScheme, +} from "@smithy/types"; +import { CognitoIdentityHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): CognitoIdentityHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..8223f51 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,47 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core/httpAuthSchemes"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { CognitoIdentityClientResolvedConfig } from "../CognitoIdentityClient"; +export interface CognitoIdentityHttpAuthSchemeParameters + extends HttpAuthSchemeParameters { + region?: string; +} +export interface CognitoIdentityHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + CognitoIdentityClientResolvedConfig, + HandlerExecutionContext, + CognitoIdentityHttpAuthSchemeParameters, + object + > {} +export declare const defaultCognitoIdentityHttpAuthSchemeParametersProvider: ( + config: CognitoIdentityClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface CognitoIdentityHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultCognitoIdentityHttpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: CognitoIdentityHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: CognitoIdentityHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts new file mode 100644 index 0000000..9270d7e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetCredentialsForIdentityCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { + GetCredentialsForIdentityInput, + GetCredentialsForIdentityResponse, +} from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetCredentialsForIdentityCommandInput + extends GetCredentialsForIdentityInput {} +export interface GetCredentialsForIdentityCommandOutput + extends GetCredentialsForIdentityResponse, + __MetadataBearer {} +declare const GetCredentialsForIdentityCommand_base: { + new ( + input: GetCredentialsForIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: GetCredentialsForIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetCredentialsForIdentityCommandInput, + GetCredentialsForIdentityCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetCredentialsForIdentityCommand extends GetCredentialsForIdentityCommand_base { + protected static __types: { + api: { + input: GetCredentialsForIdentityInput; + output: GetCredentialsForIdentityResponse; + }; + sdk: { + input: GetCredentialsForIdentityCommandInput; + output: GetCredentialsForIdentityCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetIdCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetIdCommand.d.ts new file mode 100644 index 0000000..f57d0c7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/GetIdCommand.d.ts @@ -0,0 +1,41 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes, +} from "../CognitoIdentityClient"; +import { GetIdInput, GetIdResponse } from "../models/models_0"; +export { __MetadataBearer }; +export { $Command }; +export interface GetIdCommandInput extends GetIdInput {} +export interface GetIdCommandOutput extends GetIdResponse, __MetadataBearer {} +declare const GetIdCommand_base: { + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl< + GetIdCommandInput, + GetIdCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new (input: GetIdCommandInput): import("@smithy/smithy-client").CommandImpl< + GetIdCommandInput, + GetIdCommandOutput, + CognitoIdentityClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetIdCommand extends GetIdCommand_base { + protected static __types: { + api: { + input: GetIdInput; + output: GetIdResponse; + }; + sdk: { + input: GetIdCommandInput; + output: GetIdCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/index.d.ts new file mode 100644 index 0000000..dc560a4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/commands/index.d.ts @@ -0,0 +1,2 @@ +export * from "./GetCredentialsForIdentityCommand"; +export * from "./GetIdCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..c4baac5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/EndpointParameters.d.ts @@ -0,0 +1,51 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..5909925 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4b23899 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/extensionConfiguration.d.ts new file mode 100644 index 0000000..956fdc2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface CognitoIdentityExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/index.d.ts new file mode 100644 index 0000000..1e774d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/index.d.ts @@ -0,0 +1,10 @@ +export * from "./CognitoIdentityClient"; +export * from "./CognitoIdentity"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { CognitoIdentityServiceException } from "./models/CognitoIdentityServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts new file mode 100644 index 0000000..ba28be3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/CognitoIdentityServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class CognitoIdentityServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/errors.d.ts new file mode 100644 index 0000000..34d67d4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/errors.d.ts @@ -0,0 +1,68 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { CognitoIdentityServiceException as __BaseException } from "./CognitoIdentityServiceException"; +export declare class ExternalServiceException extends __BaseException { + readonly name: "ExternalServiceException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InternalErrorException extends __BaseException { + readonly name: "InternalErrorException"; + readonly $fault: "server"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidIdentityPoolConfigurationException extends __BaseException { + readonly name: "InvalidIdentityPoolConfigurationException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType< + InvalidIdentityPoolConfigurationException, + __BaseException + > + ); +} +export declare class InvalidParameterException extends __BaseException { + readonly name: "InvalidParameterException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class NotAuthorizedException extends __BaseException { + readonly name: "NotAuthorizedException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ResourceConflictException extends __BaseException { + readonly name: "ResourceConflictException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class LimitExceededException extends __BaseException { + readonly name: "LimitExceededException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/models_0.d.ts new file mode 100644 index 0000000..7ef0c1f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/models/models_0.d.ts @@ -0,0 +1,23 @@ +export interface GetCredentialsForIdentityInput { + IdentityId: string | undefined; + Logins?: Record | undefined; + CustomRoleArn?: string | undefined; +} +export interface Credentials { + AccessKeyId?: string | undefined; + SecretKey?: string | undefined; + SessionToken?: string | undefined; + Expiration?: Date | undefined; +} +export interface GetCredentialsForIdentityResponse { + IdentityId?: string | undefined; + Credentials?: Credentials | undefined; +} +export interface GetIdInput { + AccountId?: string | undefined; + IdentityPoolId: string | undefined; + Logins?: Record | undefined; +} +export interface GetIdResponse { + IdentityId?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..b4bcf94 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.browser.d.ts @@ -0,0 +1,122 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts new file mode 100644 index 0000000..50dc960 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.d.ts @@ -0,0 +1,117 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts new file mode 100644 index 0000000..e60bb08 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.native.d.ts @@ -0,0 +1,126 @@ +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsJson1_1Protocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..cd5e144 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeConfig.shared.d.ts @@ -0,0 +1,60 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsJson1_1Protocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { CognitoIdentityClientConfig } from "./CognitoIdentityClient"; +export declare const getRuntimeConfig: ( + config: CognitoIdentityClientConfig +) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").CognitoIdentityHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsJson1_1Protocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeExtensions.d.ts new file mode 100644 index 0000000..3ce8366 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/runtimeExtensions.d.ts @@ -0,0 +1,13 @@ +import { CognitoIdentityExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure( + extensionConfiguration: CognitoIdentityExtensionConfiguration + ): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/schemas/schemas_0.d.ts new file mode 100644 index 0000000..d45fba2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/schemas/schemas_0.d.ts @@ -0,0 +1,24 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var CognitoIdentityServiceException$: StaticErrorSchema; +export declare var ExternalServiceException$: StaticErrorSchema; +export declare var InternalErrorException$: StaticErrorSchema; +export declare var InvalidIdentityPoolConfigurationException$: StaticErrorSchema; +export declare var InvalidParameterException$: StaticErrorSchema; +export declare var LimitExceededException$: StaticErrorSchema; +export declare var NotAuthorizedException$: StaticErrorSchema; +export declare var ResourceConflictException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var Credentials$: StaticStructureSchema; +export declare var GetCredentialsForIdentityInput$: StaticStructureSchema; +export declare var GetCredentialsForIdentityResponse$: StaticStructureSchema; +export declare var GetIdInput$: StaticStructureSchema; +export declare var GetIdResponse$: StaticStructureSchema; +export declare var GetCredentialsForIdentity$: StaticOperationSchema; +export declare var GetId$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/Signin.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/Signin.d.ts new file mode 100644 index 0000000..89e01fe --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/Signin.d.ts @@ -0,0 +1,22 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, +} from "./commands/CreateOAuth2TokenCommand"; +import { SigninClient } from "./SigninClient"; +export interface Signin { + createOAuth2Token( + args: CreateOAuth2TokenCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createOAuth2Token( + args: CreateOAuth2TokenCommandInput, + cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void + ): void; + createOAuth2Token( + args: CreateOAuth2TokenCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void + ): void; +} +export declare class Signin extends SigninClient implements Signin {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/SigninClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/SigninClient.d.ts new file mode 100644 index 0000000..a275cd2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/SigninClient.d.ts @@ -0,0 +1,122 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { + AwsCredentialIdentityProvider, + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, + UserAgent as __UserAgent, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, +} from "./commands/CreateOAuth2TokenCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = CreateOAuth2TokenCommandInput; +export type ServiceOutputTypes = CreateOAuth2TokenCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: __Provider<__UserAgent>; + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type SigninClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface SigninClientConfig extends SigninClientConfigType {} +export type SigninClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface SigninClientResolvedConfig + extends SigninClientResolvedConfigType {} +export declare class SigninClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + SigninClientResolvedConfig +> { + readonly config: SigninClientResolvedConfig; + constructor( + ...[configuration]: __CheckOptionalClientConfig + ); + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..728b0fa --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + HttpAuthScheme, +} from "@smithy/types"; +import { SigninHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: SigninHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): SigninHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..5ef2b0b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,47 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core/httpAuthSchemes"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { SigninClientResolvedConfig } from "../SigninClient"; +export interface SigninHttpAuthSchemeParameters + extends HttpAuthSchemeParameters { + region?: string; +} +export interface SigninHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + SigninClientResolvedConfig, + HandlerExecutionContext, + SigninHttpAuthSchemeParameters, + object + > {} +export declare const defaultSigninHttpAuthSchemeParametersProvider: ( + config: SigninClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface SigninHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultSigninHttpAuthSchemeProvider: SigninHttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: SigninHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts new file mode 100644 index 0000000..3f2873f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/CreateOAuth2TokenCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + CreateOAuth2TokenRequest, + CreateOAuth2TokenResponse, +} from "../models/models_0"; +import { SigninClientResolvedConfig } from "../SigninClient"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateOAuth2TokenCommandInput + extends CreateOAuth2TokenRequest {} +export interface CreateOAuth2TokenCommandOutput + extends CreateOAuth2TokenResponse, + __MetadataBearer {} +declare const CreateOAuth2TokenCommand_base: { + new ( + input: CreateOAuth2TokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, + SigninClientResolvedConfig, + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput + >; + new ( + input: CreateOAuth2TokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, + SigninClientResolvedConfig, + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateOAuth2TokenCommand extends CreateOAuth2TokenCommand_base { + protected static __types: { + api: { + input: CreateOAuth2TokenRequest; + output: CreateOAuth2TokenResponse; + }; + sdk: { + input: CreateOAuth2TokenCommandInput; + output: CreateOAuth2TokenCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/index.d.ts new file mode 100644 index 0000000..d32e4a3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./CreateOAuth2TokenCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..30ccc88 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/EndpointParameters.d.ts @@ -0,0 +1,51 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; + region?: string | undefined | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; + Region?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..5909925 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4b23899 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/extensionConfiguration.d.ts new file mode 100644 index 0000000..d017d11 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface SigninExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/index.d.ts new file mode 100644 index 0000000..5619b72 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/index.d.ts @@ -0,0 +1,11 @@ +export * from "./SigninClient"; +export * from "./Signin"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { SigninExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SigninServiceException } from "./models/SigninServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/SigninServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/SigninServiceException.d.ts new file mode 100644 index 0000000..3356c49 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/SigninServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class SigninServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/enums.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/enums.d.ts new file mode 100644 index 0000000..dd1fceb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/enums.d.ts @@ -0,0 +1,10 @@ +export declare const OAuth2ErrorCode: { + readonly AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED"; + readonly INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS"; + readonly INVALID_REQUEST: "INVALID_REQUEST"; + readonly SERVER_ERROR: "server_error"; + readonly TOKEN_EXPIRED: "TOKEN_EXPIRED"; + readonly USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED"; +}; +export type OAuth2ErrorCode = + (typeof OAuth2ErrorCode)[keyof typeof OAuth2ErrorCode]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/errors.d.ts new file mode 100644 index 0000000..3818549 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/errors.d.ts @@ -0,0 +1,35 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { OAuth2ErrorCode } from "./enums"; +import { SigninServiceException as __BaseException } from "./SigninServiceException"; +export declare class AccessDeniedException extends __BaseException { + readonly name: "AccessDeniedException"; + readonly $fault: "client"; + error: OAuth2ErrorCode | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InternalServerException extends __BaseException { + readonly name: "InternalServerException"; + readonly $fault: "server"; + error: OAuth2ErrorCode | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class TooManyRequestsError extends __BaseException { + readonly name: "TooManyRequestsError"; + readonly $fault: "client"; + error: OAuth2ErrorCode | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ValidationException extends __BaseException { + readonly name: "ValidationException"; + readonly $fault: "client"; + error: OAuth2ErrorCode | undefined; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/models_0.d.ts new file mode 100644 index 0000000..ea16c9a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/models_0.d.ts @@ -0,0 +1,26 @@ +export interface AccessToken { + accessKeyId: string | undefined; + secretAccessKey: string | undefined; + sessionToken: string | undefined; +} +export interface CreateOAuth2TokenRequestBody { + clientId: string | undefined; + grantType: string | undefined; + code?: string | undefined; + redirectUri?: string | undefined; + codeVerifier?: string | undefined; + refreshToken?: string | undefined; +} +export interface CreateOAuth2TokenRequest { + tokenInput: CreateOAuth2TokenRequestBody | undefined; +} +export interface CreateOAuth2TokenResponseBody { + accessToken: AccessToken | undefined; + tokenType: string | undefined; + expiresIn: number | undefined; + refreshToken: string | undefined; + idToken?: string | undefined; +} +export interface CreateOAuth2TokenResponse { + tokenOutput: CreateOAuth2TokenResponseBody | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..51c43df --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.browser.d.ts @@ -0,0 +1,125 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { SigninClientConfig } from "./SigninClient"; +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts new file mode 100644 index 0000000..cbafda4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.d.ts @@ -0,0 +1,118 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { SigninClientConfig } from "./SigninClient"; +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + credentialDefaultProvider?: ( + input: any + ) => import("@smithy/types").AwsCredentialIdentityProvider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts new file mode 100644 index 0000000..3203d3e --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.native.d.ts @@ -0,0 +1,129 @@ +import { SigninClientConfig } from "./SigninClient"; +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..3be6b7a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeConfig.shared.d.ts @@ -0,0 +1,58 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { SigninClientConfig } from "./SigninClient"; +export declare const getRuntimeConfig: (config: SigninClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SigninHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeExtensions.d.ts new file mode 100644 index 0000000..b62e7d8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/runtimeExtensions.d.ts @@ -0,0 +1,11 @@ +import { SigninExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure(extensionConfiguration: SigninExtensionConfiguration): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/schemas/schemas_0.d.ts new file mode 100644 index 0000000..693e44c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/schemas/schemas_0.d.ts @@ -0,0 +1,18 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var SigninServiceException$: StaticErrorSchema; +export declare var AccessDeniedException$: StaticErrorSchema; +export declare var InternalServerException$: StaticErrorSchema; +export declare var TooManyRequestsError$: StaticErrorSchema; +export declare var ValidationException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AccessToken$: StaticStructureSchema; +export declare var CreateOAuth2TokenRequest$: StaticStructureSchema; +export declare var CreateOAuth2TokenRequestBody$: StaticStructureSchema; +export declare var CreateOAuth2TokenResponse$: StaticStructureSchema; +export declare var CreateOAuth2TokenResponseBody$: StaticStructureSchema; +export declare var CreateOAuth2Token$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts new file mode 100644 index 0000000..10ee849 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDC.d.ts @@ -0,0 +1,22 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { + CreateTokenCommandInput, + CreateTokenCommandOutput, +} from "./commands/CreateTokenCommand"; +import { SSOOIDCClient } from "./SSOOIDCClient"; +export interface SSOOIDC { + createToken( + args: CreateTokenCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createToken( + args: CreateTokenCommandInput, + cb: (err: any, data?: CreateTokenCommandOutput) => void + ): void; + createToken( + args: CreateTokenCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateTokenCommandOutput) => void + ): void; +} +export declare class SSOOIDC extends SSOOIDCClient implements SSOOIDC {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts new file mode 100644 index 0000000..f1ca1fc --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/SSOOIDCClient.d.ts @@ -0,0 +1,120 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, + UserAgent as __UserAgent, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + CreateTokenCommandInput, + CreateTokenCommandOutput, +} from "./commands/CreateTokenCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = CreateTokenCommandInput; +export type ServiceOutputTypes = CreateTokenCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: __Provider<__UserAgent>; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type SSOOIDCClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface SSOOIDCClientConfig extends SSOOIDCClientConfigType {} +export type SSOOIDCClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface SSOOIDCClientResolvedConfig + extends SSOOIDCClientResolvedConfigType {} +export declare class SSOOIDCClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + SSOOIDCClientResolvedConfig +> { + readonly config: SSOOIDCClientResolvedConfig; + constructor( + ...[configuration]: __CheckOptionalClientConfig + ); + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..c39ba91 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + HttpAuthScheme, +} from "@smithy/types"; +import { SSOOIDCHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): SSOOIDCHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..ccbc4e7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,47 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core/httpAuthSchemes"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { SSOOIDCClientResolvedConfig } from "../SSOOIDCClient"; +export interface SSOOIDCHttpAuthSchemeParameters + extends HttpAuthSchemeParameters { + region?: string; +} +export interface SSOOIDCHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + SSOOIDCClientResolvedConfig, + HandlerExecutionContext, + SSOOIDCHttpAuthSchemeParameters, + object + > {} +export declare const defaultSSOOIDCHttpAuthSchemeParametersProvider: ( + config: SSOOIDCClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface SSOOIDCHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultSSOOIDCHttpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: SSOOIDCHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: SSOOIDCHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts new file mode 100644 index 0000000..bcf1e7a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/CreateTokenCommand.d.ts @@ -0,0 +1,43 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { CreateTokenRequest, CreateTokenResponse } from "../models/models_0"; +import { SSOOIDCClientResolvedConfig } from "../SSOOIDCClient"; +export { __MetadataBearer }; +export { $Command }; +export interface CreateTokenCommandInput extends CreateTokenRequest {} +export interface CreateTokenCommandOutput + extends CreateTokenResponse, + __MetadataBearer {} +declare const CreateTokenCommand_base: { + new ( + input: CreateTokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateTokenCommandInput, + CreateTokenCommandOutput, + SSOOIDCClientResolvedConfig, + CreateTokenCommandInput, + CreateTokenCommandOutput + >; + new ( + input: CreateTokenCommandInput + ): import("@smithy/smithy-client").CommandImpl< + CreateTokenCommandInput, + CreateTokenCommandOutput, + SSOOIDCClientResolvedConfig, + CreateTokenCommandInput, + CreateTokenCommandOutput + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class CreateTokenCommand extends CreateTokenCommand_base { + protected static __types: { + api: { + input: CreateTokenRequest; + output: CreateTokenResponse; + }; + sdk: { + input: CreateTokenCommandInput; + output: CreateTokenCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts new file mode 100644 index 0000000..09214ca --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./CreateTokenCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..c4baac5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/EndpointParameters.d.ts @@ -0,0 +1,51 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..5909925 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4b23899 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts new file mode 100644 index 0000000..c208e33 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface SSOOIDCExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts new file mode 100644 index 0000000..e64e68a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/index.d.ts @@ -0,0 +1,11 @@ +export * from "./SSOOIDCClient"; +export * from "./SSOOIDC"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { SSOOIDCExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/enums"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOOIDCServiceException } from "./models/SSOOIDCServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts new file mode 100644 index 0000000..c7318f2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/SSOOIDCServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class SSOOIDCServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/enums.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/enums.d.ts new file mode 100644 index 0000000..9028dae --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/enums.d.ts @@ -0,0 +1,13 @@ +export declare const AccessDeniedExceptionReason: { + readonly KMS_ACCESS_DENIED: "KMS_AccessDeniedException"; +}; +export type AccessDeniedExceptionReason = + (typeof AccessDeniedExceptionReason)[keyof typeof AccessDeniedExceptionReason]; +export declare const InvalidRequestExceptionReason: { + readonly KMS_DISABLED_KEY: "KMS_DisabledException"; + readonly KMS_INVALID_KEY_USAGE: "KMS_InvalidKeyUsageException"; + readonly KMS_INVALID_STATE: "KMS_InvalidStateException"; + readonly KMS_KEY_NOT_FOUND: "KMS_NotFoundException"; +}; +export type InvalidRequestExceptionReason = + (typeof InvalidRequestExceptionReason)[keyof typeof InvalidRequestExceptionReason]; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/errors.d.ts new file mode 100644 index 0000000..2037dfe --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/errors.d.ts @@ -0,0 +1,105 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { + AccessDeniedExceptionReason, + InvalidRequestExceptionReason, +} from "./enums"; +import { SSOOIDCServiceException as __BaseException } from "./SSOOIDCServiceException"; +export declare class AccessDeniedException extends __BaseException { + readonly name: "AccessDeniedException"; + readonly $fault: "client"; + error?: string | undefined; + reason?: AccessDeniedExceptionReason | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class AuthorizationPendingException extends __BaseException { + readonly name: "AuthorizationPendingException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ExpiredTokenException extends __BaseException { + readonly name: "ExpiredTokenException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InternalServerException extends __BaseException { + readonly name: "InternalServerException"; + readonly $fault: "server"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidClientException extends __BaseException { + readonly name: "InvalidClientException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidGrantException extends __BaseException { + readonly name: "InvalidGrantException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidRequestException extends __BaseException { + readonly name: "InvalidRequestException"; + readonly $fault: "client"; + error?: string | undefined; + reason?: InvalidRequestExceptionReason | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidScopeException extends __BaseException { + readonly name: "InvalidScopeException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class SlowDownException extends __BaseException { + readonly name: "SlowDownException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor(opts: __ExceptionOptionType); +} +export declare class UnauthorizedClientException extends __BaseException { + readonly name: "UnauthorizedClientException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class UnsupportedGrantTypeException extends __BaseException { + readonly name: "UnsupportedGrantTypeException"; + readonly $fault: "client"; + error?: string | undefined; + error_description?: string | undefined; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts new file mode 100644 index 0000000..16216b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/models/models_0.d.ts @@ -0,0 +1,18 @@ +export interface CreateTokenRequest { + clientId: string | undefined; + clientSecret: string | undefined; + grantType: string | undefined; + deviceCode?: string | undefined; + code?: string | undefined; + refreshToken?: string | undefined; + scope?: string[] | undefined; + redirectUri?: string | undefined; + codeVerifier?: string | undefined; +} +export interface CreateTokenResponse { + accessToken?: string | undefined; + tokenType?: string | undefined; + expiresIn?: number | undefined; + refreshToken?: string | undefined; + idToken?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..4c67f3b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.browser.d.ts @@ -0,0 +1,120 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { SSOOIDCClientConfig } from "./SSOOIDCClient"; +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts new file mode 100644 index 0000000..4a1908a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.d.ts @@ -0,0 +1,115 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { SSOOIDCClientConfig } from "./SSOOIDCClient"; +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts new file mode 100644 index 0000000..adbd350 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.native.d.ts @@ -0,0 +1,124 @@ +import { SSOOIDCClientConfig } from "./SSOOIDCClient"; +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..0cade97 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeConfig.shared.d.ts @@ -0,0 +1,58 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { SSOOIDCClientConfig } from "./SSOOIDCClient"; +export declare const getRuntimeConfig: (config: SSOOIDCClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOOIDCHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts new file mode 100644 index 0000000..d226882 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/runtimeExtensions.d.ts @@ -0,0 +1,11 @@ +import { SSOOIDCExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure(extensionConfiguration: SSOOIDCExtensionConfiguration): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/schemas/schemas_0.d.ts new file mode 100644 index 0000000..446e4fb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/schemas/schemas_0.d.ts @@ -0,0 +1,22 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var SSOOIDCServiceException$: StaticErrorSchema; +export declare var AccessDeniedException$: StaticErrorSchema; +export declare var AuthorizationPendingException$: StaticErrorSchema; +export declare var ExpiredTokenException$: StaticErrorSchema; +export declare var InternalServerException$: StaticErrorSchema; +export declare var InvalidClientException$: StaticErrorSchema; +export declare var InvalidGrantException$: StaticErrorSchema; +export declare var InvalidRequestException$: StaticErrorSchema; +export declare var InvalidScopeException$: StaticErrorSchema; +export declare var SlowDownException$: StaticErrorSchema; +export declare var UnauthorizedClientException$: StaticErrorSchema; +export declare var UnsupportedGrantTypeException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var CreateTokenRequest$: StaticStructureSchema; +export declare var CreateTokenResponse$: StaticStructureSchema; +export declare var CreateToken$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSO.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSO.d.ts new file mode 100644 index 0000000..aaf6628 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSO.d.ts @@ -0,0 +1,22 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput, +} from "./commands/GetRoleCredentialsCommand"; +import { SSOClient } from "./SSOClient"; +export interface SSO { + getRoleCredentials( + args: GetRoleCredentialsCommandInput, + options?: __HttpHandlerOptions + ): Promise; + getRoleCredentials( + args: GetRoleCredentialsCommandInput, + cb: (err: any, data?: GetRoleCredentialsCommandOutput) => void + ): void; + getRoleCredentials( + args: GetRoleCredentialsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetRoleCredentialsCommandOutput) => void + ): void; +} +export declare class SSO extends SSOClient implements SSO {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSOClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSOClient.d.ts new file mode 100644 index 0000000..42bfcc0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/SSOClient.d.ts @@ -0,0 +1,117 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, + UserAgent as __UserAgent, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput, +} from "./commands/GetRoleCredentialsCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = GetRoleCredentialsCommandInput; +export type ServiceOutputTypes = GetRoleCredentialsCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: __Provider<__UserAgent>; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type SSOClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface SSOClientConfig extends SSOClientConfigType {} +export type SSOClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface SSOClientResolvedConfig extends SSOClientResolvedConfigType {} +export declare class SSOClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + SSOClientResolvedConfig +> { + readonly config: SSOClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..29f38b3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + HttpAuthScheme, +} from "@smithy/types"; +import { SSOHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: SSOHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): SSOHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SSOHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..563d970 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,46 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core/httpAuthSchemes"; +import { + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { SSOClientResolvedConfig } from "../SSOClient"; +export interface SSOHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +export interface SSOHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + SSOClientResolvedConfig, + HandlerExecutionContext, + SSOHttpAuthSchemeParameters, + object + > {} +export declare const defaultSSOHttpAuthSchemeParametersProvider: ( + config: SSOClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface SSOHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultSSOHttpAuthSchemeProvider: SSOHttpAuthSchemeProvider; +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: SSOHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: SSOHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/GetRoleCredentialsCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/GetRoleCredentialsCommand.d.ts new file mode 100644 index 0000000..6b58e62 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/GetRoleCredentialsCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + GetRoleCredentialsRequest, + GetRoleCredentialsResponse, +} from "../models/models_0"; +import { SSOClientResolvedConfig } from "../SSOClient"; +export { __MetadataBearer }; +export { $Command }; +export interface GetRoleCredentialsCommandInput + extends GetRoleCredentialsRequest {} +export interface GetRoleCredentialsCommandOutput + extends GetRoleCredentialsResponse, + __MetadataBearer {} +declare const GetRoleCredentialsCommand_base: { + new ( + input: GetRoleCredentialsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput, + SSOClientResolvedConfig, + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput + >; + new ( + input: GetRoleCredentialsCommandInput + ): import("@smithy/smithy-client").CommandImpl< + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput, + SSOClientResolvedConfig, + GetRoleCredentialsCommandInput, + GetRoleCredentialsCommandOutput + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class GetRoleCredentialsCommand extends GetRoleCredentialsCommand_base { + protected static __types: { + api: { + input: GetRoleCredentialsRequest; + output: GetRoleCredentialsResponse; + }; + sdk: { + input: GetRoleCredentialsCommandInput; + output: GetRoleCredentialsCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/index.d.ts new file mode 100644 index 0000000..69ba055 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/commands/index.d.ts @@ -0,0 +1 @@ +export * from "./GetRoleCredentialsCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..c4baac5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/EndpointParameters.d.ts @@ -0,0 +1,51 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..5909925 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4b23899 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/extensionConfiguration.d.ts new file mode 100644 index 0000000..c1b43ff --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface SSOExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/index.d.ts new file mode 100644 index 0000000..3c592ed --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/index.d.ts @@ -0,0 +1,10 @@ +export * from "./SSOClient"; +export * from "./SSO"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { SSOExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export { SSOServiceException } from "./models/SSOServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/SSOServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/SSOServiceException.d.ts new file mode 100644 index 0000000..4ab1cb2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/SSOServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class SSOServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/errors.d.ts new file mode 100644 index 0000000..2a2eaf7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/errors.d.ts @@ -0,0 +1,30 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { SSOServiceException as __BaseException } from "./SSOServiceException"; +export declare class InvalidRequestException extends __BaseException { + readonly name: "InvalidRequestException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class ResourceNotFoundException extends __BaseException { + readonly name: "ResourceNotFoundException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class TooManyRequestsException extends __BaseException { + readonly name: "TooManyRequestsException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class UnauthorizedException extends __BaseException { + readonly name: "UnauthorizedException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/models_0.d.ts new file mode 100644 index 0000000..0eac104 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/models/models_0.d.ts @@ -0,0 +1,14 @@ +export interface GetRoleCredentialsRequest { + roleName: string | undefined; + accountId: string | undefined; + accessToken: string | undefined; +} +export interface RoleCredentials { + accessKeyId?: string | undefined; + secretAccessKey?: string | undefined; + sessionToken?: string | undefined; + expiration?: number | undefined; +} +export interface GetRoleCredentialsResponse { + roleCredentials?: RoleCredentials | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..7b73418 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.browser.d.ts @@ -0,0 +1,120 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { SSOClientConfig } from "./SSOClient"; +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts new file mode 100644 index 0000000..d15ce74 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.d.ts @@ -0,0 +1,115 @@ +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { SSOClientConfig } from "./SSOClient"; +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts new file mode 100644 index 0000000..cfa698a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.native.d.ts @@ -0,0 +1,124 @@ +import { SSOClientConfig } from "./SSOClient"; +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsRestJsonProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..11fb947 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeConfig.shared.d.ts @@ -0,0 +1,58 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { SSOClientConfig } from "./SSOClient"; +export declare const getRuntimeConfig: (config: SSOClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + endpointParams: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").SSOHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsRestJsonProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeExtensions.d.ts new file mode 100644 index 0000000..fbec1e5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/runtimeExtensions.d.ts @@ -0,0 +1,11 @@ +import { SSOExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure(extensionConfiguration: SSOExtensionConfiguration): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/schemas/schemas_0.d.ts new file mode 100644 index 0000000..df61d4a --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/schemas/schemas_0.d.ts @@ -0,0 +1,16 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var SSOServiceException$: StaticErrorSchema; +export declare var InvalidRequestException$: StaticErrorSchema; +export declare var ResourceNotFoundException$: StaticErrorSchema; +export declare var TooManyRequestsException$: StaticErrorSchema; +export declare var UnauthorizedException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var GetRoleCredentialsRequest$: StaticStructureSchema; +export declare var GetRoleCredentialsResponse$: StaticStructureSchema; +export declare var RoleCredentials$: StaticStructureSchema; +export declare var GetRoleCredentials$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STS.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STS.d.ts new file mode 100644 index 0000000..cca9cbb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STS.d.ts @@ -0,0 +1,39 @@ +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { + AssumeRoleCommandInput, + AssumeRoleCommandOutput, +} from "./commands/AssumeRoleCommand"; +import { + AssumeRoleWithWebIdentityCommandInput, + AssumeRoleWithWebIdentityCommandOutput, +} from "./commands/AssumeRoleWithWebIdentityCommand"; +import { STSClient } from "./STSClient"; +export interface STS { + assumeRole( + args: AssumeRoleCommandInput, + options?: __HttpHandlerOptions + ): Promise; + assumeRole( + args: AssumeRoleCommandInput, + cb: (err: any, data?: AssumeRoleCommandOutput) => void + ): void; + assumeRole( + args: AssumeRoleCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: AssumeRoleCommandOutput) => void + ): void; + assumeRoleWithWebIdentity( + args: AssumeRoleWithWebIdentityCommandInput, + options?: __HttpHandlerOptions + ): Promise; + assumeRoleWithWebIdentity( + args: AssumeRoleWithWebIdentityCommandInput, + cb: (err: any, data?: AssumeRoleWithWebIdentityCommandOutput) => void + ): void; + assumeRoleWithWebIdentity( + args: AssumeRoleWithWebIdentityCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: AssumeRoleWithWebIdentityCommandOutput) => void + ): void; +} +export declare class STS extends STSClient implements STS {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts new file mode 100644 index 0000000..4e37922 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/STSClient.d.ts @@ -0,0 +1,127 @@ +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, +} from "@aws-sdk/middleware-host-header"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +import { + EndpointInputConfig, + EndpointResolvedConfig, +} from "@smithy/middleware-endpoint"; +import { + RetryInputConfig, + RetryResolvedConfig, +} from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, + Client as __Client, +} from "@smithy/smithy-client"; +import { + AwsCredentialIdentityProvider, + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + Logger as __Logger, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, + UserAgent as __UserAgent, +} from "@smithy/types"; +import { + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + AssumeRoleCommandInput, + AssumeRoleCommandOutput, +} from "./commands/AssumeRoleCommand"; +import { + AssumeRoleWithWebIdentityCommandInput, + AssumeRoleWithWebIdentityCommandOutput, +} from "./commands/AssumeRoleWithWebIdentityCommand"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, +} from "./endpoint/EndpointParameters"; +import { RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; +export { __Client }; +export type ServiceInputTypes = + | AssumeRoleCommandInput + | AssumeRoleWithWebIdentityCommandInput; +export type ServiceOutputTypes = + | AssumeRoleCommandOutput + | AssumeRoleWithWebIdentityCommandOutput; +export interface ClientDefaults + extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + requestHandler?: __HttpHandlerUserInput; + sha256?: __ChecksumConstructor | __HashConstructor; + urlParser?: __UrlParser; + bodyLengthChecker?: __BodyLengthCalculator; + streamCollector?: __StreamCollector; + base64Decoder?: __Decoder; + base64Encoder?: __Encoder; + utf8Decoder?: __Decoder; + utf8Encoder?: __Encoder; + runtime?: string; + disableHostPrefix?: boolean; + serviceId?: string; + useDualstackEndpoint?: boolean | __Provider; + useFipsEndpoint?: boolean | __Provider; + region?: string | __Provider; + profile?: string; + defaultUserAgentProvider?: __Provider<__UserAgent>; + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + maxAttempts?: number | __Provider; + retryMode?: string | __Provider; + logger?: __Logger; + extensions?: RuntimeExtension[]; + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} +export type STSClientConfigType = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +export interface STSClientConfig extends STSClientConfigType {} +export type STSClientResolvedConfigType = + __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +export interface STSClientResolvedConfig extends STSClientResolvedConfigType {} +export declare class STSClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + STSClientResolvedConfig +> { + readonly config: STSClientResolvedConfig; + constructor(...[configuration]: __CheckOptionalClientConfig); + destroy(): void; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts new file mode 100644 index 0000000..ef83018 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthExtensionConfiguration.d.ts @@ -0,0 +1,32 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + HttpAuthScheme, +} from "@smithy/types"; +import { STSHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider( + httpAuthSchemeProvider: STSHttpAuthSchemeProvider + ): void; + httpAuthSchemeProvider(): STSHttpAuthSchemeProvider; + setCredentials( + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider + ): void; + credentials(): + | AwsCredentialIdentity + | AwsCredentialIdentityProvider + | undefined; +} +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: STSHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; +export declare const getHttpAuthExtensionConfiguration: ( + runtimeConfig: HttpAuthRuntimeConfig +) => HttpAuthExtensionConfiguration; +export declare const resolveHttpAuthRuntimeConfig: ( + config: HttpAuthExtensionConfiguration +) => HttpAuthRuntimeConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..986e9bf --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts @@ -0,0 +1,57 @@ +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, +} from "@aws-sdk/core/httpAuthSchemes"; +import { + Client, + HandlerExecutionContext, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { STSClientResolvedConfig } from "../STSClient"; +export interface STSHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} +export interface STSHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + STSClientResolvedConfig, + HandlerExecutionContext, + STSHttpAuthSchemeParameters, + object + > {} +export declare const defaultSTSHttpAuthSchemeParametersProvider: ( + config: STSClientResolvedConfig, + context: HandlerExecutionContext, + input: object +) => Promise; +export interface STSHttpAuthSchemeProvider + extends HttpAuthSchemeProvider {} +export declare const defaultSTSHttpAuthSchemeProvider: STSHttpAuthSchemeProvider; +export interface StsAuthInputConfig {} +export interface StsAuthResolvedConfig { + stsClientCtor: new (clientConfig: any) => Client; +} +export declare const resolveStsAuthConfig: ( + input: T & StsAuthInputConfig +) => T & StsAuthResolvedConfig; +export interface HttpAuthSchemeInputConfig + extends StsAuthInputConfig, + AwsSdkSigV4AuthInputConfig { + authSchemePreference?: string[] | Provider; + httpAuthSchemes?: HttpAuthScheme[]; + httpAuthSchemeProvider?: STSHttpAuthSchemeProvider; +} +export interface HttpAuthSchemeResolvedConfig + extends StsAuthResolvedConfig, + AwsSdkSigV4AuthResolvedConfig { + readonly authSchemePreference: Provider; + readonly httpAuthSchemes: HttpAuthScheme[]; + readonly httpAuthSchemeProvider: STSHttpAuthSchemeProvider; +} +export declare const resolveHttpAuthSchemeConfig: ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +) => T & HttpAuthSchemeResolvedConfig; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts new file mode 100644 index 0000000..efc55c9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleCommand.d.ts @@ -0,0 +1,47 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { AssumeRoleRequest, AssumeRoleResponse } from "../models/models_0"; +import { + ServiceInputTypes, + ServiceOutputTypes, + STSClientResolvedConfig, +} from "../STSClient"; +export { __MetadataBearer }; +export { $Command }; +export interface AssumeRoleCommandInput extends AssumeRoleRequest {} +export interface AssumeRoleCommandOutput + extends AssumeRoleResponse, + __MetadataBearer {} +declare const AssumeRoleCommand_base: { + new ( + input: AssumeRoleCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AssumeRoleCommandInput, + AssumeRoleCommandOutput, + STSClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: AssumeRoleCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AssumeRoleCommandInput, + AssumeRoleCommandOutput, + STSClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class AssumeRoleCommand extends AssumeRoleCommand_base { + protected static __types: { + api: { + input: AssumeRoleRequest; + output: AssumeRoleResponse; + }; + sdk: { + input: AssumeRoleCommandInput; + output: AssumeRoleCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts new file mode 100644 index 0000000..941164f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/AssumeRoleWithWebIdentityCommand.d.ts @@ -0,0 +1,51 @@ +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; +import { + AssumeRoleWithWebIdentityRequest, + AssumeRoleWithWebIdentityResponse, +} from "../models/models_0"; +import { + ServiceInputTypes, + ServiceOutputTypes, + STSClientResolvedConfig, +} from "../STSClient"; +export { __MetadataBearer }; +export { $Command }; +export interface AssumeRoleWithWebIdentityCommandInput + extends AssumeRoleWithWebIdentityRequest {} +export interface AssumeRoleWithWebIdentityCommandOutput + extends AssumeRoleWithWebIdentityResponse, + __MetadataBearer {} +declare const AssumeRoleWithWebIdentityCommand_base: { + new ( + input: AssumeRoleWithWebIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AssumeRoleWithWebIdentityCommandInput, + AssumeRoleWithWebIdentityCommandOutput, + STSClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + new ( + input: AssumeRoleWithWebIdentityCommandInput + ): import("@smithy/smithy-client").CommandImpl< + AssumeRoleWithWebIdentityCommandInput, + AssumeRoleWithWebIdentityCommandOutput, + STSClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >; + getEndpointParameterInstructions(): import("@smithy/middleware-endpoint").EndpointParameterInstructions; +}; +export declare class AssumeRoleWithWebIdentityCommand extends AssumeRoleWithWebIdentityCommand_base { + protected static __types: { + api: { + input: AssumeRoleWithWebIdentityRequest; + output: AssumeRoleWithWebIdentityResponse; + }; + sdk: { + input: AssumeRoleWithWebIdentityCommandInput; + output: AssumeRoleWithWebIdentityCommandOutput; + }; + }; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/index.d.ts new file mode 100644 index 0000000..0f200f5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/commands/index.d.ts @@ -0,0 +1,2 @@ +export * from "./AssumeRoleCommand"; +export * from "./AssumeRoleWithWebIdentityCommand"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts new file mode 100644 index 0000000..b6f22cc --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultRoleAssumers.d.ts @@ -0,0 +1,19 @@ +import { Pluggable } from "@smithy/types"; +import { + DefaultCredentialProvider, + RoleAssumer, + RoleAssumerWithWebIdentity, + STSRoleAssumerOptions, +} from "./defaultStsRoleAssumers"; +import { ServiceInputTypes, ServiceOutputTypes } from "./STSClient"; +export declare const getDefaultRoleAssumer: ( + stsOptions?: STSRoleAssumerOptions, + stsPlugins?: Pluggable[] +) => RoleAssumer; +export declare const getDefaultRoleAssumerWithWebIdentity: ( + stsOptions?: STSRoleAssumerOptions, + stsPlugins?: Pluggable[] +) => RoleAssumerWithWebIdentity; +export declare const decorateDefaultCredentialProvider: ( + provider: DefaultCredentialProvider +) => DefaultCredentialProvider; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts new file mode 100644 index 0000000..2da7241 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/defaultStsRoleAssumers.d.ts @@ -0,0 +1,33 @@ +import { CredentialProviderOptions } from "@aws-sdk/types"; +import { AwsCredentialIdentity, Logger, Provider } from "@smithy/types"; +import { AssumeRoleCommandInput } from "./commands/AssumeRoleCommand"; +import { AssumeRoleWithWebIdentityCommandInput } from "./commands/AssumeRoleWithWebIdentityCommand"; +import { STSClient, STSClientConfig } from "./STSClient"; +export type STSRoleAssumerOptions = Pick< + STSClientConfig, + "logger" | "region" | "requestHandler" | "profile" | "userAgentAppId" +> & { + credentialProviderLogger?: Logger; + parentClientConfig?: CredentialProviderOptions["parentClientConfig"]; +}; +export type RoleAssumer = ( + sourceCreds: AwsCredentialIdentity, + params: AssumeRoleCommandInput +) => Promise; +export declare const getDefaultRoleAssumer: ( + stsOptions: STSRoleAssumerOptions, + STSClient: new (options: STSClientConfig) => STSClient +) => RoleAssumer; +export type RoleAssumerWithWebIdentity = ( + params: AssumeRoleWithWebIdentityCommandInput +) => Promise; +export declare const getDefaultRoleAssumerWithWebIdentity: ( + stsOptions: STSRoleAssumerOptions, + STSClient: new (options: STSClientConfig) => STSClient +) => RoleAssumerWithWebIdentity; +export type DefaultCredentialProvider = ( + input: any +) => Provider; +export declare const decorateDefaultCredentialProvider: ( + provider: DefaultCredentialProvider +) => DefaultCredentialProvider; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts new file mode 100644 index 0000000..7ff3fe5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/EndpointParameters.d.ts @@ -0,0 +1,57 @@ +import { + Endpoint, + EndpointParameters as __EndpointParameters, + EndpointV2, + Provider, +} from "@smithy/types"; +export interface ClientInputEndpointParameters { + region?: string | undefined | Provider; + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: + | string + | Provider + | Endpoint + | Provider + | EndpointV2 + | Provider; + useGlobalEndpoint?: boolean | undefined | Provider; +} +export type ClientResolvedEndpointParameters = Pick< + ClientInputEndpointParameters, + Exclude +> & { + defaultSigningName: string; +}; +export declare const resolveClientEndpointParameters: ( + options: T & ClientInputEndpointParameters +) => T & ClientResolvedEndpointParameters; +export declare const commonParams: { + readonly UseGlobalEndpoint: { + readonly type: "builtInParams"; + readonly name: "useGlobalEndpoint"; + }; + readonly UseFIPS: { + readonly type: "builtInParams"; + readonly name: "useFipsEndpoint"; + }; + readonly Endpoint: { + readonly type: "builtInParams"; + readonly name: "endpoint"; + }; + readonly Region: { + readonly type: "builtInParams"; + readonly name: "region"; + }; + readonly UseDualStack: { + readonly type: "builtInParams"; + readonly name: "useDualstackEndpoint"; + }; +}; +export interface EndpointParameters extends __EndpointParameters { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; + UseGlobalEndpoint?: boolean | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/endpointResolver.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/endpointResolver.d.ts new file mode 100644 index 0000000..5909925 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/endpointResolver.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2, Logger } from "@smithy/types"; +import { EndpointParameters } from "./EndpointParameters"; +export declare const defaultEndpointResolver: ( + endpointParams: EndpointParameters, + context?: { + logger?: Logger; + } +) => EndpointV2; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts new file mode 100644 index 0000000..4b23899 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts @@ -0,0 +1,2 @@ +import { RuleSetObject } from "@smithy/types"; +export declare const ruleSet: RuleSetObject; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/extensionConfiguration.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/extensionConfiguration.d.ts new file mode 100644 index 0000000..14b124b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/extensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; +export interface STSExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts new file mode 100644 index 0000000..796e687 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/index.d.ts @@ -0,0 +1,11 @@ +export * from "./STSClient"; +export * from "./STS"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export { RuntimeExtension } from "./runtimeExtensions"; +export { STSExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./schemas/schemas_0"; +export * from "./models/errors"; +export * from "./models/models_0"; +export * from "./defaultRoleAssumers"; +export { STSServiceException } from "./models/STSServiceException"; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts new file mode 100644 index 0000000..18621a2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/STSServiceException.d.ts @@ -0,0 +1,9 @@ +import { + ServiceExceptionOptions as __ServiceExceptionOptions, + ServiceException as __ServiceException, +} from "@smithy/smithy-client"; +export { __ServiceExceptionOptions }; +export { __ServiceException }; +export declare class STSServiceException extends __ServiceException { + constructor(options: __ServiceExceptionOptions); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/errors.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/errors.d.ts new file mode 100644 index 0000000..308923b --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/errors.d.ts @@ -0,0 +1,54 @@ +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; +import { STSServiceException as __BaseException } from "./STSServiceException"; +export declare class ExpiredTokenException extends __BaseException { + readonly name: "ExpiredTokenException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class MalformedPolicyDocumentException extends __BaseException { + readonly name: "MalformedPolicyDocumentException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType< + MalformedPolicyDocumentException, + __BaseException + > + ); +} +export declare class PackedPolicyTooLargeException extends __BaseException { + readonly name: "PackedPolicyTooLargeException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class RegionDisabledException extends __BaseException { + readonly name: "RegionDisabledException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class IDPRejectedClaimException extends __BaseException { + readonly name: "IDPRejectedClaimException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class InvalidIdentityTokenException extends __BaseException { + readonly name: "InvalidIdentityTokenException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} +export declare class IDPCommunicationErrorException extends __BaseException { + readonly name: "IDPCommunicationErrorException"; + readonly $fault: "client"; + constructor( + opts: __ExceptionOptionType + ); +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts new file mode 100644 index 0000000..a3c7441 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/models_0.d.ts @@ -0,0 +1,59 @@ +export interface AssumedRoleUser { + AssumedRoleId: string | undefined; + Arn: string | undefined; +} +export interface PolicyDescriptorType { + arn?: string | undefined; +} +export interface ProvidedContext { + ProviderArn?: string | undefined; + ContextAssertion?: string | undefined; +} +export interface Tag { + Key: string | undefined; + Value: string | undefined; +} +export interface AssumeRoleRequest { + RoleArn: string | undefined; + RoleSessionName: string | undefined; + PolicyArns?: PolicyDescriptorType[] | undefined; + Policy?: string | undefined; + DurationSeconds?: number | undefined; + Tags?: Tag[] | undefined; + TransitiveTagKeys?: string[] | undefined; + ExternalId?: string | undefined; + SerialNumber?: string | undefined; + TokenCode?: string | undefined; + SourceIdentity?: string | undefined; + ProvidedContexts?: ProvidedContext[] | undefined; +} +export interface Credentials { + AccessKeyId: string | undefined; + SecretAccessKey: string | undefined; + SessionToken: string | undefined; + Expiration: Date | undefined; +} +export interface AssumeRoleResponse { + Credentials?: Credentials | undefined; + AssumedRoleUser?: AssumedRoleUser | undefined; + PackedPolicySize?: number | undefined; + SourceIdentity?: string | undefined; +} +export interface AssumeRoleWithWebIdentityRequest { + RoleArn: string | undefined; + RoleSessionName: string | undefined; + WebIdentityToken: string | undefined; + ProviderId?: string | undefined; + PolicyArns?: PolicyDescriptorType[] | undefined; + Policy?: string | undefined; + DurationSeconds?: number | undefined; +} +export interface AssumeRoleWithWebIdentityResponse { + Credentials?: Credentials | undefined; + SubjectFromWebIdentityToken?: string | undefined; + AssumedRoleUser?: AssumedRoleUser | undefined; + PackedPolicySize?: number | undefined; + Provider?: string | undefined; + Audience?: string | undefined; + SourceIdentity?: string | undefined; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts new file mode 100644 index 0000000..dbd8fba --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts @@ -0,0 +1,129 @@ +import { FetchHttpHandler as RequestHandler } from "@smithy/fetch-http-handler"; +import { STSClientConfig } from "./STSClient"; +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | import("@smithy/protocol-http").HttpHandler + | RequestHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + params: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: + | boolean + | undefined + | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts new file mode 100644 index 0000000..7189fc1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts @@ -0,0 +1,111 @@ +import { NoAuthSigner } from "@smithy/core"; +import { NodeHttpHandler as RequestHandler } from "@smithy/node-http-handler"; +import { IdentityProviderConfig } from "@smithy/types"; +import { STSClientConfig } from "./STSClient"; +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + defaultsMode: import("@smithy/types").Provider< + import("@smithy/smithy-client").ResolvedDefaultsMode + >; + authSchemePreference: string[] | import("@smithy/types").Provider; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-node").PreviouslyResolved + ) => Promise; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + }[]; + maxAttempts: number | import("@smithy/types").Provider; + region: string | import("@smithy/types").Provider; + requestHandler: + | RequestHandler + | import("@smithy/protocol-http").HttpHandler; + retryMode: string | import("@smithy/types").Provider; + sha256: import("@smithy/types").HashConstructor; + streamCollector: import("@smithy/types").StreamCollector; + useDualstackEndpoint: boolean | import("@smithy/types").Provider; + useFipsEndpoint: boolean | import("@smithy/types").Provider; + userAgentAppId: string | import("@smithy/types").Provider; + cacheMiddleware?: boolean | undefined; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + profile?: string; + credentialDefaultProvider?: ( + input: any + ) => import("@smithy/types").AwsCredentialIdentityProvider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + customUserAgent?: string | import("@smithy/types").UserAgent; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + params: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: + | boolean + | undefined + | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts new file mode 100644 index 0000000..a07a2b5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts @@ -0,0 +1,133 @@ +import { STSClientConfig } from "./STSClient"; +export declare const getRuntimeConfig: (config: STSClientConfig) => { + runtime: string; + sha256: import("@smithy/types").HashConstructor; + requestHandler: + | import("@smithy/types").NodeHttpHandlerOptions + | import("@smithy/types").FetchHttpHandlerOptions + | Record + | import("@smithy/protocol-http").HttpHandler + | import("@smithy/fetch-http-handler").FetchHttpHandler; + cacheMiddleware?: boolean; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof import("@aws-sdk/core/dist-types/submodules/protocols").AwsQueryProtocol; + protocolSettings: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + apiVersion: string; + urlParser: import("@smithy/types").UrlParser; + bodyLengthChecker: import("@smithy/types").BodyLengthCalculator; + streamCollector: import("@smithy/types").StreamCollector; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; + disableHostPrefix: boolean; + serviceId: string; + useDualstackEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + useFipsEndpoint: (boolean | import("@smithy/types").Provider) & + (boolean | import("@smithy/types").Provider); + region: string | import("@smithy/types").Provider; + profile?: string; + defaultUserAgentProvider: ( + config?: import("@aws-sdk/util-user-agent-browser").PreviouslyResolved + ) => Promise; + credentialDefaultProvider: + | ((input: any) => import("@smithy/types").AwsCredentialIdentityProvider) + | (( + _: unknown + ) => () => Promise); + maxAttempts: number | import("@smithy/types").Provider; + retryMode: string | import("@smithy/types").Provider; + logger: import("@smithy/types").Logger; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + defaultsMode: + | import("@smithy/smithy-client").DefaultsMode + | import("@smithy/types").Provider< + import("@smithy/smithy-client").DefaultsMode + >; + customUserAgent?: string | import("@smithy/types").UserAgent; + userAgentAppId?: + | string + | undefined + | import("@smithy/types").Provider; + retryStrategy?: + | import("@smithy/types").RetryStrategy + | import("@smithy/types").RetryStrategyV2; + endpoint?: + | (( + | string + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + ) & + ( + | string + | import("@smithy/types").Provider + | import("@smithy/types").Endpoint + | import("@smithy/types").Provider + | import("@smithy/types").EndpointV2 + | import("@smithy/types").Provider + )) + | undefined; + endpointProvider: ( + params: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + tls?: boolean; + serviceConfiguredEndpoint?: never; + authSchemePreference?: string[] | import("@smithy/types").Provider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: import("@aws-sdk/core/dist-types/submodules/httpAuthSchemes").AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: import("@smithy/types").IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: import("@smithy/core").NoAuthSigner; + } + )[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + credentials?: + | import("@smithy/types").AwsCredentialIdentity + | import("@smithy/types").AwsCredentialIdentityProvider; + signer?: + | import("@smithy/types").RequestSigner + | (( + authScheme?: import("@smithy/types").AuthScheme + ) => Promise); + signingEscapePath?: boolean; + systemClockOffset?: number; + signingRegion?: string; + signerConstructor?: new ( + options: import("@smithy/signature-v4").SignatureV4Init & + import("@smithy/signature-v4").SignatureV4CryptoInit + ) => import("@smithy/types").RequestSigner; + useGlobalEndpoint?: + | boolean + | undefined + | import("@smithy/types").Provider; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts new file mode 100644 index 0000000..b77cd1d --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts @@ -0,0 +1,58 @@ +import { AwsSdkSigV4Signer } from "@aws-sdk/core/httpAuthSchemes"; +import { AwsQueryProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; +import { IdentityProviderConfig } from "@smithy/types"; +import { STSClientConfig } from "./STSClient"; +export declare const getRuntimeConfig: (config: STSClientConfig) => { + apiVersion: string; + base64Decoder: import("@smithy/types").Decoder; + base64Encoder: (_input: Uint8Array | string) => string; + disableHostPrefix: boolean; + endpointProvider: ( + params: import("./endpoint/EndpointParameters").EndpointParameters, + context?: { + logger?: import("@smithy/types").Logger; + } + ) => import("@smithy/types").EndpointV2; + extensions: import("./runtimeExtensions").RuntimeExtension[]; + httpAuthSchemeProvider: import("./auth/httpAuthSchemeProvider").STSHttpAuthSchemeProvider; + httpAuthSchemes: + | import("@smithy/types").HttpAuthScheme[] + | ( + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | undefined; + signer: AwsSdkSigV4Signer; + } + | { + schemeId: string; + identityProvider: ( + ipc: IdentityProviderConfig + ) => + | import("@smithy/types").IdentityProvider< + import("@smithy/types").Identity + > + | (() => Promise<{}>); + signer: NoAuthSigner; + } + )[]; + logger: import("@smithy/types").Logger; + protocol: + | import("@smithy/types").ClientProtocol + | import("@smithy/types").ClientProtocolCtor + | typeof AwsQueryProtocol; + protocolSettings: { + [setting: string]: unknown; + defaultNamespace?: string; + }; + serviceId: string; + urlParser: import("@smithy/types").UrlParser; + utf8Decoder: import("@smithy/types").Decoder; + utf8Encoder: (input: Uint8Array | string) => string; +}; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeExtensions.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeExtensions.d.ts new file mode 100644 index 0000000..d3cd411 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeExtensions.d.ts @@ -0,0 +1,11 @@ +import { STSExtensionConfiguration } from "./extensionConfiguration"; +export interface RuntimeExtension { + configure(extensionConfiguration: STSExtensionConfiguration): void; +} +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} +export declare const resolveRuntimeExtensions: ( + runtimeConfig: any, + extensions: RuntimeExtension[] +) => any; diff --git a/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/schemas/schemas_0.d.ts b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/schemas/schemas_0.d.ts new file mode 100644 index 0000000..fd69e8f --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/schemas/schemas_0.d.ts @@ -0,0 +1,26 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { + StaticErrorSchema, + StaticOperationSchema, + StaticStructureSchema, +} from "@smithy/types"; +export declare var STSServiceException$: StaticErrorSchema; +export declare var ExpiredTokenException$: StaticErrorSchema; +export declare var IDPCommunicationErrorException$: StaticErrorSchema; +export declare var IDPRejectedClaimException$: StaticErrorSchema; +export declare var InvalidIdentityTokenException$: StaticErrorSchema; +export declare var MalformedPolicyDocumentException$: StaticErrorSchema; +export declare var PackedPolicyTooLargeException$: StaticErrorSchema; +export declare var RegionDisabledException$: StaticErrorSchema; +export declare const errorTypeRegistries: TypeRegistry[]; +export declare var AssumedRoleUser$: StaticStructureSchema; +export declare var AssumeRoleRequest$: StaticStructureSchema; +export declare var AssumeRoleResponse$: StaticStructureSchema; +export declare var AssumeRoleWithWebIdentityRequest$: StaticStructureSchema; +export declare var AssumeRoleWithWebIdentityResponse$: StaticStructureSchema; +export declare var Credentials$: StaticStructureSchema; +export declare var PolicyDescriptorType$: StaticStructureSchema; +export declare var ProvidedContext$: StaticStructureSchema; +export declare var Tag$: StaticStructureSchema; +export declare var AssumeRole$: StaticOperationSchema; +export declare var AssumeRoleWithWebIdentity$: StaticOperationSchema; diff --git a/bff/node_modules/@aws-sdk/nested-clients/package.json b/bff/node_modules/@aws-sdk/nested-clients/package.json new file mode 100644 index 0000000..e69e8fb --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/package.json @@ -0,0 +1,147 @@ +{ + "name": "@aws-sdk/nested-clients", + "version": "3.996.18", + "description": "Nested clients for AWS SDK packages.", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "scripts": { + "build": "yarn lint && concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline nested-clients", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "node ../../scripts/validation/submodules-linter.js --pkg nested-clients", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "engines": { + "node": ">=20.0.0" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.9", + "@aws-sdk/middleware-user-agent": "^3.972.28", + "@aws-sdk/region-config-resolver": "^3.972.10", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.14", + "@smithy/config-resolver": "^4.4.13", + "@smithy/core": "^3.23.13", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.13", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "./cognito-identity.d.ts", + "./cognito-identity.js", + "./signin.d.ts", + "./signin.js", + "./sso-oidc.d.ts", + "./sso-oidc.js", + "./sso.d.ts", + "./sso.js", + "./sts.d.ts", + "./sts.js", + "dist-*/**" + ], + "browser": { + "./dist-es/submodules/cognito-identity/runtimeConfig": "./dist-es/submodules/cognito-identity/runtimeConfig.browser", + "./dist-es/submodules/signin/runtimeConfig": "./dist-es/submodules/signin/runtimeConfig.browser", + "./dist-es/submodules/sso-oidc/runtimeConfig": "./dist-es/submodules/sso-oidc/runtimeConfig.browser", + "./dist-es/submodules/sso/runtimeConfig": "./dist-es/submodules/sso/runtimeConfig.browser", + "./dist-es/submodules/sts/runtimeConfig": "./dist-es/submodules/sts/runtimeConfig.browser" + }, + "react-native": {}, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/nested-clients", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/nested-clients" + }, + "exports": { + "./package.json": "./package.json", + "./sso-oidc": { + "types": "./dist-types/submodules/sso-oidc/index.d.ts", + "module": "./dist-es/submodules/sso-oidc/index.js", + "node": "./dist-cjs/submodules/sso-oidc/index.js", + "import": "./dist-es/submodules/sso-oidc/index.js", + "require": "./dist-cjs/submodules/sso-oidc/index.js" + }, + "./sts": { + "types": "./dist-types/submodules/sts/index.d.ts", + "module": "./dist-es/submodules/sts/index.js", + "node": "./dist-cjs/submodules/sts/index.js", + "import": "./dist-es/submodules/sts/index.js", + "require": "./dist-cjs/submodules/sts/index.js" + }, + "./signin": { + "types": "./dist-types/submodules/signin/index.d.ts", + "module": "./dist-es/submodules/signin/index.js", + "node": "./dist-cjs/submodules/signin/index.js", + "import": "./dist-es/submodules/signin/index.js", + "require": "./dist-cjs/submodules/signin/index.js" + }, + "./cognito-identity": { + "types": "./dist-types/submodules/cognito-identity/index.d.ts", + "module": "./dist-es/submodules/cognito-identity/index.js", + "node": "./dist-cjs/submodules/cognito-identity/index.js", + "import": "./dist-es/submodules/cognito-identity/index.js", + "require": "./dist-cjs/submodules/cognito-identity/index.js" + }, + "./sso": { + "types": "./dist-types/submodules/sso/index.d.ts", + "module": "./dist-es/submodules/sso/index.js", + "node": "./dist-cjs/submodules/sso/index.js", + "import": "./dist-es/submodules/sso/index.js", + "require": "./dist-cjs/submodules/sso/index.js" + } + } +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/signin.d.ts b/bff/node_modules/@aws-sdk/nested-clients/signin.d.ts new file mode 100644 index 0000000..4615961 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/signin.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/signin" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/signin/index.d"; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/signin.js b/bff/node_modules/@aws-sdk/nested-clients/signin.js new file mode 100644 index 0000000..db3d545 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/signin.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/signin/index.js"); diff --git a/bff/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts b/bff/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts new file mode 100644 index 0000000..ab47282 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/sso-oidc.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/sso-oidc" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/index.d"; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/sso-oidc.js b/bff/node_modules/@aws-sdk/nested-clients/sso-oidc.js new file mode 100644 index 0000000..896865c --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/sso-oidc.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/sso-oidc/index.js"); diff --git a/bff/node_modules/@aws-sdk/nested-clients/sso.d.ts b/bff/node_modules/@aws-sdk/nested-clients/sso.d.ts new file mode 100644 index 0000000..04a13c0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/sso.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/sso" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/sso/index.d"; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/sso.js b/bff/node_modules/@aws-sdk/nested-clients/sso.js new file mode 100644 index 0000000..9423dce --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/sso.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/sso/index.js"); diff --git a/bff/node_modules/@aws-sdk/nested-clients/sts.d.ts b/bff/node_modules/@aws-sdk/nested-clients/sts.d.ts new file mode 100644 index 0000000..03b8e68 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/sts.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/sts" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/sts/index.d"; +} diff --git a/bff/node_modules/@aws-sdk/nested-clients/sts.js b/bff/node_modules/@aws-sdk/nested-clients/sts.js new file mode 100644 index 0000000..8976f12 --- /dev/null +++ b/bff/node_modules/@aws-sdk/nested-clients/sts.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/sts/index.js"); diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/LICENSE b/bff/node_modules/@aws-sdk/region-config-resolver/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/README.md b/bff/node_modules/@aws-sdk/region-config-resolver/README.md new file mode 100644 index 0000000..d3e137b --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/README.md @@ -0,0 +1,19 @@ +# @aws-sdk/region-config-resolver + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/region-config-resolver/latest.svg)](https://www.npmjs.com/package/@aws-sdk/region-config-resolver) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/region-config-resolver.svg)](https://www.npmjs.com/package/@aws-sdk/region-config-resolver) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- + +This package provides utilities for AWS region config resolvers. diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js b/bff/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js new file mode 100644 index 0000000..4cc1f1d --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js @@ -0,0 +1,38 @@ +'use strict'; + +var stsRegionDefaultResolver = require('./regionConfig/stsRegionDefaultResolver'); +var configResolver = require('@smithy/config-resolver'); + +const getAwsRegionExtensionConfiguration = (runtimeConfig) => { + return { + setRegion(region) { + runtimeConfig.region = region; + }, + region() { + return runtimeConfig.region; + }, + }; +}; +const resolveAwsRegionExtensionConfiguration = (awsRegionExtensionConfiguration) => { + return { + region: awsRegionExtensionConfiguration.region(), + }; +}; + +exports.NODE_REGION_CONFIG_FILE_OPTIONS = configResolver.NODE_REGION_CONFIG_FILE_OPTIONS; +exports.NODE_REGION_CONFIG_OPTIONS = configResolver.NODE_REGION_CONFIG_OPTIONS; +exports.REGION_ENV_NAME = configResolver.REGION_ENV_NAME; +exports.REGION_INI_NAME = configResolver.REGION_INI_NAME; +exports.resolveRegionConfig = configResolver.resolveRegionConfig; +exports.getAwsRegionExtensionConfiguration = getAwsRegionExtensionConfiguration; +exports.resolveAwsRegionExtensionConfiguration = resolveAwsRegionExtensionConfiguration; +Object.prototype.hasOwnProperty.call(stsRegionDefaultResolver, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: stsRegionDefaultResolver['__proto__'] + }); + +Object.keys(stsRegionDefaultResolver).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = stsRegionDefaultResolver[k]; +}); diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.js b/bff/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.js new file mode 100644 index 0000000..30d06fb --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.warning = void 0; +exports.stsRegionDefaultResolver = stsRegionDefaultResolver; +const config_resolver_1 = require("@smithy/config-resolver"); +const node_config_provider_1 = require("@smithy/node-config-provider"); +function stsRegionDefaultResolver(loaderConfig = {}) { + return (0, node_config_provider_1.loadConfig)({ + ...config_resolver_1.NODE_REGION_CONFIG_OPTIONS, + async default() { + if (!exports.warning.silence) { + console.warn("@aws-sdk - WARN - default STS region of us-east-1 used. See @aws-sdk/credential-providers README and set a region explicitly."); + } + return "us-east-1"; + }, + }, { ...config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }); +} +exports.warning = { + silence: false, +}; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.native.js b/bff/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.native.js new file mode 100644 index 0000000..78908f9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-cjs/regionConfig/stsRegionDefaultResolver.native.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.stsRegionDefaultResolver = stsRegionDefaultResolver; +function stsRegionDefaultResolver() { + return async () => "us-east-1"; +} diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js new file mode 100644 index 0000000..eb03314 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js @@ -0,0 +1,15 @@ +export const getAwsRegionExtensionConfiguration = (runtimeConfig) => { + return { + setRegion(region) { + runtimeConfig.region = region; + }, + region() { + return runtimeConfig.region; + }, + }; +}; +export const resolveAwsRegionExtensionConfiguration = (awsRegionExtensionConfiguration) => { + return { + region: awsRegionExtensionConfiguration.region(), + }; +}; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js new file mode 100644 index 0000000..d685b15 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./extensions"; +export * from "./regionConfig/awsRegionConfig"; +export * from "./regionConfig/stsRegionDefaultResolver"; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/awsRegionConfig.js b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/awsRegionConfig.js new file mode 100644 index 0000000..533ee07 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/awsRegionConfig.js @@ -0,0 +1,2 @@ +export { REGION_ENV_NAME, REGION_INI_NAME, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, } from "@smithy/config-resolver"; +export { resolveRegionConfig } from "@smithy/config-resolver"; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.browser.js b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.browser.js new file mode 100644 index 0000000..63fb0c6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.browser.js @@ -0,0 +1,3 @@ +export function stsRegionDefaultResolver() { + return async () => "us-east-1"; +} diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.js b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.js new file mode 100644 index 0000000..c687555 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.js @@ -0,0 +1,16 @@ +import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } from "@smithy/config-resolver"; +import { loadConfig } from "@smithy/node-config-provider"; +export function stsRegionDefaultResolver(loaderConfig = {}) { + return loadConfig({ + ...NODE_REGION_CONFIG_OPTIONS, + async default() { + if (!warning.silence) { + console.warn("@aws-sdk - WARN - default STS region of us-east-1 used. See @aws-sdk/credential-providers README and set a region explicitly."); + } + return "us-east-1"; + }, + }, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }); +} +export const warning = { + silence: false, +}; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.native.js b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.native.js new file mode 100644 index 0000000..63fb0c6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-es/regionConfig/stsRegionDefaultResolver.native.js @@ -0,0 +1,3 @@ +export function stsRegionDefaultResolver() { + return async () => "us-east-1"; +} diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts new file mode 100644 index 0000000..acb4330 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/extensions/index.d.ts @@ -0,0 +1,16 @@ +import type { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import type { Provider } from "@smithy/types"; +export type RegionExtensionRuntimeConfigType = Partial<{ + region: string | Provider; +}>; +/** + * @internal + */ +export declare const getAwsRegionExtensionConfiguration: (runtimeConfig: RegionExtensionRuntimeConfigType) => { + setRegion(region: Provider): void; + region(): Provider; +}; +/** + * @internal + */ +export declare const resolveAwsRegionExtensionConfiguration: (awsRegionExtensionConfiguration: AwsRegionExtensionConfiguration) => RegionExtensionRuntimeConfigType; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts new file mode 100644 index 0000000..d685b15 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./extensions"; +export * from "./regionConfig/awsRegionConfig"; +export * from "./regionConfig/stsRegionDefaultResolver"; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/awsRegionConfig.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/awsRegionConfig.d.ts new file mode 100644 index 0000000..aa5e193 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/awsRegionConfig.d.ts @@ -0,0 +1,15 @@ +/** + * Backward compatibility re-export alias. + * @internal + */ +export { REGION_ENV_NAME, REGION_INI_NAME, NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS, } from "@smithy/config-resolver"; +/** + * Backward compatibility re-export alias. + * @internal + */ +export type { RegionInputConfig, RegionResolvedConfig } from "@smithy/config-resolver"; +/** + * Backward compatibility re-export alias. + * @internal + */ +export { resolveRegionConfig } from "@smithy/config-resolver"; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.browser.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.browser.d.ts new file mode 100644 index 0000000..d0a147f --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.browser.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function stsRegionDefaultResolver(): () => Promise; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.d.ts new file mode 100644 index 0000000..fc52c8a --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.d.ts @@ -0,0 +1,14 @@ +import { type LocalConfigOptions } from "@smithy/node-config-provider"; +/** + * Default region provider for STS when used as an inner client. + * Differs from the default region resolver in that us-east-1 is the fallback instead of throwing an error. + * + * @internal + */ +export declare function stsRegionDefaultResolver(loaderConfig?: LocalConfigOptions): import("@smithy/types").Provider; +/** + * @internal + */ +export declare const warning: { + silence: boolean; +}; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.native.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.native.d.ts new file mode 100644 index 0000000..d0a147f --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/regionConfig/stsRegionDefaultResolver.native.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function stsRegionDefaultResolver(): () => Promise; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/extensions/index.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 0000000..c1328e3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1,14 @@ +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { Provider } from "@smithy/types"; +export type RegionExtensionRuntimeConfigType = Partial<{ + region: string | Provider; +}>; +export declare const getAwsRegionExtensionConfiguration: ( + runtimeConfig: RegionExtensionRuntimeConfigType +) => { + setRegion(region: Provider): void; + region(): Provider; +}; +export declare const resolveAwsRegionExtensionConfiguration: ( + awsRegionExtensionConfiguration: AwsRegionExtensionConfiguration +) => RegionExtensionRuntimeConfigType; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..d685b15 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./extensions"; +export * from "./regionConfig/awsRegionConfig"; +export * from "./regionConfig/stsRegionDefaultResolver"; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/awsRegionConfig.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/awsRegionConfig.d.ts new file mode 100644 index 0000000..d430fa6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/awsRegionConfig.d.ts @@ -0,0 +1,11 @@ +export { + REGION_ENV_NAME, + REGION_INI_NAME, + NODE_REGION_CONFIG_OPTIONS, + NODE_REGION_CONFIG_FILE_OPTIONS, +} from "@smithy/config-resolver"; +export { + RegionInputConfig, + RegionResolvedConfig, +} from "@smithy/config-resolver"; +export { resolveRegionConfig } from "@smithy/config-resolver"; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.browser.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.browser.d.ts new file mode 100644 index 0000000..f9bbd63 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.browser.d.ts @@ -0,0 +1 @@ +export declare function stsRegionDefaultResolver(): () => Promise; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.d.ts new file mode 100644 index 0000000..e94262a --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.d.ts @@ -0,0 +1,7 @@ +import { LocalConfigOptions } from "@smithy/node-config-provider"; +export declare function stsRegionDefaultResolver( + loaderConfig?: LocalConfigOptions +): import("@smithy/types").Provider; +export declare const warning: { + silence: boolean; +}; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.native.d.ts b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.native.d.ts new file mode 100644 index 0000000..f9bbd63 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/dist-types/ts3.4/regionConfig/stsRegionDefaultResolver.native.d.ts @@ -0,0 +1 @@ +export declare function stsRegionDefaultResolver(): () => Promise; diff --git a/bff/node_modules/@aws-sdk/region-config-resolver/package.json b/bff/node_modules/@aws-sdk/region-config-resolver/package.json new file mode 100644 index 0000000..8d4d616 --- /dev/null +++ b/bff/node_modules/@aws-sdk/region-config-resolver/package.json @@ -0,0 +1,62 @@ +{ + "name": "@aws-sdk/region-config-resolver", + "version": "3.972.10", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline region-config-resolver", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.13", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/awslabs/smithy-typescript/tree/main/packages-internal/region-config-resolver", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/region-config-resolver" + }, + "browser": { + "./dist-es/regionConfig/stsRegionDefaultResolver": "./dist-es/regionConfig/stsRegionDefaultResolver.browser" + }, + "react-native": {} +} diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/LICENSE b/bff/node_modules/@aws-sdk/s3-request-presigner/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/README.md b/bff/node_modules/@aws-sdk/s3-request-presigner/README.md new file mode 100644 index 0000000..eb914d3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/README.md @@ -0,0 +1,125 @@ +# @aws-sdk/s3-request-presigner + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/s3-request-presigner/latest.svg)](https://www.npmjs.com/package/@aws-sdk/s3-request-presigner) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/s3-request-presigner.svg)](https://www.npmjs.com/package/@aws-sdk/s3-request-presigner) + +This package provides a presigner based on signature V4 that will attempt to +generate signed url for S3. + +### Get Presigned URL with Client and Command + +You can generated presigned url from S3 client and command. Here's the example: + +```javascript +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; +import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3"; +const client = new S3Client(clientParams); +const command = new GetObjectCommand(getObjectParams); +const url = await getSignedUrl(client, command, { expiresIn: 3600 }); +``` + +You can get signed URL for other S3 operations too, like `PutObjectCommand`. +`expiresIn` config from the examples above is optional. If not set, it's default +at `900`. + +If you already have a request, you can pre-sign the request following the +section bellow. + +### Get Presigned URL from an Existing Request + +```javascript +import { S3RequestPresigner } from "@aws-sdk/s3-request-presigner"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { Hash } from "@aws-sdk/hash-node"; +const signer = new S3RequestPresigner({ + region: regionProvider, + credentials: credentialsProvider, + sha256: Hash.bind(null, "sha256"), // In Node.js + //sha256: Sha256 // In browsers +}); +const presigned = await signer.presign(request); +``` + +To avoid redundant construction parameters when instantiating the s3 presigner, +you can simply spread the configuration of an existing s3 client and supply it to +the presigner's constructor. + +```javascript +//s3 is instantiated from S3Client from @aws-sdk/client-s3-* packages +const signer = new S3RequestPresigner({ + ...s3.config, +}); +``` + +### Get Presigned URL with headers that cannot be signed + +By using the `getSignedUrl` with a `S3Client` you are able to sign your +headers, improving the security of presigned url. Importantly, if you want to +sign any `x-amz-*` headers (like the ChecksumSHA256 header in this example), +you need to provide those headers to the set of `unhoistableHeaders` in the +`getSignedUrl` params which will force those headers to be present in the +upload request. + +```javascript +import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; + +const s3Client = new S3Client({ region: "us-east-1" }); +const command = new PutObjectCommand({ + Bucket: bucket, + Key: key, + ChecksumSHA256: sha, +}); + +const presigned = getSignedUrl(s3Client, command, { + expiresIn: expiration, + // Set of all x-amz-* headers you wish to have signed + unhoistableHeaders: new Set(["x-amz-checksum-sha256"]), +}); +``` + +### Get Presigned URL with headers that should be signed + +For headers that are not `x-amz-*` you are able to add them to the set of +`signableHeaders` to be enforced in the presigned urls request. + +```javascript +import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3"; +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; + +const s3Client = new S3Client({ region: "us-east-1" }); +const command = new PutObjectCommand({ + Bucket: bucket, + Key: key, + ContentType: contentType, +}); + +const presigned = getSignedUrl(s3Client, command, { + signableHeaders: new Set(["content-type"]), + expiresIn: expiration, +}); +``` + +### PutObject with use of `hoistableHeaders` + +`hoistableHeaders` overrides the default behavior of not hoisting +any headers that begin with `x-amz-*`. + +```js +// example: Server Side Encryption headers +import { getSignedUrl } from "@aws-sdk/s3-request-presigner"; +import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3"; + +const params = { + Key: "...", + Bucket: "...", + ServerSideEncryption: "aws:kms", + SSEKMSKeyId: "arn:aws:kms:us-west-2:0000:key/abcd-1234-abcd", +}; +const s3Client = new S3Client(); +const command = new PutObjectCommand(params); + +const preSignedUrl = await getSignedUrl(s3Client, command, { + hoistableHeaders: new Set(["x-amz-server-side-encryption", "x-amz-server-side-encryption-aws-kms-key-id"]), +}); +``` diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-cjs/index.js b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-cjs/index.js new file mode 100644 index 0000000..adee3f7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-cjs/index.js @@ -0,0 +1,132 @@ +'use strict'; + +var utilFormatUrl = require('@aws-sdk/util-format-url'); +var middlewareEndpoint = require('@smithy/middleware-endpoint'); +var protocolHttp = require('@smithy/protocol-http'); +var signatureV4MultiRegion = require('@aws-sdk/signature-v4-multi-region'); + +const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +const SHA256_HEADER = "X-Amz-Content-Sha256"; + +class S3RequestPresigner { + signer; + constructor(options) { + const resolvedOptions = { + service: options.signingName || options.service || "s3", + uriEscapePath: options.uriEscapePath || false, + applyChecksum: options.applyChecksum || false, + ...options, + }; + this.signer = new signatureV4MultiRegion.SignatureV4MultiRegion(resolvedOptions); + } + presign(requestToSign, { unsignableHeaders = new Set(), hoistableHeaders = new Set(), unhoistableHeaders = new Set(), ...options } = {}) { + this.prepareRequest(requestToSign, { + unsignableHeaders, + unhoistableHeaders, + hoistableHeaders, + }); + return this.signer.presign(requestToSign, { + expiresIn: 900, + unsignableHeaders, + unhoistableHeaders, + ...options, + }); + } + presignWithCredentials(requestToSign, credentials, { unsignableHeaders = new Set(), hoistableHeaders = new Set(), unhoistableHeaders = new Set(), ...options } = {}) { + this.prepareRequest(requestToSign, { + unsignableHeaders, + unhoistableHeaders, + hoistableHeaders, + }); + return this.signer.presignWithCredentials(requestToSign, credentials, { + expiresIn: 900, + unsignableHeaders, + unhoistableHeaders, + ...options, + }); + } + prepareRequest(requestToSign, { unsignableHeaders = new Set(), unhoistableHeaders = new Set(), hoistableHeaders = new Set(), } = {}) { + unsignableHeaders.add("content-type"); + Object.keys(requestToSign.headers) + .map((header) => header.toLowerCase()) + .filter((header) => header.startsWith("x-amz-server-side-encryption")) + .forEach((header) => { + if (!hoistableHeaders.has(header)) { + unhoistableHeaders.add(header); + } + }); + requestToSign.headers[SHA256_HEADER] = UNSIGNED_PAYLOAD; + const currentHostHeader = requestToSign.headers.host; + const port = requestToSign.port; + const expectedHostHeader = `${requestToSign.hostname}${requestToSign.port != null ? ":" + port : ""}`; + if (!currentHostHeader || (currentHostHeader === requestToSign.hostname && requestToSign.port != null)) { + requestToSign.headers.host = expectedHostHeader; + } + } +} + +const getSignedUrl = async (client, command, options = {}) => { + let s3Presigner; + let region; + if (typeof client.config.endpointProvider === "function") { + const endpointV2 = await middlewareEndpoint.getEndpointFromInstructions(command.input, command.constructor, client.config); + const authScheme = endpointV2.properties?.authSchemes?.[0]; + if (authScheme?.name === "sigv4a") { + region = authScheme?.signingRegionSet?.join(","); + } + else { + region = authScheme?.signingRegion; + } + s3Presigner = new S3RequestPresigner({ + ...client.config, + signingName: authScheme?.signingName, + region: async () => region, + }); + } + else { + s3Presigner = new S3RequestPresigner(client.config); + } + const presignInterceptMiddleware = (next, context) => async (args) => { + const { request } = args; + if (!protocolHttp.HttpRequest.isInstance(request)) { + throw new Error("Request to be presigned is not an valid HTTP request."); + } + delete request.headers["amz-sdk-invocation-id"]; + delete request.headers["amz-sdk-request"]; + delete request.headers["x-amz-user-agent"]; + let presigned; + const presignerOptions = { + ...options, + signingRegion: options.signingRegion ?? context["signing_region"] ?? region, + signingService: options.signingService ?? context["signing_service"], + }; + if (context.s3ExpressIdentity) { + presigned = await s3Presigner.presignWithCredentials(request, context.s3ExpressIdentity, presignerOptions); + } + else { + presigned = await s3Presigner.presign(request, presignerOptions); + } + return { + response: {}, + output: { + $metadata: { httpStatusCode: 200 }, + presigned, + }, + }; + }; + const middlewareName = "presignInterceptMiddleware"; + const clientStack = client.middlewareStack.clone(); + clientStack.addRelativeTo(presignInterceptMiddleware, { + name: middlewareName, + relation: "before", + toMiddleware: "awsAuthMiddleware", + override: true, + }); + const handler = command.resolveMiddleware(clientStack, client.config, {}); + const { output } = await handler({ input: command.input }); + const { presigned } = output; + return utilFormatUrl.formatUrl(presigned); +}; + +exports.S3RequestPresigner = S3RequestPresigner; +exports.getSignedUrl = getSignedUrl; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/constants.js b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/constants.js new file mode 100644 index 0000000..938f00b --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/constants.js @@ -0,0 +1,9 @@ +export const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +export const SHA256_HEADER = "X-Amz-Content-Sha256"; +export const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +export const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +export const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +export const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +export const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +export const HOST_HEADER = "host"; +export const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/getSignedUrl.js b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/getSignedUrl.js new file mode 100644 index 0000000..a6a17e1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/getSignedUrl.js @@ -0,0 +1,66 @@ +import { formatUrl } from "@aws-sdk/util-format-url"; +import { getEndpointFromInstructions } from "@smithy/middleware-endpoint"; +import { HttpRequest } from "@smithy/protocol-http"; +import { S3RequestPresigner } from "./presigner"; +export const getSignedUrl = async (client, command, options = {}) => { + let s3Presigner; + let region; + if (typeof client.config.endpointProvider === "function") { + const endpointV2 = await getEndpointFromInstructions(command.input, command.constructor, client.config); + const authScheme = endpointV2.properties?.authSchemes?.[0]; + if (authScheme?.name === "sigv4a") { + region = authScheme?.signingRegionSet?.join(","); + } + else { + region = authScheme?.signingRegion; + } + s3Presigner = new S3RequestPresigner({ + ...client.config, + signingName: authScheme?.signingName, + region: async () => region, + }); + } + else { + s3Presigner = new S3RequestPresigner(client.config); + } + const presignInterceptMiddleware = (next, context) => async (args) => { + const { request } = args; + if (!HttpRequest.isInstance(request)) { + throw new Error("Request to be presigned is not an valid HTTP request."); + } + delete request.headers["amz-sdk-invocation-id"]; + delete request.headers["amz-sdk-request"]; + delete request.headers["x-amz-user-agent"]; + let presigned; + const presignerOptions = { + ...options, + signingRegion: options.signingRegion ?? context["signing_region"] ?? region, + signingService: options.signingService ?? context["signing_service"], + }; + if (context.s3ExpressIdentity) { + presigned = await s3Presigner.presignWithCredentials(request, context.s3ExpressIdentity, presignerOptions); + } + else { + presigned = await s3Presigner.presign(request, presignerOptions); + } + return { + response: {}, + output: { + $metadata: { httpStatusCode: 200 }, + presigned, + }, + }; + }; + const middlewareName = "presignInterceptMiddleware"; + const clientStack = client.middlewareStack.clone(); + clientStack.addRelativeTo(presignInterceptMiddleware, { + name: middlewareName, + relation: "before", + toMiddleware: "awsAuthMiddleware", + override: true, + }); + const handler = command.resolveMiddleware(clientStack, client.config, {}); + const { output } = await handler({ input: command.input }); + const { presigned } = output; + return formatUrl(presigned); +}; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/index.js b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/index.js new file mode 100644 index 0000000..f20b818 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./getSignedUrl"; +export * from "./presigner"; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/presigner.js b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/presigner.js new file mode 100644 index 0000000..8b46fe1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-es/presigner.js @@ -0,0 +1,58 @@ +import { SignatureV4MultiRegion } from "@aws-sdk/signature-v4-multi-region"; +import { SHA256_HEADER, UNSIGNED_PAYLOAD } from "./constants"; +export class S3RequestPresigner { + signer; + constructor(options) { + const resolvedOptions = { + service: options.signingName || options.service || "s3", + uriEscapePath: options.uriEscapePath || false, + applyChecksum: options.applyChecksum || false, + ...options, + }; + this.signer = new SignatureV4MultiRegion(resolvedOptions); + } + presign(requestToSign, { unsignableHeaders = new Set(), hoistableHeaders = new Set(), unhoistableHeaders = new Set(), ...options } = {}) { + this.prepareRequest(requestToSign, { + unsignableHeaders, + unhoistableHeaders, + hoistableHeaders, + }); + return this.signer.presign(requestToSign, { + expiresIn: 900, + unsignableHeaders, + unhoistableHeaders, + ...options, + }); + } + presignWithCredentials(requestToSign, credentials, { unsignableHeaders = new Set(), hoistableHeaders = new Set(), unhoistableHeaders = new Set(), ...options } = {}) { + this.prepareRequest(requestToSign, { + unsignableHeaders, + unhoistableHeaders, + hoistableHeaders, + }); + return this.signer.presignWithCredentials(requestToSign, credentials, { + expiresIn: 900, + unsignableHeaders, + unhoistableHeaders, + ...options, + }); + } + prepareRequest(requestToSign, { unsignableHeaders = new Set(), unhoistableHeaders = new Set(), hoistableHeaders = new Set(), } = {}) { + unsignableHeaders.add("content-type"); + Object.keys(requestToSign.headers) + .map((header) => header.toLowerCase()) + .filter((header) => header.startsWith("x-amz-server-side-encryption")) + .forEach((header) => { + if (!hoistableHeaders.has(header)) { + unhoistableHeaders.add(header); + } + }); + requestToSign.headers[SHA256_HEADER] = UNSIGNED_PAYLOAD; + const currentHostHeader = requestToSign.headers.host; + const port = requestToSign.port; + const expectedHostHeader = `${requestToSign.hostname}${requestToSign.port != null ? ":" + port : ""}`; + if (!currentHostHeader || (currentHostHeader === requestToSign.hostname && requestToSign.port != null)) { + requestToSign.headers.host = expectedHostHeader; + } + } +} diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/constants.d.ts b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/constants.d.ts new file mode 100644 index 0000000..41ae278 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/constants.d.ts @@ -0,0 +1,9 @@ +export declare const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +export declare const SHA256_HEADER = "X-Amz-Content-Sha256"; +export declare const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +export declare const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +export declare const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +export declare const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +export declare const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +export declare const HOST_HEADER = "host"; +export declare const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/getSignedUrl.d.ts b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/getSignedUrl.d.ts new file mode 100644 index 0000000..c27136a --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/getSignedUrl.d.ts @@ -0,0 +1,6 @@ +import type { Client, Command } from "@smithy/smithy-client"; +import type { MetadataBearer, RequestPresigningArguments } from "@smithy/types"; +/** + * @public + */ +export declare const getSignedUrl: (client: Client, command: Command, options?: RequestPresigningArguments) => Promise; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/index.d.ts new file mode 100644 index 0000000..f20b818 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./getSignedUrl"; +export * from "./presigner"; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/presigner.d.ts b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/presigner.d.ts new file mode 100644 index 0000000..5f4a995 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/presigner.d.ts @@ -0,0 +1,15 @@ +import type { SignatureV4MultiRegionInit } from "@aws-sdk/signature-v4-multi-region"; +import type { AwsCredentialIdentity, RequestPresigner, RequestPresigningArguments } from "@smithy/types"; +import type { HttpRequest as IHttpRequest } from "@smithy/types"; +type PartialBy = Omit & Partial>; +export type S3RequestPresignerOptions = PartialBy & { + signingName?: string; +}; +export declare class S3RequestPresigner implements RequestPresigner { + private readonly signer; + constructor(options: S3RequestPresignerOptions); + presign(requestToSign: IHttpRequest, { unsignableHeaders, hoistableHeaders, unhoistableHeaders, ...options }?: RequestPresigningArguments): Promise; + presignWithCredentials(requestToSign: IHttpRequest, credentials: AwsCredentialIdentity, { unsignableHeaders, hoistableHeaders, unhoistableHeaders, ...options }?: RequestPresigningArguments): Promise; + private prepareRequest; +} +export {}; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..41ae278 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,9 @@ +export declare const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +export declare const SHA256_HEADER = "X-Amz-Content-Sha256"; +export declare const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +export declare const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +export declare const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +export declare const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +export declare const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +export declare const HOST_HEADER = "host"; +export declare const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/getSignedUrl.d.ts b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/getSignedUrl.d.ts new file mode 100644 index 0000000..ad0bbf1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/getSignedUrl.d.ts @@ -0,0 +1,11 @@ +import { Client, Command } from "@smithy/smithy-client"; +import { MetadataBearer, RequestPresigningArguments } from "@smithy/types"; +export declare const getSignedUrl: < + InputTypesUnion extends object, + InputType extends InputTypesUnion, + OutputType extends MetadataBearer = MetadataBearer +>( + client: Client, + command: Command, + options?: RequestPresigningArguments +) => Promise; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..f20b818 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./getSignedUrl"; +export * from "./presigner"; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/presigner.d.ts b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/presigner.d.ts new file mode 100644 index 0000000..bc5d0fa --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/presigner.d.ts @@ -0,0 +1,40 @@ +import { SignatureV4MultiRegionInit } from "@aws-sdk/signature-v4-multi-region"; +import { + AwsCredentialIdentity, + RequestPresigner, + RequestPresigningArguments, +} from "@smithy/types"; +import { HttpRequest as IHttpRequest } from "@smithy/types"; +type PartialBy = Pick> & + Partial>; +export type S3RequestPresignerOptions = PartialBy< + SignatureV4MultiRegionInit, + "service" | "uriEscapePath" +> & { + signingName?: string; +}; +export declare class S3RequestPresigner implements RequestPresigner { + private readonly signer; + constructor(options: S3RequestPresignerOptions); + presign( + requestToSign: IHttpRequest, + { + unsignableHeaders, + hoistableHeaders, + unhoistableHeaders, + ...options + }?: RequestPresigningArguments + ): Promise; + presignWithCredentials( + requestToSign: IHttpRequest, + credentials: AwsCredentialIdentity, + { + unsignableHeaders, + hoistableHeaders, + unhoistableHeaders, + ...options + }?: RequestPresigningArguments + ): Promise; + private prepareRequest; +} +export {}; diff --git a/bff/node_modules/@aws-sdk/s3-request-presigner/package.json b/bff/node_modules/@aws-sdk/s3-request-presigner/package.json new file mode 100644 index 0000000..7473282 --- /dev/null +++ b/bff/node_modules/@aws-sdk/s3-request-presigner/package.json @@ -0,0 +1,64 @@ +{ + "name": "@aws-sdk/s3-request-presigner", + "version": "3.1021.0", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline s3-request-presigner", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "^3.996.15", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-format-url": "^3.972.8", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@aws-sdk/client-s3": "3.1021.0", + "@smithy/hash-node": "^4.2.12", + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/s3-request-presigner", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/s3-request-presigner" + } +} diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/LICENSE b/bff/node_modules/@aws-sdk/signature-v4-multi-region/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/README.md b/bff/node_modules/@aws-sdk/signature-v4-multi-region/README.md new file mode 100644 index 0000000..4120f78 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/README.md @@ -0,0 +1,32 @@ +# @aws-sdk/signature-v4-multi-region + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/signature-v4-multi-region/latest.svg)](https://www.npmjs.com/package/@aws-sdk/signature-v4-multi-region) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/signature-v4-multi-region.svg)](https://www.npmjs.com/package/@aws-sdk/signature-v4-multi-region) + +See also https://github.com/aws/aws-sdk-js-v3/tree/main#functionality-requiring-aws-common-runtime-crt. + +## Usage + +This package contains optional dependency [`@aws-sdk/signature-v4-crt`](https://www.npmjs.com/package/@aws-sdk/signature-v4). +You need to install this package explicitly to sign an un-regional request using SigV4a algorithm. The package contains +Node.js native implementation which requires building at installation. The installed package MAY NOT work if the +instance building the package runs a different operating system than the instance running the application. + +The `@aws-sdk/signature-v4-crt` is only supported in Node.js currently because it depends on a native dependency. + +Please refer to [this issue](https://github.com/aws/aws-sdk-js-v3/issues/2822) for more information. + +Note: You can also use a native JS (non-CRT) implementation of the SigV4A signer, instructions for which are here: +https://github.com/aws/aws-sdk-js-v3/tree/main#functionality-requiring-aws-common-runtime-crt + +Please refer to the note regarding bundle size in the link above, before deciding to use the JS SigV4A signer (including in browsers). + +## Description + +This package provides a SigV4-compatible request signer that wraps a pure-JS SigV4 signer +([`@aws-sdk/signature-v4`](https://www.npmjs.com/package/@aws-sdk/signature-v4)) for regional requests, and attempts to +call a native implementation of SigV4a signer([`@aws-sdk/signature-v4-crt`](https://www.npmjs.com/package/@aws-sdk/signature-v4)) +it the request is multi-region. + +A multi-region request is identified by the `signingRegion` parameter. A request is multi-region if the `signingRegion` +parameter is set to `*`. diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js new file mode 100644 index 0000000..9039f8b --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js @@ -0,0 +1,121 @@ +'use strict'; + +var middlewareSdkS3 = require('@aws-sdk/middleware-sdk-s3'); +var signatureV4 = require('@smithy/signature-v4'); + +const signatureV4CrtContainer = { + CrtSignerV4: null, +}; + +class SignatureV4MultiRegion { + sigv4aSigner; + sigv4Signer; + signerOptions; + static sigv4aDependency() { + if (typeof signatureV4CrtContainer.CrtSignerV4 === "function") { + return "crt"; + } + else if (typeof signatureV4.signatureV4aContainer.SignatureV4a === "function") { + return "js"; + } + return "none"; + } + constructor(options) { + this.sigv4Signer = new middlewareSdkS3.SignatureV4S3Express(options); + this.signerOptions = options; + } + async sign(requestToSign, options = {}) { + if (options.signingRegion === "*") { + return this.getSigv4aSigner().sign(requestToSign, options); + } + return this.sigv4Signer.sign(requestToSign, options); + } + async signWithCredentials(requestToSign, credentials, options = {}) { + if (options.signingRegion === "*") { + const signer = this.getSigv4aSigner(); + const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4; + if (CrtSignerV4 && signer instanceof CrtSignerV4) { + return signer.signWithCredentials(requestToSign, credentials, options); + } + else { + throw new Error(`signWithCredentials with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. ` + + `Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. ` + + `You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] ` + + `or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. ` + + `For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`); + } + } + return this.sigv4Signer.signWithCredentials(requestToSign, credentials, options); + } + async presign(originalRequest, options = {}) { + if (options.signingRegion === "*") { + const signer = this.getSigv4aSigner(); + const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4; + if (CrtSignerV4 && signer instanceof CrtSignerV4) { + return signer.presign(originalRequest, options); + } + else { + throw new Error(`presign with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. ` + + `Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. ` + + `You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] ` + + `or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. ` + + `For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`); + } + } + return this.sigv4Signer.presign(originalRequest, options); + } + async presignWithCredentials(originalRequest, credentials, options = {}) { + if (options.signingRegion === "*") { + throw new Error("Method presignWithCredentials is not supported for [signingRegion=*]."); + } + return this.sigv4Signer.presignWithCredentials(originalRequest, credentials, options); + } + getSigv4aSigner() { + if (!this.sigv4aSigner) { + const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4; + const JsSigV4aSigner = signatureV4.signatureV4aContainer.SignatureV4a; + if (this.signerOptions.runtime === "node") { + if (!CrtSignerV4 && !JsSigV4aSigner) { + throw new Error("Neither CRT nor JS SigV4a implementation is available. " + + "Please load either @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a. " + + "For more information please go to " + + "https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt"); + } + if (CrtSignerV4 && typeof CrtSignerV4 === "function") { + this.sigv4aSigner = new CrtSignerV4({ + ...this.signerOptions, + signingAlgorithm: 1, + }); + } + else if (JsSigV4aSigner && typeof JsSigV4aSigner === "function") { + this.sigv4aSigner = new JsSigV4aSigner({ + ...this.signerOptions, + }); + } + else { + throw new Error("Available SigV4a implementation is not a valid constructor. " + + "Please ensure you've properly imported @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a." + + "For more information please go to " + + "https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt"); + } + } + else { + if (!JsSigV4aSigner || typeof JsSigV4aSigner !== "function") { + throw new Error("JS SigV4a implementation is not available or not a valid constructor. " + + "Please check whether you have installed the @aws-sdk/signature-v4a package explicitly. The CRT implementation is not available for browsers. " + + "You must also register the package by calling [require('@aws-sdk/signature-v4a');] " + + "or an ESM equivalent such as [import '@aws-sdk/signature-v4a';]. " + + "For more information please go to " + + "https://github.com/aws/aws-sdk-js-v3#using-javascript-non-crt-implementation-of-sigv4a"); + } + this.sigv4aSigner = new JsSigV4aSigner({ + ...this.signerOptions, + }); + } + } + return this.sigv4aSigner; + } +} + +exports.SignatureV4MultiRegion = SignatureV4MultiRegion; +exports.signatureV4CrtContainer = signatureV4CrtContainer; diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/SignatureV4MultiRegion.js b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/SignatureV4MultiRegion.js new file mode 100644 index 0000000..25d7458 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/SignatureV4MultiRegion.js @@ -0,0 +1,112 @@ +import { SignatureV4S3Express } from "@aws-sdk/middleware-sdk-s3"; +import { signatureV4aContainer } from "@smithy/signature-v4"; +import { signatureV4CrtContainer } from "./signature-v4-crt-container"; +export class SignatureV4MultiRegion { + sigv4aSigner; + sigv4Signer; + signerOptions; + static sigv4aDependency() { + if (typeof signatureV4CrtContainer.CrtSignerV4 === "function") { + return "crt"; + } + else if (typeof signatureV4aContainer.SignatureV4a === "function") { + return "js"; + } + return "none"; + } + constructor(options) { + this.sigv4Signer = new SignatureV4S3Express(options); + this.signerOptions = options; + } + async sign(requestToSign, options = {}) { + if (options.signingRegion === "*") { + return this.getSigv4aSigner().sign(requestToSign, options); + } + return this.sigv4Signer.sign(requestToSign, options); + } + async signWithCredentials(requestToSign, credentials, options = {}) { + if (options.signingRegion === "*") { + const signer = this.getSigv4aSigner(); + const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4; + if (CrtSignerV4 && signer instanceof CrtSignerV4) { + return signer.signWithCredentials(requestToSign, credentials, options); + } + else { + throw new Error(`signWithCredentials with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. ` + + `Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. ` + + `You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] ` + + `or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. ` + + `For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`); + } + } + return this.sigv4Signer.signWithCredentials(requestToSign, credentials, options); + } + async presign(originalRequest, options = {}) { + if (options.signingRegion === "*") { + const signer = this.getSigv4aSigner(); + const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4; + if (CrtSignerV4 && signer instanceof CrtSignerV4) { + return signer.presign(originalRequest, options); + } + else { + throw new Error(`presign with signingRegion '*' is only supported when using the CRT dependency @aws-sdk/signature-v4-crt. ` + + `Please check whether you have installed the "@aws-sdk/signature-v4-crt" package explicitly. ` + + `You must also register the package by calling [require("@aws-sdk/signature-v4-crt");] ` + + `or an ESM equivalent such as [import "@aws-sdk/signature-v4-crt";]. ` + + `For more information please go to https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt`); + } + } + return this.sigv4Signer.presign(originalRequest, options); + } + async presignWithCredentials(originalRequest, credentials, options = {}) { + if (options.signingRegion === "*") { + throw new Error("Method presignWithCredentials is not supported for [signingRegion=*]."); + } + return this.sigv4Signer.presignWithCredentials(originalRequest, credentials, options); + } + getSigv4aSigner() { + if (!this.sigv4aSigner) { + const CrtSignerV4 = signatureV4CrtContainer.CrtSignerV4; + const JsSigV4aSigner = signatureV4aContainer.SignatureV4a; + if (this.signerOptions.runtime === "node") { + if (!CrtSignerV4 && !JsSigV4aSigner) { + throw new Error("Neither CRT nor JS SigV4a implementation is available. " + + "Please load either @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a. " + + "For more information please go to " + + "https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt"); + } + if (CrtSignerV4 && typeof CrtSignerV4 === "function") { + this.sigv4aSigner = new CrtSignerV4({ + ...this.signerOptions, + signingAlgorithm: 1, + }); + } + else if (JsSigV4aSigner && typeof JsSigV4aSigner === "function") { + this.sigv4aSigner = new JsSigV4aSigner({ + ...this.signerOptions, + }); + } + else { + throw new Error("Available SigV4a implementation is not a valid constructor. " + + "Please ensure you've properly imported @aws-sdk/signature-v4-crt or @aws-sdk/signature-v4a." + + "For more information please go to " + + "https://github.com/aws/aws-sdk-js-v3#functionality-requiring-aws-common-runtime-crt"); + } + } + else { + if (!JsSigV4aSigner || typeof JsSigV4aSigner !== "function") { + throw new Error("JS SigV4a implementation is not available or not a valid constructor. " + + "Please check whether you have installed the @aws-sdk/signature-v4a package explicitly. The CRT implementation is not available for browsers. " + + "You must also register the package by calling [require('@aws-sdk/signature-v4a');] " + + "or an ESM equivalent such as [import '@aws-sdk/signature-v4a';]. " + + "For more information please go to " + + "https://github.com/aws/aws-sdk-js-v3#using-javascript-non-crt-implementation-of-sigv4a"); + } + this.sigv4aSigner = new JsSigV4aSigner({ + ...this.signerOptions, + }); + } + } + return this.sigv4aSigner; + } +} diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/index.js b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/index.js new file mode 100644 index 0000000..1e32dd2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./SignatureV4MultiRegion"; +export * from "./signature-v4-crt-container"; diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/signature-v4-crt-container.js b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/signature-v4-crt-container.js new file mode 100644 index 0000000..c4bcc64 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/signature-v4-crt-container.js @@ -0,0 +1,3 @@ +export const signatureV4CrtContainer = { + CrtSignerV4: null, +}; diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/SignatureV4MultiRegion.d.ts b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/SignatureV4MultiRegion.d.ts new file mode 100644 index 0000000..af37876 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/SignatureV4MultiRegion.d.ts @@ -0,0 +1,35 @@ +import type { SignatureV4CryptoInit, SignatureV4Init } from "@smithy/signature-v4"; +import type { AwsCredentialIdentity, HttpRequest, RequestPresigner, RequestPresigningArguments, RequestSigner, RequestSigningArguments } from "@smithy/types"; +/** + * @internal + */ +export type SignatureV4MultiRegionInit = SignatureV4Init & SignatureV4CryptoInit & { + runtime?: string; +}; +/** + * A SigV4-compatible signer for S3 service. In order to support SigV4a algorithm according to the operation input + * dynamically, the signer wraps native module SigV4a signer and JS SigV4 signer. It signs the request with SigV4a + * algorithm if the request needs to be signed with `*` region. Otherwise, it signs the request with normal SigV4 + * signer. + * @internal + */ +export declare class SignatureV4MultiRegion implements RequestPresigner, RequestSigner { + private sigv4aSigner?; + private readonly sigv4Signer; + private readonly signerOptions; + static sigv4aDependency(): "none" | "js" | "crt"; + constructor(options: SignatureV4MultiRegionInit); + sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise; + /** + * Sign with alternate credentials to the ones provided in the constructor. + * Note: This is only supported for SigV4a when using the CRT implementation. + */ + signWithCredentials(requestToSign: HttpRequest, credentials: AwsCredentialIdentity, options?: RequestSigningArguments): Promise; + /** + * Presign a request. + * Note: This is only supported for SigV4a when using the CRT implementation. + */ + presign(originalRequest: HttpRequest, options?: RequestPresigningArguments): Promise; + presignWithCredentials(originalRequest: HttpRequest, credentials: AwsCredentialIdentity, options?: RequestPresigningArguments): Promise; + private getSigv4aSigner; +} diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/index.d.ts new file mode 100644 index 0000000..1a5cf5f --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/index.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + */ +export * from "./SignatureV4MultiRegion"; +export * from "./signature-v4-crt-container"; diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/signature-v4-crt-container.d.ts b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/signature-v4-crt-container.d.ts new file mode 100644 index 0000000..853fbd5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/signature-v4-crt-container.d.ts @@ -0,0 +1,28 @@ +import type { AwsCredentialIdentity } from "@aws-sdk/types"; +import type { HttpRequest, RequestPresigner, RequestSigner, RequestSigningArguments } from "@smithy/types"; +/** + * @public + */ +export type OptionalCrtSignerV4 = { + /** + * This constructor is not typed so as not to require a type import + * from the signature-v4-crt package. + * + * The true type is CrtSignerV4 from \@aws-sdk/signature-v4-crt. + */ + new (options: any): RequestPresigner & RequestSigner & { + signWithCredentials(requestToSign: HttpRequest, credentials: AwsCredentialIdentity, options: RequestSigningArguments): Promise; + }; +}; +/** + * @public + * + * \@aws-sdk/signature-v4-crt will install the constructor in this + * container if it is installed. + * + * This avoids a runtime-require being interpreted statically by bundlers. + * + */ +export declare const signatureV4CrtContainer: { + CrtSignerV4: null | OptionalCrtSignerV4; +}; diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/SignatureV4MultiRegion.d.ts b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/SignatureV4MultiRegion.d.ts new file mode 100644 index 0000000..1fd47bf --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/SignatureV4MultiRegion.d.ts @@ -0,0 +1,41 @@ +import { SignatureV4CryptoInit, SignatureV4Init } from "@smithy/signature-v4"; +import { + AwsCredentialIdentity, + HttpRequest, + RequestPresigner, + RequestPresigningArguments, + RequestSigner, + RequestSigningArguments, +} from "@smithy/types"; +export type SignatureV4MultiRegionInit = SignatureV4Init & + SignatureV4CryptoInit & { + runtime?: string; + }; +export declare class SignatureV4MultiRegion + implements RequestPresigner, RequestSigner +{ + private sigv4aSigner?; + private readonly sigv4Signer; + private readonly signerOptions; + static sigv4aDependency(): "none" | "js" | "crt"; + constructor(options: SignatureV4MultiRegionInit); + sign( + requestToSign: HttpRequest, + options?: RequestSigningArguments + ): Promise; + signWithCredentials( + requestToSign: HttpRequest, + credentials: AwsCredentialIdentity, + options?: RequestSigningArguments + ): Promise; + presign( + originalRequest: HttpRequest, + options?: RequestPresigningArguments + ): Promise; + presignWithCredentials( + originalRequest: HttpRequest, + credentials: AwsCredentialIdentity, + options?: RequestPresigningArguments + ): Promise; + private getSigv4aSigner; +} diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..1e32dd2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./SignatureV4MultiRegion"; +export * from "./signature-v4-crt-container"; diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/signature-v4-crt-container.d.ts b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/signature-v4-crt-container.d.ts new file mode 100644 index 0000000..c91bec1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/signature-v4-crt-container.d.ts @@ -0,0 +1,20 @@ +import { AwsCredentialIdentity } from "@aws-sdk/types"; +import { + HttpRequest, + RequestPresigner, + RequestSigner, + RequestSigningArguments, +} from "@smithy/types"; +export type OptionalCrtSignerV4 = { + new (options: any): RequestPresigner & + RequestSigner & { + signWithCredentials( + requestToSign: HttpRequest, + credentials: AwsCredentialIdentity, + options: RequestSigningArguments + ): Promise; + }; +}; +export declare const signatureV4CrtContainer: { + CrtSignerV4: null | OptionalCrtSignerV4; +}; diff --git a/bff/node_modules/@aws-sdk/signature-v4-multi-region/package.json b/bff/node_modules/@aws-sdk/signature-v4-multi-region/package.json new file mode 100644 index 0000000..b87f195 --- /dev/null +++ b/bff/node_modules/@aws-sdk/signature-v4-multi-region/package.json @@ -0,0 +1,61 @@ +{ + "name": "@aws-sdk/signature-v4-multi-region", + "version": "3.996.15", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline signature-v4-multi-region", + "build:es": "tsc -p tsconfig.es.json", + "build:browser": "node ./test-browser/browser-build/esbuild", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts", + "test:browser": "yarn build:browser && yarn g:vitest run -c vitest.config.browser.mts", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "^3.972.27", + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/signature-v4-multi-region", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/signature-v4-multi-region" + } +} diff --git a/bff/node_modules/@aws-sdk/token-providers/LICENSE b/bff/node_modules/@aws-sdk/token-providers/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/token-providers/README.md b/bff/node_modules/@aws-sdk/token-providers/README.md new file mode 100644 index 0000000..ce60982 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/README.md @@ -0,0 +1,62 @@ +# @aws-sdk/token-providers + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/token-providers/latest.svg)](https://www.npmjs.com/package/@aws-sdk/token-providers) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/token-providers.svg)](https://www.npmjs.com/package/@aws-sdk/token-providers) + +A collection of all token providers. The token providers should be used when the authorization +type is going to be token based. For example, the `bearer` authorization type set using +[httpBearerAuth trait][http-bearer-auth-trait] in Smithy. + +## Static Token Provider + +```ts +import { fromStatic } from "@aws-sdk/token-providers"; + +const token = { token: "TOKEN" }; +const staticTokenProvider = fromStatic(token); + +const staticToken = await staticTokenProvider(); // returns { token: "TOKEN" } +``` + +## SSO Token Provider + +```ts +import { fromSso } from "@aws-sdk/token-providers"; + +// returns token from SSO token cache or ssoOidc.createToken() call. +const ssoToken = await fromSso(); +``` + +## Env Token Provider with Signing Name + +```ts +import { fromEnvSigningName } from "@aws-sdk/token-providers"; + +// returns token from environment, where token's key is based on signing name. +const envSigningNameToken = await fromEnvSigningName({ signingName: "signing name" }); +``` + +## Token Provider Chain + +```ts +import { nodeProvider } from "@aws-sdk/token-providers"; + +// returns token from default providers. +const token = await nodeProvider(); +``` + +[http-bearer-auth-trait]: https://smithy.io/2.0/spec/authentication-traits.html#smithy-api-httpbearerauth-trait + +--- + +### Development + +This package contains a minimal copy of the SSO OIDC client, instead of relying on the full client, which +would cause a circular dependency. + +When regenerating the bundled version of the SSO OIDC client, run the esbuild.js script and then make the following changes: + +- Remove any dependency of the generated client on the credential chain such that it would create + a circular dependency back to this package. Because we only need the `CreateTokenCommand`, the client, and this command's + associated `Exception`s, it is possible to remove auth dependencies. +- Ensure all required packages are declared in the `package.json` of token-providers. diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-cjs/index.js b/bff/node_modules/@aws-sdk/token-providers/dist-cjs/index.js new file mode 100644 index 0000000..f4469d2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-cjs/index.js @@ -0,0 +1,157 @@ +'use strict'; + +var client = require('@aws-sdk/core/client'); +var httpAuthSchemes = require('@aws-sdk/core/httpAuthSchemes'); +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); +var node_fs = require('node:fs'); + +const fromEnvSigningName = ({ logger, signingName } = {}) => async () => { + logger?.debug?.("@aws-sdk/token-providers - fromEnvSigningName"); + if (!signingName) { + throw new propertyProvider.TokenProviderError("Please pass 'signingName' to compute environment variable key", { logger }); + } + const bearerTokenKey = httpAuthSchemes.getBearerTokenEnvKey(signingName); + if (!(bearerTokenKey in process.env)) { + throw new propertyProvider.TokenProviderError(`Token not present in '${bearerTokenKey}' environment variable`, { logger }); + } + const token = { token: process.env[bearerTokenKey] }; + client.setTokenFeature(token, "BEARER_SERVICE_ENV_VARS", "3"); + return token; +}; + +const EXPIRE_WINDOW_MS = 5 * 60 * 1000; +const REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`; + +const getSsoOidcClient = async (ssoRegion, init = {}, callerClientConfig) => { + const { SSOOIDCClient } = await import('@aws-sdk/nested-clients/sso-oidc'); + const coalesce = (prop) => init.clientConfig?.[prop] ?? init.parentClientConfig?.[prop] ?? callerClientConfig?.[prop]; + const ssoOidcClient = new SSOOIDCClient(Object.assign({}, init.clientConfig ?? {}, { + region: ssoRegion ?? init.clientConfig?.region, + logger: coalesce("logger"), + userAgentAppId: coalesce("userAgentAppId"), + })); + return ssoOidcClient; +}; + +const getNewSsoOidcToken = async (ssoToken, ssoRegion, init = {}, callerClientConfig) => { + const { CreateTokenCommand } = await import('@aws-sdk/nested-clients/sso-oidc'); + const ssoOidcClient = await getSsoOidcClient(ssoRegion, init, callerClientConfig); + return ssoOidcClient.send(new CreateTokenCommand({ + clientId: ssoToken.clientId, + clientSecret: ssoToken.clientSecret, + refreshToken: ssoToken.refreshToken, + grantType: "refresh_token", + })); +}; + +const validateTokenExpiry = (token) => { + if (token.expiration && token.expiration.getTime() < Date.now()) { + throw new propertyProvider.TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false); + } +}; + +const validateTokenKey = (key, value, forRefresh = false) => { + if (typeof value === "undefined") { + throw new propertyProvider.TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? ". Cannot refresh" : ""}. ${REFRESH_MESSAGE}`, false); + } +}; + +const { writeFile } = node_fs.promises; +const writeSSOTokenToFile = (id, ssoToken) => { + const tokenFilepath = sharedIniFileLoader.getSSOTokenFilepath(id); + const tokenString = JSON.stringify(ssoToken, null, 2); + return writeFile(tokenFilepath, tokenString); +}; + +const lastRefreshAttemptTime = new Date(0); +const fromSso = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/token-providers - fromSso"); + const profiles = await sharedIniFileLoader.parseKnownFiles(init); + const profileName = sharedIniFileLoader.getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }); + const profile = profiles[profileName]; + if (!profile) { + throw new propertyProvider.TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false); + } + else if (!profile["sso_session"]) { + throw new propertyProvider.TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`); + } + const ssoSessionName = profile["sso_session"]; + const ssoSessions = await sharedIniFileLoader.loadSsoSessionData(init); + const ssoSession = ssoSessions[ssoSessionName]; + if (!ssoSession) { + throw new propertyProvider.TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false); + } + for (const ssoSessionRequiredKey of ["sso_start_url", "sso_region"]) { + if (!ssoSession[ssoSessionRequiredKey]) { + throw new propertyProvider.TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false); + } + } + ssoSession["sso_start_url"]; + const ssoRegion = ssoSession["sso_region"]; + let ssoToken; + try { + ssoToken = await sharedIniFileLoader.getSSOTokenFromFile(ssoSessionName); + } + catch (e) { + throw new propertyProvider.TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`, false); + } + validateTokenKey("accessToken", ssoToken.accessToken); + validateTokenKey("expiresAt", ssoToken.expiresAt); + const { accessToken, expiresAt } = ssoToken; + const existingToken = { token: accessToken, expiration: new Date(expiresAt) }; + if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) { + return existingToken; + } + if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1000) { + validateTokenExpiry(existingToken); + return existingToken; + } + validateTokenKey("clientId", ssoToken.clientId, true); + validateTokenKey("clientSecret", ssoToken.clientSecret, true); + validateTokenKey("refreshToken", ssoToken.refreshToken, true); + try { + lastRefreshAttemptTime.setTime(Date.now()); + const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init, callerClientConfig); + validateTokenKey("accessToken", newSsoOidcToken.accessToken); + validateTokenKey("expiresIn", newSsoOidcToken.expiresIn); + const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1000); + try { + await writeSSOTokenToFile(ssoSessionName, { + ...ssoToken, + accessToken: newSsoOidcToken.accessToken, + expiresAt: newTokenExpiration.toISOString(), + refreshToken: newSsoOidcToken.refreshToken, + }); + } + catch (error) { + } + return { + token: newSsoOidcToken.accessToken, + expiration: newTokenExpiration, + }; + } + catch (error) { + validateTokenExpiry(existingToken); + return existingToken; + } +}; + +const fromStatic = ({ token, logger }) => async () => { + logger?.debug("@aws-sdk/token-providers - fromStatic"); + if (!token || !token.token) { + throw new propertyProvider.TokenProviderError(`Please pass a valid token to fromStatic`, false); + } + return token; +}; + +const nodeProvider = (init = {}) => propertyProvider.memoize(propertyProvider.chain(fromSso(init), async () => { + throw new propertyProvider.TokenProviderError("Could not load token from any providers", false); +}), (token) => token.expiration !== undefined && token.expiration.getTime() - Date.now() < 300000, (token) => token.expiration !== undefined); + +exports.fromEnvSigningName = fromEnvSigningName; +exports.fromSso = fromSso; +exports.fromStatic = fromStatic; +exports.nodeProvider = nodeProvider; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/constants.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/constants.js new file mode 100644 index 0000000..b84a126 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/constants.js @@ -0,0 +1,2 @@ +export const EXPIRE_WINDOW_MS = 5 * 60 * 1000; +export const REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js new file mode 100644 index 0000000..a6faec8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/fromEnvSigningName.js @@ -0,0 +1,16 @@ +import { setTokenFeature } from "@aws-sdk/core/client"; +import { getBearerTokenEnvKey } from "@aws-sdk/core/httpAuthSchemes"; +import { TokenProviderError } from "@smithy/property-provider"; +export const fromEnvSigningName = ({ logger, signingName } = {}) => async () => { + logger?.debug?.("@aws-sdk/token-providers - fromEnvSigningName"); + if (!signingName) { + throw new TokenProviderError("Please pass 'signingName' to compute environment variable key", { logger }); + } + const bearerTokenKey = getBearerTokenEnvKey(signingName); + if (!(bearerTokenKey in process.env)) { + throw new TokenProviderError(`Token not present in '${bearerTokenKey}' environment variable`, { logger }); + } + const token = { token: process.env[bearerTokenKey] }; + setTokenFeature(token, "BEARER_SERVICE_ENV_VARS", "3"); + return token; +}; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js new file mode 100644 index 0000000..c8445d7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/fromSso.js @@ -0,0 +1,81 @@ +import { TokenProviderError } from "@smithy/property-provider"; +import { getProfileName, getSSOTokenFromFile, loadSsoSessionData, parseKnownFiles, } from "@smithy/shared-ini-file-loader"; +import { EXPIRE_WINDOW_MS, REFRESH_MESSAGE } from "./constants"; +import { getNewSsoOidcToken } from "./getNewSsoOidcToken"; +import { validateTokenExpiry } from "./validateTokenExpiry"; +import { validateTokenKey } from "./validateTokenKey"; +import { writeSSOTokenToFile } from "./writeSSOTokenToFile"; +const lastRefreshAttemptTime = new Date(0); +export const fromSso = (init = {}) => async ({ callerClientConfig } = {}) => { + init.logger?.debug("@aws-sdk/token-providers - fromSso"); + const profiles = await parseKnownFiles(init); + const profileName = getProfileName({ + profile: init.profile ?? callerClientConfig?.profile, + }); + const profile = profiles[profileName]; + if (!profile) { + throw new TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false); + } + else if (!profile["sso_session"]) { + throw new TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`); + } + const ssoSessionName = profile["sso_session"]; + const ssoSessions = await loadSsoSessionData(init); + const ssoSession = ssoSessions[ssoSessionName]; + if (!ssoSession) { + throw new TokenProviderError(`Sso session '${ssoSessionName}' could not be found in shared credentials file.`, false); + } + for (const ssoSessionRequiredKey of ["sso_start_url", "sso_region"]) { + if (!ssoSession[ssoSessionRequiredKey]) { + throw new TokenProviderError(`Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`, false); + } + } + const ssoStartUrl = ssoSession["sso_start_url"]; + const ssoRegion = ssoSession["sso_region"]; + let ssoToken; + try { + ssoToken = await getSSOTokenFromFile(ssoSessionName); + } + catch (e) { + throw new TokenProviderError(`The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`, false); + } + validateTokenKey("accessToken", ssoToken.accessToken); + validateTokenKey("expiresAt", ssoToken.expiresAt); + const { accessToken, expiresAt } = ssoToken; + const existingToken = { token: accessToken, expiration: new Date(expiresAt) }; + if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) { + return existingToken; + } + if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1000) { + validateTokenExpiry(existingToken); + return existingToken; + } + validateTokenKey("clientId", ssoToken.clientId, true); + validateTokenKey("clientSecret", ssoToken.clientSecret, true); + validateTokenKey("refreshToken", ssoToken.refreshToken, true); + try { + lastRefreshAttemptTime.setTime(Date.now()); + const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion, init, callerClientConfig); + validateTokenKey("accessToken", newSsoOidcToken.accessToken); + validateTokenKey("expiresIn", newSsoOidcToken.expiresIn); + const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1000); + try { + await writeSSOTokenToFile(ssoSessionName, { + ...ssoToken, + accessToken: newSsoOidcToken.accessToken, + expiresAt: newTokenExpiration.toISOString(), + refreshToken: newSsoOidcToken.refreshToken, + }); + } + catch (error) { + } + return { + token: newSsoOidcToken.accessToken, + expiration: newTokenExpiration, + }; + } + catch (error) { + validateTokenExpiry(existingToken); + return existingToken; + } +}; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js new file mode 100644 index 0000000..0704ae0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/fromStatic.js @@ -0,0 +1,8 @@ +import { TokenProviderError } from "@smithy/property-provider"; +export const fromStatic = ({ token, logger }) => async () => { + logger?.debug("@aws-sdk/token-providers - fromStatic"); + if (!token || !token.token) { + throw new TokenProviderError(`Please pass a valid token to fromStatic`, false); + } + return token; +}; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js new file mode 100644 index 0000000..ecbbe63 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/getNewSsoOidcToken.js @@ -0,0 +1,11 @@ +import { getSsoOidcClient } from "./getSsoOidcClient"; +export const getNewSsoOidcToken = async (ssoToken, ssoRegion, init = {}, callerClientConfig) => { + const { CreateTokenCommand } = await import("@aws-sdk/nested-clients/sso-oidc"); + const ssoOidcClient = await getSsoOidcClient(ssoRegion, init, callerClientConfig); + return ssoOidcClient.send(new CreateTokenCommand({ + clientId: ssoToken.clientId, + clientSecret: ssoToken.clientSecret, + refreshToken: ssoToken.refreshToken, + grantType: "refresh_token", + })); +}; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js new file mode 100644 index 0000000..22a8aec --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/getSsoOidcClient.js @@ -0,0 +1,10 @@ +export const getSsoOidcClient = async (ssoRegion, init = {}, callerClientConfig) => { + const { SSOOIDCClient } = await import("@aws-sdk/nested-clients/sso-oidc"); + const coalesce = (prop) => init.clientConfig?.[prop] ?? init.parentClientConfig?.[prop] ?? callerClientConfig?.[prop]; + const ssoOidcClient = new SSOOIDCClient(Object.assign({}, init.clientConfig ?? {}, { + region: ssoRegion ?? init.clientConfig?.region, + logger: coalesce("logger"), + userAgentAppId: coalesce("userAgentAppId"), + })); + return ssoOidcClient; +}; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/index.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/index.js new file mode 100644 index 0000000..ae204f8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/index.js @@ -0,0 +1,4 @@ +export * from "./fromEnvSigningName"; +export * from "./fromSso"; +export * from "./fromStatic"; +export * from "./nodeProvider"; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js new file mode 100644 index 0000000..a0c7b52 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/nodeProvider.js @@ -0,0 +1,5 @@ +import { chain, memoize, TokenProviderError } from "@smithy/property-provider"; +import { fromSso } from "./fromSso"; +export const nodeProvider = (init = {}) => memoize(chain(fromSso(init), async () => { + throw new TokenProviderError("Could not load token from any providers", false); +}), (token) => token.expiration !== undefined && token.expiration.getTime() - Date.now() < 300000, (token) => token.expiration !== undefined); diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js new file mode 100644 index 0000000..8118d7c --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/validateTokenExpiry.js @@ -0,0 +1,7 @@ +import { TokenProviderError } from "@smithy/property-provider"; +import { REFRESH_MESSAGE } from "./constants"; +export const validateTokenExpiry = (token) => { + if (token.expiration && token.expiration.getTime() < Date.now()) { + throw new TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false); + } +}; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js new file mode 100644 index 0000000..4979638 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/validateTokenKey.js @@ -0,0 +1,7 @@ +import { TokenProviderError } from "@smithy/property-provider"; +import { REFRESH_MESSAGE } from "./constants"; +export const validateTokenKey = (key, value, forRefresh = false) => { + if (typeof value === "undefined") { + throw new TokenProviderError(`Value not present for '${key}' in SSO Token${forRefresh ? ". Cannot refresh" : ""}. ${REFRESH_MESSAGE}`, false); + } +}; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js b/bff/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js new file mode 100644 index 0000000..c982c4e --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-es/writeSSOTokenToFile.js @@ -0,0 +1,8 @@ +import { getSSOTokenFilepath } from "@smithy/shared-ini-file-loader"; +import { promises as fsPromises } from "node:fs"; +const { writeFile } = fsPromises; +export const writeSSOTokenToFile = (id, ssoToken) => { + const tokenFilepath = getSSOTokenFilepath(id); + const tokenString = JSON.stringify(ssoToken, null, 2); + return writeFile(tokenFilepath, tokenString); +}; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/constants.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/constants.d.ts new file mode 100644 index 0000000..de28cde --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/constants.d.ts @@ -0,0 +1,8 @@ +/** + * The time window (5 mins) that SDK will treat the SSO token expires in before the defined expiration date in token. + * This is needed because server side may have invalidated the token before the defined expiration date. + * + * @internal + */ +export declare const EXPIRE_WINDOW_MS: number; +export declare const REFRESH_MESSAGE = "To refresh this SSO session run 'aws sso login' with the corresponding profile."; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/fromEnvSigningName.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/fromEnvSigningName.d.ts new file mode 100644 index 0000000..7282c06 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/fromEnvSigningName.d.ts @@ -0,0 +1,18 @@ +import type { CredentialProviderOptions, TokenIdentityProvider } from "@aws-sdk/types"; +/** + * @public + */ +export interface FromEnvSigningNameInit extends CredentialProviderOptions { + signingName?: string; +} +/** + * Creates a TokenIdentityProvider that retrieves bearer token from environment variable + * + * @param options - Configuration options for the token provider + * @param options.logger - Optional logger for debug messages + * @param options.signingName - Service signing name used to determine environment variable key + * @returns TokenIdentityProvider that provides bearer token from environment variable + * + * @public + */ +export declare const fromEnvSigningName: ({ logger, signingName }?: FromEnvSigningNameInit) => TokenIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/fromSso.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/fromSso.d.ts new file mode 100644 index 0000000..aca0002 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/fromSso.d.ts @@ -0,0 +1,12 @@ +import type { CredentialProviderOptions, RuntimeConfigIdentityProvider, TokenIdentity } from "@aws-sdk/types"; +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +export interface FromSsoInit extends SourceProfileInit, CredentialProviderOptions { + /** + * @see SSOOIDCClientConfig in \@aws-sdk/client-sso-oidc. + */ + clientConfig?: any; +} +/** + * Creates a token provider that will read from SSO token cache or ssoOidc.createToken() call. + */ +export declare const fromSso: (init?: FromSsoInit) => RuntimeConfigIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/fromStatic.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/fromStatic.d.ts new file mode 100644 index 0000000..2481333 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/fromStatic.d.ts @@ -0,0 +1,9 @@ +import type { CredentialProviderOptions, TokenIdentity, TokenIdentityProvider } from "@aws-sdk/types"; +export interface FromStaticInit extends CredentialProviderOptions { + token?: TokenIdentity; +} +/** + * Creates a token provider that will read from static token. + * @public + */ +export declare const fromStatic: ({ token, logger }: FromStaticInit) => TokenIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/getNewSsoOidcToken.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/getNewSsoOidcToken.d.ts new file mode 100644 index 0000000..0564cde --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/getNewSsoOidcToken.d.ts @@ -0,0 +1,8 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { SSOToken } from "@smithy/shared-ini-file-loader"; +import type { FromSsoInit } from "./fromSso"; +/** + * Returns a new SSO OIDC token from SSOOIDC::createToken() API call. + * @internal + */ +export declare const getNewSsoOidcToken: (ssoToken: SSOToken, ssoRegion: string, init?: FromSsoInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/getSsoOidcClient.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/getSsoOidcClient.d.ts new file mode 100644 index 0000000..8ed85dd --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/getSsoOidcClient.d.ts @@ -0,0 +1,7 @@ +import type { AwsIdentityProperties } from "@aws-sdk/types"; +import type { FromSsoInit } from "./fromSso"; +/** + * Returns a SSOOIDC client for the given region. + * @internal + */ +export declare const getSsoOidcClient: (ssoRegion: string, init?: FromSsoInit, callerClientConfig?: AwsIdentityProperties["callerClientConfig"]) => Promise; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/index.d.ts new file mode 100644 index 0000000..ae204f8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/index.d.ts @@ -0,0 +1,4 @@ +export * from "./fromEnvSigningName"; +export * from "./fromSso"; +export * from "./fromStatic"; +export * from "./nodeProvider"; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/nodeProvider.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/nodeProvider.d.ts new file mode 100644 index 0000000..2f77c3c --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/nodeProvider.d.ts @@ -0,0 +1,18 @@ +import type { TokenIdentityProvider } from "@aws-sdk/types"; +import type { FromSsoInit } from "./fromSso"; +/** + * Creates a token provider that will attempt to find token from the + * following sources (listed in order of precedence): + * * SSO token from SSO cache or ssoOidc.createToken() call + * + * The default token provider is designed to invoke one provider at a time and only + * continue to the next if no token has been located. It currently has only SSO + * Token Provider in the chain. + * + * @param init Configuration that is passed to each individual + * provider + * + * @see fromSso The function used to source credentials from + * SSO cache or ssoOidc.createToken() call + */ +export declare const nodeProvider: (init?: FromSsoInit) => TokenIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..d7e7577 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,3 @@ +export declare const EXPIRE_WINDOW_MS: number; +export declare const REFRESH_MESSAGE = + "To refresh this SSO session run 'aws sso login' with the corresponding profile."; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromEnvSigningName.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromEnvSigningName.d.ts new file mode 100644 index 0000000..abf33ff --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromEnvSigningName.d.ts @@ -0,0 +1,11 @@ +import { + CredentialProviderOptions, + TokenIdentityProvider, +} from "@aws-sdk/types"; +export interface FromEnvSigningNameInit extends CredentialProviderOptions { + signingName?: string; +} +export declare const fromEnvSigningName: ({ + logger, + signingName, +}?: FromEnvSigningNameInit) => TokenIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromSso.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromSso.d.ts new file mode 100644 index 0000000..a94d488 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromSso.d.ts @@ -0,0 +1,14 @@ +import { + CredentialProviderOptions, + RuntimeConfigIdentityProvider, + TokenIdentity, +} from "@aws-sdk/types"; +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +export interface FromSsoInit + extends SourceProfileInit, + CredentialProviderOptions { + clientConfig?: any; +} +export declare const fromSso: ( + init?: FromSsoInit +) => RuntimeConfigIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromStatic.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromStatic.d.ts new file mode 100644 index 0000000..e680012 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/fromStatic.d.ts @@ -0,0 +1,12 @@ +import { + CredentialProviderOptions, + TokenIdentity, + TokenIdentityProvider, +} from "@aws-sdk/types"; +export interface FromStaticInit extends CredentialProviderOptions { + token?: TokenIdentity; +} +export declare const fromStatic: ({ + token, + logger, +}: FromStaticInit) => TokenIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getNewSsoOidcToken.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getNewSsoOidcToken.d.ts new file mode 100644 index 0000000..1ff3878 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getNewSsoOidcToken.d.ts @@ -0,0 +1,11 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { SSOToken } from "@smithy/shared-ini-file-loader"; +import { FromSsoInit } from "./fromSso"; +export declare const getNewSsoOidcToken: ( + ssoToken: SSOToken, + ssoRegion: string, + init?: FromSsoInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise< + import("@aws-sdk/nested-clients/sso-oidc").CreateTokenCommandOutput +>; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getSsoOidcClient.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getSsoOidcClient.d.ts new file mode 100644 index 0000000..eafcfc9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/getSsoOidcClient.d.ts @@ -0,0 +1,7 @@ +import { AwsIdentityProperties } from "@aws-sdk/types"; +import { FromSsoInit } from "./fromSso"; +export declare const getSsoOidcClient: ( + ssoRegion: string, + init?: FromSsoInit, + callerClientConfig?: AwsIdentityProperties["callerClientConfig"] +) => Promise; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ae204f8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +export * from "./fromEnvSigningName"; +export * from "./fromSso"; +export * from "./fromStatic"; +export * from "./nodeProvider"; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/nodeProvider.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/nodeProvider.d.ts new file mode 100644 index 0000000..11a9bd4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/nodeProvider.d.ts @@ -0,0 +1,5 @@ +import { TokenIdentityProvider } from "@aws-sdk/types"; +import { FromSsoInit } from "./fromSso"; +export declare const nodeProvider: ( + init?: FromSsoInit +) => TokenIdentityProvider; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenExpiry.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenExpiry.d.ts new file mode 100644 index 0000000..9003605 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenExpiry.d.ts @@ -0,0 +1,2 @@ +import { TokenIdentity } from "@aws-sdk/types"; +export declare const validateTokenExpiry: (token: TokenIdentity) => void; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenKey.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenKey.d.ts new file mode 100644 index 0000000..105b2b4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/validateTokenKey.d.ts @@ -0,0 +1,5 @@ +export declare const validateTokenKey: ( + key: string, + value: unknown, + forRefresh?: boolean +) => void; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/writeSSOTokenToFile.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/writeSSOTokenToFile.d.ts new file mode 100644 index 0000000..a6d025f --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/ts3.4/writeSSOTokenToFile.d.ts @@ -0,0 +1,5 @@ +import { SSOToken } from "@smithy/shared-ini-file-loader"; +export declare const writeSSOTokenToFile: ( + id: string, + ssoToken: SSOToken +) => Promise; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/validateTokenExpiry.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/validateTokenExpiry.d.ts new file mode 100644 index 0000000..c5cfa2f --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/validateTokenExpiry.d.ts @@ -0,0 +1,5 @@ +import type { TokenIdentity } from "@aws-sdk/types"; +/** + * Throws TokenProviderError is token is expired. + */ +export declare const validateTokenExpiry: (token: TokenIdentity) => void; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/validateTokenKey.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/validateTokenKey.d.ts new file mode 100644 index 0000000..a9618fd --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/validateTokenKey.d.ts @@ -0,0 +1,4 @@ +/** + * Throws TokenProviderError if value is undefined for key. + */ +export declare const validateTokenKey: (key: string, value: unknown, forRefresh?: boolean) => void; diff --git a/bff/node_modules/@aws-sdk/token-providers/dist-types/writeSSOTokenToFile.d.ts b/bff/node_modules/@aws-sdk/token-providers/dist-types/writeSSOTokenToFile.d.ts new file mode 100644 index 0000000..76f308c --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/dist-types/writeSSOTokenToFile.d.ts @@ -0,0 +1,5 @@ +import type { SSOToken } from "@smithy/shared-ini-file-loader"; +/** + * Writes SSO token to file based on filepath computed from ssoStartUrl or session name. + */ +export declare const writeSSOTokenToFile: (id: string, ssoToken: SSOToken) => Promise; diff --git a/bff/node_modules/@aws-sdk/token-providers/package.json b/bff/node_modules/@aws-sdk/token-providers/package.json new file mode 100644 index 0000000..3e29db1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/token-providers/package.json @@ -0,0 +1,70 @@ +{ + "name": "@aws-sdk/token-providers", + "version": "3.1021.0", + "description": "A collection of token providers", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline token-providers", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "aws", + "token" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": {}, + "react-native": {}, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/token-providers", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/token-providers" + } +} diff --git a/bff/node_modules/@aws-sdk/types/LICENSE b/bff/node_modules/@aws-sdk/types/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/types/README.md b/bff/node_modules/@aws-sdk/types/README.md new file mode 100644 index 0000000..a5658db --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/types + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/types/latest.svg)](https://www.npmjs.com/package/@aws-sdk/types) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/types.svg)](https://www.npmjs.com/package/@aws-sdk/types) diff --git a/bff/node_modules/@aws-sdk/types/dist-cjs/index.js b/bff/node_modules/@aws-sdk/types/dist-cjs/index.js new file mode 100644 index 0000000..318a5d0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-cjs/index.js @@ -0,0 +1,13 @@ +'use strict'; + +var types = require('@smithy/types'); + +exports.HostAddressType = void 0; +(function (HostAddressType) { + HostAddressType["AAAA"] = "AAAA"; + HostAddressType["A"] = "A"; +})(exports.HostAddressType || (exports.HostAddressType = {})); + +exports.EndpointURLScheme = types.EndpointURLScheme; +exports.HttpAuthLocation = types.HttpAuthLocation; +exports.RequestHandlerProtocol = types.RequestHandlerProtocol; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/abort.js b/bff/node_modules/@aws-sdk/types/dist-es/abort.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/abort.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/auth.js b/bff/node_modules/@aws-sdk/types/dist-es/auth.js new file mode 100644 index 0000000..81f903b --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/auth.js @@ -0,0 +1 @@ +export { HttpAuthLocation } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/blob/blob-types.js b/bff/node_modules/@aws-sdk/types/dist-es/blob/blob-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/blob/blob-types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/checksum.js b/bff/node_modules/@aws-sdk/types/dist-es/checksum.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/checksum.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/client.js b/bff/node_modules/@aws-sdk/types/dist-es/client.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/client.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/command.js b/bff/node_modules/@aws-sdk/types/dist-es/command.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/command.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/connection.js b/bff/node_modules/@aws-sdk/types/dist-es/connection.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/connection.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/credentials.js b/bff/node_modules/@aws-sdk/types/dist-es/credentials.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/credentials.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/crypto.js b/bff/node_modules/@aws-sdk/types/dist-es/crypto.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/crypto.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/dns.js b/bff/node_modules/@aws-sdk/types/dist-es/dns.js new file mode 100644 index 0000000..c6a2cd9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/dns.js @@ -0,0 +1,5 @@ +export var HostAddressType; +(function (HostAddressType) { + HostAddressType["AAAA"] = "AAAA"; + HostAddressType["A"] = "A"; +})(HostAddressType || (HostAddressType = {})); diff --git a/bff/node_modules/@aws-sdk/types/dist-es/encode.js b/bff/node_modules/@aws-sdk/types/dist-es/encode.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/encode.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/endpoint.js b/bff/node_modules/@aws-sdk/types/dist-es/endpoint.js new file mode 100644 index 0000000..ec53acc --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/endpoint.js @@ -0,0 +1 @@ +export { EndpointURLScheme, } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/eventStream.js b/bff/node_modules/@aws-sdk/types/dist-es/eventStream.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/eventStream.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/extensions/index.js b/bff/node_modules/@aws-sdk/types/dist-es/extensions/index.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/extensions/index.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/feature-ids.js b/bff/node_modules/@aws-sdk/types/dist-es/feature-ids.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/feature-ids.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/function.js b/bff/node_modules/@aws-sdk/types/dist-es/function.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/function.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/http.js b/bff/node_modules/@aws-sdk/types/dist-es/http.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/http.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/identity/AnonymousIdentity.js b/bff/node_modules/@aws-sdk/types/dist-es/identity/AnonymousIdentity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/identity/AnonymousIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/identity/AwsCredentialIdentity.js b/bff/node_modules/@aws-sdk/types/dist-es/identity/AwsCredentialIdentity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/identity/AwsCredentialIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/identity/Identity.js b/bff/node_modules/@aws-sdk/types/dist-es/identity/Identity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/identity/Identity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/identity/LoginIdentity.js b/bff/node_modules/@aws-sdk/types/dist-es/identity/LoginIdentity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/identity/LoginIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/identity/TokenIdentity.js b/bff/node_modules/@aws-sdk/types/dist-es/identity/TokenIdentity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/identity/TokenIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/identity/index.js b/bff/node_modules/@aws-sdk/types/dist-es/identity/index.js new file mode 100644 index 0000000..863e78e --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/identity/index.js @@ -0,0 +1,5 @@ +export * from "./AnonymousIdentity"; +export * from "./AwsCredentialIdentity"; +export * from "./Identity"; +export * from "./LoginIdentity"; +export * from "./TokenIdentity"; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/index.js b/bff/node_modules/@aws-sdk/types/dist-es/index.js new file mode 100644 index 0000000..a7f99d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/index.js @@ -0,0 +1,34 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./credentials"; +export * from "./crypto"; +export * from "./dns"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./function"; +export * from "./http"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./request"; +export * from "./response"; +export * from "./retry"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./token"; +export * from "./transfer"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/logger.js b/bff/node_modules/@aws-sdk/types/dist-es/logger.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/logger.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/middleware.js b/bff/node_modules/@aws-sdk/types/dist-es/middleware.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/middleware.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/pagination.js b/bff/node_modules/@aws-sdk/types/dist-es/pagination.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/pagination.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/profile.js b/bff/node_modules/@aws-sdk/types/dist-es/profile.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/profile.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/request.js b/bff/node_modules/@aws-sdk/types/dist-es/request.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/request.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/response.js b/bff/node_modules/@aws-sdk/types/dist-es/response.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/response.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/retry.js b/bff/node_modules/@aws-sdk/types/dist-es/retry.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/retry.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/serde.js b/bff/node_modules/@aws-sdk/types/dist-es/serde.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/serde.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/shapes.js b/bff/node_modules/@aws-sdk/types/dist-es/shapes.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/shapes.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/signature.js b/bff/node_modules/@aws-sdk/types/dist-es/signature.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/signature.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/stream.js b/bff/node_modules/@aws-sdk/types/dist-es/stream.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/stream.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/token.js b/bff/node_modules/@aws-sdk/types/dist-es/token.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/token.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/transfer.js b/bff/node_modules/@aws-sdk/types/dist-es/transfer.js new file mode 100644 index 0000000..ba57589 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/transfer.js @@ -0,0 +1 @@ +export { RequestHandlerProtocol, } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/uri.js b/bff/node_modules/@aws-sdk/types/dist-es/uri.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/uri.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/util.js b/bff/node_modules/@aws-sdk/types/dist-es/util.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/util.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-es/waiter.js b/bff/node_modules/@aws-sdk/types/dist-es/waiter.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-es/waiter.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/abort.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/abort.d.ts new file mode 100644 index 0000000..dad6079 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/abort.d.ts @@ -0,0 +1 @@ +export { AbortController, AbortHandler, AbortSignal } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/auth.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/auth.d.ts new file mode 100644 index 0000000..6626c16 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/auth.d.ts @@ -0,0 +1 @@ +export { AuthScheme, HttpAuthDefinition, HttpAuthLocation } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts new file mode 100644 index 0000000..df39efe --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/blob/blob-types.d.ts @@ -0,0 +1,2 @@ +import { BlobTypes } from "@smithy/types"; +export { BlobTypes }; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/checksum.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/checksum.d.ts new file mode 100644 index 0000000..f805d72 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/checksum.d.ts @@ -0,0 +1 @@ +export { Checksum, ChecksumConstructor } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/client.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/client.d.ts new file mode 100644 index 0000000..d6b3dcf --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/client.d.ts @@ -0,0 +1 @@ +export { Client } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/command.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/command.d.ts new file mode 100644 index 0000000..3887267 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/command.d.ts @@ -0,0 +1 @@ +export { Command } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/connection.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/connection.d.ts new file mode 100644 index 0000000..efcb4d7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/connection.d.ts @@ -0,0 +1 @@ +export { ConnectConfiguration, ConnectionManager, ConnectionManagerConfiguration, ConnectionPool } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/credentials.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/credentials.d.ts new file mode 100644 index 0000000..bd34a7c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/credentials.d.ts @@ -0,0 +1,52 @@ +import type { Logger } from "@smithy/types"; +import type { AwsCredentialIdentity } from "./identity"; +import type { Provider } from "./util"; +/** + * @public + * + * An object representing temporary or permanent AWS credentials. + * + * @deprecated Use {@link AwsCredentialIdentity} + */ +export interface Credentials extends AwsCredentialIdentity { +} +/** + * @public + * + * @deprecated Use {@link AwsCredentialIdentityProvider} + */ +export type CredentialProvider = Provider; +/** + * @public + * + * Common options for credential providers. + */ +export type CredentialProviderOptions = { + /** + * This logger is only used to provide information + * on what credential providers were used during resolution. + * + * It does not log credentials. + */ + logger?: Logger; + /** + * Present if the credential provider was created by calling + * the defaultCredentialProvider in a client's middleware, having + * access to the client's config. + * + * The region of that parent or outer client is important because + * an inner client used by the credential provider may need + * to match its default partition or region with that of + * the outer client. + * + * @internal + * @deprecated - not truly deprecated, marked as a warning to not use this. + */ + parentClientConfig?: { + region?: string | Provider; + profile?: string; + logger?: Logger; + userAgentAppId?(): Promise; + [key: string]: unknown; + }; +}; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/crypto.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/crypto.d.ts new file mode 100644 index 0000000..aeeea50 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/crypto.d.ts @@ -0,0 +1 @@ +export { Hash, HashConstructor, StreamHasher, randomValues, SourceData } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/dns.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/dns.d.ts new file mode 100644 index 0000000..8348cc4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/dns.d.ts @@ -0,0 +1,85 @@ +/** + * @public + * + * DNS record types + */ +export declare enum HostAddressType { + /** + * IPv6 + */ + AAAA = "AAAA", + /** + * IPv4 + */ + A = "A" +} +/** + * @public + */ +export interface HostAddress { + /** + * The {@link HostAddressType} of the host address. + */ + addressType: HostAddressType; + /** + * The resolved numerical address represented as a + * string. + */ + address: string; + /** + * The host name the {@link address} was resolved from. + */ + hostName: string; + /** + * The service record of {@link hostName}. + */ + service?: string; +} +/** + * @public + */ +export interface HostResolverArguments { + /** + * The host name to resolve. + */ + hostName: string; + /** + * The service record of {@link hostName}. + */ + service?: string; +} +/** + * @public + * + * Host Resolver interface for DNS queries + */ +export interface HostResolver { + /** + * Resolves the address(es) for {@link HostResolverArguments} and returns a + * list of addresses with (most likely) two addresses, one {@link HostAddressType.AAAA} + * and one {@link HostAddressType.A}. Calls to this function will likely alter + * the cache (if implemented) so that if there's multiple addresses, a different + * set will be returned on the next call. + * In the case of multi-answer, still only a maximum of two records should be + * returned. The resolver implementation is responsible for caching and rotation + * of the multiple addresses that get returned. + * Implementations don't have to explictly call getaddrinfo(), they can use + * high level abstractions provided in their language runtimes/libraries. + * @param args - arguments with host name query addresses for + * @returns promise with a list of {@link HostAddress} + */ + resolveAddress(args: HostResolverArguments): Promise; + /** + * Reports a failure on a {@link HostAddress} so that the cache (if implemented) + * can accomodate the failure and likely not return the address until it recovers. + * @param addr - host address to report a failure on + */ + reportFailureOnAddress(addr: HostAddress): void; + /** + * Empties the cache (if implemented) for a {@link HostResolverArguments.hostName}. + * If {@link HostResolverArguments.hostName} is not provided, the cache (if + * implemented) is emptied for all host names. + * @param args - optional arguments to empty the cache for + */ + purgeCache(args?: HostResolverArguments): void; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/encode.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/encode.d.ts new file mode 100644 index 0000000..128ee57 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/encode.d.ts @@ -0,0 +1 @@ +export { MessageDecoder, MessageEncoder, AvailableMessage, AvailableMessages } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/endpoint.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/endpoint.d.ts new file mode 100644 index 0000000..f2ffaf5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/endpoint.d.ts @@ -0,0 +1 @@ +export { EndpointARN, EndpointPartition, EndpointURLScheme, EndpointURL, EndpointObjectProperty, EndpointV2, EndpointParameters, } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/eventStream.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/eventStream.d.ts new file mode 100644 index 0000000..cee02f7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/eventStream.d.ts @@ -0,0 +1 @@ +export { Message, MessageHeaders, BooleanHeaderValue, ByteHeaderValue, ShortHeaderValue, IntegerHeaderValue, LongHeaderValue, BinaryHeaderValue, StringHeaderValue, TimestampHeaderValue, UuidHeaderValue, MessageHeaderValue, Int64, EventStreamSerdeContext, EventStreamMarshaller, EventStreamMarshallerDeserFn, EventStreamMarshallerSerFn, EventStreamPayloadHandler, EventStreamPayloadHandlerProvider, EventStreamRequestSigner, EventStreamSerdeProvider, EventStreamSignerProvider, } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts new file mode 100644 index 0000000..0dae874 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/extensions/index.d.ts @@ -0,0 +1,8 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface AwsRegionExtensionConfiguration { + setRegion(region: Provider): void; + region(): Provider; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts new file mode 100644 index 0000000..0c97111 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts @@ -0,0 +1,67 @@ +/** + * @internal + */ +export type AwsSdkFeatures = Partial<{ + RESOURCE_MODEL: "A"; + WAITER: "B"; + PAGINATOR: "C"; + RETRY_MODE_LEGACY: "D"; + RETRY_MODE_STANDARD: "E"; + RETRY_MODE_ADAPTIVE: "F"; + S3_EXPRESS_BUCKET: "J"; + S3_ACCESS_GRANTS: "K"; + GZIP_REQUEST_COMPRESSION: "L"; + PROTOCOL_RPC_V2_CBOR: "M"; + ENDPOINT_OVERRIDE: "N"; + ACCOUNT_ID_ENDPOINT: "O"; + ACCOUNT_ID_MODE_PREFERRED: "P"; + ACCOUNT_ID_MODE_DISABLED: "Q"; + ACCOUNT_ID_MODE_REQUIRED: "R"; + SIGV4A_SIGNING: "S"; + FLEXIBLE_CHECKSUMS_REQ_CRC32: "U"; + FLEXIBLE_CHECKSUMS_REQ_CRC32C: "V"; + FLEXIBLE_CHECKSUMS_REQ_CRC64: "W"; + FLEXIBLE_CHECKSUMS_REQ_SHA1: "X"; + FLEXIBLE_CHECKSUMS_REQ_SHA256: "Y"; + FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED: "Z"; + FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED: "a"; + FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED: "b"; + FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED: "c"; + DDB_MAPPER: "d"; +}> & AwsSdkCredentialsFeatures & AwsSdkTokenFeatures; +/** + * @internal + */ +export type AwsSdkCredentialsFeatures = Partial<{ + RESOLVED_ACCOUNT_ID: "T"; + CREDENTIALS_CODE: "e"; + CREDENTIALS_ENV_VARS: "g"; + CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN: "h"; + CREDENTIALS_STS_ASSUME_ROLE: "i"; + CREDENTIALS_STS_ASSUME_ROLE_SAML: "j"; + CREDENTIALS_STS_ASSUME_ROLE_WEB_ID: "k"; + CREDENTIALS_STS_FEDERATION_TOKEN: "l"; + CREDENTIALS_STS_SESSION_TOKEN: "m"; + CREDENTIALS_PROFILE: "n"; + CREDENTIALS_PROFILE_SOURCE_PROFILE: "o"; + CREDENTIALS_PROFILE_NAMED_PROVIDER: "p"; + CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN: "q"; + CREDENTIALS_PROFILE_SSO: "r"; + CREDENTIALS_SSO: "s"; + CREDENTIALS_PROFILE_SSO_LEGACY: "t"; + CREDENTIALS_SSO_LEGACY: "u"; + CREDENTIALS_PROFILE_PROCESS: "v"; + CREDENTIALS_PROCESS: "w"; + CREDENTIALS_BOTO2_CONFIG_FILE: "x"; + CREDENTIALS_AWS_SDK_STORE: "y"; + CREDENTIALS_HTTP: "z"; + CREDENTIALS_IMDS: "0"; + CREDENTIALS_PROFILE_LOGIN: "AC"; + CREDENTIALS_LOGIN: "AD"; +}>; +/** + * @internal + */ +export type AwsSdkTokenFeatures = Partial<{ + BEARER_SERVICE_ENV_VARS: "3"; +}>; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/function.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/function.d.ts new file mode 100644 index 0000000..3c777fa --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/function.d.ts @@ -0,0 +1,7 @@ +/** + * Resolves a function that accepts both the object argument fields of F1 and F2. + * The function returns an intersection of what F1 and F2 return. + * + * @public + */ +export type MergeFunctions = F1 extends (arg: infer A1) => infer R1 ? F2 extends (arg: infer A2) => infer R2 ? R1 extends Promise ? (arg?: A1 & A2) => Promise & Awaited> : (arg?: A1 & A2) => R1 & R2 : never : never; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/http.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/http.d.ts new file mode 100644 index 0000000..e2efd84 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/http.d.ts @@ -0,0 +1,33 @@ +import type { HttpResponse } from "@smithy/types"; +export { Endpoint, HeaderBag, HttpHandlerOptions, HttpMessage, HttpRequest, HttpResponse, QueryParameterBag, } from "@smithy/types"; +/** + * @public + * + * A collection of key/value pairs with case-insensitive keys. + */ +export interface Headers extends Map { + /** + * Returns a new instance of Headers with the specified header set to the + * provided value. Does not modify the original Headers instance. + * + * @param headerName - The name of the header to add or overwrite + * @param headerValue - The value to which the header should be set + */ + withHeader(headerName: string, headerValue: string): Headers; + /** + * Returns a new instance of Headers without the specified header. Does not + * modify the original Headers instance. + * + * @param headerName - The name of the header to remove + */ + withoutHeader(headerName: string): Headers; +} +/** + * @public + * + * Represents HTTP message whose body has been resolved to a string. This is + * used in parsing http message. + */ +export interface ResolvedHttpResponse extends HttpResponse { + body: string; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/identity/AnonymousIdentity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/identity/AnonymousIdentity.d.ts new file mode 100644 index 0000000..88c34cf --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/identity/AnonymousIdentity.d.ts @@ -0,0 +1,6 @@ +import type { Identity } from "./Identity"; +/** + * @public + */ +export interface AnonymousIdentity extends Identity { +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts new file mode 100644 index 0000000..ef6df77 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts @@ -0,0 +1,61 @@ +import type { AwsCredentialIdentity, AwsCredentialIdentityProvider, Logger, RequestHandler } from "@smithy/types"; +import type { AwsSdkCredentialsFeatures } from "../feature-ids"; +export { AwsCredentialIdentity, AwsCredentialIdentityProvider, IdentityProvider } from "@smithy/types"; +/** + * @public + */ +export interface AwsIdentityProperties { + /** + * These are resolved client config values, and may be async providers. + */ + callerClientConfig?: { + /** + * It is likely a programming error if you use + * the caller client config credentials in a credential provider, since + * it will recurse. + * + * @deprecated do not use. + */ + credentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + /** + * @internal + * @deprecated minimize use. + */ + credentialDefaultProvider?: (input?: any) => AwsCredentialIdentityProvider; + logger?: Logger; + profile?: string; + region(): Promise; + requestHandler?: RequestHandler; + userAgentAppId?(): Promise; + }; +} +/** + * @public + * + * Variation of {@link IdentityProvider} which accepts a contextual + * client configuration that includes an AWS region and potentially other + * configurable fields. + * + * Used to link a credential provider to a client if it is being called + * in the context of a client. + */ +export type RuntimeConfigIdentityProvider = (awsIdentityProperties?: AwsIdentityProperties) => Promise; +/** + * @public + * + * Variation of {@link AwsCredentialIdentityProvider} which accepts a contextual + * client configuration that includes an AWS region and potentially other + * configurable fields. + * + * Used to link a credential provider to a client if it is being called + * in the context of a client. + */ +export type RuntimeConfigAwsCredentialIdentityProvider = RuntimeConfigIdentityProvider; +/** + * @public + * + * AwsCredentialIdentity with source attribution metadata. + */ +export type AttributedAwsCredentialIdentity = AwsCredentialIdentity & { + $source?: AwsSdkCredentialsFeatures; +}; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/identity/Identity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/identity/Identity.d.ts new file mode 100644 index 0000000..4175fd3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/identity/Identity.d.ts @@ -0,0 +1 @@ +export { Identity, IdentityProvider } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/identity/LoginIdentity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/identity/LoginIdentity.d.ts new file mode 100644 index 0000000..697ab41 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/identity/LoginIdentity.d.ts @@ -0,0 +1,18 @@ +import type { Identity, IdentityProvider } from "./Identity"; +/** + * @public + */ +export interface LoginIdentity extends Identity { + /** + * Identity username + */ + readonly username: string; + /** + * Identity password + */ + readonly password: string; +} +/** + * @public + */ +export type LoginIdentityProvider = IdentityProvider; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/identity/TokenIdentity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/identity/TokenIdentity.d.ts new file mode 100644 index 0000000..063a3ab --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/identity/TokenIdentity.d.ts @@ -0,0 +1,11 @@ +import type { TokenIdentity } from "@smithy/types"; +import type { AwsSdkTokenFeatures } from "../feature-ids"; +export { TokenIdentity, TokenIdentityProvider } from "@smithy/types"; +/** + * @public + * + * TokenIdentity with source attribution metadata. + */ +export type AttributedTokenIdentity = TokenIdentity & { + $source?: AwsSdkTokenFeatures; +}; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/identity/index.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/identity/index.d.ts new file mode 100644 index 0000000..863e78e --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/identity/index.d.ts @@ -0,0 +1,5 @@ +export * from "./AnonymousIdentity"; +export * from "./AwsCredentialIdentity"; +export * from "./Identity"; +export * from "./LoginIdentity"; +export * from "./TokenIdentity"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/index.d.ts new file mode 100644 index 0000000..a7f99d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/index.d.ts @@ -0,0 +1,34 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./credentials"; +export * from "./crypto"; +export * from "./dns"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./function"; +export * from "./http"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./request"; +export * from "./response"; +export * from "./retry"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./token"; +export * from "./transfer"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/logger.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/logger.d.ts new file mode 100644 index 0000000..11a33c6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/logger.d.ts @@ -0,0 +1,22 @@ +import type { Logger } from "@smithy/types"; +export type { Logger } from "@smithy/types"; +/** + * @public + * + * A list of logger's log level. These levels are sorted in + * order of increasing severity. Each log level includes itself and all + * the levels behind itself. + * + * @example `new Logger({logLevel: 'warn'})` will print all the warn and error + * message. + */ +export type LogLevel = "all" | "trace" | "debug" | "log" | "info" | "warn" | "error" | "off"; +/** + * @public + * + * An object consumed by Logger constructor to initiate a logger object. + */ +export interface LoggerOptions { + logger?: Logger; + logLevel?: LogLevel; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/middleware.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/middleware.d.ts new file mode 100644 index 0000000..3f2451b --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/middleware.d.ts @@ -0,0 +1,13 @@ +import type { HandlerExecutionContext } from "@smithy/types"; +import type { AwsSdkFeatures } from "./feature-ids"; +export { AbsoluteLocation, BuildHandler, BuildHandlerArguments, BuildHandlerOptions, BuildHandlerOutput, BuildMiddleware, DeserializeHandler, DeserializeHandlerArguments, DeserializeHandlerOptions, DeserializeHandlerOutput, DeserializeMiddleware, FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput, FinalizeRequestHandlerOptions, FinalizeRequestMiddleware, Handler, HandlerExecutionContext, HandlerOptions, InitializeHandler, InitializeHandlerArguments, InitializeHandlerOptions, InitializeHandlerOutput, InitializeMiddleware, MiddlewareStack, MiddlewareType, Pluggable, Priority, Relation, RelativeLocation, RelativeMiddlewareOptions, SerializeHandler, SerializeHandlerArguments, SerializeHandlerOptions, SerializeHandlerOutput, SerializeMiddleware, Step, Terminalware, } from "@smithy/types"; +/** + * @internal + * Contains reserved keys for AWS SDK internal usage of the + * handler execution context object. + */ +export interface AwsHandlerExecutionContext extends HandlerExecutionContext { + __aws_sdk_context?: { + features?: AwsSdkFeatures; + }; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/pagination.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/pagination.d.ts new file mode 100644 index 0000000..af791b0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/pagination.d.ts @@ -0,0 +1 @@ +export { PaginationConfiguration, Paginator } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/profile.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/profile.d.ts new file mode 100644 index 0000000..9916f3b --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/profile.d.ts @@ -0,0 +1 @@ +export { IniSection, Profile, ParsedIniData, SharedConfigFiles } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/request.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/request.d.ts new file mode 100644 index 0000000..95405d1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/request.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export interface Request { + destination: URL; + body?: any; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/response.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/response.d.ts new file mode 100644 index 0000000..8d99350 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/response.d.ts @@ -0,0 +1,7 @@ +export { MetadataBearer, ResponseMetadata } from "@smithy/types"; +/** + * @internal + */ +export interface Response { + body: any; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/retry.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/retry.d.ts new file mode 100644 index 0000000..4b7eb98 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/retry.d.ts @@ -0,0 +1 @@ +export { ExponentialBackoffJitterType, ExponentialBackoffStrategyOptions, RetryBackoffStrategy, RetryErrorInfo, RetryErrorType, RetryStrategyOptions, RetryStrategyV2, RetryToken, StandardRetryBackoffStrategy, StandardRetryToken, } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/serde.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/serde.d.ts new file mode 100644 index 0000000..c4cab79 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/serde.d.ts @@ -0,0 +1,24 @@ +export { EndpointBearer, StreamCollector, SerdeContext, ResponseDeserializer, RequestSerializer, SdkStreamMixin, SdkStream, WithSdkStreamMixin, SdkStreamMixinInjector, SdkStreamSerdeContext, } from "@smithy/types"; +/** + * @public + * + * Declare DOM interfaces in case dom.d.ts is not added to the tsconfig lib, causing + * interfaces to not be defined. For developers with dom.d.ts added, the interfaces will + * be merged correctly. + * + * This is also required for any clients with streaming interfaces where the corresponding + * types are also referred. The type is only declared here once since this `@aws-sdk/types` + * is depended by all `@aws-sdk` packages. + */ +declare global { + /** + * @public + */ + export interface ReadableStream { + } + /** + * @public + */ + export interface Blob { + } +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/shapes.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/shapes.d.ts new file mode 100644 index 0000000..bc19cc7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/shapes.d.ts @@ -0,0 +1 @@ +export { DocumentType, RetryableTrait, SmithyException, SdkError } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/signature.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/signature.d.ts new file mode 100644 index 0000000..23cbe97 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/signature.d.ts @@ -0,0 +1 @@ +export { DateInput, EventSigner, EventSigningArguments, FormattedEvent, MessageSigner, RequestSigningArguments, RequestPresigner, RequestPresigningArguments, RequestSigner, SignableMessage, SignedMessage, SigningArguments, StringSigner, } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/stream.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/stream.d.ts new file mode 100644 index 0000000..9092844 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/stream.d.ts @@ -0,0 +1 @@ +export { GetAwsChunkedEncodingStream, GetAwsChunkedEncodingStreamOptions } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/token.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/token.d.ts new file mode 100644 index 0000000..b18d911 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/token.d.ts @@ -0,0 +1,17 @@ +import type { TokenIdentity } from "./identity"; +import type { Provider } from "./util"; +/** + * @public + * + * An object representing temporary or permanent AWS token. + * + * @deprecated Use {@link TokenIdentity} + */ +export interface Token extends TokenIdentity { +} +/** + * @public + * + * @deprecated Use {@link TokenIdentityProvider} + */ +export type TokenProvider = Provider; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/transfer.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/transfer.d.ts new file mode 100644 index 0000000..ba78190 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/transfer.d.ts @@ -0,0 +1 @@ +export { RequestContext, RequestHandler, RequestHandlerMetadata, RequestHandlerOutput, RequestHandlerProtocol, } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/abort.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/abort.d.ts new file mode 100644 index 0000000..dad6079 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/abort.d.ts @@ -0,0 +1 @@ +export { AbortController, AbortHandler, AbortSignal } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/auth.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/auth.d.ts new file mode 100644 index 0000000..8a02dbc --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/auth.d.ts @@ -0,0 +1,5 @@ +export { + AuthScheme, + HttpAuthDefinition, + HttpAuthLocation, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/blob/blob-types.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/blob/blob-types.d.ts new file mode 100644 index 0000000..df39efe --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/blob/blob-types.d.ts @@ -0,0 +1,2 @@ +import { BlobTypes } from "@smithy/types"; +export { BlobTypes }; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/checksum.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/checksum.d.ts new file mode 100644 index 0000000..f805d72 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/checksum.d.ts @@ -0,0 +1 @@ +export { Checksum, ChecksumConstructor } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/client.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/client.d.ts new file mode 100644 index 0000000..d6b3dcf --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/client.d.ts @@ -0,0 +1 @@ +export { Client } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/command.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/command.d.ts new file mode 100644 index 0000000..3887267 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/command.d.ts @@ -0,0 +1 @@ +export { Command } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/connection.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/connection.d.ts new file mode 100644 index 0000000..36ebd00 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/connection.d.ts @@ -0,0 +1,6 @@ +export { + ConnectConfiguration, + ConnectionManager, + ConnectionManagerConfiguration, + ConnectionPool, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/credentials.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/credentials.d.ts new file mode 100644 index 0000000..eb9cfad --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/credentials.d.ts @@ -0,0 +1,15 @@ +import { Logger } from "@smithy/types"; +import { AwsCredentialIdentity } from "./identity"; +import { Provider } from "./util"; +export interface Credentials extends AwsCredentialIdentity {} +export type CredentialProvider = Provider; +export type CredentialProviderOptions = { + logger?: Logger; + parentClientConfig?: { + region?: string | Provider; + profile?: string; + logger?: Logger; + userAgentAppId?(): Promise; + [key: string]: unknown; + }; +}; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/crypto.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/crypto.d.ts new file mode 100644 index 0000000..dfe61bf --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/crypto.d.ts @@ -0,0 +1,7 @@ +export { + Hash, + HashConstructor, + StreamHasher, + randomValues, + SourceData, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/dns.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/dns.d.ts new file mode 100644 index 0000000..d899949 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/dns.d.ts @@ -0,0 +1,19 @@ +export declare enum HostAddressType { + AAAA = "AAAA", + A = "A", +} +export interface HostAddress { + addressType: HostAddressType; + address: string; + hostName: string; + service?: string; +} +export interface HostResolverArguments { + hostName: string; + service?: string; +} +export interface HostResolver { + resolveAddress(args: HostResolverArguments): Promise; + reportFailureOnAddress(addr: HostAddress): void; + purgeCache(args?: HostResolverArguments): void; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/encode.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/encode.d.ts new file mode 100644 index 0000000..76966f9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/encode.d.ts @@ -0,0 +1,6 @@ +export { + MessageDecoder, + MessageEncoder, + AvailableMessage, + AvailableMessages, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/endpoint.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/endpoint.d.ts new file mode 100644 index 0000000..ff3c7de --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/endpoint.d.ts @@ -0,0 +1,9 @@ +export { + EndpointARN, + EndpointPartition, + EndpointURLScheme, + EndpointURL, + EndpointObjectProperty, + EndpointV2, + EndpointParameters, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/eventStream.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/eventStream.d.ts new file mode 100644 index 0000000..e4c04a9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/eventStream.d.ts @@ -0,0 +1,24 @@ +export { + Message, + MessageHeaders, + BooleanHeaderValue, + ByteHeaderValue, + ShortHeaderValue, + IntegerHeaderValue, + LongHeaderValue, + BinaryHeaderValue, + StringHeaderValue, + TimestampHeaderValue, + UuidHeaderValue, + MessageHeaderValue, + Int64, + EventStreamSerdeContext, + EventStreamMarshaller, + EventStreamMarshallerDeserFn, + EventStreamMarshallerSerFn, + EventStreamPayloadHandler, + EventStreamPayloadHandlerProvider, + EventStreamRequestSigner, + EventStreamSerdeProvider, + EventStreamSignerProvider, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/extensions/index.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 0000000..accf5ec --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1,5 @@ +import { Provider } from "@smithy/types"; +export interface AwsRegionExtensionConfiguration { + setRegion(region: Provider): void; + region(): Provider; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts new file mode 100644 index 0000000..d942789 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts @@ -0,0 +1,60 @@ +export type AwsSdkFeatures = Partial<{ + RESOURCE_MODEL: "A"; + WAITER: "B"; + PAGINATOR: "C"; + RETRY_MODE_LEGACY: "D"; + RETRY_MODE_STANDARD: "E"; + RETRY_MODE_ADAPTIVE: "F"; + S3_EXPRESS_BUCKET: "J"; + S3_ACCESS_GRANTS: "K"; + GZIP_REQUEST_COMPRESSION: "L"; + PROTOCOL_RPC_V2_CBOR: "M"; + ENDPOINT_OVERRIDE: "N"; + ACCOUNT_ID_ENDPOINT: "O"; + ACCOUNT_ID_MODE_PREFERRED: "P"; + ACCOUNT_ID_MODE_DISABLED: "Q"; + ACCOUNT_ID_MODE_REQUIRED: "R"; + SIGV4A_SIGNING: "S"; + FLEXIBLE_CHECKSUMS_REQ_CRC32: "U"; + FLEXIBLE_CHECKSUMS_REQ_CRC32C: "V"; + FLEXIBLE_CHECKSUMS_REQ_CRC64: "W"; + FLEXIBLE_CHECKSUMS_REQ_SHA1: "X"; + FLEXIBLE_CHECKSUMS_REQ_SHA256: "Y"; + FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED: "Z"; + FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED: "a"; + FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED: "b"; + FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED: "c"; + DDB_MAPPER: "d"; +}> & + AwsSdkCredentialsFeatures & + AwsSdkTokenFeatures; +export type AwsSdkCredentialsFeatures = Partial<{ + RESOLVED_ACCOUNT_ID: "T"; + CREDENTIALS_CODE: "e"; + CREDENTIALS_ENV_VARS: "g"; + CREDENTIALS_ENV_VARS_STS_WEB_ID_TOKEN: "h"; + CREDENTIALS_STS_ASSUME_ROLE: "i"; + CREDENTIALS_STS_ASSUME_ROLE_SAML: "j"; + CREDENTIALS_STS_ASSUME_ROLE_WEB_ID: "k"; + CREDENTIALS_STS_FEDERATION_TOKEN: "l"; + CREDENTIALS_STS_SESSION_TOKEN: "m"; + CREDENTIALS_PROFILE: "n"; + CREDENTIALS_PROFILE_SOURCE_PROFILE: "o"; + CREDENTIALS_PROFILE_NAMED_PROVIDER: "p"; + CREDENTIALS_PROFILE_STS_WEB_ID_TOKEN: "q"; + CREDENTIALS_PROFILE_SSO: "r"; + CREDENTIALS_SSO: "s"; + CREDENTIALS_PROFILE_SSO_LEGACY: "t"; + CREDENTIALS_SSO_LEGACY: "u"; + CREDENTIALS_PROFILE_PROCESS: "v"; + CREDENTIALS_PROCESS: "w"; + CREDENTIALS_BOTO2_CONFIG_FILE: "x"; + CREDENTIALS_AWS_SDK_STORE: "y"; + CREDENTIALS_HTTP: "z"; + CREDENTIALS_IMDS: "0"; + CREDENTIALS_PROFILE_LOGIN: "AC"; + CREDENTIALS_LOGIN: "AD"; +}>; +export type AwsSdkTokenFeatures = Partial<{ + BEARER_SERVICE_ENV_VARS: "3"; +}>; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/function.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/function.d.ts new file mode 100644 index 0000000..d6efac5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/function.d.ts @@ -0,0 +1,7 @@ +export type MergeFunctions = F1 extends (arg: infer A1) => infer R1 + ? F2 extends (arg: infer A2) => infer R2 + ? R1 extends Promise + ? (arg?: A1 & A2) => Promise & Awaited> + : (arg?: A1 & A2) => R1 & R2 + : never + : never; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/http.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/http.d.ts new file mode 100644 index 0000000..d8e0eab --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/http.d.ts @@ -0,0 +1,17 @@ +import { HttpResponse } from "@smithy/types"; +export { + Endpoint, + HeaderBag, + HttpHandlerOptions, + HttpMessage, + HttpRequest, + HttpResponse, + QueryParameterBag, +} from "@smithy/types"; +export interface Headers extends Map { + withHeader(headerName: string, headerValue: string): Headers; + withoutHeader(headerName: string): Headers; +} +export interface ResolvedHttpResponse extends HttpResponse { + body: string; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AnonymousIdentity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AnonymousIdentity.d.ts new file mode 100644 index 0000000..5b175f6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AnonymousIdentity.d.ts @@ -0,0 +1,2 @@ +import { Identity } from "./Identity"; +export interface AnonymousIdentity extends Identity {} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts new file mode 100644 index 0000000..a57423c --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts @@ -0,0 +1,31 @@ +import { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + Logger, + RequestHandler, +} from "@smithy/types"; +import { AwsSdkCredentialsFeatures } from "../feature-ids"; +export { + AwsCredentialIdentity, + AwsCredentialIdentityProvider, + IdentityProvider, +} from "@smithy/types"; +export interface AwsIdentityProperties { + callerClientConfig?: { + credentials?: AwsCredentialIdentity | AwsCredentialIdentityProvider; + credentialDefaultProvider?: (input?: any) => AwsCredentialIdentityProvider; + logger?: Logger; + profile?: string; + region(): Promise; + requestHandler?: RequestHandler; + userAgentAppId?(): Promise; + }; +} +export type RuntimeConfigIdentityProvider = ( + awsIdentityProperties?: AwsIdentityProperties +) => Promise; +export type RuntimeConfigAwsCredentialIdentityProvider = + RuntimeConfigIdentityProvider; +export type AttributedAwsCredentialIdentity = AwsCredentialIdentity & { + $source?: AwsSdkCredentialsFeatures; +}; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/Identity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/Identity.d.ts new file mode 100644 index 0000000..4175fd3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/Identity.d.ts @@ -0,0 +1 @@ +export { Identity, IdentityProvider } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/LoginIdentity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/LoginIdentity.d.ts new file mode 100644 index 0000000..3258bbb --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/LoginIdentity.d.ts @@ -0,0 +1,6 @@ +import { Identity, IdentityProvider } from "./Identity"; +export interface LoginIdentity extends Identity { + readonly username: string; + readonly password: string; +} +export type LoginIdentityProvider = IdentityProvider; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/TokenIdentity.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/TokenIdentity.d.ts new file mode 100644 index 0000000..dc2ccf9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/TokenIdentity.d.ts @@ -0,0 +1,6 @@ +import { TokenIdentity } from "@smithy/types"; +import { AwsSdkTokenFeatures } from "../feature-ids"; +export { TokenIdentity, TokenIdentityProvider } from "@smithy/types"; +export type AttributedTokenIdentity = TokenIdentity & { + $source?: AwsSdkTokenFeatures; +}; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/index.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/index.d.ts new file mode 100644 index 0000000..863e78e --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/index.d.ts @@ -0,0 +1,5 @@ +export * from "./AnonymousIdentity"; +export * from "./AwsCredentialIdentity"; +export * from "./Identity"; +export * from "./LoginIdentity"; +export * from "./TokenIdentity"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..a7f99d9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts @@ -0,0 +1,34 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./credentials"; +export * from "./crypto"; +export * from "./dns"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./function"; +export * from "./http"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./request"; +export * from "./response"; +export * from "./retry"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./token"; +export * from "./transfer"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/logger.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/logger.d.ts new file mode 100644 index 0000000..c714915 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/logger.d.ts @@ -0,0 +1,15 @@ +import { Logger } from "@smithy/types"; +export { Logger } from "@smithy/types"; +export type LogLevel = + | "all" + | "trace" + | "debug" + | "log" + | "info" + | "warn" + | "error" + | "off"; +export interface LoggerOptions { + logger?: Logger; + logLevel?: LogLevel; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts new file mode 100644 index 0000000..e101e9b --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts @@ -0,0 +1,47 @@ +import { HandlerExecutionContext } from "@smithy/types"; +import { AwsSdkFeatures } from "./feature-ids"; +export { + AbsoluteLocation, + BuildHandler, + BuildHandlerArguments, + BuildHandlerOptions, + BuildHandlerOutput, + BuildMiddleware, + DeserializeHandler, + DeserializeHandlerArguments, + DeserializeHandlerOptions, + DeserializeHandlerOutput, + DeserializeMiddleware, + FinalizeHandler, + FinalizeHandlerArguments, + FinalizeHandlerOutput, + FinalizeRequestHandlerOptions, + FinalizeRequestMiddleware, + Handler, + HandlerExecutionContext, + HandlerOptions, + InitializeHandler, + InitializeHandlerArguments, + InitializeHandlerOptions, + InitializeHandlerOutput, + InitializeMiddleware, + MiddlewareStack, + MiddlewareType, + Pluggable, + Priority, + Relation, + RelativeLocation, + RelativeMiddlewareOptions, + SerializeHandler, + SerializeHandlerArguments, + SerializeHandlerOptions, + SerializeHandlerOutput, + SerializeMiddleware, + Step, + Terminalware, +} from "@smithy/types"; +export interface AwsHandlerExecutionContext extends HandlerExecutionContext { + __aws_sdk_context?: { + features?: AwsSdkFeatures; + }; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/pagination.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/pagination.d.ts new file mode 100644 index 0000000..af791b0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/pagination.d.ts @@ -0,0 +1 @@ +export { PaginationConfiguration, Paginator } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/profile.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/profile.d.ts new file mode 100644 index 0000000..b3813d8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/profile.d.ts @@ -0,0 +1,6 @@ +export { + IniSection, + Profile, + ParsedIniData, + SharedConfigFiles, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/request.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/request.d.ts new file mode 100644 index 0000000..5c6e793 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/request.d.ts @@ -0,0 +1,4 @@ +export interface Request { + destination: URL; + body?: any; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/response.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/response.d.ts new file mode 100644 index 0000000..4e5fcd0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/response.d.ts @@ -0,0 +1,4 @@ +export { MetadataBearer, ResponseMetadata } from "@smithy/types"; +export interface Response { + body: any; +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/retry.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/retry.d.ts new file mode 100644 index 0000000..8fc946a --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/retry.d.ts @@ -0,0 +1,12 @@ +export { + ExponentialBackoffJitterType, + ExponentialBackoffStrategyOptions, + RetryBackoffStrategy, + RetryErrorInfo, + RetryErrorType, + RetryStrategyOptions, + RetryStrategyV2, + RetryToken, + StandardRetryBackoffStrategy, + StandardRetryToken, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/serde.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/serde.d.ts new file mode 100644 index 0000000..a7ed76f --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/serde.d.ts @@ -0,0 +1,16 @@ +export { + EndpointBearer, + StreamCollector, + SerdeContext, + ResponseDeserializer, + RequestSerializer, + SdkStreamMixin, + SdkStream, + WithSdkStreamMixin, + SdkStreamMixinInjector, + SdkStreamSerdeContext, +} from "@smithy/types"; +declare global { + export interface ReadableStream {} + export interface Blob {} +} diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/shapes.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/shapes.d.ts new file mode 100644 index 0000000..d1efa9a --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/shapes.d.ts @@ -0,0 +1,6 @@ +export { + DocumentType, + RetryableTrait, + SmithyException, + SdkError, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/signature.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/signature.d.ts new file mode 100644 index 0000000..cbabd75 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/signature.d.ts @@ -0,0 +1,15 @@ +export { + DateInput, + EventSigner, + EventSigningArguments, + FormattedEvent, + MessageSigner, + RequestSigningArguments, + RequestPresigner, + RequestPresigningArguments, + RequestSigner, + SignableMessage, + SignedMessage, + SigningArguments, + StringSigner, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/stream.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/stream.d.ts new file mode 100644 index 0000000..1b79413 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/stream.d.ts @@ -0,0 +1,4 @@ +export { + GetAwsChunkedEncodingStream, + GetAwsChunkedEncodingStreamOptions, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/token.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/token.d.ts new file mode 100644 index 0000000..c33e506 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/token.d.ts @@ -0,0 +1,4 @@ +import { TokenIdentity } from "./identity"; +import { Provider } from "./util"; +export interface Token extends TokenIdentity {} +export type TokenProvider = Provider; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/transfer.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/transfer.d.ts new file mode 100644 index 0000000..04a7f87 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/transfer.d.ts @@ -0,0 +1,7 @@ +export { + RequestContext, + RequestHandler, + RequestHandlerMetadata, + RequestHandlerOutput, + RequestHandlerProtocol, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/uri.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/uri.d.ts new file mode 100644 index 0000000..297dfe4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/uri.d.ts @@ -0,0 +1 @@ +export { URI } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/util.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/util.d.ts new file mode 100644 index 0000000..e7e43e6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/util.d.ts @@ -0,0 +1,14 @@ +export { + Encoder, + Decoder, + Provider, + UserAgentPair, + UserAgent, + UrlParser, + MemoizedProvider, + BodyLengthCalculator, + RegionInfo, + RegionInfoProviderOptions, + RegionInfoProvider, + RetryStrategy, +} from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/waiter.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/waiter.d.ts new file mode 100644 index 0000000..bb98020 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/ts3.4/waiter.d.ts @@ -0,0 +1 @@ +export { WaiterConfiguration } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/uri.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/uri.d.ts new file mode 100644 index 0000000..297dfe4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/uri.d.ts @@ -0,0 +1 @@ +export { URI } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/util.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/util.d.ts new file mode 100644 index 0000000..fd059b6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/util.d.ts @@ -0,0 +1 @@ +export { Encoder, Decoder, Provider, UserAgentPair, UserAgent, UrlParser, MemoizedProvider, BodyLengthCalculator, RegionInfo, RegionInfoProviderOptions, RegionInfoProvider, RetryStrategy, } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/dist-types/waiter.d.ts b/bff/node_modules/@aws-sdk/types/dist-types/waiter.d.ts new file mode 100644 index 0000000..bb98020 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/dist-types/waiter.d.ts @@ -0,0 +1 @@ +export { WaiterConfiguration } from "@smithy/types"; diff --git a/bff/node_modules/@aws-sdk/types/package.json b/bff/node_modules/@aws-sdk/types/package.json new file mode 100755 index 0000000..a2f60d8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/types/package.json @@ -0,0 +1,57 @@ +{ + "name": "@aws-sdk/types", + "version": "3.973.6", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "description": "Types for the AWS SDK", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline types", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "extract:docs": "api-extractor run --local", + "test": "tsc -p tsconfig.test.json" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/types", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/types" + }, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "browser": {}, + "react-native": {} +} diff --git a/bff/node_modules/@aws-sdk/util-arn-parser/LICENSE b/bff/node_modules/@aws-sdk/util-arn-parser/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-arn-parser/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/util-arn-parser/README.md b/bff/node_modules/@aws-sdk/util-arn-parser/README.md new file mode 100644 index 0000000..450cd86 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-arn-parser/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/util-arn-parser + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-arn-parser/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-arn-parser) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-arn-parser.svg)](https://www.npmjs.com/package/@aws-sdk/util-arn-parser) diff --git a/bff/node_modules/@aws-sdk/util-arn-parser/dist-cjs/index.js b/bff/node_modules/@aws-sdk/util-arn-parser/dist-cjs/index.js new file mode 100644 index 0000000..0138bc8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-arn-parser/dist-cjs/index.js @@ -0,0 +1,27 @@ +'use strict'; + +const validate = (str) => typeof str === "string" && str.indexOf("arn:") === 0 && str.split(":").length >= 6; +const parse = (arn) => { + const segments = arn.split(":"); + if (segments.length < 6 || segments[0] !== "arn") + throw new Error("Malformed ARN"); + const [, partition, service, region, accountId, ...resource] = segments; + return { + partition, + service, + region, + accountId, + resource: resource.join(":"), + }; +}; +const build = (arnObject) => { + const { partition = "aws", service, region, accountId, resource } = arnObject; + if ([service, region, accountId, resource].some((segment) => typeof segment !== "string")) { + throw new Error("Input ARN object is invalid"); + } + return `arn:${partition}:${service}:${region}:${accountId}:${resource}`; +}; + +exports.build = build; +exports.parse = parse; +exports.validate = validate; diff --git a/bff/node_modules/@aws-sdk/util-arn-parser/dist-es/index.js b/bff/node_modules/@aws-sdk/util-arn-parser/dist-es/index.js new file mode 100644 index 0000000..1f24b91 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-arn-parser/dist-es/index.js @@ -0,0 +1,21 @@ +export const validate = (str) => typeof str === "string" && str.indexOf("arn:") === 0 && str.split(":").length >= 6; +export const parse = (arn) => { + const segments = arn.split(":"); + if (segments.length < 6 || segments[0] !== "arn") + throw new Error("Malformed ARN"); + const [, partition, service, region, accountId, ...resource] = segments; + return { + partition, + service, + region, + accountId, + resource: resource.join(":"), + }; +}; +export const build = (arnObject) => { + const { partition = "aws", service, region, accountId, resource } = arnObject; + if ([service, region, accountId, resource].some((segment) => typeof segment !== "string")) { + throw new Error("Input ARN object is invalid"); + } + return `arn:${partition}:${service}:${region}:${accountId}:${resource}`; +}; diff --git a/bff/node_modules/@aws-sdk/util-arn-parser/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/util-arn-parser/dist-types/index.d.ts new file mode 100644 index 0000000..b9d0373 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-arn-parser/dist-types/index.d.ts @@ -0,0 +1,32 @@ +/** + * @internal + */ +export interface ARN { + partition: string; + service: string; + region: string; + accountId: string; + resource: string; +} +/** + * Validate whether a string is an ARN. + * @internal + */ +export declare const validate: (str: any) => boolean; +/** + * Parse an ARN string into structure with partition, service, region, accountId and resource values + * @internal + */ +export declare const parse: (arn: string) => ARN; +/** + * @internal + */ +type buildOptions = Omit & { + partition?: string; +}; +/** + * Build an ARN with service, partition, region, accountId, and resources strings + * @internal + */ +export declare const build: (arnObject: buildOptions) => string; +export {}; diff --git a/bff/node_modules/@aws-sdk/util-arn-parser/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/util-arn-parser/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..56c943c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-arn-parser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,14 @@ +export interface ARN { + partition: string; + service: string; + region: string; + accountId: string; + resource: string; +} +export declare const validate: (str: any) => boolean; +export declare const parse: (arn: string) => ARN; +type buildOptions = Pick> & { + partition?: string; +}; +export declare const build: (arnObject: buildOptions) => string; +export {}; diff --git a/bff/node_modules/@aws-sdk/util-arn-parser/package.json b/bff/node_modules/@aws-sdk/util-arn-parser/package.json new file mode 100644 index 0000000..cf7079c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-arn-parser/package.json @@ -0,0 +1,55 @@ +{ + "name": "@aws-sdk/util-arn-parser", + "version": "3.972.3", + "description": "A parser to Amazon Resource Names", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-arn-parser", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/util-arn-parser", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/util-arn-parser" + } +} diff --git a/bff/node_modules/@aws-sdk/util-endpoints/LICENSE b/bff/node_modules/@aws-sdk/util-endpoints/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/util-endpoints/README.md b/bff/node_modules/@aws-sdk/util-endpoints/README.md new file mode 100644 index 0000000..641f54a --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/README.md @@ -0,0 +1,6 @@ +# @aws-sdk/util-endpoints + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-endpoints/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-endpoints) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-endpoints.svg)](https://www.npmjs.com/package/@aws-sdk/util-endpoints) + +> An internal package diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js new file mode 100644 index 0000000..5f94250 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js @@ -0,0 +1,406 @@ +'use strict'; + +var utilEndpoints = require('@smithy/util-endpoints'); +var urlParser = require('@smithy/url-parser'); + +const isVirtualHostableS3Bucket = (value, allowSubDomains = false) => { + if (allowSubDomains) { + for (const label of value.split(".")) { + if (!isVirtualHostableS3Bucket(label)) { + return false; + } + } + return true; + } + if (!utilEndpoints.isValidHostLabel(value)) { + return false; + } + if (value.length < 3 || value.length > 63) { + return false; + } + if (value !== value.toLowerCase()) { + return false; + } + if (utilEndpoints.isIpAddress(value)) { + return false; + } + return true; +}; + +const ARN_DELIMITER = ":"; +const RESOURCE_DELIMITER = "/"; +const parseArn = (value) => { + const segments = value.split(ARN_DELIMITER); + if (segments.length < 6) + return null; + const [arn, partition, service, region, accountId, ...resourcePath] = segments; + if (arn !== "arn" || partition === "" || service === "" || resourcePath.join(ARN_DELIMITER) === "") + return null; + const resourceId = resourcePath.map((resource) => resource.split(RESOURCE_DELIMITER)).flat(); + return { + partition, + service, + region, + accountId, + resourceId, + }; +}; + +var partitions = [ + { + id: "aws", + outputs: { + dnsSuffix: "amazonaws.com", + dualStackDnsSuffix: "api.aws", + implicitGlobalRegion: "us-east-1", + name: "aws", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + regions: { + "af-south-1": { + description: "Africa (Cape Town)" + }, + "ap-east-1": { + description: "Asia Pacific (Hong Kong)" + }, + "ap-east-2": { + description: "Asia Pacific (Taipei)" + }, + "ap-northeast-1": { + description: "Asia Pacific (Tokyo)" + }, + "ap-northeast-2": { + description: "Asia Pacific (Seoul)" + }, + "ap-northeast-3": { + description: "Asia Pacific (Osaka)" + }, + "ap-south-1": { + description: "Asia Pacific (Mumbai)" + }, + "ap-south-2": { + description: "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1": { + description: "Asia Pacific (Singapore)" + }, + "ap-southeast-2": { + description: "Asia Pacific (Sydney)" + }, + "ap-southeast-3": { + description: "Asia Pacific (Jakarta)" + }, + "ap-southeast-4": { + description: "Asia Pacific (Melbourne)" + }, + "ap-southeast-5": { + description: "Asia Pacific (Malaysia)" + }, + "ap-southeast-6": { + description: "Asia Pacific (New Zealand)" + }, + "ap-southeast-7": { + description: "Asia Pacific (Thailand)" + }, + "aws-global": { + description: "aws global region" + }, + "ca-central-1": { + description: "Canada (Central)" + }, + "ca-west-1": { + description: "Canada West (Calgary)" + }, + "eu-central-1": { + description: "Europe (Frankfurt)" + }, + "eu-central-2": { + description: "Europe (Zurich)" + }, + "eu-north-1": { + description: "Europe (Stockholm)" + }, + "eu-south-1": { + description: "Europe (Milan)" + }, + "eu-south-2": { + description: "Europe (Spain)" + }, + "eu-west-1": { + description: "Europe (Ireland)" + }, + "eu-west-2": { + description: "Europe (London)" + }, + "eu-west-3": { + description: "Europe (Paris)" + }, + "il-central-1": { + description: "Israel (Tel Aviv)" + }, + "me-central-1": { + description: "Middle East (UAE)" + }, + "me-south-1": { + description: "Middle East (Bahrain)" + }, + "mx-central-1": { + description: "Mexico (Central)" + }, + "sa-east-1": { + description: "South America (Sao Paulo)" + }, + "us-east-1": { + description: "US East (N. Virginia)" + }, + "us-east-2": { + description: "US East (Ohio)" + }, + "us-west-1": { + description: "US West (N. California)" + }, + "us-west-2": { + description: "US West (Oregon)" + } + } + }, + { + id: "aws-cn", + outputs: { + dnsSuffix: "amazonaws.com.cn", + dualStackDnsSuffix: "api.amazonwebservices.com.cn", + implicitGlobalRegion: "cn-northwest-1", + name: "aws-cn", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^cn\\-\\w+\\-\\d+$", + regions: { + "aws-cn-global": { + description: "aws-cn global region" + }, + "cn-north-1": { + description: "China (Beijing)" + }, + "cn-northwest-1": { + description: "China (Ningxia)" + } + } + }, + { + id: "aws-eusc", + outputs: { + dnsSuffix: "amazonaws.eu", + dualStackDnsSuffix: "api.amazonwebservices.eu", + implicitGlobalRegion: "eusc-de-east-1", + name: "aws-eusc", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^eusc\\-(de)\\-\\w+\\-\\d+$", + regions: { + "eusc-de-east-1": { + description: "AWS European Sovereign Cloud (Germany)" + } + } + }, + { + id: "aws-iso", + outputs: { + dnsSuffix: "c2s.ic.gov", + dualStackDnsSuffix: "api.aws.ic.gov", + implicitGlobalRegion: "us-iso-east-1", + name: "aws-iso", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^us\\-iso\\-\\w+\\-\\d+$", + regions: { + "aws-iso-global": { + description: "aws-iso global region" + }, + "us-iso-east-1": { + description: "US ISO East" + }, + "us-iso-west-1": { + description: "US ISO WEST" + } + } + }, + { + id: "aws-iso-b", + outputs: { + dnsSuffix: "sc2s.sgov.gov", + dualStackDnsSuffix: "api.aws.scloud", + implicitGlobalRegion: "us-isob-east-1", + name: "aws-iso-b", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^us\\-isob\\-\\w+\\-\\d+$", + regions: { + "aws-iso-b-global": { + description: "aws-iso-b global region" + }, + "us-isob-east-1": { + description: "US ISOB East (Ohio)" + }, + "us-isob-west-1": { + description: "US ISOB West" + } + } + }, + { + id: "aws-iso-e", + outputs: { + dnsSuffix: "cloud.adc-e.uk", + dualStackDnsSuffix: "api.cloud-aws.adc-e.uk", + implicitGlobalRegion: "eu-isoe-west-1", + name: "aws-iso-e", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^eu\\-isoe\\-\\w+\\-\\d+$", + regions: { + "aws-iso-e-global": { + description: "aws-iso-e global region" + }, + "eu-isoe-west-1": { + description: "EU ISOE West" + } + } + }, + { + id: "aws-iso-f", + outputs: { + dnsSuffix: "csp.hci.ic.gov", + dualStackDnsSuffix: "api.aws.hci.ic.gov", + implicitGlobalRegion: "us-isof-south-1", + name: "aws-iso-f", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^us\\-isof\\-\\w+\\-\\d+$", + regions: { + "aws-iso-f-global": { + description: "aws-iso-f global region" + }, + "us-isof-east-1": { + description: "US ISOF EAST" + }, + "us-isof-south-1": { + description: "US ISOF SOUTH" + } + } + }, + { + id: "aws-us-gov", + outputs: { + dnsSuffix: "amazonaws.com", + dualStackDnsSuffix: "api.aws", + implicitGlobalRegion: "us-gov-west-1", + name: "aws-us-gov", + supportsDualStack: true, + supportsFIPS: true + }, + regionRegex: "^us\\-gov\\-\\w+\\-\\d+$", + regions: { + "aws-us-gov-global": { + description: "aws-us-gov global region" + }, + "us-gov-east-1": { + description: "AWS GovCloud (US-East)" + }, + "us-gov-west-1": { + description: "AWS GovCloud (US-West)" + } + } + } +]; +var version = "1.1"; +var partitionsInfo = { + partitions: partitions, + version: version +}; + +let selectedPartitionsInfo = partitionsInfo; +let selectedUserAgentPrefix = ""; +const partition = (value) => { + const { partitions } = selectedPartitionsInfo; + for (const partition of partitions) { + const { regions, outputs } = partition; + for (const [region, regionData] of Object.entries(regions)) { + if (region === value) { + return { + ...outputs, + ...regionData, + }; + } + } + } + for (const partition of partitions) { + const { regionRegex, outputs } = partition; + if (new RegExp(regionRegex).test(value)) { + return { + ...outputs, + }; + } + } + const DEFAULT_PARTITION = partitions.find((partition) => partition.id === "aws"); + if (!DEFAULT_PARTITION) { + throw new Error("Provided region was not found in the partition array or regex," + + " and default partition with id 'aws' doesn't exist."); + } + return { + ...DEFAULT_PARTITION.outputs, + }; +}; +const setPartitionInfo = (partitionsInfo, userAgentPrefix = "") => { + selectedPartitionsInfo = partitionsInfo; + selectedUserAgentPrefix = userAgentPrefix; +}; +const useDefaultPartitionInfo = () => { + setPartitionInfo(partitionsInfo, ""); +}; +const getUserAgentPrefix = () => selectedUserAgentPrefix; + +const awsEndpointFunctions = { + isVirtualHostableS3Bucket: isVirtualHostableS3Bucket, + parseArn: parseArn, + partition: partition, +}; +utilEndpoints.customEndpointFunctions.aws = awsEndpointFunctions; + +const resolveDefaultAwsRegionalEndpointsConfig = (input) => { + if (typeof input.endpointProvider !== "function") { + throw new Error("@aws-sdk/util-endpoint - endpointProvider and endpoint missing in config for this client."); + } + const { endpoint } = input; + if (endpoint === undefined) { + input.endpoint = async () => { + return toEndpointV1(input.endpointProvider({ + Region: typeof input.region === "function" ? await input.region() : input.region, + UseDualStack: typeof input.useDualstackEndpoint === "function" + ? await input.useDualstackEndpoint() + : input.useDualstackEndpoint, + UseFIPS: typeof input.useFipsEndpoint === "function" ? await input.useFipsEndpoint() : input.useFipsEndpoint, + Endpoint: undefined, + }, { logger: input.logger })); + }; + } + return input; +}; +const toEndpointV1 = (endpoint) => urlParser.parseUrl(endpoint.url); + +exports.EndpointError = utilEndpoints.EndpointError; +exports.isIpAddress = utilEndpoints.isIpAddress; +exports.resolveEndpoint = utilEndpoints.resolveEndpoint; +exports.awsEndpointFunctions = awsEndpointFunctions; +exports.getUserAgentPrefix = getUserAgentPrefix; +exports.partition = partition; +exports.resolveDefaultAwsRegionalEndpointsConfig = resolveDefaultAwsRegionalEndpointsConfig; +exports.setPartitionInfo = setPartitionInfo; +exports.toEndpointV1 = toEndpointV1; +exports.useDefaultPartitionInfo = useDefaultPartitionInfo; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json b/bff/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json new file mode 100644 index 0000000..d7d22d8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partitions.json @@ -0,0 +1,267 @@ +{ + "partitions": [{ + "id": "aws", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-east-1", + "name": "aws", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + "regions": { + "af-south-1": { + "description": "Africa (Cape Town)" + }, + "ap-east-1": { + "description": "Asia Pacific (Hong Kong)" + }, + "ap-east-2": { + "description": "Asia Pacific (Taipei)" + }, + "ap-northeast-1": { + "description": "Asia Pacific (Tokyo)" + }, + "ap-northeast-2": { + "description": "Asia Pacific (Seoul)" + }, + "ap-northeast-3": { + "description": "Asia Pacific (Osaka)" + }, + "ap-south-1": { + "description": "Asia Pacific (Mumbai)" + }, + "ap-south-2": { + "description": "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1": { + "description": "Asia Pacific (Singapore)" + }, + "ap-southeast-2": { + "description": "Asia Pacific (Sydney)" + }, + "ap-southeast-3": { + "description": "Asia Pacific (Jakarta)" + }, + "ap-southeast-4": { + "description": "Asia Pacific (Melbourne)" + }, + "ap-southeast-5": { + "description": "Asia Pacific (Malaysia)" + }, + "ap-southeast-6": { + "description": "Asia Pacific (New Zealand)" + }, + "ap-southeast-7": { + "description": "Asia Pacific (Thailand)" + }, + "aws-global": { + "description": "aws global region" + }, + "ca-central-1": { + "description": "Canada (Central)" + }, + "ca-west-1": { + "description": "Canada West (Calgary)" + }, + "eu-central-1": { + "description": "Europe (Frankfurt)" + }, + "eu-central-2": { + "description": "Europe (Zurich)" + }, + "eu-north-1": { + "description": "Europe (Stockholm)" + }, + "eu-south-1": { + "description": "Europe (Milan)" + }, + "eu-south-2": { + "description": "Europe (Spain)" + }, + "eu-west-1": { + "description": "Europe (Ireland)" + }, + "eu-west-2": { + "description": "Europe (London)" + }, + "eu-west-3": { + "description": "Europe (Paris)" + }, + "il-central-1": { + "description": "Israel (Tel Aviv)" + }, + "me-central-1": { + "description": "Middle East (UAE)" + }, + "me-south-1": { + "description": "Middle East (Bahrain)" + }, + "mx-central-1": { + "description": "Mexico (Central)" + }, + "sa-east-1": { + "description": "South America (Sao Paulo)" + }, + "us-east-1": { + "description": "US East (N. Virginia)" + }, + "us-east-2": { + "description": "US East (Ohio)" + }, + "us-west-1": { + "description": "US West (N. California)" + }, + "us-west-2": { + "description": "US West (Oregon)" + } + } + }, { + "id": "aws-cn", + "outputs": { + "dnsSuffix": "amazonaws.com.cn", + "dualStackDnsSuffix": "api.amazonwebservices.com.cn", + "implicitGlobalRegion": "cn-northwest-1", + "name": "aws-cn", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^cn\\-\\w+\\-\\d+$", + "regions": { + "aws-cn-global": { + "description": "aws-cn global region" + }, + "cn-north-1": { + "description": "China (Beijing)" + }, + "cn-northwest-1": { + "description": "China (Ningxia)" + } + } + }, { + "id": "aws-eusc", + "outputs": { + "dnsSuffix": "amazonaws.eu", + "dualStackDnsSuffix": "api.amazonwebservices.eu", + "implicitGlobalRegion": "eusc-de-east-1", + "name": "aws-eusc", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eusc\\-(de)\\-\\w+\\-\\d+$", + "regions": { + "eusc-de-east-1": { + "description": "AWS European Sovereign Cloud (Germany)" + } + } + }, { + "id": "aws-iso", + "outputs": { + "dnsSuffix": "c2s.ic.gov", + "dualStackDnsSuffix": "api.aws.ic.gov", + "implicitGlobalRegion": "us-iso-east-1", + "name": "aws-iso", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-iso\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-global": { + "description": "aws-iso global region" + }, + "us-iso-east-1": { + "description": "US ISO East" + }, + "us-iso-west-1": { + "description": "US ISO WEST" + } + } + }, { + "id": "aws-iso-b", + "outputs": { + "dnsSuffix": "sc2s.sgov.gov", + "dualStackDnsSuffix": "api.aws.scloud", + "implicitGlobalRegion": "us-isob-east-1", + "name": "aws-iso-b", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isob\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-b-global": { + "description": "aws-iso-b global region" + }, + "us-isob-east-1": { + "description": "US ISOB East (Ohio)" + }, + "us-isob-west-1": { + "description": "US ISOB West" + } + } + }, { + "id": "aws-iso-e", + "outputs": { + "dnsSuffix": "cloud.adc-e.uk", + "dualStackDnsSuffix": "api.cloud-aws.adc-e.uk", + "implicitGlobalRegion": "eu-isoe-west-1", + "name": "aws-iso-e", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eu\\-isoe\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-e-global": { + "description": "aws-iso-e global region" + }, + "eu-isoe-west-1": { + "description": "EU ISOE West" + } + } + }, { + "id": "aws-iso-f", + "outputs": { + "dnsSuffix": "csp.hci.ic.gov", + "dualStackDnsSuffix": "api.aws.hci.ic.gov", + "implicitGlobalRegion": "us-isof-south-1", + "name": "aws-iso-f", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isof\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-f-global": { + "description": "aws-iso-f global region" + }, + "us-isof-east-1": { + "description": "US ISOF EAST" + }, + "us-isof-south-1": { + "description": "US ISOF SOUTH" + } + } + }, { + "id": "aws-us-gov", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-gov-west-1", + "name": "aws-us-gov", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-gov\\-\\w+\\-\\d+$", + "regions": { + "aws-us-gov-global": { + "description": "aws-us-gov global region" + }, + "us-gov-east-1": { + "description": "AWS GovCloud (US-East)" + }, + "us-gov-west-1": { + "description": "AWS GovCloud (US-West)" + } + } + }], + "version": "1.1" +} diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/aws.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/aws.js new file mode 100644 index 0000000..49a408e --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/aws.js @@ -0,0 +1,10 @@ +import { customEndpointFunctions } from "@smithy/util-endpoints"; +import { isVirtualHostableS3Bucket } from "./lib/aws/isVirtualHostableS3Bucket"; +import { parseArn } from "./lib/aws/parseArn"; +import { partition } from "./lib/aws/partition"; +export const awsEndpointFunctions = { + isVirtualHostableS3Bucket: isVirtualHostableS3Bucket, + parseArn: parseArn, + partition: partition, +}; +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/index.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/index.js new file mode 100644 index 0000000..f41d9be --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./aws"; +export * from "./lib/aws/partition"; +export * from "./lib/isIpAddress"; +export * from "./resolveDefaultAwsRegionalEndpointsConfig"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js new file mode 100644 index 0000000..03be049 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/index.js @@ -0,0 +1,3 @@ +export * from "./isVirtualHostableS3Bucket"; +export * from "./parseArn"; +export * from "./partition"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js new file mode 100644 index 0000000..f2bacc0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js @@ -0,0 +1,25 @@ +import { isValidHostLabel } from "@smithy/util-endpoints"; +import { isIpAddress } from "../isIpAddress"; +export const isVirtualHostableS3Bucket = (value, allowSubDomains = false) => { + if (allowSubDomains) { + for (const label of value.split(".")) { + if (!isVirtualHostableS3Bucket(label)) { + return false; + } + } + return true; + } + if (!isValidHostLabel(value)) { + return false; + } + if (value.length < 3 || value.length > 63) { + return false; + } + if (value !== value.toLowerCase()) { + return false; + } + if (isIpAddress(value)) { + return false; + } + return true; +}; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js new file mode 100644 index 0000000..6b12887 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js @@ -0,0 +1,18 @@ +const ARN_DELIMITER = ":"; +const RESOURCE_DELIMITER = "/"; +export const parseArn = (value) => { + const segments = value.split(ARN_DELIMITER); + if (segments.length < 6) + return null; + const [arn, partition, service, region, accountId, ...resourcePath] = segments; + if (arn !== "arn" || partition === "" || service === "" || resourcePath.join(ARN_DELIMITER) === "") + return null; + const resourceId = resourcePath.map((resource) => resource.split(RESOURCE_DELIMITER)).flat(); + return { + partition, + service, + region, + accountId, + resourceId, + }; +}; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js new file mode 100644 index 0000000..8d39d81 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js @@ -0,0 +1,41 @@ +import partitionsInfo from "./partitions.json"; +let selectedPartitionsInfo = partitionsInfo; +let selectedUserAgentPrefix = ""; +export const partition = (value) => { + const { partitions } = selectedPartitionsInfo; + for (const partition of partitions) { + const { regions, outputs } = partition; + for (const [region, regionData] of Object.entries(regions)) { + if (region === value) { + return { + ...outputs, + ...regionData, + }; + } + } + } + for (const partition of partitions) { + const { regionRegex, outputs } = partition; + if (new RegExp(regionRegex).test(value)) { + return { + ...outputs, + }; + } + } + const DEFAULT_PARTITION = partitions.find((partition) => partition.id === "aws"); + if (!DEFAULT_PARTITION) { + throw new Error("Provided region was not found in the partition array or regex," + + " and default partition with id 'aws' doesn't exist."); + } + return { + ...DEFAULT_PARTITION.outputs, + }; +}; +export const setPartitionInfo = (partitionsInfo, userAgentPrefix = "") => { + selectedPartitionsInfo = partitionsInfo; + selectedUserAgentPrefix = userAgentPrefix; +}; +export const useDefaultPartitionInfo = () => { + setPartitionInfo(partitionsInfo, ""); +}; +export const getUserAgentPrefix = () => selectedUserAgentPrefix; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json new file mode 100644 index 0000000..d7d22d8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partitions.json @@ -0,0 +1,267 @@ +{ + "partitions": [{ + "id": "aws", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-east-1", + "name": "aws", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + "regions": { + "af-south-1": { + "description": "Africa (Cape Town)" + }, + "ap-east-1": { + "description": "Asia Pacific (Hong Kong)" + }, + "ap-east-2": { + "description": "Asia Pacific (Taipei)" + }, + "ap-northeast-1": { + "description": "Asia Pacific (Tokyo)" + }, + "ap-northeast-2": { + "description": "Asia Pacific (Seoul)" + }, + "ap-northeast-3": { + "description": "Asia Pacific (Osaka)" + }, + "ap-south-1": { + "description": "Asia Pacific (Mumbai)" + }, + "ap-south-2": { + "description": "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1": { + "description": "Asia Pacific (Singapore)" + }, + "ap-southeast-2": { + "description": "Asia Pacific (Sydney)" + }, + "ap-southeast-3": { + "description": "Asia Pacific (Jakarta)" + }, + "ap-southeast-4": { + "description": "Asia Pacific (Melbourne)" + }, + "ap-southeast-5": { + "description": "Asia Pacific (Malaysia)" + }, + "ap-southeast-6": { + "description": "Asia Pacific (New Zealand)" + }, + "ap-southeast-7": { + "description": "Asia Pacific (Thailand)" + }, + "aws-global": { + "description": "aws global region" + }, + "ca-central-1": { + "description": "Canada (Central)" + }, + "ca-west-1": { + "description": "Canada West (Calgary)" + }, + "eu-central-1": { + "description": "Europe (Frankfurt)" + }, + "eu-central-2": { + "description": "Europe (Zurich)" + }, + "eu-north-1": { + "description": "Europe (Stockholm)" + }, + "eu-south-1": { + "description": "Europe (Milan)" + }, + "eu-south-2": { + "description": "Europe (Spain)" + }, + "eu-west-1": { + "description": "Europe (Ireland)" + }, + "eu-west-2": { + "description": "Europe (London)" + }, + "eu-west-3": { + "description": "Europe (Paris)" + }, + "il-central-1": { + "description": "Israel (Tel Aviv)" + }, + "me-central-1": { + "description": "Middle East (UAE)" + }, + "me-south-1": { + "description": "Middle East (Bahrain)" + }, + "mx-central-1": { + "description": "Mexico (Central)" + }, + "sa-east-1": { + "description": "South America (Sao Paulo)" + }, + "us-east-1": { + "description": "US East (N. Virginia)" + }, + "us-east-2": { + "description": "US East (Ohio)" + }, + "us-west-1": { + "description": "US West (N. California)" + }, + "us-west-2": { + "description": "US West (Oregon)" + } + } + }, { + "id": "aws-cn", + "outputs": { + "dnsSuffix": "amazonaws.com.cn", + "dualStackDnsSuffix": "api.amazonwebservices.com.cn", + "implicitGlobalRegion": "cn-northwest-1", + "name": "aws-cn", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^cn\\-\\w+\\-\\d+$", + "regions": { + "aws-cn-global": { + "description": "aws-cn global region" + }, + "cn-north-1": { + "description": "China (Beijing)" + }, + "cn-northwest-1": { + "description": "China (Ningxia)" + } + } + }, { + "id": "aws-eusc", + "outputs": { + "dnsSuffix": "amazonaws.eu", + "dualStackDnsSuffix": "api.amazonwebservices.eu", + "implicitGlobalRegion": "eusc-de-east-1", + "name": "aws-eusc", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eusc\\-(de)\\-\\w+\\-\\d+$", + "regions": { + "eusc-de-east-1": { + "description": "AWS European Sovereign Cloud (Germany)" + } + } + }, { + "id": "aws-iso", + "outputs": { + "dnsSuffix": "c2s.ic.gov", + "dualStackDnsSuffix": "api.aws.ic.gov", + "implicitGlobalRegion": "us-iso-east-1", + "name": "aws-iso", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-iso\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-global": { + "description": "aws-iso global region" + }, + "us-iso-east-1": { + "description": "US ISO East" + }, + "us-iso-west-1": { + "description": "US ISO WEST" + } + } + }, { + "id": "aws-iso-b", + "outputs": { + "dnsSuffix": "sc2s.sgov.gov", + "dualStackDnsSuffix": "api.aws.scloud", + "implicitGlobalRegion": "us-isob-east-1", + "name": "aws-iso-b", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isob\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-b-global": { + "description": "aws-iso-b global region" + }, + "us-isob-east-1": { + "description": "US ISOB East (Ohio)" + }, + "us-isob-west-1": { + "description": "US ISOB West" + } + } + }, { + "id": "aws-iso-e", + "outputs": { + "dnsSuffix": "cloud.adc-e.uk", + "dualStackDnsSuffix": "api.cloud-aws.adc-e.uk", + "implicitGlobalRegion": "eu-isoe-west-1", + "name": "aws-iso-e", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^eu\\-isoe\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-e-global": { + "description": "aws-iso-e global region" + }, + "eu-isoe-west-1": { + "description": "EU ISOE West" + } + } + }, { + "id": "aws-iso-f", + "outputs": { + "dnsSuffix": "csp.hci.ic.gov", + "dualStackDnsSuffix": "api.aws.hci.ic.gov", + "implicitGlobalRegion": "us-isof-south-1", + "name": "aws-iso-f", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-isof\\-\\w+\\-\\d+$", + "regions": { + "aws-iso-f-global": { + "description": "aws-iso-f global region" + }, + "us-isof-east-1": { + "description": "US ISOF EAST" + }, + "us-isof-south-1": { + "description": "US ISOF SOUTH" + } + } + }, { + "id": "aws-us-gov", + "outputs": { + "dnsSuffix": "amazonaws.com", + "dualStackDnsSuffix": "api.aws", + "implicitGlobalRegion": "us-gov-west-1", + "name": "aws-us-gov", + "supportsDualStack": true, + "supportsFIPS": true + }, + "regionRegex": "^us\\-gov\\-\\w+\\-\\d+$", + "regions": { + "aws-us-gov-global": { + "description": "aws-us-gov global region" + }, + "us-gov-east-1": { + "description": "AWS GovCloud (US-East)" + }, + "us-gov-west-1": { + "description": "AWS GovCloud (US-West)" + } + } + }], + "version": "1.1" +} diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/isIpAddress.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/isIpAddress.js new file mode 100644 index 0000000..59bfcd8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/lib/isIpAddress.js @@ -0,0 +1 @@ +export { isIpAddress } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/resolveDefaultAwsRegionalEndpointsConfig.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/resolveDefaultAwsRegionalEndpointsConfig.js new file mode 100644 index 0000000..4da5619 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/resolveDefaultAwsRegionalEndpointsConfig.js @@ -0,0 +1,21 @@ +import { parseUrl } from "@smithy/url-parser"; +export const resolveDefaultAwsRegionalEndpointsConfig = (input) => { + if (typeof input.endpointProvider !== "function") { + throw new Error("@aws-sdk/util-endpoint - endpointProvider and endpoint missing in config for this client."); + } + const { endpoint } = input; + if (endpoint === undefined) { + input.endpoint = async () => { + return toEndpointV1(input.endpointProvider({ + Region: typeof input.region === "function" ? await input.region() : input.region, + UseDualStack: typeof input.useDualstackEndpoint === "function" + ? await input.useDualstackEndpoint() + : input.useDualstackEndpoint, + UseFIPS: typeof input.useFipsEndpoint === "function" ? await input.useFipsEndpoint() : input.useFipsEndpoint, + Endpoint: undefined, + }, { logger: input.logger })); + }; + } + return input; +}; +export const toEndpointV1 = (endpoint) => parseUrl(endpoint.url); diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/resolveEndpoint.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/resolveEndpoint.js new file mode 100644 index 0000000..e2453f7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/resolveEndpoint.js @@ -0,0 +1 @@ +export { resolveEndpoint } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointError.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointError.js new file mode 100644 index 0000000..521e688 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointError.js @@ -0,0 +1 @@ +export { EndpointError } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointRuleObject.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointRuleObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/EndpointRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/ErrorRuleObject.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/ErrorRuleObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/ErrorRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/RuleSetObject.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/RuleSetObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/RuleSetObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/TreeRuleObject.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/TreeRuleObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/TreeRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js new file mode 100644 index 0000000..daba501 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/index.js @@ -0,0 +1,6 @@ +export * from "./EndpointError"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/shared.js b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/shared.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-es/types/shared.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/aws.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/aws.d.ts new file mode 100644 index 0000000..0c34c99 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/aws.d.ts @@ -0,0 +1,2 @@ +import type { EndpointFunctions } from "@smithy/util-endpoints"; +export declare const awsEndpointFunctions: EndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts new file mode 100644 index 0000000..f41d9be --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./aws"; +export * from "./lib/aws/partition"; +export * from "./lib/isIpAddress"; +export * from "./resolveDefaultAwsRegionalEndpointsConfig"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts new file mode 100644 index 0000000..03be049 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/index.d.ts @@ -0,0 +1,3 @@ +export * from "./isVirtualHostableS3Bucket"; +export * from "./parseArn"; +export * from "./partition"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/isVirtualHostableS3Bucket.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/isVirtualHostableS3Bucket.d.ts new file mode 100644 index 0000000..25d46e4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/isVirtualHostableS3Bucket.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates whether a string is a DNS compatible bucket name and can be used with + * virtual hosted style addressing. + */ +export declare const isVirtualHostableS3Bucket: (value: string, allowSubDomains?: boolean) => boolean; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/parseArn.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/parseArn.d.ts new file mode 100644 index 0000000..01b029d --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/parseArn.d.ts @@ -0,0 +1,7 @@ +import type { EndpointARN } from "@smithy/types"; +/** + * Evaluates a single string argument value, and returns an object containing + * details about the parsed ARN. + * If the input was not a valid ARN, the function returns null. + */ +export declare const parseArn: (value: string) => EndpointARN | null; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/partition.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/partition.d.ts new file mode 100644 index 0000000..7a70ad5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/aws/partition.d.ts @@ -0,0 +1,38 @@ +import type { EndpointPartition } from "@smithy/types"; +export type PartitionsInfo = { + partitions: Array<{ + id: string; + outputs: { + dnsSuffix: string; + dualStackDnsSuffix: string; + name: string; + supportsDualStack: boolean; + supportsFIPS: boolean; + }; + regionRegex: string; + regions: Record; + }>; +}; +/** + * Evaluates a single string argument value as a region, and matches the + * string value to an AWS partition. + * The matcher MUST always return a successful object describing the partition + * that the region has been determined to be a part of. + */ +export declare const partition: (value: string) => EndpointPartition; +/** + * Set custom partitions.json data. + * @internal + */ +export declare const setPartitionInfo: (partitionsInfo: PartitionsInfo, userAgentPrefix?: string) => void; +/** + * Reset to the default partitions.json data. + * @internal + */ +export declare const useDefaultPartitionInfo: () => void; +/** + * @internal + */ +export declare const getUserAgentPrefix: () => string; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/isIpAddress.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/isIpAddress.d.ts new file mode 100644 index 0000000..59bfcd8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/lib/isIpAddress.d.ts @@ -0,0 +1 @@ +export { isIpAddress } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/resolveDefaultAwsRegionalEndpointsConfig.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/resolveDefaultAwsRegionalEndpointsConfig.d.ts new file mode 100644 index 0000000..dd6f12c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/resolveDefaultAwsRegionalEndpointsConfig.d.ts @@ -0,0 +1,56 @@ +import type { Endpoint, EndpointParameters, EndpointV2, Logger, Provider } from "@smithy/types"; +/** + * This is an additional config resolver layer for clients using the default + * AWS regional endpoints ruleset. It makes the *resolved* config guarantee the presence of an + * endpoint provider function. This differs from the base behavior of the Endpoint + * config resolver, which only normalizes config.endpoint IFF one is provided by the caller. + * + * This is not used by AWS SDK clients, but rather + * generated clients that have the aws.api#service trait. This includes protocol tests + * and other customers. + * + * This resolver is MUTUALLY EXCLUSIVE with the EndpointRequired config resolver from + * |@smithy/middleware-endpoint. + * + * It must be placed after the `resolveEndpointConfig` + * resolver. This replaces the endpoints.json-based default endpoint provider. + * + * @public + */ +export type DefaultAwsRegionalEndpointsInputConfig = { + endpoint?: unknown; +}; +type PreviouslyResolved = { + logger?: Logger; + region?: undefined | string | Provider; + useFipsEndpoint?: undefined | boolean | Provider; + useDualstackEndpoint?: undefined | boolean | Provider; + endpointProvider: (endpointParams: EndpointParameters | DefaultRegionalEndpointParameters, context?: { + logger?: Logger; + }) => EndpointV2; +}; +/** + * @internal + */ +type DefaultRegionalEndpointParameters = { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; +}; +/** + * @internal + */ +export interface DefaultAwsRegionalEndpointsResolvedConfig { + endpoint: Provider; +} +/** + * MUST resolve after `\@smithy/middleware-endpoint`::`resolveEndpointConfig`. + * + * @internal + */ +export declare const resolveDefaultAwsRegionalEndpointsConfig: (input: T & DefaultAwsRegionalEndpointsInputConfig & PreviouslyResolved) => T & DefaultAwsRegionalEndpointsResolvedConfig; +/** + * @internal + */ +export declare const toEndpointV1: (endpoint: EndpointV2) => Endpoint; +export {}; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/resolveEndpoint.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/resolveEndpoint.d.ts new file mode 100644 index 0000000..e2453f7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/resolveEndpoint.d.ts @@ -0,0 +1 @@ +export { resolveEndpoint } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/aws.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/aws.d.ts new file mode 100644 index 0000000..13c64a9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/aws.d.ts @@ -0,0 +1,2 @@ +import { EndpointFunctions } from "@smithy/util-endpoints"; +export declare const awsEndpointFunctions: EndpointFunctions; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..f41d9be --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/index.d.ts @@ -0,0 +1,6 @@ +export * from "./aws"; +export * from "./lib/aws/partition"; +export * from "./lib/isIpAddress"; +export * from "./resolveDefaultAwsRegionalEndpointsConfig"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts new file mode 100644 index 0000000..03be049 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/index.d.ts @@ -0,0 +1,3 @@ +export * from "./isVirtualHostableS3Bucket"; +export * from "./parseArn"; +export * from "./partition"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/isVirtualHostableS3Bucket.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/isVirtualHostableS3Bucket.d.ts new file mode 100644 index 0000000..5ef3296 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/isVirtualHostableS3Bucket.d.ts @@ -0,0 +1,4 @@ +export declare const isVirtualHostableS3Bucket: ( + value: string, + allowSubDomains?: boolean +) => boolean; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/parseArn.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/parseArn.d.ts new file mode 100644 index 0000000..690d459 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/parseArn.d.ts @@ -0,0 +1,2 @@ +import { EndpointARN } from "@smithy/types"; +export declare const parseArn: (value: string) => EndpointARN | null; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/partition.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/partition.d.ts new file mode 100644 index 0000000..0683113 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/aws/partition.d.ts @@ -0,0 +1,28 @@ +import { EndpointPartition } from "@smithy/types"; +export type PartitionsInfo = { + partitions: Array<{ + id: string; + outputs: { + dnsSuffix: string; + dualStackDnsSuffix: string; + name: string; + supportsDualStack: boolean; + supportsFIPS: boolean; + }; + regionRegex: string; + regions: Record< + string, + | { + description?: string; + } + | undefined + >; + }>; +}; +export declare const partition: (value: string) => EndpointPartition; +export declare const setPartitionInfo: ( + partitionsInfo: PartitionsInfo, + userAgentPrefix?: string +) => void; +export declare const useDefaultPartitionInfo: () => void; +export declare const getUserAgentPrefix: () => string; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts new file mode 100644 index 0000000..59bfcd8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts @@ -0,0 +1 @@ +export { isIpAddress } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveDefaultAwsRegionalEndpointsConfig.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveDefaultAwsRegionalEndpointsConfig.d.ts new file mode 100644 index 0000000..3327ae9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveDefaultAwsRegionalEndpointsConfig.d.ts @@ -0,0 +1,35 @@ +import { + Endpoint, + EndpointParameters, + EndpointV2, + Logger, + Provider, +} from "@smithy/types"; +export type DefaultAwsRegionalEndpointsInputConfig = { + endpoint?: unknown; +}; +type PreviouslyResolved = { + logger?: Logger; + region?: undefined | string | Provider; + useFipsEndpoint?: undefined | boolean | Provider; + useDualstackEndpoint?: undefined | boolean | Provider; + endpointProvider: ( + endpointParams: EndpointParameters | DefaultRegionalEndpointParameters, + context?: { + logger?: Logger; + } + ) => EndpointV2; +}; +type DefaultRegionalEndpointParameters = { + Region?: string | undefined; + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; +}; +export interface DefaultAwsRegionalEndpointsResolvedConfig { + endpoint: Provider; +} +export declare const resolveDefaultAwsRegionalEndpointsConfig: ( + input: T & DefaultAwsRegionalEndpointsInputConfig & PreviouslyResolved +) => T & DefaultAwsRegionalEndpointsResolvedConfig; +export declare const toEndpointV1: (endpoint: EndpointV2) => Endpoint; +export {}; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts new file mode 100644 index 0000000..e2453f7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts @@ -0,0 +1 @@ +export { resolveEndpoint } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts new file mode 100644 index 0000000..521e688 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts @@ -0,0 +1 @@ +export { EndpointError } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts new file mode 100644 index 0000000..b48af7f --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts @@ -0,0 +1,6 @@ +export { + EndpointObjectProperties, + EndpointObjectHeaders, + EndpointObject, + EndpointRuleObject, +} from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts new file mode 100644 index 0000000..e7b8881 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts @@ -0,0 +1 @@ +export { ErrorRuleObject } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts new file mode 100644 index 0000000..2a489c6 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts @@ -0,0 +1,5 @@ +export { + DeprecatedObject, + ParameterObject, + RuleSetObject, +} from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts new file mode 100644 index 0000000..716ddcf --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts @@ -0,0 +1 @@ +export { RuleSetRules, TreeRuleObject } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts new file mode 100644 index 0000000..daba501 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./EndpointError"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/shared.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/shared.d.ts new file mode 100644 index 0000000..cfd2248 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/ts3.4/types/shared.d.ts @@ -0,0 +1,12 @@ +export { + ReferenceObject, + FunctionObject, + FunctionArgv, + FunctionReturn, + ConditionObject, + Expression, + EndpointParams, + EndpointResolverOptions, + ReferenceRecord, + EvaluateOptions, +} from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointError.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointError.d.ts new file mode 100644 index 0000000..521e688 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointError.d.ts @@ -0,0 +1 @@ +export { EndpointError } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointRuleObject.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointRuleObject.d.ts new file mode 100644 index 0000000..ef666fe --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/EndpointRuleObject.d.ts @@ -0,0 +1 @@ +export { EndpointObjectProperties, EndpointObjectHeaders, EndpointObject, EndpointRuleObject, } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/ErrorRuleObject.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/ErrorRuleObject.d.ts new file mode 100644 index 0000000..e7b8881 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/ErrorRuleObject.d.ts @@ -0,0 +1 @@ +export { ErrorRuleObject } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/RuleSetObject.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/RuleSetObject.d.ts new file mode 100644 index 0000000..c052af0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/RuleSetObject.d.ts @@ -0,0 +1 @@ +export { DeprecatedObject, ParameterObject, RuleSetObject } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/TreeRuleObject.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/TreeRuleObject.d.ts new file mode 100644 index 0000000..716ddcf --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/TreeRuleObject.d.ts @@ -0,0 +1 @@ +export { RuleSetRules, TreeRuleObject } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts new file mode 100644 index 0000000..daba501 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./EndpointError"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/shared.d.ts b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/shared.d.ts new file mode 100644 index 0000000..af7cc53 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/dist-types/types/shared.d.ts @@ -0,0 +1 @@ +export { ReferenceObject, FunctionObject, FunctionArgv, FunctionReturn, ConditionObject, Expression, EndpointParams, EndpointResolverOptions, ReferenceRecord, EvaluateOptions, } from "@smithy/util-endpoints"; diff --git a/bff/node_modules/@aws-sdk/util-endpoints/package.json b/bff/node_modules/@aws-sdk/util-endpoints/package.json new file mode 100644 index 0000000..f58b991 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-endpoints/package.json @@ -0,0 +1,60 @@ +{ + "name": "@aws-sdk/util-endpoints", + "version": "3.996.5", + "description": "Utilities to help with endpoint resolution", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-endpoints", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "sideEffects": true, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-endpoints": "^3.3.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/util-endpoints", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/util-endpoints" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/bff/node_modules/@aws-sdk/util-format-url/LICENSE b/bff/node_modules/@aws-sdk/util-format-url/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-format-url/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/util-format-url/README.md b/bff/node_modules/@aws-sdk/util-format-url/README.md new file mode 100644 index 0000000..f83f144 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-format-url/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/util-format-url + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-format-url/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-format-url) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-format-url.svg)](https://www.npmjs.com/package/@aws-sdk/util-format-url) diff --git a/bff/node_modules/@aws-sdk/util-format-url/dist-cjs/index.js b/bff/node_modules/@aws-sdk/util-format-url/dist-cjs/index.js new file mode 100644 index 0000000..de16777 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-format-url/dist-cjs/index.js @@ -0,0 +1,34 @@ +'use strict'; + +var querystringBuilder = require('@smithy/querystring-builder'); + +function formatUrl(request) { + const { port, query } = request; + let { protocol, path, hostname } = request; + if (protocol && protocol.slice(-1) !== ":") { + protocol += ":"; + } + if (port) { + hostname += `:${port}`; + } + if (path && path.charAt(0) !== "/") { + path = `/${path}`; + } + let queryString = query ? querystringBuilder.buildQueryString(query) : ""; + if (queryString && queryString[0] !== "?") { + queryString = `?${queryString}`; + } + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + let fragment = ""; + if (request.fragment) { + fragment = `#${request.fragment}`; + } + return `${protocol}//${auth}${hostname}${path}${queryString}${fragment}`; +} + +exports.formatUrl = formatUrl; diff --git a/bff/node_modules/@aws-sdk/util-format-url/dist-es/index.js b/bff/node_modules/@aws-sdk/util-format-url/dist-es/index.js new file mode 100644 index 0000000..e540cd4 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-format-url/dist-es/index.js @@ -0,0 +1,29 @@ +import { buildQueryString } from "@smithy/querystring-builder"; +export function formatUrl(request) { + const { port, query } = request; + let { protocol, path, hostname } = request; + if (protocol && protocol.slice(-1) !== ":") { + protocol += ":"; + } + if (port) { + hostname += `:${port}`; + } + if (path && path.charAt(0) !== "/") { + path = `/${path}`; + } + let queryString = query ? buildQueryString(query) : ""; + if (queryString && queryString[0] !== "?") { + queryString = `?${queryString}`; + } + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + let fragment = ""; + if (request.fragment) { + fragment = `#${request.fragment}`; + } + return `${protocol}//${auth}${hostname}${path}${queryString}${fragment}`; +} diff --git a/bff/node_modules/@aws-sdk/util-format-url/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/util-format-url/dist-types/index.d.ts new file mode 100644 index 0000000..037b567 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-format-url/dist-types/index.d.ts @@ -0,0 +1,2 @@ +import type { HttpRequest } from "@smithy/types"; +export declare function formatUrl(request: Omit): string; diff --git a/bff/node_modules/@aws-sdk/util-format-url/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/util-format-url/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..b09d464 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-format-url/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +import { HttpRequest } from "@smithy/types"; +export declare function formatUrl( + request: Pick> +): string; diff --git a/bff/node_modules/@aws-sdk/util-format-url/package.json b/bff/node_modules/@aws-sdk/util-format-url/package.json new file mode 100644 index 0000000..25886c8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-format-url/package.json @@ -0,0 +1,56 @@ +{ + "name": "@aws-sdk/util-format-url", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-format-url", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/util-format-url", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/util-format-url" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/bff/node_modules/@aws-sdk/util-locate-window/LICENSE b/bff/node_modules/@aws-sdk/util-locate-window/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-locate-window/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/util-locate-window/README.md b/bff/node_modules/@aws-sdk/util-locate-window/README.md new file mode 100644 index 0000000..cac53d3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-locate-window/README.md @@ -0,0 +1,4 @@ +# @aws-sdk/util-locate-window + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-locate-window/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-locate-window) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-locate-window.svg)](https://www.npmjs.com/package/@aws-sdk/util-locate-window) diff --git a/bff/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js b/bff/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js new file mode 100644 index 0000000..1daadf8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js @@ -0,0 +1,14 @@ +'use strict'; + +const fallbackWindow = {}; +function locateWindow() { + if (typeof window !== "undefined") { + return window; + } + else if (typeof self !== "undefined") { + return self; + } + return fallbackWindow; +} + +exports.locateWindow = locateWindow; diff --git a/bff/node_modules/@aws-sdk/util-locate-window/dist-es/index.js b/bff/node_modules/@aws-sdk/util-locate-window/dist-es/index.js new file mode 100644 index 0000000..a51e644 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-locate-window/dist-es/index.js @@ -0,0 +1,10 @@ +const fallbackWindow = {}; +export function locateWindow() { + if (typeof window !== "undefined") { + return window; + } + else if (typeof self !== "undefined") { + return self; + } + return fallbackWindow; +} diff --git a/bff/node_modules/@aws-sdk/util-locate-window/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/util-locate-window/dist-types/index.d.ts new file mode 100644 index 0000000..2b02d7f --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-locate-window/dist-types/index.d.ts @@ -0,0 +1,6 @@ +/** + * Locates the global scope for a browser or browser-like environment. If + * neither `window` nor `self` is defined by the environment, the same object + * will be returned on each invocation. + */ +export declare function locateWindow(): Window; diff --git a/bff/node_modules/@aws-sdk/util-locate-window/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/util-locate-window/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..a5bbba3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-locate-window/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export declare function locateWindow(): Window; diff --git a/bff/node_modules/@aws-sdk/util-locate-window/package.json b/bff/node_modules/@aws-sdk/util-locate-window/package.json new file mode 100644 index 0000000..f5c9265 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-locate-window/package.json @@ -0,0 +1,54 @@ +{ + "name": "@aws-sdk/util-locate-window", + "version": "3.965.5", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-locate-window", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/util-locate-window", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/util-locate-window" + } +} diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/LICENSE b/bff/node_modules/@aws-sdk/util-user-agent-browser/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/README.md b/bff/node_modules/@aws-sdk/util-user-agent-browser/README.md new file mode 100644 index 0000000..70eb6b3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/README.md @@ -0,0 +1,29 @@ +# @aws-sdk/util-user-agent-browser + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-user-agent-browser/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-user-agent-browser) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-user-agent-browser.svg)](https://www.npmjs.com/package/@aws-sdk/util-user-agent-browser) + +## Usage + +In previous versions of the AWS SDK for JavaScript v3, the AWS SDK user agent header was provided by parsing the navigator user agent string with the `bowser` library. + +This was later changed to browser feature detection using the native Navigator APIs, but if you would like to have the previous functionality, use the following code: + +```js +import { createUserAgentStringParsingProvider } from "@aws-sdk/util-user-agent-browser"; + +import { S3Client } from "@aws-sdk/client-s3"; +import pkgInfo from "@aws-sdk/client-s3/package.json"; +// or any other client. + +const client = new S3Client({ + defaultUserAgentProvider: createUserAgentStringParsingProvider({ + // For a client's serviceId, check the corresponding shared runtimeConfig file + // https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/src/runtimeConfig.shared.ts + serviceId: "S3", + clientVersion: pkgInfo.version, + }), +}); +``` + +This usage is not recommended, due to the size of the additional parsing library. diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/configurations.js b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/configurations.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/configurations.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js new file mode 100644 index 0000000..5e7ea31 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/createUserAgentStringParsingProvider.js @@ -0,0 +1,57 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createUserAgentStringParsingProvider = void 0; +const createUserAgentStringParsingProvider = ({ serviceId, clientVersion }) => async (config) => { + const module = await Promise.resolve().then(() => __importStar(require("bowser"))); + const parse = module.parse ?? module.default.parse ?? (() => ""); + const parsedUA = typeof window !== "undefined" && window?.navigator?.userAgent ? parse(window.navigator.userAgent) : undefined; + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${parsedUA?.os?.name || "other"}`, parsedUA?.os?.version], + ["lang/js"], + ["md/browser", `${parsedUA?.browser?.name ?? "unknown"}_${parsedUA?.browser?.version ?? "unknown"}`], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +exports.createUserAgentStringParsingProvider = createUserAgentStringParsingProvider; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js new file mode 100644 index 0000000..4ab90e8 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js @@ -0,0 +1,58 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultUserAgent = exports.fallback = exports.createDefaultUserAgentProvider = exports.createUserAgentStringParsingProvider = void 0; +var createUserAgentStringParsingProvider_1 = require("./createUserAgentStringParsingProvider"); +Object.defineProperty(exports, "createUserAgentStringParsingProvider", { enumerable: true, get: function () { return createUserAgentStringParsingProvider_1.createUserAgentStringParsingProvider; } }); +const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => { + const navigator = typeof window !== "undefined" ? window.navigator : undefined; + const uaString = navigator?.userAgent ?? ""; + const osName = navigator?.userAgentData?.platform ?? exports.fallback.os(uaString) ?? "other"; + const osVersion = undefined; + const brands = navigator?.userAgentData?.brands ?? []; + const brand = brands[brands.length - 1]; + const browserName = brand?.brand ?? exports.fallback.browser(uaString) ?? "unknown"; + const browserVersion = brand?.version ?? "unknown"; + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${osName}`, osVersion], + ["lang/js"], + ["md/browser", `${browserName}_${browserVersion}`], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +exports.createDefaultUserAgentProvider = createDefaultUserAgentProvider; +exports.fallback = { + os(ua) { + if (/iPhone|iPad|iPod/.test(ua)) + return "iOS"; + if (/Macintosh|Mac OS X/.test(ua)) + return "macOS"; + if (/Windows NT/.test(ua)) + return "Windows"; + if (/Android/.test(ua)) + return "Android"; + if (/Linux/.test(ua)) + return "Linux"; + return undefined; + }, + browser(ua) { + if (/EdgiOS|EdgA|Edg\//.test(ua)) + return "Microsoft Edge"; + if (/Firefox\//.test(ua)) + return "Firefox"; + if (/Chrome\//.test(ua)) + return "Chrome"; + if (/Safari\//.test(ua)) + return "Safari"; + return undefined; + }, +}; +exports.defaultUserAgent = exports.createDefaultUserAgentProvider; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js new file mode 100644 index 0000000..4d06e36 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultUserAgent = exports.createDefaultUserAgentProvider = void 0; +const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + ["os/other"], + ["lang/js"], + ["md/rn"], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +exports.createDefaultUserAgentProvider = createDefaultUserAgentProvider; +exports.defaultUserAgent = exports.createDefaultUserAgentProvider; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/configurations.js b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/configurations.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/configurations.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/createUserAgentStringParsingProvider.js b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/createUserAgentStringParsingProvider.js new file mode 100644 index 0000000..a87ea5d --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/createUserAgentStringParsingProvider.js @@ -0,0 +1,20 @@ +export const createUserAgentStringParsingProvider = ({ serviceId, clientVersion }) => async (config) => { + const module = await import("bowser"); + const parse = module.parse ?? module.default.parse ?? (() => ""); + const parsedUA = typeof window !== "undefined" && window?.navigator?.userAgent ? parse(window.navigator.userAgent) : undefined; + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${parsedUA?.os?.name || "other"}`, parsedUA?.os?.version], + ["lang/js"], + ["md/browser", `${parsedUA?.browser?.name ?? "unknown"}_${parsedUA?.browser?.version ?? "unknown"}`], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js new file mode 100644 index 0000000..80762a0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js @@ -0,0 +1,53 @@ +export { createUserAgentStringParsingProvider } from "./createUserAgentStringParsingProvider"; +export const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => { + const navigator = typeof window !== "undefined" ? window.navigator : undefined; + const uaString = navigator?.userAgent ?? ""; + const osName = navigator?.userAgentData?.platform ?? fallback.os(uaString) ?? "other"; + const osVersion = undefined; + const brands = navigator?.userAgentData?.brands ?? []; + const brand = brands[brands.length - 1]; + const browserName = brand?.brand ?? fallback.browser(uaString) ?? "unknown"; + const browserVersion = brand?.version ?? "unknown"; + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${osName}`, osVersion], + ["lang/js"], + ["md/browser", `${browserName}_${browserVersion}`], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +export const fallback = { + os(ua) { + if (/iPhone|iPad|iPod/.test(ua)) + return "iOS"; + if (/Macintosh|Mac OS X/.test(ua)) + return "macOS"; + if (/Windows NT/.test(ua)) + return "Windows"; + if (/Android/.test(ua)) + return "Android"; + if (/Linux/.test(ua)) + return "Linux"; + return undefined; + }, + browser(ua) { + if (/EdgiOS|EdgA|Edg\//.test(ua)) + return "Microsoft Edge"; + if (/Firefox\//.test(ua)) + return "Firefox"; + if (/Chrome\//.test(ua)) + return "Chrome"; + if (/Safari\//.test(ua)) + return "Safari"; + return undefined; + }, +}; +export const defaultUserAgent = createDefaultUserAgentProvider; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js new file mode 100644 index 0000000..04c7ae5 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js @@ -0,0 +1,18 @@ +export const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + ["os/other"], + ["lang/js"], + ["md/rn"], + ]; + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + const appId = await config?.userAgentAppId?.(); + if (appId) { + sections.push([`app/${appId}`]); + } + return sections; +}; +export const defaultUserAgent = createDefaultUserAgentProvider; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/configurations.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/configurations.d.ts new file mode 100644 index 0000000..00537a9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/configurations.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export interface DefaultUserAgentOptions { + serviceId?: string; + clientVersion: string; +} diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/createUserAgentStringParsingProvider.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/createUserAgentStringParsingProvider.d.ts new file mode 100644 index 0000000..0897b0d --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/createUserAgentStringParsingProvider.d.ts @@ -0,0 +1,14 @@ +import type { UserAgent } from "@smithy/types"; +import type { DefaultUserAgentOptions } from "./configurations"; +import type { PreviouslyResolved } from "./index"; +/** + * This is an alternative to the default user agent provider that uses the bowser + * library to parse the user agent string. + * + * Use this with your client's `defaultUserAgentProvider` constructor object field + * to use the legacy behavior. + * + * @deprecated use the default provider unless you need the older UA-parsing functionality. + * @public + */ +export declare const createUserAgentStringParsingProvider: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts new file mode 100644 index 0000000..35d2f72 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts @@ -0,0 +1,27 @@ +import type { Provider, UserAgent } from "@smithy/types"; +import type { DefaultUserAgentOptions } from "./configurations"; +export { createUserAgentStringParsingProvider } from "./createUserAgentStringParsingProvider"; +/** + * @internal + */ +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +/** + * Default provider of the AWS SDK user agent string in react-native. + * @internal + */ +export declare const createDefaultUserAgentProvider: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); +/** + * Rudimentary UA string parsing as a fallback. + * @internal + */ +export declare const fallback: { + os(ua: string): string | undefined; + browser(ua: string): string | undefined; +}; +/** + * @internal + * @deprecated use createDefaultUserAgentProvider + */ +export declare const defaultUserAgent: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts new file mode 100644 index 0000000..02134b1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts @@ -0,0 +1,18 @@ +import type { Provider, UserAgent } from "@smithy/types"; +import type { DefaultUserAgentOptions } from "./configurations"; +/** + * @internal + */ +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +/** + * Default provider to the user agent in ReactNative. + * @internal + */ +export declare const createDefaultUserAgentProvider: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); +/** + * @internal + * @deprecated use createDefaultUserAgentProvider + */ +export declare const defaultUserAgent: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => ((config?: PreviouslyResolved) => Promise); diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/configurations.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/configurations.d.ts new file mode 100644 index 0000000..1428231 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/configurations.d.ts @@ -0,0 +1,4 @@ +export interface DefaultUserAgentOptions { + serviceId?: string; + clientVersion: string; +} diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/createUserAgentStringParsingProvider.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/createUserAgentStringParsingProvider.d.ts new file mode 100644 index 0000000..a564918 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/createUserAgentStringParsingProvider.d.ts @@ -0,0 +1,9 @@ +import { UserAgent } from "@smithy/types"; +import { DefaultUserAgentOptions } from "./configurations"; +import { PreviouslyResolved } from "./index"; +export declare const createUserAgentStringParsingProvider: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..adca294 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,22 @@ +import { Provider, UserAgent } from "@smithy/types"; +import { DefaultUserAgentOptions } from "./configurations"; +export { createUserAgentStringParsingProvider } from "./createUserAgentStringParsingProvider"; +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +export declare const createDefaultUserAgentProvider: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; +export declare const fallback: { + os(ua: string): string | undefined; + browser(ua: string): string | undefined; +}; +export declare const defaultUserAgent: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts new file mode 100644 index 0000000..32e643a --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts @@ -0,0 +1,17 @@ +import { Provider, UserAgent } from "@smithy/types"; +import { DefaultUserAgentOptions } from "./configurations"; +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +export declare const createDefaultUserAgentProvider: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; +export declare const defaultUserAgent: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-browser/package.json b/bff/node_modules/@aws-sdk/util-user-agent-browser/package.json new file mode 100644 index 0000000..8d76eed --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-browser/package.json @@ -0,0 +1,55 @@ +{ + "name": "@aws-sdk/util-user-agent-browser", + "version": "3.972.8", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-user-agent-browser", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "browser": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "react-native": "dist-es/index.native.js", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/util-user-agent-browser", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/util-user-agent-browser" + } +} diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/LICENSE b/bff/node_modules/@aws-sdk/util-user-agent-node/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/README.md b/bff/node_modules/@aws-sdk/util-user-agent-node/README.md new file mode 100644 index 0000000..9ab496c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/README.md @@ -0,0 +1,17 @@ +# @aws-sdk/util-user-agent-node + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/util-user-agent-node/latest.svg)](https://www.npmjs.com/package/@aws-sdk/util-user-agent-node) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/util-user-agent-node.svg)](https://www.npmjs.com/package/@aws-sdk/util-user-agent-node) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js new file mode 100644 index 0000000..df3a959 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js @@ -0,0 +1,185 @@ +'use strict'; + +var node_os = require('node:os'); +var node_process = require('node:process'); +var utilConfigProvider = require('@smithy/util-config-provider'); +var promises = require('node:fs/promises'); +var node_path = require('node:path'); +var middlewareUserAgent = require('@aws-sdk/middleware-user-agent'); + +const getRuntimeUserAgentPair = () => { + const runtimesToCheck = ["deno", "bun", "llrt"]; + for (const runtime of runtimesToCheck) { + if (node_process.versions[runtime]) { + return [`md/${runtime}`, node_process.versions[runtime]]; + } + } + return ["md/nodejs", node_process.versions.node]; +}; + +const getNodeModulesParentDirs = (dirname) => { + const cwd = process.cwd(); + if (!dirname) { + return [cwd]; + } + const normalizedPath = node_path.normalize(dirname); + const parts = normalizedPath.split(node_path.sep); + const nodeModulesIndex = parts.indexOf("node_modules"); + const parentDir = nodeModulesIndex !== -1 ? parts.slice(0, nodeModulesIndex).join(node_path.sep) : normalizedPath; + if (cwd === parentDir) { + return [cwd]; + } + return [parentDir, cwd]; +}; + +const SEMVER_REGEX = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*)?$/; +const getSanitizedTypeScriptVersion = (version = "") => { + const match = version.match(SEMVER_REGEX); + if (!match) { + return undefined; + } + const [major, minor, patch, prerelease] = [match[1], match[2], match[3], match[4]]; + return prerelease ? `${major}.${minor}.${patch}-${prerelease}` : `${major}.${minor}.${patch}`; +}; + +const ALLOWED_PREFIXES = ["^", "~", ">=", "<=", ">", "<"]; +const ALLOWED_DIST_TAGS = ["latest", "beta", "dev", "rc", "insiders", "next"]; +const getSanitizedDevTypeScriptVersion = (version = "") => { + if (ALLOWED_DIST_TAGS.includes(version)) { + return version; + } + const prefix = ALLOWED_PREFIXES.find((p) => version.startsWith(p)) ?? ""; + const sanitizedTypeScriptVersion = getSanitizedTypeScriptVersion(version.slice(prefix.length)); + if (!sanitizedTypeScriptVersion) { + return undefined; + } + return `${prefix}${sanitizedTypeScriptVersion}`; +}; + +let tscVersion; +const TS_PACKAGE_JSON = node_path.join("node_modules", "typescript", "package.json"); +const getTypeScriptUserAgentPair = async () => { + if (tscVersion === null) { + return undefined; + } + else if (typeof tscVersion === "string") { + return ["md/tsc", tscVersion]; + } + let isTypeScriptDetectionDisabled = false; + try { + isTypeScriptDetectionDisabled = + utilConfigProvider.booleanSelector(process.env, "AWS_SDK_JS_TYPESCRIPT_DETECTION_DISABLED", utilConfigProvider.SelectorType.ENV) || false; + } + catch { } + if (isTypeScriptDetectionDisabled) { + tscVersion = null; + return undefined; + } + const dirname = typeof __dirname !== "undefined" ? __dirname : undefined; + const nodeModulesParentDirs = getNodeModulesParentDirs(dirname); + let versionFromApp; + for (const nodeModulesParentDir of nodeModulesParentDirs) { + try { + const appPackageJsonPath = node_path.join(nodeModulesParentDir, "package.json"); + const packageJson = await promises.readFile(appPackageJsonPath, "utf-8"); + const { dependencies, devDependencies } = JSON.parse(packageJson); + const version = devDependencies?.typescript ?? dependencies?.typescript; + if (typeof version !== "string") { + continue; + } + versionFromApp = version; + break; + } + catch { + } + } + if (!versionFromApp) { + tscVersion = null; + return undefined; + } + let versionFromNodeModules; + for (const nodeModulesParentDir of nodeModulesParentDirs) { + try { + const tsPackageJsonPath = node_path.join(nodeModulesParentDir, TS_PACKAGE_JSON); + const packageJson = await promises.readFile(tsPackageJsonPath, "utf-8"); + const { version } = JSON.parse(packageJson); + const sanitizedVersion = getSanitizedTypeScriptVersion(version); + if (typeof sanitizedVersion !== "string") { + continue; + } + versionFromNodeModules = sanitizedVersion; + break; + } + catch { + } + } + if (versionFromNodeModules) { + tscVersion = versionFromNodeModules; + return ["md/tsc", tscVersion]; + } + const sanitizedVersion = getSanitizedDevTypeScriptVersion(versionFromApp); + if (typeof sanitizedVersion !== "string") { + tscVersion = null; + return undefined; + } + tscVersion = `dev_${sanitizedVersion}`; + return ["md/tsc", tscVersion]; +}; + +const crtAvailability = { + isCrtAvailable: false, +}; + +const isCrtAvailable = () => { + if (crtAvailability.isCrtAvailable) { + return ["md/crt-avail"]; + } + return null; +}; + +const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => { + const runtimeUserAgentPair = getRuntimeUserAgentPair(); + return async (config) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${node_os.platform()}`, node_os.release()], + ["lang/js"], + runtimeUserAgentPair, + ]; + const typescriptUserAgentPair = await getTypeScriptUserAgentPair(); + if (typescriptUserAgentPair) { + sections.push(typescriptUserAgentPair); + } + const crtAvailable = isCrtAvailable(); + if (crtAvailable) { + sections.push(crtAvailable); + } + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + if (node_process.env.AWS_EXECUTION_ENV) { + sections.push([`exec-env/${node_process.env.AWS_EXECUTION_ENV}`]); + } + const appId = await config?.userAgentAppId?.(); + const resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections]; + return resolvedUserAgent; + }; +}; +const defaultUserAgent = createDefaultUserAgentProvider; + +const UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; +const UA_APP_ID_INI_NAME = "sdk_ua_app_id"; +const UA_APP_ID_INI_NAME_DEPRECATED = "sdk-ua-app-id"; +const NODE_APP_ID_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[UA_APP_ID_ENV_NAME], + configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME] ?? profile[UA_APP_ID_INI_NAME_DEPRECATED], + default: middlewareUserAgent.DEFAULT_UA_APP_ID, +}; + +exports.NODE_APP_ID_CONFIG_OPTIONS = NODE_APP_ID_CONFIG_OPTIONS; +exports.UA_APP_ID_ENV_NAME = UA_APP_ID_ENV_NAME; +exports.UA_APP_ID_INI_NAME = UA_APP_ID_INI_NAME; +exports.createDefaultUserAgentProvider = createDefaultUserAgentProvider; +exports.crtAvailability = crtAvailability; +exports.defaultUserAgent = defaultUserAgent; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/crt-availability.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/crt-availability.js new file mode 100644 index 0000000..99ebeb9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/crt-availability.js @@ -0,0 +1,3 @@ +export const crtAvailability = { + isCrtAvailable: false, +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js new file mode 100644 index 0000000..2b7eb5f --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js @@ -0,0 +1,36 @@ +import { platform, release } from "node:os"; +import { env } from "node:process"; +import { getRuntimeUserAgentPair } from "./getRuntimeUserAgentPair"; +import { getTypeScriptUserAgentPair } from "./getTypeScriptUserAgentPair"; +import { isCrtAvailable } from "./is-crt-available"; +export { crtAvailability } from "./crt-availability"; +export const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => { + const runtimeUserAgentPair = getRuntimeUserAgentPair(); + return async (config) => { + const sections = [ + ["aws-sdk-js", clientVersion], + ["ua", "2.1"], + [`os/${platform()}`, release()], + ["lang/js"], + runtimeUserAgentPair, + ]; + const typescriptUserAgentPair = await getTypeScriptUserAgentPair(); + if (typescriptUserAgentPair) { + sections.push(typescriptUserAgentPair); + } + const crtAvailable = isCrtAvailable(); + if (crtAvailable) { + sections.push(crtAvailable); + } + if (serviceId) { + sections.push([`api/${serviceId}`, clientVersion]); + } + if (env.AWS_EXECUTION_ENV) { + sections.push([`exec-env/${env.AWS_EXECUTION_ENV}`]); + } + const appId = await config?.userAgentAppId?.(); + const resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections]; + return resolvedUserAgent; + }; +}; +export const defaultUserAgent = createDefaultUserAgentProvider; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getNodeModulesParentDirs.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getNodeModulesParentDirs.js new file mode 100644 index 0000000..eca7e63 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getNodeModulesParentDirs.js @@ -0,0 +1,15 @@ +import { normalize, sep } from "node:path"; +export const getNodeModulesParentDirs = (dirname) => { + const cwd = process.cwd(); + if (!dirname) { + return [cwd]; + } + const normalizedPath = normalize(dirname); + const parts = normalizedPath.split(sep); + const nodeModulesIndex = parts.indexOf("node_modules"); + const parentDir = nodeModulesIndex !== -1 ? parts.slice(0, nodeModulesIndex).join(sep) : normalizedPath; + if (cwd === parentDir) { + return [cwd]; + } + return [parentDir, cwd]; +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getRuntimeUserAgentPair.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getRuntimeUserAgentPair.js new file mode 100644 index 0000000..3d96cd9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getRuntimeUserAgentPair.js @@ -0,0 +1,10 @@ +import { versions } from "node:process"; +export const getRuntimeUserAgentPair = () => { + const runtimesToCheck = ["deno", "bun", "llrt"]; + for (const runtime of runtimesToCheck) { + if (versions[runtime]) { + return [`md/${runtime}`, versions[runtime]]; + } + } + return ["md/nodejs", versions.node]; +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedDevTypeScriptVersion.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedDevTypeScriptVersion.js new file mode 100644 index 0000000..9ca3f3a --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedDevTypeScriptVersion.js @@ -0,0 +1,14 @@ +import { getSanitizedTypeScriptVersion } from "./getSanitizedTypeScriptVersion"; +const ALLOWED_PREFIXES = ["^", "~", ">=", "<=", ">", "<"]; +const ALLOWED_DIST_TAGS = ["latest", "beta", "dev", "rc", "insiders", "next"]; +export const getSanitizedDevTypeScriptVersion = (version = "") => { + if (ALLOWED_DIST_TAGS.includes(version)) { + return version; + } + const prefix = ALLOWED_PREFIXES.find((p) => version.startsWith(p)) ?? ""; + const sanitizedTypeScriptVersion = getSanitizedTypeScriptVersion(version.slice(prefix.length)); + if (!sanitizedTypeScriptVersion) { + return undefined; + } + return `${prefix}${sanitizedTypeScriptVersion}`; +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedTypeScriptVersion.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedTypeScriptVersion.js new file mode 100644 index 0000000..d93d097 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getSanitizedTypeScriptVersion.js @@ -0,0 +1,9 @@ +const SEMVER_REGEX = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*)?$/; +export const getSanitizedTypeScriptVersion = (version = "") => { + const match = version.match(SEMVER_REGEX); + if (!match) { + return undefined; + } + const [major, minor, patch, prerelease] = [match[1], match[2], match[3], match[4]]; + return prerelease ? `${major}.${minor}.${patch}-${prerelease}` : `${major}.${minor}.${patch}`; +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js new file mode 100644 index 0000000..48d6c67 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/getTypeScriptUserAgentPair.js @@ -0,0 +1,75 @@ +import { booleanSelector, SelectorType } from "@smithy/util-config-provider"; +import { readFile } from "node:fs/promises"; +import { join } from "node:path"; +import { getNodeModulesParentDirs } from "./getNodeModulesParentDirs"; +import { getSanitizedDevTypeScriptVersion } from "./getSanitizedDevTypeScriptVersion"; +import { getSanitizedTypeScriptVersion } from "./getSanitizedTypeScriptVersion"; +let tscVersion; +const TS_PACKAGE_JSON = join("node_modules", "typescript", "package.json"); +export const getTypeScriptUserAgentPair = async () => { + if (tscVersion === null) { + return undefined; + } + else if (typeof tscVersion === "string") { + return ["md/tsc", tscVersion]; + } + let isTypeScriptDetectionDisabled = false; + try { + isTypeScriptDetectionDisabled = + booleanSelector(process.env, "AWS_SDK_JS_TYPESCRIPT_DETECTION_DISABLED", SelectorType.ENV) || false; + } + catch { } + if (isTypeScriptDetectionDisabled) { + tscVersion = null; + return undefined; + } + const dirname = typeof __dirname !== "undefined" ? __dirname : undefined; + const nodeModulesParentDirs = getNodeModulesParentDirs(dirname); + let versionFromApp; + for (const nodeModulesParentDir of nodeModulesParentDirs) { + try { + const appPackageJsonPath = join(nodeModulesParentDir, "package.json"); + const packageJson = await readFile(appPackageJsonPath, "utf-8"); + const { dependencies, devDependencies } = JSON.parse(packageJson); + const version = devDependencies?.typescript ?? dependencies?.typescript; + if (typeof version !== "string") { + continue; + } + versionFromApp = version; + break; + } + catch { + } + } + if (!versionFromApp) { + tscVersion = null; + return undefined; + } + let versionFromNodeModules; + for (const nodeModulesParentDir of nodeModulesParentDirs) { + try { + const tsPackageJsonPath = join(nodeModulesParentDir, TS_PACKAGE_JSON); + const packageJson = await readFile(tsPackageJsonPath, "utf-8"); + const { version } = JSON.parse(packageJson); + const sanitizedVersion = getSanitizedTypeScriptVersion(version); + if (typeof sanitizedVersion !== "string") { + continue; + } + versionFromNodeModules = sanitizedVersion; + break; + } + catch { + } + } + if (versionFromNodeModules) { + tscVersion = versionFromNodeModules; + return ["md/tsc", tscVersion]; + } + const sanitizedVersion = getSanitizedDevTypeScriptVersion(versionFromApp); + if (typeof sanitizedVersion !== "string") { + tscVersion = null; + return undefined; + } + tscVersion = `dev_${sanitizedVersion}`; + return ["md/tsc", tscVersion]; +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js new file mode 100644 index 0000000..cbf37f2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./defaultUserAgent"; +export * from "./nodeAppIdConfigOptions"; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/is-crt-available.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/is-crt-available.js new file mode 100644 index 0000000..e9f8b0d --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/is-crt-available.js @@ -0,0 +1,7 @@ +import { crtAvailability } from "./crt-availability"; +export const isCrtAvailable = () => { + if (crtAvailability.isCrtAvailable) { + return ["md/crt-avail"]; + } + return null; +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js new file mode 100644 index 0000000..f270db9 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js @@ -0,0 +1,9 @@ +import { DEFAULT_UA_APP_ID } from "@aws-sdk/middleware-user-agent"; +export const UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; +export const UA_APP_ID_INI_NAME = "sdk_ua_app_id"; +const UA_APP_ID_INI_NAME_DEPRECATED = "sdk-ua-app-id"; +export const NODE_APP_ID_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[UA_APP_ID_ENV_NAME], + configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME] ?? profile[UA_APP_ID_INI_NAME_DEPRECATED], + default: DEFAULT_UA_APP_ID, +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/crt-availability.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/crt-availability.d.ts new file mode 100644 index 0000000..0cbb660 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/crt-availability.d.ts @@ -0,0 +1,8 @@ +/** + * If \@aws-sdk/signature-v4-crt is installed and loaded, it will register + * this value to true. + * @internal + */ +export declare const crtAvailability: { + isCrtAvailable: boolean; +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts new file mode 100644 index 0000000..9c07c14 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts @@ -0,0 +1,28 @@ +import type { Provider, UserAgent } from "@smithy/types"; +/** + * @internal + */ +export { crtAvailability } from "./crt-availability"; +/** + * @internal + */ +export interface DefaultUserAgentOptions { + serviceId?: string; + clientVersion: string; +} +/** + * @internal + */ +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +/** + * Collect metrics from runtime to put into user agent. + * @internal + */ +export declare const createDefaultUserAgentProvider: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => (config?: PreviouslyResolved) => Promise; +/** + * @internal + * @deprecated use createDefaultUserAgentProvider + */ +export declare const defaultUserAgent: ({ serviceId, clientVersion }: DefaultUserAgentOptions) => (config?: PreviouslyResolved) => Promise; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getNodeModulesParentDirs.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getNodeModulesParentDirs.d.ts new file mode 100644 index 0000000..ab163e0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getNodeModulesParentDirs.d.ts @@ -0,0 +1,10 @@ +/** + * Returns candidate paths to the node_modules parent directories based on current + * working directory and, if provided, from the given directory. + * + * @param dirname - Optional directory path to derive an additional candidate path from. + * @returns An array of unique candidate paths to the TypeScript package.json file. + * + * @internal + */ +export declare const getNodeModulesParentDirs: (dirname?: string) => string[]; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getRuntimeUserAgentPair.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getRuntimeUserAgentPair.d.ts new file mode 100644 index 0000000..d5edbbe --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getRuntimeUserAgentPair.d.ts @@ -0,0 +1,6 @@ +import type { UserAgentPair } from "@smithy/types"; +/** + * Returns the runtime name and version as a user agent pair. + * @internal + */ +export declare const getRuntimeUserAgentPair: () => UserAgentPair; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedDevTypeScriptVersion.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedDevTypeScriptVersion.d.ts new file mode 100644 index 0000000..0046e8a --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedDevTypeScriptVersion.d.ts @@ -0,0 +1,8 @@ +/** + * Sanitizes a TypeScript version string for user-agent reporting. + * Handles dist tags (e.g., "latest", "beta"), version prefixes (e.g., "^", "~"), + * and semver strings. Returns undefined if the version is invalid. + * + * @internal + */ +export declare const getSanitizedDevTypeScriptVersion: (version?: string) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedTypeScriptVersion.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedTypeScriptVersion.d.ts new file mode 100644 index 0000000..b506b60 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getSanitizedTypeScriptVersion.d.ts @@ -0,0 +1,8 @@ +/** + * Validates a semver string (with optional pre-release and/or build metadata). + * If valid, returns the version string with build metadata stripped. + * Returns undefined if the string is not a valid semver. + * + * @internal + */ +export declare const getSanitizedTypeScriptVersion: (version?: string) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getTypeScriptUserAgentPair.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getTypeScriptUserAgentPair.d.ts new file mode 100644 index 0000000..c539598 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/getTypeScriptUserAgentPair.d.ts @@ -0,0 +1,6 @@ +import type { UserAgentPair } from "@smithy/types"; +/** + * Returns the tyescript name and version as a user agent pair, if present. + * @internal + */ +export declare const getTypeScriptUserAgentPair: () => Promise; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts new file mode 100644 index 0000000..cbf37f2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./defaultUserAgent"; +export * from "./nodeAppIdConfigOptions"; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/is-crt-available.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/is-crt-available.d.ts new file mode 100644 index 0000000..e9b010e --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/is-crt-available.d.ts @@ -0,0 +1,5 @@ +import type { UserAgentPair } from "@smithy/types"; +/** + * @internal + */ +export declare const isCrtAvailable: () => UserAgentPair | null; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts new file mode 100644 index 0000000..35201df --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts @@ -0,0 +1,13 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; +/** + * @internal + */ +export declare const UA_APP_ID_INI_NAME = "sdk_ua_app_id"; +/** + * @internal + */ +export declare const NODE_APP_ID_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/crt-availability.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/crt-availability.d.ts new file mode 100644 index 0000000..9dccfb0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/crt-availability.d.ts @@ -0,0 +1,3 @@ +export declare const crtAvailability: { + isCrtAvailable: boolean; +}; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts new file mode 100644 index 0000000..6e4884f --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts @@ -0,0 +1,21 @@ +import { Provider, UserAgent } from "@smithy/types"; +export { crtAvailability } from "./crt-availability"; +export interface DefaultUserAgentOptions { + serviceId?: string; + clientVersion: string; +} +export interface PreviouslyResolved { + userAgentAppId: Provider; +} +export declare const createDefaultUserAgentProvider: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; +export declare const defaultUserAgent: ({ + serviceId, + clientVersion, +}: DefaultUserAgentOptions) => ( + config?: PreviouslyResolved +) => Promise; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getNodeModulesParentDirs.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getNodeModulesParentDirs.d.ts new file mode 100644 index 0000000..938df90 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getNodeModulesParentDirs.d.ts @@ -0,0 +1 @@ +export declare const getNodeModulesParentDirs: (dirname?: string) => string[]; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getRuntimeUserAgentPair.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getRuntimeUserAgentPair.d.ts new file mode 100644 index 0000000..8f2e847 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getRuntimeUserAgentPair.d.ts @@ -0,0 +1,2 @@ +import { UserAgentPair } from "@smithy/types"; +export declare const getRuntimeUserAgentPair: () => UserAgentPair; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedDevTypeScriptVersion.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedDevTypeScriptVersion.d.ts new file mode 100644 index 0000000..c16a7aa --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedDevTypeScriptVersion.d.ts @@ -0,0 +1,3 @@ +export declare const getSanitizedDevTypeScriptVersion: ( + version?: string +) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedTypeScriptVersion.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedTypeScriptVersion.d.ts new file mode 100644 index 0000000..0f5dbdc --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getSanitizedTypeScriptVersion.d.ts @@ -0,0 +1,3 @@ +export declare const getSanitizedTypeScriptVersion: ( + version?: string +) => string | undefined; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getTypeScriptUserAgentPair.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getTypeScriptUserAgentPair.d.ts new file mode 100644 index 0000000..47eced3 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/getTypeScriptUserAgentPair.d.ts @@ -0,0 +1,4 @@ +import { UserAgentPair } from "@smithy/types"; +export declare const getTypeScriptUserAgentPair: () => Promise< + UserAgentPair | undefined +>; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..cbf37f2 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./defaultUserAgent"; +export * from "./nodeAppIdConfigOptions"; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/is-crt-available.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/is-crt-available.d.ts new file mode 100644 index 0000000..d28355c --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/is-crt-available.d.ts @@ -0,0 +1,2 @@ +import { UserAgentPair } from "@smithy/types"; +export declare const isCrtAvailable: () => UserAgentPair | null; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts new file mode 100644 index 0000000..b9fa123 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts @@ -0,0 +1,6 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const UA_APP_ID_ENV_NAME = "AWS_SDK_UA_APP_ID"; +export declare const UA_APP_ID_INI_NAME = "sdk_ua_app_id"; +export declare const NODE_APP_ID_CONFIG_OPTIONS: LoadedConfigSelectors< + string | undefined +>; diff --git a/bff/node_modules/@aws-sdk/util-user-agent-node/package.json b/bff/node_modules/@aws-sdk/util-user-agent-node/package.json new file mode 100644 index 0000000..d7af7c0 --- /dev/null +++ b/bff/node_modules/@aws-sdk/util-user-agent-node/package.json @@ -0,0 +1,69 @@ +{ + "name": "@aws-sdk/util-user-agent-node", + "version": "3.973.14", + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline util-user-agent-node", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "^3.972.28", + "@aws-sdk/types": "^3.973.6", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^20.14.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + }, + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/util-user-agent-node", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/util-user-agent-node" + } +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/LICENSE b/bff/node_modules/@aws-sdk/xml-builder/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@aws-sdk/xml-builder/README.md b/bff/node_modules/@aws-sdk/xml-builder/README.md new file mode 100644 index 0000000..b9a58dc --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/README.md @@ -0,0 +1,17 @@ +# @aws-sdk/xml-builder + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/xml-builder/latest.svg)](https://www.npmjs.com/package/@aws-sdk/xml-builder) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/xml-builder.svg)](https://www.npmjs.com/package/@aws-sdk/xml-builder) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js b/bff/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js new file mode 100644 index 0000000..462f5fc --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js @@ -0,0 +1,131 @@ +'use strict'; + +var xmlParser = require('./xml-parser'); + +const ATTR_ESCAPE_RE = /[&<>"]/g; +const ATTR_ESCAPE_MAP = { + "&": "&", + "<": "<", + ">": ">", + '"': """, +}; +function escapeAttribute(value) { + return value.replace(ATTR_ESCAPE_RE, (ch) => ATTR_ESCAPE_MAP[ch]); +} + +const ELEMENT_ESCAPE_RE = /[&"'<>\r\n\u0085\u2028]/g; +const ELEMENT_ESCAPE_MAP = { + "&": "&", + '"': """, + "'": "'", + "<": "<", + ">": ">", + "\r": " ", + "\n": " ", + "\u0085": "…", + "\u2028": "
", +}; +function escapeElement(value) { + return value.replace(ELEMENT_ESCAPE_RE, (ch) => ELEMENT_ESCAPE_MAP[ch]); +} + +class XmlText { + value; + constructor(value) { + this.value = value; + } + toString() { + return escapeElement("" + this.value); + } +} + +class XmlNode { + name; + children; + attributes = {}; + static of(name, childText, withName) { + const node = new XmlNode(name); + if (childText !== undefined) { + node.addChildNode(new XmlText(childText)); + } + if (withName !== undefined) { + node.withName(withName); + } + return node; + } + constructor(name, children = []) { + this.name = name; + this.children = children; + } + withName(name) { + this.name = name; + return this; + } + addAttribute(name, value) { + this.attributes[name] = value; + return this; + } + addChildNode(child) { + this.children.push(child); + return this; + } + removeAttribute(name) { + delete this.attributes[name]; + return this; + } + n(name) { + this.name = name; + return this; + } + c(child) { + this.children.push(child); + return this; + } + a(name, value) { + if (value != null) { + this.attributes[name] = value; + } + return this; + } + cc(input, field, withName = field) { + if (input[field] != null) { + const node = XmlNode.of(field, input[field]).withName(withName); + this.c(node); + } + } + l(input, listName, memberName, valueProvider) { + if (input[listName] != null) { + const nodes = valueProvider(); + nodes.map((node) => { + node.withName(memberName); + this.c(node); + }); + } + } + lc(input, listName, memberName, valueProvider) { + if (input[listName] != null) { + const nodes = valueProvider(); + const containerNode = new XmlNode(memberName); + nodes.map((node) => { + containerNode.c(node); + }); + this.c(containerNode); + } + } + toString() { + const hasChildren = Boolean(this.children.length); + let xmlText = `<${this.name}`; + const attributes = this.attributes; + for (const attributeName of Object.keys(attributes)) { + const attribute = attributes[attributeName]; + if (attribute != null) { + xmlText += ` ${attributeName}="${escapeAttribute("" + attribute)}"`; + } + } + return (xmlText += !hasChildren ? "/>" : `>${this.children.map((c) => c.toString()).join("")}`); + } +} + +exports.parseXML = xmlParser.parseXML; +exports.XmlNode = XmlNode; +exports.XmlText = XmlText; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js b/bff/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js new file mode 100644 index 0000000..31499ae --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parseXML = parseXML; +const fast_xml_parser_1 = require("fast-xml-parser"); +const parser = new fast_xml_parser_1.XMLParser({ + attributeNamePrefix: "", + processEntities: { + enabled: true, + maxTotalExpansions: Infinity, + }, + htmlEntities: true, + ignoreAttributes: false, + ignoreDeclaration: true, + parseTagValue: false, + trimValues: false, + tagValueProcessor: (_, val) => (val.trim() === "" && val.includes("\n") ? "" : undefined), + maxNestedTags: Infinity, +}); +parser.addEntity("#xD", "\r"); +parser.addEntity("#10", "\n"); +function parseXML(xmlString) { + return parser.parse(xmlString, true); +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-es/XmlNode.js b/bff/node_modules/@aws-sdk/xml-builder/dist-es/XmlNode.js new file mode 100644 index 0000000..4c8d997 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-es/XmlNode.js @@ -0,0 +1,88 @@ +import { escapeAttribute } from "./escape-attribute"; +import { XmlText } from "./XmlText"; +export class XmlNode { + name; + children; + attributes = {}; + static of(name, childText, withName) { + const node = new XmlNode(name); + if (childText !== undefined) { + node.addChildNode(new XmlText(childText)); + } + if (withName !== undefined) { + node.withName(withName); + } + return node; + } + constructor(name, children = []) { + this.name = name; + this.children = children; + } + withName(name) { + this.name = name; + return this; + } + addAttribute(name, value) { + this.attributes[name] = value; + return this; + } + addChildNode(child) { + this.children.push(child); + return this; + } + removeAttribute(name) { + delete this.attributes[name]; + return this; + } + n(name) { + this.name = name; + return this; + } + c(child) { + this.children.push(child); + return this; + } + a(name, value) { + if (value != null) { + this.attributes[name] = value; + } + return this; + } + cc(input, field, withName = field) { + if (input[field] != null) { + const node = XmlNode.of(field, input[field]).withName(withName); + this.c(node); + } + } + l(input, listName, memberName, valueProvider) { + if (input[listName] != null) { + const nodes = valueProvider(); + nodes.map((node) => { + node.withName(memberName); + this.c(node); + }); + } + } + lc(input, listName, memberName, valueProvider) { + if (input[listName] != null) { + const nodes = valueProvider(); + const containerNode = new XmlNode(memberName); + nodes.map((node) => { + containerNode.c(node); + }); + this.c(containerNode); + } + } + toString() { + const hasChildren = Boolean(this.children.length); + let xmlText = `<${this.name}`; + const attributes = this.attributes; + for (const attributeName of Object.keys(attributes)) { + const attribute = attributes[attributeName]; + if (attribute != null) { + xmlText += ` ${attributeName}="${escapeAttribute("" + attribute)}"`; + } + } + return (xmlText += !hasChildren ? "/>" : `>${this.children.map((c) => c.toString()).join("")}`); + } +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-es/XmlText.js b/bff/node_modules/@aws-sdk/xml-builder/dist-es/XmlText.js new file mode 100644 index 0000000..e019b3f --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-es/XmlText.js @@ -0,0 +1,10 @@ +import { escapeElement } from "./escape-element"; +export class XmlText { + value; + constructor(value) { + this.value = value; + } + toString() { + return escapeElement("" + this.value); + } +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-es/escape-attribute.js b/bff/node_modules/@aws-sdk/xml-builder/dist-es/escape-attribute.js new file mode 100644 index 0000000..94cf076 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-es/escape-attribute.js @@ -0,0 +1,10 @@ +const ATTR_ESCAPE_RE = /[&<>"]/g; +const ATTR_ESCAPE_MAP = { + "&": "&", + "<": "<", + ">": ">", + '"': """, +}; +export function escapeAttribute(value) { + return value.replace(ATTR_ESCAPE_RE, (ch) => ATTR_ESCAPE_MAP[ch]); +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-es/escape-element.js b/bff/node_modules/@aws-sdk/xml-builder/dist-es/escape-element.js new file mode 100644 index 0000000..139ff9c --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-es/escape-element.js @@ -0,0 +1,15 @@ +const ELEMENT_ESCAPE_RE = /[&"'<>\r\n\u0085\u2028]/g; +const ELEMENT_ESCAPE_MAP = { + "&": "&", + '"': """, + "'": "'", + "<": "<", + ">": ">", + "\r": " ", + "\n": " ", + "\u0085": "…", + "\u2028": "
", +}; +export function escapeElement(value) { + return value.replace(ELEMENT_ESCAPE_RE, (ch) => ELEMENT_ESCAPE_MAP[ch]); +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-es/index.js b/bff/node_modules/@aws-sdk/xml-builder/dist-es/index.js new file mode 100644 index 0000000..b90f969 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./XmlNode"; +export * from "./XmlText"; +export { parseXML } from "./xml-parser"; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-es/stringable.js b/bff/node_modules/@aws-sdk/xml-builder/dist-es/stringable.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-es/stringable.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js b/bff/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js new file mode 100644 index 0000000..946982d --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js @@ -0,0 +1,57 @@ +let parser; +export function parseXML(xmlString) { + if (!parser) { + parser = new DOMParser(); + } + const xmlDocument = parser.parseFromString(xmlString, "application/xml"); + if (xmlDocument.getElementsByTagName("parsererror").length > 0) { + throw new Error("DOMParser XML parsing error."); + } + const xmlToObj = (node) => { + if (node.nodeType === Node.TEXT_NODE) { + if (node.textContent?.trim()) { + return node.textContent; + } + } + if (node.nodeType === Node.ELEMENT_NODE) { + const element = node; + if (element.attributes.length === 0 && element.childNodes.length === 0) { + return ""; + } + const obj = {}; + const attributes = Array.from(element.attributes); + for (const attr of attributes) { + obj[`${attr.name}`] = attr.value; + } + const childNodes = Array.from(element.childNodes); + for (const child of childNodes) { + const childResult = xmlToObj(child); + if (childResult != null) { + const childName = child.nodeName; + if (childNodes.length === 1 && attributes.length === 0 && childName === "#text") { + return childResult; + } + if (obj[childName]) { + if (Array.isArray(obj[childName])) { + obj[childName].push(childResult); + } + else { + obj[childName] = [obj[childName], childResult]; + } + } + else { + obj[childName] = childResult; + } + } + else if (childNodes.length === 1 && attributes.length === 0) { + return element.textContent; + } + } + return obj; + } + return null; + }; + return { + [xmlDocument.documentElement.nodeName]: xmlToObj(xmlDocument.documentElement), + }; +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js b/bff/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js new file mode 100644 index 0000000..9bd0f4b --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js @@ -0,0 +1,20 @@ +import { XMLParser } from "fast-xml-parser"; +const parser = new XMLParser({ + attributeNamePrefix: "", + processEntities: { + enabled: true, + maxTotalExpansions: Infinity, + }, + htmlEntities: true, + ignoreAttributes: false, + ignoreDeclaration: true, + parseTagValue: false, + trimValues: false, + tagValueProcessor: (_, val) => (val.trim() === "" && val.includes("\n") ? "" : undefined), + maxNestedTags: Infinity, +}); +parser.addEntity("#xD", "\r"); +parser.addEntity("#10", "\n"); +export function parseXML(xmlString) { + return parser.parse(xmlString, true); +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/XmlNode.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/XmlNode.d.ts new file mode 100644 index 0000000..1869b3a --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/XmlNode.d.ts @@ -0,0 +1,49 @@ +import type { Stringable } from "./stringable"; +/** + * @internal + * + * Represents an XML node. + */ +export declare class XmlNode { + private name; + readonly children: Stringable[]; + private attributes; + static of(name: string, childText?: string, withName?: string): XmlNode; + constructor(name: string, children?: Stringable[]); + withName(name: string): XmlNode; + addAttribute(name: string, value: any): XmlNode; + addChildNode(child: Stringable): XmlNode; + removeAttribute(name: string): XmlNode; + /** + * @internal + * Alias of {@link XmlNode#withName(string)} for codegen brevity. + */ + n(name: string): XmlNode; + /** + * @internal + * Alias of {@link XmlNode#addChildNode(string)} for codegen brevity. + */ + c(child: Stringable): XmlNode; + /** + * @internal + * Checked version of {@link XmlNode#addAttribute(string)} for codegen brevity. + */ + a(name: string, value: any): XmlNode; + /** + * Create a child node. + * Used in serialization of string fields. + * @internal + */ + cc(input: any, field: string, withName?: string): void; + /** + * Creates list child nodes. + * @internal + */ + l(input: any, listName: string, memberName: string, valueProvider: Function): void; + /** + * Creates list child nodes with container. + * @internal + */ + lc(input: any, listName: string, memberName: string, valueProvider: Function): void; + toString(): string; +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/XmlText.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/XmlText.d.ts new file mode 100644 index 0000000..8084567 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/XmlText.d.ts @@ -0,0 +1,11 @@ +import type { Stringable } from "./stringable"; +/** + * @internal + * + * Represents an XML text value. + */ +export declare class XmlText implements Stringable { + private value; + constructor(value: string); + toString(): string; +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/escape-attribute.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/escape-attribute.d.ts new file mode 100644 index 0000000..4a08e7f --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/escape-attribute.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + * + * Escapes characters that can not be in an XML attribute. + */ +export declare function escapeAttribute(value: string): string; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/escape-element.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/escape-element.d.ts new file mode 100644 index 0000000..d43e10e --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/escape-element.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + * + * Escapes characters that can not be in an XML element. + */ +export declare function escapeElement(value: string): string; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/index.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/index.d.ts new file mode 100644 index 0000000..dafb64b --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./XmlNode"; +/** + * @internal + */ +export * from "./XmlText"; +/** + * @internal + */ +export { parseXML } from "./xml-parser"; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/stringable.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/stringable.d.ts new file mode 100644 index 0000000..08f42d1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/stringable.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export interface Stringable { + toString(): string; +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlNode.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlNode.d.ts new file mode 100644 index 0000000..164d6c1 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlNode.d.ts @@ -0,0 +1,29 @@ +import { Stringable } from "./stringable"; +export declare class XmlNode { + private name; + readonly children: Stringable[]; + private attributes; + static of(name: string, childText?: string, withName?: string): XmlNode; + constructor(name: string, children?: Stringable[]); + withName(name: string): XmlNode; + addAttribute(name: string, value: any): XmlNode; + addChildNode(child: Stringable): XmlNode; + removeAttribute(name: string): XmlNode; + n(name: string): XmlNode; + c(child: Stringable): XmlNode; + a(name: string, value: any): XmlNode; + cc(input: any, field: string, withName?: string): void; + l( + input: any, + listName: string, + memberName: string, + valueProvider: Function + ): void; + lc( + input: any, + listName: string, + memberName: string, + valueProvider: Function + ): void; + toString(): string; +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlText.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlText.d.ts new file mode 100644 index 0000000..f53373c --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlText.d.ts @@ -0,0 +1,6 @@ +import { Stringable } from "./stringable"; +export declare class XmlText implements Stringable { + private value; + constructor(value: string); + toString(): string; +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-attribute.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-attribute.d.ts new file mode 100644 index 0000000..f9f9a95 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-attribute.d.ts @@ -0,0 +1 @@ +export declare function escapeAttribute(value: string): string; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-element.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-element.d.ts new file mode 100644 index 0000000..b09ba89 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-element.d.ts @@ -0,0 +1 @@ +export declare function escapeElement(value: string): string; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/index.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..b90f969 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./XmlNode"; +export * from "./XmlText"; +export { parseXML } from "./xml-parser"; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/stringable.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/stringable.d.ts new file mode 100644 index 0000000..ba9b1f7 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/stringable.d.ts @@ -0,0 +1,3 @@ +export interface Stringable { + toString(): string; +} diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.browser.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.browser.d.ts new file mode 100644 index 0000000..415a5ac --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.browser.d.ts @@ -0,0 +1 @@ +export declare function parseXML(xmlString: string): any; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts new file mode 100644 index 0000000..415a5ac --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts @@ -0,0 +1 @@ +export declare function parseXML(xmlString: string): any; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.browser.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.browser.d.ts new file mode 100644 index 0000000..31b86da --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.browser.d.ts @@ -0,0 +1,9 @@ +/** + * Cases where this differs from fast-xml-parser: + * + * 1. Mixing text with nested tags (does not occur in AWS REST XML). + * hello, world, how are you? + * + * @internal + */ +export declare function parseXML(xmlString: string): any; diff --git a/bff/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts b/bff/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts new file mode 100644 index 0000000..8516953 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function parseXML(xmlString: string): any; diff --git a/bff/node_modules/@aws-sdk/xml-builder/package.json b/bff/node_modules/@aws-sdk/xml-builder/package.json new file mode 100644 index 0000000..11abe13 --- /dev/null +++ b/bff/node_modules/@aws-sdk/xml-builder/package.json @@ -0,0 +1,63 @@ +{ + "name": "@aws-sdk/xml-builder", + "version": "3.972.16", + "description": "XML utilities for the AWS SDK", + "dependencies": { + "@smithy/types": "^4.13.1", + "fast-xml-parser": "5.5.8", + "tslib": "^2.6.2" + }, + "scripts": { + "build": "concurrently 'yarn:build:types' 'yarn:build:es' && yarn build:cjs", + "build:cjs": "node ../../scripts/compilation/inline xml-builder", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "yarn g:turbo run build -F=\"$npm_package_name\"", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=20.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/xml-parser": "./dist-es/xml-parser.browser" + }, + "react-native": { + "./dist-es/xml-parser": "./dist-es/xml-parser", + "./dist-cjs/xml-parser": "./dist-cjs/xml-parser" + }, + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages-internal/xml-builder", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages-internal/xml-builder" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typescript": "~5.8.3" + } +} diff --git a/bff/node_modules/@aws/lambda-invoke-store/LICENSE b/bff/node_modules/@aws/lambda-invoke-store/LICENSE new file mode 100644 index 0000000..67db858 --- /dev/null +++ b/bff/node_modules/@aws/lambda-invoke-store/LICENSE @@ -0,0 +1,175 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. diff --git a/bff/node_modules/@aws/lambda-invoke-store/README.md b/bff/node_modules/@aws/lambda-invoke-store/README.md new file mode 100644 index 0000000..5b91122 --- /dev/null +++ b/bff/node_modules/@aws/lambda-invoke-store/README.md @@ -0,0 +1,198 @@ +# Node.js Invoke Store for AWS Lambda + +`@aws/lambda-invoke-store` provides a generic, per-invocation context store for +AWS Lambda Node.js Runtime Environment. It enables storing and retrieving data +within the scope of a single Lambda invocation, with proper isolation between +concurrent executions. + +## Features + +- **Invocation Isolation**: Safely store and retrieve data within a single Lambda invocation. +- **Protected Lambda Context**: Built-in protection for Lambda execution metadata (requestId, [traceId](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces)) +- **Custom Data Storage**: Store any custom data within the invocation context +- **Async/Await Support**: Full support for asynchronous operations with context preservation +- **Type Safety**: Complete TypeScript type definitions +- **Singleton Pattern**: Ensures a single shared instance across all imports +- **Global Namespace Integration**: Integrates with the Lambda runtime global namespace + +## Installation + +```bash +npm install @aws/lambda-invoke-store +``` + +## Quick Start + +> **Note**: In the AWS Lambda environment, the Runtime Interface Client (RIC) automatically initializes the InvokeStore context at the beginning of each invocation. Lambda function developers typically don't need to call `InvokeStore.run()` directly. + +```typescript +import { InvokeStore } from "@aws/lambda-invoke-store"; + +// Lambda handler with invoke store +export const handler = async (event, context) => { + // The RIC has already initialized the InvokeStore with requestId and X-Ray traceId + + // Access Lambda context data + const invokeStore = await InvokeStore.getInstanceAsync(); + console.log(`Processing request: ${invokeStore.getRequestId()}`); + + // Store custom data + invokeStore.set("userId", event.userId); + + // Data persists across async operations + await processData(event); + + // Retrieve custom data + const userId = invokeStore.get("userId"); + + return { + requestId: invokeStore.getRequestId(), + userId, + }; +}; + +// Context is preserved in async operations +async function processData(event) { + // Still has access to the same invoke context + const invokeStore = await InvokeStore.getInstanceAsync(); + console.log(`Processing in same context: ${invokeStore.getRequestId()}`); + + // Can set additional data + invokeStore.set("processedData", { result: "success" }); +} +``` + +## API Reference + +### InvokeStore.getInstanceAsync() +First, get an instance of the InvokeStore: +```typescript +const invokeStore = await InvokeStore.getInstanceAsync(); +``` + +### invokeStore.getContext() + +Returns the complete current context or `undefined` if outside a context. + +```typescript +const context = invokeStore.getContext(); +``` + +### invokeStore.get(key) + +Gets a value from the current context. + +```typescript +const requestId = invokeStore.get(InvokeStoreBase.PROTECTED_KEYS.REQUEST_ID); +const customValue = invokeStore.get("customKey"); +``` + +### invokeStore.set(key, value) + +Sets a custom value in the current context. Protected Lambda fields cannot be modified. + +```typescript +invokeStore.set("userId", "user-123"); +invokeStore.set("timestamp", Date.now()); + +// This will throw an error: +// invokeStore.set(InvokeStoreBase.PROTECTED_KEYS.REQUEST_ID, 'new-id'); +``` + +### invokeStore.getRequestId() + +Convenience method to get the current request ID. + +```typescript +const requestId = invokeStore.getRequestId(); // Returns '-' if outside context +``` + +### invokeStore.getTenantId() + +Convenience method to get the tenant ID. + +```typescript +const requestId = invokeStore.getTenantId(); +``` + +### invokeStore.getXRayTraceId() + +Convenience method to get the current [X-Ray trace ID](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces). This ID is used for distributed tracing across AWS services. + +```typescript +const traceId = invokeStore.getXRayTraceId(); // Returns undefined if not set or outside context +``` + +### invokeStore.hasContext() + +Checks if code is currently running within an invoke context. + +```typescript +if (invokeStore.hasContext()) { + // We're inside an invoke context +} +``` + +### invokeStore.run(context, fn) + +> **Note**: This method is primarily used by the Lambda Runtime Interface Client (RIC) to initialize the context for each invocation. Lambda function developers typically don't need to call this method directly. + +Runs a function within an invoke context. + +```typescript +invokeStore.run( + { + [InvokeStoreBase.PROTECTED_KEYS.REQUEST_ID]: "request-123", + [InvokeStoreBase.PROTECTED_KEYS.X_RAY_TRACE_ID]: "trace-456", // Optional X-Ray trace ID + customField: "value", // Optional custom fields + }, + () => { + // Function to execute within context + } +); +``` + +## Integration with AWS Lambda Runtime + +The `@aws/lambda-invoke-store` package is designed to be integrated with the AWS Lambda Node.js Runtime Interface Client (RIC). The RIC automatically: + +1. Initializes the InvokeStore context at the beginning of each Lambda invocation +2. Sets the `requestId` and [X-Ray `traceId`](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-traces) in the context +3. Ensures proper context isolation between concurrent invocations +4. Cleans up the context after the invocation completes + +Lambda function developers can focus on using the context without worrying about initialization or cleanup. + +## Global Namespace and Singleton Pattern + +The InvokeStore uses a singleton pattern to ensure that all imports of the module use the same instance, which is critical for maintaining proper context isolation across different parts of your application. + +### Global Namespace Integration + +The InvokeStore integrates with the Lambda runtime's global namespace: + +```typescript +// The InvokeStore is available globally +const globalInstance = globalThis.awslambda.InvokeStore; +``` + +This enables seamless integration between the Lambda Runtime Interface Client (RIC), AWS SDK, and your function code, ensuring they all share the same context. + +### Environment Variable Opt-Out + +If you prefer not to modify the global namespace, you can opt out by setting the environment variable: + +```bash +# Disable global namespace modification +AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA=1 +``` + +When this environment variable is set, the InvokeStore will still function correctly, but it won't be stored in the global namespace. + +## Security + +See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information. + +## License + +This project is licensed under the Apache-2.0 License. diff --git a/bff/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js b/bff/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js new file mode 100644 index 0000000..deeea9e --- /dev/null +++ b/bff/node_modules/@aws/lambda-invoke-store/dist-cjs/invoke-store.js @@ -0,0 +1,119 @@ +'use strict'; + +const PROTECTED_KEYS = { + REQUEST_ID: Symbol.for("_AWS_LAMBDA_REQUEST_ID"), + X_RAY_TRACE_ID: Symbol.for("_AWS_LAMBDA_X_RAY_TRACE_ID"), + TENANT_ID: Symbol.for("_AWS_LAMBDA_TENANT_ID"), +}; +const NO_GLOBAL_AWS_LAMBDA = ["true", "1"].includes(process.env?.AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA ?? ""); +if (!NO_GLOBAL_AWS_LAMBDA) { + globalThis.awslambda = globalThis.awslambda || {}; +} +class InvokeStoreBase { + static PROTECTED_KEYS = PROTECTED_KEYS; + isProtectedKey(key) { + return Object.values(PROTECTED_KEYS).includes(key); + } + getRequestId() { + return this.get(PROTECTED_KEYS.REQUEST_ID) ?? "-"; + } + getXRayTraceId() { + return this.get(PROTECTED_KEYS.X_RAY_TRACE_ID); + } + getTenantId() { + return this.get(PROTECTED_KEYS.TENANT_ID); + } +} +class InvokeStoreSingle extends InvokeStoreBase { + currentContext; + getContext() { + return this.currentContext; + } + hasContext() { + return this.currentContext !== undefined; + } + get(key) { + return this.currentContext?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + this.currentContext = this.currentContext || {}; + this.currentContext[key] = value; + } + run(context, fn) { + this.currentContext = context; + return fn(); + } +} +class InvokeStoreMulti extends InvokeStoreBase { + als; + static async create() { + const instance = new InvokeStoreMulti(); + const asyncHooks = await import('node:async_hooks'); + instance.als = new asyncHooks.AsyncLocalStorage(); + return instance; + } + getContext() { + return this.als.getStore(); + } + hasContext() { + return this.als.getStore() !== undefined; + } + get(key) { + return this.als.getStore()?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + const store = this.als.getStore(); + if (!store) { + throw new Error("No context available"); + } + store[key] = value; + } + run(context, fn) { + return this.als.run(context, fn); + } +} +exports.InvokeStore = void 0; +(function (InvokeStore) { + let instance = null; + async function getInstanceAsync(forceInvokeStoreMulti) { + if (!instance) { + instance = (async () => { + const isMulti = forceInvokeStoreMulti === true || "AWS_LAMBDA_MAX_CONCURRENCY" in process.env; + const newInstance = isMulti + ? await InvokeStoreMulti.create() + : new InvokeStoreSingle(); + if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda?.InvokeStore) { + return globalThis.awslambda.InvokeStore; + } + else if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda) { + globalThis.awslambda.InvokeStore = newInstance; + return newInstance; + } + else { + return newInstance; + } + })(); + } + return instance; + } + InvokeStore.getInstanceAsync = getInstanceAsync; + InvokeStore._testing = process.env.AWS_LAMBDA_BENCHMARK_MODE === "1" + ? { + reset: () => { + instance = null; + if (globalThis.awslambda?.InvokeStore) { + delete globalThis.awslambda.InvokeStore; + } + globalThis.awslambda = { InvokeStore: undefined }; + }, + } + : undefined; +})(exports.InvokeStore || (exports.InvokeStore = {})); + +exports.InvokeStoreBase = InvokeStoreBase; diff --git a/bff/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js b/bff/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js new file mode 100644 index 0000000..b0f9d49 --- /dev/null +++ b/bff/node_modules/@aws/lambda-invoke-store/dist-es/invoke-store.js @@ -0,0 +1,117 @@ +const PROTECTED_KEYS = { + REQUEST_ID: Symbol.for("_AWS_LAMBDA_REQUEST_ID"), + X_RAY_TRACE_ID: Symbol.for("_AWS_LAMBDA_X_RAY_TRACE_ID"), + TENANT_ID: Symbol.for("_AWS_LAMBDA_TENANT_ID"), +}; +const NO_GLOBAL_AWS_LAMBDA = ["true", "1"].includes(process.env?.AWS_LAMBDA_NODEJS_NO_GLOBAL_AWSLAMBDA ?? ""); +if (!NO_GLOBAL_AWS_LAMBDA) { + globalThis.awslambda = globalThis.awslambda || {}; +} +class InvokeStoreBase { + static PROTECTED_KEYS = PROTECTED_KEYS; + isProtectedKey(key) { + return Object.values(PROTECTED_KEYS).includes(key); + } + getRequestId() { + return this.get(PROTECTED_KEYS.REQUEST_ID) ?? "-"; + } + getXRayTraceId() { + return this.get(PROTECTED_KEYS.X_RAY_TRACE_ID); + } + getTenantId() { + return this.get(PROTECTED_KEYS.TENANT_ID); + } +} +class InvokeStoreSingle extends InvokeStoreBase { + currentContext; + getContext() { + return this.currentContext; + } + hasContext() { + return this.currentContext !== undefined; + } + get(key) { + return this.currentContext?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + this.currentContext = this.currentContext || {}; + this.currentContext[key] = value; + } + run(context, fn) { + this.currentContext = context; + return fn(); + } +} +class InvokeStoreMulti extends InvokeStoreBase { + als; + static async create() { + const instance = new InvokeStoreMulti(); + const asyncHooks = await import('node:async_hooks'); + instance.als = new asyncHooks.AsyncLocalStorage(); + return instance; + } + getContext() { + return this.als.getStore(); + } + hasContext() { + return this.als.getStore() !== undefined; + } + get(key) { + return this.als.getStore()?.[key]; + } + set(key, value) { + if (this.isProtectedKey(key)) { + throw new Error(`Cannot modify protected Lambda context field: ${String(key)}`); + } + const store = this.als.getStore(); + if (!store) { + throw new Error("No context available"); + } + store[key] = value; + } + run(context, fn) { + return this.als.run(context, fn); + } +} +var InvokeStore; +(function (InvokeStore) { + let instance = null; + async function getInstanceAsync(forceInvokeStoreMulti) { + if (!instance) { + instance = (async () => { + const isMulti = forceInvokeStoreMulti === true || "AWS_LAMBDA_MAX_CONCURRENCY" in process.env; + const newInstance = isMulti + ? await InvokeStoreMulti.create() + : new InvokeStoreSingle(); + if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda?.InvokeStore) { + return globalThis.awslambda.InvokeStore; + } + else if (!NO_GLOBAL_AWS_LAMBDA && globalThis.awslambda) { + globalThis.awslambda.InvokeStore = newInstance; + return newInstance; + } + else { + return newInstance; + } + })(); + } + return instance; + } + InvokeStore.getInstanceAsync = getInstanceAsync; + InvokeStore._testing = process.env.AWS_LAMBDA_BENCHMARK_MODE === "1" + ? { + reset: () => { + instance = null; + if (globalThis.awslambda?.InvokeStore) { + delete globalThis.awslambda.InvokeStore; + } + globalThis.awslambda = { InvokeStore: undefined }; + }, + } + : undefined; +})(InvokeStore || (InvokeStore = {})); + +export { InvokeStore, InvokeStoreBase }; diff --git a/bff/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.benchmark.d.ts b/bff/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.benchmark.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.benchmark.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.d.ts b/bff/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.d.ts new file mode 100644 index 0000000..071dfde --- /dev/null +++ b/bff/node_modules/@aws/lambda-invoke-store/dist-types/invoke-store.d.ts @@ -0,0 +1,49 @@ +interface Context { + [key: string]: unknown; + [key: symbol]: unknown; +} +declare global { + namespace awslambda { + let InvokeStore: InvokeStoreBase | undefined; + } +} +/** + * Base class for AWS Lambda context storage implementations. + * Provides core functionality for managing Lambda execution context. + * + * Implementations handle either single-context (InvokeStoreSingle) or + * multi-context (InvokeStoreMulti) scenarios based on Lambda's execution environment. + * + * @public + */ +export declare abstract class InvokeStoreBase { + static readonly PROTECTED_KEYS: { + readonly REQUEST_ID: symbol; + readonly X_RAY_TRACE_ID: symbol; + readonly TENANT_ID: symbol; + }; + abstract getContext(): Context | undefined; + abstract hasContext(): boolean; + abstract get(key: string | symbol): T | undefined; + abstract set(key: string | symbol, value: T): void; + abstract run(context: Context, fn: () => T): T; + protected isProtectedKey(key: string | symbol): boolean; + getRequestId(): string; + getXRayTraceId(): string | undefined; + getTenantId(): string | undefined; +} +/** + * Provides access to AWS Lambda execution context storage. + * Supports both single-context and multi-context environments through different implementations. + * + * The store manages protected Lambda context fields and allows storing/retrieving custom values + * within the execution context. + * @public + */ +export declare namespace InvokeStore { + function getInstanceAsync(forceInvokeStoreMulti?: boolean): Promise; + const _testing: { + reset: () => void; + } | undefined; +} +export {}; diff --git a/bff/node_modules/@aws/lambda-invoke-store/package.json b/bff/node_modules/@aws/lambda-invoke-store/package.json new file mode 100644 index 0000000..30d6d5e --- /dev/null +++ b/bff/node_modules/@aws/lambda-invoke-store/package.json @@ -0,0 +1,55 @@ +{ + "name": "@aws/lambda-invoke-store", + "version": "0.2.4", + "description": "Invoke scoped data storage for AWS Lambda Node.js Runtime Environment", + "homepage": "https://github.com/awslabs/aws-lambda-invoke-store", + "main": "./dist-cjs/invoke-store.js", + "types": "./dist-types/invoke-store.d.ts", + "module": "./dist-es/invoke-store.js", + "exports": { + ".": { + "types": "./dist-types/invoke-store.d.ts", + "module": "./dist-es/invoke-store.js", + "node": "./dist-cjs/invoke-store.js", + "import": "./dist-es/invoke-store.js", + "require": "./dist-cjs/invoke-store.js" + } + }, + "files": [ + "dist-es", + "dist-cjs", + "dist-types" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/awslabs/aws-lambda-invoke-store.git" + }, + "license": "Apache-2.0", + "author": { + "name": "Amazon Web Services", + "url": "http://aws.amazon.com" + }, + "scripts": { + "build": "yarn clean && yarn build:types && node ./scripts/build-rollup.js", + "build:types": "tsc -p tsconfig.types.json", + "clean": "rm -rf dist-types dist-cjs dist-es", + "test": "vitest run --reporter verbose", + "test:watch": "vitest watch", + "release": "yarn build && changeset publish" + }, + "devDependencies": { + "@changesets/cli": "^2.29.6", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-typescript": "^12.3.0", + "@tsconfig/node18": "^18.2.4", + "@types/node": "^18.19.130", + "rollup": "^4.52.5", + "tslib": "^2.8.1", + "typescript": "^5.9.3", + "vitest": "^3.1.1" + }, + "engines": { + "node": ">=18.0.0" + }, + "packageManager": "yarn@4.9.4" +} diff --git a/bff/node_modules/@smithy/chunked-blob-reader-native/LICENSE b/bff/node_modules/@smithy/chunked-blob-reader-native/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader-native/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/chunked-blob-reader-native/README.md b/bff/node_modules/@smithy/chunked-blob-reader-native/README.md new file mode 100644 index 0000000..4ca7fc7 --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader-native/README.md @@ -0,0 +1,10 @@ +# @smithy/chunked-blob-reader-native + +[![NPM version](https://img.shields.io/npm/v/@smithy/chunked-blob-reader-native/latest.svg)](https://www.npmjs.com/package/@smithy/chunked-blob-reader-native) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/chunked-blob-reader-native.svg)](https://www.npmjs.com/package/@smithy/chunked-blob-reader-native) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/chunked-blob-reader-native/dist-cjs/index.js b/bff/node_modules/@smithy/chunked-blob-reader-native/dist-cjs/index.js new file mode 100644 index 0000000..d58bbb0 --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader-native/dist-cjs/index.js @@ -0,0 +1,32 @@ +'use strict'; + +var utilBase64 = require('@smithy/util-base64'); + +function blobReader(blob, onChunk, chunkSize = 1024 * 1024) { + return new Promise((resolve, reject) => { + const fileReader = new FileReader(); + fileReader.onerror = reject; + fileReader.onabort = reject; + const size = blob.size; + let totalBytesRead = 0; + const read = () => { + if (totalBytesRead >= size) { + resolve(); + return; + } + fileReader.readAsDataURL(blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize))); + }; + fileReader.onload = (event) => { + const result = event.target.result; + const dataOffset = result.indexOf(",") + 1; + const data = result.substring(dataOffset); + const decoded = utilBase64.fromBase64(data); + onChunk(decoded); + totalBytesRead += decoded.byteLength; + read(); + }; + read(); + }); +} + +exports.blobReader = blobReader; diff --git a/bff/node_modules/@smithy/chunked-blob-reader-native/dist-es/index.js b/bff/node_modules/@smithy/chunked-blob-reader-native/dist-es/index.js new file mode 100644 index 0000000..370e2e0 --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader-native/dist-es/index.js @@ -0,0 +1,27 @@ +import { fromBase64 } from "@smithy/util-base64"; +export function blobReader(blob, onChunk, chunkSize = 1024 * 1024) { + return new Promise((resolve, reject) => { + const fileReader = new FileReader(); + fileReader.onerror = reject; + fileReader.onabort = reject; + const size = blob.size; + let totalBytesRead = 0; + const read = () => { + if (totalBytesRead >= size) { + resolve(); + return; + } + fileReader.readAsDataURL(blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize))); + }; + fileReader.onload = (event) => { + const result = event.target.result; + const dataOffset = result.indexOf(",") + 1; + const data = result.substring(dataOffset); + const decoded = fromBase64(data); + onChunk(decoded); + totalBytesRead += decoded.byteLength; + read(); + }; + read(); + }); +} diff --git a/bff/node_modules/@smithy/chunked-blob-reader-native/dist-types/index.d.ts b/bff/node_modules/@smithy/chunked-blob-reader-native/dist-types/index.d.ts new file mode 100644 index 0000000..f83a42b --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader-native/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function blobReader(blob: Blob, onChunk: (chunk: Uint8Array) => void, chunkSize?: number): Promise; diff --git a/bff/node_modules/@smithy/chunked-blob-reader-native/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/chunked-blob-reader-native/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..10b71d0 --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader-native/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function blobReader(blob: Blob, onChunk: (chunk: Uint8Array) => void, chunkSize?: number): Promise; diff --git a/bff/node_modules/@smithy/chunked-blob-reader-native/package.json b/bff/node_modules/@smithy/chunked-blob-reader-native/package.json new file mode 100644 index 0000000..da7c695 --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader-native/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/chunked-blob-reader-native", + "version": "4.2.3", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline chunked-blob-reader-native", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/chunked-blob-reader-native", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/chunked-blob-reader-native" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/chunked-blob-reader/LICENSE b/bff/node_modules/@smithy/chunked-blob-reader/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/chunked-blob-reader/README.md b/bff/node_modules/@smithy/chunked-blob-reader/README.md new file mode 100644 index 0000000..d6c74ac --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader/README.md @@ -0,0 +1,10 @@ +# @smithy/chunked-blob-reader + +[![NPM version](https://img.shields.io/npm/v/@smithy/chunked-blob-reader/latest.svg)](https://www.npmjs.com/package/@smithy/chunked-blob-reader) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/chunked-blob-reader.svg)](https://www.npmjs.com/package/@smithy/chunked-blob-reader) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/chunked-blob-reader/dist-cjs/index.js b/bff/node_modules/@smithy/chunked-blob-reader/dist-cjs/index.js new file mode 100644 index 0000000..a295f52 --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader/dist-cjs/index.js @@ -0,0 +1,13 @@ +'use strict'; + +async function blobReader(blob, onChunk, chunkSize = 1024 * 1024) { + const size = blob.size; + let totalBytesRead = 0; + while (totalBytesRead < size) { + const slice = blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize)); + onChunk(new Uint8Array(await slice.arrayBuffer())); + totalBytesRead += slice.size; + } +} + +exports.blobReader = blobReader; diff --git a/bff/node_modules/@smithy/chunked-blob-reader/dist-es/index.js b/bff/node_modules/@smithy/chunked-blob-reader/dist-es/index.js new file mode 100644 index 0000000..1831593 --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader/dist-es/index.js @@ -0,0 +1,9 @@ +export async function blobReader(blob, onChunk, chunkSize = 1024 * 1024) { + const size = blob.size; + let totalBytesRead = 0; + while (totalBytesRead < size) { + const slice = blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize)); + onChunk(new Uint8Array(await slice.arrayBuffer())); + totalBytesRead += slice.size; + } +} diff --git a/bff/node_modules/@smithy/chunked-blob-reader/dist-types/index.d.ts b/bff/node_modules/@smithy/chunked-blob-reader/dist-types/index.d.ts new file mode 100644 index 0000000..908c4f3 --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader/dist-types/index.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Reads the blob data into the onChunk consumer. + */ +export declare function blobReader(blob: Blob, onChunk: (chunk: Uint8Array) => void, chunkSize?: number): Promise; diff --git a/bff/node_modules/@smithy/chunked-blob-reader/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/chunked-blob-reader/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..e208971 --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Reads the blob data into the onChunk consumer. + */ +export declare function blobReader(blob: Blob, onChunk: (chunk: Uint8Array) => void, chunkSize?: number): Promise; diff --git a/bff/node_modules/@smithy/chunked-blob-reader/package.json b/bff/node_modules/@smithy/chunked-blob-reader/package.json new file mode 100644 index 0000000..05284ff --- /dev/null +++ b/bff/node_modules/@smithy/chunked-blob-reader/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/chunked-blob-reader", + "version": "5.2.2", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline chunked-blob-reader", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "tslib": "^2.6.2" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/chunked-blob-reader", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/chunked-blob-reader" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/config-resolver/LICENSE b/bff/node_modules/@smithy/config-resolver/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/config-resolver/README.md b/bff/node_modules/@smithy/config-resolver/README.md new file mode 100644 index 0000000..2a25da2 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/README.md @@ -0,0 +1,10 @@ +# @smithy/config-resolver + +[![NPM version](https://img.shields.io/npm/v/@smithy/config-resolver/latest.svg)](https://www.npmjs.com/package/@smithy/config-resolver) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/config-resolver.svg)](https://www.npmjs.com/package/@smithy/config-resolver) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/config-resolver/dist-cjs/index.js b/bff/node_modules/@smithy/config-resolver/dist-cjs/index.js new file mode 100644 index 0000000..f66ca86 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-cjs/index.js @@ -0,0 +1,198 @@ +'use strict'; + +var utilConfigProvider = require('@smithy/util-config-provider'); +var utilMiddleware = require('@smithy/util-middleware'); +var utilEndpoints = require('@smithy/util-endpoints'); + +const ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; +const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; +const DEFAULT_USE_DUALSTACK_ENDPOINT = false; +const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, utilConfigProvider.SelectorType.ENV), + configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, utilConfigProvider.SelectorType.CONFIG), + default: false, +}; +const nodeDualstackConfigSelectors = { + environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, utilConfigProvider.SelectorType.ENV), + configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, utilConfigProvider.SelectorType.CONFIG), + default: undefined, +}; + +const ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; +const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; +const DEFAULT_USE_FIPS_ENDPOINT = false; +const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, ENV_USE_FIPS_ENDPOINT, utilConfigProvider.SelectorType.ENV), + configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, utilConfigProvider.SelectorType.CONFIG), + default: false, +}; +const nodeFipsConfigSelectors = { + environmentVariableSelector: (env) => utilConfigProvider.booleanSelector(env, ENV_USE_FIPS_ENDPOINT, utilConfigProvider.SelectorType.ENV), + configFileSelector: (profile) => utilConfigProvider.booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, utilConfigProvider.SelectorType.CONFIG), + default: undefined, +}; + +const resolveCustomEndpointsConfig = (input) => { + const { tls, endpoint, urlParser, useDualstackEndpoint } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: utilMiddleware.normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint), + isCustomEndpoint: true, + useDualstackEndpoint: utilMiddleware.normalizeProvider(useDualstackEndpoint ?? false), + }); +}; + +const getEndpointFromRegion = async (input) => { + const { tls = true } = input; + const region = await input.region(); + const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/); + if (!dnsHostRegex.test(region)) { + throw new Error("Invalid region in client config"); + } + const useDualstackEndpoint = await input.useDualstackEndpoint(); + const useFipsEndpoint = await input.useFipsEndpoint(); + const { hostname } = (await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint })) ?? {}; + if (!hostname) { + throw new Error("Cannot resolve hostname from client config"); + } + return input.urlParser(`${tls ? "https:" : "http:"}//${hostname}`); +}; + +const resolveEndpointsConfig = (input) => { + const useDualstackEndpoint = utilMiddleware.normalizeProvider(input.useDualstackEndpoint ?? false); + const { endpoint, useFipsEndpoint, urlParser, tls } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: endpoint + ? utilMiddleware.normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint) + : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }), + isCustomEndpoint: !!endpoint, + useDualstackEndpoint, + }); +}; + +const REGION_ENV_NAME = "AWS_REGION"; +const REGION_INI_NAME = "region"; +const NODE_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[REGION_ENV_NAME], + configFileSelector: (profile) => profile[REGION_INI_NAME], + default: () => { + throw new Error("Region is missing"); + }, +}; +const NODE_REGION_CONFIG_FILE_OPTIONS = { + preferredFile: "credentials", +}; + +const validRegions = new Set(); +const checkRegion = (region, check = utilEndpoints.isValidHostLabel) => { + if (!validRegions.has(region) && !check(region)) { + if (region === "*") { + console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`); + } + else { + throw new Error(`Region not accepted: region="${region}" is not a valid hostname component.`); + } + } + else { + validRegions.add(region); + } +}; + +const isFipsRegion = (region) => typeof region === "string" && (region.startsWith("fips-") || region.endsWith("-fips")); + +const getRealRegion = (region) => isFipsRegion(region) + ? ["fips-aws-global", "aws-fips"].includes(region) + ? "us-east-1" + : region.replace(/fips-(dkr-|prod-)?|-fips/, "") + : region; + +const resolveRegionConfig = (input) => { + const { region, useFipsEndpoint } = input; + if (!region) { + throw new Error("Region is missing"); + } + return Object.assign(input, { + region: async () => { + const providedRegion = typeof region === "function" ? await region() : region; + const realRegion = getRealRegion(providedRegion); + checkRegion(realRegion); + return realRegion; + }, + useFipsEndpoint: async () => { + const providedRegion = typeof region === "string" ? region : await region(); + if (isFipsRegion(providedRegion)) { + return true; + } + return typeof useFipsEndpoint !== "function" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint(); + }, + }); +}; + +const getHostnameFromVariants = (variants = [], { useFipsEndpoint, useDualstackEndpoint }) => variants.find(({ tags }) => useFipsEndpoint === tags.includes("fips") && useDualstackEndpoint === tags.includes("dualstack"))?.hostname; + +const getResolvedHostname = (resolvedRegion, { regionHostname, partitionHostname }) => regionHostname + ? regionHostname + : partitionHostname + ? partitionHostname.replace("{region}", resolvedRegion) + : undefined; + +const getResolvedPartition = (region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? "aws"; + +const getResolvedSigningRegion = (hostname, { signingRegion, regionRegex, useFipsEndpoint }) => { + if (signingRegion) { + return signingRegion; + } + else if (useFipsEndpoint) { + const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, "\\.").replace(/\$$/g, "\\."); + const regionRegexmatchArray = hostname.match(regionRegexJs); + if (regionRegexmatchArray) { + return regionRegexmatchArray[0].slice(1, -1); + } + } +}; + +const getRegionInfo = (region, { useFipsEndpoint = false, useDualstackEndpoint = false, signingService, regionHash, partitionHash, }) => { + const partition = getResolvedPartition(region, { partitionHash }); + const resolvedRegion = region in regionHash ? region : partitionHash[partition]?.endpoint ?? region; + const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint }; + const regionHostname = getHostnameFromVariants(regionHash[resolvedRegion]?.variants, hostnameOptions); + const partitionHostname = getHostnameFromVariants(partitionHash[partition]?.variants, hostnameOptions); + const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname }); + if (hostname === undefined) { + throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`); + } + const signingRegion = getResolvedSigningRegion(hostname, { + signingRegion: regionHash[resolvedRegion]?.signingRegion, + regionRegex: partitionHash[partition].regionRegex, + useFipsEndpoint, + }); + return { + partition, + signingService, + hostname, + ...(signingRegion && { signingRegion }), + ...(regionHash[resolvedRegion]?.signingService && { + signingService: regionHash[resolvedRegion].signingService, + }), + }; +}; + +exports.CONFIG_USE_DUALSTACK_ENDPOINT = CONFIG_USE_DUALSTACK_ENDPOINT; +exports.CONFIG_USE_FIPS_ENDPOINT = CONFIG_USE_FIPS_ENDPOINT; +exports.DEFAULT_USE_DUALSTACK_ENDPOINT = DEFAULT_USE_DUALSTACK_ENDPOINT; +exports.DEFAULT_USE_FIPS_ENDPOINT = DEFAULT_USE_FIPS_ENDPOINT; +exports.ENV_USE_DUALSTACK_ENDPOINT = ENV_USE_DUALSTACK_ENDPOINT; +exports.ENV_USE_FIPS_ENDPOINT = ENV_USE_FIPS_ENDPOINT; +exports.NODE_REGION_CONFIG_FILE_OPTIONS = NODE_REGION_CONFIG_FILE_OPTIONS; +exports.NODE_REGION_CONFIG_OPTIONS = NODE_REGION_CONFIG_OPTIONS; +exports.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS; +exports.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS; +exports.REGION_ENV_NAME = REGION_ENV_NAME; +exports.REGION_INI_NAME = REGION_INI_NAME; +exports.getRegionInfo = getRegionInfo; +exports.nodeDualstackConfigSelectors = nodeDualstackConfigSelectors; +exports.nodeFipsConfigSelectors = nodeFipsConfigSelectors; +exports.resolveCustomEndpointsConfig = resolveCustomEndpointsConfig; +exports.resolveEndpointsConfig = resolveEndpointsConfig; +exports.resolveRegionConfig = resolveRegionConfig; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js new file mode 100644 index 0000000..1a9e938 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js @@ -0,0 +1,14 @@ +import { booleanSelector, SelectorType } from "@smithy/util-config-provider"; +export const ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; +export const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; +export const DEFAULT_USE_DUALSTACK_ENDPOINT = false; +export const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV), + configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG), + default: false, +}; +export const nodeDualstackConfigSelectors = { + environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV), + configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG), + default: undefined, +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js new file mode 100644 index 0000000..245bc9c --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js @@ -0,0 +1,14 @@ +import { booleanSelector, SelectorType } from "@smithy/util-config-provider"; +export const ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; +export const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; +export const DEFAULT_USE_FIPS_ENDPOINT = false; +export const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV), + configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG), + default: false, +}; +export const nodeFipsConfigSelectors = { + environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV), + configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG), + default: undefined, +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/index.js b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/index.js new file mode 100644 index 0000000..1424c22 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/index.js @@ -0,0 +1,4 @@ +export * from "./NodeUseDualstackEndpointConfigOptions"; +export * from "./NodeUseFipsEndpointConfigOptions"; +export * from "./resolveCustomEndpointsConfig"; +export * from "./resolveEndpointsConfig"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js new file mode 100644 index 0000000..7f9a953 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveCustomEndpointsConfig.js @@ -0,0 +1,10 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +export const resolveCustomEndpointsConfig = (input) => { + const { tls, endpoint, urlParser, useDualstackEndpoint } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint), + isCustomEndpoint: true, + useDualstackEndpoint: normalizeProvider(useDualstackEndpoint ?? false), + }); +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js new file mode 100644 index 0000000..440657d --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/resolveEndpointsConfig.js @@ -0,0 +1,14 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +import { getEndpointFromRegion } from "./utils/getEndpointFromRegion"; +export const resolveEndpointsConfig = (input) => { + const useDualstackEndpoint = normalizeProvider(input.useDualstackEndpoint ?? false); + const { endpoint, useFipsEndpoint, urlParser, tls } = input; + return Object.assign(input, { + tls: tls ?? true, + endpoint: endpoint + ? normalizeProvider(typeof endpoint === "string" ? urlParser(endpoint) : endpoint) + : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }), + isCustomEndpoint: !!endpoint, + useDualstackEndpoint, + }); +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/utils/getEndpointFromRegion.js b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/utils/getEndpointFromRegion.js new file mode 100644 index 0000000..5627c32 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/endpointsConfig/utils/getEndpointFromRegion.js @@ -0,0 +1,15 @@ +export const getEndpointFromRegion = async (input) => { + const { tls = true } = input; + const region = await input.region(); + const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/); + if (!dnsHostRegex.test(region)) { + throw new Error("Invalid region in client config"); + } + const useDualstackEndpoint = await input.useDualstackEndpoint(); + const useFipsEndpoint = await input.useFipsEndpoint(); + const { hostname } = (await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint })) ?? {}; + if (!hostname) { + throw new Error("Cannot resolve hostname from client config"); + } + return input.urlParser(`${tls ? "https:" : "http:"}//${hostname}`); +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/index.js b/bff/node_modules/@smithy/config-resolver/dist-es/index.js new file mode 100644 index 0000000..61456a7 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./endpointsConfig"; +export * from "./regionConfig"; +export * from "./regionInfo"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js new file mode 100644 index 0000000..030902e --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/checkRegion.js @@ -0,0 +1,15 @@ +import { isValidHostLabel } from "@smithy/util-endpoints"; +const validRegions = new Set(); +export const checkRegion = (region, check = isValidHostLabel) => { + if (!validRegions.has(region) && !check(region)) { + if (region === "*") { + console.warn(`@smithy/config-resolver WARN - Please use the caller region instead of "*". See "sigv4a" in https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md.`); + } + else { + throw new Error(`Region not accepted: region="${region}" is not a valid hostname component.`); + } + } + else { + validRegions.add(region); + } +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/config.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/config.js new file mode 100644 index 0000000..7db9896 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/config.js @@ -0,0 +1,12 @@ +export const REGION_ENV_NAME = "AWS_REGION"; +export const REGION_INI_NAME = "region"; +export const NODE_REGION_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[REGION_ENV_NAME], + configFileSelector: (profile) => profile[REGION_INI_NAME], + default: () => { + throw new Error("Region is missing"); + }, +}; +export const NODE_REGION_CONFIG_FILE_OPTIONS = { + preferredFile: "credentials", +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js new file mode 100644 index 0000000..8d1246b --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js @@ -0,0 +1,6 @@ +import { isFipsRegion } from "./isFipsRegion"; +export const getRealRegion = (region) => isFipsRegion(region) + ? ["fips-aws-global", "aws-fips"].includes(region) + ? "us-east-1" + : region.replace(/fips-(dkr-|prod-)?|-fips/, "") + : region; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/index.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/index.js new file mode 100644 index 0000000..83675f7 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/index.js @@ -0,0 +1,2 @@ +export * from "./config"; +export * from "./resolveRegionConfig"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js new file mode 100644 index 0000000..d758967 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js @@ -0,0 +1 @@ +export const isFipsRegion = (region) => typeof region === "string" && (region.startsWith("fips-") || region.endsWith("-fips")); diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js new file mode 100644 index 0000000..00c3b55 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js @@ -0,0 +1,24 @@ +import { checkRegion } from "./checkRegion"; +import { getRealRegion } from "./getRealRegion"; +import { isFipsRegion } from "./isFipsRegion"; +export const resolveRegionConfig = (input) => { + const { region, useFipsEndpoint } = input; + if (!region) { + throw new Error("Region is missing"); + } + return Object.assign(input, { + region: async () => { + const providedRegion = typeof region === "function" ? await region() : region; + const realRegion = getRealRegion(providedRegion); + checkRegion(realRegion); + return realRegion; + }, + useFipsEndpoint: async () => { + const providedRegion = typeof region === "string" ? region : await region(); + if (isFipsRegion(providedRegion)) { + return true; + } + return typeof useFipsEndpoint !== "function" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint(); + }, + }); +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariant.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariant.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariant.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariantTag.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariantTag.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/EndpointVariantTag.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/PartitionHash.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/PartitionHash.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/PartitionHash.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/RegionHash.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/RegionHash.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/RegionHash.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getHostnameFromVariants.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getHostnameFromVariants.js new file mode 100644 index 0000000..84fc50e --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getHostnameFromVariants.js @@ -0,0 +1 @@ +export const getHostnameFromVariants = (variants = [], { useFipsEndpoint, useDualstackEndpoint }) => variants.find(({ tags }) => useFipsEndpoint === tags.includes("fips") && useDualstackEndpoint === tags.includes("dualstack"))?.hostname; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getRegionInfo.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getRegionInfo.js new file mode 100644 index 0000000..c39e2f7 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getRegionInfo.js @@ -0,0 +1,29 @@ +import { getHostnameFromVariants } from "./getHostnameFromVariants"; +import { getResolvedHostname } from "./getResolvedHostname"; +import { getResolvedPartition } from "./getResolvedPartition"; +import { getResolvedSigningRegion } from "./getResolvedSigningRegion"; +export const getRegionInfo = (region, { useFipsEndpoint = false, useDualstackEndpoint = false, signingService, regionHash, partitionHash, }) => { + const partition = getResolvedPartition(region, { partitionHash }); + const resolvedRegion = region in regionHash ? region : partitionHash[partition]?.endpoint ?? region; + const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint }; + const regionHostname = getHostnameFromVariants(regionHash[resolvedRegion]?.variants, hostnameOptions); + const partitionHostname = getHostnameFromVariants(partitionHash[partition]?.variants, hostnameOptions); + const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname }); + if (hostname === undefined) { + throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`); + } + const signingRegion = getResolvedSigningRegion(hostname, { + signingRegion: regionHash[resolvedRegion]?.signingRegion, + regionRegex: partitionHash[partition].regionRegex, + useFipsEndpoint, + }); + return { + partition, + signingService, + hostname, + ...(signingRegion && { signingRegion }), + ...(regionHash[resolvedRegion]?.signingService && { + signingService: regionHash[resolvedRegion].signingService, + }), + }; +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedHostname.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedHostname.js new file mode 100644 index 0000000..35fb988 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedHostname.js @@ -0,0 +1,5 @@ +export const getResolvedHostname = (resolvedRegion, { regionHostname, partitionHostname }) => regionHostname + ? regionHostname + : partitionHostname + ? partitionHostname.replace("{region}", resolvedRegion) + : undefined; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedPartition.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedPartition.js new file mode 100644 index 0000000..3d7bc55 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedPartition.js @@ -0,0 +1 @@ +export const getResolvedPartition = (region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? "aws"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedSigningRegion.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedSigningRegion.js new file mode 100644 index 0000000..7977e00 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/getResolvedSigningRegion.js @@ -0,0 +1,12 @@ +export const getResolvedSigningRegion = (hostname, { signingRegion, regionRegex, useFipsEndpoint }) => { + if (signingRegion) { + return signingRegion; + } + else if (useFipsEndpoint) { + const regionRegexJs = regionRegex.replace("\\\\", "\\").replace(/^\^/g, "\\.").replace(/\$$/g, "\\."); + const regionRegexmatchArray = hostname.match(regionRegexJs); + if (regionRegexmatchArray) { + return regionRegexmatchArray[0].slice(1, -1); + } + } +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/index.js b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/index.js new file mode 100644 index 0000000..e29686a --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-es/regionInfo/index.js @@ -0,0 +1,3 @@ +export * from "./PartitionHash"; +export * from "./RegionHash"; +export * from "./getRegionInfo"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts new file mode 100644 index 0000000..820ec42 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts @@ -0,0 +1,23 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; +/** + * @internal + */ +export declare const DEFAULT_USE_DUALSTACK_ENDPOINT = false; +/** + * Don't delete this, used by older clients. + * @deprecated replaced by nodeDualstackConfigSelectors in newer clients. + * @internal + */ +export declare const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @internal + */ +export declare const nodeDualstackConfigSelectors: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts new file mode 100644 index 0000000..0622c94 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts @@ -0,0 +1,23 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; +/** + * @internal + */ +export declare const DEFAULT_USE_FIPS_ENDPOINT = false; +/** + * Don't delete this, used by older clients. + * @deprecated replaced by nodeFipsConfigSelectors in newer clients. + * @internal + */ +export declare const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @internal + */ +export declare const nodeFipsConfigSelectors: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/index.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/index.d.ts new file mode 100644 index 0000000..ea1cf59 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/index.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export * from "./NodeUseDualstackEndpointConfigOptions"; +/** + * @internal + */ +export * from "./NodeUseFipsEndpointConfigOptions"; +/** + * @internal + */ +export * from "./resolveCustomEndpointsConfig"; +/** + * @internal + */ +export * from "./resolveEndpointsConfig"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveCustomEndpointsConfig.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveCustomEndpointsConfig.d.ts new file mode 100644 index 0000000..10581c2 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveCustomEndpointsConfig.d.ts @@ -0,0 +1,37 @@ +import type { Endpoint, Provider, UrlParser } from "@smithy/types"; +import type { EndpointsInputConfig, EndpointsResolvedConfig } from "./resolveEndpointsConfig"; +/** + * @public + * @deprecated superseded by default endpointRuleSet generation. + */ +export interface CustomEndpointsInputConfig extends EndpointsInputConfig { + /** + * The fully qualified endpoint of the webservice. + */ + endpoint: string | Endpoint | Provider; +} +/** + * @internal + * @deprecated superseded by default endpointRuleSet generation. + */ +interface PreviouslyResolved { + urlParser: UrlParser; +} +/** + * @internal + * @deprecated superseded by default endpointRuleSet generation. + */ +export interface CustomEndpointsResolvedConfig extends EndpointsResolvedConfig { + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint: true; +} +/** + * @internal + * + * @deprecated superseded by default endpointRuleSet generation. + */ +export declare const resolveCustomEndpointsConfig: (input: T & CustomEndpointsInputConfig & PreviouslyResolved) => T & CustomEndpointsResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig.d.ts new file mode 100644 index 0000000..d801d1d --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/resolveEndpointsConfig.d.ts @@ -0,0 +1,57 @@ +import type { Endpoint, Provider, RegionInfoProvider, UrlParser } from "@smithy/types"; +/** + * @public + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +export interface EndpointsInputConfig { + /** + * The fully qualified endpoint of the webservice. This is only required when using + * a custom endpoint (for example, when using a local version of S3). + */ + endpoint?: string | Endpoint | Provider; + /** + * Whether TLS is enabled for requests. + */ + tls?: boolean; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | Provider; +} +/** + * @internal + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +interface PreviouslyResolved { + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; + region: Provider; + useFipsEndpoint: Provider; +} +/** + * @internal + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +export interface EndpointsResolvedConfig extends Required { + /** + * Resolved value for input {@link EndpointsInputConfig.endpoint} + */ + endpoint: Provider; + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint?: boolean; + /** + * Resolved value for input {@link EndpointsInputConfig.useDualstackEndpoint} + */ + useDualstackEndpoint: Provider; +} +/** + * @internal + * + * @deprecated endpoints rulesets use \@smithy/middleware-endpoint resolveEndpointConfig. + * All generated clients should migrate to Endpoints 2.0 endpointRuleSet traits. + */ +export declare const resolveEndpointsConfig: (input: T & EndpointsInputConfig & PreviouslyResolved) => T & EndpointsResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/utils/getEndpointFromRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/utils/getEndpointFromRegion.d.ts new file mode 100644 index 0000000..af8780a --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/endpointsConfig/utils/getEndpointFromRegion.d.ts @@ -0,0 +1,11 @@ +import type { Provider, RegionInfoProvider, UrlParser } from "@smithy/types"; +interface GetEndpointFromRegionOptions { + region: Provider; + tls?: boolean; + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; + useDualstackEndpoint: Provider; + useFipsEndpoint: Provider; +} +export declare const getEndpointFromRegion: (input: GetEndpointFromRegionOptions) => Promise; +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/index.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/index.d.ts new file mode 100644 index 0000000..fde7086 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./endpointsConfig"; +/** + * @internal + */ +export * from "./regionConfig"; +/** + * @internal + */ +export * from "./regionInfo"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/checkRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/checkRegion.d.ts new file mode 100644 index 0000000..ead866f --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/checkRegion.d.ts @@ -0,0 +1,9 @@ +/** + * Checks whether region can be a host component. + * + * @param region - to check. + * @param check - checking function. + * + * @internal + */ +export declare const checkRegion: (region: string, check?: (value: string, allowSubDomains?: boolean) => boolean) => void; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/config.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/config.d.ts new file mode 100644 index 0000000..ce06abf --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/config.d.ts @@ -0,0 +1,17 @@ +import type { LoadedConfigSelectors, LocalConfigOptions } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const REGION_ENV_NAME = "AWS_REGION"; +/** + * @internal + */ +export declare const REGION_INI_NAME = "region"; +/** + * @internal + */ +export declare const NODE_REGION_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @internal + */ +export declare const NODE_REGION_CONFIG_FILE_OPTIONS: LocalConfigOptions; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/getRealRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/getRealRegion.d.ts new file mode 100644 index 0000000..c70fb5b --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/getRealRegion.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getRealRegion: (region: string) => string; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/index.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/index.d.ts new file mode 100644 index 0000000..6dcf5e5 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./config"; +/** + * @internal + */ +export * from "./resolveRegionConfig"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/isFipsRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/isFipsRegion.d.ts new file mode 100644 index 0000000..b42cee7 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/isFipsRegion.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isFipsRegion: (region: string) => boolean; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts new file mode 100644 index 0000000..4e9bbcc --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionConfig/resolveRegionConfig.d.ts @@ -0,0 +1,34 @@ +import type { Provider } from "@smithy/types"; +/** + * @public + */ +export interface RegionInputConfig { + /** + * The AWS region to which this client will send requests + */ + region?: string | Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | Provider; +} +interface PreviouslyResolved { +} +/** + * @internal + */ +export interface RegionResolvedConfig { + /** + * Resolved value for input config {@link RegionInputConfig.region} + */ + region: Provider; + /** + * Resolved value for input {@link RegionInputConfig.useFipsEndpoint} + */ + useFipsEndpoint: Provider; +} +/** + * @internal + */ +export declare const resolveRegionConfig: (input: T & RegionInputConfig & PreviouslyResolved) => T & RegionResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariant.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariant.d.ts new file mode 100644 index 0000000..a1a2d43 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariant.d.ts @@ -0,0 +1,11 @@ +import type { EndpointVariantTag } from "./EndpointVariantTag"; +/** + * Provides hostname information for specific host label. + * + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export type EndpointVariant = { + hostname: string; + tags: EndpointVariantTag[]; +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariantTag.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariantTag.d.ts new file mode 100644 index 0000000..0c87d4d --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/EndpointVariantTag.d.ts @@ -0,0 +1,10 @@ +/** + * + * + * The tag which mentions which area variant is providing information for. + * Can be either "fips" or "dualstack". + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type EndpointVariantTag = "fips" | "dualstack"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/PartitionHash.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/PartitionHash.d.ts new file mode 100644 index 0000000..d50af08 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/PartitionHash.d.ts @@ -0,0 +1,15 @@ +import type { EndpointVariant } from "./EndpointVariant"; +/** + * The hash of partition with the information specific to that partition. + * The information includes the list of regions belonging to that partition, + * and the hostname to be used for the partition. + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type PartitionHash = Record; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/RegionHash.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/RegionHash.d.ts new file mode 100644 index 0000000..c2eda12 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/RegionHash.d.ts @@ -0,0 +1,13 @@ +import type { EndpointVariant } from "./EndpointVariant"; +/** + * The hash of region with the information specific to that region. + * The information can include hostname, signingService and signingRegion. + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type RegionHash = Record; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getHostnameFromVariants.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getHostnameFromVariants.d.ts new file mode 100644 index 0000000..bee82d0 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getHostnameFromVariants.d.ts @@ -0,0 +1,14 @@ +import type { EndpointVariant } from "./EndpointVariant"; +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export interface GetHostnameFromVariantsOptions { + useFipsEndpoint: boolean; + useDualstackEndpoint: boolean; +} +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export declare const getHostnameFromVariants: (variants: EndpointVariant[] | undefined, { useFipsEndpoint, useDualstackEndpoint }: GetHostnameFromVariantsOptions) => string | undefined; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getRegionInfo.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getRegionInfo.d.ts new file mode 100644 index 0000000..0c98f11 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getRegionInfo.d.ts @@ -0,0 +1,19 @@ +import type { RegionInfo } from "@smithy/types"; +import type { PartitionHash } from "./PartitionHash"; +import type { RegionHash } from "./RegionHash"; +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export interface GetRegionInfoOptions { + useFipsEndpoint?: boolean; + useDualstackEndpoint?: boolean; + signingService: string; + regionHash: RegionHash; + partitionHash: PartitionHash; +} +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export declare const getRegionInfo: (region: string, { useFipsEndpoint, useDualstackEndpoint, signingService, regionHash, partitionHash, }: GetRegionInfoOptions) => RegionInfo; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedHostname.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedHostname.d.ts new file mode 100644 index 0000000..4831752 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedHostname.d.ts @@ -0,0 +1,13 @@ +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedHostnameOptions { + regionHostname?: string; + partitionHostname?: string; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedHostname: (resolvedRegion: string, { regionHostname, partitionHostname }: GetResolvedHostnameOptions) => string | undefined; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedPartition.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedPartition.d.ts new file mode 100644 index 0000000..bc73cf6 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedPartition.d.ts @@ -0,0 +1,13 @@ +import type { PartitionHash } from "./PartitionHash"; +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedPartitionOptions { + partitionHash: PartitionHash; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedPartition: (region: string, { partitionHash }: GetResolvedPartitionOptions) => string; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedSigningRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedSigningRegion.d.ts new file mode 100644 index 0000000..e0990b7 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/getResolvedSigningRegion.d.ts @@ -0,0 +1,14 @@ +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedSigningRegionOptions { + regionRegex: string; + signingRegion?: string; + useFipsEndpoint: boolean; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedSigningRegion: (hostname: string, { signingRegion, regionRegex, useFipsEndpoint }: GetResolvedSigningRegionOptions) => string | undefined; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/index.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/index.d.ts new file mode 100644 index 0000000..64ef0d5 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/regionInfo/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./PartitionHash"; +/** + * @internal + */ +export * from "./RegionHash"; +/** + * @internal + */ +export * from "./getRegionInfo"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts new file mode 100644 index 0000000..e48e06e --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseDualstackEndpointConfigOptions.d.ts @@ -0,0 +1,23 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_USE_DUALSTACK_ENDPOINT = "AWS_USE_DUALSTACK_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_USE_DUALSTACK_ENDPOINT = "use_dualstack_endpoint"; +/** + * @internal + */ +export declare const DEFAULT_USE_DUALSTACK_ENDPOINT = false; +/** + * Don't delete this, used by older clients. + * @deprecated replaced by nodeDualstackConfigSelectors in newer clients. + * @internal + */ +export declare const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @internal + */ +export declare const nodeDualstackConfigSelectors: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts new file mode 100644 index 0000000..31c19d3 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/NodeUseFipsEndpointConfigOptions.d.ts @@ -0,0 +1,23 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_USE_FIPS_ENDPOINT = "AWS_USE_FIPS_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_USE_FIPS_ENDPOINT = "use_fips_endpoint"; +/** + * @internal + */ +export declare const DEFAULT_USE_FIPS_ENDPOINT = false; +/** + * Don't delete this, used by older clients. + * @deprecated replaced by nodeFipsConfigSelectors in newer clients. + * @internal + */ +export declare const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @internal + */ +export declare const nodeFipsConfigSelectors: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/index.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/index.d.ts new file mode 100644 index 0000000..cbabe5b --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/index.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export * from "./NodeUseDualstackEndpointConfigOptions"; +/** + * @internal + */ +export * from "./NodeUseFipsEndpointConfigOptions"; +/** + * @internal + */ +export * from "./resolveCustomEndpointsConfig"; +/** + * @internal + */ +export * from "./resolveEndpointsConfig"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveCustomEndpointsConfig.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveCustomEndpointsConfig.d.ts new file mode 100644 index 0000000..e351c2f --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveCustomEndpointsConfig.d.ts @@ -0,0 +1,37 @@ +import { Endpoint, Provider, UrlParser } from "@smithy/types"; +import { EndpointsInputConfig, EndpointsResolvedConfig } from "./resolveEndpointsConfig"; +/** + * @public + * @deprecated superseded by default endpointRuleSet generation. + */ +export interface CustomEndpointsInputConfig extends EndpointsInputConfig { + /** + * The fully qualified endpoint of the webservice. + */ + endpoint: string | Endpoint | Provider; +} +/** + * @internal + * @deprecated superseded by default endpointRuleSet generation. + */ +interface PreviouslyResolved { + urlParser: UrlParser; +} +/** + * @internal + * @deprecated superseded by default endpointRuleSet generation. + */ +export interface CustomEndpointsResolvedConfig extends EndpointsResolvedConfig { + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint: true; +} +/** + * @internal + * + * @deprecated superseded by default endpointRuleSet generation. + */ +export declare const resolveCustomEndpointsConfig: (input: T & CustomEndpointsInputConfig & PreviouslyResolved) => T & CustomEndpointsResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveEndpointsConfig.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveEndpointsConfig.d.ts new file mode 100644 index 0000000..210ebd0 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/resolveEndpointsConfig.d.ts @@ -0,0 +1,57 @@ +import { Endpoint, Provider, RegionInfoProvider, UrlParser } from "@smithy/types"; +/** + * @public + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +export interface EndpointsInputConfig { + /** + * The fully qualified endpoint of the webservice. This is only required when using + * a custom endpoint (for example, when using a local version of S3). + */ + endpoint?: string | Endpoint | Provider; + /** + * Whether TLS is enabled for requests. + */ + tls?: boolean; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | Provider; +} +/** + * @internal + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +interface PreviouslyResolved { + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; + region: Provider; + useFipsEndpoint: Provider; +} +/** + * @internal + * @deprecated see \@smithy/middleware-endpoint resolveEndpointConfig. + */ +export interface EndpointsResolvedConfig extends Required { + /** + * Resolved value for input {@link EndpointsInputConfig.endpoint} + */ + endpoint: Provider; + /** + * Whether the endpoint is specified by caller. + * @internal + */ + isCustomEndpoint?: boolean; + /** + * Resolved value for input {@link EndpointsInputConfig.useDualstackEndpoint} + */ + useDualstackEndpoint: Provider; +} +/** + * @internal + * + * @deprecated endpoints rulesets use \@smithy/middleware-endpoint resolveEndpointConfig. + * All generated clients should migrate to Endpoints 2.0 endpointRuleSet traits. + */ +export declare const resolveEndpointsConfig: (input: T & EndpointsInputConfig & PreviouslyResolved) => T & EndpointsResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/utils/getEndpointFromRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/utils/getEndpointFromRegion.d.ts new file mode 100644 index 0000000..83d4635 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/endpointsConfig/utils/getEndpointFromRegion.d.ts @@ -0,0 +1,11 @@ +import { Provider, RegionInfoProvider, UrlParser } from "@smithy/types"; +interface GetEndpointFromRegionOptions { + region: Provider; + tls?: boolean; + regionInfoProvider: RegionInfoProvider; + urlParser: UrlParser; + useDualstackEndpoint: Provider; + useFipsEndpoint: Provider; +} +export declare const getEndpointFromRegion: (input: GetEndpointFromRegionOptions) => Promise; +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..e205411 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./endpointsConfig"; +/** + * @internal + */ +export * from "./regionConfig"; +/** + * @internal + */ +export * from "./regionInfo"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/checkRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/checkRegion.d.ts new file mode 100644 index 0000000..725594c --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/checkRegion.d.ts @@ -0,0 +1,9 @@ +/** + * Checks whether region can be a host component. + * + * @param region - to check. + * @param check - checking function. + * + * @internal + */ +export declare const checkRegion: (region: string, check?: (value: string, allowSubDomains?: boolean) => boolean) => void; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/config.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/config.d.ts new file mode 100644 index 0000000..8f3a9b2 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/config.d.ts @@ -0,0 +1,17 @@ +import { LoadedConfigSelectors, LocalConfigOptions } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const REGION_ENV_NAME = "AWS_REGION"; +/** + * @internal + */ +export declare const REGION_INI_NAME = "region"; +/** + * @internal + */ +export declare const NODE_REGION_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @internal + */ +export declare const NODE_REGION_CONFIG_FILE_OPTIONS: LocalConfigOptions; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts new file mode 100644 index 0000000..6c11d4d --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/getRealRegion.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getRealRegion: (region: string) => string; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/index.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/index.d.ts new file mode 100644 index 0000000..0e6f55d --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./config"; +/** + * @internal + */ +export * from "./resolveRegionConfig"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts new file mode 100644 index 0000000..1ee8bd4 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/isFipsRegion.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isFipsRegion: (region: string) => boolean; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts new file mode 100644 index 0000000..7aaf9e1 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionConfig/resolveRegionConfig.d.ts @@ -0,0 +1,34 @@ +import { Provider } from "@smithy/types"; +/** + * @public + */ +export interface RegionInputConfig { + /** + * The AWS region to which this client will send requests + */ + region?: string | Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | Provider; +} +interface PreviouslyResolved { +} +/** + * @internal + */ +export interface RegionResolvedConfig { + /** + * Resolved value for input config {@link RegionInputConfig.region} + */ + region: Provider; + /** + * Resolved value for input {@link RegionInputConfig.useFipsEndpoint} + */ + useFipsEndpoint: Provider; +} +/** + * @internal + */ +export declare const resolveRegionConfig: (input: T & RegionInputConfig & PreviouslyResolved) => T & RegionResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariant.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariant.d.ts new file mode 100644 index 0000000..0baa82a --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariant.d.ts @@ -0,0 +1,11 @@ +import { EndpointVariantTag } from "./EndpointVariantTag"; +/** + * Provides hostname information for specific host label. + * + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export type EndpointVariant = { + hostname: string; + tags: EndpointVariantTag[]; +}; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariantTag.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariantTag.d.ts new file mode 100644 index 0000000..a80f9f6 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/EndpointVariantTag.d.ts @@ -0,0 +1,10 @@ +/** + * + * + * The tag which mentions which area variant is providing information for. + * Can be either "fips" or "dualstack". + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type EndpointVariantTag = "fips" | "dualstack"; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/PartitionHash.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/PartitionHash.d.ts new file mode 100644 index 0000000..2bb092b --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/PartitionHash.d.ts @@ -0,0 +1,15 @@ +import { EndpointVariant } from "./EndpointVariant"; +/** + * The hash of partition with the information specific to that partition. + * The information includes the list of regions belonging to that partition, + * and the hostname to be used for the partition. + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type PartitionHash = Record; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/RegionHash.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/RegionHash.d.ts new file mode 100644 index 0000000..afc8fd1 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/RegionHash.d.ts @@ -0,0 +1,13 @@ +import { EndpointVariant } from "./EndpointVariant"; +/** + * The hash of region with the information specific to that region. + * The information can include hostname, signingService and signingRegion. + * + * @internal + * @deprecated unused for endpointRuleSets. + */ +export type RegionHash = Record; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getHostnameFromVariants.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getHostnameFromVariants.d.ts new file mode 100644 index 0000000..955ab23 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getHostnameFromVariants.d.ts @@ -0,0 +1,14 @@ +import { EndpointVariant } from "./EndpointVariant"; +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export interface GetHostnameFromVariantsOptions { + useFipsEndpoint: boolean; + useDualstackEndpoint: boolean; +} +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export declare const getHostnameFromVariants: (variants: EndpointVariant[] | undefined, { useFipsEndpoint, useDualstackEndpoint }: GetHostnameFromVariantsOptions) => string | undefined; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getRegionInfo.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getRegionInfo.d.ts new file mode 100644 index 0000000..599c8df --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getRegionInfo.d.ts @@ -0,0 +1,19 @@ +import { RegionInfo } from "@smithy/types"; +import { PartitionHash } from "./PartitionHash"; +import { RegionHash } from "./RegionHash"; +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export interface GetRegionInfoOptions { + useFipsEndpoint?: boolean; + useDualstackEndpoint?: boolean; + signingService: string; + regionHash: RegionHash; + partitionHash: PartitionHash; +} +/** + * @internal + * @deprecated unused as of endpointsRuleSets. + */ +export declare const getRegionInfo: (region: string, { useFipsEndpoint, useDualstackEndpoint, signingService, regionHash, partitionHash, }: GetRegionInfoOptions) => RegionInfo; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedHostname.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedHostname.d.ts new file mode 100644 index 0000000..1e0709d --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedHostname.d.ts @@ -0,0 +1,13 @@ +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedHostnameOptions { + regionHostname?: string; + partitionHostname?: string; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedHostname: (resolvedRegion: string, { regionHostname, partitionHostname }: GetResolvedHostnameOptions) => string | undefined; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedPartition.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedPartition.d.ts new file mode 100644 index 0000000..2db47fa --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedPartition.d.ts @@ -0,0 +1,13 @@ +import { PartitionHash } from "./PartitionHash"; +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedPartitionOptions { + partitionHash: PartitionHash; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedPartition: (region: string, { partitionHash }: GetResolvedPartitionOptions) => string; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedSigningRegion.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedSigningRegion.d.ts new file mode 100644 index 0000000..459e2ed --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/getResolvedSigningRegion.d.ts @@ -0,0 +1,14 @@ +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export interface GetResolvedSigningRegionOptions { + regionRegex: string; + signingRegion?: string; + useFipsEndpoint: boolean; +} +/** + * @internal + * @deprecated unused for endpointRuleSets. + */ +export declare const getResolvedSigningRegion: (hostname: string, { signingRegion, regionRegex, useFipsEndpoint }: GetResolvedSigningRegionOptions) => string | undefined; diff --git a/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/index.d.ts b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/index.d.ts new file mode 100644 index 0000000..5826308 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/dist-types/ts3.4/regionInfo/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./PartitionHash"; +/** + * @internal + */ +export * from "./RegionHash"; +/** + * @internal + */ +export * from "./getRegionInfo"; diff --git a/bff/node_modules/@smithy/config-resolver/package.json b/bff/node_modules/@smithy/config-resolver/package.json new file mode 100644 index 0000000..694a744 --- /dev/null +++ b/bff/node_modules/@smithy/config-resolver/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/config-resolver", + "version": "4.4.13", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline config-resolver", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "extract:docs": "api-extractor run --local", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/config-resolver", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/config-resolver" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/core/LICENSE b/bff/node_modules/@smithy/core/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/core/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/core/README.md b/bff/node_modules/@smithy/core/README.md new file mode 100644 index 0000000..3fc523a --- /dev/null +++ b/bff/node_modules/@smithy/core/README.md @@ -0,0 +1,56 @@ +# @smithy/core + +[![NPM version](https://img.shields.io/npm/v/@smithy/core/latest.svg)](https://www.npmjs.com/package/@smithy/core) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/core.svg)](https://www.npmjs.com/package/@smithy/core) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- + +This package provides common or core functionality for generic Smithy clients. + +You do not need to explicitly install this package, since it will be installed during code generation if used. + +## Development of `@smithy/core` submodules + +Core submodules are organized for distribution via the `package.json` `exports` field. + +`exports` is supported by default by the latest Node.js, webpack, and esbuild. For react-native, it can be +enabled via instructions found at [reactnative.dev/blog](https://reactnative.dev/blog/2023/06/21/package-exports-support), but we also provide a compatibility redirect. + +Think of `@smithy/core` as a mono-package within the monorepo. +It preserves the benefits of modularization, for example to optimize Node.js initialization speed, +while making it easier to have a consistent version of core dependencies, reducing package sprawl when +installing a Smithy runtime client. + +### Guide for submodules + +- Each `index.ts` file corresponding to the pattern `./src/submodules//index.ts` will be + published as a separate `dist-cjs` bundled submodule index using the `Inliner.js` build script. +- create a folder as `./src/submodules/` including an `index.ts` file and a `README.md` file. + - The linter will throw an error on missing submodule metadata in `package.json` and the various `tsconfig.json` files, but it will automatically fix them if possible. +- a submodule is equivalent to a standalone `@smithy/` package in that importing it in Node.js will resolve a separate bundle. +- submodules may not relatively import files from other submodules. Instead, directly use the `@scope/pkg/submodule` name as the import. + - The linter will check for this and throw an error. +- To the extent possible, correctly declaring submodule metadata is validated by the linter in `@smithy/core`. + The linter runs during `yarn build` and also as `yarn lint`. + +### When should I create an `@smithy/core/submodule` vs. `@smithy/new-package`? + +Keep in mind that the core package is installed by all downstream clients. + +If the component functionality is upstream of multiple clients, it is +a good candidate for a core submodule. For example, if `middleware-retry` had been written +after the support for submodules was added, it would have been a submodule. + +If the component's functionality is downstream of a client (rare), or only expected to be used by a very small +subset of clients, it could be written as a standalone package. diff --git a/bff/node_modules/@smithy/core/cbor.d.ts b/bff/node_modules/@smithy/core/cbor.d.ts new file mode 100644 index 0000000..c44b707 --- /dev/null +++ b/bff/node_modules/@smithy/core/cbor.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/cbor" { + export * from "@smithy/core/dist-types/submodules/cbor/index.d"; +} diff --git a/bff/node_modules/@smithy/core/cbor.js b/bff/node_modules/@smithy/core/cbor.js new file mode 100644 index 0000000..710fb79 --- /dev/null +++ b/bff/node_modules/@smithy/core/cbor.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/cbor/index.js"); diff --git a/bff/node_modules/@smithy/core/dist-cjs/index.js b/bff/node_modules/@smithy/core/dist-cjs/index.js new file mode 100644 index 0000000..d1ca103 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-cjs/index.js @@ -0,0 +1,345 @@ +'use strict'; + +var types = require('@smithy/types'); +var utilMiddleware = require('@smithy/util-middleware'); +var protocolHttp = require('@smithy/protocol-http'); +var protocols = require('@smithy/core/protocols'); + +const getSmithyContext = (context) => context[types.SMITHY_CONTEXT_KEY] || (context[types.SMITHY_CONTEXT_KEY] = {}); + +const resolveAuthOptions = (candidateAuthOptions, authSchemePreference) => { + if (!authSchemePreference || authSchemePreference.length === 0) { + return candidateAuthOptions; + } + const preferredAuthOptions = []; + for (const preferredSchemeName of authSchemePreference) { + for (const candidateAuthOption of candidateAuthOptions) { + const candidateAuthSchemeName = candidateAuthOption.schemeId.split("#")[1]; + if (candidateAuthSchemeName === preferredSchemeName) { + preferredAuthOptions.push(candidateAuthOption); + } + } + } + for (const candidateAuthOption of candidateAuthOptions) { + if (!preferredAuthOptions.find(({ schemeId }) => schemeId === candidateAuthOption.schemeId)) { + preferredAuthOptions.push(candidateAuthOption); + } + } + return preferredAuthOptions; +}; + +function convertHttpAuthSchemesToMap(httpAuthSchemes) { + const map = new Map(); + for (const scheme of httpAuthSchemes) { + map.set(scheme.schemeId, scheme); + } + return map; +} +const httpAuthSchemeMiddleware = (config, mwOptions) => (next, context) => async (args) => { + const options = config.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input)); + const authSchemePreference = config.authSchemePreference ? await config.authSchemePreference() : []; + const resolvedOptions = resolveAuthOptions(options, authSchemePreference); + const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes); + const smithyContext = utilMiddleware.getSmithyContext(context); + const failureReasons = []; + for (const option of resolvedOptions) { + const scheme = authSchemes.get(option.schemeId); + if (!scheme) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` was not enabled for this service.`); + continue; + } + const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config)); + if (!identityProvider) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` did not have an IdentityProvider configured.`); + continue; + } + const { identityProperties = {}, signingProperties = {} } = option.propertiesExtractor?.(config, context) || {}; + option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties); + option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties); + smithyContext.selectedHttpAuthScheme = { + httpAuthOption: option, + identity: await identityProvider(option.identityProperties), + signer: scheme.signer, + }; + break; + } + if (!smithyContext.selectedHttpAuthScheme) { + throw new Error(failureReasons.join("\n")); + } + return next(args); +}; + +const httpAuthSchemeEndpointRuleSetMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "endpointV2Middleware", +}; +const getHttpAuthSchemeEndpointRuleSetPlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider, + }), httpAuthSchemeEndpointRuleSetMiddlewareOptions); + }, +}); + +const httpAuthSchemeMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "serializerMiddleware", +}; +const getHttpAuthSchemePlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider, + }), httpAuthSchemeMiddlewareOptions); + }, +}); + +const defaultErrorHandler = (signingProperties) => (error) => { + throw error; +}; +const defaultSuccessHandler = (httpResponse, signingProperties) => { }; +const httpSigningMiddleware = (config) => (next, context) => async (args) => { + if (!protocolHttp.HttpRequest.isInstance(args.request)) { + return next(args); + } + const smithyContext = utilMiddleware.getSmithyContext(context); + const scheme = smithyContext.selectedHttpAuthScheme; + if (!scheme) { + throw new Error(`No HttpAuthScheme was selected: unable to sign request`); + } + const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme; + const output = await next({ + ...args, + request: await signer.sign(args.request, identity, signingProperties), + }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); + (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); + return output; +}; + +const httpSigningMiddlewareOptions = { + step: "finalizeRequest", + tags: ["HTTP_SIGNING"], + name: "httpSigningMiddleware", + aliases: ["apiKeyMiddleware", "tokenMiddleware", "awsAuthMiddleware"], + override: true, + relation: "after", + toMiddleware: "retryMiddleware", +}; +const getHttpSigningPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpSigningMiddleware(), httpSigningMiddlewareOptions); + }, +}); + +const normalizeProvider = (input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; +}; + +const makePagedClientRequest = async (CommandCtor, client, input, withCommand = (_) => _, ...args) => { + let command = new CommandCtor(input); + command = withCommand(command) ?? command; + return await client.send(command, ...args); +}; +function createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) { + return async function* paginateOperation(config, input, ...additionalArguments) { + const _input = input; + let token = config.startingToken ?? _input[inputTokenName]; + let hasNext = true; + let page; + while (hasNext) { + _input[inputTokenName] = token; + if (pageSizeTokenName) { + _input[pageSizeTokenName] = _input[pageSizeTokenName] ?? config.pageSize; + } + if (config.client instanceof ClientCtor) { + page = await makePagedClientRequest(CommandCtor, config.client, input, config.withCommand, ...additionalArguments); + } + else { + throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`); + } + yield page; + const prevToken = token; + token = get(page, outputTokenName); + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return undefined; + }; +} +const get = (fromObject, path) => { + let cursor = fromObject; + const pathComponents = path.split("."); + for (const step of pathComponents) { + if (!cursor || typeof cursor !== "object") { + return undefined; + } + cursor = cursor[step]; + } + return cursor; +}; + +function setFeature(context, feature, value) { + if (!context.__smithy_context) { + context.__smithy_context = { + features: {}, + }; + } + else if (!context.__smithy_context.features) { + context.__smithy_context.features = {}; + } + context.__smithy_context.features[feature] = value; +} + +class DefaultIdentityProviderConfig { + authSchemes = new Map(); + constructor(config) { + for (const [key, value] of Object.entries(config)) { + if (value !== undefined) { + this.authSchemes.set(key, value); + } + } + } + getIdentityProvider(schemeId) { + return this.authSchemes.get(schemeId); + } +} + +class HttpApiKeyAuthSigner { + async sign(httpRequest, identity, signingProperties) { + if (!signingProperties) { + throw new Error("request could not be signed with `apiKey` since the `name` and `in` signer properties are missing"); + } + if (!signingProperties.name) { + throw new Error("request could not be signed with `apiKey` since the `name` signer property is missing"); + } + if (!signingProperties.in) { + throw new Error("request could not be signed with `apiKey` since the `in` signer property is missing"); + } + if (!identity.apiKey) { + throw new Error("request could not be signed with `apiKey` since the `apiKey` is not defined"); + } + const clonedRequest = protocolHttp.HttpRequest.clone(httpRequest); + if (signingProperties.in === types.HttpApiKeyAuthLocation.QUERY) { + clonedRequest.query[signingProperties.name] = identity.apiKey; + } + else if (signingProperties.in === types.HttpApiKeyAuthLocation.HEADER) { + clonedRequest.headers[signingProperties.name] = signingProperties.scheme + ? `${signingProperties.scheme} ${identity.apiKey}` + : identity.apiKey; + } + else { + throw new Error("request can only be signed with `apiKey` locations `query` or `header`, " + + "but found: `" + + signingProperties.in + + "`"); + } + return clonedRequest; + } +} + +class HttpBearerAuthSigner { + async sign(httpRequest, identity, signingProperties) { + const clonedRequest = protocolHttp.HttpRequest.clone(httpRequest); + if (!identity.token) { + throw new Error("request could not be signed with `token` since the `token` is not defined"); + } + clonedRequest.headers["Authorization"] = `Bearer ${identity.token}`; + return clonedRequest; + } +} + +class NoAuthSigner { + async sign(httpRequest, identity, signingProperties) { + return httpRequest; + } +} + +const createIsIdentityExpiredFunction = (expirationMs) => function isIdentityExpired(identity) { + return doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs; +}; +const EXPIRATION_MS = 300_000; +const isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS); +const doesIdentityRequireRefresh = (identity) => identity.expiration !== undefined; +const memoizeIdentityProvider = (provider, isExpired, requiresRefresh) => { + if (provider === undefined) { + return undefined; + } + const normalizedProvider = typeof provider !== "function" ? async () => Promise.resolve(provider) : provider; + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = async (options) => { + if (!pending) { + pending = normalizedProvider(options); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } + finally { + pending = undefined; + } + return resolved; + }; + if (isExpired === undefined) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + if (isConstant) { + return resolved; + } + if (!requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(options); + return resolved; + } + return resolved; + }; +}; + +exports.requestBuilder = protocols.requestBuilder; +exports.DefaultIdentityProviderConfig = DefaultIdentityProviderConfig; +exports.EXPIRATION_MS = EXPIRATION_MS; +exports.HttpApiKeyAuthSigner = HttpApiKeyAuthSigner; +exports.HttpBearerAuthSigner = HttpBearerAuthSigner; +exports.NoAuthSigner = NoAuthSigner; +exports.createIsIdentityExpiredFunction = createIsIdentityExpiredFunction; +exports.createPaginator = createPaginator; +exports.doesIdentityRequireRefresh = doesIdentityRequireRefresh; +exports.getHttpAuthSchemeEndpointRuleSetPlugin = getHttpAuthSchemeEndpointRuleSetPlugin; +exports.getHttpAuthSchemePlugin = getHttpAuthSchemePlugin; +exports.getHttpSigningPlugin = getHttpSigningPlugin; +exports.getSmithyContext = getSmithyContext; +exports.httpAuthSchemeEndpointRuleSetMiddlewareOptions = httpAuthSchemeEndpointRuleSetMiddlewareOptions; +exports.httpAuthSchemeMiddleware = httpAuthSchemeMiddleware; +exports.httpAuthSchemeMiddlewareOptions = httpAuthSchemeMiddlewareOptions; +exports.httpSigningMiddleware = httpSigningMiddleware; +exports.httpSigningMiddlewareOptions = httpSigningMiddlewareOptions; +exports.isIdentityExpired = isIdentityExpired; +exports.memoizeIdentityProvider = memoizeIdentityProvider; +exports.normalizeProvider = normalizeProvider; +exports.setFeature = setFeature; diff --git a/bff/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js b/bff/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js new file mode 100644 index 0000000..1b6d5af --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js @@ -0,0 +1,1096 @@ +'use strict'; + +var serde = require('@smithy/core/serde'); +var utilUtf8 = require('@smithy/util-utf8'); +var protocols = require('@smithy/core/protocols'); +var protocolHttp = require('@smithy/protocol-http'); +var utilBodyLengthBrowser = require('@smithy/util-body-length-browser'); +var schema = require('@smithy/core/schema'); +var utilMiddleware = require('@smithy/util-middleware'); +var utilBase64 = require('@smithy/util-base64'); + +const majorUint64 = 0; +const majorNegativeInt64 = 1; +const majorUnstructuredByteString = 2; +const majorUtf8String = 3; +const majorList = 4; +const majorMap = 5; +const majorTag = 6; +const majorSpecial = 7; +const specialFalse = 20; +const specialTrue = 21; +const specialNull = 22; +const specialUndefined = 23; +const extendedOneByte = 24; +const extendedFloat16 = 25; +const extendedFloat32 = 26; +const extendedFloat64 = 27; +const minorIndefinite = 31; +function alloc(size) { + return typeof Buffer !== "undefined" ? Buffer.alloc(size) : new Uint8Array(size); +} +const tagSymbol = Symbol("@smithy/core/cbor::tagSymbol"); +function tag(data) { + data[tagSymbol] = true; + return data; +} + +const USE_TEXT_DECODER = typeof TextDecoder !== "undefined"; +const USE_BUFFER$1 = typeof Buffer !== "undefined"; +let payload = alloc(0); +let dataView$1 = new DataView(payload.buffer, payload.byteOffset, payload.byteLength); +const textDecoder = USE_TEXT_DECODER ? new TextDecoder() : null; +let _offset = 0; +function setPayload(bytes) { + payload = bytes; + dataView$1 = new DataView(payload.buffer, payload.byteOffset, payload.byteLength); +} +function decode(at, to) { + if (at >= to) { + throw new Error("unexpected end of (decode) payload."); + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + switch (major) { + case majorUint64: + case majorNegativeInt64: + case majorTag: + let unsignedInt; + let offset; + if (minor < 24) { + unsignedInt = minor; + offset = 1; + } + else { + switch (minor) { + case extendedOneByte: + case extendedFloat16: + case extendedFloat32: + case extendedFloat64: + const countLength = minorValueToArgumentLength[minor]; + const countOffset = (countLength + 1); + offset = countOffset; + if (to - at < countOffset) { + throw new Error(`countLength ${countLength} greater than remaining buf len.`); + } + const countIndex = at + 1; + if (countLength === 1) { + unsignedInt = payload[countIndex]; + } + else if (countLength === 2) { + unsignedInt = dataView$1.getUint16(countIndex); + } + else if (countLength === 4) { + unsignedInt = dataView$1.getUint32(countIndex); + } + else { + unsignedInt = dataView$1.getBigUint64(countIndex); + } + break; + default: + throw new Error(`unexpected minor value ${minor}.`); + } + } + if (major === majorUint64) { + _offset = offset; + return castBigInt(unsignedInt); + } + else if (major === majorNegativeInt64) { + let negativeInt; + if (typeof unsignedInt === "bigint") { + negativeInt = BigInt(-1) - unsignedInt; + } + else { + negativeInt = -1 - unsignedInt; + } + _offset = offset; + return castBigInt(negativeInt); + } + else { + if (minor === 2 || minor === 3) { + const length = decodeCount(at + offset, to); + let b = BigInt(0); + const start = at + offset + _offset; + for (let i = start; i < start + length; ++i) { + b = (b << BigInt(8)) | BigInt(payload[i]); + } + _offset = offset + _offset + length; + return minor === 3 ? -b - BigInt(1) : b; + } + else if (minor === 4) { + const decimalFraction = decode(at + offset, to); + const [exponent, mantissa] = decimalFraction; + const normalizer = mantissa < 0 ? -1 : 1; + const mantissaStr = "0".repeat(Math.abs(exponent) + 1) + String(BigInt(normalizer) * BigInt(mantissa)); + let numericString; + const sign = mantissa < 0 ? "-" : ""; + numericString = + exponent === 0 + ? mantissaStr + : mantissaStr.slice(0, mantissaStr.length + exponent) + "." + mantissaStr.slice(exponent); + numericString = numericString.replace(/^0+/g, ""); + if (numericString === "") { + numericString = "0"; + } + if (numericString[0] === ".") { + numericString = "0" + numericString; + } + numericString = sign + numericString; + _offset = offset + _offset; + return serde.nv(numericString); + } + else { + const value = decode(at + offset, to); + const valueOffset = _offset; + _offset = offset + valueOffset; + return tag({ tag: castBigInt(unsignedInt), value }); + } + } + case majorUtf8String: + case majorMap: + case majorList: + case majorUnstructuredByteString: + if (minor === minorIndefinite) { + switch (major) { + case majorUtf8String: + return decodeUtf8StringIndefinite(at, to); + case majorMap: + return decodeMapIndefinite(at, to); + case majorList: + return decodeListIndefinite(at, to); + case majorUnstructuredByteString: + return decodeUnstructuredByteStringIndefinite(at, to); + } + } + else { + switch (major) { + case majorUtf8String: + return decodeUtf8String(at, to); + case majorMap: + return decodeMap(at, to); + case majorList: + return decodeList(at, to); + case majorUnstructuredByteString: + return decodeUnstructuredByteString(at, to); + } + } + default: + return decodeSpecial(at, to); + } +} +function bytesToUtf8(bytes, at, to) { + if (USE_BUFFER$1 && bytes.constructor?.name === "Buffer") { + return bytes.toString("utf-8", at, to); + } + if (textDecoder) { + return textDecoder.decode(bytes.subarray(at, to)); + } + return utilUtf8.toUtf8(bytes.subarray(at, to)); +} +function demote(bigInteger) { + const num = Number(bigInteger); + if (num < Number.MIN_SAFE_INTEGER || Number.MAX_SAFE_INTEGER < num) { + console.warn(new Error(`@smithy/core/cbor - truncating BigInt(${bigInteger}) to ${num} with loss of precision.`)); + } + return num; +} +const minorValueToArgumentLength = { + [extendedOneByte]: 1, + [extendedFloat16]: 2, + [extendedFloat32]: 4, + [extendedFloat64]: 8, +}; +function bytesToFloat16(a, b) { + const sign = a >> 7; + const exponent = (a & 0b0111_1100) >> 2; + const fraction = ((a & 0b0000_0011) << 8) | b; + const scalar = sign === 0 ? 1 : -1; + let exponentComponent; + let summation; + if (exponent === 0b00000) { + if (fraction === 0b00000_00000) { + return 0; + } + else { + exponentComponent = Math.pow(2, 1 - 15); + summation = 0; + } + } + else if (exponent === 0b11111) { + if (fraction === 0b00000_00000) { + return scalar * Infinity; + } + else { + return NaN; + } + } + else { + exponentComponent = Math.pow(2, exponent - 15); + summation = 1; + } + summation += fraction / 1024; + return scalar * (exponentComponent * summation); +} +function decodeCount(at, to) { + const minor = payload[at] & 0b0001_1111; + if (minor < 24) { + _offset = 1; + return minor; + } + if (minor === extendedOneByte || + minor === extendedFloat16 || + minor === extendedFloat32 || + minor === extendedFloat64) { + const countLength = minorValueToArgumentLength[minor]; + _offset = (countLength + 1); + if (to - at < _offset) { + throw new Error(`countLength ${countLength} greater than remaining buf len.`); + } + const countIndex = at + 1; + if (countLength === 1) { + return payload[countIndex]; + } + else if (countLength === 2) { + return dataView$1.getUint16(countIndex); + } + else if (countLength === 4) { + return dataView$1.getUint32(countIndex); + } + return demote(dataView$1.getBigUint64(countIndex)); + } + throw new Error(`unexpected minor value ${minor}.`); +} +function decodeUtf8String(at, to) { + const length = decodeCount(at, to); + const offset = _offset; + at += offset; + if (to - at < length) { + throw new Error(`string len ${length} greater than remaining buf len.`); + } + const value = bytesToUtf8(payload, at, at + length); + _offset = offset + length; + return value; +} +function decodeUtf8StringIndefinite(at, to) { + at += 1; + const vector = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + const data = alloc(vector.length); + data.set(vector, 0); + _offset = at - base + 2; + return bytesToUtf8(data, 0, data.length); + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} in indefinite string.`); + } + if (minor === minorIndefinite) { + throw new Error("nested indefinite string."); + } + const bytes = decodeUnstructuredByteString(at, to); + const length = _offset; + at += length; + for (let i = 0; i < bytes.length; ++i) { + vector.push(bytes[i]); + } + } + throw new Error("expected break marker."); +} +function decodeUnstructuredByteString(at, to) { + const length = decodeCount(at, to); + const offset = _offset; + at += offset; + if (to - at < length) { + throw new Error(`unstructured byte string len ${length} greater than remaining buf len.`); + } + const value = payload.subarray(at, at + length); + _offset = offset + length; + return value; +} +function decodeUnstructuredByteStringIndefinite(at, to) { + at += 1; + const vector = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + const data = alloc(vector.length); + data.set(vector, 0); + _offset = at - base + 2; + return data; + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + if (major !== majorUnstructuredByteString) { + throw new Error(`unexpected major type ${major} in indefinite string.`); + } + if (minor === minorIndefinite) { + throw new Error("nested indefinite string."); + } + const bytes = decodeUnstructuredByteString(at, to); + const length = _offset; + at += length; + for (let i = 0; i < bytes.length; ++i) { + vector.push(bytes[i]); + } + } + throw new Error("expected break marker."); +} +function decodeList(at, to) { + const listDataLength = decodeCount(at, to); + const offset = _offset; + at += offset; + const base = at; + const list = Array(listDataLength); + for (let i = 0; i < listDataLength; ++i) { + const item = decode(at, to); + const itemOffset = _offset; + list[i] = item; + at += itemOffset; + } + _offset = offset + (at - base); + return list; +} +function decodeListIndefinite(at, to) { + at += 1; + const list = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + _offset = at - base + 2; + return list; + } + const item = decode(at, to); + const n = _offset; + at += n; + list.push(item); + } + throw new Error("expected break marker."); +} +function decodeMap(at, to) { + const mapDataLength = decodeCount(at, to); + const offset = _offset; + at += offset; + const base = at; + const map = {}; + for (let i = 0; i < mapDataLength; ++i) { + if (at >= to) { + throw new Error("unexpected end of map payload."); + } + const major = (payload[at] & 0b1110_0000) >> 5; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} for map key at index ${at}.`); + } + const key = decode(at, to); + at += _offset; + const value = decode(at, to); + at += _offset; + map[key] = value; + } + _offset = offset + (at - base); + return map; +} +function decodeMapIndefinite(at, to) { + at += 1; + const base = at; + const map = {}; + for (; at < to;) { + if (at >= to) { + throw new Error("unexpected end of map payload."); + } + if (payload[at] === 0b1111_1111) { + _offset = at - base + 2; + return map; + } + const major = (payload[at] & 0b1110_0000) >> 5; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} for map key.`); + } + const key = decode(at, to); + at += _offset; + const value = decode(at, to); + at += _offset; + map[key] = value; + } + throw new Error("expected break marker."); +} +function decodeSpecial(at, to) { + const minor = payload[at] & 0b0001_1111; + switch (minor) { + case specialTrue: + case specialFalse: + _offset = 1; + return minor === specialTrue; + case specialNull: + _offset = 1; + return null; + case specialUndefined: + _offset = 1; + return null; + case extendedFloat16: + if (to - at < 3) { + throw new Error("incomplete float16 at end of buf."); + } + _offset = 3; + return bytesToFloat16(payload[at + 1], payload[at + 2]); + case extendedFloat32: + if (to - at < 5) { + throw new Error("incomplete float32 at end of buf."); + } + _offset = 5; + return dataView$1.getFloat32(at + 1); + case extendedFloat64: + if (to - at < 9) { + throw new Error("incomplete float64 at end of buf."); + } + _offset = 9; + return dataView$1.getFloat64(at + 1); + default: + throw new Error(`unexpected minor value ${minor}.`); + } +} +function castBigInt(bigInt) { + if (typeof bigInt === "number") { + return bigInt; + } + const num = Number(bigInt); + if (Number.MIN_SAFE_INTEGER <= num && num <= Number.MAX_SAFE_INTEGER) { + return num; + } + return bigInt; +} + +const USE_BUFFER = typeof Buffer !== "undefined"; +const initialSize = 2048; +let data = alloc(initialSize); +let dataView = new DataView(data.buffer, data.byteOffset, data.byteLength); +let cursor = 0; +function ensureSpace(bytes) { + const remaining = data.byteLength - cursor; + if (remaining < bytes) { + if (cursor < 16_000_000) { + resize(Math.max(data.byteLength * 4, data.byteLength + bytes)); + } + else { + resize(data.byteLength + bytes + 16_000_000); + } + } +} +function toUint8Array() { + const out = alloc(cursor); + out.set(data.subarray(0, cursor), 0); + cursor = 0; + return out; +} +function resize(size) { + const old = data; + data = alloc(size); + if (old) { + if (old.copy) { + old.copy(data, 0, 0, old.byteLength); + } + else { + data.set(old, 0); + } + } + dataView = new DataView(data.buffer, data.byteOffset, data.byteLength); +} +function encodeHeader(major, value) { + if (value < 24) { + data[cursor++] = (major << 5) | value; + } + else if (value < 1 << 8) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = value; + } + else if (value < 1 << 16) { + data[cursor++] = (major << 5) | extendedFloat16; + dataView.setUint16(cursor, value); + cursor += 2; + } + else if (value < 2 ** 32) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, value); + cursor += 4; + } + else { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, typeof value === "bigint" ? value : BigInt(value)); + cursor += 8; + } +} +function encode(_input) { + const encodeStack = [_input]; + while (encodeStack.length) { + const input = encodeStack.pop(); + ensureSpace(typeof input === "string" ? input.length * 4 : 64); + if (typeof input === "string") { + if (USE_BUFFER) { + encodeHeader(majorUtf8String, Buffer.byteLength(input)); + cursor += data.write(input, cursor); + } + else { + const bytes = utilUtf8.fromUtf8(input); + encodeHeader(majorUtf8String, bytes.byteLength); + data.set(bytes, cursor); + cursor += bytes.byteLength; + } + continue; + } + else if (typeof input === "number") { + if (Number.isInteger(input)) { + const nonNegative = input >= 0; + const major = nonNegative ? majorUint64 : majorNegativeInt64; + const value = nonNegative ? input : -input - 1; + if (value < 24) { + data[cursor++] = (major << 5) | value; + } + else if (value < 256) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = value; + } + else if (value < 65536) { + data[cursor++] = (major << 5) | extendedFloat16; + data[cursor++] = value >> 8; + data[cursor++] = value; + } + else if (value < 4294967296) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, value); + cursor += 4; + } + else { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, BigInt(value)); + cursor += 8; + } + continue; + } + data[cursor++] = (majorSpecial << 5) | extendedFloat64; + dataView.setFloat64(cursor, input); + cursor += 8; + continue; + } + else if (typeof input === "bigint") { + const nonNegative = input >= 0; + const major = nonNegative ? majorUint64 : majorNegativeInt64; + const value = nonNegative ? input : -input - BigInt(1); + const n = Number(value); + if (n < 24) { + data[cursor++] = (major << 5) | n; + } + else if (n < 256) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = n; + } + else if (n < 65536) { + data[cursor++] = (major << 5) | extendedFloat16; + data[cursor++] = n >> 8; + data[cursor++] = n & 0b1111_1111; + } + else if (n < 4294967296) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, n); + cursor += 4; + } + else if (value < BigInt("18446744073709551616")) { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, value); + cursor += 8; + } + else { + const binaryBigInt = value.toString(2); + const bigIntBytes = new Uint8Array(Math.ceil(binaryBigInt.length / 8)); + let b = value; + let i = 0; + while (bigIntBytes.byteLength - ++i >= 0) { + bigIntBytes[bigIntBytes.byteLength - i] = Number(b & BigInt(255)); + b >>= BigInt(8); + } + ensureSpace(bigIntBytes.byteLength * 2); + data[cursor++] = nonNegative ? 0b110_00010 : 0b110_00011; + if (USE_BUFFER) { + encodeHeader(majorUnstructuredByteString, Buffer.byteLength(bigIntBytes)); + } + else { + encodeHeader(majorUnstructuredByteString, bigIntBytes.byteLength); + } + data.set(bigIntBytes, cursor); + cursor += bigIntBytes.byteLength; + } + continue; + } + else if (input === null) { + data[cursor++] = (majorSpecial << 5) | specialNull; + continue; + } + else if (typeof input === "boolean") { + data[cursor++] = (majorSpecial << 5) | (input ? specialTrue : specialFalse); + continue; + } + else if (typeof input === "undefined") { + throw new Error("@smithy/core/cbor: client may not serialize undefined value."); + } + else if (Array.isArray(input)) { + for (let i = input.length - 1; i >= 0; --i) { + encodeStack.push(input[i]); + } + encodeHeader(majorList, input.length); + continue; + } + else if (typeof input.byteLength === "number") { + ensureSpace(input.length * 2); + encodeHeader(majorUnstructuredByteString, input.length); + data.set(input, cursor); + cursor += input.byteLength; + continue; + } + else if (typeof input === "object") { + if (input instanceof serde.NumericValue) { + const decimalIndex = input.string.indexOf("."); + const exponent = decimalIndex === -1 ? 0 : decimalIndex - input.string.length + 1; + const mantissa = BigInt(input.string.replace(".", "")); + data[cursor++] = 0b110_00100; + encodeStack.push(mantissa); + encodeStack.push(exponent); + encodeHeader(majorList, 2); + continue; + } + if (input[tagSymbol]) { + if ("tag" in input && "value" in input) { + encodeStack.push(input.value); + encodeHeader(majorTag, input.tag); + continue; + } + else { + throw new Error("tag encountered with missing fields, need 'tag' and 'value', found: " + JSON.stringify(input)); + } + } + const keys = Object.keys(input); + for (let i = keys.length - 1; i >= 0; --i) { + const key = keys[i]; + encodeStack.push(input[key]); + encodeStack.push(key); + } + encodeHeader(majorMap, keys.length); + continue; + } + throw new Error(`data type ${input?.constructor?.name ?? typeof input} not compatible for encoding.`); + } +} + +const cbor = { + deserialize(payload) { + setPayload(payload); + return decode(0, payload.length); + }, + serialize(input) { + try { + encode(input); + return toUint8Array(); + } + catch (e) { + toUint8Array(); + throw e; + } + }, + resizeEncodingBuffer(size) { + resize(size); + }, +}; + +const parseCborBody = (streamBody, context) => { + return protocols.collectBody(streamBody, context).then(async (bytes) => { + if (bytes.length) { + try { + return cbor.deserialize(bytes); + } + catch (e) { + Object.defineProperty(e, "$responseBodyText", { + value: context.utf8Encoder(bytes), + }); + throw e; + } + } + return {}; + }); +}; +const dateToTag = (date) => { + return tag({ + tag: 1, + value: date.getTime() / 1000, + }); +}; +const parseCborErrorBody = async (errorBody, context) => { + const value = await parseCborBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +const loadSmithyRpcV2CborErrorCode = (output, data) => { + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + const codeKey = Object.keys(data).find((key) => key.toLowerCase() === "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } +}; +const checkCborResponse = (response) => { + if (String(response.headers["smithy-protocol"]).toLowerCase() !== "rpc-v2-cbor") { + throw new Error("Malformed RPCv2 CBOR response, status: " + response.statusCode); + } +}; +const buildHttpRpcRequest = async (context, headers, path, resolvedHostname, body) => { + const endpoint = await context.endpoint(); + const { hostname, protocol = "https", port, path: basePath } = endpoint; + const contents = { + protocol, + hostname, + port, + method: "POST", + path: basePath.endsWith("/") ? basePath.slice(0, -1) + path : basePath + path, + headers: { + ...headers, + }, + }; + if (resolvedHostname !== undefined) { + contents.hostname = resolvedHostname; + } + if (endpoint.headers) { + for (const [name, value] of Object.entries(endpoint.headers)) { + contents.headers[name] = value; + } + } + if (body !== undefined) { + contents.body = body; + try { + contents.headers["content-length"] = String(utilBodyLengthBrowser.calculateBodyLength(body)); + } + catch (e) { } + } + return new protocolHttp.HttpRequest(contents); +}; + +class CborCodec extends protocols.SerdeContext { + createSerializer() { + const serializer = new CborShapeSerializer(); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new CborShapeDeserializer(); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} +class CborShapeSerializer extends protocols.SerdeContext { + value; + write(schema, value) { + this.value = this.serialize(schema, value); + } + serialize(schema$1, source) { + const ns = schema.NormalizedSchema.of(schema$1); + if (source == null) { + if (ns.isIdempotencyToken()) { + return serde.generateIdempotencyToken(); + } + return source; + } + if (ns.isBlobSchema()) { + if (typeof source === "string") { + return (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(source); + } + return source; + } + if (ns.isTimestampSchema()) { + if (typeof source === "number" || typeof source === "bigint") { + return dateToTag(new Date((Number(source) / 1000) | 0)); + } + return dateToTag(source); + } + if (typeof source === "function" || typeof source === "object") { + const sourceObject = source; + if (ns.isListSchema() && Array.isArray(sourceObject)) { + const sparse = !!ns.getMergedTraits().sparse; + const newArray = []; + let i = 0; + for (const item of sourceObject) { + const value = this.serialize(ns.getValueSchema(), item); + if (value != null || sparse) { + newArray[i++] = value; + } + } + return newArray; + } + if (sourceObject instanceof Date) { + return dateToTag(sourceObject); + } + const newObject = {}; + if (ns.isMapSchema()) { + const sparse = !!ns.getMergedTraits().sparse; + for (const key of Object.keys(sourceObject)) { + const value = this.serialize(ns.getValueSchema(), sourceObject[key]); + if (value != null || sparse) { + newObject[key] = value; + } + } + } + else if (ns.isStructSchema()) { + for (const [key, memberSchema] of ns.structIterator()) { + const value = this.serialize(memberSchema, sourceObject[key]); + if (value != null) { + newObject[key] = value; + } + } + const isUnion = ns.isUnionSchema(); + if (isUnion && Array.isArray(sourceObject.$unknown)) { + const [k, v] = sourceObject.$unknown; + newObject[k] = v; + } + else if (typeof sourceObject.__type === "string") { + for (const [k, v] of Object.entries(sourceObject)) { + if (!(k in newObject)) { + newObject[k] = this.serialize(15, v); + } + } + } + } + else if (ns.isDocumentSchema()) { + for (const key of Object.keys(sourceObject)) { + newObject[key] = this.serialize(ns.getValueSchema(), sourceObject[key]); + } + } + else if (ns.isBigDecimalSchema()) { + return sourceObject; + } + return newObject; + } + return source; + } + flush() { + const buffer = cbor.serialize(this.value); + this.value = undefined; + return buffer; + } +} +class CborShapeDeserializer extends protocols.SerdeContext { + read(schema, bytes) { + const data = cbor.deserialize(bytes); + return this.readValue(schema, data); + } + readValue(_schema, value) { + const ns = schema.NormalizedSchema.of(_schema); + if (ns.isTimestampSchema()) { + if (typeof value === "number") { + return serde._parseEpochTimestamp(value); + } + if (typeof value === "object") { + if (value.tag === 1 && "value" in value) { + return serde._parseEpochTimestamp(value.value); + } + } + } + if (ns.isBlobSchema()) { + if (typeof value === "string") { + return (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(value); + } + return value; + } + if (typeof value === "undefined" || + typeof value === "boolean" || + typeof value === "number" || + typeof value === "string" || + typeof value === "bigint" || + typeof value === "symbol") { + return value; + } + else if (typeof value === "object") { + if (value === null) { + return null; + } + if ("byteLength" in value) { + return value; + } + if (value instanceof Date) { + return value; + } + if (ns.isDocumentSchema()) { + return value; + } + if (ns.isListSchema()) { + const newArray = []; + const memberSchema = ns.getValueSchema(); + for (const item of value) { + const itemValue = this.readValue(memberSchema, item); + newArray.push(itemValue); + } + return newArray; + } + const newObject = {}; + if (ns.isMapSchema()) { + const targetSchema = ns.getValueSchema(); + for (const key of Object.keys(value)) { + const itemValue = this.readValue(targetSchema, value[key]); + newObject[key] = itemValue; + } + } + else if (ns.isStructSchema()) { + const isUnion = ns.isUnionSchema(); + let keys; + if (isUnion) { + keys = new Set(Object.keys(value).filter((k) => k !== "__type")); + } + for (const [key, memberSchema] of ns.structIterator()) { + if (isUnion) { + keys.delete(key); + } + if (value[key] != null) { + newObject[key] = this.readValue(memberSchema, value[key]); + } + } + if (isUnion && keys?.size === 1 && Object.keys(newObject).length === 0) { + const k = keys.values().next().value; + newObject.$unknown = [k, value[k]]; + } + else if (typeof value.__type === "string") { + for (const [k, v] of Object.entries(value)) { + if (!(k in newObject)) { + newObject[k] = v; + } + } + } + } + else if (value instanceof serde.NumericValue) { + return value; + } + return newObject; + } + else { + return value; + } + } +} + +class SmithyRpcV2CborProtocol extends protocols.RpcProtocol { + codec = new CborCodec(); + serializer = this.codec.createSerializer(); + deserializer = this.codec.createDeserializer(); + constructor({ defaultNamespace, errorTypeRegistries, }) { + super({ defaultNamespace, errorTypeRegistries }); + } + getShapeId() { + return "smithy.protocols#rpcv2Cbor"; + } + getPayloadCodec() { + return this.codec; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + Object.assign(request.headers, { + "content-type": this.getDefaultContentType(), + "smithy-protocol": "rpc-v2-cbor", + accept: this.getDefaultContentType(), + }); + if (schema.deref(operationSchema.input) === "unit") { + delete request.body; + delete request.headers["content-type"]; + } + else { + if (!request.body) { + this.serializer.write(15, {}); + request.body = this.serializer.flush(); + } + try { + request.headers["content-length"] = String(request.body.byteLength); + } + catch (e) { } + } + const { service, operation } = utilMiddleware.getSmithyContext(context); + const path = `/service/${service}/operation/${operation}`; + if (request.path.endsWith("/")) { + request.path += path.slice(1); + } + else { + request.path += path; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorName = loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode <= 500 ? "client" : "server", + }; + let namespace = this.options.defaultNamespace; + if (errorName.includes("#")) { + [namespace] = errorName.split("#"); + } + const registry = this.compositeErrorRegistry; + const nsRegistry = schema.TypeRegistry.for(namespace); + registry.copyFrom(nsRegistry); + let errorSchema; + try { + errorSchema = registry.getSchema(errorName); + } + catch (e) { + if (dataObject.Message) { + dataObject.message = dataObject.Message; + } + const syntheticRegistry = schema.TypeRegistry.for("smithy.ts.sdk.synthetic." + namespace); + registry.copyFrom(syntheticRegistry); + const baseExceptionSchema = registry.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = registry.getErrorCtor(baseExceptionSchema); + throw Object.assign(new ErrorCtor({ name: errorName }), errorMetadata, dataObject); + } + throw Object.assign(new Error(errorName), errorMetadata, dataObject); + } + const ns = schema.NormalizedSchema.of(errorSchema); + const ErrorCtor = registry.getErrorCtor(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + throw Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output); + } + getDefaultContentType() { + return "application/cbor"; + } +} + +exports.CborCodec = CborCodec; +exports.CborShapeDeserializer = CborShapeDeserializer; +exports.CborShapeSerializer = CborShapeSerializer; +exports.SmithyRpcV2CborProtocol = SmithyRpcV2CborProtocol; +exports.buildHttpRpcRequest = buildHttpRpcRequest; +exports.cbor = cbor; +exports.checkCborResponse = checkCborResponse; +exports.dateToTag = dateToTag; +exports.loadSmithyRpcV2CborErrorCode = loadSmithyRpcV2CborErrorCode; +exports.parseCborBody = parseCborBody; +exports.parseCborErrorBody = parseCborErrorBody; +exports.tag = tag; +exports.tagSymbol = tagSymbol; diff --git a/bff/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js b/bff/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js new file mode 100644 index 0000000..2a8bae0 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js @@ -0,0 +1,22 @@ +'use strict'; + +var urlParser = require('@smithy/url-parser'); + +const toEndpointV1 = (endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + const v1Endpoint = urlParser.parseUrl(endpoint.url); + if (endpoint.headers) { + v1Endpoint.headers = {}; + for (const [name, values] of Object.entries(endpoint.headers)) { + v1Endpoint.headers[name.toLowerCase()] = values.join(", "); + } + } + return v1Endpoint; + } + return endpoint; + } + return urlParser.parseUrl(endpoint); +}; + +exports.toEndpointV1 = toEndpointV1; diff --git a/bff/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js b/bff/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js new file mode 100644 index 0000000..d43955d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js @@ -0,0 +1,259 @@ +'use strict'; + +var utilUtf8 = require('@smithy/util-utf8'); + +class EventStreamSerde { + marshaller; + serializer; + deserializer; + serdeContext; + defaultContentType; + constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, }) { + this.marshaller = marshaller; + this.serializer = serializer; + this.deserializer = deserializer; + this.serdeContext = serdeContext; + this.defaultContentType = defaultContentType; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest, }) { + const marshaller = this.marshaller; + const eventStreamMember = requestSchema.getEventStreamMember(); + const unionSchema = requestSchema.getMemberSchema(eventStreamMember); + const serializer = this.serializer; + const defaultContentType = this.defaultContentType; + const initialRequestMarker = Symbol("initialRequestMarker"); + const eventStreamIterable = { + async *[Symbol.asyncIterator]() { + if (initialRequest) { + const headers = { + ":event-type": { type: "string", value: "initial-request" }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: defaultContentType }, + }; + serializer.write(requestSchema, initialRequest); + const body = serializer.flush(); + yield { + [initialRequestMarker]: true, + headers, + body, + }; + } + for await (const page of eventStream) { + yield page; + } + }, + }; + return marshaller.serialize(eventStreamIterable, (event) => { + if (event[initialRequestMarker]) { + return { + headers: event.headers, + body: event.body, + }; + } + const unionMember = Object.keys(event).find((key) => { + return key !== "__type"; + }) ?? ""; + const { additionalHeaders, body, eventType, explicitPayloadContentType } = this.writeEventBody(unionMember, unionSchema, event); + const headers = { + ":event-type": { type: "string", value: eventType }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: explicitPayloadContentType ?? defaultContentType }, + ...additionalHeaders, + }; + return { + headers, + body, + }; + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) { + const marshaller = this.marshaller; + const eventStreamMember = responseSchema.getEventStreamMember(); + const unionSchema = responseSchema.getMemberSchema(eventStreamMember); + const memberSchemas = unionSchema.getMemberSchemas(); + const initialResponseMarker = Symbol("initialResponseMarker"); + const asyncIterable = marshaller.deserialize(response.body, async (event) => { + const unionMember = Object.keys(event).find((key) => { + return key !== "__type"; + }) ?? ""; + const body = event[unionMember].body; + if (unionMember === "initial-response") { + const dataObject = await this.deserializer.read(responseSchema, body); + delete dataObject[eventStreamMember]; + return { + [initialResponseMarker]: true, + ...dataObject, + }; + } + else if (unionMember in memberSchemas) { + const eventStreamSchema = memberSchemas[unionMember]; + if (eventStreamSchema.isStructSchema()) { + const out = {}; + let hasBindings = false; + for (const [name, member] of eventStreamSchema.structIterator()) { + const { eventHeader, eventPayload } = member.getMergedTraits(); + hasBindings = hasBindings || Boolean(eventHeader || eventPayload); + if (eventPayload) { + if (member.isBlobSchema()) { + out[name] = body; + } + else if (member.isStringSchema()) { + out[name] = (this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8)(body); + } + else if (member.isStructSchema()) { + out[name] = await this.deserializer.read(member, body); + } + } + else if (eventHeader) { + const value = event[unionMember].headers[name]?.value; + if (value != null) { + if (member.isNumericSchema()) { + if (value && typeof value === "object" && "bytes" in value) { + out[name] = BigInt(value.toString()); + } + else { + out[name] = Number(value); + } + } + else { + out[name] = value; + } + } + } + } + if (hasBindings) { + return { + [unionMember]: out, + }; + } + if (body.byteLength === 0) { + return { + [unionMember]: {}, + }; + } + } + return { + [unionMember]: await this.deserializer.read(eventStreamSchema, body), + }; + } + else { + return { + $unknown: event, + }; + } + }); + const asyncIterator = asyncIterable[Symbol.asyncIterator](); + const firstEvent = await asyncIterator.next(); + if (firstEvent.done) { + return asyncIterable; + } + if (firstEvent.value?.[initialResponseMarker]) { + if (!responseSchema) { + throw new Error("@smithy::core/protocols - initial-response event encountered in event stream but no response schema given."); + } + for (const [key, value] of Object.entries(firstEvent.value)) { + initialResponseContainer[key] = value; + } + } + return { + async *[Symbol.asyncIterator]() { + if (!firstEvent?.value?.[initialResponseMarker]) { + yield firstEvent.value; + } + while (true) { + const { done, value } = await asyncIterator.next(); + if (done) { + break; + } + yield value; + } + }, + }; + } + writeEventBody(unionMember, unionSchema, event) { + const serializer = this.serializer; + let eventType = unionMember; + let explicitPayloadMember = null; + let explicitPayloadContentType; + const isKnownSchema = (() => { + const struct = unionSchema.getSchema(); + return struct[4].includes(unionMember); + })(); + const additionalHeaders = {}; + if (!isKnownSchema) { + const [type, value] = event[unionMember]; + eventType = type; + serializer.write(15, value); + } + else { + const eventSchema = unionSchema.getMemberSchema(unionMember); + if (eventSchema.isStructSchema()) { + for (const [memberName, memberSchema] of eventSchema.structIterator()) { + const { eventHeader, eventPayload } = memberSchema.getMergedTraits(); + if (eventPayload) { + explicitPayloadMember = memberName; + } + else if (eventHeader) { + const value = event[unionMember][memberName]; + let type = "binary"; + if (memberSchema.isNumericSchema()) { + if ((-2) ** 31 <= value && value <= 2 ** 31 - 1) { + type = "integer"; + } + else { + type = "long"; + } + } + else if (memberSchema.isTimestampSchema()) { + type = "timestamp"; + } + else if (memberSchema.isStringSchema()) { + type = "string"; + } + else if (memberSchema.isBooleanSchema()) { + type = "boolean"; + } + if (value != null) { + additionalHeaders[memberName] = { + type, + value, + }; + delete event[unionMember][memberName]; + } + } + } + if (explicitPayloadMember !== null) { + const payloadSchema = eventSchema.getMemberSchema(explicitPayloadMember); + if (payloadSchema.isBlobSchema()) { + explicitPayloadContentType = "application/octet-stream"; + } + else if (payloadSchema.isStringSchema()) { + explicitPayloadContentType = "text/plain"; + } + serializer.write(payloadSchema, event[unionMember][explicitPayloadMember]); + } + else { + serializer.write(eventSchema, event[unionMember]); + } + } + else if (eventSchema.isUnitSchema()) { + serializer.write(eventSchema, {}); + } + else { + throw new Error("@smithy/core/event-streams - non-struct member not supported in event stream union."); + } + } + const messageSerialization = serializer.flush() ?? new Uint8Array(); + const body = typeof messageSerialization === "string" + ? (this.serdeContext?.utf8Decoder ?? utilUtf8.fromUtf8)(messageSerialization) + : messageSerialization; + return { + body, + eventType, + explicitPayloadContentType, + additionalHeaders, + }; + } +} + +exports.EventStreamSerde = EventStreamSerde; diff --git a/bff/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js b/bff/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js new file mode 100644 index 0000000..2c95cb9 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js @@ -0,0 +1,875 @@ +'use strict'; + +var utilStream = require('@smithy/util-stream'); +var schema = require('@smithy/core/schema'); +var serde = require('@smithy/core/serde'); +var protocolHttp = require('@smithy/protocol-http'); +var utilBase64 = require('@smithy/util-base64'); +var utilUtf8 = require('@smithy/util-utf8'); + +const collectBody = async (streamBody = new Uint8Array(), context) => { + if (streamBody instanceof Uint8Array) { + return utilStream.Uint8ArrayBlobAdapter.mutate(streamBody); + } + if (!streamBody) { + return utilStream.Uint8ArrayBlobAdapter.mutate(new Uint8Array()); + } + const fromContext = context.streamCollector(streamBody); + return utilStream.Uint8ArrayBlobAdapter.mutate(await fromContext); +}; + +function extendedEncodeURIComponent(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} + +class SerdeContext { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} + +class HttpProtocol extends SerdeContext { + options; + compositeErrorRegistry; + constructor(options) { + super(); + this.options = options; + this.compositeErrorRegistry = schema.TypeRegistry.for(options.defaultNamespace); + for (const etr of options.errorTypeRegistries ?? []) { + this.compositeErrorRegistry.copyFrom(etr); + } + } + getRequestType() { + return protocolHttp.HttpRequest; + } + getResponseType() { + return protocolHttp.HttpResponse; + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + if (this.getPayloadCodec()) { + this.getPayloadCodec().setSerdeContext(serdeContext); + } + } + updateServiceEndpoint(request, endpoint) { + if ("url" in endpoint) { + request.protocol = endpoint.url.protocol; + request.hostname = endpoint.url.hostname; + request.port = endpoint.url.port ? Number(endpoint.url.port) : undefined; + request.path = endpoint.url.pathname; + request.fragment = endpoint.url.hash || void 0; + request.username = endpoint.url.username || void 0; + request.password = endpoint.url.password || void 0; + if (!request.query) { + request.query = {}; + } + for (const [k, v] of endpoint.url.searchParams.entries()) { + request.query[k] = v; + } + if (endpoint.headers) { + for (const [name, values] of Object.entries(endpoint.headers)) { + request.headers[name] = values.join(", "); + } + } + return request; + } + else { + request.protocol = endpoint.protocol; + request.hostname = endpoint.hostname; + request.port = endpoint.port ? Number(endpoint.port) : undefined; + request.path = endpoint.path; + request.query = { + ...endpoint.query, + }; + if (endpoint.headers) { + for (const [name, value] of Object.entries(endpoint.headers)) { + request.headers[name] = value; + } + } + return request; + } + } + setHostPrefix(request, operationSchema, input) { + if (this.serdeContext?.disableHostPrefix) { + return; + } + const inputNs = schema.NormalizedSchema.of(operationSchema.input); + const opTraits = schema.translateTraits(operationSchema.traits ?? {}); + if (opTraits.endpoint) { + let hostPrefix = opTraits.endpoint?.[0]; + if (typeof hostPrefix === "string") { + const hostLabelInputs = [...inputNs.structIterator()].filter(([, member]) => member.getMergedTraits().hostLabel); + for (const [name] of hostLabelInputs) { + const replacement = input[name]; + if (typeof replacement !== "string") { + throw new Error(`@smithy/core/schema - ${name} in input must be a string as hostLabel.`); + } + hostPrefix = hostPrefix.replace(`{${name}}`, replacement); + } + request.hostname = hostPrefix + request.hostname; + } + } + } + deserializeMetadata(output) { + return { + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"], + }; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest, }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.serializeEventStream({ + eventStream, + requestSchema, + initialRequest, + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.deserializeEventStream({ + response, + responseSchema, + initialResponseContainer, + }); + } + async loadEventStreamCapability() { + const { EventStreamSerde } = await import('@smithy/core/event-streams'); + return new EventStreamSerde({ + marshaller: this.getEventStreamMarshaller(), + serializer: this.serializer, + deserializer: this.deserializer, + serdeContext: this.serdeContext, + defaultContentType: this.getDefaultContentType(), + }); + } + getDefaultContentType() { + throw new Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`); + } + async deserializeHttpMessage(schema, context, response, arg4, arg5) { + return []; + } + getEventStreamMarshaller() { + const context = this.serdeContext; + if (!context.eventStreamMarshaller) { + throw new Error("@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext."); + } + return context.eventStreamMarshaller; + } +} + +class HttpBindingProtocol extends HttpProtocol { + async serializeRequest(operationSchema, _input, context) { + const input = _input && typeof _input === "object" ? _input : {}; + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = schema.NormalizedSchema.of(operationSchema?.input); + const payloadMemberNames = []; + const payloadMemberSchemas = []; + let hasNonHttpBindingMember = false; + let payload; + const request = new protocolHttp.HttpRequest({ + protocol: "", + hostname: "", + port: undefined, + path: "", + fragment: undefined, + query: query, + headers: headers, + body: undefined, + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input); + const opTraits = schema.translateTraits(operationSchema.traits); + if (opTraits.http) { + request.method = opTraits.http[0]; + const [path, search] = opTraits.http[1].split("?"); + if (request.path == "/") { + request.path = path; + } + else { + request.path += path; + } + const traitSearchParams = new URLSearchParams(search ?? ""); + Object.assign(query, Object.fromEntries(traitSearchParams)); + } + } + for (const [memberName, memberNs] of ns.structIterator()) { + const memberTraits = memberNs.getMergedTraits() ?? {}; + const inputMemberValue = input[memberName]; + if (inputMemberValue == null && !memberNs.isIdempotencyToken()) { + if (memberTraits.httpLabel) { + if (request.path.includes(`{${memberName}+}`) || request.path.includes(`{${memberName}}`)) { + throw new Error(`No value provided for input HTTP label: ${memberName}.`); + } + } + continue; + } + if (memberTraits.httpPayload) { + const isStreaming = memberNs.isStreaming(); + if (isStreaming) { + const isEventStream = memberNs.isStructSchema(); + if (isEventStream) { + if (input[memberName]) { + payload = await this.serializeEventStream({ + eventStream: input[memberName], + requestSchema: ns, + }); + } + } + else { + payload = inputMemberValue; + } + } + else { + serializer.write(memberNs, inputMemberValue); + payload = serializer.flush(); + } + } + else if (memberTraits.httpLabel) { + serializer.write(memberNs, inputMemberValue); + const replacement = serializer.flush(); + if (request.path.includes(`{${memberName}+}`)) { + request.path = request.path.replace(`{${memberName}+}`, replacement.split("/").map(extendedEncodeURIComponent).join("/")); + } + else if (request.path.includes(`{${memberName}}`)) { + request.path = request.path.replace(`{${memberName}}`, extendedEncodeURIComponent(replacement)); + } + } + else if (memberTraits.httpHeader) { + serializer.write(memberNs, inputMemberValue); + headers[memberTraits.httpHeader.toLowerCase()] = String(serializer.flush()); + } + else if (typeof memberTraits.httpPrefixHeaders === "string") { + for (const [key, val] of Object.entries(inputMemberValue)) { + const amalgam = memberTraits.httpPrefixHeaders + key; + serializer.write([memberNs.getValueSchema(), { httpHeader: amalgam }], val); + headers[amalgam.toLowerCase()] = serializer.flush(); + } + } + else if (memberTraits.httpQuery || memberTraits.httpQueryParams) { + this.serializeQuery(memberNs, inputMemberValue, query); + } + else { + hasNonHttpBindingMember = true; + payloadMemberNames.push(memberName); + payloadMemberSchemas.push(memberNs); + } + } + if (hasNonHttpBindingMember && input) { + const [namespace, name] = (ns.getName(true) ?? "#Unknown").split("#"); + const requiredMembers = ns.getSchema()[6]; + const payloadSchema = [ + 3, + namespace, + name, + ns.getMergedTraits(), + payloadMemberNames, + payloadMemberSchemas, + undefined, + ]; + if (requiredMembers) { + payloadSchema[6] = requiredMembers; + } + else { + payloadSchema.pop(); + } + serializer.write(payloadSchema, input); + payload = serializer.flush(); + } + request.headers = headers; + request.query = query; + request.body = payload; + return request; + } + serializeQuery(ns, data, query) { + const serializer = this.serializer; + const traits = ns.getMergedTraits(); + if (traits.httpQueryParams) { + for (const [key, val] of Object.entries(data)) { + if (!(key in query)) { + const valueSchema = ns.getValueSchema(); + Object.assign(valueSchema.getMergedTraits(), { + ...traits, + httpQuery: key, + httpQueryParams: undefined, + }); + this.serializeQuery(valueSchema, val, query); + } + } + return; + } + if (ns.isListSchema()) { + const sparse = !!ns.getMergedTraits().sparse; + const buffer = []; + for (const item of data) { + serializer.write([ns.getValueSchema(), traits], item); + const serializable = serializer.flush(); + if (sparse || serializable !== undefined) { + buffer.push(serializable); + } + } + query[traits.httpQuery] = buffer; + } + else { + serializer.write([ns, traits], data); + query[traits.httpQuery] = serializer.flush(); + } + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - HTTP Protocol error handler failed to throw."); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const nonHttpBindingMembers = await this.deserializeHttpMessage(ns, context, response, dataObject); + if (nonHttpBindingMembers.length) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + const dataFromBody = await deserializer.read(ns, bytes); + for (const member of nonHttpBindingMembers) { + if (dataFromBody[member] != null) { + dataObject[member] = dataFromBody[member]; + } + } + } + } + else if (nonHttpBindingMembers.discardResponseBody) { + await collectBody(response.body, context); + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } + async deserializeHttpMessage(schema$1, context, response, arg4, arg5) { + let dataObject; + if (arg4 instanceof Set) { + dataObject = arg5; + } + else { + dataObject = arg4; + } + let discardResponseBody = true; + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(schema$1); + const nonHttpBindingMembers = []; + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMemberTraits(); + if (memberTraits.httpPayload) { + discardResponseBody = false; + const isStreaming = memberSchema.isStreaming(); + if (isStreaming) { + const isEventStream = memberSchema.isStructSchema(); + if (isEventStream) { + dataObject[memberName] = await this.deserializeEventStream({ + response, + responseSchema: ns, + }); + } + else { + dataObject[memberName] = utilStream.sdkStreamMixin(response.body); + } + } + else if (response.body) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + dataObject[memberName] = await deserializer.read(memberSchema, bytes); + } + } + } + else if (memberTraits.httpHeader) { + const key = String(memberTraits.httpHeader).toLowerCase(); + const value = response.headers[key]; + if (null != value) { + if (memberSchema.isListSchema()) { + const headerListValueSchema = memberSchema.getValueSchema(); + headerListValueSchema.getMergedTraits().httpHeader = key; + let sections; + if (headerListValueSchema.isTimestampSchema() && + headerListValueSchema.getSchema() === 4) { + sections = serde.splitEvery(value, ",", 2); + } + else { + sections = serde.splitHeader(value); + } + const list = []; + for (const section of sections) { + list.push(await deserializer.read(headerListValueSchema, section.trim())); + } + dataObject[memberName] = list; + } + else { + dataObject[memberName] = await deserializer.read(memberSchema, value); + } + } + } + else if (memberTraits.httpPrefixHeaders !== undefined) { + dataObject[memberName] = {}; + for (const [header, value] of Object.entries(response.headers)) { + if (header.startsWith(memberTraits.httpPrefixHeaders)) { + const valueSchema = memberSchema.getValueSchema(); + valueSchema.getMergedTraits().httpHeader = header; + dataObject[memberName][header.slice(memberTraits.httpPrefixHeaders.length)] = await deserializer.read(valueSchema, value); + } + } + } + else if (memberTraits.httpResponseCode) { + dataObject[memberName] = response.statusCode; + } + else { + nonHttpBindingMembers.push(memberName); + } + } + nonHttpBindingMembers.discardResponseBody = discardResponseBody; + return nonHttpBindingMembers; + } +} + +class RpcProtocol extends HttpProtocol { + async serializeRequest(operationSchema, _input, context) { + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = schema.NormalizedSchema.of(operationSchema?.input); + const schema$1 = ns.getSchema(); + let payload; + const input = _input && typeof _input === "object" ? _input : {}; + const request = new protocolHttp.HttpRequest({ + protocol: "", + hostname: "", + port: undefined, + path: "/", + fragment: undefined, + query: query, + headers: headers, + body: undefined, + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input); + } + if (input) { + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + if (input[eventStreamMember]) { + const initialRequest = {}; + for (const [memberName, memberSchema] of ns.structIterator()) { + if (memberName !== eventStreamMember && input[memberName]) { + serializer.write(memberSchema, input[memberName]); + initialRequest[memberName] = serializer.flush(); + } + } + payload = await this.serializeEventStream({ + eventStream: input[eventStreamMember], + requestSchema: ns, + initialRequest, + }); + } + } + else { + serializer.write(schema$1, input); + payload = serializer.flush(); + } + } + request.headers = Object.assign(request.headers, headers); + request.query = query; + request.body = payload; + request.method = "POST"; + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = schema.NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - RPC Protocol error handler failed to throw."); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + dataObject[eventStreamMember] = await this.deserializeEventStream({ + response, + responseSchema: ns, + initialResponseContainer: dataObject, + }); + } + else { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes)); + } + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } +} + +const resolvedPath = (resolvedPath, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => { + if (input != null && input[memberName] !== undefined) { + const labelValue = labelValueProvider(); + if (labelValue == null || labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: " + memberName + "."); + } + resolvedPath = resolvedPath.replace(uriLabel, isGreedyLabel + ? labelValue + .split("/") + .map((segment) => extendedEncodeURIComponent(segment)) + .join("/") + : extendedEncodeURIComponent(labelValue)); + } + else { + throw new Error("No value provided for input HTTP label: " + memberName + "."); + } + return resolvedPath; +}; + +function requestBuilder(input, context) { + return new RequestBuilder(input, context); +} +class RequestBuilder { + input; + context; + query = {}; + method = ""; + headers = {}; + path = ""; + body = null; + hostname = ""; + resolvePathStack = []; + constructor(input, context) { + this.input = input; + this.context = context; + } + async build() { + const { hostname, protocol = "https", port, path: basePath } = await this.context.endpoint(); + this.path = basePath; + for (const resolvePath of this.resolvePathStack) { + resolvePath(this.path); + } + return new protocolHttp.HttpRequest({ + protocol, + hostname: this.hostname || hostname, + port, + method: this.method, + path: this.path, + query: this.query, + body: this.body, + headers: this.headers, + }); + } + hn(hostname) { + this.hostname = hostname; + return this; + } + bp(uriLabel) { + this.resolvePathStack.push((basePath) => { + this.path = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + uriLabel; + }); + return this; + } + p(memberName, labelValueProvider, uriLabel, isGreedyLabel) { + this.resolvePathStack.push((path) => { + this.path = resolvedPath(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel); + }); + return this; + } + h(headers) { + this.headers = headers; + return this; + } + q(query) { + this.query = query; + return this; + } + b(body) { + this.body = body; + return this; + } + m(method) { + this.method = method; + return this; + } +} + +function determineTimestampFormat(ns, settings) { + if (settings.timestampFormat.useTrait) { + if (ns.isTimestampSchema() && + (ns.getSchema() === 5 || + ns.getSchema() === 6 || + ns.getSchema() === 7)) { + return ns.getSchema(); + } + } + const { httpLabel, httpPrefixHeaders, httpHeader, httpQuery } = ns.getMergedTraits(); + const bindingFormat = settings.httpBindings + ? typeof httpPrefixHeaders === "string" || Boolean(httpHeader) + ? 6 + : Boolean(httpQuery) || Boolean(httpLabel) + ? 5 + : undefined + : undefined; + return bindingFormat ?? settings.timestampFormat.default; +} + +class FromStringShapeDeserializer extends SerdeContext { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + read(_schema, data) { + const ns = schema.NormalizedSchema.of(_schema); + if (ns.isListSchema()) { + return serde.splitHeader(data).map((item) => this.read(ns.getValueSchema(), item)); + } + if (ns.isBlobSchema()) { + return (this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(data); + } + if (ns.isTimestampSchema()) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return serde._parseRfc3339DateTimeWithOffset(data); + case 6: + return serde._parseRfc7231DateTime(data); + case 7: + return serde._parseEpochTimestamp(data); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", data); + return new Date(data); + } + } + if (ns.isStringSchema()) { + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = data; + if (mediaType) { + if (ns.getMergedTraits().httpHeader) { + intermediateValue = this.base64ToUtf8(intermediateValue); + } + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = serde.LazyJsonString.from(intermediateValue); + } + return intermediateValue; + } + } + if (ns.isNumericSchema()) { + return Number(data); + } + if (ns.isBigIntegerSchema()) { + return BigInt(data); + } + if (ns.isBigDecimalSchema()) { + return new serde.NumericValue(data, "bigDecimal"); + } + if (ns.isBooleanSchema()) { + return String(data).toLowerCase() === "true"; + } + return data; + } + base64ToUtf8(base64String) { + return (this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8)((this.serdeContext?.base64Decoder ?? utilBase64.fromBase64)(base64String)); + } +} + +class HttpInterceptingShapeDeserializer extends SerdeContext { + codecDeserializer; + stringDeserializer; + constructor(codecDeserializer, codecSettings) { + super(); + this.codecDeserializer = codecDeserializer; + this.stringDeserializer = new FromStringShapeDeserializer(codecSettings); + } + setSerdeContext(serdeContext) { + this.stringDeserializer.setSerdeContext(serdeContext); + this.codecDeserializer.setSerdeContext(serdeContext); + this.serdeContext = serdeContext; + } + read(schema$1, data) { + const ns = schema.NormalizedSchema.of(schema$1); + const traits = ns.getMergedTraits(); + const toString = this.serdeContext?.utf8Encoder ?? utilUtf8.toUtf8; + if (traits.httpHeader || traits.httpResponseCode) { + return this.stringDeserializer.read(ns, toString(data)); + } + if (traits.httpPayload) { + if (ns.isBlobSchema()) { + const toBytes = this.serdeContext?.utf8Decoder ?? utilUtf8.fromUtf8; + if (typeof data === "string") { + return toBytes(data); + } + return data; + } + else if (ns.isStringSchema()) { + if ("byteLength" in data) { + return toString(data); + } + return data; + } + } + return this.codecDeserializer.read(ns, data); + } +} + +class ToStringShapeSerializer extends SerdeContext { + settings; + stringBuffer = ""; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema$1, value) { + const ns = schema.NormalizedSchema.of(schema$1); + switch (typeof value) { + case "object": + if (value === null) { + this.stringBuffer = "null"; + return; + } + if (ns.isTimestampSchema()) { + if (!(value instanceof Date)) { + throw new Error(`@smithy/core/protocols - received non-Date value ${value} when schema expected Date in ${ns.getName(true)}`); + } + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.stringBuffer = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + this.stringBuffer = serde.dateToUtcString(value); + break; + case 7: + this.stringBuffer = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + this.stringBuffer = String(value.getTime() / 1000); + } + return; + } + if (ns.isBlobSchema() && "byteLength" in value) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(value); + return; + } + if (ns.isListSchema() && Array.isArray(value)) { + let buffer = ""; + for (const item of value) { + this.write([ns.getValueSchema(), ns.getMergedTraits()], item); + const headerItem = this.flush(); + const serialized = ns.getValueSchema().isTimestampSchema() ? headerItem : serde.quoteHeader(headerItem); + if (buffer !== "") { + buffer += ", "; + } + buffer += serialized; + } + this.stringBuffer = buffer; + return; + } + this.stringBuffer = JSON.stringify(value, null, 2); + break; + case "string": + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = value; + if (mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = serde.LazyJsonString.from(intermediateValue); + } + if (ns.getMergedTraits().httpHeader) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? utilBase64.toBase64)(intermediateValue.toString()); + return; + } + } + this.stringBuffer = value; + break; + default: + if (ns.isIdempotencyToken()) { + this.stringBuffer = serde.generateIdempotencyToken(); + } + else { + this.stringBuffer = String(value); + } + } + } + flush() { + const buffer = this.stringBuffer; + this.stringBuffer = ""; + return buffer; + } +} + +class HttpInterceptingShapeSerializer { + codecSerializer; + stringSerializer; + buffer; + constructor(codecSerializer, codecSettings, stringSerializer = new ToStringShapeSerializer(codecSettings)) { + this.codecSerializer = codecSerializer; + this.stringSerializer = stringSerializer; + } + setSerdeContext(serdeContext) { + this.codecSerializer.setSerdeContext(serdeContext); + this.stringSerializer.setSerdeContext(serdeContext); + } + write(schema$1, value) { + const ns = schema.NormalizedSchema.of(schema$1); + const traits = ns.getMergedTraits(); + if (traits.httpHeader || traits.httpLabel || traits.httpQuery) { + this.stringSerializer.write(ns, value); + this.buffer = this.stringSerializer.flush(); + return; + } + return this.codecSerializer.write(ns, value); + } + flush() { + if (this.buffer !== undefined) { + const buffer = this.buffer; + this.buffer = undefined; + return buffer; + } + return this.codecSerializer.flush(); + } +} + +exports.FromStringShapeDeserializer = FromStringShapeDeserializer; +exports.HttpBindingProtocol = HttpBindingProtocol; +exports.HttpInterceptingShapeDeserializer = HttpInterceptingShapeDeserializer; +exports.HttpInterceptingShapeSerializer = HttpInterceptingShapeSerializer; +exports.HttpProtocol = HttpProtocol; +exports.RequestBuilder = RequestBuilder; +exports.RpcProtocol = RpcProtocol; +exports.SerdeContext = SerdeContext; +exports.ToStringShapeSerializer = ToStringShapeSerializer; +exports.collectBody = collectBody; +exports.determineTimestampFormat = determineTimestampFormat; +exports.extendedEncodeURIComponent = extendedEncodeURIComponent; +exports.requestBuilder = requestBuilder; +exports.resolvedPath = resolvedPath; diff --git a/bff/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js b/bff/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js new file mode 100644 index 0000000..a942fe8 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js @@ -0,0 +1,698 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var utilMiddleware = require('@smithy/util-middleware'); +var endpoints = require('@smithy/core/endpoints'); + +const deref = (schemaRef) => { + if (typeof schemaRef === "function") { + return schemaRef(); + } + return schemaRef; +}; + +const operation = (namespace, name, traits, input, output) => ({ + name, + namespace, + traits, + input, + output, +}); + +const schemaDeserializationMiddleware = (config) => (next, context) => async (args) => { + const { response } = await next(args); + const { operationSchema } = utilMiddleware.getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + try { + const parsed = await config.protocol.deserializeResponse(operation(ns, n, t, i, o), { + ...config, + ...context, + }, response); + return { + response, + output: parsed, + }; + } + catch (error) { + Object.defineProperty(error, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false, + }); + if (!("$metadata" in error)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error.message += "\n " + hint; + } + catch (e) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } + else { + context.logger?.warn?.(hint); + } + } + if (typeof error.$responseBodyText !== "undefined") { + if (error.$response) { + error.$response.body = error.$responseBodyText; + } + } + try { + if (protocolHttp.HttpResponse.isInstance(response)) { + const { headers = {} } = response; + const headerEntries = Object.entries(headers); + error.$metadata = { + httpStatusCode: response.statusCode, + requestId: findHeader(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader(/^x-[\w-]+-cf-id$/, headerEntries), + }; + } + } + catch (e) { + } + } + throw error; + } +}; +const findHeader = (pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 0])[1]; +}; + +const schemaSerializationMiddleware = (config) => (next, context) => async (args) => { + const { operationSchema } = utilMiddleware.getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + const endpoint = context.endpointV2 + ? async () => endpoints.toEndpointV1(context.endpointV2) + : config.endpoint; + const request = await config.protocol.serializeRequest(operation(ns, n, t, i, o), args.input, { + ...config, + ...context, + endpoint, + }); + return next({ + ...args, + request, + }); +}; + +const deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true, +}; +const serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true, +}; +function getSchemaSerdePlugin(config) { + return { + applyToStack: (commandStack) => { + commandStack.add(schemaSerializationMiddleware(config), serializerMiddlewareOption); + commandStack.add(schemaDeserializationMiddleware(config), deserializerMiddlewareOption); + config.protocol.setSerdeContext(config); + }, + }; +} + +class Schema { + name; + namespace; + traits; + static assign(instance, values) { + const schema = Object.assign(instance, values); + return schema; + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const list = lhs; + return list.symbol === this.symbol; + } + return isPrototype; + } + getName() { + return this.namespace + "#" + this.name; + } +} + +class ListSchema extends Schema { + static symbol = Symbol.for("@smithy/lis"); + name; + traits; + valueSchema; + symbol = ListSchema.symbol; +} +const list = (namespace, name, traits, valueSchema) => Schema.assign(new ListSchema(), { + name, + namespace, + traits, + valueSchema, +}); + +class MapSchema extends Schema { + static symbol = Symbol.for("@smithy/map"); + name; + traits; + keySchema; + valueSchema; + symbol = MapSchema.symbol; +} +const map = (namespace, name, traits, keySchema, valueSchema) => Schema.assign(new MapSchema(), { + name, + namespace, + traits, + keySchema, + valueSchema, +}); + +class OperationSchema extends Schema { + static symbol = Symbol.for("@smithy/ope"); + name; + traits; + input; + output; + symbol = OperationSchema.symbol; +} +const op = (namespace, name, traits, input, output) => Schema.assign(new OperationSchema(), { + name, + namespace, + traits, + input, + output, +}); + +class StructureSchema extends Schema { + static symbol = Symbol.for("@smithy/str"); + name; + traits; + memberNames; + memberList; + symbol = StructureSchema.symbol; +} +const struct = (namespace, name, traits, memberNames, memberList) => Schema.assign(new StructureSchema(), { + name, + namespace, + traits, + memberNames, + memberList, +}); + +class ErrorSchema extends StructureSchema { + static symbol = Symbol.for("@smithy/err"); + ctor; + symbol = ErrorSchema.symbol; +} +const error = (namespace, name, traits, memberNames, memberList, ctor) => Schema.assign(new ErrorSchema(), { + name, + namespace, + traits, + memberNames, + memberList, + ctor: null, +}); + +const traitsCache = []; +function translateTraits(indicator) { + if (typeof indicator === "object") { + return indicator; + } + indicator = indicator | 0; + if (traitsCache[indicator]) { + return traitsCache[indicator]; + } + const traits = {}; + let i = 0; + for (const trait of [ + "httpLabel", + "idempotent", + "idempotencyToken", + "sensitive", + "httpPayload", + "httpResponseCode", + "httpQueryParams", + ]) { + if (((indicator >> i++) & 1) === 1) { + traits[trait] = 1; + } + } + return (traitsCache[indicator] = traits); +} + +const anno = { + it: Symbol.for("@smithy/nor-struct-it"), + ns: Symbol.for("@smithy/ns"), +}; +const simpleSchemaCacheN = []; +const simpleSchemaCacheS = {}; +class NormalizedSchema { + ref; + memberName; + static symbol = Symbol.for("@smithy/nor"); + symbol = NormalizedSchema.symbol; + name; + schema; + _isMemberSchema; + traits; + memberTraits; + normalizedTraits; + constructor(ref, memberName) { + this.ref = ref; + this.memberName = memberName; + const traitStack = []; + let _ref = ref; + let schema = ref; + this._isMemberSchema = false; + while (isMemberSchema(_ref)) { + traitStack.push(_ref[1]); + _ref = _ref[0]; + schema = deref(_ref); + this._isMemberSchema = true; + } + if (traitStack.length > 0) { + this.memberTraits = {}; + for (let i = traitStack.length - 1; i >= 0; --i) { + const traitSet = traitStack[i]; + Object.assign(this.memberTraits, translateTraits(traitSet)); + } + } + else { + this.memberTraits = 0; + } + if (schema instanceof NormalizedSchema) { + const computedMemberTraits = this.memberTraits; + Object.assign(this, schema); + this.memberTraits = Object.assign({}, computedMemberTraits, schema.getMemberTraits(), this.getMemberTraits()); + this.normalizedTraits = void 0; + this.memberName = memberName ?? schema.memberName; + return; + } + this.schema = deref(schema); + if (isStaticSchema(this.schema)) { + this.name = `${this.schema[1]}#${this.schema[2]}`; + this.traits = this.schema[3]; + } + else { + this.name = this.memberName ?? String(schema); + this.traits = 0; + } + if (this._isMemberSchema && !memberName) { + throw new Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(true)} missing member name.`); + } + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const ns = lhs; + return ns.symbol === this.symbol; + } + return isPrototype; + } + static of(ref) { + const keyAble = typeof ref === "function" || (typeof ref === "object" && ref !== null); + if (typeof ref === "number") { + if (simpleSchemaCacheN[ref]) { + return simpleSchemaCacheN[ref]; + } + } + else if (typeof ref === "string") { + if (simpleSchemaCacheS[ref]) { + return simpleSchemaCacheS[ref]; + } + } + else if (keyAble) { + if (ref[anno.ns]) { + return ref[anno.ns]; + } + } + const sc = deref(ref); + if (sc instanceof NormalizedSchema) { + return sc; + } + if (isMemberSchema(sc)) { + const [ns, traits] = sc; + if (ns instanceof NormalizedSchema) { + Object.assign(ns.getMergedTraits(), translateTraits(traits)); + return ns; + } + throw new Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify(ref, null, 2)}.`); + } + const ns = new NormalizedSchema(sc); + if (keyAble) { + return (ref[anno.ns] = ns); + } + if (typeof sc === "string") { + return (simpleSchemaCacheS[sc] = ns); + } + if (typeof sc === "number") { + return (simpleSchemaCacheN[sc] = ns); + } + return ns; + } + getSchema() { + const sc = this.schema; + if (Array.isArray(sc) && sc[0] === 0) { + return sc[4]; + } + return sc; + } + getName(withNamespace = false) { + const { name } = this; + const short = !withNamespace && name && name.includes("#"); + return short ? name.split("#")[1] : name || undefined; + } + getMemberName() { + return this.memberName; + } + isMemberSchema() { + return this._isMemberSchema; + } + isListSchema() { + const sc = this.getSchema(); + return typeof sc === "number" + ? sc >= 64 && sc < 128 + : sc[0] === 1; + } + isMapSchema() { + const sc = this.getSchema(); + return typeof sc === "number" + ? sc >= 128 && sc <= 0b1111_1111 + : sc[0] === 2; + } + isStructSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + const id = sc[0]; + return (id === 3 || + id === -3 || + id === 4); + } + isUnionSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + return sc[0] === 4; + } + isBlobSchema() { + const sc = this.getSchema(); + return sc === 21 || sc === 42; + } + isTimestampSchema() { + const sc = this.getSchema(); + return (typeof sc === "number" && + sc >= 4 && + sc <= 7); + } + isUnitSchema() { + return this.getSchema() === "unit"; + } + isDocumentSchema() { + return this.getSchema() === 15; + } + isStringSchema() { + return this.getSchema() === 0; + } + isBooleanSchema() { + return this.getSchema() === 2; + } + isNumericSchema() { + return this.getSchema() === 1; + } + isBigIntegerSchema() { + return this.getSchema() === 17; + } + isBigDecimalSchema() { + return this.getSchema() === 19; + } + isStreaming() { + const { streaming } = this.getMergedTraits(); + return !!streaming || this.getSchema() === 42; + } + isIdempotencyToken() { + return !!this.getMergedTraits().idempotencyToken; + } + getMergedTraits() { + return (this.normalizedTraits ?? + (this.normalizedTraits = { + ...this.getOwnTraits(), + ...this.getMemberTraits(), + })); + } + getMemberTraits() { + return translateTraits(this.memberTraits); + } + getOwnTraits() { + return translateTraits(this.traits); + } + getKeySchema() { + const [isDoc, isMap] = [this.isDocumentSchema(), this.isMapSchema()]; + if (!isDoc && !isMap) { + throw new Error(`@smithy/core/schema - cannot get key for non-map: ${this.getName(true)}`); + } + const schema = this.getSchema(); + const memberSchema = isDoc + ? 15 + : schema[4] ?? 0; + return member([memberSchema, 0], "key"); + } + getValueSchema() { + const sc = this.getSchema(); + const [isDoc, isMap, isList] = [this.isDocumentSchema(), this.isMapSchema(), this.isListSchema()]; + const memberSchema = typeof sc === "number" + ? 0b0011_1111 & sc + : sc && typeof sc === "object" && (isMap || isList) + ? sc[3 + sc[0]] + : isDoc + ? 15 + : void 0; + if (memberSchema != null) { + return member([memberSchema, 0], isMap ? "value" : "member"); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no value member.`); + } + getMemberSchema(memberName) { + const struct = this.getSchema(); + if (this.isStructSchema() && struct[4].includes(memberName)) { + const i = struct[4].indexOf(memberName); + const memberSchema = struct[5][i]; + return member(isMemberSchema(memberSchema) ? memberSchema : [memberSchema, 0], memberName); + } + if (this.isDocumentSchema()) { + return member([15, 0], memberName); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no member=${memberName}.`); + } + getMemberSchemas() { + const buffer = {}; + try { + for (const [k, v] of this.structIterator()) { + buffer[k] = v; + } + } + catch (ignored) { } + return buffer; + } + getEventStreamMember() { + if (this.isStructSchema()) { + for (const [memberName, memberSchema] of this.structIterator()) { + if (memberSchema.isStreaming() && memberSchema.isStructSchema()) { + return memberName; + } + } + } + return ""; + } + *structIterator() { + if (this.isUnitSchema()) { + return; + } + if (!this.isStructSchema()) { + throw new Error("@smithy/core/schema - cannot iterate non-struct schema."); + } + const struct = this.getSchema(); + const z = struct[4].length; + let it = struct[anno.it]; + if (it && z === it.length) { + yield* it; + return; + } + it = Array(z); + for (let i = 0; i < z; ++i) { + const k = struct[4][i]; + const v = member([struct[5][i], 0], k); + yield (it[i] = [k, v]); + } + struct[anno.it] = it; + } +} +function member(memberSchema, memberName) { + if (memberSchema instanceof NormalizedSchema) { + return Object.assign(memberSchema, { + memberName, + _isMemberSchema: true, + }); + } + const internalCtorAccess = NormalizedSchema; + return new internalCtorAccess(memberSchema, memberName); +} +const isMemberSchema = (sc) => Array.isArray(sc) && sc.length === 2; +const isStaticSchema = (sc) => Array.isArray(sc) && sc.length >= 5; + +class SimpleSchema extends Schema { + static symbol = Symbol.for("@smithy/sim"); + name; + schemaRef; + traits; + symbol = SimpleSchema.symbol; +} +const sim = (namespace, name, schemaRef, traits) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef, +}); +const simAdapter = (namespace, name, traits, schemaRef) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef, +}); + +const SCHEMA = { + BLOB: 0b0001_0101, + STREAMING_BLOB: 0b0010_1010, + BOOLEAN: 0b0000_0010, + STRING: 0b0000_0000, + NUMERIC: 0b0000_0001, + BIG_INTEGER: 0b0001_0001, + BIG_DECIMAL: 0b0001_0011, + DOCUMENT: 0b0000_1111, + TIMESTAMP_DEFAULT: 0b0000_0100, + TIMESTAMP_DATE_TIME: 0b0000_0101, + TIMESTAMP_HTTP_DATE: 0b0000_0110, + TIMESTAMP_EPOCH_SECONDS: 0b0000_0111, + LIST_MODIFIER: 0b0100_0000, + MAP_MODIFIER: 0b1000_0000, +}; + +class TypeRegistry { + namespace; + schemas; + exceptions; + static registries = new Map(); + constructor(namespace, schemas = new Map(), exceptions = new Map()) { + this.namespace = namespace; + this.schemas = schemas; + this.exceptions = exceptions; + } + static for(namespace) { + if (!TypeRegistry.registries.has(namespace)) { + TypeRegistry.registries.set(namespace, new TypeRegistry(namespace)); + } + return TypeRegistry.registries.get(namespace); + } + copyFrom(other) { + const { schemas, exceptions } = this; + for (const [k, v] of other.schemas) { + if (!schemas.has(k)) { + schemas.set(k, v); + } + } + for (const [k, v] of other.exceptions) { + if (!exceptions.has(k)) { + exceptions.set(k, v); + } + } + } + register(shapeId, schema) { + const qualifiedName = this.normalizeShapeId(shapeId); + for (const r of [this, TypeRegistry.for(qualifiedName.split("#")[0])]) { + r.schemas.set(qualifiedName, schema); + } + } + getSchema(shapeId) { + const id = this.normalizeShapeId(shapeId); + if (!this.schemas.has(id)) { + throw new Error(`@smithy/core/schema - schema not found for ${id}`); + } + return this.schemas.get(id); + } + registerError(es, ctor) { + const $error = es; + const ns = $error[1]; + for (const r of [this, TypeRegistry.for(ns)]) { + r.schemas.set(ns + "#" + $error[2], $error); + r.exceptions.set($error, ctor); + } + } + getErrorCtor(es) { + const $error = es; + if (this.exceptions.has($error)) { + return this.exceptions.get($error); + } + const registry = TypeRegistry.for($error[1]); + return registry.exceptions.get($error); + } + getBaseException() { + for (const exceptionKey of this.exceptions.keys()) { + if (Array.isArray(exceptionKey)) { + const [, ns, name] = exceptionKey; + const id = ns + "#" + name; + if (id.startsWith("smithy.ts.sdk.synthetic.") && id.endsWith("ServiceException")) { + return exceptionKey; + } + } + } + return undefined; + } + find(predicate) { + return [...this.schemas.values()].find(predicate); + } + clear() { + this.schemas.clear(); + this.exceptions.clear(); + } + normalizeShapeId(shapeId) { + if (shapeId.includes("#")) { + return shapeId; + } + return this.namespace + "#" + shapeId; + } +} + +exports.ErrorSchema = ErrorSchema; +exports.ListSchema = ListSchema; +exports.MapSchema = MapSchema; +exports.NormalizedSchema = NormalizedSchema; +exports.OperationSchema = OperationSchema; +exports.SCHEMA = SCHEMA; +exports.Schema = Schema; +exports.SimpleSchema = SimpleSchema; +exports.StructureSchema = StructureSchema; +exports.TypeRegistry = TypeRegistry; +exports.deref = deref; +exports.deserializerMiddlewareOption = deserializerMiddlewareOption; +exports.error = error; +exports.getSchemaSerdePlugin = getSchemaSerdePlugin; +exports.isStaticSchema = isStaticSchema; +exports.list = list; +exports.map = map; +exports.op = op; +exports.operation = operation; +exports.serializerMiddlewareOption = serializerMiddlewareOption; +exports.sim = sim; +exports.simAdapter = simAdapter; +exports.simpleSchemaCacheN = simpleSchemaCacheN; +exports.simpleSchemaCacheS = simpleSchemaCacheS; +exports.struct = struct; +exports.traitsCache = traitsCache; +exports.translateTraits = translateTraits; diff --git a/bff/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js b/bff/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js new file mode 100644 index 0000000..02c06cc --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js @@ -0,0 +1,694 @@ +'use strict'; + +var uuid = require('@smithy/uuid'); + +const copyDocumentWithTransform = (source, schemaRef, transform = (_) => _) => source; + +const parseBoolean = (value) => { + switch (value) { + case "true": + return true; + case "false": + return false; + default: + throw new Error(`Unable to parse boolean value "${value}"`); + } +}; +const expectBoolean = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "number") { + if (value === 0 || value === 1) { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (value === 0) { + return false; + } + if (value === 1) { + return true; + } + } + if (typeof value === "string") { + const lower = value.toLowerCase(); + if (lower === "false" || lower === "true") { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (lower === "false") { + return false; + } + if (lower === "true") { + return true; + } + } + if (typeof value === "boolean") { + return value; + } + throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`); +}; +const expectNumber = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "string") { + const parsed = parseFloat(value); + if (!Number.isNaN(parsed)) { + if (String(parsed) !== String(value)) { + logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`)); + } + return parsed; + } + } + if (typeof value === "number") { + return value; + } + throw new TypeError(`Expected number, got ${typeof value}: ${value}`); +}; +const MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23)); +const expectFloat32 = (value) => { + const expected = expectNumber(value); + if (expected !== undefined && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) { + if (Math.abs(expected) > MAX_FLOAT) { + throw new TypeError(`Expected 32-bit float, got ${value}`); + } + } + return expected; +}; +const expectLong = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (Number.isInteger(value) && !Number.isNaN(value)) { + return value; + } + throw new TypeError(`Expected integer, got ${typeof value}: ${value}`); +}; +const expectInt = expectLong; +const expectInt32 = (value) => expectSizedInt(value, 32); +const expectShort = (value) => expectSizedInt(value, 16); +const expectByte = (value) => expectSizedInt(value, 8); +const expectSizedInt = (value, size) => { + const expected = expectLong(value); + if (expected !== undefined && castInt(expected, size) !== expected) { + throw new TypeError(`Expected ${size}-bit integer, got ${value}`); + } + return expected; +}; +const castInt = (value, size) => { + switch (size) { + case 32: + return Int32Array.of(value)[0]; + case 16: + return Int16Array.of(value)[0]; + case 8: + return Int8Array.of(value)[0]; + } +}; +const expectNonNull = (value, location) => { + if (value === null || value === undefined) { + if (location) { + throw new TypeError(`Expected a non-null value for ${location}`); + } + throw new TypeError("Expected a non-null value"); + } + return value; +}; +const expectObject = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "object" && !Array.isArray(value)) { + return value; + } + const receivedType = Array.isArray(value) ? "array" : typeof value; + throw new TypeError(`Expected object, got ${receivedType}: ${value}`); +}; +const expectString = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "string") { + return value; + } + if (["boolean", "number", "bigint"].includes(typeof value)) { + logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`)); + return String(value); + } + throw new TypeError(`Expected string, got ${typeof value}: ${value}`); +}; +const expectUnion = (value) => { + if (value === null || value === undefined) { + return undefined; + } + const asObject = expectObject(value); + const setKeys = Object.entries(asObject) + .filter(([, v]) => v != null) + .map(([k]) => k); + if (setKeys.length === 0) { + throw new TypeError(`Unions must have exactly one non-null member. None were found.`); + } + if (setKeys.length > 1) { + throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`); + } + return asObject; +}; +const strictParseDouble = (value) => { + if (typeof value == "string") { + return expectNumber(parseNumber(value)); + } + return expectNumber(value); +}; +const strictParseFloat = strictParseDouble; +const strictParseFloat32 = (value) => { + if (typeof value == "string") { + return expectFloat32(parseNumber(value)); + } + return expectFloat32(value); +}; +const NUMBER_REGEX = /(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g; +const parseNumber = (value) => { + const matches = value.match(NUMBER_REGEX); + if (matches === null || matches[0].length !== value.length) { + throw new TypeError(`Expected real number, got implicit NaN`); + } + return parseFloat(value); +}; +const limitedParseDouble = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectNumber(value); +}; +const handleFloat = limitedParseDouble; +const limitedParseFloat = limitedParseDouble; +const limitedParseFloat32 = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectFloat32(value); +}; +const parseFloatString = (value) => { + switch (value) { + case "NaN": + return NaN; + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + default: + throw new Error(`Unable to parse float value: ${value}`); + } +}; +const strictParseLong = (value) => { + if (typeof value === "string") { + return expectLong(parseNumber(value)); + } + return expectLong(value); +}; +const strictParseInt = strictParseLong; +const strictParseInt32 = (value) => { + if (typeof value === "string") { + return expectInt32(parseNumber(value)); + } + return expectInt32(value); +}; +const strictParseShort = (value) => { + if (typeof value === "string") { + return expectShort(parseNumber(value)); + } + return expectShort(value); +}; +const strictParseByte = (value) => { + if (typeof value === "string") { + return expectByte(parseNumber(value)); + } + return expectByte(value); +}; +const stackTraceWarning = (message) => { + return String(new TypeError(message).stack || message) + .split("\n") + .slice(0, 5) + .filter((s) => !s.includes("stackTraceWarning")) + .join("\n"); +}; +const logger = { + warn: console.warn, +}; + +const DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; +const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; +function dateToUtcString(date) { + const year = date.getUTCFullYear(); + const month = date.getUTCMonth(); + const dayOfWeek = date.getUTCDay(); + const dayOfMonthInt = date.getUTCDate(); + const hoursInt = date.getUTCHours(); + const minutesInt = date.getUTCMinutes(); + const secondsInt = date.getUTCSeconds(); + const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`; + const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`; + const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`; + const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`; + return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`; +} +const RFC3339 = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/); +const parseRfc3339DateTime = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match; + const year = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); +}; +const RFC3339_WITH_OFFSET$1 = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/); +const parseRfc3339DateTimeWithOffset = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339_WITH_OFFSET$1.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match; + const year = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); + if (offsetStr.toUpperCase() != "Z") { + date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr)); + } + return date; +}; +const IMF_FIXDATE$1 = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); +const RFC_850_DATE$1 = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); +const ASC_TIME$1 = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/); +const parseRfc7231DateTime = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-7231 date-times must be expressed as strings"); + } + let match = IMF_FIXDATE$1.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + match = RFC_850_DATE$1.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { + hours, + minutes, + seconds, + fractionalMilliseconds, + })); + } + match = ASC_TIME$1.exec(value); + if (match) { + const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + throw new TypeError("Invalid RFC-7231 date-time value"); +}; +const parseEpochTimestamp = (value) => { + if (value === null || value === undefined) { + return undefined; + } + let valueAsDouble; + if (typeof value === "number") { + valueAsDouble = value; + } + else if (typeof value === "string") { + valueAsDouble = strictParseDouble(value); + } + else if (typeof value === "object" && value.tag === 1) { + valueAsDouble = value.value; + } + else { + throw new TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation"); + } + if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) { + throw new TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics"); + } + return new Date(Math.round(valueAsDouble * 1000)); +}; +const buildDate = (year, month, day, time) => { + const adjustedMonth = month - 1; + validateDayOfMonth(year, adjustedMonth, day); + return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, "hour", 0, 23), parseDateValue(time.minutes, "minute", 0, 59), parseDateValue(time.seconds, "seconds", 0, 60), parseMilliseconds(time.fractionalMilliseconds))); +}; +const parseTwoDigitYear = (value) => { + const thisYear = new Date().getUTCFullYear(); + const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value)); + if (valueInThisCentury < thisYear) { + return valueInThisCentury + 100; + } + return valueInThisCentury; +}; +const FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1000; +const adjustRfc850Year = (input) => { + if (input.getTime() - new Date().getTime() > FIFTY_YEARS_IN_MILLIS) { + return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds())); + } + return input; +}; +const parseMonthByShortName = (value) => { + const monthIdx = MONTHS.indexOf(value); + if (monthIdx < 0) { + throw new TypeError(`Invalid month: ${value}`); + } + return monthIdx + 1; +}; +const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +const validateDayOfMonth = (year, month, day) => { + let maxDays = DAYS_IN_MONTH[month]; + if (month === 1 && isLeapYear(year)) { + maxDays = 29; + } + if (day > maxDays) { + throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`); + } +}; +const isLeapYear = (year) => { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +}; +const parseDateValue = (value, type, lower, upper) => { + const dateVal = strictParseByte(stripLeadingZeroes(value)); + if (dateVal < lower || dateVal > upper) { + throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`); + } + return dateVal; +}; +const parseMilliseconds = (value) => { + if (value === null || value === undefined) { + return 0; + } + return strictParseFloat32("0." + value) * 1000; +}; +const parseOffsetToMilliseconds = (value) => { + const directionStr = value[0]; + let direction = 1; + if (directionStr == "+") { + direction = 1; + } + else if (directionStr == "-") { + direction = -1; + } + else { + throw new TypeError(`Offset direction, ${directionStr}, must be "+" or "-"`); + } + const hour = Number(value.substring(1, 3)); + const minute = Number(value.substring(4, 6)); + return direction * (hour * 60 + minute) * 60 * 1000; +}; +const stripLeadingZeroes = (value) => { + let idx = 0; + while (idx < value.length - 1 && value.charAt(idx) === "0") { + idx++; + } + if (idx === 0) { + return value; + } + return value.slice(idx); +}; + +const LazyJsonString = function LazyJsonString(val) { + const str = Object.assign(new String(val), { + deserializeJSON() { + return JSON.parse(String(val)); + }, + toString() { + return String(val); + }, + toJSON() { + return String(val); + }, + }); + return str; +}; +LazyJsonString.from = (object) => { + if (object && typeof object === "object" && (object instanceof LazyJsonString || "deserializeJSON" in object)) { + return object; + } + else if (typeof object === "string" || Object.getPrototypeOf(object) === String.prototype) { + return LazyJsonString(String(object)); + } + return LazyJsonString(JSON.stringify(object)); +}; +LazyJsonString.fromObject = LazyJsonString.from; + +function quoteHeader(part) { + if (part.includes(",") || part.includes('"')) { + part = `"${part.replace(/"/g, '\\"')}"`; + } + return part; +} + +const ddd = `(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?`; +const mmm = `(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)`; +const time = `(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?`; +const date = `(\\d?\\d)`; +const year = `(\\d{4})`; +const RFC3339_WITH_OFFSET = new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/); +const IMF_FIXDATE = new RegExp(`^${ddd}, ${date} ${mmm} ${year} ${time} GMT$`); +const RFC_850_DATE = new RegExp(`^${ddd}, ${date}-${mmm}-(\\d\\d) ${time} GMT$`); +const ASC_TIME = new RegExp(`^${ddd} ${mmm} ( [1-9]|\\d\\d) ${time} ${year}$`); +const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; +const _parseEpochTimestamp = (value) => { + if (value == null) { + return void 0; + } + let num = NaN; + if (typeof value === "number") { + num = value; + } + else if (typeof value === "string") { + if (!/^-?\d*\.?\d+$/.test(value)) { + throw new TypeError(`parseEpochTimestamp - numeric string invalid.`); + } + num = Number.parseFloat(value); + } + else if (typeof value === "object" && value.tag === 1) { + num = value.value; + } + if (isNaN(num) || Math.abs(num) === Infinity) { + throw new TypeError("Epoch timestamps must be valid finite numbers."); + } + return new Date(Math.round(num * 1000)); +}; +const _parseRfc3339DateTimeWithOffset = (value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC3339 timestamps must be strings"); + } + const matches = RFC3339_WITH_OFFSET.exec(value); + if (!matches) { + throw new TypeError(`Invalid RFC3339 timestamp format ${value}`); + } + const [, yearStr, monthStr, dayStr, hours, minutes, seconds, , ms, offsetStr] = matches; + range(monthStr, 1, 12); + range(dayStr, 1, 31); + range(hours, 0, 23); + range(minutes, 0, 59); + range(seconds, 0, 60); + const date = new Date(Date.UTC(Number(yearStr), Number(monthStr) - 1, Number(dayStr), Number(hours), Number(minutes), Number(seconds), Number(ms) ? Math.round(parseFloat(`0.${ms}`) * 1000) : 0)); + date.setUTCFullYear(Number(yearStr)); + if (offsetStr.toUpperCase() != "Z") { + const [, sign, offsetH, offsetM] = /([+-])(\d\d):(\d\d)/.exec(offsetStr) || [void 0, "+", 0, 0]; + const scalar = sign === "-" ? 1 : -1; + date.setTime(date.getTime() + scalar * (Number(offsetH) * 60 * 60 * 1000 + Number(offsetM) * 60 * 1000)); + } + return date; +}; +const _parseRfc7231DateTime = (value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC7231 timestamps must be strings."); + } + let day; + let month; + let year; + let hour; + let minute; + let second; + let fraction; + let matches; + if ((matches = IMF_FIXDATE.exec(value))) { + [, day, month, year, hour, minute, second, fraction] = matches; + } + else if ((matches = RFC_850_DATE.exec(value))) { + [, day, month, year, hour, minute, second, fraction] = matches; + year = (Number(year) + 1900).toString(); + } + else if ((matches = ASC_TIME.exec(value))) { + [, month, day, hour, minute, second, fraction, year] = matches; + } + if (year && second) { + const timestamp = Date.UTC(Number(year), months.indexOf(month), Number(day), Number(hour), Number(minute), Number(second), fraction ? Math.round(parseFloat(`0.${fraction}`) * 1000) : 0); + range(day, 1, 31); + range(hour, 0, 23); + range(minute, 0, 59); + range(second, 0, 60); + const date = new Date(timestamp); + date.setUTCFullYear(Number(year)); + return date; + } + throw new TypeError(`Invalid RFC7231 date-time value ${value}.`); +}; +function range(v, min, max) { + const _v = Number(v); + if (_v < min || _v > max) { + throw new Error(`Value ${_v} out of range [${min}, ${max}]`); + } +} + +function splitEvery(value, delimiter, numDelimiters) { + if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) { + throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery."); + } + const segments = value.split(delimiter); + if (numDelimiters === 1) { + return segments; + } + const compoundSegments = []; + let currentSegment = ""; + for (let i = 0; i < segments.length; i++) { + if (currentSegment === "") { + currentSegment = segments[i]; + } + else { + currentSegment += delimiter + segments[i]; + } + if ((i + 1) % numDelimiters === 0) { + compoundSegments.push(currentSegment); + currentSegment = ""; + } + } + if (currentSegment !== "") { + compoundSegments.push(currentSegment); + } + return compoundSegments; +} + +const splitHeader = (value) => { + const z = value.length; + const values = []; + let withinQuotes = false; + let prevChar = undefined; + let anchor = 0; + for (let i = 0; i < z; ++i) { + const char = value[i]; + switch (char) { + case `"`: + if (prevChar !== "\\") { + withinQuotes = !withinQuotes; + } + break; + case ",": + if (!withinQuotes) { + values.push(value.slice(anchor, i)); + anchor = i + 1; + } + break; + } + prevChar = char; + } + values.push(value.slice(anchor)); + return values.map((v) => { + v = v.trim(); + const z = v.length; + if (z < 2) { + return v; + } + if (v[0] === `"` && v[z - 1] === `"`) { + v = v.slice(1, z - 1); + } + return v.replace(/\\"/g, '"'); + }); +}; + +const format = /^-?\d*(\.\d+)?$/; +class NumericValue { + string; + type; + constructor(string, type) { + this.string = string; + this.type = type; + if (!format.test(string)) { + throw new Error(`@smithy/core/serde - NumericValue must only contain [0-9], at most one decimal point ".", and an optional negation prefix "-".`); + } + } + toString() { + return this.string; + } + static [Symbol.hasInstance](object) { + if (!object || typeof object !== "object") { + return false; + } + const _nv = object; + return NumericValue.prototype.isPrototypeOf(object) || (_nv.type === "bigDecimal" && format.test(_nv.string)); + } +} +function nv(input) { + return new NumericValue(String(input), "bigDecimal"); +} + +exports.generateIdempotencyToken = uuid.v4; +exports.LazyJsonString = LazyJsonString; +exports.NumericValue = NumericValue; +exports._parseEpochTimestamp = _parseEpochTimestamp; +exports._parseRfc3339DateTimeWithOffset = _parseRfc3339DateTimeWithOffset; +exports._parseRfc7231DateTime = _parseRfc7231DateTime; +exports.copyDocumentWithTransform = copyDocumentWithTransform; +exports.dateToUtcString = dateToUtcString; +exports.expectBoolean = expectBoolean; +exports.expectByte = expectByte; +exports.expectFloat32 = expectFloat32; +exports.expectInt = expectInt; +exports.expectInt32 = expectInt32; +exports.expectLong = expectLong; +exports.expectNonNull = expectNonNull; +exports.expectNumber = expectNumber; +exports.expectObject = expectObject; +exports.expectShort = expectShort; +exports.expectString = expectString; +exports.expectUnion = expectUnion; +exports.handleFloat = handleFloat; +exports.limitedParseDouble = limitedParseDouble; +exports.limitedParseFloat = limitedParseFloat; +exports.limitedParseFloat32 = limitedParseFloat32; +exports.logger = logger; +exports.nv = nv; +exports.parseBoolean = parseBoolean; +exports.parseEpochTimestamp = parseEpochTimestamp; +exports.parseRfc3339DateTime = parseRfc3339DateTime; +exports.parseRfc3339DateTimeWithOffset = parseRfc3339DateTimeWithOffset; +exports.parseRfc7231DateTime = parseRfc7231DateTime; +exports.quoteHeader = quoteHeader; +exports.splitEvery = splitEvery; +exports.splitHeader = splitHeader; +exports.strictParseByte = strictParseByte; +exports.strictParseDouble = strictParseDouble; +exports.strictParseFloat = strictParseFloat; +exports.strictParseFloat32 = strictParseFloat32; +exports.strictParseInt = strictParseInt; +exports.strictParseInt32 = strictParseInt32; +exports.strictParseLong = strictParseLong; +exports.strictParseShort = strictParseShort; diff --git a/bff/node_modules/@smithy/core/dist-es/getSmithyContext.js b/bff/node_modules/@smithy/core/dist-es/getSmithyContext.js new file mode 100644 index 0000000..3848a0c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/getSmithyContext.js @@ -0,0 +1,2 @@ +import { SMITHY_CONTEXT_KEY } from "@smithy/types"; +export const getSmithyContext = (context) => context[SMITHY_CONTEXT_KEY] || (context[SMITHY_CONTEXT_KEY] = {}); diff --git a/bff/node_modules/@smithy/core/dist-es/index.js b/bff/node_modules/@smithy/core/dist-es/index.js new file mode 100644 index 0000000..82c90b9 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/index.js @@ -0,0 +1,8 @@ +export * from "./getSmithyContext"; +export * from "./middleware-http-auth-scheme"; +export * from "./middleware-http-signing"; +export * from "./normalizeProvider"; +export { createPaginator } from "./pagination/createPaginator"; +export * from "./request-builder/requestBuilder"; +export * from "./setFeature"; +export * from "./util-identity-and-auth"; diff --git a/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js new file mode 100644 index 0000000..d0aaae6 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js @@ -0,0 +1,17 @@ +import { httpAuthSchemeMiddleware } from "./httpAuthSchemeMiddleware"; +export const httpAuthSchemeEndpointRuleSetMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "endpointV2Middleware", +}; +export const getHttpAuthSchemeEndpointRuleSetPlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider, + }), httpAuthSchemeEndpointRuleSetMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js new file mode 100644 index 0000000..fbb448e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js @@ -0,0 +1,17 @@ +import { httpAuthSchemeMiddleware } from "./httpAuthSchemeMiddleware"; +export const httpAuthSchemeMiddlewareOptions = { + step: "serialize", + tags: ["HTTP_AUTH_SCHEME"], + name: "httpAuthSchemeMiddleware", + override: true, + relation: "before", + toMiddleware: "serializerMiddleware", +}; +export const getHttpAuthSchemePlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, { + httpAuthSchemeParametersProvider, + identityProviderConfigProvider, + }), httpAuthSchemeMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js new file mode 100644 index 0000000..dbd6cc0 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js @@ -0,0 +1,42 @@ +import { getSmithyContext } from "@smithy/util-middleware"; +import { resolveAuthOptions } from "./resolveAuthOptions"; +function convertHttpAuthSchemesToMap(httpAuthSchemes) { + const map = new Map(); + for (const scheme of httpAuthSchemes) { + map.set(scheme.schemeId, scheme); + } + return map; +} +export const httpAuthSchemeMiddleware = (config, mwOptions) => (next, context) => async (args) => { + const options = config.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input)); + const authSchemePreference = config.authSchemePreference ? await config.authSchemePreference() : []; + const resolvedOptions = resolveAuthOptions(options, authSchemePreference); + const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes); + const smithyContext = getSmithyContext(context); + const failureReasons = []; + for (const option of resolvedOptions) { + const scheme = authSchemes.get(option.schemeId); + if (!scheme) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` was not enabled for this service.`); + continue; + } + const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config)); + if (!identityProvider) { + failureReasons.push(`HttpAuthScheme \`${option.schemeId}\` did not have an IdentityProvider configured.`); + continue; + } + const { identityProperties = {}, signingProperties = {} } = option.propertiesExtractor?.(config, context) || {}; + option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties); + option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties); + smithyContext.selectedHttpAuthScheme = { + httpAuthOption: option, + identity: await identityProvider(option.identityProperties), + signer: scheme.signer, + }; + break; + } + if (!smithyContext.selectedHttpAuthScheme) { + throw new Error(failureReasons.join("\n")); + } + return next(args); +}; diff --git a/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/index.js b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/index.js new file mode 100644 index 0000000..5042e7d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/index.js @@ -0,0 +1,3 @@ +export * from "./httpAuthSchemeMiddleware"; +export * from "./getHttpAuthSchemeEndpointRuleSetPlugin"; +export * from "./getHttpAuthSchemePlugin"; diff --git a/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/resolveAuthOptions.js b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/resolveAuthOptions.js new file mode 100644 index 0000000..8260757 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/resolveAuthOptions.js @@ -0,0 +1,20 @@ +export const resolveAuthOptions = (candidateAuthOptions, authSchemePreference) => { + if (!authSchemePreference || authSchemePreference.length === 0) { + return candidateAuthOptions; + } + const preferredAuthOptions = []; + for (const preferredSchemeName of authSchemePreference) { + for (const candidateAuthOption of candidateAuthOptions) { + const candidateAuthSchemeName = candidateAuthOption.schemeId.split("#")[1]; + if (candidateAuthSchemeName === preferredSchemeName) { + preferredAuthOptions.push(candidateAuthOption); + } + } + } + for (const candidateAuthOption of candidateAuthOptions) { + if (!preferredAuthOptions.find(({ schemeId }) => schemeId === candidateAuthOption.schemeId)) { + preferredAuthOptions.push(candidateAuthOption); + } + } + return preferredAuthOptions; +}; diff --git a/bff/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js b/bff/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js new file mode 100644 index 0000000..e199712 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js @@ -0,0 +1,15 @@ +import { httpSigningMiddleware } from "./httpSigningMiddleware"; +export const httpSigningMiddlewareOptions = { + step: "finalizeRequest", + tags: ["HTTP_SIGNING"], + name: "httpSigningMiddleware", + aliases: ["apiKeyMiddleware", "tokenMiddleware", "awsAuthMiddleware"], + override: true, + relation: "after", + toMiddleware: "retryMiddleware", +}; +export const getHttpSigningPlugin = (config) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js b/bff/node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js new file mode 100644 index 0000000..a9b7b18 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js @@ -0,0 +1,23 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { getSmithyContext } from "@smithy/util-middleware"; +const defaultErrorHandler = (signingProperties) => (error) => { + throw error; +}; +const defaultSuccessHandler = (httpResponse, signingProperties) => { }; +export const httpSigningMiddleware = (config) => (next, context) => async (args) => { + if (!HttpRequest.isInstance(args.request)) { + return next(args); + } + const smithyContext = getSmithyContext(context); + const scheme = smithyContext.selectedHttpAuthScheme; + if (!scheme) { + throw new Error(`No HttpAuthScheme was selected: unable to sign request`); + } + const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme; + const output = await next({ + ...args, + request: await signer.sign(args.request, identity, signingProperties), + }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties)); + (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties); + return output; +}; diff --git a/bff/node_modules/@smithy/core/dist-es/middleware-http-signing/index.js b/bff/node_modules/@smithy/core/dist-es/middleware-http-signing/index.js new file mode 100644 index 0000000..7bc6cfe --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/middleware-http-signing/index.js @@ -0,0 +1,2 @@ +export * from "./httpSigningMiddleware"; +export * from "./getHttpSigningMiddleware"; diff --git a/bff/node_modules/@smithy/core/dist-es/normalizeProvider.js b/bff/node_modules/@smithy/core/dist-es/normalizeProvider.js new file mode 100644 index 0000000..a83ea99 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/normalizeProvider.js @@ -0,0 +1,6 @@ +export const normalizeProvider = (input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; +}; diff --git a/bff/node_modules/@smithy/core/dist-es/pagination/createPaginator.js b/bff/node_modules/@smithy/core/dist-es/pagination/createPaginator.js new file mode 100644 index 0000000..4e8f889 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/pagination/createPaginator.js @@ -0,0 +1,41 @@ +const makePagedClientRequest = async (CommandCtor, client, input, withCommand = (_) => _, ...args) => { + let command = new CommandCtor(input); + command = withCommand(command) ?? command; + return await client.send(command, ...args); +}; +export function createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) { + return async function* paginateOperation(config, input, ...additionalArguments) { + const _input = input; + let token = config.startingToken ?? _input[inputTokenName]; + let hasNext = true; + let page; + while (hasNext) { + _input[inputTokenName] = token; + if (pageSizeTokenName) { + _input[pageSizeTokenName] = _input[pageSizeTokenName] ?? config.pageSize; + } + if (config.client instanceof ClientCtor) { + page = await makePagedClientRequest(CommandCtor, config.client, input, config.withCommand, ...additionalArguments); + } + else { + throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`); + } + yield page; + const prevToken = token; + token = get(page, outputTokenName); + hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken)); + } + return undefined; + }; +} +const get = (fromObject, path) => { + let cursor = fromObject; + const pathComponents = path.split("."); + for (const step of pathComponents) { + if (!cursor || typeof cursor !== "object") { + return undefined; + } + cursor = cursor[step]; + } + return cursor; +}; diff --git a/bff/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js b/bff/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js new file mode 100644 index 0000000..5b790a7 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/request-builder/requestBuilder.js @@ -0,0 +1 @@ +export { requestBuilder } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/core/dist-es/setFeature.js b/bff/node_modules/@smithy/core/dist-es/setFeature.js new file mode 100644 index 0000000..a3a0303 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/setFeature.js @@ -0,0 +1,11 @@ +export function setFeature(context, feature, value) { + if (!context.__smithy_context) { + context.__smithy_context = { + features: {}, + }; + } + else if (!context.__smithy_context.features) { + context.__smithy_context.features = {}; + } + context.__smithy_context.features[feature] = value; +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js new file mode 100644 index 0000000..c21c971 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js @@ -0,0 +1,206 @@ +import { SerdeContext } from "@smithy/core/protocols"; +import { NormalizedSchema } from "@smithy/core/schema"; +import { _parseEpochTimestamp, generateIdempotencyToken } from "@smithy/core/serde"; +import { NumericValue } from "@smithy/core/serde"; +import { fromBase64 } from "@smithy/util-base64"; +import { cbor } from "./cbor"; +import { dateToTag } from "./parseCborBody"; +export class CborCodec extends SerdeContext { + createSerializer() { + const serializer = new CborShapeSerializer(); + serializer.setSerdeContext(this.serdeContext); + return serializer; + } + createDeserializer() { + const deserializer = new CborShapeDeserializer(); + deserializer.setSerdeContext(this.serdeContext); + return deserializer; + } +} +export class CborShapeSerializer extends SerdeContext { + value; + write(schema, value) { + this.value = this.serialize(schema, value); + } + serialize(schema, source) { + const ns = NormalizedSchema.of(schema); + if (source == null) { + if (ns.isIdempotencyToken()) { + return generateIdempotencyToken(); + } + return source; + } + if (ns.isBlobSchema()) { + if (typeof source === "string") { + return (this.serdeContext?.base64Decoder ?? fromBase64)(source); + } + return source; + } + if (ns.isTimestampSchema()) { + if (typeof source === "number" || typeof source === "bigint") { + return dateToTag(new Date((Number(source) / 1000) | 0)); + } + return dateToTag(source); + } + if (typeof source === "function" || typeof source === "object") { + const sourceObject = source; + if (ns.isListSchema() && Array.isArray(sourceObject)) { + const sparse = !!ns.getMergedTraits().sparse; + const newArray = []; + let i = 0; + for (const item of sourceObject) { + const value = this.serialize(ns.getValueSchema(), item); + if (value != null || sparse) { + newArray[i++] = value; + } + } + return newArray; + } + if (sourceObject instanceof Date) { + return dateToTag(sourceObject); + } + const newObject = {}; + if (ns.isMapSchema()) { + const sparse = !!ns.getMergedTraits().sparse; + for (const key of Object.keys(sourceObject)) { + const value = this.serialize(ns.getValueSchema(), sourceObject[key]); + if (value != null || sparse) { + newObject[key] = value; + } + } + } + else if (ns.isStructSchema()) { + for (const [key, memberSchema] of ns.structIterator()) { + const value = this.serialize(memberSchema, sourceObject[key]); + if (value != null) { + newObject[key] = value; + } + } + const isUnion = ns.isUnionSchema(); + if (isUnion && Array.isArray(sourceObject.$unknown)) { + const [k, v] = sourceObject.$unknown; + newObject[k] = v; + } + else if (typeof sourceObject.__type === "string") { + for (const [k, v] of Object.entries(sourceObject)) { + if (!(k in newObject)) { + newObject[k] = this.serialize(15, v); + } + } + } + } + else if (ns.isDocumentSchema()) { + for (const key of Object.keys(sourceObject)) { + newObject[key] = this.serialize(ns.getValueSchema(), sourceObject[key]); + } + } + else if (ns.isBigDecimalSchema()) { + return sourceObject; + } + return newObject; + } + return source; + } + flush() { + const buffer = cbor.serialize(this.value); + this.value = undefined; + return buffer; + } +} +export class CborShapeDeserializer extends SerdeContext { + read(schema, bytes) { + const data = cbor.deserialize(bytes); + return this.readValue(schema, data); + } + readValue(_schema, value) { + const ns = NormalizedSchema.of(_schema); + if (ns.isTimestampSchema()) { + if (typeof value === "number") { + return _parseEpochTimestamp(value); + } + if (typeof value === "object") { + if (value.tag === 1 && "value" in value) { + return _parseEpochTimestamp(value.value); + } + } + } + if (ns.isBlobSchema()) { + if (typeof value === "string") { + return (this.serdeContext?.base64Decoder ?? fromBase64)(value); + } + return value; + } + if (typeof value === "undefined" || + typeof value === "boolean" || + typeof value === "number" || + typeof value === "string" || + typeof value === "bigint" || + typeof value === "symbol") { + return value; + } + else if (typeof value === "object") { + if (value === null) { + return null; + } + if ("byteLength" in value) { + return value; + } + if (value instanceof Date) { + return value; + } + if (ns.isDocumentSchema()) { + return value; + } + if (ns.isListSchema()) { + const newArray = []; + const memberSchema = ns.getValueSchema(); + for (const item of value) { + const itemValue = this.readValue(memberSchema, item); + newArray.push(itemValue); + } + return newArray; + } + const newObject = {}; + if (ns.isMapSchema()) { + const targetSchema = ns.getValueSchema(); + for (const key of Object.keys(value)) { + const itemValue = this.readValue(targetSchema, value[key]); + newObject[key] = itemValue; + } + } + else if (ns.isStructSchema()) { + const isUnion = ns.isUnionSchema(); + let keys; + if (isUnion) { + keys = new Set(Object.keys(value).filter((k) => k !== "__type")); + } + for (const [key, memberSchema] of ns.structIterator()) { + if (isUnion) { + keys.delete(key); + } + if (value[key] != null) { + newObject[key] = this.readValue(memberSchema, value[key]); + } + } + if (isUnion && keys?.size === 1 && Object.keys(newObject).length === 0) { + const k = keys.values().next().value; + newObject.$unknown = [k, value[k]]; + } + else if (typeof value.__type === "string") { + for (const [k, v] of Object.entries(value)) { + if (!(k in newObject)) { + newObject[k] = v; + } + } + } + } + else if (value instanceof NumericValue) { + return value; + } + return newObject; + } + else { + return value; + } + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js new file mode 100644 index 0000000..bfecf13 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/SmithyRpcV2CborProtocol.js @@ -0,0 +1,100 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import { deref, NormalizedSchema } from "@smithy/core/schema"; +import { getSmithyContext } from "@smithy/util-middleware"; +import { CborCodec } from "./CborCodec"; +import { loadSmithyRpcV2CborErrorCode } from "./parseCborBody"; +export class SmithyRpcV2CborProtocol extends RpcProtocol { + codec = new CborCodec(); + serializer = this.codec.createSerializer(); + deserializer = this.codec.createDeserializer(); + constructor({ defaultNamespace, errorTypeRegistries, }) { + super({ defaultNamespace, errorTypeRegistries }); + } + getShapeId() { + return "smithy.protocols#rpcv2Cbor"; + } + getPayloadCodec() { + return this.codec; + } + async serializeRequest(operationSchema, input, context) { + const request = await super.serializeRequest(operationSchema, input, context); + Object.assign(request.headers, { + "content-type": this.getDefaultContentType(), + "smithy-protocol": "rpc-v2-cbor", + accept: this.getDefaultContentType(), + }); + if (deref(operationSchema.input) === "unit") { + delete request.body; + delete request.headers["content-type"]; + } + else { + if (!request.body) { + this.serializer.write(15, {}); + request.body = this.serializer.flush(); + } + try { + request.headers["content-length"] = String(request.body.byteLength); + } + catch (e) { } + } + const { service, operation } = getSmithyContext(context); + const path = `/service/${service}/operation/${operation}`; + if (request.path.endsWith("/")) { + request.path += path.slice(1); + } + else { + request.path += path; + } + return request; + } + async deserializeResponse(operationSchema, context, response) { + return super.deserializeResponse(operationSchema, context, response); + } + async handleError(operationSchema, context, response, dataObject, metadata) { + const errorName = loadSmithyRpcV2CborErrorCode(response, dataObject) ?? "Unknown"; + const errorMetadata = { + $metadata: metadata, + $fault: response.statusCode <= 500 ? "client" : "server", + }; + let namespace = this.options.defaultNamespace; + if (errorName.includes("#")) { + [namespace] = errorName.split("#"); + } + const registry = this.compositeErrorRegistry; + const nsRegistry = TypeRegistry.for(namespace); + registry.copyFrom(nsRegistry); + let errorSchema; + try { + errorSchema = registry.getSchema(errorName); + } + catch (e) { + if (dataObject.Message) { + dataObject.message = dataObject.Message; + } + const syntheticRegistry = TypeRegistry.for("smithy.ts.sdk.synthetic." + namespace); + registry.copyFrom(syntheticRegistry); + const baseExceptionSchema = registry.getBaseException(); + if (baseExceptionSchema) { + const ErrorCtor = registry.getErrorCtor(baseExceptionSchema); + throw Object.assign(new ErrorCtor({ name: errorName }), errorMetadata, dataObject); + } + throw Object.assign(new Error(errorName), errorMetadata, dataObject); + } + const ns = NormalizedSchema.of(errorSchema); + const ErrorCtor = registry.getErrorCtor(errorSchema); + const message = dataObject.message ?? dataObject.Message ?? "Unknown"; + const exception = new ErrorCtor(message); + const output = {}; + for (const [name, member] of ns.structIterator()) { + output[name] = this.deserializer.readValue(member, dataObject[name]); + } + throw Object.assign(exception, errorMetadata, { + $fault: ns.getMergedTraits().error, + message, + }, output); + } + getDefaultContentType() { + return "application/cbor"; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/cbor/byte-printer.js b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/byte-printer.js new file mode 100644 index 0000000..693298d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/byte-printer.js @@ -0,0 +1,37 @@ +export function printBytes(bytes) { + return [...bytes].map((n) => { + const pad = (num) => ("0".repeat(8) + num.toString(2)).slice(-8); + const b = pad(n); + const [maj, min] = [b.slice(0, 3), b.slice(3)]; + let dmaj = ""; + switch (maj) { + case "000": + dmaj = "0 - Uint64"; + break; + case "001": + dmaj = "1 - Neg Uint64"; + break; + case "010": + dmaj = "2 - unstructured bytestring"; + break; + case "011": + dmaj = "3 - utf8 string"; + break; + case "100": + dmaj = "4 - list"; + break; + case "101": + dmaj = "5 - map"; + break; + case "110": + dmaj = "6 - tag"; + break; + case "111": + dmaj = "7 - special"; + break; + default: + dmaj = String(parseInt(maj, 2)); + } + return `${maj}_${min} (${dmaj}, ${parseInt(min, 2)})`; + }); +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js new file mode 100644 index 0000000..813205f --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js @@ -0,0 +1,426 @@ +import { nv } from "@smithy/core/serde"; +import { toUtf8 } from "@smithy/util-utf8"; +import { alloc, extendedFloat16, extendedFloat32, extendedFloat64, extendedOneByte, majorList, majorMap, majorNegativeInt64, majorTag, majorUint64, majorUnstructuredByteString, majorUtf8String, minorIndefinite, specialFalse, specialNull, specialTrue, specialUndefined, tag, } from "./cbor-types"; +const USE_TEXT_DECODER = typeof TextDecoder !== "undefined"; +const USE_BUFFER = typeof Buffer !== "undefined"; +let payload = alloc(0); +let dataView = new DataView(payload.buffer, payload.byteOffset, payload.byteLength); +const textDecoder = USE_TEXT_DECODER ? new TextDecoder() : null; +let _offset = 0; +export function setPayload(bytes) { + payload = bytes; + dataView = new DataView(payload.buffer, payload.byteOffset, payload.byteLength); +} +export function decode(at, to) { + if (at >= to) { + throw new Error("unexpected end of (decode) payload."); + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + switch (major) { + case majorUint64: + case majorNegativeInt64: + case majorTag: + let unsignedInt; + let offset; + if (minor < 24) { + unsignedInt = minor; + offset = 1; + } + else { + switch (minor) { + case extendedOneByte: + case extendedFloat16: + case extendedFloat32: + case extendedFloat64: + const countLength = minorValueToArgumentLength[minor]; + const countOffset = (countLength + 1); + offset = countOffset; + if (to - at < countOffset) { + throw new Error(`countLength ${countLength} greater than remaining buf len.`); + } + const countIndex = at + 1; + if (countLength === 1) { + unsignedInt = payload[countIndex]; + } + else if (countLength === 2) { + unsignedInt = dataView.getUint16(countIndex); + } + else if (countLength === 4) { + unsignedInt = dataView.getUint32(countIndex); + } + else { + unsignedInt = dataView.getBigUint64(countIndex); + } + break; + default: + throw new Error(`unexpected minor value ${minor}.`); + } + } + if (major === majorUint64) { + _offset = offset; + return castBigInt(unsignedInt); + } + else if (major === majorNegativeInt64) { + let negativeInt; + if (typeof unsignedInt === "bigint") { + negativeInt = BigInt(-1) - unsignedInt; + } + else { + negativeInt = -1 - unsignedInt; + } + _offset = offset; + return castBigInt(negativeInt); + } + else { + if (minor === 2 || minor === 3) { + const length = decodeCount(at + offset, to); + let b = BigInt(0); + const start = at + offset + _offset; + for (let i = start; i < start + length; ++i) { + b = (b << BigInt(8)) | BigInt(payload[i]); + } + _offset = offset + _offset + length; + return minor === 3 ? -b - BigInt(1) : b; + } + else if (minor === 4) { + const decimalFraction = decode(at + offset, to); + const [exponent, mantissa] = decimalFraction; + const normalizer = mantissa < 0 ? -1 : 1; + const mantissaStr = "0".repeat(Math.abs(exponent) + 1) + String(BigInt(normalizer) * BigInt(mantissa)); + let numericString; + const sign = mantissa < 0 ? "-" : ""; + numericString = + exponent === 0 + ? mantissaStr + : mantissaStr.slice(0, mantissaStr.length + exponent) + "." + mantissaStr.slice(exponent); + numericString = numericString.replace(/^0+/g, ""); + if (numericString === "") { + numericString = "0"; + } + if (numericString[0] === ".") { + numericString = "0" + numericString; + } + numericString = sign + numericString; + _offset = offset + _offset; + return nv(numericString); + } + else { + const value = decode(at + offset, to); + const valueOffset = _offset; + _offset = offset + valueOffset; + return tag({ tag: castBigInt(unsignedInt), value }); + } + } + case majorUtf8String: + case majorMap: + case majorList: + case majorUnstructuredByteString: + if (minor === minorIndefinite) { + switch (major) { + case majorUtf8String: + return decodeUtf8StringIndefinite(at, to); + case majorMap: + return decodeMapIndefinite(at, to); + case majorList: + return decodeListIndefinite(at, to); + case majorUnstructuredByteString: + return decodeUnstructuredByteStringIndefinite(at, to); + } + } + else { + switch (major) { + case majorUtf8String: + return decodeUtf8String(at, to); + case majorMap: + return decodeMap(at, to); + case majorList: + return decodeList(at, to); + case majorUnstructuredByteString: + return decodeUnstructuredByteString(at, to); + } + } + default: + return decodeSpecial(at, to); + } +} +function bytesToUtf8(bytes, at, to) { + if (USE_BUFFER && bytes.constructor?.name === "Buffer") { + return bytes.toString("utf-8", at, to); + } + if (textDecoder) { + return textDecoder.decode(bytes.subarray(at, to)); + } + return toUtf8(bytes.subarray(at, to)); +} +function demote(bigInteger) { + const num = Number(bigInteger); + if (num < Number.MIN_SAFE_INTEGER || Number.MAX_SAFE_INTEGER < num) { + console.warn(new Error(`@smithy/core/cbor - truncating BigInt(${bigInteger}) to ${num} with loss of precision.`)); + } + return num; +} +const minorValueToArgumentLength = { + [extendedOneByte]: 1, + [extendedFloat16]: 2, + [extendedFloat32]: 4, + [extendedFloat64]: 8, +}; +export function bytesToFloat16(a, b) { + const sign = a >> 7; + const exponent = (a & 0b0111_1100) >> 2; + const fraction = ((a & 0b0000_0011) << 8) | b; + const scalar = sign === 0 ? 1 : -1; + let exponentComponent; + let summation; + if (exponent === 0b00000) { + if (fraction === 0b00000_00000) { + return 0; + } + else { + exponentComponent = Math.pow(2, 1 - 15); + summation = 0; + } + } + else if (exponent === 0b11111) { + if (fraction === 0b00000_00000) { + return scalar * Infinity; + } + else { + return NaN; + } + } + else { + exponentComponent = Math.pow(2, exponent - 15); + summation = 1; + } + summation += fraction / 1024; + return scalar * (exponentComponent * summation); +} +function decodeCount(at, to) { + const minor = payload[at] & 0b0001_1111; + if (minor < 24) { + _offset = 1; + return minor; + } + if (minor === extendedOneByte || + minor === extendedFloat16 || + minor === extendedFloat32 || + minor === extendedFloat64) { + const countLength = minorValueToArgumentLength[minor]; + _offset = (countLength + 1); + if (to - at < _offset) { + throw new Error(`countLength ${countLength} greater than remaining buf len.`); + } + const countIndex = at + 1; + if (countLength === 1) { + return payload[countIndex]; + } + else if (countLength === 2) { + return dataView.getUint16(countIndex); + } + else if (countLength === 4) { + return dataView.getUint32(countIndex); + } + return demote(dataView.getBigUint64(countIndex)); + } + throw new Error(`unexpected minor value ${minor}.`); +} +function decodeUtf8String(at, to) { + const length = decodeCount(at, to); + const offset = _offset; + at += offset; + if (to - at < length) { + throw new Error(`string len ${length} greater than remaining buf len.`); + } + const value = bytesToUtf8(payload, at, at + length); + _offset = offset + length; + return value; +} +function decodeUtf8StringIndefinite(at, to) { + at += 1; + const vector = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + const data = alloc(vector.length); + data.set(vector, 0); + _offset = at - base + 2; + return bytesToUtf8(data, 0, data.length); + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} in indefinite string.`); + } + if (minor === minorIndefinite) { + throw new Error("nested indefinite string."); + } + const bytes = decodeUnstructuredByteString(at, to); + const length = _offset; + at += length; + for (let i = 0; i < bytes.length; ++i) { + vector.push(bytes[i]); + } + } + throw new Error("expected break marker."); +} +function decodeUnstructuredByteString(at, to) { + const length = decodeCount(at, to); + const offset = _offset; + at += offset; + if (to - at < length) { + throw new Error(`unstructured byte string len ${length} greater than remaining buf len.`); + } + const value = payload.subarray(at, at + length); + _offset = offset + length; + return value; +} +function decodeUnstructuredByteStringIndefinite(at, to) { + at += 1; + const vector = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + const data = alloc(vector.length); + data.set(vector, 0); + _offset = at - base + 2; + return data; + } + const major = (payload[at] & 0b1110_0000) >> 5; + const minor = payload[at] & 0b0001_1111; + if (major !== majorUnstructuredByteString) { + throw new Error(`unexpected major type ${major} in indefinite string.`); + } + if (minor === minorIndefinite) { + throw new Error("nested indefinite string."); + } + const bytes = decodeUnstructuredByteString(at, to); + const length = _offset; + at += length; + for (let i = 0; i < bytes.length; ++i) { + vector.push(bytes[i]); + } + } + throw new Error("expected break marker."); +} +function decodeList(at, to) { + const listDataLength = decodeCount(at, to); + const offset = _offset; + at += offset; + const base = at; + const list = Array(listDataLength); + for (let i = 0; i < listDataLength; ++i) { + const item = decode(at, to); + const itemOffset = _offset; + list[i] = item; + at += itemOffset; + } + _offset = offset + (at - base); + return list; +} +function decodeListIndefinite(at, to) { + at += 1; + const list = []; + for (const base = at; at < to;) { + if (payload[at] === 0b1111_1111) { + _offset = at - base + 2; + return list; + } + const item = decode(at, to); + const n = _offset; + at += n; + list.push(item); + } + throw new Error("expected break marker."); +} +function decodeMap(at, to) { + const mapDataLength = decodeCount(at, to); + const offset = _offset; + at += offset; + const base = at; + const map = {}; + for (let i = 0; i < mapDataLength; ++i) { + if (at >= to) { + throw new Error("unexpected end of map payload."); + } + const major = (payload[at] & 0b1110_0000) >> 5; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} for map key at index ${at}.`); + } + const key = decode(at, to); + at += _offset; + const value = decode(at, to); + at += _offset; + map[key] = value; + } + _offset = offset + (at - base); + return map; +} +function decodeMapIndefinite(at, to) { + at += 1; + const base = at; + const map = {}; + for (; at < to;) { + if (at >= to) { + throw new Error("unexpected end of map payload."); + } + if (payload[at] === 0b1111_1111) { + _offset = at - base + 2; + return map; + } + const major = (payload[at] & 0b1110_0000) >> 5; + if (major !== majorUtf8String) { + throw new Error(`unexpected major type ${major} for map key.`); + } + const key = decode(at, to); + at += _offset; + const value = decode(at, to); + at += _offset; + map[key] = value; + } + throw new Error("expected break marker."); +} +function decodeSpecial(at, to) { + const minor = payload[at] & 0b0001_1111; + switch (minor) { + case specialTrue: + case specialFalse: + _offset = 1; + return minor === specialTrue; + case specialNull: + _offset = 1; + return null; + case specialUndefined: + _offset = 1; + return null; + case extendedFloat16: + if (to - at < 3) { + throw new Error("incomplete float16 at end of buf."); + } + _offset = 3; + return bytesToFloat16(payload[at + 1], payload[at + 2]); + case extendedFloat32: + if (to - at < 5) { + throw new Error("incomplete float32 at end of buf."); + } + _offset = 5; + return dataView.getFloat32(at + 1); + case extendedFloat64: + if (to - at < 9) { + throw new Error("incomplete float64 at end of buf."); + } + _offset = 9; + return dataView.getFloat64(at + 1); + default: + throw new Error(`unexpected minor value ${minor}.`); + } +} +function castBigInt(bigInt) { + if (typeof bigInt === "number") { + return bigInt; + } + const num = Number(bigInt); + if (Number.MIN_SAFE_INTEGER <= num && num <= Number.MAX_SAFE_INTEGER) { + return num; + } + return bigInt; +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js new file mode 100644 index 0000000..ffa87fa --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js @@ -0,0 +1,221 @@ +import { NumericValue } from "@smithy/core/serde"; +import { fromUtf8 } from "@smithy/util-utf8"; +import { alloc, extendedFloat16, extendedFloat32, extendedFloat64, majorList, majorMap, majorNegativeInt64, majorSpecial, majorTag, majorUint64, majorUnstructuredByteString, majorUtf8String, specialFalse, specialNull, specialTrue, tagSymbol, } from "./cbor-types"; +const USE_BUFFER = typeof Buffer !== "undefined"; +const initialSize = 2048; +let data = alloc(initialSize); +let dataView = new DataView(data.buffer, data.byteOffset, data.byteLength); +let cursor = 0; +function ensureSpace(bytes) { + const remaining = data.byteLength - cursor; + if (remaining < bytes) { + if (cursor < 16_000_000) { + resize(Math.max(data.byteLength * 4, data.byteLength + bytes)); + } + else { + resize(data.byteLength + bytes + 16_000_000); + } + } +} +export function toUint8Array() { + const out = alloc(cursor); + out.set(data.subarray(0, cursor), 0); + cursor = 0; + return out; +} +export function resize(size) { + const old = data; + data = alloc(size); + if (old) { + if (old.copy) { + old.copy(data, 0, 0, old.byteLength); + } + else { + data.set(old, 0); + } + } + dataView = new DataView(data.buffer, data.byteOffset, data.byteLength); +} +function encodeHeader(major, value) { + if (value < 24) { + data[cursor++] = (major << 5) | value; + } + else if (value < 1 << 8) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = value; + } + else if (value < 1 << 16) { + data[cursor++] = (major << 5) | extendedFloat16; + dataView.setUint16(cursor, value); + cursor += 2; + } + else if (value < 2 ** 32) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, value); + cursor += 4; + } + else { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, typeof value === "bigint" ? value : BigInt(value)); + cursor += 8; + } +} +export function encode(_input) { + const encodeStack = [_input]; + while (encodeStack.length) { + const input = encodeStack.pop(); + ensureSpace(typeof input === "string" ? input.length * 4 : 64); + if (typeof input === "string") { + if (USE_BUFFER) { + encodeHeader(majorUtf8String, Buffer.byteLength(input)); + cursor += data.write(input, cursor); + } + else { + const bytes = fromUtf8(input); + encodeHeader(majorUtf8String, bytes.byteLength); + data.set(bytes, cursor); + cursor += bytes.byteLength; + } + continue; + } + else if (typeof input === "number") { + if (Number.isInteger(input)) { + const nonNegative = input >= 0; + const major = nonNegative ? majorUint64 : majorNegativeInt64; + const value = nonNegative ? input : -input - 1; + if (value < 24) { + data[cursor++] = (major << 5) | value; + } + else if (value < 256) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = value; + } + else if (value < 65536) { + data[cursor++] = (major << 5) | extendedFloat16; + data[cursor++] = value >> 8; + data[cursor++] = value; + } + else if (value < 4294967296) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, value); + cursor += 4; + } + else { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, BigInt(value)); + cursor += 8; + } + continue; + } + data[cursor++] = (majorSpecial << 5) | extendedFloat64; + dataView.setFloat64(cursor, input); + cursor += 8; + continue; + } + else if (typeof input === "bigint") { + const nonNegative = input >= 0; + const major = nonNegative ? majorUint64 : majorNegativeInt64; + const value = nonNegative ? input : -input - BigInt(1); + const n = Number(value); + if (n < 24) { + data[cursor++] = (major << 5) | n; + } + else if (n < 256) { + data[cursor++] = (major << 5) | 24; + data[cursor++] = n; + } + else if (n < 65536) { + data[cursor++] = (major << 5) | extendedFloat16; + data[cursor++] = n >> 8; + data[cursor++] = n & 0b1111_1111; + } + else if (n < 4294967296) { + data[cursor++] = (major << 5) | extendedFloat32; + dataView.setUint32(cursor, n); + cursor += 4; + } + else if (value < BigInt("18446744073709551616")) { + data[cursor++] = (major << 5) | extendedFloat64; + dataView.setBigUint64(cursor, value); + cursor += 8; + } + else { + const binaryBigInt = value.toString(2); + const bigIntBytes = new Uint8Array(Math.ceil(binaryBigInt.length / 8)); + let b = value; + let i = 0; + while (bigIntBytes.byteLength - ++i >= 0) { + bigIntBytes[bigIntBytes.byteLength - i] = Number(b & BigInt(255)); + b >>= BigInt(8); + } + ensureSpace(bigIntBytes.byteLength * 2); + data[cursor++] = nonNegative ? 0b110_00010 : 0b110_00011; + if (USE_BUFFER) { + encodeHeader(majorUnstructuredByteString, Buffer.byteLength(bigIntBytes)); + } + else { + encodeHeader(majorUnstructuredByteString, bigIntBytes.byteLength); + } + data.set(bigIntBytes, cursor); + cursor += bigIntBytes.byteLength; + } + continue; + } + else if (input === null) { + data[cursor++] = (majorSpecial << 5) | specialNull; + continue; + } + else if (typeof input === "boolean") { + data[cursor++] = (majorSpecial << 5) | (input ? specialTrue : specialFalse); + continue; + } + else if (typeof input === "undefined") { + throw new Error("@smithy/core/cbor: client may not serialize undefined value."); + } + else if (Array.isArray(input)) { + for (let i = input.length - 1; i >= 0; --i) { + encodeStack.push(input[i]); + } + encodeHeader(majorList, input.length); + continue; + } + else if (typeof input.byteLength === "number") { + ensureSpace(input.length * 2); + encodeHeader(majorUnstructuredByteString, input.length); + data.set(input, cursor); + cursor += input.byteLength; + continue; + } + else if (typeof input === "object") { + if (input instanceof NumericValue) { + const decimalIndex = input.string.indexOf("."); + const exponent = decimalIndex === -1 ? 0 : decimalIndex - input.string.length + 1; + const mantissa = BigInt(input.string.replace(".", "")); + data[cursor++] = 0b110_00100; + encodeStack.push(mantissa); + encodeStack.push(exponent); + encodeHeader(majorList, 2); + continue; + } + if (input[tagSymbol]) { + if ("tag" in input && "value" in input) { + encodeStack.push(input.value); + encodeHeader(majorTag, input.tag); + continue; + } + else { + throw new Error("tag encountered with missing fields, need 'tag' and 'value', found: " + JSON.stringify(input)); + } + } + const keys = Object.keys(input); + for (let i = keys.length - 1; i >= 0; --i) { + const key = keys[i]; + encodeStack.push(input[key]); + encodeStack.push(key); + } + encodeHeader(majorMap, keys.length); + continue; + } + throw new Error(`data type ${input?.constructor?.name ?? typeof input} not compatible for encoding.`); + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js new file mode 100644 index 0000000..a720eb7 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js @@ -0,0 +1,25 @@ +export const majorUint64 = 0; +export const majorNegativeInt64 = 1; +export const majorUnstructuredByteString = 2; +export const majorUtf8String = 3; +export const majorList = 4; +export const majorMap = 5; +export const majorTag = 6; +export const majorSpecial = 7; +export const specialFalse = 20; +export const specialTrue = 21; +export const specialNull = 22; +export const specialUndefined = 23; +export const extendedOneByte = 24; +export const extendedFloat16 = 25; +export const extendedFloat32 = 26; +export const extendedFloat64 = 27; +export const minorIndefinite = 31; +export function alloc(size) { + return typeof Buffer !== "undefined" ? Buffer.alloc(size) : new Uint8Array(size); +} +export const tagSymbol = Symbol("@smithy/core/cbor::tagSymbol"); +export function tag(data) { + data[tagSymbol] = true; + return data; +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js new file mode 100644 index 0000000..8df975f --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js @@ -0,0 +1,21 @@ +import { decode, setPayload } from "./cbor-decode"; +import { encode, resize, toUint8Array } from "./cbor-encode"; +export const cbor = { + deserialize(payload) { + setPayload(payload); + return decode(0, payload.length); + }, + serialize(input) { + try { + encode(input); + return toUint8Array(); + } + catch (e) { + toUint8Array(); + throw e; + } + }, + resizeEncodingBuffer(size) { + resize(size); + }, +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/cbor/index.js b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/index.js new file mode 100644 index 0000000..c53524e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/index.js @@ -0,0 +1,5 @@ +export { cbor } from "./cbor"; +export { tag, tagSymbol } from "./cbor-types"; +export * from "./parseCborBody"; +export * from "./SmithyRpcV2CborProtocol"; +export * from "./CborCodec"; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js new file mode 100644 index 0000000..c7594d7 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js @@ -0,0 +1,92 @@ +import { collectBody } from "@smithy/core/protocols"; +import { HttpRequest as __HttpRequest } from "@smithy/protocol-http"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { cbor } from "./cbor"; +import { tag } from "./cbor-types"; +export const parseCborBody = (streamBody, context) => { + return collectBody(streamBody, context).then(async (bytes) => { + if (bytes.length) { + try { + return cbor.deserialize(bytes); + } + catch (e) { + Object.defineProperty(e, "$responseBodyText", { + value: context.utf8Encoder(bytes), + }); + throw e; + } + } + return {}; + }); +}; +export const dateToTag = (date) => { + return tag({ + tag: 1, + value: date.getTime() / 1000, + }); +}; +export const parseCborErrorBody = async (errorBody, context) => { + const value = await parseCborBody(errorBody, context); + value.message = value.message ?? value.Message; + return value; +}; +export const loadSmithyRpcV2CborErrorCode = (output, data) => { + const sanitizeErrorCode = (rawValue) => { + let cleanValue = rawValue; + if (typeof cleanValue === "number") { + cleanValue = cleanValue.toString(); + } + if (cleanValue.indexOf(",") >= 0) { + cleanValue = cleanValue.split(",")[0]; + } + if (cleanValue.indexOf(":") >= 0) { + cleanValue = cleanValue.split(":")[0]; + } + if (cleanValue.indexOf("#") >= 0) { + cleanValue = cleanValue.split("#")[1]; + } + return cleanValue; + }; + if (data["__type"] !== undefined) { + return sanitizeErrorCode(data["__type"]); + } + const codeKey = Object.keys(data).find((key) => key.toLowerCase() === "code"); + if (codeKey && data[codeKey] !== undefined) { + return sanitizeErrorCode(data[codeKey]); + } +}; +export const checkCborResponse = (response) => { + if (String(response.headers["smithy-protocol"]).toLowerCase() !== "rpc-v2-cbor") { + throw new Error("Malformed RPCv2 CBOR response, status: " + response.statusCode); + } +}; +export const buildHttpRpcRequest = async (context, headers, path, resolvedHostname, body) => { + const endpoint = await context.endpoint(); + const { hostname, protocol = "https", port, path: basePath } = endpoint; + const contents = { + protocol, + hostname, + port, + method: "POST", + path: basePath.endsWith("/") ? basePath.slice(0, -1) + path : basePath + path, + headers: { + ...headers, + }, + }; + if (resolvedHostname !== undefined) { + contents.hostname = resolvedHostname; + } + if (endpoint.headers) { + for (const [name, value] of Object.entries(endpoint.headers)) { + contents.headers[name] = value; + } + } + if (body !== undefined) { + contents.body = body; + try { + contents.headers["content-length"] = String(calculateBodyLength(body)); + } + catch (e) { } + } + return new __HttpRequest(contents); +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js b/bff/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js new file mode 100644 index 0000000..a88df65 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/endpoints/index.js @@ -0,0 +1 @@ +export * from "./toEndpointV1"; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js b/bff/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js new file mode 100644 index 0000000..701ce11 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js @@ -0,0 +1,17 @@ +import { parseUrl } from "@smithy/url-parser"; +export const toEndpointV1 = (endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + const v1Endpoint = parseUrl(endpoint.url); + if (endpoint.headers) { + v1Endpoint.headers = {}; + for (const [name, values] of Object.entries(endpoint.headers)) { + v1Endpoint.headers[name.toLowerCase()] = values.join(", "); + } + } + return v1Endpoint; + } + return endpoint; + } + return parseUrl(endpoint); +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js b/bff/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js new file mode 100644 index 0000000..d0fa185 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js @@ -0,0 +1,254 @@ +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +export class EventStreamSerde { + marshaller; + serializer; + deserializer; + serdeContext; + defaultContentType; + constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, }) { + this.marshaller = marshaller; + this.serializer = serializer; + this.deserializer = deserializer; + this.serdeContext = serdeContext; + this.defaultContentType = defaultContentType; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest, }) { + const marshaller = this.marshaller; + const eventStreamMember = requestSchema.getEventStreamMember(); + const unionSchema = requestSchema.getMemberSchema(eventStreamMember); + const serializer = this.serializer; + const defaultContentType = this.defaultContentType; + const initialRequestMarker = Symbol("initialRequestMarker"); + const eventStreamIterable = { + async *[Symbol.asyncIterator]() { + if (initialRequest) { + const headers = { + ":event-type": { type: "string", value: "initial-request" }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: defaultContentType }, + }; + serializer.write(requestSchema, initialRequest); + const body = serializer.flush(); + yield { + [initialRequestMarker]: true, + headers, + body, + }; + } + for await (const page of eventStream) { + yield page; + } + }, + }; + return marshaller.serialize(eventStreamIterable, (event) => { + if (event[initialRequestMarker]) { + return { + headers: event.headers, + body: event.body, + }; + } + const unionMember = Object.keys(event).find((key) => { + return key !== "__type"; + }) ?? ""; + const { additionalHeaders, body, eventType, explicitPayloadContentType } = this.writeEventBody(unionMember, unionSchema, event); + const headers = { + ":event-type": { type: "string", value: eventType }, + ":message-type": { type: "string", value: "event" }, + ":content-type": { type: "string", value: explicitPayloadContentType ?? defaultContentType }, + ...additionalHeaders, + }; + return { + headers, + body, + }; + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) { + const marshaller = this.marshaller; + const eventStreamMember = responseSchema.getEventStreamMember(); + const unionSchema = responseSchema.getMemberSchema(eventStreamMember); + const memberSchemas = unionSchema.getMemberSchemas(); + const initialResponseMarker = Symbol("initialResponseMarker"); + const asyncIterable = marshaller.deserialize(response.body, async (event) => { + const unionMember = Object.keys(event).find((key) => { + return key !== "__type"; + }) ?? ""; + const body = event[unionMember].body; + if (unionMember === "initial-response") { + const dataObject = await this.deserializer.read(responseSchema, body); + delete dataObject[eventStreamMember]; + return { + [initialResponseMarker]: true, + ...dataObject, + }; + } + else if (unionMember in memberSchemas) { + const eventStreamSchema = memberSchemas[unionMember]; + if (eventStreamSchema.isStructSchema()) { + const out = {}; + let hasBindings = false; + for (const [name, member] of eventStreamSchema.structIterator()) { + const { eventHeader, eventPayload } = member.getMergedTraits(); + hasBindings = hasBindings || Boolean(eventHeader || eventPayload); + if (eventPayload) { + if (member.isBlobSchema()) { + out[name] = body; + } + else if (member.isStringSchema()) { + out[name] = (this.serdeContext?.utf8Encoder ?? toUtf8)(body); + } + else if (member.isStructSchema()) { + out[name] = await this.deserializer.read(member, body); + } + } + else if (eventHeader) { + const value = event[unionMember].headers[name]?.value; + if (value != null) { + if (member.isNumericSchema()) { + if (value && typeof value === "object" && "bytes" in value) { + out[name] = BigInt(value.toString()); + } + else { + out[name] = Number(value); + } + } + else { + out[name] = value; + } + } + } + } + if (hasBindings) { + return { + [unionMember]: out, + }; + } + if (body.byteLength === 0) { + return { + [unionMember]: {}, + }; + } + } + return { + [unionMember]: await this.deserializer.read(eventStreamSchema, body), + }; + } + else { + return { + $unknown: event, + }; + } + }); + const asyncIterator = asyncIterable[Symbol.asyncIterator](); + const firstEvent = await asyncIterator.next(); + if (firstEvent.done) { + return asyncIterable; + } + if (firstEvent.value?.[initialResponseMarker]) { + if (!responseSchema) { + throw new Error("@smithy::core/protocols - initial-response event encountered in event stream but no response schema given."); + } + for (const [key, value] of Object.entries(firstEvent.value)) { + initialResponseContainer[key] = value; + } + } + return { + async *[Symbol.asyncIterator]() { + if (!firstEvent?.value?.[initialResponseMarker]) { + yield firstEvent.value; + } + while (true) { + const { done, value } = await asyncIterator.next(); + if (done) { + break; + } + yield value; + } + }, + }; + } + writeEventBody(unionMember, unionSchema, event) { + const serializer = this.serializer; + let eventType = unionMember; + let explicitPayloadMember = null; + let explicitPayloadContentType; + const isKnownSchema = (() => { + const struct = unionSchema.getSchema(); + return struct[4].includes(unionMember); + })(); + const additionalHeaders = {}; + if (!isKnownSchema) { + const [type, value] = event[unionMember]; + eventType = type; + serializer.write(15, value); + } + else { + const eventSchema = unionSchema.getMemberSchema(unionMember); + if (eventSchema.isStructSchema()) { + for (const [memberName, memberSchema] of eventSchema.structIterator()) { + const { eventHeader, eventPayload } = memberSchema.getMergedTraits(); + if (eventPayload) { + explicitPayloadMember = memberName; + } + else if (eventHeader) { + const value = event[unionMember][memberName]; + let type = "binary"; + if (memberSchema.isNumericSchema()) { + if ((-2) ** 31 <= value && value <= 2 ** 31 - 1) { + type = "integer"; + } + else { + type = "long"; + } + } + else if (memberSchema.isTimestampSchema()) { + type = "timestamp"; + } + else if (memberSchema.isStringSchema()) { + type = "string"; + } + else if (memberSchema.isBooleanSchema()) { + type = "boolean"; + } + if (value != null) { + additionalHeaders[memberName] = { + type, + value, + }; + delete event[unionMember][memberName]; + } + } + } + if (explicitPayloadMember !== null) { + const payloadSchema = eventSchema.getMemberSchema(explicitPayloadMember); + if (payloadSchema.isBlobSchema()) { + explicitPayloadContentType = "application/octet-stream"; + } + else if (payloadSchema.isStringSchema()) { + explicitPayloadContentType = "text/plain"; + } + serializer.write(payloadSchema, event[unionMember][explicitPayloadMember]); + } + else { + serializer.write(eventSchema, event[unionMember]); + } + } + else if (eventSchema.isUnitSchema()) { + serializer.write(eventSchema, {}); + } + else { + throw new Error("@smithy/core/event-streams - non-struct member not supported in event stream union."); + } + } + const messageSerialization = serializer.flush() ?? new Uint8Array(); + const body = typeof messageSerialization === "string" + ? (this.serdeContext?.utf8Decoder ?? fromUtf8)(messageSerialization) + : messageSerialization; + return { + body, + eventType, + explicitPayloadContentType, + additionalHeaders, + }; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js b/bff/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js new file mode 100644 index 0000000..849f48c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/event-streams/index.js @@ -0,0 +1 @@ +export * from "./EventStreamSerde"; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js new file mode 100644 index 0000000..37cb215 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js @@ -0,0 +1,286 @@ +import { NormalizedSchema, translateTraits } from "@smithy/core/schema"; +import { splitEvery, splitHeader } from "@smithy/core/serde"; +import { HttpRequest } from "@smithy/protocol-http"; +import { sdkStreamMixin } from "@smithy/util-stream"; +import { collectBody } from "./collect-stream-body"; +import { extendedEncodeURIComponent } from "./extended-encode-uri-component"; +import { HttpProtocol } from "./HttpProtocol"; +export class HttpBindingProtocol extends HttpProtocol { + async serializeRequest(operationSchema, _input, context) { + const input = _input && typeof _input === "object" ? _input : {}; + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = NormalizedSchema.of(operationSchema?.input); + const payloadMemberNames = []; + const payloadMemberSchemas = []; + let hasNonHttpBindingMember = false; + let payload; + const request = new HttpRequest({ + protocol: "", + hostname: "", + port: undefined, + path: "", + fragment: undefined, + query: query, + headers: headers, + body: undefined, + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input); + const opTraits = translateTraits(operationSchema.traits); + if (opTraits.http) { + request.method = opTraits.http[0]; + const [path, search] = opTraits.http[1].split("?"); + if (request.path == "/") { + request.path = path; + } + else { + request.path += path; + } + const traitSearchParams = new URLSearchParams(search ?? ""); + Object.assign(query, Object.fromEntries(traitSearchParams)); + } + } + for (const [memberName, memberNs] of ns.structIterator()) { + const memberTraits = memberNs.getMergedTraits() ?? {}; + const inputMemberValue = input[memberName]; + if (inputMemberValue == null && !memberNs.isIdempotencyToken()) { + if (memberTraits.httpLabel) { + if (request.path.includes(`{${memberName}+}`) || request.path.includes(`{${memberName}}`)) { + throw new Error(`No value provided for input HTTP label: ${memberName}.`); + } + } + continue; + } + if (memberTraits.httpPayload) { + const isStreaming = memberNs.isStreaming(); + if (isStreaming) { + const isEventStream = memberNs.isStructSchema(); + if (isEventStream) { + if (input[memberName]) { + payload = await this.serializeEventStream({ + eventStream: input[memberName], + requestSchema: ns, + }); + } + } + else { + payload = inputMemberValue; + } + } + else { + serializer.write(memberNs, inputMemberValue); + payload = serializer.flush(); + } + } + else if (memberTraits.httpLabel) { + serializer.write(memberNs, inputMemberValue); + const replacement = serializer.flush(); + if (request.path.includes(`{${memberName}+}`)) { + request.path = request.path.replace(`{${memberName}+}`, replacement.split("/").map(extendedEncodeURIComponent).join("/")); + } + else if (request.path.includes(`{${memberName}}`)) { + request.path = request.path.replace(`{${memberName}}`, extendedEncodeURIComponent(replacement)); + } + } + else if (memberTraits.httpHeader) { + serializer.write(memberNs, inputMemberValue); + headers[memberTraits.httpHeader.toLowerCase()] = String(serializer.flush()); + } + else if (typeof memberTraits.httpPrefixHeaders === "string") { + for (const [key, val] of Object.entries(inputMemberValue)) { + const amalgam = memberTraits.httpPrefixHeaders + key; + serializer.write([memberNs.getValueSchema(), { httpHeader: amalgam }], val); + headers[amalgam.toLowerCase()] = serializer.flush(); + } + } + else if (memberTraits.httpQuery || memberTraits.httpQueryParams) { + this.serializeQuery(memberNs, inputMemberValue, query); + } + else { + hasNonHttpBindingMember = true; + payloadMemberNames.push(memberName); + payloadMemberSchemas.push(memberNs); + } + } + if (hasNonHttpBindingMember && input) { + const [namespace, name] = (ns.getName(true) ?? "#Unknown").split("#"); + const requiredMembers = ns.getSchema()[6]; + const payloadSchema = [ + 3, + namespace, + name, + ns.getMergedTraits(), + payloadMemberNames, + payloadMemberSchemas, + undefined, + ]; + if (requiredMembers) { + payloadSchema[6] = requiredMembers; + } + else { + payloadSchema.pop(); + } + serializer.write(payloadSchema, input); + payload = serializer.flush(); + } + request.headers = headers; + request.query = query; + request.body = payload; + return request; + } + serializeQuery(ns, data, query) { + const serializer = this.serializer; + const traits = ns.getMergedTraits(); + if (traits.httpQueryParams) { + for (const [key, val] of Object.entries(data)) { + if (!(key in query)) { + const valueSchema = ns.getValueSchema(); + Object.assign(valueSchema.getMergedTraits(), { + ...traits, + httpQuery: key, + httpQueryParams: undefined, + }); + this.serializeQuery(valueSchema, val, query); + } + } + return; + } + if (ns.isListSchema()) { + const sparse = !!ns.getMergedTraits().sparse; + const buffer = []; + for (const item of data) { + serializer.write([ns.getValueSchema(), traits], item); + const serializable = serializer.flush(); + if (sparse || serializable !== undefined) { + buffer.push(serializable); + } + } + query[traits.httpQuery] = buffer; + } + else { + serializer.write([ns, traits], data); + query[traits.httpQuery] = serializer.flush(); + } + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - HTTP Protocol error handler failed to throw."); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const nonHttpBindingMembers = await this.deserializeHttpMessage(ns, context, response, dataObject); + if (nonHttpBindingMembers.length) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + const dataFromBody = await deserializer.read(ns, bytes); + for (const member of nonHttpBindingMembers) { + if (dataFromBody[member] != null) { + dataObject[member] = dataFromBody[member]; + } + } + } + } + else if (nonHttpBindingMembers.discardResponseBody) { + await collectBody(response.body, context); + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } + async deserializeHttpMessage(schema, context, response, arg4, arg5) { + let dataObject; + if (arg4 instanceof Set) { + dataObject = arg5; + } + else { + dataObject = arg4; + } + let discardResponseBody = true; + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(schema); + const nonHttpBindingMembers = []; + for (const [memberName, memberSchema] of ns.structIterator()) { + const memberTraits = memberSchema.getMemberTraits(); + if (memberTraits.httpPayload) { + discardResponseBody = false; + const isStreaming = memberSchema.isStreaming(); + if (isStreaming) { + const isEventStream = memberSchema.isStructSchema(); + if (isEventStream) { + dataObject[memberName] = await this.deserializeEventStream({ + response, + responseSchema: ns, + }); + } + else { + dataObject[memberName] = sdkStreamMixin(response.body); + } + } + else if (response.body) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + dataObject[memberName] = await deserializer.read(memberSchema, bytes); + } + } + } + else if (memberTraits.httpHeader) { + const key = String(memberTraits.httpHeader).toLowerCase(); + const value = response.headers[key]; + if (null != value) { + if (memberSchema.isListSchema()) { + const headerListValueSchema = memberSchema.getValueSchema(); + headerListValueSchema.getMergedTraits().httpHeader = key; + let sections; + if (headerListValueSchema.isTimestampSchema() && + headerListValueSchema.getSchema() === 4) { + sections = splitEvery(value, ",", 2); + } + else { + sections = splitHeader(value); + } + const list = []; + for (const section of sections) { + list.push(await deserializer.read(headerListValueSchema, section.trim())); + } + dataObject[memberName] = list; + } + else { + dataObject[memberName] = await deserializer.read(memberSchema, value); + } + } + } + else if (memberTraits.httpPrefixHeaders !== undefined) { + dataObject[memberName] = {}; + for (const [header, value] of Object.entries(response.headers)) { + if (header.startsWith(memberTraits.httpPrefixHeaders)) { + const valueSchema = memberSchema.getValueSchema(); + valueSchema.getMergedTraits().httpHeader = header; + dataObject[memberName][header.slice(memberTraits.httpPrefixHeaders.length)] = await deserializer.read(valueSchema, value); + } + } + } + else if (memberTraits.httpResponseCode) { + dataObject[memberName] = response.statusCode; + } + else { + nonHttpBindingMembers.push(memberName); + } + } + nonHttpBindingMembers.discardResponseBody = discardResponseBody; + return nonHttpBindingMembers; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js new file mode 100644 index 0000000..6d58617 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js @@ -0,0 +1,140 @@ +import { NormalizedSchema, translateTraits, TypeRegistry } from "@smithy/core/schema"; +import { HttpRequest, HttpResponse } from "@smithy/protocol-http"; +import { SerdeContext } from "./SerdeContext"; +export class HttpProtocol extends SerdeContext { + options; + compositeErrorRegistry; + constructor(options) { + super(); + this.options = options; + this.compositeErrorRegistry = TypeRegistry.for(options.defaultNamespace); + for (const etr of options.errorTypeRegistries ?? []) { + this.compositeErrorRegistry.copyFrom(etr); + } + } + getRequestType() { + return HttpRequest; + } + getResponseType() { + return HttpResponse; + } + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + this.serializer.setSerdeContext(serdeContext); + this.deserializer.setSerdeContext(serdeContext); + if (this.getPayloadCodec()) { + this.getPayloadCodec().setSerdeContext(serdeContext); + } + } + updateServiceEndpoint(request, endpoint) { + if ("url" in endpoint) { + request.protocol = endpoint.url.protocol; + request.hostname = endpoint.url.hostname; + request.port = endpoint.url.port ? Number(endpoint.url.port) : undefined; + request.path = endpoint.url.pathname; + request.fragment = endpoint.url.hash || void 0; + request.username = endpoint.url.username || void 0; + request.password = endpoint.url.password || void 0; + if (!request.query) { + request.query = {}; + } + for (const [k, v] of endpoint.url.searchParams.entries()) { + request.query[k] = v; + } + if (endpoint.headers) { + for (const [name, values] of Object.entries(endpoint.headers)) { + request.headers[name] = values.join(", "); + } + } + return request; + } + else { + request.protocol = endpoint.protocol; + request.hostname = endpoint.hostname; + request.port = endpoint.port ? Number(endpoint.port) : undefined; + request.path = endpoint.path; + request.query = { + ...endpoint.query, + }; + if (endpoint.headers) { + for (const [name, value] of Object.entries(endpoint.headers)) { + request.headers[name] = value; + } + } + return request; + } + } + setHostPrefix(request, operationSchema, input) { + if (this.serdeContext?.disableHostPrefix) { + return; + } + const inputNs = NormalizedSchema.of(operationSchema.input); + const opTraits = translateTraits(operationSchema.traits ?? {}); + if (opTraits.endpoint) { + let hostPrefix = opTraits.endpoint?.[0]; + if (typeof hostPrefix === "string") { + const hostLabelInputs = [...inputNs.structIterator()].filter(([, member]) => member.getMergedTraits().hostLabel); + for (const [name] of hostLabelInputs) { + const replacement = input[name]; + if (typeof replacement !== "string") { + throw new Error(`@smithy/core/schema - ${name} in input must be a string as hostLabel.`); + } + hostPrefix = hostPrefix.replace(`{${name}}`, replacement); + } + request.hostname = hostPrefix + request.hostname; + } + } + } + deserializeMetadata(output) { + return { + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"], + }; + } + async serializeEventStream({ eventStream, requestSchema, initialRequest, }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.serializeEventStream({ + eventStream, + requestSchema, + initialRequest, + }); + } + async deserializeEventStream({ response, responseSchema, initialResponseContainer, }) { + const eventStreamSerde = await this.loadEventStreamCapability(); + return eventStreamSerde.deserializeEventStream({ + response, + responseSchema, + initialResponseContainer, + }); + } + async loadEventStreamCapability() { + const { EventStreamSerde } = await import("@smithy/core/event-streams"); + return new EventStreamSerde({ + marshaller: this.getEventStreamMarshaller(), + serializer: this.serializer, + deserializer: this.deserializer, + serdeContext: this.serdeContext, + defaultContentType: this.getDefaultContentType(), + }); + } + getDefaultContentType() { + throw new Error(`@smithy/core/protocols - ${this.constructor.name} getDefaultContentType() implementation missing.`); + } + async deserializeHttpMessage(schema, context, response, arg4, arg5) { + void schema; + void context; + void response; + void arg4; + void arg5; + return []; + } + getEventStreamMarshaller() { + const context = this.serdeContext; + if (!context.eventStreamMarshaller) { + throw new Error("@smithy/core - HttpProtocol: eventStreamMarshaller missing in serdeContext."); + } + return context.eventStreamMarshaller; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js new file mode 100644 index 0000000..2b8ab2d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/RpcProtocol.js @@ -0,0 +1,92 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { HttpRequest } from "@smithy/protocol-http"; +import { collectBody } from "./collect-stream-body"; +import { HttpProtocol } from "./HttpProtocol"; +export class RpcProtocol extends HttpProtocol { + async serializeRequest(operationSchema, _input, context) { + const serializer = this.serializer; + const query = {}; + const headers = {}; + const endpoint = await context.endpoint(); + const ns = NormalizedSchema.of(operationSchema?.input); + const schema = ns.getSchema(); + let payload; + const input = _input && typeof _input === "object" ? _input : {}; + const request = new HttpRequest({ + protocol: "", + hostname: "", + port: undefined, + path: "/", + fragment: undefined, + query: query, + headers: headers, + body: undefined, + }); + if (endpoint) { + this.updateServiceEndpoint(request, endpoint); + this.setHostPrefix(request, operationSchema, input); + } + if (input) { + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + if (input[eventStreamMember]) { + const initialRequest = {}; + for (const [memberName, memberSchema] of ns.structIterator()) { + if (memberName !== eventStreamMember && input[memberName]) { + serializer.write(memberSchema, input[memberName]); + initialRequest[memberName] = serializer.flush(); + } + } + payload = await this.serializeEventStream({ + eventStream: input[eventStreamMember], + requestSchema: ns, + initialRequest, + }); + } + } + else { + serializer.write(schema, input); + payload = serializer.flush(); + } + } + request.headers = Object.assign(request.headers, headers); + request.query = query; + request.body = payload; + request.method = "POST"; + return request; + } + async deserializeResponse(operationSchema, context, response) { + const deserializer = this.deserializer; + const ns = NormalizedSchema.of(operationSchema.output); + const dataObject = {}; + if (response.statusCode >= 300) { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(15, bytes)); + } + await this.handleError(operationSchema, context, response, dataObject, this.deserializeMetadata(response)); + throw new Error("@smithy/core/protocols - RPC Protocol error handler failed to throw."); + } + for (const header in response.headers) { + const value = response.headers[header]; + delete response.headers[header]; + response.headers[header.toLowerCase()] = value; + } + const eventStreamMember = ns.getEventStreamMember(); + if (eventStreamMember) { + dataObject[eventStreamMember] = await this.deserializeEventStream({ + response, + responseSchema: ns, + initialResponseContainer: dataObject, + }); + } + else { + const bytes = await collectBody(response.body, context); + if (bytes.byteLength > 0) { + Object.assign(dataObject, await deserializer.read(ns, bytes)); + } + } + dataObject.$metadata = this.deserializeMetadata(response); + return dataObject; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js new file mode 100644 index 0000000..567ae56 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js @@ -0,0 +1,6 @@ +export class SerdeContext { + serdeContext; + setSerdeContext(serdeContext) { + this.serdeContext = serdeContext; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js new file mode 100644 index 0000000..b6a5c0b --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js @@ -0,0 +1,11 @@ +import { Uint8ArrayBlobAdapter } from "@smithy/util-stream"; +export const collectBody = async (streamBody = new Uint8Array(), context) => { + if (streamBody instanceof Uint8Array) { + return Uint8ArrayBlobAdapter.mutate(streamBody); + } + if (!streamBody) { + return Uint8ArrayBlobAdapter.mutate(new Uint8Array()); + } + const fromContext = context.streamCollector(streamBody); + return Uint8ArrayBlobAdapter.mutate(await fromContext); +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js new file mode 100644 index 0000000..5baeaf5 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js @@ -0,0 +1,5 @@ +export function extendedEncodeURIComponent(str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/index.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/index.js new file mode 100644 index 0000000..5cc40c5 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/index.js @@ -0,0 +1,13 @@ +export * from "./collect-stream-body"; +export * from "./extended-encode-uri-component"; +export * from "./HttpBindingProtocol"; +export * from "./HttpProtocol"; +export * from "./RpcProtocol"; +export * from "./requestBuilder"; +export * from "./resolve-path"; +export * from "./serde/FromStringShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeSerializer"; +export * from "./serde/ToStringShapeSerializer"; +export * from "./serde/determineTimestampFormat"; +export * from "./SerdeContext"; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js new file mode 100644 index 0000000..7126b71 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js @@ -0,0 +1,69 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { resolvedPath } from "./resolve-path"; +export function requestBuilder(input, context) { + return new RequestBuilder(input, context); +} +export class RequestBuilder { + input; + context; + query = {}; + method = ""; + headers = {}; + path = ""; + body = null; + hostname = ""; + resolvePathStack = []; + constructor(input, context) { + this.input = input; + this.context = context; + } + async build() { + const { hostname, protocol = "https", port, path: basePath } = await this.context.endpoint(); + this.path = basePath; + for (const resolvePath of this.resolvePathStack) { + resolvePath(this.path); + } + return new HttpRequest({ + protocol, + hostname: this.hostname || hostname, + port, + method: this.method, + path: this.path, + query: this.query, + body: this.body, + headers: this.headers, + }); + } + hn(hostname) { + this.hostname = hostname; + return this; + } + bp(uriLabel) { + this.resolvePathStack.push((basePath) => { + this.path = `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + uriLabel; + }); + return this; + } + p(memberName, labelValueProvider, uriLabel, isGreedyLabel) { + this.resolvePathStack.push((path) => { + this.path = resolvedPath(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel); + }); + return this; + } + h(headers) { + this.headers = headers; + return this; + } + q(query) { + this.query = query; + return this; + } + b(body) { + this.body = body; + return this; + } + m(method) { + this.method = method; + return this; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js new file mode 100644 index 0000000..53c2d6c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js @@ -0,0 +1,19 @@ +import { extendedEncodeURIComponent } from "./extended-encode-uri-component"; +export const resolvedPath = (resolvedPath, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => { + if (input != null && input[memberName] !== undefined) { + const labelValue = labelValueProvider(); + if (labelValue == null || labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: " + memberName + "."); + } + resolvedPath = resolvedPath.replace(uriLabel, isGreedyLabel + ? labelValue + .split("/") + .map((segment) => extendedEncodeURIComponent(segment)) + .join("/") + : extendedEncodeURIComponent(labelValue)); + } + else { + throw new Error("No value provided for input HTTP label: " + memberName + "."); + } + return resolvedPath; +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js new file mode 100644 index 0000000..a28e280 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js @@ -0,0 +1,66 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { _parseEpochTimestamp, _parseRfc3339DateTimeWithOffset, _parseRfc7231DateTime, LazyJsonString, NumericValue, splitHeader, } from "@smithy/core/serde"; +import { fromBase64 } from "@smithy/util-base64"; +import { toUtf8 } from "@smithy/util-utf8"; +import { SerdeContext } from "../SerdeContext"; +import { determineTimestampFormat } from "./determineTimestampFormat"; +export class FromStringShapeDeserializer extends SerdeContext { + settings; + constructor(settings) { + super(); + this.settings = settings; + } + read(_schema, data) { + const ns = NormalizedSchema.of(_schema); + if (ns.isListSchema()) { + return splitHeader(data).map((item) => this.read(ns.getValueSchema(), item)); + } + if (ns.isBlobSchema()) { + return (this.serdeContext?.base64Decoder ?? fromBase64)(data); + } + if (ns.isTimestampSchema()) { + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + return _parseRfc3339DateTimeWithOffset(data); + case 6: + return _parseRfc7231DateTime(data); + case 7: + return _parseEpochTimestamp(data); + default: + console.warn("Missing timestamp format, parsing value with Date constructor:", data); + return new Date(data); + } + } + if (ns.isStringSchema()) { + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = data; + if (mediaType) { + if (ns.getMergedTraits().httpHeader) { + intermediateValue = this.base64ToUtf8(intermediateValue); + } + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = LazyJsonString.from(intermediateValue); + } + return intermediateValue; + } + } + if (ns.isNumericSchema()) { + return Number(data); + } + if (ns.isBigIntegerSchema()) { + return BigInt(data); + } + if (ns.isBigDecimalSchema()) { + return new NumericValue(data, "bigDecimal"); + } + if (ns.isBooleanSchema()) { + return String(data).toLowerCase() === "true"; + } + return data; + } + base64ToUtf8(base64String) { + return (this.serdeContext?.utf8Encoder ?? toUtf8)((this.serdeContext?.base64Decoder ?? fromBase64)(base64String)); + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js new file mode 100644 index 0000000..1cecb6d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeDeserializer.js @@ -0,0 +1,42 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +import { SerdeContext } from "../SerdeContext"; +import { FromStringShapeDeserializer } from "./FromStringShapeDeserializer"; +export class HttpInterceptingShapeDeserializer extends SerdeContext { + codecDeserializer; + stringDeserializer; + constructor(codecDeserializer, codecSettings) { + super(); + this.codecDeserializer = codecDeserializer; + this.stringDeserializer = new FromStringShapeDeserializer(codecSettings); + } + setSerdeContext(serdeContext) { + this.stringDeserializer.setSerdeContext(serdeContext); + this.codecDeserializer.setSerdeContext(serdeContext); + this.serdeContext = serdeContext; + } + read(schema, data) { + const ns = NormalizedSchema.of(schema); + const traits = ns.getMergedTraits(); + const toString = this.serdeContext?.utf8Encoder ?? toUtf8; + if (traits.httpHeader || traits.httpResponseCode) { + return this.stringDeserializer.read(ns, toString(data)); + } + if (traits.httpPayload) { + if (ns.isBlobSchema()) { + const toBytes = this.serdeContext?.utf8Decoder ?? fromUtf8; + if (typeof data === "string") { + return toBytes(data); + } + return data; + } + else if (ns.isStringSchema()) { + if ("byteLength" in data) { + return toString(data); + } + return data; + } + } + return this.codecDeserializer.read(ns, data); + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js new file mode 100644 index 0000000..6abe702 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/HttpInterceptingShapeSerializer.js @@ -0,0 +1,33 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { ToStringShapeSerializer } from "./ToStringShapeSerializer"; +export class HttpInterceptingShapeSerializer { + codecSerializer; + stringSerializer; + buffer; + constructor(codecSerializer, codecSettings, stringSerializer = new ToStringShapeSerializer(codecSettings)) { + this.codecSerializer = codecSerializer; + this.stringSerializer = stringSerializer; + } + setSerdeContext(serdeContext) { + this.codecSerializer.setSerdeContext(serdeContext); + this.stringSerializer.setSerdeContext(serdeContext); + } + write(schema, value) { + const ns = NormalizedSchema.of(schema); + const traits = ns.getMergedTraits(); + if (traits.httpHeader || traits.httpLabel || traits.httpQuery) { + this.stringSerializer.write(ns, value); + this.buffer = this.stringSerializer.flush(); + return; + } + return this.codecSerializer.write(ns, value); + } + flush() { + if (this.buffer !== undefined) { + const buffer = this.buffer; + this.buffer = undefined; + return buffer; + } + return this.codecSerializer.flush(); + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js new file mode 100644 index 0000000..de25e8e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/ToStringShapeSerializer.js @@ -0,0 +1,91 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { dateToUtcString, generateIdempotencyToken, LazyJsonString, quoteHeader } from "@smithy/core/serde"; +import { toBase64 } from "@smithy/util-base64"; +import { SerdeContext } from "../SerdeContext"; +import { determineTimestampFormat } from "./determineTimestampFormat"; +export class ToStringShapeSerializer extends SerdeContext { + settings; + stringBuffer = ""; + constructor(settings) { + super(); + this.settings = settings; + } + write(schema, value) { + const ns = NormalizedSchema.of(schema); + switch (typeof value) { + case "object": + if (value === null) { + this.stringBuffer = "null"; + return; + } + if (ns.isTimestampSchema()) { + if (!(value instanceof Date)) { + throw new Error(`@smithy/core/protocols - received non-Date value ${value} when schema expected Date in ${ns.getName(true)}`); + } + const format = determineTimestampFormat(ns, this.settings); + switch (format) { + case 5: + this.stringBuffer = value.toISOString().replace(".000Z", "Z"); + break; + case 6: + this.stringBuffer = dateToUtcString(value); + break; + case 7: + this.stringBuffer = String(value.getTime() / 1000); + break; + default: + console.warn("Missing timestamp format, using epoch seconds", value); + this.stringBuffer = String(value.getTime() / 1000); + } + return; + } + if (ns.isBlobSchema() && "byteLength" in value) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(value); + return; + } + if (ns.isListSchema() && Array.isArray(value)) { + let buffer = ""; + for (const item of value) { + this.write([ns.getValueSchema(), ns.getMergedTraits()], item); + const headerItem = this.flush(); + const serialized = ns.getValueSchema().isTimestampSchema() ? headerItem : quoteHeader(headerItem); + if (buffer !== "") { + buffer += ", "; + } + buffer += serialized; + } + this.stringBuffer = buffer; + return; + } + this.stringBuffer = JSON.stringify(value, null, 2); + break; + case "string": + const mediaType = ns.getMergedTraits().mediaType; + let intermediateValue = value; + if (mediaType) { + const isJson = mediaType === "application/json" || mediaType.endsWith("+json"); + if (isJson) { + intermediateValue = LazyJsonString.from(intermediateValue); + } + if (ns.getMergedTraits().httpHeader) { + this.stringBuffer = (this.serdeContext?.base64Encoder ?? toBase64)(intermediateValue.toString()); + return; + } + } + this.stringBuffer = value; + break; + default: + if (ns.isIdempotencyToken()) { + this.stringBuffer = generateIdempotencyToken(); + } + else { + this.stringBuffer = String(value); + } + } + } + flush() { + const buffer = this.stringBuffer; + this.stringBuffer = ""; + return buffer; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js new file mode 100644 index 0000000..eaa6005 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js @@ -0,0 +1,19 @@ +export function determineTimestampFormat(ns, settings) { + if (settings.timestampFormat.useTrait) { + if (ns.isTimestampSchema() && + (ns.getSchema() === 5 || + ns.getSchema() === 6 || + ns.getSchema() === 7)) { + return ns.getSchema(); + } + } + const { httpLabel, httpPrefixHeaders, httpHeader, httpQuery } = ns.getMergedTraits(); + const bindingFormat = settings.httpBindings + ? typeof httpPrefixHeaders === "string" || Boolean(httpHeader) + ? 6 + : Boolean(httpQuery) || Boolean(httpLabel) + ? 5 + : undefined + : undefined; + return bindingFormat ?? settings.timestampFormat.default; +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js new file mode 100644 index 0000000..99a6574 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js @@ -0,0 +1,84 @@ +export class TypeRegistry { + namespace; + schemas; + exceptions; + static registries = new Map(); + constructor(namespace, schemas = new Map(), exceptions = new Map()) { + this.namespace = namespace; + this.schemas = schemas; + this.exceptions = exceptions; + } + static for(namespace) { + if (!TypeRegistry.registries.has(namespace)) { + TypeRegistry.registries.set(namespace, new TypeRegistry(namespace)); + } + return TypeRegistry.registries.get(namespace); + } + copyFrom(other) { + const { schemas, exceptions } = this; + for (const [k, v] of other.schemas) { + if (!schemas.has(k)) { + schemas.set(k, v); + } + } + for (const [k, v] of other.exceptions) { + if (!exceptions.has(k)) { + exceptions.set(k, v); + } + } + } + register(shapeId, schema) { + const qualifiedName = this.normalizeShapeId(shapeId); + for (const r of [this, TypeRegistry.for(qualifiedName.split("#")[0])]) { + r.schemas.set(qualifiedName, schema); + } + } + getSchema(shapeId) { + const id = this.normalizeShapeId(shapeId); + if (!this.schemas.has(id)) { + throw new Error(`@smithy/core/schema - schema not found for ${id}`); + } + return this.schemas.get(id); + } + registerError(es, ctor) { + const $error = es; + const ns = $error[1]; + for (const r of [this, TypeRegistry.for(ns)]) { + r.schemas.set(ns + "#" + $error[2], $error); + r.exceptions.set($error, ctor); + } + } + getErrorCtor(es) { + const $error = es; + if (this.exceptions.has($error)) { + return this.exceptions.get($error); + } + const registry = TypeRegistry.for($error[1]); + return registry.exceptions.get($error); + } + getBaseException() { + for (const exceptionKey of this.exceptions.keys()) { + if (Array.isArray(exceptionKey)) { + const [, ns, name] = exceptionKey; + const id = ns + "#" + name; + if (id.startsWith("smithy.ts.sdk.synthetic.") && id.endsWith("ServiceException")) { + return exceptionKey; + } + } + } + return undefined; + } + find(predicate) { + return [...this.schemas.values()].find(predicate); + } + clear() { + this.schemas.clear(); + this.exceptions.clear(); + } + normalizeShapeId(shapeId) { + if (shapeId.includes("#")) { + return shapeId; + } + return this.namespace + "#" + shapeId; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/deref.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/deref.js new file mode 100644 index 0000000..6004ae3 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/deref.js @@ -0,0 +1,6 @@ +export const deref = (schemaRef) => { + if (typeof schemaRef === "function") { + return schemaRef(); + } + return schemaRef; +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/index.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/index.js new file mode 100644 index 0000000..fe9508c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/index.js @@ -0,0 +1,14 @@ +export * from "./deref"; +export * from "./middleware/getSchemaSerdePlugin"; +export * from "./schemas/ListSchema"; +export * from "./schemas/MapSchema"; +export * from "./schemas/OperationSchema"; +export * from "./schemas/operation"; +export * from "./schemas/ErrorSchema"; +export * from "./schemas/NormalizedSchema"; +export * from "./schemas/Schema"; +export * from "./schemas/SimpleSchema"; +export * from "./schemas/StructureSchema"; +export * from "./schemas/sentinels"; +export * from "./schemas/translateTraits"; +export * from "./TypeRegistry"; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js new file mode 100644 index 0000000..d8515bc --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/getSchemaSerdePlugin.js @@ -0,0 +1,23 @@ +import { schemaDeserializationMiddleware } from "./schemaDeserializationMiddleware"; +import { schemaSerializationMiddleware } from "./schemaSerializationMiddleware"; +export const deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true, +}; +export const serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true, +}; +export function getSchemaSerdePlugin(config) { + return { + applyToStack: (commandStack) => { + commandStack.add(schemaSerializationMiddleware(config), serializerMiddlewareOption); + commandStack.add(schemaDeserializationMiddleware(config), deserializerMiddlewareOption); + config.protocol.setSerdeContext(config); + }, + }; +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schema-middleware-types.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schema-middleware-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schema-middleware-types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js new file mode 100644 index 0000000..4ec7eff --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaDeserializationMiddleware.js @@ -0,0 +1,65 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { getSmithyContext } from "@smithy/util-middleware"; +import { operation } from "../schemas/operation"; +export const schemaDeserializationMiddleware = (config) => (next, context) => async (args) => { + const { response } = await next(args); + const { operationSchema } = getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + try { + const parsed = await config.protocol.deserializeResponse(operation(ns, n, t, i, o), { + ...config, + ...context, + }, response); + return { + response, + output: parsed, + }; + } + catch (error) { + Object.defineProperty(error, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false, + }); + if (!("$metadata" in error)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error.message += "\n " + hint; + } + catch (e) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } + else { + context.logger?.warn?.(hint); + } + } + if (typeof error.$responseBodyText !== "undefined") { + if (error.$response) { + error.$response.body = error.$responseBodyText; + } + } + try { + if (HttpResponse.isInstance(response)) { + const { headers = {} } = response; + const headerEntries = Object.entries(headers); + error.$metadata = { + httpStatusCode: response.statusCode, + requestId: findHeader(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader(/^x-[\w-]+-cf-id$/, headerEntries), + }; + } + } + catch (e) { + } + } + throw error; + } +}; +const findHeader = (pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 1])[1]; +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js new file mode 100644 index 0000000..6e7ec91 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/middleware/schemaSerializationMiddleware.js @@ -0,0 +1,19 @@ +import { toEndpointV1 } from "@smithy/core/endpoints"; +import { getSmithyContext } from "@smithy/util-middleware"; +import { operation } from "../schemas/operation"; +export const schemaSerializationMiddleware = (config) => (next, context) => async (args) => { + const { operationSchema } = getSmithyContext(context); + const [, ns, n, t, i, o] = operationSchema ?? []; + const endpoint = context.endpointV2 + ? async () => toEndpointV1(context.endpointV2) + : config.endpoint; + const request = await config.protocol.serializeRequest(operation(ns, n, t, i, o), args.input, { + ...config, + ...context, + endpoint, + }); + return next({ + ...args, + request, + }); +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js new file mode 100644 index 0000000..7a2599f --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ErrorSchema.js @@ -0,0 +1,15 @@ +import { Schema } from "./Schema"; +import { StructureSchema } from "./StructureSchema"; +export class ErrorSchema extends StructureSchema { + static symbol = Symbol.for("@smithy/err"); + ctor; + symbol = ErrorSchema.symbol; +} +export const error = (namespace, name, traits, memberNames, memberList, ctor) => Schema.assign(new ErrorSchema(), { + name, + namespace, + traits, + memberNames, + memberList, + ctor: null, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js new file mode 100644 index 0000000..10b3182 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/ListSchema.js @@ -0,0 +1,14 @@ +import { Schema } from "./Schema"; +export class ListSchema extends Schema { + static symbol = Symbol.for("@smithy/lis"); + name; + traits; + valueSchema; + symbol = ListSchema.symbol; +} +export const list = (namespace, name, traits, valueSchema) => Schema.assign(new ListSchema(), { + name, + namespace, + traits, + valueSchema, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js new file mode 100644 index 0000000..a395667 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/MapSchema.js @@ -0,0 +1,16 @@ +import { Schema } from "./Schema"; +export class MapSchema extends Schema { + static symbol = Symbol.for("@smithy/map"); + name; + traits; + keySchema; + valueSchema; + symbol = MapSchema.symbol; +} +export const map = (namespace, name, traits, keySchema, valueSchema) => Schema.assign(new MapSchema(), { + name, + namespace, + traits, + keySchema, + valueSchema, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js new file mode 100644 index 0000000..7b97830 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/NormalizedSchema.js @@ -0,0 +1,303 @@ +import { deref } from "../deref"; +import { translateTraits } from "./translateTraits"; +const anno = { + it: Symbol.for("@smithy/nor-struct-it"), + ns: Symbol.for("@smithy/ns"), +}; +export const simpleSchemaCacheN = []; +export const simpleSchemaCacheS = {}; +export class NormalizedSchema { + ref; + memberName; + static symbol = Symbol.for("@smithy/nor"); + symbol = NormalizedSchema.symbol; + name; + schema; + _isMemberSchema; + traits; + memberTraits; + normalizedTraits; + constructor(ref, memberName) { + this.ref = ref; + this.memberName = memberName; + const traitStack = []; + let _ref = ref; + let schema = ref; + this._isMemberSchema = false; + while (isMemberSchema(_ref)) { + traitStack.push(_ref[1]); + _ref = _ref[0]; + schema = deref(_ref); + this._isMemberSchema = true; + } + if (traitStack.length > 0) { + this.memberTraits = {}; + for (let i = traitStack.length - 1; i >= 0; --i) { + const traitSet = traitStack[i]; + Object.assign(this.memberTraits, translateTraits(traitSet)); + } + } + else { + this.memberTraits = 0; + } + if (schema instanceof NormalizedSchema) { + const computedMemberTraits = this.memberTraits; + Object.assign(this, schema); + this.memberTraits = Object.assign({}, computedMemberTraits, schema.getMemberTraits(), this.getMemberTraits()); + this.normalizedTraits = void 0; + this.memberName = memberName ?? schema.memberName; + return; + } + this.schema = deref(schema); + if (isStaticSchema(this.schema)) { + this.name = `${this.schema[1]}#${this.schema[2]}`; + this.traits = this.schema[3]; + } + else { + this.name = this.memberName ?? String(schema); + this.traits = 0; + } + if (this._isMemberSchema && !memberName) { + throw new Error(`@smithy/core/schema - NormalizedSchema member init ${this.getName(true)} missing member name.`); + } + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const ns = lhs; + return ns.symbol === this.symbol; + } + return isPrototype; + } + static of(ref) { + const keyAble = typeof ref === "function" || (typeof ref === "object" && ref !== null); + if (typeof ref === "number") { + if (simpleSchemaCacheN[ref]) { + return simpleSchemaCacheN[ref]; + } + } + else if (typeof ref === "string") { + if (simpleSchemaCacheS[ref]) { + return simpleSchemaCacheS[ref]; + } + } + else if (keyAble) { + if (ref[anno.ns]) { + return ref[anno.ns]; + } + } + const sc = deref(ref); + if (sc instanceof NormalizedSchema) { + return sc; + } + if (isMemberSchema(sc)) { + const [ns, traits] = sc; + if (ns instanceof NormalizedSchema) { + Object.assign(ns.getMergedTraits(), translateTraits(traits)); + return ns; + } + throw new Error(`@smithy/core/schema - may not init unwrapped member schema=${JSON.stringify(ref, null, 2)}.`); + } + const ns = new NormalizedSchema(sc); + if (keyAble) { + return (ref[anno.ns] = ns); + } + if (typeof sc === "string") { + return (simpleSchemaCacheS[sc] = ns); + } + if (typeof sc === "number") { + return (simpleSchemaCacheN[sc] = ns); + } + return ns; + } + getSchema() { + const sc = this.schema; + if (Array.isArray(sc) && sc[0] === 0) { + return sc[4]; + } + return sc; + } + getName(withNamespace = false) { + const { name } = this; + const short = !withNamespace && name && name.includes("#"); + return short ? name.split("#")[1] : name || undefined; + } + getMemberName() { + return this.memberName; + } + isMemberSchema() { + return this._isMemberSchema; + } + isListSchema() { + const sc = this.getSchema(); + return typeof sc === "number" + ? sc >= 64 && sc < 128 + : sc[0] === 1; + } + isMapSchema() { + const sc = this.getSchema(); + return typeof sc === "number" + ? sc >= 128 && sc <= 0b1111_1111 + : sc[0] === 2; + } + isStructSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + const id = sc[0]; + return (id === 3 || + id === -3 || + id === 4); + } + isUnionSchema() { + const sc = this.getSchema(); + if (typeof sc !== "object") { + return false; + } + return sc[0] === 4; + } + isBlobSchema() { + const sc = this.getSchema(); + return sc === 21 || sc === 42; + } + isTimestampSchema() { + const sc = this.getSchema(); + return (typeof sc === "number" && + sc >= 4 && + sc <= 7); + } + isUnitSchema() { + return this.getSchema() === "unit"; + } + isDocumentSchema() { + return this.getSchema() === 15; + } + isStringSchema() { + return this.getSchema() === 0; + } + isBooleanSchema() { + return this.getSchema() === 2; + } + isNumericSchema() { + return this.getSchema() === 1; + } + isBigIntegerSchema() { + return this.getSchema() === 17; + } + isBigDecimalSchema() { + return this.getSchema() === 19; + } + isStreaming() { + const { streaming } = this.getMergedTraits(); + return !!streaming || this.getSchema() === 42; + } + isIdempotencyToken() { + return !!this.getMergedTraits().idempotencyToken; + } + getMergedTraits() { + return (this.normalizedTraits ?? + (this.normalizedTraits = { + ...this.getOwnTraits(), + ...this.getMemberTraits(), + })); + } + getMemberTraits() { + return translateTraits(this.memberTraits); + } + getOwnTraits() { + return translateTraits(this.traits); + } + getKeySchema() { + const [isDoc, isMap] = [this.isDocumentSchema(), this.isMapSchema()]; + if (!isDoc && !isMap) { + throw new Error(`@smithy/core/schema - cannot get key for non-map: ${this.getName(true)}`); + } + const schema = this.getSchema(); + const memberSchema = isDoc + ? 15 + : schema[4] ?? 0; + return member([memberSchema, 0], "key"); + } + getValueSchema() { + const sc = this.getSchema(); + const [isDoc, isMap, isList] = [this.isDocumentSchema(), this.isMapSchema(), this.isListSchema()]; + const memberSchema = typeof sc === "number" + ? 0b0011_1111 & sc + : sc && typeof sc === "object" && (isMap || isList) + ? sc[3 + sc[0]] + : isDoc + ? 15 + : void 0; + if (memberSchema != null) { + return member([memberSchema, 0], isMap ? "value" : "member"); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no value member.`); + } + getMemberSchema(memberName) { + const struct = this.getSchema(); + if (this.isStructSchema() && struct[4].includes(memberName)) { + const i = struct[4].indexOf(memberName); + const memberSchema = struct[5][i]; + return member(isMemberSchema(memberSchema) ? memberSchema : [memberSchema, 0], memberName); + } + if (this.isDocumentSchema()) { + return member([15, 0], memberName); + } + throw new Error(`@smithy/core/schema - ${this.getName(true)} has no member=${memberName}.`); + } + getMemberSchemas() { + const buffer = {}; + try { + for (const [k, v] of this.structIterator()) { + buffer[k] = v; + } + } + catch (ignored) { } + return buffer; + } + getEventStreamMember() { + if (this.isStructSchema()) { + for (const [memberName, memberSchema] of this.structIterator()) { + if (memberSchema.isStreaming() && memberSchema.isStructSchema()) { + return memberName; + } + } + } + return ""; + } + *structIterator() { + if (this.isUnitSchema()) { + return; + } + if (!this.isStructSchema()) { + throw new Error("@smithy/core/schema - cannot iterate non-struct schema."); + } + const struct = this.getSchema(); + const z = struct[4].length; + let it = struct[anno.it]; + if (it && z === it.length) { + yield* it; + return; + } + it = Array(z); + for (let i = 0; i < z; ++i) { + const k = struct[4][i]; + const v = member([struct[5][i], 0], k); + yield (it[i] = [k, v]); + } + struct[anno.it] = it; + } +} +function member(memberSchema, memberName) { + if (memberSchema instanceof NormalizedSchema) { + return Object.assign(memberSchema, { + memberName, + _isMemberSchema: true, + }); + } + const internalCtorAccess = NormalizedSchema; + return new internalCtorAccess(memberSchema, memberName); +} +const isMemberSchema = (sc) => Array.isArray(sc) && sc.length === 2; +export const isStaticSchema = (sc) => Array.isArray(sc) && sc.length >= 5; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js new file mode 100644 index 0000000..faf454a --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/OperationSchema.js @@ -0,0 +1,16 @@ +import { Schema } from "./Schema"; +export class OperationSchema extends Schema { + static symbol = Symbol.for("@smithy/ope"); + name; + traits; + input; + output; + symbol = OperationSchema.symbol; +} +export const op = (namespace, name, traits, input, output) => Schema.assign(new OperationSchema(), { + name, + namespace, + traits, + input, + output, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js new file mode 100644 index 0000000..f382fd7 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/Schema.js @@ -0,0 +1,20 @@ +export class Schema { + name; + namespace; + traits; + static assign(instance, values) { + const schema = Object.assign(instance, values); + return schema; + } + static [Symbol.hasInstance](lhs) { + const isPrototype = this.prototype.isPrototypeOf(lhs); + if (!isPrototype && typeof lhs === "object" && lhs !== null) { + const list = lhs; + return list.symbol === this.symbol; + } + return isPrototype; + } + getName() { + return this.namespace + "#" + this.name; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js new file mode 100644 index 0000000..395dd09 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/SimpleSchema.js @@ -0,0 +1,20 @@ +import { Schema } from "./Schema"; +export class SimpleSchema extends Schema { + static symbol = Symbol.for("@smithy/sim"); + name; + schemaRef; + traits; + symbol = SimpleSchema.symbol; +} +export const sim = (namespace, name, schemaRef, traits) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef, +}); +export const simAdapter = (namespace, name, traits, schemaRef) => Schema.assign(new SimpleSchema(), { + name, + namespace, + traits, + schemaRef, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js new file mode 100644 index 0000000..b08a9bc --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/StructureSchema.js @@ -0,0 +1,16 @@ +import { Schema } from "./Schema"; +export class StructureSchema extends Schema { + static symbol = Symbol.for("@smithy/str"); + name; + traits; + memberNames; + memberList; + symbol = StructureSchema.symbol; +} +export const struct = (namespace, name, traits, memberNames, memberList) => Schema.assign(new StructureSchema(), { + name, + namespace, + traits, + memberNames, + memberList, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js new file mode 100644 index 0000000..0938961 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/operation.js @@ -0,0 +1,7 @@ +export const operation = (namespace, name, traits, input, output) => ({ + name, + namespace, + traits, + input, + output, +}); diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js new file mode 100644 index 0000000..3ca0934 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/sentinels.js @@ -0,0 +1,16 @@ +export const SCHEMA = { + BLOB: 0b0001_0101, + STREAMING_BLOB: 0b0010_1010, + BOOLEAN: 0b0000_0010, + STRING: 0b0000_0000, + NUMERIC: 0b0000_0001, + BIG_INTEGER: 0b0001_0001, + BIG_DECIMAL: 0b0001_0011, + DOCUMENT: 0b0000_1111, + TIMESTAMP_DEFAULT: 0b0000_0100, + TIMESTAMP_DATE_TIME: 0b0000_0101, + TIMESTAMP_HTTP_DATE: 0b0000_0110, + TIMESTAMP_EPOCH_SECONDS: 0b0000_0111, + LIST_MODIFIER: 0b0100_0000, + MAP_MODIFIER: 0b1000_0000, +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js new file mode 100644 index 0000000..ebb4507 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/schema/schemas/translateTraits.js @@ -0,0 +1,26 @@ +export const traitsCache = []; +export function translateTraits(indicator) { + if (typeof indicator === "object") { + return indicator; + } + indicator = indicator | 0; + if (traitsCache[indicator]) { + return traitsCache[indicator]; + } + const traits = {}; + let i = 0; + for (const trait of [ + "httpLabel", + "idempotent", + "idempotencyToken", + "sensitive", + "httpPayload", + "httpResponseCode", + "httpQueryParams", + ]) { + if (((indicator >> i++) & 1) === 1) { + traits[trait] = 1; + } + } + return (traitsCache[indicator] = traits); +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js new file mode 100644 index 0000000..633f05a --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/copyDocumentWithTransform.js @@ -0,0 +1 @@ +export const copyDocumentWithTransform = (source, schemaRef, transform = (_) => _) => source; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js new file mode 100644 index 0000000..0d0abf2 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/date-utils.js @@ -0,0 +1,190 @@ +import { strictParseByte, strictParseDouble, strictParseFloat32, strictParseShort } from "./parse-utils"; +const DAYS = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; +const MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; +export function dateToUtcString(date) { + const year = date.getUTCFullYear(); + const month = date.getUTCMonth(); + const dayOfWeek = date.getUTCDay(); + const dayOfMonthInt = date.getUTCDate(); + const hoursInt = date.getUTCHours(); + const minutesInt = date.getUTCMinutes(); + const secondsInt = date.getUTCSeconds(); + const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`; + const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`; + const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`; + const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`; + return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`; +} +const RFC3339 = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?[zZ]$/); +export const parseRfc3339DateTime = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match; + const year = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); +}; +const RFC3339_WITH_OFFSET = new RegExp(/^(\d{4})-(\d{2})-(\d{2})[tT](\d{2}):(\d{2}):(\d{2})(?:\.(\d+))?(([-+]\d{2}\:\d{2})|[zZ])$/); +export const parseRfc3339DateTimeWithOffset = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-3339 date-times must be expressed as strings"); + } + const match = RFC3339_WITH_OFFSET.exec(value); + if (!match) { + throw new TypeError("Invalid RFC-3339 date-time value"); + } + const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match; + const year = strictParseShort(stripLeadingZeroes(yearStr)); + const month = parseDateValue(monthStr, "month", 1, 12); + const day = parseDateValue(dayStr, "day", 1, 31); + const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds }); + if (offsetStr.toUpperCase() != "Z") { + date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr)); + } + return date; +}; +const IMF_FIXDATE = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); +const RFC_850_DATE = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? GMT$/); +const ASC_TIME = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\d{2}) (\d{1,2}):(\d{2}):(\d{2})(?:\.(\d+))? (\d{4})$/); +export const parseRfc7231DateTime = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value !== "string") { + throw new TypeError("RFC-7231 date-times must be expressed as strings"); + } + let match = IMF_FIXDATE.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + match = RFC_850_DATE.exec(value); + if (match) { + const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match; + return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, "day", 1, 31), { + hours, + minutes, + seconds, + fractionalMilliseconds, + })); + } + match = ASC_TIME.exec(value); + if (match) { + const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match; + return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), "day", 1, 31), { hours, minutes, seconds, fractionalMilliseconds }); + } + throw new TypeError("Invalid RFC-7231 date-time value"); +}; +export const parseEpochTimestamp = (value) => { + if (value === null || value === undefined) { + return undefined; + } + let valueAsDouble; + if (typeof value === "number") { + valueAsDouble = value; + } + else if (typeof value === "string") { + valueAsDouble = strictParseDouble(value); + } + else if (typeof value === "object" && value.tag === 1) { + valueAsDouble = value.value; + } + else { + throw new TypeError("Epoch timestamps must be expressed as floating point numbers or their string representation"); + } + if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) { + throw new TypeError("Epoch timestamps must be valid, non-Infinite, non-NaN numerics"); + } + return new Date(Math.round(valueAsDouble * 1000)); +}; +const buildDate = (year, month, day, time) => { + const adjustedMonth = month - 1; + validateDayOfMonth(year, adjustedMonth, day); + return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, "hour", 0, 23), parseDateValue(time.minutes, "minute", 0, 59), parseDateValue(time.seconds, "seconds", 0, 60), parseMilliseconds(time.fractionalMilliseconds))); +}; +const parseTwoDigitYear = (value) => { + const thisYear = new Date().getUTCFullYear(); + const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value)); + if (valueInThisCentury < thisYear) { + return valueInThisCentury + 100; + } + return valueInThisCentury; +}; +const FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1000; +const adjustRfc850Year = (input) => { + if (input.getTime() - new Date().getTime() > FIFTY_YEARS_IN_MILLIS) { + return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds())); + } + return input; +}; +const parseMonthByShortName = (value) => { + const monthIdx = MONTHS.indexOf(value); + if (monthIdx < 0) { + throw new TypeError(`Invalid month: ${value}`); + } + return monthIdx + 1; +}; +const DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +const validateDayOfMonth = (year, month, day) => { + let maxDays = DAYS_IN_MONTH[month]; + if (month === 1 && isLeapYear(year)) { + maxDays = 29; + } + if (day > maxDays) { + throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`); + } +}; +const isLeapYear = (year) => { + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +}; +const parseDateValue = (value, type, lower, upper) => { + const dateVal = strictParseByte(stripLeadingZeroes(value)); + if (dateVal < lower || dateVal > upper) { + throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`); + } + return dateVal; +}; +const parseMilliseconds = (value) => { + if (value === null || value === undefined) { + return 0; + } + return strictParseFloat32("0." + value) * 1000; +}; +const parseOffsetToMilliseconds = (value) => { + const directionStr = value[0]; + let direction = 1; + if (directionStr == "+") { + direction = 1; + } + else if (directionStr == "-") { + direction = -1; + } + else { + throw new TypeError(`Offset direction, ${directionStr}, must be "+" or "-"`); + } + const hour = Number(value.substring(1, 3)); + const minute = Number(value.substring(4, 6)); + return direction * (hour * 60 + minute) * 60 * 1000; +}; +const stripLeadingZeroes = (value) => { + let idx = 0; + while (idx < value.length - 1 && value.charAt(idx) === "0") { + idx++; + } + if (idx === 0) { + return value; + } + return value.slice(idx); +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/generateIdempotencyToken.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/generateIdempotencyToken.js new file mode 100644 index 0000000..69ef1f2 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/generateIdempotencyToken.js @@ -0,0 +1,2 @@ +import { v4 as generateIdempotencyToken } from "@smithy/uuid"; +export { generateIdempotencyToken }; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/index.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/index.js new file mode 100644 index 0000000..421ec8e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/index.js @@ -0,0 +1,10 @@ +export * from "./copyDocumentWithTransform"; +export * from "./date-utils"; +export * from "./generateIdempotencyToken"; +export * from "./lazy-json"; +export * from "./parse-utils"; +export * from "./quote-header"; +export * from "./schema-serde-lib/schema-date-utils"; +export * from "./split-every"; +export * from "./split-header"; +export * from "./value/NumericValue"; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js new file mode 100644 index 0000000..9bddfce --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/lazy-json.js @@ -0,0 +1,24 @@ +export const LazyJsonString = function LazyJsonString(val) { + const str = Object.assign(new String(val), { + deserializeJSON() { + return JSON.parse(String(val)); + }, + toString() { + return String(val); + }, + toJSON() { + return String(val); + }, + }); + return str; +}; +LazyJsonString.from = (object) => { + if (object && typeof object === "object" && (object instanceof LazyJsonString || "deserializeJSON" in object)) { + return object; + } + else if (typeof object === "string" || Object.getPrototypeOf(object) === String.prototype) { + return LazyJsonString(String(object)); + } + return LazyJsonString(JSON.stringify(object)); +}; +LazyJsonString.fromObject = LazyJsonString.from; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js new file mode 100644 index 0000000..209db79 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js @@ -0,0 +1,230 @@ +export const parseBoolean = (value) => { + switch (value) { + case "true": + return true; + case "false": + return false; + default: + throw new Error(`Unable to parse boolean value "${value}"`); + } +}; +export const expectBoolean = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "number") { + if (value === 0 || value === 1) { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (value === 0) { + return false; + } + if (value === 1) { + return true; + } + } + if (typeof value === "string") { + const lower = value.toLowerCase(); + if (lower === "false" || lower === "true") { + logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`)); + } + if (lower === "false") { + return false; + } + if (lower === "true") { + return true; + } + } + if (typeof value === "boolean") { + return value; + } + throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`); +}; +export const expectNumber = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "string") { + const parsed = parseFloat(value); + if (!Number.isNaN(parsed)) { + if (String(parsed) !== String(value)) { + logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`)); + } + return parsed; + } + } + if (typeof value === "number") { + return value; + } + throw new TypeError(`Expected number, got ${typeof value}: ${value}`); +}; +const MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23)); +export const expectFloat32 = (value) => { + const expected = expectNumber(value); + if (expected !== undefined && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) { + if (Math.abs(expected) > MAX_FLOAT) { + throw new TypeError(`Expected 32-bit float, got ${value}`); + } + } + return expected; +}; +export const expectLong = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (Number.isInteger(value) && !Number.isNaN(value)) { + return value; + } + throw new TypeError(`Expected integer, got ${typeof value}: ${value}`); +}; +export const expectInt = expectLong; +export const expectInt32 = (value) => expectSizedInt(value, 32); +export const expectShort = (value) => expectSizedInt(value, 16); +export const expectByte = (value) => expectSizedInt(value, 8); +const expectSizedInt = (value, size) => { + const expected = expectLong(value); + if (expected !== undefined && castInt(expected, size) !== expected) { + throw new TypeError(`Expected ${size}-bit integer, got ${value}`); + } + return expected; +}; +const castInt = (value, size) => { + switch (size) { + case 32: + return Int32Array.of(value)[0]; + case 16: + return Int16Array.of(value)[0]; + case 8: + return Int8Array.of(value)[0]; + } +}; +export const expectNonNull = (value, location) => { + if (value === null || value === undefined) { + if (location) { + throw new TypeError(`Expected a non-null value for ${location}`); + } + throw new TypeError("Expected a non-null value"); + } + return value; +}; +export const expectObject = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "object" && !Array.isArray(value)) { + return value; + } + const receivedType = Array.isArray(value) ? "array" : typeof value; + throw new TypeError(`Expected object, got ${receivedType}: ${value}`); +}; +export const expectString = (value) => { + if (value === null || value === undefined) { + return undefined; + } + if (typeof value === "string") { + return value; + } + if (["boolean", "number", "bigint"].includes(typeof value)) { + logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`)); + return String(value); + } + throw new TypeError(`Expected string, got ${typeof value}: ${value}`); +}; +export const expectUnion = (value) => { + if (value === null || value === undefined) { + return undefined; + } + const asObject = expectObject(value); + const setKeys = Object.entries(asObject) + .filter(([, v]) => v != null) + .map(([k]) => k); + if (setKeys.length === 0) { + throw new TypeError(`Unions must have exactly one non-null member. None were found.`); + } + if (setKeys.length > 1) { + throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`); + } + return asObject; +}; +export const strictParseDouble = (value) => { + if (typeof value == "string") { + return expectNumber(parseNumber(value)); + } + return expectNumber(value); +}; +export const strictParseFloat = strictParseDouble; +export const strictParseFloat32 = (value) => { + if (typeof value == "string") { + return expectFloat32(parseNumber(value)); + } + return expectFloat32(value); +}; +const NUMBER_REGEX = /(-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?)|(-?Infinity)|(NaN)/g; +const parseNumber = (value) => { + const matches = value.match(NUMBER_REGEX); + if (matches === null || matches[0].length !== value.length) { + throw new TypeError(`Expected real number, got implicit NaN`); + } + return parseFloat(value); +}; +export const limitedParseDouble = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectNumber(value); +}; +export const handleFloat = limitedParseDouble; +export const limitedParseFloat = limitedParseDouble; +export const limitedParseFloat32 = (value) => { + if (typeof value == "string") { + return parseFloatString(value); + } + return expectFloat32(value); +}; +const parseFloatString = (value) => { + switch (value) { + case "NaN": + return NaN; + case "Infinity": + return Infinity; + case "-Infinity": + return -Infinity; + default: + throw new Error(`Unable to parse float value: ${value}`); + } +}; +export const strictParseLong = (value) => { + if (typeof value === "string") { + return expectLong(parseNumber(value)); + } + return expectLong(value); +}; +export const strictParseInt = strictParseLong; +export const strictParseInt32 = (value) => { + if (typeof value === "string") { + return expectInt32(parseNumber(value)); + } + return expectInt32(value); +}; +export const strictParseShort = (value) => { + if (typeof value === "string") { + return expectShort(parseNumber(value)); + } + return expectShort(value); +}; +export const strictParseByte = (value) => { + if (typeof value === "string") { + return expectByte(parseNumber(value)); + } + return expectByte(value); +}; +const stackTraceWarning = (message) => { + return String(new TypeError(message).stack || message) + .split("\n") + .slice(0, 5) + .filter((s) => !s.includes("stackTraceWarning")) + .join("\n"); +}; +export const logger = { + warn: console.warn, +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js new file mode 100644 index 0000000..d0ddf67 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/quote-header.js @@ -0,0 +1,6 @@ +export function quoteHeader(part) { + if (part.includes(",") || part.includes('"')) { + part = `"${part.replace(/"/g, '\\"')}"`; + } + return part; +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js new file mode 100644 index 0000000..b41589e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/schema-serde-lib/schema-date-utils.js @@ -0,0 +1,101 @@ +const ddd = `(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun)(?:[ne|u?r]?s?day)?`; +const mmm = `(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)`; +const time = `(\\d?\\d):(\\d{2}):(\\d{2})(?:\\.(\\d+))?`; +const date = `(\\d?\\d)`; +const year = `(\\d{4})`; +const RFC3339_WITH_OFFSET = new RegExp(/^(\d{4})-(\d\d)-(\d\d)[tT](\d\d):(\d\d):(\d\d)(\.(\d+))?(([-+]\d\d:\d\d)|[zZ])$/); +const IMF_FIXDATE = new RegExp(`^${ddd}, ${date} ${mmm} ${year} ${time} GMT$`); +const RFC_850_DATE = new RegExp(`^${ddd}, ${date}-${mmm}-(\\d\\d) ${time} GMT$`); +const ASC_TIME = new RegExp(`^${ddd} ${mmm} ( [1-9]|\\d\\d) ${time} ${year}$`); +const months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; +export const _parseEpochTimestamp = (value) => { + if (value == null) { + return void 0; + } + let num = NaN; + if (typeof value === "number") { + num = value; + } + else if (typeof value === "string") { + if (!/^-?\d*\.?\d+$/.test(value)) { + throw new TypeError(`parseEpochTimestamp - numeric string invalid.`); + } + num = Number.parseFloat(value); + } + else if (typeof value === "object" && value.tag === 1) { + num = value.value; + } + if (isNaN(num) || Math.abs(num) === Infinity) { + throw new TypeError("Epoch timestamps must be valid finite numbers."); + } + return new Date(Math.round(num * 1000)); +}; +export const _parseRfc3339DateTimeWithOffset = (value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC3339 timestamps must be strings"); + } + const matches = RFC3339_WITH_OFFSET.exec(value); + if (!matches) { + throw new TypeError(`Invalid RFC3339 timestamp format ${value}`); + } + const [, yearStr, monthStr, dayStr, hours, minutes, seconds, , ms, offsetStr] = matches; + range(monthStr, 1, 12); + range(dayStr, 1, 31); + range(hours, 0, 23); + range(minutes, 0, 59); + range(seconds, 0, 60); + const date = new Date(Date.UTC(Number(yearStr), Number(monthStr) - 1, Number(dayStr), Number(hours), Number(minutes), Number(seconds), Number(ms) ? Math.round(parseFloat(`0.${ms}`) * 1000) : 0)); + date.setUTCFullYear(Number(yearStr)); + if (offsetStr.toUpperCase() != "Z") { + const [, sign, offsetH, offsetM] = /([+-])(\d\d):(\d\d)/.exec(offsetStr) || [void 0, "+", 0, 0]; + const scalar = sign === "-" ? 1 : -1; + date.setTime(date.getTime() + scalar * (Number(offsetH) * 60 * 60 * 1000 + Number(offsetM) * 60 * 1000)); + } + return date; +}; +export const _parseRfc7231DateTime = (value) => { + if (value == null) { + return void 0; + } + if (typeof value !== "string") { + throw new TypeError("RFC7231 timestamps must be strings."); + } + let day; + let month; + let year; + let hour; + let minute; + let second; + let fraction; + let matches; + if ((matches = IMF_FIXDATE.exec(value))) { + [, day, month, year, hour, minute, second, fraction] = matches; + } + else if ((matches = RFC_850_DATE.exec(value))) { + [, day, month, year, hour, minute, second, fraction] = matches; + year = (Number(year) + 1900).toString(); + } + else if ((matches = ASC_TIME.exec(value))) { + [, month, day, hour, minute, second, fraction, year] = matches; + } + if (year && second) { + const timestamp = Date.UTC(Number(year), months.indexOf(month), Number(day), Number(hour), Number(minute), Number(second), fraction ? Math.round(parseFloat(`0.${fraction}`) * 1000) : 0); + range(day, 1, 31); + range(hour, 0, 23); + range(minute, 0, 59); + range(second, 0, 60); + const date = new Date(timestamp); + date.setUTCFullYear(Number(year)); + return date; + } + throw new TypeError(`Invalid RFC7231 date-time value ${value}.`); +}; +function range(v, min, max) { + const _v = Number(v); + if (_v < min || _v > max) { + throw new Error(`Value ${_v} out of range [${min}, ${max}]`); + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js new file mode 100644 index 0000000..1d78dca --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/split-every.js @@ -0,0 +1,27 @@ +export function splitEvery(value, delimiter, numDelimiters) { + if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) { + throw new Error("Invalid number of delimiters (" + numDelimiters + ") for splitEvery."); + } + const segments = value.split(delimiter); + if (numDelimiters === 1) { + return segments; + } + const compoundSegments = []; + let currentSegment = ""; + for (let i = 0; i < segments.length; i++) { + if (currentSegment === "") { + currentSegment = segments[i]; + } + else { + currentSegment += delimiter + segments[i]; + } + if ((i + 1) % numDelimiters === 0) { + compoundSegments.push(currentSegment); + currentSegment = ""; + } + } + if (currentSegment !== "") { + compoundSegments.push(currentSegment); + } + return compoundSegments; +} diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js new file mode 100644 index 0000000..518e77f --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/split-header.js @@ -0,0 +1,37 @@ +export const splitHeader = (value) => { + const z = value.length; + const values = []; + let withinQuotes = false; + let prevChar = undefined; + let anchor = 0; + for (let i = 0; i < z; ++i) { + const char = value[i]; + switch (char) { + case `"`: + if (prevChar !== "\\") { + withinQuotes = !withinQuotes; + } + break; + case ",": + if (!withinQuotes) { + values.push(value.slice(anchor, i)); + anchor = i + 1; + } + break; + default: + } + prevChar = char; + } + values.push(value.slice(anchor)); + return values.map((v) => { + v = v.trim(); + const z = v.length; + if (z < 2) { + return v; + } + if (v[0] === `"` && v[z - 1] === `"`) { + v = v.slice(1, z - 1); + } + return v.replace(/\\"/g, '"'); + }); +}; diff --git a/bff/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js b/bff/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js new file mode 100644 index 0000000..2455116 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/submodules/serde/value/NumericValue.js @@ -0,0 +1,25 @@ +const format = /^-?\d*(\.\d+)?$/; +export class NumericValue { + string; + type; + constructor(string, type) { + this.string = string; + this.type = type; + if (!format.test(string)) { + throw new Error(`@smithy/core/serde - NumericValue must only contain [0-9], at most one decimal point ".", and an optional negation prefix "-".`); + } + } + toString() { + return this.string; + } + static [Symbol.hasInstance](object) { + if (!object || typeof object !== "object") { + return false; + } + const _nv = object; + return NumericValue.prototype.isPrototypeOf(object) || (_nv.type === "bigDecimal" && format.test(_nv.string)); + } +} +export function nv(input) { + return new NumericValue(String(input), "bigDecimal"); +} diff --git a/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js new file mode 100644 index 0000000..70d05af --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js @@ -0,0 +1,13 @@ +export class DefaultIdentityProviderConfig { + authSchemes = new Map(); + constructor(config) { + for (const [key, value] of Object.entries(config)) { + if (value !== undefined) { + this.authSchemes.set(key, value); + } + } + } + getIdentityProvider(schemeId) { + return this.authSchemes.get(schemeId); + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js new file mode 100644 index 0000000..8b6f598 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.js @@ -0,0 +1,34 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { HttpApiKeyAuthLocation } from "@smithy/types"; +export class HttpApiKeyAuthSigner { + async sign(httpRequest, identity, signingProperties) { + if (!signingProperties) { + throw new Error("request could not be signed with `apiKey` since the `name` and `in` signer properties are missing"); + } + if (!signingProperties.name) { + throw new Error("request could not be signed with `apiKey` since the `name` signer property is missing"); + } + if (!signingProperties.in) { + throw new Error("request could not be signed with `apiKey` since the `in` signer property is missing"); + } + if (!identity.apiKey) { + throw new Error("request could not be signed with `apiKey` since the `apiKey` is not defined"); + } + const clonedRequest = HttpRequest.clone(httpRequest); + if (signingProperties.in === HttpApiKeyAuthLocation.QUERY) { + clonedRequest.query[signingProperties.name] = identity.apiKey; + } + else if (signingProperties.in === HttpApiKeyAuthLocation.HEADER) { + clonedRequest.headers[signingProperties.name] = signingProperties.scheme + ? `${signingProperties.scheme} ${identity.apiKey}` + : identity.apiKey; + } + else { + throw new Error("request can only be signed with `apiKey` locations `query` or `header`, " + + "but found: `" + + signingProperties.in + + "`"); + } + return clonedRequest; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js new file mode 100644 index 0000000..b92a9c3 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.js @@ -0,0 +1,11 @@ +import { HttpRequest } from "@smithy/protocol-http"; +export class HttpBearerAuthSigner { + async sign(httpRequest, identity, signingProperties) { + const clonedRequest = HttpRequest.clone(httpRequest); + if (!identity.token) { + throw new Error("request could not be signed with `token` since the `token` is not defined"); + } + clonedRequest.headers["Authorization"] = `Bearer ${identity.token}`; + return clonedRequest; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js new file mode 100644 index 0000000..9d240fe --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/index.js @@ -0,0 +1,3 @@ +export * from "./httpApiKeyAuth"; +export * from "./httpBearerAuth"; +export * from "./noAuth"; diff --git a/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js new file mode 100644 index 0000000..356193d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/httpAuthSchemes/noAuth.js @@ -0,0 +1,5 @@ +export class NoAuthSigner { + async sign(httpRequest, identity, signingProperties) { + return httpRequest; + } +} diff --git a/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/index.js b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/index.js new file mode 100644 index 0000000..87ba64b --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/index.js @@ -0,0 +1,3 @@ +export * from "./DefaultIdentityProviderConfig"; +export * from "./httpAuthSchemes"; +export * from "./memoizeIdentityProvider"; diff --git a/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js new file mode 100644 index 0000000..b40049a --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js @@ -0,0 +1,55 @@ +export const createIsIdentityExpiredFunction = (expirationMs) => function isIdentityExpired(identity) { + return doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs; +}; +export const EXPIRATION_MS = 300_000; +export const isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS); +export const doesIdentityRequireRefresh = (identity) => identity.expiration !== undefined; +export const memoizeIdentityProvider = (provider, isExpired, requiresRefresh) => { + if (provider === undefined) { + return undefined; + } + const normalizedProvider = typeof provider !== "function" ? async () => Promise.resolve(provider) : provider; + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = async (options) => { + if (!pending) { + pending = normalizedProvider(options); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } + finally { + pending = undefined; + } + return resolved; + }; + if (isExpired === undefined) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(options); + } + if (isConstant) { + return resolved; + } + if (!requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(options); + return resolved; + } + return resolved; + }; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/getSmithyContext.d.ts b/bff/node_modules/@smithy/core/dist-types/getSmithyContext.d.ts new file mode 100644 index 0000000..92cbb09 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/getSmithyContext.d.ts @@ -0,0 +1,5 @@ +import type { HandlerExecutionContext } from "@smithy/types"; +/** + * @internal + */ +export declare const getSmithyContext: (context: HandlerExecutionContext) => Record; diff --git a/bff/node_modules/@smithy/core/dist-types/index.d.ts b/bff/node_modules/@smithy/core/dist-types/index.d.ts new file mode 100644 index 0000000..82c90b9 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/index.d.ts @@ -0,0 +1,8 @@ +export * from "./getSmithyContext"; +export * from "./middleware-http-auth-scheme"; +export * from "./middleware-http-signing"; +export * from "./normalizeProvider"; +export { createPaginator } from "./pagination/createPaginator"; +export * from "./request-builder/requestBuilder"; +export * from "./setFeature"; +export * from "./util-identity-and-auth"; diff --git a/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts new file mode 100644 index 0000000..0a93d33 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts @@ -0,0 +1,18 @@ +import type { HandlerExecutionContext, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, IdentityProviderConfig, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import type { PreviouslyResolved } from "./httpAuthSchemeMiddleware"; +/** + * @internal + */ +export declare const httpAuthSchemeEndpointRuleSetMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +interface HttpAuthSchemeEndpointRuleSetPluginOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +export declare const getHttpAuthSchemeEndpointRuleSetPlugin: (config: TConfig & PreviouslyResolved, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }: HttpAuthSchemeEndpointRuleSetPluginOptions) => Pluggable; +export {}; diff --git a/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts new file mode 100644 index 0000000..0c314c3 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts @@ -0,0 +1,18 @@ +import type { HandlerExecutionContext, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, IdentityProviderConfig, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import type { PreviouslyResolved } from "./httpAuthSchemeMiddleware"; +/** + * @internal + */ +export declare const httpAuthSchemeMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +interface HttpAuthSchemePluginOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +export declare const getHttpAuthSchemePlugin: (config: TConfig & PreviouslyResolved, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }: HttpAuthSchemePluginOptions) => Pluggable; +export {}; diff --git a/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts new file mode 100644 index 0000000..f272be0 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts @@ -0,0 +1,33 @@ +import type { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, IdentityProviderConfig, Provider, SelectedHttpAuthScheme, SerializeMiddleware, SMITHY_CONTEXT_KEY } from "@smithy/types"; +/** + * @internal + */ +export interface PreviouslyResolved { + authSchemePreference?: Provider; + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: HttpAuthSchemeProvider; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareSmithyContext extends Record { + selectedHttpAuthScheme?: SelectedHttpAuthScheme; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareHandlerExecutionContext extends HandlerExecutionContext { + [SMITHY_CONTEXT_KEY]?: HttpAuthSchemeMiddlewareSmithyContext; +} +/** + * @internal + */ +export declare const httpAuthSchemeMiddleware: (config: TConfig & PreviouslyResolved, mwOptions: HttpAuthSchemeMiddlewareOptions) => SerializeMiddleware; +export {}; diff --git a/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/index.d.ts b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/index.d.ts new file mode 100644 index 0000000..5042e7d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/index.d.ts @@ -0,0 +1,3 @@ +export * from "./httpAuthSchemeMiddleware"; +export * from "./getHttpAuthSchemeEndpointRuleSetPlugin"; +export * from "./getHttpAuthSchemePlugin"; diff --git a/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/resolveAuthOptions.d.ts b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/resolveAuthOptions.d.ts new file mode 100644 index 0000000..808b0b6 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/middleware-http-auth-scheme/resolveAuthOptions.d.ts @@ -0,0 +1,10 @@ +import type { HttpAuthOption } from "@smithy/types"; +/** + * Resolves list of auth options based on the supported ones, vs the preference list. + * + * @param candidateAuthOptions list of supported auth options selected by the standard + * resolution process (model-based, endpoints 2.0, etc.) + * @param authSchemePreference list of auth schemes preferred by user. + * @returns + */ +export declare const resolveAuthOptions: (candidateAuthOptions: HttpAuthOption[], authSchemePreference: string[]) => HttpAuthOption[]; diff --git a/bff/node_modules/@smithy/core/dist-types/middleware-http-signing/getHttpSigningMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/middleware-http-signing/getHttpSigningMiddleware.d.ts new file mode 100644 index 0000000..b70a553 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/middleware-http-signing/getHttpSigningMiddleware.d.ts @@ -0,0 +1,9 @@ +import type { FinalizeRequestHandlerOptions, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const httpSigningMiddlewareOptions: FinalizeRequestHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getHttpSigningPlugin: (config: object) => Pluggable; diff --git a/bff/node_modules/@smithy/core/dist-types/middleware-http-signing/httpSigningMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/middleware-http-signing/httpSigningMiddleware.d.ts new file mode 100644 index 0000000..d0d99e2 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/middleware-http-signing/httpSigningMiddleware.d.ts @@ -0,0 +1,5 @@ +import type { FinalizeRequestMiddleware } from "@smithy/types"; +/** + * @internal + */ +export declare const httpSigningMiddleware: (config: object) => FinalizeRequestMiddleware; diff --git a/bff/node_modules/@smithy/core/dist-types/middleware-http-signing/index.d.ts b/bff/node_modules/@smithy/core/dist-types/middleware-http-signing/index.d.ts new file mode 100644 index 0000000..7bc6cfe --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/middleware-http-signing/index.d.ts @@ -0,0 +1,2 @@ +export * from "./httpSigningMiddleware"; +export * from "./getHttpSigningMiddleware"; diff --git a/bff/node_modules/@smithy/core/dist-types/normalizeProvider.d.ts b/bff/node_modules/@smithy/core/dist-types/normalizeProvider.d.ts new file mode 100644 index 0000000..1f7b6f6 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/normalizeProvider.d.ts @@ -0,0 +1,7 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + * + * @returns a provider function for the input value if it isn't already one. + */ +export declare const normalizeProvider: (input: T | Provider) => Provider; diff --git a/bff/node_modules/@smithy/core/dist-types/pagination/createPaginator.d.ts b/bff/node_modules/@smithy/core/dist-types/pagination/createPaginator.d.ts new file mode 100644 index 0000000..78fcbe0 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/pagination/createPaginator.d.ts @@ -0,0 +1,7 @@ +import type { PaginationConfiguration, Paginator } from "@smithy/types"; +/** + * @internal + * + * Creates a paginator. + */ +export declare function createPaginator(ClientCtor: any, CommandCtor: any, inputTokenName: string, outputTokenName: string, pageSizeTokenName?: string): (config: PaginationConfigType, input: InputType, ...additionalArguments: any[]) => Paginator; diff --git a/bff/node_modules/@smithy/core/dist-types/request-builder/requestBuilder.d.ts b/bff/node_modules/@smithy/core/dist-types/request-builder/requestBuilder.d.ts new file mode 100644 index 0000000..8e2f2ef --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/request-builder/requestBuilder.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { requestBuilder } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/core/dist-types/setFeature.d.ts b/bff/node_modules/@smithy/core/dist-types/setFeature.d.ts new file mode 100644 index 0000000..279106c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/setFeature.d.ts @@ -0,0 +1,12 @@ +import type { HandlerExecutionContext, SmithyFeatures } from "@smithy/types"; +/** + * @internal + * Indicates to the request context that a given feature is active. + * + * @param context - handler execution context. + * @param feature - readable name of feature. + * @param value - encoding value of feature. This is required because the + * specification asks the library not to include a runtime lookup of all + * the feature identifiers. + */ +export declare function setFeature(context: HandlerExecutionContext, feature: F, value: SmithyFeatures[F]): void; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/cbor/CborCodec.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/CborCodec.d.ts new file mode 100644 index 0000000..74c4dda --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/CborCodec.d.ts @@ -0,0 +1,33 @@ +import { SerdeContext } from "@smithy/core/protocols"; +import type { Codec, Schema, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +/** + * @public + */ +export declare class CborCodec extends SerdeContext implements Codec { + createSerializer(): CborShapeSerializer; + createDeserializer(): CborShapeDeserializer; +} +/** + * @public + */ +export declare class CborShapeSerializer extends SerdeContext implements ShapeSerializer { + private value; + write(schema: Schema, value: unknown): void; + /** + * Recursive serializer transform that copies and prepares the user input object + * for CBOR serialization. + */ + serialize(schema: Schema, source: unknown): any; + flush(): Uint8Array; +} +/** + * @public + */ +export declare class CborShapeDeserializer extends SerdeContext implements ShapeDeserializer { + read(schema: Schema, bytes: Uint8Array): any; + /** + * Public because it's called by the protocol implementation to deserialize errors. + * @internal + */ + readValue(_schema: Schema, value: any): any; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts new file mode 100644 index 0000000..603bd84 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/SmithyRpcV2CborProtocol.d.ts @@ -0,0 +1,28 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions } from "@smithy/types"; +import { CborCodec } from "./CborCodec"; +/** + * Client protocol for Smithy RPCv2 CBOR. + * + * @public + */ +export declare class SmithyRpcV2CborProtocol extends RpcProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + private codec; + protected serializer: import("./CborCodec").CborShapeSerializer; + protected deserializer: import("./CborCodec").CborShapeDeserializer; + constructor({ defaultNamespace, errorTypeRegistries, }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getShapeId(): string; + getPayloadCodec(): CborCodec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/cbor/byte-printer.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/byte-printer.d.ts new file mode 100644 index 0000000..698c544 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/byte-printer.d.ts @@ -0,0 +1,6 @@ +/** + * Prints bytes as binary string with numbers. + * @param bytes - to print. + * @deprecated for testing only, do not use in runtime. + */ +export declare function printBytes(bytes: Uint8Array): string[]; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts new file mode 100644 index 0000000..ecb09dc --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts @@ -0,0 +1,17 @@ +import type { CborValueType, Float32, Uint8, Uint32 } from "./cbor-types"; +/** + * @internal + * @param bytes - to be set as the decode source. + * + * Sets the decode bytearray source and its data view. + */ +export declare function setPayload(bytes: Uint8Array): void; +/** + * @internal + * Decodes the data between the two indices. + */ +export declare function decode(at: Uint32, to: Uint32): CborValueType; +/** + * @internal + */ +export declare function bytesToFloat16(a: Uint8, b: Uint8): Float32; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts new file mode 100644 index 0000000..bfc3328 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + */ +export declare function toUint8Array(): Uint8Array; +export declare function resize(size: number): void; +/** + * @param _input - JS data object. + */ +export declare function encode(_input: any): void; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts new file mode 100644 index 0000000..a87178d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts @@ -0,0 +1,62 @@ +export type CborItemType = undefined | boolean | number | bigint | [CborUnstructuredByteStringType, Uint64] | string | CborTagType; +export type CborTagType = { + tag: Uint64 | number; + value: CborValueType; + [tagSymbol]: true; +}; +export type CborUnstructuredByteStringType = Uint8Array; +export type CborListType = Array; +export type CborMapType = Record; +export type CborCollectionType = CborMapType | CborListType; +export type CborValueType = CborItemType | CborCollectionType | any; +export type CborArgumentLength = 1 | 2 | 4 | 8; +export type CborArgumentLengthOffset = 1 | 2 | 3 | 5 | 9; +export type CborOffset = number; +export type Uint8 = number; +export type Uint32 = number; +export type Uint64 = bigint; +export type Float32 = number; +export type Int64 = bigint; +export type Float16Binary = number; +export type Float32Binary = number; +export type CborMajorType = typeof majorUint64 | typeof majorNegativeInt64 | typeof majorUnstructuredByteString | typeof majorUtf8String | typeof majorList | typeof majorMap | typeof majorTag | typeof majorSpecial; +export declare const majorUint64 = 0; +export declare const majorNegativeInt64 = 1; +export declare const majorUnstructuredByteString = 2; +export declare const majorUtf8String = 3; +export declare const majorList = 4; +export declare const majorMap = 5; +export declare const majorTag = 6; +export declare const majorSpecial = 7; +export declare const specialFalse = 20; +export declare const specialTrue = 21; +export declare const specialNull = 22; +export declare const specialUndefined = 23; +export declare const extendedOneByte = 24; +export declare const extendedFloat16 = 25; +export declare const extendedFloat32 = 26; +export declare const extendedFloat64 = 27; +export declare const minorIndefinite = 31; +export declare function alloc(size: number): Uint8Array; +/** + * @public + * + * The presence of this symbol as an object key indicates it should be considered a tag + * for CBOR serialization purposes. + * + * The object must also have the properties "tag" and "value". + */ +export declare const tagSymbol: unique symbol; +/** + * @public + * Applies the tag symbol to the object. + */ +export declare function tag(data: { + tag: number | bigint; + value: any; + [tagSymbol]?: true; +}): { + tag: number | bigint; + value: any; + [tagSymbol]: true; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor.d.ts new file mode 100644 index 0000000..7577213 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/cbor.d.ts @@ -0,0 +1,26 @@ +/** + * This implementation is synchronous and only implements the parts of CBOR + * specification used by Smithy RPCv2 CBOR protocol. + * + * This cbor serde implementation is derived from AWS SDK for Go's implementation. + * @see https://github.com/aws/smithy-go/tree/main/encoding/cbor + * + * The cbor-x implementation was also instructional: + * @see https://github.com/kriszyp/cbor-x + */ +export declare const cbor: { + deserialize(payload: Uint8Array): any; + serialize(input: any): Uint8Array; + /** + * @public + * @param size - byte length to allocate. + * + * This may be used to garbage collect the CBOR + * shared encoding buffer space, + * e.g. resizeEncodingBuffer(0); + * + * This may also be used to pre-allocate more space for + * CBOR encoding, e.g. resizeEncodingBuffer(100_000_000); + */ + resizeEncodingBuffer(size: number): void; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts new file mode 100644 index 0000000..c53524e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts @@ -0,0 +1,5 @@ +export { cbor } from "./cbor"; +export { tag, tagSymbol } from "./cbor-types"; +export * from "./parseCborBody"; +export * from "./SmithyRpcV2CborProtocol"; +export * from "./CborCodec"; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts new file mode 100644 index 0000000..2768900 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts @@ -0,0 +1,31 @@ +import { HttpRequest as __HttpRequest } from "@smithy/protocol-http"; +import type { HeaderBag as __HeaderBag, HttpResponse, SerdeContext as __SerdeContext, SerdeContext } from "@smithy/types"; +import type { tagSymbol } from "./cbor-types"; +/** + * @internal + */ +export declare const parseCborBody: (streamBody: any, context: SerdeContext) => any; +/** + * @internal + */ +export declare const dateToTag: (date: Date) => { + tag: number | bigint; + value: any; + [tagSymbol]: true; +}; +/** + * @internal + */ +export declare const parseCborErrorBody: (errorBody: any, context: SerdeContext) => Promise; +/** + * @internal + */ +export declare const loadSmithyRpcV2CborErrorCode: (output: HttpResponse, data: any) => string | undefined; +/** + * @internal + */ +export declare const checkCborResponse: (response: HttpResponse) => void; +/** + * @internal + */ +export declare const buildHttpRpcRequest: (context: __SerdeContext, headers: __HeaderBag, path: string, resolvedHostname: string | undefined, body: any) => Promise<__HttpRequest>; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts new file mode 100644 index 0000000..a88df65 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/endpoints/index.d.ts @@ -0,0 +1 @@ +export * from "./toEndpointV1"; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/endpoints/toEndpointV1.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/endpoints/toEndpointV1.d.ts new file mode 100644 index 0000000..56c7ca2 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/endpoints/toEndpointV1.d.ts @@ -0,0 +1,6 @@ +import type { Endpoint, EndpointV2 } from "@smithy/types"; +/** + * Converts an endpoint to EndpointV1 format. + * @internal + */ +export declare const toEndpointV1: (endpoint: string | Endpoint | EndpointV2) => Endpoint; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/event-streams/EventStreamSerde.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/event-streams/EventStreamSerde.d.ts new file mode 100644 index 0000000..944564b --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/event-streams/EventStreamSerde.d.ts @@ -0,0 +1,60 @@ +import type { NormalizedSchema } from "@smithy/core/schema"; +import type { EventStreamMarshaller, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +/** + * Separated module for async mixin of EventStream serde capability. + * This is used by the HttpProtocol base class from \@smithy/core/protocols. + * + * @public + */ +export declare class EventStreamSerde { + private readonly marshaller; + private readonly serializer; + private readonly deserializer; + private readonly serdeContext?; + private readonly defaultContentType; + /** + * Properties are injected by the HttpProtocol. + */ + constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, }: { + marshaller: EventStreamMarshaller; + serializer: ShapeSerializer; + deserializer: ShapeDeserializer; + serdeContext?: SerdeFunctions; + defaultContentType: string; + }); + /** + * @param eventStream - the iterable provided by the caller. + * @param requestSchema - the schema of the event stream container (struct). + * @param [initialRequest] - only provided if the initial-request is part of the event stream (RPC). + * + * @returns a stream suitable for the HTTP body of a request. + */ + serializeEventStream({ eventStream, requestSchema, initialRequest, }: { + eventStream: AsyncIterable; + requestSchema: NormalizedSchema; + initialRequest?: any; + }): Promise; + /** + * @param response - http response from which to read the event stream. + * @param unionSchema - schema of the event stream container (struct). + * @param [initialResponseContainer] - provided and written to only if the initial response is part of the event stream (RPC). + * + * @returns the asyncIterable of the event stream for the end-user. + */ + deserializeEventStream({ response, responseSchema, initialResponseContainer, }: { + response: IHttpResponse; + responseSchema: NormalizedSchema; + initialResponseContainer?: any; + }): Promise>; + /** + * @param unionMember - member name within the structure that contains an event stream union. + * @param unionSchema - schema of the union. + * @param event + * + * @returns the event body (bytes) and event type (string). + */ + private writeEventBody; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts new file mode 100644 index 0000000..849f48c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/event-streams/index.d.ts @@ -0,0 +1 @@ +export * from "./EventStreamSerde"; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts new file mode 100644 index 0000000..9ae28bc --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/HttpBindingProtocol.d.ts @@ -0,0 +1,31 @@ +import { type TypeRegistry, NormalizedSchema } from "@smithy/core/schema"; +import { HttpRequest } from "@smithy/protocol-http"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, Schema, SerdeFunctions } from "@smithy/types"; +import { HttpProtocol } from "./HttpProtocol"; +/** + * Base for HTTP-binding protocols. Downstream examples + * include AWS REST JSON and AWS REST XML. + * + * @public + */ +export declare abstract class HttpBindingProtocol extends HttpProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + serializeRequest(operationSchema: OperationSchema, _input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + protected serializeQuery(ns: NormalizedSchema, data: any, query: HttpRequest["query"]): void; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + /** + * The base method ignores HTTP bindings. + * + * @deprecated (only this signature) use signature without headerBindings. + * @override + */ + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, headerBindings: Set, dataObject: any): Promise; + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts new file mode 100644 index 0000000..4012a8a --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts @@ -0,0 +1,89 @@ +import type { EventStreamSerde } from "@smithy/core/event-streams"; +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import type { ClientProtocol, Codec, Endpoint, EndpointBearer, EndpointV2, EventStreamMarshaller, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, Schema, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { SerdeContext } from "./SerdeContext"; +/** + * Abstract base for HTTP-based client protocols. + * + * @public + */ +export declare abstract class HttpProtocol extends SerdeContext implements ClientProtocol { + readonly options: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }; + /** + * An error registry having the namespace of the modeled service, + * but combining all error schemas found within the service closure. + * + * Used to look up error schema during deserialization. + */ + protected compositeErrorRegistry: TypeRegistry; + protected abstract serializer: ShapeSerializer; + protected abstract deserializer: ShapeDeserializer; + /** + * @param options.defaultNamespace - used by various implementing classes. + * @param options.errorTypeRegistries - registry instances that contribute to error deserialization. + */ + protected constructor(options: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + abstract getShapeId(): string; + abstract getPayloadCodec(): Codec; + getRequestType(): new (...args: any[]) => IHttpRequest; + getResponseType(): new (...args: any[]) => IHttpResponse; + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + abstract serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: IHttpRequest, endpoint: EndpointV2 | Endpoint): IHttpRequest; + abstract deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + protected setHostPrefix(request: IHttpRequest, operationSchema: OperationSchema, input: Input): void; + protected abstract handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + protected deserializeMetadata(output: IHttpResponse): ResponseMetadata; + /** + * @param eventStream - the iterable provided by the caller. + * @param requestSchema - the schema of the event stream container (struct). + * @param [initialRequest] - only provided if the initial-request is part of the event stream (RPC). + * + * @returns a stream suitable for the HTTP body of a request. + */ + protected serializeEventStream({ eventStream, requestSchema, initialRequest, }: { + eventStream: AsyncIterable; + requestSchema: NormalizedSchema; + initialRequest?: any; + }): Promise; + /** + * @param response - http response from which to read the event stream. + * @param unionSchema - schema of the event stream container (struct). + * @param [initialResponseContainer] - provided and written to only if the initial response is part of the event stream (RPC). + * + * @returns the asyncIterable of the event stream. + */ + protected deserializeEventStream({ response, responseSchema, initialResponseContainer, }: { + response: IHttpResponse; + responseSchema: NormalizedSchema; + initialResponseContainer?: any; + }): Promise>; + /** + * Loads eventStream capability async (for chunking). + */ + protected loadEventStreamCapability(): Promise; + /** + * @returns content-type default header value for event stream events and other documents. + */ + protected getDefaultContentType(): string; + /** + * For HTTP binding protocols, this method is overridden in {@link HttpBindingProtocol}. + * + * @deprecated only use this for HTTP binding protocols. + */ + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, headerBindings: Set, dataObject: any): Promise; + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any): Promise; + protected getEventStreamMarshaller(): EventStreamMarshaller; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/RpcProtocol.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/RpcProtocol.d.ts new file mode 100644 index 0000000..3d79818 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/RpcProtocol.d.ts @@ -0,0 +1,16 @@ +import { type TypeRegistry } from "@smithy/core/schema"; +import type { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, SerdeFunctions } from "@smithy/types"; +import { HttpProtocol } from "./HttpProtocol"; +/** + * Abstract base for RPC-over-HTTP protocols. + * + * @public + */ +export declare abstract class RpcProtocol extends HttpProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + serializeRequest(operationSchema: OperationSchema, _input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/SerdeContext.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/SerdeContext.d.ts new file mode 100644 index 0000000..536329e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/SerdeContext.d.ts @@ -0,0 +1,16 @@ +import type { ConfigurableSerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * This in practice should be the client config object. + * @internal + */ +type SerdeContextType = SerdeFunctions & { + disableHostPrefix?: boolean; +}; +/** + * @internal + */ +export declare abstract class SerdeContext implements ConfigurableSerdeContext { + protected serdeContext?: SerdeContextType; + setSerdeContext(serdeContext: SerdeContextType): void; +} +export {}; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts new file mode 100644 index 0000000..512cb96 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts @@ -0,0 +1,10 @@ +import type { SerdeContext } from "@smithy/types"; +import { Uint8ArrayBlobAdapter } from "@smithy/util-stream"; +/** + * @internal + * + * Collect low-level response body stream to Uint8Array. + */ +export declare const collectBody: (streamBody: any | undefined, context: { + streamCollector: SerdeContext["streamCollector"]; +}) => Promise; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts new file mode 100644 index 0000000..403e9ae --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Function that wraps encodeURIComponent to encode additional characters + * to fully adhere to RFC 3986. + */ +export declare function extendedEncodeURIComponent(str: string): string; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts new file mode 100644 index 0000000..5cc40c5 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts @@ -0,0 +1,13 @@ +export * from "./collect-stream-body"; +export * from "./extended-encode-uri-component"; +export * from "./HttpBindingProtocol"; +export * from "./HttpProtocol"; +export * from "./RpcProtocol"; +export * from "./requestBuilder"; +export * from "./resolve-path"; +export * from "./serde/FromStringShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeSerializer"; +export * from "./serde/ToStringShapeSerializer"; +export * from "./serde/determineTimestampFormat"; +export * from "./SerdeContext"; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts new file mode 100644 index 0000000..3013d8a --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts @@ -0,0 +1,51 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import type { SerdeContext } from "@smithy/types"; +/** + * @internal + * used in code-generated serde. + */ +export declare function requestBuilder(input: any, context: SerdeContext): RequestBuilder; +/** + * @internal + */ +export declare class RequestBuilder { + private input; + private context; + private query; + private method; + private headers; + private path; + private body; + private hostname; + private resolvePathStack; + constructor(input: any, context: SerdeContext); + build(): Promise; + /** + * Brevity setter for "hostname". + */ + hn(hostname: string): this; + /** + * Brevity initial builder for "basepath". + */ + bp(uriLabel: string): this; + /** + * Brevity incremental builder for "path". + */ + p(memberName: string, labelValueProvider: () => string | undefined, uriLabel: string, isGreedyLabel: boolean): this; + /** + * Brevity setter for "headers". + */ + h(headers: Record): this; + /** + * Brevity setter for "query". + */ + q(query: Record): this; + /** + * Brevity setter for "body". + */ + b(body: any): this; + /** + * Brevity setter for "method". + */ + m(method: string): this; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts new file mode 100644 index 0000000..03386d6 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const resolvedPath: (resolvedPath: string, input: unknown, memberName: string, labelValueProvider: () => string | undefined, uriLabel: string, isGreedyLabel: boolean) => string; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts new file mode 100644 index 0000000..bbda360 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/FromStringShapeDeserializer.d.ts @@ -0,0 +1,13 @@ +import type { CodecSettings, Schema, ShapeDeserializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * This deserializer reads strings. + * + * @public + */ +export declare class FromStringShapeDeserializer extends SerdeContext implements ShapeDeserializer { + private settings; + constructor(settings: CodecSettings); + read(_schema: Schema, data: string): any; + private base64ToUtf8; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts new file mode 100644 index 0000000..35d1984 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts @@ -0,0 +1,21 @@ +import type { CodecSettings, Schema, SerdeFunctions, ShapeDeserializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * This deserializer is a dispatcher that decides whether to use a string deserializer + * or a codec deserializer based on HTTP traits. + * + * For example, in a JSON HTTP message, the deserialization of a field will differ depending on whether + * it is bound to the HTTP header (string) or body (JSON). + * + * @public + */ +export declare class HttpInterceptingShapeDeserializer> extends SerdeContext implements ShapeDeserializer { + private codecDeserializer; + private stringDeserializer; + constructor(codecDeserializer: CodecShapeDeserializer, codecSettings: CodecSettings); + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + read(schema: Schema, data: string | Uint8Array): any | Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts new file mode 100644 index 0000000..2fcd093 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts @@ -0,0 +1,23 @@ +import type { CodecSettings, ConfigurableSerdeContext, Schema as ISchema, SerdeFunctions, ShapeSerializer } from "@smithy/types"; +import { ToStringShapeSerializer } from "./ToStringShapeSerializer"; +/** + * This serializer decides whether to dispatch to a string serializer or a codec serializer + * depending on HTTP binding traits within the given schema. + * + * For example, a JavaScript array is serialized differently when being written + * to a REST JSON HTTP header (comma-delimited string) and a REST JSON HTTP body (JSON array). + * + * @public + */ +export declare class HttpInterceptingShapeSerializer> implements ShapeSerializer, ConfigurableSerdeContext { + private codecSerializer; + private stringSerializer; + private buffer; + constructor(codecSerializer: CodecShapeSerializer, codecSettings: CodecSettings, stringSerializer?: ToStringShapeSerializer); + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + write(schema: ISchema, value: unknown): void; + flush(): string | Uint8Array; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts new file mode 100644 index 0000000..13ac766 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/ToStringShapeSerializer.d.ts @@ -0,0 +1,14 @@ +import type { CodecSettings, Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * Serializes a shape to string. + * + * @public + */ +export declare class ToStringShapeSerializer extends SerdeContext implements ShapeSerializer { + private settings; + private stringBuffer; + constructor(settings: CodecSettings); + write(schema: Schema, value: unknown): void; + flush(): string; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts new file mode 100644 index 0000000..ddfa1e5 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/protocols/serde/determineTimestampFormat.d.ts @@ -0,0 +1,9 @@ +import type { NormalizedSchema } from "@smithy/core/schema"; +import type { CodecSettings, TimestampDateTimeSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "@smithy/types"; +/** + * Assuming the schema is a timestamp type, the function resolves the format using + * either the timestamp's own traits, or the default timestamp format from the CodecSettings. + * + * @internal + */ +export declare function determineTimestampFormat(ns: NormalizedSchema, settings: CodecSettings): TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts new file mode 100644 index 0000000..08f4ec8 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts @@ -0,0 +1,71 @@ +import type { Schema as ISchema, StaticErrorSchema } from "@smithy/types"; +import type { ErrorSchema } from "./schemas/ErrorSchema"; +/** + * A way to look up schema by their ShapeId values. + * + * @public + */ +export declare class TypeRegistry { + readonly namespace: string; + private schemas; + private exceptions; + static readonly registries: Map; + private constructor(); + /** + * @param namespace - specifier. + * @returns the schema for that namespace, creating it if necessary. + */ + static for(namespace: string): TypeRegistry; + /** + * Copies entries from another instance without changing the namespace of self. + * The composition is additive but non-destructive and will not overwrite existing entries. + * + * @param other - another TypeRegistry. + */ + copyFrom(other: TypeRegistry): void; + /** + * Adds the given schema to a type registry with the same namespace, and this registry. + * + * @param shapeId - to be registered. + * @param schema - to be registered. + */ + register(shapeId: string, schema: ISchema): void; + /** + * @param shapeId - query. + * @returns the schema. + */ + getSchema(shapeId: string): ISchema; + /** + * Associates an error schema with its constructor. + */ + registerError(es: ErrorSchema | StaticErrorSchema, ctor: any): void; + /** + * @param es - query. + * @returns Error constructor that extends the service's base exception. + */ + getErrorCtor(es: ErrorSchema | StaticErrorSchema): any; + /** + * The smithy-typescript code generator generates a synthetic (i.e. unmodeled) base exception, + * because generated SDKs before the introduction of schemas have the notion of a ServiceBaseException, which + * is unique per service/model. + * + * This is generated under a unique prefix that is combined with the service namespace, and this + * method is used to retrieve it. + * + * The base exception synthetic schema is used when an error is returned by a service, but we cannot + * determine what existing schema to use to deserialize it. + * + * @returns the synthetic base exception of the service namespace associated with this registry instance. + */ + getBaseException(): StaticErrorSchema | undefined; + /** + * @param predicate - criterion. + * @returns a schema in this registry matching the predicate. + */ + find(predicate: (schema: ISchema) => boolean): ISchema | undefined; + /** + * Unloads the current TypeRegistry. + */ + clear(): void; + private normalizeShapeId; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts new file mode 100644 index 0000000..397dbc2 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/deref.d.ts @@ -0,0 +1,6 @@ +import type { Schema, SchemaRef } from "@smithy/types"; +/** + * Dereferences a SchemaRef if needed. + * @internal + */ +export declare const deref: (schemaRef: SchemaRef) => Schema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts new file mode 100644 index 0000000..fe9508c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/index.d.ts @@ -0,0 +1,14 @@ +export * from "./deref"; +export * from "./middleware/getSchemaSerdePlugin"; +export * from "./schemas/ListSchema"; +export * from "./schemas/MapSchema"; +export * from "./schemas/OperationSchema"; +export * from "./schemas/operation"; +export * from "./schemas/ErrorSchema"; +export * from "./schemas/NormalizedSchema"; +export * from "./schemas/Schema"; +export * from "./schemas/SimpleSchema"; +export * from "./schemas/StructureSchema"; +export * from "./schemas/sentinels"; +export * from "./schemas/translateTraits"; +export * from "./TypeRegistry"; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts new file mode 100644 index 0000000..7d3b798 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/getSchemaSerdePlugin.d.ts @@ -0,0 +1,14 @@ +import type { DeserializeHandlerOptions, MetadataBearer, Pluggable, SerializeHandlerOptions } from "@smithy/types"; +import type { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const deserializerMiddlewareOption: DeserializeHandlerOptions; +/** + * @internal + */ +export declare const serializerMiddlewareOption: SerializeHandlerOptions; +/** + * @internal + */ +export declare function getSchemaSerdePlugin(config: PreviouslyResolved): Pluggable; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts new file mode 100644 index 0000000..283adb1 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schema-middleware-types.d.ts @@ -0,0 +1,8 @@ +import type { ClientProtocol, SerdeContext, UrlParser } from "@smithy/types"; +/** + * @internal + */ +export type PreviouslyResolved = Omit; +}, "endpoint">; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts new file mode 100644 index 0000000..026ab1d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts @@ -0,0 +1,9 @@ +import type { DeserializeHandler, DeserializeHandlerArguments, HandlerExecutionContext } from "@smithy/types"; +import type { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const schemaDeserializationMiddleware: (config: PreviouslyResolved) => (next: DeserializeHandler, context: HandlerExecutionContext) => (args: DeserializeHandlerArguments) => Promise<{ + response: unknown; + output: O; +}>; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts new file mode 100644 index 0000000..f34e7a3 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/middleware/schemaSerializationMiddleware.d.ts @@ -0,0 +1,6 @@ +import type { HandlerExecutionContext, SerializeHandler, SerializeHandlerArguments } from "@smithy/types"; +import type { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const schemaSerializationMiddleware: (config: PreviouslyResolved) => (next: SerializeHandler, context: HandlerExecutionContext) => (args: SerializeHandlerArguments) => Promise>; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts new file mode 100644 index 0000000..aa3dbf6 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ErrorSchema.d.ts @@ -0,0 +1,37 @@ +import type { SchemaRef, SchemaTraits } from "@smithy/types"; +import { StructureSchema } from "./StructureSchema"; +/** + * A schema for a structure shape having the error trait. These represent enumerated operation errors. + * Because Smithy-TS SDKs use classes for exceptions, whereas plain objects are used for all other data, + * and have an existing notion of a XYZServiceBaseException, the ErrorSchema differs from a StructureSchema + * by additionally holding the class reference for the corresponding ServiceException class. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class ErrorSchema extends StructureSchema { + static readonly symbol: unique symbol; + /** + * @deprecated - field unused. + */ + ctor: any; + protected readonly symbol: symbol; +} +/** + * Factory for ErrorSchema, to reduce codegen output and register the schema. + * + * @internal + * @deprecated use StaticSchema + * + * @param namespace - shapeId namespace. + * @param name - shapeId name. + * @param traits - shape level serde traits. + * @param memberNames - list of member names. + * @param memberList - list of schemaRef corresponding to each + * @param ctor - class reference for the existing Error extending class. + */ +export declare const error: (namespace: string, name: string, traits: SchemaTraits, memberNames: string[], memberList: SchemaRef[], +/** + * @deprecated - field unused. + */ +ctor?: any) => ErrorSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts new file mode 100644 index 0000000..71ef0d9 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/ListSchema.d.ts @@ -0,0 +1,23 @@ +import type { ListSchema as IListSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A schema with a single member schema. + * The deprecated Set type may be represented as a list. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class ListSchema extends Schema implements IListSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + valueSchema: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for ListSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const list: (namespace: string, name: string, traits: SchemaTraits, valueSchema: SchemaRef) => ListSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts new file mode 100644 index 0000000..52983d6 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/MapSchema.d.ts @@ -0,0 +1,24 @@ +import type { MapSchema as IMapSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A schema with a key schema and value schema. + * @internal + * @deprecated use StaticSchema + */ +export declare class MapSchema extends Schema implements IMapSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + /** + * This is expected to be StringSchema, but may have traits. + */ + keySchema: SchemaRef; + valueSchema: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for MapSchema. + * @internal + * @deprecated use StaticSchema + */ +export declare const map: (namespace: string, name: string, traits: SchemaTraits, keySchema: SchemaRef, valueSchema: SchemaRef) => MapSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts new file mode 100644 index 0000000..4fb8a8a --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/NormalizedSchema.d.ts @@ -0,0 +1,143 @@ +import type { $MemberSchema, $Schema, $SchemaRef, NormalizedSchema as INormalizedSchema, SchemaRef, SchemaTraitsObject, StaticSchema } from "@smithy/types"; +/** + * Cache for numeric schemaRef. Having separate cache objects for number/string improves + * lookup performance. + * @internal + */ +export declare const simpleSchemaCacheN: Array; +/** + * Cache for string schemaRef. + * @internal + */ +export declare const simpleSchemaCacheS: Record; +/** + * Wraps both class instances, numeric sentinel values, and member schema pairs. + * Presents a consistent interface for interacting with polymorphic schema representations. + * + * @public + */ +export declare class NormalizedSchema implements INormalizedSchema { + readonly ref: $SchemaRef; + private readonly memberName?; + static readonly symbol: unique symbol; + protected readonly symbol: symbol; + private readonly name; + private readonly schema; + private readonly _isMemberSchema; + private readonly traits; + private readonly memberTraits; + private normalizedTraits?; + /** + * @param ref - a polymorphic SchemaRef to be dereferenced/normalized. + * @param memberName - optional memberName if this NormalizedSchema should be considered a member schema. + */ + private constructor(); + static [Symbol.hasInstance](lhs: unknown): lhs is NormalizedSchema; + /** + * Static constructor that attempts to avoid wrapping a NormalizedSchema within another. + */ + static of(ref: SchemaRef | $SchemaRef): NormalizedSchema; + /** + * @returns the underlying non-normalized schema. + */ + getSchema(): Exclude<$Schema, $MemberSchema | INormalizedSchema>; + /** + * @param withNamespace - qualifies the name. + * @returns e.g. `MyShape` or `com.namespace#MyShape`. + */ + getName(withNamespace?: boolean): string | undefined; + /** + * @returns the member name if the schema is a member schema. + */ + getMemberName(): string; + isMemberSchema(): boolean; + /** + * boolean methods on this class help control flow in shape serialization and deserialization. + */ + isListSchema(): boolean; + isMapSchema(): boolean; + /** + * To simplify serialization logic, static union schemas are considered a specialization + * of structs in the TypeScript typings and JS runtime, as well as static error schemas + * which have a different identifier. + */ + isStructSchema(): boolean; + isUnionSchema(): boolean; + isBlobSchema(): boolean; + isTimestampSchema(): boolean; + isUnitSchema(): boolean; + isDocumentSchema(): boolean; + isStringSchema(): boolean; + isBooleanSchema(): boolean; + isNumericSchema(): boolean; + isBigIntegerSchema(): boolean; + isBigDecimalSchema(): boolean; + isStreaming(): boolean; + /** + * @returns whether the schema has the idempotencyToken trait. + */ + isIdempotencyToken(): boolean; + /** + * @returns own traits merged with member traits, where member traits of the same trait key take priority. + * This method is cached. + */ + getMergedTraits(): SchemaTraitsObject; + /** + * @returns only the member traits. If the schema is not a member, this returns empty. + */ + getMemberTraits(): SchemaTraitsObject; + /** + * @returns only the traits inherent to the shape or member target shape if this schema is a member. + * If there are any member traits they are excluded. + */ + getOwnTraits(): SchemaTraitsObject; + /** + * @returns the map's key's schema. Returns a dummy Document schema if this schema is a Document. + * + * @throws Error if the schema is not a Map or Document. + */ + getKeySchema(): NormalizedSchema; + /** + * @returns the schema of the map's value or list's member. + * Returns a dummy Document schema if this schema is a Document. + * + * @throws Error if the schema is not a Map, List, nor Document. + */ + getValueSchema(): NormalizedSchema; + /** + * @returns the NormalizedSchema for the given member name. The returned instance will return true for `isMemberSchema()` + * and will have the member name given. + * @param memberName - which member to retrieve and wrap. + * + * @throws Error if member does not exist or the schema is neither a document nor structure. + * Note that errors are assumed to be structures and unions are considered structures for these purposes. + */ + getMemberSchema(memberName: string): NormalizedSchema; + /** + * This can be used for checking the members as a hashmap. + * Prefer the structIterator method for iteration. + * + * This does NOT return list and map members, it is only for structures. + * + * @deprecated use (checked) structIterator instead. + * + * @returns a map of member names to member schemas (normalized). + */ + getMemberSchemas(): Record; + /** + * @returns member name of event stream or empty string indicating none exists or this + * isn't a structure schema. + */ + getEventStreamMember(): string; + /** + * Allows iteration over members of a structure schema. + * Each yield is a pair of the member name and member schema. + * + * This avoids the overhead of calling Object.entries(ns.getMemberSchemas()). + */ + structIterator(): Generator<[string, NormalizedSchema], undefined, undefined>; +} +/** + * @internal + */ +export declare const isStaticSchema: (sc: SchemaRef) => sc is StaticSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts new file mode 100644 index 0000000..3f3a437 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/OperationSchema.d.ts @@ -0,0 +1,23 @@ +import type { OperationSchema as IOperationSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * This is used as a reference container for the input/output pair of schema, and for trait + * detection on the operation that may affect client protocol logic. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class OperationSchema extends Schema implements IOperationSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + input: SchemaRef; + output: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for OperationSchema. + * @internal + * @deprecated use StaticSchema + */ +export declare const op: (namespace: string, name: string, traits: SchemaTraits, input: SchemaRef, output: SchemaRef) => OperationSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts new file mode 100644 index 0000000..64119a3 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/Schema.d.ts @@ -0,0 +1,16 @@ +import type { SchemaTraits, TraitsSchema } from "@smithy/types"; +/** + * Abstract base for class-based Schema except NormalizedSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare abstract class Schema implements TraitsSchema { + name: string; + namespace: string; + traits: SchemaTraits; + protected abstract readonly symbol: symbol; + static assign(instance: T, values: Omit): T; + static [Symbol.hasInstance](lhs: unknown): boolean; + getName(): string; +} diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts new file mode 100644 index 0000000..7fb8b13 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/SimpleSchema.d.ts @@ -0,0 +1,28 @@ +import type { SchemaRef, SchemaTraits, TraitsSchema } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * Although numeric values exist for most simple schema, this class is used for cases where traits are + * attached to those schema, since a single number cannot easily represent both a schema and its traits. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class SimpleSchema extends Schema implements TraitsSchema { + static readonly symbol: unique symbol; + name: string; + schemaRef: SchemaRef; + traits: SchemaTraits; + protected readonly symbol: symbol; +} +/** + * Factory for simple schema class objects. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const sim: (namespace: string, name: string, schemaRef: SchemaRef, traits: SchemaTraits) => SimpleSchema; +/** + * @internal + * @deprecated + */ +export declare const simAdapter: (namespace: string, name: string, traits: SchemaTraits, schemaRef: SchemaRef) => SimpleSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts new file mode 100644 index 0000000..d00c527 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/StructureSchema.d.ts @@ -0,0 +1,23 @@ +import type { SchemaRef, SchemaTraits, StructureSchema as IStructureSchema } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A structure schema has a known list of members. This is also used for unions. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class StructureSchema extends Schema implements IStructureSchema { + static symbol: symbol; + name: string; + traits: SchemaTraits; + memberNames: string[]; + memberList: SchemaRef[]; + protected readonly symbol: symbol; +} +/** + * Factory for StructureSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const struct: (namespace: string, name: string, traits: SchemaTraits, memberNames: string[], memberList: SchemaRef[]) => StructureSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts new file mode 100644 index 0000000..e056ee5 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/operation.d.ts @@ -0,0 +1,7 @@ +import type { OperationSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +/** + * Converts the static schema array into an object-form to adapt + * to the signature of ClientProtocol classes. + * @internal + */ +export declare const operation: (namespace: string, name: string, traits: SchemaTraits, input: SchemaRef, output: SchemaRef) => OperationSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts new file mode 100644 index 0000000..5fa5f6c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/sentinels.d.ts @@ -0,0 +1,23 @@ +import type { BigDecimalSchema, BigIntegerSchema, BlobSchema, BooleanSchema, DocumentSchema, ListSchemaModifier, MapSchemaModifier, NumericSchema, StreamingBlobSchema, StringSchema, TimestampDateTimeSchema, TimestampDefaultSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "@smithy/types"; +/** + * Schema sentinel runtime values. + * @internal + * + * @deprecated use inline numbers with type annotation to save space. + */ +export declare const SCHEMA: { + BLOB: BlobSchema; + STREAMING_BLOB: StreamingBlobSchema; + BOOLEAN: BooleanSchema; + STRING: StringSchema; + NUMERIC: NumericSchema; + BIG_INTEGER: BigIntegerSchema; + BIG_DECIMAL: BigDecimalSchema; + DOCUMENT: DocumentSchema; + TIMESTAMP_DEFAULT: TimestampDefaultSchema; + TIMESTAMP_DATE_TIME: TimestampDateTimeSchema; + TIMESTAMP_HTTP_DATE: TimestampHttpDateSchema; + TIMESTAMP_EPOCH_SECONDS: TimestampEpochSecondsSchema; + LIST_MODIFIER: ListSchemaModifier; + MAP_MODIFIER: MapSchemaModifier; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/translateTraits.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/translateTraits.d.ts new file mode 100644 index 0000000..a87a243 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/schema/schemas/translateTraits.d.ts @@ -0,0 +1,13 @@ +import type { SchemaTraits, SchemaTraitsObject } from "@smithy/types"; +/** + * Module-level cache for translateTraits() numeric bitmask inputs. + * + * @internal + */ +export declare const traitsCache: SchemaTraitsObject[]; +/** + * @internal + * @param indicator - numeric indicator for preset trait combination. + * @returns equivalent trait object. + */ +export declare function translateTraits(indicator: SchemaTraits): SchemaTraitsObject; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts new file mode 100644 index 0000000..c250b7c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/copyDocumentWithTransform.d.ts @@ -0,0 +1,6 @@ +import type { SchemaRef } from "@smithy/types"; +/** + * @internal + * @deprecated the former functionality has been internalized to the CborCodec. + */ +export declare const copyDocumentWithTransform: (source: any, schemaRef: SchemaRef, transform?: (_: any, schemaRef: SchemaRef) => any) => any; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts new file mode 100644 index 0000000..99c55f4 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/date-utils.d.ts @@ -0,0 +1,73 @@ +/** + * @internal + * + * Builds a proper UTC HttpDate timestamp from a Date object + * since not all environments will have this as the expected + * format. + * + * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString} + * - Prior to ECMAScript 2018, the format of the return value + * - varied according to the platform. The most common return + * - value was an RFC-1123 formatted date stamp, which is a + * - slightly updated version of RFC-822 date stamps. + */ +export declare function dateToUtcString(date: Date): string; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and cannot have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc3339DateTime: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and can have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc3339DateTimeWithOffset: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 7231 IMF-fixdate or obs-date. + * + * Input strings must conform to RFC7231 section 7.1.1.1. Fractional seconds are supported. + * + * @see {@link https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc7231DateTime: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a number or a parseable string. + * + * Input strings must be an integer or floating point number. Fractional seconds are supported. + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseEpochTimestamp: (value: unknown) => Date | undefined; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/generateIdempotencyToken.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/generateIdempotencyToken.d.ts new file mode 100644 index 0000000..69ef1f2 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/generateIdempotencyToken.d.ts @@ -0,0 +1,2 @@ +import { v4 as generateIdempotencyToken } from "@smithy/uuid"; +export { generateIdempotencyToken }; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts new file mode 100644 index 0000000..421ec8e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts @@ -0,0 +1,10 @@ +export * from "./copyDocumentWithTransform"; +export * from "./date-utils"; +export * from "./generateIdempotencyToken"; +export * from "./lazy-json"; +export * from "./parse-utils"; +export * from "./quote-header"; +export * from "./schema-serde-lib/schema-date-utils"; +export * from "./split-every"; +export * from "./split-header"; +export * from "./value/NumericValue"; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts new file mode 100644 index 0000000..0b682ee --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/lazy-json.d.ts @@ -0,0 +1,45 @@ +/** + * @public + * + * A model field with this type means that you may provide a JavaScript + * object in lieu of a JSON string, and it will be serialized to JSON + * automatically before being sent in a request. + * + * For responses, you will receive a "LazyJsonString", which is a boxed String object + * with additional mixin methods. + * To get the string value, call `.toString()`, or to get the JSON object value, + * call `.deserializeJSON()` or parse it yourself. + */ +export type AutomaticJsonStringConversion = Parameters[0] | LazyJsonString; +/** + * @internal + */ +export interface LazyJsonString extends String { + /** + * @returns the JSON parsing of the string value. + */ + deserializeJSON(): any; + /** + * @returns the original string value rather than a JSON.stringified value. + */ + toJSON(): string; +} +/** + * @internal + * + * Extension of the native String class in the previous implementation + * has negative global performance impact on method dispatch for strings, + * and is generally discouraged. + * + * This current implementation may look strange, but is necessary to preserve the interface and + * behavior of extending the String class. + */ +export declare const LazyJsonString: { + new (s: string): LazyJsonString; + (s: string): LazyJsonString; + from(s: any): LazyJsonString; + /** + * @deprecated use #from. + */ + fromObject(s: any): LazyJsonString; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts new file mode 100644 index 0000000..b5ded6f --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/parse-utils.d.ts @@ -0,0 +1,270 @@ +/** + * @internal + * + * Give an input string, strictly parses a boolean value. + * + * @param value - The boolean string to parse. + * @returns true for "true", false for "false", otherwise an error is thrown. + */ +export declare const parseBoolean: (value: string) => boolean; +/** + * @internal + * + * Asserts a value is a boolean and returns it. + * Casts strings and numbers with a warning if there is evidence that they were + * intended to be booleans. + * + * @param value - A value that is expected to be a boolean. + * @returns The value if it's a boolean, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectBoolean: (value: any) => boolean | undefined; +/** + * @internal + * + * Asserts a value is a number and returns it. + * Casts strings with a warning if the string is a parseable number. + * This is to unblock slight API definition/implementation inconsistencies. + * + * @param value - A value that is expected to be a number. + * @returns The value if it's a number, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectNumber: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit float and returns it. + * + * @param value - A value that is expected to be a 32-bit float. + * @returns The value if it's a float, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectFloat32: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is an integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectLong: (value: any) => number | undefined; +/** + * @internal + * + * @deprecated Use expectLong + */ +export declare const expectInt: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectInt32: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 16-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectShort: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is an 8-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectByte: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is not null or undefined and returns it, or throws an error. + * + * @param value - A value that is expected to be defined + * @param location - The location where we're expecting to find a defined object (optional) + * @returns The value if it's not undefined, otherwise throws an error + */ +export declare const expectNonNull: (value: T | null | undefined, location?: string) => T; +/** + * @internal + * + * Asserts a value is an JSON-like object and returns it. This is expected to be used + * with values parsed from JSON (arrays, objects, numbers, strings, booleans). + * + * @param value - A value that is expected to be an object + * @returns The value if it's an object, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectObject: (value: any) => Record | undefined; +/** + * @internal + * + * Asserts a value is a string and returns it. + * Numbers and boolean will be cast to strings with a warning. + * + * @param value - A value that is expected to be a string. + * @returns The value if it's a string, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectString: (value: any) => string | undefined; +/** + * @internal + * + * Asserts a value is a JSON-like object with only one non-null/non-undefined key and + * returns it. + * + * @param value - A value that is expected to be an object with exactly one non-null, + * non-undefined key. + * @returns the value if it's a union, undefined if it's null/undefined, otherwise + * an error is thrown. + */ +export declare const expectUnion: (value: unknown) => Record | undefined; +/** + * @internal + * + * Parses a value into a double. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by the standard + * parseFloat with one exception: NaN may only be explicitly set as the string + * "NaN", any implicit Nan values will result in an error being thrown. If any + * other type is provided, an exception will be thrown. + * + * @param value - A number or string representation of a double. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseDouble: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use strictParseDouble + */ +export declare const strictParseFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a float. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by the standard + * parseFloat with one exception: NaN may only be explicitly set as the string + * "NaN", any implicit Nan values will result in an error being thrown. If any + * other type is provided, an exception will be thrown. + * + * @param value - A number or string representation of a float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseFloat32: (value: string | number) => number | undefined; +/** + * @internal + * + * Asserts a value is a number and returns it. If the value is a string + * representation of a non-numeric number type (NaN, Infinity, -Infinity), + * the value will be parsed. Any other string value will result in an exception + * being thrown. Null or undefined will be returned as undefined. Any other + * type will result in an exception being thrown. + * + * @param value - A number or string representation of a non-numeric float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const limitedParseDouble: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use limitedParseDouble + */ +export declare const handleFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use limitedParseDouble + */ +export declare const limitedParseFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit float and returns it. If the value is a string + * representation of a non-numeric number type (NaN, Infinity, -Infinity), + * the value will be parsed. Any other string value will result in an exception + * being thrown. Null or undefined will be returned as undefined. Any other + * type will result in an exception being thrown. + * + * @param value - A number or string representation of a non-numeric float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const limitedParseFloat32: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into an integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of an integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseLong: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use strictParseLong + */ +export declare const strictParseInt: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a 32-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of a 32-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseInt32: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a 16-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of a 16-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseShort: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into an 8-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of an 8-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseByte: (value: string | number) => number | undefined; +/** + * @internal + */ +export declare const logger: { + warn: { + (...data: any[]): void; + (message?: any, ...optionalParams: any[]): void; + }; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts new file mode 100644 index 0000000..73d6c16 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/quote-header.d.ts @@ -0,0 +1,6 @@ +/** + * @public + * @param part - header list element + * @returns quoted string if part contains delimiter. + */ +export declare function quoteHeader(part: string): string; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts new file mode 100644 index 0000000..096ac36 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/schema-serde-lib/schema-date-utils.d.ts @@ -0,0 +1,47 @@ +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a number or a parseable string. + * + * Input strings must be an integer or floating point number. Fractional seconds are supported. + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const _parseEpochTimestamp: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and can have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const _parseRfc3339DateTimeWithOffset: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 7231 date. + * + * Input strings must conform to RFC7231 section 7.1.1.1. Fractional seconds are supported. + * + * RFC 850 and unix asctime formats are also accepted. + * todo: practically speaking, are RFC 850 and asctime even used anymore? + * todo: can we remove those parts? + * + * @see {@link https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1} + * + * @param value - the value to parse. + * @returns a Date or undefined. + */ +export declare const _parseRfc7231DateTime: (value: unknown) => Date | undefined; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts new file mode 100644 index 0000000..45a0229 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/split-every.d.ts @@ -0,0 +1,11 @@ +/** + * @internal + * + * Given an input string, splits based on the delimiter after a given + * number of delimiters has been encountered. + * + * @param value - The input string to split. + * @param delimiter - The delimiter to split on. + * @param numDelimiters - The number of delimiters to have encountered to split. + */ +export declare function splitEvery(value: string, delimiter: string, numDelimiters: number): Array; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts new file mode 100644 index 0000000..0f51651 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/split-header.d.ts @@ -0,0 +1,5 @@ +/** + * @param value - header string value. + * @returns value split by commas that aren't in quotes. + */ +export declare const splitHeader: (value: string) => string[]; diff --git a/bff/node_modules/@smithy/core/dist-types/submodules/serde/value/NumericValue.d.ts b/bff/node_modules/@smithy/core/dist-types/submodules/serde/value/NumericValue.d.ts new file mode 100644 index 0000000..f9da63d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/submodules/serde/value/NumericValue.d.ts @@ -0,0 +1,33 @@ +/** + * Types which may be represented by {@link NumericValue}. + * + * There is currently only one option, because BigInteger and Long should + * use JS BigInt directly, and all other numeric types can be contained in JS Number. + * + * @public + */ +export type NumericType = "bigDecimal"; +/** + * Serialization container for Smithy simple types that do not have a + * direct JavaScript runtime representation. + * + * This container does not perform numeric mathematical operations. + * It is a container for discerning a value's true type. + * + * It allows storage of numeric types not representable in JS without + * making a decision on what numeric library to use. + * + * @public + */ +export declare class NumericValue { + readonly string: string; + readonly type: NumericType; + constructor(string: string, type: NumericType); + toString(): string; + static [Symbol.hasInstance](object: unknown): boolean; +} +/** + * Serde shortcut. + * @internal + */ +export declare function nv(input: string | unknown): NumericValue; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/getSmithyContext.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/getSmithyContext.d.ts new file mode 100644 index 0000000..14cd7c4 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/getSmithyContext.d.ts @@ -0,0 +1,5 @@ +import { HandlerExecutionContext } from "@smithy/types"; +/** + * @internal + */ +export declare const getSmithyContext: (context: HandlerExecutionContext) => Record; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..107c5e2 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +export * from "./getSmithyContext"; +export * from "./middleware-http-auth-scheme"; +export * from "./middleware-http-signing"; +export * from "./normalizeProvider"; +export { createPaginator } from "./pagination/createPaginator"; +export * from "./request-builder/requestBuilder"; +export * from "./setFeature"; +export * from "./util-identity-and-auth"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts new file mode 100644 index 0000000..27e2e26 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.d.ts @@ -0,0 +1,18 @@ +import { HandlerExecutionContext, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, IdentityProviderConfig, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import { PreviouslyResolved } from "./httpAuthSchemeMiddleware"; +/** + * @internal + */ +export declare const httpAuthSchemeEndpointRuleSetMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +interface HttpAuthSchemeEndpointRuleSetPluginOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +export declare const getHttpAuthSchemeEndpointRuleSetPlugin: (config: TConfig & PreviouslyResolved, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }: HttpAuthSchemeEndpointRuleSetPluginOptions) => Pluggable; +export {}; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts new file mode 100644 index 0000000..531e6ec --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/getHttpAuthSchemePlugin.d.ts @@ -0,0 +1,18 @@ +import { HandlerExecutionContext, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, IdentityProviderConfig, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import { PreviouslyResolved } from "./httpAuthSchemeMiddleware"; +/** + * @internal + */ +export declare const httpAuthSchemeMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +interface HttpAuthSchemePluginOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +export declare const getHttpAuthSchemePlugin: (config: TConfig & PreviouslyResolved, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }: HttpAuthSchemePluginOptions) => Pluggable; +export {}; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts new file mode 100644 index 0000000..bbeaf5f --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/httpAuthSchemeMiddleware.d.ts @@ -0,0 +1,33 @@ +import { HandlerExecutionContext, HttpAuthScheme, HttpAuthSchemeParameters, HttpAuthSchemeParametersProvider, HttpAuthSchemeProvider, IdentityProviderConfig, Provider, SelectedHttpAuthScheme, SerializeMiddleware, SMITHY_CONTEXT_KEY } from "@smithy/types"; +/** + * @internal + */ +export interface PreviouslyResolved { + authSchemePreference?: Provider; + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: HttpAuthSchemeProvider; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareOptions { + httpAuthSchemeParametersProvider: HttpAuthSchemeParametersProvider; + identityProviderConfigProvider: (config: TConfig) => Promise; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareSmithyContext extends Record { + selectedHttpAuthScheme?: SelectedHttpAuthScheme; +} +/** + * @internal + */ +interface HttpAuthSchemeMiddlewareHandlerExecutionContext extends HandlerExecutionContext { + [SMITHY_CONTEXT_KEY]?: HttpAuthSchemeMiddlewareSmithyContext; +} +/** + * @internal + */ +export declare const httpAuthSchemeMiddleware: (config: TConfig & PreviouslyResolved, mwOptions: HttpAuthSchemeMiddlewareOptions) => SerializeMiddleware; +export {}; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/index.d.ts new file mode 100644 index 0000000..2f275c5 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/index.d.ts @@ -0,0 +1,3 @@ +export * from "./httpAuthSchemeMiddleware"; +export * from "./getHttpAuthSchemeEndpointRuleSetPlugin"; +export * from "./getHttpAuthSchemePlugin"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/resolveAuthOptions.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/resolveAuthOptions.d.ts new file mode 100644 index 0000000..8088683 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-auth-scheme/resolveAuthOptions.d.ts @@ -0,0 +1,10 @@ +import { HttpAuthOption } from "@smithy/types"; +/** + * Resolves list of auth options based on the supported ones, vs the preference list. + * + * @param candidateAuthOptions list of supported auth options selected by the standard + * resolution process (model-based, endpoints 2.0, etc.) + * @param authSchemePreference list of auth schemes preferred by user. + * @returns + */ +export declare const resolveAuthOptions: (candidateAuthOptions: HttpAuthOption[], authSchemePreference: string[]) => HttpAuthOption[]; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/getHttpSigningMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/getHttpSigningMiddleware.d.ts new file mode 100644 index 0000000..a01bb31 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/getHttpSigningMiddleware.d.ts @@ -0,0 +1,9 @@ +import { FinalizeRequestHandlerOptions, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const httpSigningMiddlewareOptions: FinalizeRequestHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getHttpSigningPlugin: (config: object) => Pluggable; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/httpSigningMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/httpSigningMiddleware.d.ts new file mode 100644 index 0000000..7a86b0b --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/httpSigningMiddleware.d.ts @@ -0,0 +1,5 @@ +import { FinalizeRequestMiddleware } from "@smithy/types"; +/** + * @internal + */ +export declare const httpSigningMiddleware: (config: object) => FinalizeRequestMiddleware; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/index.d.ts new file mode 100644 index 0000000..578f26d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/middleware-http-signing/index.d.ts @@ -0,0 +1,2 @@ +export * from "./httpSigningMiddleware"; +export * from "./getHttpSigningMiddleware"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/normalizeProvider.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/normalizeProvider.d.ts new file mode 100644 index 0000000..594e8fa --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/normalizeProvider.d.ts @@ -0,0 +1,7 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + * + * @returns a provider function for the input value if it isn't already one. + */ +export declare const normalizeProvider: (input: T | Provider) => Provider; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/pagination/createPaginator.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/pagination/createPaginator.d.ts new file mode 100644 index 0000000..50400d8 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/pagination/createPaginator.d.ts @@ -0,0 +1,7 @@ +import { PaginationConfiguration, Paginator } from "@smithy/types"; +/** + * @internal + * + * Creates a paginator. + */ +export declare function createPaginator(ClientCtor: any, CommandCtor: any, inputTokenName: string, outputTokenName: string, pageSizeTokenName?: string): (config: PaginationConfigType, input: InputType, ...additionalArguments: any[]) => Paginator; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/request-builder/requestBuilder.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/request-builder/requestBuilder.d.ts new file mode 100644 index 0000000..25459a8 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/request-builder/requestBuilder.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { requestBuilder } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts new file mode 100644 index 0000000..a1995ab --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts @@ -0,0 +1,12 @@ +import { HandlerExecutionContext, SmithyFeatures } from "@smithy/types"; +/** + * @internal + * Indicates to the request context that a given feature is active. + * + * @param context - handler execution context. + * @param feature - readable name of feature. + * @param value - encoding value of feature. This is required because the + * specification asks the library not to include a runtime lookup of all + * the feature identifiers. + */ +export declare function setFeature(context: HandlerExecutionContext, feature: F, value: SmithyFeatures[F]): void; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts new file mode 100644 index 0000000..40ced68 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/CborCodec.d.ts @@ -0,0 +1,33 @@ +import { SerdeContext } from "@smithy/core/protocols"; +import { Codec, Schema, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +/** + * @public + */ +export declare class CborCodec extends SerdeContext implements Codec { + createSerializer(): CborShapeSerializer; + createDeserializer(): CborShapeDeserializer; +} +/** + * @public + */ +export declare class CborShapeSerializer extends SerdeContext implements ShapeSerializer { + private value; + write(schema: Schema, value: unknown): void; + /** + * Recursive serializer transform that copies and prepares the user input object + * for CBOR serialization. + */ + serialize(schema: Schema, source: unknown): any; + flush(): Uint8Array; +} +/** + * @public + */ +export declare class CborShapeDeserializer extends SerdeContext implements ShapeDeserializer { + read(schema: Schema, bytes: Uint8Array): any; + /** + * Public because it's called by the protocol implementation to deserialize errors. + * @internal + */ + readValue(_schema: Schema, value: any): any; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts new file mode 100644 index 0000000..c49b2a2 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/SmithyRpcV2CborProtocol.d.ts @@ -0,0 +1,28 @@ +import { RpcProtocol } from "@smithy/core/protocols"; +import { TypeRegistry } from "@smithy/core/schema"; +import { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, SerdeFunctions } from "@smithy/types"; +import { CborCodec } from "./CborCodec"; +/** + * Client protocol for Smithy RPCv2 CBOR. + * + * @public + */ +export declare class SmithyRpcV2CborProtocol extends RpcProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + private codec; + protected serializer: import("./CborCodec").CborShapeSerializer; + protected deserializer: import("./CborCodec").CborShapeDeserializer; + constructor({ defaultNamespace, errorTypeRegistries, }: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + getShapeId(): string; + getPayloadCodec(): CborCodec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + protected handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + protected getDefaultContentType(): string; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/byte-printer.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/byte-printer.d.ts new file mode 100644 index 0000000..5f1a1d7 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/byte-printer.d.ts @@ -0,0 +1,6 @@ +/** + * Prints bytes as binary string with numbers. + * @param bytes - to print. + * @deprecated for testing only, do not use in runtime. + */ +export declare function printBytes(bytes: Uint8Array): string[]; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-decode.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-decode.d.ts new file mode 100644 index 0000000..9ddc992 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-decode.d.ts @@ -0,0 +1,17 @@ +import { CborValueType, Float32, Uint8, Uint32 } from "./cbor-types"; +/** + * @internal + * @param bytes - to be set as the decode source. + * + * Sets the decode bytearray source and its data view. + */ +export declare function setPayload(bytes: Uint8Array): void; +/** + * @internal + * Decodes the data between the two indices. + */ +export declare function decode(at: Uint32, to: Uint32): CborValueType; +/** + * @internal + */ +export declare function bytesToFloat16(a: Uint8, b: Uint8): Float32; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-encode.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-encode.d.ts new file mode 100644 index 0000000..83218b5 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-encode.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + */ +export declare function toUint8Array(): Uint8Array; +export declare function resize(size: number): void; +/** + * @param _input - JS data object. + */ +export declare function encode(_input: any): void; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts new file mode 100644 index 0000000..7ef9039 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts @@ -0,0 +1,65 @@ +export type CborItemType = undefined | boolean | number | bigint | [ + CborUnstructuredByteStringType, + Uint64 +] | string | CborTagType; +export type CborTagType = { + tag: Uint64 | number; + value: CborValueType; + [tagSymbol]: true; +}; +export type CborUnstructuredByteStringType = Uint8Array; +export type CborListType = Array; +export type CborMapType = Record; +export type CborCollectionType = CborMapType | CborListType; +export type CborValueType = CborItemType | CborCollectionType | any; +export type CborArgumentLength = 1 | 2 | 4 | 8; +export type CborArgumentLengthOffset = 1 | 2 | 3 | 5 | 9; +export type CborOffset = number; +export type Uint8 = number; +export type Uint32 = number; +export type Uint64 = bigint; +export type Float32 = number; +export type Int64 = bigint; +export type Float16Binary = number; +export type Float32Binary = number; +export type CborMajorType = typeof majorUint64 | typeof majorNegativeInt64 | typeof majorUnstructuredByteString | typeof majorUtf8String | typeof majorList | typeof majorMap | typeof majorTag | typeof majorSpecial; +export declare const majorUint64 = 0; +export declare const majorNegativeInt64 = 1; +export declare const majorUnstructuredByteString = 2; +export declare const majorUtf8String = 3; +export declare const majorList = 4; +export declare const majorMap = 5; +export declare const majorTag = 6; +export declare const majorSpecial = 7; +export declare const specialFalse = 20; +export declare const specialTrue = 21; +export declare const specialNull = 22; +export declare const specialUndefined = 23; +export declare const extendedOneByte = 24; +export declare const extendedFloat16 = 25; +export declare const extendedFloat32 = 26; +export declare const extendedFloat64 = 27; +export declare const minorIndefinite = 31; +export declare function alloc(size: number): Uint8Array; +/** + * @public + * + * The presence of this symbol as an object key indicates it should be considered a tag + * for CBOR serialization purposes. + * + * The object must also have the properties "tag" and "value". + */ +export declare const tagSymbol: unique symbol; +/** + * @public + * Applies the tag symbol to the object. + */ +export declare function tag(data: { + tag: number | bigint; + value: any; + [tagSymbol]?: true; +}): { + tag: number | bigint; + value: any; + [tagSymbol]: true; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor.d.ts new file mode 100644 index 0000000..d317890 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor.d.ts @@ -0,0 +1,26 @@ +/** + * This implementation is synchronous and only implements the parts of CBOR + * specification used by Smithy RPCv2 CBOR protocol. + * + * This cbor serde implementation is derived from AWS SDK for Go's implementation. + * @see https://github.com/aws/smithy-go/tree/main/encoding/cbor + * + * The cbor-x implementation was also instructional: + * @see https://github.com/kriszyp/cbor-x + */ +export declare const cbor: { + deserialize(payload: Uint8Array): any; + serialize(input: any): Uint8Array; + /** + * @public + * @param size - byte length to allocate. + * + * This may be used to garbage collect the CBOR + * shared encoding buffer space, + * e.g. resizeEncodingBuffer(0); + * + * This may also be used to pre-allocate more space for + * CBOR encoding, e.g. resizeEncodingBuffer(100_000_000); + */ + resizeEncodingBuffer(size: number): void; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts new file mode 100644 index 0000000..e5f5983 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts @@ -0,0 +1,5 @@ +export { cbor } from "./cbor"; +export { tag, tagSymbol } from "./cbor-types"; +export * from "./parseCborBody"; +export * from "./SmithyRpcV2CborProtocol"; +export * from "./CborCodec"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts new file mode 100644 index 0000000..85df3bb --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts @@ -0,0 +1,31 @@ +import { HttpRequest as __HttpRequest } from "@smithy/protocol-http"; +import { HeaderBag as __HeaderBag, HttpResponse, SerdeContext as __SerdeContext, SerdeContext } from "@smithy/types"; +import { tagSymbol } from "./cbor-types"; +/** + * @internal + */ +export declare const parseCborBody: (streamBody: any, context: SerdeContext) => any; +/** + * @internal + */ +export declare const dateToTag: (date: Date) => { + tag: number | bigint; + value: any; + [tagSymbol]: true; +}; +/** + * @internal + */ +export declare const parseCborErrorBody: (errorBody: any, context: SerdeContext) => Promise; +/** + * @internal + */ +export declare const loadSmithyRpcV2CborErrorCode: (output: HttpResponse, data: any) => string | undefined; +/** + * @internal + */ +export declare const checkCborResponse: (response: HttpResponse) => void; +/** + * @internal + */ +export declare const buildHttpRpcRequest: (context: __SerdeContext, headers: __HeaderBag, path: string, resolvedHostname: string | undefined, body: any) => Promise<__HttpRequest>; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/index.d.ts new file mode 100644 index 0000000..c22bcd4 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/index.d.ts @@ -0,0 +1 @@ +export * from "./toEndpointV1"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/toEndpointV1.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/toEndpointV1.d.ts new file mode 100644 index 0000000..6c44627 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/endpoints/toEndpointV1.d.ts @@ -0,0 +1,6 @@ +import { Endpoint, EndpointV2 } from "@smithy/types"; +/** + * Converts an endpoint to EndpointV1 format. + * @internal + */ +export declare const toEndpointV1: (endpoint: string | Endpoint | EndpointV2) => Endpoint; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/EventStreamSerde.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/EventStreamSerde.d.ts new file mode 100644 index 0000000..bd61d51 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/EventStreamSerde.d.ts @@ -0,0 +1,60 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { EventStreamMarshaller, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +/** + * Separated module for async mixin of EventStream serde capability. + * This is used by the HttpProtocol base class from \@smithy/core/protocols. + * + * @public + */ +export declare class EventStreamSerde { + private readonly marshaller; + private readonly serializer; + private readonly deserializer; + private readonly serdeContext?; + private readonly defaultContentType; + /** + * Properties are injected by the HttpProtocol. + */ + constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType, }: { + marshaller: EventStreamMarshaller; + serializer: ShapeSerializer; + deserializer: ShapeDeserializer; + serdeContext?: SerdeFunctions; + defaultContentType: string; + }); + /** + * @param eventStream - the iterable provided by the caller. + * @param requestSchema - the schema of the event stream container (struct). + * @param [initialRequest] - only provided if the initial-request is part of the event stream (RPC). + * + * @returns a stream suitable for the HTTP body of a request. + */ + serializeEventStream({ eventStream, requestSchema, initialRequest, }: { + eventStream: AsyncIterable; + requestSchema: NormalizedSchema; + initialRequest?: any; + }): Promise; + /** + * @param response - http response from which to read the event stream. + * @param unionSchema - schema of the event stream container (struct). + * @param [initialResponseContainer] - provided and written to only if the initial response is part of the event stream (RPC). + * + * @returns the asyncIterable of the event stream for the end-user. + */ + deserializeEventStream({ response, responseSchema, initialResponseContainer, }: { + response: IHttpResponse; + responseSchema: NormalizedSchema; + initialResponseContainer?: any; + }): Promise>; + /** + * @param unionMember - member name within the structure that contains an event stream union. + * @param unionSchema - schema of the union. + * @param event + * + * @returns the event body (bytes) and event type (string). + */ + private writeEventBody; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/index.d.ts new file mode 100644 index 0000000..e1ef846 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/event-streams/index.d.ts @@ -0,0 +1 @@ +export * from "./EventStreamSerde"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts new file mode 100644 index 0000000..43eed0d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpBindingProtocol.d.ts @@ -0,0 +1,31 @@ +import { TypeRegistry, NormalizedSchema } from "@smithy/core/schema"; +import { HttpRequest } from "@smithy/protocol-http"; +import { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, Schema, SerdeFunctions } from "@smithy/types"; +import { HttpProtocol } from "./HttpProtocol"; +/** + * Base for HTTP-binding protocols. Downstream examples + * include AWS REST JSON and AWS REST XML. + * + * @public + */ +export declare abstract class HttpBindingProtocol extends HttpProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + serializeRequest(operationSchema: OperationSchema, _input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + protected serializeQuery(ns: NormalizedSchema, data: any, query: HttpRequest["query"]): void; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + /** + * The base method ignores HTTP bindings. + * + * @deprecated (only this signature) use signature without headerBindings. + * @override + */ + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, headerBindings: Set, dataObject: any): Promise; + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts new file mode 100644 index 0000000..94a912b --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/HttpProtocol.d.ts @@ -0,0 +1,89 @@ +import { EventStreamSerde } from "@smithy/core/event-streams"; +import { NormalizedSchema, TypeRegistry } from "@smithy/core/schema"; +import { ClientProtocol, Codec, Endpoint, EndpointBearer, EndpointV2, EventStreamMarshaller, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, ResponseMetadata, Schema, SerdeFunctions, ShapeDeserializer, ShapeSerializer } from "@smithy/types"; +import { SerdeContext } from "./SerdeContext"; +/** + * Abstract base for HTTP-based client protocols. + * + * @public + */ +export declare abstract class HttpProtocol extends SerdeContext implements ClientProtocol { + readonly options: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }; + /** + * An error registry having the namespace of the modeled service, + * but combining all error schemas found within the service closure. + * + * Used to look up error schema during deserialization. + */ + protected compositeErrorRegistry: TypeRegistry; + protected abstract serializer: ShapeSerializer; + protected abstract deserializer: ShapeDeserializer; + /** + * @param options.defaultNamespace - used by various implementing classes. + * @param options.errorTypeRegistries - registry instances that contribute to error deserialization. + */ + protected constructor(options: { + defaultNamespace: string; + errorTypeRegistries?: TypeRegistry[]; + }); + abstract getShapeId(): string; + abstract getPayloadCodec(): Codec; + getRequestType(): new (...args: any[]) => IHttpRequest; + getResponseType(): new (...args: any[]) => IHttpResponse; + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + abstract serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: IHttpRequest, endpoint: EndpointV2 | Endpoint): IHttpRequest; + abstract deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; + protected setHostPrefix(request: IHttpRequest, operationSchema: OperationSchema, input: Input): void; + protected abstract handleError(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any, metadata: ResponseMetadata): Promise; + protected deserializeMetadata(output: IHttpResponse): ResponseMetadata; + /** + * @param eventStream - the iterable provided by the caller. + * @param requestSchema - the schema of the event stream container (struct). + * @param [initialRequest] - only provided if the initial-request is part of the event stream (RPC). + * + * @returns a stream suitable for the HTTP body of a request. + */ + protected serializeEventStream({ eventStream, requestSchema, initialRequest, }: { + eventStream: AsyncIterable; + requestSchema: NormalizedSchema; + initialRequest?: any; + }): Promise; + /** + * @param response - http response from which to read the event stream. + * @param unionSchema - schema of the event stream container (struct). + * @param [initialResponseContainer] - provided and written to only if the initial response is part of the event stream (RPC). + * + * @returns the asyncIterable of the event stream. + */ + protected deserializeEventStream({ response, responseSchema, initialResponseContainer, }: { + response: IHttpResponse; + responseSchema: NormalizedSchema; + initialResponseContainer?: any; + }): Promise>; + /** + * Loads eventStream capability async (for chunking). + */ + protected loadEventStreamCapability(): Promise; + /** + * @returns content-type default header value for event stream events and other documents. + */ + protected getDefaultContentType(): string; + /** + * For HTTP binding protocols, this method is overridden in {@link HttpBindingProtocol}. + * + * @deprecated only use this for HTTP binding protocols. + */ + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, headerBindings: Set, dataObject: any): Promise; + protected deserializeHttpMessage(schema: Schema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse, dataObject: any): Promise; + protected getEventStreamMarshaller(): EventStreamMarshaller; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts new file mode 100644 index 0000000..bd9818f --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/RpcProtocol.d.ts @@ -0,0 +1,16 @@ +import { TypeRegistry } from "@smithy/core/schema"; +import { EndpointBearer, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, MetadataBearer, OperationSchema, SerdeFunctions } from "@smithy/types"; +import { HttpProtocol } from "./HttpProtocol"; +/** + * Abstract base for RPC-over-HTTP protocols. + * + * @public + */ +export declare abstract class RpcProtocol extends HttpProtocol { + /** + * @override + */ + protected compositeErrorRegistry: TypeRegistry; + serializeRequest(operationSchema: OperationSchema, _input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: IHttpResponse): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/SerdeContext.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/SerdeContext.d.ts new file mode 100644 index 0000000..7d7cc7e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/SerdeContext.d.ts @@ -0,0 +1,16 @@ +import { ConfigurableSerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * This in practice should be the client config object. + * @internal + */ +type SerdeContextType = SerdeFunctions & { + disableHostPrefix?: boolean; +}; +/** + * @internal + */ +export declare abstract class SerdeContext implements ConfigurableSerdeContext { + protected serdeContext?: SerdeContextType; + setSerdeContext(serdeContext: SerdeContextType): void; +} +export {}; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts new file mode 100644 index 0000000..eef364b --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts @@ -0,0 +1,10 @@ +import { SerdeContext } from "@smithy/types"; +import { Uint8ArrayBlobAdapter } from "@smithy/util-stream"; +/** + * @internal + * + * Collect low-level response body stream to Uint8Array. + */ +export declare const collectBody: (streamBody: any | undefined, context: { + streamCollector: SerdeContext["streamCollector"]; +}) => Promise; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts new file mode 100644 index 0000000..98c3802 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Function that wraps encodeURIComponent to encode additional characters + * to fully adhere to RFC 3986. + */ +export declare function extendedEncodeURIComponent(str: string): string; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts new file mode 100644 index 0000000..d1606bc --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts @@ -0,0 +1,13 @@ +export * from "./collect-stream-body"; +export * from "./extended-encode-uri-component"; +export * from "./HttpBindingProtocol"; +export * from "./HttpProtocol"; +export * from "./RpcProtocol"; +export * from "./requestBuilder"; +export * from "./resolve-path"; +export * from "./serde/FromStringShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeDeserializer"; +export * from "./serde/HttpInterceptingShapeSerializer"; +export * from "./serde/ToStringShapeSerializer"; +export * from "./serde/determineTimestampFormat"; +export * from "./SerdeContext"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts new file mode 100644 index 0000000..0449354 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts @@ -0,0 +1,51 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { SerdeContext } from "@smithy/types"; +/** + * @internal + * used in code-generated serde. + */ +export declare function requestBuilder(input: any, context: SerdeContext): RequestBuilder; +/** + * @internal + */ +export declare class RequestBuilder { + private input; + private context; + private query; + private method; + private headers; + private path; + private body; + private hostname; + private resolvePathStack; + constructor(input: any, context: SerdeContext); + build(): Promise; + /** + * Brevity setter for "hostname". + */ + hn(hostname: string): this; + /** + * Brevity initial builder for "basepath". + */ + bp(uriLabel: string): this; + /** + * Brevity incremental builder for "path". + */ + p(memberName: string, labelValueProvider: () => string | undefined, uriLabel: string, isGreedyLabel: boolean): this; + /** + * Brevity setter for "headers". + */ + h(headers: Record): this; + /** + * Brevity setter for "query". + */ + q(query: Record): this; + /** + * Brevity setter for "body". + */ + b(body: any): this; + /** + * Brevity setter for "method". + */ + m(method: string): this; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts new file mode 100644 index 0000000..4c4c443 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const resolvedPath: (resolvedPath: string, input: unknown, memberName: string, labelValueProvider: () => string | undefined, uriLabel: string, isGreedyLabel: boolean) => string; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts new file mode 100644 index 0000000..d4195b4 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/FromStringShapeDeserializer.d.ts @@ -0,0 +1,13 @@ +import { CodecSettings, Schema, ShapeDeserializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * This deserializer reads strings. + * + * @public + */ +export declare class FromStringShapeDeserializer extends SerdeContext implements ShapeDeserializer { + private settings; + constructor(settings: CodecSettings); + read(_schema: Schema, data: string): any; + private base64ToUtf8; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts new file mode 100644 index 0000000..b98149c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeDeserializer.d.ts @@ -0,0 +1,21 @@ +import { CodecSettings, Schema, SerdeFunctions, ShapeDeserializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * This deserializer is a dispatcher that decides whether to use a string deserializer + * or a codec deserializer based on HTTP traits. + * + * For example, in a JSON HTTP message, the deserialization of a field will differ depending on whether + * it is bound to the HTTP header (string) or body (JSON). + * + * @public + */ +export declare class HttpInterceptingShapeDeserializer> extends SerdeContext implements ShapeDeserializer { + private codecDeserializer; + private stringDeserializer; + constructor(codecDeserializer: CodecShapeDeserializer, codecSettings: CodecSettings); + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + read(schema: Schema, data: string | Uint8Array): any | Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts new file mode 100644 index 0000000..482240a --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/HttpInterceptingShapeSerializer.d.ts @@ -0,0 +1,23 @@ +import { CodecSettings, ConfigurableSerdeContext, Schema as ISchema, SerdeFunctions, ShapeSerializer } from "@smithy/types"; +import { ToStringShapeSerializer } from "./ToStringShapeSerializer"; +/** + * This serializer decides whether to dispatch to a string serializer or a codec serializer + * depending on HTTP binding traits within the given schema. + * + * For example, a JavaScript array is serialized differently when being written + * to a REST JSON HTTP header (comma-delimited string) and a REST JSON HTTP body (JSON array). + * + * @public + */ +export declare class HttpInterceptingShapeSerializer> implements ShapeSerializer, ConfigurableSerdeContext { + private codecSerializer; + private stringSerializer; + private buffer; + constructor(codecSerializer: CodecShapeSerializer, codecSettings: CodecSettings, stringSerializer?: ToStringShapeSerializer); + /** + * @override + */ + setSerdeContext(serdeContext: SerdeFunctions): void; + write(schema: ISchema, value: unknown): void; + flush(): string | Uint8Array; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts new file mode 100644 index 0000000..4c40b4f --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/ToStringShapeSerializer.d.ts @@ -0,0 +1,14 @@ +import { CodecSettings, Schema, ShapeSerializer } from "@smithy/types"; +import { SerdeContext } from "../SerdeContext"; +/** + * Serializes a shape to string. + * + * @public + */ +export declare class ToStringShapeSerializer extends SerdeContext implements ShapeSerializer { + private settings; + private stringBuffer; + constructor(settings: CodecSettings); + write(schema: Schema, value: unknown): void; + flush(): string; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts new file mode 100644 index 0000000..ff4ff6e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/serde/determineTimestampFormat.d.ts @@ -0,0 +1,9 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +import { CodecSettings, TimestampDateTimeSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "@smithy/types"; +/** + * Assuming the schema is a timestamp type, the function resolves the format using + * either the timestamp's own traits, or the default timestamp format from the CodecSettings. + * + * @internal + */ +export declare function determineTimestampFormat(ns: NormalizedSchema, settings: CodecSettings): TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts new file mode 100644 index 0000000..5fd6e51 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/TypeRegistry.d.ts @@ -0,0 +1,71 @@ +import { Schema as ISchema, StaticErrorSchema } from "@smithy/types"; +import { ErrorSchema } from "./schemas/ErrorSchema"; +/** + * A way to look up schema by their ShapeId values. + * + * @public + */ +export declare class TypeRegistry { + readonly namespace: string; + private schemas; + private exceptions; + static readonly registries: Map; + private constructor(); + /** + * @param namespace - specifier. + * @returns the schema for that namespace, creating it if necessary. + */ + static for(namespace: string): TypeRegistry; + /** + * Copies entries from another instance without changing the namespace of self. + * The composition is additive but non-destructive and will not overwrite existing entries. + * + * @param other - another TypeRegistry. + */ + copyFrom(other: TypeRegistry): void; + /** + * Adds the given schema to a type registry with the same namespace, and this registry. + * + * @param shapeId - to be registered. + * @param schema - to be registered. + */ + register(shapeId: string, schema: ISchema): void; + /** + * @param shapeId - query. + * @returns the schema. + */ + getSchema(shapeId: string): ISchema; + /** + * Associates an error schema with its constructor. + */ + registerError(es: ErrorSchema | StaticErrorSchema, ctor: any): void; + /** + * @param es - query. + * @returns Error constructor that extends the service's base exception. + */ + getErrorCtor(es: ErrorSchema | StaticErrorSchema): any; + /** + * The smithy-typescript code generator generates a synthetic (i.e. unmodeled) base exception, + * because generated SDKs before the introduction of schemas have the notion of a ServiceBaseException, which + * is unique per service/model. + * + * This is generated under a unique prefix that is combined with the service namespace, and this + * method is used to retrieve it. + * + * The base exception synthetic schema is used when an error is returned by a service, but we cannot + * determine what existing schema to use to deserialize it. + * + * @returns the synthetic base exception of the service namespace associated with this registry instance. + */ + getBaseException(): StaticErrorSchema | undefined; + /** + * @param predicate - criterion. + * @returns a schema in this registry matching the predicate. + */ + find(predicate: (schema: ISchema) => boolean): ISchema | undefined; + /** + * Unloads the current TypeRegistry. + */ + clear(): void; + private normalizeShapeId; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/deref.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/deref.d.ts new file mode 100644 index 0000000..0dc2b34 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/deref.d.ts @@ -0,0 +1,6 @@ +import { Schema, SchemaRef } from "@smithy/types"; +/** + * Dereferences a SchemaRef if needed. + * @internal + */ +export declare const deref: (schemaRef: SchemaRef) => Schema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts new file mode 100644 index 0000000..80efda1 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/index.d.ts @@ -0,0 +1,14 @@ +export * from "./deref"; +export * from "./middleware/getSchemaSerdePlugin"; +export * from "./schemas/ListSchema"; +export * from "./schemas/MapSchema"; +export * from "./schemas/OperationSchema"; +export * from "./schemas/operation"; +export * from "./schemas/ErrorSchema"; +export * from "./schemas/NormalizedSchema"; +export * from "./schemas/Schema"; +export * from "./schemas/SimpleSchema"; +export * from "./schemas/StructureSchema"; +export * from "./schemas/sentinels"; +export * from "./schemas/translateTraits"; +export * from "./TypeRegistry"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts new file mode 100644 index 0000000..da39c48 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/getSchemaSerdePlugin.d.ts @@ -0,0 +1,14 @@ +import { DeserializeHandlerOptions, MetadataBearer, Pluggable, SerializeHandlerOptions } from "@smithy/types"; +import { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const deserializerMiddlewareOption: DeserializeHandlerOptions; +/** + * @internal + */ +export declare const serializerMiddlewareOption: SerializeHandlerOptions; +/** + * @internal + */ +export declare function getSchemaSerdePlugin(config: PreviouslyResolved): Pluggable; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts new file mode 100644 index 0000000..002eb84 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schema-middleware-types.d.ts @@ -0,0 +1,11 @@ +import { ClientProtocol, SerdeContext, UrlParser } from "@smithy/types"; +/** + * @internal + */ +export type PreviouslyResolved = Pick; +}, Exclude; +}), "endpoint">>; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts new file mode 100644 index 0000000..a601ea8 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaDeserializationMiddleware.d.ts @@ -0,0 +1,9 @@ +import { DeserializeHandler, DeserializeHandlerArguments, HandlerExecutionContext } from "@smithy/types"; +import { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const schemaDeserializationMiddleware: (config: PreviouslyResolved) => (next: DeserializeHandler, context: HandlerExecutionContext) => (args: DeserializeHandlerArguments) => Promise<{ + response: unknown; + output: O; +}>; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts new file mode 100644 index 0000000..ed257eb --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/middleware/schemaSerializationMiddleware.d.ts @@ -0,0 +1,6 @@ +import { HandlerExecutionContext, SerializeHandler, SerializeHandlerArguments } from "@smithy/types"; +import { PreviouslyResolved } from "./schema-middleware-types"; +/** + * @internal + */ +export declare const schemaSerializationMiddleware: (config: PreviouslyResolved) => (next: SerializeHandler, context: HandlerExecutionContext) => (args: SerializeHandlerArguments) => Promise>; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts new file mode 100644 index 0000000..837643e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ErrorSchema.d.ts @@ -0,0 +1,37 @@ +import { SchemaRef, SchemaTraits } from "@smithy/types"; +import { StructureSchema } from "./StructureSchema"; +/** + * A schema for a structure shape having the error trait. These represent enumerated operation errors. + * Because Smithy-TS SDKs use classes for exceptions, whereas plain objects are used for all other data, + * and have an existing notion of a XYZServiceBaseException, the ErrorSchema differs from a StructureSchema + * by additionally holding the class reference for the corresponding ServiceException class. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class ErrorSchema extends StructureSchema { + static readonly symbol: unique symbol; + /** + * @deprecated - field unused. + */ + ctor: any; + protected readonly symbol: symbol; +} +/** + * Factory for ErrorSchema, to reduce codegen output and register the schema. + * + * @internal + * @deprecated use StaticSchema + * + * @param namespace - shapeId namespace. + * @param name - shapeId name. + * @param traits - shape level serde traits. + * @param memberNames - list of member names. + * @param memberList - list of schemaRef corresponding to each + * @param ctor - class reference for the existing Error extending class. + */ +export declare const error: (namespace: string, name: string, traits: SchemaTraits, memberNames: string[], memberList: SchemaRef[], +/** + * @deprecated - field unused. + */ +ctor?: any) => ErrorSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts new file mode 100644 index 0000000..96c1f06 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/ListSchema.d.ts @@ -0,0 +1,23 @@ +import { ListSchema as IListSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A schema with a single member schema. + * The deprecated Set type may be represented as a list. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class ListSchema extends Schema implements IListSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + valueSchema: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for ListSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const list: (namespace: string, name: string, traits: SchemaTraits, valueSchema: SchemaRef) => ListSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts new file mode 100644 index 0000000..4c5c8fd --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/MapSchema.d.ts @@ -0,0 +1,24 @@ +import { MapSchema as IMapSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A schema with a key schema and value schema. + * @internal + * @deprecated use StaticSchema + */ +export declare class MapSchema extends Schema implements IMapSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + /** + * This is expected to be StringSchema, but may have traits. + */ + keySchema: SchemaRef; + valueSchema: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for MapSchema. + * @internal + * @deprecated use StaticSchema + */ +export declare const map: (namespace: string, name: string, traits: SchemaTraits, keySchema: SchemaRef, valueSchema: SchemaRef) => MapSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts new file mode 100644 index 0000000..7337323 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/NormalizedSchema.d.ts @@ -0,0 +1,146 @@ +import { $MemberSchema, $Schema, $SchemaRef, NormalizedSchema as INormalizedSchema, SchemaRef, SchemaTraitsObject, StaticSchema } from "@smithy/types"; +/** + * Cache for numeric schemaRef. Having separate cache objects for number/string improves + * lookup performance. + * @internal + */ +export declare const simpleSchemaCacheN: Array; +/** + * Cache for string schemaRef. + * @internal + */ +export declare const simpleSchemaCacheS: Record; +/** + * Wraps both class instances, numeric sentinel values, and member schema pairs. + * Presents a consistent interface for interacting with polymorphic schema representations. + * + * @public + */ +export declare class NormalizedSchema implements INormalizedSchema { + readonly ref: $SchemaRef; + private readonly memberName?; + static readonly symbol: unique symbol; + protected readonly symbol: symbol; + private readonly name; + private readonly schema; + private readonly _isMemberSchema; + private readonly traits; + private readonly memberTraits; + private normalizedTraits?; + /** + * @param ref - a polymorphic SchemaRef to be dereferenced/normalized. + * @param memberName - optional memberName if this NormalizedSchema should be considered a member schema. + */ + private constructor(); + static [Symbol.hasInstance](lhs: unknown): lhs is NormalizedSchema; + /** + * Static constructor that attempts to avoid wrapping a NormalizedSchema within another. + */ + static of(ref: SchemaRef | $SchemaRef): NormalizedSchema; + /** + * @returns the underlying non-normalized schema. + */ + getSchema(): Exclude<$Schema, $MemberSchema | INormalizedSchema>; + /** + * @param withNamespace - qualifies the name. + * @returns e.g. `MyShape` or `com.namespace#MyShape`. + */ + getName(withNamespace?: boolean): string | undefined; + /** + * @returns the member name if the schema is a member schema. + */ + getMemberName(): string; + isMemberSchema(): boolean; + /** + * boolean methods on this class help control flow in shape serialization and deserialization. + */ + isListSchema(): boolean; + isMapSchema(): boolean; + /** + * To simplify serialization logic, static union schemas are considered a specialization + * of structs in the TypeScript typings and JS runtime, as well as static error schemas + * which have a different identifier. + */ + isStructSchema(): boolean; + isUnionSchema(): boolean; + isBlobSchema(): boolean; + isTimestampSchema(): boolean; + isUnitSchema(): boolean; + isDocumentSchema(): boolean; + isStringSchema(): boolean; + isBooleanSchema(): boolean; + isNumericSchema(): boolean; + isBigIntegerSchema(): boolean; + isBigDecimalSchema(): boolean; + isStreaming(): boolean; + /** + * @returns whether the schema has the idempotencyToken trait. + */ + isIdempotencyToken(): boolean; + /** + * @returns own traits merged with member traits, where member traits of the same trait key take priority. + * This method is cached. + */ + getMergedTraits(): SchemaTraitsObject; + /** + * @returns only the member traits. If the schema is not a member, this returns empty. + */ + getMemberTraits(): SchemaTraitsObject; + /** + * @returns only the traits inherent to the shape or member target shape if this schema is a member. + * If there are any member traits they are excluded. + */ + getOwnTraits(): SchemaTraitsObject; + /** + * @returns the map's key's schema. Returns a dummy Document schema if this schema is a Document. + * + * @throws Error if the schema is not a Map or Document. + */ + getKeySchema(): NormalizedSchema; + /** + * @returns the schema of the map's value or list's member. + * Returns a dummy Document schema if this schema is a Document. + * + * @throws Error if the schema is not a Map, List, nor Document. + */ + getValueSchema(): NormalizedSchema; + /** + * @returns the NormalizedSchema for the given member name. The returned instance will return true for `isMemberSchema()` + * and will have the member name given. + * @param memberName - which member to retrieve and wrap. + * + * @throws Error if member does not exist or the schema is neither a document nor structure. + * Note that errors are assumed to be structures and unions are considered structures for these purposes. + */ + getMemberSchema(memberName: string): NormalizedSchema; + /** + * This can be used for checking the members as a hashmap. + * Prefer the structIterator method for iteration. + * + * This does NOT return list and map members, it is only for structures. + * + * @deprecated use (checked) structIterator instead. + * + * @returns a map of member names to member schemas (normalized). + */ + getMemberSchemas(): Record; + /** + * @returns member name of event stream or empty string indicating none exists or this + * isn't a structure schema. + */ + getEventStreamMember(): string; + /** + * Allows iteration over members of a structure schema. + * Each yield is a pair of the member name and member schema. + * + * This avoids the overhead of calling Object.entries(ns.getMemberSchemas()). + */ + structIterator(): Generator<[ + string, + NormalizedSchema + ], undefined, undefined>; +} +/** + * @internal + */ +export declare const isStaticSchema: (sc: SchemaRef) => sc is StaticSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts new file mode 100644 index 0000000..0355244 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/OperationSchema.d.ts @@ -0,0 +1,23 @@ +import { OperationSchema as IOperationSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * This is used as a reference container for the input/output pair of schema, and for trait + * detection on the operation that may affect client protocol logic. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class OperationSchema extends Schema implements IOperationSchema { + static readonly symbol: unique symbol; + name: string; + traits: SchemaTraits; + input: SchemaRef; + output: SchemaRef; + protected readonly symbol: symbol; +} +/** + * Factory for OperationSchema. + * @internal + * @deprecated use StaticSchema + */ +export declare const op: (namespace: string, name: string, traits: SchemaTraits, input: SchemaRef, output: SchemaRef) => OperationSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts new file mode 100644 index 0000000..365780a --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/Schema.d.ts @@ -0,0 +1,16 @@ +import { SchemaTraits, TraitsSchema } from "@smithy/types"; +/** + * Abstract base for class-based Schema except NormalizedSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare abstract class Schema implements TraitsSchema { + name: string; + namespace: string; + traits: SchemaTraits; + protected abstract readonly symbol: symbol; + static assign(instance: T, values: Pick>): T; + static [Symbol.hasInstance](lhs: unknown): boolean; + getName(): string; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts new file mode 100644 index 0000000..9ab4b35 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/SimpleSchema.d.ts @@ -0,0 +1,28 @@ +import { SchemaRef, SchemaTraits, TraitsSchema } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * Although numeric values exist for most simple schema, this class is used for cases where traits are + * attached to those schema, since a single number cannot easily represent both a schema and its traits. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class SimpleSchema extends Schema implements TraitsSchema { + static readonly symbol: unique symbol; + name: string; + schemaRef: SchemaRef; + traits: SchemaTraits; + protected readonly symbol: symbol; +} +/** + * Factory for simple schema class objects. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const sim: (namespace: string, name: string, schemaRef: SchemaRef, traits: SchemaTraits) => SimpleSchema; +/** + * @internal + * @deprecated + */ +export declare const simAdapter: (namespace: string, name: string, traits: SchemaTraits, schemaRef: SchemaRef) => SimpleSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts new file mode 100644 index 0000000..11ff333 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/StructureSchema.d.ts @@ -0,0 +1,23 @@ +import { SchemaRef, SchemaTraits, StructureSchema as IStructureSchema } from "@smithy/types"; +import { Schema } from "./Schema"; +/** + * A structure schema has a known list of members. This is also used for unions. + * + * @internal + * @deprecated use StaticSchema + */ +export declare class StructureSchema extends Schema implements IStructureSchema { + static symbol: symbol; + name: string; + traits: SchemaTraits; + memberNames: string[]; + memberList: SchemaRef[]; + protected readonly symbol: symbol; +} +/** + * Factory for StructureSchema. + * + * @internal + * @deprecated use StaticSchema + */ +export declare const struct: (namespace: string, name: string, traits: SchemaTraits, memberNames: string[], memberList: SchemaRef[]) => StructureSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/operation.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/operation.d.ts new file mode 100644 index 0000000..1eabc3a --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/operation.d.ts @@ -0,0 +1,7 @@ +import { OperationSchema, SchemaRef, SchemaTraits } from "@smithy/types"; +/** + * Converts the static schema array into an object-form to adapt + * to the signature of ClientProtocol classes. + * @internal + */ +export declare const operation: (namespace: string, name: string, traits: SchemaTraits, input: SchemaRef, output: SchemaRef) => OperationSchema; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts new file mode 100644 index 0000000..1665c84 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/sentinels.d.ts @@ -0,0 +1,23 @@ +import { BigDecimalSchema, BigIntegerSchema, BlobSchema, BooleanSchema, DocumentSchema, ListSchemaModifier, MapSchemaModifier, NumericSchema, StreamingBlobSchema, StringSchema, TimestampDateTimeSchema, TimestampDefaultSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "@smithy/types"; +/** + * Schema sentinel runtime values. + * @internal + * + * @deprecated use inline numbers with type annotation to save space. + */ +export declare const SCHEMA: { + BLOB: BlobSchema; + STREAMING_BLOB: StreamingBlobSchema; + BOOLEAN: BooleanSchema; + STRING: StringSchema; + NUMERIC: NumericSchema; + BIG_INTEGER: BigIntegerSchema; + BIG_DECIMAL: BigDecimalSchema; + DOCUMENT: DocumentSchema; + TIMESTAMP_DEFAULT: TimestampDefaultSchema; + TIMESTAMP_DATE_TIME: TimestampDateTimeSchema; + TIMESTAMP_HTTP_DATE: TimestampHttpDateSchema; + TIMESTAMP_EPOCH_SECONDS: TimestampEpochSecondsSchema; + LIST_MODIFIER: ListSchemaModifier; + MAP_MODIFIER: MapSchemaModifier; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/translateTraits.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/translateTraits.d.ts new file mode 100644 index 0000000..e3e2936 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/schema/schemas/translateTraits.d.ts @@ -0,0 +1,13 @@ +import { SchemaTraits, SchemaTraitsObject } from "@smithy/types"; +/** + * Module-level cache for translateTraits() numeric bitmask inputs. + * + * @internal + */ +export declare const traitsCache: SchemaTraitsObject[]; +/** + * @internal + * @param indicator - numeric indicator for preset trait combination. + * @returns equivalent trait object. + */ +export declare function translateTraits(indicator: SchemaTraits): SchemaTraitsObject; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts new file mode 100644 index 0000000..0aacd31 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/copyDocumentWithTransform.d.ts @@ -0,0 +1,6 @@ +import { SchemaRef } from "@smithy/types"; +/** + * @internal + * @deprecated the former functionality has been internalized to the CborCodec. + */ +export declare const copyDocumentWithTransform: (source: any, schemaRef: SchemaRef, transform?: (_: any, schemaRef: SchemaRef) => any) => any; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/date-utils.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/date-utils.d.ts new file mode 100644 index 0000000..41071c2 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/date-utils.d.ts @@ -0,0 +1,73 @@ +/** + * @internal + * + * Builds a proper UTC HttpDate timestamp from a Date object + * since not all environments will have this as the expected + * format. + * + * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString} + * - Prior to ECMAScript 2018, the format of the return value + * - varied according to the platform. The most common return + * - value was an RFC-1123 formatted date stamp, which is a + * - slightly updated version of RFC-822 date stamps. + */ +export declare function dateToUtcString(date: Date): string; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and cannot have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc3339DateTime: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and can have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc3339DateTimeWithOffset: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 7231 IMF-fixdate or obs-date. + * + * Input strings must conform to RFC7231 section 7.1.1.1. Fractional seconds are supported. + * + * @see {@link https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseRfc7231DateTime: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a number or a parseable string. + * + * Input strings must be an integer or floating point number. Fractional seconds are supported. + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const parseEpochTimestamp: (value: unknown) => Date | undefined; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/generateIdempotencyToken.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/generateIdempotencyToken.d.ts new file mode 100644 index 0000000..d7068bf --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/generateIdempotencyToken.d.ts @@ -0,0 +1,2 @@ +import { v4 as generateIdempotencyToken } from "@smithy/uuid"; +export { generateIdempotencyToken }; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts new file mode 100644 index 0000000..bfbe05f --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/index.d.ts @@ -0,0 +1,10 @@ +export * from "./copyDocumentWithTransform"; +export * from "./date-utils"; +export * from "./generateIdempotencyToken"; +export * from "./lazy-json"; +export * from "./parse-utils"; +export * from "./quote-header"; +export * from "./schema-serde-lib/schema-date-utils"; +export * from "./split-every"; +export * from "./split-header"; +export * from "./value/NumericValue"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/lazy-json.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/lazy-json.d.ts new file mode 100644 index 0000000..a7c823d --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/lazy-json.d.ts @@ -0,0 +1,45 @@ +/** + * @public + * + * A model field with this type means that you may provide a JavaScript + * object in lieu of a JSON string, and it will be serialized to JSON + * automatically before being sent in a request. + * + * For responses, you will receive a "LazyJsonString", which is a boxed String object + * with additional mixin methods. + * To get the string value, call `.toString()`, or to get the JSON object value, + * call `.deserializeJSON()` or parse it yourself. + */ +export type AutomaticJsonStringConversion = Parameters[0] | LazyJsonString; +/** + * @internal + */ +export interface LazyJsonString extends String { + /** + * @returns the JSON parsing of the string value. + */ + deserializeJSON(): any; + /** + * @returns the original string value rather than a JSON.stringified value. + */ + toJSON(): string; +} +/** + * @internal + * + * Extension of the native String class in the previous implementation + * has negative global performance impact on method dispatch for strings, + * and is generally discouraged. + * + * This current implementation may look strange, but is necessary to preserve the interface and + * behavior of extending the String class. + */ +export declare const LazyJsonString: { + new (s: string): LazyJsonString; + (s: string): LazyJsonString; + from(s: any): LazyJsonString; + /** + * @deprecated use #from. + */ + fromObject(s: any): LazyJsonString; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/parse-utils.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/parse-utils.d.ts new file mode 100644 index 0000000..e4c8aef --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/parse-utils.d.ts @@ -0,0 +1,270 @@ +/** + * @internal + * + * Give an input string, strictly parses a boolean value. + * + * @param value - The boolean string to parse. + * @returns true for "true", false for "false", otherwise an error is thrown. + */ +export declare const parseBoolean: (value: string) => boolean; +/** + * @internal + * + * Asserts a value is a boolean and returns it. + * Casts strings and numbers with a warning if there is evidence that they were + * intended to be booleans. + * + * @param value - A value that is expected to be a boolean. + * @returns The value if it's a boolean, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectBoolean: (value: any) => boolean | undefined; +/** + * @internal + * + * Asserts a value is a number and returns it. + * Casts strings with a warning if the string is a parseable number. + * This is to unblock slight API definition/implementation inconsistencies. + * + * @param value - A value that is expected to be a number. + * @returns The value if it's a number, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectNumber: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit float and returns it. + * + * @param value - A value that is expected to be a 32-bit float. + * @returns The value if it's a float, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectFloat32: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is an integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectLong: (value: any) => number | undefined; +/** + * @internal + * + * @deprecated Use expectLong + */ +export declare const expectInt: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectInt32: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is a 16-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectShort: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is an 8-bit integer and returns it. + * + * @param value - A value that is expected to be an integer. + * @returns The value if it's an integer, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectByte: (value: any) => number | undefined; +/** + * @internal + * + * Asserts a value is not null or undefined and returns it, or throws an error. + * + * @param value - A value that is expected to be defined + * @param location - The location where we're expecting to find a defined object (optional) + * @returns The value if it's not undefined, otherwise throws an error + */ +export declare const expectNonNull: (value: T | null | undefined, location?: string) => T; +/** + * @internal + * + * Asserts a value is an JSON-like object and returns it. This is expected to be used + * with values parsed from JSON (arrays, objects, numbers, strings, booleans). + * + * @param value - A value that is expected to be an object + * @returns The value if it's an object, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectObject: (value: any) => Record | undefined; +/** + * @internal + * + * Asserts a value is a string and returns it. + * Numbers and boolean will be cast to strings with a warning. + * + * @param value - A value that is expected to be a string. + * @returns The value if it's a string, undefined if it's null/undefined, + * otherwise an error is thrown. + */ +export declare const expectString: (value: any) => string | undefined; +/** + * @internal + * + * Asserts a value is a JSON-like object with only one non-null/non-undefined key and + * returns it. + * + * @param value - A value that is expected to be an object with exactly one non-null, + * non-undefined key. + * @returns the value if it's a union, undefined if it's null/undefined, otherwise + * an error is thrown. + */ +export declare const expectUnion: (value: unknown) => Record | undefined; +/** + * @internal + * + * Parses a value into a double. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by the standard + * parseFloat with one exception: NaN may only be explicitly set as the string + * "NaN", any implicit Nan values will result in an error being thrown. If any + * other type is provided, an exception will be thrown. + * + * @param value - A number or string representation of a double. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseDouble: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use strictParseDouble + */ +export declare const strictParseFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a float. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by the standard + * parseFloat with one exception: NaN may only be explicitly set as the string + * "NaN", any implicit Nan values will result in an error being thrown. If any + * other type is provided, an exception will be thrown. + * + * @param value - A number or string representation of a float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseFloat32: (value: string | number) => number | undefined; +/** + * @internal + * + * Asserts a value is a number and returns it. If the value is a string + * representation of a non-numeric number type (NaN, Infinity, -Infinity), + * the value will be parsed. Any other string value will result in an exception + * being thrown. Null or undefined will be returned as undefined. Any other + * type will result in an exception being thrown. + * + * @param value - A number or string representation of a non-numeric float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const limitedParseDouble: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use limitedParseDouble + */ +export declare const handleFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use limitedParseDouble + */ +export declare const limitedParseFloat: (value: string | number) => number | undefined; +/** + * @internal + * + * Asserts a value is a 32-bit float and returns it. If the value is a string + * representation of a non-numeric number type (NaN, Infinity, -Infinity), + * the value will be parsed. Any other string value will result in an exception + * being thrown. Null or undefined will be returned as undefined. Any other + * type will result in an exception being thrown. + * + * @param value - A number or string representation of a non-numeric float. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const limitedParseFloat32: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into an integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of an integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseLong: (value: string | number) => number | undefined; +/** + * @internal + * + * @deprecated Use strictParseLong + */ +export declare const strictParseInt: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a 32-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of a 32-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseInt32: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into a 16-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of a 16-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseShort: (value: string | number) => number | undefined; +/** + * @internal + * + * Parses a value into an 8-bit integer. If the value is null or undefined, undefined + * will be returned. If the value is a string, it will be parsed by parseFloat + * and the result will be asserted to be an integer. If the parsed value is not + * an integer, or the raw value is any type other than a string or number, an + * exception will be thrown. + * + * @param value - A number or string representation of an 8-bit integer. + * @returns The value as a number, or undefined if it's null/undefined. + */ +export declare const strictParseByte: (value: string | number) => number | undefined; +/** + * @internal + */ +export declare const logger: { + warn: { + (...data: any[]): void; + (message?: any, ...optionalParams: any[]): void; + }; +}; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/quote-header.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/quote-header.d.ts new file mode 100644 index 0000000..c2f12e9 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/quote-header.d.ts @@ -0,0 +1,6 @@ +/** + * @public + * @param part - header list element + * @returns quoted string if part contains delimiter. + */ +export declare function quoteHeader(part: string): string; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/schema-serde-lib/schema-date-utils.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/schema-serde-lib/schema-date-utils.d.ts new file mode 100644 index 0000000..7cb3158 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/schema-serde-lib/schema-date-utils.d.ts @@ -0,0 +1,47 @@ +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a number or a parseable string. + * + * Input strings must be an integer or floating point number. Fractional seconds are supported. + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const _parseEpochTimestamp: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 3339 date. + * + * Input strings must conform to RFC3339 section 5.6, and can have a UTC + * offset. Fractional precision is supported. + * + * @see {@link https://xml2rfc.tools.ietf.org/public/rfc/html/rfc3339.html#anchor14} + * + * @param value - the value to parse + * @returns a Date or undefined + */ +export declare const _parseRfc3339DateTimeWithOffset: (value: unknown) => Date | undefined; +/** + * @internal + * + * Parses a value into a Date. Returns undefined if the input is null or + * undefined, throws an error if the input is not a string that can be parsed + * as an RFC 7231 date. + * + * Input strings must conform to RFC7231 section 7.1.1.1. Fractional seconds are supported. + * + * RFC 850 and unix asctime formats are also accepted. + * todo: practically speaking, are RFC 850 and asctime even used anymore? + * todo: can we remove those parts? + * + * @see {@link https://datatracker.ietf.org/doc/html/rfc7231.html#section-7.1.1.1} + * + * @param value - the value to parse. + * @returns a Date or undefined. + */ +export declare const _parseRfc7231DateTime: (value: unknown) => Date | undefined; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-every.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-every.d.ts new file mode 100644 index 0000000..2280f3e --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-every.d.ts @@ -0,0 +1,11 @@ +/** + * @internal + * + * Given an input string, splits based on the delimiter after a given + * number of delimiters has been encountered. + * + * @param value - The input string to split. + * @param delimiter - The delimiter to split on. + * @param numDelimiters - The number of delimiters to have encountered to split. + */ +export declare function splitEvery(value: string, delimiter: string, numDelimiters: number): Array; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-header.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-header.d.ts new file mode 100644 index 0000000..7cf54c6 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/split-header.d.ts @@ -0,0 +1,5 @@ +/** + * @param value - header string value. + * @returns value split by commas that aren't in quotes. + */ +export declare const splitHeader: (value: string) => string[]; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts new file mode 100644 index 0000000..5bb9437 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/submodules/serde/value/NumericValue.d.ts @@ -0,0 +1,33 @@ +/** + * Types which may be represented by {@link NumericValue}. + * + * There is currently only one option, because BigInteger and Long should + * use JS BigInt directly, and all other numeric types can be contained in JS Number. + * + * @public + */ +export type NumericType = "bigDecimal"; +/** + * Serialization container for Smithy simple types that do not have a + * direct JavaScript runtime representation. + * + * This container does not perform numeric mathematical operations. + * It is a container for discerning a value's true type. + * + * It allows storage of numeric types not representable in JS without + * making a decision on what numeric library to use. + * + * @public + */ +export declare class NumericValue { + readonly string: string; + readonly type: NumericType; + constructor(string: string, type: NumericType); + toString(): string; + static [Symbol.hasInstance](object: unknown): boolean; +} +/** + * Serde shortcut. + * @internal + */ +export declare function nv(input: string | unknown): NumericValue; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts new file mode 100644 index 0000000..7e80659 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts @@ -0,0 +1,15 @@ +import { HttpAuthSchemeId, Identity, IdentityProvider, IdentityProviderConfig } from "@smithy/types"; +/** + * Default implementation of IdentityProviderConfig + * @internal + */ +export declare class DefaultIdentityProviderConfig implements IdentityProviderConfig { + private authSchemes; + /** + * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers. + * + * @param config scheme IDs and identity providers to configure + */ + constructor(config: Record | undefined>); + getIdentityProvider(schemeId: HttpAuthSchemeId): IdentityProvider | undefined; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts new file mode 100644 index 0000000..3981a1b --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { ApiKeyIdentity, HttpRequest as IHttpRequest, HttpSigner } from "@smithy/types"; +/** + * @internal + */ +export declare class HttpApiKeyAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: ApiKeyIdentity, signingProperties: Record): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts new file mode 100644 index 0000000..9c83b1c --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { HttpRequest as IHttpRequest, HttpSigner, TokenIdentity } from "@smithy/types"; +/** + * @internal + */ +export declare class HttpBearerAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: TokenIdentity, signingProperties: Record): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/index.d.ts new file mode 100644 index 0000000..aa5caa8 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/index.d.ts @@ -0,0 +1,3 @@ +export * from "./httpApiKeyAuth"; +export * from "./httpBearerAuth"; +export * from "./noAuth"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts new file mode 100644 index 0000000..0d7b612 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest, HttpSigner, Identity } from "@smithy/types"; +/** + * Signer for the synthetic @smithy.api#noAuth auth scheme. + * @internal + */ +export declare class NoAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: Identity, signingProperties: Record): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/index.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/index.d.ts new file mode 100644 index 0000000..626ade9 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/index.d.ts @@ -0,0 +1,3 @@ +export * from "./DefaultIdentityProviderConfig"; +export * from "./httpAuthSchemes"; +export * from "./memoizeIdentityProvider"; diff --git a/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/memoizeIdentityProvider.d.ts b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/memoizeIdentityProvider.d.ts new file mode 100644 index 0000000..270aa71 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/ts3.4/util-identity-and-auth/memoizeIdentityProvider.d.ts @@ -0,0 +1,30 @@ +import { Identity, IdentityProvider } from "@smithy/types"; +/** + * @internal + */ +export declare const createIsIdentityExpiredFunction: (expirationMs: number) => (identity: Identity) => boolean; +/** + * @internal + * This may need to be configurable in the future, but for now it is defaulted to 5min. + */ +export declare const EXPIRATION_MS = 300000; +/** + * @internal + */ +export declare const isIdentityExpired: (identity: Identity) => boolean; +/** + * @internal + */ +export declare const doesIdentityRequireRefresh: (identity: Identity) => boolean; +/** + * @internal + */ +export interface MemoizedIdentityProvider { + (options?: Record & { + forceRefresh?: boolean; + }): Promise; +} +/** + * @internal + */ +export declare const memoizeIdentityProvider: (provider: IdentityT | IdentityProvider | undefined, isExpired: (resolved: Identity) => boolean, requiresRefresh: (resolved: Identity) => boolean) => MemoizedIdentityProvider | undefined; diff --git a/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts new file mode 100644 index 0000000..d05d896 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/DefaultIdentityProviderConfig.d.ts @@ -0,0 +1,15 @@ +import type { HttpAuthSchemeId, Identity, IdentityProvider, IdentityProviderConfig } from "@smithy/types"; +/** + * Default implementation of IdentityProviderConfig + * @internal + */ +export declare class DefaultIdentityProviderConfig implements IdentityProviderConfig { + private authSchemes; + /** + * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers. + * + * @param config scheme IDs and identity providers to configure + */ + constructor(config: Record | undefined>); + getIdentityProvider(schemeId: HttpAuthSchemeId): IdentityProvider | undefined; +} diff --git a/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts new file mode 100644 index 0000000..2401d94 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import type { ApiKeyIdentity, HttpRequest as IHttpRequest, HttpSigner } from "@smithy/types"; +/** + * @internal + */ +export declare class HttpApiKeyAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: ApiKeyIdentity, signingProperties: Record): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts new file mode 100644 index 0000000..923504b --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.d.ts @@ -0,0 +1,8 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import type { HttpRequest as IHttpRequest, HttpSigner, TokenIdentity } from "@smithy/types"; +/** + * @internal + */ +export declare class HttpBearerAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: TokenIdentity, signingProperties: Record): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/index.d.ts b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/index.d.ts new file mode 100644 index 0000000..9d240fe --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/index.d.ts @@ -0,0 +1,3 @@ +export * from "./httpApiKeyAuth"; +export * from "./httpBearerAuth"; +export * from "./noAuth"; diff --git a/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts new file mode 100644 index 0000000..1b1bab1 --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/httpAuthSchemes/noAuth.d.ts @@ -0,0 +1,8 @@ +import type { HttpRequest, HttpSigner, Identity } from "@smithy/types"; +/** + * Signer for the synthetic @smithy.api#noAuth auth scheme. + * @internal + */ +export declare class NoAuthSigner implements HttpSigner { + sign(httpRequest: HttpRequest, identity: Identity, signingProperties: Record): Promise; +} diff --git a/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/index.d.ts b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/index.d.ts new file mode 100644 index 0000000..87ba64b --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/index.d.ts @@ -0,0 +1,3 @@ +export * from "./DefaultIdentityProviderConfig"; +export * from "./httpAuthSchemes"; +export * from "./memoizeIdentityProvider"; diff --git a/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/memoizeIdentityProvider.d.ts b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/memoizeIdentityProvider.d.ts new file mode 100644 index 0000000..a618afd --- /dev/null +++ b/bff/node_modules/@smithy/core/dist-types/util-identity-and-auth/memoizeIdentityProvider.d.ts @@ -0,0 +1,30 @@ +import type { Identity, IdentityProvider } from "@smithy/types"; +/** + * @internal + */ +export declare const createIsIdentityExpiredFunction: (expirationMs: number) => (identity: Identity) => boolean; +/** + * @internal + * This may need to be configurable in the future, but for now it is defaulted to 5min. + */ +export declare const EXPIRATION_MS = 300000; +/** + * @internal + */ +export declare const isIdentityExpired: (identity: Identity) => boolean; +/** + * @internal + */ +export declare const doesIdentityRequireRefresh: (identity: Identity) => boolean; +/** + * @internal + */ +export interface MemoizedIdentityProvider { + (options?: Record & { + forceRefresh?: boolean; + }): Promise; +} +/** + * @internal + */ +export declare const memoizeIdentityProvider: (provider: IdentityT | IdentityProvider | undefined, isExpired: (resolved: Identity) => boolean, requiresRefresh: (resolved: Identity) => boolean) => MemoizedIdentityProvider | undefined; diff --git a/bff/node_modules/@smithy/core/endpoints.d.ts b/bff/node_modules/@smithy/core/endpoints.d.ts new file mode 100644 index 0000000..fdb2c15 --- /dev/null +++ b/bff/node_modules/@smithy/core/endpoints.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/endpoints" { + export * from "@smithy/core/dist-types/submodules/endpoints/index.d"; +} diff --git a/bff/node_modules/@smithy/core/endpoints.js b/bff/node_modules/@smithy/core/endpoints.js new file mode 100644 index 0000000..d1676d8 --- /dev/null +++ b/bff/node_modules/@smithy/core/endpoints.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/endpoints/index.js"); diff --git a/bff/node_modules/@smithy/core/event-streams.d.ts b/bff/node_modules/@smithy/core/event-streams.d.ts new file mode 100644 index 0000000..8637fa8 --- /dev/null +++ b/bff/node_modules/@smithy/core/event-streams.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/event-streams" { + export * from "@smithy/core/dist-types/submodules/event-streams/index.d"; +} diff --git a/bff/node_modules/@smithy/core/event-streams.js b/bff/node_modules/@smithy/core/event-streams.js new file mode 100644 index 0000000..e79eab7 --- /dev/null +++ b/bff/node_modules/@smithy/core/event-streams.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/event-streams/index.js"); diff --git a/bff/node_modules/@smithy/core/package.json b/bff/node_modules/@smithy/core/package.json new file mode 100644 index 0000000..95f0042 --- /dev/null +++ b/bff/node_modules/@smithy/core/package.json @@ -0,0 +1,146 @@ +{ + "name": "@smithy/core", + "version": "3.23.13", + "scripts": { + "build": "yarn lint && concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline core", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "npx eslint -c ../../.eslintrc.js \"src/**/*.ts\" --fix && node ./scripts/lint", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test:cbor:perf": "node ./scripts/cbor-perf.mjs", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "exports": { + ".": { + "types": "./dist-types/index.d.ts", + "module": "./dist-es/index.js", + "node": "./dist-cjs/index.js", + "import": "./dist-es/index.js", + "require": "./dist-cjs/index.js" + }, + "./package.json": { + "module": "./package.json", + "node": "./package.json", + "import": "./package.json", + "require": "./package.json" + }, + "./cbor": { + "types": "./dist-types/submodules/cbor/index.d.ts", + "module": "./dist-es/submodules/cbor/index.js", + "node": "./dist-cjs/submodules/cbor/index.js", + "import": "./dist-es/submodules/cbor/index.js", + "require": "./dist-cjs/submodules/cbor/index.js" + }, + "./protocols": { + "types": "./dist-types/submodules/protocols/index.d.ts", + "module": "./dist-es/submodules/protocols/index.js", + "node": "./dist-cjs/submodules/protocols/index.js", + "import": "./dist-es/submodules/protocols/index.js", + "require": "./dist-cjs/submodules/protocols/index.js" + }, + "./serde": { + "types": "./dist-types/submodules/serde/index.d.ts", + "module": "./dist-es/submodules/serde/index.js", + "node": "./dist-cjs/submodules/serde/index.js", + "import": "./dist-es/submodules/serde/index.js", + "require": "./dist-cjs/submodules/serde/index.js" + }, + "./schema": { + "types": "./dist-types/submodules/schema/index.d.ts", + "module": "./dist-es/submodules/schema/index.js", + "node": "./dist-cjs/submodules/schema/index.js", + "import": "./dist-es/submodules/schema/index.js", + "require": "./dist-cjs/submodules/schema/index.js" + }, + "./event-streams": { + "types": "./dist-types/submodules/event-streams/index.d.ts", + "module": "./dist-es/submodules/event-streams/index.js", + "node": "./dist-cjs/submodules/event-streams/index.js", + "import": "./dist-es/submodules/event-streams/index.js", + "require": "./dist-cjs/submodules/event-streams/index.js" + }, + "./endpoints": { + "types": "./dist-types/submodules/endpoints/index.d.ts", + "module": "./dist-es/submodules/endpoints/index.js", + "node": "./dist-cjs/submodules/endpoints/index.js", + "import": "./dist-es/submodules/endpoints/index.js", + "require": "./dist-cjs/submodules/endpoints/index.js" + } + }, + "author": { + "name": "AWS Smithy Team", + "email": "", + "url": "https://smithy.io" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "./cbor.d.ts", + "./cbor.js", + "./endpoints.d.ts", + "./endpoints.js", + "./event-streams.d.ts", + "./event-streams.js", + "./protocols.d.ts", + "./protocols.js", + "./schema.d.ts", + "./schema.js", + "./serde.d.ts", + "./serde.js", + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/core", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/core" + }, + "devDependencies": { + "@smithy/eventstream-serde-node": "^4.2.12", + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "json-bigint": "^1.0.0", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/core/protocols.d.ts b/bff/node_modules/@smithy/core/protocols.d.ts new file mode 100644 index 0000000..e0afd4e --- /dev/null +++ b/bff/node_modules/@smithy/core/protocols.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/protocols" { + export * from "@smithy/core/dist-types/submodules/protocols/index.d"; +} diff --git a/bff/node_modules/@smithy/core/protocols.js b/bff/node_modules/@smithy/core/protocols.js new file mode 100644 index 0000000..43e0c42 --- /dev/null +++ b/bff/node_modules/@smithy/core/protocols.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/protocols/index.js"); diff --git a/bff/node_modules/@smithy/core/schema.d.ts b/bff/node_modules/@smithy/core/schema.d.ts new file mode 100644 index 0000000..e29b358 --- /dev/null +++ b/bff/node_modules/@smithy/core/schema.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/schema" { + export * from "@smithy/core/dist-types/submodules/schema/index.d"; +} diff --git a/bff/node_modules/@smithy/core/schema.js b/bff/node_modules/@smithy/core/schema.js new file mode 100644 index 0000000..a5035de --- /dev/null +++ b/bff/node_modules/@smithy/core/schema.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/schema/index.js"); diff --git a/bff/node_modules/@smithy/core/serde.d.ts b/bff/node_modules/@smithy/core/serde.d.ts new file mode 100644 index 0000000..9906bb0 --- /dev/null +++ b/bff/node_modules/@smithy/core/serde.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@smithy/core/serde" { + export * from "@smithy/core/dist-types/submodules/serde/index.d"; +} diff --git a/bff/node_modules/@smithy/core/serde.js b/bff/node_modules/@smithy/core/serde.js new file mode 100644 index 0000000..b2d727f --- /dev/null +++ b/bff/node_modules/@smithy/core/serde.js @@ -0,0 +1,6 @@ + +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/serde/index.js"); diff --git a/bff/node_modules/@smithy/credential-provider-imds/LICENSE b/bff/node_modules/@smithy/credential-provider-imds/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/credential-provider-imds/README.md b/bff/node_modules/@smithy/credential-provider-imds/README.md new file mode 100644 index 0000000..9a8f8a5 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/README.md @@ -0,0 +1,11 @@ +# @smithy/credential-provider-imds + +[![NPM version](https://img.shields.io/npm/v/@smithy/credential-provider-imds/latest.svg)](https://www.npmjs.com/package/@smithy/credential-provider-imds) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/credential-provider-imds.svg)](https://www.npmjs.com/package/@smithy/credential-provider-imds) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@smithy/credential-providers](https://www.npmjs.com/package/@smithy/credential-providers) +instead. diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js b/bff/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js new file mode 100644 index 0000000..8de0d3f --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-cjs/index.js @@ -0,0 +1,372 @@ +'use strict'; + +var propertyProvider = require('@smithy/property-provider'); +var url = require('url'); +var buffer = require('buffer'); +var http = require('http'); +var nodeConfigProvider = require('@smithy/node-config-provider'); +var urlParser = require('@smithy/url-parser'); + +function httpRequest(options) { + return new Promise((resolve, reject) => { + const req = http.request({ + method: "GET", + ...options, + hostname: options.hostname?.replace(/^\[(.+)\]$/, "$1"), + }); + req.on("error", (err) => { + reject(Object.assign(new propertyProvider.ProviderError("Unable to connect to instance metadata service"), err)); + req.destroy(); + }); + req.on("timeout", () => { + reject(new propertyProvider.ProviderError("TimeoutError from instance metadata service")); + req.destroy(); + }); + req.on("response", (res) => { + const { statusCode = 400 } = res; + if (statusCode < 200 || 300 <= statusCode) { + reject(Object.assign(new propertyProvider.ProviderError("Error response received from instance metadata service"), { statusCode })); + req.destroy(); + } + const chunks = []; + res.on("data", (chunk) => { + chunks.push(chunk); + }); + res.on("end", () => { + resolve(buffer.Buffer.concat(chunks)); + req.destroy(); + }); + }); + req.end(); + }); +} + +const isImdsCredentials = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.AccessKeyId === "string" && + typeof arg.SecretAccessKey === "string" && + typeof arg.Token === "string" && + typeof arg.Expiration === "string"; +const fromImdsCredentials = (creds) => ({ + accessKeyId: creds.AccessKeyId, + secretAccessKey: creds.SecretAccessKey, + sessionToken: creds.Token, + expiration: new Date(creds.Expiration), + ...(creds.AccountId && { accountId: creds.AccountId }), +}); + +const DEFAULT_TIMEOUT = 1000; +const DEFAULT_MAX_RETRIES = 0; +const providerConfigFromInit = ({ maxRetries = DEFAULT_MAX_RETRIES, timeout = DEFAULT_TIMEOUT, }) => ({ maxRetries, timeout }); + +const retry = (toRetry, maxRetries) => { + let promise = toRetry(); + for (let i = 0; i < maxRetries; i++) { + promise = promise.catch(toRetry); + } + return promise; +}; + +const ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +const ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +const ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +const fromContainerMetadata = (init = {}) => { + const { timeout, maxRetries } = providerConfigFromInit(init); + return () => retry(async () => { + const requestOptions = await getCmdsUri({ logger: init.logger }); + const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); + if (!isImdsCredentials(credsResponse)) { + throw new propertyProvider.CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger, + }); + } + return fromImdsCredentials(credsResponse); + }, maxRetries); +}; +const requestFromEcsImds = async (timeout, options) => { + if (process.env[ENV_CMDS_AUTH_TOKEN]) { + options.headers = { + ...options.headers, + Authorization: process.env[ENV_CMDS_AUTH_TOKEN], + }; + } + const buffer = await httpRequest({ + ...options, + timeout, + }); + return buffer.toString(); +}; +const CMDS_IP = "169.254.170.2"; +const GREENGRASS_HOSTS = { + localhost: true, + "127.0.0.1": true, +}; +const GREENGRASS_PROTOCOLS = { + "http:": true, + "https:": true, +}; +const getCmdsUri = async ({ logger }) => { + if (process.env[ENV_CMDS_RELATIVE_URI]) { + return { + hostname: CMDS_IP, + path: process.env[ENV_CMDS_RELATIVE_URI], + }; + } + if (process.env[ENV_CMDS_FULL_URI]) { + const parsed = url.parse(process.env[ENV_CMDS_FULL_URI]); + if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) { + throw new propertyProvider.CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, { + tryNextLink: false, + logger, + }); + } + if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) { + throw new propertyProvider.CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, { + tryNextLink: false, + logger, + }); + } + return { + ...parsed, + port: parsed.port ? parseInt(parsed.port, 10) : undefined, + }; + } + throw new propertyProvider.CredentialsProviderError("The container metadata credential provider cannot be used unless" + + ` the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment` + + " variable is set", { + tryNextLink: false, + logger, + }); +}; + +class InstanceMetadataV1FallbackError extends propertyProvider.CredentialsProviderError { + tryNextLink; + name = "InstanceMetadataV1FallbackError"; + constructor(message, tryNextLink = true) { + super(message, tryNextLink); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, InstanceMetadataV1FallbackError.prototype); + } +} + +exports.Endpoint = void 0; +(function (Endpoint) { + Endpoint["IPv4"] = "http://169.254.169.254"; + Endpoint["IPv6"] = "http://[fd00:ec2::254]"; +})(exports.Endpoint || (exports.Endpoint = {})); + +const ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; +const CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; +const ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME], + default: undefined, +}; + +var EndpointMode; +(function (EndpointMode) { + EndpointMode["IPv4"] = "IPv4"; + EndpointMode["IPv6"] = "IPv6"; +})(EndpointMode || (EndpointMode = {})); + +const ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; +const CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; +const ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME], + default: EndpointMode.IPv4, +}; + +const getInstanceMetadataEndpoint = async () => urlParser.parseUrl((await getFromEndpointConfig()) || (await getFromEndpointModeConfig())); +const getFromEndpointConfig = async () => nodeConfigProvider.loadConfig(ENDPOINT_CONFIG_OPTIONS)(); +const getFromEndpointModeConfig = async () => { + const endpointMode = await nodeConfigProvider.loadConfig(ENDPOINT_MODE_CONFIG_OPTIONS)(); + switch (endpointMode) { + case EndpointMode.IPv4: + return exports.Endpoint.IPv4; + case EndpointMode.IPv6: + return exports.Endpoint.IPv6; + default: + throw new Error(`Unsupported endpoint mode: ${endpointMode}.` + ` Select from ${Object.values(EndpointMode)}`); + } +}; + +const STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60; +const STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60; +const STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html"; +const getExtendedInstanceMetadataCredentials = (credentials, logger) => { + const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS); + const newExpiration = new Date(Date.now() + refreshInterval * 1000); + logger.warn("Attempting credential expiration extension due to a credential service availability issue. A refresh of these " + + `credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: ` + + STATIC_STABILITY_DOC_URL); + const originalExpiration = credentials.originalExpiration ?? credentials.expiration; + return { + ...credentials, + ...(originalExpiration ? { originalExpiration } : {}), + expiration: newExpiration, + }; +}; + +const staticStabilityProvider = (provider, options = {}) => { + const logger = options?.logger || console; + let pastCredentials; + return async () => { + let credentials; + try { + credentials = await provider(); + if (credentials.expiration && credentials.expiration.getTime() < Date.now()) { + credentials = getExtendedInstanceMetadataCredentials(credentials, logger); + } + } + catch (e) { + if (pastCredentials) { + logger.warn("Credential renew failed: ", e); + credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger); + } + else { + throw e; + } + } + pastCredentials = credentials; + return credentials; + }; +}; + +const IMDS_PATH = "/latest/meta-data/iam/security-credentials/"; +const IMDS_TOKEN_PATH = "/latest/api/token"; +const AWS_EC2_METADATA_V1_DISABLED = "AWS_EC2_METADATA_V1_DISABLED"; +const PROFILE_AWS_EC2_METADATA_V1_DISABLED = "ec2_metadata_v1_disabled"; +const X_AWS_EC2_METADATA_TOKEN = "x-aws-ec2-metadata-token"; +const fromInstanceMetadata = (init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger }); +const getInstanceMetadataProvider = (init = {}) => { + let disableFetchToken = false; + const { logger, profile } = init; + const { timeout, maxRetries } = providerConfigFromInit(init); + const getCredentials = async (maxRetries, options) => { + const isImdsV1Fallback = disableFetchToken || options.headers?.[X_AWS_EC2_METADATA_TOKEN] == null; + if (isImdsV1Fallback) { + let fallbackBlockedFromProfile = false; + let fallbackBlockedFromProcessEnv = false; + const configValue = await nodeConfigProvider.loadConfig({ + environmentVariableSelector: (env) => { + const envValue = env[AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProcessEnv = !!envValue && envValue !== "false"; + if (envValue === undefined) { + throw new propertyProvider.CredentialsProviderError(`${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, { logger: init.logger }); + } + return fallbackBlockedFromProcessEnv; + }, + configFileSelector: (profile) => { + const profileValue = profile[PROFILE_AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProfile = !!profileValue && profileValue !== "false"; + return fallbackBlockedFromProfile; + }, + default: false, + }, { + profile, + })(); + if (init.ec2MetadataV1Disabled || configValue) { + const causes = []; + if (init.ec2MetadataV1Disabled) + causes.push("credential provider initialization (runtime option ec2MetadataV1Disabled)"); + if (fallbackBlockedFromProfile) + causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`); + if (fallbackBlockedFromProcessEnv) + causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`); + throw new InstanceMetadataV1FallbackError(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(", ")}].`); + } + } + const imdsProfile = (await retry(async () => { + let profile; + try { + profile = await getProfile(options); + } + catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return profile; + }, maxRetries)).trim(); + return retry(async () => { + let creds; + try { + creds = await getCredentialsFromProfile(imdsProfile, options, init); + } + catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return creds; + }, maxRetries); + }; + return async () => { + const endpoint = await getInstanceMetadataEndpoint(); + if (disableFetchToken) { + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + else { + let token; + try { + token = (await getMetadataToken({ ...endpoint, timeout })).toString(); + } + catch (error) { + if (error?.statusCode === 400) { + throw Object.assign(error, { + message: "EC2 Metadata token request returned error", + }); + } + else if (error.message === "TimeoutError" || [403, 404, 405].includes(error.statusCode)) { + disableFetchToken = true; + } + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + return getCredentials(maxRetries, { + ...endpoint, + headers: { + [X_AWS_EC2_METADATA_TOKEN]: token, + }, + timeout, + }); + } + }; +}; +const getMetadataToken = async (options) => httpRequest({ + ...options, + path: IMDS_TOKEN_PATH, + method: "PUT", + headers: { + "x-aws-ec2-metadata-token-ttl-seconds": "21600", + }, +}); +const getProfile = async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(); +const getCredentialsFromProfile = async (profile, options, init) => { + const credentialsResponse = JSON.parse((await httpRequest({ + ...options, + path: IMDS_PATH + profile, + })).toString()); + if (!isImdsCredentials(credentialsResponse)) { + throw new propertyProvider.CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger, + }); + } + return fromImdsCredentials(credentialsResponse); +}; + +exports.DEFAULT_MAX_RETRIES = DEFAULT_MAX_RETRIES; +exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT; +exports.ENV_CMDS_AUTH_TOKEN = ENV_CMDS_AUTH_TOKEN; +exports.ENV_CMDS_FULL_URI = ENV_CMDS_FULL_URI; +exports.ENV_CMDS_RELATIVE_URI = ENV_CMDS_RELATIVE_URI; +exports.fromContainerMetadata = fromContainerMetadata; +exports.fromInstanceMetadata = fromInstanceMetadata; +exports.getInstanceMetadataEndpoint = getInstanceMetadataEndpoint; +exports.httpRequest = httpRequest; +exports.providerConfigFromInit = providerConfigFromInit; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js new file mode 100644 index 0000000..b088eb0 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js @@ -0,0 +1,5 @@ +export var Endpoint; +(function (Endpoint) { + Endpoint["IPv4"] = "http://169.254.169.254"; + Endpoint["IPv6"] = "http://[fd00:ec2::254]"; +})(Endpoint || (Endpoint = {})); diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js new file mode 100644 index 0000000..f043de9 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js @@ -0,0 +1,7 @@ +export const ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; +export const CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; +export const ENDPOINT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME], + default: undefined, +}; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js new file mode 100644 index 0000000..bace819 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js @@ -0,0 +1,5 @@ +export var EndpointMode; +(function (EndpointMode) { + EndpointMode["IPv4"] = "IPv4"; + EndpointMode["IPv6"] = "IPv6"; +})(EndpointMode || (EndpointMode = {})); diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js new file mode 100644 index 0000000..15b19d0 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js @@ -0,0 +1,8 @@ +import { EndpointMode } from "./EndpointMode"; +export const ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; +export const CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; +export const ENDPOINT_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME], + configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME], + default: EndpointMode.IPv4, +}; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js new file mode 100644 index 0000000..b769392 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js @@ -0,0 +1,10 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +export class InstanceMetadataV1FallbackError extends CredentialsProviderError { + tryNextLink; + name = "InstanceMetadataV1FallbackError"; + constructor(message, tryNextLink = true) { + super(message, tryNextLink); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, InstanceMetadataV1FallbackError.prototype); + } +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js new file mode 100644 index 0000000..4340e3e --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js @@ -0,0 +1,77 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { parse } from "url"; +import { httpRequest } from "./remoteProvider/httpRequest"; +import { fromImdsCredentials, isImdsCredentials } from "./remoteProvider/ImdsCredentials"; +import { providerConfigFromInit } from "./remoteProvider/RemoteProviderInit"; +import { retry } from "./remoteProvider/retry"; +export const ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +export const ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +export const ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +export const fromContainerMetadata = (init = {}) => { + const { timeout, maxRetries } = providerConfigFromInit(init); + return () => retry(async () => { + const requestOptions = await getCmdsUri({ logger: init.logger }); + const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions)); + if (!isImdsCredentials(credsResponse)) { + throw new CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger, + }); + } + return fromImdsCredentials(credsResponse); + }, maxRetries); +}; +const requestFromEcsImds = async (timeout, options) => { + if (process.env[ENV_CMDS_AUTH_TOKEN]) { + options.headers = { + ...options.headers, + Authorization: process.env[ENV_CMDS_AUTH_TOKEN], + }; + } + const buffer = await httpRequest({ + ...options, + timeout, + }); + return buffer.toString(); +}; +const CMDS_IP = "169.254.170.2"; +const GREENGRASS_HOSTS = { + localhost: true, + "127.0.0.1": true, +}; +const GREENGRASS_PROTOCOLS = { + "http:": true, + "https:": true, +}; +const getCmdsUri = async ({ logger }) => { + if (process.env[ENV_CMDS_RELATIVE_URI]) { + return { + hostname: CMDS_IP, + path: process.env[ENV_CMDS_RELATIVE_URI], + }; + } + if (process.env[ENV_CMDS_FULL_URI]) { + const parsed = parse(process.env[ENV_CMDS_FULL_URI]); + if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) { + throw new CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, { + tryNextLink: false, + logger, + }); + } + if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) { + throw new CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, { + tryNextLink: false, + logger, + }); + } + return { + ...parsed, + port: parsed.port ? parseInt(parsed.port, 10) : undefined, + }; + } + throw new CredentialsProviderError("The container metadata credential provider cannot be used unless" + + ` the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment` + + " variable is set", { + tryNextLink: false, + logger, + }); +}; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js new file mode 100644 index 0000000..24ecbfd --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js @@ -0,0 +1,134 @@ +import { loadConfig } from "@smithy/node-config-provider"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { InstanceMetadataV1FallbackError } from "./error/InstanceMetadataV1FallbackError"; +import { httpRequest } from "./remoteProvider/httpRequest"; +import { fromImdsCredentials, isImdsCredentials } from "./remoteProvider/ImdsCredentials"; +import { providerConfigFromInit } from "./remoteProvider/RemoteProviderInit"; +import { retry } from "./remoteProvider/retry"; +import { getInstanceMetadataEndpoint } from "./utils/getInstanceMetadataEndpoint"; +import { staticStabilityProvider } from "./utils/staticStabilityProvider"; +const IMDS_PATH = "/latest/meta-data/iam/security-credentials/"; +const IMDS_TOKEN_PATH = "/latest/api/token"; +const AWS_EC2_METADATA_V1_DISABLED = "AWS_EC2_METADATA_V1_DISABLED"; +const PROFILE_AWS_EC2_METADATA_V1_DISABLED = "ec2_metadata_v1_disabled"; +const X_AWS_EC2_METADATA_TOKEN = "x-aws-ec2-metadata-token"; +export const fromInstanceMetadata = (init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger }); +const getInstanceMetadataProvider = (init = {}) => { + let disableFetchToken = false; + const { logger, profile } = init; + const { timeout, maxRetries } = providerConfigFromInit(init); + const getCredentials = async (maxRetries, options) => { + const isImdsV1Fallback = disableFetchToken || options.headers?.[X_AWS_EC2_METADATA_TOKEN] == null; + if (isImdsV1Fallback) { + let fallbackBlockedFromProfile = false; + let fallbackBlockedFromProcessEnv = false; + const configValue = await loadConfig({ + environmentVariableSelector: (env) => { + const envValue = env[AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProcessEnv = !!envValue && envValue !== "false"; + if (envValue === undefined) { + throw new CredentialsProviderError(`${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, { logger: init.logger }); + } + return fallbackBlockedFromProcessEnv; + }, + configFileSelector: (profile) => { + const profileValue = profile[PROFILE_AWS_EC2_METADATA_V1_DISABLED]; + fallbackBlockedFromProfile = !!profileValue && profileValue !== "false"; + return fallbackBlockedFromProfile; + }, + default: false, + }, { + profile, + })(); + if (init.ec2MetadataV1Disabled || configValue) { + const causes = []; + if (init.ec2MetadataV1Disabled) + causes.push("credential provider initialization (runtime option ec2MetadataV1Disabled)"); + if (fallbackBlockedFromProfile) + causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`); + if (fallbackBlockedFromProcessEnv) + causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`); + throw new InstanceMetadataV1FallbackError(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(", ")}].`); + } + } + const imdsProfile = (await retry(async () => { + let profile; + try { + profile = await getProfile(options); + } + catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return profile; + }, maxRetries)).trim(); + return retry(async () => { + let creds; + try { + creds = await getCredentialsFromProfile(imdsProfile, options, init); + } + catch (err) { + if (err.statusCode === 401) { + disableFetchToken = false; + } + throw err; + } + return creds; + }, maxRetries); + }; + return async () => { + const endpoint = await getInstanceMetadataEndpoint(); + if (disableFetchToken) { + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + else { + let token; + try { + token = (await getMetadataToken({ ...endpoint, timeout })).toString(); + } + catch (error) { + if (error?.statusCode === 400) { + throw Object.assign(error, { + message: "EC2 Metadata token request returned error", + }); + } + else if (error.message === "TimeoutError" || [403, 404, 405].includes(error.statusCode)) { + disableFetchToken = true; + } + logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)"); + return getCredentials(maxRetries, { ...endpoint, timeout }); + } + return getCredentials(maxRetries, { + ...endpoint, + headers: { + [X_AWS_EC2_METADATA_TOKEN]: token, + }, + timeout, + }); + } + }; +}; +const getMetadataToken = async (options) => httpRequest({ + ...options, + path: IMDS_TOKEN_PATH, + method: "PUT", + headers: { + "x-aws-ec2-metadata-token-ttl-seconds": "21600", + }, +}); +const getProfile = async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(); +const getCredentialsFromProfile = async (profile, options, init) => { + const credentialsResponse = JSON.parse((await httpRequest({ + ...options, + path: IMDS_PATH + profile, + })).toString()); + if (!isImdsCredentials(credentialsResponse)) { + throw new CredentialsProviderError("Invalid response received from instance metadata service.", { + logger: init.logger, + }); + } + return fromImdsCredentials(credentialsResponse); +}; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/index.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/index.js new file mode 100644 index 0000000..5362760 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/index.js @@ -0,0 +1,7 @@ +export * from "./fromContainerMetadata"; +export * from "./fromInstanceMetadata"; +export * from "./remoteProvider/RemoteProviderInit"; +export * from "./types"; +export { httpRequest } from "./remoteProvider/httpRequest"; +export { getInstanceMetadataEndpoint } from "./utils/getInstanceMetadataEndpoint"; +export { Endpoint } from "./config/Endpoint"; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js new file mode 100644 index 0000000..c559c4f --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js @@ -0,0 +1,13 @@ +export const isImdsCredentials = (arg) => Boolean(arg) && + typeof arg === "object" && + typeof arg.AccessKeyId === "string" && + typeof arg.SecretAccessKey === "string" && + typeof arg.Token === "string" && + typeof arg.Expiration === "string"; +export const fromImdsCredentials = (creds) => ({ + accessKeyId: creds.AccessKeyId, + secretAccessKey: creds.SecretAccessKey, + sessionToken: creds.Token, + expiration: new Date(creds.Expiration), + ...(creds.AccountId && { accountId: creds.AccountId }), +}); diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js new file mode 100644 index 0000000..39ace38 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js @@ -0,0 +1,3 @@ +export const DEFAULT_TIMEOUT = 1000; +export const DEFAULT_MAX_RETRIES = 0; +export const providerConfigFromInit = ({ maxRetries = DEFAULT_MAX_RETRIES, timeout = DEFAULT_TIMEOUT, }) => ({ maxRetries, timeout }); diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js new file mode 100644 index 0000000..91742d0 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js @@ -0,0 +1,36 @@ +import { ProviderError } from "@smithy/property-provider"; +import { Buffer } from "buffer"; +import { request } from "http"; +export function httpRequest(options) { + return new Promise((resolve, reject) => { + const req = request({ + method: "GET", + ...options, + hostname: options.hostname?.replace(/^\[(.+)\]$/, "$1"), + }); + req.on("error", (err) => { + reject(Object.assign(new ProviderError("Unable to connect to instance metadata service"), err)); + req.destroy(); + }); + req.on("timeout", () => { + reject(new ProviderError("TimeoutError from instance metadata service")); + req.destroy(); + }); + req.on("response", (res) => { + const { statusCode = 400 } = res; + if (statusCode < 200 || 300 <= statusCode) { + reject(Object.assign(new ProviderError("Error response received from instance metadata service"), { statusCode })); + req.destroy(); + } + const chunks = []; + res.on("data", (chunk) => { + chunks.push(chunk); + }); + res.on("end", () => { + resolve(Buffer.concat(chunks)); + req.destroy(); + }); + }); + req.end(); + }); +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js new file mode 100644 index 0000000..d4ad601 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/index.js @@ -0,0 +1,2 @@ +export * from "./ImdsCredentials"; +export * from "./RemoteProviderInit"; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js new file mode 100644 index 0000000..22b79bb --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js @@ -0,0 +1,7 @@ +export const retry = (toRetry, maxRetries) => { + let promise = toRetry(); + for (let i = 0; i < maxRetries; i++) { + promise = promise.catch(toRetry); + } + return promise; +}; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/types.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js new file mode 100644 index 0000000..5614692 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js @@ -0,0 +1,17 @@ +const STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60; +const STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60; +const STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html"; +export const getExtendedInstanceMetadataCredentials = (credentials, logger) => { + const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS); + const newExpiration = new Date(Date.now() + refreshInterval * 1000); + logger.warn("Attempting credential expiration extension due to a credential service availability issue. A refresh of these " + + `credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: ` + + STATIC_STABILITY_DOC_URL); + const originalExpiration = credentials.originalExpiration ?? credentials.expiration; + return { + ...credentials, + ...(originalExpiration ? { originalExpiration } : {}), + expiration: newExpiration, + }; +}; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js new file mode 100644 index 0000000..4c611ad --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js @@ -0,0 +1,19 @@ +import { loadConfig } from "@smithy/node-config-provider"; +import { parseUrl } from "@smithy/url-parser"; +import { Endpoint as InstanceMetadataEndpoint } from "../config/Endpoint"; +import { ENDPOINT_CONFIG_OPTIONS } from "../config/EndpointConfigOptions"; +import { EndpointMode } from "../config/EndpointMode"; +import { ENDPOINT_MODE_CONFIG_OPTIONS, } from "../config/EndpointModeConfigOptions"; +export const getInstanceMetadataEndpoint = async () => parseUrl((await getFromEndpointConfig()) || (await getFromEndpointModeConfig())); +const getFromEndpointConfig = async () => loadConfig(ENDPOINT_CONFIG_OPTIONS)(); +const getFromEndpointModeConfig = async () => { + const endpointMode = await loadConfig(ENDPOINT_MODE_CONFIG_OPTIONS)(); + switch (endpointMode) { + case EndpointMode.IPv4: + return InstanceMetadataEndpoint.IPv4; + case EndpointMode.IPv6: + return InstanceMetadataEndpoint.IPv6; + default: + throw new Error(`Unsupported endpoint mode: ${endpointMode}.` + ` Select from ${Object.values(EndpointMode)}`); + } +}; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js b/bff/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js new file mode 100644 index 0000000..9a1e742 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js @@ -0,0 +1,25 @@ +import { getExtendedInstanceMetadataCredentials } from "./getExtendedInstanceMetadataCredentials"; +export const staticStabilityProvider = (provider, options = {}) => { + const logger = options?.logger || console; + let pastCredentials; + return async () => { + let credentials; + try { + credentials = await provider(); + if (credentials.expiration && credentials.expiration.getTime() < Date.now()) { + credentials = getExtendedInstanceMetadataCredentials(credentials, logger); + } + } + catch (e) { + if (pastCredentials) { + logger.warn("Credential renew failed: ", e); + credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger); + } + else { + throw e; + } + } + pastCredentials = credentials; + return credentials; + }; +}; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/Endpoint.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/Endpoint.d.ts new file mode 100644 index 0000000..000e313 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/Endpoint.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum Endpoint { + IPv4 = "http://169.254.169.254", + IPv6 = "http://[fd00:ec2::254]" +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointConfigOptions.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointConfigOptions.d.ts new file mode 100644 index 0000000..0c33092 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointConfigOptions.d.ts @@ -0,0 +1,13 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; +/** + * @internal + */ +export declare const ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointMode.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointMode.d.ts new file mode 100644 index 0000000..db70619 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointMode.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum EndpointMode { + IPv4 = "IPv4", + IPv6 = "IPv6" +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointModeConfigOptions.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointModeConfigOptions.d.ts new file mode 100644 index 0000000..0037c88 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/config/EndpointModeConfigOptions.d.ts @@ -0,0 +1,13 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; +/** + * @internal + */ +export declare const CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; +/** + * @internal + */ +export declare const ENDPOINT_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/error/InstanceMetadataV1FallbackError.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/error/InstanceMetadataV1FallbackError.d.ts new file mode 100644 index 0000000..8338ccb --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/error/InstanceMetadataV1FallbackError.d.ts @@ -0,0 +1,12 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +/** + * @public + * + * A specific sub-case of CredentialsProviderError, when the IMDSv1 fallback + * has been attempted but shut off by SDK configuration. + */ +export declare class InstanceMetadataV1FallbackError extends CredentialsProviderError { + readonly tryNextLink: boolean; + name: string; + constructor(message: string, tryNextLink?: boolean); +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/fromContainerMetadata.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/fromContainerMetadata.d.ts new file mode 100644 index 0000000..bb64ddb --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/fromContainerMetadata.d.ts @@ -0,0 +1,21 @@ +import type { AwsCredentialIdentityProvider } from "@smithy/types"; +import type { RemoteProviderInit } from "./remoteProvider/RemoteProviderInit"; +/** + * @internal + */ +export declare const ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +/** + * @internal + */ +export declare const ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +/** + * @internal + */ +export declare const ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +/** + * @internal + * + * Creates a credential provider that will source credentials from the ECS + * Container Metadata Service + */ +export declare const fromContainerMetadata: (init?: RemoteProviderInit) => AwsCredentialIdentityProvider; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/fromInstanceMetadata.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/fromInstanceMetadata.d.ts new file mode 100644 index 0000000..80a94aa --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/fromInstanceMetadata.d.ts @@ -0,0 +1,10 @@ +import type { Provider } from "@smithy/types"; +import type { RemoteProviderInit } from "./remoteProvider/RemoteProviderInit"; +import type { InstanceMetadataCredentials } from "./types"; +/** + * @internal + * + * Creates a credential provider that will source credentials from the EC2 + * Instance Metadata Service + */ +export declare const fromInstanceMetadata: (init?: RemoteProviderInit) => Provider; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/index.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/index.d.ts new file mode 100644 index 0000000..5a87b2f --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/index.d.ts @@ -0,0 +1,28 @@ +/** + * @internal + */ +export * from "./fromContainerMetadata"; +/** + * @internal + */ +export * from "./fromInstanceMetadata"; +/** + * @internal + */ +export * from "./remoteProvider/RemoteProviderInit"; +/** + * @internal + */ +export * from "./types"; +/** + * @internal + */ +export { httpRequest } from "./remoteProvider/httpRequest"; +/** + * @internal + */ +export { getInstanceMetadataEndpoint } from "./utils/getInstanceMetadataEndpoint"; +/** + * @internal + */ +export { Endpoint } from "./config/Endpoint"; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/ImdsCredentials.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/ImdsCredentials.d.ts new file mode 100644 index 0000000..fd55932 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/ImdsCredentials.d.ts @@ -0,0 +1,19 @@ +import type { AwsCredentialIdentity } from "@smithy/types"; +/** + * @internal + */ +export interface ImdsCredentials { + AccessKeyId: string; + SecretAccessKey: string; + Token: string; + Expiration: string; + AccountId?: string; +} +/** + * @internal + */ +export declare const isImdsCredentials: (arg: any) => arg is ImdsCredentials; +/** + * @internal + */ +export declare const fromImdsCredentials: (creds: ImdsCredentials) => AwsCredentialIdentity; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/RemoteProviderInit.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/RemoteProviderInit.d.ts new file mode 100644 index 0000000..68e6ffe --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/RemoteProviderInit.d.ts @@ -0,0 +1,40 @@ +import type { Logger } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULT_TIMEOUT = 1000; +/** + * @internal + */ +export declare const DEFAULT_MAX_RETRIES = 0; +/** + * @public + */ +export interface RemoteProviderConfig { + /** + * The connection timeout (in milliseconds) + */ + timeout: number; + /** + * The maximum number of times the HTTP connection should be retried + */ + maxRetries: number; +} +/** + * @public + */ +export interface RemoteProviderInit extends Partial { + logger?: Logger; + /** + * Only used in the IMDS credential provider. + */ + ec2MetadataV1Disabled?: boolean; + /** + * AWS_PROFILE. + */ + profile?: string; +} +/** + * @internal + */ +export declare const providerConfigFromInit: ({ maxRetries, timeout, }: RemoteProviderInit) => RemoteProviderConfig; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/httpRequest.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/httpRequest.d.ts new file mode 100644 index 0000000..49edfba --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/httpRequest.d.ts @@ -0,0 +1,6 @@ +import { Buffer } from "buffer"; +import type { RequestOptions } from "http"; +/** + * @internal + */ +export declare function httpRequest(options: RequestOptions): Promise; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/index.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/index.d.ts new file mode 100644 index 0000000..ed18a70 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./ImdsCredentials"; +/** + * @internal + */ +export * from "./RemoteProviderInit"; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/retry.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/retry.d.ts new file mode 100644 index 0000000..4e8abc0 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/remoteProvider/retry.d.ts @@ -0,0 +1,10 @@ +/** + * @internal + */ +export interface RetryableProvider { + (): Promise; +} +/** + * @internal + */ +export declare const retry: (toRetry: RetryableProvider, maxRetries: number) => Promise; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/Endpoint.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/Endpoint.d.ts new file mode 100644 index 0000000..b700953 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/Endpoint.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum Endpoint { + IPv4 = "http://169.254.169.254", + IPv6 = "http://[fd00:ec2::254]" +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointConfigOptions.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointConfigOptions.d.ts new file mode 100644 index 0000000..dbcb243 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointConfigOptions.d.ts @@ -0,0 +1,13 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT"; +/** + * @internal + */ +export declare const CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint"; +/** + * @internal + */ +export declare const ENDPOINT_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointMode.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointMode.d.ts new file mode 100644 index 0000000..7dee86e --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointMode.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum EndpointMode { + IPv4 = "IPv4", + IPv6 = "IPv6" +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointModeConfigOptions.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointModeConfigOptions.d.ts new file mode 100644 index 0000000..1d5e458 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/config/EndpointModeConfigOptions.d.ts @@ -0,0 +1,13 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +/** + * @internal + */ +export declare const ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE"; +/** + * @internal + */ +export declare const CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode"; +/** + * @internal + */ +export declare const ENDPOINT_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/error/InstanceMetadataV1FallbackError.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/error/InstanceMetadataV1FallbackError.d.ts new file mode 100644 index 0000000..93ac220 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/error/InstanceMetadataV1FallbackError.d.ts @@ -0,0 +1,12 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +/** + * @public + * + * A specific sub-case of CredentialsProviderError, when the IMDSv1 fallback + * has been attempted but shut off by SDK configuration. + */ +export declare class InstanceMetadataV1FallbackError extends CredentialsProviderError { + readonly tryNextLink: boolean; + name: string; + constructor(message: string, tryNextLink?: boolean); +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromContainerMetadata.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromContainerMetadata.d.ts new file mode 100644 index 0000000..deb48fd --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromContainerMetadata.d.ts @@ -0,0 +1,21 @@ +import { AwsCredentialIdentityProvider } from "@smithy/types"; +import { RemoteProviderInit } from "./remoteProvider/RemoteProviderInit"; +/** + * @internal + */ +export declare const ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI"; +/** + * @internal + */ +export declare const ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"; +/** + * @internal + */ +export declare const ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN"; +/** + * @internal + * + * Creates a credential provider that will source credentials from the ECS + * Container Metadata Service + */ +export declare const fromContainerMetadata: (init?: RemoteProviderInit) => AwsCredentialIdentityProvider; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromInstanceMetadata.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromInstanceMetadata.d.ts new file mode 100644 index 0000000..8a533f2 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/fromInstanceMetadata.d.ts @@ -0,0 +1,10 @@ +import { Provider } from "@smithy/types"; +import { RemoteProviderInit } from "./remoteProvider/RemoteProviderInit"; +import { InstanceMetadataCredentials } from "./types"; +/** + * @internal + * + * Creates a credential provider that will source credentials from the EC2 + * Instance Metadata Service + */ +export declare const fromInstanceMetadata: (init?: RemoteProviderInit) => Provider; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..c0bc7e4 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/index.d.ts @@ -0,0 +1,28 @@ +/** + * @internal + */ +export * from "./fromContainerMetadata"; +/** + * @internal + */ +export * from "./fromInstanceMetadata"; +/** + * @internal + */ +export * from "./remoteProvider/RemoteProviderInit"; +/** + * @internal + */ +export * from "./types"; +/** + * @internal + */ +export { httpRequest } from "./remoteProvider/httpRequest"; +/** + * @internal + */ +export { getInstanceMetadataEndpoint } from "./utils/getInstanceMetadataEndpoint"; +/** + * @internal + */ +export { Endpoint } from "./config/Endpoint"; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/ImdsCredentials.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/ImdsCredentials.d.ts new file mode 100644 index 0000000..c621e0a --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/ImdsCredentials.d.ts @@ -0,0 +1,19 @@ +import { AwsCredentialIdentity } from "@smithy/types"; +/** + * @internal + */ +export interface ImdsCredentials { + AccessKeyId: string; + SecretAccessKey: string; + Token: string; + Expiration: string; + AccountId?: string; +} +/** + * @internal + */ +export declare const isImdsCredentials: (arg: any) => arg is ImdsCredentials; +/** + * @internal + */ +export declare const fromImdsCredentials: (creds: ImdsCredentials) => AwsCredentialIdentity; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/RemoteProviderInit.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/RemoteProviderInit.d.ts new file mode 100644 index 0000000..4fe25f1 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/RemoteProviderInit.d.ts @@ -0,0 +1,40 @@ +import { Logger } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULT_TIMEOUT = 1000; +/** + * @internal + */ +export declare const DEFAULT_MAX_RETRIES = 0; +/** + * @public + */ +export interface RemoteProviderConfig { + /** + * The connection timeout (in milliseconds) + */ + timeout: number; + /** + * The maximum number of times the HTTP connection should be retried + */ + maxRetries: number; +} +/** + * @public + */ +export interface RemoteProviderInit extends Partial { + logger?: Logger; + /** + * Only used in the IMDS credential provider. + */ + ec2MetadataV1Disabled?: boolean; + /** + * AWS_PROFILE. + */ + profile?: string; +} +/** + * @internal + */ +export declare const providerConfigFromInit: ({ maxRetries, timeout, }: RemoteProviderInit) => RemoteProviderConfig; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/httpRequest.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/httpRequest.d.ts new file mode 100644 index 0000000..944e86d --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/httpRequest.d.ts @@ -0,0 +1,6 @@ +import { Buffer } from "buffer"; +import { RequestOptions } from "http"; +/** + * @internal + */ +export declare function httpRequest(options: RequestOptions): Promise; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/index.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/index.d.ts new file mode 100644 index 0000000..a9d6094 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./ImdsCredentials"; +/** + * @internal + */ +export * from "./RemoteProviderInit"; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/retry.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/retry.d.ts new file mode 100644 index 0000000..d72d604 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/remoteProvider/retry.d.ts @@ -0,0 +1,10 @@ +/** + * @internal + */ +export interface RetryableProvider { + (): Promise; +} +/** + * @internal + */ +export declare const retry: (toRetry: RetryableProvider, maxRetries: number) => Promise; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/types.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..2e9592b --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/types.d.ts @@ -0,0 +1,7 @@ +import { AwsCredentialIdentity } from "@smithy/types"; +/** + * @internal + */ +export interface InstanceMetadataCredentials extends AwsCredentialIdentity { + readonly originalExpiration?: Date; +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getExtendedInstanceMetadataCredentials.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getExtendedInstanceMetadataCredentials.d.ts new file mode 100644 index 0000000..67edd2c --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getExtendedInstanceMetadataCredentials.d.ts @@ -0,0 +1,6 @@ +import { Logger } from "@smithy/types"; +import { InstanceMetadataCredentials } from "../types"; +/** + * @internal + */ +export declare const getExtendedInstanceMetadataCredentials: (credentials: InstanceMetadataCredentials, logger: Logger) => InstanceMetadataCredentials; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getInstanceMetadataEndpoint.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getInstanceMetadataEndpoint.d.ts new file mode 100644 index 0000000..1ad772d --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/getInstanceMetadataEndpoint.d.ts @@ -0,0 +1,21 @@ +import { Endpoint } from "@smithy/types"; +/** + * Returns the host to use for instance metadata service call. + * + * The host is read from endpoint which can be set either in + * {@link ENV_ENDPOINT_NAME} environment variable or {@link CONFIG_ENDPOINT_NAME} + * configuration property. + * + * If endpoint is not set, then endpoint mode is read either from + * {@link ENV_ENDPOINT_MODE_NAME} environment variable or {@link CONFIG_ENDPOINT_MODE_NAME} + * configuration property. If endpoint mode is not set, then default endpoint mode + * {@link EndpointMode.IPv4} is used. + * + * If endpoint mode is set to {@link EndpointMode.IPv4}, then the host is {@link Endpoint.IPv4}. + * If endpoint mode is set to {@link EndpointMode.IPv6}, then the host is {@link Endpoint.IPv6}. + * + * @returns Host to use for instance metadata service call. + * + * @internal + */ +export declare const getInstanceMetadataEndpoint: () => Promise; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/staticStabilityProvider.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/staticStabilityProvider.d.ts new file mode 100644 index 0000000..474d6f8 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/ts3.4/utils/staticStabilityProvider.d.ts @@ -0,0 +1,16 @@ +import { Logger, Provider } from "@smithy/types"; +import { InstanceMetadataCredentials } from "../types"; +/** + * @internal + * + * IMDS credential supports static stability feature. When used, the expiration + * of recently issued credentials is extended. The server side allows using + * the recently expired credentials. This mitigates impact when clients using + * refreshable credentials are unable to retrieve updates. + * + * @param provider Credential provider + * @returns A credential provider that supports static stability + */ +export declare const staticStabilityProvider: (provider: Provider, options?: { + logger?: Logger; +}) => Provider; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/types.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/types.d.ts new file mode 100644 index 0000000..d9434ed --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/types.d.ts @@ -0,0 +1,7 @@ +import type { AwsCredentialIdentity } from "@smithy/types"; +/** + * @internal + */ +export interface InstanceMetadataCredentials extends AwsCredentialIdentity { + readonly originalExpiration?: Date; +} diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/utils/getExtendedInstanceMetadataCredentials.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/utils/getExtendedInstanceMetadataCredentials.d.ts new file mode 100644 index 0000000..8420aa2 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/utils/getExtendedInstanceMetadataCredentials.d.ts @@ -0,0 +1,6 @@ +import type { Logger } from "@smithy/types"; +import type { InstanceMetadataCredentials } from "../types"; +/** + * @internal + */ +export declare const getExtendedInstanceMetadataCredentials: (credentials: InstanceMetadataCredentials, logger: Logger) => InstanceMetadataCredentials; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/utils/getInstanceMetadataEndpoint.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/utils/getInstanceMetadataEndpoint.d.ts new file mode 100644 index 0000000..63c0b7b --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/utils/getInstanceMetadataEndpoint.d.ts @@ -0,0 +1,21 @@ +import type { Endpoint } from "@smithy/types"; +/** + * Returns the host to use for instance metadata service call. + * + * The host is read from endpoint which can be set either in + * {@link ENV_ENDPOINT_NAME} environment variable or {@link CONFIG_ENDPOINT_NAME} + * configuration property. + * + * If endpoint is not set, then endpoint mode is read either from + * {@link ENV_ENDPOINT_MODE_NAME} environment variable or {@link CONFIG_ENDPOINT_MODE_NAME} + * configuration property. If endpoint mode is not set, then default endpoint mode + * {@link EndpointMode.IPv4} is used. + * + * If endpoint mode is set to {@link EndpointMode.IPv4}, then the host is {@link Endpoint.IPv4}. + * If endpoint mode is set to {@link EndpointMode.IPv6}, then the host is {@link Endpoint.IPv6}. + * + * @returns Host to use for instance metadata service call. + * + * @internal + */ +export declare const getInstanceMetadataEndpoint: () => Promise; diff --git a/bff/node_modules/@smithy/credential-provider-imds/dist-types/utils/staticStabilityProvider.d.ts b/bff/node_modules/@smithy/credential-provider-imds/dist-types/utils/staticStabilityProvider.d.ts new file mode 100644 index 0000000..9ad9ddc --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/dist-types/utils/staticStabilityProvider.d.ts @@ -0,0 +1,16 @@ +import type { Logger, Provider } from "@smithy/types"; +import type { InstanceMetadataCredentials } from "../types"; +/** + * @internal + * + * IMDS credential supports static stability feature. When used, the expiration + * of recently issued credentials is extended. The server side allows using + * the recently expired credentials. This mitigates impact when clients using + * refreshable credentials are unable to retrieve updates. + * + * @param provider Credential provider + * @returns A credential provider that supports static stability + */ +export declare const staticStabilityProvider: (provider: Provider, options?: { + logger?: Logger; +}) => Provider; diff --git a/bff/node_modules/@smithy/credential-provider-imds/package.json b/bff/node_modules/@smithy/credential-provider-imds/package.json new file mode 100644 index 0000000..cf25306 --- /dev/null +++ b/bff/node_modules/@smithy/credential-provider-imds/package.json @@ -0,0 +1,70 @@ +{ + "name": "@smithy/credential-provider-imds", + "version": "4.2.12", + "description": "AWS credential provider that sources credentials from the EC2 instance metadata service and ECS container metadata service", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline credential-provider-imds", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/credential-provider-imds", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/credential-provider-imds" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/eventstream-codec/LICENSE b/bff/node_modules/@smithy/eventstream-codec/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/eventstream-codec/README.md b/bff/node_modules/@smithy/eventstream-codec/README.md new file mode 100644 index 0000000..f846ca1 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/README.md @@ -0,0 +1,4 @@ +# @smithy/eventstream-codec + +[![NPM version](https://img.shields.io/npm/v/@smithy/eventstream-codec/latest.svg)](https://www.npmjs.com/package/@smithy/eventstream-codec) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/eventstream-codec.svg)](https://www.npmjs.com/package/@smithy/eventstream-codec) diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-cjs/index.js b/bff/node_modules/@smithy/eventstream-codec/dist-cjs/index.js new file mode 100644 index 0000000..a17fea8 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-cjs/index.js @@ -0,0 +1,388 @@ +'use strict'; + +var crc32 = require('@aws-crypto/crc32'); +var utilHexEncoding = require('@smithy/util-hex-encoding'); + +class Int64 { + bytes; + constructor(bytes) { + this.bytes = bytes; + if (bytes.byteLength !== 8) { + throw new Error("Int64 buffers must be exactly 8 bytes"); + } + } + static fromNumber(number) { + if (number > 9_223_372_036_854_775_807 || number < -9223372036854776e3) { + throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`); + } + const bytes = new Uint8Array(8); + for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) { + bytes[i] = remaining; + } + if (number < 0) { + negate(bytes); + } + return new Int64(bytes); + } + valueOf() { + const bytes = this.bytes.slice(0); + const negative = bytes[0] & 0b10000000; + if (negative) { + negate(bytes); + } + return parseInt(utilHexEncoding.toHex(bytes), 16) * (negative ? -1 : 1); + } + toString() { + return String(this.valueOf()); + } +} +function negate(bytes) { + for (let i = 0; i < 8; i++) { + bytes[i] ^= 0xff; + } + for (let i = 7; i > -1; i--) { + bytes[i]++; + if (bytes[i] !== 0) + break; + } +} + +class HeaderMarshaller { + toUtf8; + fromUtf8; + constructor(toUtf8, fromUtf8) { + this.toUtf8 = toUtf8; + this.fromUtf8 = fromUtf8; + } + format(headers) { + const chunks = []; + for (const headerName of Object.keys(headers)) { + const bytes = this.fromUtf8(headerName); + chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName])); + } + const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0)); + let position = 0; + for (const chunk of chunks) { + out.set(chunk, position); + position += chunk.byteLength; + } + return out; + } + formatHeaderValue(header) { + switch (header.type) { + case "boolean": + return Uint8Array.from([header.value ? 0 : 1]); + case "byte": + return Uint8Array.from([2, header.value]); + case "short": + const shortView = new DataView(new ArrayBuffer(3)); + shortView.setUint8(0, 3); + shortView.setInt16(1, header.value, false); + return new Uint8Array(shortView.buffer); + case "integer": + const intView = new DataView(new ArrayBuffer(5)); + intView.setUint8(0, 4); + intView.setInt32(1, header.value, false); + return new Uint8Array(intView.buffer); + case "long": + const longBytes = new Uint8Array(9); + longBytes[0] = 5; + longBytes.set(header.value.bytes, 1); + return longBytes; + case "binary": + const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength)); + binView.setUint8(0, 6); + binView.setUint16(1, header.value.byteLength, false); + const binBytes = new Uint8Array(binView.buffer); + binBytes.set(header.value, 3); + return binBytes; + case "string": + const utf8Bytes = this.fromUtf8(header.value); + const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength)); + strView.setUint8(0, 7); + strView.setUint16(1, utf8Bytes.byteLength, false); + const strBytes = new Uint8Array(strView.buffer); + strBytes.set(utf8Bytes, 3); + return strBytes; + case "timestamp": + const tsBytes = new Uint8Array(9); + tsBytes[0] = 8; + tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1); + return tsBytes; + case "uuid": + if (!UUID_PATTERN.test(header.value)) { + throw new Error(`Invalid UUID received: ${header.value}`); + } + const uuidBytes = new Uint8Array(17); + uuidBytes[0] = 9; + uuidBytes.set(utilHexEncoding.fromHex(header.value.replace(/\-/g, "")), 1); + return uuidBytes; + } + } + parse(headers) { + const out = {}; + let position = 0; + while (position < headers.byteLength) { + const nameLength = headers.getUint8(position++); + const name = this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, nameLength)); + position += nameLength; + switch (headers.getUint8(position++)) { + case 0: + out[name] = { + type: BOOLEAN_TAG, + value: true, + }; + break; + case 1: + out[name] = { + type: BOOLEAN_TAG, + value: false, + }; + break; + case 2: + out[name] = { + type: BYTE_TAG, + value: headers.getInt8(position++), + }; + break; + case 3: + out[name] = { + type: SHORT_TAG, + value: headers.getInt16(position, false), + }; + position += 2; + break; + case 4: + out[name] = { + type: INT_TAG, + value: headers.getInt32(position, false), + }; + position += 4; + break; + case 5: + out[name] = { + type: LONG_TAG, + value: new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)), + }; + position += 8; + break; + case 6: + const binaryLength = headers.getUint16(position, false); + position += 2; + out[name] = { + type: BINARY_TAG, + value: new Uint8Array(headers.buffer, headers.byteOffset + position, binaryLength), + }; + position += binaryLength; + break; + case 7: + const stringLength = headers.getUint16(position, false); + position += 2; + out[name] = { + type: STRING_TAG, + value: this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, stringLength)), + }; + position += stringLength; + break; + case 8: + out[name] = { + type: TIMESTAMP_TAG, + value: new Date(new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)).valueOf()), + }; + position += 8; + break; + case 9: + const uuidBytes = new Uint8Array(headers.buffer, headers.byteOffset + position, 16); + position += 16; + out[name] = { + type: UUID_TAG, + value: `${utilHexEncoding.toHex(uuidBytes.subarray(0, 4))}-${utilHexEncoding.toHex(uuidBytes.subarray(4, 6))}-${utilHexEncoding.toHex(uuidBytes.subarray(6, 8))}-${utilHexEncoding.toHex(uuidBytes.subarray(8, 10))}-${utilHexEncoding.toHex(uuidBytes.subarray(10))}`, + }; + break; + default: + throw new Error(`Unrecognized header type tag`); + } + } + return out; + } +} +const BOOLEAN_TAG = "boolean"; +const BYTE_TAG = "byte"; +const SHORT_TAG = "short"; +const INT_TAG = "integer"; +const LONG_TAG = "long"; +const BINARY_TAG = "binary"; +const STRING_TAG = "string"; +const TIMESTAMP_TAG = "timestamp"; +const UUID_TAG = "uuid"; +const UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/; + +const PRELUDE_MEMBER_LENGTH = 4; +const PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2; +const CHECKSUM_LENGTH = 4; +const MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2; +function splitMessage({ byteLength, byteOffset, buffer }) { + if (byteLength < MINIMUM_MESSAGE_LENGTH) { + throw new Error("Provided message too short to accommodate event stream message overhead"); + } + const view = new DataView(buffer, byteOffset, byteLength); + const messageLength = view.getUint32(0, false); + if (byteLength !== messageLength) { + throw new Error("Reported message length does not match received message length"); + } + const headerLength = view.getUint32(PRELUDE_MEMBER_LENGTH, false); + const expectedPreludeChecksum = view.getUint32(PRELUDE_LENGTH, false); + const expectedMessageChecksum = view.getUint32(byteLength - CHECKSUM_LENGTH, false); + const checksummer = new crc32.Crc32().update(new Uint8Array(buffer, byteOffset, PRELUDE_LENGTH)); + if (expectedPreludeChecksum !== checksummer.digest()) { + throw new Error(`The prelude checksum specified in the message (${expectedPreludeChecksum}) does not match the calculated CRC32 checksum (${checksummer.digest()})`); + } + checksummer.update(new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH, byteLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH))); + if (expectedMessageChecksum !== checksummer.digest()) { + throw new Error(`The message checksum (${checksummer.digest()}) did not match the expected value of ${expectedMessageChecksum}`); + } + return { + headers: new DataView(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH, headerLength), + body: new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH + headerLength, messageLength - headerLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH + CHECKSUM_LENGTH)), + }; +} + +class EventStreamCodec { + headerMarshaller; + messageBuffer; + isEndOfStream; + constructor(toUtf8, fromUtf8) { + this.headerMarshaller = new HeaderMarshaller(toUtf8, fromUtf8); + this.messageBuffer = []; + this.isEndOfStream = false; + } + feed(message) { + this.messageBuffer.push(this.decode(message)); + } + endOfStream() { + this.isEndOfStream = true; + } + getMessage() { + const message = this.messageBuffer.pop(); + const isEndOfStream = this.isEndOfStream; + return { + getMessage() { + return message; + }, + isEndOfStream() { + return isEndOfStream; + }, + }; + } + getAvailableMessages() { + const messages = this.messageBuffer; + this.messageBuffer = []; + const isEndOfStream = this.isEndOfStream; + return { + getMessages() { + return messages; + }, + isEndOfStream() { + return isEndOfStream; + }, + }; + } + encode({ headers: rawHeaders, body }) { + const headers = this.headerMarshaller.format(rawHeaders); + const length = headers.byteLength + body.byteLength + 16; + const out = new Uint8Array(length); + const view = new DataView(out.buffer, out.byteOffset, out.byteLength); + const checksum = new crc32.Crc32(); + view.setUint32(0, length, false); + view.setUint32(4, headers.byteLength, false); + view.setUint32(8, checksum.update(out.subarray(0, 8)).digest(), false); + out.set(headers, 12); + out.set(body, headers.byteLength + 12); + view.setUint32(length - 4, checksum.update(out.subarray(8, length - 4)).digest(), false); + return out; + } + decode(message) { + const { headers, body } = splitMessage(message); + return { headers: this.headerMarshaller.parse(headers), body }; + } + formatHeaders(rawHeaders) { + return this.headerMarshaller.format(rawHeaders); + } +} + +class MessageDecoderStream { + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const bytes of this.options.inputStream) { + const decoded = this.options.decoder.decode(bytes); + yield decoded; + } + } +} + +class MessageEncoderStream { + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const msg of this.options.messageStream) { + const encoded = this.options.encoder.encode(msg); + yield encoded; + } + if (this.options.includeEndFrame) { + yield new Uint8Array(0); + } + } +} + +class SmithyMessageDecoderStream { + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const message of this.options.messageStream) { + const deserialized = await this.options.deserializer(message); + if (deserialized === undefined) + continue; + yield deserialized; + } + } +} + +class SmithyMessageEncoderStream { + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const chunk of this.options.inputStream) { + const payloadBuf = this.options.serializer(chunk); + yield payloadBuf; + } + } +} + +exports.EventStreamCodec = EventStreamCodec; +exports.HeaderMarshaller = HeaderMarshaller; +exports.Int64 = Int64; +exports.MessageDecoderStream = MessageDecoderStream; +exports.MessageEncoderStream = MessageEncoderStream; +exports.SmithyMessageDecoderStream = SmithyMessageDecoderStream; +exports.SmithyMessageEncoderStream = SmithyMessageEncoderStream; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/EventStreamCodec.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/EventStreamCodec.js new file mode 100644 index 0000000..87edad1 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/EventStreamCodec.js @@ -0,0 +1,65 @@ +import { Crc32 } from "@aws-crypto/crc32"; +import { HeaderMarshaller } from "./HeaderMarshaller"; +import { splitMessage } from "./splitMessage"; +export class EventStreamCodec { + headerMarshaller; + messageBuffer; + isEndOfStream; + constructor(toUtf8, fromUtf8) { + this.headerMarshaller = new HeaderMarshaller(toUtf8, fromUtf8); + this.messageBuffer = []; + this.isEndOfStream = false; + } + feed(message) { + this.messageBuffer.push(this.decode(message)); + } + endOfStream() { + this.isEndOfStream = true; + } + getMessage() { + const message = this.messageBuffer.pop(); + const isEndOfStream = this.isEndOfStream; + return { + getMessage() { + return message; + }, + isEndOfStream() { + return isEndOfStream; + }, + }; + } + getAvailableMessages() { + const messages = this.messageBuffer; + this.messageBuffer = []; + const isEndOfStream = this.isEndOfStream; + return { + getMessages() { + return messages; + }, + isEndOfStream() { + return isEndOfStream; + }, + }; + } + encode({ headers: rawHeaders, body }) { + const headers = this.headerMarshaller.format(rawHeaders); + const length = headers.byteLength + body.byteLength + 16; + const out = new Uint8Array(length); + const view = new DataView(out.buffer, out.byteOffset, out.byteLength); + const checksum = new Crc32(); + view.setUint32(0, length, false); + view.setUint32(4, headers.byteLength, false); + view.setUint32(8, checksum.update(out.subarray(0, 8)).digest(), false); + out.set(headers, 12); + out.set(body, headers.byteLength + 12); + view.setUint32(length - 4, checksum.update(out.subarray(8, length - 4)).digest(), false); + return out; + } + decode(message) { + const { headers, body } = splitMessage(message); + return { headers: this.headerMarshaller.parse(headers), body }; + } + formatHeaders(rawHeaders) { + return this.headerMarshaller.format(rawHeaders); + } +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/HeaderMarshaller.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/HeaderMarshaller.js new file mode 100644 index 0000000..7e0ce59 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/HeaderMarshaller.js @@ -0,0 +1,184 @@ +import { fromHex, toHex } from "@smithy/util-hex-encoding"; +import { Int64 } from "./Int64"; +export class HeaderMarshaller { + toUtf8; + fromUtf8; + constructor(toUtf8, fromUtf8) { + this.toUtf8 = toUtf8; + this.fromUtf8 = fromUtf8; + } + format(headers) { + const chunks = []; + for (const headerName of Object.keys(headers)) { + const bytes = this.fromUtf8(headerName); + chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName])); + } + const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0)); + let position = 0; + for (const chunk of chunks) { + out.set(chunk, position); + position += chunk.byteLength; + } + return out; + } + formatHeaderValue(header) { + switch (header.type) { + case "boolean": + return Uint8Array.from([header.value ? 0 : 1]); + case "byte": + return Uint8Array.from([2, header.value]); + case "short": + const shortView = new DataView(new ArrayBuffer(3)); + shortView.setUint8(0, 3); + shortView.setInt16(1, header.value, false); + return new Uint8Array(shortView.buffer); + case "integer": + const intView = new DataView(new ArrayBuffer(5)); + intView.setUint8(0, 4); + intView.setInt32(1, header.value, false); + return new Uint8Array(intView.buffer); + case "long": + const longBytes = new Uint8Array(9); + longBytes[0] = 5; + longBytes.set(header.value.bytes, 1); + return longBytes; + case "binary": + const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength)); + binView.setUint8(0, 6); + binView.setUint16(1, header.value.byteLength, false); + const binBytes = new Uint8Array(binView.buffer); + binBytes.set(header.value, 3); + return binBytes; + case "string": + const utf8Bytes = this.fromUtf8(header.value); + const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength)); + strView.setUint8(0, 7); + strView.setUint16(1, utf8Bytes.byteLength, false); + const strBytes = new Uint8Array(strView.buffer); + strBytes.set(utf8Bytes, 3); + return strBytes; + case "timestamp": + const tsBytes = new Uint8Array(9); + tsBytes[0] = 8; + tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1); + return tsBytes; + case "uuid": + if (!UUID_PATTERN.test(header.value)) { + throw new Error(`Invalid UUID received: ${header.value}`); + } + const uuidBytes = new Uint8Array(17); + uuidBytes[0] = 9; + uuidBytes.set(fromHex(header.value.replace(/\-/g, "")), 1); + return uuidBytes; + } + } + parse(headers) { + const out = {}; + let position = 0; + while (position < headers.byteLength) { + const nameLength = headers.getUint8(position++); + const name = this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, nameLength)); + position += nameLength; + switch (headers.getUint8(position++)) { + case 0: + out[name] = { + type: BOOLEAN_TAG, + value: true, + }; + break; + case 1: + out[name] = { + type: BOOLEAN_TAG, + value: false, + }; + break; + case 2: + out[name] = { + type: BYTE_TAG, + value: headers.getInt8(position++), + }; + break; + case 3: + out[name] = { + type: SHORT_TAG, + value: headers.getInt16(position, false), + }; + position += 2; + break; + case 4: + out[name] = { + type: INT_TAG, + value: headers.getInt32(position, false), + }; + position += 4; + break; + case 5: + out[name] = { + type: LONG_TAG, + value: new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)), + }; + position += 8; + break; + case 6: + const binaryLength = headers.getUint16(position, false); + position += 2; + out[name] = { + type: BINARY_TAG, + value: new Uint8Array(headers.buffer, headers.byteOffset + position, binaryLength), + }; + position += binaryLength; + break; + case 7: + const stringLength = headers.getUint16(position, false); + position += 2; + out[name] = { + type: STRING_TAG, + value: this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, stringLength)), + }; + position += stringLength; + break; + case 8: + out[name] = { + type: TIMESTAMP_TAG, + value: new Date(new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)).valueOf()), + }; + position += 8; + break; + case 9: + const uuidBytes = new Uint8Array(headers.buffer, headers.byteOffset + position, 16); + position += 16; + out[name] = { + type: UUID_TAG, + value: `${toHex(uuidBytes.subarray(0, 4))}-${toHex(uuidBytes.subarray(4, 6))}-${toHex(uuidBytes.subarray(6, 8))}-${toHex(uuidBytes.subarray(8, 10))}-${toHex(uuidBytes.subarray(10))}`, + }; + break; + default: + throw new Error(`Unrecognized header type tag`); + } + } + return out; + } +} +var HEADER_VALUE_TYPE; +(function (HEADER_VALUE_TYPE) { + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["boolTrue"] = 0] = "boolTrue"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["boolFalse"] = 1] = "boolFalse"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["byte"] = 2] = "byte"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["short"] = 3] = "short"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["integer"] = 4] = "integer"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["long"] = 5] = "long"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["byteArray"] = 6] = "byteArray"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["string"] = 7] = "string"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["timestamp"] = 8] = "timestamp"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["uuid"] = 9] = "uuid"; +})(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {})); +const BOOLEAN_TAG = "boolean"; +const BYTE_TAG = "byte"; +const SHORT_TAG = "short"; +const INT_TAG = "integer"; +const LONG_TAG = "long"; +const BINARY_TAG = "binary"; +const STRING_TAG = "string"; +const TIMESTAMP_TAG = "timestamp"; +const UUID_TAG = "uuid"; +const UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/Int64.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/Int64.js new file mode 100644 index 0000000..6f806aa --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/Int64.js @@ -0,0 +1,44 @@ +import { toHex } from "@smithy/util-hex-encoding"; +export class Int64 { + bytes; + constructor(bytes) { + this.bytes = bytes; + if (bytes.byteLength !== 8) { + throw new Error("Int64 buffers must be exactly 8 bytes"); + } + } + static fromNumber(number) { + if (number > 9_223_372_036_854_775_807 || number < -9_223_372_036_854_775_808) { + throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`); + } + const bytes = new Uint8Array(8); + for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) { + bytes[i] = remaining; + } + if (number < 0) { + negate(bytes); + } + return new Int64(bytes); + } + valueOf() { + const bytes = this.bytes.slice(0); + const negative = bytes[0] & 0b10000000; + if (negative) { + negate(bytes); + } + return parseInt(toHex(bytes), 16) * (negative ? -1 : 1); + } + toString() { + return String(this.valueOf()); + } +} +function negate(bytes) { + for (let i = 0; i < 8; i++) { + bytes[i] ^= 0xff; + } + for (let i = 7; i > -1; i--) { + bytes[i]++; + if (bytes[i] !== 0) + break; + } +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/Message.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/Message.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/Message.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/MessageDecoderStream.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/MessageDecoderStream.js new file mode 100644 index 0000000..3761a19 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/MessageDecoderStream.js @@ -0,0 +1,15 @@ +export class MessageDecoderStream { + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const bytes of this.options.inputStream) { + const decoded = this.options.decoder.decode(bytes); + yield decoded; + } + } +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/MessageEncoderStream.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/MessageEncoderStream.js new file mode 100644 index 0000000..3d5401d --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/MessageEncoderStream.js @@ -0,0 +1,18 @@ +export class MessageEncoderStream { + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const msg of this.options.messageStream) { + const encoded = this.options.encoder.encode(msg); + yield encoded; + } + if (this.options.includeEndFrame) { + yield new Uint8Array(0); + } + } +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageDecoderStream.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageDecoderStream.js new file mode 100644 index 0000000..73e6ba3 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageDecoderStream.js @@ -0,0 +1,17 @@ +export class SmithyMessageDecoderStream { + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const message of this.options.messageStream) { + const deserialized = await this.options.deserializer(message); + if (deserialized === undefined) + continue; + yield deserialized; + } + } +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageEncoderStream.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageEncoderStream.js new file mode 100644 index 0000000..232f0c1 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/SmithyMessageEncoderStream.js @@ -0,0 +1,15 @@ +export class SmithyMessageEncoderStream { + options; + constructor(options) { + this.options = options; + } + [Symbol.asyncIterator]() { + return this.asyncIterator(); + } + async *asyncIterator() { + for await (const chunk of this.options.inputStream) { + const payloadBuf = this.options.serializer(chunk); + yield payloadBuf; + } + } +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/TestVectors.fixture.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/TestVectors.fixture.js new file mode 100644 index 0000000..3fc4962 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/TestVectors.fixture.js @@ -0,0 +1,146 @@ +import { Int64 } from "./Int64"; +export const vectors = { + all_headers: { + expectation: "success", + encoded: Uint8Array.from([ + 0, 0, 0, 204, 0, 0, 0, 175, 15, 174, 100, 202, 10, 101, 118, 101, 110, 116, 45, 116, 121, 112, 101, 4, 0, 0, 160, + 12, 12, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 7, 0, 16, 97, 112, 112, 108, 105, 99, 97, 116, + 105, 111, 110, 47, 106, 115, 111, 110, 10, 98, 111, 111, 108, 32, 102, 97, 108, 115, 101, 1, 9, 98, 111, 111, 108, + 32, 116, 114, 117, 101, 0, 4, 98, 121, 116, 101, 2, 207, 8, 98, 121, 116, 101, 32, 98, 117, 102, 6, 0, 20, 73, 39, + 109, 32, 97, 32, 108, 105, 116, 116, 108, 101, 32, 116, 101, 97, 112, 111, 116, 33, 9, 116, 105, 109, 101, 115, + 116, 97, 109, 112, 8, 0, 0, 0, 0, 0, 132, 95, 237, 5, 105, 110, 116, 49, 54, 3, 0, 42, 5, 105, 110, 116, 54, 52, + 5, 0, 0, 0, 0, 2, 135, 87, 178, 4, 117, 117, 105, 100, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 123, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125, 171, 165, 241, 12, + ]), + decoded: { + headers: { + "event-type": { + type: "integer", + value: 40972, + }, + "content-type": { + type: "string", + value: "application/json", + }, + "bool false": { + type: "boolean", + value: false, + }, + "bool true": { + type: "boolean", + value: true, + }, + byte: { + type: "byte", + value: -49, + }, + "byte buf": { + type: "binary", + value: Uint8Array.from([ + 73, 39, 109, 32, 97, 32, 108, 105, 116, 116, 108, 101, 32, 116, 101, 97, 112, 111, 116, 33, + ]), + }, + timestamp: { + type: "timestamp", + value: new Date(8675309), + }, + int16: { + type: "short", + value: 42, + }, + int64: { + type: "long", + value: Int64.fromNumber(42424242), + }, + uuid: { + type: "uuid", + value: "01020304-0506-0708-090a-0b0c0d0e0f10", + }, + }, + body: Uint8Array.from([123, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125]), + }, + }, + empty_message: { + expectation: "success", + encoded: Uint8Array.from([0, 0, 0, 16, 0, 0, 0, 0, 5, 194, 72, 235, 125, 152, 200, 255]), + decoded: { + headers: {}, + body: Uint8Array.from([]), + }, + }, + int32_header: { + expectation: "success", + encoded: Uint8Array.from([ + 0, 0, 0, 45, 0, 0, 0, 16, 65, 196, 36, 184, 10, 101, 118, 101, 110, 116, 45, 116, 121, 112, 101, 4, 0, 0, 160, 12, + 123, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125, 54, 244, 128, 160, + ]), + decoded: { + headers: { + "event-type": { + type: "integer", + value: 40972, + }, + }, + body: Uint8Array.from([123, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125]), + }, + }, + payload_no_headers: { + expectation: "success", + encoded: Uint8Array.from([ + 0, 0, 0, 29, 0, 0, 0, 0, 253, 82, 140, 90, 123, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125, 195, 101, 57, + 54, + ]), + decoded: { + headers: {}, + body: Uint8Array.from([123, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125]), + }, + }, + payload_one_str_header: { + expectation: "success", + encoded: Uint8Array.from([ + 0, 0, 0, 61, 0, 0, 0, 32, 7, 253, 131, 150, 12, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 7, 0, + 16, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 123, 39, 102, 111, 111, 39, 58, + 39, 98, 97, 114, 39, 125, 141, 156, 8, 177, + ]), + decoded: { + headers: { + "content-type": { + type: "string", + value: "application/json", + }, + }, + body: Uint8Array.from([123, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125]), + }, + }, + corrupted_headers: { + expectation: "failure", + encoded: Uint8Array.from([ + 0, 0, 0, 61, 0, 0, 0, 32, 7, 253, 131, 150, 12, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 7, 0, + 16, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 123, 97, 102, 111, 111, 39, 58, + 39, 98, 97, 114, 39, 125, 141, 156, 8, 177, + ]), + }, + corrupted_header_len: { + expectation: "failure", + encoded: Uint8Array.from([ + 0, 0, 0, 61, 0, 0, 0, 33, 7, 253, 131, 150, 12, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 7, 0, + 16, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 123, 39, 102, 111, 111, 39, 58, + 39, 98, 97, 114, 39, 125, 141, 156, 8, 177, + ]), + }, + corrupted_length: { + expectation: "failure", + encoded: Uint8Array.from([ + 0, 0, 0, 62, 0, 0, 0, 32, 7, 253, 131, 150, 12, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 7, 0, + 16, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 123, 39, 102, 111, 111, 39, 58, + 39, 98, 97, 114, 39, 125, 141, 156, 8, 177, + ]), + }, + corrupted_payload: { + expectation: "failure", + encoded: Uint8Array.from([ + 0, 0, 0, 29, 0, 0, 0, 0, 253, 82, 140, 90, 91, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125, 195, 101, 57, + 54, + ]), + }, +}; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/index.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/index.js new file mode 100644 index 0000000..458feab --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/index.js @@ -0,0 +1,8 @@ +export * from "./EventStreamCodec"; +export * from "./HeaderMarshaller"; +export * from "./Int64"; +export * from "./Message"; +export * from "./MessageDecoderStream"; +export * from "./MessageEncoderStream"; +export * from "./SmithyMessageDecoderStream"; +export * from "./SmithyMessageEncoderStream"; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/splitMessage.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/splitMessage.js new file mode 100644 index 0000000..725346b --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/splitMessage.js @@ -0,0 +1,30 @@ +import { Crc32 } from "@aws-crypto/crc32"; +const PRELUDE_MEMBER_LENGTH = 4; +const PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2; +const CHECKSUM_LENGTH = 4; +const MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2; +export function splitMessage({ byteLength, byteOffset, buffer }) { + if (byteLength < MINIMUM_MESSAGE_LENGTH) { + throw new Error("Provided message too short to accommodate event stream message overhead"); + } + const view = new DataView(buffer, byteOffset, byteLength); + const messageLength = view.getUint32(0, false); + if (byteLength !== messageLength) { + throw new Error("Reported message length does not match received message length"); + } + const headerLength = view.getUint32(PRELUDE_MEMBER_LENGTH, false); + const expectedPreludeChecksum = view.getUint32(PRELUDE_LENGTH, false); + const expectedMessageChecksum = view.getUint32(byteLength - CHECKSUM_LENGTH, false); + const checksummer = new Crc32().update(new Uint8Array(buffer, byteOffset, PRELUDE_LENGTH)); + if (expectedPreludeChecksum !== checksummer.digest()) { + throw new Error(`The prelude checksum specified in the message (${expectedPreludeChecksum}) does not match the calculated CRC32 checksum (${checksummer.digest()})`); + } + checksummer.update(new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH, byteLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH))); + if (expectedMessageChecksum !== checksummer.digest()) { + throw new Error(`The message checksum (${checksummer.digest()}) did not match the expected value of ${expectedMessageChecksum}`); + } + return { + headers: new DataView(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH, headerLength), + body: new Uint8Array(buffer, byteOffset + PRELUDE_LENGTH + CHECKSUM_LENGTH + headerLength, messageLength - headerLength - (PRELUDE_LENGTH + CHECKSUM_LENGTH + CHECKSUM_LENGTH)), + }; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-es/vectorTypes.fixture.js b/bff/node_modules/@smithy/eventstream-codec/dist-es/vectorTypes.fixture.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-es/vectorTypes.fixture.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/EventStreamCodec.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/EventStreamCodec.d.ts new file mode 100644 index 0000000..cb8f57b --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/EventStreamCodec.d.ts @@ -0,0 +1,31 @@ +import type { AvailableMessage, AvailableMessages, Message, MessageDecoder, MessageEncoder, MessageHeaders } from "@smithy/types"; +import type { Decoder, Encoder } from "@smithy/types"; +/** + * A Codec that can convert binary-packed event stream messages into + * JavaScript objects and back again into their binary format. + */ +export declare class EventStreamCodec implements MessageEncoder, MessageDecoder { + private readonly headerMarshaller; + private messageBuffer; + private isEndOfStream; + constructor(toUtf8: Encoder, fromUtf8: Decoder); + feed(message: ArrayBufferView): void; + endOfStream(): void; + getMessage(): AvailableMessage; + getAvailableMessages(): AvailableMessages; + /** + * Convert a structured JavaScript object with tagged headers into a binary + * event stream message. + */ + encode({ headers: rawHeaders, body }: Message): Uint8Array; + /** + * Convert a binary event stream message into a JavaScript object with an + * opaque, binary body and tagged, parsed headers. + */ + decode(message: ArrayBufferView): Message; + /** + * Convert a structured JavaScript object with tagged headers into a binary + * event stream message header. + */ + formatHeaders(rawHeaders: MessageHeaders): Uint8Array; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/HeaderMarshaller.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/HeaderMarshaller.d.ts new file mode 100644 index 0000000..de279e8 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/HeaderMarshaller.d.ts @@ -0,0 +1,12 @@ +import type { Decoder, Encoder, MessageHeaders } from "@smithy/types"; +/** + * @internal + */ +export declare class HeaderMarshaller { + private readonly toUtf8; + private readonly fromUtf8; + constructor(toUtf8: Encoder, fromUtf8: Decoder); + format(headers: MessageHeaders): Uint8Array; + private formatHeaderValue; + parse(headers: DataView): MessageHeaders; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/Int64.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/Int64.d.ts new file mode 100644 index 0000000..db3eb10 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/Int64.d.ts @@ -0,0 +1,20 @@ +import type { Int64 as IInt64 } from "@smithy/types"; +export interface Int64 extends IInt64 { +} +/** + * A lossless representation of a signed, 64-bit integer. Instances of this + * class may be used in arithmetic expressions as if they were numeric + * primitives, but the binary representation will be preserved unchanged as the + * `bytes` property of the object. The bytes should be encoded as big-endian, + * two's complement integers. + */ +export declare class Int64 { + readonly bytes: Uint8Array; + constructor(bytes: Uint8Array); + static fromNumber(number: number): Int64; + /** + * Called implicitly by infix arithmetic operators. + */ + valueOf(): number; + toString(): string; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/Message.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/Message.d.ts new file mode 100644 index 0000000..2f4aac7 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/Message.d.ts @@ -0,0 +1,26 @@ +import type { Int64 } from "./Int64"; +/** + * An event stream message. The headers and body properties will always be + * defined, with empty headers represented as an object with no keys and an + * empty body represented as a zero-length Uint8Array. + */ +export interface Message { + headers: MessageHeaders; + body: Uint8Array; +} +export type MessageHeaders = Record; +type HeaderValue = { + type: K; + value: V; +}; +export type BooleanHeaderValue = HeaderValue<"boolean", boolean>; +export type ByteHeaderValue = HeaderValue<"byte", number>; +export type ShortHeaderValue = HeaderValue<"short", number>; +export type IntegerHeaderValue = HeaderValue<"integer", number>; +export type LongHeaderValue = HeaderValue<"long", Int64>; +export type BinaryHeaderValue = HeaderValue<"binary", Uint8Array>; +export type StringHeaderValue = HeaderValue<"string", string>; +export type TimestampHeaderValue = HeaderValue<"timestamp", Date>; +export type UuidHeaderValue = HeaderValue<"uuid", string>; +export type MessageHeaderValue = BooleanHeaderValue | ByteHeaderValue | ShortHeaderValue | IntegerHeaderValue | LongHeaderValue | BinaryHeaderValue | StringHeaderValue | TimestampHeaderValue | UuidHeaderValue; +export {}; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/MessageDecoderStream.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/MessageDecoderStream.d.ts new file mode 100644 index 0000000..98c7129 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/MessageDecoderStream.d.ts @@ -0,0 +1,17 @@ +import type { Message, MessageDecoder } from "@smithy/types"; +/** + * @internal + */ +export interface MessageDecoderStreamOptions { + inputStream: AsyncIterable; + decoder: MessageDecoder; +} +/** + * @internal + */ +export declare class MessageDecoderStream implements AsyncIterable { + private readonly options; + constructor(options: MessageDecoderStreamOptions); + [Symbol.asyncIterator](): AsyncIterator; + private asyncIterator; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/MessageEncoderStream.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/MessageEncoderStream.d.ts new file mode 100644 index 0000000..782c8f1 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/MessageEncoderStream.d.ts @@ -0,0 +1,18 @@ +import type { Message, MessageEncoder } from "@smithy/types"; +/** + * @internal + */ +export interface MessageEncoderStreamOptions { + messageStream: AsyncIterable; + encoder: MessageEncoder; + includeEndFrame?: boolean; +} +/** + * @internal + */ +export declare class MessageEncoderStream implements AsyncIterable { + private readonly options; + constructor(options: MessageEncoderStreamOptions); + [Symbol.asyncIterator](): AsyncIterator; + private asyncIterator; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/SmithyMessageDecoderStream.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/SmithyMessageDecoderStream.d.ts new file mode 100644 index 0000000..b021bc8 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/SmithyMessageDecoderStream.d.ts @@ -0,0 +1,17 @@ +import type { Message } from "@smithy/types"; +/** + * @internal + */ +export interface SmithyMessageDecoderStreamOptions { + readonly messageStream: AsyncIterable; + readonly deserializer: (input: Message) => Promise; +} +/** + * @internal + */ +export declare class SmithyMessageDecoderStream implements AsyncIterable { + private readonly options; + constructor(options: SmithyMessageDecoderStreamOptions); + [Symbol.asyncIterator](): AsyncIterator; + private asyncIterator; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/SmithyMessageEncoderStream.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/SmithyMessageEncoderStream.d.ts new file mode 100644 index 0000000..52e0a70 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/SmithyMessageEncoderStream.d.ts @@ -0,0 +1,17 @@ +import type { Message } from "@smithy/types"; +/** + * @internal + */ +export interface SmithyMessageEncoderStreamOptions { + inputStream: AsyncIterable; + serializer: (event: T) => Message; +} +/** + * @internal + */ +export declare class SmithyMessageEncoderStream implements AsyncIterable { + private readonly options; + constructor(options: SmithyMessageEncoderStreamOptions); + [Symbol.asyncIterator](): AsyncIterator; + private asyncIterator; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/TestVectors.fixture.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/TestVectors.fixture.d.ts new file mode 100644 index 0000000..dfdd010 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/TestVectors.fixture.d.ts @@ -0,0 +1,2 @@ +import type { TestVectors } from "./vectorTypes.fixture"; +export declare const vectors: TestVectors; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/index.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/index.d.ts new file mode 100644 index 0000000..458feab --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/index.d.ts @@ -0,0 +1,8 @@ +export * from "./EventStreamCodec"; +export * from "./HeaderMarshaller"; +export * from "./Int64"; +export * from "./Message"; +export * from "./MessageDecoderStream"; +export * from "./MessageEncoderStream"; +export * from "./SmithyMessageDecoderStream"; +export * from "./SmithyMessageEncoderStream"; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/splitMessage.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/splitMessage.d.ts new file mode 100644 index 0000000..9aa7585 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/splitMessage.d.ts @@ -0,0 +1,11 @@ +/** + * @internal + */ +export interface MessageParts { + headers: DataView; + body: Uint8Array; +} +/** + * @internal + */ +export declare function splitMessage({ byteLength, byteOffset, buffer }: ArrayBufferView): MessageParts; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/EventStreamCodec.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/EventStreamCodec.d.ts new file mode 100644 index 0000000..dd4bd9f --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/EventStreamCodec.d.ts @@ -0,0 +1,31 @@ +import { AvailableMessage, AvailableMessages, Message, MessageDecoder, MessageEncoder, MessageHeaders } from "@smithy/types"; +import { Decoder, Encoder } from "@smithy/types"; +/** + * A Codec that can convert binary-packed event stream messages into + * JavaScript objects and back again into their binary format. + */ +export declare class EventStreamCodec implements MessageEncoder, MessageDecoder { + private readonly headerMarshaller; + private messageBuffer; + private isEndOfStream; + constructor(toUtf8: Encoder, fromUtf8: Decoder); + feed(message: ArrayBufferView): void; + endOfStream(): void; + getMessage(): AvailableMessage; + getAvailableMessages(): AvailableMessages; + /** + * Convert a structured JavaScript object with tagged headers into a binary + * event stream message. + */ + encode({ headers: rawHeaders, body }: Message): Uint8Array; + /** + * Convert a binary event stream message into a JavaScript object with an + * opaque, binary body and tagged, parsed headers. + */ + decode(message: ArrayBufferView): Message; + /** + * Convert a structured JavaScript object with tagged headers into a binary + * event stream message header. + */ + formatHeaders(rawHeaders: MessageHeaders): Uint8Array; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/HeaderMarshaller.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/HeaderMarshaller.d.ts new file mode 100644 index 0000000..5ecf2d1 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/HeaderMarshaller.d.ts @@ -0,0 +1,12 @@ +import { Decoder, Encoder, MessageHeaders } from "@smithy/types"; +/** + * @internal + */ +export declare class HeaderMarshaller { + private readonly toUtf8; + private readonly fromUtf8; + constructor(toUtf8: Encoder, fromUtf8: Decoder); + format(headers: MessageHeaders): Uint8Array; + private formatHeaderValue; + parse(headers: DataView): MessageHeaders; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/Int64.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/Int64.d.ts new file mode 100644 index 0000000..aebf7e4 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/Int64.d.ts @@ -0,0 +1,20 @@ +import { Int64 as IInt64 } from "@smithy/types"; +export interface Int64 extends IInt64 { +} +/** + * A lossless representation of a signed, 64-bit integer. Instances of this + * class may be used in arithmetic expressions as if they were numeric + * primitives, but the binary representation will be preserved unchanged as the + * `bytes` property of the object. The bytes should be encoded as big-endian, + * two's complement integers. + */ +export declare class Int64 { + readonly bytes: Uint8Array; + constructor(bytes: Uint8Array); + static fromNumber(number: number): Int64; + /** + * Called implicitly by infix arithmetic operators. + */ + valueOf(): number; + toString(): string; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/Message.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/Message.d.ts new file mode 100644 index 0000000..ef57685 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/Message.d.ts @@ -0,0 +1,26 @@ +import { Int64 } from "./Int64"; +/** + * An event stream message. The headers and body properties will always be + * defined, with empty headers represented as an object with no keys and an + * empty body represented as a zero-length Uint8Array. + */ +export interface Message { + headers: MessageHeaders; + body: Uint8Array; +} +export type MessageHeaders = Record; +type HeaderValue = { + type: K; + value: V; +}; +export type BooleanHeaderValue = HeaderValue<"boolean", boolean>; +export type ByteHeaderValue = HeaderValue<"byte", number>; +export type ShortHeaderValue = HeaderValue<"short", number>; +export type IntegerHeaderValue = HeaderValue<"integer", number>; +export type LongHeaderValue = HeaderValue<"long", Int64>; +export type BinaryHeaderValue = HeaderValue<"binary", Uint8Array>; +export type StringHeaderValue = HeaderValue<"string", string>; +export type TimestampHeaderValue = HeaderValue<"timestamp", Date>; +export type UuidHeaderValue = HeaderValue<"uuid", string>; +export type MessageHeaderValue = BooleanHeaderValue | ByteHeaderValue | ShortHeaderValue | IntegerHeaderValue | LongHeaderValue | BinaryHeaderValue | StringHeaderValue | TimestampHeaderValue | UuidHeaderValue; +export {}; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/MessageDecoderStream.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/MessageDecoderStream.d.ts new file mode 100644 index 0000000..df23a0e --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/MessageDecoderStream.d.ts @@ -0,0 +1,17 @@ +import { Message, MessageDecoder } from "@smithy/types"; +/** + * @internal + */ +export interface MessageDecoderStreamOptions { + inputStream: AsyncIterable; + decoder: MessageDecoder; +} +/** + * @internal + */ +export declare class MessageDecoderStream implements AsyncIterable { + private readonly options; + constructor(options: MessageDecoderStreamOptions); + [Symbol.asyncIterator](): AsyncIterator; + private asyncIterator; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/MessageEncoderStream.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/MessageEncoderStream.d.ts new file mode 100644 index 0000000..5c67e9e --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/MessageEncoderStream.d.ts @@ -0,0 +1,18 @@ +import { Message, MessageEncoder } from "@smithy/types"; +/** + * @internal + */ +export interface MessageEncoderStreamOptions { + messageStream: AsyncIterable; + encoder: MessageEncoder; + includeEndFrame?: boolean; +} +/** + * @internal + */ +export declare class MessageEncoderStream implements AsyncIterable { + private readonly options; + constructor(options: MessageEncoderStreamOptions); + [Symbol.asyncIterator](): AsyncIterator; + private asyncIterator; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/SmithyMessageDecoderStream.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/SmithyMessageDecoderStream.d.ts new file mode 100644 index 0000000..e9c13ba --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/SmithyMessageDecoderStream.d.ts @@ -0,0 +1,17 @@ +import { Message } from "@smithy/types"; +/** + * @internal + */ +export interface SmithyMessageDecoderStreamOptions { + readonly messageStream: AsyncIterable; + readonly deserializer: (input: Message) => Promise; +} +/** + * @internal + */ +export declare class SmithyMessageDecoderStream implements AsyncIterable { + private readonly options; + constructor(options: SmithyMessageDecoderStreamOptions); + [Symbol.asyncIterator](): AsyncIterator; + private asyncIterator; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/SmithyMessageEncoderStream.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/SmithyMessageEncoderStream.d.ts new file mode 100644 index 0000000..9d67f42 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/SmithyMessageEncoderStream.d.ts @@ -0,0 +1,17 @@ +import { Message } from "@smithy/types"; +/** + * @internal + */ +export interface SmithyMessageEncoderStreamOptions { + inputStream: AsyncIterable; + serializer: (event: T) => Message; +} +/** + * @internal + */ +export declare class SmithyMessageEncoderStream implements AsyncIterable { + private readonly options; + constructor(options: SmithyMessageEncoderStreamOptions); + [Symbol.asyncIterator](): AsyncIterator; + private asyncIterator; +} diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/TestVectors.fixture.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/TestVectors.fixture.d.ts new file mode 100644 index 0000000..9ed09f2 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/TestVectors.fixture.d.ts @@ -0,0 +1,2 @@ +import { TestVectors } from "./vectorTypes.fixture"; +export declare const vectors: TestVectors; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..01e6730 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +export * from "./EventStreamCodec"; +export * from "./HeaderMarshaller"; +export * from "./Int64"; +export * from "./Message"; +export * from "./MessageDecoderStream"; +export * from "./MessageEncoderStream"; +export * from "./SmithyMessageDecoderStream"; +export * from "./SmithyMessageEncoderStream"; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/splitMessage.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/splitMessage.d.ts new file mode 100644 index 0000000..48776ec --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/splitMessage.d.ts @@ -0,0 +1,11 @@ +/** + * @internal + */ +export interface MessageParts { + headers: DataView; + body: Uint8Array; +} +/** + * @internal + */ +export declare function splitMessage({ byteLength, byteOffset, buffer }: ArrayBufferView): MessageParts; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/vectorTypes.fixture.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/vectorTypes.fixture.d.ts new file mode 100644 index 0000000..5569194 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/ts3.4/vectorTypes.fixture.d.ts @@ -0,0 +1,12 @@ +import { Message } from "./Message"; +export interface NegativeTestVector { + expectation: "failure"; + encoded: Uint8Array; +} +export interface PositiveTestVector { + expectation: "success"; + encoded: Uint8Array; + decoded: Message; +} +export type TestVector = NegativeTestVector | PositiveTestVector; +export type TestVectors = Record; diff --git a/bff/node_modules/@smithy/eventstream-codec/dist-types/vectorTypes.fixture.d.ts b/bff/node_modules/@smithy/eventstream-codec/dist-types/vectorTypes.fixture.d.ts new file mode 100644 index 0000000..0fe0eb6 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/dist-types/vectorTypes.fixture.d.ts @@ -0,0 +1,12 @@ +import type { Message } from "./Message"; +export interface NegativeTestVector { + expectation: "failure"; + encoded: Uint8Array; +} +export interface PositiveTestVector { + expectation: "success"; + encoded: Uint8Array; + decoded: Message; +} +export type TestVector = NegativeTestVector | PositiveTestVector; +export type TestVectors = Record; diff --git a/bff/node_modules/@smithy/eventstream-codec/package.json b/bff/node_modules/@smithy/eventstream-codec/package.json new file mode 100644 index 0000000..3ef62a9 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-codec/package.json @@ -0,0 +1,65 @@ +{ + "name": "@smithy/eventstream-codec", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline eventstream-codec", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/util-utf8": "^4.2.2", + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/eventstream-codec", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/eventstream-codec" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/LICENSE b/bff/node_modules/@smithy/eventstream-serde-browser/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/README.md b/bff/node_modules/@smithy/eventstream-serde-browser/README.md new file mode 100644 index 0000000..86830b1 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/README.md @@ -0,0 +1,10 @@ +# @smithy/eventstream-serde-browser + +[![NPM version](https://img.shields.io/npm/v/@smithy/eventstream-serde-browser/latest.svg)](https://www.npmjs.com/package/@smithy/eventstream-serde-browser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/eventstream-serde-browser.svg)](https://www.npmjs.com/package/@smithy/eventstream-serde-browser) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-cjs/index.js b/bff/node_modules/@smithy/eventstream-serde-browser/dist-cjs/index.js new file mode 100644 index 0000000..b3f5190 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-cjs/index.js @@ -0,0 +1,58 @@ +'use strict'; + +var eventstreamSerdeUniversal = require('@smithy/eventstream-serde-universal'); + +const readableStreamtoIterable = (readableStream) => ({ + [Symbol.asyncIterator]: async function* () { + const reader = readableStream.getReader(); + try { + while (true) { + const { done, value } = await reader.read(); + if (done) + return; + yield value; + } + } + finally { + reader.releaseLock(); + } + }, +}); +const iterableToReadableStream = (asyncIterable) => { + const iterator = asyncIterable[Symbol.asyncIterator](); + return new ReadableStream({ + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + return controller.close(); + } + controller.enqueue(value); + }, + }); +}; + +class EventStreamMarshaller { + universalMarshaller; + constructor({ utf8Encoder, utf8Decoder }) { + this.universalMarshaller = new eventstreamSerdeUniversal.EventStreamMarshaller({ + utf8Decoder, + utf8Encoder, + }); + } + deserialize(body, deserializer) { + const bodyIterable = isReadableStream(body) ? readableStreamtoIterable(body) : body; + return this.universalMarshaller.deserialize(bodyIterable, deserializer); + } + serialize(input, serializer) { + const serialziedIterable = this.universalMarshaller.serialize(input, serializer); + return typeof ReadableStream === "function" ? iterableToReadableStream(serialziedIterable) : serialziedIterable; + } +} +const isReadableStream = (body) => typeof ReadableStream === "function" && body instanceof ReadableStream; + +const eventStreamSerdeProvider = (options) => new EventStreamMarshaller(options); + +exports.EventStreamMarshaller = EventStreamMarshaller; +exports.eventStreamSerdeProvider = eventStreamSerdeProvider; +exports.iterableToReadableStream = iterableToReadableStream; +exports.readableStreamtoIterable = readableStreamtoIterable; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/EventStreamMarshaller.js b/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/EventStreamMarshaller.js new file mode 100644 index 0000000..95ac629 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/EventStreamMarshaller.js @@ -0,0 +1,20 @@ +import { EventStreamMarshaller as UniversalEventStreamMarshaller } from "@smithy/eventstream-serde-universal"; +import { iterableToReadableStream, readableStreamtoIterable } from "./utils"; +export class EventStreamMarshaller { + universalMarshaller; + constructor({ utf8Encoder, utf8Decoder }) { + this.universalMarshaller = new UniversalEventStreamMarshaller({ + utf8Decoder, + utf8Encoder, + }); + } + deserialize(body, deserializer) { + const bodyIterable = isReadableStream(body) ? readableStreamtoIterable(body) : body; + return this.universalMarshaller.deserialize(bodyIterable, deserializer); + } + serialize(input, serializer) { + const serialziedIterable = this.universalMarshaller.serialize(input, serializer); + return typeof ReadableStream === "function" ? iterableToReadableStream(serialziedIterable) : serialziedIterable; + } +} +const isReadableStream = (body) => typeof ReadableStream === "function" && body instanceof ReadableStream; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/index.js b/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/index.js new file mode 100644 index 0000000..f05a6fb --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./EventStreamMarshaller"; +export * from "./provider"; +export * from "./utils"; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/provider.js b/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/provider.js new file mode 100644 index 0000000..b71c3f0 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/provider.js @@ -0,0 +1,2 @@ +import { EventStreamMarshaller } from "./EventStreamMarshaller"; +export const eventStreamSerdeProvider = (options) => new EventStreamMarshaller(options); diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/utils.js b/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/utils.js new file mode 100644 index 0000000..8f0376f --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-es/utils.js @@ -0,0 +1,28 @@ +export const readableStreamtoIterable = (readableStream) => ({ + [Symbol.asyncIterator]: async function* () { + const reader = readableStream.getReader(); + try { + while (true) { + const { done, value } = await reader.read(); + if (done) + return; + yield value; + } + } + finally { + reader.releaseLock(); + } + }, +}); +export const iterableToReadableStream = (asyncIterable) => { + const iterator = asyncIterable[Symbol.asyncIterator](); + return new ReadableStream({ + async pull(controller) { + const { done, value } = await iterator.next(); + if (done) { + return controller.close(); + } + controller.enqueue(value); + }, + }); +}; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/EventStreamMarshaller.d.ts b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/EventStreamMarshaller.d.ts new file mode 100644 index 0000000..d2358c2 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/EventStreamMarshaller.d.ts @@ -0,0 +1,47 @@ +import type { Decoder, Encoder, EventStreamMarshaller as IEventStreamMarshaller, Message } from "@smithy/types"; +/** + * @internal + */ +export interface EventStreamMarshaller extends IEventStreamMarshaller { +} +/** + * @internal + */ +export interface EventStreamMarshallerOptions { + utf8Encoder: Encoder; + utf8Decoder: Decoder; +} +/** + * @internal + * + * Utility class used to serialize and deserialize event streams in + * browsers and ReactNative. + * + * In browsers where ReadableStream API is available: + * * deserialize from ReadableStream to an async iterable of output structure + * * serialize from async iterable of input structure to ReadableStream + * In ReactNative where only async iterable API is available: + * * deserialize from async iterable of binaries to async iterable of output structure + * * serialize from async iterable of input structure to async iterable of binaries + * + * We use ReadableStream API in browsers because of the consistency with other + * streaming operations, where ReadableStream API is used to denote streaming data. + * Whereas in ReactNative, ReadableStream API is not available, we use async iterable + * for streaming data although it has lower throughput. + */ +export declare class EventStreamMarshaller { + private readonly universalMarshaller; + constructor({ utf8Encoder, utf8Decoder }: EventStreamMarshallerOptions); + deserialize(body: ReadableStream | AsyncIterable, deserializer: (input: Record) => Promise): AsyncIterable; + /** + * Generate a stream that serialize events into stream of binary chunks; + * + * Caveat is that streaming request payload doesn't work on browser with native + * xhr or fetch handler currently because they don't support upload streaming. + * reference: + * * https://bugs.chromium.org/p/chromium/issues/detail?id=688906 + * * https://bugzilla.mozilla.org/show_bug.cgi?id=1387483 + * + */ + serialize(input: AsyncIterable, serializer: (event: T) => Message): ReadableStream | AsyncIterable; +} diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/index.d.ts b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/index.d.ts new file mode 100644 index 0000000..2fb476e --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./EventStreamMarshaller"; +/** + * @internal + */ +export * from "./provider"; +/** + * @internal + */ +export * from "./utils"; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/provider.d.ts b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/provider.d.ts new file mode 100644 index 0000000..13f90b8 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/provider.d.ts @@ -0,0 +1,3 @@ +import type { EventStreamSerdeProvider } from "@smithy/types"; +/** browser event stream serde utils provider */ +export declare const eventStreamSerdeProvider: EventStreamSerdeProvider; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/EventStreamMarshaller.d.ts b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/EventStreamMarshaller.d.ts new file mode 100644 index 0000000..ec0481d --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/EventStreamMarshaller.d.ts @@ -0,0 +1,47 @@ +import { Decoder, Encoder, EventStreamMarshaller as IEventStreamMarshaller, Message } from "@smithy/types"; +/** + * @internal + */ +export interface EventStreamMarshaller extends IEventStreamMarshaller { +} +/** + * @internal + */ +export interface EventStreamMarshallerOptions { + utf8Encoder: Encoder; + utf8Decoder: Decoder; +} +/** + * @internal + * + * Utility class used to serialize and deserialize event streams in + * browsers and ReactNative. + * + * In browsers where ReadableStream API is available: + * * deserialize from ReadableStream to an async iterable of output structure + * * serialize from async iterable of input structure to ReadableStream + * In ReactNative where only async iterable API is available: + * * deserialize from async iterable of binaries to async iterable of output structure + * * serialize from async iterable of input structure to async iterable of binaries + * + * We use ReadableStream API in browsers because of the consistency with other + * streaming operations, where ReadableStream API is used to denote streaming data. + * Whereas in ReactNative, ReadableStream API is not available, we use async iterable + * for streaming data although it has lower throughput. + */ +export declare class EventStreamMarshaller { + private readonly universalMarshaller; + constructor({ utf8Encoder, utf8Decoder }: EventStreamMarshallerOptions); + deserialize(body: ReadableStream | AsyncIterable, deserializer: (input: Record) => Promise): AsyncIterable; + /** + * Generate a stream that serialize events into stream of binary chunks; + * + * Caveat is that streaming request payload doesn't work on browser with native + * xhr or fetch handler currently because they don't support upload streaming. + * reference: + * * https://bugs.chromium.org/p/chromium/issues/detail?id=688906 + * * https://bugzilla.mozilla.org/show_bug.cgi?id=1387483 + * + */ + serialize(input: AsyncIterable, serializer: (event: T) => Message): ReadableStream | AsyncIterable; +} diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..8931756 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export * from "./EventStreamMarshaller"; +/** + * @internal + */ +export * from "./provider"; +/** + * @internal + */ +export * from "./utils"; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/provider.d.ts b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/provider.d.ts new file mode 100644 index 0000000..c051e0d --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/provider.d.ts @@ -0,0 +1,3 @@ +import { EventStreamSerdeProvider } from "@smithy/types"; +/** browser event stream serde utils provider */ +export declare const eventStreamSerdeProvider: EventStreamSerdeProvider; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/utils.d.ts b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/utils.d.ts new file mode 100644 index 0000000..3007e1b --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/ts3.4/utils.d.ts @@ -0,0 +1,13 @@ +/** + * @internal + * + * A util function converting ReadableStream into an async iterable. + * Reference: https://jakearchibald.com/2017/async-iterators-and-generators/#making-streams-iterate + */ +export declare const readableStreamtoIterable: (readableStream: ReadableStream) => AsyncIterable; +/** + * @internal + * + * A util function converting async iterable to a ReadableStream. + */ +export declare const iterableToReadableStream: (asyncIterable: AsyncIterable) => ReadableStream; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/utils.d.ts b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/utils.d.ts new file mode 100644 index 0000000..2718fca --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/dist-types/utils.d.ts @@ -0,0 +1,13 @@ +/** + * @internal + * + * A util function converting ReadableStream into an async iterable. + * Reference: https://jakearchibald.com/2017/async-iterators-and-generators/#making-streams-iterate + */ +export declare const readableStreamtoIterable: (readableStream: ReadableStream) => AsyncIterable; +/** + * @internal + * + * A util function converting async iterable to a ReadableStream. + */ +export declare const iterableToReadableStream: (asyncIterable: AsyncIterable) => ReadableStream; diff --git a/bff/node_modules/@smithy/eventstream-serde-browser/package.json b/bff/node_modules/@smithy/eventstream-serde-browser/package.json new file mode 100644 index 0000000..92db9da --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-browser/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/eventstream-serde-browser", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline eventstream-serde-browser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "exit 0" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/eventstream-serde-browser", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/eventstream-serde-browser" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/LICENSE b/bff/node_modules/@smithy/eventstream-serde-config-resolver/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/README.md b/bff/node_modules/@smithy/eventstream-serde-config-resolver/README.md new file mode 100644 index 0000000..6539fe1 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/README.md @@ -0,0 +1,10 @@ +# @smithy/eventstream-serde-config-resolver + +[![NPM version](https://img.shields.io/npm/v/@smithy/eventstream-serde-config-resolver/latest.svg)](https://www.npmjs.com/package/@smithy/eventstream-serde-config-resolver) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/eventstream-serde-config-resolver.svg)](https://www.npmjs.com/package/@smithy/eventstream-serde-config-resolver) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-cjs/index.js b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-cjs/index.js new file mode 100644 index 0000000..ea36446 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-cjs/index.js @@ -0,0 +1,7 @@ +'use strict'; + +const resolveEventStreamSerdeConfig = (input) => Object.assign(input, { + eventStreamMarshaller: input.eventStreamSerdeProvider(input), +}); + +exports.resolveEventStreamSerdeConfig = resolveEventStreamSerdeConfig; diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/EventStreamSerdeConfig.js b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/EventStreamSerdeConfig.js new file mode 100644 index 0000000..8acd419 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/EventStreamSerdeConfig.js @@ -0,0 +1,3 @@ +export const resolveEventStreamSerdeConfig = (input) => Object.assign(input, { + eventStreamMarshaller: input.eventStreamSerdeProvider(input), +}); diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/index.js b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/index.js new file mode 100644 index 0000000..515a9c6 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-es/index.js @@ -0,0 +1 @@ +export * from "./EventStreamSerdeConfig"; diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/EventStreamSerdeConfig.d.ts b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/EventStreamSerdeConfig.d.ts new file mode 100644 index 0000000..3478dfd --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/EventStreamSerdeConfig.d.ts @@ -0,0 +1,27 @@ +import type { EventStreamMarshaller, EventStreamSerdeProvider } from "@smithy/types"; +/** + * @public + */ +export interface EventStreamSerdeInputConfig { +} +/** + * @internal + */ +export interface EventStreamSerdeResolvedConfig { + eventStreamMarshaller: EventStreamMarshaller; +} +/** + * @internal + */ +interface PreviouslyResolved { + /** + * Provide the event stream marshaller for the given runtime + * @internal + */ + eventStreamSerdeProvider: EventStreamSerdeProvider; +} +/** + * @internal + */ +export declare const resolveEventStreamSerdeConfig: (input: T & PreviouslyResolved & EventStreamSerdeInputConfig) => T & EventStreamSerdeResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/index.d.ts b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/index.d.ts new file mode 100644 index 0000000..49ec397 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./EventStreamSerdeConfig"; diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/ts3.4/EventStreamSerdeConfig.d.ts b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/ts3.4/EventStreamSerdeConfig.d.ts new file mode 100644 index 0000000..fb9057d --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/ts3.4/EventStreamSerdeConfig.d.ts @@ -0,0 +1,27 @@ +import { EventStreamMarshaller, EventStreamSerdeProvider } from "@smithy/types"; +/** + * @public + */ +export interface EventStreamSerdeInputConfig { +} +/** + * @internal + */ +export interface EventStreamSerdeResolvedConfig { + eventStreamMarshaller: EventStreamMarshaller; +} +/** + * @internal + */ +interface PreviouslyResolved { + /** + * Provide the event stream marshaller for the given runtime + * @internal + */ + eventStreamSerdeProvider: EventStreamSerdeProvider; +} +/** + * @internal + */ +export declare const resolveEventStreamSerdeConfig: (input: T & PreviouslyResolved & EventStreamSerdeInputConfig) => T & EventStreamSerdeResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..6ec9b4e --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./EventStreamSerdeConfig"; diff --git a/bff/node_modules/@smithy/eventstream-serde-config-resolver/package.json b/bff/node_modules/@smithy/eventstream-serde-config-resolver/package.json new file mode 100644 index 0000000..225ae64 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-config-resolver/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/eventstream-serde-config-resolver", + "version": "4.3.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline eventstream-serde-config-resolver", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "extract:docs": "api-extractor run --local", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/eventstream-serde-config-resolver", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/eventstream-serde-config-resolver" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/eventstream-serde-node/LICENSE b/bff/node_modules/@smithy/eventstream-serde-node/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/eventstream-serde-node/README.md b/bff/node_modules/@smithy/eventstream-serde-node/README.md new file mode 100644 index 0000000..f1f8db9 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/README.md @@ -0,0 +1,10 @@ +# @smithy/eventstream-serde-node + +[![NPM version](https://img.shields.io/npm/v/@smithy/eventstream-serde-node/latest.svg)](https://www.npmjs.com/package/@smithy/eventstream-serde-node) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/eventstream-serde-node.svg)](https://www.npmjs.com/package/@smithy/eventstream-serde-node) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-cjs/index.js b/bff/node_modules/@smithy/eventstream-serde-node/dist-cjs/index.js new file mode 100644 index 0000000..cd52cf1 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-cjs/index.js @@ -0,0 +1,53 @@ +'use strict'; + +var eventstreamSerdeUniversal = require('@smithy/eventstream-serde-universal'); +var stream = require('stream'); + +async function* readabletoIterable(readStream) { + let streamEnded = false; + let generationEnded = false; + const records = new Array(); + readStream.on("error", (err) => { + if (!streamEnded) { + streamEnded = true; + } + if (err) { + throw err; + } + }); + readStream.on("data", (data) => { + records.push(data); + }); + readStream.on("end", () => { + streamEnded = true; + }); + while (!generationEnded) { + const value = await new Promise((resolve) => setTimeout(() => resolve(records.shift()), 0)); + if (value) { + yield value; + } + generationEnded = streamEnded && records.length === 0; + } +} + +class EventStreamMarshaller { + universalMarshaller; + constructor({ utf8Encoder, utf8Decoder }) { + this.universalMarshaller = new eventstreamSerdeUniversal.EventStreamMarshaller({ + utf8Decoder, + utf8Encoder, + }); + } + deserialize(body, deserializer) { + const bodyIterable = typeof body[Symbol.asyncIterator] === "function" ? body : readabletoIterable(body); + return this.universalMarshaller.deserialize(bodyIterable, deserializer); + } + serialize(input, serializer) { + return stream.Readable.from(this.universalMarshaller.serialize(input, serializer)); + } +} + +const eventStreamSerdeProvider = (options) => new EventStreamMarshaller(options); + +exports.EventStreamMarshaller = EventStreamMarshaller; +exports.eventStreamSerdeProvider = eventStreamSerdeProvider; diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-es/EventStreamMarshaller.js b/bff/node_modules/@smithy/eventstream-serde-node/dist-es/EventStreamMarshaller.js new file mode 100644 index 0000000..06c48a3 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-es/EventStreamMarshaller.js @@ -0,0 +1,19 @@ +import { EventStreamMarshaller as UniversalEventStreamMarshaller } from "@smithy/eventstream-serde-universal"; +import { Readable } from "stream"; +import { readabletoIterable } from "./utils"; +export class EventStreamMarshaller { + universalMarshaller; + constructor({ utf8Encoder, utf8Decoder }) { + this.universalMarshaller = new UniversalEventStreamMarshaller({ + utf8Decoder, + utf8Encoder, + }); + } + deserialize(body, deserializer) { + const bodyIterable = typeof body[Symbol.asyncIterator] === "function" ? body : readabletoIterable(body); + return this.universalMarshaller.deserialize(bodyIterable, deserializer); + } + serialize(input, serializer) { + return Readable.from(this.universalMarshaller.serialize(input, serializer)); + } +} diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-es/index.js b/bff/node_modules/@smithy/eventstream-serde-node/dist-es/index.js new file mode 100644 index 0000000..294fec5 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./EventStreamMarshaller"; +export * from "./provider"; diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-es/provider.js b/bff/node_modules/@smithy/eventstream-serde-node/dist-es/provider.js new file mode 100644 index 0000000..b71c3f0 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-es/provider.js @@ -0,0 +1,2 @@ +import { EventStreamMarshaller } from "./EventStreamMarshaller"; +export const eventStreamSerdeProvider = (options) => new EventStreamMarshaller(options); diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-es/utils.js b/bff/node_modules/@smithy/eventstream-serde-node/dist-es/utils.js new file mode 100644 index 0000000..a7baf9f --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-es/utils.js @@ -0,0 +1,26 @@ +export async function* readabletoIterable(readStream) { + let streamEnded = false; + let generationEnded = false; + const records = new Array(); + readStream.on("error", (err) => { + if (!streamEnded) { + streamEnded = true; + } + if (err) { + throw err; + } + }); + readStream.on("data", (data) => { + records.push(data); + }); + readStream.on("end", () => { + streamEnded = true; + }); + while (!generationEnded) { + const value = await new Promise((resolve) => setTimeout(() => resolve(records.shift()), 0)); + if (value) { + yield value; + } + generationEnded = streamEnded && records.length === 0; + } +} diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-types/EventStreamMarshaller.d.ts b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/EventStreamMarshaller.d.ts new file mode 100644 index 0000000..cc9aead --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/EventStreamMarshaller.d.ts @@ -0,0 +1,23 @@ +import type { Decoder, Encoder, EventStreamMarshaller as IEventStreamMarshaller, Message } from "@smithy/types"; +import { Readable } from "stream"; +/** + * @internal + */ +export interface EventStreamMarshaller extends IEventStreamMarshaller { +} +/** + * @internal + */ +export interface EventStreamMarshallerOptions { + utf8Encoder: Encoder; + utf8Decoder: Decoder; +} +/** + * @internal + */ +export declare class EventStreamMarshaller { + private readonly universalMarshaller; + constructor({ utf8Encoder, utf8Decoder }: EventStreamMarshallerOptions); + deserialize(body: Readable, deserializer: (input: Record) => Promise): AsyncIterable; + serialize(input: AsyncIterable, serializer: (event: T) => Message): Readable; +} diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-types/index.d.ts b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/index.d.ts new file mode 100644 index 0000000..9f8e9f7 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./EventStreamMarshaller"; +/** + * @internal + */ +export * from "./provider"; diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-types/provider.d.ts b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/provider.d.ts new file mode 100644 index 0000000..8b841bb --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/provider.d.ts @@ -0,0 +1,3 @@ +import type { EventStreamSerdeProvider } from "@smithy/types"; +/** NodeJS event stream utils provider */ +export declare const eventStreamSerdeProvider: EventStreamSerdeProvider; diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/EventStreamMarshaller.d.ts b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/EventStreamMarshaller.d.ts new file mode 100644 index 0000000..447efb3 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/EventStreamMarshaller.d.ts @@ -0,0 +1,23 @@ +import { Decoder, Encoder, EventStreamMarshaller as IEventStreamMarshaller, Message } from "@smithy/types"; +import { Readable } from "stream"; +/** + * @internal + */ +export interface EventStreamMarshaller extends IEventStreamMarshaller { +} +/** + * @internal + */ +export interface EventStreamMarshallerOptions { + utf8Encoder: Encoder; + utf8Decoder: Decoder; +} +/** + * @internal + */ +export declare class EventStreamMarshaller { + private readonly universalMarshaller; + constructor({ utf8Encoder, utf8Decoder }: EventStreamMarshallerOptions); + deserialize(body: Readable, deserializer: (input: Record) => Promise): AsyncIterable; + serialize(input: AsyncIterable, serializer: (event: T) => Message): Readable; +} diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..a82a787 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./EventStreamMarshaller"; +/** + * @internal + */ +export * from "./provider"; diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/provider.d.ts b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/provider.d.ts new file mode 100644 index 0000000..ef02e9a --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/provider.d.ts @@ -0,0 +1,3 @@ +import { EventStreamSerdeProvider } from "@smithy/types"; +/** NodeJS event stream utils provider */ +export declare const eventStreamSerdeProvider: EventStreamSerdeProvider; diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/utils.d.ts b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/utils.d.ts new file mode 100644 index 0000000..5242ace --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/ts3.4/utils.d.ts @@ -0,0 +1,12 @@ +import { Readable } from "stream"; +/** + * Convert object stream piped in into an async iterable. This + * daptor should be deprecated when Node stream iterator is stable. + * Caveat: this adaptor won't have backpressure to inwards stream + * + * Reference: https://nodejs.org/docs/latest-v11.x/api/stream.html#stream_readable_symbol_asynciterator + */ +/** + * @internal + */ +export declare function readabletoIterable(readStream: Readable): AsyncIterable; diff --git a/bff/node_modules/@smithy/eventstream-serde-node/dist-types/utils.d.ts b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/utils.d.ts new file mode 100644 index 0000000..5df8bcf --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/dist-types/utils.d.ts @@ -0,0 +1,12 @@ +import type { Readable } from "stream"; +/** + * Convert object stream piped in into an async iterable. This + * daptor should be deprecated when Node stream iterator is stable. + * Caveat: this adaptor won't have backpressure to inwards stream + * + * Reference: https://nodejs.org/docs/latest-v11.x/api/stream.html#stream_readable_symbol_asynciterator + */ +/** + * @internal + */ +export declare function readabletoIterable(readStream: Readable): AsyncIterable; diff --git a/bff/node_modules/@smithy/eventstream-serde-node/package.json b/bff/node_modules/@smithy/eventstream-serde-node/package.json new file mode 100644 index 0000000..1dd6ddf --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-node/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/eventstream-serde-node", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline eventstream-serde-node", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "exit 0" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/eventstream-serde-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/eventstream-serde-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/LICENSE b/bff/node_modules/@smithy/eventstream-serde-universal/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/README.md b/bff/node_modules/@smithy/eventstream-serde-universal/README.md new file mode 100644 index 0000000..3c7fee1 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/README.md @@ -0,0 +1,10 @@ +# @smithy/eventstream-serde-universal + +[![NPM version](https://img.shields.io/npm/v/@smithy/eventstream-serde-universal/latest.svg)](https://www.npmjs.com/package/@smithy/eventstream-serde-universal) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/eventstream-serde-universal.svg)](https://www.npmjs.com/package/@smithy/eventstream-serde-universal) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-cjs/index.js b/bff/node_modules/@smithy/eventstream-serde-universal/dist-cjs/index.js new file mode 100644 index 0000000..cd84e7b --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-cjs/index.js @@ -0,0 +1,132 @@ +'use strict'; + +var eventstreamCodec = require('@smithy/eventstream-codec'); + +function getChunkedStream(source) { + let currentMessageTotalLength = 0; + let currentMessagePendingLength = 0; + let currentMessage = null; + let messageLengthBuffer = null; + const allocateMessage = (size) => { + if (typeof size !== "number") { + throw new Error("Attempted to allocate an event message where size was not a number: " + size); + } + currentMessageTotalLength = size; + currentMessagePendingLength = 4; + currentMessage = new Uint8Array(size); + const currentMessageView = new DataView(currentMessage.buffer); + currentMessageView.setUint32(0, size, false); + }; + const iterator = async function* () { + const sourceIterator = source[Symbol.asyncIterator](); + while (true) { + const { value, done } = await sourceIterator.next(); + if (done) { + if (!currentMessageTotalLength) { + return; + } + else if (currentMessageTotalLength === currentMessagePendingLength) { + yield currentMessage; + } + else { + throw new Error("Truncated event message received."); + } + return; + } + const chunkLength = value.length; + let currentOffset = 0; + while (currentOffset < chunkLength) { + if (!currentMessage) { + const bytesRemaining = chunkLength - currentOffset; + if (!messageLengthBuffer) { + messageLengthBuffer = new Uint8Array(4); + } + const numBytesForTotal = Math.min(4 - currentMessagePendingLength, bytesRemaining); + messageLengthBuffer.set(value.slice(currentOffset, currentOffset + numBytesForTotal), currentMessagePendingLength); + currentMessagePendingLength += numBytesForTotal; + currentOffset += numBytesForTotal; + if (currentMessagePendingLength < 4) { + break; + } + allocateMessage(new DataView(messageLengthBuffer.buffer).getUint32(0, false)); + messageLengthBuffer = null; + } + const numBytesToWrite = Math.min(currentMessageTotalLength - currentMessagePendingLength, chunkLength - currentOffset); + currentMessage.set(value.slice(currentOffset, currentOffset + numBytesToWrite), currentMessagePendingLength); + currentMessagePendingLength += numBytesToWrite; + currentOffset += numBytesToWrite; + if (currentMessageTotalLength && currentMessageTotalLength === currentMessagePendingLength) { + yield currentMessage; + currentMessage = null; + currentMessageTotalLength = 0; + currentMessagePendingLength = 0; + } + } + } + }; + return { + [Symbol.asyncIterator]: iterator, + }; +} + +function getMessageUnmarshaller(deserializer, toUtf8) { + return async function (message) { + const { value: messageType } = message.headers[":message-type"]; + if (messageType === "error") { + const unmodeledError = new Error(message.headers[":error-message"].value || "UnknownError"); + unmodeledError.name = message.headers[":error-code"].value; + throw unmodeledError; + } + else if (messageType === "exception") { + const code = message.headers[":exception-type"].value; + const exception = { [code]: message }; + const deserializedException = await deserializer(exception); + if (deserializedException.$unknown) { + const error = new Error(toUtf8(message.body)); + error.name = code; + throw error; + } + throw deserializedException[code]; + } + else if (messageType === "event") { + const event = { + [message.headers[":event-type"].value]: message, + }; + const deserialized = await deserializer(event); + if (deserialized.$unknown) + return; + return deserialized; + } + else { + throw Error(`Unrecognizable event type: ${message.headers[":event-type"].value}`); + } + }; +} + +class EventStreamMarshaller { + eventStreamCodec; + utfEncoder; + constructor({ utf8Encoder, utf8Decoder }) { + this.eventStreamCodec = new eventstreamCodec.EventStreamCodec(utf8Encoder, utf8Decoder); + this.utfEncoder = utf8Encoder; + } + deserialize(body, deserializer) { + const inputStream = getChunkedStream(body); + return new eventstreamCodec.SmithyMessageDecoderStream({ + messageStream: new eventstreamCodec.MessageDecoderStream({ inputStream, decoder: this.eventStreamCodec }), + deserializer: getMessageUnmarshaller(deserializer, this.utfEncoder), + }); + } + serialize(inputStream, serializer) { + return new eventstreamCodec.MessageEncoderStream({ + messageStream: new eventstreamCodec.SmithyMessageEncoderStream({ inputStream, serializer }), + encoder: this.eventStreamCodec, + includeEndFrame: true, + }); + } +} + +const eventStreamSerdeProvider = (options) => new EventStreamMarshaller(options); + +exports.EventStreamMarshaller = EventStreamMarshaller; +exports.eventStreamSerdeProvider = eventStreamSerdeProvider; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/EventStreamMarshaller.js b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/EventStreamMarshaller.js new file mode 100644 index 0000000..4269e72 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/EventStreamMarshaller.js @@ -0,0 +1,25 @@ +import { EventStreamCodec, MessageDecoderStream, MessageEncoderStream, SmithyMessageDecoderStream, SmithyMessageEncoderStream, } from "@smithy/eventstream-codec"; +import { getChunkedStream } from "./getChunkedStream"; +import { getMessageUnmarshaller } from "./getUnmarshalledStream"; +export class EventStreamMarshaller { + eventStreamCodec; + utfEncoder; + constructor({ utf8Encoder, utf8Decoder }) { + this.eventStreamCodec = new EventStreamCodec(utf8Encoder, utf8Decoder); + this.utfEncoder = utf8Encoder; + } + deserialize(body, deserializer) { + const inputStream = getChunkedStream(body); + return new SmithyMessageDecoderStream({ + messageStream: new MessageDecoderStream({ inputStream, decoder: this.eventStreamCodec }), + deserializer: getMessageUnmarshaller(deserializer, this.utfEncoder), + }); + } + serialize(inputStream, serializer) { + return new MessageEncoderStream({ + messageStream: new SmithyMessageEncoderStream({ inputStream, serializer }), + encoder: this.eventStreamCodec, + includeEndFrame: true, + }); + } +} diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/getChunkedStream.js b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/getChunkedStream.js new file mode 100644 index 0000000..b738b45 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/getChunkedStream.js @@ -0,0 +1,66 @@ +export function getChunkedStream(source) { + let currentMessageTotalLength = 0; + let currentMessagePendingLength = 0; + let currentMessage = null; + let messageLengthBuffer = null; + const allocateMessage = (size) => { + if (typeof size !== "number") { + throw new Error("Attempted to allocate an event message where size was not a number: " + size); + } + currentMessageTotalLength = size; + currentMessagePendingLength = 4; + currentMessage = new Uint8Array(size); + const currentMessageView = new DataView(currentMessage.buffer); + currentMessageView.setUint32(0, size, false); + }; + const iterator = async function* () { + const sourceIterator = source[Symbol.asyncIterator](); + while (true) { + const { value, done } = await sourceIterator.next(); + if (done) { + if (!currentMessageTotalLength) { + return; + } + else if (currentMessageTotalLength === currentMessagePendingLength) { + yield currentMessage; + } + else { + throw new Error("Truncated event message received."); + } + return; + } + const chunkLength = value.length; + let currentOffset = 0; + while (currentOffset < chunkLength) { + if (!currentMessage) { + const bytesRemaining = chunkLength - currentOffset; + if (!messageLengthBuffer) { + messageLengthBuffer = new Uint8Array(4); + } + const numBytesForTotal = Math.min(4 - currentMessagePendingLength, bytesRemaining); + messageLengthBuffer.set(value.slice(currentOffset, currentOffset + numBytesForTotal), currentMessagePendingLength); + currentMessagePendingLength += numBytesForTotal; + currentOffset += numBytesForTotal; + if (currentMessagePendingLength < 4) { + break; + } + allocateMessage(new DataView(messageLengthBuffer.buffer).getUint32(0, false)); + messageLengthBuffer = null; + } + const numBytesToWrite = Math.min(currentMessageTotalLength - currentMessagePendingLength, chunkLength - currentOffset); + currentMessage.set(value.slice(currentOffset, currentOffset + numBytesToWrite), currentMessagePendingLength); + currentMessagePendingLength += numBytesToWrite; + currentOffset += numBytesToWrite; + if (currentMessageTotalLength && currentMessageTotalLength === currentMessagePendingLength) { + yield currentMessage; + currentMessage = null; + currentMessageTotalLength = 0; + currentMessagePendingLength = 0; + } + } + } + }; + return { + [Symbol.asyncIterator]: iterator, + }; +} diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/getUnmarshalledStream.js b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/getUnmarshalledStream.js new file mode 100644 index 0000000..119399c --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/getUnmarshalledStream.js @@ -0,0 +1,47 @@ +export function getUnmarshalledStream(source, options) { + const messageUnmarshaller = getMessageUnmarshaller(options.deserializer, options.toUtf8); + return { + [Symbol.asyncIterator]: async function* () { + for await (const chunk of source) { + const message = options.eventStreamCodec.decode(chunk); + const type = await messageUnmarshaller(message); + if (type === undefined) + continue; + yield type; + } + }, + }; +} +export function getMessageUnmarshaller(deserializer, toUtf8) { + return async function (message) { + const { value: messageType } = message.headers[":message-type"]; + if (messageType === "error") { + const unmodeledError = new Error(message.headers[":error-message"].value || "UnknownError"); + unmodeledError.name = message.headers[":error-code"].value; + throw unmodeledError; + } + else if (messageType === "exception") { + const code = message.headers[":exception-type"].value; + const exception = { [code]: message }; + const deserializedException = await deserializer(exception); + if (deserializedException.$unknown) { + const error = new Error(toUtf8(message.body)); + error.name = code; + throw error; + } + throw deserializedException[code]; + } + else if (messageType === "event") { + const event = { + [message.headers[":event-type"].value]: message, + }; + const deserialized = await deserializer(event); + if (deserialized.$unknown) + return; + return deserialized; + } + else { + throw Error(`Unrecognizable event type: ${message.headers[":event-type"].value}`); + } + }; +} diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/index.js b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/index.js new file mode 100644 index 0000000..294fec5 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./EventStreamMarshaller"; +export * from "./provider"; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/provider.js b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/provider.js new file mode 100644 index 0000000..b71c3f0 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-es/provider.js @@ -0,0 +1,2 @@ +import { EventStreamMarshaller } from "./EventStreamMarshaller"; +export const eventStreamSerdeProvider = (options) => new EventStreamMarshaller(options); diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/EventStreamMarshaller.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/EventStreamMarshaller.d.ts new file mode 100644 index 0000000..02119e3 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/EventStreamMarshaller.d.ts @@ -0,0 +1,23 @@ +import type { Decoder, Encoder, EventStreamMarshaller as IEventStreamMarshaller, Message } from "@smithy/types"; +/** + * @internal + */ +export interface EventStreamMarshaller extends IEventStreamMarshaller { +} +/** + * @internal + */ +export interface EventStreamMarshallerOptions { + utf8Encoder: Encoder; + utf8Decoder: Decoder; +} +/** + * @internal + */ +export declare class EventStreamMarshaller { + private readonly eventStreamCodec; + private readonly utfEncoder; + constructor({ utf8Encoder, utf8Decoder }: EventStreamMarshallerOptions); + deserialize(body: AsyncIterable, deserializer: (input: Record) => Promise): AsyncIterable; + serialize(inputStream: AsyncIterable, serializer: (event: T) => Message): AsyncIterable; +} diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/getChunkedStream.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/getChunkedStream.d.ts new file mode 100644 index 0000000..d2a58c0 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/getChunkedStream.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function getChunkedStream(source: AsyncIterable): AsyncIterable; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/getUnmarshalledStream.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/getUnmarshalledStream.d.ts new file mode 100644 index 0000000..f02c7c9 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/getUnmarshalledStream.d.ts @@ -0,0 +1,18 @@ +import type { EventStreamCodec } from "@smithy/eventstream-codec"; +import type { Encoder, Message } from "@smithy/types"; +/** + * @internal + */ +export type UnmarshalledStreamOptions = { + eventStreamCodec: EventStreamCodec; + deserializer: (input: Record) => Promise; + toUtf8: Encoder; +}; +/** + * @internal + */ +export declare function getUnmarshalledStream>(source: AsyncIterable, options: UnmarshalledStreamOptions): AsyncIterable; +/** + * @internal + */ +export declare function getMessageUnmarshaller>(deserializer: (input: Record) => Promise, toUtf8: Encoder): (input: Message) => Promise; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/index.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/index.d.ts new file mode 100644 index 0000000..9f8e9f7 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./EventStreamMarshaller"; +/** + * @internal + */ +export * from "./provider"; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/provider.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/provider.d.ts new file mode 100644 index 0000000..8b841bb --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/provider.d.ts @@ -0,0 +1,3 @@ +import type { EventStreamSerdeProvider } from "@smithy/types"; +/** NodeJS event stream utils provider */ +export declare const eventStreamSerdeProvider: EventStreamSerdeProvider; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/EventStreamMarshaller.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/EventStreamMarshaller.d.ts new file mode 100644 index 0000000..6fa2c5a --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/EventStreamMarshaller.d.ts @@ -0,0 +1,23 @@ +import { Decoder, Encoder, EventStreamMarshaller as IEventStreamMarshaller, Message } from "@smithy/types"; +/** + * @internal + */ +export interface EventStreamMarshaller extends IEventStreamMarshaller { +} +/** + * @internal + */ +export interface EventStreamMarshallerOptions { + utf8Encoder: Encoder; + utf8Decoder: Decoder; +} +/** + * @internal + */ +export declare class EventStreamMarshaller { + private readonly eventStreamCodec; + private readonly utfEncoder; + constructor({ utf8Encoder, utf8Decoder }: EventStreamMarshallerOptions); + deserialize(body: AsyncIterable, deserializer: (input: Record) => Promise): AsyncIterable; + serialize(inputStream: AsyncIterable, serializer: (event: T) => Message): AsyncIterable; +} diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/getChunkedStream.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/getChunkedStream.d.ts new file mode 100644 index 0000000..9a7e982 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/getChunkedStream.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare function getChunkedStream(source: AsyncIterable): AsyncIterable; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/getUnmarshalledStream.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/getUnmarshalledStream.d.ts new file mode 100644 index 0000000..aeeafd8 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/getUnmarshalledStream.d.ts @@ -0,0 +1,18 @@ +import { EventStreamCodec } from "@smithy/eventstream-codec"; +import { Encoder, Message } from "@smithy/types"; +/** + * @internal + */ +export type UnmarshalledStreamOptions = { + eventStreamCodec: EventStreamCodec; + deserializer: (input: Record) => Promise; + toUtf8: Encoder; +}; +/** + * @internal + */ +export declare function getUnmarshalledStream>(source: AsyncIterable, options: UnmarshalledStreamOptions): AsyncIterable; +/** + * @internal + */ +export declare function getMessageUnmarshaller>(deserializer: (input: Record) => Promise, toUtf8: Encoder): (input: Message) => Promise; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..a82a787 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./EventStreamMarshaller"; +/** + * @internal + */ +export * from "./provider"; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/provider.d.ts b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/provider.d.ts new file mode 100644 index 0000000..ef02e9a --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/dist-types/ts3.4/provider.d.ts @@ -0,0 +1,3 @@ +import { EventStreamSerdeProvider } from "@smithy/types"; +/** NodeJS event stream utils provider */ +export declare const eventStreamSerdeProvider: EventStreamSerdeProvider; diff --git a/bff/node_modules/@smithy/eventstream-serde-universal/package.json b/bff/node_modules/@smithy/eventstream-serde-universal/package.json new file mode 100644 index 0000000..8e7e521 --- /dev/null +++ b/bff/node_modules/@smithy/eventstream-serde-universal/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/eventstream-serde-universal", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline eventstream-serde-universal", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/eventstream-codec": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/util-utf8": "^4.2.2", + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/eventstream-serde-universal", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/eventstream-serde-universal" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/fetch-http-handler/LICENSE b/bff/node_modules/@smithy/fetch-http-handler/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/fetch-http-handler/README.md b/bff/node_modules/@smithy/fetch-http-handler/README.md new file mode 100644 index 0000000..e52e8f1 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/README.md @@ -0,0 +1,11 @@ +# @smithy/fetch-http-handler + +[![NPM version](https://img.shields.io/npm/v/@smithy/fetch-http-handler/latest.svg)](https://www.npmjs.com/package/@smithy/fetch-http-handler) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/fetch-http-handler.svg)](https://www.npmjs.com/package/@smithy/fetch-http-handler) + +This is the default `requestHandler` used for browser applications. +Since Node.js introduced experimental Web Streams API in v16.5.0 and made it stable in v21.0.0, +you can consider using `fetch-http-handler` in Node.js, although it's not recommended. + +For the Node.js default `requestHandler` implementation, see instead +[`@smithy/node-http-handler`](https://www.npmjs.com/package/@smithy/node-http-handler). diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js b/bff/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js new file mode 100644 index 0000000..82c593f --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js @@ -0,0 +1,233 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var querystringBuilder = require('@smithy/querystring-builder'); +var utilBase64 = require('@smithy/util-base64'); + +function createRequest(url, requestOptions) { + return new Request(url, requestOptions); +} + +function requestTimeout(timeoutInMs = 0) { + return new Promise((resolve, reject) => { + if (timeoutInMs) { + setTimeout(() => { + const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`); + timeoutError.name = "TimeoutError"; + reject(timeoutError); + }, timeoutInMs); + } + }); +} + +const keepAliveSupport = { + supported: undefined, +}; +class FetchHttpHandler { + config; + configProvider; + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new FetchHttpHandler(instanceOrOptions); + } + constructor(options) { + if (typeof options === "function") { + this.configProvider = options().then((opts) => opts || {}); + } + else { + this.config = options ?? {}; + this.configProvider = Promise.resolve(this.config); + } + if (keepAliveSupport.supported === undefined) { + keepAliveSupport.supported = Boolean(typeof Request !== "undefined" && "keepalive" in createRequest("https://[::1]")); + } + } + destroy() { + } + async handle(request, { abortSignal, requestTimeout: requestTimeout$1 } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + const requestTimeoutInMs = requestTimeout$1 ?? this.config.requestTimeout; + const keepAlive = this.config.keepAlive === true; + const credentials = this.config.credentials; + if (abortSignal?.aborted) { + const abortError = buildAbortError(abortSignal); + return Promise.reject(abortError); + } + let path = request.path; + const queryString = querystringBuilder.buildQueryString(request.query || {}); + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + const { port, method } = request; + const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : ""}${path}`; + const body = method === "GET" || method === "HEAD" ? undefined : request.body; + const requestOptions = { + body, + headers: new Headers(request.headers), + method: method, + credentials, + }; + if (this.config?.cache) { + requestOptions.cache = this.config.cache; + } + if (body) { + requestOptions.duplex = "half"; + } + if (typeof AbortController !== "undefined") { + requestOptions.signal = abortSignal; + } + if (keepAliveSupport.supported) { + requestOptions.keepalive = keepAlive; + } + if (typeof this.config.requestInit === "function") { + Object.assign(requestOptions, this.config.requestInit(request)); + } + let removeSignalEventListener = () => { }; + const fetchRequest = createRequest(url, requestOptions); + const raceOfPromises = [ + fetch(fetchRequest).then((response) => { + const fetchHeaders = response.headers; + const transformedHeaders = {}; + for (const pair of fetchHeaders.entries()) { + transformedHeaders[pair[0]] = pair[1]; + } + const hasReadableStream = response.body != undefined; + if (!hasReadableStream) { + return response.blob().then((body) => ({ + response: new protocolHttp.HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body, + }), + })); + } + return { + response: new protocolHttp.HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body: response.body, + }), + }; + }), + requestTimeout(requestTimeoutInMs), + ]; + if (abortSignal) { + raceOfPromises.push(new Promise((resolve, reject) => { + const onAbort = () => { + const abortError = buildAbortError(abortSignal); + reject(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + removeSignalEventListener = () => signal.removeEventListener("abort", onAbort); + } + else { + abortSignal.onabort = onAbort; + } + })); + } + return Promise.race(raceOfPromises).finally(removeSignalEventListener); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + config[key] = value; + return config; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } +} +function buildAbortError(abortSignal) { + const reason = abortSignal && typeof abortSignal === "object" && "reason" in abortSignal + ? abortSignal.reason + : undefined; + if (reason) { + if (reason instanceof Error) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + abortError.cause = reason; + return abortError; + } + const abortError = new Error(String(reason)); + abortError.name = "AbortError"; + return abortError; + } + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return abortError; +} + +const streamCollector = async (stream) => { + if ((typeof Blob === "function" && stream instanceof Blob) || stream.constructor?.name === "Blob") { + if (Blob.prototype.arrayBuffer !== undefined) { + return new Uint8Array(await stream.arrayBuffer()); + } + return collectBlob(stream); + } + return collectStream(stream); +}; +async function collectBlob(blob) { + const base64 = await readToBase64(blob); + const arrayBuffer = utilBase64.fromBase64(base64); + return new Uint8Array(arrayBuffer); +} +async function collectStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + let length = 0; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + isDone = done; + } + const collected = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + collected.set(chunk, offset); + offset += chunk.length; + } + return collected; +} +function readToBase64(blob) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => { + if (reader.readyState !== 2) { + return reject(new Error("Reader aborted too early")); + } + const result = (reader.result ?? ""); + const commaIndex = result.indexOf(","); + const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length; + resolve(result.substring(dataOffset)); + }; + reader.onabort = () => reject(new Error("Read aborted")); + reader.onerror = () => reject(reader.error); + reader.readAsDataURL(blob); + }); +} + +exports.FetchHttpHandler = FetchHttpHandler; +exports.keepAliveSupport = keepAliveSupport; +exports.streamCollector = streamCollector; diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js b/bff/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js new file mode 100644 index 0000000..b6f1816 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js @@ -0,0 +1,3 @@ +export function createRequest(url, requestOptions) { + return new Request(url, requestOptions); +} diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js b/bff/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js new file mode 100644 index 0000000..f0aeed8 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js @@ -0,0 +1,158 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { buildQueryString } from "@smithy/querystring-builder"; +import { createRequest } from "./create-request"; +import { requestTimeout as requestTimeoutFn } from "./request-timeout"; +export const keepAliveSupport = { + supported: undefined, +}; +export class FetchHttpHandler { + config; + configProvider; + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new FetchHttpHandler(instanceOrOptions); + } + constructor(options) { + if (typeof options === "function") { + this.configProvider = options().then((opts) => opts || {}); + } + else { + this.config = options ?? {}; + this.configProvider = Promise.resolve(this.config); + } + if (keepAliveSupport.supported === undefined) { + keepAliveSupport.supported = Boolean(typeof Request !== "undefined" && "keepalive" in createRequest("https://[::1]")); + } + } + destroy() { + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + const requestTimeoutInMs = requestTimeout ?? this.config.requestTimeout; + const keepAlive = this.config.keepAlive === true; + const credentials = this.config.credentials; + if (abortSignal?.aborted) { + const abortError = buildAbortError(abortSignal); + return Promise.reject(abortError); + } + let path = request.path; + const queryString = buildQueryString(request.query || {}); + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + const { port, method } = request; + const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : ""}${path}`; + const body = method === "GET" || method === "HEAD" ? undefined : request.body; + const requestOptions = { + body, + headers: new Headers(request.headers), + method: method, + credentials, + }; + if (this.config?.cache) { + requestOptions.cache = this.config.cache; + } + if (body) { + requestOptions.duplex = "half"; + } + if (typeof AbortController !== "undefined") { + requestOptions.signal = abortSignal; + } + if (keepAliveSupport.supported) { + requestOptions.keepalive = keepAlive; + } + if (typeof this.config.requestInit === "function") { + Object.assign(requestOptions, this.config.requestInit(request)); + } + let removeSignalEventListener = () => { }; + const fetchRequest = createRequest(url, requestOptions); + const raceOfPromises = [ + fetch(fetchRequest).then((response) => { + const fetchHeaders = response.headers; + const transformedHeaders = {}; + for (const pair of fetchHeaders.entries()) { + transformedHeaders[pair[0]] = pair[1]; + } + const hasReadableStream = response.body != undefined; + if (!hasReadableStream) { + return response.blob().then((body) => ({ + response: new HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body, + }), + })); + } + return { + response: new HttpResponse({ + headers: transformedHeaders, + reason: response.statusText, + statusCode: response.status, + body: response.body, + }), + }; + }), + requestTimeoutFn(requestTimeoutInMs), + ]; + if (abortSignal) { + raceOfPromises.push(new Promise((resolve, reject) => { + const onAbort = () => { + const abortError = buildAbortError(abortSignal); + reject(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + removeSignalEventListener = () => signal.removeEventListener("abort", onAbort); + } + else { + abortSignal.onabort = onAbort; + } + })); + } + return Promise.race(raceOfPromises).finally(removeSignalEventListener); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + config[key] = value; + return config; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } +} +function buildAbortError(abortSignal) { + const reason = abortSignal && typeof abortSignal === "object" && "reason" in abortSignal + ? abortSignal.reason + : undefined; + if (reason) { + if (reason instanceof Error) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + abortError.cause = reason; + return abortError; + } + const abortError = new Error(String(reason)); + abortError.name = "AbortError"; + return abortError; + } + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return abortError; +} diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-es/index.js b/bff/node_modules/@smithy/fetch-http-handler/dist-es/index.js new file mode 100644 index 0000000..a0c61f1 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./fetch-http-handler"; +export * from "./stream-collector"; diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js b/bff/node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js new file mode 100644 index 0000000..66b09b2 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js @@ -0,0 +1,11 @@ +export function requestTimeout(timeoutInMs = 0) { + return new Promise((resolve, reject) => { + if (timeoutInMs) { + setTimeout(() => { + const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`); + timeoutError.name = "TimeoutError"; + reject(timeoutError); + }, timeoutInMs); + } + }); +} diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js b/bff/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js new file mode 100644 index 0000000..a400d9b --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js @@ -0,0 +1,53 @@ +import { fromBase64 } from "@smithy/util-base64"; +export const streamCollector = async (stream) => { + if ((typeof Blob === "function" && stream instanceof Blob) || stream.constructor?.name === "Blob") { + if (Blob.prototype.arrayBuffer !== undefined) { + return new Uint8Array(await stream.arrayBuffer()); + } + return collectBlob(stream); + } + return collectStream(stream); +}; +async function collectBlob(blob) { + const base64 = await readToBase64(blob); + const arrayBuffer = fromBase64(base64); + return new Uint8Array(arrayBuffer); +} +async function collectStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + let length = 0; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + isDone = done; + } + const collected = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + collected.set(chunk, offset); + offset += chunk.length; + } + return collected; +} +function readToBase64(blob) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onloadend = () => { + if (reader.readyState !== 2) { + return reject(new Error("Reader aborted too early")); + } + const result = (reader.result ?? ""); + const commaIndex = result.indexOf(","); + const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length; + resolve(result.substring(dataOffset)); + }; + reader.onabort = () => reject(new Error("Read aborted")); + reader.onerror = () => reject(reader.error); + reader.readAsDataURL(blob); + }); +} diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts new file mode 100644 index 0000000..4fb2e13 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts @@ -0,0 +1,6 @@ +import type { AdditionalRequestParameters } from "./fetch-http-handler"; +/** + * @internal + * For mocking/interception. + */ +export declare function createRequest(url: string, requestOptions?: RequestInit & AdditionalRequestParameters): Request; diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts new file mode 100644 index 0000000..c9b057d --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts @@ -0,0 +1,42 @@ +import type { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import type { FetchHttpHandlerOptions } from "@smithy/types"; +import type { HttpHandlerOptions, Provider } from "@smithy/types"; +/** + * @public + */ +export { FetchHttpHandlerOptions }; +/** + * @internal + * Detection of keepalive support. Can be overridden for testing. + */ +export declare const keepAliveSupport: { + supported: undefined | boolean; +}; +/** + * @internal + */ +export type AdditionalRequestParameters = { + duplex?: "half"; +}; +/** + * @public + * + * HttpHandler implementation using browsers' `fetch` global function. + */ +export declare class FetchHttpHandler implements HttpHandler { + private config?; + private configProvider; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | FetchHttpHandlerOptions | Provider): FetchHttpHandler | HttpHandler; + constructor(options?: FetchHttpHandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof FetchHttpHandlerOptions, value: FetchHttpHandlerOptions[typeof key]): void; + httpHandlerConfigs(): FetchHttpHandlerOptions; +} diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts new file mode 100644 index 0000000..a0c61f1 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fetch-http-handler"; +export * from "./stream-collector"; diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/request-timeout.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/request-timeout.d.ts new file mode 100644 index 0000000..28d784b --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/request-timeout.d.ts @@ -0,0 +1 @@ +export declare function requestTimeout(timeoutInMs?: number): Promise; diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts new file mode 100644 index 0000000..6ae2a93 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts @@ -0,0 +1,2 @@ +import type { StreamCollector } from "@smithy/types"; +export declare const streamCollector: StreamCollector; diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts new file mode 100644 index 0000000..5f0b074 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts @@ -0,0 +1,6 @@ +import { AdditionalRequestParameters } from "./fetch-http-handler"; +/** + * @internal + * For mocking/interception. + */ +export declare function createRequest(url: string, requestOptions?: RequestInit & AdditionalRequestParameters): Request; diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts new file mode 100644 index 0000000..3a5efd4 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts @@ -0,0 +1,42 @@ +import { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import { FetchHttpHandlerOptions } from "@smithy/types"; +import { HttpHandlerOptions, Provider } from "@smithy/types"; +/** + * @public + */ +export { FetchHttpHandlerOptions }; +/** + * @internal + * Detection of keepalive support. Can be overridden for testing. + */ +export declare const keepAliveSupport: { + supported: undefined | boolean; +}; +/** + * @internal + */ +export type AdditionalRequestParameters = { + duplex?: "half"; +}; +/** + * @public + * + * HttpHandler implementation using browsers' `fetch` global function. + */ +export declare class FetchHttpHandler implements HttpHandler { + private config?; + private configProvider; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | FetchHttpHandlerOptions | Provider): FetchHttpHandler | HttpHandler; + constructor(options?: FetchHttpHandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof FetchHttpHandlerOptions, value: FetchHttpHandlerOptions[typeof key]): void; + httpHandlerConfigs(): FetchHttpHandlerOptions; +} diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..d30edab --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fetch-http-handler"; +export * from "./stream-collector"; diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/request-timeout.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/request-timeout.d.ts new file mode 100644 index 0000000..ca24128 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/request-timeout.d.ts @@ -0,0 +1 @@ +export declare function requestTimeout(timeoutInMs?: number): Promise; diff --git a/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/stream-collector.d.ts b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/stream-collector.d.ts new file mode 100644 index 0000000..8259097 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/stream-collector.d.ts @@ -0,0 +1,2 @@ +import { StreamCollector } from "@smithy/types"; +export declare const streamCollector: StreamCollector; diff --git a/bff/node_modules/@smithy/fetch-http-handler/package.json b/bff/node_modules/@smithy/fetch-http-handler/package.json new file mode 100644 index 0000000..a787e99 --- /dev/null +++ b/bff/node_modules/@smithy/fetch-http-handler/package.json @@ -0,0 +1,69 @@ +{ + "name": "@smithy/fetch-http-handler", + "version": "5.3.15", + "description": "Provides a way to make requests", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline fetch-http-handler", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run && yarn test:browser", + "test:watch": "yarn g:vitest watch", + "test:browser": "yarn g:vitest run -c vitest.config.browser.mts", + "test:browser:watch": "yarn g:vitest watch -c vitest.config.browser.mts" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/abort-controller": "^4.2.12", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/fetch-http-handler", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/fetch-http-handler" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/hash-blob-browser/LICENSE b/bff/node_modules/@smithy/hash-blob-browser/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/hash-blob-browser/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/hash-blob-browser/README.md b/bff/node_modules/@smithy/hash-blob-browser/README.md new file mode 100644 index 0000000..287e8e2 --- /dev/null +++ b/bff/node_modules/@smithy/hash-blob-browser/README.md @@ -0,0 +1,10 @@ +# @smithy/sha256-blob-browser + +[![NPM version](https://img.shields.io/npm/v/@smithy/hash-blob-browser/latest.svg)](https://www.npmjs.com/package/@smithy/hash-blob-browser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/hash-blob-browser.svg)](https://www.npmjs.com/package/@smithy/hash-blob-browser) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/hash-blob-browser/dist-cjs/index.js b/bff/node_modules/@smithy/hash-blob-browser/dist-cjs/index.js new file mode 100644 index 0000000..c7bcc32 --- /dev/null +++ b/bff/node_modules/@smithy/hash-blob-browser/dist-cjs/index.js @@ -0,0 +1,13 @@ +'use strict'; + +var chunkedBlobReader = require('@smithy/chunked-blob-reader'); + +const blobHasher = async function blobHasher(hashCtor, blob) { + const hash = new hashCtor(); + await chunkedBlobReader.blobReader(blob, (chunk) => { + hash.update(chunk); + }); + return hash.digest(); +}; + +exports.blobHasher = blobHasher; diff --git a/bff/node_modules/@smithy/hash-blob-browser/dist-es/index.js b/bff/node_modules/@smithy/hash-blob-browser/dist-es/index.js new file mode 100644 index 0000000..49fa6f7 --- /dev/null +++ b/bff/node_modules/@smithy/hash-blob-browser/dist-es/index.js @@ -0,0 +1,8 @@ +import { blobReader } from "@smithy/chunked-blob-reader"; +export const blobHasher = async function blobHasher(hashCtor, blob) { + const hash = new hashCtor(); + await blobReader(blob, (chunk) => { + hash.update(chunk); + }); + return hash.digest(); +}; diff --git a/bff/node_modules/@smithy/hash-blob-browser/dist-types/index.d.ts b/bff/node_modules/@smithy/hash-blob-browser/dist-types/index.d.ts new file mode 100644 index 0000000..0df9482 --- /dev/null +++ b/bff/node_modules/@smithy/hash-blob-browser/dist-types/index.d.ts @@ -0,0 +1,5 @@ +import type { StreamHasher } from "@smithy/types"; +/** + * @internal + */ +export declare const blobHasher: StreamHasher; diff --git a/bff/node_modules/@smithy/hash-blob-browser/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/hash-blob-browser/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..1c7e63a --- /dev/null +++ b/bff/node_modules/@smithy/hash-blob-browser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +import { StreamHasher } from "@smithy/types"; +/** + * @internal + */ +export declare const blobHasher: StreamHasher; diff --git a/bff/node_modules/@smithy/hash-blob-browser/package.json b/bff/node_modules/@smithy/hash-blob-browser/package.json new file mode 100644 index 0000000..c3c4a58 --- /dev/null +++ b/bff/node_modules/@smithy/hash-blob-browser/package.json @@ -0,0 +1,70 @@ +{ + "name": "@smithy/hash-blob-browser", + "version": "4.2.13", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline hash-blob-browser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.2", + "@smithy/chunked-blob-reader-native": "^4.2.3", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/util-hex-encoding": "^4.2.2", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "react-native": { + "@smithy/chunked-blob-reader": "@smithy/chunked-blob-reader-native" + }, + "browser": { + "@smithy/chunked-blob-reader": "@smithy/chunked-blob-reader" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/hash-blob-browser", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/hash-blob-browser" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/hash-node/LICENSE b/bff/node_modules/@smithy/hash-node/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/hash-node/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/hash-node/README.md b/bff/node_modules/@smithy/hash-node/README.md new file mode 100644 index 0000000..a160019 --- /dev/null +++ b/bff/node_modules/@smithy/hash-node/README.md @@ -0,0 +1,10 @@ +# @smithy/md5-node + +[![NPM version](https://img.shields.io/npm/v/@smithy/hash-node/latest.svg)](https://www.npmjs.com/package/@smithy/hash-node) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/hash-node.svg)](https://www.npmjs.com/package/@smithy/hash-node) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/hash-node/dist-cjs/index.js b/bff/node_modules/@smithy/hash-node/dist-cjs/index.js new file mode 100644 index 0000000..9038b5f --- /dev/null +++ b/bff/node_modules/@smithy/hash-node/dist-cjs/index.js @@ -0,0 +1,42 @@ +'use strict'; + +var utilBufferFrom = require('@smithy/util-buffer-from'); +var utilUtf8 = require('@smithy/util-utf8'); +var buffer = require('buffer'); +var crypto = require('crypto'); + +class Hash { + algorithmIdentifier; + secret; + hash; + constructor(algorithmIdentifier, secret) { + this.algorithmIdentifier = algorithmIdentifier; + this.secret = secret; + this.reset(); + } + update(toHash, encoding) { + this.hash.update(utilUtf8.toUint8Array(castSourceData(toHash, encoding))); + } + digest() { + return Promise.resolve(this.hash.digest()); + } + reset() { + this.hash = this.secret + ? crypto.createHmac(this.algorithmIdentifier, castSourceData(this.secret)) + : crypto.createHash(this.algorithmIdentifier); + } +} +function castSourceData(toCast, encoding) { + if (buffer.Buffer.isBuffer(toCast)) { + return toCast; + } + if (typeof toCast === "string") { + return utilBufferFrom.fromString(toCast, encoding); + } + if (ArrayBuffer.isView(toCast)) { + return utilBufferFrom.fromArrayBuffer(toCast.buffer, toCast.byteOffset, toCast.byteLength); + } + return utilBufferFrom.fromArrayBuffer(toCast); +} + +exports.Hash = Hash; diff --git a/bff/node_modules/@smithy/hash-node/dist-es/index.js b/bff/node_modules/@smithy/hash-node/dist-es/index.js new file mode 100644 index 0000000..ec73958 --- /dev/null +++ b/bff/node_modules/@smithy/hash-node/dist-es/index.js @@ -0,0 +1,37 @@ +import { fromArrayBuffer, fromString } from "@smithy/util-buffer-from"; +import { toUint8Array } from "@smithy/util-utf8"; +import { Buffer } from "buffer"; +import { createHash, createHmac } from "crypto"; +export class Hash { + algorithmIdentifier; + secret; + hash; + constructor(algorithmIdentifier, secret) { + this.algorithmIdentifier = algorithmIdentifier; + this.secret = secret; + this.reset(); + } + update(toHash, encoding) { + this.hash.update(toUint8Array(castSourceData(toHash, encoding))); + } + digest() { + return Promise.resolve(this.hash.digest()); + } + reset() { + this.hash = this.secret + ? createHmac(this.algorithmIdentifier, castSourceData(this.secret)) + : createHash(this.algorithmIdentifier); + } +} +function castSourceData(toCast, encoding) { + if (Buffer.isBuffer(toCast)) { + return toCast; + } + if (typeof toCast === "string") { + return fromString(toCast, encoding); + } + if (ArrayBuffer.isView(toCast)) { + return fromArrayBuffer(toCast.buffer, toCast.byteOffset, toCast.byteLength); + } + return fromArrayBuffer(toCast); +} diff --git a/bff/node_modules/@smithy/hash-node/dist-types/index.d.ts b/bff/node_modules/@smithy/hash-node/dist-types/index.d.ts new file mode 100644 index 0000000..c47c51b --- /dev/null +++ b/bff/node_modules/@smithy/hash-node/dist-types/index.d.ts @@ -0,0 +1,13 @@ +import type { Checksum, SourceData } from "@smithy/types"; +/** + * @internal + */ +export declare class Hash implements Checksum { + private readonly algorithmIdentifier; + private readonly secret?; + private hash; + constructor(algorithmIdentifier: string, secret?: SourceData); + update(toHash: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + digest(): Promise; + reset(): void; +} diff --git a/bff/node_modules/@smithy/hash-node/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/hash-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..313ab7e --- /dev/null +++ b/bff/node_modules/@smithy/hash-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { Checksum, SourceData } from "@smithy/types"; +/** + * @internal + */ +export declare class Hash implements Checksum { + private readonly algorithmIdentifier; + private readonly secret?; + private hash; + constructor(algorithmIdentifier: string, secret?: SourceData); + update(toHash: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + digest(): Promise; + reset(): void; +} diff --git a/bff/node_modules/@smithy/hash-node/package.json b/bff/node_modules/@smithy/hash-node/package.json new file mode 100644 index 0000000..0dd8cd3 --- /dev/null +++ b/bff/node_modules/@smithy/hash-node/package.json @@ -0,0 +1,65 @@ +{ + "name": "@smithy/hash-node", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline hash-node", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "hash-test-vectors": "^1.3.2", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/hash-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/hash-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/hash-stream-node/LICENSE b/bff/node_modules/@smithy/hash-stream-node/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/hash-stream-node/README.md b/bff/node_modules/@smithy/hash-stream-node/README.md new file mode 100644 index 0000000..a1d8065 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/README.md @@ -0,0 +1,12 @@ +# @smithy/hash-stream-node + +[![NPM version](https://img.shields.io/npm/v/@smithy/hash-stream-node/latest.svg)](https://www.npmjs.com/package/@smithy/hash-stream-node) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/hash-stream-node.svg)](https://www.npmjs.com/package/@smithy/hash-stream-node) + +A utility for calculating the hash of Node.JS readable streams. + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-cjs/index.js b/bff/node_modules/@smithy/hash-stream-node/dist-cjs/index.js new file mode 100644 index 0000000..5796e08 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-cjs/index.js @@ -0,0 +1,67 @@ +'use strict'; + +var fs = require('fs'); +var utilUtf8 = require('@smithy/util-utf8'); +var stream = require('stream'); + +class HashCalculator extends stream.Writable { + hash; + constructor(hash, options) { + super(options); + this.hash = hash; + } + _write(chunk, encoding, callback) { + try { + this.hash.update(utilUtf8.toUint8Array(chunk)); + } + catch (err) { + return callback(err); + } + callback(); + } +} + +const fileStreamHasher = (hashCtor, fileStream) => new Promise((resolve, reject) => { + if (!isReadStream(fileStream)) { + reject(new Error("Unable to calculate hash for non-file streams.")); + return; + } + const fileStreamTee = fs.createReadStream(fileStream.path, { + start: fileStream.start, + end: fileStream.end, + }); + const hash = new hashCtor(); + const hashCalculator = new HashCalculator(hash); + fileStreamTee.pipe(hashCalculator); + fileStreamTee.on("error", (err) => { + hashCalculator.end(); + reject(err); + }); + hashCalculator.on("error", reject); + hashCalculator.on("finish", function () { + hash.digest().then(resolve).catch(reject); + }); +}); +const isReadStream = (stream) => typeof stream.path === "string"; + +const readableStreamHasher = (hashCtor, readableStream) => { + if (readableStream.readableFlowing !== null) { + throw new Error("Unable to calculate hash for flowing readable stream"); + } + const hash = new hashCtor(); + const hashCalculator = new HashCalculator(hash); + readableStream.pipe(hashCalculator); + return new Promise((resolve, reject) => { + readableStream.on("error", (err) => { + hashCalculator.end(); + reject(err); + }); + hashCalculator.on("error", reject); + hashCalculator.on("finish", () => { + hash.digest().then(resolve).catch(reject); + }); + }); +}; + +exports.fileStreamHasher = fileStreamHasher; +exports.readableStreamHasher = readableStreamHasher; diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-es/HashCalculator.js b/bff/node_modules/@smithy/hash-stream-node/dist-es/HashCalculator.js new file mode 100644 index 0000000..a12a684 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-es/HashCalculator.js @@ -0,0 +1,18 @@ +import { toUint8Array } from "@smithy/util-utf8"; +import { Writable } from "stream"; +export class HashCalculator extends Writable { + hash; + constructor(hash, options) { + super(options); + this.hash = hash; + } + _write(chunk, encoding, callback) { + try { + this.hash.update(toUint8Array(chunk)); + } + catch (err) { + return callback(err); + } + callback(); + } +} diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-es/fileStreamHasher.js b/bff/node_modules/@smithy/hash-stream-node/dist-es/fileStreamHasher.js new file mode 100644 index 0000000..a831003 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-es/fileStreamHasher.js @@ -0,0 +1,24 @@ +import { createReadStream } from "fs"; +import { HashCalculator } from "./HashCalculator"; +export const fileStreamHasher = (hashCtor, fileStream) => new Promise((resolve, reject) => { + if (!isReadStream(fileStream)) { + reject(new Error("Unable to calculate hash for non-file streams.")); + return; + } + const fileStreamTee = createReadStream(fileStream.path, { + start: fileStream.start, + end: fileStream.end, + }); + const hash = new hashCtor(); + const hashCalculator = new HashCalculator(hash); + fileStreamTee.pipe(hashCalculator); + fileStreamTee.on("error", (err) => { + hashCalculator.end(); + reject(err); + }); + hashCalculator.on("error", reject); + hashCalculator.on("finish", function () { + hash.digest().then(resolve).catch(reject); + }); +}); +const isReadStream = (stream) => typeof stream.path === "string"; diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-es/index.js b/bff/node_modules/@smithy/hash-stream-node/dist-es/index.js new file mode 100644 index 0000000..4609776 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./fileStreamHasher"; +export * from "./readableStreamHasher"; diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-es/readableStreamHasher.js b/bff/node_modules/@smithy/hash-stream-node/dist-es/readableStreamHasher.js new file mode 100644 index 0000000..141129c --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-es/readableStreamHasher.js @@ -0,0 +1,19 @@ +import { HashCalculator } from "./HashCalculator"; +export const readableStreamHasher = (hashCtor, readableStream) => { + if (readableStream.readableFlowing !== null) { + throw new Error("Unable to calculate hash for flowing readable stream"); + } + const hash = new hashCtor(); + const hashCalculator = new HashCalculator(hash); + readableStream.pipe(hashCalculator); + return new Promise((resolve, reject) => { + readableStream.on("error", (err) => { + hashCalculator.end(); + reject(err); + }); + hashCalculator.on("error", reject); + hashCalculator.on("finish", () => { + hash.digest().then(resolve).catch(reject); + }); + }); +}; diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-types/HashCalculator.d.ts b/bff/node_modules/@smithy/hash-stream-node/dist-types/HashCalculator.d.ts new file mode 100644 index 0000000..472b715 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-types/HashCalculator.d.ts @@ -0,0 +1,11 @@ +import type { Checksum, Hash } from "@smithy/types"; +import type { WritableOptions } from "stream"; +import { Writable } from "stream"; +/** + * @internal + */ +export declare class HashCalculator extends Writable { + readonly hash: Checksum | Hash; + constructor(hash: Checksum | Hash, options?: WritableOptions); + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; +} diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-types/fileStreamHasher.d.ts b/bff/node_modules/@smithy/hash-stream-node/dist-types/fileStreamHasher.d.ts new file mode 100644 index 0000000..5d92c3e --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-types/fileStreamHasher.d.ts @@ -0,0 +1,6 @@ +import type { StreamHasher } from "@smithy/types"; +import type { Readable } from "stream"; +/** + * @internal + */ +export declare const fileStreamHasher: StreamHasher; diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-types/index.d.ts b/bff/node_modules/@smithy/hash-stream-node/dist-types/index.d.ts new file mode 100644 index 0000000..391fecd --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./fileStreamHasher"; +/** + * @internal + */ +export * from "./readableStreamHasher"; diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-types/readableStreamHasher.d.ts b/bff/node_modules/@smithy/hash-stream-node/dist-types/readableStreamHasher.d.ts new file mode 100644 index 0000000..9ac1e66 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-types/readableStreamHasher.d.ts @@ -0,0 +1,6 @@ +import type { StreamHasher } from "@smithy/types"; +import type { Readable } from "stream"; +/** + * @internal + */ +export declare const readableStreamHasher: StreamHasher; diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/HashCalculator.d.ts b/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/HashCalculator.d.ts new file mode 100644 index 0000000..2e6330e --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/HashCalculator.d.ts @@ -0,0 +1,11 @@ +import { Checksum, Hash } from "@smithy/types"; +import { WritableOptions } from "stream"; +import { Writable } from "stream"; +/** + * @internal + */ +export declare class HashCalculator extends Writable { + readonly hash: Checksum | Hash; + constructor(hash: Checksum | Hash, options?: WritableOptions); + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; +} diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/fileStreamHasher.d.ts b/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/fileStreamHasher.d.ts new file mode 100644 index 0000000..fa3b9ba --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/fileStreamHasher.d.ts @@ -0,0 +1,6 @@ +import { StreamHasher } from "@smithy/types"; +import { Readable } from "stream"; +/** + * @internal + */ +export declare const fileStreamHasher: StreamHasher; diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..9af0845 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./fileStreamHasher"; +/** + * @internal + */ +export * from "./readableStreamHasher"; diff --git a/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/readableStreamHasher.d.ts b/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/readableStreamHasher.d.ts new file mode 100644 index 0000000..728eb43 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/dist-types/ts3.4/readableStreamHasher.d.ts @@ -0,0 +1,6 @@ +import { StreamHasher } from "@smithy/types"; +import { Readable } from "stream"; +/** + * @internal + */ +export declare const readableStreamHasher: StreamHasher; diff --git a/bff/node_modules/@smithy/hash-stream-node/package.json b/bff/node_modules/@smithy/hash-stream-node/package.json new file mode 100644 index 0000000..535a5f3 --- /dev/null +++ b/bff/node_modules/@smithy/hash-stream-node/package.json @@ -0,0 +1,65 @@ +{ + "name": "@smithy/hash-stream-node", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline hash-stream-node", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@aws-crypto/sha256-js": "5.2.0", + "@smithy/util-hex-encoding": "^4.2.2", + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/hash-stream-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/hash-stream-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/invalid-dependency/LICENSE b/bff/node_modules/@smithy/invalid-dependency/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/invalid-dependency/README.md b/bff/node_modules/@smithy/invalid-dependency/README.md new file mode 100644 index 0000000..9110465 --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/README.md @@ -0,0 +1,10 @@ +# @smithy/invalid-dependency + +[![NPM version](https://img.shields.io/npm/v/@smithy/invalid-dependency/latest.svg)](https://www.npmjs.com/package/@smithy/invalid-dependency) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/invalid-dependency.svg)](https://www.npmjs.com/package/@smithy/invalid-dependency) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-cjs/index.js b/bff/node_modules/@smithy/invalid-dependency/dist-cjs/index.js new file mode 100644 index 0000000..4689b9a --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-cjs/index.js @@ -0,0 +1,10 @@ +'use strict'; + +const invalidFunction = (message) => () => { + throw new Error(message); +}; + +const invalidProvider = (message) => () => Promise.reject(message); + +exports.invalidFunction = invalidFunction; +exports.invalidProvider = invalidProvider; diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-es/index.js b/bff/node_modules/@smithy/invalid-dependency/dist-es/index.js new file mode 100644 index 0000000..fa0f1a6 --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./invalidFunction"; +export * from "./invalidProvider"; diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-es/invalidFunction.js b/bff/node_modules/@smithy/invalid-dependency/dist-es/invalidFunction.js new file mode 100644 index 0000000..676f9cb --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-es/invalidFunction.js @@ -0,0 +1,3 @@ +export const invalidFunction = (message) => () => { + throw new Error(message); +}; diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js b/bff/node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js new file mode 100644 index 0000000..5305a0b --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js @@ -0,0 +1 @@ +export const invalidProvider = (message) => () => Promise.reject(message); diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-types/index.d.ts b/bff/node_modules/@smithy/invalid-dependency/dist-types/index.d.ts new file mode 100644 index 0000000..1c99a56 --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./invalidFunction"; +/** + * @internal + */ +export * from "./invalidProvider"; diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-types/invalidFunction.d.ts b/bff/node_modules/@smithy/invalid-dependency/dist-types/invalidFunction.d.ts new file mode 100644 index 0000000..2118b32 --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-types/invalidFunction.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const invalidFunction: (message: string) => () => never; diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-types/invalidProvider.d.ts b/bff/node_modules/@smithy/invalid-dependency/dist-types/invalidProvider.d.ts new file mode 100644 index 0000000..64f1541 --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-types/invalidProvider.d.ts @@ -0,0 +1,5 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const invalidProvider: (message: string) => Provider; diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..6818f1c --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./invalidFunction"; +/** + * @internal + */ +export * from "./invalidProvider"; diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidFunction.d.ts b/bff/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidFunction.d.ts new file mode 100644 index 0000000..b0e8f32 --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidFunction.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const invalidFunction: (message: string) => () => never; diff --git a/bff/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidProvider.d.ts b/bff/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidProvider.d.ts new file mode 100644 index 0000000..765ee5a --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/dist-types/ts3.4/invalidProvider.d.ts @@ -0,0 +1,5 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const invalidProvider: (message: string) => Provider; diff --git a/bff/node_modules/@smithy/invalid-dependency/package.json b/bff/node_modules/@smithy/invalid-dependency/package.json new file mode 100644 index 0000000..4e059e8 --- /dev/null +++ b/bff/node_modules/@smithy/invalid-dependency/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/invalid-dependency", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline invalid-dependency", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/invalid-dependency", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/invalid-dependency" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/is-array-buffer/LICENSE b/bff/node_modules/@smithy/is-array-buffer/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/is-array-buffer/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/is-array-buffer/README.md b/bff/node_modules/@smithy/is-array-buffer/README.md new file mode 100644 index 0000000..31853f2 --- /dev/null +++ b/bff/node_modules/@smithy/is-array-buffer/README.md @@ -0,0 +1,10 @@ +# @smithy/is-array-buffer + +[![NPM version](https://img.shields.io/npm/v/@smithy/is-array-buffer/latest.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/is-array-buffer.svg)](https://www.npmjs.com/package/@smithy/is-array-buffer) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/is-array-buffer/dist-cjs/index.js b/bff/node_modules/@smithy/is-array-buffer/dist-cjs/index.js new file mode 100644 index 0000000..3238bb7 --- /dev/null +++ b/bff/node_modules/@smithy/is-array-buffer/dist-cjs/index.js @@ -0,0 +1,6 @@ +'use strict'; + +const isArrayBuffer = (arg) => (typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer) || + Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; + +exports.isArrayBuffer = isArrayBuffer; diff --git a/bff/node_modules/@smithy/is-array-buffer/dist-es/index.js b/bff/node_modules/@smithy/is-array-buffer/dist-es/index.js new file mode 100644 index 0000000..8096cca --- /dev/null +++ b/bff/node_modules/@smithy/is-array-buffer/dist-es/index.js @@ -0,0 +1,2 @@ +export const isArrayBuffer = (arg) => (typeof ArrayBuffer === "function" && arg instanceof ArrayBuffer) || + Object.prototype.toString.call(arg) === "[object ArrayBuffer]"; diff --git a/bff/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts b/bff/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts new file mode 100644 index 0000000..64f452e --- /dev/null +++ b/bff/node_modules/@smithy/is-array-buffer/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/bff/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ca8fd6b --- /dev/null +++ b/bff/node_modules/@smithy/is-array-buffer/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const isArrayBuffer: (arg: any) => arg is ArrayBuffer; diff --git a/bff/node_modules/@smithy/is-array-buffer/package.json b/bff/node_modules/@smithy/is-array-buffer/package.json new file mode 100644 index 0000000..a473b73 --- /dev/null +++ b/bff/node_modules/@smithy/is-array-buffer/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/is-array-buffer", + "version": "4.2.2", + "description": "Provides a function for detecting if an argument is an ArrayBuffer", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline is-array-buffer", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/is-array-buffer", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/is-array-buffer" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/md5-js/LICENSE b/bff/node_modules/@smithy/md5-js/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/md5-js/README.md b/bff/node_modules/@smithy/md5-js/README.md new file mode 100644 index 0000000..ffc786b --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/README.md @@ -0,0 +1,10 @@ +# @smithy/md5-js + +[![NPM version](https://img.shields.io/npm/v/@smithy/md5-js/latest.svg)](https://www.npmjs.com/package/@smithy/md5-js) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/md5-js.svg)](https://www.npmjs.com/package/@smithy/md5-js) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/md5-js/dist-cjs/index.js b/bff/node_modules/@smithy/md5-js/dist-cjs/index.js new file mode 100644 index 0000000..3e8d873 --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/dist-cjs/index.js @@ -0,0 +1,176 @@ +'use strict'; + +var utilUtf8 = require('@smithy/util-utf8'); + +const BLOCK_SIZE = 64; +const DIGEST_LENGTH = 16; +const INIT = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]; + +class Md5 { + state; + buffer; + bufferLength; + bytesHashed; + finished; + constructor() { + this.reset(); + } + update(sourceData) { + if (isEmptyData(sourceData)) { + return; + } + else if (this.finished) { + throw new Error("Attempted to update an already finished hash."); + } + const data = convertToBuffer(sourceData); + let position = 0; + let { byteLength } = data; + this.bytesHashed += byteLength; + while (byteLength > 0) { + this.buffer.setUint8(this.bufferLength++, data[position++]); + byteLength--; + if (this.bufferLength === BLOCK_SIZE) { + this.hashBuffer(); + this.bufferLength = 0; + } + } + } + async digest() { + if (!this.finished) { + const { buffer, bufferLength: undecoratedLength, bytesHashed } = this; + const bitsHashed = bytesHashed * 8; + buffer.setUint8(this.bufferLength++, 0b10000000); + if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) { + for (let i = this.bufferLength; i < BLOCK_SIZE; i++) { + buffer.setUint8(i, 0); + } + this.hashBuffer(); + this.bufferLength = 0; + } + for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) { + buffer.setUint8(i, 0); + } + buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true); + buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true); + this.hashBuffer(); + this.finished = true; + } + const out = new DataView(new ArrayBuffer(DIGEST_LENGTH)); + for (let i = 0; i < 4; i++) { + out.setUint32(i * 4, this.state[i], true); + } + return new Uint8Array(out.buffer, out.byteOffset, out.byteLength); + } + hashBuffer() { + const { buffer, state } = this; + let a = state[0], b = state[1], c = state[2], d = state[3]; + a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478); + d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756); + c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db); + b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee); + a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf); + d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a); + c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613); + b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501); + a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8); + d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af); + c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1); + b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be); + a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122); + d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193); + c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e); + b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821); + a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562); + d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340); + c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51); + b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa); + a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d); + d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453); + c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681); + b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8); + a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6); + d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6); + c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87); + b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed); + a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905); + d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8); + c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9); + b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a); + a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942); + d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681); + c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122); + b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c); + a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44); + d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9); + c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60); + b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70); + a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6); + d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa); + c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085); + b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05); + a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039); + d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5); + c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8); + b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665); + a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244); + d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97); + c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7); + b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039); + a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3); + d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92); + c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d); + b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1); + a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f); + d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0); + c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314); + b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1); + a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82); + d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235); + c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb); + b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391); + state[0] = (a + state[0]) & 0xffffffff; + state[1] = (b + state[1]) & 0xffffffff; + state[2] = (c + state[2]) & 0xffffffff; + state[3] = (d + state[3]) & 0xffffffff; + } + reset() { + this.state = Uint32Array.from(INIT); + this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE)); + this.bufferLength = 0; + this.bytesHashed = 0; + this.finished = false; + } +} +function cmn(q, a, b, x, s, t) { + a = (((a + q) & 0xffffffff) + ((x + t) & 0xffffffff)) & 0xffffffff; + return (((a << s) | (a >>> (32 - s))) + b) & 0xffffffff; +} +function ff(a, b, c, d, x, s, t) { + return cmn((b & c) | (~b & d), a, b, x, s, t); +} +function gg(a, b, c, d, x, s, t) { + return cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function hh(a, b, c, d, x, s, t) { + return cmn(b ^ c ^ d, a, b, x, s, t); +} +function ii(a, b, c, d, x, s, t) { + return cmn(c ^ (b | ~d), a, b, x, s, t); +} +function isEmptyData(data) { + if (typeof data === "string") { + return data.length === 0; + } + return data.byteLength === 0; +} +function convertToBuffer(data) { + if (typeof data === "string") { + return utilUtf8.fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +} + +exports.Md5 = Md5; diff --git a/bff/node_modules/@smithy/md5-js/dist-es/constants.js b/bff/node_modules/@smithy/md5-js/dist-es/constants.js new file mode 100644 index 0000000..263b8ed --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/dist-es/constants.js @@ -0,0 +1,3 @@ +export const BLOCK_SIZE = 64; +export const DIGEST_LENGTH = 16; +export const INIT = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]; diff --git a/bff/node_modules/@smithy/md5-js/dist-es/index.js b/bff/node_modules/@smithy/md5-js/dist-es/index.js new file mode 100644 index 0000000..f7451a7 --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/dist-es/index.js @@ -0,0 +1,168 @@ +import { fromUtf8 } from "@smithy/util-utf8"; +import { BLOCK_SIZE, DIGEST_LENGTH, INIT } from "./constants"; +export class Md5 { + state; + buffer; + bufferLength; + bytesHashed; + finished; + constructor() { + this.reset(); + } + update(sourceData) { + if (isEmptyData(sourceData)) { + return; + } + else if (this.finished) { + throw new Error("Attempted to update an already finished hash."); + } + const data = convertToBuffer(sourceData); + let position = 0; + let { byteLength } = data; + this.bytesHashed += byteLength; + while (byteLength > 0) { + this.buffer.setUint8(this.bufferLength++, data[position++]); + byteLength--; + if (this.bufferLength === BLOCK_SIZE) { + this.hashBuffer(); + this.bufferLength = 0; + } + } + } + async digest() { + if (!this.finished) { + const { buffer, bufferLength: undecoratedLength, bytesHashed } = this; + const bitsHashed = bytesHashed * 8; + buffer.setUint8(this.bufferLength++, 0b10000000); + if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) { + for (let i = this.bufferLength; i < BLOCK_SIZE; i++) { + buffer.setUint8(i, 0); + } + this.hashBuffer(); + this.bufferLength = 0; + } + for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) { + buffer.setUint8(i, 0); + } + buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true); + buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true); + this.hashBuffer(); + this.finished = true; + } + const out = new DataView(new ArrayBuffer(DIGEST_LENGTH)); + for (let i = 0; i < 4; i++) { + out.setUint32(i * 4, this.state[i], true); + } + return new Uint8Array(out.buffer, out.byteOffset, out.byteLength); + } + hashBuffer() { + const { buffer, state } = this; + let a = state[0], b = state[1], c = state[2], d = state[3]; + a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478); + d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756); + c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db); + b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee); + a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf); + d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a); + c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613); + b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501); + a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8); + d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af); + c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1); + b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be); + a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122); + d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193); + c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e); + b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821); + a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562); + d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340); + c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51); + b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa); + a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d); + d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453); + c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681); + b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8); + a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6); + d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6); + c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87); + b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed); + a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905); + d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8); + c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9); + b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a); + a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942); + d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681); + c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122); + b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c); + a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44); + d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9); + c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60); + b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70); + a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6); + d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa); + c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085); + b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05); + a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039); + d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5); + c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8); + b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665); + a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244); + d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97); + c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7); + b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039); + a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3); + d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92); + c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d); + b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1); + a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f); + d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0); + c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314); + b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1); + a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82); + d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235); + c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb); + b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391); + state[0] = (a + state[0]) & 0xffffffff; + state[1] = (b + state[1]) & 0xffffffff; + state[2] = (c + state[2]) & 0xffffffff; + state[3] = (d + state[3]) & 0xffffffff; + } + reset() { + this.state = Uint32Array.from(INIT); + this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE)); + this.bufferLength = 0; + this.bytesHashed = 0; + this.finished = false; + } +} +function cmn(q, a, b, x, s, t) { + a = (((a + q) & 0xffffffff) + ((x + t) & 0xffffffff)) & 0xffffffff; + return (((a << s) | (a >>> (32 - s))) + b) & 0xffffffff; +} +function ff(a, b, c, d, x, s, t) { + return cmn((b & c) | (~b & d), a, b, x, s, t); +} +function gg(a, b, c, d, x, s, t) { + return cmn((b & d) | (c & ~d), a, b, x, s, t); +} +function hh(a, b, c, d, x, s, t) { + return cmn(b ^ c ^ d, a, b, x, s, t); +} +function ii(a, b, c, d, x, s, t) { + return cmn(c ^ (b | ~d), a, b, x, s, t); +} +function isEmptyData(data) { + if (typeof data === "string") { + return data.length === 0; + } + return data.byteLength === 0; +} +function convertToBuffer(data) { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +} diff --git a/bff/node_modules/@smithy/md5-js/dist-types/constants.d.ts b/bff/node_modules/@smithy/md5-js/dist-types/constants.d.ts new file mode 100644 index 0000000..f1ae1d3 --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/dist-types/constants.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export declare const BLOCK_SIZE = 64; +/** + * @internal + */ +export declare const DIGEST_LENGTH = 16; +/** + * @internal + */ +export declare const INIT: number[]; diff --git a/bff/node_modules/@smithy/md5-js/dist-types/index.d.ts b/bff/node_modules/@smithy/md5-js/dist-types/index.d.ts new file mode 100644 index 0000000..0b075b6 --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/dist-types/index.d.ts @@ -0,0 +1,16 @@ +import type { Checksum, SourceData } from "@smithy/types"; +/** + * @internal + */ +export declare class Md5 implements Checksum { + private state; + private buffer; + private bufferLength; + private bytesHashed; + private finished; + constructor(); + update(sourceData: SourceData): void; + digest(): Promise; + private hashBuffer; + reset(): void; +} diff --git a/bff/node_modules/@smithy/md5-js/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@smithy/md5-js/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..2509454 --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + */ +export declare const BLOCK_SIZE = 64; +/** + * @internal + */ +export declare const DIGEST_LENGTH = 16; +/** + * @internal + */ +export declare const INIT: number[]; diff --git a/bff/node_modules/@smithy/md5-js/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/md5-js/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..042d3a9 --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/dist-types/ts3.4/index.d.ts @@ -0,0 +1,16 @@ +import { Checksum, SourceData } from "@smithy/types"; +/** + * @internal + */ +export declare class Md5 implements Checksum { + private state; + private buffer; + private bufferLength; + private bytesHashed; + private finished; + constructor(); + update(sourceData: SourceData): void; + digest(): Promise; + private hashBuffer; + reset(): void; +} diff --git a/bff/node_modules/@smithy/md5-js/package.json b/bff/node_modules/@smithy/md5-js/package.json new file mode 100644 index 0000000..32832a4 --- /dev/null +++ b/bff/node_modules/@smithy/md5-js/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/md5-js", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline md5-js", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "devDependencies": { + "@smithy/util-base64": "^4.3.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "hash-test-vectors": "^1.3.2", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/md5-js", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/md5-js" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/middleware-content-length/LICENSE b/bff/node_modules/@smithy/middleware-content-length/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/middleware-content-length/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/middleware-content-length/README.md b/bff/node_modules/@smithy/middleware-content-length/README.md new file mode 100644 index 0000000..2d40d92 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-content-length/README.md @@ -0,0 +1,4 @@ +# @smithy/middleware-content-length + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-content-length/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-content-length) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-content-length.svg)](https://www.npmjs.com/package/@smithy/middleware-content-length) diff --git a/bff/node_modules/@smithy/middleware-content-length/dist-cjs/index.js b/bff/node_modules/@smithy/middleware-content-length/dist-cjs/index.js new file mode 100644 index 0000000..e957f19 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-content-length/dist-cjs/index.js @@ -0,0 +1,46 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); + +const CONTENT_LENGTH_HEADER = "content-length"; +function contentLengthMiddleware(bodyLengthChecker) { + return (next) => async (args) => { + const request = args.request; + if (protocolHttp.HttpRequest.isInstance(request)) { + const { body, headers } = request; + if (body && + Object.keys(headers) + .map((str) => str.toLowerCase()) + .indexOf(CONTENT_LENGTH_HEADER) === -1) { + try { + const length = bodyLengthChecker(body); + request.headers = { + ...request.headers, + [CONTENT_LENGTH_HEADER]: String(length), + }; + } + catch (error) { + } + } + } + return next({ + ...args, + request, + }); + }; +} +const contentLengthMiddlewareOptions = { + step: "build", + tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], + name: "contentLengthMiddleware", + override: true, +}; +const getContentLengthPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions); + }, +}); + +exports.contentLengthMiddleware = contentLengthMiddleware; +exports.contentLengthMiddlewareOptions = contentLengthMiddlewareOptions; +exports.getContentLengthPlugin = getContentLengthPlugin; diff --git a/bff/node_modules/@smithy/middleware-content-length/dist-es/index.js b/bff/node_modules/@smithy/middleware-content-length/dist-es/index.js new file mode 100644 index 0000000..fa18e71 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-content-length/dist-es/index.js @@ -0,0 +1,39 @@ +import { HttpRequest } from "@smithy/protocol-http"; +const CONTENT_LENGTH_HEADER = "content-length"; +export function contentLengthMiddleware(bodyLengthChecker) { + return (next) => async (args) => { + const request = args.request; + if (HttpRequest.isInstance(request)) { + const { body, headers } = request; + if (body && + Object.keys(headers) + .map((str) => str.toLowerCase()) + .indexOf(CONTENT_LENGTH_HEADER) === -1) { + try { + const length = bodyLengthChecker(body); + request.headers = { + ...request.headers, + [CONTENT_LENGTH_HEADER]: String(length), + }; + } + catch (error) { + } + } + } + return next({ + ...args, + request, + }); + }; +} +export const contentLengthMiddlewareOptions = { + step: "build", + tags: ["SET_CONTENT_LENGTH", "CONTENT_LENGTH"], + name: "contentLengthMiddleware", + override: true, +}; +export const getContentLengthPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@smithy/middleware-content-length/dist-types/index.d.ts b/bff/node_modules/@smithy/middleware-content-length/dist-types/index.d.ts new file mode 100644 index 0000000..35d6588 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-content-length/dist-types/index.d.ts @@ -0,0 +1,6 @@ +import type { BodyLengthCalculator, BuildHandlerOptions, BuildMiddleware, Pluggable } from "@smithy/types"; +export declare function contentLengthMiddleware(bodyLengthChecker: BodyLengthCalculator): BuildMiddleware; +export declare const contentLengthMiddlewareOptions: BuildHandlerOptions; +export declare const getContentLengthPlugin: (options: { + bodyLengthChecker: BodyLengthCalculator; +}) => Pluggable; diff --git a/bff/node_modules/@smithy/middleware-content-length/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/middleware-content-length/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..10e1e18 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-content-length/dist-types/ts3.4/index.d.ts @@ -0,0 +1,6 @@ +import { BodyLengthCalculator, BuildHandlerOptions, BuildMiddleware, Pluggable } from "@smithy/types"; +export declare function contentLengthMiddleware(bodyLengthChecker: BodyLengthCalculator): BuildMiddleware; +export declare const contentLengthMiddlewareOptions: BuildHandlerOptions; +export declare const getContentLengthPlugin: (options: { + bodyLengthChecker: BodyLengthCalculator; +}) => Pluggable; diff --git a/bff/node_modules/@smithy/middleware-content-length/package.json b/bff/node_modules/@smithy/middleware-content-length/package.json new file mode 100644 index 0000000..04cd1ec --- /dev/null +++ b/bff/node_modules/@smithy/middleware-content-length/package.json @@ -0,0 +1,64 @@ +{ + "name": "@smithy/middleware-content-length", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-content-length", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "exit 0", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-content-length", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-content-length" + }, + "devDependencies": { + "@smithy/util-test": "^0.2.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/middleware-endpoint/LICENSE b/bff/node_modules/@smithy/middleware-endpoint/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/middleware-endpoint/README.md b/bff/node_modules/@smithy/middleware-endpoint/README.md new file mode 100644 index 0000000..4b201e3 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/README.md @@ -0,0 +1,17 @@ +# @smithy/middleware-endpoint + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-endpoint/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-endpoint) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-endpoint.svg)](https://www.npmjs.com/package/@smithy/middleware-endpoint) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.browser.js b/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.browser.js new file mode 100644 index 0000000..9b578a7 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.browser.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getEndpointFromConfig = void 0; +const getEndpointFromConfig = async (serviceId) => undefined; +exports.getEndpointFromConfig = getEndpointFromConfig; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js b/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js new file mode 100644 index 0000000..262b45b --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getEndpointFromConfig = void 0; +const node_config_provider_1 = require("@smithy/node-config-provider"); +const getEndpointUrlConfig_1 = require("./getEndpointUrlConfig"); +const getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId ?? ""))(); +exports.getEndpointFromConfig = getEndpointFromConfig; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js b/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js new file mode 100644 index 0000000..fe5c010 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js @@ -0,0 +1,35 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getEndpointUrlConfig = void 0; +const shared_ini_file_loader_1 = require("@smithy/shared-ini-file-loader"); +const ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; +const CONFIG_ENDPOINT_URL = "endpoint_url"; +const getEndpointUrlConfig = (serviceId) => ({ + environmentVariableSelector: (env) => { + const serviceSuffixParts = serviceId.split(" ").map((w) => w.toUpperCase()); + const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join("_")]; + if (serviceEndpointUrl) + return serviceEndpointUrl; + const endpointUrl = env[ENV_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + configFileSelector: (profile, config) => { + if (config && profile.services) { + const servicesSection = config[["services", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; + if (servicesSection) { + const servicePrefixParts = serviceId.split(" ").map((w) => w.toLowerCase()); + const endpointUrl = servicesSection[[servicePrefixParts.join("_"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)]; + if (endpointUrl) + return endpointUrl; + } + } + const endpointUrl = profile[CONFIG_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + default: undefined, +}); +exports.getEndpointUrlConfig = getEndpointUrlConfig; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js b/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js new file mode 100644 index 0000000..e7121aa --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js @@ -0,0 +1,264 @@ +'use strict'; + +var getEndpointFromConfig = require('./adaptors/getEndpointFromConfig'); +var urlParser = require('@smithy/url-parser'); +var core = require('@smithy/core'); +var utilMiddleware = require('@smithy/util-middleware'); +var middlewareSerde = require('@smithy/middleware-serde'); + +const resolveParamsForS3 = async (endpointParams) => { + const bucket = endpointParams?.Bucket || ""; + if (typeof endpointParams.Bucket === "string") { + endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent("#")).replace(/\?/g, encodeURIComponent("?")); + } + if (isArnBucketName(bucket)) { + if (endpointParams.ForcePathStyle === true) { + throw new Error("Path-style addressing cannot be used with ARN buckets"); + } + } + else if (!isDnsCompatibleBucketName(bucket) || + (bucket.indexOf(".") !== -1 && !String(endpointParams.Endpoint).startsWith("http:")) || + bucket.toLowerCase() !== bucket || + bucket.length < 3) { + endpointParams.ForcePathStyle = true; + } + if (endpointParams.DisableMultiRegionAccessPoints) { + endpointParams.disableMultiRegionAccessPoints = true; + endpointParams.DisableMRAP = true; + } + return endpointParams; +}; +const DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; +const IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; +const DOTS_PATTERN = /\.\./; +const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName); +const isArnBucketName = (bucketName) => { + const [arn, partition, service, , , bucket] = bucketName.split(":"); + const isArn = arn === "arn" && bucketName.split(":").length >= 6; + const isValidArn = Boolean(isArn && partition && service && bucket); + if (isArn && !isValidArn) { + throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`); + } + return isValidArn; +}; + +const createConfigValueProvider = (configKey, canonicalEndpointParamKey, config, isClientContextParam = false) => { + const configProvider = async () => { + let configValue; + if (isClientContextParam) { + const clientContextParams = config.clientContextParams; + const nestedValue = clientContextParams?.[configKey]; + configValue = nestedValue ?? config[configKey] ?? config[canonicalEndpointParamKey]; + } + else { + configValue = config[configKey] ?? config[canonicalEndpointParamKey]; + } + if (typeof configValue === "function") { + return configValue(); + } + return configValue; + }; + if (configKey === "credentialScope" || canonicalEndpointParamKey === "CredentialScope") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.credentialScope ?? credentials?.CredentialScope; + return configValue; + }; + } + if (configKey === "accountId" || canonicalEndpointParamKey === "AccountId") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.accountId ?? credentials?.AccountId; + return configValue; + }; + } + if (configKey === "endpoint" || canonicalEndpointParamKey === "endpoint") { + return async () => { + if (config.isCustomEndpoint === false) { + return undefined; + } + const endpoint = await configProvider(); + if (endpoint && typeof endpoint === "object") { + if ("url" in endpoint) { + return endpoint.url.href; + } + if ("hostname" in endpoint) { + const { protocol, hostname, port, path } = endpoint; + return `${protocol}//${hostname}${port ? ":" + port : ""}${path}`; + } + } + return endpoint; + }; + } + return configProvider; +}; + +const toEndpointV1 = (endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + const v1Endpoint = urlParser.parseUrl(endpoint.url); + if (endpoint.headers) { + v1Endpoint.headers = {}; + for (const [name, values] of Object.entries(endpoint.headers)) { + v1Endpoint.headers[name.toLowerCase()] = values.join(", "); + } + } + return v1Endpoint; + } + return endpoint; + } + return urlParser.parseUrl(endpoint); +}; + +const getEndpointFromInstructions = async (commandInput, instructionsSupplier, clientConfig, context) => { + if (!clientConfig.isCustomEndpoint) { + let endpointFromConfig; + if (clientConfig.serviceConfiguredEndpoint) { + endpointFromConfig = await clientConfig.serviceConfiguredEndpoint(); + } + else { + endpointFromConfig = await getEndpointFromConfig.getEndpointFromConfig(clientConfig.serviceId); + } + if (endpointFromConfig) { + clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig)); + clientConfig.isCustomEndpoint = true; + } + } + const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig); + if (typeof clientConfig.endpointProvider !== "function") { + throw new Error("config.endpointProvider is not set."); + } + const endpoint = clientConfig.endpointProvider(endpointParams, context); + if (clientConfig.isCustomEndpoint && clientConfig.endpoint) { + const customEndpoint = await clientConfig.endpoint(); + if (customEndpoint?.headers) { + endpoint.headers ??= {}; + for (const [name, value] of Object.entries(customEndpoint.headers)) { + endpoint.headers[name] = Array.isArray(value) ? value : [value]; + } + } + } + return endpoint; +}; +const resolveParams = async (commandInput, instructionsSupplier, clientConfig) => { + const endpointParams = {}; + const instructions = instructionsSupplier?.getEndpointParameterInstructions?.() || {}; + for (const [name, instruction] of Object.entries(instructions)) { + switch (instruction.type) { + case "staticContextParams": + endpointParams[name] = instruction.value; + break; + case "contextParams": + endpointParams[name] = commandInput[instruction.name]; + break; + case "clientContextParams": + case "builtInParams": + endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig, instruction.type !== "builtInParams")(); + break; + case "operationContextParams": + endpointParams[name] = instruction.get(commandInput); + break; + default: + throw new Error("Unrecognized endpoint parameter instruction: " + JSON.stringify(instruction)); + } + } + if (Object.keys(instructions).length === 0) { + Object.assign(endpointParams, clientConfig); + } + if (String(clientConfig.serviceId).toLowerCase() === "s3") { + await resolveParamsForS3(endpointParams); + } + return endpointParams; +}; + +const endpointMiddleware = ({ config, instructions, }) => { + return (next, context) => async (args) => { + if (config.isCustomEndpoint) { + core.setFeature(context, "ENDPOINT_OVERRIDE", "N"); + } + const endpoint = await getEndpointFromInstructions(args.input, { + getEndpointParameterInstructions() { + return instructions; + }, + }, { ...config }, context); + context.endpointV2 = endpoint; + context.authSchemes = endpoint.properties?.authSchemes; + const authScheme = context.authSchemes?.[0]; + if (authScheme) { + context["signing_region"] = authScheme.signingRegion; + context["signing_service"] = authScheme.signingName; + const smithyContext = utilMiddleware.getSmithyContext(context); + const httpAuthOption = smithyContext?.selectedHttpAuthScheme?.httpAuthOption; + if (httpAuthOption) { + httpAuthOption.signingProperties = Object.assign(httpAuthOption.signingProperties || {}, { + signing_region: authScheme.signingRegion, + signingRegion: authScheme.signingRegion, + signing_service: authScheme.signingName, + signingName: authScheme.signingName, + signingRegionSet: authScheme.signingRegionSet, + }, authScheme.properties); + } + } + return next({ + ...args, + }); + }; +}; + +const endpointMiddlewareOptions = { + step: "serialize", + tags: ["ENDPOINT_PARAMETERS", "ENDPOINT_V2", "ENDPOINT"], + name: "endpointV2Middleware", + override: true, + relation: "before", + toMiddleware: middlewareSerde.serializerMiddlewareOption.name, +}; +const getEndpointPlugin = (config, instructions) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(endpointMiddleware({ + config, + instructions, + }), endpointMiddlewareOptions); + }, +}); + +const resolveEndpointConfig = (input) => { + const tls = input.tls ?? true; + const { endpoint, useDualstackEndpoint, useFipsEndpoint } = input; + const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await utilMiddleware.normalizeProvider(endpoint)()) : undefined; + const isCustomEndpoint = !!endpoint; + const resolvedConfig = Object.assign(input, { + endpoint: customEndpointProvider, + tls, + isCustomEndpoint, + useDualstackEndpoint: utilMiddleware.normalizeProvider(useDualstackEndpoint ?? false), + useFipsEndpoint: utilMiddleware.normalizeProvider(useFipsEndpoint ?? false), + }); + let configuredEndpointPromise = undefined; + resolvedConfig.serviceConfiguredEndpoint = async () => { + if (input.serviceId && !configuredEndpointPromise) { + configuredEndpointPromise = getEndpointFromConfig.getEndpointFromConfig(input.serviceId); + } + return configuredEndpointPromise; + }; + return resolvedConfig; +}; + +const resolveEndpointRequiredConfig = (input) => { + const { endpoint } = input; + if (endpoint === undefined) { + input.endpoint = async () => { + throw new Error("@smithy/middleware-endpoint: (default endpointRuleSet) endpoint is not set - you must configure an endpoint."); + }; + } + return input; +}; + +exports.endpointMiddleware = endpointMiddleware; +exports.endpointMiddlewareOptions = endpointMiddlewareOptions; +exports.getEndpointFromInstructions = getEndpointFromInstructions; +exports.getEndpointPlugin = getEndpointPlugin; +exports.resolveEndpointConfig = resolveEndpointConfig; +exports.resolveEndpointRequiredConfig = resolveEndpointRequiredConfig; +exports.resolveParams = resolveParams; +exports.toEndpointV1 = toEndpointV1; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js new file mode 100644 index 0000000..cb939ae --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js @@ -0,0 +1,50 @@ +export const createConfigValueProvider = (configKey, canonicalEndpointParamKey, config, isClientContextParam = false) => { + const configProvider = async () => { + let configValue; + if (isClientContextParam) { + const clientContextParams = config.clientContextParams; + const nestedValue = clientContextParams?.[configKey]; + configValue = nestedValue ?? config[configKey] ?? config[canonicalEndpointParamKey]; + } + else { + configValue = config[configKey] ?? config[canonicalEndpointParamKey]; + } + if (typeof configValue === "function") { + return configValue(); + } + return configValue; + }; + if (configKey === "credentialScope" || canonicalEndpointParamKey === "CredentialScope") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.credentialScope ?? credentials?.CredentialScope; + return configValue; + }; + } + if (configKey === "accountId" || canonicalEndpointParamKey === "AccountId") { + return async () => { + const credentials = typeof config.credentials === "function" ? await config.credentials() : config.credentials; + const configValue = credentials?.accountId ?? credentials?.AccountId; + return configValue; + }; + } + if (configKey === "endpoint" || canonicalEndpointParamKey === "endpoint") { + return async () => { + if (config.isCustomEndpoint === false) { + return undefined; + } + const endpoint = await configProvider(); + if (endpoint && typeof endpoint === "object") { + if ("url" in endpoint) { + return endpoint.url.href; + } + if ("hostname" in endpoint) { + const { protocol, hostname, port, path } = endpoint; + return `${protocol}//${hostname}${port ? ":" + port : ""}${path}`; + } + } + return endpoint; + }; + } + return configProvider; +}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js new file mode 100644 index 0000000..75fc136 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js @@ -0,0 +1 @@ +export const getEndpointFromConfig = async (serviceId) => undefined; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.js new file mode 100644 index 0000000..33c1d45 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.js @@ -0,0 +1,3 @@ +import { loadConfig } from "@smithy/node-config-provider"; +import { getEndpointUrlConfig } from "./getEndpointUrlConfig"; +export const getEndpointFromConfig = async (serviceId) => loadConfig(getEndpointUrlConfig(serviceId ?? ""))(); diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js new file mode 100644 index 0000000..0be35f6 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js @@ -0,0 +1,64 @@ +import { resolveParamsForS3 } from "../service-customizations"; +import { createConfigValueProvider } from "./createConfigValueProvider"; +import { getEndpointFromConfig } from "./getEndpointFromConfig"; +import { toEndpointV1 } from "./toEndpointV1"; +export const getEndpointFromInstructions = async (commandInput, instructionsSupplier, clientConfig, context) => { + if (!clientConfig.isCustomEndpoint) { + let endpointFromConfig; + if (clientConfig.serviceConfiguredEndpoint) { + endpointFromConfig = await clientConfig.serviceConfiguredEndpoint(); + } + else { + endpointFromConfig = await getEndpointFromConfig(clientConfig.serviceId); + } + if (endpointFromConfig) { + clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig)); + clientConfig.isCustomEndpoint = true; + } + } + const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig); + if (typeof clientConfig.endpointProvider !== "function") { + throw new Error("config.endpointProvider is not set."); + } + const endpoint = clientConfig.endpointProvider(endpointParams, context); + if (clientConfig.isCustomEndpoint && clientConfig.endpoint) { + const customEndpoint = await clientConfig.endpoint(); + if (customEndpoint?.headers) { + endpoint.headers ??= {}; + for (const [name, value] of Object.entries(customEndpoint.headers)) { + endpoint.headers[name] = Array.isArray(value) ? value : [value]; + } + } + } + return endpoint; +}; +export const resolveParams = async (commandInput, instructionsSupplier, clientConfig) => { + const endpointParams = {}; + const instructions = instructionsSupplier?.getEndpointParameterInstructions?.() || {}; + for (const [name, instruction] of Object.entries(instructions)) { + switch (instruction.type) { + case "staticContextParams": + endpointParams[name] = instruction.value; + break; + case "contextParams": + endpointParams[name] = commandInput[instruction.name]; + break; + case "clientContextParams": + case "builtInParams": + endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig, instruction.type !== "builtInParams")(); + break; + case "operationContextParams": + endpointParams[name] = instruction.get(commandInput); + break; + default: + throw new Error("Unrecognized endpoint parameter instruction: " + JSON.stringify(instruction)); + } + } + if (Object.keys(instructions).length === 0) { + Object.assign(endpointParams, clientConfig); + } + if (String(clientConfig.serviceId).toLowerCase() === "s3") { + await resolveParamsForS3(endpointParams); + } + return endpointParams; +}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointUrlConfig.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointUrlConfig.js new file mode 100644 index 0000000..82a1519 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointUrlConfig.js @@ -0,0 +1,31 @@ +import { CONFIG_PREFIX_SEPARATOR } from "@smithy/shared-ini-file-loader"; +const ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; +const CONFIG_ENDPOINT_URL = "endpoint_url"; +export const getEndpointUrlConfig = (serviceId) => ({ + environmentVariableSelector: (env) => { + const serviceSuffixParts = serviceId.split(" ").map((w) => w.toUpperCase()); + const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join("_")]; + if (serviceEndpointUrl) + return serviceEndpointUrl; + const endpointUrl = env[ENV_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + configFileSelector: (profile, config) => { + if (config && profile.services) { + const servicesSection = config[["services", profile.services].join(CONFIG_PREFIX_SEPARATOR)]; + if (servicesSection) { + const servicePrefixParts = serviceId.split(" ").map((w) => w.toLowerCase()); + const endpointUrl = servicesSection[[servicePrefixParts.join("_"), CONFIG_ENDPOINT_URL].join(CONFIG_PREFIX_SEPARATOR)]; + if (endpointUrl) + return endpointUrl; + } + } + const endpointUrl = profile[CONFIG_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + default: undefined, +}); diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/index.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/index.js new file mode 100644 index 0000000..17752da --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/index.js @@ -0,0 +1,2 @@ +export * from "./getEndpointFromInstructions"; +export * from "./toEndpointV1"; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js new file mode 100644 index 0000000..701ce11 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js @@ -0,0 +1,17 @@ +import { parseUrl } from "@smithy/url-parser"; +export const toEndpointV1 = (endpoint) => { + if (typeof endpoint === "object") { + if ("url" in endpoint) { + const v1Endpoint = parseUrl(endpoint.url); + if (endpoint.headers) { + v1Endpoint.headers = {}; + for (const [name, values] of Object.entries(endpoint.headers)) { + v1Endpoint.headers[name.toLowerCase()] = values.join(", "); + } + } + return v1Endpoint; + } + return endpoint; + } + return parseUrl(endpoint); +}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js new file mode 100644 index 0000000..82c5719 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js @@ -0,0 +1,36 @@ +import { setFeature } from "@smithy/core"; +import { getSmithyContext } from "@smithy/util-middleware"; +import { getEndpointFromInstructions } from "./adaptors/getEndpointFromInstructions"; +export const endpointMiddleware = ({ config, instructions, }) => { + return (next, context) => async (args) => { + if (config.isCustomEndpoint) { + setFeature(context, "ENDPOINT_OVERRIDE", "N"); + } + const endpoint = await getEndpointFromInstructions(args.input, { + getEndpointParameterInstructions() { + return instructions; + }, + }, { ...config }, context); + context.endpointV2 = endpoint; + context.authSchemes = endpoint.properties?.authSchemes; + const authScheme = context.authSchemes?.[0]; + if (authScheme) { + context["signing_region"] = authScheme.signingRegion; + context["signing_service"] = authScheme.signingName; + const smithyContext = getSmithyContext(context); + const httpAuthOption = smithyContext?.selectedHttpAuthScheme?.httpAuthOption; + if (httpAuthOption) { + httpAuthOption.signingProperties = Object.assign(httpAuthOption.signingProperties || {}, { + signing_region: authScheme.signingRegion, + signingRegion: authScheme.signingRegion, + signing_service: authScheme.signingName, + signingName: authScheme.signingName, + signingRegionSet: authScheme.signingRegionSet, + }, authScheme.properties); + } + } + return next({ + ...args, + }); + }; +}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js new file mode 100644 index 0000000..e2335f4 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js @@ -0,0 +1,18 @@ +import { serializerMiddlewareOption } from "@smithy/middleware-serde"; +import { endpointMiddleware } from "./endpointMiddleware"; +export const endpointMiddlewareOptions = { + step: "serialize", + tags: ["ENDPOINT_PARAMETERS", "ENDPOINT_V2", "ENDPOINT"], + name: "endpointV2Middleware", + override: true, + relation: "before", + toMiddleware: serializerMiddlewareOption.name, +}; +export const getEndpointPlugin = (config, instructions) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(endpointMiddleware({ + config, + instructions, + }), endpointMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/index.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/index.js new file mode 100644 index 0000000..5c9f264 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./adaptors"; +export * from "./endpointMiddleware"; +export * from "./getEndpointPlugin"; +export * from "./resolveEndpointConfig"; +export * from "./resolveEndpointRequiredConfig"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js new file mode 100644 index 0000000..c3a0eea --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js @@ -0,0 +1,24 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +import { getEndpointFromConfig } from "./adaptors/getEndpointFromConfig"; +import { toEndpointV1 } from "./adaptors/toEndpointV1"; +export const resolveEndpointConfig = (input) => { + const tls = input.tls ?? true; + const { endpoint, useDualstackEndpoint, useFipsEndpoint } = input; + const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await normalizeProvider(endpoint)()) : undefined; + const isCustomEndpoint = !!endpoint; + const resolvedConfig = Object.assign(input, { + endpoint: customEndpointProvider, + tls, + isCustomEndpoint, + useDualstackEndpoint: normalizeProvider(useDualstackEndpoint ?? false), + useFipsEndpoint: normalizeProvider(useFipsEndpoint ?? false), + }); + let configuredEndpointPromise = undefined; + resolvedConfig.serviceConfiguredEndpoint = async () => { + if (input.serviceId && !configuredEndpointPromise) { + configuredEndpointPromise = getEndpointFromConfig(input.serviceId); + } + return configuredEndpointPromise; + }; + return resolvedConfig; +}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointRequiredConfig.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointRequiredConfig.js new file mode 100644 index 0000000..88bd263 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointRequiredConfig.js @@ -0,0 +1,9 @@ +export const resolveEndpointRequiredConfig = (input) => { + const { endpoint } = input; + if (endpoint === undefined) { + input.endpoint = async () => { + throw new Error("@smithy/middleware-endpoint: (default endpointRuleSet) endpoint is not set - you must configure an endpoint."); + }; + } + return input; +}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/index.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/index.js new file mode 100644 index 0000000..e50e107 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/index.js @@ -0,0 +1 @@ +export * from "./s3"; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js new file mode 100644 index 0000000..e993fc7 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js @@ -0,0 +1,37 @@ +export const resolveParamsForS3 = async (endpointParams) => { + const bucket = endpointParams?.Bucket || ""; + if (typeof endpointParams.Bucket === "string") { + endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent("#")).replace(/\?/g, encodeURIComponent("?")); + } + if (isArnBucketName(bucket)) { + if (endpointParams.ForcePathStyle === true) { + throw new Error("Path-style addressing cannot be used with ARN buckets"); + } + } + else if (!isDnsCompatibleBucketName(bucket) || + (bucket.indexOf(".") !== -1 && !String(endpointParams.Endpoint).startsWith("http:")) || + bucket.toLowerCase() !== bucket || + bucket.length < 3) { + endpointParams.ForcePathStyle = true; + } + if (endpointParams.DisableMultiRegionAccessPoints) { + endpointParams.disableMultiRegionAccessPoints = true; + endpointParams.DisableMRAP = true; + } + return endpointParams; +}; +const DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/; +const IP_ADDRESS_PATTERN = /(\d+\.){3}\d+/; +const DOTS_PATTERN = /\.\./; +export const DOT_PATTERN = /\./; +export const S3_HOSTNAME_PATTERN = /^(.+\.)?s3(-fips)?(\.dualstack)?[.-]([a-z0-9-]+)\./; +export const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName); +export const isArnBucketName = (bucketName) => { + const [arn, partition, service, , , bucket] = bucketName.split(":"); + const isArn = arn === "arn" && bucketName.split(":").length >= 6; + const isValidArn = Boolean(isArn && partition && service && bucket); + if (isArn && !isValidArn) { + throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`); + } + return isValidArn; +}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-es/types.js b/bff/node_modules/@smithy/middleware-endpoint/dist-es/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/createConfigValueProvider.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/createConfigValueProvider.d.ts new file mode 100644 index 0000000..e99e044 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/createConfigValueProvider.d.ts @@ -0,0 +1,14 @@ +/** + * Normalize some key of the client config to an async provider. + * @internal + * + * @param configKey - the key to look up in config. + * @param canonicalEndpointParamKey - this is the name the EndpointRuleSet uses. + * it will most likely not contain the config + * value, but we use it as a fallback. + * @param config - container of the config values. + * @param isClientContextParam - whether this is a client context parameter. + * + * @returns async function that will resolve with the value. + */ +export declare const createConfigValueProvider: >(configKey: string, canonicalEndpointParamKey: string, config: Config, isClientContextParam?: boolean) => () => Promise; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.browser.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.browser.d.ts new file mode 100644 index 0000000..de05fa5 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.browser.d.ts @@ -0,0 +1 @@ +export declare const getEndpointFromConfig: (serviceId: string) => Promise; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.d.ts new file mode 100644 index 0000000..42a3566 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromConfig.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getEndpointFromConfig: (serviceId?: string) => Promise; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromInstructions.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromInstructions.d.ts new file mode 100644 index 0000000..13b5ad5 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointFromInstructions.d.ts @@ -0,0 +1,28 @@ +import type { EndpointParameters, EndpointV2, HandlerExecutionContext } from "@smithy/types"; +import type { EndpointResolvedConfig } from "../resolveEndpointConfig"; +import type { EndpointParameterInstructions } from "../types"; +/** + * @internal + */ +export type EndpointParameterInstructionsSupplier = Partial<{ + getEndpointParameterInstructions(): EndpointParameterInstructions; +}>; +/** + * This step in the endpoint resolution process is exposed as a function + * to allow packages such as signers, lib-upload, etc. to get + * the V2 Endpoint associated to an instance of some api operation command + * without needing to send it or resolve its middleware stack. + * + * @internal + * @param commandInput - the input of the Command in question. + * @param instructionsSupplier - this is typically a Command constructor. A static function supplying the + * endpoint parameter instructions will exist for commands in services + * having an endpoints ruleset trait. + * @param clientConfig - config of the service client. + * @param context - optional context. + */ +export declare const getEndpointFromInstructions: , Config extends Record>(commandInput: CommandInput, instructionsSupplier: EndpointParameterInstructionsSupplier, clientConfig: Partial> & Config, context?: HandlerExecutionContext) => Promise; +/** + * @internal + */ +export declare const resolveParams: , Config extends Record>(commandInput: CommandInput, instructionsSupplier: EndpointParameterInstructionsSupplier, clientConfig: Partial> & Config) => Promise; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointUrlConfig.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointUrlConfig.d.ts new file mode 100644 index 0000000..6b0f5d1 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/getEndpointUrlConfig.d.ts @@ -0,0 +1,2 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const getEndpointUrlConfig: (serviceId: string) => LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts new file mode 100644 index 0000000..cc13488 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./getEndpointFromInstructions"; +/** + * @internal + */ +export * from "./toEndpointV1"; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toEndpointV1.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toEndpointV1.d.ts new file mode 100644 index 0000000..5130a31 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/adaptors/toEndpointV1.d.ts @@ -0,0 +1,6 @@ +import type { Endpoint, EndpointV2 } from "@smithy/types"; +/** + * @deprecated Use `toEndpointV1` from `@smithy/core/endpoints` instead. + * @internal + */ +export declare const toEndpointV1: (endpoint: string | Endpoint | EndpointV2) => Endpoint; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/endpointMiddleware.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/endpointMiddleware.d.ts new file mode 100644 index 0000000..b6b7a9d --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/endpointMiddleware.d.ts @@ -0,0 +1,10 @@ +import type { EndpointParameters, SerializeMiddleware } from "@smithy/types"; +import type { EndpointResolvedConfig } from "./resolveEndpointConfig"; +import type { EndpointParameterInstructions } from "./types"; +/** + * @internal + */ +export declare const endpointMiddleware: ({ config, instructions, }: { + config: EndpointResolvedConfig; + instructions: EndpointParameterInstructions; +}) => SerializeMiddleware; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/getEndpointPlugin.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/getEndpointPlugin.d.ts new file mode 100644 index 0000000..159498f --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/getEndpointPlugin.d.ts @@ -0,0 +1,11 @@ +import type { EndpointParameters, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import type { EndpointResolvedConfig } from "./resolveEndpointConfig"; +import type { EndpointParameterInstructions } from "./types"; +/** + * @internal + */ +export declare const endpointMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getEndpointPlugin: (config: EndpointResolvedConfig, instructions: EndpointParameterInstructions) => Pluggable; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts new file mode 100644 index 0000000..3cff751 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/index.d.ts @@ -0,0 +1,18 @@ +/** + * @internal + */ +export * from "./adaptors"; +/** + * @internal + */ +export * from "./endpointMiddleware"; +/** + * @internal + */ +export * from "./getEndpointPlugin"; +export * from "./resolveEndpointConfig"; +export * from "./resolveEndpointRequiredConfig"; +/** + * @internal + */ +export * from "./types"; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts new file mode 100644 index 0000000..9d5b0a9 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointConfig.d.ts @@ -0,0 +1,109 @@ +import type { Endpoint, EndpointParameters, EndpointV2, Logger, Provider, UrlParser } from "@smithy/types"; +/** + * @public + * + * Endpoint config interfaces and resolver for Endpoint v2. They live in separate package to allow per-service onboarding. + * When all services onboard Endpoint v2, the resolver in config-resolver package can be removed. + * This interface includes all the endpoint parameters with built-in bindings of "AWS::*" and "SDK::*" + */ +export interface EndpointInputConfig { + /** + * The fully qualified endpoint of the webservice. This is only for using + * a custom endpoint (for example, when using a local version of S3). + * + * Endpoint transformations such as S3 applying a bucket to the hostname are + * still applicable to this custom endpoint. + */ + endpoint?: string | Endpoint | Provider | EndpointV2 | Provider; + /** + * Providing a custom endpointProvider will override + * built-in transformations of the endpoint such as S3 adding the bucket + * name to the hostname, since they are part of the default endpointProvider. + */ + endpointProvider?: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + /** + * Whether TLS is enabled for requests. + * @deprecated + */ + tls?: boolean; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | Provider; + /** + * @internal + * This field is used internally so you should not fill any value to this field. + */ + serviceConfiguredEndpoint?: never; +} +/** + * @internal + */ +interface PreviouslyResolved { + urlParser: UrlParser; + endpointProvider: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + logger?: Logger; + serviceId?: string; +} +/** + * @internal + * + * This supersedes the similarly named EndpointsResolvedConfig (no parametric types) + * from resolveEndpointsConfig.ts in \@smithy/config-resolver. + */ +export interface EndpointResolvedConfig { + /** + * Custom endpoint provided by the user. + * This is normalized to a single interface from the various acceptable types. + * This field will be undefined if a custom endpoint is not provided. + */ + endpoint?: Provider; + endpointProvider: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + /** + * Whether TLS is enabled for requests. + * @deprecated + */ + tls: boolean; + /** + * Whether the endpoint is specified by caller. + * This should be used over checking the existence of `endpoint`, since + * that may have been set by other means, such as the default regional + * endpoint provider function. + * + * @internal + */ + isCustomEndpoint?: boolean; + /** + * Resolved value for input {@link EndpointsInputConfig.useDualstackEndpoint} + */ + useDualstackEndpoint: Provider; + /** + * Resolved value for input {@link EndpointsInputConfig.useFipsEndpoint} + */ + useFipsEndpoint: Provider; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * A configured endpoint global or specific to the service from ENV or AWS SDK configuration files. + * @internal + */ + serviceConfiguredEndpoint?: Provider; +} +/** + * @internal + */ +export declare const resolveEndpointConfig: (input: T & EndpointInputConfig

& PreviouslyResolved

) => T & EndpointResolvedConfig

; +export {}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointRequiredConfig.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointRequiredConfig.d.ts new file mode 100644 index 0000000..6174a86 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/resolveEndpointRequiredConfig.d.ts @@ -0,0 +1,32 @@ +import type { Endpoint, EndpointV2, Provider } from "@smithy/types"; +/** + * This is an additional config resolver layer for clients using the default + * endpoints ruleset. It modifies the input and output config types to make + * the endpoint configuration property required. + * + * It must be placed after the `resolveEndpointConfig` + * resolver. This replaces the "CustomEndpoints" config resolver, which was used + * prior to default endpoint rulesets. + * + * @public + */ +export interface EndpointRequiredInputConfig { + endpoint: string | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @internal + */ +interface PreviouslyResolved { + endpoint?: Provider; +} +/** + * @internal + */ +export interface EndpointRequiredResolvedConfig { + endpoint: Provider; +} +/** + * @internal + */ +export declare const resolveEndpointRequiredConfig: (input: T & EndpointRequiredInputConfig & PreviouslyResolved) => T & EndpointRequiredResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/index.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/index.d.ts new file mode 100644 index 0000000..716a15d --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./s3"; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/s3.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/s3.d.ts new file mode 100644 index 0000000..ca09eb4 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/service-customizations/s3.d.ts @@ -0,0 +1,26 @@ +import type { EndpointParameters } from "@smithy/types"; +/** + * @internal + */ +export declare const resolveParamsForS3: (endpointParams: EndpointParameters) => Promise; +/** + * @internal + */ +export declare const DOT_PATTERN: RegExp; +/** + * @internal + */ +export declare const S3_HOSTNAME_PATTERN: RegExp; +/** + * Determines whether a given string is DNS compliant per the rules outlined by + * S3. Length, capitaization, and leading dot restrictions are enforced by the + * DOMAIN_PATTERN regular expression. + * @internal + * + * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html + */ +export declare const isDnsCompatibleBucketName: (bucketName: string) => boolean; +/** + * @internal + */ +export declare const isArnBucketName: (bucketName: string) => boolean; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/createConfigValueProvider.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/createConfigValueProvider.d.ts new file mode 100644 index 0000000..7517276 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/createConfigValueProvider.d.ts @@ -0,0 +1,14 @@ +/** + * Normalize some key of the client config to an async provider. + * @internal + * + * @param configKey - the key to look up in config. + * @param canonicalEndpointParamKey - this is the name the EndpointRuleSet uses. + * it will most likely not contain the config + * value, but we use it as a fallback. + * @param config - container of the config values. + * @param isClientContextParam - whether this is a client context parameter. + * + * @returns async function that will resolve with the value. + */ +export declare const createConfigValueProvider: >(configKey: string, canonicalEndpointParamKey: string, config: Config, isClientContextParam?: boolean) => () => Promise; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.browser.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.browser.d.ts new file mode 100644 index 0000000..1a4f6ba --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.browser.d.ts @@ -0,0 +1 @@ +export declare const getEndpointFromConfig: (serviceId: string) => Promise; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.d.ts new file mode 100644 index 0000000..641570c --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromConfig.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const getEndpointFromConfig: (serviceId?: string) => Promise; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromInstructions.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromInstructions.d.ts new file mode 100644 index 0000000..82dc8df --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointFromInstructions.d.ts @@ -0,0 +1,28 @@ +import { EndpointParameters, EndpointV2, HandlerExecutionContext } from "@smithy/types"; +import { EndpointResolvedConfig } from "../resolveEndpointConfig"; +import { EndpointParameterInstructions } from "../types"; +/** + * @internal + */ +export type EndpointParameterInstructionsSupplier = Partial<{ + getEndpointParameterInstructions(): EndpointParameterInstructions; +}>; +/** + * This step in the endpoint resolution process is exposed as a function + * to allow packages such as signers, lib-upload, etc. to get + * the V2 Endpoint associated to an instance of some api operation command + * without needing to send it or resolve its middleware stack. + * + * @internal + * @param commandInput - the input of the Command in question. + * @param instructionsSupplier - this is typically a Command constructor. A static function supplying the + * endpoint parameter instructions will exist for commands in services + * having an endpoints ruleset trait. + * @param clientConfig - config of the service client. + * @param context - optional context. + */ +export declare const getEndpointFromInstructions: , Config extends Record>(commandInput: CommandInput, instructionsSupplier: EndpointParameterInstructionsSupplier, clientConfig: Partial> & Config, context?: HandlerExecutionContext) => Promise; +/** + * @internal + */ +export declare const resolveParams: , Config extends Record>(commandInput: CommandInput, instructionsSupplier: EndpointParameterInstructionsSupplier, clientConfig: Partial> & Config) => Promise; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointUrlConfig.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointUrlConfig.d.ts new file mode 100644 index 0000000..7b9d068 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/getEndpointUrlConfig.d.ts @@ -0,0 +1,2 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const getEndpointUrlConfig: (serviceId: string) => LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/index.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/index.d.ts new file mode 100644 index 0000000..ced0520 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./getEndpointFromInstructions"; +/** + * @internal + */ +export * from "./toEndpointV1"; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/toEndpointV1.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/toEndpointV1.d.ts new file mode 100644 index 0000000..620784b --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/adaptors/toEndpointV1.d.ts @@ -0,0 +1,6 @@ +import { Endpoint, EndpointV2 } from "@smithy/types"; +/** + * @deprecated Use `toEndpointV1` from `@smithy/core/endpoints` instead. + * @internal + */ +export declare const toEndpointV1: (endpoint: string | Endpoint | EndpointV2) => Endpoint; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/endpointMiddleware.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/endpointMiddleware.d.ts new file mode 100644 index 0000000..3f7e40a --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/endpointMiddleware.d.ts @@ -0,0 +1,10 @@ +import { EndpointParameters, SerializeMiddleware } from "@smithy/types"; +import { EndpointResolvedConfig } from "./resolveEndpointConfig"; +import { EndpointParameterInstructions } from "./types"; +/** + * @internal + */ +export declare const endpointMiddleware: ({ config, instructions, }: { + config: EndpointResolvedConfig; + instructions: EndpointParameterInstructions; +}) => SerializeMiddleware; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/getEndpointPlugin.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/getEndpointPlugin.d.ts new file mode 100644 index 0000000..39f93a9 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/getEndpointPlugin.d.ts @@ -0,0 +1,11 @@ +import { EndpointParameters, Pluggable, RelativeMiddlewareOptions, SerializeHandlerOptions } from "@smithy/types"; +import { EndpointResolvedConfig } from "./resolveEndpointConfig"; +import { EndpointParameterInstructions } from "./types"; +/** + * @internal + */ +export declare const endpointMiddlewareOptions: SerializeHandlerOptions & RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getEndpointPlugin: (config: EndpointResolvedConfig, instructions: EndpointParameterInstructions) => Pluggable; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..b809e2c --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/index.d.ts @@ -0,0 +1,18 @@ +/** + * @internal + */ +export * from "./adaptors"; +/** + * @internal + */ +export * from "./endpointMiddleware"; +/** + * @internal + */ +export * from "./getEndpointPlugin"; +export * from "./resolveEndpointConfig"; +export * from "./resolveEndpointRequiredConfig"; +/** + * @internal + */ +export * from "./types"; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts new file mode 100644 index 0000000..a81f440 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointConfig.d.ts @@ -0,0 +1,109 @@ +import { Endpoint, EndpointParameters, EndpointV2, Logger, Provider, UrlParser } from "@smithy/types"; +/** + * @public + * + * Endpoint config interfaces and resolver for Endpoint v2. They live in separate package to allow per-service onboarding. + * When all services onboard Endpoint v2, the resolver in config-resolver package can be removed. + * This interface includes all the endpoint parameters with built-in bindings of "AWS::*" and "SDK::*" + */ +export interface EndpointInputConfig { + /** + * The fully qualified endpoint of the webservice. This is only for using + * a custom endpoint (for example, when using a local version of S3). + * + * Endpoint transformations such as S3 applying a bucket to the hostname are + * still applicable to this custom endpoint. + */ + endpoint?: string | Endpoint | Provider | EndpointV2 | Provider; + /** + * Providing a custom endpointProvider will override + * built-in transformations of the endpoint such as S3 adding the bucket + * name to the hostname, since they are part of the default endpointProvider. + */ + endpointProvider?: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + /** + * Whether TLS is enabled for requests. + * @deprecated + */ + tls?: boolean; + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | Provider; + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | Provider; + /** + * @internal + * This field is used internally so you should not fill any value to this field. + */ + serviceConfiguredEndpoint?: never; +} +/** + * @internal + */ +interface PreviouslyResolved { + urlParser: UrlParser; + endpointProvider: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + logger?: Logger; + serviceId?: string; +} +/** + * @internal + * + * This supersedes the similarly named EndpointsResolvedConfig (no parametric types) + * from resolveEndpointsConfig.ts in \@smithy/config-resolver. + */ +export interface EndpointResolvedConfig { + /** + * Custom endpoint provided by the user. + * This is normalized to a single interface from the various acceptable types. + * This field will be undefined if a custom endpoint is not provided. + */ + endpoint?: Provider; + endpointProvider: (params: T, context?: { + logger?: Logger; + }) => EndpointV2; + /** + * Whether TLS is enabled for requests. + * @deprecated + */ + tls: boolean; + /** + * Whether the endpoint is specified by caller. + * This should be used over checking the existence of `endpoint`, since + * that may have been set by other means, such as the default regional + * endpoint provider function. + * + * @internal + */ + isCustomEndpoint?: boolean; + /** + * Resolved value for input {@link EndpointsInputConfig.useDualstackEndpoint} + */ + useDualstackEndpoint: Provider; + /** + * Resolved value for input {@link EndpointsInputConfig.useFipsEndpoint} + */ + useFipsEndpoint: Provider; + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + /** + * A configured endpoint global or specific to the service from ENV or AWS SDK configuration files. + * @internal + */ + serviceConfiguredEndpoint?: Provider; +} +/** + * @internal + */ +export declare const resolveEndpointConfig: (input: T & EndpointInputConfig

& PreviouslyResolved

) => T & EndpointResolvedConfig

; +export {}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointRequiredConfig.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointRequiredConfig.d.ts new file mode 100644 index 0000000..037722b --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/resolveEndpointRequiredConfig.d.ts @@ -0,0 +1,32 @@ +import { Endpoint, EndpointV2, Provider } from "@smithy/types"; +/** + * This is an additional config resolver layer for clients using the default + * endpoints ruleset. It modifies the input and output config types to make + * the endpoint configuration property required. + * + * It must be placed after the `resolveEndpointConfig` + * resolver. This replaces the "CustomEndpoints" config resolver, which was used + * prior to default endpoint rulesets. + * + * @public + */ +export interface EndpointRequiredInputConfig { + endpoint: string | Endpoint | Provider | EndpointV2 | Provider; +} +/** + * @internal + */ +interface PreviouslyResolved { + endpoint?: Provider; +} +/** + * @internal + */ +export interface EndpointRequiredResolvedConfig { + endpoint: Provider; +} +/** + * @internal + */ +export declare const resolveEndpointRequiredConfig: (input: T & EndpointRequiredInputConfig & PreviouslyResolved) => T & EndpointRequiredResolvedConfig; +export {}; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/index.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/index.d.ts new file mode 100644 index 0000000..6529752 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./s3"; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/s3.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/s3.d.ts new file mode 100644 index 0000000..cace227 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/service-customizations/s3.d.ts @@ -0,0 +1,26 @@ +import { EndpointParameters } from "@smithy/types"; +/** + * @internal + */ +export declare const resolveParamsForS3: (endpointParams: EndpointParameters) => Promise; +/** + * @internal + */ +export declare const DOT_PATTERN: RegExp; +/** + * @internal + */ +export declare const S3_HOSTNAME_PATTERN: RegExp; +/** + * Determines whether a given string is DNS compliant per the rules outlined by + * S3. Length, capitaization, and leading dot restrictions are enforced by the + * DOMAIN_PATTERN regular expression. + * @internal + * + * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html + */ +export declare const isDnsCompatibleBucketName: (bucketName: string) => boolean; +/** + * @internal + */ +export declare const isArnBucketName: (bucketName: string) => boolean; diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/types.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..a6084c8 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/ts3.4/types.d.ts @@ -0,0 +1,41 @@ +/** + * @internal + */ +export interface EndpointParameterInstructions { + [name: string]: BuiltInParamInstruction | ClientContextParamInstruction | StaticContextParamInstruction | ContextParamInstruction | OperationContextParamInstruction; +} +/** + * @internal + */ +export interface BuiltInParamInstruction { + type: "builtInParams"; + name: string; +} +/** + * @internal + */ +export interface ClientContextParamInstruction { + type: "clientContextParams"; + name: string; +} +/** + * @internal + */ +export interface StaticContextParamInstruction { + type: "staticContextParams"; + value: string | boolean; +} +/** + * @internal + */ +export interface ContextParamInstruction { + type: "contextParams"; + name: string; +} +/** + * @internal + */ +export interface OperationContextParamInstruction { + type: "operationContextParams"; + get(input: any): any; +} diff --git a/bff/node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts b/bff/node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts new file mode 100644 index 0000000..0d1d9e9 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/dist-types/types.d.ts @@ -0,0 +1,41 @@ +/** + * @internal + */ +export interface EndpointParameterInstructions { + [name: string]: BuiltInParamInstruction | ClientContextParamInstruction | StaticContextParamInstruction | ContextParamInstruction | OperationContextParamInstruction; +} +/** + * @internal + */ +export interface BuiltInParamInstruction { + type: "builtInParams"; + name: string; +} +/** + * @internal + */ +export interface ClientContextParamInstruction { + type: "clientContextParams"; + name: string; +} +/** + * @internal + */ +export interface StaticContextParamInstruction { + type: "staticContextParams"; + value: string | boolean; +} +/** + * @internal + */ +export interface ContextParamInstruction { + type: "contextParams"; + name: string; +} +/** + * @internal + */ +export interface OperationContextParamInstruction { + type: "operationContextParams"; + get(input: any): any; +} diff --git a/bff/node_modules/@smithy/middleware-endpoint/package.json b/bff/node_modules/@smithy/middleware-endpoint/package.json new file mode 100644 index 0000000..7216454 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-endpoint/package.json @@ -0,0 +1,75 @@ +{ + "name": "@smithy/middleware-endpoint", + "version": "4.4.28", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-endpoint", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "extract:docs": "api-extractor run --local", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/core": "^3.23.13", + "@smithy/middleware-serde": "^4.2.16", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/adaptors/getEndpointFromConfig": "./dist-es/adaptors/getEndpointFromConfig.browser" + }, + "react-native": { + "./dist-es/adaptors/getEndpointFromConfig": "./dist-es/adaptors/getEndpointFromConfig.browser", + "./dist-cjs/adaptors/getEndpointFromConfig": "./dist-cjs/adaptors/getEndpointFromConfig.browser" + }, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-endpoint", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-endpoint" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/middleware-retry/LICENSE b/bff/node_modules/@smithy/middleware-retry/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/middleware-retry/README.md b/bff/node_modules/@smithy/middleware-retry/README.md new file mode 100644 index 0000000..1f07ccd --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/README.md @@ -0,0 +1,24 @@ +# @smithy/middleware-retry + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-retry/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-retry) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-retry.svg)](https://www.npmjs.com/package/@smithy/middleware-retry) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- + +## Usage + +See [@smithy/util-retry](https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-retry) +for retry behavior and configuration. + +See also: [AWS Documentation: Retry behavior](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html). diff --git a/bff/node_modules/@smithy/middleware-retry/dist-cjs/index.js b/bff/node_modules/@smithy/middleware-retry/dist-cjs/index.js new file mode 100644 index 0000000..a54d6e6 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-cjs/index.js @@ -0,0 +1,355 @@ +'use strict'; + +var utilRetry = require('@smithy/util-retry'); +var protocolHttp = require('@smithy/protocol-http'); +var serviceErrorClassification = require('@smithy/service-error-classification'); +var uuid = require('@smithy/uuid'); +var utilMiddleware = require('@smithy/util-middleware'); +var smithyClient = require('@smithy/smithy-client'); +var isStreamingPayload = require('./isStreamingPayload/isStreamingPayload'); + +const getDefaultRetryQuota = (initialRetryTokens, options) => { + const MAX_CAPACITY = initialRetryTokens; + const noRetryIncrement = utilRetry.NO_RETRY_INCREMENT; + const retryCost = utilRetry.RETRY_COST; + const timeoutRetryCost = utilRetry.TIMEOUT_RETRY_COST; + let availableCapacity = initialRetryTokens; + const getCapacityAmount = (error) => (error.name === "TimeoutError" ? timeoutRetryCost : retryCost); + const hasRetryTokens = (error) => getCapacityAmount(error) <= availableCapacity; + const retrieveRetryTokens = (error) => { + if (!hasRetryTokens(error)) { + throw new Error("No retry token available"); + } + const capacityAmount = getCapacityAmount(error); + availableCapacity -= capacityAmount; + return capacityAmount; + }; + const releaseRetryTokens = (capacityReleaseAmount) => { + availableCapacity += capacityReleaseAmount ?? noRetryIncrement; + availableCapacity = Math.min(availableCapacity, MAX_CAPACITY); + }; + return Object.freeze({ + hasRetryTokens, + retrieveRetryTokens, + releaseRetryTokens, + }); +}; + +const defaultDelayDecider = (delayBase, attempts) => Math.floor(Math.min(utilRetry.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); + +const defaultRetryDecider = (error) => { + if (!error) { + return false; + } + return serviceErrorClassification.isRetryableByTrait(error) || serviceErrorClassification.isClockSkewError(error) || serviceErrorClassification.isThrottlingError(error) || serviceErrorClassification.isTransientError(error); +}; + +const asSdkError = (error) => { + if (error instanceof Error) + return error; + if (error instanceof Object) + return Object.assign(new Error(), error); + if (typeof error === "string") + return new Error(error); + return new Error(`AWS SDK error wrapper for ${error}`); +}; + +class StandardRetryStrategy { + maxAttemptsProvider; + retryDecider; + delayDecider; + retryQuota; + mode = utilRetry.RETRY_MODES.STANDARD; + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + this.retryDecider = options?.retryDecider ?? defaultRetryDecider; + this.delayDecider = options?.delayDecider ?? defaultDelayDecider; + this.retryQuota = options?.retryQuota ?? getDefaultRetryQuota(utilRetry.INITIAL_RETRY_TOKENS); + } + shouldRetry(error, attempts, maxAttempts) { + return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error); + } + async getMaxAttempts() { + let maxAttempts; + try { + maxAttempts = await this.maxAttemptsProvider(); + } + catch (error) { + maxAttempts = utilRetry.DEFAULT_MAX_ATTEMPTS; + } + return maxAttempts; + } + async retry(next, args, options) { + let retryTokenAmount; + let attempts = 0; + let totalDelay = 0; + const maxAttempts = await this.getMaxAttempts(); + const { request } = args; + if (protocolHttp.HttpRequest.isInstance(request)) { + request.headers[utilRetry.INVOCATION_ID_HEADER] = uuid.v4(); + } + while (true) { + try { + if (protocolHttp.HttpRequest.isInstance(request)) { + request.headers[utilRetry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + if (options?.beforeRequest) { + await options.beforeRequest(); + } + const { response, output } = await next(args); + if (options?.afterRequest) { + options.afterRequest(response); + } + this.retryQuota.releaseRetryTokens(retryTokenAmount); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalDelay; + return { response, output }; + } + catch (e) { + const err = asSdkError(e); + attempts++; + if (this.shouldRetry(err, attempts, maxAttempts)) { + retryTokenAmount = this.retryQuota.retrieveRetryTokens(err); + const delayFromDecider = this.delayDecider(serviceErrorClassification.isThrottlingError(err) ? utilRetry.THROTTLING_RETRY_DELAY_BASE : utilRetry.DEFAULT_RETRY_DELAY_BASE, attempts); + const delayFromResponse = getDelayFromRetryAfterHeader(err.$response); + const delay = Math.max(delayFromResponse || 0, delayFromDecider); + totalDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + continue; + } + if (!err.$metadata) { + err.$metadata = {}; + } + err.$metadata.attempts = attempts; + err.$metadata.totalRetryDelay = totalDelay; + throw err; + } + } + } +} +const getDelayFromRetryAfterHeader = (response) => { + if (!protocolHttp.HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return retryAfterSeconds * 1000; + const retryAfterDate = new Date(retryAfter); + return retryAfterDate.getTime() - Date.now(); +}; + +class AdaptiveRetryStrategy extends StandardRetryStrategy { + rateLimiter; + constructor(maxAttemptsProvider, options) { + const { rateLimiter, ...superOptions } = options ?? {}; + super(maxAttemptsProvider, superOptions); + this.rateLimiter = rateLimiter ?? new utilRetry.DefaultRateLimiter(); + this.mode = utilRetry.RETRY_MODES.ADAPTIVE; + } + async retry(next, args) { + return super.retry(next, args, { + beforeRequest: async () => { + return this.rateLimiter.getSendToken(); + }, + afterRequest: (response) => { + this.rateLimiter.updateClientSendingRate(response); + }, + }); + } +} + +const ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; +const CONFIG_MAX_ATTEMPTS = "max_attempts"; +const NODE_MAX_ATTEMPT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[ENV_MAX_ATTEMPTS]; + if (!value) + return undefined; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + configFileSelector: (profile) => { + const value = profile[CONFIG_MAX_ATTEMPTS]; + if (!value) + return undefined; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + default: utilRetry.DEFAULT_MAX_ATTEMPTS, +}; +const resolveRetryConfig = (input) => { + const { retryStrategy, retryMode } = input; + const maxAttempts = utilMiddleware.normalizeProvider(input.maxAttempts ?? utilRetry.DEFAULT_MAX_ATTEMPTS); + let controller = retryStrategy + ? Promise.resolve(retryStrategy) + : undefined; + const getDefault = async () => (await utilMiddleware.normalizeProvider(retryMode)()) === utilRetry.RETRY_MODES.ADAPTIVE + ? new utilRetry.AdaptiveRetryStrategy(maxAttempts) + : new utilRetry.StandardRetryStrategy(maxAttempts); + return Object.assign(input, { + maxAttempts, + retryStrategy: () => (controller ??= getDefault()), + }); +}; +const ENV_RETRY_MODE = "AWS_RETRY_MODE"; +const CONFIG_RETRY_MODE = "retry_mode"; +const NODE_RETRY_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_RETRY_MODE], + configFileSelector: (profile) => profile[CONFIG_RETRY_MODE], + default: utilRetry.DEFAULT_RETRY_MODE, +}; + +const omitRetryHeadersMiddleware = () => (next) => async (args) => { + const { request } = args; + if (protocolHttp.HttpRequest.isInstance(request)) { + delete request.headers[utilRetry.INVOCATION_ID_HEADER]; + delete request.headers[utilRetry.REQUEST_HEADER]; + } + return next(args); +}; +const omitRetryHeadersMiddlewareOptions = { + name: "omitRetryHeadersMiddleware", + tags: ["RETRY", "HEADERS", "OMIT_RETRY_HEADERS"], + relation: "before", + toMiddleware: "awsAuthMiddleware", + override: true, +}; +const getOmitRetryHeadersPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions); + }, +}); + +const retryMiddleware = (options) => (next, context) => async (args) => { + let retryStrategy = await options.retryStrategy(); + const maxAttempts = await options.maxAttempts(); + if (isRetryStrategyV2(retryStrategy)) { + retryStrategy = retryStrategy; + let retryToken = await retryStrategy.acquireInitialRetryToken(context["partition_id"]); + let lastError = new Error(); + let attempts = 0; + let totalRetryDelay = 0; + const { request } = args; + const isRequest = protocolHttp.HttpRequest.isInstance(request); + if (isRequest) { + request.headers[utilRetry.INVOCATION_ID_HEADER] = uuid.v4(); + } + while (true) { + try { + if (isRequest) { + request.headers[utilRetry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + const { response, output } = await next(args); + retryStrategy.recordSuccess(retryToken); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalRetryDelay; + return { response, output }; + } + catch (e) { + const retryErrorInfo = getRetryErrorInfo(e); + lastError = asSdkError(e); + if (isRequest && isStreamingPayload.isStreamingPayload(request)) { + (context.logger instanceof smithyClient.NoOpLogger ? console : context.logger)?.warn("An error was encountered in a non-retryable streaming request."); + throw lastError; + } + try { + retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo); + } + catch (refreshError) { + if (!lastError.$metadata) { + lastError.$metadata = {}; + } + lastError.$metadata.attempts = attempts + 1; + lastError.$metadata.totalRetryDelay = totalRetryDelay; + throw lastError; + } + attempts = retryToken.getRetryCount(); + const delay = retryToken.getRetryDelay(); + totalRetryDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + } + else { + retryStrategy = retryStrategy; + if (retryStrategy?.mode) + context.userAgent = [...(context.userAgent || []), ["cfg/retry-mode", retryStrategy.mode]]; + return retryStrategy.retry(next, args); + } +}; +const isRetryStrategyV2 = (retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== "undefined" && + typeof retryStrategy.refreshRetryTokenForRetry !== "undefined" && + typeof retryStrategy.recordSuccess !== "undefined"; +const getRetryErrorInfo = (error) => { + const errorInfo = { + error, + errorType: getRetryErrorType(error), + }; + const retryAfterHint = getRetryAfterHint(error.$response); + if (retryAfterHint) { + errorInfo.retryAfterHint = retryAfterHint; + } + return errorInfo; +}; +const getRetryErrorType = (error) => { + if (serviceErrorClassification.isThrottlingError(error)) + return "THROTTLING"; + if (serviceErrorClassification.isTransientError(error)) + return "TRANSIENT"; + if (serviceErrorClassification.isServerError(error)) + return "SERVER_ERROR"; + return "CLIENT_ERROR"; +}; +const retryMiddlewareOptions = { + name: "retryMiddleware", + tags: ["RETRY"], + step: "finalizeRequest", + priority: "high", + override: true, +}; +const getRetryPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(retryMiddleware(options), retryMiddlewareOptions); + }, +}); +const getRetryAfterHint = (response) => { + if (!protocolHttp.HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return new Date(retryAfterSeconds * 1000); + const retryAfterDate = new Date(retryAfter); + return retryAfterDate; +}; + +exports.AdaptiveRetryStrategy = AdaptiveRetryStrategy; +exports.CONFIG_MAX_ATTEMPTS = CONFIG_MAX_ATTEMPTS; +exports.CONFIG_RETRY_MODE = CONFIG_RETRY_MODE; +exports.ENV_MAX_ATTEMPTS = ENV_MAX_ATTEMPTS; +exports.ENV_RETRY_MODE = ENV_RETRY_MODE; +exports.NODE_MAX_ATTEMPT_CONFIG_OPTIONS = NODE_MAX_ATTEMPT_CONFIG_OPTIONS; +exports.NODE_RETRY_MODE_CONFIG_OPTIONS = NODE_RETRY_MODE_CONFIG_OPTIONS; +exports.StandardRetryStrategy = StandardRetryStrategy; +exports.defaultDelayDecider = defaultDelayDecider; +exports.defaultRetryDecider = defaultRetryDecider; +exports.getOmitRetryHeadersPlugin = getOmitRetryHeadersPlugin; +exports.getRetryAfterHint = getRetryAfterHint; +exports.getRetryPlugin = getRetryPlugin; +exports.omitRetryHeadersMiddleware = omitRetryHeadersMiddleware; +exports.omitRetryHeadersMiddlewareOptions = omitRetryHeadersMiddlewareOptions; +exports.resolveRetryConfig = resolveRetryConfig; +exports.retryMiddleware = retryMiddleware; +exports.retryMiddlewareOptions = retryMiddlewareOptions; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.browser.js b/bff/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.browser.js new file mode 100644 index 0000000..ae99d1e --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.browser.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isStreamingPayload = void 0; +const isStreamingPayload = (request) => request?.body instanceof ReadableStream; +exports.isStreamingPayload = isStreamingPayload; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js b/bff/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js new file mode 100644 index 0000000..6d66c79 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isStreamingPayload = void 0; +const stream_1 = require("stream"); +const isStreamingPayload = (request) => request?.body instanceof stream_1.Readable || + (typeof ReadableStream !== "undefined" && request?.body instanceof ReadableStream); +exports.isStreamingPayload = isStreamingPayload; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/AdaptiveRetryStrategy.js b/bff/node_modules/@smithy/middleware-retry/dist-es/AdaptiveRetryStrategy.js new file mode 100644 index 0000000..367bdcd --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/AdaptiveRetryStrategy.js @@ -0,0 +1,21 @@ +import { DefaultRateLimiter, RETRY_MODES } from "@smithy/util-retry"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +export class AdaptiveRetryStrategy extends StandardRetryStrategy { + rateLimiter; + constructor(maxAttemptsProvider, options) { + const { rateLimiter, ...superOptions } = options ?? {}; + super(maxAttemptsProvider, superOptions); + this.rateLimiter = rateLimiter ?? new DefaultRateLimiter(); + this.mode = RETRY_MODES.ADAPTIVE; + } + async retry(next, args) { + return super.retry(next, args, { + beforeRequest: async () => { + return this.rateLimiter.getSendToken(); + }, + afterRequest: (response) => { + this.rateLimiter.updateClientSendingRate(response); + }, + }); + } +} diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/StandardRetryStrategy.js b/bff/node_modules/@smithy/middleware-retry/dist-es/StandardRetryStrategy.js new file mode 100644 index 0000000..baea44c --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/StandardRetryStrategy.js @@ -0,0 +1,94 @@ +import { HttpRequest, HttpResponse } from "@smithy/protocol-http"; +import { isThrottlingError } from "@smithy/service-error-classification"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_DELAY_BASE, INITIAL_RETRY_TOKENS, INVOCATION_ID_HEADER, REQUEST_HEADER, RETRY_MODES, THROTTLING_RETRY_DELAY_BASE, } from "@smithy/util-retry"; +import { v4 } from "@smithy/uuid"; +import { getDefaultRetryQuota } from "./defaultRetryQuota"; +import { defaultDelayDecider } from "./delayDecider"; +import { defaultRetryDecider } from "./retryDecider"; +import { asSdkError } from "./util"; +export class StandardRetryStrategy { + maxAttemptsProvider; + retryDecider; + delayDecider; + retryQuota; + mode = RETRY_MODES.STANDARD; + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + this.retryDecider = options?.retryDecider ?? defaultRetryDecider; + this.delayDecider = options?.delayDecider ?? defaultDelayDecider; + this.retryQuota = options?.retryQuota ?? getDefaultRetryQuota(INITIAL_RETRY_TOKENS); + } + shouldRetry(error, attempts, maxAttempts) { + return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error); + } + async getMaxAttempts() { + let maxAttempts; + try { + maxAttempts = await this.maxAttemptsProvider(); + } + catch (error) { + maxAttempts = DEFAULT_MAX_ATTEMPTS; + } + return maxAttempts; + } + async retry(next, args, options) { + let retryTokenAmount; + let attempts = 0; + let totalDelay = 0; + const maxAttempts = await this.getMaxAttempts(); + const { request } = args; + if (HttpRequest.isInstance(request)) { + request.headers[INVOCATION_ID_HEADER] = v4(); + } + while (true) { + try { + if (HttpRequest.isInstance(request)) { + request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + if (options?.beforeRequest) { + await options.beforeRequest(); + } + const { response, output } = await next(args); + if (options?.afterRequest) { + options.afterRequest(response); + } + this.retryQuota.releaseRetryTokens(retryTokenAmount); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalDelay; + return { response, output }; + } + catch (e) { + const err = asSdkError(e); + attempts++; + if (this.shouldRetry(err, attempts, maxAttempts)) { + retryTokenAmount = this.retryQuota.retrieveRetryTokens(err); + const delayFromDecider = this.delayDecider(isThrottlingError(err) ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE, attempts); + const delayFromResponse = getDelayFromRetryAfterHeader(err.$response); + const delay = Math.max(delayFromResponse || 0, delayFromDecider); + totalDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + continue; + } + if (!err.$metadata) { + err.$metadata = {}; + } + err.$metadata.attempts = attempts; + err.$metadata.totalRetryDelay = totalDelay; + throw err; + } + } + } +} +const getDelayFromRetryAfterHeader = (response) => { + if (!HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return retryAfterSeconds * 1000; + const retryAfterDate = new Date(retryAfter); + return retryAfterDate.getTime() - Date.now(); +}; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/configurations.js b/bff/node_modules/@smithy/middleware-retry/dist-es/configurations.js new file mode 100644 index 0000000..a6a5239 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/configurations.js @@ -0,0 +1,48 @@ +import { normalizeProvider } from "@smithy/util-middleware"; +import { AdaptiveRetryStrategy, DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE, RETRY_MODES, StandardRetryStrategy, } from "@smithy/util-retry"; +export const ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; +export const CONFIG_MAX_ATTEMPTS = "max_attempts"; +export const NODE_MAX_ATTEMPT_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + const value = env[ENV_MAX_ATTEMPTS]; + if (!value) + return undefined; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + configFileSelector: (profile) => { + const value = profile[CONFIG_MAX_ATTEMPTS]; + if (!value) + return undefined; + const maxAttempt = parseInt(value); + if (Number.isNaN(maxAttempt)) { + throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got "${value}"`); + } + return maxAttempt; + }, + default: DEFAULT_MAX_ATTEMPTS, +}; +export const resolveRetryConfig = (input) => { + const { retryStrategy, retryMode } = input; + const maxAttempts = normalizeProvider(input.maxAttempts ?? DEFAULT_MAX_ATTEMPTS); + let controller = retryStrategy + ? Promise.resolve(retryStrategy) + : undefined; + const getDefault = async () => (await normalizeProvider(retryMode)()) === RETRY_MODES.ADAPTIVE + ? new AdaptiveRetryStrategy(maxAttempts) + : new StandardRetryStrategy(maxAttempts); + return Object.assign(input, { + maxAttempts, + retryStrategy: () => (controller ??= getDefault()), + }); +}; +export const ENV_RETRY_MODE = "AWS_RETRY_MODE"; +export const CONFIG_RETRY_MODE = "retry_mode"; +export const NODE_RETRY_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => env[ENV_RETRY_MODE], + configFileSelector: (profile) => profile[CONFIG_RETRY_MODE], + default: DEFAULT_RETRY_MODE, +}; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/defaultRetryQuota.js b/bff/node_modules/@smithy/middleware-retry/dist-es/defaultRetryQuota.js new file mode 100644 index 0000000..4bf6771 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/defaultRetryQuota.js @@ -0,0 +1,27 @@ +import { NO_RETRY_INCREMENT, RETRY_COST, TIMEOUT_RETRY_COST } from "@smithy/util-retry"; +export const getDefaultRetryQuota = (initialRetryTokens, options) => { + const MAX_CAPACITY = initialRetryTokens; + const noRetryIncrement = options?.noRetryIncrement ?? NO_RETRY_INCREMENT; + const retryCost = options?.retryCost ?? RETRY_COST; + const timeoutRetryCost = options?.timeoutRetryCost ?? TIMEOUT_RETRY_COST; + let availableCapacity = initialRetryTokens; + const getCapacityAmount = (error) => (error.name === "TimeoutError" ? timeoutRetryCost : retryCost); + const hasRetryTokens = (error) => getCapacityAmount(error) <= availableCapacity; + const retrieveRetryTokens = (error) => { + if (!hasRetryTokens(error)) { + throw new Error("No retry token available"); + } + const capacityAmount = getCapacityAmount(error); + availableCapacity -= capacityAmount; + return capacityAmount; + }; + const releaseRetryTokens = (capacityReleaseAmount) => { + availableCapacity += capacityReleaseAmount ?? noRetryIncrement; + availableCapacity = Math.min(availableCapacity, MAX_CAPACITY); + }; + return Object.freeze({ + hasRetryTokens, + retrieveRetryTokens, + releaseRetryTokens, + }); +}; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/delayDecider.js b/bff/node_modules/@smithy/middleware-retry/dist-es/delayDecider.js new file mode 100644 index 0000000..2928506 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/delayDecider.js @@ -0,0 +1,2 @@ +import { MAXIMUM_RETRY_DELAY } from "@smithy/util-retry"; +export const defaultDelayDecider = (delayBase, attempts) => Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/index.js b/bff/node_modules/@smithy/middleware-retry/dist-es/index.js new file mode 100644 index 0000000..9ebe326 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/index.js @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./StandardRetryStrategy"; +export * from "./configurations"; +export * from "./delayDecider"; +export * from "./omitRetryHeadersMiddleware"; +export * from "./retryDecider"; +export * from "./retryMiddleware"; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js b/bff/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js new file mode 100644 index 0000000..9569e92 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js @@ -0,0 +1 @@ +export const isStreamingPayload = (request) => request?.body instanceof ReadableStream; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.js b/bff/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.js new file mode 100644 index 0000000..7dcc687 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.js @@ -0,0 +1,3 @@ +import { Readable } from "stream"; +export const isStreamingPayload = (request) => request?.body instanceof Readable || + (typeof ReadableStream !== "undefined" && request?.body instanceof ReadableStream); diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/omitRetryHeadersMiddleware.js b/bff/node_modules/@smithy/middleware-retry/dist-es/omitRetryHeadersMiddleware.js new file mode 100644 index 0000000..cb3c372 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/omitRetryHeadersMiddleware.js @@ -0,0 +1,22 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { INVOCATION_ID_HEADER, REQUEST_HEADER } from "@smithy/util-retry"; +export const omitRetryHeadersMiddleware = () => (next) => async (args) => { + const { request } = args; + if (HttpRequest.isInstance(request)) { + delete request.headers[INVOCATION_ID_HEADER]; + delete request.headers[REQUEST_HEADER]; + } + return next(args); +}; +export const omitRetryHeadersMiddlewareOptions = { + name: "omitRetryHeadersMiddleware", + tags: ["RETRY", "HEADERS", "OMIT_RETRY_HEADERS"], + relation: "before", + toMiddleware: "awsAuthMiddleware", + override: true, +}; +export const getOmitRetryHeadersPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions); + }, +}); diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/retryDecider.js b/bff/node_modules/@smithy/middleware-retry/dist-es/retryDecider.js new file mode 100644 index 0000000..b965fba --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/retryDecider.js @@ -0,0 +1,7 @@ +import { isClockSkewError, isRetryableByTrait, isThrottlingError, isTransientError, } from "@smithy/service-error-classification"; +export const defaultRetryDecider = (error) => { + if (!error) { + return false; + } + return isRetryableByTrait(error) || isClockSkewError(error) || isThrottlingError(error) || isTransientError(error); +}; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js b/bff/node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js new file mode 100644 index 0000000..5fa097a --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js @@ -0,0 +1,112 @@ +import { HttpRequest, HttpResponse } from "@smithy/protocol-http"; +import { isServerError, isThrottlingError, isTransientError } from "@smithy/service-error-classification"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { INVOCATION_ID_HEADER, REQUEST_HEADER } from "@smithy/util-retry"; +import { v4 } from "@smithy/uuid"; +import { isStreamingPayload } from "./isStreamingPayload/isStreamingPayload"; +import { asSdkError } from "./util"; +export const retryMiddleware = (options) => (next, context) => async (args) => { + let retryStrategy = await options.retryStrategy(); + const maxAttempts = await options.maxAttempts(); + if (isRetryStrategyV2(retryStrategy)) { + retryStrategy = retryStrategy; + let retryToken = await retryStrategy.acquireInitialRetryToken(context["partition_id"]); + let lastError = new Error(); + let attempts = 0; + let totalRetryDelay = 0; + const { request } = args; + const isRequest = HttpRequest.isInstance(request); + if (isRequest) { + request.headers[INVOCATION_ID_HEADER] = v4(); + } + while (true) { + try { + if (isRequest) { + request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`; + } + const { response, output } = await next(args); + retryStrategy.recordSuccess(retryToken); + output.$metadata.attempts = attempts + 1; + output.$metadata.totalRetryDelay = totalRetryDelay; + return { response, output }; + } + catch (e) { + const retryErrorInfo = getRetryErrorInfo(e); + lastError = asSdkError(e); + if (isRequest && isStreamingPayload(request)) { + (context.logger instanceof NoOpLogger ? console : context.logger)?.warn("An error was encountered in a non-retryable streaming request."); + throw lastError; + } + try { + retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo); + } + catch (refreshError) { + if (!lastError.$metadata) { + lastError.$metadata = {}; + } + lastError.$metadata.attempts = attempts + 1; + lastError.$metadata.totalRetryDelay = totalRetryDelay; + throw lastError; + } + attempts = retryToken.getRetryCount(); + const delay = retryToken.getRetryDelay(); + totalRetryDelay += delay; + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + } + else { + retryStrategy = retryStrategy; + if (retryStrategy?.mode) + context.userAgent = [...(context.userAgent || []), ["cfg/retry-mode", retryStrategy.mode]]; + return retryStrategy.retry(next, args); + } +}; +const isRetryStrategyV2 = (retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== "undefined" && + typeof retryStrategy.refreshRetryTokenForRetry !== "undefined" && + typeof retryStrategy.recordSuccess !== "undefined"; +const getRetryErrorInfo = (error) => { + const errorInfo = { + error, + errorType: getRetryErrorType(error), + }; + const retryAfterHint = getRetryAfterHint(error.$response); + if (retryAfterHint) { + errorInfo.retryAfterHint = retryAfterHint; + } + return errorInfo; +}; +const getRetryErrorType = (error) => { + if (isThrottlingError(error)) + return "THROTTLING"; + if (isTransientError(error)) + return "TRANSIENT"; + if (isServerError(error)) + return "SERVER_ERROR"; + return "CLIENT_ERROR"; +}; +export const retryMiddlewareOptions = { + name: "retryMiddleware", + tags: ["RETRY"], + step: "finalizeRequest", + priority: "high", + override: true, +}; +export const getRetryPlugin = (options) => ({ + applyToStack: (clientStack) => { + clientStack.add(retryMiddleware(options), retryMiddlewareOptions); + }, +}); +export const getRetryAfterHint = (response) => { + if (!HttpResponse.isInstance(response)) + return; + const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === "retry-after"); + if (!retryAfterHeaderName) + return; + const retryAfter = response.headers[retryAfterHeaderName]; + const retryAfterSeconds = Number(retryAfter); + if (!Number.isNaN(retryAfterSeconds)) + return new Date(retryAfterSeconds * 1000); + const retryAfterDate = new Date(retryAfter); + return retryAfterDate; +}; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/types.js b/bff/node_modules/@smithy/middleware-retry/dist-es/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-es/util.js b/bff/node_modules/@smithy/middleware-retry/dist-es/util.js new file mode 100644 index 0000000..f45e6b4 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-es/util.js @@ -0,0 +1,9 @@ +export const asSdkError = (error) => { + if (error instanceof Error) + return error; + if (error instanceof Object) + return Object.assign(new Error(), error); + if (typeof error === "string") + return new Error(error); + return new Error(`AWS SDK error wrapper for ${error}`); +}; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/AdaptiveRetryStrategy.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/AdaptiveRetryStrategy.d.ts new file mode 100644 index 0000000..4d139e9 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/AdaptiveRetryStrategy.d.ts @@ -0,0 +1,23 @@ +import type { FinalizeHandler, FinalizeHandlerArguments, MetadataBearer, Provider } from "@smithy/types"; +import type { RateLimiter } from "@smithy/util-retry"; +import type { StandardRetryStrategyOptions } from "./StandardRetryStrategy"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +/** + * @public + * Strategy options to be passed to AdaptiveRetryStrategy + */ +export interface AdaptiveRetryStrategyOptions extends StandardRetryStrategyOptions { + rateLimiter?: RateLimiter; +} +/** + * @public + * @deprecated use AdaptiveRetryStrategy from @smithy/util-retry + */ +export declare class AdaptiveRetryStrategy extends StandardRetryStrategy { + private rateLimiter; + constructor(maxAttemptsProvider: Provider, options?: AdaptiveRetryStrategyOptions); + retry(next: FinalizeHandler, args: FinalizeHandlerArguments): Promise<{ + response: unknown; + output: Ouput; + }>; +} diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/StandardRetryStrategy.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/StandardRetryStrategy.d.ts new file mode 100644 index 0000000..60f2b1f --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/StandardRetryStrategy.d.ts @@ -0,0 +1,33 @@ +import type { FinalizeHandler, FinalizeHandlerArguments, MetadataBearer, Provider, RetryStrategy } from "@smithy/types"; +import type { DelayDecider, RetryDecider, RetryQuota } from "./types"; +/** + * Strategy options to be passed to StandardRetryStrategy + * @public + * @deprecated use StandardRetryStrategy from @smithy/util-retry + */ +export interface StandardRetryStrategyOptions { + retryDecider?: RetryDecider; + delayDecider?: DelayDecider; + retryQuota?: RetryQuota; +} +/** + * @public + * @deprecated use StandardRetryStrategy from @smithy/util-retry + */ +export declare class StandardRetryStrategy implements RetryStrategy { + private readonly maxAttemptsProvider; + private retryDecider; + private delayDecider; + private retryQuota; + mode: string; + constructor(maxAttemptsProvider: Provider, options?: StandardRetryStrategyOptions); + private shouldRetry; + private getMaxAttempts; + retry(next: FinalizeHandler, args: FinalizeHandlerArguments, options?: { + beforeRequest: Function; + afterRequest: Function; + }): Promise<{ + response: unknown; + output: Ouput; + }>; +} diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts new file mode 100644 index 0000000..cf849f7 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/configurations.d.ts @@ -0,0 +1,66 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import type { Provider, RetryStrategy, RetryStrategyV2 } from "@smithy/types"; +/** + * @internal + */ +export declare const ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; +/** + * @internal + */ +export declare const CONFIG_MAX_ATTEMPTS = "max_attempts"; +/** + * @internal + */ +export declare const NODE_MAX_ATTEMPT_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @public + */ +export interface RetryInputConfig { + /** + * The maximum number of times requests that encounter retryable failures should be attempted. + */ + maxAttempts?: number | Provider; + /** + * The strategy to retry the request. Using built-in exponential backoff strategy by default. + */ + retryStrategy?: RetryStrategy | RetryStrategyV2; +} +/** + * @internal + */ +export interface PreviouslyResolved { + /** + * Specifies provider for retry algorithm to use. + * @internal + */ + retryMode: string | Provider; +} +/** + * @internal + */ +export interface RetryResolvedConfig { + /** + * Resolved value for input config {@link RetryInputConfig.maxAttempts} + */ + maxAttempts: Provider; + /** + * Resolved value for input config {@link RetryInputConfig.retryStrategy} + */ + retryStrategy: Provider; +} +/** + * @internal + */ +export declare const resolveRetryConfig: (input: T & PreviouslyResolved & RetryInputConfig) => T & RetryResolvedConfig; +/** + * @internal + */ +export declare const ENV_RETRY_MODE = "AWS_RETRY_MODE"; +/** + * @internal + */ +export declare const CONFIG_RETRY_MODE = "retry_mode"; +/** + * @internal + */ +export declare const NODE_RETRY_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/defaultRetryQuota.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/defaultRetryQuota.d.ts new file mode 100644 index 0000000..c9be835 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/defaultRetryQuota.d.ts @@ -0,0 +1,24 @@ +import type { RetryQuota } from "./types"; +/** + * @internal + */ +export interface DefaultRetryQuotaOptions { + /** + * The total amount of retry token to be incremented from retry token balance + * if an SDK operation invocation succeeds without requiring a retry request. + */ + noRetryIncrement?: number; + /** + * The total amount of retry tokens to be decremented from retry token balance. + */ + retryCost?: number; + /** + * The total amount of retry tokens to be decremented from retry token balance + * when a throttling error is encountered. + */ + timeoutRetryCost?: number; +} +/** + * @internal + */ +export declare const getDefaultRetryQuota: (initialRetryTokens: number, options?: DefaultRetryQuotaOptions) => RetryQuota; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/delayDecider.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/delayDecider.d.ts new file mode 100644 index 0000000..986ff42 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/delayDecider.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Calculate a capped, fully-jittered exponential backoff time. + */ +export declare const defaultDelayDecider: (delayBase: number, attempts: number) => number; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/index.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/index.d.ts new file mode 100644 index 0000000..9ebe326 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/index.d.ts @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./StandardRetryStrategy"; +export * from "./configurations"; +export * from "./delayDecider"; +export * from "./omitRetryHeadersMiddleware"; +export * from "./retryDecider"; +export * from "./retryMiddleware"; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.browser.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.browser.d.ts new file mode 100644 index 0000000..48d70ba --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.browser.d.ts @@ -0,0 +1,5 @@ +import type { HttpRequest } from "@smithy/protocol-http"; +/** + * @internal + */ +export declare const isStreamingPayload: (request: HttpRequest) => boolean; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.d.ts new file mode 100644 index 0000000..48d70ba --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/isStreamingPayload/isStreamingPayload.d.ts @@ -0,0 +1,5 @@ +import type { HttpRequest } from "@smithy/protocol-http"; +/** + * @internal + */ +export declare const isStreamingPayload: (request: HttpRequest) => boolean; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/omitRetryHeadersMiddleware.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/omitRetryHeadersMiddleware.d.ts new file mode 100644 index 0000000..282ddc3 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/omitRetryHeadersMiddleware.d.ts @@ -0,0 +1,13 @@ +import type { FinalizeHandler, MetadataBearer, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const omitRetryHeadersMiddleware: () => (next: FinalizeHandler) => FinalizeHandler; +/** + * @internal + */ +export declare const omitRetryHeadersMiddlewareOptions: RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getOmitRetryHeadersPlugin: (options: unknown) => Pluggable; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/retryDecider.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/retryDecider.d.ts new file mode 100644 index 0000000..5c1bb18 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/retryDecider.d.ts @@ -0,0 +1,6 @@ +import type { SdkError } from "@smithy/types"; +/** + * @internal + * @deprecated this is only used in the deprecated StandardRetryStrategy. Do not use in new code. + */ +export declare const defaultRetryDecider: (error: SdkError) => boolean; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/retryMiddleware.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/retryMiddleware.d.ts new file mode 100644 index 0000000..445990f --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/retryMiddleware.d.ts @@ -0,0 +1,18 @@ +import type { AbsoluteLocation, FinalizeHandler, FinalizeRequestHandlerOptions, HandlerExecutionContext, MetadataBearer, Pluggable } from "@smithy/types"; +import type { RetryResolvedConfig } from "./configurations"; +/** + * @internal + */ +export declare const retryMiddleware: (options: RetryResolvedConfig) => (next: FinalizeHandler, context: HandlerExecutionContext) => FinalizeHandler; +/** + * @internal + */ +export declare const retryMiddlewareOptions: FinalizeRequestHandlerOptions & AbsoluteLocation; +/** + * @internal + */ +export declare const getRetryPlugin: (options: RetryResolvedConfig) => Pluggable; +/** + * @internal + */ +export declare const getRetryAfterHint: (response: unknown) => Date | undefined; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts new file mode 100644 index 0000000..afd5f99 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts @@ -0,0 +1,23 @@ +import { FinalizeHandler, FinalizeHandlerArguments, MetadataBearer, Provider } from "@smithy/types"; +import { RateLimiter } from "@smithy/util-retry"; +import { StandardRetryStrategyOptions } from "./StandardRetryStrategy"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +/** + * @public + * Strategy options to be passed to AdaptiveRetryStrategy + */ +export interface AdaptiveRetryStrategyOptions extends StandardRetryStrategyOptions { + rateLimiter?: RateLimiter; +} +/** + * @public + * @deprecated use AdaptiveRetryStrategy from @smithy/util-retry + */ +export declare class AdaptiveRetryStrategy extends StandardRetryStrategy { + private rateLimiter; + constructor(maxAttemptsProvider: Provider, options?: AdaptiveRetryStrategyOptions); + retry(next: FinalizeHandler, args: FinalizeHandlerArguments): Promise<{ + response: unknown; + output: Ouput; + }>; +} diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts new file mode 100644 index 0000000..b4656d2 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts @@ -0,0 +1,33 @@ +import { FinalizeHandler, FinalizeHandlerArguments, MetadataBearer, Provider, RetryStrategy } from "@smithy/types"; +import { DelayDecider, RetryDecider, RetryQuota } from "./types"; +/** + * Strategy options to be passed to StandardRetryStrategy + * @public + * @deprecated use StandardRetryStrategy from @smithy/util-retry + */ +export interface StandardRetryStrategyOptions { + retryDecider?: RetryDecider; + delayDecider?: DelayDecider; + retryQuota?: RetryQuota; +} +/** + * @public + * @deprecated use StandardRetryStrategy from @smithy/util-retry + */ +export declare class StandardRetryStrategy implements RetryStrategy { + private readonly maxAttemptsProvider; + private retryDecider; + private delayDecider; + private retryQuota; + mode: string; + constructor(maxAttemptsProvider: Provider, options?: StandardRetryStrategyOptions); + private shouldRetry; + private getMaxAttempts; + retry(next: FinalizeHandler, args: FinalizeHandlerArguments, options?: { + beforeRequest: Function; + afterRequest: Function; + }): Promise<{ + response: unknown; + output: Ouput; + }>; +} diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/configurations.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/configurations.d.ts new file mode 100644 index 0000000..79f8646 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/configurations.d.ts @@ -0,0 +1,66 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { Provider, RetryStrategy, RetryStrategyV2 } from "@smithy/types"; +/** + * @internal + */ +export declare const ENV_MAX_ATTEMPTS = "AWS_MAX_ATTEMPTS"; +/** + * @internal + */ +export declare const CONFIG_MAX_ATTEMPTS = "max_attempts"; +/** + * @internal + */ +export declare const NODE_MAX_ATTEMPT_CONFIG_OPTIONS: LoadedConfigSelectors; +/** + * @public + */ +export interface RetryInputConfig { + /** + * The maximum number of times requests that encounter retryable failures should be attempted. + */ + maxAttempts?: number | Provider; + /** + * The strategy to retry the request. Using built-in exponential backoff strategy by default. + */ + retryStrategy?: RetryStrategy | RetryStrategyV2; +} +/** + * @internal + */ +export interface PreviouslyResolved { + /** + * Specifies provider for retry algorithm to use. + * @internal + */ + retryMode: string | Provider; +} +/** + * @internal + */ +export interface RetryResolvedConfig { + /** + * Resolved value for input config {@link RetryInputConfig.maxAttempts} + */ + maxAttempts: Provider; + /** + * Resolved value for input config {@link RetryInputConfig.retryStrategy} + */ + retryStrategy: Provider; +} +/** + * @internal + */ +export declare const resolveRetryConfig: (input: T & PreviouslyResolved & RetryInputConfig) => T & RetryResolvedConfig; +/** + * @internal + */ +export declare const ENV_RETRY_MODE = "AWS_RETRY_MODE"; +/** + * @internal + */ +export declare const CONFIG_RETRY_MODE = "retry_mode"; +/** + * @internal + */ +export declare const NODE_RETRY_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/defaultRetryQuota.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/defaultRetryQuota.d.ts new file mode 100644 index 0000000..704b5af --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/defaultRetryQuota.d.ts @@ -0,0 +1,24 @@ +import { RetryQuota } from "./types"; +/** + * @internal + */ +export interface DefaultRetryQuotaOptions { + /** + * The total amount of retry token to be incremented from retry token balance + * if an SDK operation invocation succeeds without requiring a retry request. + */ + noRetryIncrement?: number; + /** + * The total amount of retry tokens to be decremented from retry token balance. + */ + retryCost?: number; + /** + * The total amount of retry tokens to be decremented from retry token balance + * when a throttling error is encountered. + */ + timeoutRetryCost?: number; +} +/** + * @internal + */ +export declare const getDefaultRetryQuota: (initialRetryTokens: number, options?: DefaultRetryQuotaOptions) => RetryQuota; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/delayDecider.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/delayDecider.d.ts new file mode 100644 index 0000000..7fa73ec --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/delayDecider.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Calculate a capped, fully-jittered exponential backoff time. + */ +export declare const defaultDelayDecider: (delayBase: number, attempts: number) => number; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..e366bbb --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/index.d.ts @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./StandardRetryStrategy"; +export * from "./configurations"; +export * from "./delayDecider"; +export * from "./omitRetryHeadersMiddleware"; +export * from "./retryDecider"; +export * from "./retryMiddleware"; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.browser.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.browser.d.ts new file mode 100644 index 0000000..2a4d542 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.browser.d.ts @@ -0,0 +1,5 @@ +import { HttpRequest } from "@smithy/protocol-http"; +/** + * @internal + */ +export declare const isStreamingPayload: (request: HttpRequest) => boolean; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.d.ts new file mode 100644 index 0000000..2a4d542 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/isStreamingPayload/isStreamingPayload.d.ts @@ -0,0 +1,5 @@ +import { HttpRequest } from "@smithy/protocol-http"; +/** + * @internal + */ +export declare const isStreamingPayload: (request: HttpRequest) => boolean; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/omitRetryHeadersMiddleware.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/omitRetryHeadersMiddleware.d.ts new file mode 100644 index 0000000..abd8f71 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/omitRetryHeadersMiddleware.d.ts @@ -0,0 +1,13 @@ +import { FinalizeHandler, MetadataBearer, Pluggable, RelativeMiddlewareOptions } from "@smithy/types"; +/** + * @internal + */ +export declare const omitRetryHeadersMiddleware: () => (next: FinalizeHandler) => FinalizeHandler; +/** + * @internal + */ +export declare const omitRetryHeadersMiddlewareOptions: RelativeMiddlewareOptions; +/** + * @internal + */ +export declare const getOmitRetryHeadersPlugin: (options: unknown) => Pluggable; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryDecider.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryDecider.d.ts new file mode 100644 index 0000000..c00661a --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryDecider.d.ts @@ -0,0 +1,6 @@ +import { SdkError } from "@smithy/types"; +/** + * @internal + * @deprecated this is only used in the deprecated StandardRetryStrategy. Do not use in new code. + */ +export declare const defaultRetryDecider: (error: SdkError) => boolean; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryMiddleware.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryMiddleware.d.ts new file mode 100644 index 0000000..137dbf1 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/retryMiddleware.d.ts @@ -0,0 +1,18 @@ +import { AbsoluteLocation, FinalizeHandler, FinalizeRequestHandlerOptions, HandlerExecutionContext, MetadataBearer, Pluggable } from "@smithy/types"; +import { RetryResolvedConfig } from "./configurations"; +/** + * @internal + */ +export declare const retryMiddleware: (options: RetryResolvedConfig) => (next: FinalizeHandler, context: HandlerExecutionContext) => FinalizeHandler; +/** + * @internal + */ +export declare const retryMiddlewareOptions: FinalizeRequestHandlerOptions & AbsoluteLocation; +/** + * @internal + */ +export declare const getRetryPlugin: (options: RetryResolvedConfig) => Pluggable; +/** + * @internal + */ +export declare const getRetryAfterHint: (response: unknown) => Date | undefined; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/types.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..06775c6 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/types.d.ts @@ -0,0 +1,65 @@ +import { SdkError } from "@smithy/types"; +/** + * Determines whether an error is retryable based on the number of retries + * already attempted, the HTTP status code, and the error received (if any). + * + * @param error - The error encountered. + * + * @deprecated + * @internal + */ +export interface RetryDecider { + (error: SdkError): boolean; +} +/** + * Determines the number of milliseconds to wait before retrying an action. + * + * @param delayBase - The base delay (in milliseconds). + * @param attempts - The number of times the action has already been tried. + * + * @deprecated + * @internal + */ +export interface DelayDecider { + (delayBase: number, attempts: number): number; +} +/** + * Interface that specifies the retry quota behavior. + * @deprecated + * @internal + */ +export interface RetryQuota { + /** + * returns true if retry tokens are available from the retry quota bucket. + */ + hasRetryTokens: (error: SdkError) => boolean; + /** + * returns token amount from the retry quota bucket. + * throws error is retry tokens are not available. + */ + retrieveRetryTokens: (error: SdkError) => number; + /** + * releases tokens back to the retry quota. + */ + releaseRetryTokens: (releaseCapacityAmount?: number) => void; +} +/** + * @deprecated + * @internal + */ +export interface RateLimiter { + /** + * If there is sufficient capacity (tokens) available, it immediately returns. + * If there is not sufficient capacity, it will either sleep a certain amount + * of time until the rate limiter can retrieve a token from its token bucket + * or raise an exception indicating there is insufficient capacity. + */ + getSendToken: () => Promise; + /** + * Updates the client sending rate based on response. + * If the response was successful, the capacity and fill rate are increased. + * If the response was a throttling response, the capacity and fill rate are + * decreased. Transient errors do not affect the rate limiter. + */ + updateClientSendingRate: (response: any) => void; +} diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/util.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/util.d.ts new file mode 100644 index 0000000..7684a9f --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/ts3.4/util.d.ts @@ -0,0 +1,2 @@ +import { SdkError } from "@smithy/types"; +export declare const asSdkError: (error: unknown) => SdkError; diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/types.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/types.d.ts new file mode 100644 index 0000000..622302d --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/types.d.ts @@ -0,0 +1,65 @@ +import type { SdkError } from "@smithy/types"; +/** + * Determines whether an error is retryable based on the number of retries + * already attempted, the HTTP status code, and the error received (if any). + * + * @param error - The error encountered. + * + * @deprecated + * @internal + */ +export interface RetryDecider { + (error: SdkError): boolean; +} +/** + * Determines the number of milliseconds to wait before retrying an action. + * + * @param delayBase - The base delay (in milliseconds). + * @param attempts - The number of times the action has already been tried. + * + * @deprecated + * @internal + */ +export interface DelayDecider { + (delayBase: number, attempts: number): number; +} +/** + * Interface that specifies the retry quota behavior. + * @deprecated + * @internal + */ +export interface RetryQuota { + /** + * returns true if retry tokens are available from the retry quota bucket. + */ + hasRetryTokens: (error: SdkError) => boolean; + /** + * returns token amount from the retry quota bucket. + * throws error is retry tokens are not available. + */ + retrieveRetryTokens: (error: SdkError) => number; + /** + * releases tokens back to the retry quota. + */ + releaseRetryTokens: (releaseCapacityAmount?: number) => void; +} +/** + * @deprecated + * @internal + */ +export interface RateLimiter { + /** + * If there is sufficient capacity (tokens) available, it immediately returns. + * If there is not sufficient capacity, it will either sleep a certain amount + * of time until the rate limiter can retrieve a token from its token bucket + * or raise an exception indicating there is insufficient capacity. + */ + getSendToken: () => Promise; + /** + * Updates the client sending rate based on response. + * If the response was successful, the capacity and fill rate are increased. + * If the response was a throttling response, the capacity and fill rate are + * decreased. Transient errors do not affect the rate limiter. + */ + updateClientSendingRate: (response: any) => void; +} diff --git a/bff/node_modules/@smithy/middleware-retry/dist-types/util.d.ts b/bff/node_modules/@smithy/middleware-retry/dist-types/util.d.ts new file mode 100644 index 0000000..8b8e01c --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/dist-types/util.d.ts @@ -0,0 +1,2 @@ +import type { SdkError } from "@smithy/types"; +export declare const asSdkError: (error: unknown) => SdkError; diff --git a/bff/node_modules/@smithy/middleware-retry/package.json b/bff/node_modules/@smithy/middleware-retry/package.json new file mode 100644 index 0000000..a890bd8 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-retry/package.json @@ -0,0 +1,79 @@ +{ + "name": "@smithy/middleware-retry", + "version": "4.4.46", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-retry", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "browser": { + "./dist-es/isStreamingPayload/isStreamingPayload": "./dist-es/isStreamingPayload/isStreamingPayload.browser" + }, + "react-native": { + "./dist-cjs/isStreamingPayload/isStreamingPayload": "./dist-cjs/isStreamingPayload/isStreamingPayload.browser", + "./dist-es/isStreamingPayload/isStreamingPayload": "./dist-es/isStreamingPayload/isStreamingPayload.browser" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/service-error-classification": "^4.2.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.13", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/util-test": "^0.2.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-retry", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-retry" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/middleware-serde/LICENSE b/bff/node_modules/@smithy/middleware-serde/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/middleware-serde/README.md b/bff/node_modules/@smithy/middleware-serde/README.md new file mode 100644 index 0000000..1072439 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/README.md @@ -0,0 +1,17 @@ +# @smithy/middleware-serde + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-serde/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-serde) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-serde.svg)](https://www.npmjs.com/package/@smithy/middleware-serde) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- diff --git a/bff/node_modules/@smithy/middleware-serde/dist-cjs/index.js b/bff/node_modules/@smithy/middleware-serde/dist-cjs/index.js new file mode 100644 index 0000000..520c6b1 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-cjs/index.js @@ -0,0 +1,104 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var endpoints = require('@smithy/core/endpoints'); + +const deserializerMiddleware = (options, deserializer) => (next, context) => async (args) => { + const { response } = await next(args); + try { + const parsed = await deserializer(response, options); + return { + response, + output: parsed, + }; + } + catch (error) { + Object.defineProperty(error, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false, + }); + if (!("$metadata" in error)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error.message += "\n " + hint; + } + catch (e) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } + else { + context.logger?.warn?.(hint); + } + } + if (typeof error.$responseBodyText !== "undefined") { + if (error.$response) { + error.$response.body = error.$responseBodyText; + } + } + try { + if (protocolHttp.HttpResponse.isInstance(response)) { + const { headers = {} } = response; + const headerEntries = Object.entries(headers); + error.$metadata = { + httpStatusCode: response.statusCode, + requestId: findHeader(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader(/^x-[\w-]+-cf-id$/, headerEntries), + }; + } + } + catch (e) { + } + } + throw error; + } +}; +const findHeader = (pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 0])[1]; +}; + +const serializerMiddleware = (options, serializer) => (next, context) => async (args) => { + const endpointConfig = options; + const endpoint = context.endpointV2 + ? async () => endpoints.toEndpointV1(context.endpointV2) + : endpointConfig.endpoint; + if (!endpoint) { + throw new Error("No valid endpoint provider available."); + } + const request = await serializer(args.input, { ...options, endpoint }); + return next({ + ...args, + request, + }); +}; + +const deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true, +}; +const serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true, +}; +function getSerdePlugin(config, serializer, deserializer) { + return { + applyToStack: (commandStack) => { + commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption); + commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption); + }, + }; +} + +exports.deserializerMiddleware = deserializerMiddleware; +exports.deserializerMiddlewareOption = deserializerMiddlewareOption; +exports.getSerdePlugin = getSerdePlugin; +exports.serializerMiddleware = serializerMiddleware; +exports.serializerMiddlewareOption = serializerMiddlewareOption; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js b/bff/node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js new file mode 100644 index 0000000..a83d356 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js @@ -0,0 +1,58 @@ +import { HttpResponse } from "@smithy/protocol-http"; +export const deserializerMiddleware = (options, deserializer) => (next, context) => async (args) => { + const { response } = await next(args); + try { + const parsed = await deserializer(response, options); + return { + response, + output: parsed, + }; + } + catch (error) { + Object.defineProperty(error, "$response", { + value: response, + enumerable: false, + writable: false, + configurable: false, + }); + if (!("$metadata" in error)) { + const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`; + try { + error.message += "\n " + hint; + } + catch (e) { + if (!context.logger || context.logger?.constructor?.name === "NoOpLogger") { + console.warn(hint); + } + else { + context.logger?.warn?.(hint); + } + } + if (typeof error.$responseBodyText !== "undefined") { + if (error.$response) { + error.$response.body = error.$responseBodyText; + } + } + try { + if (HttpResponse.isInstance(response)) { + const { headers = {} } = response; + const headerEntries = Object.entries(headers); + error.$metadata = { + httpStatusCode: response.statusCode, + requestId: findHeader(/^x-[\w-]+-request-?id$/, headerEntries), + extendedRequestId: findHeader(/^x-[\w-]+-id-2$/, headerEntries), + cfId: findHeader(/^x-[\w-]+-cf-id$/, headerEntries), + }; + } + } + catch (e) { + } + } + throw error; + } +}; +const findHeader = (pattern, headers) => { + return (headers.find(([k]) => { + return k.match(pattern); + }) || [void 0, void 1])[1]; +}; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-es/index.js b/bff/node_modules/@smithy/middleware-serde/dist-es/index.js new file mode 100644 index 0000000..166a2be --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./deserializerMiddleware"; +export * from "./serdePlugin"; +export * from "./serializerMiddleware"; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js b/bff/node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js new file mode 100644 index 0000000..be2a06e --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js @@ -0,0 +1,22 @@ +import { deserializerMiddleware } from "./deserializerMiddleware"; +import { serializerMiddleware } from "./serializerMiddleware"; +export const deserializerMiddlewareOption = { + name: "deserializerMiddleware", + step: "deserialize", + tags: ["DESERIALIZER"], + override: true, +}; +export const serializerMiddlewareOption = { + name: "serializerMiddleware", + step: "serialize", + tags: ["SERIALIZER"], + override: true, +}; +export function getSerdePlugin(config, serializer, deserializer) { + return { + applyToStack: (commandStack) => { + commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption); + commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption); + }, + }; +} diff --git a/bff/node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js b/bff/node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js new file mode 100644 index 0000000..f32db4a --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js @@ -0,0 +1,15 @@ +import { toEndpointV1 } from "@smithy/core/endpoints"; +export const serializerMiddleware = (options, serializer) => (next, context) => async (args) => { + const endpointConfig = options; + const endpoint = context.endpointV2 + ? async () => toEndpointV1(context.endpointV2) + : endpointConfig.endpoint; + if (!endpoint) { + throw new Error("No valid endpoint provider available."); + } + const request = await serializer(args.input, { ...options, endpoint }); + return next({ + ...args, + request, + }); +}; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts b/bff/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts new file mode 100644 index 0000000..2a66d7c --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-types/deserializerMiddleware.d.ts @@ -0,0 +1,6 @@ +import type { DeserializeMiddleware, ResponseDeserializer, SerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const deserializerMiddleware: (options: SerdeFunctions, deserializer: ResponseDeserializer) => DeserializeMiddleware; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-types/index.d.ts b/bff/node_modules/@smithy/middleware-serde/dist-types/index.d.ts new file mode 100644 index 0000000..166a2be --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./deserializerMiddleware"; +export * from "./serdePlugin"; +export * from "./serializerMiddleware"; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts b/bff/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts new file mode 100644 index 0000000..a4ecfe4 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-types/serdePlugin.d.ts @@ -0,0 +1,24 @@ +import type { DeserializeHandlerOptions, Endpoint, MetadataBearer, Pluggable, Provider, RequestSerializer, ResponseDeserializer, SerdeContext, SerdeFunctions, SerializeHandlerOptions, UrlParser } from "@smithy/types"; +/** + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const deserializerMiddlewareOption: DeserializeHandlerOptions; +/** + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const serializerMiddlewareOption: SerializeHandlerOptions; +/** + * Modifies the EndpointBearer to make it compatible with Endpoints 2.0 change. + * + * @internal + * @deprecated + */ +export type V1OrV2Endpoint = { + urlParser?: UrlParser; + endpoint?: Provider; +}; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare function getSerdePlugin(config: SerdeFunctions, serializer: RequestSerializer, deserializer: ResponseDeserializer): Pluggable; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts b/bff/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts new file mode 100644 index 0000000..6312b7d --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-types/serializerMiddleware.d.ts @@ -0,0 +1,6 @@ +import type { RequestSerializer, SerdeContext, SerdeFunctions, SerializeMiddleware } from "@smithy/types"; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const serializerMiddleware: (options: SerdeFunctions, serializer: RequestSerializer) => SerializeMiddleware; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts b/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts new file mode 100644 index 0000000..4a503aa --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/deserializerMiddleware.d.ts @@ -0,0 +1,6 @@ +import { DeserializeMiddleware, ResponseDeserializer, SerdeContext, SerdeFunctions } from "@smithy/types"; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const deserializerMiddleware: (options: SerdeFunctions, deserializer: ResponseDeserializer) => DeserializeMiddleware; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ec66df4 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./deserializerMiddleware"; +export * from "./serdePlugin"; +export * from "./serializerMiddleware"; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts b/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts new file mode 100644 index 0000000..1230011 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serdePlugin.d.ts @@ -0,0 +1,24 @@ +import { DeserializeHandlerOptions, Endpoint, MetadataBearer, Pluggable, Provider, RequestSerializer, ResponseDeserializer, SerdeContext, SerdeFunctions, SerializeHandlerOptions, UrlParser } from "@smithy/types"; +/** + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const deserializerMiddlewareOption: DeserializeHandlerOptions; +/** + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const serializerMiddlewareOption: SerializeHandlerOptions; +/** + * Modifies the EndpointBearer to make it compatible with Endpoints 2.0 change. + * + * @internal + * @deprecated + */ +export type V1OrV2Endpoint = { + urlParser?: UrlParser; + endpoint?: Provider; +}; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare function getSerdePlugin(config: SerdeFunctions, serializer: RequestSerializer, deserializer: ResponseDeserializer): Pluggable; diff --git a/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts b/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts new file mode 100644 index 0000000..e87a525 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/dist-types/ts3.4/serializerMiddleware.d.ts @@ -0,0 +1,6 @@ +import { RequestSerializer, SerdeContext, SerdeFunctions, SerializeMiddleware } from "@smithy/types"; +/** + * @internal + * @deprecated will be replaced by schemaSerdePlugin from core/schema. + */ +export declare const serializerMiddleware: (options: SerdeFunctions, serializer: RequestSerializer) => SerializeMiddleware; diff --git a/bff/node_modules/@smithy/middleware-serde/package.json b/bff/node_modules/@smithy/middleware-serde/package.json new file mode 100644 index 0000000..029cd8d --- /dev/null +++ b/bff/node_modules/@smithy/middleware-serde/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/middleware-serde", + "version": "4.2.16", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-serde", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/core": "^3.23.13", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-serde", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-serde" + }, + "devDependencies": { + "@smithy/util-test": "^0.2.8", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/middleware-stack/LICENSE b/bff/node_modules/@smithy/middleware-stack/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/middleware-stack/README.md b/bff/node_modules/@smithy/middleware-stack/README.md new file mode 100644 index 0000000..c09d4d3 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/README.md @@ -0,0 +1,78 @@ +# @smithy/middleware-stack + +[![NPM version](https://img.shields.io/npm/v/@smithy/middleware-stack/latest.svg)](https://www.npmjs.com/package/@smithy/middleware-stack) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/middleware-stack.svg)](https://www.npmjs.com/package/@smithy/middleware-stack) + +The package contains an implementation of middleware stack interface. Middleware +stack is a structure storing middleware in specified order and resolve these +middleware into a single handler. + +A middleware stack has five `Step`s, each of them represents a specific request life cycle: + +- **initialize**: The input is being prepared. Examples of typical initialization tasks include injecting default options computing derived parameters. + +- **serialize**: The input is complete and ready to be serialized. Examples of typical serialization tasks include input validation and building an HTTP request from user input. + +- **build**: The input has been serialized into an HTTP request, but that request may require further modification. Any request alterations will be applied to all retries. Examples of typical build tasks include injecting HTTP headers that describe a stable aspect of the request, such as `Content-Length` or a body checksum. + +- **finalizeRequest**: The request is being prepared to be sent over the wire. The request in this stage should already be semantically complete and should therefore only be altered to match the recipient's expectations. Examples of typical finalization tasks include request signing and injecting hop-by-hop headers. + +- **deserialize**: The response has arrived, the middleware here will deserialize the raw response object to structured response + +## Adding Middleware + +There are two ways to add middleware to a middleware stack. They both add middleware to specified `Step` but they provide fine-grained location control differently. + +### Absolute Location + +You can add middleware to specified step with: + +```javascript +stack.add(middleware, { + step: "finalizeRequest", +}); +``` + +This approach works for most cases. Sometimes you want your middleware to be executed in the front of the `Step`, you can set the `Priority` to `high`. Set the `Priority` to `low` then this middleware will be executed at the end of `Step`: + +```javascript +stack.add(middleware, { + step: "finalizeRequest", + priority: "high", +}); +``` + +If multiple middleware is added to same `step` with same `priority`, the order of them is determined by the order of adding them. + +### Relative Location + +In some cases, you might want to execute your middleware before some other known middleware, then you can use `addRelativeTo()`: + +```javascript +stack.add(middleware, { + step: "finalizeRequest", + name: "myMiddleware", +}); +stack.addRelativeTo(anotherMiddleware, { + relation: "before", //or 'after' + toMiddleware: "myMiddleware", +}); +``` + +## Removing Middleware + +You can remove middleware by name one at a time: + +```javascript +stack.remove("Middleware1"); +``` + +If you specify tags for middleware, you can remove multiple middleware at a time according to tag: + +```javascript +stack.add(middleware, { + step: "finalizeRequest", + tags: ["final"], +}); +stack.removeByTag("final"); +``` diff --git a/bff/node_modules/@smithy/middleware-stack/dist-cjs/index.js b/bff/node_modules/@smithy/middleware-stack/dist-cjs/index.js new file mode 100644 index 0000000..b83cef5 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-cjs/index.js @@ -0,0 +1,285 @@ +'use strict'; + +const getAllAliases = (name, aliases) => { + const _aliases = []; + if (name) { + _aliases.push(name); + } + if (aliases) { + for (const alias of aliases) { + _aliases.push(alias); + } + } + return _aliases; +}; +const getMiddlewareNameWithAliases = (name, aliases) => { + return `${name || "anonymous"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(",")})` : ""}`; +}; +const constructStack = () => { + let absoluteEntries = []; + let relativeEntries = []; + let identifyOnResolve = false; + const entriesNameSet = new Set(); + const sort = (entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] || + priorityWeights[b.priority || "normal"] - priorityWeights[a.priority || "normal"]); + const removeByName = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + const aliases = getAllAliases(entry.name, entry.aliases); + if (aliases.includes(toRemove)) { + isRemoved = true; + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const removeByReference = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + if (entry.middleware === toRemove) { + isRemoved = true; + for (const alias of getAllAliases(entry.name, entry.aliases)) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const cloneTo = (toStack) => { + absoluteEntries.forEach((entry) => { + toStack.add(entry.middleware, { ...entry }); + }); + relativeEntries.forEach((entry) => { + toStack.addRelativeTo(entry.middleware, { ...entry }); + }); + toStack.identifyOnResolve?.(stack.identifyOnResolve()); + return toStack; + }; + const expandRelativeMiddlewareList = (from) => { + const expandedMiddlewareList = []; + from.before.forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } + else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + expandedMiddlewareList.push(from); + from.after.reverse().forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } + else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + return expandedMiddlewareList; + }; + const getMiddlewareList = (debug = false) => { + const normalizedAbsoluteEntries = []; + const normalizedRelativeEntries = []; + const normalizedEntriesNameMap = {}; + absoluteEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [], + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedAbsoluteEntries.push(normalizedEntry); + }); + relativeEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [], + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedRelativeEntries.push(normalizedEntry); + }); + normalizedRelativeEntries.forEach((entry) => { + if (entry.toMiddleware) { + const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware]; + if (toMiddleware === undefined) { + if (debug) { + return; + } + throw new Error(`${entry.toMiddleware} is not found when adding ` + + `${getMiddlewareNameWithAliases(entry.name, entry.aliases)} ` + + `middleware ${entry.relation} ${entry.toMiddleware}`); + } + if (entry.relation === "after") { + toMiddleware.after.push(entry); + } + if (entry.relation === "before") { + toMiddleware.before.push(entry); + } + } + }); + const mainChain = sort(normalizedAbsoluteEntries) + .map(expandRelativeMiddlewareList) + .reduce((wholeList, expandedMiddlewareList) => { + wholeList.push(...expandedMiddlewareList); + return wholeList; + }, []); + return mainChain; + }; + const stack = { + add: (middleware, options = {}) => { + const { name, override, aliases: _aliases } = options; + const entry = { + step: "initialize", + priority: "normal", + middleware, + ...options, + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = absoluteEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = absoluteEntries[toOverrideIndex]; + if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware with ` + + `${toOverride.priority} priority in ${toOverride.step} step cannot ` + + `be overridden by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware with ` + + `${entry.priority} priority in ${entry.step} step.`); + } + absoluteEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + absoluteEntries.push(entry); + }, + addRelativeTo: (middleware, options) => { + const { name, override, aliases: _aliases } = options; + const entry = { + middleware, + ...options, + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = relativeEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = relativeEntries[toOverrideIndex]; + if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware ` + + `${toOverride.relation} "${toOverride.toMiddleware}" middleware cannot be overridden ` + + `by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware ${entry.relation} ` + + `"${entry.toMiddleware}" middleware.`); + } + relativeEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + relativeEntries.push(entry); + }, + clone: () => cloneTo(constructStack()), + use: (plugin) => { + plugin.applyToStack(stack); + }, + remove: (toRemove) => { + if (typeof toRemove === "string") + return removeByName(toRemove); + else + return removeByReference(toRemove); + }, + removeByTag: (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + const { tags, name, aliases: _aliases } = entry; + if (tags && tags.includes(toRemove)) { + const aliases = getAllAliases(name, _aliases); + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + isRemoved = true; + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }, + concat: (from) => { + const cloned = cloneTo(constructStack()); + cloned.use(from); + cloned.identifyOnResolve(identifyOnResolve || cloned.identifyOnResolve() || (from.identifyOnResolve?.() ?? false)); + return cloned; + }, + applyToStack: cloneTo, + identify: () => { + return getMiddlewareList(true).map((mw) => { + const step = mw.step ?? + mw.relation + + " " + + mw.toMiddleware; + return getMiddlewareNameWithAliases(mw.name, mw.aliases) + " - " + step; + }); + }, + identifyOnResolve(toggle) { + if (typeof toggle === "boolean") + identifyOnResolve = toggle; + return identifyOnResolve; + }, + resolve: (handler, context) => { + for (const middleware of getMiddlewareList() + .map((entry) => entry.middleware) + .reverse()) { + handler = middleware(handler, context); + } + if (identifyOnResolve) { + console.log(stack.identify()); + } + return handler; + }, + }; + return stack; +}; +const stepWeights = { + initialize: 5, + serialize: 4, + build: 3, + finalizeRequest: 2, + deserialize: 1, +}; +const priorityWeights = { + high: 3, + normal: 2, + low: 1, +}; + +exports.constructStack = constructStack; diff --git a/bff/node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js b/bff/node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js new file mode 100644 index 0000000..2e02c73 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js @@ -0,0 +1,281 @@ +const getAllAliases = (name, aliases) => { + const _aliases = []; + if (name) { + _aliases.push(name); + } + if (aliases) { + for (const alias of aliases) { + _aliases.push(alias); + } + } + return _aliases; +}; +const getMiddlewareNameWithAliases = (name, aliases) => { + return `${name || "anonymous"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(",")})` : ""}`; +}; +export const constructStack = () => { + let absoluteEntries = []; + let relativeEntries = []; + let identifyOnResolve = false; + const entriesNameSet = new Set(); + const sort = (entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] || + priorityWeights[b.priority || "normal"] - priorityWeights[a.priority || "normal"]); + const removeByName = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + const aliases = getAllAliases(entry.name, entry.aliases); + if (aliases.includes(toRemove)) { + isRemoved = true; + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const removeByReference = (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + if (entry.middleware === toRemove) { + isRemoved = true; + for (const alias of getAllAliases(entry.name, entry.aliases)) { + entriesNameSet.delete(alias); + } + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }; + const cloneTo = (toStack) => { + absoluteEntries.forEach((entry) => { + toStack.add(entry.middleware, { ...entry }); + }); + relativeEntries.forEach((entry) => { + toStack.addRelativeTo(entry.middleware, { ...entry }); + }); + toStack.identifyOnResolve?.(stack.identifyOnResolve()); + return toStack; + }; + const expandRelativeMiddlewareList = (from) => { + const expandedMiddlewareList = []; + from.before.forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } + else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + expandedMiddlewareList.push(from); + from.after.reverse().forEach((entry) => { + if (entry.before.length === 0 && entry.after.length === 0) { + expandedMiddlewareList.push(entry); + } + else { + expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry)); + } + }); + return expandedMiddlewareList; + }; + const getMiddlewareList = (debug = false) => { + const normalizedAbsoluteEntries = []; + const normalizedRelativeEntries = []; + const normalizedEntriesNameMap = {}; + absoluteEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [], + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedAbsoluteEntries.push(normalizedEntry); + }); + relativeEntries.forEach((entry) => { + const normalizedEntry = { + ...entry, + before: [], + after: [], + }; + for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) { + normalizedEntriesNameMap[alias] = normalizedEntry; + } + normalizedRelativeEntries.push(normalizedEntry); + }); + normalizedRelativeEntries.forEach((entry) => { + if (entry.toMiddleware) { + const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware]; + if (toMiddleware === undefined) { + if (debug) { + return; + } + throw new Error(`${entry.toMiddleware} is not found when adding ` + + `${getMiddlewareNameWithAliases(entry.name, entry.aliases)} ` + + `middleware ${entry.relation} ${entry.toMiddleware}`); + } + if (entry.relation === "after") { + toMiddleware.after.push(entry); + } + if (entry.relation === "before") { + toMiddleware.before.push(entry); + } + } + }); + const mainChain = sort(normalizedAbsoluteEntries) + .map(expandRelativeMiddlewareList) + .reduce((wholeList, expandedMiddlewareList) => { + wholeList.push(...expandedMiddlewareList); + return wholeList; + }, []); + return mainChain; + }; + const stack = { + add: (middleware, options = {}) => { + const { name, override, aliases: _aliases } = options; + const entry = { + step: "initialize", + priority: "normal", + middleware, + ...options, + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = absoluteEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = absoluteEntries[toOverrideIndex]; + if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware with ` + + `${toOverride.priority} priority in ${toOverride.step} step cannot ` + + `be overridden by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware with ` + + `${entry.priority} priority in ${entry.step} step.`); + } + absoluteEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + absoluteEntries.push(entry); + }, + addRelativeTo: (middleware, options) => { + const { name, override, aliases: _aliases } = options; + const entry = { + middleware, + ...options, + }; + const aliases = getAllAliases(name, _aliases); + if (aliases.length > 0) { + if (aliases.some((alias) => entriesNameSet.has(alias))) { + if (!override) + throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`); + for (const alias of aliases) { + const toOverrideIndex = relativeEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias)); + if (toOverrideIndex === -1) { + continue; + } + const toOverride = relativeEntries[toOverrideIndex]; + if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) { + throw new Error(`"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}" middleware ` + + `${toOverride.relation} "${toOverride.toMiddleware}" middleware cannot be overridden ` + + `by "${getMiddlewareNameWithAliases(name, _aliases)}" middleware ${entry.relation} ` + + `"${entry.toMiddleware}" middleware.`); + } + relativeEntries.splice(toOverrideIndex, 1); + } + } + for (const alias of aliases) { + entriesNameSet.add(alias); + } + } + relativeEntries.push(entry); + }, + clone: () => cloneTo(constructStack()), + use: (plugin) => { + plugin.applyToStack(stack); + }, + remove: (toRemove) => { + if (typeof toRemove === "string") + return removeByName(toRemove); + else + return removeByReference(toRemove); + }, + removeByTag: (toRemove) => { + let isRemoved = false; + const filterCb = (entry) => { + const { tags, name, aliases: _aliases } = entry; + if (tags && tags.includes(toRemove)) { + const aliases = getAllAliases(name, _aliases); + for (const alias of aliases) { + entriesNameSet.delete(alias); + } + isRemoved = true; + return false; + } + return true; + }; + absoluteEntries = absoluteEntries.filter(filterCb); + relativeEntries = relativeEntries.filter(filterCb); + return isRemoved; + }, + concat: (from) => { + const cloned = cloneTo(constructStack()); + cloned.use(from); + cloned.identifyOnResolve(identifyOnResolve || cloned.identifyOnResolve() || (from.identifyOnResolve?.() ?? false)); + return cloned; + }, + applyToStack: cloneTo, + identify: () => { + return getMiddlewareList(true).map((mw) => { + const step = mw.step ?? + mw.relation + + " " + + mw.toMiddleware; + return getMiddlewareNameWithAliases(mw.name, mw.aliases) + " - " + step; + }); + }, + identifyOnResolve(toggle) { + if (typeof toggle === "boolean") + identifyOnResolve = toggle; + return identifyOnResolve; + }, + resolve: (handler, context) => { + for (const middleware of getMiddlewareList() + .map((entry) => entry.middleware) + .reverse()) { + handler = middleware(handler, context); + } + if (identifyOnResolve) { + console.log(stack.identify()); + } + return handler; + }, + }; + return stack; +}; +const stepWeights = { + initialize: 5, + serialize: 4, + build: 3, + finalizeRequest: 2, + deserialize: 1, +}; +const priorityWeights = { + high: 3, + normal: 2, + low: 1, +}; diff --git a/bff/node_modules/@smithy/middleware-stack/dist-es/index.js b/bff/node_modules/@smithy/middleware-stack/dist-es/index.js new file mode 100644 index 0000000..16f56ce --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-es/index.js @@ -0,0 +1 @@ +export * from "./MiddlewareStack"; diff --git a/bff/node_modules/@smithy/middleware-stack/dist-es/types.js b/bff/node_modules/@smithy/middleware-stack/dist-es/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/middleware-stack/dist-types/MiddlewareStack.d.ts b/bff/node_modules/@smithy/middleware-stack/dist-types/MiddlewareStack.d.ts new file mode 100644 index 0000000..3ea837b --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-types/MiddlewareStack.d.ts @@ -0,0 +1,5 @@ +import type { MiddlewareStack } from "@smithy/types"; +/** + * @internal + */ +export declare const constructStack: () => MiddlewareStack; diff --git a/bff/node_modules/@smithy/middleware-stack/dist-types/index.d.ts b/bff/node_modules/@smithy/middleware-stack/dist-types/index.d.ts new file mode 100644 index 0000000..16f56ce --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-types/index.d.ts @@ -0,0 +1 @@ +export * from "./MiddlewareStack"; diff --git a/bff/node_modules/@smithy/middleware-stack/dist-types/ts3.4/MiddlewareStack.d.ts b/bff/node_modules/@smithy/middleware-stack/dist-types/ts3.4/MiddlewareStack.d.ts new file mode 100644 index 0000000..d93ce93 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-types/ts3.4/MiddlewareStack.d.ts @@ -0,0 +1,5 @@ +import { MiddlewareStack } from "@smithy/types"; +/** + * @internal + */ +export declare const constructStack: () => MiddlewareStack; diff --git a/bff/node_modules/@smithy/middleware-stack/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/middleware-stack/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..d906b7d --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./MiddlewareStack"; diff --git a/bff/node_modules/@smithy/middleware-stack/dist-types/ts3.4/types.d.ts b/bff/node_modules/@smithy/middleware-stack/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..38eb54c --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-types/ts3.4/types.d.ts @@ -0,0 +1,22 @@ +import { AbsoluteLocation, HandlerOptions, MiddlewareType, Priority, RelativeLocation, Step } from "@smithy/types"; +export interface MiddlewareEntry extends HandlerOptions { + middleware: MiddlewareType; +} +export interface AbsoluteMiddlewareEntry extends MiddlewareEntry, AbsoluteLocation { + step: Step; + priority: Priority; +} +export interface RelativeMiddlewareEntry extends MiddlewareEntry, RelativeLocation { +} +export type Normalized, Input extends object = {}, Output extends object = {}> = T & { + after: Normalized, Input, Output>[]; + before: Normalized, Input, Output>[]; +}; +export interface NormalizedRelativeEntry extends HandlerOptions { + step: Step; + middleware: MiddlewareType; + next?: NormalizedRelativeEntry; + prev?: NormalizedRelativeEntry; + priority: null; +} +export type NamedMiddlewareEntriesMap = Record>; diff --git a/bff/node_modules/@smithy/middleware-stack/dist-types/types.d.ts b/bff/node_modules/@smithy/middleware-stack/dist-types/types.d.ts new file mode 100644 index 0000000..4c5e581 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/dist-types/types.d.ts @@ -0,0 +1,22 @@ +import type { AbsoluteLocation, HandlerOptions, MiddlewareType, Priority, RelativeLocation, Step } from "@smithy/types"; +export interface MiddlewareEntry extends HandlerOptions { + middleware: MiddlewareType; +} +export interface AbsoluteMiddlewareEntry extends MiddlewareEntry, AbsoluteLocation { + step: Step; + priority: Priority; +} +export interface RelativeMiddlewareEntry extends MiddlewareEntry, RelativeLocation { +} +export type Normalized, Input extends object = {}, Output extends object = {}> = T & { + after: Normalized, Input, Output>[]; + before: Normalized, Input, Output>[]; +}; +export interface NormalizedRelativeEntry extends HandlerOptions { + step: Step; + middleware: MiddlewareType; + next?: NormalizedRelativeEntry; + prev?: NormalizedRelativeEntry; + priority: null; +} +export type NamedMiddlewareEntriesMap = Record>; diff --git a/bff/node_modules/@smithy/middleware-stack/package.json b/bff/node_modules/@smithy/middleware-stack/package.json new file mode 100644 index 0000000..5391ef8 --- /dev/null +++ b/bff/node_modules/@smithy/middleware-stack/package.json @@ -0,0 +1,64 @@ +{ + "name": "@smithy/middleware-stack", + "version": "4.2.12", + "description": "Provides a means for composing multiple middleware functions into a single handler", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline middleware-stack", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/middleware-stack", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/middleware-stack" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/node-config-provider/LICENSE b/bff/node_modules/@smithy/node-config-provider/LICENSE new file mode 100644 index 0000000..74d4e5c --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/node-config-provider/README.md b/bff/node_modules/@smithy/node-config-provider/README.md new file mode 100644 index 0000000..ea695a6 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/README.md @@ -0,0 +1,10 @@ +# @smithy/node-config-provider + +[![NPM version](https://img.shields.io/npm/v/@smithy/node-config-provider/latest.svg)](https://www.npmjs.com/package/@smithy/node-config-provider) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/node-config-provider.svg)](https://www.npmjs.com/package/@smithy/node-config-provider) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/node-config-provider/dist-cjs/index.js b/bff/node_modules/@smithy/node-config-provider/dist-cjs/index.js new file mode 100644 index 0000000..b68e543 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-cjs/index.js @@ -0,0 +1,62 @@ +'use strict'; + +var propertyProvider = require('@smithy/property-provider'); +var sharedIniFileLoader = require('@smithy/shared-ini-file-loader'); + +function getSelectorName(functionString) { + try { + const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? [])); + constants.delete("CONFIG"); + constants.delete("CONFIG_PREFIX_SEPARATOR"); + constants.delete("ENV"); + return [...constants].join(", "); + } + catch (e) { + return functionString; + } +} + +const fromEnv = (envVarSelector, options) => async () => { + try { + const config = envVarSelector(process.env, options); + if (config === undefined) { + throw new Error(); + } + return config; + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`, { logger: options?.logger }); + } +}; + +const fromSharedConfigFiles = (configSelector, { preferredFile = "config", ...init } = {}) => async () => { + const profile = sharedIniFileLoader.getProfileName(init); + const { configFile, credentialsFile } = await sharedIniFileLoader.loadSharedConfigFiles(init); + const profileFromCredentials = credentialsFile[profile] || {}; + const profileFromConfig = configFile[profile] || {}; + const mergedProfile = preferredFile === "config" + ? { ...profileFromCredentials, ...profileFromConfig } + : { ...profileFromConfig, ...profileFromCredentials }; + try { + const cfgFile = preferredFile === "config" ? configFile : credentialsFile; + const configValue = configSelector(mergedProfile, cfgFile); + if (configValue === undefined) { + throw new Error(); + } + return configValue; + } + catch (e) { + throw new propertyProvider.CredentialsProviderError(e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`, { logger: init.logger }); + } +}; + +const isFunction = (func) => typeof func === "function"; +const fromStatic = (defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : propertyProvider.fromStatic(defaultValue); + +const loadConfig = ({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => { + const { signingName, logger } = configuration; + const envOptions = { signingName, logger }; + return propertyProvider.memoize(propertyProvider.chain(fromEnv(environmentVariableSelector, envOptions), fromSharedConfigFiles(configFileSelector, configuration), fromStatic(defaultValue))); +}; + +exports.loadConfig = loadConfig; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-es/configLoader.js b/bff/node_modules/@smithy/node-config-provider/dist-es/configLoader.js new file mode 100644 index 0000000..4588a08 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-es/configLoader.js @@ -0,0 +1,9 @@ +import { chain, memoize } from "@smithy/property-provider"; +import { fromEnv } from "./fromEnv"; +import { fromSharedConfigFiles } from "./fromSharedConfigFiles"; +import { fromStatic } from "./fromStatic"; +export const loadConfig = ({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => { + const { signingName, logger } = configuration; + const envOptions = { signingName, logger }; + return memoize(chain(fromEnv(environmentVariableSelector, envOptions), fromSharedConfigFiles(configFileSelector, configuration), fromStatic(defaultValue))); +}; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-es/fromEnv.js b/bff/node_modules/@smithy/node-config-provider/dist-es/fromEnv.js new file mode 100644 index 0000000..f107bc3 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-es/fromEnv.js @@ -0,0 +1,14 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getSelectorName } from "./getSelectorName"; +export const fromEnv = (envVarSelector, options) => async () => { + try { + const config = envVarSelector(process.env, options); + if (config === undefined) { + throw new Error(); + } + return config; + } + catch (e) { + throw new CredentialsProviderError(e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`, { logger: options?.logger }); + } +}; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js b/bff/node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js new file mode 100644 index 0000000..b6435ed --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js @@ -0,0 +1,23 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName, loadSharedConfigFiles } from "@smithy/shared-ini-file-loader"; +import { getSelectorName } from "./getSelectorName"; +export const fromSharedConfigFiles = (configSelector, { preferredFile = "config", ...init } = {}) => async () => { + const profile = getProfileName(init); + const { configFile, credentialsFile } = await loadSharedConfigFiles(init); + const profileFromCredentials = credentialsFile[profile] || {}; + const profileFromConfig = configFile[profile] || {}; + const mergedProfile = preferredFile === "config" + ? { ...profileFromCredentials, ...profileFromConfig } + : { ...profileFromConfig, ...profileFromCredentials }; + try { + const cfgFile = preferredFile === "config" ? configFile : credentialsFile; + const configValue = configSelector(mergedProfile, cfgFile); + if (configValue === undefined) { + throw new Error(); + } + return configValue; + } + catch (e) { + throw new CredentialsProviderError(e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`, { logger: init.logger }); + } +}; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-es/fromStatic.js b/bff/node_modules/@smithy/node-config-provider/dist-es/fromStatic.js new file mode 100644 index 0000000..c9f91ff --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-es/fromStatic.js @@ -0,0 +1,3 @@ +import { fromStatic as convertToProvider } from "@smithy/property-provider"; +const isFunction = (func) => typeof func === "function"; +export const fromStatic = (defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : convertToProvider(defaultValue); diff --git a/bff/node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js b/bff/node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js new file mode 100644 index 0000000..d5e0f78 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js @@ -0,0 +1,12 @@ +export function getSelectorName(functionString) { + try { + const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? [])); + constants.delete("CONFIG"); + constants.delete("CONFIG_PREFIX_SEPARATOR"); + constants.delete("ENV"); + return [...constants].join(", "); + } + catch (e) { + return functionString; + } +} diff --git a/bff/node_modules/@smithy/node-config-provider/dist-es/index.js b/bff/node_modules/@smithy/node-config-provider/dist-es/index.js new file mode 100644 index 0000000..2d035d9 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-es/index.js @@ -0,0 +1 @@ +export * from "./configLoader"; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/configLoader.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/configLoader.d.ts new file mode 100644 index 0000000..bc46789 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/configLoader.d.ts @@ -0,0 +1,31 @@ +import type { Provider } from "@smithy/types"; +import type { EnvOptions, GetterFromEnv } from "./fromEnv"; +import type { GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles"; +import type { FromStaticConfig } from "./fromStatic"; +/** + * @internal + */ +export type LocalConfigOptions = SharedConfigInit & EnvOptions; +/** + * @internal + */ +export interface LoadedConfigSelectors { + /** + * A getter function getting the config values from all the environment + * variables. + */ + environmentVariableSelector: GetterFromEnv; + /** + * A getter function getting config values associated with the inferred + * profile from shared INI files + */ + configFileSelector: GetterFromConfig; + /** + * Default value or getter + */ + default: FromStaticConfig; +} +/** + * @internal + */ +export declare const loadConfig: ({ environmentVariableSelector, configFileSelector, default: defaultValue }: LoadedConfigSelectors, configuration?: LocalConfigOptions) => Provider; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/fromEnv.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/fromEnv.d.ts new file mode 100644 index 0000000..92f06f2 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/fromEnv.d.ts @@ -0,0 +1,20 @@ +import type { Logger, Provider } from "@smithy/types"; +/** + * @internal + */ +export interface EnvOptions { + /** + * The SigV4 service signing name. + */ + signingName?: string; + /** + * For credential resolution trace logging. + */ + logger?: Logger; +} +export type GetterFromEnv = (env: Record, options?: EnvOptions) => T | undefined; +/** + * Get config value given the environment variable name or getter from + * environment variable. + */ +export declare const fromEnv: (envVarSelector: GetterFromEnv, options?: EnvOptions) => Provider; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/fromSharedConfigFiles.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/fromSharedConfigFiles.d.ts new file mode 100644 index 0000000..55bc210 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/fromSharedConfigFiles.d.ts @@ -0,0 +1,22 @@ +import type { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import type { ParsedIniData, Profile, Provider } from "@smithy/types"; +/** + * @internal + */ +export interface SharedConfigInit extends SourceProfileInit { + /** + * The preferred shared ini file to load the config. "config" option refers to + * the shared config file(defaults to `~/.aws/config`). "credentials" option + * refers to the shared credentials file(defaults to `~/.aws/credentials`) + */ + preferredFile?: "config" | "credentials"; +} +/** + * @internal + */ +export type GetterFromConfig = (profile: Profile, configFile?: ParsedIniData) => T | undefined; +/** + * Get config value from the shared config files with inferred profile name. + * @internal + */ +export declare const fromSharedConfigFiles: (configSelector: GetterFromConfig, { preferredFile, ...init }?: SharedConfigInit) => Provider; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/fromStatic.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/fromStatic.d.ts new file mode 100644 index 0000000..caa50fc --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/fromStatic.d.ts @@ -0,0 +1,9 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export type FromStaticConfig = T | (() => T) | Provider; +/** + * @internal + */ +export declare const fromStatic: (defaultValue: FromStaticConfig) => Provider; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/getSelectorName.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/getSelectorName.d.ts new file mode 100644 index 0000000..b5f1a1b --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/getSelectorName.d.ts @@ -0,0 +1,9 @@ +/** + * Attempts to extract the name of the variable that the functional selector is looking for. + * Improves readability over the raw Function.toString() value. + * @internal + * @param functionString - function's string representation. + * + * @returns constant value used within the function. + */ +export declare function getSelectorName(functionString: string): string; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/index.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/index.d.ts new file mode 100644 index 0000000..cd54cfa --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/index.d.ts @@ -0,0 +1,4 @@ +export * from "./configLoader"; +export { EnvOptions, GetterFromEnv } from "./fromEnv"; +export { GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles"; +export { FromStaticConfig } from "./fromStatic"; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/configLoader.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/configLoader.d.ts new file mode 100644 index 0000000..d344495 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/configLoader.d.ts @@ -0,0 +1,31 @@ +import { Provider } from "@smithy/types"; +import { EnvOptions, GetterFromEnv } from "./fromEnv"; +import { GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles"; +import { FromStaticConfig } from "./fromStatic"; +/** + * @internal + */ +export type LocalConfigOptions = SharedConfigInit & EnvOptions; +/** + * @internal + */ +export interface LoadedConfigSelectors { + /** + * A getter function getting the config values from all the environment + * variables. + */ + environmentVariableSelector: GetterFromEnv; + /** + * A getter function getting config values associated with the inferred + * profile from shared INI files + */ + configFileSelector: GetterFromConfig; + /** + * Default value or getter + */ + default: FromStaticConfig; +} +/** + * @internal + */ +export declare const loadConfig: ({ environmentVariableSelector, configFileSelector, default: defaultValue }: LoadedConfigSelectors, configuration?: LocalConfigOptions) => Provider; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromEnv.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromEnv.d.ts new file mode 100644 index 0000000..50be44d --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromEnv.d.ts @@ -0,0 +1,20 @@ +import { Logger, Provider } from "@smithy/types"; +/** + * @internal + */ +export interface EnvOptions { + /** + * The SigV4 service signing name. + */ + signingName?: string; + /** + * For credential resolution trace logging. + */ + logger?: Logger; +} +export type GetterFromEnv = (env: Record, options?: EnvOptions) => T | undefined; +/** + * Get config value given the environment variable name or getter from + * environment variable. + */ +export declare const fromEnv: (envVarSelector: GetterFromEnv, options?: EnvOptions) => Provider; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts new file mode 100644 index 0000000..aa0efa0 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromSharedConfigFiles.d.ts @@ -0,0 +1,22 @@ +import { SourceProfileInit } from "@smithy/shared-ini-file-loader"; +import { ParsedIniData, Profile, Provider } from "@smithy/types"; +/** + * @internal + */ +export interface SharedConfigInit extends SourceProfileInit { + /** + * The preferred shared ini file to load the config. "config" option refers to + * the shared config file(defaults to `~/.aws/config`). "credentials" option + * refers to the shared credentials file(defaults to `~/.aws/credentials`) + */ + preferredFile?: "config" | "credentials"; +} +/** + * @internal + */ +export type GetterFromConfig = (profile: Profile, configFile?: ParsedIniData) => T | undefined; +/** + * Get config value from the shared config files with inferred profile name. + * @internal + */ +export declare const fromSharedConfigFiles: (configSelector: GetterFromConfig, { preferredFile, ...init }?: SharedConfigInit) => Provider; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromStatic.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromStatic.d.ts new file mode 100644 index 0000000..a4bab2d --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/fromStatic.d.ts @@ -0,0 +1,9 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export type FromStaticConfig = T | (() => T) | Provider; +/** + * @internal + */ +export declare const fromStatic: (defaultValue: FromStaticConfig) => Provider; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts new file mode 100644 index 0000000..11c5da2 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/getSelectorName.d.ts @@ -0,0 +1,9 @@ +/** + * Attempts to extract the name of the variable that the functional selector is looking for. + * Improves readability over the raw Function.toString() value. + * @internal + * @param functionString - function's string representation. + * + * @returns constant value used within the function. + */ +export declare function getSelectorName(functionString: string): string; diff --git a/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..e3f28b3 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +export * from "./configLoader"; +export { EnvOptions, GetterFromEnv } from "./fromEnv"; +export { GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles"; +export { FromStaticConfig } from "./fromStatic"; diff --git a/bff/node_modules/@smithy/node-config-provider/package.json b/bff/node_modules/@smithy/node-config-provider/package.json new file mode 100644 index 0000000..2e9b375 --- /dev/null +++ b/bff/node_modules/@smithy/node-config-provider/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/node-config-provider", + "version": "4.3.12", + "description": "Load config default values from ini config files and environmental variable", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline node-config-provider", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/node-config-provider", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/node-config-provider" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/node-http-handler/LICENSE b/bff/node_modules/@smithy/node-http-handler/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/node-http-handler/README.md b/bff/node_modules/@smithy/node-http-handler/README.md new file mode 100644 index 0000000..214719f --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/README.md @@ -0,0 +1,9 @@ +# @smithy/node-http-handler + +[![NPM version](https://img.shields.io/npm/v/@smithy/node-http-handler/latest.svg)](https://www.npmjs.com/package/@smithy/node-http-handler) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/node-http-handler.svg)](https://www.npmjs.com/package/@smithy/node-http-handler) + +This package implements the default `requestHandler` for Node.js using `node:http`, `node:https`, and `node:http2`. + +For an example on how `requestHandler`s are used by Smithy generated SDK clients, refer to +the [AWS SDK for JavaScript (v3) supplemental docs](https://github.com/aws/aws-sdk-js-v3/blob/main/supplemental-docs/CLIENTS.md#request-handler-requesthandler). diff --git a/bff/node_modules/@smithy/node-http-handler/dist-cjs/index.js b/bff/node_modules/@smithy/node-http-handler/dist-cjs/index.js new file mode 100644 index 0000000..0763647 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-cjs/index.js @@ -0,0 +1,762 @@ +'use strict'; + +var protocolHttp = require('@smithy/protocol-http'); +var querystringBuilder = require('@smithy/querystring-builder'); +var node_https = require('node:https'); +var node_stream = require('node:stream'); +var http2 = require('node:http2'); + +function buildAbortError(abortSignal) { + const reason = abortSignal && typeof abortSignal === "object" && "reason" in abortSignal + ? abortSignal.reason + : undefined; + if (reason) { + if (reason instanceof Error) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + abortError.cause = reason; + return abortError; + } + const abortError = new Error(String(reason)); + abortError.name = "AbortError"; + return abortError; + } + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return abortError; +} + +const NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "EPIPE", "ETIMEDOUT"]; + +const getTransformedHeaders = (headers) => { + const transformedHeaders = {}; + for (const name of Object.keys(headers)) { + const headerValues = headers[name]; + transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(",") : headerValues; + } + return transformedHeaders; +}; + +const timing = { + setTimeout: (cb, ms) => setTimeout(cb, ms), + clearTimeout: (timeoutId) => clearTimeout(timeoutId), +}; + +const DEFER_EVENT_LISTENER_TIME$2 = 1000; +const setConnectionTimeout = (request, reject, timeoutInMs = 0) => { + if (!timeoutInMs) { + return -1; + } + const registerTimeout = (offset) => { + const timeoutId = timing.setTimeout(() => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${timeoutInMs} ms.`), { + name: "TimeoutError", + })); + }, timeoutInMs - offset); + const doWithSocket = (socket) => { + if (socket?.connecting) { + socket.on("connect", () => { + timing.clearTimeout(timeoutId); + }); + } + else { + timing.clearTimeout(timeoutId); + } + }; + if (request.socket) { + doWithSocket(request.socket); + } + else { + request.on("socket", doWithSocket); + } + }; + if (timeoutInMs < 2000) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME$2), DEFER_EVENT_LISTENER_TIME$2); +}; + +const setRequestTimeout = (req, reject, timeoutInMs = 0, throwOnRequestTimeout, logger) => { + if (timeoutInMs) { + return timing.setTimeout(() => { + let msg = `@smithy/node-http-handler - [${throwOnRequestTimeout ? "ERROR" : "WARN"}] a request has exceeded the configured ${timeoutInMs} ms requestTimeout.`; + if (throwOnRequestTimeout) { + const error = Object.assign(new Error(msg), { + name: "TimeoutError", + code: "ETIMEDOUT", + }); + req.destroy(error); + reject(error); + } + else { + msg += ` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`; + logger?.warn?.(msg); + } + }, timeoutInMs); + } + return -1; +}; + +const DEFER_EVENT_LISTENER_TIME$1 = 3000; +const setSocketKeepAlive = (request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME$1) => { + if (keepAlive !== true) { + return -1; + } + const registerListener = () => { + if (request.socket) { + request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + } + else { + request.on("socket", (socket) => { + socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + }); + } + }; + if (deferTimeMs === 0) { + registerListener(); + return 0; + } + return timing.setTimeout(registerListener, deferTimeMs); +}; + +const DEFER_EVENT_LISTENER_TIME = 3000; +const setSocketTimeout = (request, reject, timeoutInMs = 0) => { + const registerTimeout = (offset) => { + const timeout = timeoutInMs - offset; + const onTimeout = () => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket timed out after ${timeoutInMs} ms of inactivity (configured by client requestHandler).`), { name: "TimeoutError" })); + }; + if (request.socket) { + request.socket.setTimeout(timeout, onTimeout); + request.on("close", () => request.socket?.removeListener("timeout", onTimeout)); + } + else { + request.setTimeout(timeout, onTimeout); + } + }; + if (0 < timeoutInMs && timeoutInMs < 6000) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); +}; + +const MIN_WAIT_TIME = 6_000; +async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME, externalAgent = false) { + const headers = request.headers ?? {}; + const expect = headers.Expect || headers.expect; + let timeoutId = -1; + let sendBody = true; + if (!externalAgent && expect === "100-continue") { + sendBody = await Promise.race([ + new Promise((resolve) => { + timeoutId = Number(timing.setTimeout(() => resolve(true), Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs))); + }), + new Promise((resolve) => { + httpRequest.on("continue", () => { + timing.clearTimeout(timeoutId); + resolve(true); + }); + httpRequest.on("response", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + httpRequest.on("error", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + }), + ]); + } + if (sendBody) { + writeBody(httpRequest, request.body); + } +} +function writeBody(httpRequest, body) { + if (body instanceof node_stream.Readable) { + body.pipe(httpRequest); + return; + } + if (body) { + const isBuffer = Buffer.isBuffer(body); + const isString = typeof body === "string"; + if (isBuffer || isString) { + if (isBuffer && body.byteLength === 0) { + httpRequest.end(); + } + else { + httpRequest.end(body); + } + return; + } + const uint8 = body; + if (typeof uint8 === "object" && + uint8.buffer && + typeof uint8.byteOffset === "number" && + typeof uint8.byteLength === "number") { + httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength)); + return; + } + httpRequest.end(Buffer.from(body)); + return; + } + httpRequest.end(); +} + +const DEFAULT_REQUEST_TIMEOUT = 0; +let hAgent = undefined; +let hRequest = undefined; +class NodeHttpHandler { + config; + configProvider; + socketWarningTimestamp = 0; + externalAgent = false; + metadata = { handlerProtocol: "http/1.1" }; + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new NodeHttpHandler(instanceOrOptions); + } + static checkSocketUsage(agent, socketWarningTimestamp, logger = console) { + const { sockets, requests, maxSockets } = agent; + if (typeof maxSockets !== "number" || maxSockets === Infinity) { + return socketWarningTimestamp; + } + const interval = 15_000; + if (Date.now() - interval < socketWarningTimestamp) { + return socketWarningTimestamp; + } + if (sockets && requests) { + for (const origin in sockets) { + const socketsInUse = sockets[origin]?.length ?? 0; + const requestsEnqueued = requests[origin]?.length ?? 0; + if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) { + logger?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued. +See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html +or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`); + return Date.now(); + } + } + } + return socketWarningTimestamp; + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options() + .then((_options) => { + resolve(this.resolveDefaultConfig(_options)); + }) + .catch(reject); + } + else { + resolve(this.resolveDefaultConfig(options)); + } + }); + } + destroy() { + this.config?.httpAgent?.destroy(); + this.config?.httpsAgent?.destroy(); + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + const config = this.config; + const isSSL = request.protocol === "https:"; + if (!isSSL && !this.config.httpAgent) { + this.config.httpAgent = await this.config.httpAgentProvider(); + } + return new Promise((_resolve, _reject) => { + let writeRequestBodyPromise = undefined; + const timeouts = []; + const resolve = async (arg) => { + await writeRequestBodyPromise; + timeouts.forEach(timing.clearTimeout); + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + timeouts.forEach(timing.clearTimeout); + _reject(arg); + }; + if (abortSignal?.aborted) { + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const headers = request.headers ?? {}; + const expectContinue = (headers.Expect ?? headers.expect) === "100-continue"; + let agent = isSSL ? config.httpsAgent : config.httpAgent; + if (expectContinue && !this.externalAgent) { + agent = new (isSSL ? node_https.Agent : hAgent)({ + keepAlive: false, + maxSockets: Infinity, + }); + } + timeouts.push(timing.setTimeout(() => { + this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, config.logger); + }, config.socketAcquisitionWarningTimeout ?? (config.requestTimeout ?? 2000) + (config.connectionTimeout ?? 1000))); + const queryString = querystringBuilder.buildQueryString(request.query || {}); + let auth = undefined; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}`; + } + let path = request.path; + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + let hostname = request.hostname ?? ""; + if (hostname[0] === "[" && hostname.endsWith("]")) { + hostname = request.hostname.slice(1, -1); + } + else { + hostname = request.hostname; + } + const nodeHttpsOptions = { + headers: request.headers, + host: hostname, + method: request.method, + path, + port: request.port, + agent, + auth, + }; + const requestFunc = isSSL ? node_https.request : hRequest; + const req = requestFunc(nodeHttpsOptions, (res) => { + const httpResponse = new protocolHttp.HttpResponse({ + statusCode: res.statusCode || -1, + reason: res.statusMessage, + headers: getTransformedHeaders(res.headers), + body: res, + }); + resolve({ response: httpResponse }); + }); + req.on("error", (err) => { + if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) { + reject(Object.assign(err, { name: "TimeoutError" })); + } + else { + reject(err); + } + }); + if (abortSignal) { + const onAbort = () => { + req.destroy(); + const abortError = buildAbortError(abortSignal); + reject(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + req.once("close", () => signal.removeEventListener("abort", onAbort)); + } + else { + abortSignal.onabort = onAbort; + } + } + const effectiveRequestTimeout = requestTimeout ?? config.requestTimeout; + timeouts.push(setConnectionTimeout(req, reject, config.connectionTimeout)); + timeouts.push(setRequestTimeout(req, reject, effectiveRequestTimeout, config.throwOnRequestTimeout, config.logger ?? console)); + timeouts.push(setSocketTimeout(req, reject, config.socketTimeout)); + const httpAgent = nodeHttpsOptions.agent; + if (typeof httpAgent === "object" && "keepAlive" in httpAgent) { + timeouts.push(setSocketKeepAlive(req, { + keepAlive: httpAgent.keepAlive, + keepAliveMsecs: httpAgent.keepAliveMsecs, + })); + } + writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout, this.externalAgent).catch((e) => { + timeouts.forEach(timing.clearTimeout); + return _reject(e); + }); + }); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + return { + ...config, + [key]: value, + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } + resolveDefaultConfig(options) { + const { requestTimeout, connectionTimeout, socketTimeout, socketAcquisitionWarningTimeout, httpAgent, httpsAgent, throwOnRequestTimeout, logger, } = options || {}; + const keepAlive = true; + const maxSockets = 50; + return { + connectionTimeout, + requestTimeout, + socketTimeout, + socketAcquisitionWarningTimeout, + throwOnRequestTimeout, + httpAgentProvider: async () => { + const { Agent, request } = await import('node:http'); + hRequest = request; + hAgent = Agent; + if (httpAgent instanceof hAgent || typeof httpAgent?.destroy === "function") { + this.externalAgent = true; + return httpAgent; + } + return new hAgent({ keepAlive, maxSockets, ...httpAgent }); + }, + httpsAgent: (() => { + if (httpsAgent instanceof node_https.Agent || typeof httpsAgent?.destroy === "function") { + this.externalAgent = true; + return httpsAgent; + } + return new node_https.Agent({ keepAlive, maxSockets, ...httpsAgent }); + })(), + logger, + }; + } +} + +class NodeHttp2ConnectionPool { + sessions = []; + constructor(sessions) { + this.sessions = sessions ?? []; + } + poll() { + if (this.sessions.length > 0) { + return this.sessions.shift(); + } + } + offerLast(session) { + this.sessions.push(session); + } + contains(session) { + return this.sessions.includes(session); + } + remove(session) { + this.sessions = this.sessions.filter((s) => s !== session); + } + [Symbol.iterator]() { + return this.sessions[Symbol.iterator](); + } + destroy(connection) { + for (const session of this.sessions) { + if (session === connection) { + if (!session.destroyed) { + session.destroy(); + } + } + } + } +} + +class NodeHttp2ConnectionManager { + constructor(config) { + this.config = config; + if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) { + throw new RangeError("maxConcurrency must be greater than zero."); + } + } + config; + sessionCache = new Map(); + lease(requestContext, connectionConfiguration) { + const url = this.getUrlString(requestContext); + const existingPool = this.sessionCache.get(url); + if (existingPool) { + const existingSession = existingPool.poll(); + if (existingSession && !this.config.disableConcurrency) { + return existingSession; + } + } + const session = http2.connect(url); + if (this.config.maxConcurrency) { + session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => { + if (err) { + throw new Error("Fail to set maxConcurrentStreams to " + + this.config.maxConcurrency + + "when creating new session for " + + requestContext.destination.toString()); + } + }); + } + session.unref(); + const destroySessionCb = () => { + session.destroy(); + this.deleteSession(url, session); + }; + session.on("goaway", destroySessionCb); + session.on("error", destroySessionCb); + session.on("frameError", destroySessionCb); + session.on("close", () => this.deleteSession(url, session)); + if (connectionConfiguration.requestTimeout) { + session.setTimeout(connectionConfiguration.requestTimeout, destroySessionCb); + } + const connectionPool = this.sessionCache.get(url) || new NodeHttp2ConnectionPool(); + connectionPool.offerLast(session); + this.sessionCache.set(url, connectionPool); + return session; + } + deleteSession(authority, session) { + const existingConnectionPool = this.sessionCache.get(authority); + if (!existingConnectionPool) { + return; + } + if (!existingConnectionPool.contains(session)) { + return; + } + existingConnectionPool.remove(session); + this.sessionCache.set(authority, existingConnectionPool); + } + release(requestContext, session) { + const cacheKey = this.getUrlString(requestContext); + this.sessionCache.get(cacheKey)?.offerLast(session); + } + destroy() { + for (const [key, connectionPool] of this.sessionCache) { + for (const session of connectionPool) { + if (!session.destroyed) { + session.destroy(); + } + connectionPool.remove(session); + } + this.sessionCache.delete(key); + } + } + setMaxConcurrentStreams(maxConcurrentStreams) { + if (maxConcurrentStreams && maxConcurrentStreams <= 0) { + throw new RangeError("maxConcurrentStreams must be greater than zero."); + } + this.config.maxConcurrency = maxConcurrentStreams; + } + setDisableConcurrentStreams(disableConcurrentStreams) { + this.config.disableConcurrency = disableConcurrentStreams; + } + getUrlString(request) { + return request.destination.toString(); + } +} + +class NodeHttp2Handler { + config; + configProvider; + metadata = { handlerProtocol: "h2" }; + connectionManager = new NodeHttp2ConnectionManager({}); + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new NodeHttp2Handler(instanceOrOptions); + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options() + .then((opts) => { + resolve(opts || {}); + }) + .catch(reject); + } + else { + resolve(options || {}); + } + }); + } + destroy() { + this.connectionManager.destroy(); + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + this.connectionManager.setDisableConcurrentStreams(this.config.disableConcurrentStreams || false); + if (this.config.maxConcurrentStreams) { + this.connectionManager.setMaxConcurrentStreams(this.config.maxConcurrentStreams); + } + } + const { requestTimeout: configRequestTimeout, disableConcurrentStreams } = this.config; + const effectiveRequestTimeout = requestTimeout ?? configRequestTimeout; + return new Promise((_resolve, _reject) => { + let fulfilled = false; + let writeRequestBodyPromise = undefined; + const resolve = async (arg) => { + await writeRequestBodyPromise; + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + _reject(arg); + }; + if (abortSignal?.aborted) { + fulfilled = true; + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const { hostname, method, port, protocol, query } = request; + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : ""}`; + const requestContext = { destination: new URL(authority) }; + const session = this.connectionManager.lease(requestContext, { + requestTimeout: this.config?.sessionTimeout, + disableConcurrentStreams: disableConcurrentStreams || false, + }); + const rejectWithDestroy = (err) => { + if (disableConcurrentStreams) { + this.destroySession(session); + } + fulfilled = true; + reject(err); + }; + const queryString = querystringBuilder.buildQueryString(query || {}); + let path = request.path; + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + const req = session.request({ + ...request.headers, + [http2.constants.HTTP2_HEADER_PATH]: path, + [http2.constants.HTTP2_HEADER_METHOD]: method, + }); + session.ref(); + req.on("response", (headers) => { + const httpResponse = new protocolHttp.HttpResponse({ + statusCode: headers[":status"] || -1, + headers: getTransformedHeaders(headers), + body: req, + }); + fulfilled = true; + resolve({ response: httpResponse }); + if (disableConcurrentStreams) { + session.close(); + this.connectionManager.deleteSession(authority, session); + } + }); + if (effectiveRequestTimeout) { + req.setTimeout(effectiveRequestTimeout, () => { + req.close(); + const timeoutError = new Error(`Stream timed out because of no activity for ${effectiveRequestTimeout} ms`); + timeoutError.name = "TimeoutError"; + rejectWithDestroy(timeoutError); + }); + } + if (abortSignal) { + const onAbort = () => { + req.close(); + const abortError = buildAbortError(abortSignal); + rejectWithDestroy(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + req.once("close", () => signal.removeEventListener("abort", onAbort)); + } + else { + abortSignal.onabort = onAbort; + } + } + req.on("frameError", (type, code, id) => { + rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`)); + }); + req.on("error", rejectWithDestroy); + req.on("aborted", () => { + rejectWithDestroy(new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`)); + }); + req.on("close", () => { + session.unref(); + if (disableConcurrentStreams) { + session.destroy(); + } + if (!fulfilled) { + rejectWithDestroy(new Error("Unexpected error: http2 request did not get a response")); + } + }); + writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout); + }); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + return { + ...config, + [key]: value, + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } + destroySession(session) { + if (!session.destroyed) { + session.destroy(); + } + } +} + +class Collector extends node_stream.Writable { + bufferedBytes = []; + _write(chunk, encoding, callback) { + this.bufferedBytes.push(chunk); + callback(); + } +} + +const streamCollector = (stream) => { + if (isReadableStreamInstance(stream)) { + return collectReadableStream(stream); + } + return new Promise((resolve, reject) => { + const collector = new Collector(); + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function () { + const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes)); + resolve(bytes); + }); + }); +}; +const isReadableStreamInstance = (stream) => typeof ReadableStream === "function" && stream instanceof ReadableStream; +async function collectReadableStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + let length = 0; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + isDone = done; + } + const collected = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + collected.set(chunk, offset); + offset += chunk.length; + } + return collected; +} + +exports.DEFAULT_REQUEST_TIMEOUT = DEFAULT_REQUEST_TIMEOUT; +exports.NodeHttp2Handler = NodeHttp2Handler; +exports.NodeHttpHandler = NodeHttpHandler; +exports.streamCollector = streamCollector; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js b/bff/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js new file mode 100644 index 0000000..085d973 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/build-abort-error.js @@ -0,0 +1,19 @@ +export function buildAbortError(abortSignal) { + const reason = abortSignal && typeof abortSignal === "object" && "reason" in abortSignal + ? abortSignal.reason + : undefined; + if (reason) { + if (reason instanceof Error) { + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + abortError.cause = reason; + return abortError; + } + const abortError = new Error(String(reason)); + abortError.name = "AbortError"; + return abortError; + } + const abortError = new Error("Request aborted"); + abortError.name = "AbortError"; + return abortError; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/constants.js b/bff/node_modules/@smithy/node-http-handler/dist-es/constants.js new file mode 100644 index 0000000..0619d28 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/constants.js @@ -0,0 +1 @@ +export const NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "EPIPE", "ETIMEDOUT"]; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js b/bff/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js new file mode 100644 index 0000000..562883c --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/get-transformed-headers.js @@ -0,0 +1,9 @@ +const getTransformedHeaders = (headers) => { + const transformedHeaders = {}; + for (const name of Object.keys(headers)) { + const headerValues = headers[name]; + transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(",") : headerValues; + } + return transformedHeaders; +}; +export { getTransformedHeaders }; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/index.js b/bff/node_modules/@smithy/node-http-handler/dist-es/index.js new file mode 100644 index 0000000..09c0b9a --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./node-http-handler"; +export * from "./node-http2-handler"; +export * from "./stream-collector"; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js b/bff/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js new file mode 100644 index 0000000..dc41ebe --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js @@ -0,0 +1,230 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { buildQueryString } from "@smithy/querystring-builder"; +import { Agent as hsAgent, request as hsRequest } from "node:https"; +import { buildAbortError } from "./build-abort-error"; +import { NODEJS_TIMEOUT_ERROR_CODES } from "./constants"; +import { getTransformedHeaders } from "./get-transformed-headers"; +import { setConnectionTimeout } from "./set-connection-timeout"; +import { setRequestTimeout } from "./set-request-timeout"; +import { setSocketKeepAlive } from "./set-socket-keep-alive"; +import { setSocketTimeout } from "./set-socket-timeout"; +import { timing } from "./timing"; +import { writeRequestBody } from "./write-request-body"; +export const DEFAULT_REQUEST_TIMEOUT = 0; +let hAgent = undefined; +let hRequest = undefined; +export class NodeHttpHandler { + config; + configProvider; + socketWarningTimestamp = 0; + externalAgent = false; + metadata = { handlerProtocol: "http/1.1" }; + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new NodeHttpHandler(instanceOrOptions); + } + static checkSocketUsage(agent, socketWarningTimestamp, logger = console) { + const { sockets, requests, maxSockets } = agent; + if (typeof maxSockets !== "number" || maxSockets === Infinity) { + return socketWarningTimestamp; + } + const interval = 15_000; + if (Date.now() - interval < socketWarningTimestamp) { + return socketWarningTimestamp; + } + if (sockets && requests) { + for (const origin in sockets) { + const socketsInUse = sockets[origin]?.length ?? 0; + const requestsEnqueued = requests[origin]?.length ?? 0; + if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) { + logger?.warn?.(`@smithy/node-http-handler:WARN - socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued. +See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html +or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.`); + return Date.now(); + } + } + } + return socketWarningTimestamp; + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options() + .then((_options) => { + resolve(this.resolveDefaultConfig(_options)); + }) + .catch(reject); + } + else { + resolve(this.resolveDefaultConfig(options)); + } + }); + } + destroy() { + this.config?.httpAgent?.destroy(); + this.config?.httpsAgent?.destroy(); + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + } + const config = this.config; + const isSSL = request.protocol === "https:"; + if (!isSSL && !this.config.httpAgent) { + this.config.httpAgent = await this.config.httpAgentProvider(); + } + return new Promise((_resolve, _reject) => { + let writeRequestBodyPromise = undefined; + const timeouts = []; + const resolve = async (arg) => { + await writeRequestBodyPromise; + timeouts.forEach(timing.clearTimeout); + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + timeouts.forEach(timing.clearTimeout); + _reject(arg); + }; + if (abortSignal?.aborted) { + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const headers = request.headers ?? {}; + const expectContinue = (headers.Expect ?? headers.expect) === "100-continue"; + let agent = isSSL ? config.httpsAgent : config.httpAgent; + if (expectContinue && !this.externalAgent) { + agent = new (isSSL ? hsAgent : hAgent)({ + keepAlive: false, + maxSockets: Infinity, + }); + } + timeouts.push(timing.setTimeout(() => { + this.socketWarningTimestamp = NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp, config.logger); + }, config.socketAcquisitionWarningTimeout ?? (config.requestTimeout ?? 2000) + (config.connectionTimeout ?? 1000))); + const queryString = buildQueryString(request.query || {}); + let auth = undefined; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}`; + } + let path = request.path; + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + let hostname = request.hostname ?? ""; + if (hostname[0] === "[" && hostname.endsWith("]")) { + hostname = request.hostname.slice(1, -1); + } + else { + hostname = request.hostname; + } + const nodeHttpsOptions = { + headers: request.headers, + host: hostname, + method: request.method, + path, + port: request.port, + agent, + auth, + }; + const requestFunc = isSSL ? hsRequest : hRequest; + const req = requestFunc(nodeHttpsOptions, (res) => { + const httpResponse = new HttpResponse({ + statusCode: res.statusCode || -1, + reason: res.statusMessage, + headers: getTransformedHeaders(res.headers), + body: res, + }); + resolve({ response: httpResponse }); + }); + req.on("error", (err) => { + if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) { + reject(Object.assign(err, { name: "TimeoutError" })); + } + else { + reject(err); + } + }); + if (abortSignal) { + const onAbort = () => { + req.destroy(); + const abortError = buildAbortError(abortSignal); + reject(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + req.once("close", () => signal.removeEventListener("abort", onAbort)); + } + else { + abortSignal.onabort = onAbort; + } + } + const effectiveRequestTimeout = requestTimeout ?? config.requestTimeout; + timeouts.push(setConnectionTimeout(req, reject, config.connectionTimeout)); + timeouts.push(setRequestTimeout(req, reject, effectiveRequestTimeout, config.throwOnRequestTimeout, config.logger ?? console)); + timeouts.push(setSocketTimeout(req, reject, config.socketTimeout)); + const httpAgent = nodeHttpsOptions.agent; + if (typeof httpAgent === "object" && "keepAlive" in httpAgent) { + timeouts.push(setSocketKeepAlive(req, { + keepAlive: httpAgent.keepAlive, + keepAliveMsecs: httpAgent.keepAliveMsecs, + })); + } + writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout, this.externalAgent).catch((e) => { + timeouts.forEach(timing.clearTimeout); + return _reject(e); + }); + }); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + return { + ...config, + [key]: value, + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } + resolveDefaultConfig(options) { + const { requestTimeout, connectionTimeout, socketTimeout, socketAcquisitionWarningTimeout, httpAgent, httpsAgent, throwOnRequestTimeout, logger, } = options || {}; + const keepAlive = true; + const maxSockets = 50; + return { + connectionTimeout, + requestTimeout, + socketTimeout, + socketAcquisitionWarningTimeout, + throwOnRequestTimeout, + httpAgentProvider: async () => { + const { Agent, request } = await import("node:http"); + hRequest = request; + hAgent = Agent; + if (httpAgent instanceof hAgent || typeof httpAgent?.destroy === "function") { + this.externalAgent = true; + return httpAgent; + } + return new hAgent({ keepAlive, maxSockets, ...httpAgent }); + }, + httpsAgent: (() => { + if (httpsAgent instanceof hsAgent || typeof httpsAgent?.destroy === "function") { + this.externalAgent = true; + return httpsAgent; + } + return new hsAgent({ keepAlive, maxSockets, ...httpsAgent }); + })(), + logger, + }; + } +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js b/bff/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js new file mode 100644 index 0000000..8afcb44 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js @@ -0,0 +1,87 @@ +import http2 from "node:http2"; +import { NodeHttp2ConnectionPool } from "./node-http2-connection-pool"; +export class NodeHttp2ConnectionManager { + constructor(config) { + this.config = config; + if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) { + throw new RangeError("maxConcurrency must be greater than zero."); + } + } + config; + sessionCache = new Map(); + lease(requestContext, connectionConfiguration) { + const url = this.getUrlString(requestContext); + const existingPool = this.sessionCache.get(url); + if (existingPool) { + const existingSession = existingPool.poll(); + if (existingSession && !this.config.disableConcurrency) { + return existingSession; + } + } + const session = http2.connect(url); + if (this.config.maxConcurrency) { + session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => { + if (err) { + throw new Error("Fail to set maxConcurrentStreams to " + + this.config.maxConcurrency + + "when creating new session for " + + requestContext.destination.toString()); + } + }); + } + session.unref(); + const destroySessionCb = () => { + session.destroy(); + this.deleteSession(url, session); + }; + session.on("goaway", destroySessionCb); + session.on("error", destroySessionCb); + session.on("frameError", destroySessionCb); + session.on("close", () => this.deleteSession(url, session)); + if (connectionConfiguration.requestTimeout) { + session.setTimeout(connectionConfiguration.requestTimeout, destroySessionCb); + } + const connectionPool = this.sessionCache.get(url) || new NodeHttp2ConnectionPool(); + connectionPool.offerLast(session); + this.sessionCache.set(url, connectionPool); + return session; + } + deleteSession(authority, session) { + const existingConnectionPool = this.sessionCache.get(authority); + if (!existingConnectionPool) { + return; + } + if (!existingConnectionPool.contains(session)) { + return; + } + existingConnectionPool.remove(session); + this.sessionCache.set(authority, existingConnectionPool); + } + release(requestContext, session) { + const cacheKey = this.getUrlString(requestContext); + this.sessionCache.get(cacheKey)?.offerLast(session); + } + destroy() { + for (const [key, connectionPool] of this.sessionCache) { + for (const session of connectionPool) { + if (!session.destroyed) { + session.destroy(); + } + connectionPool.remove(session); + } + this.sessionCache.delete(key); + } + } + setMaxConcurrentStreams(maxConcurrentStreams) { + if (maxConcurrentStreams && maxConcurrentStreams <= 0) { + throw new RangeError("maxConcurrentStreams must be greater than zero."); + } + this.config.maxConcurrency = maxConcurrentStreams; + } + setDisableConcurrentStreams(disableConcurrentStreams) { + this.config.disableConcurrency = disableConcurrentStreams; + } + getUrlString(request) { + return request.destination.toString(); + } +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js b/bff/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js new file mode 100644 index 0000000..43b3ad0 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js @@ -0,0 +1,32 @@ +export class NodeHttp2ConnectionPool { + sessions = []; + constructor(sessions) { + this.sessions = sessions ?? []; + } + poll() { + if (this.sessions.length > 0) { + return this.sessions.shift(); + } + } + offerLast(session) { + this.sessions.push(session); + } + contains(session) { + return this.sessions.includes(session); + } + remove(session) { + this.sessions = this.sessions.filter((s) => s !== session); + } + [Symbol.iterator]() { + return this.sessions[Symbol.iterator](); + } + destroy(connection) { + for (const session of this.sessions) { + if (session === connection) { + if (!session.destroyed) { + session.destroy(); + } + } + } + } +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js b/bff/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js new file mode 100644 index 0000000..e49b6e9 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js @@ -0,0 +1,169 @@ +import { HttpResponse } from "@smithy/protocol-http"; +import { buildQueryString } from "@smithy/querystring-builder"; +import { constants } from "node:http2"; +import { buildAbortError } from "./build-abort-error"; +import { getTransformedHeaders } from "./get-transformed-headers"; +import { NodeHttp2ConnectionManager } from "./node-http2-connection-manager"; +import { writeRequestBody } from "./write-request-body"; +export class NodeHttp2Handler { + config; + configProvider; + metadata = { handlerProtocol: "h2" }; + connectionManager = new NodeHttp2ConnectionManager({}); + static create(instanceOrOptions) { + if (typeof instanceOrOptions?.handle === "function") { + return instanceOrOptions; + } + return new NodeHttp2Handler(instanceOrOptions); + } + constructor(options) { + this.configProvider = new Promise((resolve, reject) => { + if (typeof options === "function") { + options() + .then((opts) => { + resolve(opts || {}); + }) + .catch(reject); + } + else { + resolve(options || {}); + } + }); + } + destroy() { + this.connectionManager.destroy(); + } + async handle(request, { abortSignal, requestTimeout } = {}) { + if (!this.config) { + this.config = await this.configProvider; + this.connectionManager.setDisableConcurrentStreams(this.config.disableConcurrentStreams || false); + if (this.config.maxConcurrentStreams) { + this.connectionManager.setMaxConcurrentStreams(this.config.maxConcurrentStreams); + } + } + const { requestTimeout: configRequestTimeout, disableConcurrentStreams } = this.config; + const effectiveRequestTimeout = requestTimeout ?? configRequestTimeout; + return new Promise((_resolve, _reject) => { + let fulfilled = false; + let writeRequestBodyPromise = undefined; + const resolve = async (arg) => { + await writeRequestBodyPromise; + _resolve(arg); + }; + const reject = async (arg) => { + await writeRequestBodyPromise; + _reject(arg); + }; + if (abortSignal?.aborted) { + fulfilled = true; + const abortError = buildAbortError(abortSignal); + reject(abortError); + return; + } + const { hostname, method, port, protocol, query } = request; + let auth = ""; + if (request.username != null || request.password != null) { + const username = request.username ?? ""; + const password = request.password ?? ""; + auth = `${username}:${password}@`; + } + const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : ""}`; + const requestContext = { destination: new URL(authority) }; + const session = this.connectionManager.lease(requestContext, { + requestTimeout: this.config?.sessionTimeout, + disableConcurrentStreams: disableConcurrentStreams || false, + }); + const rejectWithDestroy = (err) => { + if (disableConcurrentStreams) { + this.destroySession(session); + } + fulfilled = true; + reject(err); + }; + const queryString = buildQueryString(query || {}); + let path = request.path; + if (queryString) { + path += `?${queryString}`; + } + if (request.fragment) { + path += `#${request.fragment}`; + } + const req = session.request({ + ...request.headers, + [constants.HTTP2_HEADER_PATH]: path, + [constants.HTTP2_HEADER_METHOD]: method, + }); + session.ref(); + req.on("response", (headers) => { + const httpResponse = new HttpResponse({ + statusCode: headers[":status"] || -1, + headers: getTransformedHeaders(headers), + body: req, + }); + fulfilled = true; + resolve({ response: httpResponse }); + if (disableConcurrentStreams) { + session.close(); + this.connectionManager.deleteSession(authority, session); + } + }); + if (effectiveRequestTimeout) { + req.setTimeout(effectiveRequestTimeout, () => { + req.close(); + const timeoutError = new Error(`Stream timed out because of no activity for ${effectiveRequestTimeout} ms`); + timeoutError.name = "TimeoutError"; + rejectWithDestroy(timeoutError); + }); + } + if (abortSignal) { + const onAbort = () => { + req.close(); + const abortError = buildAbortError(abortSignal); + rejectWithDestroy(abortError); + }; + if (typeof abortSignal.addEventListener === "function") { + const signal = abortSignal; + signal.addEventListener("abort", onAbort, { once: true }); + req.once("close", () => signal.removeEventListener("abort", onAbort)); + } + else { + abortSignal.onabort = onAbort; + } + } + req.on("frameError", (type, code, id) => { + rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`)); + }); + req.on("error", rejectWithDestroy); + req.on("aborted", () => { + rejectWithDestroy(new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`)); + }); + req.on("close", () => { + session.unref(); + if (disableConcurrentStreams) { + session.destroy(); + } + if (!fulfilled) { + rejectWithDestroy(new Error("Unexpected error: http2 request did not get a response")); + } + }); + writeRequestBodyPromise = writeRequestBody(req, request, effectiveRequestTimeout); + }); + } + updateHttpClientConfig(key, value) { + this.config = undefined; + this.configProvider = this.configProvider.then((config) => { + return { + ...config, + [key]: value, + }; + }); + } + httpHandlerConfigs() { + return this.config ?? {}; + } + destroySession(session) { + if (!session.destroyed) { + session.destroy(); + } + } +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js b/bff/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js new file mode 100644 index 0000000..393d127 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/readable.mock.js @@ -0,0 +1,21 @@ +import { Readable } from "node:stream"; +export class ReadFromBuffers extends Readable { + buffersToRead; + numBuffersRead = 0; + errorAfter; + constructor(options) { + super(options); + this.buffersToRead = options.buffers; + this.errorAfter = typeof options.errorAfter === "number" ? options.errorAfter : -1; + } + _read() { + if (this.errorAfter !== -1 && this.errorAfter === this.numBuffersRead) { + this.emit("error", new Error("Mock Error")); + return; + } + if (this.numBuffersRead >= this.buffersToRead.length) { + return this.push(null); + } + return this.push(this.buffersToRead[this.numBuffersRead++]); + } +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/server.mock.js b/bff/node_modules/@smithy/node-http-handler/dist-es/server.mock.js new file mode 100644 index 0000000..b9a4a11 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/server.mock.js @@ -0,0 +1,88 @@ +import { readFileSync } from "node:fs"; +import { createServer as createHttpServer } from "node:http"; +import { createServer as createHttp2Server } from "node:http2"; +import { createServer as createHttpsServer } from "node:https"; +import { join } from "node:path"; +import { Readable } from "node:stream"; +import { timing } from "./timing"; +const fixturesDir = join(__dirname, "..", "fixtures"); +const setResponseHeaders = (response, headers) => { + for (const [key, value] of Object.entries(headers)) { + response.setHeader(key, value); + } +}; +const setResponseBody = (response, body) => { + if (body instanceof Readable) { + body.pipe(response); + } + else { + response.end(body); + } +}; +export const createResponseFunction = (httpResp) => (request, response) => { + response.statusCode = httpResp.statusCode; + if (httpResp.reason) { + response.statusMessage = httpResp.reason; + } + setResponseHeaders(response, httpResp.headers); + setResponseBody(response, httpResp.body); +}; +export const createResponseFunctionWithDelay = (httpResp, delay) => (request, response) => { + response.statusCode = httpResp.statusCode; + if (httpResp.reason) { + response.statusMessage = httpResp.reason; + } + setResponseHeaders(response, httpResp.headers); + timing.setTimeout(() => setResponseBody(response, httpResp.body), delay); +}; +export const createContinueResponseFunction = (httpResp) => (request, response) => { + response.writeContinue(); + timing.setTimeout(() => { + createResponseFunction(httpResp)(request, response); + }, 100); +}; +export const createMockHttpsServer = () => { + const server = createHttpsServer({ + key: readFileSync(join(fixturesDir, "test-server-key.pem")), + cert: readFileSync(join(fixturesDir, "test-server-cert.pem")), + }); + return server; +}; +export const createMockHttpServer = () => { + const server = createHttpServer(); + return server; +}; +export const createMockHttp2Server = () => { + const server = createHttp2Server(); + return server; +}; +export const createMirrorResponseFunction = (httpResp) => (request, response) => { + const bufs = []; + request.on("data", (chunk) => { + bufs.push(chunk); + }); + request.on("end", () => { + response.statusCode = httpResp.statusCode; + setResponseHeaders(response, httpResp.headers); + setResponseBody(response, Buffer.concat(bufs)); + }); + request.on("error", (err) => { + response.statusCode = 500; + setResponseHeaders(response, httpResp.headers); + setResponseBody(response, err.message); + }); +}; +export const getResponseBody = (response) => { + return new Promise((resolve, reject) => { + const bufs = []; + response.body.on("data", function (d) { + bufs.push(d); + }); + response.body.on("end", function () { + resolve(Buffer.concat(bufs).toString()); + }); + response.body.on("error", (err) => { + reject(err); + }); + }); +}; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js b/bff/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js new file mode 100644 index 0000000..297862e --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js @@ -0,0 +1,36 @@ +import { timing } from "./timing"; +const DEFER_EVENT_LISTENER_TIME = 1000; +export const setConnectionTimeout = (request, reject, timeoutInMs = 0) => { + if (!timeoutInMs) { + return -1; + } + const registerTimeout = (offset) => { + const timeoutId = timing.setTimeout(() => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket did not establish a connection with the server within the configured timeout of ${timeoutInMs} ms.`), { + name: "TimeoutError", + })); + }, timeoutInMs - offset); + const doWithSocket = (socket) => { + if (socket?.connecting) { + socket.on("connect", () => { + timing.clearTimeout(timeoutId); + }); + } + else { + timing.clearTimeout(timeoutId); + } + }; + if (request.socket) { + doWithSocket(request.socket); + } + else { + request.on("socket", doWithSocket); + } + }; + if (timeoutInMs < 2000) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); +}; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js b/bff/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js new file mode 100644 index 0000000..44a1c85 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/set-request-timeout.js @@ -0,0 +1,21 @@ +import { timing } from "./timing"; +export const setRequestTimeout = (req, reject, timeoutInMs = 0, throwOnRequestTimeout, logger) => { + if (timeoutInMs) { + return timing.setTimeout(() => { + let msg = `@smithy/node-http-handler - [${throwOnRequestTimeout ? "ERROR" : "WARN"}] a request has exceeded the configured ${timeoutInMs} ms requestTimeout.`; + if (throwOnRequestTimeout) { + const error = Object.assign(new Error(msg), { + name: "TimeoutError", + code: "ETIMEDOUT", + }); + req.destroy(error); + reject(error); + } + else { + msg += ` Init client requestHandler with throwOnRequestTimeout=true to turn this into an error.`; + logger?.warn?.(msg); + } + }, timeoutInMs); + } + return -1; +}; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js b/bff/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js new file mode 100644 index 0000000..18391a8 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js @@ -0,0 +1,22 @@ +import { timing } from "./timing"; +const DEFER_EVENT_LISTENER_TIME = 3000; +export const setSocketKeepAlive = (request, { keepAlive, keepAliveMsecs }, deferTimeMs = DEFER_EVENT_LISTENER_TIME) => { + if (keepAlive !== true) { + return -1; + } + const registerListener = () => { + if (request.socket) { + request.socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + } + else { + request.on("socket", (socket) => { + socket.setKeepAlive(keepAlive, keepAliveMsecs || 0); + }); + } + }; + if (deferTimeMs === 0) { + registerListener(); + return 0; + } + return timing.setTimeout(registerListener, deferTimeMs); +}; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js b/bff/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js new file mode 100644 index 0000000..7925afd --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js @@ -0,0 +1,23 @@ +import { timing } from "./timing"; +const DEFER_EVENT_LISTENER_TIME = 3000; +export const setSocketTimeout = (request, reject, timeoutInMs = 0) => { + const registerTimeout = (offset) => { + const timeout = timeoutInMs - offset; + const onTimeout = () => { + request.destroy(); + reject(Object.assign(new Error(`@smithy/node-http-handler - the request socket timed out after ${timeoutInMs} ms of inactivity (configured by client requestHandler).`), { name: "TimeoutError" })); + }; + if (request.socket) { + request.socket.setTimeout(timeout, onTimeout); + request.on("close", () => request.socket?.removeListener("timeout", onTimeout)); + } + else { + request.setTimeout(timeout, onTimeout); + } + }; + if (0 < timeoutInMs && timeoutInMs < 6000) { + registerTimeout(0); + return 0; + } + return timing.setTimeout(registerTimeout.bind(null, timeoutInMs === 0 ? 0 : DEFER_EVENT_LISTENER_TIME), DEFER_EVENT_LISTENER_TIME); +}; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js b/bff/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js new file mode 100644 index 0000000..df09a4d --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js @@ -0,0 +1,8 @@ +import { Writable } from "node:stream"; +export class Collector extends Writable { + bufferedBytes = []; + _write(chunk, encoding, callback) { + this.bufferedBytes.push(chunk); + callback(); + } +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js b/bff/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js new file mode 100644 index 0000000..8ff09c0 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js @@ -0,0 +1,41 @@ +import { Collector } from "./collector"; +export const streamCollector = (stream) => { + if (isReadableStreamInstance(stream)) { + return collectReadableStream(stream); + } + return new Promise((resolve, reject) => { + const collector = new Collector(); + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function () { + const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes)); + resolve(bytes); + }); + }); +}; +const isReadableStreamInstance = (stream) => typeof ReadableStream === "function" && stream instanceof ReadableStream; +async function collectReadableStream(stream) { + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + let length = 0; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + length += value.length; + } + isDone = done; + } + const collected = new Uint8Array(length); + let offset = 0; + for (const chunk of chunks) { + collected.set(chunk, offset); + offset += chunk.length; + } + return collected; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js b/bff/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js new file mode 100644 index 0000000..4a7a0a3 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/stream-collector/readable.mock.js @@ -0,0 +1,21 @@ +import { Readable } from "node:stream"; +export class ReadFromBuffers extends Readable { + buffersToRead; + numBuffersRead = 0; + errorAfter; + constructor(options) { + super(options); + this.buffersToRead = options.buffers; + this.errorAfter = typeof options.errorAfter === "number" ? options.errorAfter : -1; + } + _read(size) { + if (this.errorAfter !== -1 && this.errorAfter === this.numBuffersRead) { + this.emit("error", new Error("Mock Error")); + return; + } + if (this.numBuffersRead >= this.buffersToRead.length) { + return this.push(null); + } + return this.push(this.buffersToRead[this.numBuffersRead++]); + } +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/timing.js b/bff/node_modules/@smithy/node-http-handler/dist-es/timing.js new file mode 100644 index 0000000..792ba48 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/timing.js @@ -0,0 +1,4 @@ +export const timing = { + setTimeout: (cb, ms) => setTimeout(cb, ms), + clearTimeout: (timeoutId) => clearTimeout(timeoutId), +}; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js b/bff/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js new file mode 100644 index 0000000..1f17010 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js @@ -0,0 +1,63 @@ +import { Readable } from "node:stream"; +import { timing } from "./timing"; +const MIN_WAIT_TIME = 6_000; +export async function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME, externalAgent = false) { + const headers = request.headers ?? {}; + const expect = headers.Expect || headers.expect; + let timeoutId = -1; + let sendBody = true; + if (!externalAgent && expect === "100-continue") { + sendBody = await Promise.race([ + new Promise((resolve) => { + timeoutId = Number(timing.setTimeout(() => resolve(true), Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs))); + }), + new Promise((resolve) => { + httpRequest.on("continue", () => { + timing.clearTimeout(timeoutId); + resolve(true); + }); + httpRequest.on("response", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + httpRequest.on("error", () => { + timing.clearTimeout(timeoutId); + resolve(false); + }); + }), + ]); + } + if (sendBody) { + writeBody(httpRequest, request.body); + } +} +function writeBody(httpRequest, body) { + if (body instanceof Readable) { + body.pipe(httpRequest); + return; + } + if (body) { + const isBuffer = Buffer.isBuffer(body); + const isString = typeof body === "string"; + if (isBuffer || isString) { + if (isBuffer && body.byteLength === 0) { + httpRequest.end(); + } + else { + httpRequest.end(body); + } + return; + } + const uint8 = body; + if (typeof uint8 === "object" && + uint8.buffer && + typeof uint8.byteOffset === "number" && + typeof uint8.byteLength === "number") { + httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength)); + return; + } + httpRequest.end(Buffer.from(body)); + return; + } + httpRequest.end(); +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts new file mode 100644 index 0000000..10fa4eb --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/build-abort-error.d.ts @@ -0,0 +1,10 @@ +/** + * Builds an abort error, using the AbortSignal's reason if available. + * + * @param abortSignal - Optional AbortSignal that may contain a reason. + * @returns A new Error with name "AbortError". If the signal has a reason that's + * already an Error, the reason is set as `cause`. Otherwise creates a + * new Error with the reason as the message, or "Request aborted" if no + * reason. + */ +export declare function buildAbortError(abortSignal?: unknown): Error; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts new file mode 100644 index 0000000..3540461 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/constants.d.ts @@ -0,0 +1,5 @@ +/** + * Node.js system error codes that indicate timeout. + * @deprecated use NODEJS_TIMEOUT_ERROR_CODES from @smithy/service-error-classification/constants + */ +export declare const NODEJS_TIMEOUT_ERROR_CODES: string[]; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts new file mode 100644 index 0000000..43beb75 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/get-transformed-headers.d.ts @@ -0,0 +1,4 @@ +import type { HeaderBag } from "@smithy/types"; +import type { IncomingHttpHeaders } from "node:http2"; +declare const getTransformedHeaders: (headers: IncomingHttpHeaders) => HeaderBag; +export { getTransformedHeaders }; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/index.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/index.d.ts new file mode 100644 index 0000000..09c0b9a --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./node-http-handler"; +export * from "./node-http2-handler"; +export * from "./stream-collector"; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts new file mode 100644 index 0000000..f0d6137 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/node-http-handler.d.ts @@ -0,0 +1,46 @@ +import type { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import type { HttpHandlerOptions, Logger, NodeHttpHandlerOptions, Provider } from "@smithy/types"; +import type { Agent as hAgentType } from "node:http"; +import { Agent as hsAgent } from "node:https"; +export { NodeHttpHandlerOptions }; +/** + * @public + * A default of 0 means no timeout. + */ +export declare const DEFAULT_REQUEST_TIMEOUT = 0; +/** + * @public + * A request handler that uses the Node.js http and https modules. + */ +export declare class NodeHttpHandler implements HttpHandler { + private config?; + private configProvider; + private socketWarningTimestamp; + private externalAgent; + readonly metadata: { + handlerProtocol: string; + }; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | NodeHttpHandlerOptions | Provider): NodeHttpHandler | HttpHandler; + /** + * @internal + * + * @param agent - http(s) agent in use by the NodeHttpHandler instance. + * @param socketWarningTimestamp - last socket usage check timestamp. + * @param logger - channel for the warning. + * @returns timestamp of last emitted warning. + */ + static checkSocketUsage(agent: hAgentType | hsAgent, socketWarningTimestamp: number, logger?: Logger): number; + constructor(options?: NodeHttpHandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof NodeHttpHandlerOptions, value: NodeHttpHandlerOptions[typeof key]): void; + httpHandlerConfigs(): NodeHttpHandlerOptions; + private resolveDefaultConfig; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts new file mode 100644 index 0000000..2a98ec3 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts @@ -0,0 +1,24 @@ +import type { RequestContext } from "@smithy/types"; +import type { ConnectConfiguration } from "@smithy/types"; +import type { ConnectionManager, ConnectionManagerConfiguration } from "@smithy/types"; +import type { ClientHttp2Session } from "node:http2"; +/** + * @public + */ +export declare class NodeHttp2ConnectionManager implements ConnectionManager { + constructor(config: ConnectionManagerConfiguration); + private config; + private readonly sessionCache; + lease(requestContext: RequestContext, connectionConfiguration: ConnectConfiguration): ClientHttp2Session; + /** + * Delete a session from the connection pool. + * @param authority The authority of the session to delete. + * @param session The session to delete. + */ + deleteSession(authority: string, session: ClientHttp2Session): void; + release(requestContext: RequestContext, session: ClientHttp2Session): void; + destroy(): void; + setMaxConcurrentStreams(maxConcurrentStreams: number): void; + setDisableConcurrentStreams(disableConcurrentStreams: boolean): void; + private getUrlString; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts new file mode 100644 index 0000000..d2b11fa --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts @@ -0,0 +1,12 @@ +import type { ConnectionPool } from "@smithy/types"; +import type { ClientHttp2Session } from "node:http2"; +export declare class NodeHttp2ConnectionPool implements ConnectionPool { + private sessions; + constructor(sessions?: ClientHttp2Session[]); + poll(): ClientHttp2Session | void; + offerLast(session: ClientHttp2Session): void; + contains(session: ClientHttp2Session): boolean; + remove(session: ClientHttp2Session): void; + [Symbol.iterator](): ArrayIterator; + destroy(connection: ClientHttp2Session): void; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts new file mode 100644 index 0000000..55aaf80 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts @@ -0,0 +1,63 @@ +import type { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import type { HttpHandlerOptions, Provider } from "@smithy/types"; +/** + * Represents the http2 options that can be passed to a node http2 client. + * @public + */ +export interface NodeHttp2HandlerOptions { + /** + * The maximum time in milliseconds that a stream may remain idle before it + * is closed. + */ + requestTimeout?: number; + /** + * The maximum time in milliseconds that a session or socket may remain idle + * before it is closed. + * https://nodejs.org/docs/latest-v12.x/api/http2.html#http2_http2session_and_sockets + */ + sessionTimeout?: number; + /** + * Disables processing concurrent streams on a ClientHttp2Session instance. When set + * to true, a new session instance is created for each request to a URL. + * **Default:** false. + * https://nodejs.org/api/http2.html#http2_class_clienthttp2session + */ + disableConcurrentStreams?: boolean; + /** + * Maximum number of concurrent Http2Stream instances per ClientHttp2Session. Each session + * may have up to 2^31-1 Http2Stream instances over its lifetime. + * This value must be greater than or equal to 0. + * https://nodejs.org/api/http2.html#class-http2stream + */ + maxConcurrentStreams?: number; +} +/** + * A request handler using the node:http2 package. + * @public + */ +export declare class NodeHttp2Handler implements HttpHandler { + private config?; + private configProvider; + readonly metadata: { + handlerProtocol: string; + }; + private readonly connectionManager; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | NodeHttp2HandlerOptions | Provider): HttpHandler | NodeHttp2Handler; + constructor(options?: NodeHttp2HandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof NodeHttp2HandlerOptions, value: NodeHttp2HandlerOptions[typeof key]): void; + httpHandlerConfigs(): NodeHttp2HandlerOptions; + /** + * Destroys a session. + * @param session - the session to destroy. + */ + private destroySession; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts new file mode 100644 index 0000000..fd7d783 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/readable.mock.d.ts @@ -0,0 +1,13 @@ +import type { ReadableOptions } from "node:stream"; +import { Readable } from "node:stream"; +export interface ReadFromBuffersOptions extends ReadableOptions { + buffers: Buffer[]; + errorAfter?: number; +} +export declare class ReadFromBuffers extends Readable { + private buffersToRead; + private numBuffersRead; + private errorAfter; + constructor(options: ReadFromBuffersOptions); + _read(): boolean | undefined; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts new file mode 100644 index 0000000..9ac3131 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/server.mock.d.ts @@ -0,0 +1,12 @@ +import type { HttpResponse } from "@smithy/types"; +import type { IncomingMessage, Server as HttpServer, ServerResponse } from "node:http"; +import type { Http2Server } from "node:http2"; +import type { Server as HttpsServer } from "node:https"; +export declare const createResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createResponseFunctionWithDelay: (httpResp: HttpResponse, delay: number) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createContinueResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createMockHttpsServer: () => HttpsServer; +export declare const createMockHttpServer: () => HttpServer; +export declare const createMockHttp2Server: () => Http2Server; +export declare const createMirrorResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const getResponseBody: (response: HttpResponse) => Promise; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts new file mode 100644 index 0000000..1520cae --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/set-connection-timeout.d.ts @@ -0,0 +1,2 @@ +import type { ClientRequest } from "node:http"; +export declare const setConnectionTimeout: (request: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number) => NodeJS.Timeout | number; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts new file mode 100644 index 0000000..9b4dd0c --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/set-request-timeout.d.ts @@ -0,0 +1,6 @@ +import type { Logger } from "@smithy/types"; +import type { ClientRequest } from "node:http"; +/** + * @internal + */ +export declare const setRequestTimeout: (req: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number, throwOnRequestTimeout?: boolean, logger?: Logger) => number; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts new file mode 100644 index 0000000..da7a1e9 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/set-socket-keep-alive.d.ts @@ -0,0 +1,6 @@ +import type { ClientRequest } from "node:http"; +export interface SocketKeepAliveOptions { + keepAlive: boolean; + keepAliveMsecs?: number; +} +export declare const setSocketKeepAlive: (request: ClientRequest, { keepAlive, keepAliveMsecs }: SocketKeepAliveOptions, deferTimeMs?: number) => NodeJS.Timeout | number; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts new file mode 100644 index 0000000..3a4077f --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/set-socket-timeout.d.ts @@ -0,0 +1,2 @@ +import type { ClientRequest } from "node:http"; +export declare const setSocketTimeout: (request: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number) => NodeJS.Timeout | number; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts new file mode 100644 index 0000000..abf98f6 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts @@ -0,0 +1,5 @@ +import { Writable } from "node:stream"; +export declare class Collector extends Writable { + readonly bufferedBytes: Buffer[]; + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts new file mode 100644 index 0000000..43dc0fe --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts @@ -0,0 +1,6 @@ +import type { StreamCollector } from "@smithy/types"; +/** + * @internal + * Converts a stream to a byte array. + */ +export declare const streamCollector: StreamCollector; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts new file mode 100644 index 0000000..dd11719 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/stream-collector/readable.mock.d.ts @@ -0,0 +1,13 @@ +import type { ReadableOptions } from "node:stream"; +import { Readable } from "node:stream"; +export interface ReadFromBuffersOptions extends ReadableOptions { + buffers: Buffer[]; + errorAfter?: number; +} +export declare class ReadFromBuffers extends Readable { + private buffersToRead; + private numBuffersRead; + private errorAfter; + constructor(options: ReadFromBuffersOptions); + _read(size: number): boolean | undefined; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts new file mode 100644 index 0000000..de5b695 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * For test spies. + */ +export declare const timing: { + setTimeout: (cb: (...ignored: any[]) => void | unknown, ms?: number) => number; + clearTimeout: (timeoutId: string | number | undefined | unknown) => void; +}; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts new file mode 100644 index 0000000..9040b33 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/build-abort-error.d.ts @@ -0,0 +1,10 @@ +/** + * Builds an abort error, using the AbortSignal's reason if available. + * + * @param abortSignal - Optional AbortSignal that may contain a reason. + * @returns A new Error with name "AbortError". If the signal has a reason that's + * already an Error, the reason is set as `cause`. Otherwise creates a + * new Error with the reason as the message, or "Request aborted" if no + * reason. + */ +export declare function buildAbortError(abortSignal?: unknown): Error; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..b02b0b6 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,5 @@ +/** + * Node.js system error codes that indicate timeout. + * @deprecated use NODEJS_TIMEOUT_ERROR_CODES from @smithy/service-error-classification/constants + */ +export declare const NODEJS_TIMEOUT_ERROR_CODES: string[]; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts new file mode 100644 index 0000000..50adbbc --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/get-transformed-headers.d.ts @@ -0,0 +1,4 @@ +import { HeaderBag } from "@smithy/types"; +import { IncomingHttpHeaders } from "node:http2"; +declare const getTransformedHeaders: (headers: IncomingHttpHeaders) => HeaderBag; +export { getTransformedHeaders }; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..055c48c --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./node-http-handler"; +export * from "./node-http2-handler"; +export * from "./stream-collector"; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts new file mode 100644 index 0000000..7c24ff2 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http-handler.d.ts @@ -0,0 +1,46 @@ +import { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import { HttpHandlerOptions, Logger, NodeHttpHandlerOptions, Provider } from "@smithy/types"; +import { Agent as hAgentType } from "node:http"; +import { Agent as hsAgent } from "node:https"; +export { NodeHttpHandlerOptions }; +/** + * @public + * A default of 0 means no timeout. + */ +export declare const DEFAULT_REQUEST_TIMEOUT = 0; +/** + * @public + * A request handler that uses the Node.js http and https modules. + */ +export declare class NodeHttpHandler implements HttpHandler { + private config?; + private configProvider; + private socketWarningTimestamp; + private externalAgent; + readonly metadata: { + handlerProtocol: string; + }; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | NodeHttpHandlerOptions | Provider): NodeHttpHandler | HttpHandler; + /** + * @internal + * + * @param agent - http(s) agent in use by the NodeHttpHandler instance. + * @param socketWarningTimestamp - last socket usage check timestamp. + * @param logger - channel for the warning. + * @returns timestamp of last emitted warning. + */ + static checkSocketUsage(agent: hAgentType | hsAgent, socketWarningTimestamp: number, logger?: Logger): number; + constructor(options?: NodeHttpHandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof NodeHttpHandlerOptions, value: NodeHttpHandlerOptions[typeof key]): void; + httpHandlerConfigs(): NodeHttpHandlerOptions; + private resolveDefaultConfig; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts new file mode 100644 index 0000000..7ee825a --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-manager.d.ts @@ -0,0 +1,24 @@ +import { RequestContext } from "@smithy/types"; +import { ConnectConfiguration } from "@smithy/types"; +import { ConnectionManager, ConnectionManagerConfiguration } from "@smithy/types"; +import { ClientHttp2Session } from "node:http2"; +/** + * @public + */ +export declare class NodeHttp2ConnectionManager implements ConnectionManager { + constructor(config: ConnectionManagerConfiguration); + private config; + private readonly sessionCache; + lease(requestContext: RequestContext, connectionConfiguration: ConnectConfiguration): ClientHttp2Session; + /** + * Delete a session from the connection pool. + * @param authority The authority of the session to delete. + * @param session The session to delete. + */ + deleteSession(authority: string, session: ClientHttp2Session): void; + release(requestContext: RequestContext, session: ClientHttp2Session): void; + destroy(): void; + setMaxConcurrentStreams(maxConcurrentStreams: number): void; + setDisableConcurrentStreams(disableConcurrentStreams: boolean): void; + private getUrlString; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts new file mode 100644 index 0000000..005e2d6 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-connection-pool.d.ts @@ -0,0 +1,12 @@ +import { ConnectionPool } from "@smithy/types"; +import { ClientHttp2Session } from "node:http2"; +export declare class NodeHttp2ConnectionPool implements ConnectionPool { + private sessions; + constructor(sessions?: ClientHttp2Session[]); + poll(): ClientHttp2Session | void; + offerLast(session: ClientHttp2Session): void; + contains(session: ClientHttp2Session): boolean; + remove(session: ClientHttp2Session): void; + [Symbol.iterator](): ArrayIterator; + destroy(connection: ClientHttp2Session): void; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts new file mode 100644 index 0000000..c6547c4 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/node-http2-handler.d.ts @@ -0,0 +1,63 @@ +import { HttpHandler, HttpRequest } from "@smithy/protocol-http"; +import { HttpResponse } from "@smithy/protocol-http"; +import { HttpHandlerOptions, Provider } from "@smithy/types"; +/** + * Represents the http2 options that can be passed to a node http2 client. + * @public + */ +export interface NodeHttp2HandlerOptions { + /** + * The maximum time in milliseconds that a stream may remain idle before it + * is closed. + */ + requestTimeout?: number; + /** + * The maximum time in milliseconds that a session or socket may remain idle + * before it is closed. + * https://nodejs.org/docs/latest-v12.x/api/http2.html#http2_http2session_and_sockets + */ + sessionTimeout?: number; + /** + * Disables processing concurrent streams on a ClientHttp2Session instance. When set + * to true, a new session instance is created for each request to a URL. + * **Default:** false. + * https://nodejs.org/api/http2.html#http2_class_clienthttp2session + */ + disableConcurrentStreams?: boolean; + /** + * Maximum number of concurrent Http2Stream instances per ClientHttp2Session. Each session + * may have up to 2^31-1 Http2Stream instances over its lifetime. + * This value must be greater than or equal to 0. + * https://nodejs.org/api/http2.html#class-http2stream + */ + maxConcurrentStreams?: number; +} +/** + * A request handler using the node:http2 package. + * @public + */ +export declare class NodeHttp2Handler implements HttpHandler { + private config?; + private configProvider; + readonly metadata: { + handlerProtocol: string; + }; + private readonly connectionManager; + /** + * @returns the input if it is an HttpHandler of any class, + * or instantiates a new instance of this handler. + */ + static create(instanceOrOptions?: HttpHandler | NodeHttp2HandlerOptions | Provider): HttpHandler | NodeHttp2Handler; + constructor(options?: NodeHttp2HandlerOptions | Provider); + destroy(): void; + handle(request: HttpRequest, { abortSignal, requestTimeout }?: HttpHandlerOptions): Promise<{ + response: HttpResponse; + }>; + updateHttpClientConfig(key: keyof NodeHttp2HandlerOptions, value: NodeHttp2HandlerOptions[typeof key]): void; + httpHandlerConfigs(): NodeHttp2HandlerOptions; + /** + * Destroys a session. + * @param session - the session to destroy. + */ + private destroySession; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts new file mode 100644 index 0000000..45bda38 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/readable.mock.d.ts @@ -0,0 +1,13 @@ +import { ReadableOptions } from "node:stream"; +import { Readable } from "node:stream"; +export interface ReadFromBuffersOptions extends ReadableOptions { + buffers: Buffer[]; + errorAfter?: number; +} +export declare class ReadFromBuffers extends Readable { + private buffersToRead; + private numBuffersRead; + private errorAfter; + constructor(options: ReadFromBuffersOptions); + _read(): boolean | undefined; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts new file mode 100644 index 0000000..00449c6 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/server.mock.d.ts @@ -0,0 +1,12 @@ +import { HttpResponse } from "@smithy/types"; +import { IncomingMessage, Server as HttpServer, ServerResponse } from "node:http"; +import { Http2Server } from "node:http2"; +import { Server as HttpsServer } from "node:https"; +export declare const createResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createResponseFunctionWithDelay: (httpResp: HttpResponse, delay: number) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createContinueResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const createMockHttpsServer: () => HttpsServer; +export declare const createMockHttpServer: () => HttpServer; +export declare const createMockHttp2Server: () => Http2Server; +export declare const createMirrorResponseFunction: (httpResp: HttpResponse) => (request: IncomingMessage, response: ServerResponse) => void; +export declare const getResponseBody: (response: HttpResponse) => Promise; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts new file mode 100644 index 0000000..a955562 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-connection-timeout.d.ts @@ -0,0 +1,2 @@ +import { ClientRequest } from "node:http"; +export declare const setConnectionTimeout: (request: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number) => NodeJS.Timeout | number; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts new file mode 100644 index 0000000..057cc94 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-request-timeout.d.ts @@ -0,0 +1,6 @@ +import { Logger } from "@smithy/types"; +import { ClientRequest } from "node:http"; +/** + * @internal + */ +export declare const setRequestTimeout: (req: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number, throwOnRequestTimeout?: boolean, logger?: Logger) => number; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts new file mode 100644 index 0000000..965bcc7 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-keep-alive.d.ts @@ -0,0 +1,6 @@ +import { ClientRequest } from "node:http"; +export interface SocketKeepAliveOptions { + keepAlive: boolean; + keepAliveMsecs?: number; +} +export declare const setSocketKeepAlive: (request: ClientRequest, { keepAlive, keepAliveMsecs }: SocketKeepAliveOptions, deferTimeMs?: number) => NodeJS.Timeout | number; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts new file mode 100644 index 0000000..e178b42 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/set-socket-timeout.d.ts @@ -0,0 +1,2 @@ +import { ClientRequest } from "node:http"; +export declare const setSocketTimeout: (request: ClientRequest, reject: (err: Error) => void, timeoutInMs?: number) => NodeJS.Timeout | number; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts new file mode 100644 index 0000000..d80c5f0 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/collector.d.ts @@ -0,0 +1,5 @@ +import { Writable } from "node:stream"; +export declare class Collector extends Writable { + readonly bufferedBytes: Buffer[]; + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts new file mode 100644 index 0000000..1022a17 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/index.d.ts @@ -0,0 +1,6 @@ +import { StreamCollector } from "@smithy/types"; +/** + * @internal + * Converts a stream to a byte array. + */ +export declare const streamCollector: StreamCollector; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts new file mode 100644 index 0000000..a8b3f9e --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/stream-collector/readable.mock.d.ts @@ -0,0 +1,13 @@ +import { ReadableOptions } from "node:stream"; +import { Readable } from "node:stream"; +export interface ReadFromBuffersOptions extends ReadableOptions { + buffers: Buffer[]; + errorAfter?: number; +} +export declare class ReadFromBuffers extends Readable { + private buffersToRead; + private numBuffersRead; + private errorAfter; + constructor(options: ReadFromBuffersOptions); + _read(size: number): boolean | undefined; +} diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts new file mode 100644 index 0000000..c88dd2f --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * For test spies. + */ +export declare const timing: { + setTimeout: (cb: (...ignored: any[]) => void | unknown, ms?: number) => number; + clearTimeout: (timeoutId: string | number | undefined | unknown) => void; +}; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts new file mode 100644 index 0000000..4f72ee6 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/ts3.4/write-request-body.d.ts @@ -0,0 +1,12 @@ +import { HttpRequest } from "@smithy/types"; +import { ClientRequest } from "node:http"; +import { ClientHttp2Stream } from "node:http2"; +/** + * This resolves when writeBody has been called. + * + * @param httpRequest - opened Node.js request. + * @param request - container with the request body. + * @param maxContinueTimeoutMs - time to wait for the continue event. + * @param externalAgent - whether agent is owned by caller code. + */ +export declare function writeRequestBody(httpRequest: ClientRequest | ClientHttp2Stream, request: HttpRequest, maxContinueTimeoutMs?: number, externalAgent?: boolean): Promise; diff --git a/bff/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts b/bff/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts new file mode 100644 index 0000000..e541b65 --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/dist-types/write-request-body.d.ts @@ -0,0 +1,12 @@ +import type { HttpRequest } from "@smithy/types"; +import type { ClientRequest } from "node:http"; +import type { ClientHttp2Stream } from "node:http2"; +/** + * This resolves when writeBody has been called. + * + * @param httpRequest - opened Node.js request. + * @param request - container with the request body. + * @param maxContinueTimeoutMs - time to wait for the continue event. + * @param externalAgent - whether agent is owned by caller code. + */ +export declare function writeRequestBody(httpRequest: ClientRequest | ClientHttp2Stream, request: HttpRequest, maxContinueTimeoutMs?: number, externalAgent?: boolean): Promise; diff --git a/bff/node_modules/@smithy/node-http-handler/package.json b/bff/node_modules/@smithy/node-http-handler/package.json new file mode 100644 index 0000000..190597e --- /dev/null +++ b/bff/node_modules/@smithy/node-http-handler/package.json @@ -0,0 +1,68 @@ +{ + "name": "@smithy/node-http-handler", + "version": "4.5.1", + "description": "Provides a way to make requests", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline node-http-handler", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/abort-controller": "^4.2.12", + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/node-http-handler", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/node-http-handler" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/property-provider/LICENSE b/bff/node_modules/@smithy/property-provider/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/property-provider/README.md b/bff/node_modules/@smithy/property-provider/README.md new file mode 100644 index 0000000..b35fafb --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/README.md @@ -0,0 +1,10 @@ +# @smithy/property-provider + +[![NPM version](https://img.shields.io/npm/v/@smithy/property-provider/latest.svg)](https://www.npmjs.com/package/@smithy/property-provider) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/property-provider.svg)](https://www.npmjs.com/package/@smithy/property-provider) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/property-provider/dist-cjs/index.js b/bff/node_modules/@smithy/property-provider/dist-cjs/index.js new file mode 100644 index 0000000..a419560 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-cjs/index.js @@ -0,0 +1,117 @@ +'use strict'; + +class ProviderError extends Error { + name = "ProviderError"; + tryNextLink; + constructor(message, options = true) { + let logger; + let tryNextLink = true; + if (typeof options === "boolean") { + logger = undefined; + tryNextLink = options; + } + else if (options != null && typeof options === "object") { + logger = options.logger; + tryNextLink = options.tryNextLink ?? true; + } + super(message); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, ProviderError.prototype); + logger?.debug?.(`@smithy/property-provider ${tryNextLink ? "->" : "(!)"} ${message}`); + } + static from(error, options = true) { + return Object.assign(new this(error.message, options), error); + } +} + +class CredentialsProviderError extends ProviderError { + name = "CredentialsProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, CredentialsProviderError.prototype); + } +} + +class TokenProviderError extends ProviderError { + name = "TokenProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, TokenProviderError.prototype); + } +} + +const chain = (...providers) => async () => { + if (providers.length === 0) { + throw new ProviderError("No providers in chain"); + } + let lastProviderError; + for (const provider of providers) { + try { + const credentials = await provider(); + return credentials; + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; + +const fromStatic = (staticValue) => () => Promise.resolve(staticValue); + +const memoize = (provider, isExpired, requiresRefresh) => { + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = async () => { + if (!pending) { + pending = provider(); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } + finally { + pending = undefined; + } + return resolved; + }; + if (isExpired === undefined) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + if (isConstant) { + return resolved; + } + if (requiresRefresh && !requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(); + return resolved; + } + return resolved; + }; +}; + +exports.CredentialsProviderError = CredentialsProviderError; +exports.ProviderError = ProviderError; +exports.TokenProviderError = TokenProviderError; +exports.chain = chain; +exports.fromStatic = fromStatic; +exports.memoize = memoize; diff --git a/bff/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js b/bff/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js new file mode 100644 index 0000000..94cb2db --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-es/CredentialsProviderError.js @@ -0,0 +1,8 @@ +import { ProviderError } from "./ProviderError"; +export class CredentialsProviderError extends ProviderError { + name = "CredentialsProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, CredentialsProviderError.prototype); + } +} diff --git a/bff/node_modules/@smithy/property-provider/dist-es/ProviderError.js b/bff/node_modules/@smithy/property-provider/dist-es/ProviderError.js new file mode 100644 index 0000000..6aa3ce3 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-es/ProviderError.js @@ -0,0 +1,23 @@ +export class ProviderError extends Error { + name = "ProviderError"; + tryNextLink; + constructor(message, options = true) { + let logger; + let tryNextLink = true; + if (typeof options === "boolean") { + logger = undefined; + tryNextLink = options; + } + else if (options != null && typeof options === "object") { + logger = options.logger; + tryNextLink = options.tryNextLink ?? true; + } + super(message); + this.tryNextLink = tryNextLink; + Object.setPrototypeOf(this, ProviderError.prototype); + logger?.debug?.(`@smithy/property-provider ${tryNextLink ? "->" : "(!)"} ${message}`); + } + static from(error, options = true) { + return Object.assign(new this(error.message, options), error); + } +} diff --git a/bff/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js b/bff/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js new file mode 100644 index 0000000..a162729 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-es/TokenProviderError.js @@ -0,0 +1,8 @@ +import { ProviderError } from "./ProviderError"; +export class TokenProviderError extends ProviderError { + name = "TokenProviderError"; + constructor(message, options = true) { + super(message, options); + Object.setPrototypeOf(this, TokenProviderError.prototype); + } +} diff --git a/bff/node_modules/@smithy/property-provider/dist-es/chain.js b/bff/node_modules/@smithy/property-provider/dist-es/chain.js new file mode 100644 index 0000000..c389f7f --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-es/chain.js @@ -0,0 +1,21 @@ +import { ProviderError } from "./ProviderError"; +export const chain = (...providers) => async () => { + if (providers.length === 0) { + throw new ProviderError("No providers in chain"); + } + let lastProviderError; + for (const provider of providers) { + try { + const credentials = await provider(); + return credentials; + } + catch (err) { + lastProviderError = err; + if (err?.tryNextLink) { + continue; + } + throw err; + } + } + throw lastProviderError; +}; diff --git a/bff/node_modules/@smithy/property-provider/dist-es/fromStatic.js b/bff/node_modules/@smithy/property-provider/dist-es/fromStatic.js new file mode 100644 index 0000000..67da7a7 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-es/fromStatic.js @@ -0,0 +1 @@ +export const fromStatic = (staticValue) => () => Promise.resolve(staticValue); diff --git a/bff/node_modules/@smithy/property-provider/dist-es/index.js b/bff/node_modules/@smithy/property-provider/dist-es/index.js new file mode 100644 index 0000000..15d14e5 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./CredentialsProviderError"; +export * from "./ProviderError"; +export * from "./TokenProviderError"; +export * from "./chain"; +export * from "./fromStatic"; +export * from "./memoize"; diff --git a/bff/node_modules/@smithy/property-provider/dist-es/memoize.js b/bff/node_modules/@smithy/property-provider/dist-es/memoize.js new file mode 100644 index 0000000..e04839a --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-es/memoize.js @@ -0,0 +1,45 @@ +export const memoize = (provider, isExpired, requiresRefresh) => { + let resolved; + let pending; + let hasResult; + let isConstant = false; + const coalesceProvider = async () => { + if (!pending) { + pending = provider(); + } + try { + resolved = await pending; + hasResult = true; + isConstant = false; + } + finally { + pending = undefined; + } + return resolved; + }; + if (isExpired === undefined) { + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + return resolved; + }; + } + return async (options) => { + if (!hasResult || options?.forceRefresh) { + resolved = await coalesceProvider(); + } + if (isConstant) { + return resolved; + } + if (requiresRefresh && !requiresRefresh(resolved)) { + isConstant = true; + return resolved; + } + if (isExpired(resolved)) { + await coalesceProvider(); + return resolved; + } + return resolved; + }; +}; diff --git a/bff/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts new file mode 100644 index 0000000..614d764 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/CredentialsProviderError.d.ts @@ -0,0 +1,31 @@ +import type { ProviderErrorOptionsType } from "./ProviderError"; +import { ProviderError } from "./ProviderError"; +/** + * @public + * + * An error representing a failure of an individual credential provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class CredentialsProviderError extends ProviderError { + name: string; + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * @override + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); +} diff --git a/bff/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts new file mode 100644 index 0000000..7d62b8b --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/ProviderError.d.ts @@ -0,0 +1,39 @@ +import type { Logger } from "@smithy/types"; +/** + * @public + */ +export type ProviderErrorOptionsType = { + tryNextLink?: boolean | undefined; + logger?: Logger; +}; +/** + * @public + * + * An error representing a failure of an individual provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class ProviderError extends Error { + name: string; + readonly tryNextLink: boolean; + /** + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); + /** + * @deprecated use new operator. + */ + static from(error: Error, options?: boolean | ProviderErrorOptionsType): ProviderError; +} diff --git a/bff/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts new file mode 100644 index 0000000..223b64b --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/TokenProviderError.d.ts @@ -0,0 +1,31 @@ +import type { ProviderErrorOptionsType } from "./ProviderError"; +import { ProviderError } from "./ProviderError"; +/** + * @public + * + * An error representing a failure of an individual token provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class TokenProviderError extends ProviderError { + name: string; + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * @override + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); +} diff --git a/bff/node_modules/@smithy/property-provider/dist-types/chain.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/chain.d.ts new file mode 100644 index 0000000..93d8035 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/chain.d.ts @@ -0,0 +1,13 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + * + * Compose a single credential provider function from multiple credential + * providers. The first provider in the argument list will always be invoked; + * subsequent providers in the list will be invoked in the order in which the + * were received if the preceding provider did not successfully resolve. + * + * If no providers were received or no provider resolves successfully, the + * returned promise will be rejected. + */ +export declare const chain: (...providers: Array>) => Provider; diff --git a/bff/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts new file mode 100644 index 0000000..8d84c04 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/fromStatic.d.ts @@ -0,0 +1,5 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const fromStatic: (staticValue: T) => Provider; diff --git a/bff/node_modules/@smithy/property-provider/dist-types/index.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/index.d.ts new file mode 100644 index 0000000..6326994 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/index.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export * from "./CredentialsProviderError"; +/** + * @internal + */ +export * from "./ProviderError"; +/** + * @internal + */ +export * from "./TokenProviderError"; +/** + * @internal + */ +export * from "./chain"; +/** + * @internal + */ +export * from "./fromStatic"; +/** + * @internal + */ +export * from "./memoize"; diff --git a/bff/node_modules/@smithy/property-provider/dist-types/memoize.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/memoize.d.ts new file mode 100644 index 0000000..80c08d7 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/memoize.d.ts @@ -0,0 +1,40 @@ +import type { MemoizedProvider, Provider } from "@smithy/types"; +interface MemoizeOverload { + /** + * + * Decorates a provider function with either static memoization. + * + * To create a statically memoized provider, supply a provider as the only + * argument to this function. The provider will be invoked once, and all + * invocations of the provider returned by `memoize` will return the same + * promise object. + * + * @param provider The provider whose result should be cached indefinitely. + */ + (provider: Provider): MemoizedProvider; + /** + * Decorates a provider function with refreshing memoization. + * + * @param provider The provider whose result should be cached. + * @param isExpired A function that will evaluate the resolved value and + * determine if it is expired. For example, when + * memoizing AWS credential providers, this function + * should return `true` when the credential's + * expiration is in the past (or very near future) and + * `false` otherwise. + * @param requiresRefresh A function that will evaluate the resolved value and + * determine if it represents static value or one that + * will eventually need to be refreshed. For example, + * AWS credentials that have no defined expiration will + * never need to be refreshed, so this function would + * return `true` if the credentials resolved by the + * underlying provider had an expiration and `false` + * otherwise. + */ + (provider: Provider, isExpired: (resolved: T) => boolean, requiresRefresh?: (resolved: T) => boolean): MemoizedProvider; +} +/** + * @internal + */ +export declare const memoize: MemoizeOverload; +export {}; diff --git a/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts new file mode 100644 index 0000000..544f12e --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/CredentialsProviderError.d.ts @@ -0,0 +1,31 @@ +import { ProviderErrorOptionsType } from "./ProviderError"; +import { ProviderError } from "./ProviderError"; +/** + * @public + * + * An error representing a failure of an individual credential provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class CredentialsProviderError extends ProviderError { + name: string; + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * @override + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); +} diff --git a/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts new file mode 100644 index 0000000..daf499c --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/ProviderError.d.ts @@ -0,0 +1,39 @@ +import { Logger } from "@smithy/types"; +/** + * @public + */ +export type ProviderErrorOptionsType = { + tryNextLink?: boolean | undefined; + logger?: Logger; +}; +/** + * @public + * + * An error representing a failure of an individual provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class ProviderError extends Error { + name: string; + readonly tryNextLink: boolean; + /** + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); + /** + * @deprecated use new operator. + */ + static from(error: Error, options?: boolean | ProviderErrorOptionsType): ProviderError; +} diff --git a/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts new file mode 100644 index 0000000..1b6f544 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/TokenProviderError.d.ts @@ -0,0 +1,31 @@ +import { ProviderErrorOptionsType } from "./ProviderError"; +import { ProviderError } from "./ProviderError"; +/** + * @public + * + * An error representing a failure of an individual token provider. + * + * This error class has special meaning to the {@link chain} method. If a + * provider in the chain is rejected with an error, the chain will only proceed + * to the next provider if the value of the `tryNextLink` property on the error + * is truthy. This allows individual providers to halt the chain and also + * ensures the chain will stop if an entirely unexpected error is encountered. + */ +export declare class TokenProviderError extends ProviderError { + name: string; + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string); + /** + * @override + * @deprecated constructor should be given a logger. + */ + constructor(message: string, tryNextLink: boolean | undefined); + /** + * @override + * This signature is preferred for logging capability. + */ + constructor(message: string, options: ProviderErrorOptionsType); +} diff --git a/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts new file mode 100644 index 0000000..f5dd8fa --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/chain.d.ts @@ -0,0 +1,13 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + * + * Compose a single credential provider function from multiple credential + * providers. The first provider in the argument list will always be invoked; + * subsequent providers in the list will be invoked in the order in which the + * were received if the preceding provider did not successfully resolve. + * + * If no providers were received or no provider resolves successfully, the + * returned promise will be rejected. + */ +export declare const chain: (...providers: Array>) => Provider; diff --git a/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts new file mode 100644 index 0000000..0df6309 --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/fromStatic.d.ts @@ -0,0 +1,5 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const fromStatic: (staticValue: T) => Provider; diff --git a/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..e28099d --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/index.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export * from "./CredentialsProviderError"; +/** + * @internal + */ +export * from "./ProviderError"; +/** + * @internal + */ +export * from "./TokenProviderError"; +/** + * @internal + */ +export * from "./chain"; +/** + * @internal + */ +export * from "./fromStatic"; +/** + * @internal + */ +export * from "./memoize"; diff --git a/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts new file mode 100644 index 0000000..29ce53d --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/dist-types/ts3.4/memoize.d.ts @@ -0,0 +1,40 @@ +import { MemoizedProvider, Provider } from "@smithy/types"; +interface MemoizeOverload { + /** + * + * Decorates a provider function with either static memoization. + * + * To create a statically memoized provider, supply a provider as the only + * argument to this function. The provider will be invoked once, and all + * invocations of the provider returned by `memoize` will return the same + * promise object. + * + * @param provider The provider whose result should be cached indefinitely. + */ + (provider: Provider): MemoizedProvider; + /** + * Decorates a provider function with refreshing memoization. + * + * @param provider The provider whose result should be cached. + * @param isExpired A function that will evaluate the resolved value and + * determine if it is expired. For example, when + * memoizing AWS credential providers, this function + * should return `true` when the credential's + * expiration is in the past (or very near future) and + * `false` otherwise. + * @param requiresRefresh A function that will evaluate the resolved value and + * determine if it represents static value or one that + * will eventually need to be refreshed. For example, + * AWS credentials that have no defined expiration will + * never need to be refreshed, so this function would + * return `true` if the credentials resolved by the + * underlying provider had an expiration and `false` + * otherwise. + */ + (provider: Provider, isExpired: (resolved: T) => boolean, requiresRefresh?: (resolved: T) => boolean): MemoizedProvider; +} +/** + * @internal + */ +export declare const memoize: MemoizeOverload; +export {}; diff --git a/bff/node_modules/@smithy/property-provider/package.json b/bff/node_modules/@smithy/property-provider/package.json new file mode 100644 index 0000000..565cefa --- /dev/null +++ b/bff/node_modules/@smithy/property-provider/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/property-provider", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline property-provider", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/property-provider", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/property-provider" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/protocol-http/LICENSE b/bff/node_modules/@smithy/protocol-http/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/protocol-http/README.md b/bff/node_modules/@smithy/protocol-http/README.md new file mode 100644 index 0000000..a547ab0 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/README.md @@ -0,0 +1,4 @@ +# @smithy/protocol-http + +[![NPM version](https://img.shields.io/npm/v/@smithy/protocol-http/latest.svg)](https://www.npmjs.com/package/@smithy/protocol-http) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/protocol-http.svg)](https://www.npmjs.com/package/@smithy/protocol-http) diff --git a/bff/node_modules/@smithy/protocol-http/dist-cjs/index.js b/bff/node_modules/@smithy/protocol-http/dist-cjs/index.js new file mode 100644 index 0000000..52303c3 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-cjs/index.js @@ -0,0 +1,169 @@ +'use strict'; + +var types = require('@smithy/types'); + +const getHttpHandlerExtensionConfiguration = (runtimeConfig) => { + return { + setHttpHandler(handler) { + runtimeConfig.httpHandler = handler; + }, + httpHandler() { + return runtimeConfig.httpHandler; + }, + updateHttpClientConfig(key, value) { + runtimeConfig.httpHandler?.updateHttpClientConfig(key, value); + }, + httpHandlerConfigs() { + return runtimeConfig.httpHandler.httpHandlerConfigs(); + }, + }; +}; +const resolveHttpHandlerRuntimeConfig = (httpHandlerExtensionConfiguration) => { + return { + httpHandler: httpHandlerExtensionConfiguration.httpHandler(), + }; +}; + +class Field { + name; + kind; + values; + constructor({ name, kind = types.FieldPosition.HEADER, values = [] }) { + this.name = name; + this.kind = kind; + this.values = values; + } + add(value) { + this.values.push(value); + } + set(values) { + this.values = values; + } + remove(value) { + this.values = this.values.filter((v) => v !== value); + } + toString() { + return this.values.map((v) => (v.includes(",") || v.includes(" ") ? `"${v}"` : v)).join(", "); + } + get() { + return this.values; + } +} + +class Fields { + entries = {}; + encoding; + constructor({ fields = [], encoding = "utf-8" }) { + fields.forEach(this.setField.bind(this)); + this.encoding = encoding; + } + setField(field) { + this.entries[field.name.toLowerCase()] = field; + } + getField(name) { + return this.entries[name.toLowerCase()]; + } + removeField(name) { + delete this.entries[name.toLowerCase()]; + } + getByType(kind) { + return Object.values(this.entries).filter((field) => field.kind === kind); + } +} + +class HttpRequest { + method; + protocol; + hostname; + port; + path; + query; + headers; + username; + password; + fragment; + body; + constructor(options) { + this.method = options.method || "GET"; + this.hostname = options.hostname || "localhost"; + this.port = options.port; + this.query = options.query || {}; + this.headers = options.headers || {}; + this.body = options.body; + this.protocol = options.protocol + ? options.protocol.slice(-1) !== ":" + ? `${options.protocol}:` + : options.protocol + : "https:"; + this.path = options.path ? (options.path.charAt(0) !== "/" ? `/${options.path}` : options.path) : "/"; + this.username = options.username; + this.password = options.password; + this.fragment = options.fragment; + } + static clone(request) { + const cloned = new HttpRequest({ + ...request, + headers: { ...request.headers }, + }); + if (cloned.query) { + cloned.query = cloneQuery(cloned.query); + } + return cloned; + } + static isInstance(request) { + if (!request) { + return false; + } + const req = request; + return ("method" in req && + "protocol" in req && + "hostname" in req && + "path" in req && + typeof req["query"] === "object" && + typeof req["headers"] === "object"); + } + clone() { + return HttpRequest.clone(this); + } +} +function cloneQuery(query) { + return Object.keys(query).reduce((carry, paramName) => { + const param = query[paramName]; + return { + ...carry, + [paramName]: Array.isArray(param) ? [...param] : param, + }; + }, {}); +} + +class HttpResponse { + statusCode; + reason; + headers; + body; + constructor(options) { + this.statusCode = options.statusCode; + this.reason = options.reason; + this.headers = options.headers || {}; + this.body = options.body; + } + static isInstance(response) { + if (!response) + return false; + const resp = response; + return typeof resp.statusCode === "number" && typeof resp.headers === "object"; + } +} + +function isValidHostname(hostname) { + const hostPattern = /^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/; + return hostPattern.test(hostname); +} + +exports.Field = Field; +exports.Fields = Fields; +exports.HttpRequest = HttpRequest; +exports.HttpResponse = HttpResponse; +exports.getHttpHandlerExtensionConfiguration = getHttpHandlerExtensionConfiguration; +exports.isValidHostname = isValidHostname; +exports.resolveHttpHandlerRuntimeConfig = resolveHttpHandlerRuntimeConfig; diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/Field.js b/bff/node_modules/@smithy/protocol-http/dist-es/Field.js new file mode 100644 index 0000000..19e5cb0 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/Field.js @@ -0,0 +1,26 @@ +import { FieldPosition } from "@smithy/types"; +export class Field { + name; + kind; + values; + constructor({ name, kind = FieldPosition.HEADER, values = [] }) { + this.name = name; + this.kind = kind; + this.values = values; + } + add(value) { + this.values.push(value); + } + set(values) { + this.values = values; + } + remove(value) { + this.values = this.values.filter((v) => v !== value); + } + toString() { + return this.values.map((v) => (v.includes(",") || v.includes(" ") ? `"${v}"` : v)).join(", "); + } + get() { + return this.values; + } +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/Fields.js b/bff/node_modules/@smithy/protocol-http/dist-es/Fields.js new file mode 100644 index 0000000..aa11388 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/Fields.js @@ -0,0 +1,20 @@ +export class Fields { + entries = {}; + encoding; + constructor({ fields = [], encoding = "utf-8" }) { + fields.forEach(this.setField.bind(this)); + this.encoding = encoding; + } + setField(field) { + this.entries[field.name.toLowerCase()] = field; + } + getField(name) { + return this.entries[name.toLowerCase()]; + } + removeField(name) { + delete this.entries[name.toLowerCase()]; + } + getByType(kind) { + return Object.values(this.entries).filter((field) => field.kind === kind); + } +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js b/bff/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js new file mode 100644 index 0000000..1a5aa0c --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js @@ -0,0 +1,21 @@ +export const getHttpHandlerExtensionConfiguration = (runtimeConfig) => { + return { + setHttpHandler(handler) { + runtimeConfig.httpHandler = handler; + }, + httpHandler() { + return runtimeConfig.httpHandler; + }, + updateHttpClientConfig(key, value) { + runtimeConfig.httpHandler?.updateHttpClientConfig(key, value); + }, + httpHandlerConfigs() { + return runtimeConfig.httpHandler.httpHandlerConfigs(); + }, + }; +}; +export const resolveHttpHandlerRuntimeConfig = (httpHandlerExtensionConfiguration) => { + return { + httpHandler: httpHandlerExtensionConfiguration.httpHandler(), + }; +}; diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/extensions/index.js b/bff/node_modules/@smithy/protocol-http/dist-es/extensions/index.js new file mode 100644 index 0000000..a215a4a --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/extensions/index.js @@ -0,0 +1 @@ +export * from "./httpExtensionConfiguration"; diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/httpHandler.js b/bff/node_modules/@smithy/protocol-http/dist-es/httpHandler.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/httpHandler.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/httpRequest.js b/bff/node_modules/@smithy/protocol-http/dist-es/httpRequest.js new file mode 100644 index 0000000..6e9b0c4 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/httpRequest.js @@ -0,0 +1,64 @@ +export class HttpRequest { + method; + protocol; + hostname; + port; + path; + query; + headers; + username; + password; + fragment; + body; + constructor(options) { + this.method = options.method || "GET"; + this.hostname = options.hostname || "localhost"; + this.port = options.port; + this.query = options.query || {}; + this.headers = options.headers || {}; + this.body = options.body; + this.protocol = options.protocol + ? options.protocol.slice(-1) !== ":" + ? `${options.protocol}:` + : options.protocol + : "https:"; + this.path = options.path ? (options.path.charAt(0) !== "/" ? `/${options.path}` : options.path) : "/"; + this.username = options.username; + this.password = options.password; + this.fragment = options.fragment; + } + static clone(request) { + const cloned = new HttpRequest({ + ...request, + headers: { ...request.headers }, + }); + if (cloned.query) { + cloned.query = cloneQuery(cloned.query); + } + return cloned; + } + static isInstance(request) { + if (!request) { + return false; + } + const req = request; + return ("method" in req && + "protocol" in req && + "hostname" in req && + "path" in req && + typeof req["query"] === "object" && + typeof req["headers"] === "object"); + } + clone() { + return HttpRequest.clone(this); + } +} +function cloneQuery(query) { + return Object.keys(query).reduce((carry, paramName) => { + const param = query[paramName]; + return { + ...carry, + [paramName]: Array.isArray(param) ? [...param] : param, + }; + }, {}); +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/httpResponse.js b/bff/node_modules/@smithy/protocol-http/dist-es/httpResponse.js new file mode 100644 index 0000000..be4be4e --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/httpResponse.js @@ -0,0 +1,18 @@ +export class HttpResponse { + statusCode; + reason; + headers; + body; + constructor(options) { + this.statusCode = options.statusCode; + this.reason = options.reason; + this.headers = options.headers || {}; + this.body = options.body; + } + static isInstance(response) { + if (!response) + return false; + const resp = response; + return typeof resp.statusCode === "number" && typeof resp.headers === "object"; + } +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/index.js b/bff/node_modules/@smithy/protocol-http/dist-es/index.js new file mode 100644 index 0000000..8ff7f26 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/index.js @@ -0,0 +1,8 @@ +export * from "./extensions"; +export * from "./Field"; +export * from "./Fields"; +export * from "./httpHandler"; +export * from "./httpRequest"; +export * from "./httpResponse"; +export * from "./isValidHostname"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/isValidHostname.js b/bff/node_modules/@smithy/protocol-http/dist-es/isValidHostname.js new file mode 100644 index 0000000..464c7db --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/isValidHostname.js @@ -0,0 +1,4 @@ +export function isValidHostname(hostname) { + const hostPattern = /^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/; + return hostPattern.test(hostname); +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-es/types.js b/bff/node_modules/@smithy/protocol-http/dist-es/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/Field.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/Field.d.ts new file mode 100644 index 0000000..d104bf7 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/Field.d.ts @@ -0,0 +1,50 @@ +import type { FieldOptions } from "@smithy/types"; +import { FieldPosition } from "@smithy/types"; +/** + * A name-value pair representing a single field + * transmitted in an HTTP Request or Response. + * + * The kind will dictate metadata placement within + * an HTTP message. + * + * All field names are case insensitive and + * case-variance must be treated as equivalent. + * Names MAY be normalized but SHOULD be preserved + * for accuracy during transmission. + */ +export declare class Field { + readonly name: string; + readonly kind: FieldPosition; + values: string[]; + constructor({ name, kind, values }: FieldOptions); + /** + * Appends a value to the field. + * + * @param value The value to append. + */ + add(value: string): void; + /** + * Overwrite existing field values. + * + * @param values The new field values. + */ + set(values: string[]): void; + /** + * Remove all matching entries from list. + * + * @param value Value to remove. + */ + remove(value: string): void; + /** + * Get comma-delimited string. + * + * @returns String representation of {@link Field}. + */ + toString(): string; + /** + * Get string values as a list + * + * @returns Values in {@link Field} as a list. + */ + get(): string[]; +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/Fields.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/Fields.d.ts new file mode 100644 index 0000000..da74a67 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/Fields.d.ts @@ -0,0 +1,44 @@ +import type { FieldPosition } from "@smithy/types"; +import type { Field } from "./Field"; +export type FieldsOptions = { + fields?: Field[]; + encoding?: string; +}; +/** + * Collection of Field entries mapped by name. + */ +export declare class Fields { + private readonly entries; + private readonly encoding; + constructor({ fields, encoding }: FieldsOptions); + /** + * Set entry for a {@link Field} name. The `name` + * attribute will be used to key the collection. + * + * @param field The {@link Field} to set. + */ + setField(field: Field): void; + /** + * Retrieve {@link Field} entry by name. + * + * @param name The name of the {@link Field} entry + * to retrieve + * @returns The {@link Field} if it exists. + */ + getField(name: string): Field | undefined; + /** + * Delete entry from collection. + * + * @param name Name of the entry to delete. + */ + removeField(name: string): void; + /** + * Helper function for retrieving specific types of fields. + * Used to grab all headers or all trailers. + * + * @param kind {@link FieldPosition} of entries to retrieve. + * @returns The {@link Field} entries with the specified + * {@link FieldPosition}. + */ + getByType(kind: FieldPosition): Field[]; +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts new file mode 100644 index 0000000..8914587 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/extensions/httpExtensionConfiguration.d.ts @@ -0,0 +1,33 @@ +import type { HttpHandler } from "../httpHandler"; +/** + * @internal + */ +export interface HttpHandlerExtensionConfiguration { + setHttpHandler(handler: HttpHandler): void; + httpHandler(): HttpHandler; + updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void; + httpHandlerConfigs(): HandlerConfig; +} +/** + * @internal + */ +export type HttpHandlerExtensionConfigType = Partial<{ + httpHandler: HttpHandler; +}>; +/** + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getHttpHandlerExtensionConfiguration: (runtimeConfig: HttpHandlerExtensionConfigType) => { + setHttpHandler(handler: HttpHandler): void; + httpHandler(): HttpHandler; + updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void; + httpHandlerConfigs(): HandlerConfig; +}; +/** + * @internal + * + * Helper function to resolve runtime config from default extension configuration + */ +export declare const resolveHttpHandlerRuntimeConfig: (httpHandlerExtensionConfiguration: HttpHandlerExtensionConfiguration) => HttpHandlerExtensionConfigType; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts new file mode 100644 index 0000000..a215a4a --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/extensions/index.d.ts @@ -0,0 +1 @@ +export * from "./httpExtensionConfiguration"; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/httpHandler.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/httpHandler.d.ts new file mode 100644 index 0000000..8dc8d32 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/httpHandler.d.ts @@ -0,0 +1,35 @@ +import type { FetchHttpHandlerOptions, HttpHandlerOptions, NodeHttpHandlerOptions, RequestHandler } from "@smithy/types"; +import type { HttpRequest } from "./httpRequest"; +import type { HttpResponse } from "./httpResponse"; +/** + * @internal + */ +export type HttpHandler = RequestHandler & { + /** + * @internal + */ + updateHttpClientConfig(key: keyof HttpHandlerConfig, value: HttpHandlerConfig[typeof key]): void; + /** + * @internal + */ + httpHandlerConfigs(): HttpHandlerConfig; +}; +/** + * @public + * + * A type representing the accepted user inputs for the `requestHandler` field + * of a client's constructor object. + * + * You may provide an instance of an HttpHandler, or alternatively + * provide the constructor arguments as an object which will be passed + * to the constructor of the default request handler. + * + * The default class constructor to which your arguments will be passed + * varies. The Node.js default is the NodeHttpHandler and the browser/react-native + * default is the FetchHttpHandler. In rarer cases specific clients may be + * configured to use other default implementations such as Websocket or HTTP2. + * + * The fallback type Record is part of the union to allow + * passing constructor params to an unknown requestHandler type. + */ +export type HttpHandlerUserInput = HttpHandler | NodeHttpHandlerOptions | FetchHttpHandlerOptions | Record; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/httpRequest.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/httpRequest.d.ts new file mode 100644 index 0000000..00b46a4 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/httpRequest.d.ts @@ -0,0 +1,56 @@ +import type { HeaderBag, HttpMessage, QueryParameterBag, URI } from "@smithy/types"; +import { HttpRequest as IHttpRequest } from "@smithy/types"; +type HttpRequestOptions = Partial & Partial & { + method?: string; +}; +/** + * Use the distinct IHttpRequest interface from \@smithy/types instead. + * This should not be used due to + * overlapping with the concrete class' name. + * + * This is not marked deprecated since that would mark the concrete class + * deprecated as well. + * + * @internal + */ +export interface HttpRequest extends IHttpRequest { +} +/** + * @public + */ +export { IHttpRequest }; +/** + * @public + */ +export declare class HttpRequest implements HttpMessage, URI { + method: string; + protocol: string; + hostname: string; + port?: number; + path: string; + query: QueryParameterBag; + headers: HeaderBag; + username?: string; + password?: string; + fragment?: string; + body?: any; + constructor(options: HttpRequestOptions); + /** + * Note: this does not deep-clone the body. + */ + static clone(request: IHttpRequest): HttpRequest; + /** + * This method only actually asserts that request is the interface {@link IHttpRequest}, + * and not necessarily this concrete class. Left in place for API stability. + * + * Do not call instance methods on the input of this function, and + * do not assume it has the HttpRequest prototype. + */ + static isInstance(request: unknown): request is HttpRequest; + /** + * @deprecated use static HttpRequest.clone(request) instead. It's not safe to call + * this method because {@link HttpRequest.isInstance} incorrectly + * asserts that IHttpRequest (interface) objects are of type HttpRequest (class). + */ + clone(): HttpRequest; +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/httpResponse.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/httpResponse.d.ts new file mode 100644 index 0000000..f03e49e --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/httpResponse.d.ts @@ -0,0 +1,29 @@ +import type { HeaderBag, HttpMessage, HttpResponse as IHttpResponse } from "@smithy/types"; +type HttpResponseOptions = Partial & { + statusCode: number; + reason?: string; +}; +/** + * Use the distinct IHttpResponse interface from \@smithy/types instead. + * This should not be used due to + * overlapping with the concrete class' name. + * + * This is not marked deprecated since that would mark the concrete class + * deprecated as well. + * + * @internal + */ +export interface HttpResponse extends IHttpResponse { +} +/** + * @public + */ +export declare class HttpResponse { + statusCode: number; + reason?: string; + headers: HeaderBag; + body?: any; + constructor(options: HttpResponseOptions); + static isInstance(response: unknown): response is HttpResponse; +} +export {}; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/index.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/index.d.ts new file mode 100644 index 0000000..8ff7f26 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/index.d.ts @@ -0,0 +1,8 @@ +export * from "./extensions"; +export * from "./Field"; +export * from "./Fields"; +export * from "./httpHandler"; +export * from "./httpRequest"; +export * from "./httpResponse"; +export * from "./isValidHostname"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/isValidHostname.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/isValidHostname.d.ts new file mode 100644 index 0000000..6fb5bcb --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/isValidHostname.d.ts @@ -0,0 +1 @@ +export declare function isValidHostname(hostname: string): boolean; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/Field.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/Field.d.ts new file mode 100644 index 0000000..64684c2 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/Field.d.ts @@ -0,0 +1,50 @@ +import { FieldOptions } from "@smithy/types"; +import { FieldPosition } from "@smithy/types"; +/** + * A name-value pair representing a single field + * transmitted in an HTTP Request or Response. + * + * The kind will dictate metadata placement within + * an HTTP message. + * + * All field names are case insensitive and + * case-variance must be treated as equivalent. + * Names MAY be normalized but SHOULD be preserved + * for accuracy during transmission. + */ +export declare class Field { + readonly name: string; + readonly kind: FieldPosition; + values: string[]; + constructor({ name, kind, values }: FieldOptions); + /** + * Appends a value to the field. + * + * @param value The value to append. + */ + add(value: string): void; + /** + * Overwrite existing field values. + * + * @param values The new field values. + */ + set(values: string[]): void; + /** + * Remove all matching entries from list. + * + * @param value Value to remove. + */ + remove(value: string): void; + /** + * Get comma-delimited string. + * + * @returns String representation of {@link Field}. + */ + toString(): string; + /** + * Get string values as a list + * + * @returns Values in {@link Field} as a list. + */ + get(): string[]; +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/Fields.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/Fields.d.ts new file mode 100644 index 0000000..616f55e --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/Fields.d.ts @@ -0,0 +1,44 @@ +import { FieldPosition } from "@smithy/types"; +import { Field } from "./Field"; +export type FieldsOptions = { + fields?: Field[]; + encoding?: string; +}; +/** + * Collection of Field entries mapped by name. + */ +export declare class Fields { + private readonly entries; + private readonly encoding; + constructor({ fields, encoding }: FieldsOptions); + /** + * Set entry for a {@link Field} name. The `name` + * attribute will be used to key the collection. + * + * @param field The {@link Field} to set. + */ + setField(field: Field): void; + /** + * Retrieve {@link Field} entry by name. + * + * @param name The name of the {@link Field} entry + * to retrieve + * @returns The {@link Field} if it exists. + */ + getField(name: string): Field | undefined; + /** + * Delete entry from collection. + * + * @param name Name of the entry to delete. + */ + removeField(name: string): void; + /** + * Helper function for retrieving specific types of fields. + * Used to grab all headers or all trailers. + * + * @param kind {@link FieldPosition} of entries to retrieve. + * @returns The {@link Field} entries with the specified + * {@link FieldPosition}. + */ + getByType(kind: FieldPosition): Field[]; +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts new file mode 100644 index 0000000..30c45f8 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/httpExtensionConfiguration.d.ts @@ -0,0 +1,33 @@ +import { HttpHandler } from "../httpHandler"; +/** + * @internal + */ +export interface HttpHandlerExtensionConfiguration { + setHttpHandler(handler: HttpHandler): void; + httpHandler(): HttpHandler; + updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void; + httpHandlerConfigs(): HandlerConfig; +} +/** + * @internal + */ +export type HttpHandlerExtensionConfigType = Partial<{ + httpHandler: HttpHandler; +}>; +/** + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getHttpHandlerExtensionConfiguration: (runtimeConfig: HttpHandlerExtensionConfigType) => { + setHttpHandler(handler: HttpHandler): void; + httpHandler(): HttpHandler; + updateHttpClientConfig(key: keyof HandlerConfig, value: HandlerConfig[typeof key]): void; + httpHandlerConfigs(): HandlerConfig; +}; +/** + * @internal + * + * Helper function to resolve runtime config from default extension configuration + */ +export declare const resolveHttpHandlerRuntimeConfig: (httpHandlerExtensionConfiguration: HttpHandlerExtensionConfiguration) => HttpHandlerExtensionConfigType; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/index.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 0000000..e0f765b --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1 @@ +export * from "./httpExtensionConfiguration"; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpHandler.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpHandler.d.ts new file mode 100644 index 0000000..b8f1978 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpHandler.d.ts @@ -0,0 +1,35 @@ +import { FetchHttpHandlerOptions, HttpHandlerOptions, NodeHttpHandlerOptions, RequestHandler } from "@smithy/types"; +import { HttpRequest } from "./httpRequest"; +import { HttpResponse } from "./httpResponse"; +/** + * @internal + */ +export type HttpHandler = RequestHandler & { + /** + * @internal + */ + updateHttpClientConfig(key: keyof HttpHandlerConfig, value: HttpHandlerConfig[typeof key]): void; + /** + * @internal + */ + httpHandlerConfigs(): HttpHandlerConfig; +}; +/** + * @public + * + * A type representing the accepted user inputs for the `requestHandler` field + * of a client's constructor object. + * + * You may provide an instance of an HttpHandler, or alternatively + * provide the constructor arguments as an object which will be passed + * to the constructor of the default request handler. + * + * The default class constructor to which your arguments will be passed + * varies. The Node.js default is the NodeHttpHandler and the browser/react-native + * default is the FetchHttpHandler. In rarer cases specific clients may be + * configured to use other default implementations such as Websocket or HTTP2. + * + * The fallback type Record is part of the union to allow + * passing constructor params to an unknown requestHandler type. + */ +export type HttpHandlerUserInput = HttpHandler | NodeHttpHandlerOptions | FetchHttpHandlerOptions | Record; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpRequest.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpRequest.d.ts new file mode 100644 index 0000000..6ffcc91 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpRequest.d.ts @@ -0,0 +1,56 @@ +import { HeaderBag, HttpMessage, QueryParameterBag, URI } from "@smithy/types"; +import { HttpRequest as IHttpRequest } from "@smithy/types"; +type HttpRequestOptions = Partial & Partial & { + method?: string; +}; +/** + * Use the distinct IHttpRequest interface from \@smithy/types instead. + * This should not be used due to + * overlapping with the concrete class' name. + * + * This is not marked deprecated since that would mark the concrete class + * deprecated as well. + * + * @internal + */ +export interface HttpRequest extends IHttpRequest { +} +/** + * @public + */ +export { IHttpRequest }; +/** + * @public + */ +export declare class HttpRequest implements HttpMessage, URI { + method: string; + protocol: string; + hostname: string; + port?: number; + path: string; + query: QueryParameterBag; + headers: HeaderBag; + username?: string; + password?: string; + fragment?: string; + body?: any; + constructor(options: HttpRequestOptions); + /** + * Note: this does not deep-clone the body. + */ + static clone(request: IHttpRequest): HttpRequest; + /** + * This method only actually asserts that request is the interface {@link IHttpRequest}, + * and not necessarily this concrete class. Left in place for API stability. + * + * Do not call instance methods on the input of this function, and + * do not assume it has the HttpRequest prototype. + */ + static isInstance(request: unknown): request is HttpRequest; + /** + * @deprecated use static HttpRequest.clone(request) instead. It's not safe to call + * this method because {@link HttpRequest.isInstance} incorrectly + * asserts that IHttpRequest (interface) objects are of type HttpRequest (class). + */ + clone(): HttpRequest; +} diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpResponse.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpResponse.d.ts new file mode 100644 index 0000000..8babc91 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/httpResponse.d.ts @@ -0,0 +1,29 @@ +import { HeaderBag, HttpMessage, HttpResponse as IHttpResponse } from "@smithy/types"; +type HttpResponseOptions = Partial & { + statusCode: number; + reason?: string; +}; +/** + * Use the distinct IHttpResponse interface from \@smithy/types instead. + * This should not be used due to + * overlapping with the concrete class' name. + * + * This is not marked deprecated since that would mark the concrete class + * deprecated as well. + * + * @internal + */ +export interface HttpResponse extends IHttpResponse { +} +/** + * @public + */ +export declare class HttpResponse { + statusCode: number; + reason?: string; + headers: HeaderBag; + body?: any; + constructor(options: HttpResponseOptions); + static isInstance(response: unknown): response is HttpResponse; +} +export {}; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..08feffa --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +export * from "./extensions"; +export * from "./Field"; +export * from "./Fields"; +export * from "./httpHandler"; +export * from "./httpRequest"; +export * from "./httpResponse"; +export * from "./isValidHostname"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/isValidHostname.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/isValidHostname.d.ts new file mode 100644 index 0000000..7b85b36 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/isValidHostname.d.ts @@ -0,0 +1 @@ +export declare function isValidHostname(hostname: string): boolean; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/types.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..42e3c66 --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/ts3.4/types.d.ts @@ -0,0 +1,21 @@ +import { FieldOptions as __FieldOptions, FieldPosition as __FieldPosition, HeaderBag as __HeaderBag, HttpHandlerOptions as __HttpHandlerOptions, HttpMessage as __HttpMessage } from "@smithy/types"; +/** + * @deprecated Use FieldOptions from `@smithy/types` instead + */ +export type FieldOptions = __FieldOptions; +/** + * @deprecated Use FieldPosition from `@smithy/types` instead + */ +export type FieldPosition = __FieldPosition; +/** + * @deprecated Use HeaderBag from `@smithy/types` instead + */ +export type HeaderBag = __HeaderBag; +/** + * @deprecated Use HttpMessage from `@smithy/types` instead + */ +export type HttpMessage = __HttpMessage; +/** + * @deprecated Use HttpHandlerOptions from `@smithy/types` instead + */ +export type HttpHandlerOptions = __HttpHandlerOptions; diff --git a/bff/node_modules/@smithy/protocol-http/dist-types/types.d.ts b/bff/node_modules/@smithy/protocol-http/dist-types/types.d.ts new file mode 100644 index 0000000..d5669cb --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/dist-types/types.d.ts @@ -0,0 +1,21 @@ +import type { FieldOptions as __FieldOptions, FieldPosition as __FieldPosition, HeaderBag as __HeaderBag, HttpHandlerOptions as __HttpHandlerOptions, HttpMessage as __HttpMessage } from "@smithy/types"; +/** + * @deprecated Use FieldOptions from `@smithy/types` instead + */ +export type FieldOptions = __FieldOptions; +/** + * @deprecated Use FieldPosition from `@smithy/types` instead + */ +export type FieldPosition = __FieldPosition; +/** + * @deprecated Use HeaderBag from `@smithy/types` instead + */ +export type HeaderBag = __HeaderBag; +/** + * @deprecated Use HttpMessage from `@smithy/types` instead + */ +export type HttpMessage = __HttpMessage; +/** + * @deprecated Use HttpHandlerOptions from `@smithy/types` instead + */ +export type HttpHandlerOptions = __HttpHandlerOptions; diff --git a/bff/node_modules/@smithy/protocol-http/package.json b/bff/node_modules/@smithy/protocol-http/package.json new file mode 100644 index 0000000..c0988aa --- /dev/null +++ b/bff/node_modules/@smithy/protocol-http/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/protocol-http", + "version": "5.3.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline protocol-http", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS Smithy Team", + "email": "", + "url": "https://smithy.io" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/protocol-http", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/protocol-http" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/querystring-builder/LICENSE b/bff/node_modules/@smithy/querystring-builder/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@smithy/querystring-builder/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/querystring-builder/README.md b/bff/node_modules/@smithy/querystring-builder/README.md new file mode 100644 index 0000000..00275da --- /dev/null +++ b/bff/node_modules/@smithy/querystring-builder/README.md @@ -0,0 +1,10 @@ +# @smithy/querystring-builder + +[![NPM version](https://img.shields.io/npm/v/@smithy/querystring-builder/latest.svg)](https://www.npmjs.com/package/@smithy/querystring-builder) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/querystring-builder.svg)](https://www.npmjs.com/package/@smithy/querystring-builder) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/querystring-builder/dist-cjs/index.js b/bff/node_modules/@smithy/querystring-builder/dist-cjs/index.js new file mode 100644 index 0000000..f245489 --- /dev/null +++ b/bff/node_modules/@smithy/querystring-builder/dist-cjs/index.js @@ -0,0 +1,26 @@ +'use strict'; + +var utilUriEscape = require('@smithy/util-uri-escape'); + +function buildQueryString(query) { + const parts = []; + for (let key of Object.keys(query).sort()) { + const value = query[key]; + key = utilUriEscape.escapeUri(key); + if (Array.isArray(value)) { + for (let i = 0, iLen = value.length; i < iLen; i++) { + parts.push(`${key}=${utilUriEscape.escapeUri(value[i])}`); + } + } + else { + let qsEntry = key; + if (value || typeof value === "string") { + qsEntry += `=${utilUriEscape.escapeUri(value)}`; + } + parts.push(qsEntry); + } + } + return parts.join("&"); +} + +exports.buildQueryString = buildQueryString; diff --git a/bff/node_modules/@smithy/querystring-builder/dist-es/index.js b/bff/node_modules/@smithy/querystring-builder/dist-es/index.js new file mode 100644 index 0000000..fbc7684 --- /dev/null +++ b/bff/node_modules/@smithy/querystring-builder/dist-es/index.js @@ -0,0 +1,21 @@ +import { escapeUri } from "@smithy/util-uri-escape"; +export function buildQueryString(query) { + const parts = []; + for (let key of Object.keys(query).sort()) { + const value = query[key]; + key = escapeUri(key); + if (Array.isArray(value)) { + for (let i = 0, iLen = value.length; i < iLen; i++) { + parts.push(`${key}=${escapeUri(value[i])}`); + } + } + else { + let qsEntry = key; + if (value || typeof value === "string") { + qsEntry += `=${escapeUri(value)}`; + } + parts.push(qsEntry); + } + } + return parts.join("&"); +} diff --git a/bff/node_modules/@smithy/querystring-builder/dist-types/index.d.ts b/bff/node_modules/@smithy/querystring-builder/dist-types/index.d.ts new file mode 100644 index 0000000..2e3b4a4 --- /dev/null +++ b/bff/node_modules/@smithy/querystring-builder/dist-types/index.d.ts @@ -0,0 +1,5 @@ +import type { QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare function buildQueryString(query: QueryParameterBag): string; diff --git a/bff/node_modules/@smithy/querystring-builder/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/querystring-builder/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..1f866f3 --- /dev/null +++ b/bff/node_modules/@smithy/querystring-builder/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +import { QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare function buildQueryString(query: QueryParameterBag): string; diff --git a/bff/node_modules/@smithy/querystring-builder/package.json b/bff/node_modules/@smithy/querystring-builder/package.json new file mode 100644 index 0000000..bf7282d --- /dev/null +++ b/bff/node_modules/@smithy/querystring-builder/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/querystring-builder", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline querystring-builder", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "exit 0" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-uri-escape": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/querystring-builder", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/querystring-builder" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/querystring-parser/LICENSE b/bff/node_modules/@smithy/querystring-parser/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@smithy/querystring-parser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/querystring-parser/README.md b/bff/node_modules/@smithy/querystring-parser/README.md new file mode 100644 index 0000000..02dcf51 --- /dev/null +++ b/bff/node_modules/@smithy/querystring-parser/README.md @@ -0,0 +1,10 @@ +# @smithy/querystring-parser + +[![NPM version](https://img.shields.io/npm/v/@smithy/querystring-parser/latest.svg)](https://www.npmjs.com/package/@smithy/querystring-parser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/querystring-parser.svg)](https://www.npmjs.com/package/@smithy/querystring-parser) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/querystring-parser/dist-cjs/index.js b/bff/node_modules/@smithy/querystring-parser/dist-cjs/index.js new file mode 100644 index 0000000..d1efbf7 --- /dev/null +++ b/bff/node_modules/@smithy/querystring-parser/dist-cjs/index.js @@ -0,0 +1,27 @@ +'use strict'; + +function parseQueryString(querystring) { + const query = {}; + querystring = querystring.replace(/^\?/, ""); + if (querystring) { + for (const pair of querystring.split("&")) { + let [key, value = null] = pair.split("="); + key = decodeURIComponent(key); + if (value) { + value = decodeURIComponent(value); + } + if (!(key in query)) { + query[key] = value; + } + else if (Array.isArray(query[key])) { + query[key].push(value); + } + else { + query[key] = [query[key], value]; + } + } + } + return query; +} + +exports.parseQueryString = parseQueryString; diff --git a/bff/node_modules/@smithy/querystring-parser/dist-es/index.js b/bff/node_modules/@smithy/querystring-parser/dist-es/index.js new file mode 100644 index 0000000..bd7bf00 --- /dev/null +++ b/bff/node_modules/@smithy/querystring-parser/dist-es/index.js @@ -0,0 +1,23 @@ +export function parseQueryString(querystring) { + const query = {}; + querystring = querystring.replace(/^\?/, ""); + if (querystring) { + for (const pair of querystring.split("&")) { + let [key, value = null] = pair.split("="); + key = decodeURIComponent(key); + if (value) { + value = decodeURIComponent(value); + } + if (!(key in query)) { + query[key] = value; + } + else if (Array.isArray(query[key])) { + query[key].push(value); + } + else { + query[key] = [query[key], value]; + } + } + } + return query; +} diff --git a/bff/node_modules/@smithy/querystring-parser/dist-types/index.d.ts b/bff/node_modules/@smithy/querystring-parser/dist-types/index.d.ts new file mode 100644 index 0000000..6d31bac --- /dev/null +++ b/bff/node_modules/@smithy/querystring-parser/dist-types/index.d.ts @@ -0,0 +1,5 @@ +import type { QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare function parseQueryString(querystring: string): QueryParameterBag; diff --git a/bff/node_modules/@smithy/querystring-parser/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/querystring-parser/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..8bb747d --- /dev/null +++ b/bff/node_modules/@smithy/querystring-parser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +import { QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare function parseQueryString(querystring: string): QueryParameterBag; diff --git a/bff/node_modules/@smithy/querystring-parser/package.json b/bff/node_modules/@smithy/querystring-parser/package.json new file mode 100644 index 0000000..8ac7ede --- /dev/null +++ b/bff/node_modules/@smithy/querystring-parser/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/querystring-parser", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline querystring-parser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/querystring-parser", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/querystring-parser" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/service-error-classification/LICENSE b/bff/node_modules/@smithy/service-error-classification/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/service-error-classification/README.md b/bff/node_modules/@smithy/service-error-classification/README.md new file mode 100644 index 0000000..902dd43 --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/README.md @@ -0,0 +1,4 @@ +# @smithy/service-error-classification + +[![NPM version](https://img.shields.io/npm/v/@smithy/service-error-classification/latest.svg)](https://www.npmjs.com/package/@smithy/service-error-classification) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/service-error-classification.svg)](https://www.npmjs.com/package/@smithy/service-error-classification) diff --git a/bff/node_modules/@smithy/service-error-classification/dist-cjs/index.js b/bff/node_modules/@smithy/service-error-classification/dist-cjs/index.js new file mode 100644 index 0000000..03f2023 --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/dist-cjs/index.js @@ -0,0 +1,77 @@ +'use strict'; + +const CLOCK_SKEW_ERROR_CODES = [ + "AuthFailure", + "InvalidSignatureException", + "RequestExpired", + "RequestInTheFuture", + "RequestTimeTooSkewed", + "SignatureDoesNotMatch", +]; +const THROTTLING_ERROR_CODES = [ + "BandwidthLimitExceeded", + "EC2ThrottledException", + "LimitExceededException", + "PriorRequestNotComplete", + "ProvisionedThroughputExceededException", + "RequestLimitExceeded", + "RequestThrottled", + "RequestThrottledException", + "SlowDown", + "ThrottledException", + "Throttling", + "ThrottlingException", + "TooManyRequestsException", + "TransactionInProgressException", +]; +const TRANSIENT_ERROR_CODES = ["TimeoutError", "RequestTimeout", "RequestTimeoutException"]; +const TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504]; +const NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "ECONNREFUSED", "EPIPE", "ETIMEDOUT"]; +const NODEJS_NETWORK_ERROR_CODES = ["EHOSTUNREACH", "ENETUNREACH", "ENOTFOUND"]; + +const isRetryableByTrait = (error) => error?.$retryable !== undefined; +const isClockSkewError = (error) => CLOCK_SKEW_ERROR_CODES.includes(error.name); +const isClockSkewCorrectedError = (error) => error.$metadata?.clockSkewCorrected; +const isBrowserNetworkError = (error) => { + const errorMessages = new Set([ + "Failed to fetch", + "NetworkError when attempting to fetch resource", + "The Internet connection appears to be offline", + "Load failed", + "Network request failed", + ]); + const isValid = error && error instanceof TypeError; + if (!isValid) { + return false; + } + return errorMessages.has(error.message); +}; +const isThrottlingError = (error) => error.$metadata?.httpStatusCode === 429 || + THROTTLING_ERROR_CODES.includes(error.name) || + error.$retryable?.throttling == true; +const isTransientError = (error, depth = 0) => isRetryableByTrait(error) || + isClockSkewCorrectedError(error) || + TRANSIENT_ERROR_CODES.includes(error.name) || + NODEJS_TIMEOUT_ERROR_CODES.includes(error?.code || "") || + NODEJS_NETWORK_ERROR_CODES.includes(error?.code || "") || + TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0) || + isBrowserNetworkError(error) || + (error.cause !== undefined && depth <= 10 && isTransientError(error.cause, depth + 1)); +const isServerError = (error) => { + if (error.$metadata?.httpStatusCode !== undefined) { + const statusCode = error.$metadata.httpStatusCode; + if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) { + return true; + } + return false; + } + return false; +}; + +exports.isBrowserNetworkError = isBrowserNetworkError; +exports.isClockSkewCorrectedError = isClockSkewCorrectedError; +exports.isClockSkewError = isClockSkewError; +exports.isRetryableByTrait = isRetryableByTrait; +exports.isServerError = isServerError; +exports.isThrottlingError = isThrottlingError; +exports.isTransientError = isTransientError; diff --git a/bff/node_modules/@smithy/service-error-classification/dist-es/constants.js b/bff/node_modules/@smithy/service-error-classification/dist-es/constants.js new file mode 100644 index 0000000..7a4b7e3 --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/dist-es/constants.js @@ -0,0 +1,28 @@ +export const CLOCK_SKEW_ERROR_CODES = [ + "AuthFailure", + "InvalidSignatureException", + "RequestExpired", + "RequestInTheFuture", + "RequestTimeTooSkewed", + "SignatureDoesNotMatch", +]; +export const THROTTLING_ERROR_CODES = [ + "BandwidthLimitExceeded", + "EC2ThrottledException", + "LimitExceededException", + "PriorRequestNotComplete", + "ProvisionedThroughputExceededException", + "RequestLimitExceeded", + "RequestThrottled", + "RequestThrottledException", + "SlowDown", + "ThrottledException", + "Throttling", + "ThrottlingException", + "TooManyRequestsException", + "TransactionInProgressException", +]; +export const TRANSIENT_ERROR_CODES = ["TimeoutError", "RequestTimeout", "RequestTimeoutException"]; +export const TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504]; +export const NODEJS_TIMEOUT_ERROR_CODES = ["ECONNRESET", "ECONNREFUSED", "EPIPE", "ETIMEDOUT"]; +export const NODEJS_NETWORK_ERROR_CODES = ["EHOSTUNREACH", "ENETUNREACH", "ENOTFOUND"]; diff --git a/bff/node_modules/@smithy/service-error-classification/dist-es/index.js b/bff/node_modules/@smithy/service-error-classification/dist-es/index.js new file mode 100644 index 0000000..8612c73 --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/dist-es/index.js @@ -0,0 +1,39 @@ +import { CLOCK_SKEW_ERROR_CODES, NODEJS_NETWORK_ERROR_CODES, NODEJS_TIMEOUT_ERROR_CODES, THROTTLING_ERROR_CODES, TRANSIENT_ERROR_CODES, TRANSIENT_ERROR_STATUS_CODES, } from "./constants"; +export const isRetryableByTrait = (error) => error?.$retryable !== undefined; +export const isClockSkewError = (error) => CLOCK_SKEW_ERROR_CODES.includes(error.name); +export const isClockSkewCorrectedError = (error) => error.$metadata?.clockSkewCorrected; +export const isBrowserNetworkError = (error) => { + const errorMessages = new Set([ + "Failed to fetch", + "NetworkError when attempting to fetch resource", + "The Internet connection appears to be offline", + "Load failed", + "Network request failed", + ]); + const isValid = error && error instanceof TypeError; + if (!isValid) { + return false; + } + return errorMessages.has(error.message); +}; +export const isThrottlingError = (error) => error.$metadata?.httpStatusCode === 429 || + THROTTLING_ERROR_CODES.includes(error.name) || + error.$retryable?.throttling == true; +export const isTransientError = (error, depth = 0) => isRetryableByTrait(error) || + isClockSkewCorrectedError(error) || + TRANSIENT_ERROR_CODES.includes(error.name) || + NODEJS_TIMEOUT_ERROR_CODES.includes(error?.code || "") || + NODEJS_NETWORK_ERROR_CODES.includes(error?.code || "") || + TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0) || + isBrowserNetworkError(error) || + (error.cause !== undefined && depth <= 10 && isTransientError(error.cause, depth + 1)); +export const isServerError = (error) => { + if (error.$metadata?.httpStatusCode !== undefined) { + const statusCode = error.$metadata.httpStatusCode; + if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) { + return true; + } + return false; + } + return false; +}; diff --git a/bff/node_modules/@smithy/service-error-classification/dist-types/constants.d.ts b/bff/node_modules/@smithy/service-error-classification/dist-types/constants.d.ts new file mode 100644 index 0000000..fb69129 --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/dist-types/constants.d.ts @@ -0,0 +1,30 @@ +/** + * Errors encountered when the client clock and server clock cannot agree on the + * current time. + * + * These errors are retryable, assuming the SDK has enabled clock skew + * correction. + */ +export declare const CLOCK_SKEW_ERROR_CODES: string[]; +/** + * Errors that indicate the SDK is being throttled. + * + * These errors are always retryable. + */ +export declare const THROTTLING_ERROR_CODES: string[]; +/** + * Error codes that indicate transient issues + */ +export declare const TRANSIENT_ERROR_CODES: string[]; +/** + * Error codes that indicate transient issues + */ +export declare const TRANSIENT_ERROR_STATUS_CODES: number[]; +/** + * Node.js system error codes that indicate timeout. + */ +export declare const NODEJS_TIMEOUT_ERROR_CODES: string[]; +/** + * Node.js system error codes that indicate network error. + */ +export declare const NODEJS_NETWORK_ERROR_CODES: string[]; diff --git a/bff/node_modules/@smithy/service-error-classification/dist-types/index.d.ts b/bff/node_modules/@smithy/service-error-classification/dist-types/index.d.ts new file mode 100644 index 0000000..2245dd7 --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/dist-types/index.d.ts @@ -0,0 +1,24 @@ +import type { SdkError } from "@smithy/types"; +export declare const isRetryableByTrait: (error: SdkError) => boolean; +/** + * @deprecated use isClockSkewCorrectedError. This is only used in deprecated code. + */ +export declare const isClockSkewError: (error: SdkError) => boolean; +/** + * @returns whether the error resulted in a systemClockOffset aka clock skew correction. + */ +export declare const isClockSkewCorrectedError: (error: SdkError) => true | undefined; +/** + * + * @internal + */ +export declare const isBrowserNetworkError: (error: SdkError) => boolean; +export declare const isThrottlingError: (error: SdkError) => boolean; +/** + * Though NODEJS_TIMEOUT_ERROR_CODES are platform specific, they are + * included here because there is an error scenario with unknown root + * cause where the NodeHttpHandler does not decorate the Error with + * the name "TimeoutError" to be checked by the TRANSIENT_ERROR_CODES condition. + */ +export declare const isTransientError: (error: SdkError, depth?: number) => boolean; +export declare const isServerError: (error: SdkError) => boolean; diff --git a/bff/node_modules/@smithy/service-error-classification/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@smithy/service-error-classification/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..beab25b --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,30 @@ +/** + * Errors encountered when the client clock and server clock cannot agree on the + * current time. + * + * These errors are retryable, assuming the SDK has enabled clock skew + * correction. + */ +export declare const CLOCK_SKEW_ERROR_CODES: string[]; +/** + * Errors that indicate the SDK is being throttled. + * + * These errors are always retryable. + */ +export declare const THROTTLING_ERROR_CODES: string[]; +/** + * Error codes that indicate transient issues + */ +export declare const TRANSIENT_ERROR_CODES: string[]; +/** + * Error codes that indicate transient issues + */ +export declare const TRANSIENT_ERROR_STATUS_CODES: number[]; +/** + * Node.js system error codes that indicate timeout. + */ +export declare const NODEJS_TIMEOUT_ERROR_CODES: string[]; +/** + * Node.js system error codes that indicate network error. + */ +export declare const NODEJS_NETWORK_ERROR_CODES: string[]; diff --git a/bff/node_modules/@smithy/service-error-classification/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/service-error-classification/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..c7909ae --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/dist-types/ts3.4/index.d.ts @@ -0,0 +1,24 @@ +import { SdkError } from "@smithy/types"; +export declare const isRetryableByTrait: (error: SdkError) => boolean; +/** + * @deprecated use isClockSkewCorrectedError. This is only used in deprecated code. + */ +export declare const isClockSkewError: (error: SdkError) => boolean; +/** + * @returns whether the error resulted in a systemClockOffset aka clock skew correction. + */ +export declare const isClockSkewCorrectedError: (error: SdkError) => true | undefined; +/** + * + * @internal + */ +export declare const isBrowserNetworkError: (error: SdkError) => boolean; +export declare const isThrottlingError: (error: SdkError) => boolean; +/** + * Though NODEJS_TIMEOUT_ERROR_CODES are platform specific, they are + * included here because there is an error scenario with unknown root + * cause where the NodeHttpHandler does not decorate the Error with + * the name "TimeoutError" to be checked by the TRANSIENT_ERROR_CODES condition. + */ +export declare const isTransientError: (error: SdkError, depth?: number) => boolean; +export declare const isServerError: (error: SdkError) => boolean; diff --git a/bff/node_modules/@smithy/service-error-classification/package.json b/bff/node_modules/@smithy/service-error-classification/package.json new file mode 100644 index 0000000..eceed03 --- /dev/null +++ b/bff/node_modules/@smithy/service-error-classification/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/service-error-classification", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline service-error-classification", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/service-error-classification", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/service-error-classification" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "dependencies": { + "@smithy/types": "^4.13.1" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/LICENSE b/bff/node_modules/@smithy/shared-ini-file-loader/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/README.md b/bff/node_modules/@smithy/shared-ini-file-loader/README.md new file mode 100644 index 0000000..45a4b2e --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/README.md @@ -0,0 +1,105 @@ +# @smithy/shared-ini-file-loader + +[![NPM version](https://img.shields.io/npm/v/@smithy/shared-ini-file-loader/latest.svg)](https://www.npmjs.com/package/@smithy/shared-ini-file-loader) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/shared-ini-file-loader.svg)](https://www.npmjs.com/package/@smithy/shared-ini-file-loader) + +## AWS Shared Configuration File Loader + +This module provides a function that reads from AWS SDK configuration files and +returns a promise that will resolve with a hash of the parsed contents of the +AWS credentials file and of the AWS config file. Given the [sample +files](#sample-files) below, the promise returned by `loadSharedConfigFiles` +would resolve with: + +```javascript +{ + configFile: { + 'default': { + aws_access_key_id: 'foo', + aws_secret_access_key: 'bar', + }, + dev: { + aws_access_key_id: 'foo1', + aws_secret_access_key: 'bar1', + }, + prod: { + aws_access_key_id: 'foo2', + aws_secret_access_key: 'bar2', + }, + 'testing host': { + aws_access_key_id: 'foo4', + aws_secret_access_key: 'bar4', + } + }, + credentialsFile: { + 'default': { + aws_access_key_id: 'foo', + aws_secret_access_key: 'bar', + }, + dev: { + aws_access_key_id: 'foo1', + aws_secret_access_key: 'bar1', + }, + prod: { + aws_access_key_id: 'foo2', + aws_secret_access_key: 'bar2', + } + }, +} +``` + +If a file is not found, its key (`configFile` or `credentialsFile`) will instead +have a value of an empty object. + +## Supported configuration + +You may customize how the files are loaded by providing an options hash to the +`loadSharedConfigFiles` function. The following options are supported: + +- `filepath` - The path to the shared credentials file. If not specified, the + provider will use the value in the `AWS_SHARED_CREDENTIALS_FILE` environment + variable or a default of `~/.aws/credentials`. +- `configFilepath` - The path to the shared config file. If not specified, the + provider will use the value in the `AWS_CONFIG_FILE` environment variable or a + default of `~/.aws/config`. +- `ignoreCache` - The provider will normally cache the contents of the files it + loads. This option will force the provider to reload the files from disk. + Defaults to `false`. + +## Sample files + +### `~/.aws/credentials` + +```ini +[default] +aws_access_key_id=foo +aws_secret_access_key=bar + +[dev] +aws_access_key_id=foo2 +aws_secret_access_key=bar2 + +[prod] +aws_access_key_id=foo3 +aws_secret_access_key=bar3 +``` + +### `~/.aws/config` + +```ini +[default] +aws_access_key_id=foo +aws_secret_access_key=bar + +[profile dev] +aws_access_key_id=foo2 +aws_secret_access_key=bar2 + +[profile prod] +aws_access_key_id=foo3 +aws_secret_access_key=bar3 + +[profile "testing host"] +aws_access_key_id=foo4 +aws_secret_access_key=bar4 +``` diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js new file mode 100644 index 0000000..2a4f737 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getHomeDir = void 0; +const os_1 = require("os"); +const path_1 = require("path"); +const homeDirCache = {}; +const getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; +}; +const getHomeDir = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = (0, os_1.homedir)(); + return homeDirCache[homeDirCacheKey]; +}; +exports.getHomeDir = getHomeDir; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js new file mode 100644 index 0000000..30d97b3 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getSSOTokenFilepath = void 0; +const crypto_1 = require("crypto"); +const path_1 = require("path"); +const getHomeDir_1 = require("./getHomeDir"); +const getSSOTokenFilepath = (id) => { + const hasher = (0, crypto_1.createHash)("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), ".aws", "sso", "cache", `${cacheName}.json`); +}; +exports.getSSOTokenFilepath = getSSOTokenFilepath; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js new file mode 100644 index 0000000..955e112 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getSSOTokenFromFile = exports.tokenIntercept = void 0; +const promises_1 = require("fs/promises"); +const getSSOTokenFilepath_1 = require("./getSSOTokenFilepath"); +exports.tokenIntercept = {}; +const getSSOTokenFromFile = async (id) => { + if (exports.tokenIntercept[id]) { + return exports.tokenIntercept[id]; + } + const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id); + const ssoTokenText = await (0, promises_1.readFile)(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); +}; +exports.getSSOTokenFromFile = getSSOTokenFromFile; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js new file mode 100644 index 0000000..4d50d12 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js @@ -0,0 +1,196 @@ +'use strict'; + +var getHomeDir = require('./getHomeDir'); +var getSSOTokenFilepath = require('./getSSOTokenFilepath'); +var getSSOTokenFromFile = require('./getSSOTokenFromFile'); +var path = require('path'); +var types = require('@smithy/types'); +var readFile = require('./readFile'); + +const ENV_PROFILE = "AWS_PROFILE"; +const DEFAULT_PROFILE = "default"; +const getProfileName = (init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE; + +const CONFIG_PREFIX_SEPARATOR = "."; + +const getConfigData = (data) => Object.entries(data) + .filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; + } + return Object.values(types.IniSectionType).includes(key.substring(0, indexOfSeparator)); +}) + .reduce((acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === types.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; +}, { + ...(data.default && { default: data.default }), +}); + +const ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; +const getConfigFilepath = () => process.env[ENV_CONFIG_PATH] || path.join(getHomeDir.getHomeDir(), ".aws", "config"); + +const ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; +const getCredentialsFilepath = () => process.env[ENV_CREDENTIALS_PATH] || path.join(getHomeDir.getHomeDir(), ".aws", "credentials"); + +const prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; +const profileNameBlockList = ["__proto__", "profile __proto__"]; +const parseIni = (iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = undefined; + currentSubSection = undefined; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(types.IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } + else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } + else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim(), + ]; + if (value === "") { + currentSubSection = name; + } + else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = undefined; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; +}; + +const swallowError$1 = () => ({}); +const loadSharedConfigFiles = async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = getHomeDir.getHomeDir(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = path.join(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = path.join(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + readFile.readFile(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache, + }) + .then(parseIni) + .then(getConfigData) + .catch(swallowError$1), + readFile.readFile(resolvedFilepath, { + ignoreCache: init.ignoreCache, + }) + .then(parseIni) + .catch(swallowError$1), + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1], + }; +}; + +const getSsoSessionData = (data) => Object.entries(data) + .filter(([key]) => key.startsWith(types.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)) + .reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}); + +const swallowError = () => ({}); +const loadSsoSessionData = async (init = {}) => readFile.readFile(init.configFilepath ?? getConfigFilepath()) + .then(parseIni) + .then(getSsoSessionData) + .catch(swallowError); + +const mergeConfigFiles = (...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== undefined) { + Object.assign(merged[key], values); + } + else { + merged[key] = values; + } + } + } + return merged; +}; + +const parseKnownFiles = async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); +}; + +const externalDataInterceptor = { + getFileRecord() { + return readFile.fileIntercept; + }, + interceptFile(path, contents) { + readFile.fileIntercept[path] = Promise.resolve(contents); + }, + getTokenRecord() { + return getSSOTokenFromFile.tokenIntercept; + }, + interceptToken(id, contents) { + getSSOTokenFromFile.tokenIntercept[id] = contents; + }, +}; + +exports.getSSOTokenFromFile = getSSOTokenFromFile.getSSOTokenFromFile; +exports.readFile = readFile.readFile; +exports.CONFIG_PREFIX_SEPARATOR = CONFIG_PREFIX_SEPARATOR; +exports.DEFAULT_PROFILE = DEFAULT_PROFILE; +exports.ENV_PROFILE = ENV_PROFILE; +exports.externalDataInterceptor = externalDataInterceptor; +exports.getProfileName = getProfileName; +exports.loadSharedConfigFiles = loadSharedConfigFiles; +exports.loadSsoSessionData = loadSsoSessionData; +exports.parseKnownFiles = parseKnownFiles; +Object.prototype.hasOwnProperty.call(getHomeDir, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: getHomeDir['__proto__'] + }); + +Object.keys(getHomeDir).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = getHomeDir[k]; +}); +Object.prototype.hasOwnProperty.call(getSSOTokenFilepath, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: getSSOTokenFilepath['__proto__'] + }); + +Object.keys(getSSOTokenFilepath).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = getSSOTokenFilepath[k]; +}); diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/readFile.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/readFile.js new file mode 100644 index 0000000..e2a492f --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-cjs/readFile.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.readFile = exports.fileIntercept = exports.filePromises = void 0; +const promises_1 = require("node:fs/promises"); +exports.filePromises = {}; +exports.fileIntercept = {}; +const readFile = (path, options) => { + if (exports.fileIntercept[path] !== undefined) { + return exports.fileIntercept[path]; + } + if (!exports.filePromises[path] || options?.ignoreCache) { + exports.filePromises[path] = (0, promises_1.readFile)(path, "utf8"); + } + return exports.filePromises[path]; +}; +exports.readFile = readFile; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/constants.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/constants.js new file mode 100644 index 0000000..0020821 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/constants.js @@ -0,0 +1 @@ +export const CONFIG_PREFIX_SEPARATOR = "."; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/externalDataInterceptor.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/externalDataInterceptor.js new file mode 100644 index 0000000..a2dcf46 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/externalDataInterceptor.js @@ -0,0 +1,16 @@ +import { tokenIntercept } from "./getSSOTokenFromFile"; +import { fileIntercept } from "./readFile"; +export const externalDataInterceptor = { + getFileRecord() { + return fileIntercept; + }, + interceptFile(path, contents) { + fileIntercept[path] = Promise.resolve(contents); + }, + getTokenRecord() { + return tokenIntercept; + }, + interceptToken(id, contents) { + tokenIntercept[id] = contents; + }, +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigData.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigData.js new file mode 100644 index 0000000..4b59141 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigData.js @@ -0,0 +1,18 @@ +import { IniSectionType } from "@smithy/types"; +import { CONFIG_PREFIX_SEPARATOR } from "./constants"; +export const getConfigData = (data) => Object.entries(data) + .filter(([key]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + if (indexOfSeparator === -1) { + return false; + } + return Object.values(IniSectionType).includes(key.substring(0, indexOfSeparator)); +}) + .reduce((acc, [key, value]) => { + const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR); + const updatedKey = key.substring(0, indexOfSeparator) === IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key; + acc[updatedKey] = value; + return acc; +}, { + ...(data.default && { default: data.default }), +}); diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigFilepath.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigFilepath.js new file mode 100644 index 0000000..ca07c2d --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getConfigFilepath.js @@ -0,0 +1,4 @@ +import { join } from "path"; +import { getHomeDir } from "./getHomeDir"; +export const ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; +export const getConfigFilepath = () => process.env[ENV_CONFIG_PATH] || join(getHomeDir(), ".aws", "config"); diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getCredentialsFilepath.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getCredentialsFilepath.js new file mode 100644 index 0000000..393c0ae --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getCredentialsFilepath.js @@ -0,0 +1,4 @@ +import { join } from "path"; +import { getHomeDir } from "./getHomeDir"; +export const ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; +export const getCredentialsFilepath = () => process.env[ENV_CREDENTIALS_PATH] || join(getHomeDir(), ".aws", "credentials"); diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getHomeDir.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getHomeDir.js new file mode 100644 index 0000000..58772af --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getHomeDir.js @@ -0,0 +1,22 @@ +import { homedir } from "os"; +import { sep } from "path"; +const homeDirCache = {}; +const getHomeDirCacheKey = () => { + if (process && process.geteuid) { + return `${process.geteuid()}`; + } + return "DEFAULT"; +}; +export const getHomeDir = () => { + const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${sep}` } = process.env; + if (HOME) + return HOME; + if (USERPROFILE) + return USERPROFILE; + if (HOMEPATH) + return `${HOMEDRIVE}${HOMEPATH}`; + const homeDirCacheKey = getHomeDirCacheKey(); + if (!homeDirCache[homeDirCacheKey]) + homeDirCache[homeDirCacheKey] = homedir(); + return homeDirCache[homeDirCacheKey]; +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getProfileName.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getProfileName.js new file mode 100644 index 0000000..acc29f0 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getProfileName.js @@ -0,0 +1,3 @@ +export const ENV_PROFILE = "AWS_PROFILE"; +export const DEFAULT_PROFILE = "default"; +export const getProfileName = (init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFilepath.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFilepath.js new file mode 100644 index 0000000..a44b4ad --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFilepath.js @@ -0,0 +1,8 @@ +import { createHash } from "crypto"; +import { join } from "path"; +import { getHomeDir } from "./getHomeDir"; +export const getSSOTokenFilepath = (id) => { + const hasher = createHash("sha1"); + const cacheName = hasher.update(id).digest("hex"); + return join(getHomeDir(), ".aws", "sso", "cache", `${cacheName}.json`); +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFromFile.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFromFile.js new file mode 100644 index 0000000..153cd6a --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getSSOTokenFromFile.js @@ -0,0 +1,11 @@ +import { readFile } from "fs/promises"; +import { getSSOTokenFilepath } from "./getSSOTokenFilepath"; +export const tokenIntercept = {}; +export const getSSOTokenFromFile = async (id) => { + if (tokenIntercept[id]) { + return tokenIntercept[id]; + } + const ssoTokenFilepath = getSSOTokenFilepath(id); + const ssoTokenText = await readFile(ssoTokenFilepath, "utf8"); + return JSON.parse(ssoTokenText); +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getSsoSessionData.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getSsoSessionData.js new file mode 100644 index 0000000..f2df194 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/getSsoSessionData.js @@ -0,0 +1,5 @@ +import { IniSectionType } from "@smithy/types"; +import { CONFIG_PREFIX_SEPARATOR } from "./loadSharedConfigFiles"; +export const getSsoSessionData = (data) => Object.entries(data) + .filter(([key]) => key.startsWith(IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)) + .reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}); diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/index.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/index.js new file mode 100644 index 0000000..b003abc --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/index.js @@ -0,0 +1,10 @@ +export * from "./getHomeDir"; +export * from "./getProfileName"; +export * from "./getSSOTokenFilepath"; +export { getSSOTokenFromFile } from "./getSSOTokenFromFile"; +export * from "./loadSharedConfigFiles"; +export * from "./loadSsoSessionData"; +export * from "./parseKnownFiles"; +export { externalDataInterceptor } from "./externalDataInterceptor"; +export * from "./types"; +export { readFile } from "./readFile"; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSharedConfigFiles.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSharedConfigFiles.js new file mode 100644 index 0000000..e8baccc --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSharedConfigFiles.js @@ -0,0 +1,39 @@ +import { join } from "path"; +import { getConfigData } from "./getConfigData"; +import { getConfigFilepath } from "./getConfigFilepath"; +import { getCredentialsFilepath } from "./getCredentialsFilepath"; +import { getHomeDir } from "./getHomeDir"; +import { parseIni } from "./parseIni"; +import { readFile } from "./readFile"; +const swallowError = () => ({}); +export { CONFIG_PREFIX_SEPARATOR } from "./constants"; +export const loadSharedConfigFiles = async (init = {}) => { + const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init; + const homeDir = getHomeDir(); + const relativeHomeDirPrefix = "~/"; + let resolvedFilepath = filepath; + if (filepath.startsWith(relativeHomeDirPrefix)) { + resolvedFilepath = join(homeDir, filepath.slice(2)); + } + let resolvedConfigFilepath = configFilepath; + if (configFilepath.startsWith(relativeHomeDirPrefix)) { + resolvedConfigFilepath = join(homeDir, configFilepath.slice(2)); + } + const parsedFiles = await Promise.all([ + readFile(resolvedConfigFilepath, { + ignoreCache: init.ignoreCache, + }) + .then(parseIni) + .then(getConfigData) + .catch(swallowError), + readFile(resolvedFilepath, { + ignoreCache: init.ignoreCache, + }) + .then(parseIni) + .catch(swallowError), + ]); + return { + configFile: parsedFiles[0], + credentialsFile: parsedFiles[1], + }; +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSsoSessionData.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSsoSessionData.js new file mode 100644 index 0000000..279d125 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/loadSsoSessionData.js @@ -0,0 +1,9 @@ +import { getConfigFilepath } from "./getConfigFilepath"; +import { getSsoSessionData } from "./getSsoSessionData"; +import { parseIni } from "./parseIni"; +import { readFile } from "./readFile"; +const swallowError = () => ({}); +export const loadSsoSessionData = async (init = {}) => readFile(init.configFilepath ?? getConfigFilepath()) + .then(parseIni) + .then(getSsoSessionData) + .catch(swallowError); diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/mergeConfigFiles.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/mergeConfigFiles.js new file mode 100644 index 0000000..58576f7 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/mergeConfigFiles.js @@ -0,0 +1,14 @@ +export const mergeConfigFiles = (...files) => { + const merged = {}; + for (const file of files) { + for (const [key, values] of Object.entries(file)) { + if (merged[key] !== undefined) { + Object.assign(merged[key], values); + } + else { + merged[key] = values; + } + } + } + return merged; +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/parseIni.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/parseIni.js new file mode 100644 index 0000000..ec999c3 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/parseIni.js @@ -0,0 +1,52 @@ +import { IniSectionType } from "@smithy/types"; +import { CONFIG_PREFIX_SEPARATOR } from "./constants"; +const prefixKeyRegex = /^([\w-]+)\s(["'])?([\w-@\+\.%:/]+)\2$/; +const profileNameBlockList = ["__proto__", "profile __proto__"]; +export const parseIni = (iniData) => { + const map = {}; + let currentSection; + let currentSubSection; + for (const iniLine of iniData.split(/\r?\n/)) { + const trimmedLine = iniLine.split(/(^|\s)[;#]/)[0].trim(); + const isSection = trimmedLine[0] === "[" && trimmedLine[trimmedLine.length - 1] === "]"; + if (isSection) { + currentSection = undefined; + currentSubSection = undefined; + const sectionName = trimmedLine.substring(1, trimmedLine.length - 1); + const matches = prefixKeyRegex.exec(sectionName); + if (matches) { + const [, prefix, , name] = matches; + if (Object.values(IniSectionType).includes(prefix)) { + currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR); + } + } + else { + currentSection = sectionName; + } + if (profileNameBlockList.includes(sectionName)) { + throw new Error(`Found invalid profile name "${sectionName}"`); + } + } + else if (currentSection) { + const indexOfEqualsSign = trimmedLine.indexOf("="); + if (![0, -1].includes(indexOfEqualsSign)) { + const [name, value] = [ + trimmedLine.substring(0, indexOfEqualsSign).trim(), + trimmedLine.substring(indexOfEqualsSign + 1).trim(), + ]; + if (value === "") { + currentSubSection = name; + } + else { + if (currentSubSection && iniLine.trimStart() === iniLine) { + currentSubSection = undefined; + } + map[currentSection] = map[currentSection] || {}; + const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name; + map[currentSection][key] = value; + } + } + } + } + return map; +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/parseKnownFiles.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/parseKnownFiles.js new file mode 100644 index 0000000..4920e28 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/parseKnownFiles.js @@ -0,0 +1,6 @@ +import { loadSharedConfigFiles } from "./loadSharedConfigFiles"; +import { mergeConfigFiles } from "./mergeConfigFiles"; +export const parseKnownFiles = async (init) => { + const parsedFiles = await loadSharedConfigFiles(init); + return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile); +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/readFile.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/readFile.js new file mode 100644 index 0000000..c2251f0 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/readFile.js @@ -0,0 +1,12 @@ +import { readFile as fsReadFile } from "node:fs/promises"; +export const filePromises = {}; +export const fileIntercept = {}; +export const readFile = (path, options) => { + if (fileIntercept[path] !== undefined) { + return fileIntercept[path]; + } + if (!filePromises[path] || options?.ignoreCache) { + filePromises[path] = fsReadFile(path, "utf8"); + } + return filePromises[path]; +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/types.js b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts new file mode 100644 index 0000000..caa3ee3 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/constants.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const CONFIG_PREFIX_SEPARATOR = "."; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/externalDataInterceptor.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/externalDataInterceptor.d.ts new file mode 100644 index 0000000..1ac1b9b --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/externalDataInterceptor.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + */ +export declare const externalDataInterceptor: { + getFileRecord(): Record>; + interceptFile(path: string, contents: string): void; + getTokenRecord(): Record; + interceptToken(id: string, contents: any): void; +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigData.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigData.d.ts new file mode 100644 index 0000000..024b09e --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigData.d.ts @@ -0,0 +1,8 @@ +import type { ParsedIniData } from "@smithy/types"; +/** + * Returns the config data from parsed ini data. + * * Returns data for `default` + * * Returns profile name without prefix. + * * Returns non-profiles as is. + */ +export declare const getConfigData: (data: ParsedIniData) => ParsedIniData; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigFilepath.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigFilepath.d.ts new file mode 100644 index 0000000..1d123be --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getConfigFilepath.d.ts @@ -0,0 +1,2 @@ +export declare const ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; +export declare const getConfigFilepath: () => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getCredentialsFilepath.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getCredentialsFilepath.d.ts new file mode 100644 index 0000000..26fda4a --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getCredentialsFilepath.d.ts @@ -0,0 +1,2 @@ +export declare const ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; +export declare const getCredentialsFilepath: () => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getHomeDir.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getHomeDir.d.ts new file mode 100644 index 0000000..5d15bf1 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getHomeDir.d.ts @@ -0,0 +1,6 @@ +/** + * Get the HOME directory for the current runtime. + * + * @internal + */ +export declare const getHomeDir: () => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getProfileName.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getProfileName.d.ts new file mode 100644 index 0000000..5a608b2 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getProfileName.d.ts @@ -0,0 +1,15 @@ +/** + * @internal + */ +export declare const ENV_PROFILE = "AWS_PROFILE"; +/** + * @internal + */ +export declare const DEFAULT_PROFILE = "default"; +/** + * Returns profile with priority order code - ENV - default. + * @internal + */ +export declare const getProfileName: (init: { + profile?: string; +}) => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFilepath.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFilepath.d.ts new file mode 100644 index 0000000..44a4030 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFilepath.d.ts @@ -0,0 +1,5 @@ +/** + * Returns the filepath of the file where SSO token is stored. + * @internal + */ +export declare const getSSOTokenFilepath: (id: string) => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFromFile.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFromFile.d.ts new file mode 100644 index 0000000..79ad7a4 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getSSOTokenFromFile.d.ts @@ -0,0 +1,52 @@ +/** + * Cached SSO token retrieved from SSO login flow. + * @public + */ +export interface SSOToken { + /** + * A base64 encoded string returned by the sso-oidc service. + */ + accessToken: string; + /** + * The expiration time of the accessToken as an RFC 3339 formatted timestamp. + */ + expiresAt: string; + /** + * The token used to obtain an access token in the event that the accessToken is invalid or expired. + */ + refreshToken?: string; + /** + * The unique identifier string for each client. The client ID generated when performing the registration + * portion of the OIDC authorization flow. This is used to refresh the accessToken. + */ + clientId?: string; + /** + * A secret string generated when performing the registration portion of the OIDC authorization flow. + * This is used to refresh the accessToken. + */ + clientSecret?: string; + /** + * The expiration time of the client registration (clientId and clientSecret) as an RFC 3339 formatted timestamp. + */ + registrationExpiresAt?: string; + /** + * The configured sso_region for the profile that credentials are being resolved for. + */ + region?: string; + /** + * The configured sso_start_url for the profile that credentials are being resolved for. + */ + startUrl?: string; +} +/** + * For testing only. + * @internal + * @deprecated minimize use in application code. + */ +export declare const tokenIntercept: Record; +/** + * @internal + * @param id - can be either a start URL or the SSO session name. + * Returns the SSO token from the file system. + */ +export declare const getSSOTokenFromFile: (id: string) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getSsoSessionData.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getSsoSessionData.d.ts new file mode 100644 index 0000000..7ac62a4 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/getSsoSessionData.d.ts @@ -0,0 +1,6 @@ +import type { ParsedIniData } from "@smithy/types"; +/** + * Returns the sso-session data from parsed ini data by reading + * ssoSessionName after sso-session prefix including/excluding quotes + */ +export declare const getSsoSessionData: (data: ParsedIniData) => ParsedIniData; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/index.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/index.d.ts new file mode 100644 index 0000000..29869da --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/index.d.ts @@ -0,0 +1,10 @@ +export * from "./getHomeDir"; +export * from "./getProfileName"; +export * from "./getSSOTokenFilepath"; +export { getSSOTokenFromFile, SSOToken } from "./getSSOTokenFromFile"; +export * from "./loadSharedConfigFiles"; +export * from "./loadSsoSessionData"; +export * from "./parseKnownFiles"; +export { externalDataInterceptor } from "./externalDataInterceptor"; +export * from "./types"; +export { type ReadFileOptions, readFile } from "./readFile"; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSharedConfigFiles.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSharedConfigFiles.d.ts new file mode 100644 index 0000000..eaddac3 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSharedConfigFiles.d.ts @@ -0,0 +1,33 @@ +import type { Logger, SharedConfigFiles } from "@smithy/types"; +/** + * @public + */ +export interface SharedConfigInit { + /** + * The path at which to locate the ini credentials file. Defaults to the + * value of the `AWS_SHARED_CREDENTIALS_FILE` environment variable (if + * defined) or `~/.aws/credentials` otherwise. + */ + filepath?: string; + /** + * The path at which to locate the ini config file. Defaults to the value of + * the `AWS_CONFIG_FILE` environment variable (if defined) or + * `~/.aws/config` otherwise. + */ + configFilepath?: string; + /** + * Configuration files are normally cached after the first time they are loaded. When this + * property is set, the provider will always reload any configuration files loaded before. + */ + ignoreCache?: boolean; + /** + * For credential resolution trace logging. + */ + logger?: Logger; +} +export { CONFIG_PREFIX_SEPARATOR } from "./constants"; +/** + * Loads the config and credentials files. + * @internal + */ +export declare const loadSharedConfigFiles: (init?: SharedConfigInit) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSsoSessionData.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSsoSessionData.d.ts new file mode 100644 index 0000000..44f8df8 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/loadSsoSessionData.d.ts @@ -0,0 +1,17 @@ +import type { ParsedIniData } from "@smithy/types"; +/** + * Subset of {@link SharedConfigInit}. + * @internal + */ +export interface SsoSessionInit { + /** + * The path at which to locate the ini config file. Defaults to the value of + * the `AWS_CONFIG_FILE` environment variable (if defined) or + * `~/.aws/config` otherwise. + */ + configFilepath?: string; +} +/** + * @internal + */ +export declare const loadSsoSessionData: (init?: SsoSessionInit) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/mergeConfigFiles.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/mergeConfigFiles.d.ts new file mode 100644 index 0000000..26b4d08 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/mergeConfigFiles.d.ts @@ -0,0 +1,7 @@ +import type { ParsedIniData } from "@smithy/types"; +/** + * Merge multiple profile config files such that settings each file are kept together + * + * @internal + */ +export declare const mergeConfigFiles: (...files: ParsedIniData[]) => ParsedIniData; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/parseIni.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/parseIni.d.ts new file mode 100644 index 0000000..33d7ea0 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/parseIni.d.ts @@ -0,0 +1,2 @@ +import type { ParsedIniData } from "@smithy/types"; +export declare const parseIni: (iniData: string) => ParsedIniData; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/parseKnownFiles.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/parseKnownFiles.d.ts new file mode 100644 index 0000000..bbe8e80 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/parseKnownFiles.d.ts @@ -0,0 +1,18 @@ +import type { ParsedIniData } from "@smithy/types"; +import type { SharedConfigInit } from "./loadSharedConfigFiles"; +/** + * @public + */ +export interface SourceProfileInit extends SharedConfigInit { + /** + * The configuration profile to use. + */ + profile?: string; +} +/** + * Load profiles from credentials and config INI files and normalize them into a + * single profile list. + * + * @internal + */ +export declare const parseKnownFiles: (init: SourceProfileInit) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/readFile.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/readFile.d.ts new file mode 100644 index 0000000..ed0c5d6 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/readFile.d.ts @@ -0,0 +1,21 @@ +/** + * Runtime file cache. + * @internal + */ +export declare const filePromises: Record>; +/** + * For testing only. + * @internal + * @deprecated minimize use in application code. + */ +export declare const fileIntercept: Record>; +/** + * @internal + */ +export interface ReadFileOptions { + ignoreCache?: boolean; +} +/** + * @internal + */ +export declare const readFile: (path: string, options?: ReadFileOptions) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..714d8ee --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const CONFIG_PREFIX_SEPARATOR = "."; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/externalDataInterceptor.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/externalDataInterceptor.d.ts new file mode 100644 index 0000000..3c9be1f --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/externalDataInterceptor.d.ts @@ -0,0 +1,9 @@ +/** + * @internal + */ +export declare const externalDataInterceptor: { + getFileRecord(): Record>; + interceptFile(path: string, contents: string): void; + getTokenRecord(): Record; + interceptToken(id: string, contents: any): void; +}; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigData.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigData.d.ts new file mode 100644 index 0000000..c6b7588 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigData.d.ts @@ -0,0 +1,8 @@ +import { ParsedIniData } from "@smithy/types"; +/** + * Returns the config data from parsed ini data. + * * Returns data for `default` + * * Returns profile name without prefix. + * * Returns non-profiles as is. + */ +export declare const getConfigData: (data: ParsedIniData) => ParsedIniData; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigFilepath.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigFilepath.d.ts new file mode 100644 index 0000000..dc3699b --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getConfigFilepath.d.ts @@ -0,0 +1,2 @@ +export declare const ENV_CONFIG_PATH = "AWS_CONFIG_FILE"; +export declare const getConfigFilepath: () => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getCredentialsFilepath.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getCredentialsFilepath.d.ts new file mode 100644 index 0000000..f2c95b4 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getCredentialsFilepath.d.ts @@ -0,0 +1,2 @@ +export declare const ENV_CREDENTIALS_PATH = "AWS_SHARED_CREDENTIALS_FILE"; +export declare const getCredentialsFilepath: () => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getHomeDir.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getHomeDir.d.ts new file mode 100644 index 0000000..4c1bd7a --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getHomeDir.d.ts @@ -0,0 +1,6 @@ +/** + * Get the HOME directory for the current runtime. + * + * @internal + */ +export declare const getHomeDir: () => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getProfileName.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getProfileName.d.ts new file mode 100644 index 0000000..91cb16b --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getProfileName.d.ts @@ -0,0 +1,15 @@ +/** + * @internal + */ +export declare const ENV_PROFILE = "AWS_PROFILE"; +/** + * @internal + */ +export declare const DEFAULT_PROFILE = "default"; +/** + * Returns profile with priority order code - ENV - default. + * @internal + */ +export declare const getProfileName: (init: { + profile?: string; +}) => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFilepath.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFilepath.d.ts new file mode 100644 index 0000000..e549daa --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFilepath.d.ts @@ -0,0 +1,5 @@ +/** + * Returns the filepath of the file where SSO token is stored. + * @internal + */ +export declare const getSSOTokenFilepath: (id: string) => string; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFromFile.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFromFile.d.ts new file mode 100644 index 0000000..6bca37f --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSSOTokenFromFile.d.ts @@ -0,0 +1,52 @@ +/** + * Cached SSO token retrieved from SSO login flow. + * @public + */ +export interface SSOToken { + /** + * A base64 encoded string returned by the sso-oidc service. + */ + accessToken: string; + /** + * The expiration time of the accessToken as an RFC 3339 formatted timestamp. + */ + expiresAt: string; + /** + * The token used to obtain an access token in the event that the accessToken is invalid or expired. + */ + refreshToken?: string; + /** + * The unique identifier string for each client. The client ID generated when performing the registration + * portion of the OIDC authorization flow. This is used to refresh the accessToken. + */ + clientId?: string; + /** + * A secret string generated when performing the registration portion of the OIDC authorization flow. + * This is used to refresh the accessToken. + */ + clientSecret?: string; + /** + * The expiration time of the client registration (clientId and clientSecret) as an RFC 3339 formatted timestamp. + */ + registrationExpiresAt?: string; + /** + * The configured sso_region for the profile that credentials are being resolved for. + */ + region?: string; + /** + * The configured sso_start_url for the profile that credentials are being resolved for. + */ + startUrl?: string; +} +/** + * For testing only. + * @internal + * @deprecated minimize use in application code. + */ +export declare const tokenIntercept: Record; +/** + * @internal + * @param id - can be either a start URL or the SSO session name. + * Returns the SSO token from the file system. + */ +export declare const getSSOTokenFromFile: (id: string) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSsoSessionData.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSsoSessionData.d.ts new file mode 100644 index 0000000..04a1a99 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/getSsoSessionData.d.ts @@ -0,0 +1,6 @@ +import { ParsedIniData } from "@smithy/types"; +/** + * Returns the sso-session data from parsed ini data by reading + * ssoSessionName after sso-session prefix including/excluding quotes + */ +export declare const getSsoSessionData: (data: ParsedIniData) => ParsedIniData; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..25704d7 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/index.d.ts @@ -0,0 +1,10 @@ +export * from "./getHomeDir"; +export * from "./getProfileName"; +export * from "./getSSOTokenFilepath"; +export { getSSOTokenFromFile, SSOToken } from "./getSSOTokenFromFile"; +export * from "./loadSharedConfigFiles"; +export * from "./loadSsoSessionData"; +export * from "./parseKnownFiles"; +export { externalDataInterceptor } from "./externalDataInterceptor"; +export * from "./types"; +export { ReadFileOptions, readFile } from "./readFile"; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSharedConfigFiles.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSharedConfigFiles.d.ts new file mode 100644 index 0000000..ee7796f --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSharedConfigFiles.d.ts @@ -0,0 +1,33 @@ +import { Logger, SharedConfigFiles } from "@smithy/types"; +/** + * @public + */ +export interface SharedConfigInit { + /** + * The path at which to locate the ini credentials file. Defaults to the + * value of the `AWS_SHARED_CREDENTIALS_FILE` environment variable (if + * defined) or `~/.aws/credentials` otherwise. + */ + filepath?: string; + /** + * The path at which to locate the ini config file. Defaults to the value of + * the `AWS_CONFIG_FILE` environment variable (if defined) or + * `~/.aws/config` otherwise. + */ + configFilepath?: string; + /** + * Configuration files are normally cached after the first time they are loaded. When this + * property is set, the provider will always reload any configuration files loaded before. + */ + ignoreCache?: boolean; + /** + * For credential resolution trace logging. + */ + logger?: Logger; +} +export { CONFIG_PREFIX_SEPARATOR } from "./constants"; +/** + * Loads the config and credentials files. + * @internal + */ +export declare const loadSharedConfigFiles: (init?: SharedConfigInit) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSsoSessionData.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSsoSessionData.d.ts new file mode 100644 index 0000000..08e265e --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/loadSsoSessionData.d.ts @@ -0,0 +1,17 @@ +import { ParsedIniData } from "@smithy/types"; +/** + * Subset of {@link SharedConfigInit}. + * @internal + */ +export interface SsoSessionInit { + /** + * The path at which to locate the ini config file. Defaults to the value of + * the `AWS_CONFIG_FILE` environment variable (if defined) or + * `~/.aws/config` otherwise. + */ + configFilepath?: string; +} +/** + * @internal + */ +export declare const loadSsoSessionData: (init?: SsoSessionInit) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/mergeConfigFiles.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/mergeConfigFiles.d.ts new file mode 100644 index 0000000..f94e725 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/mergeConfigFiles.d.ts @@ -0,0 +1,7 @@ +import { ParsedIniData } from "@smithy/types"; +/** + * Merge multiple profile config files such that settings each file are kept together + * + * @internal + */ +export declare const mergeConfigFiles: (...files: ParsedIniData[]) => ParsedIniData; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseIni.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseIni.d.ts new file mode 100644 index 0000000..4e58d0e --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseIni.d.ts @@ -0,0 +1,2 @@ +import { ParsedIniData } from "@smithy/types"; +export declare const parseIni: (iniData: string) => ParsedIniData; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseKnownFiles.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseKnownFiles.d.ts new file mode 100644 index 0000000..46ba24b --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/parseKnownFiles.d.ts @@ -0,0 +1,18 @@ +import { ParsedIniData } from "@smithy/types"; +import { SharedConfigInit } from "./loadSharedConfigFiles"; +/** + * @public + */ +export interface SourceProfileInit extends SharedConfigInit { + /** + * The configuration profile to use. + */ + profile?: string; +} +/** + * Load profiles from credentials and config INI files and normalize them into a + * single profile list. + * + * @internal + */ +export declare const parseKnownFiles: (init: SourceProfileInit) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/readFile.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/readFile.d.ts new file mode 100644 index 0000000..cb5b727 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/readFile.d.ts @@ -0,0 +1,21 @@ +/** + * Runtime file cache. + * @internal + */ +export declare const filePromises: Record>; +/** + * For testing only. + * @internal + * @deprecated minimize use in application code. + */ +export declare const fileIntercept: Record>; +/** + * @internal + */ +export interface ReadFileOptions { + ignoreCache?: boolean; +} +/** + * @internal + */ +export declare const readFile: (path: string, options?: ReadFileOptions) => Promise; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/types.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..6d6acbd --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/ts3.4/types.d.ts @@ -0,0 +1,16 @@ +import { ParsedIniData as __ParsedIniData, Profile as __Profile, SharedConfigFiles as __SharedConfigFiles } from "@smithy/types"; +/** + * @internal + * @deprecated Use Profile from "\@smithy/types" instead + */ +export type Profile = __Profile; +/** + * @internal + * @deprecated Use ParsedIniData from "\@smithy/types" instead + */ +export type ParsedIniData = __ParsedIniData; +/** + * @internal + * @deprecated Use SharedConfigFiles from "\@smithy/types" instead + */ +export type SharedConfigFiles = __SharedConfigFiles; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/types.d.ts b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/types.d.ts new file mode 100644 index 0000000..ef174f6 --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/dist-types/types.d.ts @@ -0,0 +1,16 @@ +import type { ParsedIniData as __ParsedIniData, Profile as __Profile, SharedConfigFiles as __SharedConfigFiles } from "@smithy/types"; +/** + * @internal + * @deprecated Use Profile from "\@smithy/types" instead + */ +export type Profile = __Profile; +/** + * @internal + * @deprecated Use ParsedIniData from "\@smithy/types" instead + */ +export type ParsedIniData = __ParsedIniData; +/** + * @internal + * @deprecated Use SharedConfigFiles from "\@smithy/types" instead + */ +export type SharedConfigFiles = __SharedConfigFiles; diff --git a/bff/node_modules/@smithy/shared-ini-file-loader/package.json b/bff/node_modules/@smithy/shared-ini-file-loader/package.json new file mode 100644 index 0000000..3b6f01c --- /dev/null +++ b/bff/node_modules/@smithy/shared-ini-file-loader/package.json @@ -0,0 +1,73 @@ +{ + "name": "@smithy/shared-ini-file-loader", + "version": "4.4.7", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline shared-ini-file-loader", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "browser": { + "./dist-es/getSSOTokenFromFile": false, + "./dist-es/readFile": false + }, + "react-native": { + "./dist-cjs/getSSOTokenFromFile": false, + "./dist-cjs/readFile": false, + "./dist-es/getSSOTokenFromFile": false, + "./dist-es/readFile": false + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/shared-ini-file-loader", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/shared-ini-file-loader" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/signature-v4/LICENSE b/bff/node_modules/@smithy/signature-v4/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/signature-v4/README.md b/bff/node_modules/@smithy/signature-v4/README.md new file mode 100644 index 0000000..3bc9a17 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/README.md @@ -0,0 +1,11 @@ +# @smithy/signature-v4 + +[![NPM version](https://img.shields.io/npm/v/@smithy/signature-v4/latest.svg)](https://www.npmjs.com/package/@smithy/signature-v4) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/signature-v4.svg)](https://www.npmjs.com/package/@smithy/signature-v4) + +This package contains an implementation of the [AWS Signature Version 4](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) +authentication scheme. + +It is internal to Smithy-TypeScript generated clients, and not generally intended for standalone usage outside this context. + +For custom usage, inspect the interface of the SignatureV4 class. diff --git a/bff/node_modules/@smithy/signature-v4/dist-cjs/index.js b/bff/node_modules/@smithy/signature-v4/dist-cjs/index.js new file mode 100644 index 0000000..362d7f3 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-cjs/index.js @@ -0,0 +1,556 @@ +'use strict'; + +var utilHexEncoding = require('@smithy/util-hex-encoding'); +var utilUtf8 = require('@smithy/util-utf8'); +var isArrayBuffer = require('@smithy/is-array-buffer'); +var protocolHttp = require('@smithy/protocol-http'); +var utilMiddleware = require('@smithy/util-middleware'); +var utilUriEscape = require('@smithy/util-uri-escape'); + +const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +const SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; +const TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; +const REGION_SET_PARAM = "X-Amz-Region-Set"; +const AUTH_HEADER = "authorization"; +const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase(); +const DATE_HEADER = "date"; +const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER]; +const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase(); +const SHA256_HEADER = "x-amz-content-sha256"; +const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase(); +const HOST_HEADER = "host"; +const ALWAYS_UNSIGNABLE_HEADERS = { + authorization: true, + "cache-control": true, + connection: true, + expect: true, + from: true, + "keep-alive": true, + "max-forwards": true, + pragma: true, + referer: true, + te: true, + trailer: true, + "transfer-encoding": true, + upgrade: true, + "user-agent": true, + "x-amzn-trace-id": true, +}; +const PROXY_HEADER_PATTERN = /^proxy-/; +const SEC_HEADER_PATTERN = /^sec-/; +const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i]; +const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; +const ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; +const EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; +const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +const MAX_CACHE_SIZE = 50; +const KEY_TYPE_IDENTIFIER = "aws4_request"; +const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7; + +const signingKeyCache = {}; +const cacheQueue = []; +const createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`; +const getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => { + const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId); + const cacheKey = `${shortDate}:${region}:${service}:${utilHexEncoding.toHex(credsHash)}:${credentials.sessionToken}`; + if (cacheKey in signingKeyCache) { + return signingKeyCache[cacheKey]; + } + cacheQueue.push(cacheKey); + while (cacheQueue.length > MAX_CACHE_SIZE) { + delete signingKeyCache[cacheQueue.shift()]; + } + let key = `AWS4${credentials.secretAccessKey}`; + for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) { + key = await hmac(sha256Constructor, key, signable); + } + return (signingKeyCache[cacheKey] = key); +}; +const clearCredentialCache = () => { + cacheQueue.length = 0; + Object.keys(signingKeyCache).forEach((cacheKey) => { + delete signingKeyCache[cacheKey]; + }); +}; +const hmac = (ctor, secret, data) => { + const hash = new ctor(secret); + hash.update(utilUtf8.toUint8Array(data)); + return hash.digest(); +}; + +const getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => { + const canonical = {}; + for (const headerName of Object.keys(headers).sort()) { + if (headers[headerName] == undefined) { + continue; + } + const canonicalHeaderName = headerName.toLowerCase(); + if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS || + unsignableHeaders?.has(canonicalHeaderName) || + PROXY_HEADER_PATTERN.test(canonicalHeaderName) || + SEC_HEADER_PATTERN.test(canonicalHeaderName)) { + if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) { + continue; + } + } + canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\s+/g, " "); + } + return canonical; +}; + +const getPayloadHash = async ({ headers, body }, hashConstructor) => { + for (const headerName of Object.keys(headers)) { + if (headerName.toLowerCase() === SHA256_HEADER) { + return headers[headerName]; + } + } + if (body == undefined) { + return "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; + } + else if (typeof body === "string" || ArrayBuffer.isView(body) || isArrayBuffer.isArrayBuffer(body)) { + const hashCtor = new hashConstructor(); + hashCtor.update(utilUtf8.toUint8Array(body)); + return utilHexEncoding.toHex(await hashCtor.digest()); + } + return UNSIGNED_PAYLOAD; +}; + +class HeaderFormatter { + format(headers) { + const chunks = []; + for (const headerName of Object.keys(headers)) { + const bytes = utilUtf8.fromUtf8(headerName); + chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName])); + } + const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0)); + let position = 0; + for (const chunk of chunks) { + out.set(chunk, position); + position += chunk.byteLength; + } + return out; + } + formatHeaderValue(header) { + switch (header.type) { + case "boolean": + return Uint8Array.from([header.value ? 0 : 1]); + case "byte": + return Uint8Array.from([2, header.value]); + case "short": + const shortView = new DataView(new ArrayBuffer(3)); + shortView.setUint8(0, 3); + shortView.setInt16(1, header.value, false); + return new Uint8Array(shortView.buffer); + case "integer": + const intView = new DataView(new ArrayBuffer(5)); + intView.setUint8(0, 4); + intView.setInt32(1, header.value, false); + return new Uint8Array(intView.buffer); + case "long": + const longBytes = new Uint8Array(9); + longBytes[0] = 5; + longBytes.set(header.value.bytes, 1); + return longBytes; + case "binary": + const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength)); + binView.setUint8(0, 6); + binView.setUint16(1, header.value.byteLength, false); + const binBytes = new Uint8Array(binView.buffer); + binBytes.set(header.value, 3); + return binBytes; + case "string": + const utf8Bytes = utilUtf8.fromUtf8(header.value); + const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength)); + strView.setUint8(0, 7); + strView.setUint16(1, utf8Bytes.byteLength, false); + const strBytes = new Uint8Array(strView.buffer); + strBytes.set(utf8Bytes, 3); + return strBytes; + case "timestamp": + const tsBytes = new Uint8Array(9); + tsBytes[0] = 8; + tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1); + return tsBytes; + case "uuid": + if (!UUID_PATTERN.test(header.value)) { + throw new Error(`Invalid UUID received: ${header.value}`); + } + const uuidBytes = new Uint8Array(17); + uuidBytes[0] = 9; + uuidBytes.set(utilHexEncoding.fromHex(header.value.replace(/\-/g, "")), 1); + return uuidBytes; + } + } +} +const UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/; +class Int64 { + bytes; + constructor(bytes) { + this.bytes = bytes; + if (bytes.byteLength !== 8) { + throw new Error("Int64 buffers must be exactly 8 bytes"); + } + } + static fromNumber(number) { + if (number > 9_223_372_036_854_775_807 || number < -9223372036854776e3) { + throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`); + } + const bytes = new Uint8Array(8); + for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) { + bytes[i] = remaining; + } + if (number < 0) { + negate(bytes); + } + return new Int64(bytes); + } + valueOf() { + const bytes = this.bytes.slice(0); + const negative = bytes[0] & 0b10000000; + if (negative) { + negate(bytes); + } + return parseInt(utilHexEncoding.toHex(bytes), 16) * (negative ? -1 : 1); + } + toString() { + return String(this.valueOf()); + } +} +function negate(bytes) { + for (let i = 0; i < 8; i++) { + bytes[i] ^= 0xff; + } + for (let i = 7; i > -1; i--) { + bytes[i]++; + if (bytes[i] !== 0) + break; + } +} + +const hasHeader = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return true; + } + } + return false; +}; + +const moveHeadersToQuery = (request, options = {}) => { + const { headers, query = {} } = protocolHttp.HttpRequest.clone(request); + for (const name of Object.keys(headers)) { + const lname = name.toLowerCase(); + if ((lname.slice(0, 6) === "x-amz-" && !options.unhoistableHeaders?.has(lname)) || + options.hoistableHeaders?.has(lname)) { + query[name] = headers[name]; + delete headers[name]; + } + } + return { + ...request, + headers, + query, + }; +}; + +const prepareRequest = (request) => { + request = protocolHttp.HttpRequest.clone(request); + for (const headerName of Object.keys(request.headers)) { + if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) { + delete request.headers[headerName]; + } + } + return request; +}; + +const getCanonicalQuery = ({ query = {} }) => { + const keys = []; + const serialized = {}; + for (const key of Object.keys(query)) { + if (key.toLowerCase() === SIGNATURE_HEADER) { + continue; + } + const encodedKey = utilUriEscape.escapeUri(key); + keys.push(encodedKey); + const value = query[key]; + if (typeof value === "string") { + serialized[encodedKey] = `${encodedKey}=${utilUriEscape.escapeUri(value)}`; + } + else if (Array.isArray(value)) { + serialized[encodedKey] = value + .slice(0) + .reduce((encoded, value) => encoded.concat([`${encodedKey}=${utilUriEscape.escapeUri(value)}`]), []) + .sort() + .join("&"); + } + } + return keys + .sort() + .map((key) => serialized[key]) + .filter((serialized) => serialized) + .join("&"); +}; + +const iso8601 = (time) => toDate(time) + .toISOString() + .replace(/\.\d{3}Z$/, "Z"); +const toDate = (time) => { + if (typeof time === "number") { + return new Date(time * 1000); + } + if (typeof time === "string") { + if (Number(time)) { + return new Date(Number(time) * 1000); + } + return new Date(time); + } + return time; +}; + +class SignatureV4Base { + service; + regionProvider; + credentialProvider; + sha256; + uriEscapePath; + applyChecksum; + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) { + this.service = service; + this.sha256 = sha256; + this.uriEscapePath = uriEscapePath; + this.applyChecksum = typeof applyChecksum === "boolean" ? applyChecksum : true; + this.regionProvider = utilMiddleware.normalizeProvider(region); + this.credentialProvider = utilMiddleware.normalizeProvider(credentials); + } + createCanonicalRequest(request, canonicalHeaders, payloadHash) { + const sortedHeaders = Object.keys(canonicalHeaders).sort(); + return `${request.method} +${this.getCanonicalPath(request)} +${getCanonicalQuery(request)} +${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join("\n")} + +${sortedHeaders.join(";")} +${payloadHash}`; + } + async createStringToSign(longDate, credentialScope, canonicalRequest, algorithmIdentifier) { + const hash = new this.sha256(); + hash.update(utilUtf8.toUint8Array(canonicalRequest)); + const hashedRequest = await hash.digest(); + return `${algorithmIdentifier} +${longDate} +${credentialScope} +${utilHexEncoding.toHex(hashedRequest)}`; + } + getCanonicalPath({ path }) { + if (this.uriEscapePath) { + const normalizedPathSegments = []; + for (const pathSegment of path.split("/")) { + if (pathSegment?.length === 0) + continue; + if (pathSegment === ".") + continue; + if (pathSegment === "..") { + normalizedPathSegments.pop(); + } + else { + normalizedPathSegments.push(pathSegment); + } + } + const normalizedPath = `${path?.startsWith("/") ? "/" : ""}${normalizedPathSegments.join("/")}${normalizedPathSegments.length > 0 && path?.endsWith("/") ? "/" : ""}`; + const doubleEncoded = utilUriEscape.escapeUri(normalizedPath); + return doubleEncoded.replace(/%2F/g, "/"); + } + return path; + } + validateResolvedCredentials(credentials) { + if (typeof credentials !== "object" || + typeof credentials.accessKeyId !== "string" || + typeof credentials.secretAccessKey !== "string") { + throw new Error("Resolved credential object is not valid"); + } + } + formatDate(now) { + const longDate = iso8601(now).replace(/[\-:]/g, ""); + return { + longDate, + shortDate: longDate.slice(0, 8), + }; + } + getCanonicalHeaderList(headers) { + return Object.keys(headers).sort().join(";"); + } +} + +class SignatureV4 extends SignatureV4Base { + headerFormatter = new HeaderFormatter(); + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) { + super({ + applyChecksum, + credentials, + region, + service, + sha256, + uriEscapePath, + }); + } + async presign(originalRequest, options = {}) { + const { signingDate = new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, hoistableHeaders, signingRegion, signingService, } = options; + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const { longDate, shortDate } = this.formatDate(signingDate); + if (expiresIn > MAX_PRESIGNED_TTL) { + return Promise.reject("Signature version 4 presigned URLs" + " must have an expiration date less than one week in" + " the future"); + } + const scope = createScope(shortDate, region, signingService ?? this.service); + const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders, hoistableHeaders }); + if (credentials.sessionToken) { + request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken; + } + request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER; + request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`; + request.query[AMZ_DATE_QUERY_PARAM] = longDate; + request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10); + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + request.query[SIGNED_HEADERS_QUERY_PARAM] = this.getCanonicalHeaderList(canonicalHeaders); + request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))); + return request; + } + async sign(toSign, options) { + if (typeof toSign === "string") { + return this.signString(toSign, options); + } + else if (toSign.headers && toSign.payload) { + return this.signEvent(toSign, options); + } + else if (toSign.message) { + return this.signMessage(toSign, options); + } + else { + return this.signRequest(toSign, options); + } + } + async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) { + const region = signingRegion ?? (await this.regionProvider()); + const { shortDate, longDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256); + const hash = new this.sha256(); + hash.update(headers); + const hashedHeaders = utilHexEncoding.toHex(await hash.digest()); + const stringToSign = [ + EVENT_ALGORITHM_IDENTIFIER, + longDate, + scope, + priorSignature, + hashedHeaders, + hashedPayload, + ].join("\n"); + return this.signString(stringToSign, { signingDate, signingRegion: region, signingService }); + } + async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService }) { + const promise = this.signEvent({ + headers: this.headerFormatter.format(signableMessage.message.headers), + payload: signableMessage.message.body, + }, { + signingDate, + signingRegion, + signingService, + priorSignature: signableMessage.priorSignature, + }); + return promise.then((signature) => { + return { message: signableMessage.message, signature }; + }); + } + async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const { shortDate } = this.formatDate(signingDate); + const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService)); + hash.update(utilUtf8.toUint8Array(stringToSign)); + return utilHexEncoding.toHex(await hash.digest()); + } + async signRequest(requestToSign, { signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const request = prepareRequest(requestToSign); + const { longDate, shortDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + request.headers[AMZ_DATE_HEADER] = longDate; + if (credentials.sessionToken) { + request.headers[TOKEN_HEADER] = credentials.sessionToken; + } + const payloadHash = await getPayloadHash(request, this.sha256); + if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) { + request.headers[SHA256_HEADER] = payloadHash; + } + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash)); + request.headers[AUTH_HEADER] = + `${ALGORITHM_IDENTIFIER} ` + + `Credential=${credentials.accessKeyId}/${scope}, ` + + `SignedHeaders=${this.getCanonicalHeaderList(canonicalHeaders)}, ` + + `Signature=${signature}`; + return request; + } + async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) { + const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest, ALGORITHM_IDENTIFIER); + const hash = new this.sha256(await keyPromise); + hash.update(utilUtf8.toUint8Array(stringToSign)); + return utilHexEncoding.toHex(await hash.digest()); + } + getSigningKey(credentials, region, shortDate, service) { + return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service); + } +} + +const signatureV4aContainer = { + SignatureV4a: null, +}; + +exports.ALGORITHM_IDENTIFIER = ALGORITHM_IDENTIFIER; +exports.ALGORITHM_IDENTIFIER_V4A = ALGORITHM_IDENTIFIER_V4A; +exports.ALGORITHM_QUERY_PARAM = ALGORITHM_QUERY_PARAM; +exports.ALWAYS_UNSIGNABLE_HEADERS = ALWAYS_UNSIGNABLE_HEADERS; +exports.AMZ_DATE_HEADER = AMZ_DATE_HEADER; +exports.AMZ_DATE_QUERY_PARAM = AMZ_DATE_QUERY_PARAM; +exports.AUTH_HEADER = AUTH_HEADER; +exports.CREDENTIAL_QUERY_PARAM = CREDENTIAL_QUERY_PARAM; +exports.DATE_HEADER = DATE_HEADER; +exports.EVENT_ALGORITHM_IDENTIFIER = EVENT_ALGORITHM_IDENTIFIER; +exports.EXPIRES_QUERY_PARAM = EXPIRES_QUERY_PARAM; +exports.GENERATED_HEADERS = GENERATED_HEADERS; +exports.HOST_HEADER = HOST_HEADER; +exports.KEY_TYPE_IDENTIFIER = KEY_TYPE_IDENTIFIER; +exports.MAX_CACHE_SIZE = MAX_CACHE_SIZE; +exports.MAX_PRESIGNED_TTL = MAX_PRESIGNED_TTL; +exports.PROXY_HEADER_PATTERN = PROXY_HEADER_PATTERN; +exports.REGION_SET_PARAM = REGION_SET_PARAM; +exports.SEC_HEADER_PATTERN = SEC_HEADER_PATTERN; +exports.SHA256_HEADER = SHA256_HEADER; +exports.SIGNATURE_HEADER = SIGNATURE_HEADER; +exports.SIGNATURE_QUERY_PARAM = SIGNATURE_QUERY_PARAM; +exports.SIGNED_HEADERS_QUERY_PARAM = SIGNED_HEADERS_QUERY_PARAM; +exports.SignatureV4 = SignatureV4; +exports.SignatureV4Base = SignatureV4Base; +exports.TOKEN_HEADER = TOKEN_HEADER; +exports.TOKEN_QUERY_PARAM = TOKEN_QUERY_PARAM; +exports.UNSIGNABLE_PATTERNS = UNSIGNABLE_PATTERNS; +exports.UNSIGNED_PAYLOAD = UNSIGNED_PAYLOAD; +exports.clearCredentialCache = clearCredentialCache; +exports.createScope = createScope; +exports.getCanonicalHeaders = getCanonicalHeaders; +exports.getCanonicalQuery = getCanonicalQuery; +exports.getPayloadHash = getPayloadHash; +exports.getSigningKey = getSigningKey; +exports.hasHeader = hasHeader; +exports.moveHeadersToQuery = moveHeadersToQuery; +exports.prepareRequest = prepareRequest; +exports.signatureV4aContainer = signatureV4aContainer; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/HeaderFormatter.js b/bff/node_modules/@smithy/signature-v4/dist-es/HeaderFormatter.js new file mode 100644 index 0000000..936012b --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/HeaderFormatter.js @@ -0,0 +1,126 @@ +import { fromHex, toHex } from "@smithy/util-hex-encoding"; +import { fromUtf8 } from "@smithy/util-utf8"; +export class HeaderFormatter { + format(headers) { + const chunks = []; + for (const headerName of Object.keys(headers)) { + const bytes = fromUtf8(headerName); + chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName])); + } + const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0)); + let position = 0; + for (const chunk of chunks) { + out.set(chunk, position); + position += chunk.byteLength; + } + return out; + } + formatHeaderValue(header) { + switch (header.type) { + case "boolean": + return Uint8Array.from([header.value ? 0 : 1]); + case "byte": + return Uint8Array.from([2, header.value]); + case "short": + const shortView = new DataView(new ArrayBuffer(3)); + shortView.setUint8(0, 3); + shortView.setInt16(1, header.value, false); + return new Uint8Array(shortView.buffer); + case "integer": + const intView = new DataView(new ArrayBuffer(5)); + intView.setUint8(0, 4); + intView.setInt32(1, header.value, false); + return new Uint8Array(intView.buffer); + case "long": + const longBytes = new Uint8Array(9); + longBytes[0] = 5; + longBytes.set(header.value.bytes, 1); + return longBytes; + case "binary": + const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength)); + binView.setUint8(0, 6); + binView.setUint16(1, header.value.byteLength, false); + const binBytes = new Uint8Array(binView.buffer); + binBytes.set(header.value, 3); + return binBytes; + case "string": + const utf8Bytes = fromUtf8(header.value); + const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength)); + strView.setUint8(0, 7); + strView.setUint16(1, utf8Bytes.byteLength, false); + const strBytes = new Uint8Array(strView.buffer); + strBytes.set(utf8Bytes, 3); + return strBytes; + case "timestamp": + const tsBytes = new Uint8Array(9); + tsBytes[0] = 8; + tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1); + return tsBytes; + case "uuid": + if (!UUID_PATTERN.test(header.value)) { + throw new Error(`Invalid UUID received: ${header.value}`); + } + const uuidBytes = new Uint8Array(17); + uuidBytes[0] = 9; + uuidBytes.set(fromHex(header.value.replace(/\-/g, "")), 1); + return uuidBytes; + } + } +} +var HEADER_VALUE_TYPE; +(function (HEADER_VALUE_TYPE) { + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["boolTrue"] = 0] = "boolTrue"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["boolFalse"] = 1] = "boolFalse"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["byte"] = 2] = "byte"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["short"] = 3] = "short"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["integer"] = 4] = "integer"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["long"] = 5] = "long"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["byteArray"] = 6] = "byteArray"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["string"] = 7] = "string"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["timestamp"] = 8] = "timestamp"; + HEADER_VALUE_TYPE[HEADER_VALUE_TYPE["uuid"] = 9] = "uuid"; +})(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {})); +const UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/; +export class Int64 { + bytes; + constructor(bytes) { + this.bytes = bytes; + if (bytes.byteLength !== 8) { + throw new Error("Int64 buffers must be exactly 8 bytes"); + } + } + static fromNumber(number) { + if (number > 9_223_372_036_854_775_807 || number < -9_223_372_036_854_775_808) { + throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`); + } + const bytes = new Uint8Array(8); + for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) { + bytes[i] = remaining; + } + if (number < 0) { + negate(bytes); + } + return new Int64(bytes); + } + valueOf() { + const bytes = this.bytes.slice(0); + const negative = bytes[0] & 0b10000000; + if (negative) { + negate(bytes); + } + return parseInt(toHex(bytes), 16) * (negative ? -1 : 1); + } + toString() { + return String(this.valueOf()); + } +} +function negate(bytes) { + for (let i = 0; i < 8; i++) { + bytes[i] ^= 0xff; + } + for (let i = 7; i > -1; i--) { + bytes[i]++; + if (bytes[i] !== 0) + break; + } +} diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js b/bff/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js new file mode 100644 index 0000000..3e874cf --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js @@ -0,0 +1,135 @@ +import { toHex } from "@smithy/util-hex-encoding"; +import { toUint8Array } from "@smithy/util-utf8"; +import { ALGORITHM_IDENTIFIER, ALGORITHM_QUERY_PARAM, AMZ_DATE_HEADER, AMZ_DATE_QUERY_PARAM, AUTH_HEADER, CREDENTIAL_QUERY_PARAM, EVENT_ALGORITHM_IDENTIFIER, EXPIRES_QUERY_PARAM, MAX_PRESIGNED_TTL, SHA256_HEADER, SIGNATURE_QUERY_PARAM, SIGNED_HEADERS_QUERY_PARAM, TOKEN_HEADER, TOKEN_QUERY_PARAM, } from "./constants"; +import { createScope, getSigningKey } from "./credentialDerivation"; +import { getCanonicalHeaders } from "./getCanonicalHeaders"; +import { getPayloadHash } from "./getPayloadHash"; +import { HeaderFormatter } from "./HeaderFormatter"; +import { hasHeader } from "./headerUtil"; +import { moveHeadersToQuery } from "./moveHeadersToQuery"; +import { prepareRequest } from "./prepareRequest"; +import { SignatureV4Base } from "./SignatureV4Base"; +export class SignatureV4 extends SignatureV4Base { + headerFormatter = new HeaderFormatter(); + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) { + super({ + applyChecksum, + credentials, + region, + service, + sha256, + uriEscapePath, + }); + } + async presign(originalRequest, options = {}) { + const { signingDate = new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, hoistableHeaders, signingRegion, signingService, } = options; + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const { longDate, shortDate } = this.formatDate(signingDate); + if (expiresIn > MAX_PRESIGNED_TTL) { + return Promise.reject("Signature version 4 presigned URLs" + " must have an expiration date less than one week in" + " the future"); + } + const scope = createScope(shortDate, region, signingService ?? this.service); + const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders, hoistableHeaders }); + if (credentials.sessionToken) { + request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken; + } + request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER; + request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`; + request.query[AMZ_DATE_QUERY_PARAM] = longDate; + request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10); + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + request.query[SIGNED_HEADERS_QUERY_PARAM] = this.getCanonicalHeaderList(canonicalHeaders); + request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))); + return request; + } + async sign(toSign, options) { + if (typeof toSign === "string") { + return this.signString(toSign, options); + } + else if (toSign.headers && toSign.payload) { + return this.signEvent(toSign, options); + } + else if (toSign.message) { + return this.signMessage(toSign, options); + } + else { + return this.signRequest(toSign, options); + } + } + async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) { + const region = signingRegion ?? (await this.regionProvider()); + const { shortDate, longDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256); + const hash = new this.sha256(); + hash.update(headers); + const hashedHeaders = toHex(await hash.digest()); + const stringToSign = [ + EVENT_ALGORITHM_IDENTIFIER, + longDate, + scope, + priorSignature, + hashedHeaders, + hashedPayload, + ].join("\n"); + return this.signString(stringToSign, { signingDate, signingRegion: region, signingService }); + } + async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService }) { + const promise = this.signEvent({ + headers: this.headerFormatter.format(signableMessage.message.headers), + payload: signableMessage.message.body, + }, { + signingDate, + signingRegion, + signingService, + priorSignature: signableMessage.priorSignature, + }); + return promise.then((signature) => { + return { message: signableMessage.message, signature }; + }); + } + async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const { shortDate } = this.formatDate(signingDate); + const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService)); + hash.update(toUint8Array(stringToSign)); + return toHex(await hash.digest()); + } + async signRequest(requestToSign, { signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}) { + const credentials = await this.credentialProvider(); + this.validateResolvedCredentials(credentials); + const region = signingRegion ?? (await this.regionProvider()); + const request = prepareRequest(requestToSign); + const { longDate, shortDate } = this.formatDate(signingDate); + const scope = createScope(shortDate, region, signingService ?? this.service); + request.headers[AMZ_DATE_HEADER] = longDate; + if (credentials.sessionToken) { + request.headers[TOKEN_HEADER] = credentials.sessionToken; + } + const payloadHash = await getPayloadHash(request, this.sha256); + if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) { + request.headers[SHA256_HEADER] = payloadHash; + } + const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders); + const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash)); + request.headers[AUTH_HEADER] = + `${ALGORITHM_IDENTIFIER} ` + + `Credential=${credentials.accessKeyId}/${scope}, ` + + `SignedHeaders=${this.getCanonicalHeaderList(canonicalHeaders)}, ` + + `Signature=${signature}`; + return request; + } + async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) { + const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest, ALGORITHM_IDENTIFIER); + const hash = new this.sha256(await keyPromise); + hash.update(toUint8Array(stringToSign)); + return toHex(await hash.digest()); + } + getSigningKey(credentials, region, shortDate, service) { + return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service); + } +} diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/SignatureV4Base.js b/bff/node_modules/@smithy/signature-v4/dist-es/SignatureV4Base.js new file mode 100644 index 0000000..a23d95b --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/SignatureV4Base.js @@ -0,0 +1,79 @@ +import { toHex } from "@smithy/util-hex-encoding"; +import { normalizeProvider } from "@smithy/util-middleware"; +import { escapeUri } from "@smithy/util-uri-escape"; +import { toUint8Array } from "@smithy/util-utf8"; +import { getCanonicalQuery } from "./getCanonicalQuery"; +import { iso8601 } from "./utilDate"; +export class SignatureV4Base { + service; + regionProvider; + credentialProvider; + sha256; + uriEscapePath; + applyChecksum; + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) { + this.service = service; + this.sha256 = sha256; + this.uriEscapePath = uriEscapePath; + this.applyChecksum = typeof applyChecksum === "boolean" ? applyChecksum : true; + this.regionProvider = normalizeProvider(region); + this.credentialProvider = normalizeProvider(credentials); + } + createCanonicalRequest(request, canonicalHeaders, payloadHash) { + const sortedHeaders = Object.keys(canonicalHeaders).sort(); + return `${request.method} +${this.getCanonicalPath(request)} +${getCanonicalQuery(request)} +${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join("\n")} + +${sortedHeaders.join(";")} +${payloadHash}`; + } + async createStringToSign(longDate, credentialScope, canonicalRequest, algorithmIdentifier) { + const hash = new this.sha256(); + hash.update(toUint8Array(canonicalRequest)); + const hashedRequest = await hash.digest(); + return `${algorithmIdentifier} +${longDate} +${credentialScope} +${toHex(hashedRequest)}`; + } + getCanonicalPath({ path }) { + if (this.uriEscapePath) { + const normalizedPathSegments = []; + for (const pathSegment of path.split("/")) { + if (pathSegment?.length === 0) + continue; + if (pathSegment === ".") + continue; + if (pathSegment === "..") { + normalizedPathSegments.pop(); + } + else { + normalizedPathSegments.push(pathSegment); + } + } + const normalizedPath = `${path?.startsWith("/") ? "/" : ""}${normalizedPathSegments.join("/")}${normalizedPathSegments.length > 0 && path?.endsWith("/") ? "/" : ""}`; + const doubleEncoded = escapeUri(normalizedPath); + return doubleEncoded.replace(/%2F/g, "/"); + } + return path; + } + validateResolvedCredentials(credentials) { + if (typeof credentials !== "object" || + typeof credentials.accessKeyId !== "string" || + typeof credentials.secretAccessKey !== "string") { + throw new Error("Resolved credential object is not valid"); + } + } + formatDate(now) { + const longDate = iso8601(now).replace(/[\-:]/g, ""); + return { + longDate, + shortDate: longDate.slice(0, 8), + }; + } + getCanonicalHeaderList(headers) { + return Object.keys(headers).sort().join(";"); + } +} diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/constants.js b/bff/node_modules/@smithy/signature-v4/dist-es/constants.js new file mode 100644 index 0000000..602728a --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/constants.js @@ -0,0 +1,43 @@ +export const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +export const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +export const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +export const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +export const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +export const SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; +export const TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; +export const REGION_SET_PARAM = "X-Amz-Region-Set"; +export const AUTH_HEADER = "authorization"; +export const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase(); +export const DATE_HEADER = "date"; +export const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER]; +export const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase(); +export const SHA256_HEADER = "x-amz-content-sha256"; +export const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase(); +export const HOST_HEADER = "host"; +export const ALWAYS_UNSIGNABLE_HEADERS = { + authorization: true, + "cache-control": true, + connection: true, + expect: true, + from: true, + "keep-alive": true, + "max-forwards": true, + pragma: true, + referer: true, + te: true, + trailer: true, + "transfer-encoding": true, + upgrade: true, + "user-agent": true, + "x-amzn-trace-id": true, +}; +export const PROXY_HEADER_PATTERN = /^proxy-/; +export const SEC_HEADER_PATTERN = /^sec-/; +export const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i]; +export const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; +export const ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; +export const EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; +export const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +export const MAX_CACHE_SIZE = 50; +export const KEY_TYPE_IDENTIFIER = "aws4_request"; +export const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js b/bff/node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js new file mode 100644 index 0000000..b16ab8c --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js @@ -0,0 +1,33 @@ +import { toHex } from "@smithy/util-hex-encoding"; +import { toUint8Array } from "@smithy/util-utf8"; +import { KEY_TYPE_IDENTIFIER, MAX_CACHE_SIZE } from "./constants"; +const signingKeyCache = {}; +const cacheQueue = []; +export const createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`; +export const getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => { + const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId); + const cacheKey = `${shortDate}:${region}:${service}:${toHex(credsHash)}:${credentials.sessionToken}`; + if (cacheKey in signingKeyCache) { + return signingKeyCache[cacheKey]; + } + cacheQueue.push(cacheKey); + while (cacheQueue.length > MAX_CACHE_SIZE) { + delete signingKeyCache[cacheQueue.shift()]; + } + let key = `AWS4${credentials.secretAccessKey}`; + for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) { + key = await hmac(sha256Constructor, key, signable); + } + return (signingKeyCache[cacheKey] = key); +}; +export const clearCredentialCache = () => { + cacheQueue.length = 0; + Object.keys(signingKeyCache).forEach((cacheKey) => { + delete signingKeyCache[cacheKey]; + }); +}; +const hmac = (ctor, secret, data) => { + const hash = new ctor(secret); + hash.update(toUint8Array(data)); + return hash.digest(); +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js b/bff/node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js new file mode 100644 index 0000000..3321125 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js @@ -0,0 +1,20 @@ +import { ALWAYS_UNSIGNABLE_HEADERS, PROXY_HEADER_PATTERN, SEC_HEADER_PATTERN } from "./constants"; +export const getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => { + const canonical = {}; + for (const headerName of Object.keys(headers).sort()) { + if (headers[headerName] == undefined) { + continue; + } + const canonicalHeaderName = headerName.toLowerCase(); + if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS || + unsignableHeaders?.has(canonicalHeaderName) || + PROXY_HEADER_PATTERN.test(canonicalHeaderName) || + SEC_HEADER_PATTERN.test(canonicalHeaderName)) { + if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) { + continue; + } + } + canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\s+/g, " "); + } + return canonical; +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js b/bff/node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js new file mode 100644 index 0000000..0623f1a --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js @@ -0,0 +1,29 @@ +import { escapeUri } from "@smithy/util-uri-escape"; +import { SIGNATURE_HEADER } from "./constants"; +export const getCanonicalQuery = ({ query = {} }) => { + const keys = []; + const serialized = {}; + for (const key of Object.keys(query)) { + if (key.toLowerCase() === SIGNATURE_HEADER) { + continue; + } + const encodedKey = escapeUri(key); + keys.push(encodedKey); + const value = query[key]; + if (typeof value === "string") { + serialized[encodedKey] = `${encodedKey}=${escapeUri(value)}`; + } + else if (Array.isArray(value)) { + serialized[encodedKey] = value + .slice(0) + .reduce((encoded, value) => encoded.concat([`${encodedKey}=${escapeUri(value)}`]), []) + .sort() + .join("&"); + } + } + return keys + .sort() + .map((key) => serialized[key]) + .filter((serialized) => serialized) + .join("&"); +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js b/bff/node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js new file mode 100644 index 0000000..cba165c --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js @@ -0,0 +1,20 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +import { toHex } from "@smithy/util-hex-encoding"; +import { toUint8Array } from "@smithy/util-utf8"; +import { SHA256_HEADER, UNSIGNED_PAYLOAD } from "./constants"; +export const getPayloadHash = async ({ headers, body }, hashConstructor) => { + for (const headerName of Object.keys(headers)) { + if (headerName.toLowerCase() === SHA256_HEADER) { + return headers[headerName]; + } + } + if (body == undefined) { + return "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; + } + else if (typeof body === "string" || ArrayBuffer.isView(body) || isArrayBuffer(body)) { + const hashCtor = new hashConstructor(); + hashCtor.update(toUint8Array(body)); + return toHex(await hashCtor.digest()); + } + return UNSIGNED_PAYLOAD; +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/headerUtil.js b/bff/node_modules/@smithy/signature-v4/dist-es/headerUtil.js new file mode 100644 index 0000000..e502cbb --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/headerUtil.js @@ -0,0 +1,26 @@ +export const hasHeader = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return true; + } + } + return false; +}; +export const getHeaderValue = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + return headers[headerName]; + } + } + return undefined; +}; +export const deleteHeader = (soughtHeader, headers) => { + soughtHeader = soughtHeader.toLowerCase(); + for (const headerName of Object.keys(headers)) { + if (soughtHeader === headerName.toLowerCase()) { + delete headers[headerName]; + } + } +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/index.js b/bff/node_modules/@smithy/signature-v4/dist-es/index.js new file mode 100644 index 0000000..062752d --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/index.js @@ -0,0 +1,11 @@ +export * from "./SignatureV4"; +export * from "./constants"; +export { getCanonicalHeaders } from "./getCanonicalHeaders"; +export { getCanonicalQuery } from "./getCanonicalQuery"; +export { getPayloadHash } from "./getPayloadHash"; +export { moveHeadersToQuery } from "./moveHeadersToQuery"; +export { prepareRequest } from "./prepareRequest"; +export * from "./credentialDerivation"; +export { SignatureV4Base } from "./SignatureV4Base"; +export { hasHeader } from "./headerUtil"; +export * from "./signature-v4a-container"; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js b/bff/node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js new file mode 100644 index 0000000..806703a --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js @@ -0,0 +1,17 @@ +import { HttpRequest } from "@smithy/protocol-http"; +export const moveHeadersToQuery = (request, options = {}) => { + const { headers, query = {} } = HttpRequest.clone(request); + for (const name of Object.keys(headers)) { + const lname = name.toLowerCase(); + if ((lname.slice(0, 6) === "x-amz-" && !options.unhoistableHeaders?.has(lname)) || + options.hoistableHeaders?.has(lname)) { + query[name] = headers[name]; + delete headers[name]; + } + } + return { + ...request, + headers, + query, + }; +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/prepareRequest.js b/bff/node_modules/@smithy/signature-v4/dist-es/prepareRequest.js new file mode 100644 index 0000000..7fe5136 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/prepareRequest.js @@ -0,0 +1,11 @@ +import { HttpRequest } from "@smithy/protocol-http"; +import { GENERATED_HEADERS } from "./constants"; +export const prepareRequest = (request) => { + request = HttpRequest.clone(request); + for (const headerName of Object.keys(request.headers)) { + if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) { + delete request.headers[headerName]; + } + } + return request; +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/signature-v4a-container.js b/bff/node_modules/@smithy/signature-v4/dist-es/signature-v4a-container.js new file mode 100644 index 0000000..a309b0a --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/signature-v4a-container.js @@ -0,0 +1,3 @@ +export const signatureV4aContainer = { + SignatureV4a: null, +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/suite.fixture.js b/bff/node_modules/@smithy/signature-v4/dist-es/suite.fixture.js new file mode 100644 index 0000000..bb704a9 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/suite.fixture.js @@ -0,0 +1,399 @@ +export const region = "us-east-1"; +export const service = "service"; +export const credentials = { + accessKeyId: "AKIDEXAMPLE", + secretAccessKey: "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY", +}; +export const signingDate = new Date("2015-08-30T12:36:00Z"); +export const requests = [ + { + name: "get-header-key-duplicate", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value2,value2,value1", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=c9d5ea9f3f72853aea855b47ea873832890dbdd183b4468f858259531a5138ea", + }, + { + name: "get-header-value-multiline", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value1,value2,value3", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=ba17b383a53190154eb5fa66a1b836cc297cc0a3d70a5d00705980573d8ff790", + }, + { + name: "get-header-value-order", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value4,value1,value3,value2", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=08c7e5a9acfcfeb3ab6b2185e75ce8b1deb5e634ec47601a50643f830c755c01", + }, + { + name: "get-header-value-trim", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value1", + "my-header2": '"a b c"', + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;my-header2;x-amz-date, Signature=acc3ed3afb60bb290fc8d2dd0098b9911fcaa05412b367055dee359757a9c736", + }, + { + name: "get-unreserved", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=07ef7494c76fa4850883e2b006601f940f8a34d404d0cfa977f52a65bbf5f24f", + }, + { + name: "get-utf8", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/ሴ", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=8318018e0b0f223aa2bbf98705b62bb787dc9c0e678f255a891fd03141be5d85", + }, + { + name: "get-vanilla", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5fa00fa31553b73ebf1942676e86291e8372ff2a2260956d9b8aae1d763fbf31", + }, + { + name: "get-vanilla-empty-query-key", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: { + Param1: "value1", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=a67d582fa61cc504c4bae71f336f98b97f1ea3c7a6bfe1b6e45aec72011b9aeb", + }, + { + name: "get-vanilla-query", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5fa00fa31553b73ebf1942676e86291e8372ff2a2260956d9b8aae1d763fbf31", + }, + { + name: "get-vanilla-query-order-key-case", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: { + Param2: "value2", + Param1: "value1", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=b97d918cfa904a5beff61c982a1b6f458b799221646efd99d3219ec94cdf2500", + }, + { + name: "get-vanilla-query-unreserved", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: { + "-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz": "-._~0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=9c3e54bfcdf0b19771a7f523ee5669cdf59bc7cc0884027167c21bb143a40197", + }, + { + name: "get-vanilla-utf8-query", + request: { + protocol: "https:", + method: "GET", + hostname: "example.amazonaws.com", + query: { + ሴ: "bar", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=2cdec8eed098649ff3a119c94853b13c643bcf08f8b0a1d91e12c9027818dd04", + }, + { + name: "post-header-key-case", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5da7c1a2acd57cee7505fc6676e4e544621c30862966e37dddb68e92efbe5d6b", + }, + { + name: "post-header-key-sort", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "value1", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=c5410059b04c1ee005303aed430f6e6645f61f4dc9e1461ec8f8916fdf18852c", + }, + { + name: "post-header-value-case", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "my-header1": "VALUE1", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;my-header1;x-amz-date, Signature=cdbc9802e29d2942e5e10b5bccfdd67c5f22c7c4e8ae67b53629efa58b974b7d", + }, + { + name: "post-sts-header-after", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5da7c1a2acd57cee7505fc6676e4e544621c30862966e37dddb68e92efbe5d6b", + }, + { + name: "post-sts-header-before", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + "x-amz-security-token": "AQoDYXdzEPT//////////wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI/qkPpKPi/kMcGdQrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d+xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz+scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR/oLxBA==", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date;x-amz-security-token, Signature=85d96828115b5dc0cfc3bd16ad9e210dd772bbebba041836c64533a82be05ead", + }, + { + name: "post-vanilla", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=5da7c1a2acd57cee7505fc6676e4e544621c30862966e37dddb68e92efbe5d6b", + }, + { + name: "post-vanilla-empty-query-value", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: { + Param1: "value1", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=28038455d6de14eafc1f9222cf5aa6f1a96197d7deb8263271d420d138af7f11", + }, + { + name: "post-vanilla-query", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: { + Param1: "value1", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=28038455d6de14eafc1f9222cf5aa6f1a96197d7deb8263271d420d138af7f11", + }, + { + name: "post-vanilla-query-nonunreserved", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: { + "@#$%^": "", + "+": '/,?><`";:\\|][{}', + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=66c82657c86e26fb25238d0e69f011edc4c6df5ae71119d7cb98ed9b87393c1e", + }, + { + name: "post-vanilla-query-space", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: { + p: "", + }, + headers: { + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=host;x-amz-date, Signature=e71688addb58a26418614085fb730ba3faa623b461c17f48f2fbdb9361b94a9b", + }, + { + name: "post-x-www-form-urlencoded", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + "content-type": "application/x-www-form-urlencoded", + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + body: "Param1=value1", + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=ff11897932ad3f4e8b18135d722051e5ac45fc38421b1da7b9d196a0fe09473a", + }, + { + name: "post-x-www-form-urlencoded-parameters", + request: { + protocol: "https:", + method: "POST", + hostname: "example.amazonaws.com", + query: {}, + headers: { + "content-type": "application/x-www-form-urlencoded; charset=utf8", + host: "example.amazonaws.com", + "x-amz-date": "20150830T123600Z", + }, + body: "Param1=value1", + path: "/", + }, + authorization: "AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east-1/service/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=1a72ec8f64bd914b0e42e42607c7fbce7fb2c7465f63e3092b3b0d39fa77a6fe", + }, +]; diff --git a/bff/node_modules/@smithy/signature-v4/dist-es/utilDate.js b/bff/node_modules/@smithy/signature-v4/dist-es/utilDate.js new file mode 100644 index 0000000..4aad623 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-es/utilDate.js @@ -0,0 +1,15 @@ +export const iso8601 = (time) => toDate(time) + .toISOString() + .replace(/\.\d{3}Z$/, "Z"); +export const toDate = (time) => { + if (typeof time === "number") { + return new Date(time * 1000); + } + if (typeof time === "string") { + if (Number(time)) { + return new Date(Number(time) * 1000); + } + return new Date(time); + } + return time; +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/HeaderFormatter.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/HeaderFormatter.d.ts new file mode 100644 index 0000000..92056a6 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/HeaderFormatter.d.ts @@ -0,0 +1,24 @@ +import type { Int64 as IInt64, MessageHeaders } from "@smithy/types"; +/** + * @internal + * TODO: duplicated from @smithy/eventstream-codec to break large dependency. + * TODO: This should be moved to its own deduped submodule in @smithy/core when submodules are implemented. + */ +export declare class HeaderFormatter { + format(headers: MessageHeaders): Uint8Array; + private formatHeaderValue; +} +/** + * TODO: duplicated from @smithy/eventstream-codec to break large dependency. + * TODO: This should be moved to its own deduped submodule in @smithy/core when submodules are implemented. + */ +export declare class Int64 implements IInt64 { + readonly bytes: Uint8Array; + constructor(bytes: Uint8Array); + static fromNumber(number: number): Int64; + /** + * Called implicitly by infix arithmetic operators. + */ + valueOf(): number; + toString(): string; +} diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts new file mode 100644 index 0000000..2f9cf42 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts @@ -0,0 +1,21 @@ +import type { EventSigner, EventSigningArguments, FormattedEvent, HttpRequest, MessageSigner, RequestPresigner, RequestPresigningArguments, RequestSigner, RequestSigningArguments, SignableMessage, SignedMessage, SigningArguments, StringSigner } from "@smithy/types"; +import type { SignatureV4CryptoInit, SignatureV4Init } from "./SignatureV4Base"; +import { SignatureV4Base } from "./SignatureV4Base"; +/** + * @public + */ +export declare class SignatureV4 extends SignatureV4Base implements RequestPresigner, RequestSigner, StringSigner, EventSigner, MessageSigner { + private readonly headerFormatter; + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath, }: SignatureV4Init & SignatureV4CryptoInit); + presign(originalRequest: HttpRequest, options?: RequestPresigningArguments): Promise; + sign(stringToSign: string, options?: SigningArguments): Promise; + sign(event: FormattedEvent, options: EventSigningArguments): Promise; + sign(event: SignableMessage, options: SigningArguments): Promise; + sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise; + private signEvent; + signMessage(signableMessage: SignableMessage, { signingDate, signingRegion, signingService }: SigningArguments): Promise; + private signString; + private signRequest; + private getSignature; + private getSigningKey; +} diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/SignatureV4Base.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/SignatureV4Base.d.ts new file mode 100644 index 0000000..99670fd --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/SignatureV4Base.d.ts @@ -0,0 +1,69 @@ +import type { AwsCredentialIdentity, ChecksumConstructor, DateInput, HashConstructor, HeaderBag, HttpRequest, Provider } from "@smithy/types"; +/** + * @public + */ +export interface SignatureV4Init { + /** + * The service signing name. + */ + service: string; + /** + * The region name or a function that returns a promise that will be + * resolved with the region name. + */ + region: string | Provider; + /** + * The credentials with which the request should be signed or a function + * that returns a promise that will be resolved with credentials. + */ + credentials: AwsCredentialIdentity | Provider; + /** + * A constructor function for a hash object that will calculate SHA-256 HMAC + * checksums. + */ + sha256?: ChecksumConstructor | HashConstructor; + /** + * Whether to uri-escape the request URI path as part of computing the + * canonical request string. This is required for every AWS service, except + * Amazon S3, as of late 2017. + * + * @default [true] + */ + uriEscapePath?: boolean; + /** + * Whether to calculate a checksum of the request body and include it as + * either a request header (when signing) or as a query string parameter + * (when presigning). This is required for AWS Glacier and Amazon S3 and optional for + * every other AWS service as of late 2017. + * + * @default [true] + */ + applyChecksum?: boolean; +} +/** + * @public + */ +export interface SignatureV4CryptoInit { + sha256: ChecksumConstructor | HashConstructor; +} +/** + * @internal + */ +export declare abstract class SignatureV4Base { + protected readonly service: string; + protected readonly regionProvider: Provider; + protected readonly credentialProvider: Provider; + protected readonly sha256: ChecksumConstructor | HashConstructor; + private readonly uriEscapePath; + protected readonly applyChecksum: boolean; + protected constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath, }: SignatureV4Init & SignatureV4CryptoInit); + protected createCanonicalRequest(request: HttpRequest, canonicalHeaders: HeaderBag, payloadHash: string): string; + protected createStringToSign(longDate: string, credentialScope: string, canonicalRequest: string, algorithmIdentifier: string): Promise; + private getCanonicalPath; + protected validateResolvedCredentials(credentials: unknown): void; + protected formatDate(now: DateInput): { + longDate: string; + shortDate: string; + }; + protected getCanonicalHeaderList(headers: object): string; +} diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/constants.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/constants.d.ts new file mode 100644 index 0000000..ea1cfb5 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/constants.d.ts @@ -0,0 +1,43 @@ +export declare const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +export declare const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +export declare const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +export declare const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +export declare const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +export declare const SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; +export declare const TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; +export declare const REGION_SET_PARAM = "X-Amz-Region-Set"; +export declare const AUTH_HEADER = "authorization"; +export declare const AMZ_DATE_HEADER: string; +export declare const DATE_HEADER = "date"; +export declare const GENERATED_HEADERS: string[]; +export declare const SIGNATURE_HEADER: string; +export declare const SHA256_HEADER = "x-amz-content-sha256"; +export declare const TOKEN_HEADER: string; +export declare const HOST_HEADER = "host"; +export declare const ALWAYS_UNSIGNABLE_HEADERS: { + authorization: boolean; + "cache-control": boolean; + connection: boolean; + expect: boolean; + from: boolean; + "keep-alive": boolean; + "max-forwards": boolean; + pragma: boolean; + referer: boolean; + te: boolean; + trailer: boolean; + "transfer-encoding": boolean; + upgrade: boolean; + "user-agent": boolean; + "x-amzn-trace-id": boolean; +}; +export declare const PROXY_HEADER_PATTERN: RegExp; +export declare const SEC_HEADER_PATTERN: RegExp; +export declare const UNSIGNABLE_PATTERNS: RegExp[]; +export declare const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; +export declare const ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; +export declare const EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; +export declare const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +export declare const MAX_CACHE_SIZE = 50; +export declare const KEY_TYPE_IDENTIFIER = "aws4_request"; +export declare const MAX_PRESIGNED_TTL: number; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/credentialDerivation.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/credentialDerivation.d.ts new file mode 100644 index 0000000..4b7a13a --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/credentialDerivation.d.ts @@ -0,0 +1,30 @@ +import type { AwsCredentialIdentity, ChecksumConstructor, HashConstructor } from "@smithy/types"; +/** + * Create a string describing the scope of credentials used to sign a request. + * + * @internal + * + * @param shortDate - the current calendar date in the form YYYYMMDD. + * @param region - the AWS region in which the service resides. + * @param service - the service to which the signed request is being sent. + */ +export declare const createScope: (shortDate: string, region: string, service: string) => string; +/** + * Derive a signing key from its composite parts. + * + * @internal + * + * @param sha256Constructor - a constructor function that can instantiate SHA-256 + * hash objects. + * @param credentials - the credentials with which the request will be + * signed. + * @param shortDate - the current calendar date in the form YYYYMMDD. + * @param region - the AWS region in which the service resides. + * @param service - the service to which the signed request is being + * sent. + */ +export declare const getSigningKey: (sha256Constructor: ChecksumConstructor | HashConstructor, credentials: AwsCredentialIdentity, shortDate: string, region: string, service: string) => Promise; +/** + * @internal + */ +export declare const clearCredentialCache: () => void; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/getCanonicalHeaders.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/getCanonicalHeaders.d.ts new file mode 100644 index 0000000..cfc8462 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/getCanonicalHeaders.d.ts @@ -0,0 +1,5 @@ +import type { HeaderBag, HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getCanonicalHeaders: ({ headers }: HttpRequest, unsignableHeaders?: Set, signableHeaders?: Set) => HeaderBag; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/getCanonicalQuery.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/getCanonicalQuery.d.ts new file mode 100644 index 0000000..ed09586 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/getCanonicalQuery.d.ts @@ -0,0 +1,5 @@ +import type { HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getCanonicalQuery: ({ query }: HttpRequest) => string; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/getPayloadHash.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/getPayloadHash.d.ts new file mode 100644 index 0000000..e51605b --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/getPayloadHash.d.ts @@ -0,0 +1,5 @@ +import type { ChecksumConstructor, HashConstructor, HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getPayloadHash: ({ headers, body }: HttpRequest, hashConstructor: ChecksumConstructor | HashConstructor) => Promise; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/headerUtil.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/headerUtil.d.ts new file mode 100644 index 0000000..1663a0c --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/headerUtil.d.ts @@ -0,0 +1,4 @@ +import type { HeaderBag } from "@smithy/types"; +export declare const hasHeader: (soughtHeader: string, headers: HeaderBag) => boolean; +export declare const getHeaderValue: (soughtHeader: string, headers: HeaderBag) => string | undefined; +export declare const deleteHeader: (soughtHeader: string, headers: HeaderBag) => void; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/index.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/index.d.ts new file mode 100644 index 0000000..9305cf3 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/index.d.ts @@ -0,0 +1,11 @@ +export * from "./SignatureV4"; +export * from "./constants"; +export { getCanonicalHeaders } from "./getCanonicalHeaders"; +export { getCanonicalQuery } from "./getCanonicalQuery"; +export { getPayloadHash } from "./getPayloadHash"; +export { moveHeadersToQuery } from "./moveHeadersToQuery"; +export { prepareRequest } from "./prepareRequest"; +export * from "./credentialDerivation"; +export { SignatureV4Init, SignatureV4CryptoInit, SignatureV4Base } from "./SignatureV4Base"; +export { hasHeader } from "./headerUtil"; +export * from "./signature-v4a-container"; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/moveHeadersToQuery.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/moveHeadersToQuery.d.ts new file mode 100644 index 0000000..e2c31e0 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/moveHeadersToQuery.d.ts @@ -0,0 +1,10 @@ +import type { HttpRequest as IHttpRequest, QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare const moveHeadersToQuery: (request: IHttpRequest, options?: { + unhoistableHeaders?: Set; + hoistableHeaders?: Set; +}) => IHttpRequest & { + query: QueryParameterBag; +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/prepareRequest.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/prepareRequest.d.ts new file mode 100644 index 0000000..b20e0e3 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/prepareRequest.d.ts @@ -0,0 +1,5 @@ +import type { HttpRequest as IHttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const prepareRequest: (request: IHttpRequest) => IHttpRequest; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/signature-v4a-container.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/signature-v4a-container.d.ts new file mode 100644 index 0000000..8901036 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/signature-v4a-container.d.ts @@ -0,0 +1,24 @@ +import type { RequestSigner } from "@smithy/types"; +/** + * @public + */ +export type OptionalSigV4aSigner = { + /** + * This constructor is not typed so as not to require a type import + * from the signature-v4a package. + * + * The true type is SignatureV4a from @smithy/signature-v4a. + */ + new (options: any): RequestSigner; +}; +/** + * @public + * + * \@smithy/signature-v4a will install the constructor in this + * container if it's installed. + * + * This avoids a runtime-require being interpreted statically by bundlers. + */ +export declare const signatureV4aContainer: { + SignatureV4a: null | OptionalSigV4aSigner; +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/suite.fixture.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/suite.fixture.d.ts new file mode 100644 index 0000000..c2b36f3 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/suite.fixture.d.ts @@ -0,0 +1,14 @@ +import type { HttpRequest } from "@smithy/types"; +export interface TestCase { + name: string; + request: HttpRequest; + authorization: string; +} +export declare const region = "us-east-1"; +export declare const service = "service"; +export declare const credentials: { + accessKeyId: string; + secretAccessKey: string; +}; +export declare const signingDate: Date; +export declare const requests: Array; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/HeaderFormatter.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/HeaderFormatter.d.ts new file mode 100644 index 0000000..6c294c3 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/HeaderFormatter.d.ts @@ -0,0 +1,24 @@ +import { Int64 as IInt64, MessageHeaders } from "@smithy/types"; +/** + * @internal + * TODO: duplicated from @smithy/eventstream-codec to break large dependency. + * TODO: This should be moved to its own deduped submodule in @smithy/core when submodules are implemented. + */ +export declare class HeaderFormatter { + format(headers: MessageHeaders): Uint8Array; + private formatHeaderValue; +} +/** + * TODO: duplicated from @smithy/eventstream-codec to break large dependency. + * TODO: This should be moved to its own deduped submodule in @smithy/core when submodules are implemented. + */ +export declare class Int64 implements IInt64 { + readonly bytes: Uint8Array; + constructor(bytes: Uint8Array); + static fromNumber(number: number): Int64; + /** + * Called implicitly by infix arithmetic operators. + */ + valueOf(): number; + toString(): string; +} diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4.d.ts new file mode 100644 index 0000000..5181fc8 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4.d.ts @@ -0,0 +1,21 @@ +import { EventSigner, EventSigningArguments, FormattedEvent, HttpRequest, MessageSigner, RequestPresigner, RequestPresigningArguments, RequestSigner, RequestSigningArguments, SignableMessage, SignedMessage, SigningArguments, StringSigner } from "@smithy/types"; +import { SignatureV4CryptoInit, SignatureV4Init } from "./SignatureV4Base"; +import { SignatureV4Base } from "./SignatureV4Base"; +/** + * @public + */ +export declare class SignatureV4 extends SignatureV4Base implements RequestPresigner, RequestSigner, StringSigner, EventSigner, MessageSigner { + private readonly headerFormatter; + constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath, }: SignatureV4Init & SignatureV4CryptoInit); + presign(originalRequest: HttpRequest, options?: RequestPresigningArguments): Promise; + sign(stringToSign: string, options?: SigningArguments): Promise; + sign(event: FormattedEvent, options: EventSigningArguments): Promise; + sign(event: SignableMessage, options: SigningArguments): Promise; + sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise; + private signEvent; + signMessage(signableMessage: SignableMessage, { signingDate, signingRegion, signingService }: SigningArguments): Promise; + private signString; + private signRequest; + private getSignature; + private getSigningKey; +} diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4Base.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4Base.d.ts new file mode 100644 index 0000000..be1da1f --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/SignatureV4Base.d.ts @@ -0,0 +1,69 @@ +import { AwsCredentialIdentity, ChecksumConstructor, DateInput, HashConstructor, HeaderBag, HttpRequest, Provider } from "@smithy/types"; +/** + * @public + */ +export interface SignatureV4Init { + /** + * The service signing name. + */ + service: string; + /** + * The region name or a function that returns a promise that will be + * resolved with the region name. + */ + region: string | Provider; + /** + * The credentials with which the request should be signed or a function + * that returns a promise that will be resolved with credentials. + */ + credentials: AwsCredentialIdentity | Provider; + /** + * A constructor function for a hash object that will calculate SHA-256 HMAC + * checksums. + */ + sha256?: ChecksumConstructor | HashConstructor; + /** + * Whether to uri-escape the request URI path as part of computing the + * canonical request string. This is required for every AWS service, except + * Amazon S3, as of late 2017. + * + * @default [true] + */ + uriEscapePath?: boolean; + /** + * Whether to calculate a checksum of the request body and include it as + * either a request header (when signing) or as a query string parameter + * (when presigning). This is required for AWS Glacier and Amazon S3 and optional for + * every other AWS service as of late 2017. + * + * @default [true] + */ + applyChecksum?: boolean; +} +/** + * @public + */ +export interface SignatureV4CryptoInit { + sha256: ChecksumConstructor | HashConstructor; +} +/** + * @internal + */ +export declare abstract class SignatureV4Base { + protected readonly service: string; + protected readonly regionProvider: Provider; + protected readonly credentialProvider: Provider; + protected readonly sha256: ChecksumConstructor | HashConstructor; + private readonly uriEscapePath; + protected readonly applyChecksum: boolean; + protected constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath, }: SignatureV4Init & SignatureV4CryptoInit); + protected createCanonicalRequest(request: HttpRequest, canonicalHeaders: HeaderBag, payloadHash: string): string; + protected createStringToSign(longDate: string, credentialScope: string, canonicalRequest: string, algorithmIdentifier: string): Promise; + private getCanonicalPath; + protected validateResolvedCredentials(credentials: unknown): void; + protected formatDate(now: DateInput): { + longDate: string; + shortDate: string; + }; + protected getCanonicalHeaderList(headers: object): string; +} diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..ff54b67 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,43 @@ +export declare const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm"; +export declare const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential"; +export declare const AMZ_DATE_QUERY_PARAM = "X-Amz-Date"; +export declare const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders"; +export declare const EXPIRES_QUERY_PARAM = "X-Amz-Expires"; +export declare const SIGNATURE_QUERY_PARAM = "X-Amz-Signature"; +export declare const TOKEN_QUERY_PARAM = "X-Amz-Security-Token"; +export declare const REGION_SET_PARAM = "X-Amz-Region-Set"; +export declare const AUTH_HEADER = "authorization"; +export declare const AMZ_DATE_HEADER: string; +export declare const DATE_HEADER = "date"; +export declare const GENERATED_HEADERS: string[]; +export declare const SIGNATURE_HEADER: string; +export declare const SHA256_HEADER = "x-amz-content-sha256"; +export declare const TOKEN_HEADER: string; +export declare const HOST_HEADER = "host"; +export declare const ALWAYS_UNSIGNABLE_HEADERS: { + authorization: boolean; + "cache-control": boolean; + connection: boolean; + expect: boolean; + from: boolean; + "keep-alive": boolean; + "max-forwards": boolean; + pragma: boolean; + referer: boolean; + te: boolean; + trailer: boolean; + "transfer-encoding": boolean; + upgrade: boolean; + "user-agent": boolean; + "x-amzn-trace-id": boolean; +}; +export declare const PROXY_HEADER_PATTERN: RegExp; +export declare const SEC_HEADER_PATTERN: RegExp; +export declare const UNSIGNABLE_PATTERNS: RegExp[]; +export declare const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256"; +export declare const ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256"; +export declare const EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD"; +export declare const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD"; +export declare const MAX_CACHE_SIZE = 50; +export declare const KEY_TYPE_IDENTIFIER = "aws4_request"; +export declare const MAX_PRESIGNED_TTL: number; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/credentialDerivation.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/credentialDerivation.d.ts new file mode 100644 index 0000000..6cba9b6 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/credentialDerivation.d.ts @@ -0,0 +1,30 @@ +import { AwsCredentialIdentity, ChecksumConstructor, HashConstructor } from "@smithy/types"; +/** + * Create a string describing the scope of credentials used to sign a request. + * + * @internal + * + * @param shortDate - the current calendar date in the form YYYYMMDD. + * @param region - the AWS region in which the service resides. + * @param service - the service to which the signed request is being sent. + */ +export declare const createScope: (shortDate: string, region: string, service: string) => string; +/** + * Derive a signing key from its composite parts. + * + * @internal + * + * @param sha256Constructor - a constructor function that can instantiate SHA-256 + * hash objects. + * @param credentials - the credentials with which the request will be + * signed. + * @param shortDate - the current calendar date in the form YYYYMMDD. + * @param region - the AWS region in which the service resides. + * @param service - the service to which the signed request is being + * sent. + */ +export declare const getSigningKey: (sha256Constructor: ChecksumConstructor | HashConstructor, credentials: AwsCredentialIdentity, shortDate: string, region: string, service: string) => Promise; +/** + * @internal + */ +export declare const clearCredentialCache: () => void; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalHeaders.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalHeaders.d.ts new file mode 100644 index 0000000..e8f2e98 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalHeaders.d.ts @@ -0,0 +1,5 @@ +import { HeaderBag, HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getCanonicalHeaders: ({ headers }: HttpRequest, unsignableHeaders?: Set, signableHeaders?: Set) => HeaderBag; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalQuery.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalQuery.d.ts new file mode 100644 index 0000000..6a2d4fa --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/getCanonicalQuery.d.ts @@ -0,0 +1,5 @@ +import { HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getCanonicalQuery: ({ query }: HttpRequest) => string; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/getPayloadHash.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/getPayloadHash.d.ts new file mode 100644 index 0000000..c14a46d --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/getPayloadHash.d.ts @@ -0,0 +1,5 @@ +import { ChecksumConstructor, HashConstructor, HttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const getPayloadHash: ({ headers, body }: HttpRequest, hashConstructor: ChecksumConstructor | HashConstructor) => Promise; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/headerUtil.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/headerUtil.d.ts new file mode 100644 index 0000000..41ca217 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/headerUtil.d.ts @@ -0,0 +1,4 @@ +import { HeaderBag } from "@smithy/types"; +export declare const hasHeader: (soughtHeader: string, headers: HeaderBag) => boolean; +export declare const getHeaderValue: (soughtHeader: string, headers: HeaderBag) => string | undefined; +export declare const deleteHeader: (soughtHeader: string, headers: HeaderBag) => void; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..c9fa5f6 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/index.d.ts @@ -0,0 +1,11 @@ +export * from "./SignatureV4"; +export * from "./constants"; +export { getCanonicalHeaders } from "./getCanonicalHeaders"; +export { getCanonicalQuery } from "./getCanonicalQuery"; +export { getPayloadHash } from "./getPayloadHash"; +export { moveHeadersToQuery } from "./moveHeadersToQuery"; +export { prepareRequest } from "./prepareRequest"; +export * from "./credentialDerivation"; +export { SignatureV4Init, SignatureV4CryptoInit, SignatureV4Base } from "./SignatureV4Base"; +export { hasHeader } from "./headerUtil"; +export * from "./signature-v4a-container"; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/moveHeadersToQuery.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/moveHeadersToQuery.d.ts new file mode 100644 index 0000000..2017f3b --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/moveHeadersToQuery.d.ts @@ -0,0 +1,10 @@ +import { HttpRequest as IHttpRequest, QueryParameterBag } from "@smithy/types"; +/** + * @internal + */ +export declare const moveHeadersToQuery: (request: IHttpRequest, options?: { + unhoistableHeaders?: Set; + hoistableHeaders?: Set; +}) => IHttpRequest & { + query: QueryParameterBag; +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/prepareRequest.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/prepareRequest.d.ts new file mode 100644 index 0000000..57cf782 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/prepareRequest.d.ts @@ -0,0 +1,5 @@ +import { HttpRequest as IHttpRequest } from "@smithy/types"; +/** + * @internal + */ +export declare const prepareRequest: (request: IHttpRequest) => IHttpRequest; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/signature-v4a-container.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/signature-v4a-container.d.ts new file mode 100644 index 0000000..f1adc97 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/signature-v4a-container.d.ts @@ -0,0 +1,24 @@ +import { RequestSigner } from "@smithy/types"; +/** + * @public + */ +export type OptionalSigV4aSigner = { + /** + * This constructor is not typed so as not to require a type import + * from the signature-v4a package. + * + * The true type is SignatureV4a from @smithy/signature-v4a. + */ + new (options: any): RequestSigner; +}; +/** + * @public + * + * \@smithy/signature-v4a will install the constructor in this + * container if it's installed. + * + * This avoids a runtime-require being interpreted statically by bundlers. + */ +export declare const signatureV4aContainer: { + SignatureV4a: null | OptionalSigV4aSigner; +}; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/suite.fixture.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/suite.fixture.d.ts new file mode 100644 index 0000000..9363eeb --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/suite.fixture.d.ts @@ -0,0 +1,14 @@ +import { HttpRequest } from "@smithy/types"; +export interface TestCase { + name: string; + request: HttpRequest; + authorization: string; +} +export declare const region = "us-east-1"; +export declare const service = "service"; +export declare const credentials: { + accessKeyId: string; + secretAccessKey: string; +}; +export declare const signingDate: Date; +export declare const requests: Array; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/utilDate.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/utilDate.d.ts new file mode 100644 index 0000000..9a6f383 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/ts3.4/utilDate.d.ts @@ -0,0 +1,2 @@ +export declare const iso8601: (time: number | string | Date) => string; +export declare const toDate: (time: number | string | Date) => Date; diff --git a/bff/node_modules/@smithy/signature-v4/dist-types/utilDate.d.ts b/bff/node_modules/@smithy/signature-v4/dist-types/utilDate.d.ts new file mode 100644 index 0000000..e8c6a68 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/dist-types/utilDate.d.ts @@ -0,0 +1,2 @@ +export declare const iso8601: (time: number | string | Date) => string; +export declare const toDate: (time: number | string | Date) => Date; diff --git a/bff/node_modules/@smithy/signature-v4/package.json b/bff/node_modules/@smithy/signature-v4/package.json new file mode 100644 index 0000000..67b5bd9 --- /dev/null +++ b/bff/node_modules/@smithy/signature-v4/package.json @@ -0,0 +1,70 @@ +{ + "name": "@smithy/signature-v4", + "version": "5.3.12", + "description": "A standalone implementation of the AWS Signature V4 request signing algorithm", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline signature-v4", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@aws-crypto/sha256-js": "5.2.0", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/signature-v4", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/signature-v4" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/smithy-client/LICENSE b/bff/node_modules/@smithy/smithy-client/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/smithy-client/README.md b/bff/node_modules/@smithy/smithy-client/README.md new file mode 100644 index 0000000..3417599 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/README.md @@ -0,0 +1,17 @@ +# @smithy/smithy-client + +[![NPM version](https://img.shields.io/npm/v/@smithy/smithy-client/latest.svg)](https://www.npmjs.com/package/@smithy/smithy-client) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/smithy-client.svg)](https://www.npmjs.com/package/@smithy/smithy-client) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- diff --git a/bff/node_modules/@smithy/smithy-client/dist-cjs/index.js b/bff/node_modules/@smithy/smithy-client/dist-cjs/index.js new file mode 100644 index 0000000..eb48d04 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-cjs/index.js @@ -0,0 +1,635 @@ +'use strict'; + +var middlewareStack = require('@smithy/middleware-stack'); +var protocols = require('@smithy/core/protocols'); +var types = require('@smithy/types'); +var schema = require('@smithy/core/schema'); +var serde = require('@smithy/core/serde'); + +class Client { + config; + middlewareStack = middlewareStack.constructStack(); + initConfig; + handlers; + constructor(config) { + this.config = config; + const { protocol, protocolSettings } = config; + if (protocolSettings) { + if (typeof protocol === "function") { + config.protocol = new protocol(protocolSettings); + } + } + } + send(command, optionsOrCb, cb) { + const options = typeof optionsOrCb !== "function" ? optionsOrCb : undefined; + const callback = typeof optionsOrCb === "function" ? optionsOrCb : cb; + const useHandlerCache = options === undefined && this.config.cacheMiddleware === true; + let handler; + if (useHandlerCache) { + if (!this.handlers) { + this.handlers = new WeakMap(); + } + const handlers = this.handlers; + if (handlers.has(command.constructor)) { + handler = handlers.get(command.constructor); + } + else { + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + handlers.set(command.constructor, handler); + } + } + else { + delete this.handlers; + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + } + if (callback) { + handler(command) + .then((result) => callback(null, result.output), (err) => callback(err)) + .catch(() => { }); + } + else { + return handler(command).then((result) => result.output); + } + } + destroy() { + this.config?.requestHandler?.destroy?.(); + delete this.handlers; + } +} + +const SENSITIVE_STRING$1 = "***SensitiveInformation***"; +function schemaLogFilter(schema$1, data) { + if (data == null) { + return data; + } + const ns = schema.NormalizedSchema.of(schema$1); + if (ns.getMergedTraits().sensitive) { + return SENSITIVE_STRING$1; + } + if (ns.isListSchema()) { + const isSensitive = !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING$1; + } + } + else if (ns.isMapSchema()) { + const isSensitive = !!ns.getKeySchema().getMergedTraits().sensitive || !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING$1; + } + } + else if (ns.isStructSchema() && typeof data === "object") { + const object = data; + const newObject = {}; + for (const [member, memberNs] of ns.structIterator()) { + if (object[member] != null) { + newObject[member] = schemaLogFilter(memberNs, object[member]); + } + } + return newObject; + } + return data; +} + +class Command { + middlewareStack = middlewareStack.constructStack(); + schema; + static classBuilder() { + return new ClassBuilder(); + } + resolveMiddlewareWithContext(clientStack, configuration, options, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }) { + for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) { + this.middlewareStack.use(mw); + } + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog, + outputFilterSensitiveLog, + [types.SMITHY_CONTEXT_KEY]: { + commandInstance: this, + ...smithyContext, + }, + ...additionalContext, + }; + const { requestHandler } = configuration; + return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext); + } +} +class ClassBuilder { + _init = () => { }; + _ep = {}; + _middlewareFn = () => []; + _commandName = ""; + _clientName = ""; + _additionalContext = {}; + _smithyContext = {}; + _inputFilterSensitiveLog = undefined; + _outputFilterSensitiveLog = undefined; + _serializer = null; + _deserializer = null; + _operationSchema; + init(cb) { + this._init = cb; + } + ep(endpointParameterInstructions) { + this._ep = endpointParameterInstructions; + return this; + } + m(middlewareSupplier) { + this._middlewareFn = middlewareSupplier; + return this; + } + s(service, operation, smithyContext = {}) { + this._smithyContext = { + service, + operation, + ...smithyContext, + }; + return this; + } + c(additionalContext = {}) { + this._additionalContext = additionalContext; + return this; + } + n(clientName, commandName) { + this._clientName = clientName; + this._commandName = commandName; + return this; + } + f(inputFilter = (_) => _, outputFilter = (_) => _) { + this._inputFilterSensitiveLog = inputFilter; + this._outputFilterSensitiveLog = outputFilter; + return this; + } + ser(serializer) { + this._serializer = serializer; + return this; + } + de(deserializer) { + this._deserializer = deserializer; + return this; + } + sc(operation) { + this._operationSchema = operation; + this._smithyContext.operationSchema = operation; + return this; + } + build() { + const closure = this; + let CommandRef; + return (CommandRef = class extends Command { + input; + static getEndpointParameterInstructions() { + return closure._ep; + } + constructor(...[input]) { + super(); + this.input = input ?? {}; + closure._init(this); + this.schema = closure._operationSchema; + } + resolveMiddleware(stack, configuration, options) { + const op = closure._operationSchema; + const input = op?.[4] ?? op?.input; + const output = op?.[5] ?? op?.output; + return this.resolveMiddlewareWithContext(stack, configuration, options, { + CommandCtor: CommandRef, + middlewareFn: closure._middlewareFn, + clientName: closure._clientName, + commandName: closure._commandName, + inputFilterSensitiveLog: closure._inputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, input) : (_) => _), + outputFilterSensitiveLog: closure._outputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, output) : (_) => _), + smithyContext: closure._smithyContext, + additionalContext: closure._additionalContext, + }); + } + serialize = closure._serializer; + deserialize = closure._deserializer; + }); + } +} + +const SENSITIVE_STRING = "***SensitiveInformation***"; + +const createAggregatedClient = (commands, Client, options) => { + for (const [command, CommandCtor] of Object.entries(commands)) { + const methodImpl = async function (args, optionsOrCb, cb) { + const command = new CommandCtor(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } + else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") + throw new Error(`Expected http options but got ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } + else { + return this.send(command, optionsOrCb); + } + }; + const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, ""); + Client.prototype[methodName] = methodImpl; + } + const { paginators = {}, waiters = {} } = options ?? {}; + for (const [paginatorName, paginatorFn] of Object.entries(paginators)) { + if (Client.prototype[paginatorName] === void 0) { + Client.prototype[paginatorName] = function (commandInput = {}, paginationConfiguration, ...rest) { + return paginatorFn({ + ...paginationConfiguration, + client: this, + }, commandInput, ...rest); + }; + } + } + for (const [waiterName, waiterFn] of Object.entries(waiters)) { + if (Client.prototype[waiterName] === void 0) { + Client.prototype[waiterName] = async function (commandInput = {}, waiterConfiguration, ...rest) { + let config = waiterConfiguration; + if (typeof waiterConfiguration === "number") { + config = { + maxWaitTime: waiterConfiguration, + }; + } + return waiterFn({ + ...config, + client: this, + }, commandInput, ...rest); + }; + } + } +}; + +class ServiceException extends Error { + $fault; + $response; + $retryable; + $metadata; + constructor(options) { + super(options.message); + Object.setPrototypeOf(this, Object.getPrototypeOf(this).constructor.prototype); + this.name = options.name; + this.$fault = options.$fault; + this.$metadata = options.$metadata; + } + static isInstance(value) { + if (!value) + return false; + const candidate = value; + return (ServiceException.prototype.isPrototypeOf(candidate) || + (Boolean(candidate.$fault) && + Boolean(candidate.$metadata) && + (candidate.$fault === "client" || candidate.$fault === "server"))); + } + static [Symbol.hasInstance](instance) { + if (!instance) + return false; + const candidate = instance; + if (this === ServiceException) { + return ServiceException.isInstance(instance); + } + if (ServiceException.isInstance(instance)) { + if (candidate.name && this.name) { + return this.prototype.isPrototypeOf(instance) || candidate.name === this.name; + } + return this.prototype.isPrototypeOf(instance); + } + return false; + } +} +const decorateServiceException = (exception, additions = {}) => { + Object.entries(additions) + .filter(([, v]) => v !== undefined) + .forEach(([k, v]) => { + if (exception[k] == undefined || exception[k] === "") { + exception[k] = v; + } + }); + const message = exception.message || exception.Message || "UnknownError"; + exception.message = message; + delete exception.Message; + return exception; +}; + +const throwDefaultError = ({ output, parsedBody, exceptionCtor, errorCode }) => { + const $metadata = deserializeMetadata(output); + const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + "" : undefined; + const response = new exceptionCtor({ + name: parsedBody?.code || parsedBody?.Code || errorCode || statusCode || "UnknownError", + $fault: "client", + $metadata, + }); + throw decorateServiceException(response, parsedBody); +}; +const withBaseException = (ExceptionCtor) => { + return ({ output, parsedBody, errorCode }) => { + throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode }); + }; +}; +const deserializeMetadata = (output) => ({ + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"], +}); + +const loadConfigsForDefaultMode = (mode) => { + switch (mode) { + case "standard": + return { + retryMode: "standard", + connectionTimeout: 3100, + }; + case "in-region": + return { + retryMode: "standard", + connectionTimeout: 1100, + }; + case "cross-region": + return { + retryMode: "standard", + connectionTimeout: 3100, + }; + case "mobile": + return { + retryMode: "standard", + connectionTimeout: 30000, + }; + default: + return {}; + } +}; + +let warningEmitted = false; +const emitWarningIfUnsupportedVersion = (version) => { + if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 16) { + warningEmitted = true; + } +}; + +const knownAlgorithms = Object.values(types.AlgorithmId); +const getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + for (const id in types.AlgorithmId) { + const algorithmId = types.AlgorithmId[id]; + if (runtimeConfig[algorithmId] === undefined) { + continue; + } + checksumAlgorithms.push({ + algorithmId: () => algorithmId, + checksumConstructor: () => runtimeConfig[algorithmId], + }); + } + for (const [id, ChecksumCtor] of Object.entries(runtimeConfig.checksumAlgorithms ?? {})) { + checksumAlgorithms.push({ + algorithmId: () => id, + checksumConstructor: () => ChecksumCtor, + }); + } + return { + addChecksumAlgorithm(algo) { + runtimeConfig.checksumAlgorithms = runtimeConfig.checksumAlgorithms ?? {}; + const id = algo.algorithmId(); + const ctor = algo.checksumConstructor(); + if (knownAlgorithms.includes(id)) { + runtimeConfig.checksumAlgorithms[id.toUpperCase()] = ctor; + } + else { + runtimeConfig.checksumAlgorithms[id] = ctor; + } + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + }, + }; +}; +const resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + const id = checksumAlgorithm.algorithmId(); + if (knownAlgorithms.includes(id)) { + runtimeConfig[id] = checksumAlgorithm.checksumConstructor(); + } + }); + return runtimeConfig; +}; + +const getRetryConfiguration = (runtimeConfig) => { + return { + setRetryStrategy(retryStrategy) { + runtimeConfig.retryStrategy = retryStrategy; + }, + retryStrategy() { + return runtimeConfig.retryStrategy; + }, + }; +}; +const resolveRetryRuntimeConfig = (retryStrategyConfiguration) => { + const runtimeConfig = {}; + runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy(); + return runtimeConfig; +}; + +const getDefaultExtensionConfiguration = (runtimeConfig) => { + return Object.assign(getChecksumConfiguration(runtimeConfig), getRetryConfiguration(runtimeConfig)); +}; +const getDefaultClientConfiguration = getDefaultExtensionConfiguration; +const resolveDefaultRuntimeConfig = (config) => { + return Object.assign(resolveChecksumRuntimeConfig(config), resolveRetryRuntimeConfig(config)); +}; + +const getArrayIfSingleItem = (mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray]; + +const getValueFromTextNode = (obj) => { + const textNodeName = "#text"; + for (const key in obj) { + if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== undefined) { + obj[key] = obj[key][textNodeName]; + } + else if (typeof obj[key] === "object" && obj[key] !== null) { + obj[key] = getValueFromTextNode(obj[key]); + } + } + return obj; +}; + +const isSerializableHeaderValue = (value) => { + return value != null; +}; + +class NoOpLogger { + trace() { } + debug() { } + info() { } + warn() { } + error() { } +} + +function map(arg0, arg1, arg2) { + let target; + let filter; + let instructions; + if (typeof arg1 === "undefined" && typeof arg2 === "undefined") { + target = {}; + instructions = arg0; + } + else { + target = arg0; + if (typeof arg1 === "function") { + filter = arg1; + instructions = arg2; + return mapWithFilter(target, filter, instructions); + } + else { + instructions = arg1; + } + } + for (const key of Object.keys(instructions)) { + if (!Array.isArray(instructions[key])) { + target[key] = instructions[key]; + continue; + } + applyInstruction(target, null, instructions, key); + } + return target; +} +const convertMap = (target) => { + const output = {}; + for (const [k, v] of Object.entries(target || {})) { + output[k] = [, v]; + } + return output; +}; +const take = (source, instructions) => { + const out = {}; + for (const key in instructions) { + applyInstruction(out, source, instructions, key); + } + return out; +}; +const mapWithFilter = (target, filter, instructions) => { + return map(target, Object.entries(instructions).reduce((_instructions, [key, value]) => { + if (Array.isArray(value)) { + _instructions[key] = value; + } + else { + if (typeof value === "function") { + _instructions[key] = [filter, value()]; + } + else { + _instructions[key] = [filter, value]; + } + } + return _instructions; + }, {})); +}; +const applyInstruction = (target, source, instructions, targetKey) => { + if (source !== null) { + let instruction = instructions[targetKey]; + if (typeof instruction === "function") { + instruction = [, instruction]; + } + const [filter = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction; + if ((typeof filter === "function" && filter(source[sourceKey])) || (typeof filter !== "function" && !!filter)) { + target[targetKey] = valueFn(source[sourceKey]); + } + return; + } + let [filter, value] = instructions[targetKey]; + if (typeof value === "function") { + let _value; + const defaultFilterPassed = filter === undefined && (_value = value()) != null; + const customFilterPassed = (typeof filter === "function" && !!filter(void 0)) || (typeof filter !== "function" && !!filter); + if (defaultFilterPassed) { + target[targetKey] = _value; + } + else if (customFilterPassed) { + target[targetKey] = value(); + } + } + else { + const defaultFilterPassed = filter === undefined && value != null; + const customFilterPassed = (typeof filter === "function" && !!filter(value)) || (typeof filter !== "function" && !!filter); + if (defaultFilterPassed || customFilterPassed) { + target[targetKey] = value; + } + } +}; +const nonNullish = (_) => _ != null; +const pass = (_) => _; + +const serializeFloat = (value) => { + if (value !== value) { + return "NaN"; + } + switch (value) { + case Infinity: + return "Infinity"; + case -Infinity: + return "-Infinity"; + default: + return value; + } +}; +const serializeDateTime = (date) => date.toISOString().replace(".000Z", "Z"); + +const _json = (obj) => { + if (obj == null) { + return {}; + } + if (Array.isArray(obj)) { + return obj.filter((_) => _ != null).map(_json); + } + if (typeof obj === "object") { + const target = {}; + for (const key of Object.keys(obj)) { + if (obj[key] == null) { + continue; + } + target[key] = _json(obj[key]); + } + return target; + } + return obj; +}; + +exports.collectBody = protocols.collectBody; +exports.extendedEncodeURIComponent = protocols.extendedEncodeURIComponent; +exports.resolvedPath = protocols.resolvedPath; +exports.Client = Client; +exports.Command = Command; +exports.NoOpLogger = NoOpLogger; +exports.SENSITIVE_STRING = SENSITIVE_STRING; +exports.ServiceException = ServiceException; +exports._json = _json; +exports.convertMap = convertMap; +exports.createAggregatedClient = createAggregatedClient; +exports.decorateServiceException = decorateServiceException; +exports.emitWarningIfUnsupportedVersion = emitWarningIfUnsupportedVersion; +exports.getArrayIfSingleItem = getArrayIfSingleItem; +exports.getDefaultClientConfiguration = getDefaultClientConfiguration; +exports.getDefaultExtensionConfiguration = getDefaultExtensionConfiguration; +exports.getValueFromTextNode = getValueFromTextNode; +exports.isSerializableHeaderValue = isSerializableHeaderValue; +exports.loadConfigsForDefaultMode = loadConfigsForDefaultMode; +exports.map = map; +exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig; +exports.serializeDateTime = serializeDateTime; +exports.serializeFloat = serializeFloat; +exports.take = take; +exports.throwDefaultError = throwDefaultError; +exports.withBaseException = withBaseException; +Object.prototype.hasOwnProperty.call(serde, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: serde['__proto__'] + }); + +Object.keys(serde).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = serde[k]; +}); diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js b/bff/node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js new file mode 100644 index 0000000..73cd076 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js @@ -0,0 +1,7 @@ +export class NoOpLogger { + trace() { } + debug() { } + info() { } + warn() { } + error() { } +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/client.js b/bff/node_modules/@smithy/smithy-client/dist-es/client.js new file mode 100644 index 0000000..ca6e210 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/client.js @@ -0,0 +1,51 @@ +import { constructStack } from "@smithy/middleware-stack"; +export class Client { + config; + middlewareStack = constructStack(); + initConfig; + handlers; + constructor(config) { + this.config = config; + const { protocol, protocolSettings } = config; + if (protocolSettings) { + if (typeof protocol === "function") { + config.protocol = new protocol(protocolSettings); + } + } + } + send(command, optionsOrCb, cb) { + const options = typeof optionsOrCb !== "function" ? optionsOrCb : undefined; + const callback = typeof optionsOrCb === "function" ? optionsOrCb : cb; + const useHandlerCache = options === undefined && this.config.cacheMiddleware === true; + let handler; + if (useHandlerCache) { + if (!this.handlers) { + this.handlers = new WeakMap(); + } + const handlers = this.handlers; + if (handlers.has(command.constructor)) { + handler = handlers.get(command.constructor); + } + else { + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + handlers.set(command.constructor, handler); + } + } + else { + delete this.handlers; + handler = command.resolveMiddleware(this.middlewareStack, this.config, options); + } + if (callback) { + handler(command) + .then((result) => callback(null, result.output), (err) => callback(err)) + .catch(() => { }); + } + else { + return handler(command).then((result) => result.output); + } + } + destroy() { + this.config?.requestHandler?.destroy?.(); + delete this.handlers; + } +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js b/bff/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js new file mode 100644 index 0000000..2b76f0a --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js @@ -0,0 +1 @@ +export { collectBody } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/command.js b/bff/node_modules/@smithy/smithy-client/dist-es/command.js new file mode 100644 index 0000000..4124008 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/command.js @@ -0,0 +1,124 @@ +import { constructStack } from "@smithy/middleware-stack"; +import { SMITHY_CONTEXT_KEY } from "@smithy/types"; +import { schemaLogFilter } from "./schemaLogFilter"; +export class Command { + middlewareStack = constructStack(); + schema; + static classBuilder() { + return new ClassBuilder(); + } + resolveMiddlewareWithContext(clientStack, configuration, options, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }) { + for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) { + this.middlewareStack.use(mw); + } + const stack = clientStack.concat(this.middlewareStack); + const { logger } = configuration; + const handlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog, + outputFilterSensitiveLog, + [SMITHY_CONTEXT_KEY]: { + commandInstance: this, + ...smithyContext, + }, + ...additionalContext, + }; + const { requestHandler } = configuration; + return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext); + } +} +class ClassBuilder { + _init = () => { }; + _ep = {}; + _middlewareFn = () => []; + _commandName = ""; + _clientName = ""; + _additionalContext = {}; + _smithyContext = {}; + _inputFilterSensitiveLog = undefined; + _outputFilterSensitiveLog = undefined; + _serializer = null; + _deserializer = null; + _operationSchema; + init(cb) { + this._init = cb; + } + ep(endpointParameterInstructions) { + this._ep = endpointParameterInstructions; + return this; + } + m(middlewareSupplier) { + this._middlewareFn = middlewareSupplier; + return this; + } + s(service, operation, smithyContext = {}) { + this._smithyContext = { + service, + operation, + ...smithyContext, + }; + return this; + } + c(additionalContext = {}) { + this._additionalContext = additionalContext; + return this; + } + n(clientName, commandName) { + this._clientName = clientName; + this._commandName = commandName; + return this; + } + f(inputFilter = (_) => _, outputFilter = (_) => _) { + this._inputFilterSensitiveLog = inputFilter; + this._outputFilterSensitiveLog = outputFilter; + return this; + } + ser(serializer) { + this._serializer = serializer; + return this; + } + de(deserializer) { + this._deserializer = deserializer; + return this; + } + sc(operation) { + this._operationSchema = operation; + this._smithyContext.operationSchema = operation; + return this; + } + build() { + const closure = this; + let CommandRef; + return (CommandRef = class extends Command { + input; + static getEndpointParameterInstructions() { + return closure._ep; + } + constructor(...[input]) { + super(); + this.input = input ?? {}; + closure._init(this); + this.schema = closure._operationSchema; + } + resolveMiddleware(stack, configuration, options) { + const op = closure._operationSchema; + const input = op?.[4] ?? op?.input; + const output = op?.[5] ?? op?.output; + return this.resolveMiddlewareWithContext(stack, configuration, options, { + CommandCtor: CommandRef, + middlewareFn: closure._middlewareFn, + clientName: closure._clientName, + commandName: closure._commandName, + inputFilterSensitiveLog: closure._inputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, input) : (_) => _), + outputFilterSensitiveLog: closure._outputFilterSensitiveLog ?? (op ? schemaLogFilter.bind(null, output) : (_) => _), + smithyContext: closure._smithyContext, + additionalContext: closure._additionalContext, + }); + } + serialize = closure._serializer; + deserialize = closure._deserializer; + }); + } +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/constants.js b/bff/node_modules/@smithy/smithy-client/dist-es/constants.js new file mode 100644 index 0000000..9b193d7 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/constants.js @@ -0,0 +1 @@ +export const SENSITIVE_STRING = "***SensitiveInformation***"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js b/bff/node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js new file mode 100644 index 0000000..2ac667a --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js @@ -0,0 +1,47 @@ +export const createAggregatedClient = (commands, Client, options) => { + for (const [command, CommandCtor] of Object.entries(commands)) { + const methodImpl = async function (args, optionsOrCb, cb) { + const command = new CommandCtor(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } + else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") + throw new Error(`Expected http options but got ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } + else { + return this.send(command, optionsOrCb); + } + }; + const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, ""); + Client.prototype[methodName] = methodImpl; + } + const { paginators = {}, waiters = {} } = options ?? {}; + for (const [paginatorName, paginatorFn] of Object.entries(paginators)) { + if (Client.prototype[paginatorName] === void 0) { + Client.prototype[paginatorName] = function (commandInput = {}, paginationConfiguration, ...rest) { + return paginatorFn({ + ...paginationConfiguration, + client: this, + }, commandInput, ...rest); + }; + } + } + for (const [waiterName, waiterFn] of Object.entries(waiters)) { + if (Client.prototype[waiterName] === void 0) { + Client.prototype[waiterName] = async function (commandInput = {}, waiterConfiguration, ...rest) { + let config = waiterConfiguration; + if (typeof waiterConfiguration === "number") { + config = { + maxWaitTime: waiterConfiguration, + }; + } + return waiterFn({ + ...config, + client: this, + }, commandInput, ...rest); + }; + } + } +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/default-error-handler.js b/bff/node_modules/@smithy/smithy-client/dist-es/default-error-handler.js new file mode 100644 index 0000000..7da1091 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/default-error-handler.js @@ -0,0 +1,22 @@ +import { decorateServiceException } from "./exceptions"; +export const throwDefaultError = ({ output, parsedBody, exceptionCtor, errorCode }) => { + const $metadata = deserializeMetadata(output); + const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + "" : undefined; + const response = new exceptionCtor({ + name: parsedBody?.code || parsedBody?.Code || errorCode || statusCode || "UnknownError", + $fault: "client", + $metadata, + }); + throw decorateServiceException(response, parsedBody); +}; +export const withBaseException = (ExceptionCtor) => { + return ({ output, parsedBody, errorCode }) => { + throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode }); + }; +}; +const deserializeMetadata = (output) => ({ + httpStatusCode: output.statusCode, + requestId: output.headers["x-amzn-requestid"] ?? output.headers["x-amzn-request-id"] ?? output.headers["x-amz-request-id"], + extendedRequestId: output.headers["x-amz-id-2"], + cfId: output.headers["x-amz-cf-id"], +}); diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/defaults-mode.js b/bff/node_modules/@smithy/smithy-client/dist-es/defaults-mode.js new file mode 100644 index 0000000..f19079c --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/defaults-mode.js @@ -0,0 +1,26 @@ +export const loadConfigsForDefaultMode = (mode) => { + switch (mode) { + case "standard": + return { + retryMode: "standard", + connectionTimeout: 3100, + }; + case "in-region": + return { + retryMode: "standard", + connectionTimeout: 1100, + }; + case "cross-region": + return { + retryMode: "standard", + connectionTimeout: 3100, + }; + case "mobile": + return { + retryMode: "standard", + connectionTimeout: 30000, + }; + default: + return {}; + } +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/emitWarningIfUnsupportedVersion.js b/bff/node_modules/@smithy/smithy-client/dist-es/emitWarningIfUnsupportedVersion.js new file mode 100644 index 0000000..7b30893 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/emitWarningIfUnsupportedVersion.js @@ -0,0 +1,6 @@ +let warningEmitted = false; +export const emitWarningIfUnsupportedVersion = (version) => { + if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 16) { + warningEmitted = true; + } +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/exceptions.js b/bff/node_modules/@smithy/smithy-client/dist-es/exceptions.js new file mode 100644 index 0000000..88c062e --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/exceptions.js @@ -0,0 +1,50 @@ +export class ServiceException extends Error { + $fault; + $response; + $retryable; + $metadata; + constructor(options) { + super(options.message); + Object.setPrototypeOf(this, Object.getPrototypeOf(this).constructor.prototype); + this.name = options.name; + this.$fault = options.$fault; + this.$metadata = options.$metadata; + } + static isInstance(value) { + if (!value) + return false; + const candidate = value; + return (ServiceException.prototype.isPrototypeOf(candidate) || + (Boolean(candidate.$fault) && + Boolean(candidate.$metadata) && + (candidate.$fault === "client" || candidate.$fault === "server"))); + } + static [Symbol.hasInstance](instance) { + if (!instance) + return false; + const candidate = instance; + if (this === ServiceException) { + return ServiceException.isInstance(instance); + } + if (ServiceException.isInstance(instance)) { + if (candidate.name && this.name) { + return this.prototype.isPrototypeOf(instance) || candidate.name === this.name; + } + return this.prototype.isPrototypeOf(instance); + } + return false; + } +} +export const decorateServiceException = (exception, additions = {}) => { + Object.entries(additions) + .filter(([, v]) => v !== undefined) + .forEach(([k, v]) => { + if (exception[k] == undefined || exception[k] === "") { + exception[k] = v; + } + }); + const message = exception.message || exception.Message || "UnknownError"; + exception.message = message; + delete exception.Message; + return exception; +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js b/bff/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js new file mode 100644 index 0000000..cb4f991 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js @@ -0,0 +1 @@ +export { extendedEncodeURIComponent } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js b/bff/node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js new file mode 100644 index 0000000..2b4b50b --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js @@ -0,0 +1,49 @@ +import { AlgorithmId } from "@smithy/types"; +export { AlgorithmId }; +const knownAlgorithms = Object.values(AlgorithmId); +export const getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + for (const id in AlgorithmId) { + const algorithmId = AlgorithmId[id]; + if (runtimeConfig[algorithmId] === undefined) { + continue; + } + checksumAlgorithms.push({ + algorithmId: () => algorithmId, + checksumConstructor: () => runtimeConfig[algorithmId], + }); + } + for (const [id, ChecksumCtor] of Object.entries(runtimeConfig.checksumAlgorithms ?? {})) { + checksumAlgorithms.push({ + algorithmId: () => id, + checksumConstructor: () => ChecksumCtor, + }); + } + return { + addChecksumAlgorithm(algo) { + runtimeConfig.checksumAlgorithms = runtimeConfig.checksumAlgorithms ?? {}; + const id = algo.algorithmId(); + const ctor = algo.checksumConstructor(); + if (knownAlgorithms.includes(id)) { + runtimeConfig.checksumAlgorithms[id.toUpperCase()] = ctor; + } + else { + runtimeConfig.checksumAlgorithms[id] = ctor; + } + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + }, + }; +}; +export const resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + const id = checksumAlgorithm.algorithmId(); + if (knownAlgorithms.includes(id)) { + runtimeConfig[id] = checksumAlgorithm.checksumConstructor(); + } + }); + return runtimeConfig; +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js b/bff/node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js new file mode 100644 index 0000000..272cd3a --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js @@ -0,0 +1,9 @@ +import { getChecksumConfiguration, resolveChecksumRuntimeConfig } from "./checksum"; +import { getRetryConfiguration, resolveRetryRuntimeConfig } from "./retry"; +export const getDefaultExtensionConfiguration = (runtimeConfig) => { + return Object.assign(getChecksumConfiguration(runtimeConfig), getRetryConfiguration(runtimeConfig)); +}; +export const getDefaultClientConfiguration = getDefaultExtensionConfiguration; +export const resolveDefaultRuntimeConfig = (config) => { + return Object.assign(resolveChecksumRuntimeConfig(config), resolveRetryRuntimeConfig(config)); +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/extensions/index.js b/bff/node_modules/@smithy/smithy-client/dist-es/extensions/index.js new file mode 100644 index 0000000..f1b8074 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/extensions/index.js @@ -0,0 +1 @@ +export * from "./defaultExtensionConfiguration"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/extensions/retry.js b/bff/node_modules/@smithy/smithy-client/dist-es/extensions/retry.js new file mode 100644 index 0000000..2c18b0a --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/extensions/retry.js @@ -0,0 +1,15 @@ +export const getRetryConfiguration = (runtimeConfig) => { + return { + setRetryStrategy(retryStrategy) { + runtimeConfig.retryStrategy = retryStrategy; + }, + retryStrategy() { + return runtimeConfig.retryStrategy; + }, + }; +}; +export const resolveRetryRuntimeConfig = (retryStrategyConfiguration) => { + const runtimeConfig = {}; + runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy(); + return runtimeConfig; +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/get-array-if-single-item.js b/bff/node_modules/@smithy/smithy-client/dist-es/get-array-if-single-item.js new file mode 100644 index 0000000..25d9432 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/get-array-if-single-item.js @@ -0,0 +1 @@ +export const getArrayIfSingleItem = (mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray]; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/get-value-from-text-node.js b/bff/node_modules/@smithy/smithy-client/dist-es/get-value-from-text-node.js new file mode 100644 index 0000000..aa0f827 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/get-value-from-text-node.js @@ -0,0 +1,12 @@ +export const getValueFromTextNode = (obj) => { + const textNodeName = "#text"; + for (const key in obj) { + if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== undefined) { + obj[key] = obj[key][textNodeName]; + } + else if (typeof obj[key] === "object" && obj[key] !== null) { + obj[key] = getValueFromTextNode(obj[key]); + } + } + return obj; +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/index.js b/bff/node_modules/@smithy/smithy-client/dist-es/index.js new file mode 100644 index 0000000..7dbe607 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/index.js @@ -0,0 +1,20 @@ +export * from "./client"; +export * from "./collect-stream-body"; +export * from "./command"; +export * from "./constants"; +export * from "./create-aggregated-client"; +export * from "./default-error-handler"; +export * from "./defaults-mode"; +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./exceptions"; +export * from "./extended-encode-uri-component"; +export * from "./extensions"; +export * from "./get-array-if-single-item"; +export * from "./get-value-from-text-node"; +export * from "./is-serializable-header-value"; +export * from "./NoOpLogger"; +export * from "./object-mapping"; +export * from "./resolve-path"; +export * from "./ser-utils"; +export * from "./serde-json"; +export * from "@smithy/core/serde"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/is-serializable-header-value.js b/bff/node_modules/@smithy/smithy-client/dist-es/is-serializable-header-value.js new file mode 100644 index 0000000..cb117ca --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/is-serializable-header-value.js @@ -0,0 +1,3 @@ +export const isSerializableHeaderValue = (value) => { + return value != null; +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/object-mapping.js b/bff/node_modules/@smithy/smithy-client/dist-es/object-mapping.js new file mode 100644 index 0000000..84a1f26 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/object-mapping.js @@ -0,0 +1,92 @@ +export function map(arg0, arg1, arg2) { + let target; + let filter; + let instructions; + if (typeof arg1 === "undefined" && typeof arg2 === "undefined") { + target = {}; + instructions = arg0; + } + else { + target = arg0; + if (typeof arg1 === "function") { + filter = arg1; + instructions = arg2; + return mapWithFilter(target, filter, instructions); + } + else { + instructions = arg1; + } + } + for (const key of Object.keys(instructions)) { + if (!Array.isArray(instructions[key])) { + target[key] = instructions[key]; + continue; + } + applyInstruction(target, null, instructions, key); + } + return target; +} +export const convertMap = (target) => { + const output = {}; + for (const [k, v] of Object.entries(target || {})) { + output[k] = [, v]; + } + return output; +}; +export const take = (source, instructions) => { + const out = {}; + for (const key in instructions) { + applyInstruction(out, source, instructions, key); + } + return out; +}; +const mapWithFilter = (target, filter, instructions) => { + return map(target, Object.entries(instructions).reduce((_instructions, [key, value]) => { + if (Array.isArray(value)) { + _instructions[key] = value; + } + else { + if (typeof value === "function") { + _instructions[key] = [filter, value()]; + } + else { + _instructions[key] = [filter, value]; + } + } + return _instructions; + }, {})); +}; +const applyInstruction = (target, source, instructions, targetKey) => { + if (source !== null) { + let instruction = instructions[targetKey]; + if (typeof instruction === "function") { + instruction = [, instruction]; + } + const [filter = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction; + if ((typeof filter === "function" && filter(source[sourceKey])) || (typeof filter !== "function" && !!filter)) { + target[targetKey] = valueFn(source[sourceKey]); + } + return; + } + let [filter, value] = instructions[targetKey]; + if (typeof value === "function") { + let _value; + const defaultFilterPassed = filter === undefined && (_value = value()) != null; + const customFilterPassed = (typeof filter === "function" && !!filter(void 0)) || (typeof filter !== "function" && !!filter); + if (defaultFilterPassed) { + target[targetKey] = _value; + } + else if (customFilterPassed) { + target[targetKey] = value(); + } + } + else { + const defaultFilterPassed = filter === undefined && value != null; + const customFilterPassed = (typeof filter === "function" && !!filter(value)) || (typeof filter !== "function" && !!filter); + if (defaultFilterPassed || customFilterPassed) { + target[targetKey] = value; + } + } +}; +const nonNullish = (_) => _ != null; +const pass = (_) => _; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/resolve-path.js b/bff/node_modules/@smithy/smithy-client/dist-es/resolve-path.js new file mode 100644 index 0000000..6c70cb3 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/resolve-path.js @@ -0,0 +1 @@ +export { resolvedPath } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/schemaLogFilter.js b/bff/node_modules/@smithy/smithy-client/dist-es/schemaLogFilter.js new file mode 100644 index 0000000..b00f557 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/schemaLogFilter.js @@ -0,0 +1,34 @@ +import { NormalizedSchema } from "@smithy/core/schema"; +const SENSITIVE_STRING = "***SensitiveInformation***"; +export function schemaLogFilter(schema, data) { + if (data == null) { + return data; + } + const ns = NormalizedSchema.of(schema); + if (ns.getMergedTraits().sensitive) { + return SENSITIVE_STRING; + } + if (ns.isListSchema()) { + const isSensitive = !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING; + } + } + else if (ns.isMapSchema()) { + const isSensitive = !!ns.getKeySchema().getMergedTraits().sensitive || !!ns.getValueSchema().getMergedTraits().sensitive; + if (isSensitive) { + return SENSITIVE_STRING; + } + } + else if (ns.isStructSchema() && typeof data === "object") { + const object = data; + const newObject = {}; + for (const [member, memberNs] of ns.structIterator()) { + if (object[member] != null) { + newObject[member] = schemaLogFilter(memberNs, object[member]); + } + } + return newObject; + } + return data; +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/ser-utils.js b/bff/node_modules/@smithy/smithy-client/dist-es/ser-utils.js new file mode 100644 index 0000000..207437f --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/ser-utils.js @@ -0,0 +1,14 @@ +export const serializeFloat = (value) => { + if (value !== value) { + return "NaN"; + } + switch (value) { + case Infinity: + return "Infinity"; + case -Infinity: + return "-Infinity"; + default: + return value; + } +}; +export const serializeDateTime = (date) => date.toISOString().replace(".000Z", "Z"); diff --git a/bff/node_modules/@smithy/smithy-client/dist-es/serde-json.js b/bff/node_modules/@smithy/smithy-client/dist-es/serde-json.js new file mode 100644 index 0000000..babb7c1 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-es/serde-json.js @@ -0,0 +1,19 @@ +export const _json = (obj) => { + if (obj == null) { + return {}; + } + if (Array.isArray(obj)) { + return obj.filter((_) => _ != null).map(_json); + } + if (typeof obj === "object") { + const target = {}; + for (const key of Object.keys(obj)) { + if (obj[key] == null) { + continue; + } + target[key] = _json(obj[key]); + } + return target; + } + return obj; +}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/NoOpLogger.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/NoOpLogger.d.ts new file mode 100644 index 0000000..789fdd2 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/NoOpLogger.d.ts @@ -0,0 +1,11 @@ +import type { Logger } from "@smithy/types"; +/** + * @internal + */ +export declare class NoOpLogger implements Logger { + trace(): void; + debug(): void; + info(): void; + warn(): void; + error(): void; +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/client.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/client.d.ts new file mode 100644 index 0000000..09e505a --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/client.d.ts @@ -0,0 +1,87 @@ +import type { $ClientProtocol, $ClientProtocolCtor, Client as IClient, ClientProtocol, ClientProtocolCtor, Command, FetchHttpHandlerOptions, MetadataBearer, MiddlewareStack, NodeHttpHandlerOptions, RequestHandler } from "@smithy/types"; +/** + * @public + */ +export interface SmithyConfiguration { + /** + * @public + */ + requestHandler: RequestHandler | NodeHttpHandlerOptions | FetchHttpHandlerOptions | Record; + /** + * @public + * + * Default false. + * + * When true, the client will only resolve the middleware stack once per + * Command class. This means modifying the middlewareStack of the + * command or client after requests have been made will not be + * recognized. + * + * Calling client.destroy() also clears this cache. + * + * Enable this only if needing the additional time saved (0-1ms per request) + * and not needing middleware modifications between requests. + */ + cacheMiddleware?: boolean; + /** + * A client request/response protocol or constructor of one. + * A protocol in this context is not e.g. https. + * It is the combined implementation of how to (de)serialize and create + * the messages (e.g. http requests/responses) that are being exchanged. + * + * @public + */ + protocol?: ClientProtocol | $ClientProtocol | ClientProtocolCtor | $ClientProtocolCtor; + /** + * These are automatically generated and will be passed to the + * config.protocol if given as a constructor. + * @internal + */ + protocolSettings?: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + /** + * The API version set internally by the SDK, and is + * not planned to be used by customer code. + * @internal + */ + readonly apiVersion: string; +} +/** + * @internal + */ +export type SmithyResolvedConfiguration = { + requestHandler: RequestHandler; + cacheMiddleware?: boolean; + protocol?: ClientProtocol | $ClientProtocol; + protocolSettings?: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + readonly apiVersion: string; +}; +/** + * @public + */ +export declare class Client> implements IClient { + readonly config: ResolvedClientConfiguration; + middlewareStack: MiddlewareStack; + /** + * Holds an object reference to the initial configuration object. + * Used to check that the config resolver stack does not create + * dangling instances of an intermediate form of the configuration object. + * + * @internal + */ + initConfig?: object; + /** + * May be used to cache the resolved handler function for a Command class. + */ + private handlers?; + constructor(config: ResolvedClientConfiguration); + send(command: Command>, options?: HandlerOptions): Promise; + send(command: Command>, cb: (err: any, data?: OutputType) => void): void; + send(command: Command>, options: HandlerOptions, cb: (err: any, data?: OutputType) => void): void; + destroy(): void; +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts new file mode 100644 index 0000000..33378b8 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { collectBody } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/command.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/command.d.ts new file mode 100644 index 0000000..2c4bab7 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/command.d.ts @@ -0,0 +1,119 @@ +import type { EndpointParameterInstructions } from "@smithy/middleware-endpoint"; +import type { Command as ICommand, Handler, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, Logger, MetadataBearer, MiddlewareStack as IMiddlewareStack, OperationSchema, OptionalParameter, Pluggable, RequestHandler, SerdeContext, StaticOperationSchema } from "@smithy/types"; +/** + * @public + */ +export declare abstract class Command implements ICommand { + abstract input: Input; + readonly middlewareStack: IMiddlewareStack; + readonly schema?: OperationSchema | StaticOperationSchema; + /** + * Factory for Command ClassBuilder. + * @internal + */ + static classBuilder; + }, SI extends object = any, SO extends MetadataBearer = any>(): ClassBuilder; + abstract resolveMiddleware(stack: IMiddlewareStack, configuration: ResolvedClientConfiguration, options: any): Handler; + /** + * @internal + */ + resolveMiddlewareWithContext(clientStack: IMiddlewareStack, configuration: { + logger: Logger; + requestHandler: RequestHandler; + }, options: any, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }: ResolveMiddlewareContextArgs): import("@smithy/types").InitializeHandler; +} +/** + * @internal + */ +type ResolveMiddlewareContextArgs = { + middlewareFn: (CommandCtor: any, clientStack: any, config: any, options: any) => Pluggable[]; + clientName: string; + commandName: string; + smithyContext: Record; + additionalContext: HandlerExecutionContext; + inputFilterSensitiveLog: (_: any) => any; + outputFilterSensitiveLog: (_: any) => any; + CommandCtor: any; +}; +/** + * @internal + */ +declare class ClassBuilder; +}, SI extends object = any, SO extends MetadataBearer = any> { + private _init; + private _ep; + private _middlewareFn; + private _commandName; + private _clientName; + private _additionalContext; + private _smithyContext; + private _inputFilterSensitiveLog; + private _outputFilterSensitiveLog; + private _serializer; + private _deserializer; + private _operationSchema?; + /** + * Optional init callback. + */ + init(cb: (_: Command) => void): void; + /** + * Set the endpoint parameter instructions. + */ + ep(endpointParameterInstructions: EndpointParameterInstructions): ClassBuilder; + /** + * Add any number of middleware. + */ + m(middlewareSupplier: (CommandCtor: any, clientStack: any, config: any, options: any) => Pluggable[]): ClassBuilder; + /** + * Set the initial handler execution context Smithy field. + */ + s(service: string, operation: string, smithyContext?: Record): ClassBuilder; + /** + * Set the initial handler execution context. + */ + c(additionalContext?: HandlerExecutionContext): ClassBuilder; + /** + * Set constant string identifiers for the operation. + */ + n(clientName: string, commandName: string): ClassBuilder; + /** + * Set the input and output sensistive log filters. + */ + f(inputFilter?: (_: any) => any, outputFilter?: (_: any) => any): ClassBuilder; + /** + * Sets the serializer. + */ + ser(serializer: (input: I, context?: SerdeContext | any) => Promise): ClassBuilder; + /** + * Sets the deserializer. + */ + de(deserializer: (output: IHttpResponse, context?: SerdeContext | any) => Promise): ClassBuilder; + /** + * Sets input/output schema for the operation. + */ + sc(operation: OperationSchema | StaticOperationSchema): ClassBuilder; + /** + * @returns a Command class with the classBuilder properties. + */ + build(): { + new (input: I): CommandImpl; + new (...[input]: OptionalParameter): CommandImpl; + getEndpointParameterInstructions(): EndpointParameterInstructions; + }; +} +/** + * A concrete implementation of ICommand with no abstract members. + * @public + */ +export interface CommandImpl; +}, SI extends object = any, SO extends MetadataBearer = any> extends Command { + readonly input: I; + resolveMiddleware(stack: IMiddlewareStack, configuration: C, options: any): Handler; +} +export {}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/constants.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/constants.d.ts new file mode 100644 index 0000000..c17e1c8 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/constants.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const SENSITIVE_STRING = "***SensitiveInformation***"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts new file mode 100644 index 0000000..aa15a20 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/create-aggregated-client.d.ts @@ -0,0 +1,18 @@ +import type { Client } from "./client"; +/** + * @internal + * + * @param commands - command lookup container. + * @param Client - client instance on which to add aggregated methods. + * @param options + * @param options.paginators - paginator functions. + * @param options.waiters - waiter functions. + * + * @returns an aggregated client with dynamically created methods. + */ +export declare const createAggregatedClient: (commands: Record, Client: { + new (...args: any): Client; +}, options?: { + paginators?: Record; + waiters?: Record; +}) => void; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts new file mode 100644 index 0000000..995fbfc --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/default-error-handler.d.ts @@ -0,0 +1,15 @@ +/** + * Always throws an error with the given `exceptionCtor` and other arguments. + * This is only called from an error handling code path. + * + * @internal + */ +export declare const throwDefaultError: ({ output, parsedBody, exceptionCtor, errorCode }: any) => never; +/** + * @internal + * + * Creates {@link throwDefaultError} with bound ExceptionCtor. + */ +export declare const withBaseException: (ExceptionCtor: { + new (...args: any): any; +}) => any; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts new file mode 100644 index 0000000..1ddb6f0 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/defaults-mode.d.ts @@ -0,0 +1,28 @@ +/** + * @internal + */ +export declare const loadConfigsForDefaultMode: (mode: ResolvedDefaultsMode) => DefaultsModeConfigs; +/** + * Option determining how certain default configuration options are resolved in the SDK. It can be one of the value listed below: + * * `"standard"`:

The STANDARD mode provides the latest recommended default values that should be safe to run in most scenarios

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"in-region"`:

The IN_REGION mode builds on the standard mode and includes optimization tailored for applications which call AWS services from within the same AWS region

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"cross-region"`:

The CROSS_REGION mode builds on the standard mode and includes optimization tailored for applications which call AWS services in a different region

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"mobile"`:

The MOBILE mode builds on the standard mode and includes optimization tailored for mobile applications

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"auto"`:

The AUTO mode is an experimental mode that builds on the standard mode. The SDK will attempt to discover the execution environment to determine the appropriate settings automatically.

Note that the auto detection is heuristics-based and does not guarantee 100% accuracy. STANDARD mode will be used if the execution environment cannot be determined. The auto detection might query EC2 Instance Metadata service, which might introduce latency. Therefore we recommend choosing an explicit defaults_mode instead if startup latency is critical to your application

+ * * `"legacy"`:

The LEGACY mode provides default settings that vary per SDK and were used prior to establishment of defaults_mode

+ * + * @defaultValue "legacy" + */ +export type DefaultsMode = "standard" | "in-region" | "cross-region" | "mobile" | "auto" | "legacy"; +/** + * @internal + */ +export type ResolvedDefaultsMode = Exclude; +/** + * @internal + */ +export interface DefaultsModeConfigs { + retryMode?: string; + connectionTimeout?: number; + requestTimeout?: number; +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/emitWarningIfUnsupportedVersion.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/emitWarningIfUnsupportedVersion.d.ts new file mode 100644 index 0000000..8fc02ce --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/emitWarningIfUnsupportedVersion.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * + * Emits warning if the provided Node.js version string is pending deprecation. + * + * @param version - The Node.js version string. + */ +export declare const emitWarningIfUnsupportedVersion: (version: string) => void; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts new file mode 100644 index 0000000..614b3cb --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/exceptions.d.ts @@ -0,0 +1,42 @@ +import type { HttpResponse, MetadataBearer, ResponseMetadata, RetryableTrait, SmithyException } from "@smithy/types"; +/** + * The type of the exception class constructor parameter. The returned type contains the properties + * in the `ExceptionType` but not in the `BaseExceptionType`. If the `BaseExceptionType` contains + * `$metadata` and `message` properties, it's also included in the returned type. + * @internal + */ +export type ExceptionOptionType = Omit>; +/** + * @public + */ +export interface ServiceExceptionOptions extends SmithyException, MetadataBearer { + message?: string; +} +/** + * @public + * + * Base exception class for the exceptions from the server-side. + */ +export declare class ServiceException extends Error implements SmithyException, MetadataBearer { + readonly $fault: "client" | "server"; + $response?: HttpResponse; + $retryable?: RetryableTrait; + $metadata: ResponseMetadata; + constructor(options: ServiceExceptionOptions); + /** + * Checks if a value is an instance of ServiceException (duck typed) + */ + static isInstance(value: unknown): value is ServiceException; + /** + * Custom instanceof check to support the operator for ServiceException base class + */ + static [Symbol.hasInstance](instance: unknown): boolean; +} +/** + * This method inject unmodeled member to a deserialized SDK exception, + * and load the error message from different possible keys('message', + * 'Message'). + * + * @internal + */ +export declare const decorateServiceException: (exception: E, additions?: Record) => E; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts new file mode 100644 index 0000000..ced666a --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { extendedEncodeURIComponent } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts new file mode 100644 index 0000000..6fa8c29 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/extensions/checksum.d.ts @@ -0,0 +1,26 @@ +import type { ChecksumAlgorithm, ChecksumConfiguration, ChecksumConstructor, HashConstructor } from "@smithy/types"; +import { AlgorithmId } from "@smithy/types"; +export { AlgorithmId, ChecksumAlgorithm, ChecksumConfiguration }; +/** + * @internal + */ +export type PartialChecksumRuntimeConfigType = { + checksumAlgorithms?: Record; + sha256?: ChecksumConstructor | HashConstructor; + md5?: ChecksumConstructor | HashConstructor; + crc32?: ChecksumConstructor | HashConstructor; + crc32c?: ChecksumConstructor | HashConstructor; + sha1?: ChecksumConstructor | HashConstructor; +}; +/** + * @param runtimeConfig - config object of the client instance. + * @internal + */ +export declare const getChecksumConfiguration: (runtimeConfig: PartialChecksumRuntimeConfigType) => { + addChecksumAlgorithm(algo: ChecksumAlgorithm): void; + checksumAlgorithms(): ChecksumAlgorithm[]; +}; +/** + * @internal + */ +export declare const resolveChecksumRuntimeConfig: (clientConfig: ChecksumConfiguration) => PartialChecksumRuntimeConfigType; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts new file mode 100644 index 0000000..6eb1ebb --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/extensions/defaultExtensionConfiguration.d.ts @@ -0,0 +1,38 @@ +import type { DefaultExtensionConfiguration } from "@smithy/types"; +import type { PartialChecksumRuntimeConfigType } from "./checksum"; +import type { PartialRetryRuntimeConfigType } from "./retry"; +/** + * @internal + */ +export type DefaultExtensionRuntimeConfigType = PartialRetryRuntimeConfigType & PartialChecksumRuntimeConfigType; +/** + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getDefaultExtensionConfiguration: (runtimeConfig: DefaultExtensionRuntimeConfigType) => { + addChecksumAlgorithm(algo: import("@smithy/types").ChecksumAlgorithm): void; + checksumAlgorithms(): import("@smithy/types").ChecksumAlgorithm[]; +} & { + setRetryStrategy(retryStrategy: import("@smithy/types").Provider): void; + retryStrategy(): import("@smithy/types").Provider; +}; +/** + * @deprecated use getDefaultExtensionConfiguration + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getDefaultClientConfiguration: (runtimeConfig: DefaultExtensionRuntimeConfigType) => { + addChecksumAlgorithm(algo: import("@smithy/types").ChecksumAlgorithm): void; + checksumAlgorithms(): import("@smithy/types").ChecksumAlgorithm[]; +} & { + setRetryStrategy(retryStrategy: import("@smithy/types").Provider): void; + retryStrategy(): import("@smithy/types").Provider; +}; +/** + * @internal + * + * Helper function to resolve runtime config from default extension configuration + */ +export declare const resolveDefaultRuntimeConfig: (config: DefaultExtensionConfiguration) => DefaultExtensionRuntimeConfigType; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts new file mode 100644 index 0000000..f1b8074 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/extensions/index.d.ts @@ -0,0 +1 @@ +export * from "./defaultExtensionConfiguration"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts new file mode 100644 index 0000000..72994aa --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/extensions/retry.d.ts @@ -0,0 +1,18 @@ +import type { Provider, RetryStrategy, RetryStrategyConfiguration, RetryStrategyV2 } from "@smithy/types"; +/** + * @internal + */ +export type PartialRetryRuntimeConfigType = Partial<{ + retryStrategy: Provider; +}>; +/** + * @internal + */ +export declare const getRetryConfiguration: (runtimeConfig: PartialRetryRuntimeConfigType) => { + setRetryStrategy(retryStrategy: Provider): void; + retryStrategy(): Provider; +}; +/** + * @internal + */ +export declare const resolveRetryRuntimeConfig: (retryStrategyConfiguration: RetryStrategyConfiguration) => PartialRetryRuntimeConfigType; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts new file mode 100644 index 0000000..6468b91 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/get-array-if-single-item.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * The XML parser will set one K:V for a member that could + * return multiple entries but only has one. + */ +export declare const getArrayIfSingleItem: (mayBeArray: T) => T | T[]; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts new file mode 100644 index 0000000..7163e5a --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/get-value-from-text-node.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Recursively parses object and populates value is node from + * "#text" key if it's available + */ +export declare const getValueFromTextNode: (obj: any) => any; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/index.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/index.d.ts new file mode 100644 index 0000000..666ce52 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/index.d.ts @@ -0,0 +1,21 @@ +export type { DocumentType, SdkError, SmithyException } from "@smithy/types"; +export * from "./client"; +export * from "./collect-stream-body"; +export * from "./command"; +export * from "./constants"; +export * from "./create-aggregated-client"; +export * from "./default-error-handler"; +export * from "./defaults-mode"; +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./exceptions"; +export * from "./extended-encode-uri-component"; +export * from "./extensions"; +export * from "./get-array-if-single-item"; +export * from "./get-value-from-text-node"; +export * from "./is-serializable-header-value"; +export * from "./NoOpLogger"; +export * from "./object-mapping"; +export * from "./resolve-path"; +export * from "./ser-utils"; +export * from "./serde-json"; +export * from "@smithy/core/serde"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts new file mode 100644 index 0000000..a35a23a --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/is-serializable-header-value.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * @returns whether the header value is serializable. + */ +export declare const isSerializableHeaderValue: (value: any) => boolean; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts new file mode 100644 index 0000000..97e28e5 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/object-mapping.d.ts @@ -0,0 +1,162 @@ +/** + * @internal + * + * A set of instructions for multiple keys. + * The aim is to provide a concise yet readable way to map and filter values + * onto a target object. + * + * @example + * ```javascript + * const example: ObjectMappingInstructions = { + * lazyValue1: [, () => 1], + * lazyValue2: [, () => 2], + * lazyValue3: [, () => 3], + * lazyConditionalValue1: [() => true, () => 4], + * lazyConditionalValue2: [() => true, () => 5], + * lazyConditionalValue3: [true, () => 6], + * lazyConditionalValue4: [false, () => 44], + * lazyConditionalValue5: [() => false, () => 55], + * lazyConditionalValue6: ["", () => 66], + * simpleValue1: [, 7], + * simpleValue2: [, 8], + * simpleValue3: [, 9], + * conditionalValue1: [() => true, 10], + * conditionalValue2: [() => true, 11], + * conditionalValue3: [{}, 12], + * conditionalValue4: [false, 110], + * conditionalValue5: [() => false, 121], + * conditionalValue6: ["", 132], + * }; + * + * const exampleResult: Record = { + * lazyValue1: 1, + * lazyValue2: 2, + * lazyValue3: 3, + * lazyConditionalValue1: 4, + * lazyConditionalValue2: 5, + * lazyConditionalValue3: 6, + * simpleValue1: 7, + * simpleValue2: 8, + * simpleValue3: 9, + * conditionalValue1: 10, + * conditionalValue2: 11, + * conditionalValue3: 12, + * }; + * ``` + */ +export type ObjectMappingInstructions = Record; +/** + * @internal + * + * A variant of the object mapping instruction for the `take` function. + * In this case, the source value is provided to the value function, turning it + * from a supplier into a mapper. + */ +export type SourceMappingInstructions = Record; +/** + * @internal + * + * An instruction set for assigning a value to a target object. + */ +export type ObjectMappingInstruction = LazyValueInstruction | ConditionalLazyValueInstruction | SimpleValueInstruction | ConditionalValueInstruction | UnfilteredValue; +/** + * @internal + * + * non-array + */ +export type UnfilteredValue = any; +/** + * @internal + */ +export type LazyValueInstruction = [FilterStatus, ValueSupplier]; +/** + * @internal + */ +export type ConditionalLazyValueInstruction = [FilterStatusSupplier, ValueSupplier]; +/** + * @internal + */ +export type SimpleValueInstruction = [FilterStatus, Value]; +/** + * @internal + */ +export type ConditionalValueInstruction = [ValueFilteringFunction, Value]; +/** + * @internal + */ +export type SourceMappingInstruction = [(ValueFilteringFunction | FilterStatus)?, ValueMapper?, string?]; +/** + * @internal + * + * Filter is considered passed if + * 1. It is a boolean true. + * 2. It is not undefined and is itself truthy. + * 3. It is undefined and the corresponding _value_ is neither null nor undefined. + */ +export type FilterStatus = boolean | unknown | void; +/** + * @internal + * + * Supplies the filter check but not against any value as input. + */ +export type FilterStatusSupplier = () => boolean; +/** + * @internal + * + * Filter check with the given value. + */ +export type ValueFilteringFunction = (value: any) => boolean; +/** + * @internal + * + * Supplies the value for lazy evaluation. + */ +export type ValueSupplier = () => any; +/** + * @internal + * + * A function that maps the source value to the target value. + * Defaults to pass-through with nullish check. + */ +export type ValueMapper = (value: any) => any; +/** + * @internal + * + * A non-function value. + */ +export type Value = any; +/** + * @internal + * Internal/Private, for codegen use only. + * + * Transfer a set of keys from [instructions] to [target]. + * + * For each instruction in the record, the target key will be the instruction key. + * The target assignment will be conditional on the instruction's filter. + * The target assigned value will be supplied by the instructions as an evaluable function or non-function value. + * + * @see ObjectMappingInstructions for an example. + */ +export declare function map(target: any, filter: (value: any) => boolean, instructions: Record): typeof target; +/** + * @internal + */ +export declare function map(instructions: ObjectMappingInstructions): any; +/** + * @internal + */ +export declare function map(target: any, instructions: ObjectMappingInstructions): typeof target; +/** + * Convert a regular object `{ k: v }` to `{ k: [, v] }` mapping instruction set with default + * filter. + * + * @internal + */ +export declare const convertMap: (target: any) => Record; +/** + * @param source - original object with data. + * @param instructions - how to map the data. + * @returns new object mapped from the source object. + * @internal + */ +export declare const take: (source: any, instructions: SourceMappingInstructions) => any; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts new file mode 100644 index 0000000..2a3204f --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { resolvedPath } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/schemaLogFilter.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/schemaLogFilter.d.ts new file mode 100644 index 0000000..696daef --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/schemaLogFilter.d.ts @@ -0,0 +1,9 @@ +import type { SchemaRef } from "@smithy/types"; +/** + * Redacts sensitive parts of any data object using its schema, for logging. + * + * @internal + * @param schema - with filtering traits. + * @param data - to be logged. + */ +export declare function schemaLogFilter(schema: SchemaRef, data: unknown): any; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts new file mode 100644 index 0000000..ae03c61 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ser-utils.d.ts @@ -0,0 +1,15 @@ +/** + * @internal + * + * Serializes a number, turning non-numeric values into strings. + * + * @param value - The number to serialize. + * @returns A number, or a string if the given number was non-numeric. + */ +export declare const serializeFloat: (value: number) => string | number; +/** + * @internal + * @param date - to be serialized. + * @returns https://smithy.io/2.0/spec/protocol-traits.html#timestampformat-trait date-time format. + */ +export declare const serializeDateTime: (date: Date) => string; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts new file mode 100644 index 0000000..96ac476 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/serde-json.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + * + * Maps an object through the default JSON serde behavior. + * This means removing nullish fields and un-sparsifying lists. + * + * This is also used by Smithy RPCv2 CBOR as the default serde behavior. + * + * @param obj - to be checked. + * @returns same object with default serde behavior applied. + */ +export declare const _json: (obj: any) => any; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/NoOpLogger.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/NoOpLogger.d.ts new file mode 100644 index 0000000..a9a1062 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/NoOpLogger.d.ts @@ -0,0 +1,11 @@ +import { Logger } from "@smithy/types"; +/** + * @internal + */ +export declare class NoOpLogger implements Logger { + trace(): void; + debug(): void; + info(): void; + warn(): void; + error(): void; +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/client.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/client.d.ts new file mode 100644 index 0000000..2f81fa5 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/client.d.ts @@ -0,0 +1,87 @@ +import { $ClientProtocol, $ClientProtocolCtor, Client as IClient, ClientProtocol, ClientProtocolCtor, Command, FetchHttpHandlerOptions, MetadataBearer, MiddlewareStack, NodeHttpHandlerOptions, RequestHandler } from "@smithy/types"; +/** + * @public + */ +export interface SmithyConfiguration { + /** + * @public + */ + requestHandler: RequestHandler | NodeHttpHandlerOptions | FetchHttpHandlerOptions | Record; + /** + * @public + * + * Default false. + * + * When true, the client will only resolve the middleware stack once per + * Command class. This means modifying the middlewareStack of the + * command or client after requests have been made will not be + * recognized. + * + * Calling client.destroy() also clears this cache. + * + * Enable this only if needing the additional time saved (0-1ms per request) + * and not needing middleware modifications between requests. + */ + cacheMiddleware?: boolean; + /** + * A client request/response protocol or constructor of one. + * A protocol in this context is not e.g. https. + * It is the combined implementation of how to (de)serialize and create + * the messages (e.g. http requests/responses) that are being exchanged. + * + * @public + */ + protocol?: ClientProtocol | $ClientProtocol | ClientProtocolCtor | $ClientProtocolCtor; + /** + * These are automatically generated and will be passed to the + * config.protocol if given as a constructor. + * @internal + */ + protocolSettings?: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + /** + * The API version set internally by the SDK, and is + * not planned to be used by customer code. + * @internal + */ + readonly apiVersion: string; +} +/** + * @internal + */ +export type SmithyResolvedConfiguration = { + requestHandler: RequestHandler; + cacheMiddleware?: boolean; + protocol?: ClientProtocol | $ClientProtocol; + protocolSettings?: { + defaultNamespace?: string; + [setting: string]: unknown; + }; + readonly apiVersion: string; +}; +/** + * @public + */ +export declare class Client> implements IClient { + readonly config: ResolvedClientConfiguration; + middlewareStack: MiddlewareStack; + /** + * Holds an object reference to the initial configuration object. + * Used to check that the config resolver stack does not create + * dangling instances of an intermediate form of the configuration object. + * + * @internal + */ + initConfig?: object; + /** + * May be used to cache the resolved handler function for a Command class. + */ + private handlers?; + constructor(config: ResolvedClientConfiguration); + send(command: Command>, options?: HandlerOptions): Promise; + send(command: Command>, cb: (err: any, data?: OutputType) => void): void; + send(command: Command>, options: HandlerOptions, cb: (err: any, data?: OutputType) => void): void; + destroy(): void; +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts new file mode 100644 index 0000000..c53a1e3 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { collectBody } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/command.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/command.d.ts new file mode 100644 index 0000000..26007ed --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/command.d.ts @@ -0,0 +1,119 @@ +import { EndpointParameterInstructions } from "@smithy/middleware-endpoint"; +import { Command as ICommand, Handler, HandlerExecutionContext, HttpRequest as IHttpRequest, HttpResponse as IHttpResponse, Logger, MetadataBearer, MiddlewareStack as IMiddlewareStack, OperationSchema, OptionalParameter, Pluggable, RequestHandler, SerdeContext, StaticOperationSchema } from "@smithy/types"; +/** + * @public + */ +export declare abstract class Command implements ICommand { + abstract input: Input; + readonly middlewareStack: IMiddlewareStack; + readonly schema?: OperationSchema | StaticOperationSchema; + /** + * Factory for Command ClassBuilder. + * @internal + */ + static classBuilder; + }, SI extends object = any, SO extends MetadataBearer = any>(): ClassBuilder; + abstract resolveMiddleware(stack: IMiddlewareStack, configuration: ResolvedClientConfiguration, options: any): Handler; + /** + * @internal + */ + resolveMiddlewareWithContext(clientStack: IMiddlewareStack, configuration: { + logger: Logger; + requestHandler: RequestHandler; + }, options: any, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }: ResolveMiddlewareContextArgs): import("@smithy/types").InitializeHandler; +} +/** + * @internal + */ +type ResolveMiddlewareContextArgs = { + middlewareFn: (CommandCtor: any, clientStack: any, config: any, options: any) => Pluggable[]; + clientName: string; + commandName: string; + smithyContext: Record; + additionalContext: HandlerExecutionContext; + inputFilterSensitiveLog: (_: any) => any; + outputFilterSensitiveLog: (_: any) => any; + CommandCtor: any; +}; +/** + * @internal + */ +declare class ClassBuilder; +}, SI extends object = any, SO extends MetadataBearer = any> { + private _init; + private _ep; + private _middlewareFn; + private _commandName; + private _clientName; + private _additionalContext; + private _smithyContext; + private _inputFilterSensitiveLog; + private _outputFilterSensitiveLog; + private _serializer; + private _deserializer; + private _operationSchema?; + /** + * Optional init callback. + */ + init(cb: (_: Command) => void): void; + /** + * Set the endpoint parameter instructions. + */ + ep(endpointParameterInstructions: EndpointParameterInstructions): ClassBuilder; + /** + * Add any number of middleware. + */ + m(middlewareSupplier: (CommandCtor: any, clientStack: any, config: any, options: any) => Pluggable[]): ClassBuilder; + /** + * Set the initial handler execution context Smithy field. + */ + s(service: string, operation: string, smithyContext?: Record): ClassBuilder; + /** + * Set the initial handler execution context. + */ + c(additionalContext?: HandlerExecutionContext): ClassBuilder; + /** + * Set constant string identifiers for the operation. + */ + n(clientName: string, commandName: string): ClassBuilder; + /** + * Set the input and output sensistive log filters. + */ + f(inputFilter?: (_: any) => any, outputFilter?: (_: any) => any): ClassBuilder; + /** + * Sets the serializer. + */ + ser(serializer: (input: I, context?: SerdeContext | any) => Promise): ClassBuilder; + /** + * Sets the deserializer. + */ + de(deserializer: (output: IHttpResponse, context?: SerdeContext | any) => Promise): ClassBuilder; + /** + * Sets input/output schema for the operation. + */ + sc(operation: OperationSchema | StaticOperationSchema): ClassBuilder; + /** + * @returns a Command class with the classBuilder properties. + */ + build(): { + new (input: I): CommandImpl; + new (...[input]: OptionalParameter): CommandImpl; + getEndpointParameterInstructions(): EndpointParameterInstructions; + }; +} +/** + * A concrete implementation of ICommand with no abstract members. + * @public + */ +export interface CommandImpl; +}, SI extends object = any, SO extends MetadataBearer = any> extends Command { + readonly input: I; + resolveMiddleware(stack: IMiddlewareStack, configuration: C, options: any): Handler; +} +export {}; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..eab978f --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const SENSITIVE_STRING = "***SensitiveInformation***"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts new file mode 100644 index 0000000..93c6a37 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/create-aggregated-client.d.ts @@ -0,0 +1,18 @@ +import { Client } from "./client"; +/** + * @internal + * + * @param commands - command lookup container. + * @param Client - client instance on which to add aggregated methods. + * @param options + * @param options.paginators - paginator functions. + * @param options.waiters - waiter functions. + * + * @returns an aggregated client with dynamically created methods. + */ +export declare const createAggregatedClient: (commands: Record, Client: { + new (...args: any): Client; +}, options?: { + paginators?: Record; + waiters?: Record; +}) => void; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/default-error-handler.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/default-error-handler.d.ts new file mode 100644 index 0000000..638e59c --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/default-error-handler.d.ts @@ -0,0 +1,15 @@ +/** + * Always throws an error with the given `exceptionCtor` and other arguments. + * This is only called from an error handling code path. + * + * @internal + */ +export declare const throwDefaultError: ({ output, parsedBody, exceptionCtor, errorCode }: any) => never; +/** + * @internal + * + * Creates {@link throwDefaultError} with bound ExceptionCtor. + */ +export declare const withBaseException: (ExceptionCtor: { + new (...args: any): any; +}) => any; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/defaults-mode.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/defaults-mode.d.ts new file mode 100644 index 0000000..c8a89ed --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/defaults-mode.d.ts @@ -0,0 +1,28 @@ +/** + * @internal + */ +export declare const loadConfigsForDefaultMode: (mode: ResolvedDefaultsMode) => DefaultsModeConfigs; +/** + * Option determining how certain default configuration options are resolved in the SDK. It can be one of the value listed below: + * * `"standard"`:

The STANDARD mode provides the latest recommended default values that should be safe to run in most scenarios

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"in-region"`:

The IN_REGION mode builds on the standard mode and includes optimization tailored for applications which call AWS services from within the same AWS region

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"cross-region"`:

The CROSS_REGION mode builds on the standard mode and includes optimization tailored for applications which call AWS services in a different region

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"mobile"`:

The MOBILE mode builds on the standard mode and includes optimization tailored for mobile applications

Note that the default values vended from this mode might change as best practices may evolve. As a result, it is encouraged to perform tests when upgrading the SDK

+ * * `"auto"`:

The AUTO mode is an experimental mode that builds on the standard mode. The SDK will attempt to discover the execution environment to determine the appropriate settings automatically.

Note that the auto detection is heuristics-based and does not guarantee 100% accuracy. STANDARD mode will be used if the execution environment cannot be determined. The auto detection might query EC2 Instance Metadata service, which might introduce latency. Therefore we recommend choosing an explicit defaults_mode instead if startup latency is critical to your application

+ * * `"legacy"`:

The LEGACY mode provides default settings that vary per SDK and were used prior to establishment of defaults_mode

+ * + * @defaultValue "legacy" + */ +export type DefaultsMode = "standard" | "in-region" | "cross-region" | "mobile" | "auto" | "legacy"; +/** + * @internal + */ +export type ResolvedDefaultsMode = Exclude; +/** + * @internal + */ +export interface DefaultsModeConfigs { + retryMode?: string; + connectionTimeout?: number; + requestTimeout?: number; +} diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/emitWarningIfUnsupportedVersion.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/emitWarningIfUnsupportedVersion.d.ts new file mode 100644 index 0000000..f0284ef --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/emitWarningIfUnsupportedVersion.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + * + * Emits warning if the provided Node.js version string is pending deprecation. + * + * @param version - The Node.js version string. + */ +export declare const emitWarningIfUnsupportedVersion: (version: string) => void; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/exceptions.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/exceptions.d.ts new file mode 100644 index 0000000..675354a --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/exceptions.d.ts @@ -0,0 +1,42 @@ +import { HttpResponse, MetadataBearer, ResponseMetadata, RetryableTrait, SmithyException } from "@smithy/types"; +/** + * The type of the exception class constructor parameter. The returned type contains the properties + * in the `ExceptionType` but not in the `BaseExceptionType`. If the `BaseExceptionType` contains + * `$metadata` and `message` properties, it's also included in the returned type. + * @internal + */ +export type ExceptionOptionType = Pick>>; +/** + * @public + */ +export interface ServiceExceptionOptions extends SmithyException, MetadataBearer { + message?: string; +} +/** + * @public + * + * Base exception class for the exceptions from the server-side. + */ +export declare class ServiceException extends Error implements SmithyException, MetadataBearer { + readonly $fault: "client" | "server"; + $response?: HttpResponse; + $retryable?: RetryableTrait; + $metadata: ResponseMetadata; + constructor(options: ServiceExceptionOptions); + /** + * Checks if a value is an instance of ServiceException (duck typed) + */ + static isInstance(value: unknown): value is ServiceException; + /** + * Custom instanceof check to support the operator for ServiceException base class + */ + static [Symbol.hasInstance](instance: unknown): boolean; +} +/** + * This method inject unmodeled member to a deserialized SDK exception, + * and load the error message from different possible keys('message', + * 'Message'). + * + * @internal + */ +export declare const decorateServiceException: (exception: E, additions?: Record) => E; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts new file mode 100644 index 0000000..4e510cf --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { extendedEncodeURIComponent } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts new file mode 100644 index 0000000..3d8bd76 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/checksum.d.ts @@ -0,0 +1,26 @@ +import { ChecksumAlgorithm, ChecksumConfiguration, ChecksumConstructor, HashConstructor } from "@smithy/types"; +import { AlgorithmId } from "@smithy/types"; +export { AlgorithmId, ChecksumAlgorithm, ChecksumConfiguration }; +/** + * @internal + */ +export type PartialChecksumRuntimeConfigType = { + checksumAlgorithms?: Record; + sha256?: ChecksumConstructor | HashConstructor; + md5?: ChecksumConstructor | HashConstructor; + crc32?: ChecksumConstructor | HashConstructor; + crc32c?: ChecksumConstructor | HashConstructor; + sha1?: ChecksumConstructor | HashConstructor; +}; +/** + * @param runtimeConfig - config object of the client instance. + * @internal + */ +export declare const getChecksumConfiguration: (runtimeConfig: PartialChecksumRuntimeConfigType) => { + addChecksumAlgorithm(algo: ChecksumAlgorithm): void; + checksumAlgorithms(): ChecksumAlgorithm[]; +}; +/** + * @internal + */ +export declare const resolveChecksumRuntimeConfig: (clientConfig: ChecksumConfiguration) => PartialChecksumRuntimeConfigType; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts new file mode 100644 index 0000000..59024c8 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts @@ -0,0 +1,38 @@ +import { DefaultExtensionConfiguration } from "@smithy/types"; +import { PartialChecksumRuntimeConfigType } from "./checksum"; +import { PartialRetryRuntimeConfigType } from "./retry"; +/** + * @internal + */ +export type DefaultExtensionRuntimeConfigType = PartialRetryRuntimeConfigType & PartialChecksumRuntimeConfigType; +/** + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getDefaultExtensionConfiguration: (runtimeConfig: DefaultExtensionRuntimeConfigType) => { + addChecksumAlgorithm(algo: import("@smithy/types").ChecksumAlgorithm): void; + checksumAlgorithms(): import("@smithy/types").ChecksumAlgorithm[]; +} & { + setRetryStrategy(retryStrategy: import("@smithy/types").Provider): void; + retryStrategy(): import("@smithy/types").Provider; +}; +/** + * @deprecated use getDefaultExtensionConfiguration + * @internal + * + * Helper function to resolve default extension configuration from runtime config + */ +export declare const getDefaultClientConfiguration: (runtimeConfig: DefaultExtensionRuntimeConfigType) => { + addChecksumAlgorithm(algo: import("@smithy/types").ChecksumAlgorithm): void; + checksumAlgorithms(): import("@smithy/types").ChecksumAlgorithm[]; +} & { + setRetryStrategy(retryStrategy: import("@smithy/types").Provider): void; + retryStrategy(): import("@smithy/types").Provider; +}; +/** + * @internal + * + * Helper function to resolve runtime config from default extension configuration + */ +export declare const resolveDefaultRuntimeConfig: (config: DefaultExtensionConfiguration) => DefaultExtensionRuntimeConfigType; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/index.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 0000000..04e3c83 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1 @@ +export * from "./defaultExtensionConfiguration"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/retry.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/retry.d.ts new file mode 100644 index 0000000..b41fa3c --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/extensions/retry.d.ts @@ -0,0 +1,18 @@ +import { Provider, RetryStrategy, RetryStrategyConfiguration, RetryStrategyV2 } from "@smithy/types"; +/** + * @internal + */ +export type PartialRetryRuntimeConfigType = Partial<{ + retryStrategy: Provider; +}>; +/** + * @internal + */ +export declare const getRetryConfiguration: (runtimeConfig: PartialRetryRuntimeConfigType) => { + setRetryStrategy(retryStrategy: Provider): void; + retryStrategy(): Provider; +}; +/** + * @internal + */ +export declare const resolveRetryRuntimeConfig: (retryStrategyConfiguration: RetryStrategyConfiguration) => PartialRetryRuntimeConfigType; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-array-if-single-item.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-array-if-single-item.d.ts new file mode 100644 index 0000000..dbbd280 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-array-if-single-item.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * The XML parser will set one K:V for a member that could + * return multiple entries but only has one. + */ +export declare const getArrayIfSingleItem: (mayBeArray: T) => T | T[]; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-value-from-text-node.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-value-from-text-node.d.ts new file mode 100644 index 0000000..d56771e --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/get-value-from-text-node.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + * + * Recursively parses object and populates value is node from + * "#text" key if it's available + */ +export declare const getValueFromTextNode: (obj: any) => any; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..2d4b5f0 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts @@ -0,0 +1,21 @@ +export { DocumentType, SdkError, SmithyException } from "@smithy/types"; +export * from "./client"; +export * from "./collect-stream-body"; +export * from "./command"; +export * from "./constants"; +export * from "./create-aggregated-client"; +export * from "./default-error-handler"; +export * from "./defaults-mode"; +export * from "./emitWarningIfUnsupportedVersion"; +export * from "./exceptions"; +export * from "./extended-encode-uri-component"; +export * from "./extensions"; +export * from "./get-array-if-single-item"; +export * from "./get-value-from-text-node"; +export * from "./is-serializable-header-value"; +export * from "./NoOpLogger"; +export * from "./object-mapping"; +export * from "./resolve-path"; +export * from "./ser-utils"; +export * from "./serde-json"; +export * from "@smithy/core/serde"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/is-serializable-header-value.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/is-serializable-header-value.d.ts new file mode 100644 index 0000000..4d53109 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/is-serializable-header-value.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * @returns whether the header value is serializable. + */ +export declare const isSerializableHeaderValue: (value: any) => boolean; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/object-mapping.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/object-mapping.d.ts new file mode 100644 index 0000000..d658c16 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/object-mapping.d.ts @@ -0,0 +1,178 @@ +/** + * @internal + * + * A set of instructions for multiple keys. + * The aim is to provide a concise yet readable way to map and filter values + * onto a target object. + * + * @example + * ```javascript + * const example: ObjectMappingInstructions = { + * lazyValue1: [, () => 1], + * lazyValue2: [, () => 2], + * lazyValue3: [, () => 3], + * lazyConditionalValue1: [() => true, () => 4], + * lazyConditionalValue2: [() => true, () => 5], + * lazyConditionalValue3: [true, () => 6], + * lazyConditionalValue4: [false, () => 44], + * lazyConditionalValue5: [() => false, () => 55], + * lazyConditionalValue6: ["", () => 66], + * simpleValue1: [, 7], + * simpleValue2: [, 8], + * simpleValue3: [, 9], + * conditionalValue1: [() => true, 10], + * conditionalValue2: [() => true, 11], + * conditionalValue3: [{}, 12], + * conditionalValue4: [false, 110], + * conditionalValue5: [() => false, 121], + * conditionalValue6: ["", 132], + * }; + * + * const exampleResult: Record = { + * lazyValue1: 1, + * lazyValue2: 2, + * lazyValue3: 3, + * lazyConditionalValue1: 4, + * lazyConditionalValue2: 5, + * lazyConditionalValue3: 6, + * simpleValue1: 7, + * simpleValue2: 8, + * simpleValue3: 9, + * conditionalValue1: 10, + * conditionalValue2: 11, + * conditionalValue3: 12, + * }; + * ``` + */ +export type ObjectMappingInstructions = Record; +/** + * @internal + * + * A variant of the object mapping instruction for the `take` function. + * In this case, the source value is provided to the value function, turning it + * from a supplier into a mapper. + */ +export type SourceMappingInstructions = Record; +/** + * @internal + * + * An instruction set for assigning a value to a target object. + */ +export type ObjectMappingInstruction = LazyValueInstruction | ConditionalLazyValueInstruction | SimpleValueInstruction | ConditionalValueInstruction | UnfilteredValue; +/** + * @internal + * + * non-array + */ +export type UnfilteredValue = any; +/** + * @internal + */ +export type LazyValueInstruction = [ + FilterStatus, + ValueSupplier +]; +/** + * @internal + */ +export type ConditionalLazyValueInstruction = [ + FilterStatusSupplier, + ValueSupplier +]; +/** + * @internal + */ +export type SimpleValueInstruction = [ + FilterStatus, + Value +]; +/** + * @internal + */ +export type ConditionalValueInstruction = [ + ValueFilteringFunction, + Value +]; +/** + * @internal + */ +export type SourceMappingInstruction = [ + (ValueFilteringFunction | FilterStatus)?, + ValueMapper?, + string? +]; +/** + * @internal + * + * Filter is considered passed if + * 1. It is a boolean true. + * 2. It is not undefined and is itself truthy. + * 3. It is undefined and the corresponding _value_ is neither null nor undefined. + */ +export type FilterStatus = boolean | unknown | void; +/** + * @internal + * + * Supplies the filter check but not against any value as input. + */ +export type FilterStatusSupplier = () => boolean; +/** + * @internal + * + * Filter check with the given value. + */ +export type ValueFilteringFunction = (value: any) => boolean; +/** + * @internal + * + * Supplies the value for lazy evaluation. + */ +export type ValueSupplier = () => any; +/** + * @internal + * + * A function that maps the source value to the target value. + * Defaults to pass-through with nullish check. + */ +export type ValueMapper = (value: any) => any; +/** + * @internal + * + * A non-function value. + */ +export type Value = any; +/** + * @internal + * Internal/Private, for codegen use only. + * + * Transfer a set of keys from [instructions] to [target]. + * + * For each instruction in the record, the target key will be the instruction key. + * The target assignment will be conditional on the instruction's filter. + * The target assigned value will be supplied by the instructions as an evaluable function or non-function value. + * + * @see ObjectMappingInstructions for an example. + */ +export declare function map(target: any, filter: (value: any) => boolean, instructions: Record): typeof target; +/** + * @internal + */ +export declare function map(instructions: ObjectMappingInstructions): any; +/** + * @internal + */ +export declare function map(target: any, instructions: ObjectMappingInstructions): typeof target; +/** + * Convert a regular object `{ k: v }` to `{ k: [, v] }` mapping instruction set with default + * filter. + * + * @internal + */ +export declare const convertMap: (target: any) => Record; +/** + * @param source - original object with data. + * @param instructions - how to map the data. + * @returns new object mapped from the source object. + * @internal + */ +export declare const take: (source: any, instructions: SourceMappingInstructions) => any; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts new file mode 100644 index 0000000..5432be7 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts @@ -0,0 +1,5 @@ +/** + * @internal + * Backwards compatibility re-export. + */ +export { resolvedPath } from "@smithy/core/protocols"; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/schemaLogFilter.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/schemaLogFilter.d.ts new file mode 100644 index 0000000..ef36e3c --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/schemaLogFilter.d.ts @@ -0,0 +1,9 @@ +import { SchemaRef } from "@smithy/types"; +/** + * Redacts sensitive parts of any data object using its schema, for logging. + * + * @internal + * @param schema - with filtering traits. + * @param data - to be logged. + */ +export declare function schemaLogFilter(schema: SchemaRef, data: unknown): any; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/ser-utils.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/ser-utils.d.ts new file mode 100644 index 0000000..355f829 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/ser-utils.d.ts @@ -0,0 +1,15 @@ +/** + * @internal + * + * Serializes a number, turning non-numeric values into strings. + * + * @param value - The number to serialize. + * @returns A number, or a string if the given number was non-numeric. + */ +export declare const serializeFloat: (value: number) => string | number; +/** + * @internal + * @param date - to be serialized. + * @returns https://smithy.io/2.0/spec/protocol-traits.html#timestampformat-trait date-time format. + */ +export declare const serializeDateTime: (date: Date) => string; diff --git a/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/serde-json.d.ts b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/serde-json.d.ts new file mode 100644 index 0000000..499409f --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/dist-types/ts3.4/serde-json.d.ts @@ -0,0 +1,12 @@ +/** + * @internal + * + * Maps an object through the default JSON serde behavior. + * This means removing nullish fields and un-sparsifying lists. + * + * This is also used by Smithy RPCv2 CBOR as the default serde behavior. + * + * @param obj - to be checked. + * @returns same object with default serde behavior applied. + */ +export declare const _json: (obj: any) => any; diff --git a/bff/node_modules/@smithy/smithy-client/package.json b/bff/node_modules/@smithy/smithy-client/package.json new file mode 100644 index 0000000..4b728d1 --- /dev/null +++ b/bff/node_modules/@smithy/smithy-client/package.json @@ -0,0 +1,70 @@ +{ + "name": "@smithy/smithy-client", + "version": "4.12.8", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline smithy-client", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "node ./scripts/fix-api-extractor && api-extractor run --local && node ./scripts/fix-api-extractor --unset", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/core": "^3.23.13", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.21", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/smithy-client", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/smithy-client" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/types/LICENSE b/bff/node_modules/@smithy/types/LICENSE new file mode 100644 index 0000000..e907b58 --- /dev/null +++ b/bff/node_modules/@smithy/types/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/types/README.md b/bff/node_modules/@smithy/types/README.md new file mode 100644 index 0000000..7ab3ccd --- /dev/null +++ b/bff/node_modules/@smithy/types/README.md @@ -0,0 +1,115 @@ +# @smithy/types + +[![NPM version](https://img.shields.io/npm/v/@smithy/types/latest.svg)](https://www.npmjs.com/package/@smithy/types) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/types.svg)](https://www.npmjs.com/package/@smithy/types) + +## Usage + +This package is mostly used internally by generated clients. +Some public components have independent applications. + +--- + +### Scenario: Removing `| undefined` from input and output structures + +Generated shapes' members are unioned with `undefined` for +input shapes, and are `?` (optional) for output shapes. + +- for inputs, this defers the validation to the service. +- for outputs, this strongly suggests that you should runtime-check the output data. + +If you would like to skip these steps, use the `AssertiveClient` or +`UncheckedClient` type helpers. + +Using AWS S3 as an example: + +```ts +import { S3 } from "@aws-sdk/client-s3"; +import type { AssertiveClient, UncheckedClient } from "@smithy/types"; + +const s3a = new S3({}) as AssertiveClient; +const s3b = new S3({}) as UncheckedClient; + +// AssertiveClient enforces required inputs are not undefined +// and required outputs are not undefined. +const get = await s3a.getObject({ + Bucket: "", + // @ts-expect-error (undefined not assignable to string) + Key: undefined, +}); + +// UncheckedClient makes output fields non-nullable. +// You should still perform type checks as you deem +// necessary, but the SDK will no longer prompt you +// with nullability errors. +const body = await ( + await s3b.getObject({ + Bucket: "", + Key: "", + }) +).Body.transformToString(); +``` + +When using the transform on non-aggregated client with the `Command` syntax, +the input cannot be validated because it goes through another class. + +```ts +import { S3Client, ListBucketsCommand, GetObjectCommand, GetObjectCommandInput } from "@aws-sdk/client-s3"; +import type { AssertiveClient, UncheckedClient, NoUndefined } from "@smithy/types"; + +const s3 = new S3Client({}) as UncheckedClient; + +const list = await s3.send( + new ListBucketsCommand({ + // command inputs are not validated by the type transform. + // because this is a separate class. + }) +); + +/** + * Although less ergonomic, you can use the NoUndefined + * transform on the input type. + */ +const getObjectInput: NoUndefined = { + Bucket: "undefined", + // @ts-expect-error (undefined not assignable to string) + Key: undefined, + // optional params can still be undefined. + SSECustomerAlgorithm: undefined, +}; + +const get = s3.send(new GetObjectCommand(getObjectInput)); + +// outputs are still transformed. +await get.Body.TransformToString(); +``` + +### Scenario: Narrowing a smithy-typescript generated client's output payload blob types + +This is mostly relevant to operations with streaming bodies such as within +the S3Client in the AWS SDK for JavaScript v3. + +Because blob payload types are platform dependent, you may wish to indicate in your application that a client is running in a specific +environment. This narrows the blob payload types. + +```typescript +import { GetObjectCommand, S3Client } from "@aws-sdk/client-s3"; +import type { NodeJsClient, SdkStream, StreamingBlobPayloadOutputTypes } from "@smithy/types"; +import type { IncomingMessage } from "node:http"; + +// default client init. +const s3Default = new S3Client({}); + +// client init with type narrowing. +const s3NarrowType = new S3Client({}) as NodeJsClient; + +// The default type of blob payloads is a wide union type including multiple possible +// request handlers. +const body1: StreamingBlobPayloadOutputTypes = (await s3Default.send(new GetObjectCommand({ Key: "", Bucket: "" }))) + .Body!; + +// This is of the narrower type SdkStream representing +// blob payload responses using specifically the node:http request handler. +const body2: SdkStream = (await s3NarrowType.send(new GetObjectCommand({ Key: "", Bucket: "" }))) + .Body!; +``` diff --git a/bff/node_modules/@smithy/types/dist-cjs/index.js b/bff/node_modules/@smithy/types/dist-cjs/index.js new file mode 100644 index 0000000..be6d0e1 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-cjs/index.js @@ -0,0 +1,91 @@ +'use strict'; + +exports.HttpAuthLocation = void 0; +(function (HttpAuthLocation) { + HttpAuthLocation["HEADER"] = "header"; + HttpAuthLocation["QUERY"] = "query"; +})(exports.HttpAuthLocation || (exports.HttpAuthLocation = {})); + +exports.HttpApiKeyAuthLocation = void 0; +(function (HttpApiKeyAuthLocation) { + HttpApiKeyAuthLocation["HEADER"] = "header"; + HttpApiKeyAuthLocation["QUERY"] = "query"; +})(exports.HttpApiKeyAuthLocation || (exports.HttpApiKeyAuthLocation = {})); + +exports.EndpointURLScheme = void 0; +(function (EndpointURLScheme) { + EndpointURLScheme["HTTP"] = "http"; + EndpointURLScheme["HTTPS"] = "https"; +})(exports.EndpointURLScheme || (exports.EndpointURLScheme = {})); + +exports.AlgorithmId = void 0; +(function (AlgorithmId) { + AlgorithmId["MD5"] = "md5"; + AlgorithmId["CRC32"] = "crc32"; + AlgorithmId["CRC32C"] = "crc32c"; + AlgorithmId["SHA1"] = "sha1"; + AlgorithmId["SHA256"] = "sha256"; +})(exports.AlgorithmId || (exports.AlgorithmId = {})); +const getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== undefined) { + checksumAlgorithms.push({ + algorithmId: () => exports.AlgorithmId.SHA256, + checksumConstructor: () => runtimeConfig.sha256, + }); + } + if (runtimeConfig.md5 != undefined) { + checksumAlgorithms.push({ + algorithmId: () => exports.AlgorithmId.MD5, + checksumConstructor: () => runtimeConfig.md5, + }); + } + return { + addChecksumAlgorithm(algo) { + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + }, + }; +}; +const resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; +}; + +const getDefaultClientConfiguration = (runtimeConfig) => { + return getChecksumConfiguration(runtimeConfig); +}; +const resolveDefaultRuntimeConfig = (config) => { + return resolveChecksumRuntimeConfig(config); +}; + +exports.FieldPosition = void 0; +(function (FieldPosition) { + FieldPosition[FieldPosition["HEADER"] = 0] = "HEADER"; + FieldPosition[FieldPosition["TRAILER"] = 1] = "TRAILER"; +})(exports.FieldPosition || (exports.FieldPosition = {})); + +const SMITHY_CONTEXT_KEY = "__smithy_context"; + +exports.IniSectionType = void 0; +(function (IniSectionType) { + IniSectionType["PROFILE"] = "profile"; + IniSectionType["SSO_SESSION"] = "sso-session"; + IniSectionType["SERVICES"] = "services"; +})(exports.IniSectionType || (exports.IniSectionType = {})); + +exports.RequestHandlerProtocol = void 0; +(function (RequestHandlerProtocol) { + RequestHandlerProtocol["HTTP_0_9"] = "http/0.9"; + RequestHandlerProtocol["HTTP_1_0"] = "http/1.0"; + RequestHandlerProtocol["TDS_8_0"] = "tds/8.0"; +})(exports.RequestHandlerProtocol || (exports.RequestHandlerProtocol = {})); + +exports.SMITHY_CONTEXT_KEY = SMITHY_CONTEXT_KEY; +exports.getDefaultClientConfiguration = getDefaultClientConfiguration; +exports.resolveDefaultRuntimeConfig = resolveDefaultRuntimeConfig; diff --git a/bff/node_modules/@smithy/types/dist-es/abort-handler.js b/bff/node_modules/@smithy/types/dist-es/abort-handler.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/abort-handler.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/abort.js b/bff/node_modules/@smithy/types/dist-es/abort.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/abort.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js b/bff/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js new file mode 100644 index 0000000..4c02f24 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js @@ -0,0 +1,5 @@ +export var HttpApiKeyAuthLocation; +(function (HttpApiKeyAuthLocation) { + HttpApiKeyAuthLocation["HEADER"] = "header"; + HttpApiKeyAuthLocation["QUERY"] = "query"; +})(HttpApiKeyAuthLocation || (HttpApiKeyAuthLocation = {})); diff --git a/bff/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js b/bff/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/auth/HttpAuthScheme.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js b/bff/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/auth/HttpAuthSchemeProvider.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/auth/HttpSigner.js b/bff/node_modules/@smithy/types/dist-es/auth/HttpSigner.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/auth/HttpSigner.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js b/bff/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/auth/IdentityProviderConfig.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/auth/auth.js b/bff/node_modules/@smithy/types/dist-es/auth/auth.js new file mode 100644 index 0000000..bd3b2df --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/auth/auth.js @@ -0,0 +1,5 @@ +export var HttpAuthLocation; +(function (HttpAuthLocation) { + HttpAuthLocation["HEADER"] = "header"; + HttpAuthLocation["QUERY"] = "query"; +})(HttpAuthLocation || (HttpAuthLocation = {})); diff --git a/bff/node_modules/@smithy/types/dist-es/auth/index.js b/bff/node_modules/@smithy/types/dist-es/auth/index.js new file mode 100644 index 0000000..7436030 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/auth/index.js @@ -0,0 +1,6 @@ +export * from "./auth"; +export * from "./HttpApiKeyAuth"; +export * from "./HttpAuthScheme"; +export * from "./HttpAuthSchemeProvider"; +export * from "./HttpSigner"; +export * from "./IdentityProviderConfig"; diff --git a/bff/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js b/bff/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/blob/blob-payload-input-types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/checksum.js b/bff/node_modules/@smithy/types/dist-es/checksum.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/checksum.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/client.js b/bff/node_modules/@smithy/types/dist-es/client.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/client.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/command.js b/bff/node_modules/@smithy/types/dist-es/command.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/command.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/connection/config.js b/bff/node_modules/@smithy/types/dist-es/connection/config.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/connection/config.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/connection/index.js b/bff/node_modules/@smithy/types/dist-es/connection/index.js new file mode 100644 index 0000000..c6c3ea8 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/connection/index.js @@ -0,0 +1,3 @@ +export * from "./config"; +export * from "./manager"; +export * from "./pool"; diff --git a/bff/node_modules/@smithy/types/dist-es/connection/manager.js b/bff/node_modules/@smithy/types/dist-es/connection/manager.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/connection/manager.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/connection/pool.js b/bff/node_modules/@smithy/types/dist-es/connection/pool.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/connection/pool.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/crypto.js b/bff/node_modules/@smithy/types/dist-es/crypto.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/crypto.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js b/bff/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/downlevel-ts3.4/transform/type-transform.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/encode.js b/bff/node_modules/@smithy/types/dist-es/encode.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/encode.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/endpoint.js b/bff/node_modules/@smithy/types/dist-es/endpoint.js new file mode 100644 index 0000000..4ae601f --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/endpoint.js @@ -0,0 +1,5 @@ +export var EndpointURLScheme; +(function (EndpointURLScheme) { + EndpointURLScheme["HTTP"] = "http"; + EndpointURLScheme["HTTPS"] = "https"; +})(EndpointURLScheme || (EndpointURLScheme = {})); diff --git a/bff/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js b/bff/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/endpoints/EndpointRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js b/bff/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/endpoints/ErrorRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js b/bff/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/endpoints/RuleSetObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js b/bff/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/endpoints/TreeRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/endpoints/index.js b/bff/node_modules/@smithy/types/dist-es/endpoints/index.js new file mode 100644 index 0000000..64d85cf --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/endpoints/index.js @@ -0,0 +1,5 @@ +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./shared"; +export * from "./TreeRuleObject"; diff --git a/bff/node_modules/@smithy/types/dist-es/endpoints/shared.js b/bff/node_modules/@smithy/types/dist-es/endpoints/shared.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/endpoints/shared.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/eventStream.js b/bff/node_modules/@smithy/types/dist-es/eventStream.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/eventStream.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/extensions/checksum.js b/bff/node_modules/@smithy/types/dist-es/extensions/checksum.js new file mode 100644 index 0000000..5a7939e --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/extensions/checksum.js @@ -0,0 +1,38 @@ +export var AlgorithmId; +(function (AlgorithmId) { + AlgorithmId["MD5"] = "md5"; + AlgorithmId["CRC32"] = "crc32"; + AlgorithmId["CRC32C"] = "crc32c"; + AlgorithmId["SHA1"] = "sha1"; + AlgorithmId["SHA256"] = "sha256"; +})(AlgorithmId || (AlgorithmId = {})); +export const getChecksumConfiguration = (runtimeConfig) => { + const checksumAlgorithms = []; + if (runtimeConfig.sha256 !== undefined) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.SHA256, + checksumConstructor: () => runtimeConfig.sha256, + }); + } + if (runtimeConfig.md5 != undefined) { + checksumAlgorithms.push({ + algorithmId: () => AlgorithmId.MD5, + checksumConstructor: () => runtimeConfig.md5, + }); + } + return { + addChecksumAlgorithm(algo) { + checksumAlgorithms.push(algo); + }, + checksumAlgorithms() { + return checksumAlgorithms; + }, + }; +}; +export const resolveChecksumRuntimeConfig = (clientConfig) => { + const runtimeConfig = {}; + clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => { + runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor(); + }); + return runtimeConfig; +}; diff --git a/bff/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js b/bff/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js new file mode 100644 index 0000000..4e3eb91 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/extensions/defaultClientConfiguration.js @@ -0,0 +1,7 @@ +import { getChecksumConfiguration, resolveChecksumRuntimeConfig } from "./checksum"; +export const getDefaultClientConfiguration = (runtimeConfig) => { + return getChecksumConfiguration(runtimeConfig); +}; +export const resolveDefaultRuntimeConfig = (config) => { + return resolveChecksumRuntimeConfig(config); +}; diff --git a/bff/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js b/bff/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/extensions/defaultExtensionConfiguration.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/extensions/index.js b/bff/node_modules/@smithy/types/dist-es/extensions/index.js new file mode 100644 index 0000000..0fa92d9 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/extensions/index.js @@ -0,0 +1,3 @@ +export * from "./defaultClientConfiguration"; +export * from "./defaultExtensionConfiguration"; +export { AlgorithmId } from "./checksum"; diff --git a/bff/node_modules/@smithy/types/dist-es/extensions/retry.js b/bff/node_modules/@smithy/types/dist-es/extensions/retry.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/extensions/retry.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js b/bff/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/externals-check/browser-externals-check.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/feature-ids.js b/bff/node_modules/@smithy/types/dist-es/feature-ids.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/feature-ids.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/http.js b/bff/node_modules/@smithy/types/dist-es/http.js new file mode 100644 index 0000000..27b22f0 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/http.js @@ -0,0 +1,5 @@ +export var FieldPosition; +(function (FieldPosition) { + FieldPosition[FieldPosition["HEADER"] = 0] = "HEADER"; + FieldPosition[FieldPosition["TRAILER"] = 1] = "TRAILER"; +})(FieldPosition || (FieldPosition = {})); diff --git a/bff/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js b/bff/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/http/httpHandlerInitialization.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js b/bff/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/identity/apiKeyIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js b/bff/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/identity/awsCredentialIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/identity/identity.js b/bff/node_modules/@smithy/types/dist-es/identity/identity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/identity/identity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/identity/index.js b/bff/node_modules/@smithy/types/dist-es/identity/index.js new file mode 100644 index 0000000..3360320 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/identity/index.js @@ -0,0 +1,4 @@ +export * from "./apiKeyIdentity"; +export * from "./awsCredentialIdentity"; +export * from "./identity"; +export * from "./tokenIdentity"; diff --git a/bff/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js b/bff/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/identity/tokenIdentity.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/index.js b/bff/node_modules/@smithy/types/dist-es/index.js new file mode 100644 index 0000000..2f1f25c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/index.js @@ -0,0 +1,43 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-payload-input-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./crypto"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./endpoints"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./http"; +export * from "./http/httpHandlerInitialization"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./response"; +export * from "./retry"; +export * from "./schema/schema"; +export * from "./schema/traits"; +export * from "./schema/schema-deprecated"; +export * from "./schema/sentinels"; +export * from "./schema/static-schemas"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./streaming-payload/streaming-blob-common-types"; +export * from "./streaming-payload/streaming-blob-payload-input-types"; +export * from "./streaming-payload/streaming-blob-payload-output-types"; +export * from "./transfer"; +export * from "./transform/client-payload-blob-type-narrow"; +export * from "./transform/mutable"; +export * from "./transform/no-undefined"; +export * from "./transform/type-transform"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/bff/node_modules/@smithy/types/dist-es/logger.js b/bff/node_modules/@smithy/types/dist-es/logger.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/logger.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/middleware.js b/bff/node_modules/@smithy/types/dist-es/middleware.js new file mode 100644 index 0000000..7d0d050 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/middleware.js @@ -0,0 +1 @@ +export const SMITHY_CONTEXT_KEY = "__smithy_context"; diff --git a/bff/node_modules/@smithy/types/dist-es/pagination.js b/bff/node_modules/@smithy/types/dist-es/pagination.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/pagination.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/profile.js b/bff/node_modules/@smithy/types/dist-es/profile.js new file mode 100644 index 0000000..9d56c8d --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/profile.js @@ -0,0 +1,6 @@ +export var IniSectionType; +(function (IniSectionType) { + IniSectionType["PROFILE"] = "profile"; + IniSectionType["SSO_SESSION"] = "sso-session"; + IniSectionType["SERVICES"] = "services"; +})(IniSectionType || (IniSectionType = {})); diff --git a/bff/node_modules/@smithy/types/dist-es/response.js b/bff/node_modules/@smithy/types/dist-es/response.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/response.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/retry.js b/bff/node_modules/@smithy/types/dist-es/retry.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/retry.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js b/bff/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/schema/schema-deprecated.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/schema/schema.js b/bff/node_modules/@smithy/types/dist-es/schema/schema.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/schema/schema.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/schema/sentinels.js b/bff/node_modules/@smithy/types/dist-es/schema/sentinels.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/schema/sentinels.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/schema/static-schemas.js b/bff/node_modules/@smithy/types/dist-es/schema/static-schemas.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/schema/static-schemas.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/schema/traits.js b/bff/node_modules/@smithy/types/dist-es/schema/traits.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/schema/traits.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/serde.js b/bff/node_modules/@smithy/types/dist-es/serde.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/serde.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/shapes.js b/bff/node_modules/@smithy/types/dist-es/shapes.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/shapes.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/signature.js b/bff/node_modules/@smithy/types/dist-es/signature.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/signature.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/stream.js b/bff/node_modules/@smithy/types/dist-es/stream.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/stream.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js b/bff/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-common-types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js b/bff/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-input-types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js b/bff/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/streaming-payload/streaming-blob-payload-output-types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/transfer.js b/bff/node_modules/@smithy/types/dist-es/transfer.js new file mode 100644 index 0000000..f776151 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/transfer.js @@ -0,0 +1,6 @@ +export var RequestHandlerProtocol; +(function (RequestHandlerProtocol) { + RequestHandlerProtocol["HTTP_0_9"] = "http/0.9"; + RequestHandlerProtocol["HTTP_1_0"] = "http/1.0"; + RequestHandlerProtocol["TDS_8_0"] = "tds/8.0"; +})(RequestHandlerProtocol || (RequestHandlerProtocol = {})); diff --git a/bff/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js b/bff/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/transform/client-method-transforms.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js b/bff/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/transform/client-payload-blob-type-narrow.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/transform/exact.js b/bff/node_modules/@smithy/types/dist-es/transform/exact.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/transform/exact.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/transform/mutable.js b/bff/node_modules/@smithy/types/dist-es/transform/mutable.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/transform/mutable.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/transform/no-undefined.js b/bff/node_modules/@smithy/types/dist-es/transform/no-undefined.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/transform/no-undefined.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/transform/type-transform.js b/bff/node_modules/@smithy/types/dist-es/transform/type-transform.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/transform/type-transform.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/uri.js b/bff/node_modules/@smithy/types/dist-es/uri.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/uri.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/util.js b/bff/node_modules/@smithy/types/dist-es/util.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/util.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-es/waiter.js b/bff/node_modules/@smithy/types/dist-es/waiter.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-es/waiter.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/abort-handler.d.ts b/bff/node_modules/@smithy/types/dist-types/abort-handler.d.ts new file mode 100644 index 0000000..09a0544 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/abort-handler.d.ts @@ -0,0 +1,7 @@ +import type { AbortSignal as DeprecatedAbortSignal } from "./abort"; +/** + * @public + */ +export interface AbortHandler { + (this: AbortSignal | DeprecatedAbortSignal, ev: any): any; +} diff --git a/bff/node_modules/@smithy/types/dist-types/abort.d.ts b/bff/node_modules/@smithy/types/dist-types/abort.d.ts new file mode 100644 index 0000000..80fc87f --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/abort.d.ts @@ -0,0 +1,50 @@ +import type { AbortHandler } from "./abort-handler"; +/** + * @public + */ +export { AbortHandler }; +/** + * @public + * @deprecated use platform (global) type for AbortSignal. + * + * Holders of an AbortSignal object may query if the associated operation has + * been aborted and register an onabort handler. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal + */ +export interface AbortSignal { + /** + * Whether the action represented by this signal has been cancelled. + */ + readonly aborted: boolean; + /** + * A function to be invoked when the action represented by this signal has + * been cancelled. + */ + onabort: AbortHandler | Function | null; +} +/** + * @public + * @deprecated use platform (global) type for AbortController. + * + * The AWS SDK uses a Controller/Signal model to allow for cooperative + * cancellation of asynchronous operations. When initiating such an operation, + * the caller can create an AbortController and then provide linked signal to + * subtasks. This allows a single source to communicate to multiple consumers + * that an action has been aborted without dictating how that cancellation + * should be handled. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortController + */ +export interface AbortController { + /** + * An object that reports whether the action associated with this + * `AbortController` has been cancelled. + */ + readonly signal: AbortSignal; + /** + * Declares the operation associated with this AbortController to have been + * cancelled. + */ + abort(): void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts b/bff/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts new file mode 100644 index 0000000..5d74340 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/auth/HttpApiKeyAuth.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum HttpApiKeyAuthLocation { + HEADER = "header", + QUERY = "query" +} diff --git a/bff/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts b/bff/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts new file mode 100644 index 0000000..0a23c5c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/auth/HttpAuthScheme.d.ts @@ -0,0 +1,49 @@ +import type { Identity, IdentityProvider } from "../identity/identity"; +import type { HandlerExecutionContext } from "../middleware"; +import type { HttpSigner } from "./HttpSigner"; +import type { IdentityProviderConfig } from "./IdentityProviderConfig"; +/** + * ID for {@link HttpAuthScheme} + * @internal + */ +export type HttpAuthSchemeId = string; +/** + * Interface that defines an HttpAuthScheme + * @internal + */ +export interface HttpAuthScheme { + /** + * ID for an HttpAuthScheme, typically the absolute shape ID of a Smithy auth trait. + */ + schemeId: HttpAuthSchemeId; + /** + * Gets the IdentityProvider corresponding to an HttpAuthScheme. + */ + identityProvider(config: IdentityProviderConfig): IdentityProvider | undefined; + /** + * HttpSigner corresponding to an HttpAuthScheme. + */ + signer: HttpSigner; +} +/** + * Interface that defines the identity and signing properties when selecting + * an HttpAuthScheme. + * @internal + */ +export interface HttpAuthOption { + schemeId: HttpAuthSchemeId; + identityProperties?: Record; + signingProperties?: Record; + propertiesExtractor?: (config: TConfig, context: TContext) => { + identityProperties?: Record; + signingProperties?: Record; + }; +} +/** + * @internal + */ +export interface SelectedHttpAuthScheme { + httpAuthOption: HttpAuthOption; + identity: Identity; + signer: HttpSigner; +} diff --git a/bff/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts b/bff/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..1dde5d6 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/auth/HttpAuthSchemeProvider.d.ts @@ -0,0 +1,20 @@ +import type { HandlerExecutionContext } from "../middleware"; +import type { HttpAuthOption } from "./HttpAuthScheme"; +/** + * @internal + */ +export interface HttpAuthSchemeParameters { + operation?: string; +} +/** + * @internal + */ +export interface HttpAuthSchemeProvider { + (authParameters: TParameters): HttpAuthOption[]; +} +/** + * @internal + */ +export interface HttpAuthSchemeParametersProvider { + (config: TConfig, context: TContext, input: TInput): Promise; +} diff --git a/bff/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts b/bff/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts new file mode 100644 index 0000000..ec1583b --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/auth/HttpSigner.d.ts @@ -0,0 +1,41 @@ +import type { HttpRequest, HttpResponse } from "../http"; +import type { Identity } from "../identity/identity"; +/** + * @internal + */ +export interface ErrorHandler { + (signingProperties: Record): (error: E) => never; +} +/** + * @internal + */ +export interface SuccessHandler { + (httpResponse: HttpResponse | unknown, signingProperties: Record): void; +} +/** + * Interface to sign identity and signing properties. + * @internal + */ +export interface HttpSigner { + /** + * Signs an HttpRequest with an identity and signing properties. + * @param httpRequest request to sign + * @param identity identity to sing the request with + * @param signingProperties property bag for signing + * @returns signed request in a promise + */ + sign(httpRequest: HttpRequest, identity: Identity, signingProperties: Record): Promise; + /** + * Handler that executes after the {@link HttpSigner.sign} invocation and corresponding + * middleware throws an error. + * The error handler is expected to throw the error it receives, so the return type of the error handler is `never`. + * @internal + */ + errorHandler?: ErrorHandler; + /** + * Handler that executes after the {@link HttpSigner.sign} invocation and corresponding + * middleware succeeds. + * @internal + */ + successHandler?: SuccessHandler; +} diff --git a/bff/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts b/bff/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts new file mode 100644 index 0000000..73a193d --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/auth/IdentityProviderConfig.d.ts @@ -0,0 +1,14 @@ +import type { Identity, IdentityProvider } from "../identity/identity"; +import type { HttpAuthSchemeId } from "./HttpAuthScheme"; +/** + * Interface to get an IdentityProvider for a specified HttpAuthScheme + * @internal + */ +export interface IdentityProviderConfig { + /** + * Get the IdentityProvider for a specified HttpAuthScheme. + * @param schemeId schemeId of the HttpAuthScheme + * @returns IdentityProvider or undefined if HttpAuthScheme is not found + */ + getIdentityProvider(schemeId: HttpAuthSchemeId): IdentityProvider | undefined; +} diff --git a/bff/node_modules/@smithy/types/dist-types/auth/auth.d.ts b/bff/node_modules/@smithy/types/dist-types/auth/auth.d.ts new file mode 100644 index 0000000..2aaabbc --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/auth/auth.d.ts @@ -0,0 +1,57 @@ +/** + * @internal + * + * Authentication schemes represent a way that the service will authenticate the customer’s identity. + */ +export interface AuthScheme { + /** + * @example "sigv4a" or "sigv4" + */ + name: "sigv4" | "sigv4a" | string; + /** + * @example "s3" + */ + signingName: string; + /** + * @example "us-east-1" + */ + signingRegion: string; + /** + * @example ["*"] + * @example ["us-west-2", "us-east-1"] + */ + signingRegionSet?: string[]; + /** + * @deprecated this field was renamed to signingRegion. + */ + signingScope?: never; + properties: Record; +} +/** + * @internal + * @deprecated + */ +export interface HttpAuthDefinition { + /** + * Defines the location of where the Auth is serialized. + */ + in: HttpAuthLocation; + /** + * Defines the name of the HTTP header or query string parameter + * that contains the Auth. + */ + name: string; + /** + * Defines the security scheme to use on the `Authorization` header value. + * This can only be set if the "in" property is set to {@link HttpAuthLocation.HEADER}. + */ + scheme?: string; +} +/** + * @internal + * @deprecated + */ +export declare enum HttpAuthLocation { + HEADER = "header", + QUERY = "query" +} diff --git a/bff/node_modules/@smithy/types/dist-types/auth/index.d.ts b/bff/node_modules/@smithy/types/dist-types/auth/index.d.ts new file mode 100644 index 0000000..7436030 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/auth/index.d.ts @@ -0,0 +1,6 @@ +export * from "./auth"; +export * from "./HttpApiKeyAuth"; +export * from "./HttpAuthScheme"; +export * from "./HttpAuthSchemeProvider"; +export * from "./HttpSigner"; +export * from "./IdentityProviderConfig"; diff --git a/bff/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts b/bff/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts new file mode 100644 index 0000000..32eecac --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/blob/blob-payload-input-types.d.ts @@ -0,0 +1,40 @@ +import type { Readable } from "stream"; +import type { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * A union of types that can be used as inputs for the service model + * "blob" type when it represents the request's entire payload or body. + * + * For example, in Lambda::invoke, the payload is modeled as a blob type + * and this union applies to it. + * In contrast, in Lambda::createFunction the Zip file option is a blob type, + * but is not the (entire) payload and this union does not apply. + * + * Note: not all types are signable by the standard SignatureV4 signer when + * used as the request body. For example, in Node.js a Readable stream + * is not signable by the default signer. + * They are included in the union because it may work in some cases, + * but the expected types are primarily string and Uint8Array. + * + * Additional details may be found in the internal + * function "getPayloadHash" in the SignatureV4 module. + */ +export type BlobPayloadInputTypes = string | ArrayBuffer | ArrayBufferView | Uint8Array | NodeJsRuntimeBlobTypes | BrowserRuntimeBlobTypes; +/** + * @public + * + * Additional blob types for the Node.js environment. + */ +export type NodeJsRuntimeBlobTypes = Readable | Buffer; +/** + * @public + * + * Additional blob types for the browser environment. + */ +export type BrowserRuntimeBlobTypes = BlobOptionalType | ReadableStreamOptionalType; +/** + * @internal + * @deprecated renamed to BlobPayloadInputTypes. + */ +export type BlobTypes = BlobPayloadInputTypes; diff --git a/bff/node_modules/@smithy/types/dist-types/checksum.d.ts b/bff/node_modules/@smithy/types/dist-types/checksum.d.ts new file mode 100644 index 0000000..f572fb9 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/checksum.d.ts @@ -0,0 +1,63 @@ +import type { SourceData } from "./crypto"; +/** + * @public + * + * An object that provides a checksum of data provided in chunks to `update`. + * The checksum may be performed incrementally as chunks are received or all + * at once when the checksum is finalized, depending on the underlying + * implementation. + * + * It's recommended to compute checksum incrementally to avoid reading the + * entire payload in memory. + * + * A class that implements this interface may accept an optional secret key in its + * constructor while computing checksum value, when using HMAC. If provided, + * this secret key would be used when computing checksum. + */ +export interface Checksum { + /** + * Constant length of the digest created by the algorithm in bytes. + */ + digestLength?: number; + /** + * Creates a new checksum object that contains a deep copy of the internal + * state of the current `Checksum` object. + */ + copy?(): Checksum; + /** + * Returns the digest of all of the data passed. + */ + digest(): Promise; + /** + * Allows marking a checksum for checksums that support the ability + * to mark and reset. + * + * @param readLimit - The maximum limit of bytes that can be read + * before the mark position becomes invalid. + */ + mark?(readLimit: number): void; + /** + * Resets the checksum to its initial value. + */ + reset(): void; + /** + * Adds a chunk of data for which checksum needs to be computed. + * This can be called many times with new data as it is streamed. + * + * Implementations may override this method which passes second param + * which makes Checksum object stateless. + * + * @param chunk - The buffer to update checksum with. + */ + update(chunk: Uint8Array): void; +} +/** + * @public + * + * A constructor for a Checksum that may be used to calculate an HMAC. Implementing + * classes should not directly hold the provided key in memory beyond the + * lexical scope of the constructor. + */ +export interface ChecksumConstructor { + new (secret?: SourceData): Checksum; +} diff --git a/bff/node_modules/@smithy/types/dist-types/client.d.ts b/bff/node_modules/@smithy/types/dist-types/client.d.ts new file mode 100644 index 0000000..9d12935 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/client.d.ts @@ -0,0 +1,57 @@ +import type { Command } from "./command"; +import type { MiddlewareStack } from "./middleware"; +import type { MetadataBearer } from "./response"; +import type { OptionalParameter } from "./util"; +/** + * @public + * + * A type which checks if the client configuration is optional. + * If all entries of the client configuration are optional, it allows client creation without passing any config. + */ +export type CheckOptionalClientConfig = OptionalParameter; +/** + * @public + * + * function definition for different overrides of client's 'send' function. + */ +export interface InvokeFunction { + (command: Command, options?: any): Promise; + (command: Command, cb: (err: any, data?: OutputType) => void): void; + (command: Command, options: any, cb: (err: any, data?: OutputType) => void): void; + (command: Command, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * @public + * + * Signature that appears on aggregated clients' methods. + */ +export interface InvokeMethod { + (input: InputType, options?: any): Promise; + (input: InputType, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options: any, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * @public + * + * Signature that appears on aggregated clients' methods when argument is optional. + */ +export interface InvokeMethodOptionalArgs { + (): Promise; + (input: InputType, options?: any): Promise; + (input: InputType, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options: any, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * A general interface for service clients, idempotent to browser or node clients + * This type corresponds to SmithyClient(https://github.com/aws/aws-sdk-js-v3/blob/main/packages/smithy-client/src/client.ts). + * It's provided for using without importing the SmithyClient class. + * @internal + */ +export interface Client { + readonly config: ResolvedClientConfiguration; + middlewareStack: MiddlewareStack; + send: InvokeFunction; + destroy: () => void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/command.d.ts b/bff/node_modules/@smithy/types/dist-types/command.d.ts new file mode 100644 index 0000000..db82544 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/command.d.ts @@ -0,0 +1,28 @@ +import type { Handler, MiddlewareStack } from "./middleware"; +import type { MetadataBearer } from "./response"; +/** + * @public + */ +export interface Command extends CommandIO { + readonly input: InputType; + readonly middlewareStack: MiddlewareStack; + /** + * This should be OperationSchema from @smithy/types, but would + * create problems with the client transform type adaptors. + */ + readonly schema?: any; + resolveMiddleware(stack: MiddlewareStack, configuration: ResolvedConfiguration, options: any): Handler; +} +/** + * @internal + * + * This is a subset of the Command type used only to detect the i/o types. + */ +export interface CommandIO { + readonly input: InputType; + resolveMiddleware(stack: any, configuration: any, options: any): Handler; +} +/** + * @internal + */ +export type GetOutputType = Command extends CommandIO ? O : never; diff --git a/bff/node_modules/@smithy/types/dist-types/connection/config.d.ts b/bff/node_modules/@smithy/types/dist-types/connection/config.d.ts new file mode 100644 index 0000000..f9d4632 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/connection/config.d.ts @@ -0,0 +1,10 @@ +/** + * @public + */ +export interface ConnectConfiguration { + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + */ + requestTimeout?: number; +} diff --git a/bff/node_modules/@smithy/types/dist-types/connection/index.d.ts b/bff/node_modules/@smithy/types/dist-types/connection/index.d.ts new file mode 100644 index 0000000..c6c3ea8 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/connection/index.d.ts @@ -0,0 +1,3 @@ +export * from "./config"; +export * from "./manager"; +export * from "./pool"; diff --git a/bff/node_modules/@smithy/types/dist-types/connection/manager.d.ts b/bff/node_modules/@smithy/types/dist-types/connection/manager.d.ts new file mode 100644 index 0000000..fd83d44 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/connection/manager.d.ts @@ -0,0 +1,34 @@ +import type { RequestContext } from "../transfer"; +import type { ConnectConfiguration } from "./config"; +/** + * @public + */ +export interface ConnectionManagerConfiguration { + /** + * Maximum number of allowed concurrent requests per connection. + */ + maxConcurrency?: number; + /** + * Disables concurrent requests per connection. + */ + disableConcurrency?: boolean; +} +/** + * @public + */ +export interface ConnectionManager { + /** + * Retrieves a connection from the connection pool if available, + * otherwise establish a new connection + */ + lease(requestContext: RequestContext, connectionConfiguration: ConnectConfiguration): T; + /** + * Releases the connection back to the pool making it potentially + * re-usable by other requests. + */ + release(requestContext: RequestContext, connection: T): void; + /** + * Destroys the connection manager. All connections will be closed. + */ + destroy(): void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/connection/pool.d.ts b/bff/node_modules/@smithy/types/dist-types/connection/pool.d.ts new file mode 100644 index 0000000..d43530a --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/connection/pool.d.ts @@ -0,0 +1,32 @@ +/** + * @public + */ +export interface ConnectionPool { + /** + * Retrieve the first connection in the pool + */ + poll(): T | void; + /** + * Release the connection back to the pool making it potentially + * re-usable by other requests. + */ + offerLast(connection: T): void; + /** + * Removes the connection from the pool, and destroys it. + */ + destroy(connection: T): void; + /** + * Implements the iterable protocol and allows arrays to be consumed + * by most syntaxes expecting iterables, such as the spread syntax + * and for...of loops + */ + [Symbol.iterator](): Iterator; +} +/** + * Unused. + * @internal + * @deprecated + */ +export interface CacheKey { + destination: string; +} diff --git a/bff/node_modules/@smithy/types/dist-types/crypto.d.ts b/bff/node_modules/@smithy/types/dist-types/crypto.d.ts new file mode 100644 index 0000000..874320e --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/crypto.d.ts @@ -0,0 +1,60 @@ +/** + * @public + */ +export type SourceData = string | ArrayBuffer | ArrayBufferView; +/** + * @public + * + * An object that provides a hash of data provided in chunks to `update`. The + * hash may be performed incrementally as chunks are received or all at once + * when the hash is finalized, depending on the underlying implementation. + * + * @deprecated use {@link Checksum} + */ +export interface Hash { + /** + * Adds a chunk of data to the hash. If a buffer is provided, the `encoding` + * argument will be ignored. If a string is provided without a specified + * encoding, implementations must assume UTF-8 encoding. + * + * Not all encodings are supported on all platforms, though all must support + * UTF-8. + */ + update(toHash: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + /** + * Finalizes the hash and provides a promise that will be fulfilled with the + * raw bytes of the calculated hash. + */ + digest(): Promise; +} +/** + * @public + * + * A constructor for a hash that may be used to calculate an HMAC. Implementing + * classes should not directly hold the provided key in memory beyond the + * lexical scope of the constructor. + * + * @deprecated use {@link ChecksumConstructor} + */ +export interface HashConstructor { + new (secret?: SourceData): Hash; +} +/** + * @public + * + * A function that calculates the hash of a data stream. Determining the hash + * will consume the stream, so only replayable streams should be provided to an + * implementation of this interface. + */ +export interface StreamHasher { + (hashCtor: HashConstructor, stream: StreamType): Promise; +} +/** + * @public + * + * A function that returns a promise fulfilled with bytes from a + * cryptographically secure pseudorandom number generator. + */ +export interface randomValues { + (byteLength: number): Promise; +} diff --git a/bff/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts b/bff/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts new file mode 100644 index 0000000..312ae6e --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/downlevel-ts3.4/transform/type-transform.d.ts @@ -0,0 +1,25 @@ +/** + * @public + * + * Transforms any members of the object T having type FromType + * to ToType. This applies only to exact type matches. + * + * This is for the case where FromType is a union and only those fields + * matching the same union should be transformed. + */ +export type Transform = RecursiveTransformExact; +/** + * @internal + * + * Returns ToType if T matches exactly with FromType. + */ +type TransformExact = [T] extends [FromType] ? ([FromType] extends [T] ? ToType : T) : T; +/** + * @internal + * + * Applies TransformExact to members of an object recursively. + */ +type RecursiveTransformExact = T extends Function ? T : T extends object ? { + [key in keyof T]: [T[key]] extends [FromType] ? [FromType] extends [T[key]] ? ToType : RecursiveTransformExact : RecursiveTransformExact; +} : TransformExact; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/encode.d.ts b/bff/node_modules/@smithy/types/dist-types/encode.d.ts new file mode 100644 index 0000000..2f1715a --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/encode.d.ts @@ -0,0 +1,31 @@ +import type { Message } from "./eventStream"; +/** + * @public + */ +export interface MessageEncoder { + encode(message: Message): Uint8Array; +} +/** + * @public + */ +export interface MessageDecoder { + decode(message: ArrayBufferView): Message; + feed(message: ArrayBufferView): void; + endOfStream(): void; + getMessage(): AvailableMessage; + getAvailableMessages(): AvailableMessages; +} +/** + * @public + */ +export interface AvailableMessage { + getMessage(): Message | undefined; + isEndOfStream(): boolean; +} +/** + * @public + */ +export interface AvailableMessages { + getMessages(): Message[]; + isEndOfStream(): boolean; +} diff --git a/bff/node_modules/@smithy/types/dist-types/endpoint.d.ts b/bff/node_modules/@smithy/types/dist-types/endpoint.d.ts new file mode 100644 index 0000000..15bbd9c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/endpoint.d.ts @@ -0,0 +1,77 @@ +import type { AuthScheme } from "./auth/auth"; +/** + * @public + */ +export interface EndpointPartition { + name: string; + dnsSuffix: string; + dualStackDnsSuffix: string; + supportsFIPS: boolean; + supportsDualStack: boolean; +} +/** + * @public + */ +export interface EndpointARN { + partition: string; + service: string; + region: string; + accountId: string; + resourceId: Array; +} +/** + * @public + */ +export declare enum EndpointURLScheme { + HTTP = "http", + HTTPS = "https" +} +/** + * @public + */ +export interface EndpointURL { + /** + * The URL scheme such as http or https. + */ + scheme: EndpointURLScheme; + /** + * The authority is the host and optional port component of the URL. + */ + authority: string; + /** + * The parsed path segment of the URL. + * This value is as-is as provided by the user. + */ + path: string; + /** + * The parsed path segment of the URL. + * This value is guranteed to start and end with a "/". + */ + normalizedPath: string; + /** + * A boolean indicating whether the authority is an IP address. + */ + isIp: boolean; +} +/** + * @public + */ +export type EndpointObjectProperty = string | boolean | { + [key: string]: EndpointObjectProperty; +} | EndpointObjectProperty[]; +/** + * @public + */ +export interface EndpointV2 { + url: URL; + properties?: { + authSchemes?: AuthScheme[]; + } & Record; + headers?: Record; +} +/** + * @public + */ +export type EndpointParameters = { + [name: string]: undefined | boolean | string | string[]; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts b/bff/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts new file mode 100644 index 0000000..503b781 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/endpoints/EndpointRuleObject.d.ts @@ -0,0 +1,27 @@ +import type { EndpointObjectProperty } from "../endpoint"; +import type { ConditionObject, Expression } from "./shared"; +/** + * @public + */ +export type EndpointObjectProperties = Record; +/** + * @public + */ +export type EndpointObjectHeaders = Record; +/** + * @public + */ +export type EndpointObject = { + url: Expression; + properties?: EndpointObjectProperties; + headers?: EndpointObjectHeaders; +}; +/** + * @public + */ +export type EndpointRuleObject = { + type: "endpoint"; + conditions?: ConditionObject[]; + endpoint: EndpointObject; + documentation?: string; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts b/bff/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts new file mode 100644 index 0000000..602cf9c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/endpoints/ErrorRuleObject.d.ts @@ -0,0 +1,10 @@ +import type { ConditionObject, Expression } from "./shared"; +/** + * @public + */ +export type ErrorRuleObject = { + type: "error"; + conditions?: ConditionObject[]; + error: Expression; + documentation?: string; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts b/bff/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts new file mode 100644 index 0000000..7958940 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/endpoints/RuleSetObject.d.ts @@ -0,0 +1,28 @@ +import type { RuleSetRules } from "./TreeRuleObject"; +/** + * @public + */ +export type DeprecatedObject = { + message?: string; + since?: string; +}; +/** + * @public + */ +export type ParameterObject = { + type: "String" | "string" | "Boolean" | "boolean"; + default?: string | boolean; + required?: boolean; + documentation?: string; + builtIn?: string; + deprecated?: DeprecatedObject; +}; +/** + * @public + */ +export type RuleSetObject = { + version: string; + serviceId?: string; + parameters: Record; + rules: RuleSetRules; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts b/bff/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts new file mode 100644 index 0000000..9ec9194 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/endpoints/TreeRuleObject.d.ts @@ -0,0 +1,16 @@ +import type { EndpointRuleObject } from "./EndpointRuleObject"; +import type { ErrorRuleObject } from "./ErrorRuleObject"; +import type { ConditionObject } from "./shared"; +/** + * @public + */ +export type RuleSetRules = Array; +/** + * @public + */ +export type TreeRuleObject = { + type: "tree"; + conditions?: ConditionObject[]; + rules: RuleSetRules; + documentation?: string; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/endpoints/index.d.ts b/bff/node_modules/@smithy/types/dist-types/endpoints/index.d.ts new file mode 100644 index 0000000..64d85cf --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/endpoints/index.d.ts @@ -0,0 +1,5 @@ +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./shared"; +export * from "./TreeRuleObject"; diff --git a/bff/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts b/bff/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts new file mode 100644 index 0000000..d922e5a --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/endpoints/shared.d.ts @@ -0,0 +1,55 @@ +import type { Logger } from "../logger"; +/** + * @public + */ +export type ReferenceObject = { + ref: string; +}; +/** + * @public + */ +export type FunctionObject = { + fn: string; + argv: FunctionArgv; +}; +/** + * @public + */ +export type FunctionArgv = Array; +/** + * @public + */ +export type FunctionReturn = string | boolean | number | { + [key: string]: FunctionReturn; +}; +/** + * @public + */ +export type ConditionObject = FunctionObject & { + assign?: string; +}; +/** + * @public + */ +export type Expression = string | ReferenceObject | FunctionObject; +/** + * @public + */ +export type EndpointParams = Record; +/** + * @public + */ +export type EndpointResolverOptions = { + endpointParams: EndpointParams; + logger?: Logger; +}; +/** + * @public + */ +export type ReferenceRecord = Record; +/** + * @public + */ +export type EvaluateOptions = EndpointResolverOptions & { + referenceRecord: ReferenceRecord; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/eventStream.d.ts b/bff/node_modules/@smithy/types/dist-types/eventStream.d.ts new file mode 100644 index 0000000..9250d14 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/eventStream.d.ts @@ -0,0 +1,137 @@ +import type { HttpRequest } from "./http"; +import type { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput, HandlerExecutionContext } from "./middleware"; +import type { MetadataBearer } from "./response"; +/** + * @public + * + * An event stream message. The headers and body properties will always be + * defined, with empty headers represented as an object with no keys and an + * empty body represented as a zero-length Uint8Array. + */ +export interface Message { + headers: MessageHeaders; + body: Uint8Array; +} +/** + * @public + */ +export type MessageHeaders = Record; +/** + * @public + */ +export type HeaderValue = { + type: K; + value: V; +}; +/** + * @public + */ +export type BooleanHeaderValue = HeaderValue<"boolean", boolean>; +/** + * @public + */ +export type ByteHeaderValue = HeaderValue<"byte", number>; +/** + * @public + */ +export type ShortHeaderValue = HeaderValue<"short", number>; +/** + * @public + */ +export type IntegerHeaderValue = HeaderValue<"integer", number>; +/** + * @public + */ +export type LongHeaderValue = HeaderValue<"long", Int64>; +/** + * @public + */ +export type BinaryHeaderValue = HeaderValue<"binary", Uint8Array>; +/** + * @public + */ +export type StringHeaderValue = HeaderValue<"string", string>; +/** + * @public + */ +export type TimestampHeaderValue = HeaderValue<"timestamp", Date>; +/** + * @public + */ +export type UuidHeaderValue = HeaderValue<"uuid", string>; +/** + * @public + */ +export type MessageHeaderValue = BooleanHeaderValue | ByteHeaderValue | ShortHeaderValue | IntegerHeaderValue | LongHeaderValue | BinaryHeaderValue | StringHeaderValue | TimestampHeaderValue | UuidHeaderValue; +/** + * @public + */ +export interface Int64 { + readonly bytes: Uint8Array; + valueOf: () => number; + toString: () => string; +} +/** + * @public + * + * Util functions for serializing or deserializing event stream + */ +export interface EventStreamSerdeContext { + eventStreamMarshaller: EventStreamMarshaller; +} +/** + * @public + * + * A function which deserializes binary event stream message into modeled shape. + */ +export interface EventStreamMarshallerDeserFn { + (body: StreamType, deserializer: (input: Record) => Promise): AsyncIterable; +} +/** + * @public + * + * A function that serializes modeled shape into binary stream message. + */ +export interface EventStreamMarshallerSerFn { + (input: AsyncIterable, serializer: (event: T) => Message): StreamType; +} +/** + * @public + * + * An interface which provides functions for serializing and deserializing binary event stream + * to/from corresponsing modeled shape. + */ +export interface EventStreamMarshaller { + deserialize: EventStreamMarshallerDeserFn; + serialize: EventStreamMarshallerSerFn; +} +/** + * @public + */ +export interface EventStreamRequestSigner { + sign(request: HttpRequest): Promise; +} +/** + * @public + */ +export interface EventStreamPayloadHandler { + handle: (next: FinalizeHandler, args: FinalizeHandlerArguments, context?: HandlerExecutionContext) => Promise>; +} +/** + * @public + */ +export interface EventStreamPayloadHandlerProvider { + (options: any): EventStreamPayloadHandler; +} +/** + * @public + */ +export interface EventStreamSerdeProvider { + (options: any): EventStreamMarshaller; +} +/** + * @public + */ +export interface EventStreamSignerProvider { + (options: any): EventStreamRequestSigner; +} diff --git a/bff/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts b/bff/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts new file mode 100644 index 0000000..7b45f32 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/extensions/checksum.d.ts @@ -0,0 +1,58 @@ +import type { ChecksumConstructor } from "../checksum"; +import type { HashConstructor } from "../crypto"; +/** + * @internal + */ +export declare enum AlgorithmId { + MD5 = "md5", + CRC32 = "crc32", + CRC32C = "crc32c", + SHA1 = "sha1", + SHA256 = "sha256" +} +/** + * @internal + */ +export interface ChecksumAlgorithm { + algorithmId(): AlgorithmId | string; + checksumConstructor(): ChecksumConstructor | HashConstructor; +} +/** + * @deprecated unused. + * @internal + */ +type ChecksumConfigurationLegacy = { + [other in string | number]: any; +}; +/** + * @internal + */ +export interface ChecksumConfiguration extends ChecksumConfigurationLegacy { + addChecksumAlgorithm(algo: ChecksumAlgorithm): void; + checksumAlgorithms(): ChecksumAlgorithm[]; +} +/** + * @deprecated will be removed for implicit type. + * @internal + */ +type GetChecksumConfigurationType = (runtimeConfig: Partial<{ + sha256: ChecksumConstructor | HashConstructor; + md5: ChecksumConstructor | HashConstructor; +}>) => ChecksumConfiguration; +/** + * @internal + * @deprecated will be moved to smithy-client. + */ +export declare const getChecksumConfiguration: GetChecksumConfigurationType; +/** + * @internal + * @deprecated will be removed for implicit type. + */ +type ResolveChecksumRuntimeConfigType = (clientConfig: ChecksumConfiguration) => any; +/** + * @internal + * + * @deprecated will be moved to smithy-client. + */ +export declare const resolveChecksumRuntimeConfig: ResolveChecksumRuntimeConfigType; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts b/bff/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts new file mode 100644 index 0000000..4596d43 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/extensions/defaultClientConfiguration.d.ts @@ -0,0 +1,33 @@ +import type { ChecksumConfiguration } from "./checksum"; +/** + * @deprecated will be replaced by DefaultExtensionConfiguration. + * @internal + * + * Default client configuration consisting various configurations for modifying a service client + */ +export interface DefaultClientConfiguration extends ChecksumConfiguration { +} +/** + * @deprecated will be removed for implicit type. + */ +type GetDefaultConfigurationType = (runtimeConfig: any) => DefaultClientConfiguration; +/** + * @deprecated moving to @smithy/smithy-client. + * @internal + * + * Helper function to resolve default client configuration from runtime config + * + */ +export declare const getDefaultClientConfiguration: GetDefaultConfigurationType; +/** + * @deprecated will be removed for implicit type. + */ +type ResolveDefaultRuntimeConfigType = (clientConfig: DefaultClientConfiguration) => any; +/** + * @deprecated moving to @smithy/smithy-client. + * @internal + * + * Helper function to resolve runtime config from default client configuration + */ +export declare const resolveDefaultRuntimeConfig: ResolveDefaultRuntimeConfigType; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts b/bff/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts new file mode 100644 index 0000000..3b3ef6e --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/extensions/defaultExtensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import type { ChecksumConfiguration } from "./checksum"; +import type { RetryStrategyConfiguration } from "./retry"; +/** + * @internal + * + * Default extension configuration consisting various configurations for modifying a service client + */ +export interface DefaultExtensionConfiguration extends ChecksumConfiguration, RetryStrategyConfiguration { +} diff --git a/bff/node_modules/@smithy/types/dist-types/extensions/index.d.ts b/bff/node_modules/@smithy/types/dist-types/extensions/index.d.ts new file mode 100644 index 0000000..cce65a1 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/extensions/index.d.ts @@ -0,0 +1,4 @@ +export * from "./defaultClientConfiguration"; +export * from "./defaultExtensionConfiguration"; +export { AlgorithmId, ChecksumAlgorithm, ChecksumConfiguration } from "./checksum"; +export { RetryStrategyConfiguration } from "./retry"; diff --git a/bff/node_modules/@smithy/types/dist-types/extensions/retry.d.ts b/bff/node_modules/@smithy/types/dist-types/extensions/retry.d.ts new file mode 100644 index 0000000..1eefdfa --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/extensions/retry.d.ts @@ -0,0 +1,18 @@ +import type { RetryStrategyV2 } from "../retry"; +import type { Provider, RetryStrategy } from "../util"; +/** + * A configuration interface with methods called by runtime extension + * @internal + */ +export interface RetryStrategyConfiguration { + /** + * Set retry strategy used for all http requests + * @param retryStrategy + */ + setRetryStrategy(retryStrategy: Provider): void; + /** + * Get retry strategy used for all http requests + * @param retryStrategy + */ + retryStrategy(): Provider; +} diff --git a/bff/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts b/bff/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts new file mode 100644 index 0000000..0de7f8f --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/externals-check/browser-externals-check.d.ts @@ -0,0 +1,35 @@ +import type { Exact } from "../transform/exact"; +/** + * @public + * + * A checked type that resolves to Blob if it is defined as more than a stub, otherwise + * resolves to 'never' so as not to widen the type of unions containing Blob + * excessively. + */ +export type BlobOptionalType = BlobDefined extends true ? Blob : Unavailable; +/** + * @public + * + * A checked type that resolves to ReadableStream if it is defined as more than a stub, otherwise + * resolves to 'never' so as not to widen the type of unions containing ReadableStream + * excessively. + */ +export type ReadableStreamOptionalType = ReadableStreamDefined extends true ? ReadableStream : Unavailable; +/** + * @public + * + * Indicates a type is unavailable if it resolves to this. + */ +export type Unavailable = never; +/** + * @internal + * + * Whether the global types define more than a stub for ReadableStream. + */ +export type ReadableStreamDefined = Exact extends true ? false : true; +/** + * @internal + * + * Whether the global types define more than a stub for Blob. + */ +export type BlobDefined = Exact extends true ? false : true; diff --git a/bff/node_modules/@smithy/types/dist-types/feature-ids.d.ts b/bff/node_modules/@smithy/types/dist-types/feature-ids.d.ts new file mode 100644 index 0000000..19e4bd2 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/feature-ids.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export type SmithyFeatures = Partial<{ + RESOURCE_MODEL: "A"; + WAITER: "B"; + PAGINATOR: "C"; + RETRY_MODE_LEGACY: "D"; + RETRY_MODE_STANDARD: "E"; + RETRY_MODE_ADAPTIVE: "F"; + GZIP_REQUEST_COMPRESSION: "L"; + PROTOCOL_RPC_V2_CBOR: "M"; + ENDPOINT_OVERRIDE: "N"; + SIGV4A_SIGNING: "S"; + CREDENTIALS_CODE: "e"; +}>; diff --git a/bff/node_modules/@smithy/types/dist-types/http.d.ts b/bff/node_modules/@smithy/types/dist-types/http.d.ts new file mode 100644 index 0000000..f74e63d --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/http.d.ts @@ -0,0 +1,113 @@ +import type { AbortSignal as DeprecatedAbortSignal } from "./abort"; +import type { URI } from "./uri"; +/** + * @public + * + * @deprecated use {@link EndpointV2} from `@smithy/types`. + */ +export interface Endpoint { + protocol: string; + hostname: string; + port?: number; + path: string; + query?: QueryParameterBag; + headers?: HeaderBag; +} +/** + * @public + * + * Interface an HTTP request class. Contains + * addressing information in addition to standard message properties. + */ +export interface HttpRequest extends HttpMessage, URI { + method: string; +} +/** + * @public + * + * Represents an HTTP message as received in reply to a request. Contains a + * numeric status code in addition to standard message properties. + */ +export interface HttpResponse extends HttpMessage { + statusCode: number; + reason?: string; +} +/** + * @public + * + * Represents an HTTP message with headers and an optional static or streaming + * body. body: ArrayBuffer | ArrayBufferView | string | Uint8Array | Readable | ReadableStream; + */ +export interface HttpMessage { + headers: HeaderBag; + body?: any; +} +/** + * @public + * + * A mapping of query parameter names to strings or arrays of strings, with the + * second being used when a parameter contains a list of values. Value can be set + * to null when query is not in key-value pairs shape + */ +export type QueryParameterBag = Record | null>; +/** + * @public + */ +export type FieldOptions = { + name: string; + kind?: FieldPosition; + values?: string[]; +}; +/** + * @public + */ +export declare enum FieldPosition { + HEADER = 0, + TRAILER = 1 +} +/** + * @public + * + * A mapping of header names to string values. Multiple values for the same + * header should be represented as a single string with values separated by + * `, `. + * + * Keys should be considered case insensitive, even if this is not enforced by a + * particular implementation. For example, given the following HeaderBag, where + * keys differ only in case: + * + * ```json + * { + * 'x-request-date': '2000-01-01T00:00:00Z', + * 'X-Request-Date': '2001-01-01T00:00:00Z' + * } + * ``` + * + * The SDK may at any point during processing remove one of the object + * properties in favor of the other. The headers may or may not be combined, and + * the SDK will not deterministically select which header candidate to use. + */ +export type HeaderBag = Record; +/** + * @public + * + * Represents an HTTP message with headers and an optional static or streaming + * body. bode: ArrayBuffer | ArrayBufferView | string | Uint8Array | Readable | ReadableStream; + */ +export interface HttpMessage { + headers: HeaderBag; + body?: any; +} +/** + * @public + * + * Represents the options that may be passed to an Http Handler. + */ +export interface HttpHandlerOptions { + abortSignal?: AbortSignal | DeprecatedAbortSignal; + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + */ + requestTimeout?: number; +} diff --git a/bff/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts b/bff/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts new file mode 100644 index 0000000..a6c94e8 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/http/httpHandlerInitialization.d.ts @@ -0,0 +1,128 @@ +import type { Agent as hAgent, AgentOptions as hAgentOptions } from "http"; +import type { Agent as hsAgent, AgentOptions as hsAgentOptions } from "https"; +import type { HttpRequest as IHttpRequest } from "../http"; +import type { Logger } from "../logger"; +/** + * + * This type represents an alternate client constructor option for the entry + * "requestHandler". Instead of providing an instance of a requestHandler, the user + * may provide the requestHandler's constructor options for either the + * NodeHttpHandler or FetchHttpHandler. + * + * For other RequestHandlers like HTTP2 or WebSocket, + * constructor parameter passthrough is not currently available. + * + * @public + */ +export type RequestHandlerParams = NodeHttpHandlerOptions | FetchHttpHandlerOptions; +/** + * Represents the http options that can be passed to a node http client. + * @public + */ +export interface NodeHttpHandlerOptions { + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + * Defaults to 0, which disables the timeout. + */ + connectionTimeout?: number; + /** + * The maximum number of milliseconds request & response should take. + * Defaults to 0, which disables the timeout. + * + * If exceeded, a warning will be emitted unless throwOnRequestTimeout=true, + * in which case a TimeoutError will be thrown. + */ + requestTimeout?: number; + /** + * Because requestTimeout was for a long time incorrectly being set as a socket idle timeout, + * users must also opt-in for request timeout thrown errors. + * Without this setting, a breach of the request timeout will be logged as a warning. + */ + throwOnRequestTimeout?: boolean; + /** + * The maximum time in milliseconds that a socket may remain idle before it + * is closed. Defaults to 0, which means no maximum. + * + * This does not affect the server, which may still close the connection due to an idle socket. + */ + socketTimeout?: number; + /** + * Delay before the NodeHttpHandler checks for socket exhaustion, + * and emits a warning if the active sockets and enqueued request count is greater than + * 2x the maxSockets count. + * + * Defaults to connectionTimeout + requestTimeout or 3000ms if those are not set. + */ + socketAcquisitionWarningTimeout?: number; + /** + * You can pass http.Agent or its constructor options. + */ + httpAgent?: hAgent | hAgentOptions; + /** + * You can pass https.Agent or its constructor options. + */ + httpsAgent?: hsAgent | hsAgentOptions; + /** + * Optional logger. + */ + logger?: Logger; +} +/** + * Represents the http options that can be passed to a browser http client. + * @public + */ +export interface FetchHttpHandlerOptions { + /** + * The number of milliseconds a request can take before being automatically + * terminated. + */ + requestTimeout?: number; + /** + * Whether to allow the request to outlive the page. Default value is false. + * + * There may be limitations to the payload size, number of concurrent requests, + * request duration etc. when using keepalive in browsers. + * + * These may change over time, so look for up to date information about + * these limitations before enabling keepalive. + */ + keepAlive?: boolean; + /** + * A string indicating whether credentials will be sent with the request always, never, or + * only when sent to a same-origin URL. + * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials + */ + credentials?: "include" | "omit" | "same-origin" | undefined | string; + /** + * Cache settings for fetch. + * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/cache + */ + cache?: "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload"; + /** + * An optional function that produces additional RequestInit + * parameters for each httpRequest. + * + * This is applied last via merging with Object.assign() and overwrites other values + * set from other sources. + * + * @example + * ```js + * new Client({ + * requestHandler: { + * requestInit(httpRequest) { + * return { cache: "no-store" }; + * } + * } + * }); + * ``` + */ + requestInit?: (httpRequest: IHttpRequest) => RequestInit; +} +declare global { + /** + * interface merging stub. + */ + interface RequestInit { + } +} diff --git a/bff/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts b/bff/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts new file mode 100644 index 0000000..8e814ea --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/identity/apiKeyIdentity.d.ts @@ -0,0 +1,14 @@ +import type { Identity, IdentityProvider } from "../identity/identity"; +/** + * @public + */ +export interface ApiKeyIdentity extends Identity { + /** + * The literal API Key + */ + readonly apiKey: string; +} +/** + * @public + */ +export type ApiKeyIdentityProvider = IdentityProvider; diff --git a/bff/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts b/bff/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts new file mode 100644 index 0000000..2fbcab7 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/identity/awsCredentialIdentity.d.ts @@ -0,0 +1,31 @@ +import type { Identity, IdentityProvider } from "./identity"; +/** + * @public + */ +export interface AwsCredentialIdentity extends Identity { + /** + * AWS access key ID + */ + readonly accessKeyId: string; + /** + * AWS secret access key + */ + readonly secretAccessKey: string; + /** + * A security or session token to use with these credentials. Usually + * present for temporary credentials. + */ + readonly sessionToken?: string; + /** + * AWS credential scope for this set of credentials. + */ + readonly credentialScope?: string; + /** + * AWS accountId. + */ + readonly accountId?: string; +} +/** + * @public + */ +export type AwsCredentialIdentityProvider = IdentityProvider; diff --git a/bff/node_modules/@smithy/types/dist-types/identity/identity.d.ts b/bff/node_modules/@smithy/types/dist-types/identity/identity.d.ts new file mode 100644 index 0000000..c6fd0d1 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/identity/identity.d.ts @@ -0,0 +1,15 @@ +/** + * @public + */ +export interface Identity { + /** + * A `Date` when the identity or credential will no longer be accepted. + */ + readonly expiration?: Date; +} +/** + * @public + */ +export interface IdentityProvider { + (identityProperties?: Record): Promise; +} diff --git a/bff/node_modules/@smithy/types/dist-types/identity/index.d.ts b/bff/node_modules/@smithy/types/dist-types/identity/index.d.ts new file mode 100644 index 0000000..3360320 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/identity/index.d.ts @@ -0,0 +1,4 @@ +export * from "./apiKeyIdentity"; +export * from "./awsCredentialIdentity"; +export * from "./identity"; +export * from "./tokenIdentity"; diff --git a/bff/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts b/bff/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts new file mode 100644 index 0000000..37bb169 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/identity/tokenIdentity.d.ts @@ -0,0 +1,14 @@ +import type { Identity, IdentityProvider } from "../identity/identity"; +/** + * @internal + */ +export interface TokenIdentity extends Identity { + /** + * The literal token string + */ + readonly token: string; +} +/** + * @internal + */ +export type TokenIdentityProvider = IdentityProvider; diff --git a/bff/node_modules/@smithy/types/dist-types/index.d.ts b/bff/node_modules/@smithy/types/dist-types/index.d.ts new file mode 100644 index 0000000..2f1f25c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/index.d.ts @@ -0,0 +1,43 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-payload-input-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./crypto"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./endpoints"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./http"; +export * from "./http/httpHandlerInitialization"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./response"; +export * from "./retry"; +export * from "./schema/schema"; +export * from "./schema/traits"; +export * from "./schema/schema-deprecated"; +export * from "./schema/sentinels"; +export * from "./schema/static-schemas"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./streaming-payload/streaming-blob-common-types"; +export * from "./streaming-payload/streaming-blob-payload-input-types"; +export * from "./streaming-payload/streaming-blob-payload-output-types"; +export * from "./transfer"; +export * from "./transform/client-payload-blob-type-narrow"; +export * from "./transform/mutable"; +export * from "./transform/no-undefined"; +export * from "./transform/type-transform"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/bff/node_modules/@smithy/types/dist-types/logger.d.ts b/bff/node_modules/@smithy/types/dist-types/logger.d.ts new file mode 100644 index 0000000..f66a664 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/logger.d.ts @@ -0,0 +1,13 @@ +/** + * @public + * + * Represents a logger object that is available in HandlerExecutionContext + * throughout the middleware stack. + */ +export interface Logger { + trace?: (...content: any[]) => void; + debug: (...content: any[]) => void; + info: (...content: any[]) => void; + warn: (...content: any[]) => void; + error: (...content: any[]) => void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/middleware.d.ts b/bff/node_modules/@smithy/types/dist-types/middleware.d.ts new file mode 100644 index 0000000..cc20098 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/middleware.d.ts @@ -0,0 +1,534 @@ +import type { AuthScheme, HttpAuthDefinition } from "./auth/auth"; +import type { SelectedHttpAuthScheme } from "./auth/HttpAuthScheme"; +import type { Command } from "./command"; +import type { EndpointV2 } from "./endpoint"; +import type { SmithyFeatures } from "./feature-ids"; +import type { Logger } from "./logger"; +import type { UserAgent } from "./util"; +/** + * @public + */ +export interface InitializeHandlerArguments { + /** + * User input to a command. Reflects the userland representation of the + * union of data types the command can effectively handle. + */ + input: Input; +} +/** + * @public + */ +export interface InitializeHandlerOutput extends DeserializeHandlerOutput { + output: Output; +} +/** + * @public + */ +export interface SerializeHandlerArguments extends InitializeHandlerArguments { + /** + * The user input serialized as a request object. The request object is unknown, + * so you cannot modify it directly. When work with request, you need to guard its + * type to e.g. HttpRequest with 'instanceof' operand + * + * During the build phase of the execution of a middleware stack, a built + * request may or may not be available. + */ + request?: unknown; +} +/** + * @public + */ +export interface SerializeHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface BuildHandlerArguments extends FinalizeHandlerArguments { +} +/** + * @public + */ +export interface BuildHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface FinalizeHandlerArguments extends SerializeHandlerArguments { + /** + * The user input serialized as a request. + */ + request: unknown; +} +/** + * @public + */ +export interface FinalizeHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface DeserializeHandlerArguments extends FinalizeHandlerArguments { +} +/** + * @public + */ +export interface DeserializeHandlerOutput { + /** + * The raw response object from runtime is deserialized to structured output object. + * The response object is unknown so you cannot modify it directly. When work with + * response, you need to guard its type to e.g. HttpResponse with 'instanceof' operand. + * + * During the deserialize phase of the execution of a middleware stack, a deserialized + * response may or may not be available + */ + response: unknown; + output?: Output; +} +/** + * @public + */ +export interface InitializeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: InitializeHandlerArguments): Promise>; +} +/** + * @public + */ +export type Handler = InitializeHandler; +/** + * @public + */ +export interface SerializeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: SerializeHandlerArguments): Promise>; +} +/** + * @public + */ +export interface FinalizeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: FinalizeHandlerArguments): Promise>; +} +/** + * @public + */ +export interface BuildHandler { + (args: BuildHandlerArguments): Promise>; +} +/** + * @public + */ +export interface DeserializeHandler { + (args: DeserializeHandlerArguments): Promise>; +} +/** + * @public + * + * A factory function that creates functions implementing the `Handler` + * interface. + */ +export interface InitializeMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: InitializeHandler, context: HandlerExecutionContext): InitializeHandler; +} +/** + * @public + * + * A factory function that creates functions implementing the `BuildHandler` + * interface. + */ +export interface SerializeMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: SerializeHandler, context: HandlerExecutionContext): SerializeHandler; +} +/** + * @public + * + * A factory function that creates functions implementing the `FinalizeHandler` + * interface. + */ +export interface FinalizeRequestMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: FinalizeHandler, context: HandlerExecutionContext): FinalizeHandler; +} +/** + * @public + */ +export interface BuildMiddleware { + (next: BuildHandler, context: HandlerExecutionContext): BuildHandler; +} +/** + * @public + */ +export interface DeserializeMiddleware { + (next: DeserializeHandler, context: HandlerExecutionContext): DeserializeHandler; +} +/** + * @public + */ +export type MiddlewareType = InitializeMiddleware | SerializeMiddleware | BuildMiddleware | FinalizeRequestMiddleware | DeserializeMiddleware; +/** + * @public + * + * A factory function that creates the terminal handler atop which a middleware + * stack sits. + */ +export interface Terminalware { + (context: HandlerExecutionContext): DeserializeHandler; +} +/** + * @public + */ +export type Step = "initialize" | "serialize" | "build" | "finalizeRequest" | "deserialize"; +/** + * @public + */ +export type Priority = "high" | "normal" | "low"; +/** + * @public + */ +export interface HandlerOptions { + /** + * Handlers are ordered using a "step" that describes the stage of command + * execution at which the handler will be executed. The available steps are: + * + * - initialize: The input is being prepared. Examples of typical + * initialization tasks include injecting default options computing + * derived parameters. + * - serialize: The input is complete and ready to be serialized. Examples + * of typical serialization tasks include input validation and building + * an HTTP request from user input. + * - build: The input has been serialized into an HTTP request, but that + * request may require further modification. Any request alterations + * will be applied to all retries. Examples of typical build tasks + * include injecting HTTP headers that describe a stable aspect of the + * request, such as `Content-Length` or a body checksum. + * - finalizeRequest: The request is being prepared to be sent over the wire. The + * request in this stage should already be semantically complete and + * should therefore only be altered as match the recipient's + * expectations. Examples of typical finalization tasks include request + * signing and injecting hop-by-hop headers. + * - deserialize: The response has arrived, the middleware here will deserialize + * the raw response object to structured response + * + * Unlike initialization and build handlers, which are executed once + * per operation execution, finalization and deserialize handlers will be + * executed foreach HTTP request sent. + * + * @defaultValue 'initialize' + */ + step?: Step; + /** + * A list of strings to any that identify the general purpose or important + * characteristics of a given handler. + */ + tags?: Array; + /** + * A unique name to refer to a middleware + */ + name?: string; + /** + * @internal + * Aliases allows for middleware to be found by multiple names besides {@link HandlerOptions.name}. + * This allows for references to replaced middleware to continue working, e.g. replacing + * multiple auth-specific middleware with a single generic auth middleware. + */ + aliases?: Array; + /** + * A flag to override the existing middleware with the same name. Without + * setting it, adding middleware with duplicated name will throw an exception. + * @internal + */ + override?: boolean; +} +/** + * @public + */ +export interface AbsoluteLocation { + /** + * By default middleware will be added to individual step in un-guaranteed order. + * In the case that + * + * @defaultValue 'normal' + */ + priority?: Priority; +} +/** + * @public + */ +export type Relation = "before" | "after"; +/** + * @public + */ +export interface RelativeLocation { + /** + * Specify the relation to be before or after a know middleware. + */ + relation: Relation; + /** + * A known middleware name to indicate inserting middleware's location. + */ + toMiddleware: string; +} +/** + * @public + */ +export type RelativeMiddlewareOptions = RelativeLocation & Omit; +/** + * @public + */ +export interface InitializeHandlerOptions extends HandlerOptions { + step?: "initialize"; +} +/** + * @public + */ +export interface SerializeHandlerOptions extends HandlerOptions { + step: "serialize"; +} +/** + * @public + */ +export interface BuildHandlerOptions extends HandlerOptions { + step: "build"; +} +/** + * @public + */ +export interface FinalizeRequestHandlerOptions extends HandlerOptions { + step: "finalizeRequest"; +} +/** + * @public + */ +export interface DeserializeHandlerOptions extends HandlerOptions { + step: "deserialize"; +} +/** + * @public + * + * A stack storing middleware. It can be resolved into a handler. It supports 2 + * approaches for adding middleware: + * 1. Adding middleware to specific step with `add()`. The order of middleware + * added into same step is determined by order of adding them. If one middleware + * needs to be executed at the front of the step or at the end of step, set + * `priority` options to `high` or `low`. + * 2. Adding middleware to location relative to known middleware with `addRelativeTo()`. + * This is useful when given middleware must be executed before or after specific + * middleware(`toMiddleware`). You can add a middleware relatively to another + * middleware which also added relatively. But eventually, this relative middleware + * chain **must** be 'anchored' by a middleware that added using `add()` API + * with absolute `step` and `priority`. This mothod will throw if specified + * `toMiddleware` is not found. + */ +export interface MiddlewareStack extends Pluggable { + /** + * Add middleware to the stack to be executed during the "initialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: InitializeMiddleware, options?: InitializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "serialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: SerializeMiddleware, options: SerializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "build" step, + * optionally specifying a priority, tags and name + */ + add(middleware: BuildMiddleware, options: BuildHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "finalizeRequest" step, + * optionally specifying a priority, tags and name + */ + add(middleware: FinalizeRequestMiddleware, options: FinalizeRequestHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "deserialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: DeserializeMiddleware, options: DeserializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to a stack position before or after a known middleware,optionally + * specifying name and tags. + */ + addRelativeTo(middleware: MiddlewareType, options: RelativeMiddlewareOptions): void; + /** + * Apply a customization function to mutate the middleware stack, often + * used for customizations that requires mutating multiple middleware. + */ + use(pluggable: Pluggable): void; + /** + * Create a shallow clone of this stack. Step bindings and handler priorities + * and tags are preserved in the copy. + */ + clone(): MiddlewareStack; + /** + * Removes middleware from the stack. + * + * If a string is provided, it will be treated as middleware name. If a middleware + * is inserted with the given name, it will be removed. + * + * If a middleware class is provided, all usages thereof will be removed. + */ + remove(toRemove: MiddlewareType | string): boolean; + /** + * Removes middleware that contains given tag + * + * Multiple middleware will potentially be removed + */ + removeByTag(toRemove: string): boolean; + /** + * Create a stack containing the middlewares in this stack as well as the + * middlewares in the `from` stack. Neither source is modified, and step + * bindings and handler priorities and tags are preserved in the copy. + */ + concat(from: MiddlewareStack): MiddlewareStack; + /** + * Returns a list of the current order of middleware in the stack. + * This does not execute the middleware functions, nor does it + * provide a reference to the stack itself. + */ + identify(): string[]; + /** + * @internal + * + * When an operation is called using this stack, + * it will log its list of middleware to the console using + * the identify function. + * + * @param toggle - set whether to log on resolve. + * If no argument given, returns the current value. + */ + identifyOnResolve(toggle?: boolean): boolean; + /** + * Builds a single handler function from zero or more middleware classes and + * a core handler. The core handler is meant to send command objects to AWS + * services and return promises that will resolve with the operation result + * or be rejected with an error. + * + * When a composed handler is invoked, the arguments will pass through all + * middleware in a defined order, and the return from the innermost handler + * will pass through all middleware in the reverse of that order. + */ + resolve(handler: DeserializeHandler, context: HandlerExecutionContext): InitializeHandler; +} +/** + * @internal + */ +export declare const SMITHY_CONTEXT_KEY = "__smithy_context"; +/** + * @public + * + * Data and helper objects that are not expected to change from one execution of + * a composed handler to another. + */ +export interface HandlerExecutionContext { + /** + * A logger that may be invoked by any handler during execution of an + * operation. + */ + logger?: Logger; + /** + * Name of the service the operation is being sent to. + */ + clientName?: string; + /** + * Name of the operation being executed. + */ + commandName?: string; + /** + * Additional user agent that inferred by middleware. It can be used to save + * the internal user agent sections without overriding the `customUserAgent` + * config in clients. + */ + userAgent?: UserAgent; + /** + * Resolved by the endpointMiddleware function of `@smithy/middleware-endpoint` + * in the serialization stage. + */ + endpointV2?: EndpointV2; + /** + * Set at the same time as endpointV2. + */ + authSchemes?: AuthScheme[]; + /** + * The current auth configuration that has been set by any auth middleware and + * that will prevent from being set more than once. + */ + currentAuthConfig?: HttpAuthDefinition; + /** + * @deprecated do not extend this field, it is a carryover from AWS SDKs. + * Used by DynamoDbDocumentClient. + */ + dynamoDbDocumentClientOptions?: Partial<{ + overrideInputFilterSensitiveLog(...args: any[]): string | void; + overrideOutputFilterSensitiveLog(...args: any[]): string | void; + }>; + /** + * @internal + * Context for Smithy properties. + */ + [SMITHY_CONTEXT_KEY]?: { + service?: string; + operation?: string; + commandInstance?: Command; + selectedHttpAuthScheme?: SelectedHttpAuthScheme; + features?: SmithyFeatures; + /** + * @deprecated + * Do not assign arbitrary members to the Smithy Context, + * fields should be explicitly declared here to avoid collisions. + */ + [key: string]: unknown; + }; + /** + * @deprecated + * Do not assign arbitrary members to the context, since + * they can interfere with existing functionality. + * + * Additional members should instead be declared on the SMITHY_CONTEXT_KEY + * or other reserved keys. + */ + [key: string]: any; +} +/** + * @public + */ +export interface Pluggable { + /** + * A function that mutate the passed in middleware stack. Functions implementing + * this interface can add, remove, modify existing middleware stack from clients + * or commands + */ + applyToStack: (stack: MiddlewareStack) => void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/pagination.d.ts b/bff/node_modules/@smithy/types/dist-types/pagination.d.ts new file mode 100644 index 0000000..e10fdda --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/pagination.d.ts @@ -0,0 +1,33 @@ +import type { Client } from "./client"; +import type { Command } from "./command"; +/** + * @public + * + * Expected type definition of a paginator. + */ +export type Paginator = AsyncGenerator; +/** + * @public + * + * Expected paginator configuration passed to an operation. Services will extend + * this interface definition and may type client further. + */ +export interface PaginationConfiguration { + client: Client; + pageSize?: number; + startingToken?: any; + /** + * For some APIs, such as CloudWatchLogs events, the next page token will always + * be present. + * + * When true, this config field will have the paginator stop when the token doesn't change + * instead of when it is not present. + */ + stopOnSameToken?: boolean; + /** + * @param command - reference to the instantiated command. This callback is executed + * prior to sending the command with the paginator's client. + * @returns the original command or a replacement, defaulting to the original command object. + */ + withCommand?: (command: Command) => typeof command | undefined; +} diff --git a/bff/node_modules/@smithy/types/dist-types/profile.d.ts b/bff/node_modules/@smithy/types/dist-types/profile.d.ts new file mode 100644 index 0000000..b7885d9 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/profile.d.ts @@ -0,0 +1,30 @@ +/** + * @public + */ +export declare enum IniSectionType { + PROFILE = "profile", + SSO_SESSION = "sso-session", + SERVICES = "services" +} +/** + * @public + */ +export type IniSection = Record; +/** + * @public + * + * @deprecated Please use {@link IniSection} + */ +export interface Profile extends IniSection { +} +/** + * @public + */ +export type ParsedIniData = Record; +/** + * @public + */ +export interface SharedConfigFiles { + credentialsFile: ParsedIniData; + configFile: ParsedIniData; +} diff --git a/bff/node_modules/@smithy/types/dist-types/response.d.ts b/bff/node_modules/@smithy/types/dist-types/response.d.ts new file mode 100644 index 0000000..afcfe8f --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/response.d.ts @@ -0,0 +1,40 @@ +/** + * @public + */ +export interface ResponseMetadata { + /** + * The status code of the last HTTP response received for this operation. + */ + httpStatusCode?: number; + /** + * A unique identifier for the last request sent for this operation. Often + * requested by AWS service teams to aid in debugging. + */ + requestId?: string; + /** + * A secondary identifier for the last request sent. Used for debugging. + */ + extendedRequestId?: string; + /** + * A tertiary identifier for the last request sent. Used for debugging. + */ + cfId?: string; + /** + * The number of times this operation was attempted. + */ + attempts?: number; + /** + * The total amount of time (in milliseconds) that was spent waiting between + * retry attempts. + */ + totalRetryDelay?: number; +} +/** + * @public + */ +export interface MetadataBearer { + /** + * Metadata pertaining to this request. + */ + $metadata: ResponseMetadata; +} diff --git a/bff/node_modules/@smithy/types/dist-types/retry.d.ts b/bff/node_modules/@smithy/types/dist-types/retry.d.ts new file mode 100644 index 0000000..c8f3a5d --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/retry.d.ts @@ -0,0 +1,133 @@ +import type { SdkError } from "./shapes"; +/** + * @public + */ +export type RetryErrorType = +/** + * This is a connection level error such as a socket timeout, socket connect + * error, tls negotiation timeout etc... + * Typically these should never be applied for non-idempotent request types + * since in this scenario, it's impossible to know whether the operation had + * a side effect on the server. + */ +"TRANSIENT" +/** + * This is an error where the server explicitly told the client to back off, + * such as a 429 or 503 Http error. + */ + | "THROTTLING" +/** + * This is a server error that isn't explicitly throttling but is considered + * by the client to be something that should be retried. + */ + | "SERVER_ERROR" +/** + * Doesn't count against any budgets. This could be something like a 401 + * challenge in Http. + */ + | "CLIENT_ERROR"; +/** + * @public + */ +export interface RetryErrorInfo { + /** + * The error thrown during the initial request, if available. + */ + error?: SdkError; + errorType: RetryErrorType; + /** + * Protocol hint. This could come from Http's 'retry-after' header or + * something from MQTT or any other protocol that has the ability to convey + * retry info from a peer. + * + * The Date after which a retry should be attempted. + */ + retryAfterHint?: Date; +} +/** + * @public + */ +export interface RetryBackoffStrategy { + /** + * @returns the number of milliseconds to wait before retrying an action. + */ + computeNextBackoffDelay(retryAttempt: number): number; +} +/** + * @public + */ +export interface StandardRetryBackoffStrategy extends RetryBackoffStrategy { + /** + * Sets the delayBase used to compute backoff delays. + * @param delayBase - + */ + setDelayBase(delayBase: number): void; +} +/** + * @public + */ +export interface RetryStrategyOptions { + backoffStrategy: RetryBackoffStrategy; + maxRetriesBase: number; +} +/** + * @public + */ +export interface RetryToken { + /** + * @returns the current count of retry. + */ + getRetryCount(): number; + /** + * @returns the number of milliseconds to wait before retrying an action. + */ + getRetryDelay(): number; +} +/** + * @public + */ +export interface StandardRetryToken extends RetryToken { + /** + * @returns the cost of the last retry attempt. + */ + getRetryCost(): number | undefined; +} +/** + * @public + */ +export interface RetryStrategyV2 { + /** + * Called before any retries (for the first call to the operation). It either + * returns a retry token or an error upon the failure to acquire a token prior. + * + * tokenScope is arbitrary and out of scope for this component. However, + * adding it here offers us a lot of future flexibility for outage detection. + * For example, it could be "us-east-1" on a shared retry strategy, or + * "us-west-2-c:dynamodb". + */ + acquireInitialRetryToken(retryTokenScope: string): Promise; + /** + * After a failed operation call, this function is invoked to refresh the + * retryToken returned by acquireInitialRetryToken(). This function can + * either choose to allow another retry and send a new or updated token, + * or reject the retry attempt and report the error either in an exception + * or returning an error. + */ + refreshRetryTokenForRetry(tokenToRenew: RetryToken, errorInfo: RetryErrorInfo): Promise; + /** + * Upon successful completion of the operation, this function is called + * to record that the operation was successful. + */ + recordSuccess(token: RetryToken): void; +} +/** + * @public + */ +export type ExponentialBackoffJitterType = "DEFAULT" | "NONE" | "FULL" | "DECORRELATED"; +/** + * @public + */ +export interface ExponentialBackoffStrategyOptions { + jitterType: ExponentialBackoffJitterType; + backoffScaleValue?: number; +} diff --git a/bff/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts b/bff/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts new file mode 100644 index 0000000..f3e94e2 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/schema/schema-deprecated.d.ts @@ -0,0 +1,143 @@ +import type { EndpointV2 } from "../endpoint"; +import type { HandlerExecutionContext } from "../middleware"; +import type { MetadataBearer } from "../response"; +import type { EndpointBearer, SerdeFunctions } from "../serde"; +import type { ConfigurableSerdeContext, NormalizedSchema, SchemaTraits, SimpleSchema, UnitSchema } from "./schema"; +import type { StaticSchema } from "./static-schemas"; +/** + * A schema is an object or value that describes how to serialize/deserialize data. + * @internal + * @deprecated use $Schema + */ +export type Schema = UnitSchema | TraitsSchema | SimpleSchema | ListSchema | MapSchema | StructureSchema | MemberSchema | OperationSchema | StaticSchema | NormalizedSchema; +/** + * A schema "reference" is either a schema or a function that + * provides a schema. This is useful for lazy loading, and to allow + * code generation to define schema out of dependency order. + * @internal + * @deprecated use $SchemaRef + */ +export type SchemaRef = Schema | (() => Schema); +/** + * A schema that has traits. + * + * @internal + * @deprecated use static schema. + */ +export interface TraitsSchema { + namespace: string; + name: string; + traits: SchemaTraits; +} +/** + * Indicates the schema is a member of a parent Structure schema. + * It may also have a set of member traits distinct from its target shape's traits. + * @internal + * @deprecated use $MemberSchema + */ +export type MemberSchema = [SchemaRef, SchemaTraits]; +/** + * Schema for the structure aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface StructureSchema extends TraitsSchema { + memberNames: string[]; + memberList: SchemaRef[]; + /** + * @deprecated structure member iteration will be linear on the memberNames and memberList arrays. + * It can be collected into a hashmap form on an ad-hoc basis, but will not initialize as such. + */ + members?: Record | undefined; +} +/** + * Schema for the list aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface ListSchema extends TraitsSchema { + valueSchema: SchemaRef; +} +/** + * Schema for the map aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface MapSchema extends TraitsSchema { + keySchema: SchemaRef; + valueSchema: SchemaRef; +} +/** + * Schema for an operation. + * @internal + * @deprecated use StaticOperationSchema or $OperationSchema + */ +export interface OperationSchema { + namespace: string; + name: string; + traits: SchemaTraits; + input: SchemaRef; + output: SchemaRef; +} +/** + * Turns a serialization into a data object. + * @internal + * @deprecated use $ShapeDeserializer + */ +export interface ShapeDeserializer extends ConfigurableSerdeContext { + /** + * Optionally async. + */ + read(schema: Schema, data: SerializationType): any | Promise; +} +/** + * Turns a data object into a serialization. + * @internal + * @deprecated use $ShapeSerializer + */ +export interface ShapeSerializer extends ConfigurableSerdeContext { + write(schema: Schema, value: unknown): void; + flush(): SerializationType; +} +/** + * A codec creates serializers and deserializers for some format such as JSON, XML, or CBOR. + * + * @internal + * @deprecated use $Codec + */ +export interface Codec extends ConfigurableSerdeContext { + createSerializer(): ShapeSerializer; + createDeserializer(): ShapeDeserializer; +} +/** + * A client protocol defines how to convert a message (e.g. HTTP request/response) to and from a data object. + * @internal + * @deprecated use $ClientProtocol + */ +export interface ClientProtocol extends ConfigurableSerdeContext { + /** + * @returns the Smithy qualified shape id. + */ + getShapeId(): string; + getRequestType(): { + new (...args: any[]): Request; + }; + getResponseType(): { + new (...args: any[]): Response; + }; + /** + * @returns the payload codec if the requests/responses have a symmetric format. + * It otherwise may return null. + */ + getPayloadCodec(): Codec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: Request, endpoint: EndpointV2): Request; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: Response): Promise; +} +/** + * @public + * @deprecated use $ClientProtocolCtor. + */ +export interface ClientProtocolCtor { + new (args: any): ClientProtocol; +} diff --git a/bff/node_modules/@smithy/types/dist-types/schema/schema.d.ts b/bff/node_modules/@smithy/types/dist-types/schema/schema.d.ts new file mode 100644 index 0000000..9efce5e --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/schema/schema.d.ts @@ -0,0 +1,236 @@ +import type { EndpointV2 } from "../endpoint"; +import type { HandlerExecutionContext } from "../middleware"; +import type { MetadataBearer } from "../response"; +import type { EndpointBearer, SerdeFunctions } from "../serde"; +import type { BigDecimalSchema, BigIntegerSchema, BlobSchema, BooleanSchema, DocumentSchema, NumericSchema, StreamingBlobSchema, StringSchema, TimestampDateTimeSchema, TimestampDefaultSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "./sentinels"; +import type { StaticSchema } from "./static-schemas"; +import type { TraitBitVector } from "./traits"; +/** + * A schema is an object or value that describes how to serialize/deserialize data. + * @public + */ +export type $Schema = UnitSchema | SimpleSchema | $MemberSchema | StaticSchema | NormalizedSchema; +/** + * Traits attached to schema objects. + * + * When this is a number, it refers to a pre-allocated + * trait combination that is equivalent to one of the + * object type's variations. + * + * @public + */ +export type SchemaTraits = TraitBitVector | SchemaTraitsObject; +/** + * Simple schemas are those corresponding to simple Smithy types. + * @see https://smithy.io/2.0/spec/simple-types.html + * @public + */ +export type SimpleSchema = BlobSchemas | StringSchema | BooleanSchema | NumericSchema | BigIntegerSchema | BigDecimalSchema | DocumentSchema | TimestampSchemas | number; +/** + * Sentinel value for Timestamp schema. + * "Default" means unspecified and to use the protocol serializer's default format. + * + * @public + */ +export type TimestampSchemas = TimestampDefaultSchema | TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; +/** + * Sentinel values for Blob schema. + * @public + */ +export type BlobSchemas = BlobSchema | StreamingBlobSchema; +/** + * Signal value for the Smithy void value. Typically used for + * operation input and outputs. + * + * @public + */ +export type UnitSchema = "unit"; +/** + * See https://smithy.io/2.0/trait-index.html for individual definitions. + * + * @public + */ +export type SchemaTraitsObject = { + idempotent?: 1; + idempotencyToken?: 1; + sensitive?: 1; + sparse?: 1; + /** + * timestampFormat is expressed by the schema sentinel values of 4, 5, 6, and 7, + * and not contained in trait objects. + * @deprecated use schema value. + */ + timestampFormat?: never; + httpLabel?: 1; + httpHeader?: string; + httpQuery?: string; + httpPrefixHeaders?: string; + httpQueryParams?: 1; + httpPayload?: 1; + /** + * [method, path, statusCode] + */ + http?: [string, string, number]; + httpResponseCode?: 1; + /** + * [hostPrefix] + */ + endpoint?: [string]; + xmlAttribute?: 1; + xmlName?: string; + /** + * [prefix, uri] + */ + xmlNamespace?: [string, string]; + xmlFlattened?: 1; + jsonName?: string; + mediaType?: string; + error?: "client" | "server"; + streaming?: 1; + eventHeader?: 1; + eventPayload?: 1; + [traitName: string]: unknown; +}; +/** + * Indicates the schema is a member of a parent Structure schema. + * It may also have a set of member traits distinct from its target shape's traits. + * @public + */ +export type $MemberSchema = [$SchemaRef, SchemaTraits]; +/** + * Schema for an operation. + * @public + */ +export interface $OperationSchema { + namespace: string; + name: string; + traits: SchemaTraits; + input: $SchemaRef; + output: $SchemaRef; +} +/** + * Normalization wrapper for various schema data objects. + * @public + */ +export interface NormalizedSchema { + getSchema(): $Schema; + getName(): string | undefined; + isMemberSchema(): boolean; + isListSchema(): boolean; + isMapSchema(): boolean; + isStructSchema(): boolean; + isBlobSchema(): boolean; + isTimestampSchema(): boolean; + isStringSchema(): boolean; + isBooleanSchema(): boolean; + isNumericSchema(): boolean; + isBigIntegerSchema(): boolean; + isBigDecimalSchema(): boolean; + isStreaming(): boolean; + getMergedTraits(): SchemaTraitsObject; + getMemberTraits(): SchemaTraitsObject; + getOwnTraits(): SchemaTraitsObject; + /** + * For list/set/map. + */ + getValueSchema(): NormalizedSchema; + /** + * For struct/union. + */ + getMemberSchema(member: string): NormalizedSchema | undefined; + structIterator(): Generator<[string, NormalizedSchema], undefined, undefined>; +} +/** + * A schema "reference" is either a schema or a function that + * provides a schema. This is useful for lazy loading, and to allow + * code generation to define schema out of dependency order. + * @public + */ +export type $SchemaRef = $Schema | (() => $Schema); +/** + * A codec creates serializers and deserializers for some format such as JSON, XML, or CBOR. + * + * @public + */ +export interface $Codec extends ConfigurableSerdeContext { + createSerializer(): $ShapeSerializer; + createDeserializer(): $ShapeDeserializer; +} +/** + * Configuration for codecs. Different protocols may share codecs, but require different behaviors from them. + * + * @public + */ +export type CodecSettings = { + timestampFormat: { + /** + * Whether to use member timestamp format traits. + */ + useTrait: boolean; + /** + * Default timestamp format. + */ + default: TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; + }; + /** + * Whether to use HTTP binding traits. + */ + httpBindings?: boolean; +}; +/** + * Turns a serialization into a data object. + * @public + */ +export interface $ShapeDeserializer extends ConfigurableSerdeContext { + /** + * Optionally async. + */ + read(schema: $Schema, data: SerializationType): any | Promise; +} +/** + * Turns a data object into a serialization. + * @public + */ +export interface $ShapeSerializer extends ConfigurableSerdeContext { + write(schema: $Schema, value: unknown): void; + flush(): SerializationType; +} +/** + * A client protocol defines how to convert a message (e.g. HTTP request/response) to and from a data object. + * @public + */ +export interface $ClientProtocol extends ConfigurableSerdeContext { + /** + * @returns the Smithy qualified shape id. + */ + getShapeId(): string; + getRequestType(): { + new (...args: any[]): Request; + }; + getResponseType(): { + new (...args: any[]): Response; + }; + /** + * @returns the payload codec if the requests/responses have a symmetric format. + * It otherwise may return null. + */ + getPayloadCodec(): $Codec; + serializeRequest(operationSchema: $OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: Request, endpoint: EndpointV2): Request; + deserializeResponse(operationSchema: $OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: Response): Promise; +} +/** + * @public + */ +export interface $ClientProtocolCtor { + new (args: any): $ClientProtocol; +} +/** + * Allows a protocol, codec, or serde utility to accept the serdeContext + * from a client configuration or request/response handlerExecutionContext. + * + * @public + */ +export interface ConfigurableSerdeContext { + setSerdeContext(serdeContext: SerdeFunctions): void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts b/bff/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts new file mode 100644 index 0000000..939e807 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/schema/sentinels.d.ts @@ -0,0 +1,65 @@ +/** + * The blob Smithy type, in JS as Uint8Array and other representations + * such as Buffer, string, or Readable(Stream) depending on circumstances. + * @public + */ +export type BlobSchema = 21; +/** + * @public + */ +export type StreamingBlobSchema = 42; +/** + * @public + */ +export type BooleanSchema = 2; +/** + * Includes string and enum Smithy types. + * @public + */ +export type StringSchema = 0; +/** + * Includes all numeric Smithy types except bigInteger and bigDecimal. + * byte, short, integer, long, float, double, intEnum. + * + * @public + */ +export type NumericSchema = 1; +/** + * @public + */ +export type BigIntegerSchema = 17; +/** + * @public + */ +export type BigDecimalSchema = 19; +/** + * @public + */ +export type DocumentSchema = 15; +/** + * Smithy type timestamp, in JS as native Date object. + * @public + */ +export type TimestampDefaultSchema = 4; +/** + * @public + */ +export type TimestampDateTimeSchema = 5; +/** + * @public + */ +export type TimestampHttpDateSchema = 6; +/** + * @public + */ +export type TimestampEpochSecondsSchema = 7; +/** + * Additional bit indicating the type is a list. + * @public + */ +export type ListSchemaModifier = 64; +/** + * Additional bit indicating the type is a map. + * @public + */ +export type MapSchemaModifier = 128; diff --git a/bff/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts b/bff/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts new file mode 100644 index 0000000..826db2a --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/schema/static-schemas.d.ts @@ -0,0 +1,99 @@ +import type { $SchemaRef, SchemaTraits } from "../schema/schema"; +/** + * @public + */ +export type StaticSchemaIdSimple = 0; +/** + * @public + */ +export type StaticSchemaIdList = 1; +/** + * @public + */ +export type StaticSchemaIdMap = 2; +/** + * @public + */ +export type StaticSchemaIdStruct = 3; +/** + * @public + */ +export type StaticSchemaIdUnion = 4; +/** + * @public + */ +export type StaticSchemaIdError = -3; +/** + * @public + */ +export type StaticSchemaIdOperation = 9; +/** + * @public + */ +export type StaticSchema = StaticSimpleSchema | StaticListSchema | StaticMapSchema | StaticStructureSchema | StaticUnionSchema | StaticErrorSchema | StaticOperationSchema; +/** + * @public + */ +export type ShapeName = string; +/** + * @public + */ +export type ShapeNamespace = string; +/** + * @public + */ +export type StaticSimpleSchema = [StaticSchemaIdSimple, ShapeNamespace, ShapeName, SchemaTraits, $SchemaRef]; +/** + * @public + */ +export type StaticListSchema = [StaticSchemaIdList, ShapeNamespace, ShapeName, SchemaTraits, $SchemaRef]; +/** + * @public + */ +export type StaticMapSchema = [StaticSchemaIdMap, ShapeNamespace, ShapeName, SchemaTraits, $SchemaRef, $SchemaRef]; +/** + * @public + */ +export type StaticStructureSchema = [ + StaticSchemaIdStruct, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[], + number? +]; +/** + * @public + */ +export type StaticUnionSchema = [ + StaticSchemaIdUnion, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[] +]; +/** + * @public + */ +export type StaticErrorSchema = [ + StaticSchemaIdError, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[], + number? +]; +/** + * @public + */ +export type StaticOperationSchema = [ + StaticSchemaIdOperation, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef, + $SchemaRef +]; diff --git a/bff/node_modules/@smithy/types/dist-types/schema/traits.d.ts b/bff/node_modules/@smithy/types/dist-types/schema/traits.d.ts new file mode 100644 index 0000000..0825f81 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/schema/traits.d.ts @@ -0,0 +1,46 @@ +/** + * A bitvector representing a traits object. + * + * Vector index to trait: + * 0 - httpLabel + * 1 - idempotent + * 2 - idempotencyToken + * 3 - sensitive + * 4 - httpPayload + * 5 - httpResponseCode + * 6 - httpQueryParams + * + * The singular trait values are enumerated for quick identification, but + * combination values are left to the `number` union type. + * + * @public + */ +export type TraitBitVector = HttpLabelBitMask | IdempotentBitMask | IdempotencyTokenBitMask | SensitiveBitMask | HttpPayloadBitMask | HttpResponseCodeBitMask | HttpQueryParamsBitMask | number; +/** + * @public + */ +export type HttpLabelBitMask = 1; +/** + * @public + */ +export type IdempotentBitMask = 2; +/** + * @public + */ +export type IdempotencyTokenBitMask = 4; +/** + * @public + */ +export type SensitiveBitMask = 8; +/** + * @public + */ +export type HttpPayloadBitMask = 16; +/** + * @public + */ +export type HttpResponseCodeBitMask = 32; +/** + * @public + */ +export type HttpQueryParamsBitMask = 64; diff --git a/bff/node_modules/@smithy/types/dist-types/serde.d.ts b/bff/node_modules/@smithy/types/dist-types/serde.d.ts new file mode 100644 index 0000000..2f5e5e1 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/serde.d.ts @@ -0,0 +1,114 @@ +import type { Endpoint } from "./http"; +import type { $ClientProtocol } from "./schema/schema"; +import type { RequestHandler } from "./transfer"; +import type { Decoder, Encoder, Provider } from "./util"; +/** + * @public + * + * Interface for object requires an Endpoint set. + */ +export interface EndpointBearer { + endpoint: Provider; +} +/** + * @public + */ +export interface StreamCollector { + /** + * A function that converts a stream into an array of bytes. + * + * @param stream - The low-level native stream from browser or Nodejs runtime + */ + (stream: any): Promise; +} +/** + * @public + * + * Request and Response serde util functions and settings for AWS services + */ +export interface SerdeContext extends SerdeFunctions, EndpointBearer { + requestHandler: RequestHandler; + disableHostPrefix: boolean; + protocol?: $ClientProtocol; +} +/** + * @public + * + * Serde functions from the client config. + */ +export interface SerdeFunctions { + base64Encoder: Encoder; + base64Decoder: Decoder; + utf8Encoder: Encoder; + utf8Decoder: Decoder; + streamCollector: StreamCollector; +} +/** + * @public + */ +export interface RequestSerializer { + /** + * Converts the provided `input` into a request object + * + * @param input - The user input to serialize. + * + * @param context - Context containing runtime-specific util functions. + */ + (input: any, context: Context): Promise; +} +/** + * @public + */ +export interface ResponseDeserializer { + /** + * Converts the output of an operation into JavaScript types. + * + * @param output - The HTTP response received from the service + * + * @param context - context containing runtime-specific util functions. + */ + (output: ResponseType, context: Context): Promise; +} +/** + * The interface contains mix-in utility functions to transfer the runtime-specific + * stream implementation to specified format. Each stream can ONLY be transformed + * once. + * @public + */ +export interface SdkStreamMixin { + transformToByteArray: () => Promise; + transformToString: (encoding?: string) => Promise; + transformToWebStream: () => ReadableStream; +} +/** + * @public + * + * The type describing a runtime-specific stream implementation with mix-in + * utility functions. + */ +export type SdkStream = BaseStream & SdkStreamMixin; +/** + * @public + * + * Indicates that the member of type T with + * key StreamKey have been extended + * with the SdkStreamMixin helper methods. + */ +export type WithSdkStreamMixin = { + [key in keyof T]: key extends StreamKey ? SdkStream : T[key]; +}; +/** + * Interface for internal function to inject stream utility functions + * implementation + * + * @internal + */ +export interface SdkStreamMixinInjector { + (stream: unknown): SdkStreamMixin; +} +/** + * @internal + */ +export interface SdkStreamSerdeContext { + sdkStreamMixin: SdkStreamMixinInjector; +} diff --git a/bff/node_modules/@smithy/types/dist-types/shapes.d.ts b/bff/node_modules/@smithy/types/dist-types/shapes.d.ts new file mode 100644 index 0000000..86dec37 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/shapes.d.ts @@ -0,0 +1,82 @@ +import type { HttpResponse } from "./http"; +import type { MetadataBearer } from "./response"; +/** + * @public + * + * A document type represents an untyped JSON-like value. + * + * Not all protocols support document types, and the serialization format of a + * document type is protocol specific. All JSON protocols SHOULD support + * document types and they SHOULD serialize document types inline as normal + * JSON values. + */ +export type DocumentType = null | boolean | number | string | DocumentType[] | { + [prop: string]: DocumentType; +}; +/** + * @public + * + * A structure shape with the error trait. + * https://smithy.io/2.0/spec/behavior-traits.html#smithy-api-retryable-trait + */ +export interface RetryableTrait { + /** + * Indicates that the error is a retryable throttling error. + */ + readonly throttling?: boolean; +} +/** + * @public + * + * Type that is implemented by all Smithy shapes marked with the + * error trait. + * @deprecated + */ +export interface SmithyException { + /** + * The shape ID name of the exception. + */ + readonly name: string; + /** + * Whether the client or server are at fault. + */ + readonly $fault: "client" | "server"; + /** + * The service that encountered the exception. + */ + readonly $service?: string; + /** + * Indicates that an error MAY be retried by the client. + */ + readonly $retryable?: RetryableTrait; + /** + * Reference to low-level HTTP response object. + */ + readonly $response?: HttpResponse; +} +/** + * @public + * + * @deprecated See {@link https://aws.amazon.com/blogs/developer/service-error-handling-modular-aws-sdk-js/} + * + * This type should not be used in your application. + * Users of the AWS SDK for JavaScript v3 service clients should prefer to + * use the specific Exception classes corresponding to each operation. + * These can be found as code in the deserializer for the operation's Command class, + * or as declarations in the service model file in codegen/sdk-codegen/aws-models. + * + * If no exceptions are enumerated by a particular Command operation, + * the base exception for the service should be used. Each client exports + * a base ServiceException prefixed with the service name. + */ +export type SdkError = Error & Partial & Partial & { + $metadata?: Partial["$metadata"] & { + /** + * If present, will have value of true and indicates that the error resulted in a + * correction of the clock skew, a.k.a. config.systemClockOffset. + * This is specific to AWS SDK and sigv4. + */ + readonly clockSkewCorrected?: true; + }; + cause?: Error; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/signature.d.ts b/bff/node_modules/@smithy/types/dist-types/signature.d.ts new file mode 100644 index 0000000..df788de --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/signature.d.ts @@ -0,0 +1,155 @@ +import type { Message } from "./eventStream"; +import type { HttpRequest } from "./http"; +/** + * @public + * + * A `Date` object, a unix (epoch) timestamp in seconds, or a string that can be + * understood by the JavaScript `Date` constructor. + */ +export type DateInput = number | string | Date; +/** + * @public + */ +export interface SigningArguments { + /** + * The date and time to be used as signature metadata. This value should be + * a Date object, a unix (epoch) timestamp, or a string that can be + * understood by the JavaScript `Date` constructor.If not supplied, the + * value returned by `new Date()` will be used. + */ + signingDate?: DateInput; + /** + * The service signing name. It will override the service name of the signer + * in current invocation + */ + signingService?: string; + /** + * The region name to sign the request. It will override the signing region of the + * signer in current invocation + */ + signingRegion?: string; +} +/** + * @public + */ +export interface RequestSigningArguments extends SigningArguments { + /** + * A set of strings whose members represents headers that cannot be signed. + * All headers in the provided request will have their names converted to + * lower case and then checked for existence in the unsignableHeaders set. + */ + unsignableHeaders?: Set; + /** + * A set of strings whose members represents headers that should be signed. + * Any values passed here will override those provided via unsignableHeaders, + * allowing them to be signed. + * + * All headers in the provided request will have their names converted to + * lower case before signing. + */ + signableHeaders?: Set; +} +/** + * @public + */ +export interface RequestPresigningArguments extends RequestSigningArguments { + /** + * The number of seconds before the presigned URL expires + */ + expiresIn?: number; + /** + * A set of strings whose representing headers that should not be hoisted + * to presigned request's query string. If not supplied, the presigner + * moves all the AWS-specific headers (starting with `x-amz-`) to the request + * query string. If supplied, these headers remain in the presigned request's + * header. + * All headers in the provided request will have their names converted to + * lower case and then checked for existence in the unhoistableHeaders set. + */ + unhoistableHeaders?: Set; + /** + * This overrides any headers with the same name(s) set by unhoistableHeaders. + * These headers will be hoisted into the query string and signed. + */ + hoistableHeaders?: Set; +} +/** + * @public + */ +export interface EventSigningArguments extends SigningArguments { + priorSignature: string; +} +/** + * @public + */ +export interface RequestPresigner { + /** + * Signs a request for future use. + * + * The request will be valid until either the provided `expiration` time has + * passed or the underlying credentials have expired. + * + * @param requestToSign - The request that should be signed. + * @param options - Additional signing options. + */ + presign(requestToSign: HttpRequest, options?: RequestPresigningArguments): Promise; +} +/** + * @public + * + * An object that signs request objects with AWS credentials using one of the + * AWS authentication protocols. + */ +export interface RequestSigner { + /** + * Sign the provided request for immediate dispatch. + */ + sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise; +} +/** + * @public + */ +export interface StringSigner { + /** + * Sign the provided `stringToSign` for use outside of the context of + * request signing. Typical uses include signed policy generation. + */ + sign(stringToSign: string, options?: SigningArguments): Promise; +} +/** + * @public + */ +export interface FormattedEvent { + headers: Uint8Array; + payload: Uint8Array; +} +/** + * @public + */ +export interface EventSigner { + /** + * Sign the individual event of the event stream. + */ + sign(event: FormattedEvent, options: EventSigningArguments): Promise; +} +/** + * @public + */ +export interface SignableMessage { + message: Message; + priorSignature: string; +} +/** + * @public + */ +export interface SignedMessage { + message: Message; + signature: string; +} +/** + * @public + */ +export interface MessageSigner { + signMessage(message: SignableMessage, args: SigningArguments): Promise; + sign(event: SignableMessage, options: SigningArguments): Promise; +} diff --git a/bff/node_modules/@smithy/types/dist-types/stream.d.ts b/bff/node_modules/@smithy/types/dist-types/stream.d.ts new file mode 100644 index 0000000..6b1fda9 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/stream.d.ts @@ -0,0 +1,22 @@ +import type { ChecksumConstructor } from "./checksum"; +import type { HashConstructor, StreamHasher } from "./crypto"; +import type { BodyLengthCalculator, Encoder } from "./util"; +/** + * @public + */ +export interface GetAwsChunkedEncodingStreamOptions { + base64Encoder?: Encoder; + bodyLengthChecker: BodyLengthCalculator; + checksumAlgorithmFn?: ChecksumConstructor | HashConstructor; + checksumLocationName?: string; + streamHasher?: StreamHasher; +} +/** + * @public + * + * A function that returns Readable Stream which follows aws-chunked encoding stream. + * It optionally adds checksum if options are provided. + */ +export interface GetAwsChunkedEncodingStream { + (readableStream: StreamType, options: GetAwsChunkedEncodingStreamOptions): StreamType; +} diff --git a/bff/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts b/bff/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts new file mode 100644 index 0000000..a93a8ca --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-common-types.d.ts @@ -0,0 +1,32 @@ +import type { Readable } from "stream"; +import type { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * This is the union representing the modeled blob type with streaming trait + * in a generic format that does not relate to HTTP input or output payloads. + * + * Note: the non-streaming blob type is represented by Uint8Array, but because + * the streaming blob type is always in the request/response paylod, it has + * historically been handled with different types. + * + * @see https://smithy.io/2.0/spec/simple-types.html#blob + * + * For compatibility with its historical representation, it must contain at least + * Readble (Node.js), Blob (browser), and ReadableStream (browser). + * + * @see StreamingPayloadInputTypes for FAQ about mixing types from multiple environments. + */ +export type StreamingBlobTypes = NodeJsRuntimeStreamingBlobTypes | BrowserRuntimeStreamingBlobTypes; +/** + * @public + * + * Node.js streaming blob type. + */ +export type NodeJsRuntimeStreamingBlobTypes = Readable; +/** + * @public + * + * Browser streaming blob types. + */ +export type BrowserRuntimeStreamingBlobTypes = ReadableStreamOptionalType | BlobOptionalType; diff --git a/bff/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts b/bff/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts new file mode 100644 index 0000000..3bbd587 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-input-types.d.ts @@ -0,0 +1,60 @@ +import type { Readable } from "stream"; +import type { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * This union represents a superset of the compatible types you + * can use for streaming payload inputs. + * + * FAQ: + * Why does the type union mix mutually exclusive runtime types, namely + * Node.js and browser types? + * + * There are several reasons: + * 1. For backwards compatibility. + * 2. As a convenient compromise solution so that users in either environment may use the types + * without customization. + * 3. The SDK does not have static type information about the exact implementation + * of the HTTP RequestHandler being used in your client(s) (e.g. fetch, XHR, node:http, or node:http2), + * given that it is chosen at runtime. There are multiple possible request handlers + * in both the Node.js and browser runtime environments. + * + * Rather than restricting the type to a known common format (Uint8Array, for example) + * which doesn't include a universal streaming format in the currently supported Node.js versions, + * the type declaration is widened to multiple possible formats. + * It is up to the user to ultimately select a compatible format with the + * runtime and HTTP handler implementation they are using. + * + * Usage: + * The typical solution we expect users to have is to manually narrow the + * type when needed, picking the appropriate one out of the union according to the + * runtime environment and specific request handler. + * There is also the type utility "NodeJsClient", "BrowserClient" and more + * exported from this package. These can be applied at the client level + * to pre-narrow these streaming payload blobs. For usage see the readme.md + * in the root of the \@smithy/types NPM package. + */ +export type StreamingBlobPayloadInputTypes = NodeJsRuntimeStreamingBlobPayloadInputTypes | BrowserRuntimeStreamingBlobPayloadInputTypes; +/** + * @public + * + * Streaming payload input types in the Node.js environment. + * These are derived from the types compatible with the request body used by node:http. + * + * Note: not all types are signable by the standard SignatureV4 signer when + * used as the request body. For example, in Node.js a Readable stream + * is not signable by the default signer. + * They are included in the union because it may be intended in some cases, + * but the expected types are primarily string, Uint8Array, and Buffer. + * + * Additional details may be found in the internal + * function "getPayloadHash" in the SignatureV4 module. + */ +export type NodeJsRuntimeStreamingBlobPayloadInputTypes = string | Uint8Array | Buffer | Readable; +/** + * @public + * + * Streaming payload input types in the browser environment. + * These are derived from the types compatible with fetch's Request.body. + */ +export type BrowserRuntimeStreamingBlobPayloadInputTypes = string | Uint8Array | ReadableStreamOptionalType | BlobOptionalType; diff --git a/bff/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts b/bff/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts new file mode 100644 index 0000000..54ab128 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/streaming-payload/streaming-blob-payload-output-types.d.ts @@ -0,0 +1,51 @@ +import type { IncomingMessage } from "http"; +import type { Readable } from "stream"; +import type { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +import type { SdkStream } from "../serde"; +/** + * @public + * + * This union represents a superset of the types you may receive + * in streaming payload outputs. + * + * @see StreamingPayloadInputTypes for FAQ about mixing types from multiple environments. + * + * To highlight the upstream docs about the SdkStream mixin: + * + * The interface contains mix-in (via Object.assign) methods to transform the runtime-specific + * stream implementation to specified format. Each stream can ONLY be transformed + * once. + * + * The available methods are described on the SdkStream type via SdkStreamMixin. + */ +export type StreamingBlobPayloadOutputTypes = NodeJsRuntimeStreamingBlobPayloadOutputTypes | BrowserRuntimeStreamingBlobPayloadOutputTypes; +/** + * @public + * + * Streaming payload output types in the Node.js environment. + * + * This is by default the IncomingMessage type from node:http responses when + * using the default node-http-handler in Node.js environments. + * + * It can be other Readable types like node:http2's ClientHttp2Stream + * such as when using the node-http2-handler. + * + * The SdkStreamMixin adds methods on this type to help transform (collect) it to + * other formats. + */ +export type NodeJsRuntimeStreamingBlobPayloadOutputTypes = SdkStream; +/** + * @public + * + * Streaming payload output types in the browser environment. + * + * This is by default fetch's Response.body type (ReadableStream) when using + * the default fetch-http-handler in browser-like environments. + * + * It may be a Blob, such as when using the XMLHttpRequest handler + * and receiving an arraybuffer response body. + * + * The SdkStreamMixin adds methods on this type to help transform (collect) it to + * other formats. + */ +export type BrowserRuntimeStreamingBlobPayloadOutputTypes = SdkStream; diff --git a/bff/node_modules/@smithy/types/dist-types/transfer.d.ts b/bff/node_modules/@smithy/types/dist-types/transfer.d.ts new file mode 100644 index 0000000..462ee23 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/transfer.d.ts @@ -0,0 +1,41 @@ +/** + * @public + */ +export type RequestHandlerOutput = { + response: ResponseType; +}; +/** + * @public + */ +export interface RequestHandler { + /** + * metadata contains information of a handler. For example + * 'h2' refers this handler is for handling HTTP/2 requests, + * whereas 'h1' refers handling HTTP1 requests + */ + metadata?: RequestHandlerMetadata; + destroy?: () => void; + handle: (request: RequestType, handlerOptions?: HandlerOptions) => Promise>; +} +/** + * @public + */ +export interface RequestHandlerMetadata { + handlerProtocol: RequestHandlerProtocol | string; +} +/** + * @public + * Values from ALPN Protocol IDs. + * @see https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids + */ +export declare enum RequestHandlerProtocol { + HTTP_0_9 = "http/0.9", + HTTP_1_0 = "http/1.0", + TDS_8_0 = "tds/8.0" +} +/** + * @public + */ +export interface RequestContext { + destination: URL; +} diff --git a/bff/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts b/bff/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts new file mode 100644 index 0000000..f9424c4 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/transform/client-method-transforms.d.ts @@ -0,0 +1,26 @@ +import type { CommandIO } from "../command"; +import type { MetadataBearer } from "../response"; +import type { StreamingBlobPayloadOutputTypes } from "../streaming-payload/streaming-blob-payload-output-types"; +import type { Transform } from "./type-transform"; +/** + * @internal + * + * Narrowed version of InvokeFunction used in Client::send. + */ +export interface NarrowedInvokeFunction { + (command: CommandIO, options?: HttpHandlerOptions): Promise>; + (command: CommandIO, cb: (err: unknown, data?: Transform) => void): void; + (command: CommandIO, options: HttpHandlerOptions, cb: (err: unknown, data?: Transform) => void): void; + (command: CommandIO, options?: HttpHandlerOptions, cb?: (err: unknown, data?: Transform) => void): Promise> | void; +} +/** + * @internal + * + * Narrowed version of InvokeMethod used in aggregated Client methods. + */ +export interface NarrowedInvokeMethod { + (input: InputType, options?: HttpHandlerOptions): Promise>; + (input: InputType, cb: (err: unknown, data?: Transform) => void): void; + (input: InputType, options: HttpHandlerOptions, cb: (err: unknown, data?: Transform) => void): void; + (input: InputType, options?: HttpHandlerOptions, cb?: (err: unknown, data?: OutputType) => void): Promise> | void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts b/bff/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts new file mode 100644 index 0000000..28d92f6 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/transform/client-payload-blob-type-narrow.d.ts @@ -0,0 +1,77 @@ +import type { IncomingMessage } from "http"; +import type { ClientHttp2Stream } from "http2"; +import type { InvokeMethod } from "../client"; +import type { GetOutputType } from "../command"; +import type { HttpHandlerOptions } from "../http"; +import type { SdkStream } from "../serde"; +import type { BrowserRuntimeStreamingBlobPayloadInputTypes, NodeJsRuntimeStreamingBlobPayloadInputTypes, StreamingBlobPayloadInputTypes } from "../streaming-payload/streaming-blob-payload-input-types"; +import type { StreamingBlobPayloadOutputTypes } from "../streaming-payload/streaming-blob-payload-output-types"; +import type { NarrowedInvokeMethod } from "./client-method-transforms"; +import type { Transform } from "./type-transform"; +/** + * @public + * + * Creates a type with a given client type that narrows payload blob output + * types to SdkStream. + * + * This can be used for clients with the NodeHttpHandler requestHandler, + * the default in Node.js when not using HTTP2. + * + * Usage example: + * ```typescript + * const client = new YourClient({}) as NodeJsClient; + * ``` + */ +export type NodeJsClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * Variant of NodeJsClient for node:http2. + */ +export type NodeJsHttp2Client = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * Creates a type with a given client type that narrows payload blob output + * types to SdkStream. + * + * This can be used for clients with the FetchHttpHandler requestHandler, + * which is the default in browser environments. + * + * Usage example: + * ```typescript + * const client = new YourClient({}) as BrowserClient; + * ``` + */ +export type BrowserClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * Variant of BrowserClient for XMLHttpRequest. + */ +export type BrowserXhrClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * @deprecated use NarrowPayloadBlobTypes. + * + * Narrow a given Client's blob payload outputs to the given type T. + */ +export type NarrowPayloadBlobOutputType = { + [key in keyof ClientType]: [ClientType[key]] extends [ + InvokeMethod + ] ? NarrowedInvokeMethod : ClientType[key]; +} & { + send(command: Command, options?: any): Promise, StreamingBlobPayloadOutputTypes | undefined, T>>; +}; +/** + * @public + * + * Narrow a Client's blob payload input and output types to I and O. + */ +export type NarrowPayloadBlobTypes = { + [key in keyof ClientType]: [ClientType[key]] extends [ + InvokeMethod + ] ? NarrowedInvokeMethod, FunctionOutputTypes> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise, StreamingBlobPayloadOutputTypes | undefined, O>>; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/transform/exact.d.ts b/bff/node_modules/@smithy/types/dist-types/transform/exact.d.ts new file mode 100644 index 0000000..c8a15d8 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/transform/exact.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + * + * Checks that A and B extend each other. + */ +export type Exact = [A] extends [B] ? ([B] extends [A] ? true : false) : false; diff --git a/bff/node_modules/@smithy/types/dist-types/transform/mutable.d.ts b/bff/node_modules/@smithy/types/dist-types/transform/mutable.d.ts new file mode 100644 index 0000000..4ba55e3 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/transform/mutable.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export type Mutable = { + -readonly [Property in keyof Type]: Type[Property]; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts b/bff/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts new file mode 100644 index 0000000..a0ec72e --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts @@ -0,0 +1,68 @@ +import type { InvokeMethod, InvokeMethodOptionalArgs } from "../client"; +import type { GetOutputType } from "../command"; +import type { DocumentType } from "../shapes"; +/** + * @public + * + * This type is intended as a type helper for generated clients. + * When initializing client, cast it to this type by passing + * the client constructor type as the type parameter. + * + * It will then recursively remove "undefined" as a union type from all + * input and output shapes' members. Note, this does not affect + * any member that is optional (?) such as outputs with no required members. + * + * @example + * ```ts + * const client = new Client({}) as AssertiveClient; + * ``` + */ +export type AssertiveClient = NarrowClientIOTypes; +/** + * @public + * + * This is similar to AssertiveClient but additionally changes all + * output types to (recursive) Required so as to bypass all output nullability guards. + */ +export type UncheckedClient = UncheckedClientOutputTypes; +/** + * @internal + * + * Excludes undefined recursively. + */ +export type NoUndefined = T extends Function ? T : T extends DocumentType ? T : [T] extends [object] ? { + [key in keyof T]: NoUndefined; +} : Exclude; +/** + * @internal + * + * Excludes undefined and optional recursively. + */ +export type RecursiveRequired = T extends Function ? T : T extends DocumentType ? T : [T] extends [object] ? { + [key in keyof T]-?: RecursiveRequired; +} : Exclude; +/** + * @internal + * + * Removes undefined from unions. + */ +type NarrowClientIOTypes = { + [key in keyof ClientType]: [ClientType[key]] extends [ + InvokeMethodOptionalArgs + ] ? InvokeMethodOptionalArgs, NoUndefined> : [ClientType[key]] extends [InvokeMethod] ? InvokeMethod, NoUndefined> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise>>; +}; +/** + * @internal + * + * Removes undefined from unions and adds yolo output types. + */ +type UncheckedClientOutputTypes = { + [key in keyof ClientType]: [ClientType[key]] extends [ + InvokeMethodOptionalArgs + ] ? InvokeMethodOptionalArgs, RecursiveRequired> : [ClientType[key]] extends [InvokeMethod] ? InvokeMethod, RecursiveRequired> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise>>>; +}; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts b/bff/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts new file mode 100644 index 0000000..90373fb --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/transform/type-transform.d.ts @@ -0,0 +1,34 @@ +/** + * @public + * + * Transforms any members of the object T having type FromType + * to ToType. This applies only to exact type matches. + * + * This is for the case where FromType is a union and only those fields + * matching the same union should be transformed. + */ +export type Transform = ConditionalRecursiveTransformExact; +/** + * @internal + * + * Returns ToType if T matches exactly with FromType. + */ +type TransformExact = [T] extends [FromType] ? ([FromType] extends [T] ? ToType : T) : T; +/** + * @internal + * + * Applies TransformExact to members of an object recursively. + */ +type RecursiveTransformExact = T extends Function ? T : T extends object ? { + [key in keyof T]: [T[key]] extends [FromType] ? [FromType] extends [T[key]] ? ToType : ConditionalRecursiveTransformExact : ConditionalRecursiveTransformExact; +} : TransformExact; +/** + * @internal + * + * Same as RecursiveTransformExact but does not assign to an object + * unless there is a matching transformed member. + */ +type ConditionalRecursiveTransformExact = [T] extends [ + RecursiveTransformExact +] ? [RecursiveTransformExact] extends [T] ? T : RecursiveTransformExact : RecursiveTransformExact; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts new file mode 100644 index 0000000..26c068c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/abort-handler.d.ts @@ -0,0 +1,7 @@ +import { AbortSignal as DeprecatedAbortSignal } from "./abort"; +/** + * @public + */ +export interface AbortHandler { + (this: AbortSignal | DeprecatedAbortSignal, ev: any): any; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts new file mode 100644 index 0000000..00741af --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/abort.d.ts @@ -0,0 +1,50 @@ +import { AbortHandler } from "./abort-handler"; +/** + * @public + */ +export { AbortHandler }; +/** + * @public + * @deprecated use platform (global) type for AbortSignal. + * + * Holders of an AbortSignal object may query if the associated operation has + * been aborted and register an onabort handler. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal + */ +export interface AbortSignal { + /** + * Whether the action represented by this signal has been cancelled. + */ + readonly aborted: boolean; + /** + * A function to be invoked when the action represented by this signal has + * been cancelled. + */ + onabort: AbortHandler | Function | null; +} +/** + * @public + * @deprecated use platform (global) type for AbortController. + * + * The AWS SDK uses a Controller/Signal model to allow for cooperative + * cancellation of asynchronous operations. When initiating such an operation, + * the caller can create an AbortController and then provide linked signal to + * subtasks. This allows a single source to communicate to multiple consumers + * that an action has been aborted without dictating how that cancellation + * should be handled. + * + * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortController + */ +export interface AbortController { + /** + * An object that reports whether the action associated with this + * `AbortController` has been cancelled. + */ + readonly signal: AbortSignal; + /** + * Declares the operation associated with this AbortController to have been + * cancelled. + */ + abort(): void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts new file mode 100644 index 0000000..380c8fc --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpApiKeyAuth.d.ts @@ -0,0 +1,7 @@ +/** + * @internal + */ +export declare enum HttpApiKeyAuthLocation { + HEADER = "header", + QUERY = "query" +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts new file mode 100644 index 0000000..e0d939e --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthScheme.d.ts @@ -0,0 +1,49 @@ +import { Identity, IdentityProvider } from "../identity/identity"; +import { HandlerExecutionContext } from "../middleware"; +import { HttpSigner } from "./HttpSigner"; +import { IdentityProviderConfig } from "./IdentityProviderConfig"; +/** + * ID for {@link HttpAuthScheme} + * @internal + */ +export type HttpAuthSchemeId = string; +/** + * Interface that defines an HttpAuthScheme + * @internal + */ +export interface HttpAuthScheme { + /** + * ID for an HttpAuthScheme, typically the absolute shape ID of a Smithy auth trait. + */ + schemeId: HttpAuthSchemeId; + /** + * Gets the IdentityProvider corresponding to an HttpAuthScheme. + */ + identityProvider(config: IdentityProviderConfig): IdentityProvider | undefined; + /** + * HttpSigner corresponding to an HttpAuthScheme. + */ + signer: HttpSigner; +} +/** + * Interface that defines the identity and signing properties when selecting + * an HttpAuthScheme. + * @internal + */ +export interface HttpAuthOption { + schemeId: HttpAuthSchemeId; + identityProperties?: Record; + signingProperties?: Record; + propertiesExtractor?: (config: TConfig, context: TContext) => { + identityProperties?: Record; + signingProperties?: Record; + }; +} +/** + * @internal + */ +export interface SelectedHttpAuthScheme { + httpAuthOption: HttpAuthOption; + identity: Identity; + signer: HttpSigner; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts new file mode 100644 index 0000000..d417aaf --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpAuthSchemeProvider.d.ts @@ -0,0 +1,20 @@ +import { HandlerExecutionContext } from "../middleware"; +import { HttpAuthOption } from "./HttpAuthScheme"; +/** + * @internal + */ +export interface HttpAuthSchemeParameters { + operation?: string; +} +/** + * @internal + */ +export interface HttpAuthSchemeProvider { + (authParameters: TParameters): HttpAuthOption[]; +} +/** + * @internal + */ +export interface HttpAuthSchemeParametersProvider { + (config: TConfig, context: TContext, input: TInput): Promise; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts new file mode 100644 index 0000000..7abcf84 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/HttpSigner.d.ts @@ -0,0 +1,41 @@ +import { HttpRequest, HttpResponse } from "../http"; +import { Identity } from "../identity/identity"; +/** + * @internal + */ +export interface ErrorHandler { + (signingProperties: Record): (error: E) => never; +} +/** + * @internal + */ +export interface SuccessHandler { + (httpResponse: HttpResponse | unknown, signingProperties: Record): void; +} +/** + * Interface to sign identity and signing properties. + * @internal + */ +export interface HttpSigner { + /** + * Signs an HttpRequest with an identity and signing properties. + * @param httpRequest request to sign + * @param identity identity to sing the request with + * @param signingProperties property bag for signing + * @returns signed request in a promise + */ + sign(httpRequest: HttpRequest, identity: Identity, signingProperties: Record): Promise; + /** + * Handler that executes after the {@link HttpSigner.sign} invocation and corresponding + * middleware throws an error. + * The error handler is expected to throw the error it receives, so the return type of the error handler is `never`. + * @internal + */ + errorHandler?: ErrorHandler; + /** + * Handler that executes after the {@link HttpSigner.sign} invocation and corresponding + * middleware succeeds. + * @internal + */ + successHandler?: SuccessHandler; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts new file mode 100644 index 0000000..6a50f65 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/IdentityProviderConfig.d.ts @@ -0,0 +1,14 @@ +import { Identity, IdentityProvider } from "../identity/identity"; +import { HttpAuthSchemeId } from "./HttpAuthScheme"; +/** + * Interface to get an IdentityProvider for a specified HttpAuthScheme + * @internal + */ +export interface IdentityProviderConfig { + /** + * Get the IdentityProvider for a specified HttpAuthScheme. + * @param schemeId schemeId of the HttpAuthScheme + * @returns IdentityProvider or undefined if HttpAuthScheme is not found + */ + getIdentityProvider(schemeId: HttpAuthSchemeId): IdentityProvider | undefined; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts new file mode 100644 index 0000000..8241fe3 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/auth.d.ts @@ -0,0 +1,57 @@ +/** + * @internal + * + * Authentication schemes represent a way that the service will authenticate the customer’s identity. + */ +export interface AuthScheme { + /** + * @example "sigv4a" or "sigv4" + */ + name: "sigv4" | "sigv4a" | string; + /** + * @example "s3" + */ + signingName: string; + /** + * @example "us-east-1" + */ + signingRegion: string; + /** + * @example ["*"] + * @example ["us-west-2", "us-east-1"] + */ + signingRegionSet?: string[]; + /** + * @deprecated this field was renamed to signingRegion. + */ + signingScope?: never; + properties: Record; +} +/** + * @internal + * @deprecated + */ +export interface HttpAuthDefinition { + /** + * Defines the location of where the Auth is serialized. + */ + in: HttpAuthLocation; + /** + * Defines the name of the HTTP header or query string parameter + * that contains the Auth. + */ + name: string; + /** + * Defines the security scheme to use on the `Authorization` header value. + * This can only be set if the "in" property is set to {@link HttpAuthLocation.HEADER}. + */ + scheme?: string; +} +/** + * @internal + * @deprecated + */ +export declare enum HttpAuthLocation { + HEADER = "header", + QUERY = "query" +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts new file mode 100644 index 0000000..fbb845d --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/auth/index.d.ts @@ -0,0 +1,6 @@ +export * from "./auth"; +export * from "./HttpApiKeyAuth"; +export * from "./HttpAuthScheme"; +export * from "./HttpAuthSchemeProvider"; +export * from "./HttpSigner"; +export * from "./IdentityProviderConfig"; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts new file mode 100644 index 0000000..4bfdb65 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/blob/blob-payload-input-types.d.ts @@ -0,0 +1,40 @@ +import { Readable } from "stream"; +import { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * A union of types that can be used as inputs for the service model + * "blob" type when it represents the request's entire payload or body. + * + * For example, in Lambda::invoke, the payload is modeled as a blob type + * and this union applies to it. + * In contrast, in Lambda::createFunction the Zip file option is a blob type, + * but is not the (entire) payload and this union does not apply. + * + * Note: not all types are signable by the standard SignatureV4 signer when + * used as the request body. For example, in Node.js a Readable stream + * is not signable by the default signer. + * They are included in the union because it may work in some cases, + * but the expected types are primarily string and Uint8Array. + * + * Additional details may be found in the internal + * function "getPayloadHash" in the SignatureV4 module. + */ +export type BlobPayloadInputTypes = string | ArrayBuffer | ArrayBufferView | Uint8Array | NodeJsRuntimeBlobTypes | BrowserRuntimeBlobTypes; +/** + * @public + * + * Additional blob types for the Node.js environment. + */ +export type NodeJsRuntimeBlobTypes = Readable | Buffer; +/** + * @public + * + * Additional blob types for the browser environment. + */ +export type BrowserRuntimeBlobTypes = BlobOptionalType | ReadableStreamOptionalType; +/** + * @internal + * @deprecated renamed to BlobPayloadInputTypes. + */ +export type BlobTypes = BlobPayloadInputTypes; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts new file mode 100644 index 0000000..dbfff0c --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/checksum.d.ts @@ -0,0 +1,63 @@ +import { SourceData } from "./crypto"; +/** + * @public + * + * An object that provides a checksum of data provided in chunks to `update`. + * The checksum may be performed incrementally as chunks are received or all + * at once when the checksum is finalized, depending on the underlying + * implementation. + * + * It's recommended to compute checksum incrementally to avoid reading the + * entire payload in memory. + * + * A class that implements this interface may accept an optional secret key in its + * constructor while computing checksum value, when using HMAC. If provided, + * this secret key would be used when computing checksum. + */ +export interface Checksum { + /** + * Constant length of the digest created by the algorithm in bytes. + */ + digestLength?: number; + /** + * Creates a new checksum object that contains a deep copy of the internal + * state of the current `Checksum` object. + */ + copy?(): Checksum; + /** + * Returns the digest of all of the data passed. + */ + digest(): Promise; + /** + * Allows marking a checksum for checksums that support the ability + * to mark and reset. + * + * @param readLimit - The maximum limit of bytes that can be read + * before the mark position becomes invalid. + */ + mark?(readLimit: number): void; + /** + * Resets the checksum to its initial value. + */ + reset(): void; + /** + * Adds a chunk of data for which checksum needs to be computed. + * This can be called many times with new data as it is streamed. + * + * Implementations may override this method which passes second param + * which makes Checksum object stateless. + * + * @param chunk - The buffer to update checksum with. + */ + update(chunk: Uint8Array): void; +} +/** + * @public + * + * A constructor for a Checksum that may be used to calculate an HMAC. Implementing + * classes should not directly hold the provided key in memory beyond the + * lexical scope of the constructor. + */ +export interface ChecksumConstructor { + new (secret?: SourceData): Checksum; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts new file mode 100644 index 0000000..1d05c04 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/client.d.ts @@ -0,0 +1,57 @@ +import { Command } from "./command"; +import { MiddlewareStack } from "./middleware"; +import { MetadataBearer } from "./response"; +import { OptionalParameter } from "./util"; +/** + * @public + * + * A type which checks if the client configuration is optional. + * If all entries of the client configuration are optional, it allows client creation without passing any config. + */ +export type CheckOptionalClientConfig = OptionalParameter; +/** + * @public + * + * function definition for different overrides of client's 'send' function. + */ +export interface InvokeFunction { + (command: Command, options?: any): Promise; + (command: Command, cb: (err: any, data?: OutputType) => void): void; + (command: Command, options: any, cb: (err: any, data?: OutputType) => void): void; + (command: Command, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * @public + * + * Signature that appears on aggregated clients' methods. + */ +export interface InvokeMethod { + (input: InputType, options?: any): Promise; + (input: InputType, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options: any, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * @public + * + * Signature that appears on aggregated clients' methods when argument is optional. + */ +export interface InvokeMethodOptionalArgs { + (): Promise; + (input: InputType, options?: any): Promise; + (input: InputType, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options: any, cb: (err: any, data?: OutputType) => void): void; + (input: InputType, options?: any, cb?: (err: any, data?: OutputType) => void): Promise | void; +} +/** + * A general interface for service clients, idempotent to browser or node clients + * This type corresponds to SmithyClient(https://github.com/aws/aws-sdk-js-v3/blob/main/packages/smithy-client/src/client.ts). + * It's provided for using without importing the SmithyClient class. + * @internal + */ +export interface Client { + readonly config: ResolvedClientConfiguration; + middlewareStack: MiddlewareStack; + send: InvokeFunction; + destroy: () => void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts new file mode 100644 index 0000000..6fd79bb --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/command.d.ts @@ -0,0 +1,28 @@ +import { Handler, MiddlewareStack } from "./middleware"; +import { MetadataBearer } from "./response"; +/** + * @public + */ +export interface Command extends CommandIO { + readonly input: InputType; + readonly middlewareStack: MiddlewareStack; + /** + * This should be OperationSchema from @smithy/types, but would + * create problems with the client transform type adaptors. + */ + readonly schema?: any; + resolveMiddleware(stack: MiddlewareStack, configuration: ResolvedConfiguration, options: any): Handler; +} +/** + * @internal + * + * This is a subset of the Command type used only to detect the i/o types. + */ +export interface CommandIO { + readonly input: InputType; + resolveMiddleware(stack: any, configuration: any, options: any): Handler; +} +/** + * @internal + */ +export type GetOutputType = Command extends CommandIO ? O : never; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts new file mode 100644 index 0000000..09ed18b --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/config.d.ts @@ -0,0 +1,10 @@ +/** + * @public + */ +export interface ConnectConfiguration { + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + */ + requestTimeout?: number; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts new file mode 100644 index 0000000..eaacf8b --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/index.d.ts @@ -0,0 +1,3 @@ +export * from "./config"; +export * from "./manager"; +export * from "./pool"; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts new file mode 100644 index 0000000..7245028 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/manager.d.ts @@ -0,0 +1,34 @@ +import { RequestContext } from "../transfer"; +import { ConnectConfiguration } from "./config"; +/** + * @public + */ +export interface ConnectionManagerConfiguration { + /** + * Maximum number of allowed concurrent requests per connection. + */ + maxConcurrency?: number; + /** + * Disables concurrent requests per connection. + */ + disableConcurrency?: boolean; +} +/** + * @public + */ +export interface ConnectionManager { + /** + * Retrieves a connection from the connection pool if available, + * otherwise establish a new connection + */ + lease(requestContext: RequestContext, connectionConfiguration: ConnectConfiguration): T; + /** + * Releases the connection back to the pool making it potentially + * re-usable by other requests. + */ + release(requestContext: RequestContext, connection: T): void; + /** + * Destroys the connection manager. All connections will be closed. + */ + destroy(): void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts new file mode 100644 index 0000000..161094f --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/connection/pool.d.ts @@ -0,0 +1,32 @@ +/** + * @public + */ +export interface ConnectionPool { + /** + * Retrieve the first connection in the pool + */ + poll(): T | void; + /** + * Release the connection back to the pool making it potentially + * re-usable by other requests. + */ + offerLast(connection: T): void; + /** + * Removes the connection from the pool, and destroys it. + */ + destroy(connection: T): void; + /** + * Implements the iterable protocol and allows arrays to be consumed + * by most syntaxes expecting iterables, such as the spread syntax + * and for...of loops + */ + [Symbol.iterator](): Iterator; +} +/** + * Unused. + * @internal + * @deprecated + */ +export interface CacheKey { + destination: string; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts new file mode 100644 index 0000000..467ec86 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/crypto.d.ts @@ -0,0 +1,60 @@ +/** + * @public + */ +export type SourceData = string | ArrayBuffer | ArrayBufferView; +/** + * @public + * + * An object that provides a hash of data provided in chunks to `update`. The + * hash may be performed incrementally as chunks are received or all at once + * when the hash is finalized, depending on the underlying implementation. + * + * @deprecated use {@link Checksum} + */ +export interface Hash { + /** + * Adds a chunk of data to the hash. If a buffer is provided, the `encoding` + * argument will be ignored. If a string is provided without a specified + * encoding, implementations must assume UTF-8 encoding. + * + * Not all encodings are supported on all platforms, though all must support + * UTF-8. + */ + update(toHash: SourceData, encoding?: "utf8" | "ascii" | "latin1"): void; + /** + * Finalizes the hash and provides a promise that will be fulfilled with the + * raw bytes of the calculated hash. + */ + digest(): Promise; +} +/** + * @public + * + * A constructor for a hash that may be used to calculate an HMAC. Implementing + * classes should not directly hold the provided key in memory beyond the + * lexical scope of the constructor. + * + * @deprecated use {@link ChecksumConstructor} + */ +export interface HashConstructor { + new (secret?: SourceData): Hash; +} +/** + * @public + * + * A function that calculates the hash of a data stream. Determining the hash + * will consume the stream, so only replayable streams should be provided to an + * implementation of this interface. + */ +export interface StreamHasher { + (hashCtor: HashConstructor, stream: StreamType): Promise; +} +/** + * @public + * + * A function that returns a promise fulfilled with bytes from a + * cryptographically secure pseudorandom number generator. + */ +export interface randomValues { + (byteLength: number): Promise; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts new file mode 100644 index 0000000..547303f --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/downlevel-ts3.4/transform/type-transform.d.ts @@ -0,0 +1,41 @@ +/** + * @public + * + * Transforms any members of the object T having type FromType + * to ToType. This applies only to exact type matches. + * + * This is for the case where FromType is a union and only those fields + * matching the same union should be transformed. + */ +export type Transform = RecursiveTransformExact; +/** + * @internal + * + * Returns ToType if T matches exactly with FromType. + */ +type TransformExact = [ + T +] extends [ + FromType +] ? ([ + FromType +] extends [ + T +] ? ToType : T) : T; +/** + * @internal + * + * Applies TransformExact to members of an object recursively. + */ +type RecursiveTransformExact = T extends Function ? T : T extends object ? { + [key in keyof T]: [ + T[key] + ] extends [ + FromType + ] ? [ + FromType + ] extends [ + T[key] + ] ? ToType : RecursiveTransformExact : RecursiveTransformExact; +} : TransformExact; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts new file mode 100644 index 0000000..4714bf9 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/encode.d.ts @@ -0,0 +1,31 @@ +import { Message } from "./eventStream"; +/** + * @public + */ +export interface MessageEncoder { + encode(message: Message): Uint8Array; +} +/** + * @public + */ +export interface MessageDecoder { + decode(message: ArrayBufferView): Message; + feed(message: ArrayBufferView): void; + endOfStream(): void; + getMessage(): AvailableMessage; + getAvailableMessages(): AvailableMessages; +} +/** + * @public + */ +export interface AvailableMessage { + getMessage(): Message | undefined; + isEndOfStream(): boolean; +} +/** + * @public + */ +export interface AvailableMessages { + getMessages(): Message[]; + isEndOfStream(): boolean; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts new file mode 100644 index 0000000..a1221ee --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoint.d.ts @@ -0,0 +1,77 @@ +import { AuthScheme } from "./auth/auth"; +/** + * @public + */ +export interface EndpointPartition { + name: string; + dnsSuffix: string; + dualStackDnsSuffix: string; + supportsFIPS: boolean; + supportsDualStack: boolean; +} +/** + * @public + */ +export interface EndpointARN { + partition: string; + service: string; + region: string; + accountId: string; + resourceId: Array; +} +/** + * @public + */ +export declare enum EndpointURLScheme { + HTTP = "http", + HTTPS = "https" +} +/** + * @public + */ +export interface EndpointURL { + /** + * The URL scheme such as http or https. + */ + scheme: EndpointURLScheme; + /** + * The authority is the host and optional port component of the URL. + */ + authority: string; + /** + * The parsed path segment of the URL. + * This value is as-is as provided by the user. + */ + path: string; + /** + * The parsed path segment of the URL. + * This value is guranteed to start and end with a "/". + */ + normalizedPath: string; + /** + * A boolean indicating whether the authority is an IP address. + */ + isIp: boolean; +} +/** + * @public + */ +export type EndpointObjectProperty = string | boolean | { + [key: string]: EndpointObjectProperty; +} | EndpointObjectProperty[]; +/** + * @public + */ +export interface EndpointV2 { + url: URL; + properties?: { + authSchemes?: AuthScheme[]; + } & Record; + headers?: Record; +} +/** + * @public + */ +export type EndpointParameters = { + [name: string]: undefined | boolean | string | string[]; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts new file mode 100644 index 0000000..2c8026b --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/EndpointRuleObject.d.ts @@ -0,0 +1,27 @@ +import { EndpointObjectProperty } from "../endpoint"; +import { ConditionObject, Expression } from "./shared"; +/** + * @public + */ +export type EndpointObjectProperties = Record; +/** + * @public + */ +export type EndpointObjectHeaders = Record; +/** + * @public + */ +export type EndpointObject = { + url: Expression; + properties?: EndpointObjectProperties; + headers?: EndpointObjectHeaders; +}; +/** + * @public + */ +export type EndpointRuleObject = { + type: "endpoint"; + conditions?: ConditionObject[]; + endpoint: EndpointObject; + documentation?: string; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts new file mode 100644 index 0000000..98fc7a8 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/ErrorRuleObject.d.ts @@ -0,0 +1,10 @@ +import { ConditionObject, Expression } from "./shared"; +/** + * @public + */ +export type ErrorRuleObject = { + type: "error"; + conditions?: ConditionObject[]; + error: Expression; + documentation?: string; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts new file mode 100644 index 0000000..e749fba --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/RuleSetObject.d.ts @@ -0,0 +1,28 @@ +import { RuleSetRules } from "./TreeRuleObject"; +/** + * @public + */ +export type DeprecatedObject = { + message?: string; + since?: string; +}; +/** + * @public + */ +export type ParameterObject = { + type: "String" | "string" | "Boolean" | "boolean"; + default?: string | boolean; + required?: boolean; + documentation?: string; + builtIn?: string; + deprecated?: DeprecatedObject; +}; +/** + * @public + */ +export type RuleSetObject = { + version: string; + serviceId?: string; + parameters: Record; + rules: RuleSetRules; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts new file mode 100644 index 0000000..c203eed --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/TreeRuleObject.d.ts @@ -0,0 +1,16 @@ +import { EndpointRuleObject } from "./EndpointRuleObject"; +import { ErrorRuleObject } from "./ErrorRuleObject"; +import { ConditionObject } from "./shared"; +/** + * @public + */ +export type RuleSetRules = Array; +/** + * @public + */ +export type TreeRuleObject = { + type: "tree"; + conditions?: ConditionObject[]; + rules: RuleSetRules; + documentation?: string; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts new file mode 100644 index 0000000..8a29789 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/index.d.ts @@ -0,0 +1,5 @@ +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./shared"; +export * from "./TreeRuleObject"; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts new file mode 100644 index 0000000..1c5d4b6 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/endpoints/shared.d.ts @@ -0,0 +1,55 @@ +import { Logger } from "../logger"; +/** + * @public + */ +export type ReferenceObject = { + ref: string; +}; +/** + * @public + */ +export type FunctionObject = { + fn: string; + argv: FunctionArgv; +}; +/** + * @public + */ +export type FunctionArgv = Array; +/** + * @public + */ +export type FunctionReturn = string | boolean | number | { + [key: string]: FunctionReturn; +}; +/** + * @public + */ +export type ConditionObject = FunctionObject & { + assign?: string; +}; +/** + * @public + */ +export type Expression = string | ReferenceObject | FunctionObject; +/** + * @public + */ +export type EndpointParams = Record; +/** + * @public + */ +export type EndpointResolverOptions = { + endpointParams: EndpointParams; + logger?: Logger; +}; +/** + * @public + */ +export type ReferenceRecord = Record; +/** + * @public + */ +export type EvaluateOptions = EndpointResolverOptions & { + referenceRecord: ReferenceRecord; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts new file mode 100644 index 0000000..49c37c7 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/eventStream.d.ts @@ -0,0 +1,137 @@ +import { HttpRequest } from "./http"; +import { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput, HandlerExecutionContext } from "./middleware"; +import { MetadataBearer } from "./response"; +/** + * @public + * + * An event stream message. The headers and body properties will always be + * defined, with empty headers represented as an object with no keys and an + * empty body represented as a zero-length Uint8Array. + */ +export interface Message { + headers: MessageHeaders; + body: Uint8Array; +} +/** + * @public + */ +export type MessageHeaders = Record; +/** + * @public + */ +export type HeaderValue = { + type: K; + value: V; +}; +/** + * @public + */ +export type BooleanHeaderValue = HeaderValue<"boolean", boolean>; +/** + * @public + */ +export type ByteHeaderValue = HeaderValue<"byte", number>; +/** + * @public + */ +export type ShortHeaderValue = HeaderValue<"short", number>; +/** + * @public + */ +export type IntegerHeaderValue = HeaderValue<"integer", number>; +/** + * @public + */ +export type LongHeaderValue = HeaderValue<"long", Int64>; +/** + * @public + */ +export type BinaryHeaderValue = HeaderValue<"binary", Uint8Array>; +/** + * @public + */ +export type StringHeaderValue = HeaderValue<"string", string>; +/** + * @public + */ +export type TimestampHeaderValue = HeaderValue<"timestamp", Date>; +/** + * @public + */ +export type UuidHeaderValue = HeaderValue<"uuid", string>; +/** + * @public + */ +export type MessageHeaderValue = BooleanHeaderValue | ByteHeaderValue | ShortHeaderValue | IntegerHeaderValue | LongHeaderValue | BinaryHeaderValue | StringHeaderValue | TimestampHeaderValue | UuidHeaderValue; +/** + * @public + */ +export interface Int64 { + readonly bytes: Uint8Array; + valueOf: () => number; + toString: () => string; +} +/** + * @public + * + * Util functions for serializing or deserializing event stream + */ +export interface EventStreamSerdeContext { + eventStreamMarshaller: EventStreamMarshaller; +} +/** + * @public + * + * A function which deserializes binary event stream message into modeled shape. + */ +export interface EventStreamMarshallerDeserFn { + (body: StreamType, deserializer: (input: Record) => Promise): AsyncIterable; +} +/** + * @public + * + * A function that serializes modeled shape into binary stream message. + */ +export interface EventStreamMarshallerSerFn { + (input: AsyncIterable, serializer: (event: T) => Message): StreamType; +} +/** + * @public + * + * An interface which provides functions for serializing and deserializing binary event stream + * to/from corresponsing modeled shape. + */ +export interface EventStreamMarshaller { + deserialize: EventStreamMarshallerDeserFn; + serialize: EventStreamMarshallerSerFn; +} +/** + * @public + */ +export interface EventStreamRequestSigner { + sign(request: HttpRequest): Promise; +} +/** + * @public + */ +export interface EventStreamPayloadHandler { + handle: (next: FinalizeHandler, args: FinalizeHandlerArguments, context?: HandlerExecutionContext) => Promise>; +} +/** + * @public + */ +export interface EventStreamPayloadHandlerProvider { + (options: any): EventStreamPayloadHandler; +} +/** + * @public + */ +export interface EventStreamSerdeProvider { + (options: any): EventStreamMarshaller; +} +/** + * @public + */ +export interface EventStreamSignerProvider { + (options: any): EventStreamRequestSigner; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts new file mode 100644 index 0000000..e3ccf33 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/checksum.d.ts @@ -0,0 +1,58 @@ +import { ChecksumConstructor } from "../checksum"; +import { HashConstructor } from "../crypto"; +/** + * @internal + */ +export declare enum AlgorithmId { + MD5 = "md5", + CRC32 = "crc32", + CRC32C = "crc32c", + SHA1 = "sha1", + SHA256 = "sha256" +} +/** + * @internal + */ +export interface ChecksumAlgorithm { + algorithmId(): AlgorithmId | string; + checksumConstructor(): ChecksumConstructor | HashConstructor; +} +/** + * @deprecated unused. + * @internal + */ +type ChecksumConfigurationLegacy = { + [other in string | number]: any; +}; +/** + * @internal + */ +export interface ChecksumConfiguration extends ChecksumConfigurationLegacy { + addChecksumAlgorithm(algo: ChecksumAlgorithm): void; + checksumAlgorithms(): ChecksumAlgorithm[]; +} +/** + * @deprecated will be removed for implicit type. + * @internal + */ +type GetChecksumConfigurationType = (runtimeConfig: Partial<{ + sha256: ChecksumConstructor | HashConstructor; + md5: ChecksumConstructor | HashConstructor; +}>) => ChecksumConfiguration; +/** + * @internal + * @deprecated will be moved to smithy-client. + */ +export declare const getChecksumConfiguration: GetChecksumConfigurationType; +/** + * @internal + * @deprecated will be removed for implicit type. + */ +type ResolveChecksumRuntimeConfigType = (clientConfig: ChecksumConfiguration) => any; +/** + * @internal + * + * @deprecated will be moved to smithy-client. + */ +export declare const resolveChecksumRuntimeConfig: ResolveChecksumRuntimeConfigType; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts new file mode 100644 index 0000000..40458b4 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultClientConfiguration.d.ts @@ -0,0 +1,33 @@ +import { ChecksumConfiguration } from "./checksum"; +/** + * @deprecated will be replaced by DefaultExtensionConfiguration. + * @internal + * + * Default client configuration consisting various configurations for modifying a service client + */ +export interface DefaultClientConfiguration extends ChecksumConfiguration { +} +/** + * @deprecated will be removed for implicit type. + */ +type GetDefaultConfigurationType = (runtimeConfig: any) => DefaultClientConfiguration; +/** + * @deprecated moving to @smithy/smithy-client. + * @internal + * + * Helper function to resolve default client configuration from runtime config + * + */ +export declare const getDefaultClientConfiguration: GetDefaultConfigurationType; +/** + * @deprecated will be removed for implicit type. + */ +type ResolveDefaultRuntimeConfigType = (clientConfig: DefaultClientConfiguration) => any; +/** + * @deprecated moving to @smithy/smithy-client. + * @internal + * + * Helper function to resolve runtime config from default client configuration + */ +export declare const resolveDefaultRuntimeConfig: ResolveDefaultRuntimeConfigType; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts new file mode 100644 index 0000000..55f5137 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/defaultExtensionConfiguration.d.ts @@ -0,0 +1,9 @@ +import { ChecksumConfiguration } from "./checksum"; +import { RetryStrategyConfiguration } from "./retry"; +/** + * @internal + * + * Default extension configuration consisting various configurations for modifying a service client + */ +export interface DefaultExtensionConfiguration extends ChecksumConfiguration, RetryStrategyConfiguration { +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts new file mode 100644 index 0000000..55edb16 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/index.d.ts @@ -0,0 +1,4 @@ +export * from "./defaultClientConfiguration"; +export * from "./defaultExtensionConfiguration"; +export { AlgorithmId, ChecksumAlgorithm, ChecksumConfiguration } from "./checksum"; +export { RetryStrategyConfiguration } from "./retry"; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts new file mode 100644 index 0000000..3471d08 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/extensions/retry.d.ts @@ -0,0 +1,18 @@ +import { RetryStrategyV2 } from "../retry"; +import { Provider, RetryStrategy } from "../util"; +/** + * A configuration interface with methods called by runtime extension + * @internal + */ +export interface RetryStrategyConfiguration { + /** + * Set retry strategy used for all http requests + * @param retryStrategy + */ + setRetryStrategy(retryStrategy: Provider): void; + /** + * Get retry strategy used for all http requests + * @param retryStrategy + */ + retryStrategy(): Provider; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts new file mode 100644 index 0000000..b709d7f --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/externals-check/browser-externals-check.d.ts @@ -0,0 +1,35 @@ +import { Exact } from "../transform/exact"; +/** + * @public + * + * A checked type that resolves to Blob if it is defined as more than a stub, otherwise + * resolves to 'never' so as not to widen the type of unions containing Blob + * excessively. + */ +export type BlobOptionalType = BlobDefined extends true ? Blob : Unavailable; +/** + * @public + * + * A checked type that resolves to ReadableStream if it is defined as more than a stub, otherwise + * resolves to 'never' so as not to widen the type of unions containing ReadableStream + * excessively. + */ +export type ReadableStreamOptionalType = ReadableStreamDefined extends true ? ReadableStream : Unavailable; +/** + * @public + * + * Indicates a type is unavailable if it resolves to this. + */ +export type Unavailable = never; +/** + * @internal + * + * Whether the global types define more than a stub for ReadableStream. + */ +export type ReadableStreamDefined = Exact extends true ? false : true; +/** + * @internal + * + * Whether the global types define more than a stub for Blob. + */ +export type BlobDefined = Exact extends true ? false : true; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts new file mode 100644 index 0000000..1a2c157 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts @@ -0,0 +1,16 @@ +/** + * @internal + */ +export type SmithyFeatures = Partial<{ + RESOURCE_MODEL: "A"; + WAITER: "B"; + PAGINATOR: "C"; + RETRY_MODE_LEGACY: "D"; + RETRY_MODE_STANDARD: "E"; + RETRY_MODE_ADAPTIVE: "F"; + GZIP_REQUEST_COMPRESSION: "L"; + PROTOCOL_RPC_V2_CBOR: "M"; + ENDPOINT_OVERRIDE: "N"; + SIGV4A_SIGNING: "S"; + CREDENTIALS_CODE: "e"; +}>; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts new file mode 100644 index 0000000..9b25971 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts @@ -0,0 +1,113 @@ +import { AbortSignal as DeprecatedAbortSignal } from "./abort"; +import { URI } from "./uri"; +/** + * @public + * + * @deprecated use {@link EndpointV2} from `@smithy/types`. + */ +export interface Endpoint { + protocol: string; + hostname: string; + port?: number; + path: string; + query?: QueryParameterBag; + headers?: HeaderBag; +} +/** + * @public + * + * Interface an HTTP request class. Contains + * addressing information in addition to standard message properties. + */ +export interface HttpRequest extends HttpMessage, URI { + method: string; +} +/** + * @public + * + * Represents an HTTP message as received in reply to a request. Contains a + * numeric status code in addition to standard message properties. + */ +export interface HttpResponse extends HttpMessage { + statusCode: number; + reason?: string; +} +/** + * @public + * + * Represents an HTTP message with headers and an optional static or streaming + * body. body: ArrayBuffer | ArrayBufferView | string | Uint8Array | Readable | ReadableStream; + */ +export interface HttpMessage { + headers: HeaderBag; + body?: any; +} +/** + * @public + * + * A mapping of query parameter names to strings or arrays of strings, with the + * second being used when a parameter contains a list of values. Value can be set + * to null when query is not in key-value pairs shape + */ +export type QueryParameterBag = Record | null>; +/** + * @public + */ +export type FieldOptions = { + name: string; + kind?: FieldPosition; + values?: string[]; +}; +/** + * @public + */ +export declare enum FieldPosition { + HEADER = 0, + TRAILER = 1 +} +/** + * @public + * + * A mapping of header names to string values. Multiple values for the same + * header should be represented as a single string with values separated by + * `, `. + * + * Keys should be considered case insensitive, even if this is not enforced by a + * particular implementation. For example, given the following HeaderBag, where + * keys differ only in case: + * + * ```json + * { + * 'x-request-date': '2000-01-01T00:00:00Z', + * 'X-Request-Date': '2001-01-01T00:00:00Z' + * } + * ``` + * + * The SDK may at any point during processing remove one of the object + * properties in favor of the other. The headers may or may not be combined, and + * the SDK will not deterministically select which header candidate to use. + */ +export type HeaderBag = Record; +/** + * @public + * + * Represents an HTTP message with headers and an optional static or streaming + * body. bode: ArrayBuffer | ArrayBufferView | string | Uint8Array | Readable | ReadableStream; + */ +export interface HttpMessage { + headers: HeaderBag; + body?: any; +} +/** + * @public + * + * Represents the options that may be passed to an Http Handler. + */ +export interface HttpHandlerOptions { + abortSignal?: AbortSignal | DeprecatedAbortSignal; + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + */ + requestTimeout?: number; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts new file mode 100644 index 0000000..571dc35 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/http/httpHandlerInitialization.d.ts @@ -0,0 +1,128 @@ +import { Agent as hAgent, AgentOptions as hAgentOptions } from "http"; +import { Agent as hsAgent, AgentOptions as hsAgentOptions } from "https"; +import { HttpRequest as IHttpRequest } from "../http"; +import { Logger } from "../logger"; +/** + * + * This type represents an alternate client constructor option for the entry + * "requestHandler". Instead of providing an instance of a requestHandler, the user + * may provide the requestHandler's constructor options for either the + * NodeHttpHandler or FetchHttpHandler. + * + * For other RequestHandlers like HTTP2 or WebSocket, + * constructor parameter passthrough is not currently available. + * + * @public + */ +export type RequestHandlerParams = NodeHttpHandlerOptions | FetchHttpHandlerOptions; +/** + * Represents the http options that can be passed to a node http client. + * @public + */ +export interface NodeHttpHandlerOptions { + /** + * The maximum time in milliseconds that the connection phase of a request + * may take before the connection attempt is abandoned. + * Defaults to 0, which disables the timeout. + */ + connectionTimeout?: number; + /** + * The maximum number of milliseconds request & response should take. + * Defaults to 0, which disables the timeout. + * + * If exceeded, a warning will be emitted unless throwOnRequestTimeout=true, + * in which case a TimeoutError will be thrown. + */ + requestTimeout?: number; + /** + * Because requestTimeout was for a long time incorrectly being set as a socket idle timeout, + * users must also opt-in for request timeout thrown errors. + * Without this setting, a breach of the request timeout will be logged as a warning. + */ + throwOnRequestTimeout?: boolean; + /** + * The maximum time in milliseconds that a socket may remain idle before it + * is closed. Defaults to 0, which means no maximum. + * + * This does not affect the server, which may still close the connection due to an idle socket. + */ + socketTimeout?: number; + /** + * Delay before the NodeHttpHandler checks for socket exhaustion, + * and emits a warning if the active sockets and enqueued request count is greater than + * 2x the maxSockets count. + * + * Defaults to connectionTimeout + requestTimeout or 3000ms if those are not set. + */ + socketAcquisitionWarningTimeout?: number; + /** + * You can pass http.Agent or its constructor options. + */ + httpAgent?: hAgent | hAgentOptions; + /** + * You can pass https.Agent or its constructor options. + */ + httpsAgent?: hsAgent | hsAgentOptions; + /** + * Optional logger. + */ + logger?: Logger; +} +/** + * Represents the http options that can be passed to a browser http client. + * @public + */ +export interface FetchHttpHandlerOptions { + /** + * The number of milliseconds a request can take before being automatically + * terminated. + */ + requestTimeout?: number; + /** + * Whether to allow the request to outlive the page. Default value is false. + * + * There may be limitations to the payload size, number of concurrent requests, + * request duration etc. when using keepalive in browsers. + * + * These may change over time, so look for up to date information about + * these limitations before enabling keepalive. + */ + keepAlive?: boolean; + /** + * A string indicating whether credentials will be sent with the request always, never, or + * only when sent to a same-origin URL. + * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/credentials + */ + credentials?: "include" | "omit" | "same-origin" | undefined | string; + /** + * Cache settings for fetch. + * @see https://developer.mozilla.org/en-US/docs/Web/API/Request/cache + */ + cache?: "default" | "force-cache" | "no-cache" | "no-store" | "only-if-cached" | "reload"; + /** + * An optional function that produces additional RequestInit + * parameters for each httpRequest. + * + * This is applied last via merging with Object.assign() and overwrites other values + * set from other sources. + * + * @example + * ```js + * new Client({ + * requestHandler: { + * requestInit(httpRequest) { + * return { cache: "no-store" }; + * } + * } + * }); + * ``` + */ + requestInit?: (httpRequest: IHttpRequest) => RequestInit; +} +declare global { + /** + * interface merging stub. + */ + interface RequestInit { + } +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts new file mode 100644 index 0000000..4aee7a2 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/apiKeyIdentity.d.ts @@ -0,0 +1,14 @@ +import { Identity, IdentityProvider } from "../identity/identity"; +/** + * @public + */ +export interface ApiKeyIdentity extends Identity { + /** + * The literal API Key + */ + readonly apiKey: string; +} +/** + * @public + */ +export type ApiKeyIdentityProvider = IdentityProvider; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts new file mode 100644 index 0000000..9605e4d --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/awsCredentialIdentity.d.ts @@ -0,0 +1,31 @@ +import { Identity, IdentityProvider } from "./identity"; +/** + * @public + */ +export interface AwsCredentialIdentity extends Identity { + /** + * AWS access key ID + */ + readonly accessKeyId: string; + /** + * AWS secret access key + */ + readonly secretAccessKey: string; + /** + * A security or session token to use with these credentials. Usually + * present for temporary credentials. + */ + readonly sessionToken?: string; + /** + * AWS credential scope for this set of credentials. + */ + readonly credentialScope?: string; + /** + * AWS accountId. + */ + readonly accountId?: string; +} +/** + * @public + */ +export type AwsCredentialIdentityProvider = IdentityProvider; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts new file mode 100644 index 0000000..eaa7e5d --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/identity.d.ts @@ -0,0 +1,15 @@ +/** + * @public + */ +export interface Identity { + /** + * A `Date` when the identity or credential will no longer be accepted. + */ + readonly expiration?: Date; +} +/** + * @public + */ +export interface IdentityProvider { + (identityProperties?: Record): Promise; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts new file mode 100644 index 0000000..031a0fe --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/index.d.ts @@ -0,0 +1,4 @@ +export * from "./apiKeyIdentity"; +export * from "./awsCredentialIdentity"; +export * from "./identity"; +export * from "./tokenIdentity"; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts new file mode 100644 index 0000000..33783eb --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/identity/tokenIdentity.d.ts @@ -0,0 +1,14 @@ +import { Identity, IdentityProvider } from "../identity/identity"; +/** + * @internal + */ +export interface TokenIdentity extends Identity { + /** + * The literal token string + */ + readonly token: string; +} +/** + * @internal + */ +export type TokenIdentityProvider = IdentityProvider; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..a9768b0 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts @@ -0,0 +1,43 @@ +export * from "./abort"; +export * from "./auth"; +export * from "./blob/blob-payload-input-types"; +export * from "./checksum"; +export * from "./client"; +export * from "./command"; +export * from "./connection"; +export * from "./crypto"; +export * from "./encode"; +export * from "./endpoint"; +export * from "./endpoints"; +export * from "./eventStream"; +export * from "./extensions"; +export * from "./feature-ids"; +export * from "./http"; +export * from "./http/httpHandlerInitialization"; +export * from "./identity"; +export * from "./logger"; +export * from "./middleware"; +export * from "./pagination"; +export * from "./profile"; +export * from "./response"; +export * from "./retry"; +export * from "./schema/schema"; +export * from "./schema/traits"; +export * from "./schema/schema-deprecated"; +export * from "./schema/sentinels"; +export * from "./schema/static-schemas"; +export * from "./serde"; +export * from "./shapes"; +export * from "./signature"; +export * from "./stream"; +export * from "./streaming-payload/streaming-blob-common-types"; +export * from "./streaming-payload/streaming-blob-payload-input-types"; +export * from "./streaming-payload/streaming-blob-payload-output-types"; +export * from "./transfer"; +export * from "./transform/client-payload-blob-type-narrow"; +export * from "./transform/mutable"; +export * from "./transform/no-undefined"; +export * from "./transform/type-transform"; +export * from "./uri"; +export * from "./util"; +export * from "./waiter"; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts new file mode 100644 index 0000000..cc69a11 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/logger.d.ts @@ -0,0 +1,13 @@ +/** + * @public + * + * Represents a logger object that is available in HandlerExecutionContext + * throughout the middleware stack. + */ +export interface Logger { + trace?: (...content: any[]) => void; + debug: (...content: any[]) => void; + info: (...content: any[]) => void; + warn: (...content: any[]) => void; + error: (...content: any[]) => void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts new file mode 100644 index 0000000..8b35bbe --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts @@ -0,0 +1,534 @@ +import { AuthScheme, HttpAuthDefinition } from "./auth/auth"; +import { SelectedHttpAuthScheme } from "./auth/HttpAuthScheme"; +import { Command } from "./command"; +import { EndpointV2 } from "./endpoint"; +import { SmithyFeatures } from "./feature-ids"; +import { Logger } from "./logger"; +import { UserAgent } from "./util"; +/** + * @public + */ +export interface InitializeHandlerArguments { + /** + * User input to a command. Reflects the userland representation of the + * union of data types the command can effectively handle. + */ + input: Input; +} +/** + * @public + */ +export interface InitializeHandlerOutput extends DeserializeHandlerOutput { + output: Output; +} +/** + * @public + */ +export interface SerializeHandlerArguments extends InitializeHandlerArguments { + /** + * The user input serialized as a request object. The request object is unknown, + * so you cannot modify it directly. When work with request, you need to guard its + * type to e.g. HttpRequest with 'instanceof' operand + * + * During the build phase of the execution of a middleware stack, a built + * request may or may not be available. + */ + request?: unknown; +} +/** + * @public + */ +export interface SerializeHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface BuildHandlerArguments extends FinalizeHandlerArguments { +} +/** + * @public + */ +export interface BuildHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface FinalizeHandlerArguments extends SerializeHandlerArguments { + /** + * The user input serialized as a request. + */ + request: unknown; +} +/** + * @public + */ +export interface FinalizeHandlerOutput extends InitializeHandlerOutput { +} +/** + * @public + */ +export interface DeserializeHandlerArguments extends FinalizeHandlerArguments { +} +/** + * @public + */ +export interface DeserializeHandlerOutput { + /** + * The raw response object from runtime is deserialized to structured output object. + * The response object is unknown so you cannot modify it directly. When work with + * response, you need to guard its type to e.g. HttpResponse with 'instanceof' operand. + * + * During the deserialize phase of the execution of a middleware stack, a deserialized + * response may or may not be available + */ + response: unknown; + output?: Output; +} +/** + * @public + */ +export interface InitializeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: InitializeHandlerArguments): Promise>; +} +/** + * @public + */ +export type Handler = InitializeHandler; +/** + * @public + */ +export interface SerializeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: SerializeHandlerArguments): Promise>; +} +/** + * @public + */ +export interface FinalizeHandler { + /** + * Asynchronously converts an input object into an output object. + * + * @param args - An object containing a input to the command as well as any + * associated or previously generated execution artifacts. + */ + (args: FinalizeHandlerArguments): Promise>; +} +/** + * @public + */ +export interface BuildHandler { + (args: BuildHandlerArguments): Promise>; +} +/** + * @public + */ +export interface DeserializeHandler { + (args: DeserializeHandlerArguments): Promise>; +} +/** + * @public + * + * A factory function that creates functions implementing the `Handler` + * interface. + */ +export interface InitializeMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: InitializeHandler, context: HandlerExecutionContext): InitializeHandler; +} +/** + * @public + * + * A factory function that creates functions implementing the `BuildHandler` + * interface. + */ +export interface SerializeMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: SerializeHandler, context: HandlerExecutionContext): SerializeHandler; +} +/** + * @public + * + * A factory function that creates functions implementing the `FinalizeHandler` + * interface. + */ +export interface FinalizeRequestMiddleware { + /** + * @param next - The handler to invoke after this middleware has operated on + * the user input and before this middleware operates on the output. + * + * @param context - Invariant data and functions for use by the handler. + */ + (next: FinalizeHandler, context: HandlerExecutionContext): FinalizeHandler; +} +/** + * @public + */ +export interface BuildMiddleware { + (next: BuildHandler, context: HandlerExecutionContext): BuildHandler; +} +/** + * @public + */ +export interface DeserializeMiddleware { + (next: DeserializeHandler, context: HandlerExecutionContext): DeserializeHandler; +} +/** + * @public + */ +export type MiddlewareType = InitializeMiddleware | SerializeMiddleware | BuildMiddleware | FinalizeRequestMiddleware | DeserializeMiddleware; +/** + * @public + * + * A factory function that creates the terminal handler atop which a middleware + * stack sits. + */ +export interface Terminalware { + (context: HandlerExecutionContext): DeserializeHandler; +} +/** + * @public + */ +export type Step = "initialize" | "serialize" | "build" | "finalizeRequest" | "deserialize"; +/** + * @public + */ +export type Priority = "high" | "normal" | "low"; +/** + * @public + */ +export interface HandlerOptions { + /** + * Handlers are ordered using a "step" that describes the stage of command + * execution at which the handler will be executed. The available steps are: + * + * - initialize: The input is being prepared. Examples of typical + * initialization tasks include injecting default options computing + * derived parameters. + * - serialize: The input is complete and ready to be serialized. Examples + * of typical serialization tasks include input validation and building + * an HTTP request from user input. + * - build: The input has been serialized into an HTTP request, but that + * request may require further modification. Any request alterations + * will be applied to all retries. Examples of typical build tasks + * include injecting HTTP headers that describe a stable aspect of the + * request, such as `Content-Length` or a body checksum. + * - finalizeRequest: The request is being prepared to be sent over the wire. The + * request in this stage should already be semantically complete and + * should therefore only be altered as match the recipient's + * expectations. Examples of typical finalization tasks include request + * signing and injecting hop-by-hop headers. + * - deserialize: The response has arrived, the middleware here will deserialize + * the raw response object to structured response + * + * Unlike initialization and build handlers, which are executed once + * per operation execution, finalization and deserialize handlers will be + * executed foreach HTTP request sent. + * + * @defaultValue 'initialize' + */ + step?: Step; + /** + * A list of strings to any that identify the general purpose or important + * characteristics of a given handler. + */ + tags?: Array; + /** + * A unique name to refer to a middleware + */ + name?: string; + /** + * @internal + * Aliases allows for middleware to be found by multiple names besides {@link HandlerOptions.name}. + * This allows for references to replaced middleware to continue working, e.g. replacing + * multiple auth-specific middleware with a single generic auth middleware. + */ + aliases?: Array; + /** + * A flag to override the existing middleware with the same name. Without + * setting it, adding middleware with duplicated name will throw an exception. + * @internal + */ + override?: boolean; +} +/** + * @public + */ +export interface AbsoluteLocation { + /** + * By default middleware will be added to individual step in un-guaranteed order. + * In the case that + * + * @defaultValue 'normal' + */ + priority?: Priority; +} +/** + * @public + */ +export type Relation = "before" | "after"; +/** + * @public + */ +export interface RelativeLocation { + /** + * Specify the relation to be before or after a know middleware. + */ + relation: Relation; + /** + * A known middleware name to indicate inserting middleware's location. + */ + toMiddleware: string; +} +/** + * @public + */ +export type RelativeMiddlewareOptions = RelativeLocation & Pick>; +/** + * @public + */ +export interface InitializeHandlerOptions extends HandlerOptions { + step?: "initialize"; +} +/** + * @public + */ +export interface SerializeHandlerOptions extends HandlerOptions { + step: "serialize"; +} +/** + * @public + */ +export interface BuildHandlerOptions extends HandlerOptions { + step: "build"; +} +/** + * @public + */ +export interface FinalizeRequestHandlerOptions extends HandlerOptions { + step: "finalizeRequest"; +} +/** + * @public + */ +export interface DeserializeHandlerOptions extends HandlerOptions { + step: "deserialize"; +} +/** + * @public + * + * A stack storing middleware. It can be resolved into a handler. It supports 2 + * approaches for adding middleware: + * 1. Adding middleware to specific step with `add()`. The order of middleware + * added into same step is determined by order of adding them. If one middleware + * needs to be executed at the front of the step or at the end of step, set + * `priority` options to `high` or `low`. + * 2. Adding middleware to location relative to known middleware with `addRelativeTo()`. + * This is useful when given middleware must be executed before or after specific + * middleware(`toMiddleware`). You can add a middleware relatively to another + * middleware which also added relatively. But eventually, this relative middleware + * chain **must** be 'anchored' by a middleware that added using `add()` API + * with absolute `step` and `priority`. This mothod will throw if specified + * `toMiddleware` is not found. + */ +export interface MiddlewareStack extends Pluggable { + /** + * Add middleware to the stack to be executed during the "initialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: InitializeMiddleware, options?: InitializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "serialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: SerializeMiddleware, options: SerializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "build" step, + * optionally specifying a priority, tags and name + */ + add(middleware: BuildMiddleware, options: BuildHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "finalizeRequest" step, + * optionally specifying a priority, tags and name + */ + add(middleware: FinalizeRequestMiddleware, options: FinalizeRequestHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to the stack to be executed during the "deserialize" step, + * optionally specifying a priority, tags and name + */ + add(middleware: DeserializeMiddleware, options: DeserializeHandlerOptions & AbsoluteLocation): void; + /** + * Add middleware to a stack position before or after a known middleware,optionally + * specifying name and tags. + */ + addRelativeTo(middleware: MiddlewareType, options: RelativeMiddlewareOptions): void; + /** + * Apply a customization function to mutate the middleware stack, often + * used for customizations that requires mutating multiple middleware. + */ + use(pluggable: Pluggable): void; + /** + * Create a shallow clone of this stack. Step bindings and handler priorities + * and tags are preserved in the copy. + */ + clone(): MiddlewareStack; + /** + * Removes middleware from the stack. + * + * If a string is provided, it will be treated as middleware name. If a middleware + * is inserted with the given name, it will be removed. + * + * If a middleware class is provided, all usages thereof will be removed. + */ + remove(toRemove: MiddlewareType | string): boolean; + /** + * Removes middleware that contains given tag + * + * Multiple middleware will potentially be removed + */ + removeByTag(toRemove: string): boolean; + /** + * Create a stack containing the middlewares in this stack as well as the + * middlewares in the `from` stack. Neither source is modified, and step + * bindings and handler priorities and tags are preserved in the copy. + */ + concat(from: MiddlewareStack): MiddlewareStack; + /** + * Returns a list of the current order of middleware in the stack. + * This does not execute the middleware functions, nor does it + * provide a reference to the stack itself. + */ + identify(): string[]; + /** + * @internal + * + * When an operation is called using this stack, + * it will log its list of middleware to the console using + * the identify function. + * + * @param toggle - set whether to log on resolve. + * If no argument given, returns the current value. + */ + identifyOnResolve(toggle?: boolean): boolean; + /** + * Builds a single handler function from zero or more middleware classes and + * a core handler. The core handler is meant to send command objects to AWS + * services and return promises that will resolve with the operation result + * or be rejected with an error. + * + * When a composed handler is invoked, the arguments will pass through all + * middleware in a defined order, and the return from the innermost handler + * will pass through all middleware in the reverse of that order. + */ + resolve(handler: DeserializeHandler, context: HandlerExecutionContext): InitializeHandler; +} +/** + * @internal + */ +export declare const SMITHY_CONTEXT_KEY = "__smithy_context"; +/** + * @public + * + * Data and helper objects that are not expected to change from one execution of + * a composed handler to another. + */ +export interface HandlerExecutionContext { + /** + * A logger that may be invoked by any handler during execution of an + * operation. + */ + logger?: Logger; + /** + * Name of the service the operation is being sent to. + */ + clientName?: string; + /** + * Name of the operation being executed. + */ + commandName?: string; + /** + * Additional user agent that inferred by middleware. It can be used to save + * the internal user agent sections without overriding the `customUserAgent` + * config in clients. + */ + userAgent?: UserAgent; + /** + * Resolved by the endpointMiddleware function of `@smithy/middleware-endpoint` + * in the serialization stage. + */ + endpointV2?: EndpointV2; + /** + * Set at the same time as endpointV2. + */ + authSchemes?: AuthScheme[]; + /** + * The current auth configuration that has been set by any auth middleware and + * that will prevent from being set more than once. + */ + currentAuthConfig?: HttpAuthDefinition; + /** + * @deprecated do not extend this field, it is a carryover from AWS SDKs. + * Used by DynamoDbDocumentClient. + */ + dynamoDbDocumentClientOptions?: Partial<{ + overrideInputFilterSensitiveLog(...args: any[]): string | void; + overrideOutputFilterSensitiveLog(...args: any[]): string | void; + }>; + /** + * @internal + * Context for Smithy properties. + */ + [SMITHY_CONTEXT_KEY]?: { + service?: string; + operation?: string; + commandInstance?: Command; + selectedHttpAuthScheme?: SelectedHttpAuthScheme; + features?: SmithyFeatures; + /** + * @deprecated + * Do not assign arbitrary members to the Smithy Context, + * fields should be explicitly declared here to avoid collisions. + */ + [key: string]: unknown; + }; + /** + * @deprecated + * Do not assign arbitrary members to the context, since + * they can interfere with existing functionality. + * + * Additional members should instead be declared on the SMITHY_CONTEXT_KEY + * or other reserved keys. + */ + [key: string]: any; +} +/** + * @public + */ +export interface Pluggable { + /** + * A function that mutate the passed in middleware stack. Functions implementing + * this interface can add, remove, modify existing middleware stack from clients + * or commands + */ + applyToStack: (stack: MiddlewareStack) => void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts new file mode 100644 index 0000000..c9d1c92 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/pagination.d.ts @@ -0,0 +1,33 @@ +import { Client } from "./client"; +import { Command } from "./command"; +/** + * @public + * + * Expected type definition of a paginator. + */ +export type Paginator = AsyncGenerator; +/** + * @public + * + * Expected paginator configuration passed to an operation. Services will extend + * this interface definition and may type client further. + */ +export interface PaginationConfiguration { + client: Client; + pageSize?: number; + startingToken?: any; + /** + * For some APIs, such as CloudWatchLogs events, the next page token will always + * be present. + * + * When true, this config field will have the paginator stop when the token doesn't change + * instead of when it is not present. + */ + stopOnSameToken?: boolean; + /** + * @param command - reference to the instantiated command. This callback is executed + * prior to sending the command with the paginator's client. + * @returns the original command or a replacement, defaulting to the original command object. + */ + withCommand?: (command: Command) => typeof command | undefined; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts new file mode 100644 index 0000000..1b3dba7 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/profile.d.ts @@ -0,0 +1,30 @@ +/** + * @public + */ +export declare enum IniSectionType { + PROFILE = "profile", + SSO_SESSION = "sso-session", + SERVICES = "services" +} +/** + * @public + */ +export type IniSection = Record; +/** + * @public + * + * @deprecated Please use {@link IniSection} + */ +export interface Profile extends IniSection { +} +/** + * @public + */ +export type ParsedIniData = Record; +/** + * @public + */ +export interface SharedConfigFiles { + credentialsFile: ParsedIniData; + configFile: ParsedIniData; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts new file mode 100644 index 0000000..3d8a45a --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/response.d.ts @@ -0,0 +1,40 @@ +/** + * @public + */ +export interface ResponseMetadata { + /** + * The status code of the last HTTP response received for this operation. + */ + httpStatusCode?: number; + /** + * A unique identifier for the last request sent for this operation. Often + * requested by AWS service teams to aid in debugging. + */ + requestId?: string; + /** + * A secondary identifier for the last request sent. Used for debugging. + */ + extendedRequestId?: string; + /** + * A tertiary identifier for the last request sent. Used for debugging. + */ + cfId?: string; + /** + * The number of times this operation was attempted. + */ + attempts?: number; + /** + * The total amount of time (in milliseconds) that was spent waiting between + * retry attempts. + */ + totalRetryDelay?: number; +} +/** + * @public + */ +export interface MetadataBearer { + /** + * Metadata pertaining to this request. + */ + $metadata: ResponseMetadata; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts new file mode 100644 index 0000000..8436c9a --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/retry.d.ts @@ -0,0 +1,133 @@ +import { SdkError } from "./shapes"; +/** + * @public + */ +export type RetryErrorType = +/** + * This is a connection level error such as a socket timeout, socket connect + * error, tls negotiation timeout etc... + * Typically these should never be applied for non-idempotent request types + * since in this scenario, it's impossible to know whether the operation had + * a side effect on the server. + */ +"TRANSIENT" +/** + * This is an error where the server explicitly told the client to back off, + * such as a 429 or 503 Http error. + */ + | "THROTTLING" +/** + * This is a server error that isn't explicitly throttling but is considered + * by the client to be something that should be retried. + */ + | "SERVER_ERROR" +/** + * Doesn't count against any budgets. This could be something like a 401 + * challenge in Http. + */ + | "CLIENT_ERROR"; +/** + * @public + */ +export interface RetryErrorInfo { + /** + * The error thrown during the initial request, if available. + */ + error?: SdkError; + errorType: RetryErrorType; + /** + * Protocol hint. This could come from Http's 'retry-after' header or + * something from MQTT or any other protocol that has the ability to convey + * retry info from a peer. + * + * The Date after which a retry should be attempted. + */ + retryAfterHint?: Date; +} +/** + * @public + */ +export interface RetryBackoffStrategy { + /** + * @returns the number of milliseconds to wait before retrying an action. + */ + computeNextBackoffDelay(retryAttempt: number): number; +} +/** + * @public + */ +export interface StandardRetryBackoffStrategy extends RetryBackoffStrategy { + /** + * Sets the delayBase used to compute backoff delays. + * @param delayBase - + */ + setDelayBase(delayBase: number): void; +} +/** + * @public + */ +export interface RetryStrategyOptions { + backoffStrategy: RetryBackoffStrategy; + maxRetriesBase: number; +} +/** + * @public + */ +export interface RetryToken { + /** + * @returns the current count of retry. + */ + getRetryCount(): number; + /** + * @returns the number of milliseconds to wait before retrying an action. + */ + getRetryDelay(): number; +} +/** + * @public + */ +export interface StandardRetryToken extends RetryToken { + /** + * @returns the cost of the last retry attempt. + */ + getRetryCost(): number | undefined; +} +/** + * @public + */ +export interface RetryStrategyV2 { + /** + * Called before any retries (for the first call to the operation). It either + * returns a retry token or an error upon the failure to acquire a token prior. + * + * tokenScope is arbitrary and out of scope for this component. However, + * adding it here offers us a lot of future flexibility for outage detection. + * For example, it could be "us-east-1" on a shared retry strategy, or + * "us-west-2-c:dynamodb". + */ + acquireInitialRetryToken(retryTokenScope: string): Promise; + /** + * After a failed operation call, this function is invoked to refresh the + * retryToken returned by acquireInitialRetryToken(). This function can + * either choose to allow another retry and send a new or updated token, + * or reject the retry attempt and report the error either in an exception + * or returning an error. + */ + refreshRetryTokenForRetry(tokenToRenew: RetryToken, errorInfo: RetryErrorInfo): Promise; + /** + * Upon successful completion of the operation, this function is called + * to record that the operation was successful. + */ + recordSuccess(token: RetryToken): void; +} +/** + * @public + */ +export type ExponentialBackoffJitterType = "DEFAULT" | "NONE" | "FULL" | "DECORRELATED"; +/** + * @public + */ +export interface ExponentialBackoffStrategyOptions { + jitterType: ExponentialBackoffJitterType; + backoffScaleValue?: number; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts new file mode 100644 index 0000000..4e50f35 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/schema-deprecated.d.ts @@ -0,0 +1,149 @@ +import { EndpointV2 } from "../endpoint"; +import { HandlerExecutionContext } from "../middleware"; +import { MetadataBearer } from "../response"; +import { EndpointBearer, SerdeFunctions } from "../serde"; +import { ConfigurableSerdeContext, NormalizedSchema, SchemaTraits, SimpleSchema, UnitSchema } from "./schema"; +import { StaticSchema } from "./static-schemas"; +/** + * A schema is an object or value that describes how to serialize/deserialize data. + * @internal + * @deprecated use $Schema + */ +export type Schema = UnitSchema | TraitsSchema | SimpleSchema | ListSchema | MapSchema | StructureSchema | MemberSchema | OperationSchema | StaticSchema | NormalizedSchema; +/** + * A schema "reference" is either a schema or a function that + * provides a schema. This is useful for lazy loading, and to allow + * code generation to define schema out of dependency order. + * @internal + * @deprecated use $SchemaRef + */ +export type SchemaRef = Schema | (() => Schema); +/** + * A schema that has traits. + * + * @internal + * @deprecated use static schema. + */ +export interface TraitsSchema { + namespace: string; + name: string; + traits: SchemaTraits; +} +/** + * Indicates the schema is a member of a parent Structure schema. + * It may also have a set of member traits distinct from its target shape's traits. + * @internal + * @deprecated use $MemberSchema + */ +export type MemberSchema = [ + SchemaRef, + SchemaTraits +]; +/** + * Schema for the structure aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface StructureSchema extends TraitsSchema { + memberNames: string[]; + memberList: SchemaRef[]; + /** + * @deprecated structure member iteration will be linear on the memberNames and memberList arrays. + * It can be collected into a hashmap form on an ad-hoc basis, but will not initialize as such. + */ + members?: Record | undefined; +} +/** + * Schema for the list aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface ListSchema extends TraitsSchema { + valueSchema: SchemaRef; +} +/** + * Schema for the map aggregate type. + * @internal + * @deprecated use static schema. + */ +export interface MapSchema extends TraitsSchema { + keySchema: SchemaRef; + valueSchema: SchemaRef; +} +/** + * Schema for an operation. + * @internal + * @deprecated use StaticOperationSchema or $OperationSchema + */ +export interface OperationSchema { + namespace: string; + name: string; + traits: SchemaTraits; + input: SchemaRef; + output: SchemaRef; +} +/** + * Turns a serialization into a data object. + * @internal + * @deprecated use $ShapeDeserializer + */ +export interface ShapeDeserializer extends ConfigurableSerdeContext { + /** + * Optionally async. + */ + read(schema: Schema, data: SerializationType): any | Promise; +} +/** + * Turns a data object into a serialization. + * @internal + * @deprecated use $ShapeSerializer + */ +export interface ShapeSerializer extends ConfigurableSerdeContext { + write(schema: Schema, value: unknown): void; + flush(): SerializationType; +} +/** + * A codec creates serializers and deserializers for some format such as JSON, XML, or CBOR. + * + * @internal + * @deprecated use $Codec + */ +export interface Codec extends ConfigurableSerdeContext { + createSerializer(): ShapeSerializer; + createDeserializer(): ShapeDeserializer; +} +/** + * A client protocol defines how to convert a message (e.g. HTTP request/response) to and from a data object. + * @internal + * @deprecated use $ClientProtocol + */ +export interface ClientProtocol extends ConfigurableSerdeContext { + /** + * @returns the Smithy qualified shape id. + */ + getShapeId(): string; + getRequestType(): { + new (...args: any[]): Request; + }; + getResponseType(): { + new (...args: any[]): Response; + }; + /** + * @returns the payload codec if the requests/responses have a symmetric format. + * It otherwise may return null. + */ + getPayloadCodec(): Codec; + serializeRequest(operationSchema: OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: Request, endpoint: EndpointV2): Request; + deserializeResponse(operationSchema: OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: Response): Promise; +} +/** + * @public + * @deprecated use $ClientProtocolCtor. + */ +export interface ClientProtocolCtor { + new (args: any): ClientProtocol; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts new file mode 100644 index 0000000..eae4e17 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/schema.d.ts @@ -0,0 +1,251 @@ +import { EndpointV2 } from "../endpoint"; +import { HandlerExecutionContext } from "../middleware"; +import { MetadataBearer } from "../response"; +import { EndpointBearer, SerdeFunctions } from "../serde"; +import { BigDecimalSchema, BigIntegerSchema, BlobSchema, BooleanSchema, DocumentSchema, NumericSchema, StreamingBlobSchema, StringSchema, TimestampDateTimeSchema, TimestampDefaultSchema, TimestampEpochSecondsSchema, TimestampHttpDateSchema } from "./sentinels"; +import { StaticSchema } from "./static-schemas"; +import { TraitBitVector } from "./traits"; +/** + * A schema is an object or value that describes how to serialize/deserialize data. + * @public + */ +export type $Schema = UnitSchema | SimpleSchema | $MemberSchema | StaticSchema | NormalizedSchema; +/** + * Traits attached to schema objects. + * + * When this is a number, it refers to a pre-allocated + * trait combination that is equivalent to one of the + * object type's variations. + * + * @public + */ +export type SchemaTraits = TraitBitVector | SchemaTraitsObject; +/** + * Simple schemas are those corresponding to simple Smithy types. + * @see https://smithy.io/2.0/spec/simple-types.html + * @public + */ +export type SimpleSchema = BlobSchemas | StringSchema | BooleanSchema | NumericSchema | BigIntegerSchema | BigDecimalSchema | DocumentSchema | TimestampSchemas | number; +/** + * Sentinel value for Timestamp schema. + * "Default" means unspecified and to use the protocol serializer's default format. + * + * @public + */ +export type TimestampSchemas = TimestampDefaultSchema | TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; +/** + * Sentinel values for Blob schema. + * @public + */ +export type BlobSchemas = BlobSchema | StreamingBlobSchema; +/** + * Signal value for the Smithy void value. Typically used for + * operation input and outputs. + * + * @public + */ +export type UnitSchema = "unit"; +/** + * See https://smithy.io/2.0/trait-index.html for individual definitions. + * + * @public + */ +export type SchemaTraitsObject = { + idempotent?: 1; + idempotencyToken?: 1; + sensitive?: 1; + sparse?: 1; + /** + * timestampFormat is expressed by the schema sentinel values of 4, 5, 6, and 7, + * and not contained in trait objects. + * @deprecated use schema value. + */ + timestampFormat?: never; + httpLabel?: 1; + httpHeader?: string; + httpQuery?: string; + httpPrefixHeaders?: string; + httpQueryParams?: 1; + httpPayload?: 1; + /** + * [method, path, statusCode] + */ + http?: [ + string, + string, + number + ]; + httpResponseCode?: 1; + /** + * [hostPrefix] + */ + endpoint?: [ + string + ]; + xmlAttribute?: 1; + xmlName?: string; + /** + * [prefix, uri] + */ + xmlNamespace?: [ + string, + string + ]; + xmlFlattened?: 1; + jsonName?: string; + mediaType?: string; + error?: "client" | "server"; + streaming?: 1; + eventHeader?: 1; + eventPayload?: 1; + [traitName: string]: unknown; +}; +/** + * Indicates the schema is a member of a parent Structure schema. + * It may also have a set of member traits distinct from its target shape's traits. + * @public + */ +export type $MemberSchema = [ + $SchemaRef, + SchemaTraits +]; +/** + * Schema for an operation. + * @public + */ +export interface $OperationSchema { + namespace: string; + name: string; + traits: SchemaTraits; + input: $SchemaRef; + output: $SchemaRef; +} +/** + * Normalization wrapper for various schema data objects. + * @public + */ +export interface NormalizedSchema { + getSchema(): $Schema; + getName(): string | undefined; + isMemberSchema(): boolean; + isListSchema(): boolean; + isMapSchema(): boolean; + isStructSchema(): boolean; + isBlobSchema(): boolean; + isTimestampSchema(): boolean; + isStringSchema(): boolean; + isBooleanSchema(): boolean; + isNumericSchema(): boolean; + isBigIntegerSchema(): boolean; + isBigDecimalSchema(): boolean; + isStreaming(): boolean; + getMergedTraits(): SchemaTraitsObject; + getMemberTraits(): SchemaTraitsObject; + getOwnTraits(): SchemaTraitsObject; + /** + * For list/set/map. + */ + getValueSchema(): NormalizedSchema; + /** + * For struct/union. + */ + getMemberSchema(member: string): NormalizedSchema | undefined; + structIterator(): Generator<[ + string, + NormalizedSchema + ], undefined, undefined>; +} +/** + * A schema "reference" is either a schema or a function that + * provides a schema. This is useful for lazy loading, and to allow + * code generation to define schema out of dependency order. + * @public + */ +export type $SchemaRef = $Schema | (() => $Schema); +/** + * A codec creates serializers and deserializers for some format such as JSON, XML, or CBOR. + * + * @public + */ +export interface $Codec extends ConfigurableSerdeContext { + createSerializer(): $ShapeSerializer; + createDeserializer(): $ShapeDeserializer; +} +/** + * Configuration for codecs. Different protocols may share codecs, but require different behaviors from them. + * + * @public + */ +export type CodecSettings = { + timestampFormat: { + /** + * Whether to use member timestamp format traits. + */ + useTrait: boolean; + /** + * Default timestamp format. + */ + default: TimestampDateTimeSchema | TimestampHttpDateSchema | TimestampEpochSecondsSchema; + }; + /** + * Whether to use HTTP binding traits. + */ + httpBindings?: boolean; +}; +/** + * Turns a serialization into a data object. + * @public + */ +export interface $ShapeDeserializer extends ConfigurableSerdeContext { + /** + * Optionally async. + */ + read(schema: $Schema, data: SerializationType): any | Promise; +} +/** + * Turns a data object into a serialization. + * @public + */ +export interface $ShapeSerializer extends ConfigurableSerdeContext { + write(schema: $Schema, value: unknown): void; + flush(): SerializationType; +} +/** + * A client protocol defines how to convert a message (e.g. HTTP request/response) to and from a data object. + * @public + */ +export interface $ClientProtocol extends ConfigurableSerdeContext { + /** + * @returns the Smithy qualified shape id. + */ + getShapeId(): string; + getRequestType(): { + new (...args: any[]): Request; + }; + getResponseType(): { + new (...args: any[]): Response; + }; + /** + * @returns the payload codec if the requests/responses have a symmetric format. + * It otherwise may return null. + */ + getPayloadCodec(): $Codec; + serializeRequest(operationSchema: $OperationSchema, input: Input, context: HandlerExecutionContext & SerdeFunctions & EndpointBearer): Promise; + updateServiceEndpoint(request: Request, endpoint: EndpointV2): Request; + deserializeResponse(operationSchema: $OperationSchema, context: HandlerExecutionContext & SerdeFunctions, response: Response): Promise; +} +/** + * @public + */ +export interface $ClientProtocolCtor { + new (args: any): $ClientProtocol; +} +/** + * Allows a protocol, codec, or serde utility to accept the serdeContext + * from a client configuration or request/response handlerExecutionContext. + * + * @public + */ +export interface ConfigurableSerdeContext { + setSerdeContext(serdeContext: SerdeFunctions): void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts new file mode 100644 index 0000000..6b29f79 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/sentinels.d.ts @@ -0,0 +1,65 @@ +/** + * The blob Smithy type, in JS as Uint8Array and other representations + * such as Buffer, string, or Readable(Stream) depending on circumstances. + * @public + */ +export type BlobSchema = 21; +/** + * @public + */ +export type StreamingBlobSchema = 42; +/** + * @public + */ +export type BooleanSchema = 2; +/** + * Includes string and enum Smithy types. + * @public + */ +export type StringSchema = 0; +/** + * Includes all numeric Smithy types except bigInteger and bigDecimal. + * byte, short, integer, long, float, double, intEnum. + * + * @public + */ +export type NumericSchema = 1; +/** + * @public + */ +export type BigIntegerSchema = 17; +/** + * @public + */ +export type BigDecimalSchema = 19; +/** + * @public + */ +export type DocumentSchema = 15; +/** + * Smithy type timestamp, in JS as native Date object. + * @public + */ +export type TimestampDefaultSchema = 4; +/** + * @public + */ +export type TimestampDateTimeSchema = 5; +/** + * @public + */ +export type TimestampHttpDateSchema = 6; +/** + * @public + */ +export type TimestampEpochSecondsSchema = 7; +/** + * Additional bit indicating the type is a list. + * @public + */ +export type ListSchemaModifier = 64; +/** + * Additional bit indicating the type is a map. + * @public + */ +export type MapSchemaModifier = 128; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts new file mode 100644 index 0000000..86784b1 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/static-schemas.d.ts @@ -0,0 +1,118 @@ +import { $SchemaRef, SchemaTraits } from "../schema/schema"; +/** + * @public + */ +export type StaticSchemaIdSimple = 0; +/** + * @public + */ +export type StaticSchemaIdList = 1; +/** + * @public + */ +export type StaticSchemaIdMap = 2; +/** + * @public + */ +export type StaticSchemaIdStruct = 3; +/** + * @public + */ +export type StaticSchemaIdUnion = 4; +/** + * @public + */ +export type StaticSchemaIdError = -3; +/** + * @public + */ +export type StaticSchemaIdOperation = 9; +/** + * @public + */ +export type StaticSchema = StaticSimpleSchema | StaticListSchema | StaticMapSchema | StaticStructureSchema | StaticUnionSchema | StaticErrorSchema | StaticOperationSchema; +/** + * @public + */ +export type ShapeName = string; +/** + * @public + */ +export type ShapeNamespace = string; +/** + * @public + */ +export type StaticSimpleSchema = [ + StaticSchemaIdSimple, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef +]; +/** + * @public + */ +export type StaticListSchema = [ + StaticSchemaIdList, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef +]; +/** + * @public + */ +export type StaticMapSchema = [ + StaticSchemaIdMap, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef, + $SchemaRef +]; +/** + * @public + */ +export type StaticStructureSchema = [ + StaticSchemaIdStruct, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[], + number? +]; +/** + * @public + */ +export type StaticUnionSchema = [ + StaticSchemaIdUnion, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[] +]; +/** + * @public + */ +export type StaticErrorSchema = [ + StaticSchemaIdError, + ShapeNamespace, + ShapeName, + SchemaTraits, + string[], + $SchemaRef[], + number? +]; +/** + * @public + */ +export type StaticOperationSchema = [ + StaticSchemaIdOperation, + ShapeNamespace, + ShapeName, + SchemaTraits, + $SchemaRef, + $SchemaRef +]; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts new file mode 100644 index 0000000..d7b8524 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/schema/traits.d.ts @@ -0,0 +1,46 @@ +/** + * A bitvector representing a traits object. + * + * Vector index to trait: + * 0 - httpLabel + * 1 - idempotent + * 2 - idempotencyToken + * 3 - sensitive + * 4 - httpPayload + * 5 - httpResponseCode + * 6 - httpQueryParams + * + * The singular trait values are enumerated for quick identification, but + * combination values are left to the `number` union type. + * + * @public + */ +export type TraitBitVector = HttpLabelBitMask | IdempotentBitMask | IdempotencyTokenBitMask | SensitiveBitMask | HttpPayloadBitMask | HttpResponseCodeBitMask | HttpQueryParamsBitMask | number; +/** + * @public + */ +export type HttpLabelBitMask = 1; +/** + * @public + */ +export type IdempotentBitMask = 2; +/** + * @public + */ +export type IdempotencyTokenBitMask = 4; +/** + * @public + */ +export type SensitiveBitMask = 8; +/** + * @public + */ +export type HttpPayloadBitMask = 16; +/** + * @public + */ +export type HttpResponseCodeBitMask = 32; +/** + * @public + */ +export type HttpQueryParamsBitMask = 64; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts new file mode 100644 index 0000000..21f0a04 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/serde.d.ts @@ -0,0 +1,114 @@ +import { Endpoint } from "./http"; +import { $ClientProtocol } from "./schema/schema"; +import { RequestHandler } from "./transfer"; +import { Decoder, Encoder, Provider } from "./util"; +/** + * @public + * + * Interface for object requires an Endpoint set. + */ +export interface EndpointBearer { + endpoint: Provider; +} +/** + * @public + */ +export interface StreamCollector { + /** + * A function that converts a stream into an array of bytes. + * + * @param stream - The low-level native stream from browser or Nodejs runtime + */ + (stream: any): Promise; +} +/** + * @public + * + * Request and Response serde util functions and settings for AWS services + */ +export interface SerdeContext extends SerdeFunctions, EndpointBearer { + requestHandler: RequestHandler; + disableHostPrefix: boolean; + protocol?: $ClientProtocol; +} +/** + * @public + * + * Serde functions from the client config. + */ +export interface SerdeFunctions { + base64Encoder: Encoder; + base64Decoder: Decoder; + utf8Encoder: Encoder; + utf8Decoder: Decoder; + streamCollector: StreamCollector; +} +/** + * @public + */ +export interface RequestSerializer { + /** + * Converts the provided `input` into a request object + * + * @param input - The user input to serialize. + * + * @param context - Context containing runtime-specific util functions. + */ + (input: any, context: Context): Promise; +} +/** + * @public + */ +export interface ResponseDeserializer { + /** + * Converts the output of an operation into JavaScript types. + * + * @param output - The HTTP response received from the service + * + * @param context - context containing runtime-specific util functions. + */ + (output: ResponseType, context: Context): Promise; +} +/** + * The interface contains mix-in utility functions to transfer the runtime-specific + * stream implementation to specified format. Each stream can ONLY be transformed + * once. + * @public + */ +export interface SdkStreamMixin { + transformToByteArray: () => Promise; + transformToString: (encoding?: string) => Promise; + transformToWebStream: () => ReadableStream; +} +/** + * @public + * + * The type describing a runtime-specific stream implementation with mix-in + * utility functions. + */ +export type SdkStream = BaseStream & SdkStreamMixin; +/** + * @public + * + * Indicates that the member of type T with + * key StreamKey have been extended + * with the SdkStreamMixin helper methods. + */ +export type WithSdkStreamMixin = { + [key in keyof T]: key extends StreamKey ? SdkStream : T[key]; +}; +/** + * Interface for internal function to inject stream utility functions + * implementation + * + * @internal + */ +export interface SdkStreamMixinInjector { + (stream: unknown): SdkStreamMixin; +} +/** + * @internal + */ +export interface SdkStreamSerdeContext { + sdkStreamMixin: SdkStreamMixinInjector; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts new file mode 100644 index 0000000..a81cbf1 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/shapes.d.ts @@ -0,0 +1,82 @@ +import { HttpResponse } from "./http"; +import { MetadataBearer } from "./response"; +/** + * @public + * + * A document type represents an untyped JSON-like value. + * + * Not all protocols support document types, and the serialization format of a + * document type is protocol specific. All JSON protocols SHOULD support + * document types and they SHOULD serialize document types inline as normal + * JSON values. + */ +export type DocumentType = null | boolean | number | string | DocumentType[] | { + [prop: string]: DocumentType; +}; +/** + * @public + * + * A structure shape with the error trait. + * https://smithy.io/2.0/spec/behavior-traits.html#smithy-api-retryable-trait + */ +export interface RetryableTrait { + /** + * Indicates that the error is a retryable throttling error. + */ + readonly throttling?: boolean; +} +/** + * @public + * + * Type that is implemented by all Smithy shapes marked with the + * error trait. + * @deprecated + */ +export interface SmithyException { + /** + * The shape ID name of the exception. + */ + readonly name: string; + /** + * Whether the client or server are at fault. + */ + readonly $fault: "client" | "server"; + /** + * The service that encountered the exception. + */ + readonly $service?: string; + /** + * Indicates that an error MAY be retried by the client. + */ + readonly $retryable?: RetryableTrait; + /** + * Reference to low-level HTTP response object. + */ + readonly $response?: HttpResponse; +} +/** + * @public + * + * @deprecated See {@link https://aws.amazon.com/blogs/developer/service-error-handling-modular-aws-sdk-js/} + * + * This type should not be used in your application. + * Users of the AWS SDK for JavaScript v3 service clients should prefer to + * use the specific Exception classes corresponding to each operation. + * These can be found as code in the deserializer for the operation's Command class, + * or as declarations in the service model file in codegen/sdk-codegen/aws-models. + * + * If no exceptions are enumerated by a particular Command operation, + * the base exception for the service should be used. Each client exports + * a base ServiceException prefixed with the service name. + */ +export type SdkError = Error & Partial & Partial & { + $metadata?: Partial["$metadata"] & { + /** + * If present, will have value of true and indicates that the error resulted in a + * correction of the clock skew, a.k.a. config.systemClockOffset. + * This is specific to AWS SDK and sigv4. + */ + readonly clockSkewCorrected?: true; + }; + cause?: Error; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts new file mode 100644 index 0000000..bbaecde --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/signature.d.ts @@ -0,0 +1,155 @@ +import { Message } from "./eventStream"; +import { HttpRequest } from "./http"; +/** + * @public + * + * A `Date` object, a unix (epoch) timestamp in seconds, or a string that can be + * understood by the JavaScript `Date` constructor. + */ +export type DateInput = number | string | Date; +/** + * @public + */ +export interface SigningArguments { + /** + * The date and time to be used as signature metadata. This value should be + * a Date object, a unix (epoch) timestamp, or a string that can be + * understood by the JavaScript `Date` constructor.If not supplied, the + * value returned by `new Date()` will be used. + */ + signingDate?: DateInput; + /** + * The service signing name. It will override the service name of the signer + * in current invocation + */ + signingService?: string; + /** + * The region name to sign the request. It will override the signing region of the + * signer in current invocation + */ + signingRegion?: string; +} +/** + * @public + */ +export interface RequestSigningArguments extends SigningArguments { + /** + * A set of strings whose members represents headers that cannot be signed. + * All headers in the provided request will have their names converted to + * lower case and then checked for existence in the unsignableHeaders set. + */ + unsignableHeaders?: Set; + /** + * A set of strings whose members represents headers that should be signed. + * Any values passed here will override those provided via unsignableHeaders, + * allowing them to be signed. + * + * All headers in the provided request will have their names converted to + * lower case before signing. + */ + signableHeaders?: Set; +} +/** + * @public + */ +export interface RequestPresigningArguments extends RequestSigningArguments { + /** + * The number of seconds before the presigned URL expires + */ + expiresIn?: number; + /** + * A set of strings whose representing headers that should not be hoisted + * to presigned request's query string. If not supplied, the presigner + * moves all the AWS-specific headers (starting with `x-amz-`) to the request + * query string. If supplied, these headers remain in the presigned request's + * header. + * All headers in the provided request will have their names converted to + * lower case and then checked for existence in the unhoistableHeaders set. + */ + unhoistableHeaders?: Set; + /** + * This overrides any headers with the same name(s) set by unhoistableHeaders. + * These headers will be hoisted into the query string and signed. + */ + hoistableHeaders?: Set; +} +/** + * @public + */ +export interface EventSigningArguments extends SigningArguments { + priorSignature: string; +} +/** + * @public + */ +export interface RequestPresigner { + /** + * Signs a request for future use. + * + * The request will be valid until either the provided `expiration` time has + * passed or the underlying credentials have expired. + * + * @param requestToSign - The request that should be signed. + * @param options - Additional signing options. + */ + presign(requestToSign: HttpRequest, options?: RequestPresigningArguments): Promise; +} +/** + * @public + * + * An object that signs request objects with AWS credentials using one of the + * AWS authentication protocols. + */ +export interface RequestSigner { + /** + * Sign the provided request for immediate dispatch. + */ + sign(requestToSign: HttpRequest, options?: RequestSigningArguments): Promise; +} +/** + * @public + */ +export interface StringSigner { + /** + * Sign the provided `stringToSign` for use outside of the context of + * request signing. Typical uses include signed policy generation. + */ + sign(stringToSign: string, options?: SigningArguments): Promise; +} +/** + * @public + */ +export interface FormattedEvent { + headers: Uint8Array; + payload: Uint8Array; +} +/** + * @public + */ +export interface EventSigner { + /** + * Sign the individual event of the event stream. + */ + sign(event: FormattedEvent, options: EventSigningArguments): Promise; +} +/** + * @public + */ +export interface SignableMessage { + message: Message; + priorSignature: string; +} +/** + * @public + */ +export interface SignedMessage { + message: Message; + signature: string; +} +/** + * @public + */ +export interface MessageSigner { + signMessage(message: SignableMessage, args: SigningArguments): Promise; + sign(event: SignableMessage, options: SigningArguments): Promise; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts new file mode 100644 index 0000000..1e2b85d --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/stream.d.ts @@ -0,0 +1,22 @@ +import { ChecksumConstructor } from "./checksum"; +import { HashConstructor, StreamHasher } from "./crypto"; +import { BodyLengthCalculator, Encoder } from "./util"; +/** + * @public + */ +export interface GetAwsChunkedEncodingStreamOptions { + base64Encoder?: Encoder; + bodyLengthChecker: BodyLengthCalculator; + checksumAlgorithmFn?: ChecksumConstructor | HashConstructor; + checksumLocationName?: string; + streamHasher?: StreamHasher; +} +/** + * @public + * + * A function that returns Readable Stream which follows aws-chunked encoding stream. + * It optionally adds checksum if options are provided. + */ +export interface GetAwsChunkedEncodingStream { + (readableStream: StreamType, options: GetAwsChunkedEncodingStreamOptions): StreamType; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts new file mode 100644 index 0000000..c327e36 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-common-types.d.ts @@ -0,0 +1,32 @@ +import { Readable } from "stream"; +import { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * This is the union representing the modeled blob type with streaming trait + * in a generic format that does not relate to HTTP input or output payloads. + * + * Note: the non-streaming blob type is represented by Uint8Array, but because + * the streaming blob type is always in the request/response paylod, it has + * historically been handled with different types. + * + * @see https://smithy.io/2.0/spec/simple-types.html#blob + * + * For compatibility with its historical representation, it must contain at least + * Readble (Node.js), Blob (browser), and ReadableStream (browser). + * + * @see StreamingPayloadInputTypes for FAQ about mixing types from multiple environments. + */ +export type StreamingBlobTypes = NodeJsRuntimeStreamingBlobTypes | BrowserRuntimeStreamingBlobTypes; +/** + * @public + * + * Node.js streaming blob type. + */ +export type NodeJsRuntimeStreamingBlobTypes = Readable; +/** + * @public + * + * Browser streaming blob types. + */ +export type BrowserRuntimeStreamingBlobTypes = ReadableStreamOptionalType | BlobOptionalType; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts new file mode 100644 index 0000000..2005c72 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-input-types.d.ts @@ -0,0 +1,60 @@ +import { Readable } from "stream"; +import { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +/** + * @public + * + * This union represents a superset of the compatible types you + * can use for streaming payload inputs. + * + * FAQ: + * Why does the type union mix mutually exclusive runtime types, namely + * Node.js and browser types? + * + * There are several reasons: + * 1. For backwards compatibility. + * 2. As a convenient compromise solution so that users in either environment may use the types + * without customization. + * 3. The SDK does not have static type information about the exact implementation + * of the HTTP RequestHandler being used in your client(s) (e.g. fetch, XHR, node:http, or node:http2), + * given that it is chosen at runtime. There are multiple possible request handlers + * in both the Node.js and browser runtime environments. + * + * Rather than restricting the type to a known common format (Uint8Array, for example) + * which doesn't include a universal streaming format in the currently supported Node.js versions, + * the type declaration is widened to multiple possible formats. + * It is up to the user to ultimately select a compatible format with the + * runtime and HTTP handler implementation they are using. + * + * Usage: + * The typical solution we expect users to have is to manually narrow the + * type when needed, picking the appropriate one out of the union according to the + * runtime environment and specific request handler. + * There is also the type utility "NodeJsClient", "BrowserClient" and more + * exported from this package. These can be applied at the client level + * to pre-narrow these streaming payload blobs. For usage see the readme.md + * in the root of the \@smithy/types NPM package. + */ +export type StreamingBlobPayloadInputTypes = NodeJsRuntimeStreamingBlobPayloadInputTypes | BrowserRuntimeStreamingBlobPayloadInputTypes; +/** + * @public + * + * Streaming payload input types in the Node.js environment. + * These are derived from the types compatible with the request body used by node:http. + * + * Note: not all types are signable by the standard SignatureV4 signer when + * used as the request body. For example, in Node.js a Readable stream + * is not signable by the default signer. + * They are included in the union because it may be intended in some cases, + * but the expected types are primarily string, Uint8Array, and Buffer. + * + * Additional details may be found in the internal + * function "getPayloadHash" in the SignatureV4 module. + */ +export type NodeJsRuntimeStreamingBlobPayloadInputTypes = string | Uint8Array | Buffer | Readable; +/** + * @public + * + * Streaming payload input types in the browser environment. + * These are derived from the types compatible with fetch's Request.body. + */ +export type BrowserRuntimeStreamingBlobPayloadInputTypes = string | Uint8Array | ReadableStreamOptionalType | BlobOptionalType; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts new file mode 100644 index 0000000..21d88bf --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/streaming-payload/streaming-blob-payload-output-types.d.ts @@ -0,0 +1,51 @@ +import { IncomingMessage } from "http"; +import { Readable } from "stream"; +import { BlobOptionalType, ReadableStreamOptionalType } from "../externals-check/browser-externals-check"; +import { SdkStream } from "../serde"; +/** + * @public + * + * This union represents a superset of the types you may receive + * in streaming payload outputs. + * + * @see StreamingPayloadInputTypes for FAQ about mixing types from multiple environments. + * + * To highlight the upstream docs about the SdkStream mixin: + * + * The interface contains mix-in (via Object.assign) methods to transform the runtime-specific + * stream implementation to specified format. Each stream can ONLY be transformed + * once. + * + * The available methods are described on the SdkStream type via SdkStreamMixin. + */ +export type StreamingBlobPayloadOutputTypes = NodeJsRuntimeStreamingBlobPayloadOutputTypes | BrowserRuntimeStreamingBlobPayloadOutputTypes; +/** + * @public + * + * Streaming payload output types in the Node.js environment. + * + * This is by default the IncomingMessage type from node:http responses when + * using the default node-http-handler in Node.js environments. + * + * It can be other Readable types like node:http2's ClientHttp2Stream + * such as when using the node-http2-handler. + * + * The SdkStreamMixin adds methods on this type to help transform (collect) it to + * other formats. + */ +export type NodeJsRuntimeStreamingBlobPayloadOutputTypes = SdkStream; +/** + * @public + * + * Streaming payload output types in the browser environment. + * + * This is by default fetch's Response.body type (ReadableStream) when using + * the default fetch-http-handler in browser-like environments. + * + * It may be a Blob, such as when using the XMLHttpRequest handler + * and receiving an arraybuffer response body. + * + * The SdkStreamMixin adds methods on this type to help transform (collect) it to + * other formats. + */ +export type BrowserRuntimeStreamingBlobPayloadOutputTypes = SdkStream; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts new file mode 100644 index 0000000..f37ddb7 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/transfer.d.ts @@ -0,0 +1,41 @@ +/** + * @public + */ +export type RequestHandlerOutput = { + response: ResponseType; +}; +/** + * @public + */ +export interface RequestHandler { + /** + * metadata contains information of a handler. For example + * 'h2' refers this handler is for handling HTTP/2 requests, + * whereas 'h1' refers handling HTTP1 requests + */ + metadata?: RequestHandlerMetadata; + destroy?: () => void; + handle: (request: RequestType, handlerOptions?: HandlerOptions) => Promise>; +} +/** + * @public + */ +export interface RequestHandlerMetadata { + handlerProtocol: RequestHandlerProtocol | string; +} +/** + * @public + * Values from ALPN Protocol IDs. + * @see https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids + */ +export declare enum RequestHandlerProtocol { + HTTP_0_9 = "http/0.9", + HTTP_1_0 = "http/1.0", + TDS_8_0 = "tds/8.0" +} +/** + * @public + */ +export interface RequestContext { + destination: URL; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts new file mode 100644 index 0000000..f1aecf3 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/client-method-transforms.d.ts @@ -0,0 +1,26 @@ +import { CommandIO } from "../command"; +import { MetadataBearer } from "../response"; +import { StreamingBlobPayloadOutputTypes } from "../streaming-payload/streaming-blob-payload-output-types"; +import { Transform } from "./type-transform"; +/** + * @internal + * + * Narrowed version of InvokeFunction used in Client::send. + */ +export interface NarrowedInvokeFunction { + (command: CommandIO, options?: HttpHandlerOptions): Promise>; + (command: CommandIO, cb: (err: unknown, data?: Transform) => void): void; + (command: CommandIO, options: HttpHandlerOptions, cb: (err: unknown, data?: Transform) => void): void; + (command: CommandIO, options?: HttpHandlerOptions, cb?: (err: unknown, data?: Transform) => void): Promise> | void; +} +/** + * @internal + * + * Narrowed version of InvokeMethod used in aggregated Client methods. + */ +export interface NarrowedInvokeMethod { + (input: InputType, options?: HttpHandlerOptions): Promise>; + (input: InputType, cb: (err: unknown, data?: Transform) => void): void; + (input: InputType, options: HttpHandlerOptions, cb: (err: unknown, data?: Transform) => void): void; + (input: InputType, options?: HttpHandlerOptions, cb?: (err: unknown, data?: OutputType) => void): Promise> | void; +} diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts new file mode 100644 index 0000000..6229a28 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/client-payload-blob-type-narrow.d.ts @@ -0,0 +1,81 @@ +import { IncomingMessage } from "http"; +import { ClientHttp2Stream } from "http2"; +import { InvokeMethod } from "../client"; +import { GetOutputType } from "../command"; +import { HttpHandlerOptions } from "../http"; +import { SdkStream } from "../serde"; +import { BrowserRuntimeStreamingBlobPayloadInputTypes, NodeJsRuntimeStreamingBlobPayloadInputTypes, StreamingBlobPayloadInputTypes } from "../streaming-payload/streaming-blob-payload-input-types"; +import { StreamingBlobPayloadOutputTypes } from "../streaming-payload/streaming-blob-payload-output-types"; +import { NarrowedInvokeMethod } from "./client-method-transforms"; +import { Transform } from "./type-transform"; +/** + * @public + * + * Creates a type with a given client type that narrows payload blob output + * types to SdkStream. + * + * This can be used for clients with the NodeHttpHandler requestHandler, + * the default in Node.js when not using HTTP2. + * + * Usage example: + * ```typescript + * const client = new YourClient({}) as NodeJsClient; + * ``` + */ +export type NodeJsClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * Variant of NodeJsClient for node:http2. + */ +export type NodeJsHttp2Client = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * Creates a type with a given client type that narrows payload blob output + * types to SdkStream. + * + * This can be used for clients with the FetchHttpHandler requestHandler, + * which is the default in browser environments. + * + * Usage example: + * ```typescript + * const client = new YourClient({}) as BrowserClient; + * ``` + */ +export type BrowserClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * Variant of BrowserClient for XMLHttpRequest. + */ +export type BrowserXhrClient = NarrowPayloadBlobTypes, ClientType>; +/** + * @public + * + * @deprecated use NarrowPayloadBlobTypes. + * + * Narrow a given Client's blob payload outputs to the given type T. + */ +export type NarrowPayloadBlobOutputType = { + [key in keyof ClientType]: [ + ClientType[key] + ] extends [ + InvokeMethod + ] ? NarrowedInvokeMethod : ClientType[key]; +} & { + send(command: Command, options?: any): Promise, StreamingBlobPayloadOutputTypes | undefined, T>>; +}; +/** + * @public + * + * Narrow a Client's blob payload input and output types to I and O. + */ +export type NarrowPayloadBlobTypes = { + [key in keyof ClientType]: [ + ClientType[key] + ] extends [ + InvokeMethod + ] ? NarrowedInvokeMethod, FunctionOutputTypes> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise, StreamingBlobPayloadOutputTypes | undefined, O>>; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts new file mode 100644 index 0000000..3a812df --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/exact.d.ts @@ -0,0 +1,14 @@ +/** + * @internal + * + * Checks that A and B extend each other. + */ +export type Exact = [ + A +] extends [ + B +] ? ([ + B +] extends [ + A +] ? true : false) : false; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts new file mode 100644 index 0000000..bd9c16b --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/mutable.d.ts @@ -0,0 +1,6 @@ +/** + * @internal + */ +export type Mutable = { + -readonly [Property in keyof Type]: Type[Property]; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts new file mode 100644 index 0000000..6a7f6d8 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts @@ -0,0 +1,88 @@ +import { InvokeMethod, InvokeMethodOptionalArgs } from "../client"; +import { GetOutputType } from "../command"; +import { DocumentType } from "../shapes"; +/** + * @public + * + * This type is intended as a type helper for generated clients. + * When initializing client, cast it to this type by passing + * the client constructor type as the type parameter. + * + * It will then recursively remove "undefined" as a union type from all + * input and output shapes' members. Note, this does not affect + * any member that is optional (?) such as outputs with no required members. + * + * @example + * ```ts + * const client = new Client({}) as AssertiveClient; + * ``` + */ +export type AssertiveClient = NarrowClientIOTypes; +/** + * @public + * + * This is similar to AssertiveClient but additionally changes all + * output types to (recursive) Required so as to bypass all output nullability guards. + */ +export type UncheckedClient = UncheckedClientOutputTypes; +/** + * @internal + * + * Excludes undefined recursively. + */ +export type NoUndefined = T extends Function ? T : T extends DocumentType ? T : [ + T +] extends [ + object +] ? { + [key in keyof T]: NoUndefined; +} : Exclude; +/** + * @internal + * + * Excludes undefined and optional recursively. + */ +export type RecursiveRequired = T extends Function ? T : T extends DocumentType ? T : [ + T +] extends [ + object +] ? { + [key in keyof T]-?: RecursiveRequired; +} : Exclude; +/** + * @internal + * + * Removes undefined from unions. + */ +type NarrowClientIOTypes = { + [key in keyof ClientType]: [ + ClientType[key] + ] extends [ + InvokeMethodOptionalArgs + ] ? InvokeMethodOptionalArgs, NoUndefined> : [ + ClientType[key] + ] extends [ + InvokeMethod + ] ? InvokeMethod, NoUndefined> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise>>; +}; +/** + * @internal + * + * Removes undefined from unions and adds yolo output types. + */ +type UncheckedClientOutputTypes = { + [key in keyof ClientType]: [ + ClientType[key] + ] extends [ + InvokeMethodOptionalArgs + ] ? InvokeMethodOptionalArgs, RecursiveRequired> : [ + ClientType[key] + ] extends [ + InvokeMethod + ] ? InvokeMethod, RecursiveRequired> : ClientType[key]; +} & { + send(command: Command, options?: any): Promise>>>; +}; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts new file mode 100644 index 0000000..547303f --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/transform/type-transform.d.ts @@ -0,0 +1,41 @@ +/** + * @public + * + * Transforms any members of the object T having type FromType + * to ToType. This applies only to exact type matches. + * + * This is for the case where FromType is a union and only those fields + * matching the same union should be transformed. + */ +export type Transform = RecursiveTransformExact; +/** + * @internal + * + * Returns ToType if T matches exactly with FromType. + */ +type TransformExact = [ + T +] extends [ + FromType +] ? ([ + FromType +] extends [ + T +] ? ToType : T) : T; +/** + * @internal + * + * Applies TransformExact to members of an object recursively. + */ +type RecursiveTransformExact = T extends Function ? T : T extends object ? { + [key in keyof T]: [ + T[key] + ] extends [ + FromType + ] ? [ + FromType + ] extends [ + T[key] + ] ? ToType : RecursiveTransformExact : RecursiveTransformExact; +} : TransformExact; +export {}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts new file mode 100644 index 0000000..4e7adb4 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/uri.d.ts @@ -0,0 +1,17 @@ +import { QueryParameterBag } from "./http"; +/** + * @internal + * + * Represents the components parts of a Uniform Resource Identifier used to + * construct the target location of a Request. + */ +export type URI = { + protocol: string; + hostname: string; + port?: number; + path: string; + query?: QueryParameterBag; + username?: string; + password?: string; + fragment?: string; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts new file mode 100644 index 0000000..7c700af --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/util.d.ts @@ -0,0 +1,192 @@ +import { Endpoint } from "./http"; +import { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput } from "./middleware"; +import { MetadataBearer } from "./response"; +/** + * @public + * + * A generic which checks if Type1 is exactly same as Type2. + */ +export type Exact = [ + Type1 +] extends [ + Type2 +] ? ([ + Type2 +] extends [ + Type1 +] ? true : false) : false; +/** + * @public + * + * A function that, given a Uint8Array of bytes, can produce a string + * representation thereof. The function may optionally attempt to + * convert other input types to Uint8Array before encoding. + * + * @example An encoder function that converts bytes to hexadecimal + * representation would return `'hello'` when given + * `new Uint8Array([104, 101, 108, 108, 111])`. + */ +export interface Encoder { + /** + * Caution: the `any` type on the input is for backwards compatibility. + * Runtime support is limited to Uint8Array and string by default. + * + * You may choose to support more encoder input types if overriding the default + * implementations. + */ + (input: Uint8Array | string | any): string; +} +/** + * @public + * + * A function that, given a string, can derive the bytes represented by that + * string. + * + * @example A decoder function that converts bytes to hexadecimal + * representation would return `new Uint8Array([104, 101, 108, 108, 111])` when + * given the string `'hello'`. + */ +export interface Decoder { + (input: string): Uint8Array; +} +/** + * @public + * + * A function that, when invoked, returns a promise that will be fulfilled with + * a value of type T. + * + * @example A function that reads credentials from shared SDK configuration + * files, assuming roles and collecting MFA tokens as necessary. + */ +export interface Provider { + (): Promise; +} +/** + * @public + * + * A tuple that represents an API name and optional version + * of a library built using the AWS SDK. + */ +export type UserAgentPair = [ + /*name*/ string, + /*version*/ string +]; +/** + * @public + * + * User agent data that to be put into the request's user + * agent. + */ +export type UserAgent = UserAgentPair[]; +/** + * @public + * + * Parses a URL in string form into an Endpoint object. + */ +export interface UrlParser { + (url: string | URL): Endpoint; +} +/** + * @public + * + * A function that, when invoked, returns a promise that will be fulfilled with + * a value of type T. It memoizes the result from the previous invocation + * instead of calling the underlying resources every time. + * + * You can force the provider to refresh the memoized value by invoke the + * function with optional parameter hash with `forceRefresh` boolean key and + * value `true`. + * + * @example A function that reads credentials from IMDS service that could + * return expired credentials. The SDK will keep using the expired credentials + * until an unretryable service error requiring a force refresh of the + * credentials. + */ +export interface MemoizedProvider { + (options?: { + forceRefresh?: boolean; + }): Promise; +} +/** + * @public + * + * A function that, given a request body, determines the + * length of the body. This is used to determine the Content-Length + * that should be sent with a request. + * + * @example A function that reads a file stream and calculates + * the size of the file. + */ +export interface BodyLengthCalculator { + (body: any): number | undefined; +} +/** + * @public + * + * Object containing regionalization information of + * AWS services. + */ +export interface RegionInfo { + hostname: string; + partition: string; + path?: string; + signingService?: string; + signingRegion?: string; +} +/** + * @public + * + * Options to pass when calling {@link RegionInfoProvider} + */ +export interface RegionInfoProviderOptions { + /** + * Enables IPv6/IPv4 dualstack endpoint. + * @defaultValue false + */ + useDualstackEndpoint: boolean; + /** + * Enables FIPS compatible endpoints. + * @defaultValue false + */ + useFipsEndpoint: boolean; +} +/** + * @public + * + * Function returns designated service's regionalization + * information from given region. Each service client + * comes with its regionalization provider. it serves + * to provide the default values of related configurations + */ +export interface RegionInfoProvider { + (region: string, options?: RegionInfoProviderOptions): Promise; +} +/** + * @public + * + * Interface that specifies the retry behavior + */ +export interface RetryStrategy { + /** + * The retry mode describing how the retry strategy control the traffic flow. + */ + mode?: string; + /** + * the retry behavior the will invoke the next handler and handle the retry accordingly. + * This function should also update the $metadata from the response accordingly. + * @see {@link ResponseMetadata} + */ + retry: (next: FinalizeHandler, args: FinalizeHandlerArguments) => Promise>; +} +/** + * @public + * + * Indicates the parameter may be omitted if the parameter object T + * is equivalent to a Partial, i.e. all properties optional. + */ +export type OptionalParameter = Exact, T> extends true ? [ +] | [ + T +] : [ + T +]; diff --git a/bff/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts b/bff/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts new file mode 100644 index 0000000..2cc2fff --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/ts3.4/waiter.d.ts @@ -0,0 +1,35 @@ +import { AbortController as DeprecatedAbortController } from "./abort"; +/** + * @public + */ +export interface WaiterConfiguration { + /** + * Required service client + */ + client: Client; + /** + * The amount of time in seconds a user is willing to wait for a waiter to complete. + */ + maxWaitTime: number; + /** + * @deprecated Use abortSignal + * Abort controller. Used for ending the waiter early. + */ + abortController?: AbortController | DeprecatedAbortController; + /** + * Abort Signal. Used for ending the waiter early. + */ + abortSignal?: AbortController["signal"] | DeprecatedAbortController["signal"]; + /** + * The minimum amount of time to delay between retries in seconds. This is the + * floor of the exponential backoff. This value defaults to service default + * if not specified. This value MUST be less than or equal to maxDelay and greater than 0. + */ + minDelay?: number; + /** + * The maximum amount of time to delay between retries in seconds. This is the + * ceiling of the exponential backoff. This value defaults to service default + * if not specified. If specified, this value MUST be greater than or equal to 1. + */ + maxDelay?: number; +} diff --git a/bff/node_modules/@smithy/types/dist-types/uri.d.ts b/bff/node_modules/@smithy/types/dist-types/uri.d.ts new file mode 100644 index 0000000..c009af4 --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/uri.d.ts @@ -0,0 +1,17 @@ +import type { QueryParameterBag } from "./http"; +/** + * @internal + * + * Represents the components parts of a Uniform Resource Identifier used to + * construct the target location of a Request. + */ +export type URI = { + protocol: string; + hostname: string; + port?: number; + path: string; + query?: QueryParameterBag; + username?: string; + password?: string; + fragment?: string; +}; diff --git a/bff/node_modules/@smithy/types/dist-types/util.d.ts b/bff/node_modules/@smithy/types/dist-types/util.d.ts new file mode 100644 index 0000000..755021d --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/util.d.ts @@ -0,0 +1,176 @@ +import type { Endpoint } from "./http"; +import type { FinalizeHandler, FinalizeHandlerArguments, FinalizeHandlerOutput } from "./middleware"; +import type { MetadataBearer } from "./response"; +/** + * @public + * + * A generic which checks if Type1 is exactly same as Type2. + */ +export type Exact = [Type1] extends [Type2] ? ([Type2] extends [Type1] ? true : false) : false; +/** + * @public + * + * A function that, given a Uint8Array of bytes, can produce a string + * representation thereof. The function may optionally attempt to + * convert other input types to Uint8Array before encoding. + * + * @example An encoder function that converts bytes to hexadecimal + * representation would return `'hello'` when given + * `new Uint8Array([104, 101, 108, 108, 111])`. + */ +export interface Encoder { + /** + * Caution: the `any` type on the input is for backwards compatibility. + * Runtime support is limited to Uint8Array and string by default. + * + * You may choose to support more encoder input types if overriding the default + * implementations. + */ + (input: Uint8Array | string | any): string; +} +/** + * @public + * + * A function that, given a string, can derive the bytes represented by that + * string. + * + * @example A decoder function that converts bytes to hexadecimal + * representation would return `new Uint8Array([104, 101, 108, 108, 111])` when + * given the string `'hello'`. + */ +export interface Decoder { + (input: string): Uint8Array; +} +/** + * @public + * + * A function that, when invoked, returns a promise that will be fulfilled with + * a value of type T. + * + * @example A function that reads credentials from shared SDK configuration + * files, assuming roles and collecting MFA tokens as necessary. + */ +export interface Provider { + (): Promise; +} +/** + * @public + * + * A tuple that represents an API name and optional version + * of a library built using the AWS SDK. + */ +export type UserAgentPair = [name: string, version?: string]; +/** + * @public + * + * User agent data that to be put into the request's user + * agent. + */ +export type UserAgent = UserAgentPair[]; +/** + * @public + * + * Parses a URL in string form into an Endpoint object. + */ +export interface UrlParser { + (url: string | URL): Endpoint; +} +/** + * @public + * + * A function that, when invoked, returns a promise that will be fulfilled with + * a value of type T. It memoizes the result from the previous invocation + * instead of calling the underlying resources every time. + * + * You can force the provider to refresh the memoized value by invoke the + * function with optional parameter hash with `forceRefresh` boolean key and + * value `true`. + * + * @example A function that reads credentials from IMDS service that could + * return expired credentials. The SDK will keep using the expired credentials + * until an unretryable service error requiring a force refresh of the + * credentials. + */ +export interface MemoizedProvider { + (options?: { + forceRefresh?: boolean; + }): Promise; +} +/** + * @public + * + * A function that, given a request body, determines the + * length of the body. This is used to determine the Content-Length + * that should be sent with a request. + * + * @example A function that reads a file stream and calculates + * the size of the file. + */ +export interface BodyLengthCalculator { + (body: any): number | undefined; +} +/** + * @public + * + * Object containing regionalization information of + * AWS services. + */ +export interface RegionInfo { + hostname: string; + partition: string; + path?: string; + signingService?: string; + signingRegion?: string; +} +/** + * @public + * + * Options to pass when calling {@link RegionInfoProvider} + */ +export interface RegionInfoProviderOptions { + /** + * Enables IPv6/IPv4 dualstack endpoint. + * @defaultValue false + */ + useDualstackEndpoint: boolean; + /** + * Enables FIPS compatible endpoints. + * @defaultValue false + */ + useFipsEndpoint: boolean; +} +/** + * @public + * + * Function returns designated service's regionalization + * information from given region. Each service client + * comes with its regionalization provider. it serves + * to provide the default values of related configurations + */ +export interface RegionInfoProvider { + (region: string, options?: RegionInfoProviderOptions): Promise; +} +/** + * @public + * + * Interface that specifies the retry behavior + */ +export interface RetryStrategy { + /** + * The retry mode describing how the retry strategy control the traffic flow. + */ + mode?: string; + /** + * the retry behavior the will invoke the next handler and handle the retry accordingly. + * This function should also update the $metadata from the response accordingly. + * @see {@link ResponseMetadata} + */ + retry: (next: FinalizeHandler, args: FinalizeHandlerArguments) => Promise>; +} +/** + * @public + * + * Indicates the parameter may be omitted if the parameter object T + * is equivalent to a Partial, i.e. all properties optional. + */ +export type OptionalParameter = Exact, T> extends true ? [] | [T] : [T]; diff --git a/bff/node_modules/@smithy/types/dist-types/waiter.d.ts b/bff/node_modules/@smithy/types/dist-types/waiter.d.ts new file mode 100644 index 0000000..870aa0a --- /dev/null +++ b/bff/node_modules/@smithy/types/dist-types/waiter.d.ts @@ -0,0 +1,35 @@ +import type { AbortController as DeprecatedAbortController } from "./abort"; +/** + * @public + */ +export interface WaiterConfiguration { + /** + * Required service client + */ + client: Client; + /** + * The amount of time in seconds a user is willing to wait for a waiter to complete. + */ + maxWaitTime: number; + /** + * @deprecated Use abortSignal + * Abort controller. Used for ending the waiter early. + */ + abortController?: AbortController | DeprecatedAbortController; + /** + * Abort Signal. Used for ending the waiter early. + */ + abortSignal?: AbortController["signal"] | DeprecatedAbortController["signal"]; + /** + * The minimum amount of time to delay between retries in seconds. This is the + * floor of the exponential backoff. This value defaults to service default + * if not specified. This value MUST be less than or equal to maxDelay and greater than 0. + */ + minDelay?: number; + /** + * The maximum amount of time to delay between retries in seconds. This is the + * ceiling of the exponential backoff. This value defaults to service default + * if not specified. If specified, this value MUST be greater than or equal to 1. + */ + maxDelay?: number; +} diff --git a/bff/node_modules/@smithy/types/package.json b/bff/node_modules/@smithy/types/package.json new file mode 100644 index 0000000..fc06ccf --- /dev/null +++ b/bff/node_modules/@smithy/types/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/types", + "version": "4.13.1", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline types", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4 && node scripts/downlevel", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:tsc -p tsconfig.test.json", + "extract:docs": "api-extractor run --local" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS Smithy Team", + "email": "", + "url": "https://smithy.io" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<=4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/types", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/types" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/url-parser/LICENSE b/bff/node_modules/@smithy/url-parser/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@smithy/url-parser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/url-parser/README.md b/bff/node_modules/@smithy/url-parser/README.md new file mode 100644 index 0000000..0d8d61e --- /dev/null +++ b/bff/node_modules/@smithy/url-parser/README.md @@ -0,0 +1,10 @@ +# @smithy/url-parser + +[![NPM version](https://img.shields.io/npm/v/@smithy/url-parser/latest.svg)](https://www.npmjs.com/package/@smithy/url-parser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/url-parser.svg)](https://www.npmjs.com/package/@smithy/url-parser) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/url-parser/dist-cjs/index.js b/bff/node_modules/@smithy/url-parser/dist-cjs/index.js new file mode 100644 index 0000000..ddc21b0 --- /dev/null +++ b/bff/node_modules/@smithy/url-parser/dist-cjs/index.js @@ -0,0 +1,23 @@ +'use strict'; + +var querystringParser = require('@smithy/querystring-parser'); + +const parseUrl = (url) => { + if (typeof url === "string") { + return parseUrl(new URL(url)); + } + const { hostname, pathname, port, protocol, search } = url; + let query; + if (search) { + query = querystringParser.parseQueryString(search); + } + return { + hostname, + port: port ? parseInt(port) : undefined, + protocol, + path: pathname, + query, + }; +}; + +exports.parseUrl = parseUrl; diff --git a/bff/node_modules/@smithy/url-parser/dist-es/index.js b/bff/node_modules/@smithy/url-parser/dist-es/index.js new file mode 100644 index 0000000..811f8bf --- /dev/null +++ b/bff/node_modules/@smithy/url-parser/dist-es/index.js @@ -0,0 +1,18 @@ +import { parseQueryString } from "@smithy/querystring-parser"; +export const parseUrl = (url) => { + if (typeof url === "string") { + return parseUrl(new URL(url)); + } + const { hostname, pathname, port, protocol, search } = url; + let query; + if (search) { + query = parseQueryString(search); + } + return { + hostname, + port: port ? parseInt(port) : undefined, + protocol, + path: pathname, + query, + }; +}; diff --git a/bff/node_modules/@smithy/url-parser/dist-types/index.d.ts b/bff/node_modules/@smithy/url-parser/dist-types/index.d.ts new file mode 100644 index 0000000..9b66f46 --- /dev/null +++ b/bff/node_modules/@smithy/url-parser/dist-types/index.d.ts @@ -0,0 +1,5 @@ +import type { UrlParser } from "@smithy/types"; +/** + * @internal + */ +export declare const parseUrl: UrlParser; diff --git a/bff/node_modules/@smithy/url-parser/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/url-parser/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..d6f0ec5 --- /dev/null +++ b/bff/node_modules/@smithy/url-parser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,5 @@ +import { UrlParser } from "@smithy/types"; +/** + * @internal + */ +export declare const parseUrl: UrlParser; diff --git a/bff/node_modules/@smithy/url-parser/package.json b/bff/node_modules/@smithy/url-parser/package.json new file mode 100644 index 0000000..26ba764 --- /dev/null +++ b/bff/node_modules/@smithy/url-parser/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/url-parser", + "version": "4.2.12", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline url-parser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/querystring-parser": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/url-parser", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/url-parser" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-base64/LICENSE b/bff/node_modules/@smithy/util-base64/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-base64/README.md b/bff/node_modules/@smithy/util-base64/README.md new file mode 100644 index 0000000..c9b6c87 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/README.md @@ -0,0 +1,4 @@ +# @smithy/util-base64 + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-base64/latest.svg)](https://www.npmjs.com/package/@smithy/util-base64) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-base64.svg)](https://www.npmjs.com/package/@smithy/util-base64) diff --git a/bff/node_modules/@smithy/util-base64/dist-cjs/constants.browser.js b/bff/node_modules/@smithy/util-base64/dist-cjs/constants.browser.js new file mode 100644 index 0000000..a41d4de --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-cjs/constants.browser.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.maxLetterValue = exports.bitsPerByte = exports.bitsPerLetter = exports.alphabetByValue = exports.alphabetByEncoding = void 0; +const chars = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`; +exports.alphabetByEncoding = Object.entries(chars).reduce((acc, [i, c]) => { + acc[c] = Number(i); + return acc; +}, {}); +exports.alphabetByValue = chars.split(""); +exports.bitsPerLetter = 6; +exports.bitsPerByte = 8; +exports.maxLetterValue = 0b111111; diff --git a/bff/node_modules/@smithy/util-base64/dist-cjs/fromBase64.browser.js b/bff/node_modules/@smithy/util-base64/dist-cjs/fromBase64.browser.js new file mode 100644 index 0000000..a5baffd --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-cjs/fromBase64.browser.js @@ -0,0 +1,40 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromBase64 = void 0; +const constants_browser_1 = require("./constants.browser"); +const fromBase64 = (input) => { + let totalByteLength = (input.length / 4) * 3; + if (input.slice(-2) === "==") { + totalByteLength -= 2; + } + else if (input.slice(-1) === "=") { + totalByteLength--; + } + const out = new ArrayBuffer(totalByteLength); + const dataView = new DataView(out); + for (let i = 0; i < input.length; i += 4) { + let bits = 0; + let bitLength = 0; + for (let j = i, limit = i + 3; j <= limit; j++) { + if (input[j] !== "=") { + if (!(input[j] in constants_browser_1.alphabetByEncoding)) { + throw new TypeError(`Invalid character ${input[j]} in base64 string.`); + } + bits |= constants_browser_1.alphabetByEncoding[input[j]] << ((limit - j) * constants_browser_1.bitsPerLetter); + bitLength += constants_browser_1.bitsPerLetter; + } + else { + bits >>= constants_browser_1.bitsPerLetter; + } + } + const chunkOffset = (i / 4) * 3; + bits >>= bitLength % constants_browser_1.bitsPerByte; + const byteLength = Math.floor(bitLength / constants_browser_1.bitsPerByte); + for (let k = 0; k < byteLength; k++) { + const offset = (byteLength - k - 1) * constants_browser_1.bitsPerByte; + dataView.setUint8(chunkOffset + k, (bits & (255 << offset)) >> offset); + } + } + return new Uint8Array(out); +}; +exports.fromBase64 = fromBase64; diff --git a/bff/node_modules/@smithy/util-base64/dist-cjs/fromBase64.js b/bff/node_modules/@smithy/util-base64/dist-cjs/fromBase64.js new file mode 100644 index 0000000..b06a7b8 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-cjs/fromBase64.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.fromBase64 = void 0; +const util_buffer_from_1 = require("@smithy/util-buffer-from"); +const BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/; +const fromBase64 = (input) => { + if ((input.length * 3) % 4 !== 0) { + throw new TypeError(`Incorrect padding on base64 string.`); + } + if (!BASE64_REGEX.exec(input)) { + throw new TypeError(`Invalid base64 string.`); + } + const buffer = (0, util_buffer_from_1.fromString)(input, "base64"); + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); +}; +exports.fromBase64 = fromBase64; diff --git a/bff/node_modules/@smithy/util-base64/dist-cjs/index.js b/bff/node_modules/@smithy/util-base64/dist-cjs/index.js new file mode 100644 index 0000000..e002046 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-cjs/index.js @@ -0,0 +1,27 @@ +'use strict'; + +var fromBase64 = require('./fromBase64'); +var toBase64 = require('./toBase64'); + + + +Object.prototype.hasOwnProperty.call(fromBase64, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: fromBase64['__proto__'] + }); + +Object.keys(fromBase64).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = fromBase64[k]; +}); +Object.prototype.hasOwnProperty.call(toBase64, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: toBase64['__proto__'] + }); + +Object.keys(toBase64).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = toBase64[k]; +}); diff --git a/bff/node_modules/@smithy/util-base64/dist-cjs/toBase64.browser.js b/bff/node_modules/@smithy/util-base64/dist-cjs/toBase64.browser.js new file mode 100644 index 0000000..612ba57 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-cjs/toBase64.browser.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toBase64 = toBase64; +const util_utf8_1 = require("@smithy/util-utf8"); +const constants_browser_1 = require("./constants.browser"); +function toBase64(_input) { + let input; + if (typeof _input === "string") { + input = (0, util_utf8_1.fromUtf8)(_input); + } + else { + input = _input; + } + const isArrayLike = typeof input === "object" && typeof input.length === "number"; + const isUint8Array = typeof input === "object" && + typeof input.byteOffset === "number" && + typeof input.byteLength === "number"; + if (!isArrayLike && !isUint8Array) { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + let str = ""; + for (let i = 0; i < input.length; i += 3) { + let bits = 0; + let bitLength = 0; + for (let j = i, limit = Math.min(i + 3, input.length); j < limit; j++) { + bits |= input[j] << ((limit - j - 1) * constants_browser_1.bitsPerByte); + bitLength += constants_browser_1.bitsPerByte; + } + const bitClusterCount = Math.ceil(bitLength / constants_browser_1.bitsPerLetter); + bits <<= bitClusterCount * constants_browser_1.bitsPerLetter - bitLength; + for (let k = 1; k <= bitClusterCount; k++) { + const offset = (bitClusterCount - k) * constants_browser_1.bitsPerLetter; + str += constants_browser_1.alphabetByValue[(bits & (constants_browser_1.maxLetterValue << offset)) >> offset]; + } + str += "==".slice(0, 4 - bitClusterCount); + } + return str; +} diff --git a/bff/node_modules/@smithy/util-base64/dist-cjs/toBase64.js b/bff/node_modules/@smithy/util-base64/dist-cjs/toBase64.js new file mode 100644 index 0000000..0590ce3 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-cjs/toBase64.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toBase64 = void 0; +const util_buffer_from_1 = require("@smithy/util-buffer-from"); +const util_utf8_1 = require("@smithy/util-utf8"); +const toBase64 = (_input) => { + let input; + if (typeof _input === "string") { + input = (0, util_utf8_1.fromUtf8)(_input); + } + else { + input = _input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + return (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString("base64"); +}; +exports.toBase64 = toBase64; diff --git a/bff/node_modules/@smithy/util-base64/dist-es/constants.browser.js b/bff/node_modules/@smithy/util-base64/dist-es/constants.browser.js new file mode 100644 index 0000000..7a5d1b3 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-es/constants.browser.js @@ -0,0 +1,9 @@ +const chars = `ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`; +export const alphabetByEncoding = Object.entries(chars).reduce((acc, [i, c]) => { + acc[c] = Number(i); + return acc; +}, {}); +export const alphabetByValue = chars.split(""); +export const bitsPerLetter = 6; +export const bitsPerByte = 8; +export const maxLetterValue = 0b111111; diff --git a/bff/node_modules/@smithy/util-base64/dist-es/fromBase64.browser.js b/bff/node_modules/@smithy/util-base64/dist-es/fromBase64.browser.js new file mode 100644 index 0000000..c2c6a66 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-es/fromBase64.browser.js @@ -0,0 +1,36 @@ +import { alphabetByEncoding, bitsPerByte, bitsPerLetter } from "./constants.browser"; +export const fromBase64 = (input) => { + let totalByteLength = (input.length / 4) * 3; + if (input.slice(-2) === "==") { + totalByteLength -= 2; + } + else if (input.slice(-1) === "=") { + totalByteLength--; + } + const out = new ArrayBuffer(totalByteLength); + const dataView = new DataView(out); + for (let i = 0; i < input.length; i += 4) { + let bits = 0; + let bitLength = 0; + for (let j = i, limit = i + 3; j <= limit; j++) { + if (input[j] !== "=") { + if (!(input[j] in alphabetByEncoding)) { + throw new TypeError(`Invalid character ${input[j]} in base64 string.`); + } + bits |= alphabetByEncoding[input[j]] << ((limit - j) * bitsPerLetter); + bitLength += bitsPerLetter; + } + else { + bits >>= bitsPerLetter; + } + } + const chunkOffset = (i / 4) * 3; + bits >>= bitLength % bitsPerByte; + const byteLength = Math.floor(bitLength / bitsPerByte); + for (let k = 0; k < byteLength; k++) { + const offset = (byteLength - k - 1) * bitsPerByte; + dataView.setUint8(chunkOffset + k, (bits & (255 << offset)) >> offset); + } + } + return new Uint8Array(out); +}; diff --git a/bff/node_modules/@smithy/util-base64/dist-es/fromBase64.js b/bff/node_modules/@smithy/util-base64/dist-es/fromBase64.js new file mode 100644 index 0000000..5197e93 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-es/fromBase64.js @@ -0,0 +1,12 @@ +import { fromString } from "@smithy/util-buffer-from"; +const BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/; +export const fromBase64 = (input) => { + if ((input.length * 3) % 4 !== 0) { + throw new TypeError(`Incorrect padding on base64 string.`); + } + if (!BASE64_REGEX.exec(input)) { + throw new TypeError(`Invalid base64 string.`); + } + const buffer = fromString(input, "base64"); + return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength); +}; diff --git a/bff/node_modules/@smithy/util-base64/dist-es/index.js b/bff/node_modules/@smithy/util-base64/dist-es/index.js new file mode 100644 index 0000000..594bd43 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./fromBase64"; +export * from "./toBase64"; diff --git a/bff/node_modules/@smithy/util-base64/dist-es/toBase64.browser.js b/bff/node_modules/@smithy/util-base64/dist-es/toBase64.browser.js new file mode 100644 index 0000000..2a03a9d --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-es/toBase64.browser.js @@ -0,0 +1,35 @@ +import { fromUtf8 } from "@smithy/util-utf8"; +import { alphabetByValue, bitsPerByte, bitsPerLetter, maxLetterValue } from "./constants.browser"; +export function toBase64(_input) { + let input; + if (typeof _input === "string") { + input = fromUtf8(_input); + } + else { + input = _input; + } + const isArrayLike = typeof input === "object" && typeof input.length === "number"; + const isUint8Array = typeof input === "object" && + typeof input.byteOffset === "number" && + typeof input.byteLength === "number"; + if (!isArrayLike && !isUint8Array) { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + let str = ""; + for (let i = 0; i < input.length; i += 3) { + let bits = 0; + let bitLength = 0; + for (let j = i, limit = Math.min(i + 3, input.length); j < limit; j++) { + bits |= input[j] << ((limit - j - 1) * bitsPerByte); + bitLength += bitsPerByte; + } + const bitClusterCount = Math.ceil(bitLength / bitsPerLetter); + bits <<= bitClusterCount * bitsPerLetter - bitLength; + for (let k = 1; k <= bitClusterCount; k++) { + const offset = (bitClusterCount - k) * bitsPerLetter; + str += alphabetByValue[(bits & (maxLetterValue << offset)) >> offset]; + } + str += "==".slice(0, 4 - bitClusterCount); + } + return str; +} diff --git a/bff/node_modules/@smithy/util-base64/dist-es/toBase64.js b/bff/node_modules/@smithy/util-base64/dist-es/toBase64.js new file mode 100644 index 0000000..61f03ce --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-es/toBase64.js @@ -0,0 +1,15 @@ +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +import { fromUtf8 } from "@smithy/util-utf8"; +export const toBase64 = (_input) => { + let input; + if (typeof _input === "string") { + input = fromUtf8(_input); + } + else { + input = _input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("base64"); +}; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/constants.browser.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/constants.browser.d.ts new file mode 100644 index 0000000..29bb817 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/constants.browser.d.ts @@ -0,0 +1,5 @@ +export declare const alphabetByEncoding: Record; +export declare const alphabetByValue: Array; +export declare const bitsPerLetter = 6; +export declare const bitsPerByte = 8; +export declare const maxLetterValue = 63; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/fromBase64.browser.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/fromBase64.browser.d.ts new file mode 100644 index 0000000..6a640f1 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/fromBase64.browser.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a base-64 encoded string to a Uint8Array of bytes. + * + * @param input The base-64 encoded string + * + * @see https://tools.ietf.org/html/rfc4648#section-4 + */ +export declare const fromBase64: (input: string) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/fromBase64.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/fromBase64.d.ts new file mode 100644 index 0000000..1878a89 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/fromBase64.d.ts @@ -0,0 +1,7 @@ +/** + * Converts a base-64 encoded string to a Uint8Array of bytes using Node.JS's + * `buffer` module. + * + * @param input The base-64 encoded string + */ +export declare const fromBase64: (input: string) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/index.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/index.d.ts new file mode 100644 index 0000000..594bd43 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fromBase64"; +export * from "./toBase64"; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/toBase64.browser.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/toBase64.browser.d.ts new file mode 100644 index 0000000..5f5615e --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/toBase64.browser.d.ts @@ -0,0 +1,9 @@ +/** + * Converts a Uint8Array of binary data or a utf-8 string to a base-64 encoded string. + * + * @param _input - the binary data or string to encode. + * @returns base64 string. + * + * @see https://tools.ietf.org/html/rfc4648#section-4 + */ +export declare function toBase64(_input: Uint8Array | string): string; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/toBase64.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/toBase64.d.ts new file mode 100644 index 0000000..96bd0ed --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/toBase64.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a Uint8Array of binary data or a utf-8 string to a base-64 encoded string using + * Node.JS's `buffer` module. + * + * @param _input - the binary data or string to encode. + * @returns base64 string. + */ +export declare const toBase64: (_input: Uint8Array | string) => string; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/constants.browser.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/constants.browser.d.ts new file mode 100644 index 0000000..e7af625 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/constants.browser.d.ts @@ -0,0 +1,5 @@ +export declare const alphabetByEncoding: Record; +export declare const alphabetByValue: Array; +export declare const bitsPerLetter = 6; +export declare const bitsPerByte = 8; +export declare const maxLetterValue = 63; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.browser.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.browser.d.ts new file mode 100644 index 0000000..3a50006 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.browser.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a base-64 encoded string to a Uint8Array of bytes. + * + * @param input The base-64 encoded string + * + * @see https://tools.ietf.org/html/rfc4648#section-4 + */ +export declare const fromBase64: (input: string) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.d.ts new file mode 100644 index 0000000..f84c7c6 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/fromBase64.d.ts @@ -0,0 +1,7 @@ +/** + * Converts a base-64 encoded string to a Uint8Array of bytes using Node.JS's + * `buffer` module. + * + * @param input The base-64 encoded string + */ +export declare const fromBase64: (input: string) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..c4e1d03 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./fromBase64"; +export * from "./toBase64"; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.browser.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.browser.d.ts new file mode 100644 index 0000000..260f696 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.browser.d.ts @@ -0,0 +1,9 @@ +/** + * Converts a Uint8Array of binary data or a utf-8 string to a base-64 encoded string. + * + * @param _input - the binary data or string to encode. + * @returns base64 string. + * + * @see https://tools.ietf.org/html/rfc4648#section-4 + */ +export declare function toBase64(_input: Uint8Array | string): string; diff --git a/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.d.ts b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.d.ts new file mode 100644 index 0000000..7e8bb70 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/dist-types/ts3.4/toBase64.d.ts @@ -0,0 +1,8 @@ +/** + * Converts a Uint8Array of binary data or a utf-8 string to a base-64 encoded string using + * Node.JS's `buffer` module. + * + * @param _input - the binary data or string to encode. + * @returns base64 string. + */ +export declare const toBase64: (_input: Uint8Array | string) => string; diff --git a/bff/node_modules/@smithy/util-base64/package.json b/bff/node_modules/@smithy/util-base64/package.json new file mode 100644 index 0000000..462f819 --- /dev/null +++ b/bff/node_modules/@smithy/util-base64/package.json @@ -0,0 +1,74 @@ +{ + "name": "@smithy/util-base64", + "version": "4.3.2", + "description": "A Base64 <-> UInt8Array converter", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-base64", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/fromBase64": "./dist-es/fromBase64.browser", + "./dist-es/toBase64": "./dist-es/toBase64.browser" + }, + "react-native": { + "./dist-es/fromBase64": "./dist-es/fromBase64.browser", + "./dist-es/toBase64": "./dist-es/toBase64.browser", + "./dist-cjs/fromBase64": "./dist-cjs/fromBase64.browser", + "./dist-cjs/toBase64": "./dist-cjs/toBase64.browser" + }, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-base64", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-base64" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-body-length-browser/LICENSE b/bff/node_modules/@smithy/util-body-length-browser/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-body-length-browser/README.md b/bff/node_modules/@smithy/util-body-length-browser/README.md new file mode 100644 index 0000000..460d092 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/README.md @@ -0,0 +1,12 @@ +# @smithy/util-body-length-browser + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-body-length-browser/latest.svg)](https://www.npmjs.com/package/@smithy/util-body-length-browser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-body-length-browser.svg)](https://www.npmjs.com/package/@smithy/util-body-length-browser) + +Determines the length of a request body in browsers + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/util-body-length-browser/dist-cjs/index.js b/bff/node_modules/@smithy/util-body-length-browser/dist-cjs/index.js new file mode 100644 index 0000000..5cf421c --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/dist-cjs/index.js @@ -0,0 +1,30 @@ +'use strict'; + +const TEXT_ENCODER = typeof TextEncoder == "function" ? new TextEncoder() : null; +const calculateBodyLength = (body) => { + if (typeof body === "string") { + if (TEXT_ENCODER) { + return TEXT_ENCODER.encode(body).byteLength; + } + let len = body.length; + for (let i = len - 1; i >= 0; i--) { + const code = body.charCodeAt(i); + if (code > 0x7f && code <= 0x7ff) + len++; + else if (code > 0x7ff && code <= 0xffff) + len += 2; + if (code >= 0xdc00 && code <= 0xdfff) + i--; + } + return len; + } + else if (typeof body.byteLength === "number") { + return body.byteLength; + } + else if (typeof body.size === "number") { + return body.size; + } + throw new Error(`Body Length computation failed for ${body}`); +}; + +exports.calculateBodyLength = calculateBodyLength; diff --git a/bff/node_modules/@smithy/util-body-length-browser/dist-es/calculateBodyLength.js b/bff/node_modules/@smithy/util-body-length-browser/dist-es/calculateBodyLength.js new file mode 100644 index 0000000..6b994ca --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/dist-es/calculateBodyLength.js @@ -0,0 +1,26 @@ +const TEXT_ENCODER = typeof TextEncoder == "function" ? new TextEncoder() : null; +export const calculateBodyLength = (body) => { + if (typeof body === "string") { + if (TEXT_ENCODER) { + return TEXT_ENCODER.encode(body).byteLength; + } + let len = body.length; + for (let i = len - 1; i >= 0; i--) { + const code = body.charCodeAt(i); + if (code > 0x7f && code <= 0x7ff) + len++; + else if (code > 0x7ff && code <= 0xffff) + len += 2; + if (code >= 0xdc00 && code <= 0xdfff) + i--; + } + return len; + } + else if (typeof body.byteLength === "number") { + return body.byteLength; + } + else if (typeof body.size === "number") { + return body.size; + } + throw new Error(`Body Length computation failed for ${body}`); +}; diff --git a/bff/node_modules/@smithy/util-body-length-browser/dist-es/index.js b/bff/node_modules/@smithy/util-body-length-browser/dist-es/index.js new file mode 100644 index 0000000..16ba478 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/dist-es/index.js @@ -0,0 +1 @@ +export * from "./calculateBodyLength"; diff --git a/bff/node_modules/@smithy/util-body-length-browser/dist-types/calculateBodyLength.d.ts b/bff/node_modules/@smithy/util-body-length-browser/dist-types/calculateBodyLength.d.ts new file mode 100644 index 0000000..8e1bdb0 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/dist-types/calculateBodyLength.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const calculateBodyLength: (body: any) => number | undefined; diff --git a/bff/node_modules/@smithy/util-body-length-browser/dist-types/index.d.ts b/bff/node_modules/@smithy/util-body-length-browser/dist-types/index.d.ts new file mode 100644 index 0000000..7b4a0d7 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./calculateBodyLength"; diff --git a/bff/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/calculateBodyLength.d.ts b/bff/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/calculateBodyLength.d.ts new file mode 100644 index 0000000..3260536 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/calculateBodyLength.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const calculateBodyLength: (body: any) => number | undefined; diff --git a/bff/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ab6cb83 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./calculateBodyLength"; diff --git a/bff/node_modules/@smithy/util-body-length-browser/package.json b/bff/node_modules/@smithy/util-body-length-browser/package.json new file mode 100644 index 0000000..8acddaa --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-browser/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/util-body-length-browser", + "description": "Determines the length of a request body in browsers", + "version": "4.2.2", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-body-length-browser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "tslib": "^2.6.2" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-body-length-browser", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-body-length-browser" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + }, + "engines": { + "node": ">=18.0.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-body-length-node/LICENSE b/bff/node_modules/@smithy/util-body-length-node/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-body-length-node/README.md b/bff/node_modules/@smithy/util-body-length-node/README.md new file mode 100644 index 0000000..9a80efe --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/README.md @@ -0,0 +1,12 @@ +# @smithy/util-body-length-node + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-body-length-node/latest.svg)](https://www.npmjs.com/package/@smithy/util-body-length-node) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-body-length-node.svg)](https://www.npmjs.com/package/@smithy/util-body-length-node) + +Determines the length of a request body in node.js + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/util-body-length-node/dist-cjs/index.js b/bff/node_modules/@smithy/util-body-length-node/dist-cjs/index.js new file mode 100644 index 0000000..a388e28 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/dist-cjs/index.js @@ -0,0 +1,32 @@ +'use strict'; + +var node_fs = require('node:fs'); + +const calculateBodyLength = (body) => { + if (!body) { + return 0; + } + if (typeof body === "string") { + return Buffer.byteLength(body); + } + else if (typeof body.byteLength === "number") { + return body.byteLength; + } + else if (typeof body.size === "number") { + return body.size; + } + else if (typeof body.start === "number" && typeof body.end === "number") { + return body.end + 1 - body.start; + } + else if (body instanceof node_fs.ReadStream) { + if (body.path != null) { + return node_fs.lstatSync(body.path).size; + } + else if (typeof body.fd === "number") { + return node_fs.fstatSync(body.fd).size; + } + } + throw new Error(`Body Length computation failed for ${body}`); +}; + +exports.calculateBodyLength = calculateBodyLength; diff --git a/bff/node_modules/@smithy/util-body-length-node/dist-es/calculateBodyLength.js b/bff/node_modules/@smithy/util-body-length-node/dist-es/calculateBodyLength.js new file mode 100644 index 0000000..924c033 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/dist-es/calculateBodyLength.js @@ -0,0 +1,27 @@ +import { fstatSync, lstatSync, ReadStream } from "node:fs"; +export const calculateBodyLength = (body) => { + if (!body) { + return 0; + } + if (typeof body === "string") { + return Buffer.byteLength(body); + } + else if (typeof body.byteLength === "number") { + return body.byteLength; + } + else if (typeof body.size === "number") { + return body.size; + } + else if (typeof body.start === "number" && typeof body.end === "number") { + return body.end + 1 - body.start; + } + else if (body instanceof ReadStream) { + if (body.path != null) { + return lstatSync(body.path).size; + } + else if (typeof body.fd === "number") { + return fstatSync(body.fd).size; + } + } + throw new Error(`Body Length computation failed for ${body}`); +}; diff --git a/bff/node_modules/@smithy/util-body-length-node/dist-es/index.js b/bff/node_modules/@smithy/util-body-length-node/dist-es/index.js new file mode 100644 index 0000000..16ba478 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/dist-es/index.js @@ -0,0 +1 @@ +export * from "./calculateBodyLength"; diff --git a/bff/node_modules/@smithy/util-body-length-node/dist-types/calculateBodyLength.d.ts b/bff/node_modules/@smithy/util-body-length-node/dist-types/calculateBodyLength.d.ts new file mode 100644 index 0000000..8e1bdb0 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/dist-types/calculateBodyLength.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const calculateBodyLength: (body: any) => number | undefined; diff --git a/bff/node_modules/@smithy/util-body-length-node/dist-types/index.d.ts b/bff/node_modules/@smithy/util-body-length-node/dist-types/index.d.ts new file mode 100644 index 0000000..7b4a0d7 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./calculateBodyLength"; diff --git a/bff/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/calculateBodyLength.d.ts b/bff/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/calculateBodyLength.d.ts new file mode 100644 index 0000000..3260536 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/calculateBodyLength.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const calculateBodyLength: (body: any) => number | undefined; diff --git a/bff/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ab6cb83 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./calculateBodyLength"; diff --git a/bff/node_modules/@smithy/util-body-length-node/package.json b/bff/node_modules/@smithy/util-body-length-node/package.json new file mode 100644 index 0000000..9cacb02 --- /dev/null +++ b/bff/node_modules/@smithy/util-body-length-node/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/util-body-length-node", + "description": "Determines the length of a request body in node.js", + "version": "4.2.3", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-body-length-node", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-body-length-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-body-length-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-buffer-from/LICENSE b/bff/node_modules/@smithy/util-buffer-from/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/util-buffer-from/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-buffer-from/README.md b/bff/node_modules/@smithy/util-buffer-from/README.md new file mode 100644 index 0000000..c896b04 --- /dev/null +++ b/bff/node_modules/@smithy/util-buffer-from/README.md @@ -0,0 +1,10 @@ +# @smithy/util-buffer-from + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-buffer-from/latest.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-buffer-from.svg)](https://www.npmjs.com/package/@smithy/util-buffer-from) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/util-buffer-from/dist-cjs/index.js b/bff/node_modules/@smithy/util-buffer-from/dist-cjs/index.js new file mode 100644 index 0000000..b577c9c --- /dev/null +++ b/bff/node_modules/@smithy/util-buffer-from/dist-cjs/index.js @@ -0,0 +1,20 @@ +'use strict'; + +var isArrayBuffer = require('@smithy/is-array-buffer'); +var buffer = require('buffer'); + +const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer.isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return buffer.Buffer.from(input, offset, length); +}; +const fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? buffer.Buffer.from(input, encoding) : buffer.Buffer.from(input); +}; + +exports.fromArrayBuffer = fromArrayBuffer; +exports.fromString = fromString; diff --git a/bff/node_modules/@smithy/util-buffer-from/dist-es/index.js b/bff/node_modules/@smithy/util-buffer-from/dist-es/index.js new file mode 100644 index 0000000..718f831 --- /dev/null +++ b/bff/node_modules/@smithy/util-buffer-from/dist-es/index.js @@ -0,0 +1,14 @@ +import { isArrayBuffer } from "@smithy/is-array-buffer"; +import { Buffer } from "buffer"; +export const fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => { + if (!isArrayBuffer(input)) { + throw new TypeError(`The "input" argument must be ArrayBuffer. Received type ${typeof input} (${input})`); + } + return Buffer.from(input, offset, length); +}; +export const fromString = (input, encoding) => { + if (typeof input !== "string") { + throw new TypeError(`The "input" argument must be of type string. Received type ${typeof input} (${input})`); + } + return encoding ? Buffer.from(input, encoding) : Buffer.from(input); +}; diff --git a/bff/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts b/bff/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts new file mode 100644 index 0000000..a523134 --- /dev/null +++ b/bff/node_modules/@smithy/util-buffer-from/dist-types/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/bff/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..f9173f7 --- /dev/null +++ b/bff/node_modules/@smithy/util-buffer-from/dist-types/ts3.4/index.d.ts @@ -0,0 +1,13 @@ +import { Buffer } from "buffer"; +/** + * @internal + */ +export declare const fromArrayBuffer: (input: ArrayBuffer, offset?: number, length?: number) => Buffer; +/** + * @internal + */ +export type StringEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "base64" | "latin1" | "binary" | "hex"; +/** + * @internal + */ +export declare const fromString: (input: string, encoding?: StringEncoding) => Buffer; diff --git a/bff/node_modules/@smithy/util-buffer-from/package.json b/bff/node_modules/@smithy/util-buffer-from/package.json new file mode 100644 index 0000000..daa813d --- /dev/null +++ b/bff/node_modules/@smithy/util-buffer-from/package.json @@ -0,0 +1,62 @@ +{ + "name": "@smithy/util-buffer-from", + "version": "4.2.2", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-buffer-from", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-buffer-from", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-buffer-from" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-config-provider/LICENSE b/bff/node_modules/@smithy/util-config-provider/LICENSE new file mode 100644 index 0000000..74d4e5c --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-config-provider/README.md b/bff/node_modules/@smithy/util-config-provider/README.md new file mode 100644 index 0000000..5b0341d --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/README.md @@ -0,0 +1,4 @@ +# @smithy/util-config-provider + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-config-provider/latest.svg)](https://www.npmjs.com/package/@smithy/util-config-provider) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-config-provider.svg)](https://www.npmjs.com/package/@smithy/util-config-provider) diff --git a/bff/node_modules/@smithy/util-config-provider/dist-cjs/index.js b/bff/node_modules/@smithy/util-config-provider/dist-cjs/index.js new file mode 100644 index 0000000..52d176d --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-cjs/index.js @@ -0,0 +1,30 @@ +'use strict'; + +const booleanSelector = (obj, key, type) => { + if (!(key in obj)) + return undefined; + if (obj[key] === "true") + return true; + if (obj[key] === "false") + return false; + throw new Error(`Cannot load ${type} "${key}". Expected "true" or "false", got ${obj[key]}.`); +}; + +const numberSelector = (obj, key, type) => { + if (!(key in obj)) + return undefined; + const numberValue = parseInt(obj[key], 10); + if (Number.isNaN(numberValue)) { + throw new TypeError(`Cannot load ${type} '${key}'. Expected number, got '${obj[key]}'.`); + } + return numberValue; +}; + +exports.SelectorType = void 0; +(function (SelectorType) { + SelectorType["ENV"] = "env"; + SelectorType["CONFIG"] = "shared config entry"; +})(exports.SelectorType || (exports.SelectorType = {})); + +exports.booleanSelector = booleanSelector; +exports.numberSelector = numberSelector; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-es/booleanSelector.js b/bff/node_modules/@smithy/util-config-provider/dist-es/booleanSelector.js new file mode 100644 index 0000000..6ba2261 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-es/booleanSelector.js @@ -0,0 +1,9 @@ +export const booleanSelector = (obj, key, type) => { + if (!(key in obj)) + return undefined; + if (obj[key] === "true") + return true; + if (obj[key] === "false") + return false; + throw new Error(`Cannot load ${type} "${key}". Expected "true" or "false", got ${obj[key]}.`); +}; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-es/index.js b/bff/node_modules/@smithy/util-config-provider/dist-es/index.js new file mode 100644 index 0000000..a926de8 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./booleanSelector"; +export * from "./numberSelector"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-es/numberSelector.js b/bff/node_modules/@smithy/util-config-provider/dist-es/numberSelector.js new file mode 100644 index 0000000..81cfe40 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-es/numberSelector.js @@ -0,0 +1,9 @@ +export const numberSelector = (obj, key, type) => { + if (!(key in obj)) + return undefined; + const numberValue = parseInt(obj[key], 10); + if (Number.isNaN(numberValue)) { + throw new TypeError(`Cannot load ${type} '${key}'. Expected number, got '${obj[key]}'.`); + } + return numberValue; +}; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-es/types.js b/bff/node_modules/@smithy/util-config-provider/dist-es/types.js new file mode 100644 index 0000000..5b10fb5 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-es/types.js @@ -0,0 +1,5 @@ +export var SelectorType; +(function (SelectorType) { + SelectorType["ENV"] = "env"; + SelectorType["CONFIG"] = "shared config entry"; +})(SelectorType || (SelectorType = {})); diff --git a/bff/node_modules/@smithy/util-config-provider/dist-types/booleanSelector.d.ts b/bff/node_modules/@smithy/util-config-provider/dist-types/booleanSelector.d.ts new file mode 100644 index 0000000..6408abf --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-types/booleanSelector.d.ts @@ -0,0 +1,10 @@ +import type { SelectorType } from "./types"; +/** + * Returns boolean value true/false for string value "true"/"false", + * if the string is defined in obj[key] + * Returns undefined, if obj[key] is not defined. + * Throws error for all other cases. + * + * @internal + */ +export declare const booleanSelector: (obj: Record, key: string, type: SelectorType) => boolean | undefined; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-types/index.d.ts b/bff/node_modules/@smithy/util-config-provider/dist-types/index.d.ts new file mode 100644 index 0000000..a926de8 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./booleanSelector"; +export * from "./numberSelector"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-types/numberSelector.d.ts b/bff/node_modules/@smithy/util-config-provider/dist-types/numberSelector.d.ts new file mode 100644 index 0000000..55ddc29 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-types/numberSelector.d.ts @@ -0,0 +1,9 @@ +import type { SelectorType } from "./types"; +/** + * Returns number value for string value, if the string is defined in obj[key]. + * Returns undefined, if obj[key] is not defined. + * Throws error for all other cases. + * + * @internal + */ +export declare const numberSelector: (obj: Record, key: string, type: SelectorType) => number | undefined; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/booleanSelector.d.ts b/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/booleanSelector.d.ts new file mode 100644 index 0000000..0b85452 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/booleanSelector.d.ts @@ -0,0 +1,10 @@ +import { SelectorType } from "./types"; +/** + * Returns boolean value true/false for string value "true"/"false", + * if the string is defined in obj[key] + * Returns undefined, if obj[key] is not defined. + * Throws error for all other cases. + * + * @internal + */ +export declare const booleanSelector: (obj: Record, key: string, type: SelectorType) => boolean | undefined; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..02fd81d --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./booleanSelector"; +export * from "./numberSelector"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/numberSelector.d.ts b/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/numberSelector.d.ts new file mode 100644 index 0000000..3a34671 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/numberSelector.d.ts @@ -0,0 +1,9 @@ +import { SelectorType } from "./types"; +/** + * Returns number value for string value, if the string is defined in obj[key]. + * Returns undefined, if obj[key] is not defined. + * Throws error for all other cases. + * + * @internal + */ +export declare const numberSelector: (obj: Record, key: string, type: SelectorType) => number | undefined; diff --git a/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/types.d.ts b/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..e01c128 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-types/ts3.4/types.d.ts @@ -0,0 +1,4 @@ +export declare enum SelectorType { + ENV = "env", + CONFIG = "shared config entry" +} diff --git a/bff/node_modules/@smithy/util-config-provider/dist-types/types.d.ts b/bff/node_modules/@smithy/util-config-provider/dist-types/types.d.ts new file mode 100644 index 0000000..caa65d7 --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/dist-types/types.d.ts @@ -0,0 +1,4 @@ +export declare enum SelectorType { + ENV = "env", + CONFIG = "shared config entry" +} diff --git a/bff/node_modules/@smithy/util-config-provider/package.json b/bff/node_modules/@smithy/util-config-provider/package.json new file mode 100644 index 0000000..f82d33c --- /dev/null +++ b/bff/node_modules/@smithy/util-config-provider/package.json @@ -0,0 +1,63 @@ +{ + "name": "@smithy/util-config-provider", + "version": "4.2.2", + "description": "Utilities package for configuration providers", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-config-provider", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "email": "", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "dependencies": { + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-config-provider", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-config-provider" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/LICENSE b/bff/node_modules/@smithy/util-defaults-mode-browser/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/README.md b/bff/node_modules/@smithy/util-defaults-mode-browser/README.md new file mode 100644 index 0000000..3cca1d9 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/README.md @@ -0,0 +1,17 @@ +# @smithy/util-defaults-mode-browser + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-defaults-mode-browser/latest.svg)](https://www.npmjs.com/package/@smithy/util-defaults-mode-browser) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-defaults-mode-browser.svg)](https://www.npmjs.com/package/@smithy/util-defaults-mode-browser) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/constants.js b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/constants.js new file mode 100644 index 0000000..3733506 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/constants.js @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULTS_MODE_OPTIONS = void 0; +exports.DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/index.js b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/index.js new file mode 100644 index 0000000..c576272 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/index.js @@ -0,0 +1,16 @@ +'use strict'; + +var resolveDefaultsModeConfig = require('./resolveDefaultsModeConfig'); + + + +Object.prototype.hasOwnProperty.call(resolveDefaultsModeConfig, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: resolveDefaultsModeConfig['__proto__'] + }); + +Object.keys(resolveDefaultsModeConfig).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = resolveDefaultsModeConfig[k]; +}); diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.js b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.js new file mode 100644 index 0000000..6618f6a --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveDefaultsModeConfig = void 0; +const property_provider_1 = require("@smithy/property-provider"); +const constants_1 = require("./constants"); +const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => (0, property_provider_1.memoize)(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return Promise.resolve(useMobileConfiguration() ? "mobile" : "standard"); + case "mobile": + case "in-region": + case "cross-region": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${constants_1.DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +exports.resolveDefaultsModeConfig = resolveDefaultsModeConfig; +const useMobileConfiguration = () => { + const navigator = window?.navigator; + if (navigator?.connection) { + const { effectiveType, rtt, downlink } = navigator?.connection; + const slow = (typeof effectiveType === "string" && effectiveType !== "4g") || Number(rtt) > 100 || Number(downlink) < 10; + if (slow) { + return true; + } + } + return (navigator?.userAgentData?.mobile || (typeof navigator?.maxTouchPoints === "number" && navigator?.maxTouchPoints > 1)); +}; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.native.js b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.native.js new file mode 100644 index 0000000..1aed47a --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-cjs/resolveDefaultsModeConfig.native.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.resolveDefaultsModeConfig = void 0; +const property_provider_1 = require("@smithy/property-provider"); +const constants_1 = require("./constants"); +const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => (0, property_provider_1.memoize)(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return Promise.resolve("mobile"); + case "mobile": + case "in-region": + case "cross-region": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${constants_1.DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +exports.resolveDefaultsModeConfig = resolveDefaultsModeConfig; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js new file mode 100644 index 0000000..d58e11f --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js @@ -0,0 +1 @@ +export const DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/index.js b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/index.js new file mode 100644 index 0000000..05aa818 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/index.js @@ -0,0 +1 @@ +export * from "./resolveDefaultsModeConfig"; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js new file mode 100644 index 0000000..c8939f2 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js @@ -0,0 +1,30 @@ +import { memoize } from "@smithy/property-provider"; +import { DEFAULTS_MODE_OPTIONS } from "./constants"; +export const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => memoize(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return Promise.resolve(useMobileConfiguration() ? "mobile" : "standard"); + case "mobile": + case "in-region": + case "cross-region": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +const useMobileConfiguration = () => { + const navigator = window?.navigator; + if (navigator?.connection) { + const { effectiveType, rtt, downlink } = navigator?.connection; + const slow = (typeof effectiveType === "string" && effectiveType !== "4g") || Number(rtt) > 100 || Number(downlink) < 10; + if (slow) { + return true; + } + } + return (navigator?.userAgentData?.mobile || (typeof navigator?.maxTouchPoints === "number" && navigator?.maxTouchPoints > 1)); +}; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.native.js b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.native.js new file mode 100644 index 0000000..3164191 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.native.js @@ -0,0 +1,19 @@ +import { memoize } from "@smithy/property-provider"; +import { DEFAULTS_MODE_OPTIONS } from "./constants"; +export const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => memoize(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return Promise.resolve("mobile"); + case "mobile": + case "in-region": + case "cross-region": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/constants.d.ts b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/constants.d.ts new file mode 100644 index 0000000..18dbe6c --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/constants.d.ts @@ -0,0 +1,12 @@ +import type { DefaultsMode } from "@smithy/smithy-client"; +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULTS_MODE_OPTIONS: string[]; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/index.d.ts b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/index.d.ts new file mode 100644 index 0000000..003de26 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./resolveDefaultsModeConfig"; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.d.ts b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.d.ts new file mode 100644 index 0000000..e4cc1b7 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.d.ts @@ -0,0 +1,17 @@ +import type { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "mobile" if the app is running in a mobile browser, + * otherwise it resolves to "standard". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.native.d.ts b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.native.d.ts new file mode 100644 index 0000000..6c48ad8 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/resolveDefaultsModeConfig.native.d.ts @@ -0,0 +1,16 @@ +import type { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "mobile". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..fc88602 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,12 @@ +import { DefaultsMode } from "@smithy/smithy-client"; +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export declare const DEFAULTS_MODE_OPTIONS: string[]; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..4ab48b4 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./resolveDefaultsModeConfig"; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts new file mode 100644 index 0000000..d468478 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts @@ -0,0 +1,17 @@ +import { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "mobile" if the app is running in a mobile browser, + * otherwise it resolves to "standard". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.native.d.ts b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.native.d.ts new file mode 100644 index 0000000..86fe4b7 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/dist-types/ts3.4/resolveDefaultsModeConfig.native.d.ts @@ -0,0 +1,16 @@ +import { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "mobile". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/bff/node_modules/@smithy/util-defaults-mode-browser/package.json b/bff/node_modules/@smithy/util-defaults-mode-browser/package.json new file mode 100644 index 0000000..a8f7e08 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-browser/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/util-defaults-mode-browser", + "version": "4.3.44", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-defaults-mode-browser", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "react-native": {}, + "browser": {}, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-defaults-mode-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-defaults-mode-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/LICENSE b/bff/node_modules/@smithy/util-defaults-mode-node/LICENSE new file mode 100644 index 0000000..dd65ae0 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/README.md b/bff/node_modules/@smithy/util-defaults-mode-node/README.md new file mode 100644 index 0000000..2472f7b --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/README.md @@ -0,0 +1,17 @@ +# @smithy/util-defaults-mode-node + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-defaults-mode-node/latest.svg)](https://www.npmjs.com/package/@smithy/util-defaults-mode-node) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-defaults-mode-node.svg)](https://www.npmjs.com/package/@smithy/util-defaults-mode-node) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js b/bff/node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js new file mode 100644 index 0000000..9fae1b1 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js @@ -0,0 +1,74 @@ +'use strict'; + +var configResolver = require('@smithy/config-resolver'); +var nodeConfigProvider = require('@smithy/node-config-provider'); +var propertyProvider = require('@smithy/property-provider'); + +const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; +const AWS_REGION_ENV = "AWS_REGION"; +const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; +const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +const DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; +const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; + +const AWS_DEFAULTS_MODE_ENV = "AWS_DEFAULTS_MODE"; +const AWS_DEFAULTS_MODE_CONFIG = "defaults_mode"; +const NODE_DEFAULTS_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + return env[AWS_DEFAULTS_MODE_ENV]; + }, + configFileSelector: (profile) => { + return profile[AWS_DEFAULTS_MODE_CONFIG]; + }, + default: "legacy", +}; + +const resolveDefaultsModeConfig = ({ region = nodeConfigProvider.loadConfig(configResolver.NODE_REGION_CONFIG_OPTIONS), defaultsMode = nodeConfigProvider.loadConfig(NODE_DEFAULTS_MODE_CONFIG_OPTIONS), } = {}) => propertyProvider.memoize(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return resolveNodeDefaultsModeAuto(region); + case "in-region": + case "cross-region": + case "mobile": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +const resolveNodeDefaultsModeAuto = async (clientRegion) => { + if (clientRegion) { + const resolvedRegion = typeof clientRegion === "function" ? await clientRegion() : clientRegion; + const inferredRegion = await inferPhysicalRegion(); + if (!inferredRegion) { + return "standard"; + } + if (resolvedRegion === inferredRegion) { + return "in-region"; + } + else { + return "cross-region"; + } + } + return "standard"; +}; +const inferPhysicalRegion = async () => { + if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) { + return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV]; + } + if (!process.env[ENV_IMDS_DISABLED]) { + try { + const { getInstanceMetadataEndpoint, httpRequest } = await import('@smithy/credential-provider-imds'); + const endpoint = await getInstanceMetadataEndpoint(); + return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString(); + } + catch (e) { + } + } +}; + +exports.resolveDefaultsModeConfig = resolveDefaultsModeConfig; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/constants.js b/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/constants.js new file mode 100644 index 0000000..69361a3 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/constants.js @@ -0,0 +1,6 @@ +export const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; +export const AWS_REGION_ENV = "AWS_REGION"; +export const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; +export const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +export const DEFAULTS_MODE_OPTIONS = ["in-region", "cross-region", "mobile", "standard", "legacy"]; +export const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/defaultsModeConfig.js b/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/defaultsModeConfig.js new file mode 100644 index 0000000..f43b570 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/defaultsModeConfig.js @@ -0,0 +1,11 @@ +const AWS_DEFAULTS_MODE_ENV = "AWS_DEFAULTS_MODE"; +const AWS_DEFAULTS_MODE_CONFIG = "defaults_mode"; +export const NODE_DEFAULTS_MODE_CONFIG_OPTIONS = { + environmentVariableSelector: (env) => { + return env[AWS_DEFAULTS_MODE_ENV]; + }, + configFileSelector: (profile) => { + return profile[AWS_DEFAULTS_MODE_CONFIG]; + }, + default: "legacy", +}; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/index.js b/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/index.js new file mode 100644 index 0000000..05aa818 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/index.js @@ -0,0 +1 @@ +export * from "./resolveDefaultsModeConfig"; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/resolveDefaultsModeConfig.js b/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/resolveDefaultsModeConfig.js new file mode 100644 index 0000000..8c9d050 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-es/resolveDefaultsModeConfig.js @@ -0,0 +1,52 @@ +import { NODE_REGION_CONFIG_OPTIONS } from "@smithy/config-resolver"; +import { loadConfig } from "@smithy/node-config-provider"; +import { memoize } from "@smithy/property-provider"; +import { AWS_DEFAULT_REGION_ENV, AWS_EXECUTION_ENV, AWS_REGION_ENV, DEFAULTS_MODE_OPTIONS, ENV_IMDS_DISABLED, IMDS_REGION_PATH, } from "./constants"; +import { NODE_DEFAULTS_MODE_CONFIG_OPTIONS } from "./defaultsModeConfig"; +export const resolveDefaultsModeConfig = ({ region = loadConfig(NODE_REGION_CONFIG_OPTIONS), defaultsMode = loadConfig(NODE_DEFAULTS_MODE_CONFIG_OPTIONS), } = {}) => memoize(async () => { + const mode = typeof defaultsMode === "function" ? await defaultsMode() : defaultsMode; + switch (mode?.toLowerCase()) { + case "auto": + return resolveNodeDefaultsModeAuto(region); + case "in-region": + case "cross-region": + case "mobile": + case "standard": + case "legacy": + return Promise.resolve(mode?.toLocaleLowerCase()); + case undefined: + return Promise.resolve("legacy"); + default: + throw new Error(`Invalid parameter for "defaultsMode", expect ${DEFAULTS_MODE_OPTIONS.join(", ")}, got ${mode}`); + } +}); +const resolveNodeDefaultsModeAuto = async (clientRegion) => { + if (clientRegion) { + const resolvedRegion = typeof clientRegion === "function" ? await clientRegion() : clientRegion; + const inferredRegion = await inferPhysicalRegion(); + if (!inferredRegion) { + return "standard"; + } + if (resolvedRegion === inferredRegion) { + return "in-region"; + } + else { + return "cross-region"; + } + } + return "standard"; +}; +const inferPhysicalRegion = async () => { + if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) { + return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV]; + } + if (!process.env[ENV_IMDS_DISABLED]) { + try { + const { getInstanceMetadataEndpoint, httpRequest } = await import("@smithy/credential-provider-imds"); + const endpoint = await getInstanceMetadataEndpoint(); + return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString(); + } + catch (e) { + } + } +}; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/constants.d.ts b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/constants.d.ts new file mode 100644 index 0000000..a2db283 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/constants.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export declare const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; +/** + * @internal + */ +export declare const AWS_REGION_ENV = "AWS_REGION"; +/** + * @internal + */ +export declare const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; +/** + * @internal + */ +export declare const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +/** + * @internal + */ +export declare const DEFAULTS_MODE_OPTIONS: string[]; +/** + * @internal + */ +export declare const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/defaultsModeConfig.d.ts b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/defaultsModeConfig.d.ts new file mode 100644 index 0000000..f9c60f7 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/defaultsModeConfig.d.ts @@ -0,0 +1,6 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import type { DefaultsMode } from "@smithy/smithy-client"; +/** + * @internal + */ +export declare const NODE_DEFAULTS_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/index.d.ts b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/index.d.ts new file mode 100644 index 0000000..003de26 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./resolveDefaultsModeConfig"; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/resolveDefaultsModeConfig.d.ts b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/resolveDefaultsModeConfig.d.ts new file mode 100644 index 0000000..8f34371 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/resolveDefaultsModeConfig.d.ts @@ -0,0 +1,17 @@ +import type { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import type { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; + region?: string | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "in-region", "cross-region", or "standard". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ region, defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..b847dc2 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,24 @@ +/** + * @internal + */ +export declare const AWS_EXECUTION_ENV = "AWS_EXECUTION_ENV"; +/** + * @internal + */ +export declare const AWS_REGION_ENV = "AWS_REGION"; +/** + * @internal + */ +export declare const AWS_DEFAULT_REGION_ENV = "AWS_DEFAULT_REGION"; +/** + * @internal + */ +export declare const ENV_IMDS_DISABLED = "AWS_EC2_METADATA_DISABLED"; +/** + * @internal + */ +export declare const DEFAULTS_MODE_OPTIONS: string[]; +/** + * @internal + */ +export declare const IMDS_REGION_PATH = "/latest/meta-data/placement/region"; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/defaultsModeConfig.d.ts b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/defaultsModeConfig.d.ts new file mode 100644 index 0000000..76c3d0d --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/defaultsModeConfig.d.ts @@ -0,0 +1,6 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +import { DefaultsMode } from "@smithy/smithy-client"; +/** + * @internal + */ +export declare const NODE_DEFAULTS_MODE_CONFIG_OPTIONS: LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..4ab48b4 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/index.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export * from "./resolveDefaultsModeConfig"; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts new file mode 100644 index 0000000..4daa927 --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/dist-types/ts3.4/resolveDefaultsModeConfig.d.ts @@ -0,0 +1,17 @@ +import { DefaultsMode, ResolvedDefaultsMode } from "@smithy/smithy-client"; +import { Provider } from "@smithy/types"; +/** + * @internal + */ +export interface ResolveDefaultsModeConfigOptions { + defaultsMode?: DefaultsMode | Provider; + region?: string | Provider; +} +/** + * Validate the defaultsMode configuration. If the value is set to "auto", it + * resolves the value to "in-region", "cross-region", or "standard". + * + * @default "legacy" + * @internal + */ +export declare const resolveDefaultsModeConfig: ({ region, defaultsMode, }?: ResolveDefaultsModeConfigOptions) => Provider; diff --git a/bff/node_modules/@smithy/util-defaults-mode-node/package.json b/bff/node_modules/@smithy/util-defaults-mode-node/package.json new file mode 100644 index 0000000..fd6225f --- /dev/null +++ b/bff/node_modules/@smithy/util-defaults-mode-node/package.json @@ -0,0 +1,67 @@ +{ + "name": "@smithy/util-defaults-mode-node", + "version": "4.2.48", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-defaults-mode-node", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/config-resolver": "^4.4.13", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-defaults-mode-node", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-defaults-mode-node" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-endpoints/LICENSE b/bff/node_modules/@smithy/util-endpoints/LICENSE new file mode 100644 index 0000000..a1895fa --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-endpoints/README.md b/bff/node_modules/@smithy/util-endpoints/README.md new file mode 100644 index 0000000..85d60b3 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/README.md @@ -0,0 +1,10 @@ +# @smithy/util-endpoints + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-endpoints/latest.svg)](https://www.npmjs.com/package/@smithy/util-endpoints) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-endpoints.svg)](https://www.npmjs.com/package/@smithy/util-endpoints) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/util-endpoints/dist-cjs/index.js b/bff/node_modules/@smithy/util-endpoints/dist-cjs/index.js new file mode 100644 index 0000000..04665e2 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-cjs/index.js @@ -0,0 +1,472 @@ +'use strict'; + +var types = require('@smithy/types'); + +class EndpointCache { + capacity; + data = new Map(); + parameters = []; + constructor({ size, params }) { + this.capacity = size ?? 50; + if (params) { + this.parameters = params; + } + } + get(endpointParams, resolver) { + const key = this.hash(endpointParams); + if (key === false) { + return resolver(); + } + if (!this.data.has(key)) { + if (this.data.size > this.capacity + 10) { + const keys = this.data.keys(); + let i = 0; + while (true) { + const { value, done } = keys.next(); + this.data.delete(value); + if (done || ++i > 10) { + break; + } + } + } + this.data.set(key, resolver()); + } + return this.data.get(key); + } + size() { + return this.data.size; + } + hash(endpointParams) { + let buffer = ""; + const { parameters } = this; + if (parameters.length === 0) { + return false; + } + for (const param of parameters) { + const val = String(endpointParams[param] ?? ""); + if (val.includes("|;")) { + return false; + } + buffer += val + "|;"; + } + return buffer; + } +} + +const IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$`); +const isIpAddress = (value) => IP_V4_REGEX.test(value) || (value.startsWith("[") && value.endsWith("]")); + +const VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`); +const isValidHostLabel = (value, allowSubDomains = false) => { + if (!allowSubDomains) { + return VALID_HOST_LABEL_REGEX.test(value); + } + const labels = value.split("."); + for (const label of labels) { + if (!isValidHostLabel(label)) { + return false; + } + } + return true; +}; + +const customEndpointFunctions = {}; + +const debugId = "endpoints"; + +function toDebugString(input) { + if (typeof input !== "object" || input == null) { + return input; + } + if ("ref" in input) { + return `$${toDebugString(input.ref)}`; + } + if ("fn" in input) { + return `${input.fn}(${(input.argv || []).map(toDebugString).join(", ")})`; + } + return JSON.stringify(input, null, 2); +} + +class EndpointError extends Error { + constructor(message) { + super(message); + this.name = "EndpointError"; + } +} + +const booleanEquals = (value1, value2) => value1 === value2; + +const getAttrPathList = (path) => { + const parts = path.split("."); + const pathList = []; + for (const part of parts) { + const squareBracketIndex = part.indexOf("["); + if (squareBracketIndex !== -1) { + if (part.indexOf("]") !== part.length - 1) { + throw new EndpointError(`Path: '${path}' does not end with ']'`); + } + const arrayIndex = part.slice(squareBracketIndex + 1, -1); + if (Number.isNaN(parseInt(arrayIndex))) { + throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`); + } + if (squareBracketIndex !== 0) { + pathList.push(part.slice(0, squareBracketIndex)); + } + pathList.push(arrayIndex); + } + else { + pathList.push(part); + } + } + return pathList; +}; + +const getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => { + if (typeof acc !== "object") { + throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`); + } + else if (Array.isArray(acc)) { + return acc[parseInt(index)]; + } + return acc[index]; +}, value); + +const isSet = (value) => value != null; + +const not = (value) => !value; + +const DEFAULT_PORTS = { + [types.EndpointURLScheme.HTTP]: 80, + [types.EndpointURLScheme.HTTPS]: 443, +}; +const parseURL = (value) => { + const whatwgURL = (() => { + try { + if (value instanceof URL) { + return value; + } + if (typeof value === "object" && "hostname" in value) { + const { hostname, port, protocol = "", path = "", query = {} } = value; + const url = new URL(`${protocol}//${hostname}${port ? `:${port}` : ""}${path}`); + url.search = Object.entries(query) + .map(([k, v]) => `${k}=${v}`) + .join("&"); + return url; + } + return new URL(value); + } + catch (error) { + return null; + } + })(); + if (!whatwgURL) { + console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`); + return null; + } + const urlString = whatwgURL.href; + const { host, hostname, pathname, protocol, search } = whatwgURL; + if (search) { + return null; + } + const scheme = protocol.slice(0, -1); + if (!Object.values(types.EndpointURLScheme).includes(scheme)) { + return null; + } + const isIp = isIpAddress(hostname); + const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || + (typeof value === "string" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`)); + const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`; + return { + scheme, + authority, + path: pathname, + normalizedPath: pathname.endsWith("/") ? pathname : `${pathname}/`, + isIp, + }; +}; + +const stringEquals = (value1, value2) => value1 === value2; + +const substring = (input, start, stop, reverse) => { + if (start >= stop || input.length < stop || /[^\u0000-\u007f]/.test(input)) { + return null; + } + if (!reverse) { + return input.substring(start, stop); + } + return input.substring(input.length - stop, input.length - start); +}; + +const uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`); + +const endpointFunctions = { + booleanEquals, + getAttr, + isSet, + isValidHostLabel, + not, + parseURL, + stringEquals, + substring, + uriEncode, +}; + +const evaluateTemplate = (template, options) => { + const evaluatedTemplateArr = []; + const templateContext = { + ...options.endpointParams, + ...options.referenceRecord, + }; + let currentIndex = 0; + while (currentIndex < template.length) { + const openingBraceIndex = template.indexOf("{", currentIndex); + if (openingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(currentIndex)); + break; + } + evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex)); + const closingBraceIndex = template.indexOf("}", openingBraceIndex); + if (closingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(openingBraceIndex)); + break; + } + if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") { + evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex)); + currentIndex = closingBraceIndex + 2; + } + const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex); + if (parameterName.includes("#")) { + const [refName, attrName] = parameterName.split("#"); + evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName)); + } + else { + evaluatedTemplateArr.push(templateContext[parameterName]); + } + currentIndex = closingBraceIndex + 1; + } + return evaluatedTemplateArr.join(""); +}; + +const getReferenceValue = ({ ref }, options) => { + const referenceRecord = { + ...options.endpointParams, + ...options.referenceRecord, + }; + return referenceRecord[ref]; +}; + +const evaluateExpression = (obj, keyName, options) => { + if (typeof obj === "string") { + return evaluateTemplate(obj, options); + } + else if (obj["fn"]) { + return group$2.callFunction(obj, options); + } + else if (obj["ref"]) { + return getReferenceValue(obj, options); + } + throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`); +}; +const callFunction = ({ fn, argv }, options) => { + const evaluatedArgs = argv.map((arg) => ["boolean", "number"].includes(typeof arg) ? arg : group$2.evaluateExpression(arg, "arg", options)); + const fnSegments = fn.split("."); + if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) { + return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs); + } + return endpointFunctions[fn](...evaluatedArgs); +}; +const group$2 = { + evaluateExpression, + callFunction, +}; + +const evaluateCondition = ({ assign, ...fnArgs }, options) => { + if (assign && assign in options.referenceRecord) { + throw new EndpointError(`'${assign}' is already defined in Reference Record.`); + } + const value = callFunction(fnArgs, options); + options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`); + return { + result: value === "" ? true : !!value, + ...(assign != null && { toAssign: { name: assign, value } }), + }; +}; + +const evaluateConditions = (conditions = [], options) => { + const conditionsReferenceRecord = {}; + for (const condition of conditions) { + const { result, toAssign } = evaluateCondition(condition, { + ...options, + referenceRecord: { + ...options.referenceRecord, + ...conditionsReferenceRecord, + }, + }); + if (!result) { + return { result }; + } + if (toAssign) { + conditionsReferenceRecord[toAssign.name] = toAssign.value; + options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`); + } + } + return { result: true, referenceRecord: conditionsReferenceRecord }; +}; + +const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({ + ...acc, + [headerKey]: headerVal.map((headerValEntry) => { + const processedExpr = evaluateExpression(headerValEntry, "Header value entry", options); + if (typeof processedExpr !== "string") { + throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`); + } + return processedExpr; + }), +}), {}); + +const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({ + ...acc, + [propertyKey]: group$1.getEndpointProperty(propertyVal, options), +}), {}); +const getEndpointProperty = (property, options) => { + if (Array.isArray(property)) { + return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options)); + } + switch (typeof property) { + case "string": + return evaluateTemplate(property, options); + case "object": + if (property === null) { + throw new EndpointError(`Unexpected endpoint property: ${property}`); + } + return group$1.getEndpointProperties(property, options); + case "boolean": + return property; + default: + throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`); + } +}; +const group$1 = { + getEndpointProperty, + getEndpointProperties, +}; + +const getEndpointUrl = (endpointUrl, options) => { + const expression = evaluateExpression(endpointUrl, "Endpoint URL", options); + if (typeof expression === "string") { + try { + return new URL(expression); + } + catch (error) { + console.error(`Failed to construct URL with ${expression}`, error); + throw error; + } + } + throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`); +}; + +const evaluateEndpointRule = (endpointRule, options) => { + const { conditions, endpoint } = endpointRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + const endpointRuleOptions = { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + }; + const { url, properties, headers } = endpoint; + options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`); + return { + ...(headers != undefined && { + headers: getEndpointHeaders(headers, endpointRuleOptions), + }), + ...(properties != undefined && { + properties: getEndpointProperties(properties, endpointRuleOptions), + }), + url: getEndpointUrl(url, endpointRuleOptions), + }; +}; + +const evaluateErrorRule = (errorRule, options) => { + const { conditions, error } = errorRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + throw new EndpointError(evaluateExpression(error, "Error", { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + })); +}; + +const evaluateRules = (rules, options) => { + for (const rule of rules) { + if (rule.type === "endpoint") { + const endpointOrUndefined = evaluateEndpointRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } + else if (rule.type === "error") { + evaluateErrorRule(rule, options); + } + else if (rule.type === "tree") { + const endpointOrUndefined = group.evaluateTreeRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } + else { + throw new EndpointError(`Unknown endpoint rule: ${rule}`); + } + } + throw new EndpointError(`Rules evaluation failed`); +}; +const evaluateTreeRule = (treeRule, options) => { + const { conditions, rules } = treeRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + return group.evaluateRules(rules, { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + }); +}; +const group = { + evaluateRules, + evaluateTreeRule, +}; + +const resolveEndpoint = (ruleSetObject, options) => { + const { endpointParams, logger } = options; + const { parameters, rules } = ruleSetObject; + options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`); + const paramsWithDefault = Object.entries(parameters) + .filter(([, v]) => v.default != null) + .map(([k, v]) => [k, v.default]); + if (paramsWithDefault.length > 0) { + for (const [paramKey, paramDefaultValue] of paramsWithDefault) { + endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue; + } + } + const requiredParams = Object.entries(parameters) + .filter(([, v]) => v.required) + .map(([k]) => k); + for (const requiredParam of requiredParams) { + if (endpointParams[requiredParam] == null) { + throw new EndpointError(`Missing required parameter: '${requiredParam}'`); + } + } + const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} }); + options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`); + return endpoint; +}; + +exports.EndpointCache = EndpointCache; +exports.EndpointError = EndpointError; +exports.customEndpointFunctions = customEndpointFunctions; +exports.isIpAddress = isIpAddress; +exports.isValidHostLabel = isValidHostLabel; +exports.resolveEndpoint = resolveEndpoint; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/cache/EndpointCache.js b/bff/node_modules/@smithy/util-endpoints/dist-es/cache/EndpointCache.js new file mode 100644 index 0000000..2c13f9d --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/cache/EndpointCache.js @@ -0,0 +1,50 @@ +export class EndpointCache { + capacity; + data = new Map(); + parameters = []; + constructor({ size, params }) { + this.capacity = size ?? 50; + if (params) { + this.parameters = params; + } + } + get(endpointParams, resolver) { + const key = this.hash(endpointParams); + if (key === false) { + return resolver(); + } + if (!this.data.has(key)) { + if (this.data.size > this.capacity + 10) { + const keys = this.data.keys(); + let i = 0; + while (true) { + const { value, done } = keys.next(); + this.data.delete(value); + if (done || ++i > 10) { + break; + } + } + } + this.data.set(key, resolver()); + } + return this.data.get(key); + } + size() { + return this.data.size; + } + hash(endpointParams) { + let buffer = ""; + const { parameters } = this; + if (parameters.length === 0) { + return false; + } + for (const param of parameters) { + const val = String(endpointParams[param] ?? ""); + if (val.includes("|;")) { + return false; + } + buffer += val + "|;"; + } + return buffer; + } +} diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/debug/debugId.js b/bff/node_modules/@smithy/util-endpoints/dist-es/debug/debugId.js new file mode 100644 index 0000000..0d4e27e --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/debug/debugId.js @@ -0,0 +1 @@ +export const debugId = "endpoints"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/debug/index.js b/bff/node_modules/@smithy/util-endpoints/dist-es/debug/index.js new file mode 100644 index 0000000..70d3b15 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/debug/index.js @@ -0,0 +1,2 @@ +export * from "./debugId"; +export * from "./toDebugString"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/debug/toDebugString.js b/bff/node_modules/@smithy/util-endpoints/dist-es/debug/toDebugString.js new file mode 100644 index 0000000..33c8fcb --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/debug/toDebugString.js @@ -0,0 +1,12 @@ +export function toDebugString(input) { + if (typeof input !== "object" || input == null) { + return input; + } + if ("ref" in input) { + return `$${toDebugString(input.ref)}`; + } + if ("fn" in input) { + return `${input.fn}(${(input.argv || []).map(toDebugString).join(", ")})`; + } + return JSON.stringify(input, null, 2); +} diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/getEndpointUrlConfig.js b/bff/node_modules/@smithy/util-endpoints/dist-es/getEndpointUrlConfig.js new file mode 100644 index 0000000..5069030 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/getEndpointUrlConfig.js @@ -0,0 +1,21 @@ +const ENV_ENDPOINT_URL = "AWS_ENDPOINT_URL"; +const CONFIG_ENDPOINT_URL = "endpoint_url"; +export const getEndpointUrlConfig = (serviceId) => ({ + environmentVariableSelector: (env) => { + const serviceEndpointUrlSections = [ENV_ENDPOINT_URL, ...serviceId.split(" ").map((w) => w.toUpperCase())]; + const serviceEndpointUrl = env[serviceEndpointUrlSections.join("_")]; + if (serviceEndpointUrl) + return serviceEndpointUrl; + const endpointUrl = env[ENV_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + configFileSelector: (profile) => { + const endpointUrl = profile[CONFIG_ENDPOINT_URL]; + if (endpointUrl) + return endpointUrl; + return undefined; + }, + default: undefined, +}); diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/index.js b/bff/node_modules/@smithy/util-endpoints/dist-es/index.js new file mode 100644 index 0000000..c39ed2b --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/index.js @@ -0,0 +1,6 @@ +export * from "./cache/EndpointCache"; +export * from "./lib/isIpAddress"; +export * from "./lib/isValidHostLabel"; +export * from "./utils/customEndpointFunctions"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/booleanEquals.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/booleanEquals.js new file mode 100644 index 0000000..730cbd3 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/booleanEquals.js @@ -0,0 +1 @@ +export const booleanEquals = (value1, value2) => value1 === value2; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js new file mode 100644 index 0000000..d77f165 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js @@ -0,0 +1,11 @@ +import { EndpointError } from "../types"; +import { getAttrPathList } from "./getAttrPathList"; +export const getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => { + if (typeof acc !== "object") { + throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`); + } + else if (Array.isArray(acc)) { + return acc[parseInt(index)]; + } + return acc[index]; +}, value); diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/getAttrPathList.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/getAttrPathList.js new file mode 100644 index 0000000..5817a2d --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/getAttrPathList.js @@ -0,0 +1,25 @@ +import { EndpointError } from "../types"; +export const getAttrPathList = (path) => { + const parts = path.split("."); + const pathList = []; + for (const part of parts) { + const squareBracketIndex = part.indexOf("["); + if (squareBracketIndex !== -1) { + if (part.indexOf("]") !== part.length - 1) { + throw new EndpointError(`Path: '${path}' does not end with ']'`); + } + const arrayIndex = part.slice(squareBracketIndex + 1, -1); + if (Number.isNaN(parseInt(arrayIndex))) { + throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`); + } + if (squareBracketIndex !== 0) { + pathList.push(part.slice(0, squareBracketIndex)); + } + pathList.push(arrayIndex); + } + else { + pathList.push(part); + } + } + return pathList; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/index.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/index.js new file mode 100644 index 0000000..99a0844 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/index.js @@ -0,0 +1,9 @@ +export * from "./booleanEquals"; +export * from "./getAttr"; +export * from "./isSet"; +export * from "./isValidHostLabel"; +export * from "./not"; +export * from "./parseURL"; +export * from "./stringEquals"; +export * from "./substring"; +export * from "./uriEncode"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/isIpAddress.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/isIpAddress.js new file mode 100644 index 0000000..20be5a3 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/isIpAddress.js @@ -0,0 +1,2 @@ +const IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}$`); +export const isIpAddress = (value) => IP_V4_REGEX.test(value) || (value.startsWith("[") && value.endsWith("]")); diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/isSet.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/isSet.js new file mode 100644 index 0000000..83ccc7a --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/isSet.js @@ -0,0 +1 @@ +export const isSet = (value) => value != null; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/isValidHostLabel.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/isValidHostLabel.js new file mode 100644 index 0000000..7858598 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/isValidHostLabel.js @@ -0,0 +1,13 @@ +const VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`); +export const isValidHostLabel = (value, allowSubDomains = false) => { + if (!allowSubDomains) { + return VALID_HOST_LABEL_REGEX.test(value); + } + const labels = value.split("."); + for (const label of labels) { + if (!isValidHostLabel(label)) { + return false; + } + } + return true; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/not.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/not.js new file mode 100644 index 0000000..180e5dd --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/not.js @@ -0,0 +1 @@ +export const not = (value) => !value; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/parseURL.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/parseURL.js new file mode 100644 index 0000000..79f9b24 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/parseURL.js @@ -0,0 +1,51 @@ +import { EndpointURLScheme } from "@smithy/types"; +import { isIpAddress } from "./isIpAddress"; +const DEFAULT_PORTS = { + [EndpointURLScheme.HTTP]: 80, + [EndpointURLScheme.HTTPS]: 443, +}; +export const parseURL = (value) => { + const whatwgURL = (() => { + try { + if (value instanceof URL) { + return value; + } + if (typeof value === "object" && "hostname" in value) { + const { hostname, port, protocol = "", path = "", query = {} } = value; + const url = new URL(`${protocol}//${hostname}${port ? `:${port}` : ""}${path}`); + url.search = Object.entries(query) + .map(([k, v]) => `${k}=${v}`) + .join("&"); + return url; + } + return new URL(value); + } + catch (error) { + return null; + } + })(); + if (!whatwgURL) { + console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`); + return null; + } + const urlString = whatwgURL.href; + const { host, hostname, pathname, protocol, search } = whatwgURL; + if (search) { + return null; + } + const scheme = protocol.slice(0, -1); + if (!Object.values(EndpointURLScheme).includes(scheme)) { + return null; + } + const isIp = isIpAddress(hostname); + const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || + (typeof value === "string" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`)); + const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`; + return { + scheme, + authority, + path: pathname, + normalizedPath: pathname.endsWith("/") ? pathname : `${pathname}/`, + isIp, + }; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/stringEquals.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/stringEquals.js new file mode 100644 index 0000000..ee41426 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/stringEquals.js @@ -0,0 +1 @@ +export const stringEquals = (value1, value2) => value1 === value2; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/substring.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/substring.js new file mode 100644 index 0000000..f906883 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/substring.js @@ -0,0 +1,9 @@ +export const substring = (input, start, stop, reverse) => { + if (start >= stop || input.length < stop || /[^\u0000-\u007f]/.test(input)) { + return null; + } + if (!reverse) { + return input.substring(start, stop); + } + return input.substring(input.length - stop, input.length - start); +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/lib/uriEncode.js b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/uriEncode.js new file mode 100644 index 0000000..ae226dc --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/lib/uriEncode.js @@ -0,0 +1 @@ +export const uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`); diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js b/bff/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js new file mode 100644 index 0000000..ac12096 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js @@ -0,0 +1,27 @@ +import { debugId, toDebugString } from "./debug"; +import { EndpointError } from "./types"; +import { evaluateRules } from "./utils"; +export const resolveEndpoint = (ruleSetObject, options) => { + const { endpointParams, logger } = options; + const { parameters, rules } = ruleSetObject; + options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`); + const paramsWithDefault = Object.entries(parameters) + .filter(([, v]) => v.default != null) + .map(([k, v]) => [k, v.default]); + if (paramsWithDefault.length > 0) { + for (const [paramKey, paramDefaultValue] of paramsWithDefault) { + endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue; + } + } + const requiredParams = Object.entries(parameters) + .filter(([, v]) => v.required) + .map(([k]) => k); + for (const requiredParam of requiredParams) { + if (endpointParams[requiredParam] == null) { + throw new EndpointError(`Missing required parameter: '${requiredParam}'`); + } + } + const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} }); + options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`); + return endpoint; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/types/EndpointError.js b/bff/node_modules/@smithy/util-endpoints/dist-es/types/EndpointError.js new file mode 100644 index 0000000..1ce597d --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/types/EndpointError.js @@ -0,0 +1,6 @@ +export class EndpointError extends Error { + constructor(message) { + super(message); + this.name = "EndpointError"; + } +} diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/types/EndpointFunctions.js b/bff/node_modules/@smithy/util-endpoints/dist-es/types/EndpointFunctions.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/types/EndpointFunctions.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/types/EndpointRuleObject.js b/bff/node_modules/@smithy/util-endpoints/dist-es/types/EndpointRuleObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/types/EndpointRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/types/ErrorRuleObject.js b/bff/node_modules/@smithy/util-endpoints/dist-es/types/ErrorRuleObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/types/ErrorRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/types/RuleSetObject.js b/bff/node_modules/@smithy/util-endpoints/dist-es/types/RuleSetObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/types/RuleSetObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/types/TreeRuleObject.js b/bff/node_modules/@smithy/util-endpoints/dist-es/types/TreeRuleObject.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/types/TreeRuleObject.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/types/index.js b/bff/node_modules/@smithy/util-endpoints/dist-es/types/index.js new file mode 100644 index 0000000..a49f984 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/types/index.js @@ -0,0 +1,7 @@ +export * from "./EndpointError"; +export * from "./EndpointFunctions"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/types/shared.js b/bff/node_modules/@smithy/util-endpoints/dist-es/types/shared.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/types/shared.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js new file mode 100644 index 0000000..cd041e3 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js @@ -0,0 +1 @@ +export { callFunction } from "./evaluateExpression"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js new file mode 100644 index 0000000..0c26493 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js @@ -0,0 +1 @@ +export const customEndpointFunctions = {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js new file mode 100644 index 0000000..e2215ff --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js @@ -0,0 +1,12 @@ +import { booleanEquals, getAttr, isSet, isValidHostLabel, not, parseURL, stringEquals, substring, uriEncode, } from "../lib"; +export const endpointFunctions = { + booleanEquals, + getAttr, + isSet, + isValidHostLabel, + not, + parseURL, + stringEquals, + substring, + uriEncode, +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js new file mode 100644 index 0000000..8e84f08 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js @@ -0,0 +1,14 @@ +import { debugId, toDebugString } from "../debug"; +import { EndpointError } from "../types"; +import { callFunction } from "./callFunction"; +export const evaluateCondition = ({ assign, ...fnArgs }, options) => { + if (assign && assign in options.referenceRecord) { + throw new EndpointError(`'${assign}' is already defined in Reference Record.`); + } + const value = callFunction(fnArgs, options); + options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`); + return { + result: value === "" ? true : !!value, + ...(assign != null && { toAssign: { name: assign, value } }), + }; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js new file mode 100644 index 0000000..5542076 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js @@ -0,0 +1,22 @@ +import { debugId, toDebugString } from "../debug"; +import { evaluateCondition } from "./evaluateCondition"; +export const evaluateConditions = (conditions = [], options) => { + const conditionsReferenceRecord = {}; + for (const condition of conditions) { + const { result, toAssign } = evaluateCondition(condition, { + ...options, + referenceRecord: { + ...options.referenceRecord, + ...conditionsReferenceRecord, + }, + }); + if (!result) { + return { result }; + } + if (toAssign) { + conditionsReferenceRecord[toAssign.name] = toAssign.value; + options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`); + } + } + return { result: true, referenceRecord: conditionsReferenceRecord }; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js new file mode 100644 index 0000000..ba6307b --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js @@ -0,0 +1,27 @@ +import { debugId, toDebugString } from "../debug"; +import { evaluateConditions } from "./evaluateConditions"; +import { getEndpointHeaders } from "./getEndpointHeaders"; +import { getEndpointProperties } from "./getEndpointProperties"; +import { getEndpointUrl } from "./getEndpointUrl"; +export const evaluateEndpointRule = (endpointRule, options) => { + const { conditions, endpoint } = endpointRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + const endpointRuleOptions = { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + }; + const { url, properties, headers } = endpoint; + options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`); + return { + ...(headers != undefined && { + headers: getEndpointHeaders(headers, endpointRuleOptions), + }), + ...(properties != undefined && { + properties: getEndpointProperties(properties, endpointRuleOptions), + }), + url: getEndpointUrl(url, endpointRuleOptions), + }; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js new file mode 100644 index 0000000..1a57860 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js @@ -0,0 +1,14 @@ +import { EndpointError } from "../types"; +import { evaluateConditions } from "./evaluateConditions"; +import { evaluateExpression } from "./evaluateExpression"; +export const evaluateErrorRule = (errorRule, options) => { + const { conditions, error } = errorRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + throw new EndpointError(evaluateExpression(error, "Error", { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + })); +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js new file mode 100644 index 0000000..4ff958e --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js @@ -0,0 +1,29 @@ +import { EndpointError } from "../types"; +import { customEndpointFunctions } from "./customEndpointFunctions"; +import { endpointFunctions } from "./endpointFunctions"; +import { evaluateTemplate } from "./evaluateTemplate"; +import { getReferenceValue } from "./getReferenceValue"; +export const evaluateExpression = (obj, keyName, options) => { + if (typeof obj === "string") { + return evaluateTemplate(obj, options); + } + else if (obj["fn"]) { + return group.callFunction(obj, options); + } + else if (obj["ref"]) { + return getReferenceValue(obj, options); + } + throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`); +}; +export const callFunction = ({ fn, argv }, options) => { + const evaluatedArgs = argv.map((arg) => ["boolean", "number"].includes(typeof arg) ? arg : group.evaluateExpression(arg, "arg", options)); + const fnSegments = fn.split("."); + if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) { + return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs); + } + return endpointFunctions[fn](...evaluatedArgs); +}; +export const group = { + evaluateExpression, + callFunction, +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js new file mode 100644 index 0000000..b8ddffa --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js @@ -0,0 +1,42 @@ +import { EndpointError } from "../types"; +import { evaluateConditions } from "./evaluateConditions"; +import { evaluateEndpointRule } from "./evaluateEndpointRule"; +import { evaluateErrorRule } from "./evaluateErrorRule"; +export const evaluateRules = (rules, options) => { + for (const rule of rules) { + if (rule.type === "endpoint") { + const endpointOrUndefined = evaluateEndpointRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } + else if (rule.type === "error") { + evaluateErrorRule(rule, options); + } + else if (rule.type === "tree") { + const endpointOrUndefined = group.evaluateTreeRule(rule, options); + if (endpointOrUndefined) { + return endpointOrUndefined; + } + } + else { + throw new EndpointError(`Unknown endpoint rule: ${rule}`); + } + } + throw new EndpointError(`Rules evaluation failed`); +}; +export const evaluateTreeRule = (treeRule, options) => { + const { conditions, rules } = treeRule; + const { result, referenceRecord } = evaluateConditions(conditions, options); + if (!result) { + return; + } + return group.evaluateRules(rules, { + ...options, + referenceRecord: { ...options.referenceRecord, ...referenceRecord }, + }); +}; +export const group = { + evaluateRules, + evaluateTreeRule, +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js new file mode 100644 index 0000000..7005809 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js @@ -0,0 +1,36 @@ +import { getAttr } from "../lib"; +export const evaluateTemplate = (template, options) => { + const evaluatedTemplateArr = []; + const templateContext = { + ...options.endpointParams, + ...options.referenceRecord, + }; + let currentIndex = 0; + while (currentIndex < template.length) { + const openingBraceIndex = template.indexOf("{", currentIndex); + if (openingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(currentIndex)); + break; + } + evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex)); + const closingBraceIndex = template.indexOf("}", openingBraceIndex); + if (closingBraceIndex === -1) { + evaluatedTemplateArr.push(template.slice(openingBraceIndex)); + break; + } + if (template[openingBraceIndex + 1] === "{" && template[closingBraceIndex + 1] === "}") { + evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex)); + currentIndex = closingBraceIndex + 2; + } + const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex); + if (parameterName.includes("#")) { + const [refName, attrName] = parameterName.split("#"); + evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName)); + } + else { + evaluatedTemplateArr.push(templateContext[parameterName]); + } + currentIndex = closingBraceIndex + 1; + } + return evaluatedTemplateArr.join(""); +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js new file mode 100644 index 0000000..128a59c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js @@ -0,0 +1 @@ +export { evaluateTreeRule } from "./evaluateRules"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js new file mode 100644 index 0000000..f94cf55 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js @@ -0,0 +1,12 @@ +import { EndpointError } from "../types"; +import { evaluateExpression } from "./evaluateExpression"; +export const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({ + ...acc, + [headerKey]: headerVal.map((headerValEntry) => { + const processedExpr = evaluateExpression(headerValEntry, "Header value entry", options); + if (typeof processedExpr !== "string") { + throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`); + } + return processedExpr; + }), +}), {}); diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js new file mode 100644 index 0000000..ab7496f --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js @@ -0,0 +1,28 @@ +import { EndpointError } from "../types"; +import { evaluateTemplate } from "./evaluateTemplate"; +export const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({ + ...acc, + [propertyKey]: group.getEndpointProperty(propertyVal, options), +}), {}); +export const getEndpointProperty = (property, options) => { + if (Array.isArray(property)) { + return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options)); + } + switch (typeof property) { + case "string": + return evaluateTemplate(property, options); + case "object": + if (property === null) { + throw new EndpointError(`Unexpected endpoint property: ${property}`); + } + return group.getEndpointProperties(property, options); + case "boolean": + return property; + default: + throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`); + } +}; +export const group = { + getEndpointProperty, + getEndpointProperties, +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js new file mode 100644 index 0000000..3bf38a5 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js @@ -0,0 +1 @@ +export { getEndpointProperty } from "./getEndpointProperties"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js new file mode 100644 index 0000000..8f1301e --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js @@ -0,0 +1,15 @@ +import { EndpointError } from "../types"; +import { evaluateExpression } from "./evaluateExpression"; +export const getEndpointUrl = (endpointUrl, options) => { + const expression = evaluateExpression(endpointUrl, "Endpoint URL", options); + if (typeof expression === "string") { + try { + return new URL(expression); + } + catch (error) { + console.error(`Failed to construct URL with ${expression}`, error); + throw error; + } + } + throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`); +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js new file mode 100644 index 0000000..759f4d4 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js @@ -0,0 +1,7 @@ +export const getReferenceValue = ({ ref }, options) => { + const referenceRecord = { + ...options.endpointParams, + ...options.referenceRecord, + }; + return referenceRecord[ref]; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-es/utils/index.js b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/index.js new file mode 100644 index 0000000..b571d02 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-es/utils/index.js @@ -0,0 +1,2 @@ +export * from "./customEndpointFunctions"; +export * from "./evaluateRules"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/cache/EndpointCache.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/cache/EndpointCache.d.ts new file mode 100644 index 0000000..19a338f --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/cache/EndpointCache.d.ts @@ -0,0 +1,34 @@ +import type { EndpointParams, EndpointV2 } from "@smithy/types"; +/** + * @internal + * + * Cache for endpoint ruleSet resolution. + */ +export declare class EndpointCache { + private capacity; + private data; + private parameters; + /** + * @param [size] - desired average maximum capacity. A buffer of 10 additional keys will be allowed + * before keys are dropped. + * @param [params] - list of params to consider as part of the cache key. + * + * If the params list is not populated, no caching will happen. + * This may be out of order depending on how the object is created and arrives to this class. + */ + constructor({ size, params }: { + size?: number; + params?: string[]; + }); + /** + * @param endpointParams - query for endpoint. + * @param resolver - provider of the value if not present. + * @returns endpoint corresponding to the query. + */ + get(endpointParams: EndpointParams, resolver: () => EndpointV2): EndpointV2; + size(): number; + /** + * @returns cache key or false if not cachable. + */ + private hash; +} diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/debug/debugId.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/debug/debugId.d.ts new file mode 100644 index 0000000..d39f408 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/debug/debugId.d.ts @@ -0,0 +1 @@ +export declare const debugId = "endpoints"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/debug/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/debug/index.d.ts new file mode 100644 index 0000000..70d3b15 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/debug/index.d.ts @@ -0,0 +1,2 @@ +export * from "./debugId"; +export * from "./toDebugString"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/debug/toDebugString.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/debug/toDebugString.d.ts new file mode 100644 index 0000000..69397f6 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/debug/toDebugString.d.ts @@ -0,0 +1,9 @@ +import type { EndpointParameters, EndpointV2 } from "@smithy/types"; +import type { GetAttrValue } from "../lib"; +import type { EndpointObject, FunctionObject, FunctionReturn } from "../types"; +export declare function toDebugString(input: EndpointParameters): string; +export declare function toDebugString(input: EndpointV2): string; +export declare function toDebugString(input: GetAttrValue): string; +export declare function toDebugString(input: FunctionObject): string; +export declare function toDebugString(input: FunctionReturn): string; +export declare function toDebugString(input: EndpointObject): string; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/getEndpointUrlConfig.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/getEndpointUrlConfig.d.ts new file mode 100644 index 0000000..6b0f5d1 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/getEndpointUrlConfig.d.ts @@ -0,0 +1,2 @@ +import type { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const getEndpointUrlConfig: (serviceId: string) => LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/index.d.ts new file mode 100644 index 0000000..c39ed2b --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./cache/EndpointCache"; +export * from "./lib/isIpAddress"; +export * from "./lib/isValidHostLabel"; +export * from "./utils/customEndpointFunctions"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/booleanEquals.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/booleanEquals.d.ts new file mode 100644 index 0000000..7eac561 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/booleanEquals.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates two boolean values value1 and value2 for equality and returns + * true if both values match. + */ +export declare const booleanEquals: (value1: boolean, value2: boolean) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/getAttr.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/getAttr.d.ts new file mode 100644 index 0000000..a8088c5 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/getAttr.d.ts @@ -0,0 +1,7 @@ +export type GetAttrValue = string | boolean | { + [key: string]: GetAttrValue; +} | Array; +/** + * Returns value corresponding to pathing string for an array or object. + */ +export declare const getAttr: (value: GetAttrValue, path: string) => GetAttrValue; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/getAttrPathList.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/getAttrPathList.d.ts new file mode 100644 index 0000000..e6c4979 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/getAttrPathList.d.ts @@ -0,0 +1,4 @@ +/** + * Parses path as a getAttr expression, returning a list of strings. + */ +export declare const getAttrPathList: (path: string) => Array; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/index.d.ts new file mode 100644 index 0000000..99a0844 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/index.d.ts @@ -0,0 +1,9 @@ +export * from "./booleanEquals"; +export * from "./getAttr"; +export * from "./isSet"; +export * from "./isValidHostLabel"; +export * from "./not"; +export * from "./parseURL"; +export * from "./stringEquals"; +export * from "./substring"; +export * from "./uriEncode"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/isIpAddress.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/isIpAddress.d.ts new file mode 100644 index 0000000..28aba97 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/isIpAddress.d.ts @@ -0,0 +1,4 @@ +/** + * Validates if the provided value is an IP address. + */ +export declare const isIpAddress: (value: string) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/isSet.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/isSet.d.ts new file mode 100644 index 0000000..7cb8c27 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/isSet.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates whether a value is set (aka not null or undefined). + * Returns true if the value is set, otherwise returns false. + */ +export declare const isSet: (value: unknown) => value is {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/isValidHostLabel.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/isValidHostLabel.d.ts new file mode 100644 index 0000000..c05f9e9 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/isValidHostLabel.d.ts @@ -0,0 +1,7 @@ +/** + * Evaluates whether one or more string values are valid host labels per RFC 1123. + * + * If allowSubDomains is true, then the provided value may be zero or more dotted + * subdomains which are each validated per RFC 1123. + */ +export declare const isValidHostLabel: (value: string, allowSubDomains?: boolean) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/not.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/not.d.ts new file mode 100644 index 0000000..1e8e728 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/not.d.ts @@ -0,0 +1,5 @@ +/** + * Performs logical negation on the provided boolean value, + * returning the negated value. + */ +export declare const not: (value: boolean) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/parseURL.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/parseURL.d.ts new file mode 100644 index 0000000..3da46ff --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/parseURL.d.ts @@ -0,0 +1,5 @@ +import type { Endpoint, EndpointURL } from "@smithy/types"; +/** + * Parses a string, URL, or Endpoint into it’s Endpoint URL components. + */ +export declare const parseURL: (value: string | URL | Endpoint) => EndpointURL | null; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/stringEquals.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/stringEquals.d.ts new file mode 100644 index 0000000..bdfc98d --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/stringEquals.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates two string values value1 and value2 for equality and returns + * true if both values match. + */ +export declare const stringEquals: (value1: string, value2: string) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/substring.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/substring.d.ts new file mode 100644 index 0000000..5d70035 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/substring.d.ts @@ -0,0 +1,7 @@ +/** + * Computes the substring of a given string, conditionally indexing from the end of the string. + * When the string is long enough to fully include the substring, return the substring. + * Otherwise, return None. The start index is inclusive and the stop index is exclusive. + * The length of the returned string will always be stop-start. + */ +export declare const substring: (input: string, start: number, stop: number, reverse: boolean) => string | null; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/lib/uriEncode.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/uriEncode.d.ts new file mode 100644 index 0000000..c2a720c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/lib/uriEncode.d.ts @@ -0,0 +1,4 @@ +/** + * Performs percent-encoding per RFC3986 section 2.1 + */ +export declare const uriEncode: (value: string) => string; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/resolveEndpoint.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/resolveEndpoint.d.ts new file mode 100644 index 0000000..9243342 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/resolveEndpoint.d.ts @@ -0,0 +1,6 @@ +import type { EndpointV2 } from "@smithy/types"; +import type { EndpointResolverOptions, RuleSetObject } from "./types"; +/** + * Resolves an endpoint URL by processing the endpoints ruleset and options. + */ +export declare const resolveEndpoint: (ruleSetObject: RuleSetObject, options: EndpointResolverOptions) => EndpointV2; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/cache/EndpointCache.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/cache/EndpointCache.d.ts new file mode 100644 index 0000000..9d622ae --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/cache/EndpointCache.d.ts @@ -0,0 +1,34 @@ +import { EndpointParams, EndpointV2 } from "@smithy/types"; +/** + * @internal + * + * Cache for endpoint ruleSet resolution. + */ +export declare class EndpointCache { + private capacity; + private data; + private parameters; + /** + * @param [size] - desired average maximum capacity. A buffer of 10 additional keys will be allowed + * before keys are dropped. + * @param [params] - list of params to consider as part of the cache key. + * + * If the params list is not populated, no caching will happen. + * This may be out of order depending on how the object is created and arrives to this class. + */ + constructor({ size, params }: { + size?: number; + params?: string[]; + }); + /** + * @param endpointParams - query for endpoint. + * @param resolver - provider of the value if not present. + * @returns endpoint corresponding to the query. + */ + get(endpointParams: EndpointParams, resolver: () => EndpointV2): EndpointV2; + size(): number; + /** + * @returns cache key or false if not cachable. + */ + private hash; +} diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/debugId.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/debugId.d.ts new file mode 100644 index 0000000..f674b8a --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/debugId.d.ts @@ -0,0 +1 @@ +export declare const debugId = "endpoints"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/index.d.ts new file mode 100644 index 0000000..1eb0bf4 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/index.d.ts @@ -0,0 +1,2 @@ +export * from "./debugId"; +export * from "./toDebugString"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/toDebugString.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/toDebugString.d.ts new file mode 100644 index 0000000..e295ca0 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/debug/toDebugString.d.ts @@ -0,0 +1,9 @@ +import { EndpointParameters, EndpointV2 } from "@smithy/types"; +import { GetAttrValue } from "../lib"; +import { EndpointObject, FunctionObject, FunctionReturn } from "../types"; +export declare function toDebugString(input: EndpointParameters): string; +export declare function toDebugString(input: EndpointV2): string; +export declare function toDebugString(input: GetAttrValue): string; +export declare function toDebugString(input: FunctionObject): string; +export declare function toDebugString(input: FunctionReturn): string; +export declare function toDebugString(input: EndpointObject): string; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/getEndpointUrlConfig.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/getEndpointUrlConfig.d.ts new file mode 100644 index 0000000..7b9d068 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/getEndpointUrlConfig.d.ts @@ -0,0 +1,2 @@ +import { LoadedConfigSelectors } from "@smithy/node-config-provider"; +export declare const getEndpointUrlConfig: (serviceId: string) => LoadedConfigSelectors; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..7b367cf --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/index.d.ts @@ -0,0 +1,6 @@ +export * from "./cache/EndpointCache"; +export * from "./lib/isIpAddress"; +export * from "./lib/isValidHostLabel"; +export * from "./utils/customEndpointFunctions"; +export * from "./resolveEndpoint"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/booleanEquals.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/booleanEquals.d.ts new file mode 100644 index 0000000..7aec001 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/booleanEquals.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates two boolean values value1 and value2 for equality and returns + * true if both values match. + */ +export declare const booleanEquals: (value1: boolean, value2: boolean) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttr.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttr.d.ts new file mode 100644 index 0000000..e2f5b43 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttr.d.ts @@ -0,0 +1,7 @@ +export type GetAttrValue = string | boolean | { + [key: string]: GetAttrValue; +} | Array; +/** + * Returns value corresponding to pathing string for an array or object. + */ +export declare const getAttr: (value: GetAttrValue, path: string) => GetAttrValue; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttrPathList.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttrPathList.d.ts new file mode 100644 index 0000000..93bbf31 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/getAttrPathList.d.ts @@ -0,0 +1,4 @@ +/** + * Parses path as a getAttr expression, returning a list of strings. + */ +export declare const getAttrPathList: (path: string) => Array; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/index.d.ts new file mode 100644 index 0000000..a28ecaa --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/index.d.ts @@ -0,0 +1,9 @@ +export * from "./booleanEquals"; +export * from "./getAttr"; +export * from "./isSet"; +export * from "./isValidHostLabel"; +export * from "./not"; +export * from "./parseURL"; +export * from "./stringEquals"; +export * from "./substring"; +export * from "./uriEncode"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts new file mode 100644 index 0000000..9f37893 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isIpAddress.d.ts @@ -0,0 +1,4 @@ +/** + * Validates if the provided value is an IP address. + */ +export declare const isIpAddress: (value: string) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isSet.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isSet.d.ts new file mode 100644 index 0000000..e941209 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isSet.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates whether a value is set (aka not null or undefined). + * Returns true if the value is set, otherwise returns false. + */ +export declare const isSet: (value: unknown) => value is {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isValidHostLabel.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isValidHostLabel.d.ts new file mode 100644 index 0000000..01f7eb9 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/isValidHostLabel.d.ts @@ -0,0 +1,7 @@ +/** + * Evaluates whether one or more string values are valid host labels per RFC 1123. + * + * If allowSubDomains is true, then the provided value may be zero or more dotted + * subdomains which are each validated per RFC 1123. + */ +export declare const isValidHostLabel: (value: string, allowSubDomains?: boolean) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/not.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/not.d.ts new file mode 100644 index 0000000..b4e84ac --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/not.d.ts @@ -0,0 +1,5 @@ +/** + * Performs logical negation on the provided boolean value, + * returning the negated value. + */ +export declare const not: (value: boolean) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/parseURL.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/parseURL.d.ts new file mode 100644 index 0000000..0f54066 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/parseURL.d.ts @@ -0,0 +1,5 @@ +import { Endpoint, EndpointURL } from "@smithy/types"; +/** + * Parses a string, URL, or Endpoint into it’s Endpoint URL components. + */ +export declare const parseURL: (value: string | URL | Endpoint) => EndpointURL | null; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/stringEquals.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/stringEquals.d.ts new file mode 100644 index 0000000..9acb10c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/stringEquals.d.ts @@ -0,0 +1,5 @@ +/** + * Evaluates two string values value1 and value2 for equality and returns + * true if both values match. + */ +export declare const stringEquals: (value1: string, value2: string) => boolean; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/substring.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/substring.d.ts new file mode 100644 index 0000000..a99025c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/substring.d.ts @@ -0,0 +1,7 @@ +/** + * Computes the substring of a given string, conditionally indexing from the end of the string. + * When the string is long enough to fully include the substring, return the substring. + * Otherwise, return None. The start index is inclusive and the stop index is exclusive. + * The length of the returned string will always be stop-start. + */ +export declare const substring: (input: string, start: number, stop: number, reverse: boolean) => string | null; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/uriEncode.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/uriEncode.d.ts new file mode 100644 index 0000000..acb75bb --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/lib/uriEncode.d.ts @@ -0,0 +1,4 @@ +/** + * Performs percent-encoding per RFC3986 section 2.1 + */ +export declare const uriEncode: (value: string) => string; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts new file mode 100644 index 0000000..5469fa2 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/resolveEndpoint.d.ts @@ -0,0 +1,6 @@ +import { EndpointV2 } from "@smithy/types"; +import { EndpointResolverOptions, RuleSetObject } from "./types"; +/** + * Resolves an endpoint URL by processing the endpoints ruleset and options. + */ +export declare const resolveEndpoint: (ruleSetObject: RuleSetObject, options: EndpointResolverOptions) => EndpointV2; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts new file mode 100644 index 0000000..4f3c538 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointError.d.ts @@ -0,0 +1,3 @@ +export declare class EndpointError extends Error { + constructor(message: string); +} diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointFunctions.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointFunctions.d.ts new file mode 100644 index 0000000..7b3cf42 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointFunctions.d.ts @@ -0,0 +1,2 @@ +import { FunctionReturn } from "./shared"; +export type EndpointFunctions = Record FunctionReturn>; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts new file mode 100644 index 0000000..436001e --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/EndpointRuleObject.d.ts @@ -0,0 +1,5 @@ +import { EndpointObject as __EndpointObject, EndpointObjectHeaders as __EndpointObjectHeaders, EndpointObjectProperties as __EndpointObjectProperties, EndpointRuleObject as __EndpointRuleObject } from "@smithy/types"; +export type EndpointObjectProperties = __EndpointObjectProperties; +export type EndpointObjectHeaders = __EndpointObjectHeaders; +export type EndpointObject = __EndpointObject; +export type EndpointRuleObject = __EndpointRuleObject; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts new file mode 100644 index 0000000..1540835 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/ErrorRuleObject.d.ts @@ -0,0 +1,2 @@ +import { ErrorRuleObject as __ErrorRuleObject } from "@smithy/types"; +export type ErrorRuleObject = __ErrorRuleObject; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts new file mode 100644 index 0000000..227b269 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/RuleSetObject.d.ts @@ -0,0 +1,4 @@ +import { DeprecatedObject as __DeprecatedObject, ParameterObject as __ParameterObject, RuleSetObject as __RuleSetObject } from "@smithy/types"; +export type DeprecatedObject = __DeprecatedObject; +export type ParameterObject = __ParameterObject; +export type RuleSetObject = __RuleSetObject; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts new file mode 100644 index 0000000..ecdb6b4 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/TreeRuleObject.d.ts @@ -0,0 +1,3 @@ +import { RuleSetRules as __RuleSetRules, TreeRuleObject as __TreeRuleObject } from "@smithy/types"; +export type RuleSetRules = __RuleSetRules; +export type TreeRuleObject = __TreeRuleObject; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/index.d.ts new file mode 100644 index 0000000..f89fb63 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/index.d.ts @@ -0,0 +1,7 @@ +export * from "./EndpointError"; +export * from "./EndpointFunctions"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/shared.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/shared.d.ts new file mode 100644 index 0000000..052dcf3 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/types/shared.d.ts @@ -0,0 +1,25 @@ +import { EndpointARN, EndpointPartition, Logger } from "@smithy/types"; +export type ReferenceObject = { + ref: string; +}; +export type FunctionObject = { + fn: string; + argv: FunctionArgv; +}; +export type FunctionArgv = Array; +export type FunctionReturn = string | boolean | number | EndpointARN | EndpointPartition | { + [key: string]: FunctionReturn; +} | null; +export type ConditionObject = FunctionObject & { + assign?: string; +}; +export type Expression = string | ReferenceObject | FunctionObject; +export type EndpointParams = Record; +export type EndpointResolverOptions = { + endpointParams: EndpointParams; + logger?: Logger; +}; +export type ReferenceRecord = Record; +export type EvaluateOptions = EndpointResolverOptions & { + referenceRecord: ReferenceRecord; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/callFunction.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/callFunction.d.ts new file mode 100644 index 0000000..2395c06 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/callFunction.d.ts @@ -0,0 +1 @@ +export { callFunction } from "./evaluateExpression"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/customEndpointFunctions.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/customEndpointFunctions.d.ts new file mode 100644 index 0000000..1cd2240 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/customEndpointFunctions.d.ts @@ -0,0 +1,4 @@ +import { EndpointFunctions } from "../types/EndpointFunctions"; +export declare const customEndpointFunctions: { + [key: string]: EndpointFunctions; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/endpointFunctions.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/endpointFunctions.d.ts new file mode 100644 index 0000000..6e80194 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/endpointFunctions.d.ts @@ -0,0 +1,11 @@ +export declare const endpointFunctions: { + booleanEquals: (value1: boolean, value2: boolean) => boolean; + getAttr: (value: import("../lib").GetAttrValue, path: string) => import("../lib").GetAttrValue; + isSet: (value: unknown) => value is {}; + isValidHostLabel: (value: string, allowSubDomains?: boolean) => boolean; + not: (value: boolean) => boolean; + parseURL: (value: string | URL | import("@smithy/types").Endpoint) => import("@smithy/types").EndpointURL | null; + stringEquals: (value1: string, value2: string) => boolean; + substring: (input: string, start: number, stop: number, reverse: boolean) => string | null; + uriEncode: (value: string) => string; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateCondition.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateCondition.d.ts new file mode 100644 index 0000000..ba2c0be --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateCondition.d.ts @@ -0,0 +1,8 @@ +import { ConditionObject, EvaluateOptions } from "../types"; +export declare const evaluateCondition: ({ assign, ...fnArgs }: ConditionObject, options: EvaluateOptions) => { + toAssign?: { + name: string; + value: import("../types").FunctionReturn; + } | undefined; + result: boolean; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateConditions.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateConditions.d.ts new file mode 100644 index 0000000..a7fbc5f --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateConditions.d.ts @@ -0,0 +1,8 @@ +import { ConditionObject, EvaluateOptions, FunctionReturn } from "../types"; +export declare const evaluateConditions: (conditions: ConditionObject[] | undefined, options: EvaluateOptions) => { + result: false; + referenceRecord?: undefined; +} | { + result: boolean; + referenceRecord: Record; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateEndpointRule.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateEndpointRule.d.ts new file mode 100644 index 0000000..32f23ff --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateEndpointRule.d.ts @@ -0,0 +1,3 @@ +import { EndpointV2 } from "@smithy/types"; +import { EndpointRuleObject, EvaluateOptions } from "../types"; +export declare const evaluateEndpointRule: (endpointRule: EndpointRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateErrorRule.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateErrorRule.d.ts new file mode 100644 index 0000000..eef15e3 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateErrorRule.d.ts @@ -0,0 +1,2 @@ +import { ErrorRuleObject, EvaluateOptions } from "../types"; +export declare const evaluateErrorRule: (errorRule: ErrorRuleObject, options: EvaluateOptions) => void; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateExpression.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateExpression.d.ts new file mode 100644 index 0000000..aae829e --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateExpression.d.ts @@ -0,0 +1,7 @@ +import { EvaluateOptions, Expression, FunctionObject, FunctionReturn } from "../types"; +export declare const evaluateExpression: (obj: Expression, keyName: string, options: EvaluateOptions) => FunctionReturn; +export declare const callFunction: ({ fn, argv }: FunctionObject, options: EvaluateOptions) => FunctionReturn; +export declare const group: { + evaluateExpression: (obj: Expression, keyName: string, options: EvaluateOptions) => FunctionReturn; + callFunction: ({ fn, argv }: FunctionObject, options: EvaluateOptions) => FunctionReturn; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateRules.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateRules.d.ts new file mode 100644 index 0000000..53a4691 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateRules.d.ts @@ -0,0 +1,8 @@ +import { EndpointV2 } from "@smithy/types"; +import { EvaluateOptions, RuleSetRules, TreeRuleObject } from "../types"; +export declare const evaluateRules: (rules: RuleSetRules, options: EvaluateOptions) => EndpointV2; +export declare const evaluateTreeRule: (treeRule: TreeRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; +export declare const group: { + evaluateRules: (rules: RuleSetRules, options: EvaluateOptions) => EndpointV2; + evaluateTreeRule: (treeRule: TreeRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTemplate.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTemplate.d.ts new file mode 100644 index 0000000..e6ae9c3 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTemplate.d.ts @@ -0,0 +1,2 @@ +import { EvaluateOptions } from "../types"; +export declare const evaluateTemplate: (template: string, options: EvaluateOptions) => string; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTreeRule.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTreeRule.d.ts new file mode 100644 index 0000000..115688a --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/evaluateTreeRule.d.ts @@ -0,0 +1 @@ +export { evaluateTreeRule } from "./evaluateRules"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointHeaders.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointHeaders.d.ts new file mode 100644 index 0000000..2775159 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointHeaders.d.ts @@ -0,0 +1,2 @@ +import { EndpointObjectHeaders, EvaluateOptions } from "../types"; +export declare const getEndpointHeaders: (headers: EndpointObjectHeaders, options: EvaluateOptions) => {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperties.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperties.d.ts new file mode 100644 index 0000000..434a41f --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperties.d.ts @@ -0,0 +1,8 @@ +import { EndpointObjectProperty } from "@smithy/types"; +import { EndpointObjectProperties, EvaluateOptions } from "../types"; +export declare const getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {}; +export declare const getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty; +export declare const group: { + getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty; + getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {}; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperty.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperty.d.ts new file mode 100644 index 0000000..c564156 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointProperty.d.ts @@ -0,0 +1 @@ +export { getEndpointProperty } from "./getEndpointProperties"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointUrl.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointUrl.d.ts new file mode 100644 index 0000000..9c93422 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getEndpointUrl.d.ts @@ -0,0 +1,2 @@ +import { EvaluateOptions, Expression } from "../types"; +export declare const getEndpointUrl: (endpointUrl: Expression, options: EvaluateOptions) => URL; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getReferenceValue.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getReferenceValue.d.ts new file mode 100644 index 0000000..2ebfda3 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/getReferenceValue.d.ts @@ -0,0 +1,2 @@ +import { EvaluateOptions, ReferenceObject } from "../types"; +export declare const getReferenceValue: ({ ref }: ReferenceObject, options: EvaluateOptions) => import("../types").FunctionReturn; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/index.d.ts new file mode 100644 index 0000000..bd481df --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/ts3.4/utils/index.d.ts @@ -0,0 +1,2 @@ +export * from "./customEndpointFunctions"; +export * from "./evaluateRules"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/types/EndpointError.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/types/EndpointError.d.ts new file mode 100644 index 0000000..89132f2 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/types/EndpointError.d.ts @@ -0,0 +1,3 @@ +export declare class EndpointError extends Error { + constructor(message: string); +} diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/types/EndpointFunctions.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/types/EndpointFunctions.d.ts new file mode 100644 index 0000000..df54d76 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/types/EndpointFunctions.d.ts @@ -0,0 +1,2 @@ +import type { FunctionReturn } from "./shared"; +export type EndpointFunctions = Record FunctionReturn>; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/types/EndpointRuleObject.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/types/EndpointRuleObject.d.ts new file mode 100644 index 0000000..990206a --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/types/EndpointRuleObject.d.ts @@ -0,0 +1,5 @@ +import type { EndpointObject as __EndpointObject, EndpointObjectHeaders as __EndpointObjectHeaders, EndpointObjectProperties as __EndpointObjectProperties, EndpointRuleObject as __EndpointRuleObject } from "@smithy/types"; +export type EndpointObjectProperties = __EndpointObjectProperties; +export type EndpointObjectHeaders = __EndpointObjectHeaders; +export type EndpointObject = __EndpointObject; +export type EndpointRuleObject = __EndpointRuleObject; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/types/ErrorRuleObject.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/types/ErrorRuleObject.d.ts new file mode 100644 index 0000000..2b2d06f --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/types/ErrorRuleObject.d.ts @@ -0,0 +1,2 @@ +import type { ErrorRuleObject as __ErrorRuleObject } from "@smithy/types"; +export type ErrorRuleObject = __ErrorRuleObject; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/types/RuleSetObject.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/types/RuleSetObject.d.ts new file mode 100644 index 0000000..25fe3ae --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/types/RuleSetObject.d.ts @@ -0,0 +1,4 @@ +import type { DeprecatedObject as __DeprecatedObject, ParameterObject as __ParameterObject, RuleSetObject as __RuleSetObject } from "@smithy/types"; +export type DeprecatedObject = __DeprecatedObject; +export type ParameterObject = __ParameterObject; +export type RuleSetObject = __RuleSetObject; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/types/TreeRuleObject.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/types/TreeRuleObject.d.ts new file mode 100644 index 0000000..733f153 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/types/TreeRuleObject.d.ts @@ -0,0 +1,3 @@ +import type { RuleSetRules as __RuleSetRules, TreeRuleObject as __TreeRuleObject } from "@smithy/types"; +export type RuleSetRules = __RuleSetRules; +export type TreeRuleObject = __TreeRuleObject; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/types/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/types/index.d.ts new file mode 100644 index 0000000..a49f984 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/types/index.d.ts @@ -0,0 +1,7 @@ +export * from "./EndpointError"; +export * from "./EndpointFunctions"; +export * from "./EndpointRuleObject"; +export * from "./ErrorRuleObject"; +export * from "./RuleSetObject"; +export * from "./TreeRuleObject"; +export * from "./shared"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts new file mode 100644 index 0000000..3f8671d --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts @@ -0,0 +1,25 @@ +import type { EndpointARN, EndpointPartition, Logger } from "@smithy/types"; +export type ReferenceObject = { + ref: string; +}; +export type FunctionObject = { + fn: string; + argv: FunctionArgv; +}; +export type FunctionArgv = Array; +export type FunctionReturn = string | boolean | number | EndpointARN | EndpointPartition | { + [key: string]: FunctionReturn; +} | null; +export type ConditionObject = FunctionObject & { + assign?: string; +}; +export type Expression = string | ReferenceObject | FunctionObject; +export type EndpointParams = Record; +export type EndpointResolverOptions = { + endpointParams: EndpointParams; + logger?: Logger; +}; +export type ReferenceRecord = Record; +export type EvaluateOptions = EndpointResolverOptions & { + referenceRecord: ReferenceRecord; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/callFunction.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/callFunction.d.ts new file mode 100644 index 0000000..cd041e3 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/callFunction.d.ts @@ -0,0 +1 @@ +export { callFunction } from "./evaluateExpression"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/customEndpointFunctions.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/customEndpointFunctions.d.ts new file mode 100644 index 0000000..dc8999c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/customEndpointFunctions.d.ts @@ -0,0 +1,4 @@ +import type { EndpointFunctions } from "../types/EndpointFunctions"; +export declare const customEndpointFunctions: { + [key: string]: EndpointFunctions; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts new file mode 100644 index 0000000..e1598fb --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts @@ -0,0 +1,11 @@ +export declare const endpointFunctions: { + booleanEquals: (value1: boolean, value2: boolean) => boolean; + getAttr: (value: import("../lib").GetAttrValue, path: string) => import("../lib").GetAttrValue; + isSet: (value: unknown) => value is {}; + isValidHostLabel: (value: string, allowSubDomains?: boolean) => boolean; + not: (value: boolean) => boolean; + parseURL: (value: string | URL | import("@smithy/types").Endpoint) => import("@smithy/types").EndpointURL | null; + stringEquals: (value1: string, value2: string) => boolean; + substring: (input: string, start: number, stop: number, reverse: boolean) => string | null; + uriEncode: (value: string) => string; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts new file mode 100644 index 0000000..c8c1c9f --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts @@ -0,0 +1,8 @@ +import type { ConditionObject, EvaluateOptions } from "../types"; +export declare const evaluateCondition: ({ assign, ...fnArgs }: ConditionObject, options: EvaluateOptions) => { + toAssign?: { + name: string; + value: import("../types").FunctionReturn; + } | undefined; + result: boolean; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts new file mode 100644 index 0000000..18f6b06 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts @@ -0,0 +1,8 @@ +import type { ConditionObject, EvaluateOptions, FunctionReturn } from "../types"; +export declare const evaluateConditions: (conditions: ConditionObject[] | undefined, options: EvaluateOptions) => { + result: false; + referenceRecord?: undefined; +} | { + result: boolean; + referenceRecord: Record; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateEndpointRule.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateEndpointRule.d.ts new file mode 100644 index 0000000..64b60c4 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateEndpointRule.d.ts @@ -0,0 +1,3 @@ +import type { EndpointV2 } from "@smithy/types"; +import type { EndpointRuleObject, EvaluateOptions } from "../types"; +export declare const evaluateEndpointRule: (endpointRule: EndpointRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateErrorRule.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateErrorRule.d.ts new file mode 100644 index 0000000..546ef5c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateErrorRule.d.ts @@ -0,0 +1,2 @@ +import type { ErrorRuleObject, EvaluateOptions } from "../types"; +export declare const evaluateErrorRule: (errorRule: ErrorRuleObject, options: EvaluateOptions) => void; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateExpression.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateExpression.d.ts new file mode 100644 index 0000000..2f56cad --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateExpression.d.ts @@ -0,0 +1,7 @@ +import type { EvaluateOptions, Expression, FunctionObject, FunctionReturn } from "../types"; +export declare const evaluateExpression: (obj: Expression, keyName: string, options: EvaluateOptions) => FunctionReturn; +export declare const callFunction: ({ fn, argv }: FunctionObject, options: EvaluateOptions) => FunctionReturn; +export declare const group: { + evaluateExpression: (obj: Expression, keyName: string, options: EvaluateOptions) => FunctionReturn; + callFunction: ({ fn, argv }: FunctionObject, options: EvaluateOptions) => FunctionReturn; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateRules.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateRules.d.ts new file mode 100644 index 0000000..3b45235 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateRules.d.ts @@ -0,0 +1,8 @@ +import type { EndpointV2 } from "@smithy/types"; +import type { EvaluateOptions, RuleSetRules, TreeRuleObject } from "../types"; +export declare const evaluateRules: (rules: RuleSetRules, options: EvaluateOptions) => EndpointV2; +export declare const evaluateTreeRule: (treeRule: TreeRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; +export declare const group: { + evaluateRules: (rules: RuleSetRules, options: EvaluateOptions) => EndpointV2; + evaluateTreeRule: (treeRule: TreeRuleObject, options: EvaluateOptions) => EndpointV2 | undefined; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTemplate.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTemplate.d.ts new file mode 100644 index 0000000..4ea9316 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTemplate.d.ts @@ -0,0 +1,2 @@ +import type { EvaluateOptions } from "../types"; +export declare const evaluateTemplate: (template: string, options: EvaluateOptions) => string; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTreeRule.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTreeRule.d.ts new file mode 100644 index 0000000..128a59c --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateTreeRule.d.ts @@ -0,0 +1 @@ +export { evaluateTreeRule } from "./evaluateRules"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts new file mode 100644 index 0000000..cff2a47 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts @@ -0,0 +1,2 @@ +import type { EndpointObjectHeaders, EvaluateOptions } from "../types"; +export declare const getEndpointHeaders: (headers: EndpointObjectHeaders, options: EvaluateOptions) => {}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts new file mode 100644 index 0000000..d4cbccb --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts @@ -0,0 +1,8 @@ +import type { EndpointObjectProperty } from "@smithy/types"; +import type { EndpointObjectProperties, EvaluateOptions } from "../types"; +export declare const getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {}; +export declare const getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty; +export declare const group: { + getEndpointProperty: (property: EndpointObjectProperty, options: EvaluateOptions) => EndpointObjectProperty; + getEndpointProperties: (properties: EndpointObjectProperties, options: EvaluateOptions) => {}; +}; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperty.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperty.d.ts new file mode 100644 index 0000000..3bf38a5 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperty.d.ts @@ -0,0 +1 @@ +export { getEndpointProperty } from "./getEndpointProperties"; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointUrl.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointUrl.d.ts new file mode 100644 index 0000000..60aadda --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointUrl.d.ts @@ -0,0 +1,2 @@ +import type { EvaluateOptions, Expression } from "../types"; +export declare const getEndpointUrl: (endpointUrl: Expression, options: EvaluateOptions) => URL; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts new file mode 100644 index 0000000..40bc344 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts @@ -0,0 +1,2 @@ +import type { EvaluateOptions, ReferenceObject } from "../types"; +export declare const getReferenceValue: ({ ref }: ReferenceObject, options: EvaluateOptions) => import("../types").FunctionReturn; diff --git a/bff/node_modules/@smithy/util-endpoints/dist-types/utils/index.d.ts b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/index.d.ts new file mode 100644 index 0000000..b571d02 --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/dist-types/utils/index.d.ts @@ -0,0 +1,2 @@ +export * from "./customEndpointFunctions"; +export * from "./evaluateRules"; diff --git a/bff/node_modules/@smithy/util-endpoints/package.json b/bff/node_modules/@smithy/util-endpoints/package.json new file mode 100644 index 0000000..089522f --- /dev/null +++ b/bff/node_modules/@smithy/util-endpoints/package.json @@ -0,0 +1,69 @@ +{ + "name": "@smithy/util-endpoints", + "version": "3.3.3", + "description": "Utilities to help with endpoint resolution.", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-endpoints", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "endpoint" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "types/*": [ + "types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/master/packages/util-endpoints", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-endpoints" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-hex-encoding/LICENSE b/bff/node_modules/@smithy/util-hex-encoding/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/util-hex-encoding/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-hex-encoding/README.md b/bff/node_modules/@smithy/util-hex-encoding/README.md new file mode 100644 index 0000000..67e4499 --- /dev/null +++ b/bff/node_modules/@smithy/util-hex-encoding/README.md @@ -0,0 +1,4 @@ +# @smithy/util-hex-encoding + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-hex-encoding/latest.svg)](https://www.npmjs.com/package/@smithy/util-hex-encoding) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-hex-encoding.svg)](https://www.npmjs.com/package/@smithy/util-hex-encoding) diff --git a/bff/node_modules/@smithy/util-hex-encoding/dist-cjs/index.js b/bff/node_modules/@smithy/util-hex-encoding/dist-cjs/index.js new file mode 100644 index 0000000..6d1eb2d --- /dev/null +++ b/bff/node_modules/@smithy/util-hex-encoding/dist-cjs/index.js @@ -0,0 +1,38 @@ +'use strict'; + +const SHORT_TO_HEX = {}; +const HEX_TO_SHORT = {}; +for (let i = 0; i < 256; i++) { + let encodedByte = i.toString(16).toLowerCase(); + if (encodedByte.length === 1) { + encodedByte = `0${encodedByte}`; + } + SHORT_TO_HEX[i] = encodedByte; + HEX_TO_SHORT[encodedByte] = i; +} +function fromHex(encoded) { + if (encoded.length % 2 !== 0) { + throw new Error("Hex encoded strings must have an even number length"); + } + const out = new Uint8Array(encoded.length / 2); + for (let i = 0; i < encoded.length; i += 2) { + const encodedByte = encoded.slice(i, i + 2).toLowerCase(); + if (encodedByte in HEX_TO_SHORT) { + out[i / 2] = HEX_TO_SHORT[encodedByte]; + } + else { + throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`); + } + } + return out; +} +function toHex(bytes) { + let out = ""; + for (let i = 0; i < bytes.byteLength; i++) { + out += SHORT_TO_HEX[bytes[i]]; + } + return out; +} + +exports.fromHex = fromHex; +exports.toHex = toHex; diff --git a/bff/node_modules/@smithy/util-hex-encoding/dist-es/index.js b/bff/node_modules/@smithy/util-hex-encoding/dist-es/index.js new file mode 100644 index 0000000..e47b3aa --- /dev/null +++ b/bff/node_modules/@smithy/util-hex-encoding/dist-es/index.js @@ -0,0 +1,33 @@ +const SHORT_TO_HEX = {}; +const HEX_TO_SHORT = {}; +for (let i = 0; i < 256; i++) { + let encodedByte = i.toString(16).toLowerCase(); + if (encodedByte.length === 1) { + encodedByte = `0${encodedByte}`; + } + SHORT_TO_HEX[i] = encodedByte; + HEX_TO_SHORT[encodedByte] = i; +} +export function fromHex(encoded) { + if (encoded.length % 2 !== 0) { + throw new Error("Hex encoded strings must have an even number length"); + } + const out = new Uint8Array(encoded.length / 2); + for (let i = 0; i < encoded.length; i += 2) { + const encodedByte = encoded.slice(i, i + 2).toLowerCase(); + if (encodedByte in HEX_TO_SHORT) { + out[i / 2] = HEX_TO_SHORT[encodedByte]; + } + else { + throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`); + } + } + return out; +} +export function toHex(bytes) { + let out = ""; + for (let i = 0; i < bytes.byteLength; i++) { + out += SHORT_TO_HEX[bytes[i]]; + } + return out; +} diff --git a/bff/node_modules/@smithy/util-hex-encoding/dist-types/index.d.ts b/bff/node_modules/@smithy/util-hex-encoding/dist-types/index.d.ts new file mode 100644 index 0000000..9d4307a --- /dev/null +++ b/bff/node_modules/@smithy/util-hex-encoding/dist-types/index.d.ts @@ -0,0 +1,12 @@ +/** + * Converts a hexadecimal encoded string to a Uint8Array of bytes. + * + * @param encoded The hexadecimal encoded string + */ +export declare function fromHex(encoded: string): Uint8Array; +/** + * Converts a Uint8Array of binary data to a hexadecimal encoded string. + * + * @param bytes The binary data to encode + */ +export declare function toHex(bytes: Uint8Array): string; diff --git a/bff/node_modules/@smithy/util-hex-encoding/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-hex-encoding/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..02a8848 --- /dev/null +++ b/bff/node_modules/@smithy/util-hex-encoding/dist-types/ts3.4/index.d.ts @@ -0,0 +1,12 @@ +/** + * Converts a hexadecimal encoded string to a Uint8Array of bytes. + * + * @param encoded The hexadecimal encoded string + */ +export declare function fromHex(encoded: string): Uint8Array; +/** + * Converts a Uint8Array of binary data to a hexadecimal encoded string. + * + * @param bytes The binary data to encode + */ +export declare function toHex(bytes: Uint8Array): string; diff --git a/bff/node_modules/@smithy/util-hex-encoding/package.json b/bff/node_modules/@smithy/util-hex-encoding/package.json new file mode 100644 index 0000000..cf4d44e --- /dev/null +++ b/bff/node_modules/@smithy/util-hex-encoding/package.json @@ -0,0 +1,61 @@ +{ + "name": "@smithy/util-hex-encoding", + "version": "4.2.2", + "description": "Converts binary buffers to and from lowercase hexadecimal encoding", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-hex-encoding", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "dependencies": { + "tslib": "^2.6.2" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-hex-encoding", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-hex-encoding" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-middleware/LICENSE b/bff/node_modules/@smithy/util-middleware/LICENSE new file mode 100644 index 0000000..a1895fa --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-middleware/README.md b/bff/node_modules/@smithy/util-middleware/README.md new file mode 100644 index 0000000..f043cfa --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/README.md @@ -0,0 +1,12 @@ +# @smithy/util-middleware + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-middleware/latest.svg)](https://www.npmjs.com/package/@smithy/util-middleware) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-middleware.svg)](https://www.npmjs.com/package/@smithy/util-middleware) + +> An internal package + +This package provides shared utilities for middleware. + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/util-middleware/dist-cjs/index.js b/bff/node_modules/@smithy/util-middleware/dist-cjs/index.js new file mode 100644 index 0000000..2b9af75 --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-cjs/index.js @@ -0,0 +1,15 @@ +'use strict'; + +var types = require('@smithy/types'); + +const getSmithyContext = (context) => context[types.SMITHY_CONTEXT_KEY] || (context[types.SMITHY_CONTEXT_KEY] = {}); + +const normalizeProvider = (input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; +}; + +exports.getSmithyContext = getSmithyContext; +exports.normalizeProvider = normalizeProvider; diff --git a/bff/node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js b/bff/node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js new file mode 100644 index 0000000..3848a0c --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js @@ -0,0 +1,2 @@ +import { SMITHY_CONTEXT_KEY } from "@smithy/types"; +export const getSmithyContext = (context) => context[SMITHY_CONTEXT_KEY] || (context[SMITHY_CONTEXT_KEY] = {}); diff --git a/bff/node_modules/@smithy/util-middleware/dist-es/index.js b/bff/node_modules/@smithy/util-middleware/dist-es/index.js new file mode 100644 index 0000000..484290d --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./getSmithyContext"; +export * from "./normalizeProvider"; diff --git a/bff/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js b/bff/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js new file mode 100644 index 0000000..a83ea99 --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js @@ -0,0 +1,6 @@ +export const normalizeProvider = (input) => { + if (typeof input === "function") + return input; + const promisified = Promise.resolve(input); + return () => promisified; +}; diff --git a/bff/node_modules/@smithy/util-middleware/dist-types/getSmithyContext.d.ts b/bff/node_modules/@smithy/util-middleware/dist-types/getSmithyContext.d.ts new file mode 100644 index 0000000..92cbb09 --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-types/getSmithyContext.d.ts @@ -0,0 +1,5 @@ +import type { HandlerExecutionContext } from "@smithy/types"; +/** + * @internal + */ +export declare const getSmithyContext: (context: HandlerExecutionContext) => Record; diff --git a/bff/node_modules/@smithy/util-middleware/dist-types/index.d.ts b/bff/node_modules/@smithy/util-middleware/dist-types/index.d.ts new file mode 100644 index 0000000..3869284 --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./getSmithyContext"; +/** + * @internal + */ +export * from "./normalizeProvider"; diff --git a/bff/node_modules/@smithy/util-middleware/dist-types/normalizeProvider.d.ts b/bff/node_modules/@smithy/util-middleware/dist-types/normalizeProvider.d.ts new file mode 100644 index 0000000..1f7b6f6 --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-types/normalizeProvider.d.ts @@ -0,0 +1,7 @@ +import type { Provider } from "@smithy/types"; +/** + * @internal + * + * @returns a provider function for the input value if it isn't already one. + */ +export declare const normalizeProvider: (input: T | Provider) => Provider; diff --git a/bff/node_modules/@smithy/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts b/bff/node_modules/@smithy/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts new file mode 100644 index 0000000..14cd7c4 --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-types/ts3.4/getSmithyContext.d.ts @@ -0,0 +1,5 @@ +import { HandlerExecutionContext } from "@smithy/types"; +/** + * @internal + */ +export declare const getSmithyContext: (context: HandlerExecutionContext) => Record; diff --git a/bff/node_modules/@smithy/util-middleware/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-middleware/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ab07159 --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./getSmithyContext"; +/** + * @internal + */ +export * from "./normalizeProvider"; diff --git a/bff/node_modules/@smithy/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts b/bff/node_modules/@smithy/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts new file mode 100644 index 0000000..594e8fa --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/dist-types/ts3.4/normalizeProvider.d.ts @@ -0,0 +1,7 @@ +import { Provider } from "@smithy/types"; +/** + * @internal + * + * @returns a provider function for the input value if it isn't already one. + */ +export declare const normalizeProvider: (input: T | Provider) => Provider; diff --git a/bff/node_modules/@smithy/util-middleware/package.json b/bff/node_modules/@smithy/util-middleware/package.json new file mode 100644 index 0000000..6f9888d --- /dev/null +++ b/bff/node_modules/@smithy/util-middleware/package.json @@ -0,0 +1,67 @@ +{ + "name": "@smithy/util-middleware", + "version": "4.2.12", + "description": "Shared utilities for to be used in middleware packages.", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-middleware", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "middleware" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "types/*": [ + "types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/master/packages/util-middleware", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-middleware" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-retry/LICENSE b/bff/node_modules/@smithy/util-retry/LICENSE new file mode 100644 index 0000000..a1895fa --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-retry/README.md b/bff/node_modules/@smithy/util-retry/README.md new file mode 100644 index 0000000..bcf11a9 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/README.md @@ -0,0 +1,78 @@ +# @smithy/util-retry + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-retry/latest.svg)](https://www.npmjs.com/package/@smithy/util-retry) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-retry.svg)](https://www.npmjs.com/package/@smithy/util-retry) + +This package provides shared utilities for retries. + +## Usage + +### Default + +By default, each client already has a default retry strategy. The default retry count is 3, and +only retryable errors will be retried. + +[AWS Documentation: Retry behavior](https://docs.aws.amazon.com/sdkref/latest/guide/feature-retry-behavior.html). + +```js +import { S3Client } from "@aws-sdk/client-s3"; + +const client = new S3Client({}); // default retry strategy included. +``` + +### MaxAttempts + +If you want to change the number of attempts, you can provide `maxAttempts` configuration during client creation. + +```js +import { S3Client } from "@aws-sdk/client-s3"; + +const client = new S3Client({ maxAttempts: 4 }); +``` + +This is recommended because the `StandardRetryStrategy` includes backoff calculation, +deciding whether an error should be retried, and a retry token counter. + +### MaxAttempts and BackoffComputation + +If you want to change the number of attempts and use a custom delay +computation, you can use the `ConfiguredRetryStrategy` from `@smithy/util-retry`. + +```js +import { S3Client } from "@aws-sdk/client-s3"; +import { ConfiguredRetryStrategy } from "@smithy/util-retry"; + +const client = new S3Client({ + retryStrategy: new ConfiguredRetryStrategy( + 4, // max attempts. + (attempt: number) => 100 + attempt * 1000 // backoff function. + ), +}); +``` + +This example sets the backoff at 100ms plus 1s per attempt. + +### MaxAttempts and RetryStrategy + +If you provide both `maxAttempts` and `retryStrategy`, the `retryStrategy` will +get precedence as it's more specific. + +```js +import { S3Client } from "@aws-sdk/client-s3"; +import { ConfiguredRetryStrategy } from "@smithy/util-retry"; + +const client = new S3Client({ + maxAttempts: 2, // ignored. + retryStrategy: new ConfiguredRetryStrategy( + 4, // used. + (attempt: number) => 100 + attempt * 1000 // backoff function. + ), +}); +``` + +### Further customization + +You can implement the `RetryStrategyV2` interface. + +Source: https://github.com/smithy-lang/smithy-typescript/blob/main/packages/types/src/retry.ts +API Docs: https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-types/Interface/RetryStrategyV2/ diff --git a/bff/node_modules/@smithy/util-retry/dist-cjs/index.js b/bff/node_modules/@smithy/util-retry/dist-cjs/index.js new file mode 100644 index 0000000..6119d5a --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-cjs/index.js @@ -0,0 +1,280 @@ +'use strict'; + +var serviceErrorClassification = require('@smithy/service-error-classification'); + +exports.RETRY_MODES = void 0; +(function (RETRY_MODES) { + RETRY_MODES["STANDARD"] = "standard"; + RETRY_MODES["ADAPTIVE"] = "adaptive"; +})(exports.RETRY_MODES || (exports.RETRY_MODES = {})); +const DEFAULT_MAX_ATTEMPTS = 3; +const DEFAULT_RETRY_MODE = exports.RETRY_MODES.STANDARD; + +class DefaultRateLimiter { + static setTimeoutFn = setTimeout; + beta; + minCapacity; + minFillRate; + scaleConstant; + smooth; + enabled = false; + availableTokens = 0; + lastMaxRate = 0; + measuredTxRate = 0; + requestCount = 0; + fillRate; + lastThrottleTime; + lastTimestamp = 0; + lastTxRateBucket; + maxCapacity; + timeWindow = 0; + constructor(options) { + this.beta = options?.beta ?? 0.7; + this.minCapacity = options?.minCapacity ?? 1; + this.minFillRate = options?.minFillRate ?? 0.5; + this.scaleConstant = options?.scaleConstant ?? 0.4; + this.smooth = options?.smooth ?? 0.8; + const currentTimeInSeconds = this.getCurrentTimeInSeconds(); + this.lastThrottleTime = currentTimeInSeconds; + this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds()); + this.fillRate = this.minFillRate; + this.maxCapacity = this.minCapacity; + } + getCurrentTimeInSeconds() { + return Date.now() / 1000; + } + async getSendToken() { + return this.acquireTokenBucket(1); + } + async acquireTokenBucket(amount) { + if (!this.enabled) { + return; + } + this.refillTokenBucket(); + if (amount > this.availableTokens) { + const delay = ((amount - this.availableTokens) / this.fillRate) * 1000; + await new Promise((resolve) => DefaultRateLimiter.setTimeoutFn(resolve, delay)); + } + this.availableTokens = this.availableTokens - amount; + } + refillTokenBucket() { + const timestamp = this.getCurrentTimeInSeconds(); + if (!this.lastTimestamp) { + this.lastTimestamp = timestamp; + return; + } + const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate; + this.availableTokens = Math.min(this.maxCapacity, this.availableTokens + fillAmount); + this.lastTimestamp = timestamp; + } + updateClientSendingRate(response) { + let calculatedRate; + this.updateMeasuredRate(); + const retryErrorInfo = response; + const isThrottling = retryErrorInfo?.errorType === "THROTTLING" || serviceErrorClassification.isThrottlingError(retryErrorInfo?.error ?? response); + if (isThrottling) { + const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate); + this.lastMaxRate = rateToUse; + this.calculateTimeWindow(); + this.lastThrottleTime = this.getCurrentTimeInSeconds(); + calculatedRate = this.cubicThrottle(rateToUse); + this.enableTokenBucket(); + } + else { + this.calculateTimeWindow(); + calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds()); + } + const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate); + this.updateTokenBucketRate(newRate); + } + calculateTimeWindow() { + this.timeWindow = this.getPrecise(Math.pow((this.lastMaxRate * (1 - this.beta)) / this.scaleConstant, 1 / 3)); + } + cubicThrottle(rateToUse) { + return this.getPrecise(rateToUse * this.beta); + } + cubicSuccess(timestamp) { + return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate); + } + enableTokenBucket() { + this.enabled = true; + } + updateTokenBucketRate(newRate) { + this.refillTokenBucket(); + this.fillRate = Math.max(newRate, this.minFillRate); + this.maxCapacity = Math.max(newRate, this.minCapacity); + this.availableTokens = Math.min(this.availableTokens, this.maxCapacity); + } + updateMeasuredRate() { + const t = this.getCurrentTimeInSeconds(); + const timeBucket = Math.floor(t * 2) / 2; + this.requestCount++; + if (timeBucket > this.lastTxRateBucket) { + const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket); + this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth)); + this.requestCount = 0; + this.lastTxRateBucket = timeBucket; + } + } + getPrecise(num) { + return parseFloat(num.toFixed(8)); + } +} + +const DEFAULT_RETRY_DELAY_BASE = 100; +const MAXIMUM_RETRY_DELAY = 20 * 1000; +const THROTTLING_RETRY_DELAY_BASE = 500; +const INITIAL_RETRY_TOKENS = 500; +const RETRY_COST = 5; +const TIMEOUT_RETRY_COST = 10; +const NO_RETRY_INCREMENT = 1; +const INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; +const REQUEST_HEADER = "amz-sdk-request"; + +const getDefaultRetryBackoffStrategy = () => { + let delayBase = DEFAULT_RETRY_DELAY_BASE; + const computeNextBackoffDelay = (attempts) => { + return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); + }; + const setDelayBase = (delay) => { + delayBase = delay; + }; + return { + computeNextBackoffDelay, + setDelayBase, + }; +}; + +const createDefaultRetryToken = ({ retryDelay, retryCount, retryCost, }) => { + const getRetryCount = () => retryCount; + const getRetryDelay = () => Math.min(MAXIMUM_RETRY_DELAY, retryDelay); + const getRetryCost = () => retryCost; + return { + getRetryCount, + getRetryDelay, + getRetryCost, + }; +}; + +class StandardRetryStrategy { + maxAttempts; + mode = exports.RETRY_MODES.STANDARD; + capacity = INITIAL_RETRY_TOKENS; + retryBackoffStrategy = getDefaultRetryBackoffStrategy(); + maxAttemptsProvider; + constructor(maxAttempts) { + this.maxAttempts = maxAttempts; + this.maxAttemptsProvider = typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts; + } + async acquireInitialRetryToken(retryTokenScope) { + return createDefaultRetryToken({ + retryDelay: DEFAULT_RETRY_DELAY_BASE, + retryCount: 0, + }); + } + async refreshRetryTokenForRetry(token, errorInfo) { + const maxAttempts = await this.getMaxAttempts(); + if (this.shouldRetry(token, errorInfo, maxAttempts)) { + const errorType = errorInfo.errorType; + this.retryBackoffStrategy.setDelayBase(errorType === "THROTTLING" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE); + const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount()); + const retryDelay = errorInfo.retryAfterHint + ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType) + : delayFromErrorType; + const capacityCost = this.getCapacityCost(errorType); + this.capacity -= capacityCost; + return createDefaultRetryToken({ + retryDelay, + retryCount: token.getRetryCount() + 1, + retryCost: capacityCost, + }); + } + throw new Error("No retry token available"); + } + recordSuccess(token) { + this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT)); + } + getCapacity() { + return this.capacity; + } + async getMaxAttempts() { + try { + return await this.maxAttemptsProvider(); + } + catch (error) { + console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`); + return DEFAULT_MAX_ATTEMPTS; + } + } + shouldRetry(tokenToRenew, errorInfo, maxAttempts) { + const attempts = tokenToRenew.getRetryCount() + 1; + return (attempts < maxAttempts && + this.capacity >= this.getCapacityCost(errorInfo.errorType) && + this.isRetryableError(errorInfo.errorType)); + } + getCapacityCost(errorType) { + return errorType === "TRANSIENT" ? TIMEOUT_RETRY_COST : RETRY_COST; + } + isRetryableError(errorType) { + return errorType === "THROTTLING" || errorType === "TRANSIENT"; + } +} + +class AdaptiveRetryStrategy { + maxAttemptsProvider; + rateLimiter; + standardRetryStrategy; + mode = exports.RETRY_MODES.ADAPTIVE; + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + const { rateLimiter } = options ?? {}; + this.rateLimiter = rateLimiter ?? new DefaultRateLimiter(); + this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider); + } + async acquireInitialRetryToken(retryTokenScope) { + await this.rateLimiter.getSendToken(); + return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope); + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + this.rateLimiter.updateClientSendingRate(errorInfo); + return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + } + recordSuccess(token) { + this.rateLimiter.updateClientSendingRate({}); + this.standardRetryStrategy.recordSuccess(token); + } +} + +class ConfiguredRetryStrategy extends StandardRetryStrategy { + computeNextBackoffDelay; + constructor(maxAttempts, computeNextBackoffDelay = DEFAULT_RETRY_DELAY_BASE) { + super(typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts); + if (typeof computeNextBackoffDelay === "number") { + this.computeNextBackoffDelay = () => computeNextBackoffDelay; + } + else { + this.computeNextBackoffDelay = computeNextBackoffDelay; + } + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + const token = await super.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + token.getRetryDelay = () => this.computeNextBackoffDelay(token.getRetryCount()); + return token; + } +} + +exports.AdaptiveRetryStrategy = AdaptiveRetryStrategy; +exports.ConfiguredRetryStrategy = ConfiguredRetryStrategy; +exports.DEFAULT_MAX_ATTEMPTS = DEFAULT_MAX_ATTEMPTS; +exports.DEFAULT_RETRY_DELAY_BASE = DEFAULT_RETRY_DELAY_BASE; +exports.DEFAULT_RETRY_MODE = DEFAULT_RETRY_MODE; +exports.DefaultRateLimiter = DefaultRateLimiter; +exports.INITIAL_RETRY_TOKENS = INITIAL_RETRY_TOKENS; +exports.INVOCATION_ID_HEADER = INVOCATION_ID_HEADER; +exports.MAXIMUM_RETRY_DELAY = MAXIMUM_RETRY_DELAY; +exports.NO_RETRY_INCREMENT = NO_RETRY_INCREMENT; +exports.REQUEST_HEADER = REQUEST_HEADER; +exports.RETRY_COST = RETRY_COST; +exports.StandardRetryStrategy = StandardRetryStrategy; +exports.THROTTLING_RETRY_DELAY_BASE = THROTTLING_RETRY_DELAY_BASE; +exports.TIMEOUT_RETRY_COST = TIMEOUT_RETRY_COST; diff --git a/bff/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js b/bff/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js new file mode 100644 index 0000000..b00d5c0 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js @@ -0,0 +1,27 @@ +import { RETRY_MODES } from "./config"; +import { DefaultRateLimiter } from "./DefaultRateLimiter"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +export class AdaptiveRetryStrategy { + maxAttemptsProvider; + rateLimiter; + standardRetryStrategy; + mode = RETRY_MODES.ADAPTIVE; + constructor(maxAttemptsProvider, options) { + this.maxAttemptsProvider = maxAttemptsProvider; + const { rateLimiter } = options ?? {}; + this.rateLimiter = rateLimiter ?? new DefaultRateLimiter(); + this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider); + } + async acquireInitialRetryToken(retryTokenScope) { + await this.rateLimiter.getSendToken(); + return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope); + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + this.rateLimiter.updateClientSendingRate(errorInfo); + return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + } + recordSuccess(token) { + this.rateLimiter.updateClientSendingRate({}); + this.standardRetryStrategy.recordSuccess(token); + } +} diff --git a/bff/node_modules/@smithy/util-retry/dist-es/ConfiguredRetryStrategy.js b/bff/node_modules/@smithy/util-retry/dist-es/ConfiguredRetryStrategy.js new file mode 100644 index 0000000..59c8d76 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/ConfiguredRetryStrategy.js @@ -0,0 +1,19 @@ +import { DEFAULT_RETRY_DELAY_BASE } from "./constants"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +export class ConfiguredRetryStrategy extends StandardRetryStrategy { + computeNextBackoffDelay; + constructor(maxAttempts, computeNextBackoffDelay = DEFAULT_RETRY_DELAY_BASE) { + super(typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts); + if (typeof computeNextBackoffDelay === "number") { + this.computeNextBackoffDelay = () => computeNextBackoffDelay; + } + else { + this.computeNextBackoffDelay = computeNextBackoffDelay; + } + } + async refreshRetryTokenForRetry(tokenToRenew, errorInfo) { + const token = await super.refreshRetryTokenForRetry(tokenToRenew, errorInfo); + token.getRetryDelay = () => this.computeNextBackoffDelay(token.getRetryCount()); + return token; + } +} diff --git a/bff/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js b/bff/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js new file mode 100644 index 0000000..5576073 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js @@ -0,0 +1,111 @@ +import { isThrottlingError } from "@smithy/service-error-classification"; +export class DefaultRateLimiter { + static setTimeoutFn = setTimeout; + beta; + minCapacity; + minFillRate; + scaleConstant; + smooth; + enabled = false; + availableTokens = 0; + lastMaxRate = 0; + measuredTxRate = 0; + requestCount = 0; + fillRate; + lastThrottleTime; + lastTimestamp = 0; + lastTxRateBucket; + maxCapacity; + timeWindow = 0; + constructor(options) { + this.beta = options?.beta ?? 0.7; + this.minCapacity = options?.minCapacity ?? 1; + this.minFillRate = options?.minFillRate ?? 0.5; + this.scaleConstant = options?.scaleConstant ?? 0.4; + this.smooth = options?.smooth ?? 0.8; + const currentTimeInSeconds = this.getCurrentTimeInSeconds(); + this.lastThrottleTime = currentTimeInSeconds; + this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds()); + this.fillRate = this.minFillRate; + this.maxCapacity = this.minCapacity; + } + getCurrentTimeInSeconds() { + return Date.now() / 1000; + } + async getSendToken() { + return this.acquireTokenBucket(1); + } + async acquireTokenBucket(amount) { + if (!this.enabled) { + return; + } + this.refillTokenBucket(); + if (amount > this.availableTokens) { + const delay = ((amount - this.availableTokens) / this.fillRate) * 1000; + await new Promise((resolve) => DefaultRateLimiter.setTimeoutFn(resolve, delay)); + } + this.availableTokens = this.availableTokens - amount; + } + refillTokenBucket() { + const timestamp = this.getCurrentTimeInSeconds(); + if (!this.lastTimestamp) { + this.lastTimestamp = timestamp; + return; + } + const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate; + this.availableTokens = Math.min(this.maxCapacity, this.availableTokens + fillAmount); + this.lastTimestamp = timestamp; + } + updateClientSendingRate(response) { + let calculatedRate; + this.updateMeasuredRate(); + const retryErrorInfo = response; + const isThrottling = retryErrorInfo?.errorType === "THROTTLING" || isThrottlingError(retryErrorInfo?.error ?? response); + if (isThrottling) { + const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate); + this.lastMaxRate = rateToUse; + this.calculateTimeWindow(); + this.lastThrottleTime = this.getCurrentTimeInSeconds(); + calculatedRate = this.cubicThrottle(rateToUse); + this.enableTokenBucket(); + } + else { + this.calculateTimeWindow(); + calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds()); + } + const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate); + this.updateTokenBucketRate(newRate); + } + calculateTimeWindow() { + this.timeWindow = this.getPrecise(Math.pow((this.lastMaxRate * (1 - this.beta)) / this.scaleConstant, 1 / 3)); + } + cubicThrottle(rateToUse) { + return this.getPrecise(rateToUse * this.beta); + } + cubicSuccess(timestamp) { + return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate); + } + enableTokenBucket() { + this.enabled = true; + } + updateTokenBucketRate(newRate) { + this.refillTokenBucket(); + this.fillRate = Math.max(newRate, this.minFillRate); + this.maxCapacity = Math.max(newRate, this.minCapacity); + this.availableTokens = Math.min(this.availableTokens, this.maxCapacity); + } + updateMeasuredRate() { + const t = this.getCurrentTimeInSeconds(); + const timeBucket = Math.floor(t * 2) / 2; + this.requestCount++; + if (timeBucket > this.lastTxRateBucket) { + const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket); + this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth)); + this.requestCount = 0; + this.lastTxRateBucket = timeBucket; + } + } + getPrecise(num) { + return parseFloat(num.toFixed(8)); + } +} diff --git a/bff/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js b/bff/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js new file mode 100644 index 0000000..fe5cb71 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js @@ -0,0 +1,67 @@ +import { DEFAULT_MAX_ATTEMPTS, RETRY_MODES } from "./config"; +import { DEFAULT_RETRY_DELAY_BASE, INITIAL_RETRY_TOKENS, NO_RETRY_INCREMENT, RETRY_COST, THROTTLING_RETRY_DELAY_BASE, TIMEOUT_RETRY_COST, } from "./constants"; +import { getDefaultRetryBackoffStrategy } from "./defaultRetryBackoffStrategy"; +import { createDefaultRetryToken } from "./defaultRetryToken"; +export class StandardRetryStrategy { + maxAttempts; + mode = RETRY_MODES.STANDARD; + capacity = INITIAL_RETRY_TOKENS; + retryBackoffStrategy = getDefaultRetryBackoffStrategy(); + maxAttemptsProvider; + constructor(maxAttempts) { + this.maxAttempts = maxAttempts; + this.maxAttemptsProvider = typeof maxAttempts === "function" ? maxAttempts : async () => maxAttempts; + } + async acquireInitialRetryToken(retryTokenScope) { + return createDefaultRetryToken({ + retryDelay: DEFAULT_RETRY_DELAY_BASE, + retryCount: 0, + }); + } + async refreshRetryTokenForRetry(token, errorInfo) { + const maxAttempts = await this.getMaxAttempts(); + if (this.shouldRetry(token, errorInfo, maxAttempts)) { + const errorType = errorInfo.errorType; + this.retryBackoffStrategy.setDelayBase(errorType === "THROTTLING" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE); + const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount()); + const retryDelay = errorInfo.retryAfterHint + ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType) + : delayFromErrorType; + const capacityCost = this.getCapacityCost(errorType); + this.capacity -= capacityCost; + return createDefaultRetryToken({ + retryDelay, + retryCount: token.getRetryCount() + 1, + retryCost: capacityCost, + }); + } + throw new Error("No retry token available"); + } + recordSuccess(token) { + this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT)); + } + getCapacity() { + return this.capacity; + } + async getMaxAttempts() { + try { + return await this.maxAttemptsProvider(); + } + catch (error) { + console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`); + return DEFAULT_MAX_ATTEMPTS; + } + } + shouldRetry(tokenToRenew, errorInfo, maxAttempts) { + const attempts = tokenToRenew.getRetryCount() + 1; + return (attempts < maxAttempts && + this.capacity >= this.getCapacityCost(errorInfo.errorType) && + this.isRetryableError(errorInfo.errorType)); + } + getCapacityCost(errorType) { + return errorType === "TRANSIENT" ? TIMEOUT_RETRY_COST : RETRY_COST; + } + isRetryableError(errorType) { + return errorType === "THROTTLING" || errorType === "TRANSIENT"; + } +} diff --git a/bff/node_modules/@smithy/util-retry/dist-es/config.js b/bff/node_modules/@smithy/util-retry/dist-es/config.js new file mode 100644 index 0000000..438d42d --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/config.js @@ -0,0 +1,7 @@ +export var RETRY_MODES; +(function (RETRY_MODES) { + RETRY_MODES["STANDARD"] = "standard"; + RETRY_MODES["ADAPTIVE"] = "adaptive"; +})(RETRY_MODES || (RETRY_MODES = {})); +export const DEFAULT_MAX_ATTEMPTS = 3; +export const DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD; diff --git a/bff/node_modules/@smithy/util-retry/dist-es/constants.js b/bff/node_modules/@smithy/util-retry/dist-es/constants.js new file mode 100644 index 0000000..0876f8e --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/constants.js @@ -0,0 +1,9 @@ +export const DEFAULT_RETRY_DELAY_BASE = 100; +export const MAXIMUM_RETRY_DELAY = 20 * 1000; +export const THROTTLING_RETRY_DELAY_BASE = 500; +export const INITIAL_RETRY_TOKENS = 500; +export const RETRY_COST = 5; +export const TIMEOUT_RETRY_COST = 10; +export const NO_RETRY_INCREMENT = 1; +export const INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; +export const REQUEST_HEADER = "amz-sdk-request"; diff --git a/bff/node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js b/bff/node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js new file mode 100644 index 0000000..ce04bc5 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js @@ -0,0 +1,14 @@ +import { DEFAULT_RETRY_DELAY_BASE, MAXIMUM_RETRY_DELAY } from "./constants"; +export const getDefaultRetryBackoffStrategy = () => { + let delayBase = DEFAULT_RETRY_DELAY_BASE; + const computeNextBackoffDelay = (attempts) => { + return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)); + }; + const setDelayBase = (delay) => { + delayBase = delay; + }; + return { + computeNextBackoffDelay, + setDelayBase, + }; +}; diff --git a/bff/node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js b/bff/node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js new file mode 100644 index 0000000..203bb66 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js @@ -0,0 +1,11 @@ +import { MAXIMUM_RETRY_DELAY } from "./constants"; +export const createDefaultRetryToken = ({ retryDelay, retryCount, retryCost, }) => { + const getRetryCount = () => retryCount; + const getRetryDelay = () => Math.min(MAXIMUM_RETRY_DELAY, retryDelay); + const getRetryCost = () => retryCost; + return { + getRetryCount, + getRetryDelay, + getRetryCost, + }; +}; diff --git a/bff/node_modules/@smithy/util-retry/dist-es/index.js b/bff/node_modules/@smithy/util-retry/dist-es/index.js new file mode 100644 index 0000000..8637ced --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/index.js @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./ConfiguredRetryStrategy"; +export * from "./DefaultRateLimiter"; +export * from "./StandardRetryStrategy"; +export * from "./config"; +export * from "./constants"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/util-retry/dist-es/types.js b/bff/node_modules/@smithy/util-retry/dist-es/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-es/types.js @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/AdaptiveRetryStrategy.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/AdaptiveRetryStrategy.d.ts new file mode 100644 index 0000000..b86a6c1 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/AdaptiveRetryStrategy.d.ts @@ -0,0 +1,33 @@ +import type { Provider, RetryErrorInfo, RetryStrategyV2, RetryToken, StandardRetryToken } from "@smithy/types"; +import type { RateLimiter } from "./types"; +/** + * @public + * + * Strategy options to be passed to AdaptiveRetryStrategy + */ +export interface AdaptiveRetryStrategyOptions { + rateLimiter?: RateLimiter; +} +/** + * @public + * + * The AdaptiveRetryStrategy is a retry strategy for executing against a very + * resource constrained set of resources. Care should be taken when using this + * retry strategy. By default, it uses a dynamic backoff delay based on load + * currently perceived against the downstream resource and performs circuit + * breaking to disable retries in the event of high downstream failures using + * the DefaultRateLimiter. + * + * @see {@link StandardRetryStrategy} + * @see {@link DefaultRateLimiter } + */ +export declare class AdaptiveRetryStrategy implements RetryStrategyV2 { + private readonly maxAttemptsProvider; + private rateLimiter; + private standardRetryStrategy; + readonly mode: string; + constructor(maxAttemptsProvider: Provider, options?: AdaptiveRetryStrategyOptions); + acquireInitialRetryToken(retryTokenScope: string): Promise; + refreshRetryTokenForRetry(tokenToRenew: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; + recordSuccess(token: StandardRetryToken): void; +} diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ConfiguredRetryStrategy.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ConfiguredRetryStrategy.d.ts new file mode 100644 index 0000000..3250c6d --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ConfiguredRetryStrategy.d.ts @@ -0,0 +1,32 @@ +import type { Provider, RetryBackoffStrategy, RetryErrorInfo, RetryStrategyV2, StandardRetryToken } from "@smithy/types"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +/** + * @public + * + * This extension of the StandardRetryStrategy allows customizing the + * backoff computation. + */ +export declare class ConfiguredRetryStrategy extends StandardRetryStrategy implements RetryStrategyV2 { + private readonly computeNextBackoffDelay; + /** + * @param maxAttempts - the maximum number of retry attempts allowed. + * e.g., if set to 3, then 4 total requests are possible. + * @param computeNextBackoffDelay - a millisecond delay for each retry or a function that takes the retry attempt + * and returns the delay. + * + * @example exponential backoff. + * ```js + * new Client({ + * retryStrategy: new ConfiguredRetryStrategy(3, (attempt) => attempt ** 2) + * }); + * ``` + * @example constant delay. + * ```js + * new Client({ + * retryStrategy: new ConfiguredRetryStrategy(3, 2000) + * }); + * ``` + */ + constructor(maxAttempts: number | Provider, computeNextBackoffDelay?: number | RetryBackoffStrategy["computeNextBackoffDelay"]); + refreshRetryTokenForRetry(tokenToRenew: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; +} diff --git a/bff/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts new file mode 100644 index 0000000..3562ada --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts @@ -0,0 +1,119 @@ +import type { RateLimiter } from "./types"; +/** + * @public + */ +export interface DefaultRateLimiterOptions { + /** + * Coefficient for controlling how aggressively the rate decreases on throttle. + * @defaultValue 0.7 + */ + beta?: number; + /** + * Minimum token bucket capacity in adaptive-tokens. + * @defaultValue 1 + */ + minCapacity?: number; + /** + * Minimum fill rate in adaptive-tokens per second. + * @defaultValue 0.5 + */ + minFillRate?: number; + /** + * Scale constant used in the cubic rate calculation. + * @defaultValue 0.4 + */ + scaleConstant?: number; + /** + * Smoothing factor for the exponential moving average of the measured send rate. + * @defaultValue 0.8 + */ + smooth?: number; +} +/** + * @public + */ +export declare class DefaultRateLimiter implements RateLimiter { + /** + * Only used in testing. + */ + private static setTimeoutFn; + private beta; + private minCapacity; + private minFillRate; + private scaleConstant; + private smooth; + /** + * Whether adaptive retry rate limiting is active. + * Remains `false` until a throttling error is detected. + */ + private enabled; + /** + * Current number of available adaptive-tokens. When exhausted, requests wait based on fill rate. + */ + private availableTokens; + /** + * The most recent maximum fill rate in adaptive-tokens per second, recorded at the last throttle event. + */ + private lastMaxRate; + /** + * Smoothed measured send rate in requests per second. + */ + private measuredTxRate; + /** + * Number of requests observed in the current measurement time bucket. + */ + private requestCount; + /** + * Current token bucket fill rate in adaptive-tokens per second. Defaults to {@link minFillRate}. + */ + private fillRate; + /** + * Timestamp in seconds of the most recent throttle event. + */ + private lastThrottleTime; + /** + * Timestamp in seconds of the last token bucket refill. + */ + private lastTimestamp; + /** + * The time bucket (in seconds) used for measuring the send rate. + */ + private lastTxRateBucket; + /** + * Maximum token bucket capacity in adaptive-tokens. Defaults to {@link minCapacity}. + * Updated in {@link updateTokenBucketRate} to match the new fill rate, floored by {@link minCapacity}. + */ + private maxCapacity; + /** + * Calculated time window in seconds used in the cubic rate recovery function. + */ + private timeWindow; + constructor(options?: DefaultRateLimiterOptions); + private getCurrentTimeInSeconds; + getSendToken(): Promise; + private acquireTokenBucket; + private refillTokenBucket; + updateClientSendingRate(response: any): void; + private calculateTimeWindow; + /** + * Returns a new fill rate in adaptive-tokens per second by reducing + * the given rate by a factor of {@link beta}. + */ + private cubicThrottle; + /** + * Returns a new fill rate in adaptive-tokens per second using a CUBIC + * congestion control curve. The rate recovers toward {@link lastMaxRate}, + * then continues growing beyond it. The caller caps the result at + * `2 * measuredTxRate`. + */ + private cubicSuccess; + private enableTokenBucket; + /** + * Set a new fill rate for adaptive-tokens. + * The max capacity is updated to allow for one second of time to approximately + * refill the adaptive-token capacity. + */ + private updateTokenBucketRate; + private updateMeasuredRate; + private getPrecise; +} diff --git a/bff/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts new file mode 100644 index 0000000..2052e7e --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts @@ -0,0 +1,26 @@ +import type { Provider, RetryErrorInfo, RetryStrategyV2, StandardRetryToken } from "@smithy/types"; +/** + * @public + */ +export declare class StandardRetryStrategy implements RetryStrategyV2 { + private readonly maxAttempts; + readonly mode: string; + private capacity; + private readonly retryBackoffStrategy; + private readonly maxAttemptsProvider; + constructor(maxAttempts: number); + constructor(maxAttemptsProvider: Provider); + acquireInitialRetryToken(retryTokenScope: string): Promise; + refreshRetryTokenForRetry(token: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; + recordSuccess(token: StandardRetryToken): void; + /** + * @returns the current available retry capacity. + * + * This number decreases when retries are executed and refills when requests or retries succeed. + */ + getCapacity(): number; + private getMaxAttempts; + private shouldRetry; + private getCapacityCost; + private isRetryableError; +} diff --git a/bff/node_modules/@smithy/util-retry/dist-types/config.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/config.d.ts new file mode 100644 index 0000000..e4e74b3 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/config.d.ts @@ -0,0 +1,20 @@ +/** + * @public + */ +export declare enum RETRY_MODES { + STANDARD = "standard", + ADAPTIVE = "adaptive" +} +/** + * @public + * + * The default value for how many HTTP requests an SDK should make for a + * single SDK operation invocation before giving up + */ +export declare const DEFAULT_MAX_ATTEMPTS = 3; +/** + * @public + * + * The default retry algorithm to use. + */ +export declare const DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/constants.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/constants.d.ts new file mode 100644 index 0000000..bc7fec8 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/constants.d.ts @@ -0,0 +1,59 @@ +/** + * @public + * + * The base number of milliseconds to use in calculating a suitable cool-down + * time when a retryable error is encountered. + */ +export declare const DEFAULT_RETRY_DELAY_BASE = 100; +/** + * @public + * + * The maximum amount of time (in milliseconds) that will be used as a delay + * between retry attempts. + */ +export declare const MAXIMUM_RETRY_DELAY: number; +/** + * @public + * + * The retry delay base (in milliseconds) to use when a throttling error is + * encountered. + */ +export declare const THROTTLING_RETRY_DELAY_BASE = 500; +/** + * @public + * + * Initial number of retry tokens in Retry Quota + */ +export declare const INITIAL_RETRY_TOKENS = 500; +/** + * @public + * + * The total amount of retry tokens to be decremented from retry token balance. + */ +export declare const RETRY_COST = 5; +/** + * @public + * + * The total amount of retry tokens to be decremented from retry token balance + * when a throttling error is encountered. + */ +export declare const TIMEOUT_RETRY_COST = 10; +/** + * @public + * + * The total amount of retry token to be incremented from retry token balance + * if an SDK operation invocation succeeds without requiring a retry request. + */ +export declare const NO_RETRY_INCREMENT = 1; +/** + * @public + * + * Header name for SDK invocation ID + */ +export declare const INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; +/** + * @public + * + * Header name for request retry information. + */ +export declare const REQUEST_HEADER = "amz-sdk-request"; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/defaultRetryBackoffStrategy.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/defaultRetryBackoffStrategy.d.ts new file mode 100644 index 0000000..1fa33d4 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/defaultRetryBackoffStrategy.d.ts @@ -0,0 +1,5 @@ +import type { StandardRetryBackoffStrategy } from "@smithy/types"; +/** + * @internal + */ +export declare const getDefaultRetryBackoffStrategy: () => StandardRetryBackoffStrategy; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/defaultRetryToken.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/defaultRetryToken.d.ts new file mode 100644 index 0000000..51311b1 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/defaultRetryToken.d.ts @@ -0,0 +1,9 @@ +import type { StandardRetryToken } from "@smithy/types"; +/** + * @internal + */ +export declare const createDefaultRetryToken: ({ retryDelay, retryCount, retryCost, }: { + retryDelay: number; + retryCount: number; + retryCost?: number; +}) => StandardRetryToken; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/index.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/index.d.ts new file mode 100644 index 0000000..8637ced --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/index.d.ts @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./ConfiguredRetryStrategy"; +export * from "./DefaultRateLimiter"; +export * from "./StandardRetryStrategy"; +export * from "./config"; +export * from "./constants"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts new file mode 100644 index 0000000..f6b0ef4 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/AdaptiveRetryStrategy.d.ts @@ -0,0 +1,33 @@ +import { Provider, RetryErrorInfo, RetryStrategyV2, RetryToken, StandardRetryToken } from "@smithy/types"; +import { RateLimiter } from "./types"; +/** + * @public + * + * Strategy options to be passed to AdaptiveRetryStrategy + */ +export interface AdaptiveRetryStrategyOptions { + rateLimiter?: RateLimiter; +} +/** + * @public + * + * The AdaptiveRetryStrategy is a retry strategy for executing against a very + * resource constrained set of resources. Care should be taken when using this + * retry strategy. By default, it uses a dynamic backoff delay based on load + * currently perceived against the downstream resource and performs circuit + * breaking to disable retries in the event of high downstream failures using + * the DefaultRateLimiter. + * + * @see {@link StandardRetryStrategy} + * @see {@link DefaultRateLimiter } + */ +export declare class AdaptiveRetryStrategy implements RetryStrategyV2 { + private readonly maxAttemptsProvider; + private rateLimiter; + private standardRetryStrategy; + readonly mode: string; + constructor(maxAttemptsProvider: Provider, options?: AdaptiveRetryStrategyOptions); + acquireInitialRetryToken(retryTokenScope: string): Promise; + refreshRetryTokenForRetry(tokenToRenew: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; + recordSuccess(token: StandardRetryToken): void; +} diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/ConfiguredRetryStrategy.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/ConfiguredRetryStrategy.d.ts new file mode 100644 index 0000000..7df2983 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/ConfiguredRetryStrategy.d.ts @@ -0,0 +1,32 @@ +import { Provider, RetryBackoffStrategy, RetryErrorInfo, RetryStrategyV2, StandardRetryToken } from "@smithy/types"; +import { StandardRetryStrategy } from "./StandardRetryStrategy"; +/** + * @public + * + * This extension of the StandardRetryStrategy allows customizing the + * backoff computation. + */ +export declare class ConfiguredRetryStrategy extends StandardRetryStrategy implements RetryStrategyV2 { + private readonly computeNextBackoffDelay; + /** + * @param maxAttempts - the maximum number of retry attempts allowed. + * e.g., if set to 3, then 4 total requests are possible. + * @param computeNextBackoffDelay - a millisecond delay for each retry or a function that takes the retry attempt + * and returns the delay. + * + * @example exponential backoff. + * ```js + * new Client({ + * retryStrategy: new ConfiguredRetryStrategy(3, (attempt) => attempt ** 2) + * }); + * ``` + * @example constant delay. + * ```js + * new Client({ + * retryStrategy: new ConfiguredRetryStrategy(3, 2000) + * }); + * ``` + */ + constructor(maxAttempts: number | Provider, computeNextBackoffDelay?: number | RetryBackoffStrategy["computeNextBackoffDelay"]); + refreshRetryTokenForRetry(tokenToRenew: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; +} diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts new file mode 100644 index 0000000..d588ca3 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts @@ -0,0 +1,119 @@ +import { RateLimiter } from "./types"; +/** + * @public + */ +export interface DefaultRateLimiterOptions { + /** + * Coefficient for controlling how aggressively the rate decreases on throttle. + * @defaultValue 0.7 + */ + beta?: number; + /** + * Minimum token bucket capacity in adaptive-tokens. + * @defaultValue 1 + */ + minCapacity?: number; + /** + * Minimum fill rate in adaptive-tokens per second. + * @defaultValue 0.5 + */ + minFillRate?: number; + /** + * Scale constant used in the cubic rate calculation. + * @defaultValue 0.4 + */ + scaleConstant?: number; + /** + * Smoothing factor for the exponential moving average of the measured send rate. + * @defaultValue 0.8 + */ + smooth?: number; +} +/** + * @public + */ +export declare class DefaultRateLimiter implements RateLimiter { + /** + * Only used in testing. + */ + private static setTimeoutFn; + private beta; + private minCapacity; + private minFillRate; + private scaleConstant; + private smooth; + /** + * Whether adaptive retry rate limiting is active. + * Remains `false` until a throttling error is detected. + */ + private enabled; + /** + * Current number of available adaptive-tokens. When exhausted, requests wait based on fill rate. + */ + private availableTokens; + /** + * The most recent maximum fill rate in adaptive-tokens per second, recorded at the last throttle event. + */ + private lastMaxRate; + /** + * Smoothed measured send rate in requests per second. + */ + private measuredTxRate; + /** + * Number of requests observed in the current measurement time bucket. + */ + private requestCount; + /** + * Current token bucket fill rate in adaptive-tokens per second. Defaults to {@link minFillRate}. + */ + private fillRate; + /** + * Timestamp in seconds of the most recent throttle event. + */ + private lastThrottleTime; + /** + * Timestamp in seconds of the last token bucket refill. + */ + private lastTimestamp; + /** + * The time bucket (in seconds) used for measuring the send rate. + */ + private lastTxRateBucket; + /** + * Maximum token bucket capacity in adaptive-tokens. Defaults to {@link minCapacity}. + * Updated in {@link updateTokenBucketRate} to match the new fill rate, floored by {@link minCapacity}. + */ + private maxCapacity; + /** + * Calculated time window in seconds used in the cubic rate recovery function. + */ + private timeWindow; + constructor(options?: DefaultRateLimiterOptions); + private getCurrentTimeInSeconds; + getSendToken(): Promise; + private acquireTokenBucket; + private refillTokenBucket; + updateClientSendingRate(response: any): void; + private calculateTimeWindow; + /** + * Returns a new fill rate in adaptive-tokens per second by reducing + * the given rate by a factor of {@link beta}. + */ + private cubicThrottle; + /** + * Returns a new fill rate in adaptive-tokens per second using a CUBIC + * congestion control curve. The rate recovers toward {@link lastMaxRate}, + * then continues growing beyond it. The caller caps the result at + * `2 * measuredTxRate`. + */ + private cubicSuccess; + private enableTokenBucket; + /** + * Set a new fill rate for adaptive-tokens. + * The max capacity is updated to allow for one second of time to approximately + * refill the adaptive-token capacity. + */ + private updateTokenBucketRate; + private updateMeasuredRate; + private getPrecise; +} diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts new file mode 100644 index 0000000..c22f8b8 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/StandardRetryStrategy.d.ts @@ -0,0 +1,26 @@ +import { Provider, RetryErrorInfo, RetryStrategyV2, StandardRetryToken } from "@smithy/types"; +/** + * @public + */ +export declare class StandardRetryStrategy implements RetryStrategyV2 { + private readonly maxAttempts; + readonly mode: string; + private capacity; + private readonly retryBackoffStrategy; + private readonly maxAttemptsProvider; + constructor(maxAttempts: number); + constructor(maxAttemptsProvider: Provider); + acquireInitialRetryToken(retryTokenScope: string): Promise; + refreshRetryTokenForRetry(token: StandardRetryToken, errorInfo: RetryErrorInfo): Promise; + recordSuccess(token: StandardRetryToken): void; + /** + * @returns the current available retry capacity. + * + * This number decreases when retries are executed and refills when requests or retries succeed. + */ + getCapacity(): number; + private getMaxAttempts; + private shouldRetry; + private getCapacityCost; + private isRetryableError; +} diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/config.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/config.d.ts new file mode 100644 index 0000000..6727a38 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/config.d.ts @@ -0,0 +1,20 @@ +/** + * @public + */ +export declare enum RETRY_MODES { + STANDARD = "standard", + ADAPTIVE = "adaptive" +} +/** + * @public + * + * The default value for how many HTTP requests an SDK should make for a + * single SDK operation invocation before giving up + */ +export declare const DEFAULT_MAX_ATTEMPTS = 3; +/** + * @public + * + * The default retry algorithm to use. + */ +export declare const DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/constants.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/constants.d.ts new file mode 100644 index 0000000..5c1a5ce --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/constants.d.ts @@ -0,0 +1,59 @@ +/** + * @public + * + * The base number of milliseconds to use in calculating a suitable cool-down + * time when a retryable error is encountered. + */ +export declare const DEFAULT_RETRY_DELAY_BASE = 100; +/** + * @public + * + * The maximum amount of time (in milliseconds) that will be used as a delay + * between retry attempts. + */ +export declare const MAXIMUM_RETRY_DELAY: number; +/** + * @public + * + * The retry delay base (in milliseconds) to use when a throttling error is + * encountered. + */ +export declare const THROTTLING_RETRY_DELAY_BASE = 500; +/** + * @public + * + * Initial number of retry tokens in Retry Quota + */ +export declare const INITIAL_RETRY_TOKENS = 500; +/** + * @public + * + * The total amount of retry tokens to be decremented from retry token balance. + */ +export declare const RETRY_COST = 5; +/** + * @public + * + * The total amount of retry tokens to be decremented from retry token balance + * when a throttling error is encountered. + */ +export declare const TIMEOUT_RETRY_COST = 10; +/** + * @public + * + * The total amount of retry token to be incremented from retry token balance + * if an SDK operation invocation succeeds without requiring a retry request. + */ +export declare const NO_RETRY_INCREMENT = 1; +/** + * @public + * + * Header name for SDK invocation ID + */ +export declare const INVOCATION_ID_HEADER = "amz-sdk-invocation-id"; +/** + * @public + * + * Header name for request retry information. + */ +export declare const REQUEST_HEADER = "amz-sdk-request"; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryBackoffStrategy.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryBackoffStrategy.d.ts new file mode 100644 index 0000000..1d632ca --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryBackoffStrategy.d.ts @@ -0,0 +1,5 @@ +import { StandardRetryBackoffStrategy } from "@smithy/types"; +/** + * @internal + */ +export declare const getDefaultRetryBackoffStrategy: () => StandardRetryBackoffStrategy; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryToken.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryToken.d.ts new file mode 100644 index 0000000..dbf8504 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/defaultRetryToken.d.ts @@ -0,0 +1,9 @@ +import { StandardRetryToken } from "@smithy/types"; +/** + * @internal + */ +export declare const createDefaultRetryToken: ({ retryDelay, retryCount, retryCost, }: { + retryDelay: number; + retryCount: number; + retryCost?: number; +}) => StandardRetryToken; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..de9af3d --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/index.d.ts @@ -0,0 +1,7 @@ +export * from "./AdaptiveRetryStrategy"; +export * from "./ConfiguredRetryStrategy"; +export * from "./DefaultRateLimiter"; +export * from "./StandardRetryStrategy"; +export * from "./config"; +export * from "./constants"; +export * from "./types"; diff --git a/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/types.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/types.d.ts new file mode 100644 index 0000000..5a20c01 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/ts3.4/types.d.ts @@ -0,0 +1,19 @@ +/** + * @internal + */ +export interface RateLimiter { + /** + * If there is sufficient capacity (tokens) available, it immediately returns. + * If there is not sufficient capacity, it will either sleep a certain amount + * of time until the rate limiter can retrieve a token from its token bucket + * or raise an exception indicating there is insufficient capacity. + */ + getSendToken: () => Promise; + /** + * Updates the client sending rate based on response. + * If the response was successful, the capacity and fill rate are increased. + * If the response was a throttling response, the capacity and fill rate are + * decreased. Transient errors do not affect the rate limiter. + */ + updateClientSendingRate: (response: any) => void; +} diff --git a/bff/node_modules/@smithy/util-retry/dist-types/types.d.ts b/bff/node_modules/@smithy/util-retry/dist-types/types.d.ts new file mode 100644 index 0000000..b3f2bd1 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/dist-types/types.d.ts @@ -0,0 +1,19 @@ +/** + * @internal + */ +export interface RateLimiter { + /** + * If there is sufficient capacity (tokens) available, it immediately returns. + * If there is not sufficient capacity, it will either sleep a certain amount + * of time until the rate limiter can retrieve a token from its token bucket + * or raise an exception indicating there is insufficient capacity. + */ + getSendToken: () => Promise; + /** + * Updates the client sending rate based on response. + * If the response was successful, the capacity and fill rate are increased. + * If the response was a throttling response, the capacity and fill rate are + * decreased. Transient errors do not affect the rate limiter. + */ + updateClientSendingRate: (response: any) => void; +} diff --git a/bff/node_modules/@smithy/util-retry/package.json b/bff/node_modules/@smithy/util-retry/package.json new file mode 100644 index 0000000..86dcef0 --- /dev/null +++ b/bff/node_modules/@smithy/util-retry/package.json @@ -0,0 +1,71 @@ +{ + "name": "@smithy/util-retry", + "version": "4.2.13", + "description": "Shared retry utilities to be used in middleware packages.", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-retry", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts" + }, + "keywords": [ + "aws", + "retry" + ], + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/service-error-classification": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "types/*": [ + "types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/master/packages/util-retry", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-retry" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-stream/LICENSE b/bff/node_modules/@smithy/util-stream/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-stream/README.md b/bff/node_modules/@smithy/util-stream/README.md new file mode 100644 index 0000000..6fcd9f6 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/README.md @@ -0,0 +1,6 @@ +# @smithy/util-stream + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-stream/latest.svg)](https://www.npmjs.com/package/@smithy/util-stream) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-stream.svg)](https://www.npmjs.com/package/@smithy/util-stream) + +Package with utilities to operate on streams. diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/ByteArrayCollector.js b/bff/node_modules/@smithy/util-stream/dist-cjs/ByteArrayCollector.js new file mode 100644 index 0000000..f056f82 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/ByteArrayCollector.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ByteArrayCollector = void 0; +class ByteArrayCollector { + allocByteArray; + byteLength = 0; + byteArrays = []; + constructor(allocByteArray) { + this.allocByteArray = allocByteArray; + } + push(byteArray) { + this.byteArrays.push(byteArray); + this.byteLength += byteArray.byteLength; + } + flush() { + if (this.byteArrays.length === 1) { + const bytes = this.byteArrays[0]; + this.reset(); + return bytes; + } + const aggregation = this.allocByteArray(this.byteLength); + let cursor = 0; + for (let i = 0; i < this.byteArrays.length; ++i) { + const bytes = this.byteArrays[i]; + aggregation.set(bytes, cursor); + cursor += bytes.byteLength; + } + this.reset(); + return aggregation; + } + reset() { + this.byteArrays = []; + this.byteLength = 0; + } +} +exports.ByteArrayCollector = ByteArrayCollector; diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js new file mode 100644 index 0000000..b73363a --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js @@ -0,0 +1,7 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ChecksumStream = void 0; +const ReadableStreamRef = typeof ReadableStream === "function" ? ReadableStream : function () { }; +class ChecksumStream extends ReadableStreamRef { +} +exports.ChecksumStream = ChecksumStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js b/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js new file mode 100644 index 0000000..5038f8c --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js @@ -0,0 +1,64 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ChecksumStream = void 0; +const util_base64_1 = require("@smithy/util-base64"); +const stream_1 = require("stream"); +class ChecksumStream extends stream_1.Duplex { + expectedChecksum; + checksumSourceLocation; + checksum; + source; + base64Encoder; + pendingCallback = null; + constructor({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }) { + super(); + if (typeof source.pipe === "function") { + this.source = source; + } + else { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + this.base64Encoder = base64Encoder ?? util_base64_1.toBase64; + this.expectedChecksum = expectedChecksum; + this.checksum = checksum; + this.checksumSourceLocation = checksumSourceLocation; + this.source.pipe(this); + } + _read(size) { + if (this.pendingCallback) { + const callback = this.pendingCallback; + this.pendingCallback = null; + callback(); + } + } + _write(chunk, encoding, callback) { + try { + this.checksum.update(chunk); + const canPushMore = this.push(chunk); + if (!canPushMore) { + this.pendingCallback = callback; + return; + } + } + catch (e) { + return callback(e); + } + return callback(); + } + async _final(callback) { + try { + const digest = await this.checksum.digest(); + const received = this.base64Encoder(digest); + if (this.expectedChecksum !== received) { + return callback(new Error(`Checksum mismatch: expected "${this.expectedChecksum}" but received "${received}"` + + ` in response header "${this.checksumSourceLocation}".`)); + } + } + catch (e) { + return callback(e); + } + this.push(null); + return callback(); + } +} +exports.ChecksumStream = ChecksumStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js new file mode 100644 index 0000000..2bbe76e --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createChecksumStream = void 0; +const util_base64_1 = require("@smithy/util-base64"); +const stream_type_check_1 = require("../stream-type-check"); +const ChecksumStream_browser_1 = require("./ChecksumStream.browser"); +const createChecksumStream = ({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }) => { + if (!(0, stream_type_check_1.isReadableStream)(source)) { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + const encoder = base64Encoder ?? util_base64_1.toBase64; + if (typeof TransformStream !== "function") { + throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream."); + } + const transform = new TransformStream({ + start() { }, + async transform(chunk, controller) { + checksum.update(chunk); + controller.enqueue(chunk); + }, + async flush(controller) { + const digest = await checksum.digest(); + const received = encoder(digest); + if (expectedChecksum !== received) { + const error = new Error(`Checksum mismatch: expected "${expectedChecksum}" but received "${received}"` + + ` in response header "${checksumSourceLocation}".`); + controller.error(error); + } + else { + controller.terminate(); + } + }, + }); + source.pipeThrough(transform); + const readable = transform.readable; + Object.setPrototypeOf(readable, ChecksumStream_browser_1.ChecksumStream.prototype); + return readable; +}; +exports.createChecksumStream = createChecksumStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js b/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js new file mode 100644 index 0000000..9638f02 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createChecksumStream = createChecksumStream; +const stream_type_check_1 = require("../stream-type-check"); +const ChecksumStream_1 = require("./ChecksumStream"); +const createChecksumStream_browser_1 = require("./createChecksumStream.browser"); +function createChecksumStream(init) { + if (typeof ReadableStream === "function" && (0, stream_type_check_1.isReadableStream)(init.source)) { + return (0, createChecksumStream_browser_1.createChecksumStream)(init); + } + return new ChecksumStream_1.ChecksumStream(init); +} diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadable.js b/bff/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadable.js new file mode 100644 index 0000000..b3b47a2 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadable.js @@ -0,0 +1,60 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createBufferedReadable = createBufferedReadable; +const node_stream_1 = require("node:stream"); +const ByteArrayCollector_1 = require("./ByteArrayCollector"); +const createBufferedReadableStream_1 = require("./createBufferedReadableStream"); +const stream_type_check_1 = require("./stream-type-check"); +function createBufferedReadable(upstream, size, logger) { + if ((0, stream_type_check_1.isReadableStream)(upstream)) { + return (0, createBufferedReadableStream_1.createBufferedReadableStream)(upstream, size, logger); + } + const downstream = new node_stream_1.Readable({ read() { } }); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = [ + "", + new ByteArrayCollector_1.ByteArrayCollector((size) => new Uint8Array(size)), + new ByteArrayCollector_1.ByteArrayCollector((size) => Buffer.from(new Uint8Array(size))), + ]; + let mode = -1; + upstream.on("data", (chunk) => { + const chunkMode = (0, createBufferedReadableStream_1.modeOf)(chunk, true); + if (mode !== chunkMode) { + if (mode >= 0) { + downstream.push((0, createBufferedReadableStream_1.flush)(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + downstream.push(chunk); + return; + } + const chunkSize = (0, createBufferedReadableStream_1.sizeOf)(chunk); + bytesSeen += chunkSize; + const bufferSize = (0, createBufferedReadableStream_1.sizeOf)(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + downstream.push(chunk); + } + else { + const newSize = (0, createBufferedReadableStream_1.merge)(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + downstream.push((0, createBufferedReadableStream_1.flush)(buffers, mode)); + } + } + }); + upstream.on("end", () => { + if (mode !== -1) { + const remainder = (0, createBufferedReadableStream_1.flush)(buffers, mode); + if ((0, createBufferedReadableStream_1.sizeOf)(remainder) > 0) { + downstream.push(remainder); + } + } + downstream.push(null); + }); + return downstream; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadableStream.js b/bff/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadableStream.js new file mode 100644 index 0000000..1b7d8c3 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/createBufferedReadableStream.js @@ -0,0 +1,103 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createBufferedReadable = void 0; +exports.createBufferedReadableStream = createBufferedReadableStream; +exports.merge = merge; +exports.flush = flush; +exports.sizeOf = sizeOf; +exports.modeOf = modeOf; +const ByteArrayCollector_1 = require("./ByteArrayCollector"); +function createBufferedReadableStream(upstream, size, logger) { + const reader = upstream.getReader(); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = ["", new ByteArrayCollector_1.ByteArrayCollector((size) => new Uint8Array(size))]; + let mode = -1; + const pull = async (controller) => { + const { value, done } = await reader.read(); + const chunk = value; + if (done) { + if (mode !== -1) { + const remainder = flush(buffers, mode); + if (sizeOf(remainder) > 0) { + controller.enqueue(remainder); + } + } + controller.close(); + } + else { + const chunkMode = modeOf(chunk, false); + if (mode !== chunkMode) { + if (mode >= 0) { + controller.enqueue(flush(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + controller.enqueue(chunk); + return; + } + const chunkSize = sizeOf(chunk); + bytesSeen += chunkSize; + const bufferSize = sizeOf(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + controller.enqueue(chunk); + } + else { + const newSize = merge(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + controller.enqueue(flush(buffers, mode)); + } + else { + await pull(controller); + } + } + } + }; + return new ReadableStream({ + pull, + }); +} +exports.createBufferedReadable = createBufferedReadableStream; +function merge(buffers, mode, chunk) { + switch (mode) { + case 0: + buffers[0] += chunk; + return sizeOf(buffers[0]); + case 1: + case 2: + buffers[mode].push(chunk); + return sizeOf(buffers[mode]); + } +} +function flush(buffers, mode) { + switch (mode) { + case 0: + const s = buffers[0]; + buffers[0] = ""; + return s; + case 1: + case 2: + return buffers[mode].flush(); + } + throw new Error(`@smithy/util-stream - invalid index ${mode} given to flush()`); +} +function sizeOf(chunk) { + return chunk?.byteLength ?? chunk?.length ?? 0; +} +function modeOf(chunk, allowBuffer = true) { + if (allowBuffer && typeof Buffer !== "undefined" && chunk instanceof Buffer) { + return 2; + } + if (chunk instanceof Uint8Array) { + return 1; + } + if (typeof chunk === "string") { + return 0; + } + return -1; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.browser.js new file mode 100644 index 0000000..d8e540c --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.browser.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getAwsChunkedEncodingStream = void 0; +const getAwsChunkedEncodingStream = (readableStream, options) => { + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== undefined && + bodyLengthChecker !== undefined && + checksumAlgorithmFn !== undefined && + checksumLocationName !== undefined && + streamHasher !== undefined; + const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : undefined; + const reader = readableStream.getReader(); + return new ReadableStream({ + async pull(controller) { + const { value, done } = await reader.read(); + if (done) { + controller.enqueue(`0\r\n`); + if (checksumRequired) { + const checksum = base64Encoder(await digest); + controller.enqueue(`${checksumLocationName}:${checksum}\r\n`); + controller.enqueue(`\r\n`); + } + controller.close(); + } + else { + controller.enqueue(`${(bodyLengthChecker(value) || 0).toString(16)}\r\n${value}\r\n`); + } + }, + }); +}; +exports.getAwsChunkedEncodingStream = getAwsChunkedEncodingStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js b/bff/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js new file mode 100644 index 0000000..11b8ec8 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js @@ -0,0 +1,41 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getAwsChunkedEncodingStream = getAwsChunkedEncodingStream; +const node_stream_1 = require("node:stream"); +const getAwsChunkedEncodingStream_browser_1 = require("./getAwsChunkedEncodingStream.browser"); +const stream_type_check_1 = require("./stream-type-check"); +function getAwsChunkedEncodingStream(stream, options) { + const readable = stream; + const readableStream = stream; + if ((0, stream_type_check_1.isReadableStream)(readableStream)) { + return (0, getAwsChunkedEncodingStream_browser_1.getAwsChunkedEncodingStream)(readableStream, options); + } + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== undefined && + checksumAlgorithmFn !== undefined && + checksumLocationName !== undefined && + streamHasher !== undefined; + const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readable) : undefined; + const awsChunkedEncodingStream = new node_stream_1.Readable({ + read: () => { }, + }); + readable.on("data", (data) => { + const length = bodyLengthChecker(data) || 0; + if (length === 0) { + return; + } + awsChunkedEncodingStream.push(`${length.toString(16)}\r\n`); + awsChunkedEncodingStream.push(data); + awsChunkedEncodingStream.push("\r\n"); + }); + readable.on("end", async () => { + awsChunkedEncodingStream.push(`0\r\n`); + if (checksumRequired) { + const checksum = base64Encoder(await digest); + awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\r\n`); + awsChunkedEncodingStream.push(`\r\n`); + } + awsChunkedEncodingStream.push(null); + }); + return awsChunkedEncodingStream; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js new file mode 100644 index 0000000..e8413f2 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/headStream.browser.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.headStream = headStream; +async function headStream(stream, bytes) { + let byteLengthCounter = 0; + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + byteLengthCounter += value?.byteLength ?? 0; + } + if (byteLengthCounter >= bytes) { + break; + } + isDone = done; + } + reader.releaseLock(); + const collected = new Uint8Array(Math.min(bytes, byteLengthCounter)); + let offset = 0; + for (const chunk of chunks) { + if (chunk.byteLength > collected.byteLength - offset) { + collected.set(chunk.subarray(0, collected.byteLength - offset), offset); + break; + } + else { + collected.set(chunk, offset); + } + offset += chunk.length; + } + return collected; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/headStream.js b/bff/node_modules/@smithy/util-stream/dist-cjs/headStream.js new file mode 100644 index 0000000..4e76633 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/headStream.js @@ -0,0 +1,42 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.headStream = void 0; +const stream_1 = require("stream"); +const headStream_browser_1 = require("./headStream.browser"); +const stream_type_check_1 = require("./stream-type-check"); +const headStream = (stream, bytes) => { + if ((0, stream_type_check_1.isReadableStream)(stream)) { + return (0, headStream_browser_1.headStream)(stream, bytes); + } + return new Promise((resolve, reject) => { + const collector = new Collector(); + collector.limit = bytes; + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function () { + const bytes = new Uint8Array(Buffer.concat(this.buffers)); + resolve(bytes); + }); + }); +}; +exports.headStream = headStream; +class Collector extends stream_1.Writable { + buffers = []; + limit = Infinity; + bytesBuffered = 0; + _write(chunk, encoding, callback) { + this.buffers.push(chunk); + this.bytesBuffered += chunk.byteLength ?? 0; + if (this.bytesBuffered >= this.limit) { + const excess = this.bytesBuffered - this.limit; + const tailBuffer = this.buffers[this.buffers.length - 1]; + this.buffers[this.buffers.length - 1] = tailBuffer.subarray(0, tailBuffer.byteLength - excess); + this.emit("finish"); + } + callback(); + } +} diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/index.js b/bff/node_modules/@smithy/util-stream/dist-cjs/index.js new file mode 100644 index 0000000..6f6ff3d --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/index.js @@ -0,0 +1,108 @@ +'use strict'; + +var utilBase64 = require('@smithy/util-base64'); +var utilUtf8 = require('@smithy/util-utf8'); +var ChecksumStream = require('./checksum/ChecksumStream'); +var createChecksumStream = require('./checksum/createChecksumStream'); +var createBufferedReadable = require('./createBufferedReadable'); +var getAwsChunkedEncodingStream = require('./getAwsChunkedEncodingStream'); +var headStream = require('./headStream'); +var sdkStreamMixin = require('./sdk-stream-mixin'); +var splitStream = require('./splitStream'); +var streamTypeCheck = require('./stream-type-check'); + +class Uint8ArrayBlobAdapter extends Uint8Array { + static fromString(source, encoding = "utf-8") { + if (typeof source === "string") { + if (encoding === "base64") { + return Uint8ArrayBlobAdapter.mutate(utilBase64.fromBase64(source)); + } + return Uint8ArrayBlobAdapter.mutate(utilUtf8.fromUtf8(source)); + } + throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`); + } + static mutate(source) { + Object.setPrototypeOf(source, Uint8ArrayBlobAdapter.prototype); + return source; + } + transformToString(encoding = "utf-8") { + if (encoding === "base64") { + return utilBase64.toBase64(this); + } + return utilUtf8.toUtf8(this); + } +} + +exports.isBlob = streamTypeCheck.isBlob; +exports.isReadableStream = streamTypeCheck.isReadableStream; +exports.Uint8ArrayBlobAdapter = Uint8ArrayBlobAdapter; +Object.prototype.hasOwnProperty.call(ChecksumStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: ChecksumStream['__proto__'] + }); + +Object.keys(ChecksumStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = ChecksumStream[k]; +}); +Object.prototype.hasOwnProperty.call(createChecksumStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: createChecksumStream['__proto__'] + }); + +Object.keys(createChecksumStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = createChecksumStream[k]; +}); +Object.prototype.hasOwnProperty.call(createBufferedReadable, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: createBufferedReadable['__proto__'] + }); + +Object.keys(createBufferedReadable).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = createBufferedReadable[k]; +}); +Object.prototype.hasOwnProperty.call(getAwsChunkedEncodingStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: getAwsChunkedEncodingStream['__proto__'] + }); + +Object.keys(getAwsChunkedEncodingStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = getAwsChunkedEncodingStream[k]; +}); +Object.prototype.hasOwnProperty.call(headStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: headStream['__proto__'] + }); + +Object.keys(headStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = headStream[k]; +}); +Object.prototype.hasOwnProperty.call(sdkStreamMixin, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: sdkStreamMixin['__proto__'] + }); + +Object.keys(sdkStreamMixin).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = sdkStreamMixin[k]; +}); +Object.prototype.hasOwnProperty.call(splitStream, '__proto__') && + !Object.prototype.hasOwnProperty.call(exports, '__proto__') && + Object.defineProperty(exports, '__proto__', { + enumerable: true, + value: splitStream['__proto__'] + }); + +Object.keys(splitStream).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = splitStream[k]; +}); diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js b/bff/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js new file mode 100644 index 0000000..222c5f7 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.browser.js @@ -0,0 +1,68 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.sdkStreamMixin = void 0; +const fetch_http_handler_1 = require("@smithy/fetch-http-handler"); +const util_base64_1 = require("@smithy/util-base64"); +const util_hex_encoding_1 = require("@smithy/util-hex-encoding"); +const util_utf8_1 = require("@smithy/util-utf8"); +const stream_type_check_1 = require("./stream-type-check"); +const ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; +const sdkStreamMixin = (stream) => { + if (!isBlobInstance(stream) && !(0, stream_type_check_1.isReadableStream)(stream)) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`); + } + let transformed = false; + const transformToByteArray = async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await (0, fetch_http_handler_1.streamCollector)(stream); + }; + const blobToWebStream = (blob) => { + if (typeof blob.stream !== "function") { + throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\n" + + "If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body"); + } + return blob.stream(); + }; + return Object.assign(stream, { + transformToByteArray: transformToByteArray, + transformToString: async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === "base64") { + return (0, util_base64_1.toBase64)(buf); + } + else if (encoding === "hex") { + return (0, util_hex_encoding_1.toHex)(buf); + } + else if (encoding === undefined || encoding === "utf8" || encoding === "utf-8") { + return (0, util_utf8_1.toUtf8)(buf); + } + else if (typeof TextDecoder === "function") { + return new TextDecoder(encoding).decode(buf); + } + else { + throw new Error("TextDecoder is not available, please make sure polyfill is provided."); + } + }, + transformToWebStream: () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + if (isBlobInstance(stream)) { + return blobToWebStream(stream); + } + else if ((0, stream_type_check_1.isReadableStream)(stream)) { + return stream; + } + else { + throw new Error(`Cannot transform payload to web stream, got ${stream}`); + } + }, + }); +}; +exports.sdkStreamMixin = sdkStreamMixin; +const isBlobInstance = (stream) => typeof Blob === "function" && stream instanceof Blob; diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js b/bff/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js new file mode 100644 index 0000000..31d8da1 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js @@ -0,0 +1,54 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.sdkStreamMixin = void 0; +const node_http_handler_1 = require("@smithy/node-http-handler"); +const util_buffer_from_1 = require("@smithy/util-buffer-from"); +const stream_1 = require("stream"); +const sdk_stream_mixin_browser_1 = require("./sdk-stream-mixin.browser"); +const ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; +const sdkStreamMixin = (stream) => { + if (!(stream instanceof stream_1.Readable)) { + try { + return (0, sdk_stream_mixin_browser_1.sdkStreamMixin)(stream); + } + catch (e) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`); + } + } + let transformed = false; + const transformToByteArray = async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await (0, node_http_handler_1.streamCollector)(stream); + }; + return Object.assign(stream, { + transformToByteArray, + transformToString: async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === undefined || Buffer.isEncoding(encoding)) { + return (0, util_buffer_from_1.fromArrayBuffer)(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding); + } + else { + const decoder = new TextDecoder(encoding); + return decoder.decode(buf); + } + }, + transformToWebStream: () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + if (stream.readableFlowing !== null) { + throw new Error("The stream has been consumed by other callbacks."); + } + if (typeof stream_1.Readable.toWeb !== "function") { + throw new Error("Readable.toWeb() is not supported. Please ensure a polyfill is available."); + } + transformed = true; + return stream_1.Readable.toWeb(stream); + }, + }); +}; +exports.sdkStreamMixin = sdkStreamMixin; diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js new file mode 100644 index 0000000..1a4cc07 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/splitStream.browser.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.splitStream = splitStream; +async function splitStream(stream) { + if (typeof stream.stream === "function") { + stream = stream.stream(); + } + const readableStream = stream; + return readableStream.tee(); +} diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/splitStream.js b/bff/node_modules/@smithy/util-stream/dist-cjs/splitStream.js new file mode 100644 index 0000000..a60ffad --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/splitStream.js @@ -0,0 +1,16 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.splitStream = splitStream; +const stream_1 = require("stream"); +const splitStream_browser_1 = require("./splitStream.browser"); +const stream_type_check_1 = require("./stream-type-check"); +async function splitStream(stream) { + if ((0, stream_type_check_1.isReadableStream)(stream) || (0, stream_type_check_1.isBlob)(stream)) { + return (0, splitStream_browser_1.splitStream)(stream); + } + const stream1 = new stream_1.PassThrough(); + const stream2 = new stream_1.PassThrough(); + stream.pipe(stream1); + stream.pipe(stream2); + return [stream1, stream2]; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js b/bff/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js new file mode 100644 index 0000000..c4648f8 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isBlob = exports.isReadableStream = void 0; +const isReadableStream = (stream) => typeof ReadableStream === "function" && + (stream?.constructor?.name === ReadableStream.name || stream instanceof ReadableStream); +exports.isReadableStream = isReadableStream; +const isBlob = (blob) => { + return typeof Blob === "function" && (blob?.constructor?.name === Blob.name || blob instanceof Blob); +}; +exports.isBlob = isBlob; diff --git a/bff/node_modules/@smithy/util-stream/dist-es/ByteArrayCollector.js b/bff/node_modules/@smithy/util-stream/dist-es/ByteArrayCollector.js new file mode 100644 index 0000000..eb2a4bb --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/ByteArrayCollector.js @@ -0,0 +1,32 @@ +export class ByteArrayCollector { + allocByteArray; + byteLength = 0; + byteArrays = []; + constructor(allocByteArray) { + this.allocByteArray = allocByteArray; + } + push(byteArray) { + this.byteArrays.push(byteArray); + this.byteLength += byteArray.byteLength; + } + flush() { + if (this.byteArrays.length === 1) { + const bytes = this.byteArrays[0]; + this.reset(); + return bytes; + } + const aggregation = this.allocByteArray(this.byteLength); + let cursor = 0; + for (let i = 0; i < this.byteArrays.length; ++i) { + const bytes = this.byteArrays[i]; + aggregation.set(bytes, cursor); + cursor += bytes.byteLength; + } + this.reset(); + return aggregation; + } + reset() { + this.byteArrays = []; + this.byteLength = 0; + } +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js b/bff/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js new file mode 100644 index 0000000..49217bb --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js @@ -0,0 +1,23 @@ +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; +export class Uint8ArrayBlobAdapter extends Uint8Array { + static fromString(source, encoding = "utf-8") { + if (typeof source === "string") { + if (encoding === "base64") { + return Uint8ArrayBlobAdapter.mutate(fromBase64(source)); + } + return Uint8ArrayBlobAdapter.mutate(fromUtf8(source)); + } + throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`); + } + static mutate(source) { + Object.setPrototypeOf(source, Uint8ArrayBlobAdapter.prototype); + return source; + } + transformToString(encoding = "utf-8") { + if (encoding === "base64") { + return toBase64(this); + } + return toUtf8(this); + } +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js new file mode 100644 index 0000000..afcf529 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js @@ -0,0 +1,3 @@ +const ReadableStreamRef = typeof ReadableStream === "function" ? ReadableStream : function () { }; +export class ChecksumStream extends ReadableStreamRef { +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js b/bff/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js new file mode 100644 index 0000000..772cc1c --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js @@ -0,0 +1,60 @@ +import { toBase64 } from "@smithy/util-base64"; +import { Duplex } from "stream"; +export class ChecksumStream extends Duplex { + expectedChecksum; + checksumSourceLocation; + checksum; + source; + base64Encoder; + pendingCallback = null; + constructor({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }) { + super(); + if (typeof source.pipe === "function") { + this.source = source; + } + else { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + this.base64Encoder = base64Encoder ?? toBase64; + this.expectedChecksum = expectedChecksum; + this.checksum = checksum; + this.checksumSourceLocation = checksumSourceLocation; + this.source.pipe(this); + } + _read(size) { + if (this.pendingCallback) { + const callback = this.pendingCallback; + this.pendingCallback = null; + callback(); + } + } + _write(chunk, encoding, callback) { + try { + this.checksum.update(chunk); + const canPushMore = this.push(chunk); + if (!canPushMore) { + this.pendingCallback = callback; + return; + } + } + catch (e) { + return callback(e); + } + return callback(); + } + async _final(callback) { + try { + const digest = await this.checksum.digest(); + const received = this.base64Encoder(digest); + if (this.expectedChecksum !== received) { + return callback(new Error(`Checksum mismatch: expected "${this.expectedChecksum}" but received "${received}"` + + ` in response header "${this.checksumSourceLocation}".`)); + } + } + catch (e) { + return callback(e); + } + this.push(null); + return callback(); + } +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js new file mode 100644 index 0000000..6a41c12 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js @@ -0,0 +1,35 @@ +import { toBase64 } from "@smithy/util-base64"; +import { isReadableStream } from "../stream-type-check"; +import { ChecksumStream } from "./ChecksumStream.browser"; +export const createChecksumStream = ({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }) => { + if (!isReadableStream(source)) { + throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`); + } + const encoder = base64Encoder ?? toBase64; + if (typeof TransformStream !== "function") { + throw new Error("@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream."); + } + const transform = new TransformStream({ + start() { }, + async transform(chunk, controller) { + checksum.update(chunk); + controller.enqueue(chunk); + }, + async flush(controller) { + const digest = await checksum.digest(); + const received = encoder(digest); + if (expectedChecksum !== received) { + const error = new Error(`Checksum mismatch: expected "${expectedChecksum}" but received "${received}"` + + ` in response header "${checksumSourceLocation}".`); + controller.error(error); + } + else { + controller.terminate(); + } + }, + }); + source.pipeThrough(transform); + const readable = transform.readable; + Object.setPrototypeOf(readable, ChecksumStream.prototype); + return readable; +}; diff --git a/bff/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js b/bff/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js new file mode 100644 index 0000000..d205b82 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js @@ -0,0 +1,9 @@ +import { isReadableStream } from "../stream-type-check"; +import { ChecksumStream } from "./ChecksumStream"; +import { createChecksumStream as createChecksumStreamWeb } from "./createChecksumStream.browser"; +export function createChecksumStream(init) { + if (typeof ReadableStream === "function" && isReadableStream(init.source)) { + return createChecksumStreamWeb(init); + } + return new ChecksumStream(init); +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/createBufferedReadable.js b/bff/node_modules/@smithy/util-stream/dist-es/createBufferedReadable.js new file mode 100644 index 0000000..0e3bbce --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/createBufferedReadable.js @@ -0,0 +1,57 @@ +import { Readable } from "node:stream"; +import { ByteArrayCollector } from "./ByteArrayCollector"; +import { createBufferedReadableStream, flush, merge, modeOf, sizeOf } from "./createBufferedReadableStream"; +import { isReadableStream } from "./stream-type-check"; +export function createBufferedReadable(upstream, size, logger) { + if (isReadableStream(upstream)) { + return createBufferedReadableStream(upstream, size, logger); + } + const downstream = new Readable({ read() { } }); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = [ + "", + new ByteArrayCollector((size) => new Uint8Array(size)), + new ByteArrayCollector((size) => Buffer.from(new Uint8Array(size))), + ]; + let mode = -1; + upstream.on("data", (chunk) => { + const chunkMode = modeOf(chunk, true); + if (mode !== chunkMode) { + if (mode >= 0) { + downstream.push(flush(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + downstream.push(chunk); + return; + } + const chunkSize = sizeOf(chunk); + bytesSeen += chunkSize; + const bufferSize = sizeOf(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + downstream.push(chunk); + } + else { + const newSize = merge(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + downstream.push(flush(buffers, mode)); + } + } + }); + upstream.on("end", () => { + if (mode !== -1) { + const remainder = flush(buffers, mode); + if (sizeOf(remainder) > 0) { + downstream.push(remainder); + } + } + downstream.push(null); + }); + return downstream; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/createBufferedReadableStream.js b/bff/node_modules/@smithy/util-stream/dist-es/createBufferedReadableStream.js new file mode 100644 index 0000000..698a757 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/createBufferedReadableStream.js @@ -0,0 +1,95 @@ +import { ByteArrayCollector } from "./ByteArrayCollector"; +export function createBufferedReadableStream(upstream, size, logger) { + const reader = upstream.getReader(); + let streamBufferingLoggedWarning = false; + let bytesSeen = 0; + const buffers = ["", new ByteArrayCollector((size) => new Uint8Array(size))]; + let mode = -1; + const pull = async (controller) => { + const { value, done } = await reader.read(); + const chunk = value; + if (done) { + if (mode !== -1) { + const remainder = flush(buffers, mode); + if (sizeOf(remainder) > 0) { + controller.enqueue(remainder); + } + } + controller.close(); + } + else { + const chunkMode = modeOf(chunk, false); + if (mode !== chunkMode) { + if (mode >= 0) { + controller.enqueue(flush(buffers, mode)); + } + mode = chunkMode; + } + if (mode === -1) { + controller.enqueue(chunk); + return; + } + const chunkSize = sizeOf(chunk); + bytesSeen += chunkSize; + const bufferSize = sizeOf(buffers[mode]); + if (chunkSize >= size && bufferSize === 0) { + controller.enqueue(chunk); + } + else { + const newSize = merge(buffers, mode, chunk); + if (!streamBufferingLoggedWarning && bytesSeen > size * 2) { + streamBufferingLoggedWarning = true; + logger?.warn(`@smithy/util-stream - stream chunk size ${chunkSize} is below threshold of ${size}, automatically buffering.`); + } + if (newSize >= size) { + controller.enqueue(flush(buffers, mode)); + } + else { + await pull(controller); + } + } + } + }; + return new ReadableStream({ + pull, + }); +} +export const createBufferedReadable = createBufferedReadableStream; +export function merge(buffers, mode, chunk) { + switch (mode) { + case 0: + buffers[0] += chunk; + return sizeOf(buffers[0]); + case 1: + case 2: + buffers[mode].push(chunk); + return sizeOf(buffers[mode]); + } +} +export function flush(buffers, mode) { + switch (mode) { + case 0: + const s = buffers[0]; + buffers[0] = ""; + return s; + case 1: + case 2: + return buffers[mode].flush(); + } + throw new Error(`@smithy/util-stream - invalid index ${mode} given to flush()`); +} +export function sizeOf(chunk) { + return chunk?.byteLength ?? chunk?.length ?? 0; +} +export function modeOf(chunk, allowBuffer = true) { + if (allowBuffer && typeof Buffer !== "undefined" && chunk instanceof Buffer) { + return 2; + } + if (chunk instanceof Uint8Array) { + return 1; + } + if (typeof chunk === "string") { + return 0; + } + return -1; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js new file mode 100644 index 0000000..b5d5fa4 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.browser.js @@ -0,0 +1,27 @@ +export const getAwsChunkedEncodingStream = (readableStream, options) => { + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== undefined && + bodyLengthChecker !== undefined && + checksumAlgorithmFn !== undefined && + checksumLocationName !== undefined && + streamHasher !== undefined; + const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : undefined; + const reader = readableStream.getReader(); + return new ReadableStream({ + async pull(controller) { + const { value, done } = await reader.read(); + if (done) { + controller.enqueue(`0\r\n`); + if (checksumRequired) { + const checksum = base64Encoder(await digest); + controller.enqueue(`${checksumLocationName}:${checksum}\r\n`); + controller.enqueue(`\r\n`); + } + controller.close(); + } + else { + controller.enqueue(`${(bodyLengthChecker(value) || 0).toString(16)}\r\n${value}\r\n`); + } + }, + }); +}; diff --git a/bff/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.js b/bff/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.js new file mode 100644 index 0000000..7d24fb5 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/getAwsChunkedEncodingStream.js @@ -0,0 +1,38 @@ +import { Readable } from "node:stream"; +import { getAwsChunkedEncodingStream as getAwsChunkedEncodingStreamBrowser } from "./getAwsChunkedEncodingStream.browser"; +import { isReadableStream } from "./stream-type-check"; +export function getAwsChunkedEncodingStream(stream, options) { + const readable = stream; + const readableStream = stream; + if (isReadableStream(readableStream)) { + return getAwsChunkedEncodingStreamBrowser(readableStream, options); + } + const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options; + const checksumRequired = base64Encoder !== undefined && + checksumAlgorithmFn !== undefined && + checksumLocationName !== undefined && + streamHasher !== undefined; + const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readable) : undefined; + const awsChunkedEncodingStream = new Readable({ + read: () => { }, + }); + readable.on("data", (data) => { + const length = bodyLengthChecker(data) || 0; + if (length === 0) { + return; + } + awsChunkedEncodingStream.push(`${length.toString(16)}\r\n`); + awsChunkedEncodingStream.push(data); + awsChunkedEncodingStream.push("\r\n"); + }); + readable.on("end", async () => { + awsChunkedEncodingStream.push(`0\r\n`); + if (checksumRequired) { + const checksum = base64Encoder(await digest); + awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\r\n`); + awsChunkedEncodingStream.push(`\r\n`); + } + awsChunkedEncodingStream.push(null); + }); + return awsChunkedEncodingStream; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/headStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-es/headStream.browser.js new file mode 100644 index 0000000..4e7f864 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/headStream.browser.js @@ -0,0 +1,31 @@ +export async function headStream(stream, bytes) { + let byteLengthCounter = 0; + const chunks = []; + const reader = stream.getReader(); + let isDone = false; + while (!isDone) { + const { done, value } = await reader.read(); + if (value) { + chunks.push(value); + byteLengthCounter += value?.byteLength ?? 0; + } + if (byteLengthCounter >= bytes) { + break; + } + isDone = done; + } + reader.releaseLock(); + const collected = new Uint8Array(Math.min(bytes, byteLengthCounter)); + let offset = 0; + for (const chunk of chunks) { + if (chunk.byteLength > collected.byteLength - offset) { + collected.set(chunk.subarray(0, collected.byteLength - offset), offset); + break; + } + else { + collected.set(chunk, offset); + } + offset += chunk.length; + } + return collected; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/headStream.js b/bff/node_modules/@smithy/util-stream/dist-es/headStream.js new file mode 100644 index 0000000..0f66e29 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/headStream.js @@ -0,0 +1,38 @@ +import { Writable } from "stream"; +import { headStream as headWebStream } from "./headStream.browser"; +import { isReadableStream } from "./stream-type-check"; +export const headStream = (stream, bytes) => { + if (isReadableStream(stream)) { + return headWebStream(stream, bytes); + } + return new Promise((resolve, reject) => { + const collector = new Collector(); + collector.limit = bytes; + stream.pipe(collector); + stream.on("error", (err) => { + collector.end(); + reject(err); + }); + collector.on("error", reject); + collector.on("finish", function () { + const bytes = new Uint8Array(Buffer.concat(this.buffers)); + resolve(bytes); + }); + }); +}; +class Collector extends Writable { + buffers = []; + limit = Infinity; + bytesBuffered = 0; + _write(chunk, encoding, callback) { + this.buffers.push(chunk); + this.bytesBuffered += chunk.byteLength ?? 0; + if (this.bytesBuffered >= this.limit) { + const excess = this.bytesBuffered - this.limit; + const tailBuffer = this.buffers[this.buffers.length - 1]; + this.buffers[this.buffers.length - 1] = tailBuffer.subarray(0, tailBuffer.byteLength - excess); + this.emit("finish"); + } + callback(); + } +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/index.js b/bff/node_modules/@smithy/util-stream/dist-es/index.js new file mode 100644 index 0000000..9ed4b0a --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/index.js @@ -0,0 +1,9 @@ +export * from "./blob/Uint8ArrayBlobAdapter"; +export * from "./checksum/ChecksumStream"; +export * from "./checksum/createChecksumStream"; +export * from "./createBufferedReadable"; +export * from "./getAwsChunkedEncodingStream"; +export * from "./headStream"; +export * from "./sdk-stream-mixin"; +export * from "./splitStream"; +export { isReadableStream, isBlob } from "./stream-type-check"; diff --git a/bff/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js b/bff/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js new file mode 100644 index 0000000..f21ff66 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js @@ -0,0 +1,64 @@ +import { streamCollector } from "@smithy/fetch-http-handler"; +import { toBase64 } from "@smithy/util-base64"; +import { toHex } from "@smithy/util-hex-encoding"; +import { toUtf8 } from "@smithy/util-utf8"; +import { isReadableStream } from "./stream-type-check"; +const ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; +export const sdkStreamMixin = (stream) => { + if (!isBlobInstance(stream) && !isReadableStream(stream)) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`); + } + let transformed = false; + const transformToByteArray = async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await streamCollector(stream); + }; + const blobToWebStream = (blob) => { + if (typeof blob.stream !== "function") { + throw new Error("Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\n" + + "If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body"); + } + return blob.stream(); + }; + return Object.assign(stream, { + transformToByteArray: transformToByteArray, + transformToString: async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === "base64") { + return toBase64(buf); + } + else if (encoding === "hex") { + return toHex(buf); + } + else if (encoding === undefined || encoding === "utf8" || encoding === "utf-8") { + return toUtf8(buf); + } + else if (typeof TextDecoder === "function") { + return new TextDecoder(encoding).decode(buf); + } + else { + throw new Error("TextDecoder is not available, please make sure polyfill is provided."); + } + }, + transformToWebStream: () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + if (isBlobInstance(stream)) { + return blobToWebStream(stream); + } + else if (isReadableStream(stream)) { + return stream; + } + else { + throw new Error(`Cannot transform payload to web stream, got ${stream}`); + } + }, + }); +}; +const isBlobInstance = (stream) => typeof Blob === "function" && stream instanceof Blob; diff --git a/bff/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js b/bff/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js new file mode 100644 index 0000000..4731333 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js @@ -0,0 +1,50 @@ +import { streamCollector } from "@smithy/node-http-handler"; +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +import { Readable } from "stream"; +import { sdkStreamMixin as sdkStreamMixinReadableStream } from "./sdk-stream-mixin.browser"; +const ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = "The stream has already been transformed."; +export const sdkStreamMixin = (stream) => { + if (!(stream instanceof Readable)) { + try { + return sdkStreamMixinReadableStream(stream); + } + catch (e) { + const name = stream?.__proto__?.constructor?.name || stream; + throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`); + } + } + let transformed = false; + const transformToByteArray = async () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + transformed = true; + return await streamCollector(stream); + }; + return Object.assign(stream, { + transformToByteArray, + transformToString: async (encoding) => { + const buf = await transformToByteArray(); + if (encoding === undefined || Buffer.isEncoding(encoding)) { + return fromArrayBuffer(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding); + } + else { + const decoder = new TextDecoder(encoding); + return decoder.decode(buf); + } + }, + transformToWebStream: () => { + if (transformed) { + throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED); + } + if (stream.readableFlowing !== null) { + throw new Error("The stream has been consumed by other callbacks."); + } + if (typeof Readable.toWeb !== "function") { + throw new Error("Readable.toWeb() is not supported. Please ensure a polyfill is available."); + } + transformed = true; + return Readable.toWeb(stream); + }, + }); +}; diff --git a/bff/node_modules/@smithy/util-stream/dist-es/splitStream.browser.js b/bff/node_modules/@smithy/util-stream/dist-es/splitStream.browser.js new file mode 100644 index 0000000..6f06b0e --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/splitStream.browser.js @@ -0,0 +1,7 @@ +export async function splitStream(stream) { + if (typeof stream.stream === "function") { + stream = stream.stream(); + } + const readableStream = stream; + return readableStream.tee(); +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/splitStream.js b/bff/node_modules/@smithy/util-stream/dist-es/splitStream.js new file mode 100644 index 0000000..1a8c032 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/splitStream.js @@ -0,0 +1,13 @@ +import { PassThrough } from "stream"; +import { splitStream as splitWebStream } from "./splitStream.browser"; +import { isBlob, isReadableStream } from "./stream-type-check"; +export async function splitStream(stream) { + if (isReadableStream(stream) || isBlob(stream)) { + return splitWebStream(stream); + } + const stream1 = new PassThrough(); + const stream2 = new PassThrough(); + stream.pipe(stream1); + stream.pipe(stream2); + return [stream1, stream2]; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-es/stream-type-check.js b/bff/node_modules/@smithy/util-stream/dist-es/stream-type-check.js new file mode 100644 index 0000000..6ee93a3 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-es/stream-type-check.js @@ -0,0 +1,5 @@ +export const isReadableStream = (stream) => typeof ReadableStream === "function" && + (stream?.constructor?.name === ReadableStream.name || stream instanceof ReadableStream); +export const isBlob = (blob) => { + return typeof Blob === "function" && (blob?.constructor?.name === Blob.name || blob instanceof Blob); +}; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ByteArrayCollector.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ByteArrayCollector.d.ts new file mode 100644 index 0000000..a1bbd53 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ByteArrayCollector.d.ts @@ -0,0 +1,13 @@ +/** + * Aggregates byteArrays on demand. + * @internal + */ +export declare class ByteArrayCollector { + readonly allocByteArray: (size: number) => Uint8Array; + byteLength: number; + private byteArrays; + constructor(allocByteArray: (size: number) => Uint8Array); + push(byteArray: Uint8Array): void; + flush(): Uint8Array; + private reset; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-types/blob/Uint8ArrayBlobAdapter.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/blob/Uint8ArrayBlobAdapter.d.ts new file mode 100644 index 0000000..269f2b5 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/blob/Uint8ArrayBlobAdapter.d.ts @@ -0,0 +1,22 @@ +/** + * Adapter for conversions of the native Uint8Array type. + * @public + */ +export declare class Uint8ArrayBlobAdapter extends Uint8Array { + /** + * @param source - such as a string or Stream. + * @param encoding - utf-8 or base64. + * @returns a new Uint8ArrayBlobAdapter extending Uint8Array. + */ + static fromString(source: string, encoding?: string): Uint8ArrayBlobAdapter; + /** + * @param source - Uint8Array to be mutated. + * @returns the same Uint8Array but with prototype switched to Uint8ArrayBlobAdapter. + */ + static mutate(source: Uint8Array): Uint8ArrayBlobAdapter; + /** + * @param encoding - default 'utf-8'. + * @returns the blob as string. + */ + transformToString(encoding?: string): string; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts new file mode 100644 index 0000000..c7fc371 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts @@ -0,0 +1,37 @@ +import type { Checksum, Encoder } from "@smithy/types"; +/** + * @internal + */ +export interface ChecksumStreamInit { + /** + * Base64 value of the expected checksum. + */ + expectedChecksum: string; + /** + * For error messaging, the location from which the checksum value was read. + */ + checksumSourceLocation: string; + /** + * The checksum calculator. + */ + checksum: Checksum; + /** + * The stream to be checked. + */ + source: ReadableStream; + /** + * Optional base 64 encoder if calling from a request context. + */ + base64Encoder?: Encoder; +} +declare const ChecksumStream_base: any; +/** + * This stub exists so that the readable returned by createChecksumStream + * identifies as "ChecksumStream" in alignment with the Node.js + * implementation. + * + * @extends ReadableStream + */ +export declare class ChecksumStream extends ChecksumStream_base { +} +export {}; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts new file mode 100644 index 0000000..67c8c35 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts @@ -0,0 +1,61 @@ +import type { Checksum, Encoder } from "@smithy/types"; +import type { Readable } from "stream"; +import { Duplex } from "stream"; +/** + * @internal + */ +export interface ChecksumStreamInit { + /** + * Base64 value of the expected checksum. + */ + expectedChecksum: string; + /** + * For error messaging, the location from which the checksum value was read. + */ + checksumSourceLocation: string; + /** + * The checksum calculator. + */ + checksum: Checksum; + /** + * The stream to be checked. + */ + source: T; + /** + * Optional base 64 encoder if calling from a request context. + */ + base64Encoder?: Encoder; +} +/** + * Wrapper for throwing checksum errors for streams without + * buffering the stream. + * + * @internal + */ +export declare class ChecksumStream extends Duplex { + private expectedChecksum; + private checksumSourceLocation; + private checksum; + private source?; + private base64Encoder; + private pendingCallback; + constructor({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }: ChecksumStreamInit); + /** + * Do not call this directly. + * @internal + */ + _read(size: number): void; + /** + * When the upstream source flows data to this stream, + * calculate a step update of the checksum. + * Do not call this directly. + * @internal + */ + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; + /** + * When the upstream source finishes, perform the checksum comparison. + * Do not call this directly. + * @internal + */ + _final(callback: (err?: Error) => void): Promise; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts new file mode 100644 index 0000000..a2e6845 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts @@ -0,0 +1,14 @@ +import type { ChecksumStreamInit } from "./ChecksumStream.browser"; +/** + * Alias prevents compiler from turning + * ReadableStream into ReadableStream, which is incompatible + * with the NodeJS.ReadableStream global type. + * @internal + */ +export type ReadableStreamType = ReadableStream; +/** + * Creates a stream adapter for throwing checksum errors for streams without + * buffering the stream. + * @internal + */ +export declare const createChecksumStream: ({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }: ChecksumStreamInit) => ReadableStreamType; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts new file mode 100644 index 0000000..d45b944 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts @@ -0,0 +1,13 @@ +import type { Readable } from "stream"; +import type { ChecksumStreamInit } from "./ChecksumStream"; +import type { ReadableStreamType } from "./createChecksumStream.browser"; +/** + * Creates a stream mirroring the input stream's interface, but + * performs checksumming when reading to the end of the stream. + * @internal + */ +export declare function createChecksumStream(init: ChecksumStreamInit): ReadableStreamType; +/** + * @internal + */ +export declare function createChecksumStream(init: ChecksumStreamInit): Readable; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/createBufferedReadable.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/createBufferedReadable.d.ts new file mode 100644 index 0000000..2df8c3b --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/createBufferedReadable.d.ts @@ -0,0 +1,15 @@ +import type { Logger } from "@smithy/types"; +import { Readable } from "node:stream"; +/** + * @internal + * @param upstream - any Readable or ReadableStream. + * @param size - byte or character length minimum. Buffering occurs when a chunk fails to meet this value. + * @param logger - for emitting warnings when buffering occurs. + * @returns another stream of the same data and stream class, but buffers chunks until + * the minimum size is met, except for the last chunk. + */ +export declare function createBufferedReadable(upstream: Readable, size: number, logger?: Logger): Readable; +/** + * @internal + */ +export declare function createBufferedReadable(upstream: ReadableStream, size: number, logger?: Logger): ReadableStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/createBufferedReadableStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/createBufferedReadableStream.d.ts new file mode 100644 index 0000000..9f6cdbd --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/createBufferedReadableStream.d.ts @@ -0,0 +1,50 @@ +import type { Logger } from "@smithy/types"; +import { ByteArrayCollector } from "./ByteArrayCollector"; +export type BufferStore = [string, ByteArrayCollector, ByteArrayCollector?]; +export type BufferUnion = string | Uint8Array; +export type Modes = 0 | 1 | 2; +/** + * @internal + * @param upstream - any ReadableStream. + * @param size - byte or character length minimum. Buffering occurs when a chunk fails to meet this value. + * @param logger - for emitting warnings when buffering occurs. + * @returns another stream of the same data, but buffers chunks until + * the minimum size is met, except for the last chunk. + */ +export declare function createBufferedReadableStream(upstream: ReadableStream, size: number, logger?: Logger): ReadableStream; +/** + * Replaces R/RS polymorphic implementation in environments with only ReadableStream. + * @internal + */ +export declare const createBufferedReadable: typeof createBufferedReadableStream; +/** + * @internal + * @param buffers + * @param mode + * @param chunk + * @returns the new buffer size after merging the chunk with its appropriate buffer. + */ +export declare function merge(buffers: BufferStore, mode: Modes, chunk: string | Uint8Array): number; +/** + * @internal + * @param buffers + * @param mode + * @returns the buffer matching the mode. + */ +export declare function flush(buffers: BufferStore, mode: Modes | -1): BufferUnion; +/** + * @internal + * @param chunk + * @returns size of the chunk in bytes or characters. + */ +export declare function sizeOf(chunk?: { + byteLength?: number; + length?: number; +}): number; +/** + * @internal + * @param chunk - from upstream Readable. + * @param allowBuffer - allow mode 2 (Buffer), otherwise Buffer will return mode 1. + * @returns type index of the chunk. + */ +export declare function modeOf(chunk: BufferUnion, allowBuffer?: boolean): Modes | -1; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.browser.d.ts new file mode 100644 index 0000000..18d6eef --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.browser.d.ts @@ -0,0 +1,5 @@ +import type { GetAwsChunkedEncodingStream } from "@smithy/types"; +/** + * @internal + */ +export declare const getAwsChunkedEncodingStream: GetAwsChunkedEncodingStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.d.ts new file mode 100644 index 0000000..c1af565 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/getAwsChunkedEncodingStream.d.ts @@ -0,0 +1,10 @@ +import type { GetAwsChunkedEncodingStreamOptions } from "@smithy/types"; +import { Readable } from "node:stream"; +/** + * @internal + */ +export declare function getAwsChunkedEncodingStream(stream: Readable, options: GetAwsChunkedEncodingStreamOptions): Readable; +/** + * @internal + */ +export declare function getAwsChunkedEncodingStream(stream: ReadableStream, options: GetAwsChunkedEncodingStreamOptions): ReadableStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/headStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/headStream.browser.d.ts new file mode 100644 index 0000000..3037618 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/headStream.browser.d.ts @@ -0,0 +1,7 @@ +/** + * Caution: the input stream must be destroyed separately, this function does not do so. + * @internal + * @param stream + * @param bytes - read head bytes from the stream and discard the rest of it. + */ +export declare function headStream(stream: ReadableStream, bytes: number): Promise; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/headStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/headStream.d.ts new file mode 100644 index 0000000..a4e7536 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/headStream.d.ts @@ -0,0 +1,9 @@ +import type { Readable } from "stream"; +/** + * Caution: the input stream must be destroyed separately, this function does not do so. + * + * @internal + * @param stream - to be read. + * @param bytes - read head bytes from the stream and discard the rest of it. + */ +export declare const headStream: (stream: Readable | ReadableStream, bytes: number) => Promise; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/index.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/index.d.ts new file mode 100644 index 0000000..5f3c82f --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/index.d.ts @@ -0,0 +1,12 @@ +export * from "./blob/Uint8ArrayBlobAdapter"; +export * from "./checksum/ChecksumStream"; +export * from "./checksum/createChecksumStream"; +export * from "./createBufferedReadable"; +export * from "./getAwsChunkedEncodingStream"; +export * from "./headStream"; +export * from "./sdk-stream-mixin"; +export * from "./splitStream"; +/** + * @internal + */ +export { isReadableStream, isBlob } from "./stream-type-check"; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.browser.d.ts new file mode 100644 index 0000000..9fdae88 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.browser.d.ts @@ -0,0 +1,7 @@ +import type { SdkStream } from "@smithy/types"; +/** + * The stream handling utility functions for browsers and React Native + * + * @internal + */ +export declare const sdkStreamMixin: (stream: unknown) => SdkStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts new file mode 100644 index 0000000..080dc7a --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/sdk-stream-mixin.d.ts @@ -0,0 +1,8 @@ +import type { SdkStream } from "@smithy/types"; +import { Readable } from "stream"; +/** + * The function that mixes in the utility functions to help consuming runtime-specific payload stream. + * + * @internal + */ +export declare const sdkStreamMixin: (stream: unknown) => SdkStream | SdkStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/splitStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/splitStream.browser.d.ts new file mode 100644 index 0000000..506c23a --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/splitStream.browser.d.ts @@ -0,0 +1,5 @@ +/** + * @param stream + * @returns stream split into two identical streams. + */ +export declare function splitStream(stream: ReadableStream | Blob): Promise<[ReadableStream, ReadableStream]>; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/splitStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/splitStream.d.ts new file mode 100644 index 0000000..c0f93b8 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/splitStream.d.ts @@ -0,0 +1,11 @@ +import type { Readable } from "stream"; +/** + * @internal + * @param stream - to be split. + * @returns stream split into two identical streams. + */ +export declare function splitStream(stream: Readable): Promise<[Readable, Readable]>; +/** + * @internal + */ +export declare function splitStream(stream: ReadableStream): Promise<[ReadableStream, ReadableStream]>; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts new file mode 100644 index 0000000..6b8caa0 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts @@ -0,0 +1,17 @@ +/** + * Alias prevents compiler from turning + * ReadableStream into ReadableStream, which is incompatible + * with the NodeJS.ReadableStream global type. + * + * @internal + */ +type ReadableStreamType = ReadableStream; +/** + * @internal + */ +export declare const isReadableStream: (stream: unknown) => stream is ReadableStreamType; +/** + * @internal + */ +export declare const isBlob: (blob: unknown) => blob is Blob; +export {}; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/ByteArrayCollector.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/ByteArrayCollector.d.ts new file mode 100644 index 0000000..c309a6c --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/ByteArrayCollector.d.ts @@ -0,0 +1,13 @@ +/** + * Aggregates byteArrays on demand. + * @internal + */ +export declare class ByteArrayCollector { + readonly allocByteArray: (size: number) => Uint8Array; + byteLength: number; + private byteArrays; + constructor(allocByteArray: (size: number) => Uint8Array); + push(byteArray: Uint8Array): void; + flush(): Uint8Array; + private reset; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/blob/Uint8ArrayBlobAdapter.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/blob/Uint8ArrayBlobAdapter.d.ts new file mode 100644 index 0000000..aea893f --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/blob/Uint8ArrayBlobAdapter.d.ts @@ -0,0 +1,22 @@ +/** + * Adapter for conversions of the native Uint8Array type. + * @public + */ +export declare class Uint8ArrayBlobAdapter extends Uint8Array { + /** + * @param source - such as a string or Stream. + * @param encoding - utf-8 or base64. + * @returns a new Uint8ArrayBlobAdapter extending Uint8Array. + */ + static fromString(source: string, encoding?: string): Uint8ArrayBlobAdapter; + /** + * @param source - Uint8Array to be mutated. + * @returns the same Uint8Array but with prototype switched to Uint8ArrayBlobAdapter. + */ + static mutate(source: Uint8Array): Uint8ArrayBlobAdapter; + /** + * @param encoding - default 'utf-8'. + * @returns the blob as string. + */ + transformToString(encoding?: string): string; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts new file mode 100644 index 0000000..902a9b2 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts @@ -0,0 +1,37 @@ +import { Checksum, Encoder } from "@smithy/types"; +/** + * @internal + */ +export interface ChecksumStreamInit { + /** + * Base64 value of the expected checksum. + */ + expectedChecksum: string; + /** + * For error messaging, the location from which the checksum value was read. + */ + checksumSourceLocation: string; + /** + * The checksum calculator. + */ + checksum: Checksum; + /** + * The stream to be checked. + */ + source: ReadableStream; + /** + * Optional base 64 encoder if calling from a request context. + */ + base64Encoder?: Encoder; +} +declare const ChecksumStream_base: any; +/** + * This stub exists so that the readable returned by createChecksumStream + * identifies as "ChecksumStream" in alignment with the Node.js + * implementation. + * + * @extends ReadableStream + */ +export declare class ChecksumStream extends ChecksumStream_base { +} +export {}; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts new file mode 100644 index 0000000..4fd6d23 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts @@ -0,0 +1,61 @@ +import { Checksum, Encoder } from "@smithy/types"; +import { Readable } from "stream"; +import { Duplex } from "stream"; +/** + * @internal + */ +export interface ChecksumStreamInit { + /** + * Base64 value of the expected checksum. + */ + expectedChecksum: string; + /** + * For error messaging, the location from which the checksum value was read. + */ + checksumSourceLocation: string; + /** + * The checksum calculator. + */ + checksum: Checksum; + /** + * The stream to be checked. + */ + source: T; + /** + * Optional base 64 encoder if calling from a request context. + */ + base64Encoder?: Encoder; +} +/** + * Wrapper for throwing checksum errors for streams without + * buffering the stream. + * + * @internal + */ +export declare class ChecksumStream extends Duplex { + private expectedChecksum; + private checksumSourceLocation; + private checksum; + private source?; + private base64Encoder; + private pendingCallback; + constructor({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }: ChecksumStreamInit); + /** + * Do not call this directly. + * @internal + */ + _read(size: number): void; + /** + * When the upstream source flows data to this stream, + * calculate a step update of the checksum. + * Do not call this directly. + * @internal + */ + _write(chunk: Buffer, encoding: string, callback: (err?: Error) => void): void; + /** + * When the upstream source finishes, perform the checksum comparison. + * Do not call this directly. + * @internal + */ + _final(callback: (err?: Error) => void): Promise; +} diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts new file mode 100644 index 0000000..d2c8555 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts @@ -0,0 +1,14 @@ +import { ChecksumStreamInit } from "./ChecksumStream.browser"; +/** + * Alias prevents compiler from turning + * ReadableStream into ReadableStream, which is incompatible + * with the NodeJS.ReadableStream global type. + * @internal + */ +export type ReadableStreamType = ReadableStream; +/** + * Creates a stream adapter for throwing checksum errors for streams without + * buffering the stream. + * @internal + */ +export declare const createChecksumStream: ({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }: ChecksumStreamInit) => ReadableStreamType; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts new file mode 100644 index 0000000..ae6e43f --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts @@ -0,0 +1,13 @@ +import { Readable } from "stream"; +import { ChecksumStreamInit } from "./ChecksumStream"; +import { ReadableStreamType } from "./createChecksumStream.browser"; +/** + * Creates a stream mirroring the input stream's interface, but + * performs checksumming when reading to the end of the stream. + * @internal + */ +export declare function createChecksumStream(init: ChecksumStreamInit): ReadableStreamType; +/** + * @internal + */ +export declare function createChecksumStream(init: ChecksumStreamInit): Readable; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadable.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadable.d.ts new file mode 100644 index 0000000..b2fd8b0 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadable.d.ts @@ -0,0 +1,15 @@ +import { Logger } from "@smithy/types"; +import { Readable } from "node:stream"; +/** + * @internal + * @param upstream - any Readable or ReadableStream. + * @param size - byte or character length minimum. Buffering occurs when a chunk fails to meet this value. + * @param logger - for emitting warnings when buffering occurs. + * @returns another stream of the same data and stream class, but buffers chunks until + * the minimum size is met, except for the last chunk. + */ +export declare function createBufferedReadable(upstream: Readable, size: number, logger?: Logger): Readable; +/** + * @internal + */ +export declare function createBufferedReadable(upstream: ReadableStream, size: number, logger?: Logger): ReadableStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts new file mode 100644 index 0000000..7b4effd --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/createBufferedReadableStream.d.ts @@ -0,0 +1,54 @@ +import { Logger } from "@smithy/types"; +import { ByteArrayCollector } from "./ByteArrayCollector"; +export type BufferStore = [ + string, + ByteArrayCollector, + ByteArrayCollector? +]; +export type BufferUnion = string | Uint8Array; +export type Modes = 0 | 1 | 2; +/** + * @internal + * @param upstream - any ReadableStream. + * @param size - byte or character length minimum. Buffering occurs when a chunk fails to meet this value. + * @param logger - for emitting warnings when buffering occurs. + * @returns another stream of the same data, but buffers chunks until + * the minimum size is met, except for the last chunk. + */ +export declare function createBufferedReadableStream(upstream: ReadableStream, size: number, logger?: Logger): ReadableStream; +/** + * Replaces R/RS polymorphic implementation in environments with only ReadableStream. + * @internal + */ +export declare const createBufferedReadable: typeof createBufferedReadableStream; +/** + * @internal + * @param buffers + * @param mode + * @param chunk + * @returns the new buffer size after merging the chunk with its appropriate buffer. + */ +export declare function merge(buffers: BufferStore, mode: Modes, chunk: string | Uint8Array): number; +/** + * @internal + * @param buffers + * @param mode + * @returns the buffer matching the mode. + */ +export declare function flush(buffers: BufferStore, mode: Modes | -1): BufferUnion; +/** + * @internal + * @param chunk + * @returns size of the chunk in bytes or characters. + */ +export declare function sizeOf(chunk?: { + byteLength?: number; + length?: number; +}): number; +/** + * @internal + * @param chunk - from upstream Readable. + * @param allowBuffer - allow mode 2 (Buffer), otherwise Buffer will return mode 1. + * @returns type index of the chunk. + */ +export declare function modeOf(chunk: BufferUnion, allowBuffer?: boolean): Modes | -1; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.browser.d.ts new file mode 100644 index 0000000..5979078 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.browser.d.ts @@ -0,0 +1,5 @@ +import { GetAwsChunkedEncodingStream } from "@smithy/types"; +/** + * @internal + */ +export declare const getAwsChunkedEncodingStream: GetAwsChunkedEncodingStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.d.ts new file mode 100644 index 0000000..7b2491d --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/getAwsChunkedEncodingStream.d.ts @@ -0,0 +1,10 @@ +import { GetAwsChunkedEncodingStreamOptions } from "@smithy/types"; +import { Readable } from "node:stream"; +/** + * @internal + */ +export declare function getAwsChunkedEncodingStream(stream: Readable, options: GetAwsChunkedEncodingStreamOptions): Readable; +/** + * @internal + */ +export declare function getAwsChunkedEncodingStream(stream: ReadableStream, options: GetAwsChunkedEncodingStreamOptions): ReadableStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.browser.d.ts new file mode 100644 index 0000000..bfe1aa8 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.browser.d.ts @@ -0,0 +1,7 @@ +/** + * Caution: the input stream must be destroyed separately, this function does not do so. + * @internal + * @param stream + * @param bytes - read head bytes from the stream and discard the rest of it. + */ +export declare function headStream(stream: ReadableStream, bytes: number): Promise; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.d.ts new file mode 100644 index 0000000..0ab2ea7 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/headStream.d.ts @@ -0,0 +1,9 @@ +import { Readable } from "stream"; +/** + * Caution: the input stream must be destroyed separately, this function does not do so. + * + * @internal + * @param stream - to be read. + * @param bytes - read head bytes from the stream and discard the rest of it. + */ +export declare const headStream: (stream: Readable | ReadableStream, bytes: number) => Promise; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..2603d06 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts @@ -0,0 +1,12 @@ +export * from "./blob/Uint8ArrayBlobAdapter"; +export * from "./checksum/ChecksumStream"; +export * from "./checksum/createChecksumStream"; +export * from "./createBufferedReadable"; +export * from "./getAwsChunkedEncodingStream"; +export * from "./headStream"; +export * from "./sdk-stream-mixin"; +export * from "./splitStream"; +/** + * @internal + */ +export { isReadableStream, isBlob } from "./stream-type-check"; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.browser.d.ts new file mode 100644 index 0000000..99dea40 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.browser.d.ts @@ -0,0 +1,7 @@ +import { SdkStream } from "@smithy/types"; +/** + * The stream handling utility functions for browsers and React Native + * + * @internal + */ +export declare const sdkStreamMixin: (stream: unknown) => SdkStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.d.ts new file mode 100644 index 0000000..c05518a --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/sdk-stream-mixin.d.ts @@ -0,0 +1,8 @@ +import { SdkStream } from "@smithy/types"; +import { Readable } from "stream"; +/** + * The function that mixes in the utility functions to help consuming runtime-specific payload stream. + * + * @internal + */ +export declare const sdkStreamMixin: (stream: unknown) => SdkStream | SdkStream; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.browser.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.browser.d.ts new file mode 100644 index 0000000..25c8549 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.browser.d.ts @@ -0,0 +1,8 @@ +/** + * @param stream + * @returns stream split into two identical streams. + */ +export declare function splitStream(stream: ReadableStream | Blob): Promise<[ + ReadableStream, + ReadableStream +]>; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.d.ts new file mode 100644 index 0000000..e3e20ad --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/splitStream.d.ts @@ -0,0 +1,17 @@ +import { Readable } from "stream"; +/** + * @internal + * @param stream - to be split. + * @returns stream split into two identical streams. + */ +export declare function splitStream(stream: Readable): Promise<[ + Readable, + Readable +]>; +/** + * @internal + */ +export declare function splitStream(stream: ReadableStream): Promise<[ + ReadableStream, + ReadableStream +]>; diff --git a/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts new file mode 100644 index 0000000..bf2f8ee --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts @@ -0,0 +1,17 @@ +/** + * Alias prevents compiler from turning + * ReadableStream into ReadableStream, which is incompatible + * with the NodeJS.ReadableStream global type. + * + * @internal + */ +type ReadableStreamType = ReadableStream; +/** + * @internal + */ +export declare const isReadableStream: (stream: unknown) => stream is ReadableStreamType; +/** + * @internal + */ +export declare const isBlob: (blob: unknown) => blob is Blob; +export {}; diff --git a/bff/node_modules/@smithy/util-stream/package.json b/bff/node_modules/@smithy/util-stream/package.json new file mode 100644 index 0000000..1bc6515 --- /dev/null +++ b/bff/node_modules/@smithy/util-stream/package.json @@ -0,0 +1,99 @@ +{ + "name": "@smithy/util-stream", + "version": "4.5.21", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-stream", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "extract:docs": "api-extractor run --local", + "test": "yarn g:vitest run && yarn test:browser", + "test:integration": "yarn g:vitest run -c vitest.config.integ.mts", + "test:watch": "yarn g:vitest watch", + "test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts", + "test:browser": "yarn g:vitest run -c vitest.config.browser.mts", + "test:browser:watch": "yarn g:vitest watch -c vitest.config.browser.mts" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@smithy/util-test": "^0.2.8", + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/checksum/ChecksumStream": "./dist-es/checksum/ChecksumStream.browser", + "./dist-es/checksum/createChecksumStream": "./dist-es/checksum/createChecksumStream.browser", + "./dist-es/createBufferedReadable": "./dist-es/createBufferedReadableStream", + "./dist-es/getAwsChunkedEncodingStream": "./dist-es/getAwsChunkedEncodingStream.browser", + "./dist-es/headStream": "./dist-es/headStream.browser", + "./dist-es/sdk-stream-mixin": "./dist-es/sdk-stream-mixin.browser", + "./dist-es/splitStream": "./dist-es/splitStream.browser" + }, + "react-native": { + "./dist-es/checksum/createChecksumStream": "./dist-es/checksum/createChecksumStream.browser", + "./dist-es/checksum/ChecksumStream": "./dist-es/checksum/ChecksumStream.browser", + "./dist-es/getAwsChunkedEncodingStream": "./dist-es/getAwsChunkedEncodingStream.browser", + "./dist-es/sdk-stream-mixin": "./dist-es/sdk-stream-mixin.browser", + "./dist-es/headStream": "./dist-es/headStream.browser", + "./dist-es/splitStream": "./dist-es/splitStream.browser", + "./dist-es/createBufferedReadable": "./dist-es/createBufferedReadableStream", + "./dist-cjs/checksum/createChecksumStream": "./dist-cjs/checksum/createChecksumStream.browser", + "./dist-cjs/checksum/ChecksumStream": "./dist-cjs/checksum/ChecksumStream.browser", + "./dist-cjs/getAwsChunkedEncodingStream": "./dist-cjs/getAwsChunkedEncodingStream.browser", + "./dist-cjs/sdk-stream-mixin": "./dist-cjs/sdk-stream-mixin.browser", + "./dist-cjs/headStream": "./dist-cjs/headStream.browser", + "./dist-cjs/splitStream": "./dist-cjs/splitStream.browser", + "./dist-cjs/createBufferedReadable": "./dist-cjs/createBufferedReadableStream" + }, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-stream", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-stream" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-uri-escape/LICENSE b/bff/node_modules/@smithy/util-uri-escape/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-uri-escape/README.md b/bff/node_modules/@smithy/util-uri-escape/README.md new file mode 100644 index 0000000..22e939a --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/README.md @@ -0,0 +1,10 @@ +# @smithy/util-uri-escape + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-uri-escape/latest.svg)](https://www.npmjs.com/package/@smithy/util-uri-escape) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-uri-escape.svg)](https://www.npmjs.com/package/@smithy/util-uri-escape) + +> An internal package + +## Usage + +You probably shouldn't, at least directly. diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-cjs/index.js b/bff/node_modules/@smithy/util-uri-escape/dist-cjs/index.js new file mode 100644 index 0000000..11f942c --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-cjs/index.js @@ -0,0 +1,9 @@ +'use strict'; + +const escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode); +const hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`; + +const escapeUriPath = (uri) => uri.split("/").map(escapeUri).join("/"); + +exports.escapeUri = escapeUri; +exports.escapeUriPath = escapeUriPath; diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-es/escape-uri-path.js b/bff/node_modules/@smithy/util-uri-escape/dist-es/escape-uri-path.js new file mode 100644 index 0000000..81b3fe3 --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-es/escape-uri-path.js @@ -0,0 +1,2 @@ +import { escapeUri } from "./escape-uri"; +export const escapeUriPath = (uri) => uri.split("/").map(escapeUri).join("/"); diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js b/bff/node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js new file mode 100644 index 0000000..8990be1 --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js @@ -0,0 +1,2 @@ +export const escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode); +const hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`; diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-es/index.js b/bff/node_modules/@smithy/util-uri-escape/dist-es/index.js new file mode 100644 index 0000000..ed402e1 --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./escape-uri"; +export * from "./escape-uri-path"; diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-types/escape-uri-path.d.ts b/bff/node_modules/@smithy/util-uri-escape/dist-types/escape-uri-path.d.ts new file mode 100644 index 0000000..b547ff9 --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-types/escape-uri-path.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const escapeUriPath: (uri: string) => string; diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-types/escape-uri.d.ts b/bff/node_modules/@smithy/util-uri-escape/dist-types/escape-uri.d.ts new file mode 100644 index 0000000..3f14d2c --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-types/escape-uri.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const escapeUri: (uri: string) => string; diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-types/index.d.ts b/bff/node_modules/@smithy/util-uri-escape/dist-types/index.d.ts new file mode 100644 index 0000000..1913825 --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-types/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./escape-uri"; +/** + * @internal + */ +export * from "./escape-uri-path"; diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri-path.d.ts b/bff/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri-path.d.ts new file mode 100644 index 0000000..a7e19ca --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri-path.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const escapeUriPath: (uri: string) => string; diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri.d.ts b/bff/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri.d.ts new file mode 100644 index 0000000..13cc372 --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/escape-uri.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const escapeUri: (uri: string) => string; diff --git a/bff/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ad719fe --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/dist-types/ts3.4/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./escape-uri"; +/** + * @internal + */ +export * from "./escape-uri-path"; diff --git a/bff/node_modules/@smithy/util-uri-escape/package.json b/bff/node_modules/@smithy/util-uri-escape/package.json new file mode 100644 index 0000000..ac8dacf --- /dev/null +++ b/bff/node_modules/@smithy/util-uri-escape/package.json @@ -0,0 +1,60 @@ +{ + "name": "@smithy/util-uri-escape", + "version": "4.2.2", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-uri-escape", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-uri-escape", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-uri-escape" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-utf8/LICENSE b/bff/node_modules/@smithy/util-utf8/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-utf8/README.md b/bff/node_modules/@smithy/util-utf8/README.md new file mode 100644 index 0000000..fc5db6d --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/README.md @@ -0,0 +1,4 @@ +# @smithy/util-utf8 + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-utf8/latest.svg)](https://www.npmjs.com/package/@smithy/util-utf8) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-utf8.svg)](https://www.npmjs.com/package/@smithy/util-utf8) diff --git a/bff/node_modules/@smithy/util-utf8/dist-cjs/index.js b/bff/node_modules/@smithy/util-utf8/dist-cjs/index.js new file mode 100644 index 0000000..7f94510 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-cjs/index.js @@ -0,0 +1,32 @@ +'use strict'; + +var utilBufferFrom = require('@smithy/util-buffer-from'); + +const fromUtf8 = (input) => { + const buf = utilBufferFrom.fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}; + +const toUint8Array = (data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}; + +const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return utilBufferFrom.fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}; + +exports.fromUtf8 = fromUtf8; +exports.toUint8Array = toUint8Array; +exports.toUtf8 = toUtf8; diff --git a/bff/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js b/bff/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js new file mode 100644 index 0000000..7344190 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js @@ -0,0 +1 @@ +export const fromUtf8 = (input) => new TextEncoder().encode(input); diff --git a/bff/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js b/bff/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js new file mode 100644 index 0000000..6dc438b --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-es/fromUtf8.js @@ -0,0 +1,5 @@ +import { fromString } from "@smithy/util-buffer-from"; +export const fromUtf8 = (input) => { + const buf = fromString(input, "utf8"); + return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT); +}; diff --git a/bff/node_modules/@smithy/util-utf8/dist-es/index.js b/bff/node_modules/@smithy/util-utf8/dist-es/index.js new file mode 100644 index 0000000..00ba465 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-es/index.js @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js b/bff/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js new file mode 100644 index 0000000..2cd36f7 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js @@ -0,0 +1,10 @@ +import { fromUtf8 } from "./fromUtf8"; +export const toUint8Array = (data) => { + if (typeof data === "string") { + return fromUtf8(data); + } + if (ArrayBuffer.isView(data)) { + return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT); + } + return new Uint8Array(data); +}; diff --git a/bff/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js b/bff/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js new file mode 100644 index 0000000..c292127 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js @@ -0,0 +1,9 @@ +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return new TextDecoder("utf-8").decode(input); +}; diff --git a/bff/node_modules/@smithy/util-utf8/dist-es/toUtf8.js b/bff/node_modules/@smithy/util-utf8/dist-es/toUtf8.js new file mode 100644 index 0000000..7be8745 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-es/toUtf8.js @@ -0,0 +1,10 @@ +import { fromArrayBuffer } from "@smithy/util-buffer-from"; +export const toUtf8 = (input) => { + if (typeof input === "string") { + return input; + } + if (typeof input !== "object" || typeof input.byteOffset !== "number" || typeof input.byteLength !== "number") { + throw new Error("@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array."); + } + return fromArrayBuffer(input.buffer, input.byteOffset, input.byteLength).toString("utf8"); +}; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts new file mode 100644 index 0000000..dd91981 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts new file mode 100644 index 0000000..dd91981 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/index.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/index.d.ts new file mode 100644 index 0000000..00ba465 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts new file mode 100644 index 0000000..11b6342 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts new file mode 100644 index 0000000..8494acd --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts new file mode 100644 index 0000000..8494acd --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts new file mode 100644 index 0000000..39f3d6d --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.browser.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts new file mode 100644 index 0000000..39f3d6d --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/fromUtf8.d.ts @@ -0,0 +1 @@ +export declare const fromUtf8: (input: string) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ef9761d --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/index.d.ts @@ -0,0 +1,3 @@ +export * from "./fromUtf8"; +export * from "./toUint8Array"; +export * from "./toUtf8"; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts new file mode 100644 index 0000000..562fe10 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUint8Array.d.ts @@ -0,0 +1 @@ +export declare const toUint8Array: (data: string | ArrayBuffer | ArrayBufferView) => Uint8Array; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts new file mode 100644 index 0000000..33511ad --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.browser.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts new file mode 100644 index 0000000..33511ad --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/dist-types/ts3.4/toUtf8.d.ts @@ -0,0 +1,7 @@ +/** + * + * This does not convert non-utf8 strings to utf8, it only passes through strings if + * a string is received instead of a Uint8Array. + * + */ +export declare const toUtf8: (input: Uint8Array | string) => string; diff --git a/bff/node_modules/@smithy/util-utf8/package.json b/bff/node_modules/@smithy/util-utf8/package.json new file mode 100644 index 0000000..5dda012 --- /dev/null +++ b/bff/node_modules/@smithy/util-utf8/package.json @@ -0,0 +1,67 @@ +{ + "name": "@smithy/util-utf8", + "version": "4.2.2", + "description": "A UTF-8 string <-> UInt8Array converter", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-utf8", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "devDependencies": { + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "browser": { + "./dist-es/fromUtf8": "./dist-es/fromUtf8.browser", + "./dist-es/toUtf8": "./dist-es/toUtf8.browser" + }, + "react-native": {}, + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-utf8", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-utf8" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-waiter/LICENSE b/bff/node_modules/@smithy/util-waiter/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/util-waiter/README.md b/bff/node_modules/@smithy/util-waiter/README.md new file mode 100644 index 0000000..482df0b --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/README.md @@ -0,0 +1,17 @@ +# @smithy/util-waiter + +[![NPM version](https://img.shields.io/npm/v/@smithy/util-waiter/latest.svg)](https://www.npmjs.com/package/@smithy/util-waiter) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/util-waiter.svg)](https://www.npmjs.com/package/@smithy/util-waiter) + +### :warning: Internal API :warning: + +> This is an internal package. +> That means this is used as a dependency for other, public packages, but +> should not be taken directly as a dependency in your application's `package.json`. + +> If you are updating the version of this package, for example to bring in a +> bug-fix, you should do so by updating your application lockfile with +> e.g. `npm up @scope/package` or equivalent command in another +> package manager, rather than taking a direct dependency. + +--- diff --git a/bff/node_modules/@smithy/util-waiter/dist-cjs/index.js b/bff/node_modules/@smithy/util-waiter/dist-cjs/index.js new file mode 100644 index 0000000..fdc08f0 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-cjs/index.js @@ -0,0 +1,179 @@ +'use strict'; + +const getCircularReplacer = () => { + const seen = new WeakSet(); + return (key, value) => { + if (typeof value === "object" && value !== null) { + if (seen.has(value)) { + return "[Circular]"; + } + seen.add(value); + } + return value; + }; +}; + +const sleep = (seconds) => { + return new Promise((resolve) => setTimeout(resolve, seconds * 1000)); +}; + +const waiterServiceDefaults = { + minDelay: 2, + maxDelay: 120, +}; +exports.WaiterState = void 0; +(function (WaiterState) { + WaiterState["ABORTED"] = "ABORTED"; + WaiterState["FAILURE"] = "FAILURE"; + WaiterState["SUCCESS"] = "SUCCESS"; + WaiterState["RETRY"] = "RETRY"; + WaiterState["TIMEOUT"] = "TIMEOUT"; +})(exports.WaiterState || (exports.WaiterState = {})); +const checkExceptions = (result) => { + if (result.state === exports.WaiterState.ABORTED) { + const abortError = new Error(`${JSON.stringify({ + ...result, + reason: "Request was aborted", + }, getCircularReplacer())}`); + abortError.name = "AbortError"; + throw abortError; + } + else if (result.state === exports.WaiterState.TIMEOUT) { + const timeoutError = new Error(`${JSON.stringify({ + ...result, + reason: "Waiter has timed out", + }, getCircularReplacer())}`); + timeoutError.name = "TimeoutError"; + throw timeoutError; + } + else if (result.state !== exports.WaiterState.SUCCESS) { + throw new Error(`${JSON.stringify(result, getCircularReplacer())}`); + } + return result; +}; + +const exponentialBackoffWithJitter = (minDelay, maxDelay, attemptCeiling, attempt) => { + if (attempt > attemptCeiling) + return maxDelay; + const delay = minDelay * 2 ** (attempt - 1); + return randomInRange(minDelay, delay); +}; +const randomInRange = (min, max) => min + Math.random() * (max - min); +const runPolling = async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => { + const observedResponses = {}; + const { state, reason } = await acceptorChecks(client, input); + if (reason) { + const message = createMessageFromResponse(reason); + observedResponses[message] |= 0; + observedResponses[message] += 1; + } + if (state !== exports.WaiterState.RETRY) { + return { state, reason, observedResponses }; + } + let currentAttempt = 1; + const waitUntil = Date.now() + maxWaitTime * 1000; + const attemptCeiling = Math.log(maxDelay / minDelay) / Math.log(2) + 1; + while (true) { + if (abortController?.signal?.aborted || abortSignal?.aborted) { + const message = "AbortController signal aborted."; + observedResponses[message] |= 0; + observedResponses[message] += 1; + return { state: exports.WaiterState.ABORTED, observedResponses }; + } + const delay = exponentialBackoffWithJitter(minDelay, maxDelay, attemptCeiling, currentAttempt); + if (Date.now() + delay * 1000 > waitUntil) { + return { state: exports.WaiterState.TIMEOUT, observedResponses }; + } + await sleep(delay); + const { state, reason } = await acceptorChecks(client, input); + if (reason) { + const message = createMessageFromResponse(reason); + observedResponses[message] |= 0; + observedResponses[message] += 1; + } + if (state !== exports.WaiterState.RETRY) { + return { state, reason, observedResponses }; + } + currentAttempt += 1; + } +}; +const createMessageFromResponse = (reason) => { + if (reason?.$responseBodyText) { + return `Deserialization error for body: ${reason.$responseBodyText}`; + } + if (reason?.$metadata?.httpStatusCode) { + if (reason.$response || reason.message) { + return `${reason.$response?.statusCode ?? reason.$metadata.httpStatusCode ?? "Unknown"}: ${reason.message}`; + } + return `${reason.$metadata.httpStatusCode}: OK`; + } + return String(reason?.message ?? JSON.stringify(reason, getCircularReplacer()) ?? "Unknown"); +}; + +const validateWaiterOptions = (options) => { + if (options.maxWaitTime <= 0) { + throw new Error(`WaiterConfiguration.maxWaitTime must be greater than 0`); + } + else if (options.minDelay <= 0) { + throw new Error(`WaiterConfiguration.minDelay must be greater than 0`); + } + else if (options.maxDelay <= 0) { + throw new Error(`WaiterConfiguration.maxDelay must be greater than 0`); + } + else if (options.maxWaitTime <= options.minDelay) { + throw new Error(`WaiterConfiguration.maxWaitTime [${options.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`); + } + else if (options.maxDelay < options.minDelay) { + throw new Error(`WaiterConfiguration.maxDelay [${options.maxDelay}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`); + } +}; + +const abortTimeout = (abortSignal) => { + let onAbort; + const promise = new Promise((resolve) => { + onAbort = () => resolve({ state: exports.WaiterState.ABORTED }); + if (typeof abortSignal.addEventListener === "function") { + abortSignal.addEventListener("abort", onAbort); + } + else { + abortSignal.onabort = onAbort; + } + }); + return { + clearListener() { + if (typeof abortSignal.removeEventListener === "function") { + abortSignal.removeEventListener("abort", onAbort); + } + }, + aborted: promise, + }; +}; +const createWaiter = async (options, input, acceptorChecks) => { + const params = { + ...waiterServiceDefaults, + ...options, + }; + validateWaiterOptions(params); + const exitConditions = [runPolling(params, input, acceptorChecks)]; + const finalize = []; + if (options.abortSignal) { + const { aborted, clearListener } = abortTimeout(options.abortSignal); + finalize.push(clearListener); + exitConditions.push(aborted); + } + if (options.abortController?.signal) { + const { aborted, clearListener } = abortTimeout(options.abortController.signal); + finalize.push(clearListener); + exitConditions.push(aborted); + } + return Promise.race(exitConditions).then((result) => { + for (const fn of finalize) { + fn(); + } + return result; + }); +}; + +exports.checkExceptions = checkExceptions; +exports.createWaiter = createWaiter; +exports.waiterServiceDefaults = waiterServiceDefaults; diff --git a/bff/node_modules/@smithy/util-waiter/dist-es/circularReplacer.js b/bff/node_modules/@smithy/util-waiter/dist-es/circularReplacer.js new file mode 100644 index 0000000..c08fd60 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-es/circularReplacer.js @@ -0,0 +1,12 @@ +export const getCircularReplacer = () => { + const seen = new WeakSet(); + return (key, value) => { + if (typeof value === "object" && value !== null) { + if (seen.has(value)) { + return "[Circular]"; + } + seen.add(value); + } + return value; + }; +}; diff --git a/bff/node_modules/@smithy/util-waiter/dist-es/createWaiter.js b/bff/node_modules/@smithy/util-waiter/dist-es/createWaiter.js new file mode 100644 index 0000000..9db8058 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-es/createWaiter.js @@ -0,0 +1,48 @@ +import { runPolling } from "./poller"; +import { validateWaiterOptions } from "./utils"; +import { waiterServiceDefaults, WaiterState } from "./waiter"; +const abortTimeout = (abortSignal) => { + let onAbort; + const promise = new Promise((resolve) => { + onAbort = () => resolve({ state: WaiterState.ABORTED }); + if (typeof abortSignal.addEventListener === "function") { + abortSignal.addEventListener("abort", onAbort); + } + else { + abortSignal.onabort = onAbort; + } + }); + return { + clearListener() { + if (typeof abortSignal.removeEventListener === "function") { + abortSignal.removeEventListener("abort", onAbort); + } + }, + aborted: promise, + }; +}; +export const createWaiter = async (options, input, acceptorChecks) => { + const params = { + ...waiterServiceDefaults, + ...options, + }; + validateWaiterOptions(params); + const exitConditions = [runPolling(params, input, acceptorChecks)]; + const finalize = []; + if (options.abortSignal) { + const { aborted, clearListener } = abortTimeout(options.abortSignal); + finalize.push(clearListener); + exitConditions.push(aborted); + } + if (options.abortController?.signal) { + const { aborted, clearListener } = abortTimeout(options.abortController.signal); + finalize.push(clearListener); + exitConditions.push(aborted); + } + return Promise.race(exitConditions).then((result) => { + for (const fn of finalize) { + fn(); + } + return result; + }); +}; diff --git a/bff/node_modules/@smithy/util-waiter/dist-es/index.js b/bff/node_modules/@smithy/util-waiter/dist-es/index.js new file mode 100644 index 0000000..d77f139 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-es/index.js @@ -0,0 +1,2 @@ +export * from "./createWaiter"; +export * from "./waiter"; diff --git a/bff/node_modules/@smithy/util-waiter/dist-es/poller.js b/bff/node_modules/@smithy/util-waiter/dist-es/poller.js new file mode 100644 index 0000000..aceb77c --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-es/poller.js @@ -0,0 +1,60 @@ +import { getCircularReplacer } from "./circularReplacer"; +import { sleep } from "./utils/sleep"; +import { WaiterState } from "./waiter"; +const exponentialBackoffWithJitter = (minDelay, maxDelay, attemptCeiling, attempt) => { + if (attempt > attemptCeiling) + return maxDelay; + const delay = minDelay * 2 ** (attempt - 1); + return randomInRange(minDelay, delay); +}; +const randomInRange = (min, max) => min + Math.random() * (max - min); +export const runPolling = async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => { + const observedResponses = {}; + const { state, reason } = await acceptorChecks(client, input); + if (reason) { + const message = createMessageFromResponse(reason); + observedResponses[message] |= 0; + observedResponses[message] += 1; + } + if (state !== WaiterState.RETRY) { + return { state, reason, observedResponses }; + } + let currentAttempt = 1; + const waitUntil = Date.now() + maxWaitTime * 1000; + const attemptCeiling = Math.log(maxDelay / minDelay) / Math.log(2) + 1; + while (true) { + if (abortController?.signal?.aborted || abortSignal?.aborted) { + const message = "AbortController signal aborted."; + observedResponses[message] |= 0; + observedResponses[message] += 1; + return { state: WaiterState.ABORTED, observedResponses }; + } + const delay = exponentialBackoffWithJitter(minDelay, maxDelay, attemptCeiling, currentAttempt); + if (Date.now() + delay * 1000 > waitUntil) { + return { state: WaiterState.TIMEOUT, observedResponses }; + } + await sleep(delay); + const { state, reason } = await acceptorChecks(client, input); + if (reason) { + const message = createMessageFromResponse(reason); + observedResponses[message] |= 0; + observedResponses[message] += 1; + } + if (state !== WaiterState.RETRY) { + return { state, reason, observedResponses }; + } + currentAttempt += 1; + } +}; +const createMessageFromResponse = (reason) => { + if (reason?.$responseBodyText) { + return `Deserialization error for body: ${reason.$responseBodyText}`; + } + if (reason?.$metadata?.httpStatusCode) { + if (reason.$response || reason.message) { + return `${reason.$response?.statusCode ?? reason.$metadata.httpStatusCode ?? "Unknown"}: ${reason.message}`; + } + return `${reason.$metadata.httpStatusCode}: OK`; + } + return String(reason?.message ?? JSON.stringify(reason, getCircularReplacer()) ?? "Unknown"); +}; diff --git a/bff/node_modules/@smithy/util-waiter/dist-es/utils/index.js b/bff/node_modules/@smithy/util-waiter/dist-es/utils/index.js new file mode 100644 index 0000000..e15a156 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-es/utils/index.js @@ -0,0 +1,2 @@ +export * from "./sleep"; +export * from "./validate"; diff --git a/bff/node_modules/@smithy/util-waiter/dist-es/utils/sleep.js b/bff/node_modules/@smithy/util-waiter/dist-es/utils/sleep.js new file mode 100644 index 0000000..789205d --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-es/utils/sleep.js @@ -0,0 +1,3 @@ +export const sleep = (seconds) => { + return new Promise((resolve) => setTimeout(resolve, seconds * 1000)); +}; diff --git a/bff/node_modules/@smithy/util-waiter/dist-es/utils/validate.js b/bff/node_modules/@smithy/util-waiter/dist-es/utils/validate.js new file mode 100644 index 0000000..e094ea7 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-es/utils/validate.js @@ -0,0 +1,17 @@ +export const validateWaiterOptions = (options) => { + if (options.maxWaitTime <= 0) { + throw new Error(`WaiterConfiguration.maxWaitTime must be greater than 0`); + } + else if (options.minDelay <= 0) { + throw new Error(`WaiterConfiguration.minDelay must be greater than 0`); + } + else if (options.maxDelay <= 0) { + throw new Error(`WaiterConfiguration.maxDelay must be greater than 0`); + } + else if (options.maxWaitTime <= options.minDelay) { + throw new Error(`WaiterConfiguration.maxWaitTime [${options.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`); + } + else if (options.maxDelay < options.minDelay) { + throw new Error(`WaiterConfiguration.maxDelay [${options.maxDelay}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`); + } +}; diff --git a/bff/node_modules/@smithy/util-waiter/dist-es/waiter.js b/bff/node_modules/@smithy/util-waiter/dist-es/waiter.js new file mode 100644 index 0000000..672dfe7 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-es/waiter.js @@ -0,0 +1,35 @@ +import { getCircularReplacer } from "./circularReplacer"; +export const waiterServiceDefaults = { + minDelay: 2, + maxDelay: 120, +}; +export var WaiterState; +(function (WaiterState) { + WaiterState["ABORTED"] = "ABORTED"; + WaiterState["FAILURE"] = "FAILURE"; + WaiterState["SUCCESS"] = "SUCCESS"; + WaiterState["RETRY"] = "RETRY"; + WaiterState["TIMEOUT"] = "TIMEOUT"; +})(WaiterState || (WaiterState = {})); +export const checkExceptions = (result) => { + if (result.state === WaiterState.ABORTED) { + const abortError = new Error(`${JSON.stringify({ + ...result, + reason: "Request was aborted", + }, getCircularReplacer())}`); + abortError.name = "AbortError"; + throw abortError; + } + else if (result.state === WaiterState.TIMEOUT) { + const timeoutError = new Error(`${JSON.stringify({ + ...result, + reason: "Waiter has timed out", + }, getCircularReplacer())}`); + timeoutError.name = "TimeoutError"; + throw timeoutError; + } + else if (result.state !== WaiterState.SUCCESS) { + throw new Error(`${JSON.stringify(result, getCircularReplacer())}`); + } + return result; +}; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/circularReplacer.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/circularReplacer.d.ts new file mode 100644 index 0000000..b4e6d44 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/circularReplacer.d.ts @@ -0,0 +1,6 @@ +/** + * Helper for JSON stringification debug logging. + * + * @internal + */ +export declare const getCircularReplacer: () => (key: any, value: any) => any; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/createWaiter.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/createWaiter.d.ts new file mode 100644 index 0000000..1a31e48 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/createWaiter.d.ts @@ -0,0 +1,11 @@ +import type { WaiterOptions, WaiterResult } from "./waiter"; +/** + * Create a waiter promise that only resolves when: + * 1. Abort controller is signaled + * 2. Max wait time is reached + * 3. `acceptorChecks` succeeds, or fails + * Otherwise, it invokes `acceptorChecks` with exponential-backoff delay. + * + * @internal + */ +export declare const createWaiter: (options: WaiterOptions, input: Input, acceptorChecks: (client: Client, input: Input) => Promise) => Promise; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/index.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/index.d.ts new file mode 100644 index 0000000..d77f139 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./createWaiter"; +export * from "./waiter"; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/poller.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/poller.d.ts new file mode 100644 index 0000000..348a88b --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/poller.d.ts @@ -0,0 +1,10 @@ +import type { WaiterOptions, WaiterResult } from "./waiter"; +/** + * Function that runs polling as part of waiters. This will make one inital attempt and then + * subsequent attempts with an increasing delay. + * @param params - options passed to the waiter. + * @param client - AWS SDK Client + * @param input - client input + * @param acceptorChecks - function that checks the acceptor states on each poll. + */ +export declare const runPolling: ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }: WaiterOptions, input: Input, acceptorChecks: (client: Client, input: Input) => Promise) => Promise; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/circularReplacer.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/circularReplacer.d.ts new file mode 100644 index 0000000..02445b1 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/circularReplacer.d.ts @@ -0,0 +1,6 @@ +/** + * Helper for JSON stringification debug logging. + * + * @internal + */ +export declare const getCircularReplacer: () => (key: any, value: any) => any; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/createWaiter.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/createWaiter.d.ts new file mode 100644 index 0000000..f9b3242 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/createWaiter.d.ts @@ -0,0 +1,11 @@ +import { WaiterOptions, WaiterResult } from "./waiter"; +/** + * Create a waiter promise that only resolves when: + * 1. Abort controller is signaled + * 2. Max wait time is reached + * 3. `acceptorChecks` succeeds, or fails + * Otherwise, it invokes `acceptorChecks` with exponential-backoff delay. + * + * @internal + */ +export declare const createWaiter: (options: WaiterOptions, input: Input, acceptorChecks: (client: Client, input: Input) => Promise) => Promise; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..be143d5 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/index.d.ts @@ -0,0 +1,2 @@ +export * from "./createWaiter"; +export * from "./waiter"; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/poller.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/poller.d.ts new file mode 100644 index 0000000..1ca0fc3 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/poller.d.ts @@ -0,0 +1,10 @@ +import { WaiterOptions, WaiterResult } from "./waiter"; +/** + * Function that runs polling as part of waiters. This will make one inital attempt and then + * subsequent attempts with an increasing delay. + * @param params - options passed to the waiter. + * @param client - AWS SDK Client + * @param input - client input + * @param acceptorChecks - function that checks the acceptor states on each poll. + */ +export declare const runPolling: ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }: WaiterOptions, input: Input, acceptorChecks: (client: Client, input: Input) => Promise) => Promise; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/utils/index.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/utils/index.d.ts new file mode 100644 index 0000000..974384c --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/utils/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./sleep"; +/** + * @internal + */ +export * from "./validate"; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/utils/sleep.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/utils/sleep.d.ts new file mode 100644 index 0000000..f53553b --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/utils/sleep.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const sleep: (seconds: number) => Promise; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/utils/validate.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/utils/validate.d.ts new file mode 100644 index 0000000..73d79b0 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/utils/validate.d.ts @@ -0,0 +1,8 @@ +import { WaiterOptions } from "../waiter"; +/** + * @internal + * + * Validates that waiter options are passed correctly + * @param options - a waiter configuration object + */ +export declare const validateWaiterOptions: (options: WaiterOptions) => void; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/waiter.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/waiter.d.ts new file mode 100644 index 0000000..f685ce4 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/ts3.4/waiter.d.ts @@ -0,0 +1,49 @@ +import { WaiterConfiguration as WaiterConfiguration__ } from "@smithy/types"; +/** + * @internal + */ +export interface WaiterConfiguration extends WaiterConfiguration__ { +} +/** + * @internal + */ +export declare const waiterServiceDefaults: { + minDelay: number; + maxDelay: number; +}; +/** + * @internal + */ +export type WaiterOptions = WaiterConfiguration & Required, "minDelay" | "maxDelay">>; +/** + * @internal + */ +export declare enum WaiterState { + ABORTED = "ABORTED", + FAILURE = "FAILURE", + SUCCESS = "SUCCESS", + RETRY = "RETRY", + TIMEOUT = "TIMEOUT" +} +/** + * @internal + */ +export type WaiterResult = { + state: WaiterState; + /** + * (optional) Indicates a reason for why a waiter has reached its state. + */ + reason?: any; + /** + * Responses observed by the waiter during its polling, where the value + * is the count. + */ + observedResponses?: Record; +}; +/** + * @internal + * + * Handles and throws exceptions resulting from the waiterResult + * @param result - WaiterResult + */ +export declare const checkExceptions: (result: WaiterResult) => WaiterResult; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/utils/index.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/utils/index.d.ts new file mode 100644 index 0000000..b9a3205 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/utils/index.d.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./sleep"; +/** + * @internal + */ +export * from "./validate"; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/utils/sleep.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/utils/sleep.d.ts new file mode 100644 index 0000000..e5d9f73 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/utils/sleep.d.ts @@ -0,0 +1,4 @@ +/** + * @internal + */ +export declare const sleep: (seconds: number) => Promise; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/utils/validate.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/utils/validate.d.ts new file mode 100644 index 0000000..c2c9b81 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/utils/validate.d.ts @@ -0,0 +1,8 @@ +import type { WaiterOptions } from "../waiter"; +/** + * @internal + * + * Validates that waiter options are passed correctly + * @param options - a waiter configuration object + */ +export declare const validateWaiterOptions: (options: WaiterOptions) => void; diff --git a/bff/node_modules/@smithy/util-waiter/dist-types/waiter.d.ts b/bff/node_modules/@smithy/util-waiter/dist-types/waiter.d.ts new file mode 100644 index 0000000..26b85e6 --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/dist-types/waiter.d.ts @@ -0,0 +1,49 @@ +import type { WaiterConfiguration as WaiterConfiguration__ } from "@smithy/types"; +/** + * @internal + */ +export interface WaiterConfiguration extends WaiterConfiguration__ { +} +/** + * @internal + */ +export declare const waiterServiceDefaults: { + minDelay: number; + maxDelay: number; +}; +/** + * @internal + */ +export type WaiterOptions = WaiterConfiguration & Required, "minDelay" | "maxDelay">>; +/** + * @internal + */ +export declare enum WaiterState { + ABORTED = "ABORTED", + FAILURE = "FAILURE", + SUCCESS = "SUCCESS", + RETRY = "RETRY", + TIMEOUT = "TIMEOUT" +} +/** + * @internal + */ +export type WaiterResult = { + state: WaiterState; + /** + * (optional) Indicates a reason for why a waiter has reached its state. + */ + reason?: any; + /** + * Responses observed by the waiter during its polling, where the value + * is the count. + */ + observedResponses?: Record; +}; +/** + * @internal + * + * Handles and throws exceptions resulting from the waiterResult + * @param result - WaiterResult + */ +export declare const checkExceptions: (result: WaiterResult) => WaiterResult; diff --git a/bff/node_modules/@smithy/util-waiter/package.json b/bff/node_modules/@smithy/util-waiter/package.json new file mode 100644 index 0000000..aa2adeb --- /dev/null +++ b/bff/node_modules/@smithy/util-waiter/package.json @@ -0,0 +1,63 @@ +{ + "name": "@smithy/util-waiter", + "version": "4.2.14", + "description": "Shared utilities for client waiters for the AWS SDK", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline util-waiter", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/util-waiter", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/util-waiter" + }, + "devDependencies": { + "@smithy/abort-controller": "^4.2.12", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/@smithy/uuid/LICENSE b/bff/node_modules/@smithy/uuid/LICENSE new file mode 100644 index 0000000..7b6491b --- /dev/null +++ b/bff/node_modules/@smithy/uuid/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/bff/node_modules/@smithy/uuid/README.md b/bff/node_modules/@smithy/uuid/README.md new file mode 100644 index 0000000..3e085df --- /dev/null +++ b/bff/node_modules/@smithy/uuid/README.md @@ -0,0 +1,10 @@ +# @smithy/uuid + +[![NPM version](https://img.shields.io/npm/v/@smithy/uuid/latest.svg)](https://www.npmjs.com/package/@smithy/uuid) +[![NPM downloads](https://img.shields.io/npm/dm/@smithy/uuid.svg)](https://www.npmjs.com/package/@smithy/uuid) + +> An internal package + +## Usage + +This is an internal `@smithy` package. You should not install it as a direct dependency in your applications. diff --git a/bff/node_modules/@smithy/uuid/dist-cjs/index.js b/bff/node_modules/@smithy/uuid/dist-cjs/index.js new file mode 100644 index 0000000..e9399c9 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-cjs/index.js @@ -0,0 +1,36 @@ +'use strict'; + +var randomUUID = require('./randomUUID'); + +const decimalToHex = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0")); +const v4 = () => { + if (randomUUID.randomUUID) { + return randomUUID.randomUUID(); + } + const rnds = new Uint8Array(16); + crypto.getRandomValues(rnds); + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + return (decimalToHex[rnds[0]] + + decimalToHex[rnds[1]] + + decimalToHex[rnds[2]] + + decimalToHex[rnds[3]] + + "-" + + decimalToHex[rnds[4]] + + decimalToHex[rnds[5]] + + "-" + + decimalToHex[rnds[6]] + + decimalToHex[rnds[7]] + + "-" + + decimalToHex[rnds[8]] + + decimalToHex[rnds[9]] + + "-" + + decimalToHex[rnds[10]] + + decimalToHex[rnds[11]] + + decimalToHex[rnds[12]] + + decimalToHex[rnds[13]] + + decimalToHex[rnds[14]] + + decimalToHex[rnds[15]]); +}; + +exports.v4 = v4; diff --git a/bff/node_modules/@smithy/uuid/dist-cjs/randomUUID.js b/bff/node_modules/@smithy/uuid/dist-cjs/randomUUID.js new file mode 100644 index 0000000..a1a9723 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-cjs/randomUUID.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.randomUUID = void 0; +const tslib_1 = require("tslib"); +const crypto_1 = tslib_1.__importDefault(require("crypto")); +exports.randomUUID = crypto_1.default.randomUUID.bind(crypto_1.default); diff --git a/bff/node_modules/@smithy/uuid/dist-cjs/randomUUID.native.js b/bff/node_modules/@smithy/uuid/dist-cjs/randomUUID.native.js new file mode 100644 index 0000000..e95fb3e --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-cjs/randomUUID.native.js @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.randomUUID = void 0; +exports.randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); diff --git a/bff/node_modules/@smithy/uuid/dist-es/index.js b/bff/node_modules/@smithy/uuid/dist-es/index.js new file mode 100644 index 0000000..7d67378 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-es/index.js @@ -0,0 +1 @@ +export * from "./v4"; diff --git a/bff/node_modules/@smithy/uuid/dist-es/randomUUID.browser.js b/bff/node_modules/@smithy/uuid/dist-es/randomUUID.browser.js new file mode 100644 index 0000000..c2760b4 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-es/randomUUID.browser.js @@ -0,0 +1 @@ +export const randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); diff --git a/bff/node_modules/@smithy/uuid/dist-es/randomUUID.js b/bff/node_modules/@smithy/uuid/dist-es/randomUUID.js new file mode 100644 index 0000000..f97ca18 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-es/randomUUID.js @@ -0,0 +1,2 @@ +import crypto from "crypto"; +export const randomUUID = crypto.randomUUID.bind(crypto); diff --git a/bff/node_modules/@smithy/uuid/dist-es/randomUUID.native.js b/bff/node_modules/@smithy/uuid/dist-es/randomUUID.native.js new file mode 100644 index 0000000..c2760b4 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-es/randomUUID.native.js @@ -0,0 +1 @@ +export const randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); diff --git a/bff/node_modules/@smithy/uuid/dist-es/v4.js b/bff/node_modules/@smithy/uuid/dist-es/v4.js new file mode 100644 index 0000000..9efe193 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-es/v4.js @@ -0,0 +1,31 @@ +import { randomUUID } from "./randomUUID"; +const decimalToHex = Array.from({ length: 256 }, (_, i) => i.toString(16).padStart(2, "0")); +export const v4 = () => { + if (randomUUID) { + return randomUUID(); + } + const rnds = new Uint8Array(16); + crypto.getRandomValues(rnds); + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + return (decimalToHex[rnds[0]] + + decimalToHex[rnds[1]] + + decimalToHex[rnds[2]] + + decimalToHex[rnds[3]] + + "-" + + decimalToHex[rnds[4]] + + decimalToHex[rnds[5]] + + "-" + + decimalToHex[rnds[6]] + + decimalToHex[rnds[7]] + + "-" + + decimalToHex[rnds[8]] + + decimalToHex[rnds[9]] + + "-" + + decimalToHex[rnds[10]] + + decimalToHex[rnds[11]] + + decimalToHex[rnds[12]] + + decimalToHex[rnds[13]] + + decimalToHex[rnds[14]] + + decimalToHex[rnds[15]]); +}; diff --git a/bff/node_modules/@smithy/uuid/dist-types/index.d.ts b/bff/node_modules/@smithy/uuid/dist-types/index.d.ts new file mode 100644 index 0000000..7d67378 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/index.d.ts @@ -0,0 +1 @@ +export * from "./v4"; diff --git a/bff/node_modules/@smithy/uuid/dist-types/randomUUID.browser.d.ts b/bff/node_modules/@smithy/uuid/dist-types/randomUUID.browser.d.ts new file mode 100644 index 0000000..1092111 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/randomUUID.browser.d.ts @@ -0,0 +1 @@ +export declare const randomUUID: false | (() => `${string}-${string}-${string}-${string}-${string}`); diff --git a/bff/node_modules/@smithy/uuid/dist-types/randomUUID.d.ts b/bff/node_modules/@smithy/uuid/dist-types/randomUUID.d.ts new file mode 100644 index 0000000..43671f8 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/randomUUID.d.ts @@ -0,0 +1,2 @@ +import crypto from "crypto"; +export declare const randomUUID: typeof crypto.randomUUID; diff --git a/bff/node_modules/@smithy/uuid/dist-types/randomUUID.native.d.ts b/bff/node_modules/@smithy/uuid/dist-types/randomUUID.native.d.ts new file mode 100644 index 0000000..1092111 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/randomUUID.native.d.ts @@ -0,0 +1 @@ +export declare const randomUUID: false | (() => `${string}-${string}-${string}-${string}-${string}`); diff --git a/bff/node_modules/@smithy/uuid/dist-types/ts3.4/index.d.ts b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/index.d.ts new file mode 100644 index 0000000..ff97d20 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/index.d.ts @@ -0,0 +1 @@ +export * from "./v4"; diff --git a/bff/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.browser.d.ts b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.browser.d.ts new file mode 100644 index 0000000..a95955f --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.browser.d.ts @@ -0,0 +1 @@ +export declare const randomUUID: false | (() => `${string}-${string}-${string}-${string}-${string}`); diff --git a/bff/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.d.ts b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.d.ts new file mode 100644 index 0000000..9c7cb7c --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.d.ts @@ -0,0 +1,2 @@ +import crypto from "crypto"; +export declare const randomUUID: typeof crypto.randomUUID; diff --git a/bff/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.native.d.ts b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.native.d.ts new file mode 100644 index 0000000..a95955f --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/randomUUID.native.d.ts @@ -0,0 +1 @@ +export declare const randomUUID: false | (() => `${string}-${string}-${string}-${string}-${string}`); diff --git a/bff/node_modules/@smithy/uuid/dist-types/ts3.4/v4.d.ts b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/v4.d.ts new file mode 100644 index 0000000..1248445 --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/ts3.4/v4.d.ts @@ -0,0 +1,19 @@ +/** + * Generates a RFC4122 version 4 UUID + * + * This function generates a random UUID using one of two methods: + * 1. The native randomUUID() function if available + * 2. A fallback implementation using crypto.getRandomValues() + * + * The fallback implementation: + * - Generates 16 random bytes using crypto.getRandomValues() + * - Sets the version bits to indicate version 4 + * - Sets the variant bits to indicate RFC4122 + * - Formats the bytes as a UUID string with dashes + * + * @returns A version 4 UUID string in the format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx + * where x is any hexadecimal digit and y is one of 8, 9, a, or b. + * + * @internal + */ +export declare const v4: () => string; diff --git a/bff/node_modules/@smithy/uuid/dist-types/v4.d.ts b/bff/node_modules/@smithy/uuid/dist-types/v4.d.ts new file mode 100644 index 0000000..bebf33d --- /dev/null +++ b/bff/node_modules/@smithy/uuid/dist-types/v4.d.ts @@ -0,0 +1,19 @@ +/** + * Generates a RFC4122 version 4 UUID + * + * This function generates a random UUID using one of two methods: + * 1. The native randomUUID() function if available + * 2. A fallback implementation using crypto.getRandomValues() + * + * The fallback implementation: + * - Generates 16 random bytes using crypto.getRandomValues() + * - Sets the version bits to indicate version 4 + * - Sets the variant bits to indicate RFC4122 + * - Formats the bytes as a UUID string with dashes + * + * @returns A version 4 UUID string in the format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx + * where x is any hexadecimal digit and y is one of 8, 9, a, or b. + * + * @internal + */ +export declare const v4: () => string; diff --git a/bff/node_modules/@smithy/uuid/package.json b/bff/node_modules/@smithy/uuid/package.json new file mode 100644 index 0000000..60ab9dc --- /dev/null +++ b/bff/node_modules/@smithy/uuid/package.json @@ -0,0 +1,66 @@ +{ + "name": "@smithy/uuid", + "version": "1.1.2", + "description": "Polyfill for generating UUID v4", + "dependencies": { + "tslib": "^2.6.2" + }, + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types && yarn build:types:downlevel'", + "build:cjs": "node ../../scripts/inline uuid", + "build:es": "yarn g:tsc -p tsconfig.es.json", + "build:types": "yarn g:tsc -p tsconfig.types.json", + "build:types:downlevel": "premove dist-types/ts3.4 && downlevel-dts dist-types dist-types/ts3.4", + "stage-release": "premove .release && yarn pack && mkdir ./.release && tar zxvf ./package.tgz --directory ./.release && rm ./package.tgz", + "clean": "premove dist-cjs dist-es dist-types tsconfig.cjs.tsbuildinfo tsconfig.es.tsbuildinfo tsconfig.types.tsbuildinfo", + "lint": "eslint -c ../../.eslintrc.js \"src/**/*.ts\"", + "format": "prettier --config ../../prettier.config.js --ignore-path ../../.prettierignore --write \"**/*.{ts,md,json}\"", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "sideEffects": false, + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.5": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/smithy-lang/smithy-typescript/tree/main/packages/uuid", + "repository": { + "type": "git", + "url": "https://github.com/smithy-lang/smithy-typescript.git", + "directory": "packages/uuid" + }, + "browser": { + "./dist-es/randomUUID": "./dist-es/randomUUID.browser" + }, + "react-native": {}, + "devDependencies": { + "@types/node": "^18.11.9", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "premove": "4.0.0", + "typedoc": "0.23.23" + }, + "typedoc": { + "entryPoint": "src/index.ts" + }, + "publishConfig": { + "directory": ".release/package" + } +} \ No newline at end of file diff --git a/bff/node_modules/accepts/HISTORY.md b/bff/node_modules/accepts/HISTORY.md new file mode 100644 index 0000000..627a81d --- /dev/null +++ b/bff/node_modules/accepts/HISTORY.md @@ -0,0 +1,250 @@ +2.0.0 / 2024-08-31 +================== + + * Drop node <18 support + * deps: mime-types@^3.0.0 + * deps: negotiator@^1.0.0 + +1.3.8 / 2022-02-02 +================== + + * deps: mime-types@~2.1.34 + - deps: mime-db@~1.51.0 + * deps: negotiator@0.6.3 + +1.3.7 / 2019-04-29 +================== + + * deps: negotiator@0.6.2 + - Fix sorting charset, encoding, and language with extra parameters + +1.3.6 / 2019-04-28 +================== + + * deps: mime-types@~2.1.24 + - deps: mime-db@~1.40.0 + +1.3.5 / 2018-02-28 +================== + + * deps: mime-types@~2.1.18 + - deps: mime-db@~1.33.0 + +1.3.4 / 2017-08-22 +================== + + * deps: mime-types@~2.1.16 + - deps: mime-db@~1.29.0 + +1.3.3 / 2016-05-02 +================== + + * deps: mime-types@~2.1.11 + - deps: mime-db@~1.23.0 + * deps: negotiator@0.6.1 + - perf: improve `Accept` parsing speed + - perf: improve `Accept-Charset` parsing speed + - perf: improve `Accept-Encoding` parsing speed + - perf: improve `Accept-Language` parsing speed + +1.3.2 / 2016-03-08 +================== + + * deps: mime-types@~2.1.10 + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + - deps: mime-db@~1.22.0 + +1.3.1 / 2016-01-19 +================== + + * deps: mime-types@~2.1.9 + - deps: mime-db@~1.21.0 + +1.3.0 / 2015-09-29 +================== + + * deps: mime-types@~2.1.7 + - deps: mime-db@~1.19.0 + * deps: negotiator@0.6.0 + - Fix including type extensions in parameters in `Accept` parsing + - Fix parsing `Accept` parameters with quoted equals + - Fix parsing `Accept` parameters with quoted semicolons + - Lazy-load modules from main entry point + - perf: delay type concatenation until needed + - perf: enable strict mode + - perf: hoist regular expressions + - perf: remove closures getting spec properties + - perf: remove a closure from media type parsing + - perf: remove property delete from media type parsing + +1.2.13 / 2015-09-06 +=================== + + * deps: mime-types@~2.1.6 + - deps: mime-db@~1.18.0 + +1.2.12 / 2015-07-30 +=================== + + * deps: mime-types@~2.1.4 + - deps: mime-db@~1.16.0 + +1.2.11 / 2015-07-16 +=================== + + * deps: mime-types@~2.1.3 + - deps: mime-db@~1.15.0 + +1.2.10 / 2015-07-01 +=================== + + * deps: mime-types@~2.1.2 + - deps: mime-db@~1.14.0 + +1.2.9 / 2015-06-08 +================== + + * deps: mime-types@~2.1.1 + - perf: fix deopt during mapping + +1.2.8 / 2015-06-07 +================== + + * deps: mime-types@~2.1.0 + - deps: mime-db@~1.13.0 + * perf: avoid argument reassignment & argument slice + * perf: avoid negotiator recursive construction + * perf: enable strict mode + * perf: remove unnecessary bitwise operator + +1.2.7 / 2015-05-10 +================== + + * deps: negotiator@0.5.3 + - Fix media type parameter matching to be case-insensitive + +1.2.6 / 2015-05-07 +================== + + * deps: mime-types@~2.0.11 + - deps: mime-db@~1.9.1 + * deps: negotiator@0.5.2 + - Fix comparing media types with quoted values + - Fix splitting media types with quoted commas + +1.2.5 / 2015-03-13 +================== + + * deps: mime-types@~2.0.10 + - deps: mime-db@~1.8.0 + +1.2.4 / 2015-02-14 +================== + + * Support Node.js 0.6 + * deps: mime-types@~2.0.9 + - deps: mime-db@~1.7.0 + * deps: negotiator@0.5.1 + - Fix preference sorting to be stable for long acceptable lists + +1.2.3 / 2015-01-31 +================== + + * deps: mime-types@~2.0.8 + - deps: mime-db@~1.6.0 + +1.2.2 / 2014-12-30 +================== + + * deps: mime-types@~2.0.7 + - deps: mime-db@~1.5.0 + +1.2.1 / 2014-12-30 +================== + + * deps: mime-types@~2.0.5 + - deps: mime-db@~1.3.1 + +1.2.0 / 2014-12-19 +================== + + * deps: negotiator@0.5.0 + - Fix list return order when large accepted list + - Fix missing identity encoding when q=0 exists + - Remove dynamic building of Negotiator class + +1.1.4 / 2014-12-10 +================== + + * deps: mime-types@~2.0.4 + - deps: mime-db@~1.3.0 + +1.1.3 / 2014-11-09 +================== + + * deps: mime-types@~2.0.3 + - deps: mime-db@~1.2.0 + +1.1.2 / 2014-10-14 +================== + + * deps: negotiator@0.4.9 + - Fix error when media type has invalid parameter + +1.1.1 / 2014-09-28 +================== + + * deps: mime-types@~2.0.2 + - deps: mime-db@~1.1.0 + * deps: negotiator@0.4.8 + - Fix all negotiations to be case-insensitive + - Stable sort preferences of same quality according to client order + +1.1.0 / 2014-09-02 +================== + + * update `mime-types` + +1.0.7 / 2014-07-04 +================== + + * Fix wrong type returned from `type` when match after unknown extension + +1.0.6 / 2014-06-24 +================== + + * deps: negotiator@0.4.7 + +1.0.5 / 2014-06-20 +================== + + * fix crash when unknown extension given + +1.0.4 / 2014-06-19 +================== + + * use `mime-types` + +1.0.3 / 2014-06-11 +================== + + * deps: negotiator@0.4.6 + - Order by specificity when quality is the same + +1.0.2 / 2014-05-29 +================== + + * Fix interpretation when header not in request + * deps: pin negotiator@0.4.5 + +1.0.1 / 2014-01-18 +================== + + * Identity encoding isn't always acceptable + * deps: negotiator@~0.4.0 + +1.0.0 / 2013-12-27 +================== + + * Genesis diff --git a/bff/node_modules/accepts/LICENSE b/bff/node_modules/accepts/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/bff/node_modules/accepts/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/accepts/README.md b/bff/node_modules/accepts/README.md new file mode 100644 index 0000000..f3f10c4 --- /dev/null +++ b/bff/node_modules/accepts/README.md @@ -0,0 +1,140 @@ +# accepts + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). +Extracted from [koa](https://www.npmjs.com/package/koa) for general use. + +In addition to negotiator, it allows: + +- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` + as well as `('text/html', 'application/json')`. +- Allows type shorthands such as `json`. +- Returns `false` when no types match +- Treats non-existent headers as `*` + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install accepts +``` + +## API + +```js +var accepts = require('accepts') +``` + +### accepts(req) + +Create a new `Accepts` object for the given `req`. + +#### .charset(charsets) + +Return the first accepted charset. If nothing in `charsets` is accepted, +then `false` is returned. + +#### .charsets() + +Return the charsets that the request accepts, in the order of the client's +preference (most preferred first). + +#### .encoding(encodings) + +Return the first accepted encoding. If nothing in `encodings` is accepted, +then `false` is returned. + +#### .encodings() + +Return the encodings that the request accepts, in the order of the client's +preference (most preferred first). + +#### .language(languages) + +Return the first accepted language. If nothing in `languages` is accepted, +then `false` is returned. + +#### .languages() + +Return the languages that the request accepts, in the order of the client's +preference (most preferred first). + +#### .type(types) + +Return the first accepted type (and it is returned as the same text as what +appears in the `types` array). If nothing in `types` is accepted, then `false` +is returned. + +The `types` array can contain full MIME types or file extensions. Any value +that is not a full MIME type is passed to `require('mime-types').lookup`. + +#### .types() + +Return the types that the request accepts, in the order of the client's +preference (most preferred first). + +## Examples + +### Simple type negotiation + +This simple example shows how to use `accepts` to return a different typed +respond body based on what the client wants to accept. The server lists it's +preferences in order and will get back the best match between the client and +server. + +```js +var accepts = require('accepts') +var http = require('http') + +function app (req, res) { + var accept = accepts(req) + + // the order of this list is significant; should be server preferred order + switch (accept.type(['json', 'html'])) { + case 'json': + res.setHeader('Content-Type', 'application/json') + res.write('{"hello":"world!"}') + break + case 'html': + res.setHeader('Content-Type', 'text/html') + res.write('hello, world!') + break + default: + // the fallback is text/plain, so no need to specify it above + res.setHeader('Content-Type', 'text/plain') + res.write('hello, world!') + break + } + + res.end() +} + +http.createServer(app).listen(3000) +``` + +You can test this out with the cURL program: +```sh +curl -I -H'Accept: text/html' http://localhost:3000/ +``` + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master +[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master +[github-actions-ci-image]: https://badgen.net/github/checks/jshttp/accepts/master?label=ci +[github-actions-ci-url]: https://github.com/jshttp/accepts/actions/workflows/ci.yml +[node-version-image]: https://badgen.net/npm/node/accepts +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/accepts +[npm-url]: https://npmjs.org/package/accepts +[npm-version-image]: https://badgen.net/npm/v/accepts diff --git a/bff/node_modules/accepts/index.js b/bff/node_modules/accepts/index.js new file mode 100644 index 0000000..4f2840c --- /dev/null +++ b/bff/node_modules/accepts/index.js @@ -0,0 +1,238 @@ +/*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var Negotiator = require('negotiator') +var mime = require('mime-types') + +/** + * Module exports. + * @public + */ + +module.exports = Accepts + +/** + * Create a new Accepts object for the given req. + * + * @param {object} req + * @public + */ + +function Accepts (req) { + if (!(this instanceof Accepts)) { + return new Accepts(req) + } + + this.headers = req.headers + this.negotiator = new Negotiator(req) +} + +/** + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json" or an array `["json", "html", "text/plain"]`. When a list + * or array is given the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * this.types('html'); + * // => "html" + * + * // Accept: text/*, application/json + * this.types('html'); + * // => "html" + * this.types('text/html'); + * // => "text/html" + * this.types('json', 'text'); + * // => "json" + * this.types('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * this.types('image/png'); + * this.types('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * this.types(['html', 'json']); + * this.types('html', 'json'); + * // => "json" + * + * @param {String|Array} types... + * @return {String|Array|Boolean} + * @public + */ + +Accepts.prototype.type = +Accepts.prototype.types = function (types_) { + var types = types_ + + // support flattened arguments + if (types && !Array.isArray(types)) { + types = new Array(arguments.length) + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i] + } + } + + // no types, return all requested types + if (!types || types.length === 0) { + return this.negotiator.mediaTypes() + } + + // no accept header, return first given type + if (!this.headers.accept) { + return types[0] + } + + var mimes = types.map(extToMime) + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) + var first = accepts[0] + + return first + ? types[mimes.indexOf(first)] + : false +} + +/** + * Return accepted encodings or best fit based on `encodings`. + * + * Given `Accept-Encoding: gzip, deflate` + * an array sorted by quality is returned: + * + * ['gzip', 'deflate'] + * + * @param {String|Array} encodings... + * @return {String|Array} + * @public + */ + +Accepts.prototype.encoding = +Accepts.prototype.encodings = function (encodings_) { + var encodings = encodings_ + + // support flattened arguments + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length) + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i] + } + } + + // no encodings, return all requested encodings + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings() + } + + return this.negotiator.encodings(encodings)[0] || false +} + +/** + * Return accepted charsets or best fit based on `charsets`. + * + * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` + * an array sorted by quality is returned: + * + * ['utf-8', 'utf-7', 'iso-8859-1'] + * + * @param {String|Array} charsets... + * @return {String|Array} + * @public + */ + +Accepts.prototype.charset = +Accepts.prototype.charsets = function (charsets_) { + var charsets = charsets_ + + // support flattened arguments + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length) + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i] + } + } + + // no charsets, return all requested charsets + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets() + } + + return this.negotiator.charsets(charsets)[0] || false +} + +/** + * Return accepted languages or best fit based on `langs`. + * + * Given `Accept-Language: en;q=0.8, es, pt` + * an array sorted by quality is returned: + * + * ['es', 'pt', 'en'] + * + * @param {String|Array} langs... + * @return {Array|String} + * @public + */ + +Accepts.prototype.lang = +Accepts.prototype.langs = +Accepts.prototype.language = +Accepts.prototype.languages = function (languages_) { + var languages = languages_ + + // support flattened arguments + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length) + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i] + } + } + + // no languages, return all requested languages + if (!languages || languages.length === 0) { + return this.negotiator.languages() + } + + return this.negotiator.languages(languages)[0] || false +} + +/** + * Convert extnames to mime. + * + * @param {String} type + * @return {String} + * @private + */ + +function extToMime (type) { + return type.indexOf('/') === -1 + ? mime.lookup(type) + : type +} + +/** + * Check if mime is valid. + * + * @param {String} type + * @return {Boolean} + * @private + */ + +function validMime (type) { + return typeof type === 'string' +} diff --git a/bff/node_modules/accepts/package.json b/bff/node_modules/accepts/package.json new file mode 100644 index 0000000..b35b262 --- /dev/null +++ b/bff/node_modules/accepts/package.json @@ -0,0 +1,47 @@ +{ + "name": "accepts", + "description": "Higher-level content negotiation", + "version": "2.0.0", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "repository": "jshttp/accepts", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "devDependencies": { + "deep-equal": "1.0.1", + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "4.3.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.0", + "nyc": "15.1.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + }, + "keywords": [ + "content", + "negotiation", + "accept", + "accepts" + ] +} diff --git a/bff/node_modules/append-field/.npmignore b/bff/node_modules/append-field/.npmignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/bff/node_modules/append-field/.npmignore @@ -0,0 +1 @@ +node_modules/ diff --git a/bff/node_modules/append-field/LICENSE b/bff/node_modules/append-field/LICENSE new file mode 100644 index 0000000..14b1f89 --- /dev/null +++ b/bff/node_modules/append-field/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Linus Unnebäck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/append-field/README.md b/bff/node_modules/append-field/README.md new file mode 100644 index 0000000..62b901b --- /dev/null +++ b/bff/node_modules/append-field/README.md @@ -0,0 +1,44 @@ +# `append-field` + +A [W3C HTML JSON forms spec](http://www.w3.org/TR/html-json-forms/) compliant +field appender (for lack of a better name). Useful for people implementing +`application/x-www-form-urlencoded` and `multipart/form-data` parsers. + +It works best on objects created with `Object.create(null)`. Otherwise it might +conflict with variables from the prototype (e.g. `hasOwnProperty`). + +## Installation + +```sh +npm install --save append-field +``` + +## Usage + +```javascript +var appendField = require('append-field') +var obj = Object.create(null) + +appendField(obj, 'pets[0][species]', 'Dahut') +appendField(obj, 'pets[0][name]', 'Hypatia') +appendField(obj, 'pets[1][species]', 'Felis Stultus') +appendField(obj, 'pets[1][name]', 'Billie') + +console.log(obj) +``` + +```text +{ pets: + [ { species: 'Dahut', name: 'Hypatia' }, + { species: 'Felis Stultus', name: 'Billie' } ] } +``` + +## API + +### `appendField(store, key, value)` + +Adds the field named `key` with the value `value` to the object `store`. + +## License + +MIT diff --git a/bff/node_modules/append-field/index.js b/bff/node_modules/append-field/index.js new file mode 100644 index 0000000..fc5acc8 --- /dev/null +++ b/bff/node_modules/append-field/index.js @@ -0,0 +1,12 @@ +var parsePath = require('./lib/parse-path') +var setValue = require('./lib/set-value') + +function appendField (store, key, value) { + var steps = parsePath(key) + + steps.reduce(function (context, step) { + return setValue(context, step, context[step.key], value) + }, store) +} + +module.exports = appendField diff --git a/bff/node_modules/append-field/lib/parse-path.js b/bff/node_modules/append-field/lib/parse-path.js new file mode 100644 index 0000000..31d6179 --- /dev/null +++ b/bff/node_modules/append-field/lib/parse-path.js @@ -0,0 +1,53 @@ +var reFirstKey = /^[^\[]*/ +var reDigitPath = /^\[(\d+)\]/ +var reNormalPath = /^\[([^\]]+)\]/ + +function parsePath (key) { + function failure () { + return [{ type: 'object', key: key, last: true }] + } + + var firstKey = reFirstKey.exec(key)[0] + if (!firstKey) return failure() + + var len = key.length + var pos = firstKey.length + var tail = { type: 'object', key: firstKey } + var steps = [tail] + + while (pos < len) { + var m + + if (key[pos] === '[' && key[pos + 1] === ']') { + pos += 2 + tail.append = true + if (pos !== len) return failure() + continue + } + + m = reDigitPath.exec(key.substring(pos)) + if (m !== null) { + pos += m[0].length + tail.nextType = 'array' + tail = { type: 'array', key: parseInt(m[1], 10) } + steps.push(tail) + continue + } + + m = reNormalPath.exec(key.substring(pos)) + if (m !== null) { + pos += m[0].length + tail.nextType = 'object' + tail = { type: 'object', key: m[1] } + steps.push(tail) + continue + } + + return failure() + } + + tail.last = true + return steps +} + +module.exports = parsePath diff --git a/bff/node_modules/append-field/lib/set-value.js b/bff/node_modules/append-field/lib/set-value.js new file mode 100644 index 0000000..c15e873 --- /dev/null +++ b/bff/node_modules/append-field/lib/set-value.js @@ -0,0 +1,64 @@ +function valueType (value) { + if (value === undefined) return 'undefined' + if (Array.isArray(value)) return 'array' + if (typeof value === 'object') return 'object' + return 'scalar' +} + +function setLastValue (context, step, currentValue, entryValue) { + switch (valueType(currentValue)) { + case 'undefined': + if (step.append) { + context[step.key] = [entryValue] + } else { + context[step.key] = entryValue + } + break + case 'array': + context[step.key].push(entryValue) + break + case 'object': + return setLastValue(currentValue, { type: 'object', key: '', last: true }, currentValue[''], entryValue) + case 'scalar': + context[step.key] = [context[step.key], entryValue] + break + } + + return context +} + +function setValue (context, step, currentValue, entryValue) { + if (step.last) return setLastValue(context, step, currentValue, entryValue) + + var obj + switch (valueType(currentValue)) { + case 'undefined': + if (step.nextType === 'array') { + context[step.key] = [] + } else { + context[step.key] = Object.create(null) + } + return context[step.key] + case 'object': + return context[step.key] + case 'array': + if (step.nextType === 'array') { + return currentValue + } + + obj = Object.create(null) + context[step.key] = obj + currentValue.forEach(function (item, i) { + if (item !== undefined) obj['' + i] = item + }) + + return obj + case 'scalar': + obj = Object.create(null) + obj[''] = currentValue + context[step.key] = obj + return obj + } +} + +module.exports = setValue diff --git a/bff/node_modules/append-field/package.json b/bff/node_modules/append-field/package.json new file mode 100644 index 0000000..8d6e716 --- /dev/null +++ b/bff/node_modules/append-field/package.json @@ -0,0 +1,19 @@ +{ + "name": "append-field", + "version": "1.0.0", + "license": "MIT", + "author": "Linus Unnebäck ", + "main": "index.js", + "devDependencies": { + "mocha": "^2.2.4", + "standard": "^6.0.5", + "testdata-w3c-json-form": "^0.2.0" + }, + "scripts": { + "test": "standard && mocha" + }, + "repository": { + "type": "git", + "url": "http://github.com/LinusU/node-append-field.git" + } +} diff --git a/bff/node_modules/append-field/test/forms.js b/bff/node_modules/append-field/test/forms.js new file mode 100644 index 0000000..dd6fbc9 --- /dev/null +++ b/bff/node_modules/append-field/test/forms.js @@ -0,0 +1,19 @@ +/* eslint-env mocha */ + +var assert = require('assert') +var appendField = require('../') +var testData = require('testdata-w3c-json-form') + +describe('Append Field', function () { + for (var test of testData) { + it('handles ' + test.name, function () { + var store = Object.create(null) + + for (var field of test.fields) { + appendField(store, field.key, field.value) + } + + assert.deepEqual(store, test.expected) + }) + } +}) diff --git a/bff/node_modules/asynckit/LICENSE b/bff/node_modules/asynckit/LICENSE new file mode 100644 index 0000000..c9eca5d --- /dev/null +++ b/bff/node_modules/asynckit/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Alex Indigo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/asynckit/README.md b/bff/node_modules/asynckit/README.md new file mode 100644 index 0000000..ddcc7e6 --- /dev/null +++ b/bff/node_modules/asynckit/README.md @@ -0,0 +1,233 @@ +# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit) + +Minimal async jobs utility library, with streams support. + +[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit) +[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit) +[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit) + +[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master) +[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit) +[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit) + + + +AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects. +Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method. + +It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators. + +| compression | size | +| :----------------- | -------: | +| asynckit.js | 12.34 kB | +| asynckit.min.js | 4.11 kB | +| asynckit.min.js.gz | 1.47 kB | + + +## Install + +```sh +$ npm install --save asynckit +``` + +## Examples + +### Parallel Jobs + +Runs iterator over provided array in parallel. Stores output in the `result` array, +on the matching positions. In unlikely event of an error from one of the jobs, +will terminate rest of the active jobs (if abort function is provided) +and return error along with salvaged data to the main callback function. + +#### Input Array + +```javascript +var parallel = require('asynckit').parallel + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] + , target = [] + ; + +parallel(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// async job accepts one element from the array +// and a callback function +function asyncJob(item, cb) +{ + // different delays (in ms) per item + var delay = item * 25; + + // pretend different jobs take different time to finish + // and not in consequential order + var timeoutId = setTimeout(function() { + target.push(item); + cb(null, item * 2); + }, delay); + + // allow to cancel "leftover" jobs upon error + // return function, invoking of which will abort this job + return clearTimeout.bind(null, timeoutId); +} +``` + +More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js). + +#### Input Object + +Also it supports named jobs, listed via object. + +```javascript +var parallel = require('asynckit/parallel') + , assert = require('assert') + ; + +var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } + , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } + , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] + , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] + , target = [] + , keys = [] + ; + +parallel(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); + assert.deepEqual(keys, expectedKeys); +}); + +// supports full value, key, callback (shortcut) interface +function asyncJob(item, key, cb) +{ + // different delays (in ms) per item + var delay = item * 25; + + // pretend different jobs take different time to finish + // and not in consequential order + var timeoutId = setTimeout(function() { + keys.push(key); + target.push(item); + cb(null, item * 2); + }, delay); + + // allow to cancel "leftover" jobs upon error + // return function, invoking of which will abort this job + return clearTimeout.bind(null, timeoutId); +} +``` + +More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js). + +### Serial Jobs + +Runs iterator over provided array sequentially. Stores output in the `result` array, +on the matching positions. In unlikely event of an error from one of the jobs, +will not proceed to the rest of the items in the list +and return error along with salvaged data to the main callback function. + +#### Input Array + +```javascript +var serial = require('asynckit/serial') + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] + , target = [] + ; + +serial(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// extended interface (item, key, callback) +// also supported for arrays +function asyncJob(item, key, cb) +{ + target.push(key); + + // it will be automatically made async + // even it iterator "returns" in the same event loop + cb(null, item * 2); +} +``` + +More examples could be found in [test/test-serial-array.js](test/test-serial-array.js). + +#### Input Object + +Also it supports named jobs, listed via object. + +```javascript +var serial = require('asynckit').serial + , assert = require('assert') + ; + +var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] + , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] + , target = [] + ; + +var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } + , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } + , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] + , target = [] + ; + + +serial(source, asyncJob, function(err, result) +{ + assert.deepEqual(result, expectedResult); + assert.deepEqual(target, expectedTarget); +}); + +// shortcut interface (item, callback) +// works for object as well as for the arrays +function asyncJob(item, cb) +{ + target.push(item); + + // it will be automatically made async + // even it iterator "returns" in the same event loop + cb(null, item * 2); +} +``` + +More examples could be found in [test/test-serial-object.js](test/test-serial-object.js). + +_Note: Since _object_ is an _unordered_ collection of properties, +it may produce unexpected results with sequential iterations. +Whenever order of the jobs' execution is important please use `serialOrdered` method._ + +### Ordered Serial Iterations + +TBD + +For example [compare-property](compare-property) package. + +### Streaming interface + +TBD + +## Want to Know More? + +More examples can be found in [test folder](test/). + +Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions. + +## License + +AsyncKit is licensed under the MIT license. diff --git a/bff/node_modules/asynckit/bench.js b/bff/node_modules/asynckit/bench.js new file mode 100644 index 0000000..c612f1a --- /dev/null +++ b/bff/node_modules/asynckit/bench.js @@ -0,0 +1,76 @@ +/* eslint no-console: "off" */ + +var asynckit = require('./') + , async = require('async') + , assert = require('assert') + , expected = 0 + ; + +var Benchmark = require('benchmark'); +var suite = new Benchmark.Suite; + +var source = []; +for (var z = 1; z < 100; z++) +{ + source.push(z); + expected += z; +} + +suite +// add tests + +.add('async.map', function(deferred) +{ + var total = 0; + + async.map(source, + function(i, cb) + { + setImmediate(function() + { + total += i; + cb(null, total); + }); + }, + function(err, result) + { + assert.ifError(err); + assert.equal(result[result.length - 1], expected); + deferred.resolve(); + }); +}, {'defer': true}) + + +.add('asynckit.parallel', function(deferred) +{ + var total = 0; + + asynckit.parallel(source, + function(i, cb) + { + setImmediate(function() + { + total += i; + cb(null, total); + }); + }, + function(err, result) + { + assert.ifError(err); + assert.equal(result[result.length - 1], expected); + deferred.resolve(); + }); +}, {'defer': true}) + + +// add listeners +.on('cycle', function(ev) +{ + console.log(String(ev.target)); +}) +.on('complete', function() +{ + console.log('Fastest is ' + this.filter('fastest').map('name')); +}) +// run async +.run({ 'async': true }); diff --git a/bff/node_modules/asynckit/index.js b/bff/node_modules/asynckit/index.js new file mode 100644 index 0000000..455f945 --- /dev/null +++ b/bff/node_modules/asynckit/index.js @@ -0,0 +1,6 @@ +module.exports = +{ + parallel : require('./parallel.js'), + serial : require('./serial.js'), + serialOrdered : require('./serialOrdered.js') +}; diff --git a/bff/node_modules/asynckit/lib/abort.js b/bff/node_modules/asynckit/lib/abort.js new file mode 100644 index 0000000..114367e --- /dev/null +++ b/bff/node_modules/asynckit/lib/abort.js @@ -0,0 +1,29 @@ +// API +module.exports = abort; + +/** + * Aborts leftover active jobs + * + * @param {object} state - current state object + */ +function abort(state) +{ + Object.keys(state.jobs).forEach(clean.bind(state)); + + // reset leftover jobs + state.jobs = {}; +} + +/** + * Cleans up leftover job by invoking abort function for the provided job id + * + * @this state + * @param {string|number} key - job id to abort + */ +function clean(key) +{ + if (typeof this.jobs[key] == 'function') + { + this.jobs[key](); + } +} diff --git a/bff/node_modules/asynckit/lib/async.js b/bff/node_modules/asynckit/lib/async.js new file mode 100644 index 0000000..7f1288a --- /dev/null +++ b/bff/node_modules/asynckit/lib/async.js @@ -0,0 +1,34 @@ +var defer = require('./defer.js'); + +// API +module.exports = async; + +/** + * Runs provided callback asynchronously + * even if callback itself is not + * + * @param {function} callback - callback to invoke + * @returns {function} - augmented callback + */ +function async(callback) +{ + var isAsync = false; + + // check if async happened + defer(function() { isAsync = true; }); + + return function async_callback(err, result) + { + if (isAsync) + { + callback(err, result); + } + else + { + defer(function nextTick_callback() + { + callback(err, result); + }); + } + }; +} diff --git a/bff/node_modules/asynckit/lib/defer.js b/bff/node_modules/asynckit/lib/defer.js new file mode 100644 index 0000000..b67110c --- /dev/null +++ b/bff/node_modules/asynckit/lib/defer.js @@ -0,0 +1,26 @@ +module.exports = defer; + +/** + * Runs provided function on next iteration of the event loop + * + * @param {function} fn - function to run + */ +function defer(fn) +{ + var nextTick = typeof setImmediate == 'function' + ? setImmediate + : ( + typeof process == 'object' && typeof process.nextTick == 'function' + ? process.nextTick + : null + ); + + if (nextTick) + { + nextTick(fn); + } + else + { + setTimeout(fn, 0); + } +} diff --git a/bff/node_modules/asynckit/lib/iterate.js b/bff/node_modules/asynckit/lib/iterate.js new file mode 100644 index 0000000..5d2839a --- /dev/null +++ b/bff/node_modules/asynckit/lib/iterate.js @@ -0,0 +1,75 @@ +var async = require('./async.js') + , abort = require('./abort.js') + ; + +// API +module.exports = iterate; + +/** + * Iterates over each job object + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {object} state - current job status + * @param {function} callback - invoked when all elements processed + */ +function iterate(list, iterator, state, callback) +{ + // store current index + var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; + + state.jobs[key] = runJob(iterator, key, list[key], function(error, output) + { + // don't repeat yourself + // skip secondary callbacks + if (!(key in state.jobs)) + { + return; + } + + // clean up jobs + delete state.jobs[key]; + + if (error) + { + // don't process rest of the results + // stop still active jobs + // and reset the list + abort(state); + } + else + { + state.results[key] = output; + } + + // return salvaged results + callback(error, state.results); + }); +} + +/** + * Runs iterator over provided job element + * + * @param {function} iterator - iterator to invoke + * @param {string|number} key - key/index of the element in the list of jobs + * @param {mixed} item - job description + * @param {function} callback - invoked after iterator is done with the job + * @returns {function|mixed} - job abort function or something else + */ +function runJob(iterator, key, item, callback) +{ + var aborter; + + // allow shortcut if iterator expects only two arguments + if (iterator.length == 2) + { + aborter = iterator(item, async(callback)); + } + // otherwise go with full three arguments + else + { + aborter = iterator(item, key, async(callback)); + } + + return aborter; +} diff --git a/bff/node_modules/asynckit/lib/readable_asynckit.js b/bff/node_modules/asynckit/lib/readable_asynckit.js new file mode 100644 index 0000000..78ad240 --- /dev/null +++ b/bff/node_modules/asynckit/lib/readable_asynckit.js @@ -0,0 +1,91 @@ +var streamify = require('./streamify.js') + , defer = require('./defer.js') + ; + +// API +module.exports = ReadableAsyncKit; + +/** + * Base constructor for all streams + * used to hold properties/methods + */ +function ReadableAsyncKit() +{ + ReadableAsyncKit.super_.apply(this, arguments); + + // list of active jobs + this.jobs = {}; + + // add stream methods + this.destroy = destroy; + this._start = _start; + this._read = _read; +} + +/** + * Destroys readable stream, + * by aborting outstanding jobs + * + * @returns {void} + */ +function destroy() +{ + if (this.destroyed) + { + return; + } + + this.destroyed = true; + + if (typeof this.terminator == 'function') + { + this.terminator(); + } +} + +/** + * Starts provided jobs in async manner + * + * @private + */ +function _start() +{ + // first argument – runner function + var runner = arguments[0] + // take away first argument + , args = Array.prototype.slice.call(arguments, 1) + // second argument - input data + , input = args[0] + // last argument - result callback + , endCb = streamify.callback.call(this, args[args.length - 1]) + ; + + args[args.length - 1] = endCb; + // third argument - iterator + args[1] = streamify.iterator.call(this, args[1]); + + // allow time for proper setup + defer(function() + { + if (!this.destroyed) + { + this.terminator = runner.apply(null, args); + } + else + { + endCb(null, Array.isArray(input) ? [] : {}); + } + }.bind(this)); +} + + +/** + * Implement _read to comply with Readable streams + * Doesn't really make sense for flowing object mode + * + * @private + */ +function _read() +{ + +} diff --git a/bff/node_modules/asynckit/lib/readable_parallel.js b/bff/node_modules/asynckit/lib/readable_parallel.js new file mode 100644 index 0000000..5d2929f --- /dev/null +++ b/bff/node_modules/asynckit/lib/readable_parallel.js @@ -0,0 +1,25 @@ +var parallel = require('../parallel.js'); + +// API +module.exports = ReadableParallel; + +/** + * Streaming wrapper to `asynckit.parallel` + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {stream.Readable#} + */ +function ReadableParallel(list, iterator, callback) +{ + if (!(this instanceof ReadableParallel)) + { + return new ReadableParallel(list, iterator, callback); + } + + // turn on object mode + ReadableParallel.super_.call(this, {objectMode: true}); + + this._start(parallel, list, iterator, callback); +} diff --git a/bff/node_modules/asynckit/lib/readable_serial.js b/bff/node_modules/asynckit/lib/readable_serial.js new file mode 100644 index 0000000..7822698 --- /dev/null +++ b/bff/node_modules/asynckit/lib/readable_serial.js @@ -0,0 +1,25 @@ +var serial = require('../serial.js'); + +// API +module.exports = ReadableSerial; + +/** + * Streaming wrapper to `asynckit.serial` + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {stream.Readable#} + */ +function ReadableSerial(list, iterator, callback) +{ + if (!(this instanceof ReadableSerial)) + { + return new ReadableSerial(list, iterator, callback); + } + + // turn on object mode + ReadableSerial.super_.call(this, {objectMode: true}); + + this._start(serial, list, iterator, callback); +} diff --git a/bff/node_modules/asynckit/lib/readable_serial_ordered.js b/bff/node_modules/asynckit/lib/readable_serial_ordered.js new file mode 100644 index 0000000..3de89c4 --- /dev/null +++ b/bff/node_modules/asynckit/lib/readable_serial_ordered.js @@ -0,0 +1,29 @@ +var serialOrdered = require('../serialOrdered.js'); + +// API +module.exports = ReadableSerialOrdered; +// expose sort helpers +module.exports.ascending = serialOrdered.ascending; +module.exports.descending = serialOrdered.descending; + +/** + * Streaming wrapper to `asynckit.serialOrdered` + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {stream.Readable#} + */ +function ReadableSerialOrdered(list, iterator, sortMethod, callback) +{ + if (!(this instanceof ReadableSerialOrdered)) + { + return new ReadableSerialOrdered(list, iterator, sortMethod, callback); + } + + // turn on object mode + ReadableSerialOrdered.super_.call(this, {objectMode: true}); + + this._start(serialOrdered, list, iterator, sortMethod, callback); +} diff --git a/bff/node_modules/asynckit/lib/state.js b/bff/node_modules/asynckit/lib/state.js new file mode 100644 index 0000000..cbea7ad --- /dev/null +++ b/bff/node_modules/asynckit/lib/state.js @@ -0,0 +1,37 @@ +// API +module.exports = state; + +/** + * Creates initial state object + * for iteration over list + * + * @param {array|object} list - list to iterate over + * @param {function|null} sortMethod - function to use for keys sort, + * or `null` to keep them as is + * @returns {object} - initial state object + */ +function state(list, sortMethod) +{ + var isNamedList = !Array.isArray(list) + , initState = + { + index : 0, + keyedList: isNamedList || sortMethod ? Object.keys(list) : null, + jobs : {}, + results : isNamedList ? {} : [], + size : isNamedList ? Object.keys(list).length : list.length + } + ; + + if (sortMethod) + { + // sort array keys based on it's values + // sort object's keys just on own merit + initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) + { + return sortMethod(list[a], list[b]); + }); + } + + return initState; +} diff --git a/bff/node_modules/asynckit/lib/streamify.js b/bff/node_modules/asynckit/lib/streamify.js new file mode 100644 index 0000000..f56a1c9 --- /dev/null +++ b/bff/node_modules/asynckit/lib/streamify.js @@ -0,0 +1,141 @@ +var async = require('./async.js'); + +// API +module.exports = { + iterator: wrapIterator, + callback: wrapCallback +}; + +/** + * Wraps iterators with long signature + * + * @this ReadableAsyncKit# + * @param {function} iterator - function to wrap + * @returns {function} - wrapped function + */ +function wrapIterator(iterator) +{ + var stream = this; + + return function(item, key, cb) + { + var aborter + , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key)) + ; + + stream.jobs[key] = wrappedCb; + + // it's either shortcut (item, cb) + if (iterator.length == 2) + { + aborter = iterator(item, wrappedCb); + } + // or long format (item, key, cb) + else + { + aborter = iterator(item, key, wrappedCb); + } + + return aborter; + }; +} + +/** + * Wraps provided callback function + * allowing to execute snitch function before + * real callback + * + * @this ReadableAsyncKit# + * @param {function} callback - function to wrap + * @returns {function} - wrapped function + */ +function wrapCallback(callback) +{ + var stream = this; + + var wrapped = function(error, result) + { + return finisher.call(stream, error, result, callback); + }; + + return wrapped; +} + +/** + * Wraps provided iterator callback function + * makes sure snitch only called once, + * but passes secondary calls to the original callback + * + * @this ReadableAsyncKit# + * @param {function} callback - callback to wrap + * @param {number|string} key - iteration key + * @returns {function} wrapped callback + */ +function wrapIteratorCallback(callback, key) +{ + var stream = this; + + return function(error, output) + { + // don't repeat yourself + if (!(key in stream.jobs)) + { + callback(error, output); + return; + } + + // clean up jobs + delete stream.jobs[key]; + + return streamer.call(stream, error, {key: key, value: output}, callback); + }; +} + +/** + * Stream wrapper for iterator callback + * + * @this ReadableAsyncKit# + * @param {mixed} error - error response + * @param {mixed} output - iterator output + * @param {function} callback - callback that expects iterator results + */ +function streamer(error, output, callback) +{ + if (error && !this.error) + { + this.error = error; + this.pause(); + this.emit('error', error); + // send back value only, as expected + callback(error, output && output.value); + return; + } + + // stream stuff + this.push(output); + + // back to original track + // send back value only, as expected + callback(error, output && output.value); +} + +/** + * Stream wrapper for finishing callback + * + * @this ReadableAsyncKit# + * @param {mixed} error - error response + * @param {mixed} output - iterator output + * @param {function} callback - callback that expects final results + */ +function finisher(error, output, callback) +{ + // signal end of the stream + // only for successfully finished streams + if (!error) + { + this.push(null); + } + + // back to original track + callback(error, output); +} diff --git a/bff/node_modules/asynckit/lib/terminator.js b/bff/node_modules/asynckit/lib/terminator.js new file mode 100644 index 0000000..d6eb992 --- /dev/null +++ b/bff/node_modules/asynckit/lib/terminator.js @@ -0,0 +1,29 @@ +var abort = require('./abort.js') + , async = require('./async.js') + ; + +// API +module.exports = terminator; + +/** + * Terminates jobs in the attached state context + * + * @this AsyncKitState# + * @param {function} callback - final callback to invoke after termination + */ +function terminator(callback) +{ + if (!Object.keys(this.jobs).length) + { + return; + } + + // fast forward iteration index + this.index = this.size; + + // abort jobs + abort(this); + + // send back results we have so far + async(callback)(null, this.results); +} diff --git a/bff/node_modules/asynckit/package.json b/bff/node_modules/asynckit/package.json new file mode 100644 index 0000000..51147d6 --- /dev/null +++ b/bff/node_modules/asynckit/package.json @@ -0,0 +1,63 @@ +{ + "name": "asynckit", + "version": "0.4.0", + "description": "Minimal async jobs utility library, with streams support", + "main": "index.js", + "scripts": { + "clean": "rimraf coverage", + "lint": "eslint *.js lib/*.js test/*.js", + "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec", + "win-test": "tape test/test-*.js", + "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec", + "report": "istanbul report", + "size": "browserify index.js | size-table asynckit", + "debug": "tape test/test-*.js" + }, + "pre-commit": [ + "clean", + "lint", + "test", + "browser", + "report", + "size" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/alexindigo/asynckit.git" + }, + "keywords": [ + "async", + "jobs", + "parallel", + "serial", + "iterator", + "array", + "object", + "stream", + "destroy", + "terminate", + "abort" + ], + "author": "Alex Indigo ", + "license": "MIT", + "bugs": { + "url": "https://github.com/alexindigo/asynckit/issues" + }, + "homepage": "https://github.com/alexindigo/asynckit#readme", + "devDependencies": { + "browserify": "^13.0.0", + "browserify-istanbul": "^2.0.0", + "coveralls": "^2.11.9", + "eslint": "^2.9.0", + "istanbul": "^0.4.3", + "obake": "^0.1.2", + "phantomjs-prebuilt": "^2.1.7", + "pre-commit": "^1.1.3", + "reamde": "^1.1.0", + "rimraf": "^2.5.2", + "size-table": "^0.2.0", + "tap-spec": "^4.1.1", + "tape": "^4.5.1" + }, + "dependencies": {} +} diff --git a/bff/node_modules/asynckit/parallel.js b/bff/node_modules/asynckit/parallel.js new file mode 100644 index 0000000..3c50344 --- /dev/null +++ b/bff/node_modules/asynckit/parallel.js @@ -0,0 +1,43 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = parallel; + +/** + * Runs iterator over provided array elements in parallel + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function parallel(list, iterator, callback) +{ + var state = initState(list); + + while (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, function(error, result) + { + if (error) + { + callback(error, result); + return; + } + + // looks like it's the last one + if (Object.keys(state.jobs).length === 0) + { + callback(null, state.results); + return; + } + }); + + state.index++; + } + + return terminator.bind(state, callback); +} diff --git a/bff/node_modules/asynckit/serial.js b/bff/node_modules/asynckit/serial.js new file mode 100644 index 0000000..6cd949a --- /dev/null +++ b/bff/node_modules/asynckit/serial.js @@ -0,0 +1,17 @@ +var serialOrdered = require('./serialOrdered.js'); + +// Public API +module.exports = serial; + +/** + * Runs iterator over provided array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serial(list, iterator, callback) +{ + return serialOrdered(list, iterator, null, callback); +} diff --git a/bff/node_modules/asynckit/serialOrdered.js b/bff/node_modules/asynckit/serialOrdered.js new file mode 100644 index 0000000..607eafe --- /dev/null +++ b/bff/node_modules/asynckit/serialOrdered.js @@ -0,0 +1,75 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = serialOrdered; +// sorting helpers +module.exports.ascending = ascending; +module.exports.descending = descending; + +/** + * Runs iterator over provided sorted array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serialOrdered(list, iterator, sortMethod, callback) +{ + var state = initState(list, sortMethod); + + iterate(list, iterator, state, function iteratorHandler(error, result) + { + if (error) + { + callback(error, result); + return; + } + + state.index++; + + // are we there yet? + if (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, iteratorHandler); + return; + } + + // done here + callback(null, state.results); + }); + + return terminator.bind(state, callback); +} + +/* + * -- Sort methods + */ + +/** + * sort helper to sort array elements in ascending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function ascending(a, b) +{ + return a < b ? -1 : a > b ? 1 : 0; +} + +/** + * sort helper to sort array elements in descending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function descending(a, b) +{ + return -1 * ascending(a, b); +} diff --git a/bff/node_modules/asynckit/stream.js b/bff/node_modules/asynckit/stream.js new file mode 100644 index 0000000..d43465f --- /dev/null +++ b/bff/node_modules/asynckit/stream.js @@ -0,0 +1,21 @@ +var inherits = require('util').inherits + , Readable = require('stream').Readable + , ReadableAsyncKit = require('./lib/readable_asynckit.js') + , ReadableParallel = require('./lib/readable_parallel.js') + , ReadableSerial = require('./lib/readable_serial.js') + , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js') + ; + +// API +module.exports = +{ + parallel : ReadableParallel, + serial : ReadableSerial, + serialOrdered : ReadableSerialOrdered, +}; + +inherits(ReadableAsyncKit, Readable); + +inherits(ReadableParallel, ReadableAsyncKit); +inherits(ReadableSerial, ReadableAsyncKit); +inherits(ReadableSerialOrdered, ReadableAsyncKit); diff --git a/bff/node_modules/axios/CHANGELOG.md b/bff/node_modules/axios/CHANGELOG.md new file mode 100644 index 0000000..e286c12 --- /dev/null +++ b/bff/node_modules/axios/CHANGELOG.md @@ -0,0 +1,1416 @@ +# Changelog + +## [1.13.3](https://github.com/axios/axios/compare/v1.13.2...v1.13.3) (2026-01-20) + +### Bug Fixes + +- **http2:** Use port 443 for HTTPS connections by default. ([#7256](https://github.com/axios/axios/issues/7256)) ([d7e6065](https://github.com/axios/axios/commit/d7e60653460480ffacecf85383012ca1baa6263e)) +- **interceptor:** handle the error in the same interceptor ([#6269](https://github.com/axios/axios/issues/6269)) ([5945e40](https://github.com/axios/axios/commit/5945e40bb171d4ac4fc195df276cf952244f0f89)) +- main field in package.json should correspond to cjs artifacts ([#5756](https://github.com/axios/axios/issues/5756)) ([7373fbf](https://github.com/axios/axios/commit/7373fbff24cd92ce650d99ff6f7fe08c2e2a0a04)) +- **package.json:** add 'bun' package.json 'exports' condition. Load the Node.js build in Bun instead of the browser build ([#5754](https://github.com/axios/axios/issues/5754)) ([b89217e](https://github.com/axios/axios/commit/b89217e3e91de17a3d55e2b8f39ceb0e9d8aeda8)) +- silentJSONParsing=false should throw on invalid JSON ([#7253](https://github.com/axios/axios/issues/7253)) ([#7257](https://github.com/axios/axios/issues/7257)) ([7d19335](https://github.com/axios/axios/commit/7d19335e43d6754a1a9a66e424f7f7da259895bf)) +- turn AxiosError into a native error ([#5394](https://github.com/axios/axios/issues/5394)) ([#5558](https://github.com/axios/axios/issues/5558)) ([1c6a86d](https://github.com/axios/axios/commit/1c6a86dd2c0623ee1af043a8491dbc96d40e883b)) +- **types:** add handlers to AxiosInterceptorManager interface ([#5551](https://github.com/axios/axios/issues/5551)) ([8d1271b](https://github.com/axios/axios/commit/8d1271b49fc226ed7defd07cd577bd69a55bb13a)) +- **types:** restore AxiosError.cause type from unknown to Error ([#7327](https://github.com/axios/axios/issues/7327)) ([d8233d9](https://github.com/axios/axios/commit/d8233d9e8e9a64bfba9bbe01d475ba417510b82b)) +- unclear error message is thrown when specifying an empty proxy authorization ([#6314](https://github.com/axios/axios/issues/6314)) ([6ef867e](https://github.com/axios/axios/commit/6ef867e684adf7fb2343e3b29a79078a3c76dc29)) + +### Features + +- add `undefined` as a value in AxiosRequestConfig ([#5560](https://github.com/axios/axios/issues/5560)) ([095033c](https://github.com/axios/axios/commit/095033c626895ecdcda2288050b63dcf948db3bd)) +- add automatic minor and patch upgrades to dependabot ([#6053](https://github.com/axios/axios/issues/6053)) ([65a7584](https://github.com/axios/axios/commit/65a7584eda6164980ddb8cf5372f0afa2a04c1ed)) +- add Node.js coverage script using c8 (closes [#7289](https://github.com/axios/axios/issues/7289)) ([#7294](https://github.com/axios/axios/issues/7294)) ([ec9d94e](https://github.com/axios/axios/commit/ec9d94e9f88da13e9219acadf65061fb38ce080a)) +- added copilot instructions ([3f83143](https://github.com/axios/axios/commit/3f83143bfe617eec17f9d7dcf8bafafeeae74c26)) +- compatibility with frozen prototypes ([#6265](https://github.com/axios/axios/issues/6265)) ([860e033](https://github.com/axios/axios/commit/860e03396a536e9b926dacb6570732489c9d7012)) +- enhance pipeFileToResponse with error handling ([#7169](https://github.com/axios/axios/issues/7169)) ([88d7884](https://github.com/axios/axios/commit/88d78842541610692a04282233933d078a8a2552)) +- **types:** Intellisense for string literals in a widened union ([#6134](https://github.com/axios/axios/issues/6134)) ([f73474d](https://github.com/axios/axios/commit/f73474d02c5aa957b2daeecee65508557fd3c6e5)), closes [/github.com/microsoft/TypeScript/issues/33471#issuecomment-1376364329](https://github.com//github.com/microsoft/TypeScript/issues/33471/issues/issuecomment-1376364329) + +### Reverts + +- Revert "fix: silentJSONParsing=false should throw on invalid JSON (#7253) (#7…" (#7298) ([a4230f5](https://github.com/axios/axios/commit/a4230f5581b3f58b6ff531b6dbac377a4fd7942a)), closes [#7253](https://github.com/axios/axios/issues/7253) [#7](https://github.com/axios/axios/issues/7) [#7298](https://github.com/axios/axios/issues/7298) +- **deps:** bump peter-evans/create-pull-request from 7 to 8 in the github-actions group ([#7334](https://github.com/axios/axios/issues/7334)) ([2d6ad5e](https://github.com/axios/axios/commit/2d6ad5e48bd29b0b2b5e7e95fb473df98301543a)) + +### Contributors to this release + +- avatar [Ashvin Tiwari](https://github.com/ashvin2005 '+1752/-4 (#7218 #7218 )') +- avatar [Nikunj Mochi](https://github.com/mochinikunj '+940/-12 (#7294 #7294 )') +- avatar [Anchal Singh](https://github.com/imanchalsingh '+544/-102 (#7169 #7185 )') +- avatar [jasonsaayman](https://github.com/jasonsaayman '+317/-73 (#7334 #7298 )') +- avatar [Julian Dax](https://github.com/brodo '+99/-120 (#5558 )') +- avatar [Akash Dhar Dubey](https://github.com/AKASHDHARDUBEY '+167/-0 (#7287 #7288 )') +- avatar [Madhumita](https://github.com/madhumitaaa '+20/-68 (#7198 )') +- avatar [Tackoil](https://github.com/Tackoil '+80/-2 (#6269 )') +- avatar [Justin Dhillon](https://github.com/justindhillon '+41/-41 (#6324 #6315 )') +- avatar [Rudransh](https://github.com/Rudrxxx '+71/-2 (#7257 )') +- avatar [WuMingDao](https://github.com/WuMingDao '+36/-36 (#7215 )') +- avatar [codenomnom](https://github.com/codenomnom '+70/-0 (#7201 #7201 )') +- avatar [Nandan Acharya](https://github.com/Nandann018-ux '+60/-10 (#7272 )') +- avatar [Eric Dubé](https://github.com/KernelDeimos '+22/-40 (#7042 )') +- avatar [Tibor Pilz](https://github.com/tiborpilz '+40/-4 (#5551 )') +- avatar [Gabriel Quaresma](https://github.com/joaoGabriel55 '+31/-4 (#6314 )') +- avatar [Turadg Aleahmad](https://github.com/turadg '+23/-6 (#6265 )') +- avatar [JohnTitor](https://github.com/kiritosan '+14/-14 (#6155 )') +- avatar [rohit miryala](https://github.com/rohitmiryala '+22/-0 (#7250 )') +- avatar [Wilson Mun](https://github.com/wmundev '+20/-0 (#6053 )') +- avatar [techcodie](https://github.com/techcodie '+7/-7 (#7236 )') +- avatar [Ved Vadnere](https://github.com/Archis009 '+5/-6 (#7283 )') +- avatar [svihpinc](https://github.com/svihpinc '+5/-3 (#6134 )') +- avatar [SANDESH LENDVE](https://github.com/mrsandy1965 '+3/-3 (#7246 )') +- avatar [Lubos](https://github.com/mrlubos '+5/-1 (#7312 )') +- avatar [Jarred Sumner](https://github.com/Jarred-Sumner '+5/-1 (#5754 )') +- avatar [Adam Hines](https://github.com/thebanjomatic '+2/-1 (#5756 )') +- avatar [Subhan Kumar Rai](https://github.com/Subhan030 '+2/-1 (#7256 )') +- avatar [Joseph Frazier](https://github.com/josephfrazier '+1/-1 (#7311 )') +- avatar [KT0803](https://github.com/KT0803 '+0/-2 (#7229 )') +- avatar [Albie](https://github.com/AlbertoSadoc '+1/-1 (#5560 )') +- avatar [Jake Hayes](https://github.com/thejayhaykid '+1/-0 (#5999 )') + +## [1.13.2](https://github.com/axios/axios/compare/v1.13.1...v1.13.2) (2025-11-04) + +### Bug Fixes + +- **http:** fix 'socket hang up' bug for keep-alive requests when using timeouts; ([#7206](https://github.com/axios/axios/issues/7206)) ([8d37233](https://github.com/axios/axios/commit/8d372335f5c50ecd01e8615f2468a9eb19703117)) +- **http:** use default export for http2 module to support stubs; ([#7196](https://github.com/axios/axios/issues/7196)) ([0588880](https://github.com/axios/axios/commit/0588880ac7ddba7594ef179930493884b7e90bf5)) + +### Performance Improvements + +- **http:** fix early loop exit; ([#7202](https://github.com/axios/axios/issues/7202)) ([12c314b](https://github.com/axios/axios/commit/12c314b603e7852a157e93e47edb626a471ba6c5)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+28/-9 (#7206 #7202 )') +- avatar [Kasper Isager Dalsgarð](https://github.com/kasperisager '+9/-9 (#7196 )') + +## [1.13.1](https://github.com/axios/axios/compare/v1.13.0...v1.13.1) (2025-10-28) + +### Bug Fixes + +- **http:** fixed a regression that caused the data stream to be interrupted for responses with non-OK HTTP statuses; ([#7193](https://github.com/axios/axios/issues/7193)) ([bcd5581](https://github.com/axios/axios/commit/bcd5581d208cd372055afdcb2fd10b68ca40613c)) + +### Contributors to this release + +- avatar [Anchal Singh](https://github.com/imanchalsingh '+220/-111 (#7173 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+18/-1 (#7193 )') + +# [1.13.0](https://github.com/axios/axios/compare/v1.12.2...v1.13.0) (2025-10-27) + +### Bug Fixes + +- **fetch:** prevent TypeError when config.env is undefined ([#7155](https://github.com/axios/axios/issues/7155)) ([015faec](https://github.com/axios/axios/commit/015faeca9f26db76f9562760f04bb9f8229f4db1)) +- resolve issue [#7131](https://github.com/axios/axios/issues/7131) (added spacing in mergeConfig.js) ([#7133](https://github.com/axios/axios/issues/7133)) ([9b9ec98](https://github.com/axios/axios/commit/9b9ec98548d93e9f2204deea10a5f1528bf3ce62)) + +### Features + +- **http:** add HTTP2 support; ([#7150](https://github.com/axios/axios/issues/7150)) ([d676df7](https://github.com/axios/axios/commit/d676df772244726533ca320f42e967f5af056bac)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+794/-180 (#7186 #7150 #7039 )') +- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+24/-509 (#7032 )') +- avatar [Aviraj2929](https://github.com/Aviraj2929 '+211/-93 (#7136 #7135 #7134 #7112 )') +- avatar [prasoon patel](https://github.com/Prasoon52 '+167/-6 (#7099 )') +- avatar [Samyak Dandge](https://github.com/Samy-in '+134/-0 (#7171 )') +- avatar [Anchal Singh](https://github.com/imanchalsingh '+53/-56 (#7170 )') +- avatar [Rahul Kumar](https://github.com/jaiyankargupta '+28/-28 (#7073 )') +- avatar [Amit Verma](https://github.com/Amitverma0509 '+24/-13 (#7129 )') +- avatar [Abhishek3880](https://github.com/abhishekmaniy '+23/-4 (#7119 #7117 #7116 #7115 )') +- avatar [Dhvani Maktuporia](https://github.com/Dhvani365 '+14/-5 (#7175 )') +- avatar [Usama Ayoub](https://github.com/sam3690 '+4/-4 (#7133 )') +- avatar [ikuy1203](https://github.com/ikuy1203 '+3/-3 (#7166 )') +- avatar [Nikhil Simon Toppo](https://github.com/Kirito-Excalibur '+1/-1 (#7172 )') +- avatar [Jane Wangari](https://github.com/Wangarijane '+1/-1 (#7155 )') +- avatar [Supakorn Ieamgomol](https://github.com/Supakornn '+1/-1 (#7065 )') +- avatar [Kian-Meng Ang](https://github.com/kianmeng '+1/-1 (#7046 )') +- avatar [UTSUMI Keiji](https://github.com/k-utsumi '+1/-1 (#7037 )') + +## [1.12.2](https://github.com/axios/axios/compare/v1.12.1...v1.12.2) (2025-09-14) + +### Bug Fixes + +- **fetch:** use current global fetch instead of cached one when env fetch is not specified to keep MSW support; ([#7030](https://github.com/axios/axios/issues/7030)) ([cf78825](https://github.com/axios/axios/commit/cf78825e1229b60d1629ad0bbc8a752ff43c3f53)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+247/-16 (#7030 #7022 #7024 )') +- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+2/-6 (#7028 #7029 )') + +## [1.12.1](https://github.com/axios/axios/compare/v1.12.0...v1.12.1) (2025-09-12) + +### Bug Fixes + +- **types:** fixed env config types; ([#7020](https://github.com/axios/axios/issues/7020)) ([b5f26b7](https://github.com/axios/axios/commit/b5f26b75bdd9afa95016fb67d0cab15fc74cbf05)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+10/-4 (#7020 )') + +# [1.12.0](https://github.com/axios/axios/compare/v1.11.0...v1.12.0) (2025-09-11) + +### Bug Fixes + +- adding build artifacts ([9ec86de](https://github.com/axios/axios/commit/9ec86de257bfa33856571036279169f385ed92bd)) +- dont add dist on release ([a2edc36](https://github.com/axios/axios/commit/a2edc3606a4f775d868a67bb3461ff18ce7ecd11)) +- **fetch-adapter:** set correct Content-Type for Node FormData ([#6998](https://github.com/axios/axios/issues/6998)) ([a9f47af](https://github.com/axios/axios/commit/a9f47afbf3224d2ca987dbd8188789c7ea853c5d)) +- **node:** enforce maxContentLength for data: URLs ([#7011](https://github.com/axios/axios/issues/7011)) ([945435f](https://github.com/axios/axios/commit/945435fc51467303768202250debb8d4ae892593)) +- package exports ([#5627](https://github.com/axios/axios/issues/5627)) ([aa78ac2](https://github.com/axios/axios/commit/aa78ac23fc9036163308c0f6bd2bb885e7af3f36)) +- **params:** removing '[' and ']' from URL encode exclude characters ([#3316](https://github.com/axios/axios/issues/3316)) ([#5715](https://github.com/axios/axios/issues/5715)) ([6d84189](https://github.com/axios/axios/commit/6d84189349c43b1dcdd977b522610660cc4c7042)) +- release pr run ([fd7f404](https://github.com/axios/axios/commit/fd7f404488b2c4f238c2fbe635b58026a634bfd2)) +- **types:** change the type guard on isCancel ([#5595](https://github.com/axios/axios/issues/5595)) ([0dbb7fd](https://github.com/axios/axios/commit/0dbb7fd4f61dc568498cd13a681fa7f907d6ec7e)) + +### Features + +- **adapter:** surface low‑level network error details; attach original error via cause ([#6982](https://github.com/axios/axios/issues/6982)) ([78b290c](https://github.com/axios/axios/commit/78b290c57c978ed2ab420b90d97350231c9e5d74)) +- **fetch:** add fetch, Request, Response env config variables for the adapter; ([#7003](https://github.com/axios/axios/issues/7003)) ([c959ff2](https://github.com/axios/axios/commit/c959ff29013a3bc90cde3ac7ea2d9a3f9c08974b)) +- support reviver on JSON.parse ([#5926](https://github.com/axios/axios/issues/5926)) ([2a97634](https://github.com/axios/axios/commit/2a9763426e43d996fd60d01afe63fa6e1f5b4fca)), closes [#5924](https://github.com/axios/axios/issues/5924) +- **types:** extend AxiosResponse interface to include custom headers type ([#6782](https://github.com/axios/axios/issues/6782)) ([7960d34](https://github.com/axios/axios/commit/7960d34eded2de66ffd30b4687f8da0e46c4903e)) + +### Contributors to this release + +- avatar [Willian Agostini](https://github.com/WillianAgostini '+132/-16760 (#7002 #5926 #6782 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+4263/-293 (#7006 #7003 )') +- avatar [khani](https://github.com/mkhani01 '+111/-15 (#6982 )') +- avatar [Ameer Assadi](https://github.com/AmeerAssadi '+123/-0 (#7011 )') +- avatar [Emiedonmokumo Dick-Boro](https://github.com/emiedonmokumo '+55/-35 (#6998 )') +- avatar [Zeroday BYTE](https://github.com/opsysdebug '+8/-8 (#6980 )') +- avatar [Jason Saayman](https://github.com/jasonsaayman '+7/-7 (#6985 #6985 )') +- avatar [최예찬](https://github.com/HealGaren '+5/-7 (#5715 )') +- avatar [Gligor Kotushevski](https://github.com/gligorkot '+3/-1 (#5627 )') +- avatar [Aleksandar Dimitrov](https://github.com/adimit '+2/-1 (#5595 )') + +# [1.11.0](https://github.com/axios/axios/compare/v1.10.0...v1.11.0) (2025-07-22) + +### Bug Fixes + +- form-data npm pakcage ([#6970](https://github.com/axios/axios/issues/6970)) ([e72c193](https://github.com/axios/axios/commit/e72c193722530db538b19e5ddaaa4544d226b253)) +- prevent RangeError when using large Buffers ([#6961](https://github.com/axios/axios/issues/6961)) ([a2214ca](https://github.com/axios/axios/commit/a2214ca1bc60540baf2c80573cea3a0ff91ba9d1)) +- **types:** resolve type discrepancies between ESM and CJS TypeScript declaration files ([#6956](https://github.com/axios/axios/issues/6956)) ([8517aa1](https://github.com/axios/axios/commit/8517aa16f8d082fc1d5309c642220fa736159110)) + +### Contributors to this release + +- avatar [izzy goldman](https://github.com/izzygld '+186/-93 (#6970 )') +- avatar [Manish Sahani](https://github.com/manishsahanidev '+70/-0 (#6961 )') +- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+12/-10 (#6938 #6939 )') +- avatar [James Nail](https://github.com/jrnail23 '+13/-2 (#6956 )') +- avatar [Tejaswi1305](https://github.com/Tejaswi1305 '+1/-1 (#6894 )') + +# [1.10.0](https://github.com/axios/axios/compare/v1.9.0...v1.10.0) (2025-06-14) + +### Bug Fixes + +- **adapter:** pass fetchOptions to fetch function ([#6883](https://github.com/axios/axios/issues/6883)) ([0f50af8](https://github.com/axios/axios/commit/0f50af8e076b7fb403844789bd5e812dedcaf4ed)) +- **form-data:** convert boolean values to strings in FormData serialization ([#6917](https://github.com/axios/axios/issues/6917)) ([5064b10](https://github.com/axios/axios/commit/5064b108de336ff34862650709761b8a96d26be0)) +- **package:** add module entry point for React Native; ([#6933](https://github.com/axios/axios/issues/6933)) ([3d343b8](https://github.com/axios/axios/commit/3d343b86dc4fd0eea0987059c5af04327c7ae304)) + +### Features + +- **types:** improved fetchOptions interface ([#6867](https://github.com/axios/axios/issues/6867)) ([63f1fce](https://github.com/axios/axios/commit/63f1fce233009f5db1abf2586c145825ac98c3d7)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+30/-19 (#6933 #6920 #6893 #6892 )') +- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+2/-6 (#6922 #6923 )') +- avatar [Dimitrios Lazanas](https://github.com/dimitry-lzs '+4/-0 (#6917 )') +- avatar [Adrian Knapp](https://github.com/AdrianKnapp '+2/-2 (#6867 )') +- avatar [Howie Zhao](https://github.com/howiezhao '+3/-1 (#6872 )') +- avatar [Uhyeon Park](https://github.com/warpdev '+1/-1 (#6883 )') +- avatar [Sampo Silvennoinen](https://github.com/stscoundrel '+1/-1 (#6913 )') + +# [1.9.0](https://github.com/axios/axios/compare/v1.8.4...v1.9.0) (2025-04-24) + +### Bug Fixes + +- **core:** fix the Axios constructor implementation to treat the config argument as optional; ([#6881](https://github.com/axios/axios/issues/6881)) ([6c5d4cd](https://github.com/axios/axios/commit/6c5d4cd69286868059c5e52d45085cb9a894a983)) +- **fetch:** fixed ERR_NETWORK mapping for Safari browsers; ([#6767](https://github.com/axios/axios/issues/6767)) ([dfe8411](https://github.com/axios/axios/commit/dfe8411c9a082c3d068bdd1f8d6e73054f387f45)) +- **headers:** allow iterable objects to be a data source for the set method; ([#6873](https://github.com/axios/axios/issues/6873)) ([1b1f9cc](https://github.com/axios/axios/commit/1b1f9ccdc15f1ea745160ec9a5223de9db4673bc)) +- **headers:** fix `getSetCookie` by using 'get' method for caseless access; ([#6874](https://github.com/axios/axios/issues/6874)) ([d4f7df4](https://github.com/axios/axios/commit/d4f7df4b304af8b373488fdf8e830793ff843eb9)) +- **headers:** fixed support for setting multiple header values from an iterated source; ([#6885](https://github.com/axios/axios/issues/6885)) ([f7a3b5e](https://github.com/axios/axios/commit/f7a3b5e0f7e5e127b97defa92a132fbf1b55cf15)) +- **http:** send minimal end multipart boundary ([#6661](https://github.com/axios/axios/issues/6661)) ([987d2e2](https://github.com/axios/axios/commit/987d2e2dd3b362757550f36eab875e60640b6ddc)) +- **types:** fix autocomplete for adapter config ([#6855](https://github.com/axios/axios/issues/6855)) ([e61a893](https://github.com/axios/axios/commit/e61a8934d8f94dd429a2f309b48c67307c700df0)) + +### Features + +- **AxiosHeaders:** add getSetCookie method to retrieve set-cookie headers values ([#5707](https://github.com/axios/axios/issues/5707)) ([80ea756](https://github.com/axios/axios/commit/80ea756e72bcf53110fa792f5d7ab76e8b11c996)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+200/-34 (#6890 #6889 #6888 #6885 #6881 #6767 #6874 #6873 )') +- avatar [Jay](https://github.com/jasonsaayman '+26/-1 ()') +- avatar [Willian Agostini](https://github.com/WillianAgostini '+21/-0 (#5707 )') +- avatar [George Cheng](https://github.com/Gerhut '+3/-3 (#5096 )') +- avatar [FatahChan](https://github.com/FatahChan '+2/-2 (#6855 )') +- avatar [Ionuț G. Stan](https://github.com/igstan '+1/-1 (#6661 )') + +## [1.8.4](https://github.com/axios/axios/compare/v1.8.3...v1.8.4) (2025-03-19) + +### Bug Fixes + +- **buildFullPath:** handle `allowAbsoluteUrls: false` without `baseURL` ([#6833](https://github.com/axios/axios/issues/6833)) ([f10c2e0](https://github.com/axios/axios/commit/f10c2e0de7fde0051f848609a29c2906d0caa1d9)) + +### Contributors to this release + +- avatar [Marc Hassan](https://github.com/mhassan1 '+5/-1 (#6833 )') + +## [1.8.3](https://github.com/axios/axios/compare/v1.8.2...v1.8.3) (2025-03-10) + +### Bug Fixes + +- add missing type for allowAbsoluteUrls ([#6818](https://github.com/axios/axios/issues/6818)) ([10fa70e](https://github.com/axios/axios/commit/10fa70ef14fe39558b15a179f0e82f5f5e5d11b2)) +- **xhr/fetch:** pass `allowAbsoluteUrls` to `buildFullPath` in `xhr` and `fetch` adapters ([#6814](https://github.com/axios/axios/issues/6814)) ([ec159e5](https://github.com/axios/axios/commit/ec159e507bdf08c04ba1a10fe7710094e9e50ec9)) + +### Contributors to this release + +- avatar [Ashcon Partovi](https://github.com/Electroid '+6/-0 (#6811 )') +- avatar [StefanBRas](https://github.com/StefanBRas '+4/-0 (#6818 )') +- avatar [Marc Hassan](https://github.com/mhassan1 '+2/-2 (#6814 )') + +## [1.8.2](https://github.com/axios/axios/compare/v1.8.1...v1.8.2) (2025-03-07) + +### Bug Fixes + +- **http-adapter:** add allowAbsoluteUrls to path building ([#6810](https://github.com/axios/axios/issues/6810)) ([fb8eec2](https://github.com/axios/axios/commit/fb8eec214ce7744b5ca787f2c3b8339b2f54b00f)) + +### Contributors to this release + +- avatar [Fasoro-Joseph Alexander](https://github.com/lexcorp16 '+1/-1 (#6810 )') + +## [1.8.1](https://github.com/axios/axios/compare/v1.8.0...v1.8.1) (2025-02-26) + +### Bug Fixes + +- **utils:** move `generateString` to platform utils to avoid importing crypto module into client builds; ([#6789](https://github.com/axios/axios/issues/6789)) ([36a5a62](https://github.com/axios/axios/commit/36a5a620bec0b181451927f13ac85b9888b86cec)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+51/-47 (#6789 )') + +# [1.8.0](https://github.com/axios/axios/compare/v1.7.9...v1.8.0) (2025-02-25) + +### Bug Fixes + +- **examples:** application crashed when navigating examples in browser ([#5938](https://github.com/axios/axios/issues/5938)) ([1260ded](https://github.com/axios/axios/commit/1260ded634ec101dd5ed05d3b70f8e8f899dba6c)) +- missing word in SUPPORT_QUESTION.yml ([#6757](https://github.com/axios/axios/issues/6757)) ([1f890b1](https://github.com/axios/axios/commit/1f890b13f2c25a016f3c84ae78efb769f244133e)) +- **utils:** replace getRandomValues with crypto module ([#6788](https://github.com/axios/axios/issues/6788)) ([23a25af](https://github.com/axios/axios/commit/23a25af0688d1db2c396deb09229d2271cc24f6c)) + +### Features + +- Add config for ignoring absolute URLs ([#5902](https://github.com/axios/axios/issues/5902)) ([#6192](https://github.com/axios/axios/issues/6192)) ([32c7bcc](https://github.com/axios/axios/commit/32c7bcc0f233285ba27dec73a4b1e81fb7a219b3)) + +### Reverts + +- Revert "chore: expose fromDataToStream to be consumable (#6731)" (#6732) ([1317261](https://github.com/axios/axios/commit/1317261125e9c419fe9f126867f64d28f9c1efda)), closes [#6731](https://github.com/axios/axios/issues/6731) [#6732](https://github.com/axios/axios/issues/6732) + +### BREAKING CHANGES + +- code relying on the above will now combine the URLs instead of prefer request URL + +- feat: add config option for allowing absolute URLs + +- fix: add default value for allowAbsoluteUrls in buildFullPath + +- fix: typo in flow control when setting allowAbsoluteUrls + +### Contributors to this release + +- avatar [Michael Toscano](https://github.com/GethosTheWalrus '+42/-8 (#6192 )') +- avatar [Willian Agostini](https://github.com/WillianAgostini '+26/-3 (#6788 #6777 )') +- avatar [Naron](https://github.com/naronchen '+27/-0 (#5901 )') +- avatar [shravan || श्रvan](https://github.com/shravan20 '+7/-3 (#6116 )') +- avatar [Justin Dhillon](https://github.com/justindhillon '+0/-7 (#6312 )') +- avatar [yionr](https://github.com/yionr '+5/-1 (#6129 )') +- avatar [Shin'ya Ueoka](https://github.com/ueokande '+3/-3 (#5935 )') +- avatar [Dan Dascalescu](https://github.com/dandv '+3/-3 (#5908 #6757 )') +- avatar [Nitin Ramnani](https://github.com/NitinRamnani '+2/-2 (#5938 )') +- avatar [Shay Molcho](https://github.com/shaymolcho '+2/-2 (#6770 )') +- avatar [Jay](https://github.com/jasonsaayman '+0/-3 (#6732 )') +- fancy45daddy +- avatar [Habip Akyol](https://github.com/habipakyol '+1/-1 (#6030 )') +- avatar [Bailey Lissington](https://github.com/llamington '+1/-1 (#6771 )') +- avatar [Bernardo da Eira Duarte](https://github.com/bernardoduarte '+1/-1 (#6480 )') +- avatar [Shivam Batham](https://github.com/Shivam-Batham '+1/-1 (#5949 )') +- avatar [Lipin Kariappa](https://github.com/lipinnnnn '+1/-1 (#5936 )') + +## [1.7.9](https://github.com/axios/axios/compare/v1.7.8...v1.7.9) (2024-12-04) + +### Reverts + +- Revert "fix(types): export CJS types from ESM (#6218)" (#6729) ([c44d2f2](https://github.com/axios/axios/commit/c44d2f2316ad289b38997657248ba10de11deb6c)), closes [#6218](https://github.com/axios/axios/issues/6218) [#6729](https://github.com/axios/axios/issues/6729) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman '+596/-108 (#6729 )') + +## [1.7.8](https://github.com/axios/axios/compare/v1.7.7...v1.7.8) (2024-11-25) + +### Bug Fixes + +- allow passing a callback as paramsSerializer to buildURL ([#6680](https://github.com/axios/axios/issues/6680)) ([eac4619](https://github.com/axios/axios/commit/eac4619fe2e0926e876cd260ee21e3690381dbb5)) +- **core:** fixed config merging bug ([#6668](https://github.com/axios/axios/issues/6668)) ([5d99fe4](https://github.com/axios/axios/commit/5d99fe4491202a6268c71e5dcc09192359d73cea)) +- fixed width form to not shrink after 'Send Request' button is clicked ([#6644](https://github.com/axios/axios/issues/6644)) ([7ccd5fd](https://github.com/axios/axios/commit/7ccd5fd42402102d38712c32707bf055be72ab54)) +- **http:** add support for File objects as payload in http adapter ([#6588](https://github.com/axios/axios/issues/6588)) ([#6605](https://github.com/axios/axios/issues/6605)) ([6841d8d](https://github.com/axios/axios/commit/6841d8d18ddc71cc1bd202ffcfddb3f95622eef3)) +- **http:** fixed proxy-from-env module import ([#5222](https://github.com/axios/axios/issues/5222)) ([12b3295](https://github.com/axios/axios/commit/12b32957f1258aee94ef859809ed39f8f88f9dfa)) +- **http:** use `globalThis.TextEncoder` when available ([#6634](https://github.com/axios/axios/issues/6634)) ([df956d1](https://github.com/axios/axios/commit/df956d18febc9100a563298dfdf0f102c3d15410)) +- ios11 breaks when build ([#6608](https://github.com/axios/axios/issues/6608)) ([7638952](https://github.com/axios/axios/commit/763895270f7b50c7c780c3c9807ae8635de952cd)) +- **types:** add missing types for mergeConfig function ([#6590](https://github.com/axios/axios/issues/6590)) ([00de614](https://github.com/axios/axios/commit/00de614cd07b7149af335e202aef0e076c254f49)) +- **types:** export CJS types from ESM ([#6218](https://github.com/axios/axios/issues/6218)) ([c71811b](https://github.com/axios/axios/commit/c71811b00f2fcff558e4382ba913bdac4ad7200e)) +- updated stream aborted error message to be more clear ([#6615](https://github.com/axios/axios/issues/6615)) ([cc3217a](https://github.com/axios/axios/commit/cc3217a612024d83a663722a56d7a98d8759c6d5)) +- use URL API instead of DOM to fix a potential vulnerability warning; ([#6714](https://github.com/axios/axios/issues/6714)) ([0a8d6e1](https://github.com/axios/axios/commit/0a8d6e19da5b9899a2abafaaa06a75ee548597db)) + +### Contributors to this release + +- avatar [Remco Haszing](https://github.com/remcohaszing '+108/-596 (#6218 )') +- avatar [Jay](https://github.com/jasonsaayman '+281/-19 (#6640 #6619 )') +- avatar [Aayush Yadav](https://github.com/aayushyadav020 '+124/-111 (#6617 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+12/-65 (#6714 )') +- avatar [Ell Bradshaw](https://github.com/cincodenada '+29/-0 (#6489 )') +- avatar [Amit Saini](https://github.com/amitsainii '+13/-3 (#5237 )') +- avatar [Tommaso Paulon](https://github.com/guuido '+14/-1 (#6680 )') +- avatar [Akki](https://github.com/Aakash-Rana '+5/-5 (#6668 )') +- avatar [Sampo Silvennoinen](https://github.com/stscoundrel '+3/-3 (#6633 )') +- avatar [Kasper Isager Dalsgarð](https://github.com/kasperisager '+2/-2 (#6634 )') +- avatar [Christian Clauss](https://github.com/cclauss '+4/-0 (#6683 )') +- avatar [Pavan Welihinda](https://github.com/pavan168 '+2/-2 (#5222 )') +- avatar [Taylor Flatt](https://github.com/taylorflatt '+2/-2 (#6615 )') +- avatar [Kenzo Wada](https://github.com/Kenzo-Wada '+2/-2 (#6608 )') +- avatar [Ngole Lawson](https://github.com/echelonnought '+3/-0 (#6644 )') +- avatar [Haven](https://github.com/Baoyx007 '+3/-0 (#6590 )') +- avatar [Shrivali Dutt](https://github.com/shrivalidutt '+1/-1 (#6637 )') +- avatar [Henco Appel](https://github.com/hencoappel '+1/-1 (#6605 )') + +## [1.7.7](https://github.com/axios/axios/compare/v1.7.6...v1.7.7) (2024-08-31) + +### Bug Fixes + +- **fetch:** fix stream handling in Safari by fallback to using a stream reader instead of an async iterator; ([#6584](https://github.com/axios/axios/issues/6584)) ([d198085](https://github.com/axios/axios/commit/d1980854fee1765cd02fa0787adf5d6e34dd9dcf)) +- **http:** fixed support for IPv6 literal strings in url ([#5731](https://github.com/axios/axios/issues/5731)) ([364993f](https://github.com/axios/axios/commit/364993f0d8bc6e0e06f76b8a35d2d0a35cab054c)) + +### Contributors to this release + +- avatar [Rishi556](https://github.com/Rishi556 '+39/-1 (#5731 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+27/-7 (#6584 )') + +## [1.7.6](https://github.com/axios/axios/compare/v1.7.5...v1.7.6) (2024-08-30) + +### Bug Fixes + +- **fetch:** fix content length calculation for FormData payload; ([#6524](https://github.com/axios/axios/issues/6524)) ([085f568](https://github.com/axios/axios/commit/085f56861a83e9ac02c140ad9d68dac540dfeeaa)) +- **fetch:** optimize signals composing logic; ([#6582](https://github.com/axios/axios/issues/6582)) ([df9889b](https://github.com/axios/axios/commit/df9889b83c2cc37e9e6189675a73ab70c60f031f)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+98/-46 (#6582 )') +- avatar [Jacques Germishuys](https://github.com/jacquesg '+5/-1 (#6524 )') +- avatar [kuroino721](https://github.com/kuroino721 '+3/-1 (#6575 )') + +## [1.7.5](https://github.com/axios/axios/compare/v1.7.4...v1.7.5) (2024-08-23) + +### Bug Fixes + +- **adapter:** fix undefined reference to hasBrowserEnv ([#6572](https://github.com/axios/axios/issues/6572)) ([7004707](https://github.com/axios/axios/commit/7004707c4180b416341863bd86913fe4fc2f1df1)) +- **core:** add the missed implementation of AxiosError#status property; ([#6573](https://github.com/axios/axios/issues/6573)) ([6700a8a](https://github.com/axios/axios/commit/6700a8adac06942205f6a7a21421ecb36c4e0852)) +- **core:** fix `ReferenceError: navigator is not defined` for custom environments; ([#6567](https://github.com/axios/axios/issues/6567)) ([fed1a4b](https://github.com/axios/axios/commit/fed1a4b2d78ed4a588c84e09d32749ed01dc2794)) +- **fetch:** fix credentials handling in Cloudflare workers ([#6533](https://github.com/axios/axios/issues/6533)) ([550d885](https://github.com/axios/axios/commit/550d885eb90fd156add7b93bbdc54d30d2f9a98d)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+187/-83 (#6573 #6567 #6566 #6564 #6563 #6557 #6556 #6555 #6554 #6552 )') +- avatar [Antonin Bas](https://github.com/antoninbas '+6/-6 (#6572 )') +- avatar [Hans Otto Wirtz](https://github.com/hansottowirtz '+4/-1 (#6533 )') + +## [1.7.4](https://github.com/axios/axios/compare/v1.7.3...v1.7.4) (2024-08-13) + +### Bug Fixes + +- **sec:** CVE-2024-39338 ([#6539](https://github.com/axios/axios/issues/6539)) ([#6543](https://github.com/axios/axios/issues/6543)) ([6b6b605](https://github.com/axios/axios/commit/6b6b605eaf73852fb2dae033f1e786155959de3a)) +- **sec:** disregard protocol-relative URL to remediate SSRF ([#6539](https://github.com/axios/axios/issues/6539)) ([07a661a](https://github.com/axios/axios/commit/07a661a2a6b9092c4aa640dcc7f724ec5e65bdda)) + +### Contributors to this release + +- avatar [Lev Pachmanov](https://github.com/levpachmanov '+47/-11 (#6543 )') +- avatar [Đỗ Trọng Hải](https://github.com/hainenber '+49/-4 (#6539 )') + +## [1.7.3](https://github.com/axios/axios/compare/v1.7.2...v1.7.3) (2024-08-01) + +### Bug Fixes + +- **adapter:** fix progress event emitting; ([#6518](https://github.com/axios/axios/issues/6518)) ([e3c76fc](https://github.com/axios/axios/commit/e3c76fc9bdd03aa4d98afaf211df943e2031453f)) +- **fetch:** fix withCredentials request config ([#6505](https://github.com/axios/axios/issues/6505)) ([85d4d0e](https://github.com/axios/axios/commit/85d4d0ea0aae91082f04e303dec46510d1b4e787)) +- **xhr:** return original config on errors from XHR adapter ([#6515](https://github.com/axios/axios/issues/6515)) ([8966ee7](https://github.com/axios/axios/commit/8966ee7ea62ecbd6cfb39a905939bcdab5cf6388)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+211/-159 (#6518 #6519 )') +- avatar [Valerii Sidorenko](https://github.com/ValeraS '+3/-3 (#6515 )') +- avatar [prianYu](https://github.com/prianyu '+2/-2 (#6505 )') + +## [1.7.2](https://github.com/axios/axios/compare/v1.7.1...v1.7.2) (2024-05-21) + +### Bug Fixes + +- **fetch:** enhance fetch API detection; ([#6413](https://github.com/axios/axios/issues/6413)) ([4f79aef](https://github.com/axios/axios/commit/4f79aef81b7c4644328365bfc33acf0a9ef595bc)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+3/-3 (#6413 )') + +## [1.7.1](https://github.com/axios/axios/compare/v1.7.0...v1.7.1) (2024-05-20) + +### Bug Fixes + +- **fetch:** fixed ReferenceError issue when TextEncoder is not available in the environment; ([#6410](https://github.com/axios/axios/issues/6410)) ([733f15f](https://github.com/axios/axios/commit/733f15fe5bd2d67e1fadaee82e7913b70d45dc5e)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+14/-9 (#6410 )') + +# [1.7.0](https://github.com/axios/axios/compare/v1.7.0-beta.2...v1.7.0) (2024-05-19) + +### Features + +- **adapter:** add fetch adapter; ([#6371](https://github.com/axios/axios/issues/6371)) ([a3ff99b](https://github.com/axios/axios/commit/a3ff99b59d8ec2ab5dd049e68c043617a4072e42)) + +### Bug Fixes + +- **core/axios:** handle un-writable error stack ([#6362](https://github.com/axios/axios/issues/6362)) ([81e0455](https://github.com/axios/axios/commit/81e0455b7b57fbaf2be16a73ebe0e6591cc6d8f9)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+1015/-127 (#6371 )') +- avatar [Jay](https://github.com/jasonsaayman '+30/-14 ()') +- avatar [Alexandre ABRIOUX](https://github.com/alexandre-abrioux '+56/-6 (#6362 )') + +# [1.7.0-beta.2](https://github.com/axios/axios/compare/v1.7.0-beta.1...v1.7.0-beta.2) (2024-05-19) + +### Bug Fixes + +- **fetch:** capitalize HTTP method names; ([#6395](https://github.com/axios/axios/issues/6395)) ([ad3174a](https://github.com/axios/axios/commit/ad3174a3515c3c2573f4bcb94818d582826f3914)) +- **fetch:** fix & optimize progress capturing for cases when the request data has a nullish value or zero data length ([#6400](https://github.com/axios/axios/issues/6400)) ([95a3e8e](https://github.com/axios/axios/commit/95a3e8e346cfd6a5548e171f2341df3235d0e26b)) +- **fetch:** fix headers getting from a stream response; ([#6401](https://github.com/axios/axios/issues/6401)) ([870e0a7](https://github.com/axios/axios/commit/870e0a76f60d0094774a6a63fa606eec52a381af)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+99/-46 (#6405 #6404 #6401 #6400 #6395 )') + +# [1.7.0-beta.1](https://github.com/axios/axios/compare/v1.7.0-beta.0...v1.7.0-beta.1) (2024-05-07) + +### Bug Fixes + +- **core/axios:** handle un-writable error stack ([#6362](https://github.com/axios/axios/issues/6362)) ([81e0455](https://github.com/axios/axios/commit/81e0455b7b57fbaf2be16a73ebe0e6591cc6d8f9)) +- **fetch:** fix cases when ReadableStream or Response.body are not available; ([#6377](https://github.com/axios/axios/issues/6377)) ([d1d359d](https://github.com/axios/axios/commit/d1d359da347704e8b28d768e61515a3e96c5b072)) +- **fetch:** treat fetch-related TypeError as an AxiosError.ERR_NETWORK error; ([#6380](https://github.com/axios/axios/issues/6380)) ([bb5f9a5](https://github.com/axios/axios/commit/bb5f9a5ab768452de9e166dc28d0ffc234245ef1)) + +### Contributors to this release + +- avatar [Alexandre ABRIOUX](https://github.com/alexandre-abrioux '+56/-6 (#6362 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+42/-17 (#6380 #6377 )') + +# [1.7.0-beta.0](https://github.com/axios/axios/compare/v1.6.8...v1.7.0-beta.0) (2024-04-28) + +### Features + +- **adapter:** add fetch adapter; ([#6371](https://github.com/axios/axios/issues/6371)) ([a3ff99b](https://github.com/axios/axios/commit/a3ff99b59d8ec2ab5dd049e68c043617a4072e42)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+1015/-127 (#6371 )') +- avatar [Jay](https://github.com/jasonsaayman '+30/-14 ()') + +## [1.6.8](https://github.com/axios/axios/compare/v1.6.7...v1.6.8) (2024-03-15) + +### Bug Fixes + +- **AxiosHeaders:** fix AxiosHeaders conversion to an object during config merging ([#6243](https://github.com/axios/axios/issues/6243)) ([2656612](https://github.com/axios/axios/commit/2656612bc10fe2757e9832b708ed773ab340b5cb)) +- **import:** use named export for EventEmitter; ([7320430](https://github.com/axios/axios/commit/7320430aef2e1ba2b89488a0eaf42681165498b1)) +- **vulnerability:** update follow-redirects to 1.15.6 ([#6300](https://github.com/axios/axios/issues/6300)) ([8786e0f](https://github.com/axios/axios/commit/8786e0ff55a8c68d4ca989801ad26df924042e27)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman '+4572/-3446 (#6238 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+30/-0 (#6231 )') +- avatar [Mitchell](https://github.com/Creaous '+9/-9 (#6300 )') +- avatar [Emmanuel](https://github.com/mannoeu '+2/-2 (#6196 )') +- avatar [Lucas Keller](https://github.com/ljkeller '+3/-0 (#6194 )') +- avatar [Aditya Mogili](https://github.com/ADITYA-176 '+1/-1 ()') +- avatar [Miroslav Petrov](https://github.com/petrovmiroslav '+1/-1 (#6243 )') + +## [1.6.7](https://github.com/axios/axios/compare/v1.6.6...v1.6.7) (2024-01-25) + +### Bug Fixes + +- capture async stack only for rejections with native error objects; ([#6203](https://github.com/axios/axios/issues/6203)) ([1a08f90](https://github.com/axios/axios/commit/1a08f90f402336e4d00e9ee82f211c6adb1640b0)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+30/-26 (#6203 )') +- avatar [zhoulixiang](https://github.com/zh-lx '+0/-3 (#6186 )') + +## [1.6.6](https://github.com/axios/axios/compare/v1.6.5...v1.6.6) (2024-01-24) + +### Bug Fixes + +- fixed missed dispatchBeforeRedirect argument ([#5778](https://github.com/axios/axios/issues/5778)) ([a1938ff](https://github.com/axios/axios/commit/a1938ff073fcb0f89011f001dfbc1fa1dc995e39)) +- wrap errors to improve async stack trace ([#5987](https://github.com/axios/axios/issues/5987)) ([123f354](https://github.com/axios/axios/commit/123f354b920f154a209ea99f76b7b2ef3d9ebbab)) + +### Contributors to this release + +- avatar [Ilya Priven](https://github.com/ikonst '+91/-8 (#5987 )') +- avatar [Zao Soula](https://github.com/zaosoula '+6/-6 (#5778 )') + +## [1.6.5](https://github.com/axios/axios/compare/v1.6.4...v1.6.5) (2024-01-05) + +### Bug Fixes + +- **ci:** refactor notify action as a job of publish action; ([#6176](https://github.com/axios/axios/issues/6176)) ([0736f95](https://github.com/axios/axios/commit/0736f95ce8776366dc9ca569f49ba505feb6373c)) +- **dns:** fixed lookup error handling; ([#6175](https://github.com/axios/axios/issues/6175)) ([f4f2b03](https://github.com/axios/axios/commit/f4f2b039dd38eb4829e8583caede4ed6d2dd59be)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+41/-6 (#6176 #6175 )') +- avatar [Jay](https://github.com/jasonsaayman '+6/-1 ()') + +## [1.6.4](https://github.com/axios/axios/compare/v1.6.3...v1.6.4) (2024-01-03) + +### Bug Fixes + +- **security:** fixed formToJSON prototype pollution vulnerability; ([#6167](https://github.com/axios/axios/issues/6167)) ([3c0c11c](https://github.com/axios/axios/commit/3c0c11cade045c4412c242b5727308cff9897a0e)) +- **security:** fixed security vulnerability in follow-redirects ([#6163](https://github.com/axios/axios/issues/6163)) ([75af1cd](https://github.com/axios/axios/commit/75af1cdff5b3a6ca3766d3d3afbc3115bb0811b8)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman '+34/-6 ()') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+34/-3 (#6172 #6167 )') +- avatar [Guy Nesher](https://github.com/gnesher '+10/-10 (#6163 )') + +## [1.6.3](https://github.com/axios/axios/compare/v1.6.2...v1.6.3) (2023-12-26) + +### Bug Fixes + +- Regular Expression Denial of Service (ReDoS) ([#6132](https://github.com/axios/axios/issues/6132)) ([5e7ad38](https://github.com/axios/axios/commit/5e7ad38fb0f819fceb19fb2ee5d5d38f56aa837d)) + +### Contributors to this release + +- avatar [Jay](https://github.com/jasonsaayman '+15/-6 (#6145 )') +- avatar [Willian Agostini](https://github.com/WillianAgostini '+17/-2 (#6132 )') +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+3/-0 (#6084 )') + +## [1.6.2](https://github.com/axios/axios/compare/v1.6.1...v1.6.2) (2023-11-14) + +### Features + +- **withXSRFToken:** added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ([#6046](https://github.com/axios/axios/issues/6046)) ([cff9967](https://github.com/axios/axios/commit/cff996779b272a5e94c2b52f5503ccf668bc42dc)) + +### PRs + +- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) + +``` + +📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. +You should now use withXSRFToken along with withCredential to get the old behavior. +This functionality is considered as a fix. +``` + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+271/-146 (#6081 #6080 #6079 #6078 #6046 #6064 #6063 )') +- avatar [Ng Choon Khon (CK)](https://github.com/ckng0221 '+4/-4 (#6073 )') +- avatar [Muhammad Noman](https://github.com/mnomanmemon '+2/-2 (#6048 )') + +## [1.6.1](https://github.com/axios/axios/compare/v1.6.0...v1.6.1) (2023-11-08) + +### Bug Fixes + +- **formdata:** fixed content-type header normalization for non-standard browser environments; ([#6056](https://github.com/axios/axios/issues/6056)) ([dd465ab](https://github.com/axios/axios/commit/dd465ab22bbfa262c6567be6574bf46a057d5288)) +- **platform:** fixed emulated browser detection in node.js environment; ([#6055](https://github.com/axios/axios/issues/6055)) ([3dc8369](https://github.com/axios/axios/commit/3dc8369e505e32a4e12c22f154c55fd63ac67fbb)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+432/-65 (#6059 #6056 #6055 )') +- avatar [Fabian Meyer](https://github.com/meyfa '+5/-2 (#5835 )') + +### PRs + +- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) ) + +``` + +📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour. +You should now use withXSRFToken along with withCredential to get the old behavior. +This functionality is considered as a fix. +``` + +# [1.6.0](https://github.com/axios/axios/compare/v1.5.1...v1.6.0) (2023-10-26) + +### Bug Fixes + +- **CSRF:** fixed CSRF vulnerability CVE-2023-45857 ([#6028](https://github.com/axios/axios/issues/6028)) ([96ee232](https://github.com/axios/axios/commit/96ee232bd3ee4de2e657333d4d2191cd389e14d0)) +- **dns:** fixed lookup function decorator to work properly in node v20; ([#6011](https://github.com/axios/axios/issues/6011)) ([5aaff53](https://github.com/axios/axios/commit/5aaff532a6b820bb9ab6a8cd0f77131b47e2adb8)) +- **types:** fix AxiosHeaders types; ([#5931](https://github.com/axios/axios/issues/5931)) ([a1c8ad0](https://github.com/axios/axios/commit/a1c8ad008b3c13d53e135bbd0862587fb9d3fc09)) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+449/-114 (#6032 #6021 #6011 #5932 #5931 )') +- avatar [Valentin Panov](https://github.com/valentin-panov '+4/-4 (#6028 )') +- avatar [Rinku Chaudhari](https://github.com/therealrinku '+1/-1 (#5889 )') + +## [1.5.1](https://github.com/axios/axios/compare/v1.5.0...v1.5.1) (2023-09-26) + +### Bug Fixes + +- **adapters:** improved adapters loading logic to have clear error messages; ([#5919](https://github.com/axios/axios/issues/5919)) ([e410779](https://github.com/axios/axios/commit/e4107797a7a1376f6209fbecfbbce73d3faa7859)) +- **formdata:** fixed automatic addition of the `Content-Type` header for FormData in non-browser environments; ([#5917](https://github.com/axios/axios/issues/5917)) ([bc9af51](https://github.com/axios/axios/commit/bc9af51b1886d1b3529617702f2a21a6c0ed5d92)) +- **headers:** allow `content-encoding` header to handle case-insensitive values ([#5890](https://github.com/axios/axios/issues/5890)) ([#5892](https://github.com/axios/axios/issues/5892)) ([4c89f25](https://github.com/axios/axios/commit/4c89f25196525e90a6e75eda9cb31ae0a2e18acd)) +- **types:** removed duplicated code ([9e62056](https://github.com/axios/axios/commit/9e6205630e1c9cf863adf141c0edb9e6d8d4b149)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+89/-18 (#5919 #5917 )') +- avatar [David Dallas](https://github.com/DavidJDallas '+11/-5 ()') +- avatar [Sean Sattler](https://github.com/fb-sean '+2/-8 ()') +- avatar [Mustafa Ateş Uzun](https://github.com/0o001 '+4/-4 ()') +- avatar [Przemyslaw Motacki](https://github.com/sfc-gh-pmotacki '+2/-1 (#5892 )') +- avatar [Michael Di Prisco](https://github.com/Cadienvan '+1/-1 ()') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +# [1.5.0](https://github.com/axios/axios/compare/v1.4.0...v1.5.0) (2023-08-26) + +### Bug Fixes + +- **adapter:** make adapter loading error more clear by using platform-specific adapters explicitly ([#5837](https://github.com/axios/axios/issues/5837)) ([9a414bb](https://github.com/axios/axios/commit/9a414bb6c81796a95c6c7fe668637825458e8b6d)) +- **dns:** fixed `cacheable-lookup` integration; ([#5836](https://github.com/axios/axios/issues/5836)) ([b3e327d](https://github.com/axios/axios/commit/b3e327dcc9277bdce34c7ef57beedf644b00d628)) +- **headers:** added support for setting header names that overlap with class methods; ([#5831](https://github.com/axios/axios/issues/5831)) ([d8b4ca0](https://github.com/axios/axios/commit/d8b4ca0ea5f2f05efa4edfe1e7684593f9f68273)) +- **headers:** fixed common Content-Type header merging; ([#5832](https://github.com/axios/axios/issues/5832)) ([8fda276](https://github.com/axios/axios/commit/8fda2766b1e6bcb72c3fabc146223083ef13ce17)) + +### Features + +- export getAdapter function ([#5324](https://github.com/axios/axios/issues/5324)) ([ca73eb8](https://github.com/axios/axios/commit/ca73eb878df0ae2dace81fe3a7f1fb5986231bf1)) +- **export:** export adapters without `unsafe` prefix ([#5839](https://github.com/axios/axios/issues/5839)) ([1601f4a](https://github.com/axios/axios/commit/1601f4a27a81ab47fea228f1e244b2c4e3ce28bf)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+66/-29 (#5839 #5837 #5836 #5832 #5831 )') +- avatar [夜葬](https://github.com/geekact '+42/-0 (#5324 )') +- avatar [Jonathan Budiman](https://github.com/JBudiman00 '+30/-0 (#5788 )') +- avatar [Michael Di Prisco](https://github.com/Cadienvan '+3/-5 (#5791 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +# [1.4.0](https://github.com/axios/axios/compare/v1.3.6...v1.4.0) (2023-04-27) + +### Bug Fixes + +- **formdata:** add `multipart/form-data` content type for FormData payload on custom client environments; ([#5678](https://github.com/axios/axios/issues/5678)) ([bbb61e7](https://github.com/axios/axios/commit/bbb61e70cb1185adfb1cbbb86eaf6652c48d89d1)) +- **package:** export package internals with unsafe path prefix; ([#5677](https://github.com/axios/axios/issues/5677)) ([df38c94](https://github.com/axios/axios/commit/df38c949f26414d88ba29ec1e353c4d4f97eaf09)) + +### Features + +- **dns:** added support for a custom lookup function; ([#5339](https://github.com/axios/axios/issues/5339)) ([2701911](https://github.com/axios/axios/commit/2701911260a1faa5cc5e1afe437121b330a3b7bb)) +- **types:** export `AxiosHeaderValue` type. ([#5525](https://github.com/axios/axios/issues/5525)) ([726f1c8](https://github.com/axios/axios/commit/726f1c8e00cffa0461a8813a9bdcb8f8b9d762cf)) + +### Performance Improvements + +- **merge-config:** optimize mergeConfig performance by avoiding duplicate key visits; ([#5679](https://github.com/axios/axios/issues/5679)) ([e6f7053](https://github.com/axios/axios/commit/e6f7053bf1a3e87cf1f9da8677e12e3fe829d68e)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+151/-16 (#5684 #5339 #5679 #5678 #5677 )') +- avatar [Arthur Fiorette](https://github.com/arthurfiorette '+19/-19 (#5525 )') +- avatar [PIYUSH NEGI](https://github.com/npiyush97 '+2/-18 (#5670 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.6](https://github.com/axios/axios/compare/v1.3.5...v1.3.6) (2023-04-19) + +### Bug Fixes + +- **types:** added transport to RawAxiosRequestConfig ([#5445](https://github.com/axios/axios/issues/5445)) ([6f360a2](https://github.com/axios/axios/commit/6f360a2531d8d70363fd9becef6a45a323f170e2)) +- **utils:** make isFormData detection logic stricter to avoid unnecessary calling of the `toString` method on the target; ([#5661](https://github.com/axios/axios/issues/5661)) ([aa372f7](https://github.com/axios/axios/commit/aa372f7306295dfd1100c1c2c77ce95c95808e76)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+48/-10 (#5665 #5661 #5663 )') +- avatar [Michael Di Prisco](https://github.com/Cadienvan '+2/-0 (#5445 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.5](https://github.com/axios/axios/compare/v1.3.4...v1.3.5) (2023-04-05) + +### Bug Fixes + +- **headers:** fixed isValidHeaderName to support full list of allowed characters; ([#5584](https://github.com/axios/axios/issues/5584)) ([e7decef](https://github.com/axios/axios/commit/e7decef6a99f4627e27ed9ea5b00ce8e201c3841)) +- **params:** re-added the ability to set the function as `paramsSerializer` config; ([#5633](https://github.com/axios/axios/issues/5633)) ([a56c866](https://github.com/axios/axios/commit/a56c8661209d5ce5a645a05f294a0e08a6c1f6b3)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+28/-10 (#5633 #5584 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.4](https://github.com/axios/axios/compare/v1.3.3...v1.3.4) (2023-02-22) + +### Bug Fixes + +- **blob:** added a check to make sure the Blob class is available in the browser's global scope; ([#5548](https://github.com/axios/axios/issues/5548)) ([3772c8f](https://github.com/axios/axios/commit/3772c8fe74112a56e3e9551f894d899bc3a9443a)) +- **http:** fixed regression bug when handling synchronous errors inside the adapter; ([#5564](https://github.com/axios/axios/issues/5564)) ([a3b246c](https://github.com/axios/axios/commit/a3b246c9de5c3bc4b5a742e15add55b375479451)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+38/-26 (#5564 )') +- avatar [lcysgsg](https://github.com/lcysgsg '+4/-0 (#5548 )') +- avatar [Michael Di Prisco](https://github.com/Cadienvan '+3/-0 (#5444 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.3](https://github.com/axios/axios/compare/v1.3.2...v1.3.3) (2023-02-13) + +### Bug Fixes + +- **formdata:** added a check to make sure the FormData class is available in the browser's global scope; ([#5545](https://github.com/axios/axios/issues/5545)) ([a6dfa72](https://github.com/axios/axios/commit/a6dfa72010db5ad52db8bd13c0f98e537e8fd05d)) +- **formdata:** fixed setting NaN as Content-Length for form payload in some cases; ([#5535](https://github.com/axios/axios/issues/5535)) ([c19f7bf](https://github.com/axios/axios/commit/c19f7bf770f90ae8307f4ea3104f227056912da1)) +- **headers:** fixed the filtering logic of the clear method; ([#5542](https://github.com/axios/axios/issues/5542)) ([ea87ebf](https://github.com/axios/axios/commit/ea87ebfe6d1699af072b9e7cd40faf8f14b0ab93)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+11/-7 (#5545 #5535 #5542 )') +- avatar [陈若枫](https://github.com/ruofee '+2/-2 (#5467 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.2](https://github.com/axios/axios/compare/v1.3.1...v1.3.2) (2023-02-03) + +### Bug Fixes + +- **http:** treat http://localhost as base URL for relative paths to avoid `ERR_INVALID_URL` error; ([#5528](https://github.com/axios/axios/issues/5528)) ([128d56f](https://github.com/axios/axios/commit/128d56f4a0fb8f5f2ed6e0dd80bc9225fee9538c)) +- **http:** use explicit import instead of TextEncoder global; ([#5530](https://github.com/axios/axios/issues/5530)) ([6b3c305](https://github.com/axios/axios/commit/6b3c305fc40c56428e0afabedc6f4d29c2830f6f)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+2/-1 (#5530 #5528 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.3.1](https://github.com/axios/axios/compare/v1.3.0...v1.3.1) (2023-02-01) + +### Bug Fixes + +- **formdata:** add hotfix to use the asynchronous API to compute the content-length header value; ([#5521](https://github.com/axios/axios/issues/5521)) ([96d336f](https://github.com/axios/axios/commit/96d336f527619f21da012fe1f117eeb53e5a2120)) +- **serializer:** fixed serialization of array-like objects; ([#5518](https://github.com/axios/axios/issues/5518)) ([08104c0](https://github.com/axios/axios/commit/08104c028c0f9353897b1b6691d74c440fd0c32d)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+27/-8 (#5521 #5518 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +# [1.3.0](https://github.com/axios/axios/compare/v1.2.6...v1.3.0) (2023-01-31) + +### Bug Fixes + +- **headers:** fixed & optimized clear method; ([#5507](https://github.com/axios/axios/issues/5507)) ([9915635](https://github.com/axios/axios/commit/9915635c69d0ab70daca5738488421f67ca60959)) +- **http:** add zlib headers if missing ([#5497](https://github.com/axios/axios/issues/5497)) ([65e8d1e](https://github.com/axios/axios/commit/65e8d1e28ce829f47a837e45129730e541950d3c)) + +### Features + +- **fomdata:** added support for spec-compliant FormData & Blob types; ([#5316](https://github.com/axios/axios/issues/5316)) ([6ac574e](https://github.com/axios/axios/commit/6ac574e00a06731288347acea1e8246091196953)) + +### Contributors to this release + +- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+352/-67 (#5514 #5512 #5510 #5509 #5508 #5316 #5507 )') +- avatar [ItsNotGoodName](https://github.com/ItsNotGoodName '+43/-2 (#5497 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.6](https://github.com/axios/axios/compare/v1.2.5...v1.2.6) (2023-01-28) + +### Bug Fixes + +- **headers:** added missed Authorization accessor; ([#5502](https://github.com/axios/axios/issues/5502)) ([342c0ba](https://github.com/axios/axios/commit/342c0ba9a16ea50f5ed7d2366c5c1a2c877e3f26)) +- **types:** fixed `CommonRequestHeadersList` & `CommonResponseHeadersList` types to be private in commonJS; ([#5503](https://github.com/axios/axios/issues/5503)) ([5a3d0a3](https://github.com/axios/axios/commit/5a3d0a3234d77361a1bc7cedee2da1e11df08e2c)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+24/-9 (#5503 #5502 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.5](https://github.com/axios/axios/compare/v1.2.4...v1.2.5) (2023-01-26) + +### Bug Fixes + +- **types:** fixed AxiosHeaders to handle spread syntax by making all methods non-enumerable; ([#5499](https://github.com/axios/axios/issues/5499)) ([580f1e8](https://github.com/axios/axios/commit/580f1e8033a61baa38149d59fd16019de3932c22)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+82/-54 (#5499 )') +- ![avatar](https://avatars.githubusercontent.com/u/20516159?v=4&s=16) [Elliot Ford](https://github.com/EFord36 '+1/-1 (#5462 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.4](https://github.com/axios/axios/compare/v1.2.3...v1.2.4) (2023-01-22) + +### Bug Fixes + +- **types:** renamed `RawAxiosRequestConfig` back to `AxiosRequestConfig`; ([#5486](https://github.com/axios/axios/issues/5486)) ([2a71f49](https://github.com/axios/axios/commit/2a71f49bc6c68495fa419003a3107ed8bd703ad0)) +- **types:** fix `AxiosRequestConfig` generic; ([#5478](https://github.com/axios/axios/issues/5478)) ([9bce81b](https://github.com/axios/axios/commit/186ea062da8b7d578ae78b1a5c220986b9bce81b)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+242/-108 (#5486 #5482 )') +- ![avatar](https://avatars.githubusercontent.com/u/9430821?v=4&s=16) [Daniel Hillmann](https://github.com/hilleer '+1/-1 (#5478 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.3](https://github.com/axios/axios/compare/1.2.2...1.2.3) (2023-01-10) + +### Bug Fixes + +- **types:** fixed AxiosRequestConfig header interface by refactoring it to RawAxiosRequestConfig; ([#5420](https://github.com/axios/axios/issues/5420)) ([0811963](https://github.com/axios/axios/commit/08119634a22f1d5b19f5c9ea0adccb6d3eebc3bc)) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+938/-442 (#5456 #5455 #5453 #5451 #5449 #5447 #5446 #5443 #5442 #5439 #5420 )') + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.2] - 2022-12-29 + +### Fixed + +- fix(ci): fix release script inputs [#5392](https://github.com/axios/axios/pull/5392) +- fix(ci): prerelease scipts [#5377](https://github.com/axios/axios/pull/5377) +- fix(ci): release scripts [#5376](https://github.com/axios/axios/pull/5376) +- fix(ci): typescript tests [#5375](https://github.com/axios/axios/pull/5375) +- fix: Brotli decompression [#5353](https://github.com/axios/axios/pull/5353) +- fix: add missing HttpStatusCode [#5345](https://github.com/axios/axios/pull/5345) + +### Chores + +- chore(ci): set conventional-changelog header config [#5406](https://github.com/axios/axios/pull/5406) +- chore(ci): fix automatic contributors resolving [#5403](https://github.com/axios/axios/pull/5403) +- chore(ci): improved logging for the contributors list generator [#5398](https://github.com/axios/axios/pull/5398) +- chore(ci): fix release action [#5397](https://github.com/axios/axios/pull/5397) +- chore(ci): fix version bump script by adding bump argument for target version [#5393](https://github.com/axios/axios/pull/5393) +- chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 [#5342](https://github.com/axios/axios/pull/5342) +- chore(ci): GitHub Actions Release script [#5384](https://github.com/axios/axios/pull/5384) +- chore(ci): release scripts [#5364](https://github.com/axios/axios/pull/5364) + +### Contributors to this release + +- ![avatar](https://avatars.githubusercontent.com/u/12586868?v=4&s=16) [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- ![avatar](https://avatars.githubusercontent.com/u/1652293?v=4&s=16) [Winnie](https://github.com/winniehell) + +## [1.2.1] - 2022-12-05 + +### Changed + +- feat(exports): export mergeConfig [#5151](https://github.com/axios/axios/pull/5151) + +### Fixed + +- fix(CancelledError): include config [#4922](https://github.com/axios/axios/pull/4922) +- fix(general): removing multiple/trailing/leading whitespace [#5022](https://github.com/axios/axios/pull/5022) +- fix(headers): decompression for responses without Content-Length header [#5306](https://github.com/axios/axios/pull/5306) +- fix(webWorker): exception to sending form data in web worker [#5139](https://github.com/axios/axios/pull/5139) + +### Refactors + +- refactor(types): AxiosProgressEvent.event type to any [#5308](https://github.com/axios/axios/pull/5308) +- refactor(types): add missing types for static AxiosError.from method [#4956](https://github.com/axios/axios/pull/4956) + +### Chores + +- chore(docs): remove README link to non-existent upgrade guide [#5307](https://github.com/axios/axios/pull/5307) +- chore(docs): typo in issue template name [#5159](https://github.com/axios/axios/pull/5159) + +### Contributors to this release + +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Zachary Lysobey](https://github.com/zachlysobey) +- [Kevin Ennis](https://github.com/kevincennis) +- [Philipp Loose](https://github.com/phloose) +- [secondl1ght](https://github.com/secondl1ght) +- [wenzheng](https://github.com/0x30) +- [Ivan Barsukov](https://github.com/ovarn) +- [Arthur Fiorette](https://github.com/arthurfiorette) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.2.0] - 2022-11-10 + +### Changed + +- changed: refactored module exports [#5162](https://github.com/axios/axios/pull/5162) +- change: re-added support for loading Axios with require('axios').default [#5225](https://github.com/axios/axios/pull/5225) + +### Fixed + +- fix: improve AxiosHeaders class [#5224](https://github.com/axios/axios/pull/5224) +- fix: TypeScript type definitions for commonjs [#5196](https://github.com/axios/axios/pull/5196) +- fix: type definition of use method on AxiosInterceptorManager to match the the README [#5071](https://github.com/axios/axios/pull/5071) +- fix: \_\_dirname is not defined in the sandbox [#5269](https://github.com/axios/axios/pull/5269) +- fix: AxiosError.toJSON method to avoid circular references [#5247](https://github.com/axios/axios/pull/5247) +- fix: Z_BUF_ERROR when content-encoding is set but the response body is empty [#5250](https://github.com/axios/axios/pull/5250) + +### Refactors + +- refactor: allowing adapters to be loaded by name [#5277](https://github.com/axios/axios/pull/5277) + +### Chores + +- chore: force CI restart [#5243](https://github.com/axios/axios/pull/5243) +- chore: update ECOSYSTEM.md [#5077](https://github.com/axios/axios/pull/5077) +- chore: update get/index.html [#5116](https://github.com/axios/axios/pull/5116) +- chore: update Sandbox UI/UX [#5205](https://github.com/axios/axios/pull/5205) +- chore:(actions): remove git credentials after checkout [#5235](https://github.com/axios/axios/pull/5235) +- chore(actions): bump actions/dependency-review-action from 2 to 3 [#5266](https://github.com/axios/axios/pull/5266) +- chore(packages): bump loader-utils from 1.4.1 to 1.4.2 [#5295](https://github.com/axios/axios/pull/5295) +- chore(packages): bump engine.io from 6.2.0 to 6.2.1 [#5294](https://github.com/axios/axios/pull/5294) +- chore(packages): bump socket.io-parser from 4.0.4 to 4.0.5 [#5241](https://github.com/axios/axios/pull/5241) +- chore(packages): bump loader-utils from 1.4.0 to 1.4.1 [#5245](https://github.com/axios/axios/pull/5245) +- chore(docs): update Resources links in README [#5119](https://github.com/axios/axios/pull/5119) +- chore(docs): update the link for JSON url [#5265](https://github.com/axios/axios/pull/5265) +- chore(docs): fix broken links [#5218](https://github.com/axios/axios/pull/5218) +- chore(docs): update and rename UPGRADE_GUIDE.md to MIGRATION_GUIDE.md [#5170](https://github.com/axios/axios/pull/5170) +- chore(docs): typo fix line #856 and #920 [#5194](https://github.com/axios/axios/pull/5194) +- chore(docs): typo fix #800 [#5193](https://github.com/axios/axios/pull/5193) +- chore(docs): fix typos [#5184](https://github.com/axios/axios/pull/5184) +- chore(docs): fix punctuation in README.md [#5197](https://github.com/axios/axios/pull/5197) +- chore(docs): update readme in the Handling Errors section - issue reference #5260 [#5261](https://github.com/axios/axios/pull/5261) +- chore: remove \b from filename [#5207](https://github.com/axios/axios/pull/5207) +- chore(docs): update CHANGELOG.md [#5137](https://github.com/axios/axios/pull/5137) +- chore: add sideEffects false to package.json [#5025](https://github.com/axios/axios/pull/5025) + +### Contributors to this release + +- [Maddy Miller](https://github.com/me4502) +- [Amit Saini](https://github.com/amitsainii) +- [ecyrbe](https://github.com/ecyrbe) +- [Ikko Ashimine](https://github.com/eltociear) +- [Geeth Gunnampalli](https://github.com/thetechie7) +- [Shreem Asati](https://github.com/shreem-123) +- [Frieder Bluemle](https://github.com/friederbluemle) +- [윤세영](https://github.com/yunseyeong) +- [Claudio Busatto](https://github.com/cjcbusatto) +- [Remco Haszing](https://github.com/remcohaszing) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Csaba Maulis](https://github.com/om4csaba) +- [MoPaMo](https://github.com/MoPaMo) +- [Daniel Fjeldstad](https://github.com/w3bdesign) +- [Adrien Brunet](https://github.com/adrien-may) +- [Frazer Smith](https://github.com/Fdawgs) +- [HaiTao](https://github.com/836334258) +- [AZM](https://github.com/aziyatali) +- [relbns](https://github.com/relbns) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.3] - 2022-10-15 + +### Added + +- Added custom params serializer support [#5113](https://github.com/axios/axios/pull/5113) + +### Fixed + +- Fixed top-level export to keep them in-line with static properties [#5109](https://github.com/axios/axios/pull/5109) +- Stopped including null values to query string. [#5108](https://github.com/axios/axios/pull/5108) +- Restored proxy config backwards compatibility with 0.x [#5097](https://github.com/axios/axios/pull/5097) +- Added back AxiosHeaders in AxiosHeaderValue [#5103](https://github.com/axios/axios/pull/5103) +- Pin CDN install instructions to a specific version [#5060](https://github.com/axios/axios/pull/5060) +- Handling of array values fixed for AxiosHeaders [#5085](https://github.com/axios/axios/pull/5085) + +### Chores + +- docs: match badge style, add link to them [#5046](https://github.com/axios/axios/pull/5046) +- chore: fixing comments typo [#5054](https://github.com/axios/axios/pull/5054) +- chore: update issue template [#5061](https://github.com/axios/axios/pull/5061) +- chore: added progress capturing section to the docs; [#5084](https://github.com/axios/axios/pull/5084) + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) +- [scarf](https://github.com/scarf005) +- [Lenz Weber-Tronic](https://github.com/phryneas) +- [Arvindh](https://github.com/itsarvindh) +- [Félix Legrelle](https://github.com/FelixLgr) +- [Patrick Petrovic](https://github.com/ppati000) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [littledian](https://github.com/littledian) +- [ChronosMasterOfAllTime](https://github.com/ChronosMasterOfAllTime) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.2] - 2022-10-07 + +### Fixed + +- Fixed broken exports for UMD builds. + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.1] - 2022-10-07 + +### Fixed + +- Fixed broken exports for common js. This fix breaks a prior fix, I will fix both issues ASAP but the commonJS use is more impactful. + +### Contributors to this release + +- [Jason Saayman](https://github.com/jasonsaayman) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.1.0] - 2022-10-06 + +### Fixed + +- Fixed missing exports in type definition index.d.ts [#5003](https://github.com/axios/axios/pull/5003) +- Fixed query params composing [#5018](https://github.com/axios/axios/pull/5018) +- Fixed GenericAbortSignal interface by making it more generic [#5021](https://github.com/axios/axios/pull/5021) +- Fixed adding "clear" to AxiosInterceptorManager [#5010](https://github.com/axios/axios/pull/5010) +- Fixed commonjs & umd exports [#5030](https://github.com/axios/axios/pull/5030) +- Fixed inability to access response headers when using axios 1.x with Jest [#5036](https://github.com/axios/axios/pull/5036) + +### Contributors to this release + +- [Trim21](https://github.com/trim21) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [shingo.sasaki](https://github.com/s-sasaki-0529) +- [Ivan Pepelko](https://github.com/ivanpepelko) +- [Richard Kořínek](https://github.com/risa) + +### PRs + +- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) ) + +``` + +⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459 +``` + +## [1.0.0] - 2022-10-04 + +### Added + +- Added stack trace to AxiosError [#4624](https://github.com/axios/axios/pull/4624) +- Add AxiosError to AxiosStatic [#4654](https://github.com/axios/axios/pull/4654) +- Replaced Rollup as our build runner [#4596](https://github.com/axios/axios/pull/4596) +- Added generic TS types for the exposed toFormData helper [#4668](https://github.com/axios/axios/pull/4668) +- Added listen callback function [#4096](https://github.com/axios/axios/pull/4096) +- Added instructions for installing using PNPM [#4207](https://github.com/axios/axios/pull/4207) +- Added generic AxiosAbortSignal TS interface to avoid importing AbortController polyfill [#4229](https://github.com/axios/axios/pull/4229) +- Added axios-url-template in ECOSYSTEM.md [#4238](https://github.com/axios/axios/pull/4238) +- Added a clear() function to the request and response interceptors object so a user can ensure that all interceptors have been removed from an axios instance [#4248](https://github.com/axios/axios/pull/4248) +- Added react hook plugin [#4319](https://github.com/axios/axios/pull/4319) +- Adding HTTP status code for transformResponse [#4580](https://github.com/axios/axios/pull/4580) +- Added blob to the list of protocols supported by the browser [#4678](https://github.com/axios/axios/pull/4678) +- Resolving proxy from env on redirect [#4436](https://github.com/axios/axios/pull/4436) +- Added enhanced toFormData implementation with additional options [4704](https://github.com/axios/axios/pull/4704) +- Adding Canceler parameters config and request [#4711](https://github.com/axios/axios/pull/4711) +- Added automatic payload serialization to application/x-www-form-urlencoded [#4714](https://github.com/axios/axios/pull/4714) +- Added the ability for webpack users to overwrite built-ins [#4715](https://github.com/axios/axios/pull/4715) +- Added string[] to AxiosRequestHeaders type [#4322](https://github.com/axios/axios/pull/4322) +- Added the ability for the url-encoded-form serializer to respect the formSerializer config [#4721](https://github.com/axios/axios/pull/4721) +- Added isCancel type assert [#4293](https://github.com/axios/axios/pull/4293) +- Added data URL support for node.js [#4725](https://github.com/axios/axios/pull/4725) +- Adding types for progress event callbacks [#4675](https://github.com/axios/axios/pull/4675) +- URL params serializer [#4734](https://github.com/axios/axios/pull/4734) +- Added axios.formToJSON method [#4735](https://github.com/axios/axios/pull/4735) +- Bower platform add data protocol [#4804](https://github.com/axios/axios/pull/4804) +- Use WHATWG URL API instead of url.parse() [#4852](https://github.com/axios/axios/pull/4852) +- Add ENUM containing Http Status Codes to typings [#4903](https://github.com/axios/axios/pull/4903) +- Improve typing of timeout in index.d.ts [#4934](https://github.com/axios/axios/pull/4934) + +### Changed + +- Updated AxiosError.config to be optional in the type definition [#4665](https://github.com/axios/axios/pull/4665) +- Updated README emphasizing the URLSearchParam built-in interface over other solutions [#4590](https://github.com/axios/axios/pull/4590) +- Include request and config when creating a CanceledError instance [#4659](https://github.com/axios/axios/pull/4659) +- Changed func-names eslint rule to as-needed [#4492](https://github.com/axios/axios/pull/4492) +- Replacing deprecated substr() with slice() as substr() is deprecated [#4468](https://github.com/axios/axios/pull/4468) +- Updating HTTP links in README.md to use HTTPS [#4387](https://github.com/axios/axios/pull/4387) +- Updated to a better trim() polyfill [#4072](https://github.com/axios/axios/pull/4072) +- Updated types to allow specifying partial default headers on instance create [#4185](https://github.com/axios/axios/pull/4185) +- Expanded isAxiosError types [#4344](https://github.com/axios/axios/pull/4344) +- Updated type definition for axios instance methods [#4224](https://github.com/axios/axios/pull/4224) +- Updated eslint config [#4722](https://github.com/axios/axios/pull/4722) +- Updated Docs [#4742](https://github.com/axios/axios/pull/4742) +- Refactored Axios to use ES2017 [#4787](https://github.com/axios/axios/pull/4787) + +### Deprecated + +- There are multiple deprecations, refactors and fixes provided in this release. Please read through the full release notes to see how this may impact your project and use case. + +### Removed + +- Removed incorrect argument for NetworkError constructor [#4656](https://github.com/axios/axios/pull/4656) +- Removed Webpack [#4596](https://github.com/axios/axios/pull/4596) +- Removed function that transform arguments to array [#4544](https://github.com/axios/axios/pull/4544) + +### Fixed + +- Fixed grammar in README [#4649](https://github.com/axios/axios/pull/4649) +- Fixed code error in README [#4599](https://github.com/axios/axios/pull/4599) +- Optimized the code that checks cancellation [#4587](https://github.com/axios/axios/pull/4587) +- Fix url pointing to defaults.js in README [#4532](https://github.com/axios/axios/pull/4532) +- Use type alias instead of interface for AxiosPromise [#4505](https://github.com/axios/axios/pull/4505) +- Fix some word spelling and lint style in code comments [#4500](https://github.com/axios/axios/pull/4500) +- Edited readme with 3 updated browser icons of Chrome, FireFox and Safari [#4414](https://github.com/axios/axios/pull/4414) +- Bump follow-redirects from 1.14.9 to 1.15.0 [#4673](https://github.com/axios/axios/pull/4673) +- Fixing http tests to avoid hanging when assertions fail [#4435](https://github.com/axios/axios/pull/4435) +- Fix TS definition for AxiosRequestTransformer [#4201](https://github.com/axios/axios/pull/4201) +- Fix grammatical issues in README [#4232](https://github.com/axios/axios/pull/4232) +- Fixing instance.defaults.headers type [#4557](https://github.com/axios/axios/pull/4557) +- Fixed race condition on immediate requests cancellation [#4261](https://github.com/axios/axios/pull/4261) +- Fixing Z_BUF_ERROR when no content [#4701](https://github.com/axios/axios/pull/4701) +- Fixing proxy beforeRedirect regression [#4708](https://github.com/axios/axios/pull/4708) +- Fixed AxiosError status code type [#4717](https://github.com/axios/axios/pull/4717) +- Fixed AxiosError stack capturing [#4718](https://github.com/axios/axios/pull/4718) +- Fixing AxiosRequestHeaders typings [#4334](https://github.com/axios/axios/pull/4334) +- Fixed max body length defaults [#4731](https://github.com/axios/axios/pull/4731) +- Fixed toFormData Blob issue on node>v17 [#4728](https://github.com/axios/axios/pull/4728) +- Bump grunt from 1.5.2 to 1.5.3 [#4743](https://github.com/axios/axios/pull/4743) +- Fixing content-type header repeated [#4745](https://github.com/axios/axios/pull/4745) +- Fixed timeout error message for http [4738](https://github.com/axios/axios/pull/4738) +- Request ignores false, 0 and empty string as body values [#4785](https://github.com/axios/axios/pull/4785) +- Added back missing minified builds [#4805](https://github.com/axios/axios/pull/4805) +- Fixed a type error [#4815](https://github.com/axios/axios/pull/4815) +- Fixed a regression bug with unsubscribing from cancel token; [#4819](https://github.com/axios/axios/pull/4819) +- Remove repeated compression algorithm [#4820](https://github.com/axios/axios/pull/4820) +- The error of calling extend to pass parameters [#4857](https://github.com/axios/axios/pull/4857) +- SerializerOptions.indexes allows boolean | null | undefined [#4862](https://github.com/axios/axios/pull/4862) +- Require interceptors to return values [#4874](https://github.com/axios/axios/pull/4874) +- Removed unused imports [#4949](https://github.com/axios/axios/pull/4949) +- Allow null indexes on formSerializer and paramsSerializer [#4960](https://github.com/axios/axios/pull/4960) + +### Chores + +- Set permissions for GitHub actions [#4765](https://github.com/axios/axios/pull/4765) +- Included githubactions in the dependabot config [#4770](https://github.com/axios/axios/pull/4770) +- Included dependency review [#4771](https://github.com/axios/axios/pull/4771) +- Update security.md [#4784](https://github.com/axios/axios/pull/4784) +- Remove unnecessary spaces [#4854](https://github.com/axios/axios/pull/4854) +- Simplify the import path of AxiosError [#4875](https://github.com/axios/axios/pull/4875) +- Fix Gitpod dead link [#4941](https://github.com/axios/axios/pull/4941) +- Enable syntax highlighting for a code block [#4970](https://github.com/axios/axios/pull/4970) +- Using Logo Axios in Readme.md [#4993](https://github.com/axios/axios/pull/4993) +- Fix markup for note in README [#4825](https://github.com/axios/axios/pull/4825) +- Fix typo and formatting, add colons [#4853](https://github.com/axios/axios/pull/4853) +- Fix typo in readme [#4942](https://github.com/axios/axios/pull/4942) + +### Security + +- Update SECURITY.md [#4687](https://github.com/axios/axios/pull/4687) + +### Contributors to this release + +- [Bertrand Marron](https://github.com/tusbar) +- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS) +- [Dan Mooney](https://github.com/danmooney) +- [Michael Li](https://github.com/xiaoyu-tamu) +- [aong](https://github.com/yxwzaxns) +- [Des Preston](https://github.com/despreston) +- [Ted Robertson](https://github.com/tredondo) +- [zhoulixiang](https://github.com/zh-lx) +- [Arthur Fiorette](https://github.com/arthurfiorette) +- [Kumar Shanu](https://github.com/Kr-Shanu) +- [JALAL](https://github.com/JLL32) +- [Jingyi Lin](https://github.com/MageeLin) +- [Philipp Loose](https://github.com/phloose) +- [Alexander Shchukin](https://github.com/sashsvamir) +- [Dave Cardwell](https://github.com/davecardwell) +- [Cat Scarlet](https://github.com/catscarlet) +- [Luca Pizzini](https://github.com/lpizzinidev) +- [Kai](https://github.com/Schweinepriester) +- [Maxime Bargiel](https://github.com/mbargiel) +- [Brian Helba](https://github.com/brianhelba) +- [reslear](https://github.com/reslear) +- [Jamie Slome](https://github.com/JamieSlome) +- [Landro3](https://github.com/Landro3) +- [rafw87](https://github.com/rafw87) +- [Afzal Sayed](https://github.com/afzalsayed96) +- [Koki Oyatsu](https://github.com/kaishuu0123) +- [Dave](https://github.com/wangcch) +- [暴走老七](https://github.com/baozouai) +- [Spencer](https://github.com/spalger) +- [Adrian Wieprzkowicz](https://github.com/Argeento) +- [Jamie Telin](https://github.com/lejahmie) +- [毛呆](https://github.com/aweikalee) +- [Kirill Shakirov](https://github.com/turisap) +- [Rraji Abdelbari](https://github.com/estarossa0) +- [Jelle Schutter](https://github.com/jelleschutter) +- [Tom Ceuppens](https://github.com/KyorCode) +- [Johann Cooper](https://github.com/JohannCooper) +- [Dimitris Halatsis](https://github.com/mitsos1os) +- [chenjigeng](https://github.com/chenjigeng) +- [João Gabriel Quaresma](https://github.com/joaoGabriel55) +- [Victor Augusto](https://github.com/VictorAugDB) +- [neilnaveen](https://github.com/neilnaveen) +- [Pavlos](https://github.com/psmoros) +- [Kiryl Valkovich](https://github.com/visortelle) +- [Naveen](https://github.com/naveensrinivasan) +- [wenzheng](https://github.com/0x30) +- [hcwhan](https://github.com/hcwhan) +- [Bassel Rachid](https://github.com/basselworkforce) +- [Grégoire Pineau](https://github.com/lyrixx) +- [felipedamin](https://github.com/felipedamin) +- [Karl Horky](https://github.com/karlhorky) +- [Yue JIN](https://github.com/kingyue737) +- [Usman Ali Siddiqui](https://github.com/usman250994) +- [WD](https://github.com/techbirds) +- [Günther Foidl](https://github.com/gfoidl) +- [Stephen Jennings](https://github.com/jennings) +- [C.T.Lin](https://github.com/chentsulin) +- [mia-z](https://github.com/mia-z) +- [Parth Banathia](https://github.com/Parth0105) +- [parth0105pluang](https://github.com/parth0105pluang) +- [Marco Weber](https://github.com/mrcwbr) +- [Luca Pizzini](https://github.com/lpizzinidev) +- [Willian Agostini](https://github.com/WillianAgostini) + +- [Huyen Nguyen](https://github.com/huyenltnguyen) diff --git a/bff/node_modules/axios/LICENSE b/bff/node_modules/axios/LICENSE new file mode 100644 index 0000000..05006a5 --- /dev/null +++ b/bff/node_modules/axios/LICENSE @@ -0,0 +1,7 @@ +# Copyright (c) 2014-present Matt Zabriskie & Collaborators + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/axios/MIGRATION_GUIDE.md b/bff/node_modules/axios/MIGRATION_GUIDE.md new file mode 100644 index 0000000..2e59d9d --- /dev/null +++ b/bff/node_modules/axios/MIGRATION_GUIDE.md @@ -0,0 +1,877 @@ +# Axios Migration Guide + +> **Migrating from Axios 0.x to 1.x** +> +> This guide helps developers upgrade from Axios 0.x to 1.x by documenting breaking changes, providing migration strategies, and offering solutions to common upgrade challenges. + +## Table of Contents + +- [Overview](#overview) +- [Breaking Changes](#breaking-changes) +- [Error Handling Migration](#error-handling-migration) +- [API Changes](#api-changes) +- [Configuration Changes](#configuration-changes) +- [Migration Strategies](#migration-strategies) +- [Common Patterns](#common-patterns) +- [Troubleshooting](#troubleshooting) +- [Resources](#resources) + +## Overview + +Axios 1.x introduced several breaking changes to improve consistency, security, and developer experience. While these changes provide better error handling and more predictable behavior, they require code updates when migrating from 0.x versions. + +### Key Changes Summary + +| Area | 0.x Behavior | 1.x Behavior | Impact | +|------|--------------|--------------|--------| +| Error Handling | Selective throwing | Consistent throwing | High | +| JSON Parsing | Lenient | Strict | Medium | +| Browser Support | IE11+ | Modern browsers | Low-Medium | +| TypeScript | Partial | Full support | Low | + +### Migration Complexity + +- **Simple applications**: 1-2 hours +- **Medium applications**: 1-2 days +- **Large applications with complex error handling**: 3-5 days + +## Breaking Changes + +### 1. Error Handling Changes + +**The most significant change in Axios 1.x is how errors are handled.** + +#### 0.x Behavior +```javascript +// Axios 0.x - Some HTTP error codes didn't throw +axios.get('/api/data') + .then(response => { + // Response interceptor could handle all errors + console.log('Success:', response.data); + }); + +// Response interceptor handled everything +axios.interceptors.response.use( + response => response, + error => { + handleError(error); + // Error was "handled" and didn't propagate + } +); +``` + +#### 1.x Behavior +```javascript +// Axios 1.x - All HTTP errors throw consistently +axios.get('/api/data') + .then(response => { + console.log('Success:', response.data); + }) + .catch(error => { + // Must handle errors at call site or they propagate + console.error('Request failed:', error); + }); + +// Response interceptor must re-throw or return rejected promise +axios.interceptors.response.use( + response => response, + error => { + handleError(error); + // Must explicitly handle propagation + return Promise.reject(error); // or throw error; + } +); +``` + +#### Impact +- **Response interceptors** can no longer "swallow" errors silently +- **Every API call** must handle errors explicitly or they become unhandled promise rejections +- **Centralized error handling** requires new patterns + +### 2. JSON Parsing Changes + +#### 0.x Behavior +```javascript +// Axios 0.x - Lenient JSON parsing +// Would attempt to parse even invalid JSON +response.data; // Might contain partial data or fallbacks +``` + +#### 1.x Behavior +```javascript +// Axios 1.x - Strict JSON parsing +// Throws clear errors for invalid JSON +try { + const data = response.data; +} catch (error) { + // Handle JSON parsing errors explicitly +} +``` + +### 3. Request/Response Transform Changes + +#### 0.x Behavior +```javascript +// Implicit transformations with some edge cases +transformRequest: [function (data) { + // Less predictable behavior + return data; +}] +``` + +#### 1.x Behavior +```javascript +// More consistent transformation pipeline +transformRequest: [function (data, headers) { + // Headers parameter always available + // More predictable behavior + return data; +}] +``` + +### 4. Browser Support Changes + +- **0.x**: Supported IE11 and older browsers +- **1.x**: Requires modern browsers with Promise support +- **Polyfills**: May be needed for older browser support + +## Error Handling Migration + +The error handling changes are the most complex part of migrating to Axios 1.x. Here are proven strategies: + +### Strategy 1: Centralized Error Handling with Error Boundary + +```javascript +// Create a centralized error handler +class ApiErrorHandler { + constructor() { + this.setupInterceptors(); + } + + setupInterceptors() { + axios.interceptors.response.use( + response => response, + error => { + // Centralized error processing + this.processError(error); + + // Return a resolved promise with error info for handled errors + if (this.isHandledError(error)) { + return Promise.resolve({ + data: null, + error: this.normalizeError(error), + handled: true + }); + } + + // Re-throw unhandled errors + return Promise.reject(error); + } + ); + } + + processError(error) { + // Log errors + console.error('API Error:', error); + + // Show user notifications + if (error.response?.status === 401) { + this.handleAuthError(); + } else if (error.response?.status >= 500) { + this.showErrorNotification('Server error occurred'); + } + } + + isHandledError(error) { + // Define which errors are "handled" centrally + const handledStatuses = [401, 403, 404, 422, 500, 502, 503]; + return handledStatuses.includes(error.response?.status); + } + + normalizeError(error) { + return { + status: error.response?.status, + message: error.response?.data?.message || error.message, + code: error.response?.data?.code || error.code + }; + } + + handleAuthError() { + // Redirect to login, clear tokens, etc. + localStorage.removeItem('token'); + window.location.href = '/login'; + } + + showErrorNotification(message) { + // Show user-friendly error message + console.error(message); // Replace with your notification system + } +} + +// Initialize globally +const errorHandler = new ApiErrorHandler(); + +// Usage in components/services +async function fetchUserData(userId) { + try { + const response = await axios.get(`/api/users/${userId}`); + + // Check if error was handled centrally + if (response.handled) { + return { data: null, error: response.error }; + } + + return { data: response.data, error: null }; + } catch (error) { + // Unhandled errors still need local handling + return { data: null, error: { message: 'Unexpected error occurred' } }; + } +} +``` + +### Strategy 2: Wrapper Function Pattern + +```javascript +// Create a wrapper that provides 0.x-like behavior +function createApiWrapper() { + const api = axios.create(); + + // Add response interceptor for centralized handling + api.interceptors.response.use( + response => response, + error => { + // Handle common errors centrally + if (error.response?.status === 401) { + // Handle auth errors + handleAuthError(); + } + + if (error.response?.status >= 500) { + // Handle server errors + showServerErrorNotification(); + } + + // Always reject to maintain error propagation + return Promise.reject(error); + } + ); + + // Wrapper function that mimics 0.x behavior + function safeRequest(requestConfig, options = {}) { + return api(requestConfig) + .then(response => response) + .catch(error => { + if (options.suppressErrors) { + // Return error info instead of throwing + return { + data: null, + error: { + status: error.response?.status, + message: error.response?.data?.message || error.message + } + }; + } + throw error; + }); + } + + return { safeRequest, axios: api }; +} + +// Usage +const { safeRequest } = createApiWrapper(); + +// For calls where you want centralized error handling +const result = await safeRequest( + { method: 'get', url: '/api/data' }, + { suppressErrors: true } +); + +if (result.error) { + // Handle error case + console.log('Request failed:', result.error.message); +} else { + // Handle success case + console.log('Data:', result.data); +} +``` + +### Strategy 3: Global Error Handler with Custom Events + +```javascript +// Set up global error handling with events +class GlobalErrorHandler extends EventTarget { + constructor() { + super(); + this.setupInterceptors(); + } + + setupInterceptors() { + axios.interceptors.response.use( + response => response, + error => { + // Emit custom event for global handling + this.dispatchEvent(new CustomEvent('apiError', { + detail: { error, timestamp: new Date() } + })); + + // Always reject to maintain proper error flow + return Promise.reject(error); + } + ); + } +} + +const globalErrorHandler = new GlobalErrorHandler(); + +// Set up global listeners +globalErrorHandler.addEventListener('apiError', (event) => { + const { error } = event.detail; + + // Centralized error logic + if (error.response?.status === 401) { + handleAuthError(); + } + + if (error.response?.status >= 500) { + showErrorNotification('Server error occurred'); + } +}); + +// Usage remains clean +async function apiCall() { + try { + const response = await axios.get('/api/data'); + return response.data; + } catch (error) { + // Error was already handled globally + // Just handle component-specific logic + return null; + } +} +``` + +## API Changes + +### Request Configuration + +#### 0.x to 1.x Changes +```javascript +// 0.x - Some properties had different defaults +const config = { + timeout: 0, // No timeout by default + maxContentLength: -1, // No limit +}; + +// 1.x - More secure defaults +const config = { + timeout: 0, // Still no timeout, but easier to configure + maxContentLength: 2000, // Default limit for security + maxBodyLength: 2000, // New property +}; +``` + +### Response Object + +The response object structure remains largely the same, but error responses are more consistent: + +```javascript +// Both 0.x and 1.x +response = { + data: {}, // Response body + status: 200, // HTTP status + statusText: 'OK', // HTTP status message + headers: {}, // Response headers + config: {}, // Request config + request: {} // Request object +}; + +// Error responses are more consistent in 1.x +error.response = { + data: {}, // Error response body + status: 404, // HTTP error status + statusText: 'Not Found', + headers: {}, + config: {}, + request: {} +}; +``` + +## Configuration Changes + +### Default Configuration Updates + +```javascript +// 0.x defaults +axios.defaults.timeout = 0; // No timeout +axios.defaults.maxContentLength = -1; // No limit + +// 1.x defaults (more secure) +axios.defaults.timeout = 0; // Still no timeout +axios.defaults.maxContentLength = 2000; // 2MB limit +axios.defaults.maxBodyLength = 2000; // 2MB limit +``` + +### Instance Configuration + +```javascript +// 0.x - Instance creation +const api = axios.create({ + baseURL: 'https://api.example.com', + timeout: 1000, +}); + +// 1.x - Same API, but more options available +const api = axios.create({ + baseURL: 'https://api.example.com', + timeout: 1000, + maxBodyLength: Infinity, // Override default if needed + maxContentLength: Infinity, +}); +``` + +## Migration Strategies + +### Step-by-Step Migration Process + +#### Phase 1: Preparation +1. **Audit Current Error Handling** + ```bash + # Find all axios usage + grep -r "axios\." src/ + grep -r "\.catch" src/ + grep -r "interceptors" src/ + ``` + +2. **Identify Patterns** + - Response interceptors that handle errors + - Components that rely on centralized error handling + - Authentication and retry logic + +3. **Create Test Cases** + ```javascript + // Test current error handling behavior + describe('Error Handling Migration', () => { + it('should handle 401 errors consistently', async () => { + // Test authentication error flows + }); + + it('should handle 500 errors with user feedback', async () => { + // Test server error handling + }); + }); + ``` + +#### Phase 2: Implementation +1. **Update Dependencies** + ```bash + npm update axios + ``` + +2. **Implement New Error Handling** + - Choose one of the strategies above + - Update response interceptors + - Add error handling to API calls + +3. **Update Authentication Logic** + ```javascript + // 0.x pattern + axios.interceptors.response.use(null, error => { + if (error.response?.status === 401) { + logout(); + // Error was "handled" + } + }); + + // 1.x pattern + axios.interceptors.response.use( + response => response, + error => { + if (error.response?.status === 401) { + logout(); + } + return Promise.reject(error); // Always propagate + } + ); + ``` + +#### Phase 3: Testing and Validation +1. **Test Error Scenarios** + - Network failures + - HTTP error codes (401, 403, 404, 500, etc.) + - Timeout errors + - JSON parsing errors + +2. **Validate User Experience** + - Error messages are shown appropriately + - Authentication redirects work + - Loading states are handled correctly + +### Gradual Migration Approach + +For large applications, consider gradual migration: + +```javascript +// Create a compatibility layer +const axiosCompat = { + // Use new axios instance for new code + v1: axios.create({ + // 1.x configuration + }), + + // Wrapper for legacy code + legacy: createLegacyWrapper(axios.create({ + // Configuration that mimics 0.x behavior + })) +}; + +function createLegacyWrapper(axiosInstance) { + // Add interceptors that provide 0.x-like behavior + axiosInstance.interceptors.response.use( + response => response, + error => { + // Handle errors in 0.x style for legacy code + handleLegacyError(error); + // Don't propagate certain errors + if (shouldSuppressError(error)) { + return Promise.resolve({ data: null, error: true }); + } + return Promise.reject(error); + } + ); + + return axiosInstance; +} +``` + +## Common Patterns + +### Authentication Interceptors + +#### Updated Authentication Pattern +```javascript +// Token refresh interceptor for 1.x +let isRefreshing = false; +let refreshSubscribers = []; + +function subscribeTokenRefresh(cb) { + refreshSubscribers.push(cb); +} + +function onTokenRefreshed(token) { + refreshSubscribers.forEach(cb => cb(token)); + refreshSubscribers = []; +} + +axios.interceptors.response.use( + response => response, + async error => { + const originalRequest = error.config; + + if (error.response?.status === 401 && !originalRequest._retry) { + if (isRefreshing) { + // Wait for token refresh + return new Promise(resolve => { + subscribeTokenRefresh(token => { + originalRequest.headers.Authorization = `Bearer ${token}`; + resolve(axios(originalRequest)); + }); + }); + } + + originalRequest._retry = true; + isRefreshing = true; + + try { + const newToken = await refreshToken(); + onTokenRefreshed(newToken); + isRefreshing = false; + + originalRequest.headers.Authorization = `Bearer ${newToken}`; + return axios(originalRequest); + } catch (refreshError) { + isRefreshing = false; + logout(); + return Promise.reject(refreshError); + } + } + + return Promise.reject(error); + } +); +``` + +### Retry Logic + +```javascript +// Retry interceptor for 1.x +function createRetryInterceptor(maxRetries = 3, retryDelay = 1000) { + return axios.interceptors.response.use( + response => response, + async error => { + const config = error.config; + + if (!config || !config.retry) { + return Promise.reject(error); + } + + config.__retryCount = config.__retryCount || 0; + + if (config.__retryCount >= maxRetries) { + return Promise.reject(error); + } + + config.__retryCount += 1; + + // Exponential backoff + const delay = retryDelay * Math.pow(2, config.__retryCount - 1); + await new Promise(resolve => setTimeout(resolve, delay)); + + return axios(config); + } + ); +} + +// Usage +const api = axios.create(); +createRetryInterceptor(3, 1000); + +// Make request with retry +api.get('/api/data', { retry: true }); +``` + +### Loading State Management + +```javascript +// Loading interceptor for 1.x +class LoadingManager { + constructor() { + this.requests = new Set(); + this.setupInterceptors(); + } + + setupInterceptors() { + axios.interceptors.request.use(config => { + this.requests.add(config); + this.updateLoadingState(); + return config; + }); + + axios.interceptors.response.use( + response => { + this.requests.delete(response.config); + this.updateLoadingState(); + return response; + }, + error => { + this.requests.delete(error.config); + this.updateLoadingState(); + return Promise.reject(error); + } + ); + } + + updateLoadingState() { + const isLoading = this.requests.size > 0; + // Update your loading UI + document.body.classList.toggle('loading', isLoading); + } +} + +const loadingManager = new LoadingManager(); +``` + +## Troubleshooting + +### Common Migration Issues + +#### Issue 1: Unhandled Promise Rejections + +**Problem:** +```javascript +// This pattern worked in 0.x but causes unhandled rejections in 1.x +axios.get('/api/data'); // No .catch() handler +``` + +**Solution:** +```javascript +// Always handle promises +axios.get('/api/data') + .catch(error => { + // Handle error appropriately + console.error('Request failed:', error.message); + }); + +// Or use async/await with try/catch +async function fetchData() { + try { + const response = await axios.get('/api/data'); + return response.data; + } catch (error) { + console.error('Request failed:', error.message); + return null; + } +} +``` + +#### Issue 2: Response Interceptors Not "Handling" Errors + +**Problem:** +```javascript +// 0.x style - interceptor "handled" errors +axios.interceptors.response.use(null, error => { + showErrorMessage(error.message); + // Error was considered "handled" +}); +``` + +**Solution:** +```javascript +// 1.x style - explicitly control error propagation +axios.interceptors.response.use( + response => response, + error => { + showErrorMessage(error.message); + + // Choose whether to propagate the error + if (shouldPropagateError(error)) { + return Promise.reject(error); + } + + // Return success-like response for "handled" errors + return Promise.resolve({ + data: null, + handled: true, + error: normalizeError(error) + }); + } +); +``` + +#### Issue 3: JSON Parsing Errors + +**Problem:** +```javascript +// 1.x is stricter about JSON parsing +// This might throw where 0.x was lenient +const data = response.data; +``` + +**Solution:** +```javascript +// Add response transformer for better error handling +axios.defaults.transformResponse = [ + function (data) { + if (typeof data === 'string') { + try { + return JSON.parse(data); + } catch (e) { + // Handle JSON parsing errors gracefully + console.warn('Invalid JSON response:', data); + return { error: 'Invalid JSON', rawData: data }; + } + } + return data; + } +]; +``` + +#### Issue 4: TypeScript Errors After Upgrade + +**Problem:** +```typescript +// TypeScript errors after upgrade +const response = await axios.get('/api/data'); +// Property 'someProperty' does not exist on type 'any' +``` + +**Solution:** +```typescript +// Define proper interfaces +interface ApiResponse { + data: any; + message: string; + success: boolean; +} + +const response = await axios.get('/api/data'); +// Now properly typed +console.log(response.data.data); +``` + +### Debug Migration Issues + +#### Enable Debug Logging +```javascript +// Add request/response logging +axios.interceptors.request.use(config => { + console.log('Request:', config); + return config; +}); + +axios.interceptors.response.use( + response => { + console.log('Response:', response); + return response; + }, + error => { + console.log('Error:', error); + return Promise.reject(error); + } +); +``` + +#### Compare Behavior +```javascript +// Create side-by-side comparison during migration +const axios0x = require('axios-0x'); // Keep old version for testing +const axios1x = require('axios'); + +async function compareRequests(config) { + try { + const [result0x, result1x] = await Promise.allSettled([ + axios0x(config), + axios1x(config) + ]); + + console.log('0.x result:', result0x); + console.log('1.x result:', result1x); + } catch (error) { + console.log('Comparison error:', error); + } +} +``` + +## Resources + +### Official Documentation +- [Axios 1.x Documentation](https://axios-http.com/) +- [Axios GitHub Repository](https://github.com/axios/axios) +- [Axios Changelog](https://github.com/axios/axios/blob/main/CHANGELOG.md) + +### Migration Tools +- [Axios Migration Codemod](https://github.com/axios/axios-migration-codemod) *(if available)* +- [ESLint Rules for Axios 1.x](https://github.com/axios/eslint-plugin-axios) *(if available)* + +### Community Resources +- [Stack Overflow - Axios Migration Questions](https://stackoverflow.com/questions/tagged/axios+migration) +- [GitHub Discussions](https://github.com/axios/axios/discussions) +- [Axios Discord Community](https://discord.gg/axios) *(if available)* + +### Related Issues +- [Error Handling Changes Discussion](https://github.com/axios/axios/issues/7208) +- [Migration Guide Request](https://github.com/axios/axios/issues/xxxx) *(link to related issues)* + +--- + +## Need Help? + +If you encounter issues during migration that aren't covered in this guide: + +1. **Search existing issues** in the [Axios GitHub repository](https://github.com/axios/axios/issues) +2. **Ask questions** in [GitHub Discussions](https://github.com/axios/axios/discussions) +3. **Contribute improvements** to this migration guide + +--- + +*This migration guide is maintained by the community. If you find errors or have suggestions, please [open an issue](https://github.com/axios/axios/issues) or submit a pull request.* \ No newline at end of file diff --git a/bff/node_modules/axios/README.md b/bff/node_modules/axios/README.md new file mode 100644 index 0000000..770b1a8 --- /dev/null +++ b/bff/node_modules/axios/README.md @@ -0,0 +1,1946 @@ +

💎 Platinum sponsors

THANKS.DEV

We're passionate about making open source sustainable. Scan your dependancy tree to better understand which open source projects need funding the...

thanks.dev

+
💜 Become a sponsor +
+

🥇 Gold sponsors

Principal Financial Group

We’re bound by one common purpose: to give you the financial tools, resources and information you ne...

www.principal.com

+
Buy Instagram Followers Twicsy

Buy real Instagram followers from Twicsy starting at only $2.97. Twicsy has been voted the best site...

twicsy.com

+
Descope

Hi, we're Descope! We are building something in the authentication space for app developers and...

Website | Docs | Community

+
Route4Me

Best Route Planning And Route Optimization Software

Explore | Free Trial | Contact

+
Buzzoid - Buy Instagram Followers

At Buzzoid, you can buy Instagram followers quickly, safely, and easily with just a few clicks. Rate...

buzzoid.com

+
Poprey - Buy Instagram Likes

Buy Instagram Likes

poprey.com

+
Requestly

A lightweight open-source API Development, Testing & Mocking platform

requestly.com

+
💜 Become a sponsor + 💜 Become a sponsor +
+ + + +

+ +
+ Axios
+
+ +

Promise based HTTP client for the browser and node.js

+ +

+ Website • + Documentation +

+ +
+ +[![npm version](https://img.shields.io/npm/v/axios.svg?style=flat-square)](https://www.npmjs.org/package/axios) +[![CDNJS](https://img.shields.io/cdnjs/v/axios.svg?style=flat-square)](https://cdnjs.com/libraries/axios) +[![Build status](https://img.shields.io/github/actions/workflow/status/axios/axios/ci.yml?branch=v1.x&label=CI&logo=github&style=flat-square)](https://github.com/axios/axios/actions/workflows/ci.yml) +[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod&style=flat-square)](https://gitpod.io/#https://github.com/axios/axios) +[![code coverage](https://img.shields.io/coveralls/mzabriskie/axios.svg?style=flat-square)](https://coveralls.io/r/mzabriskie/axios) +[![install size](https://img.shields.io/badge/dynamic/json?url=https://packagephobia.com/v2/api.json?p=axios&query=$.install.pretty&label=install%20size&style=flat-square)](https://packagephobia.now.sh/result?p=axios) +[![npm bundle size](https://img.shields.io/bundlephobia/minzip/axios?style=flat-square)](https://bundlephobia.com/package/axios@latest) +[![npm downloads](https://img.shields.io/npm/dm/axios.svg?style=flat-square)](https://npm-stat.com/charts.html?package=axios) +[![gitter chat](https://img.shields.io/gitter/room/mzabriskie/axios.svg?style=flat-square)](https://gitter.im/mzabriskie/axios) +[![code helpers](https://www.codetriage.com/axios/axios/badges/users.svg)](https://www.codetriage.com/axios/axios) +[![Known Vulnerabilities](https://snyk.io/test/npm/axios/badge.svg)](https://snyk.io/test/npm/axios) +[![Contributors](https://img.shields.io/github/contributors/axios/axios.svg?style=flat-square)](CONTRIBUTORS.md) + +
+ +## Table of Contents + +- [Features](#features) +- [Browser Support](#browser-support) +- [Installing](#installing) + - [Package manager](#package-manager) + - [CDN](#cdn) +- [Example](#example) +- [Axios API](#axios-api) +- [Request method aliases](#request-method-aliases) +- [Concurrency 👎](#concurrency-deprecated) +- [Creating an instance](#creating-an-instance) +- [Instance methods](#instance-methods) +- [Request Config](#request-config) +- [Response Schema](#response-schema) +- [Config Defaults](#config-defaults) + - [Global axios defaults](#global-axios-defaults) + - [Custom instance defaults](#custom-instance-defaults) + - [Config order of precedence](#config-order-of-precedence) +- [Interceptors](#interceptors) + - [Multiple Interceptors](#multiple-interceptors) +- [Handling Errors](#handling-errors) +- [Handling Timeouts](#handling-timeouts) +- [Cancellation](#cancellation) + - [AbortController](#abortcontroller) + - [CancelToken 👎](#canceltoken-deprecated) +- [Using application/x-www-form-urlencoded format](#using-applicationx-www-form-urlencoded-format) + - [URLSearchParams](#urlsearchparams) + - [Query string](#query-string-older-browsers) + - [🆕 Automatic serialization](#-automatic-serialization-to-urlsearchparams) +- [Using multipart/form-data format](#using-multipartform-data-format) + - [FormData](#formdata) + - [🆕 Automatic serialization](#-automatic-serialization-to-formdata) +- [Files Posting](#files-posting) +- [HTML Form Posting](#-html-form-posting-browser) +- [🆕 Progress capturing](#-progress-capturing) +- [🆕 Rate limiting](#-rate-limiting) +- [🆕 AxiosHeaders](#-axiosheaders) +- [🔥 Fetch adapter](#-fetch-adapter) + - [🔥 Custom fetch](#-custom-fetch) + - [🔥 Using with Tauri](#-using-with-tauri) + - [🔥 Using with SvelteKit](#-using-with-sveltekit-) +- [🔥 HTTP2](#-http2) +- [Semver](#semver) +- [Promises](#promises) +- [TypeScript](#typescript) +- [Resources](#resources) +- [Credits](#credits) +- [License](#license) + +## Features + +- **Browser Requests:** Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) directly from the browser. +- **Node.js Requests:** Make [http](https://nodejs.org/api/http.html) requests from Node.js environments. +- **Promise-based:** Fully supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API for easier asynchronous code. +- **Interceptors:** Intercept requests and responses to add custom logic or transform data. +- **Data Transformation:** Transform request and response data automatically. +- **Request Cancellation:** Cancel requests using built-in mechanisms. +- **Automatic JSON Handling:** Automatically serializes and parses [JSON](https://www.json.org/json-en.html) data. +- **Form Serialization:** 🆕 Automatically serializes data objects to `multipart/form-data` or `x-www-form-urlencoded` formats. +- **XSRF Protection:** Client-side support to protect against [Cross-Site Request Forgery](https://en.wikipedia.org/wiki/Cross-site_request_forgery). + +## Browser Support + +| Chrome | Firefox | Safari | Opera | Edge | +| :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------: | +| ![Chrome browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Firefox browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/firefox/firefox_48x48.png) | ![Safari browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/safari/safari_48x48.png) | ![Opera browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera_48x48.png) | ![Edge browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) | +| Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | + +[![Browser Matrix](https://saucelabs.com/open_sauce/build_matrix/axios.svg)](https://saucelabs.com/u/axios) + +## Installing + +### Package manager + +Using npm: + +```bash +$ npm install axios +``` + +Using bower: + +```bash +$ bower install axios +``` + +Using yarn: + +```bash +$ yarn add axios +``` + +Using pnpm: + +```bash +$ pnpm add axios +``` + +Using bun: + +```bash +$ bun add axios +``` + +Once the package is installed, you can import the library using `import` or `require` approach: + +```js +import axios, { isCancel, AxiosError } from "axios"; +``` + +You can also use the default export, since the named export is just a re-export from the Axios factory: + +```js +import axios from "axios"; + +console.log(axios.isCancel("something")); +``` + +If you use `require` for importing, **only the default export is available**: + +```js +const axios = require("axios"); + +console.log(axios.isCancel("something")); +``` + +For some bundlers and some ES6 linters you may need to do the following: + +```js +import { default as axios } from "axios"; +``` + +For cases where something went wrong when trying to import a module into a custom or legacy environment, +you can try importing the module package directly: + +```js +const axios = require("axios/dist/browser/axios.cjs"); // browser commonJS bundle (ES2017) +// const axios = require('axios/dist/node/axios.cjs'); // node commonJS bundle (ES2017) +``` + +### CDN + +Using jsDelivr CDN (ES5 UMD browser module): + +```html + +``` + +Using unpkg CDN: + +```html + +``` + +## Example + +```js +import axios from "axios"; +//const axios = require('axios'); // legacy way + +try { + const response = await axios.get("/user?ID=12345"); + console.log(response); +} catch (error) { + console.error(error); +} + +// Optionally the request above could also be done as +axios + .get("/user", { + params: { + ID: 12345, + }, + }) + .then(function (response) { + console.log(response); + }) + .catch(function (error) { + console.log(error); + }) + .finally(function () { + // always executed + }); + +// Want to use async/await? Add the `async` keyword to your outer function/method. +async function getUser() { + try { + const response = await axios.get("/user?ID=12345"); + console.log(response); + } catch (error) { + console.error(error); + } +} +``` + +> **Note**: `async/await` is part of ECMAScript 2017 and is not supported in Internet +> Explorer and older browsers, so use with caution. + +Performing a `POST` request + +```js +const response = await axios.post("/user", { + firstName: "Fred", + lastName: "Flintstone", +}); +console.log(response); +``` + +Performing multiple concurrent requests + +```js +function getUserAccount() { + return axios.get("/user/12345"); +} + +function getUserPermissions() { + return axios.get("/user/12345/permissions"); +} + +Promise.all([getUserAccount(), getUserPermissions()]).then(function (results) { + const acct = results[0]; + const perm = results[1]; +}); +``` + +## axios API + +Requests can be made by passing the relevant config to `axios`. + +##### axios(config) + +```js +// Send a POST request +axios({ + method: "post", + url: "/user/12345", + data: { + firstName: "Fred", + lastName: "Flintstone", + }, +}); +``` + +```js +// GET request for remote image in node.js +const response = await axios({ + method: "get", + url: "https://bit.ly/2mTM3nY", + responseType: "stream", +}); +response.data.pipe(fs.createWriteStream("ada_lovelace.jpg")); +``` + +##### axios(url[, config]) + +```js +// Send a GET request (default method) +axios("/user/12345"); +``` + +### Request method aliases + +For convenience, aliases have been provided for all common request methods. + +##### axios.request(config) + +##### axios.get(url[, config]) + +##### axios.delete(url[, config]) + +##### axios.head(url[, config]) + +##### axios.options(url[, config]) + +##### axios.post(url[, data[, config]]) + +##### axios.put(url[, data[, config]]) + +##### axios.patch(url[, data[, config]]) + +###### NOTE + +When using the alias methods `url`, `method`, and `data` properties don't need to be specified in config. + +### Concurrency (Deprecated) + +Please use `Promise.all` to replace the below functions. + +Helper functions for dealing with concurrent requests. + +axios.all(iterable) +axios.spread(callback) + +### Creating an instance + +You can create a new instance of axios with a custom config. + +##### axios.create([config]) + +```js +const instance = axios.create({ + baseURL: "https://some-domain.com/api/", + timeout: 1000, + headers: { "X-Custom-Header": "foobar" }, +}); +``` + +### Instance methods + +The available instance methods are listed below. The specified config will be merged with the instance config. + +##### axios#request(config) + +##### axios#get(url[, config]) + +##### axios#delete(url[, config]) + +##### axios#head(url[, config]) + +##### axios#options(url[, config]) + +##### axios#post(url[, data[, config]]) + +##### axios#put(url[, data[, config]]) + +##### axios#patch(url[, data[, config]]) + +##### axios#getUri([config]) + +## Request Config + +These are the available config options for making requests. Only the `url` is required. Requests will default to `GET` if `method` is not specified. + +```js +{ + // `url` is the server URL that will be used for the request + url: '/user', + + // `method` is the request method to be used when making the request + method: 'get', // default + + // `baseURL` will be prepended to `url` unless `url` is absolute and the option `allowAbsoluteUrls` is set to true. + // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs + // to the methods of that instance. + baseURL: 'https://some-domain.com/api/', + + // `allowAbsoluteUrls` determines whether or not absolute URLs will override a configured `baseUrl`. + // When set to true (default), absolute values for `url` will override `baseUrl`. + // When set to false, absolute values for `url` will always be prepended by `baseUrl`. + allowAbsoluteUrls: true, + + // `transformRequest` allows changes to the request data before it is sent to the server + // This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE' + // The last function in the array must return a string or an instance of Buffer, ArrayBuffer, + // FormData or Stream + // You may modify the headers object. + transformRequest: [function (data, headers) { + // Do whatever you want to transform the data + + return data; + }], + + // `transformResponse` allows changes to the response data to be made before + // it is passed to then/catch + transformResponse: [function (data) { + // Do whatever you want to transform the data + + return data; + }], + + // `headers` are custom headers to be sent + headers: {'X-Requested-With': 'XMLHttpRequest'}, + + // `params` are the URL parameters to be sent with the request + // Must be a plain object or a URLSearchParams object + params: { + ID: 12345 + }, + + // `paramsSerializer` is an optional config that allows you to customize serializing `params`. + paramsSerializer: { + + // Custom encoder function which sends key/value pairs in an iterative fashion. + encode?: (param: string): string => { /* Do custom operations here and return transformed string */ }, + + // Custom serializer function for the entire parameter. Allows the user to mimic pre 1.x behaviour. + serialize?: (params: Record, options?: ParamsSerializerOptions ), + + // Configuration for formatting array indexes in the params. + indexes: false // Three available options: (1) indexes: null (leads to no brackets), (2) (default) indexes: false (leads to empty brackets), (3) indexes: true (leads to brackets with indexes). + }, + + // `data` is the data to be sent as the request body + // Only applicable for request methods 'PUT', 'POST', 'DELETE', and 'PATCH' + // When no `transformRequest` is set, it must be of one of the following types: + // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams + // - Browser only: FormData, File, Blob + // - Node only: Stream, Buffer, FormData (form-data package) + data: { + firstName: 'Fred' + }, + + // syntax alternative to send data into the body + // method post + // only the value is sent, not the key + data: 'Country=Brasil&City=Belo Horizonte', + + // `timeout` specifies the number of milliseconds before the request times out. + // If the request takes longer than `timeout`, the request will be aborted. + timeout: 1000, // default is `0` (no timeout) + + // `withCredentials` indicates whether or not cross-site Access-Control requests + // should be made using credentials + withCredentials: false, // default + + // `adapter` allows custom handling of requests which makes testing easier. + // Return a promise and supply a valid response (see lib/adapters/README.md) + adapter: function (config) { + /* ... */ + }, + // Also, you can set the name of the built-in adapter, or provide an array with their names + // to choose the first available in the environment + adapter: 'xhr', // 'fetch' | 'http' | ['xhr', 'http', 'fetch'] + + // `auth` indicates that HTTP Basic auth should be used, and supplies credentials. + // This will set an `Authorization` header, overwriting any existing + // `Authorization` custom headers you have set using `headers`. + // Please note that only HTTP Basic auth is configurable through this parameter. + // For Bearer tokens and such, use `Authorization` custom headers instead. + auth: { + username: 'janedoe', + password: 's00pers3cret' + }, + + // `responseType` indicates the type of data that the server will respond with + // options are: 'arraybuffer', 'document', 'json', 'text', 'stream' + // browser only: 'blob' + responseType: 'json', // default + + // `responseEncoding` indicates encoding to use for decoding responses (Node.js only) + // Note: Ignored for `responseType` of 'stream' or client-side requests + // options are: 'ascii', 'ASCII', 'ansi', 'ANSI', 'binary', 'BINARY', 'base64', 'BASE64', 'base64url', + // 'BASE64URL', 'hex', 'HEX', 'latin1', 'LATIN1', 'ucs-2', 'UCS-2', 'ucs2', 'UCS2', 'utf-8', 'UTF-8', + // 'utf8', 'UTF8', 'utf16le', 'UTF16LE' + responseEncoding: 'utf8', // default + + // `xsrfCookieName` is the name of the cookie to use as a value for the xsrf token + xsrfCookieName: 'XSRF-TOKEN', // default + + // `xsrfHeaderName` is the name of the http header that carries the xsrf token value + xsrfHeaderName: 'X-XSRF-TOKEN', // default + + // `undefined` (default) - set XSRF header only for the same origin requests + withXSRFToken: boolean | undefined | ((config: InternalAxiosRequestConfig) => boolean | undefined), + + // `withXSRFToken` controls whether Axios reads the XSRF cookie and sets the XSRF header. + // - `undefined` (default): the XSRF header is set only for same-origin requests. + // - `true`: attempt to set the XSRF header for all requests (including cross-origin). + // - `false`: never set the XSRF header. + // - function: a callback that receives the request `config` and returns `true`, + // `false`, or `undefined` to decide per-request behavior. + // + // Note about `withCredentials`: `withCredentials` controls whether cross-site + // requests include credentials (cookies and HTTP auth). In older Axios versions, + // setting `withCredentials: true` implicitly caused Axios to set the XSRF header + // for cross-origin requests. Newer Axios separates these concerns: to allow the + // XSRF header to be sent for cross-origin requests you should set both + // `withCredentials: true` and `withXSRFToken: true`. + // + // Example: + // axios.get('/user', { withCredentials: true, withXSRFToken: true }); + + // `onUploadProgress` allows handling of progress events for uploads + // browser & node.js + onUploadProgress: function ({loaded, total, progress, bytes, estimated, rate, upload = true}) { + // Do whatever you want with the Axios progress event + }, + + // `onDownloadProgress` allows handling of progress events for downloads + // browser & node.js + onDownloadProgress: function ({loaded, total, progress, bytes, estimated, rate, download = true}) { + // Do whatever you want with the Axios progress event + }, + + // `maxContentLength` defines the max size of the http response content in bytes allowed in node.js + maxContentLength: 2000, + + // `maxBodyLength` (Node only option) defines the max size of the http request content in bytes allowed + maxBodyLength: 2000, + + // `validateStatus` defines whether to resolve or reject the promise for a given + // HTTP response status code. If `validateStatus` returns `true` (or is set to `null` + // or `undefined`), the promise will be resolved; otherwise, the promise will be + // rejected. + validateStatus: function (status) { + return status >= 200 && status < 300; // default + }, + + // `maxRedirects` defines the maximum number of redirects to follow in node.js. + // If set to 0, no redirects will be followed. + maxRedirects: 21, // default + + // `beforeRedirect` defines a function that will be called before redirect. + // Use this to adjust the request options upon redirecting, + // to inspect the latest response headers, + // or to cancel the request by throwing an error + // If maxRedirects is set to 0, `beforeRedirect` is not used. + beforeRedirect: (options, { headers }) => { + if (options.hostname === "example.com") { + options.auth = "user:password"; + } + }, + + // `socketPath` defines a UNIX Socket to be used in node.js. + // e.g. '/var/run/docker.sock' to send requests to the docker daemon. + // Only either `socketPath` or `proxy` can be specified. + // If both are specified, `socketPath` is used. + socketPath: null, // default + + // `transport` determines the transport method that will be used to make the request. + // If defined, it will be used. Otherwise, if `maxRedirects` is 0, + // the default `http` or `https` library will be used, depending on the protocol specified in `protocol`. + // Otherwise, the `httpFollow` or `httpsFollow` library will be used, again depending on the protocol, + // which can handle redirects. + transport: undefined, // default + + // `httpAgent` and `httpsAgent` define a custom agent to be used when performing http + // and https requests, respectively, in node.js. This allows options to be added like + // `keepAlive` that are not enabled by default before Node.js v19.0.0. After Node.js + // v19.0.0, you no longer need to customize the agent to enable `keepAlive` because + // `http.globalAgent` has `keepAlive` enabled by default. + httpAgent: new http.Agent({ keepAlive: true }), + httpsAgent: new https.Agent({ keepAlive: true }), + + // `proxy` defines the hostname, port, and protocol of the proxy server. + // You can also define your proxy using the conventional `http_proxy` and + // `https_proxy` environment variables. If you are using environment variables + // for your proxy configuration, you can also define a `no_proxy` environment + // variable as a comma-separated list of domains that should not be proxied. + // Use `false` to disable proxies, ignoring environment variables. + // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and + // supplies credentials. + // This will set a `Proxy-Authorization` header, overwriting any existing + // `Proxy-Authorization` custom headers you have set using `headers`. + // If the proxy server uses HTTPS, then you must set the protocol to `https`. + proxy: { + protocol: 'https', + host: '127.0.0.1', + // hostname: '127.0.0.1' // Takes precedence over 'host' if both are defined + port: 9000, + auth: { + username: 'mikeymike', + password: 'rapunz3l' + } + }, + + // `cancelToken` specifies a cancel token that can be used to cancel the request + // (see Cancellation section below for details) + cancelToken: new CancelToken(function (cancel) { + }), + + // an alternative way to cancel Axios requests using AbortController + signal: new AbortController().signal, + + // `decompress` indicates whether or not the response body should be decompressed + // automatically. If set to `true` will also remove the 'content-encoding' header + // from the responses objects of all decompressed responses + // - Node only (XHR cannot turn off decompression) + decompress: true, // default + + // `insecureHTTPParser` boolean. + // Indicates where to use an insecure HTTP parser that accepts invalid HTTP headers. + // This may allow interoperability with non-conformant HTTP implementations. + // Using the insecure parser should be avoided. + // see options https://nodejs.org/dist/latest-v12.x/docs/api/http.html#http_http_request_url_options_callback + // see also https://nodejs.org/en/blog/vulnerability/february-2020-security-releases/#strict-http-header-parsing-none + insecureHTTPParser: undefined, // default + + // transitional options for backward compatibility that may be removed in the newer versions + transitional: { + // silent JSON parsing mode + // `true` - ignore JSON parsing errors and set response.data to null if parsing failed (old behaviour) + // `false` - throw SyntaxError if JSON parsing failed + // Important: this option only takes effect when `responseType` is explicitly set to 'json'. + // When `responseType` is omitted (defaults to no value), axios uses `forcedJSONParsing` + // to attempt JSON parsing, but will silently return the raw string on failure regardless + // of this setting. To have invalid JSON throw errors, use: + // { responseType: 'json', transitional: { silentJSONParsing: false } } + silentJSONParsing: true, // default value for the current Axios version + + // try to parse the response string as JSON even if `responseType` is not 'json' + forcedJSONParsing: true, + + // throw ETIMEDOUT error instead of generic ECONNABORTED on request timeouts + clarifyTimeoutError: false, + + // use the legacy interceptor request/response ordering + legacyInterceptorReqResOrdering: true, // default + }, + + env: { + // The FormData class to be used to automatically serialize the payload into a FormData object + FormData: window?.FormData || global?.FormData + }, + + formSerializer: { + visitor: (value, key, path, helpers) => {}; // custom visitor function to serialize form values + dots: boolean; // use dots instead of brackets format + metaTokens: boolean; // keep special endings like {} in parameter key + indexes: boolean; // array indexes format null - no brackets, false - empty brackets, true - brackets with indexes + }, + + // http adapter only (node.js) + maxRate: [ + 100 * 1024, // 100KB/s upload limit, + 100 * 1024 // 100KB/s download limit + ] +} +``` + +## Response Schema + +The response to a request contains the following information. + +```js +{ + // `data` is the response that was provided by the server + data: {}, + + // `status` is the HTTP status code from the server response + status: 200, + + // `statusText` is the HTTP status message from the server response + statusText: 'OK', + + // `headers` the HTTP headers that the server responded with + // All header names are lowercase and can be accessed using the bracket notation. + // Example: `response.headers['content-type']` + headers: {}, + + // `config` is the config that was provided to `axios` for the request + config: {}, + + // `request` is the request that generated this response + // It is the last ClientRequest instance in node.js (in redirects) + // and an XMLHttpRequest instance in the browser + request: {} +} +``` + +When using `then`, you will receive the response as follows: + +```js +const response = await axios.get("/user/12345"); +console.log(response.data); +console.log(response.status); +console.log(response.statusText); +console.log(response.headers); +console.log(response.config); +``` + +When using `catch`, or passing a [rejection callback](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) as second parameter of `then`, the response will be available through the `error` object as explained in the [Handling Errors](#handling-errors) section. + +## Config Defaults + +You can specify config defaults that will be applied to every request. + +### Global axios defaults + +```js +axios.defaults.baseURL = "https://api.example.com"; + +// Important: If axios is used with multiple domains, the AUTH_TOKEN will be sent to all of them. +// See below for an example using Custom instance defaults instead. +axios.defaults.headers.common["Authorization"] = AUTH_TOKEN; + +axios.defaults.headers.post["Content-Type"] = + "application/x-www-form-urlencoded"; +``` + +### Custom instance defaults + +```js +// Set config defaults when creating the instance +const instance = axios.create({ + baseURL: "https://api.example.com", +}); + +// Alter defaults after instance has been created +instance.defaults.headers.common["Authorization"] = AUTH_TOKEN; +``` + +### Config order of precedence + +Config will be merged with an order of precedence. The order is library defaults found in [lib/defaults/index.js](https://github.com/axios/axios/blob/main/lib/defaults/index.js#L49), then `defaults` property of the instance, and finally `config` argument for the request. The latter will take precedence over the former. Here's an example. + +```js +// Create an instance using the config defaults provided by the library +// At this point the timeout config value is `0` as is the default for the library +const instance = axios.create(); + +// Override timeout default for the library +// Now all requests using this instance will wait 2.5 seconds before timing out +instance.defaults.timeout = 2500; + +// Override timeout for this request as it's known to take a long time +instance.get("/longRequest", { + timeout: 5000, +}); +``` + +## Interceptors + +You can intercept requests or responses before methods like `.get()` or `.post()` +resolve their promises (before code inside `then` or `catch`, or after `await`) + +```js +const instance = axios.create(); + +// Add a request interceptor +instance.interceptors.request.use( + function (config) { + // Do something before the request is sent + return config; + }, + function (error) { + // Do something with the request error + return Promise.reject(error); + }, +); + +// Add a response interceptor +instance.interceptors.response.use( + function (response) { + // Any status code that lies within the range of 2xx causes this function to trigger + // Do something with response data + return response; + }, + function (error) { + // Any status codes that fall outside the range of 2xx cause this function to trigger + // Do something with response error + return Promise.reject(error); + }, +); +``` + +If you need to remove an interceptor later you can. + +```js +const instance = axios.create(); +const myInterceptor = instance.interceptors.request.use(function () { + /*...*/ +}); +axios.interceptors.request.eject(myInterceptor); +``` + +You can also clear all interceptors for requests or responses. + +```js +const instance = axios.create(); +instance.interceptors.request.use(function () { + /*...*/ +}); +instance.interceptors.request.clear(); // Removes interceptors from requests +instance.interceptors.response.use(function () { + /*...*/ +}); +instance.interceptors.response.clear(); // Removes interceptors from responses +``` + +You can add interceptors to a custom instance of axios. + +```js +const instance = axios.create(); +instance.interceptors.request.use(function () { + /*...*/ +}); +``` + +When you add request interceptors, they are presumed to be asynchronous by default. This can cause a delay +in the execution of your axios request when the main thread is blocked (a promise is created under the hood for +the interceptor and your request gets put at the bottom of the call stack). If your request interceptors are synchronous you can add a flag +to the options object that will tell axios to run the code synchronously and avoid any delays in request execution. + +```js +axios.interceptors.request.use( + function (config) { + config.headers.test = "I am only a header!"; + return config; + }, + null, + { synchronous: true }, +); +``` + +If you want to execute a particular interceptor based on a runtime check, +you can add a `runWhen` function to the options object. The request interceptor will not be executed **if and only if** the return +of `runWhen` is `false`. The function will be called with the config +object (don't forget that you can bind your own arguments to it as well.) This can be handy when you have an +asynchronous request interceptor that only needs to run at certain times. + +```js +function onGetCall(config) { + return config.method === "get"; +} +axios.interceptors.request.use( + function (config) { + config.headers.test = "special get headers"; + return config; + }, + null, + { runWhen: onGetCall }, +); +``` + +> **Note:** The options parameter(having `synchronous` and `runWhen` properties) is only supported for request interceptors at the moment. + +### Interceptor Execution Order + +**Important:** Interceptors have different execution orders depending on their type! + +Request interceptors are executed in **reverse order** (LIFO - Last In, First Out). This means the _last_ interceptor added is executed **first**. + +Response interceptors are executed in the **order they were added** (FIFO - First In, First Out). This means the _first_ interceptor added is executed **first**. + +Example: + +```js +const instance = axios.create(); + +const interceptor = (id) => (base) => { + console.log(id); + return base; +}; + +instance.interceptors.request.use(interceptor("Request Interceptor 1")); +instance.interceptors.request.use(interceptor("Request Interceptor 2")); +instance.interceptors.request.use(interceptor("Request Interceptor 3")); +instance.interceptors.response.use(interceptor("Response Interceptor 1")); +instance.interceptors.response.use(interceptor("Response Interceptor 2")); +instance.interceptors.response.use(interceptor("Response Interceptor 3")); + +// Console output: +// Request Interceptor 3 +// Request Interceptor 2 +// Request Interceptor 1 +// [HTTP request is made] +// Response Interceptor 1 +// Response Interceptor 2 +// Response Interceptor 3 +``` + +### Multiple Interceptors + +Given that you add multiple response interceptors +and when the response was fulfilled + +- then each interceptor is executed +- then they are executed in the order they were added +- then only the last interceptor's result is returned +- then every interceptor receives the result of its predecessor +- and when the fulfillment-interceptor throws + - then the following fulfillment-interceptor is not called + - then the following rejection-interceptor is called + - once caught, another following fulfill-interceptor is called again (just like in a promise chain). + +Read [the interceptor tests](./test/specs/interceptors.spec.js) to see all this in code. + +## Error Types + +There are many different axios error messages that can appear which can provide basic information about the specifics of the error and where opportunities may lie in debugging. + +The general structure of axios errors is as follows: +| Property | Definition | +| -------- | ---------- | +| message | A quick summary of the error message and the status it failed with. | +| name | This defines where the error originated from. For axios, it will always be an 'AxiosError'. | +| stack | Provides the stack trace of the error. | +| config | An axios config object with specific instance configurations defined by the user from when the request was made | +| code | Represents an axios identified error. The table below lists specific definitions for internal axios error. | +| status | HTTP response status code. See [here](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for common HTTP response status code meanings. + +Below is a list of potential axios identified error: + +| Code | Definition | +| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ERR_BAD_OPTION_VALUE | Invalid value provided in axios configuration. | +| ERR_BAD_OPTION | Invalid option provided in axios configuration. | +| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment. | +| ERR_DEPRECATED | Deprecated feature or method used in axios. | +| ERR_INVALID_URL | Invalid URL provided for axios request. | +| ECONNABORTED | Typically indicates that the request has been timed out (unless `transitional.clarifyTimeoutError` is set) or aborted by the browser or its plugin. | +| ERR_CANCELED | Feature or method is canceled explicitly by the user using an AbortSignal (or a CancelToken). | +| ETIMEDOUT | Request timed out due to exceeding the default axios timelimit. `transitional.clarifyTimeoutError` must be set to `true`, otherwise a generic `ECONNABORTED` error will be thrown instead. | +| ERR_NETWORK | Network-related issue. In the browser, this error can also be caused by a [CORS](https://developer.mozilla.org/ru/docs/Web/HTTP/Guides/CORS) or [Mixed Content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content) policy violation. The browser does not allow the JS code to clarify the real reason for the error caused by security issues, so please check the console. | +| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration. | +| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format. Usually related to a response with `5xx` status code. | +| ERR_BAD_REQUEST | The request has an unexpected format or is missing required parameters. Usually related to a response with `4xx` status code. | + +## Handling Errors + +The default behavior is to reject every response that returns with a status code that falls out of the range of 2xx and treat it as an error. + +```js +axios.get("/user/12345").catch(function (error) { + if (error.response) { + // The request was made and the server responded with a status code + // that falls out of the range of 2xx + console.log(error.response.data); + console.log(error.response.status); + console.log(error.response.headers); + } else if (error.request) { + // The request was made but no response was received + // `error.request` is an instance of XMLHttpRequest in the browser and an instance of + // http.ClientRequest in node.js + console.log(error.request); + } else { + // Something happened in setting up the request that triggered an Error + console.log("Error", error.message); + } + console.log(error.config); +}); +``` + +Using the `validateStatus` config option, you can override the default condition (status >= 200 && status < 300) and define HTTP code(s) that should throw an error. + +```js +axios.get("/user/12345", { + validateStatus: function (status) { + return status < 500; // Resolve only if the status code is less than 500 + }, +}); +``` + +Using `toJSON` you get an object with more information about the HTTP error. + +```js +axios.get("/user/12345").catch(function (error) { + console.log(error.toJSON()); +}); +``` + +## Handling Timeouts + +```js +async function fetchWithTimeout() { + try { + const response = await axios.get("https://example.com/data", { + timeout: 5000, // 5 seconds + }); + + console.log("Response:", response.data); + } catch (error) { + if (axios.isAxiosError(error) && error.code === "ECONNABORTED") { + console.error("❌ Request timed out!"); + } else { + console.error("❌ Error:", error.message); + } + } +} +``` + +## Cancellation + +### AbortController + +Starting from `v0.22.0` Axios supports AbortController to cancel requests in a fetch API way: + +```js +const controller = new AbortController(); + +axios + .get("/foo/bar", { + signal: controller.signal, + }) + .then(function (response) { + //... + }); +// cancel the request +controller.abort(); +``` + +### CancelToken `👎deprecated` + +You can also cancel a request using a _CancelToken_. + +> The axios cancel token API is based on the withdrawn [cancellable promises proposal](https://github.com/tc39/proposal-cancelable-promises). + +> This API is deprecated since v0.22.0 and shouldn't be used in new projects + +You can create a cancel token using the `CancelToken.source` factory as shown below: + +```js +const CancelToken = axios.CancelToken; +const source = CancelToken.source(); + +axios + .get("/user/12345", { + cancelToken: source.token, + }) + .catch(function (thrown) { + if (axios.isCancel(thrown)) { + console.log("Request canceled", thrown.message); + } else { + // handle error + } + }); + +axios.post( + "/user/12345", + { + name: "new name", + }, + { + cancelToken: source.token, + }, +); + +// cancel the request (the message parameter is optional) +source.cancel("Operation canceled by the user."); +``` + +You can also create a cancel token by passing an executor function to the `CancelToken` constructor: + +```js +const CancelToken = axios.CancelToken; +let cancel; + +axios.get("/user/12345", { + cancelToken: new CancelToken(function executor(c) { + // An executor function receives a cancel function as a parameter + cancel = c; + }), +}); + +// cancel the request +cancel(); +``` + +> **Note:** you can cancel several requests with the same cancel token/abort controller. +> If a cancellation token is already cancelled at the moment of starting an Axios request, then the request is cancelled immediately, without any attempts to make a real request. + +> During the transition period, you can use both cancellation APIs, even for the same request: + +## Using `application/x-www-form-urlencoded` format + +### URLSearchParams + +By default, axios serializes JavaScript objects to `JSON`. To send data in the [`application/x-www-form-urlencoded`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format instead, you can use the [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) API, which is [supported](http://www.caniuse.com/#feat=urlsearchparams) in the vast majority of browsers, and [Node](https://nodejs.org/api/url.html#url_class_urlsearchparams) starting with v10 (released in 2018). + +```js +const params = new URLSearchParams({ foo: "bar" }); +params.append("extraparam", "value"); +axios.post("/foo", params); +``` + +### Query string (Older browsers) + +For compatibility with very old browsers, there is a [polyfill](https://github.com/WebReflection/url-search-params) available (make sure to polyfill the global environment). + +Alternatively, you can encode data using the [`qs`](https://github.com/ljharb/qs) library: + +```js +const qs = require("qs"); +axios.post("/foo", qs.stringify({ bar: 123 })); +``` + +Or in another way (ES6), + +```js +import qs from "qs"; +const data = { bar: 123 }; +const options = { + method: "POST", + headers: { "content-type": "application/x-www-form-urlencoded" }, + data: qs.stringify(data), + url, +}; +axios(options); +``` + +### Older Node.js versions + +For older Node.js engines, you can use the [`querystring`](https://nodejs.org/api/querystring.html) module as follows: + +```js +const querystring = require("querystring"); +axios.post("https://something.com/", querystring.stringify({ foo: "bar" })); +``` + +You can also use the [`qs`](https://github.com/ljharb/qs) library. + +> **Note**: The `qs` library is preferable if you need to stringify nested objects, as the `querystring` method has [known issues](https://github.com/nodejs/node-v0.x-archive/issues/1665) with that use case. + +### 🆕 Automatic serialization to URLSearchParams + +Axios will automatically serialize the data object to urlencoded format if the content-type header is set to "application/x-www-form-urlencoded". + +```js +const data = { + x: 1, + arr: [1, 2, 3], + arr2: [1, [2], 3], + users: [ + { name: "Peter", surname: "Griffin" }, + { name: "Thomas", surname: "Anderson" }, + ], +}; + +await axios.postForm("https://postman-echo.com/post", data, { + headers: { "content-type": "application/x-www-form-urlencoded" }, +}); +``` + +The server will handle it as: + +```js + { + x: '1', + 'arr[]': [ '1', '2', '3' ], + 'arr2[0]': '1', + 'arr2[1][0]': '2', + 'arr2[2]': '3', + 'arr3[]': [ '1', '2', '3' ], + 'users[0][name]': 'Peter', + 'users[0][surname]': 'griffin', + 'users[1][name]': 'Thomas', + 'users[1][surname]': 'Anderson' + } +``` + +If your backend body-parser (like `body-parser` of `express.js`) supports nested objects decoding, you will get the same object on the server-side automatically + +```js +const app = express(); + +app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies + +app.post("/", function (req, res, next) { + // echo body as JSON + res.send(JSON.stringify(req.body)); +}); + +server = app.listen(3000); +``` + +## Using `multipart/form-data` format + +### FormData + +To send the data as a `multipart/form-data` you need to pass a formData instance as a payload. +Setting the `Content-Type` header is not required as Axios guesses it based on the payload type. + +```js +const formData = new FormData(); +formData.append("foo", "bar"); + +axios.post("https://httpbin.org/post", formData); +``` + +In node.js, you can use the [`form-data`](https://github.com/form-data/form-data) library as follows: + +```js +const FormData = require("form-data"); + +const form = new FormData(); +form.append("my_field", "my value"); +form.append("my_buffer", Buffer.alloc(10)); +form.append("my_file", fs.createReadStream("/foo/bar.jpg")); + +axios.post("https://example.com", form); +``` + +### 🆕 Automatic serialization to FormData + +Starting from `v0.27.0`, Axios supports automatic object serialization to a FormData object if the request `Content-Type` +header is set to `multipart/form-data`. + +The following request will submit the data in a FormData format (Browser & Node.js): + +```js +import axios from "axios"; + +axios + .post( + "https://httpbin.org/post", + { x: 1 }, + { + headers: { + "Content-Type": "multipart/form-data", + }, + }, + ) + .then(({ data }) => console.log(data)); +``` + +In the `node.js` build, the ([`form-data`](https://github.com/form-data/form-data)) polyfill is used by default. + +You can overload the FormData class by setting the `env.FormData` config variable, +but you probably won't need it in most cases: + +```js +const axios = require("axios"); +var FormData = require("form-data"); + +axios + .post( + "https://httpbin.org/post", + { x: 1, buf: Buffer.alloc(10) }, + { + headers: { + "Content-Type": "multipart/form-data", + }, + }, + ) + .then(({ data }) => console.log(data)); +``` + +Axios FormData serializer supports some special endings to perform the following operations: + +- `{}` - serialize the value with JSON.stringify +- `[]` - unwrap the array-like object as separate fields with the same key + +> **Note**: unwrap/expand operation will be used by default on arrays and FileList objects + +FormData serializer supports additional options via `config.formSerializer: object` property to handle rare cases: + +- `visitor: Function` - user-defined visitor function that will be called recursively to serialize the data object + to a `FormData` object by following custom rules. + +- `dots: boolean = false` - use dot notation instead of brackets to serialize arrays and objects; + +- `metaTokens: boolean = true` - add the special ending (e.g `user{}: '{"name": "John"}'`) in the FormData key. + The back-end body-parser could potentially use this meta-information to automatically parse the value as JSON. + +- `indexes: null|false|true = false` - controls how indexes will be added to unwrapped keys of `flat` array-like objects. + - `null` - don't add brackets (`arr: 1`, `arr: 2`, `arr: 3`) + - `false`(default) - add empty brackets (`arr[]: 1`, `arr[]: 2`, `arr[]: 3`) + - `true` - add brackets with indexes (`arr[0]: 1`, `arr[1]: 2`, `arr[2]: 3`) + +Let's say we have an object like this one: + +```js +const obj = { + x: 1, + arr: [1, 2, 3], + arr2: [1, [2], 3], + users: [ + { name: "Peter", surname: "Griffin" }, + { name: "Thomas", surname: "Anderson" }, + ], + "obj2{}": [{ x: 1 }], +}; +``` + +The following steps will be executed by the Axios serializer internally: + +```js +const formData = new FormData(); +formData.append("x", "1"); +formData.append("arr[]", "1"); +formData.append("arr[]", "2"); +formData.append("arr[]", "3"); +formData.append("arr2[0]", "1"); +formData.append("arr2[1][0]", "2"); +formData.append("arr2[2]", "3"); +formData.append("users[0][name]", "Peter"); +formData.append("users[0][surname]", "Griffin"); +formData.append("users[1][name]", "Thomas"); +formData.append("users[1][surname]", "Anderson"); +formData.append("obj2{}", '[{"x":1}]'); +``` + +Axios supports the following shortcut methods: `postForm`, `putForm`, `patchForm` +which are just the corresponding http methods with the `Content-Type` header preset to `multipart/form-data`. + +## Files Posting + +You can easily submit a single file: + +```js +await axios.postForm("https://httpbin.org/post", { + myVar: "foo", + file: document.querySelector("#fileInput").files[0], +}); +``` + +or multiple files as `multipart/form-data`: + +```js +await axios.postForm("https://httpbin.org/post", { + "files[]": document.querySelector("#fileInput").files, +}); +``` + +`FileList` object can be passed directly: + +```js +await axios.postForm( + "https://httpbin.org/post", + document.querySelector("#fileInput").files, +); +``` + +All files will be sent with the same field names: `files[]`. + +## 🆕 HTML Form Posting (browser) + +Pass an HTML Form element as a payload to submit it as `multipart/form-data` content. + +```js +await axios.postForm( + "https://httpbin.org/post", + document.querySelector("#htmlForm"), +); +``` + +`FormData` and `HTMLForm` objects can also be posted as `JSON` by explicitly setting the `Content-Type` header to `application/json`: + +```js +await axios.post( + "https://httpbin.org/post", + document.querySelector("#htmlForm"), + { + headers: { + "Content-Type": "application/json", + }, + }, +); +``` + +For example, the Form + +```html +
+ + + + + + + + + +
+``` + +will be submitted as the following JSON object: + +```js +{ + "foo": "1", + "deep": { + "prop": { + "spaced": "3" + } + }, + "baz": [ + "4", + "5" + ], + "user": { + "age": "value2" + } +} +``` + +Sending `Blobs`/`Files` as JSON (`base64`) is not currently supported. + +## 🆕 Progress capturing + +Axios supports both browser and node environments to capture request upload/download progress. +The frequency of progress events is forced to be limited to `3` times per second. + +```js +await axios.post(url, data, { + onUploadProgress: function (axiosProgressEvent) { + /*{ + loaded: number; + total?: number; + progress?: number; // in range [0..1] + bytes: number; // how many bytes have been transferred since the last trigger (delta) + estimated?: number; // estimated time in seconds + rate?: number; // upload speed in bytes + upload: true; // upload sign + }*/ + }, + + onDownloadProgress: function (axiosProgressEvent) { + /*{ + loaded: number; + total?: number; + progress?: number; + bytes: number; + estimated?: number; + rate?: number; // download speed in bytes + download: true; // download sign + }*/ + }, +}); +``` + +You can also track stream upload/download progress in node.js: + +```js +const { data } = await axios.post(SERVER_URL, readableStream, { + onUploadProgress: ({ progress }) => { + console.log((progress * 100).toFixed(2)); + }, + + headers: { + "Content-Length": contentLength, + }, + + maxRedirects: 0, // avoid buffering the entire stream +}); +``` + +> **Note:** +> Capturing FormData upload progress is not currently supported in node.js environments. + +> **⚠️ Warning** +> It is recommended to disable redirects by setting maxRedirects: 0 to upload the stream in the **node.js** environment, +> as the follow-redirects package will buffer the entire stream in RAM without following the "backpressure" algorithm. + +## 🆕 Rate limiting + +Download and upload rate limits can only be set for the http adapter (node.js): + +```js +const { data } = await axios.post(LOCAL_SERVER_URL, myBuffer, { + onUploadProgress: ({ progress, rate }) => { + console.log( + `Upload [${(progress * 100).toFixed(2)}%]: ${(rate / 1024).toFixed(2)}KB/s`, + ); + }, + + maxRate: [100 * 1024], // 100KB/s limit +}); +``` + +## 🆕 AxiosHeaders + +Axios has its own `AxiosHeaders` class to manipulate headers using a Map-like API that guarantees caseless work. +Although HTTP is case-insensitive in headers, Axios will retain the case of the original header for stylistic reasons +and as a workaround when servers mistakenly consider the header's case. +The old approach of directly manipulating the headers object is still available, but deprecated and not recommended for future usage. + +### Working with headers + +An AxiosHeaders object instance can contain different types of internal values. that control setting and merging logic. +The final headers object with string values is obtained by Axios by calling the `toJSON` method. + +> Note: By JSON here we mean an object consisting only of string values intended to be sent over the network. + +The header value can be one of the following types: + +- `string` - normal string value that will be sent to the server +- `null` - skip header when rendering to JSON +- `false` - skip header when rendering to JSON, additionally indicates that `set` method must be called with `rewrite` option set to `true` + to overwrite this value (Axios uses this internally to allow users to opt out of installing certain headers like `User-Agent` or `Content-Type`) +- `undefined` - value is not set + +> Note: The header value is considered set if it is not equal to undefined. + +The headers object is always initialized inside interceptors and transformers: + +```ts +axios.interceptors.request.use((request: InternalAxiosRequestConfig) => { + request.headers.set("My-header", "value"); + + request.headers.set({ + "My-set-header1": "my-set-value1", + "My-set-header2": "my-set-value2", + }); + + request.headers.set("User-Agent", false); // disable subsequent setting the header by Axios + + request.headers.setContentType("text/plain"); + + request.headers["My-set-header2"] = "newValue"; // direct access is deprecated + + return request; +}); +``` + +You can iterate over an `AxiosHeaders` instance using a `for...of` statement: + +```js +const headers = new AxiosHeaders({ + foo: "1", + bar: "2", + baz: "3", +}); + +for (const [header, value] of headers) { + console.log(header, value); +} + +// foo 1 +// bar 2 +// baz 3 +``` + +### new AxiosHeaders(headers?) + +Constructs a new `AxiosHeaders` instance. + +``` +constructor(headers?: RawAxiosHeaders | AxiosHeaders | string); +``` + +If the headers object is a string, it will be parsed as RAW HTTP headers. + +```js +const headers = new AxiosHeaders(` +Host: www.bing.com +User-Agent: curl/7.54.0 +Accept: */*`); + +console.log(headers); + +// Object [AxiosHeaders] { +// host: 'www.bing.com', +// 'user-agent': 'curl/7.54.0', +// accept: '*/*' +// } +``` + +### AxiosHeaders#set + +```ts +set(headerName, value: Axios, rewrite?: boolean); +set(headerName, value, rewrite?: (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean); +set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean); +``` + +The `rewrite` argument controls the overwriting behavior: + +- `false` - do not overwrite if the header's value is set (is not `undefined`) +- `undefined` (default) - overwrite the header unless its value is set to `false` +- `true` - rewrite anyway + +The option can also accept a user-defined function that determines whether the value should be overwritten or not. + +Returns `this`. + +### AxiosHeaders#get(header) + +``` + get(headerName: string, matcher?: true | AxiosHeaderMatcher): AxiosHeaderValue; + get(headerName: string, parser: RegExp): RegExpExecArray | null; +``` + +Returns the internal value of the header. It can take an extra argument to parse the header's value with `RegExp.exec`, +matcher function or internal key-value parser. + +```ts +const headers = new AxiosHeaders({ + "Content-Type": "multipart/form-data; boundary=Asrf456BGe4h", +}); + +console.log(headers.get("Content-Type")); +// multipart/form-data; boundary=Asrf456BGe4h + +console.log(headers.get("Content-Type", true)); // parse key-value pairs from a string separated with \s,;= delimiters: +// [Object: null prototype] { +// 'multipart/form-data': undefined, +// boundary: 'Asrf456BGe4h' +// } + +console.log( + headers.get("Content-Type", (value, name, headers) => { + return String(value).replace(/a/g, "ZZZ"); + }), +); +// multipZZZrt/form-dZZZtZZZ; boundZZZry=Asrf456BGe4h + +console.log(headers.get("Content-Type", /boundary=(\w+)/)?.[0]); +// boundary=Asrf456BGe4h +``` + +Returns the value of the header. + +### AxiosHeaders#has(header, matcher?) + +``` +has(header: string, matcher?: AxiosHeaderMatcher): boolean; +``` + +Returns `true` if the header is set (has no `undefined` value). + +### AxiosHeaders#delete(header, matcher?) + +``` +delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; +``` + +Returns `true` if at least one header has been removed. + +### AxiosHeaders#clear(matcher?) + +``` +clear(matcher?: AxiosHeaderMatcher): boolean; +``` + +Removes all headers. +Unlike the `delete` method matcher, this optional matcher will be used to match against the header name rather than the value. + +```ts +const headers = new AxiosHeaders({ + foo: "1", + "x-foo": "2", + "x-bar": "3", +}); + +console.log(headers.clear(/^x-/)); // true + +console.log(headers.toJSON()); // [Object: null prototype] { foo: '1' } +``` + +Returns `true` if at least one header has been cleared. + +### AxiosHeaders#normalize(format); + +If the headers object was changed directly, it can have duplicates with the same name but in different cases. +This method normalizes the headers object by combining duplicate keys into one. +Axios uses this method internally after calling each interceptor. +Set `format` to true for converting header names to lowercase and capitalizing the initial letters (`cOntEnt-type` => `Content-Type`) + +```js +const headers = new AxiosHeaders({ + foo: "1", +}); + +headers.Foo = "2"; +headers.FOO = "3"; + +console.log(headers.toJSON()); // [Object: null prototype] { foo: '1', Foo: '2', FOO: '3' } +console.log(headers.normalize().toJSON()); // [Object: null prototype] { foo: '3' } +console.log(headers.normalize(true).toJSON()); // [Object: null prototype] { Foo: '3' } +``` + +Returns `this`. + +### AxiosHeaders#concat(...targets) + +``` +concat(...targets: Array): AxiosHeaders; +``` + +Merges the instance with targets into a new `AxiosHeaders` instance. If the target is a string, it will be parsed as RAW HTTP headers. + +Returns a new `AxiosHeaders` instance. + +### AxiosHeaders#toJSON(asStrings?) + +``` +toJSON(asStrings?: boolean): RawAxiosHeaders; +``` + +Resolve all internal header values into a new null prototype object. +Set `asStrings` to true to resolve arrays as a string containing all elements, separated by commas. + +### AxiosHeaders.from(thing?) + +``` +from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; +``` + +Returns a new `AxiosHeaders` instance created from the raw headers passed in, +or simply returns the given headers object if it's an `AxiosHeaders` instance. + +### AxiosHeaders.concat(...targets) + +``` +concat(...targets: Array): AxiosHeaders; +``` + +Returns a new `AxiosHeaders` instance created by merging the target objects. + +### Shortcuts + +The following shortcuts are available: + +- `setContentType`, `getContentType`, `hasContentType` + +- `setContentLength`, `getContentLength`, `hasContentLength` + +- `setAccept`, `getAccept`, `hasAccept` + +- `setUserAgent`, `getUserAgent`, `hasUserAgent` + +- `setContentEncoding`, `getContentEncoding`, `hasContentEncoding` + +## 🔥 Fetch adapter + +Fetch adapter was introduced in `v1.7.0`. By default, it will be used if `xhr` and `http` adapters are not available in the build, +or not supported by the environment. +To use it by default, it must be selected explicitly: + +```js +const { data } = axios.get(url, { + adapter: "fetch", // by default ['xhr', 'http', 'fetch'] +}); +``` + +You can create a separate instance for this: + +```js +const fetchAxios = axios.create({ + adapter: "fetch", +}); + +const { data } = fetchAxios.get(url); +``` + +The adapter supports the same functionality as the `xhr` adapter, **including upload and download progress capturing**. +Also, it supports additional response types such as `stream` and `formdata` (if supported by the environment). + +### 🔥 Custom fetch + +Starting from `v1.12.0`, you can customize the fetch adapter to use a custom fetch API instead of environment globals. +You can pass a custom `fetch` function, `Request`, and `Response` constructors via env config. +This can be helpful in case of custom environments & app frameworks. + +Also, when using a custom fetch, you may need to set custom Request and Response too. If you don't set them, global objects will be used. +If your custom fetch api does not have these objects, and the globals are incompatible with a custom fetch, +you must disable their use inside the fetch adapter by passing null. + +> Note: Setting `Request` & `Response` to `null` will make it impossible for the fetch adapter to capture the upload & download progress. + +Basic example: + +```js +import customFetchFunction from "customFetchModule"; + +const instance = axios.create({ + adapter: "fetch", + onDownloadProgress(e) { + console.log("downloadProgress", e); + }, + env: { + fetch: customFetchFunction, + Request: null, // undefined -> use the global constructor + Response: null, + }, +}); +``` + +#### 🔥 Using with Tauri + +A minimal example of setting up Axios for use in a [Tauri](https://tauri.app/plugin/http-client/) app with a platform fetch function that ignores CORS policy for requests. + +```js +import { fetch } from "@tauri-apps/plugin-http"; +import axios from "axios"; + +const instance = axios.create({ + adapter: "fetch", + onDownloadProgress(e) { + console.log("downloadProgress", e); + }, + env: { + fetch, + }, +}); + +const { data } = await instance.get("https://google.com"); +``` + +#### 🔥 Using with SvelteKit + +[SvelteKit](https://svelte.dev/docs/kit/web-standards#Fetch-APIs) framework has a custom implementation of the fetch function for server rendering (so called `load` functions), and also uses relative paths, +which makes it incompatible with the standard URL API. So, Axios must be configured to use the custom fetch API: + +```js +export async function load({ fetch }) { + const { data: post } = await axios.get( + "https://jsonplaceholder.typicode.com/posts/1", + { + adapter: "fetch", + env: { + fetch, + Request: null, + Response: null, + }, + }, + ); + + return { post }; +} +``` + +## 🔥 HTTP2 + +In version `1.13.0`, experimental `HTTP2` support was added to the `http` adapter. +The `httpVersion` option is now available to select the protocol version used. +Additional native options for the internal `session.request()` call can be passed via the `http2Options` config. +This config also includes the custom `sessionTimeout` parameter, which defaults to `1000ms`. + +```js +const form = new FormData(); + +form.append("foo", "123"); + +const { data, headers, status } = await axios.post( + "https://httpbin.org/post", + form, + { + httpVersion: 2, + http2Options: { + // rejectUnauthorized: false, + // sessionTimeout: 1000 + }, + onUploadProgress(e) { + console.log("upload progress", e); + }, + onDownloadProgress(e) { + console.log("download progress", e); + }, + responseType: "arraybuffer", + }, +); +``` + +## Semver + +Since Axios has reached a `v.1.0.0` we will fully embrace semver as per the spec [here](https://semver.org/) + +## Promises + +axios depends on a native ES6 Promise implementation to be [supported](https://caniuse.com/promises). +If your environment doesn't support ES6 Promises, you can [polyfill](https://github.com/jakearchibald/es6-promise). + +## TypeScript + +axios includes [TypeScript](https://typescriptlang.org) definitions and a type guard for axios errors. + +```typescript +let user: User = null; +try { + const { data } = await axios.get("/user?ID=12345"); + user = data.userDetails; +} catch (error) { + if (axios.isAxiosError(error)) { + handleAxiosError(error); + } else { + handleUnexpectedError(error); + } +} +``` + +Because axios dual publishes with an ESM default export and a CJS `module.exports`, there are some caveats. +The recommended setting is to use `"moduleResolution": "node16"` (this is implied by `"module": "node16"`). Note that this requires TypeScript 4.7 or greater. +If use ESM, your settings should be fine. +If you compile TypeScript to CJS and you can’t use `"moduleResolution": "node 16"`, you have to enable `esModuleInterop`. +If you use TypeScript to type check CJS JavaScript code, your only option is to use `"moduleResolution": "node16"`. + +You can also create a custom instance with typed interceptors: + +```typescript +import axios, { AxiosInstance, InternalAxiosRequestConfig } from "axios"; + +const apiClient: AxiosInstance = axios.create({ + baseURL: "https://api.example.com", + timeout: 10000, +}); + +apiClient.interceptors.request.use((config: InternalAxiosRequestConfig) => { + // Add auth token + return config; +}); +``` + +## Online one-click setup + +You can use Gitpod, an online IDE(which is free for Open Source) for contributing or running the examples online. + +[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/axios/axios/blob/main/examples/server.js) + +## Resources + +- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) +- [Ecosystem](https://github.com/axios/axios/blob/v1.x/ECOSYSTEM.md) +- [Contributing Guide](https://github.com/axios/axios/blob/v1.x/CONTRIBUTING.md) +- [Code of Conduct](https://github.com/axios/axios/blob/v1.x/CODE_OF_CONDUCT.md) + +## Credits + +axios is heavily inspired by the [$http service](https://docs.angularjs.org/api/ng/service/$http) provided in [AngularJS](https://angularjs.org/). Ultimately axios is an effort to provide a standalone `$http`-like service for use outside of AngularJS. + +## License + +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) diff --git a/bff/node_modules/axios/index.d.cts b/bff/node_modules/axios/index.d.cts new file mode 100644 index 0000000..4c953a0 --- /dev/null +++ b/bff/node_modules/axios/index.d.cts @@ -0,0 +1,716 @@ +interface RawAxiosHeaders { + [key: string]: axios.AxiosHeaderValue; +} + +type MethodsHeaders = Partial< + { + [Key in axios.Method as Lowercase]: AxiosHeaders; + } & { common: AxiosHeaders } +>; + +type AxiosHeaderMatcher = + | string + | RegExp + | ((this: AxiosHeaders, value: string, name: string) => boolean); + +type AxiosHeaderParser = (this: AxiosHeaders, value: axios.AxiosHeaderValue, header: string) => any; + +type CommonRequestHeadersList = + | 'Accept' + | 'Content-Length' + | 'User-Agent' + | 'Content-Encoding' + | 'Authorization'; + +type ContentType = + | axios.AxiosHeaderValue + | 'text/html' + | 'text/plain' + | 'multipart/form-data' + | 'application/json' + | 'application/x-www-form-urlencoded' + | 'application/octet-stream'; + +type CommonResponseHeadersList = + | 'Server' + | 'Content-Type' + | 'Content-Length' + | 'Cache-Control' + | 'Content-Encoding'; + +type BrowserProgressEvent = any; + +declare class AxiosHeaders { + constructor(headers?: RawAxiosHeaders | AxiosHeaders | string); + + [key: string]: any; + + set( + headerName?: string, + value?: axios.AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher + ): AxiosHeaders; + set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean): AxiosHeaders; + + get(headerName: string, parser: RegExp): RegExpExecArray | null; + get(headerName: string, matcher?: true | AxiosHeaderParser): axios.AxiosHeaderValue; + + has(header: string, matcher?: AxiosHeaderMatcher): boolean; + + delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; + + clear(matcher?: AxiosHeaderMatcher): boolean; + + normalize(format: boolean): AxiosHeaders; + + concat( + ...targets: Array + ): AxiosHeaders; + + toJSON(asStrings?: boolean): RawAxiosHeaders; + + static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; + + static accessor(header: string | string[]): AxiosHeaders; + + static concat( + ...targets: Array + ): AxiosHeaders; + + setContentType(value: ContentType, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getContentType(parser?: RegExp): RegExpExecArray | null; + getContentType(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasContentType(matcher?: AxiosHeaderMatcher): boolean; + + setContentLength( + value: axios.AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher + ): AxiosHeaders; + getContentLength(parser?: RegExp): RegExpExecArray | null; + getContentLength(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasContentLength(matcher?: AxiosHeaderMatcher): boolean; + + setAccept(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getAccept(parser?: RegExp): RegExpExecArray | null; + getAccept(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasAccept(matcher?: AxiosHeaderMatcher): boolean; + + setUserAgent(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders; + getUserAgent(parser?: RegExp): RegExpExecArray | null; + getUserAgent(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; + + setContentEncoding( + value: axios.AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher + ): AxiosHeaders; + getContentEncoding(parser?: RegExp): RegExpExecArray | null; + getContentEncoding(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; + + setAuthorization( + value: axios.AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher + ): AxiosHeaders; + getAuthorization(parser?: RegExp): RegExpExecArray | null; + getAuthorization(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue; + hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; + + getSetCookie(): string[]; + + [Symbol.iterator](): IterableIterator<[string, axios.AxiosHeaderValue]>; +} + +declare class AxiosError extends Error { + constructor( + message?: string, + code?: string, + config?: axios.InternalAxiosRequestConfig, + request?: any, + response?: axios.AxiosResponse + ); + + config?: axios.InternalAxiosRequestConfig; + code?: string; + request?: any; + response?: axios.AxiosResponse; + isAxiosError: boolean; + status?: number; + toJSON: () => object; + cause?: Error; + event?: BrowserProgressEvent; + static from( + error: Error | unknown, + code?: string, + config?: axios.InternalAxiosRequestConfig, + request?: any, + response?: axios.AxiosResponse, + customProps?: object + ): AxiosError; + static readonly ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; + static readonly ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; + static readonly ERR_BAD_OPTION = 'ERR_BAD_OPTION'; + static readonly ERR_NETWORK = 'ERR_NETWORK'; + static readonly ERR_DEPRECATED = 'ERR_DEPRECATED'; + static readonly ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; + static readonly ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; + static readonly ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; + static readonly ERR_INVALID_URL = 'ERR_INVALID_URL'; + static readonly ERR_CANCELED = 'ERR_CANCELED'; + static readonly ECONNABORTED = 'ECONNABORTED'; + static readonly ETIMEDOUT = 'ETIMEDOUT'; +} + +declare class CanceledError extends AxiosError {} + +declare class Axios { + constructor(config?: axios.AxiosRequestConfig); + defaults: axios.AxiosDefaults; + interceptors: { + request: axios.AxiosInterceptorManager; + response: axios.AxiosInterceptorManager; + }; + getUri(config?: axios.AxiosRequestConfig): string; + request, D = any>( + config: axios.AxiosRequestConfig + ): Promise; + get, D = any>( + url: string, + config?: axios.AxiosRequestConfig + ): Promise; + delete, D = any>( + url: string, + config?: axios.AxiosRequestConfig + ): Promise; + head, D = any>( + url: string, + config?: axios.AxiosRequestConfig + ): Promise; + options, D = any>( + url: string, + config?: axios.AxiosRequestConfig + ): Promise; + post, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + put, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + patch, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + postForm, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + putForm, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; + patchForm, D = any>( + url: string, + data?: D, + config?: axios.AxiosRequestConfig + ): Promise; +} + +declare enum HttpStatusCode { + Continue = 100, + SwitchingProtocols = 101, + Processing = 102, + EarlyHints = 103, + Ok = 200, + Created = 201, + Accepted = 202, + NonAuthoritativeInformation = 203, + NoContent = 204, + ResetContent = 205, + PartialContent = 206, + MultiStatus = 207, + AlreadyReported = 208, + ImUsed = 226, + MultipleChoices = 300, + MovedPermanently = 301, + Found = 302, + SeeOther = 303, + NotModified = 304, + UseProxy = 305, + Unused = 306, + TemporaryRedirect = 307, + PermanentRedirect = 308, + BadRequest = 400, + Unauthorized = 401, + PaymentRequired = 402, + Forbidden = 403, + NotFound = 404, + MethodNotAllowed = 405, + NotAcceptable = 406, + ProxyAuthenticationRequired = 407, + RequestTimeout = 408, + Conflict = 409, + Gone = 410, + LengthRequired = 411, + PreconditionFailed = 412, + PayloadTooLarge = 413, + UriTooLong = 414, + UnsupportedMediaType = 415, + RangeNotSatisfiable = 416, + ExpectationFailed = 417, + ImATeapot = 418, + MisdirectedRequest = 421, + UnprocessableEntity = 422, + Locked = 423, + FailedDependency = 424, + TooEarly = 425, + UpgradeRequired = 426, + PreconditionRequired = 428, + TooManyRequests = 429, + RequestHeaderFieldsTooLarge = 431, + UnavailableForLegalReasons = 451, + InternalServerError = 500, + NotImplemented = 501, + BadGateway = 502, + ServiceUnavailable = 503, + GatewayTimeout = 504, + HttpVersionNotSupported = 505, + VariantAlsoNegotiates = 506, + InsufficientStorage = 507, + LoopDetected = 508, + NotExtended = 510, + NetworkAuthenticationRequired = 511, +} + +type InternalAxiosError = AxiosError; + +declare namespace axios { + type AxiosError = InternalAxiosError; + + type RawAxiosRequestHeaders = Partial< + RawAxiosHeaders & { + [Key in CommonRequestHeadersList]: AxiosHeaderValue; + } & { + 'Content-Type': ContentType; + } + >; + + type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; + + type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null; + + type RawCommonResponseHeaders = { + [Key in CommonResponseHeadersList]: AxiosHeaderValue; + } & { + 'set-cookie': string[]; + }; + + type RawAxiosResponseHeaders = Partial; + + type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; + + interface AxiosRequestTransformer { + (this: InternalAxiosRequestConfig, data: any, headers: AxiosRequestHeaders): any; + } + + interface AxiosResponseTransformer { + ( + this: InternalAxiosRequestConfig, + data: any, + headers: AxiosResponseHeaders, + status?: number + ): any; + } + + interface AxiosAdapter { + (config: InternalAxiosRequestConfig): AxiosPromise; + } + + interface AxiosBasicCredentials { + username: string; + password: string; + } + + interface AxiosProxyConfig { + host: string; + port: number; + auth?: AxiosBasicCredentials; + protocol?: string; + } + + type Method = + | 'get' + | 'GET' + | 'delete' + | 'DELETE' + | 'head' + | 'HEAD' + | 'options' + | 'OPTIONS' + | 'post' + | 'POST' + | 'put' + | 'PUT' + | 'patch' + | 'PATCH' + | 'purge' + | 'PURGE' + | 'link' + | 'LINK' + | 'unlink' + | 'UNLINK'; + + type ResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata'; + + type responseEncoding = + | 'ascii' + | 'ASCII' + | 'ansi' + | 'ANSI' + | 'binary' + | 'BINARY' + | 'base64' + | 'BASE64' + | 'base64url' + | 'BASE64URL' + | 'hex' + | 'HEX' + | 'latin1' + | 'LATIN1' + | 'ucs-2' + | 'UCS-2' + | 'ucs2' + | 'UCS2' + | 'utf-8' + | 'UTF-8' + | 'utf8' + | 'UTF8' + | 'utf16le' + | 'UTF16LE'; + + interface TransitionalOptions { + silentJSONParsing?: boolean; + forcedJSONParsing?: boolean; + clarifyTimeoutError?: boolean; + legacyInterceptorReqResOrdering?: boolean; + } + + interface GenericAbortSignal { + readonly aborted: boolean; + onabort?: ((...args: any) => any) | null; + addEventListener?: (...args: any) => any; + removeEventListener?: (...args: any) => any; + } + + interface FormDataVisitorHelpers { + defaultVisitor: SerializerVisitor; + convertValue: (value: any) => any; + isVisitable: (value: any) => boolean; + } + + interface SerializerVisitor { + ( + this: GenericFormData, + value: any, + key: string | number, + path: null | Array, + helpers: FormDataVisitorHelpers + ): boolean; + } + + interface SerializerOptions { + visitor?: SerializerVisitor; + dots?: boolean; + metaTokens?: boolean; + indexes?: boolean | null; + } + + // tslint:disable-next-line + interface FormSerializerOptions extends SerializerOptions {} + + interface ParamEncoder { + (value: any, defaultEncoder: (value: any) => any): any; + } + + interface CustomParamsSerializer { + (params: Record, options?: ParamsSerializerOptions): string; + } + + interface ParamsSerializerOptions extends SerializerOptions { + encode?: ParamEncoder; + serialize?: CustomParamsSerializer; + } + + type MaxUploadRate = number; + + type MaxDownloadRate = number; + + interface AxiosProgressEvent { + loaded: number; + total?: number; + progress?: number; + bytes: number; + rate?: number; + estimated?: number; + upload?: boolean; + download?: boolean; + event?: BrowserProgressEvent; + lengthComputable: boolean; + } + + type Milliseconds = number; + + type AxiosAdapterName = 'fetch' | 'xhr' | 'http' | (string & {}); + + type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; + + type AddressFamily = 4 | 6 | undefined; + + interface LookupAddressEntry { + address: string; + family?: AddressFamily; + } + + type LookupAddress = string | LookupAddressEntry; + + interface AxiosRequestConfig { + url?: string; + method?: Method | string; + baseURL?: string; + allowAbsoluteUrls?: boolean; + transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; + transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; + headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; + params?: any; + paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; + data?: D; + timeout?: Milliseconds; + timeoutErrorMessage?: string; + withCredentials?: boolean; + adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; + auth?: AxiosBasicCredentials; + responseType?: ResponseType; + responseEncoding?: responseEncoding | string; + xsrfCookieName?: string; + xsrfHeaderName?: string; + onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; + onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; + maxContentLength?: number; + validateStatus?: ((status: number) => boolean) | null; + maxBodyLength?: number; + maxRedirects?: number; + maxRate?: number | [MaxUploadRate, MaxDownloadRate]; + beforeRedirect?: ( + options: Record, + responseDetails: { headers: Record; statusCode: HttpStatusCode } + ) => void; + socketPath?: string | null; + transport?: any; + httpAgent?: any; + httpsAgent?: any; + proxy?: AxiosProxyConfig | false; + cancelToken?: CancelToken; + decompress?: boolean; + transitional?: TransitionalOptions; + signal?: GenericAbortSignal; + insecureHTTPParser?: boolean; + env?: { + FormData?: new (...args: any[]) => object; + fetch?: (input: URL | Request | string, init?: RequestInit) => Promise; + Request?: new (input: URL | Request | string, init?: RequestInit) => Request; + Response?: new ( + body?: ArrayBuffer | ArrayBufferView | Blob | FormData | URLSearchParams | string | null, + init?: ResponseInit + ) => Response; + }; + formSerializer?: FormSerializerOptions; + family?: AddressFamily; + lookup?: + | (( + hostname: string, + options: object, + cb: ( + err: Error | null, + address: LookupAddress | LookupAddress[], + family?: AddressFamily + ) => void + ) => void) + | (( + hostname: string, + options: object + ) => Promise< + | [address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] + | LookupAddress + >); + withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined); + fetchOptions?: + | Omit + | Record; + httpVersion?: 1 | 2; + http2Options?: Record & { + sessionTimeout?: number; + }; + } + + // Alias + type RawAxiosRequestConfig = AxiosRequestConfig; + + interface InternalAxiosRequestConfig extends AxiosRequestConfig { + headers: AxiosRequestHeaders; + } + + interface HeadersDefaults { + common: RawAxiosRequestHeaders; + delete: RawAxiosRequestHeaders; + get: RawAxiosRequestHeaders; + head: RawAxiosRequestHeaders; + post: RawAxiosRequestHeaders; + put: RawAxiosRequestHeaders; + patch: RawAxiosRequestHeaders; + options?: RawAxiosRequestHeaders; + purge?: RawAxiosRequestHeaders; + link?: RawAxiosRequestHeaders; + unlink?: RawAxiosRequestHeaders; + } + + interface AxiosDefaults extends Omit, 'headers'> { + headers: HeadersDefaults; + } + + interface CreateAxiosDefaults extends Omit, 'headers'> { + headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; + } + + interface AxiosResponse { + data: T; + status: number; + statusText: string; + headers: (H & RawAxiosResponseHeaders) | AxiosResponseHeaders; + config: InternalAxiosRequestConfig; + request?: any; + } + + type AxiosPromise = Promise>; + + interface CancelStatic { + new (message?: string): Cancel; + } + + interface Cancel { + message: string | undefined; + } + + interface Canceler { + (message?: string, config?: AxiosRequestConfig, request?: any): void; + } + + interface CancelTokenStatic { + new (executor: (cancel: Canceler) => void): CancelToken; + source(): CancelTokenSource; + } + + interface CancelToken { + promise: Promise; + reason?: Cancel; + throwIfRequested(): void; + } + + interface CancelTokenSource { + token: CancelToken; + cancel: Canceler; + } + + interface AxiosInterceptorOptions { + synchronous?: boolean; + runWhen?: (config: InternalAxiosRequestConfig) => boolean; + } + + type AxiosInterceptorFulfilled = (value: T) => T | Promise; + type AxiosInterceptorRejected = (error: any) => any; + + type AxiosRequestInterceptorUse = ( + onFulfilled?: AxiosInterceptorFulfilled | null, + onRejected?: AxiosInterceptorRejected | null, + options?: AxiosInterceptorOptions + ) => number; + + type AxiosResponseInterceptorUse = ( + onFulfilled?: AxiosInterceptorFulfilled | null, + onRejected?: AxiosInterceptorRejected | null + ) => number; + + interface AxiosInterceptorHandler { + fulfilled: AxiosInterceptorFulfilled; + rejected?: AxiosInterceptorRejected; + synchronous: boolean; + runWhen?: (config: AxiosRequestConfig) => boolean; + } + + interface AxiosInterceptorManager { + use: V extends AxiosResponse ? AxiosResponseInterceptorUse : AxiosRequestInterceptorUse; + eject(id: number): void; + clear(): void; + handlers?: Array>; + } + + interface AxiosInstance extends Axios { + , D = any>(config: AxiosRequestConfig): Promise; + , D = any>( + url: string, + config?: AxiosRequestConfig + ): Promise; + + create(config?: CreateAxiosDefaults): AxiosInstance; + defaults: Omit & { + headers: HeadersDefaults & { + [key: string]: AxiosHeaderValue; + }; + }; + } + + interface GenericFormData { + append(name: string, value: any, options?: any): any; + } + + interface GenericHTMLFormElement { + name: string; + method: string; + submit(): void; + } + + interface AxiosStatic extends AxiosInstance { + Cancel: CancelStatic; + CancelToken: CancelTokenStatic; + Axios: typeof Axios; + AxiosError: typeof AxiosError; + CanceledError: typeof CanceledError; + HttpStatusCode: typeof HttpStatusCode; + readonly VERSION: string; + isCancel(value: any): value is Cancel; + all(values: Array>): Promise; + spread(callback: (...args: T[]) => R): (array: T[]) => R; + isAxiosError(payload: any): payload is AxiosError; + toFormData( + sourceObj: object, + targetFormData?: GenericFormData, + options?: FormSerializerOptions + ): GenericFormData; + formToJSON(form: GenericFormData | GenericHTMLFormElement): object; + getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter; + AxiosHeaders: typeof AxiosHeaders; + mergeConfig( + config1: AxiosRequestConfig, + config2: AxiosRequestConfig + ): AxiosRequestConfig; + } +} + +declare const axios: axios.AxiosStatic; + +export = axios; diff --git a/bff/node_modules/axios/index.d.ts b/bff/node_modules/axios/index.d.ts new file mode 100644 index 0000000..e9bdcd7 --- /dev/null +++ b/bff/node_modules/axios/index.d.ts @@ -0,0 +1,810 @@ +// TypeScript Version: 4.7 +type StringLiteralsOrString = Literals | (string & {}); + +export type AxiosHeaderValue = + | AxiosHeaders + | string + | string[] + | number + | boolean + | null; + +interface RawAxiosHeaders { + [key: string]: AxiosHeaderValue; +} + +type MethodsHeaders = Partial< + { + [Key in Method as Lowercase]: AxiosHeaders; + } & { common: AxiosHeaders } +>; + +type AxiosHeaderMatcher = + | string + | RegExp + | ((this: AxiosHeaders, value: string, name: string) => boolean); + +type AxiosHeaderParser = ( + this: AxiosHeaders, + value: AxiosHeaderValue, + header: string, +) => any; + +export class AxiosHeaders { + constructor(headers?: RawAxiosHeaders | AxiosHeaders | string); + + [key: string]: any; + + set( + headerName?: string, + value?: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + set( + headers?: RawAxiosHeaders | AxiosHeaders | string, + rewrite?: boolean, + ): AxiosHeaders; + + get(headerName: string, parser: RegExp): RegExpExecArray | null; + get(headerName: string, matcher?: true | AxiosHeaderParser): AxiosHeaderValue; + + has(header: string, matcher?: AxiosHeaderMatcher): boolean; + + delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean; + + clear(matcher?: AxiosHeaderMatcher): boolean; + + normalize(format: boolean): AxiosHeaders; + + concat( + ...targets: Array< + AxiosHeaders | RawAxiosHeaders | string | undefined | null + > + ): AxiosHeaders; + + toJSON(asStrings?: boolean): RawAxiosHeaders; + + static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders; + + static accessor(header: string | string[]): AxiosHeaders; + + static concat( + ...targets: Array< + AxiosHeaders | RawAxiosHeaders | string | undefined | null + > + ): AxiosHeaders; + + setContentType( + value: ContentType, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getContentType(parser?: RegExp): RegExpExecArray | null; + getContentType(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasContentType(matcher?: AxiosHeaderMatcher): boolean; + + setContentLength( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getContentLength(parser?: RegExp): RegExpExecArray | null; + getContentLength(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasContentLength(matcher?: AxiosHeaderMatcher): boolean; + + setAccept( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getAccept(parser?: RegExp): RegExpExecArray | null; + getAccept(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasAccept(matcher?: AxiosHeaderMatcher): boolean; + + setUserAgent( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getUserAgent(parser?: RegExp): RegExpExecArray | null; + getUserAgent(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasUserAgent(matcher?: AxiosHeaderMatcher): boolean; + + setContentEncoding( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getContentEncoding(parser?: RegExp): RegExpExecArray | null; + getContentEncoding(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean; + + setAuthorization( + value: AxiosHeaderValue, + rewrite?: boolean | AxiosHeaderMatcher, + ): AxiosHeaders; + getAuthorization(parser?: RegExp): RegExpExecArray | null; + getAuthorization(matcher?: AxiosHeaderMatcher): AxiosHeaderValue; + hasAuthorization(matcher?: AxiosHeaderMatcher): boolean; + + getSetCookie(): string[]; + + [Symbol.iterator](): IterableIterator<[string, AxiosHeaderValue]>; +} + +type CommonRequestHeadersList = + | "Accept" + | "Content-Length" + | "User-Agent" + | "Content-Encoding" + | "Authorization"; + +type ContentType = + | AxiosHeaderValue + | "text/html" + | "text/plain" + | "multipart/form-data" + | "application/json" + | "application/x-www-form-urlencoded" + | "application/octet-stream"; + +export type RawAxiosRequestHeaders = Partial< + RawAxiosHeaders & { + [Key in CommonRequestHeadersList]: AxiosHeaderValue; + } & { + "Content-Type": ContentType; + } +>; + +export type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; + +type CommonResponseHeadersList = + | "Server" + | "Content-Type" + | "Content-Length" + | "Cache-Control" + | "Content-Encoding"; + +type RawCommonResponseHeaders = { + [Key in CommonResponseHeadersList]: AxiosHeaderValue; +} & { + "set-cookie": string[]; +}; + +export type RawAxiosResponseHeaders = Partial< + RawAxiosHeaders & RawCommonResponseHeaders +>; + +export type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders; + +export interface AxiosRequestTransformer { + ( + this: InternalAxiosRequestConfig, + data: any, + headers: AxiosRequestHeaders, + ): any; +} + +export interface AxiosResponseTransformer { + ( + this: InternalAxiosRequestConfig, + data: any, + headers: AxiosResponseHeaders, + status?: number, + ): any; +} + +export interface AxiosAdapter { + (config: InternalAxiosRequestConfig): AxiosPromise; +} + +export interface AxiosBasicCredentials { + username: string; + password: string; +} + +export interface AxiosProxyConfig { + host: string; + port: number; + auth?: AxiosBasicCredentials; + protocol?: string; +} + +export enum HttpStatusCode { + Continue = 100, + SwitchingProtocols = 101, + Processing = 102, + EarlyHints = 103, + Ok = 200, + Created = 201, + Accepted = 202, + NonAuthoritativeInformation = 203, + NoContent = 204, + ResetContent = 205, + PartialContent = 206, + MultiStatus = 207, + AlreadyReported = 208, + ImUsed = 226, + MultipleChoices = 300, + MovedPermanently = 301, + Found = 302, + SeeOther = 303, + NotModified = 304, + UseProxy = 305, + Unused = 306, + TemporaryRedirect = 307, + PermanentRedirect = 308, + BadRequest = 400, + Unauthorized = 401, + PaymentRequired = 402, + Forbidden = 403, + NotFound = 404, + MethodNotAllowed = 405, + NotAcceptable = 406, + ProxyAuthenticationRequired = 407, + RequestTimeout = 408, + Conflict = 409, + Gone = 410, + LengthRequired = 411, + PreconditionFailed = 412, + PayloadTooLarge = 413, + UriTooLong = 414, + UnsupportedMediaType = 415, + RangeNotSatisfiable = 416, + ExpectationFailed = 417, + ImATeapot = 418, + MisdirectedRequest = 421, + UnprocessableEntity = 422, + Locked = 423, + FailedDependency = 424, + TooEarly = 425, + UpgradeRequired = 426, + PreconditionRequired = 428, + TooManyRequests = 429, + RequestHeaderFieldsTooLarge = 431, + UnavailableForLegalReasons = 451, + InternalServerError = 500, + NotImplemented = 501, + BadGateway = 502, + ServiceUnavailable = 503, + GatewayTimeout = 504, + HttpVersionNotSupported = 505, + VariantAlsoNegotiates = 506, + InsufficientStorage = 507, + LoopDetected = 508, + NotExtended = 510, + NetworkAuthenticationRequired = 511, +} + +export type Method = + | "get" + | "GET" + | "delete" + | "DELETE" + | "head" + | "HEAD" + | "options" + | "OPTIONS" + | "post" + | "POST" + | "put" + | "PUT" + | "patch" + | "PATCH" + | "purge" + | "PURGE" + | "link" + | "LINK" + | "unlink" + | "UNLINK"; + +export type ResponseType = + | "arraybuffer" + | "blob" + | "document" + | "json" + | "text" + | "stream" + | "formdata"; + +export type responseEncoding = + | "ascii" + | "ASCII" + | "ansi" + | "ANSI" + | "binary" + | "BINARY" + | "base64" + | "BASE64" + | "base64url" + | "BASE64URL" + | "hex" + | "HEX" + | "latin1" + | "LATIN1" + | "ucs-2" + | "UCS-2" + | "ucs2" + | "UCS2" + | "utf-8" + | "UTF-8" + | "utf8" + | "UTF8" + | "utf16le" + | "UTF16LE"; + +export interface TransitionalOptions { + silentJSONParsing?: boolean; + forcedJSONParsing?: boolean; + clarifyTimeoutError?: boolean; + legacyInterceptorReqResOrdering?: boolean; +} + +export interface GenericAbortSignal { + readonly aborted: boolean; + onabort?: ((...args: any) => any) | null; + addEventListener?: (...args: any) => any; + removeEventListener?: (...args: any) => any; +} + +export interface FormDataVisitorHelpers { + defaultVisitor: SerializerVisitor; + convertValue: (value: any) => any; + isVisitable: (value: any) => boolean; +} + +export interface SerializerVisitor { + ( + this: GenericFormData, + value: any, + key: string | number, + path: null | Array, + helpers: FormDataVisitorHelpers, + ): boolean; +} + +export interface SerializerOptions { + visitor?: SerializerVisitor; + dots?: boolean; + metaTokens?: boolean; + indexes?: boolean | null; +} + +// tslint:disable-next-line +export interface FormSerializerOptions extends SerializerOptions {} + +export interface ParamEncoder { + (value: any, defaultEncoder: (value: any) => any): any; +} + +export interface CustomParamsSerializer { + (params: Record, options?: ParamsSerializerOptions): string; +} + +export interface ParamsSerializerOptions extends SerializerOptions { + encode?: ParamEncoder; + serialize?: CustomParamsSerializer; +} + +type MaxUploadRate = number; + +type MaxDownloadRate = number; + +type BrowserProgressEvent = any; + +export interface AxiosProgressEvent { + loaded: number; + total?: number; + progress?: number; + bytes: number; + rate?: number; + estimated?: number; + upload?: boolean; + download?: boolean; + event?: BrowserProgressEvent; + lengthComputable: boolean; +} + +type Milliseconds = number; + +type AxiosAdapterName = StringLiteralsOrString<"xhr" | "http" | "fetch">; + +type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName; + +export type AddressFamily = 4 | 6 | undefined; + +export interface LookupAddressEntry { + address: string; + family?: AddressFamily; +} + +export type LookupAddress = string | LookupAddressEntry; + +export interface AxiosRequestConfig { + url?: string; + method?: StringLiteralsOrString; + baseURL?: string; + allowAbsoluteUrls?: boolean; + transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[]; + transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; + headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders; + params?: any; + paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; + data?: D; + timeout?: Milliseconds; + timeoutErrorMessage?: string; + withCredentials?: boolean; + adapter?: AxiosAdapterConfig | AxiosAdapterConfig[]; + auth?: AxiosBasicCredentials; + responseType?: ResponseType; + responseEncoding?: StringLiteralsOrString; + xsrfCookieName?: string; + xsrfHeaderName?: string; + onUploadProgress?: (progressEvent: AxiosProgressEvent) => void; + onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void; + maxContentLength?: number; + validateStatus?: ((status: number) => boolean) | null; + maxBodyLength?: number; + maxRedirects?: number; + maxRate?: number | [MaxUploadRate, MaxDownloadRate]; + beforeRedirect?: ( + options: Record, + responseDetails: { + headers: Record; + statusCode: HttpStatusCode; + }, + ) => void; + socketPath?: string | null; + transport?: any; + httpAgent?: any; + httpsAgent?: any; + proxy?: AxiosProxyConfig | false; + cancelToken?: CancelToken | undefined; + decompress?: boolean; + transitional?: TransitionalOptions; + signal?: GenericAbortSignal; + insecureHTTPParser?: boolean; + env?: { + FormData?: new (...args: any[]) => object; + fetch?: ( + input: URL | Request | string, + init?: RequestInit, + ) => Promise; + Request?: new ( + input: URL | Request | string, + init?: RequestInit, + ) => Request; + Response?: new ( + body?: + | ArrayBuffer + | ArrayBufferView + | Blob + | FormData + | URLSearchParams + | string + | null, + init?: ResponseInit, + ) => Response; + }; + formSerializer?: FormSerializerOptions; + family?: AddressFamily; + lookup?: + | (( + hostname: string, + options: object, + cb: ( + err: Error | null, + address: LookupAddress | LookupAddress[], + family?: AddressFamily, + ) => void, + ) => void) + | (( + hostname: string, + options: object, + ) => Promise< + | [ + address: LookupAddressEntry | LookupAddressEntry[], + family?: AddressFamily, + ] + | LookupAddress + >); + withXSRFToken?: + | boolean + | ((config: InternalAxiosRequestConfig) => boolean | undefined); + parseReviver?: (this: any, key: string, value: any) => any; + fetchOptions?: + | Omit + | Record; + httpVersion?: 1 | 2; + http2Options?: Record & { + sessionTimeout?: number; + }; +} + +// Alias +export type RawAxiosRequestConfig = AxiosRequestConfig; + +export interface InternalAxiosRequestConfig< + D = any, +> extends AxiosRequestConfig { + headers: AxiosRequestHeaders; +} + +export interface HeadersDefaults { + common: RawAxiosRequestHeaders; + delete: RawAxiosRequestHeaders; + get: RawAxiosRequestHeaders; + head: RawAxiosRequestHeaders; + post: RawAxiosRequestHeaders; + put: RawAxiosRequestHeaders; + patch: RawAxiosRequestHeaders; + options?: RawAxiosRequestHeaders; + purge?: RawAxiosRequestHeaders; + link?: RawAxiosRequestHeaders; + unlink?: RawAxiosRequestHeaders; +} + +export interface AxiosDefaults extends Omit< + AxiosRequestConfig, + "headers" +> { + headers: HeadersDefaults; +} + +export interface CreateAxiosDefaults extends Omit< + AxiosRequestConfig, + "headers" +> { + headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial; +} + +export interface AxiosResponse { + data: T; + status: number; + statusText: string; + headers: (H & RawAxiosResponseHeaders) | AxiosResponseHeaders; + config: InternalAxiosRequestConfig; + request?: any; +} + +export class AxiosError extends Error { + constructor( + message?: string, + code?: string, + config?: InternalAxiosRequestConfig, + request?: any, + response?: AxiosResponse, + ); + + config?: InternalAxiosRequestConfig; + code?: string; + request?: any; + response?: AxiosResponse; + isAxiosError: boolean; + status?: number; + toJSON: () => object; + cause?: Error; + event?: BrowserProgressEvent; + static from( + error: Error | unknown, + code?: string, + config?: InternalAxiosRequestConfig, + request?: any, + response?: AxiosResponse, + customProps?: object, + ): AxiosError; + static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS"; + static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE"; + static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION"; + static readonly ERR_NETWORK = "ERR_NETWORK"; + static readonly ERR_DEPRECATED = "ERR_DEPRECATED"; + static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE"; + static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST"; + static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT"; + static readonly ERR_INVALID_URL = "ERR_INVALID_URL"; + static readonly ERR_CANCELED = "ERR_CANCELED"; + static readonly ECONNABORTED = "ECONNABORTED"; + static readonly ETIMEDOUT = "ETIMEDOUT"; +} + +export class CanceledError extends AxiosError { + readonly name: "CanceledError"; +} + +export type AxiosPromise = Promise>; + +export interface CancelStatic { + new (message?: string): Cancel; +} + +export interface Cancel { + message: string | undefined; +} + +export interface Canceler { + (message?: string, config?: AxiosRequestConfig, request?: any): void; +} + +export interface CancelTokenStatic { + new (executor: (cancel: Canceler) => void): CancelToken; + source(): CancelTokenSource; +} + +export interface CancelToken { + promise: Promise; + reason?: Cancel; + throwIfRequested(): void; +} + +export interface CancelTokenSource { + token: CancelToken; + cancel: Canceler; +} + +export interface AxiosInterceptorOptions { + synchronous?: boolean; + runWhen?: (config: InternalAxiosRequestConfig) => boolean; +} + +type AxiosInterceptorFulfilled = (value: T) => T | Promise; +type AxiosInterceptorRejected = (error: any) => any; + +type AxiosRequestInterceptorUse = ( + onFulfilled?: AxiosInterceptorFulfilled | null, + onRejected?: AxiosInterceptorRejected | null, + options?: AxiosInterceptorOptions, +) => number; + +type AxiosResponseInterceptorUse = ( + onFulfilled?: AxiosInterceptorFulfilled | null, + onRejected?: AxiosInterceptorRejected | null, +) => number; + +interface AxiosInterceptorHandler { + fulfilled: AxiosInterceptorFulfilled; + rejected?: AxiosInterceptorRejected; + synchronous: boolean; + runWhen: (config: AxiosRequestConfig) => boolean | null; +} + +export interface AxiosInterceptorManager { + use: V extends AxiosResponse + ? AxiosResponseInterceptorUse + : AxiosRequestInterceptorUse; + eject(id: number): void; + clear(): void; + handlers?: Array>; +} + +export class Axios { + constructor(config?: AxiosRequestConfig); + defaults: AxiosDefaults; + interceptors: { + request: AxiosInterceptorManager; + response: AxiosInterceptorManager; + }; + getUri(config?: AxiosRequestConfig): string; + request, D = any>( + config: AxiosRequestConfig, + ): Promise; + get, D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + delete, D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + head, D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + options, D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + post, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + put, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + patch, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + postForm, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + putForm, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; + patchForm, D = any>( + url: string, + data?: D, + config?: AxiosRequestConfig, + ): Promise; +} + +export interface AxiosInstance extends Axios { + , D = any>( + config: AxiosRequestConfig, + ): Promise; + , D = any>( + url: string, + config?: AxiosRequestConfig, + ): Promise; + + create(config?: CreateAxiosDefaults): AxiosInstance; + defaults: Omit & { + headers: HeadersDefaults & { + [key: string]: AxiosHeaderValue; + }; + }; +} + +export interface GenericFormData { + append(name: string, value: any, options?: any): any; +} + +export interface GenericHTMLFormElement { + name: string; + method: string; + submit(): void; +} + +export function getAdapter( + adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined, +): AxiosAdapter; + +export function toFormData( + sourceObj: object, + targetFormData?: GenericFormData, + options?: FormSerializerOptions, +): GenericFormData; + +export function formToJSON( + form: GenericFormData | GenericHTMLFormElement, +): object; + +export function isAxiosError( + payload: any, +): payload is AxiosError; + +export function spread(callback: (...args: T[]) => R): (array: T[]) => R; + +export function isCancel(value: any): value is CanceledError; + +export function all(values: Array>): Promise; + +export function mergeConfig( + config1: AxiosRequestConfig, + config2: AxiosRequestConfig, +): AxiosRequestConfig; + +export interface AxiosStatic extends AxiosInstance { + Cancel: CancelStatic; + CancelToken: CancelTokenStatic; + Axios: typeof Axios; + AxiosError: typeof AxiosError; + HttpStatusCode: typeof HttpStatusCode; + readonly VERSION: string; + isCancel: typeof isCancel; + all: typeof all; + spread: typeof spread; + isAxiosError: typeof isAxiosError; + toFormData: typeof toFormData; + formToJSON: typeof formToJSON; + getAdapter: typeof getAdapter; + CanceledError: typeof CanceledError; + AxiosHeaders: typeof AxiosHeaders; + mergeConfig: typeof mergeConfig; +} + +declare const axios: AxiosStatic; + +export default axios; diff --git a/bff/node_modules/axios/index.js b/bff/node_modules/axios/index.js new file mode 100644 index 0000000..7dbe23b --- /dev/null +++ b/bff/node_modules/axios/index.js @@ -0,0 +1,43 @@ +import axios from './lib/axios.js'; + +// This module is intended to unwrap Axios default export as named. +// Keep top-level export same with static properties +// so that it can keep same with es module or cjs +const { + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig, +} = axios; + +export { + axios as default, + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig, +}; diff --git a/bff/node_modules/axios/lib/adapters/README.md b/bff/node_modules/axios/lib/adapters/README.md new file mode 100644 index 0000000..8d9dd97 --- /dev/null +++ b/bff/node_modules/axios/lib/adapters/README.md @@ -0,0 +1,36 @@ +# axios // adapters + +The modules under `adapters/` are modules that handle dispatching a request and settling a returned `Promise` once a response is received. + +## Example + +```js +var settle = require('../core/settle'); + +module.exports = function myAdapter(config) { + // At this point: + // - config has been merged with defaults + // - request transformers have already run + // - request interceptors have already run + + // Make the request using config provided + // Upon response settle the Promise + + return new Promise(function (resolve, reject) { + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request, + }; + + settle(resolve, reject, response); + + // From here: + // - response transformers will run + // - response interceptors will run + }); +}; +``` diff --git a/bff/node_modules/axios/lib/adapters/adapters.js b/bff/node_modules/axios/lib/adapters/adapters.js new file mode 100644 index 0000000..5d18745 --- /dev/null +++ b/bff/node_modules/axios/lib/adapters/adapters.js @@ -0,0 +1,130 @@ +import utils from '../utils.js'; +import httpAdapter from './http.js'; +import xhrAdapter from './xhr.js'; +import * as fetchAdapter from './fetch.js'; +import AxiosError from '../core/AxiosError.js'; + +/** + * Known adapters mapping. + * Provides environment-specific adapters for Axios: + * - `http` for Node.js + * - `xhr` for browsers + * - `fetch` for fetch API-based requests + * + * @type {Object} + */ +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter, + fetch: { + get: fetchAdapter.getFetch, + }, +}; + +// Assign adapter names for easier debugging and identification +utils.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', { value }); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', { value }); + } +}); + +/** + * Render a rejection reason string for unknown or unsupported adapters + * + * @param {string} reason + * @returns {string} + */ +const renderReason = (reason) => `- ${reason}`; + +/** + * Check if the adapter is resolved (function, null, or false) + * + * @param {Function|null|false} adapter + * @returns {boolean} + */ +const isResolvedHandle = (adapter) => + utils.isFunction(adapter) || adapter === null || adapter === false; + +/** + * Get the first suitable adapter from the provided list. + * Tries each adapter in order until a supported one is found. + * Throws an AxiosError if no adapter is suitable. + * + * @param {Array|string|Function} adapters - Adapter(s) by name or function. + * @param {Object} config - Axios request configuration + * @throws {AxiosError} If no suitable adapter is available + * @returns {Function} The resolved adapter function + */ +function getAdapter(adapters, config) { + adapters = utils.isArray(adapters) ? adapters : [adapters]; + + const { length } = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError(`Unknown adapter '${id}'`); + } + } + + if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + const reasons = Object.entries(rejectedReasons).map( + ([id, state]) => + `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length + ? reasons.length > 1 + ? 'since :\n' + reasons.map(renderReason).join('\n') + : ' ' + renderReason(reasons[0]) + : 'as no adapter specified'; + + throw new AxiosError( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; +} + +/** + * Exports Axios adapters and utility to resolve an adapter + */ +export default { + /** + * Resolve an adapter from a list of adapter names or functions. + * @type {Function} + */ + getAdapter, + + /** + * Exposes all known adapters + * @type {Object} + */ + adapters: knownAdapters, +}; diff --git a/bff/node_modules/axios/lib/adapters/fetch.js b/bff/node_modules/axios/lib/adapters/fetch.js new file mode 100644 index 0000000..6588ddf --- /dev/null +++ b/bff/node_modules/axios/lib/adapters/fetch.js @@ -0,0 +1,338 @@ +import platform from '../platform/index.js'; +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +import composeSignals from '../helpers/composeSignals.js'; +import { trackStream } from '../helpers/trackStream.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import { + progressEventReducer, + progressEventDecorator, + asyncDecorator, +} from '../helpers/progressEventReducer.js'; +import resolveConfig from '../helpers/resolveConfig.js'; +import settle from '../core/settle.js'; + +const DEFAULT_CHUNK_SIZE = 64 * 1024; + +const { isFunction } = utils; + +const globalFetchAPI = (({ Request, Response }) => ({ + Request, + Response, +}))(utils.global); + +const { ReadableStream, TextEncoder } = utils.global; + +const test = (fn, ...args) => { + try { + return !!fn(...args); + } catch (e) { + return false; + } +}; + +const factory = (env) => { + env = utils.merge.call( + { + skipUndefined: true, + }, + globalFetchAPI, + env + ); + + const { fetch: envFetch, Request, Response } = env; + const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; + const isRequestSupported = isFunction(Request); + const isResponseSupported = isFunction(Response); + + if (!isFetchSupported) { + return false; + } + + const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream); + + const encodeText = + isFetchSupported && + (typeof TextEncoder === 'function' + ? ( + (encoder) => (str) => + encoder.encode(str) + )(new TextEncoder()) + : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); + + const supportsRequestStream = + isRequestSupported && + isReadableStreamSupported && + test(() => { + let duplexAccessed = false; + + const body = new ReadableStream(); + + const hasContentType = new Request(platform.origin, { + body, + method: 'POST', + get duplex() { + duplexAccessed = true; + return 'half'; + }, + }).headers.has('Content-Type'); + + body.cancel(); + + return duplexAccessed && !hasContentType; + }); + + const supportsResponseStream = + isResponseSupported && + isReadableStreamSupported && + test(() => utils.isReadableStream(new Response('').body)); + + const resolvers = { + stream: supportsResponseStream && ((res) => res.body), + }; + + isFetchSupported && + (() => { + ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => { + !resolvers[type] && + (resolvers[type] = (res, config) => { + let method = res && res[type]; + + if (method) { + return method.call(res); + } + + throw new AxiosError( + `Response type '${type}' is not supported`, + AxiosError.ERR_NOT_SUPPORT, + config + ); + }); + }); + })(); + + const getBodyLength = async (body) => { + if (body == null) { + return 0; + } + + if (utils.isBlob(body)) { + return body.size; + } + + if (utils.isSpecCompliantForm(body)) { + const _request = new Request(platform.origin, { + method: 'POST', + body, + }); + return (await _request.arrayBuffer()).byteLength; + } + + if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) { + return body.byteLength; + } + + if (utils.isURLSearchParams(body)) { + body = body + ''; + } + + if (utils.isString(body)) { + return (await encodeText(body)).byteLength; + } + }; + + const resolveBodyLength = async (headers, body) => { + const length = utils.toFiniteNumber(headers.getContentLength()); + + return length == null ? getBodyLength(body) : length; + }; + + return async (config) => { + let { + url, + method, + data, + signal, + cancelToken, + timeout, + onDownloadProgress, + onUploadProgress, + responseType, + headers, + withCredentials = 'same-origin', + fetchOptions, + } = resolveConfig(config); + + let _fetch = envFetch || fetch; + + responseType = responseType ? (responseType + '').toLowerCase() : 'text'; + + let composedSignal = composeSignals( + [signal, cancelToken && cancelToken.toAbortSignal()], + timeout + ); + + let request = null; + + const unsubscribe = + composedSignal && + composedSignal.unsubscribe && + (() => { + composedSignal.unsubscribe(); + }); + + let requestContentLength; + + try { + if ( + onUploadProgress && + supportsRequestStream && + method !== 'get' && + method !== 'head' && + (requestContentLength = await resolveBodyLength(headers, data)) !== 0 + ) { + let _request = new Request(url, { + method: 'POST', + body: data, + duplex: 'half', + }); + + let contentTypeHeader; + + if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { + headers.setContentType(contentTypeHeader); + } + + if (_request.body) { + const [onProgress, flush] = progressEventDecorator( + requestContentLength, + progressEventReducer(asyncDecorator(onUploadProgress)) + ); + + data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); + } + } + + if (!utils.isString(withCredentials)) { + withCredentials = withCredentials ? 'include' : 'omit'; + } + + // Cloudflare Workers throws when credentials are defined + // see https://github.com/cloudflare/workerd/issues/902 + const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; + + const resolvedOptions = { + ...fetchOptions, + signal: composedSignal, + method: method.toUpperCase(), + headers: headers.normalize().toJSON(), + body: data, + duplex: 'half', + credentials: isCredentialsSupported ? withCredentials : undefined, + }; + + request = isRequestSupported && new Request(url, resolvedOptions); + + let response = await (isRequestSupported + ? _fetch(request, fetchOptions) + : _fetch(url, resolvedOptions)); + + const isStreamResponse = + supportsResponseStream && (responseType === 'stream' || responseType === 'response'); + + if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { + const options = {}; + + ['status', 'statusText', 'headers'].forEach((prop) => { + options[prop] = response[prop]; + }); + + const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length')); + + const [onProgress, flush] = + (onDownloadProgress && + progressEventDecorator( + responseContentLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true) + )) || + []; + + response = new Response( + trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { + flush && flush(); + unsubscribe && unsubscribe(); + }), + options + ); + } + + responseType = responseType || 'text'; + + let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text']( + response, + config + ); + + !isStreamResponse && unsubscribe && unsubscribe(); + + return await new Promise((resolve, reject) => { + settle(resolve, reject, { + data: responseData, + headers: AxiosHeaders.from(response.headers), + status: response.status, + statusText: response.statusText, + config, + request, + }); + }); + } catch (err) { + unsubscribe && unsubscribe(); + + if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { + throw Object.assign( + new AxiosError( + 'Network Error', + AxiosError.ERR_NETWORK, + config, + request, + err && err.response + ), + { + cause: err.cause || err, + } + ); + } + + throw AxiosError.from(err, err && err.code, config, request, err && err.response); + } + }; +}; + +const seedCache = new Map(); + +export const getFetch = (config) => { + let env = (config && config.env) || {}; + const { fetch, Request, Response } = env; + const seeds = [Request, Response, fetch]; + + let len = seeds.length, + i = len, + seed, + target, + map = seedCache; + + while (i--) { + seed = seeds[i]; + target = map.get(seed); + + target === undefined && map.set(seed, (target = i ? new Map() : factory(env))); + + map = target; + } + + return target; +}; + +const adapter = getFetch(); + +export default adapter; diff --git a/bff/node_modules/axios/lib/adapters/http.js b/bff/node_modules/axios/lib/adapters/http.js new file mode 100755 index 0000000..8a43437 --- /dev/null +++ b/bff/node_modules/axios/lib/adapters/http.js @@ -0,0 +1,952 @@ +import utils from '../utils.js'; +import settle from '../core/settle.js'; +import buildFullPath from '../core/buildFullPath.js'; +import buildURL from '../helpers/buildURL.js'; +import { getProxyForUrl } from 'proxy-from-env'; +import http from 'http'; +import https from 'https'; +import http2 from 'http2'; +import util from 'util'; +import followRedirects from 'follow-redirects'; +import zlib from 'zlib'; +import { VERSION } from '../env/data.js'; +import transitionalDefaults from '../defaults/transitional.js'; +import AxiosError from '../core/AxiosError.js'; +import CanceledError from '../cancel/CanceledError.js'; +import platform from '../platform/index.js'; +import fromDataURI from '../helpers/fromDataURI.js'; +import stream from 'stream'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import AxiosTransformStream from '../helpers/AxiosTransformStream.js'; +import { EventEmitter } from 'events'; +import formDataToStream from '../helpers/formDataToStream.js'; +import readBlob from '../helpers/readBlob.js'; +import ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js'; +import callbackify from '../helpers/callbackify.js'; +import { + progressEventReducer, + progressEventDecorator, + asyncDecorator, +} from '../helpers/progressEventReducer.js'; +import estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.js'; + +const zlibOptions = { + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH, +}; + +const brotliOptions = { + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH, +}; + +const isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress); + +const { http: httpFollow, https: httpsFollow } = followRedirects; + +const isHttps = /https:?/; + +const supportedProtocols = platform.protocols.map((protocol) => { + return protocol + ':'; +}); + +const flushOnFinish = (stream, [throttled, flush]) => { + stream.on('end', flush).on('error', flush); + + return throttled; +}; + +class Http2Sessions { + constructor() { + this.sessions = Object.create(null); + } + + getSession(authority, options) { + options = Object.assign( + { + sessionTimeout: 1000, + }, + options + ); + + let authoritySessions = this.sessions[authority]; + + if (authoritySessions) { + let len = authoritySessions.length; + + for (let i = 0; i < len; i++) { + const [sessionHandle, sessionOptions] = authoritySessions[i]; + if ( + !sessionHandle.destroyed && + !sessionHandle.closed && + util.isDeepStrictEqual(sessionOptions, options) + ) { + return sessionHandle; + } + } + } + + const session = http2.connect(authority, options); + + let removed; + + const removeSession = () => { + if (removed) { + return; + } + + removed = true; + + let entries = authoritySessions, + len = entries.length, + i = len; + + while (i--) { + if (entries[i][0] === session) { + if (len === 1) { + delete this.sessions[authority]; + } else { + entries.splice(i, 1); + } + if (!session.closed) { + session.close(); + } + return; + } + } + }; + + const originalRequestFn = session.request; + + const { sessionTimeout } = options; + + if (sessionTimeout != null) { + let timer; + let streamsCount = 0; + + session.request = function () { + const stream = originalRequestFn.apply(this, arguments); + + streamsCount++; + + if (timer) { + clearTimeout(timer); + timer = null; + } + + stream.once('close', () => { + if (!--streamsCount) { + timer = setTimeout(() => { + timer = null; + removeSession(); + }, sessionTimeout); + } + }); + + return stream; + }; + } + + session.once('close', removeSession); + + let entry = [session, options]; + + authoritySessions + ? authoritySessions.push(entry) + : (authoritySessions = this.sessions[authority] = [entry]); + + return session; + } +} + +const http2Sessions = new Http2Sessions(); + +/** + * If the proxy or config beforeRedirects functions are defined, call them with the options + * object. + * + * @param {Object} options - The options object that was passed to the request. + * + * @returns {Object} + */ +function dispatchBeforeRedirect(options, responseDetails) { + if (options.beforeRedirects.proxy) { + options.beforeRedirects.proxy(options); + } + if (options.beforeRedirects.config) { + options.beforeRedirects.config(options, responseDetails); + } +} + +/** + * If the proxy or config afterRedirects functions are defined, call them with the options + * + * @param {http.ClientRequestArgs} options + * @param {AxiosProxyConfig} configProxy configuration from Axios options object + * @param {string} location + * + * @returns {http.ClientRequestArgs} + */ +function setProxy(options, configProxy, location) { + let proxy = configProxy; + if (!proxy && proxy !== false) { + const proxyUrl = getProxyForUrl(location); + if (proxyUrl) { + proxy = new URL(proxyUrl); + } + } + if (proxy) { + // Basic proxy authorization + if (proxy.username) { + proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); + } + + if (proxy.auth) { + // Support proxy auth object form + const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password); + + if (validProxyAuth) { + proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); + } else if (typeof proxy.auth === 'object') { + throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { proxy }); + } + + const base64 = Buffer.from(proxy.auth, 'utf8').toString('base64'); + + options.headers['Proxy-Authorization'] = 'Basic ' + base64; + } + + options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); + const proxyHost = proxy.hostname || proxy.host; + options.hostname = proxyHost; + // Replace 'host' since options is not a URL object + options.host = proxyHost; + options.port = proxy.port; + options.path = location; + if (proxy.protocol) { + options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; + } + } + + options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { + // Configure proxy for redirected request, passing the original config proxy to apply + // the exact same logic as if the redirected request was performed by axios directly. + setProxy(redirectOptions, configProxy, redirectOptions.href); + }; +} + +const isHttpAdapterSupported = + typeof process !== 'undefined' && utils.kindOf(process) === 'process'; + +// temporary hotfix + +const wrapAsync = (asyncExecutor) => { + return new Promise((resolve, reject) => { + let onDone; + let isDone; + + const done = (value, isRejected) => { + if (isDone) return; + isDone = true; + onDone && onDone(value, isRejected); + }; + + const _resolve = (value) => { + done(value); + resolve(value); + }; + + const _reject = (reason) => { + done(reason, true); + reject(reason); + }; + + asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); + }); +}; + +const resolveFamily = ({ address, family }) => { + if (!utils.isString(address)) { + throw TypeError('address must be a string'); + } + return { + address, + family: family || (address.indexOf('.') < 0 ? 6 : 4), + }; +}; + +const buildAddressEntry = (address, family) => + resolveFamily(utils.isObject(address) ? address : { address, family }); + +const http2Transport = { + request(options, cb) { + const authority = + options.protocol + + '//' + + options.hostname + + ':' + + (options.port || (options.protocol === 'https:' ? 443 : 80)); + + const { http2Options, headers } = options; + + const session = http2Sessions.getSession(authority, http2Options); + + const { HTTP2_HEADER_SCHEME, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_STATUS } = + http2.constants; + + const http2Headers = { + [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), + [HTTP2_HEADER_METHOD]: options.method, + [HTTP2_HEADER_PATH]: options.path, + }; + + utils.forEach(headers, (header, name) => { + name.charAt(0) !== ':' && (http2Headers[name] = header); + }); + + const req = session.request(http2Headers); + + req.once('response', (responseHeaders) => { + const response = req; //duplex + + responseHeaders = Object.assign({}, responseHeaders); + + const status = responseHeaders[HTTP2_HEADER_STATUS]; + + delete responseHeaders[HTTP2_HEADER_STATUS]; + + response.headers = responseHeaders; + + response.statusCode = +status; + + cb(response); + }); + + return req; + }, +}; + +/*eslint consistent-return:0*/ +export default isHttpAdapterSupported && + function httpAdapter(config) { + return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { + let { data, lookup, family, httpVersion = 1, http2Options } = config; + const { responseType, responseEncoding } = config; + const method = config.method.toUpperCase(); + let isDone; + let rejected = false; + let req; + + httpVersion = +httpVersion; + + if (Number.isNaN(httpVersion)) { + throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`); + } + + if (httpVersion !== 1 && httpVersion !== 2) { + throw TypeError(`Unsupported protocol version '${httpVersion}'`); + } + + const isHttp2 = httpVersion === 2; + + if (lookup) { + const _lookup = callbackify(lookup, (value) => (utils.isArray(value) ? value : [value])); + // hotfix to support opt.all option which is required for node 20.x + lookup = (hostname, opt, cb) => { + _lookup(hostname, opt, (err, arg0, arg1) => { + if (err) { + return cb(err); + } + + const addresses = utils.isArray(arg0) + ? arg0.map((addr) => buildAddressEntry(addr)) + : [buildAddressEntry(arg0, arg1)]; + + opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); + }); + }; + } + + const abortEmitter = new EventEmitter(); + + function abort(reason) { + try { + abortEmitter.emit( + 'abort', + !reason || reason.type ? new CanceledError(null, config, req) : reason + ); + } catch (err) { + console.warn('emit error', err); + } + } + + abortEmitter.once('abort', reject); + + const onFinished = () => { + if (config.cancelToken) { + config.cancelToken.unsubscribe(abort); + } + + if (config.signal) { + config.signal.removeEventListener('abort', abort); + } + + abortEmitter.removeAllListeners(); + }; + + if (config.cancelToken || config.signal) { + config.cancelToken && config.cancelToken.subscribe(abort); + if (config.signal) { + config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); + } + } + + onDone((response, isRejected) => { + isDone = true; + + if (isRejected) { + rejected = true; + onFinished(); + return; + } + + const { data } = response; + + if (data instanceof stream.Readable || data instanceof stream.Duplex) { + const offListeners = stream.finished(data, () => { + offListeners(); + onFinished(); + }); + } else { + onFinished(); + } + }); + + // Parse url + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); + const protocol = parsed.protocol || supportedProtocols[0]; + + if (protocol === 'data:') { + // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set. + if (config.maxContentLength > -1) { + // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed. + const dataUrl = String(config.url || fullPath || ''); + const estimated = estimateDataURLDecodedBytes(dataUrl); + + if (estimated > config.maxContentLength) { + return reject( + new AxiosError( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, + config + ) + ); + } + } + + let convertedData; + + if (method !== 'GET') { + return settle(resolve, reject, { + status: 405, + statusText: 'method not allowed', + headers: {}, + config, + }); + } + + try { + convertedData = fromDataURI(config.url, responseType === 'blob', { + Blob: config.env && config.env.Blob, + }); + } catch (err) { + throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); + } + + if (responseType === 'text') { + convertedData = convertedData.toString(responseEncoding); + + if (!responseEncoding || responseEncoding === 'utf8') { + convertedData = utils.stripBOM(convertedData); + } + } else if (responseType === 'stream') { + convertedData = stream.Readable.from(convertedData); + } + + return settle(resolve, reject, { + data: convertedData, + status: 200, + statusText: 'OK', + headers: new AxiosHeaders(), + config, + }); + } + + if (supportedProtocols.indexOf(protocol) === -1) { + return reject( + new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_BAD_REQUEST, config) + ); + } + + const headers = AxiosHeaders.from(config.headers).normalize(); + + // Set User-Agent (required by some servers) + // See https://github.com/axios/axios/issues/69 + // User-Agent is specified; handle case where no UA header is desired + // Only set header if it hasn't been set in config + headers.set('User-Agent', 'axios/' + VERSION, false); + + const { onUploadProgress, onDownloadProgress } = config; + const maxRate = config.maxRate; + let maxUploadRate = undefined; + let maxDownloadRate = undefined; + + // support for spec compliant FormData objects + if (utils.isSpecCompliantForm(data)) { + const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); + + data = formDataToStream( + data, + (formHeaders) => { + headers.set(formHeaders); + }, + { + tag: `axios-${VERSION}-boundary`, + boundary: (userBoundary && userBoundary[1]) || undefined, + } + ); + // support for https://www.npmjs.com/package/form-data api + } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) { + headers.set(data.getHeaders()); + + if (!headers.hasContentLength()) { + try { + const knownLength = await util.promisify(data.getLength).call(data); + Number.isFinite(knownLength) && + knownLength >= 0 && + headers.setContentLength(knownLength); + /*eslint no-empty:0*/ + } catch (e) {} + } + } else if (utils.isBlob(data) || utils.isFile(data)) { + data.size && headers.setContentType(data.type || 'application/octet-stream'); + headers.setContentLength(data.size || 0); + data = stream.Readable.from(readBlob(data)); + } else if (data && !utils.isStream(data)) { + if (Buffer.isBuffer(data)) { + // Nothing to do... + } else if (utils.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils.isString(data)) { + data = Buffer.from(data, 'utf-8'); + } else { + return reject( + new AxiosError( + 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', + AxiosError.ERR_BAD_REQUEST, + config + ) + ); + } + + // Add Content-Length header if data exists + headers.setContentLength(data.length, false); + + if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { + return reject( + new AxiosError( + 'Request body larger than maxBodyLength limit', + AxiosError.ERR_BAD_REQUEST, + config + ) + ); + } + } + + const contentLength = utils.toFiniteNumber(headers.getContentLength()); + + if (utils.isArray(maxRate)) { + maxUploadRate = maxRate[0]; + maxDownloadRate = maxRate[1]; + } else { + maxUploadRate = maxDownloadRate = maxRate; + } + + if (data && (onUploadProgress || maxUploadRate)) { + if (!utils.isStream(data)) { + data = stream.Readable.from(data, { objectMode: false }); + } + + data = stream.pipeline( + [ + data, + new AxiosTransformStream({ + maxRate: utils.toFiniteNumber(maxUploadRate), + }), + ], + utils.noop + ); + + onUploadProgress && + data.on( + 'progress', + flushOnFinish( + data, + progressEventDecorator( + contentLength, + progressEventReducer(asyncDecorator(onUploadProgress), false, 3) + ) + ) + ); + } + + // HTTP basic authentication + let auth = undefined; + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password || ''; + auth = username + ':' + password; + } + + if (!auth && parsed.username) { + const urlUsername = parsed.username; + const urlPassword = parsed.password; + auth = urlUsername + ':' + urlPassword; + } + + auth && headers.delete('authorization'); + + let path; + + try { + path = buildURL( + parsed.pathname + parsed.search, + config.params, + config.paramsSerializer + ).replace(/^\?/, ''); + } catch (err) { + const customErr = new Error(err.message); + customErr.config = config; + customErr.url = config.url; + customErr.exists = true; + return reject(customErr); + } + + headers.set( + 'Accept-Encoding', + 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), + false + ); + + const options = { + path, + method: method, + headers: headers.toJSON(), + agents: { http: config.httpAgent, https: config.httpsAgent }, + auth, + protocol, + family, + beforeRedirect: dispatchBeforeRedirect, + beforeRedirects: {}, + http2Options, + }; + + // cacheable-lookup integration hotfix + !utils.isUndefined(lookup) && (options.lookup = lookup); + + if (config.socketPath) { + options.socketPath = config.socketPath; + } else { + options.hostname = parsed.hostname.startsWith('[') + ? parsed.hostname.slice(1, -1) + : parsed.hostname; + options.port = parsed.port; + setProxy( + options, + config.proxy, + protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path + ); + } + + let transport; + const isHttpsRequest = isHttps.test(options.protocol); + options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + + if (isHttp2) { + transport = http2Transport; + } else { + if (config.transport) { + transport = config.transport; + } else if (config.maxRedirects === 0) { + transport = isHttpsRequest ? https : http; + } else { + if (config.maxRedirects) { + options.maxRedirects = config.maxRedirects; + } + if (config.beforeRedirect) { + options.beforeRedirects.config = config.beforeRedirect; + } + transport = isHttpsRequest ? httpsFollow : httpFollow; + } + } + + if (config.maxBodyLength > -1) { + options.maxBodyLength = config.maxBodyLength; + } else { + // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited + options.maxBodyLength = Infinity; + } + + if (config.insecureHTTPParser) { + options.insecureHTTPParser = config.insecureHTTPParser; + } + + // Create the request + req = transport.request(options, function handleResponse(res) { + if (req.destroyed) return; + + const streams = [res]; + + const responseLength = utils.toFiniteNumber(res.headers['content-length']); + + if (onDownloadProgress || maxDownloadRate) { + const transformStream = new AxiosTransformStream({ + maxRate: utils.toFiniteNumber(maxDownloadRate), + }); + + onDownloadProgress && + transformStream.on( + 'progress', + flushOnFinish( + transformStream, + progressEventDecorator( + responseLength, + progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) + ) + ) + ); + + streams.push(transformStream); + } + + // decompress the response body transparently if required + let responseStream = res; + + // return the last request in case of redirects + const lastRequest = res.req || req; + + // if decompress disabled we should not decompress + if (config.decompress !== false && res.headers['content-encoding']) { + // if no content, but headers still say that it is encoded, + // remove the header not confuse downstream operations + if (method === 'HEAD' || res.statusCode === 204) { + delete res.headers['content-encoding']; + } + + switch ((res.headers['content-encoding'] || '').toLowerCase()) { + /*eslint default-case:0*/ + case 'gzip': + case 'x-gzip': + case 'compress': + case 'x-compress': + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'deflate': + streams.push(new ZlibHeaderTransformStream()); + + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'br': + if (isBrotliSupported) { + streams.push(zlib.createBrotliDecompress(brotliOptions)); + delete res.headers['content-encoding']; + } + } + } + + responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0]; + + const response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: new AxiosHeaders(res.headers), + config, + request: lastRequest, + }; + + if (responseType === 'stream') { + response.data = responseStream; + settle(resolve, reject, response); + } else { + const responseBuffer = []; + let totalResponseBytes = 0; + + responseStream.on('data', function handleStreamData(chunk) { + responseBuffer.push(chunk); + totalResponseBytes += chunk.length; + + // make sure the content length is not over the maxContentLength if specified + if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { + // stream.destroy() emit aborted event before calling reject() on Node.js v16 + rejected = true; + responseStream.destroy(); + abort( + new AxiosError( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, + config, + lastRequest + ) + ); + } + }); + + responseStream.on('aborted', function handlerStreamAborted() { + if (rejected) { + return; + } + + const err = new AxiosError( + 'stream has been aborted', + AxiosError.ERR_BAD_RESPONSE, + config, + lastRequest + ); + responseStream.destroy(err); + reject(err); + }); + + responseStream.on('error', function handleStreamError(err) { + if (req.destroyed) return; + reject(AxiosError.from(err, null, config, lastRequest)); + }); + + responseStream.on('end', function handleStreamEnd() { + try { + let responseData = + responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); + if (responseType !== 'arraybuffer') { + responseData = responseData.toString(responseEncoding); + if (!responseEncoding || responseEncoding === 'utf8') { + responseData = utils.stripBOM(responseData); + } + } + response.data = responseData; + } catch (err) { + return reject(AxiosError.from(err, null, config, response.request, response)); + } + settle(resolve, reject, response); + }); + } + + abortEmitter.once('abort', (err) => { + if (!responseStream.destroyed) { + responseStream.emit('error', err); + responseStream.destroy(); + } + }); + }); + + abortEmitter.once('abort', (err) => { + if (req.close) { + req.close(); + } else { + req.destroy(err); + } + }); + + // Handle errors + req.on('error', function handleRequestError(err) { + reject(AxiosError.from(err, null, config, req)); + }); + + // set tcp keep alive to prevent drop connection by peer + req.on('socket', function handleRequestSocket(socket) { + // default interval of sending ack packet is 1 minute + socket.setKeepAlive(true, 1000 * 60); + }); + + // Handle request timeout + if (config.timeout) { + // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. + const timeout = parseInt(config.timeout, 10); + + if (Number.isNaN(timeout)) { + abort( + new AxiosError( + 'error trying to parse `config.timeout` to int', + AxiosError.ERR_BAD_OPTION_VALUE, + config, + req + ) + ); + + return; + } + + // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. + // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. + // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. + // And then these socket which be hang up will devouring CPU little by little. + // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. + req.setTimeout(timeout, function handleRequestTimeout() { + if (isDone) return; + let timeoutErrorMessage = config.timeout + ? 'timeout of ' + config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + abort( + new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + req + ) + ); + }); + } else { + // explicitly reset the socket timeout value for a possible `keep-alive` request + req.setTimeout(0); + } + + // Send the request + if (utils.isStream(data)) { + let ended = false; + let errored = false; + + data.on('end', () => { + ended = true; + }); + + data.once('error', (err) => { + errored = true; + req.destroy(err); + }); + + data.on('close', () => { + if (!ended && !errored) { + abort(new CanceledError('Request stream has been aborted', config, req)); + } + }); + + data.pipe(req); + } else { + data && req.write(data); + req.end(); + } + }); + }; + +export const __setProxy = setProxy; diff --git a/bff/node_modules/axios/lib/adapters/xhr.js b/bff/node_modules/axios/lib/adapters/xhr.js new file mode 100644 index 0000000..1d2c837 --- /dev/null +++ b/bff/node_modules/axios/lib/adapters/xhr.js @@ -0,0 +1,222 @@ +import utils from '../utils.js'; +import settle from '../core/settle.js'; +import transitionalDefaults from '../defaults/transitional.js'; +import AxiosError from '../core/AxiosError.js'; +import CanceledError from '../cancel/CanceledError.js'; +import parseProtocol from '../helpers/parseProtocol.js'; +import platform from '../platform/index.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import { progressEventReducer } from '../helpers/progressEventReducer.js'; +import resolveConfig from '../helpers/resolveConfig.js'; + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +export default isXHRAdapterSupported && + function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + const _config = resolveConfig(config); + let requestData = _config.data; + const requestHeaders = AxiosHeaders.from(_config.headers).normalize(); + let { responseType, onUploadProgress, onDownloadProgress } = _config; + let onCanceled; + let uploadThrottled, downloadThrottled; + let flushUpload, flushDownload; + + function done() { + flushUpload && flushUpload(); // flush events + flushDownload && flushDownload(); // flush events + + _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); + + _config.signal && _config.signal.removeEventListener('abort', onCanceled); + } + + let request = new XMLHttpRequest(); + + request.open(_config.method.toUpperCase(), _config.url, true); + + // Set the request timeout in MS + request.timeout = _config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = + !responseType || responseType === 'text' || responseType === 'json' + ? request.responseText + : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request, + }; + + settle( + function _resolve(value) { + resolve(value); + done(); + }, + function _reject(err) { + reject(err); + done(); + }, + response + ); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if ( + request.status === 0 && + !(request.responseURL && request.responseURL.indexOf('file:') === 0) + ) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError(event) { + // Browsers deliver a ProgressEvent in XHR onerror + // (message may be empty; when present, surface it) + // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event + const msg = event && event.message ? event.message : 'Network Error'; + const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request); + // attach the underlying event for consumers who want details + err.event = event || null; + reject(err); + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = _config.timeout + ? 'timeout of ' + _config.timeout + 'ms exceeded' + : 'timeout exceeded'; + const transitional = _config.transitional || transitionalDefaults; + if (_config.timeoutErrorMessage) { + timeoutErrorMessage = _config.timeoutErrorMessage; + } + reject( + new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + request + ) + ); + + // Clean up request + request = null; + }; + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(_config.withCredentials)) { + request.withCredentials = !!_config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = _config.responseType; + } + + // Handle progress if needed + if (onDownloadProgress) { + [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); + request.addEventListener('progress', downloadThrottled); + } + + // Not all browsers support upload events + if (onUploadProgress && request.upload) { + [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); + + request.upload.addEventListener('progress', uploadThrottled); + + request.upload.addEventListener('loadend', flushUpload); + } + + if (_config.cancelToken || _config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = (cancel) => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); + request.abort(); + request = null; + }; + + _config.cancelToken && _config.cancelToken.subscribe(onCanceled); + if (_config.signal) { + _config.signal.aborted + ? onCanceled() + : _config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(_config.url); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject( + new AxiosError( + 'Unsupported protocol ' + protocol + ':', + AxiosError.ERR_BAD_REQUEST, + config + ) + ); + return; + } + + // Send the request + request.send(requestData || null); + }); + }; diff --git a/bff/node_modules/axios/lib/axios.js b/bff/node_modules/axios/lib/axios.js new file mode 100644 index 0000000..5a3a876 --- /dev/null +++ b/bff/node_modules/axios/lib/axios.js @@ -0,0 +1,89 @@ +'use strict'; + +import utils from './utils.js'; +import bind from './helpers/bind.js'; +import Axios from './core/Axios.js'; +import mergeConfig from './core/mergeConfig.js'; +import defaults from './defaults/index.js'; +import formDataToJSON from './helpers/formDataToJSON.js'; +import CanceledError from './cancel/CanceledError.js'; +import CancelToken from './cancel/CancelToken.js'; +import isCancel from './cancel/isCancel.js'; +import { VERSION } from './env/data.js'; +import toFormData from './helpers/toFormData.js'; +import AxiosError from './core/AxiosError.js'; +import spread from './helpers/spread.js'; +import isAxiosError from './helpers/isAxiosError.js'; +import AxiosHeaders from './core/AxiosHeaders.js'; +import adapters from './adapters/adapters.js'; +import HttpStatusCode from './helpers/HttpStatusCode.js'; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios(defaultConfig); + const instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context, { allOwnKeys: true }); + + // Copy context to instance + utils.extend(instance, context, null, { allOwnKeys: true }); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError; +axios.CancelToken = CancelToken; +axios.isCancel = isCancel; +axios.VERSION = VERSION; +axios.toFormData = toFormData; + +// Expose AxiosError class +axios.AxiosError = AxiosError; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig; + +axios.AxiosHeaders = AxiosHeaders; + +axios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode; + +axios.default = axios; + +// this module should only have a default export +export default axios; diff --git a/bff/node_modules/axios/lib/cancel/CancelToken.js b/bff/node_modules/axios/lib/cancel/CancelToken.js new file mode 100644 index 0000000..357381e --- /dev/null +++ b/bff/node_modules/axios/lib/cancel/CancelToken.js @@ -0,0 +1,135 @@ +'use strict'; + +import CanceledError from './CanceledError.js'; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then((cancel) => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = (onfulfilled) => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise((resolve) => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + toAbortSignal() { + const controller = new AbortController(); + + const abort = (err) => { + controller.abort(err); + }; + + this.subscribe(abort); + + controller.signal.unsubscribe = () => this.unsubscribe(abort); + + return controller.signal; + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token, + cancel, + }; + } +} + +export default CancelToken; diff --git a/bff/node_modules/axios/lib/cancel/CanceledError.js b/bff/node_modules/axios/lib/cancel/CanceledError.js new file mode 100644 index 0000000..e769b89 --- /dev/null +++ b/bff/node_modules/axios/lib/cancel/CanceledError.js @@ -0,0 +1,22 @@ +'use strict'; + +import AxiosError from '../core/AxiosError.js'; + +class CanceledError extends AxiosError { + /** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ + constructor(message, config, request) { + super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); + this.name = 'CanceledError'; + this.__CANCEL__ = true; + } +} + +export default CanceledError; diff --git a/bff/node_modules/axios/lib/cancel/isCancel.js b/bff/node_modules/axios/lib/cancel/isCancel.js new file mode 100644 index 0000000..a444a12 --- /dev/null +++ b/bff/node_modules/axios/lib/cancel/isCancel.js @@ -0,0 +1,5 @@ +'use strict'; + +export default function isCancel(value) { + return !!(value && value.__CANCEL__); +} diff --git a/bff/node_modules/axios/lib/core/Axios.js b/bff/node_modules/axios/lib/core/Axios.js new file mode 100644 index 0000000..6ac52f1 --- /dev/null +++ b/bff/node_modules/axios/lib/core/Axios.js @@ -0,0 +1,261 @@ +'use strict'; + +import utils from '../utils.js'; +import buildURL from '../helpers/buildURL.js'; +import InterceptorManager from './InterceptorManager.js'; +import dispatchRequest from './dispatchRequest.js'; +import mergeConfig from './mergeConfig.js'; +import buildFullPath from './buildFullPath.js'; +import validator from '../helpers/validator.js'; +import AxiosHeaders from './AxiosHeaders.js'; +import transitionalDefaults from '../defaults/transitional.js'; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios { + constructor(instanceConfig) { + this.defaults = instanceConfig || {}; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager(), + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + async request(configOrUrl, config) { + try { + return await this._request(configOrUrl, config); + } catch (err) { + if (err instanceof Error) { + let dummy = {}; + + Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error()); + + // slice off the Error: ... line + const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : ''; + try { + if (!err.stack) { + err.stack = stack; + // match without the 2 top stack lines + } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) { + err.stack += '\n' + stack; + } + } catch (e) { + // ignore the case where "stack" is an un-writable property + } + } + + throw err; + } + } + + _request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig(this.defaults, config); + + const { transitional, paramsSerializer, headers } = config; + + if (transitional !== undefined) { + validator.assertOptions( + transitional, + { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean), + legacyInterceptorReqResOrdering: validators.transitional(validators.boolean), + }, + false + ); + } + + if (paramsSerializer != null) { + if (utils.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer, + }; + } else { + validator.assertOptions( + paramsSerializer, + { + encode: validators.function, + serialize: validators.function, + }, + true + ); + } + } + + // Set config.allowAbsoluteUrls + if (config.allowAbsoluteUrls !== undefined) { + // do nothing + } else if (this.defaults.allowAbsoluteUrls !== undefined) { + config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; + } else { + config.allowAbsoluteUrls = true; + } + + validator.assertOptions( + config, + { + baseUrl: validators.spelling('baseURL'), + withXsrfToken: validators.spelling('withXSRFToken'), + }, + true + ); + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils.merge(headers.common, headers[config.method]); + + headers && + utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => { + delete headers[method]; + }); + + config.headers = AxiosHeaders.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + const transitional = config.transitional || transitionalDefaults; + const legacyInterceptorReqResOrdering = + transitional && transitional.legacyInterceptorReqResOrdering; + + if (legacyInterceptorReqResOrdering) { + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + } else { + requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + } + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift(...requestInterceptorChain); + chain.push(...responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function (url, config) { + return this.request( + mergeConfig(config || {}, { + method, + url, + data: (config || {}).data, + }) + ); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request( + mergeConfig(config || {}, { + method, + headers: isForm + ? { + 'Content-Type': 'multipart/form-data', + } + : {}, + url, + data, + }) + ); + }; + } + + Axios.prototype[method] = generateHTTPMethod(); + + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +export default Axios; diff --git a/bff/node_modules/axios/lib/core/AxiosError.js b/bff/node_modules/axios/lib/core/AxiosError.js new file mode 100644 index 0000000..f28b886 --- /dev/null +++ b/bff/node_modules/axios/lib/core/AxiosError.js @@ -0,0 +1,90 @@ +'use strict'; + +import utils from '../utils.js'; + +class AxiosError extends Error { + static from(error, code, config, request, response, customProps) { + const axiosError = new AxiosError(error.message, code || error.code, config, request, response); + axiosError.cause = error; + axiosError.name = error.name; + + // Preserve status from the original error if not already set from response + if (error.status != null && axiosError.status == null) { + axiosError.status = error.status; + } + + customProps && Object.assign(axiosError, customProps); + return axiosError; + } + + /** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ + constructor(message, code, config, request, response) { + super(message); + + // Make message enumerable to maintain backward compatibility + // The native Error constructor sets message as non-enumerable, + // but axios < v1.13.3 had it as enumerable + Object.defineProperty(this, 'message', { + value: message, + enumerable: true, + writable: true, + configurable: true + }); + + this.name = 'AxiosError'; + this.isAxiosError = true; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + if (response) { + this.response = response; + this.status = response.status; + } + } + + toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils.toJSONObject(this.config), + code: this.code, + status: this.status, + }; + } +} + +// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. +AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; +AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; +AxiosError.ECONNABORTED = 'ECONNABORTED'; +AxiosError.ETIMEDOUT = 'ETIMEDOUT'; +AxiosError.ERR_NETWORK = 'ERR_NETWORK'; +AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; +AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED'; +AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; +AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; +AxiosError.ERR_CANCELED = 'ERR_CANCELED'; +AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; +AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; + +export default AxiosError; diff --git a/bff/node_modules/axios/lib/core/AxiosHeaders.js b/bff/node_modules/axios/lib/core/AxiosHeaders.js new file mode 100644 index 0000000..38a26a4 --- /dev/null +++ b/bff/node_modules/axios/lib/core/AxiosHeaders.js @@ -0,0 +1,346 @@ +'use strict'; + +import utils from '../utils.js'; +import parseHeaders from '../helpers/parseHeaders.js'; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils.isArray(value) + ? value.map(normalizeValue) + : String(value).replace(/[\r\n]+$/, ''); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils.isString(value)) return; + + if (utils.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header + .trim() + .toLowerCase() + .replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach((methodName) => { + Object.defineProperty(obj, methodName + accessorName, { + value: function (arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true, + }); + }); +} + +class AxiosHeaders { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils.findKey(self, lHeader); + + if ( + !key || + self[key] === undefined || + _rewrite === true || + (_rewrite === undefined && self[key] !== false) + ) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite); + } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else if (utils.isObject(header) && utils.isIterable(header)) { + let obj = {}, + dest, + key; + for (const entry of header) { + if (!utils.isArray(entry)) { + throw TypeError('Object iterator must return a key-value pair'); + } + + obj[(key = entry[0])] = (dest = obj[key]) + ? utils.isArray(dest) + ? [...dest, entry[1]] + : [dest, entry[1]] + : entry[1]; + } + + setHeaders(obj, valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils.findKey(this, header); + + return !!( + key && + this[key] !== undefined && + (!matcher || matchHeaderValue(this, this[key], key, matcher)) + ); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils.forEach(this, (value, header) => { + const key = utils.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils.forEach(this, (value, header) => { + value != null && + value !== false && + (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()) + .map(([header, value]) => header + ': ' + value) + .join('\n'); + } + + getSetCookie() { + return this.get('set-cookie') || []; + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = + (this[$internals] = + this[$internals] = + { + accessors: {}, + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders.accessor([ + 'Content-Type', + 'Content-Length', + 'Accept', + 'Accept-Encoding', + 'User-Agent', + 'Authorization', +]); + +// reserved names hotfix +utils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + }, + }; +}); + +utils.freezeMethods(AxiosHeaders); + +export default AxiosHeaders; diff --git a/bff/node_modules/axios/lib/core/InterceptorManager.js b/bff/node_modules/axios/lib/core/InterceptorManager.js new file mode 100644 index 0000000..fe10f3d --- /dev/null +++ b/bff/node_modules/axios/lib/core/InterceptorManager.js @@ -0,0 +1,72 @@ +'use strict'; + +import utils from '../utils.js'; + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * @param {Object} options The options for the interceptor, synchronous and runWhen + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null, + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {void} + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +export default InterceptorManager; diff --git a/bff/node_modules/axios/lib/core/README.md b/bff/node_modules/axios/lib/core/README.md new file mode 100644 index 0000000..84559ce --- /dev/null +++ b/bff/node_modules/axios/lib/core/README.md @@ -0,0 +1,8 @@ +# axios // core + +The modules found in `core/` should be modules that are specific to the domain logic of axios. These modules would most likely not make sense to be consumed outside of the axios module, as their logic is too specific. Some examples of core modules are: + +- Dispatching requests + - Requests sent via `adapters/` (see lib/adapters/README.md) +- Managing interceptors +- Handling config diff --git a/bff/node_modules/axios/lib/core/buildFullPath.js b/bff/node_modules/axios/lib/core/buildFullPath.js new file mode 100644 index 0000000..3050bd6 --- /dev/null +++ b/bff/node_modules/axios/lib/core/buildFullPath.js @@ -0,0 +1,22 @@ +'use strict'; + +import isAbsoluteURL from '../helpers/isAbsoluteURL.js'; +import combineURLs from '../helpers/combineURLs.js'; + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +export default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) { + let isRelativeUrl = !isAbsoluteURL(requestedURL); + if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} diff --git a/bff/node_modules/axios/lib/core/dispatchRequest.js b/bff/node_modules/axios/lib/core/dispatchRequest.js new file mode 100644 index 0000000..2015b54 --- /dev/null +++ b/bff/node_modules/axios/lib/core/dispatchRequest.js @@ -0,0 +1,77 @@ +'use strict'; + +import transformData from './transformData.js'; +import isCancel from '../cancel/isCancel.js'; +import defaults from '../defaults/index.js'; +import CanceledError from '../cancel/CanceledError.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import adapters from '../adapters/adapters.js'; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +export default function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders.from(config.headers); + + // Transform request data + config.data = transformData.call(config, config.transformRequest); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config); + + return adapter(config).then( + function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call(config, config.transformResponse, response); + + response.headers = AxiosHeaders.from(response.headers); + + return response; + }, + function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders.from(reason.response.headers); + } + } + + return Promise.reject(reason); + } + ); +} diff --git a/bff/node_modules/axios/lib/core/mergeConfig.js b/bff/node_modules/axios/lib/core/mergeConfig.js new file mode 100644 index 0000000..38ac341 --- /dev/null +++ b/bff/node_modules/axios/lib/core/mergeConfig.js @@ -0,0 +1,107 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosHeaders from './AxiosHeaders.js'; + +const headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +export default function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, prop, caseless) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge.call({ caseless }, target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(a, b, prop, caseless) { + if (!utils.isUndefined(b)) { + return getMergedValue(a, b, prop, caseless); + } else if (!utils.isUndefined(a)) { + return getMergedValue(undefined, a, prop, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b, prop) => + mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), + }; + + utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { + if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; + const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} diff --git a/bff/node_modules/axios/lib/core/settle.js b/bff/node_modules/axios/lib/core/settle.js new file mode 100644 index 0000000..8629ad0 --- /dev/null +++ b/bff/node_modules/axios/lib/core/settle.js @@ -0,0 +1,31 @@ +'use strict'; + +import AxiosError from './AxiosError.js'; + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +export default function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject( + new AxiosError( + 'Request failed with status code ' + response.status, + [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][ + Math.floor(response.status / 100) - 4 + ], + response.config, + response.request, + response + ) + ); + } +} diff --git a/bff/node_modules/axios/lib/core/transformData.js b/bff/node_modules/axios/lib/core/transformData.js new file mode 100644 index 0000000..f22c474 --- /dev/null +++ b/bff/node_modules/axios/lib/core/transformData.js @@ -0,0 +1,28 @@ +'use strict'; + +import utils from '../utils.js'; +import defaults from '../defaults/index.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +export default function transformData(fns, response) { + const config = this || defaults; + const context = response || config; + const headers = AxiosHeaders.from(context.headers); + let data = context.data; + + utils.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} diff --git a/bff/node_modules/axios/lib/defaults/index.js b/bff/node_modules/axios/lib/defaults/index.js new file mode 100644 index 0000000..b83c2c0 --- /dev/null +++ b/bff/node_modules/axios/lib/defaults/index.js @@ -0,0 +1,172 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +import transitionalDefaults from './transitional.js'; +import toFormData from '../helpers/toFormData.js'; +import toURLEncodedForm from '../helpers/toURLEncodedForm.js'; +import platform from '../platform/index.js'; +import formDataToJSON from '../helpers/formDataToJSON.js'; + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + transitional: transitionalDefaults, + + adapter: ['xhr', 'http', 'fetch'], + + transformRequest: [ + function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils.isObject(data); + + if (isObjectPayload && utils.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils.isFormData(data); + + if (isFormData) { + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if ( + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) || + utils.isReadableStream(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ( + (isFileList = utils.isFileList(data)) || + contentType.indexOf('multipart/form-data') > -1 + ) { + const _FormData = this.env && this.env.FormData; + + return toFormData( + isFileList ? { 'files[]': data } : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }, + ], + + transformResponse: [ + function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (utils.isResponse(data) || utils.isReadableStream(data)) { + return data; + } + + if ( + data && + utils.isString(data) && + ((forcedJSONParsing && !this.responseType) || JSONRequested) + ) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data, this.parseReviver); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }, + ], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob, + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + Accept: 'application/json, text/plain, */*', + 'Content-Type': undefined, + }, + }, +}; + +utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +export default defaults; diff --git a/bff/node_modules/axios/lib/defaults/transitional.js b/bff/node_modules/axios/lib/defaults/transitional.js new file mode 100644 index 0000000..714b664 --- /dev/null +++ b/bff/node_modules/axios/lib/defaults/transitional.js @@ -0,0 +1,8 @@ +'use strict'; + +export default { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false, + legacyInterceptorReqResOrdering: true, +}; diff --git a/bff/node_modules/axios/lib/env/README.md b/bff/node_modules/axios/lib/env/README.md new file mode 100644 index 0000000..b41baff --- /dev/null +++ b/bff/node_modules/axios/lib/env/README.md @@ -0,0 +1,3 @@ +# axios // env + +The `data.js` file is updated automatically when the package version is upgrading. Please do not edit it manually. diff --git a/bff/node_modules/axios/lib/env/classes/FormData.js b/bff/node_modules/axios/lib/env/classes/FormData.js new file mode 100644 index 0000000..862adb9 --- /dev/null +++ b/bff/node_modules/axios/lib/env/classes/FormData.js @@ -0,0 +1,2 @@ +import _FormData from 'form-data'; +export default typeof FormData !== 'undefined' ? FormData : _FormData; diff --git a/bff/node_modules/axios/lib/env/data.js b/bff/node_modules/axios/lib/env/data.js new file mode 100644 index 0000000..4dde41d --- /dev/null +++ b/bff/node_modules/axios/lib/env/data.js @@ -0,0 +1 @@ +export const VERSION = "1.14.0"; \ No newline at end of file diff --git a/bff/node_modules/axios/lib/helpers/AxiosTransformStream.js b/bff/node_modules/axios/lib/helpers/AxiosTransformStream.js new file mode 100644 index 0000000..96e8acb --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/AxiosTransformStream.js @@ -0,0 +1,156 @@ +'use strict'; + +import stream from 'stream'; +import utils from '../utils.js'; + +const kInternals = Symbol('internals'); + +class AxiosTransformStream extends stream.Transform { + constructor(options) { + options = utils.toFlatObject( + options, + { + maxRate: 0, + chunkSize: 64 * 1024, + minChunkSize: 100, + timeWindow: 500, + ticksRate: 2, + samplesCount: 15, + }, + null, + (prop, source) => { + return !utils.isUndefined(source[prop]); + } + ); + + super({ + readableHighWaterMark: options.chunkSize, + }); + + const internals = (this[kInternals] = { + timeWindow: options.timeWindow, + chunkSize: options.chunkSize, + maxRate: options.maxRate, + minChunkSize: options.minChunkSize, + bytesSeen: 0, + isCaptured: false, + notifiedBytesLoaded: 0, + ts: Date.now(), + bytes: 0, + onReadCallback: null, + }); + + this.on('newListener', (event) => { + if (event === 'progress') { + if (!internals.isCaptured) { + internals.isCaptured = true; + } + } + }); + } + + _read(size) { + const internals = this[kInternals]; + + if (internals.onReadCallback) { + internals.onReadCallback(); + } + + return super._read(size); + } + + _transform(chunk, encoding, callback) { + const internals = this[kInternals]; + const maxRate = internals.maxRate; + + const readableHighWaterMark = this.readableHighWaterMark; + + const timeWindow = internals.timeWindow; + + const divider = 1000 / timeWindow; + const bytesThreshold = maxRate / divider; + const minChunkSize = + internals.minChunkSize !== false + ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) + : 0; + + const pushChunk = (_chunk, _callback) => { + const bytes = Buffer.byteLength(_chunk); + internals.bytesSeen += bytes; + internals.bytes += bytes; + + internals.isCaptured && this.emit('progress', internals.bytesSeen); + + if (this.push(_chunk)) { + process.nextTick(_callback); + } else { + internals.onReadCallback = () => { + internals.onReadCallback = null; + process.nextTick(_callback); + }; + } + }; + + const transformChunk = (_chunk, _callback) => { + const chunkSize = Buffer.byteLength(_chunk); + let chunkRemainder = null; + let maxChunkSize = readableHighWaterMark; + let bytesLeft; + let passed = 0; + + if (maxRate) { + const now = Date.now(); + + if (!internals.ts || (passed = now - internals.ts) >= timeWindow) { + internals.ts = now; + bytesLeft = bytesThreshold - internals.bytes; + internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; + passed = 0; + } + + bytesLeft = bytesThreshold - internals.bytes; + } + + if (maxRate) { + if (bytesLeft <= 0) { + // next time window + return setTimeout(() => { + _callback(null, _chunk); + }, timeWindow - passed); + } + + if (bytesLeft < maxChunkSize) { + maxChunkSize = bytesLeft; + } + } + + if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) { + chunkRemainder = _chunk.subarray(maxChunkSize); + _chunk = _chunk.subarray(0, maxChunkSize); + } + + pushChunk( + _chunk, + chunkRemainder + ? () => { + process.nextTick(_callback, null, chunkRemainder); + } + : _callback + ); + }; + + transformChunk(chunk, function transformNextChunk(err, _chunk) { + if (err) { + return callback(err); + } + + if (_chunk) { + transformChunk(_chunk, transformNextChunk); + } else { + callback(null); + } + }); + } +} + +export default AxiosTransformStream; diff --git a/bff/node_modules/axios/lib/helpers/AxiosURLSearchParams.js b/bff/node_modules/axios/lib/helpers/AxiosURLSearchParams.js new file mode 100644 index 0000000..da63392 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/AxiosURLSearchParams.js @@ -0,0 +1,62 @@ +'use strict'; + +import toFormData from './toFormData.js'; + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00', + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object} params - The parameters to be converted to a FormData object. + * @param {Object} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder + ? function (value) { + return encoder.call(this, value, encode); + } + : encode; + + return this._pairs + .map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '') + .join('&'); +}; + +export default AxiosURLSearchParams; diff --git a/bff/node_modules/axios/lib/helpers/HttpStatusCode.js b/bff/node_modules/axios/lib/helpers/HttpStatusCode.js new file mode 100644 index 0000000..b68d08e --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/HttpStatusCode.js @@ -0,0 +1,77 @@ +const HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, + WebServerIsDown: 521, + ConnectionTimedOut: 522, + OriginIsUnreachable: 523, + TimeoutOccurred: 524, + SslHandshakeFailed: 525, + InvalidSslCertificate: 526, +}; + +Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; +}); + +export default HttpStatusCode; diff --git a/bff/node_modules/axios/lib/helpers/README.md b/bff/node_modules/axios/lib/helpers/README.md new file mode 100644 index 0000000..4ae3419 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/README.md @@ -0,0 +1,7 @@ +# axios // helpers + +The modules found in `helpers/` should be generic modules that are _not_ specific to the domain logic of axios. These modules could theoretically be published to npm on their own and consumed by other modules or apps. Some examples of generic modules are things like: + +- Browser polyfills +- Managing cookies +- Parsing HTTP headers diff --git a/bff/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js b/bff/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js new file mode 100644 index 0000000..c588ded --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js @@ -0,0 +1,29 @@ +'use strict'; + +import stream from 'stream'; + +class ZlibHeaderTransformStream extends stream.Transform { + __transform(chunk, encoding, callback) { + this.push(chunk); + callback(); + } + + _transform(chunk, encoding, callback) { + if (chunk.length !== 0) { + this._transform = this.__transform; + + // Add Default Compression headers if no zlib headers are present + if (chunk[0] !== 120) { + // Hex: 78 + const header = Buffer.alloc(2); + header[0] = 120; // Hex: 78 + header[1] = 156; // Hex: 9C + this.push(header, encoding); + } + } + + this.__transform(chunk, encoding, callback); + } +} + +export default ZlibHeaderTransformStream; diff --git a/bff/node_modules/axios/lib/helpers/bind.js b/bff/node_modules/axios/lib/helpers/bind.js new file mode 100644 index 0000000..938da5c --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/bind.js @@ -0,0 +1,14 @@ +'use strict'; + +/** + * Create a bound version of a function with a specified `this` context + * + * @param {Function} fn - The function to bind + * @param {*} thisArg - The value to be passed as the `this` parameter + * @returns {Function} A new function that will call the original function with the specified `this` context + */ +export default function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} diff --git a/bff/node_modules/axios/lib/helpers/buildURL.js b/bff/node_modules/axios/lib/helpers/buildURL.js new file mode 100644 index 0000000..d6745da --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/buildURL.js @@ -0,0 +1,66 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js'; + +/** + * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with + * their plain counterparts (`:`, `$`, `,`, `+`). + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val) + .replace(/%3A/gi, ':') + .replace(/%24/g, '$') + .replace(/%2C/gi, ',') + .replace(/%20/g, '+'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?(object|Function)} options + * + * @returns {string} The formatted url + */ +export default function buildURL(url, params, options) { + if (!params) { + return url; + } + + const _encode = (options && options.encode) || encode; + + const _options = utils.isFunction(options) + ? { + serialize: options, + } + : options; + + const serializeFn = _options && _options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, _options); + } else { + serializedParams = utils.isURLSearchParams(params) + ? params.toString() + : new AxiosURLSearchParams(params, _options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf('#'); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} diff --git a/bff/node_modules/axios/lib/helpers/callbackify.js b/bff/node_modules/axios/lib/helpers/callbackify.js new file mode 100644 index 0000000..e8cea68 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/callbackify.js @@ -0,0 +1,18 @@ +import utils from '../utils.js'; + +const callbackify = (fn, reducer) => { + return utils.isAsyncFn(fn) + ? function (...args) { + const cb = args.pop(); + fn.apply(this, args).then((value) => { + try { + reducer ? cb(null, ...reducer(value)) : cb(null, value); + } catch (err) { + cb(err); + } + }, cb); + } + : fn; +}; + +export default callbackify; diff --git a/bff/node_modules/axios/lib/helpers/combineURLs.js b/bff/node_modules/axios/lib/helpers/combineURLs.js new file mode 100644 index 0000000..9f04f02 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/combineURLs.js @@ -0,0 +1,15 @@ +'use strict'; + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +export default function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} diff --git a/bff/node_modules/axios/lib/helpers/composeSignals.js b/bff/node_modules/axios/lib/helpers/composeSignals.js new file mode 100644 index 0000000..04e3012 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/composeSignals.js @@ -0,0 +1,56 @@ +import CanceledError from '../cancel/CanceledError.js'; +import AxiosError from '../core/AxiosError.js'; +import utils from '../utils.js'; + +const composeSignals = (signals, timeout) => { + const { length } = (signals = signals ? signals.filter(Boolean) : []); + + if (timeout || length) { + let controller = new AbortController(); + + let aborted; + + const onabort = function (reason) { + if (!aborted) { + aborted = true; + unsubscribe(); + const err = reason instanceof Error ? reason : this.reason; + controller.abort( + err instanceof AxiosError + ? err + : new CanceledError(err instanceof Error ? err.message : err) + ); + } + }; + + let timer = + timeout && + setTimeout(() => { + timer = null; + onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT)); + }, timeout); + + const unsubscribe = () => { + if (signals) { + timer && clearTimeout(timer); + timer = null; + signals.forEach((signal) => { + signal.unsubscribe + ? signal.unsubscribe(onabort) + : signal.removeEventListener('abort', onabort); + }); + signals = null; + } + }; + + signals.forEach((signal) => signal.addEventListener('abort', onabort)); + + const { signal } = controller; + + signal.unsubscribe = () => utils.asap(unsubscribe); + + return signal; + } +}; + +export default composeSignals; diff --git a/bff/node_modules/axios/lib/helpers/cookies.js b/bff/node_modules/axios/lib/helpers/cookies.js new file mode 100644 index 0000000..1553fb2 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/cookies.js @@ -0,0 +1,48 @@ +import utils from '../utils.js'; +import platform from '../platform/index.js'; + +export default platform.hasStandardBrowserEnv + ? // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure, sameSite) { + if (typeof document === 'undefined') return; + + const cookie = [`${name}=${encodeURIComponent(value)}`]; + + if (utils.isNumber(expires)) { + cookie.push(`expires=${new Date(expires).toUTCString()}`); + } + if (utils.isString(path)) { + cookie.push(`path=${path}`); + } + if (utils.isString(domain)) { + cookie.push(`domain=${domain}`); + } + if (secure === true) { + cookie.push('secure'); + } + if (utils.isString(sameSite)) { + cookie.push(`SameSite=${sameSite}`); + } + + document.cookie = cookie.join('; '); + }, + + read(name) { + if (typeof document === 'undefined') return null; + const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); + return match ? decodeURIComponent(match[1]) : null; + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000, '/'); + }, + } + : // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {}, + }; diff --git a/bff/node_modules/axios/lib/helpers/deprecatedMethod.js b/bff/node_modules/axios/lib/helpers/deprecatedMethod.js new file mode 100644 index 0000000..ec112de --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/deprecatedMethod.js @@ -0,0 +1,31 @@ +'use strict'; + +/*eslint no-console:0*/ + +/** + * Supply a warning to the developer that a method they are using + * has been deprecated. + * + * @param {string} method The name of the deprecated method + * @param {string} [instead] The alternate method to use if applicable + * @param {string} [docs] The documentation URL to get further details + * + * @returns {void} + */ +export default function deprecatedMethod(method, instead, docs) { + try { + console.warn( + 'DEPRECATED method `' + + method + + '`.' + + (instead ? ' Use `' + instead + '` instead.' : '') + + ' This method will be removed in a future release.' + ); + + if (docs) { + console.warn('For more information about usage see ' + docs); + } + } catch (e) { + /* Ignore */ + } +} diff --git a/bff/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js b/bff/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js new file mode 100644 index 0000000..f29a817 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js @@ -0,0 +1,73 @@ +/** + * Estimate decoded byte length of a data:// URL *without* allocating large buffers. + * - For base64: compute exact decoded size using length and padding; + * handle %XX at the character-count level (no string allocation). + * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound. + * + * @param {string} url + * @returns {number} + */ +export default function estimateDataURLDecodedBytes(url) { + if (!url || typeof url !== 'string') return 0; + if (!url.startsWith('data:')) return 0; + + const comma = url.indexOf(','); + if (comma < 0) return 0; + + const meta = url.slice(5, comma); + const body = url.slice(comma + 1); + const isBase64 = /;base64/i.test(meta); + + if (isBase64) { + let effectiveLen = body.length; + const len = body.length; // cache length + + for (let i = 0; i < len; i++) { + if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) { + const a = body.charCodeAt(i + 1); + const b = body.charCodeAt(i + 2); + const isHex = + ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) && + ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102)); + + if (isHex) { + effectiveLen -= 2; + i += 2; + } + } + } + + let pad = 0; + let idx = len - 1; + + const tailIsPct3D = (j) => + j >= 2 && + body.charCodeAt(j - 2) === 37 && // '%' + body.charCodeAt(j - 1) === 51 && // '3' + (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd' + + if (idx >= 0) { + if (body.charCodeAt(idx) === 61 /* '=' */) { + pad++; + idx--; + } else if (tailIsPct3D(idx)) { + pad++; + idx -= 3; + } + } + + if (pad === 1 && idx >= 0) { + if (body.charCodeAt(idx) === 61 /* '=' */) { + pad++; + } else if (tailIsPct3D(idx)) { + pad++; + } + } + + const groups = Math.floor(effectiveLen / 4); + const bytes = groups * 3 - (pad || 0); + return bytes > 0 ? bytes : 0; + } + + return Buffer.byteLength(body, 'utf8'); +} diff --git a/bff/node_modules/axios/lib/helpers/formDataToJSON.js b/bff/node_modules/axios/lib/helpers/formDataToJSON.js new file mode 100644 index 0000000..e8db891 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/formDataToJSON.js @@ -0,0 +1,95 @@ +'use strict'; + +import utils from '../utils.js'; + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + + if (name === '__proto__') return true; + + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils.isArray(target) ? target.length : name; + + if (isLast) { + if (utils.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils.isFormData(formData) && utils.isFunction(formData.entries)) { + const obj = {}; + + utils.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +export default formDataToJSON; diff --git a/bff/node_modules/axios/lib/helpers/formDataToStream.js b/bff/node_modules/axios/lib/helpers/formDataToStream.js new file mode 100644 index 0000000..f191e8c --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/formDataToStream.js @@ -0,0 +1,118 @@ +import util from 'util'; +import { Readable } from 'stream'; +import utils from '../utils.js'; +import readBlob from './readBlob.js'; +import platform from '../platform/index.js'; + +const BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_'; + +const textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util.TextEncoder(); + +const CRLF = '\r\n'; +const CRLF_BYTES = textEncoder.encode(CRLF); +const CRLF_BYTES_COUNT = 2; + +class FormDataPart { + constructor(name, value) { + const { escapeName } = this.constructor; + const isStringValue = utils.isString(value); + + let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ + !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' + }${CRLF}`; + + if (isStringValue) { + value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); + } else { + headers += `Content-Type: ${value.type || 'application/octet-stream'}${CRLF}`; + } + + this.headers = textEncoder.encode(headers + CRLF); + + this.contentLength = isStringValue ? value.byteLength : value.size; + + this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; + + this.name = name; + this.value = value; + } + + async *encode() { + yield this.headers; + + const { value } = this; + + if (utils.isTypedArray(value)) { + yield value; + } else { + yield* readBlob(value); + } + + yield CRLF_BYTES; + } + + static escapeName(name) { + return String(name).replace( + /[\r\n"]/g, + (match) => + ({ + '\r': '%0D', + '\n': '%0A', + '"': '%22', + })[match] + ); + } +} + +const formDataToStream = (form, headersHandler, options) => { + const { + tag = 'form-data-boundary', + size = 25, + boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET), + } = options || {}; + + if (!utils.isFormData(form)) { + throw TypeError('FormData instance required'); + } + + if (boundary.length < 1 || boundary.length > 70) { + throw Error('boundary must be 10-70 characters long'); + } + + const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); + const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF); + let contentLength = footerBytes.byteLength; + + const parts = Array.from(form.entries()).map(([name, value]) => { + const part = new FormDataPart(name, value); + contentLength += part.size; + return part; + }); + + contentLength += boundaryBytes.byteLength * parts.length; + + contentLength = utils.toFiniteNumber(contentLength); + + const computedHeaders = { + 'Content-Type': `multipart/form-data; boundary=${boundary}`, + }; + + if (Number.isFinite(contentLength)) { + computedHeaders['Content-Length'] = contentLength; + } + + headersHandler && headersHandler(computedHeaders); + + return Readable.from( + (async function* () { + for (const part of parts) { + yield boundaryBytes; + yield* part.encode(); + } + + yield footerBytes; + })() + ); +}; + +export default formDataToStream; diff --git a/bff/node_modules/axios/lib/helpers/fromDataURI.js b/bff/node_modules/axios/lib/helpers/fromDataURI.js new file mode 100644 index 0000000..989a417 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/fromDataURI.js @@ -0,0 +1,53 @@ +'use strict'; + +import AxiosError from '../core/AxiosError.js'; +import parseProtocol from './parseProtocol.js'; +import platform from '../platform/index.js'; + +const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; + +/** + * Parse data uri to a Buffer or Blob + * + * @param {String} uri + * @param {?Boolean} asBlob + * @param {?Object} options + * @param {?Function} options.Blob + * + * @returns {Buffer|Blob} + */ +export default function fromDataURI(uri, asBlob, options) { + const _Blob = (options && options.Blob) || platform.classes.Blob; + const protocol = parseProtocol(uri); + + if (asBlob === undefined && _Blob) { + asBlob = true; + } + + if (protocol === 'data') { + uri = protocol.length ? uri.slice(protocol.length + 1) : uri; + + const match = DATA_URL_PATTERN.exec(uri); + + if (!match) { + throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); + } + + const mime = match[1]; + const isBase64 = match[2]; + const body = match[3]; + const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); + + if (asBlob) { + if (!_Blob) { + throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); + } + + return new _Blob([buffer], { type: mime }); + } + + return buffer; + } + + throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); +} diff --git a/bff/node_modules/axios/lib/helpers/isAbsoluteURL.js b/bff/node_modules/axios/lib/helpers/isAbsoluteURL.js new file mode 100644 index 0000000..c461900 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/isAbsoluteURL.js @@ -0,0 +1,19 @@ +'use strict'; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +export default function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + if (typeof url !== 'string') { + return false; + } + + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} diff --git a/bff/node_modules/axios/lib/helpers/isAxiosError.js b/bff/node_modules/axios/lib/helpers/isAxiosError.js new file mode 100644 index 0000000..ffba610 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/isAxiosError.js @@ -0,0 +1,14 @@ +'use strict'; + +import utils from '../utils.js'; + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +export default function isAxiosError(payload) { + return utils.isObject(payload) && payload.isAxiosError === true; +} diff --git a/bff/node_modules/axios/lib/helpers/isURLSameOrigin.js b/bff/node_modules/axios/lib/helpers/isURLSameOrigin.js new file mode 100644 index 0000000..66af274 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/isURLSameOrigin.js @@ -0,0 +1,16 @@ +import platform from '../platform/index.js'; + +export default platform.hasStandardBrowserEnv + ? ((origin, isMSIE) => (url) => { + url = new URL(url, platform.origin); + + return ( + origin.protocol === url.protocol && + origin.host === url.host && + (isMSIE || origin.port === url.port) + ); + })( + new URL(platform.origin), + platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) + ) + : () => true; diff --git a/bff/node_modules/axios/lib/helpers/null.js b/bff/node_modules/axios/lib/helpers/null.js new file mode 100644 index 0000000..b9f82c4 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/null.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line strict +export default null; diff --git a/bff/node_modules/axios/lib/helpers/parseHeaders.js b/bff/node_modules/axios/lib/helpers/parseHeaders.js new file mode 100644 index 0000000..fb0eba4 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/parseHeaders.js @@ -0,0 +1,69 @@ +'use strict'; + +import utils from '../utils.js'; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils.toObjectSet([ + 'age', + 'authorization', + 'content-length', + 'content-type', + 'etag', + 'expires', + 'from', + 'host', + 'if-modified-since', + 'if-unmodified-since', + 'last-modified', + 'location', + 'max-forwards', + 'proxy-authorization', + 'referer', + 'retry-after', + 'user-agent', +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +export default (rawHeaders) => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && + rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; diff --git a/bff/node_modules/axios/lib/helpers/parseProtocol.js b/bff/node_modules/axios/lib/helpers/parseProtocol.js new file mode 100644 index 0000000..1ad6658 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/parseProtocol.js @@ -0,0 +1,6 @@ +'use strict'; + +export default function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return (match && match[1]) || ''; +} diff --git a/bff/node_modules/axios/lib/helpers/progressEventReducer.js b/bff/node_modules/axios/lib/helpers/progressEventReducer.js new file mode 100644 index 0000000..d09d753 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/progressEventReducer.js @@ -0,0 +1,51 @@ +import speedometer from './speedometer.js'; +import throttle from './throttle.js'; +import utils from '../utils.js'; + +export const progressEventReducer = (listener, isDownloadStream, freq = 3) => { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return throttle((e) => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? loaded / total : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e, + lengthComputable: total != null, + [isDownloadStream ? 'download' : 'upload']: true, + }; + + listener(data); + }, freq); +}; + +export const progressEventDecorator = (total, throttled) => { + const lengthComputable = total != null; + + return [ + (loaded) => + throttled[0]({ + lengthComputable, + total, + loaded, + }), + throttled[1], + ]; +}; + +export const asyncDecorator = + (fn) => + (...args) => + utils.asap(() => fn(...args)); diff --git a/bff/node_modules/axios/lib/helpers/readBlob.js b/bff/node_modules/axios/lib/helpers/readBlob.js new file mode 100644 index 0000000..87d0ea8 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/readBlob.js @@ -0,0 +1,15 @@ +const { asyncIterator } = Symbol; + +const readBlob = async function* (blob) { + if (blob.stream) { + yield* blob.stream(); + } else if (blob.arrayBuffer) { + yield await blob.arrayBuffer(); + } else if (blob[asyncIterator]) { + yield* blob[asyncIterator](); + } else { + yield blob; + } +}; + +export default readBlob; diff --git a/bff/node_modules/axios/lib/helpers/resolveConfig.js b/bff/node_modules/axios/lib/helpers/resolveConfig.js new file mode 100644 index 0000000..bf22d59 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/resolveConfig.js @@ -0,0 +1,70 @@ +import platform from '../platform/index.js'; +import utils from '../utils.js'; +import isURLSameOrigin from './isURLSameOrigin.js'; +import cookies from './cookies.js'; +import buildFullPath from '../core/buildFullPath.js'; +import mergeConfig from '../core/mergeConfig.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import buildURL from './buildURL.js'; + +export default (config) => { + const newConfig = mergeConfig({}, config); + + let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig; + + newConfig.headers = headers = AxiosHeaders.from(headers); + + newConfig.url = buildURL( + buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), + config.params, + config.paramsSerializer + ); + + // HTTP basic authentication + if (auth) { + headers.set( + 'Authorization', + 'Basic ' + + btoa( + (auth.username || '') + + ':' + + (auth.password ? unescape(encodeURIComponent(auth.password)) : '') + ) + ); + } + + if (utils.isFormData(data)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + headers.setContentType(undefined); // browser handles it + } else if (utils.isFunction(data.getHeaders)) { + // Node.js FormData (like form-data package) + const formHeaders = data.getHeaders(); + // Only set safe headers to avoid overwriting security headers + const allowedHeaders = ['content-type', 'content-length']; + Object.entries(formHeaders).forEach(([key, val]) => { + if (allowedHeaders.includes(key.toLowerCase())) { + headers.set(key, val); + } + }); + } + } + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + + if (platform.hasStandardBrowserEnv) { + withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) { + // Add xsrf header + const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); + + if (xsrfValue) { + headers.set(xsrfHeaderName, xsrfValue); + } + } + } + + return newConfig; +}; diff --git a/bff/node_modules/axios/lib/helpers/speedometer.js b/bff/node_modules/axios/lib/helpers/speedometer.js new file mode 100644 index 0000000..566a1ff --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/speedometer.js @@ -0,0 +1,55 @@ +'use strict'; + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round((bytesCount * 1000) / passed) : undefined; + }; +} + +export default speedometer; diff --git a/bff/node_modules/axios/lib/helpers/spread.js b/bff/node_modules/axios/lib/helpers/spread.js new file mode 100644 index 0000000..2e72fc8 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/spread.js @@ -0,0 +1,28 @@ +'use strict'; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * const args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +export default function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} diff --git a/bff/node_modules/axios/lib/helpers/throttle.js b/bff/node_modules/axios/lib/helpers/throttle.js new file mode 100644 index 0000000..fbef472 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/throttle.js @@ -0,0 +1,44 @@ +/** + * Throttle decorator + * @param {Function} fn + * @param {Number} freq + * @return {Function} + */ +function throttle(fn, freq) { + let timestamp = 0; + let threshold = 1000 / freq; + let lastArgs; + let timer; + + const invoke = (args, now = Date.now()) => { + timestamp = now; + lastArgs = null; + if (timer) { + clearTimeout(timer); + timer = null; + } + fn(...args); + }; + + const throttled = (...args) => { + const now = Date.now(); + const passed = now - timestamp; + if (passed >= threshold) { + invoke(args, now); + } else { + lastArgs = args; + if (!timer) { + timer = setTimeout(() => { + timer = null; + invoke(lastArgs); + }, threshold - passed); + } + } + }; + + const flush = () => lastArgs && invoke(lastArgs); + + return [throttled, flush]; +} + +export default throttle; diff --git a/bff/node_modules/axios/lib/helpers/toFormData.js b/bff/node_modules/axios/lib/helpers/toFormData.js new file mode 100644 index 0000000..014c551 --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/toFormData.js @@ -0,0 +1,241 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored +import PlatformFormData from '../platform/node/classes/FormData.js'; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils.isPlainObject(thing) || utils.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path + .concat(key) + .map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }) + .join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils.toFlatObject(utils, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object} options + * + * @returns + */ +function toFormData(obj, formData, options) { + if (!utils.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (PlatformFormData || FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils.toFlatObject( + options, + { + metaTokens: true, + dots: false, + indexes: false, + }, + false, + function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils.isUndefined(source[option]); + } + ); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob); + const useBlob = _Blob && utils.isSpecCompliantForm(formData); + + if (!utils.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils.isDate(value)) { + return value.toISOString(); + } + + if (utils.isBoolean(value)) { + return value.toString(); + } + + if (!useBlob && utils.isBlob(value)) { + throw new AxiosError('Blob is not supported. Use a Buffer instead.'); + } + + if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) { + formData.append(renderKey(path, key, dots), convertValue(value)); + return false; + } + + if (value && !path && typeof value === 'object') { + if (utils.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils.isArray(value) && isFlatArray(value)) || + ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))) + ) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils.isUndefined(el) || el === null) && + formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true + ? renderKey([key], index, dots) + : indexes === null + ? key + : key + '[]', + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable, + }); + + function build(value, path) { + if (utils.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils.forEach(value, function each(el, key) { + const result = + !(utils.isUndefined(el) || el === null) && + visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +export default toFormData; diff --git a/bff/node_modules/axios/lib/helpers/toURLEncodedForm.js b/bff/node_modules/axios/lib/helpers/toURLEncodedForm.js new file mode 100644 index 0000000..749e13a --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/toURLEncodedForm.js @@ -0,0 +1,19 @@ +'use strict'; + +import utils from '../utils.js'; +import toFormData from './toFormData.js'; +import platform from '../platform/index.js'; + +export default function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), { + visitor: function (value, key, path, helpers) { + if (platform.isNode && utils.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + }, + ...options, + }); +} diff --git a/bff/node_modules/axios/lib/helpers/trackStream.js b/bff/node_modules/axios/lib/helpers/trackStream.js new file mode 100644 index 0000000..c75eace --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/trackStream.js @@ -0,0 +1,89 @@ +export const streamChunk = function* (chunk, chunkSize) { + let len = chunk.byteLength; + + if (!chunkSize || len < chunkSize) { + yield chunk; + return; + } + + let pos = 0; + let end; + + while (pos < len) { + end = pos + chunkSize; + yield chunk.slice(pos, end); + pos = end; + } +}; + +export const readBytes = async function* (iterable, chunkSize) { + for await (const chunk of readStream(iterable)) { + yield* streamChunk(chunk, chunkSize); + } +}; + +const readStream = async function* (stream) { + if (stream[Symbol.asyncIterator]) { + yield* stream; + return; + } + + const reader = stream.getReader(); + try { + for (;;) { + const { done, value } = await reader.read(); + if (done) { + break; + } + yield value; + } + } finally { + await reader.cancel(); + } +}; + +export const trackStream = (stream, chunkSize, onProgress, onFinish) => { + const iterator = readBytes(stream, chunkSize); + + let bytes = 0; + let done; + let _onFinish = (e) => { + if (!done) { + done = true; + onFinish && onFinish(e); + } + }; + + return new ReadableStream( + { + async pull(controller) { + try { + const { done, value } = await iterator.next(); + + if (done) { + _onFinish(); + controller.close(); + return; + } + + let len = value.byteLength; + if (onProgress) { + let loadedBytes = (bytes += len); + onProgress(loadedBytes); + } + controller.enqueue(new Uint8Array(value)); + } catch (err) { + _onFinish(err); + throw err; + } + }, + cancel(reason) { + _onFinish(reason); + return iterator.return(); + }, + }, + { + highWaterMark: 2, + } + ); +}; diff --git a/bff/node_modules/axios/lib/helpers/validator.js b/bff/node_modules/axios/lib/helpers/validator.js new file mode 100644 index 0000000..22798aa --- /dev/null +++ b/bff/node_modules/axios/lib/helpers/validator.js @@ -0,0 +1,110 @@ +'use strict'; + +import { VERSION } from '../env/data.js'; +import AxiosError from '../core/AxiosError.js'; + +const validators = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return ( + '[Axios v' + + VERSION + + "] Transitional option '" + + opt + + "'" + + desc + + (message ? '. ' + message : '') + ); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +validators.spelling = function spelling(correctSpelling) { + return (value, opt) => { + // eslint-disable-next-line no-console + console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); + return true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError( + 'option ' + opt + ' must be ' + result, + AxiosError.ERR_BAD_OPTION_VALUE + ); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + } + } +} + +export default { + assertOptions, + validators, +}; diff --git a/bff/node_modules/axios/lib/platform/browser/classes/Blob.js b/bff/node_modules/axios/lib/platform/browser/classes/Blob.js new file mode 100644 index 0000000..9ec4af8 --- /dev/null +++ b/bff/node_modules/axios/lib/platform/browser/classes/Blob.js @@ -0,0 +1,3 @@ +'use strict'; + +export default typeof Blob !== 'undefined' ? Blob : null; diff --git a/bff/node_modules/axios/lib/platform/browser/classes/FormData.js b/bff/node_modules/axios/lib/platform/browser/classes/FormData.js new file mode 100644 index 0000000..f36d31b --- /dev/null +++ b/bff/node_modules/axios/lib/platform/browser/classes/FormData.js @@ -0,0 +1,3 @@ +'use strict'; + +export default typeof FormData !== 'undefined' ? FormData : null; diff --git a/bff/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js b/bff/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js new file mode 100644 index 0000000..b7dae95 --- /dev/null +++ b/bff/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js @@ -0,0 +1,4 @@ +'use strict'; + +import AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js'; +export default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; diff --git a/bff/node_modules/axios/lib/platform/browser/index.js b/bff/node_modules/axios/lib/platform/browser/index.js new file mode 100644 index 0000000..8e5f99c --- /dev/null +++ b/bff/node_modules/axios/lib/platform/browser/index.js @@ -0,0 +1,13 @@ +import URLSearchParams from './classes/URLSearchParams.js'; +import FormData from './classes/FormData.js'; +import Blob from './classes/Blob.js'; + +export default { + isBrowser: true, + classes: { + URLSearchParams, + FormData, + Blob, + }, + protocols: ['http', 'https', 'file', 'blob', 'url', 'data'], +}; diff --git a/bff/node_modules/axios/lib/platform/common/utils.js b/bff/node_modules/axios/lib/platform/common/utils.js new file mode 100644 index 0000000..e4dfe46 --- /dev/null +++ b/bff/node_modules/axios/lib/platform/common/utils.js @@ -0,0 +1,52 @@ +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +const _navigator = (typeof navigator === 'object' && navigator) || undefined; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = + hasBrowserEnv && + (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +const origin = (hasBrowserEnv && window.location.href) || 'http://localhost'; + +export { + hasBrowserEnv, + hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv, + _navigator as navigator, + origin, +}; diff --git a/bff/node_modules/axios/lib/platform/index.js b/bff/node_modules/axios/lib/platform/index.js new file mode 100644 index 0000000..e1094ab --- /dev/null +++ b/bff/node_modules/axios/lib/platform/index.js @@ -0,0 +1,7 @@ +import platform from './node/index.js'; +import * as utils from './common/utils.js'; + +export default { + ...utils, + ...platform, +}; diff --git a/bff/node_modules/axios/lib/platform/node/classes/FormData.js b/bff/node_modules/axios/lib/platform/node/classes/FormData.js new file mode 100644 index 0000000..b07f947 --- /dev/null +++ b/bff/node_modules/axios/lib/platform/node/classes/FormData.js @@ -0,0 +1,3 @@ +import FormData from 'form-data'; + +export default FormData; diff --git a/bff/node_modules/axios/lib/platform/node/classes/URLSearchParams.js b/bff/node_modules/axios/lib/platform/node/classes/URLSearchParams.js new file mode 100644 index 0000000..fba5842 --- /dev/null +++ b/bff/node_modules/axios/lib/platform/node/classes/URLSearchParams.js @@ -0,0 +1,4 @@ +'use strict'; + +import url from 'url'; +export default url.URLSearchParams; diff --git a/bff/node_modules/axios/lib/platform/node/index.js b/bff/node_modules/axios/lib/platform/node/index.js new file mode 100644 index 0000000..9979a71 --- /dev/null +++ b/bff/node_modules/axios/lib/platform/node/index.js @@ -0,0 +1,37 @@ +import crypto from 'crypto'; +import URLSearchParams from './classes/URLSearchParams.js'; +import FormData from './classes/FormData.js'; + +const ALPHA = 'abcdefghijklmnopqrstuvwxyz'; + +const DIGIT = '0123456789'; + +const ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT, +}; + +const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ''; + const { length } = alphabet; + const randomValues = new Uint32Array(size); + crypto.randomFillSync(randomValues); + for (let i = 0; i < size; i++) { + str += alphabet[randomValues[i] % length]; + } + + return str; +}; + +export default { + isNode: true, + classes: { + URLSearchParams, + FormData, + Blob: (typeof Blob !== 'undefined' && Blob) || null, + }, + ALPHABET, + generateString, + protocols: ['http', 'https', 'file', 'data'], +}; diff --git a/bff/node_modules/axios/lib/utils.js b/bff/node_modules/axios/lib/utils.js new file mode 100644 index 0000000..73c4f0d --- /dev/null +++ b/bff/node_modules/axios/lib/utils.js @@ -0,0 +1,919 @@ +'use strict'; + +import bind from './helpers/bind.js'; + +// utils is a library of generic helper functions non-specific to axios + +const { toString } = Object.prototype; +const { getPrototypeOf } = Object; +const { iterator, toStringTag } = Symbol; + +const kindOf = ((cache) => (thing) => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type; +}; + +const typeOfTest = (type) => (thing) => typeof thing === type; + +/** + * Determine if a value is a non-null object + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const { isArray } = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return ( + val !== null && + !isUndefined(val) && + val.constructor !== null && + !isUndefined(val.constructor) && + isFunction(val.constructor.isBuffer) && + val.constructor.isBuffer(val) + ); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { + result = ArrayBuffer.isView(val); + } else { + result = val && val.buffer && isArrayBuffer(val.buffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = (thing) => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return ( + (prototype === null || + prototype === Object.prototype || + Object.getPrototypeOf(prototype) === null) && + !(toStringTag in val) && + !(iterator in val) + ); +}; + +/** + * Determine if a value is an empty object (safely handles Buffers) + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an empty object, otherwise false + */ +const isEmptyObject = (val) => { + // Early return for non-objects or Buffers to prevent RangeError + if (!isObject(val) || isBuffer(val)) { + return false; + } + + try { + return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; + } catch (e) { + // Fallback for any other objects that might cause RangeError with Object.keys() + return false; + } +}; + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a React Native Blob + * React Native "blob": an object with a `uri` attribute. Optionally, it can + * also have a `name` and `type` attribute to specify filename and content type + * + * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 + * + * @param {*} value The value to test + * + * @returns {boolean} True if value is a React Native Blob, otherwise false + */ +const isReactNativeBlob = (value) => { + return !!(value && typeof value.uri !== 'undefined'); +} + +/** + * Determine if environment is React Native + * ReactNative `FormData` has a non-standard `getParts()` method + * + * @param {*} formData The formData to test + * + * @returns {boolean} True if environment is React Native, otherwise false + */ +const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined'; + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +function getGlobal() { + if (typeof globalThis !== 'undefined') return globalThis; + if (typeof self !== 'undefined') return self; + if (typeof window !== 'undefined') return window; + if (typeof global !== 'undefined') return global; + return {}; +} + +const G = getGlobal(); +const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; + +const isFormData = (thing) => { + let kind; + return thing && ( + (FormDataCtor && thing instanceof FormDataCtor) || ( + isFunction(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ); +}; + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +const [isReadableStream, isRequest, isResponse, isHeaders] = [ + 'ReadableStream', + 'Request', + 'Response', + 'Headers', +].map(kindOfTest); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => { + return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); +}; +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, { allOwnKeys = false } = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Buffer check + if (isBuffer(obj)) { + return; + } + + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +/** + * Finds a key in an object, case-insensitive, returning the actual key name. + * Returns null if the object is a Buffer or if no match is found. + * + * @param {Object} obj - The object to search. + * @param {string} key - The key to find (case-insensitive). + * @returns {?string} The actual key name if found, otherwise null. + */ +function findKey(obj, key) { + if (isBuffer(obj)) { + return null; + } + + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== 'undefined') return globalThis; + return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global; +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * const result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const { caseless, skipUndefined } = (isContextDefined(this) && this) || {}; + const result = {}; + const assignValue = (val, key) => { + // Skip dangerous property names to prevent prototype pollution + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return; + } + + const targetKey = (caseless && findKey(result, key)) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else if (!skipUndefined || !isUndefined(val)) { + result[targetKey] = val; + } + }; + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Object} [options] + * @param {Boolean} [options.allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, { allOwnKeys } = {}) => { + forEach( + b, + (val, key) => { + if (thisArg && isFunction(val)) { + Object.defineProperty(a, key, { + value: bind(val, thisArg), + writable: true, + enumerable: true, + configurable: true, + }); + } else { + Object.defineProperty(a, key, { + value: val, + writable: true, + enumerable: true, + configurable: true, + }); + } + }, + { allOwnKeys } + ); + return a; +}; + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xfeff) { + content = content.slice(1); + } + return content; +}; + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + Object.defineProperty(constructor.prototype, 'constructor', { + value: constructor, + writable: true, + enumerable: false, + configurable: true, + }); + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype, + }); + props && Object.assign(constructor.prototype, props); +}; + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +}; + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +}; + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +}; + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = ((TypedArray) => { + // eslint-disable-next-line func-names + return (thing) => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[iterator]; + + const _iterator = generator.call(obj); + + let result; + + while ((result = _iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +}; + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +}; + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = (str) => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + }); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = ( + ({ hasOwnProperty }) => + (obj, prop) => + hasOwnProperty.call(obj, prop) +)(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +}; + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error("Can not rewrite read-only method '" + name + "'"); + }; + } + }); +}; + +/** + * Converts an array or a delimited string into an object set with values as keys and true as values. + * Useful for fast membership checks. + * + * @param {Array|string} arrayOrString - The array or string to convert. + * @param {string} delimiter - The delimiter to use if input is a string. + * @returns {Object} An object with keys from the array or string, values set to true. + */ +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach((value) => { + obj[value] = true; + }); + }; + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +}; + +const noop = () => {}; + +const toFiniteNumber = (value, defaultValue) => { + return value != null && Number.isFinite((value = +value)) ? value : defaultValue; +}; + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!( + thing && + isFunction(thing.append) && + thing[toStringTag] === 'FormData' && + thing[iterator] + ); +} + +/** + * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. + * + * @param {Object} obj - The object to convert. + * @returns {Object} The JSON-compatible object. + */ +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + //Buffer check + if (isBuffer(source)) { + return source; + } + + if (!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + }; + + return visit(obj, 0); +}; + +/** + * Determines if a value is an async function. + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is an async function, otherwise false. + */ +const isAsyncFn = kindOfTest('AsyncFunction'); + +/** + * Determines if a value is thenable (has then and catch methods). + * + * @param {*} thing - The value to test. + * @returns {boolean} True if value is thenable, otherwise false. + */ +const isThenable = (thing) => + thing && + (isObject(thing) || isFunction(thing)) && + isFunction(thing.then) && + isFunction(thing.catch); + +// original code +// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 + +/** + * Provides a cross-platform setImmediate implementation. + * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. + * + * @param {boolean} setImmediateSupported - Whether setImmediate is supported. + * @param {boolean} postMessageSupported - Whether postMessage is supported. + * @returns {Function} A function to schedule a callback asynchronously. + */ +const _setImmediate = ((setImmediateSupported, postMessageSupported) => { + if (setImmediateSupported) { + return setImmediate; + } + + return postMessageSupported + ? ((token, callbacks) => { + _global.addEventListener( + 'message', + ({ source, data }) => { + if (source === _global && data === token) { + callbacks.length && callbacks.shift()(); + } + }, + false + ); + + return (cb) => { + callbacks.push(cb); + _global.postMessage(token, '*'); + }; + })(`axios@${Math.random()}`, []) + : (cb) => setTimeout(cb); +})(typeof setImmediate === 'function', isFunction(_global.postMessage)); + +/** + * Schedules a microtask or asynchronous callback as soon as possible. + * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. + * + * @type {Function} + */ +const asap = + typeof queueMicrotask !== 'undefined' + ? queueMicrotask.bind(_global) + : (typeof process !== 'undefined' && process.nextTick) || _setImmediate; + +// ********************* + +const isIterable = (thing) => thing != null && isFunction(thing[iterator]); + +export default { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isEmptyObject, + isReadableStream, + isRequest, + isResponse, + isHeaders, + isUndefined, + isDate, + isFile, + isReactNativeBlob, + isReactNative, + isBlob, + isRegExp, + isFunction, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable, + setImmediate: _setImmediate, + asap, + isIterable, +}; diff --git a/bff/node_modules/axios/package.json b/bff/node_modules/axios/package.json new file mode 100644 index 0000000..6acac53 --- /dev/null +++ b/bff/node_modules/axios/package.json @@ -0,0 +1,187 @@ +{ + "name": "axios", + "version": "1.14.0", + "description": "Promise based HTTP client for the browser and node.js", + "main": "./dist/node/axios.cjs", + "module": "./index.js", + "type": "module", + "types": "index.d.ts", + "jsdelivr": "dist/axios.min.js", + "unpkg": "dist/axios.min.js", + "typings": "./index.d.ts", + "exports": { + ".": { + "types": { + "require": "./index.d.cts", + "default": "./index.d.ts" + }, + "bun": { + "require": "./dist/node/axios.cjs", + "default": "./index.js" + }, + "react-native": { + "require": "./dist/browser/axios.cjs", + "default": "./dist/esm/axios.js" + }, + "browser": { + "require": "./dist/browser/axios.cjs", + "default": "./index.js" + }, + "default": { + "require": "./dist/node/axios.cjs", + "default": "./index.js" + } + }, + "./lib/adapters/http.js": "./lib/adapters/http.js", + "./lib/adapters/xhr.js": "./lib/adapters/xhr.js", + "./unsafe/*": "./lib/*", + "./unsafe/core/settle.js": "./lib/core/settle.js", + "./unsafe/core/buildFullPath.js": "./lib/core/buildFullPath.js", + "./unsafe/helpers/isAbsoluteURL.js": "./lib/helpers/isAbsoluteURL.js", + "./unsafe/helpers/buildURL.js": "./lib/helpers/buildURL.js", + "./unsafe/helpers/combineURLs.js": "./lib/helpers/combineURLs.js", + "./unsafe/adapters/http.js": "./lib/adapters/http.js", + "./unsafe/adapters/xhr.js": "./lib/adapters/xhr.js", + "./unsafe/utils.js": "./lib/utils.js", + "./package.json": "./package.json", + "./dist/browser/axios.cjs": "./dist/browser/axios.cjs", + "./dist/node/axios.cjs": "./dist/node/axios.cjs" + }, + "browser": { + "./dist/node/axios.cjs": "./dist/browser/axios.cjs", + "./lib/adapters/http.js": "./lib/helpers/null.js", + "./lib/platform/node/index.js": "./lib/platform/browser/index.js", + "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js" + }, + "react-native": { + "./dist/node/axios.cjs": "./dist/browser/axios.cjs", + "./lib/adapters/http.js": "./lib/helpers/null.js", + "./lib/platform/node/index.js": "./lib/platform/browser/index.js", + "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/axios/axios.git" + }, + "keywords": [ + "xhr", + "http", + "ajax", + "promise", + "node", + "browser", + "fetch", + "rest", + "api", + "client" + ], + "author": "Matt Zabriskie", + "contributors": [ + "Matt Zabriskie (https://github.com/mzabriskie)", + "Jay (https://github.com/jasonsaayman)", + "Dmitriy Mozgovoy (https://github.com/DigitalBrainJS)", + "Nick Uraltsev (https://github.com/nickuraltsev)", + "Emily Morehouse (https://github.com/emilyemorehouse)", + "Rubén Norte (https://github.com/rubennorte)", + "Justin Beckwith (https://github.com/JustinBeckwith)", + "Martti Laine (https://github.com/codeclown)", + "Xianming Zhong (https://github.com/chinesedfan)", + "Remco Haszing (https://github.com/remcohaszing)", + "Willian Agostini (https://github.com/WillianAgostini)", + "Rikki Gibson (https://github.com/RikkiGibson)", + "Ben Carp (https://github.com/carpben)" + ], + "sideEffects": false, + "license": "MIT", + "bugs": { + "url": "https://github.com/axios/axios/issues" + }, + "homepage": "https://axios-http.com", + "scripts": { + "build": "gulp clear && cross-env NODE_ENV=production rollup -c -m", + "version": "npm run build && git add package.json", + "preversion": "gulp version", + "test": "npm run test:vitest", + "test:vitest": "vitest run", + "test:vitest:unit": "vitest run --project unit", + "test:vitest:browser": "vitest run --project browser", + "test:vitest:browser:headless": "vitest run --project browser-headless", + "test:vitest:watch": "vitest", + "test:smoke:cjs:vitest": "npm --prefix tests/smoke/cjs run test:smoke:cjs:mocha", + "test:smoke:esm:vitest": "npm --prefix tests/smoke/esm run test:smoke:esm:vitest", + "test:module:cjs": "npm --prefix tests/module/cjs run test:module:cjs", + "test:module:esm": "npm --prefix tests/module/esm run test:module:esm", + "start": "node ./sandbox/server.js", + "examples": "node ./examples/server.js", + "lint": "eslint lib/**/*.js", + "fix": "eslint --fix lib/**/*.js", + "prepare": "husky" + }, + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" + }, + "devDependencies": { + "@babel/core": "^7.29.0", + "@babel/preset-env": "^7.29.0", + "@commitlint/cli": "^20.4.4", + "@commitlint/config-conventional": "^20.4.4", + "@eslint/js": "^10.0.1", + "@rollup/plugin-alias": "^6.0.0", + "@rollup/plugin-babel": "^7.0.0", + "@rollup/plugin-commonjs": "^29.0.2", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-terser": "^1.0.0", + "@vitest/browser": "^4.1.1", + "@vitest/browser-playwright": "^4.1.1", + "abortcontroller-polyfill": "^1.7.8", + "auto-changelog": "^2.5.0", + "body-parser": "^2.2.2", + "chalk": "^5.6.2", + "cross-env": "^10.1.0", + "dev-null": "^0.1.1", + "eslint": "^10.1.0", + "express": "^5.2.1", + "formdata-node": "^6.0.3", + "formidable": "^3.2.4", + "fs-extra": "^11.3.4", + "get-stream": "^9.0.1", + "globals": "^17.4.0", + "gulp": "^5.0.1", + "handlebars": "^4.7.8", + "husky": "^9.1.7", + "lint-staged": "^16.4.0", + "memoizee": "^0.4.17", + "minimist": "^1.2.8", + "multer": "^2.1.1", + "pacote": "^21.5.0", + "playwright": "^1.58.2", + "prettier": "^3.8.1", + "pretty-bytes": "^7.1.0", + "rollup": "^4.60.0", + "rollup-plugin-bundle-size": "^1.0.3", + "selfsigned": "^5.5.0", + "stream-throttle": "^0.1.3", + "string-replace-async": "^3.0.2", + "tar-stream": "^3.1.8", + "typescript": "^5.9.3", + "vitest": "^4.1.1" + }, + "commitlint": { + "rules": { + "header-max-length": [ + 2, + "always", + 130 + ] + }, + "extends": [ + "@commitlint/config-conventional" + ] + }, + "lint-staged": { + "*.{js,cjs,mjs,ts,json,md,yml,yaml}": "prettier --write" + } +} \ No newline at end of file diff --git a/bff/node_modules/body-parser/LICENSE b/bff/node_modules/body-parser/LICENSE new file mode 100644 index 0000000..386b7b6 --- /dev/null +++ b/bff/node_modules/body-parser/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/body-parser/README.md b/bff/node_modules/body-parser/README.md new file mode 100644 index 0000000..39d320f --- /dev/null +++ b/bff/node_modules/body-parser/README.md @@ -0,0 +1,494 @@ +# body-parser + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] +[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] + +Node.js body parsing middleware. + +Parse incoming request bodies in a middleware before your handlers, available +under the `req.body` property. + +**Note** As `req.body`'s shape is based on user-controlled input, all +properties and values in this object are untrusted and should be validated +before trusting. For example, `req.body.foo.toString()` may fail in multiple +ways, for example the `foo` property may not be there or may not be a string, +and `toString` may not be a function and instead a string or other user input. + +[Learn about the anatomy of an HTTP transaction in Node.js](https://nodejs.org/en/learn/http/anatomy-of-an-http-transaction). + +_This does not handle multipart bodies_, due to their complex and typically +large nature. For multipart bodies, you may be interested in the following +modules: + + * [busboy](https://www.npmjs.com/package/busboy#readme) and + [connect-busboy](https://www.npmjs.com/package/connect-busboy#readme) + * [multiparty](https://www.npmjs.com/package/multiparty#readme) and + [connect-multiparty](https://www.npmjs.com/package/connect-multiparty#readme) + * [formidable](https://www.npmjs.com/package/formidable#readme) + * [multer](https://www.npmjs.com/package/multer#readme) + +This module provides the following parsers: + + * [JSON body parser](#bodyparserjsonoptions) + * [Raw body parser](#bodyparserrawoptions) + * [Text body parser](#bodyparsertextoptions) + * [URL-encoded form body parser](#bodyparserurlencodedoptions) + +Other body parsers you might be interested in: + +- [body](https://www.npmjs.com/package/body#readme) +- [co-body](https://www.npmjs.com/package/co-body#readme) + +## Installation + +```sh +$ npm install body-parser +``` + +## API + +```js +const bodyParser = require('body-parser') +``` + +The `bodyParser` object exposes various factories to create middlewares. All +middlewares will populate the `req.body` property with the parsed body when +the `Content-Type` request header matches the `type` option. + +The various errors returned by this module are described in the +[errors section](#errors). + +### bodyParser.json([options]) + +Returns middleware that only parses `json` and only looks at requests where +the `Content-Type` header matches the `type` option. This parser accepts any +Unicode encoding of the body and supports automatic inflation of `gzip`, +`br` (brotli) and `deflate` encodings. + +A new `body` object containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). + +#### Options + +The `json` function takes an optional `options` object that may contain any of +the following keys: + +##### defaultCharset + +Specify the default character set for the json content if the charset is not +specified in the `Content-Type` header of the request. Defaults to `utf-8`. + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### reviver + +The `reviver` option is passed directly to `JSON.parse` as the second +argument. You can find more information on this argument +[in the MDN documentation about JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Example.3A_Using_the_reviver_parameter). + +##### strict + +When set to `true`, will only accept arrays and objects; when `false` will +accept anything `JSON.parse` accepts. Defaults to `true`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. If not a +function, `type` option is passed directly to the +[type-is](https://www.npmjs.com/package/type-is#readme) library and this can +be an extension name (like `json`), a mime type (like `application/json`), or +a mime type with a wildcard (like `*/*` or `*/json`). If a function, the `type` +option is called as `fn(req)` and the request is parsed if it returns a truthy +value. Defaults to `application/json`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +### bodyParser.raw([options]) + +Returns middleware that parses all bodies as a `Buffer` and only looks at +requests where the `Content-Type` header matches the `type` option. This +parser supports automatic inflation of `gzip`, `br` (brotli) and `deflate` +encodings. + +A new `body` object containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). This will be a `Buffer` object +of the body. + +#### Options + +The `raw` function takes an optional `options` object that may contain any of +the following keys: + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. +If not a function, `type` option is passed directly to the +[type-is](https://www.npmjs.com/package/type-is#readme) library and this +can be an extension name (like `bin`), a mime type (like +`application/octet-stream`), or a mime type with a wildcard (like `*/*` or +`application/*`). If a function, the `type` option is called as `fn(req)` +and the request is parsed if it returns a truthy value. Defaults to +`application/octet-stream`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +### bodyParser.text([options]) + +Returns middleware that parses all bodies as a string and only looks at +requests where the `Content-Type` header matches the `type` option. This +parser supports automatic inflation of `gzip`, `br` (brotli) and `deflate` +encodings. + +A new `body` string containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). This will be a string of the +body. + +#### Options + +The `text` function takes an optional `options` object that may contain any of +the following keys: + +##### defaultCharset + +Specify the default character set for the text content if the charset is not +specified in the `Content-Type` header of the request. Defaults to `utf-8`. + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. If not +a function, `type` option is passed directly to the +[type-is](https://www.npmjs.com/package/type-is#readme) library and this can +be an extension name (like `txt`), a mime type (like `text/plain`), or a mime +type with a wildcard (like `*/*` or `text/*`). If a function, the `type` +option is called as `fn(req)` and the request is parsed if it returns a +truthy value. Defaults to `text/plain`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +### bodyParser.urlencoded([options]) + +Returns middleware that only parses `urlencoded` bodies and only looks at +requests where the `Content-Type` header matches the `type` option. This +parser accepts only UTF-8 and ISO-8859-1 encodings of the body and supports +automatic inflation of `gzip`, `br` (brotli) and `deflate` encodings. + +A new `body` object containing the parsed data is populated on the `request` +object after the middleware (i.e. `req.body`). This object will contain +key-value pairs, where the value can be a string or array (when `extended` is +`false`), or any type (when `extended` is `true`). + +#### Options + +The `urlencoded` function takes an optional `options` object that may contain +any of the following keys: + +##### extended + +The "extended" syntax allows for rich objects and arrays to be encoded into the +URL-encoded format, allowing for a JSON-like experience with URL-encoded. For +more information, please [see the qs +library](https://www.npmjs.com/package/qs#readme). + +Defaults to `false`. + +##### inflate + +When set to `true`, then deflated (compressed) bodies will be inflated; when +`false`, deflated bodies are rejected. Defaults to `true`. + +##### limit + +Controls the maximum request body size. If this is a number, then the value +specifies the number of bytes; if it is a string, the value is passed to the +[bytes](https://www.npmjs.com/package/bytes) library for parsing. Defaults +to `'100kb'`. + +##### parameterLimit + +The `parameterLimit` option controls the maximum number of parameters that +are allowed in the URL-encoded data. If a request contains more parameters +than this value, a 413 will be returned to the client. Defaults to `1000`. + +##### type + +The `type` option is used to determine what media type the middleware will +parse. This option can be a string, array of strings, or a function. If not +a function, `type` option is passed directly to the +[type-is](https://www.npmjs.com/package/type-is#readme) library and this can +be an extension name (like `urlencoded`), a mime type (like +`application/x-www-form-urlencoded`), or a mime type with a wildcard (like +`*/x-www-form-urlencoded`). If a function, the `type` option is called as +`fn(req)` and the request is parsed if it returns a truthy value. Defaults +to `application/x-www-form-urlencoded`. + +##### verify + +The `verify` option, if supplied, is called as `verify(req, res, buf, encoding)`, +where `buf` is a `Buffer` of the raw request body and `encoding` is the +encoding of the request. The parsing can be aborted by throwing an error. + +##### defaultCharset + +The default charset to parse as, if not specified in content-type. Must be +either `utf-8` or `iso-8859-1`. Defaults to `utf-8`. + +##### charsetSentinel + +Whether to let the value of the `utf8` parameter take precedence as the charset +selector. It requires the form to contain a parameter named `utf8` with a value +of `✓`. Defaults to `false`. + +##### interpretNumericEntities + +Whether to decode numeric entities such as `☺` when parsing an iso-8859-1 +form. Defaults to `false`. + + +##### depth + +The `depth` option is used to configure the maximum depth of the `qs` library when `extended` is `true`. This allows you to limit the amount of keys that are parsed and can be useful to prevent certain types of abuse. Defaults to `32`. It is recommended to keep this value as low as possible. + +## Errors + +The middlewares provided by this module create errors using the +[`http-errors` module](https://www.npmjs.com/package/http-errors). The errors +will typically have a `status`/`statusCode` property that contains the suggested +HTTP response code, an `expose` property to determine if the `message` property +should be displayed to the client, a `type` property to determine the type of +error without matching against the `message`, and a `body` property containing +the read body, if available. + +The following are the common errors created, though any error can come through +for various reasons. + +### content encoding unsupported + +This error will occur when the request had a `Content-Encoding` header that +contained an encoding but the "inflation" option was set to `false`. The +`status` property is set to `415`, the `type` property is set to +`'encoding.unsupported'`, and the `charset` property will be set to the +encoding that is unsupported. + +### entity parse failed + +This error will occur when the request contained an entity that could not be +parsed by the middleware. The `status` property is set to `400`, the `type` +property is set to `'entity.parse.failed'`, and the `body` property is set to +the entity value that failed parsing. + +### entity verify failed + +This error will occur when the request contained an entity that could not be +failed verification by the defined `verify` option. The `status` property is +set to `403`, the `type` property is set to `'entity.verify.failed'`, and the +`body` property is set to the entity value that failed verification. + +### request aborted + +This error will occur when the request is aborted by the client before reading +the body has finished. The `received` property will be set to the number of +bytes received before the request was aborted and the `expected` property is +set to the number of expected bytes. The `status` property is set to `400` +and `type` property is set to `'request.aborted'`. + +### request entity too large + +This error will occur when the request body's size is larger than the "limit" +option. The `limit` property will be set to the byte limit and the `length` +property will be set to the request body's length. The `status` property is +set to `413` and the `type` property is set to `'entity.too.large'`. + +### request size did not match content length + +This error will occur when the request's length did not match the length from +the `Content-Length` header. This typically occurs when the request is malformed, +typically when the `Content-Length` header was calculated based on characters +instead of bytes. The `status` property is set to `400` and the `type` property +is set to `'request.size.invalid'`. + +### stream encoding should not be set + +This error will occur when something called the `req.setEncoding` method prior +to this middleware. This module operates directly on bytes only and you cannot +call `req.setEncoding` when using this module. The `status` property is set to +`500` and the `type` property is set to `'stream.encoding.set'`. + +### stream is not readable + +This error will occur when the request is no longer readable when this middleware +attempts to read it. This typically means something other than a middleware from +this module read the request body already and the middleware was also configured to +read the same request. The `status` property is set to `500` and the `type` +property is set to `'stream.not.readable'`. + +### too many parameters + +This error will occur when the content of the request exceeds the configured +`parameterLimit` for the `urlencoded` parser. The `status` property is set to +`413` and the `type` property is set to `'parameters.too.many'`. + +### unsupported charset "BOGUS" + +This error will occur when the request had a charset parameter in the +`Content-Type` header, but the `iconv-lite` module does not support it OR the +parser does not support it. The charset is contained in the message as well +as in the `charset` property. The `status` property is set to `415`, the +`type` property is set to `'charset.unsupported'`, and the `charset` property +is set to the charset that is unsupported. + +### unsupported content encoding "bogus" + +This error will occur when the request had a `Content-Encoding` header that +contained an unsupported encoding. The encoding is contained in the message +as well as in the `encoding` property. The `status` property is set to `415`, +the `type` property is set to `'encoding.unsupported'`, and the `encoding` +property is set to the encoding that is unsupported. + +### The input exceeded the depth + +This error occurs when using `bodyParser.urlencoded` with the `extended` property set to `true` and the input exceeds the configured `depth` option. The `status` property is set to `400`. It is recommended to review the `depth` option and evaluate if it requires a higher value. When the `depth` option is set to `32` (default value), the error will not be thrown. + +## Examples + +### Express/Connect top-level generic + +This example demonstrates adding a generic JSON and URL-encoded parser as a +top-level middleware, which will parse the bodies of all incoming requests. +This is the simplest setup. + +```js +const express = require('express') +const bodyParser = require('body-parser') + +const app = express() + +// parse application/x-www-form-urlencoded +app.use(bodyParser.urlencoded()) + +// parse application/json +app.use(bodyParser.json()) + +app.use(function (req, res) { + res.setHeader('Content-Type', 'text/plain') + res.write('you posted:\n') + res.end(String(JSON.stringify(req.body, null, 2))) +}) +``` + +### Express route-specific + +This example demonstrates adding body parsers specifically to the routes that +need them. In general, this is the most recommended way to use body-parser with +Express. + +```js +const express = require('express') +const bodyParser = require('body-parser') + +const app = express() + +// create application/json parser +const jsonParser = bodyParser.json() + +// create application/x-www-form-urlencoded parser +const urlencodedParser = bodyParser.urlencoded() + +// POST /login gets urlencoded bodies +app.post('/login', urlencodedParser, function (req, res) { + if (!req.body || !req.body.username) res.sendStatus(400) + res.send('welcome, ' + req.body.username) +}) + +// POST /api/users gets JSON bodies +app.post('/api/users', jsonParser, function (req, res) { + if (!req.body) res.sendStatus(400) + // create user in req.body +}) +``` + +### Change accepted type for parsers + +All the parsers accept a `type` option which allows you to change the +`Content-Type` that the middleware will parse. + +```js +const express = require('express') +const bodyParser = require('body-parser') + +const app = express() + +// parse various different custom JSON types as JSON +app.use(bodyParser.json({ type: 'application/*+json' })) + +// parse some custom thing into a Buffer +app.use(bodyParser.raw({ type: 'application/vnd.custom-type' })) + +// parse an HTML body into a string +app.use(bodyParser.text({ type: 'text/html' })) +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://img.shields.io/github/actions/workflow/status/expressjs/body-parser/ci.yml?branch=master&label=ci +[ci-url]: https://github.com/expressjs/body-parser/actions/workflows/ci.yml +[coveralls-image]: https://img.shields.io/coverallsCoverage/github/expressjs/body-parser?branch=master +[coveralls-url]: https://coveralls.io/r/expressjs/body-parser?branch=master +[npm-downloads-image]: https://img.shields.io/npm/dm/body-parser +[npm-url]: https://npmjs.com/package/body-parser +[npm-version-image]: https://img.shields.io/npm/v/body-parser +[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/body-parser/badge +[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/body-parser diff --git a/bff/node_modules/body-parser/index.js b/bff/node_modules/body-parser/index.js new file mode 100644 index 0000000..013ce5c --- /dev/null +++ b/bff/node_modules/body-parser/index.js @@ -0,0 +1,71 @@ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * @typedef {Object} Parsers + * @property {Function} json JSON parser + * @property {Function} raw Raw parser + * @property {Function} text Text parser + * @property {Function} urlencoded URL-encoded parser + */ + +/** + * Module exports. + * @type {Function & Parsers} + */ +exports = module.exports = bodyParser + +/** + * JSON parser. + * @public + */ +Object.defineProperty(exports, 'json', { + configurable: true, + enumerable: true, + get: () => require('./lib/types/json') +}) + +/** + * Raw parser. + * @public + */ +Object.defineProperty(exports, 'raw', { + configurable: true, + enumerable: true, + get: () => require('./lib/types/raw') +}) + +/** + * Text parser. + * @public + */ +Object.defineProperty(exports, 'text', { + configurable: true, + enumerable: true, + get: () => require('./lib/types/text') +}) + +/** + * URL-encoded parser. + * @public + */ +Object.defineProperty(exports, 'urlencoded', { + configurable: true, + enumerable: true, + get: () => require('./lib/types/urlencoded') +}) + +/** + * Create a middleware to parse json and urlencoded bodies. + * + * @deprecated + * @public + */ +function bodyParser () { + throw new Error('The bodyParser() generic has been split into individual middleware to use instead.') +} diff --git a/bff/node_modules/body-parser/lib/read.js b/bff/node_modules/body-parser/lib/read.js new file mode 100644 index 0000000..d1f3f48 --- /dev/null +++ b/bff/node_modules/body-parser/lib/read.js @@ -0,0 +1,247 @@ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var createError = require('http-errors') +var getBody = require('raw-body') +var iconv = require('iconv-lite') +var onFinished = require('on-finished') +var zlib = require('node:zlib') +var hasBody = require('type-is').hasBody +var { getCharset } = require('./utils') + +/** + * Module exports. + */ + +module.exports = read + +/** + * Read a request into a buffer and parse. + * + * @param {Object} req + * @param {Object} res + * @param {Function} next + * @param {Function} parse + * @param {Function} debug + * @param {Object} options + * @private + */ +function read (req, res, next, parse, debug, options) { + if (onFinished.isFinished(req)) { + debug('body already parsed') + next() + return + } + + if (!('body' in req)) { + req.body = undefined + } + + // skip requests without bodies + if (!hasBody(req)) { + debug('skip empty body') + next() + return + } + + debug('content-type %j', req.headers['content-type']) + + // determine if request should be parsed + if (!options.shouldParse(req)) { + debug('skip parsing') + next() + return + } + + var encoding = null + if (options?.skipCharset !== true) { + encoding = getCharset(req) || options.defaultCharset + + // validate charset + if (!!options?.isValidCharset && !options.isValidCharset(encoding)) { + debug('invalid charset') + next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding, + type: 'charset.unsupported' + })) + return + } + } + + var length + var opts = options + var stream + + // read options + var verify = opts.verify + + try { + // get the content stream + stream = contentstream(req, debug, opts.inflate) + length = stream.length + stream.length = undefined + } catch (err) { + return next(err) + } + + // set raw-body options + opts.length = length + opts.encoding = verify + ? null + : encoding + + // assert charset is supported + if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { + return next(createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: 'charset.unsupported' + })) + } + + // read body + debug('read body') + getBody(stream, opts, function (error, body) { + if (error) { + var _error + + if (error.type === 'encoding.unsupported') { + // echo back charset + _error = createError(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { + charset: encoding.toLowerCase(), + type: 'charset.unsupported' + }) + } else { + // set status code on error + _error = createError(400, error) + } + + // unpipe from stream and destroy + if (stream !== req) { + req.unpipe() + stream.destroy() + } + + // read off entire request + dump(req, function onfinished () { + next(createError(400, _error)) + }) + return + } + + // verify + if (verify) { + try { + debug('verify body') + verify(req, res, body, encoding) + } catch (err) { + next(createError(403, err, { + body: body, + type: err.type || 'entity.verify.failed' + })) + return + } + } + + // parse + var str = body + try { + debug('parse body') + str = typeof body !== 'string' && encoding !== null + ? iconv.decode(body, encoding) + : body + req.body = parse(str, encoding) + } catch (err) { + next(createError(400, err, { + body: str, + type: err.type || 'entity.parse.failed' + })) + return + } + + next() + }) +} + +/** + * Get the content stream of the request. + * + * @param {Object} req + * @param {Function} debug + * @param {boolean} inflate + * @returns {Object} + * @private + */ +function contentstream (req, debug, inflate) { + var encoding = (req.headers['content-encoding'] || 'identity').toLowerCase() + var length = req.headers['content-length'] + + debug('content-encoding "%s"', encoding) + + if (inflate === false && encoding !== 'identity') { + throw createError(415, 'content encoding unsupported', { + encoding: encoding, + type: 'encoding.unsupported' + }) + } + + if (encoding === 'identity') { + req.length = length + return req + } + + var stream = createDecompressionStream(encoding, debug) + req.pipe(stream) + return stream +} + +/** + * Create a decompression stream for the given encoding. + * @param {string} encoding + * @param {Function} debug + * @returns {Object} + * @private + */ +function createDecompressionStream (encoding, debug) { + switch (encoding) { + case 'deflate': + debug('inflate body') + return zlib.createInflate() + case 'gzip': + debug('gunzip body') + return zlib.createGunzip() + case 'br': + debug('brotli decompress body') + return zlib.createBrotliDecompress() + default: + throw createError(415, 'unsupported content encoding "' + encoding + '"', { + encoding: encoding, + type: 'encoding.unsupported' + }) + } +} + +/** + * Dump the contents of a request. + * + * @param {Object} req + * @param {Function} callback + * @private + */ +function dump (req, callback) { + if (onFinished.isFinished(req)) { + callback(null) + } else { + onFinished(req, callback) + req.resume() + } +} diff --git a/bff/node_modules/body-parser/lib/types/json.js b/bff/node_modules/body-parser/lib/types/json.js new file mode 100644 index 0000000..23c7357 --- /dev/null +++ b/bff/node_modules/body-parser/lib/types/json.js @@ -0,0 +1,158 @@ +/*! + * body-parser + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var debug = require('debug')('body-parser:json') +var read = require('../read') +var { normalizeOptions } = require('../utils') + +/** + * Module exports. + */ + +module.exports = json + +/** + * RegExp to match the first non-space in a string. + * + * Allowed whitespace is defined in RFC 7159: + * + * ws = *( + * %x20 / ; Space + * %x09 / ; Horizontal tab + * %x0A / ; Line feed or New line + * %x0D ) ; Carriage return + */ +var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/ // eslint-disable-line no-control-regex + +var JSON_SYNTAX_CHAR = '#' +var JSON_SYNTAX_REGEXP = /#+/g + +/** + * Create a middleware to parse JSON bodies. + * + * @param {Object} [options] + * @returns {Function} + * @public + */ +function json (options) { + const normalizedOptions = normalizeOptions(options, 'application/json') + + var reviver = options?.reviver + var strict = options?.strict !== false + + function parse (body) { + if (body.length === 0) { + // special-case empty json body, as it's a common client-side mistake + // TODO: maybe make this configurable or part of "strict" option + return {} + } + + if (strict) { + var first = firstchar(body) + + if (first !== '{' && first !== '[') { + debug('strict violation') + throw createStrictSyntaxError(body, first) + } + } + + try { + debug('parse json') + return JSON.parse(body, reviver) + } catch (e) { + throw normalizeJsonSyntaxError(e, { + message: e.message, + stack: e.stack + }) + } + } + + const readOptions = { + ...normalizedOptions, + // assert charset per RFC 7159 sec 8.1 + isValidCharset: (charset) => charset.slice(0, 4) === 'utf-' + } + + return function jsonParser (req, res, next) { + read(req, res, next, parse, debug, readOptions) + } +} + +/** + * Create strict violation syntax error matching native error. + * + * @param {string} str + * @param {string} char + * @returns {Error} + * @private + */ +function createStrictSyntaxError (str, char) { + var index = str.indexOf(char) + var partial = '' + + if (index !== -1) { + partial = str.substring(0, index) + JSON_SYNTAX_CHAR.repeat(str.length - index) + } + + try { + JSON.parse(partial); /* istanbul ignore next */ throw new SyntaxError('strict violation') + } catch (e) { + return normalizeJsonSyntaxError(e, { + message: e.message.replace(JSON_SYNTAX_REGEXP, function (placeholder) { + return str.substring(index, index + placeholder.length) + }), + stack: e.stack + }) + } +} + +/** + * Get the first non-whitespace character in a string. + * + * @param {string} str + * @returns {string|undefined} + * @private + */ +function firstchar (str) { + var match = FIRST_CHAR_REGEXP.exec(str) + + return match + ? match[1] + : undefined +} + +/** + * Normalize a SyntaxError for JSON.parse. + * + * @param {SyntaxError} error + * @param {Object} obj + * @returns {SyntaxError} + * @private + */ +function normalizeJsonSyntaxError (error, obj) { + var keys = Object.getOwnPropertyNames(error) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i] + if (key !== 'stack' && key !== 'message') { + delete error[key] + } + } + + // replace stack before message for Node.js 0.10 and below + error.stack = obj.stack.replace(error.message, obj.message) + error.message = obj.message + + return error +} diff --git a/bff/node_modules/body-parser/lib/types/raw.js b/bff/node_modules/body-parser/lib/types/raw.js new file mode 100644 index 0000000..ad4854d --- /dev/null +++ b/bff/node_modules/body-parser/lib/types/raw.js @@ -0,0 +1,42 @@ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + */ + +var debug = require('debug')('body-parser:raw') +var read = require('../read') +var { normalizeOptions, passthrough } = require('../utils') + +/** + * Module exports. + */ + +module.exports = raw + +/** + * Create a middleware to parse raw bodies. + * + * @param {Object} [options] + * @returns {Function} + * @public + */ +function raw (options) { + const normalizedOptions = normalizeOptions(options, 'application/octet-stream') + + const readOptions = { + ...normalizedOptions, + // Skip charset validation and parse the body as is + skipCharset: true + } + + return function rawParser (req, res, next) { + read(req, res, next, passthrough, debug, readOptions) + } +} diff --git a/bff/node_modules/body-parser/lib/types/text.js b/bff/node_modules/body-parser/lib/types/text.js new file mode 100644 index 0000000..9df73be --- /dev/null +++ b/bff/node_modules/body-parser/lib/types/text.js @@ -0,0 +1,36 @@ +/*! + * body-parser + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + */ + +var debug = require('debug')('body-parser:text') +var read = require('../read') +var { normalizeOptions, passthrough } = require('../utils') + +/** + * Module exports. + */ + +module.exports = text + +/** + * Create a middleware to parse text bodies. + * + * @param {Object} [options] + * @returns {Function} + * @public + */ +function text (options) { + const normalizedOptions = normalizeOptions(options, 'text/plain') + + return function textParser (req, res, next) { + read(req, res, next, passthrough, debug, normalizedOptions) + } +} diff --git a/bff/node_modules/body-parser/lib/types/urlencoded.js b/bff/node_modules/body-parser/lib/types/urlencoded.js new file mode 100644 index 0000000..4a3227c --- /dev/null +++ b/bff/node_modules/body-parser/lib/types/urlencoded.js @@ -0,0 +1,142 @@ +/*! + * body-parser + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var createError = require('http-errors') +var debug = require('debug')('body-parser:urlencoded') +var read = require('../read') +var qs = require('qs') +var { normalizeOptions } = require('../utils') + +/** + * Module exports. + */ + +module.exports = urlencoded + +/** + * Create a middleware to parse urlencoded bodies. + * + * @param {Object} [options] + * @returns {Function} + * @public + */ +function urlencoded (options) { + const normalizedOptions = normalizeOptions(options, 'application/x-www-form-urlencoded') + + if (normalizedOptions.defaultCharset !== 'utf-8' && normalizedOptions.defaultCharset !== 'iso-8859-1') { + throw new TypeError('option defaultCharset must be either utf-8 or iso-8859-1') + } + + // create the appropriate query parser + var queryparse = createQueryParser(options) + + function parse (body, encoding) { + return body.length + ? queryparse(body, encoding) + : {} + } + + const readOptions = { + ...normalizedOptions, + // assert charset + isValidCharset: (charset) => charset === 'utf-8' || charset === 'iso-8859-1' + } + + return function urlencodedParser (req, res, next) { + read(req, res, next, parse, debug, readOptions) + } +} + +/** + * Get the extended query parser. + * + * @param {Object} options + * @returns {Function} + * @private + */ +function createQueryParser (options) { + var extended = Boolean(options?.extended) + var parameterLimit = options?.parameterLimit !== undefined + ? options?.parameterLimit + : 1000 + var charsetSentinel = options?.charsetSentinel + var interpretNumericEntities = options?.interpretNumericEntities + var depth = extended ? (options?.depth !== undefined ? options?.depth : 32) : 0 + + if (isNaN(parameterLimit) || parameterLimit < 1) { + throw new TypeError('option parameterLimit must be a positive number') + } + + if (isNaN(depth) || depth < 0) { + throw new TypeError('option depth must be a zero or a positive number') + } + + if (isFinite(parameterLimit)) { + parameterLimit = parameterLimit | 0 + } + + return function queryparse (body, encoding) { + var paramCount = parameterCount(body, parameterLimit) + + if (paramCount === undefined) { + debug('too many parameters') + throw createError(413, 'too many parameters', { + type: 'parameters.too.many' + }) + } + + var arrayLimit = extended ? Math.max(100, paramCount) : paramCount + + debug('parse ' + (extended ? 'extended ' : '') + 'urlencoding') + try { + return qs.parse(body, { + allowPrototypes: true, + arrayLimit: arrayLimit, + depth: depth, + charsetSentinel: charsetSentinel, + interpretNumericEntities: interpretNumericEntities, + charset: encoding, + parameterLimit: parameterLimit, + strictDepth: true + }) + } catch (err) { + if (err instanceof RangeError) { + throw createError(400, 'The input exceeded the depth', { + type: 'querystring.parse.rangeError' + }) + } else { + throw err + } + } + } +} + +/** + * Count the number of parameters, stopping once limit reached + * + * @param {string} body + * @param {number} limit + * @returns {number|undefined} Returns undefined if limit exceeded + * @private + */ +function parameterCount (body, limit) { + let count = 0 + let index = -1 + do { + count++ + if (count > limit) return undefined // Early exit if limit exceeded + index = body.indexOf('&', index + 1) + } while (index !== -1) + return count +} diff --git a/bff/node_modules/body-parser/lib/utils.js b/bff/node_modules/body-parser/lib/utils.js new file mode 100644 index 0000000..e0bf974 --- /dev/null +++ b/bff/node_modules/body-parser/lib/utils.js @@ -0,0 +1,98 @@ +'use strict' + +/** + * Module dependencies. + */ + +var bytes = require('bytes') +var contentType = require('content-type') +var typeis = require('type-is') + +/** + * Module exports. + */ +module.exports = { + getCharset, + normalizeOptions, + passthrough +} + +/** + * Get the charset of a request. + * + * @param {Object} req + * @returns {string | undefined} + * @private + */ +function getCharset (req) { + try { + return (contentType.parse(req).parameters.charset || '').toLowerCase() + } catch { + return undefined + } +} + +/** + * Get the simple type checker. + * + * @param {string | string[]} type + * @returns {Function} + * @private + */ +function typeChecker (type) { + return function checkType (req) { + return Boolean(typeis(req, type)) + } +} + +/** + * Normalizes the common options for all parsers. + * + * @param {Object} options options to normalize + * @param {string | string[] | Function} defaultType default content type(s) or a function to determine it + * @returns {Object} + * @private + */ +function normalizeOptions (options, defaultType) { + if (!defaultType) { + // Parsers must define a default content type + throw new TypeError('defaultType must be provided') + } + + var inflate = options?.inflate !== false + var limit = typeof options?.limit !== 'number' + ? bytes.parse(options?.limit || '100kb') + : options?.limit + var type = options?.type || defaultType + var verify = options?.verify || false + var defaultCharset = options?.defaultCharset || 'utf-8' + + if (verify !== false && typeof verify !== 'function') { + throw new TypeError('option verify must be function') + } + + // create the appropriate type checking function + var shouldParse = typeof type !== 'function' + ? typeChecker(type) + : type + + return { + inflate, + limit, + verify, + defaultCharset, + shouldParse + } +} + +/** + * Passthrough function that returns input unchanged. + * Used by parsers that don't need to transform the data. + * + * @param {*} value + * @returns {*} + * @private + */ +function passthrough (value) { + return value +} diff --git a/bff/node_modules/body-parser/package.json b/bff/node_modules/body-parser/package.json new file mode 100644 index 0000000..486878a --- /dev/null +++ b/bff/node_modules/body-parser/package.json @@ -0,0 +1,52 @@ +{ + "name": "body-parser", + "description": "Node.js body parsing middleware", + "version": "2.2.2", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "repository": "expressjs/body-parser", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "devDependencies": { + "eslint": "^8.57.1", + "eslint-config-standard": "^14.1.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-markdown": "^3.0.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^6.6.0", + "eslint-plugin-standard": "^4.1.0", + "mocha": "^11.1.0", + "nyc": "^17.1.0", + "supertest": "^7.0.0" + }, + "files": [ + "lib/", + "LICENSE", + "index.js" + ], + "engines": { + "node": ">=18" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/bowser/LICENSE b/bff/node_modules/bowser/LICENSE new file mode 100644 index 0000000..94085f0 --- /dev/null +++ b/bff/node_modules/bowser/LICENSE @@ -0,0 +1,39 @@ +Copyright 2015, Dustin Diaz (the "Original Author") +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +Distributions of all or part of the Software intended to be used +by the recipients as they would use the unmodified Software, +containing modifications that substantially alter, remove, or +disable functionality of the Software, outside of the documented +configuration mechanisms provided by the Software, shall be +modified such that the Original Author's bug reporting email +addresses and urls are either replaced with the contact information +of the parties responsible for the changes, or removed entirely. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +Except where noted, this license applies to any and all software +programs and associated documentation files created by the +Original Author, when distributed with the Software. diff --git a/bff/node_modules/bowser/README.md b/bff/node_modules/bowser/README.md new file mode 100644 index 0000000..96fbb60 --- /dev/null +++ b/bff/node_modules/bowser/README.md @@ -0,0 +1,246 @@ +## Bowser +A small, fast and rich-API browser/platform/engine detector for both browser and node. +- **Small.** Use plain ES5-version which is ~4.8kB gzipped. +- **Optimized.** Use only those parsers you need — it doesn't do useless work. +- **Multi-platform.** It's browser- and node-ready, so you can use it in any environment. + +Don't hesitate to support the project on Github or [OpenCollective](https://opencollective.com/bowser) if you like it ❤️ Also, contributors are always welcome! + +[![Financial Contributors on Open Collective](https://opencollective.com/bowser/all/badge.svg?label=financial+contributors)](https://opencollective.com/bowser) ![Downloads](https://img.shields.io/npm/dm/bowser) + +# Contents +- [Overview](#overview) +- [Use cases](#use-cases) + - [Browser props detection](#browser-props-detection) + - [Using User-Agent Client Hints](#using-user-agent-client-hints) + - [Filtering browsers](#filtering-browsers) + +# Overview + +The library is made to help to detect what browser your user has and gives you a convenient API to filter the users somehow depending on their browsers. Check it out on this page: https://bowser-js.github.io/bowser-online/. + +### ⚠️ Version 2.0 breaking changes ⚠️ + +Version 2.0 has drastically changed the API. All available methods are on the [docs page](https://bowser-js.github.io/bowser/docs/). + +_For legacy code, check out the [1.x](https://github.com/bowser-js/bowser/tree/v1.x) branch and install it through `npm install bowser@1.9.4`._ + +# Use cases + +First of all, require the library. This is a UMD Module, so it will work for AMD, TypeScript, ES6, and CommonJS module systems. + +```javascript +const Bowser = require("bowser"); // CommonJS + +import * as Bowser from "bowser"; // TypeScript + +import Bowser from "bowser"; // ES6 (and TypeScript with --esModuleInterop enabled) +``` + +By default, the exported version is the *ES5 transpiled version*, which **do not** include any polyfills. + +In case you don't use your own `babel-polyfill` you may need to have pre-built bundle with all needed polyfills. +So, for you it's suitable to require bowser like this: `require('bowser/bundled')`. +As the result, you get a ES5 version of bowser with `babel-polyfill` bundled together. + +You may need to use the source files, so they will be available in the package as well. + +## Browser props detection + +Often we need to pick users' browser properties such as the name, the version, the rendering engine and so on. Here is an example how to do it with Bowser: + +```javascript +const browser = Bowser.getParser(window.navigator.userAgent); + +console.log(`The current browser name is "${browser.getBrowserName()}"`); +// The current browser name is "Internet Explorer" +``` + +### Using User-Agent Client Hints + +Modern browsers support [User-Agent Client Hints](https://developer.mozilla.org/en-US/docs/Web/API/User-Agent_Client_Hints_API), which provide a more privacy-friendly and structured way to access browser information. Bowser can use Client Hints data to improve browser detection accuracy. + +```javascript +// Pass Client Hints as the second parameter +const browser = Bowser.getParser( + window.navigator.userAgent, + window.navigator.userAgentData +); + +console.log(`The current browser name is "${browser.getBrowserName()}"`); +// More accurate detection using Client Hints +``` + +#### Working with Client Hints + +Bowser provides methods to access and query Client Hints data: + +```javascript +const browser = Bowser.getParser( + window.navigator.userAgent, + window.navigator.userAgentData +); + +// Get the full Client Hints object +const hints = browser.getHints(); +// Returns the ClientHints object or null if not provided + +// Check if a specific brand exists +if (browser.hasBrand('Google Chrome')) { + console.log('This is Chrome!'); +} + +// Get the version of a specific brand +const chromeVersion = browser.getBrandVersion('Google Chrome'); +console.log(`Chrome version: ${chromeVersion}`); +``` + +The Client Hints object structure: +```javascript +{ + brands: [ + { brand: 'Google Chrome', version: '131' }, + { brand: 'Chromium', version: '131' }, + { brand: 'Not_A Brand', version: '24' } + ], + mobile: false, + platform: 'Windows', + platformVersion: '15.0.0', + architecture: 'x86', + model: '', + wow64: false +} +``` + +**Note:** Client Hints improve detection for browsers like DuckDuckGo and other Chromium-based browsers that may have similar User-Agent strings. When Client Hints are not provided, Bowser falls back to standard User-Agent string parsing. + +or + +```javascript +const browser = Bowser.getParser(window.navigator.userAgent); +console.log(browser.getBrowser()); + +// outputs +{ + name: "Internet Explorer" + version: "11.0" +} +``` + +or + +```javascript +console.log(Bowser.parse(window.navigator.userAgent)); + +// outputs +{ + browser: { + name: "Internet Explorer" + version: "11.0" + }, + os: { + name: "Windows" + version: "NT 6.3" + versionName: "8.1" + }, + platform: { + type: "desktop" + }, + engine: { + name: "Trident" + version: "7.0" + } +} +``` + +You can also use `Bowser.parse()` with Client Hints: + +```javascript +console.log(Bowser.parse(window.navigator.userAgent, window.navigator.userAgentData)); + +// Same output structure, but with enhanced detection from Client Hints +``` + + +## Filtering browsers + +You could want to filter some particular browsers to provide any special support for them or make any workarounds. +It could look like this: + +```javascript +const browser = Bowser.getParser(window.navigator.userAgent); +const isValidBrowser = browser.satisfies({ + // declare browsers per OS + windows: { + "internet explorer": ">10", + }, + macos: { + safari: ">10.1" + }, + + // per platform (mobile, desktop or tablet) + mobile: { + safari: '>=9', + 'android browser': '>3.10' + }, + + // or in general + chrome: "~20.1.1432", + firefox: ">31", + opera: ">=22", + + // also supports equality operator + chrome: "=20.1.1432", // will match particular build only + + // and loose-equality operator + chrome: "~20", // will match any 20.* sub-version + chrome: "~20.1" // will match any 20.1.* sub-version (20.1.19 as well as 20.1.12.42-alpha.1) +}); +``` + +Settings for any particular OS or platform has more priority and redefines settings of standalone browsers. +Thus, you can define OS or platform specific rules and they will have more priority in the end. + +More of API and possibilities you will find in the `docs` folder. + +### Browser names for `.satisfies()` + +By default you are supposed to use the full browser name for `.satisfies`. +But, there's a short way to define a browser using short aliases. The full +list of aliases can be found in [the file](src/constants.js). + +## Similar Projects +* [Kong](https://github.com/BigBadBleuCheese/Kong) - A C# port of Bowser. + +## Contributors + +### Code Contributors + +This project exists thanks to all the people who contribute. [[Contribute](.github/CONTRIBUTING.md)]. + + +### Financial Contributors + +Become a financial contributor and help us sustain our community. [[Contribute](https://opencollective.com/bowser/contribute)] + +#### Individuals + + + +#### Organizations + +Support this project with your organization. Your logo will show up here with a link to your website. [[Contribute](https://opencollective.com/bowser/contribute)] + + + + + + + + + + + + +## License +Licensed as MIT. All rights not explicitly granted in the MIT license are reserved. See the included LICENSE file for more details. diff --git a/bff/node_modules/bowser/bundled.js b/bff/node_modules/bowser/bundled.js new file mode 100644 index 0000000..e9dd0cd --- /dev/null +++ b/bff/node_modules/bowser/bundled.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.bowser=e():t.bowser=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=129)}([function(t,e,n){var r=n(1),i=n(7),o=n(14),u=n(11),a=n(19),c=function(t,e,n){var s,f,l,d,h=t&c.F,v=t&c.G,p=t&c.S,g=t&c.P,y=t&c.B,b=v?r:p?r[e]||(r[e]={}):(r[e]||{}).prototype,m=v?i:i[e]||(i[e]={}),M=m.prototype||(m.prototype={});for(s in v&&(n=e),n)l=((f=!h&&b&&void 0!==b[s])?b:n)[s],d=y&&f?a(l,r):g&&"function"==typeof l?a(Function.call,l):l,b&&u(b,s,l,t&c.U),m[s]!=l&&o(m,s,d),g&&M[s]!=l&&(M[s]=l)};r.core=i,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(4);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){var r=n(50)("wks"),i=n(31),o=n(1).Symbol,u="function"==typeof o;(t.exports=function(t){return r[t]||(r[t]=u&&o[t]||(u?o:i)("Symbol."+t))}).store=r},function(t,e,n){var r=n(21),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},function(t,e,n){t.exports=!n(2)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(3),i=n(96),o=n(28),u=Object.defineProperty;e.f=n(8)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return u(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(26);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(1),i=n(14),o=n(13),u=n(31)("src"),a=n(134),c=(""+a).split("toString");n(7).inspectSource=function(t){return a.call(t)},(t.exports=function(t,e,n,a){var s="function"==typeof n;s&&(o(n,"name")||i(n,"name",e)),t[e]!==n&&(s&&(o(n,u)||i(n,u,t[e]?""+t[e]:c.join(String(e)))),t===r?t[e]=n:a?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[u]||a.call(this)}))},function(t,e,n){var r=n(0),i=n(2),o=n(26),u=/"/g,a=function(t,e,n,r){var i=String(o(t)),a="<"+e;return""!==n&&(a+=" "+n+'="'+String(r).replace(u,""")+'"'),a+">"+i+""};t.exports=function(t,e){var n={};n[t]=e(a),r(r.P+r.F*i((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3})),"String",n)}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},function(t,e,n){var r=n(9),i=n(30);t.exports=n(8)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(46),i=n(26);t.exports=function(t){return r(i(t))}},function(t,e,n){"use strict";var r=n(2);t.exports=function(t,e){return!!t&&r((function(){e?t.call(null,(function(){}),1):t.call(null)}))}},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r=n(18),i=function(){function t(){}return t.getFirstMatch=function(t,e){var n=e.match(t);return n&&n.length>0&&n[1]||""},t.getSecondMatch=function(t,e){var n=e.match(t);return n&&n.length>1&&n[2]||""},t.matchAndReturnConst=function(t,e,n){if(t.test(e))return n},t.getWindowsVersionName=function(t){switch(t){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},t.getMacOSVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));e.push(0);var n=e[0],r=e[1];if(10===n)switch(r){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}switch(n){case 11:return"Big Sur";case 12:return"Monterey";case 13:return"Ventura";case 14:return"Sonoma";case 15:return"Sequoia";default:return}},t.getAndroidVersionName=function(t){var e=t.split(".").splice(0,2).map((function(t){return parseInt(t,10)||0}));if(e.push(0),!(1===e[0]&&e[1]<5))return 1===e[0]&&e[1]<6?"Cupcake":1===e[0]&&e[1]>=6?"Donut":2===e[0]&&e[1]<2?"Eclair":2===e[0]&&2===e[1]?"Froyo":2===e[0]&&e[1]>2?"Gingerbread":3===e[0]?"Honeycomb":4===e[0]&&e[1]<1?"Ice Cream Sandwich":4===e[0]&&e[1]<4?"Jelly Bean":4===e[0]&&e[1]>=4?"KitKat":5===e[0]?"Lollipop":6===e[0]?"Marshmallow":7===e[0]?"Nougat":8===e[0]?"Oreo":9===e[0]?"Pie":void 0},t.getVersionPrecision=function(t){return t.split(".").length},t.compareVersions=function(e,n,r){void 0===r&&(r=!1);var i=t.getVersionPrecision(e),o=t.getVersionPrecision(n),u=Math.max(i,o),a=0,c=t.map([e,n],(function(e){var n=u-t.getVersionPrecision(e),r=e+new Array(n+1).join(".0");return t.map(r.split("."),(function(t){return new Array(20-t.length).join("0")+t})).reverse()}));for(r&&(a=u-Math.min(i,o)),u-=1;u>=a;){if(c[0][u]>c[1][u])return 1;if(c[0][u]===c[1][u]){if(u===a)return 0;u-=1}else if(c[0][u]1?i-1:0),u=1;u0?r:n)(t)}},function(t,e,n){var r=n(47),i=n(30),o=n(15),u=n(28),a=n(13),c=n(96),s=Object.getOwnPropertyDescriptor;e.f=n(8)?s:function(t,e){if(t=o(t),e=u(e,!0),c)try{return s(t,e)}catch(t){}if(a(t,e))return i(!r.f.call(t,e),t[e])}},function(t,e,n){var r=n(0),i=n(7),o=n(2);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],u={};u[t]=e(n),r(r.S+r.F*o((function(){n(1)})),"Object",u)}},function(t,e,n){var r=n(19),i=n(46),o=n(10),u=n(6),a=n(112);t.exports=function(t,e){var n=1==t,c=2==t,s=3==t,f=4==t,l=6==t,d=5==t||l,h=e||a;return function(e,a,v){for(var p,g,y=o(e),b=i(y),m=r(a,v,3),M=u(b.length),S=0,w=n?h(e,M):c?h(e,0):void 0;M>S;S++)if((d||S in b)&&(g=m(p=b[S],S,y),t))if(n)w[S]=g;else if(g)switch(t){case 3:return!0;case 5:return p;case 6:return S;case 2:w.push(p)}else if(f)return!1;return l?-1:s||f?f:w}}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";if(n(8)){var r=n(32),i=n(1),o=n(2),u=n(0),a=n(61),c=n(86),s=n(19),f=n(44),l=n(30),d=n(14),h=n(45),v=n(21),p=n(6),g=n(123),y=n(34),b=n(28),m=n(13),M=n(48),S=n(4),w=n(10),x=n(78),_=n(35),P=n(37),A=n(36).f,F=n(80),O=n(31),E=n(5),k=n(24),R=n(51),T=n(49),L=n(82),B=n(42),N=n(54),I=n(43),j=n(81),C=n(114),W=n(9),D=n(22),G=W.f,V=D.f,z=i.RangeError,U=i.TypeError,q=i.Uint8Array,Y=Array.prototype,H=c.ArrayBuffer,K=c.DataView,Q=k(0),J=k(2),X=k(3),$=k(4),Z=k(5),tt=k(6),et=R(!0),nt=R(!1),rt=L.values,it=L.keys,ot=L.entries,ut=Y.lastIndexOf,at=Y.reduce,ct=Y.reduceRight,st=Y.join,ft=Y.sort,lt=Y.slice,dt=Y.toString,ht=Y.toLocaleString,vt=E("iterator"),pt=E("toStringTag"),gt=O("typed_constructor"),yt=O("def_constructor"),bt=a.CONSTR,mt=a.TYPED,Mt=a.VIEW,St=k(1,(function(t,e){return At(T(t,t[yt]),e)})),wt=o((function(){return 1===new q(new Uint16Array([1]).buffer)[0]})),xt=!!q&&!!q.prototype.set&&o((function(){new q(1).set({})})),_t=function(t,e){var n=v(t);if(n<0||n%e)throw z("Wrong offset!");return n},Pt=function(t){if(S(t)&&mt in t)return t;throw U(t+" is not a typed array!")},At=function(t,e){if(!(S(t)&> in t))throw U("It is not a typed array constructor!");return new t(e)},Ft=function(t,e){return Ot(T(t,t[yt]),e)},Ot=function(t,e){for(var n=0,r=e.length,i=At(t,r);r>n;)i[n]=e[n++];return i},Et=function(t,e,n){G(t,e,{get:function(){return this._d[n]}})},kt=function(t){var e,n,r,i,o,u,a=w(t),c=arguments.length,f=c>1?arguments[1]:void 0,l=void 0!==f,d=F(a);if(null!=d&&!x(d)){for(u=d.call(a),r=[],e=0;!(o=u.next()).done;e++)r.push(o.value);a=r}for(l&&c>2&&(f=s(f,arguments[2],2)),e=0,n=p(a.length),i=At(this,n);n>e;e++)i[e]=l?f(a[e],e):a[e];return i},Rt=function(){for(var t=0,e=arguments.length,n=At(this,e);e>t;)n[t]=arguments[t++];return n},Tt=!!q&&o((function(){ht.call(new q(1))})),Lt=function(){return ht.apply(Tt?lt.call(Pt(this)):Pt(this),arguments)},Bt={copyWithin:function(t,e){return C.call(Pt(this),t,e,arguments.length>2?arguments[2]:void 0)},every:function(t){return $(Pt(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return j.apply(Pt(this),arguments)},filter:function(t){return Ft(this,J(Pt(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Z(Pt(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(Pt(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){Q(Pt(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return nt(Pt(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return et(Pt(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return st.apply(Pt(this),arguments)},lastIndexOf:function(t){return ut.apply(Pt(this),arguments)},map:function(t){return St(Pt(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return at.apply(Pt(this),arguments)},reduceRight:function(t){return ct.apply(Pt(this),arguments)},reverse:function(){for(var t,e=Pt(this).length,n=Math.floor(e/2),r=0;r1?arguments[1]:void 0)},sort:function(t){return ft.call(Pt(this),t)},subarray:function(t,e){var n=Pt(this),r=n.length,i=y(t,r);return new(T(n,n[yt]))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,p((void 0===e?r:y(e,r))-i))}},Nt=function(t,e){return Ft(this,lt.call(Pt(this),t,e))},It=function(t){Pt(this);var e=_t(arguments[1],1),n=this.length,r=w(t),i=p(r.length),o=0;if(i+e>n)throw z("Wrong length!");for(;o255?255:255&r),i.v[h](n*e+i.o,r,wt)}(this,n,t)},enumerable:!0})};m?(v=n((function(t,n,r,i){f(t,v,s,"_d");var o,u,a,c,l=0,h=0;if(S(n)){if(!(n instanceof H||"ArrayBuffer"==(c=M(n))||"SharedArrayBuffer"==c))return mt in n?Ot(v,n):kt.call(v,n);o=n,h=_t(r,e);var y=n.byteLength;if(void 0===i){if(y%e)throw z("Wrong length!");if((u=y-h)<0)throw z("Wrong length!")}else if((u=p(i)*e)+h>y)throw z("Wrong length!");a=u/e}else a=g(n),o=new H(u=a*e);for(d(t,"_d",{b:o,o:h,l:u,e:a,v:new K(o)});ldocument.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[o[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(a.prototype=r(t),n=new a,a.prototype=null,n[u]=t):n=c(),void 0===e?n:i(n,e)}},function(t,e,n){var r=n(98),i=n(65).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,i)}},function(t,e,n){var r=n(13),i=n(10),o=n(64)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,e,n){var r=n(5)("unscopables"),i=Array.prototype;null==i[r]&&n(14)(i,r,{}),t.exports=function(t){i[r][t]=!0}},function(t,e,n){var r=n(4);t.exports=function(t,e){if(!r(t)||t._t!==e)throw TypeError("Incompatible receiver, "+e+" required!");return t}},function(t,e,n){var r=n(9).f,i=n(13),o=n(5)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(0),i=n(26),o=n(2),u=n(68),a="["+u+"]",c=RegExp("^"+a+a+"*"),s=RegExp(a+a+"*$"),f=function(t,e,n){var i={},a=o((function(){return!!u[t]()||"​…"!="​…"[t]()})),c=i[t]=a?e(l):u[t];n&&(i[n]=c),r(r.P+r.F*a,"String",i)},l=f.trim=function(t,e){return t=String(i(t)),1&e&&(t=t.replace(c,"")),2&e&&(t=t.replace(s,"")),t};t.exports=f},function(t,e){t.exports={}},function(t,e,n){"use strict";var r=n(1),i=n(9),o=n(8),u=n(5)("species");t.exports=function(t){var e=r[t];o&&e&&!e[u]&&i.f(e,u,{configurable:!0,get:function(){return this}})}},function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},function(t,e,n){var r=n(11);t.exports=function(t,e,n){for(var i in e)r(t,i,e[i],n);return t}},function(t,e,n){var r=n(25);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},function(t,e){e.f={}.propertyIsEnumerable},function(t,e,n){var r=n(25),i=n(5)("toStringTag"),o="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?n:o?r(e):"Object"==(u=r(e))&&"function"==typeof e.callee?"Arguments":u}},function(t,e,n){var r=n(3),i=n(20),o=n(5)("species");t.exports=function(t,e){var n,u=r(t).constructor;return void 0===u||null==(n=r(u)[o])?e:i(n)}},function(t,e,n){var r=n(7),i=n(1),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(32)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e,n){var r=n(15),i=n(6),o=n(34);t.exports=function(t){return function(e,n,u){var a,c=r(e),s=i(c.length),f=o(u,s);if(t&&n!=n){for(;s>f;)if((a=c[f++])!=a)return!0}else for(;s>f;f++)if((t||f in c)&&c[f]===n)return t||f||0;return!t&&-1}}},function(t,e){e.f=Object.getOwnPropertySymbols},function(t,e,n){var r=n(25);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){var r=n(5)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var o=[7],u=o[r]();u.next=function(){return{done:n=!0}},o[r]=function(){return u},t(o)}catch(t){}return n}},function(t,e,n){"use strict";var r=n(3);t.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},function(t,e,n){"use strict";var r=n(48),i=RegExp.prototype.exec;t.exports=function(t,e){var n=t.exec;if("function"==typeof n){var o=n.call(t,e);if("object"!=typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==r(t))throw new TypeError("RegExp#exec called on incompatible receiver");return i.call(t,e)}},function(t,e,n){"use strict";n(116);var r=n(11),i=n(14),o=n(2),u=n(26),a=n(5),c=n(83),s=a("species"),f=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),l=function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();t.exports=function(t,e,n){var d=a(t),h=!o((function(){var e={};return e[d]=function(){return 7},7!=""[t](e)})),v=h?!o((function(){var e=!1,n=/a/;return n.exec=function(){return e=!0,null},"split"===t&&(n.constructor={},n.constructor[s]=function(){return n}),n[d](""),!e})):void 0;if(!h||!v||"replace"===t&&!f||"split"===t&&!l){var p=/./[d],g=n(u,d,""[t],(function(t,e,n,r,i){return e.exec===c?h&&!i?{done:!0,value:p.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}})),y=g[0],b=g[1];r(String.prototype,t,y),i(RegExp.prototype,d,2==e?function(t,e){return b.call(t,this,e)}:function(t){return b.call(t,this)})}}},function(t,e,n){var r=n(19),i=n(111),o=n(78),u=n(3),a=n(6),c=n(80),s={},f={};(e=t.exports=function(t,e,n,l,d){var h,v,p,g,y=d?function(){return t}:c(t),b=r(n,l,e?2:1),m=0;if("function"!=typeof y)throw TypeError(t+" is not iterable!");if(o(y)){for(h=a(t.length);h>m;m++)if((g=e?b(u(v=t[m])[0],v[1]):b(t[m]))===s||g===f)return g}else for(p=y.call(t);!(v=p.next()).done;)if((g=i(p,b,v.value,e))===s||g===f)return g}).BREAK=s,e.RETURN=f},function(t,e,n){var r=n(1).navigator;t.exports=r&&r.userAgent||""},function(t,e,n){"use strict";var r=n(1),i=n(0),o=n(11),u=n(45),a=n(29),c=n(58),s=n(44),f=n(4),l=n(2),d=n(54),h=n(40),v=n(69);t.exports=function(t,e,n,p,g,y){var b=r[t],m=b,M=g?"set":"add",S=m&&m.prototype,w={},x=function(t){var e=S[t];o(S,t,"delete"==t?function(t){return!(y&&!f(t))&&e.call(this,0===t?0:t)}:"has"==t?function(t){return!(y&&!f(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!f(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof m&&(y||S.forEach&&!l((function(){(new m).entries().next()})))){var _=new m,P=_[M](y?{}:-0,1)!=_,A=l((function(){_.has(1)})),F=d((function(t){new m(t)})),O=!y&&l((function(){for(var t=new m,e=5;e--;)t[M](e,e);return!t.has(-0)}));F||((m=e((function(e,n){s(e,m,t);var r=v(new b,e,m);return null!=n&&c(n,g,r[M],r),r}))).prototype=S,S.constructor=m),(A||O)&&(x("delete"),x("has"),g&&x("get")),(O||P)&&x(M),y&&S.clear&&delete S.clear}else m=p.getConstructor(e,t,g,M),u(m.prototype,n),a.NEED=!0;return h(m,t),w[t]=m,i(i.G+i.W+i.F*(m!=b),w),y||p.setStrong(m,t,g),m}},function(t,e,n){for(var r,i=n(1),o=n(14),u=n(31),a=u("typed_array"),c=u("view"),s=!(!i.ArrayBuffer||!i.DataView),f=s,l=0,d="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(r=i[d[l++]])?(o(r.prototype,a,!0),o(r.prototype,c,!0)):f=!1;t.exports={ABV:s,CONSTR:f,TYPED:a,VIEW:c}},function(t,e,n){var r=n(4),i=n(1).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,n){e.f=n(5)},function(t,e,n){var r=n(50)("keys"),i=n(31);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(1).document;t.exports=r&&r.documentElement},function(t,e,n){var r=n(4),i=n(3),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n(19)(Function.call,n(22).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return o(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:o}},function(t,e){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,e,n){var r=n(4),i=n(67).set;t.exports=function(t,e,n){var o,u=e.constructor;return u!==n&&"function"==typeof u&&(o=u.prototype)!==n.prototype&&r(o)&&i&&i(t,o),t}},function(t,e,n){"use strict";var r=n(21),i=n(26);t.exports=function(t){var e=String(i(this)),n="",o=r(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(e+=e))1&o&&(n+=e);return n}},function(t,e){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,e){var n=Math.expm1;t.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||-2e-17!=n(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:n},function(t,e,n){var r=n(21),i=n(26);t.exports=function(t){return function(e,n){var o,u,a=String(i(e)),c=r(n),s=a.length;return c<0||c>=s?t?"":void 0:(o=a.charCodeAt(c))<55296||o>56319||c+1===s||(u=a.charCodeAt(c+1))<56320||u>57343?t?a.charAt(c):o:t?a.slice(c,c+2):u-56320+(o-55296<<10)+65536}}},function(t,e,n){"use strict";var r=n(32),i=n(0),o=n(11),u=n(14),a=n(42),c=n(110),s=n(40),f=n(37),l=n(5)("iterator"),d=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,v,p,g,y){c(n,e,v);var b,m,M,S=function(t){if(!d&&t in P)return P[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},w=e+" Iterator",x="values"==p,_=!1,P=t.prototype,A=P[l]||P["@@iterator"]||p&&P[p],F=A||S(p),O=p?x?S("entries"):F:void 0,E="Array"==e&&P.entries||A;if(E&&(M=f(E.call(new t)))!==Object.prototype&&M.next&&(s(M,w,!0),r||"function"==typeof M[l]||u(M,l,h)),x&&A&&"values"!==A.name&&(_=!0,F=function(){return A.call(this)}),r&&!y||!d&&!_&&P[l]||u(P,l,F),a[e]=F,a[w]=h,p)if(b={values:x?F:S("values"),keys:g?F:S("keys"),entries:O},y)for(m in b)m in P||o(P,m,b[m]);else i(i.P+i.F*(d||_),e,b);return b}},function(t,e,n){var r=n(76),i=n(26);t.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return String(i(t))}},function(t,e,n){var r=n(4),i=n(25),o=n(5)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[o])?!!e:"RegExp"==i(t))}},function(t,e,n){var r=n(5)("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(t){}}return!0}},function(t,e,n){var r=n(42),i=n(5)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||o[i]===t)}},function(t,e,n){"use strict";var r=n(9),i=n(30);t.exports=function(t,e,n){e in t?r.f(t,e,i(0,n)):t[e]=n}},function(t,e,n){var r=n(48),i=n(5)("iterator"),o=n(42);t.exports=n(7).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[r(t)]}},function(t,e,n){"use strict";var r=n(10),i=n(34),o=n(6);t.exports=function(t){for(var e=r(this),n=o(e.length),u=arguments.length,a=i(u>1?arguments[1]:void 0,n),c=u>2?arguments[2]:void 0,s=void 0===c?n:i(c,n);s>a;)e[a++]=t;return e}},function(t,e,n){"use strict";var r=n(38),i=n(115),o=n(42),u=n(15);t.exports=n(74)(Array,"Array",(function(t,e){this._t=u(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(t,e,n){"use strict";var r,i,o=n(55),u=RegExp.prototype.exec,a=String.prototype.replace,c=u,s=(r=/a/,i=/b*/g,u.call(r,"a"),u.call(i,"a"),0!==r.lastIndex||0!==i.lastIndex),f=void 0!==/()??/.exec("")[1];(s||f)&&(c=function(t){var e,n,r,i,c=this;return f&&(n=new RegExp("^"+c.source+"$(?!\\s)",o.call(c))),s&&(e=c.lastIndex),r=u.call(c,t),s&&r&&(c.lastIndex=c.global?r.index+r[0].length:e),f&&r&&r.length>1&&a.call(r[0],n,(function(){for(i=1;in;)e.push(arguments[n++]);return y[++g]=function(){a("function"==typeof t?t:Function(t),e)},r(g),g},h=function(t){delete y[t]},"process"==n(25)(l)?r=function(t){l.nextTick(u(b,t,1))}:p&&p.now?r=function(t){p.now(u(b,t,1))}:v?(o=(i=new v).port2,i.port1.onmessage=m,r=u(o.postMessage,o,1)):f.addEventListener&&"function"==typeof postMessage&&!f.importScripts?(r=function(t){f.postMessage(t+"","*")},f.addEventListener("message",m,!1)):r="onreadystatechange"in s("script")?function(t){c.appendChild(s("script")).onreadystatechange=function(){c.removeChild(this),b.call(t)}}:function(t){setTimeout(u(b,t,1),0)}),t.exports={set:d,clear:h}},function(t,e,n){"use strict";var r=n(1),i=n(8),o=n(32),u=n(61),a=n(14),c=n(45),s=n(2),f=n(44),l=n(21),d=n(6),h=n(123),v=n(36).f,p=n(9).f,g=n(81),y=n(40),b="prototype",m="Wrong index!",M=r.ArrayBuffer,S=r.DataView,w=r.Math,x=r.RangeError,_=r.Infinity,P=M,A=w.abs,F=w.pow,O=w.floor,E=w.log,k=w.LN2,R=i?"_b":"buffer",T=i?"_l":"byteLength",L=i?"_o":"byteOffset";function B(t,e,n){var r,i,o,u=new Array(n),a=8*n-e-1,c=(1<>1,f=23===e?F(2,-24)-F(2,-77):0,l=0,d=t<0||0===t&&1/t<0?1:0;for((t=A(t))!=t||t===_?(i=t!=t?1:0,r=c):(r=O(E(t)/k),t*(o=F(2,-r))<1&&(r--,o*=2),(t+=r+s>=1?f/o:f*F(2,1-s))*o>=2&&(r++,o/=2),r+s>=c?(i=0,r=c):r+s>=1?(i=(t*o-1)*F(2,e),r+=s):(i=t*F(2,s-1)*F(2,e),r=0));e>=8;u[l++]=255&i,i/=256,e-=8);for(r=r<0;u[l++]=255&r,r/=256,a-=8);return u[--l]|=128*d,u}function N(t,e,n){var r,i=8*n-e-1,o=(1<>1,a=i-7,c=n-1,s=t[c--],f=127&s;for(s>>=7;a>0;f=256*f+t[c],c--,a-=8);for(r=f&(1<<-a)-1,f>>=-a,a+=e;a>0;r=256*r+t[c],c--,a-=8);if(0===f)f=1-u;else{if(f===o)return r?NaN:s?-_:_;r+=F(2,e),f-=u}return(s?-1:1)*r*F(2,f-e)}function I(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function j(t){return[255&t]}function C(t){return[255&t,t>>8&255]}function W(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function D(t){return B(t,52,8)}function G(t){return B(t,23,4)}function V(t,e,n){p(t[b],e,{get:function(){return this[n]}})}function z(t,e,n,r){var i=h(+n);if(i+e>t[T])throw x(m);var o=t[R]._b,u=i+t[L],a=o.slice(u,u+e);return r?a:a.reverse()}function U(t,e,n,r,i,o){var u=h(+n);if(u+e>t[T])throw x(m);for(var a=t[R]._b,c=u+t[L],s=r(+i),f=0;fK;)(q=H[K++])in M||a(M,q,P[q]);o||(Y.constructor=M)}var Q=new S(new M(2)),J=S[b].setInt8;Q.setInt8(0,2147483648),Q.setInt8(1,2147483649),!Q.getInt8(0)&&Q.getInt8(1)||c(S[b],{setInt8:function(t,e){J.call(this,t,e<<24>>24)},setUint8:function(t,e){J.call(this,t,e<<24>>24)}},!0)}else M=function(t){f(this,M,"ArrayBuffer");var e=h(t);this._b=g.call(new Array(e),0),this[T]=e},S=function(t,e,n){f(this,S,"DataView"),f(t,M,"DataView");var r=t[T],i=l(e);if(i<0||i>r)throw x("Wrong offset!");if(i+(n=void 0===n?r-i:d(n))>r)throw x("Wrong length!");this[R]=t,this[L]=i,this[T]=n},i&&(V(M,"byteLength","_l"),V(S,"buffer","_b"),V(S,"byteLength","_l"),V(S,"byteOffset","_o")),c(S[b],{getInt8:function(t){return z(this,1,t)[0]<<24>>24},getUint8:function(t){return z(this,1,t)[0]},getInt16:function(t){var e=z(this,2,t,arguments[1]);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=z(this,2,t,arguments[1]);return e[1]<<8|e[0]},getInt32:function(t){return I(z(this,4,t,arguments[1]))},getUint32:function(t){return I(z(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return N(z(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return N(z(this,8,t,arguments[1]),52,8)},setInt8:function(t,e){U(this,1,t,j,e)},setUint8:function(t,e){U(this,1,t,j,e)},setInt16:function(t,e){U(this,2,t,C,e,arguments[2])},setUint16:function(t,e){U(this,2,t,C,e,arguments[2])},setInt32:function(t,e){U(this,4,t,W,e,arguments[2])},setUint32:function(t,e){U(this,4,t,W,e,arguments[2])},setFloat32:function(t,e){U(this,4,t,G,e,arguments[2])},setFloat64:function(t,e){U(this,8,t,D,e,arguments[2])}});y(M,"ArrayBuffer"),y(S,"DataView"),a(S[b],u.VIEW,!0),e.ArrayBuffer=M,e.DataView=S},function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e,n){t.exports=!n(128)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(91))&&r.__esModule?r:{default:r},o=n(18);function u(t,e){for(var n=0;n0){var u=Object.keys(n),c=a.default.find(u,(function(t){return e.isOS(t)}));if(c){var s=this.satisfies(n[c]);if(void 0!==s)return s}var f=a.default.find(u,(function(t){return e.isPlatform(t)}));if(f){var l=this.satisfies(n[f]);if(void 0!==l)return l}}if(o>0){var d=Object.keys(i),h=a.default.find(d,(function(t){return e.isBrowser(t,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},e.isBrowser=function(t,e){void 0===e&&(e=!1);var n=this.getBrowserName().toLowerCase(),r=t.toLowerCase(),i=a.default.getBrowserTypeByAlias(r);return e&&i&&(r=i.toLowerCase()),r===n},e.compareVersion=function(t){var e=[0],n=t,r=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===t[0]||"<"===t[0]?(n=t.substr(1),"="===t[1]?(r=!0,n=t.substr(2)):e=[],">"===t[0]?e.push(1):e.push(-1)):"="===t[0]?n=t.substr(1):"~"===t[0]&&(r=!0,n=t.substr(1)),e.indexOf(a.default.compareVersions(i,n,r))>-1},e.isOS=function(t){return this.getOSName(!0)===String(t).toLowerCase()},e.isPlatform=function(t){return this.getPlatformType(!0)===String(t).toLowerCase()},e.isEngine=function(t){return this.getEngineName(!0)===String(t).toLowerCase()},e.is=function(t,e){return void 0===e&&(e=!1),this.isBrowser(t,e)||this.isOS(t)||this.isPlatform(t)},e.some=function(t){var e=this;return void 0===t&&(t=[]),t.some((function(t){return e.is(t)}))},t}();e.default=s,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r};var o=/version\/(\d+(\.?_?\d+)+)/i,u=[{test:[/gptbot/i],describe:function(t){var e={name:"GPTBot"},n=i.default.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/chatgpt-user/i],describe:function(t){var e={name:"ChatGPT-User"},n=i.default.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/oai-searchbot/i],describe:function(t){var e={name:"OAI-SearchBot"},n=i.default.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(t){var e={name:"ClaudeBot"},n=i.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(t){var e={name:"Omgilibot"},n=i.default.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/diffbot/i],describe:function(t){var e={name:"Diffbot"},n=i.default.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/perplexitybot/i],describe:function(t){var e={name:"PerplexityBot"},n=i.default.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/perplexity-user/i],describe:function(t){var e={name:"Perplexity-User"},n=i.default.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/youbot/i],describe:function(t){var e={name:"YouBot"},n=i.default.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/meta-webindexer/i],describe:function(t){var e={name:"Meta-WebIndexer"},n=i.default.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/meta-externalads/i],describe:function(t){var e={name:"Meta-ExternalAds"},n=i.default.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/meta-externalagent/i],describe:function(t){var e={name:"Meta-ExternalAgent"},n=i.default.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/meta-externalfetcher/i],describe:function(t){var e={name:"Meta-ExternalFetcher"},n=i.default.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/googlebot/i],describe:function(t){var e={name:"Googlebot"},n=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/linespider/i],describe:function(t){var e={name:"Linespider"},n=i.default.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/amazonbot/i],describe:function(t){var e={name:"AmazonBot"},n=i.default.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/bingbot/i],describe:function(t){var e={name:"BingCrawler"},n=i.default.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/baiduspider/i],describe:function(t){var e={name:"BaiduSpider"},n=i.default.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/duckduckbot/i],describe:function(t){var e={name:"DuckDuckBot"},n=i.default.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/ia_archiver/i],describe:function(t){var e={name:"InternetArchiveCrawler"},n=i.default.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{name:"FacebookExternalHit"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(t){var e={name:"SlackBot"},n=i.default.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/yahoo!?[\s/]*slurp/i],describe:function(){return{name:"YahooSlurp"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{name:"YandexBot"}}},{test:[/pingdom/i],describe:function(){return{name:"PingdomBot"}}},{test:[/opera/i],describe:function(t){var e={name:"Opera"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/opr\/|opios/i],describe:function(t){var e={name:"Opera"},n=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/SamsungBrowser/i],describe:function(t){var e={name:"Samsung Internet for Android"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/Whale/i],describe:function(t){var e={name:"NAVER Whale Browser"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/PaleMoon/i],describe:function(t){var e={name:"Pale Moon"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/MZBrowser/i],describe:function(t){var e={name:"MZ Browser"},n=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/focus/i],describe:function(t){var e={name:"Focus"},n=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/swing/i],describe:function(t){var e={name:"Swing"},n=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/coast/i],describe:function(t){var e={name:"Opera Coast"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(t){var e={name:"Opera Touch"},n=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/yabrowser/i],describe:function(t){var e={name:"Yandex Browser"},n=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/ucbrowser/i],describe:function(t){var e={name:"UC Browser"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/Maxthon|mxios/i],describe:function(t){var e={name:"Maxthon"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/epiphany/i],describe:function(t){var e={name:"Epiphany"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/puffin/i],describe:function(t){var e={name:"Puffin"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/sleipnir/i],describe:function(t){var e={name:"Sleipnir"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/k-meleon/i],describe:function(t){var e={name:"K-Meleon"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/micromessenger/i],describe:function(t){var e={name:"WeChat"},n=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/qqbrowser/i],describe:function(t){var e={name:/qqbrowserlite/i.test(t)?"QQ Browser Lite":"QQ Browser"},n=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/msie|trident/i],describe:function(t){var e={name:"Internet Explorer"},n=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/\sedg\//i],describe:function(t){var e={name:"Microsoft Edge"},n=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/edg([ea]|ios)/i],describe:function(t){var e={name:"Microsoft Edge"},n=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/vivaldi/i],describe:function(t){var e={name:"Vivaldi"},n=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/seamonkey/i],describe:function(t){var e={name:"SeaMonkey"},n=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/sailfish/i],describe:function(t){var e={name:"Sailfish"},n=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,t);return n&&(e.version=n),e}},{test:[/silk/i],describe:function(t){var e={name:"Amazon Silk"},n=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/phantom/i],describe:function(t){var e={name:"PhantomJS"},n=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/slimerjs/i],describe:function(t){var e={name:"SlimerJS"},n=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e={name:"BlackBerry"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e={name:"WebOS Browser"},n=i.default.getFirstMatch(o,t)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/bada/i],describe:function(t){var e={name:"Bada"},n=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/tizen/i],describe:function(t){var e={name:"Tizen"},n=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/qupzilla/i],describe:function(t){var e={name:"QupZilla"},n=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/librewolf/i],describe:function(t){var e={name:"LibreWolf"},n=i.default.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/firefox|iceweasel|fxios/i],describe:function(t){var e={name:"Firefox"},n=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/electron/i],describe:function(t){var e={name:"Electron"},n=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/sogoumobilebrowser/i,/metasr/i,/se 2\.[x]/i],describe:function(t){var e={name:"Sogou Browser"},n=i.default.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i,t),r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t),o=i.default.getFirstMatch(/se ([\d.]+)x/i,t),u=n||r||o;return u&&(e.version=u),e}},{test:[/MiuiBrowser/i],describe:function(t){var e={name:"Miui"},n=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:function(t){return!!t.hasBrand("DuckDuckGo")||t.test(/\sDdg\/[\d.]+$/i)},describe:function(t,e){var n={name:"DuckDuckGo"};if(e){var r=e.getBrandVersion("DuckDuckGo");if(r)return n.version=r,n}var o=i.default.getFirstMatch(/\sDdg\/([\d.]+)$/i,t);return o&&(n.version=o),n}},{test:function(t){return t.hasBrand("Brave")},describe:function(t,e){var n={name:"Brave"};if(e){var r=e.getBrandVersion("Brave");if(r)return n.version=r,n}return n}},{test:[/chromium/i],describe:function(t){var e={name:"Chromium"},n=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,t)||i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/chrome|crios|crmo/i],describe:function(t){var e={name:"Chrome"},n=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/GSA/i],describe:function(t){var e={name:"Google Search"},n=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:function(t){var e=!t.test(/like android/i),n=t.test(/android/i);return e&&n},describe:function(t){var e={name:"Android Browser"},n=i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/playstation 4/i],describe:function(t){var e={name:"PlayStation 4"},n=i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/safari|applewebkit/i],describe:function(t){var e={name:"Safari"},n=i.default.getFirstMatch(o,t);return n&&(e.version=n),e}},{test:[/.*/i],describe:function(t){var e=-1!==t.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(e,t),version:i.default.getSecondMatch(e,t)}}}];e.default=u,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=n(18);var u=[{test:[/Roku\/DVP/],describe:function(t){var e=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,t);return{name:o.OS_MAP.Roku,version:e}}},{test:[/windows phone/i],describe:function(t){var e=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.WindowsPhone,version:e}}},{test:[/windows /i],describe:function(t){var e=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,t),n=i.default.getWindowsVersionName(e);return{name:o.OS_MAP.Windows,version:e,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(t){var e={name:o.OS_MAP.iOS},n=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,t);return n&&(e.version=n),e}},{test:[/macintosh/i],describe:function(t){var e=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,t).replace(/[_\s]/g,"."),n=i.default.getMacOSVersionName(e),r={name:o.OS_MAP.MacOS,version:e};return n&&(r.versionName=n),r}},{test:[/(ipod|iphone|ipad)/i],describe:function(t){var e=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,t).replace(/[_\s]/g,".");return{name:o.OS_MAP.iOS,version:e}}},{test:[/OpenHarmony/i],describe:function(t){var e=i.default.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.HarmonyOS,version:e}}},{test:function(t){var e=!t.test(/like android/i),n=t.test(/android/i);return e&&n},describe:function(t){var e=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,t),n=i.default.getAndroidVersionName(e),r={name:o.OS_MAP.Android,version:e};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe:function(t){var e=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,t),n={name:o.OS_MAP.WebOS};return e&&e.length&&(n.version=e),n}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(t){var e=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,t)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,t)||i.default.getFirstMatch(/\bbb(\d+)/i,t);return{name:o.OS_MAP.BlackBerry,version:e}}},{test:[/bada/i],describe:function(t){var e=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.Bada,version:e}}},{test:[/tizen/i],describe:function(t){var e=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.Tizen,version:e}}},{test:[/linux/i],describe:function(){return{name:o.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:o.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(t){var e=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,t);return{name:o.OS_MAP.PlayStation4,version:e}}}];e.default=u,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=n(18);var u=[{test:[/googlebot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Google"}}},{test:[/linespider/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Line"}}},{test:[/amazonbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Amazon"}}},{test:[/gptbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/chatgpt-user/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/oai-searchbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/baiduspider/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Baidu"}}},{test:[/bingbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Bing"}}},{test:[/duckduckbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"DuckDuckGo"}}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Anthropic"}}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Webz.io"}}},{test:[/diffbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Diffbot"}}},{test:[/perplexitybot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/perplexity-user/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/youbot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"You.com"}}},{test:[/ia_archiver/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Internet Archive"}}},{test:[/meta-webindexer/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalads/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalagent/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalfetcher/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Slack"}}},{test:[/yahoo/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Yahoo"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Yandex"}}},{test:[/pingdom/i],describe:function(){return{type:o.PLATFORMS_MAP.bot,vendor:"Pingdom"}}},{test:[/huawei/i],describe:function(t){var e=i.default.getFirstMatch(/(can-l01)/i,t)&&"Nova",n={type:o.PLATFORMS_MAP.mobile,vendor:"Huawei"};return e&&(n.model=e),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(t){var e=t.test(/ipod|iphone/i),n=t.test(/like (ipod|iphone)/i);return e&&!n},describe:function(t){var e=i.default.getFirstMatch(/(ipod|iphone)/i,t);return{type:o.PLATFORMS_MAP.mobile,vendor:"Apple",model:e}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/Nokia/i],describe:function(t){var e=i.default.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i,t),n={type:o.PLATFORMS_MAP.mobile,vendor:"Nokia"};return e&&(n.model=e),n}},{test:[/[^-]mobi/i],describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(t){return"blackberry"===t.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(t){return"bada"===t.getBrowserName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:function(t){return"windows phone"===t.getBrowserName()},describe:function(){return{type:o.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(t){var e=Number(String(t.getOSVersion()).split(".")[0]);return"android"===t.getOSName(!0)&&e>=3},describe:function(){return{type:o.PLATFORMS_MAP.tablet}}},{test:function(t){return"android"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.mobile}}},{test:[/smart-?tv|smarttv/i],describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:[/netcast/i],describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(t){return"macos"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(t){return"windows"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(t){return"linux"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.desktop}}},{test:function(t){return"playstation 4"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}},{test:function(t){return"roku"===t.getOSName(!0)},describe:function(){return{type:o.PLATFORMS_MAP.tv}}}];e.default=u,t.exports=e.default},function(t,e,n){"use strict";e.__esModule=!0,e.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},o=n(18);var u=[{test:function(t){return"microsoft edge"===t.getBrowserName(!0)},describe:function(t){if(/\sedg\//i.test(t))return{name:o.ENGINE_MAP.Blink};var e=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,t);return{name:o.ENGINE_MAP.EdgeHTML,version:e}}},{test:[/trident/i],describe:function(t){var e={name:o.ENGINE_MAP.Trident},n=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:function(t){return t.test(/presto/i)},describe:function(t){var e={name:o.ENGINE_MAP.Presto},n=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:function(t){var e=t.test(/gecko/i),n=t.test(/like gecko/i);return e&&!n},describe:function(t){var e={name:o.ENGINE_MAP.Gecko},n=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:o.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(t){var e={name:o.ENGINE_MAP.WebKit},n=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,t);return n&&(e.version=n),e}}];e.default=u,t.exports=e.default},function(t,e,n){t.exports=!n(8)&&!n(2)((function(){return 7!=Object.defineProperty(n(62)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(1),i=n(7),o=n(32),u=n(63),a=n(9).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:u.f(t)})}},function(t,e,n){var r=n(13),i=n(15),o=n(51)(!1),u=n(64)("IE_PROTO");t.exports=function(t,e){var n,a=i(t),c=0,s=[];for(n in a)n!=u&&r(a,n)&&s.push(n);for(;e.length>c;)r(a,n=e[c++])&&(~o(s,n)||s.push(n));return s}},function(t,e,n){var r=n(9),i=n(3),o=n(33);t.exports=n(8)?Object.defineProperties:function(t,e){i(t);for(var n,u=o(e),a=u.length,c=0;a>c;)r.f(t,n=u[c++],e[n]);return t}},function(t,e,n){var r=n(15),i=n(36).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"[object Window]"==o.call(t)?function(t){try{return i(t)}catch(t){return u.slice()}}(t):i(r(t))}},function(t,e,n){"use strict";var r=n(8),i=n(33),o=n(52),u=n(47),a=n(10),c=n(46),s=Object.assign;t.exports=!s||n(2)((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=s({},t)[n]||Object.keys(s({},e)).join("")!=r}))?function(t,e){for(var n=a(t),s=arguments.length,f=1,l=o.f,d=u.f;s>f;)for(var h,v=c(arguments[f++]),p=l?i(v).concat(l(v)):i(v),g=p.length,y=0;g>y;)h=p[y++],r&&!d.call(v,h)||(n[h]=v[h]);return n}:s},function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},function(t,e,n){"use strict";var r=n(20),i=n(4),o=n(104),u=[].slice,a={},c=function(t,e,n){if(!(e in a)){for(var r=[],i=0;i>>0||(u.test(n)?16:10))}:r},function(t,e,n){var r=n(1).parseFloat,i=n(41).trim;t.exports=1/r(n(68)+"-0")!=-1/0?function(t){var e=i(String(t),3),n=r(e);return 0===n&&"-"==e.charAt(0)?-0:n}:r},function(t,e,n){var r=n(25);t.exports=function(t,e){if("number"!=typeof t&&"Number"!=r(t))throw TypeError(e);return+t}},function(t,e,n){var r=n(4),i=Math.floor;t.exports=function(t){return!r(t)&&isFinite(t)&&i(t)===t}},function(t,e){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,e,n){"use strict";var r=n(35),i=n(30),o=n(40),u={};n(14)(u,n(5)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(u,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var r=n(3);t.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(e){var o=t.return;throw void 0!==o&&r(o.call(t)),e}}},function(t,e,n){var r=n(224);t.exports=function(t,e){return new(r(t))(e)}},function(t,e,n){var r=n(20),i=n(10),o=n(46),u=n(6);t.exports=function(t,e,n,a,c){r(e);var s=i(t),f=o(s),l=u(s.length),d=c?l-1:0,h=c?-1:1;if(n<2)for(;;){if(d in f){a=f[d],d+=h;break}if(d+=h,c?d<0:l<=d)throw TypeError("Reduce of empty array with no initial value")}for(;c?d>=0:l>d;d+=h)d in f&&(a=e(a,f[d],d,s));return a}},function(t,e,n){"use strict";var r=n(10),i=n(34),o=n(6);t.exports=[].copyWithin||function(t,e){var n=r(this),u=o(n.length),a=i(t,u),c=i(e,u),s=arguments.length>2?arguments[2]:void 0,f=Math.min((void 0===s?u:i(s,u))-c,u-a),l=1;for(c0;)c in n?n[a]=n[c]:delete n[a],a+=l,c+=l;return n}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){"use strict";var r=n(83);n(0)({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},function(t,e,n){n(8)&&"g"!=/./g.flags&&n(9).f(RegExp.prototype,"flags",{configurable:!0,get:n(55)})},function(t,e,n){"use strict";var r,i,o,u,a=n(32),c=n(1),s=n(19),f=n(48),l=n(0),d=n(4),h=n(20),v=n(44),p=n(58),g=n(49),y=n(85).set,b=n(244)(),m=n(119),M=n(245),S=n(59),w=n(120),x=c.TypeError,_=c.process,P=_&&_.versions,A=P&&P.v8||"",F=c.Promise,O="process"==f(_),E=function(){},k=i=m.f,R=!!function(){try{var t=F.resolve(1),e=(t.constructor={})[n(5)("species")]=function(t){t(E,E)};return(O||"function"==typeof PromiseRejectionEvent)&&t.then(E)instanceof e&&0!==A.indexOf("6.6")&&-1===S.indexOf("Chrome/66")}catch(t){}}(),T=function(t){var e;return!(!d(t)||"function"!=typeof(e=t.then))&&e},L=function(t,e){if(!t._n){t._n=!0;var n=t._c;b((function(){for(var r=t._v,i=1==t._s,o=0,u=function(e){var n,o,u,a=i?e.ok:e.fail,c=e.resolve,s=e.reject,f=e.domain;try{a?(i||(2==t._h&&I(t),t._h=1),!0===a?n=r:(f&&f.enter(),n=a(r),f&&(f.exit(),u=!0)),n===e.promise?s(x("Promise-chain cycle")):(o=T(n))?o.call(n,c,s):c(n)):s(r)}catch(t){f&&!u&&f.exit(),s(t)}};n.length>o;)u(n[o++]);t._c=[],t._n=!1,e&&!t._h&&B(t)}))}},B=function(t){y.call(c,(function(){var e,n,r,i=t._v,o=N(t);if(o&&(e=M((function(){O?_.emit("unhandledRejection",i,t):(n=c.onunhandledrejection)?n({promise:t,reason:i}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",i)})),t._h=O||N(t)?2:1),t._a=void 0,o&&e.e)throw e.v}))},N=function(t){return 1!==t._h&&0===(t._a||t._c).length},I=function(t){y.call(c,(function(){var e;O?_.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})}))},j=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),L(e,!0))},C=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw x("Promise can't be resolved itself");(e=T(t))?b((function(){var r={_w:n,_d:!1};try{e.call(t,s(C,r,1),s(j,r,1))}catch(t){j.call(r,t)}})):(n._v=t,n._s=1,L(n,!1))}catch(t){j.call({_w:n,_d:!1},t)}}};R||(F=function(t){v(this,F,"Promise","_h"),h(t),r.call(this);try{t(s(C,this,1),s(j,this,1))}catch(t){j.call(this,t)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(45)(F.prototype,{then:function(t,e){var n=k(g(this,F));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=O?_.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&L(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new r;this.promise=t,this.resolve=s(C,t,1),this.reject=s(j,t,1)},m.f=k=function(t){return t===F||t===u?new o(t):i(t)}),l(l.G+l.W+l.F*!R,{Promise:F}),n(40)(F,"Promise"),n(43)("Promise"),u=n(7).Promise,l(l.S+l.F*!R,"Promise",{reject:function(t){var e=k(this);return(0,e.reject)(t),e.promise}}),l(l.S+l.F*(a||!R),"Promise",{resolve:function(t){return w(a&&this===u?F:this,t)}}),l(l.S+l.F*!(R&&n(54)((function(t){F.all(t).catch(E)}))),"Promise",{all:function(t){var e=this,n=k(e),r=n.resolve,i=n.reject,o=M((function(){var n=[],o=0,u=1;p(t,!1,(function(t){var a=o++,c=!1;n.push(void 0),u++,e.resolve(t).then((function(t){c||(c=!0,n[a]=t,--u||r(n))}),i)})),--u||r(n)}));return o.e&&i(o.v),n.promise},race:function(t){var e=this,n=k(e),r=n.reject,i=M((function(){p(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return i.e&&r(i.v),n.promise}})},function(t,e,n){"use strict";var r=n(20);function i(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new i(t)}},function(t,e,n){var r=n(3),i=n(4),o=n(119);t.exports=function(t,e){if(r(t),i(e)&&e.constructor===t)return e;var n=o.f(t);return(0,n.resolve)(e),n.promise}},function(t,e,n){"use strict";var r=n(9).f,i=n(35),o=n(45),u=n(19),a=n(44),c=n(58),s=n(74),f=n(115),l=n(43),d=n(8),h=n(29).fastKey,v=n(39),p=d?"_s":"size",g=function(t,e){var n,r=h(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};t.exports={getConstructor:function(t,e,n,s){var f=t((function(t,r){a(t,f,e,"_i"),t._t=e,t._i=i(null),t._f=void 0,t._l=void 0,t[p]=0,null!=r&&c(r,n,t[s],t)}));return o(f.prototype,{clear:function(){for(var t=v(this,e),n=t._i,r=t._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];t._f=t._l=void 0,t[p]=0},delete:function(t){var n=v(this,e),r=g(n,t);if(r){var i=r.n,o=r.p;delete n._i[r.i],r.r=!0,o&&(o.n=i),i&&(i.p=o),n._f==r&&(n._f=i),n._l==r&&(n._l=o),n[p]--}return!!r},forEach:function(t){v(this,e);for(var n,r=u(t,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(t){return!!g(v(this,e),t)}}),d&&r(f.prototype,"size",{get:function(){return v(this,e)[p]}}),f},def:function(t,e,n){var r,i,o=g(t,e);return o?o.v=n:(t._l=o={i:i=h(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=o),r&&(r.n=o),t[p]++,"F"!==i&&(t._i[i]=o)),t},getEntry:g,setStrong:function(t,e,n){s(t,e,(function(t,n){this._t=v(t,e),this._k=n,this._l=void 0}),(function(){for(var t=this._k,e=this._l;e&&e.r;)e=e.p;return this._t&&(this._l=e=e?e.n:this._t._f)?f(0,"keys"==t?e.k:"values"==t?e.v:[e.k,e.v]):(this._t=void 0,f(1))}),n?"entries":"values",!n,!0),l(e)}}},function(t,e,n){"use strict";var r=n(45),i=n(29).getWeak,o=n(3),u=n(4),a=n(44),c=n(58),s=n(24),f=n(13),l=n(39),d=s(5),h=s(6),v=0,p=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},y=function(t,e){return d(t.a,(function(t){return t[0]===e}))};g.prototype={get:function(t){var e=y(this,t);if(e)return e[1]},has:function(t){return!!y(this,t)},set:function(t,e){var n=y(this,t);n?n[1]=e:this.a.push([t,e])},delete:function(t){var e=h(this.a,(function(e){return e[0]===t}));return~e&&this.a.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,o){var s=t((function(t,r){a(t,s,e,"_i"),t._t=e,t._i=v++,t._l=void 0,null!=r&&c(r,n,t[o],t)}));return r(s.prototype,{delete:function(t){if(!u(t))return!1;var n=i(t);return!0===n?p(l(this,e)).delete(t):n&&f(n,this._i)&&delete n[this._i]},has:function(t){if(!u(t))return!1;var n=i(t);return!0===n?p(l(this,e)).has(t):n&&f(n,this._i)}}),s},def:function(t,e,n){var r=i(o(e),!0);return!0===r?p(t).set(e,n):r[t._i]=n,t},ufstore:p}},function(t,e,n){var r=n(21),i=n(6);t.exports=function(t){if(void 0===t)return 0;var e=r(t),n=i(e);if(e!==n)throw RangeError("Wrong length!");return n}},function(t,e,n){var r=n(36),i=n(52),o=n(3),u=n(1).Reflect;t.exports=u&&u.ownKeys||function(t){var e=r.f(o(t)),n=i.f;return n?e.concat(n(t)):e}},function(t,e,n){var r=n(6),i=n(70),o=n(26);t.exports=function(t,e,n,u){var a=String(o(t)),c=a.length,s=void 0===n?" ":String(n),f=r(e);if(f<=c||""==s)return a;var l=f-c,d=i.call(s,Math.ceil(l/s.length));return d.length>l&&(d=d.slice(0,l)),u?d+a:a+d}},function(t,e,n){var r=n(8),i=n(33),o=n(15),u=n(47).f;t.exports=function(t){return function(e){for(var n,a=o(e),c=i(a),s=c.length,f=0,l=[];s>f;)n=c[f++],r&&!u.call(a,n)||l.push(t?[n,a[n]]:a[n]);return l}}},function(t,e){var n=t.exports={version:"2.6.9"};"number"==typeof __e&&(__e=n)},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){n(130),t.exports=n(90)},function(t,e,n){"use strict";n(131);var r,i=(r=n(303))&&r.__esModule?r:{default:r};i.default._babelPolyfill&&"undefined"!=typeof console&&console.warn&&console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning."),i.default._babelPolyfill=!0},function(t,e,n){"use strict";n(132),n(275),n(277),n(280),n(282),n(284),n(286),n(288),n(290),n(292),n(294),n(296),n(298),n(302)},function(t,e,n){n(133),n(136),n(137),n(138),n(139),n(140),n(141),n(142),n(143),n(144),n(145),n(146),n(147),n(148),n(149),n(150),n(151),n(152),n(153),n(154),n(155),n(156),n(157),n(158),n(159),n(160),n(161),n(162),n(163),n(164),n(165),n(166),n(167),n(168),n(169),n(170),n(171),n(172),n(173),n(174),n(175),n(176),n(177),n(179),n(180),n(181),n(182),n(183),n(184),n(185),n(186),n(187),n(188),n(189),n(190),n(191),n(192),n(193),n(194),n(195),n(196),n(197),n(198),n(199),n(200),n(201),n(202),n(203),n(204),n(205),n(206),n(207),n(208),n(209),n(210),n(211),n(212),n(214),n(215),n(217),n(218),n(219),n(220),n(221),n(222),n(223),n(225),n(226),n(227),n(228),n(229),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(82),n(238),n(116),n(239),n(117),n(240),n(241),n(242),n(243),n(118),n(246),n(247),n(248),n(249),n(250),n(251),n(252),n(253),n(254),n(255),n(256),n(257),n(258),n(259),n(260),n(261),n(262),n(263),n(264),n(265),n(266),n(267),n(268),n(269),n(270),n(271),n(272),n(273),n(274),t.exports=n(7)},function(t,e,n){"use strict";var r=n(1),i=n(13),o=n(8),u=n(0),a=n(11),c=n(29).KEY,s=n(2),f=n(50),l=n(40),d=n(31),h=n(5),v=n(63),p=n(97),g=n(135),y=n(53),b=n(3),m=n(4),M=n(10),S=n(15),w=n(28),x=n(30),_=n(35),P=n(100),A=n(22),F=n(52),O=n(9),E=n(33),k=A.f,R=O.f,T=P.f,L=r.Symbol,B=r.JSON,N=B&&B.stringify,I=h("_hidden"),j=h("toPrimitive"),C={}.propertyIsEnumerable,W=f("symbol-registry"),D=f("symbols"),G=f("op-symbols"),V=Object.prototype,z="function"==typeof L&&!!F.f,U=r.QObject,q=!U||!U.prototype||!U.prototype.findChild,Y=o&&s((function(){return 7!=_(R({},"a",{get:function(){return R(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=k(V,e);r&&delete V[e],R(t,e,n),r&&t!==V&&R(V,e,r)}:R,H=function(t){var e=D[t]=_(L.prototype);return e._k=t,e},K=z&&"symbol"==typeof L.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof L},Q=function(t,e,n){return t===V&&Q(G,e,n),b(t),e=w(e,!0),b(n),i(D,e)?(n.enumerable?(i(t,I)&&t[I][e]&&(t[I][e]=!1),n=_(n,{enumerable:x(0,!1)})):(i(t,I)||R(t,I,x(1,{})),t[I][e]=!0),Y(t,e,n)):R(t,e,n)},J=function(t,e){b(t);for(var n,r=g(e=S(e)),i=0,o=r.length;o>i;)Q(t,n=r[i++],e[n]);return t},X=function(t){var e=C.call(this,t=w(t,!0));return!(this===V&&i(D,t)&&!i(G,t))&&(!(e||!i(this,t)||!i(D,t)||i(this,I)&&this[I][t])||e)},$=function(t,e){if(t=S(t),e=w(e,!0),t!==V||!i(D,e)||i(G,e)){var n=k(t,e);return!n||!i(D,e)||i(t,I)&&t[I][e]||(n.enumerable=!0),n}},Z=function(t){for(var e,n=T(S(t)),r=[],o=0;n.length>o;)i(D,e=n[o++])||e==I||e==c||r.push(e);return r},tt=function(t){for(var e,n=t===V,r=T(n?G:S(t)),o=[],u=0;r.length>u;)!i(D,e=r[u++])||n&&!i(V,e)||o.push(D[e]);return o};z||(a((L=function(){if(this instanceof L)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0),e=function(n){this===V&&e.call(G,n),i(this,I)&&i(this[I],t)&&(this[I][t]=!1),Y(this,t,x(1,n))};return o&&q&&Y(V,t,{configurable:!0,set:e}),H(t)}).prototype,"toString",(function(){return this._k})),A.f=$,O.f=Q,n(36).f=P.f=Z,n(47).f=X,F.f=tt,o&&!n(32)&&a(V,"propertyIsEnumerable",X,!0),v.f=function(t){return H(h(t))}),u(u.G+u.W+u.F*!z,{Symbol:L});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)h(et[nt++]);for(var rt=E(h.store),it=0;rt.length>it;)p(rt[it++]);u(u.S+u.F*!z,"Symbol",{for:function(t){return i(W,t+="")?W[t]:W[t]=L(t)},keyFor:function(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var e in W)if(W[e]===t)return e},useSetter:function(){q=!0},useSimple:function(){q=!1}}),u(u.S+u.F*!z,"Object",{create:function(t,e){return void 0===e?_(t):J(_(t),e)},defineProperty:Q,defineProperties:J,getOwnPropertyDescriptor:$,getOwnPropertyNames:Z,getOwnPropertySymbols:tt});var ot=s((function(){F.f(1)}));u(u.S+u.F*ot,"Object",{getOwnPropertySymbols:function(t){return F.f(M(t))}}),B&&u(u.S+u.F*(!z||s((function(){var t=L();return"[null]"!=N([t])||"{}"!=N({a:t})||"{}"!=N(Object(t))}))),"JSON",{stringify:function(t){for(var e,n,r=[t],i=1;arguments.length>i;)r.push(arguments[i++]);if(n=e=r[1],(m(e)||void 0!==t)&&!K(t))return y(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!K(e))return e}),r[1]=e,N.apply(B,r)}}),L.prototype[j]||n(14)(L.prototype,j,L.prototype.valueOf),l(L,"Symbol"),l(Math,"Math",!0),l(r.JSON,"JSON",!0)},function(t,e,n){t.exports=n(50)("native-function-to-string",Function.toString)},function(t,e,n){var r=n(33),i=n(52),o=n(47);t.exports=function(t){var e=r(t),n=i.f;if(n)for(var u,a=n(t),c=o.f,s=0;a.length>s;)c.call(t,u=a[s++])&&e.push(u);return e}},function(t,e,n){var r=n(0);r(r.S,"Object",{create:n(35)})},function(t,e,n){var r=n(0);r(r.S+r.F*!n(8),"Object",{defineProperty:n(9).f})},function(t,e,n){var r=n(0);r(r.S+r.F*!n(8),"Object",{defineProperties:n(99)})},function(t,e,n){var r=n(15),i=n(22).f;n(23)("getOwnPropertyDescriptor",(function(){return function(t,e){return i(r(t),e)}}))},function(t,e,n){var r=n(10),i=n(37);n(23)("getPrototypeOf",(function(){return function(t){return i(r(t))}}))},function(t,e,n){var r=n(10),i=n(33);n(23)("keys",(function(){return function(t){return i(r(t))}}))},function(t,e,n){n(23)("getOwnPropertyNames",(function(){return n(100).f}))},function(t,e,n){var r=n(4),i=n(29).onFreeze;n(23)("freeze",(function(t){return function(e){return t&&r(e)?t(i(e)):e}}))},function(t,e,n){var r=n(4),i=n(29).onFreeze;n(23)("seal",(function(t){return function(e){return t&&r(e)?t(i(e)):e}}))},function(t,e,n){var r=n(4),i=n(29).onFreeze;n(23)("preventExtensions",(function(t){return function(e){return t&&r(e)?t(i(e)):e}}))},function(t,e,n){var r=n(4);n(23)("isFrozen",(function(t){return function(e){return!r(e)||!!t&&t(e)}}))},function(t,e,n){var r=n(4);n(23)("isSealed",(function(t){return function(e){return!r(e)||!!t&&t(e)}}))},function(t,e,n){var r=n(4);n(23)("isExtensible",(function(t){return function(e){return!!r(e)&&(!t||t(e))}}))},function(t,e,n){var r=n(0);r(r.S+r.F,"Object",{assign:n(101)})},function(t,e,n){var r=n(0);r(r.S,"Object",{is:n(102)})},function(t,e,n){var r=n(0);r(r.S,"Object",{setPrototypeOf:n(67).set})},function(t,e,n){"use strict";var r=n(48),i={};i[n(5)("toStringTag")]="z",i+""!="[object z]"&&n(11)(Object.prototype,"toString",(function(){return"[object "+r(this)+"]"}),!0)},function(t,e,n){var r=n(0);r(r.P,"Function",{bind:n(103)})},function(t,e,n){var r=n(9).f,i=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in i||n(8)&&r(i,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(t){return""}}})},function(t,e,n){"use strict";var r=n(4),i=n(37),o=n(5)("hasInstance"),u=Function.prototype;o in u||n(9).f(u,o,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},function(t,e,n){var r=n(0),i=n(105);r(r.G+r.F*(parseInt!=i),{parseInt:i})},function(t,e,n){var r=n(0),i=n(106);r(r.G+r.F*(parseFloat!=i),{parseFloat:i})},function(t,e,n){"use strict";var r=n(1),i=n(13),o=n(25),u=n(69),a=n(28),c=n(2),s=n(36).f,f=n(22).f,l=n(9).f,d=n(41).trim,h=r.Number,v=h,p=h.prototype,g="Number"==o(n(35)(p)),y="trim"in String.prototype,b=function(t){var e=a(t,!1);if("string"==typeof e&&e.length>2){var n,r,i,o=(e=y?e.trim():d(e,3)).charCodeAt(0);if(43===o||45===o){if(88===(n=e.charCodeAt(2))||120===n)return NaN}else if(48===o){switch(e.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+e}for(var u,c=e.slice(2),s=0,f=c.length;si)return NaN;return parseInt(c,r)}}return+e};if(!h(" 0o1")||!h("0b1")||h("+0x1")){h=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof h&&(g?c((function(){p.valueOf.call(n)})):"Number"!=o(n))?u(new v(b(e)),n,h):b(e)};for(var m,M=n(8)?s(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;M.length>S;S++)i(v,m=M[S])&&!i(h,m)&&l(h,m,f(v,m));h.prototype=p,p.constructor=h,n(11)(r,"Number",h)}},function(t,e,n){"use strict";var r=n(0),i=n(21),o=n(107),u=n(70),a=1..toFixed,c=Math.floor,s=[0,0,0,0,0,0],f="Number.toFixed: incorrect invocation!",l=function(t,e){for(var n=-1,r=e;++n<6;)r+=t*s[n],s[n]=r%1e7,r=c(r/1e7)},d=function(t){for(var e=6,n=0;--e>=0;)n+=s[e],s[e]=c(n/t),n=n%t*1e7},h=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==s[t]){var n=String(s[t]);e=""===e?n:e+u.call("0",7-n.length)+n}return e},v=function(t,e,n){return 0===e?n:e%2==1?v(t,e-1,n*t):v(t*t,e/2,n)};r(r.P+r.F*(!!a&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n(2)((function(){a.call({})}))),"Number",{toFixed:function(t){var e,n,r,a,c=o(this,f),s=i(t),p="",g="0";if(s<0||s>20)throw RangeError(f);if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(p="-",c=-c),c>1e-21)if(n=(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*v(2,69,1))-69)<0?c*v(2,-e,1):c/v(2,e,1),n*=4503599627370496,(e=52-e)>0){for(l(0,n),r=s;r>=7;)l(1e7,0),r-=7;for(l(v(10,r,1),0),r=e-1;r>=23;)d(1<<23),r-=23;d(1<0?p+((a=g.length)<=s?"0."+u.call("0",s-a)+g:g.slice(0,a-s)+"."+g.slice(a-s)):p+g}})},function(t,e,n){"use strict";var r=n(0),i=n(2),o=n(107),u=1..toPrecision;r(r.P+r.F*(i((function(){return"1"!==u.call(1,void 0)}))||!i((function(){u.call({})}))),"Number",{toPrecision:function(t){var e=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?u.call(e):u.call(e,t)}})},function(t,e,n){var r=n(0);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,e,n){var r=n(0),i=n(1).isFinite;r(r.S,"Number",{isFinite:function(t){return"number"==typeof t&&i(t)}})},function(t,e,n){var r=n(0);r(r.S,"Number",{isInteger:n(108)})},function(t,e,n){var r=n(0);r(r.S,"Number",{isNaN:function(t){return t!=t}})},function(t,e,n){var r=n(0),i=n(108),o=Math.abs;r(r.S,"Number",{isSafeInteger:function(t){return i(t)&&o(t)<=9007199254740991}})},function(t,e,n){var r=n(0);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,e,n){var r=n(0);r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,e,n){var r=n(0),i=n(106);r(r.S+r.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},function(t,e,n){var r=n(0),i=n(105);r(r.S+r.F*(Number.parseInt!=i),"Number",{parseInt:i})},function(t,e,n){var r=n(0),i=n(109),o=Math.sqrt,u=Math.acosh;r(r.S+r.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))&&u(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},function(t,e,n){var r=n(0),i=Math.asinh;r(r.S+r.F*!(i&&1/i(0)>0),"Math",{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):Math.log(e+Math.sqrt(e*e+1)):e}})},function(t,e,n){var r=n(0),i=Math.atanh;r(r.S+r.F*!(i&&1/i(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,e,n){var r=n(0),i=n(71);r(r.S,"Math",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,e,n){var r=n(0);r(r.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,e,n){var r=n(0),i=Math.exp;r(r.S,"Math",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},function(t,e,n){var r=n(0),i=n(72);r(r.S+r.F*(i!=Math.expm1),"Math",{expm1:i})},function(t,e,n){var r=n(0);r(r.S,"Math",{fround:n(178)})},function(t,e,n){var r=n(71),i=Math.pow,o=i(2,-52),u=i(2,-23),a=i(2,127)*(2-u),c=i(2,-126);t.exports=Math.fround||function(t){var e,n,i=Math.abs(t),s=r(t);return ia||n!=n?s*(1/0):s*n}},function(t,e,n){var r=n(0),i=Math.abs;r(r.S,"Math",{hypot:function(t,e){for(var n,r,o=0,u=0,a=arguments.length,c=0;u0?(r=n/c)*r:n;return c===1/0?1/0:c*Math.sqrt(o)}})},function(t,e,n){var r=n(0),i=Math.imul;r(r.S+r.F*n(2)((function(){return-5!=i(4294967295,5)||2!=i.length})),"Math",{imul:function(t,e){var n=+t,r=+e,i=65535&n,o=65535&r;return 0|i*o+((65535&n>>>16)*o+i*(65535&r>>>16)<<16>>>0)}})},function(t,e,n){var r=n(0);r(r.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},function(t,e,n){var r=n(0);r(r.S,"Math",{log1p:n(109)})},function(t,e,n){var r=n(0);r(r.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,e,n){var r=n(0);r(r.S,"Math",{sign:n(71)})},function(t,e,n){var r=n(0),i=n(72),o=Math.exp;r(r.S+r.F*n(2)((function(){return-2e-17!=!Math.sinh(-2e-17)})),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},function(t,e,n){var r=n(0),i=n(72),o=Math.exp;r(r.S,"Math",{tanh:function(t){var e=i(t=+t),n=i(-t);return e==1/0?1:n==1/0?-1:(e-n)/(o(t)+o(-t))}})},function(t,e,n){var r=n(0);r(r.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,e,n){var r=n(0),i=n(34),o=String.fromCharCode,u=String.fromCodePoint;r(r.S+r.F*(!!u&&1!=u.length),"String",{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,u=0;r>u;){if(e=+arguments[u++],i(e,1114111)!==e)throw RangeError(e+" is not a valid code point");n.push(e<65536?o(e):o(55296+((e-=65536)>>10),e%1024+56320))}return n.join("")}})},function(t,e,n){var r=n(0),i=n(15),o=n(6);r(r.S,"String",{raw:function(t){for(var e=i(t.raw),n=o(e.length),r=arguments.length,u=[],a=0;n>a;)u.push(String(e[a++])),a=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},function(t,e,n){"use strict";var r=n(0),i=n(73)(!1);r(r.P,"String",{codePointAt:function(t){return i(this,t)}})},function(t,e,n){"use strict";var r=n(0),i=n(6),o=n(75),u="".endsWith;r(r.P+r.F*n(77)("endsWith"),"String",{endsWith:function(t){var e=o(this,t,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=i(e.length),a=void 0===n?r:Math.min(i(n),r),c=String(t);return u?u.call(e,c,a):e.slice(a-c.length,a)===c}})},function(t,e,n){"use strict";var r=n(0),i=n(75);r(r.P+r.F*n(77)("includes"),"String",{includes:function(t){return!!~i(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,e,n){var r=n(0);r(r.P,"String",{repeat:n(70)})},function(t,e,n){"use strict";var r=n(0),i=n(6),o=n(75),u="".startsWith;r(r.P+r.F*n(77)("startsWith"),"String",{startsWith:function(t){var e=o(this,t,"startsWith"),n=i(Math.min(arguments.length>1?arguments[1]:void 0,e.length)),r=String(t);return u?u.call(e,r,n):e.slice(n,n+r.length)===r}})},function(t,e,n){"use strict";n(12)("anchor",(function(t){return function(e){return t(this,"a","name",e)}}))},function(t,e,n){"use strict";n(12)("big",(function(t){return function(){return t(this,"big","","")}}))},function(t,e,n){"use strict";n(12)("blink",(function(t){return function(){return t(this,"blink","","")}}))},function(t,e,n){"use strict";n(12)("bold",(function(t){return function(){return t(this,"b","","")}}))},function(t,e,n){"use strict";n(12)("fixed",(function(t){return function(){return t(this,"tt","","")}}))},function(t,e,n){"use strict";n(12)("fontcolor",(function(t){return function(e){return t(this,"font","color",e)}}))},function(t,e,n){"use strict";n(12)("fontsize",(function(t){return function(e){return t(this,"font","size",e)}}))},function(t,e,n){"use strict";n(12)("italics",(function(t){return function(){return t(this,"i","","")}}))},function(t,e,n){"use strict";n(12)("link",(function(t){return function(e){return t(this,"a","href",e)}}))},function(t,e,n){"use strict";n(12)("small",(function(t){return function(){return t(this,"small","","")}}))},function(t,e,n){"use strict";n(12)("strike",(function(t){return function(){return t(this,"strike","","")}}))},function(t,e,n){"use strict";n(12)("sub",(function(t){return function(){return t(this,"sub","","")}}))},function(t,e,n){"use strict";n(12)("sup",(function(t){return function(){return t(this,"sup","","")}}))},function(t,e,n){var r=n(0);r(r.S,"Date",{now:function(){return(new Date).getTime()}})},function(t,e,n){"use strict";var r=n(0),i=n(10),o=n(28);r(r.P+r.F*n(2)((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(t){var e=i(this),n=o(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},function(t,e,n){var r=n(0),i=n(213);r(r.P+r.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},function(t,e,n){"use strict";var r=n(2),i=Date.prototype.getTime,o=Date.prototype.toISOString,u=function(t){return t>9?t:"0"+t};t.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))}))||!r((function(){o.call(new Date(NaN))}))?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,e=t.getUTCFullYear(),n=t.getUTCMilliseconds(),r=e<0?"-":e>9999?"+":"";return r+("00000"+Math.abs(e)).slice(r?-6:-4)+"-"+u(t.getUTCMonth()+1)+"-"+u(t.getUTCDate())+"T"+u(t.getUTCHours())+":"+u(t.getUTCMinutes())+":"+u(t.getUTCSeconds())+"."+(n>99?n:"0"+u(n))+"Z"}:o},function(t,e,n){var r=Date.prototype,i=r.toString,o=r.getTime;new Date(NaN)+""!="Invalid Date"&&n(11)(r,"toString",(function(){var t=o.call(this);return t==t?i.call(this):"Invalid Date"}))},function(t,e,n){var r=n(5)("toPrimitive"),i=Date.prototype;r in i||n(14)(i,r,n(216))},function(t,e,n){"use strict";var r=n(3),i=n(28);t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(r(this),"number"!=t)}},function(t,e,n){var r=n(0);r(r.S,"Array",{isArray:n(53)})},function(t,e,n){"use strict";var r=n(19),i=n(0),o=n(10),u=n(111),a=n(78),c=n(6),s=n(79),f=n(80);i(i.S+i.F*!n(54)((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,i,l,d=o(t),h="function"==typeof this?this:Array,v=arguments.length,p=v>1?arguments[1]:void 0,g=void 0!==p,y=0,b=f(d);if(g&&(p=r(p,v>2?arguments[2]:void 0,2)),null==b||h==Array&&a(b))for(n=new h(e=c(d.length));e>y;y++)s(n,y,g?p(d[y],y):d[y]);else for(l=b.call(d),n=new h;!(i=l.next()).done;y++)s(n,y,g?u(l,p,[i.value,y],!0):i.value);return n.length=y,n}})},function(t,e,n){"use strict";var r=n(0),i=n(79);r(r.S+r.F*n(2)((function(){function t(){}return!(Array.of.call(t)instanceof t)})),"Array",{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)i(n,t,arguments[t++]);return n.length=e,n}})},function(t,e,n){"use strict";var r=n(0),i=n(15),o=[].join;r(r.P+r.F*(n(46)!=Object||!n(16)(o)),"Array",{join:function(t){return o.call(i(this),void 0===t?",":t)}})},function(t,e,n){"use strict";var r=n(0),i=n(66),o=n(25),u=n(34),a=n(6),c=[].slice;r(r.P+r.F*n(2)((function(){i&&c.call(i)})),"Array",{slice:function(t,e){var n=a(this.length),r=o(this);if(e=void 0===e?n:e,"Array"==r)return c.call(this,t,e);for(var i=u(t,n),s=u(e,n),f=a(s-i),l=new Array(f),d=0;d1&&(r=Math.min(r,o(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}})},function(t,e,n){var r=n(0);r(r.P,"Array",{copyWithin:n(114)}),n(38)("copyWithin")},function(t,e,n){var r=n(0);r(r.P,"Array",{fill:n(81)}),n(38)("fill")},function(t,e,n){"use strict";var r=n(0),i=n(24)(5),o=!0;"find"in[]&&Array(1).find((function(){o=!1})),r(r.P+r.F*o,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(38)("find")},function(t,e,n){"use strict";var r=n(0),i=n(24)(6),o="findIndex",u=!0;o in[]&&Array(1)[o]((function(){u=!1})),r(r.P+r.F*u,"Array",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(38)(o)},function(t,e,n){n(43)("Array")},function(t,e,n){var r=n(1),i=n(69),o=n(9).f,u=n(36).f,a=n(76),c=n(55),s=r.RegExp,f=s,l=s.prototype,d=/a/g,h=/a/g,v=new s(d)!==d;if(n(8)&&(!v||n(2)((function(){return h[n(5)("match")]=!1,s(d)!=d||s(h)==h||"/a/i"!=s(d,"i")})))){s=function(t,e){var n=this instanceof s,r=a(t),o=void 0===e;return!n&&r&&t.constructor===s&&o?t:i(v?new f(r&&!o?t.source:t,e):f((r=t instanceof s)?t.source:t,r&&o?c.call(t):e),n?this:l,s)};for(var p=function(t){t in s||o(s,t,{configurable:!0,get:function(){return f[t]},set:function(e){f[t]=e}})},g=u(f),y=0;g.length>y;)p(g[y++]);l.constructor=s,s.prototype=l,n(11)(r,"RegExp",s)}n(43)("RegExp")},function(t,e,n){"use strict";n(117);var r=n(3),i=n(55),o=n(8),u=/./.toString,a=function(t){n(11)(RegExp.prototype,"toString",t,!0)};n(2)((function(){return"/a/b"!=u.call({source:"a",flags:"b"})}))?a((function(){var t=r(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)})):"toString"!=u.name&&a((function(){return u.call(this)}))},function(t,e,n){"use strict";var r=n(3),i=n(6),o=n(84),u=n(56);n(57)("match",1,(function(t,e,n,a){return[function(n){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=a(n,t,this);if(e.done)return e.value;var c=r(t),s=String(this);if(!c.global)return u(c,s);var f=c.unicode;c.lastIndex=0;for(var l,d=[],h=0;null!==(l=u(c,s));){var v=String(l[0]);d[h]=v,""===v&&(c.lastIndex=o(s,i(c.lastIndex),f)),h++}return 0===h?null:d}]}))},function(t,e,n){"use strict";var r=n(3),i=n(10),o=n(6),u=n(21),a=n(84),c=n(56),s=Math.max,f=Math.min,l=Math.floor,d=/\$([$&`']|\d\d?|<[^>]*>)/g,h=/\$([$&`']|\d\d?)/g;n(57)("replace",2,(function(t,e,n,v){return[function(r,i){var o=t(this),u=null==r?void 0:r[e];return void 0!==u?u.call(r,o,i):n.call(String(o),r,i)},function(t,e){var i=v(n,t,this,e);if(i.done)return i.value;var l=r(t),d=String(this),h="function"==typeof e;h||(e=String(e));var g=l.global;if(g){var y=l.unicode;l.lastIndex=0}for(var b=[];;){var m=c(l,d);if(null===m)break;if(b.push(m),!g)break;""===String(m[0])&&(l.lastIndex=a(d,o(l.lastIndex),y))}for(var M,S="",w=0,x=0;x=w&&(S+=d.slice(w,P)+k,w=P+_.length)}return S+d.slice(w)}];function p(t,e,r,o,u,a){var c=r+t.length,s=o.length,f=h;return void 0!==u&&(u=i(u),f=d),n.call(a,f,(function(n,i){var a;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return e.slice(0,r);case"'":return e.slice(c);case"<":a=u[i.slice(1,-1)];break;default:var f=+i;if(0===f)return n;if(f>s){var d=l(f/10);return 0===d?n:d<=s?void 0===o[d-1]?i.charAt(1):o[d-1]+i.charAt(1):n}a=o[f-1]}return void 0===a?"":a}))}}))},function(t,e,n){"use strict";var r=n(3),i=n(102),o=n(56);n(57)("search",1,(function(t,e,n,u){return[function(n){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=u(n,t,this);if(e.done)return e.value;var a=r(t),c=String(this),s=a.lastIndex;i(s,0)||(a.lastIndex=0);var f=o(a,c);return i(a.lastIndex,s)||(a.lastIndex=s),null===f?-1:f.index}]}))},function(t,e,n){"use strict";var r=n(76),i=n(3),o=n(49),u=n(84),a=n(6),c=n(56),s=n(83),f=n(2),l=Math.min,d=[].push,h=!f((function(){RegExp(4294967295,"y")}));n(57)("split",2,(function(t,e,n,f){var v;return v="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,e){var i=String(this);if(void 0===t&&0===e)return[];if(!r(t))return n.call(i,t,e);for(var o,u,a,c=[],f=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),l=0,h=void 0===e?4294967295:e>>>0,v=new RegExp(t.source,f+"g");(o=s.call(v,i))&&!((u=v.lastIndex)>l&&(c.push(i.slice(l,o.index)),o.length>1&&o.index=h));)v.lastIndex===o.index&&v.lastIndex++;return l===i.length?!a&&v.test("")||c.push(""):c.push(i.slice(l)),c.length>h?c.slice(0,h):c}:"0".split(void 0,0).length?function(t,e){return void 0===t&&0===e?[]:n.call(this,t,e)}:n,[function(n,r){var i=t(this),o=null==n?void 0:n[e];return void 0!==o?o.call(n,i,r):v.call(String(i),n,r)},function(t,e){var r=f(v,t,this,e,v!==n);if(r.done)return r.value;var s=i(t),d=String(this),p=o(s,RegExp),g=s.unicode,y=(s.ignoreCase?"i":"")+(s.multiline?"m":"")+(s.unicode?"u":"")+(h?"y":"g"),b=new p(h?s:"^(?:"+s.source+")",y),m=void 0===e?4294967295:e>>>0;if(0===m)return[];if(0===d.length)return null===c(b,d)?[d]:[];for(var M=0,S=0,w=[];S0?arguments[0]:void 0)}}),{get:function(t){var e=r.getEntry(i(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(i(this,"Map"),0===t?0:t,e)}},r,!0)},function(t,e,n){"use strict";var r=n(121),i=n(39);t.exports=n(60)("Set",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(i(this,"Set"),t=0===t?0:t,t)}},r)},function(t,e,n){"use strict";var r,i=n(1),o=n(24)(0),u=n(11),a=n(29),c=n(101),s=n(122),f=n(4),l=n(39),d=n(39),h=!i.ActiveXObject&&"ActiveXObject"in i,v=a.getWeak,p=Object.isExtensible,g=s.ufstore,y=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},b={get:function(t){if(f(t)){var e=v(t);return!0===e?g(l(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return s.def(l(this,"WeakMap"),t,e)}},m=t.exports=n(60)("WeakMap",y,b,s,!0,!0);d&&h&&(c((r=s.getConstructor(y,"WeakMap")).prototype,b),a.NEED=!0,o(["delete","has","get","set"],(function(t){var e=m.prototype,n=e[t];u(e,t,(function(e,i){if(f(e)&&!p(e)){this._f||(this._f=new r);var o=this._f[t](e,i);return"set"==t?this:o}return n.call(this,e,i)}))})))},function(t,e,n){"use strict";var r=n(122),i=n(39);n(60)("WeakSet",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return r.def(i(this,"WeakSet"),t,!0)}},r,!1,!0)},function(t,e,n){"use strict";var r=n(0),i=n(61),o=n(86),u=n(3),a=n(34),c=n(6),s=n(4),f=n(1).ArrayBuffer,l=n(49),d=o.ArrayBuffer,h=o.DataView,v=i.ABV&&f.isView,p=d.prototype.slice,g=i.VIEW;r(r.G+r.W+r.F*(f!==d),{ArrayBuffer:d}),r(r.S+r.F*!i.CONSTR,"ArrayBuffer",{isView:function(t){return v&&v(t)||s(t)&&g in t}}),r(r.P+r.U+r.F*n(2)((function(){return!new d(2).slice(1,void 0).byteLength})),"ArrayBuffer",{slice:function(t,e){if(void 0!==p&&void 0===e)return p.call(u(this),t);for(var n=u(this).byteLength,r=a(t,n),i=a(void 0===e?n:e,n),o=new(l(this,d))(c(i-r)),s=new h(this),f=new h(o),v=0;r=e.length)return{value:void 0,done:!0}}while(!((t=e[this._i++])in this._t));return{value:t,done:!1}})),r(r.S,"Reflect",{enumerate:function(t){return new o(t)}})},function(t,e,n){var r=n(22),i=n(37),o=n(13),u=n(0),a=n(4),c=n(3);u(u.S,"Reflect",{get:function t(e,n){var u,s,f=arguments.length<3?e:arguments[2];return c(e)===f?e[n]:(u=r.f(e,n))?o(u,"value")?u.value:void 0!==u.get?u.get.call(f):void 0:a(s=i(e))?t(s,n,f):void 0}})},function(t,e,n){var r=n(22),i=n(0),o=n(3);i(i.S,"Reflect",{getOwnPropertyDescriptor:function(t,e){return r.f(o(t),e)}})},function(t,e,n){var r=n(0),i=n(37),o=n(3);r(r.S,"Reflect",{getPrototypeOf:function(t){return i(o(t))}})},function(t,e,n){var r=n(0);r(r.S,"Reflect",{has:function(t,e){return e in t}})},function(t,e,n){var r=n(0),i=n(3),o=Object.isExtensible;r(r.S,"Reflect",{isExtensible:function(t){return i(t),!o||o(t)}})},function(t,e,n){var r=n(0);r(r.S,"Reflect",{ownKeys:n(124)})},function(t,e,n){var r=n(0),i=n(3),o=Object.preventExtensions;r(r.S,"Reflect",{preventExtensions:function(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},function(t,e,n){var r=n(9),i=n(22),o=n(37),u=n(13),a=n(0),c=n(30),s=n(3),f=n(4);a(a.S,"Reflect",{set:function t(e,n,a){var l,d,h=arguments.length<4?e:arguments[3],v=i.f(s(e),n);if(!v){if(f(d=o(e)))return t(d,n,a,h);v=c(0)}if(u(v,"value")){if(!1===v.writable||!f(h))return!1;if(l=i.f(h,n)){if(l.get||l.set||!1===l.writable)return!1;l.value=a,r.f(h,n,l)}else r.f(h,n,c(0,a));return!0}return void 0!==v.set&&(v.set.call(h,a),!0)}})},function(t,e,n){var r=n(0),i=n(67);i&&r(r.S,"Reflect",{setPrototypeOf:function(t,e){i.check(t,e);try{return i.set(t,e),!0}catch(t){return!1}}})},function(t,e,n){n(276),t.exports=n(7).Array.includes},function(t,e,n){"use strict";var r=n(0),i=n(51)(!0);r(r.P,"Array",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),n(38)("includes")},function(t,e,n){n(278),t.exports=n(7).Array.flatMap},function(t,e,n){"use strict";var r=n(0),i=n(279),o=n(10),u=n(6),a=n(20),c=n(112);r(r.P,"Array",{flatMap:function(t){var e,n,r=o(this);return a(t),e=u(r.length),n=c(r,0),i(n,r,r,e,0,1,t,arguments[1]),n}}),n(38)("flatMap")},function(t,e,n){"use strict";var r=n(53),i=n(4),o=n(6),u=n(19),a=n(5)("isConcatSpreadable");t.exports=function t(e,n,c,s,f,l,d,h){for(var v,p,g=f,y=0,b=!!d&&u(d,h,3);y0)g=t(e,n,v,o(v.length),g,l-1)-1;else{if(g>=9007199254740991)throw TypeError();e[g]=v}g++}y++}return g}},function(t,e,n){n(281),t.exports=n(7).String.padStart},function(t,e,n){"use strict";var r=n(0),i=n(125),o=n(59),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);r(r.P+r.F*u,"String",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,e,n){n(283),t.exports=n(7).String.padEnd},function(t,e,n){"use strict";var r=n(0),i=n(125),o=n(59),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);r(r.P+r.F*u,"String",{padEnd:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},function(t,e,n){n(285),t.exports=n(7).String.trimLeft},function(t,e,n){"use strict";n(41)("trimLeft",(function(t){return function(){return t(this,1)}}),"trimStart")},function(t,e,n){n(287),t.exports=n(7).String.trimRight},function(t,e,n){"use strict";n(41)("trimRight",(function(t){return function(){return t(this,2)}}),"trimEnd")},function(t,e,n){n(289),t.exports=n(63).f("asyncIterator")},function(t,e,n){n(97)("asyncIterator")},function(t,e,n){n(291),t.exports=n(7).Object.getOwnPropertyDescriptors},function(t,e,n){var r=n(0),i=n(124),o=n(15),u=n(22),a=n(79);r(r.S,"Object",{getOwnPropertyDescriptors:function(t){for(var e,n,r=o(t),c=u.f,s=i(r),f={},l=0;s.length>l;)void 0!==(n=c(r,e=s[l++]))&&a(f,e,n);return f}})},function(t,e,n){n(293),t.exports=n(7).Object.values},function(t,e,n){var r=n(0),i=n(126)(!1);r(r.S,"Object",{values:function(t){return i(t)}})},function(t,e,n){n(295),t.exports=n(7).Object.entries},function(t,e,n){var r=n(0),i=n(126)(!0);r(r.S,"Object",{entries:function(t){return i(t)}})},function(t,e,n){"use strict";n(118),n(297),t.exports=n(7).Promise.finally},function(t,e,n){"use strict";var r=n(0),i=n(7),o=n(1),u=n(49),a=n(120);r(r.P+r.R,"Promise",{finally:function(t){var e=u(this,i.Promise||o.Promise),n="function"==typeof t;return this.then(n?function(n){return a(e,t()).then((function(){return n}))}:t,n?function(n){return a(e,t()).then((function(){throw n}))}:t)}})},function(t,e,n){n(299),n(300),n(301),t.exports=n(7)},function(t,e,n){var r=n(1),i=n(0),o=n(59),u=[].slice,a=/MSIE .\./.test(o),c=function(t){return function(e,n){var r=arguments.length>2,i=!!r&&u.call(arguments,2);return t(r?function(){("function"==typeof e?e:Function(e)).apply(this,i)}:e,n)}};i(i.G+i.B+i.F*a,{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},function(t,e,n){var r=n(0),i=n(85);r(r.G+r.B,{setImmediate:i.set,clearImmediate:i.clear})},function(t,e,n){for(var r=n(82),i=n(33),o=n(11),u=n(1),a=n(14),c=n(42),s=n(5),f=s("iterator"),l=s("toStringTag"),d=c.Array,h={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=i(h),p=0;p=0;--o){var u=this.tryEntries[o],a=u.completion;if("root"===u.tryLoc)return i("end");if(u.tryLoc<=this.prev){var c=r.call(u,"catchLoc"),s=r.call(u,"finallyLoc");if(c&&s){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),A(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;A(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:O(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},function(t,e,n){n(304),t.exports=n(127).global},function(t,e,n){var r=n(305);r(r.G,{global:n(87)})},function(t,e,n){var r=n(87),i=n(127),o=n(306),u=n(308),a=n(315),c=function(t,e,n){var s,f,l,d=t&c.F,h=t&c.G,v=t&c.S,p=t&c.P,g=t&c.B,y=t&c.W,b=h?i:i[e]||(i[e]={}),m=b.prototype,M=h?r:v?r[e]:(r[e]||{}).prototype;for(s in h&&(n=e),n)(f=!d&&M&&void 0!==M[s])&&a(b,s)||(l=f?M[s]:n[s],b[s]=h&&"function"!=typeof M[s]?n[s]:g&&f?o(l,r):y&&M[s]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):p&&"function"==typeof l?o(Function.call,l):l,p&&((b.virtual||(b.virtual={}))[s]=l,t&c.R&&m&&!m[s]&&u(m,s,l)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},function(t,e,n){var r=n(307);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){var r=n(309),i=n(314);t.exports=n(89)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r=n(310),i=n(311),o=n(313),u=Object.defineProperty;e.f=n(89)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return u(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},function(t,e,n){var r=n(88);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},function(t,e,n){t.exports=!n(89)&&!n(128)((function(){return 7!=Object.defineProperty(n(312)("div"),"a",{get:function(){return 7}}).a}))},function(t,e,n){var r=n(88),i=n(87).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,n){var r=n(88);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}}])})); \ No newline at end of file diff --git a/bff/node_modules/bowser/es5.js b/bff/node_modules/bowser/es5.js new file mode 100644 index 0000000..842c180 --- /dev/null +++ b/bff/node_modules/bowser/es5.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.bowser=t():e.bowser=t()}(this,(function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i=r(18),n=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));t.push(0);var r=t[0],i=t[1];if(10===r)switch(i){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}switch(r){case 11:return"Big Sur";case 12:return"Monterey";case 13:return"Ventura";case 14:return"Sonoma";case 15:return"Sequoia";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,i){void 0===i&&(i=!1);var n=e.getVersionPrecision(t),a=e.getVersionPrecision(r),o=Math.max(n,a),s=0,u=e.map([t,r],(function(t){var r=o-e.getVersionPrecision(t),i=t+new Array(r+1).join(".0");return e.map(i.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(i&&(s=o-Math.min(n,a)),o-=1;o>=s;){if(u[0][o]>u[1][o])return 1;if(u[0][o]===u[1][o]){if(o===s)return 0;o-=1}else if(u[0][o]1?n-1:0),o=1;o0){var o=Object.keys(r),u=s.default.find(o,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=s.default.find(o,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(a>0){var l=Object.keys(n),b=s.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==b)return this.compareVersion(n[b])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),n=s.default.getBrowserTypeByAlias(i);return t&&n&&(i=n.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,n=this.getBrowserVersion();if("string"==typeof n)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(i=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(i=!0,r=e.substr(1)),t.indexOf(s.default.compareVersions(n,r,i))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i};var a=/version\/(\d+(\.?_?\d+)+)/i,o=[{test:[/gptbot/i],describe:function(e){var t={name:"GPTBot"},r=n.default.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/chatgpt-user/i],describe:function(e){var t={name:"ChatGPT-User"},r=n.default.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/oai-searchbot/i],describe:function(e){var t={name:"OAI-SearchBot"},r=n.default.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(e){var t={name:"ClaudeBot"},r=n.default.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(e){var t={name:"Omgilibot"},r=n.default.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/diffbot/i],describe:function(e){var t={name:"Diffbot"},r=n.default.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/perplexitybot/i],describe:function(e){var t={name:"PerplexityBot"},r=n.default.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/perplexity-user/i],describe:function(e){var t={name:"Perplexity-User"},r=n.default.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/youbot/i],describe:function(e){var t={name:"YouBot"},r=n.default.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-webindexer/i],describe:function(e){var t={name:"Meta-WebIndexer"},r=n.default.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-externalads/i],describe:function(e){var t={name:"Meta-ExternalAds"},r=n.default.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-externalagent/i],describe:function(e){var t={name:"Meta-ExternalAgent"},r=n.default.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/meta-externalfetcher/i],describe:function(e){var t={name:"Meta-ExternalFetcher"},r=n.default.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=n.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/linespider/i],describe:function(e){var t={name:"Linespider"},r=n.default.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/amazonbot/i],describe:function(e){var t={name:"AmazonBot"},r=n.default.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/bingbot/i],describe:function(e){var t={name:"BingCrawler"},r=n.default.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/baiduspider/i],describe:function(e){var t={name:"BaiduSpider"},r=n.default.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/duckduckbot/i],describe:function(e){var t={name:"DuckDuckBot"},r=n.default.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/ia_archiver/i],describe:function(e){var t={name:"InternetArchiveCrawler"},r=n.default.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{name:"FacebookExternalHit"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(e){var t={name:"SlackBot"},r=n.default.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/yahoo!?[\s/]*slurp/i],describe:function(){return{name:"YahooSlurp"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{name:"YandexBot"}}},{test:[/pingdom/i],describe:function(){return{name:"PingdomBot"}}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=n.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/PaleMoon/i],describe:function(e){var t={name:"Pale Moon"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=n.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=n.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=n.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=n.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=n.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=n.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=n.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=n.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=n.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=n.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=n.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=n.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=n.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=n.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=n.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=n.default.getFirstMatch(a,e)||n.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=n.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=n.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=n.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/librewolf/i],describe:function(e){var t={name:"LibreWolf"},r=n.default.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=n.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=n.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sogoumobilebrowser/i,/metasr/i,/se 2\.[x]/i],describe:function(e){var t={name:"Sogou Browser"},r=n.default.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i,e),i=n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),a=n.default.getFirstMatch(/se ([\d.]+)x/i,e),o=r||i||a;return o&&(t.version=o),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=n.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return!!e.hasBrand("DuckDuckGo")||e.test(/\sDdg\/[\d.]+$/i)},describe:function(e,t){var r={name:"DuckDuckGo"};if(t){var i=t.getBrandVersion("DuckDuckGo");if(i)return r.version=i,r}var a=n.default.getFirstMatch(/\sDdg\/([\d.]+)$/i,e);return a&&(r.version=a),r}},{test:function(e){return e.hasBrand("Brave")},describe:function(e,t){var r={name:"Brave"};if(t){var i=t.getBrandVersion("Brave");if(i)return r.version=i,r}return r}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=n.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=n.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=n.default.getFirstMatch(a,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:n.default.getFirstMatch(t,e),version:n.default.getSecondMatch(t,e)}}}];t.default=o,e.exports=t.default},93:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},a=r(18);var o=[{test:[/Roku\/DVP/],describe:function(e){var t=n.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:a.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=n.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=n.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=n.default.getWindowsVersionName(t);return{name:a.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:a.OS_MAP.iOS},r=n.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=n.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=n.default.getMacOSVersionName(t),i={name:a.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=n.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:t}}},{test:[/OpenHarmony/i],describe:function(e){var t=n.default.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.HarmonyOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=n.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=n.default.getAndroidVersionName(t),i={name:a.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=n.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:a.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=n.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||n.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||n.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:a.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=n.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=n.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=n.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.PlayStation4,version:t}}}];t.default=o,e.exports=t.default},94:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},a=r(18);var o=[{test:[/googlebot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Google"}}},{test:[/linespider/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Line"}}},{test:[/amazonbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Amazon"}}},{test:[/gptbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/chatgpt-user/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/oai-searchbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"OpenAI"}}},{test:[/baiduspider/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Baidu"}}},{test:[/bingbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Bing"}}},{test:[/duckduckbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"DuckDuckGo"}}},{test:[/claudebot/i,/claude-web/i,/claude-user/i,/claude-searchbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Anthropic"}}},{test:[/omgilibot/i,/webzio-extended/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Webz.io"}}},{test:[/diffbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Diffbot"}}},{test:[/perplexitybot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/perplexity-user/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Perplexity AI"}}},{test:[/youbot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"You.com"}}},{test:[/ia_archiver/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Internet Archive"}}},{test:[/meta-webindexer/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalads/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalagent/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/meta-externalfetcher/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/facebookexternalhit/i,/facebookcatalog/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Meta"}}},{test:[/slackbot/i,/slack-imgProxy/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Slack"}}},{test:[/yahoo/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Yahoo"}}},{test:[/yandexbot/i,/yandexmobilebot/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Yandex"}}},{test:[/pingdom/i],describe:function(){return{type:a.PLATFORMS_MAP.bot,vendor:"Pingdom"}}},{test:[/huawei/i],describe:function(e){var t=n.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=n.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/Nokia/i],describe:function(e){var t=n.default.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i,e),r={type:a.PLATFORMS_MAP.mobile,vendor:"Nokia"};return t&&(r.model=t),r}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:[/smart-?tv|smarttv/i],describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:[/netcast/i],describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];t.default=o,e.exports=t.default},95:function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},a=r(18);var o=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:a.ENGINE_MAP.Blink};var t=n.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:a.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:a.ENGINE_MAP.Trident},r=n.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:a.ENGINE_MAP.Presto},r=n.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:a.ENGINE_MAP.Gecko},r=n.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:a.ENGINE_MAP.WebKit},r=n.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=o,e.exports=t.default}})})); \ No newline at end of file diff --git a/bff/node_modules/bowser/index.d.ts b/bff/node_modules/bowser/index.d.ts new file mode 100644 index 0000000..4489af8 --- /dev/null +++ b/bff/node_modules/bowser/index.d.ts @@ -0,0 +1,353 @@ +// Type definitions for Bowser v2 +// Project: https://github.com/bowser-js/bowser +// Definitions by: Alexander P. Cerutti , + +export = Bowser; +export as namespace Bowser; + +declare namespace Bowser { + /** + * User-Agent Client Hints data structure + * @see https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData + */ + interface ClientHints { + brands?: Array<{ brand: string; version: string }>; + mobile?: boolean; + platform?: string; + platformVersion?: string; + architecture?: string; + model?: string; + wow64?: boolean; + } + + /** + * Creates a Parser instance + * @param {string} UA - User agent string + * @param {boolean | ClientHints} skipParsingOrHints - Either skip parsing flag or Client Hints + * @param {ClientHints} clientHints - User-Agent Client Hints data + */ + function getParser(UA: string, skipParsing?: boolean): Parser.Parser; + function getParser(UA: string, clientHints?: ClientHints): Parser.Parser; + function getParser(UA: string, skipParsing?: boolean, clientHints?: ClientHints): Parser.Parser; + + /** + * Creates a Parser instance and runs Parser.getResult immediately + * @param UA - User agent string + * @param clientHints - User-Agent Client Hints data + * @returns {Parser.ParsedResult} + */ + function parse(UA: string, clientHints?: ClientHints): Parser.ParsedResult; + + /** + * Constants exposed via bowser getters + */ + const BROWSER_MAP: Record; + const ENGINE_MAP: Record; + const OS_MAP: Record; + const PLATFORMS_MAP: Record; + + namespace Parser { + interface Parser { + constructor(UA: string, skipParsing?: boolean): Parser.Parser; + constructor(UA: string, clientHints?: ClientHints): Parser.Parser; + constructor(UA: string, skipParsing?: boolean, clientHints?: ClientHints): Parser.Parser; + + /** + * Get Client Hints data + * @return {ClientHints|null} + */ + getHints(): ClientHints | null; + + /** + * Check if a brand exists in Client Hints brands array + * @param {string} brandName The brand name to check for + * @return {boolean} + */ + hasBrand(brandName: string): boolean; + + /** + * Get brand version from Client Hints + * @param {string} brandName The brand name to get version for + * @return {string|undefined} + */ + getBrandVersion(brandName: string): string | undefined; + + /** + * Check if the version is equals the browser version + * @param version The string to compare with the browser version + * @returns {boolean} + */ + + compareVersion(version: string): boolean; + + /** + * Get parsed browser object + * @return {BrowserDetails} Browser's details + */ + + getBrowser(): BrowserDetails; + + /** + * Get browser's name + * @param {Boolean} [toLowerCase] return lower-cased value + * @return {String} Browser's name or an empty string + */ + + getBrowserName(toLowerCase?: boolean): string; + + /** + * Get browser's version + * @return {String} version of browser + */ + + getBrowserVersion(): string | undefined; + + /** + * Get OS + * @return {OSDetails} - OS Details + * + * @example + * this.getOS(); // { + * // name: 'macOS', + * // version: '10.11.12', + * // } + */ + + getOS(): OSDetails; + + /** + * Get OS name + * @param {Boolean} [toLowerCase] return lower-cased value + * @return {String} name of the OS — macOS, Windows, Linux, etc. + */ + + getOSName(toLowerCase?: boolean): string; + + /** + * Get OS version + * @return {String} full version with dots ('10.11.12', '5.6', etc) + */ + + getOSVersion(): string; + + /** + * Get parsed platform + * @returns {PlatformDetails} + */ + + getPlatform(): PlatformDetails; + + /** + * Get platform name + * @param {boolean} toLowerCase + */ + + getPlatformType(toLowerCase?: boolean): string; + + /** + * Get parsed engine + * @returns {EngineDetails} + */ + + getEngine(): EngineDetails; + + /** + * Get parsed engine's name + * @returns {String} Engine's name or an empty string + */ + + getEngineName(): string; + + /** + * Get parsed result + * @return {ParsedResult} + */ + + getResult(): ParsedResult; + + /** + * Get UserAgent string of current Parser instance + * @return {String} User-Agent String of the current object + */ + + getUA(): string; + + /** + * Is anything? Check if the browser is called "anything", + * the OS called "anything" or the platform called "anything" + * @param {String} anything + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {Boolean} + */ + + is(anything: any, includingAlias?: boolean): boolean; + + /** + * Check if the browser name equals the passed string + * @param browserName The string to compare with the browser name + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {boolean} + */ + + isBrowser(browserName: string, includingAlias?: boolean): boolean; + + /** + * Check if the engine name equals the passed string + * @param engineName The string to compare with the engine name + * @returns {boolean} + */ + + isEngine(engineName: string): boolean; + + /** + * Check if the OS name equals the passed string + * @param OSName The string to compare with the OS name + * @returns {boolean} + */ + + isOS(OSName: string): boolean; + + /** + * Check if the platform name equals the passed string + * @param platformName The string to compare with the platform name + * @returns {boolean} + */ + + isPlatform(platformName: string): boolean; + + /** + * Parse full information about the browser + * @returns {Parser.Parser} + */ + + parse(): Parser.Parser; + + /** + * Get parsed browser object + * @returns {BrowserDetails} + */ + + parseBrowser(): BrowserDetails; + + /** + * Get parsed engine + * @returns {EngineDetails} + */ + + parseEngine(): EngineDetails; + + /** + * Parse OS and save it to this.parsedResult.os + * @returns {OSDetails} + */ + + parseOS(): OSDetails; + + /** + * Get parsed platform + * @returns {PlatformDetails} + */ + + parsePlatform(): PlatformDetails; + + /** + * Check if parsed browser matches certain conditions + * + * @param {checkTree} checkTree It's one or two layered object, + * which can include a platform or an OS on the first layer + * and should have browsers specs on the bottom-laying layer + * + * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not. + * Returns `undefined` when the browser is no described in the checkTree object. + * + * @example + * const browser = new Bowser(UA); + * if (browser.check({chrome: '>118.01.1322' })) + * // or with os + * if (browser.check({windows: { chrome: '>118.01.1322' } })) + * // or with platforms + * if (browser.check({desktop: { chrome: '>118.01.1322' } })) + */ + + satisfies(checkTree: checkTree): boolean | undefined; + + /** + * Check if the browser name equals the passed string + * @param {string} browserName The string to compare with the browser name + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {boolean} + */ + + isBrowser(browserName: string, includingAlias?: boolean): boolean; + + /** + * Check if the engine name equals the passed string + * @param {string} engineName The string to compare with the engine name + * @returns {boolean} + */ + + isEngine(engineName: string): boolean; + + /** + * Check if the platform type equals the passed string + * @param {string} platformType The string to compare with the platform type + * @returns {boolean} + */ + + isPlatform(platformType: string): boolean; + + /** + * Check if the OS name equals the passed string + * @param {string} osName The string to compare with the OS name + * @returns {boolean} + */ + + isOS(osName: string): boolean; + + /** + * Check if any of the given values satisfies `.is(anything)` + * @param {string[]} anythings + * @returns {boolean} true if at least one condition is satisfied, false otherwise. + */ + + some(anythings: string[]): boolean | undefined; + + /** + * Test a UA string for a regexp + * @param regex + * @returns {boolean} true if the regex matches the UA, false otherwise. + */ + + test(regex: RegExp): boolean; + } + + interface ParsedResult { + browser: BrowserDetails; + os: OSDetails; + platform: PlatformDetails; + engine: EngineDetails; + } + + interface Details { + name?: string; + version?: string; + } + + interface OSDetails extends Details { + versionName?: string; + } + + interface PlatformDetails { + type?: string; + vendor?: string; + model?: string; + } + + type BrowserDetails = Details; + type EngineDetails = Details; + + interface checkTree { + [key: string]: any; + } + } +} diff --git a/bff/node_modules/bowser/package.json b/bff/node_modules/bowser/package.json new file mode 100644 index 0000000..2ee31c0 --- /dev/null +++ b/bff/node_modules/bowser/package.json @@ -0,0 +1,93 @@ +{ + "name": "bowser", + "description": "Lightweight browser detector", + "files": [ + "src/", + "es5.js", + "bundled.js", + "index.d.ts" + ], + "keywords": [ + "browser", + "useragent", + "user-agent", + "parser", + "ua", + "detection", + "ender", + "sniff" + ], + "homepage": "https://github.com/bowser-js/bowser", + "author": "Dustin Diaz (http://dustindiaz.com)", + "contributors": [ + { + "name": "Denis Demchenko", + "url": "http://twitter.com/lancedikson" + }, + { + "name": "Naor Peled", + "url": "https://github.com/naorpeled" + } + ], + "main": "es5.js", + "browser": "es5.js", + "module": "src/bowser.js", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "git+https://github.com/bowser-js/bowser.git" + }, + "devDependencies": { + "@babel/cli": "^7.11.6", + "@babel/core": "^7.8.0", + "@babel/polyfill": "^7.8.3", + "@babel/preset-env": "^7.8.2", + "@babel/register": "^7.8.3", + "ava": "^3.0.0", + "babel-eslint": "^10.0.3", + "babel-loader": "^8.0.6", + "babel-plugin-add-module-exports": "^1.0.2", + "babel-plugin-istanbul": "^6.0.0", + "compression-webpack-plugin": "^4.0.0", + "coveralls": "^3.0.6", + "docdash": "^1.1.1", + "eslint": "^6.5.1", + "eslint-config-airbnb-base": "^13.2.0", + "eslint-plugin-ava": "^10.0.0", + "eslint-plugin-import": "^2.18.2", + "gh-pages": "^3.0.0", + "jsdoc": "^3.6.3", + "nyc": "^15.0.0", + "sinon": "^9.0.0", + "testem": "^3.0.0", + "webpack": "^4.41.0", + "webpack-bundle-analyzer": "^3.5.2", + "webpack-cli": "^3.3.9", + "yamljs": "^0.3.0" + }, + "ava": { + "require": [ + "@babel/register" + ] + }, + "bugs": { + "url": "https://github.com/bowser-js/bowser/issues" + }, + "directories": { + "test": "test" + }, + "scripts": { + "build": "webpack --config webpack.config.js", + "generate-and-deploy-docs": "npm run generate-docs && gh-pages --dist docs --dest docs", + "watch": "webpack --watch --config webpack.config.js", + "lint:check": "eslint ./src", + "lint:fix": "eslint --fix ./src", + "testem": "testem", + "test": "nyc --reporter=html --reporter=text ava", + "test:watch": "ava --watch", + "coverage": "nyc report --reporter=text-lcov | coveralls", + "generate-docs": "jsdoc -c jsdoc.json" + }, + "license": "MIT", + "version": "2.14.1" +} diff --git a/bff/node_modules/bowser/src/bowser.js b/bff/node_modules/bowser/src/bowser.js new file mode 100644 index 0000000..fd19706 --- /dev/null +++ b/bff/node_modules/bowser/src/bowser.js @@ -0,0 +1,93 @@ +/*! + * Bowser - a browser detector + * https://github.com/bowser-js/bowser + * MIT License | (c) Dustin Diaz 2012-2015 + * MIT License | (c) Denis Demchenko 2015-2019 + */ +import Parser from './parser.js'; +import { + BROWSER_MAP, + ENGINE_MAP, + OS_MAP, + PLATFORMS_MAP, +} from './constants.js'; + +/** + * Bowser class. + * Keep it simple as much as it can be. + * It's supposed to work with collections of {@link Parser} instances + * rather then solve one-instance problems. + * All the one-instance stuff is located in Parser class. + * + * @class + * @classdesc Bowser is a static object, that provides an API to the Parsers + * @hideconstructor + */ +class Bowser { + /** + * Creates a {@link Parser} instance + * + * @param {String} UA UserAgent string + * @param {Boolean|Object} [skipParsingOrHints=false] Either a boolean to skip parsing, + * or a ClientHints object (navigator.userAgentData) + * @param {Object} [clientHints] User-Agent Client Hints data (navigator.userAgentData) + * @returns {Parser} + * @throws {Error} when UA is not a String + * + * @example + * const parser = Bowser.getParser(window.navigator.userAgent); + * const result = parser.getResult(); + * + * @example + * // With User-Agent Client Hints + * const parser = Bowser.getParser( + * window.navigator.userAgent, + * window.navigator.userAgentData + * ); + */ + static getParser(UA, skipParsingOrHints = false, clientHints = null) { + if (typeof UA !== 'string') { + throw new Error('UserAgent should be a string'); + } + return new Parser(UA, skipParsingOrHints, clientHints); + } + + /** + * Creates a {@link Parser} instance and runs {@link Parser.getResult} immediately + * + * @param {String} UA UserAgent string + * @param {Object} [clientHints] User-Agent Client Hints data (navigator.userAgentData) + * @return {ParsedResult} + * + * @example + * const result = Bowser.parse(window.navigator.userAgent); + * + * @example + * // With User-Agent Client Hints + * const result = Bowser.parse( + * window.navigator.userAgent, + * window.navigator.userAgentData + * ); + */ + static parse(UA, clientHints = null) { + return (new Parser(UA, clientHints)).getResult(); + } + + static get BROWSER_MAP() { + return BROWSER_MAP; + } + + static get ENGINE_MAP() { + return ENGINE_MAP; + } + + static get OS_MAP() { + return OS_MAP; + } + + static get PLATFORMS_MAP() { + return PLATFORMS_MAP; + } +} + +export default Bowser; diff --git a/bff/node_modules/bowser/src/constants.js b/bff/node_modules/bowser/src/constants.js new file mode 100644 index 0000000..2d06c97 --- /dev/null +++ b/bff/node_modules/bowser/src/constants.js @@ -0,0 +1,177 @@ +// NOTE: this list must be up-to-date with browsers listed in +// test/acceptance/useragentstrings.yml +export const BROWSER_ALIASES_MAP = { + AmazonBot: 'amazonbot', + 'Amazon Silk': 'amazon_silk', + 'Android Browser': 'android', + BaiduSpider: 'baiduspider', + Bada: 'bada', + BingCrawler: 'bingcrawler', + Brave: 'brave', + BlackBerry: 'blackberry', + 'ChatGPT-User': 'chatgpt_user', + Chrome: 'chrome', + ClaudeBot: 'claudebot', + Chromium: 'chromium', + Diffbot: 'diffbot', + DuckDuckBot: 'duckduckbot', + DuckDuckGo: 'duckduckgo', + Electron: 'electron', + Epiphany: 'epiphany', + FacebookExternalHit: 'facebookexternalhit', + Firefox: 'firefox', + Focus: 'focus', + Generic: 'generic', + 'Google Search': 'google_search', + Googlebot: 'googlebot', + GPTBot: 'gptbot', + 'Internet Explorer': 'ie', + InternetArchiveCrawler: 'internetarchivecrawler', + 'K-Meleon': 'k_meleon', + LibreWolf: 'librewolf', + Linespider: 'linespider', + Maxthon: 'maxthon', + 'Meta-ExternalAds': 'meta_externalads', + 'Meta-ExternalAgent': 'meta_externalagent', + 'Meta-ExternalFetcher': 'meta_externalfetcher', + 'Meta-WebIndexer': 'meta_webindexer', + 'Microsoft Edge': 'edge', + 'MZ Browser': 'mz', + 'NAVER Whale Browser': 'naver', + 'OAI-SearchBot': 'oai_searchbot', + Omgilibot: 'omgilibot', + Opera: 'opera', + 'Opera Coast': 'opera_coast', + 'Pale Moon': 'pale_moon', + PerplexityBot: 'perplexitybot', + 'Perplexity-User': 'perplexity_user', + PhantomJS: 'phantomjs', + PingdomBot: 'pingdombot', + Puffin: 'puffin', + QQ: 'qq', + QQLite: 'qqlite', + QupZilla: 'qupzilla', + Roku: 'roku', + Safari: 'safari', + Sailfish: 'sailfish', + 'Samsung Internet for Android': 'samsung_internet', + SlackBot: 'slackbot', + SeaMonkey: 'seamonkey', + Sleipnir: 'sleipnir', + 'Sogou Browser': 'sogou', + Swing: 'swing', + Tizen: 'tizen', + 'UC Browser': 'uc', + Vivaldi: 'vivaldi', + 'WebOS Browser': 'webos', + WeChat: 'wechat', + YahooSlurp: 'yahooslurp', + 'Yandex Browser': 'yandex', + YandexBot: 'yandexbot', + YouBot: 'youbot', +}; + +export const BROWSER_MAP = { + amazonbot: 'AmazonBot', + amazon_silk: 'Amazon Silk', + android: 'Android Browser', + baiduspider: 'BaiduSpider', + bada: 'Bada', + bingcrawler: 'BingCrawler', + blackberry: 'BlackBerry', + brave: 'Brave', + chatgpt_user: 'ChatGPT-User', + chrome: 'Chrome', + claudebot: 'ClaudeBot', + chromium: 'Chromium', + diffbot: 'Diffbot', + duckduckbot: 'DuckDuckBot', + duckduckgo: 'DuckDuckGo', + edge: 'Microsoft Edge', + electron: 'Electron', + epiphany: 'Epiphany', + facebookexternalhit: 'FacebookExternalHit', + firefox: 'Firefox', + focus: 'Focus', + generic: 'Generic', + google_search: 'Google Search', + googlebot: 'Googlebot', + gptbot: 'GPTBot', + ie: 'Internet Explorer', + internetarchivecrawler: 'InternetArchiveCrawler', + k_meleon: 'K-Meleon', + librewolf: 'LibreWolf', + linespider: 'Linespider', + maxthon: 'Maxthon', + meta_externalads: 'Meta-ExternalAds', + meta_externalagent: 'Meta-ExternalAgent', + meta_externalfetcher: 'Meta-ExternalFetcher', + meta_webindexer: 'Meta-WebIndexer', + mz: 'MZ Browser', + naver: 'NAVER Whale Browser', + oai_searchbot: 'OAI-SearchBot', + omgilibot: 'Omgilibot', + opera: 'Opera', + opera_coast: 'Opera Coast', + pale_moon: 'Pale Moon', + perplexitybot: 'PerplexityBot', + perplexity_user: 'Perplexity-User', + phantomjs: 'PhantomJS', + pingdombot: 'PingdomBot', + puffin: 'Puffin', + qq: 'QQ Browser', + qqlite: 'QQ Browser Lite', + qupzilla: 'QupZilla', + roku: 'Roku', + safari: 'Safari', + sailfish: 'Sailfish', + samsung_internet: 'Samsung Internet for Android', + seamonkey: 'SeaMonkey', + slackbot: 'SlackBot', + sleipnir: 'Sleipnir', + sogou: 'Sogou Browser', + swing: 'Swing', + tizen: 'Tizen', + uc: 'UC Browser', + vivaldi: 'Vivaldi', + webos: 'WebOS Browser', + wechat: 'WeChat', + yahooslurp: 'YahooSlurp', + yandex: 'Yandex Browser', + yandexbot: 'YandexBot', + youbot: 'YouBot', +}; + +export const PLATFORMS_MAP = { + bot: 'bot', + desktop: 'desktop', + mobile: 'mobile', + tablet: 'tablet', + tv: 'tv', +}; + +export const OS_MAP = { + Android: 'Android', + Bada: 'Bada', + BlackBerry: 'BlackBerry', + ChromeOS: 'Chrome OS', + HarmonyOS: 'HarmonyOS', + iOS: 'iOS', + Linux: 'Linux', + MacOS: 'macOS', + PlayStation4: 'PlayStation 4', + Roku: 'Roku', + Tizen: 'Tizen', + WebOS: 'WebOS', + Windows: 'Windows', + WindowsPhone: 'Windows Phone', +}; + +export const ENGINE_MAP = { + Blink: 'Blink', + EdgeHTML: 'EdgeHTML', + Gecko: 'Gecko', + Presto: 'Presto', + Trident: 'Trident', + WebKit: 'WebKit', +}; diff --git a/bff/node_modules/bowser/src/parser-browsers.js b/bff/node_modules/bowser/src/parser-browsers.js new file mode 100644 index 0000000..a6567e1 --- /dev/null +++ b/bff/node_modules/bowser/src/parser-browsers.js @@ -0,0 +1,1183 @@ +/** + * Browsers' descriptors + * + * The idea of descriptors is simple. You should know about them two simple things: + * 1. Every descriptor has a method or property called `test` and a `describe` method. + * 2. Order of descriptors is important. + * + * More details: + * 1. Method or property `test` serves as a way to detect whether the UA string + * matches some certain browser or not. The `describe` method helps to make a result + * object with params that show some browser-specific things: name, version, etc. + * 2. Order of descriptors is important because a Parser goes through them one by one + * in course. For example, if you insert Chrome's descriptor as the first one, + * more then a half of browsers will be described as Chrome, because they will pass + * the Chrome descriptor's test. + * + * Descriptor's `test` could be a property with an array of RegExps, where every RegExp + * will be applied to a UA string to test it whether it matches or not. + * If a descriptor has two or more regexps in the `test` array it tests them one by one + * with a logical sum operation. Parser stops if it has found any RegExp that matches the UA. + * + * Or `test` could be a method. In that case it gets a Parser instance and should + * return true/false to get the Parser know if this browser descriptor matches the UA or not. + */ + +import Utils from './utils.js'; + +const commonVersionIdentifier = /version\/(\d+(\.?_?\d+)+)/i; + +const browsersList = [ + /* GPTBot */ + { + test: [/gptbot/i], + describe(ua) { + const browser = { + name: 'GPTBot', + }; + const version = Utils.getFirstMatch(/gptbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* ChatGPT-User */ + { + test: [/chatgpt-user/i], + describe(ua) { + const browser = { + name: 'ChatGPT-User', + }; + const version = Utils.getFirstMatch(/chatgpt-user\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* OAI-SearchBot */ + { + test: [/oai-searchbot/i], + describe(ua) { + const browser = { + name: 'OAI-SearchBot', + }; + const version = Utils.getFirstMatch(/oai-searchbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* ClaudeBot */ + { + test: [/claudebot/i, /claude-web/i, /claude-user/i, /claude-searchbot/i], + describe(ua) { + const browser = { + name: 'ClaudeBot', + }; + const version = Utils.getFirstMatch(/(?:claudebot|claude-web|claude-user|claude-searchbot)\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Omgilibot */ + { + test: [/omgilibot/i, /webzio-extended/i], + describe(ua) { + const browser = { + name: 'Omgilibot', + }; + const version = Utils.getFirstMatch(/(?:omgilibot|webzio-extended)\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Diffbot */ + { + test: [/diffbot/i], + describe(ua) { + const browser = { + name: 'Diffbot', + }; + const version = Utils.getFirstMatch(/diffbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* PerplexityBot */ + { + test: [/perplexitybot/i], + describe(ua) { + const browser = { + name: 'PerplexityBot', + }; + const version = Utils.getFirstMatch(/perplexitybot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Perplexity-User */ + { + test: [/perplexity-user/i], + describe(ua) { + const browser = { + name: 'Perplexity-User', + }; + const version = Utils.getFirstMatch(/perplexity-user\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* YouBot */ + { + test: [/youbot/i], + describe(ua) { + const browser = { + name: 'YouBot', + }; + const version = Utils.getFirstMatch(/youbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Meta-WebIndexer */ + { + test: [/meta-webindexer/i], + describe(ua) { + const browser = { + name: 'Meta-WebIndexer', + }; + const version = Utils.getFirstMatch(/meta-webindexer\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Meta-ExternalAds */ + { + test: [/meta-externalads/i], + describe(ua) { + const browser = { + name: 'Meta-ExternalAds', + }; + const version = Utils.getFirstMatch(/meta-externalads\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Meta-ExternalAgent */ + { + test: [/meta-externalagent/i], + describe(ua) { + const browser = { + name: 'Meta-ExternalAgent', + }; + const version = Utils.getFirstMatch(/meta-externalagent\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Meta-ExternalFetcher */ + { + test: [/meta-externalfetcher/i], + describe(ua) { + const browser = { + name: 'Meta-ExternalFetcher', + }; + const version = Utils.getFirstMatch(/meta-externalfetcher\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Googlebot */ + { + test: [/googlebot/i], + describe(ua) { + const browser = { + name: 'Googlebot', + }; + const version = Utils.getFirstMatch(/googlebot\/(\d+(\.\d+))/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Linespider */ + { + test: [/linespider/i], + describe(ua) { + const browser = { + name: 'Linespider', + }; + const version = Utils.getFirstMatch(/(?:linespider)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* AmazonBot */ + { + test: [/amazonbot/i], + describe(ua) { + const browser = { + name: 'AmazonBot', + }; + const version = Utils.getFirstMatch(/amazonbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* BingCrawler */ + { + test: [/bingbot/i], + describe(ua) { + const browser = { + name: 'BingCrawler', + }; + const version = Utils.getFirstMatch(/bingbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* BaiduSpider */ + { + test: [/baiduspider/i], + describe(ua) { + const browser = { + name: 'BaiduSpider', + }; + const version = Utils.getFirstMatch(/baiduspider\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* DuckDuckBot */ + { + test: [/duckduckbot/i], + describe(ua) { + const browser = { + name: 'DuckDuckBot', + }; + const version = Utils.getFirstMatch(/duckduckbot\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* InternetArchiveCrawler */ + { + test: [/ia_archiver/i], + describe(ua) { + const browser = { + name: 'InternetArchiveCrawler', + }; + const version = Utils.getFirstMatch(/ia_archiver\/(\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* FacebookExternalHit */ + { + test: [/facebookexternalhit/i, /facebookcatalog/i], + describe() { + return { + name: 'FacebookExternalHit', + }; + }, + }, + + /* SlackBot */ + { + test: [/slackbot/i, /slack-imgProxy/i], + describe(ua) { + const browser = { + name: 'SlackBot', + }; + const version = Utils.getFirstMatch(/(?:slackbot|slack-imgproxy)(?:-[-\w]+)?[\s/](\d+(\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* YahooSlurp */ + { + test: [/yahoo!?[\s/]*slurp/i], + describe() { + return { + name: 'YahooSlurp', + }; + }, + }, + + /* YandexBot */ + { + test: [/yandexbot/i, /yandexmobilebot/i], + describe() { + return { + name: 'YandexBot', + }; + }, + }, + + /* PingdomBot */ + { + test: [/pingdom/i], + describe() { + return { + name: 'PingdomBot', + }; + }, + }, + + /* Opera < 13.0 */ + { + test: [/opera/i], + describe(ua) { + const browser = { + name: 'Opera', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Opera > 13.0 */ + { + test: [/opr\/|opios/i], + describe(ua) { + const browser = { + name: 'Opera', + }; + const version = Utils.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/SamsungBrowser/i], + describe(ua) { + const browser = { + name: 'Samsung Internet for Android', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/Whale/i], + describe(ua) { + const browser = { + name: 'NAVER Whale Browser', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/PaleMoon/i], + describe(ua) { + const browser = { + name: 'Pale Moon', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:PaleMoon)[\s/](\d+(?:\.\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/MZBrowser/i], + describe(ua) { + const browser = { + name: 'MZ Browser', + }; + const version = Utils.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/focus/i], + describe(ua) { + const browser = { + name: 'Focus', + }; + const version = Utils.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/swing/i], + describe(ua) { + const browser = { + name: 'Swing', + }; + const version = Utils.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/coast/i], + describe(ua) { + const browser = { + name: 'Opera Coast', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/opt\/\d+(?:.?_?\d+)+/i], + describe(ua) { + const browser = { + name: 'Opera Touch', + }; + const version = Utils.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/yabrowser/i], + describe(ua) { + const browser = { + name: 'Yandex Browser', + }; + const version = Utils.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/ucbrowser/i], + describe(ua) { + const browser = { + name: 'UC Browser', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/Maxthon|mxios/i], + describe(ua) { + const browser = { + name: 'Maxthon', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/epiphany/i], + describe(ua) { + const browser = { + name: 'Epiphany', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/puffin/i], + describe(ua) { + const browser = { + name: 'Puffin', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/sleipnir/i], + describe(ua) { + const browser = { + name: 'Sleipnir', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/k-meleon/i], + describe(ua) { + const browser = { + name: 'K-Meleon', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/micromessenger/i], + describe(ua) { + const browser = { + name: 'WeChat', + }; + const version = Utils.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/qqbrowser/i], + describe(ua) { + const browser = { + name: (/qqbrowserlite/i).test(ua) ? 'QQ Browser Lite' : 'QQ Browser', + }; + const version = Utils.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/msie|trident/i], + describe(ua) { + const browser = { + name: 'Internet Explorer', + }; + const version = Utils.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/\sedg\//i], + describe(ua) { + const browser = { + name: 'Microsoft Edge', + }; + + const version = Utils.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/edg([ea]|ios)/i], + describe(ua) { + const browser = { + name: 'Microsoft Edge', + }; + + const version = Utils.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/vivaldi/i], + describe(ua) { + const browser = { + name: 'Vivaldi', + }; + const version = Utils.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/seamonkey/i], + describe(ua) { + const browser = { + name: 'SeaMonkey', + }; + const version = Utils.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/sailfish/i], + describe(ua) { + const browser = { + name: 'Sailfish', + }; + + const version = Utils.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/silk/i], + describe(ua) { + const browser = { + name: 'Amazon Silk', + }; + const version = Utils.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/phantom/i], + describe(ua) { + const browser = { + name: 'PhantomJS', + }; + const version = Utils.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/slimerjs/i], + describe(ua) { + const browser = { + name: 'SlimerJS', + }; + const version = Utils.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/blackberry|\bbb\d+/i, /rim\stablet/i], + describe(ua) { + const browser = { + name: 'BlackBerry', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/(web|hpw)[o0]s/i], + describe(ua) { + const browser = { + name: 'WebOS Browser', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua) || Utils.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/bada/i], + describe(ua) { + const browser = { + name: 'Bada', + }; + const version = Utils.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/tizen/i], + describe(ua) { + const browser = { + name: 'Tizen', + }; + const version = Utils.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/qupzilla/i], + describe(ua) { + const browser = { + name: 'QupZilla', + }; + const version = Utils.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/librewolf/i], + describe(ua) { + const browser = { + name: 'LibreWolf', + }; + const version = Utils.getFirstMatch(/(?:librewolf)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/firefox|iceweasel|fxios/i], + describe(ua) { + const browser = { + name: 'Firefox', + }; + const version = Utils.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/electron/i], + describe(ua) { + const browser = { + name: 'Electron', + }; + const version = Utils.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/sogoumobilebrowser/i, /metasr/i, /se 2\.[x]/i], + describe(ua) { + const browser = { + name: 'Sogou Browser', + }; + const sogouMobileVersion = Utils.getFirstMatch(/(?:sogoumobilebrowser)[\s/](\d+(\.?_?\d+)+)/i, ua); + const chromiumVersion = Utils.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, ua); + const seVersion = Utils.getFirstMatch(/se ([\d.]+)x/i, ua); + const version = sogouMobileVersion || chromiumVersion || seVersion; + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/MiuiBrowser/i], + describe(ua) { + const browser = { + name: 'Miui', + }; + const version = Utils.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + /* DuckDuckGo Browser */ + { + test(parser) { + // Chromium platforms (Android, Windows): check Client Hints brands first + if (parser.hasBrand('DuckDuckGo')) { + return true; + } + // WebKit platforms (iOS, macOS): check UA string for Ddg/version suffix + return parser.test(/\sDdg\/[\d.]+$/i); + }, + describe(ua, parser) { + const browser = { + name: 'DuckDuckGo', + }; + + // Try Client Hints brand version first + if (parser) { + const hintsVersion = parser.getBrandVersion('DuckDuckGo'); + if (hintsVersion) { + browser.version = hintsVersion; + return browser; + } + } + + // Fall back to WebKit UA pattern + const uaVersion = Utils.getFirstMatch(/\sDdg\/([\d.]+)$/i, ua); + if (uaVersion) { + browser.version = uaVersion; + } + + return browser; + }, + }, + /* Brave Browser */ + { + test(parser) { + // Check Client Hints brands for Brave + return parser.hasBrand('Brave'); + }, + describe(ua, parser) { + const browser = { + name: 'Brave', + }; + + if (parser) { + const hintsVersion = parser.getBrandVersion('Brave'); + if (hintsVersion) { + browser.version = hintsVersion; + return browser; + } + } + + return browser; + }, + }, + { + test: [/chromium/i], + describe(ua) { + const browser = { + name: 'Chromium', + }; + const version = Utils.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i, ua) || Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/chrome|crios|crmo/i], + describe(ua) { + const browser = { + name: 'Chrome', + }; + const version = Utils.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + { + test: [/GSA/i], + describe(ua) { + const browser = { + name: 'Google Search', + }; + const version = Utils.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Android Browser */ + { + test(parser) { + const notLikeAndroid = !parser.test(/like android/i); + const butAndroid = parser.test(/android/i); + return notLikeAndroid && butAndroid; + }, + describe(ua) { + const browser = { + name: 'Android Browser', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* PlayStation 4 */ + { + test: [/playstation 4/i], + describe(ua) { + const browser = { + name: 'PlayStation 4', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Safari */ + { + test: [/safari|applewebkit/i], + describe(ua) { + const browser = { + name: 'Safari', + }; + const version = Utils.getFirstMatch(commonVersionIdentifier, ua); + + if (version) { + browser.version = version; + } + + return browser; + }, + }, + + /* Something else */ + { + test: [/.*/i], + describe(ua) { + /* Here we try to make sure that there are explicit details about the device + * in order to decide what regexp exactly we want to apply + * (as there is a specific decision based on that conclusion) + */ + const regexpWithoutDeviceSpec = /^(.*)\/(.*) /; + const regexpWithDeviceSpec = /^(.*)\/(.*)[ \t]\((.*)/; + const hasDeviceSpec = ua.search('\\(') !== -1; + const regexp = hasDeviceSpec ? regexpWithDeviceSpec : regexpWithoutDeviceSpec; + return { + name: Utils.getFirstMatch(regexp, ua), + version: Utils.getSecondMatch(regexp, ua), + }; + }, + }, +]; + +export default browsersList; diff --git a/bff/node_modules/bowser/src/parser-engines.js b/bff/node_modules/bowser/src/parser-engines.js new file mode 100644 index 0000000..d46d0e5 --- /dev/null +++ b/bff/node_modules/bowser/src/parser-engines.js @@ -0,0 +1,120 @@ +import Utils from './utils.js'; +import { ENGINE_MAP } from './constants.js'; + +/* + * More specific goes first + */ +export default [ + /* EdgeHTML */ + { + test(parser) { + return parser.getBrowserName(true) === 'microsoft edge'; + }, + describe(ua) { + const isBlinkBased = /\sedg\//i.test(ua); + + // return blink if it's blink-based one + if (isBlinkBased) { + return { + name: ENGINE_MAP.Blink, + }; + } + + // otherwise match the version and return EdgeHTML + const version = Utils.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i, ua); + + return { + name: ENGINE_MAP.EdgeHTML, + version, + }; + }, + }, + + /* Trident */ + { + test: [/trident/i], + describe(ua) { + const engine = { + name: ENGINE_MAP.Trident, + }; + + const version = Utils.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + engine.version = version; + } + + return engine; + }, + }, + + /* Presto */ + { + test(parser) { + return parser.test(/presto/i); + }, + describe(ua) { + const engine = { + name: ENGINE_MAP.Presto, + }; + + const version = Utils.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + engine.version = version; + } + + return engine; + }, + }, + + /* Gecko */ + { + test(parser) { + const isGecko = parser.test(/gecko/i); + const likeGecko = parser.test(/like gecko/i); + return isGecko && !likeGecko; + }, + describe(ua) { + const engine = { + name: ENGINE_MAP.Gecko, + }; + + const version = Utils.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + engine.version = version; + } + + return engine; + }, + }, + + /* Blink */ + { + test: [/(apple)?webkit\/537\.36/i], + describe() { + return { + name: ENGINE_MAP.Blink, + }; + }, + }, + + /* WebKit */ + { + test: [/(apple)?webkit/i], + describe(ua) { + const engine = { + name: ENGINE_MAP.WebKit, + }; + + const version = Utils.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i, ua); + + if (version) { + engine.version = version; + } + + return engine; + }, + }, +]; diff --git a/bff/node_modules/bowser/src/parser-os.js b/bff/node_modules/bowser/src/parser-os.js new file mode 100644 index 0000000..abc2aac --- /dev/null +++ b/bff/node_modules/bowser/src/parser-os.js @@ -0,0 +1,211 @@ +import Utils from './utils.js'; +import { OS_MAP } from './constants.js'; + +export default [ + /* Roku */ + { + test: [/Roku\/DVP/], + describe(ua) { + const version = Utils.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i, ua); + return { + name: OS_MAP.Roku, + version, + }; + }, + }, + + /* Windows Phone */ + { + test: [/windows phone/i], + describe(ua) { + const version = Utils.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i, ua); + return { + name: OS_MAP.WindowsPhone, + version, + }; + }, + }, + + /* Windows */ + { + test: [/windows /i], + describe(ua) { + const version = Utils.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i, ua); + const versionName = Utils.getWindowsVersionName(version); + + return { + name: OS_MAP.Windows, + version, + versionName, + }; + }, + }, + + /* Firefox on iPad */ + { + test: [/Macintosh(.*?) FxiOS(.*?)\//], + describe(ua) { + const result = { + name: OS_MAP.iOS, + }; + const version = Utils.getSecondMatch(/(Version\/)(\d[\d.]+)/, ua); + if (version) { + result.version = version; + } + return result; + }, + }, + + /* macOS */ + { + test: [/macintosh/i], + describe(ua) { + const version = Utils.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, ua).replace(/[_\s]/g, '.'); + const versionName = Utils.getMacOSVersionName(version); + + const os = { + name: OS_MAP.MacOS, + version, + }; + if (versionName) { + os.versionName = versionName; + } + return os; + }, + }, + + /* iOS */ + { + test: [/(ipod|iphone|ipad)/i], + describe(ua) { + const version = Utils.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i, ua).replace(/[_\s]/g, '.'); + + return { + name: OS_MAP.iOS, + version, + }; + }, + }, + + /* HarmonyOS */ + { + test: [/OpenHarmony/i], + describe(ua) { + const version = Utils.getFirstMatch(/OpenHarmony\s+(\d+(\.\d+)*)/i, ua); + return { + name: OS_MAP.HarmonyOS, + version, + }; + }, + }, + + /* Android */ + { + test(parser) { + const notLikeAndroid = !parser.test(/like android/i); + const butAndroid = parser.test(/android/i); + return notLikeAndroid && butAndroid; + }, + describe(ua) { + const version = Utils.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i, ua); + const versionName = Utils.getAndroidVersionName(version); + const os = { + name: OS_MAP.Android, + version, + }; + if (versionName) { + os.versionName = versionName; + } + return os; + }, + }, + + /* WebOS */ + { + test: [/(web|hpw)[o0]s/i], + describe(ua) { + const version = Utils.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i, ua); + const os = { + name: OS_MAP.WebOS, + }; + + if (version && version.length) { + os.version = version; + } + return os; + }, + }, + + /* BlackBerry */ + { + test: [/blackberry|\bbb\d+/i, /rim\stablet/i], + describe(ua) { + const version = Utils.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i, ua) + || Utils.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i, ua) + || Utils.getFirstMatch(/\bbb(\d+)/i, ua); + + return { + name: OS_MAP.BlackBerry, + version, + }; + }, + }, + + /* Bada */ + { + test: [/bada/i], + describe(ua) { + const version = Utils.getFirstMatch(/bada\/(\d+(\.\d+)*)/i, ua); + + return { + name: OS_MAP.Bada, + version, + }; + }, + }, + + /* Tizen */ + { + test: [/tizen/i], + describe(ua) { + const version = Utils.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i, ua); + + return { + name: OS_MAP.Tizen, + version, + }; + }, + }, + + /* Linux */ + { + test: [/linux/i], + describe() { + return { + name: OS_MAP.Linux, + }; + }, + }, + + /* Chrome OS */ + { + test: [/CrOS/], + describe() { + return { + name: OS_MAP.ChromeOS, + }; + }, + }, + + /* Playstation 4 */ + { + test: [/PlayStation 4/], + describe(ua) { + const version = Utils.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i, ua); + return { + name: OS_MAP.PlayStation4, + version, + }; + }, + }, +]; diff --git a/bff/node_modules/bowser/src/parser-platforms.js b/bff/node_modules/bowser/src/parser-platforms.js new file mode 100644 index 0000000..b070ac3 --- /dev/null +++ b/bff/node_modules/bowser/src/parser-platforms.js @@ -0,0 +1,566 @@ +import Utils from './utils.js'; +import { PLATFORMS_MAP } from './constants.js'; + +/* + * Tablets go first since usually they have more specific + * signs to detect. + */ + +export default [ + /* Googlebot */ + { + test: [/googlebot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Google', + }; + }, + }, + + /* LineSpider */ + { + test: [/linespider/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Line', + }; + }, + }, + + /* AmazonBot */ + { + test: [/amazonbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Amazon', + }; + }, + }, + + /* GPTBot */ + { + test: [/gptbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'OpenAI', + }; + }, + }, + + /* ChatGPT-User */ + { + test: [/chatgpt-user/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'OpenAI', + }; + }, + }, + + /* OAI-SearchBot */ + { + test: [/oai-searchbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'OpenAI', + }; + }, + }, + + /* Baidu */ + { + test: [/baiduspider/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Baidu', + }; + }, + }, + + /* Bingbot */ + { + test: [/bingbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Bing', + }; + }, + }, + + /* DuckDuckBot */ + { + test: [/duckduckbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'DuckDuckGo', + }; + }, + }, + + /* ClaudeBot */ + { + test: [/claudebot/i, /claude-web/i, /claude-user/i, /claude-searchbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Anthropic', + }; + }, + }, + + /* Omgilibot */ + { + test: [/omgilibot/i, /webzio-extended/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Webz.io', + }; + }, + }, + + /* Diffbot */ + { + test: [/diffbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Diffbot', + }; + }, + }, + + /* PerplexityBot */ + { + test: [/perplexitybot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Perplexity AI', + }; + }, + }, + + /* Perplexity-User */ + { + test: [/perplexity-user/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Perplexity AI', + }; + }, + }, + + /* YouBot */ + { + test: [/youbot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'You.com', + }; + }, + }, + + /* Internet Archive Crawler */ + { + test: [/ia_archiver/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Internet Archive', + }; + }, + }, + + /* Meta-WebIndexer */ + { + test: [/meta-webindexer/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* Meta-ExternalAds */ + { + test: [/meta-externalads/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* Meta-ExternalAgent */ + { + test: [/meta-externalagent/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* Meta-ExternalFetcher */ + { + test: [/meta-externalfetcher/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* Meta Web Crawler */ + { + test: [/facebookexternalhit/i, /facebookcatalog/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Meta', + }; + }, + }, + + /* SlackBot */ + { + test: [/slackbot/i, /slack-imgProxy/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Slack', + }; + }, + }, + + /* Yahoo! Slurp */ + { + test: [/yahoo/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Yahoo', + }; + }, + }, + + /* Yandex */ + { + test: [/yandexbot/i, /yandexmobilebot/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Yandex', + }; + }, + }, + + /* Pingdom */ + { + test: [/pingdom/i], + describe() { + return { + type: PLATFORMS_MAP.bot, + vendor: 'Pingdom', + }; + }, + }, + + /* Huawei */ + { + test: [/huawei/i], + describe(ua) { + const model = Utils.getFirstMatch(/(can-l01)/i, ua) && 'Nova'; + const platform = { + type: PLATFORMS_MAP.mobile, + vendor: 'Huawei', + }; + if (model) { + platform.model = model; + } + return platform; + }, + }, + + /* Nexus Tablet */ + { + test: [/nexus\s*(?:7|8|9|10).*/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Nexus', + }; + }, + }, + + /* iPad */ + { + test: [/ipad/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Apple', + model: 'iPad', + }; + }, + }, + + /* Firefox on iPad */ + { + test: [/Macintosh(.*?) FxiOS(.*?)\//], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Apple', + model: 'iPad', + }; + }, + }, + + /* Amazon Kindle Fire */ + { + test: [/kftt build/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Amazon', + model: 'Kindle Fire HD 7', + }; + }, + }, + + /* Another Amazon Tablet with Silk */ + { + test: [/silk/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + vendor: 'Amazon', + }; + }, + }, + + /* Tablet */ + { + test: [/tablet(?! pc)/i], + describe() { + return { + type: PLATFORMS_MAP.tablet, + }; + }, + }, + + /* iPod/iPhone */ + { + test(parser) { + const iDevice = parser.test(/ipod|iphone/i); + const likeIDevice = parser.test(/like (ipod|iphone)/i); + return iDevice && !likeIDevice; + }, + describe(ua) { + const model = Utils.getFirstMatch(/(ipod|iphone)/i, ua); + return { + type: PLATFORMS_MAP.mobile, + vendor: 'Apple', + model, + }; + }, + }, + + /* Nexus Mobile */ + { + test: [/nexus\s*[0-6].*/i, /galaxy nexus/i], + describe() { + return { + type: PLATFORMS_MAP.mobile, + vendor: 'Nexus', + }; + }, + }, + + /* Nokia */ + { + test: [/Nokia/i], + describe(ua) { + const model = Utils.getFirstMatch(/Nokia\s+([0-9]+(\.[0-9]+)?)/i, ua); + const platform = { + type: PLATFORMS_MAP.mobile, + vendor: 'Nokia', + }; + if (model) { + platform.model = model; + } + return platform; + }, + }, + + /* Mobile */ + { + test: [/[^-]mobi/i], + describe() { + return { + type: PLATFORMS_MAP.mobile, + }; + }, + }, + + /* BlackBerry */ + { + test(parser) { + return parser.getBrowserName(true) === 'blackberry'; + }, + describe() { + return { + type: PLATFORMS_MAP.mobile, + vendor: 'BlackBerry', + }; + }, + }, + + /* Bada */ + { + test(parser) { + return parser.getBrowserName(true) === 'bada'; + }, + describe() { + return { + type: PLATFORMS_MAP.mobile, + }; + }, + }, + + /* Windows Phone */ + { + test(parser) { + return parser.getBrowserName() === 'windows phone'; + }, + describe() { + return { + type: PLATFORMS_MAP.mobile, + vendor: 'Microsoft', + }; + }, + }, + + /* Android Tablet */ + { + test(parser) { + const osMajorVersion = Number(String(parser.getOSVersion()).split('.')[0]); + return parser.getOSName(true) === 'android' && (osMajorVersion >= 3); + }, + describe() { + return { + type: PLATFORMS_MAP.tablet, + }; + }, + }, + + /* Android Mobile */ + { + test(parser) { + return parser.getOSName(true) === 'android'; + }, + describe() { + return { + type: PLATFORMS_MAP.mobile, + }; + }, + }, + + /* Smart TV */ + { + test: [/smart-?tv|smarttv/i], + describe() { + return { + type: PLATFORMS_MAP.tv, + }; + }, + }, + + /* NetCast (LG Smart TV) */ + { + test: [/netcast/i], + describe() { + return { + type: PLATFORMS_MAP.tv, + }; + }, + }, + + /* desktop */ + { + test(parser) { + return parser.getOSName(true) === 'macos'; + }, + describe() { + return { + type: PLATFORMS_MAP.desktop, + vendor: 'Apple', + }; + }, + }, + + /* Windows */ + { + test(parser) { + return parser.getOSName(true) === 'windows'; + }, + describe() { + return { + type: PLATFORMS_MAP.desktop, + }; + }, + }, + + /* Linux */ + { + test(parser) { + return parser.getOSName(true) === 'linux'; + }, + describe() { + return { + type: PLATFORMS_MAP.desktop, + }; + }, + }, + + /* PlayStation 4 */ + { + test(parser) { + return parser.getOSName(true) === 'playstation 4'; + }, + describe() { + return { + type: PLATFORMS_MAP.tv, + }; + }, + }, + + /* Roku */ + { + test(parser) { + return parser.getOSName(true) === 'roku'; + }, + describe() { + return { + type: PLATFORMS_MAP.tv, + }; + }, + }, +]; diff --git a/bff/node_modules/bowser/src/parser.js b/bff/node_modules/bowser/src/parser.js new file mode 100644 index 0000000..1c2a5bf --- /dev/null +++ b/bff/node_modules/bowser/src/parser.js @@ -0,0 +1,592 @@ +import browserParsersList from './parser-browsers.js'; +import osParsersList from './parser-os.js'; +import platformParsersList from './parser-platforms.js'; +import enginesParsersList from './parser-engines.js'; +import Utils from './utils.js'; + +/** + * @typedef {Object} ClientHints + * @property {Array<{brand: string, version: string}>} [brands] Array of brand objects + * @property {boolean} [mobile] Whether the device is mobile + * @property {string} [platform] Platform name (e.g., "Windows", "macOS") + * @property {string} [platformVersion] Platform version + * @property {string} [architecture] CPU architecture + * @property {string} [model] Device model + * @property {boolean} [wow64] Whether running under WoW64 + */ + +/** + * The main class that arranges the whole parsing process. + */ +class Parser { + /** + * Create instance of Parser + * + * @param {String} UA User-Agent string + * @param {Boolean|ClientHints} [skipParsingOrHints=false] Either a boolean to skip parsing, + * or a ClientHints object containing User-Agent Client Hints data + * @param {ClientHints} [clientHints] User-Agent Client Hints data (navigator.userAgentData) + * + * @throw {Error} in case of empty UA String + * + * @constructor + */ + constructor(UA, skipParsingOrHints = false, clientHints = null) { + if (UA === void (0) || UA === null || UA === '') { + throw new Error("UserAgent parameter can't be empty"); + } + + this._ua = UA; + + // Handle overloaded constructor: (UA, clientHints) or (UA, skipParsing, clientHints) + let skipParsing = false; + if (typeof skipParsingOrHints === 'boolean') { + skipParsing = skipParsingOrHints; + this._hints = clientHints; + } else if (skipParsingOrHints != null && typeof skipParsingOrHints === 'object') { + this._hints = skipParsingOrHints; + } else { + this._hints = null; + } + + /** + * @typedef ParsedResult + * @property {Object} browser + * @property {String|undefined} [browser.name] + * Browser name, like `"Chrome"` or `"Internet Explorer"` + * @property {String|undefined} [browser.version] Browser version as a String `"12.01.45334.10"` + * @property {Object} os + * @property {String|undefined} [os.name] OS name, like `"Windows"` or `"macOS"` + * @property {String|undefined} [os.version] OS version, like `"NT 5.1"` or `"10.11.1"` + * @property {String|undefined} [os.versionName] OS name, like `"XP"` or `"High Sierra"` + * @property {Object} platform + * @property {String|undefined} [platform.type] + * platform type, can be either `"desktop"`, `"tablet"` or `"mobile"` + * @property {String|undefined} [platform.vendor] Vendor of the device, + * like `"Apple"` or `"Samsung"` + * @property {String|undefined} [platform.model] Device model, + * like `"iPhone"` or `"Kindle Fire HD 7"` + * @property {Object} engine + * @property {String|undefined} [engine.name] + * Can be any of this: `WebKit`, `Blink`, `Gecko`, `Trident`, `Presto`, `EdgeHTML` + * @property {String|undefined} [engine.version] String version of the engine + */ + this.parsedResult = {}; + + if (skipParsing !== true) { + this.parse(); + } + } + + /** + * Get Client Hints data + * @return {ClientHints|null} + * + * @public + * @example + * const parser = Bowser.getParser(UA, clientHints); + * const hints = parser.getHints(); + * console.log(hints.platform); // 'Windows' + * console.log(hints.mobile); // false + */ + getHints() { + return this._hints; + } + + /** + * Check if a brand exists in Client Hints brands array + * @param {string} brandName The brand name to check for + * @return {boolean} + * + * @public + * @example + * const parser = Bowser.getParser(UA, clientHints); + * if (parser.hasBrand('Google Chrome')) { + * console.log('Chrome detected!'); + * } + */ + hasBrand(brandName) { + if (!this._hints || !Array.isArray(this._hints.brands)) { + return false; + } + const brandLower = brandName.toLowerCase(); + return this._hints.brands.some( + b => b.brand && b.brand.toLowerCase() === brandLower, + ); + } + + /** + * Get brand version from Client Hints + * @param {string} brandName The brand name to get version for + * @return {string|undefined} + * + * @public + * @example + * const parser = Bowser.getParser(UA, clientHints); + * const version = parser.getBrandVersion('Google Chrome'); + * console.log(version); // '131' + */ + getBrandVersion(brandName) { + if (!this._hints || !Array.isArray(this._hints.brands)) { + return undefined; + } + const brandLower = brandName.toLowerCase(); + const brand = this._hints.brands.find( + b => b.brand && b.brand.toLowerCase() === brandLower, + ); + return brand ? brand.version : undefined; + } + + /** + * Get UserAgent string of current Parser instance + * @return {String} User-Agent String of the current object + * + * @public + */ + getUA() { + return this._ua; + } + + /** + * Test a UA string for a regexp + * @param {RegExp} regex + * @return {Boolean} + */ + test(regex) { + return regex.test(this._ua); + } + + /** + * Get parsed browser object + * @return {Object} + */ + parseBrowser() { + this.parsedResult.browser = {}; + + const browserDescriptor = Utils.find(browserParsersList, (_browser) => { + if (typeof _browser.test === 'function') { + return _browser.test(this); + } + + if (Array.isArray(_browser.test)) { + return _browser.test.some(condition => this.test(condition)); + } + + throw new Error("Browser's test function is not valid"); + }); + + if (browserDescriptor) { + this.parsedResult.browser = browserDescriptor.describe(this.getUA(), this); + } + + return this.parsedResult.browser; + } + + /** + * Get parsed browser object + * @return {Object} + * + * @public + */ + getBrowser() { + if (this.parsedResult.browser) { + return this.parsedResult.browser; + } + + return this.parseBrowser(); + } + + /** + * Get browser's name + * @return {String} Browser's name or an empty string + * + * @public + */ + getBrowserName(toLowerCase) { + if (toLowerCase) { + return String(this.getBrowser().name).toLowerCase() || ''; + } + return this.getBrowser().name || ''; + } + + + /** + * Get browser's version + * @return {String} version of browser + * + * @public + */ + getBrowserVersion() { + return this.getBrowser().version; + } + + /** + * Get OS + * @return {Object} + * + * @example + * this.getOS(); + * { + * name: 'macOS', + * version: '10.11.12' + * } + */ + getOS() { + if (this.parsedResult.os) { + return this.parsedResult.os; + } + + return this.parseOS(); + } + + /** + * Parse OS and save it to this.parsedResult.os + * @return {*|{}} + */ + parseOS() { + this.parsedResult.os = {}; + + const os = Utils.find(osParsersList, (_os) => { + if (typeof _os.test === 'function') { + return _os.test(this); + } + + if (Array.isArray(_os.test)) { + return _os.test.some(condition => this.test(condition)); + } + + throw new Error("Browser's test function is not valid"); + }); + + if (os) { + this.parsedResult.os = os.describe(this.getUA()); + } + + return this.parsedResult.os; + } + + /** + * Get OS name + * @param {Boolean} [toLowerCase] return lower-cased value + * @return {String} name of the OS — macOS, Windows, Linux, etc. + */ + getOSName(toLowerCase) { + const { name } = this.getOS(); + + if (toLowerCase) { + return String(name).toLowerCase() || ''; + } + + return name || ''; + } + + /** + * Get OS version + * @return {String} full version with dots ('10.11.12', '5.6', etc) + */ + getOSVersion() { + return this.getOS().version; + } + + /** + * Get parsed platform + * @return {{}} + */ + getPlatform() { + if (this.parsedResult.platform) { + return this.parsedResult.platform; + } + + return this.parsePlatform(); + } + + /** + * Get platform name + * @param {Boolean} [toLowerCase=false] + * @return {*} + */ + getPlatformType(toLowerCase = false) { + const { type } = this.getPlatform(); + + if (toLowerCase) { + return String(type).toLowerCase() || ''; + } + + return type || ''; + } + + /** + * Get parsed platform + * @return {{}} + */ + parsePlatform() { + this.parsedResult.platform = {}; + + const platform = Utils.find(platformParsersList, (_platform) => { + if (typeof _platform.test === 'function') { + return _platform.test(this); + } + + if (Array.isArray(_platform.test)) { + return _platform.test.some(condition => this.test(condition)); + } + + throw new Error("Browser's test function is not valid"); + }); + + if (platform) { + this.parsedResult.platform = platform.describe(this.getUA()); + } + + return this.parsedResult.platform; + } + + /** + * Get parsed engine + * @return {{}} + */ + getEngine() { + if (this.parsedResult.engine) { + return this.parsedResult.engine; + } + + return this.parseEngine(); + } + + /** + * Get engines's name + * @return {String} Engines's name or an empty string + * + * @public + */ + getEngineName(toLowerCase) { + if (toLowerCase) { + return String(this.getEngine().name).toLowerCase() || ''; + } + return this.getEngine().name || ''; + } + + /** + * Get parsed platform + * @return {{}} + */ + parseEngine() { + this.parsedResult.engine = {}; + + const engine = Utils.find(enginesParsersList, (_engine) => { + if (typeof _engine.test === 'function') { + return _engine.test(this); + } + + if (Array.isArray(_engine.test)) { + return _engine.test.some(condition => this.test(condition)); + } + + throw new Error("Browser's test function is not valid"); + }); + + if (engine) { + this.parsedResult.engine = engine.describe(this.getUA()); + } + + return this.parsedResult.engine; + } + + /** + * Parse full information about the browser + * @returns {Parser} + */ + parse() { + this.parseBrowser(); + this.parseOS(); + this.parsePlatform(); + this.parseEngine(); + + return this; + } + + /** + * Get parsed result + * @return {ParsedResult} + */ + getResult() { + return Utils.assign({}, this.parsedResult); + } + + /** + * Check if parsed browser matches certain conditions + * + * @param {Object} checkTree It's one or two layered object, + * which can include a platform or an OS on the first layer + * and should have browsers specs on the bottom-laying layer + * + * @returns {Boolean|undefined} Whether the browser satisfies the set conditions or not. + * Returns `undefined` when the browser is no described in the checkTree object. + * + * @example + * const browser = Bowser.getParser(window.navigator.userAgent); + * if (browser.satisfies({chrome: '>118.01.1322' })) + * // or with os + * if (browser.satisfies({windows: { chrome: '>118.01.1322' } })) + * // or with platforms + * if (browser.satisfies({desktop: { chrome: '>118.01.1322' } })) + */ + satisfies(checkTree) { + const platformsAndOSes = {}; + let platformsAndOSCounter = 0; + const browsers = {}; + let browsersCounter = 0; + + const allDefinitions = Object.keys(checkTree); + + allDefinitions.forEach((key) => { + const currentDefinition = checkTree[key]; + if (typeof currentDefinition === 'string') { + browsers[key] = currentDefinition; + browsersCounter += 1; + } else if (typeof currentDefinition === 'object') { + platformsAndOSes[key] = currentDefinition; + platformsAndOSCounter += 1; + } + }); + + if (platformsAndOSCounter > 0) { + const platformsAndOSNames = Object.keys(platformsAndOSes); + const OSMatchingDefinition = Utils.find(platformsAndOSNames, name => (this.isOS(name))); + + if (OSMatchingDefinition) { + const osResult = this.satisfies(platformsAndOSes[OSMatchingDefinition]); + + if (osResult !== void 0) { + return osResult; + } + } + + const platformMatchingDefinition = Utils.find( + platformsAndOSNames, + name => (this.isPlatform(name)), + ); + if (platformMatchingDefinition) { + const platformResult = this.satisfies(platformsAndOSes[platformMatchingDefinition]); + + if (platformResult !== void 0) { + return platformResult; + } + } + } + + if (browsersCounter > 0) { + const browserNames = Object.keys(browsers); + const matchingDefinition = Utils.find(browserNames, name => (this.isBrowser(name, true))); + + if (matchingDefinition !== void 0) { + return this.compareVersion(browsers[matchingDefinition]); + } + } + + return undefined; + } + + /** + * Check if the browser name equals the passed string + * @param {string} browserName The string to compare with the browser name + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {boolean} + */ + isBrowser(browserName, includingAlias = false) { + const defaultBrowserName = this.getBrowserName().toLowerCase(); + let browserNameLower = browserName.toLowerCase(); + const alias = Utils.getBrowserTypeByAlias(browserNameLower); + + if (includingAlias && alias) { + browserNameLower = alias.toLowerCase(); + } + return browserNameLower === defaultBrowserName; + } + + compareVersion(version) { + let expectedResults = [0]; + let comparableVersion = version; + let isLoose = false; + + const currentBrowserVersion = this.getBrowserVersion(); + + if (typeof currentBrowserVersion !== 'string') { + return void 0; + } + + if (version[0] === '>' || version[0] === '<') { + comparableVersion = version.substr(1); + if (version[1] === '=') { + isLoose = true; + comparableVersion = version.substr(2); + } else { + expectedResults = []; + } + if (version[0] === '>') { + expectedResults.push(1); + } else { + expectedResults.push(-1); + } + } else if (version[0] === '=') { + comparableVersion = version.substr(1); + } else if (version[0] === '~') { + isLoose = true; + comparableVersion = version.substr(1); + } + + return expectedResults.indexOf( + Utils.compareVersions(currentBrowserVersion, comparableVersion, isLoose), + ) > -1; + } + + /** + * Check if the OS name equals the passed string + * @param {string} osName The string to compare with the OS name + * @returns {boolean} + */ + isOS(osName) { + return this.getOSName(true) === String(osName).toLowerCase(); + } + + /** + * Check if the platform type equals the passed string + * @param {string} platformType The string to compare with the platform type + * @returns {boolean} + */ + isPlatform(platformType) { + return this.getPlatformType(true) === String(platformType).toLowerCase(); + } + + /** + * Check if the engine name equals the passed string + * @param {string} engineName The string to compare with the engine name + * @returns {boolean} + */ + isEngine(engineName) { + return this.getEngineName(true) === String(engineName).toLowerCase(); + } + + /** + * Is anything? Check if the browser is called "anything", + * the OS called "anything" or the platform called "anything" + * @param {String} anything + * @param [includingAlias=false] The flag showing whether alias will be included into comparison + * @returns {Boolean} + */ + is(anything, includingAlias = false) { + return this.isBrowser(anything, includingAlias) || this.isOS(anything) + || this.isPlatform(anything); + } + + /** + * Check if any of the given values satisfies this.is(anything) + * @param {String[]} anythings + * @returns {Boolean} + */ + some(anythings = []) { + return anythings.some(anything => this.is(anything)); + } +} + +export default Parser; diff --git a/bff/node_modules/bowser/src/utils.js b/bff/node_modules/bowser/src/utils.js new file mode 100644 index 0000000..4f89597 --- /dev/null +++ b/bff/node_modules/bowser/src/utils.js @@ -0,0 +1,327 @@ +import { BROWSER_MAP, BROWSER_ALIASES_MAP } from './constants.js'; + +export default class Utils { + /** + * Get first matched item for a string + * @param {RegExp} regexp + * @param {String} ua + * @return {Array|{index: number, input: string}|*|boolean|string} + */ + static getFirstMatch(regexp, ua) { + const match = ua.match(regexp); + return (match && match.length > 0 && match[1]) || ''; + } + + /** + * Get second matched item for a string + * @param regexp + * @param {String} ua + * @return {Array|{index: number, input: string}|*|boolean|string} + */ + static getSecondMatch(regexp, ua) { + const match = ua.match(regexp); + return (match && match.length > 1 && match[2]) || ''; + } + + /** + * Match a regexp and return a constant or undefined + * @param {RegExp} regexp + * @param {String} ua + * @param {*} _const Any const that will be returned if regexp matches the string + * @return {*} + */ + static matchAndReturnConst(regexp, ua, _const) { + if (regexp.test(ua)) { + return _const; + } + return void (0); + } + + static getWindowsVersionName(version) { + switch (version) { + case 'NT': return 'NT'; + case 'XP': return 'XP'; + case 'NT 5.0': return '2000'; + case 'NT 5.1': return 'XP'; + case 'NT 5.2': return '2003'; + case 'NT 6.0': return 'Vista'; + case 'NT 6.1': return '7'; + case 'NT 6.2': return '8'; + case 'NT 6.3': return '8.1'; + case 'NT 10.0': return '10'; + default: return undefined; + } + } + + /** + * Get macOS version name + * 10.5 - Leopard + * 10.6 - Snow Leopard + * 10.7 - Lion + * 10.8 - Mountain Lion + * 10.9 - Mavericks + * 10.10 - Yosemite + * 10.11 - El Capitan + * 10.12 - Sierra + * 10.13 - High Sierra + * 10.14 - Mojave + * 10.15 - Catalina + * 11 - Big Sur + * 12 - Monterey + * 13 - Ventura + * 14 - Sonoma + * 15 - Sequoia + * + * @example + * getMacOSVersionName("10.14") // 'Mojave' + * + * @param {string} version + * @return {string} versionName + */ + static getMacOSVersionName(version) { + const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0); + v.push(0); + const major = v[0]; + const minor = v[1]; + + if (major === 10) { + switch (minor) { + case 5: return 'Leopard'; + case 6: return 'Snow Leopard'; + case 7: return 'Lion'; + case 8: return 'Mountain Lion'; + case 9: return 'Mavericks'; + case 10: return 'Yosemite'; + case 11: return 'El Capitan'; + case 12: return 'Sierra'; + case 13: return 'High Sierra'; + case 14: return 'Mojave'; + case 15: return 'Catalina'; + default: return undefined; + } + } + + switch (major) { + case 11: return 'Big Sur'; + case 12: return 'Monterey'; + case 13: return 'Ventura'; + case 14: return 'Sonoma'; + case 15: return 'Sequoia'; + default: return undefined; + } + } + + /** + * Get Android version name + * 1.5 - Cupcake + * 1.6 - Donut + * 2.0 - Eclair + * 2.1 - Eclair + * 2.2 - Froyo + * 2.x - Gingerbread + * 3.x - Honeycomb + * 4.0 - Ice Cream Sandwich + * 4.1 - Jelly Bean + * 4.4 - KitKat + * 5.x - Lollipop + * 6.x - Marshmallow + * 7.x - Nougat + * 8.x - Oreo + * 9.x - Pie + * + * @example + * getAndroidVersionName("7.0") // 'Nougat' + * + * @param {string} version + * @return {string} versionName + */ + static getAndroidVersionName(version) { + const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0); + v.push(0); + if (v[0] === 1 && v[1] < 5) return undefined; + if (v[0] === 1 && v[1] < 6) return 'Cupcake'; + if (v[0] === 1 && v[1] >= 6) return 'Donut'; + if (v[0] === 2 && v[1] < 2) return 'Eclair'; + if (v[0] === 2 && v[1] === 2) return 'Froyo'; + if (v[0] === 2 && v[1] > 2) return 'Gingerbread'; + if (v[0] === 3) return 'Honeycomb'; + if (v[0] === 4 && v[1] < 1) return 'Ice Cream Sandwich'; + if (v[0] === 4 && v[1] < 4) return 'Jelly Bean'; + if (v[0] === 4 && v[1] >= 4) return 'KitKat'; + if (v[0] === 5) return 'Lollipop'; + if (v[0] === 6) return 'Marshmallow'; + if (v[0] === 7) return 'Nougat'; + if (v[0] === 8) return 'Oreo'; + if (v[0] === 9) return 'Pie'; + return undefined; + } + + /** + * Get version precisions count + * + * @example + * getVersionPrecision("1.10.3") // 3 + * + * @param {string} version + * @return {number} + */ + static getVersionPrecision(version) { + return version.split('.').length; + } + + /** + * Calculate browser version weight + * + * @example + * compareVersions('1.10.2.1', '1.8.2.1.90') // 1 + * compareVersions('1.010.2.1', '1.09.2.1.90'); // 1 + * compareVersions('1.10.2.1', '1.10.2.1'); // 0 + * compareVersions('1.10.2.1', '1.0800.2'); // -1 + * compareVersions('1.10.2.1', '1.10', true); // 0 + * + * @param {String} versionA versions versions to compare + * @param {String} versionB versions versions to compare + * @param {boolean} [isLoose] enable loose comparison + * @return {Number} comparison result: -1 when versionA is lower, + * 1 when versionA is bigger, 0 when both equal + */ + /* eslint consistent-return: 1 */ + static compareVersions(versionA, versionB, isLoose = false) { + // 1) get common precision for both versions, for example for "10.0" and "9" it should be 2 + const versionAPrecision = Utils.getVersionPrecision(versionA); + const versionBPrecision = Utils.getVersionPrecision(versionB); + + let precision = Math.max(versionAPrecision, versionBPrecision); + let lastPrecision = 0; + + const chunks = Utils.map([versionA, versionB], (version) => { + const delta = precision - Utils.getVersionPrecision(version); + + // 2) "9" -> "9.0" (for precision = 2) + const _version = version + new Array(delta + 1).join('.0'); + + // 3) "9.0" -> ["000000000"", "000000009"] + return Utils.map(_version.split('.'), chunk => new Array(20 - chunk.length).join('0') + chunk).reverse(); + }); + + // adjust precision for loose comparison + if (isLoose) { + lastPrecision = precision - Math.min(versionAPrecision, versionBPrecision); + } + + // iterate in reverse order by reversed chunks array + precision -= 1; + while (precision >= lastPrecision) { + // 4) compare: "000000009" > "000000010" = false (but "9" > "10" = true) + if (chunks[0][precision] > chunks[1][precision]) { + return 1; + } + + if (chunks[0][precision] === chunks[1][precision]) { + if (precision === lastPrecision) { + // all version chunks are same + return 0; + } + + precision -= 1; + } else if (chunks[0][precision] < chunks[1][precision]) { + return -1; + } + } + + return undefined; + } + + /** + * Array::map polyfill + * + * @param {Array} arr + * @param {Function} iterator + * @return {Array} + */ + static map(arr, iterator) { + const result = []; + let i; + if (Array.prototype.map) { + return Array.prototype.map.call(arr, iterator); + } + for (i = 0; i < arr.length; i += 1) { + result.push(iterator(arr[i])); + } + return result; + } + + /** + * Array::find polyfill + * + * @param {Array} arr + * @param {Function} predicate + * @return {Array} + */ + static find(arr, predicate) { + let i; + let l; + if (Array.prototype.find) { + return Array.prototype.find.call(arr, predicate); + } + for (i = 0, l = arr.length; i < l; i += 1) { + const value = arr[i]; + if (predicate(value, i)) { + return value; + } + } + return undefined; + } + + /** + * Object::assign polyfill + * + * @param {Object} obj + * @param {Object} ...objs + * @return {Object} + */ + static assign(obj, ...assigners) { + const result = obj; + let i; + let l; + if (Object.assign) { + return Object.assign(obj, ...assigners); + } + for (i = 0, l = assigners.length; i < l; i += 1) { + const assigner = assigners[i]; + if (typeof assigner === 'object' && assigner !== null) { + const keys = Object.keys(assigner); + keys.forEach((key) => { + result[key] = assigner[key]; + }); + } + } + return obj; + } + + /** + * Get short version/alias for a browser name + * + * @example + * getBrowserAlias('Microsoft Edge') // edge + * + * @param {string} browserName + * @return {string} + */ + static getBrowserAlias(browserName) { + return BROWSER_ALIASES_MAP[browserName]; + } + + /** + * Get browser name for a short version/alias + * + * @example + * getBrowserTypeByAlias('edge') // Microsoft Edge + * + * @param {string} browserAlias + * @return {string} + */ + static getBrowserTypeByAlias(browserAlias) { + return BROWSER_MAP[browserAlias] || ''; + } +} diff --git a/bff/node_modules/buffer-equal-constant-time/.npmignore b/bff/node_modules/buffer-equal-constant-time/.npmignore new file mode 100644 index 0000000..34e4f5c --- /dev/null +++ b/bff/node_modules/buffer-equal-constant-time/.npmignore @@ -0,0 +1,2 @@ +.*.sw[mnop] +node_modules/ diff --git a/bff/node_modules/buffer-equal-constant-time/.travis.yml b/bff/node_modules/buffer-equal-constant-time/.travis.yml new file mode 100644 index 0000000..78e1c01 --- /dev/null +++ b/bff/node_modules/buffer-equal-constant-time/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: +- "0.11" +- "0.10" diff --git a/bff/node_modules/buffer-equal-constant-time/LICENSE.txt b/bff/node_modules/buffer-equal-constant-time/LICENSE.txt new file mode 100644 index 0000000..9a064f3 --- /dev/null +++ b/bff/node_modules/buffer-equal-constant-time/LICENSE.txt @@ -0,0 +1,12 @@ +Copyright (c) 2013, GoInstant Inc., a salesforce.com company +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +* Neither the name of salesforce.com, nor GoInstant, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/bff/node_modules/buffer-equal-constant-time/README.md b/bff/node_modules/buffer-equal-constant-time/README.md new file mode 100644 index 0000000..4f227f5 --- /dev/null +++ b/bff/node_modules/buffer-equal-constant-time/README.md @@ -0,0 +1,50 @@ +# buffer-equal-constant-time + +Constant-time `Buffer` comparison for node.js. Should work with browserify too. + +[![Build Status](https://travis-ci.org/goinstant/buffer-equal-constant-time.png?branch=master)](https://travis-ci.org/goinstant/buffer-equal-constant-time) + +```sh + npm install buffer-equal-constant-time +``` + +# Usage + +```js + var bufferEq = require('buffer-equal-constant-time'); + + var a = new Buffer('asdf'); + var b = new Buffer('asdf'); + if (bufferEq(a,b)) { + // the same! + } else { + // different in at least one byte! + } +``` + +If you'd like to install an `.equal()` method onto the node.js `Buffer` and +`SlowBuffer` prototypes: + +```js + require('buffer-equal-constant-time').install(); + + var a = new Buffer('asdf'); + var b = new Buffer('asdf'); + if (a.equal(b)) { + // the same! + } else { + // different in at least one byte! + } +``` + +To get rid of the installed `.equal()` method, call `.restore()`: + +```js + require('buffer-equal-constant-time').restore(); +``` + +# Legal + +© 2013 GoInstant Inc., a salesforce.com company + +Licensed under the BSD 3-clause license. diff --git a/bff/node_modules/buffer-equal-constant-time/index.js b/bff/node_modules/buffer-equal-constant-time/index.js new file mode 100644 index 0000000..5462c1f --- /dev/null +++ b/bff/node_modules/buffer-equal-constant-time/index.js @@ -0,0 +1,41 @@ +/*jshint node:true */ +'use strict'; +var Buffer = require('buffer').Buffer; // browserify +var SlowBuffer = require('buffer').SlowBuffer; + +module.exports = bufferEq; + +function bufferEq(a, b) { + + // shortcutting on type is necessary for correctness + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + return false; + } + + // buffer sizes should be well-known information, so despite this + // shortcutting, it doesn't leak any information about the *contents* of the + // buffers. + if (a.length !== b.length) { + return false; + } + + var c = 0; + for (var i = 0; i < a.length; i++) { + /*jshint bitwise:false */ + c |= a[i] ^ b[i]; // XOR + } + return c === 0; +} + +bufferEq.install = function() { + Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) { + return bufferEq(this, that); + }; +}; + +var origBufEqual = Buffer.prototype.equal; +var origSlowBufEqual = SlowBuffer.prototype.equal; +bufferEq.restore = function() { + Buffer.prototype.equal = origBufEqual; + SlowBuffer.prototype.equal = origSlowBufEqual; +}; diff --git a/bff/node_modules/buffer-equal-constant-time/package.json b/bff/node_modules/buffer-equal-constant-time/package.json new file mode 100644 index 0000000..17c7de2 --- /dev/null +++ b/bff/node_modules/buffer-equal-constant-time/package.json @@ -0,0 +1,21 @@ +{ + "name": "buffer-equal-constant-time", + "version": "1.0.1", + "description": "Constant-time comparison of Buffers", + "main": "index.js", + "scripts": { + "test": "mocha test.js" + }, + "repository": "git@github.com:goinstant/buffer-equal-constant-time.git", + "keywords": [ + "buffer", + "equal", + "constant-time", + "crypto" + ], + "author": "GoInstant Inc., a salesforce.com company", + "license": "BSD-3-Clause", + "devDependencies": { + "mocha": "~1.15.1" + } +} diff --git a/bff/node_modules/buffer-equal-constant-time/test.js b/bff/node_modules/buffer-equal-constant-time/test.js new file mode 100644 index 0000000..0bc972d --- /dev/null +++ b/bff/node_modules/buffer-equal-constant-time/test.js @@ -0,0 +1,42 @@ +/*jshint node:true */ +'use strict'; + +var bufferEq = require('./index'); +var assert = require('assert'); + +describe('buffer-equal-constant-time', function() { + var a = new Buffer('asdfasdf123456'); + var b = new Buffer('asdfasdf123456'); + var c = new Buffer('asdfasdf'); + + describe('bufferEq', function() { + it('says a == b', function() { + assert.strictEqual(bufferEq(a, b), true); + }); + + it('says a != c', function() { + assert.strictEqual(bufferEq(a, c), false); + }); + }); + + describe('install/restore', function() { + before(function() { + bufferEq.install(); + }); + after(function() { + bufferEq.restore(); + }); + + it('installed an .equal method', function() { + var SlowBuffer = require('buffer').SlowBuffer; + assert.ok(Buffer.prototype.equal); + assert.ok(SlowBuffer.prototype.equal); + }); + + it('infected existing Buffers', function() { + assert.strictEqual(a.equal(b), true); + assert.strictEqual(a.equal(c), false); + }); + }); + +}); diff --git a/bff/node_modules/buffer-from/LICENSE b/bff/node_modules/buffer-from/LICENSE new file mode 100644 index 0000000..e4bf1d6 --- /dev/null +++ b/bff/node_modules/buffer-from/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016, 2018 Linus Unnebäck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/buffer-from/index.js b/bff/node_modules/buffer-from/index.js new file mode 100644 index 0000000..e1a58b5 --- /dev/null +++ b/bff/node_modules/buffer-from/index.js @@ -0,0 +1,72 @@ +/* eslint-disable node/no-deprecated-api */ + +var toString = Object.prototype.toString + +var isModern = ( + typeof Buffer !== 'undefined' && + typeof Buffer.alloc === 'function' && + typeof Buffer.allocUnsafe === 'function' && + typeof Buffer.from === 'function' +) + +function isArrayBuffer (input) { + return toString.call(input).slice(8, -1) === 'ArrayBuffer' +} + +function fromArrayBuffer (obj, byteOffset, length) { + byteOffset >>>= 0 + + var maxLength = obj.byteLength - byteOffset + + if (maxLength < 0) { + throw new RangeError("'offset' is out of bounds") + } + + if (length === undefined) { + length = maxLength + } else { + length >>>= 0 + + if (length > maxLength) { + throw new RangeError("'length' is out of bounds") + } + } + + return isModern + ? Buffer.from(obj.slice(byteOffset, byteOffset + length)) + : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length))) +} + +function fromString (string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + return isModern + ? Buffer.from(string, encoding) + : new Buffer(string, encoding) +} + +function bufferFrom (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (isArrayBuffer(value)) { + return fromArrayBuffer(value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(value, encodingOrOffset) + } + + return isModern + ? Buffer.from(value) + : new Buffer(value) +} + +module.exports = bufferFrom diff --git a/bff/node_modules/buffer-from/package.json b/bff/node_modules/buffer-from/package.json new file mode 100644 index 0000000..6ac5327 --- /dev/null +++ b/bff/node_modules/buffer-from/package.json @@ -0,0 +1,19 @@ +{ + "name": "buffer-from", + "version": "1.1.2", + "license": "MIT", + "repository": "LinusU/buffer-from", + "files": [ + "index.js" + ], + "scripts": { + "test": "standard && node test" + }, + "devDependencies": { + "standard": "^12.0.1" + }, + "keywords": [ + "buffer", + "buffer from" + ] +} diff --git a/bff/node_modules/buffer-from/readme.md b/bff/node_modules/buffer-from/readme.md new file mode 100644 index 0000000..9880a55 --- /dev/null +++ b/bff/node_modules/buffer-from/readme.md @@ -0,0 +1,69 @@ +# Buffer From + +A [ponyfill](https://ponyfill.com) for `Buffer.from`, uses native implementation if available. + +## Installation + +```sh +npm install --save buffer-from +``` + +## Usage + +```js +const bufferFrom = require('buffer-from') + +console.log(bufferFrom([1, 2, 3, 4])) +//=> + +const arr = new Uint8Array([1, 2, 3, 4]) +console.log(bufferFrom(arr.buffer, 1, 2)) +//=> + +console.log(bufferFrom('test', 'utf8')) +//=> + +const buf = bufferFrom('test') +console.log(bufferFrom(buf)) +//=> +``` + +## API + +### bufferFrom(array) + +- `array` <Array> + +Allocates a new `Buffer` using an `array` of octets. + +### bufferFrom(arrayBuffer[, byteOffset[, length]]) + +- `arrayBuffer` <ArrayBuffer> The `.buffer` property of a TypedArray or ArrayBuffer +- `byteOffset` <Integer> Where to start copying from `arrayBuffer`. **Default:** `0` +- `length` <Integer> How many bytes to copy from `arrayBuffer`. **Default:** `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a TypedArray instance, the +newly created `Buffer` will share the same allocated memory as the TypedArray. + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +### bufferFrom(buffer) + +- `buffer` <Buffer> An existing `Buffer` to copy data from + +Copies the passed `buffer` data onto a new `Buffer` instance. + +### bufferFrom(string[, encoding]) + +- `string` <String> A string to encode. +- `encoding` <String> The encoding of `string`. **Default:** `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `string`. If +provided, the `encoding` parameter identifies the character encoding of +`string`. + +## See also + +- [buffer-alloc](https://github.com/LinusU/buffer-alloc) A ponyfill for `Buffer.alloc` +- [buffer-alloc-unsafe](https://github.com/LinusU/buffer-alloc-unsafe) A ponyfill for `Buffer.allocUnsafe` diff --git a/bff/node_modules/busboy/.eslintrc.js b/bff/node_modules/busboy/.eslintrc.js new file mode 100644 index 0000000..be9311d --- /dev/null +++ b/bff/node_modules/busboy/.eslintrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + extends: '@mscdex/eslint-config', +}; diff --git a/bff/node_modules/busboy/.github/workflows/ci.yml b/bff/node_modules/busboy/.github/workflows/ci.yml new file mode 100644 index 0000000..799bae0 --- /dev/null +++ b/bff/node_modules/busboy/.github/workflows/ci.yml @@ -0,0 +1,24 @@ +name: CI + +on: + pull_request: + push: + branches: [ master ] + +jobs: + tests-linux: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + node-version: [10.16.0, 10.x, 12.x, 14.x, 16.x] + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - name: Install module + run: npm install + - name: Run tests + run: npm test diff --git a/bff/node_modules/busboy/.github/workflows/lint.yml b/bff/node_modules/busboy/.github/workflows/lint.yml new file mode 100644 index 0000000..9f9e1f5 --- /dev/null +++ b/bff/node_modules/busboy/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: lint + +on: + pull_request: + push: + branches: [ master ] + +env: + NODE_VERSION: 16.x + +jobs: + lint-js: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v1 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Install ESLint + ESLint configs/plugins + run: npm install --only=dev + - name: Lint files + run: npm run lint diff --git a/bff/node_modules/busboy/LICENSE b/bff/node_modules/busboy/LICENSE new file mode 100644 index 0000000..290762e --- /dev/null +++ b/bff/node_modules/busboy/LICENSE @@ -0,0 +1,19 @@ +Copyright Brian White. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. \ No newline at end of file diff --git a/bff/node_modules/busboy/README.md b/bff/node_modules/busboy/README.md new file mode 100644 index 0000000..654af30 --- /dev/null +++ b/bff/node_modules/busboy/README.md @@ -0,0 +1,191 @@ +# Description + +A node.js module for parsing incoming HTML form data. + +Changes (breaking or otherwise) in v1.0.0 can be found [here](https://github.com/mscdex/busboy/issues/266). + +# Requirements + +* [node.js](http://nodejs.org/) -- v10.16.0 or newer + + +# Install + + npm install busboy + + +# Examples + +* Parsing (multipart) with default options: + +```js +const http = require('http'); + +const busboy = require('busboy'); + +http.createServer((req, res) => { + if (req.method === 'POST') { + console.log('POST request'); + const bb = busboy({ headers: req.headers }); + bb.on('file', (name, file, info) => { + const { filename, encoding, mimeType } = info; + console.log( + `File [${name}]: filename: %j, encoding: %j, mimeType: %j`, + filename, + encoding, + mimeType + ); + file.on('data', (data) => { + console.log(`File [${name}] got ${data.length} bytes`); + }).on('close', () => { + console.log(`File [${name}] done`); + }); + }); + bb.on('field', (name, val, info) => { + console.log(`Field [${name}]: value: %j`, val); + }); + bb.on('close', () => { + console.log('Done parsing form!'); + res.writeHead(303, { Connection: 'close', Location: '/' }); + res.end(); + }); + req.pipe(bb); + } else if (req.method === 'GET') { + res.writeHead(200, { Connection: 'close' }); + res.end(` + + + +
+
+
+ +
+ + + `); + } +}).listen(8000, () => { + console.log('Listening for requests'); +}); + +// Example output: +// +// Listening for requests +// < ... form submitted ... > +// POST request +// File [filefield]: filename: "logo.jpg", encoding: "binary", mime: "image/jpeg" +// File [filefield] got 11912 bytes +// Field [textfield]: value: "testing! :-)" +// File [filefield] done +// Done parsing form! +``` + +* Save all incoming files to disk: + +```js +const { randomFillSync } = require('crypto'); +const fs = require('fs'); +const http = require('http'); +const os = require('os'); +const path = require('path'); + +const busboy = require('busboy'); + +const random = (() => { + const buf = Buffer.alloc(16); + return () => randomFillSync(buf).toString('hex'); +})(); + +http.createServer((req, res) => { + if (req.method === 'POST') { + const bb = busboy({ headers: req.headers }); + bb.on('file', (name, file, info) => { + const saveTo = path.join(os.tmpdir(), `busboy-upload-${random()}`); + file.pipe(fs.createWriteStream(saveTo)); + }); + bb.on('close', () => { + res.writeHead(200, { 'Connection': 'close' }); + res.end(`That's all folks!`); + }); + req.pipe(bb); + return; + } + res.writeHead(404); + res.end(); +}).listen(8000, () => { + console.log('Listening for requests'); +}); +``` + + +# API + +## Exports + +`busboy` exports a single function: + +**( _function_ )**(< _object_ >config) - Creates and returns a new _Writable_ form parser stream. + +* Valid `config` properties: + + * **headers** - _object_ - These are the HTTP headers of the incoming request, which are used by individual parsers. + + * **highWaterMark** - _integer_ - highWaterMark to use for the parser stream. **Default:** node's _stream.Writable_ default. + + * **fileHwm** - _integer_ - highWaterMark to use for individual file streams. **Default:** node's _stream.Readable_ default. + + * **defCharset** - _string_ - Default character set to use when one isn't defined. **Default:** `'utf8'`. + + * **defParamCharset** - _string_ - For multipart forms, the default character set to use for values of part header parameters (e.g. filename) that are not extended parameters (that contain an explicit charset). **Default:** `'latin1'`. + + * **preservePath** - _boolean_ - If paths in filenames from file parts in a `'multipart/form-data'` request shall be preserved. **Default:** `false`. + + * **limits** - _object_ - Various limits on incoming data. Valid properties are: + + * **fieldNameSize** - _integer_ - Max field name size (in bytes). **Default:** `100`. + + * **fieldSize** - _integer_ - Max field value size (in bytes). **Default:** `1048576` (1MB). + + * **fields** - _integer_ - Max number of non-file fields. **Default:** `Infinity`. + + * **fileSize** - _integer_ - For multipart forms, the max file size (in bytes). **Default:** `Infinity`. + + * **files** - _integer_ - For multipart forms, the max number of file fields. **Default:** `Infinity`. + + * **parts** - _integer_ - For multipart forms, the max number of parts (fields + files). **Default:** `Infinity`. + + * **headerPairs** - _integer_ - For multipart forms, the max number of header key-value pairs to parse. **Default:** `2000` (same as node's http module). + +This function can throw exceptions if there is something wrong with the values in `config`. For example, if the Content-Type in `headers` is missing entirely, is not a supported type, or is missing the boundary for `'multipart/form-data'` requests. + +## (Special) Parser stream events + +* **file**(< _string_ >name, < _Readable_ >stream, < _object_ >info) - Emitted for each new file found. `name` contains the form field name. `stream` is a _Readable_ stream containing the file's data. No transformations/conversions (e.g. base64 to raw binary) are done on the file's data. `info` contains the following properties: + + * `filename` - _string_ - If supplied, this contains the file's filename. **WARNING:** You should almost _never_ use this value as-is (especially if you are using `preservePath: true` in your `config`) as it could contain malicious input. You are better off generating your own (safe) filenames, or at the very least using a hash of the filename. + + * `encoding` - _string_ - The file's `'Content-Transfer-Encoding'` value. + + * `mimeType` - _string_ - The file's `'Content-Type'` value. + + **Note:** If you listen for this event, you should always consume the `stream` whether you care about its contents or not (you can simply do `stream.resume();` if you want to discard/skip the contents), otherwise the `'finish'`/`'close'` event will never fire on the busboy parser stream. + However, if you aren't accepting files, you can either simply not listen for the `'file'` event at all or set `limits.files` to `0`, and any/all files will be automatically skipped (these skipped files will still count towards any configured `limits.files` and `limits.parts` limits though). + + **Note:** If a configured `limits.fileSize` limit was reached for a file, `stream` will both have a boolean property `truncated` set to `true` (best checked at the end of the stream) and emit a `'limit'` event to notify you when this happens. + +* **field**(< _string_ >name, < _string_ >value, < _object_ >info) - Emitted for each new non-file field found. `name` contains the form field name. `value` contains the string value of the field. `info` contains the following properties: + + * `nameTruncated` - _boolean_ - Whether `name` was truncated or not (due to a configured `limits.fieldNameSize` limit) + + * `valueTruncated` - _boolean_ - Whether `value` was truncated or not (due to a configured `limits.fieldSize` limit) + + * `encoding` - _string_ - The field's `'Content-Transfer-Encoding'` value. + + * `mimeType` - _string_ - The field's `'Content-Type'` value. + +* **partsLimit**() - Emitted when the configured `limits.parts` limit has been reached. No more `'file'` or `'field'` events will be emitted. + +* **filesLimit**() - Emitted when the configured `limits.files` limit has been reached. No more `'file'` events will be emitted. + +* **fieldsLimit**() - Emitted when the configured `limits.fields` limit has been reached. No more `'field'` events will be emitted. diff --git a/bff/node_modules/busboy/bench/bench-multipart-fields-100mb-big.js b/bff/node_modules/busboy/bench/bench-multipart-fields-100mb-big.js new file mode 100644 index 0000000..ef15729 --- /dev/null +++ b/bff/node_modules/busboy/bench/bench-multipart-fields-100mb-big.js @@ -0,0 +1,149 @@ +'use strict'; + +function createMultipartBuffers(boundary, sizes) { + const bufs = []; + for (let i = 0; i < sizes.length; ++i) { + const mb = sizes[i] * 1024 * 1024; + bufs.push(Buffer.from([ + `--${boundary}`, + `content-disposition: form-data; name="field${i + 1}"`, + '', + '0'.repeat(mb), + '', + ].join('\r\n'))); + } + bufs.push(Buffer.from([ + `--${boundary}--`, + '', + ].join('\r\n'))); + return bufs; +} + +const boundary = '-----------------------------168072824752491622650073'; +const buffers = createMultipartBuffers(boundary, [ + 10, + 10, + 10, + 20, + 50, +]); +const calls = { + partBegin: 0, + headerField: 0, + headerValue: 0, + headerEnd: 0, + headersEnd: 0, + partData: 0, + partEnd: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }, + }); + parser.on('field', (name, val, info) => { + ++calls.partBegin; + ++calls.partData; + ++calls.partEnd; + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + break; + } + + case 'formidable': { + const { MultipartParser } = require('formidable'); + + const parser = new MultipartParser(); + parser.initWithBoundary(boundary); + parser.on('data', ({ name }) => { + ++calls[name]; + if (name === 'end') + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + + break; + } + + case 'multiparty': { + const { Readable } = require('stream'); + + const { Form } = require('multiparty'); + + const form = new Form({ + maxFieldsSize: Infinity, + maxFields: Infinity, + maxFilesSize: Infinity, + autoFields: false, + autoFiles: false, + }); + + const req = new Readable({ read: () => {} }); + req.headers = { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }; + + function hijack(name, fn) { + const oldFn = form[name]; + form[name] = function() { + fn(); + return oldFn.apply(this, arguments); + }; + } + + hijack('onParseHeaderField', () => { + ++calls.headerField; + }); + hijack('onParseHeaderValue', () => { + ++calls.headerValue; + }); + hijack('onParsePartBegin', () => { + ++calls.partBegin; + }); + hijack('onParsePartData', () => { + ++calls.partData; + }); + hijack('onParsePartEnd', () => { + ++calls.partEnd; + }); + + form.on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }).on('part', (p) => p.resume()); + + console.time(moduleName); + form.parse(req); + for (const buf of buffers) + req.push(buf); + req.push(null); + + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/bff/node_modules/busboy/bench/bench-multipart-fields-100mb-small.js b/bff/node_modules/busboy/bench/bench-multipart-fields-100mb-small.js new file mode 100644 index 0000000..f32d421 --- /dev/null +++ b/bff/node_modules/busboy/bench/bench-multipart-fields-100mb-small.js @@ -0,0 +1,143 @@ +'use strict'; + +function createMultipartBuffers(boundary, sizes) { + const bufs = []; + for (let i = 0; i < sizes.length; ++i) { + const mb = sizes[i] * 1024 * 1024; + bufs.push(Buffer.from([ + `--${boundary}`, + `content-disposition: form-data; name="field${i + 1}"`, + '', + '0'.repeat(mb), + '', + ].join('\r\n'))); + } + bufs.push(Buffer.from([ + `--${boundary}--`, + '', + ].join('\r\n'))); + return bufs; +} + +const boundary = '-----------------------------168072824752491622650073'; +const buffers = createMultipartBuffers(boundary, (new Array(100)).fill(1)); +const calls = { + partBegin: 0, + headerField: 0, + headerValue: 0, + headerEnd: 0, + headersEnd: 0, + partData: 0, + partEnd: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }, + }); + parser.on('field', (name, val, info) => { + ++calls.partBegin; + ++calls.partData; + ++calls.partEnd; + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + break; + } + + case 'formidable': { + const { MultipartParser } = require('formidable'); + + const parser = new MultipartParser(); + parser.initWithBoundary(boundary); + parser.on('data', ({ name }) => { + ++calls[name]; + if (name === 'end') + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + + break; + } + + case 'multiparty': { + const { Readable } = require('stream'); + + const { Form } = require('multiparty'); + + const form = new Form({ + maxFieldsSize: Infinity, + maxFields: Infinity, + maxFilesSize: Infinity, + autoFields: false, + autoFiles: false, + }); + + const req = new Readable({ read: () => {} }); + req.headers = { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }; + + function hijack(name, fn) { + const oldFn = form[name]; + form[name] = function() { + fn(); + return oldFn.apply(this, arguments); + }; + } + + hijack('onParseHeaderField', () => { + ++calls.headerField; + }); + hijack('onParseHeaderValue', () => { + ++calls.headerValue; + }); + hijack('onParsePartBegin', () => { + ++calls.partBegin; + }); + hijack('onParsePartData', () => { + ++calls.partData; + }); + hijack('onParsePartEnd', () => { + ++calls.partEnd; + }); + + form.on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }).on('part', (p) => p.resume()); + + console.time(moduleName); + form.parse(req); + for (const buf of buffers) + req.push(buf); + req.push(null); + + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/bff/node_modules/busboy/bench/bench-multipart-files-100mb-big.js b/bff/node_modules/busboy/bench/bench-multipart-files-100mb-big.js new file mode 100644 index 0000000..b46bdee --- /dev/null +++ b/bff/node_modules/busboy/bench/bench-multipart-files-100mb-big.js @@ -0,0 +1,154 @@ +'use strict'; + +function createMultipartBuffers(boundary, sizes) { + const bufs = []; + for (let i = 0; i < sizes.length; ++i) { + const mb = sizes[i] * 1024 * 1024; + bufs.push(Buffer.from([ + `--${boundary}`, + `content-disposition: form-data; name="file${i + 1}"; ` + + `filename="random${i + 1}.bin"`, + 'content-type: application/octet-stream', + '', + '0'.repeat(mb), + '', + ].join('\r\n'))); + } + bufs.push(Buffer.from([ + `--${boundary}--`, + '', + ].join('\r\n'))); + return bufs; +} + +const boundary = '-----------------------------168072824752491622650073'; +const buffers = createMultipartBuffers(boundary, [ + 10, + 10, + 10, + 20, + 50, +]); +const calls = { + partBegin: 0, + headerField: 0, + headerValue: 0, + headerEnd: 0, + headersEnd: 0, + partData: 0, + partEnd: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }, + }); + parser.on('file', (name, stream, info) => { + ++calls.partBegin; + stream.on('data', (chunk) => { + ++calls.partData; + }).on('end', () => { + ++calls.partEnd; + }); + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + break; + } + + case 'formidable': { + const { MultipartParser } = require('formidable'); + + const parser = new MultipartParser(); + parser.initWithBoundary(boundary); + parser.on('data', ({ name }) => { + ++calls[name]; + if (name === 'end') + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + + break; + } + + case 'multiparty': { + const { Readable } = require('stream'); + + const { Form } = require('multiparty'); + + const form = new Form({ + maxFieldsSize: Infinity, + maxFields: Infinity, + maxFilesSize: Infinity, + autoFields: false, + autoFiles: false, + }); + + const req = new Readable({ read: () => {} }); + req.headers = { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }; + + function hijack(name, fn) { + const oldFn = form[name]; + form[name] = function() { + fn(); + return oldFn.apply(this, arguments); + }; + } + + hijack('onParseHeaderField', () => { + ++calls.headerField; + }); + hijack('onParseHeaderValue', () => { + ++calls.headerValue; + }); + hijack('onParsePartBegin', () => { + ++calls.partBegin; + }); + hijack('onParsePartData', () => { + ++calls.partData; + }); + hijack('onParsePartEnd', () => { + ++calls.partEnd; + }); + + form.on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }).on('part', (p) => p.resume()); + + console.time(moduleName); + form.parse(req); + for (const buf of buffers) + req.push(buf); + req.push(null); + + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/bff/node_modules/busboy/bench/bench-multipart-files-100mb-small.js b/bff/node_modules/busboy/bench/bench-multipart-files-100mb-small.js new file mode 100644 index 0000000..46b5dff --- /dev/null +++ b/bff/node_modules/busboy/bench/bench-multipart-files-100mb-small.js @@ -0,0 +1,148 @@ +'use strict'; + +function createMultipartBuffers(boundary, sizes) { + const bufs = []; + for (let i = 0; i < sizes.length; ++i) { + const mb = sizes[i] * 1024 * 1024; + bufs.push(Buffer.from([ + `--${boundary}`, + `content-disposition: form-data; name="file${i + 1}"; ` + + `filename="random${i + 1}.bin"`, + 'content-type: application/octet-stream', + '', + '0'.repeat(mb), + '', + ].join('\r\n'))); + } + bufs.push(Buffer.from([ + `--${boundary}--`, + '', + ].join('\r\n'))); + return bufs; +} + +const boundary = '-----------------------------168072824752491622650073'; +const buffers = createMultipartBuffers(boundary, (new Array(100)).fill(1)); +const calls = { + partBegin: 0, + headerField: 0, + headerValue: 0, + headerEnd: 0, + headersEnd: 0, + partData: 0, + partEnd: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }, + }); + parser.on('file', (name, stream, info) => { + ++calls.partBegin; + stream.on('data', (chunk) => { + ++calls.partData; + }).on('end', () => { + ++calls.partEnd; + }); + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + break; + } + + case 'formidable': { + const { MultipartParser } = require('formidable'); + + const parser = new MultipartParser(); + parser.initWithBoundary(boundary); + parser.on('data', ({ name }) => { + ++calls[name]; + if (name === 'end') + console.timeEnd(moduleName); + }); + + console.time(moduleName); + for (const buf of buffers) + parser.write(buf); + + break; + } + + case 'multiparty': { + const { Readable } = require('stream'); + + const { Form } = require('multiparty'); + + const form = new Form({ + maxFieldsSize: Infinity, + maxFields: Infinity, + maxFilesSize: Infinity, + autoFields: false, + autoFiles: false, + }); + + const req = new Readable({ read: () => {} }); + req.headers = { + 'content-type': `multipart/form-data; boundary=${boundary}`, + }; + + function hijack(name, fn) { + const oldFn = form[name]; + form[name] = function() { + fn(); + return oldFn.apply(this, arguments); + }; + } + + hijack('onParseHeaderField', () => { + ++calls.headerField; + }); + hijack('onParseHeaderValue', () => { + ++calls.headerValue; + }); + hijack('onParsePartBegin', () => { + ++calls.partBegin; + }); + hijack('onParsePartData', () => { + ++calls.partData; + }); + hijack('onParsePartEnd', () => { + ++calls.partEnd; + }); + + form.on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }).on('part', (p) => p.resume()); + + console.time(moduleName); + form.parse(req); + for (const buf of buffers) + req.push(buf); + req.push(null); + + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/bff/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js b/bff/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js new file mode 100644 index 0000000..5c337df --- /dev/null +++ b/bff/node_modules/busboy/bench/bench-urlencoded-fields-100pairs-small.js @@ -0,0 +1,101 @@ +'use strict'; + +const buffers = [ + Buffer.from( + (new Array(100)).fill('').map((_, i) => `key${i}=value${i}`).join('&') + ), +]; +const calls = { + field: 0, + end: 0, +}; + +let n = 3e3; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + console.time(moduleName); + (function next() { + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': 'application/x-www-form-urlencoded; charset=utf-8', + }, + }); + parser.on('field', (name, val, info) => { + ++calls.field; + }).on('close', () => { + ++calls.end; + if (--n === 0) + console.timeEnd(moduleName); + else + process.nextTick(next); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + })(); + break; + } + + case 'formidable': { + const QuerystringParser = + require('formidable/src/parsers/Querystring.js'); + + console.time(moduleName); + (function next() { + const parser = new QuerystringParser(); + parser.on('data', (obj) => { + ++calls.field; + }).on('end', () => { + ++calls.end; + if (--n === 0) + console.timeEnd(moduleName); + else + process.nextTick(next); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + })(); + break; + } + + case 'formidable-streaming': { + const QuerystringParser = + require('formidable/src/parsers/StreamingQuerystring.js'); + + console.time(moduleName); + (function next() { + const parser = new QuerystringParser(); + parser.on('data', (obj) => { + ++calls.field; + }).on('end', () => { + ++calls.end; + if (--n === 0) + console.timeEnd(moduleName); + else + process.nextTick(next); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + })(); + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/bff/node_modules/busboy/bench/bench-urlencoded-fields-900pairs-small-alt.js b/bff/node_modules/busboy/bench/bench-urlencoded-fields-900pairs-small-alt.js new file mode 100644 index 0000000..1f5645c --- /dev/null +++ b/bff/node_modules/busboy/bench/bench-urlencoded-fields-900pairs-small-alt.js @@ -0,0 +1,84 @@ +'use strict'; + +const buffers = [ + Buffer.from( + (new Array(900)).fill('').map((_, i) => `key${i}=value${i}`).join('&') + ), +]; +const calls = { + field: 0, + end: 0, +}; + +const moduleName = process.argv[2]; +switch (moduleName) { + case 'busboy': { + const busboy = require('busboy'); + + console.time(moduleName); + const parser = busboy({ + limits: { + fieldSizeLimit: Infinity, + }, + headers: { + 'content-type': 'application/x-www-form-urlencoded; charset=utf-8', + }, + }); + parser.on('field', (name, val, info) => { + ++calls.field; + }).on('close', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + break; + } + + case 'formidable': { + const QuerystringParser = + require('formidable/src/parsers/Querystring.js'); + + console.time(moduleName); + const parser = new QuerystringParser(); + parser.on('data', (obj) => { + ++calls.field; + }).on('end', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + break; + } + + case 'formidable-streaming': { + const QuerystringParser = + require('formidable/src/parsers/StreamingQuerystring.js'); + + console.time(moduleName); + const parser = new QuerystringParser(); + parser.on('data', (obj) => { + ++calls.field; + }).on('end', () => { + ++calls.end; + console.timeEnd(moduleName); + }); + + for (const buf of buffers) + parser.write(buf); + parser.end(); + break; + } + + default: + if (moduleName === undefined) + console.error('Missing parser module name'); + else + console.error(`Invalid parser module name: ${moduleName}`); + process.exit(1); +} diff --git a/bff/node_modules/busboy/lib/index.js b/bff/node_modules/busboy/lib/index.js new file mode 100644 index 0000000..873272d --- /dev/null +++ b/bff/node_modules/busboy/lib/index.js @@ -0,0 +1,57 @@ +'use strict'; + +const { parseContentType } = require('./utils.js'); + +function getInstance(cfg) { + const headers = cfg.headers; + const conType = parseContentType(headers['content-type']); + if (!conType) + throw new Error('Malformed content type'); + + for (const type of TYPES) { + const matched = type.detect(conType); + if (!matched) + continue; + + const instanceCfg = { + limits: cfg.limits, + headers, + conType, + highWaterMark: undefined, + fileHwm: undefined, + defCharset: undefined, + defParamCharset: undefined, + preservePath: false, + }; + if (cfg.highWaterMark) + instanceCfg.highWaterMark = cfg.highWaterMark; + if (cfg.fileHwm) + instanceCfg.fileHwm = cfg.fileHwm; + instanceCfg.defCharset = cfg.defCharset; + instanceCfg.defParamCharset = cfg.defParamCharset; + instanceCfg.preservePath = cfg.preservePath; + return new type(instanceCfg); + } + + throw new Error(`Unsupported content type: ${headers['content-type']}`); +} + +// Note: types are explicitly listed here for easier bundling +// See: https://github.com/mscdex/busboy/issues/121 +const TYPES = [ + require('./types/multipart'), + require('./types/urlencoded'), +].filter(function(typemod) { return typeof typemod.detect === 'function'; }); + +module.exports = (cfg) => { + if (typeof cfg !== 'object' || cfg === null) + cfg = {}; + + if (typeof cfg.headers !== 'object' + || cfg.headers === null + || typeof cfg.headers['content-type'] !== 'string') { + throw new Error('Missing Content-Type'); + } + + return getInstance(cfg); +}; diff --git a/bff/node_modules/busboy/lib/types/multipart.js b/bff/node_modules/busboy/lib/types/multipart.js new file mode 100644 index 0000000..cc0d7bb --- /dev/null +++ b/bff/node_modules/busboy/lib/types/multipart.js @@ -0,0 +1,653 @@ +'use strict'; + +const { Readable, Writable } = require('stream'); + +const StreamSearch = require('streamsearch'); + +const { + basename, + convertToUTF8, + getDecoder, + parseContentType, + parseDisposition, +} = require('../utils.js'); + +const BUF_CRLF = Buffer.from('\r\n'); +const BUF_CR = Buffer.from('\r'); +const BUF_DASH = Buffer.from('-'); + +function noop() {} + +const MAX_HEADER_PAIRS = 2000; // From node +const MAX_HEADER_SIZE = 16 * 1024; // From node (its default value) + +const HPARSER_NAME = 0; +const HPARSER_PRE_OWS = 1; +const HPARSER_VALUE = 2; +class HeaderParser { + constructor(cb) { + this.header = Object.create(null); + this.pairCount = 0; + this.byteCount = 0; + this.state = HPARSER_NAME; + this.name = ''; + this.value = ''; + this.crlf = 0; + this.cb = cb; + } + + reset() { + this.header = Object.create(null); + this.pairCount = 0; + this.byteCount = 0; + this.state = HPARSER_NAME; + this.name = ''; + this.value = ''; + this.crlf = 0; + } + + push(chunk, pos, end) { + let start = pos; + while (pos < end) { + switch (this.state) { + case HPARSER_NAME: { + let done = false; + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (TOKEN[code] !== 1) { + if (code !== 58/* ':' */) + return -1; + this.name += chunk.latin1Slice(start, pos); + if (this.name.length === 0) + return -1; + ++pos; + done = true; + this.state = HPARSER_PRE_OWS; + break; + } + } + if (!done) { + this.name += chunk.latin1Slice(start, pos); + break; + } + // FALLTHROUGH + } + case HPARSER_PRE_OWS: { + // Skip optional whitespace + let done = false; + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) { + start = pos; + done = true; + this.state = HPARSER_VALUE; + break; + } + } + if (!done) + break; + // FALLTHROUGH + } + case HPARSER_VALUE: + switch (this.crlf) { + case 0: // Nothing yet + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (FIELD_VCHAR[code] !== 1) { + if (code !== 13/* '\r' */) + return -1; + ++this.crlf; + break; + } + } + this.value += chunk.latin1Slice(start, pos++); + break; + case 1: // Received CR + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + if (chunk[pos++] !== 10/* '\n' */) + return -1; + ++this.crlf; + break; + case 2: { // Received CR LF + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (code === 32/* ' ' */ || code === 9/* '\t' */) { + // Folded value + start = pos; + this.crlf = 0; + } else { + if (++this.pairCount < MAX_HEADER_PAIRS) { + this.name = this.name.toLowerCase(); + if (this.header[this.name] === undefined) + this.header[this.name] = [this.value]; + else + this.header[this.name].push(this.value); + } + if (code === 13/* '\r' */) { + ++this.crlf; + ++pos; + } else { + // Assume start of next header field name + start = pos; + this.crlf = 0; + this.state = HPARSER_NAME; + this.name = ''; + this.value = ''; + } + } + break; + } + case 3: { // Received CR LF CR + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + if (chunk[pos++] !== 10/* '\n' */) + return -1; + // End of header + const header = this.header; + this.reset(); + this.cb(header); + return pos; + } + } + break; + } + } + + return pos; + } +} + +class FileStream extends Readable { + constructor(opts, owner) { + super(opts); + this.truncated = false; + this._readcb = null; + this.once('end', () => { + // We need to make sure that we call any outstanding _writecb() that is + // associated with this file so that processing of the rest of the form + // can continue. This may not happen if the file stream ends right after + // backpressure kicks in, so we force it here. + this._read(); + if (--owner._fileEndsLeft === 0 && owner._finalcb) { + const cb = owner._finalcb; + owner._finalcb = null; + // Make sure other 'end' event handlers get a chance to be executed + // before busboy's 'finish' event is emitted + process.nextTick(cb); + } + }); + } + _read(n) { + const cb = this._readcb; + if (cb) { + this._readcb = null; + cb(); + } + } +} + +const ignoreData = { + push: (chunk, pos) => {}, + destroy: () => {}, +}; + +function callAndUnsetCb(self, err) { + const cb = self._writecb; + self._writecb = null; + if (err) + self.destroy(err); + else if (cb) + cb(); +} + +function nullDecoder(val, hint) { + return val; +} + +class Multipart extends Writable { + constructor(cfg) { + const streamOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: (typeof cfg.highWaterMark === 'number' + ? cfg.highWaterMark + : undefined), + }; + super(streamOpts); + + if (!cfg.conType.params || typeof cfg.conType.params.boundary !== 'string') + throw new Error('Multipart: Boundary not found'); + + const boundary = cfg.conType.params.boundary; + const paramDecoder = (typeof cfg.defParamCharset === 'string' + && cfg.defParamCharset + ? getDecoder(cfg.defParamCharset) + : nullDecoder); + const defCharset = (cfg.defCharset || 'utf8'); + const preservePath = cfg.preservePath; + const fileOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: (typeof cfg.fileHwm === 'number' + ? cfg.fileHwm + : undefined), + }; + + const limits = cfg.limits; + const fieldSizeLimit = (limits && typeof limits.fieldSize === 'number' + ? limits.fieldSize + : 1 * 1024 * 1024); + const fileSizeLimit = (limits && typeof limits.fileSize === 'number' + ? limits.fileSize + : Infinity); + const filesLimit = (limits && typeof limits.files === 'number' + ? limits.files + : Infinity); + const fieldsLimit = (limits && typeof limits.fields === 'number' + ? limits.fields + : Infinity); + const partsLimit = (limits && typeof limits.parts === 'number' + ? limits.parts + : Infinity); + + let parts = -1; // Account for initial boundary + let fields = 0; + let files = 0; + let skipPart = false; + + this._fileEndsLeft = 0; + this._fileStream = undefined; + this._complete = false; + let fileSize = 0; + + let field; + let fieldSize = 0; + let partCharset; + let partEncoding; + let partType; + let partName; + let partTruncated = false; + + let hitFilesLimit = false; + let hitFieldsLimit = false; + + this._hparser = null; + const hparser = new HeaderParser((header) => { + this._hparser = null; + skipPart = false; + + partType = 'text/plain'; + partCharset = defCharset; + partEncoding = '7bit'; + partName = undefined; + partTruncated = false; + + let filename; + if (!header['content-disposition']) { + skipPart = true; + return; + } + + const disp = parseDisposition(header['content-disposition'][0], + paramDecoder); + if (!disp || disp.type !== 'form-data') { + skipPart = true; + return; + } + + if (disp.params) { + if (disp.params.name) + partName = disp.params.name; + + if (disp.params['filename*']) + filename = disp.params['filename*']; + else if (disp.params.filename) + filename = disp.params.filename; + + if (filename !== undefined && !preservePath) + filename = basename(filename); + } + + if (header['content-type']) { + const conType = parseContentType(header['content-type'][0]); + if (conType) { + partType = `${conType.type}/${conType.subtype}`; + if (conType.params && typeof conType.params.charset === 'string') + partCharset = conType.params.charset.toLowerCase(); + } + } + + if (header['content-transfer-encoding']) + partEncoding = header['content-transfer-encoding'][0].toLowerCase(); + + if (partType === 'application/octet-stream' || filename !== undefined) { + // File + + if (files === filesLimit) { + if (!hitFilesLimit) { + hitFilesLimit = true; + this.emit('filesLimit'); + } + skipPart = true; + return; + } + ++files; + + if (this.listenerCount('file') === 0) { + skipPart = true; + return; + } + + fileSize = 0; + this._fileStream = new FileStream(fileOpts, this); + ++this._fileEndsLeft; + this.emit( + 'file', + partName, + this._fileStream, + { filename, + encoding: partEncoding, + mimeType: partType } + ); + } else { + // Non-file + + if (fields === fieldsLimit) { + if (!hitFieldsLimit) { + hitFieldsLimit = true; + this.emit('fieldsLimit'); + } + skipPart = true; + return; + } + ++fields; + + if (this.listenerCount('field') === 0) { + skipPart = true; + return; + } + + field = []; + fieldSize = 0; + } + }); + + let matchPostBoundary = 0; + const ssCb = (isMatch, data, start, end, isDataSafe) => { +retrydata: + while (data) { + if (this._hparser !== null) { + const ret = this._hparser.push(data, start, end); + if (ret === -1) { + this._hparser = null; + hparser.reset(); + this.emit('error', new Error('Malformed part header')); + break; + } + start = ret; + } + + if (start === end) + break; + + if (matchPostBoundary !== 0) { + if (matchPostBoundary === 1) { + switch (data[start]) { + case 45: // '-' + // Try matching '--' after boundary + matchPostBoundary = 2; + ++start; + break; + case 13: // '\r' + // Try matching CR LF before header + matchPostBoundary = 3; + ++start; + break; + default: + matchPostBoundary = 0; + } + if (start === end) + return; + } + + if (matchPostBoundary === 2) { + matchPostBoundary = 0; + if (data[start] === 45/* '-' */) { + // End of multipart data + this._complete = true; + this._bparser = ignoreData; + return; + } + // We saw something other than '-', so put the dash we consumed + // "back" + const writecb = this._writecb; + this._writecb = noop; + ssCb(false, BUF_DASH, 0, 1, false); + this._writecb = writecb; + } else if (matchPostBoundary === 3) { + matchPostBoundary = 0; + if (data[start] === 10/* '\n' */) { + ++start; + if (parts >= partsLimit) + break; + // Prepare the header parser + this._hparser = hparser; + if (start === end) + break; + // Process the remaining data as a header + continue retrydata; + } else { + // We saw something other than LF, so put the CR we consumed + // "back" + const writecb = this._writecb; + this._writecb = noop; + ssCb(false, BUF_CR, 0, 1, false); + this._writecb = writecb; + } + } + } + + if (!skipPart) { + if (this._fileStream) { + let chunk; + const actualLen = Math.min(end - start, fileSizeLimit - fileSize); + if (!isDataSafe) { + chunk = Buffer.allocUnsafe(actualLen); + data.copy(chunk, 0, start, start + actualLen); + } else { + chunk = data.slice(start, start + actualLen); + } + + fileSize += chunk.length; + if (fileSize === fileSizeLimit) { + if (chunk.length > 0) + this._fileStream.push(chunk); + this._fileStream.emit('limit'); + this._fileStream.truncated = true; + skipPart = true; + } else if (!this._fileStream.push(chunk)) { + if (this._writecb) + this._fileStream._readcb = this._writecb; + this._writecb = null; + } + } else if (field !== undefined) { + let chunk; + const actualLen = Math.min( + end - start, + fieldSizeLimit - fieldSize + ); + if (!isDataSafe) { + chunk = Buffer.allocUnsafe(actualLen); + data.copy(chunk, 0, start, start + actualLen); + } else { + chunk = data.slice(start, start + actualLen); + } + + fieldSize += actualLen; + field.push(chunk); + if (fieldSize === fieldSizeLimit) { + skipPart = true; + partTruncated = true; + } + } + } + + break; + } + + if (isMatch) { + matchPostBoundary = 1; + + if (this._fileStream) { + // End the active file stream if the previous part was a file + this._fileStream.push(null); + this._fileStream = null; + } else if (field !== undefined) { + let data; + switch (field.length) { + case 0: + data = ''; + break; + case 1: + data = convertToUTF8(field[0], partCharset, 0); + break; + default: + data = convertToUTF8( + Buffer.concat(field, fieldSize), + partCharset, + 0 + ); + } + field = undefined; + fieldSize = 0; + this.emit( + 'field', + partName, + data, + { nameTruncated: false, + valueTruncated: partTruncated, + encoding: partEncoding, + mimeType: partType } + ); + } + + if (++parts === partsLimit) + this.emit('partsLimit'); + } + }; + this._bparser = new StreamSearch(`\r\n--${boundary}`, ssCb); + + this._writecb = null; + this._finalcb = null; + + // Just in case there is no preamble + this.write(BUF_CRLF); + } + + static detect(conType) { + return (conType.type === 'multipart' && conType.subtype === 'form-data'); + } + + _write(chunk, enc, cb) { + this._writecb = cb; + this._bparser.push(chunk, 0); + if (this._writecb) + callAndUnsetCb(this); + } + + _destroy(err, cb) { + this._hparser = null; + this._bparser = ignoreData; + if (!err) + err = checkEndState(this); + const fileStream = this._fileStream; + if (fileStream) { + this._fileStream = null; + fileStream.destroy(err); + } + cb(err); + } + + _final(cb) { + this._bparser.destroy(); + if (!this._complete) + return cb(new Error('Unexpected end of form')); + if (this._fileEndsLeft) + this._finalcb = finalcb.bind(null, this, cb); + else + finalcb(this, cb); + } +} + +function finalcb(self, cb, err) { + if (err) + return cb(err); + err = checkEndState(self); + cb(err); +} + +function checkEndState(self) { + if (self._hparser) + return new Error('Malformed part header'); + const fileStream = self._fileStream; + if (fileStream) { + self._fileStream = null; + fileStream.destroy(new Error('Unexpected end of file')); + } + if (!self._complete) + return new Error('Unexpected end of form'); +} + +const TOKEN = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const FIELD_VCHAR = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +]; + +module.exports = Multipart; diff --git a/bff/node_modules/busboy/lib/types/urlencoded.js b/bff/node_modules/busboy/lib/types/urlencoded.js new file mode 100644 index 0000000..5c463a2 --- /dev/null +++ b/bff/node_modules/busboy/lib/types/urlencoded.js @@ -0,0 +1,350 @@ +'use strict'; + +const { Writable } = require('stream'); + +const { getDecoder } = require('../utils.js'); + +class URLEncoded extends Writable { + constructor(cfg) { + const streamOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: (typeof cfg.highWaterMark === 'number' + ? cfg.highWaterMark + : undefined), + }; + super(streamOpts); + + let charset = (cfg.defCharset || 'utf8'); + if (cfg.conType.params && typeof cfg.conType.params.charset === 'string') + charset = cfg.conType.params.charset; + + this.charset = charset; + + const limits = cfg.limits; + this.fieldSizeLimit = (limits && typeof limits.fieldSize === 'number' + ? limits.fieldSize + : 1 * 1024 * 1024); + this.fieldsLimit = (limits && typeof limits.fields === 'number' + ? limits.fields + : Infinity); + this.fieldNameSizeLimit = ( + limits && typeof limits.fieldNameSize === 'number' + ? limits.fieldNameSize + : 100 + ); + + this._inKey = true; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + this._fields = 0; + this._key = ''; + this._val = ''; + this._byte = -2; + this._lastPos = 0; + this._encode = 0; + this._decoder = getDecoder(charset); + } + + static detect(conType) { + return (conType.type === 'application' + && conType.subtype === 'x-www-form-urlencoded'); + } + + _write(chunk, enc, cb) { + if (this._fields >= this.fieldsLimit) + return cb(); + + let i = 0; + const len = chunk.length; + this._lastPos = 0; + + // Check if we last ended mid-percent-encoded byte + if (this._byte !== -2) { + i = readPctEnc(this, chunk, i, len); + if (i === -1) + return cb(new Error('Malformed urlencoded form')); + if (i >= len) + return cb(); + if (this._inKey) + ++this._bytesKey; + else + ++this._bytesVal; + } + +main: + while (i < len) { + if (this._inKey) { + // Parsing key + + i = skipKeyBytes(this, chunk, i, len); + + while (i < len) { + switch (chunk[i]) { + case 61: // '=' + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._key = this._decoder(this._key, this._encode); + this._encode = 0; + this._inKey = false; + continue main; + case 38: // '&' + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._key = this._decoder(this._key, this._encode); + this._encode = 0; + if (this._bytesKey > 0) { + this.emit( + 'field', + this._key, + '', + { nameTruncated: this._keyTrunc, + valueTruncated: false, + encoding: this.charset, + mimeType: 'text/plain' } + ); + } + this._key = ''; + this._val = ''; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + if (++this._fields >= this.fieldsLimit) { + this.emit('fieldsLimit'); + return cb(); + } + continue; + case 43: // '+' + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._key += ' '; + this._lastPos = i + 1; + break; + case 37: // '%' + if (this._encode === 0) + this._encode = 1; + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = i + 1; + this._byte = -1; + i = readPctEnc(this, chunk, i + 1, len); + if (i === -1) + return cb(new Error('Malformed urlencoded form')); + if (i >= len) + return cb(); + ++this._bytesKey; + i = skipKeyBytes(this, chunk, i, len); + continue; + } + ++i; + ++this._bytesKey; + i = skipKeyBytes(this, chunk, i, len); + } + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + } else { + // Parsing value + + i = skipValBytes(this, chunk, i, len); + + while (i < len) { + switch (chunk[i]) { + case 38: // '&' + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._inKey = true; + this._val = this._decoder(this._val, this._encode); + this._encode = 0; + if (this._bytesKey > 0 || this._bytesVal > 0) { + this.emit( + 'field', + this._key, + this._val, + { nameTruncated: this._keyTrunc, + valueTruncated: this._valTrunc, + encoding: this.charset, + mimeType: 'text/plain' } + ); + } + this._key = ''; + this._val = ''; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + if (++this._fields >= this.fieldsLimit) { + this.emit('fieldsLimit'); + return cb(); + } + continue main; + case 43: // '+' + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._val += ' '; + this._lastPos = i + 1; + break; + case 37: // '%' + if (this._encode === 0) + this._encode = 1; + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._lastPos = i + 1; + this._byte = -1; + i = readPctEnc(this, chunk, i + 1, len); + if (i === -1) + return cb(new Error('Malformed urlencoded form')); + if (i >= len) + return cb(); + ++this._bytesVal; + i = skipValBytes(this, chunk, i, len); + continue; + } + ++i; + ++this._bytesVal; + i = skipValBytes(this, chunk, i, len); + } + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + } + } + + cb(); + } + + _final(cb) { + if (this._byte !== -2) + return cb(new Error('Malformed urlencoded form')); + if (!this._inKey || this._bytesKey > 0 || this._bytesVal > 0) { + if (this._inKey) + this._key = this._decoder(this._key, this._encode); + else + this._val = this._decoder(this._val, this._encode); + this.emit( + 'field', + this._key, + this._val, + { nameTruncated: this._keyTrunc, + valueTruncated: this._valTrunc, + encoding: this.charset, + mimeType: 'text/plain' } + ); + } + cb(); + } +} + +function readPctEnc(self, chunk, pos, len) { + if (pos >= len) + return len; + + if (self._byte === -1) { + // We saw a '%' but no hex characters yet + const hexUpper = HEX_VALUES[chunk[pos++]]; + if (hexUpper === -1) + return -1; + + if (hexUpper >= 8) + self._encode = 2; // Indicate high bits detected + + if (pos < len) { + // Both hex characters are in this chunk + const hexLower = HEX_VALUES[chunk[pos++]]; + if (hexLower === -1) + return -1; + + if (self._inKey) + self._key += String.fromCharCode((hexUpper << 4) + hexLower); + else + self._val += String.fromCharCode((hexUpper << 4) + hexLower); + + self._byte = -2; + self._lastPos = pos; + } else { + // Only one hex character was available in this chunk + self._byte = hexUpper; + } + } else { + // We saw only one hex character so far + const hexLower = HEX_VALUES[chunk[pos++]]; + if (hexLower === -1) + return -1; + + if (self._inKey) + self._key += String.fromCharCode((self._byte << 4) + hexLower); + else + self._val += String.fromCharCode((self._byte << 4) + hexLower); + + self._byte = -2; + self._lastPos = pos; + } + + return pos; +} + +function skipKeyBytes(self, chunk, pos, len) { + // Skip bytes if we've truncated + if (self._bytesKey > self.fieldNameSizeLimit) { + if (!self._keyTrunc) { + if (self._lastPos < pos) + self._key += chunk.latin1Slice(self._lastPos, pos - 1); + } + self._keyTrunc = true; + for (; pos < len; ++pos) { + const code = chunk[pos]; + if (code === 61/* '=' */ || code === 38/* '&' */) + break; + ++self._bytesKey; + } + self._lastPos = pos; + } + + return pos; +} + +function skipValBytes(self, chunk, pos, len) { + // Skip bytes if we've truncated + if (self._bytesVal > self.fieldSizeLimit) { + if (!self._valTrunc) { + if (self._lastPos < pos) + self._val += chunk.latin1Slice(self._lastPos, pos - 1); + } + self._valTrunc = true; + for (; pos < len; ++pos) { + if (chunk[pos] === 38/* '&' */) + break; + ++self._bytesVal; + } + self._lastPos = pos; + } + + return pos; +} + +/* eslint-disable no-multi-spaces */ +const HEX_VALUES = [ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +]; +/* eslint-enable no-multi-spaces */ + +module.exports = URLEncoded; diff --git a/bff/node_modules/busboy/lib/utils.js b/bff/node_modules/busboy/lib/utils.js new file mode 100644 index 0000000..8274f6c --- /dev/null +++ b/bff/node_modules/busboy/lib/utils.js @@ -0,0 +1,596 @@ +'use strict'; + +function parseContentType(str) { + if (str.length === 0) + return; + + const params = Object.create(null); + let i = 0; + + // Parse type + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code !== 47/* '/' */ || i === 0) + return; + break; + } + } + // Check for type without subtype + if (i === str.length) + return; + + const type = str.slice(0, i).toLowerCase(); + + // Parse subtype + const subtypeStart = ++i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + // Make sure we have a subtype + if (i === subtypeStart) + return; + + if (parseContentTypeParams(str, i, params) === undefined) + return; + break; + } + } + // Make sure we have a subtype + if (i === subtypeStart) + return; + + const subtype = str.slice(subtypeStart, i).toLowerCase(); + + return { type, subtype, params }; +} + +function parseContentTypeParams(str, i, params) { + while (i < str.length) { + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace + if (i === str.length) + break; + + // Check for malformed parameter + if (str.charCodeAt(i++) !== 59/* ';' */) + return; + + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace (malformed) + if (i === str.length) + return; + + let name; + const nameStart = i; + // Parse parameter name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code !== 61/* '=' */) + return; + break; + } + } + + // No value (malformed) + if (i === str.length) + return; + + name = str.slice(nameStart, i); + ++i; // Skip over '=' + + // No value (malformed) + if (i === str.length) + return; + + let value = ''; + let valueStart; + if (str.charCodeAt(i) === 34/* '"' */) { + valueStart = ++i; + let escaping = false; + // Parse quoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 92/* '\\' */) { + if (escaping) { + valueStart = i; + escaping = false; + } else { + value += str.slice(valueStart, i); + escaping = true; + } + continue; + } + if (code === 34/* '"' */) { + if (escaping) { + valueStart = i; + escaping = false; + continue; + } + value += str.slice(valueStart, i); + break; + } + if (escaping) { + valueStart = i - 1; + escaping = false; + } + // Invalid unescaped quoted character (malformed) + if (QDTEXT[code] !== 1) + return; + } + + // No end quote (malformed) + if (i === str.length) + return; + + ++i; // Skip over double quote + } else { + valueStart = i; + // Parse unquoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + // No value (malformed) + if (i === valueStart) + return; + break; + } + } + value = str.slice(valueStart, i); + } + + name = name.toLowerCase(); + if (params[name] === undefined) + params[name] = value; + } + + return params; +} + +function parseDisposition(str, defDecoder) { + if (str.length === 0) + return; + + const params = Object.create(null); + let i = 0; + + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (parseDispositionParams(str, i, params, defDecoder) === undefined) + return; + break; + } + } + + const type = str.slice(0, i).toLowerCase(); + + return { type, params }; +} + +function parseDispositionParams(str, i, params, defDecoder) { + while (i < str.length) { + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace + if (i === str.length) + break; + + // Check for malformed parameter + if (str.charCodeAt(i++) !== 59/* ';' */) + return; + + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace (malformed) + if (i === str.length) + return; + + let name; + const nameStart = i; + // Parse parameter name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code === 61/* '=' */) + break; + return; + } + } + + // No value (malformed) + if (i === str.length) + return; + + let value = ''; + let valueStart; + let charset; + //~ let lang; + name = str.slice(nameStart, i); + if (name.charCodeAt(name.length - 1) === 42/* '*' */) { + // Extended value + + const charsetStart = ++i; + // Parse charset name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (CHARSET[code] !== 1) { + if (code !== 39/* '\'' */) + return; + break; + } + } + + // Incomplete charset (malformed) + if (i === str.length) + return; + + charset = str.slice(charsetStart, i); + ++i; // Skip over the '\'' + + //~ const langStart = ++i; + // Parse language name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 39/* '\'' */) + break; + } + + // Incomplete language (malformed) + if (i === str.length) + return; + + //~ lang = str.slice(langStart, i); + ++i; // Skip over the '\'' + + // No value (malformed) + if (i === str.length) + return; + + valueStart = i; + + let encode = 0; + // Parse value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (EXTENDED_VALUE[code] !== 1) { + if (code === 37/* '%' */) { + let hexUpper; + let hexLower; + if (i + 2 < str.length + && (hexUpper = HEX_VALUES[str.charCodeAt(i + 1)]) !== -1 + && (hexLower = HEX_VALUES[str.charCodeAt(i + 2)]) !== -1) { + const byteVal = (hexUpper << 4) + hexLower; + value += str.slice(valueStart, i); + value += String.fromCharCode(byteVal); + i += 2; + valueStart = i + 1; + if (byteVal >= 128) + encode = 2; + else if (encode === 0) + encode = 1; + continue; + } + // '%' disallowed in non-percent encoded contexts (malformed) + return; + } + break; + } + } + + value += str.slice(valueStart, i); + value = convertToUTF8(value, charset, encode); + if (value === undefined) + return; + } else { + // Non-extended value + + ++i; // Skip over '=' + + // No value (malformed) + if (i === str.length) + return; + + if (str.charCodeAt(i) === 34/* '"' */) { + valueStart = ++i; + let escaping = false; + // Parse quoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 92/* '\\' */) { + if (escaping) { + valueStart = i; + escaping = false; + } else { + value += str.slice(valueStart, i); + escaping = true; + } + continue; + } + if (code === 34/* '"' */) { + if (escaping) { + valueStart = i; + escaping = false; + continue; + } + value += str.slice(valueStart, i); + break; + } + if (escaping) { + valueStart = i - 1; + escaping = false; + } + // Invalid unescaped quoted character (malformed) + if (QDTEXT[code] !== 1) + return; + } + + // No end quote (malformed) + if (i === str.length) + return; + + ++i; // Skip over double quote + } else { + valueStart = i; + // Parse unquoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + // No value (malformed) + if (i === valueStart) + return; + break; + } + } + value = str.slice(valueStart, i); + } + + value = defDecoder(value, 2); + if (value === undefined) + return; + } + + name = name.toLowerCase(); + if (params[name] === undefined) + params[name] = value; + } + + return params; +} + +function getDecoder(charset) { + let lc; + while (true) { + switch (charset) { + case 'utf-8': + case 'utf8': + return decoders.utf8; + case 'latin1': + case 'ascii': // TODO: Make these a separate, strict decoder? + case 'us-ascii': + case 'iso-8859-1': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'windows-1252': + case 'iso_8859-1:1987': + case 'cp1252': + case 'x-cp1252': + return decoders.latin1; + case 'utf16le': + case 'utf-16le': + case 'ucs2': + case 'ucs-2': + return decoders.utf16le; + case 'base64': + return decoders.base64; + default: + if (lc === undefined) { + lc = true; + charset = charset.toLowerCase(); + continue; + } + return decoders.other.bind(charset); + } + } +} + +const decoders = { + utf8: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') { + // If `data` never had any percent-encoded bytes or never had any that + // were outside of the ASCII range, then we can safely just return the + // input since UTF-8 is ASCII compatible + if (hint < 2) + return data; + + data = Buffer.from(data, 'latin1'); + } + return data.utf8Slice(0, data.length); + }, + + latin1: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + return data; + return data.latin1Slice(0, data.length); + }, + + utf16le: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + data = Buffer.from(data, 'latin1'); + return data.ucs2Slice(0, data.length); + }, + + base64: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + data = Buffer.from(data, 'latin1'); + return data.base64Slice(0, data.length); + }, + + other: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + data = Buffer.from(data, 'latin1'); + try { + const decoder = new TextDecoder(this); + return decoder.decode(data); + } catch {} + }, +}; + +function convertToUTF8(data, charset, hint) { + const decode = getDecoder(charset); + if (decode) + return decode(data, hint); +} + +function basename(path) { + if (typeof path !== 'string') + return ''; + for (let i = path.length - 1; i >= 0; --i) { + switch (path.charCodeAt(i)) { + case 0x2F: // '/' + case 0x5C: // '\' + path = path.slice(i + 1); + return (path === '..' || path === '.' ? '' : path); + } + } + return (path === '..' || path === '.' ? '' : path); +} + +const TOKEN = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const QDTEXT = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +]; + +const CHARSET = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const EXTENDED_VALUE = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +/* eslint-disable no-multi-spaces */ +const HEX_VALUES = [ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +]; +/* eslint-enable no-multi-spaces */ + +module.exports = { + basename, + convertToUTF8, + getDecoder, + parseContentType, + parseDisposition, +}; diff --git a/bff/node_modules/busboy/package.json b/bff/node_modules/busboy/package.json new file mode 100644 index 0000000..ac2577f --- /dev/null +++ b/bff/node_modules/busboy/package.json @@ -0,0 +1,22 @@ +{ "name": "busboy", + "version": "1.6.0", + "author": "Brian White ", + "description": "A streaming parser for HTML form data for node.js", + "main": "./lib/index.js", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "devDependencies": { + "@mscdex/eslint-config": "^1.1.0", + "eslint": "^7.32.0" + }, + "scripts": { + "test": "node test/test.js", + "lint": "eslint --cache --report-unused-disable-directives --ext=.js .eslintrc.js lib test bench", + "lint:fix": "npm run lint -- --fix" + }, + "engines": { "node": ">=10.16.0" }, + "keywords": [ "uploads", "forms", "multipart", "form-data" ], + "licenses": [ { "type": "MIT", "url": "http://github.com/mscdex/busboy/raw/master/LICENSE" } ], + "repository": { "type": "git", "url": "http://github.com/mscdex/busboy.git" } +} diff --git a/bff/node_modules/busboy/test/common.js b/bff/node_modules/busboy/test/common.js new file mode 100644 index 0000000..fb82ad8 --- /dev/null +++ b/bff/node_modules/busboy/test/common.js @@ -0,0 +1,109 @@ +'use strict'; + +const assert = require('assert'); +const { inspect } = require('util'); + +const mustCallChecks = []; + +function noop() {} + +function runCallChecks(exitCode) { + if (exitCode !== 0) return; + + const failed = mustCallChecks.filter((context) => { + if ('minimum' in context) { + context.messageSegment = `at least ${context.minimum}`; + return context.actual < context.minimum; + } + context.messageSegment = `exactly ${context.exact}`; + return context.actual !== context.exact; + }); + + failed.forEach((context) => { + console.error('Mismatched %s function calls. Expected %s, actual %d.', + context.name, + context.messageSegment, + context.actual); + console.error(context.stack.split('\n').slice(2).join('\n')); + }); + + if (failed.length) + process.exit(1); +} + +function mustCall(fn, exact) { + return _mustCallInner(fn, exact, 'exact'); +} + +function mustCallAtLeast(fn, minimum) { + return _mustCallInner(fn, minimum, 'minimum'); +} + +function _mustCallInner(fn, criteria = 1, field) { + if (process._exiting) + throw new Error('Cannot use common.mustCall*() in process exit handler'); + + if (typeof fn === 'number') { + criteria = fn; + fn = noop; + } else if (fn === undefined) { + fn = noop; + } + + if (typeof criteria !== 'number') + throw new TypeError(`Invalid ${field} value: ${criteria}`); + + const context = { + [field]: criteria, + actual: 0, + stack: inspect(new Error()), + name: fn.name || '' + }; + + // Add the exit listener only once to avoid listener leak warnings + if (mustCallChecks.length === 0) + process.on('exit', runCallChecks); + + mustCallChecks.push(context); + + function wrapped(...args) { + ++context.actual; + return fn.call(this, ...args); + } + // TODO: remove origFn? + wrapped.origFn = fn; + + return wrapped; +} + +function getCallSite(top) { + const originalStackFormatter = Error.prepareStackTrace; + Error.prepareStackTrace = (err, stack) => + `${stack[0].getFileName()}:${stack[0].getLineNumber()}`; + const err = new Error(); + Error.captureStackTrace(err, top); + // With the V8 Error API, the stack is not formatted until it is accessed + // eslint-disable-next-line no-unused-expressions + err.stack; + Error.prepareStackTrace = originalStackFormatter; + return err.stack; +} + +function mustNotCall(msg) { + const callSite = getCallSite(mustNotCall); + return function mustNotCall(...args) { + args = args.map(inspect).join(', '); + const argsInfo = (args.length > 0 + ? `\ncalled with arguments: ${args}` + : ''); + assert.fail( + `${msg || 'function should not have been called'} at ${callSite}` + + argsInfo); + }; +} + +module.exports = { + mustCall, + mustCallAtLeast, + mustNotCall, +}; diff --git a/bff/node_modules/busboy/test/test-types-multipart-charsets.js b/bff/node_modules/busboy/test/test-types-multipart-charsets.js new file mode 100644 index 0000000..ed9c38a --- /dev/null +++ b/bff/node_modules/busboy/test/test-types-multipart-charsets.js @@ -0,0 +1,94 @@ +'use strict'; + +const assert = require('assert'); +const { inspect } = require('util'); + +const { mustCall } = require(`${__dirname}/common.js`); + +const busboy = require('..'); + +const input = Buffer.from([ + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="テスト.dat"', + 'Content-Type: application/octet-stream', + '', + 'A'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' +].join('\r\n')); +const boundary = '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k'; +const expected = [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('A'.repeat(1023)), + info: { + filename: 'テスト.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, +]; +const bb = busboy({ + defParamCharset: 'utf8', + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + } +}); +const results = []; + +bb.on('field', (name, val, info) => { + results.push({ type: 'field', name, val, info }); +}); + +bb.on('file', (name, stream, info) => { + const data = []; + let nb = 0; + const file = { + type: 'file', + name, + data: null, + info, + limited: false, + }; + results.push(file); + stream.on('data', (d) => { + data.push(d); + nb += d.length; + }).on('limit', () => { + file.limited = true; + }).on('close', () => { + file.data = Buffer.concat(data, nb); + assert.strictEqual(stream.truncated, file.limited); + }).once('error', (err) => { + file.err = err.message; + }); +}); + +bb.on('error', (err) => { + results.push({ error: err.message }); +}); + +bb.on('partsLimit', () => { + results.push('partsLimit'); +}); + +bb.on('filesLimit', () => { + results.push('filesLimit'); +}); + +bb.on('fieldsLimit', () => { + results.push('fieldsLimit'); +}); + +bb.on('close', mustCall(() => { + assert.deepStrictEqual( + results, + expected, + 'Results mismatch.\n' + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(expected)}` + ); +})); + +bb.end(input); diff --git a/bff/node_modules/busboy/test/test-types-multipart-stream-pause.js b/bff/node_modules/busboy/test/test-types-multipart-stream-pause.js new file mode 100644 index 0000000..df7268a --- /dev/null +++ b/bff/node_modules/busboy/test/test-types-multipart-stream-pause.js @@ -0,0 +1,102 @@ +'use strict'; + +const assert = require('assert'); +const { randomFillSync } = require('crypto'); +const { inspect } = require('util'); + +const busboy = require('..'); + +const { mustCall } = require('./common.js'); + +const BOUNDARY = 'u2KxIV5yF1y+xUspOQCCZopaVgeV6Jxihv35XQJmuTx8X3sh'; + +function formDataSection(key, value) { + return Buffer.from( + `\r\n--${BOUNDARY}` + + `\r\nContent-Disposition: form-data; name="${key}"` + + `\r\n\r\n${value}` + ); +} + +function formDataFile(key, filename, contentType) { + const buf = Buffer.allocUnsafe(100000); + return Buffer.concat([ + Buffer.from(`\r\n--${BOUNDARY}\r\n`), + Buffer.from(`Content-Disposition: form-data; name="${key}"` + + `; filename="${filename}"\r\n`), + Buffer.from(`Content-Type: ${contentType}\r\n\r\n`), + randomFillSync(buf) + ]); +} + +const reqChunks = [ + Buffer.concat([ + formDataFile('file', 'file.bin', 'application/octet-stream'), + formDataSection('foo', 'foo value'), + ]), + formDataSection('bar', 'bar value'), + Buffer.from(`\r\n--${BOUNDARY}--\r\n`) +]; +const bb = busboy({ + headers: { + 'content-type': `multipart/form-data; boundary=${BOUNDARY}` + } +}); +const expected = [ + { type: 'file', + name: 'file', + info: { + filename: 'file.bin', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + }, + { type: 'field', + name: 'foo', + val: 'foo value', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'bar', + val: 'bar value', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, +]; +const results = []; + +bb.on('field', (name, val, info) => { + results.push({ type: 'field', name, val, info }); +}); + +bb.on('file', (name, stream, info) => { + results.push({ type: 'file', name, info }); + // Simulate a pipe where the destination is pausing (perhaps due to waiting + // for file system write to finish) + setTimeout(() => { + stream.resume(); + }, 10); +}); + +bb.on('close', mustCall(() => { + assert.deepStrictEqual( + results, + expected, + 'Results mismatch.\n' + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(expected)}` + ); +})); + +for (const chunk of reqChunks) + bb.write(chunk); +bb.end(); diff --git a/bff/node_modules/busboy/test/test-types-multipart.js b/bff/node_modules/busboy/test/test-types-multipart.js new file mode 100644 index 0000000..9755642 --- /dev/null +++ b/bff/node_modules/busboy/test/test-types-multipart.js @@ -0,0 +1,1053 @@ +'use strict'; + +const assert = require('assert'); +const { inspect } = require('util'); + +const busboy = require('..'); + +const active = new Map(); + +const tests = [ + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'super alpha file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_1"', + '', + 'super beta file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'A'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="1k_b.dat"', + 'Content-Type: application/octet-stream', + '', + 'B'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'super alpha file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'file_name_1', + val: 'super beta file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('A'.repeat(1023)), + info: { + filename: '1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('B'.repeat(1023)), + info: { + filename: '1k_b.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + ], + what: 'Fields and files' + }, + { source: [ + ['------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name="cont"', + '', + 'some random content', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name="pass"', + '', + 'some random pass', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name=bit', + '', + '2', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--' + ].join('\r\n') + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [ + { type: 'field', + name: 'cont', + val: 'some random content', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'pass', + val: 'some random pass', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'bit', + val: '2', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + ], + what: 'Fields only' + }, + { source: [ + '' + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [ + { error: 'Unexpected end of form' }, + ], + what: 'No fields and no files' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'super alpha file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + fileSize: 13, + fieldSize: 5 + }, + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'super', + info: { + nameTruncated: false, + valueTruncated: true, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ABCDEFGHIJKLM'), + info: { + filename: '1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: true, + }, + ], + what: 'Fields and files (limits)' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'super alpha file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + files: 0 + }, + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'super alpha file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + 'filesLimit', + ], + what: 'Fields and files (limits: 0 files)' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'super alpha file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_1"', + '', + 'super beta file', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'A'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="1k_b.dat"', + 'Content-Type: application/octet-stream', + '', + 'B'.repeat(1023), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'super alpha file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + { type: 'field', + name: 'file_name_1', + val: 'super beta file', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + ], + events: ['field'], + what: 'Fields and (ignored) files' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="/tmp/1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="C:\\files\\1k_b.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_2"; filename="relative/1k_c.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: '1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: '1k_b.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_2', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: '1k_c.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + ], + what: 'Files with filenames containing paths' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="/absolute/1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="C:\\absolute\\1k_b.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_2"; filename="relative/1k_c.dat"', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + preservePath: true, + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: '/absolute/1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: 'C:\\absolute\\1k_b.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_2', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: 'relative/1k_c.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + ], + what: 'Paths to be preserved through the preservePath option' + }, + { source: [ + ['------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name="cont"', + 'Content-Type: ', + '', + 'some random content', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: ', + '', + 'some random pass', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--' + ].join('\r\n') + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [ + { type: 'field', + name: 'cont', + val: 'some random content', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + ], + what: 'Empty content-type and empty content-disposition' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="file"; filename*=utf-8\'\'n%C3%A4me.txt', + 'Content-Type: application/octet-stream', + '', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--' + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'file', + data: Buffer.from('ABCDEFGHIJKLMNOPQRSTUVWXYZ'), + info: { + filename: 'näme.txt', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + }, + ], + what: 'Unicode filenames' + }, + { source: [ + ['--asdasdasdasd\r\n', + 'Content-Type: text/plain\r\n', + 'Content-Disposition: form-data; name="foo"\r\n', + '\r\n', + 'asd\r\n', + '--asdasdasdasd--' + ].join(':)') + ], + boundary: 'asdasdasdasd', + expected: [ + { error: 'Malformed part header' }, + { error: 'Unexpected end of form' }, + ], + what: 'Stopped mid-header' + }, + { source: [ + ['------WebKitFormBoundaryTB2MiQ36fnSJlrhY', + 'Content-Disposition: form-data; name="cont"', + 'Content-Type: application/json', + '', + '{}', + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--', + ].join('\r\n') + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [ + { type: 'field', + name: 'cont', + val: '{}', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'application/json', + }, + }, + ], + what: 'content-type for fields' + }, + { source: [ + '------WebKitFormBoundaryTB2MiQ36fnSJlrhY--', + ], + boundary: '----WebKitFormBoundaryTB2MiQ36fnSJlrhY', + expected: [], + what: 'empty form' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name=upload_file_0; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + 'Content-Transfer-Encoding: binary', + '', + '', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.alloc(0), + info: { + filename: '1k_a.dat', + encoding: 'binary', + mimeType: 'application/octet-stream', + }, + limited: false, + err: 'Unexpected end of form', + }, + { error: 'Unexpected end of form' }, + ], + what: 'Stopped mid-file #1' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name=upload_file_0; filename="1k_a.dat"', + 'Content-Type: application/octet-stream', + '', + 'a', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('a'), + info: { + filename: '1k_a.dat', + encoding: '7bit', + mimeType: 'application/octet-stream', + }, + limited: false, + err: 'Unexpected end of form', + }, + { error: 'Unexpected end of form' }, + ], + what: 'Stopped mid-file #2' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('a'), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Text file with charset' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: ', + ' text/plain; charset=utf8', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('a'), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Folded header value' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Type: text/plain; charset=utf8', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [], + what: 'No Content-Disposition' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'a'.repeat(64 * 1024), + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: ', + ' text/plain; charset=utf8', + '', + 'bc', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + fieldSize: Infinity, + }, + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('bc'), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + events: [ 'file' ], + what: 'Skip field parts if no listener' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: ', + ' text/plain; charset=utf8', + '', + 'bc', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + parts: 1, + }, + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'a', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + 'partsLimit', + ], + what: 'Parts limit' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_0"', + '', + 'a', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; name="file_name_1"', + '', + 'b', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + fields: 1, + }, + expected: [ + { type: 'field', + name: 'file_name_0', + val: 'a', + info: { + nameTruncated: false, + valueTruncated: false, + encoding: '7bit', + mimeType: 'text/plain', + }, + }, + 'fieldsLimit', + ], + what: 'Fields limit' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'ab', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="notes2.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'cd', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + limits: { + files: 1, + }, + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ab'), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + 'filesLimit', + ], + what: 'Files limit' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + `name="upload_file_0"; filename="${'a'.repeat(64 * 1024)}.txt"`, + 'Content-Type: text/plain; charset=utf8', + '', + 'ab', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_1"; filename="notes2.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'cd', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { error: 'Malformed part header' }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('cd'), + info: { + filename: 'notes2.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Oversized part header' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + 'name="upload_file_0"; filename="notes.txt"', + 'Content-Type: text/plain; charset=utf8', + '', + 'a'.repeat(31) + '\r', + ].join('\r\n'), + 'b'.repeat(40), + '\r\n-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + fileHwm: 32, + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('a'.repeat(31) + '\r' + 'b'.repeat(40)), + info: { + filename: 'notes.txt', + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Lookbehind data should not stall file streams' + }, + { source: [ + ['-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + `name="upload_file_0"; filename="${'a'.repeat(8 * 1024)}.txt"`, + 'Content-Type: text/plain; charset=utf8', + '', + 'ab', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + `name="upload_file_1"; filename="${'b'.repeat(8 * 1024)}.txt"`, + 'Content-Type: text/plain; charset=utf8', + '', + 'cd', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + 'Content-Disposition: form-data; ' + + `name="upload_file_2"; filename="${'c'.repeat(8 * 1024)}.txt"`, + 'Content-Type: text/plain; charset=utf8', + '', + 'ef', + '-----------------------------paZqsnEHRufoShdX6fh0lUhXBP4k--', + ].join('\r\n') + ], + boundary: '---------------------------paZqsnEHRufoShdX6fh0lUhXBP4k', + expected: [ + { type: 'file', + name: 'upload_file_0', + data: Buffer.from('ab'), + info: { + filename: `${'a'.repeat(8 * 1024)}.txt`, + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_1', + data: Buffer.from('cd'), + info: { + filename: `${'b'.repeat(8 * 1024)}.txt`, + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + { type: 'file', + name: 'upload_file_2', + data: Buffer.from('ef'), + info: { + filename: `${'c'.repeat(8 * 1024)}.txt`, + encoding: '7bit', + mimeType: 'text/plain', + }, + limited: false, + }, + ], + what: 'Header size limit should be per part' + }, + { source: [ + '\r\n--d1bf46b3-aa33-4061-b28d-6c5ced8b08ee\r\n', + 'Content-Type: application/gzip\r\n' + + 'Content-Encoding: gzip\r\n' + + 'Content-Disposition: form-data; name=batch-1; filename=batch-1' + + '\r\n\r\n', + '\r\n--d1bf46b3-aa33-4061-b28d-6c5ced8b08ee--', + ], + boundary: 'd1bf46b3-aa33-4061-b28d-6c5ced8b08ee', + expected: [ + { type: 'file', + name: 'batch-1', + data: Buffer.alloc(0), + info: { + filename: 'batch-1', + encoding: '7bit', + mimeType: 'application/gzip', + }, + limited: false, + }, + ], + what: 'Empty part' + }, +]; + +for (const test of tests) { + active.set(test, 1); + + const { what, boundary, events, limits, preservePath, fileHwm } = test; + const bb = busboy({ + fileHwm, + limits, + preservePath, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + } + }); + const results = []; + + if (events === undefined || events.includes('field')) { + bb.on('field', (name, val, info) => { + results.push({ type: 'field', name, val, info }); + }); + } + + if (events === undefined || events.includes('file')) { + bb.on('file', (name, stream, info) => { + const data = []; + let nb = 0; + const file = { + type: 'file', + name, + data: null, + info, + limited: false, + }; + results.push(file); + stream.on('data', (d) => { + data.push(d); + nb += d.length; + }).on('limit', () => { + file.limited = true; + }).on('close', () => { + file.data = Buffer.concat(data, nb); + assert.strictEqual(stream.truncated, file.limited); + }).once('error', (err) => { + file.err = err.message; + }); + }); + } + + bb.on('error', (err) => { + results.push({ error: err.message }); + }); + + bb.on('partsLimit', () => { + results.push('partsLimit'); + }); + + bb.on('filesLimit', () => { + results.push('filesLimit'); + }); + + bb.on('fieldsLimit', () => { + results.push('fieldsLimit'); + }); + + bb.on('close', () => { + active.delete(test); + + assert.deepStrictEqual( + results, + test.expected, + `[${what}] Results mismatch.\n` + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(test.expected)}` + ); + }); + + for (const src of test.source) { + const buf = (typeof src === 'string' ? Buffer.from(src, 'utf8') : src); + bb.write(buf); + } + bb.end(); +} + +// Byte-by-byte versions +for (let test of tests) { + test = { ...test }; + test.what += ' (byte-by-byte)'; + active.set(test, 1); + + const { what, boundary, events, limits, preservePath, fileHwm } = test; + const bb = busboy({ + fileHwm, + limits, + preservePath, + headers: { + 'content-type': `multipart/form-data; boundary=${boundary}`, + } + }); + const results = []; + + if (events === undefined || events.includes('field')) { + bb.on('field', (name, val, info) => { + results.push({ type: 'field', name, val, info }); + }); + } + + if (events === undefined || events.includes('file')) { + bb.on('file', (name, stream, info) => { + const data = []; + let nb = 0; + const file = { + type: 'file', + name, + data: null, + info, + limited: false, + }; + results.push(file); + stream.on('data', (d) => { + data.push(d); + nb += d.length; + }).on('limit', () => { + file.limited = true; + }).on('close', () => { + file.data = Buffer.concat(data, nb); + assert.strictEqual(stream.truncated, file.limited); + }).once('error', (err) => { + file.err = err.message; + }); + }); + } + + bb.on('error', (err) => { + results.push({ error: err.message }); + }); + + bb.on('partsLimit', () => { + results.push('partsLimit'); + }); + + bb.on('filesLimit', () => { + results.push('filesLimit'); + }); + + bb.on('fieldsLimit', () => { + results.push('fieldsLimit'); + }); + + bb.on('close', () => { + active.delete(test); + + assert.deepStrictEqual( + results, + test.expected, + `[${what}] Results mismatch.\n` + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(test.expected)}` + ); + }); + + for (const src of test.source) { + const buf = (typeof src === 'string' ? Buffer.from(src, 'utf8') : src); + for (let i = 0; i < buf.length; ++i) + bb.write(buf.slice(i, i + 1)); + } + bb.end(); +} + +{ + let exception = false; + process.once('uncaughtException', (ex) => { + exception = true; + throw ex; + }); + process.on('exit', () => { + if (exception || active.size === 0) + return; + process.exitCode = 1; + console.error('=========================='); + console.error(`${active.size} test(s) did not finish:`); + console.error('=========================='); + console.error(Array.from(active.keys()).map((v) => v.what).join('\n')); + }); +} diff --git a/bff/node_modules/busboy/test/test-types-urlencoded.js b/bff/node_modules/busboy/test/test-types-urlencoded.js new file mode 100644 index 0000000..c35962b --- /dev/null +++ b/bff/node_modules/busboy/test/test-types-urlencoded.js @@ -0,0 +1,488 @@ +'use strict'; + +const assert = require('assert'); +const { transcode } = require('buffer'); +const { inspect } = require('util'); + +const busboy = require('..'); + +const active = new Map(); + +const tests = [ + { source: ['foo'], + expected: [ + ['foo', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Unassigned value' + }, + { source: ['foo=bar'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned value' + }, + { source: ['foo&bar=baz'], + expected: [ + ['foo', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['bar', + 'baz', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Unassigned and assigned value' + }, + { source: ['foo=bar&baz'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['baz', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned and unassigned value' + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['baz', + 'bla', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Two assigned values' + }, + { source: ['foo&bar'], + expected: [ + ['foo', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['bar', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Two unassigned values' + }, + { source: ['foo&bar&'], + expected: [ + ['foo', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['bar', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Two unassigned values and ampersand' + }, + { source: ['foo+1=bar+baz%2Bquux'], + expected: [ + ['foo 1', + 'bar baz+quux', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned key and value with (plus) space' + }, + { source: ['foo=bar%20baz%21'], + expected: [ + ['foo', + 'bar baz!', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned value with encoded bytes' + }, + { source: ['foo%20bar=baz%20bla%21'], + expected: [ + ['foo bar', + 'baz bla!', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned value with encoded bytes #2' + }, + { source: ['foo=bar%20baz%21&num=1000'], + expected: [ + ['foo', + 'bar baz!', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['num', + '1000', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Two assigned values, one with encoded bytes' + }, + { source: [ + Array.from(transcode(Buffer.from('foo'), 'utf8', 'utf16le')).map( + (n) => `%${n.toString(16).padStart(2, '0')}` + ).join(''), + '=', + Array.from(transcode(Buffer.from('😀!'), 'utf8', 'utf16le')).map( + (n) => `%${n.toString(16).padStart(2, '0')}` + ).join(''), + ], + expected: [ + ['foo', + '😀!', + { nameTruncated: false, + valueTruncated: false, + encoding: 'UTF-16LE', + mimeType: 'text/plain' }, + ], + ], + charset: 'UTF-16LE', + what: 'Encoded value with multi-byte charset' + }, + { source: [ + 'foo=<', + Array.from(transcode(Buffer.from('©:^þ'), 'utf8', 'latin1')).map( + (n) => `%${n.toString(16).padStart(2, '0')}` + ).join(''), + ], + expected: [ + ['foo', + '<©:^þ', + { nameTruncated: false, + valueTruncated: false, + encoding: 'ISO-8859-1', + mimeType: 'text/plain' }, + ], + ], + charset: 'ISO-8859-1', + what: 'Encoded value with single-byte, ASCII-compatible, non-UTF8 charset' + }, + { source: ['foo=bar&baz=bla'], + expected: [], + what: 'Limits: zero fields', + limits: { fields: 0 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: one field', + limits: { fields: 1 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['foo', + 'bar', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['baz', + 'bla', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: field part lengths match limits', + limits: { fieldNameSize: 3, fieldSize: 3 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['fo', + 'bar', + { nameTruncated: true, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['ba', + 'bla', + { nameTruncated: true, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated field name', + limits: { fieldNameSize: 2 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['foo', + 'ba', + { nameTruncated: false, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['baz', + 'bl', + { nameTruncated: false, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated field value', + limits: { fieldSize: 2 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['fo', + 'ba', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['ba', + 'bl', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated field name and value', + limits: { fieldNameSize: 2, fieldSize: 2 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['fo', + '', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['ba', + '', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated field name and zero value limit', + limits: { fieldNameSize: 2, fieldSize: 0 } + }, + { source: ['foo=bar&baz=bla'], + expected: [ + ['', + '', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ['', + '', + { nameTruncated: true, + valueTruncated: true, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Limits: truncated zero field name and zero value limit', + limits: { fieldNameSize: 0, fieldSize: 0 } + }, + { source: ['&'], + expected: [], + what: 'Ampersand' + }, + { source: ['&&&&&'], + expected: [], + what: 'Many ampersands' + }, + { source: ['='], + expected: [ + ['', + '', + { nameTruncated: false, + valueTruncated: false, + encoding: 'utf-8', + mimeType: 'text/plain' }, + ], + ], + what: 'Assigned value, empty name and value' + }, + { source: [''], + expected: [], + what: 'Nothing' + }, +]; + +for (const test of tests) { + active.set(test, 1); + + const { what } = test; + const charset = test.charset || 'utf-8'; + const bb = busboy({ + limits: test.limits, + headers: { + 'content-type': `application/x-www-form-urlencoded; charset=${charset}`, + }, + }); + const results = []; + + bb.on('field', (key, val, info) => { + results.push([key, val, info]); + }); + + bb.on('file', () => { + throw new Error(`[${what}] Unexpected file`); + }); + + bb.on('close', () => { + active.delete(test); + + assert.deepStrictEqual( + results, + test.expected, + `[${what}] Results mismatch.\n` + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(test.expected)}` + ); + }); + + for (const src of test.source) { + const buf = (typeof src === 'string' ? Buffer.from(src, 'utf8') : src); + bb.write(buf); + } + bb.end(); +} + +// Byte-by-byte versions +for (let test of tests) { + test = { ...test }; + test.what += ' (byte-by-byte)'; + active.set(test, 1); + + const { what } = test; + const charset = test.charset || 'utf-8'; + const bb = busboy({ + limits: test.limits, + headers: { + 'content-type': `application/x-www-form-urlencoded; charset="${charset}"`, + }, + }); + const results = []; + + bb.on('field', (key, val, info) => { + results.push([key, val, info]); + }); + + bb.on('file', () => { + throw new Error(`[${what}] Unexpected file`); + }); + + bb.on('close', () => { + active.delete(test); + + assert.deepStrictEqual( + results, + test.expected, + `[${what}] Results mismatch.\n` + + `Parsed: ${inspect(results)}\n` + + `Expected: ${inspect(test.expected)}` + ); + }); + + for (const src of test.source) { + const buf = (typeof src === 'string' ? Buffer.from(src, 'utf8') : src); + for (let i = 0; i < buf.length; ++i) + bb.write(buf.slice(i, i + 1)); + } + bb.end(); +} + +{ + let exception = false; + process.once('uncaughtException', (ex) => { + exception = true; + throw ex; + }); + process.on('exit', () => { + if (exception || active.size === 0) + return; + process.exitCode = 1; + console.error('=========================='); + console.error(`${active.size} test(s) did not finish:`); + console.error('=========================='); + console.error(Array.from(active.keys()).map((v) => v.what).join('\n')); + }); +} diff --git a/bff/node_modules/busboy/test/test.js b/bff/node_modules/busboy/test/test.js new file mode 100644 index 0000000..d0380f2 --- /dev/null +++ b/bff/node_modules/busboy/test/test.js @@ -0,0 +1,20 @@ +'use strict'; + +const { spawnSync } = require('child_process'); +const { readdirSync } = require('fs'); +const { join } = require('path'); + +const files = readdirSync(__dirname).sort(); +for (const filename of files) { + if (filename.startsWith('test-')) { + const path = join(__dirname, filename); + console.log(`> Running ${filename} ...`); + const result = spawnSync(`${process.argv0} ${path}`, { + shell: true, + stdio: 'inherit', + windowsHide: true + }); + if (result.status !== 0) + process.exitCode = 1; + } +} diff --git a/bff/node_modules/bytes/History.md b/bff/node_modules/bytes/History.md new file mode 100644 index 0000000..d60ce0e --- /dev/null +++ b/bff/node_modules/bytes/History.md @@ -0,0 +1,97 @@ +3.1.2 / 2022-01-27 +================== + + * Fix return value for un-parsable strings + +3.1.1 / 2021-11-15 +================== + + * Fix "thousandsSeparator" incorrecting formatting fractional part + +3.1.0 / 2019-01-22 +================== + + * Add petabyte (`pb`) support + +3.0.0 / 2017-08-31 +================== + + * Change "kB" to "KB" in format output + * Remove support for Node.js 0.6 + * Remove support for ComponentJS + +2.5.0 / 2017-03-24 +================== + + * Add option "unit" + +2.4.0 / 2016-06-01 +================== + + * Add option "unitSeparator" + +2.3.0 / 2016-02-15 +================== + + * Drop partial bytes on all parsed units + * Fix non-finite numbers to `.format` to return `null` + * Fix parsing byte string that looks like hex + * perf: hoist regular expressions + +2.2.0 / 2015-11-13 +================== + + * add option "decimalPlaces" + * add option "fixedDecimals" + +2.1.0 / 2015-05-21 +================== + + * add `.format` export + * add `.parse` export + +2.0.2 / 2015-05-20 +================== + + * remove map recreation + * remove unnecessary object construction + +2.0.1 / 2015-05-07 +================== + + * fix browserify require + * remove node.extend dependency + +2.0.0 / 2015-04-12 +================== + + * add option "case" + * add option "thousandsSeparator" + * return "null" on invalid parse input + * support proper round-trip: bytes(bytes(num)) === num + * units no longer case sensitive when parsing + +1.0.0 / 2014-05-05 +================== + + * add negative support. fixes #6 + +0.3.0 / 2014-03-19 +================== + + * added terabyte support + +0.2.1 / 2013-04-01 +================== + + * add .component + +0.2.0 / 2012-10-28 +================== + + * bytes(200).should.eql('200b') + +0.1.0 / 2012-07-04 +================== + + * add bytes to string conversion [yields] diff --git a/bff/node_modules/bytes/LICENSE b/bff/node_modules/bytes/LICENSE new file mode 100644 index 0000000..63e95a9 --- /dev/null +++ b/bff/node_modules/bytes/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2012-2014 TJ Holowaychuk +Copyright (c) 2015 Jed Watson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/bytes/Readme.md b/bff/node_modules/bytes/Readme.md new file mode 100644 index 0000000..5790e23 --- /dev/null +++ b/bff/node_modules/bytes/Readme.md @@ -0,0 +1,152 @@ +# Bytes utility + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa. + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +$ npm install bytes +``` + +## Usage + +```js +var bytes = require('bytes'); +``` + +#### bytes(number|string value, [options]): number|string|null + +Default export function. Delegates to either `bytes.format` or `bytes.parse` based on the type of `value`. + +**Arguments** + +| Name | Type | Description | +|---------|----------|--------------------| +| value | `number`|`string` | Number value to format or string value to parse | +| options | `Object` | Conversion options for `format` | + +**Returns** + +| Name | Type | Description | +|---------|------------------|-------------------------------------------------| +| results | `string`|`number`|`null` | Return null upon error. Numeric value in bytes, or string value otherwise. | + +**Example** + +```js +bytes(1024); +// output: '1KB' + +bytes('1KB'); +// output: 1024 +``` + +#### bytes.format(number value, [options]): string|null + +Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is + rounded. + +**Arguments** + +| Name | Type | Description | +|---------|----------|--------------------| +| value | `number` | Value in bytes | +| options | `Object` | Conversion options | + +**Options** + +| Property | Type | Description | +|-------------------|--------|-----------------------------------------------------------------------------------------| +| decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. | +| fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` | +| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `'.'`... Default value to `''`. | +| unit | `string`|`null` | The unit in which the result will be returned (B/KB/MB/GB/TB). Default value to `''` (which means auto detect). | +| unitSeparator | `string`|`null` | Separator to use between number and unit. Default value to `''`. | + +**Returns** + +| Name | Type | Description | +|---------|------------------|-------------------------------------------------| +| results | `string`|`null` | Return null upon error. String value otherwise. | + +**Example** + +```js +bytes.format(1024); +// output: '1KB' + +bytes.format(1000); +// output: '1000B' + +bytes.format(1000, {thousandsSeparator: ' '}); +// output: '1 000B' + +bytes.format(1024 * 1.7, {decimalPlaces: 0}); +// output: '2KB' + +bytes.format(1024, {unitSeparator: ' '}); +// output: '1 KB' +``` + +#### bytes.parse(string|number value): number|null + +Parse the string value into an integer in bytes. If no unit is given, or `value` +is a number, it is assumed the value is in bytes. + +Supported units and abbreviations are as follows and are case-insensitive: + + * `b` for bytes + * `kb` for kilobytes + * `mb` for megabytes + * `gb` for gigabytes + * `tb` for terabytes + * `pb` for petabytes + +The units are in powers of two, not ten. This means 1kb = 1024b according to this parser. + +**Arguments** + +| Name | Type | Description | +|---------------|--------|--------------------| +| value | `string`|`number` | String to parse, or number in bytes. | + +**Returns** + +| Name | Type | Description | +|---------|-------------|-------------------------| +| results | `number`|`null` | Return null upon error. Value in bytes otherwise. | + +**Example** + +```js +bytes.parse('1KB'); +// output: 1024 + +bytes.parse('1024'); +// output: 1024 + +bytes.parse(1024); +// output: 1024 +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/visionmedia/bytes.js/master?label=ci +[ci-url]: https://github.com/visionmedia/bytes.js/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/visionmedia/bytes.js/master +[coveralls-url]: https://coveralls.io/r/visionmedia/bytes.js?branch=master +[downloads-image]: https://badgen.net/npm/dm/bytes +[downloads-url]: https://npmjs.org/package/bytes +[npm-image]: https://badgen.net/npm/v/bytes +[npm-url]: https://npmjs.org/package/bytes diff --git a/bff/node_modules/bytes/index.js b/bff/node_modules/bytes/index.js new file mode 100644 index 0000000..6f2d0f8 --- /dev/null +++ b/bff/node_modules/bytes/index.js @@ -0,0 +1,170 @@ +/*! + * bytes + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015 Jed Watson + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +module.exports = bytes; +module.exports.format = format; +module.exports.parse = parse; + +/** + * Module variables. + * @private + */ + +var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; + +var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; + +var map = { + b: 1, + kb: 1 << 10, + mb: 1 << 20, + gb: 1 << 30, + tb: Math.pow(1024, 4), + pb: Math.pow(1024, 5), +}; + +var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; + +/** + * Convert the given value in bytes into a string or parse to string to an integer in bytes. + * + * @param {string|number} value + * @param {{ + * case: [string], + * decimalPlaces: [number] + * fixedDecimals: [boolean] + * thousandsSeparator: [string] + * unitSeparator: [string] + * }} [options] bytes options. + * + * @returns {string|number|null} + */ + +function bytes(value, options) { + if (typeof value === 'string') { + return parse(value); + } + + if (typeof value === 'number') { + return format(value, options); + } + + return null; +} + +/** + * Format the given value in bytes into a string. + * + * If the value is negative, it is kept as such. If it is a float, + * it is rounded. + * + * @param {number} value + * @param {object} [options] + * @param {number} [options.decimalPlaces=2] + * @param {number} [options.fixedDecimals=false] + * @param {string} [options.thousandsSeparator=] + * @param {string} [options.unit=] + * @param {string} [options.unitSeparator=] + * + * @returns {string|null} + * @public + */ + +function format(value, options) { + if (!Number.isFinite(value)) { + return null; + } + + var mag = Math.abs(value); + var thousandsSeparator = (options && options.thousandsSeparator) || ''; + var unitSeparator = (options && options.unitSeparator) || ''; + var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2; + var fixedDecimals = Boolean(options && options.fixedDecimals); + var unit = (options && options.unit) || ''; + + if (!unit || !map[unit.toLowerCase()]) { + if (mag >= map.pb) { + unit = 'PB'; + } else if (mag >= map.tb) { + unit = 'TB'; + } else if (mag >= map.gb) { + unit = 'GB'; + } else if (mag >= map.mb) { + unit = 'MB'; + } else if (mag >= map.kb) { + unit = 'KB'; + } else { + unit = 'B'; + } + } + + var val = value / map[unit.toLowerCase()]; + var str = val.toFixed(decimalPlaces); + + if (!fixedDecimals) { + str = str.replace(formatDecimalsRegExp, '$1'); + } + + if (thousandsSeparator) { + str = str.split('.').map(function (s, i) { + return i === 0 + ? s.replace(formatThousandsRegExp, thousandsSeparator) + : s + }).join('.'); + } + + return str + unitSeparator + unit; +} + +/** + * Parse the string value into an integer in bytes. + * + * If no unit is given, it is assumed the value is in bytes. + * + * @param {number|string} val + * + * @returns {number|null} + * @public + */ + +function parse(val) { + if (typeof val === 'number' && !isNaN(val)) { + return val; + } + + if (typeof val !== 'string') { + return null; + } + + // Test if the string passed is valid + var results = parseRegExp.exec(val); + var floatValue; + var unit = 'b'; + + if (!results) { + // Nothing could be extracted from the given string + floatValue = parseInt(val, 10); + unit = 'b' + } else { + // Retrieve the value and the unit + floatValue = parseFloat(results[1]); + unit = results[4].toLowerCase(); + } + + if (isNaN(floatValue)) { + return null; + } + + return Math.floor(map[unit] * floatValue); +} diff --git a/bff/node_modules/bytes/package.json b/bff/node_modules/bytes/package.json new file mode 100644 index 0000000..f2b6a8b --- /dev/null +++ b/bff/node_modules/bytes/package.json @@ -0,0 +1,42 @@ +{ + "name": "bytes", + "description": "Utility to parse a string bytes to bytes and vice-versa", + "version": "3.1.2", + "author": "TJ Holowaychuk (http://tjholowaychuk.com)", + "contributors": [ + "Jed Watson ", + "Théo FIDRY " + ], + "license": "MIT", + "keywords": [ + "byte", + "bytes", + "utility", + "parse", + "parser", + "convert", + "converter" + ], + "repository": "visionmedia/bytes.js", + "devDependencies": { + "eslint": "7.32.0", + "eslint-plugin-markdown": "2.2.1", + "mocha": "9.2.0", + "nyc": "15.1.0" + }, + "files": [ + "History.md", + "LICENSE", + "Readme.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --check-leaks --reporter spec", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/call-bind-apply-helpers/.eslintrc b/bff/node_modules/call-bind-apply-helpers/.eslintrc new file mode 100644 index 0000000..201e859 --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/.eslintrc @@ -0,0 +1,17 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "id-length": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + "no-extra-parens": 0, + "no-magic-numbers": 0, + }, +} diff --git a/bff/node_modules/call-bind-apply-helpers/.github/FUNDING.yml b/bff/node_modules/call-bind-apply-helpers/.github/FUNDING.yml new file mode 100644 index 0000000..0011e9d --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/call-bind-apply-helpers +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/call-bind-apply-helpers/.nycrc b/bff/node_modules/call-bind-apply-helpers/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/call-bind-apply-helpers/CHANGELOG.md b/bff/node_modules/call-bind-apply-helpers/CHANGELOG.md new file mode 100644 index 0000000..2484942 --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/CHANGELOG.md @@ -0,0 +1,30 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.2](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.1...v1.0.2) - 2025-02-12 + +### Commits + +- [types] improve inferred types [`e6f9586`](https://github.com/ljharb/call-bind-apply-helpers/commit/e6f95860a3c72879cb861a858cdfb8138fbedec1) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`e43d540`](https://github.com/ljharb/call-bind-apply-helpers/commit/e43d5409f97543bfbb11f345d47d8ce4e066d8c1) + +## [v1.0.1](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.0...v1.0.1) - 2024-12-08 + +### Commits + +- [types] `reflectApply`: fix types [`4efc396`](https://github.com/ljharb/call-bind-apply-helpers/commit/4efc3965351a4f02cc55e836fa391d3d11ef2ef8) +- [Fix] `reflectApply`: oops, Reflect is not a function [`83cc739`](https://github.com/ljharb/call-bind-apply-helpers/commit/83cc7395de6b79b7730bdf092f1436f0b1263c75) +- [Dev Deps] update `@arethetypeswrong/cli` [`80bd5d3`](https://github.com/ljharb/call-bind-apply-helpers/commit/80bd5d3ae58b4f6b6995ce439dd5a1bcb178a940) + +## v1.0.0 - 2024-12-05 + +### Commits + +- Initial implementation, tests, readme [`7879629`](https://github.com/ljharb/call-bind-apply-helpers/commit/78796290f9b7430c9934d6f33d94ae9bc89fce04) +- Initial commit [`3f1dc16`](https://github.com/ljharb/call-bind-apply-helpers/commit/3f1dc164afc43285631b114a5f9dd9137b2b952f) +- npm init [`081df04`](https://github.com/ljharb/call-bind-apply-helpers/commit/081df048c312fcee400922026f6e97281200a603) +- Only apps should have lockfiles [`5b9ca0f`](https://github.com/ljharb/call-bind-apply-helpers/commit/5b9ca0fe8101ebfaf309c549caac4e0a017ed930) diff --git a/bff/node_modules/call-bind-apply-helpers/LICENSE b/bff/node_modules/call-bind-apply-helpers/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/call-bind-apply-helpers/README.md b/bff/node_modules/call-bind-apply-helpers/README.md new file mode 100644 index 0000000..8fc0dae --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/README.md @@ -0,0 +1,62 @@ +# call-bind-apply-helpers [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Helper functions around Function call/apply/bind, for use in `call-bind`. + +The only packages that should likely ever use this package directly are `call-bind` and `get-intrinsic`. +Please use `call-bind` unless you have a very good reason not to. + +## Getting started + +```sh +npm install --save call-bind-apply-helpers +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const callBindBasic = require('call-bind-apply-helpers'); + +function f(a, b) { + assert.equal(this, 1); + assert.equal(a, 2); + assert.equal(b, 3); + assert.equal(arguments.length, 2); +} + +const fBound = callBindBasic([f, 1]); + +delete Function.prototype.call; +delete Function.prototype.bind; + +fBound(2, 3); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/call-bind-apply-helpers +[npm-version-svg]: https://versionbadg.es/ljharb/call-bind-apply-helpers.svg +[deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers.svg +[deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers +[dev-deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/call-bind-apply-helpers.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/call-bind-apply-helpers.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/call-bind-apply-helpers.svg +[downloads-url]: https://npm-stat.com/charts.html?package=call-bind-apply-helpers +[codecov-image]: https://codecov.io/gh/ljharb/call-bind-apply-helpers/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/call-bind-apply-helpers/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bind-apply-helpers +[actions-url]: https://github.com/ljharb/call-bind-apply-helpers/actions diff --git a/bff/node_modules/call-bind-apply-helpers/actualApply.d.ts b/bff/node_modules/call-bind-apply-helpers/actualApply.d.ts new file mode 100644 index 0000000..b87286a --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/actualApply.d.ts @@ -0,0 +1 @@ +export = Reflect.apply; \ No newline at end of file diff --git a/bff/node_modules/call-bind-apply-helpers/actualApply.js b/bff/node_modules/call-bind-apply-helpers/actualApply.js new file mode 100644 index 0000000..ffa5135 --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/actualApply.js @@ -0,0 +1,10 @@ +'use strict'; + +var bind = require('function-bind'); + +var $apply = require('./functionApply'); +var $call = require('./functionCall'); +var $reflectApply = require('./reflectApply'); + +/** @type {import('./actualApply')} */ +module.exports = $reflectApply || bind.call($call, $apply); diff --git a/bff/node_modules/call-bind-apply-helpers/applyBind.d.ts b/bff/node_modules/call-bind-apply-helpers/applyBind.d.ts new file mode 100644 index 0000000..d176c1a --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/applyBind.d.ts @@ -0,0 +1,19 @@ +import actualApply from './actualApply'; + +type TupleSplitHead = T['length'] extends N + ? T + : T extends [...infer R, any] + ? TupleSplitHead + : never + +type TupleSplitTail = O['length'] extends N + ? T + : T extends [infer F, ...infer R] + ? TupleSplitTail<[...R], N, [...O, F]> + : never + +type TupleSplit = [TupleSplitHead, TupleSplitTail] + +declare function applyBind(...args: TupleSplit, 2>[1]): ReturnType; + +export = applyBind; \ No newline at end of file diff --git a/bff/node_modules/call-bind-apply-helpers/applyBind.js b/bff/node_modules/call-bind-apply-helpers/applyBind.js new file mode 100644 index 0000000..d2b7723 --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/applyBind.js @@ -0,0 +1,10 @@ +'use strict'; + +var bind = require('function-bind'); +var $apply = require('./functionApply'); +var actualApply = require('./actualApply'); + +/** @type {import('./applyBind')} */ +module.exports = function applyBind() { + return actualApply(bind, $apply, arguments); +}; diff --git a/bff/node_modules/call-bind-apply-helpers/functionApply.d.ts b/bff/node_modules/call-bind-apply-helpers/functionApply.d.ts new file mode 100644 index 0000000..1f6e11b --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/functionApply.d.ts @@ -0,0 +1 @@ +export = Function.prototype.apply; \ No newline at end of file diff --git a/bff/node_modules/call-bind-apply-helpers/functionApply.js b/bff/node_modules/call-bind-apply-helpers/functionApply.js new file mode 100644 index 0000000..c71df9c --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/functionApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionApply')} */ +module.exports = Function.prototype.apply; diff --git a/bff/node_modules/call-bind-apply-helpers/functionCall.d.ts b/bff/node_modules/call-bind-apply-helpers/functionCall.d.ts new file mode 100644 index 0000000..15e93df --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/functionCall.d.ts @@ -0,0 +1 @@ +export = Function.prototype.call; \ No newline at end of file diff --git a/bff/node_modules/call-bind-apply-helpers/functionCall.js b/bff/node_modules/call-bind-apply-helpers/functionCall.js new file mode 100644 index 0000000..7a8d873 --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/functionCall.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./functionCall')} */ +module.exports = Function.prototype.call; diff --git a/bff/node_modules/call-bind-apply-helpers/index.d.ts b/bff/node_modules/call-bind-apply-helpers/index.d.ts new file mode 100644 index 0000000..541516b --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/index.d.ts @@ -0,0 +1,64 @@ +type RemoveFromTuple< + Tuple extends readonly unknown[], + RemoveCount extends number, + Index extends 1[] = [] +> = Index["length"] extends RemoveCount + ? Tuple + : Tuple extends [infer First, ...infer Rest] + ? RemoveFromTuple + : Tuple; + +type ConcatTuples< + Prefix extends readonly unknown[], + Suffix extends readonly unknown[] +> = [...Prefix, ...Suffix]; + +type ExtractFunctionParams = T extends (this: infer TThis, ...args: infer P extends readonly unknown[]) => infer R + ? { thisArg: TThis; params: P; returnType: R } + : never; + +type BindFunction< + T extends (this: any, ...args: any[]) => any, + TThis, + TBoundArgs extends readonly unknown[], + ReceiverBound extends boolean +> = ExtractFunctionParams extends { + thisArg: infer OrigThis; + params: infer P extends readonly unknown[]; + returnType: infer R; +} + ? ReceiverBound extends true + ? (...args: RemoveFromTuple>) => R extends [OrigThis, ...infer Rest] + ? [TThis, ...Rest] // Replace `this` with `thisArg` + : R + : >>( + thisArg: U, + ...args: RemainingArgs + ) => R extends [OrigThis, ...infer Rest] + ? [U, ...ConcatTuples] // Preserve bound args in return type + : R + : never; + +declare function callBind< + const T extends (this: any, ...args: any[]) => any, + Extracted extends ExtractFunctionParams, + const TBoundArgs extends Partial & readonly unknown[], + const TThis extends Extracted["thisArg"] +>( + args: [fn: T, thisArg: TThis, ...boundArgs: TBoundArgs] +): BindFunction; + +declare function callBind< + const T extends (this: any, ...args: any[]) => any, + Extracted extends ExtractFunctionParams, + const TBoundArgs extends Partial & readonly unknown[] +>( + args: [fn: T, ...boundArgs: TBoundArgs] +): BindFunction; + +declare function callBind( + args: [fn: Exclude, ...rest: TArgs] +): never; + +// export as namespace callBind; +export = callBind; diff --git a/bff/node_modules/call-bind-apply-helpers/index.js b/bff/node_modules/call-bind-apply-helpers/index.js new file mode 100644 index 0000000..2f6dab4 --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/index.js @@ -0,0 +1,15 @@ +'use strict'; + +var bind = require('function-bind'); +var $TypeError = require('es-errors/type'); + +var $call = require('./functionCall'); +var $actualApply = require('./actualApply'); + +/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ +module.exports = function callBindBasic(args) { + if (args.length < 1 || typeof args[0] !== 'function') { + throw new $TypeError('a function is required'); + } + return $actualApply(bind, $call, args); +}; diff --git a/bff/node_modules/call-bind-apply-helpers/package.json b/bff/node_modules/call-bind-apply-helpers/package.json new file mode 100644 index 0000000..923b8be --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/package.json @@ -0,0 +1,85 @@ +{ + "name": "call-bind-apply-helpers", + "version": "1.0.2", + "description": "Helper functions around Function call/apply/bind, for use in `call-bind`", + "main": "index.js", + "exports": { + ".": "./index.js", + "./actualApply": "./actualApply.js", + "./applyBind": "./applyBind.js", + "./functionApply": "./functionApply.js", + "./functionCall": "./functionCall.js", + "./reflectApply": "./reflectApply.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bind-apply-helpers.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bind-apply-helpers/issues" + }, + "homepage": "https://github.com/ljharb/call-bind-apply-helpers#readme", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.3", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/for-each": "^0.3.3", + "@types/function-bind": "^1.1.10", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "has-strict-mode": "^1.1.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/call-bind-apply-helpers/reflectApply.d.ts b/bff/node_modules/call-bind-apply-helpers/reflectApply.d.ts new file mode 100644 index 0000000..6b2ae76 --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/reflectApply.d.ts @@ -0,0 +1,3 @@ +declare const reflectApply: false | typeof Reflect.apply; + +export = reflectApply; diff --git a/bff/node_modules/call-bind-apply-helpers/reflectApply.js b/bff/node_modules/call-bind-apply-helpers/reflectApply.js new file mode 100644 index 0000000..3d03caa --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/reflectApply.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./reflectApply')} */ +module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; diff --git a/bff/node_modules/call-bind-apply-helpers/test/index.js b/bff/node_modules/call-bind-apply-helpers/test/index.js new file mode 100644 index 0000000..1cdc89e --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/test/index.js @@ -0,0 +1,63 @@ +'use strict'; + +var callBind = require('../'); +var hasStrictMode = require('has-strict-mode')(); +var forEach = require('for-each'); +var inspect = require('object-inspect'); +var v = require('es-value-fixtures'); + +var test = require('tape'); + +test('callBindBasic', function (t) { + forEach(v.nonFunctions, function (nonFunction) { + t['throws']( + // @ts-expect-error + function () { callBind([nonFunction]); }, + TypeError, + inspect(nonFunction) + ' is not a function' + ); + }); + + var sentinel = { sentinel: true }; + /** @type {(this: T, a: A, b: B) => [T | undefined, A, B]} */ + var func = function (a, b) { + // eslint-disable-next-line no-invalid-this + return [!hasStrictMode && this === global ? undefined : this, a, b]; + }; + t.equal(func.length, 2, 'original function length is 2'); + + /** type {(thisArg: unknown, a: number, b: number) => [unknown, number, number]} */ + var bound = callBind([func]); + /** type {((a: number, b: number) => [typeof sentinel, typeof a, typeof b])} */ + var boundR = callBind([func, sentinel]); + /** type {((b: number) => [typeof sentinel, number, typeof b])} */ + var boundArg = callBind([func, sentinel, /** @type {const} */ (1)]); + + // @ts-expect-error + t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with no args'); + + // @ts-expect-error + t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); + // @ts-expect-error + t.deepEqual(bound(1, 2), [hasStrictMode ? 1 : Object(1), 2, undefined], 'bound func too few args'); + // @ts-expect-error + t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); + // @ts-expect-error + t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); + + t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); + t.deepEqual(bound(1, 2, 3), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with right args'); + t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); + t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); + + // @ts-expect-error + t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); + // @ts-expect-error + t.deepEqual(bound(1, 2, 3, 4), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with too many args'); + // @ts-expect-error + t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); + // @ts-expect-error + t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); + + t.end(); +}); diff --git a/bff/node_modules/call-bind-apply-helpers/tsconfig.json b/bff/node_modules/call-bind-apply-helpers/tsconfig.json new file mode 100644 index 0000000..aef9993 --- /dev/null +++ b/bff/node_modules/call-bind-apply-helpers/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} \ No newline at end of file diff --git a/bff/node_modules/call-bound/.eslintrc b/bff/node_modules/call-bound/.eslintrc new file mode 100644 index 0000000..2612ed8 --- /dev/null +++ b/bff/node_modules/call-bound/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/bff/node_modules/call-bound/.github/FUNDING.yml b/bff/node_modules/call-bound/.github/FUNDING.yml new file mode 100644 index 0000000..2a2a135 --- /dev/null +++ b/bff/node_modules/call-bound/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/call-bound +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/call-bound/.nycrc b/bff/node_modules/call-bound/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/bff/node_modules/call-bound/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/call-bound/CHANGELOG.md b/bff/node_modules/call-bound/CHANGELOG.md new file mode 100644 index 0000000..8bde4e9 --- /dev/null +++ b/bff/node_modules/call-bound/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.4](https://github.com/ljharb/call-bound/compare/v1.0.3...v1.0.4) - 2025-03-03 + +### Commits + +- [types] improve types [`e648922`](https://github.com/ljharb/call-bound/commit/e6489222a9e54f350fbf952ceabe51fd8b6027ff) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`a42a5eb`](https://github.com/ljharb/call-bound/commit/a42a5ebe6c1b54fcdc7997c7dc64fdca9e936719) +- [Deps] update `call-bind-apply-helpers`, `get-intrinsic` [`f529eac`](https://github.com/ljharb/call-bound/commit/f529eac132404c17156bbc23ab2297a25d0f20b8) + +## [v1.0.3](https://github.com/ljharb/call-bound/compare/v1.0.2...v1.0.3) - 2024-12-15 + +### Commits + +- [Refactor] use `call-bind-apply-helpers` instead of `call-bind` [`5e0b134`](https://github.com/ljharb/call-bound/commit/5e0b13496df14fb7d05dae9412f088da8d3f75be) +- [Deps] update `get-intrinsic` [`41fc967`](https://github.com/ljharb/call-bound/commit/41fc96732a22c7b7e8f381f93ccc54bb6293be2e) +- [readme] fix example [`79a0137`](https://github.com/ljharb/call-bound/commit/79a0137723f7c6d09c9c05452bbf8d5efb5d6e49) +- [meta] add `sideEffects` flag [`08b07be`](https://github.com/ljharb/call-bound/commit/08b07be7f1c03f67dc6f3cdaf0906259771859f7) + +## [v1.0.2](https://github.com/ljharb/call-bound/compare/v1.0.1...v1.0.2) - 2024-12-10 + +### Commits + +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `gopd` [`e6a5ffe`](https://github.com/ljharb/call-bound/commit/e6a5ffe849368fe4f74dfd6cdeca1b9baa39e8d5) +- [Deps] update `call-bind`, `get-intrinsic` [`2aeb5b5`](https://github.com/ljharb/call-bound/commit/2aeb5b521dc2b2683d1345c753ea1161de2d1c14) +- [types] improve return type [`1a0c9fe`](https://github.com/ljharb/call-bound/commit/1a0c9fe3114471e7ca1f57d104e2efe713bb4871) + +## v1.0.1 - 2024-12-05 + +### Commits + +- Initial implementation, tests, readme, types [`6d94121`](https://github.com/ljharb/call-bound/commit/6d94121a9243602e506334069f7a03189fe3363d) +- Initial commit [`0eae867`](https://github.com/ljharb/call-bound/commit/0eae867334ea025c33e6e91cdecfc9df96680cf9) +- npm init [`71b2479`](https://github.com/ljharb/call-bound/commit/71b2479c6723e0b7d91a6b663613067e98b7b275) +- Only apps should have lockfiles [`c3754a9`](https://github.com/ljharb/call-bound/commit/c3754a949b7f9132b47e2d18c1729889736741eb) +- [actions] skip `npm ls` in node < 10 [`74275a5`](https://github.com/ljharb/call-bound/commit/74275a5186b8caf6309b6b97472bdcb0df4683a8) +- [Dev Deps] add missing peer dep [`1354de8`](https://github.com/ljharb/call-bound/commit/1354de8679413e4ae9c523d85f76fa7a5e032d97) diff --git a/bff/node_modules/call-bound/LICENSE b/bff/node_modules/call-bound/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/bff/node_modules/call-bound/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/call-bound/README.md b/bff/node_modules/call-bound/README.md new file mode 100644 index 0000000..a44e43e --- /dev/null +++ b/bff/node_modules/call-bound/README.md @@ -0,0 +1,53 @@ +# call-bound [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`. + +## Getting started + +```sh +npm install --save call-bound +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const callBound = require('call-bound'); + +const slice = callBound('Array.prototype.slice'); + +delete Function.prototype.call; +delete Function.prototype.bind; +delete Array.prototype.slice; + +assert.deepEqual(slice([1, 2, 3, 4], 1, -1), [2, 3]); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/call-bound +[npm-version-svg]: https://versionbadg.es/ljharb/call-bound.svg +[deps-svg]: https://david-dm.org/ljharb/call-bound.svg +[deps-url]: https://david-dm.org/ljharb/call-bound +[dev-deps-svg]: https://david-dm.org/ljharb/call-bound/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/call-bound#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/call-bound.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/call-bound.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/call-bound.svg +[downloads-url]: https://npm-stat.com/charts.html?package=call-bound +[codecov-image]: https://codecov.io/gh/ljharb/call-bound/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/call-bound/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bound +[actions-url]: https://github.com/ljharb/call-bound/actions diff --git a/bff/node_modules/call-bound/index.d.ts b/bff/node_modules/call-bound/index.d.ts new file mode 100644 index 0000000..5562f00 --- /dev/null +++ b/bff/node_modules/call-bound/index.d.ts @@ -0,0 +1,94 @@ +type Intrinsic = typeof globalThis; + +type IntrinsicName = keyof Intrinsic | `%${keyof Intrinsic}%`; + +type IntrinsicPath = IntrinsicName | `${StripPercents}.${string}` | `%${StripPercents}.${string}%`; + +type AllowMissing = boolean; + +type StripPercents = T extends `%${infer U}%` ? U : T; + +type BindMethodPrecise = + F extends (this: infer This, ...args: infer Args) => infer R + ? (obj: This, ...args: Args) => R + : F extends { + (this: infer This1, ...args: infer Args1): infer R1; + (this: infer This2, ...args: infer Args2): infer R2 + } + ? { + (obj: This1, ...args: Args1): R1; + (obj: This2, ...args: Args2): R2 + } + : never + +// Extract method type from a prototype +type GetPrototypeMethod = + (typeof globalThis)[T] extends { prototype: any } + ? M extends keyof (typeof globalThis)[T]['prototype'] + ? (typeof globalThis)[T]['prototype'][M] + : never + : never + +// Get static property/method +type GetStaticMember = + P extends keyof (typeof globalThis)[T] ? (typeof globalThis)[T][P] : never + +// Type that maps string path to actual bound function or value with better precision +type BoundIntrinsic = + S extends `${infer Obj}.prototype.${infer Method}` + ? Obj extends keyof typeof globalThis + ? BindMethodPrecise> + : unknown + : S extends `${infer Obj}.${infer Prop}` + ? Obj extends keyof typeof globalThis + ? GetStaticMember + : unknown + : unknown + +declare function arraySlice(array: readonly T[], start?: number, end?: number): T[]; +declare function arraySlice(array: ArrayLike, start?: number, end?: number): T[]; +declare function arraySlice(array: IArguments, start?: number, end?: number): T[]; + +// Special cases for methods that need explicit typing +interface SpecialCases { + '%Object.prototype.isPrototypeOf%': (thisArg: {}, obj: unknown) => boolean; + '%String.prototype.replace%': { + (str: string, searchValue: string | RegExp, replaceValue: string): string; + (str: string, searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string + }; + '%Object.prototype.toString%': (obj: {}) => string; + '%Object.prototype.hasOwnProperty%': (obj: {}, v: PropertyKey) => boolean; + '%Array.prototype.slice%': typeof arraySlice; + '%Array.prototype.map%': (array: readonly T[], callbackfn: (value: T, index: number, array: readonly T[]) => U, thisArg?: any) => U[]; + '%Array.prototype.filter%': (array: readonly T[], predicate: (value: T, index: number, array: readonly T[]) => unknown, thisArg?: any) => T[]; + '%Array.prototype.indexOf%': (array: readonly T[], searchElement: T, fromIndex?: number) => number; + '%Function.prototype.apply%': (fn: (...args: A) => R, thisArg: any, args: A) => R; + '%Function.prototype.call%': (fn: (...args: A) => R, thisArg: any, ...args: A) => R; + '%Function.prototype.bind%': (fn: (...args: A) => R, thisArg: any, ...args: A) => (...remainingArgs: A) => R; + '%Promise.prototype.then%': { + (promise: Promise, onfulfilled: (value: T) => R | PromiseLike): Promise; + (promise: Promise, onfulfilled: ((value: T) => R | PromiseLike) | undefined | null, onrejected: (reason: any) => R | PromiseLike): Promise; + }; + '%RegExp.prototype.test%': (regexp: RegExp, str: string) => boolean; + '%RegExp.prototype.exec%': (regexp: RegExp, str: string) => RegExpExecArray | null; + '%Error.prototype.toString%': (error: Error) => string; + '%TypeError.prototype.toString%': (error: TypeError) => string; + '%String.prototype.split%': ( + obj: unknown, + splitter: string | RegExp | { + [Symbol.split](string: string, limit?: number): string[]; + }, + limit?: number | undefined + ) => string[]; +} + +/** + * Returns a bound function for a prototype method, or a value for a static property. + * + * @param name - The name of the intrinsic (e.g. 'Array.prototype.slice') + * @param {AllowMissing} [allowMissing] - Whether to allow missing intrinsics (default: false) + */ +declare function callBound, S extends IntrinsicPath>(name: K, allowMissing?: AllowMissing): SpecialCases[`%${StripPercents}%`]; +declare function callBound, S extends IntrinsicPath>(name: S, allowMissing?: AllowMissing): BoundIntrinsic; + +export = callBound; diff --git a/bff/node_modules/call-bound/index.js b/bff/node_modules/call-bound/index.js new file mode 100644 index 0000000..e9ade74 --- /dev/null +++ b/bff/node_modules/call-bound/index.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var callBindBasic = require('call-bind-apply-helpers'); + +/** @type {(thisArg: string, searchString: string, position?: number) => number} */ +var $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]); + +/** @type {import('.')} */ +module.exports = function callBoundIntrinsic(name, allowMissing) { + /* eslint no-extra-parens: 0 */ + + var intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing)); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { + return callBindBasic(/** @type {const} */ ([intrinsic])); + } + return intrinsic; +}; diff --git a/bff/node_modules/call-bound/package.json b/bff/node_modules/call-bound/package.json new file mode 100644 index 0000000..d542db4 --- /dev/null +++ b/bff/node_modules/call-bound/package.json @@ -0,0 +1,99 @@ +{ + "name": "call-bound", + "version": "1.0.4", + "description": "Robust call-bound JavaScript intrinsics, using `call-bind` and `get-intrinsic`.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bound.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "callbind", + "callbound", + "call", + "bind", + "bound", + "call-bind", + "call-bound", + "function", + "es-abstract" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bound/issues" + }, + "homepage": "https://github.com/ljharb/call-bound#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.4", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.3.0", + "@types/call-bind": "^1.0.5", + "@types/get-intrinsic": "^1.2.3", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "has-strict-mode": "^1.1.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/call-bound/test/index.js b/bff/node_modules/call-bound/test/index.js new file mode 100644 index 0000000..a2fc9f0 --- /dev/null +++ b/bff/node_modules/call-bound/test/index.js @@ -0,0 +1,61 @@ +'use strict'; + +var test = require('tape'); + +var callBound = require('../'); + +/** @template {true} T @template U @typedef {T extends U ? T : never} AssertType */ + +test('callBound', function (t) { + // static primitive + t.equal(callBound('Array.length'), Array.length, 'Array.length yields itself'); + t.equal(callBound('%Array.length%'), Array.length, '%Array.length% yields itself'); + + // static non-function object + t.equal(callBound('Array.prototype'), Array.prototype, 'Array.prototype yields itself'); + t.equal(callBound('%Array.prototype%'), Array.prototype, '%Array.prototype% yields itself'); + t.equal(callBound('Array.constructor'), Array.constructor, 'Array.constructor yields itself'); + t.equal(callBound('%Array.constructor%'), Array.constructor, '%Array.constructor% yields itself'); + + // static function + t.equal(callBound('Date.parse'), Date.parse, 'Date.parse yields itself'); + t.equal(callBound('%Date.parse%'), Date.parse, '%Date.parse% yields itself'); + + // prototype primitive + t.equal(callBound('Error.prototype.message'), Error.prototype.message, 'Error.prototype.message yields itself'); + t.equal(callBound('%Error.prototype.message%'), Error.prototype.message, '%Error.prototype.message% yields itself'); + + var x = callBound('Object.prototype.toString'); + var y = callBound('%Object.prototype.toString%'); + + // prototype function + t.notEqual(x, Object.prototype.toString, 'Object.prototype.toString does not yield itself'); + t.notEqual(y, Object.prototype.toString, '%Object.prototype.toString% does not yield itself'); + t.equal(x(true), Object.prototype.toString.call(true), 'call-bound Object.prototype.toString calls into the original'); + t.equal(y(true), Object.prototype.toString.call(true), 'call-bound %Object.prototype.toString% calls into the original'); + + t['throws']( + // @ts-expect-error + function () { callBound('does not exist'); }, + SyntaxError, + 'nonexistent intrinsic throws' + ); + t['throws']( + // @ts-expect-error + function () { callBound('does not exist', true); }, + SyntaxError, + 'allowMissing arg still throws for unknown intrinsic' + ); + + t.test('real but absent intrinsic', { skip: typeof WeakRef !== 'undefined' }, function (st) { + st['throws']( + function () { callBound('WeakRef'); }, + TypeError, + 'real but absent intrinsic throws' + ); + st.equal(callBound('WeakRef', true), undefined, 'allowMissing arg avoids exception'); + st.end(); + }); + + t.end(); +}); diff --git a/bff/node_modules/call-bound/tsconfig.json b/bff/node_modules/call-bound/tsconfig.json new file mode 100644 index 0000000..8976d98 --- /dev/null +++ b/bff/node_modules/call-bound/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ESNext", + "lib": ["es2024"], + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/combined-stream/License b/bff/node_modules/combined-stream/License new file mode 100644 index 0000000..4804b7a --- /dev/null +++ b/bff/node_modules/combined-stream/License @@ -0,0 +1,19 @@ +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/combined-stream/Readme.md b/bff/node_modules/combined-stream/Readme.md new file mode 100644 index 0000000..9e367b5 --- /dev/null +++ b/bff/node_modules/combined-stream/Readme.md @@ -0,0 +1,138 @@ +# combined-stream + +A stream that emits multiple other streams one after another. + +**NB** Currently `combined-stream` works with streams version 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatibility with `combined-stream`. + +- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module. + +- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another. + +## Installation + +``` bash +npm install combined-stream +``` + +## Usage + +Here is a simple example that shows how you can use combined-stream to combine +two files into one: + +``` javascript +var CombinedStream = require('combined-stream'); +var fs = require('fs'); + +var combinedStream = CombinedStream.create(); +combinedStream.append(fs.createReadStream('file1.txt')); +combinedStream.append(fs.createReadStream('file2.txt')); + +combinedStream.pipe(fs.createWriteStream('combined.txt')); +``` + +While the example above works great, it will pause all source streams until +they are needed. If you don't want that to happen, you can set `pauseStreams` +to `false`: + +``` javascript +var CombinedStream = require('combined-stream'); +var fs = require('fs'); + +var combinedStream = CombinedStream.create({pauseStreams: false}); +combinedStream.append(fs.createReadStream('file1.txt')); +combinedStream.append(fs.createReadStream('file2.txt')); + +combinedStream.pipe(fs.createWriteStream('combined.txt')); +``` + +However, what if you don't have all the source streams yet, or you don't want +to allocate the resources (file descriptors, memory, etc.) for them right away? +Well, in that case you can simply provide a callback that supplies the stream +by calling a `next()` function: + +``` javascript +var CombinedStream = require('combined-stream'); +var fs = require('fs'); + +var combinedStream = CombinedStream.create(); +combinedStream.append(function(next) { + next(fs.createReadStream('file1.txt')); +}); +combinedStream.append(function(next) { + next(fs.createReadStream('file2.txt')); +}); + +combinedStream.pipe(fs.createWriteStream('combined.txt')); +``` + +## API + +### CombinedStream.create([options]) + +Returns a new combined stream object. Available options are: + +* `maxDataSize` +* `pauseStreams` + +The effect of those options is described below. + +### combinedStream.pauseStreams = `true` + +Whether to apply back pressure to the underlaying streams. If set to `false`, +the underlaying streams will never be paused. If set to `true`, the +underlaying streams will be paused right after being appended, as well as when +`delayedStream.pipe()` wants to throttle. + +### combinedStream.maxDataSize = `2 * 1024 * 1024` + +The maximum amount of bytes (or characters) to buffer for all source streams. +If this value is exceeded, `combinedStream` emits an `'error'` event. + +### combinedStream.dataSize = `0` + +The amount of bytes (or characters) currently buffered by `combinedStream`. + +### combinedStream.append(stream) + +Appends the given `stream` to the combinedStream object. If `pauseStreams` is +set to `true, this stream will also be paused right away. + +`streams` can also be a function that takes one parameter called `next`. `next` +is a function that must be invoked in order to provide the `next` stream, see +example above. + +Regardless of how the `stream` is appended, combined-stream always attaches an +`'error'` listener to it, so you don't have to do that manually. + +Special case: `stream` can also be a String or Buffer. + +### combinedStream.write(data) + +You should not call this, `combinedStream` takes care of piping the appended +streams into itself for you. + +### combinedStream.resume() + +Causes `combinedStream` to start drain the streams it manages. The function is +idempotent, and also emits a `'resume'` event each time which usually goes to +the stream that is currently being drained. + +### combinedStream.pause(); + +If `combinedStream.pauseStreams` is set to `false`, this does nothing. +Otherwise a `'pause'` event is emitted, this goes to the stream that is +currently being drained, so you can use it to apply back pressure. + +### combinedStream.end(); + +Sets `combinedStream.writable` to false, emits an `'end'` event, and removes +all streams from the queue. + +### combinedStream.destroy(); + +Same as `combinedStream.end()`, except it emits a `'close'` event instead of +`'end'`. + +## License + +combined-stream is licensed under the MIT license. diff --git a/bff/node_modules/combined-stream/lib/combined_stream.js b/bff/node_modules/combined-stream/lib/combined_stream.js new file mode 100644 index 0000000..125f097 --- /dev/null +++ b/bff/node_modules/combined-stream/lib/combined_stream.js @@ -0,0 +1,208 @@ +var util = require('util'); +var Stream = require('stream').Stream; +var DelayedStream = require('delayed-stream'); + +module.exports = CombinedStream; +function CombinedStream() { + this.writable = false; + this.readable = true; + this.dataSize = 0; + this.maxDataSize = 2 * 1024 * 1024; + this.pauseStreams = true; + + this._released = false; + this._streams = []; + this._currentStream = null; + this._insideLoop = false; + this._pendingNext = false; +} +util.inherits(CombinedStream, Stream); + +CombinedStream.create = function(options) { + var combinedStream = new this(); + + options = options || {}; + for (var option in options) { + combinedStream[option] = options[option]; + } + + return combinedStream; +}; + +CombinedStream.isStreamLike = function(stream) { + return (typeof stream !== 'function') + && (typeof stream !== 'string') + && (typeof stream !== 'boolean') + && (typeof stream !== 'number') + && (!Buffer.isBuffer(stream)); +}; + +CombinedStream.prototype.append = function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + + if (isStreamLike) { + if (!(stream instanceof DelayedStream)) { + var newStream = DelayedStream.create(stream, { + maxDataSize: Infinity, + pauseStream: this.pauseStreams, + }); + stream.on('data', this._checkDataSize.bind(this)); + stream = newStream; + } + + this._handleErrors(stream); + + if (this.pauseStreams) { + stream.pause(); + } + } + + this._streams.push(stream); + return this; +}; + +CombinedStream.prototype.pipe = function(dest, options) { + Stream.prototype.pipe.call(this, dest, options); + this.resume(); + return dest; +}; + +CombinedStream.prototype._getNext = function() { + this._currentStream = null; + + if (this._insideLoop) { + this._pendingNext = true; + return; // defer call + } + + this._insideLoop = true; + try { + do { + this._pendingNext = false; + this._realGetNext(); + } while (this._pendingNext); + } finally { + this._insideLoop = false; + } +}; + +CombinedStream.prototype._realGetNext = function() { + var stream = this._streams.shift(); + + + if (typeof stream == 'undefined') { + this.end(); + return; + } + + if (typeof stream !== 'function') { + this._pipeNext(stream); + return; + } + + var getStream = stream; + getStream(function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('data', this._checkDataSize.bind(this)); + this._handleErrors(stream); + } + + this._pipeNext(stream); + }.bind(this)); +}; + +CombinedStream.prototype._pipeNext = function(stream) { + this._currentStream = stream; + + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('end', this._getNext.bind(this)); + stream.pipe(this, {end: false}); + return; + } + + var value = stream; + this.write(value); + this._getNext(); +}; + +CombinedStream.prototype._handleErrors = function(stream) { + var self = this; + stream.on('error', function(err) { + self._emitError(err); + }); +}; + +CombinedStream.prototype.write = function(data) { + this.emit('data', data); +}; + +CombinedStream.prototype.pause = function() { + if (!this.pauseStreams) { + return; + } + + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); + this.emit('pause'); +}; + +CombinedStream.prototype.resume = function() { + if (!this._released) { + this._released = true; + this.writable = true; + this._getNext(); + } + + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); + this.emit('resume'); +}; + +CombinedStream.prototype.end = function() { + this._reset(); + this.emit('end'); +}; + +CombinedStream.prototype.destroy = function() { + this._reset(); + this.emit('close'); +}; + +CombinedStream.prototype._reset = function() { + this.writable = false; + this._streams = []; + this._currentStream = null; +}; + +CombinedStream.prototype._checkDataSize = function() { + this._updateDataSize(); + if (this.dataSize <= this.maxDataSize) { + return; + } + + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; + this._emitError(new Error(message)); +}; + +CombinedStream.prototype._updateDataSize = function() { + this.dataSize = 0; + + var self = this; + this._streams.forEach(function(stream) { + if (!stream.dataSize) { + return; + } + + self.dataSize += stream.dataSize; + }); + + if (this._currentStream && this._currentStream.dataSize) { + this.dataSize += this._currentStream.dataSize; + } +}; + +CombinedStream.prototype._emitError = function(err) { + this._reset(); + this.emit('error', err); +}; diff --git a/bff/node_modules/combined-stream/package.json b/bff/node_modules/combined-stream/package.json new file mode 100644 index 0000000..6982b6d --- /dev/null +++ b/bff/node_modules/combined-stream/package.json @@ -0,0 +1,25 @@ +{ + "author": "Felix Geisendörfer (http://debuggable.com/)", + "name": "combined-stream", + "description": "A stream that emits multiple other streams one after another.", + "version": "1.0.8", + "homepage": "https://github.com/felixge/node-combined-stream", + "repository": { + "type": "git", + "url": "git://github.com/felixge/node-combined-stream.git" + }, + "main": "./lib/combined_stream", + "scripts": { + "test": "node test/run.js" + }, + "engines": { + "node": ">= 0.8" + }, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "devDependencies": { + "far": "~0.0.7" + }, + "license": "MIT" +} diff --git a/bff/node_modules/combined-stream/yarn.lock b/bff/node_modules/combined-stream/yarn.lock new file mode 100644 index 0000000..7edf418 --- /dev/null +++ b/bff/node_modules/combined-stream/yarn.lock @@ -0,0 +1,17 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +far@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/far/-/far-0.0.7.tgz#01c1fd362bcd26ce9cf161af3938aa34619f79a7" + dependencies: + oop "0.0.3" + +oop@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/oop/-/oop-0.0.3.tgz#70fa405a5650891a194fdc82ca68dad6dabf4401" diff --git a/bff/node_modules/concat-stream/LICENSE b/bff/node_modules/concat-stream/LICENSE new file mode 100644 index 0000000..99c130e --- /dev/null +++ b/bff/node_modules/concat-stream/LICENSE @@ -0,0 +1,24 @@ +The MIT License + +Copyright (c) 2013 Max Ogden + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/bff/node_modules/concat-stream/index.js b/bff/node_modules/concat-stream/index.js new file mode 100644 index 0000000..dd672a7 --- /dev/null +++ b/bff/node_modules/concat-stream/index.js @@ -0,0 +1,144 @@ +var Writable = require('readable-stream').Writable +var inherits = require('inherits') +var bufferFrom = require('buffer-from') + +if (typeof Uint8Array === 'undefined') { + var U8 = require('typedarray').Uint8Array +} else { + var U8 = Uint8Array +} + +function ConcatStream(opts, cb) { + if (!(this instanceof ConcatStream)) return new ConcatStream(opts, cb) + + if (typeof opts === 'function') { + cb = opts + opts = {} + } + if (!opts) opts = {} + + var encoding = opts.encoding + var shouldInferEncoding = false + + if (!encoding) { + shouldInferEncoding = true + } else { + encoding = String(encoding).toLowerCase() + if (encoding === 'u8' || encoding === 'uint8') { + encoding = 'uint8array' + } + } + + Writable.call(this, { objectMode: true }) + + this.encoding = encoding + this.shouldInferEncoding = shouldInferEncoding + + if (cb) this.on('finish', function () { cb(this.getBody()) }) + this.body = [] +} + +module.exports = ConcatStream +inherits(ConcatStream, Writable) + +ConcatStream.prototype._write = function(chunk, enc, next) { + this.body.push(chunk) + next() +} + +ConcatStream.prototype.inferEncoding = function (buff) { + var firstBuffer = buff === undefined ? this.body[0] : buff; + if (Buffer.isBuffer(firstBuffer)) return 'buffer' + if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array' + if (Array.isArray(firstBuffer)) return 'array' + if (typeof firstBuffer === 'string') return 'string' + if (Object.prototype.toString.call(firstBuffer) === "[object Object]") return 'object' + return 'buffer' +} + +ConcatStream.prototype.getBody = function () { + if (!this.encoding && this.body.length === 0) return [] + if (this.shouldInferEncoding) this.encoding = this.inferEncoding() + if (this.encoding === 'array') return arrayConcat(this.body) + if (this.encoding === 'string') return stringConcat(this.body) + if (this.encoding === 'buffer') return bufferConcat(this.body) + if (this.encoding === 'uint8array') return u8Concat(this.body) + return this.body +} + +var isArray = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]' +} + +function isArrayish (arr) { + return /Array\]$/.test(Object.prototype.toString.call(arr)) +} + +function isBufferish (p) { + return typeof p === 'string' || isArrayish(p) || (p && typeof p.subarray === 'function') +} + +function stringConcat (parts) { + var strings = [] + var needsToString = false + for (var i = 0; i < parts.length; i++) { + var p = parts[i] + if (typeof p === 'string') { + strings.push(p) + } else if (Buffer.isBuffer(p)) { + strings.push(p) + } else if (isBufferish(p)) { + strings.push(bufferFrom(p)) + } else { + strings.push(bufferFrom(String(p))) + } + } + if (Buffer.isBuffer(parts[0])) { + strings = Buffer.concat(strings) + strings = strings.toString('utf8') + } else { + strings = strings.join('') + } + return strings +} + +function bufferConcat (parts) { + var bufs = [] + for (var i = 0; i < parts.length; i++) { + var p = parts[i] + if (Buffer.isBuffer(p)) { + bufs.push(p) + } else if (isBufferish(p)) { + bufs.push(bufferFrom(p)) + } else { + bufs.push(bufferFrom(String(p))) + } + } + return Buffer.concat(bufs) +} + +function arrayConcat (parts) { + var res = [] + for (var i = 0; i < parts.length; i++) { + res.push.apply(res, parts[i]) + } + return res +} + +function u8Concat (parts) { + var len = 0 + for (var i = 0; i < parts.length; i++) { + if (typeof parts[i] === 'string') { + parts[i] = bufferFrom(parts[i]) + } + len += parts[i].length + } + var u8 = new U8(len) + for (var i = 0, offset = 0; i < parts.length; i++) { + var part = parts[i] + for (var j = 0; j < part.length; j++) { + u8[offset++] = part[j] + } + } + return u8 +} diff --git a/bff/node_modules/concat-stream/package.json b/bff/node_modules/concat-stream/package.json new file mode 100644 index 0000000..f709022 --- /dev/null +++ b/bff/node_modules/concat-stream/package.json @@ -0,0 +1,55 @@ +{ + "name": "concat-stream", + "version": "1.6.2", + "description": "writable stream that concatenates strings or binary data and calls a callback with the result", + "tags": [ + "stream", + "simple", + "util", + "utility" + ], + "author": "Max Ogden ", + "repository": { + "type": "git", + "url": "http://github.com/maxogden/concat-stream.git" + }, + "bugs": { + "url": "http://github.com/maxogden/concat-stream/issues" + }, + "engines": [ + "node >= 0.8" + ], + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "test": "tape test/*.js test/server/*.js" + }, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "devDependencies": { + "tape": "^4.6.3" + }, + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/8..latest", + "firefox/17..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/bff/node_modules/concat-stream/readme.md b/bff/node_modules/concat-stream/readme.md new file mode 100644 index 0000000..7aa19c4 --- /dev/null +++ b/bff/node_modules/concat-stream/readme.md @@ -0,0 +1,102 @@ +# concat-stream + +Writable stream that concatenates all the data from a stream and calls a callback with the result. Use this when you want to collect all the data from a stream into a single buffer. + +[![Build Status](https://travis-ci.org/maxogden/concat-stream.svg?branch=master)](https://travis-ci.org/maxogden/concat-stream) + +[![NPM](https://nodei.co/npm/concat-stream.png)](https://nodei.co/npm/concat-stream/) + +### description + +Streams emit many buffers. If you want to collect all of the buffers, and when the stream ends concatenate all of the buffers together and receive a single buffer then this is the module for you. + +Only use this if you know you can fit all of the output of your stream into a single Buffer (e.g. in RAM). + +There are also `objectMode` streams that emit things other than Buffers, and you can concatenate these too. See below for details. + +## Related + +`concat-stream` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one. + +### examples + +#### Buffers + +```js +var fs = require('fs') +var concat = require('concat-stream') + +var readStream = fs.createReadStream('cat.png') +var concatStream = concat(gotPicture) + +readStream.on('error', handleError) +readStream.pipe(concatStream) + +function gotPicture(imageBuffer) { + // imageBuffer is all of `cat.png` as a node.js Buffer +} + +function handleError(err) { + // handle your error appropriately here, e.g.: + console.error(err) // print the error to STDERR + process.exit(1) // exit program with non-zero exit code +} + +``` + +#### Arrays + +```js +var write = concat(function(data) {}) +write.write([1,2,3]) +write.write([4,5,6]) +write.end() +// data will be [1,2,3,4,5,6] in the above callback +``` + +#### Uint8Arrays + +```js +var write = concat(function(data) {}) +var a = new Uint8Array(3) +a[0] = 97; a[1] = 98; a[2] = 99 +write.write(a) +write.write('!') +write.end(Buffer.from('!!1')) +``` + +See `test/` for more examples + +# methods + +```js +var concat = require('concat-stream') +``` + +## var writable = concat(opts={}, cb) + +Return a `writable` stream that will fire `cb(data)` with all of the data that +was written to the stream. Data can be written to `writable` as strings, +Buffers, arrays of byte integers, and Uint8Arrays. + +By default `concat-stream` will give you back the same data type as the type of the first buffer written to the stream. Use `opts.encoding` to set what format `data` should be returned as, e.g. if you if you don't want to rely on the built-in type checking or for some other reason. + +* `string` - get a string +* `buffer` - get back a Buffer +* `array` - get an array of byte integers +* `uint8array`, `u8`, `uint8` - get back a Uint8Array +* `object`, get back an array of Objects + +If you don't specify an encoding, and the types can't be inferred (e.g. you write things that aren't in the list above), it will try to convert concat them into a `Buffer`. + +If nothing is written to `writable` then `data` will be an empty array `[]`. + +# error handling + +`concat-stream` does not handle errors for you, so you must handle errors on whatever streams you pipe into `concat-stream`. This is a general rule when programming with node.js streams: always handle errors on each and every stream. Since `concat-stream` is not itself a stream it does not emit errors. + +We recommend using [`end-of-stream`](https://npmjs.org/end-of-stream) or [`pump`](https://npmjs.org/pump) for writing error tolerant stream code. + +# license + +MIT LICENSE diff --git a/bff/node_modules/content-disposition/HISTORY.md b/bff/node_modules/content-disposition/HISTORY.md new file mode 100644 index 0000000..1a3b308 --- /dev/null +++ b/bff/node_modules/content-disposition/HISTORY.md @@ -0,0 +1,72 @@ +1.0.1 / 2025-11-18 +================= + + * Updated `engines` field to Node@18 or higher (fixed reference, see 1.0.0) + * Remove dependency `safe-buffer` + +1.0.0 / 2024-08-31 +================== + + * drop node <18 + * allow utf8 as alias for utf-8 + +0.5.4 / 2021-12-10 +================== + + * deps: safe-buffer@5.2.1 + +0.5.3 / 2018-12-17 +================== + + * Use `safe-buffer` for improved Buffer API + +0.5.2 / 2016-12-08 +================== + + * Fix `parse` to accept any linear whitespace character + +0.5.1 / 2016-01-17 +================== + + * perf: enable strict mode + +0.5.0 / 2014-10-11 +================== + + * Add `parse` function + +0.4.0 / 2014-09-21 +================== + + * Expand non-Unicode `filename` to the full ISO-8859-1 charset + +0.3.0 / 2014-09-20 +================== + + * Add `fallback` option + * Add `type` option + +0.2.0 / 2014-09-19 +================== + + * Reduce ambiguity of file names with hex escape in buggy browsers + +0.1.2 / 2014-09-19 +================== + + * Fix periodic invalid Unicode filename header + +0.1.1 / 2014-09-19 +================== + + * Fix invalid characters appearing in `filename*` parameter + +0.1.0 / 2014-09-18 +================== + + * Make the `filename` argument optional + +0.0.0 / 2014-09-18 +================== + + * Initial release diff --git a/bff/node_modules/content-disposition/LICENSE b/bff/node_modules/content-disposition/LICENSE new file mode 100644 index 0000000..84441fb --- /dev/null +++ b/bff/node_modules/content-disposition/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/content-disposition/README.md b/bff/node_modules/content-disposition/README.md new file mode 100644 index 0000000..fbedc2f --- /dev/null +++ b/bff/node_modules/content-disposition/README.md @@ -0,0 +1,142 @@ +# content-disposition + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Create and parse HTTP `Content-Disposition` header + +## Installation + +```sh +$ npm install content-disposition +``` + +## API + +```js +const contentDisposition = require('content-disposition') +``` + +### contentDisposition(filename, options) + +Create an attachment `Content-Disposition` header value using the given file name, +if supplied. The `filename` is optional and if no file name is desired, but you +want to specify `options`, set `filename` to `undefined`. + +```js +res.setHeader('Content-Disposition', contentDisposition('∫ maths.pdf')) +``` + +**note** HTTP headers are of the ISO-8859-1 character set. If you are writing this +header through a means different from `setHeader` in Node.js, you'll want to specify +the `'binary'` encoding in Node.js. + +#### Options + +`contentDisposition` accepts these properties in the options object. + +##### fallback + +If the `filename` option is outside ISO-8859-1, then the file name is actually +stored in a supplemental field for clients that support Unicode file names and +a ISO-8859-1 version of the file name is automatically generated. + +This specifies the ISO-8859-1 file name to override the automatic generation or +disables the generation all together, defaults to `true`. + + - A string will specify the ISO-8859-1 file name to use in place of automatic + generation. + - `false` will disable including a ISO-8859-1 file name and only include the + Unicode version (unless the file name is already ISO-8859-1). + - `true` will enable automatic generation if the file name is outside ISO-8859-1. + +If the `filename` option is ISO-8859-1 and this option is specified and has a +different value, then the `filename` option is encoded in the extended field +and this set as the fallback field, even though they are both ISO-8859-1. + +##### type + +Specifies the disposition type, defaults to `"attachment"`. This can also be +`"inline"`, or any other value (all values except inline are treated like +`attachment`, but can convey additional information if both parties agree to +it). The type is normalized to lower-case. + +### contentDisposition.parse(string) + +```js +const disposition = contentDisposition.parse('attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt') +``` + +Parse a `Content-Disposition` header string. This automatically handles extended +("Unicode") parameters by decoding them and providing them under the standard +parameter name. This will return an object with the following properties (examples +are shown for the string `'attachment; filename="EURO rates.txt"; filename*=UTF-8\'\'%e2%82%ac%20rates.txt'`): + + - `type`: The disposition type (always lower case). Example: `'attachment'` + + - `parameters`: An object of the parameters in the disposition (name of parameter + always lower case and extended versions replace non-extended versions). Example: + `{filename: "€ rates.txt"}` + +## Examples + +### Send a file for download + +```js +const contentDisposition = require('content-disposition') +const destroy = require('destroy') +const fs = require('fs') +const http = require('http') +const onFinished = require('on-finished') + +const filePath = '/path/to/public/plans.pdf' + +http.createServer(function onRequest (req, res) { + // set headers + res.setHeader('Content-Type', 'application/pdf') + res.setHeader('Content-Disposition', contentDisposition(filePath)) + + // send file + const stream = fs.createReadStream(filePath) + stream.pipe(res) + onFinished(res, function () { + destroy(stream) + }) +}) +``` + +## Testing + +```sh +$ npm test +``` + +## References + +- [RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1][rfc-2616] +- [RFC 5987: Character Set and Language Encoding for Hypertext Transfer Protocol (HTTP) Header Field Parameters][rfc-5987] +- [RFC 6266: Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)][rfc-6266] +- [Test Cases for HTTP Content-Disposition header field (RFC 6266) and the Encodings defined in RFCs 2047, 2231 and 5987][tc-2231] + +[rfc-2616]: https://tools.ietf.org/html/rfc2616 +[rfc-5987]: https://tools.ietf.org/html/rfc5987 +[rfc-6266]: https://tools.ietf.org/html/rfc6266 +[tc-2231]: http://greenbytes.de/tech/tc2231/ + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/content-disposition +[npm-url]: https://npmjs.org/package/content-disposition +[node-version-image]: https://img.shields.io/node/v/content-disposition +[node-version-url]: https://nodejs.org/en/download +[coveralls-image]: https://img.shields.io/coverallsCoverage/github/jshttp/content-disposition +[coveralls-url]: https://coveralls.io/r/jshttp/content-disposition?branch=master +[downloads-image]: https://img.shields.io/npm/dm/content-disposition +[downloads-url]: https://npmjs.org/package/content-disposition +[github-actions-ci-image]: https://img.shields.io/github/actions/workflow/status/jshttp/content-disposition/ci.yml +[github-actions-ci-url]: https://github.com/jshttp/content-disposition/actions/workflows/ci.yml diff --git a/bff/node_modules/content-disposition/index.js b/bff/node_modules/content-disposition/index.js new file mode 100644 index 0000000..efcd9ca --- /dev/null +++ b/bff/node_modules/content-disposition/index.js @@ -0,0 +1,458 @@ +/*! + * content-disposition + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = contentDisposition +module.exports.parse = parse + +/** + * Module dependencies. + * @private + */ + +var basename = require('path').basename + +/** + * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including "%") + * @private + */ + +var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g // eslint-disable-line no-control-regex + +/** + * RegExp to match percent encoding escape. + * @private + */ + +var HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/ +var HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g + +/** + * RegExp to match non-latin1 characters. + * @private + */ + +var NON_LATIN1_REGEXP = /[^\x20-\x7e\xa0-\xff]/g + +/** + * RegExp to match quoted-pair in RFC 2616 + * + * quoted-pair = "\" CHAR + * CHAR = + * @private + */ + +var QESC_REGEXP = /\\([\u0000-\u007f])/g // eslint-disable-line no-control-regex + +/** + * RegExp to match chars that must be quoted-pair in RFC 2616 + * @private + */ + +var QUOTE_REGEXP = /([\\"])/g + +/** + * RegExp for various RFC 2616 grammar + * + * parameter = token "=" ( token | quoted-string ) + * token = 1* + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) + * qdtext = > + * quoted-pair = "\" CHAR + * CHAR = + * TEXT = + * LWS = [CRLF] 1*( SP | HT ) + * CRLF = CR LF + * CR = + * LF = + * SP = + * HT = + * CTL = + * OCTET = + * @private + */ + +var PARAM_REGEXP = /;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g // eslint-disable-line no-control-regex +var TEXT_REGEXP = /^[\x20-\x7e\x80-\xff]+$/ +var TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/ + +/** + * RegExp for various RFC 5987 grammar + * + * ext-value = charset "'" [ language ] "'" value-chars + * charset = "UTF-8" / "ISO-8859-1" / mime-charset + * mime-charset = 1*mime-charsetc + * mime-charsetc = ALPHA / DIGIT + * / "!" / "#" / "$" / "%" / "&" + * / "+" / "-" / "^" / "_" / "`" + * / "{" / "}" / "~" + * language = ( 2*3ALPHA [ extlang ] ) + * / 4ALPHA + * / 5*8ALPHA + * extlang = *3( "-" 3ALPHA ) + * value-chars = *( pct-encoded / attr-char ) + * pct-encoded = "%" HEXDIG HEXDIG + * attr-char = ALPHA / DIGIT + * / "!" / "#" / "$" / "&" / "+" / "-" / "." + * / "^" / "_" / "`" / "|" / "~" + * @private + */ + +var EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/ + +/** + * RegExp for various RFC 6266 grammar + * + * disposition-type = "inline" | "attachment" | disp-ext-type + * disp-ext-type = token + * disposition-parm = filename-parm | disp-ext-parm + * filename-parm = "filename" "=" value + * | "filename*" "=" ext-value + * disp-ext-parm = token "=" value + * | ext-token "=" ext-value + * ext-token = + * @private + */ + +var DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/ // eslint-disable-line no-control-regex + +/** + * Create an attachment Content-Disposition header. + * + * @param {string} [filename] + * @param {object} [options] + * @param {string} [options.type=attachment] + * @param {string|boolean} [options.fallback=true] + * @return {string} + * @public + */ + +function contentDisposition (filename, options) { + var opts = options || {} + + // get type + var type = opts.type || 'attachment' + + // get parameters + var params = createparams(filename, opts.fallback) + + // format into string + return format(new ContentDisposition(type, params)) +} + +/** + * Create parameters object from filename and fallback. + * + * @param {string} [filename] + * @param {string|boolean} [fallback=true] + * @return {object} + * @private + */ + +function createparams (filename, fallback) { + if (filename === undefined) { + return + } + + var params = {} + + if (typeof filename !== 'string') { + throw new TypeError('filename must be a string') + } + + // fallback defaults to true + if (fallback === undefined) { + fallback = true + } + + if (typeof fallback !== 'string' && typeof fallback !== 'boolean') { + throw new TypeError('fallback must be a string or boolean') + } + + if (typeof fallback === 'string' && NON_LATIN1_REGEXP.test(fallback)) { + throw new TypeError('fallback must be ISO-8859-1 string') + } + + // restrict to file base name + var name = basename(filename) + + // determine if name is suitable for quoted string + var isQuotedString = TEXT_REGEXP.test(name) + + // generate fallback name + var fallbackName = typeof fallback !== 'string' + ? fallback && getlatin1(name) + : basename(fallback) + var hasFallback = typeof fallbackName === 'string' && fallbackName !== name + + // set extended filename parameter + if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) { + params['filename*'] = name + } + + // set filename parameter + if (isQuotedString || hasFallback) { + params.filename = hasFallback + ? fallbackName + : name + } + + return params +} + +/** + * Format object to Content-Disposition header. + * + * @param {object} obj + * @param {string} obj.type + * @param {object} [obj.parameters] + * @return {string} + * @private + */ + +function format (obj) { + var parameters = obj.parameters + var type = obj.type + + if (!type || typeof type !== 'string' || !TOKEN_REGEXP.test(type)) { + throw new TypeError('invalid type') + } + + // start with normalized type + var string = String(type).toLowerCase() + + // append parameters + if (parameters && typeof parameters === 'object') { + var param + var params = Object.keys(parameters).sort() + + for (var i = 0; i < params.length; i++) { + param = params[i] + + var val = param.slice(-1) === '*' + ? ustring(parameters[param]) + : qstring(parameters[param]) + + string += '; ' + param + '=' + val + } + } + + return string +} + +/** + * Decode a RFC 5987 field value (gracefully). + * + * @param {string} str + * @return {string} + * @private + */ + +function decodefield (str) { + var match = EXT_VALUE_REGEXP.exec(str) + + if (!match) { + throw new TypeError('invalid extended field value') + } + + var charset = match[1].toLowerCase() + var encoded = match[2] + var value + + // to binary string + var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode) + + switch (charset) { + case 'iso-8859-1': + value = getlatin1(binary) + break + case 'utf-8': + case 'utf8': + value = Buffer.from(binary, 'binary').toString('utf8') + break + default: + throw new TypeError('unsupported charset in extended field') + } + + return value +} + +/** + * Get ISO-8859-1 version of string. + * + * @param {string} val + * @return {string} + * @private + */ + +function getlatin1 (val) { + // simple Unicode -> ISO-8859-1 transformation + return String(val).replace(NON_LATIN1_REGEXP, '?') +} + +/** + * Parse Content-Disposition header string. + * + * @param {string} string + * @return {object} + * @public + */ + +function parse (string) { + if (!string || typeof string !== 'string') { + throw new TypeError('argument string is required') + } + + var match = DISPOSITION_TYPE_REGEXP.exec(string) + + if (!match) { + throw new TypeError('invalid type format') + } + + // normalize type + var index = match[0].length + var type = match[1].toLowerCase() + + var key + var names = [] + var params = {} + var value + + // calculate index to start at + index = PARAM_REGEXP.lastIndex = match[0].slice(-1) === ';' + ? index - 1 + : index + + // match parameters + while ((match = PARAM_REGEXP.exec(string))) { + if (match.index !== index) { + throw new TypeError('invalid parameter format') + } + + index += match[0].length + key = match[1].toLowerCase() + value = match[2] + + if (names.indexOf(key) !== -1) { + throw new TypeError('invalid duplicate parameter') + } + + names.push(key) + + if (key.indexOf('*') + 1 === key.length) { + // decode extended value + key = key.slice(0, -1) + value = decodefield(value) + + // overwrite existing value + params[key] = value + continue + } + + if (typeof params[key] === 'string') { + continue + } + + if (value[0] === '"') { + // remove quotes and escapes + value = value + .slice(1, -1) + .replace(QESC_REGEXP, '$1') + } + + params[key] = value + } + + if (index !== -1 && index !== string.length) { + throw new TypeError('invalid parameter format') + } + + return new ContentDisposition(type, params) +} + +/** + * Percent decode a single character. + * + * @param {string} str + * @param {string} hex + * @return {string} + * @private + */ + +function pdecode (str, hex) { + return String.fromCharCode(parseInt(hex, 16)) +} + +/** + * Percent encode a single character. + * + * @param {string} char + * @return {string} + * @private + */ + +function pencode (char) { + return '%' + String(char) + .charCodeAt(0) + .toString(16) + .toUpperCase() +} + +/** + * Quote a string for HTTP. + * + * @param {string} val + * @return {string} + * @private + */ + +function qstring (val) { + var str = String(val) + + return '"' + str.replace(QUOTE_REGEXP, '\\$1') + '"' +} + +/** + * Encode a Unicode string for HTTP (RFC 5987). + * + * @param {string} val + * @return {string} + * @private + */ + +function ustring (val) { + var str = String(val) + + // percent encode as UTF-8 + var encoded = encodeURIComponent(str) + .replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode) + + return 'UTF-8\'\'' + encoded +} + +/** + * Class for parsed Content-Disposition header for v8 optimization + * + * @public + * @param {string} type + * @param {object} parameters + * @constructor + */ + +function ContentDisposition (type, parameters) { + this.type = type + this.parameters = parameters +} diff --git a/bff/node_modules/content-disposition/package.json b/bff/node_modules/content-disposition/package.json new file mode 100644 index 0000000..a44034c --- /dev/null +++ b/bff/node_modules/content-disposition/package.json @@ -0,0 +1,43 @@ +{ + "name": "content-disposition", + "description": "Create and parse Content-Disposition header", + "version": "1.0.1", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "keywords": [ + "content-disposition", + "http", + "rfc6266", + "res" + ], + "repository": "jshttp/content-disposition", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "devDependencies": { + "c8": "^10.1.2", + "eslint": "7.32.0", + "eslint-config-standard": "13.0.1", + "eslint-plugin-import": "2.25.3", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "engines": { + "node": ">=18" + }, + "scripts": { + "lint": "eslint .", + "test": "node --test --test-reporter spec", + "test-ci": "c8 --reporter=lcovonly --reporter=text npm test", + "test-cov": "c8 --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/content-type/HISTORY.md b/bff/node_modules/content-type/HISTORY.md new file mode 100644 index 0000000..4583671 --- /dev/null +++ b/bff/node_modules/content-type/HISTORY.md @@ -0,0 +1,29 @@ +1.0.5 / 2023-01-29 +================== + + * perf: skip value escaping when unnecessary + +1.0.4 / 2017-09-11 +================== + + * perf: skip parameter parsing when no parameters + +1.0.3 / 2017-09-10 +================== + + * perf: remove argument reassignment + +1.0.2 / 2016-05-09 +================== + + * perf: enable strict mode + +1.0.1 / 2015-02-13 +================== + + * Improve missing `Content-Type` header error message + +1.0.0 / 2015-02-01 +================== + + * Initial implementation, derived from `media-typer@0.3.0` diff --git a/bff/node_modules/content-type/LICENSE b/bff/node_modules/content-type/LICENSE new file mode 100644 index 0000000..34b1a2d --- /dev/null +++ b/bff/node_modules/content-type/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/content-type/README.md b/bff/node_modules/content-type/README.md new file mode 100644 index 0000000..c1a922a --- /dev/null +++ b/bff/node_modules/content-type/README.md @@ -0,0 +1,94 @@ +# content-type + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +Create and parse HTTP Content-Type header according to RFC 7231 + +## Installation + +```sh +$ npm install content-type +``` + +## API + +```js +var contentType = require('content-type') +``` + +### contentType.parse(string) + +```js +var obj = contentType.parse('image/svg+xml; charset=utf-8') +``` + +Parse a `Content-Type` header. This will return an object with the following +properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): + + - `type`: The media type (the type and subtype, always lower case). + Example: `'image/svg+xml'` + + - `parameters`: An object of the parameters in the media type (name of parameter + always lower case). Example: `{charset: 'utf-8'}` + +Throws a `TypeError` if the string is missing or invalid. + +### contentType.parse(req) + +```js +var obj = contentType.parse(req) +``` + +Parse the `Content-Type` header from the given `req`. Short-cut for +`contentType.parse(req.headers['content-type'])`. + +Throws a `TypeError` if the `Content-Type` header is missing or invalid. + +### contentType.parse(res) + +```js +var obj = contentType.parse(res) +``` + +Parse the `Content-Type` header set on the given `res`. Short-cut for +`contentType.parse(res.getHeader('content-type'))`. + +Throws a `TypeError` if the `Content-Type` header is missing or invalid. + +### contentType.format(obj) + +```js +var str = contentType.format({ + type: 'image/svg+xml', + parameters: { charset: 'utf-8' } +}) +``` + +Format an object into a `Content-Type` header. This will return a string of the +content type for the given object with the following properties (examples are +shown that produce the string `'image/svg+xml; charset=utf-8'`): + + - `type`: The media type (will be lower-cased). Example: `'image/svg+xml'` + + - `parameters`: An object of the parameters in the media type (name of the + parameter will be lower-cased). Example: `{charset: 'utf-8'}` + +Throws a `TypeError` if the object contains an invalid type or parameter names. + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/content-type/master?label=ci +[ci-url]: https://github.com/jshttp/content-type/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/content-type/master +[coveralls-url]: https://coveralls.io/r/jshttp/content-type?branch=master +[node-image]: https://badgen.net/npm/node/content-type +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/content-type +[npm-url]: https://npmjs.org/package/content-type +[npm-version-image]: https://badgen.net/npm/v/content-type diff --git a/bff/node_modules/content-type/index.js b/bff/node_modules/content-type/index.js new file mode 100644 index 0000000..41840e7 --- /dev/null +++ b/bff/node_modules/content-type/index.js @@ -0,0 +1,225 @@ +/*! + * content-type + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * RegExp to match *( ";" parameter ) in RFC 7231 sec 3.1.1.1 + * + * parameter = token "=" ( token / quoted-string ) + * token = 1*tchar + * tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" + * / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" + * / DIGIT / ALPHA + * ; any VCHAR, except delimiters + * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE + * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text + * obs-text = %x80-FF + * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) + */ +var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex +var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ // eslint-disable-line no-control-regex +var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ + +/** + * RegExp to match quoted-pair in RFC 7230 sec 3.2.6 + * + * quoted-pair = "\" ( HTAB / SP / VCHAR / obs-text ) + * obs-text = %x80-FF + */ +var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g // eslint-disable-line no-control-regex + +/** + * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6 + */ +var QUOTE_REGEXP = /([\\"])/g + +/** + * RegExp to match type in RFC 7231 sec 3.1.1.1 + * + * media-type = type "/" subtype + * type = token + * subtype = token + */ +var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ + +/** + * Module exports. + * @public + */ + +exports.format = format +exports.parse = parse + +/** + * Format object to media type. + * + * @param {object} obj + * @return {string} + * @public + */ + +function format (obj) { + if (!obj || typeof obj !== 'object') { + throw new TypeError('argument obj is required') + } + + var parameters = obj.parameters + var type = obj.type + + if (!type || !TYPE_REGEXP.test(type)) { + throw new TypeError('invalid type') + } + + var string = type + + // append parameters + if (parameters && typeof parameters === 'object') { + var param + var params = Object.keys(parameters).sort() + + for (var i = 0; i < params.length; i++) { + param = params[i] + + if (!TOKEN_REGEXP.test(param)) { + throw new TypeError('invalid parameter name') + } + + string += '; ' + param + '=' + qstring(parameters[param]) + } + } + + return string +} + +/** + * Parse media type to object. + * + * @param {string|object} string + * @return {Object} + * @public + */ + +function parse (string) { + if (!string) { + throw new TypeError('argument string is required') + } + + // support req/res-like objects as argument + var header = typeof string === 'object' + ? getcontenttype(string) + : string + + if (typeof header !== 'string') { + throw new TypeError('argument string is required to be a string') + } + + var index = header.indexOf(';') + var type = index !== -1 + ? header.slice(0, index).trim() + : header.trim() + + if (!TYPE_REGEXP.test(type)) { + throw new TypeError('invalid media type') + } + + var obj = new ContentType(type.toLowerCase()) + + // parse parameters + if (index !== -1) { + var key + var match + var value + + PARAM_REGEXP.lastIndex = index + + while ((match = PARAM_REGEXP.exec(header))) { + if (match.index !== index) { + throw new TypeError('invalid parameter format') + } + + index += match[0].length + key = match[1].toLowerCase() + value = match[2] + + if (value.charCodeAt(0) === 0x22 /* " */) { + // remove quotes + value = value.slice(1, -1) + + // remove escapes + if (value.indexOf('\\') !== -1) { + value = value.replace(QESC_REGEXP, '$1') + } + } + + obj.parameters[key] = value + } + + if (index !== header.length) { + throw new TypeError('invalid parameter format') + } + } + + return obj +} + +/** + * Get content-type from req/res objects. + * + * @param {object} + * @return {Object} + * @private + */ + +function getcontenttype (obj) { + var header + + if (typeof obj.getHeader === 'function') { + // res-like + header = obj.getHeader('content-type') + } else if (typeof obj.headers === 'object') { + // req-like + header = obj.headers && obj.headers['content-type'] + } + + if (typeof header !== 'string') { + throw new TypeError('content-type header is missing from object') + } + + return header +} + +/** + * Quote a string if necessary. + * + * @param {string} val + * @return {string} + * @private + */ + +function qstring (val) { + var str = String(val) + + // no need to quote tokens + if (TOKEN_REGEXP.test(str)) { + return str + } + + if (str.length > 0 && !TEXT_REGEXP.test(str)) { + throw new TypeError('invalid parameter value') + } + + return '"' + str.replace(QUOTE_REGEXP, '\\$1') + '"' +} + +/** + * Class to represent a content type. + * @private + */ +function ContentType (type) { + this.parameters = Object.create(null) + this.type = type +} diff --git a/bff/node_modules/content-type/package.json b/bff/node_modules/content-type/package.json new file mode 100644 index 0000000..9db19f6 --- /dev/null +++ b/bff/node_modules/content-type/package.json @@ -0,0 +1,42 @@ +{ + "name": "content-type", + "description": "Create and parse HTTP Content-Type header", + "version": "1.0.5", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "keywords": [ + "content-type", + "http", + "req", + "res", + "rfc7231" + ], + "repository": "jshttp/content-type", + "devDependencies": { + "deep-equal": "1.0.1", + "eslint": "8.32.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "10.2.0", + "nyc": "15.1.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/cookie-parser/HISTORY.md b/bff/node_modules/cookie-parser/HISTORY.md new file mode 100644 index 0000000..00ea683 --- /dev/null +++ b/bff/node_modules/cookie-parser/HISTORY.md @@ -0,0 +1,124 @@ +1.4.7 / 2024-10-08 +========== + + * deps: cookie@0.7.2 + - Fix object assignment of `hasOwnProperty` + * deps: cookie@0.7.1 + - Allow leading dot for domain + - Although not permitted in the spec, some users expect this to work and user agents ignore the leading dot according to spec + - Add fast path for `serialize` without options, use `obj.hasOwnProperty` when parsing + * deps: cookie@0.7.0 + - perf: parse cookies ~10% faster + - fix: narrow the validation of cookies to match RFC6265 + - fix: add `main` to `package.json` for rspack + * deps: cookie@0.6.0 + - Add `partitioned` option + * deps: cookie@0.5.0 + - Add `priority` option + - Fix `expires` option to reject invalid dates + - pref: improve default decode speed + - pref: remove slow string split in parse + * deps: cookie@0.4.2 + - pref: read value only when assigning in parse + - pref: remove unnecessary regexp in parse + +1.4.6 / 2021-11-16 +================== + + * deps: cookie@0.4.1 + +1.4.5 / 2020-03-14 +================== + + * deps: cookie@0.4.0 + +1.4.4 / 2019-02-12 +================== + + * perf: normalize `secret` argument only once + +1.4.3 / 2016-05-26 +================== + + * deps: cookie@0.3.1 + - perf: use for loop in parse + +1.4.2 / 2016-05-20 +================== + + * deps: cookie@0.2.4 + - perf: enable strict mode + - perf: use for loop in parse + - perf: use string concatenation for serialization + +1.4.1 / 2016-01-11 +================== + + * deps: cookie@0.2.3 + * perf: enable strict mode + +1.4.0 / 2015-09-18 +================== + + * Accept array of secrets in addition to a single secret + * Fix `JSONCookie` to return `undefined` for non-string arguments + * Fix `signedCookie` to return `undefined` for non-string arguments + * deps: cookie@0.2.2 + +1.3.5 / 2015-05-19 +================== + + * deps: cookie@0.1.3 + - Slight optimizations + +1.3.4 / 2015-02-15 +================== + + * deps: cookie-signature@1.0.6 + +1.3.3 / 2014-09-05 +================== + + * deps: cookie-signature@1.0.5 + +1.3.2 / 2014-06-26 +================== + + * deps: cookie-signature@1.0.4 + - fix for timing attacks + +1.3.1 / 2014-06-17 +================== + + * actually export `signedCookie` + +1.3.0 / 2014-06-17 +================== + + * add `signedCookie` export for single cookie unsigning + +1.2.0 / 2014-06-17 +================== + + * export parsing functions + * `req.cookies` and `req.signedCookies` are now plain objects + * slightly faster parsing of many cookies + +1.1.0 / 2014-05-12 +================== + + * Support for NodeJS version 0.8 + * deps: cookie@0.1.2 + - Fix for maxAge == 0 + - made compat with expires field + - tweak maxAge NaN error message + +1.0.1 / 2014-02-20 +================== + + * add missing dependencies + +1.0.0 / 2014-02-15 +================== + + * Genesis from `connect` diff --git a/bff/node_modules/cookie-parser/LICENSE b/bff/node_modules/cookie-parser/LICENSE new file mode 100644 index 0000000..343f2ad --- /dev/null +++ b/bff/node_modules/cookie-parser/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 TJ Holowaychuk +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/cookie-parser/README.md b/bff/node_modules/cookie-parser/README.md new file mode 100644 index 0000000..b8ecd7b --- /dev/null +++ b/bff/node_modules/cookie-parser/README.md @@ -0,0 +1,119 @@ +# cookie-parser + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Parse `Cookie` header and populate `req.cookies` with an object keyed by the +cookie names. Optionally you may enable signed cookie support by passing a +`secret` string, which assigns `req.secret` so it may be used by other +middleware. + +## Installation + +```sh +$ npm install cookie-parser +``` + +## API + +```js +var cookieParser = require('cookie-parser') +``` + +### cookieParser(secret, options) + +Create a new cookie parser middleware function using the given `secret` and +`options`. + +- `secret` a string or array used for signing cookies. This is optional and if + not specified, will not parse signed cookies. If a string is provided, this + is used as the secret. If an array is provided, an attempt will be made to + unsign the cookie with each secret in order. +- `options` an object that is passed to `cookie.parse` as the second option. See + [cookie](https://www.npmjs.org/package/cookie) for more information. + - `decode` a function to decode the value of the cookie + +The middleware will parse the `Cookie` header on the request and expose the +cookie data as the property `req.cookies` and, if a `secret` was provided, as +the property `req.signedCookies`. These properties are name value pairs of the +cookie name to cookie value. + +When `secret` is provided, this module will unsign and validate any signed cookie +values and move those name value pairs from `req.cookies` into `req.signedCookies`. +A signed cookie is a cookie that has a value prefixed with `s:`. Signed cookies +that fail signature validation will have the value `false` instead of the tampered +value. + +In addition, this module supports special "JSON cookies". These are cookie where +the value is prefixed with `j:`. When these values are encountered, the value will +be exposed as the result of `JSON.parse`. If parsing fails, the original value will +remain. + +### cookieParser.JSONCookie(str) + +Parse a cookie value as a JSON cookie. This will return the parsed JSON value +if it was a JSON cookie, otherwise, it will return the passed value. + +### cookieParser.JSONCookies(cookies) + +Given an object, this will iterate over the keys and call `JSONCookie` on each +value, replacing the original value with the parsed value. This returns the +same object that was passed in. + +### cookieParser.signedCookie(str, secret) + +Parse a cookie value as a signed cookie. This will return the parsed unsigned +value if it was a signed cookie and the signature was valid. If the value was +not signed, the original value is returned. If the value was signed but the +signature could not be validated, `false` is returned. + +The `secret` argument can be an array or string. If a string is provided, this +is used as the secret. If an array is provided, an attempt will be made to +unsign the cookie with each secret in order. + +### cookieParser.signedCookies(cookies, secret) + +Given an object, this will iterate over the keys and check if any value is a +signed cookie. If it is a signed cookie and the signature is valid, the key +will be deleted from the object and added to the new object that is returned. + +The `secret` argument can be an array or string. If a string is provided, this +is used as the secret. If an array is provided, an attempt will be made to +unsign the cookie with each secret in order. + +## Example + +```js +var express = require('express') +var cookieParser = require('cookie-parser') + +var app = express() +app.use(cookieParser()) + +app.get('/', function (req, res) { + // Cookies that have not been signed + console.log('Cookies: ', req.cookies) + + // Cookies that have been signed + console.log('Signed Cookies: ', req.signedCookies) +}) + +app.listen(8080) + +// curl command that sends an HTTP request with two cookies +// curl http://127.0.0.1:8080 --cookie "Cho=Kim;Greet=Hello" +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/expressjs/cookie-parser/master?label=ci +[ci-url]: https://github.com/expressjs/cookie-parser/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/cookie-parser/master +[coveralls-url]: https://coveralls.io/r/expressjs/cookie-parser?branch=master +[npm-downloads-image]: https://badgen.net/npm/dm/cookie-parser +[npm-url]: https://npmjs.org/package/cookie-parser +[npm-version-image]: https://badgen.net/npm/v/cookie-parser diff --git a/bff/node_modules/cookie-parser/index.js b/bff/node_modules/cookie-parser/index.js new file mode 100644 index 0000000..dd6d479 --- /dev/null +++ b/bff/node_modules/cookie-parser/index.js @@ -0,0 +1,182 @@ +/*! + * cookie-parser + * Copyright(c) 2014 TJ Holowaychuk + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var cookie = require('cookie') +var signature = require('cookie-signature') + +/** + * Module exports. + * @public + */ + +module.exports = cookieParser +module.exports.JSONCookie = JSONCookie +module.exports.JSONCookies = JSONCookies +module.exports.signedCookie = signedCookie +module.exports.signedCookies = signedCookies + +/** + * Parse Cookie header and populate `req.cookies` + * with an object keyed by the cookie names. + * + * @param {string|array} [secret] A string (or array of strings) representing cookie signing secret(s). + * @param {Object} [options] + * @return {Function} + * @public + */ + +function cookieParser (secret, options) { + var secrets = !secret || Array.isArray(secret) + ? (secret || []) + : [secret] + + return function cookieParser (req, res, next) { + if (req.cookies) { + return next() + } + + var cookies = req.headers.cookie + + req.secret = secrets[0] + req.cookies = Object.create(null) + req.signedCookies = Object.create(null) + + // no cookies + if (!cookies) { + return next() + } + + req.cookies = cookie.parse(cookies, options) + + // parse signed cookies + if (secrets.length !== 0) { + req.signedCookies = signedCookies(req.cookies, secrets) + req.signedCookies = JSONCookies(req.signedCookies) + } + + // parse JSON cookies + req.cookies = JSONCookies(req.cookies) + + next() + } +} + +/** + * Parse JSON cookie string. + * + * @param {String} str + * @return {Object} Parsed object or undefined if not json cookie + * @public + */ + +function JSONCookie (str) { + if (typeof str !== 'string' || str.substr(0, 2) !== 'j:') { + return undefined + } + + try { + return JSON.parse(str.slice(2)) + } catch (err) { + return undefined + } +} + +/** + * Parse JSON cookies. + * + * @param {Object} obj + * @return {Object} + * @public + */ + +function JSONCookies (obj) { + var cookies = Object.keys(obj) + var key + var val + + for (var i = 0; i < cookies.length; i++) { + key = cookies[i] + val = JSONCookie(obj[key]) + + if (val) { + obj[key] = val + } + } + + return obj +} + +/** + * Parse a signed cookie string, return the decoded value. + * + * @param {String} str signed cookie string + * @param {string|array} secret + * @return {String} decoded value + * @public + */ + +function signedCookie (str, secret) { + if (typeof str !== 'string') { + return undefined + } + + if (str.substr(0, 2) !== 's:') { + return str + } + + var secrets = !secret || Array.isArray(secret) + ? (secret || []) + : [secret] + + for (var i = 0; i < secrets.length; i++) { + var val = signature.unsign(str.slice(2), secrets[i]) + + if (val !== false) { + return val + } + } + + return false +} + +/** + * Parse signed cookies, returning an object containing the decoded key/value + * pairs, while removing the signed key from obj. + * + * @param {Object} obj + * @param {string|array} secret + * @return {Object} + * @public + */ + +function signedCookies (obj, secret) { + var cookies = Object.keys(obj) + var dec + var key + var ret = Object.create(null) + var val + + for (var i = 0; i < cookies.length; i++) { + key = cookies[i] + val = obj[key] + dec = signedCookie(val, secret) + + if (val !== dec) { + ret[key] = dec + delete obj[key] + } + } + + return ret +} diff --git a/bff/node_modules/cookie-parser/node_modules/cookie-signature/.npmignore b/bff/node_modules/cookie-parser/node_modules/cookie-signature/.npmignore new file mode 100644 index 0000000..f1250e5 --- /dev/null +++ b/bff/node_modules/cookie-parser/node_modules/cookie-signature/.npmignore @@ -0,0 +1,4 @@ +support +test +examples +*.sock diff --git a/bff/node_modules/cookie-parser/node_modules/cookie-signature/History.md b/bff/node_modules/cookie-parser/node_modules/cookie-signature/History.md new file mode 100644 index 0000000..78513cc --- /dev/null +++ b/bff/node_modules/cookie-parser/node_modules/cookie-signature/History.md @@ -0,0 +1,38 @@ +1.0.6 / 2015-02-03 +================== + +* use `npm test` instead of `make test` to run tests +* clearer assertion messages when checking input + + +1.0.5 / 2014-09-05 +================== + +* add license to package.json + +1.0.4 / 2014-06-25 +================== + + * corrected avoidance of timing attacks (thanks @tenbits!) + +1.0.3 / 2014-01-28 +================== + + * [incorrect] fix for timing attacks + +1.0.2 / 2014-01-28 +================== + + * fix missing repository warning + * fix typo in test + +1.0.1 / 2013-04-15 +================== + + * Revert "Changed underlying HMAC algo. to sha512." + * Revert "Fix for timing attacks on MAC verification." + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/bff/node_modules/cookie-parser/node_modules/cookie-signature/Readme.md b/bff/node_modules/cookie-parser/node_modules/cookie-signature/Readme.md new file mode 100644 index 0000000..2559e84 --- /dev/null +++ b/bff/node_modules/cookie-parser/node_modules/cookie-signature/Readme.md @@ -0,0 +1,42 @@ + +# cookie-signature + + Sign and unsign cookies. + +## Example + +```js +var cookie = require('cookie-signature'); + +var val = cookie.sign('hello', 'tobiiscool'); +val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI'); + +var val = cookie.sign('hello', 'tobiiscool'); +cookie.unsign(val, 'tobiiscool').should.equal('hello'); +cookie.unsign(val, 'luna').should.be.false; +``` + +## License + +(The MIT License) + +Copyright (c) 2012 LearnBoost <tj@learnboost.com> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/bff/node_modules/cookie-parser/node_modules/cookie-signature/index.js b/bff/node_modules/cookie-parser/node_modules/cookie-signature/index.js new file mode 100644 index 0000000..b8c9463 --- /dev/null +++ b/bff/node_modules/cookie-parser/node_modules/cookie-signature/index.js @@ -0,0 +1,51 @@ +/** + * Module dependencies. + */ + +var crypto = require('crypto'); + +/** + * Sign the given `val` with `secret`. + * + * @param {String} val + * @param {String} secret + * @return {String} + * @api private + */ + +exports.sign = function(val, secret){ + if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string."); + if ('string' != typeof secret) throw new TypeError("Secret string must be provided."); + return val + '.' + crypto + .createHmac('sha256', secret) + .update(val) + .digest('base64') + .replace(/\=+$/, ''); +}; + +/** + * Unsign and decode the given `val` with `secret`, + * returning `false` if the signature is invalid. + * + * @param {String} val + * @param {String} secret + * @return {String|Boolean} + * @api private + */ + +exports.unsign = function(val, secret){ + if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided."); + if ('string' != typeof secret) throw new TypeError("Secret string must be provided."); + var str = val.slice(0, val.lastIndexOf('.')) + , mac = exports.sign(str, secret); + + return sha1(mac) == sha1(val) ? str : false; +}; + +/** + * Private + */ + +function sha1(str){ + return crypto.createHash('sha1').update(str).digest('hex'); +} diff --git a/bff/node_modules/cookie-parser/node_modules/cookie-signature/package.json b/bff/node_modules/cookie-parser/node_modules/cookie-signature/package.json new file mode 100644 index 0000000..29c4498 --- /dev/null +++ b/bff/node_modules/cookie-parser/node_modules/cookie-signature/package.json @@ -0,0 +1,18 @@ +{ + "name": "cookie-signature", + "version": "1.0.6", + "description": "Sign and unsign cookies", + "keywords": ["cookie", "sign", "unsign"], + "author": "TJ Holowaychuk ", + "license": "MIT", + "repository": { "type": "git", "url": "https://github.com/visionmedia/node-cookie-signature.git"}, + "dependencies": {}, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "scripts": { + "test": "mocha --require should --reporter spec" + }, + "main": "index" +} diff --git a/bff/node_modules/cookie-parser/package.json b/bff/node_modules/cookie-parser/package.json new file mode 100644 index 0000000..b1e86f0 --- /dev/null +++ b/bff/node_modules/cookie-parser/package.json @@ -0,0 +1,45 @@ +{ + "name": "cookie-parser", + "description": "Parse HTTP request cookies", + "version": "1.4.7", + "author": "TJ Holowaychuk (http://tjholowaychuk.com)", + "contributors": [ + "Douglas Christopher Wilson " + ], + "license": "MIT", + "repository": "expressjs/cookie-parser", + "keywords": [ + "cookie", + "middleware" + ], + "dependencies": { + "cookie": "0.7.2", + "cookie-signature": "1.0.6" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.2", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "4.3.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.1", + "nyc": "15.1.0", + "supertest": "6.1.6" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "engines": { + "node": ">= 0.8.0" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/cookie-signature/History.md b/bff/node_modules/cookie-signature/History.md new file mode 100644 index 0000000..479211a --- /dev/null +++ b/bff/node_modules/cookie-signature/History.md @@ -0,0 +1,70 @@ +1.2.2 / 2024-10-29 +================== + +* various metadata/documentation tweaks (incl. #51) + + +1.2.1 / 2023-02-27 +================== + +* update annotations for allowed secret key types (#44, thanks @jyasskin!) + + +1.2.0 / 2022-02-17 +================== + +* allow buffer and other node-supported types as key (#33) +* be pickier about extra content after signed portion (#40) +* some internal code clarity/cleanup improvements (#26) + + +1.1.0 / 2018-01-18 +================== + +* switch to built-in `crypto.timingSafeEqual` for validation instead of previous double-hash method (thank you @jodevsa!) + + +1.0.7 / 2023-04-12 +================== + +Later release for older node.js versions. See the [v1.0.x branch notes](https://github.com/tj/node-cookie-signature/blob/v1.0.x/History.md#107--2023-04-12). + + +1.0.6 / 2015-02-03 +================== + +* use `npm test` instead of `make test` to run tests +* clearer assertion messages when checking input + + +1.0.5 / 2014-09-05 +================== + +* add license to package.json + +1.0.4 / 2014-06-25 +================== + + * corrected avoidance of timing attacks (thanks @tenbits!) + +1.0.3 / 2014-01-28 +================== + + * [incorrect] fix for timing attacks + +1.0.2 / 2014-01-28 +================== + + * fix missing repository warning + * fix typo in test + +1.0.1 / 2013-04-15 +================== + + * Revert "Changed underlying HMAC algo. to sha512." + * Revert "Fix for timing attacks on MAC verification." + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/bff/node_modules/cookie-signature/LICENSE b/bff/node_modules/cookie-signature/LICENSE new file mode 100644 index 0000000..a2671bf --- /dev/null +++ b/bff/node_modules/cookie-signature/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2012–2024 LearnBoost and other contributors; + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/cookie-signature/Readme.md b/bff/node_modules/cookie-signature/Readme.md new file mode 100644 index 0000000..369af15 --- /dev/null +++ b/bff/node_modules/cookie-signature/Readme.md @@ -0,0 +1,23 @@ + +# cookie-signature + + Sign and unsign cookies. + +## Example + +```js +var cookie = require('cookie-signature'); + +var val = cookie.sign('hello', 'tobiiscool'); +val.should.equal('hello.DGDUkGlIkCzPz+C0B064FNgHdEjox7ch8tOBGslZ5QI'); + +var val = cookie.sign('hello', 'tobiiscool'); +cookie.unsign(val, 'tobiiscool').should.equal('hello'); +cookie.unsign(val, 'luna').should.be.false; +``` + +## License + +MIT. + +See LICENSE file for details. diff --git a/bff/node_modules/cookie-signature/index.js b/bff/node_modules/cookie-signature/index.js new file mode 100644 index 0000000..3fbbddb --- /dev/null +++ b/bff/node_modules/cookie-signature/index.js @@ -0,0 +1,47 @@ +/** + * Module dependencies. + */ + +var crypto = require('crypto'); + +/** + * Sign the given `val` with `secret`. + * + * @param {String} val + * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret + * @return {String} + * @api private + */ + +exports.sign = function(val, secret){ + if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string."); + if (null == secret) throw new TypeError("Secret key must be provided."); + return val + '.' + crypto + .createHmac('sha256', secret) + .update(val) + .digest('base64') + .replace(/\=+$/, ''); +}; + +/** + * Unsign and decode the given `input` with `secret`, + * returning `false` if the signature is invalid. + * + * @param {String} input + * @param {String|NodeJS.ArrayBufferView|crypto.KeyObject} secret + * @return {String|Boolean} + * @api private + */ + +exports.unsign = function(input, secret){ + if ('string' != typeof input) throw new TypeError("Signed cookie string must be provided."); + if (null == secret) throw new TypeError("Secret key must be provided."); + var tentativeValue = input.slice(0, input.lastIndexOf('.')), + expectedInput = exports.sign(tentativeValue, secret), + expectedBuffer = Buffer.from(expectedInput), + inputBuffer = Buffer.from(input); + return ( + expectedBuffer.length === inputBuffer.length && + crypto.timingSafeEqual(expectedBuffer, inputBuffer) + ) ? tentativeValue : false; +}; diff --git a/bff/node_modules/cookie-signature/package.json b/bff/node_modules/cookie-signature/package.json new file mode 100644 index 0000000..a160040 --- /dev/null +++ b/bff/node_modules/cookie-signature/package.json @@ -0,0 +1,24 @@ +{ + "name": "cookie-signature", + "version": "1.2.2", + "main": "index.js", + "description": "Sign and unsign cookies", + "keywords": ["cookie", "sign", "unsign"], + "author": "TJ Holowaychuk ", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/visionmedia/node-cookie-signature.git" + }, + "dependencies": {}, + "engines": { + "node": ">=6.6.0" + }, + "devDependencies": { + "mocha": "*", + "should": "*" + }, + "scripts": { + "test": "mocha --require should --reporter spec" + } +} diff --git a/bff/node_modules/cookie/LICENSE b/bff/node_modules/cookie/LICENSE new file mode 100644 index 0000000..058b6b4 --- /dev/null +++ b/bff/node_modules/cookie/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2012-2014 Roman Shtylman +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/bff/node_modules/cookie/README.md b/bff/node_modules/cookie/README.md new file mode 100644 index 0000000..71fdac1 --- /dev/null +++ b/bff/node_modules/cookie/README.md @@ -0,0 +1,317 @@ +# cookie + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +Basic HTTP cookie parser and serializer for HTTP servers. + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install cookie +``` + +## API + +```js +var cookie = require('cookie'); +``` + +### cookie.parse(str, options) + +Parse an HTTP `Cookie` header string and returning an object of all cookie name-value pairs. +The `str` argument is the string representing a `Cookie` header value and `options` is an +optional object containing additional parsing options. + +```js +var cookies = cookie.parse('foo=bar; equation=E%3Dmc%5E2'); +// { foo: 'bar', equation: 'E=mc^2' } +``` + +#### Options + +`cookie.parse` accepts these properties in the options object. + +##### decode + +Specifies a function that will be used to decode a cookie's value. Since the value of a cookie +has a limited character set (and must be a simple string), this function can be used to decode +a previously-encoded cookie value into a JavaScript string or other object. + +The default function is the global `decodeURIComponent`, which will decode any URL-encoded +sequences into their byte representations. + +**note** if an error is thrown from this function, the original, non-decoded cookie value will +be returned as the cookie's value. + +### cookie.serialize(name, value, options) + +Serialize a cookie name-value pair into a `Set-Cookie` header string. The `name` argument is the +name for the cookie, the `value` argument is the value to set the cookie to, and the `options` +argument is an optional object containing additional serialization options. + +```js +var setCookie = cookie.serialize('foo', 'bar'); +// foo=bar +``` + +#### Options + +`cookie.serialize` accepts these properties in the options object. + +##### domain + +Specifies the value for the [`Domain` `Set-Cookie` attribute][rfc-6265-5.2.3]. By default, no +domain is set, and most clients will consider the cookie to apply to only the current domain. + +##### encode + +Specifies a function that will be used to encode a cookie's value. Since value of a cookie +has a limited character set (and must be a simple string), this function can be used to encode +a value into a string suited for a cookie's value. + +The default function is the global `encodeURIComponent`, which will encode a JavaScript string +into UTF-8 byte sequences and then URL-encode any that fall outside of the cookie range. + +##### expires + +Specifies the `Date` object to be the value for the [`Expires` `Set-Cookie` attribute][rfc-6265-5.2.1]. +By default, no expiration is set, and most clients will consider this a "non-persistent cookie" and +will delete it on a condition like exiting a web browser application. + +**note** the [cookie storage model specification][rfc-6265-5.3] states that if both `expires` and +`maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this, +so if both are set, they should point to the same date and time. + +##### httpOnly + +Specifies the `boolean` value for the [`HttpOnly` `Set-Cookie` attribute][rfc-6265-5.2.6]. When truthy, +the `HttpOnly` attribute is set, otherwise it is not. By default, the `HttpOnly` attribute is not set. + +**note** be careful when setting this to `true`, as compliant clients will not allow client-side +JavaScript to see the cookie in `document.cookie`. + +##### maxAge + +Specifies the `number` (in seconds) to be the value for the [`Max-Age` `Set-Cookie` attribute][rfc-6265-5.2.2]. +The given number will be converted to an integer by rounding down. By default, no maximum age is set. + +**note** the [cookie storage model specification][rfc-6265-5.3] states that if both `expires` and +`maxAge` are set, then `maxAge` takes precedence, but it is possible not all clients by obey this, +so if both are set, they should point to the same date and time. + +##### partitioned + +Specifies the `boolean` value for the [`Partitioned` `Set-Cookie`](rfc-cutler-httpbis-partitioned-cookies) +attribute. When truthy, the `Partitioned` attribute is set, otherwise it is not. By default, the +`Partitioned` attribute is not set. + +**note** This is an attribute that has not yet been fully standardized, and may change in the future. +This also means many clients may ignore this attribute until they understand it. + +More information about can be found in [the proposal](https://github.com/privacycg/CHIPS). + +##### path + +Specifies the value for the [`Path` `Set-Cookie` attribute][rfc-6265-5.2.4]. By default, the path +is considered the ["default path"][rfc-6265-5.1.4]. + +##### priority + +Specifies the `string` to be the value for the [`Priority` `Set-Cookie` attribute][rfc-west-cookie-priority-00-4.1]. + + - `'low'` will set the `Priority` attribute to `Low`. + - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set. + - `'high'` will set the `Priority` attribute to `High`. + +More information about the different priority levels can be found in +[the specification][rfc-west-cookie-priority-00-4.1]. + +**note** This is an attribute that has not yet been fully standardized, and may change in the future. +This also means many clients may ignore this attribute until they understand it. + +##### sameSite + +Specifies the `boolean` or `string` to be the value for the [`SameSite` `Set-Cookie` attribute][rfc-6265bis-09-5.4.7]. + + - `true` will set the `SameSite` attribute to `Strict` for strict same site enforcement. + - `false` will not set the `SameSite` attribute. + - `'lax'` will set the `SameSite` attribute to `Lax` for lax same site enforcement. + - `'none'` will set the `SameSite` attribute to `None` for an explicit cross-site cookie. + - `'strict'` will set the `SameSite` attribute to `Strict` for strict same site enforcement. + +More information about the different enforcement levels can be found in +[the specification][rfc-6265bis-09-5.4.7]. + +**note** This is an attribute that has not yet been fully standardized, and may change in the future. +This also means many clients may ignore this attribute until they understand it. + +##### secure + +Specifies the `boolean` value for the [`Secure` `Set-Cookie` attribute][rfc-6265-5.2.5]. When truthy, +the `Secure` attribute is set, otherwise it is not. By default, the `Secure` attribute is not set. + +**note** be careful when setting this to `true`, as compliant clients will not send the cookie back to +the server in the future if the browser does not have an HTTPS connection. + +## Example + +The following example uses this module in conjunction with the Node.js core HTTP server +to prompt a user for their name and display it back on future visits. + +```js +var cookie = require('cookie'); +var escapeHtml = require('escape-html'); +var http = require('http'); +var url = require('url'); + +function onRequest(req, res) { + // Parse the query string + var query = url.parse(req.url, true, true).query; + + if (query && query.name) { + // Set a new cookie with the name + res.setHeader('Set-Cookie', cookie.serialize('name', String(query.name), { + httpOnly: true, + maxAge: 60 * 60 * 24 * 7 // 1 week + })); + + // Redirect back after setting cookie + res.statusCode = 302; + res.setHeader('Location', req.headers.referer || '/'); + res.end(); + return; + } + + // Parse the cookies on the request + var cookies = cookie.parse(req.headers.cookie || ''); + + // Get the visitor name set in the cookie + var name = cookies.name; + + res.setHeader('Content-Type', 'text/html; charset=UTF-8'); + + if (name) { + res.write('

Welcome back, ' + escapeHtml(name) + '!

'); + } else { + res.write('

Hello, new visitor!

'); + } + + res.write('
'); + res.write(' '); + res.end('
'); +} + +http.createServer(onRequest).listen(3000); +``` + +## Testing + +```sh +$ npm test +``` + +## Benchmark + +``` +$ npm run bench + +> cookie@0.5.0 bench +> node benchmark/index.js + + node@18.18.2 + acorn@8.10.0 + ada@2.6.0 + ares@1.19.1 + brotli@1.0.9 + cldr@43.1 + icu@73.2 + llhttp@6.0.11 + modules@108 + napi@9 + nghttp2@1.57.0 + nghttp3@0.7.0 + ngtcp2@0.8.1 + openssl@3.0.10+quic + simdutf@3.2.14 + tz@2023c + undici@5.26.3 + unicode@15.0 + uv@1.44.2 + uvwasi@0.0.18 + v8@10.2.154.26-node.26 + zlib@1.2.13.1-motley + +> node benchmark/parse-top.js + + cookie.parse - top sites + + 14 tests completed. + + parse accounts.google.com x 2,588,913 ops/sec ±0.74% (186 runs sampled) + parse apple.com x 2,370,002 ops/sec ±0.69% (186 runs sampled) + parse cloudflare.com x 2,213,102 ops/sec ±0.88% (188 runs sampled) + parse docs.google.com x 2,194,157 ops/sec ±1.03% (184 runs sampled) + parse drive.google.com x 2,265,084 ops/sec ±0.79% (187 runs sampled) + parse en.wikipedia.org x 457,099 ops/sec ±0.81% (186 runs sampled) + parse linkedin.com x 504,407 ops/sec ±0.89% (186 runs sampled) + parse maps.google.com x 1,230,959 ops/sec ±0.98% (186 runs sampled) + parse microsoft.com x 926,294 ops/sec ±0.88% (184 runs sampled) + parse play.google.com x 2,311,338 ops/sec ±0.83% (185 runs sampled) + parse support.google.com x 1,508,850 ops/sec ±0.86% (186 runs sampled) + parse www.google.com x 1,022,582 ops/sec ±1.32% (182 runs sampled) + parse youtu.be x 332,136 ops/sec ±1.02% (185 runs sampled) + parse youtube.com x 323,833 ops/sec ±0.77% (183 runs sampled) + +> node benchmark/parse.js + + cookie.parse - generic + + 6 tests completed. + + simple x 3,214,032 ops/sec ±1.61% (183 runs sampled) + decode x 587,237 ops/sec ±1.16% (187 runs sampled) + unquote x 2,954,618 ops/sec ±1.35% (183 runs sampled) + duplicates x 857,008 ops/sec ±0.89% (187 runs sampled) + 10 cookies x 292,133 ops/sec ±0.89% (187 runs sampled) + 100 cookies x 22,610 ops/sec ±0.68% (187 runs sampled) +``` + +## References + +- [RFC 6265: HTTP State Management Mechanism][rfc-6265] +- [Same-site Cookies][rfc-6265bis-09-5.4.7] + +[rfc-cutler-httpbis-partitioned-cookies]: https://tools.ietf.org/html/draft-cutler-httpbis-partitioned-cookies/ +[rfc-west-cookie-priority-00-4.1]: https://tools.ietf.org/html/draft-west-cookie-priority-00#section-4.1 +[rfc-6265bis-09-5.4.7]: https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-09#section-5.4.7 +[rfc-6265]: https://tools.ietf.org/html/rfc6265 +[rfc-6265-5.1.4]: https://tools.ietf.org/html/rfc6265#section-5.1.4 +[rfc-6265-5.2.1]: https://tools.ietf.org/html/rfc6265#section-5.2.1 +[rfc-6265-5.2.2]: https://tools.ietf.org/html/rfc6265#section-5.2.2 +[rfc-6265-5.2.3]: https://tools.ietf.org/html/rfc6265#section-5.2.3 +[rfc-6265-5.2.4]: https://tools.ietf.org/html/rfc6265#section-5.2.4 +[rfc-6265-5.2.5]: https://tools.ietf.org/html/rfc6265#section-5.2.5 +[rfc-6265-5.2.6]: https://tools.ietf.org/html/rfc6265#section-5.2.6 +[rfc-6265-5.3]: https://tools.ietf.org/html/rfc6265#section-5.3 + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/cookie/master?label=ci +[ci-url]: https://github.com/jshttp/cookie/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/cookie/master +[coveralls-url]: https://coveralls.io/r/jshttp/cookie?branch=master +[node-image]: https://badgen.net/npm/node/cookie +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/cookie +[npm-url]: https://npmjs.org/package/cookie +[npm-version-image]: https://badgen.net/npm/v/cookie diff --git a/bff/node_modules/cookie/SECURITY.md b/bff/node_modules/cookie/SECURITY.md new file mode 100644 index 0000000..fd4a6c5 --- /dev/null +++ b/bff/node_modules/cookie/SECURITY.md @@ -0,0 +1,25 @@ +# Security Policies and Procedures + +## Reporting a Bug + +The `cookie` team and community take all security bugs seriously. Thank +you for improving the security of the project. We appreciate your efforts and +responsible disclosure and will make every effort to acknowledge your +contributions. + +Report security bugs by emailing the current owner(s) of `cookie`. This +information can be found in the npm registry using the command +`npm owner ls cookie`. +If unsure or unable to get the information from the above, open an issue +in the [project issue tracker](https://github.com/jshttp/cookie/issues) +asking for the current contact information. + +To ensure the timely response to your report, please ensure that the entirety +of the report is contained within the email body and not solely behind a web +link or an attachment. + +At least one owner will acknowledge your email within 48 hours, and will send a +more detailed response within 48 hours indicating the next steps in handling +your report. After the initial reply to your report, the owners will +endeavor to keep you informed of the progress towards a fix and full +announcement, and may ask for additional information or guidance. diff --git a/bff/node_modules/cookie/index.js b/bff/node_modules/cookie/index.js new file mode 100644 index 0000000..acd5acd --- /dev/null +++ b/bff/node_modules/cookie/index.js @@ -0,0 +1,335 @@ +/*! + * cookie + * Copyright(c) 2012-2014 Roman Shtylman + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +exports.parse = parse; +exports.serialize = serialize; + +/** + * Module variables. + * @private + */ + +var __toString = Object.prototype.toString +var __hasOwnProperty = Object.prototype.hasOwnProperty + +/** + * RegExp to match cookie-name in RFC 6265 sec 4.1.1 + * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2 + * which has been replaced by the token definition in RFC 7230 appendix B. + * + * cookie-name = token + * token = 1*tchar + * tchar = "!" / "#" / "$" / "%" / "&" / "'" / + * "*" / "+" / "-" / "." / "^" / "_" / + * "`" / "|" / "~" / DIGIT / ALPHA + */ + +var cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; + +/** + * RegExp to match cookie-value in RFC 6265 sec 4.1.1 + * + * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE ) + * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E + * ; US-ASCII characters excluding CTLs, + * ; whitespace DQUOTE, comma, semicolon, + * ; and backslash + */ + +var cookieValueRegExp = /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/; + +/** + * RegExp to match domain-value in RFC 6265 sec 4.1.1 + * + * domain-value = + * ; defined in [RFC1034], Section 3.5, as + * ; enhanced by [RFC1123], Section 2.1 + * =
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Sponsors + +Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## License + +(The MIT License) + +Copyright (c) 2014-2017 TJ Holowaychuk <tj@vision-media.ca> +Copyright (c) 2018-2021 Josh Junon + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/debug/package.json b/bff/node_modules/debug/package.json new file mode 100644 index 0000000..ee8abb5 --- /dev/null +++ b/bff/node_modules/debug/package.json @@ -0,0 +1,64 @@ +{ + "name": "debug", + "version": "4.4.3", + "repository": { + "type": "git", + "url": "git://github.com/debug-js/debug.git" + }, + "description": "Lightweight debugging utility for Node.js and the browser", + "keywords": [ + "debug", + "log", + "debugger" + ], + "files": [ + "src", + "LICENSE", + "README.md" + ], + "author": "Josh Junon (https://github.com/qix-)", + "contributors": [ + "TJ Holowaychuk ", + "Nathan Rajlich (http://n8.io)", + "Andrew Rhyne " + ], + "license": "MIT", + "scripts": { + "lint": "xo", + "test": "npm run test:node && npm run test:browser && npm run lint", + "test:node": "mocha test.js test.node.js", + "test:browser": "karma start --single-run", + "test:coverage": "cat ./coverage/lcov.info | coveralls" + }, + "dependencies": { + "ms": "^2.1.3" + }, + "devDependencies": { + "brfs": "^2.0.1", + "browserify": "^16.2.3", + "coveralls": "^3.0.2", + "karma": "^3.1.4", + "karma-browserify": "^6.0.0", + "karma-chrome-launcher": "^2.2.0", + "karma-mocha": "^1.3.0", + "mocha": "^5.2.0", + "mocha-lcov-reporter": "^1.2.0", + "sinon": "^14.0.0", + "xo": "^0.23.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + }, + "main": "./src/index.js", + "browser": "./src/browser.js", + "engines": { + "node": ">=6.0" + }, + "xo": { + "rules": { + "import/extensions": "off" + } + } +} diff --git a/bff/node_modules/debug/src/browser.js b/bff/node_modules/debug/src/browser.js new file mode 100644 index 0000000..5993451 --- /dev/null +++ b/bff/node_modules/debug/src/browser.js @@ -0,0 +1,272 @@ +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + let m; + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + // eslint-disable-next-line no-return-assign + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)) && parseInt(m[1], 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; diff --git a/bff/node_modules/debug/src/common.js b/bff/node_modules/debug/src/common.js new file mode 100644 index 0000000..141cb57 --- /dev/null +++ b/bff/node_modules/debug/src/common.js @@ -0,0 +1,292 @@ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require('ms'); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + const split = (typeof namespaces === 'string' ? namespaces : '') + .trim() + .replace(/\s+/g, ',') + .split(',') + .filter(Boolean); + + for (const ns of split) { + if (ns[0] === '-') { + createDebug.skips.push(ns.slice(1)); + } else { + createDebug.names.push(ns); + } + } + } + + /** + * Checks if the given string matches a namespace template, honoring + * asterisks as wildcards. + * + * @param {String} search + * @param {String} template + * @return {Boolean} + */ + function matchesTemplate(search, template) { + let searchIndex = 0; + let templateIndex = 0; + let starIndex = -1; + let matchIndex = 0; + + while (searchIndex < search.length) { + if (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) { + // Match character or proceed with wildcard + if (template[templateIndex] === '*') { + starIndex = templateIndex; + matchIndex = searchIndex; + templateIndex++; // Skip the '*' + } else { + searchIndex++; + templateIndex++; + } + } else if (starIndex !== -1) { // eslint-disable-line no-negated-condition + // Backtrack to the last '*' and try to match more characters + templateIndex = starIndex + 1; + matchIndex++; + searchIndex = matchIndex; + } else { + return false; // No match + } + } + + // Handle trailing '*' in template + while (templateIndex < template.length && template[templateIndex] === '*') { + templateIndex++; + } + + return templateIndex === template.length; + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names, + ...createDebug.skips.map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + for (const skip of createDebug.skips) { + if (matchesTemplate(name, skip)) { + return false; + } + } + + for (const ns of createDebug.names) { + if (matchesTemplate(name, ns)) { + return true; + } + } + + return false; + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; diff --git a/bff/node_modules/debug/src/index.js b/bff/node_modules/debug/src/index.js new file mode 100644 index 0000000..bf4c57f --- /dev/null +++ b/bff/node_modules/debug/src/index.js @@ -0,0 +1,10 @@ +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = require('./browser.js'); +} else { + module.exports = require('./node.js'); +} diff --git a/bff/node_modules/debug/src/node.js b/bff/node_modules/debug/src/node.js new file mode 100644 index 0000000..715560a --- /dev/null +++ b/bff/node_modules/debug/src/node.js @@ -0,0 +1,263 @@ +/** + * Module dependencies. + */ + +const tty = require('tty'); +const util = require('util'); + +/** + * This is the Node.js implementation of `debug()`. + */ + +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = require('supports-color'); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + const {namespace: name, useColors} = this; + + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} + +/** + * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. + */ + +function log(...args) { + return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init(debug) { + debug.inspectOpts = {}; + + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; diff --git a/bff/node_modules/delayed-stream/.npmignore b/bff/node_modules/delayed-stream/.npmignore new file mode 100644 index 0000000..9daeafb --- /dev/null +++ b/bff/node_modules/delayed-stream/.npmignore @@ -0,0 +1 @@ +test diff --git a/bff/node_modules/delayed-stream/License b/bff/node_modules/delayed-stream/License new file mode 100644 index 0000000..4804b7a --- /dev/null +++ b/bff/node_modules/delayed-stream/License @@ -0,0 +1,19 @@ +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/delayed-stream/Makefile b/bff/node_modules/delayed-stream/Makefile new file mode 100644 index 0000000..b4ff85a --- /dev/null +++ b/bff/node_modules/delayed-stream/Makefile @@ -0,0 +1,7 @@ +SHELL := /bin/bash + +test: + @./test/run.js + +.PHONY: test + diff --git a/bff/node_modules/delayed-stream/Readme.md b/bff/node_modules/delayed-stream/Readme.md new file mode 100644 index 0000000..aca36f9 --- /dev/null +++ b/bff/node_modules/delayed-stream/Readme.md @@ -0,0 +1,141 @@ +# delayed-stream + +Buffers events from a stream until you are ready to handle them. + +## Installation + +``` bash +npm install delayed-stream +``` + +## Usage + +The following example shows how to write a http echo server that delays its +response by 1000 ms. + +``` javascript +var DelayedStream = require('delayed-stream'); +var http = require('http'); + +http.createServer(function(req, res) { + var delayed = DelayedStream.create(req); + + setTimeout(function() { + res.writeHead(200); + delayed.pipe(res); + }, 1000); +}); +``` + +If you are not using `Stream#pipe`, you can also manually release the buffered +events by calling `delayedStream.resume()`: + +``` javascript +var delayed = DelayedStream.create(req); + +setTimeout(function() { + // Emit all buffered events and resume underlaying source + delayed.resume(); +}, 1000); +``` + +## Implementation + +In order to use this meta stream properly, here are a few things you should +know about the implementation. + +### Event Buffering / Proxying + +All events of the `source` stream are hijacked by overwriting the `source.emit` +method. Until node implements a catch-all event listener, this is the only way. + +However, delayed-stream still continues to emit all events it captures on the +`source`, regardless of whether you have released the delayed stream yet or +not. + +Upon creation, delayed-stream captures all `source` events and stores them in +an internal event buffer. Once `delayedStream.release()` is called, all +buffered events are emitted on the `delayedStream`, and the event buffer is +cleared. After that, delayed-stream merely acts as a proxy for the underlaying +source. + +### Error handling + +Error events on `source` are buffered / proxied just like any other events. +However, `delayedStream.create` attaches a no-op `'error'` listener to the +`source`. This way you only have to handle errors on the `delayedStream` +object, rather than in two places. + +### Buffer limits + +delayed-stream provides a `maxDataSize` property that can be used to limit +the amount of data being buffered. In order to protect you from bad `source` +streams that don't react to `source.pause()`, this feature is enabled by +default. + +## API + +### DelayedStream.create(source, [options]) + +Returns a new `delayedStream`. Available options are: + +* `pauseStream` +* `maxDataSize` + +The description for those properties can be found below. + +### delayedStream.source + +The `source` stream managed by this object. This is useful if you are +passing your `delayedStream` around, and you still want to access properties +on the `source` object. + +### delayedStream.pauseStream = true + +Whether to pause the underlaying `source` when calling +`DelayedStream.create()`. Modifying this property afterwards has no effect. + +### delayedStream.maxDataSize = 1024 * 1024 + +The amount of data to buffer before emitting an `error`. + +If the underlaying source is emitting `Buffer` objects, the `maxDataSize` +refers to bytes. + +If the underlaying source is emitting JavaScript strings, the size refers to +characters. + +If you know what you are doing, you can set this property to `Infinity` to +disable this feature. You can also modify this property during runtime. + +### delayedStream.dataSize = 0 + +The amount of data buffered so far. + +### delayedStream.readable + +An ECMA5 getter that returns the value of `source.readable`. + +### delayedStream.resume() + +If the `delayedStream` has not been released so far, `delayedStream.release()` +is called. + +In either case, `source.resume()` is called. + +### delayedStream.pause() + +Calls `source.pause()`. + +### delayedStream.pipe(dest) + +Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. + +### delayedStream.release() + +Emits and clears all events that have been buffered up so far. This does not +resume the underlaying source, use `delayedStream.resume()` instead. + +## License + +delayed-stream is licensed under the MIT license. diff --git a/bff/node_modules/delayed-stream/lib/delayed_stream.js b/bff/node_modules/delayed-stream/lib/delayed_stream.js new file mode 100644 index 0000000..b38fc85 --- /dev/null +++ b/bff/node_modules/delayed-stream/lib/delayed_stream.js @@ -0,0 +1,107 @@ +var Stream = require('stream').Stream; +var util = require('util'); + +module.exports = DelayedStream; +function DelayedStream() { + this.source = null; + this.dataSize = 0; + this.maxDataSize = 1024 * 1024; + this.pauseStream = true; + + this._maxDataSizeExceeded = false; + this._released = false; + this._bufferedEvents = []; +} +util.inherits(DelayedStream, Stream); + +DelayedStream.create = function(source, options) { + var delayedStream = new this(); + + options = options || {}; + for (var option in options) { + delayedStream[option] = options[option]; + } + + delayedStream.source = source; + + var realEmit = source.emit; + source.emit = function() { + delayedStream._handleEmit(arguments); + return realEmit.apply(source, arguments); + }; + + source.on('error', function() {}); + if (delayedStream.pauseStream) { + source.pause(); + } + + return delayedStream; +}; + +Object.defineProperty(DelayedStream.prototype, 'readable', { + configurable: true, + enumerable: true, + get: function() { + return this.source.readable; + } +}); + +DelayedStream.prototype.setEncoding = function() { + return this.source.setEncoding.apply(this.source, arguments); +}; + +DelayedStream.prototype.resume = function() { + if (!this._released) { + this.release(); + } + + this.source.resume(); +}; + +DelayedStream.prototype.pause = function() { + this.source.pause(); +}; + +DelayedStream.prototype.release = function() { + this._released = true; + + this._bufferedEvents.forEach(function(args) { + this.emit.apply(this, args); + }.bind(this)); + this._bufferedEvents = []; +}; + +DelayedStream.prototype.pipe = function() { + var r = Stream.prototype.pipe.apply(this, arguments); + this.resume(); + return r; +}; + +DelayedStream.prototype._handleEmit = function(args) { + if (this._released) { + this.emit.apply(this, args); + return; + } + + if (args[0] === 'data') { + this.dataSize += args[1].length; + this._checkIfMaxDataSizeExceeded(); + } + + this._bufferedEvents.push(args); +}; + +DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { + if (this._maxDataSizeExceeded) { + return; + } + + if (this.dataSize <= this.maxDataSize) { + return; + } + + this._maxDataSizeExceeded = true; + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' + this.emit('error', new Error(message)); +}; diff --git a/bff/node_modules/delayed-stream/package.json b/bff/node_modules/delayed-stream/package.json new file mode 100644 index 0000000..eea3291 --- /dev/null +++ b/bff/node_modules/delayed-stream/package.json @@ -0,0 +1,27 @@ +{ + "author": "Felix Geisendörfer (http://debuggable.com/)", + "contributors": [ + "Mike Atkins " + ], + "name": "delayed-stream", + "description": "Buffers events from a stream until you are ready to handle them.", + "license": "MIT", + "version": "1.0.0", + "homepage": "https://github.com/felixge/node-delayed-stream", + "repository": { + "type": "git", + "url": "git://github.com/felixge/node-delayed-stream.git" + }, + "main": "./lib/delayed_stream", + "engines": { + "node": ">=0.4.0" + }, + "scripts": { + "test": "make test" + }, + "dependencies": {}, + "devDependencies": { + "fake": "0.2.0", + "far": "0.0.1" + } +} diff --git a/bff/node_modules/depd/History.md b/bff/node_modules/depd/History.md new file mode 100644 index 0000000..cd9ebaa --- /dev/null +++ b/bff/node_modules/depd/History.md @@ -0,0 +1,103 @@ +2.0.0 / 2018-10-26 +================== + + * Drop support for Node.js 0.6 + * Replace internal `eval` usage with `Function` constructor + * Use instance methods on `process` to check for listeners + +1.1.2 / 2018-01-11 +================== + + * perf: remove argument reassignment + * Support Node.js 0.6 to 9.x + +1.1.1 / 2017-07-27 +================== + + * Remove unnecessary `Buffer` loading + * Support Node.js 0.6 to 8.x + +1.1.0 / 2015-09-14 +================== + + * Enable strict mode in more places + * Support io.js 3.x + * Support io.js 2.x + * Support web browser loading + - Requires bundler like Browserify or webpack + +1.0.1 / 2015-04-07 +================== + + * Fix `TypeError`s when under `'use strict'` code + * Fix useless type name on auto-generated messages + * Support io.js 1.x + * Support Node.js 0.12 + +1.0.0 / 2014-09-17 +================== + + * No changes + +0.4.5 / 2014-09-09 +================== + + * Improve call speed to functions using the function wrapper + * Support Node.js 0.6 + +0.4.4 / 2014-07-27 +================== + + * Work-around v8 generating empty stack traces + +0.4.3 / 2014-07-26 +================== + + * Fix exception when global `Error.stackTraceLimit` is too low + +0.4.2 / 2014-07-19 +================== + + * Correct call site for wrapped functions and properties + +0.4.1 / 2014-07-19 +================== + + * Improve automatic message generation for function properties + +0.4.0 / 2014-07-19 +================== + + * Add `TRACE_DEPRECATION` environment variable + * Remove non-standard grey color from color output + * Support `--no-deprecation` argument + * Support `--trace-deprecation` argument + * Support `deprecate.property(fn, prop, message)` + +0.3.0 / 2014-06-16 +================== + + * Add `NO_DEPRECATION` environment variable + +0.2.0 / 2014-06-15 +================== + + * Add `deprecate.property(obj, prop, message)` + * Remove `supports-color` dependency for node.js 0.8 + +0.1.0 / 2014-06-15 +================== + + * Add `deprecate.function(fn, message)` + * Add `process.on('deprecation', fn)` emitter + * Automatically generate message when omitted from `deprecate()` + +0.0.1 / 2014-06-15 +================== + + * Fix warning for dynamic calls at singe call site + +0.0.0 / 2014-06-15 +================== + + * Initial implementation diff --git a/bff/node_modules/depd/LICENSE b/bff/node_modules/depd/LICENSE new file mode 100644 index 0000000..248de7a --- /dev/null +++ b/bff/node_modules/depd/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2018 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/depd/Readme.md b/bff/node_modules/depd/Readme.md new file mode 100644 index 0000000..043d1ca --- /dev/null +++ b/bff/node_modules/depd/Readme.md @@ -0,0 +1,280 @@ +# depd + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Linux Build][travis-image]][travis-url] +[![Windows Build][appveyor-image]][appveyor-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +Deprecate all the things + +> With great modules comes great responsibility; mark things deprecated! + +## Install + +This module is installed directly using `npm`: + +```sh +$ npm install depd +``` + +This module can also be bundled with systems like +[Browserify](http://browserify.org/) or [webpack](https://webpack.github.io/), +though by default this module will alter it's API to no longer display or +track deprecations. + +## API + + + +```js +var deprecate = require('depd')('my-module') +``` + +This library allows you to display deprecation messages to your users. +This library goes above and beyond with deprecation warnings by +introspection of the call stack (but only the bits that it is interested +in). + +Instead of just warning on the first invocation of a deprecated +function and never again, this module will warn on the first invocation +of a deprecated function per unique call site, making it ideal to alert +users of all deprecated uses across the code base, rather than just +whatever happens to execute first. + +The deprecation warnings from this module also include the file and line +information for the call into the module that the deprecated function was +in. + +**NOTE** this library has a similar interface to the `debug` module, and +this module uses the calling file to get the boundary for the call stacks, +so you should always create a new `deprecate` object in each file and not +within some central file. + +### depd(namespace) + +Create a new deprecate function that uses the given namespace name in the +messages and will display the call site prior to the stack entering the +file this function was called from. It is highly suggested you use the +name of your module as the namespace. + +### deprecate(message) + +Call this function from deprecated code to display a deprecation message. +This message will appear once per unique caller site. Caller site is the +first call site in the stack in a different file from the caller of this +function. + +If the message is omitted, a message is generated for you based on the site +of the `deprecate()` call and will display the name of the function called, +similar to the name displayed in a stack trace. + +### deprecate.function(fn, message) + +Call this function to wrap a given function in a deprecation message on any +call to the function. An optional message can be supplied to provide a custom +message. + +### deprecate.property(obj, prop, message) + +Call this function to wrap a given property on object in a deprecation message +on any accessing or setting of the property. An optional message can be supplied +to provide a custom message. + +The method must be called on the object where the property belongs (not +inherited from the prototype). + +If the property is a data descriptor, it will be converted to an accessor +descriptor in order to display the deprecation message. + +### process.on('deprecation', fn) + +This module will allow easy capturing of deprecation errors by emitting the +errors as the type "deprecation" on the global `process`. If there are no +listeners for this type, the errors are written to STDERR as normal, but if +there are any listeners, nothing will be written to STDERR and instead only +emitted. From there, you can write the errors in a different format or to a +logging source. + +The error represents the deprecation and is emitted only once with the same +rules as writing to STDERR. The error has the following properties: + + - `message` - This is the message given by the library + - `name` - This is always `'DeprecationError'` + - `namespace` - This is the namespace the deprecation came from + - `stack` - This is the stack of the call to the deprecated thing + +Example `error.stack` output: + +``` +DeprecationError: my-cool-module deprecated oldfunction + at Object. ([eval]-wrapper:6:22) + at Module._compile (module.js:456:26) + at evalScript (node.js:532:25) + at startup (node.js:80:7) + at node.js:902:3 +``` + +### process.env.NO_DEPRECATION + +As a user of modules that are deprecated, the environment variable `NO_DEPRECATION` +is provided as a quick solution to silencing deprecation warnings from being +output. The format of this is similar to that of `DEBUG`: + +```sh +$ NO_DEPRECATION=my-module,othermod node app.js +``` + +This will suppress deprecations from being output for "my-module" and "othermod". +The value is a list of comma-separated namespaces. To suppress every warning +across all namespaces, use the value `*` for a namespace. + +Providing the argument `--no-deprecation` to the `node` executable will suppress +all deprecations (only available in Node.js 0.8 or higher). + +**NOTE** This will not suppress the deperecations given to any "deprecation" +event listeners, just the output to STDERR. + +### process.env.TRACE_DEPRECATION + +As a user of modules that are deprecated, the environment variable `TRACE_DEPRECATION` +is provided as a solution to getting more detailed location information in deprecation +warnings by including the entire stack trace. The format of this is the same as +`NO_DEPRECATION`: + +```sh +$ TRACE_DEPRECATION=my-module,othermod node app.js +``` + +This will include stack traces for deprecations being output for "my-module" and +"othermod". The value is a list of comma-separated namespaces. To trace every +warning across all namespaces, use the value `*` for a namespace. + +Providing the argument `--trace-deprecation` to the `node` executable will trace +all deprecations (only available in Node.js 0.8 or higher). + +**NOTE** This will not trace the deperecations silenced by `NO_DEPRECATION`. + +## Display + +![message](files/message.png) + +When a user calls a function in your library that you mark deprecated, they +will see the following written to STDERR (in the given colors, similar colors +and layout to the `debug` module): + +``` +bright cyan bright yellow +| | reset cyan +| | | | +▼ ▼ ▼ ▼ +my-cool-module deprecated oldfunction [eval]-wrapper:6:22 +▲ ▲ ▲ ▲ +| | | | +namespace | | location of mycoolmod.oldfunction() call + | deprecation message + the word "deprecated" +``` + +If the user redirects their STDERR to a file or somewhere that does not support +colors, they see (similar layout to the `debug` module): + +``` +Sun, 15 Jun 2014 05:21:37 GMT my-cool-module deprecated oldfunction at [eval]-wrapper:6:22 +▲ ▲ ▲ ▲ ▲ +| | | | | +timestamp of message namespace | | location of mycoolmod.oldfunction() call + | deprecation message + the word "deprecated" +``` + +## Examples + +### Deprecating all calls to a function + +This will display a deprecated message about "oldfunction" being deprecated +from "my-module" on STDERR. + +```js +var deprecate = require('depd')('my-cool-module') + +// message automatically derived from function name +// Object.oldfunction +exports.oldfunction = deprecate.function(function oldfunction () { + // all calls to function are deprecated +}) + +// specific message +exports.oldfunction = deprecate.function(function () { + // all calls to function are deprecated +}, 'oldfunction') +``` + +### Conditionally deprecating a function call + +This will display a deprecated message about "weirdfunction" being deprecated +from "my-module" on STDERR when called with less than 2 arguments. + +```js +var deprecate = require('depd')('my-cool-module') + +exports.weirdfunction = function () { + if (arguments.length < 2) { + // calls with 0 or 1 args are deprecated + deprecate('weirdfunction args < 2') + } +} +``` + +When calling `deprecate` as a function, the warning is counted per call site +within your own module, so you can display different deprecations depending +on different situations and the users will still get all the warnings: + +```js +var deprecate = require('depd')('my-cool-module') + +exports.weirdfunction = function () { + if (arguments.length < 2) { + // calls with 0 or 1 args are deprecated + deprecate('weirdfunction args < 2') + } else if (typeof arguments[0] !== 'string') { + // calls with non-string first argument are deprecated + deprecate('weirdfunction non-string first arg') + } +} +``` + +### Deprecating property access + +This will display a deprecated message about "oldprop" being deprecated +from "my-module" on STDERR when accessed. A deprecation will be displayed +when setting the value and when getting the value. + +```js +var deprecate = require('depd')('my-cool-module') + +exports.oldprop = 'something' + +// message automatically derives from property name +deprecate.property(exports, 'oldprop') + +// explicit message +deprecate.property(exports, 'oldprop', 'oldprop >= 0.10') +``` + +## License + +[MIT](LICENSE) + +[appveyor-image]: https://badgen.net/appveyor/ci/dougwilson/nodejs-depd/master?label=windows +[appveyor-url]: https://ci.appveyor.com/project/dougwilson/nodejs-depd +[coveralls-image]: https://badgen.net/coveralls/c/github/dougwilson/nodejs-depd/master +[coveralls-url]: https://coveralls.io/r/dougwilson/nodejs-depd?branch=master +[node-image]: https://badgen.net/npm/node/depd +[node-url]: https://nodejs.org/en/download/ +[npm-downloads-image]: https://badgen.net/npm/dm/depd +[npm-url]: https://npmjs.org/package/depd +[npm-version-image]: https://badgen.net/npm/v/depd +[travis-image]: https://badgen.net/travis/dougwilson/nodejs-depd/master?label=linux +[travis-url]: https://travis-ci.org/dougwilson/nodejs-depd diff --git a/bff/node_modules/depd/index.js b/bff/node_modules/depd/index.js new file mode 100644 index 0000000..1bf2fcf --- /dev/null +++ b/bff/node_modules/depd/index.js @@ -0,0 +1,538 @@ +/*! + * depd + * Copyright(c) 2014-2018 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module dependencies. + */ + +var relative = require('path').relative + +/** + * Module exports. + */ + +module.exports = depd + +/** + * Get the path to base files on. + */ + +var basePath = process.cwd() + +/** + * Determine if namespace is contained in the string. + */ + +function containsNamespace (str, namespace) { + var vals = str.split(/[ ,]+/) + var ns = String(namespace).toLowerCase() + + for (var i = 0; i < vals.length; i++) { + var val = vals[i] + + // namespace contained + if (val && (val === '*' || val.toLowerCase() === ns)) { + return true + } + } + + return false +} + +/** + * Convert a data descriptor to accessor descriptor. + */ + +function convertDataDescriptorToAccessor (obj, prop, message) { + var descriptor = Object.getOwnPropertyDescriptor(obj, prop) + var value = descriptor.value + + descriptor.get = function getter () { return value } + + if (descriptor.writable) { + descriptor.set = function setter (val) { return (value = val) } + } + + delete descriptor.value + delete descriptor.writable + + Object.defineProperty(obj, prop, descriptor) + + return descriptor +} + +/** + * Create arguments string to keep arity. + */ + +function createArgumentsString (arity) { + var str = '' + + for (var i = 0; i < arity; i++) { + str += ', arg' + i + } + + return str.substr(2) +} + +/** + * Create stack string from stack. + */ + +function createStackString (stack) { + var str = this.name + ': ' + this.namespace + + if (this.message) { + str += ' deprecated ' + this.message + } + + for (var i = 0; i < stack.length; i++) { + str += '\n at ' + stack[i].toString() + } + + return str +} + +/** + * Create deprecate for namespace in caller. + */ + +function depd (namespace) { + if (!namespace) { + throw new TypeError('argument namespace is required') + } + + var stack = getStack() + var site = callSiteLocation(stack[1]) + var file = site[0] + + function deprecate (message) { + // call to self as log + log.call(deprecate, message) + } + + deprecate._file = file + deprecate._ignored = isignored(namespace) + deprecate._namespace = namespace + deprecate._traced = istraced(namespace) + deprecate._warned = Object.create(null) + + deprecate.function = wrapfunction + deprecate.property = wrapproperty + + return deprecate +} + +/** + * Determine if event emitter has listeners of a given type. + * + * The way to do this check is done three different ways in Node.js >= 0.8 + * so this consolidates them into a minimal set using instance methods. + * + * @param {EventEmitter} emitter + * @param {string} type + * @returns {boolean} + * @private + */ + +function eehaslisteners (emitter, type) { + var count = typeof emitter.listenerCount !== 'function' + ? emitter.listeners(type).length + : emitter.listenerCount(type) + + return count > 0 +} + +/** + * Determine if namespace is ignored. + */ + +function isignored (namespace) { + if (process.noDeprecation) { + // --no-deprecation support + return true + } + + var str = process.env.NO_DEPRECATION || '' + + // namespace ignored + return containsNamespace(str, namespace) +} + +/** + * Determine if namespace is traced. + */ + +function istraced (namespace) { + if (process.traceDeprecation) { + // --trace-deprecation support + return true + } + + var str = process.env.TRACE_DEPRECATION || '' + + // namespace traced + return containsNamespace(str, namespace) +} + +/** + * Display deprecation message. + */ + +function log (message, site) { + var haslisteners = eehaslisteners(process, 'deprecation') + + // abort early if no destination + if (!haslisteners && this._ignored) { + return + } + + var caller + var callFile + var callSite + var depSite + var i = 0 + var seen = false + var stack = getStack() + var file = this._file + + if (site) { + // provided site + depSite = site + callSite = callSiteLocation(stack[1]) + callSite.name = depSite.name + file = callSite[0] + } else { + // get call site + i = 2 + depSite = callSiteLocation(stack[i]) + callSite = depSite + } + + // get caller of deprecated thing in relation to file + for (; i < stack.length; i++) { + caller = callSiteLocation(stack[i]) + callFile = caller[0] + + if (callFile === file) { + seen = true + } else if (callFile === this._file) { + file = this._file + } else if (seen) { + break + } + } + + var key = caller + ? depSite.join(':') + '__' + caller.join(':') + : undefined + + if (key !== undefined && key in this._warned) { + // already warned + return + } + + this._warned[key] = true + + // generate automatic message from call site + var msg = message + if (!msg) { + msg = callSite === depSite || !callSite.name + ? defaultMessage(depSite) + : defaultMessage(callSite) + } + + // emit deprecation if listeners exist + if (haslisteners) { + var err = DeprecationError(this._namespace, msg, stack.slice(i)) + process.emit('deprecation', err) + return + } + + // format and write message + var format = process.stderr.isTTY + ? formatColor + : formatPlain + var output = format.call(this, msg, caller, stack.slice(i)) + process.stderr.write(output + '\n', 'utf8') +} + +/** + * Get call site location as array. + */ + +function callSiteLocation (callSite) { + var file = callSite.getFileName() || '' + var line = callSite.getLineNumber() + var colm = callSite.getColumnNumber() + + if (callSite.isEval()) { + file = callSite.getEvalOrigin() + ', ' + file + } + + var site = [file, line, colm] + + site.callSite = callSite + site.name = callSite.getFunctionName() + + return site +} + +/** + * Generate a default message from the site. + */ + +function defaultMessage (site) { + var callSite = site.callSite + var funcName = site.name + + // make useful anonymous name + if (!funcName) { + funcName = '' + } + + var context = callSite.getThis() + var typeName = context && callSite.getTypeName() + + // ignore useless type name + if (typeName === 'Object') { + typeName = undefined + } + + // make useful type name + if (typeName === 'Function') { + typeName = context.name || typeName + } + + return typeName && callSite.getMethodName() + ? typeName + '.' + funcName + : funcName +} + +/** + * Format deprecation message without color. + */ + +function formatPlain (msg, caller, stack) { + var timestamp = new Date().toUTCString() + + var formatted = timestamp + + ' ' + this._namespace + + ' deprecated ' + msg + + // add stack trace + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += '\n at ' + stack[i].toString() + } + + return formatted + } + + if (caller) { + formatted += ' at ' + formatLocation(caller) + } + + return formatted +} + +/** + * Format deprecation message with color. + */ + +function formatColor (msg, caller, stack) { + var formatted = '\x1b[36;1m' + this._namespace + '\x1b[22;39m' + // bold cyan + ' \x1b[33;1mdeprecated\x1b[22;39m' + // bold yellow + ' \x1b[0m' + msg + '\x1b[39m' // reset + + // add stack trace + if (this._traced) { + for (var i = 0; i < stack.length; i++) { + formatted += '\n \x1b[36mat ' + stack[i].toString() + '\x1b[39m' // cyan + } + + return formatted + } + + if (caller) { + formatted += ' \x1b[36m' + formatLocation(caller) + '\x1b[39m' // cyan + } + + return formatted +} + +/** + * Format call site location. + */ + +function formatLocation (callSite) { + return relative(basePath, callSite[0]) + + ':' + callSite[1] + + ':' + callSite[2] +} + +/** + * Get the stack as array of call sites. + */ + +function getStack () { + var limit = Error.stackTraceLimit + var obj = {} + var prep = Error.prepareStackTrace + + Error.prepareStackTrace = prepareObjectStackTrace + Error.stackTraceLimit = Math.max(10, limit) + + // capture the stack + Error.captureStackTrace(obj) + + // slice this function off the top + var stack = obj.stack.slice(1) + + Error.prepareStackTrace = prep + Error.stackTraceLimit = limit + + return stack +} + +/** + * Capture call site stack from v8. + */ + +function prepareObjectStackTrace (obj, stack) { + return stack +} + +/** + * Return a wrapped function in a deprecation message. + */ + +function wrapfunction (fn, message) { + if (typeof fn !== 'function') { + throw new TypeError('argument fn must be a function') + } + + var args = createArgumentsString(fn.length) + var stack = getStack() + var site = callSiteLocation(stack[1]) + + site.name = fn.name + + // eslint-disable-next-line no-new-func + var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site', + '"use strict"\n' + + 'return function (' + args + ') {' + + 'log.call(deprecate, message, site)\n' + + 'return fn.apply(this, arguments)\n' + + '}')(fn, log, this, message, site) + + return deprecatedfn +} + +/** + * Wrap property in a deprecation message. + */ + +function wrapproperty (obj, prop, message) { + if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { + throw new TypeError('argument obj must be object') + } + + var descriptor = Object.getOwnPropertyDescriptor(obj, prop) + + if (!descriptor) { + throw new TypeError('must call property on owner object') + } + + if (!descriptor.configurable) { + throw new TypeError('property must be configurable') + } + + var deprecate = this + var stack = getStack() + var site = callSiteLocation(stack[1]) + + // set site name + site.name = prop + + // convert data descriptor + if ('value' in descriptor) { + descriptor = convertDataDescriptorToAccessor(obj, prop, message) + } + + var get = descriptor.get + var set = descriptor.set + + // wrap getter + if (typeof get === 'function') { + descriptor.get = function getter () { + log.call(deprecate, message, site) + return get.apply(this, arguments) + } + } + + // wrap setter + if (typeof set === 'function') { + descriptor.set = function setter () { + log.call(deprecate, message, site) + return set.apply(this, arguments) + } + } + + Object.defineProperty(obj, prop, descriptor) +} + +/** + * Create DeprecationError for deprecation + */ + +function DeprecationError (namespace, message, stack) { + var error = new Error() + var stackString + + Object.defineProperty(error, 'constructor', { + value: DeprecationError + }) + + Object.defineProperty(error, 'message', { + configurable: true, + enumerable: false, + value: message, + writable: true + }) + + Object.defineProperty(error, 'name', { + enumerable: false, + configurable: true, + value: 'DeprecationError', + writable: true + }) + + Object.defineProperty(error, 'namespace', { + configurable: true, + enumerable: false, + value: namespace, + writable: true + }) + + Object.defineProperty(error, 'stack', { + configurable: true, + enumerable: false, + get: function () { + if (stackString !== undefined) { + return stackString + } + + // prepare stack trace + return (stackString = createStackString.call(this, stack)) + }, + set: function setter (val) { + stackString = val + } + }) + + return error +} diff --git a/bff/node_modules/depd/lib/browser/index.js b/bff/node_modules/depd/lib/browser/index.js new file mode 100644 index 0000000..6be45cc --- /dev/null +++ b/bff/node_modules/depd/lib/browser/index.js @@ -0,0 +1,77 @@ +/*! + * depd + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = depd + +/** + * Create deprecate for namespace in caller. + */ + +function depd (namespace) { + if (!namespace) { + throw new TypeError('argument namespace is required') + } + + function deprecate (message) { + // no-op in browser + } + + deprecate._file = undefined + deprecate._ignored = true + deprecate._namespace = namespace + deprecate._traced = false + deprecate._warned = Object.create(null) + + deprecate.function = wrapfunction + deprecate.property = wrapproperty + + return deprecate +} + +/** + * Return a wrapped function in a deprecation message. + * + * This is a no-op version of the wrapper, which does nothing but call + * validation. + */ + +function wrapfunction (fn, message) { + if (typeof fn !== 'function') { + throw new TypeError('argument fn must be a function') + } + + return fn +} + +/** + * Wrap property in a deprecation message. + * + * This is a no-op version of the wrapper, which does nothing but call + * validation. + */ + +function wrapproperty (obj, prop, message) { + if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { + throw new TypeError('argument obj must be object') + } + + var descriptor = Object.getOwnPropertyDescriptor(obj, prop) + + if (!descriptor) { + throw new TypeError('must call property on owner object') + } + + if (!descriptor.configurable) { + throw new TypeError('property must be configurable') + } +} diff --git a/bff/node_modules/depd/package.json b/bff/node_modules/depd/package.json new file mode 100644 index 0000000..3857e19 --- /dev/null +++ b/bff/node_modules/depd/package.json @@ -0,0 +1,45 @@ +{ + "name": "depd", + "description": "Deprecate all the things", + "version": "2.0.0", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "keywords": [ + "deprecate", + "deprecated" + ], + "repository": "dougwilson/nodejs-depd", + "browser": "lib/browser/index.js", + "devDependencies": { + "benchmark": "2.1.4", + "beautify-benchmark": "0.2.4", + "eslint": "5.7.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.14.0", + "eslint-plugin-markdown": "1.0.0-beta.7", + "eslint-plugin-node": "7.0.1", + "eslint-plugin-promise": "4.0.1", + "eslint-plugin-standard": "4.0.0", + "istanbul": "0.4.5", + "mocha": "5.2.0", + "safe-buffer": "5.1.2", + "uid-safe": "2.1.5" + }, + "files": [ + "lib/", + "History.md", + "LICENSE", + "index.js", + "Readme.md" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "bench": "node benchmark/index.js", + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --bail test/", + "test-ci": "istanbul cover --print=none node_modules/mocha/bin/_mocha -- --reporter spec test/ && istanbul report lcovonly text-summary", + "test-cov": "istanbul cover --print=none node_modules/mocha/bin/_mocha -- --reporter dot test/ && istanbul report lcov text-summary" + } +} diff --git a/bff/node_modules/dotenv/CHANGELOG.md b/bff/node_modules/dotenv/CHANGELOG.md new file mode 100644 index 0000000..c3d6a9c --- /dev/null +++ b/bff/node_modules/dotenv/CHANGELOG.md @@ -0,0 +1,621 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## [Unreleased](https://github.com/motdotla/dotenv/compare/v17.3.1...master) + +## [17.3.1](https://github.com/motdotla/dotenv/compare/v17.3.0...v17.3.1) (2026-02-12) + +### Changed + +* Fix as2 example command in README and update spanish README + +## [17.3.0](https://github.com/motdotla/dotenv/compare/v17.2.4...v17.3.0) (2026-02-12) + +### Added + +* Add a new README section on dotenv’s approach to the agentic future. + +### Changed + +* Rewrite README to get humans started more quickly with less noise while simultaneously making more accessible for llms and agents to go deeper into details. + +## [17.2.4](https://github.com/motdotla/dotenv/compare/v17.2.3...v17.2.4) (2026-02-05) + +### Changed + +* Make `DotenvPopulateInput` accept `NodeJS.ProcessEnv` type ([#915](https://github.com/motdotla/dotenv/pull/915)) +- Give back to dotenv by checking out my newest project [vestauth](https://github.com/vestauth/vestauth). It is auth for agents. Thank you for using my software. + +## [17.2.3](https://github.com/motdotla/dotenv/compare/v17.2.2...v17.2.3) (2025-09-29) + +### Changed + +* Fixed typescript error definition ([#912](https://github.com/motdotla/dotenv/pull/912)) + +## [17.2.2](https://github.com/motdotla/dotenv/compare/v17.2.1...v17.2.2) (2025-09-02) + +### Added + +- 🙏 A big thank you to new sponsor [Tuple.app](https://tuple.app/dotenv) - *the premier screen sharing app for developers on macOS and Windows.* Go check them out. It's wonderful and generous of them to give back to open source by sponsoring dotenv. Give them some love back. + +## [17.2.1](https://github.com/motdotla/dotenv/compare/v17.2.0...v17.2.1) (2025-07-24) + +### Changed + +* Fix clickable tip links by removing parentheses ([#897](https://github.com/motdotla/dotenv/pull/897)) + +## [17.2.0](https://github.com/motdotla/dotenv/compare/v17.1.0...v17.2.0) (2025-07-09) + +### Added + +* Optionally specify `DOTENV_CONFIG_QUIET=true` in your environment or `.env` file to quiet the runtime log ([#889](https://github.com/motdotla/dotenv/pull/889)) +* Just like dotenv any `DOTENV_CONFIG_` environment variables take precedence over any code set options like `({quiet: false})` + +```ini +# .env +DOTENV_CONFIG_QUIET=true +HELLO="World" +``` +```js +// index.js +require('dotenv').config() +console.log(`Hello ${process.env.HELLO}`) +``` +```sh +$ node index.js +Hello World + +or + +$ DOTENV_CONFIG_QUIET=true node index.js +``` + +## [17.1.0](https://github.com/motdotla/dotenv/compare/v17.0.1...v17.1.0) (2025-07-07) + +### Added + +* Add additional security and configuration tips to the runtime log ([#884](https://github.com/motdotla/dotenv/pull/884)) +* Dim the tips text from the main injection information text + +```js +const TIPS = [ + '🔐 encrypt with dotenvx: https://dotenvx.com', + '🔐 prevent committing .env to code: https://dotenvx.com/precommit', + '🔐 prevent building .env in docker: https://dotenvx.com/prebuild', + '🛠️ run anywhere with `dotenvx run -- yourcommand`', + '⚙️ specify custom .env file path with { path: \'/custom/path/.env\' }', + '⚙️ enable debug logging with { debug: true }', + '⚙️ override existing env vars with { override: true }', + '⚙️ suppress all logs with { quiet: true }', + '⚙️ write to custom object with { processEnv: myObject }', + '⚙️ load multiple .env files with { path: [\'.env.local\', \'.env\'] }' +] +``` + +## [17.0.1](https://github.com/motdotla/dotenv/compare/v17.0.0...v17.0.1) (2025-07-01) + +### Changed + +* Patched injected log to count only populated/set keys to process.env ([#879](https://github.com/motdotla/dotenv/pull/879)) + +## [17.0.0](https://github.com/motdotla/dotenv/compare/v16.6.1...v17.0.0) (2025-06-27) + +### Changed + +- Default `quiet` to false - informational (file and keys count) runtime log message shows by default ([#875](https://github.com/motdotla/dotenv/pull/875)) + +## [16.6.1](https://github.com/motdotla/dotenv/compare/v16.6.0...v16.6.1) (2025-06-27) + +### Changed + +- Default `quiet` to true – hiding the runtime log message ([#874](https://github.com/motdotla/dotenv/pull/874)) +- NOTICE: 17.0.0 will be released with quiet defaulting to false. Use `config({ quiet: true })` to suppress. +- And check out the new [dotenvx](https://github.com/dotenvx/dotenvx). As coding workflows evolve and agents increasingly handle secrets, encrypted .env files offer a much safer way to deploy both agents and code together with secure secrets. Simply switch `require('dotenv').config()` for `require('@dotenvx/dotenvx').config()`. + +## [16.6.0](https://github.com/motdotla/dotenv/compare/v16.5.0...v16.6.0) (2025-06-26) + +### Added + +- Default log helpful message `[dotenv@16.6.0] injecting env (1) from .env` ([#870](https://github.com/motdotla/dotenv/pull/870)) +- Use `{ quiet: true }` to suppress +- Aligns dotenv more closely with [dotenvx](https://github.com/dotenvx/dotenvx). + +## [16.5.0](https://github.com/motdotla/dotenv/compare/v16.4.7...v16.5.0) (2025-04-07) + +### Added + +- 🎉 Added new sponsor [Graphite](https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv) - *the AI developer productivity platform helping teams on GitHub ship higher quality software, faster*. + +> [!TIP] +> **[Become a sponsor](https://github.com/sponsors/motdotla)** +> +> The dotenvx README is viewed thousands of times DAILY on GitHub and NPM. +> Sponsoring dotenv is a great way to get in front of developers and give back to the developer community at the same time. + +### Changed + +- Remove `_log` method. Use `_debug` [#862](https://github.com/motdotla/dotenv/pull/862) + +## [16.4.7](https://github.com/motdotla/dotenv/compare/v16.4.6...v16.4.7) (2024-12-03) + +### Changed + +- Ignore `.tap` folder when publishing. (oops, sorry about that everyone. - @motdotla) [#848](https://github.com/motdotla/dotenv/pull/848) + +## [16.4.6](https://github.com/motdotla/dotenv/compare/v16.4.5...v16.4.6) (2024-12-02) + +### Changed + +- Clean up stale dev dependencies [#847](https://github.com/motdotla/dotenv/pull/847) +- Various README updates clarifying usage and alternative solutions using [dotenvx](https://github.com/dotenvx/dotenvx) + +## [16.4.5](https://github.com/motdotla/dotenv/compare/v16.4.4...v16.4.5) (2024-02-19) + +### Changed + +- 🐞 Fix recent regression when using `path` option. return to historical behavior: do not attempt to auto find `.env` if `path` set. (regression was introduced in `16.4.3`) [#814](https://github.com/motdotla/dotenv/pull/814) + +## [16.4.4](https://github.com/motdotla/dotenv/compare/v16.4.3...v16.4.4) (2024-02-13) + +### Changed + +- 🐞 Replaced chaining operator `?.` with old school `&&` (fixing node 12 failures) [#812](https://github.com/motdotla/dotenv/pull/812) + +## [16.4.3](https://github.com/motdotla/dotenv/compare/v16.4.2...v16.4.3) (2024-02-12) + +### Changed + +- Fixed processing of multiple files in `options.path` [#805](https://github.com/motdotla/dotenv/pull/805) + +## [16.4.2](https://github.com/motdotla/dotenv/compare/v16.4.1...v16.4.2) (2024-02-10) + +### Changed + +- Changed funding link in package.json to [`dotenvx.com`](https://dotenvx.com) + +## [16.4.1](https://github.com/motdotla/dotenv/compare/v16.4.0...v16.4.1) (2024-01-24) + +- Patch support for array as `path` option [#797](https://github.com/motdotla/dotenv/pull/797) + +## [16.4.0](https://github.com/motdotla/dotenv/compare/v16.3.2...v16.4.0) (2024-01-23) + +- Add `error.code` to error messages around `.env.vault` decryption handling [#795](https://github.com/motdotla/dotenv/pull/795) +- Add ability to find `.env.vault` file when filename(s) passed as an array [#784](https://github.com/motdotla/dotenv/pull/784) + +## [16.3.2](https://github.com/motdotla/dotenv/compare/v16.3.1...v16.3.2) (2024-01-18) + +### Added + +- Add debug message when no encoding set [#735](https://github.com/motdotla/dotenv/pull/735) + +### Changed + +- Fix output typing for `populate` [#792](https://github.com/motdotla/dotenv/pull/792) +- Use subarray instead of slice [#793](https://github.com/motdotla/dotenv/pull/793) + +## [16.3.1](https://github.com/motdotla/dotenv/compare/v16.3.0...v16.3.1) (2023-06-17) + +### Added + +- Add missing type definitions for `processEnv` and `DOTENV_KEY` options. [#756](https://github.com/motdotla/dotenv/pull/756) + +## [16.3.0](https://github.com/motdotla/dotenv/compare/v16.2.0...v16.3.0) (2023-06-16) + +### Added + +- Optionally pass `DOTENV_KEY` to options rather than relying on `process.env.DOTENV_KEY`. Defaults to `process.env.DOTENV_KEY` [#754](https://github.com/motdotla/dotenv/pull/754) + +## [16.2.0](https://github.com/motdotla/dotenv/compare/v16.1.4...v16.2.0) (2023-06-15) + +### Added + +- Optionally write to your own target object rather than `process.env`. Defaults to `process.env`. [#753](https://github.com/motdotla/dotenv/pull/753) +- Add import type URL to types file [#751](https://github.com/motdotla/dotenv/pull/751) + +## [16.1.4](https://github.com/motdotla/dotenv/compare/v16.1.3...v16.1.4) (2023-06-04) + +### Added + +- Added `.github/` to `.npmignore` [#747](https://github.com/motdotla/dotenv/pull/747) + +## [16.1.3](https://github.com/motdotla/dotenv/compare/v16.1.2...v16.1.3) (2023-05-31) + +### Removed + +- Removed `browser` keys for `path`, `os`, and `crypto` in package.json. These were set to false incorrectly as of 16.1. Instead, if using dotenv on the front-end make sure to include polyfills for `path`, `os`, and `crypto`. [node-polyfill-webpack-plugin](https://github.com/Richienb/node-polyfill-webpack-plugin) provides these. + +## [16.1.2](https://github.com/motdotla/dotenv/compare/v16.1.1...v16.1.2) (2023-05-31) + +### Changed + +- Exposed private function `_configDotenv` as `configDotenv`. [#744](https://github.com/motdotla/dotenv/pull/744) + +## [16.1.1](https://github.com/motdotla/dotenv/compare/v16.1.0...v16.1.1) (2023-05-30) + +### Added + +- Added type definition for `decrypt` function + +### Changed + +- Fixed `{crypto: false}` in `packageJson.browser` + +## [16.1.0](https://github.com/motdotla/dotenv/compare/v16.0.3...v16.1.0) (2023-05-30) + +### Added + +- Add `populate` convenience method [#733](https://github.com/motdotla/dotenv/pull/733) +- Accept URL as path option [#720](https://github.com/motdotla/dotenv/pull/720) +- Add dotenv to `npm fund` command +- Spanish language README [#698](https://github.com/motdotla/dotenv/pull/698) +- Add `.env.vault` support. 🎉 ([#730](https://github.com/motdotla/dotenv/pull/730)) + +ℹ️ `.env.vault` extends the `.env` file format standard with a localized encrypted vault file. Package it securely with your production code deploys. It's cloud agnostic so that you can deploy your secrets anywhere – without [risky third-party integrations](https://techcrunch.com/2023/01/05/circleci-breach/). [read more](https://github.com/motdotla/dotenv#-deploying) + +### Changed + +- Fixed "cannot resolve 'fs'" error on tools like Replit [#693](https://github.com/motdotla/dotenv/pull/693) + +## [16.0.3](https://github.com/motdotla/dotenv/compare/v16.0.2...v16.0.3) (2022-09-29) + +### Changed + +- Added library version to debug logs ([#682](https://github.com/motdotla/dotenv/pull/682)) + +## [16.0.2](https://github.com/motdotla/dotenv/compare/v16.0.1...v16.0.2) (2022-08-30) + +### Added + +- Export `env-options.js` and `cli-options.js` in package.json for use with downstream [dotenv-expand](https://github.com/motdotla/dotenv-expand) module + +## [16.0.1](https://github.com/motdotla/dotenv/compare/v16.0.0...v16.0.1) (2022-05-10) + +### Changed + +- Minor README clarifications +- Development ONLY: updated devDependencies as recommended for development only security risks ([#658](https://github.com/motdotla/dotenv/pull/658)) + +## [16.0.0](https://github.com/motdotla/dotenv/compare/v15.0.1...v16.0.0) (2022-02-02) + +### Added + +- _Breaking:_ Backtick support 🎉 ([#615](https://github.com/motdotla/dotenv/pull/615)) + +If you had values containing the backtick character, please quote those values with either single or double quotes. + +## [15.0.1](https://github.com/motdotla/dotenv/compare/v15.0.0...v15.0.1) (2022-02-02) + +### Changed + +- Properly parse empty single or double quoted values 🐞 ([#614](https://github.com/motdotla/dotenv/pull/614)) + +## [15.0.0](https://github.com/motdotla/dotenv/compare/v14.3.2...v15.0.0) (2022-01-31) + +`v15.0.0` is a major new release with some important breaking changes. + +### Added + +- _Breaking:_ Multiline parsing support (just works. no need for the flag.) + +### Changed + +- _Breaking:_ `#` marks the beginning of a comment (UNLESS the value is wrapped in quotes. Please update your `.env` files to wrap in quotes any values containing `#`. For example: `SECRET_HASH="something-with-a-#-hash"`). + +..Understandably, (as some teams have noted) this is tedious to do across the entire team. To make it less tedious, we recommend using [dotenv cli](https://github.com/dotenv-org/cli) going forward. It's an optional plugin that will keep your `.env` files in sync between machines, environments, or team members. + +### Removed + +- _Breaking:_ Remove multiline option (just works out of the box now. no need for the flag.) + +## [14.3.2](https://github.com/motdotla/dotenv/compare/v14.3.1...v14.3.2) (2022-01-25) + +### Changed + +- Preserve backwards compatibility on values containing `#` 🐞 ([#603](https://github.com/motdotla/dotenv/pull/603)) + +## [14.3.1](https://github.com/motdotla/dotenv/compare/v14.3.0...v14.3.1) (2022-01-25) + +### Changed + +- Preserve backwards compatibility on exports by re-introducing the prior in-place exports 🐞 ([#606](https://github.com/motdotla/dotenv/pull/606)) + +## [14.3.0](https://github.com/motdotla/dotenv/compare/v14.2.0...v14.3.0) (2022-01-24) + +### Added + +- Add `multiline` option 🎉 ([#486](https://github.com/motdotla/dotenv/pull/486)) + +## [14.2.0](https://github.com/motdotla/dotenv/compare/v14.1.1...v14.2.0) (2022-01-17) + +### Added + +- Add `dotenv_config_override` cli option +- Add `DOTENV_CONFIG_OVERRIDE` command line env option + +## [14.1.1](https://github.com/motdotla/dotenv/compare/v14.1.0...v14.1.1) (2022-01-17) + +### Added + +- Add React gotcha to FAQ on README + +## [14.1.0](https://github.com/motdotla/dotenv/compare/v14.0.1...v14.1.0) (2022-01-17) + +### Added + +- Add `override` option 🎉 ([#595](https://github.com/motdotla/dotenv/pull/595)) + +## [14.0.1](https://github.com/motdotla/dotenv/compare/v14.0.0...v14.0.1) (2022-01-16) + +### Added + +- Log error on failure to load `.env` file ([#594](https://github.com/motdotla/dotenv/pull/594)) + +## [14.0.0](https://github.com/motdotla/dotenv/compare/v13.0.1...v14.0.0) (2022-01-16) + +### Added + +- _Breaking:_ Support inline comments for the parser 🎉 ([#568](https://github.com/motdotla/dotenv/pull/568)) + +## [13.0.1](https://github.com/motdotla/dotenv/compare/v13.0.0...v13.0.1) (2022-01-16) + +### Changed + +* Hide comments and newlines from debug output ([#404](https://github.com/motdotla/dotenv/pull/404)) + +## [13.0.0](https://github.com/motdotla/dotenv/compare/v12.0.4...v13.0.0) (2022-01-16) + +### Added + +* _Breaking:_ Add type file for `config.js` ([#539](https://github.com/motdotla/dotenv/pull/539)) + +## [12.0.4](https://github.com/motdotla/dotenv/compare/v12.0.3...v12.0.4) (2022-01-16) + +### Changed + +* README updates +* Minor order adjustment to package json format + +## [12.0.3](https://github.com/motdotla/dotenv/compare/v12.0.2...v12.0.3) (2022-01-15) + +### Changed + +* Simplified jsdoc for consistency across editors + +## [12.0.2](https://github.com/motdotla/dotenv/compare/v12.0.1...v12.0.2) (2022-01-15) + +### Changed + +* Improve embedded jsdoc type documentation + +## [12.0.1](https://github.com/motdotla/dotenv/compare/v12.0.0...v12.0.1) (2022-01-15) + +### Changed + +* README updates and clarifications + +## [12.0.0](https://github.com/motdotla/dotenv/compare/v11.0.0...v12.0.0) (2022-01-15) + +### Removed + +- _Breaking:_ drop support for Flow static type checker ([#584](https://github.com/motdotla/dotenv/pull/584)) + +### Changed + +- Move types/index.d.ts to lib/main.d.ts ([#585](https://github.com/motdotla/dotenv/pull/585)) +- Typescript cleanup ([#587](https://github.com/motdotla/dotenv/pull/587)) +- Explicit typescript inclusion in package.json ([#566](https://github.com/motdotla/dotenv/pull/566)) + +## [11.0.0](https://github.com/motdotla/dotenv/compare/v10.0.0...v11.0.0) (2022-01-11) + +### Changed + +- _Breaking:_ drop support for Node v10 ([#558](https://github.com/motdotla/dotenv/pull/558)) +- Patch debug option ([#550](https://github.com/motdotla/dotenv/pull/550)) + +## [10.0.0](https://github.com/motdotla/dotenv/compare/v9.0.2...v10.0.0) (2021-05-20) + +### Added + +- Add generic support to parse function +- Allow for import "dotenv/config.js" +- Add support to resolve home directory in path via ~ + +## [9.0.2](https://github.com/motdotla/dotenv/compare/v9.0.1...v9.0.2) (2021-05-10) + +### Changed + +- Support windows newlines with debug mode + +## [9.0.1](https://github.com/motdotla/dotenv/compare/v9.0.0...v9.0.1) (2021-05-08) + +### Changed + +- Updates to README + +## [9.0.0](https://github.com/motdotla/dotenv/compare/v8.6.0...v9.0.0) (2021-05-05) + +### Changed + +- _Breaking:_ drop support for Node v8 + +## [8.6.0](https://github.com/motdotla/dotenv/compare/v8.5.1...v8.6.0) (2021-05-05) + +### Added + +- define package.json in exports + +## [8.5.1](https://github.com/motdotla/dotenv/compare/v8.5.0...v8.5.1) (2021-05-05) + +### Changed + +- updated dev dependencies via npm audit + +## [8.5.0](https://github.com/motdotla/dotenv/compare/v8.4.0...v8.5.0) (2021-05-05) + +### Added + +- allow for `import "dotenv/config"` + +## [8.4.0](https://github.com/motdotla/dotenv/compare/v8.3.0...v8.4.0) (2021-05-05) + +### Changed + +- point to exact types file to work with VS Code + +## [8.3.0](https://github.com/motdotla/dotenv/compare/v8.2.0...v8.3.0) (2021-05-05) + +### Changed + +- _Breaking:_ drop support for Node v8 (mistake to be released as minor bump. later bumped to 9.0.0. see above.) + +## [8.2.0](https://github.com/motdotla/dotenv/compare/v8.1.0...v8.2.0) (2019-10-16) + +### Added + +- TypeScript types + +## [8.1.0](https://github.com/motdotla/dotenv/compare/v8.0.0...v8.1.0) (2019-08-18) + +### Changed + +- _Breaking:_ drop support for Node v6 ([#392](https://github.com/motdotla/dotenv/issues/392)) + +# [8.0.0](https://github.com/motdotla/dotenv/compare/v7.0.0...v8.0.0) (2019-05-02) + +### Changed + +- _Breaking:_ drop support for Node v6 ([#302](https://github.com/motdotla/dotenv/issues/392)) + +## [7.0.0] - 2019-03-12 + +### Fixed + +- Fix removing unbalanced quotes ([#376](https://github.com/motdotla/dotenv/pull/376)) + +### Removed + +- Removed `load` alias for `config` for consistency throughout code and documentation. + +## [6.2.0] - 2018-12-03 + +### Added + +- Support preload configuration via environment variables ([#351](https://github.com/motdotla/dotenv/issues/351)) + +## [6.1.0] - 2018-10-08 + +### Added + +- `debug` option for `config` and `parse` methods will turn on logging + +## [6.0.0] - 2018-06-02 + +### Changed + +- _Breaking:_ drop support for Node v4 ([#304](https://github.com/motdotla/dotenv/pull/304)) + +## [5.0.0] - 2018-01-29 + +### Added + +- Testing against Node v8 and v9 +- Documentation on trim behavior of values +- Documentation on how to use with `import` + +### Changed + +- _Breaking_: default `path` is now `path.resolve(process.cwd(), '.env')` +- _Breaking_: does not write over keys already in `process.env` if the key has a falsy value +- using `const` and `let` instead of `var` + +### Removed + +- Testing against Node v7 + +## [4.0.0] - 2016-12-23 + +### Changed + +- Return Object with parsed content or error instead of false ([#165](https://github.com/motdotla/dotenv/pull/165)). + +### Removed + +- `verbose` option removed in favor of returning result. + +## [3.0.0] - 2016-12-20 + +### Added + +- `verbose` option will log any error messages. Off by default. +- parses email addresses correctly +- allow importing config method directly in ES6 + +### Changed + +- Suppress error messages by default ([#154](https://github.com/motdotla/dotenv/pull/154)) +- Ignoring more files for NPM to make package download smaller + +### Fixed + +- False positive test due to case-sensitive variable ([#124](https://github.com/motdotla/dotenv/pull/124)) + +### Removed + +- `silent` option removed in favor of `verbose` + +## [2.0.0] - 2016-01-20 + +### Added + +- CHANGELOG to ["make it easier for users and contributors to see precisely what notable changes have been made between each release"](http://keepachangelog.com/). Linked to from README +- LICENSE to be more explicit about what was defined in `package.json`. Linked to from README +- Testing nodejs v4 on travis-ci +- added examples of how to use dotenv in different ways +- return parsed object on success rather than boolean true + +### Changed + +- README has shorter description not referencing ruby gem since we don't have or want feature parity + +### Removed + +- Variable expansion and escaping so environment variables are encouraged to be fully orthogonal + +## [1.2.0] - 2015-06-20 + +### Added + +- Preload hook to require dotenv without including it in your code + +### Changed + +- clarified license to be "BSD-2-Clause" in `package.json` + +### Fixed + +- retain spaces in string vars + +## [1.1.0] - 2015-03-31 + +### Added + +- Silent option to silence `console.log` when `.env` missing + +## [1.0.0] - 2015-03-13 + +### Removed + +- support for multiple `.env` files. should always use one `.env` file for the current environment + +[7.0.0]: https://github.com/motdotla/dotenv/compare/v6.2.0...v7.0.0 +[6.2.0]: https://github.com/motdotla/dotenv/compare/v6.1.0...v6.2.0 +[6.1.0]: https://github.com/motdotla/dotenv/compare/v6.0.0...v6.1.0 +[6.0.0]: https://github.com/motdotla/dotenv/compare/v5.0.0...v6.0.0 +[5.0.0]: https://github.com/motdotla/dotenv/compare/v4.0.0...v5.0.0 +[4.0.0]: https://github.com/motdotla/dotenv/compare/v3.0.0...v4.0.0 +[3.0.0]: https://github.com/motdotla/dotenv/compare/v2.0.0...v3.0.0 +[2.0.0]: https://github.com/motdotla/dotenv/compare/v1.2.0...v2.0.0 +[1.2.0]: https://github.com/motdotla/dotenv/compare/v1.1.0...v1.2.0 +[1.1.0]: https://github.com/motdotla/dotenv/compare/v1.0.0...v1.1.0 +[1.0.0]: https://github.com/motdotla/dotenv/compare/v0.4.0...v1.0.0 diff --git a/bff/node_modules/dotenv/LICENSE b/bff/node_modules/dotenv/LICENSE new file mode 100644 index 0000000..c430ad8 --- /dev/null +++ b/bff/node_modules/dotenv/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2015, Scott Motte +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/bff/node_modules/dotenv/README-es.md b/bff/node_modules/dotenv/README-es.md new file mode 100644 index 0000000..441160c --- /dev/null +++ b/bff/node_modules/dotenv/README-es.md @@ -0,0 +1,774 @@ +# dotenv [![NPM version](https://img.shields.io/npm/v/dotenv.svg?style=flat-square)](https://www.npmjs.com/package/dotenv) [![downloads](https://img.shields.io/npm/dw/dotenv)](https://www.npmjs.com/package/dotenv) + +dotenv + +Dotenv is a zero-dependency module that loads environment variables from a `.env` file into [`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env). Storing configuration in the environment separate from code is based on [The Twelve-Factor App](https://12factor.net/config) methodology. + +[Watch the tutorial](https://www.youtube.com/watch?v=YtkZR0NFd1g) + +  + +## Usage + +Install it. + +```sh +npm install dotenv --save +``` + +Create a `.env` file in the root of your project: + +```ini +# .env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +And as early as possible in your application, import and configure dotenv: + +```javascript +require('dotenv').config() // or import 'dotenv/config' if you're using ES6 +... +console.log(process.env) // remove this after you've confirmed it is working +``` + +That's it. `process.env` now has the keys and values you defined in your `.env` file: + +  + +## Advanced + +
ES6
+ +Import with [ES6](#how-do-i-use-dotenv-with-import): + +```javascript +import 'dotenv/config' +``` + +ES6 import if you need to set config options: + +```javascript +import dotenv from 'dotenv' +dotenv.config({ path: '/custom/path/to/.env' }) +``` + +
+
bun
+ +```sh +bun add dotenv +``` + +
+
yarn
+ +```sh +yarn add dotenv +``` + +
+
pnpm
+ +```sh +pnpm add dotenv +``` + +
+
Monorepos
+ +For monorepos with a structure like `apps/backend/app.js`, put it the `.env` file in the root of the folder where your `app.js` process runs. + +```ini +# app/backend/.env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +
+
Multiline Values
+ +If you need multiline variables, for example private keys, those are now supported (`>= v15.0.0`) with line breaks: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- +... +Kh9NV... +... +-----END RSA PRIVATE KEY-----" +``` + +Alternatively, you can double quote strings and use the `\n` character: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n" +``` + +
+
Comments
+ +Comments may be added to your file on their own line or inline: + +```ini +# This is a comment +SECRET_KEY=YOURSECRETKEYGOESHERE # comment +SECRET_HASH="something-with-a-#-hash" +``` + +Comments begin where a `#` exists, so if your value contains a `#` please wrap it in quotes. This is a breaking change from `>= v15.0.0` and on. + +
+
Parsing
+ +The engine which parses the contents of your file containing environment variables is available to use. It accepts a String or Buffer and will return an Object with the parsed keys and values. + +```javascript +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +
+
Preload
+ +> Note: Consider using [`dotenvx`](https://github.com/dotenvx/dotenvx) instead of preloading. I am now doing (and recommending) so. +> +> It serves the same purpose (you do not need to require and load dotenv), adds better debugging, and works with ANY language, framework, or platform. – [motdotla](https://mot.la) + +You can use the `--require` (`-r`) [command line option](https://nodejs.org/api/cli.html#-r---require-module) to preload dotenv. By doing this, you do not need to require and load dotenv in your application code. + +```bash +$ node -r dotenv/config your_script.js +``` + +The configuration options below are supported as command line arguments in the format `dotenv_config_
+
Variable Expansion
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for variable expansion. + +Reference and expand variables already on your machine for use in your .env file. + +```ini +# .env +USERNAME="username" +DATABASE_URL="postgres://${USERNAME}@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (2) from .env +DATABASE_URL postgres://username@localhost/my_database +``` + +
+
Command Substitution
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for command substitution. + +Add the output of a command to one of your variables in your .env file. + +```ini +# .env +DATABASE_URL="postgres://$(whoami)@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (1) from .env +DATABASE_URL postgres://yourusername@localhost/my_database +``` + +
+
Encryption
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for encryption. + +Add encryption to your `.env` files with a single command. + +``` +$ dotenvx set HELLO Production -f .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ DOTENV_PRIVATE_KEY_PRODUCTION="<.env.production private key>" dotenvx run -- node index.js +[dotenvx] injecting env (2) from .env.production +Hello Production +``` + +[learn more](https://github.com/dotenvx/dotenvx?tab=readme-ov-file#encryption) + +
+
Multiple Environments
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to manage multiple environments. + +Run any environment locally. Create a `.env.ENVIRONMENT` file and use `-f` to load it. It's straightforward, yet flexible. + +```bash +$ echo "HELLO=production" > .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.production -- node index.js +Hello production +> ^^ +``` + +or with multiple .env files + +```bash +$ echo "HELLO=local" > .env.local +$ echo "HELLO=World" > .env +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.local -f=.env -- node index.js +Hello local +``` + +[more environment examples](https://dotenvx.com/docs/quickstart/environments) + +
+
Production
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for production deploys. + +Create a `.env.production` file. + +```sh +$ echo "HELLO=production" > .env.production +``` + +Encrypt it. + +```sh +$ dotenvx encrypt -f .env.production +``` + +Set `DOTENV_PRIVATE_KEY_PRODUCTION` (found in `.env.keys`) on your server. + +``` +$ heroku config:set DOTENV_PRIVATE_KEY_PRODUCTION=value +``` + +Commit your `.env.production` file to code and deploy. + +``` +$ git add .env.production +$ git commit -m "encrypted .env.production" +$ git push heroku main +``` + +Dotenvx will decrypt and inject the secrets at runtime using `dotenvx run -- node index.js`. + +
+
Syncing
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to sync your .env files. + +Encrypt them with `dotenvx encrypt -f .env` and safely include them in source control. Your secrets are securely synced with your git. + +This still subscribes to the twelve-factor app rules by generating a decryption key separate from code. + +
+
More Examples
+ +See [examples](https://github.com/dotenv-org/examples) of using dotenv with various frameworks, languages, and configurations. + +* [nodejs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs) +* [nodejs (debug on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-debug) +* [nodejs (override on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-override) +* [nodejs (processEnv override)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-custom-target) +* [esm](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm) +* [esm (preload)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm-preload) +* [typescript](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript) +* [typescript parse](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-parse) +* [typescript config](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-config) +* [webpack](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack) +* [webpack (plugin)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack2) +* [react](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react) +* [react (typescript)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react-typescript) +* [express](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-express) +* [nestjs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nestjs) +* [fastify](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-fastify) + +
+ +  + +## Agentes + +dotenvx-as2 + +> El software está cambiando, y dotenv debe cambiar con él—por eso construí [agentic secret storage (AS2)](https://dotenvx.com/as2). Los agentes ejecutan código sin humanos en la terminal, por lo que los archivos `.env` en texto plano son el primitivo equivocado. +> +> AS2 está diseñado para software autónomo: cifrado por defecto, cero acceso a consola y entrega priorizando la criptografía que mantiene a los operadores fuera del circuito. +> +> Está respaldado por [Vestauth](https://github.com/vestauth/vestauth), la capa de autenticación pionera y de confianza para agentes—que otorga a cada agente una identidad criptográfica para firmar solicitudes con claves privadas y verificarlas con claves públicas. Sin secretos compartidos que se filtren. +> +> Es lo que uso ahora. - [motdotla](https://mot.la) + +### Inicio rápido + +Instala vestauth e inicializa tu agente. + +```bash +npm i -g vestauth + +vestauth agent init +``` + +Tu agente puede `set` secretos con un endpoint `curl` simple: + +```bash +vestauth agent curl -X POST https://as2.dotenvx.com/set -d '{"KEY":"value"}' +``` + +Y tu agente puede `get` secretos con un endpoint `curl` simple: + +```bash +vestauth agent curl https://as2.dotenvx.com/get?key=KEY +``` + +¡Eso es todo! Este nuevo primitivo habilita el acceso a secretos para agentes sin intervención humana, flujos de OAuth ni claves API. Es el futuro para los agentes. + +  + +## FAQ + +
Should I commit my `.env` file?
+ +No. + +Unless you encrypt it with [dotenvx](https://github.com/dotenvx/dotenvx). Then we recommend you do. + +
+
What about variable expansion?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx). + +
+
Should I have multiple `.env` files?
+ +We recommend creating one `.env` file per environment. Use `.env` for local/development, `.env.production` for production and so on. This still follows the twelve factor principles as each is attributed individually to its own environment. Avoid custom set ups that work in inheritance somehow (`.env.production` inherits values form `.env` for example). It is better to duplicate values if necessary across each `.env.environment` file. + +> In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as “environments”, but instead are independently managed for each deploy. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime. +> +> – [The Twelve-Factor App](http://12factor.net/config) + +Additionally, we recommend using [dotenvx](https://github.com/dotenvx/dotenvx) to encrypt and manage these. + +
+ +
How do I use dotenv with `import`?
+ +Simply.. + +```javascript +// index.mjs (ESM) +import 'dotenv/config' // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import +import express from 'express' +``` + +A little background.. + +> When you run a module containing an `import` declaration, the modules it imports are loaded first, then each module body is executed in a depth-first traversal of the dependency graph, avoiding cycles by skipping anything already executed. +> +> – [ES6 In Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) + +What does this mean in plain language? It means you would think the following would work but it won't. + +`errorReporter.mjs`: +```js +class Client { + constructor (apiKey) { + console.log('apiKey', apiKey) + + this.apiKey = apiKey + } +} + +export default new Client(process.env.API_KEY) +``` +`index.mjs`: +```js +// Note: this is INCORRECT and will not work +import * as dotenv from 'dotenv' +dotenv.config() + +import errorReporter from './errorReporter.mjs' // process.env.API_KEY will be blank! +``` + +`process.env.API_KEY` will be blank. + +Instead, `index.mjs` should be written as.. + +```js +import 'dotenv/config' + +import errorReporter from './errorReporter.mjs' +``` + +Does that make sense? It's a bit unintuitive, but it is how importing of ES6 modules work. Here is a [working example of this pitfall](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-es6-import-pitfall). + +There are two alternatives to this approach: + +1. Preload with dotenvx: `dotenvx run -- node index.js` (_Note: you do not need to `import` dotenv with this approach_) +2. Create a separate file that will execute `config` first as outlined in [this comment on #133](https://github.com/motdotla/dotenv/issues/133#issuecomment-255298822) +
+ +
Can I customize/write plugins for dotenv?
+ +Yes! `dotenv.config()` returns an object representing the parsed `.env` file. This gives you everything you need to continue setting values on `process.env`. For example: + +```js +const dotenv = require('dotenv') +const variableExpansion = require('dotenv-expand') +const myEnv = dotenv.config() +variableExpansion(myEnv) +``` + +
+
What rules does the parsing engine follow?
+ +The parsing engine currently supports the following rules: + +- `BASIC=basic` becomes `{BASIC: 'basic'}` +- empty lines are skipped +- lines beginning with `#` are treated as comments +- `#` marks the beginning of a comment (unless when the value is wrapped in quotes) +- empty values become empty strings (`EMPTY=` becomes `{EMPTY: ''}`) +- inner quotes are maintained (think JSON) (`JSON={"foo": "bar"}` becomes `{JSON:"{\"foo\": \"bar\"}"`) +- whitespace is removed from both ends of unquoted values (see more on [`trim`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)) (`FOO= some value ` becomes `{FOO: 'some value'}`) +- single and double quoted values are escaped (`SINGLE_QUOTE='quoted'` becomes `{SINGLE_QUOTE: "quoted"}`) +- single and double quoted values maintain whitespace from both ends (`FOO=" some value "` becomes `{FOO: ' some value '}`) +- double quoted values expand new lines (`MULTILINE="new\nline"` becomes + +``` +{MULTILINE: 'new +line'} +``` + +- backticks are supported (`` BACKTICK_KEY=`This has 'single' and "double" quotes inside of it.` ``) + +
+
What about syncing and securing .env files?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to unlock syncing encrypted .env files over git. + +
+
What if I accidentally commit my `.env` file to code?
+ +Remove it, [remove git history](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository) and then install the [git pre-commit hook](https://github.com/dotenvx/dotenvx#pre-commit) to prevent this from ever happening again. + +``` +npm i -g @dotenvx/dotenvx +dotenvx precommit --install +``` + +
+
What happens to environment variables that were already set?
+ +By default, we will never modify any environment variables that have already been set. In particular, if there is a variable in your `.env` file which collides with one that already exists in your environment, then that variable will be skipped. + +If instead, you want to override `process.env` use the `override` option. + +```javascript +require('dotenv').config({ override: true }) +``` + +
+
How can I prevent committing my `.env` file to a Docker build?
+ +Use the [docker prebuild hook](https://dotenvx.com/docs/features/prebuild). + +```bash +# Dockerfile +... +RUN curl -fsS https://dotenvx.sh/ | sh +... +RUN dotenvx prebuild +CMD ["dotenvx", "run", "--", "node", "index.js"] +``` + +
+
How come my environment variables are not showing up for React?
+ +Your React code is run in Webpack, where the `fs` module or even the `process` global itself are not accessible out-of-the-box. `process.env` can only be injected through Webpack configuration. + +If you are using [`react-scripts`](https://www.npmjs.com/package/react-scripts), which is distributed through [`create-react-app`](https://create-react-app.dev/), it has dotenv built in but with a quirk. Preface your environment variables with `REACT_APP_`. See [this stack overflow](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project) for more details. + +If you are using other frameworks (e.g. Next.js, Gatsby...), you need to consult their documentation for how to inject environment variables into the client. + +
+
Why is the `.env` file not loading my environment variables successfully?
+ +Most likely your `.env` file is not in the correct place. [See this stack overflow](https://stackoverflow.com/questions/42335016/dotenv-file-is-not-loading-environment-variables). + +Turn on debug mode and try again.. + +```js +require('dotenv').config({ debug: true }) +``` + +You will receive a helpful error outputted to your console. + +
+
Why am I getting the error `Module not found: Error: Can't resolve 'crypto|os|path'`?
+ +You are using dotenv on the front-end and have not included a polyfill. Webpack < 5 used to include these for you. Do the following: + +```bash +npm install node-polyfill-webpack-plugin +``` + +Configure your `webpack.config.js` to something like the following. + +```js +require('dotenv').config() + +const path = require('path'); +const webpack = require('webpack') + +const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') + +module.exports = { + mode: 'development', + entry: './src/index.ts', + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new NodePolyfillPlugin(), + new webpack.DefinePlugin({ + 'process.env': { + HELLO: JSON.stringify(process.env.HELLO) + } + }), + ] +}; +``` + +Alternatively, just use [dotenv-webpack](https://github.com/mrsteele/dotenv-webpack) which does this and more behind the scenes for you. + +
+ +  + +## Docs + +Dotenv exposes four functions: + +* `config` +* `parse` +* `populate` + +### Config + +`config` will read your `.env` file, parse the contents, assign it to +[`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env), +and return an Object with a `parsed` key containing the loaded content or an `error` key if it failed. + +```js +const result = dotenv.config() + +if (result.error) { + throw result.error +} + +console.log(result.parsed) +``` + +You can additionally, pass options to `config`. + +#### Options + +##### path + +Default: `path.resolve(process.cwd(), '.env')` + +Specify a custom path if your file containing environment variables is located elsewhere. + +```js +require('dotenv').config({ path: '/custom/path/to/.env' }) +``` + +By default, `config` will look for a file called .env in the current working directory. + +Pass in multiple files as an array, and they will be parsed in order and combined with `process.env` (or `option.processEnv`, if set). The first value set for a variable will win, unless the `options.override` flag is set, in which case the last value set will win. If a value already exists in `process.env` and the `options.override` flag is NOT set, no changes will be made to that value. + +```js +require('dotenv').config({ path: ['.env.local', '.env'] }) +``` + +##### quiet + +Default: `false` + +Suppress runtime logging message. + +```js +// index.js +require('dotenv').config({ quiet: false }) // change to true to suppress +console.log(`Hello ${process.env.HELLO}`) +``` + +```ini +# .env +HELLO=World +``` + +```sh +$ node index.js +[dotenv@17.0.0] injecting env (1) from .env +Hello World +``` + +##### encoding + +Default: `utf8` + +Specify the encoding of your file containing environment variables. + +```js +require('dotenv').config({ encoding: 'latin1' }) +``` + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +require('dotenv').config({ debug: process.env.DEBUG }) +``` + +##### override + +Default: `false` + +Override any environment variables that have already been set on your machine with values from your .env file(s). If multiple files have been provided in `option.path` the override will also be used as each file is combined with the next. Without `override` being set, the first value wins. With `override` set the last value wins. + +```js +require('dotenv').config({ override: true }) +``` + +##### processEnv + +Default: `process.env` + +Specify an object to write your environment variables to. Defaults to `process.env` environment variables. + +```js +const myObject = {} +require('dotenv').config({ processEnv: myObject }) + +console.log(myObject) // values from .env +console.log(process.env) // this was not changed or written to +``` + +### Parse + +The engine which parses the contents of your file containing environment +variables is available to use. It accepts a String or Buffer and will return +an Object with the parsed keys and values. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +#### Options + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('hello world') +const opt = { debug: true } +const config = dotenv.parse(buf, opt) +// expect a debug message because the buffer is not in KEY=VAL form +``` + +### Populate + +The engine which populates the contents of your .env file to `process.env` is available for use. It accepts a target, a source, and options. This is useful for power users who want to supply their own objects. + +For example, customizing the source: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'world' } + +dotenv.populate(process.env, parsed) + +console.log(process.env.HELLO) // world +``` + +For example, customizing the source AND target: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'universe' } +const target = { HELLO: 'world' } // empty object + +dotenv.populate(target, parsed, { override: true, debug: true }) + +console.log(target) // { HELLO: 'universe' } +``` + +#### options + +##### Debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being populated as you expect. + +##### override + +Default: `false` + +Override any environment variables that have already been set. + +  + +## CHANGELOG + +See [CHANGELOG.md](CHANGELOG.md) + +  + +## Who's using dotenv? + +[These npm modules depend on it.](https://www.npmjs.com/browse/depended/dotenv) + +Projects that expand it often use the [keyword "dotenv" on npm](https://www.npmjs.com/search?q=keywords:dotenv). diff --git a/bff/node_modules/dotenv/README.md b/bff/node_modules/dotenv/README.md new file mode 100644 index 0000000..b82a438 --- /dev/null +++ b/bff/node_modules/dotenv/README.md @@ -0,0 +1,774 @@ +# dotenv [![NPM version](https://img.shields.io/npm/v/dotenv.svg?style=flat-square)](https://www.npmjs.com/package/dotenv) [![downloads](https://img.shields.io/npm/dw/dotenv)](https://www.npmjs.com/package/dotenv) + +dotenv + +Dotenv is a zero-dependency module that loads environment variables from a `.env` file into [`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env). Storing configuration in the environment separate from code is based on [The Twelve-Factor App](https://12factor.net/config) methodology. + +[Watch the tutorial](https://www.youtube.com/watch?v=YtkZR0NFd1g) + +  + +## Usage + +Install it. + +```sh +npm install dotenv --save +``` + +Create a `.env` file in the root of your project: + +```ini +# .env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +And as early as possible in your application, import and configure dotenv: + +```javascript +require('dotenv').config() // or import 'dotenv/config' if you're using ES6 +... +console.log(process.env) // remove this after you've confirmed it is working +``` + +That's it. `process.env` now has the keys and values you defined in your `.env` file: + +  + +## Advanced + +
ES6
+ +Import with [ES6](#how-do-i-use-dotenv-with-import): + +```javascript +import 'dotenv/config' +``` + +ES6 import if you need to set config options: + +```javascript +import dotenv from 'dotenv' +dotenv.config({ path: '/custom/path/to/.env' }) +``` + +
+
bun
+ +```sh +bun add dotenv +``` + +
+
yarn
+ +```sh +yarn add dotenv +``` + +
+
pnpm
+ +```sh +pnpm add dotenv +``` + +
+
Monorepos
+ +For monorepos with a structure like `apps/backend/app.js`, put it the `.env` file in the root of the folder where your `app.js` process runs. + +```ini +# app/backend/.env +S3_BUCKET="YOURS3BUCKET" +SECRET_KEY="YOURSECRETKEYGOESHERE" +``` + +
+
Multiline Values
+ +If you need multiline variables, for example private keys, those are now supported (`>= v15.0.0`) with line breaks: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- +... +Kh9NV... +... +-----END RSA PRIVATE KEY-----" +``` + +Alternatively, you can double quote strings and use the `\n` character: + +```ini +PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n" +``` + +
+
Comments
+ +Comments may be added to your file on their own line or inline: + +```ini +# This is a comment +SECRET_KEY=YOURSECRETKEYGOESHERE # comment +SECRET_HASH="something-with-a-#-hash" +``` + +Comments begin where a `#` exists, so if your value contains a `#` please wrap it in quotes. This is a breaking change from `>= v15.0.0` and on. + +
+
Parsing
+ +The engine which parses the contents of your file containing environment variables is available to use. It accepts a String or Buffer and will return an Object with the parsed keys and values. + +```javascript +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +
+
Preload
+ +> Note: Consider using [`dotenvx`](https://github.com/dotenvx/dotenvx) instead of preloading. I am now doing (and recommending) so. +> +> It serves the same purpose (you do not need to require and load dotenv), adds better debugging, and works with ANY language, framework, or platform. – [motdotla](https://mot.la) + +You can use the `--require` (`-r`) [command line option](https://nodejs.org/api/cli.html#-r---require-module) to preload dotenv. By doing this, you do not need to require and load dotenv in your application code. + +```bash +$ node -r dotenv/config your_script.js +``` + +The configuration options below are supported as command line arguments in the format `dotenv_config_
+
Variable Expansion
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for variable expansion. + +Reference and expand variables already on your machine for use in your .env file. + +```ini +# .env +USERNAME="username" +DATABASE_URL="postgres://${USERNAME}@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (2) from .env +DATABASE_URL postgres://username@localhost/my_database +``` + +
+
Command Substitution
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for command substitution. + +Add the output of a command to one of your variables in your .env file. + +```ini +# .env +DATABASE_URL="postgres://$(whoami)@localhost/my_database" +``` +```js +// index.js +console.log('DATABASE_URL', process.env.DATABASE_URL) +``` +```sh +$ dotenvx run --debug -- node index.js +[dotenvx@0.14.1] injecting env (1) from .env +DATABASE_URL postgres://yourusername@localhost/my_database +``` + +
+
Encryption
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for encryption. + +Add encryption to your `.env` files with a single command. + +``` +$ dotenvx set HELLO Production -f .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ DOTENV_PRIVATE_KEY_PRODUCTION="<.env.production private key>" dotenvx run -- node index.js +[dotenvx] injecting env (2) from .env.production +Hello Production +``` + +[learn more](https://github.com/dotenvx/dotenvx?tab=readme-ov-file#encryption) + +
+
Multiple Environments
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to manage multiple environments. + +Run any environment locally. Create a `.env.ENVIRONMENT` file and use `-f` to load it. It's straightforward, yet flexible. + +```bash +$ echo "HELLO=production" > .env.production +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.production -- node index.js +Hello production +> ^^ +``` + +or with multiple .env files + +```bash +$ echo "HELLO=local" > .env.local +$ echo "HELLO=World" > .env +$ echo "console.log('Hello ' + process.env.HELLO)" > index.js + +$ dotenvx run -f=.env.local -f=.env -- node index.js +Hello local +``` + +[more environment examples](https://dotenvx.com/docs/quickstart/environments) + +
+
Production
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) for production deploys. + +Create a `.env.production` file. + +```sh +$ echo "HELLO=production" > .env.production +``` + +Encrypt it. + +```sh +$ dotenvx encrypt -f .env.production +``` + +Set `DOTENV_PRIVATE_KEY_PRODUCTION` (found in `.env.keys`) on your server. + +``` +$ heroku config:set DOTENV_PRIVATE_KEY_PRODUCTION=value +``` + +Commit your `.env.production` file to code and deploy. + +``` +$ git add .env.production +$ git commit -m "encrypted .env.production" +$ git push heroku main +``` + +Dotenvx will decrypt and inject the secrets at runtime using `dotenvx run -- node index.js`. + +
+
Syncing
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to sync your .env files. + +Encrypt them with `dotenvx encrypt -f .env` and safely include them in source control. Your secrets are securely synced with your git. + +This still subscribes to the twelve-factor app rules by generating a decryption key separate from code. + +
+
More Examples
+ +See [examples](https://github.com/dotenv-org/examples) of using dotenv with various frameworks, languages, and configurations. + +* [nodejs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs) +* [nodejs (debug on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-debug) +* [nodejs (override on)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nodejs-override) +* [nodejs (processEnv override)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-custom-target) +* [esm](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm) +* [esm (preload)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-esm-preload) +* [typescript](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript) +* [typescript parse](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-parse) +* [typescript config](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-typescript-config) +* [webpack](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack) +* [webpack (plugin)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-webpack2) +* [react](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react) +* [react (typescript)](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-react-typescript) +* [express](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-express) +* [nestjs](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-nestjs) +* [fastify](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-fastify) + +
+ +  + +## Agents + +dotenvx-as2 + +> Software is changing, and dotenv must change with it—that is why I built [agentic secret storage (AS2)](https://dotenvx.com/as2). Agents run code without humans at terminals, so plaintext `.env` files are the wrong primitive. +> +> AS2 is built for autonomous software: encrypted by default, zero console access, and cryptography‑first delivery that keeps operators out of the loop. +> +> It is backed by [Vestauth](https://github.com/vestauth/vestauth), the trusted, pioneering auth layer for agents—giving each agent a cryptographic identity so requests are signed with private keys and verified with public keys. No shared secrets to leak. +> +> It's what I'm using now. - [motdotla](https://mot.la) + +### Quickstart + +Install vestauth and initialize your agent. + +```bash +npm i -g vestauth + +vestauth agent init +``` + +Your agent `set`s secrets with a simple `curl` endpoint: + +```bash +vestauth agent curl -X POST https://as2.dotenvx.com/set -d '{"KEY":"value"}' +``` + +And your agent `get`s secrets with a simple `curl` endpoint: + +```bash +vestauth agent curl https://as2.dotenvx.com/get?key=KEY +``` + +That's it! This new primitive unlocks secrets access for agents without human-in-the-loop, oauth flows, or API keys. It's the future for agents. + +  + +## FAQ + +
Should I commit my `.env` file?
+ +No. + +Unless you encrypt it with [dotenvx](https://github.com/dotenvx/dotenvx). Then we recommend you do. + +
+
What about variable expansion?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx). + +
+
Should I have multiple `.env` files?
+ +We recommend creating one `.env` file per environment. Use `.env` for local/development, `.env.production` for production and so on. This still follows the twelve factor principles as each is attributed individually to its own environment. Avoid custom set ups that work in inheritance somehow (`.env.production` inherits values form `.env` for example). It is better to duplicate values if necessary across each `.env.environment` file. + +> In a twelve-factor app, env vars are granular controls, each fully orthogonal to other env vars. They are never grouped together as “environments”, but instead are independently managed for each deploy. This is a model that scales up smoothly as the app naturally expands into more deploys over its lifetime. +> +> – [The Twelve-Factor App](http://12factor.net/config) + +Additionally, we recommend using [dotenvx](https://github.com/dotenvx/dotenvx) to encrypt and manage these. + +
+ +
How do I use dotenv with `import`?
+ +Simply.. + +```javascript +// index.mjs (ESM) +import 'dotenv/config' // see https://github.com/motdotla/dotenv#how-do-i-use-dotenv-with-import +import express from 'express' +``` + +A little background.. + +> When you run a module containing an `import` declaration, the modules it imports are loaded first, then each module body is executed in a depth-first traversal of the dependency graph, avoiding cycles by skipping anything already executed. +> +> – [ES6 In Depth: Modules](https://hacks.mozilla.org/2015/08/es6-in-depth-modules/) + +What does this mean in plain language? It means you would think the following would work but it won't. + +`errorReporter.mjs`: +```js +class Client { + constructor (apiKey) { + console.log('apiKey', apiKey) + + this.apiKey = apiKey + } +} + +export default new Client(process.env.API_KEY) +``` +`index.mjs`: +```js +// Note: this is INCORRECT and will not work +import * as dotenv from 'dotenv' +dotenv.config() + +import errorReporter from './errorReporter.mjs' // process.env.API_KEY will be blank! +``` + +`process.env.API_KEY` will be blank. + +Instead, `index.mjs` should be written as.. + +```js +import 'dotenv/config' + +import errorReporter from './errorReporter.mjs' +``` + +Does that make sense? It's a bit unintuitive, but it is how importing of ES6 modules work. Here is a [working example of this pitfall](https://github.com/dotenv-org/examples/tree/master/usage/dotenv-es6-import-pitfall). + +There are two alternatives to this approach: + +1. Preload with dotenvx: `dotenvx run -- node index.js` (_Note: you do not need to `import` dotenv with this approach_) +2. Create a separate file that will execute `config` first as outlined in [this comment on #133](https://github.com/motdotla/dotenv/issues/133#issuecomment-255298822) +
+ +
Can I customize/write plugins for dotenv?
+ +Yes! `dotenv.config()` returns an object representing the parsed `.env` file. This gives you everything you need to continue setting values on `process.env`. For example: + +```js +const dotenv = require('dotenv') +const variableExpansion = require('dotenv-expand') +const myEnv = dotenv.config() +variableExpansion(myEnv) +``` + +
+
What rules does the parsing engine follow?
+ +The parsing engine currently supports the following rules: + +- `BASIC=basic` becomes `{BASIC: 'basic'}` +- empty lines are skipped +- lines beginning with `#` are treated as comments +- `#` marks the beginning of a comment (unless when the value is wrapped in quotes) +- empty values become empty strings (`EMPTY=` becomes `{EMPTY: ''}`) +- inner quotes are maintained (think JSON) (`JSON={"foo": "bar"}` becomes `{JSON:"{\"foo\": \"bar\"}"`) +- whitespace is removed from both ends of unquoted values (see more on [`trim`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim)) (`FOO= some value ` becomes `{FOO: 'some value'}`) +- single and double quoted values are escaped (`SINGLE_QUOTE='quoted'` becomes `{SINGLE_QUOTE: "quoted"}`) +- single and double quoted values maintain whitespace from both ends (`FOO=" some value "` becomes `{FOO: ' some value '}`) +- double quoted values expand new lines (`MULTILINE="new\nline"` becomes + +``` +{MULTILINE: 'new +line'} +``` + +- backticks are supported (`` BACKTICK_KEY=`This has 'single' and "double" quotes inside of it.` ``) + +
+
What about syncing and securing .env files?
+ +Use [dotenvx](https://github.com/dotenvx/dotenvx) to unlock syncing encrypted .env files over git. + +
+
What if I accidentally commit my `.env` file to code?
+ +Remove it, [remove git history](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository) and then install the [git pre-commit hook](https://github.com/dotenvx/dotenvx#pre-commit) to prevent this from ever happening again. + +``` +npm i -g @dotenvx/dotenvx +dotenvx precommit --install +``` + +
+
What happens to environment variables that were already set?
+ +By default, we will never modify any environment variables that have already been set. In particular, if there is a variable in your `.env` file which collides with one that already exists in your environment, then that variable will be skipped. + +If instead, you want to override `process.env` use the `override` option. + +```javascript +require('dotenv').config({ override: true }) +``` + +
+
How can I prevent committing my `.env` file to a Docker build?
+ +Use the [docker prebuild hook](https://dotenvx.com/docs/features/prebuild). + +```bash +# Dockerfile +... +RUN curl -fsS https://dotenvx.sh/ | sh +... +RUN dotenvx prebuild +CMD ["dotenvx", "run", "--", "node", "index.js"] +``` + +
+
How come my environment variables are not showing up for React?
+ +Your React code is run in Webpack, where the `fs` module or even the `process` global itself are not accessible out-of-the-box. `process.env` can only be injected through Webpack configuration. + +If you are using [`react-scripts`](https://www.npmjs.com/package/react-scripts), which is distributed through [`create-react-app`](https://create-react-app.dev/), it has dotenv built in but with a quirk. Preface your environment variables with `REACT_APP_`. See [this stack overflow](https://stackoverflow.com/questions/42182577/is-it-possible-to-use-dotenv-in-a-react-project) for more details. + +If you are using other frameworks (e.g. Next.js, Gatsby...), you need to consult their documentation for how to inject environment variables into the client. + +
+
Why is the `.env` file not loading my environment variables successfully?
+ +Most likely your `.env` file is not in the correct place. [See this stack overflow](https://stackoverflow.com/questions/42335016/dotenv-file-is-not-loading-environment-variables). + +Turn on debug mode and try again.. + +```js +require('dotenv').config({ debug: true }) +``` + +You will receive a helpful error outputted to your console. + +
+
Why am I getting the error `Module not found: Error: Can't resolve 'crypto|os|path'`?
+ +You are using dotenv on the front-end and have not included a polyfill. Webpack < 5 used to include these for you. Do the following: + +```bash +npm install node-polyfill-webpack-plugin +``` + +Configure your `webpack.config.js` to something like the following. + +```js +require('dotenv').config() + +const path = require('path'); +const webpack = require('webpack') + +const NodePolyfillPlugin = require('node-polyfill-webpack-plugin') + +module.exports = { + mode: 'development', + entry: './src/index.ts', + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new NodePolyfillPlugin(), + new webpack.DefinePlugin({ + 'process.env': { + HELLO: JSON.stringify(process.env.HELLO) + } + }), + ] +}; +``` + +Alternatively, just use [dotenv-webpack](https://github.com/mrsteele/dotenv-webpack) which does this and more behind the scenes for you. + +
+ +  + +## Docs + +Dotenv exposes four functions: + +* `config` +* `parse` +* `populate` + +### Config + +`config` will read your `.env` file, parse the contents, assign it to +[`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env), +and return an Object with a `parsed` key containing the loaded content or an `error` key if it failed. + +```js +const result = dotenv.config() + +if (result.error) { + throw result.error +} + +console.log(result.parsed) +``` + +You can additionally, pass options to `config`. + +#### Options + +##### path + +Default: `path.resolve(process.cwd(), '.env')` + +Specify a custom path if your file containing environment variables is located elsewhere. + +```js +require('dotenv').config({ path: '/custom/path/to/.env' }) +``` + +By default, `config` will look for a file called .env in the current working directory. + +Pass in multiple files as an array, and they will be parsed in order and combined with `process.env` (or `option.processEnv`, if set). The first value set for a variable will win, unless the `options.override` flag is set, in which case the last value set will win. If a value already exists in `process.env` and the `options.override` flag is NOT set, no changes will be made to that value. + +```js +require('dotenv').config({ path: ['.env.local', '.env'] }) +``` + +##### quiet + +Default: `false` + +Suppress runtime logging message. + +```js +// index.js +require('dotenv').config({ quiet: false }) // change to true to suppress +console.log(`Hello ${process.env.HELLO}`) +``` + +```ini +# .env +HELLO=World +``` + +```sh +$ node index.js +[dotenv@17.0.0] injecting env (1) from .env +Hello World +``` + +##### encoding + +Default: `utf8` + +Specify the encoding of your file containing environment variables. + +```js +require('dotenv').config({ encoding: 'latin1' }) +``` + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +require('dotenv').config({ debug: process.env.DEBUG }) +``` + +##### override + +Default: `false` + +Override any environment variables that have already been set on your machine with values from your .env file(s). If multiple files have been provided in `option.path` the override will also be used as each file is combined with the next. Without `override` being set, the first value wins. With `override` set the last value wins. + +```js +require('dotenv').config({ override: true }) +``` + +##### processEnv + +Default: `process.env` + +Specify an object to write your environment variables to. Defaults to `process.env` environment variables. + +```js +const myObject = {} +require('dotenv').config({ processEnv: myObject }) + +console.log(myObject) // values from .env +console.log(process.env) // this was not changed or written to +``` + +### Parse + +The engine which parses the contents of your file containing environment +variables is available to use. It accepts a String or Buffer and will return +an Object with the parsed keys and values. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('BASIC=basic') +const config = dotenv.parse(buf) // will return an object +console.log(typeof config, config) // object { BASIC : 'basic' } +``` + +#### Options + +##### debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being set as you expect. + +```js +const dotenv = require('dotenv') +const buf = Buffer.from('hello world') +const opt = { debug: true } +const config = dotenv.parse(buf, opt) +// expect a debug message because the buffer is not in KEY=VAL form +``` + +### Populate + +The engine which populates the contents of your .env file to `process.env` is available for use. It accepts a target, a source, and options. This is useful for power users who want to supply their own objects. + +For example, customizing the source: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'world' } + +dotenv.populate(process.env, parsed) + +console.log(process.env.HELLO) // world +``` + +For example, customizing the source AND target: + +```js +const dotenv = require('dotenv') +const parsed = { HELLO: 'universe' } +const target = { HELLO: 'world' } // empty object + +dotenv.populate(target, parsed, { override: true, debug: true }) + +console.log(target) // { HELLO: 'universe' } +``` + +#### options + +##### Debug + +Default: `false` + +Turn on logging to help debug why certain keys or values are not being populated as you expect. + +##### override + +Default: `false` + +Override any environment variables that have already been set. + +  + +## CHANGELOG + +See [CHANGELOG.md](CHANGELOG.md) + +  + +## Who's using dotenv? + +[These npm modules depend on it.](https://www.npmjs.com/browse/depended/dotenv) + +Projects that expand it often use the [keyword "dotenv" on npm](https://www.npmjs.com/search?q=keywords:dotenv). diff --git a/bff/node_modules/dotenv/SECURITY.md b/bff/node_modules/dotenv/SECURITY.md new file mode 100644 index 0000000..237a8ce --- /dev/null +++ b/bff/node_modules/dotenv/SECURITY.md @@ -0,0 +1 @@ +Please report any security vulnerabilities to security@dotenvx.com. diff --git a/bff/node_modules/dotenv/config.d.ts b/bff/node_modules/dotenv/config.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/bff/node_modules/dotenv/config.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/bff/node_modules/dotenv/config.js b/bff/node_modules/dotenv/config.js new file mode 100644 index 0000000..b0b5576 --- /dev/null +++ b/bff/node_modules/dotenv/config.js @@ -0,0 +1,9 @@ +(function () { + require('./lib/main').config( + Object.assign( + {}, + require('./lib/env-options'), + require('./lib/cli-options')(process.argv) + ) + ) +})() diff --git a/bff/node_modules/dotenv/lib/cli-options.js b/bff/node_modules/dotenv/lib/cli-options.js new file mode 100644 index 0000000..b6e40db --- /dev/null +++ b/bff/node_modules/dotenv/lib/cli-options.js @@ -0,0 +1,17 @@ +const re = /^dotenv_config_(encoding|path|quiet|debug|override|DOTENV_KEY)=(.+)$/ + +module.exports = function optionMatcher (args) { + const options = args.reduce(function (acc, cur) { + const matches = cur.match(re) + if (matches) { + acc[matches[1]] = matches[2] + } + return acc + }, {}) + + if (!('quiet' in options)) { + options.quiet = 'true' + } + + return options +} diff --git a/bff/node_modules/dotenv/lib/env-options.js b/bff/node_modules/dotenv/lib/env-options.js new file mode 100644 index 0000000..5dcee8a --- /dev/null +++ b/bff/node_modules/dotenv/lib/env-options.js @@ -0,0 +1,28 @@ +// ../config.js accepts options via environment variables +const options = {} + +if (process.env.DOTENV_CONFIG_ENCODING != null) { + options.encoding = process.env.DOTENV_CONFIG_ENCODING +} + +if (process.env.DOTENV_CONFIG_PATH != null) { + options.path = process.env.DOTENV_CONFIG_PATH +} + +if (process.env.DOTENV_CONFIG_QUIET != null) { + options.quiet = process.env.DOTENV_CONFIG_QUIET +} + +if (process.env.DOTENV_CONFIG_DEBUG != null) { + options.debug = process.env.DOTENV_CONFIG_DEBUG +} + +if (process.env.DOTENV_CONFIG_OVERRIDE != null) { + options.override = process.env.DOTENV_CONFIG_OVERRIDE +} + +if (process.env.DOTENV_CONFIG_DOTENV_KEY != null) { + options.DOTENV_KEY = process.env.DOTENV_CONFIG_DOTENV_KEY +} + +module.exports = options diff --git a/bff/node_modules/dotenv/lib/main.d.ts b/bff/node_modules/dotenv/lib/main.d.ts new file mode 100644 index 0000000..3e57f24 --- /dev/null +++ b/bff/node_modules/dotenv/lib/main.d.ts @@ -0,0 +1,179 @@ +// TypeScript Version: 3.0 +/// +import type { URL } from 'url'; + +export interface DotenvParseOutput { + [name: string]: string; +} + +export interface DotenvPopulateOutput { + [name: string]: string; +} + +/** + * Parses a string or buffer in the .env file format into an object. + * + * See https://dotenvx.com/docs + * + * @param src - contents to be parsed. example: `'DB_HOST=localhost'` + * @returns an object with keys and values based on `src`. example: `{ DB_HOST : 'localhost' }` + */ +export function parse( + src: string | Buffer +): T; + +export interface DotenvConfigOptions { + /** + * Default: `path.resolve(process.cwd(), '.env')` + * + * Specify a custom path if your file containing environment variables is located elsewhere. + * Can also be an array of strings, specifying multiple paths. + * + * example: `require('dotenv').config({ path: '/custom/path/to/.env' })` + * example: `require('dotenv').config({ path: ['/path/to/first.env', '/path/to/second.env'] })` + */ + path?: string | string[] | URL; + + /** + * Default: `utf8` + * + * Specify the encoding of your file containing environment variables. + * + * example: `require('dotenv').config({ encoding: 'latin1' })` + */ + encoding?: string; + + /** + * Default: `false` + * + * Suppress all output (except errors). + * + * example: `require('dotenv').config({ quiet: true })` + */ + quiet?: boolean; + + /** + * Default: `false` + * + * Turn on logging to help debug why certain keys or values are not being set as you expect. + * + * example: `require('dotenv').config({ debug: process.env.DEBUG })` + */ + debug?: boolean; + + /** + * Default: `false` + * + * Override any environment variables that have already been set on your machine with values from your .env file. + * + * example: `require('dotenv').config({ override: true })` + */ + override?: boolean; + + /** + * Default: `process.env` + * + * Specify an object to write your secrets to. Defaults to process.env environment variables. + * + * example: `const processEnv = {}; require('dotenv').config({ processEnv: processEnv })` + */ + processEnv?: DotenvPopulateInput; + + /** + * Default: `undefined` + * + * Pass the DOTENV_KEY directly to config options. Defaults to looking for process.env.DOTENV_KEY environment variable. Note this only applies to decrypting .env.vault files. If passed as null or undefined, or not passed at all, dotenv falls back to its traditional job of parsing a .env file. + * + * example: `require('dotenv').config({ DOTENV_KEY: 'dotenv://:key_1234…@dotenvx.com/vault/.env.vault?environment=production' })` + */ + DOTENV_KEY?: string; +} + +export interface DotenvConfigOutput { + error?: DotenvError; + parsed?: DotenvParseOutput; +} + +type DotenvError = Error & { + code: + | 'MISSING_DATA' + | 'INVALID_DOTENV_KEY' + | 'NOT_FOUND_DOTENV_ENVIRONMENT' + | 'DECRYPTION_FAILED' + | 'OBJECT_REQUIRED'; +} + +export interface DotenvPopulateOptions { + /** + * Default: `false` + * + * Turn on logging to help debug why certain keys or values are not being set as you expect. + * + * example: `require('dotenv').config({ debug: process.env.DEBUG })` + */ + debug?: boolean; + + /** + * Default: `false` + * + * Override any environment variables that have already been set on your machine with values from your .env file. + * + * example: `require('dotenv').config({ override: true })` + */ + override?: boolean; +} + +export interface DotenvPopulateInput { + [name: string]: string | undefined; +} + +/** + * Loads `.env` file contents into process.env by default. If `DOTENV_KEY` is present, it smartly attempts to load encrypted `.env.vault` file contents into process.env. + * + * See https://dotenvx.com/docs + * + * @param options - additional options. example: `{ path: './custom/path', encoding: 'latin1', quiet: false, debug: true, override: false }` + * @returns an object with a `parsed` key if successful or `error` key if an error occurred. example: { parsed: { KEY: 'value' } } + * + */ +export function config(options?: DotenvConfigOptions): DotenvConfigOutput; + +/** + * Loads `.env` file contents into process.env. + * + * See https://dotenvx.com/docs + * + * @param options - additional options. example: `{ path: './custom/path', encoding: 'latin1', quiet: false, debug: true, override: false }` + * @returns an object with a `parsed` key if successful or `error` key if an error occurred. example: { parsed: { KEY: 'value' } } + * + */ +export function configDotenv(options?: DotenvConfigOptions): DotenvConfigOutput; + +/** + * Loads `source` json contents into `target` like process.env. + * + * See https://dotenvx.com/docs + * + * @param processEnv - the target JSON object. in most cases use process.env but you can also pass your own JSON object + * @param parsed - the source JSON object + * @param options - additional options. example: `{ quiet: false, debug: true, override: false }` + * @returns an object with the keys and values that were actually set + * + */ +export function populate( + processEnv: DotenvPopulateInput, + parsed: DotenvPopulateInput, + options?: DotenvConfigOptions +): DotenvPopulateOutput; + +/** + * Decrypt ciphertext + * + * See https://dotenvx.com/docs + * + * @param encrypted - the encrypted ciphertext string + * @param keyStr - the decryption key string + * @returns {string} + * + */ +export function decrypt(encrypted: string, keyStr: string): string; diff --git a/bff/node_modules/dotenv/lib/main.js b/bff/node_modules/dotenv/lib/main.js new file mode 100644 index 0000000..967107c --- /dev/null +++ b/bff/node_modules/dotenv/lib/main.js @@ -0,0 +1,431 @@ +const fs = require('fs') +const path = require('path') +const os = require('os') +const crypto = require('crypto') +const packageJson = require('../package.json') + +const version = packageJson.version + +// Array of tips to display randomly +const TIPS = [ + '🔐 encrypt with Dotenvx: https://dotenvx.com', + '🔐 prevent committing .env to code: https://dotenvx.com/precommit', + '🔐 prevent building .env in docker: https://dotenvx.com/prebuild', + '🤖 agentic secret storage: https://dotenvx.com/as2', + '⚡️ secrets for agents: https://dotenvx.com/as2', + '🛡️ auth for agents: https://vestauth.com', + '🛠️ run anywhere with `dotenvx run -- yourcommand`', + '⚙️ specify custom .env file path with { path: \'/custom/path/.env\' }', + '⚙️ enable debug logging with { debug: true }', + '⚙️ override existing env vars with { override: true }', + '⚙️ suppress all logs with { quiet: true }', + '⚙️ write to custom object with { processEnv: myObject }', + '⚙️ load multiple .env files with { path: [\'.env.local\', \'.env\'] }' +] + +// Get a random tip from the tips array +function _getRandomTip () { + return TIPS[Math.floor(Math.random() * TIPS.length)] +} + +function parseBoolean (value) { + if (typeof value === 'string') { + return !['false', '0', 'no', 'off', ''].includes(value.toLowerCase()) + } + return Boolean(value) +} + +function supportsAnsi () { + return process.stdout.isTTY // && process.env.TERM !== 'dumb' +} + +function dim (text) { + return supportsAnsi() ? `\x1b[2m${text}\x1b[0m` : text +} + +const LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg + +// Parse src into an Object +function parse (src) { + const obj = {} + + // Convert buffer to string + let lines = src.toString() + + // Convert line breaks to same format + lines = lines.replace(/\r\n?/mg, '\n') + + let match + while ((match = LINE.exec(lines)) != null) { + const key = match[1] + + // Default undefined or null to empty string + let value = (match[2] || '') + + // Remove whitespace + value = value.trim() + + // Check if double quoted + const maybeQuote = value[0] + + // Remove surrounding quotes + value = value.replace(/^(['"`])([\s\S]*)\1$/mg, '$2') + + // Expand newlines if double quoted + if (maybeQuote === '"') { + value = value.replace(/\\n/g, '\n') + value = value.replace(/\\r/g, '\r') + } + + // Add to object + obj[key] = value + } + + return obj +} + +function _parseVault (options) { + options = options || {} + + const vaultPath = _vaultPath(options) + options.path = vaultPath // parse .env.vault + const result = DotenvModule.configDotenv(options) + if (!result.parsed) { + const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`) + err.code = 'MISSING_DATA' + throw err + } + + // handle scenario for comma separated keys - for use with key rotation + // example: DOTENV_KEY="dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod" + const keys = _dotenvKey(options).split(',') + const length = keys.length + + let decrypted + for (let i = 0; i < length; i++) { + try { + // Get full key + const key = keys[i].trim() + + // Get instructions for decrypt + const attrs = _instructions(result, key) + + // Decrypt + decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key) + + break + } catch (error) { + // last key + if (i + 1 >= length) { + throw error + } + // try next key + } + } + + // Parse decrypted .env string + return DotenvModule.parse(decrypted) +} + +function _warn (message) { + console.error(`[dotenv@${version}][WARN] ${message}`) +} + +function _debug (message) { + console.log(`[dotenv@${version}][DEBUG] ${message}`) +} + +function _log (message) { + console.log(`[dotenv@${version}] ${message}`) +} + +function _dotenvKey (options) { + // prioritize developer directly setting options.DOTENV_KEY + if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) { + return options.DOTENV_KEY + } + + // secondary infra already contains a DOTENV_KEY environment variable + if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) { + return process.env.DOTENV_KEY + } + + // fallback to empty string + return '' +} + +function _instructions (result, dotenvKey) { + // Parse DOTENV_KEY. Format is a URI + let uri + try { + uri = new URL(dotenvKey) + } catch (error) { + if (error.code === 'ERR_INVALID_URL') { + const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development') + err.code = 'INVALID_DOTENV_KEY' + throw err + } + + throw error + } + + // Get decrypt key + const key = uri.password + if (!key) { + const err = new Error('INVALID_DOTENV_KEY: Missing key part') + err.code = 'INVALID_DOTENV_KEY' + throw err + } + + // Get environment + const environment = uri.searchParams.get('environment') + if (!environment) { + const err = new Error('INVALID_DOTENV_KEY: Missing environment part') + err.code = 'INVALID_DOTENV_KEY' + throw err + } + + // Get ciphertext payload + const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}` + const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION + if (!ciphertext) { + const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`) + err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT' + throw err + } + + return { ciphertext, key } +} + +function _vaultPath (options) { + let possibleVaultPath = null + + if (options && options.path && options.path.length > 0) { + if (Array.isArray(options.path)) { + for (const filepath of options.path) { + if (fs.existsSync(filepath)) { + possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault` + } + } + } else { + possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault` + } + } else { + possibleVaultPath = path.resolve(process.cwd(), '.env.vault') + } + + if (fs.existsSync(possibleVaultPath)) { + return possibleVaultPath + } + + return null +} + +function _resolveHome (envPath) { + return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath +} + +function _configVault (options) { + const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || (options && options.debug)) + const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || (options && options.quiet)) + + if (debug || !quiet) { + _log('Loading env from encrypted .env.vault') + } + + const parsed = DotenvModule._parseVault(options) + + let processEnv = process.env + if (options && options.processEnv != null) { + processEnv = options.processEnv + } + + DotenvModule.populate(processEnv, parsed, options) + + return { parsed } +} + +function configDotenv (options) { + const dotenvPath = path.resolve(process.cwd(), '.env') + let encoding = 'utf8' + let processEnv = process.env + if (options && options.processEnv != null) { + processEnv = options.processEnv + } + let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || (options && options.debug)) + let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || (options && options.quiet)) + + if (options && options.encoding) { + encoding = options.encoding + } else { + if (debug) { + _debug('No encoding is specified. UTF-8 is used by default') + } + } + + let optionPaths = [dotenvPath] // default, look for .env + if (options && options.path) { + if (!Array.isArray(options.path)) { + optionPaths = [_resolveHome(options.path)] + } else { + optionPaths = [] // reset default + for (const filepath of options.path) { + optionPaths.push(_resolveHome(filepath)) + } + } + } + + // Build the parsed data in a temporary object (because we need to return it). Once we have the final + // parsed data, we will combine it with process.env (or options.processEnv if provided). + let lastError + const parsedAll = {} + for (const path of optionPaths) { + try { + // Specifying an encoding returns a string instead of a buffer + const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding })) + + DotenvModule.populate(parsedAll, parsed, options) + } catch (e) { + if (debug) { + _debug(`Failed to load ${path} ${e.message}`) + } + lastError = e + } + } + + const populated = DotenvModule.populate(processEnv, parsedAll, options) + + // handle user settings DOTENV_CONFIG_ options inside .env file(s) + debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug) + quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet) + + if (debug || !quiet) { + const keysCount = Object.keys(populated).length + const shortPaths = [] + for (const filePath of optionPaths) { + try { + const relative = path.relative(process.cwd(), filePath) + shortPaths.push(relative) + } catch (e) { + if (debug) { + _debug(`Failed to load ${filePath} ${e.message}`) + } + lastError = e + } + } + + _log(`injecting env (${keysCount}) from ${shortPaths.join(',')} ${dim(`-- tip: ${_getRandomTip()}`)}`) + } + + if (lastError) { + return { parsed: parsedAll, error: lastError } + } else { + return { parsed: parsedAll } + } +} + +// Populates process.env from .env file +function config (options) { + // fallback to original dotenv if DOTENV_KEY is not set + if (_dotenvKey(options).length === 0) { + return DotenvModule.configDotenv(options) + } + + const vaultPath = _vaultPath(options) + + // dotenvKey exists but .env.vault file does not exist + if (!vaultPath) { + _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`) + + return DotenvModule.configDotenv(options) + } + + return DotenvModule._configVault(options) +} + +function decrypt (encrypted, keyStr) { + const key = Buffer.from(keyStr.slice(-64), 'hex') + let ciphertext = Buffer.from(encrypted, 'base64') + + const nonce = ciphertext.subarray(0, 12) + const authTag = ciphertext.subarray(-16) + ciphertext = ciphertext.subarray(12, -16) + + try { + const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce) + aesgcm.setAuthTag(authTag) + return `${aesgcm.update(ciphertext)}${aesgcm.final()}` + } catch (error) { + const isRange = error instanceof RangeError + const invalidKeyLength = error.message === 'Invalid key length' + const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data' + + if (isRange || invalidKeyLength) { + const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)') + err.code = 'INVALID_DOTENV_KEY' + throw err + } else if (decryptionFailed) { + const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY') + err.code = 'DECRYPTION_FAILED' + throw err + } else { + throw error + } + } +} + +// Populate process.env with parsed values +function populate (processEnv, parsed, options = {}) { + const debug = Boolean(options && options.debug) + const override = Boolean(options && options.override) + const populated = {} + + if (typeof parsed !== 'object') { + const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate') + err.code = 'OBJECT_REQUIRED' + throw err + } + + // Set process.env + for (const key of Object.keys(parsed)) { + if (Object.prototype.hasOwnProperty.call(processEnv, key)) { + if (override === true) { + processEnv[key] = parsed[key] + populated[key] = parsed[key] + } + + if (debug) { + if (override === true) { + _debug(`"${key}" is already defined and WAS overwritten`) + } else { + _debug(`"${key}" is already defined and was NOT overwritten`) + } + } + } else { + processEnv[key] = parsed[key] + populated[key] = parsed[key] + } + } + + return populated +} + +const DotenvModule = { + configDotenv, + _configVault, + _parseVault, + config, + decrypt, + parse, + populate +} + +module.exports.configDotenv = DotenvModule.configDotenv +module.exports._configVault = DotenvModule._configVault +module.exports._parseVault = DotenvModule._parseVault +module.exports.config = DotenvModule.config +module.exports.decrypt = DotenvModule.decrypt +module.exports.parse = DotenvModule.parse +module.exports.populate = DotenvModule.populate + +module.exports = DotenvModule diff --git a/bff/node_modules/dotenv/package.json b/bff/node_modules/dotenv/package.json new file mode 100644 index 0000000..209912e --- /dev/null +++ b/bff/node_modules/dotenv/package.json @@ -0,0 +1,62 @@ +{ + "name": "dotenv", + "version": "17.3.1", + "description": "Loads environment variables from .env file", + "main": "lib/main.js", + "types": "lib/main.d.ts", + "exports": { + ".": { + "types": "./lib/main.d.ts", + "require": "./lib/main.js", + "default": "./lib/main.js" + }, + "./config": "./config.js", + "./config.js": "./config.js", + "./lib/env-options": "./lib/env-options.js", + "./lib/env-options.js": "./lib/env-options.js", + "./lib/cli-options": "./lib/cli-options.js", + "./lib/cli-options.js": "./lib/cli-options.js", + "./package.json": "./package.json" + }, + "scripts": { + "dts-check": "tsc --project tests/types/tsconfig.json", + "lint": "standard", + "pretest": "npm run lint && npm run dts-check", + "test": "tap run tests/**/*.js --allow-empty-coverage --disable-coverage --timeout=60000", + "test:coverage": "tap run tests/**/*.js --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov", + "prerelease": "npm test", + "release": "standard-version" + }, + "repository": { + "type": "git", + "url": "git://github.com/motdotla/dotenv.git" + }, + "homepage": "https://github.com/motdotla/dotenv#readme", + "funding": "https://dotenvx.com", + "keywords": [ + "dotenv", + "env", + ".env", + "environment", + "variables", + "config", + "settings" + ], + "readmeFilename": "README.md", + "license": "BSD-2-Clause", + "devDependencies": { + "@types/node": "^18.11.3", + "decache": "^4.6.2", + "sinon": "^14.0.1", + "standard": "^17.0.0", + "standard-version": "^9.5.0", + "tap": "^19.2.0", + "typescript": "^4.8.4" + }, + "engines": { + "node": ">=12" + }, + "browser": { + "fs": false + } +} diff --git a/bff/node_modules/dunder-proto/.eslintrc b/bff/node_modules/dunder-proto/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/bff/node_modules/dunder-proto/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/bff/node_modules/dunder-proto/.github/FUNDING.yml b/bff/node_modules/dunder-proto/.github/FUNDING.yml new file mode 100644 index 0000000..8a1d7b0 --- /dev/null +++ b/bff/node_modules/dunder-proto/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/dunder-proto +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/dunder-proto/.nycrc b/bff/node_modules/dunder-proto/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/bff/node_modules/dunder-proto/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/dunder-proto/CHANGELOG.md b/bff/node_modules/dunder-proto/CHANGELOG.md new file mode 100644 index 0000000..9b8b2f8 --- /dev/null +++ b/bff/node_modules/dunder-proto/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/es-shims/dunder-proto/compare/v1.0.0...v1.0.1) - 2024-12-16 + +### Commits + +- [Fix] do not crash when `--disable-proto=throw` [`6c367d9`](https://github.com/es-shims/dunder-proto/commit/6c367d919bc1604778689a297bbdbfea65752847) +- [Tests] ensure noproto tests only use the current version of dunder-proto [`b02365b`](https://github.com/es-shims/dunder-proto/commit/b02365b9cf889c4a2cac7be0c3cfc90a789af36c) +- [Dev Deps] update `@arethetypeswrong/cli`, `@types/tape` [`e3c5c3b`](https://github.com/es-shims/dunder-proto/commit/e3c5c3bd81cf8cef7dff2eca19e558f0e307f666) +- [Deps] update `call-bind-apply-helpers` [`19f1da0`](https://github.com/es-shims/dunder-proto/commit/19f1da028b8dd0d05c85bfd8f7eed2819b686450) + +## v1.0.0 - 2024-12-06 + +### Commits + +- Initial implementation, tests, readme, types [`a5b74b0`](https://github.com/es-shims/dunder-proto/commit/a5b74b0082f5270cb0905cd9a2e533cee7498373) +- Initial commit [`73fb5a3`](https://github.com/es-shims/dunder-proto/commit/73fb5a353b51ac2ab00c9fdeb0114daffd4c07a8) +- npm init [`80152dc`](https://github.com/es-shims/dunder-proto/commit/80152dc98155da4eb046d9f67a87ed96e8280a1d) +- Only apps should have lockfiles [`03e6660`](https://github.com/es-shims/dunder-proto/commit/03e6660a1d70dc401f3e217a031475ec537243dd) diff --git a/bff/node_modules/dunder-proto/LICENSE b/bff/node_modules/dunder-proto/LICENSE new file mode 100644 index 0000000..34995e7 --- /dev/null +++ b/bff/node_modules/dunder-proto/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/dunder-proto/README.md b/bff/node_modules/dunder-proto/README.md new file mode 100644 index 0000000..44b80a2 --- /dev/null +++ b/bff/node_modules/dunder-proto/README.md @@ -0,0 +1,54 @@ +# dunder-proto [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +If available, the `Object.prototype.__proto__` accessor and mutator, call-bound. + +## Getting started + +```sh +npm install --save dunder-proto +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getDunder = require('dunder-proto/get'); +const setDunder = require('dunder-proto/set'); + +const obj = {}; + +assert.equal('toString' in obj, true); +assert.equal(getDunder(obj), Object.prototype); + +setDunder(obj, null); + +assert.equal('toString' in obj, false); +assert.equal(getDunder(obj), null); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/dunder-proto +[npm-version-svg]: https://versionbadg.es/es-shims/dunder-proto.svg +[deps-svg]: https://david-dm.org/es-shims/dunder-proto.svg +[deps-url]: https://david-dm.org/es-shims/dunder-proto +[dev-deps-svg]: https://david-dm.org/es-shims/dunder-proto/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/dunder-proto#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/dunder-proto.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/dunder-proto.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/dunder-proto.svg +[downloads-url]: https://npm-stat.com/charts.html?package=dunder-proto +[codecov-image]: https://codecov.io/gh/es-shims/dunder-proto/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/dunder-proto/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/dunder-proto +[actions-url]: https://github.com/es-shims/dunder-proto/actions diff --git a/bff/node_modules/dunder-proto/get.d.ts b/bff/node_modules/dunder-proto/get.d.ts new file mode 100644 index 0000000..c7e14d2 --- /dev/null +++ b/bff/node_modules/dunder-proto/get.d.ts @@ -0,0 +1,5 @@ +declare function getDunderProto(target: {}): object | null; + +declare const x: false | typeof getDunderProto; + +export = x; \ No newline at end of file diff --git a/bff/node_modules/dunder-proto/get.js b/bff/node_modules/dunder-proto/get.js new file mode 100644 index 0000000..45093df --- /dev/null +++ b/bff/node_modules/dunder-proto/get.js @@ -0,0 +1,30 @@ +'use strict'; + +var callBind = require('call-bind-apply-helpers'); +var gOPD = require('gopd'); + +var hasProtoAccessor; +try { + // eslint-disable-next-line no-extra-parens, no-proto + hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype; +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +// eslint-disable-next-line no-extra-parens +var desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +var $Object = Object; +var $getPrototypeOf = $Object.getPrototypeOf; + +/** @type {import('./get')} */ +module.exports = desc && typeof desc.get === 'function' + ? callBind([desc.get]) + : typeof $getPrototypeOf === 'function' + ? /** @type {import('./get')} */ function getDunder(value) { + // eslint-disable-next-line eqeqeq + return $getPrototypeOf(value == null ? value : $Object(value)); + } + : false; diff --git a/bff/node_modules/dunder-proto/package.json b/bff/node_modules/dunder-proto/package.json new file mode 100644 index 0000000..04a4036 --- /dev/null +++ b/bff/node_modules/dunder-proto/package.json @@ -0,0 +1,76 @@ +{ + "name": "dunder-proto", + "version": "1.0.1", + "description": "If available, the `Object.prototype.__proto__` accessor and mutator, call-bound", + "main": false, + "exports": { + "./get": "./get.js", + "./set": "./set.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/dunder-proto.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/dunder-proto/issues" + }, + "homepage": "https://github.com/es-shims/dunder-proto#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/tape": "^5.7.0", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "test/index.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/dunder-proto/set.d.ts b/bff/node_modules/dunder-proto/set.d.ts new file mode 100644 index 0000000..16bfdfe --- /dev/null +++ b/bff/node_modules/dunder-proto/set.d.ts @@ -0,0 +1,5 @@ +declare function setDunderProto

(target: {}, proto: P): P; + +declare const x: false | typeof setDunderProto; + +export = x; \ No newline at end of file diff --git a/bff/node_modules/dunder-proto/set.js b/bff/node_modules/dunder-proto/set.js new file mode 100644 index 0000000..6085b6e --- /dev/null +++ b/bff/node_modules/dunder-proto/set.js @@ -0,0 +1,35 @@ +'use strict'; + +var callBind = require('call-bind-apply-helpers'); +var gOPD = require('gopd'); +var $TypeError = require('es-errors/type'); + +/** @type {{ __proto__?: object | null }} */ +var obj = {}; +try { + obj.__proto__ = null; // eslint-disable-line no-proto +} catch (e) { + if (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') { + throw e; + } +} + +var hasProtoMutator = !('toString' in obj); + +// eslint-disable-next-line no-extra-parens +var desc = gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__')); + +/** @type {import('./set')} */ +module.exports = hasProtoMutator && ( +// eslint-disable-next-line no-extra-parens + (!!desc && typeof desc.set === 'function' && /** @type {import('./set')} */ (callBind([desc.set]))) + || /** @type {import('./set')} */ function setDunder(object, proto) { + // this is node v0.10 or older, which doesn't have Object.setPrototypeOf and has undeniable __proto__ + if (object == null) { // eslint-disable-line eqeqeq + throw new $TypeError('set Object.prototype.__proto__ called on null or undefined'); + } + // eslint-disable-next-line no-proto, no-param-reassign, no-extra-parens + /** @type {{ __proto__?: object | null }} */ (object).__proto__ = proto; + return proto; + } +); diff --git a/bff/node_modules/dunder-proto/test/get.js b/bff/node_modules/dunder-proto/test/get.js new file mode 100644 index 0000000..253f183 --- /dev/null +++ b/bff/node_modules/dunder-proto/test/get.js @@ -0,0 +1,34 @@ +'use strict'; + +var test = require('tape'); + +var getDunderProto = require('../get'); + +test('getDunderProto', { skip: !getDunderProto }, function (t) { + if (!getDunderProto) { + throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal + } + + // @ts-expect-error + t['throws'](function () { getDunderProto(); }, TypeError, 'throws if no argument'); + // @ts-expect-error + t['throws'](function () { getDunderProto(undefined); }, TypeError, 'throws with undefined'); + // @ts-expect-error + t['throws'](function () { getDunderProto(null); }, TypeError, 'throws with null'); + + t.equal(getDunderProto({}), Object.prototype); + t.equal(getDunderProto([]), Array.prototype); + t.equal(getDunderProto(function () {}), Function.prototype); + t.equal(getDunderProto(/./g), RegExp.prototype); + t.equal(getDunderProto(42), Number.prototype); + t.equal(getDunderProto(true), Boolean.prototype); + t.equal(getDunderProto('foo'), String.prototype); + + t.end(); +}); + +test('no dunder proto', { skip: !!getDunderProto }, function (t) { + t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype'); + + t.end(); +}); diff --git a/bff/node_modules/dunder-proto/test/index.js b/bff/node_modules/dunder-proto/test/index.js new file mode 100644 index 0000000..08ff36f --- /dev/null +++ b/bff/node_modules/dunder-proto/test/index.js @@ -0,0 +1,4 @@ +'use strict'; + +require('./get'); +require('./set'); diff --git a/bff/node_modules/dunder-proto/test/set.js b/bff/node_modules/dunder-proto/test/set.js new file mode 100644 index 0000000..c3bfe4d --- /dev/null +++ b/bff/node_modules/dunder-proto/test/set.js @@ -0,0 +1,50 @@ +'use strict'; + +var test = require('tape'); + +var setDunderProto = require('../set'); + +test('setDunderProto', { skip: !setDunderProto }, function (t) { + if (!setDunderProto) { + throw 'should never happen; this is just for type narrowing'; // eslint-disable-line no-throw-literal + } + + // @ts-expect-error + t['throws'](function () { setDunderProto(); }, TypeError, 'throws if no arguments'); + // @ts-expect-error + t['throws'](function () { setDunderProto(undefined); }, TypeError, 'throws with undefined and nothing'); + // @ts-expect-error + t['throws'](function () { setDunderProto(undefined, undefined); }, TypeError, 'throws with undefined and undefined'); + // @ts-expect-error + t['throws'](function () { setDunderProto(null); }, TypeError, 'throws with null and undefined'); + // @ts-expect-error + t['throws'](function () { setDunderProto(null, undefined); }, TypeError, 'throws with null and undefined'); + + /** @type {{ inherited?: boolean }} */ + var obj = {}; + t.ok('toString' in obj, 'object initially has toString'); + + setDunderProto(obj, null); + t.notOk('toString' in obj, 'object no longer has toString'); + + t.notOk('inherited' in obj, 'object lacks inherited property'); + setDunderProto(obj, { inherited: true }); + t.equal(obj.inherited, true, 'object has inherited property'); + + t.end(); +}); + +test('no dunder proto', { skip: !!setDunderProto }, function (t) { + if ('__proto__' in Object.prototype) { + t['throws']( + // @ts-expect-error + function () { ({}).__proto__ = null; }, // eslint-disable-line no-proto + Error, + 'throws when setting Object.prototype.__proto__' + ); + } else { + t.notOk('__proto__' in Object.prototype, 'no __proto__ in Object.prototype'); + } + + t.end(); +}); diff --git a/bff/node_modules/dunder-proto/tsconfig.json b/bff/node_modules/dunder-proto/tsconfig.json new file mode 100644 index 0000000..dabbe23 --- /dev/null +++ b/bff/node_modules/dunder-proto/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ES2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/ecdsa-sig-formatter/CODEOWNERS b/bff/node_modules/ecdsa-sig-formatter/CODEOWNERS new file mode 100644 index 0000000..4451d3d --- /dev/null +++ b/bff/node_modules/ecdsa-sig-formatter/CODEOWNERS @@ -0,0 +1 @@ +* @omsmith diff --git a/bff/node_modules/ecdsa-sig-formatter/LICENSE b/bff/node_modules/ecdsa-sig-formatter/LICENSE new file mode 100644 index 0000000..8754ed6 --- /dev/null +++ b/bff/node_modules/ecdsa-sig-formatter/LICENSE @@ -0,0 +1,201 @@ +Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2015 D2L Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/bff/node_modules/ecdsa-sig-formatter/README.md b/bff/node_modules/ecdsa-sig-formatter/README.md new file mode 100644 index 0000000..daa95d6 --- /dev/null +++ b/bff/node_modules/ecdsa-sig-formatter/README.md @@ -0,0 +1,65 @@ +# ecdsa-sig-formatter + +[![Build Status](https://travis-ci.org/Brightspace/node-ecdsa-sig-formatter.svg?branch=master)](https://travis-ci.org/Brightspace/node-ecdsa-sig-formatter) [![Coverage Status](https://coveralls.io/repos/Brightspace/node-ecdsa-sig-formatter/badge.svg)](https://coveralls.io/r/Brightspace/node-ecdsa-sig-formatter) + +Translate between JOSE and ASN.1/DER encodings for ECDSA signatures + +## Install +```sh +npm install ecdsa-sig-formatter --save +``` + +## Usage +```js +var format = require('ecdsa-sig-formatter'); + +var derSignature = '..'; // asn.1/DER encoded ecdsa signature + +var joseSignature = format.derToJose(derSignature); + +``` + +### API + +--- + +#### `.derToJose(Buffer|String signature, String alg)` -> `String` + +Convert the ASN.1/DER encoded signature to a JOSE-style concatenated signature. +Returns a _base64 url_ encoded `String`. + +* If _signature_ is a `String`, it should be _base64_ encoded +* _alg_ must be one of _ES256_, _ES384_ or _ES512_ + +--- + +#### `.joseToDer(Buffer|String signature, String alg)` -> `Buffer` + +Convert the JOSE-style concatenated signature to an ASN.1/DER encoded +signature. Returns a `Buffer` + +* If _signature_ is a `String`, it should be _base64 url_ encoded +* _alg_ must be one of _ES256_, _ES384_ or _ES512_ + +## Contributing + +1. **Fork** the repository. Committing directly against this repository is + highly discouraged. + +2. Make your modifications in a branch, updating and writing new unit tests + as necessary in the `spec` directory. + +3. Ensure that all tests pass with `npm test` + +4. `rebase` your changes against master. *Do not merge*. + +5. Submit a pull request to this repository. Wait for tests to run and someone + to chime in. + +### Code Style + +This repository is configured with [EditorConfig][EditorConfig] and +[ESLint][ESLint] rules. + +[EditorConfig]: http://editorconfig.org/ +[ESLint]: http://eslint.org diff --git a/bff/node_modules/ecdsa-sig-formatter/package.json b/bff/node_modules/ecdsa-sig-formatter/package.json new file mode 100644 index 0000000..6fb5ebf --- /dev/null +++ b/bff/node_modules/ecdsa-sig-formatter/package.json @@ -0,0 +1,46 @@ +{ + "name": "ecdsa-sig-formatter", + "version": "1.0.11", + "description": "Translate ECDSA signatures between ASN.1/DER and JOSE-style concatenation", + "main": "src/ecdsa-sig-formatter.js", + "scripts": { + "check-style": "eslint .", + "pretest": "npm run check-style", + "test": "istanbul cover --root src _mocha -- spec", + "report-cov": "cat ./coverage/lcov.info | coveralls" + }, + "typings": "./src/ecdsa-sig-formatter.d.ts", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/Brightspace/node-ecdsa-sig-formatter.git" + }, + "keywords": [ + "ecdsa", + "der", + "asn.1", + "jwt", + "jwa", + "jsonwebtoken", + "jose" + ], + "author": "D2L Corporation", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/Brightspace/node-ecdsa-sig-formatter/issues" + }, + "homepage": "https://github.com/Brightspace/node-ecdsa-sig-formatter#readme", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "devDependencies": { + "bench": "^0.3.6", + "chai": "^3.5.0", + "coveralls": "^2.11.9", + "eslint": "^2.12.0", + "eslint-config-brightspace": "^0.2.1", + "istanbul": "^0.4.3", + "jwk-to-pem": "^1.2.5", + "mocha": "^2.5.3", + "native-crypto": "^1.7.0" + } +} diff --git a/bff/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts b/bff/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts new file mode 100644 index 0000000..9693aa0 --- /dev/null +++ b/bff/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts @@ -0,0 +1,17 @@ +/// + +declare module "ecdsa-sig-formatter" { + /** + * Convert the ASN.1/DER encoded signature to a JOSE-style concatenated signature. Returns a base64 url encoded String. + * If signature is a String, it should be base64 encoded + * alg must be one of ES256, ES384 or ES512 + */ + export function derToJose(signature: Buffer | string, alg: string): string; + + /** + * Convert the JOSE-style concatenated signature to an ASN.1/DER encoded signature. Returns a Buffer + * If signature is a String, it should be base64 url encoded + * alg must be one of ES256, ES384 or ES512 + */ + export function joseToDer(signature: Buffer | string, alg: string): Buffer +} diff --git a/bff/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js b/bff/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js new file mode 100644 index 0000000..38eeb9b --- /dev/null +++ b/bff/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js @@ -0,0 +1,187 @@ +'use strict'; + +var Buffer = require('safe-buffer').Buffer; + +var getParamBytesForAlg = require('./param-bytes-for-alg'); + +var MAX_OCTET = 0x80, + CLASS_UNIVERSAL = 0, + PRIMITIVE_BIT = 0x20, + TAG_SEQ = 0x10, + TAG_INT = 0x02, + ENCODED_TAG_SEQ = (TAG_SEQ | PRIMITIVE_BIT) | (CLASS_UNIVERSAL << 6), + ENCODED_TAG_INT = TAG_INT | (CLASS_UNIVERSAL << 6); + +function base64Url(base64) { + return base64 + .replace(/=/g, '') + .replace(/\+/g, '-') + .replace(/\//g, '_'); +} + +function signatureAsBuffer(signature) { + if (Buffer.isBuffer(signature)) { + return signature; + } else if ('string' === typeof signature) { + return Buffer.from(signature, 'base64'); + } + + throw new TypeError('ECDSA signature must be a Base64 string or a Buffer'); +} + +function derToJose(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + + // the DER encoded param should at most be the param size, plus a padding + // zero, since due to being a signed integer + var maxEncodedParamLength = paramBytes + 1; + + var inputLength = signature.length; + + var offset = 0; + if (signature[offset++] !== ENCODED_TAG_SEQ) { + throw new Error('Could not find expected "seq"'); + } + + var seqLength = signature[offset++]; + if (seqLength === (MAX_OCTET | 1)) { + seqLength = signature[offset++]; + } + + if (inputLength - offset < seqLength) { + throw new Error('"seq" specified length of "' + seqLength + '", only "' + (inputLength - offset) + '" remaining'); + } + + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "r"'); + } + + var rLength = signature[offset++]; + + if (inputLength - offset - 2 < rLength) { + throw new Error('"r" specified length of "' + rLength + '", only "' + (inputLength - offset - 2) + '" available'); + } + + if (maxEncodedParamLength < rLength) { + throw new Error('"r" specified length of "' + rLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + + var rOffset = offset; + offset += rLength; + + if (signature[offset++] !== ENCODED_TAG_INT) { + throw new Error('Could not find expected "int" for "s"'); + } + + var sLength = signature[offset++]; + + if (inputLength - offset !== sLength) { + throw new Error('"s" specified length of "' + sLength + '", expected "' + (inputLength - offset) + '"'); + } + + if (maxEncodedParamLength < sLength) { + throw new Error('"s" specified length of "' + sLength + '", max of "' + maxEncodedParamLength + '" is acceptable'); + } + + var sOffset = offset; + offset += sLength; + + if (offset !== inputLength) { + throw new Error('Expected to consume entire buffer, but "' + (inputLength - offset) + '" bytes remain'); + } + + var rPadding = paramBytes - rLength, + sPadding = paramBytes - sLength; + + var dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength); + + for (offset = 0; offset < rPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength); + + offset = paramBytes; + + for (var o = offset; offset < o + sPadding; ++offset) { + dst[offset] = 0; + } + signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength); + + dst = dst.toString('base64'); + dst = base64Url(dst); + + return dst; +} + +function countPadding(buf, start, stop) { + var padding = 0; + while (start + padding < stop && buf[start + padding] === 0) { + ++padding; + } + + var needsSign = buf[start + padding] >= MAX_OCTET; + if (needsSign) { + --padding; + } + + return padding; +} + +function joseToDer(signature, alg) { + signature = signatureAsBuffer(signature); + var paramBytes = getParamBytesForAlg(alg); + + var signatureBytes = signature.length; + if (signatureBytes !== paramBytes * 2) { + throw new TypeError('"' + alg + '" signatures must be "' + paramBytes * 2 + '" bytes, saw "' + signatureBytes + '"'); + } + + var rPadding = countPadding(signature, 0, paramBytes); + var sPadding = countPadding(signature, paramBytes, signature.length); + var rLength = paramBytes - rPadding; + var sLength = paramBytes - sPadding; + + var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength; + + var shortLength = rsBytes < MAX_OCTET; + + var dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes); + + var offset = 0; + dst[offset++] = ENCODED_TAG_SEQ; + if (shortLength) { + // Bit 8 has value "0" + // bits 7-1 give the length. + dst[offset++] = rsBytes; + } else { + // Bit 8 of first octet has value "1" + // bits 7-1 give the number of additional length octets. + dst[offset++] = MAX_OCTET | 1; + // length, base 256 + dst[offset++] = rsBytes & 0xff; + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = rLength; + if (rPadding < 0) { + dst[offset++] = 0; + offset += signature.copy(dst, offset, 0, paramBytes); + } else { + offset += signature.copy(dst, offset, rPadding, paramBytes); + } + dst[offset++] = ENCODED_TAG_INT; + dst[offset++] = sLength; + if (sPadding < 0) { + dst[offset++] = 0; + signature.copy(dst, offset, paramBytes); + } else { + signature.copy(dst, offset, paramBytes + sPadding); + } + + return dst; +} + +module.exports = { + derToJose: derToJose, + joseToDer: joseToDer +}; diff --git a/bff/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js b/bff/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js new file mode 100644 index 0000000..9fe67ac --- /dev/null +++ b/bff/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js @@ -0,0 +1,23 @@ +'use strict'; + +function getParamSize(keySize) { + var result = ((keySize / 8) | 0) + (keySize % 8 === 0 ? 0 : 1); + return result; +} + +var paramBytesForAlg = { + ES256: getParamSize(256), + ES384: getParamSize(384), + ES512: getParamSize(521) +}; + +function getParamBytesForAlg(alg) { + var paramBytes = paramBytesForAlg[alg]; + if (paramBytes) { + return paramBytes; + } + + throw new Error('Unknown algorithm "' + alg + '"'); +} + +module.exports = getParamBytesForAlg; diff --git a/bff/node_modules/ee-first/LICENSE b/bff/node_modules/ee-first/LICENSE new file mode 100644 index 0000000..a7ae8ee --- /dev/null +++ b/bff/node_modules/ee-first/LICENSE @@ -0,0 +1,22 @@ + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/ee-first/README.md b/bff/node_modules/ee-first/README.md new file mode 100644 index 0000000..cbd2478 --- /dev/null +++ b/bff/node_modules/ee-first/README.md @@ -0,0 +1,80 @@ +# EE First + +[![NPM version][npm-image]][npm-url] +[![Build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] +[![Gittip][gittip-image]][gittip-url] + +Get the first event in a set of event emitters and event pairs, +then clean up after itself. + +## Install + +```sh +$ npm install ee-first +``` + +## API + +```js +var first = require('ee-first') +``` + +### first(arr, listener) + +Invoke `listener` on the first event from the list specified in `arr`. `arr` is +an array of arrays, with each array in the format `[ee, ...event]`. `listener` +will be called only once, the first time any of the given events are emitted. If +`error` is one of the listened events, then if that fires first, the `listener` +will be given the `err` argument. + +The `listener` is invoked as `listener(err, ee, event, args)`, where `err` is the +first argument emitted from an `error` event, if applicable; `ee` is the event +emitter that fired; `event` is the string event name that fired; and `args` is an +array of the arguments that were emitted on the event. + +```js +var ee1 = new EventEmitter() +var ee2 = new EventEmitter() + +first([ + [ee1, 'close', 'end', 'error'], + [ee2, 'error'] +], function (err, ee, event, args) { + // listener invoked +}) +``` + +#### .cancel() + +The group of listeners can be cancelled before being invoked and have all the event +listeners removed from the underlying event emitters. + +```js +var thunk = first([ + [ee1, 'close', 'end', 'error'], + [ee2, 'error'] +], function (err, ee, event, args) { + // listener invoked +}) + +// cancel and clean up +thunk.cancel() +``` + +[npm-image]: https://img.shields.io/npm/v/ee-first.svg?style=flat-square +[npm-url]: https://npmjs.org/package/ee-first +[github-tag]: http://img.shields.io/github/tag/jonathanong/ee-first.svg?style=flat-square +[github-url]: https://github.com/jonathanong/ee-first/tags +[travis-image]: https://img.shields.io/travis/jonathanong/ee-first.svg?style=flat-square +[travis-url]: https://travis-ci.org/jonathanong/ee-first +[coveralls-image]: https://img.shields.io/coveralls/jonathanong/ee-first.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/jonathanong/ee-first?branch=master +[license-image]: http://img.shields.io/npm/l/ee-first.svg?style=flat-square +[license-url]: LICENSE.md +[downloads-image]: http://img.shields.io/npm/dm/ee-first.svg?style=flat-square +[downloads-url]: https://npmjs.org/package/ee-first +[gittip-image]: https://img.shields.io/gittip/jonathanong.svg?style=flat-square +[gittip-url]: https://www.gittip.com/jonathanong/ diff --git a/bff/node_modules/ee-first/index.js b/bff/node_modules/ee-first/index.js new file mode 100644 index 0000000..501287c --- /dev/null +++ b/bff/node_modules/ee-first/index.js @@ -0,0 +1,95 @@ +/*! + * ee-first + * Copyright(c) 2014 Jonathan Ong + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = first + +/** + * Get the first event in a set of event emitters and event pairs. + * + * @param {array} stuff + * @param {function} done + * @public + */ + +function first(stuff, done) { + if (!Array.isArray(stuff)) + throw new TypeError('arg must be an array of [ee, events...] arrays') + + var cleanups = [] + + for (var i = 0; i < stuff.length; i++) { + var arr = stuff[i] + + if (!Array.isArray(arr) || arr.length < 2) + throw new TypeError('each array member must be [ee, events...]') + + var ee = arr[0] + + for (var j = 1; j < arr.length; j++) { + var event = arr[j] + var fn = listener(event, callback) + + // listen to the event + ee.on(event, fn) + // push this listener to the list of cleanups + cleanups.push({ + ee: ee, + event: event, + fn: fn, + }) + } + } + + function callback() { + cleanup() + done.apply(null, arguments) + } + + function cleanup() { + var x + for (var i = 0; i < cleanups.length; i++) { + x = cleanups[i] + x.ee.removeListener(x.event, x.fn) + } + } + + function thunk(fn) { + done = fn + } + + thunk.cancel = cleanup + + return thunk +} + +/** + * Create the event listener. + * @private + */ + +function listener(event, done) { + return function onevent(arg1) { + var args = new Array(arguments.length) + var ee = this + var err = event === 'error' + ? arg1 + : null + + // copy args to prevent arguments escaping scope + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + + done(err, ee, event, args) + } +} diff --git a/bff/node_modules/ee-first/package.json b/bff/node_modules/ee-first/package.json new file mode 100644 index 0000000..b6d0b7d --- /dev/null +++ b/bff/node_modules/ee-first/package.json @@ -0,0 +1,29 @@ +{ + "name": "ee-first", + "description": "return the first event in a set of ee/event pairs", + "version": "1.1.1", + "author": { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com", + "twitter": "https://twitter.com/jongleberry" + }, + "contributors": [ + "Douglas Christopher Wilson " + ], + "license": "MIT", + "repository": "jonathanong/ee-first", + "devDependencies": { + "istanbul": "0.3.9", + "mocha": "2.2.5" + }, + "files": [ + "index.js", + "LICENSE" + ], + "scripts": { + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + } +} diff --git a/bff/node_modules/encodeurl/LICENSE b/bff/node_modules/encodeurl/LICENSE new file mode 100644 index 0000000..8812229 --- /dev/null +++ b/bff/node_modules/encodeurl/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/encodeurl/README.md b/bff/node_modules/encodeurl/README.md new file mode 100644 index 0000000..3842493 --- /dev/null +++ b/bff/node_modules/encodeurl/README.md @@ -0,0 +1,109 @@ +# Encode URL + +Encode a URL to a percent-encoded form, excluding already-encoded sequences. + +## Installation + +```sh +npm install encodeurl +``` + +## API + +```js +var encodeUrl = require('encodeurl') +``` + +### encodeUrl(url) + +Encode a URL to a percent-encoded form, excluding already-encoded sequences. + +This function accepts a URL and encodes all the non-URL code points (as UTF-8 byte sequences). It will not encode the "%" character unless it is not part of a valid sequence (`%20` will be left as-is, but `%foo` will be encoded as `%25foo`). + +This encode is meant to be "safe" and does not throw errors. It will try as hard as it can to properly encode the given URL, including replacing any raw, unpaired surrogate pairs with the Unicode replacement character prior to encoding. + +## Examples + +### Encode a URL containing user-controlled data + +```js +var encodeUrl = require('encodeurl') +var escapeHtml = require('escape-html') + +http.createServer(function onRequest (req, res) { + // get encoded form of inbound url + var url = encodeUrl(req.url) + + // create html message + var body = '

Location ' + escapeHtml(url) + ' not found

' + + // send a 404 + res.statusCode = 404 + res.setHeader('Content-Type', 'text/html; charset=UTF-8') + res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) + res.end(body, 'utf-8') +}) +``` + +### Encode a URL for use in a header field + +```js +var encodeUrl = require('encodeurl') +var escapeHtml = require('escape-html') +var url = require('url') + +http.createServer(function onRequest (req, res) { + // parse inbound url + var href = url.parse(req) + + // set new host for redirect + href.host = 'localhost' + href.protocol = 'https:' + href.slashes = true + + // create location header + var location = encodeUrl(url.format(href)) + + // create html message + var body = '

Redirecting to new site: ' + escapeHtml(location) + '

' + + // send a 301 + res.statusCode = 301 + res.setHeader('Content-Type', 'text/html; charset=UTF-8') + res.setHeader('Content-Length', String(Buffer.byteLength(body, 'utf-8'))) + res.setHeader('Location', location) + res.end(body, 'utf-8') +}) +``` + +## Similarities + +This function is _similar_ to the intrinsic function `encodeURI`. However, it will not encode: + +* The `\`, `^`, or `|` characters +* The `%` character when it's part of a valid sequence +* `[` and `]` (for IPv6 hostnames) +* Replaces raw, unpaired surrogate pairs with the Unicode replacement character + +As a result, the encoding aligns closely with the behavior in the [WHATWG URL specification][whatwg-url]. However, this package only encodes strings and does not do any URL parsing or formatting. + +It is expected that any output from `new URL(url)` will not change when used with this package, as the output has already been encoded. Additionally, if we were to encode before `new URL(url)`, we do not expect the before and after encoded formats to be parsed any differently. + +## Testing + +```sh +$ npm test +$ npm run lint +``` + +## References + +- [RFC 3986: Uniform Resource Identifier (URI): Generic Syntax][rfc-3986] +- [WHATWG URL Living Standard][whatwg-url] + +[rfc-3986]: https://tools.ietf.org/html/rfc3986 +[whatwg-url]: https://url.spec.whatwg.org/ + +## License + +[MIT](LICENSE) diff --git a/bff/node_modules/encodeurl/index.js b/bff/node_modules/encodeurl/index.js new file mode 100644 index 0000000..a49ee5a --- /dev/null +++ b/bff/node_modules/encodeurl/index.js @@ -0,0 +1,60 @@ +/*! + * encodeurl + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = encodeUrl + +/** + * RegExp to match non-URL code points, *after* encoding (i.e. not including "%") + * and including invalid escape sequences. + * @private + */ + +var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g + +/** + * RegExp to match unmatched surrogate pair. + * @private + */ + +var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g + +/** + * String to replace unmatched surrogate pair with. + * @private + */ + +var UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\uFFFD$2' + +/** + * Encode a URL to a percent-encoded form, excluding already-encoded sequences. + * + * This function will take an already-encoded URL and encode all the non-URL + * code points. This function will not encode the "%" character unless it is + * not part of a valid sequence (`%20` will be left as-is, but `%foo` will + * be encoded as `%25foo`). + * + * This encode is meant to be "safe" and does not throw errors. It will try as + * hard as it can to properly encode the given URL, including replacing any raw, + * unpaired surrogate pairs with the Unicode replacement character prior to + * encoding. + * + * @param {string} url + * @return {string} + * @public + */ + +function encodeUrl (url) { + return String(url) + .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE) + .replace(ENCODE_CHARS_REGEXP, encodeURI) +} diff --git a/bff/node_modules/encodeurl/package.json b/bff/node_modules/encodeurl/package.json new file mode 100644 index 0000000..3133822 --- /dev/null +++ b/bff/node_modules/encodeurl/package.json @@ -0,0 +1,40 @@ +{ + "name": "encodeurl", + "description": "Encode a URL to a percent-encoded form, excluding already-encoded sequences", + "version": "2.0.0", + "contributors": [ + "Douglas Christopher Wilson " + ], + "license": "MIT", + "keywords": [ + "encode", + "encodeurl", + "url" + ], + "repository": "pillarjs/encodeurl", + "devDependencies": { + "eslint": "5.11.1", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.14.0", + "eslint-plugin-node": "7.0.1", + "eslint-plugin-promise": "4.0.1", + "eslint-plugin-standard": "4.0.0", + "istanbul": "0.4.5", + "mocha": "2.5.3" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + } +} diff --git a/bff/node_modules/es-define-property/.eslintrc b/bff/node_modules/es-define-property/.eslintrc new file mode 100644 index 0000000..46f3b12 --- /dev/null +++ b/bff/node_modules/es-define-property/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": ["error", { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/bff/node_modules/es-define-property/.github/FUNDING.yml b/bff/node_modules/es-define-property/.github/FUNDING.yml new file mode 100644 index 0000000..4445451 --- /dev/null +++ b/bff/node_modules/es-define-property/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-define-property +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/bff/node_modules/es-define-property/.nycrc b/bff/node_modules/es-define-property/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/bff/node_modules/es-define-property/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/es-define-property/CHANGELOG.md b/bff/node_modules/es-define-property/CHANGELOG.md new file mode 100644 index 0000000..5f60cc0 --- /dev/null +++ b/bff/node_modules/es-define-property/CHANGELOG.md @@ -0,0 +1,29 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/es-define-property/compare/v1.0.0...v1.0.1) - 2024-12-06 + +### Commits + +- [types] use shared tsconfig [`954a663`](https://github.com/ljharb/es-define-property/commit/954a66360326e508a0e5daa4b07493d58f5e110e) +- [actions] split out node 10-20, and 20+ [`3a8e84b`](https://github.com/ljharb/es-define-property/commit/3a8e84b23883f26ff37b3e82ff283834228e18c6) +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/tape`, `auto-changelog`, `gopd`, `tape` [`86ae27b`](https://github.com/ljharb/es-define-property/commit/86ae27bb8cc857b23885136fad9cbe965ae36612) +- [Refactor] avoid using `get-intrinsic` [`02480c0`](https://github.com/ljharb/es-define-property/commit/02480c0353ef6118965282977c3864aff53d98b1) +- [Tests] replace `aud` with `npm audit` [`f6093ff`](https://github.com/ljharb/es-define-property/commit/f6093ff74ab51c98015c2592cd393bd42478e773) +- [Tests] configure testling [`7139e66`](https://github.com/ljharb/es-define-property/commit/7139e66959247a56086d9977359caef27c6849e7) +- [Dev Deps] update `tape` [`b901b51`](https://github.com/ljharb/es-define-property/commit/b901b511a75e001a40ce1a59fef7d9ffcfc87482) +- [Tests] fix types in tests [`469d269`](https://github.com/ljharb/es-define-property/commit/469d269fd141b1e773ec053a9fa35843493583e0) +- [Dev Deps] add missing peer dep [`733acfb`](https://github.com/ljharb/es-define-property/commit/733acfb0c4c96edf337e470b89a25a5b3724c352) + +## v1.0.0 - 2024-02-12 + +### Commits + +- Initial implementation, tests, readme, types [`3e154e1`](https://github.com/ljharb/es-define-property/commit/3e154e11a2fee09127220f5e503bf2c0a31dd480) +- Initial commit [`07d98de`](https://github.com/ljharb/es-define-property/commit/07d98de34a4dc31ff5e83a37c0c3f49e0d85cd50) +- npm init [`c4eb634`](https://github.com/ljharb/es-define-property/commit/c4eb6348b0d3886aac36cef34ad2ee0665ea6f3e) +- Only apps should have lockfiles [`7af86ec`](https://github.com/ljharb/es-define-property/commit/7af86ec1d311ec0b17fdfe616a25f64276903856) diff --git a/bff/node_modules/es-define-property/LICENSE b/bff/node_modules/es-define-property/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/bff/node_modules/es-define-property/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/es-define-property/README.md b/bff/node_modules/es-define-property/README.md new file mode 100644 index 0000000..9b291bd --- /dev/null +++ b/bff/node_modules/es-define-property/README.md @@ -0,0 +1,49 @@ +# es-define-property [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +`Object.defineProperty`, but not IE 8's broken one. + +## Example + +```js +const assert = require('assert'); + +const $defineProperty = require('es-define-property'); + +if ($defineProperty) { + assert.equal($defineProperty, Object.defineProperty); +} else if (Object.defineProperty) { + assert.equal($defineProperty, false, 'this is IE 8'); +} else { + assert.equal($defineProperty, false, 'this is an ES3 engine'); +} +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-define-property +[npm-version-svg]: https://versionbadg.es/ljharb/es-define-property.svg +[deps-svg]: https://david-dm.org/ljharb/es-define-property.svg +[deps-url]: https://david-dm.org/ljharb/es-define-property +[dev-deps-svg]: https://david-dm.org/ljharb/es-define-property/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-define-property#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-define-property.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-define-property.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-define-property.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-define-property +[codecov-image]: https://codecov.io/gh/ljharb/es-define-property/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-define-property/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-define-property +[actions-url]: https://github.com/ljharb/es-define-property/actions diff --git a/bff/node_modules/es-define-property/index.d.ts b/bff/node_modules/es-define-property/index.d.ts new file mode 100644 index 0000000..6012247 --- /dev/null +++ b/bff/node_modules/es-define-property/index.d.ts @@ -0,0 +1,3 @@ +declare const defineProperty: false | typeof Object.defineProperty; + +export = defineProperty; \ No newline at end of file diff --git a/bff/node_modules/es-define-property/index.js b/bff/node_modules/es-define-property/index.js new file mode 100644 index 0000000..e0a2925 --- /dev/null +++ b/bff/node_modules/es-define-property/index.js @@ -0,0 +1,14 @@ +'use strict'; + +/** @type {import('.')} */ +var $defineProperty = Object.defineProperty || false; +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } +} + +module.exports = $defineProperty; diff --git a/bff/node_modules/es-define-property/package.json b/bff/node_modules/es-define-property/package.json new file mode 100644 index 0000000..fbed187 --- /dev/null +++ b/bff/node_modules/es-define-property/package.json @@ -0,0 +1,81 @@ +{ + "name": "es-define-property", + "version": "1.0.1", + "description": "`Object.defineProperty`, but not IE 8's broken one.", + "main": "index.js", + "types": "./index.d.ts", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-define-property.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "define", + "property", + "defineProperty", + "Object.defineProperty" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-define-property/issues" + }, + "homepage": "https://github.com/ljharb/es-define-property#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/gopd": "^1.0.3", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "gopd": "^1.2.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/bff/node_modules/es-define-property/test/index.js b/bff/node_modules/es-define-property/test/index.js new file mode 100644 index 0000000..b4b4688 --- /dev/null +++ b/bff/node_modules/es-define-property/test/index.js @@ -0,0 +1,56 @@ +'use strict'; + +var $defineProperty = require('../'); + +var test = require('tape'); +var gOPD = require('gopd'); + +test('defineProperty: supported', { skip: !$defineProperty }, function (t) { + t.plan(4); + + t.equal(typeof $defineProperty, 'function', 'defineProperty is supported'); + if ($defineProperty && gOPD) { // this `if` check is just to shut TS up + /** @type {{ a: number, b?: number, c?: number }} */ + var o = { a: 1 }; + + $defineProperty(o, 'b', { enumerable: true, value: 2 }); + t.deepEqual( + gOPD(o, 'b'), + { + configurable: false, + enumerable: true, + value: 2, + writable: false + }, + 'property descriptor is as expected' + ); + + $defineProperty(o, 'c', { enumerable: false, value: 3, writable: true }); + t.deepEqual( + gOPD(o, 'c'), + { + configurable: false, + enumerable: false, + value: 3, + writable: true + }, + 'property descriptor is as expected' + ); + } + + t.equal($defineProperty, Object.defineProperty, 'defineProperty is Object.defineProperty'); + + t.end(); +}); + +test('defineProperty: not supported', { skip: !!$defineProperty }, function (t) { + t.notOk($defineProperty, 'defineProperty is not supported'); + + t.match( + typeof $defineProperty, + /^(?:undefined|boolean)$/, + '`typeof defineProperty` is `undefined` or `boolean`' + ); + + t.end(); +}); diff --git a/bff/node_modules/es-define-property/tsconfig.json b/bff/node_modules/es-define-property/tsconfig.json new file mode 100644 index 0000000..5a49992 --- /dev/null +++ b/bff/node_modules/es-define-property/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2022", + }, + "exclude": [ + "coverage", + "test/list-exports" + ], +} diff --git a/bff/node_modules/es-errors/.eslintrc b/bff/node_modules/es-errors/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/bff/node_modules/es-errors/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/bff/node_modules/es-errors/.github/FUNDING.yml b/bff/node_modules/es-errors/.github/FUNDING.yml new file mode 100644 index 0000000..f1b8805 --- /dev/null +++ b/bff/node_modules/es-errors/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-errors +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/bff/node_modules/es-errors/CHANGELOG.md b/bff/node_modules/es-errors/CHANGELOG.md new file mode 100644 index 0000000..204a9e9 --- /dev/null +++ b/bff/node_modules/es-errors/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.3.0](https://github.com/ljharb/es-errors/compare/v1.2.1...v1.3.0) - 2024-02-05 + +### Commits + +- [New] add `EvalError` and `URIError` [`1927627`](https://github.com/ljharb/es-errors/commit/1927627ba68cb6c829d307231376c967db53acdf) + +## [v1.2.1](https://github.com/ljharb/es-errors/compare/v1.2.0...v1.2.1) - 2024-02-04 + +### Commits + +- [Fix] add missing `exports` entry [`5bb5f28`](https://github.com/ljharb/es-errors/commit/5bb5f280f98922701109d6ebb82eea2257cecc7e) + +## [v1.2.0](https://github.com/ljharb/es-errors/compare/v1.1.0...v1.2.0) - 2024-02-04 + +### Commits + +- [New] add `ReferenceError` [`6d8cf5b`](https://github.com/ljharb/es-errors/commit/6d8cf5bbb6f3f598d02cf6f30e468ba2caa8e143) + +## [v1.1.0](https://github.com/ljharb/es-errors/compare/v1.0.0...v1.1.0) - 2024-02-04 + +### Commits + +- [New] add base Error [`2983ab6`](https://github.com/ljharb/es-errors/commit/2983ab65f7bc5441276cb021dc3aa03c78881698) + +## v1.0.0 - 2024-02-03 + +### Commits + +- Initial implementation, tests, readme, type [`8f47631`](https://github.com/ljharb/es-errors/commit/8f476317e9ad76f40ad648081829b1a1a3a1288b) +- Initial commit [`ea5d099`](https://github.com/ljharb/es-errors/commit/ea5d099ef18e550509ab9e2be000526afd81c385) +- npm init [`6f5ebf9`](https://github.com/ljharb/es-errors/commit/6f5ebf9cead474dadd72b9e63dad315820a089ae) +- Only apps should have lockfiles [`e1a0aeb`](https://github.com/ljharb/es-errors/commit/e1a0aeb7b80f5cfc56be54d6b2100e915d47def8) +- [meta] add `sideEffects` flag [`a9c7d46`](https://github.com/ljharb/es-errors/commit/a9c7d460a492f1d8a241c836bc25a322a19cc043) diff --git a/bff/node_modules/es-errors/LICENSE b/bff/node_modules/es-errors/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/bff/node_modules/es-errors/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/es-errors/README.md b/bff/node_modules/es-errors/README.md new file mode 100644 index 0000000..8dbfacf --- /dev/null +++ b/bff/node_modules/es-errors/README.md @@ -0,0 +1,55 @@ +# es-errors [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A simple cache for a few of the JS Error constructors. + +## Example + +```js +const assert = require('assert'); + +const Base = require('es-errors'); +const Eval = require('es-errors/eval'); +const Range = require('es-errors/range'); +const Ref = require('es-errors/ref'); +const Syntax = require('es-errors/syntax'); +const Type = require('es-errors/type'); +const URI = require('es-errors/uri'); + +assert.equal(Base, Error); +assert.equal(Eval, EvalError); +assert.equal(Range, RangeError); +assert.equal(Ref, ReferenceError); +assert.equal(Syntax, SyntaxError); +assert.equal(Type, TypeError); +assert.equal(URI, URIError); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-errors +[npm-version-svg]: https://versionbadg.es/ljharb/es-errors.svg +[deps-svg]: https://david-dm.org/ljharb/es-errors.svg +[deps-url]: https://david-dm.org/ljharb/es-errors +[dev-deps-svg]: https://david-dm.org/ljharb/es-errors/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-errors#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-errors.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-errors.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-errors.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-errors +[codecov-image]: https://codecov.io/gh/ljharb/es-errors/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-errors/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-errors +[actions-url]: https://github.com/ljharb/es-errors/actions diff --git a/bff/node_modules/es-errors/eval.d.ts b/bff/node_modules/es-errors/eval.d.ts new file mode 100644 index 0000000..e4210e0 --- /dev/null +++ b/bff/node_modules/es-errors/eval.d.ts @@ -0,0 +1,3 @@ +declare const EvalError: EvalErrorConstructor; + +export = EvalError; diff --git a/bff/node_modules/es-errors/eval.js b/bff/node_modules/es-errors/eval.js new file mode 100644 index 0000000..725ccb6 --- /dev/null +++ b/bff/node_modules/es-errors/eval.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./eval')} */ +module.exports = EvalError; diff --git a/bff/node_modules/es-errors/index.d.ts b/bff/node_modules/es-errors/index.d.ts new file mode 100644 index 0000000..69bdbc9 --- /dev/null +++ b/bff/node_modules/es-errors/index.d.ts @@ -0,0 +1,3 @@ +declare const Error: ErrorConstructor; + +export = Error; diff --git a/bff/node_modules/es-errors/index.js b/bff/node_modules/es-errors/index.js new file mode 100644 index 0000000..cc0c521 --- /dev/null +++ b/bff/node_modules/es-errors/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Error; diff --git a/bff/node_modules/es-errors/package.json b/bff/node_modules/es-errors/package.json new file mode 100644 index 0000000..ff8c2a5 --- /dev/null +++ b/bff/node_modules/es-errors/package.json @@ -0,0 +1,80 @@ +{ + "name": "es-errors", + "version": "1.3.0", + "description": "A simple cache for a few of the JS Error constructors.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./eval": "./eval.js", + "./range": "./range.js", + "./ref": "./ref.js", + "./syntax": "./syntax.js", + "./type": "./type.js", + "./uri": "./uri.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "aud --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-errors.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "error", + "typeerror", + "syntaxerror", + "rangeerror" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-errors/issues" + }, + "homepage": "https://github.com/ljharb/es-errors#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eclint": "^2.8.1", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/es-errors/range.d.ts b/bff/node_modules/es-errors/range.d.ts new file mode 100644 index 0000000..3a12e86 --- /dev/null +++ b/bff/node_modules/es-errors/range.d.ts @@ -0,0 +1,3 @@ +declare const RangeError: RangeErrorConstructor; + +export = RangeError; diff --git a/bff/node_modules/es-errors/range.js b/bff/node_modules/es-errors/range.js new file mode 100644 index 0000000..2044fe0 --- /dev/null +++ b/bff/node_modules/es-errors/range.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./range')} */ +module.exports = RangeError; diff --git a/bff/node_modules/es-errors/ref.d.ts b/bff/node_modules/es-errors/ref.d.ts new file mode 100644 index 0000000..a13107e --- /dev/null +++ b/bff/node_modules/es-errors/ref.d.ts @@ -0,0 +1,3 @@ +declare const ReferenceError: ReferenceErrorConstructor; + +export = ReferenceError; diff --git a/bff/node_modules/es-errors/ref.js b/bff/node_modules/es-errors/ref.js new file mode 100644 index 0000000..d7c430f --- /dev/null +++ b/bff/node_modules/es-errors/ref.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./ref')} */ +module.exports = ReferenceError; diff --git a/bff/node_modules/es-errors/syntax.d.ts b/bff/node_modules/es-errors/syntax.d.ts new file mode 100644 index 0000000..6a0c53c --- /dev/null +++ b/bff/node_modules/es-errors/syntax.d.ts @@ -0,0 +1,3 @@ +declare const SyntaxError: SyntaxErrorConstructor; + +export = SyntaxError; diff --git a/bff/node_modules/es-errors/syntax.js b/bff/node_modules/es-errors/syntax.js new file mode 100644 index 0000000..5f5fdde --- /dev/null +++ b/bff/node_modules/es-errors/syntax.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./syntax')} */ +module.exports = SyntaxError; diff --git a/bff/node_modules/es-errors/test/index.js b/bff/node_modules/es-errors/test/index.js new file mode 100644 index 0000000..1ff0277 --- /dev/null +++ b/bff/node_modules/es-errors/test/index.js @@ -0,0 +1,19 @@ +'use strict'; + +var test = require('tape'); + +var E = require('../'); +var R = require('../range'); +var Ref = require('../ref'); +var S = require('../syntax'); +var T = require('../type'); + +test('errors', function (t) { + t.equal(E, Error); + t.equal(R, RangeError); + t.equal(Ref, ReferenceError); + t.equal(S, SyntaxError); + t.equal(T, TypeError); + + t.end(); +}); diff --git a/bff/node_modules/es-errors/tsconfig.json b/bff/node_modules/es-errors/tsconfig.json new file mode 100644 index 0000000..99dfeb6 --- /dev/null +++ b/bff/node_modules/es-errors/tsconfig.json @@ -0,0 +1,49 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + + /* Language and Environment */ + "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": ["types"], /* Specify multiple folders that act like `./node_modules/@types`. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declarationMap": true, /* Create sourcemaps for d.ts files. */ + "noEmit": true, /* Disable emitting files from a compilation. */ + + /* Interop Constraints */ + "allowSyntheticDefaultImports": true, /* Allow `import x from y` when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + + /* Completeness */ + // "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/es-errors/type.d.ts b/bff/node_modules/es-errors/type.d.ts new file mode 100644 index 0000000..576fb51 --- /dev/null +++ b/bff/node_modules/es-errors/type.d.ts @@ -0,0 +1,3 @@ +declare const TypeError: TypeErrorConstructor + +export = TypeError; diff --git a/bff/node_modules/es-errors/type.js b/bff/node_modules/es-errors/type.js new file mode 100644 index 0000000..9769e44 --- /dev/null +++ b/bff/node_modules/es-errors/type.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./type')} */ +module.exports = TypeError; diff --git a/bff/node_modules/es-errors/uri.d.ts b/bff/node_modules/es-errors/uri.d.ts new file mode 100644 index 0000000..c3261c9 --- /dev/null +++ b/bff/node_modules/es-errors/uri.d.ts @@ -0,0 +1,3 @@ +declare const URIError: URIErrorConstructor; + +export = URIError; diff --git a/bff/node_modules/es-errors/uri.js b/bff/node_modules/es-errors/uri.js new file mode 100644 index 0000000..e9cd1c7 --- /dev/null +++ b/bff/node_modules/es-errors/uri.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./uri')} */ +module.exports = URIError; diff --git a/bff/node_modules/es-object-atoms/.eslintrc b/bff/node_modules/es-object-atoms/.eslintrc new file mode 100644 index 0000000..d90a1bc --- /dev/null +++ b/bff/node_modules/es-object-atoms/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "eqeqeq": ["error", "allow-null"], + "id-length": "off", + "new-cap": ["error", { + "capIsNewExceptions": [ + "RequireObjectCoercible", + "ToObject", + ], + }], + }, +} diff --git a/bff/node_modules/es-object-atoms/.github/FUNDING.yml b/bff/node_modules/es-object-atoms/.github/FUNDING.yml new file mode 100644 index 0000000..352bfda --- /dev/null +++ b/bff/node_modules/es-object-atoms/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-object +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/bff/node_modules/es-object-atoms/CHANGELOG.md b/bff/node_modules/es-object-atoms/CHANGELOG.md new file mode 100644 index 0000000..fdd2abe --- /dev/null +++ b/bff/node_modules/es-object-atoms/CHANGELOG.md @@ -0,0 +1,37 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.1](https://github.com/ljharb/es-object-atoms/compare/v1.1.0...v1.1.1) - 2025-01-14 + +### Commits + +- [types] `ToObject`: improve types [`cfe8c8a`](https://github.com/ljharb/es-object-atoms/commit/cfe8c8a105c44820cb22e26f62d12ef0ad9715c8) + +## [v1.1.0](https://github.com/ljharb/es-object-atoms/compare/v1.0.1...v1.1.0) - 2025-01-14 + +### Commits + +- [New] add `isObject` [`51e4042`](https://github.com/ljharb/es-object-atoms/commit/51e4042df722eb3165f40dc5f4bf33d0197ecb07) + +## [v1.0.1](https://github.com/ljharb/es-object-atoms/compare/v1.0.0...v1.0.1) - 2025-01-13 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/tape`, `auto-changelog`, `tape` [`38ab9eb`](https://github.com/ljharb/es-object-atoms/commit/38ab9eb00b62c2f4668644f5e513d9b414ebd595) +- [types] improve types [`7d1beb8`](https://github.com/ljharb/es-object-atoms/commit/7d1beb887958b78b6a728a210a1c8370ab7e2aa1) +- [Tests] replace `aud` with `npm audit` [`25863ba`](https://github.com/ljharb/es-object-atoms/commit/25863baf99178f1d1ad33d1120498db28631907e) +- [Dev Deps] add missing peer dep [`c012309`](https://github.com/ljharb/es-object-atoms/commit/c0123091287e6132d6f4240496340c427433df28) + +## v1.0.0 - 2024-03-16 + +### Commits + +- Initial implementation, tests, readme, types [`f1499db`](https://github.com/ljharb/es-object-atoms/commit/f1499db7d3e1741e64979c61d645ab3137705e82) +- Initial commit [`99eedc7`](https://github.com/ljharb/es-object-atoms/commit/99eedc7b5fde38a50a28d3c8b724706e3e4c5f6a) +- [meta] rename repo [`fc851fa`](https://github.com/ljharb/es-object-atoms/commit/fc851fa70616d2d182aaf0bd02c2ed7084dea8fa) +- npm init [`b909377`](https://github.com/ljharb/es-object-atoms/commit/b909377c50049bd0ec575562d20b0f9ebae8947f) +- Only apps should have lockfiles [`7249edd`](https://github.com/ljharb/es-object-atoms/commit/7249edd2178c1b9ddfc66ffcc6d07fdf0d28efc1) diff --git a/bff/node_modules/es-object-atoms/LICENSE b/bff/node_modules/es-object-atoms/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/bff/node_modules/es-object-atoms/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/es-object-atoms/README.md b/bff/node_modules/es-object-atoms/README.md new file mode 100644 index 0000000..447695b --- /dev/null +++ b/bff/node_modules/es-object-atoms/README.md @@ -0,0 +1,63 @@ +# es-object-atoms [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ES Object-related atoms: Object, ToObject, RequireObjectCoercible. + +## Example + +```js +const assert = require('assert'); + +const $Object = require('es-object-atoms'); +const isObject = require('es-object-atoms/isObject'); +const ToObject = require('es-object-atoms/ToObject'); +const RequireObjectCoercible = require('es-object-atoms/RequireObjectCoercible'); + +assert.equal($Object, Object); +assert.throws(() => ToObject(null), TypeError); +assert.throws(() => ToObject(undefined), TypeError); +assert.throws(() => RequireObjectCoercible(null), TypeError); +assert.throws(() => RequireObjectCoercible(undefined), TypeError); + +assert.equal(isObject(undefined), false); +assert.equal(isObject(null), false); +assert.equal(isObject({}), true); +assert.equal(isObject([]), true); +assert.equal(isObject(function () {}), true); + +assert.deepEqual(RequireObjectCoercible(true), true); +assert.deepEqual(ToObject(true), Object(true)); + +const obj = {}; +assert.equal(RequireObjectCoercible(obj), obj); +assert.equal(ToObject(obj), obj); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-object-atoms +[npm-version-svg]: https://versionbadg.es/ljharb/es-object-atoms.svg +[deps-svg]: https://david-dm.org/ljharb/es-object-atoms.svg +[deps-url]: https://david-dm.org/ljharb/es-object-atoms +[dev-deps-svg]: https://david-dm.org/ljharb/es-object-atoms/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-object-atoms#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-object-atoms.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-object-atoms.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-object.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-object-atoms +[codecov-image]: https://codecov.io/gh/ljharb/es-object-atoms/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/es-object-atoms/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/es-object-atoms +[actions-url]: https://github.com/ljharb/es-object-atoms/actions diff --git a/bff/node_modules/es-object-atoms/RequireObjectCoercible.d.ts b/bff/node_modules/es-object-atoms/RequireObjectCoercible.d.ts new file mode 100644 index 0000000..7e26c45 --- /dev/null +++ b/bff/node_modules/es-object-atoms/RequireObjectCoercible.d.ts @@ -0,0 +1,3 @@ +declare function RequireObjectCoercible(value: T, optMessage?: string): T; + +export = RequireObjectCoercible; diff --git a/bff/node_modules/es-object-atoms/RequireObjectCoercible.js b/bff/node_modules/es-object-atoms/RequireObjectCoercible.js new file mode 100644 index 0000000..8e191c6 --- /dev/null +++ b/bff/node_modules/es-object-atoms/RequireObjectCoercible.js @@ -0,0 +1,11 @@ +'use strict'; + +var $TypeError = require('es-errors/type'); + +/** @type {import('./RequireObjectCoercible')} */ +module.exports = function RequireObjectCoercible(value) { + if (value == null) { + throw new $TypeError((arguments.length > 0 && arguments[1]) || ('Cannot call method on ' + value)); + } + return value; +}; diff --git a/bff/node_modules/es-object-atoms/ToObject.d.ts b/bff/node_modules/es-object-atoms/ToObject.d.ts new file mode 100644 index 0000000..d6dd302 --- /dev/null +++ b/bff/node_modules/es-object-atoms/ToObject.d.ts @@ -0,0 +1,7 @@ +declare function ToObject(value: number): Number; +declare function ToObject(value: boolean): Boolean; +declare function ToObject(value: string): String; +declare function ToObject(value: bigint): BigInt; +declare function ToObject(value: T): T; + +export = ToObject; diff --git a/bff/node_modules/es-object-atoms/ToObject.js b/bff/node_modules/es-object-atoms/ToObject.js new file mode 100644 index 0000000..2b99a7d --- /dev/null +++ b/bff/node_modules/es-object-atoms/ToObject.js @@ -0,0 +1,10 @@ +'use strict'; + +var $Object = require('./'); +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +/** @type {import('./ToObject')} */ +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/bff/node_modules/es-object-atoms/index.d.ts b/bff/node_modules/es-object-atoms/index.d.ts new file mode 100644 index 0000000..8bdbfc8 --- /dev/null +++ b/bff/node_modules/es-object-atoms/index.d.ts @@ -0,0 +1,3 @@ +declare const Object: ObjectConstructor; + +export = Object; diff --git a/bff/node_modules/es-object-atoms/index.js b/bff/node_modules/es-object-atoms/index.js new file mode 100644 index 0000000..1d33cef --- /dev/null +++ b/bff/node_modules/es-object-atoms/index.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('.')} */ +module.exports = Object; diff --git a/bff/node_modules/es-object-atoms/isObject.d.ts b/bff/node_modules/es-object-atoms/isObject.d.ts new file mode 100644 index 0000000..43bee3b --- /dev/null +++ b/bff/node_modules/es-object-atoms/isObject.d.ts @@ -0,0 +1,3 @@ +declare function isObject(x: unknown): x is object; + +export = isObject; diff --git a/bff/node_modules/es-object-atoms/isObject.js b/bff/node_modules/es-object-atoms/isObject.js new file mode 100644 index 0000000..ec49bf1 --- /dev/null +++ b/bff/node_modules/es-object-atoms/isObject.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isObject')} */ +module.exports = function isObject(x) { + return !!x && (typeof x === 'function' || typeof x === 'object'); +}; diff --git a/bff/node_modules/es-object-atoms/package.json b/bff/node_modules/es-object-atoms/package.json new file mode 100644 index 0000000..f4cec71 --- /dev/null +++ b/bff/node_modules/es-object-atoms/package.json @@ -0,0 +1,80 @@ +{ + "name": "es-object-atoms", + "version": "1.1.1", + "description": "ES Object-related atoms: Object, ToObject, RequireObjectCoercible", + "main": "index.js", + "exports": { + ".": "./index.js", + "./RequireObjectCoercible": "./RequireObjectCoercible.js", + "./isObject": "./isObject.js", + "./ToObject": "./ToObject.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@\">= 10.2\" audit --production", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/es-object-atoms.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "object", + "toobject", + "coercible" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/es-object-atoms/issues" + }, + "homepage": "https://github.com/ljharb/es-object-atoms#readme", + "dependencies": { + "es-errors": "^1.3.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.1", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/es-object-atoms/test/index.js b/bff/node_modules/es-object-atoms/test/index.js new file mode 100644 index 0000000..430b705 --- /dev/null +++ b/bff/node_modules/es-object-atoms/test/index.js @@ -0,0 +1,38 @@ +'use strict'; + +var test = require('tape'); + +var $Object = require('../'); +var isObject = require('../isObject'); +var ToObject = require('../ToObject'); +var RequireObjectCoercible = require('..//RequireObjectCoercible'); + +test('errors', function (t) { + t.equal($Object, Object); + // @ts-expect-error + t['throws'](function () { ToObject(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { ToObject(undefined); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(null); }, TypeError); + // @ts-expect-error + t['throws'](function () { RequireObjectCoercible(undefined); }, TypeError); + + t.deepEqual(RequireObjectCoercible(true), true); + t.deepEqual(ToObject(true), Object(true)); + t.deepEqual(ToObject(42), Object(42)); + var f = function () {}; + t.equal(ToObject(f), f); + + t.equal(isObject(undefined), false); + t.equal(isObject(null), false); + t.equal(isObject({}), true); + t.equal(isObject([]), true); + t.equal(isObject(function () {}), true); + + var obj = {}; + t.equal(RequireObjectCoercible(obj), obj); + t.equal(ToObject(obj), obj); + + t.end(); +}); diff --git a/bff/node_modules/es-object-atoms/tsconfig.json b/bff/node_modules/es-object-atoms/tsconfig.json new file mode 100644 index 0000000..1f73cb7 --- /dev/null +++ b/bff/node_modules/es-object-atoms/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es5", + }, +} diff --git a/bff/node_modules/es-set-tostringtag/.eslintrc b/bff/node_modules/es-set-tostringtag/.eslintrc new file mode 100644 index 0000000..2612ed8 --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/.eslintrc @@ -0,0 +1,13 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/bff/node_modules/es-set-tostringtag/.nycrc b/bff/node_modules/es-set-tostringtag/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/es-set-tostringtag/CHANGELOG.md b/bff/node_modules/es-set-tostringtag/CHANGELOG.md new file mode 100644 index 0000000..00bdc03 --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/CHANGELOG.md @@ -0,0 +1,67 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v2.1.0](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.3...v2.1.0) - 2025-01-01 + +### Commits + +- [actions] split out node 10-20, and 20+ [`ede033c`](https://github.com/es-shims/es-set-tostringtag/commit/ede033cc4e506c3966d2d482d4ac5987e329162a) +- [types] use shared config [`28ef164`](https://github.com/es-shims/es-set-tostringtag/commit/28ef164ad7c5bc21837c79f7ef25542a1f258ade) +- [New] add `nonConfigurable` option [`3bee3f0`](https://github.com/es-shims/es-set-tostringtag/commit/3bee3f04caddd318f3932912212ed20b2d62aad7) +- [Fix] validate boolean option argument [`3c8a609`](https://github.com/es-shims/es-set-tostringtag/commit/3c8a609c795a305ccca163f0ff6956caa88cdc0e) +- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/tape`, `auto-changelog`, `tape` [`501a969`](https://github.com/es-shims/es-set-tostringtag/commit/501a96998484226e07f5ffd447e8f305a998f1d8) +- [Tests] add coverage [`18af289`](https://github.com/es-shims/es-set-tostringtag/commit/18af2897b4e937373c9b8c8831bc338932246470) +- [readme] document `force` option [`bd446a1`](https://github.com/es-shims/es-set-tostringtag/commit/bd446a107b71a2270278442e5124f45590d3ee64) +- [Tests] use `@arethetypeswrong/cli` [`7c2c2fa`](https://github.com/es-shims/es-set-tostringtag/commit/7c2c2fa3cca0f4d263603adb75426b239514598f) +- [Tests] replace `aud` with `npm audit` [`9e372d7`](https://github.com/es-shims/es-set-tostringtag/commit/9e372d7e6db3dab405599a14d9074a99a03b8242) +- [Deps] update `get-intrinsic` [`7df1216`](https://github.com/es-shims/es-set-tostringtag/commit/7df12167295385c2a547410e687cb0c04f3a34b9) +- [Deps] update `hasown` [`993a7d2`](https://github.com/es-shims/es-set-tostringtag/commit/993a7d200e2059fd857ec1a25d0a49c2c34ae6e2) +- [Dev Deps] add missing peer dep [`148ed8d`](https://github.com/es-shims/es-set-tostringtag/commit/148ed8db99a7a94f9af3823fd083e6e437fa1587) + +## [v2.0.3](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.2...v2.0.3) - 2024-02-20 + +### Commits + +- add types [`d538513`](https://github.com/es-shims/es-set-tostringtag/commit/d5385133592a32a0a416cb535327918af7fbc4ad) +- [Deps] update `get-intrinsic`, `has-tostringtag`, `hasown` [`d129b29`](https://github.com/es-shims/es-set-tostringtag/commit/d129b29536bccc8a9d03a47887ca4d1f7ad0c5b9) +- [Dev Deps] update `aud`, `npmignore`, `tape` [`132ed23`](https://github.com/es-shims/es-set-tostringtag/commit/132ed23c964a41ed55e4ab4a5a2c3fe185e821c1) +- [Tests] fix hasOwn require [`f89c831`](https://github.com/es-shims/es-set-tostringtag/commit/f89c831fe5f3edf1f979c597b56fee1be6111f56) + +## [v2.0.2](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.1...v2.0.2) - 2023-10-20 + +### Commits + +- [Refactor] use `hasown` instead of `has` [`0cc6c4e`](https://github.com/es-shims/es-set-tostringtag/commit/0cc6c4e61fd13e8f00b85424ae6e541ebf289e74) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`70e447c`](https://github.com/es-shims/es-set-tostringtag/commit/70e447cf9f82b896ddf359fda0a0498c16cf3ed2) +- [Deps] update `get-intrinsic` [`826aab7`](https://github.com/es-shims/es-set-tostringtag/commit/826aab76180392871c8efa99acc0f0bbf775c64e) + +## [v2.0.1](https://github.com/es-shims/es-set-tostringtag/compare/v2.0.0...v2.0.1) - 2023-01-05 + +### Fixed + +- [Fix] move `has` to prod deps [`#2`](https://github.com/es-shims/es-set-tostringtag/issues/2) + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config` [`b9eecd2`](https://github.com/es-shims/es-set-tostringtag/commit/b9eecd23c10b7b43ba75089ac8ff8cc6b295798b) + +## [v2.0.0](https://github.com/es-shims/es-set-tostringtag/compare/v1.0.0...v2.0.0) - 2022-12-21 + +### Commits + +- [Tests] refactor tests [`168dcfb`](https://github.com/es-shims/es-set-tostringtag/commit/168dcfbb535c279dc48ccdc89419155125aaec18) +- [Breaking] do not set toStringTag if it is already set [`226ab87`](https://github.com/es-shims/es-set-tostringtag/commit/226ab874192c625d9e5f0e599d3f60d2b2aa83b5) +- [New] add `force` option to set even if already set [`1abd4ec`](https://github.com/es-shims/es-set-tostringtag/commit/1abd4ecb282f19718c4518284b0293a343564505) + +## v1.0.0 - 2022-12-21 + +### Commits + +- Initial implementation, tests, readme [`a0e1147`](https://github.com/es-shims/es-set-tostringtag/commit/a0e11473f79a233b46374525c962ea1b4d42418a) +- Initial commit [`ffd4aff`](https://github.com/es-shims/es-set-tostringtag/commit/ffd4afffbeebf29aff0d87a7cfc3f7844e09fe68) +- npm init [`fffe5bd`](https://github.com/es-shims/es-set-tostringtag/commit/fffe5bd1d1146d084730a387a9c672371f4a8fff) +- Only apps should have lockfiles [`d363871`](https://github.com/es-shims/es-set-tostringtag/commit/d36387139465623e161a15dbd39120537f150c62) diff --git a/bff/node_modules/es-set-tostringtag/LICENSE b/bff/node_modules/es-set-tostringtag/LICENSE new file mode 100644 index 0000000..c2a8460 --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/es-set-tostringtag/README.md b/bff/node_modules/es-set-tostringtag/README.md new file mode 100644 index 0000000..c27bc9f --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/README.md @@ -0,0 +1,53 @@ +# es-set-tostringtag [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A helper to optimistically set Symbol.toStringTag, when possible. + +## Example +Most common usage: +```js +var assert = require('assert'); +var setToStringTag = require('es-set-tostringtag'); + +var obj = {}; + +assert.equal(Object.prototype.toString.call(obj), '[object Object]'); + +setToStringTag(obj, 'tagged!'); + +assert.equal(Object.prototype.toString.call(obj), '[object tagged!]'); +``` + +## Options +An optional options argument can be provided as the third argument. The available options are: + +### `force` +If the `force` option is set to `true`, the toStringTag will be set even if it is already set. + +### `nonConfigurable` +If the `nonConfigurable` option is set to `true`, the toStringTag will be defined as non-configurable when possible. + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.com/package/es-set-tostringtag +[npm-version-svg]: https://versionbadg.es/es-shims/es-set-tostringtag.svg +[deps-svg]: https://david-dm.org/es-shims/es-set-tostringtag.svg +[deps-url]: https://david-dm.org/es-shims/es-set-tostringtag +[dev-deps-svg]: https://david-dm.org/es-shims/es-set-tostringtag/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/es-set-tostringtag#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-set-tostringtag.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-set-tostringtag.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-set-tostringtag.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-set-tostringtag +[codecov-image]: https://codecov.io/gh/es-shims/es-set-tostringtag/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/es-set-tostringtag/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/es-set-tostringtag +[actions-url]: https://github.com/es-shims/es-set-tostringtag/actions diff --git a/bff/node_modules/es-set-tostringtag/index.d.ts b/bff/node_modules/es-set-tostringtag/index.d.ts new file mode 100644 index 0000000..c9a8fc4 --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/index.d.ts @@ -0,0 +1,10 @@ +declare function setToStringTag( + object: object & { [Symbol.toStringTag]?: unknown }, + value: string | unknown, + options?: { + force?: boolean; + nonConfigurable?: boolean; + }, +): void; + +export = setToStringTag; \ No newline at end of file diff --git a/bff/node_modules/es-set-tostringtag/index.js b/bff/node_modules/es-set-tostringtag/index.js new file mode 100644 index 0000000..6b6b49c --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/index.js @@ -0,0 +1,35 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); + +var hasToStringTag = require('has-tostringtag/shams')(); +var hasOwn = require('hasown'); +var $TypeError = require('es-errors/type'); + +var toStringTag = hasToStringTag ? Symbol.toStringTag : null; + +/** @type {import('.')} */ +module.exports = function setToStringTag(object, value) { + var overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force; + var nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable; + if ( + (typeof overrideIfSet !== 'undefined' && typeof overrideIfSet !== 'boolean') + || (typeof nonConfigurable !== 'undefined' && typeof nonConfigurable !== 'boolean') + ) { + throw new $TypeError('if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans'); + } + if (toStringTag && (overrideIfSet || !hasOwn(object, toStringTag))) { + if ($defineProperty) { + $defineProperty(object, toStringTag, { + configurable: !nonConfigurable, + enumerable: false, + value: value, + writable: false + }); + } else { + object[toStringTag] = value; // eslint-disable-line no-param-reassign + } + } +}; diff --git a/bff/node_modules/es-set-tostringtag/package.json b/bff/node_modules/es-set-tostringtag/package.json new file mode 100644 index 0000000..277c3e5 --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/package.json @@ -0,0 +1,78 @@ +{ + "name": "es-set-tostringtag", + "version": "2.1.0", + "description": "A helper to optimistically set Symbol.toStringTag, when possible.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@\">= 10.2\" audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/es-set-tostringtag.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/es-set-tostringtag/issues" + }, + "homepage": "https://github.com/es-shims/es-set-tostringtag#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.2", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/get-intrinsic": "^1.2.3", + "@types/has-symbols": "^1.0.2", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "./test/index.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/bff/node_modules/es-set-tostringtag/test/index.js b/bff/node_modules/es-set-tostringtag/test/index.js new file mode 100644 index 0000000..f1757b3 --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/test/index.js @@ -0,0 +1,85 @@ +'use strict'; + +var test = require('tape'); +var hasToStringTag = require('has-tostringtag/shams')(); +var hasOwn = require('hasown'); + +var setToStringTag = require('../'); + +test('setToStringTag', function (t) { + t.equal(typeof setToStringTag, 'function', 'is a function'); + + /** @type {{ [Symbol.toStringTag]?: typeof sentinel }} */ + var obj = {}; + var sentinel = {}; + + setToStringTag(obj, sentinel); + + t['throws']( + // @ts-expect-error + function () { setToStringTag(obj, sentinel, { force: 'yes' }); }, + TypeError, + 'throws if options is not an object' + ); + + t.test('has Symbol.toStringTag', { skip: !hasToStringTag }, function (st) { + st.ok(hasOwn(obj, Symbol.toStringTag), 'has toStringTag property'); + + st.equal(obj[Symbol.toStringTag], sentinel, 'toStringTag property is as expected'); + + st.equal(String(obj), '[object Object]', 'toStringTag works'); + + /** @type {{ [Symbol.toStringTag]?: string }} */ + var tagged = {}; + tagged[Symbol.toStringTag] = 'already tagged'; + st.equal(String(tagged), '[object already tagged]', 'toStringTag works'); + + setToStringTag(tagged, 'new tag'); + st.equal(String(tagged), '[object already tagged]', 'toStringTag is unchanged'); + + setToStringTag(tagged, 'new tag', { force: true }); + st.equal(String(tagged), '[object new tag]', 'toStringTag is changed with force: true'); + + st.deepEqual( + Object.getOwnPropertyDescriptor(tagged, Symbol.toStringTag), + { + configurable: true, + enumerable: false, + value: 'new tag', + writable: false + }, + 'has expected property descriptor' + ); + + setToStringTag(tagged, 'new tag', { force: true, nonConfigurable: true }); + st.deepEqual( + Object.getOwnPropertyDescriptor(tagged, Symbol.toStringTag), + { + configurable: false, + enumerable: false, + value: 'new tag', + writable: false + }, + 'is nonconfigurable' + ); + + st.end(); + }); + + t.test('does not have Symbol.toStringTag', { skip: hasToStringTag }, function (st) { + var passed = true; + for (var key in obj) { // eslint-disable-line no-restricted-syntax + if (hasOwn(obj, key)) { + st.fail('object has own key ' + key); + passed = false; + } + } + if (passed) { + st.ok(true, 'object has no enumerable own keys'); + } + + st.end(); + }); + + t.end(); +}); diff --git a/bff/node_modules/es-set-tostringtag/tsconfig.json b/bff/node_modules/es-set-tostringtag/tsconfig.json new file mode 100644 index 0000000..d9a6668 --- /dev/null +++ b/bff/node_modules/es-set-tostringtag/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/escape-html/LICENSE b/bff/node_modules/escape-html/LICENSE new file mode 100644 index 0000000..2e70de9 --- /dev/null +++ b/bff/node_modules/escape-html/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2012-2013 TJ Holowaychuk +Copyright (c) 2015 Andreas Lubbe +Copyright (c) 2015 Tiancheng "Timothy" Gu + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/escape-html/Readme.md b/bff/node_modules/escape-html/Readme.md new file mode 100644 index 0000000..653d9ea --- /dev/null +++ b/bff/node_modules/escape-html/Readme.md @@ -0,0 +1,43 @@ + +# escape-html + + Escape string for use in HTML + +## Example + +```js +var escape = require('escape-html'); +var html = escape('foo & bar'); +// -> foo & bar +``` + +## Benchmark + +``` +$ npm run-script bench + +> escape-html@1.0.3 bench nodejs-escape-html +> node benchmark/index.js + + + http_parser@1.0 + node@0.10.33 + v8@3.14.5.9 + ares@1.9.0-DEV + uv@0.10.29 + zlib@1.2.3 + modules@11 + openssl@1.0.1j + + 1 test completed. + 2 tests completed. + 3 tests completed. + + no special characters x 19,435,271 ops/sec ±0.85% (187 runs sampled) + single special character x 6,132,421 ops/sec ±0.67% (194 runs sampled) + many special characters x 3,175,826 ops/sec ±0.65% (193 runs sampled) +``` + +## License + + MIT \ No newline at end of file diff --git a/bff/node_modules/escape-html/index.js b/bff/node_modules/escape-html/index.js new file mode 100644 index 0000000..bf9e226 --- /dev/null +++ b/bff/node_modules/escape-html/index.js @@ -0,0 +1,78 @@ +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ + +'use strict'; + +/** + * Module variables. + * @private + */ + +var matchHtmlRegExp = /["'&<>]/; + +/** + * Module exports. + * @public + */ + +module.exports = escapeHtml; + +/** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: // " + escape = '"'; + break; + case 38: // & + escape = '&'; + break; + case 39: // ' + escape = '''; + break; + case 60: // < + escape = '<'; + break; + case 62: // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index + ? html + str.substring(lastIndex, index) + : html; +} diff --git a/bff/node_modules/escape-html/package.json b/bff/node_modules/escape-html/package.json new file mode 100644 index 0000000..57ec7bd --- /dev/null +++ b/bff/node_modules/escape-html/package.json @@ -0,0 +1,24 @@ +{ + "name": "escape-html", + "description": "Escape string for use in HTML", + "version": "1.0.3", + "license": "MIT", + "keywords": [ + "escape", + "html", + "utility" + ], + "repository": "component/escape-html", + "devDependencies": { + "benchmark": "1.0.0", + "beautify-benchmark": "0.2.4" + }, + "files": [ + "LICENSE", + "Readme.md", + "index.js" + ], + "scripts": { + "bench": "node benchmark/index.js" + } +} diff --git a/bff/node_modules/etag/HISTORY.md b/bff/node_modules/etag/HISTORY.md new file mode 100644 index 0000000..222b293 --- /dev/null +++ b/bff/node_modules/etag/HISTORY.md @@ -0,0 +1,83 @@ +1.8.1 / 2017-09-12 +================== + + * perf: replace regular expression with substring + +1.8.0 / 2017-02-18 +================== + + * Use SHA1 instead of MD5 for ETag hashing + - Improves performance for larger entities + - Works with FIPS 140-2 OpenSSL configuration + +1.7.0 / 2015-06-08 +================== + + * Always include entity length in ETags for hash length extensions + * Generate non-Stats ETags using MD5 only (no longer CRC32) + * Improve stat performance by removing hashing + * Remove base64 padding in ETags to shorten + * Use MD5 instead of MD4 in weak ETags over 1KB + +1.6.0 / 2015-05-10 +================== + + * Improve support for JXcore + * Remove requirement of `atime` in the stats object + * Support "fake" stats objects in environments without `fs` + +1.5.1 / 2014-11-19 +================== + + * deps: crc@3.2.1 + - Minor fixes + +1.5.0 / 2014-10-14 +================== + + * Improve string performance + * Slightly improve speed for weak ETags over 1KB + +1.4.0 / 2014-09-21 +================== + + * Support "fake" stats objects + * Support Node.js 0.6 + +1.3.1 / 2014-09-14 +================== + + * Use the (new and improved) `crc` for crc32 + +1.3.0 / 2014-08-29 +================== + + * Default strings to strong ETags + * Improve speed for weak ETags over 1KB + +1.2.1 / 2014-08-29 +================== + + * Use the (much faster) `buffer-crc32` for crc32 + +1.2.0 / 2014-08-24 +================== + + * Add support for file stat objects + +1.1.0 / 2014-08-24 +================== + + * Add fast-path for empty entity + * Add weak ETag generation + * Shrink size of generated ETags + +1.0.1 / 2014-08-24 +================== + + * Fix behavior of string containing Unicode + +1.0.0 / 2014-05-18 +================== + + * Initial release diff --git a/bff/node_modules/etag/LICENSE b/bff/node_modules/etag/LICENSE new file mode 100644 index 0000000..cab251c --- /dev/null +++ b/bff/node_modules/etag/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/etag/README.md b/bff/node_modules/etag/README.md new file mode 100644 index 0000000..09c2169 --- /dev/null +++ b/bff/node_modules/etag/README.md @@ -0,0 +1,159 @@ +# etag + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Create simple HTTP ETags + +This module generates HTTP ETags (as defined in RFC 7232) for use in +HTTP responses. + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install etag +``` + +## API + + + +```js +var etag = require('etag') +``` + +### etag(entity, [options]) + +Generate a strong ETag for the given entity. This should be the complete +body of the entity. Strings, `Buffer`s, and `fs.Stats` are accepted. By +default, a strong ETag is generated except for `fs.Stats`, which will +generate a weak ETag (this can be overwritten by `options.weak`). + + + +```js +res.setHeader('ETag', etag(body)) +``` + +#### Options + +`etag` accepts these properties in the options object. + +##### weak + +Specifies if the generated ETag will include the weak validator mark (that +is, the leading `W/`). The actual entity tag is the same. The default value +is `false`, unless the `entity` is `fs.Stats`, in which case it is `true`. + +## Testing + +```sh +$ npm test +``` + +## Benchmark + +```bash +$ npm run-script bench + +> etag@1.8.1 bench nodejs-etag +> node benchmark/index.js + + http_parser@2.7.0 + node@6.11.1 + v8@5.1.281.103 + uv@1.11.0 + zlib@1.2.11 + ares@1.10.1-DEV + icu@58.2 + modules@48 + openssl@1.0.2k + +> node benchmark/body0-100b.js + + 100B body + + 4 tests completed. + + buffer - strong x 258,647 ops/sec ±1.07% (180 runs sampled) + buffer - weak x 263,812 ops/sec ±0.61% (184 runs sampled) + string - strong x 259,955 ops/sec ±1.19% (185 runs sampled) + string - weak x 264,356 ops/sec ±1.09% (184 runs sampled) + +> node benchmark/body1-1kb.js + + 1KB body + + 4 tests completed. + + buffer - strong x 189,018 ops/sec ±1.12% (182 runs sampled) + buffer - weak x 190,586 ops/sec ±0.81% (186 runs sampled) + string - strong x 144,272 ops/sec ±0.96% (188 runs sampled) + string - weak x 145,380 ops/sec ±1.43% (187 runs sampled) + +> node benchmark/body2-5kb.js + + 5KB body + + 4 tests completed. + + buffer - strong x 92,435 ops/sec ±0.42% (188 runs sampled) + buffer - weak x 92,373 ops/sec ±0.58% (189 runs sampled) + string - strong x 48,850 ops/sec ±0.56% (186 runs sampled) + string - weak x 49,380 ops/sec ±0.56% (190 runs sampled) + +> node benchmark/body3-10kb.js + + 10KB body + + 4 tests completed. + + buffer - strong x 55,989 ops/sec ±0.93% (188 runs sampled) + buffer - weak x 56,148 ops/sec ±0.55% (190 runs sampled) + string - strong x 27,345 ops/sec ±0.43% (188 runs sampled) + string - weak x 27,496 ops/sec ±0.45% (190 runs sampled) + +> node benchmark/body4-100kb.js + + 100KB body + + 4 tests completed. + + buffer - strong x 7,083 ops/sec ±0.22% (190 runs sampled) + buffer - weak x 7,115 ops/sec ±0.26% (191 runs sampled) + string - strong x 3,068 ops/sec ±0.34% (190 runs sampled) + string - weak x 3,096 ops/sec ±0.35% (190 runs sampled) + +> node benchmark/stats.js + + stat + + 4 tests completed. + + real - strong x 871,642 ops/sec ±0.34% (189 runs sampled) + real - weak x 867,613 ops/sec ±0.39% (190 runs sampled) + fake - strong x 401,051 ops/sec ±0.40% (189 runs sampled) + fake - weak x 400,100 ops/sec ±0.47% (188 runs sampled) +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/etag.svg +[npm-url]: https://npmjs.org/package/etag +[node-version-image]: https://img.shields.io/node/v/etag.svg +[node-version-url]: https://nodejs.org/en/download/ +[travis-image]: https://img.shields.io/travis/jshttp/etag/master.svg +[travis-url]: https://travis-ci.org/jshttp/etag +[coveralls-image]: https://img.shields.io/coveralls/jshttp/etag/master.svg +[coveralls-url]: https://coveralls.io/r/jshttp/etag?branch=master +[downloads-image]: https://img.shields.io/npm/dm/etag.svg +[downloads-url]: https://npmjs.org/package/etag diff --git a/bff/node_modules/etag/index.js b/bff/node_modules/etag/index.js new file mode 100644 index 0000000..2a585c9 --- /dev/null +++ b/bff/node_modules/etag/index.js @@ -0,0 +1,131 @@ +/*! + * etag + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = etag + +/** + * Module dependencies. + * @private + */ + +var crypto = require('crypto') +var Stats = require('fs').Stats + +/** + * Module variables. + * @private + */ + +var toString = Object.prototype.toString + +/** + * Generate an entity tag. + * + * @param {Buffer|string} entity + * @return {string} + * @private + */ + +function entitytag (entity) { + if (entity.length === 0) { + // fast-path empty + return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"' + } + + // compute hash of entity + var hash = crypto + .createHash('sha1') + .update(entity, 'utf8') + .digest('base64') + .substring(0, 27) + + // compute length of entity + var len = typeof entity === 'string' + ? Buffer.byteLength(entity, 'utf8') + : entity.length + + return '"' + len.toString(16) + '-' + hash + '"' +} + +/** + * Create a simple ETag. + * + * @param {string|Buffer|Stats} entity + * @param {object} [options] + * @param {boolean} [options.weak] + * @return {String} + * @public + */ + +function etag (entity, options) { + if (entity == null) { + throw new TypeError('argument entity is required') + } + + // support fs.Stats object + var isStats = isstats(entity) + var weak = options && typeof options.weak === 'boolean' + ? options.weak + : isStats + + // validate argument + if (!isStats && typeof entity !== 'string' && !Buffer.isBuffer(entity)) { + throw new TypeError('argument entity must be string, Buffer, or fs.Stats') + } + + // generate entity tag + var tag = isStats + ? stattag(entity) + : entitytag(entity) + + return weak + ? 'W/' + tag + : tag +} + +/** + * Determine if object is a Stats object. + * + * @param {object} obj + * @return {boolean} + * @api private + */ + +function isstats (obj) { + // genuine fs.Stats + if (typeof Stats === 'function' && obj instanceof Stats) { + return true + } + + // quack quack + return obj && typeof obj === 'object' && + 'ctime' in obj && toString.call(obj.ctime) === '[object Date]' && + 'mtime' in obj && toString.call(obj.mtime) === '[object Date]' && + 'ino' in obj && typeof obj.ino === 'number' && + 'size' in obj && typeof obj.size === 'number' +} + +/** + * Generate a tag for a stat. + * + * @param {object} stat + * @return {string} + * @private + */ + +function stattag (stat) { + var mtime = stat.mtime.getTime().toString(16) + var size = stat.size.toString(16) + + return '"' + size + '-' + mtime + '"' +} diff --git a/bff/node_modules/etag/package.json b/bff/node_modules/etag/package.json new file mode 100644 index 0000000..b06ab80 --- /dev/null +++ b/bff/node_modules/etag/package.json @@ -0,0 +1,47 @@ +{ + "name": "etag", + "description": "Create simple HTTP ETags", + "version": "1.8.1", + "contributors": [ + "Douglas Christopher Wilson ", + "David Björklund " + ], + "license": "MIT", + "keywords": [ + "etag", + "http", + "res" + ], + "repository": "jshttp/etag", + "devDependencies": { + "beautify-benchmark": "0.2.4", + "benchmark": "2.1.4", + "eslint": "3.19.0", + "eslint-config-standard": "10.2.1", + "eslint-plugin-import": "2.7.0", + "eslint-plugin-markdown": "1.0.0-beta.6", + "eslint-plugin-node": "5.1.1", + "eslint-plugin-promise": "3.5.0", + "eslint-plugin-standard": "3.0.1", + "istanbul": "0.4.5", + "mocha": "1.21.5", + "safe-buffer": "5.1.1", + "seedrandom": "2.4.3" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "bench": "node benchmark/index.js", + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + } +} diff --git a/bff/node_modules/express/LICENSE b/bff/node_modules/express/LICENSE new file mode 100644 index 0000000..aa927e4 --- /dev/null +++ b/bff/node_modules/express/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2009-2014 TJ Holowaychuk +Copyright (c) 2013-2014 Roman Shtylman +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/express/Readme.md b/bff/node_modules/express/Readme.md new file mode 100644 index 0000000..4c5b6f7 --- /dev/null +++ b/bff/node_modules/express/Readme.md @@ -0,0 +1,276 @@ +[![Express Logo](https://i.cloudup.com/zfY6lL7eFa-3000x3000.png)](https://expressjs.com/) + +**Fast, unopinionated, minimalist web framework for [Node.js](https://nodejs.org).** + +**This project has a [Code of Conduct].** + +## Table of contents + +- [Table of contents](#table-of-contents) +- [Installation](#installation) +- [Features](#features) +- [Docs \& Community](#docs--community) +- [Quick Start](#quick-start) +- [Philosophy](#philosophy) +- [Examples](#examples) +- [Contributing](#contributing) + - [Security Issues](#security-issues) + - [Running Tests](#running-tests) +- [Current project team members](#current-project-team-members) + - [TC (Technical Committee)](#tc-technical-committee) + - [TC emeriti members](#tc-emeriti-members) + - [Triagers](#triagers) + - [Emeritus Triagers](#emeritus-triagers) +- [License](#license) + + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-downloads-url] +[![Linux Build][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] +[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] + + +```js +import express from 'express' + +const app = express() + +app.get('/', (req, res) => { + res.send('Hello World') +}) + +app.listen(3000, () => { + console.log('Server is running on http://localhost:3000') +}) +``` + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). + +Before installing, [download and install Node.js](https://nodejs.org/en/download/). +Node.js 18 or higher is required. + +If this is a brand new project, make sure to create a `package.json` first with +the [`npm init` command](https://docs.npmjs.com/creating-a-package-json-file). + +Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +npm install express +``` + +Follow [our installing guide](https://expressjs.com/en/starter/installing.html) +for more information. + +## Features + + * Robust routing + * Focus on high performance + * Super-high test coverage + * HTTP helpers (redirection, caching, etc) + * View system supporting 14+ template engines + * Content negotiation + * Executable for generating applications quickly + +## Docs & Community + + * [Website and Documentation](https://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)] + * [GitHub Organization](https://github.com/expressjs) for Official Middleware & Modules + * [Github Discussions](https://github.com/expressjs/discussions) for discussion on the development and usage of Express + +**PROTIP** Be sure to read the [migration guide to v5](https://expressjs.com/en/guide/migrating-5) + +## Quick Start + + The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below: + + Install the executable. The executable's major version will match Express's: + +```bash +npm install -g express-generator@4 +``` + + Create the app: + +```bash +express /tmp/foo && cd /tmp/foo +``` + + Install dependencies: + +```bash +npm install +``` + + Start the server: + +```bash +npm start +``` + + View the website at: http://localhost:3000 + +## Philosophy + + The Express philosophy is to provide small, robust tooling for HTTP servers, making + it a great solution for single page applications, websites, hybrids, or public + HTTP APIs. + + Express does not force you to use any specific ORM or template engine. With support for over + 14 template engines via [@ladjs/consolidate](https://github.com/ladjs/consolidate), + you can quickly craft your perfect framework. + +## Examples + + To view the examples, clone the Express repository: + +```bash +git clone https://github.com/expressjs/express.git --depth 1 && cd express +``` + + Then install the dependencies: + +```bash +npm install +``` + + Then run whichever example you want: + +```bash +node examples/content-negotiation +``` + +## Contributing + +The Express.js project welcomes all constructive contributions. Contributions take many forms, +from code for bug fixes and enhancements, to additions and fixes to documentation, additional +tests, triaging incoming pull requests and issues, and more! + +See the [Contributing Guide] for more technical details on contributing. + +### Security Issues + +If you discover a security vulnerability in Express, please see [Security Policies and Procedures](SECURITY.md). + +### Running Tests + +To run the test suite, first install the dependencies: + +```bash +npm install +``` + +Then run `npm test`: + +```bash +npm test +``` + +## Current project team members + +For information about the governance of the express.js project, see [GOVERNANCE.md](https://github.com/expressjs/discussions/blob/HEAD/docs/GOVERNANCE.md). + +The original author of Express is [TJ Holowaychuk](https://github.com/tj) + +[List of all contributors](https://github.com/expressjs/express/graphs/contributors) + +### TC (Technical Committee) + +* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) +* [jonchurch](https://github.com/jonchurch) - **Jon Church** +* [wesleytodd](https://github.com/wesleytodd) - **Wes Todd** +* [LinusU](https://github.com/LinusU) - **Linus Unnebäck** +* [blakeembrey](https://github.com/blakeembrey) - **Blake Embrey** +* [sheplu](https://github.com/sheplu) - **Jean Burellier** +* [crandmck](https://github.com/crandmck) - **Rand McKinney** +* [ctcpip](https://github.com/ctcpip) - **Chris de Almeida** + +
+TC emeriti members + +#### TC emeriti members + + * [dougwilson](https://github.com/dougwilson) - **Douglas Wilson** + * [hacksparrow](https://github.com/hacksparrow) - **Hage Yaapa** + * [jonathanong](https://github.com/jonathanong) - **jongleberry** + * [niftylettuce](https://github.com/niftylettuce) - **niftylettuce** + * [troygoode](https://github.com/troygoode) - **Troy Goode** +
+ + +### Triagers + +* [aravindvnair99](https://github.com/aravindvnair99) - **Aravind Nair** +* [bjohansebas](https://github.com/bjohansebas) - **Sebastian Beltran** +* [carpasse](https://github.com/carpasse) - **Carlos Serrano** +* [CBID2](https://github.com/CBID2) - **Christine Belzie** +* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him) +* [IamLizu](https://github.com/IamLizu) - **S M Mahmudul Hasan** (he/him) +* [Phillip9587](https://github.com/Phillip9587) - **Phillip Barta** +* [efekrskl](https://github.com/efekrskl) - **Efe Karasakal** + + +
+Triagers emeriti members + +#### Emeritus Triagers + + * [AuggieH](https://github.com/AuggieH) - **Auggie Hudak** + * [G-Rath](https://github.com/G-Rath) - **Gareth Jones** + * [MohammadXroid](https://github.com/MohammadXroid) - **Mohammad Ayashi** + * [NawafSwe](https://github.com/NawafSwe) - **Nawaf Alsharqi** + * [NotMoni](https://github.com/NotMoni) - **Moni** + * [VigneshMurugan](https://github.com/VigneshMurugan) - **Vignesh Murugan** + * [davidmashe](https://github.com/davidmashe) - **David Ashe** + * [digitaIfabric](https://github.com/digitaIfabric) - **David** + * [e-l-i-s-e](https://github.com/e-l-i-s-e) - **Elise Bonner** + * [fed135](https://github.com/fed135) - **Frederic Charette** + * [firmanJS](https://github.com/firmanJS) - **Firman Abdul Hakim** + * [getspooky](https://github.com/getspooky) - **Yasser Ameur** + * [ghinks](https://github.com/ghinks) - **Glenn** + * [ghousemohamed](https://github.com/ghousemohamed) - **Ghouse Mohamed** + * [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil** + * [jake32321](https://github.com/jake32321) - **Jake Reed** + * [jonchurch](https://github.com/jonchurch) - **Jon Church** + * [lekanikotun](https://github.com/lekanikotun) - **Troy Goode** + * [marsonya](https://github.com/marsonya) - **Lekan Ikotun** + * [mastermatt](https://github.com/mastermatt) - **Matt R. Wilson** + * [maxakuru](https://github.com/maxakuru) - **Max Edell** + * [mlrawlings](https://github.com/mlrawlings) - **Michael Rawlings** + * [rodion-arr](https://github.com/rodion-arr) - **Rodion Abdurakhimov** + * [sheplu](https://github.com/sheplu) - **Jean Burellier** + * [tarunyadav1](https://github.com/tarunyadav1) - **Tarun yadav** + * [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe** + * [enyoghasim](https://github.com/enyoghasim) - **David Enyoghasim** + * [0ss](https://github.com/0ss) - **Salah** + * [import-brain](https://github.com/import-brain) - **Eric Cheng** (he/him) + * [dakshkhetan](https://github.com/dakshkhetan) - **Daksh Khetan** (he/him) + * [lucasraziel](https://github.com/lucasraziel) - **Lucas Soares Do Rego** + * [mertcanaltin](https://github.com/mertcanaltin) - **Mert Can Altin** + * [dpopp07](https://github.com/dpopp07) - **Dustin Popp** + * [Sushmeet](https://github.com/Sushmeet) - **Sushmeet Sunger** + * [3imed-jaberi](https://github.com/3imed-jaberi) - **Imed Jaberi** + +
+ + +## License + + [MIT](LICENSE) + +[coveralls-image]: https://img.shields.io/coverallsCoverage/github/expressjs/express?branch=master +[coveralls-url]: https://coveralls.io/r/expressjs/express?branch=master +[github-actions-ci-image]: https://img.shields.io/github/actions/workflow/status/expressjs/express/ci.yml?branch=master&label=ci +[github-actions-ci-url]: https://github.com/expressjs/express/actions/workflows/ci.yml +[npm-downloads-image]: https://img.shields.io/npm/dm/express +[npm-downloads-url]: https://npmcharts.com/compare/express?minimal=true +[npm-url]: https://npmjs.org/package/express +[npm-version-image]: https://img.shields.io/npm/v/express +[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/express/badge +[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/express +[Code of Conduct]: https://github.com/expressjs/.github/blob/HEAD/CODE_OF_CONDUCT.md +[Contributing Guide]: https://github.com/expressjs/.github/blob/HEAD/CONTRIBUTING.md diff --git a/bff/node_modules/express/index.js b/bff/node_modules/express/index.js new file mode 100644 index 0000000..d219b0c --- /dev/null +++ b/bff/node_modules/express/index.js @@ -0,0 +1,11 @@ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +module.exports = require('./lib/express'); diff --git a/bff/node_modules/express/lib/application.js b/bff/node_modules/express/lib/application.js new file mode 100644 index 0000000..838b882 --- /dev/null +++ b/bff/node_modules/express/lib/application.js @@ -0,0 +1,631 @@ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module dependencies. + * @private + */ + +var finalhandler = require('finalhandler'); +var debug = require('debug')('express:application'); +var View = require('./view'); +var http = require('node:http'); +var methods = require('./utils').methods; +var compileETag = require('./utils').compileETag; +var compileQueryParser = require('./utils').compileQueryParser; +var compileTrust = require('./utils').compileTrust; +var resolve = require('node:path').resolve; +var once = require('once') +var Router = require('router'); + +/** + * Module variables. + * @private + */ + +var slice = Array.prototype.slice; +var flatten = Array.prototype.flat; + +/** + * Application prototype. + */ + +var app = exports = module.exports = {}; + +/** + * Variable for trust proxy inheritance back-compat + * @private + */ + +var trustProxyDefaultSymbol = '@@symbol:trust_proxy_default'; + +/** + * Initialize the server. + * + * - setup default configuration + * - setup default middleware + * - setup route reflection methods + * + * @private + */ + +app.init = function init() { + var router = null; + + this.cache = Object.create(null); + this.engines = Object.create(null); + this.settings = Object.create(null); + + this.defaultConfiguration(); + + // Setup getting to lazily add base router + Object.defineProperty(this, 'router', { + configurable: true, + enumerable: true, + get: function getrouter() { + if (router === null) { + router = new Router({ + caseSensitive: this.enabled('case sensitive routing'), + strict: this.enabled('strict routing') + }); + } + + return router; + } + }); +}; + +/** + * Initialize application configuration. + * @private + */ + +app.defaultConfiguration = function defaultConfiguration() { + var env = process.env.NODE_ENV || 'development'; + + // default settings + this.enable('x-powered-by'); + this.set('etag', 'weak'); + this.set('env', env); + this.set('query parser', 'simple') + this.set('subdomain offset', 2); + this.set('trust proxy', false); + + // trust proxy inherit back-compat + Object.defineProperty(this.settings, trustProxyDefaultSymbol, { + configurable: true, + value: true + }); + + debug('booting in %s mode', env); + + this.on('mount', function onmount(parent) { + // inherit trust proxy + if (this.settings[trustProxyDefaultSymbol] === true + && typeof parent.settings['trust proxy fn'] === 'function') { + delete this.settings['trust proxy']; + delete this.settings['trust proxy fn']; + } + + // inherit protos + Object.setPrototypeOf(this.request, parent.request) + Object.setPrototypeOf(this.response, parent.response) + Object.setPrototypeOf(this.engines, parent.engines) + Object.setPrototypeOf(this.settings, parent.settings) + }); + + // setup locals + this.locals = Object.create(null); + + // top-most app is mounted at / + this.mountpath = '/'; + + // default locals + this.locals.settings = this.settings; + + // default configuration + this.set('view', View); + this.set('views', resolve('views')); + this.set('jsonp callback name', 'callback'); + + if (env === 'production') { + this.enable('view cache'); + } +}; + +/** + * Dispatch a req, res pair into the application. Starts pipeline processing. + * + * If no callback is provided, then default error handlers will respond + * in the event of an error bubbling through the stack. + * + * @private + */ + +app.handle = function handle(req, res, callback) { + // final handler + var done = callback || finalhandler(req, res, { + env: this.get('env'), + onerror: logerror.bind(this) + }); + + // set powered by header + if (this.enabled('x-powered-by')) { + res.setHeader('X-Powered-By', 'Express'); + } + + // set circular references + req.res = res; + res.req = req; + + // alter the prototypes + Object.setPrototypeOf(req, this.request) + Object.setPrototypeOf(res, this.response) + + // setup locals + if (!res.locals) { + res.locals = Object.create(null); + } + + this.router.handle(req, res, done); +}; + +/** + * Proxy `Router#use()` to add middleware to the app router. + * See Router#use() documentation for details. + * + * If the _fn_ parameter is an express app, then it will be + * mounted at the _route_ specified. + * + * @public + */ + +app.use = function use(fn) { + var offset = 0; + var path = '/'; + + // default path to '/' + // disambiguate app.use([fn]) + if (typeof fn !== 'function') { + var arg = fn; + + while (Array.isArray(arg) && arg.length !== 0) { + arg = arg[0]; + } + + // first arg is the path + if (typeof arg !== 'function') { + offset = 1; + path = fn; + } + } + + var fns = flatten.call(slice.call(arguments, offset), Infinity); + + if (fns.length === 0) { + throw new TypeError('app.use() requires a middleware function') + } + + // get router + var router = this.router; + + fns.forEach(function (fn) { + // non-express app + if (!fn || !fn.handle || !fn.set) { + return router.use(path, fn); + } + + debug('.use app under %s', path); + fn.mountpath = path; + fn.parent = this; + + // restore .app property on req and res + router.use(path, function mounted_app(req, res, next) { + var orig = req.app; + fn.handle(req, res, function (err) { + Object.setPrototypeOf(req, orig.request) + Object.setPrototypeOf(res, orig.response) + next(err); + }); + }); + + // mounted an app + fn.emit('mount', this); + }, this); + + return this; +}; + +/** + * Proxy to the app `Router#route()` + * Returns a new `Route` instance for the _path_. + * + * Routes are isolated middleware stacks for specific paths. + * See the Route api docs for details. + * + * @public + */ + +app.route = function route(path) { + return this.router.route(path); +}; + +/** + * Register the given template engine callback `fn` + * as `ext`. + * + * By default will `require()` the engine based on the + * file extension. For example if you try to render + * a "foo.ejs" file Express will invoke the following internally: + * + * app.engine('ejs', require('ejs').__express); + * + * For engines that do not provide `.__express` out of the box, + * or if you wish to "map" a different extension to the template engine + * you may use this method. For example mapping the EJS template engine to + * ".html" files: + * + * app.engine('html', require('ejs').renderFile); + * + * In this case EJS provides a `.renderFile()` method with + * the same signature that Express expects: `(path, options, callback)`, + * though note that it aliases this method as `ejs.__express` internally + * so if you're using ".ejs" extensions you don't need to do anything. + * + * Some template engines do not follow this convention, the + * [Consolidate.js](https://github.com/tj/consolidate.js) + * library was created to map all of node's popular template + * engines to follow this convention, thus allowing them to + * work seamlessly within Express. + * + * @param {String} ext + * @param {Function} fn + * @return {app} for chaining + * @public + */ + +app.engine = function engine(ext, fn) { + if (typeof fn !== 'function') { + throw new Error('callback function required'); + } + + // get file extension + var extension = ext[0] !== '.' + ? '.' + ext + : ext; + + // store engine + this.engines[extension] = fn; + + return this; +}; + +/** + * Proxy to `Router#param()` with one added api feature. The _name_ parameter + * can be an array of names. + * + * See the Router#param() docs for more details. + * + * @param {String|Array} name + * @param {Function} fn + * @return {app} for chaining + * @public + */ + +app.param = function param(name, fn) { + if (Array.isArray(name)) { + for (var i = 0; i < name.length; i++) { + this.param(name[i], fn); + } + + return this; + } + + this.router.param(name, fn); + + return this; +}; + +/** + * Assign `setting` to `val`, or return `setting`'s value. + * + * app.set('foo', 'bar'); + * app.set('foo'); + * // => "bar" + * + * Mounted servers inherit their parent server's settings. + * + * @param {String} setting + * @param {*} [val] + * @return {Server} for chaining + * @public + */ + +app.set = function set(setting, val) { + if (arguments.length === 1) { + // app.get(setting) + return this.settings[setting]; + } + + debug('set "%s" to %o', setting, val); + + // set value + this.settings[setting] = val; + + // trigger matched settings + switch (setting) { + case 'etag': + this.set('etag fn', compileETag(val)); + break; + case 'query parser': + this.set('query parser fn', compileQueryParser(val)); + break; + case 'trust proxy': + this.set('trust proxy fn', compileTrust(val)); + + // trust proxy inherit back-compat + Object.defineProperty(this.settings, trustProxyDefaultSymbol, { + configurable: true, + value: false + }); + + break; + } + + return this; +}; + +/** + * Return the app's absolute pathname + * based on the parent(s) that have + * mounted it. + * + * For example if the application was + * mounted as "/admin", which itself + * was mounted as "/blog" then the + * return value would be "/blog/admin". + * + * @return {String} + * @private + */ + +app.path = function path() { + return this.parent + ? this.parent.path() + this.mountpath + : ''; +}; + +/** + * Check if `setting` is enabled (truthy). + * + * app.enabled('foo') + * // => false + * + * app.enable('foo') + * app.enabled('foo') + * // => true + * + * @param {String} setting + * @return {Boolean} + * @public + */ + +app.enabled = function enabled(setting) { + return Boolean(this.set(setting)); +}; + +/** + * Check if `setting` is disabled. + * + * app.disabled('foo') + * // => true + * + * app.enable('foo') + * app.disabled('foo') + * // => false + * + * @param {String} setting + * @return {Boolean} + * @public + */ + +app.disabled = function disabled(setting) { + return !this.set(setting); +}; + +/** + * Enable `setting`. + * + * @param {String} setting + * @return {app} for chaining + * @public + */ + +app.enable = function enable(setting) { + return this.set(setting, true); +}; + +/** + * Disable `setting`. + * + * @param {String} setting + * @return {app} for chaining + * @public + */ + +app.disable = function disable(setting) { + return this.set(setting, false); +}; + +/** + * Delegate `.VERB(...)` calls to `router.VERB(...)`. + */ + +methods.forEach(function (method) { + app[method] = function (path) { + if (method === 'get' && arguments.length === 1) { + // app.get(setting) + return this.set(path); + } + + var route = this.route(path); + route[method].apply(route, slice.call(arguments, 1)); + return this; + }; +}); + +/** + * Special-cased "all" method, applying the given route `path`, + * middleware, and callback to _every_ HTTP method. + * + * @param {String} path + * @param {Function} ... + * @return {app} for chaining + * @public + */ + +app.all = function all(path) { + var route = this.route(path); + var args = slice.call(arguments, 1); + + for (var i = 0; i < methods.length; i++) { + route[methods[i]].apply(route, args); + } + + return this; +}; + +/** + * Render the given view `name` name with `options` + * and a callback accepting an error and the + * rendered template string. + * + * Example: + * + * app.render('email', { name: 'Tobi' }, function(err, html){ + * // ... + * }) + * + * @param {String} name + * @param {Object|Function} options or fn + * @param {Function} callback + * @public + */ + +app.render = function render(name, options, callback) { + var cache = this.cache; + var done = callback; + var engines = this.engines; + var opts = options; + var view; + + // support callback function as second arg + if (typeof options === 'function') { + done = options; + opts = {}; + } + + // merge options + var renderOptions = { ...this.locals, ...opts._locals, ...opts }; + + // set .cache unless explicitly provided + if (renderOptions.cache == null) { + renderOptions.cache = this.enabled('view cache'); + } + + // primed cache + if (renderOptions.cache) { + view = cache[name]; + } + + // view + if (!view) { + var View = this.get('view'); + + view = new View(name, { + defaultEngine: this.get('view engine'), + root: this.get('views'), + engines: engines + }); + + if (!view.path) { + var dirs = Array.isArray(view.root) && view.root.length > 1 + ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"' + : 'directory "' + view.root + '"' + var err = new Error('Failed to lookup view "' + name + '" in views ' + dirs); + err.view = view; + return done(err); + } + + // prime the cache + if (renderOptions.cache) { + cache[name] = view; + } + } + + // render + tryRender(view, renderOptions, done); +}; + +/** + * Listen for connections. + * + * A node `http.Server` is returned, with this + * application (which is a `Function`) as its + * callback. If you wish to create both an HTTP + * and HTTPS server you may do so with the "http" + * and "https" modules as shown here: + * + * var http = require('node:http') + * , https = require('node:https') + * , express = require('express') + * , app = express(); + * + * http.createServer(app).listen(80); + * https.createServer({ ... }, app).listen(443); + * + * @return {http.Server} + * @public + */ + +app.listen = function listen() { + var server = http.createServer(this) + var args = slice.call(arguments) + if (typeof args[args.length - 1] === 'function') { + var done = args[args.length - 1] = once(args[args.length - 1]) + server.once('error', done) + } + return server.listen.apply(server, args) +} + +/** + * Log error using console.error. + * + * @param {Error} err + * @private + */ + +function logerror(err) { + /* istanbul ignore next */ + if (this.get('env') !== 'test') console.error(err.stack || err.toString()); +} + +/** + * Try rendering a view. + * @private + */ + +function tryRender(view, options, callback) { + try { + view.render(options, callback); + } catch (err) { + callback(err); + } +} diff --git a/bff/node_modules/express/lib/express.js b/bff/node_modules/express/lib/express.js new file mode 100644 index 0000000..2d502eb --- /dev/null +++ b/bff/node_modules/express/lib/express.js @@ -0,0 +1,81 @@ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module dependencies. + */ + +var bodyParser = require('body-parser') +var EventEmitter = require('node:events').EventEmitter; +var mixin = require('merge-descriptors'); +var proto = require('./application'); +var Router = require('router'); +var req = require('./request'); +var res = require('./response'); + +/** + * Expose `createApplication()`. + */ + +exports = module.exports = createApplication; + +/** + * Create an express application. + * + * @return {Function} + * @api public + */ + +function createApplication() { + var app = function(req, res, next) { + app.handle(req, res, next); + }; + + mixin(app, EventEmitter.prototype, false); + mixin(app, proto, false); + + // expose the prototype that will get set on requests + app.request = Object.create(req, { + app: { configurable: true, enumerable: true, writable: true, value: app } + }) + + // expose the prototype that will get set on responses + app.response = Object.create(res, { + app: { configurable: true, enumerable: true, writable: true, value: app } + }) + + app.init(); + return app; +} + +/** + * Expose the prototypes. + */ + +exports.application = proto; +exports.request = req; +exports.response = res; + +/** + * Expose constructors. + */ + +exports.Route = Router.Route; +exports.Router = Router; + +/** + * Expose middleware + */ + +exports.json = bodyParser.json +exports.raw = bodyParser.raw +exports.static = require('serve-static'); +exports.text = bodyParser.text +exports.urlencoded = bodyParser.urlencoded diff --git a/bff/node_modules/express/lib/request.js b/bff/node_modules/express/lib/request.js new file mode 100644 index 0000000..69990da --- /dev/null +++ b/bff/node_modules/express/lib/request.js @@ -0,0 +1,514 @@ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module dependencies. + * @private + */ + +var accepts = require('accepts'); +var isIP = require('node:net').isIP; +var typeis = require('type-is'); +var http = require('node:http'); +var fresh = require('fresh'); +var parseRange = require('range-parser'); +var parse = require('parseurl'); +var proxyaddr = require('proxy-addr'); + +/** + * Request prototype. + * @public + */ + +var req = Object.create(http.IncomingMessage.prototype) + +/** + * Module exports. + * @public + */ + +module.exports = req + +/** + * Return request header. + * + * The `Referrer` header field is special-cased, + * both `Referrer` and `Referer` are interchangeable. + * + * Examples: + * + * req.get('Content-Type'); + * // => "text/plain" + * + * req.get('content-type'); + * // => "text/plain" + * + * req.get('Something'); + * // => undefined + * + * Aliased as `req.header()`. + * + * @param {String} name + * @return {String} + * @public + */ + +req.get = +req.header = function header(name) { + if (!name) { + throw new TypeError('name argument is required to req.get'); + } + + if (typeof name !== 'string') { + throw new TypeError('name must be a string to req.get'); + } + + var lc = name.toLowerCase(); + + switch (lc) { + case 'referer': + case 'referrer': + return this.headers.referrer + || this.headers.referer; + default: + return this.headers[lc]; + } +}; + +/** + * To do: update docs. + * + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single MIME type string + * such as "application/json", an extension name + * such as "json", a comma-delimited list such as "json, html, text/plain", + * an argument list such as `"json", "html", "text/plain"`, + * or an array `["json", "html", "text/plain"]`. When a list + * or array is given, the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * req.accepts('html'); + * // => "html" + * + * // Accept: text/*, application/json + * req.accepts('html'); + * // => "html" + * req.accepts('text/html'); + * // => "text/html" + * req.accepts('json, text'); + * // => "json" + * req.accepts('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * req.accepts('image/png'); + * req.accepts('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * req.accepts(['html', 'json']); + * req.accepts('html', 'json'); + * req.accepts('html, json'); + * // => "json" + * + * @param {String|Array} type(s) + * @return {String|Array|Boolean} + * @public + */ + +req.accepts = function(){ + var accept = accepts(this); + return accept.types.apply(accept, arguments); +}; + +/** + * Check if the given `encoding`s are accepted. + * + * @param {String} ...encoding + * @return {String|Array} + * @public + */ + +req.acceptsEncodings = function(){ + var accept = accepts(this); + return accept.encodings.apply(accept, arguments); +}; + +/** + * Check if the given `charset`s are acceptable, + * otherwise you should respond with 406 "Not Acceptable". + * + * @param {String} ...charset + * @return {String|Array} + * @public + */ + +req.acceptsCharsets = function(){ + var accept = accepts(this); + return accept.charsets.apply(accept, arguments); +}; + +/** + * Check if the given `lang`s are acceptable, + * otherwise you should respond with 406 "Not Acceptable". + * + * @param {String} ...lang + * @return {String|Array} + * @public + */ + +req.acceptsLanguages = function(...languages) { + return accepts(this).languages(...languages); +}; + +/** + * Parse Range header field, capping to the given `size`. + * + * Unspecified ranges such as "0-" require knowledge of your resource length. In + * the case of a byte range this is of course the total number of bytes. If the + * Range header field is not given `undefined` is returned, `-1` when unsatisfiable, + * and `-2` when syntactically invalid. + * + * When ranges are returned, the array has a "type" property which is the type of + * range that is required (most commonly, "bytes"). Each array element is an object + * with a "start" and "end" property for the portion of the range. + * + * The "combine" option can be set to `true` and overlapping & adjacent ranges + * will be combined into a single range. + * + * NOTE: remember that ranges are inclusive, so for example "Range: users=0-3" + * should respond with 4 users when available, not 3. + * + * @param {number} size + * @param {object} [options] + * @param {boolean} [options.combine=false] + * @return {number|array} + * @public + */ + +req.range = function range(size, options) { + var range = this.get('Range'); + if (!range) return; + return parseRange(size, range, options); +}; + +/** + * Parse the query string of `req.url`. + * + * This uses the "query parser" setting to parse the raw + * string into an object. + * + * @return {String} + * @api public + */ + +defineGetter(req, 'query', function query(){ + var queryparse = this.app.get('query parser fn'); + + if (!queryparse) { + // parsing is disabled + return Object.create(null); + } + + var querystring = parse(this).query; + + return queryparse(querystring); +}); + +/** + * Check if the incoming request contains the "Content-Type" + * header field, and it contains the given mime `type`. + * + * Examples: + * + * // With Content-Type: text/html; charset=utf-8 + * req.is('html'); + * req.is('text/html'); + * req.is('text/*'); + * // => true + * + * // When Content-Type is application/json + * req.is('json'); + * req.is('application/json'); + * req.is('application/*'); + * // => true + * + * req.is('html'); + * // => false + * + * @param {String|Array} types... + * @return {String|false|null} + * @public + */ + +req.is = function is(types) { + var arr = types; + + // support flattened arguments + if (!Array.isArray(types)) { + arr = new Array(arguments.length); + for (var i = 0; i < arr.length; i++) { + arr[i] = arguments[i]; + } + } + + return typeis(this, arr); +}; + +/** + * Return the protocol string "http" or "https" + * when requested with TLS. When the "trust proxy" + * setting trusts the socket address, the + * "X-Forwarded-Proto" header field will be trusted + * and used if present. + * + * If you're running behind a reverse proxy that + * supplies https for you this may be enabled. + * + * @return {String} + * @public + */ + +defineGetter(req, 'protocol', function protocol(){ + var proto = this.socket.encrypted + ? 'https' + : 'http'; + var trust = this.app.get('trust proxy fn'); + + if (!trust(this.socket.remoteAddress, 0)) { + return proto; + } + + // Note: X-Forwarded-Proto is normally only ever a + // single value, but this is to be safe. + var header = this.get('X-Forwarded-Proto') || proto + var index = header.indexOf(',') + + return index !== -1 + ? header.substring(0, index).trim() + : header.trim() +}); + +/** + * Short-hand for: + * + * req.protocol === 'https' + * + * @return {Boolean} + * @public + */ + +defineGetter(req, 'secure', function secure(){ + return this.protocol === 'https'; +}); + +/** + * Return the remote address from the trusted proxy. + * + * The is the remote address on the socket unless + * "trust proxy" is set. + * + * @return {String} + * @public + */ + +defineGetter(req, 'ip', function ip(){ + var trust = this.app.get('trust proxy fn'); + return proxyaddr(this, trust); +}); + +/** + * When "trust proxy" is set, trusted proxy addresses + client. + * + * For example if the value were "client, proxy1, proxy2" + * you would receive the array `["client", "proxy1", "proxy2"]` + * where "proxy2" is the furthest down-stream and "proxy1" and + * "proxy2" were trusted. + * + * @return {Array} + * @public + */ + +defineGetter(req, 'ips', function ips() { + var trust = this.app.get('trust proxy fn'); + var addrs = proxyaddr.all(this, trust); + + // reverse the order (to farthest -> closest) + // and remove socket address + addrs.reverse().pop() + + return addrs +}); + +/** + * Return subdomains as an array. + * + * Subdomains are the dot-separated parts of the host before the main domain of + * the app. By default, the domain of the app is assumed to be the last two + * parts of the host. This can be changed by setting "subdomain offset". + * + * For example, if the domain is "tobi.ferrets.example.com": + * If "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`. + * If "subdomain offset" is 3, req.subdomains is `["tobi"]`. + * + * @return {Array} + * @public + */ + +defineGetter(req, 'subdomains', function subdomains() { + var hostname = this.hostname; + + if (!hostname) return []; + + var offset = this.app.get('subdomain offset'); + var subdomains = !isIP(hostname) + ? hostname.split('.').reverse() + : [hostname]; + + return subdomains.slice(offset); +}); + +/** + * Short-hand for `url.parse(req.url).pathname`. + * + * @return {String} + * @public + */ + +defineGetter(req, 'path', function path() { + return parse(this).pathname; +}); + +/** + * Parse the "Host" header field to a host. + * + * When the "trust proxy" setting trusts the socket + * address, the "X-Forwarded-Host" header field will + * be trusted. + * + * @return {String} + * @public + */ + +defineGetter(req, 'host', function host(){ + var trust = this.app.get('trust proxy fn'); + var val = this.get('X-Forwarded-Host'); + + if (!val || !trust(this.socket.remoteAddress, 0)) { + val = this.get('Host'); + } else if (val.indexOf(',') !== -1) { + // Note: X-Forwarded-Host is normally only ever a + // single value, but this is to be safe. + val = val.substring(0, val.indexOf(',')).trimRight() + } + + return val || undefined; +}); + +/** + * Parse the "Host" header field to a hostname. + * + * When the "trust proxy" setting trusts the socket + * address, the "X-Forwarded-Host" header field will + * be trusted. + * + * @return {String} + * @api public + */ + +defineGetter(req, 'hostname', function hostname(){ + var host = this.host; + + if (!host) return; + + // IPv6 literal support + var offset = host[0] === '[' + ? host.indexOf(']') + 1 + : 0; + var index = host.indexOf(':', offset); + + return index !== -1 + ? host.substring(0, index) + : host; +}); + +/** + * Check if the request is fresh, aka + * Last-Modified or the ETag + * still match. + * + * @return {Boolean} + * @public + */ + +defineGetter(req, 'fresh', function(){ + var method = this.method; + var res = this.res + var status = res.statusCode + + // GET or HEAD for weak freshness validation only + if ('GET' !== method && 'HEAD' !== method) return false; + + // 2xx or 304 as per rfc2616 14.26 + if ((status >= 200 && status < 300) || 304 === status) { + return fresh(this.headers, { + 'etag': res.get('ETag'), + 'last-modified': res.get('Last-Modified') + }) + } + + return false; +}); + +/** + * Check if the request is stale, aka + * "Last-Modified" and / or the "ETag" for the + * resource has changed. + * + * @return {Boolean} + * @public + */ + +defineGetter(req, 'stale', function stale(){ + return !this.fresh; +}); + +/** + * Check if the request was an _XMLHttpRequest_. + * + * @return {Boolean} + * @public + */ + +defineGetter(req, 'xhr', function xhr(){ + var val = this.get('X-Requested-With') || ''; + return val.toLowerCase() === 'xmlhttprequest'; +}); + +/** + * Helper function for creating a getter on an object. + * + * @param {Object} obj + * @param {String} name + * @param {Function} getter + * @private + */ +function defineGetter(obj, name, getter) { + Object.defineProperty(obj, name, { + configurable: true, + enumerable: true, + get: getter + }); +} diff --git a/bff/node_modules/express/lib/response.js b/bff/node_modules/express/lib/response.js new file mode 100644 index 0000000..7a2f0ec --- /dev/null +++ b/bff/node_modules/express/lib/response.js @@ -0,0 +1,1053 @@ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module dependencies. + * @private + */ + +var contentDisposition = require('content-disposition'); +var createError = require('http-errors') +var deprecate = require('depd')('express'); +var encodeUrl = require('encodeurl'); +var escapeHtml = require('escape-html'); +var http = require('node:http'); +var onFinished = require('on-finished'); +var mime = require('mime-types') +var path = require('node:path'); +var pathIsAbsolute = require('node:path').isAbsolute; +var statuses = require('statuses') +var sign = require('cookie-signature').sign; +var normalizeType = require('./utils').normalizeType; +var normalizeTypes = require('./utils').normalizeTypes; +var setCharset = require('./utils').setCharset; +var cookie = require('cookie'); +var send = require('send'); +var extname = path.extname; +var resolve = path.resolve; +var vary = require('vary'); +const { Buffer } = require('node:buffer'); + +/** + * Response prototype. + * @public + */ + +var res = Object.create(http.ServerResponse.prototype) + +/** + * Module exports. + * @public + */ + +module.exports = res + +/** + * Set the HTTP status code for the response. + * + * Expects an integer value between 100 and 999 inclusive. + * Throws an error if the provided status code is not an integer or if it's outside the allowable range. + * + * @param {number} code - The HTTP status code to set. + * @return {ServerResponse} - Returns itself for chaining methods. + * @throws {TypeError} If `code` is not an integer. + * @throws {RangeError} If `code` is outside the range 100 to 999. + * @public + */ + +res.status = function status(code) { + // Check if the status code is not an integer + if (!Number.isInteger(code)) { + throw new TypeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be an integer.`); + } + // Check if the status code is outside of Node's valid range + if (code < 100 || code > 999) { + throw new RangeError(`Invalid status code: ${JSON.stringify(code)}. Status code must be greater than 99 and less than 1000.`); + } + + this.statusCode = code; + return this; +}; + +/** + * Set Link header field with the given `links`. + * + * Examples: + * + * res.links({ + * next: 'http://api.example.com/users?page=2', + * last: 'http://api.example.com/users?page=5', + * pages: [ + * 'http://api.example.com/users?page=1', + * 'http://api.example.com/users?page=2' + * ] + * }); + * + * @param {Object} links + * @return {ServerResponse} + * @public + */ + +res.links = function(links) { + var link = this.get('Link') || ''; + if (link) link += ', '; + return this.set('Link', link + Object.keys(links).map(function(rel) { + // Allow multiple links if links[rel] is an array + if (Array.isArray(links[rel])) { + return links[rel].map(function (singleLink) { + return `<${singleLink}>; rel="${rel}"`; + }).join(', '); + } else { + return `<${links[rel]}>; rel="${rel}"`; + } + }).join(', ')); +}; + +/** + * Send a response. + * + * Examples: + * + * res.send(Buffer.from('wahoo')); + * res.send({ some: 'json' }); + * res.send('

some html

'); + * + * @param {string|number|boolean|object|Buffer} body + * @public + */ + +res.send = function send(body) { + var chunk = body; + var encoding; + var req = this.req; + var type; + + // settings + var app = this.app; + + switch (typeof chunk) { + // string defaulting to html + case 'string': + if (!this.get('Content-Type')) { + this.type('html'); + } + break; + case 'boolean': + case 'number': + case 'object': + if (chunk === null) { + chunk = ''; + } else if (ArrayBuffer.isView(chunk)) { + if (!this.get('Content-Type')) { + this.type('bin'); + } + } else { + return this.json(chunk); + } + break; + } + + // write strings in utf-8 + if (typeof chunk === 'string') { + encoding = 'utf8'; + type = this.get('Content-Type'); + + // reflect this in content-type + if (typeof type === 'string') { + this.set('Content-Type', setCharset(type, 'utf-8')); + } + } + + // determine if ETag should be generated + var etagFn = app.get('etag fn') + var generateETag = !this.get('ETag') && typeof etagFn === 'function' + + // populate Content-Length + var len + if (chunk !== undefined) { + if (Buffer.isBuffer(chunk)) { + // get length of Buffer + len = chunk.length + } else if (!generateETag && chunk.length < 1000) { + // just calculate length when no ETag + small chunk + len = Buffer.byteLength(chunk, encoding) + } else { + // convert chunk to Buffer and calculate + chunk = Buffer.from(chunk, encoding) + encoding = undefined; + len = chunk.length + } + + this.set('Content-Length', len); + } + + // populate ETag + var etag; + if (generateETag && len !== undefined) { + if ((etag = etagFn(chunk, encoding))) { + this.set('ETag', etag); + } + } + + // freshness + if (req.fresh) this.status(304); + + // strip irrelevant headers + if (204 === this.statusCode || 304 === this.statusCode) { + this.removeHeader('Content-Type'); + this.removeHeader('Content-Length'); + this.removeHeader('Transfer-Encoding'); + chunk = ''; + } + + // alter headers for 205 + if (this.statusCode === 205) { + this.set('Content-Length', '0') + this.removeHeader('Transfer-Encoding') + chunk = '' + } + + if (req.method === 'HEAD') { + // skip body for HEAD + this.end(); + } else { + // respond + this.end(chunk, encoding); + } + + return this; +}; + +/** + * Send JSON response. + * + * Examples: + * + * res.json(null); + * res.json({ user: 'tj' }); + * + * @param {string|number|boolean|object} obj + * @public + */ + +res.json = function json(obj) { + // settings + var app = this.app; + var escape = app.get('json escape') + var replacer = app.get('json replacer'); + var spaces = app.get('json spaces'); + var body = stringify(obj, replacer, spaces, escape) + + // content-type + if (!this.get('Content-Type')) { + this.set('Content-Type', 'application/json'); + } + + return this.send(body); +}; + +/** + * Send JSON response with JSONP callback support. + * + * Examples: + * + * res.jsonp(null); + * res.jsonp({ user: 'tj' }); + * + * @param {string|number|boolean|object} obj + * @public + */ + +res.jsonp = function jsonp(obj) { + // settings + var app = this.app; + var escape = app.get('json escape') + var replacer = app.get('json replacer'); + var spaces = app.get('json spaces'); + var body = stringify(obj, replacer, spaces, escape) + var callback = this.req.query[app.get('jsonp callback name')]; + + // content-type + if (!this.get('Content-Type')) { + this.set('X-Content-Type-Options', 'nosniff'); + this.set('Content-Type', 'application/json'); + } + + // fixup callback + if (Array.isArray(callback)) { + callback = callback[0]; + } + + // jsonp + if (typeof callback === 'string' && callback.length !== 0) { + this.set('X-Content-Type-Options', 'nosniff'); + this.set('Content-Type', 'text/javascript'); + + // restrict callback charset + callback = callback.replace(/[^\[\]\w$.]/g, ''); + + if (body === undefined) { + // empty argument + body = '' + } else if (typeof body === 'string') { + // replace chars not allowed in JavaScript that are in JSON + body = body + .replace(/\u2028/g, '\\u2028') + .replace(/\u2029/g, '\\u2029') + } + + // the /**/ is a specific security mitigation for "Rosetta Flash JSONP abuse" + // the typeof check is just to reduce client error noise + body = '/**/ typeof ' + callback + ' === \'function\' && ' + callback + '(' + body + ');'; + } + + return this.send(body); +}; + +/** + * Send given HTTP status code. + * + * Sets the response status to `statusCode` and the body of the + * response to the standard description from node's http.STATUS_CODES + * or the statusCode number if no description. + * + * Examples: + * + * res.sendStatus(200); + * + * @param {number} statusCode + * @public + */ + +res.sendStatus = function sendStatus(statusCode) { + var body = statuses.message[statusCode] || String(statusCode) + + this.status(statusCode); + this.type('txt'); + + return this.send(body); +}; + +/** + * Transfer the file at the given `path`. + * + * Automatically sets the _Content-Type_ response header field. + * The callback `callback(err)` is invoked when the transfer is complete + * or when an error occurs. Be sure to check `res.headersSent` + * if you wish to attempt responding, as the header and some data + * may have already been transferred. + * + * Options: + * + * - `maxAge` defaulting to 0 (can be string converted by `ms`) + * - `root` root directory for relative filenames + * - `headers` object of headers to serve with file + * - `dotfiles` serve dotfiles, defaulting to false; can be `"allow"` to send them + * + * Other options are passed along to `send`. + * + * Examples: + * + * The following example illustrates how `res.sendFile()` may + * be used as an alternative for the `static()` middleware for + * dynamic situations. The code backing `res.sendFile()` is actually + * the same code, so HTTP cache support etc is identical. + * + * app.get('/user/:uid/photos/:file', function(req, res){ + * var uid = req.params.uid + * , file = req.params.file; + * + * req.user.mayViewFilesFrom(uid, function(yes){ + * if (yes) { + * res.sendFile('/uploads/' + uid + '/' + file); + * } else { + * res.send(403, 'Sorry! you cant see that.'); + * } + * }); + * }); + * + * @public + */ + +res.sendFile = function sendFile(path, options, callback) { + var done = callback; + var req = this.req; + var res = this; + var next = req.next; + var opts = options || {}; + + if (!path) { + throw new TypeError('path argument is required to res.sendFile'); + } + + if (typeof path !== 'string') { + throw new TypeError('path must be a string to res.sendFile') + } + + // support function as second arg + if (typeof options === 'function') { + done = options; + opts = {}; + } + + if (!opts.root && !pathIsAbsolute(path)) { + throw new TypeError('path must be absolute or specify root to res.sendFile'); + } + + // create file stream + var pathname = encodeURI(path); + + // wire application etag option to send + opts.etag = this.app.enabled('etag'); + var file = send(req, pathname, opts); + + // transfer + sendfile(res, file, opts, function (err) { + if (done) return done(err); + if (err && err.code === 'EISDIR') return next(); + + // next() all but write errors + if (err && err.code !== 'ECONNABORTED' && err.syscall !== 'write') { + next(err); + } + }); +}; + +/** + * Transfer the file at the given `path` as an attachment. + * + * Optionally providing an alternate attachment `filename`, + * and optional callback `callback(err)`. The callback is invoked + * when the data transfer is complete, or when an error has + * occurred. Be sure to check `res.headersSent` if you plan to respond. + * + * Optionally providing an `options` object to use with `res.sendFile()`. + * This function will set the `Content-Disposition` header, overriding + * any `Content-Disposition` header passed as header options in order + * to set the attachment and filename. + * + * This method uses `res.sendFile()`. + * + * @public + */ + +res.download = function download (path, filename, options, callback) { + var done = callback; + var name = filename; + var opts = options || null + + // support function as second or third arg + if (typeof filename === 'function') { + done = filename; + name = null; + opts = null + } else if (typeof options === 'function') { + done = options + opts = null + } + + // support optional filename, where options may be in it's place + if (typeof filename === 'object' && + (typeof options === 'function' || options === undefined)) { + name = null + opts = filename + } + + // set Content-Disposition when file is sent + var headers = { + 'Content-Disposition': contentDisposition(name || path) + }; + + // merge user-provided headers + if (opts && opts.headers) { + var keys = Object.keys(opts.headers) + for (var i = 0; i < keys.length; i++) { + var key = keys[i] + if (key.toLowerCase() !== 'content-disposition') { + headers[key] = opts.headers[key] + } + } + } + + // merge user-provided options + opts = Object.create(opts) + opts.headers = headers + + // Resolve the full path for sendFile + var fullPath = !opts.root + ? resolve(path) + : path + + // send file + return this.sendFile(fullPath, opts, done) +}; + +/** + * Set _Content-Type_ response header with `type` through `mime.contentType()` + * when it does not contain "/", or set the Content-Type to `type` otherwise. + * When no mapping is found though `mime.contentType()`, the type is set to + * "application/octet-stream". + * + * Examples: + * + * res.type('.html'); + * res.type('html'); + * res.type('json'); + * res.type('application/json'); + * res.type('png'); + * + * @param {String} type + * @return {ServerResponse} for chaining + * @public + */ + +res.contentType = +res.type = function contentType(type) { + var ct = type.indexOf('/') === -1 + ? (mime.contentType(type) || 'application/octet-stream') + : type; + + return this.set('Content-Type', ct); +}; + +/** + * Respond to the Acceptable formats using an `obj` + * of mime-type callbacks. + * + * This method uses `req.accepted`, an array of + * acceptable types ordered by their quality values. + * When "Accept" is not present the _first_ callback + * is invoked, otherwise the first match is used. When + * no match is performed the server responds with + * 406 "Not Acceptable". + * + * Content-Type is set for you, however if you choose + * you may alter this within the callback using `res.type()` + * or `res.set('Content-Type', ...)`. + * + * res.format({ + * 'text/plain': function(){ + * res.send('hey'); + * }, + * + * 'text/html': function(){ + * res.send('

hey

'); + * }, + * + * 'application/json': function () { + * res.send({ message: 'hey' }); + * } + * }); + * + * In addition to canonicalized MIME types you may + * also use extnames mapped to these types: + * + * res.format({ + * text: function(){ + * res.send('hey'); + * }, + * + * html: function(){ + * res.send('

hey

'); + * }, + * + * json: function(){ + * res.send({ message: 'hey' }); + * } + * }); + * + * By default Express passes an `Error` + * with a `.status` of 406 to `next(err)` + * if a match is not made. If you provide + * a `.default` callback it will be invoked + * instead. + * + * @param {Object} obj + * @return {ServerResponse} for chaining + * @public + */ + +res.format = function(obj){ + var req = this.req; + var next = req.next; + + var keys = Object.keys(obj) + .filter(function (v) { return v !== 'default' }) + + var key = keys.length > 0 + ? req.accepts(keys) + : false; + + this.vary("Accept"); + + if (key) { + this.set('Content-Type', normalizeType(key).value); + obj[key](req, this, next); + } else if (obj.default) { + obj.default(req, this, next) + } else { + next(createError(406, { + types: normalizeTypes(keys).map(function (o) { return o.value }) + })) + } + + return this; +}; + +/** + * Set _Content-Disposition_ header to _attachment_ with optional `filename`. + * + * @param {String} filename + * @return {ServerResponse} + * @public + */ + +res.attachment = function attachment(filename) { + if (filename) { + this.type(extname(filename)); + } + + this.set('Content-Disposition', contentDisposition(filename)); + + return this; +}; + +/** + * Append additional header `field` with value `val`. + * + * Example: + * + * res.append('Link', ['', '']); + * res.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly'); + * res.append('Warning', '199 Miscellaneous warning'); + * + * @param {String} field + * @param {String|Array} val + * @return {ServerResponse} for chaining + * @public + */ + +res.append = function append(field, val) { + var prev = this.get(field); + var value = val; + + if (prev) { + // concat the new and prev vals + value = Array.isArray(prev) ? prev.concat(val) + : Array.isArray(val) ? [prev].concat(val) + : [prev, val] + } + + return this.set(field, value); +}; + +/** + * Set header `field` to `val`, or pass + * an object of header fields. + * + * Examples: + * + * res.set('Foo', ['bar', 'baz']); + * res.set('Accept', 'application/json'); + * res.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' }); + * + * Aliased as `res.header()`. + * + * When the set header is "Content-Type", the type is expanded to include + * the charset if not present using `mime.contentType()`. + * + * @param {String|Object} field + * @param {String|Array} val + * @return {ServerResponse} for chaining + * @public + */ + +res.set = +res.header = function header(field, val) { + if (arguments.length === 2) { + var value = Array.isArray(val) + ? val.map(String) + : String(val); + + // add charset to content-type + if (field.toLowerCase() === 'content-type') { + if (Array.isArray(value)) { + throw new TypeError('Content-Type cannot be set to an Array'); + } + value = mime.contentType(value) + } + + this.setHeader(field, value); + } else { + for (var key in field) { + this.set(key, field[key]); + } + } + return this; +}; + +/** + * Get value for header `field`. + * + * @param {String} field + * @return {String} + * @public + */ + +res.get = function(field){ + return this.getHeader(field); +}; + +/** + * Clear cookie `name`. + * + * @param {String} name + * @param {Object} [options] + * @return {ServerResponse} for chaining + * @public + */ + +res.clearCookie = function clearCookie(name, options) { + // Force cookie expiration by setting expires to the past + const opts = { path: '/', ...options, expires: new Date(1)}; + // ensure maxAge is not passed + delete opts.maxAge + + return this.cookie(name, '', opts); +}; + +/** + * Set cookie `name` to `value`, with the given `options`. + * + * Options: + * + * - `maxAge` max-age in milliseconds, converted to `expires` + * - `signed` sign the cookie + * - `path` defaults to "/" + * + * Examples: + * + * // "Remember Me" for 15 minutes + * res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true }); + * + * // same as above + * res.cookie('rememberme', '1', { maxAge: 900000, httpOnly: true }) + * + * @param {String} name + * @param {String|Object} value + * @param {Object} [options] + * @return {ServerResponse} for chaining + * @public + */ + +res.cookie = function (name, value, options) { + var opts = { ...options }; + var secret = this.req.secret; + var signed = opts.signed; + + if (signed && !secret) { + throw new Error('cookieParser("secret") required for signed cookies'); + } + + var val = typeof value === 'object' + ? 'j:' + JSON.stringify(value) + : String(value); + + if (signed) { + val = 's:' + sign(val, secret); + } + + if (opts.maxAge != null) { + var maxAge = opts.maxAge - 0 + + if (!isNaN(maxAge)) { + opts.expires = new Date(Date.now() + maxAge) + opts.maxAge = Math.floor(maxAge / 1000) + } + } + + if (opts.path == null) { + opts.path = '/'; + } + + this.append('Set-Cookie', cookie.serialize(name, String(val), opts)); + + return this; +}; + +/** + * Set the location header to `url`. + * + * The given `url` can also be "back", which redirects + * to the _Referrer_ or _Referer_ headers or "/". + * + * Examples: + * + * res.location('/foo/bar').; + * res.location('http://example.com'); + * res.location('../login'); + * + * @param {String} url + * @return {ServerResponse} for chaining + * @public + */ + +res.location = function location(url) { + return this.set('Location', encodeUrl(url)); +}; + +/** + * Redirect to the given `url` with optional response `status` + * defaulting to 302. + * + * Examples: + * + * res.redirect('/foo/bar'); + * res.redirect('http://example.com'); + * res.redirect(301, 'http://example.com'); + * res.redirect('../login'); // /blog/post/1 -> /blog/login + * + * @public + */ + +res.redirect = function redirect(url) { + var address = url; + var body; + var status = 302; + + // allow status / url + if (arguments.length === 2) { + status = arguments[0] + address = arguments[1] + } + + if (!address) { + deprecate('Provide a url argument'); + } + + if (typeof address !== 'string') { + deprecate('Url must be a string'); + } + + if (typeof status !== 'number') { + deprecate('Status must be a number'); + } + + // Set location header + address = this.location(address).get('Location'); + + // Support text/{plain,html} by default + this.format({ + text: function(){ + body = statuses.message[status] + '. Redirecting to ' + address + }, + + html: function(){ + var u = escapeHtml(address); + body = '

' + statuses.message[status] + '. Redirecting to ' + u + '

' + }, + + default: function(){ + body = ''; + } + }); + + // Respond + this.status(status); + this.set('Content-Length', Buffer.byteLength(body)); + + if (this.req.method === 'HEAD') { + this.end(); + } else { + this.end(body); + } +}; + +/** + * Add `field` to Vary. If already present in the Vary set, then + * this call is simply ignored. + * + * @param {Array|String} field + * @return {ServerResponse} for chaining + * @public + */ + +res.vary = function(field){ + vary(this, field); + + return this; +}; + +/** + * Render `view` with the given `options` and optional callback `fn`. + * When a callback function is given a response will _not_ be made + * automatically, otherwise a response of _200_ and _text/html_ is given. + * + * Options: + * + * - `cache` boolean hinting to the engine it should cache + * - `filename` filename of the view being rendered + * + * @public + */ + +res.render = function render(view, options, callback) { + var app = this.req.app; + var done = callback; + var opts = options || {}; + var req = this.req; + var self = this; + + // support callback function as second arg + if (typeof options === 'function') { + done = options; + opts = {}; + } + + // merge res.locals + opts._locals = self.locals; + + // default callback to respond + done = done || function (err, str) { + if (err) return req.next(err); + self.send(str); + }; + + // render + app.render(view, opts, done); +}; + +// pipe the send file stream +function sendfile(res, file, options, callback) { + var done = false; + var streaming; + + // request aborted + function onaborted() { + if (done) return; + done = true; + + var err = new Error('Request aborted'); + err.code = 'ECONNABORTED'; + callback(err); + } + + // directory + function ondirectory() { + if (done) return; + done = true; + + var err = new Error('EISDIR, read'); + err.code = 'EISDIR'; + callback(err); + } + + // errors + function onerror(err) { + if (done) return; + done = true; + callback(err); + } + + // ended + function onend() { + if (done) return; + done = true; + callback(); + } + + // file + function onfile() { + streaming = false; + } + + // finished + function onfinish(err) { + if (err && err.code === 'ECONNRESET') return onaborted(); + if (err) return onerror(err); + if (done) return; + + setImmediate(function () { + if (streaming !== false && !done) { + onaborted(); + return; + } + + if (done) return; + done = true; + callback(); + }); + } + + // streaming + function onstream() { + streaming = true; + } + + file.on('directory', ondirectory); + file.on('end', onend); + file.on('error', onerror); + file.on('file', onfile); + file.on('stream', onstream); + onFinished(res, onfinish); + + if (options.headers) { + // set headers on successful transfer + file.on('headers', function headers(res) { + var obj = options.headers; + var keys = Object.keys(obj); + + for (var i = 0; i < keys.length; i++) { + var k = keys[i]; + res.setHeader(k, obj[k]); + } + }); + } + + // pipe + file.pipe(res); +} + +/** + * Stringify JSON, like JSON.stringify, but v8 optimized, with the + * ability to escape characters that can trigger HTML sniffing. + * + * @param {*} value + * @param {function} replacer + * @param {number} spaces + * @param {boolean} escape + * @returns {string} + * @private + */ + +function stringify (value, replacer, spaces, escape) { + // v8 checks arguments.length for optimizing simple call + // https://bugs.chromium.org/p/v8/issues/detail?id=4730 + var json = replacer || spaces + ? JSON.stringify(value, replacer, spaces) + : JSON.stringify(value); + + if (escape && typeof json === 'string') { + json = json.replace(/[<>&]/g, function (c) { + switch (c.charCodeAt(0)) { + case 0x3c: + return '\\u003c' + case 0x3e: + return '\\u003e' + case 0x26: + return '\\u0026' + /* istanbul ignore next: unreachable default */ + default: + return c + } + }) + } + + return json +} diff --git a/bff/node_modules/express/lib/utils.js b/bff/node_modules/express/lib/utils.js new file mode 100644 index 0000000..4f21e7e --- /dev/null +++ b/bff/node_modules/express/lib/utils.js @@ -0,0 +1,271 @@ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module dependencies. + * @api private + */ + +var { METHODS } = require('node:http'); +var contentType = require('content-type'); +var etag = require('etag'); +var mime = require('mime-types') +var proxyaddr = require('proxy-addr'); +var qs = require('qs'); +var querystring = require('node:querystring'); +const { Buffer } = require('node:buffer'); + + +/** + * A list of lowercased HTTP methods that are supported by Node.js. + * @api private + */ +exports.methods = METHODS.map((method) => method.toLowerCase()); + +/** + * Return strong ETag for `body`. + * + * @param {String|Buffer} body + * @param {String} [encoding] + * @return {String} + * @api private + */ + +exports.etag = createETagGenerator({ weak: false }) + +/** + * Return weak ETag for `body`. + * + * @param {String|Buffer} body + * @param {String} [encoding] + * @return {String} + * @api private + */ + +exports.wetag = createETagGenerator({ weak: true }) + +/** + * Normalize the given `type`, for example "html" becomes "text/html". + * + * @param {String} type + * @return {Object} + * @api private + */ + +exports.normalizeType = function(type){ + return ~type.indexOf('/') + ? acceptParams(type) + : { value: (mime.lookup(type) || 'application/octet-stream'), params: {} } +}; + +/** + * Normalize `types`, for example "html" becomes "text/html". + * + * @param {Array} types + * @return {Array} + * @api private + */ + +exports.normalizeTypes = function(types) { + return types.map(exports.normalizeType); +}; + + +/** + * Parse accept params `str` returning an + * object with `.value`, `.quality` and `.params`. + * + * @param {String} str + * @return {Object} + * @api private + */ + +function acceptParams (str) { + var length = str.length; + var colonIndex = str.indexOf(';'); + var index = colonIndex === -1 ? length : colonIndex; + var ret = { value: str.slice(0, index).trim(), quality: 1, params: {} }; + + while (index < length) { + var splitIndex = str.indexOf('=', index); + if (splitIndex === -1) break; + + var colonIndex = str.indexOf(';', index); + var endIndex = colonIndex === -1 ? length : colonIndex; + + if (splitIndex > endIndex) { + index = str.lastIndexOf(';', splitIndex - 1) + 1; + continue; + } + + var key = str.slice(index, splitIndex).trim(); + var value = str.slice(splitIndex + 1, endIndex).trim(); + + if (key === 'q') { + ret.quality = parseFloat(value); + } else { + ret.params[key] = value; + } + + index = endIndex + 1; + } + + return ret; +} + +/** + * Compile "etag" value to function. + * + * @param {Boolean|String|Function} val + * @return {Function} + * @api private + */ + +exports.compileETag = function(val) { + var fn; + + if (typeof val === 'function') { + return val; + } + + switch (val) { + case true: + case 'weak': + fn = exports.wetag; + break; + case false: + break; + case 'strong': + fn = exports.etag; + break; + default: + throw new TypeError('unknown value for etag function: ' + val); + } + + return fn; +} + +/** + * Compile "query parser" value to function. + * + * @param {String|Function} val + * @return {Function} + * @api private + */ + +exports.compileQueryParser = function compileQueryParser(val) { + var fn; + + if (typeof val === 'function') { + return val; + } + + switch (val) { + case true: + case 'simple': + fn = querystring.parse; + break; + case false: + break; + case 'extended': + fn = parseExtendedQueryString; + break; + default: + throw new TypeError('unknown value for query parser function: ' + val); + } + + return fn; +} + +/** + * Compile "proxy trust" value to function. + * + * @param {Boolean|String|Number|Array|Function} val + * @return {Function} + * @api private + */ + +exports.compileTrust = function(val) { + if (typeof val === 'function') return val; + + if (val === true) { + // Support plain true/false + return function(){ return true }; + } + + if (typeof val === 'number') { + // Support trusting hop count + return function(a, i){ return i < val }; + } + + if (typeof val === 'string') { + // Support comma-separated values + val = val.split(',') + .map(function (v) { return v.trim() }) + } + + return proxyaddr.compile(val || []); +} + +/** + * Set the charset in a given Content-Type string. + * + * @param {String} type + * @param {String} charset + * @return {String} + * @api private + */ + +exports.setCharset = function setCharset(type, charset) { + if (!type || !charset) { + return type; + } + + // parse type + var parsed = contentType.parse(type); + + // set charset + parsed.parameters.charset = charset; + + // format type + return contentType.format(parsed); +}; + +/** + * Create an ETag generator function, generating ETags with + * the given options. + * + * @param {object} options + * @return {function} + * @private + */ + +function createETagGenerator (options) { + return function generateETag (body, encoding) { + var buf = !Buffer.isBuffer(body) + ? Buffer.from(body, encoding) + : body + + return etag(buf, options) + } +} + +/** + * Parse an extended query string with qs. + * + * @param {String} str + * @return {Object} + * @private + */ + +function parseExtendedQueryString(str) { + return qs.parse(str, { + allowPrototypes: true + }); +} diff --git a/bff/node_modules/express/lib/view.js b/bff/node_modules/express/lib/view.js new file mode 100644 index 0000000..d66b4a2 --- /dev/null +++ b/bff/node_modules/express/lib/view.js @@ -0,0 +1,205 @@ +/*! + * express + * Copyright(c) 2009-2013 TJ Holowaychuk + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module dependencies. + * @private + */ + +var debug = require('debug')('express:view'); +var path = require('node:path'); +var fs = require('node:fs'); + +/** + * Module variables. + * @private + */ + +var dirname = path.dirname; +var basename = path.basename; +var extname = path.extname; +var join = path.join; +var resolve = path.resolve; + +/** + * Module exports. + * @public + */ + +module.exports = View; + +/** + * Initialize a new `View` with the given `name`. + * + * Options: + * + * - `defaultEngine` the default template engine name + * - `engines` template engine require() cache + * - `root` root path for view lookup + * + * @param {string} name + * @param {object} options + * @public + */ + +function View(name, options) { + var opts = options || {}; + + this.defaultEngine = opts.defaultEngine; + this.ext = extname(name); + this.name = name; + this.root = opts.root; + + if (!this.ext && !this.defaultEngine) { + throw new Error('No default engine was specified and no extension was provided.'); + } + + var fileName = name; + + if (!this.ext) { + // get extension from default engine name + this.ext = this.defaultEngine[0] !== '.' + ? '.' + this.defaultEngine + : this.defaultEngine; + + fileName += this.ext; + } + + if (!opts.engines[this.ext]) { + // load engine + var mod = this.ext.slice(1) + debug('require "%s"', mod) + + // default engine export + var fn = require(mod).__express + + if (typeof fn !== 'function') { + throw new Error('Module "' + mod + '" does not provide a view engine.') + } + + opts.engines[this.ext] = fn + } + + // store loaded engine + this.engine = opts.engines[this.ext]; + + // lookup path + this.path = this.lookup(fileName); +} + +/** + * Lookup view by the given `name` + * + * @param {string} name + * @private + */ + +View.prototype.lookup = function lookup(name) { + var path; + var roots = [].concat(this.root); + + debug('lookup "%s"', name); + + for (var i = 0; i < roots.length && !path; i++) { + var root = roots[i]; + + // resolve the path + var loc = resolve(root, name); + var dir = dirname(loc); + var file = basename(loc); + + // resolve the file + path = this.resolve(dir, file); + } + + return path; +}; + +/** + * Render with the given options. + * + * @param {object} options + * @param {function} callback + * @private + */ + +View.prototype.render = function render(options, callback) { + var sync = true; + + debug('render "%s"', this.path); + + // render, normalizing sync callbacks + this.engine(this.path, options, function onRender() { + if (!sync) { + return callback.apply(this, arguments); + } + + // copy arguments + var args = new Array(arguments.length); + var cntx = this; + + for (var i = 0; i < arguments.length; i++) { + args[i] = arguments[i]; + } + + // force callback to be async + return process.nextTick(function renderTick() { + return callback.apply(cntx, args); + }); + }); + + sync = false; +}; + +/** + * Resolve the file within the given directory. + * + * @param {string} dir + * @param {string} file + * @private + */ + +View.prototype.resolve = function resolve(dir, file) { + var ext = this.ext; + + // . + var path = join(dir, file); + var stat = tryStat(path); + + if (stat && stat.isFile()) { + return path; + } + + // /index. + path = join(dir, basename(file, ext), 'index' + ext); + stat = tryStat(path); + + if (stat && stat.isFile()) { + return path; + } +}; + +/** + * Return a stat, maybe. + * + * @param {string} path + * @return {fs.Stats} + * @private + */ + +function tryStat(path) { + debug('stat "%s"', path); + + try { + return fs.statSync(path); + } catch (e) { + return undefined; + } +} diff --git a/bff/node_modules/express/package.json b/bff/node_modules/express/package.json new file mode 100644 index 0000000..8f35883 --- /dev/null +++ b/bff/node_modules/express/package.json @@ -0,0 +1,99 @@ +{ + "name": "express", + "description": "Fast, unopinionated, minimalist web framework", + "version": "5.2.1", + "author": "TJ Holowaychuk ", + "contributors": [ + "Aaron Heckmann ", + "Ciaran Jessup ", + "Douglas Christopher Wilson ", + "Guillermo Rauch ", + "Jonathan Ong ", + "Roman Shtylman ", + "Young Jae Sim " + ], + "license": "MIT", + "repository": "expressjs/express", + "homepage": "https://expressjs.com/", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "keywords": [ + "express", + "framework", + "sinatra", + "web", + "http", + "rest", + "restful", + "router", + "app", + "api" + ], + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "devDependencies": { + "after": "0.8.2", + "connect-redis": "^8.0.1", + "cookie-parser": "1.4.7", + "cookie-session": "2.1.1", + "ejs": "^3.1.10", + "eslint": "8.47.0", + "express-session": "^1.18.1", + "hbs": "4.2.0", + "marked": "^15.0.3", + "method-override": "3.0.0", + "mocha": "^10.7.3", + "morgan": "1.10.1", + "nyc": "^17.1.0", + "pbkdf2-password": "1.2.1", + "supertest": "^6.3.0", + "vhost": "~3.0.2" + }, + "engines": { + "node": ">= 18" + }, + "files": [ + "LICENSE", + "Readme.md", + "index.js", + "lib/" + ], + "scripts": { + "lint": "eslint .", + "lint:fix": "eslint . --fix", + "test": "mocha --require test/support/env --reporter spec --check-leaks test/ test/acceptance/", + "test-ci": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --exclude examples --exclude test --exclude benchmarks --reporter=html --reporter=text npm test", + "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/" + } +} diff --git a/bff/node_modules/fast-xml-builder/CHANGELOG.md b/bff/node_modules/fast-xml-builder/CHANGELOG.md new file mode 100644 index 0000000..566bd12 --- /dev/null +++ b/bff/node_modules/fast-xml-builder/CHANGELOG.md @@ -0,0 +1,16 @@ +**1.1.4** (2026-03-16) +- support maxNestedTags option + +**1.1.3** (2026-03-13) +- declare Matcher & Expression as unknown so user is not forced to install path-expression-matcher + +**1.1.2** (2026-03-11) +- fix typings + +**1.1.1** (2026-03-11) +- upgrade path-expression-matcher to 1.1.3 + +**1.1.0** (2026-03-10) + +- Integrate [path-expression-matcher](https://github.com/NaturalIntelligence/path-expression-matcher) + diff --git a/bff/node_modules/fast-xml-builder/LICENSE b/bff/node_modules/fast-xml-builder/LICENSE new file mode 100644 index 0000000..0311839 --- /dev/null +++ b/bff/node_modules/fast-xml-builder/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Natural Intelligence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/fast-xml-builder/README.md b/bff/node_modules/fast-xml-builder/README.md new file mode 100644 index 0000000..fadf696 --- /dev/null +++ b/bff/node_modules/fast-xml-builder/README.md @@ -0,0 +1,23 @@ +# fast-xml-builder +Build XML from JSON + + +XML Builder was the part of [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) for years. But considering that any bug in parser may false-alarm the users who are only using builder, we have decided to split it into a separate package. + +## Installation + +```bash +npm install fast-xml-builder +``` + +## Usage + +```javascript +import XMLBuilder from 'fast-xml-builder'; + +const builder = new XMLBuilder(); +const xml = builder.build({ name: 'value' }); +``` + +fast-xml-builder fully support the response generated by fast-xml-parser. So you can use the maximum options as you are using for fast-xml-parser like `preserveOrder`, `ignoreAttributes`, `attributeNamePrefix`, `textNodeName`, `cdataTagName`, `cdataPositionChar`, `format`, `indentBy`, `suppressEmptyNode` and many more. Any change in parser will reflect here time to time. + diff --git a/bff/node_modules/fast-xml-builder/lib/fxb.cjs b/bff/node_modules/fast-xml-builder/lib/fxb.cjs new file mode 100644 index 0000000..2a5cd86 --- /dev/null +++ b/bff/node_modules/fast-xml-builder/lib/fxb.cjs @@ -0,0 +1 @@ +(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>f});class i{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,s="";for(;i0&&(this.path[this.path.length-1].values=void 0);const s=this.path.length;this.siblingStacks[s]||(this.siblingStacks[s]=new Map);const n=this.siblingStacks[s],o=i?`${i}:${t}`:t,r=n.get(o)||0;let a=0;for(const t of n.values())a+=t;n.set(o,r+1);const h={tag:t,position:a,counter:r};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const s=t[i];if("deep-wildcard"===s.type){if(i--,i<0)return!0;const s=t[i];let n=!1;for(let t=e;t>=0;t--){const o=t===this.path.length-1;if(this._matchSegment(s,this.path[t],o)){e=t-1,i--,n=!0;break}}if(!n)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(s,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const s=e.counter??0;if("first"===t.position&&0!==s)return!1;if("odd"===t.position&&s%2!=1)return!1;if("even"===t.position&&s%2!=0)return!1;if("nth"===t.position&&s!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}function n(t,e){let n="";e.format&&e.indentBy.length>0&&(n="\n");const r=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;te.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let i=t.toString();return i=c(i,e),i}return""}for(let f=0;f`,d=!1,s.pop();continue}if(m===e.commentPropName){h+=i+`\x3c!--${g[m][0][e.textNodeName]}--\x3e`,d=!0,s.pop();continue}if("?"===m[0]){const t=u(g[":@"],e,N),n="?xml"===m?"":i;let o=g[m][0][e.textNodeName];o=0!==o.length?" "+o:"",h+=n+`<${m}${o}${t}?>`,d=!0,s.pop();continue}let y=i;""!==y&&(y+=e.indentBy);const x=i+`<${m}${u(g[":@"],e,N)}`;let P;P=N?a(g[m],e):o(g[m],e,y,s,n),-1!==e.unpairedTags.indexOf(m)?e.suppressUnpairedNode?h+=x+">":h+=x+"/>":P&&0!==P.length||!e.suppressEmptyNode?P&&P.endsWith(">")?h+=x+`>${P}${i}`:(h+=x+">",P&&""!==i&&(P.includes("/>")||P.includes("`):h+=x+"/>",d=!0,s.pop()}return h}function r(t,e){if(!t||e.ignoreAttributes)return null;const i={};let s=!1;for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[n.startsWith(e.attributeNamePrefix)?n.substr(e.attributeNamePrefix.length):n]=t[n],s=!0);return s?i:null}function a(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let i="";for(let s=0;s${s}`:i+=`<${o}${t}/>`}}}return i}function h(t,e){let i="";if(t&&!e.ignoreAttributes)for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;let n=t[s];!0===n&&e.suppressBooleanAttributes?i+=` ${s.substr(e.attributeNamePrefix.length)}`:i+=` ${s.substr(e.attributeNamePrefix.length)}="${n}"`}return i}function p(t){const e=Object.keys(t);for(let i=0;i0&&e.processEntities)for(let i=0;i","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function f(t){if(this.options=Object.assign({},d,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=b),this.processTextOrObjNode=g,this.options.format?(this.indentate=m,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function g(t,e,i,s){const n=this.extractAttributes(t);if(s.push(e,n),this.checkStopNode(s)){const n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);return s.pop(),this.buildObjectNode(n,e,o,i)}const o=this.j2x(t,i+1,s);return s.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,o.attrStr,i,s):this.buildObjectNode(o.val,e,o.attrStr,i)}function m(t){return this.options.indentBy.repeat(t)}function b(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}f.prototype.build=function(t){if(this.options.preserveOrder)return n(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new s;return this.j2x(t,0,e).val}},f.prototype.j2x=function(t,e,i){let s="",n="";if(this.options.maxNestedTags&&i.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const o=this.options.jPath?i.toString():i,r=this.checkStopNode(i);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(n+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?n+="":"?"===a[0]?n+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)n+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){const h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,o))s+=this.buildAttrPairStr(h,""+t[a],r);else if(!h)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);n+=this.replaceEntitiesValue(e)}else{i.push(a);const s=this.checkStopNode(i);if(i.pop(),s){const i=""+t[a];n+=""===i?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+i+""+t+"${t}`;else if("object"==typeof t&&null!==t){const s=this.buildRawContent(t),n=this.buildAttributesForStopNode(t);e+=""===s?`<${i}${n}/>`:`<${i}${n}>${s}`}}else if("object"==typeof s&&null!==s){const t=this.buildRawContent(s),n=this.buildAttributesForStopNode(s);e+=""===t?`<${i}${n}/>`:`<${i}${n}>${t}`}else e+=`<${i}>${s}`}return e},f.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const i=t[this.options.attributesGroupName];for(let t in i){if(!Object.prototype.hasOwnProperty.call(i,t))continue;const s=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,n=i[t];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}else for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const s=this.isAttribute(i);if(s){const n=t[i];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}return e},f.prototype.buildObjectNode=function(t,e,i,s){if(""===t)return"?"===e[0]?this.indentate(s)+"<"+e+i+"?"+this.tagEndChar:this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar;{let n=""+t+n}},f.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(s)+"<"+e+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+i+">"+n+"0&&this.options.processEntities)for(let e=0;e` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Whether to make output pretty instead of single line + * + * Defaults to `false` + */ + format?: boolean; + + + /** + * If `format` is set to `true`, sets the indent string + * + * Defaults to ` ` + */ + indentBy?: string; + + /** + * Give a name to a top-level array + * + * Defaults to `undefined` + */ + arrayNodeName?: string; + + /** + * Create empty tags for tags with no text value + * + * Defaults to `false` + */ + suppressEmptyNode?: boolean; + + /** + * Suppress an unpaired tag + * + * Defaults to `true` + */ + suppressUnpairedNode?: boolean; + + /** + * Don't put a value for boolean attributes + * + * Defaults to `true` + */ + suppressBooleanAttributes?: boolean; + + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Nodes to stop parsing at + * + * Accepts string patterns or Expression objects from path-expression-matcher + * + * String patterns starting with "*." are automatically converted to ".." for backward compatibility + * + * Defaults to `[]` + */ + stopNodes?: (string | Expression)[]; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Whether to process default and DOCTYPE entities + * + * Defaults to `true` + */ + processEntities?: boolean; + + + oneListGroup?: boolean; + + /** + * Maximum number of nested tags + * + * Defaults to `100` + */ + maxNestedTags?: number; +}; + +interface XMLBuilder { + build(jObj: any): string; +} + +interface XMLBuilderConstructor { + new(options?: XmlBuilderOptions): XMLBuilder; + (options?: XmlBuilderOptions): XMLBuilder; +} + +declare const Builder: XMLBuilderConstructor; + +export = Builder; \ No newline at end of file diff --git a/bff/node_modules/fast-xml-builder/lib/fxb.min.js b/bff/node_modules/fast-xml-builder/lib/fxb.min.js new file mode 100644 index 0000000..3835a72 --- /dev/null +++ b/bff/node_modules/fast-xml-builder/lib/fxb.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fxb=e():t.fxb=e()}(this,()=>(()=>{"use strict";var t={d:(e,i)=>{for(var r in i)t.o(i,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:i[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>b});class i{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,r="";for(;i0&&(this.path[this.path.length-1].values=void 0);const r=this.path.length;this.siblingStacks[r]||(this.siblingStacks[r]=new Map);const s=this.siblingStacks[r],n=i?`${i}:${t}`:t,o=s.get(n)||0;let a=0;for(const t of s.values())a+=t;s.set(n,o+1);const h={tag:t,position:a,counter:o};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const r=t[i];if("deep-wildcard"===r.type){if(i--,i<0)return!0;const r=t[i];let s=!1;for(let t=e;t>=0;t--){const n=t===this.path.length-1;if(this._matchSegment(r,this.path[t],n)){e=t-1,i--,s=!0;break}}if(!s)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(r,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const r=e.counter??0;if("first"===t.position&&0!==r)return!1;if("odd"===t.position&&r%2!=1)return!1;if("even"===t.position&&r%2!=0)return!1;if("nth"===t.position&&r!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}function s(t,e){var s="";e.format&&e.indentBy.length>0&&(s="\n");var o=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(var a=0;ae.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){var f=t.toString();return d(f,e)}return""}for(var g=0;g":h+=x+"/>":A&&0!==A.length||!e.suppressEmptyNode?A&&A.endsWith(">")?h+=x+">"+A+i+"":(h+=x+">",A&&""!==i&&(A.includes("/>")||A.includes(""):h+=x+"/>",c=!0,r.pop()}else{var S=u(m[":@"],e,N),P="?xml"===b?"":i,O=m[b][0][e.textNodeName];h+=P+"<"+b+(O=0!==O.length?" "+O:"")+S+"?>",c=!0,r.pop()}else h+=i+"\x3c!--"+m[b][0][e.textNodeName]+"--\x3e",c=!0,r.pop();else c&&(h+=i),h+="",c=!1,r.pop();else{var w=m[b];N||(w=d(w=e.tagValueProcessor(b,w),e)),c&&(h+=i),h+=w,c=!1,r.pop()}}}return h}function o(t,e){if(!t||e.ignoreAttributes)return null;var i={},r=!1;for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(i[s.startsWith(e.attributeNamePrefix)?s.substr(e.attributeNamePrefix.length):s]=t[s],r=!0);return r?i:null}function a(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";for(var i="",r=0;r"+u+"":i+="<"+n+o+"/>"}}}return i}function h(t,e){var i="";if(t&&!e.ignoreAttributes)for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var s=t[r];!0===s&&e.suppressBooleanAttributes?i+=" "+r.substr(e.attributeNamePrefix.length):i+=" "+r.substr(e.attributeNamePrefix.length)+'="'+s+'"'}return i}function p(t){for(var e=Object.keys(t),i=0;i0&&e.processEntities)for(var i=0;it.length)&&(e=t.length);for(var i=0,r=Array(e);i=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,r=Array(e);i","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function b(t){if(this.options=Object.assign({},m,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(function(t){return"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t})),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(var e=0;e=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(s);!(e=i()).done;){var r=e.value;if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:function(){return!1},this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=y),this.processTextOrObjNode=v,this.options.format?(this.indentate=N,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function v(t,e,i,r){var s=this.extractAttributes(t);if(r.push(e,s),this.checkStopNode(r)){var n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);return r.pop(),this.buildObjectNode(n,e,o,i)}var a=this.j2x(t,i+1,r);return r.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,a.attrStr,i,r):this.buildObjectNode(a.val,e,a.attrStr,i)}function N(t){return this.options.indentBy.repeat(t)}function y(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}return b.prototype.build=function(t){if(this.options.preserveOrder)return s(t,this.options);var e;Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&((e={})[this.options.arrayNodeName]=t,t=e);var i=new r;return this.j2x(t,0,i).val},b.prototype.j2x=function(t,e,i){var r="",s="";if(this.options.maxNestedTags&&i.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");var n=this.options.jPath?i.toString():i,o=this.checkStopNode(i);for(var a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(s+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?s+="":"?"===a[0]?s+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:s+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)s+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){var h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,n))r+=this.buildAttrPairStr(h,""+t[a],o);else if(!h)if(a===this.options.textNodeName){var p=this.options.tagValueProcessor(a,""+t[a]);s+=this.replaceEntitiesValue(p)}else{i.push(a);var u=this.checkStopNode(i);if(i.pop(),u){var l=""+t[a];s+=""===l?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+l+""+y+""+o+"";else if("object"==typeof o&&null!==o){var a=this.buildRawContent(o),h=this.buildAttributesForStopNode(o);e+=""===a?"<"+i+h+"/>":"<"+i+h+">"+a+""}}else if("object"==typeof r&&null!==r){var p=this.buildRawContent(r),u=this.buildAttributesForStopNode(r);e+=""===p?"<"+i+u+"/>":"<"+i+u+">"+p+""}else e+="<"+i+">"+r+""}return e},b.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";var e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){var i=t[this.options.attributesGroupName];for(var r in i)if(Object.prototype.hasOwnProperty.call(i,r)){var s=r.startsWith(this.options.attributeNamePrefix)?r.substring(this.options.attributeNamePrefix.length):r,n=i[r];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}else for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var a=this.isAttribute(o);if(a){var h=t[o];!0===h&&this.options.suppressBooleanAttributes?e+=" "+a:e+=" "+a+'="'+h+'"'}}return e},b.prototype.buildObjectNode=function(t,e,i,r){if(""===t)return"?"===e[0]?this.indentate(r)+"<"+e+i+"?"+this.tagEndChar:this.indentate(r)+"<"+e+i+this.closeTag(e)+this.tagEndChar;var s=""+t+s},b.prototype.closeTag=function(t){var e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":">"+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+"\x3c!--"+t+"--\x3e"+this.newLine;if("?"===e[0])return this.indentate(r)+"<"+e+i+"?"+this.tagEndChar;var n=this.options.tagValueProcessor(e,t);return""===(n=this.replaceEntitiesValue(n))?this.indentate(r)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(r)+"<"+e+i+">"+n+"0&&this.options.processEntities)for(var e=0;e {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\nexport default class Matcher {\n /**\n * Create a new Matcher\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Default path separator (default: '.')\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag: string, values: object, position: number, counter: number }\n // values only present for current (last) node\n // Each siblingStacks entry: Map tracking occurrences at each level\n }\n\n /**\n * Push a new tag onto the path\n * @param {string} tagName - Name of the tag\n * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n * @param {string} namespace - Namespace for the tag (optional)\n */\n push(tagName, attrValues = null, namespace = null) {\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n const prev = this.path[this.path.length - 1];\n prev.values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n // Store namespace if provided\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n // Store values only for current node\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n }\n\n /**\n * Pop the last tag from the path\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) {\n return undefined;\n }\n\n const node = this.path.pop();\n\n // Clean up sibling tracking for levels deeper than current\n // After pop, path.length is the new depth\n // We need to clean up siblingStacks[path.length + 1] and beyond\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values\n * Useful when attributes are parsed after push\n * @param {Object} attrValues - Attribute values\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value\n * @param {string} attrName - Attribute name\n * @returns {*} Attribute value or undefined\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n const current = this.path[this.path.length - 1];\n return current.values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute\n * @param {string} attrName - Attribute name\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent)\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name)\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition for backward compatibility)\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string\n * @param {string} separator - Optional separator (uses default if not provided)\n * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n return this.path.map(n => {\n if (includeNamespace && n.namespace) {\n return `${n.namespace}:${n.tag}`;\n }\n return n.tag;\n }).join(sep);\n }\n\n /**\n * Get path as array of tag names\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty\n */\n reset() {\n this.path = [];\n this.siblingStacks = [];\n }\n\n /**\n * Match current path against an Expression\n * @param {Expression} expression - The expression to match against\n * @returns {boolean} True if current path matches the expression\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n // Handle deep wildcard patterns\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n // Simple path matching (no deep wildcards)\n return this._matchSimple(segments);\n }\n\n /**\n * Match simple path (no deep wildcards)\n * @private\n */\n _matchSimple(segments) {\n // Path must be same length as segments\n if (this.path.length !== segments.length) {\n return false;\n }\n\n // Match each segment bottom-to-top\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const node = this.path[i];\n const isCurrentNode = (i === this.path.length - 1);\n\n if (!this._matchSegment(segment, node, isCurrentNode)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match path with deep wildcards\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1; // Start from current node (bottom)\n let segIdx = segments.length - 1; // Start from last segment\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n // \"..\" matches zero or more levels\n segIdx--;\n\n if (segIdx < 0) {\n // Pattern ends with \"..\", always matches\n return true;\n }\n\n // Find where next segment matches in the path\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n const isCurrentNode = (i === this.path.length - 1);\n if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n // Regular segment\n const isCurrentNode = (pathIdx === this.path.length - 1);\n if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n // All segments must be consumed\n return segIdx < 0;\n }\n\n /**\n * Match a single segment against a node\n * @private\n * @param {Object} segment - Segment from Expression\n * @param {Object} node - Node from path\n * @param {boolean} isCurrentNode - Whether this is the current (last) node\n * @returns {boolean}\n */\n _matchSegment(segment, node, isCurrentNode) {\n // Match tag name (* is wildcard)\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n // Match namespace if specified in segment\n if (segment.namespace !== undefined) {\n // Segment has namespace - node must match it\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n // If segment has no namespace, it matches nodes with or without namespace\n\n // Match attribute name (check if node has this attribute)\n // Can only check for current node since ancestors don't have values\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n // Can't check attributes for ancestor nodes (values not stored)\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n // Match attribute value (only possible for current node)\n if (segment.attrValue !== undefined) {\n const actualValue = node.values[segment.attrName];\n // Both should be strings\n if (String(actualValue) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n // Match position (only for current node)\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n // Can't check position for ancestor nodes\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth') {\n if (counter !== segment.positionValue) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Create a snapshot of current state\n * @returns {Object} State snapshot\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map))\n };\n }\n\n /**\n * Restore state from snapshot\n * @param {Object} snapshot - State snapshot\n */\n restore(snapshot) {\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n }\n}","import { Expression, Matcher } from 'path-expression-matcher';\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n\n // Pre-compile stopNode expressions for pattern matching\n const stopNodeExpressions = [];\n if (options.stopNodes && Array.isArray(options.stopNodes)) {\n for (let i = 0; i < options.stopNodes.length; i++) {\n const node = options.stopNodes[i];\n if (typeof node === 'string') {\n stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n stopNodeExpressions.push(node);\n }\n }\n }\n\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n\n return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions);\n}\n\nfunction arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n if (options.maxNestedTags && matcher.getDepth() > options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n\n if (!Array.isArray(arr)) {\n // Non-array values (e.g. string tag values) should be treated as text content\n if (arr !== undefined && arr !== null) {\n let text = arr.toString();\n text = replaceEntitiesValue(text, options);\n return text;\n }\n return \"\";\n }\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if (tagName === undefined) continue;\n\n // Extract attributes from \":@\" property\n const attrValues = extractAttributeValues(tagObj[\":@\"], options);\n\n // Push tag to matcher WITH attributes\n matcher.push(tagName, attrValues);\n\n // Check if this is a stop node using Expression matching\n const isStopNode = checkStopNode(matcher, stopNodeExpressions);\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n }\n\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n\n // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tagStart = indentation + `<${tagName}${attStr}`;\n\n // If this is a stopNode, get raw content without processing\n let tagValue;\n if (isStopNode) {\n tagValue = getRawContent(tagObj[tagName], options);\n } else {\n\n tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions);\n }\n\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n\n // Pop tag from matcher\n matcher.pop();\n }\n\n return xmlStr;\n}\n\n/**\n * Extract attribute values from the \":@\" object and return as plain object\n * for passing to matcher.push()\n */\nfunction extractAttributeValues(attrMap, options) {\n if (!attrMap || options.ignoreAttributes) return null;\n\n const attrValues = {};\n let hasAttrs = false;\n\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // Remove the attribute prefix to get clean attribute name\n const cleanAttrName = attr.startsWith(options.attributeNamePrefix)\n ? attr.substr(options.attributeNamePrefix.length)\n : attr;\n attrValues[cleanAttrName] = attrMap[attr];\n hasAttrs = true;\n }\n\n return hasAttrs ? attrValues : null;\n}\n\n/**\n * Extract raw content from a stopNode without any processing\n * This preserves the content exactly as-is, including special characters\n */\nfunction getRawContent(arr, options) {\n if (!Array.isArray(arr)) {\n // Non-array values return as-is\n if (arr !== undefined && arr !== null) {\n return arr.toString();\n }\n return \"\";\n }\n\n let content = \"\";\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const tagName = propName(item);\n\n if (tagName === options.textNodeName) {\n // Raw text content - NO processing, NO entity replacement\n content += item[tagName];\n } else if (tagName === options.cdataPropName) {\n // CDATA content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName === options.commentPropName) {\n // Comment content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName && tagName[0] === \"?\") {\n // Processing instruction - skip for stopNodes\n continue;\n } else if (tagName) {\n // Nested tags within stopNode\n // Recursively get raw content and reconstruct the tag\n // For stopNodes, we don't process attributes either\n const attStr = attr_to_str_raw(item[\":@\"], options);\n const nestedContent = getRawContent(item[tagName], options);\n\n if (!nestedContent || nestedContent.length === 0) {\n content += `<${tagName}${attStr}/>`;\n } else {\n content += `<${tagName}${attStr}>${nestedContent}`;\n }\n }\n }\n return content;\n}\n\n/**\n * Build attribute string for stopNodes - NO entity replacement\n */\nfunction attr_to_str_raw(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // For stopNodes, use raw value without processing\n let attrVal = attrMap[attr];\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options, isStopNode) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n let attrVal;\n\n if (isStopNode) {\n // For stopNodes, use raw value without any processing\n attrVal = attrMap[attr];\n } else {\n // Normal processing: apply attributeValueProcessor and entity replacement\n attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n }\n\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction checkStopNode(matcher, stopNodeExpressions) {\n if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n for (let i = 0; i < stopNodeExpressions.length; i++) {\n if (matcher.matches(stopNodeExpressions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function (key, a) {\n return a;\n },\n attributeValueProcessor: function (attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false,\n maxNestedTags: 100,\n jPath: true // When true, callbacks receive string jPath; when false, receive Matcher instance\n};\n\nexport default function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n\n // Convert old-style stopNodes for backward compatibility\n // Old syntax: \"*.tag\" meant \"tag anywhere in tree\"\n // New syntax: \"..tag\" means \"tag anywhere in tree\"\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n this.options.stopNodes = this.options.stopNodes.map(node => {\n if (typeof node === 'string' && node.startsWith('*.')) {\n // Convert old wildcard syntax to deep wildcard\n return '..' + node.substring(2);\n }\n return node;\n });\n }\n\n // Pre-compile stopNode expressions for pattern matching\n this.stopNodeExpressions = [];\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n for (let i = 0; i < this.options.stopNodes.length; i++) {\n const node = this.options.stopNodes[i];\n if (typeof node === 'string') {\n this.stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n this.stopNodeExpressions.push(node);\n }\n }\n }\n\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function (/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function () {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function (jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n }\n }\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n return this.j2x(jObj, 0, matcher).val;\n }\n};\n\nBuilder.prototype.j2x = function (jObj, level, matcher) {\n let attrStr = '';\n let val = '';\n if (this.options.maxNestedTags && matcher.getDepth() >= this.options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n // Get jPath based on option: string for backward compatibility, or Matcher for new features\n const jPath = this.options.jPath ? matcher.toString() : matcher;\n\n // Check if current node is a stopNode (will be used for attribute encoding)\n const isCurrentStopNode = this.checkStopNode(matcher);\n\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key === this.options.cdataPropName) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n // Check if this is a stopNode before building\n matcher.push(key);\n const isStopNode = this.checkStopNode(matcher);\n matcher.pop();\n\n if (isStopNode) {\n // Build as raw content without encoding\n const textValue = '' + jObj[key];\n if (textValue === '') {\n val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`;\n } else if (typeof item === 'object' && item !== null) {\n const nestedContent = this.buildRawContent(item);\n const nestedAttrs = this.buildAttributesForStopNode(item);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}`;\n }\n }\n }\n } else if (typeof value === 'object' && value !== null) {\n // Nested object\n const nestedContent = this.buildRawContent(value);\n const nestedAttrs = this.buildAttributesForStopNode(value);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}`;\n }\n } else {\n // Primitive value\n content += `<${key}>${value}`;\n }\n }\n\n return content;\n};\n\n// Build attribute string for stopNode (no entity encoding)\nBuilder.prototype.buildAttributesForStopNode = function (obj) {\n if (!obj || typeof obj !== 'object') return '';\n\n let attrStr = '';\n\n // Check for attributesGroupName (when attributes are grouped)\n if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n const attrGroup = obj[this.options.attributesGroupName];\n for (let attrKey in attrGroup) {\n if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n ? attrKey.substring(this.options.attributeNamePrefix.length)\n : attrKey;\n const val = attrGroup[attrKey];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + cleanKey;\n } else {\n attrStr += ' ' + cleanKey + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n } else {\n // Look for individual attributes\n for (let key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n const attr = this.isAttribute(key);\n if (attr) {\n const val = obj[key];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + attr;\n } else {\n attrStr += ' ' + attr + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n }\n }\n\n return attrStr;\n};\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n\n let tagEndExp = '' + val + tagEndExp);\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp);\n }\n }\n}\n\nBuilder.prototype.closeTag = function (key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n } else if (this.options.suppressEmptyNode) { //empty\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n } else {\n // Normal processing: apply tagValueProcessor and entity replacement\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n\n if (textValue === '') {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities) {\n for (let i = 0; i < this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","Expression","constructor","pattern","options","separator","segments","_parse","_hasDeepWildcard","some","seg","type","_hasAttributeCondition","undefined","attrName","_hasPositionSelector","position","i","currentPart","length","trim","push","_parseSegment","part","segment","bracketContent","withoutBrackets","bracketMatch","match","content","slice","namespace","tag","tagAndPosition","includes","nsIndex","indexOf","substring","Error","positionMatch","colonIndex","lastIndexOf","tagPart","posPart","test","eqIndex","attrValue","nthMatch","positionValue","parseInt","hasDeepWildcard","hasAttributeCondition","hasPositionSelector","toString","Matcher","path","siblingStacks","tagName","attrValues","values","currentLevel","Map","siblings","siblingKey","counter","count","set","node","pop","updateCurrent","current","getCurrentTag","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","getDepth","includeNamespace","sep","map","n","join","toArray","reset","matches","expression","_matchWithDeepWildcard","_matchSimple","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","found","actualValue","String","snapshot","restore","toXml","jArray","indentation","format","indentBy","stopNodeExpressions","stopNodes","Array","isArray","arrToStr","arr","matcher","xmlStr","isPreviousElementTag","maxNestedTags","text","replaceEntitiesValue","tagObj","propName","extractAttributeValues","isStopNode","checkStopNode","textNodeName","cdataPropName","commentPropName","newIdentation","tagStart","attr_to_str","tagValue","getRawContent","unpairedTags","suppressUnpairedNode","suppressEmptyNode","endsWith","attStr","tempInd","piTextNodeName","tagText","tagValueProcessor","attrMap","ignoreAttributes","hasAttrs","attr","startsWith","attributeNamePrefix","substr","item","attr_to_str_raw","nestedContent","attrStr","attrVal","suppressBooleanAttributes","keys","attributeValueProcessor","textValue","processEntities","entities","entity","replace","regex","val","_createForOfIteratorHelperLoose","r","e","t","iterator","next","bind","a","_arrayLikeToArray","name","from","_unsupportedIterableToArray","done","TypeError","defaultOptions","attributesGroupName","preserveOrder","RegExp","oneListGroup","jPath","Builder","assign","isAttribute","ignoreAttributesFn","_step","_iterator","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","extractAttributes","rawContent","buildRawContent","buildAttributesForStopNode","buildObjectNode","result","j2x","buildTextValNode","repeat","build","jObj","buildFromOrderedJs","_jObj","arrayNodeName","isCurrentStopNode","Date","buildAttrPairStr","newval","closeTag","arrLen","listTagVal","listTagAttr","j","Ks","L","attrGroup","attrKey","nestedAttrs","cleanKey","tagEndExp","piClosingChar"],"sourceRoot":""} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-builder/package.json b/bff/node_modules/fast-xml-builder/package.json new file mode 100644 index 0000000..f5aca14 --- /dev/null +++ b/bff/node_modules/fast-xml-builder/package.json @@ -0,0 +1,80 @@ +{ + "name": "fast-xml-builder", + "version": "1.1.4", + "description": "Build XML from JSON without C/C++ based libraries", + "main": "./lib/fxb.cjs", + "type": "module", + "sideEffects": false, + "module": "./src/fxb.js", + "types": "./src/fxb.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/fxb.d.ts", + "default": "./src/fxb.js" + }, + "require": { + "types": "./lib/fxb.d.cts", + "default": "./lib/fxb.cjs" + } + } + }, + "scripts": { + "test": "c8 --reporter=lcov --reporter=text jasmine spec/*spec.js", + "test-types": "tsc --noEmit spec/typings/typings-test.ts", + "unit": "jasmine", + "lint": "eslint src/**/*.js spec/**/*.js benchmark/**/*.js", + "bundle": "webpack --config webpack.cjs.config.js", + "prettier": "prettier --write src/**/*.js", + "checkReadiness": "publish-please --dry-run", + "publish-please": "publish-please", + "prepublishOnly": "publish-please guard" + }, + "files": [ + "lib", + "src", + "CHANGELOG.md" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/NaturalIntelligence/fast-xml-builder.git" + }, + "keywords": [ + "xml", + "json", + "fast", + "builder", + "parser", + "js2xml", + "json2xml" + ], + "author": "Amit Gupta (https://solothought.com)", + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/register": "^7.13.8", + "@types/node": "20", + "babel-loader": "^8.2.2", + "c8": "^10.1.3", + "eslint": "^8.3.0", + "fast-xml-parser": "^5.3.9", + "he": "^1.2.0", + "jasmine": "^5.6.0", + "prettier": "^3.5.1", + "publish-please": "^5.5.2", + "typescript": "5", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "path-expression-matcher": "^1.1.3" + } +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-builder/src/fxb.d.ts b/bff/node_modules/fast-xml-builder/src/fxb.d.ts new file mode 100644 index 0000000..55c0bfa --- /dev/null +++ b/bff/node_modules/fast-xml-builder/src/fxb.d.ts @@ -0,0 +1,180 @@ +// import { Expression } from 'path-expression-matcher'; + +type Matcher = unknown; +type Expression = unknown; + +export type XmlBuilderOptions = { + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when building + * + * When `true` - ignores all the attributes + * + * When `false` - builds all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Whether to make output pretty instead of single line + * + * Defaults to `false` + */ + format?: boolean; + + + /** + * If `format` is set to `true`, sets the indent string + * + * Defaults to ` ` + */ + indentBy?: string; + + /** + * Give a name to a top-level array + * + * Defaults to `undefined` + */ + arrayNodeName?: string; + + /** + * Create empty tags for tags with no text value + * + * Defaults to `false` + */ + suppressEmptyNode?: boolean; + + /** + * Suppress an unpaired tag + * + * Defaults to `true` + */ + suppressUnpairedNode?: boolean; + + /** + * Don't put a value for boolean attributes + * + * Defaults to `true` + */ + suppressBooleanAttributes?: boolean; + + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Nodes to stop parsing at + * + * Accepts string patterns or Expression objects from path-expression-matcher + * + * String patterns starting with "*." are automatically converted to ".." for backward compatibility + * + * Defaults to `[]` + */ + stopNodes?: (string | Expression)[]; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Whether to process default and DOCTYPE entities + * + * Defaults to `true` + */ + processEntities?: boolean; + + + oneListGroup?: boolean; + + /** + * Maximum number of nested tags + * + * Defaults to `100` + */ + maxNestedTags?: number; +}; + +export interface XMLBuilder { + build(jObj: any): string; +} + +export interface XMLBuilderConstructor { + new(options?: XmlBuilderOptions): XMLBuilder; + (options?: XmlBuilderOptions): XMLBuilder; +} + +declare const Builder: XMLBuilderConstructor; + +export default Builder; \ No newline at end of file diff --git a/bff/node_modules/fast-xml-builder/src/fxb.js b/bff/node_modules/fast-xml-builder/src/fxb.js new file mode 100644 index 0000000..71ab97d --- /dev/null +++ b/bff/node_modules/fast-xml-builder/src/fxb.js @@ -0,0 +1,529 @@ +'use strict'; +//parse Empty Node as self closing node +import buildFromOrderedJs from './orderedJs2Xml.js'; +import getIgnoreAttributesFn from "./ignoreAttributes.js"; +import { Expression, Matcher } from 'path-expression-matcher'; + +const defaultOptions = { + attributeNamePrefix: '@_', + attributesGroupName: false, + textNodeName: '#text', + ignoreAttributes: true, + cdataPropName: false, + format: false, + indentBy: ' ', + suppressEmptyNode: false, + suppressUnpairedNode: true, + suppressBooleanAttributes: true, + tagValueProcessor: function (key, a) { + return a; + }, + attributeValueProcessor: function (attrName, a) { + return a; + }, + preserveOrder: false, + commentPropName: false, + unpairedTags: [], + entities: [ + { regex: new RegExp("&", "g"), val: "&" },//it must be on top + { regex: new RegExp(">", "g"), val: ">" }, + { regex: new RegExp("<", "g"), val: "<" }, + { regex: new RegExp("\'", "g"), val: "'" }, + { regex: new RegExp("\"", "g"), val: """ } + ], + processEntities: true, + stopNodes: [], + // transformTagName: false, + // transformAttributeName: false, + oneListGroup: false, + maxNestedTags: 100, + jPath: true // When true, callbacks receive string jPath; when false, receive Matcher instance +}; + +export default function Builder(options) { + this.options = Object.assign({}, defaultOptions, options); + + // Convert old-style stopNodes for backward compatibility + // Old syntax: "*.tag" meant "tag anywhere in tree" + // New syntax: "..tag" means "tag anywhere in tree" + if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) { + this.options.stopNodes = this.options.stopNodes.map(node => { + if (typeof node === 'string' && node.startsWith('*.')) { + // Convert old wildcard syntax to deep wildcard + return '..' + node.substring(2); + } + return node; + }); + } + + // Pre-compile stopNode expressions for pattern matching + this.stopNodeExpressions = []; + if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) { + for (let i = 0; i < this.options.stopNodes.length; i++) { + const node = this.options.stopNodes[i]; + if (typeof node === 'string') { + this.stopNodeExpressions.push(new Expression(node)); + } else if (node instanceof Expression) { + this.stopNodeExpressions.push(node); + } + } + } + + if (this.options.ignoreAttributes === true || this.options.attributesGroupName) { + this.isAttribute = function (/*a*/) { + return false; + }; + } else { + this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes) + this.attrPrefixLen = this.options.attributeNamePrefix.length; + this.isAttribute = isAttribute; + } + + this.processTextOrObjNode = processTextOrObjNode + + if (this.options.format) { + this.indentate = indentate; + this.tagEndChar = '>\n'; + this.newLine = '\n'; + } else { + this.indentate = function () { + return ''; + }; + this.tagEndChar = '>'; + this.newLine = ''; + } +} + +Builder.prototype.build = function (jObj) { + if (this.options.preserveOrder) { + return buildFromOrderedJs(jObj, this.options); + } else { + if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) { + jObj = { + [this.options.arrayNodeName]: jObj + } + } + // Initialize matcher for path tracking + const matcher = new Matcher(); + return this.j2x(jObj, 0, matcher).val; + } +}; + +Builder.prototype.j2x = function (jObj, level, matcher) { + let attrStr = ''; + let val = ''; + if (this.options.maxNestedTags && matcher.getDepth() >= this.options.maxNestedTags) { + throw new Error("Maximum nested tags exceeded"); + } + // Get jPath based on option: string for backward compatibility, or Matcher for new features + const jPath = this.options.jPath ? matcher.toString() : matcher; + + // Check if current node is a stopNode (will be used for attribute encoding) + const isCurrentStopNode = this.checkStopNode(matcher); + + for (let key in jObj) { + if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue; + if (typeof jObj[key] === 'undefined') { + // supress undefined node only if it is not an attribute + if (this.isAttribute(key)) { + val += ''; + } + } else if (jObj[key] === null) { + // null attribute should be ignored by the attribute list, but should not cause the tag closing + if (this.isAttribute(key)) { + val += ''; + } else if (key === this.options.cdataPropName) { + val += ''; + } else if (key[0] === '?') { + val += this.indentate(level) + '<' + key + '?' + this.tagEndChar; + } else { + val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + } + // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + } else if (jObj[key] instanceof Date) { + val += this.buildTextValNode(jObj[key], key, '', level, matcher); + } else if (typeof jObj[key] !== 'object') { + //premitive type + const attr = this.isAttribute(key); + if (attr && !this.ignoreAttributesFn(attr, jPath)) { + attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode); + } else if (!attr) { + //tag value + if (key === this.options.textNodeName) { + let newval = this.options.tagValueProcessor(key, '' + jObj[key]); + val += this.replaceEntitiesValue(newval); + } else { + // Check if this is a stopNode before building + matcher.push(key); + const isStopNode = this.checkStopNode(matcher); + matcher.pop(); + + if (isStopNode) { + // Build as raw content without encoding + const textValue = '' + jObj[key]; + if (textValue === '') { + val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar; + } else { + val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`; + } else if (typeof item === 'object' && item !== null) { + const nestedContent = this.buildRawContent(item); + const nestedAttrs = this.buildAttributesForStopNode(item); + if (nestedContent === '') { + content += `<${key}${nestedAttrs}/>`; + } else { + content += `<${key}${nestedAttrs}>${nestedContent}`; + } + } + } + } else if (typeof value === 'object' && value !== null) { + // Nested object + const nestedContent = this.buildRawContent(value); + const nestedAttrs = this.buildAttributesForStopNode(value); + if (nestedContent === '') { + content += `<${key}${nestedAttrs}/>`; + } else { + content += `<${key}${nestedAttrs}>${nestedContent}`; + } + } else { + // Primitive value + content += `<${key}>${value}`; + } + } + + return content; +}; + +// Build attribute string for stopNode (no entity encoding) +Builder.prototype.buildAttributesForStopNode = function (obj) { + if (!obj || typeof obj !== 'object') return ''; + + let attrStr = ''; + + // Check for attributesGroupName (when attributes are grouped) + if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) { + const attrGroup = obj[this.options.attributesGroupName]; + for (let attrKey in attrGroup) { + if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue; + const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix) + ? attrKey.substring(this.options.attributeNamePrefix.length) + : attrKey; + const val = attrGroup[attrKey]; + if (val === true && this.options.suppressBooleanAttributes) { + attrStr += ' ' + cleanKey; + } else { + attrStr += ' ' + cleanKey + '="' + val + '"'; // No encoding for stopNode + } + } + } else { + // Look for individual attributes + for (let key in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, key)) continue; + const attr = this.isAttribute(key); + if (attr) { + const val = obj[key]; + if (val === true && this.options.suppressBooleanAttributes) { + attrStr += ' ' + attr; + } else { + attrStr += ' ' + attr + '="' + val + '"'; // No encoding for stopNode + } + } + } + } + + return attrStr; +}; + +Builder.prototype.buildObjectNode = function (val, key, attrStr, level) { + if (val === "") { + if (key[0] === "?") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar; + else { + return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar; + } + } else { + + let tagEndExp = '' + val + tagEndExp); + } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) { + return this.indentate(level) + `` + this.newLine; + } else { + return ( + this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar + + val + + this.indentate(level) + tagEndExp); + } + } +} + +Builder.prototype.closeTag = function (key) { + let closeTag = ""; + if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired + if (!this.options.suppressUnpairedNode) closeTag = "/" + } else if (this.options.suppressEmptyNode) { //empty + closeTag = "/"; + } else { + closeTag = `>` + this.newLine; + } else if (this.options.commentPropName !== false && key === this.options.commentPropName) { + return this.indentate(level) + `` + this.newLine; + } else if (key[0] === "?") {//PI tag + return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar; + } else { + // Normal processing: apply tagValueProcessor and entity replacement + let textValue = this.options.tagValueProcessor(key, val); + textValue = this.replaceEntitiesValue(textValue); + + if (textValue === '') { + return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar; + } else { + return this.indentate(level) + '<' + key + attrStr + '>' + + textValue + + ' 0 && this.options.processEntities) { + for (let i = 0; i < this.options.entities.length; i++) { + const entity = this.options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; +} + +function indentate(level) { + return this.options.indentBy.repeat(level); +} + +function isAttribute(name /*, options*/) { + if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) { + return name.substr(this.attrPrefixLen); + } else { + return false; + } +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-builder/src/ignoreAttributes.js b/bff/node_modules/fast-xml-builder/src/ignoreAttributes.js new file mode 100644 index 0000000..bdec0a6 --- /dev/null +++ b/bff/node_modules/fast-xml-builder/src/ignoreAttributes.js @@ -0,0 +1,18 @@ +export default function getIgnoreAttributesFn(ignoreAttributes) { + if (typeof ignoreAttributes === 'function') { + return ignoreAttributes + } + if (Array.isArray(ignoreAttributes)) { + return (attrName) => { + for (const pattern of ignoreAttributes) { + if (typeof pattern === 'string' && attrName === pattern) { + return true + } + if (pattern instanceof RegExp && pattern.test(attrName)) { + return true + } + } + } + } + return () => false +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-builder/src/orderedJs2Xml.js b/bff/node_modules/fast-xml-builder/src/orderedJs2Xml.js new file mode 100644 index 0000000..4191cba --- /dev/null +++ b/bff/node_modules/fast-xml-builder/src/orderedJs2Xml.js @@ -0,0 +1,292 @@ +import { Expression, Matcher } from 'path-expression-matcher'; + +const EOL = "\n"; + +/** + * + * @param {array} jArray + * @param {any} options + * @returns + */ +export default function toXml(jArray, options) { + let indentation = ""; + if (options.format && options.indentBy.length > 0) { + indentation = EOL; + } + + // Pre-compile stopNode expressions for pattern matching + const stopNodeExpressions = []; + if (options.stopNodes && Array.isArray(options.stopNodes)) { + for (let i = 0; i < options.stopNodes.length; i++) { + const node = options.stopNodes[i]; + if (typeof node === 'string') { + stopNodeExpressions.push(new Expression(node)); + } else if (node instanceof Expression) { + stopNodeExpressions.push(node); + } + } + } + + // Initialize matcher for path tracking + const matcher = new Matcher(); + + return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions); +} + +function arrToStr(arr, options, indentation, matcher, stopNodeExpressions) { + let xmlStr = ""; + let isPreviousElementTag = false; + + if (options.maxNestedTags && matcher.getDepth() > options.maxNestedTags) { + throw new Error("Maximum nested tags exceeded"); + } + + if (!Array.isArray(arr)) { + // Non-array values (e.g. string tag values) should be treated as text content + if (arr !== undefined && arr !== null) { + let text = arr.toString(); + text = replaceEntitiesValue(text, options); + return text; + } + return ""; + } + + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const tagName = propName(tagObj); + if (tagName === undefined) continue; + + // Extract attributes from ":@" property + const attrValues = extractAttributeValues(tagObj[":@"], options); + + // Push tag to matcher WITH attributes + matcher.push(tagName, attrValues); + + // Check if this is a stop node using Expression matching + const isStopNode = checkStopNode(matcher, stopNodeExpressions); + + if (tagName === options.textNodeName) { + let tagText = tagObj[tagName]; + if (!isStopNode) { + tagText = options.tagValueProcessor(tagName, tagText); + tagText = replaceEntitiesValue(tagText, options); + } + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += tagText; + isPreviousElementTag = false; + matcher.pop(); + continue; + } else if (tagName === options.cdataPropName) { + if (isPreviousElementTag) { + xmlStr += indentation; + } + xmlStr += ``; + isPreviousElementTag = false; + matcher.pop(); + continue; + } else if (tagName === options.commentPropName) { + xmlStr += indentation + ``; + isPreviousElementTag = true; + matcher.pop(); + continue; + } else if (tagName[0] === "?") { + const attStr = attr_to_str(tagObj[":@"], options, isStopNode); + const tempInd = tagName === "?xml" ? "" : indentation; + let piTextNodeName = tagObj[tagName][0][options.textNodeName]; + piTextNodeName = piTextNodeName.length !== 0 ? " " + piTextNodeName : ""; //remove extra spacing + xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`; + isPreviousElementTag = true; + matcher.pop(); + continue; + } + + let newIdentation = indentation; + if (newIdentation !== "") { + newIdentation += options.indentBy; + } + + // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes + const attStr = attr_to_str(tagObj[":@"], options, isStopNode); + const tagStart = indentation + `<${tagName}${attStr}`; + + // If this is a stopNode, get raw content without processing + let tagValue; + if (isStopNode) { + tagValue = getRawContent(tagObj[tagName], options); + } else { + + tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions); + } + + if (options.unpairedTags.indexOf(tagName) !== -1) { + if (options.suppressUnpairedNode) xmlStr += tagStart + ">"; + else xmlStr += tagStart + "/>"; + } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) { + xmlStr += tagStart + "/>"; + } else if (tagValue && tagValue.endsWith(">")) { + xmlStr += tagStart + `>${tagValue}${indentation}`; + } else { + xmlStr += tagStart + ">"; + if (tagValue && indentation !== "" && (tagValue.includes("/>") || tagValue.includes("`; + } + isPreviousElementTag = true; + + // Pop tag from matcher + matcher.pop(); + } + + return xmlStr; +} + +/** + * Extract attribute values from the ":@" object and return as plain object + * for passing to matcher.push() + */ +function extractAttributeValues(attrMap, options) { + if (!attrMap || options.ignoreAttributes) return null; + + const attrValues = {}; + let hasAttrs = false; + + for (let attr in attrMap) { + if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue; + // Remove the attribute prefix to get clean attribute name + const cleanAttrName = attr.startsWith(options.attributeNamePrefix) + ? attr.substr(options.attributeNamePrefix.length) + : attr; + attrValues[cleanAttrName] = attrMap[attr]; + hasAttrs = true; + } + + return hasAttrs ? attrValues : null; +} + +/** + * Extract raw content from a stopNode without any processing + * This preserves the content exactly as-is, including special characters + */ +function getRawContent(arr, options) { + if (!Array.isArray(arr)) { + // Non-array values return as-is + if (arr !== undefined && arr !== null) { + return arr.toString(); + } + return ""; + } + + let content = ""; + for (let i = 0; i < arr.length; i++) { + const item = arr[i]; + const tagName = propName(item); + + if (tagName === options.textNodeName) { + // Raw text content - NO processing, NO entity replacement + content += item[tagName]; + } else if (tagName === options.cdataPropName) { + // CDATA content + content += item[tagName][0][options.textNodeName]; + } else if (tagName === options.commentPropName) { + // Comment content + content += item[tagName][0][options.textNodeName]; + } else if (tagName && tagName[0] === "?") { + // Processing instruction - skip for stopNodes + continue; + } else if (tagName) { + // Nested tags within stopNode + // Recursively get raw content and reconstruct the tag + // For stopNodes, we don't process attributes either + const attStr = attr_to_str_raw(item[":@"], options); + const nestedContent = getRawContent(item[tagName], options); + + if (!nestedContent || nestedContent.length === 0) { + content += `<${tagName}${attStr}/>`; + } else { + content += `<${tagName}${attStr}>${nestedContent}`; + } + } + } + return content; +} + +/** + * Build attribute string for stopNodes - NO entity replacement + */ +function attr_to_str_raw(attrMap, options) { + let attrStr = ""; + if (attrMap && !options.ignoreAttributes) { + for (let attr in attrMap) { + if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue; + // For stopNodes, use raw value without processing + let attrVal = attrMap[attr]; + if (attrVal === true && options.suppressBooleanAttributes) { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`; + } else { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`; + } + } + } + return attrStr; +} + +function propName(obj) { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (!Object.prototype.hasOwnProperty.call(obj, key)) continue; + if (key !== ":@") return key; + } +} + +function attr_to_str(attrMap, options, isStopNode) { + let attrStr = ""; + if (attrMap && !options.ignoreAttributes) { + for (let attr in attrMap) { + if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue; + let attrVal; + + if (isStopNode) { + // For stopNodes, use raw value without any processing + attrVal = attrMap[attr]; + } else { + // Normal processing: apply attributeValueProcessor and entity replacement + attrVal = options.attributeValueProcessor(attr, attrMap[attr]); + attrVal = replaceEntitiesValue(attrVal, options); + } + + if (attrVal === true && options.suppressBooleanAttributes) { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`; + } else { + attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`; + } + } + } + return attrStr; +} + +function checkStopNode(matcher, stopNodeExpressions) { + if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false; + + for (let i = 0; i < stopNodeExpressions.length; i++) { + if (matcher.matches(stopNodeExpressions[i])) { + return true; + } + } + return false; +} + +function replaceEntitiesValue(textValue, options) { + if (textValue && textValue.length > 0 && options.processEntities) { + for (let i = 0; i < options.entities.length; i++) { + const entity = options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-builder/src/prettifyJs2Xml.js b/bff/node_modules/fast-xml-builder/src/prettifyJs2Xml.js new file mode 100644 index 0000000..e69de29 diff --git a/bff/node_modules/fast-xml-parser/CHANGELOG.md b/bff/node_modules/fast-xml-parser/CHANGELOG.md new file mode 100644 index 0000000..9cb1bf4 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/CHANGELOG.md @@ -0,0 +1,759 @@ +Note: If you find missing information about particular minor version, that version must have been changed without any functional change in this library. + +Note: Due to some last quick changes on v4, detail of v4.5.3 & v4.5.4 are not updated here. v4.5.4x is the last tag of v4 in github repository. I'm extremely sorry for the confusion + +**5.5.8 / 2026-03-20** +- pass read only matcher in callback + +**5.5.7 / 2026-03-19** +- fix: entity expansion limits +- update strnum package to 2.2.0 + +**5.5.6 / 2026-03-16** +- update builder dependency +- fix incorrect regex to replace \. in entity name +- fix check for entitiy expansion for lastEntities and html entities too + +**5.5.5 / 2026-03-13** +- sanitize dangerous tag or attribute name +- error on critical property name +- support onDangerousProperty option + +**5.5.4 / 2026-03-13** +- declare Matcher & Expression as unknown so user is not forced to install path-expression-matcher + + +**5.5.3 / 2026-03-11** +- upgrade builder + +**5.5.2 / 2026-03-11** +- update dependency to fix typings + +**5.5.1 / 2026-03-10** +- fix dependency + +**5.5.0 / 2026-03-10** +- support path-expression-matcher +- fix: stopNode should not be parsed +- performance improvement for stopNode checking + +**5.4.2 / 2026-03-03** +- support maxEntityCount option + +**5.4.1 / 2026-02-25** +- fix (#785) unpairedTag node should not have tag content + +**5.4.0 / 2026-02-25** +- migrate to fast-xml-builder + +**5.3.9 / 2026-02-25** +- support strictReservedNames + +**5.3.8 / 2026-02-25** +- support maxNestedTags +- handle non-array input for XML builder when preserveOrder is true (By [Angelo Coetzee](https://github.com/Angelopvtac)) +- save use of js properies + +**5.3.7 / 2026-02-20** +- fix typings for CJS (By [Corentin Girard](https://github.com/Drarig29)) + + + +**5.3.6 / 2026-02-14** +- Improve security and performance of entity processing + - new options `maxEntitySize`, `maxExpansionDepth`, `maxTotalExpansions`, `maxExpandedLength`, `allowedTags`,`tagFilter` + - fast return when no edtity is present + - improvement replacement logic to reduce number of calls + + +**5.3.5 / 2026-02-08** +- fix: Escape regex char in entity name +- update strnum to 2.1.2 +- add missing exports in CJS typings + + +**5.3.4 / 2026-01-30** +- fix: handle HTML numeric and hex entities when out of range + + +**5.3.3 / 2025-12-12** +- fix #775: transformTagName with allowBooleanAttributes adds an unnecessary attribute + +**5.3.2 / 2025-11-14** +- fix for import statement for v6 + +**5.3.1 / 2025-11-03** +- Performance improvement for stopNodes (By [Maciek Lamberski](https://github.com/macieklamberski)) + +**5.3.0 / 2025-10-03** +- Use `Uint8Array` in place of `Buffer` in Parser + +**5.2.5 / 2025-06-08** +- Inform user to use [fxp-cli](https://github.com/NaturalIntelligence/fxp-cli) instead of in-built CLI feature +- Export typings for direct use + +**5.2.4 / 2025-06-06** +- fix (#747): fix EMPTY and ANY with ELEMENT in DOCTYPE + +**5.2.3 / 2025-05-11** +- fix (#747): support EMPTY and ANY with ELEMENT in DOCTYPE + +**5.2.2 / 2025-05-05** +- fix (#746): update strnum to fix parsing issues related to enotations + +**5.2.1 / 2025-04-22** +- fix: read DOCTYPE entity value correctly +- read DOCTYPE NOTATION, ELEMENT exp but not using read values + + +**5.2.0 / 2025-04-03** +- feat: support metadata on nodes (#593) (By [Steven R. Loomis](https://github.com/srl295)) + +**5.1.0 / 2025-04-02** +- feat: declare package as side-effect free (#738) (By [Thomas Bouffard](https://github.com/tbouffard)) +- fix cjs build mode +- fix builder return type to string +- + +**5.0.9 / 2025-03-14** +- fix: support numeric entities with values over 0xFFFF (#726) (By [Marc Durdin](https://github.com/mcdurdin)) +- fix: update strnum to fix parsing 0 if skiplike option is used + +**5.0.8 / 2025-02-27** +- fix parsing 0 if skiplike option is used. + - updating strnum dependency + +**5.0.7 / 2025-02-25** +- fix (#724) typings for cjs. + +**5.0.6 / 2025-02-20** +- fix cli output (By [Angel Delgado](https://github.com/angeld7)) + - remove multiple JSON parsing + +**5.0.5 / 2025-02-20** +- fix parsing of string starting with 'e' or 'E' by updating strnum + +**5.0.4 / 2025-02-20** +- fix CLI to support all the versions of node js when displaying library version. +- fix CJS import in v5 + - by fixing webpack config + +**5.0.3 / 2025-02-20** +- Using strnum ESM module + - new fixes in strum may break your experience + +**5.0.2 / 2025-02-20** +- fix: include CommonJS resources in the npm package #714 (By [Thomas Bouffard](https://github.com/tbouffard)) +- fix: move babel deps to dev deps + +**5.0.1 / 2025-02-19** +- fix syntax error for CLI command + +**5.0.0 / 2025-02-19** +- ESM support + - no change in the functionality, syntax, APIs, options, or documentation. + +**4.5.2 / 2025-02-18** +- Fix null CDATA to comply with undefined behavior (#701) (By [Matthieu BOHEAS](https://github.com/Kelgors)) +- Fix(performance): Update check for leaf node in saveTextToParentTag function in OrderedObjParser.js (#707) (By [...](https://github.com/tomingtoming)) +- Fix: emit full JSON string from CLI when no output filename specified (#710) (By [Matt Benson](https://github.com/mbenson)) + +**4.5.1 / 2024-12-15** +- Fix empty tag key name for v5 (#697). no impact on v4 +- Fixes entity parsing when used in strict mode (#699) + +**4.5.0 / 2024-09-03** +- feat #666: ignoreAttributes support function, and array of string or regex (By [ArtemM](https://github.com/mav-rik)) + +**4.4.1 / 2024-07-28** +- v5 fix: maximum length limit to currency value +- fix #634: build attributes with oneListGroup and attributesGroupName (#653)(By [Andreas Naziris](https://github.com/a-rasin)) +- fix: get oneListGroup to work as expected for array of strings (#662)(By [Andreas Naziris](https://github.com/a-rasin)) + +**4.4.0 / 2024-05-18** +- fix #654: parse attribute list correctly for self closing stop node. +- fix: validator bug when closing tag is not opened. (#647) (By [Ryosuke Fukatani](https://github.com/RyosukeFukatani)) +- fix #581: typings; return type of `tagValueProcessor` & `attributeValueProcessor` (#582) (By [monholm]()) + +**4.3.6 / 2024-03-16** +- Add support for parsing HTML numeric entities (#645) (By [Jonas Schade ](https://github.com/DerZade)) + +**4.3.5 / 2024-02-24** +- code for v5 is added for experimental use + +**4.3.4 / 2024-01-10** +- fix: Don't escape entities in CDATA sections (#633) (By [wackbyte](https://github.com/wackbyte)) + +**4.3.3 / 2024-01-10** +- Remove unnecessary regex + +**4.3.2 / 2023-10-02** +- fix `jObj.hasOwnProperty` when give input is null (By [Arda TANRIKULU](https://github.com/ardatan)) + +**4.3.1 / 2023-09-24** +- revert back "Fix typings for builder and parser to make return type generic" to avoid failure of existing projects. Need to decide a common approach. + +**4.3.0 / 2023-09-20** +- Fix stopNodes to work with removeNSPrefix (#607) (#608) (By [Craig Andrews]https://github.com/candrews)) +- Fix #610 ignore properties set to Object.prototype +- Fix typings for builder and parser to make return type generic (By [Sarah Dayan](https://github.com/sarahdayan)) + +**4.2.7 / 2023-07-30** +- Fix: builder should set text node correctly when only textnode is present (#589) (By [qianqing](https://github.com/joneqian)) +- Fix: Fix for null and undefined attributes when building xml (#585) (#598). A null or undefined value should be ignored. (By [Eugenio Ceschia](https://github.com/cecia234)) + +**4.2.6 / 2023-07-17** +- Fix: Remove trailing slash from jPath for self-closing tags (#595) (By [Maciej Radzikowski](https://github.com/m-radzikowski)) + +**4.2.5 / 2023-06-22** +- change code implementation + +**4.2.4 / 2023-06-06** +- fix security bug + +**4.2.3 / 2023-06-05** +- fix security bug + +**4.2.2 / 2023-04-18** +- fix #562: fix unpaired tag when it comes in last of a nested tag. Also throw error when unpaired tag is used as closing tag + +**4.2.1 / 2023-04-18** +- fix: jpath after unpaired tags + +**4.2.0 / 2023-04-09** +- support `updateTag` parser property + +**4.1.4 / 2023-04-08** +- update typings to let user create XMLBuilder instance without options (#556) (By [Patrick](https://github.com/omggga)) +- fix: IsArray option isn't parsing tags with 0 as value correctly #490 (#557) (By [Aleksandr Murashkin](https://github.com/p-kuen)) +- feature: support `oneListGroup` to group repeated children tags udder single group + +**4.1.3 / 2023-02-26** +- fix #546: Support complex entity value + +**4.1.2 / 2023-02-12** +- Security Fix + +**4.1.1 / 2023-02-03** +- Fix #540: ignoreAttributes breaks unpairedTags +- Refactor XML builder code + +**4.1.0 / 2023-02-02** +- Fix '<' or '>' in DTD comment throwing an error. (#533) (By [Adam Baker](https://github.com/Cwazywierdo)) +- Set "eNotation" to 'true' as default + +**4.0.15 / 2023-01-25** +- make "eNotation" optional + +**4.0.14 / 2023-01-22** +- fixed: add missed typing "eNotation" to parse values + +**4.0.13 / 2023-01-07** +- preserveorder formatting (By [mdeknowis](https://github.com/mdeknowis)) +- support `transformAttributeName` (By [Erik Rothoff Andersson](https://github.com/erkie)) + +**4.0.12 / 2022-11-19** +- fix typescript + +**4.0.11 / 2022-10-05** +- fix #501: parse for entities only once + +**4.0.10 / 2022-09-14** +- fix broken links in demo site (By [Yannick Lang](https://github.com/layaxx)) +- fix #491: tagValueProcessor type definition (By [Andrea Francesco Speziale](https://github.com/andreafspeziale)) +- Add jsdocs for tagValueProcessor + + +**4.0.9 / 2022-07-10** +- fix #470: stop-tag can have self-closing tag with same name +- fix #472: stopNode can have any special tag inside +- Allow !ATTLIST and !NOTATION with DOCTYPE +- Add transformTagName option to transform tag names when parsing (#469) (By [Erik Rothoff Andersson](https://github.com/erkie)) + +**4.0.8 / 2022-05-28** +- Fix CDATA parsing returning empty string when value = 0 (#451) (By [ndelanou](https://github.com/ndelanou)) +- Fix stopNodes when same tag appears inside node (#456) (By [patrickshipe](https://github.com/patrickshipe)) +- fix #468: prettify own properties only + +**4.0.7 / 2022-03-18** +- support CDATA even if tag order is not preserved +- support Comments even if tag order is not preserved +- fix #446: XMLbuilder should not indent XML declaration + +**4.0.6 / 2022-03-08** +- fix: call tagValueProcessor only once for array items +- fix: missing changed for #437 + +**4.0.5 / 2022-03-06** +- fix #437: call tagValueProcessor from XML builder + +**4.0.4 / 2022-03-03** +- fix #435: should skip unpaired and self-closing nodes when set as stopnodes + +**4.0.3 / 2022-02-15** +- fix: ReferenceError when Bundled with Strict (#431) (By [Andreas Heissenberger](https://github.com/aheissenberger)) + + +**4.0.2 / 2022-02-04** +- builder supports `suppressUnpairedNode` +- parser supports `ignoreDeclaration` and `ignorePiTags` +- fix: when comment is parsed as text value if given as ` ...` #423 +- builder supports decoding `&` + +**4.0.1 / 2022-01-08** +- fix builder for pi tag +- fix: support suppressBooleanAttrs by builder + +**4.0.0 / 2022-01-06** +- Generating different combined, parser only, builder only, validator only browser bundles +- Keeping cjs modules as they can be imported in cjs and esm modules both. Otherwise refer `esm` branch. + +**4.0.0-beta.8 / 2021-12-13** +- call tagValueProcessor for stop nodes + +**4.0.0-beta.7 / 2021-12-09** +- fix Validator bug when an attribute has no value but '=' only +- XML Builder should suppress unpaired tags by default. +- documents update for missing features +- refactoring to use Object.assign +- refactoring to remove repeated code + +**4.0.0-beta.6 / 2021-12-05** +- Support PI Tags processing +- Support `suppressBooleanAttributes` by XML Builder for attributes with value `true`. + +**4.0.0-beta.5 / 2021-12-04** +- fix: when a tag with name "attributes" + +**4.0.0-beta.4 / 2021-12-02** +- Support HTML document parsing +- skip stop nodes parsing when building the XML from JS object +- Support external entites without DOCTYPE +- update dev dependency: strnum v1.0.5 to fix long number issue + +**4.0.0-beta.3 / 2021-11-30** +- support global stopNodes expression like "*.stop" +- support self-closing and paired unpaired tags +- fix: CDATA should not be parsed. +- Fix typings for XMLBuilder (#396)(By [Anders Emil Salvesen](https://github.com/andersem)) +- supports XML entities, HTML entities, DOCTYPE entities + +**⚠️ 4.0.0-beta.2 / 2021-11-19** +- rename `attrMap` to `attibutes` in parser output when `preserveOrder:true` +- supports unpairedTags + +**⚠️ 4.0.0-beta.1 / 2021-11-18** +- Parser returns an array now + - to make the structure common + - and to return root level detail +- renamed `cdataTagName` to `cdataPropName` +- Added `commentPropName` +- fix typings + +**⚠️ 4.0.0-beta.0 / 2021-11-16** +- Name change of many configuration properties. + - `attrNodeName` to `attributesGroupName` + - `attrValueProcessor` to `attributeValueProcessor` + - `parseNodeValue` to `parseTagValue` + - `ignoreNameSpace` to `removeNSPrefix` + - `numParseOptions` to `numberParseOptions` + - spelling correction for `suppressEmptyNode` +- Name change of cli and browser bundle to **fxparser** +- `isArray` option is added to parse a tag into array +- `preserveOrder` option is added to render XML in such a way that the result js Object maintains the order of properties same as in XML. +- Processing behaviour of `tagValueProcessor` and `attributeValueProcessor` are changes with extra input parameters +- j2xparser is renamed to XMLBuilder. +- You need to build XML parser instance for given options first before parsing XML. +- fix #327, #336: throw error when extra text after XML content +- fix #330: attribute value can have '\n', +- fix #350: attrbiutes can be separated by '\n' from tagname + +3.21.1 / 2021-10-31 +- Correctly format JSON elements with a text prop but no attribute props ( By [haddadnj](https://github.com/haddadnj) ) + +3.21.0 / 2021-10-25 + - feat: added option `rootNodeName` to set tag name for array input when converting js object to XML. + - feat: added option `alwaysCreateTextNode` to force text node creation (by: *@massimo-ua*) + - ⚠️ feat: Better error location for unclosed tags. (by *@Gei0r*) + - Some error messages would be changed when validating XML. Eg + - `{ InvalidXml: "Invalid '[ \"rootNode\"]' found." }` → `{InvalidTag: "Unclosed tag 'rootNode'."}` + - `{ InvalidTag: "Closing tag 'rootNode' is expected inplace of 'rootnode'." }` → `{ InvalidTag: "Expected closing tag 'rootNode' (opened in line 1) instead of closing tag 'rootnode'."}` + - ⚠️ feat: Column in error response when validating XML +```js +{ + "code": "InvalidAttr", + "msg": "Attribute 'abc' is repeated.", + "line": 1, + "col": 22 +} +``` + +3.20.1 / 2021-09-25 + - update strnum package + +3.20.0 / 2021-09-10 + - Use strnum npm package to parse string to number + - breaking change: long number will be parsed to scientific notation. + +3.19.0 / 2021-03-14 + - License changed to MIT original + - Fix #321 : namespace tag parsing + +3.18.0 / 2021-02-05 + - Support RegEx and function in arrayMode option + - Fix #317 : validate nested PI tags + +3.17.4 / 2020-06-07 + - Refactor some code to support IE11 + - Fix: `` space as attribute string + +3.17.3 / 2020-05-23 + - Fix: tag name separated by \n \t + - Fix: throw error for unclosed tags + +3.17.2 / 2020-05-23 + - Fixed an issue in processing doctype tag + - Fixed tagName where it should not have whitespace chars + +3.17.1 / 2020-05-19 + - Fixed an issue in checking opening tag + +3.17.0 / 2020-05-18 + - parser: fix '<' issue when it comes in aatr value + - parser: refactoring to remove dependency from regex + - validator: fix IE 11 issue for error messages + - updated dev dependencies + - separated benchmark module to sub-module + - breaking change: comments will not be removed from CDATA data + +3.16.0 / 2020-01-12 + - validaor: fix for ampersand characters (#215) + - refactoring to support unicode chars in tag name + - update typing for validator error + +3.15.1 / 2019-12-09 + - validaor: fix multiple roots are not allowed + +3.15.0 / 2019-11-23 + - validaor: improve error messaging + - validator: add line number in case of error + - validator: add more error scenarios to make it more descriptive + +3.14.0 / 2019-10-25 + - arrayMode for XML to JS obj parsing + +3.13.0 / 2019-10-02 + - pass tag/attr name to tag/attr value processor + - inbuilt optional validation with XML parser + +3.12.21 / 2019-10-02 + - Fix validator for unclosed XMLs + - move nimnjs dependency to dev dependency + - update dependencies + +3.12.20 / 2019-08-16 + - Revert: Fix #167: '>' in attribute value as it is causing high performance degrade. + +3.12.19 / 2019-07-28 + - Fix js to xml parser should work for date values. (broken: `tagValueProcessor` will receive the original value instead of string always) (breaking change) + +3.12.18 / 2019-07-27 + - remove configstore dependency + +3.12.17 / 2019-07-14 + - Fix #167: '>' in attribute value + +3.12.16 / 2019-03-23 + - Support a new option "stopNodes". (#150) +Accept the list of tags which are not required to be parsed. Instead, all the nested tag and data will be assigned as string. + - Don't show post-install message + +3.12.12 / 2019-01-11 + - fix : IE parseInt, parseFloat error + +3.12.11 / 2018-12-24 + - fix #132: "/" should not be parsed as boolean attr in case of self closing tags + +3.12.9 / 2018-11-23 + - fix #129 : validator should not fail when an atrribute name is 'length' + +3.12.8 / 2018-11-22 + - fix #128 : use 'attrValueProcessor' to process attribute value in json2xml parser + +3.12.6 / 2018-11-10 + - Fix #126: check for type + +3.12.4 / 2018-09-12 + - Fix: include tasks in npm package + +3.12.3 / 2018-09-12 + - Fix CLI issue raised in last PR + +3.12.2 / 2018-09-11 + - Fix formatting for JSON to XML output + - Migrate to webpack (PR merged) + - fix cli (PR merged) + +3.12.0 / 2018-08-06 + - Support hexadecimal values + - Support true number parsing + +3.11.2 / 2018-07-23 + - Update Demo for more options + - Update license information + - Update readme for formatting, users, and spelling mistakes + - Add missing typescript definition for j2xParser + - refactoring: change filenames + +3.11.1 / 2018-06-05 + - fix #93: read the text after self closing tag + +3.11.0 / 2018-05-20 + - return defaultOptions if there are not options in buildOptions function + - added localeRange declaration in parser.d.ts + - Added support of cyrillic characters in validator XML + - fixed bug in validator work when XML data with byte order marker + +3.10.0 / 2018-05-13 + - Added support of cyrillic characters in parsing XML to JSON + +3.9.11 / 2018-05-09 + - fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/80 fix nimn chars + - update package information + - fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/86: json 2 xml parser : property with null value should be parsed to self closing tag. + - update online demo + - revert zombiejs to old version to support old version of node + - update dependencies + +3.3.10 / 2018-04-23 + - fix #77 : parse even if closing tag has space before '>' + - include all css & js lib in demo app + - remove babel dependencies until needed + +3.3.9 / 2018-04-18 + - fix #74 : TS2314 TypeScript compiler error + +3.3.8 / 2018-04-17 + - fix #73 : IE doesn't support Object.assign + +3.3.7 / 2018-04-14 + - fix: use let insted of const in for loop of validator + - Merge pull request + https://github.com/NaturalIntelligence/fast-xml-parser/issues/71 from bb/master + first draft of typings for typescript + https://github.com/NaturalIntelligence/fast-xml-parser/issues/69 + - Merge pull request + https://github.com/NaturalIntelligence/fast-xml-parser/issues/70 from bb/patch-1 + fix some typos in readme + +3.3.6 / 2018-03-21 + - change arrow functions to full notation for IE compatibility + +3.3.5 / 2018-03-15 + - fix https://github.com/NaturalIntelligence/fast-xml-parser/issues/67 : attrNodeName invalid behavior + - fix: remove decodeHTML char condition + +3.3.4 / 2018-03-14 + - remove dependency on "he" package + - refactor code to separate methods in separate files. + - draft code for transforming XML to json string. It is not officially documented due to performance issue. + +3.3.0 / 2018-03-05 + - use common default options for XML parsing for consistency. And add `parseToNimn` method. + - update nexttodo + - update README about XML to Nimn transformation and remove special notes about 3.x release + - update CONTRIBUTING.ms mentioning nexttodo + - add negative case for XML PIs + - validate xml processing instruction tags https://github.com/NaturalIntelligence/fast-xml-parser/issues/62 + - nimndata: handle array with object + - nimndata: node with nested node and text node + - nimndata: handle attributes and text node + - nimndata: add options, handle array + - add xml to nimn data converter + - x2j: direct access property with tagname + - update changelog + - fix validator when single quote presents in value enclosed with double quotes or vice versa + - Revert "remove unneded nimnjs dependency, move opencollective to devDependencies and replace it + with more light opencollective-postinstall" + This reverts commit d47aa7181075d82db4fee97fd8ea32b056fe3f46. + - Merge pull request: https://github.com/NaturalIntelligence/fast-xml-parser/issues/63 from HaroldPutman/suppress-undefined + Keep undefined nodes out of the XML output : This is useful when you are deleting nodes from the JSON and rewriting XML. + +3.2.4 / 2018-03-01 + - fix #59 fix in validator when open quote presents in attribute value + - Create nexttodo.md + - exclude static from bitHound tests + - add package lock + +3.2.3 / 2018-02-28 + - Merge pull request from Delagen/master: fix namespaces can contain the same characters as xml names + +3.2.2 / 2018-02-22 + - fix: attribute xmlns should not be removed if ignoreNameSpace is false + - create CONTRIBUTING.md + +3.2.1 / 2018-02-17 + - fix: empty attribute should be parsed + +3.2.0 / 2018-02-16 + - Merge pull request : Dev to Master + - Update README and version + - j2x:add performance test + - j2x: Remove extra empty line before closing tag + - j2x: suppress empty nodes to self closing node if configured + - j2x: provide option to give indentation depth + - j2x: make optional formatting + - j2x: encodeHTMLchat + - j2x: handle cdata tag + - j2x: handle grouped attributes + - convert json to xml + - nested object + - array + - attributes + - text value + - small refactoring + - Merge pull request: Update cli.js to let user validate XML file or data + - Add option for rendering CDATA as separate property + +3.0.1 / 2018-02-09 + - fix CRLF: replace it with single space in attributes value only. + +3.0.0 / 2018-02-08 + - change online tool with new changes + - update info about new options + - separate tag value processing to separate function + - make HTML decoding optional + - give an option to allow boolean attributes + - change cli options as per v3 + - Correct comparison table format on README + - update v3 information + - some performance improvement changes + - Make regex object local to the method and move some common methods to util + - Change parser to + - handle multiple instances of CDATA + - make triming of value optionals + - HTML decode attribute and text value + - refactor code to separate files + - Ignore newline chars without RE (in validator) + - validate for XML prolog + - Validate DOCTYPE without RE + - Update validator to return error response + - Update README to add detail about V3 + - Separate xmlNode model class + - include vscode debug config + - fix for repeated object + - fix attribute regex for boolean attributes + - Fix validator for invalid attributes +2.9.4 / 2018-02-02 + - Merge pull request: Decode HTML characters + - refactor source folder name + - ignore bundle / browser js to be published to npm +2.9.3 / 2018-01-26 + - Merge pull request: Correctly remove CRLF line breaks + - Enable to parse attribute in online editor + - Fix testing demo app test + - Describe parsing options + - Add options for online demo +2.9.2 / 2018-01-18 + - Remove check if tag starting with "XML" + - Fix: when there are spaces before / after CDATA + +2.9.1 / 2018-01-16 + - Fix: newline should be replaced with single space + - Fix: for single and multiline comments + - validate xml with CDATA + - Fix: the issue when there is no space between 2 attributes + - Fix: https://github.com/NaturalIntelligence/fast-xml-parser/issues/33: when there is newline char in attr val, it doesn't parse + - Merge pull request: fix ignoreNamespace + - fix: don't wrap attributes if only namespace attrs + - fix: use portfinder for run tests, update deps + - fix: don't treat namespaces as attributes when ignoreNamespace enabled + +2.9.0 / 2018-01-10 + - Rewrite the validator to handle large files. + Ignore DOCTYPE validation. + - Fix: When attribute value has equal sign + +2.8.3 / 2017-12-15 + - Fix: when a tag has value along with subtags + +2.8.2 / 2017-12-04 + - Fix value parsing for IE + +2.8.1 / 2017-12-01 + - fix: validator should return false instead of err when invalid XML + +2.8.0 / 2017-11-29 + - Add CLI option to ignore value conversion + - Fix variable name when filename is given on CLI + - Update CLI help text + - Merge pull request: xml2js: Accept standard input + - Test Node 8 + - Update dependencies + - Bundle readToEnd + - Add ability to read from standard input + +2.7.4 / 2017-09-22 + - Merge pull request: Allow wrap attributes with subobject to compatible with other parsers output + +2.7.3 / 2017-08-02 + - fix: handle CDATA with regx + +2.7.2 / 2017-07-30 + - Change travis config for yarn caching + - fix validator: when tag property is same as array property + - Merge pull request: Failing test case in validator for valid SVG + +2.7.1 / 2017-07-26 + - Fix: Handle val 0 + +2.7.0 / 2017-07-25 + - Fix test for arrayMode + - Merge pull request: Add arrayMode option to parse any nodes as arrays + +2.6.0 / 2017-07-14 + - code improvement + - Add unit tests for value conversion for attr + - Merge pull request: option of an attribute value conversion to a number (textAttrConversion) the same way as the textNodeConversion option does. Default value is false. + +2.5.1 / 2017-07-01 + - Fix XML element name pattern + - Fix XML element name pattern while parsing + - Fix validation for xml tag element + +2.5.0 / 2017-06-25 + - Improve Validator performance + - update attr matching regex + - Add perf tests + - Improve atrr regex to handle all cases + +2.4.4 / 2017-06-08 + - Bug fix: when an attribute has single or double quote in value + +2.4.3 / 2017-06-05 + - Bug fix: when multiple CDATA tags are given + - Merge pull request: add option "textNodeConversion" + - add option "textNodeConversion" + +2.4.1 / 2017-04-14 + - fix tests + - Bug fix: preserve initial space of node value + - Handle CDATA + +2.3.1 / 2017-03-15 + - Bug fix: when single self closing tag + - Merge pull request: fix .codeclimate.yml + - Update .codeclimate.yml - Fixed config so it does not error anymore. + - Update .codeclimate.yml + +2.3.0 / 2017-02-26 + - Code improvement + - add bithound config + - Update usage + - Update travis to generate bundle js before running tests + - 1.Browserify, 2. add more tests for validator + - Add validator + - Fix CLI default parameter bug + +2.2.1 / 2017-02-05 + - Bug fix: CLI default option diff --git a/bff/node_modules/fast-xml-parser/LICENSE b/bff/node_modules/fast-xml-parser/LICENSE new file mode 100644 index 0000000..d7da622 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Amit Kumar Gupta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/fast-xml-parser/README.md b/bff/node_modules/fast-xml-parser/README.md new file mode 100644 index 0000000..fb65162 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/README.md @@ -0,0 +1,225 @@ +# [fast-xml-parser](https://www.npmjs.com/package/fast-xml-parser) + +[![NPM total downloads](https://img.shields.io/npm/dt/fast-xml-parser.svg)](https://npm.im/fast-xml-parser) + +Validate XML, Parse XML to JS Object, or Build XML from JS Object without C/C++ based libraries and no callback. + +FXP logo + +* Validate XML data syntactically. Use [detailed-xml-validator](https://github.com/NaturalIntelligence/detailed-xml-validator/) to verify business rules. +* Parse XML to JS Objects and vice versa +* Common JS, ESM, and browser compatible +* Faster than any other pure JS implementation. + +It can handle big files (tested up to 100mb). XML Entities, HTML entities, and DOCTYPE entites are supported. Unpaired tags (Eg `
` in HTML), stop nodes (Eg ` +: + +``` + +Bundle size + +| Bundle Name | Size | +| ------------------ | ---- | +| fxbuilder.min.js | 6.5K | +| fxparser.min.js | 20K | +| fxp.min.js | 26K | +| fxvalidator.min.js | 5.7K | + +## Documents + + + + + + + +
v3v4 and v5v6
+ documents +
    +
  1. Getting Started
  2. +
  3. XML Parser
  4. +
  5. XML Builder
  6. +
  7. XML Validator
  8. +
  9. Entities
  10. +
  11. HTML Document Parsing
  12. +
  13. PI Tag processing
  14. +
  15. Path Expression
  16. +
    +
  1. Getting Started +
  2. Features
  3. +
  4. Options
  5. +
  6. Output Builders
  7. +
  8. Value Parsers
  9. +
+ +**note**: +- Version 6 is released with version 4 for experimental use. Based on its demand, it'll be developed and the features can be different in final release. +- Version 5 has the same functionalities as version 4. + +## Performance +negative means error + +### XML Parser + + + + +* Y-axis: requests per second +* X-axis: File size + +### XML Builder + + +* Y-axis: requests per second + + + +--- + +## Usage Trend + +[Usage Trend of fast-xml-parser](https://npm-compare.com/fast-xml-parser#timeRange=THREE_YEARS) + + + NPM Usage Trend of fast-xml-parser + + +# Supporters +#### Contributors + +This project exists thanks to [all](graphs/contributors) the people who contribute. [[Contribute](docs/CONTRIBUTING.md)]. + + + + +#### Backers from Open collective + +Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/fast-xml-parser#backer)] + + + + + +# License +* MIT License + +![Donate $5](static/img/donation_quote.png) diff --git a/bff/node_modules/fast-xml-parser/lib/fxbuilder.min.js b/bff/node_modules/fast-xml-parser/lib/fxbuilder.min.js new file mode 100644 index 0000000..3d7ae59 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/lib/fxbuilder.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.XMLBuilder=e():t.XMLBuilder=e()}(this,()=>(()=>{"use strict";var t={d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>y});class i{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,s="";for(;i0&&(this.path[this.path.length-1].values=void 0);const s=this.path.length;this.siblingStacks[s]||(this.siblingStacks[s]=new Map);const n=this.siblingStacks[s],r=i?`${i}:${t}`:t,o=n.get(r)||0;let a=0;for(const t of n.values())a+=t;n.set(r,o+1);const h={tag:t,position:a,counter:o};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const s=t[i];if("deep-wildcard"===s.type){if(i--,i<0)return!0;const s=t[i];let n=!1;for(let t=e;t>=0;t--){const r=t===this.path.length-1;if(this._matchSegment(s,this.path[t],r)){e=t-1,i--,n=!0;break}}if(!n)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(s,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const s=e.counter??0;if("first"===t.position&&0!==s)return!1;if("odd"===t.position&&s%2!=1)return!1;if("even"===t.position&&s%2!=0)return!1;if("nth"===t.position&&s!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}readOnly(){return new Proxy(this,{get(t,e,i){if(s.has(e))return()=>{throw new TypeError(`Cannot call '${e}' on a read-only Matcher. Obtain a writable instance to mutate state.`)};const n=Reflect.get(t,e,i);return"path"===e||"siblingStacks"===e?Object.freeze(Array.isArray(n)?n.map(t=>t instanceof Map?Object.freeze(new Map(t)):Object.freeze({...t})):n):"function"==typeof n?n.bind(t):n},set(t,e){throw new TypeError(`Cannot set property '${String(e)}' on a read-only Matcher.`)},deleteProperty(t,e){throw new TypeError(`Cannot delete property '${String(e)}' from a read-only Matcher.`)}})}}function r(t,e){let s="";e.format&&e.indentBy.length>0&&(s="\n");const r=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;te.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let i=t.toString();return i=d(i,e),i}return""}for(let f=0;f`,p=!1,s.pop();continue}if(m===e.commentPropName){r+=i+`\x3c!--${g[m][0][e.textNodeName]}--\x3e`,p=!0,s.pop();continue}if("?"===m[0]){const t=l(g[":@"],e,N),n="?xml"===m?"":i;let o=g[m][0][e.textNodeName];o=0!==o.length?" "+o:"",r+=n+`<${m}${o}${t}?>`,p=!0,s.pop();continue}let y=i;""!==y&&(y+=e.indentBy);const x=i+`<${m}${l(g[":@"],e,N)}`;let P;P=N?h(g[m],e):o(g[m],e,y,s,n),-1!==e.unpairedTags.indexOf(m)?e.suppressUnpairedNode?r+=x+">":r+=x+"/>":P&&0!==P.length||!e.suppressEmptyNode?P&&P.endsWith(">")?r+=x+`>${P}${i}`:(r+=x+">",P&&""!==i&&(P.includes("/>")||P.includes("`):r+=x+"/>",p=!0,s.pop()}return r}function a(t,e){if(!t||e.ignoreAttributes)return null;const i={};let s=!1;for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[n.startsWith(e.attributeNamePrefix)?n.substr(e.attributeNamePrefix.length):n]=t[n],s=!0);return s?i:null}function h(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let i="";for(let s=0;s${s}`:i+=`<${r}${t}/>`}}}return i}function p(t,e){let i="";if(t&&!e.ignoreAttributes)for(let s in t){if(!Object.prototype.hasOwnProperty.call(t,s))continue;let n=t[s];!0===n&&e.suppressBooleanAttributes?i+=` ${s.substr(e.attributeNamePrefix.length)}`:i+=` ${s.substr(e.attributeNamePrefix.length)}="${n}"`}return i}function u(t){const e=Object.keys(t);for(let i=0;i0&&e.processEntities)for(let i=0;i","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function g(t){if(this.options=Object.assign({},f,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=N),this.processTextOrObjNode=m,this.options.format?(this.indentate=b,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function m(t,e,i,s){const n=this.extractAttributes(t);if(s.push(e,n),this.checkStopNode(s)){const n=this.buildRawContent(t),r=this.buildAttributesForStopNode(t);return s.pop(),this.buildObjectNode(n,e,r,i)}const r=this.j2x(t,i+1,s);return s.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,r.attrStr,i,s):this.buildObjectNode(r.val,e,r.attrStr,i)}function b(t){return this.options.indentBy.repeat(t)}function N(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}g.prototype.build=function(t){if(this.options.preserveOrder)return r(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new n;return this.j2x(t,0,e).val}},g.prototype.j2x=function(t,e,i){let s="",n="";if(this.options.maxNestedTags&&i.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const r=this.options.jPath?i.toString():i,o=this.checkStopNode(i);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(n+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?n+="":"?"===a[0]?n+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)n+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){const h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,r))s+=this.buildAttrPairStr(h,""+t[a],o);else if(!h)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);n+=this.replaceEntitiesValue(e)}else{i.push(a);const s=this.checkStopNode(i);if(i.pop(),s){const i=""+t[a];n+=""===i?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+i+""+t+"${t}`;else if("object"==typeof t&&null!==t){const s=this.buildRawContent(t),n=this.buildAttributesForStopNode(t);e+=""===s?`<${i}${n}/>`:`<${i}${n}>${s}`}}else if("object"==typeof s&&null!==s){const t=this.buildRawContent(s),n=this.buildAttributesForStopNode(s);e+=""===t?`<${i}${n}/>`:`<${i}${n}>${t}`}else e+=`<${i}>${s}`}return e},g.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const i=t[this.options.attributesGroupName];for(let t in i){if(!Object.prototype.hasOwnProperty.call(i,t))continue;const s=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,n=i[t];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}else for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const s=this.isAttribute(i);if(s){const n=t[i];!0===n&&this.options.suppressBooleanAttributes?e+=" "+s:e+=" "+s+'="'+n+'"'}}return e},g.prototype.buildObjectNode=function(t,e,i,s){if(""===t)return"?"===e[0]?this.indentate(s)+"<"+e+i+"?"+this.tagEndChar:this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar;{let n=""+t+n}},g.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(s)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(s)+"<"+e+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(s)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(s)+"<"+e+i+">"+n+"0&&this.options.processEntities)for(let e=0;e {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\n\n/**\n * Names of methods that mutate Matcher state.\n * Any attempt to call these on a read-only view throws a TypeError.\n * @type {Set}\n */\nconst MUTATING_METHODS = new Set(['push', 'pop', 'reset', 'updateCurrent', 'restore']);\n\nexport default class Matcher {\n /**\n * Create a new Matcher\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Default path separator (default: '.')\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag: string, values: object, position: number, counter: number }\n // values only present for current (last) node\n // Each siblingStacks entry: Map tracking occurrences at each level\n }\n\n /**\n * Push a new tag onto the path\n * @param {string} tagName - Name of the tag\n * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n * @param {string} namespace - Namespace for the tag (optional)\n */\n push(tagName, attrValues = null, namespace = null) {\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n const prev = this.path[this.path.length - 1];\n prev.values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n // Store namespace if provided\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n // Store values only for current node\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n }\n\n /**\n * Pop the last tag from the path\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) {\n return undefined;\n }\n\n const node = this.path.pop();\n\n // Clean up sibling tracking for levels deeper than current\n // After pop, path.length is the new depth\n // We need to clean up siblingStacks[path.length + 1] and beyond\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values\n * Useful when attributes are parsed after push\n * @param {Object} attrValues - Attribute values\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value\n * @param {string} attrName - Attribute name\n * @returns {*} Attribute value or undefined\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n const current = this.path[this.path.length - 1];\n return current.values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute\n * @param {string} attrName - Attribute name\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent)\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name)\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition for backward compatibility)\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string\n * @param {string} separator - Optional separator (uses default if not provided)\n * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n return this.path.map(n => {\n if (includeNamespace && n.namespace) {\n return `${n.namespace}:${n.tag}`;\n }\n return n.tag;\n }).join(sep);\n }\n\n /**\n * Get path as array of tag names\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty\n */\n reset() {\n this.path = [];\n this.siblingStacks = [];\n }\n\n /**\n * Match current path against an Expression\n * @param {Expression} expression - The expression to match against\n * @returns {boolean} True if current path matches the expression\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n // Handle deep wildcard patterns\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n // Simple path matching (no deep wildcards)\n return this._matchSimple(segments);\n }\n\n /**\n * Match simple path (no deep wildcards)\n * @private\n */\n _matchSimple(segments) {\n // Path must be same length as segments\n if (this.path.length !== segments.length) {\n return false;\n }\n\n // Match each segment bottom-to-top\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const node = this.path[i];\n const isCurrentNode = (i === this.path.length - 1);\n\n if (!this._matchSegment(segment, node, isCurrentNode)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match path with deep wildcards\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1; // Start from current node (bottom)\n let segIdx = segments.length - 1; // Start from last segment\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n // \"..\" matches zero or more levels\n segIdx--;\n\n if (segIdx < 0) {\n // Pattern ends with \"..\", always matches\n return true;\n }\n\n // Find where next segment matches in the path\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n const isCurrentNode = (i === this.path.length - 1);\n if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n // Regular segment\n const isCurrentNode = (pathIdx === this.path.length - 1);\n if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n // All segments must be consumed\n return segIdx < 0;\n }\n\n /**\n * Match a single segment against a node\n * @private\n * @param {Object} segment - Segment from Expression\n * @param {Object} node - Node from path\n * @param {boolean} isCurrentNode - Whether this is the current (last) node\n * @returns {boolean}\n */\n _matchSegment(segment, node, isCurrentNode) {\n // Match tag name (* is wildcard)\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n // Match namespace if specified in segment\n if (segment.namespace !== undefined) {\n // Segment has namespace - node must match it\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n // If segment has no namespace, it matches nodes with or without namespace\n\n // Match attribute name (check if node has this attribute)\n // Can only check for current node since ancestors don't have values\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n // Can't check attributes for ancestor nodes (values not stored)\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n // Match attribute value (only possible for current node)\n if (segment.attrValue !== undefined) {\n const actualValue = node.values[segment.attrName];\n // Both should be strings\n if (String(actualValue) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n // Match position (only for current node)\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n // Can't check position for ancestor nodes\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth') {\n if (counter !== segment.positionValue) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Create a snapshot of current state\n * @returns {Object} State snapshot\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map))\n };\n }\n\n /**\n * Restore state from snapshot\n * @param {Object} snapshot - State snapshot\n */\n restore(snapshot) {\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n }\n\n /**\n * Return a read-only view of this matcher.\n *\n * The returned object exposes all query/inspection methods but throws a\n * TypeError if any state-mutating method is called (`push`, `pop`, `reset`,\n * `updateCurrent`, `restore`). Property reads (e.g. `.path`, `.separator`)\n * are allowed but the returned arrays/objects are frozen so callers cannot\n * mutate internal state through them either.\n *\n * @returns {ReadOnlyMatcher} A proxy that forwards read operations and blocks writes.\n *\n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n *\n * const ro = matcher.readOnly();\n * ro.matches(expr); // ✓ works\n * ro.getCurrentTag(); // ✓ works\n * ro.push(\"child\", {}); // ✗ throws TypeError\n * ro.reset(); // ✗ throws TypeError\n */\n readOnly() {\n const self = this;\n\n return new Proxy(self, {\n get(target, prop, receiver) {\n // Block mutating methods\n if (MUTATING_METHODS.has(prop)) {\n return () => {\n throw new TypeError(\n `Cannot call '${prop}' on a read-only Matcher. ` +\n `Obtain a writable instance to mutate state.`\n );\n };\n }\n\n const value = Reflect.get(target, prop, receiver);\n\n // Freeze array/object properties so callers can't mutate internal\n // state through direct property access (e.g. matcher.path.push(...))\n if (prop === 'path' || prop === 'siblingStacks') {\n return Object.freeze(\n Array.isArray(value)\n ? value.map(item =>\n item instanceof Map\n ? Object.freeze(new Map(item)) // freeze a copy of each Map\n : Object.freeze({ ...item }) // freeze a copy of each node\n )\n : value\n );\n }\n\n // Bind methods so `this` inside them still refers to the real Matcher\n if (typeof value === 'function') {\n return value.bind(target);\n }\n\n return value;\n },\n\n // Prevent any property assignment on the read-only view\n set(_target, prop) {\n throw new TypeError(\n `Cannot set property '${String(prop)}' on a read-only Matcher.`\n );\n },\n\n // Prevent property deletion\n deleteProperty(_target, prop) {\n throw new TypeError(\n `Cannot delete property '${String(prop)}' from a read-only Matcher.`\n );\n }\n });\n }\n}","import { Expression, Matcher } from 'path-expression-matcher';\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n\n // Pre-compile stopNode expressions for pattern matching\n const stopNodeExpressions = [];\n if (options.stopNodes && Array.isArray(options.stopNodes)) {\n for (let i = 0; i < options.stopNodes.length; i++) {\n const node = options.stopNodes[i];\n if (typeof node === 'string') {\n stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n stopNodeExpressions.push(node);\n }\n }\n }\n\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n\n return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions);\n}\n\nfunction arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n if (options.maxNestedTags && matcher.getDepth() > options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n\n if (!Array.isArray(arr)) {\n // Non-array values (e.g. string tag values) should be treated as text content\n if (arr !== undefined && arr !== null) {\n let text = arr.toString();\n text = replaceEntitiesValue(text, options);\n return text;\n }\n return \"\";\n }\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if (tagName === undefined) continue;\n\n // Extract attributes from \":@\" property\n const attrValues = extractAttributeValues(tagObj[\":@\"], options);\n\n // Push tag to matcher WITH attributes\n matcher.push(tagName, attrValues);\n\n // Check if this is a stop node using Expression matching\n const isStopNode = checkStopNode(matcher, stopNodeExpressions);\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n }\n\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n\n // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tagStart = indentation + `<${tagName}${attStr}`;\n\n // If this is a stopNode, get raw content without processing\n let tagValue;\n if (isStopNode) {\n tagValue = getRawContent(tagObj[tagName], options);\n } else {\n\n tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions);\n }\n\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n\n // Pop tag from matcher\n matcher.pop();\n }\n\n return xmlStr;\n}\n\n/**\n * Extract attribute values from the \":@\" object and return as plain object\n * for passing to matcher.push()\n */\nfunction extractAttributeValues(attrMap, options) {\n if (!attrMap || options.ignoreAttributes) return null;\n\n const attrValues = {};\n let hasAttrs = false;\n\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // Remove the attribute prefix to get clean attribute name\n const cleanAttrName = attr.startsWith(options.attributeNamePrefix)\n ? attr.substr(options.attributeNamePrefix.length)\n : attr;\n attrValues[cleanAttrName] = attrMap[attr];\n hasAttrs = true;\n }\n\n return hasAttrs ? attrValues : null;\n}\n\n/**\n * Extract raw content from a stopNode without any processing\n * This preserves the content exactly as-is, including special characters\n */\nfunction getRawContent(arr, options) {\n if (!Array.isArray(arr)) {\n // Non-array values return as-is\n if (arr !== undefined && arr !== null) {\n return arr.toString();\n }\n return \"\";\n }\n\n let content = \"\";\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const tagName = propName(item);\n\n if (tagName === options.textNodeName) {\n // Raw text content - NO processing, NO entity replacement\n content += item[tagName];\n } else if (tagName === options.cdataPropName) {\n // CDATA content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName === options.commentPropName) {\n // Comment content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName && tagName[0] === \"?\") {\n // Processing instruction - skip for stopNodes\n continue;\n } else if (tagName) {\n // Nested tags within stopNode\n // Recursively get raw content and reconstruct the tag\n // For stopNodes, we don't process attributes either\n const attStr = attr_to_str_raw(item[\":@\"], options);\n const nestedContent = getRawContent(item[tagName], options);\n\n if (!nestedContent || nestedContent.length === 0) {\n content += `<${tagName}${attStr}/>`;\n } else {\n content += `<${tagName}${attStr}>${nestedContent}`;\n }\n }\n }\n return content;\n}\n\n/**\n * Build attribute string for stopNodes - NO entity replacement\n */\nfunction attr_to_str_raw(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // For stopNodes, use raw value without processing\n let attrVal = attrMap[attr];\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options, isStopNode) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n let attrVal;\n\n if (isStopNode) {\n // For stopNodes, use raw value without any processing\n attrVal = attrMap[attr];\n } else {\n // Normal processing: apply attributeValueProcessor and entity replacement\n attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n }\n\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction checkStopNode(matcher, stopNodeExpressions) {\n if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n for (let i = 0; i < stopNodeExpressions.length; i++) {\n if (matcher.matches(stopNodeExpressions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function (key, a) {\n return a;\n },\n attributeValueProcessor: function (attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false,\n maxNestedTags: 100,\n jPath: true // When true, callbacks receive string jPath; when false, receive Matcher instance\n};\n\nexport default function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n\n // Convert old-style stopNodes for backward compatibility\n // Old syntax: \"*.tag\" meant \"tag anywhere in tree\"\n // New syntax: \"..tag\" means \"tag anywhere in tree\"\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n this.options.stopNodes = this.options.stopNodes.map(node => {\n if (typeof node === 'string' && node.startsWith('*.')) {\n // Convert old wildcard syntax to deep wildcard\n return '..' + node.substring(2);\n }\n return node;\n });\n }\n\n // Pre-compile stopNode expressions for pattern matching\n this.stopNodeExpressions = [];\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n for (let i = 0; i < this.options.stopNodes.length; i++) {\n const node = this.options.stopNodes[i];\n if (typeof node === 'string') {\n this.stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n this.stopNodeExpressions.push(node);\n }\n }\n }\n\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function (/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function () {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function (jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n }\n }\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n return this.j2x(jObj, 0, matcher).val;\n }\n};\n\nBuilder.prototype.j2x = function (jObj, level, matcher) {\n let attrStr = '';\n let val = '';\n if (this.options.maxNestedTags && matcher.getDepth() >= this.options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n // Get jPath based on option: string for backward compatibility, or Matcher for new features\n const jPath = this.options.jPath ? matcher.toString() : matcher;\n\n // Check if current node is a stopNode (will be used for attribute encoding)\n const isCurrentStopNode = this.checkStopNode(matcher);\n\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key === this.options.cdataPropName) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n // Check if this is a stopNode before building\n matcher.push(key);\n const isStopNode = this.checkStopNode(matcher);\n matcher.pop();\n\n if (isStopNode) {\n // Build as raw content without encoding\n const textValue = '' + jObj[key];\n if (textValue === '') {\n val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`;\n } else if (typeof item === 'object' && item !== null) {\n const nestedContent = this.buildRawContent(item);\n const nestedAttrs = this.buildAttributesForStopNode(item);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}`;\n }\n }\n }\n } else if (typeof value === 'object' && value !== null) {\n // Nested object\n const nestedContent = this.buildRawContent(value);\n const nestedAttrs = this.buildAttributesForStopNode(value);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}`;\n }\n } else {\n // Primitive value\n content += `<${key}>${value}`;\n }\n }\n\n return content;\n};\n\n// Build attribute string for stopNode (no entity encoding)\nBuilder.prototype.buildAttributesForStopNode = function (obj) {\n if (!obj || typeof obj !== 'object') return '';\n\n let attrStr = '';\n\n // Check for attributesGroupName (when attributes are grouped)\n if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n const attrGroup = obj[this.options.attributesGroupName];\n for (let attrKey in attrGroup) {\n if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n ? attrKey.substring(this.options.attributeNamePrefix.length)\n : attrKey;\n const val = attrGroup[attrKey];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + cleanKey;\n } else {\n attrStr += ' ' + cleanKey + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n } else {\n // Look for individual attributes\n for (let key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n const attr = this.isAttribute(key);\n if (attr) {\n const val = obj[key];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + attr;\n } else {\n attrStr += ' ' + attr + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n }\n }\n\n return attrStr;\n};\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n\n let tagEndExp = '' + val + tagEndExp);\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp);\n }\n }\n}\n\nBuilder.prototype.closeTag = function (key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n } else if (this.options.suppressEmptyNode) { //empty\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n } else {\n // Normal processing: apply tagValueProcessor and entity replacement\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n\n if (textValue === '') {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities) {\n for (let i = 0; i < this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","// Re-export from fast-xml-builder for backward compatibility\nimport XMLBuilder from 'fast-xml-builder';\nexport default XMLBuilder;\n\n// If there are any named exports you also want to re-export:\nexport * from 'fast-xml-builder';"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","Expression","constructor","pattern","options","separator","segments","_parse","_hasDeepWildcard","some","seg","type","_hasAttributeCondition","undefined","attrName","_hasPositionSelector","position","i","currentPart","length","trim","push","_parseSegment","part","segment","bracketContent","withoutBrackets","bracketMatch","match","content","slice","namespace","tag","tagAndPosition","includes","nsIndex","indexOf","substring","Error","positionMatch","colonIndex","lastIndexOf","tagPart","posPart","test","eqIndex","attrValue","nthMatch","positionValue","parseInt","hasDeepWildcard","hasAttributeCondition","hasPositionSelector","toString","MUTATING_METHODS","Set","Matcher","path","siblingStacks","tagName","attrValues","values","currentLevel","Map","siblings","siblingKey","counter","count","set","node","pop","updateCurrent","current","getCurrentTag","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","getDepth","includeNamespace","sep","map","n","join","toArray","reset","matches","expression","_matchWithDeepWildcard","_matchSimple","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","found","actualValue","String","snapshot","restore","readOnly","Proxy","target","receiver","has","TypeError","Reflect","freeze","Array","isArray","item","bind","_target","deleteProperty","toXml","jArray","indentation","format","indentBy","stopNodeExpressions","stopNodes","arrToStr","arr","matcher","xmlStr","isPreviousElementTag","maxNestedTags","text","replaceEntitiesValue","tagObj","propName","extractAttributeValues","isStopNode","checkStopNode","textNodeName","tagText","tagValueProcessor","cdataPropName","commentPropName","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","getRawContent","unpairedTags","suppressUnpairedNode","suppressEmptyNode","endsWith","attrMap","ignoreAttributes","hasAttrs","attr","startsWith","attributeNamePrefix","substr","attr_to_str_raw","nestedContent","attrStr","attrVal","suppressBooleanAttributes","keys","attributeValueProcessor","textValue","processEntities","entities","entity","replace","regex","val","defaultOptions","attributesGroupName","a","preserveOrder","RegExp","oneListGroup","jPath","Builder","assign","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","extractAttributes","rawContent","buildRawContent","buildAttributesForStopNode","buildObjectNode","result","j2x","buildTextValNode","repeat","name","build","jObj","buildFromOrderedJs","arrayNodeName","isCurrentStopNode","Date","buildAttrPairStr","newval","closeTag","arrLen","listTagVal","listTagAttr","j","Ks","L","attrGroup","attrKey","nestedAttrs","cleanKey","tagEndExp","piClosingChar"],"sourceRoot":""} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/lib/fxp.cjs b/bff/node_modules/fast-xml-parser/lib/fxp.cjs new file mode 100644 index 0000000..4074035 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/lib/fxp.cjs @@ -0,0 +1 @@ +(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{XMLBuilder:()=>$t,XMLParser:()=>gt,XMLValidator:()=>It});const i=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n=new RegExp("^["+i+"]["+i+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function s(t,e){const i=[];let n=e.exec(t);for(;n;){const s=[];s.startIndex=e.lastIndex-n[0].length;const r=n.length;for(let t=0;t"!==t[r]&&" "!==t[r]&&"\t"!==t[r]&&"\n"!==t[r]&&"\r"!==t[r];r++)h+=t[r];if(h=h.trim(),"/"===h[h.length-1]&&(h=h.substring(0,h.length-1),r--),!y(h)){let e;return e=0===h.trim().length?"Invalid space after '<'.":"Tag '"+h+"' is an invalid name.",b("InvalidTag",e,w(t,r))}const l=g(t,r);if(!1===l)return b("InvalidAttr","Attributes for '"+h+"' have open quote.",w(t,r));let d=l.value;if(r=l.index,"/"===d[d.length-1]){const i=r-d.length;d=d.substring(0,d.length-1);const s=x(d,e);if(!0!==s)return b(s.err.code,s.err.msg,w(t,i+s.err.line));n=!0}else if(a){if(!l.tagClosed)return b("InvalidTag","Closing tag '"+h+"' doesn't have proper closing.",w(t,r));if(d.trim().length>0)return b("InvalidTag","Closing tag '"+h+"' can't have attributes or invalid starting.",w(t,o));if(0===i.length)return b("InvalidTag","Closing tag '"+h+"' has not been opened.",w(t,o));{const e=i.pop();if(h!==e.tagName){let i=w(t,e.tagStartPos);return b("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+i.line+", col "+i.col+") instead of closing tag '"+h+"'.",w(t,o))}0==i.length&&(s=!0)}}else{const a=x(d,e);if(!0!==a)return b(a.err.code,a.err.msg,w(t,r-d.length+a.err.line));if(!0===s)return b("InvalidXml","Multiple possible root nodes found.",w(t,r));-1!==e.unpairedTags.indexOf(h)||i.push({tagName:h,tagStartPos:o}),n=!0}for(r++;r0)||b("InvalidXml","Invalid '"+JSON.stringify(i.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):b("InvalidXml","Start tag expected.",1)}function p(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function u(t,e){const i=e;for(;e5&&"xml"===n)return b("InvalidXml","XML declaration allowed only at the start of the document.",w(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function c(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let i=1;for(e+=8;e"===t[e]&&(i--,0===i))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}const d='"',f="'";function g(t,e){let i="",n="",s=!1;for(;e"===t[e]&&""===n){s=!0;break}i+=t[e]}return""===n&&{value:i,index:e,tagClosed:s}}const m=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function x(t,e){const i=s(t,m),n={};for(let t=0;to.includes(t)?"__"+t:t,P={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,i){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:T};function S(t,e){if("string"!=typeof t)return;const i=t.toLowerCase();if(o.some(t=>i===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);if(a.some(t=>i===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`)}function A(t){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:10,maxTotalExpansions:1e3,maxExpandedLength:1e5,maxEntityCount:100,allowedTags:null,tagFilter:null}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:Math.max(1,t.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,t.maxExpansionDepth??10),maxTotalExpansions:Math.max(1,t.maxTotalExpansions??1e3),maxExpandedLength:Math.max(1,t.maxExpandedLength??1e5),maxEntityCount:Math.max(1,t.maxEntityCount??100),allowedTags:t.allowedTags??null,tagFilter:t.tagFilter??null}:A(!0)}const O=function(t){const e=Object.assign({},P,t),i=[{value:e.attributeNamePrefix,name:"attributeNamePrefix"},{value:e.attributesGroupName,name:"attributesGroupName"},{value:e.textNodeName,name:"textNodeName"},{value:e.cdataPropName,name:"cdataPropName"},{value:e.commentPropName,name:"commentPropName"}];for(const{value:t,name:e}of i)t&&S(t,e);return null===e.onDangerousProperty&&(e.onDangerousProperty=T),e.processEntities=A(e.processEntities),e.stopNodes&&Array.isArray(e.stopNodes)&&(e.stopNodes=e.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),e};let C;C="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class ${constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][C]={startIndex:e})}static getMetaDataSymbol(){return C}}class I{constructor(t){this.suppressValidationErr=!t,this.options=t}readDocType(t,e){const i=Object.create(null);let n=0;if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let s=1,r=!1,o=!1,a="";for(;e"===t[e]){if(o?"-"===t[e-1]&&"-"===t[e-2]&&(o=!1,s--):s--,0===s)break}else"["===t[e]?r=!0:a+=t[e];else{if(r&&M(t,"!ENTITY",e)){let s,r;if(e+=7,[s,r,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===r.indexOf("&")){if(!1!==this.options.enabled&&null!=this.options.maxEntityCount&&n>=this.options.maxEntityCount)throw new Error(`Entity count (${n+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);const t=s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");i[s]={regx:RegExp(`&${t};`,"g"),val:r},n++}}else if(r&&M(t,"!ELEMENT",e)){e+=8;const{index:i}=this.readElementExp(t,e+1);e=i}else if(r&&M(t,"!ATTLIST",e))e+=8;else if(r&&M(t,"!NOTATION",e)){e+=9;const{index:i}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=i}else{if(!M(t,"!--",e))throw new Error("Invalid DOCTYPE");o=!0}s++,a=""}if(0!==s)throw new Error("Unclosed DOCTYPE")}return{entities:i,i:e}}readEntityExp(t,e){const i=e=j(t,e);for(;ethis.options.maxEntitySize)throw new Error(`Entity "${n}" size (${s.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return[n,s,--e]}readNotationExp(t,e){const i=e=j(t,e);for(;e{for(;e0&&(this.path[this.path.length-1].values=void 0);const n=this.path.length;this.siblingStacks[n]||(this.siblingStacks[n]=new Map);const s=this.siblingStacks[n],r=i?`${i}:${t}`:t,o=s.get(r)||0;let a=0;for(const t of s.values())a+=t;s.set(r,o+1);const h={tag:t,position:a,counter:o};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const n=t[i];if("deep-wildcard"===n.type){if(i--,i<0)return!0;const n=t[i];let s=!1;for(let t=e;t>=0;t--){const r=t===this.path.length-1;if(this._matchSegment(n,this.path[t],r)){e=t-1,i--,s=!0;break}}if(!s)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(n,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const n=e.counter??0;if("first"===t.position&&0!==n)return!1;if("odd"===t.position&&n%2!=1)return!1;if("even"===t.position&&n%2!=0)return!1;if("nth"===t.position&&n!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}readOnly(){return new Proxy(this,{get(t,e,i){if(L.has(e))return()=>{throw new TypeError(`Cannot call '${e}' on a read-only Matcher. Obtain a writable instance to mutate state.`)};const n=Reflect.get(t,e,i);return"path"===e||"siblingStacks"===e?Object.freeze(Array.isArray(n)?n.map(t=>t instanceof Map?Object.freeze(new Map(t)):Object.freeze({...t})):n):"function"==typeof n?n.bind(t):n},set(t,e){throw new TypeError(`Cannot set property '${String(e)}' on a read-only Matcher.`)},deleteProperty(t,e){throw new TypeError(`Cannot delete property '${String(e)}' from a read-only Matcher.`)}})}}class R{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,n="";for(;i0){const i=t.substring(0,e);if("xmlns"!==i)return i}}class W{constructor(t){var e;if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>rt(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>rt(e,16,"&#x")}},this.addExternalEntities=Y,this.parseXml=J,this.parseTextData=z,this.resolveNameSpace=X,this.buildAttributesMap=Z,this.isItStopNode=tt,this.replaceEntitiesValue=Q,this.readStopNodeData=nt,this.saveTextToParentTag=H,this.addChild=K,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.entityExpansionCount=0,this.currentExpandedLength=0,this.matcher=new G,this.readonlyMatcher=this.matcher.readOnly(),this.isCurrentNodeStopNode=!1,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodeExpressions=[];for(let t=0;t0)){o||(t=this.replaceEntitiesValue(t,e,i));const n=this.options.jPath?i.toString():i,a=this.options.tagValueProcessor(e,t,n,s,r);return null==a?t:typeof a!=typeof t||a!==t?a:this.options.trimValues||t.trim()===t?st(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function X(t){if(this.options.removeNSPrefix){const e=t.split(":"),i="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=i+e[1])}return t}const q=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function Z(t,e,i){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const n=s(t,q),r=n.length,o={},a={};for(let t=0;t0&&"object"==typeof e&&e.updateCurrent&&e.updateCurrent(a);for(let t=0;t",r,"Closing Tag is not closed.");let s=t.substring(r+2,e).trim();if(this.options.removeNSPrefix){const t=s.indexOf(":");-1!==t&&(s=s.substr(t+1))}s=ot(this.options.transformTagName,s,"",this.options).tagName,i&&(n=this.saveTextToParentTag(n,i,this.readonlyMatcher));const o=this.matcher.getCurrentTag();if(s&&-1!==this.options.unpairedTags.indexOf(s))throw new Error(`Unpaired tag can not be used as closing tag: `);o&&-1!==this.options.unpairedTags.indexOf(o)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,i=this.tagsNodeStack.pop(),n="",r=e}else if("?"===t[r+1]){let e=it(t,r,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,i,this.readonlyMatcher),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new $(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,this.matcher,e.tagName)),this.addChild(i,t,this.readonlyMatcher,r)}r=e.closeIndex+1}else if("!--"===t.substr(r+1,3)){const e=et(t,"--\x3e",r+4,"Comment is not closed.");if(this.options.commentPropName){const s=t.substring(r+4,e-2);n=this.saveTextToParentTag(n,i,this.readonlyMatcher),i.add(this.options.commentPropName,[{[this.options.textNodeName]:s}])}r=e}else if("!D"===t.substr(r+1,2)){const e=s.readDocType(t,r);this.docTypeEntities=e.entities,r=e.i}else if("!["===t.substr(r+1,2)){const e=et(t,"]]>",r,"CDATA is not closed.")-2,s=t.substring(r+9,e);n=this.saveTextToParentTag(n,i,this.readonlyMatcher);let o=this.parseTextData(s,i.tagname,this.readonlyMatcher,!0,!1,!0,!0);null==o&&(o=""),this.options.cdataPropName?i.add(this.options.cdataPropName,[{[this.options.textNodeName]:s}]):i.add(this.options.textNodeName,o),r=e+2}else{let s=it(t,r,this.options.removeNSPrefix);if(!s){const e=t.substring(Math.max(0,r-50),Math.min(t.length,r+50));throw new Error(`readTagExp returned undefined at position ${r}. Context: "${e}"`)}let o=s.tagName;const a=s.rawTagName;let h=s.tagExp,l=s.attrExpPresent,p=s.closeIndex;if(({tagName:o,tagExp:h}=ot(this.options.transformTagName,o,h,this.options)),this.options.strictReservedNames&&(o===this.options.commentPropName||o===this.options.cdataPropName||o===this.options.textNodeName||o===this.options.attributesGroupName))throw new Error(`Invalid tag name: ${o}`);i&&n&&"!xml"!==i.tagname&&(n=this.saveTextToParentTag(n,i,this.readonlyMatcher,!1));const u=i;u&&-1!==this.options.unpairedTags.indexOf(u.tagname)&&(i=this.tagsNodeStack.pop(),this.matcher.pop());let c=!1;h.length>0&&h.lastIndexOf("/")===h.length-1&&(c=!0,"/"===o[o.length-1]?(o=o.substr(0,o.length-1),h=o):h=h.substr(0,h.length-1),l=o!==h);let d,f=null,g={};d=B(a),o!==e.tagname&&this.matcher.push(o,{},d),o!==h&&l&&(f=this.buildAttributesMap(h,this.matcher,o),f&&(g=U(f,this.options))),o!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode(this.stopNodeExpressions,this.matcher));const m=r;if(this.isCurrentNodeStopNode){let e="";if(c)r=s.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(o))r=s.closeIndex;else{const i=this.readStopNodeData(t,a,p+1);if(!i)throw new Error(`Unexpected end of ${a}`);r=i.i,e=i.tagContent}const n=new $(o);f&&(n[":@"]=f),n.add(this.options.textNodeName,e),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(i,n,this.readonlyMatcher,m)}else{if(c){({tagName:o,tagExp:h}=ot(this.options.transformTagName,o,h,this.options));const t=new $(o);f&&(t[":@"]=f),this.addChild(i,t,this.readonlyMatcher,m),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else{if(-1!==this.options.unpairedTags.indexOf(o)){const t=new $(o);f&&(t[":@"]=f),this.addChild(i,t,this.readonlyMatcher,m),this.matcher.pop(),this.isCurrentNodeStopNode=!1,r=s.closeIndex;continue}{const t=new $(o);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(i),f&&(t[":@"]=f),this.addChild(i,t,this.readonlyMatcher,m),i=t}}n="",r=p}}else n+=t[r];return e.child};function K(t,e,i,n){this.options.captureMetaData||(n=void 0);const s=this.options.jPath?i.toString():i,r=this.options.updateTag(e.tagname,s,e[":@"]);!1===r||("string"==typeof r?(e.tagname=r,t.addChild(e,n)):t.addChild(e,n))}function Q(t,e,i){const n=this.options.processEntities;if(!n||!n.enabled)return t;if(n.allowedTags){const s=this.options.jPath?i.toString():i;if(!(Array.isArray(n.allowedTags)?n.allowedTags.includes(e):n.allowedTags(e,s)))return t}if(n.tagFilter){const s=this.options.jPath?i.toString():i;if(!n.tagFilter(e,s))return t}for(const e of Object.keys(this.docTypeEntities)){const i=this.docTypeEntities[e],s=t.match(i.regx);if(s){if(this.entityExpansionCount+=s.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions)throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);const e=t.length;if(t=t.replace(i.regx,i.val),n.maxExpandedLength&&(this.currentExpandedLength+=t.length-e,this.currentExpandedLength>n.maxExpandedLength))throw new Error(`Total expanded content size exceeded: ${this.currentExpandedLength} > ${n.maxExpandedLength}`)}}for(const e of Object.keys(this.lastEntities)){const i=this.lastEntities[e],s=t.match(i.regex);if(s&&(this.entityExpansionCount+=s.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(i.regex,i.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(const e of Object.keys(this.htmlEntities)){const i=this.htmlEntities[e],s=t.match(i.regex);if(s&&(this.entityExpansionCount+=s.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(i.regex,i.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)}function H(t,e,i,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,i,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function tt(t,e){if(!t||0===t.length)return!1;for(let i=0;i"){let n,s="";for(let r=e;r",i,`${e} is not closed`);if(t.substring(i+2,r).trim()===e&&(s--,0===s))return{tagContent:t.substring(n,i),i:r};i=r}else if("?"===t[i+1])i=et(t,"?>",i+1,"StopNode is not closed.");else if("!--"===t.substr(i+1,3))i=et(t,"--\x3e",i+3,"StopNode is not closed.");else if("!["===t.substr(i+1,2))i=et(t,"]]>",i,"StopNode is not closed.")-2;else{const n=it(t,i,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&s++,i=n.closeIndex)}}function st(t,e,i){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&function(t,e={}){if(e=Object.assign({},k,e),!t||"string"!=typeof t)return t;let i=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(i))return t;if("0"===t)return 0;if(e.hex&&D.test(i))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(i);if(isFinite(i)){if(i.includes("e")||i.includes("E"))return function(t,e,i){if(!i.eNotation)return t;const n=e.match(F);if(n){let s=n[1]||"";const r=-1===n[3].indexOf("e")?"E":"e",o=n[2],a=s?t[o.length+1]===r:t[o.length]===r;return o.length>1&&a?t:(1!==o.length||!n[3].startsWith(`.${r}`)&&n[3][0]!==r)&&o.length>0?i.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,i,e);{const s=V.exec(i);if(s){const r=s[1]||"",o=s[2];let a=(n=s[3])&&-1!==n.indexOf(".")?("."===(n=n.replace(/0+$/,""))?n="0":"."===n[0]?n="0"+n:"."===n[n.length-1]&&(n=n.substring(0,n.length-1)),n):n;const h=r?"."===t[o.length+1]:"."===t[o.length];if(!e.leadingZeros&&(o.length>1||1===o.length&&!h))return t;{const n=Number(i),s=String(n);if(0===n)return n;if(-1!==s.search(/[eE]/))return e.eNotation?n:t;if(-1!==i.indexOf("."))return"0"===s||s===a||s===`${r}${a}`?n:t;let h=o?a:i;return o?h===s||r+h===s?n:t:h===s||h===r+s?n:t}}return t}}var n;return function(t,e,i){const n=e===1/0;switch(i.infinity.toLowerCase()){case"null":return null;case"infinity":return e;case"string":return n?"Infinity":"-Infinity";default:return t}}(t,Number(i),e)}(t,i)}return void 0!==t?t:""}function rt(t,e,i){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):i+t+";"}function ot(t,e,i,n){if(t){const n=t(e);i===e&&(i=n),e=n}return{tagName:e=at(e,n),tagExp:i}}function at(t,e){if(a.includes(t))throw new Error(`[SECURITY] Invalid name: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);return o.includes(t)?e.onDangerousProperty(t):t}const ht=$.getMetaDataSymbol();function lt(t,e){if(!t||"object"!=typeof t)return{};if(!e)return t;const i={};for(const n in t)n.startsWith(e)?i[n.substring(e.length)]=t[n]:i[n]=t[n];return i}function pt(t,e,i,n){return ut(t,e,i,n)}function ut(t,e,i,n){let s;const r={};for(let o=0;o0&&(r[e.textNodeName]=s):void 0!==s&&(r[e.textNodeName]=s),r}function ct(t){const e=Object.keys(t);for(let t=0;t0&&(i="\n");const n=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;te.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let i=t.toString();return i=Tt(i,e),i}return""}for(let a=0;a`,o=!1,n.pop();continue}if(l===e.commentPropName){r+=i+`\x3c!--${h[l][0][e.textNodeName]}--\x3e`,o=!0,n.pop();continue}if("?"===l[0]){const t=wt(h[":@"],e,u),s="?xml"===l?"":i;let a=h[l][0][e.textNodeName];a=0!==a.length?" "+a:"",r+=s+`<${l}${a}${t}?>`,o=!0,n.pop();continue}let c=i;""!==c&&(c+=e.indentBy);const d=i+`<${l}${wt(h[":@"],e,u)}`;let f;f=u?bt(h[l],e):xt(h[l],e,c,n,s),-1!==e.unpairedTags.indexOf(l)?e.suppressUnpairedNode?r+=d+">":r+=d+"/>":f&&0!==f.length||!e.suppressEmptyNode?f&&f.endsWith(">")?r+=d+`>${f}${i}`:(r+=d+">",f&&""!==i&&(f.includes("/>")||f.includes("`):r+=d+"/>",o=!0,n.pop()}return r}function Nt(t,e){if(!t||e.ignoreAttributes)return null;const i={};let n=!1;for(let s in t)Object.prototype.hasOwnProperty.call(t,s)&&(i[s.startsWith(e.attributeNamePrefix)?s.substr(e.attributeNamePrefix.length):s]=t[s],n=!0);return n?i:null}function bt(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let i="";for(let n=0;n${n}`:i+=`<${r}${t}/>`}}}return i}function Et(t,e){let i="";if(t&&!e.ignoreAttributes)for(let n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;let s=t[n];!0===s&&e.suppressBooleanAttributes?i+=` ${n.substr(e.attributeNamePrefix.length)}`:i+=` ${n.substr(e.attributeNamePrefix.length)}="${s}"`}return i}function yt(t){const e=Object.keys(t);for(let i=0;i0&&e.processEntities)for(let i=0;i","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function St(t){if(this.options=Object.assign({},Pt,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=Ct),this.processTextOrObjNode=At,this.options.format?(this.indentate=Ot,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function At(t,e,i,n){const s=this.extractAttributes(t);if(n.push(e,s),this.checkStopNode(n)){const s=this.buildRawContent(t),r=this.buildAttributesForStopNode(t);return n.pop(),this.buildObjectNode(s,e,r,i)}const r=this.j2x(t,i+1,n);return n.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,r.attrStr,i,n):this.buildObjectNode(r.val,e,r.attrStr,i)}function Ot(t){return this.options.indentBy.repeat(t)}function Ct(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}St.prototype.build=function(t){if(this.options.preserveOrder)return mt(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new G;return this.j2x(t,0,e).val}},St.prototype.j2x=function(t,e,i){let n="",s="";if(this.options.maxNestedTags&&i.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const r=this.options.jPath?i.toString():i,o=this.checkStopNode(i);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(s+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?s+="":"?"===a[0]?s+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:s+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)s+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){const h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,r))n+=this.buildAttrPairStr(h,""+t[a],o);else if(!h)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);s+=this.replaceEntitiesValue(e)}else{i.push(a);const n=this.checkStopNode(i);if(i.pop(),n){const i=""+t[a];s+=""===i?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+i+""+t+"${t}`;else if("object"==typeof t&&null!==t){const n=this.buildRawContent(t),s=this.buildAttributesForStopNode(t);e+=""===n?`<${i}${s}/>`:`<${i}${s}>${n}`}}else if("object"==typeof n&&null!==n){const t=this.buildRawContent(n),s=this.buildAttributesForStopNode(n);e+=""===t?`<${i}${s}/>`:`<${i}${s}>${t}`}else e+=`<${i}>${n}`}return e},St.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const i=t[this.options.attributesGroupName];for(let t in i){if(!Object.prototype.hasOwnProperty.call(i,t))continue;const n=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,s=i[t];!0===s&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+s+'"'}}else for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const n=this.isAttribute(i);if(n){const s=t[i];!0===s&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+s+'"'}}return e},St.prototype.buildObjectNode=function(t,e,i,n){if(""===t)return"?"===e[0]?this.indentate(n)+"<"+e+i+"?"+this.tagEndChar:this.indentate(n)+"<"+e+i+this.closeTag(e)+this.tagEndChar;{let s=""+t+s}},St.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+i+"?"+this.tagEndChar;{let s=this.options.tagValueProcessor(e,t);return s=this.replaceEntitiesValue(s),""===s?this.indentate(n)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+i+">"+s+"0&&this.options.processEntities)for(let e=0;e boolean) | null; +}; + +type X2jOptions = { + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when parsing + * + * When `true` - ignores all the attributes + * + * When `false` - parses all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPathOrMatcher: JPathOrMatcher) => boolean); + + /** + * Whether to remove namespace string from tag and attribute names + * + * Defaults to `false` + */ + removeNSPrefix?: boolean; + + /** + * Whether to allow attributes without value + * + * Defaults to `false` + */ + allowBooleanAttributes?: boolean; + + /** + * Whether to parse tag value with `strnum` package + * + * Defaults to `true` + */ + parseTagValue?: boolean; + + /** + * Whether to parse attribute value with `strnum` package + * + * Defaults to `false` + */ + parseAttributeValue?: boolean; + + /** + * Whether to remove surrounding whitespace from tag or attribute value + * + * Defaults to `true` + */ + trimValues?: boolean; + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @param tagName - The name of the tag + * @param tagValue - The value of the tag + * @param jPathOrMatcher - The jPath string (if jPath: true) or Matcher instance (if jPath: false) + * @param hasAttributes - Whether the tag has attributes + * @param isLeafNode - Whether the tag is a leaf node + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (tagName: string, tagValue: string, jPathOrMatcher: JPathOrMatcher, hasAttributes: boolean, isLeafNode: boolean) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName - The name of the attribute + * @param attrValue - The value of the attribute + * @param jPathOrMatcher - The jPath string (if jPath: true) or Matcher instance (if jPath: false) + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPathOrMatcher) => val` + */ + attributeValueProcessor?: (attrName: string, attrValue: string, jPathOrMatcher: JPathOrMatcher) => unknown; + + /** + * Options to pass to `strnum` for parsing numbers + * + * Defaults to `{ hex: true, leadingZeros: true, eNotation: true }` + */ + numberParseOptions?: strnumOptions; + + /** + * Nodes to stop parsing at + * + * Accepts string patterns or Expression objects from path-expression-matcher + * + * String patterns starting with "*." are automatically converted to ".." for backward compatibility + * + * Defaults to `[]` + */ + stopNodes?: JPathOrExpression[]; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Whether to always create a text node + * + * Defaults to `false` + */ + alwaysCreateTextNode?: boolean; + + /** + * Determine whether a tag should be parsed as an array + * + * @param tagName - The name of the tag + * @param jPathOrMatcher - The jPath string (if jPath: true) or Matcher instance (if jPath: false) + * @param isLeafNode - Whether the tag is a leaf node + * @param isAttribute - Whether this is an attribute + * @returns {boolean} + * + * Defaults to `() => false` + */ + isArray?: (tagName: string, jPathOrMatcher: JPathOrMatcher, isLeafNode: boolean, isAttribute: boolean) => boolean; + + /** + * Whether to process default and DOCTYPE entities + * + * When `true` - enables entity processing with default limits + * + * When `false` - disables all entity processing + * + * When `ProcessEntitiesOptions` - enables entity processing with custom configuration + * + * Defaults to `true` + */ + processEntities?: boolean | ProcessEntitiesOptions; + + /** + * Whether to process HTML entities + * + * Defaults to `false` + */ + htmlEntities?: boolean; + + /** + * Whether to ignore the declaration tag from output + * + * Defaults to `false` + */ + ignoreDeclaration?: boolean; + + /** + * Whether to ignore Pi tags + * + * Defaults to `false` + */ + ignorePiTags?: boolean; + + /** + * Transform tag names + * + * Defaults to `false` + */ + transformTagName?: ((tagName: string) => string) | false; + + /** + * Transform attribute names + * + * Defaults to `false` + */ + transformAttributeName?: ((attributeName: string) => string) | false; + + /** + * Change the tag name when a different name is returned. Skip the tag from parsed result when false is returned. + * Modify `attrs` object to control attributes for the given tag. + * + * @param tagName - The name of the tag + * @param jPathOrMatcher - The jPath string (if jPath: true) or Matcher instance (if jPath: false) + * @param attrs - The attributes object + * @returns {string} new tag name. + * @returns false to skip the tag + * + * Defaults to `(tagName, jPathOrMatcher, attrs) => tagName` + */ + updateTag?: (tagName: string, jPathOrMatcher: JPathOrMatcher, attrs: { [k: string]: string }) => string | boolean; + + /** + * If true, adds a Symbol to all object nodes, accessible by {@link XMLParser.getMetaDataSymbol} with + * metadata about each the node in the XML file. + */ + captureMetaData?: boolean; + + /** + * Maximum number of nested tags + * + * Defaults to `100` + */ + maxNestedTags?: number; + + /** + * Whether to strictly validate tag names + * + * Defaults to `true` + */ + strictReservedNames?: boolean; + + /** + * Controls whether callbacks receive jPath as string or Matcher instance + * + * When `true` - callbacks receive jPath as string (backward compatible) + * + * When `false` - callbacks receive Matcher instance for advanced pattern matching + * + * Defaults to `true` + */ + jPath?: boolean; + + /** + * Function to sanitize dangerous property names + * + * @param name - The name of the property + * @returns {string} The sanitized name + * + * Defaults to `(name) => __name` + */ + onDangerousProperty?: (name: string) => string; +}; + +type strnumOptions = { + hex: boolean; + leadingZeros: boolean, + skipLike?: RegExp, + eNotation?: boolean +} + +type validationOptions = { + /** + * Whether to allow attributes without value + * + * Defaults to `false` + */ + allowBooleanAttributes?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; +}; + +type XmlBuilderOptions = { + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when building + * + * When `true` - ignores all the attributes + * + * When `false` - builds all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Whether to make output pretty instead of single line + * + * Defaults to `false` + */ + format?: boolean; + + + /** + * If `format` is set to `true`, sets the indent string + * + * Defaults to ` ` + */ + indentBy?: string; + + /** + * Give a name to a top-level array + * + * Defaults to `undefined` + */ + arrayNodeName?: string; + + /** + * Create empty tags for tags with no text value + * + * Defaults to `false` + */ + suppressEmptyNode?: boolean; + + /** + * Suppress an unpaired tag + * + * Defaults to `true` + */ + suppressUnpairedNode?: boolean; + + /** + * Don't put a value for boolean attributes + * + * Defaults to `true` + */ + suppressBooleanAttributes?: boolean; + + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Nodes to stop parsing at + * + * Accepts string patterns or Expression objects from path-expression-matcher + * + * Defaults to `[]` + */ + stopNodes?: JPathOrExpression[]; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Whether to process default and DOCTYPE entities + * + * Defaults to `true` + */ + processEntities?: boolean; + + + oneListGroup?: boolean; + + /** + * Maximum number of nested tags + * + * Defaults to `100` + */ + maxNestedTags?: number; +}; + +type ESchema = string | object | Array; + +type ValidationError = { + err: { + code: string; + msg: string, + line: number, + col: number + }; +}; + +declare class XMLParser { + constructor(options?: X2jOptions); + parse(xmlData: string | Uint8Array, validationOptions?: validationOptions | boolean): any; + /** + * Add Entity which is not by default supported by this library + * @param entityIdentifier {string} Eg: 'ent' for &ent; + * @param entityValue {string} Eg: '\r' + */ + addEntity(entityIdentifier: string, entityValue: string): void; + + /** + * Returns a Symbol that can be used to access the {@link XMLMetaData} + * property on a node. + * + * If Symbol is not available in the environment, an ordinary property is used + * and the name of the property is here returned. + * + * The XMLMetaData property is only present when {@link X2jOptions.captureMetaData} + * is true in the options. + */ + static getMetaDataSymbol(): Symbol; +} + +declare class XMLValidator { + static validate(xmlData: string, options?: validationOptions): true | ValidationError; +} + +declare class XMLBuilder { + constructor(options?: XmlBuilderOptions); + build(jObj: any): string; +} + + +/** + * This object is available on nodes via the symbol {@link XMLParser.getMetaDataSymbol} + * when {@link X2jOptions.captureMetaData} is true. + */ +declare interface XMLMetaData { + /** The index, if available, of the character where the XML node began in the input stream. */ + startIndex?: number; +} + +declare namespace fxp { + export { + XMLParser, + XMLValidator, + XMLBuilder, + XMLMetaData, + XmlBuilderOptions, + X2jOptions, + ESchema, + ValidationError, + strnumOptions, + validationOptions, + ProcessEntitiesOptions, + Expression, + ReadonlyMatcher, + JPathOrMatcher, + JPathOrExpression, + } +} + +export = fxp; \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/lib/fxp.min.js b/bff/node_modules/fast-xml-parser/lib/fxp.min.js new file mode 100644 index 0000000..4558b9b --- /dev/null +++ b/bff/node_modules/fast-xml-parser/lib/fxp.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.fxp=e():t.fxp=e()}(this,()=>(()=>{"use strict";var t={d:(e,i)=>{for(var r in i)t.o(i,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:i[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{XMLBuilder:()=>jt,XMLParser:()=>mt,XMLValidator:()=>Mt});var i=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r=new RegExp("^["+i+"]["+i+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function n(t,e){for(var i=[],r=e.exec(t);r;){var n=[];n.startIndex=e.lastIndex-r[0].length;for(var s=r.length,o=0;o"!==t[s]&&" "!==t[s]&&"\t"!==t[s]&&"\n"!==t[s]&&"\r"!==t[s];s++)l+=t[s];if("/"===(l=l.trim())[l.length-1]&&(l=l.substring(0,l.length-1),s--),!y(l))return b("InvalidTag",0===l.trim().length?"Invalid space after '<'.":"Tag '"+l+"' is an invalid name.",E(t,s));var f=g(t,s);if(!1===f)return b("InvalidAttr","Attributes for '"+l+"' have open quote.",E(t,s));var c=f.value;if(s=f.index,"/"===c[c.length-1]){var m=s-c.length,N=x(c=c.substring(0,c.length-1),e);if(!0!==N)return b(N.err.code,N.err.msg,E(t,m+N.err.line));r=!0}else if(a){if(!f.tagClosed)return b("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",E(t,s));if(c.trim().length>0)return b("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",E(t,o));if(0===i.length)return b("InvalidTag","Closing tag '"+l+"' has not been opened.",E(t,o));var w=i.pop();if(l!==w.tagName){var T=E(t,w.tagStartPos);return b("InvalidTag","Expected closing tag '"+w.tagName+"' (opened in line "+T.line+", col "+T.col+") instead of closing tag '"+l+"'.",E(t,o))}0==i.length&&(n=!0)}else{var S=x(c,e);if(!0!==S)return b(S.err.code,S.err.msg,E(t,s-c.length+S.err.line));if(!0===n)return b("InvalidXml","Multiple possible root nodes found.",E(t,s));-1!==e.unpairedTags.indexOf(l)||i.push({tagName:l,tagStartPos:o}),r=!0}for(s++;s0)||b("InvalidXml","Invalid '"+JSON.stringify(i.map(function(t){return t.tagName}),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):b("InvalidXml","Start tag expected.",1)}function u(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function p(t,e){for(var i=e;e5&&"xml"===r)return b("InvalidXml","XML declaration allowed only at the start of the document.",E(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function d(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){var i=1;for(e+=8;e"===t[e]&&0===--i)break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}var f='"',c="'";function g(t,e){for(var i="",r="",n=!1;e"===t[e]&&""===r){n=!0;break}i+=t[e]}return""===r&&{value:i,index:e,tagClosed:n}}var m=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function x(t,e){for(var i=n(t,m),r={},s=0;s0?this.child.push(((i={})[t.tagname]=t.child,i[":@"]=t[":@"],i)):this.child.push(((r={})[t.tagname]=t.child,r)),void 0!==e&&(this.child[this.child.length-1][O]={startIndex:e})},t.getMetaDataSymbol=function(){return O},t}(),j=function(){function t(t){this.suppressValidationErr=!t,this.options=t}var e=t.prototype;return e.readDocType=function(t,e){var i=Object.create(null),r=0;if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");e+=9;for(var n=1,s=!1,o=!1;e"===t[e]){if(o?"-"===t[e-1]&&"-"===t[e-2]&&(o=!1,n--):n--,0===n)break}else"["===t[e]?s=!0:t[e];else{if(s&&$(t,"!ENTITY",e)){e+=7;var a=void 0,h=void 0,l=this.readEntityExp(t,e+1,this.suppressValidationErr);if(a=l[0],h=l[1],e=l[2],-1===h.indexOf("&")){if(!1!==this.options.enabled&&null!=this.options.maxEntityCount&&r>=this.options.maxEntityCount)throw new Error("Entity count ("+(r+1)+") exceeds maximum allowed ("+this.options.maxEntityCount+")");var u=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");i[a]={regx:RegExp("&"+u+";","g"),val:h},r++}}else if(s&&$(t,"!ELEMENT",e))e+=8,e=this.readElementExp(t,e+1).index;else if(s&&$(t,"!ATTLIST",e))e+=8;else if(s&&$(t,"!NOTATION",e))e+=9,e=this.readNotationExp(t,e+1,this.suppressValidationErr).index;else{if(!$(t,"!--",e))throw new Error("Invalid DOCTYPE");o=!0}n++}if(0!==n)throw new Error("Unclosed DOCTYPE");return{entities:i,i:e}},e.readEntityExp=function(t,e){for(var i=e=M(t,e);ethis.options.maxEntitySize)throw new Error('Entity "'+r+'" size ('+n.length+") exceeds maximum allowed size ("+this.options.maxEntitySize+")");return[r,n,--e]},e.readNotationExp=function(t,e){for(var i=e=M(t,e);et.length)&&(e=t.length);for(var i=0,r=Array(e);i0&&(this.path[this.path.length-1].values=void 0);const r=this.path.length;this.siblingStacks[r]||(this.siblingStacks[r]=new Map);const n=this.siblingStacks[r],s=i?`${i}:${t}`:t,o=n.get(s)||0;let a=0;for(const t of n.values())a+=t;n.set(s,o+1);const h={tag:t,position:a,counter:o};null!=i&&(h.namespace=i),null!=e&&(h.values=e),this.path.push(h)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const i=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(i)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const r=t[i];if("deep-wildcard"===r.type){if(i--,i<0)return!0;const r=t[i];let n=!1;for(let t=e;t>=0;t--){const s=t===this.path.length-1;if(this._matchSegment(r,this.path[t],s)){e=t-1,i--,n=!0;break}}if(!n)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(r,this.path[e],t))return!1;e--,i--}}return i<0}_matchSegment(t,e,i){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!i)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const i=e.values[t.attrName];if(String(i)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!i)return!1;const r=e.counter??0;if("first"===t.position&&0!==r)return!1;if("odd"===t.position&&r%2!=1)return!1;if("even"===t.position&&r%2!=0)return!1;if("nth"===t.position&&r!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}readOnly(){return new Proxy(this,{get(t,e,i){if(G.has(e))return()=>{throw new TypeError(`Cannot call '${e}' on a read-only Matcher. Obtain a writable instance to mutate state.`)};const r=Reflect.get(t,e,i);return"path"===e||"siblingStacks"===e?Object.freeze(Array.isArray(r)?r.map(t=>t instanceof Map?Object.freeze(new Map(t)):Object.freeze({...t})):r):"function"==typeof r?r.bind(t):r},set(t,e){throw new TypeError(`Cannot set property '${String(e)}' on a read-only Matcher.`)},deleteProperty(t,e){throw new TypeError(`Cannot delete property '${String(e)}' from a read-only Matcher.`)}})}}class U{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let i=0,r="";for(;i0){var i=t.substring(0,e);if("xmlns"!==i)return i}}}var Y=function(t){var e;if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:function(t,e){return ot(e,10,"&#")}},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:function(t,e){return ot(e,16,"&#x")}}},this.addExternalEntities=z,this.parseXml=K,this.parseTextData=X,this.resolveNameSpace=q,this.buildAttributesMap=J,this.isItStopNode=et,this.replaceEntitiesValue=H,this.readStopNodeData=nt,this.saveTextToParentTag=tt,this.addChild=Q,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?function(t){for(var i,r=function(t,e){var i="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(i)return(i=i.call(t)).next.bind(i);if(Array.isArray(t)||(i=function(t,e){if(t){if("string"==typeof t)return L(t,e);var i={}.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?L(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){i&&(t=i);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(i=r()).done;){var n=i.value;if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:function(){return!1},this.entityExpansionCount=0,this.currentExpandedLength=0,this.matcher=new R,this.readonlyMatcher=this.matcher.readOnly(),this.isCurrentNodeStopNode=!1,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodeExpressions=[];for(var i=0;i0)){o||(t=this.replaceEntitiesValue(t,e,i));var a=this.options.jPath?i.toString():i,h=this.options.tagValueProcessor(e,t,a,n,s);return null==h?t:typeof h!=typeof t||h!==t?h:this.options.trimValues||t.trim()===t?st(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function q(t){if(this.options.removeNSPrefix){var e=t.split(":"),i="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=i+e[1])}return t}var Z=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function J(t,e,i){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){for(var r=n(t,Z),s=r.length,o={},a={},h=0;h0&&"object"==typeof e&&e.updateCurrent&&e.updateCurrent(a);for(var d=0;d",s,"Closing Tag is not closed."),a=t.substring(s+2,o).trim();if(this.options.removeNSPrefix){var h=a.indexOf(":");-1!==h&&(a=a.substr(h+1))}a=at(this.options.transformTagName,a,"",this.options).tagName,i&&(r=this.saveTextToParentTag(r,i,this.readonlyMatcher));var l=this.matcher.getCurrentTag();if(a&&-1!==this.options.unpairedTags.indexOf(a))throw new Error("Unpaired tag can not be used as closing tag: ");l&&-1!==this.options.unpairedTags.indexOf(l)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,i=this.tagsNodeStack.pop(),r="",s=o}else if("?"===t[s+1]){var u=rt(t,s,!1,"?>");if(!u)throw new Error("Pi Tag is not closed.");if(r=this.saveTextToParentTag(r,i,this.readonlyMatcher),this.options.ignoreDeclaration&&"?xml"===u.tagName||this.options.ignorePiTags);else{var p=new I(u.tagName);p.add(this.options.textNodeName,""),u.tagName!==u.tagExp&&u.attrExpPresent&&(p[":@"]=this.buildAttributesMap(u.tagExp,this.matcher,u.tagName)),this.addChild(i,p,this.readonlyMatcher,s)}s=u.closeIndex+1}else if("!--"===t.substr(s+1,3)){var d=it(t,"--\x3e",s+4,"Comment is not closed.");if(this.options.commentPropName){var f,c=t.substring(s+4,d-2);r=this.saveTextToParentTag(r,i,this.readonlyMatcher),i.add(this.options.commentPropName,[(f={},f[this.options.textNodeName]=c,f)])}s=d}else if("!D"===t.substr(s+1,2)){var g=n.readDocType(t,s);this.docTypeEntities=g.entities,s=g.i}else if("!["===t.substr(s+1,2)){var m=it(t,"]]>",s,"CDATA is not closed.")-2,x=t.substring(s+9,m);r=this.saveTextToParentTag(r,i,this.readonlyMatcher);var v,b=this.parseTextData(x,i.tagname,this.readonlyMatcher,!0,!1,!0,!0);null==b&&(b=""),this.options.cdataPropName?i.add(this.options.cdataPropName,[(v={},v[this.options.textNodeName]=x,v)]):i.add(this.options.textNodeName,b),s=m+2}else{var N=rt(t,s,this.options.removeNSPrefix);if(!N){var y=t.substring(Math.max(0,s-50),Math.min(t.length,s+50));throw new Error("readTagExp returned undefined at position "+s+'. Context: "'+y+'"')}var E=N.tagName,w=N.rawTagName,T=N.tagExp,S=N.attrExpPresent,P=N.closeIndex,A=at(this.options.transformTagName,E,T,this.options);if(E=A.tagName,T=A.tagExp,this.options.strictReservedNames&&(E===this.options.commentPropName||E===this.options.cdataPropName||E===this.options.textNodeName||E===this.options.attributesGroupName))throw new Error("Invalid tag name: "+E);i&&r&&"!xml"!==i.tagname&&(r=this.saveTextToParentTag(r,i,this.readonlyMatcher,!1));var O=i;O&&-1!==this.options.unpairedTags.indexOf(O.tagname)&&(i=this.tagsNodeStack.pop(),this.matcher.pop());var C=!1;T.length>0&&T.lastIndexOf("/")===T.length-1&&(C=!0,T="/"===E[E.length-1]?E=E.substr(0,E.length-1):T.substr(0,T.length-1),S=E!==T);var M,$=null;M=W(w),E!==e.tagname&&this.matcher.push(E,{},M),E!==T&&S&&($=this.buildAttributesMap(T,this.matcher,E))&&B($,this.options),E!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode(this.stopNodeExpressions,this.matcher));var _=s;if(this.isCurrentNodeStopNode){var D="";if(C)s=N.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(E))s=N.closeIndex;else{var V=this.readStopNodeData(t,w,P+1);if(!V)throw new Error("Unexpected end of "+w);s=V.i,D=V.tagContent}var k=new I(E);$&&(k[":@"]=$),k.add(this.options.textNodeName,D),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(i,k,this.readonlyMatcher,_)}else{if(C){var F=at(this.options.transformTagName,E,T,this.options);E=F.tagName,T=F.tagExp;var L=new I(E);$&&(L[":@"]=$),this.addChild(i,L,this.readonlyMatcher,_),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else{if(-1!==this.options.unpairedTags.indexOf(E)){var G=new I(E);$&&(G[":@"]=$),this.addChild(i,G,this.readonlyMatcher,_),this.matcher.pop(),this.isCurrentNodeStopNode=!1,s=N.closeIndex;continue}var R=new I(E);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(i),$&&(R[":@"]=$),this.addChild(i,R,this.readonlyMatcher,_),i=R}r="",s=P}}else r+=t[s];return e.child};function Q(t,e,i,r){this.options.captureMetaData||(r=void 0);var n=this.options.jPath?i.toString():i,s=this.options.updateTag(e.tagname,n,e[":@"]);!1===s||("string"==typeof s?(e.tagname=s,t.addChild(e,r)):t.addChild(e,r))}function H(t,e,i){var r=this.options.processEntities;if(!r||!r.enabled)return t;if(r.allowedTags){var n=this.options.jPath?i.toString():i;if(!(Array.isArray(r.allowedTags)?r.allowedTags.includes(e):r.allowedTags(e,n)))return t}if(r.tagFilter){var s=this.options.jPath?i.toString():i;if(!r.tagFilter(e,s))return t}for(var o=0,a=Object.keys(this.docTypeEntities);or.maxTotalExpansions)throw new Error("Entity expansion limit exceeded: "+this.entityExpansionCount+" > "+r.maxTotalExpansions);var p=t.length;if(t=t.replace(l.regx,l.val),r.maxExpandedLength&&(this.currentExpandedLength+=t.length-p,this.currentExpandedLength>r.maxExpandedLength))throw new Error("Total expanded content size exceeded: "+this.currentExpandedLength+" > "+r.maxExpandedLength)}}for(var d=0,f=Object.keys(this.lastEntities);dr.maxTotalExpansions))throw new Error("Entity expansion limit exceeded: "+this.entityExpansionCount+" > "+r.maxTotalExpansions);t=t.replace(g.regex,g.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(var x=0,v=Object.keys(this.htmlEntities);xr.maxTotalExpansions))throw new Error("Entity expansion limit exceeded: "+this.entityExpansionCount+" > "+r.maxTotalExpansions);t=t.replace(N.regex,N.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)}function tt(t,e,i,r){return t&&(void 0===r&&(r=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,i,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,r))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function et(t,e){if(!t||0===t.length)return!1;for(var i=0;i");var n=function(t,e,i){var r;void 0===i&&(i=">");for(var n="",s=e;s",i,e+" is not closed");if(t.substring(i+2,s).trim()===e&&0===--n)return{tagContent:t.substring(r,i),i:s};i=s}else if("?"===t[i+1])i=it(t,"?>",i+1,"StopNode is not closed.");else if("!--"===t.substr(i+1,3))i=it(t,"--\x3e",i+3,"StopNode is not closed.");else if("!["===t.substr(i+1,2))i=it(t,"]]>",i,"StopNode is not closed.")-2;else{var o=rt(t,i,">");o&&((o&&o.tagName)===e&&"/"!==o.tagExp[o.tagExp.length-1]&&n++,i=o.closeIndex)}}function st(t,e,i){if(e&&"string"==typeof t){var r=t.trim();return"true"===r||"false"!==r&&function(t,e={}){if(e=Object.assign({},k,e),!t||"string"!=typeof t)return t;let i=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(i))return t;if("0"===t)return 0;if(e.hex&&D.test(i))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(i);if(isFinite(i)){if(i.includes("e")||i.includes("E"))return function(t,e,i){if(!i.eNotation)return t;const r=e.match(F);if(r){let n=r[1]||"";const s=-1===r[3].indexOf("e")?"E":"e",o=r[2],a=n?t[o.length+1]===s:t[o.length]===s;return o.length>1&&a?t:(1!==o.length||!r[3].startsWith(`.${s}`)&&r[3][0]!==s)&&o.length>0?i.leadingZeros&&!a?(e=(r[1]||"")+r[3],Number(e)):t:Number(e)}return t}(t,i,e);{const n=V.exec(i);if(n){const s=n[1]||"",o=n[2];let a=(r=n[3])&&-1!==r.indexOf(".")?("."===(r=r.replace(/0+$/,""))?r="0":"."===r[0]?r="0"+r:"."===r[r.length-1]&&(r=r.substring(0,r.length-1)),r):r;const h=s?"."===t[o.length+1]:"."===t[o.length];if(!e.leadingZeros&&(o.length>1||1===o.length&&!h))return t;{const r=Number(i),n=String(r);if(0===r)return r;if(-1!==n.search(/[eE]/))return e.eNotation?r:t;if(-1!==i.indexOf("."))return"0"===n||n===a||n===`${s}${a}`?r:t;let h=o?a:i;return o?h===n||s+h===n?r:t:h===n||h===s+n?r:t}}return t}}var r;return function(t,e,i){const r=e===1/0;switch(i.infinity.toLowerCase()){case"null":return null;case"infinity":return e;case"string":return r?"Infinity":"-Infinity";default:return t}}(t,Number(i),e)}(t,i)}return void 0!==t?t:""}function ot(t,e,i){var r=Number.parseInt(t,e);return r>=0&&r<=1114111?String.fromCodePoint(r):i+t+";"}function at(t,e,i,r){if(t){var n=t(e);i===e&&(i=n),e=n}return{tagName:e=ht(e,r),tagExp:i}}function ht(t,e){if(a.includes(t))throw new Error('[SECURITY] Invalid name: "'+t+'" is a reserved JavaScript keyword that could cause prototype pollution');return o.includes(t)?e.onDangerousProperty(t):t}var lt=I.getMetaDataSymbol();function ut(t,e){if(!t||"object"!=typeof t)return{};if(!e)return t;var i={};for(var r in t)r.startsWith(e)?i[r.substring(e.length)]=t[r]:i[r]=t[r];return i}function pt(t,e,i,r){return dt(t,e,i,r)}function dt(t,e,i,r){for(var n,s={},o=0;o0&&(s[e.textNodeName]=n):void 0!==n&&(s[e.textNodeName]=n),s}function ft(t){for(var e=Object.keys(t),i=0;i0&&(i="\n");const r=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;te.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let i=t.toString();return i=St(i,e),i}return""}for(let a=0;a`,o=!1,r.pop();continue}if(l===e.commentPropName){s+=i+`\x3c!--${h[l][0][e.textNodeName]}--\x3e`,o=!0,r.pop();continue}if("?"===l[0]){const t=wt(h[":@"],e,p),n="?xml"===l?"":i;let a=h[l][0][e.textNodeName];a=0!==a.length?" "+a:"",s+=n+`<${l}${a}${t}?>`,o=!0,r.pop();continue}let d=i;""!==d&&(d+=e.indentBy);const f=i+`<${l}${wt(h[":@"],e,p)}`;let c;c=p?Nt(h[l],e):vt(h[l],e,d,r,n),-1!==e.unpairedTags.indexOf(l)?e.suppressUnpairedNode?s+=f+">":s+=f+"/>":c&&0!==c.length||!e.suppressEmptyNode?c&&c.endsWith(">")?s+=f+`>${c}${i}`:(s+=f+">",c&&""!==i&&(c.includes("/>")||c.includes("`):s+=f+"/>",o=!0,r.pop()}return s}function bt(t,e){if(!t||e.ignoreAttributes)return null;const i={};let r=!1;for(let n in t)Object.prototype.hasOwnProperty.call(t,n)&&(i[n.startsWith(e.attributeNamePrefix)?n.substr(e.attributeNamePrefix.length):n]=t[n],r=!0);return r?i:null}function Nt(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let i="";for(let r=0;r${r}`:i+=`<${s}${t}/>`}}}return i}function yt(t,e){let i="";if(t&&!e.ignoreAttributes)for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;let n=t[r];!0===n&&e.suppressBooleanAttributes?i+=` ${r.substr(e.attributeNamePrefix.length)}`:i+=` ${r.substr(e.attributeNamePrefix.length)}="${n}"`}return i}function Et(t){const e=Object.keys(t);for(let i=0;i0&&e.processEntities)for(let i=0;i","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function At(t){if(this.options=Object.assign({},Pt,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t{for(const i of e){if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=It),this.processTextOrObjNode=Ot,this.options.format?(this.indentate=Ct,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function Ot(t,e,i,r){const n=this.extractAttributes(t);if(r.push(e,n),this.checkStopNode(r)){const n=this.buildRawContent(t),s=this.buildAttributesForStopNode(t);return r.pop(),this.buildObjectNode(n,e,s,i)}const s=this.j2x(t,i+1,r);return r.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,s.attrStr,i,r):this.buildObjectNode(s.val,e,s.attrStr,i)}function Ct(t){return this.options.indentBy.repeat(t)}function It(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}At.prototype.build=function(t){if(this.options.preserveOrder)return xt(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new R;return this.j2x(t,0,e).val}},At.prototype.j2x=function(t,e,i){let r="",n="";if(this.options.maxNestedTags&&i.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const s=this.options.jPath?i.toString():i,o=this.checkStopNode(i);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(n+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?n+="":"?"===a[0]?n+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:n+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)n+=this.buildTextValNode(t[a],a,"",e,i);else if("object"!=typeof t[a]){const h=this.isAttribute(a);if(h&&!this.ignoreAttributesFn(h,s))r+=this.buildAttrPairStr(h,""+t[a],o);else if(!h)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);n+=this.replaceEntitiesValue(e)}else{i.push(a);const r=this.checkStopNode(i);if(i.pop(),r){const i=""+t[a];n+=""===i?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+i+""+t+"${t}`;else if("object"==typeof t&&null!==t){const r=this.buildRawContent(t),n=this.buildAttributesForStopNode(t);e+=""===r?`<${i}${n}/>`:`<${i}${n}>${r}`}}else if("object"==typeof r&&null!==r){const t=this.buildRawContent(r),n=this.buildAttributesForStopNode(r);e+=""===t?`<${i}${n}/>`:`<${i}${n}>${t}`}else e+=`<${i}>${r}`}return e},At.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const i=t[this.options.attributesGroupName];for(let t in i){if(!Object.prototype.hasOwnProperty.call(i,t))continue;const r=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,n=i[t];!0===n&&this.options.suppressBooleanAttributes?e+=" "+r:e+=" "+r+'="'+n+'"'}}else for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i))continue;const r=this.isAttribute(i);if(r){const n=t[i];!0===n&&this.options.suppressBooleanAttributes?e+=" "+r:e+=" "+r+'="'+n+'"'}}return e},At.prototype.buildObjectNode=function(t,e,i,r){if(""===t)return"?"===e[0]?this.indentate(r)+"<"+e+i+"?"+this.tagEndChar:this.indentate(r)+"<"+e+i+this.closeTag(e)+this.tagEndChar;{let n=""+t+n}},At.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(r)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(r)+"<"+e+i+"?"+this.tagEndChar;{let n=this.options.tagValueProcessor(e,t);return n=this.replaceEntitiesValue(n),""===n?this.indentate(r)+"<"+e+i+this.closeTag(e)+this.tagEndChar:this.indentate(r)+"<"+e+i+">"+n+"0&&this.options.processEntities)for(let e=0;e {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n}\n\nexport const isName = function (string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n}\n\n/**\n * Dangerous property names that could lead to prototype pollution or security issues\n */\nexport const DANGEROUS_PROPERTY_NAMES = [\n // '__proto__',\n // 'constructor',\n // 'prototype',\n 'hasOwnProperty',\n 'toString',\n 'valueOf',\n '__defineGetter__',\n '__defineSetter__',\n '__lookupGetter__',\n '__lookupSetter__'\n];\n\nexport const criticalProperties = [\"__proto__\", \"constructor\", \"prototype\"];","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n i += 2;\n i = readPI(xmlData, i);\n if (i.err) return i;\n } else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n\n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n //don't push into stack\n } else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i + 1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\" +\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n \"' found.\", { line: 1, col: 1 });\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char) {\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","import { DANGEROUS_PROPERTY_NAMES, criticalProperties } from \"../util.js\";\n\nconst defaultOnDangerousProperty = (name) => {\n if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n return \"__\" + name;\n }\n return name;\n};\n\n\nexport const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function (tagName, val) {\n return val;\n },\n attributeValueProcessor: function (attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function (tagName, jPath, attrs) {\n return tagName\n },\n // skipEmptyListItem: false\n captureMetaData: false,\n maxNestedTags: 100,\n strictReservedNames: true,\n jPath: true, // if true, pass jPath string to callbacks; if false, pass matcher instance\n onDangerousProperty: defaultOnDangerousProperty\n};\n\n\n/**\n * Validates that a property name is safe to use\n * @param {string} propertyName - The property name to validate\n * @param {string} optionName - The option field name (for error message)\n * @throws {Error} If property name is dangerous\n */\nfunction validatePropertyName(propertyName, optionName) {\n if (typeof propertyName !== 'string') {\n return; // Only validate string property names\n }\n\n const normalized = propertyName.toLowerCase();\n if (DANGEROUS_PROPERTY_NAMES.some(dangerous => normalized === dangerous.toLowerCase())) {\n throw new Error(\n `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n );\n }\n\n if (criticalProperties.some(dangerous => normalized === dangerous.toLowerCase())) {\n throw new Error(\n `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n );\n }\n}\n\n/**\n * Normalizes processEntities option for backward compatibility\n * @param {boolean|object} value \n * @returns {object} Always returns normalized object\n */\nfunction normalizeProcessEntities(value) {\n // Boolean backward compatibility\n if (typeof value === 'boolean') {\n return {\n enabled: value, // true or false\n maxEntitySize: 10000,\n maxExpansionDepth: 10,\n maxTotalExpansions: 1000,\n maxExpandedLength: 100000,\n maxEntityCount: 100,\n allowedTags: null,\n tagFilter: null\n };\n }\n\n // Object config - merge with defaults\n if (typeof value === 'object' && value !== null) {\n return {\n enabled: value.enabled !== false,\n maxEntitySize: Math.max(1, value.maxEntitySize ?? 10000),\n maxExpansionDepth: Math.max(1, value.maxExpansionDepth ?? 10),\n maxTotalExpansions: Math.max(1, value.maxTotalExpansions ?? 1000),\n maxExpandedLength: Math.max(1, value.maxExpandedLength ?? 100000),\n maxEntityCount: Math.max(1, value.maxEntityCount ?? 100),\n allowedTags: value.allowedTags ?? null,\n tagFilter: value.tagFilter ?? null\n };\n }\n\n // Default to enabled with limits\n return normalizeProcessEntities(true);\n}\n\nexport const buildOptions = function (options) {\n const built = Object.assign({}, defaultOptions, options);\n\n // Validate property names to prevent prototype pollution\n const propertyNameOptions = [\n { value: built.attributeNamePrefix, name: 'attributeNamePrefix' },\n { value: built.attributesGroupName, name: 'attributesGroupName' },\n { value: built.textNodeName, name: 'textNodeName' },\n { value: built.cdataPropName, name: 'cdataPropName' },\n { value: built.commentPropName, name: 'commentPropName' }\n ];\n\n for (const { value, name } of propertyNameOptions) {\n if (value) {\n validatePropertyName(value, name);\n }\n }\n\n if (built.onDangerousProperty === null) {\n built.onDangerousProperty = defaultOnDangerousProperty;\n }\n\n // Always normalize processEntities for backward compatibility and validation\n built.processEntities = normalizeProcessEntities(built.processEntities);\n\n // Convert old-style stopNodes for backward compatibility\n if (built.stopNodes && Array.isArray(built.stopNodes)) {\n built.stopNodes = built.stopNodes.map(node => {\n if (typeof node === 'string' && node.startsWith('*.')) {\n // Old syntax: *.tagname meant \"tagname anywhere\"\n // Convert to new syntax: ..tagname\n return '..' + node.substring(2);\n }\n return node;\n });\n }\n //console.debug(built.processEntities)\n return built;\n};","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = Object.create(null); //attributes map\n }\n add(key, val) {\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node, startIndex) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n // if requested, add the startIndex\n if (startIndex !== undefined) {\n // Note: for now we just overwrite the metadata. If we had more complex metadata,\n // we might need to do an object append here: metadata = { ...metadata, startIndex }\n this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n }\n }\n /** symbol used for metadata */\n static getMetaDataSymbol() {\n return METADATA_SYMBOL;\n }\n}\n","import { isName } from '../util.js';\n\nexport default class DocTypeReader {\n constructor(options) {\n this.suppressValidationErr = !options;\n this.options = options;\n }\n\n readDocType(xmlData, i) {\n const entities = Object.create(null);\n let entityCount = 0;\n\n if (xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E') {\n i = i + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === '<' && !comment) { //Determine the tag type\n if (hasBody && hasSeq(xmlData, \"!ENTITY\", i)) {\n i += 7;\n let entityName, val;\n [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr);\n if (val.indexOf(\"&\") === -1) { //Parameter entities are not supported\n if (this.options.enabled !== false &&\n this.options.maxEntityCount != null &&\n entityCount >= this.options.maxEntityCount) {\n throw new Error(\n `Entity count (${entityCount + 1}) exceeds maximum allowed (${this.options.maxEntityCount})`\n );\n }\n //const escaped = entityName.replace(/[.\\-+*:]/g, '\\\\.');\n const escaped = entityName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n entities[entityName] = {\n regx: RegExp(`&${escaped};`, \"g\"),\n val: val\n };\n entityCount++;\n }\n }\n else if (hasBody && hasSeq(xmlData, \"!ELEMENT\", i)) {\n i += 8;//Not supported\n const { index } = this.readElementExp(xmlData, i + 1);\n i = index;\n } else if (hasBody && hasSeq(xmlData, \"!ATTLIST\", i)) {\n i += 8;//Not supported\n // const {index} = this.readAttlistExp(xmlData,i+1);\n // i = index;\n } else if (hasBody && hasSeq(xmlData, \"!NOTATION\", i)) {\n i += 9;//Not supported\n const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr);\n i = index;\n } else if (hasSeq(xmlData, \"!--\", i)) comment = true;\n else throw new Error(`Invalid DOCTYPE`);\n\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === '>') { //Read tag content\n if (comment) {\n if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i] === '[') {\n hasBody = true;\n } else {\n exp += xmlData[i];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i };\n }\n readEntityExp(xmlData, i) {\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n\n // Skip leading whitespace after this.options.maxEntitySize) {\n throw new Error(\n `Entity \"${entityName}\" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`\n );\n }\n\n i--;\n return [entityName, entityValue, i];\n }\n\n readNotationExp(xmlData, i) {\n // Skip leading whitespace after \n // \n // \n // \n // \n\n // Skip leading whitespace after {\n while (index < data.length && /\\s/.test(data[index])) {\n index++;\n }\n return index;\n};\n\n\n\nfunction hasSeq(data, seq, i) {\n for (let j = 0; j < seq.length; j++) {\n if (seq[j] !== data[i + j + 1]) return false;\n }\n return true;\n}\n\nfunction validateEntityName(name) {\n if (isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\nconst consider = {\n hex: true,\n // oct: false,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true,\n //skipLike: /regex/,\n infinity: \"original\", // \"null\", \"infinity\" (Infinity type), \"string\" (\"Infinity\" (the string literal))\n};\n\nexport default function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n\n let trimmedStr = str.trim();\n\n if (options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (str === \"0\") return 0;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return parse_int(trimmedStr, 16);\n // }else if (options.oct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n } else if (!isFinite(trimmedStr)) { //Infinity\n return handleInfinity(str, Number(trimmedStr), options);\n } else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n return resolveEnotation(str, trimmedStr, options);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n } else {\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n // +00.123 => [ , '+', '00', '.123', ..\n if (match) {\n const sign = match[1] || \"\";\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n str[leadingZeros.length + 1] === \".\"\n : str[leadingZeros.length] === \".\";\n\n //trim ending zeros for floating number\n if (!options.leadingZeros //leading zeros are not allowed\n && (leadingZeros.length > 1\n || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))) {\n // 00, 00.3, +03.24, 03, 03.24\n return str;\n }\n else {//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const parsedStr = String(num);\n\n if (num === 0) return num;\n if (parsedStr.search(/[eE]/) !== -1) { //given number is long and parsed to eNotation\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) { //floating number\n if (parsedStr === \"0\") return num; //0.0\n else if (parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if (parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n else return str;\n }\n\n let n = leadingZeros ? numTrimmedByZeros : trimmedStr;\n if (leadingZeros) {\n // -009 => -9\n return (n === parsedStr) || (sign + n === parsedStr) ? num : str\n } else {\n // +9\n return (n === parsedStr) || (n === sign + parsedStr) ? num : str\n }\n }\n } else { //non-numeric string\n return str;\n }\n }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str, trimmedStr, options) {\n if (!options.eNotation) return str;\n const notation = trimmedStr.match(eNotationRegx);\n if (notation) {\n let sign = notation[1] || \"\";\n const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n const leadingZeros = notation[2];\n const eAdjacentToLeadingZeros = sign ? // 0E.\n str[leadingZeros.length + 1] === eChar\n : str[leadingZeros.length] === eChar;\n\n if (leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n else if (leadingZeros.length === 1\n && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)) {\n return Number(trimmedStr);\n } else if (leadingZeros.length > 0) {\n // Has leading zeros — only accept if leadingZeros option allows it\n if (options.leadingZeros && !eAdjacentToLeadingZeros) {\n trimmedStr = (notation[1] || \"\") + notation[3];\n return Number(trimmedStr);\n } else return str;\n } else {\n // No leading zeros — always valid e-notation, parse it\n return Number(trimmedStr);\n }\n } else {\n return str;\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substring(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\n\nfunction parse_int(numStr, base) {\n //polyfill\n if (parseInt) return parseInt(numStr, base);\n else if (Number.parseInt) return Number.parseInt(numStr, base);\n else if (window && window.parseInt) return window.parseInt(numStr, base);\n else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}\n\n/**\n * Handle infinite values based on user option\n * @param {string} str - original input string\n * @param {number} num - parsed number (Infinity or -Infinity)\n * @param {object} options - user options\n * @returns {string|number|null} based on infinity option\n */\nfunction handleInfinity(str, num, options) {\n const isPositive = num === Infinity;\n\n switch (options.infinity.toLowerCase()) {\n case \"null\":\n return null;\n case \"infinity\":\n return num; // Return Infinity or -Infinity\n case \"string\":\n return isPositive ? \"Infinity\" : \"-Infinity\";\n case \"original\":\n default:\n return str; // Return original string like \"1e1000\"\n }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\n\n/**\n * Names of methods that mutate Matcher state.\n * Any attempt to call these on a read-only view throws a TypeError.\n * @type {Set}\n */\nconst MUTATING_METHODS = new Set(['push', 'pop', 'reset', 'updateCurrent', 'restore']);\n\nexport default class Matcher {\n /**\n * Create a new Matcher\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Default path separator (default: '.')\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag: string, values: object, position: number, counter: number }\n // values only present for current (last) node\n // Each siblingStacks entry: Map tracking occurrences at each level\n }\n\n /**\n * Push a new tag onto the path\n * @param {string} tagName - Name of the tag\n * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n * @param {string} namespace - Namespace for the tag (optional)\n */\n push(tagName, attrValues = null, namespace = null) {\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n const prev = this.path[this.path.length - 1];\n prev.values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n // Store namespace if provided\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n // Store values only for current node\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n }\n\n /**\n * Pop the last tag from the path\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) {\n return undefined;\n }\n\n const node = this.path.pop();\n\n // Clean up sibling tracking for levels deeper than current\n // After pop, path.length is the new depth\n // We need to clean up siblingStacks[path.length + 1] and beyond\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values\n * Useful when attributes are parsed after push\n * @param {Object} attrValues - Attribute values\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value\n * @param {string} attrName - Attribute name\n * @returns {*} Attribute value or undefined\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n const current = this.path[this.path.length - 1];\n return current.values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute\n * @param {string} attrName - Attribute name\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent)\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name)\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition for backward compatibility)\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string\n * @param {string} separator - Optional separator (uses default if not provided)\n * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n return this.path.map(n => {\n if (includeNamespace && n.namespace) {\n return `${n.namespace}:${n.tag}`;\n }\n return n.tag;\n }).join(sep);\n }\n\n /**\n * Get path as array of tag names\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty\n */\n reset() {\n this.path = [];\n this.siblingStacks = [];\n }\n\n /**\n * Match current path against an Expression\n * @param {Expression} expression - The expression to match against\n * @returns {boolean} True if current path matches the expression\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n // Handle deep wildcard patterns\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n // Simple path matching (no deep wildcards)\n return this._matchSimple(segments);\n }\n\n /**\n * Match simple path (no deep wildcards)\n * @private\n */\n _matchSimple(segments) {\n // Path must be same length as segments\n if (this.path.length !== segments.length) {\n return false;\n }\n\n // Match each segment bottom-to-top\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const node = this.path[i];\n const isCurrentNode = (i === this.path.length - 1);\n\n if (!this._matchSegment(segment, node, isCurrentNode)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match path with deep wildcards\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1; // Start from current node (bottom)\n let segIdx = segments.length - 1; // Start from last segment\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n // \"..\" matches zero or more levels\n segIdx--;\n\n if (segIdx < 0) {\n // Pattern ends with \"..\", always matches\n return true;\n }\n\n // Find where next segment matches in the path\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n const isCurrentNode = (i === this.path.length - 1);\n if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n // Regular segment\n const isCurrentNode = (pathIdx === this.path.length - 1);\n if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n // All segments must be consumed\n return segIdx < 0;\n }\n\n /**\n * Match a single segment against a node\n * @private\n * @param {Object} segment - Segment from Expression\n * @param {Object} node - Node from path\n * @param {boolean} isCurrentNode - Whether this is the current (last) node\n * @returns {boolean}\n */\n _matchSegment(segment, node, isCurrentNode) {\n // Match tag name (* is wildcard)\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n // Match namespace if specified in segment\n if (segment.namespace !== undefined) {\n // Segment has namespace - node must match it\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n // If segment has no namespace, it matches nodes with or without namespace\n\n // Match attribute name (check if node has this attribute)\n // Can only check for current node since ancestors don't have values\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n // Can't check attributes for ancestor nodes (values not stored)\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n // Match attribute value (only possible for current node)\n if (segment.attrValue !== undefined) {\n const actualValue = node.values[segment.attrName];\n // Both should be strings\n if (String(actualValue) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n // Match position (only for current node)\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n // Can't check position for ancestor nodes\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth') {\n if (counter !== segment.positionValue) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Create a snapshot of current state\n * @returns {Object} State snapshot\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map))\n };\n }\n\n /**\n * Restore state from snapshot\n * @param {Object} snapshot - State snapshot\n */\n restore(snapshot) {\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n }\n\n /**\n * Return a read-only view of this matcher.\n *\n * The returned object exposes all query/inspection methods but throws a\n * TypeError if any state-mutating method is called (`push`, `pop`, `reset`,\n * `updateCurrent`, `restore`). Property reads (e.g. `.path`, `.separator`)\n * are allowed but the returned arrays/objects are frozen so callers cannot\n * mutate internal state through them either.\n *\n * @returns {ReadOnlyMatcher} A proxy that forwards read operations and blocks writes.\n *\n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n *\n * const ro = matcher.readOnly();\n * ro.matches(expr); // ✓ works\n * ro.getCurrentTag(); // ✓ works\n * ro.push(\"child\", {}); // ✗ throws TypeError\n * ro.reset(); // ✗ throws TypeError\n */\n readOnly() {\n const self = this;\n\n return new Proxy(self, {\n get(target, prop, receiver) {\n // Block mutating methods\n if (MUTATING_METHODS.has(prop)) {\n return () => {\n throw new TypeError(\n `Cannot call '${prop}' on a read-only Matcher. ` +\n `Obtain a writable instance to mutate state.`\n );\n };\n }\n\n const value = Reflect.get(target, prop, receiver);\n\n // Freeze array/object properties so callers can't mutate internal\n // state through direct property access (e.g. matcher.path.push(...))\n if (prop === 'path' || prop === 'siblingStacks') {\n return Object.freeze(\n Array.isArray(value)\n ? value.map(item =>\n item instanceof Map\n ? Object.freeze(new Map(item)) // freeze a copy of each Map\n : Object.freeze({ ...item }) // freeze a copy of each node\n )\n : value\n );\n }\n\n // Bind methods so `this` inside them still refers to the real Matcher\n if (typeof value === 'function') {\n return value.bind(target);\n }\n\n return value;\n },\n\n // Prevent any property assignment on the read-only view\n set(_target, prop) {\n throw new TypeError(\n `Cannot set property '${String(prop)}' on a read-only Matcher.`\n );\n },\n\n // Prevent property deletion\n deleteProperty(_target, prop) {\n throw new TypeError(\n `Cannot delete property '${String(prop)}' from a read-only Matcher.`\n );\n }\n });\n }\n}","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","'use strict';\n///@ts-check\n\nimport { getAllMatches, isExist, DANGEROUS_PROPERTY_NAMES, criticalProperties } from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n// Helper functions for attribute and namespace handling\n\n/**\n * Extract raw attributes (without prefix) from prefixed attribute map\n * @param {object} prefixedAttrs - Attributes with prefix from buildAttributesMap\n * @param {object} options - Parser options containing attributeNamePrefix\n * @returns {object} Raw attributes for matcher\n */\nfunction extractRawAttributes(prefixedAttrs, options) {\n if (!prefixedAttrs) return {};\n\n // Handle attributesGroupName option\n const attrs = options.attributesGroupName\n ? prefixedAttrs[options.attributesGroupName]\n : prefixedAttrs;\n\n if (!attrs) return {};\n\n const rawAttrs = {};\n for (const key in attrs) {\n // Remove the attribute prefix to get raw name\n if (key.startsWith(options.attributeNamePrefix)) {\n const rawName = key.substring(options.attributeNamePrefix.length);\n rawAttrs[rawName] = attrs[key];\n } else {\n // Attribute without prefix (shouldn't normally happen, but be safe)\n rawAttrs[key] = attrs[key];\n }\n }\n return rawAttrs;\n}\n\n/**\n * Extract namespace from raw tag name\n * @param {string} rawTagName - Tag name possibly with namespace (e.g., \"soap:Envelope\")\n * @returns {string|undefined} Namespace or undefined\n */\nfunction extractNamespace(rawTagName) {\n if (!rawTagName || typeof rawTagName !== 'string') return undefined;\n\n const colonIndex = rawTagName.indexOf(':');\n if (colonIndex !== -1 && colonIndex > 0) {\n const ns = rawTagName.substring(0, colonIndex);\n // Don't treat xmlns as a namespace\n if (ns !== 'xmlns') {\n return ns;\n }\n }\n return undefined;\n}\n\nexport default class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: \"\\\"\" },\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, \"&#\") },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, \"&#x\") },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.entityExpansionCount = 0;\n this.currentExpandedLength = 0;\n\n // Initialize path matcher for path-expression-matcher\n this.matcher = new Matcher();\n\n // Live read-only proxy of matcher — PEM creates and caches this internally.\n // All user callbacks receive this instead of the mutable matcher.\n this.readonlyMatcher = this.matcher.readOnly();\n\n // Flag to track if current node is a stop node (optimization)\n this.isCurrentNodeStopNode = false;\n\n // Pre-compile stopNodes expressions\n if (this.options.stopNodes && this.options.stopNodes.length > 0) {\n this.stopNodeExpressions = [];\n for (let i = 0; i < this.options.stopNodes.length; i++) {\n const stopNodeExp = this.options.stopNodes[i];\n if (typeof stopNodeExp === 'string') {\n // Convert string to Expression object\n this.stopNodeExpressions.push(new Expression(stopNodeExp));\n } else if (stopNodeExp instanceof Expression) {\n // Already an Expression object\n this.stopNodeExpressions.push(stopNodeExp);\n }\n }\n }\n }\n\n}\n\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n const escaped = ent.replace(/[.\\-+*:]/g, '\\\\.');\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + escaped + \";\", \"g\"),\n val: externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath);\n\n // Pass jPath string or matcher based on options.jPath setting\n const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n const newval = this.options.tagValueProcessor(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode);\n if (newval === null || newval === undefined) {\n //don't parse\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n //overwrite\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n\n // First pass: parse all attributes and update matcher with raw values\n // This ensures the matcher has all attribute values when processors run\n const rawAttrsForMatcher = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n const oldVal = matches[i][4];\n\n if (attrName.length && oldVal !== undefined) {\n let parsedVal = oldVal;\n if (this.options.trimValues) {\n parsedVal = parsedVal.trim();\n }\n parsedVal = this.replaceEntitiesValue(parsedVal, tagName, this.readonlyMatcher);\n rawAttrsForMatcher[attrName] = parsedVal;\n }\n }\n\n // Update matcher with raw attribute values BEFORE running processors\n if (Object.keys(rawAttrsForMatcher).length > 0 && typeof jPath === 'object' && jPath.updateCurrent) {\n jPath.updateCurrent(rawAttrsForMatcher);\n }\n\n // Second pass: now process attributes with matcher having full attribute context\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n\n // Convert jPath to string if needed for ignoreAttributesFn\n const jPathStr = this.options.jPath ? jPath.toString() : this.readonlyMatcher;\n if (this.ignoreAttributesFn(attrName, jPathStr)) {\n continue\n }\n\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n //if (aName === \"__proto__\") aName = \"#__proto__\";\n aName = sanitizeName(aName, this.options);\n\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal, tagName, this.readonlyMatcher);\n\n // Pass jPath string or readonlyMatcher based on options.jPath setting\n const jPathOrMatcher = this.options.jPath ? jPath.toString() : this.readonlyMatcher;\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPathOrMatcher);\n if (newVal === null || newVal === undefined) {\n //don't parse\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n //overwrite\n attrs[aName] = newVal;\n } else {\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function (xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n\n // Reset matcher for new document\n this.matcher.reset();\n\n // Reset entity expansion counters for this document\n this.entityExpansionCount = 0;\n this.currentExpandedLength = 0;\n\n const docTypeReader = new DocTypeReader(this.options.processEntities);\n for (let i = 0; i < xmlData.length; i++) {//for each char in XML data\n const ch = xmlData[i];\n if (ch === '<') {\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if (xmlData[i + 1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i + 2, closeIndex).trim();\n\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n\n tagName = transformTagName(this.options.transformTagName, tagName, \"\", this.options).tagName;\n\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = this.matcher.getCurrentTag();\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n // Pop the unpaired tag\n this.matcher.pop();\n this.tagsNodeStack.pop();\n }\n // Pop the closing tag\n this.matcher.pop();\n this.isCurrentNodeStopNode = false; // Reset flag when closing tag\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n\n let tagData = readTagExp(xmlData, i, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);\n if ((this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags) {\n //do nothing\n } else {\n\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, this.matcher, tagData.tagName);\n }\n this.addChild(currentNode, childNode, this.readonlyMatcher, i);\n }\n\n\n i = tagData.closeIndex + 1;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\")\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);\n\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i = endIndex;\n } else if (xmlData.substr(i + 1, 2) === '!D') {\n const result = docTypeReader.readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n } else if (xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9, closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, this.readonlyMatcher, true, false, true, true);\n if (val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n\n i = closeIndex + 2;\n } else {//Opening tag\n let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n\n // Safety check: readTagExp can return undefined\n if (!result) {\n // Log context for debugging\n const context = xmlData.substring(Math.max(0, i - 50), Math.min(xmlData.length, i + 50));\n throw new Error(`readTagExp returned undefined at position ${i}. Context: \"${context}\"`);\n }\n\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n if (this.options.strictReservedNames &&\n (tagName === this.options.commentPropName\n || tagName === this.options.cdataPropName\n || tagName === this.options.textNodeName\n || tagName === this.options.attributesGroupName\n )) {\n throw new Error(`Invalid tag name: ${tagName}`);\n }\n\n //save text as child node\n if (currentNode && textData) {\n if (currentNode.tagname !== '!xml') {\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n this.matcher.pop();\n }\n\n // Clean up self-closing syntax BEFORE processing attributes\n // This is where tagExp gets the trailing / removed\n let isSelfClosing = false;\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n isSelfClosing = true;\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n\n // Re-check attrExpPresent after cleaning\n attrExpPresent = (tagName !== tagExp);\n }\n\n // Now process attributes with CLEAN tagExp (no trailing /)\n let prefixedAttrs = null;\n let rawAttrs = {};\n let namespace = undefined;\n\n // Extract namespace from rawTagName\n namespace = extractNamespace(rawTagName);\n\n // Push tag to matcher FIRST (with empty attrs for now) so callbacks see correct path\n if (tagName !== xmlObj.tagname) {\n this.matcher.push(tagName, {}, namespace);\n }\n\n // Now build attributes - callbacks will see correct matcher state\n if (tagName !== tagExp && attrExpPresent) {\n // Build attributes (returns prefixed attributes for the tree)\n // Note: buildAttributesMap now internally updates the matcher with raw attributes\n prefixedAttrs = this.buildAttributesMap(tagExp, this.matcher, tagName);\n\n if (prefixedAttrs) {\n // Extract raw attributes (without prefix) for our use\n rawAttrs = extractRawAttributes(prefixedAttrs, this.options);\n }\n }\n\n // Now check if this is a stop node (after attributes are set)\n if (tagName !== xmlObj.tagname) {\n this.isCurrentNodeStopNode = this.isItStopNode(this.stopNodeExpressions, this.matcher);\n }\n\n const startIndex = i;\n if (this.isCurrentNodeStopNode) {\n let tagContent = \"\";\n\n // For self-closing tags, content is empty\n if (isSelfClosing) {\n i = result.closeIndex;\n }\n //unpaired tag\n else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i = result.closeIndex;\n }\n //normal tag\n else {\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n\n if (prefixedAttrs) {\n childNode[\":@\"] = prefixedAttrs;\n }\n\n // For stop nodes, store raw content as-is without any processing\n childNode.add(this.options.textNodeName, tagContent);\n\n this.matcher.pop(); // Pop the stop node tag\n this.isCurrentNodeStopNode = false; // Reset flag\n\n this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex);\n } else {\n //selfClosing tag\n if (isSelfClosing) {\n ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n const childNode = new xmlNode(tagName);\n if (prefixedAttrs) {\n childNode[\":@\"] = prefixedAttrs;\n }\n this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex);\n this.matcher.pop(); // Pop self-closing tag\n this.isCurrentNodeStopNode = false; // Reset flag\n }\n else if (this.options.unpairedTags.indexOf(tagName) !== -1) {//unpaired tag\n const childNode = new xmlNode(tagName);\n if (prefixedAttrs) {\n childNode[\":@\"] = prefixedAttrs;\n }\n this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex);\n this.matcher.pop(); // Pop unpaired tag\n this.isCurrentNodeStopNode = false; // Reset flag\n i = result.closeIndex;\n // Continue to next iteration without changing currentNode\n continue;\n }\n //opening tag\n else {\n const childNode = new xmlNode(tagName);\n if (this.tagsNodeStack.length > this.options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n this.tagsNodeStack.push(currentNode);\n\n if (prefixedAttrs) {\n childNode[\":@\"] = prefixedAttrs;\n }\n this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n } else {\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, matcher, startIndex) {\n // unset startIndex if not requested\n if (!this.options.captureMetaData) startIndex = undefined;\n\n // Pass jPath string or matcher based on options.jPath setting\n const jPathOrMatcher = this.options.jPath ? matcher.toString() : matcher;\n const result = this.options.updateTag(childNode.tagname, jPathOrMatcher, childNode[\":@\"])\n if (result === false) {\n //do nothing\n } else if (typeof result === \"string\") {\n childNode.tagname = result\n currentNode.addChild(childNode, startIndex);\n } else {\n currentNode.addChild(childNode, startIndex);\n }\n}\n\n/**\n * @param {object} val - Entity object with regex and val properties\n * @param {string} tagName - Tag name\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n */\nfunction replaceEntitiesValue(val, tagName, jPath) {\n const entityConfig = this.options.processEntities;\n\n if (!entityConfig || !entityConfig.enabled) {\n return val;\n }\n\n // Check if tag is allowed to contain entities\n if (entityConfig.allowedTags) {\n const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n const allowed = Array.isArray(entityConfig.allowedTags)\n ? entityConfig.allowedTags.includes(tagName)\n : entityConfig.allowedTags(tagName, jPathOrMatcher);\n\n if (!allowed) {\n return val;\n }\n }\n\n // Apply custom tag filter if provided\n if (entityConfig.tagFilter) {\n const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n if (!entityConfig.tagFilter(tagName, jPathOrMatcher)) {\n return val; // Skip based on custom filter\n }\n }\n\n // Replace DOCTYPE entities\n for (const entityName of Object.keys(this.docTypeEntities)) {\n const entity = this.docTypeEntities[entityName];\n const matches = val.match(entity.regx);\n\n if (matches) {\n // Track expansions\n this.entityExpansionCount += matches.length;\n\n // Check expansion limit\n if (entityConfig.maxTotalExpansions &&\n this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n throw new Error(\n `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n );\n }\n\n // Store length before replacement\n const lengthBefore = val.length;\n val = val.replace(entity.regx, entity.val);\n\n // Check expanded length immediately after replacement\n if (entityConfig.maxExpandedLength) {\n this.currentExpandedLength += (val.length - lengthBefore);\n\n if (this.currentExpandedLength > entityConfig.maxExpandedLength) {\n throw new Error(\n `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}`\n );\n }\n }\n }\n }\n // Replace standard entities\n for (const entityName of Object.keys(this.lastEntities)) {\n const entity = this.lastEntities[entityName];\n const matches = val.match(entity.regex);\n if (matches) {\n this.entityExpansionCount += matches.length;\n if (entityConfig.maxTotalExpansions &&\n this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n throw new Error(\n `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n );\n }\n }\n val = val.replace(entity.regex, entity.val);\n }\n if (val.indexOf('&') === -1) return val;\n\n // Replace HTML entities if enabled\n if (this.options.htmlEntities) {\n for (const entityName of Object.keys(this.htmlEntities)) {\n const entity = this.htmlEntities[entityName];\n const matches = val.match(entity.regex);\n if (matches) {\n //console.log(matches);\n this.entityExpansionCount += matches.length;\n if (entityConfig.maxTotalExpansions &&\n this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n throw new Error(\n `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n );\n }\n }\n val = val.replace(entity.regex, entity.val);\n }\n }\n\n // Replace ampersand entity last\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n\n return val;\n}\n\n\nfunction saveTextToParentTag(textData, parentNode, matcher, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0\n\n textData = this.parseTextData(textData,\n parentNode.tagname,\n matcher,\n false,\n parentNode[\":@\"] ? Object.keys(parentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n parentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Array} stopNodeExpressions - Array of compiled Expression objects\n * @param {Matcher} matcher - Current path matcher\n */\nfunction isItStopNode(stopNodeExpressions, matcher) {\n if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n for (let i = 0; i < stopNodeExpressions.length; i++) {\n if (matcher.matches(stopNodeExpressions[i])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index: index\n }\n }\n } else {\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n const closingIndex = xmlData.indexOf(str, i);\n if (closingIndex === -1) {\n throw new Error(errMsg)\n } else {\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i) {\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n if (xmlData[i + 1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i: closeIndex\n }\n }\n }\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\")\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\")\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i = tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if (newval === 'true') return true;\n else if (newval === 'false') return false;\n else return toNumber(val, options);\n } else {\n if (isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\nfunction fromCodePoint(str, base, prefix) {\n const codePoint = Number.parseInt(str, base);\n\n if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n return String.fromCodePoint(codePoint);\n } else {\n return prefix + str + \";\";\n }\n}\n\nfunction transformTagName(fn, tagName, tagExp, options) {\n if (fn) {\n const newTagName = fn(tagName);\n if (tagExp === tagName) {\n tagExp = newTagName\n }\n tagName = newTagName;\n }\n tagName = sanitizeName(tagName, options);\n return { tagName, tagExp };\n}\n\n\n\nfunction sanitizeName(name, options) {\n if (criticalProperties.includes(name)) {\n throw new Error(`[SECURITY] Invalid name: \"${name}\" is a reserved JavaScript keyword that could cause prototype pollution`);\n } else if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n return options.onDangerousProperty(name);\n }\n return name;\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","'use strict';\n\nimport XmlNode from './xmlNode.js';\nimport { Matcher } from 'path-expression-matcher';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * Helper function to strip attribute prefix from attribute map\n * @param {object} attrs - Attributes with prefix (e.g., {\"@_class\": \"code\"})\n * @param {string} prefix - Attribute prefix to remove (e.g., \"@_\")\n * @returns {object} Attributes without prefix (e.g., {\"class\": \"code\"})\n */\nfunction stripAttributePrefix(attrs, prefix) {\n if (!attrs || typeof attrs !== 'object') return {};\n if (!prefix) return attrs;\n\n const rawAttrs = {};\n for (const key in attrs) {\n if (key.startsWith(prefix)) {\n const rawName = key.substring(prefix.length);\n rawAttrs[rawName] = attrs[key];\n } else {\n // Attribute without prefix (shouldn't normally happen, but be safe)\n rawAttrs[key] = attrs[key];\n }\n }\n return rawAttrs;\n}\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns \n */\nexport default function prettify(node, options, matcher, readonlyMatcher) {\n return compress(node, options, matcher, readonlyMatcher);\n}\n\n/**\n * @param {array} arr \n * @param {object} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns object\n */\nfunction compress(arr, options, matcher, readonlyMatcher) {\n let text;\n const compressedObj = {}; //This is intended to be a plain object\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n\n // Push current property to matcher WITH RAW ATTRIBUTES (no prefix)\n if (property !== undefined && property !== options.textNodeName) {\n const rawAttrs = stripAttributePrefix(\n tagObj[\":@\"] || {},\n options.attributeNamePrefix\n );\n matcher.push(property, rawAttrs);\n }\n\n if (property === options.textNodeName) {\n if (text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === undefined) {\n continue;\n } else if (tagObj[property]) {\n\n let val = compress(tagObj[property], options, matcher, readonlyMatcher);\n const isLeaf = isLeafTag(val, options);\n\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], readonlyMatcher, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === \"object\" && val !== null) {\n val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n }\n\n\n if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n\n // Pass jPath string or readonlyMatcher based on options.jPath setting\n const jPathOrMatcher = options.jPath ? readonlyMatcher.toString() : readonlyMatcher;\n if (options.isArray(property, jPathOrMatcher, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n\n // Pop property from matcher after processing\n if (property !== undefined && property !== options.textNodeName) {\n matcher.pop();\n }\n }\n\n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== undefined) compressedObj[options.textNodeName] = text;\n\n\n return compressedObj;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, readonlyMatcher, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i]; // This is the PREFIXED name (e.g., \"@_class\")\n\n // Strip prefix for matcher path (for isArray callback)\n const rawAttrName = atrrName.startsWith(options.attributeNamePrefix)\n ? atrrName.substring(options.attributeNamePrefix.length)\n : atrrName;\n\n // For attributes, we need to create a temporary path\n // Pass jPath string or matcher based on options.jPath setting\n const jPathOrMatcher = options.jPath\n ? readonlyMatcher.toString() + \".\" + rawAttrName\n : readonlyMatcher;\n\n if (options.isArray(atrrName, jPathOrMatcher, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n\n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}","import { buildOptions } from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport { validate } from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser {\n\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Uint8Array} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData !== \"string\" && xmlData.toString) {\n xmlData = xmlData.toString();\n } else if (typeof xmlData !== \"string\") {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n\n if (validationOption) {\n if (validationOption === true) validationOption = {}; //validate with default options\n\n const result = validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`)\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options, orderedObjParser.matcher, orderedObjParser.readonlyMatcher);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\")\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n\n /**\n * Returns a Symbol that can be used to access the metadata\n * property on a node.\n * \n * If Symbol is not available in the environment, an ordinary property is used\n * and the name of the property is here returned.\n * \n * The XMLMetaData property is only present when `captureMetaData`\n * is true in the options.\n */\n static getMetaDataSymbol() {\n return XmlNode.getMetaDataSymbol();\n }\n}","import { Expression, Matcher } from 'path-expression-matcher';\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n\n // Pre-compile stopNode expressions for pattern matching\n const stopNodeExpressions = [];\n if (options.stopNodes && Array.isArray(options.stopNodes)) {\n for (let i = 0; i < options.stopNodes.length; i++) {\n const node = options.stopNodes[i];\n if (typeof node === 'string') {\n stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n stopNodeExpressions.push(node);\n }\n }\n }\n\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n\n return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions);\n}\n\nfunction arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n if (options.maxNestedTags && matcher.getDepth() > options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n\n if (!Array.isArray(arr)) {\n // Non-array values (e.g. string tag values) should be treated as text content\n if (arr !== undefined && arr !== null) {\n let text = arr.toString();\n text = replaceEntitiesValue(text, options);\n return text;\n }\n return \"\";\n }\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if (tagName === undefined) continue;\n\n // Extract attributes from \":@\" property\n const attrValues = extractAttributeValues(tagObj[\":@\"], options);\n\n // Push tag to matcher WITH attributes\n matcher.push(tagName, attrValues);\n\n // Check if this is a stop node using Expression matching\n const isStopNode = checkStopNode(matcher, stopNodeExpressions);\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n }\n\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n\n // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tagStart = indentation + `<${tagName}${attStr}`;\n\n // If this is a stopNode, get raw content without processing\n let tagValue;\n if (isStopNode) {\n tagValue = getRawContent(tagObj[tagName], options);\n } else {\n\n tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions);\n }\n\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n\n // Pop tag from matcher\n matcher.pop();\n }\n\n return xmlStr;\n}\n\n/**\n * Extract attribute values from the \":@\" object and return as plain object\n * for passing to matcher.push()\n */\nfunction extractAttributeValues(attrMap, options) {\n if (!attrMap || options.ignoreAttributes) return null;\n\n const attrValues = {};\n let hasAttrs = false;\n\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // Remove the attribute prefix to get clean attribute name\n const cleanAttrName = attr.startsWith(options.attributeNamePrefix)\n ? attr.substr(options.attributeNamePrefix.length)\n : attr;\n attrValues[cleanAttrName] = attrMap[attr];\n hasAttrs = true;\n }\n\n return hasAttrs ? attrValues : null;\n}\n\n/**\n * Extract raw content from a stopNode without any processing\n * This preserves the content exactly as-is, including special characters\n */\nfunction getRawContent(arr, options) {\n if (!Array.isArray(arr)) {\n // Non-array values return as-is\n if (arr !== undefined && arr !== null) {\n return arr.toString();\n }\n return \"\";\n }\n\n let content = \"\";\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const tagName = propName(item);\n\n if (tagName === options.textNodeName) {\n // Raw text content - NO processing, NO entity replacement\n content += item[tagName];\n } else if (tagName === options.cdataPropName) {\n // CDATA content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName === options.commentPropName) {\n // Comment content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName && tagName[0] === \"?\") {\n // Processing instruction - skip for stopNodes\n continue;\n } else if (tagName) {\n // Nested tags within stopNode\n // Recursively get raw content and reconstruct the tag\n // For stopNodes, we don't process attributes either\n const attStr = attr_to_str_raw(item[\":@\"], options);\n const nestedContent = getRawContent(item[tagName], options);\n\n if (!nestedContent || nestedContent.length === 0) {\n content += `<${tagName}${attStr}/>`;\n } else {\n content += `<${tagName}${attStr}>${nestedContent}`;\n }\n }\n }\n return content;\n}\n\n/**\n * Build attribute string for stopNodes - NO entity replacement\n */\nfunction attr_to_str_raw(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // For stopNodes, use raw value without processing\n let attrVal = attrMap[attr];\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options, isStopNode) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n let attrVal;\n\n if (isStopNode) {\n // For stopNodes, use raw value without any processing\n attrVal = attrMap[attr];\n } else {\n // Normal processing: apply attributeValueProcessor and entity replacement\n attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n }\n\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction checkStopNode(matcher, stopNodeExpressions) {\n if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n for (let i = 0; i < stopNodeExpressions.length; i++) {\n if (matcher.matches(stopNodeExpressions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function (key, a) {\n return a;\n },\n attributeValueProcessor: function (attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false,\n maxNestedTags: 100,\n jPath: true // When true, callbacks receive string jPath; when false, receive Matcher instance\n};\n\nexport default function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n\n // Convert old-style stopNodes for backward compatibility\n // Old syntax: \"*.tag\" meant \"tag anywhere in tree\"\n // New syntax: \"..tag\" means \"tag anywhere in tree\"\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n this.options.stopNodes = this.options.stopNodes.map(node => {\n if (typeof node === 'string' && node.startsWith('*.')) {\n // Convert old wildcard syntax to deep wildcard\n return '..' + node.substring(2);\n }\n return node;\n });\n }\n\n // Pre-compile stopNode expressions for pattern matching\n this.stopNodeExpressions = [];\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n for (let i = 0; i < this.options.stopNodes.length; i++) {\n const node = this.options.stopNodes[i];\n if (typeof node === 'string') {\n this.stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n this.stopNodeExpressions.push(node);\n }\n }\n }\n\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function (/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function () {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function (jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n }\n }\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n return this.j2x(jObj, 0, matcher).val;\n }\n};\n\nBuilder.prototype.j2x = function (jObj, level, matcher) {\n let attrStr = '';\n let val = '';\n if (this.options.maxNestedTags && matcher.getDepth() >= this.options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n // Get jPath based on option: string for backward compatibility, or Matcher for new features\n const jPath = this.options.jPath ? matcher.toString() : matcher;\n\n // Check if current node is a stopNode (will be used for attribute encoding)\n const isCurrentStopNode = this.checkStopNode(matcher);\n\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key === this.options.cdataPropName) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n // Check if this is a stopNode before building\n matcher.push(key);\n const isStopNode = this.checkStopNode(matcher);\n matcher.pop();\n\n if (isStopNode) {\n // Build as raw content without encoding\n const textValue = '' + jObj[key];\n if (textValue === '') {\n val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`;\n } else if (typeof item === 'object' && item !== null) {\n const nestedContent = this.buildRawContent(item);\n const nestedAttrs = this.buildAttributesForStopNode(item);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}`;\n }\n }\n }\n } else if (typeof value === 'object' && value !== null) {\n // Nested object\n const nestedContent = this.buildRawContent(value);\n const nestedAttrs = this.buildAttributesForStopNode(value);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}`;\n }\n } else {\n // Primitive value\n content += `<${key}>${value}`;\n }\n }\n\n return content;\n};\n\n// Build attribute string for stopNode (no entity encoding)\nBuilder.prototype.buildAttributesForStopNode = function (obj) {\n if (!obj || typeof obj !== 'object') return '';\n\n let attrStr = '';\n\n // Check for attributesGroupName (when attributes are grouped)\n if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n const attrGroup = obj[this.options.attributesGroupName];\n for (let attrKey in attrGroup) {\n if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n ? attrKey.substring(this.options.attributeNamePrefix.length)\n : attrKey;\n const val = attrGroup[attrKey];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + cleanKey;\n } else {\n attrStr += ' ' + cleanKey + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n } else {\n // Look for individual attributes\n for (let key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n const attr = this.isAttribute(key);\n if (attr) {\n const val = obj[key];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + attr;\n } else {\n attrStr += ' ' + attr + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n }\n }\n\n return attrStr;\n};\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n\n let tagEndExp = '' + val + tagEndExp);\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n } else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp);\n }\n }\n}\n\nBuilder.prototype.closeTag = function (key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n } else if (this.options.suppressEmptyNode) { //empty\n closeTag = \"/\";\n } else {\n closeTag = `>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n } else if (key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n } else {\n // Normal processing: apply tagValueProcessor and entity replacement\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n\n if (textValue === '') {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities) {\n for (let i = 0; i < this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","// Re-export from fast-xml-builder for backward compatibility\nimport XMLBuilder from 'fast-xml-builder';\nexport default XMLBuilder;\n\n// If there are any named exports you also want to re-export:\nexport * from 'fast-xml-builder';","'use strict';\n\nimport { validate } from './validator.js';\nimport XMLParser from './xmlparser/XMLParser.js';\nimport XMLBuilder from './xmlbuilder/json2xml.js';\n\nconst XMLValidator = {\n validate: validate\n}\nexport {\n XMLParser,\n XMLValidator,\n XMLBuilder\n};"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","nameStartChar","regexName","RegExp","getAllMatches","string","regex","matches","match","exec","allmatches","startIndex","lastIndex","length","len","index","push","isName","DANGEROUS_PROPERTY_NAMES","criticalProperties","defaultOptions","allowBooleanAttributes","unpairedTags","validate","xmlData","options","assign","tags","tagFound","reachedRoot","substr","i","readPI","err","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","tagName","trim","substring","validateTagName","result","readAttributeStr","attrStr","attrStrStart","isValid","validateAttributeString","code","msg","line","tagClosed","otg","pop","openPos","col","indexOf","afterAmp","validateAmpersand","JSON","stringify","map","t","replace","char","start","tagname","angleBracketsCount","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","undefined","attrName","validateAttrName","re","validateNumberAmpersand","count","message","lineNumber","lines","split","defaultOnDangerousProperty","name","includes","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","val","attributeValueProcessor","stopNodes","alwaysCreateTextNode","isArray","commentPropName","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","attrs","captureMetaData","maxNestedTags","strictReservedNames","onDangerousProperty","validatePropertyName","propertyName","optionName","normalized","toLowerCase","some","dangerous","Error","normalizeProcessEntities","enabled","maxEntitySize","maxExpansionDepth","maxTotalExpansions","maxExpandedLength","maxEntityCount","allowedTags","tagFilter","Math","max","_value$maxEntitySize","_value$maxExpansionDe","_value$maxTotalExpans","_value$maxExpandedLen","_value$maxEntityCount","_value$allowedTags","_value$tagFilter","METADATA_SYMBOL","buildOptions","built","_i","_propertyNameOptions","_propertyNameOptions$","Array","node","startsWith","XmlNode","child","create","_proto","add","_this$child$push","addChild","_this$child$push2","_this$child$push3","keys","getMetaDataSymbol","DocTypeReader","suppressValidationErr","readDocType","entities","entityCount","hasBody","comment","hasSeq","entityName","_this$readEntityExp","readEntityExp","escaped","regx","readElementExp","readNotationExp","skipWhitespace","test","validateEntityName","toUpperCase","entityValue","_this$readIdentifierV","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","_this$readIdentifierV2","_this$readIdentifierV3","_this$readIdentifierV4","type","identifierVal","elementName","contentModel","readAttlistExp","attributeName","attributeType","allowedNotations","notation","join","defaultValue","_this$readIdentifierV5","data","seq","j","hexRegex","numRegex","consider","decimalPoint","infinity","eNotationRegx","MUTATING_METHODS","Set","Matcher","constructor","separator","path","siblingStacks","attrValues","namespace","values","currentLevel","Map","siblings","siblingKey","counter","position","set","tag","updateCurrent","current","getCurrentTag","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","getDepth","toString","includeNamespace","sep","n","toArray","reset","expression","segments","hasDeepWildcard","_matchWithDeepWildcard","_matchSimple","segment","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","found","attrValue","actualValue","String","positionValue","snapshot","restore","readOnly","Proxy","target","receiver","has","TypeError","Reflect","freeze","item","bind","_target","deleteProperty","Expression","pattern","_parse","_hasDeepWildcard","seg","_hasAttributeCondition","_hasPositionSelector","currentPart","_parseSegment","part","bracketContent","withoutBrackets","bracketMatch","content","slice","tagAndPosition","nsIndex","positionMatch","colonIndex","lastIndexOf","tagPart","posPart","eqIndex","nthMatch","parseInt","hasAttributeCondition","hasPositionSelector","extractRawAttributes","prefixedAttrs","rawAttrs","extractNamespace","rawTagName","ns","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","_","str","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","ignoreAttributesFn","_step","_iterator","_createForOfIteratorHelperLoose","done","entityExpansionCount","currentExpandedLength","matcher","readonlyMatcher","isCurrentNodeStopNode","stopNodeExpressions","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","jPathOrMatcher","newval","parseValue","prefix","charAt","attrsRegx","rawAttrsForMatcher","oldVal","parsedVal","jPathStr","aName","sanitizeName","newVal","attrCollection","xmlObj","xmlNode","textData","docTypeReader","closeIndex","findClosingIndex","lastTagName","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","_ref","_ref2","context","min","_transformTagName","lastTag","isSelfClosing","tagContent","_transformTagName2","entityConfig","_i2","_Object$keys","entity","lengthBefore","_i3","_Object$keys2","_i4","_Object$keys3","parentNode","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","search","trimStart","openTagCount","shouldParse","trimmedStr","skipLike","numStr","Number","window","parse_int","isFinite","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","num","parsedStr","isPositive","Infinity","handleInfinity","toNumber","base","codePoint","fn","newTagName","stripAttributePrefix","prettify","compress","arr","text","compressedObj","tagObj","property","propName","isLeaf","isLeafTag","assignAttributes","attrMap","atrrName","rawAttrName","propCount","XMLParser","parse","validationOption","orderedObjParser","orderedResult","addEntity","toXml","jArray","indentation","format","indentBy","arrToStr","xmlStr","isPreviousElementTag","extractAttributeValues","isStopNode","checkStopNode","tagText","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","getRawContent","suppressUnpairedNode","suppressEmptyNode","endsWith","hasAttrs","attr","attr_to_str_raw","nestedContent","attrVal","suppressBooleanAttributes","textValue","a","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","extractAttributes","rawContent","buildRawContent","buildAttributesForStopNode","buildObjectNode","j2x","buildTextValNode","repeat","build","jObj","buildFromOrderedJs","arrayNodeName","isCurrentStopNode","Date","buildAttrPairStr","closeTag","arrLen","listTagVal","listTagAttr","Ks","L","attrGroup","attrKey","nestedAttrs","cleanKey","tagEndExp","piClosingChar","XMLValidator"],"sourceRoot":""} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/lib/fxparser.min.js b/bff/node_modules/fast-xml-parser/lib/fxparser.min.js new file mode 100644 index 0000000..2e839f0 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/lib/fxparser.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.XMLParser=e():t.XMLParser=e()}(this,()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>ft});var r=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n=new RegExp("^["+r+"]["+r+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function i(t,e){for(var r=[],n=e.exec(t);n;){var i=[];i.startIndex=e.lastIndex-n[0].length;for(var a=n.length,s=0;s0?this.child.push(((r={})[t.tagname]=t.child,r[":@"]=t[":@"],r)):this.child.push(((n={})[t.tagname]=t.child,n)),void 0!==e&&(this.child[this.child.length-1][d]={startIndex:e})},t.getMetaDataSymbol=function(){return d},t}(),c=function(){function t(t){this.suppressValidationErr=!t,this.options=t}var e=t.prototype;return e.readDocType=function(t,e){var r=Object.create(null),n=0;if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");e+=9;for(var i=1,a=!1,s=!1;e"===t[e]){if(s?"-"===t[e-1]&&"-"===t[e-2]&&(s=!1,i--):i--,0===i)break}else"["===t[e]?a=!0:t[e];else{if(a&&v(t,"!ENTITY",e)){e+=7;var o=void 0,l=void 0,h=this.readEntityExp(t,e+1,this.suppressValidationErr);if(o=h[0],l=h[1],e=h[2],-1===l.indexOf("&")){if(!1!==this.options.enabled&&null!=this.options.maxEntityCount&&n>=this.options.maxEntityCount)throw new Error("Entity count ("+(n+1)+") exceeds maximum allowed ("+this.options.maxEntityCount+")");var u=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");r[o]={regx:RegExp("&"+u+";","g"),val:l},n++}}else if(a&&v(t,"!ELEMENT",e))e+=8,e=this.readElementExp(t,e+1).index;else if(a&&v(t,"!ATTLIST",e))e+=8;else if(a&&v(t,"!NOTATION",e))e+=9,e=this.readNotationExp(t,e+1,this.suppressValidationErr).index;else{if(!v(t,"!--",e))throw new Error("Invalid DOCTYPE");s=!0}i++}if(0!==i)throw new Error("Unclosed DOCTYPE");return{entities:r,i:e}},e.readEntityExp=function(t,e){for(var r=e=m(t,e);ethis.options.maxEntitySize)throw new Error('Entity "'+n+'" size ('+i.length+") exceeds maximum allowed size ("+this.options.maxEntitySize+")");return[n,i,--e]},e.readNotationExp=function(t,e){for(var r=e=m(t,e);et.length)&&(e=t.length);for(var r=0,n=Array(e);r0&&(this.path[this.path.length-1].values=void 0);const n=this.path.length;this.siblingStacks[n]||(this.siblingStacks[n]=new Map);const i=this.siblingStacks[n],a=r?`${r}:${t}`:t,s=i.get(a)||0;let o=0;for(const t of i.values())o+=t;i.set(a,s+1);const l={tag:t,position:o,counter:s};null!=r&&(l.namespace=r),null!=e&&(l.values=e),this.path.push(l)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const r=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(r)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const n=t[r];if("deep-wildcard"===n.type){if(r--,r<0)return!0;const n=t[r];let i=!1;for(let t=e;t>=0;t--){const a=t===this.path.length-1;if(this._matchSegment(n,this.path[t],a)){e=t-1,r--,i=!0;break}}if(!i)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(n,this.path[e],t))return!1;e--,r--}}return r<0}_matchSegment(t,e,r){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!r)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const r=e.values[t.attrName];if(String(r)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!r)return!1;const n=e.counter??0;if("first"===t.position&&0!==n)return!1;if("odd"===t.position&&n%2!=1)return!1;if("even"===t.position&&n%2!=0)return!1;if("nth"===t.position&&n!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}readOnly(){return new Proxy(this,{get(t,e,r){if(T.has(e))return()=>{throw new TypeError(`Cannot call '${e}' on a read-only Matcher. Obtain a writable instance to mutate state.`)};const n=Reflect.get(t,e,r);return"path"===e||"siblingStacks"===e?Object.freeze(Array.isArray(n)?n.map(t=>t instanceof Map?Object.freeze(new Map(t)):Object.freeze({...t})):n):"function"==typeof n?n.bind(t):n},set(t,e){throw new TypeError(`Cannot set property '${String(e)}' on a read-only Matcher.`)},deleteProperty(t,e){throw new TypeError(`Cannot delete property '${String(e)}' from a read-only Matcher.`)}})}}class I{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let r=0,n="";for(;r0){var r=t.substring(0,e);if("xmlns"!==r)return r}}}var O=function(t){var e;if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:function(t,e){return W(e,10,"&#")}},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:function(t,e){return W(e,16,"&#x")}}},this.addExternalEntities=A,this.parseXml=j,this.parseTextData=M,this.resolveNameSpace=_,this.buildAttributesMap=k,this.isItStopNode=$,this.replaceEntitiesValue=F,this.readStopNodeData=Y,this.saveTextToParentTag=L,this.addChild=V,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?function(t){for(var r,n=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return w(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?w(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(r=n()).done;){var i=r.value;if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:function(){return!1},this.entityExpansionCount=0,this.currentExpandedLength=0,this.matcher=new S,this.readonlyMatcher=this.matcher.readOnly(),this.isCurrentNodeStopNode=!1,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodeExpressions=[];for(var r=0;r0)){s||(t=this.replaceEntitiesValue(t,e,r));var o=this.options.jPath?r.toString():r,l=this.options.tagValueProcessor(e,t,o,i,a);return null==l?t:typeof l!=typeof t||l!==t?l:this.options.trimValues||t.trim()===t?z(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function _(t){if(this.options.removeNSPrefix){var e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}var D=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function k(t,e,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){for(var n=i(t,D),a=n.length,s={},o={},l=0;l0&&"object"==typeof e&&e.updateCurrent&&e.updateCurrent(o);for(var d=0;d",a,"Closing Tag is not closed."),o=t.substring(a+2,s).trim();if(this.options.removeNSPrefix){var l=o.indexOf(":");-1!==l&&(o=o.substr(l+1))}o=X(this.options.transformTagName,o,"",this.options).tagName,r&&(n=this.saveTextToParentTag(n,r,this.readonlyMatcher));var h=this.matcher.getCurrentTag();if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error("Unpaired tag can not be used as closing tag: ");h&&-1!==this.options.unpairedTags.indexOf(h)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,r=this.tagsNodeStack.pop(),n="",a=s}else if("?"===t[a+1]){var u=R(t,a,!1,"?>");if(!u)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,this.readonlyMatcher),this.options.ignoreDeclaration&&"?xml"===u.tagName||this.options.ignorePiTags);else{var p=new g(u.tagName);p.add(this.options.textNodeName,""),u.tagName!==u.tagExp&&u.attrExpPresent&&(p[":@"]=this.buildAttributesMap(u.tagExp,this.matcher,u.tagName)),this.addChild(r,p,this.readonlyMatcher,a)}a=u.closeIndex+1}else if("!--"===t.substr(a+1,3)){var d=U(t,"--\x3e",a+4,"Comment is not closed.");if(this.options.commentPropName){var f,m=t.substring(a+4,d-2);n=this.saveTextToParentTag(n,r,this.readonlyMatcher),r.add(this.options.commentPropName,[(f={},f[this.options.textNodeName]=m,f)])}a=d}else if("!D"===t.substr(a+1,2)){var v=i.readDocType(t,a);this.docTypeEntities=v.entities,a=v.i}else if("!["===t.substr(a+1,2)){var x=U(t,"]]>",a,"CDATA is not closed.")-2,E=t.substring(a+9,x);n=this.saveTextToParentTag(n,r,this.readonlyMatcher);var b,y=this.parseTextData(E,r.tagname,this.readonlyMatcher,!0,!1,!0,!0);null==y&&(y=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[(b={},b[this.options.textNodeName]=E,b)]):r.add(this.options.textNodeName,y),a=x+2}else{var N=R(t,a,this.options.removeNSPrefix);if(!N){var w=t.substring(Math.max(0,a-50),Math.min(t.length,a+50));throw new Error("readTagExp returned undefined at position "+a+'. Context: "'+w+'"')}var T=N.tagName,S=N.rawTagName,I=N.tagExp,O=N.attrExpPresent,A=N.closeIndex,M=X(this.options.transformTagName,T,I,this.options);if(T=M.tagName,I=M.tagExp,this.options.strictReservedNames&&(T===this.options.commentPropName||T===this.options.cdataPropName||T===this.options.textNodeName||T===this.options.attributesGroupName))throw new Error("Invalid tag name: "+T);r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,this.readonlyMatcher,!1));var _=r;_&&-1!==this.options.unpairedTags.indexOf(_.tagname)&&(r=this.tagsNodeStack.pop(),this.matcher.pop());var D=!1;I.length>0&&I.lastIndexOf("/")===I.length-1&&(D=!0,I="/"===T[T.length-1]?T=T.substr(0,T.length-1):I.substr(0,I.length-1),O=T!==I);var k,j=null;k=P(S),T!==e.tagname&&this.matcher.push(T,{},k),T!==I&&O&&(j=this.buildAttributesMap(I,this.matcher,T))&&C(j,this.options),T!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode(this.stopNodeExpressions,this.matcher));var V=a;if(this.isCurrentNodeStopNode){var F="";if(D)a=N.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(T))a=N.closeIndex;else{var L=this.readStopNodeData(t,S,A+1);if(!L)throw new Error("Unexpected end of "+S);a=L.i,F=L.tagContent}var $=new g(T);j&&($[":@"]=j),$.add(this.options.textNodeName,F),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(r,$,this.readonlyMatcher,V)}else{if(D){var Y=X(this.options.transformTagName,T,I,this.options);T=Y.tagName,I=Y.tagExp;var z=new g(T);j&&(z[":@"]=j),this.addChild(r,z,this.readonlyMatcher,V),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else{if(-1!==this.options.unpairedTags.indexOf(T)){var W=new g(T);j&&(W[":@"]=j),this.addChild(r,W,this.readonlyMatcher,V),this.matcher.pop(),this.isCurrentNodeStopNode=!1,a=N.closeIndex;continue}var G=new g(T);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),j&&(G[":@"]=j),this.addChild(r,G,this.readonlyMatcher,V),r=G}n="",a=A}}else n+=t[a];return e.child};function V(t,e,r,n){this.options.captureMetaData||(n=void 0);var i=this.options.jPath?r.toString():r,a=this.options.updateTag(e.tagname,i,e[":@"]);!1===a||("string"==typeof a?(e.tagname=a,t.addChild(e,n)):t.addChild(e,n))}function F(t,e,r){var n=this.options.processEntities;if(!n||!n.enabled)return t;if(n.allowedTags){var i=this.options.jPath?r.toString():r;if(!(Array.isArray(n.allowedTags)?n.allowedTags.includes(e):n.allowedTags(e,i)))return t}if(n.tagFilter){var a=this.options.jPath?r.toString():r;if(!n.tagFilter(e,a))return t}for(var s=0,o=Object.keys(this.docTypeEntities);sn.maxTotalExpansions)throw new Error("Entity expansion limit exceeded: "+this.entityExpansionCount+" > "+n.maxTotalExpansions);var p=t.length;if(t=t.replace(h.regx,h.val),n.maxExpandedLength&&(this.currentExpandedLength+=t.length-p,this.currentExpandedLength>n.maxExpandedLength))throw new Error("Total expanded content size exceeded: "+this.currentExpandedLength+" > "+n.maxExpandedLength)}}for(var d=0,f=Object.keys(this.lastEntities);dn.maxTotalExpansions))throw new Error("Entity expansion limit exceeded: "+this.entityExpansionCount+" > "+n.maxTotalExpansions);t=t.replace(c.regex,c.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(var v=0,x=Object.keys(this.htmlEntities);vn.maxTotalExpansions))throw new Error("Entity expansion limit exceeded: "+this.entityExpansionCount+" > "+n.maxTotalExpansions);t=t.replace(b.regex,b.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)}function L(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function $(t,e){if(!t||0===t.length)return!1;for(var r=0;r");var i=function(t,e,r){var n;void 0===r&&(r=">");for(var i="",a=e;a",r,e+" is not closed");if(t.substring(r+2,a).trim()===e&&0===--i)return{tagContent:t.substring(n,r),i:a};r=a}else if("?"===t[r+1])r=U(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=U(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=U(t,"]]>",r,"StopNode is not closed.")-2;else{var s=R(t,r,">");s&&((s&&s.tagName)===e&&"/"!==s.tagExp[s.tagExp.length-1]&&i++,r=s.closeIndex)}}function z(t,e,r){if(e&&"string"==typeof t){var n=t.trim();return"true"===n||"false"!==n&&function(t,e={}){if(e=Object.assign({},y,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&E.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(isFinite(r)){if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(N);if(n){let i=n[1]||"";const a=-1===n[3].indexOf("e")?"E":"e",s=n[2],o=i?t[s.length+1]===a:t[s.length]===a;return s.length>1&&o?t:(1!==s.length||!n[3].startsWith(`.${a}`)&&n[3][0]!==a)&&s.length>0?r.leadingZeros&&!o?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const i=b.exec(r);if(i){const a=i[1]||"",s=i[2];let o=(n=i[3])&&-1!==n.indexOf(".")?("."===(n=n.replace(/0+$/,""))?n="0":"."===n[0]?n="0"+n:"."===n[n.length-1]&&(n=n.substring(0,n.length-1)),n):n;const l=a?"."===t[s.length+1]:"."===t[s.length];if(!e.leadingZeros&&(s.length>1||1===s.length&&!l))return t;{const n=Number(r),i=String(n);if(0===n)return n;if(-1!==i.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===i||i===o||i===`${a}${o}`?n:t;let l=s?o:r;return s?l===i||a+l===i?n:t:l===i||l===a+i?n:t}}return t}}var n;return function(t,e,r){const n=e===1/0;switch(r.infinity.toLowerCase()){case"null":return null;case"infinity":return e;case"string":return n?"Infinity":"-Infinity";default:return t}}(t,Number(r),e)}(t,r)}return void 0!==t?t:""}function W(t,e,r){var n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}function X(t,e,r,n){if(t){var i=t(e);r===e&&(r=i),e=i}return{tagName:e=G(e,n),tagExp:r}}function G(t,e){if(o.includes(t))throw new Error('[SECURITY] Invalid name: "'+t+'" is a reserved JavaScript keyword that could cause prototype pollution');return s.includes(t)?e.onDangerousProperty(t):t}var B=g.getMetaDataSymbol();function Z(t,e){if(!t||"object"!=typeof t)return{};if(!e)return t;var r={};for(var n in t)n.startsWith(e)?r[n.substring(e.length)]=t[n]:r[n]=t[n];return r}function q(t,e,r,n){return J(t,e,r,n)}function J(t,e,r,n){for(var i,a={},s=0;s0&&(a[e.textNodeName]=i):void 0!==i&&(a[e.textNodeName]=i),a}function K(t){for(var e=Object.keys(t),r=0;r5&&"xml"===n)return lt("InvalidXml","XML declaration allowed only at the start of the document.",pt(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function nt(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){var r=1;for(e+=8;e"===t[e]&&0===--r)break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function it(t,e){for(var r="",n="",i=!1;e"===t[e]&&""===n){i=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:i}}var at=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function st(t,e){for(var r=i(t,at),n={},a=0;a"!==t[a]&&" "!==t[a]&&"\t"!==t[a]&&"\n"!==t[a]&&"\r"!==t[a];a++)l+=t[a];if("/"===(l=l.trim())[l.length-1]&&(l=l.substring(0,l.length-1),a--),!ut(l))return lt("InvalidTag",0===l.trim().length?"Invalid space after '<'.":"Tag '"+l+"' is an invalid name.",pt(t,a));var h=it(t,a);if(!1===h)return lt("InvalidAttr","Attributes for '"+l+"' have open quote.",pt(t,a));var u=h.value;if(a=h.index,"/"===u[u.length-1]){var p=a-u.length,d=st(u=u.substring(0,u.length-1),e);if(!0!==d)return lt(d.err.code,d.err.msg,pt(t,p+d.err.line));n=!0}else if(o){if(!h.tagClosed)return lt("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",pt(t,a));if(u.trim().length>0)return lt("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",pt(t,s));if(0===r.length)return lt("InvalidTag","Closing tag '"+l+"' has not been opened.",pt(t,s));var f=r.pop();if(l!==f.tagName){var g=pt(t,f.tagStartPos);return lt("InvalidTag","Expected closing tag '"+f.tagName+"' (opened in line "+g.line+", col "+g.col+") instead of closing tag '"+l+"'.",pt(t,s))}0==r.length&&(i=!0)}else{var c=st(u,e);if(!0!==c)return lt(c.err.code,c.err.msg,pt(t,a-u.length+c.err.line));if(!0===i)return lt("InvalidXml","Multiple possible root nodes found.",pt(t,a));-1!==e.unpairedTags.indexOf(l)||r.push({tagName:l,tagStartPos:s}),n=!0}for(a++;a0)||lt("InvalidXml","Invalid '"+JSON.stringify(r.map(function(t){return t.tagName}),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):lt("InvalidXml","Start tag expected.",1)}(t,e);if(!0!==r)throw Error(r.err.msg+":"+r.err.line+":"+r.err.col)}var n=new O(this.options);n.addExternalEntities(this.externalEntities);var i=n.parseXml(t);return this.options.preserveOrder||void 0===i?i:q(i,this.options,n.matcher,n.readonlyMatcher)},e.addEntity=function(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e},t.getMetaDataSymbol=function(){return g.getMetaDataSymbol()},t}();return e})()); +//# sourceMappingURL=fxparser.min.js.map \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/lib/fxparser.min.js.map b/bff/node_modules/fast-xml-parser/lib/fxparser.min.js.map new file mode 100644 index 0000000..7aa0ff7 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/lib/fxparser.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"./lib/fxparser.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAmB,UAAID,IAEvBD,EAAgB,UAAIC,GACrB,CATD,CASGK,KAAM,I,mBCRT,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFT,EAAyBL,IACH,oBAAXkB,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeV,EAASkB,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeV,EAAS,aAAc,CAAEoB,OAAO,M,oCCHvD,IAAMC,EAAgB,gLAGhBC,EAAY,IAAIC,OAAO,KADGF,EAAgB,KAD/BA,EAEY,mDAEtB,SAASG,EAAcC,EAAQC,GAGpC,IAFA,IAAMC,EAAU,GACZC,EAAQF,EAAMG,KAAKJ,GAChBG,GAAO,CACZ,IAAME,EAAa,GACnBA,EAAWC,WAAaL,EAAMM,UAAYJ,EAAM,GAAGK,OAEnD,IADA,IAAMC,EAAMN,EAAMK,OACTE,EAAQ,EAAGA,EAAQD,EAAKC,IAC/BL,EAAWM,KAAKR,EAAMO,IAExBR,EAAQS,KAAKN,GACbF,EAAQF,EAAMG,KAAKJ,EACrB,CACA,OAAOE,CACT,CAEO,IAAMU,EAAS,SAAUZ,GAE9B,QAAQ,MADMH,EAAUO,KAAKJ,GAE/B,EAqBaa,EAA2B,CAItC,iBACA,WACA,UACA,mBACA,mBACA,mBACA,oBAGWC,EAAqB,CAAC,YAAa,cAAe,aC1DzDC,EAA6B,SAACC,GAClC,OAAIH,EAAyBI,SAASD,GAC7B,KAAOA,EAETA,CACT,EAGaE,EAAiB,CAC5BC,eAAe,EACfC,oBAAqB,KACrBC,qBAAqB,EACrBC,aAAc,QACdC,kBAAkB,EAClBC,gBAAgB,EAChBC,wBAAwB,EAExBC,eAAe,EACfC,qBAAqB,EACrBC,YAAY,EACZC,eAAe,EACfC,mBAAoB,CAClBC,KAAK,EACLC,cAAc,EACdC,WAAW,GAEbC,kBAAmB,SAAUC,EAASC,GACpC,OAAOA,CACT,EACAC,wBAAyB,SAAUC,EAAUF,GAC3C,OAAOA,CACT,EACAG,UAAW,GACXC,sBAAsB,EACtBC,QAAS,WAAF,OAAQ,CAAK,EACpBC,iBAAiB,EACjBC,aAAc,GACdC,iBAAiB,EACjBC,cAAc,EACdC,mBAAmB,EACnBC,cAAc,EACdC,kBAAkB,EAClBC,wBAAwB,EACxBC,UAAW,SAAUf,EAASgB,EAAOC,GACnC,OAAOjB,CACT,EAEAkB,iBAAiB,EACjBC,cAAe,IACfC,qBAAqB,EACrBJ,OAAO,EACPK,oBAAqBzC,GAUvB,SAAS0C,EAAqBC,EAAcC,GAC1C,GAA4B,iBAAjBD,EAAX,CAIA,IAAME,EAAaF,EAAaG,cAChC,GAAIhD,EAAyBiD,KAAK,SAAAC,GAAS,OAAIH,IAAeG,EAAUF,aAAa,GACnF,MAAM,IAAIG,MAAM,sBACQL,EAAU,MAAMD,EAAY,2EAItD,GAAI5C,EAAmBgD,KAAK,SAAAC,GAAS,OAAIH,IAAeG,EAAUF,aAAa,GAC7E,MAAM,IAAIG,MAAM,sBACQL,EAAU,MAAMD,EAAY,0EAXtD,CAcF,CAOA,SAASO,EAAyBtE,GAEhC,MAAqB,kBAAVA,EACF,CACLuE,QAASvE,EACTwE,cAAe,IACfC,kBAAmB,GACnBC,mBAAoB,IACpBC,kBAAmB,IACnBC,eAAgB,IAChBC,YAAa,KACbC,UAAW,MAKM,iBAAV9E,GAAgC,OAAVA,EACxB,CACLuE,SAA2B,IAAlBvE,EAAMuE,QACfC,cAAeO,KAAKC,IAAI,EAAsB,OAArBC,EAAEjF,EAAMwE,eAAaS,EAAI,KAClDR,kBAAmBM,KAAKC,IAAI,EAA0B,OAAzBE,EAAElF,EAAMyE,mBAAiBS,EAAI,IAC1DR,mBAAoBK,KAAKC,IAAI,EAA2B,OAA1BG,EAAEnF,EAAM0E,oBAAkBS,EAAI,KAC5DR,kBAAmBI,KAAKC,IAAI,EAA0B,OAAzBI,EAAEpF,EAAM2E,mBAAiBS,EAAI,KAC1DR,eAAgBG,KAAKC,IAAI,EAAuB,OAAtBK,EAAErF,EAAM4E,gBAAcS,EAAI,KACpDR,YAA8B,OAAnBS,EAAEtF,EAAM6E,aAAWS,EAAI,KAClCR,UAA0B,OAAjBS,EAAEvF,EAAM8E,WAASS,EAAI,MAK3BjB,GAAyB,GAdkB,IAADW,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,CAenD,CAEO,ICtHHC,EDsHSC,EAAe,SAAUC,GAYpC,IAXA,IAAMC,EAAQtG,OAAOuG,OAAO,CAAC,EAAGrE,EAAgBmE,GAWhDG,EAAA,EAAAC,EAR4B,CAC1B,CAAE9F,MAAO2F,EAAMlE,oBAAqBJ,KAAM,uBAC1C,CAAErB,MAAO2F,EAAMjE,oBAAqBL,KAAM,uBAC1C,CAAErB,MAAO2F,EAAMhE,aAAcN,KAAM,gBACnC,CAAErB,MAAO2F,EAAMzD,cAAeb,KAAM,iBACpC,CAAErB,MAAO2F,EAAM5C,gBAAiB1B,KAAM,oBAGSwE,EAAAC,EAAAjF,OAAAgF,IAAE,CAA9C,IAAAE,EAAAD,EAAAD,GAAQ7F,EAAK+F,EAAL/F,MAAOqB,EAAI0E,EAAJ1E,KACdrB,GACF8D,EAAqB9D,EAAOqB,EAEhC,CAqBA,OAnBkC,OAA9BsE,EAAM9B,sBACR8B,EAAM9B,oBAAsBzC,GAI9BuE,EAAM1C,gBAAkBqB,EAAyBqB,EAAM1C,iBAGnD0C,EAAM/C,WAAaoD,MAAMlD,QAAQ6C,EAAM/C,aACzC+C,EAAM/C,UAAY+C,EAAM/C,UAAUqD,IAAI,SAAAC,GACpC,MAAoB,iBAATA,GAAqBA,EAAKC,WAAW,MAGvC,KAAOD,EAAKE,UAAU,GAExBF,CACT,IAGKP,CACT,ECzJEH,EADoB,mBAAX1F,OACS,gBAEAA,OAAO,qBAC1B,IAEoBuG,EAAO,WAC1B,SAAAA,EAAYC,GACVtH,KAAKsH,QAAUA,EACftH,KAAKuH,MAAQ,GACbvH,KAAK,MAAQK,OAAOmH,OAAO,KAC7B,CAAC,IAAAC,EAAAJ,EAAA1G,UAuBA,OAvBA8G,EACDC,IAAA,SAAIvH,EAAKsD,GAAM,IAADkE,EAEA,cAARxH,IAAqBA,EAAM,cAC/BH,KAAKuH,MAAMvF,OAAI2F,EAAA,IAAIxH,GAAMsD,EAAGkE,GAC9B,EAACF,EACDG,SAAA,SAASV,EAAMvF,GAE0C,IAADkG,EAE/CC,EAHc,cAAjBZ,EAAKI,UAAyBJ,EAAKI,QAAU,cAC7CJ,EAAK,OAAS7G,OAAO0H,KAAKb,EAAK,OAAOrF,OAAS,EACjD7B,KAAKuH,MAAMvF,OAAI6F,EAAA,IAAIX,EAAKI,SAAUJ,EAAKK,MAAKM,EAAG,MAAOX,EAAK,MAAKW,IAEhE7H,KAAKuH,MAAMvF,OAAI8F,EAAA,IAAIZ,EAAKI,SAAUJ,EAAKK,MAAKO,SAG3BE,IAAfrG,IAGF3B,KAAKuH,MAAMvH,KAAKuH,MAAM1F,OAAS,GAAG2E,GAAmB,CAAE7E,WAAAA,GAE3D,EACA0F,EACOY,kBAAP,WACE,OAAOzB,CACT,EAACa,CAAA,CA5ByB,GCRPa,EAAa,WAC9B,SAAAA,EAAYxB,GACR1G,KAAKmI,uBAAyBzB,EAC9B1G,KAAK0G,QAAUA,CACnB,CAAC,IAAAe,EAAAS,EAAAvH,UAyXA,OAzXA8G,EAEDW,YAAA,SAAYC,EAASC,GACjB,IAAMC,EAAWlI,OAAOmH,OAAO,MAC3BgB,EAAc,EAElB,GAAuB,MAAnBH,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,GAmEZ,MAAM,IAAIjD,MAAM,kCAlEhBiD,GAAQ,EAIR,IAHA,IAAIG,EAAqB,EACrBC,GAAU,EAAOC,GAAU,EAExBL,EAAID,EAAQxG,OAAQyG,IACvB,GAAmB,MAAfD,EAAQC,IAAeK,EAuCpB,GAAmB,MAAfN,EAAQC,IASf,GARIK,EACuB,MAAnBN,EAAQC,EAAI,IAAiC,MAAnBD,EAAQC,EAAI,KACtCK,GAAU,EACVF,KAGJA,IAEuB,IAAvBA,EACA,UAEkB,MAAfJ,EAAQC,GACfI,GAAU,EAEHL,EAAQC,OAtDiB,CAChC,GAAII,GAAWE,EAAOP,EAAS,UAAWC,GAAI,CAC1CA,GAAK,EACL,IAAIO,OAAU,EAAEpF,OAAG,EAACqF,EACG9I,KAAK+I,cAAcV,EAASC,EAAI,EAAGtI,KAAKmI,uBAC/D,GADCU,EAAUC,EAAA,GAAErF,EAAGqF,EAAA,GAAER,EAACQ,EAAA,IACO,IAAtBrF,EAAIuF,QAAQ,KAAa,CACzB,IAA6B,IAAzBhJ,KAAK0G,QAAQnB,SACkB,MAA/BvF,KAAK0G,QAAQd,gBACb4C,GAAexI,KAAK0G,QAAQd,eAC5B,MAAM,IAAIP,MAAM,kBACKmD,EAAc,GAAC,8BAA8BxI,KAAK0G,QAAQd,eAAc,KAIjG,IAAMqD,EAAUJ,EAAWK,QAAQ,sBAAuB,QAC1DX,EAASM,GAAc,CACnBM,KAAMhI,OAAO,IAAI8H,EAAO,IAAK,KAC7BxF,IAAKA,GAET+E,GACJ,CACJ,MACK,GAAIE,GAAWE,EAAOP,EAAS,WAAYC,GAC5CA,GAAK,EAELA,EADkBtI,KAAKoJ,eAAef,EAASC,EAAI,GAA3CvG,WAEL,GAAI2G,GAAWE,EAAOP,EAAS,WAAYC,GAC9CA,GAAK,OAGF,GAAII,GAAWE,EAAOP,EAAS,YAAaC,GAC/CA,GAAK,EAELA,EADkBtI,KAAKqJ,gBAAgBhB,EAASC,EAAI,EAAGtI,KAAKmI,uBAApDpG,UAEL,KAAI6G,EAAOP,EAAS,MAAOC,GAC7B,MAAM,IAAIjD,MAAM,mBADiBsD,GAAU,CACT,CAEvCF,GAEJ,CAkBJ,GAA2B,IAAvBA,EACA,MAAM,IAAIpD,MAAM,oBAKxB,MAAO,CAAEkD,SAAAA,EAAUD,EAAAA,EACvB,EAACb,EACDsB,cAAA,SAAcV,EAASC,GAenB,IADA,IAAM3G,EAHN2G,EAAIgB,EAAejB,EAASC,GAIrBA,EAAID,EAAQxG,SAAW,KAAK0H,KAAKlB,EAAQC,KAAsB,MAAfD,EAAQC,IAA6B,MAAfD,EAAQC,IACjFA,IAEJ,IAAIO,EAAaR,EAAQjB,UAAUzF,EAAY2G,GAQ/C,GANAkB,EAAmBX,GAGnBP,EAAIgB,EAAejB,EAASC,IAGvBtI,KAAKmI,sBAAuB,CAC7B,GAAkD,WAA9CE,EAAQjB,UAAUkB,EAAGA,EAAI,GAAGmB,cAC5B,MAAM,IAAIpE,MAAM,uCACb,GAAmB,MAAfgD,EAAQC,GACf,MAAM,IAAIjD,MAAM,uCAExB,CAGA,IAAIqE,EAGJC,EAFmB3J,KAAK4J,kBAAkBvB,EAASC,EAAG,UAGtD,GAHCA,EAACqB,EAAA,GAAED,EAAWC,EAAA,IAGc,IAAzB3J,KAAK0G,QAAQnB,SACiB,MAA9BvF,KAAK0G,QAAQlB,eACbkE,EAAY7H,OAAS7B,KAAK0G,QAAQlB,cAClC,MAAM,IAAIH,MAAM,WACDwD,EAAU,WAAWa,EAAY7H,OAAM,mCAAmC7B,KAAK0G,QAAQlB,cAAa,KAKvH,MAAO,CAACqD,EAAYa,IADpBpB,EAEJ,EAACb,EAED4B,gBAAA,SAAgBhB,EAASC,GAOrB,IADA,IAAM3G,EAJN2G,EAAIgB,EAAejB,EAASC,GAKrBA,EAAID,EAAQxG,SAAW,KAAK0H,KAAKlB,EAAQC,KAC5CA,IAEJ,IAAIuB,EAAexB,EAAQjB,UAAUzF,EAAY2G,IAEhDtI,KAAKmI,uBAAyBqB,EAAmBK,GAGlDvB,EAAIgB,EAAejB,EAASC,GAG5B,IAAMwB,EAAiBzB,EAAQjB,UAAUkB,EAAGA,EAAI,GAAGmB,cACnD,IAAKzJ,KAAKmI,uBAA4C,WAAnB2B,GAAkD,WAAnBA,EAC9D,MAAM,IAAIzE,MAAM,qCAAqCyE,EAAc,KAEvExB,GAAKwB,EAAejI,OAGpByG,EAAIgB,EAAejB,EAASC,GAG5B,IAAIyB,EAAmB,KACnBC,EAAmB,KAEvB,GAAuB,WAAnBF,EAA6B,CAG7B,IAAAG,EAFwBjK,KAAK4J,kBAAkBvB,EAASC,EAAG,oBAM3D,GANCA,EAAC2B,EAAA,GAAEF,EAAgBE,EAAA,GAMD,MAAf5B,EAHJC,EAAIgB,EAAejB,EAASC,KAGa,MAAfD,EAAQC,GAAY,CAAC,IAAD4B,EAClBlK,KAAK4J,kBAAkBvB,EAASC,EAAG,oBAA1DA,EAAC4B,EAAA,GAAEF,EAAgBE,EAAA,EACxB,CACJ,MAAO,GAAuB,WAAnBJ,EAA6B,CACpC,IAAAK,EACwBnK,KAAK4J,kBAAkBvB,EAASC,EAAG,oBAE3D,GAFCA,EAAC6B,EAAA,GAAEH,EAAgBG,EAAA,IAEfnK,KAAKmI,wBAA0B6B,EAChC,MAAM,IAAI3E,MAAM,0DAExB,CAEA,MAAO,CAAEwE,aAAAA,EAAcE,iBAAAA,EAAkBC,iBAAAA,EAAkBjI,QAASuG,EACxE,EAACb,EAEDmC,kBAAA,SAAkBvB,EAASC,EAAG8B,GAC1B,IAAIC,EACEC,EAAYjC,EAAQC,GAC1B,GAAkB,MAAdgC,GAAmC,MAAdA,EACrB,MAAM,IAAIjF,MAAM,kCAAkCiF,EAAS,KAK/D,IADA,IAAM3I,IAFN2G,EAGOA,EAAID,EAAQxG,QAAUwG,EAAQC,KAAOgC,GACxChC,IAIJ,GAFA+B,EAAgBhC,EAAQjB,UAAUzF,EAAY2G,GAE1CD,EAAQC,KAAOgC,EACf,MAAM,IAAIjF,MAAM,gBAAgB+E,EAAI,UAGxC,MAAO,GADP9B,EACW+B,EACf,EAAC5C,EAED2B,eAAA,SAAef,EAASC,GAYpB,IADA,IAAM3G,EAHN2G,EAAIgB,EAAejB,EAASC,GAIrBA,EAAID,EAAQxG,SAAW,KAAK0H,KAAKlB,EAAQC,KAC5CA,IAEJ,IAAIiC,EAAclC,EAAQjB,UAAUzF,EAAY2G,GAGhD,IAAKtI,KAAKmI,wBAA0BlG,EAAOsI,GACvC,MAAM,IAAIlF,MAAM,0BAA0BkF,EAAW,KAKzD,IAAIC,EAAe,GAEnB,GAAmB,MAAfnC,EAHJC,EAAIgB,EAAejB,EAASC,KAGFM,EAAOP,EAAS,OAAQC,GAAIA,GAAK,OACtD,GAAmB,MAAfD,EAAQC,IAAcM,EAAOP,EAAS,KAAMC,GAAIA,GAAK,OACzD,GAAmB,MAAfD,EAAQC,GAAY,CAKzB,IADA,IAAM3G,IAHN2G,EAIOA,EAAID,EAAQxG,QAAyB,MAAfwG,EAAQC,IACjCA,IAIJ,GAFAkC,EAAenC,EAAQjB,UAAUzF,EAAY2G,GAE1B,MAAfD,EAAQC,GACR,MAAM,IAAIjD,MAAM,6BAGxB,MAAO,IAAKrF,KAAKmI,sBACb,MAAM,IAAI9C,MAAM,sCAAsCgD,EAAQC,GAAE,KAGpE,MAAO,CACHiC,YAAAA,EACAC,aAAcA,EAAaC,OAC3B1I,MAAOuG,EAEf,EAACb,EAEDiD,eAAA,SAAerC,EAASC,GAMpB,IADA,IAAI3G,EAHJ2G,EAAIgB,EAAejB,EAASC,GAIrBA,EAAID,EAAQxG,SAAW,KAAK0H,KAAKlB,EAAQC,KAC5CA,IAEJ,IAAIiC,EAAclC,EAAQjB,UAAUzF,EAAY2G,GAUhD,IAPAkB,EAAmBe,GAMnB5I,EAHA2G,EAAIgB,EAAejB,EAASC,GAIrBA,EAAID,EAAQxG,SAAW,KAAK0H,KAAKlB,EAAQC,KAC5CA,IAEJ,IAAIqC,EAAgBtC,EAAQjB,UAAUzF,EAAY2G,GAGlD,IAAKkB,EAAmBmB,GACpB,MAAM,IAAItF,MAAM,4BAA4BsF,EAAa,KAI7DrC,EAAIgB,EAAejB,EAASC,GAG5B,IAAIsC,EAAgB,GACpB,GAAkD,aAA9CvC,EAAQjB,UAAUkB,EAAGA,EAAI,GAAGmB,cAA8B,CAQ1D,GAPAmB,EAAgB,WAOG,MAAfvC,EAHJC,EAAIgB,EAAejB,EAHnBC,GAAK,IAOD,MAAM,IAAIjD,MAAM,yBAAwBgD,EAAQC,GAAE,KAEtDA,IAIA,IADA,IAAIuC,EAAmB,GAChBvC,EAAID,EAAQxG,QAAyB,MAAfwG,EAAQC,IAAY,CAI7C,IADA,IAAM3G,EAAa2G,EACZA,EAAID,EAAQxG,QAAyB,MAAfwG,EAAQC,IAA6B,MAAfD,EAAQC,IACvDA,IAEJ,IAAIwC,EAAWzC,EAAQjB,UAAUzF,EAAY2G,GAI7C,IAAKkB,EADLsB,EAAWA,EAASL,QAEhB,MAAM,IAAIpF,MAAM,2BAA2ByF,EAAQ,KAGvDD,EAAiB7I,KAAK8I,GAGH,MAAfzC,EAAQC,KACRA,IACAA,EAAIgB,EAAejB,EAASC,GAEpC,CAEA,GAAmB,MAAfD,EAAQC,GACR,MAAM,IAAIjD,MAAM,kCAEpBiD,IAGAsC,GAAiB,KAAOC,EAAiBE,KAAK,KAAO,GACzD,KAAO,CAGH,IADA,IAAMpJ,EAAa2G,EACZA,EAAID,EAAQxG,SAAW,KAAK0H,KAAKlB,EAAQC,KAC5CA,IAMJ,GAJAsC,GAAiBvC,EAAQjB,UAAUzF,EAAY2G,IAI1CtI,KAAKmI,wBADS,CAAC,QAAS,KAAM,QAAS,SAAU,SAAU,WAAY,UAAW,YACxC7F,SAASsI,EAAcnB,eAClE,MAAM,IAAIpE,MAAM,4BAA4BuF,EAAa,IAEjE,CAGAtC,EAAIgB,EAAejB,EAASC,GAG5B,IAAI0C,EAAe,GACnB,GAAkD,cAA9C3C,EAAQjB,UAAUkB,EAAGA,EAAI,GAAGmB,cAC5BuB,EAAe,YACf1C,GAAK,OACF,GAAkD,aAA9CD,EAAQjB,UAAUkB,EAAGA,EAAI,GAAGmB,cACnCuB,EAAe,WACf1C,GAAK,MACF,CAAC,IAAD2C,EACiBjL,KAAK4J,kBAAkBvB,EAASC,EAAG,WAAtDA,EAAC2C,EAAA,GAAED,EAAYC,EAAA,EACpB,CAEA,MAAO,CACHV,YAAAA,EACAI,cAAAA,EACAC,cAAAA,EACAI,aAAAA,EACAjJ,MAAOuG,EAEf,EAACJ,CAAA,CA7X6B,GAkY5BoB,EAAiB,SAAC4B,EAAMnJ,GAC1B,KAAOA,EAAQmJ,EAAKrJ,QAAU,KAAK0H,KAAK2B,EAAKnJ,KACzCA,IAEJ,OAAOA,CACX,EAIA,SAAS6G,EAAOsC,EAAMC,EAAK7C,GACvB,IAAK,IAAI8C,EAAI,EAAGA,EAAID,EAAItJ,OAAQuJ,IAC5B,GAAID,EAAIC,KAAOF,EAAK5C,EAAI8C,EAAI,GAAI,OAAO,EAE3C,OAAO,CACX,CAEA,SAAS5B,EAAmBnH,GACxB,GAAIJ,EAAOI,GACP,OAAOA,EAEP,MAAM,IAAIgD,MAAM,uBAAuBhD,EAC/C,CCzZA,MAAMgJ,EAAW,wBACXC,EAAW,qCAKXC,EAAW,CACbnI,KAAK,EAELC,cAAc,EACdmI,aAAc,IACdlI,WAAW,EAEXmI,SAAU,YAsEd,MAAMC,EAAgB,0C,sGC7DtB,MAAMC,EAAmB,IAAIC,IAAI,CAAC,OAAQ,MAAO,QAAS,gBAAiB,YAE5D,MAAMC,EAMnBC,WAAAA,CAAYpF,EAAU,CAAC,GACrB1G,KAAK+L,UAAYrF,EAAQqF,WAAa,IACtC/L,KAAKgM,KAAO,GACZhM,KAAKiM,cAAgB,EAIvB,CAQAjK,IAAAA,CAAKwB,EAAS0I,EAAa,KAAMC,EAAY,MAEvCnM,KAAKgM,KAAKnK,OAAS,IACR7B,KAAKgM,KAAKhM,KAAKgM,KAAKnK,OAAS,GACrCuK,YAASpE,GAIhB,MAAMqE,EAAerM,KAAKgM,KAAKnK,OAC1B7B,KAAKiM,cAAcI,KACtBrM,KAAKiM,cAAcI,GAAgB,IAAIC,KAGzC,MAAMC,EAAWvM,KAAKiM,cAAcI,GAG9BG,EAAaL,EAAY,GAAGA,KAAa3I,IAAYA,EAGrDiJ,EAAUF,EAAS/L,IAAIgM,IAAe,EAG5C,IAAIE,EAAW,EACf,IAAK,MAAMC,KAASJ,EAASH,SAC3BM,GAAYC,EAIdJ,EAASK,IAAIJ,EAAYC,EAAU,GAGnC,MAAMvF,EAAO,CACX2F,IAAKrJ,EACLkJ,SAAUA,EACVD,QAASA,GAIPN,UACFjF,EAAKiF,UAAYA,GAIfD,UACFhF,EAAKkF,OAASF,GAGhBlM,KAAKgM,KAAKhK,KAAKkF,EACjB,CAMA4F,GAAAA,GACE,GAAyB,IAArB9M,KAAKgM,KAAKnK,OACZ,OAGF,MAAMqF,EAAOlH,KAAKgM,KAAKc,MASvB,OAJI9M,KAAKiM,cAAcpK,OAAS7B,KAAKgM,KAAKnK,OAAS,IACjD7B,KAAKiM,cAAcpK,OAAS7B,KAAKgM,KAAKnK,OAAS,GAG1CqF,CACT,CAOA6F,aAAAA,CAAcb,GACZ,GAAIlM,KAAKgM,KAAKnK,OAAS,EAAG,CACxB,MAAMmL,EAAUhN,KAAKgM,KAAKhM,KAAKgM,KAAKnK,OAAS,GACzCqK,UACFc,EAAQZ,OAASF,EAErB,CACF,CAMAe,aAAAA,GACE,OAAOjN,KAAKgM,KAAKnK,OAAS,EAAI7B,KAAKgM,KAAKhM,KAAKgM,KAAKnK,OAAS,GAAGgL,SAAM7E,CACtE,CAMAkF,mBAAAA,GACE,OAAOlN,KAAKgM,KAAKnK,OAAS,EAAI7B,KAAKgM,KAAKhM,KAAKgM,KAAKnK,OAAS,GAAGsK,eAAYnE,CAC5E,CAOAmF,YAAAA,CAAaxJ,GACX,GAAyB,IAArB3D,KAAKgM,KAAKnK,OAAc,OAC5B,MAAMmL,EAAUhN,KAAKgM,KAAKhM,KAAKgM,KAAKnK,OAAS,GAC7C,OAAOmL,EAAQZ,SAASzI,EAC1B,CAOAyJ,OAAAA,CAAQzJ,GACN,GAAyB,IAArB3D,KAAKgM,KAAKnK,OAAc,OAAO,EACnC,MAAMmL,EAAUhN,KAAKgM,KAAKhM,KAAKgM,KAAKnK,OAAS,GAC7C,YAA0BmG,IAAnBgF,EAAQZ,QAAwBzI,KAAYqJ,EAAQZ,MAC7D,CAMAiB,WAAAA,GACE,OAAyB,IAArBrN,KAAKgM,KAAKnK,QAAsB,EAC7B7B,KAAKgM,KAAKhM,KAAKgM,KAAKnK,OAAS,GAAG6K,UAAY,CACrD,CAMAY,UAAAA,GACE,OAAyB,IAArBtN,KAAKgM,KAAKnK,QAAsB,EAC7B7B,KAAKgM,KAAKhM,KAAKgM,KAAKnK,OAAS,GAAG4K,SAAW,CACpD,CAOAc,QAAAA,GACE,OAAOvN,KAAKqN,aACd,CAMAG,QAAAA,GACE,OAAOxN,KAAKgM,KAAKnK,MACnB,CAQA4L,QAAAA,CAAS1B,EAAW2B,GAAmB,GACrC,MAAMC,EAAM5B,GAAa/L,KAAK+L,UAC9B,OAAO/L,KAAKgM,KAAK/E,IAAI2G,GACfF,GAAoBE,EAAEzB,UACjB,GAAGyB,EAAEzB,aAAayB,EAAEf,MAEtBe,EAAEf,KACR9B,KAAK4C,EACV,CAMAE,OAAAA,GACE,OAAO7N,KAAKgM,KAAK/E,IAAI2G,GAAKA,EAAEf,IAC9B,CAKAiB,KAAAA,GACE9N,KAAKgM,KAAO,GACZhM,KAAKiM,cAAgB,EACvB,CAOA1K,OAAAA,CAAQwM,GACN,MAAMC,EAAWD,EAAWC,SAE5B,OAAwB,IAApBA,EAASnM,SAKTkM,EAAWE,kBACNjO,KAAKkO,uBAAuBF,GAI9BhO,KAAKmO,aAAaH,GAC3B,CAMAG,YAAAA,CAAaH,GAEX,GAAIhO,KAAKgM,KAAKnK,SAAWmM,EAASnM,OAChC,OAAO,EAIT,IAAK,IAAIyG,EAAI,EAAGA,EAAI0F,EAASnM,OAAQyG,IAAK,CACxC,MAAM8F,EAAUJ,EAAS1F,GACnBpB,EAAOlH,KAAKgM,KAAK1D,GACjB+F,EAAiB/F,IAAMtI,KAAKgM,KAAKnK,OAAS,EAEhD,IAAK7B,KAAKsO,cAAcF,EAASlH,EAAMmH,GACrC,OAAO,CAEX,CAEA,OAAO,CACT,CAMAH,sBAAAA,CAAuBF,GACrB,IAAIO,EAAUvO,KAAKgM,KAAKnK,OAAS,EAC7B2M,EAASR,EAASnM,OAAS,EAE/B,KAAO2M,GAAU,GAAKD,GAAW,GAAG,CAClC,MAAMH,EAAUJ,EAASQ,GAEzB,GAAqB,kBAAjBJ,EAAQhE,KAA0B,CAIpC,GAFAoE,IAEIA,EAAS,EAEX,OAAO,EAIT,MAAMC,EAAUT,EAASQ,GACzB,IAAIE,GAAQ,EAEZ,IAAK,IAAIpG,EAAIiG,EAASjG,GAAK,EAAGA,IAAK,CACjC,MAAM+F,EAAiB/F,IAAMtI,KAAKgM,KAAKnK,OAAS,EAChD,GAAI7B,KAAKsO,cAAcG,EAASzO,KAAKgM,KAAK1D,GAAI+F,GAAgB,CAC5DE,EAAUjG,EAAI,EACdkG,IACAE,GAAQ,EACR,KACF,CACF,CAEA,IAAKA,EACH,OAAO,CAEX,KAAO,CAEL,MAAML,EAAiBE,IAAYvO,KAAKgM,KAAKnK,OAAS,EACtD,IAAK7B,KAAKsO,cAAcF,EAASpO,KAAKgM,KAAKuC,GAAUF,GACnD,OAAO,EAETE,IACAC,GACF,CACF,CAGA,OAAOA,EAAS,CAClB,CAUAF,aAAAA,CAAcF,EAASlH,EAAMmH,GAE3B,GAAoB,MAAhBD,EAAQvB,KAAeuB,EAAQvB,MAAQ3F,EAAK2F,IAC9C,OAAO,EAIT,QAA0B7E,IAAtBoG,EAAQjC,WAEgB,MAAtBiC,EAAQjC,WAAqBiC,EAAQjC,YAAcjF,EAAKiF,UAC1D,OAAO,EAOX,QAAyBnE,IAArBoG,EAAQzK,SAAwB,CAClC,IAAK0K,EAEH,OAAO,EAGT,IAAKnH,EAAKkF,UAAYgC,EAAQzK,YAAYuD,EAAKkF,QAC7C,OAAO,EAIT,QAA0BpE,IAAtBoG,EAAQO,UAAyB,CACnC,MAAMC,EAAc1H,EAAKkF,OAAOgC,EAAQzK,UAExC,GAAIkL,OAAOD,KAAiBC,OAAOT,EAAQO,WACzC,OAAO,CAEX,CACF,CAGA,QAAyB3G,IAArBoG,EAAQ1B,SAAwB,CAClC,IAAK2B,EAEH,OAAO,EAGT,MAAM5B,EAAUvF,EAAKuF,SAAW,EAEhC,GAAyB,UAArB2B,EAAQ1B,UAAoC,IAAZD,EAClC,OAAO,EACF,GAAyB,QAArB2B,EAAQ1B,UAAsBD,EAAU,GAAM,EACvD,OAAO,EACF,GAAyB,SAArB2B,EAAQ1B,UAAuBD,EAAU,GAAM,EACxD,OAAO,EACF,GAAyB,QAArB2B,EAAQ1B,UACbD,IAAY2B,EAAQU,cACtB,OAAO,CAGb,CAEA,OAAO,CACT,CAMAC,QAAAA,GACE,MAAO,CACL/C,KAAMhM,KAAKgM,KAAK/E,IAAIC,IAAQ,IAAMA,KAClC+E,cAAejM,KAAKiM,cAAchF,IAAIA,GAAO,IAAIqF,IAAIrF,IAEzD,CAMA+H,OAAAA,CAAQD,GACN/O,KAAKgM,KAAO+C,EAAS/C,KAAK/E,IAAIC,IAAQ,IAAMA,KAC5ClH,KAAKiM,cAAgB8C,EAAS9C,cAAchF,IAAIA,GAAO,IAAIqF,IAAIrF,GACjE,CAuBAgI,QAAAA,GAGE,OAAO,IAAIC,MAFElP,KAEU,CACrBQ,GAAAA,CAAI2O,EAAQzO,EAAM0O,GAEhB,GAAIzD,EAAiB0D,IAAI3O,GACvB,MAAO,KACL,MAAM,IAAI4O,UACR,gBAAgB5O,2EAMtB,MAAMM,EAAQuO,QAAQ/O,IAAI2O,EAAQzO,EAAM0O,GAIxC,MAAa,SAAT1O,GAA4B,kBAATA,EACdL,OAAOmP,OACZxI,MAAMlD,QAAQ9C,GACVA,EAAMiG,IAAIwI,GACVA,aAAgBnD,IACZjM,OAAOmP,OAAO,IAAIlD,IAAImD,IACtBpP,OAAOmP,OAAO,IAAKC,KAEvBzO,GAKa,mBAAVA,EACFA,EAAM0O,KAAKP,GAGbnO,CACT,EAGA4L,GAAAA,CAAI+C,EAASjP,GACX,MAAM,IAAI4O,UACR,wBAAwBT,OAAOnO,8BAEnC,EAGAkP,cAAAA,CAAeD,EAASjP,GACtB,MAAM,IAAI4O,UACR,2BAA2BT,OAAOnO,gCAEtC,GAEJ,ECtea,MAAMmP,EAOnB/D,WAAAA,CAAYgE,EAASpJ,EAAU,CAAC,GAC9B1G,KAAK8P,QAAUA,EACf9P,KAAK+L,UAAYrF,EAAQqF,WAAa,IACtC/L,KAAKgO,SAAWhO,KAAK+P,OAAOD,GAG5B9P,KAAKgQ,iBAAmBhQ,KAAKgO,SAAS7I,KAAK8K,GAAoB,kBAAbA,EAAI7F,MACtDpK,KAAKkQ,uBAAyBlQ,KAAKgO,SAAS7I,KAAK8K,QAAwBjI,IAAjBiI,EAAItM,UAC5D3D,KAAKmQ,qBAAuBnQ,KAAKgO,SAAS7I,KAAK8K,QAAwBjI,IAAjBiI,EAAIvD,SAC5D,CAQAqD,MAAAA,CAAOD,GACL,MAAM9B,EAAW,GAGjB,IAAI1F,EAAI,EACJ8H,EAAc,GAElB,KAAO9H,EAAIwH,EAAQjO,QACbiO,EAAQxH,KAAOtI,KAAK+L,UAElBzD,EAAI,EAAIwH,EAAQjO,QAAUiO,EAAQxH,EAAI,KAAOtI,KAAK+L,WAEhDqE,EAAY3F,SACduD,EAAShM,KAAKhC,KAAKqQ,cAAcD,EAAY3F,SAC7C2F,EAAc,IAGhBpC,EAAShM,KAAK,CAAEoI,KAAM,kBACtB9B,GAAK,IAGD8H,EAAY3F,QACduD,EAAShM,KAAKhC,KAAKqQ,cAAcD,EAAY3F,SAE/C2F,EAAc,GACd9H,MAGF8H,GAAeN,EAAQxH,GACvBA,KASJ,OAJI8H,EAAY3F,QACduD,EAAShM,KAAKhC,KAAKqQ,cAAcD,EAAY3F,SAGxCuD,CACT,CAQAqC,aAAAA,CAAcC,GACZ,MAAMlC,EAAU,CAAEhE,KAAM,OAwBxB,IAAImG,EAAiB,KACjBC,EAAkBF,EAEtB,MAAMG,EAAeH,EAAK9O,MAAM,8BAChC,GAAIiP,IACFD,EAAkBC,EAAa,GAAKA,EAAa,GAC7CA,EAAa,IAAI,CACnB,MAAMC,EAAUD,EAAa,GAAGE,MAAM,GAAI,GACtCD,IACFH,EAAiBG,EAErB,CAIF,IAAIvE,EAcAU,EAbA+D,EAAiBJ,EAErB,GAAIA,EAAgBlO,SAAS,MAAO,CAClC,MAAMuO,EAAUL,EAAgBxH,QAAQ,MAIxC,GAHAmD,EAAYqE,EAAgBpJ,UAAU,EAAGyJ,GAASpG,OAClDmG,EAAiBJ,EAAgBpJ,UAAUyJ,EAAU,GAAGpG,QAEnD0B,EACH,MAAM,IAAI9G,MAAM,iCAAiCiL,IAErD,CAIA,IAAIQ,EAAgB,KAEpB,GAAIF,EAAetO,SAAS,KAAM,CAChC,MAAMyO,EAAaH,EAAeI,YAAY,KACxCC,EAAUL,EAAexJ,UAAU,EAAG2J,GAAYtG,OAClDyG,EAAUN,EAAexJ,UAAU2J,EAAa,GAAGtG,OAG/B,CAAC,QAAS,OAAQ,MAAO,QAAQnI,SAAS4O,IAClE,eAAe3H,KAAK2H,IAGpBrE,EAAMoE,EACNH,EAAgBI,GAGhBrE,EAAM+D,CAEV,MACE/D,EAAM+D,EAGR,IAAK/D,EACH,MAAM,IAAIxH,MAAM,4BAA4BiL,KAS9C,GANAlC,EAAQvB,IAAMA,EACVV,IACFiC,EAAQjC,UAAYA,GAIlBoE,EACF,GAAIA,EAAejO,SAAS,KAAM,CAChC,MAAM6O,EAAUZ,EAAevH,QAAQ,KACvCoF,EAAQzK,SAAW4M,EAAenJ,UAAU,EAAG+J,GAAS1G,OACxD2D,EAAQO,UAAY4B,EAAenJ,UAAU+J,EAAU,GAAG1G,MAC5D,MACE2D,EAAQzK,SAAW4M,EAAe9F,OAKtC,GAAIqG,EAAe,CACjB,MAAMM,EAAWN,EAActP,MAAM,kBACjC4P,GACFhD,EAAQ1B,SAAW,MACnB0B,EAAQU,cAAgBuC,SAASD,EAAS,GAAI,KAE9ChD,EAAQ1B,SAAWoE,CAEvB,CAEA,OAAO1C,CACT,CAMA,UAAIvM,GACF,OAAO7B,KAAKgO,SAASnM,MACvB,CAMAoM,eAAAA,GACE,OAAOjO,KAAKgQ,gBACd,CAMAsB,qBAAAA,GACE,OAAOtR,KAAKkQ,sBACd,CAMAqB,mBAAAA,GACE,OAAOvR,KAAKmQ,oBACd,CAMA1C,QAAAA,GACE,OAAOzN,KAAK8P,OACd,EC7MF,SAAS0B,EAAqBC,EAAe/K,GAC3C,IAAK+K,EAAe,MAAO,CAAC,EAG5B,IAAMhN,EAAQiC,EAAQhE,oBAClB+O,EAAc/K,EAAQhE,qBACtB+O,EAEJ,IAAKhN,EAAO,MAAO,CAAC,EAEpB,IAAMiN,EAAW,CAAC,EAClB,IAAK,IAAMvR,KAAOsE,EAEZtE,EAAIgH,WAAWT,EAAQjE,qBAEzBiP,EADgBvR,EAAIiH,UAAUV,EAAQjE,oBAAoBZ,SACtC4C,EAAMtE,GAG1BuR,EAASvR,GAAOsE,EAAMtE,GAG1B,OAAOuR,CACT,CAOA,SAASC,EAAiBC,GACxB,GAAKA,GAAoC,iBAAfA,EAA1B,CAEA,IAAMb,EAAaa,EAAW5I,QAAQ,KACtC,IAAoB,IAAhB+H,GAAqBA,EAAa,EAAG,CACvC,IAAMc,EAAKD,EAAWxK,UAAU,EAAG2J,GAEnC,GAAW,UAAPc,EACF,OAAOA,CAEX,CATmE,CAWrE,CAAC,IAEoBC,EACnB,SAAYpL,GCrEC,IAA+B9D,ED2H1C,GArDA5C,KAAK0G,QAAUA,EACf1G,KAAK+R,YAAc,KACnB/R,KAAKgS,cAAgB,GACrBhS,KAAKiS,gBAAkB,CAAC,EACxBjS,KAAKkS,aAAe,CAClB,KAAQ,CAAE5Q,MAAO,qBAAsBmC,IAAK,KAC5C,GAAM,CAAEnC,MAAO,mBAAoBmC,IAAK,KACxC,GAAM,CAAEnC,MAAO,mBAAoBmC,IAAK,KACxC,KAAQ,CAAEnC,MAAO,qBAAsBmC,IAAK,MAE9CzD,KAAKmS,UAAY,CAAE7Q,MAAO,oBAAqBmC,IAAK,KACpDzD,KAAKkE,aAAe,CAClB,MAAS,CAAE5C,MAAO,iBAAkBmC,IAAK,KAMzC,KAAQ,CAAEnC,MAAO,iBAAkBmC,IAAK,KACxC,MAAS,CAAEnC,MAAO,kBAAmBmC,IAAK,KAC1C,IAAO,CAAEnC,MAAO,gBAAiBmC,IAAK,KACtC,KAAQ,CAAEnC,MAAO,kBAAmBmC,IAAK,KACzC,UAAa,CAAEnC,MAAO,iBAAkBmC,IAAK,KAC7C,IAAO,CAAEnC,MAAO,gBAAiBmC,IAAK,KACtC,IAAO,CAAEnC,MAAO,iBAAkBmC,IAAK,KACvC,QAAW,CAAEnC,MAAO,mBAAoBmC,IAAK,SAAC2O,EAAGC,GAAG,OAAKC,EAAcD,EAAK,GAAI,KAAK,GACrF,QAAW,CAAE/Q,MAAO,0BAA2BmC,IAAK,SAAC2O,EAAGC,GAAG,OAAKC,EAAcD,EAAK,GAAI,MAAM,IAE/FrS,KAAKuS,oBAAsBA,EAC3BvS,KAAKwS,SAAWA,EAChBxS,KAAKyS,cAAgBA,EACrBzS,KAAK0S,iBAAmBA,EACxB1S,KAAK2S,mBAAqBA,EAC1B3S,KAAK4S,aAAeA,EACpB5S,KAAK6S,qBAAuBA,EAC5B7S,KAAK8S,iBAAmBA,EACxB9S,KAAK+S,oBAAsBA,EAC3B/S,KAAK4H,SAAWA,EAChB5H,KAAKgT,mBC3G2B,mBADUpQ,ED4GM5C,KAAK0G,QAAQ9D,kBC1GlDA,EAEPoE,MAAMlD,QAAQlB,GACP,SAACe,GACJ,QAAsCsP,EAAtCC,E,4rBAAAC,CAAsBvQ,KAAgBqQ,EAAAC,KAAAE,MAAE,CAAC,IAA9BtD,EAAOmD,EAAAjS,MACd,GAAuB,iBAAZ8O,GAAwBnM,IAAamM,EAC5C,OAAO,EAEX,GAAIA,aAAmB3O,QAAU2O,EAAQvG,KAAK5F,GAC1C,OAAO,CAEf,CACJ,EAEG,kBAAM,CAAK,ED6FlB3D,KAAKqT,qBAAuB,EAC5BrT,KAAKsT,sBAAwB,EAG7BtT,KAAKuT,QAAU,IAAI1H,EAInB7L,KAAKwT,gBAAkBxT,KAAKuT,QAAQtE,WAGpCjP,KAAKyT,uBAAwB,EAGzBzT,KAAK0G,QAAQ9C,WAAa5D,KAAK0G,QAAQ9C,UAAU/B,OAAS,EAAG,CAC/D7B,KAAK0T,oBAAsB,GAC3B,IAAK,IAAIpL,EAAI,EAAGA,EAAItI,KAAK0G,QAAQ9C,UAAU/B,OAAQyG,IAAK,CACtD,IAAMqL,EAAc3T,KAAK0G,QAAQ9C,UAAU0E,GAChB,iBAAhBqL,EAET3T,KAAK0T,oBAAoB1R,KAAK,IAAI6N,EAAW8D,IACpCA,aAAuB9D,GAEhC7P,KAAK0T,oBAAoB1R,KAAK2R,EAElC,CACF,CACF,EAIF,SAASpB,EAAoBqB,GAE3B,IADA,IAAMC,EAAUxT,OAAO0H,KAAK6L,GACnBtL,EAAI,EAAGA,EAAIuL,EAAQhS,OAAQyG,IAAK,CACvC,IAAMwL,EAAMD,EAAQvL,GACdW,EAAU6K,EAAI5K,QAAQ,YAAa,OACzClJ,KAAKkS,aAAa4B,GAAO,CACvBxS,MAAO,IAAIH,OAAO,IAAM8H,EAAU,IAAK,KACvCxF,IAAKmQ,EAAiBE,GAE1B,CACF,CAWA,SAASrB,EAAchP,EAAKD,EAASgB,EAAOuP,EAAUC,EAAeC,EAAYC,GAC/E,QAAYlM,IAARvE,IACEzD,KAAK0G,QAAQzD,aAAe8Q,IAC9BtQ,EAAMA,EAAIgH,QAERhH,EAAI5B,OAAS,GAAG,CACbqS,IAAgBzQ,EAAMzD,KAAK6S,qBAAqBpP,EAAKD,EAASgB,IAGnE,IAAM2P,EAAiBnU,KAAK0G,QAAQlC,MAAQA,EAAMiJ,WAAajJ,EACzD4P,EAASpU,KAAK0G,QAAQnD,kBAAkBC,EAASC,EAAK0Q,EAAgBH,EAAeC,GAC3F,OAAIG,QAEK3Q,SACS2Q,UAAkB3Q,GAAO2Q,IAAW3Q,EAE7C2Q,EACEpU,KAAK0G,QAAQzD,YAGHQ,EAAIgH,SACJhH,EAHZ4Q,EAAW5Q,EAAKzD,KAAK0G,QAAQ3D,cAAe/C,KAAK0G,QAAQvD,oBAMvDM,CAGb,CAEJ,CAEA,SAASiP,EAAiBpL,GACxB,GAAItH,KAAK0G,QAAQ7D,eAAgB,CAC/B,IAAMyR,EAAOhN,EAAQiN,MAAM,KACrBC,EAA+B,MAAtBlN,EAAQmN,OAAO,GAAa,IAAM,GACjD,GAAgB,UAAZH,EAAK,GACP,MAAO,GAEW,IAAhBA,EAAKzS,SACPyF,EAAUkN,EAASF,EAAK,GAE5B,CACA,OAAOhN,CACT,CAIA,IAAMoN,EAAY,IAAIvT,OAAO,+CAAgD,MAE7E,SAASwR,EAAmBgC,EAASnQ,EAAOhB,GAC1C,IAAsC,IAAlCxD,KAAK0G,QAAQ9D,kBAAgD,iBAAZ+R,EAAsB,CAWzE,IAPA,IAAMpT,EAAUH,EAAcuT,EAASD,GACjC5S,EAAMP,EAAQM,OACd4C,EAAQ,CAAC,EAITmQ,EAAqB,CAAC,EACnBtM,EAAI,EAAGA,EAAIxG,EAAKwG,IAAK,CAC5B,IAAM3E,EAAW3D,KAAK0S,iBAAiBnR,EAAQ+G,GAAG,IAC5CuM,EAAStT,EAAQ+G,GAAG,GAE1B,GAAI3E,EAAS9B,aAAqBmG,IAAX6M,EAAsB,CAC3C,IAAIC,EAAYD,EACZ7U,KAAK0G,QAAQzD,aACf6R,EAAYA,EAAUrK,QAExBqK,EAAY9U,KAAK6S,qBAAqBiC,EAAWtR,EAASxD,KAAKwT,iBAC/DoB,EAAmBjR,GAAYmR,CACjC,CACF,CAGIzU,OAAO0H,KAAK6M,GAAoB/S,OAAS,GAAsB,iBAAV2C,GAAsBA,EAAMuI,eACnFvI,EAAMuI,cAAc6H,GAItB,IAAK,IAAItM,EAAI,EAAGA,EAAIxG,EAAKwG,IAAK,CAC5B,IAAM3E,EAAW3D,KAAK0S,iBAAiBnR,EAAQ+G,GAAG,IAG5CyM,EAAW/U,KAAK0G,QAAQlC,MAAQA,EAAMiJ,WAAazN,KAAKwT,gBAC9D,IAAIxT,KAAKgT,mBAAmBrP,EAAUoR,GAAtC,CAIA,IAAIF,EAAStT,EAAQ+G,GAAG,GACpB0M,EAAQhV,KAAK0G,QAAQjE,oBAAsBkB,EAE/C,GAAIA,EAAS9B,OAOX,GANI7B,KAAK0G,QAAQpC,yBACf0Q,EAAQhV,KAAK0G,QAAQpC,uBAAuB0Q,IAG9CA,EAAQC,EAAaD,EAAOhV,KAAK0G,cAElBsB,IAAX6M,EAAsB,CACpB7U,KAAK0G,QAAQzD,aACf4R,EAASA,EAAOpK,QAElBoK,EAAS7U,KAAK6S,qBAAqBgC,EAAQrR,EAASxD,KAAKwT,iBAGzD,IAAMW,EAAiBnU,KAAK0G,QAAQlC,MAAQA,EAAMiJ,WAAazN,KAAKwT,gBAC9D0B,EAASlV,KAAK0G,QAAQhD,wBAAwBC,EAAUkR,EAAQV,GAGpE1P,EAAMuQ,GAFJE,QAEaL,SACCK,UAAkBL,GAAUK,IAAWL,EAExCK,EAGAb,EACbQ,EACA7U,KAAK0G,QAAQ1D,oBACbhD,KAAK0G,QAAQvD,mBAGnB,MAAWnD,KAAK0G,QAAQ5D,yBACtB2B,EAAMuQ,IAAS,EApCnB,CAuCF,CAEA,IAAK3U,OAAO0H,KAAKtD,GAAO5C,OACtB,OAEF,GAAI7B,KAAK0G,QAAQhE,oBAAqB,CACpC,IAAMyS,EAAiB,CAAC,EAExB,OADAA,EAAenV,KAAK0G,QAAQhE,qBAAuB+B,EAC5C0Q,CACT,CACA,OAAO1Q,CACT,CACF,CAEA,IAAM+N,EAAW,SAAUnK,GACzBA,EAAUA,EAAQa,QAAQ,SAAU,MACpC,IAAMkM,EAAS,IAAIC,EAAQ,QACvBtD,EAAcqD,EACdE,EAAW,GAGftV,KAAKuT,QAAQzF,QAGb9N,KAAKqT,qBAAuB,EAC5BrT,KAAKsT,sBAAwB,EAG7B,IADA,IAAMiC,EAAgB,IAAIrN,EAAclI,KAAK0G,QAAQzC,iBAC5CqE,EAAI,EAAGA,EAAID,EAAQxG,OAAQyG,IAElC,GAAW,MADAD,EAAQC,GAIjB,GAAuB,MAAnBD,EAAQC,EAAI,GAAY,CAC1B,IAAMkN,EAAaC,EAAiBpN,EAAS,IAAKC,EAAG,8BACjD9E,EAAU6E,EAAQjB,UAAUkB,EAAI,EAAGkN,GAAY/K,OAEnD,GAAIzK,KAAK0G,QAAQ7D,eAAgB,CAC/B,IAAMkO,EAAavN,EAAQwF,QAAQ,MACf,IAAhB+H,IACFvN,EAAUA,EAAQkS,OAAO3E,EAAa,GAE1C,CAEAvN,EAAUa,EAAiBrE,KAAK0G,QAAQrC,iBAAkBb,EAAS,GAAIxD,KAAK0G,SAASlD,QAEjFuO,IACFuD,EAAWtV,KAAK+S,oBAAoBuC,EAAUvD,EAAa/R,KAAKwT,kBAIlE,IAAMmC,EAAc3V,KAAKuT,QAAQtG,gBACjC,GAAIzJ,IAA2D,IAAhDxD,KAAK0G,QAAQ1C,aAAagF,QAAQxF,GAC/C,MAAM,IAAI6B,MAAM,kDAAkD7B,EAAO,KAEvEmS,IAAmE,IAApD3V,KAAK0G,QAAQ1C,aAAagF,QAAQ2M,KAEnD3V,KAAKuT,QAAQzG,MACb9M,KAAKgS,cAAclF,OAGrB9M,KAAKuT,QAAQzG,MACb9M,KAAKyT,uBAAwB,EAE7B1B,EAAc/R,KAAKgS,cAAclF,MACjCwI,EAAW,GACXhN,EAAIkN,CACN,MAAO,GAAuB,MAAnBnN,EAAQC,EAAI,GAAY,CAEjC,IAAIsN,EAAUC,EAAWxN,EAASC,GAAG,EAAO,MAC5C,IAAKsN,EAAS,MAAM,IAAIvQ,MAAM,yBAG9B,GADAiQ,EAAWtV,KAAK+S,oBAAoBuC,EAAUvD,EAAa/R,KAAKwT,iBAC3DxT,KAAK0G,QAAQvC,mBAAyC,SAApByR,EAAQpS,SAAuBxD,KAAK0G,QAAQtC,kBAE5E,CAEL,IAAM0R,EAAY,IAAIT,EAAQO,EAAQpS,SACtCsS,EAAUpO,IAAI1H,KAAK0G,QAAQ/D,aAAc,IAErCiT,EAAQpS,UAAYoS,EAAQG,QAAUH,EAAQI,iBAChDF,EAAU,MAAQ9V,KAAK2S,mBAAmBiD,EAAQG,OAAQ/V,KAAKuT,QAASqC,EAAQpS,UAElFxD,KAAK4H,SAASmK,EAAa+D,EAAW9V,KAAKwT,gBAAiBlL,EAC9D,CAGAA,EAAIsN,EAAQJ,WAAa,CAC3B,MAAO,GAAiC,QAA7BnN,EAAQqN,OAAOpN,EAAI,EAAG,GAAc,CAC7C,IAAM2N,EAAWR,EAAiBpN,EAAS,SAAOC,EAAI,EAAG,0BACzD,GAAItI,KAAK0G,QAAQ3C,gBAAiB,CAAC,IAADmS,EAC1BvN,EAAUN,EAAQjB,UAAUkB,EAAI,EAAG2N,EAAW,GAEpDX,EAAWtV,KAAK+S,oBAAoBuC,EAAUvD,EAAa/R,KAAKwT,iBAEhEzB,EAAYrK,IAAI1H,KAAK0G,QAAQ3C,gBAAiB,EAAAmS,EAAA,GAAAA,EAAIlW,KAAK0G,QAAQ/D,cAAegG,EAAOuN,IACvF,CACA5N,EAAI2N,CACN,MAAO,GAAiC,OAA7B5N,EAAQqN,OAAOpN,EAAI,EAAG,GAAa,CAC5C,IAAM6N,EAASZ,EAAcnN,YAAYC,EAASC,GAClDtI,KAAKiS,gBAAkBkE,EAAO5N,SAC9BD,EAAI6N,EAAO7N,CACb,MAAO,GAAiC,OAA7BD,EAAQqN,OAAOpN,EAAI,EAAG,GAAa,CAC5C,IAAMkN,EAAaC,EAAiBpN,EAAS,MAAOC,EAAG,wBAA0B,EAC3EyN,EAAS1N,EAAQjB,UAAUkB,EAAI,EAAGkN,GAExCF,EAAWtV,KAAK+S,oBAAoBuC,EAAUvD,EAAa/R,KAAKwT,iBAEhE,IAIgC4C,EAJ5B3S,EAAMzD,KAAKyS,cAAcsD,EAAQhE,EAAYzK,QAAStH,KAAKwT,iBAAiB,GAAM,GAAO,GAAM,GACxFxL,MAAPvE,IAAkBA,EAAM,IAGxBzD,KAAK0G,QAAQxD,cACf6O,EAAYrK,IAAI1H,KAAK0G,QAAQxD,cAAe,EAAAkT,EAAA,GAAAA,EAAIpW,KAAK0G,QAAQ/D,cAAeoT,EAAMK,KAElFrE,EAAYrK,IAAI1H,KAAK0G,QAAQ/D,aAAcc,GAG7C6E,EAAIkN,EAAa,CACnB,KAAO,CACL,IAAIW,EAASN,EAAWxN,EAASC,EAAGtI,KAAK0G,QAAQ7D,gBAGjD,IAAKsT,EAAQ,CAEX,IAAME,EAAUhO,EAAQjB,UAAUrB,KAAKC,IAAI,EAAGsC,EAAI,IAAKvC,KAAKuQ,IAAIjO,EAAQxG,OAAQyG,EAAI,KACpF,MAAM,IAAIjD,MAAM,6CAA6CiD,EAAC,eAAe+N,EAAO,IACtF,CAEA,IAAI7S,EAAU2S,EAAO3S,QACfoO,EAAauE,EAAOvE,WACtBmE,EAASI,EAAOJ,OAChBC,EAAiBG,EAAOH,eACxBR,EAAaW,EAAOX,WAAWe,EAEZlS,EAAiBrE,KAAK0G,QAAQrC,iBAAkBb,EAASuS,EAAQ/V,KAAK0G,SAE7F,GAFGlD,EAAO+S,EAAP/S,QAASuS,EAAMQ,EAANR,OAER/V,KAAK0G,QAAQ9B,sBACdpB,IAAYxD,KAAK0G,QAAQ3C,iBACrBP,IAAYxD,KAAK0G,QAAQxD,eACzBM,IAAYxD,KAAK0G,QAAQ/D,cACzBa,IAAYxD,KAAK0G,QAAQhE,qBAE9B,MAAM,IAAI2C,MAAM,qBAAqB7B,GAInCuO,GAAeuD,GACW,SAAxBvD,EAAYzK,UAEdgO,EAAWtV,KAAK+S,oBAAoBuC,EAAUvD,EAAa/R,KAAKwT,iBAAiB,IAKrF,IAAMgD,EAAUzE,EACZyE,IAAmE,IAAxDxW,KAAK0G,QAAQ1C,aAAagF,QAAQwN,EAAQlP,WACvDyK,EAAc/R,KAAKgS,cAAclF,MACjC9M,KAAKuT,QAAQzG,OAKf,IAAI2J,GAAgB,EAChBV,EAAOlU,OAAS,GAAKkU,EAAO/E,YAAY,OAAS+E,EAAOlU,OAAS,IACnE4U,GAAgB,EAGdV,EAFkC,MAAhCvS,EAAQA,EAAQ3B,OAAS,GAC3B2B,EAAUA,EAAQkS,OAAO,EAAGlS,EAAQ3B,OAAS,GAGpCkU,EAAOL,OAAO,EAAGK,EAAOlU,OAAS,GAI5CmU,EAAkBxS,IAAYuS,GAIhC,IAEI5J,EAFAsF,EAAgB,KAKpBtF,EAAYwF,EAAiBC,GAGzBpO,IAAY4R,EAAO9N,SACrBtH,KAAKuT,QAAQvR,KAAKwB,EAAS,CAAC,EAAG2I,GAI7B3I,IAAYuS,GAAUC,IAGxBvE,EAAgBzR,KAAK2S,mBAAmBoD,EAAQ/V,KAAKuT,QAAS/P,KAIjDgO,EAAqBC,EAAezR,KAAK0G,SAKpDlD,IAAY4R,EAAO9N,UACrBtH,KAAKyT,sBAAwBzT,KAAK4S,aAAa5S,KAAK0T,oBAAqB1T,KAAKuT,UAGhF,IAAM5R,EAAa2G,EACnB,GAAItI,KAAKyT,sBAAuB,CAC9B,IAAIiD,EAAa,GAGjB,GAAID,EACFnO,EAAI6N,EAAOX,gBAGR,IAAoD,IAAhDxV,KAAK0G,QAAQ1C,aAAagF,QAAQxF,GACzC8E,EAAI6N,EAAOX,eAGR,CAEH,IAAMW,EAASnW,KAAK8S,iBAAiBzK,EAASuJ,EAAY4D,EAAa,GACvE,IAAKW,EAAQ,MAAM,IAAI9Q,MAAM,qBAAqBuM,GAClDtJ,EAAI6N,EAAO7N,EACXoO,EAAaP,EAAOO,UACtB,CAEA,IAAMZ,EAAY,IAAIT,EAAQ7R,GAE1BiO,IACFqE,EAAU,MAAQrE,GAIpBqE,EAAUpO,IAAI1H,KAAK0G,QAAQ/D,aAAc+T,GAEzC1W,KAAKuT,QAAQzG,MACb9M,KAAKyT,uBAAwB,EAE7BzT,KAAK4H,SAASmK,EAAa+D,EAAW9V,KAAKwT,gBAAiB7R,EAC9D,KAAO,CAEL,GAAI8U,EAAe,CAAC,IAADE,EACMtS,EAAiBrE,KAAK0G,QAAQrC,iBAAkBb,EAASuS,EAAQ/V,KAAK0G,SAA1FlD,EAAOmT,EAAPnT,QAASuS,EAAMY,EAANZ,OAEZ,IAAMD,EAAY,IAAIT,EAAQ7R,GAC1BiO,IACFqE,EAAU,MAAQrE,GAEpBzR,KAAK4H,SAASmK,EAAa+D,EAAW9V,KAAKwT,gBAAiB7R,GAC5D3B,KAAKuT,QAAQzG,MACb9M,KAAKyT,uBAAwB,CAC/B,KACK,KAAoD,IAAhDzT,KAAK0G,QAAQ1C,aAAagF,QAAQxF,GAAiB,CAC1D,IAAMsS,EAAY,IAAIT,EAAQ7R,GAC1BiO,IACFqE,EAAU,MAAQrE,GAEpBzR,KAAK4H,SAASmK,EAAa+D,EAAW9V,KAAKwT,gBAAiB7R,GAC5D3B,KAAKuT,QAAQzG,MACb9M,KAAKyT,uBAAwB,EAC7BnL,EAAI6N,EAAOX,WAEX,QACF,CAGE,IAAMM,EAAY,IAAIT,EAAQ7R,GAC9B,GAAIxD,KAAKgS,cAAcnQ,OAAS7B,KAAK0G,QAAQ/B,cAC3C,MAAM,IAAIU,MAAM,gCAElBrF,KAAKgS,cAAchQ,KAAK+P,GAEpBN,IACFqE,EAAU,MAAQrE,GAEpBzR,KAAK4H,SAASmK,EAAa+D,EAAW9V,KAAKwT,gBAAiB7R,GAC5DoQ,EAAc+D,CAChB,CACAR,EAAW,GACXhN,EAAIkN,CACN,CACF,MAEAF,GAAYjN,EAAQC,GAGxB,OAAO8M,EAAO7N,KAChB,EAEA,SAASK,EAASmK,EAAa+D,EAAWvC,EAAS5R,GAE5C3B,KAAK0G,QAAQhC,kBAAiB/C,OAAaqG,GAGhD,IAAMmM,EAAiBnU,KAAK0G,QAAQlC,MAAQ+O,EAAQ9F,WAAa8F,EAC3D4C,EAASnW,KAAK0G,QAAQnC,UAAUuR,EAAUxO,QAAS6M,EAAgB2B,EAAU,QACpE,IAAXK,IAEyB,iBAAXA,GAChBL,EAAUxO,QAAU6O,EACpBpE,EAAYnK,SAASkO,EAAWnU,IAEhCoQ,EAAYnK,SAASkO,EAAWnU,GAEpC,CAOA,SAASkR,EAAqBpP,EAAKD,EAASgB,GAC1C,IAAMoS,EAAe5W,KAAK0G,QAAQzC,gBAElC,IAAK2S,IAAiBA,EAAarR,QACjC,OAAO9B,EAIT,GAAImT,EAAa/Q,YAAa,CAC5B,IAAMsO,EAAiBnU,KAAK0G,QAAQlC,MAAQA,EAAMiJ,WAAajJ,EAK/D,KAJgBwC,MAAMlD,QAAQ8S,EAAa/Q,aACvC+Q,EAAa/Q,YAAYvD,SAASkB,GAClCoT,EAAa/Q,YAAYrC,EAAS2Q,IAGpC,OAAO1Q,CAEX,CAGA,GAAImT,EAAa9Q,UAAW,CAC1B,IAAMqO,EAAiBnU,KAAK0G,QAAQlC,MAAQA,EAAMiJ,WAAajJ,EAC/D,IAAKoS,EAAa9Q,UAAUtC,EAAS2Q,GACnC,OAAO1Q,CAEX,CAGA,QAAAoT,EAAA,EAAAC,EAAyBzW,OAAO0H,KAAK/H,KAAKiS,iBAAgB4E,EAAAC,EAAAjV,OAAAgV,IAAE,CAAvD,IAAMhO,EAAUiO,EAAAD,GACbE,EAAS/W,KAAKiS,gBAAgBpJ,GAC9BtH,EAAUkC,EAAIjC,MAAMuV,EAAO5N,MAEjC,GAAI5H,EAAS,CAKX,GAHAvB,KAAKqT,sBAAwB9R,EAAQM,OAGjC+U,EAAalR,oBACf1F,KAAKqT,qBAAuBuD,EAAalR,mBACzC,MAAM,IAAIL,MAAM,oCACsBrF,KAAKqT,qBAAoB,MAAMuD,EAAalR,oBAKpF,IAAMsR,EAAevT,EAAI5B,OAIzB,GAHA4B,EAAMA,EAAIyF,QAAQ6N,EAAO5N,KAAM4N,EAAOtT,KAGlCmT,EAAajR,oBACf3F,KAAKsT,uBAA0B7P,EAAI5B,OAASmV,EAExChX,KAAKsT,sBAAwBsD,EAAajR,mBAC5C,MAAM,IAAIN,MAAM,yCAC2BrF,KAAKsT,sBAAqB,MAAMsD,EAAajR,kBAI9F,CACF,CAEA,QAAAsR,EAAA,EAAAC,EAAyB7W,OAAO0H,KAAK/H,KAAKkS,cAAa+E,EAAAC,EAAArV,OAAAoV,IAAE,CAApD,IAAMpO,EAAUqO,EAAAD,GACbF,EAAS/W,KAAKkS,aAAarJ,GAC3BtH,EAAUkC,EAAIjC,MAAMuV,EAAOzV,OACjC,GAAIC,IACFvB,KAAKqT,sBAAwB9R,EAAQM,OACjC+U,EAAalR,oBACf1F,KAAKqT,qBAAuBuD,EAAalR,oBACzC,MAAM,IAAIL,MAAM,oCACsBrF,KAAKqT,qBAAoB,MAAMuD,EAAalR,oBAItFjC,EAAMA,EAAIyF,QAAQ6N,EAAOzV,MAAOyV,EAAOtT,IACzC,CACA,IAA0B,IAAtBA,EAAIuF,QAAQ,KAAa,OAAOvF,EAGpC,GAAIzD,KAAK0G,QAAQxC,aACf,QAAAiT,EAAA,EAAAC,EAAyB/W,OAAO0H,KAAK/H,KAAKkE,cAAaiT,EAAAC,EAAAvV,OAAAsV,IAAE,CAApD,IAAMtO,EAAUuO,EAAAD,GACbJ,EAAS/W,KAAKkE,aAAa2E,GAC3BtH,EAAUkC,EAAIjC,MAAMuV,EAAOzV,OACjC,GAAIC,IAEFvB,KAAKqT,sBAAwB9R,EAAQM,OACjC+U,EAAalR,oBACf1F,KAAKqT,qBAAuBuD,EAAalR,oBACzC,MAAM,IAAIL,MAAM,oCACsBrF,KAAKqT,qBAAoB,MAAMuD,EAAalR,oBAItFjC,EAAMA,EAAIyF,QAAQ6N,EAAOzV,MAAOyV,EAAOtT,IACzC,CAMF,OAFMA,EAAIyF,QAAQlJ,KAAKmS,UAAU7Q,MAAOtB,KAAKmS,UAAU1O,IAGzD,CAGA,SAASsP,EAAoBuC,EAAU+B,EAAY9D,EAASU,GAe1D,OAdIqB,SACiBtN,IAAfiM,IAA0BA,EAAyC,IAA5BoD,EAAW9P,MAAM1F,aAS3CmG,KAPjBsN,EAAWtV,KAAKyS,cAAc6C,EAC5B+B,EAAW/P,QACXiM,GACA,IACA8D,EAAW,OAAiD,IAAzChX,OAAO0H,KAAKsP,EAAW,OAAOxV,OACjDoS,KAEyC,KAAbqB,GAC5B+B,EAAW3P,IAAI1H,KAAK0G,QAAQ/D,aAAc2S,GAC5CA,EAAW,IAENA,CACT,CAOA,SAAS1C,EAAac,EAAqBH,GACzC,IAAKG,GAAsD,IAA/BA,EAAoB7R,OAAc,OAAO,EAErE,IAAK,IAAIyG,EAAI,EAAGA,EAAIoL,EAAoB7R,OAAQyG,IAC9C,GAAIiL,EAAQhS,QAAQmS,EAAoBpL,IACtC,OAAO,EAGX,OAAO,CACT,CAsCA,SAASmN,EAAiBpN,EAASgK,EAAK/J,EAAGgP,GACzC,IAAMC,EAAelP,EAAQW,QAAQqJ,EAAK/J,GAC1C,IAAsB,IAAlBiP,EACF,MAAM,IAAIlS,MAAMiS,GAEhB,OAAOC,EAAelF,EAAIxQ,OAAS,CAEvC,CAEA,SAASgU,EAAWxN,EAASC,EAAGzF,EAAgB2U,QAAW,IAAXA,IAAAA,EAAc,KAC5D,IAAMrB,EAxCR,SAAgC9N,EAASC,EAAGkP,GAC1C,IAAIC,OADiD,IAAXD,IAAAA,EAAc,KAGxD,IADA,IAAIzB,EAAS,GACJhU,EAAQuG,EAAGvG,EAAQsG,EAAQxG,OAAQE,IAAS,CACnD,IAAI2V,EAAKrP,EAAQtG,GACjB,GAAI0V,EACEC,IAAOD,IAAcA,EAAe,SACnC,GAAW,MAAPC,GAAqB,MAAPA,EACvBD,EAAeC,OACV,GAAIA,IAAOF,EAAY,GAAI,CAChC,IAAIA,EAAY,GAQd,MAAO,CACLtM,KAAM6K,EACNhU,MAAOA,GATT,GAAIsG,EAAQtG,EAAQ,KAAOyV,EAAY,GACrC,MAAO,CACLtM,KAAM6K,EACNhU,MAAOA,EASf,KAAkB,OAAP2V,IACTA,EAAK,KAEP3B,GAAU2B,CACZ,CACF,CAYiBC,CAAuBtP,EAASC,EAAI,EAAGkP,GACtD,GAAKrB,EAAL,CACA,IAAIJ,EAASI,EAAOjL,KACdsK,EAAaW,EAAOpU,MACpB6V,EAAiB7B,EAAO8B,OAAO,MACjCrU,EAAUuS,EACVC,GAAiB,GACG,IAApB4B,IACFpU,EAAUuS,EAAO3O,UAAU,EAAGwQ,GAC9B7B,EAASA,EAAO3O,UAAUwQ,EAAiB,GAAGE,aAGhD,IAAMlG,EAAapO,EACnB,GAAIX,EAAgB,CAClB,IAAMkO,EAAavN,EAAQwF,QAAQ,MACf,IAAhB+H,IAEFiF,GADAxS,EAAUA,EAAQkS,OAAO3E,EAAa,MACToF,EAAOjL,KAAKwK,OAAO3E,EAAa,GAEjE,CAEA,MAAO,CACLvN,QAASA,EACTuS,OAAQA,EACRP,WAAYA,EACZQ,eAAgBA,EAChBpE,WAAYA,EAzBK,CA2BrB,CAOA,SAASkB,EAAiBzK,EAAS7E,EAAS8E,GAK1C,IAJA,IAAM3G,EAAa2G,EAEfyP,EAAe,EAEZzP,EAAID,EAAQxG,OAAQyG,IACzB,GAAmB,MAAfD,EAAQC,GACV,GAAuB,MAAnBD,EAAQC,EAAI,GAAY,CAC1B,IAAMkN,EAAaC,EAAiBpN,EAAS,IAAKC,EAAM9E,EAAO,kBAE/D,GADmB6E,EAAQjB,UAAUkB,EAAI,EAAGkN,GAAY/K,SACnCjH,GAEE,MADrBuU,EAEE,MAAO,CACLrB,WAAYrO,EAAQjB,UAAUzF,EAAY2G,GAC1CA,EAAGkN,GAITlN,EAAIkN,CACN,MAAO,GAAuB,MAAnBnN,EAAQC,EAAI,GAErBA,EADmBmN,EAAiBpN,EAAS,KAAMC,EAAI,EAAG,gCAErD,GAAiC,QAA7BD,EAAQqN,OAAOpN,EAAI,EAAG,GAE/BA,EADmBmN,EAAiBpN,EAAS,SAAOC,EAAI,EAAG,gCAEtD,GAAiC,OAA7BD,EAAQqN,OAAOpN,EAAI,EAAG,GAE/BA,EADmBmN,EAAiBpN,EAAS,MAAOC,EAAG,2BAA6B,MAE/E,CACL,IAAMsN,EAAUC,EAAWxN,EAASC,EAAG,KAEnCsN,KACkBA,GAAWA,EAAQpS,WACnBA,GAAyD,MAA9CoS,EAAQG,OAAOH,EAAQG,OAAOlU,OAAS,IACpEkW,IAEFzP,EAAIsN,EAAQJ,WAEhB,CAGN,CAEA,SAASnB,EAAW5Q,EAAKuU,EAAatR,GACpC,GAAIsR,GAA8B,iBAARvU,EAAkB,CAE1C,IAAM2Q,EAAS3Q,EAAIgH,OACnB,MAAe,SAAX2J,GACgB,UAAXA,GHp1BE,SAAkB/B,EAAK3L,EAAU,CAAC,GAE7C,GADAA,EAAUrG,OAAOuG,OAAO,CAAC,EAAG2E,EAAU7E,IACjC2L,GAAsB,iBAARA,EAAkB,OAAOA,EAE5C,IAAI4F,EAAa5F,EAAI5H,OAErB,QAAyBzC,IAArBtB,EAAQwR,UAA0BxR,EAAQwR,SAAS3O,KAAK0O,GAAa,OAAO5F,EAC3E,GAAY,MAARA,EAAa,OAAO,EACxB,GAAI3L,EAAQtD,KAAOiI,EAAS9B,KAAK0O,GAClC,OAyGR,SAAmBE,GAEf,GAAI9G,SAAU,OAAOA,SAAS8G,EA3GG,IA4G5B,GAAIC,OAAO/G,SAAU,OAAO+G,OAAO/G,SAAS8G,EA5GhB,IA6G5B,GAAIE,QAAUA,OAAOhH,SAAU,OAAOgH,OAAOhH,SAAS8G,EA7G1B,IA8G5B,MAAM,IAAI9S,MAAM,+DACzB,CA/GeiT,CAAUL,GAGd,GAAKM,SAASN,GAEd,IAAIA,EAAW3V,SAAS,MAAQ2V,EAAW3V,SAAS,KACvD,OAqDR,SAA0B+P,EAAK4F,EAAYvR,GACvC,IAAKA,EAAQpD,UAAW,OAAO+O,EAC/B,MAAMvH,EAAWmN,EAAWzW,MAAMkK,GAClC,GAAIZ,EAAU,CACV,IAAI0N,EAAO1N,EAAS,IAAM,GAC1B,MAAM2N,GAAsC,IAA9B3N,EAAS,GAAG9B,QAAQ,KAAc,IAAM,IAChD3F,EAAeyH,EAAS,GACxB4N,EAA0BF,EAC5BnG,EAAIhP,EAAaxB,OAAS,KAAO4W,EAC/BpG,EAAIhP,EAAaxB,UAAY4W,EAEnC,OAAIpV,EAAaxB,OAAS,GAAK6W,EAAgCrG,GAC9B,IAAxBhP,EAAaxB,SACdiJ,EAAS,GAAG3D,WAAW,IAAIsR,MAAY3N,EAAS,GAAG,KAAO2N,IAEvDpV,EAAaxB,OAAS,EAEzB6E,EAAQrD,eAAiBqV,GACzBT,GAAcnN,EAAS,IAAM,IAAMA,EAAS,GACrCsN,OAAOH,IACJ5F,EANP+F,OAAOH,EAWtB,CACI,OAAO5F,CAEf,CAjFesG,CAAiBtG,EAAK4F,EAAYvR,GAGtC,CAEH,MAAMlF,EAAQ8J,EAAS7J,KAAKwW,GAE5B,GAAIzW,EAAO,CACP,MAAMgX,EAAOhX,EAAM,IAAM,GACnB6B,EAAe7B,EAAM,GAC3B,IAAIoX,GA8EGT,EA9E2B3W,EAAM,MA+ET,IAAzB2W,EAAOnP,QAAQ,MAEV,OADfmP,EAASA,EAAOjP,QAAQ,MAAO,KACXiP,EAAS,IACN,MAAdA,EAAO,GAAYA,EAAS,IAAMA,EACJ,MAA9BA,EAAOA,EAAOtW,OAAS,KAAYsW,EAASA,EAAO/Q,UAAU,EAAG+Q,EAAOtW,OAAS,IAClFsW,GAEJA,EArFC,MAAMU,EAAgCL,EACD,MAAjCnG,EAAIhP,EAAaxB,OAAS,GACK,MAA7BwQ,EAAIhP,EAAaxB,QAGvB,IAAK6E,EAAQrD,eACLA,EAAaxB,OAAS,GACM,IAAxBwB,EAAaxB,SAAiBgX,GAEtC,OAAOxG,EAEN,CACD,MAAMyG,EAAMV,OAAOH,GACbc,EAAYlK,OAAOiK,GAEzB,GAAY,IAARA,EAAW,OAAOA,EACtB,IAAkC,IAA9BC,EAAUlB,OAAO,QACjB,OAAInR,EAAQpD,UAAkBwV,EAClBzG,EACT,IAAiC,IAA7B4F,EAAWjP,QAAQ,KAC1B,MAAkB,MAAd+P,GACKA,IAAcH,GACdG,IAAc,GAAGP,IAAOI,IAFHE,EAGlBzG,EAGhB,IAAIzE,EAAIvK,EAAeuV,EAAoBX,EAC3C,OAAI5U,EAEQuK,IAAMmL,GAAeP,EAAO5K,IAAMmL,EAAaD,EAAMzG,EAGrDzE,IAAMmL,GAAenL,IAAM4K,EAAOO,EAAaD,EAAMzG,CAErE,CACJ,CACI,OAAOA,CAEf,EAuCJ,IAAmB8F,EA1FX,OAoHR,SAAwB9F,EAAKyG,EAAKpS,GAC9B,MAAMsS,EAAaF,IAAQG,IAE3B,OAAQvS,EAAQ+E,SAASvG,eACrB,IAAK,OACD,OAAO,KACX,IAAK,WACD,OAAO4T,EACX,IAAK,SACD,OAAOE,EAAa,WAAa,YAErC,QACI,OAAO3G,EAEnB,CAlIe6G,CAAe7G,EAAK+F,OAAOH,GAAavR,EAoDvD,CGoxBgByS,CAAS1V,EAAKiD,EAC5B,CACE,YP10BkB,IO00BNjD,EACHA,EAEA,EAGb,CAEA,SAAS6O,EAAcD,EAAK+G,EAAM5E,GAChC,IAAM6E,EAAYjB,OAAO/G,SAASgB,EAAK+G,GAEvC,OAAIC,GAAa,GAAKA,GAAa,QAC1BxK,OAAOyD,cAAc+G,GAErB7E,EAASnC,EAAM,GAE1B,CAEA,SAAShO,EAAiBiV,EAAI9V,EAASuS,EAAQrP,GAC7C,GAAI4S,EAAI,CACN,IAAMC,EAAaD,EAAG9V,GAClBuS,IAAWvS,IACbuS,EAASwD,GAEX/V,EAAU+V,CACZ,CAEA,MAAO,CAAE/V,QADTA,EAAUyR,EAAazR,EAASkD,GACdqP,OAAAA,EACpB,CAIA,SAASd,EAAa5S,EAAMqE,GAC1B,GAAIvE,EAAmBG,SAASD,GAC9B,MAAM,IAAIgD,MAAM,6BAA6BhD,EAAI,2EAC5C,OAAIH,EAAyBI,SAASD,GACpCqE,EAAQ7B,oBAAoBxC,GAE9BA,CACT,CEz4BA,IAAMmE,EAAkBa,EAAQY,oBAQhC,SAASuR,EAAqB/U,EAAO+P,GACnC,IAAK/P,GAA0B,iBAAVA,EAAoB,MAAO,CAAC,EACjD,IAAK+P,EAAQ,OAAO/P,EAEpB,IAAMiN,EAAW,CAAC,EAClB,IAAK,IAAMvR,KAAOsE,EACZtE,EAAIgH,WAAWqN,GAEjB9C,EADgBvR,EAAIiH,UAAUoN,EAAO3S,SACjB4C,EAAMtE,GAG1BuR,EAASvR,GAAOsE,EAAMtE,GAG1B,OAAOuR,CACT,CASe,SAAS+H,EAASvS,EAAMR,EAAS6M,EAASC,GACvD,OAAOkG,EAASxS,EAAMR,EAAS6M,EAASC,EAC1C,CAQA,SAASkG,EAASC,EAAKjT,EAAS6M,EAASC,GAGvC,IAFA,IAAIoG,EACEC,EAAgB,CAAC,EACdvR,EAAI,EAAGA,EAAIqR,EAAI9X,OAAQyG,IAAK,CACnC,IAAMwR,EAASH,EAAIrR,GACbyR,EAAWC,EAASF,GAG1B,QAAiB9R,IAAb+R,GAA0BA,IAAarT,EAAQ/D,aAAc,CAC/D,IAAM+O,EAAW8H,EACfM,EAAO,OAAS,CAAC,EACjBpT,EAAQjE,qBAEV8Q,EAAQvR,KAAK+X,EAAUrI,EACzB,CAEA,GAAIqI,IAAarT,EAAQ/D,kBACVqF,IAAT4R,EAAoBA,EAAOE,EAAOC,GACjCH,GAAQ,GAAKE,EAAOC,OACpB,SAAiB/R,IAAb+R,EACT,SACK,GAAID,EAAOC,GAAW,CAE3B,IAAItW,EAAMiW,EAASI,EAAOC,GAAWrT,EAAS6M,EAASC,GACjDyG,EAASC,EAAUzW,EAAKiD,GAgB9B,GAdIoT,EAAO,MACTK,EAAiB1W,EAAKqW,EAAO,MAAOtG,EAAiB9M,GAChB,IAA5BrG,OAAO0H,KAAKtE,GAAK5B,aAA8CmG,IAA9BvE,EAAIiD,EAAQ/D,eAAgC+D,EAAQ7C,qBAEzD,IAA5BxD,OAAO0H,KAAKtE,GAAK5B,SACtB6E,EAAQ7C,qBAAsBJ,EAAIiD,EAAQ/D,cAAgB,GACzDc,EAAM,IAHXA,EAAMA,EAAIiD,EAAQ/D,mBAMYqF,IAA5B8R,EAAOtT,IAAiD,iBAAR/C,GAA4B,OAARA,IACtEA,EAAI+C,GAAmBsT,EAAOtT,SAIAwB,IAA5B6R,EAAcE,IAA2B1Z,OAAOM,UAAUC,eAAeC,KAAKgZ,EAAeE,GAC1F/S,MAAMlD,QAAQ+V,EAAcE,MAC/BF,EAAcE,GAAY,CAACF,EAAcE,KAE3CF,EAAcE,GAAU/X,KAAKyB,OACxB,CAKL,IAAM0Q,EAAiBzN,EAAQlC,MAAQgP,EAAgB/F,WAAa+F,EAChE9M,EAAQ5C,QAAQiW,EAAU5F,EAAgB8F,GAC5CJ,EAAcE,GAAY,CAACtW,GAE3BoW,EAAcE,GAAYtW,CAE9B,MAGiBuE,IAAb+R,GAA0BA,IAAarT,EAAQ/D,cACjD4Q,EAAQzG,KAEZ,EAEF,CAOA,MALoB,iBAAT8M,EACLA,EAAK/X,OAAS,IAAGgY,EAAcnT,EAAQ/D,cAAgBiX,QACzC5R,IAAT4R,IAAoBC,EAAcnT,EAAQ/D,cAAgBiX,GAG9DC,CACT,CAEA,SAASG,EAASvZ,GAEhB,IADA,IAAMsH,EAAO1H,OAAO0H,KAAKtH,GAChB6H,EAAI,EAAGA,EAAIP,EAAKlG,OAAQyG,IAAK,CACpC,IAAMnI,EAAM4H,EAAKO,GACjB,GAAY,OAARnI,EAAc,OAAOA,CAC3B,CACF,CAEA,SAASga,EAAiB1Z,EAAK2Z,EAAS5G,EAAiB9M,GACvD,GAAI0T,EAGF,IAFA,IAAMrS,EAAO1H,OAAO0H,KAAKqS,GACnBtY,EAAMiG,EAAKlG,OACRyG,EAAI,EAAGA,EAAIxG,EAAKwG,IAAK,CAC5B,IAAM+R,EAAWtS,EAAKO,GAGhBgS,EAAcD,EAASlT,WAAWT,EAAQjE,qBAC5C4X,EAASjT,UAAUV,EAAQjE,oBAAoBZ,QAC/CwY,EAIElG,EAAiBzN,EAAQlC,MAC3BgP,EAAgB/F,WAAa,IAAM6M,EACnC9G,EAEA9M,EAAQ5C,QAAQuW,EAAUlG,GAAgB,GAAM,GAClD1T,EAAI4Z,GAAY,CAACD,EAAQC,IAEzB5Z,EAAI4Z,GAAYD,EAAQC,EAE5B,CAEJ,CAEA,SAASH,EAAUzZ,EAAKiG,GACtB,IAAQ/D,EAAiB+D,EAAjB/D,aACF4X,EAAYla,OAAO0H,KAAKtH,GAAKoB,OAEnC,OAAkB,IAAd0Y,KAKY,IAAdA,IACC9Z,EAAIkC,IAA8C,kBAAtBlC,EAAIkC,IAAqD,IAAtBlC,EAAIkC,GAMxE,CCxKA,IAAMJ,GAAiB,CACrBO,wBAAwB,EACxBkB,aAAc,IA0LhB,SAASwW,GAAaC,GACpB,MAAgB,MAATA,GAAyB,OAATA,GAA0B,OAATA,GAA0B,OAATA,CAC3D,CAMA,SAASC,GAAOrS,EAASC,GAEvB,IADA,IAAMqS,EAAQrS,EACPA,EAAID,EAAQxG,OAAQyG,IACzB,GAAkB,KAAdD,EAAQC,IAA2B,KAAdD,EAAQC,QAAjC,CAEE,IAAMhB,EAAUe,EAAQqN,OAAOiF,EAAOrS,EAAIqS,GAC1C,GAAIrS,EAAI,GAAiB,QAAZhB,EACX,OAAOsT,GAAe,aAAc,6DAA8DC,GAAyBxS,EAASC,IAC/H,GAAkB,KAAdD,EAAQC,IAA+B,KAAlBD,EAAQC,EAAI,GAAW,CAErDA,IACA,KACF,CAGF,CAEF,OAAOA,CACT,CAEA,SAASwS,GAAoBzS,EAASC,GACpC,GAAID,EAAQxG,OAASyG,EAAI,GAAwB,MAAnBD,EAAQC,EAAI,IAAiC,MAAnBD,EAAQC,EAAI,IAElE,IAAKA,GAAK,EAAGA,EAAID,EAAQxG,OAAQyG,IAC/B,GAAmB,MAAfD,EAAQC,IAAiC,MAAnBD,EAAQC,EAAI,IAAiC,MAAnBD,EAAQC,EAAI,GAAY,CAC1EA,GAAK,EACL,KACF,OAEG,GACLD,EAAQxG,OAASyG,EAAI,GACF,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,GACZ,CACA,IAAIG,EAAqB,EACzB,IAAKH,GAAK,EAAGA,EAAID,EAAQxG,OAAQyG,IAC/B,GAAmB,MAAfD,EAAQC,GACVG,SACK,GAAmB,MAAfJ,EAAQC,IAEU,MAD3BG,EAEE,KAIR,MAAO,GACLJ,EAAQxG,OAASyG,EAAI,GACF,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,IACO,MAAnBD,EAAQC,EAAI,GAEZ,IAAKA,GAAK,EAAGA,EAAID,EAAQxG,OAAQyG,IAC/B,GAAmB,MAAfD,EAAQC,IAAiC,MAAnBD,EAAQC,EAAI,IAAiC,MAAnBD,EAAQC,EAAI,GAAY,CAC1EA,GAAK,EACL,KACF,CAIJ,OAAOA,CACT,CAUA,SAASyS,GAAiB1S,EAASC,GAIjC,IAHA,IAAIqM,EAAU,GACVrK,EAAY,GACZ0Q,GAAY,EACT1S,EAAID,EAAQxG,OAAQyG,IAAK,CAC9B,GAbgB,MAaZD,EAAQC,IAZI,MAYkBD,EAAQC,GACtB,KAAdgC,EACFA,EAAYjC,EAAQC,GACXgC,IAAcjC,EAAQC,KAG/BgC,EAAY,SAET,GAAmB,MAAfjC,EAAQC,IACC,KAAdgC,EAAkB,CACpB0Q,GAAY,EACZ,KACF,CAEFrG,GAAWtM,EAAQC,EACrB,CACA,MAAkB,KAAdgC,GAIG,CACLtJ,MAAO2T,EACP5S,MAAOuG,EACP0S,UAAWA,EAEf,CAKA,IAAMC,GAAoB,IAAI9Z,OAAO,0DAA2D,KAIhG,SAAS+Z,GAAwBvG,EAASjO,GAQxC,IAHA,IAAMnF,EAAUH,EAAcuT,EAASsG,IACjCE,EAAY,CAAC,EAEV7S,EAAI,EAAGA,EAAI/G,EAAQM,OAAQyG,IAAK,CACvC,GAA6B,IAAzB/G,EAAQ+G,GAAG,GAAGzG,OAEhB,OAAO+Y,GAAe,cAAe,cAAgBrZ,EAAQ+G,GAAG,GAAK,8BAA+B8S,GAAqB7Z,EAAQ+G,KAC5H,QAAsBN,IAAlBzG,EAAQ+G,GAAG,SAAsCN,IAAlBzG,EAAQ+G,GAAG,GACnD,OAAOsS,GAAe,cAAe,cAAgBrZ,EAAQ+G,GAAG,GAAK,sBAAuB8S,GAAqB7Z,EAAQ+G,KACpH,QAAsBN,IAAlBzG,EAAQ+G,GAAG,KAAqB5B,EAAQ5D,uBAEjD,OAAO8X,GAAe,cAAe,sBAAwBrZ,EAAQ+G,GAAG,GAAK,oBAAqB8S,GAAqB7Z,EAAQ+G,KAKjI,IAAM3E,EAAWpC,EAAQ+G,GAAG,GAC5B,IAAK+S,GAAiB1X,GACpB,OAAOiX,GAAe,cAAe,cAAgBjX,EAAW,wBAAyByX,GAAqB7Z,EAAQ+G,KAExH,GAAKjI,OAAOM,UAAUC,eAAeC,KAAKsa,EAAWxX,GAInD,OAAOiX,GAAe,cAAe,cAAgBjX,EAAW,iBAAkByX,GAAqB7Z,EAAQ+G,KAF/G6S,EAAUxX,GAAY,CAI1B,CAEA,OAAO,CACT,CAiBA,SAAS2X,GAAkBjT,EAASC,GAGlC,GAAmB,MAAfD,IADJC,GAEE,OAAQ,EACV,GAAmB,MAAfD,EAAQC,GAEV,OAtBJ,SAAiCD,EAASC,GACxC,IAAIiT,EAAK,KAKT,IAJmB,MAAflT,EAAQC,KACVA,IACAiT,EAAK,cAEAjT,EAAID,EAAQxG,OAAQyG,IAAK,CAC9B,GAAmB,MAAfD,EAAQC,GACV,OAAOA,EACT,IAAKD,EAAQC,GAAG9G,MAAM+Z,GACpB,KACJ,CACA,OAAQ,CACV,CASWC,CAAwBnT,IAD/BC,GAIF,IADA,IAAIqE,EAAQ,EACLrE,EAAID,EAAQxG,OAAQyG,IAAKqE,IAC9B,KAAItE,EAAQC,GAAG9G,MAAM,OAASmL,EAAQ,IAAtC,CAEA,GAAmB,MAAftE,EAAQC,GACV,MACF,OAAQ,CAHE,CAKZ,OAAOA,CACT,CAEA,SAASsS,GAAea,EAAMC,EAASC,GACrC,MAAO,CACLC,IAAK,CACHH,KAAMA,EACNI,IAAKH,EACLI,KAAMH,EAAWG,MAAQH,EACzBI,IAAKJ,EAAWI,KAGtB,CAEA,SAASV,GAAiB1X,GACxB,OAAO1B,EAAO0B,EAChB,CAIA,SAASqY,GAAgB1U,GACvB,OAAOrF,EAAOqF,EAChB,CAGA,SAASuT,GAAyBxS,EAAStG,GACzC,IAAMka,EAAQ5T,EAAQjB,UAAU,EAAGrF,GAAOwS,MAAM,SAChD,MAAO,CACLuH,KAAMG,EAAMpa,OAGZka,IAAKE,EAAMA,EAAMpa,OAAS,GAAGA,OAAS,EAE1C,CAGA,SAASuZ,GAAqB5Z,GAC5B,OAAOA,EAAMG,WAAaH,EAAM,GAAGK,MACrC,CCpamC,IAEdqa,GAAS,WAE1B,SAAAA,EAAYxV,GACR1G,KAAK4T,iBAAmB,CAAC,EACzB5T,KAAK0G,QAAUD,EAAaC,EAEhC,CACA,IAAAe,EAAAyU,EAAAvb,UAwDC,OAxDD8G,EAKA0U,MAAA,SAAM9T,EAAS+T,GACX,GAAuB,iBAAZ/T,GAAwBA,EAAQoF,SACvCpF,EAAUA,EAAQoF,gBACf,GAAuB,iBAAZpF,EACd,MAAM,IAAIhD,MAAM,mDAGpB,GAAI+W,EAAkB,EACO,IAArBA,IAA2BA,EAAmB,CAAC,GAEnD,IAAMjG,EDlBX,SAAkB9N,EAAS3B,GAChCA,EAAUrG,OAAOuG,OAAO,CAAC,EAAGrE,GAAgBmE,GAK5C,IAAM4N,EAAO,GACT+H,GAAW,EAGXC,GAAc,EAEC,WAAfjU,EAAQ,KAEVA,EAAUA,EAAQqN,OAAO,IAG3B,IAAK,IAAIpN,EAAI,EAAGA,EAAID,EAAQxG,OAAQyG,IAElC,GAAmB,MAAfD,EAAQC,IAAiC,MAAnBD,EAAQC,EAAI,IAGpC,IADAA,EAAIoS,GAAOrS,EADXC,GAAK,IAECsT,IAAK,OAAOtT,MACb,IAAmB,MAAfD,EAAQC,GA0IZ,CACL,GAAIkS,GAAanS,EAAQC,IACvB,SAEF,OAAOsS,GAAe,cAAe,SAAWvS,EAAQC,GAAK,qBAAsBuS,GAAyBxS,EAASC,GACvH,CA5IE,IAAIiU,EAAcjU,EAGlB,GAAmB,MAAfD,IAFJC,GAEwB,CACtBA,EAAIwS,GAAoBzS,EAASC,GACjC,QACF,CACE,IAAIkU,GAAa,EACE,MAAfnU,EAAQC,KAEVkU,GAAa,EACblU,KAIF,IADA,IAAI9E,EAAU,GACP8E,EAAID,EAAQxG,QACF,MAAfwG,EAAQC,IACO,MAAfD,EAAQC,IACO,OAAfD,EAAQC,IACO,OAAfD,EAAQC,IACO,OAAfD,EAAQC,GAAaA,IAErB9E,GAAW6E,EAAQC,GAWrB,GANoC,OAHpC9E,EAAUA,EAAQiH,QAGNjH,EAAQ3B,OAAS,KAE3B2B,EAAUA,EAAQ4D,UAAU,EAAG5D,EAAQ3B,OAAS,GAEhDyG,MAEG0T,GAAgBxY,GAOnB,OAAOoX,GAAe,aALQ,IAA1BpX,EAAQiH,OAAO5I,OACX,2BAEA,QAAU2B,EAAU,wBAEaqX,GAAyBxS,EAASC,IAG7E,IAAM6N,EAAS4E,GAAiB1S,EAASC,GACzC,IAAe,IAAX6N,EACF,OAAOyE,GAAe,cAAe,mBAAqBpX,EAAU,qBAAsBqX,GAAyBxS,EAASC,IAE9H,IAAIqM,EAAUwB,EAAOnV,MAGrB,GAFAsH,EAAI6N,EAAOpU,MAEyB,MAAhC4S,EAAQA,EAAQ9S,OAAS,GAAY,CAEvC,IAAM4a,EAAenU,EAAIqM,EAAQ9S,OAE3B6a,EAAUxB,GADhBvG,EAAUA,EAAQvN,UAAU,EAAGuN,EAAQ9S,OAAS,GACC6E,GACjD,IAAgB,IAAZgW,EAOF,OAAO9B,GAAe8B,EAAQd,IAAIH,KAAMiB,EAAQd,IAAIC,IAAKhB,GAAyBxS,EAASoU,EAAeC,EAAQd,IAAIE,OANtHO,GAAW,CAQf,MAAO,GAAIG,EAAY,CACrB,IAAKrG,EAAO6E,UACV,OAAOJ,GAAe,aAAc,gBAAkBpX,EAAU,iCAAkCqX,GAAyBxS,EAASC,IAC/H,GAAIqM,EAAQlK,OAAO5I,OAAS,EACjC,OAAO+Y,GAAe,aAAc,gBAAkBpX,EAAU,+CAAgDqX,GAAyBxS,EAASkU,IAC7I,GAAoB,IAAhBjI,EAAKzS,OACd,OAAO+Y,GAAe,aAAc,gBAAkBpX,EAAU,yBAA0BqX,GAAyBxS,EAASkU,IAE5H,IAAMI,EAAMrI,EAAKxH,MACjB,GAAItJ,IAAYmZ,EAAInZ,QAAS,CAC3B,IAAIoZ,EAAU/B,GAAyBxS,EAASsU,EAAIJ,aACpD,OAAO3B,GAAe,aACpB,yBAA2B+B,EAAInZ,QAAU,qBAAuBoZ,EAAQd,KAAO,SAAWc,EAAQb,IAAM,6BAA+BvY,EAAU,KACjJqX,GAAyBxS,EAASkU,GACtC,CAGmB,GAAfjI,EAAKzS,SACPya,GAAc,EAGpB,KAAO,CACL,IAAMI,EAAUxB,GAAwBvG,EAASjO,GACjD,IAAgB,IAAZgW,EAIF,OAAO9B,GAAe8B,EAAQd,IAAIH,KAAMiB,EAAQd,IAAIC,IAAKhB,GAAyBxS,EAASC,EAAIqM,EAAQ9S,OAAS6a,EAAQd,IAAIE,OAI9H,IAAoB,IAAhBQ,EACF,OAAO1B,GAAe,aAAc,sCAAuCC,GAAyBxS,EAASC,KACzD,IAA3C5B,EAAQ1C,aAAagF,QAAQxF,IAGtC8Q,EAAKtS,KAAK,CAAEwB,QAAAA,EAAS+Y,YAAAA,IAEvBF,GAAW,CACb,CAIA,IAAK/T,IAAKA,EAAID,EAAQxG,OAAQyG,IAC5B,GAAmB,MAAfD,EAAQC,GAAY,CACtB,GAAuB,MAAnBD,EAAQC,EAAI,GAAY,CAG1BA,EAAIwS,GAAoBzS,IADxBC,GAEA,QACF,CAAO,GAAuB,MAAnBD,EAAQC,EAAI,GAIrB,MAFA,IADAA,EAAIoS,GAAOrS,IAAWC,IAChBsT,IAAK,OAAOtT,CAItB,MAAO,GAAmB,MAAfD,EAAQC,GAAY,CAC7B,IAAMuU,EAAWvB,GAAkBjT,EAASC,GAC5C,IAAiB,GAAbuU,EACF,OAAOjC,GAAe,cAAe,4BAA6BC,GAAyBxS,EAASC,IACtGA,EAAIuU,CACN,MACE,IAAoB,IAAhBP,IAAyB9B,GAAanS,EAAQC,IAChD,OAAOsS,GAAe,aAAc,wBAAyBC,GAAyBxS,EAASC,IAIlF,MAAfD,EAAQC,IACVA,GAQN,CAGF,OAAK+T,EAEqB,GAAf/H,EAAKzS,OACP+Y,GAAe,aAAc,iBAAmBtG,EAAK,GAAG9Q,QAAU,KAAMqX,GAAyBxS,EAASiM,EAAK,GAAGiI,gBAChHjI,EAAKzS,OAAS,IAChB+Y,GAAe,aAAc,YAClCkC,KAAKC,UAAUzI,EAAKrN,IAAI,SAAA+V,GAAC,OAAIA,EAAExZ,OAAO,GAAG,KAAM,GAAG0F,QAAQ,SAAU,IACpE,WAAY,CAAE4S,KAAM,EAAGC,IAAK,IANvBnB,GAAe,aAAc,sBAAuB,EAU/D,CClK2BqC,CAAS5U,EAAS+T,GACjC,IAAe,IAAXjG,EACA,MAAM9Q,MAAS8Q,EAAOyF,IAAIC,IAAG,IAAI1F,EAAOyF,IAAIE,KAAI,IAAI3F,EAAOyF,IAAIG,IAEvE,CACA,IAAMmB,EAAmB,IAAIpL,EAAiB9R,KAAK0G,SACnDwW,EAAiB3K,oBAAoBvS,KAAK4T,kBAC1C,IAAMuJ,EAAgBD,EAAiB1K,SAASnK,GAChD,OAAIrI,KAAK0G,QAAQlE,oBAAmCwF,IAAlBmV,EAAoCA,EAC1D1D,EAAS0D,EAAend,KAAK0G,QAASwW,EAAiB3J,QAAS2J,EAAiB1J,gBACjG,EAEA/L,EAKA2V,UAAA,SAAUjd,EAAKa,GACX,IAA4B,IAAxBA,EAAMgI,QAAQ,KACd,MAAM,IAAI3D,MAAM,+BACb,IAA0B,IAAtBlF,EAAI6I,QAAQ,OAAqC,IAAtB7I,EAAI6I,QAAQ,KAC9C,MAAM,IAAI3D,MAAM,wEACb,GAAc,MAAVrE,EACP,MAAM,IAAIqE,MAAM,6CAEhBrF,KAAK4T,iBAAiBzT,GAAOa,CAErC,EAEAkb,EAUOjU,kBAAP,WACI,OAAOZ,EAAQY,mBACnB,EAACiU,CAAA,CA/DyB,G","sources":["webpack://XMLParser/webpack/universalModuleDefinition","webpack://XMLParser/webpack/bootstrap","webpack://XMLParser/webpack/runtime/define property getters","webpack://XMLParser/webpack/runtime/hasOwnProperty shorthand","webpack://XMLParser/webpack/runtime/make namespace object","webpack://XMLParser/./src/util.js","webpack://XMLParser/./src/xmlparser/OptionsBuilder.js","webpack://XMLParser/./src/xmlparser/xmlNode.js","webpack://XMLParser/./src/xmlparser/DocTypeReader.js","webpack://XMLParser/./node_modules/strnum/strnum.js","webpack://XMLParser/./node_modules/path-expression-matcher/src/Matcher.js","webpack://XMLParser/./node_modules/path-expression-matcher/src/Expression.js","webpack://XMLParser/./src/xmlparser/OrderedObjParser.js","webpack://XMLParser/./src/ignoreAttributes.js","webpack://XMLParser/./src/xmlparser/node2json.js","webpack://XMLParser/./src/validator.js","webpack://XMLParser/./src/xmlparser/XMLParser.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"XMLParser\"] = factory();\n\telse\n\t\troot[\"XMLParser\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n}\n\nexport const isName = function (string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n}\n\n/**\n * Dangerous property names that could lead to prototype pollution or security issues\n */\nexport const DANGEROUS_PROPERTY_NAMES = [\n // '__proto__',\n // 'constructor',\n // 'prototype',\n 'hasOwnProperty',\n 'toString',\n 'valueOf',\n '__defineGetter__',\n '__defineSetter__',\n '__lookupGetter__',\n '__lookupSetter__'\n];\n\nexport const criticalProperties = [\"__proto__\", \"constructor\", \"prototype\"];","import { DANGEROUS_PROPERTY_NAMES, criticalProperties } from \"../util.js\";\n\nconst defaultOnDangerousProperty = (name) => {\n if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n return \"__\" + name;\n }\n return name;\n};\n\n\nexport const defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function (tagName, val) {\n return val;\n },\n attributeValueProcessor: function (attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function (tagName, jPath, attrs) {\n return tagName\n },\n // skipEmptyListItem: false\n captureMetaData: false,\n maxNestedTags: 100,\n strictReservedNames: true,\n jPath: true, // if true, pass jPath string to callbacks; if false, pass matcher instance\n onDangerousProperty: defaultOnDangerousProperty\n};\n\n\n/**\n * Validates that a property name is safe to use\n * @param {string} propertyName - The property name to validate\n * @param {string} optionName - The option field name (for error message)\n * @throws {Error} If property name is dangerous\n */\nfunction validatePropertyName(propertyName, optionName) {\n if (typeof propertyName !== 'string') {\n return; // Only validate string property names\n }\n\n const normalized = propertyName.toLowerCase();\n if (DANGEROUS_PROPERTY_NAMES.some(dangerous => normalized === dangerous.toLowerCase())) {\n throw new Error(\n `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n );\n }\n\n if (criticalProperties.some(dangerous => normalized === dangerous.toLowerCase())) {\n throw new Error(\n `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n );\n }\n}\n\n/**\n * Normalizes processEntities option for backward compatibility\n * @param {boolean|object} value \n * @returns {object} Always returns normalized object\n */\nfunction normalizeProcessEntities(value) {\n // Boolean backward compatibility\n if (typeof value === 'boolean') {\n return {\n enabled: value, // true or false\n maxEntitySize: 10000,\n maxExpansionDepth: 10,\n maxTotalExpansions: 1000,\n maxExpandedLength: 100000,\n maxEntityCount: 100,\n allowedTags: null,\n tagFilter: null\n };\n }\n\n // Object config - merge with defaults\n if (typeof value === 'object' && value !== null) {\n return {\n enabled: value.enabled !== false,\n maxEntitySize: Math.max(1, value.maxEntitySize ?? 10000),\n maxExpansionDepth: Math.max(1, value.maxExpansionDepth ?? 10),\n maxTotalExpansions: Math.max(1, value.maxTotalExpansions ?? 1000),\n maxExpandedLength: Math.max(1, value.maxExpandedLength ?? 100000),\n maxEntityCount: Math.max(1, value.maxEntityCount ?? 100),\n allowedTags: value.allowedTags ?? null,\n tagFilter: value.tagFilter ?? null\n };\n }\n\n // Default to enabled with limits\n return normalizeProcessEntities(true);\n}\n\nexport const buildOptions = function (options) {\n const built = Object.assign({}, defaultOptions, options);\n\n // Validate property names to prevent prototype pollution\n const propertyNameOptions = [\n { value: built.attributeNamePrefix, name: 'attributeNamePrefix' },\n { value: built.attributesGroupName, name: 'attributesGroupName' },\n { value: built.textNodeName, name: 'textNodeName' },\n { value: built.cdataPropName, name: 'cdataPropName' },\n { value: built.commentPropName, name: 'commentPropName' }\n ];\n\n for (const { value, name } of propertyNameOptions) {\n if (value) {\n validatePropertyName(value, name);\n }\n }\n\n if (built.onDangerousProperty === null) {\n built.onDangerousProperty = defaultOnDangerousProperty;\n }\n\n // Always normalize processEntities for backward compatibility and validation\n built.processEntities = normalizeProcessEntities(built.processEntities);\n\n // Convert old-style stopNodes for backward compatibility\n if (built.stopNodes && Array.isArray(built.stopNodes)) {\n built.stopNodes = built.stopNodes.map(node => {\n if (typeof node === 'string' && node.startsWith('*.')) {\n // Old syntax: *.tagname meant \"tagname anywhere\"\n // Convert to new syntax: ..tagname\n return '..' + node.substring(2);\n }\n return node;\n });\n }\n //console.debug(built.processEntities)\n return built;\n};","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode {\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = Object.create(null); //attributes map\n }\n add(key, val) {\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if (key === \"__proto__\") key = \"#__proto__\";\n this.child.push({ [key]: val });\n }\n addChild(node, startIndex) {\n if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n } else {\n this.child.push({ [node.tagname]: node.child });\n }\n // if requested, add the startIndex\n if (startIndex !== undefined) {\n // Note: for now we just overwrite the metadata. If we had more complex metadata,\n // we might need to do an object append here: metadata = { ...metadata, startIndex }\n this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n }\n }\n /** symbol used for metadata */\n static getMetaDataSymbol() {\n return METADATA_SYMBOL;\n }\n}\n","import { isName } from '../util.js';\n\nexport default class DocTypeReader {\n constructor(options) {\n this.suppressValidationErr = !options;\n this.options = options;\n }\n\n readDocType(xmlData, i) {\n const entities = Object.create(null);\n let entityCount = 0;\n\n if (xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E') {\n i = i + 9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === '<' && !comment) { //Determine the tag type\n if (hasBody && hasSeq(xmlData, \"!ENTITY\", i)) {\n i += 7;\n let entityName, val;\n [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr);\n if (val.indexOf(\"&\") === -1) { //Parameter entities are not supported\n if (this.options.enabled !== false &&\n this.options.maxEntityCount != null &&\n entityCount >= this.options.maxEntityCount) {\n throw new Error(\n `Entity count (${entityCount + 1}) exceeds maximum allowed (${this.options.maxEntityCount})`\n );\n }\n //const escaped = entityName.replace(/[.\\-+*:]/g, '\\\\.');\n const escaped = entityName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n entities[entityName] = {\n regx: RegExp(`&${escaped};`, \"g\"),\n val: val\n };\n entityCount++;\n }\n }\n else if (hasBody && hasSeq(xmlData, \"!ELEMENT\", i)) {\n i += 8;//Not supported\n const { index } = this.readElementExp(xmlData, i + 1);\n i = index;\n } else if (hasBody && hasSeq(xmlData, \"!ATTLIST\", i)) {\n i += 8;//Not supported\n // const {index} = this.readAttlistExp(xmlData,i+1);\n // i = index;\n } else if (hasBody && hasSeq(xmlData, \"!NOTATION\", i)) {\n i += 9;//Not supported\n const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr);\n i = index;\n } else if (hasSeq(xmlData, \"!--\", i)) comment = true;\n else throw new Error(`Invalid DOCTYPE`);\n\n angleBracketsCount++;\n exp = \"\";\n } else if (xmlData[i] === '>') { //Read tag content\n if (comment) {\n if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n comment = false;\n angleBracketsCount--;\n }\n } else {\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n } else if (xmlData[i] === '[') {\n hasBody = true;\n } else {\n exp += xmlData[i];\n }\n }\n if (angleBracketsCount !== 0) {\n throw new Error(`Unclosed DOCTYPE`);\n }\n } else {\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return { entities, i };\n }\n readEntityExp(xmlData, i) {\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n\n // Skip leading whitespace after this.options.maxEntitySize) {\n throw new Error(\n `Entity \"${entityName}\" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`\n );\n }\n\n i--;\n return [entityName, entityValue, i];\n }\n\n readNotationExp(xmlData, i) {\n // Skip leading whitespace after \n // \n // \n // \n // \n\n // Skip leading whitespace after {\n while (index < data.length && /\\s/.test(data[index])) {\n index++;\n }\n return index;\n};\n\n\n\nfunction hasSeq(data, seq, i) {\n for (let j = 0; j < seq.length; j++) {\n if (seq[j] !== data[i + j + 1]) return false;\n }\n return true;\n}\n\nfunction validateEntityName(name) {\n if (isName(name))\n return name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\nconst consider = {\n hex: true,\n // oct: false,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true,\n //skipLike: /regex/,\n infinity: \"original\", // \"null\", \"infinity\" (Infinity type), \"string\" (\"Infinity\" (the string literal))\n};\n\nexport default function toNumber(str, options = {}) {\n options = Object.assign({}, consider, options);\n if (!str || typeof str !== \"string\") return str;\n\n let trimmedStr = str.trim();\n\n if (options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (str === \"0\") return 0;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return parse_int(trimmedStr, 16);\n // }else if (options.oct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n } else if (!isFinite(trimmedStr)) { //Infinity\n return handleInfinity(str, Number(trimmedStr), options);\n } else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n return resolveEnotation(str, trimmedStr, options);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n } else {\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n // +00.123 => [ , '+', '00', '.123', ..\n if (match) {\n const sign = match[1] || \"\";\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n str[leadingZeros.length + 1] === \".\"\n : str[leadingZeros.length] === \".\";\n\n //trim ending zeros for floating number\n if (!options.leadingZeros //leading zeros are not allowed\n && (leadingZeros.length > 1\n || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))) {\n // 00, 00.3, +03.24, 03, 03.24\n return str;\n }\n else {//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const parsedStr = String(num);\n\n if (num === 0) return num;\n if (parsedStr.search(/[eE]/) !== -1) { //given number is long and parsed to eNotation\n if (options.eNotation) return num;\n else return str;\n } else if (trimmedStr.indexOf(\".\") !== -1) { //floating number\n if (parsedStr === \"0\") return num; //0.0\n else if (parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if (parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n else return str;\n }\n\n let n = leadingZeros ? numTrimmedByZeros : trimmedStr;\n if (leadingZeros) {\n // -009 => -9\n return (n === parsedStr) || (sign + n === parsedStr) ? num : str\n } else {\n // +9\n return (n === parsedStr) || (n === sign + parsedStr) ? num : str\n }\n }\n } else { //non-numeric string\n return str;\n }\n }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str, trimmedStr, options) {\n if (!options.eNotation) return str;\n const notation = trimmedStr.match(eNotationRegx);\n if (notation) {\n let sign = notation[1] || \"\";\n const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n const leadingZeros = notation[2];\n const eAdjacentToLeadingZeros = sign ? // 0E.\n str[leadingZeros.length + 1] === eChar\n : str[leadingZeros.length] === eChar;\n\n if (leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n else if (leadingZeros.length === 1\n && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)) {\n return Number(trimmedStr);\n } else if (leadingZeros.length > 0) {\n // Has leading zeros — only accept if leadingZeros option allows it\n if (options.leadingZeros && !eAdjacentToLeadingZeros) {\n trimmedStr = (notation[1] || \"\") + notation[3];\n return Number(trimmedStr);\n } else return str;\n } else {\n // No leading zeros — always valid e-notation, parse it\n return Number(trimmedStr);\n }\n } else {\n return str;\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr) {\n if (numStr && numStr.indexOf(\".\") !== -1) {//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if (numStr === \".\") numStr = \"0\";\n else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substring(0, numStr.length - 1);\n return numStr;\n }\n return numStr;\n}\n\nfunction parse_int(numStr, base) {\n //polyfill\n if (parseInt) return parseInt(numStr, base);\n else if (Number.parseInt) return Number.parseInt(numStr, base);\n else if (window && window.parseInt) return window.parseInt(numStr, base);\n else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}\n\n/**\n * Handle infinite values based on user option\n * @param {string} str - original input string\n * @param {number} num - parsed number (Infinity or -Infinity)\n * @param {object} options - user options\n * @returns {string|number|null} based on infinity option\n */\nfunction handleInfinity(str, num, options) {\n const isPositive = num === Infinity;\n\n switch (options.infinity.toLowerCase()) {\n case \"null\":\n return null;\n case \"infinity\":\n return num; // Return Infinity or -Infinity\n case \"string\":\n return isPositive ? \"Infinity\" : \"-Infinity\";\n case \"original\":\n default:\n return str; // Return original string like \"1e1000\"\n }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\n\n/**\n * Names of methods that mutate Matcher state.\n * Any attempt to call these on a read-only view throws a TypeError.\n * @type {Set}\n */\nconst MUTATING_METHODS = new Set(['push', 'pop', 'reset', 'updateCurrent', 'restore']);\n\nexport default class Matcher {\n /**\n * Create a new Matcher\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Default path separator (default: '.')\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag: string, values: object, position: number, counter: number }\n // values only present for current (last) node\n // Each siblingStacks entry: Map tracking occurrences at each level\n }\n\n /**\n * Push a new tag onto the path\n * @param {string} tagName - Name of the tag\n * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n * @param {string} namespace - Namespace for the tag (optional)\n */\n push(tagName, attrValues = null, namespace = null) {\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n const prev = this.path[this.path.length - 1];\n prev.values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n // Store namespace if provided\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n // Store values only for current node\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n }\n\n /**\n * Pop the last tag from the path\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) {\n return undefined;\n }\n\n const node = this.path.pop();\n\n // Clean up sibling tracking for levels deeper than current\n // After pop, path.length is the new depth\n // We need to clean up siblingStacks[path.length + 1] and beyond\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values\n * Useful when attributes are parsed after push\n * @param {Object} attrValues - Attribute values\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value\n * @param {string} attrName - Attribute name\n * @returns {*} Attribute value or undefined\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n const current = this.path[this.path.length - 1];\n return current.values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute\n * @param {string} attrName - Attribute name\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent)\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name)\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition for backward compatibility)\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string\n * @param {string} separator - Optional separator (uses default if not provided)\n * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n return this.path.map(n => {\n if (includeNamespace && n.namespace) {\n return `${n.namespace}:${n.tag}`;\n }\n return n.tag;\n }).join(sep);\n }\n\n /**\n * Get path as array of tag names\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty\n */\n reset() {\n this.path = [];\n this.siblingStacks = [];\n }\n\n /**\n * Match current path against an Expression\n * @param {Expression} expression - The expression to match against\n * @returns {boolean} True if current path matches the expression\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n // Handle deep wildcard patterns\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n // Simple path matching (no deep wildcards)\n return this._matchSimple(segments);\n }\n\n /**\n * Match simple path (no deep wildcards)\n * @private\n */\n _matchSimple(segments) {\n // Path must be same length as segments\n if (this.path.length !== segments.length) {\n return false;\n }\n\n // Match each segment bottom-to-top\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const node = this.path[i];\n const isCurrentNode = (i === this.path.length - 1);\n\n if (!this._matchSegment(segment, node, isCurrentNode)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match path with deep wildcards\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1; // Start from current node (bottom)\n let segIdx = segments.length - 1; // Start from last segment\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n // \"..\" matches zero or more levels\n segIdx--;\n\n if (segIdx < 0) {\n // Pattern ends with \"..\", always matches\n return true;\n }\n\n // Find where next segment matches in the path\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n const isCurrentNode = (i === this.path.length - 1);\n if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n // Regular segment\n const isCurrentNode = (pathIdx === this.path.length - 1);\n if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n // All segments must be consumed\n return segIdx < 0;\n }\n\n /**\n * Match a single segment against a node\n * @private\n * @param {Object} segment - Segment from Expression\n * @param {Object} node - Node from path\n * @param {boolean} isCurrentNode - Whether this is the current (last) node\n * @returns {boolean}\n */\n _matchSegment(segment, node, isCurrentNode) {\n // Match tag name (* is wildcard)\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n // Match namespace if specified in segment\n if (segment.namespace !== undefined) {\n // Segment has namespace - node must match it\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n // If segment has no namespace, it matches nodes with or without namespace\n\n // Match attribute name (check if node has this attribute)\n // Can only check for current node since ancestors don't have values\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n // Can't check attributes for ancestor nodes (values not stored)\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n // Match attribute value (only possible for current node)\n if (segment.attrValue !== undefined) {\n const actualValue = node.values[segment.attrName];\n // Both should be strings\n if (String(actualValue) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n // Match position (only for current node)\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n // Can't check position for ancestor nodes\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth') {\n if (counter !== segment.positionValue) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Create a snapshot of current state\n * @returns {Object} State snapshot\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map))\n };\n }\n\n /**\n * Restore state from snapshot\n * @param {Object} snapshot - State snapshot\n */\n restore(snapshot) {\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n }\n\n /**\n * Return a read-only view of this matcher.\n *\n * The returned object exposes all query/inspection methods but throws a\n * TypeError if any state-mutating method is called (`push`, `pop`, `reset`,\n * `updateCurrent`, `restore`). Property reads (e.g. `.path`, `.separator`)\n * are allowed but the returned arrays/objects are frozen so callers cannot\n * mutate internal state through them either.\n *\n * @returns {ReadOnlyMatcher} A proxy that forwards read operations and blocks writes.\n *\n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n *\n * const ro = matcher.readOnly();\n * ro.matches(expr); // ✓ works\n * ro.getCurrentTag(); // ✓ works\n * ro.push(\"child\", {}); // ✗ throws TypeError\n * ro.reset(); // ✗ throws TypeError\n */\n readOnly() {\n const self = this;\n\n return new Proxy(self, {\n get(target, prop, receiver) {\n // Block mutating methods\n if (MUTATING_METHODS.has(prop)) {\n return () => {\n throw new TypeError(\n `Cannot call '${prop}' on a read-only Matcher. ` +\n `Obtain a writable instance to mutate state.`\n );\n };\n }\n\n const value = Reflect.get(target, prop, receiver);\n\n // Freeze array/object properties so callers can't mutate internal\n // state through direct property access (e.g. matcher.path.push(...))\n if (prop === 'path' || prop === 'siblingStacks') {\n return Object.freeze(\n Array.isArray(value)\n ? value.map(item =>\n item instanceof Map\n ? Object.freeze(new Map(item)) // freeze a copy of each Map\n : Object.freeze({ ...item }) // freeze a copy of each node\n )\n : value\n );\n }\n\n // Bind methods so `this` inside them still refers to the real Matcher\n if (typeof value === 'function') {\n return value.bind(target);\n }\n\n return value;\n },\n\n // Prevent any property assignment on the read-only view\n set(_target, prop) {\n throw new TypeError(\n `Cannot set property '${String(prop)}' on a read-only Matcher.`\n );\n },\n\n // Prevent property deletion\n deleteProperty(_target, prop) {\n throw new TypeError(\n `Cannot delete property '${String(prop)}' from a read-only Matcher.`\n );\n }\n });\n }\n}","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","'use strict';\n///@ts-check\n\nimport { getAllMatches, isExist, DANGEROUS_PROPERTY_NAMES, criticalProperties } from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n// Helper functions for attribute and namespace handling\n\n/**\n * Extract raw attributes (without prefix) from prefixed attribute map\n * @param {object} prefixedAttrs - Attributes with prefix from buildAttributesMap\n * @param {object} options - Parser options containing attributeNamePrefix\n * @returns {object} Raw attributes for matcher\n */\nfunction extractRawAttributes(prefixedAttrs, options) {\n if (!prefixedAttrs) return {};\n\n // Handle attributesGroupName option\n const attrs = options.attributesGroupName\n ? prefixedAttrs[options.attributesGroupName]\n : prefixedAttrs;\n\n if (!attrs) return {};\n\n const rawAttrs = {};\n for (const key in attrs) {\n // Remove the attribute prefix to get raw name\n if (key.startsWith(options.attributeNamePrefix)) {\n const rawName = key.substring(options.attributeNamePrefix.length);\n rawAttrs[rawName] = attrs[key];\n } else {\n // Attribute without prefix (shouldn't normally happen, but be safe)\n rawAttrs[key] = attrs[key];\n }\n }\n return rawAttrs;\n}\n\n/**\n * Extract namespace from raw tag name\n * @param {string} rawTagName - Tag name possibly with namespace (e.g., \"soap:Envelope\")\n * @returns {string|undefined} Namespace or undefined\n */\nfunction extractNamespace(rawTagName) {\n if (!rawTagName || typeof rawTagName !== 'string') return undefined;\n\n const colonIndex = rawTagName.indexOf(':');\n if (colonIndex !== -1 && colonIndex > 0) {\n const ns = rawTagName.substring(0, colonIndex);\n // Don't treat xmlns as a namespace\n if (ns !== 'xmlns') {\n return ns;\n }\n }\n return undefined;\n}\n\nexport default class OrderedObjParser {\n constructor(options) {\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n \"quot\": { regex: /&(quot|#34|#x22);/g, val: \"\\\"\" },\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, \"&#\") },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, \"&#x\") },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.entityExpansionCount = 0;\n this.currentExpandedLength = 0;\n\n // Initialize path matcher for path-expression-matcher\n this.matcher = new Matcher();\n\n // Live read-only proxy of matcher — PEM creates and caches this internally.\n // All user callbacks receive this instead of the mutable matcher.\n this.readonlyMatcher = this.matcher.readOnly();\n\n // Flag to track if current node is a stop node (optimization)\n this.isCurrentNodeStopNode = false;\n\n // Pre-compile stopNodes expressions\n if (this.options.stopNodes && this.options.stopNodes.length > 0) {\n this.stopNodeExpressions = [];\n for (let i = 0; i < this.options.stopNodes.length; i++) {\n const stopNodeExp = this.options.stopNodes[i];\n if (typeof stopNodeExp === 'string') {\n // Convert string to Expression object\n this.stopNodeExpressions.push(new Expression(stopNodeExp));\n } else if (stopNodeExp instanceof Expression) {\n // Already an Expression object\n this.stopNodeExpressions.push(stopNodeExp);\n }\n }\n }\n }\n\n}\n\nfunction addExternalEntities(externalEntities) {\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n const escaped = ent.replace(/[.\\-+*:]/g, '\\\\.');\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\" + escaped + \";\", \"g\"),\n val: externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if (val.length > 0) {\n if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath);\n\n // Pass jPath string or matcher based on options.jPath setting\n const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n const newval = this.options.tagValueProcessor(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode);\n if (newval === null || newval === undefined) {\n //don't parse\n return val;\n } else if (typeof newval !== typeof val || newval !== val) {\n //overwrite\n return newval;\n } else if (this.options.trimValues) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n const trimmedVal = val.trim();\n if (trimmedVal === val) {\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n } else {\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n\n // First pass: parse all attributes and update matcher with raw values\n // This ensures the matcher has all attribute values when processors run\n const rawAttrsForMatcher = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n const oldVal = matches[i][4];\n\n if (attrName.length && oldVal !== undefined) {\n let parsedVal = oldVal;\n if (this.options.trimValues) {\n parsedVal = parsedVal.trim();\n }\n parsedVal = this.replaceEntitiesValue(parsedVal, tagName, this.readonlyMatcher);\n rawAttrsForMatcher[attrName] = parsedVal;\n }\n }\n\n // Update matcher with raw attribute values BEFORE running processors\n if (Object.keys(rawAttrsForMatcher).length > 0 && typeof jPath === 'object' && jPath.updateCurrent) {\n jPath.updateCurrent(rawAttrsForMatcher);\n }\n\n // Second pass: now process attributes with matcher having full attribute context\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n\n // Convert jPath to string if needed for ignoreAttributesFn\n const jPathStr = this.options.jPath ? jPath.toString() : this.readonlyMatcher;\n if (this.ignoreAttributesFn(attrName, jPathStr)) {\n continue\n }\n\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n //if (aName === \"__proto__\") aName = \"#__proto__\";\n aName = sanitizeName(aName, this.options);\n\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal, tagName, this.readonlyMatcher);\n\n // Pass jPath string or readonlyMatcher based on options.jPath setting\n const jPathOrMatcher = this.options.jPath ? jPath.toString() : this.readonlyMatcher;\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPathOrMatcher);\n if (newVal === null || newVal === undefined) {\n //don't parse\n attrs[aName] = oldVal;\n } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n //overwrite\n attrs[aName] = newVal;\n } else {\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function (xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n\n // Reset matcher for new document\n this.matcher.reset();\n\n // Reset entity expansion counters for this document\n this.entityExpansionCount = 0;\n this.currentExpandedLength = 0;\n\n const docTypeReader = new DocTypeReader(this.options.processEntities);\n for (let i = 0; i < xmlData.length; i++) {//for each char in XML data\n const ch = xmlData[i];\n if (ch === '<') {\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if (xmlData[i + 1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i + 2, closeIndex).trim();\n\n if (this.options.removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n }\n }\n\n tagName = transformTagName(this.options.transformTagName, tagName, \"\", this.options).tagName;\n\n if (currentNode) {\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = this.matcher.getCurrentTag();\n if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n // Pop the unpaired tag\n this.matcher.pop();\n this.tagsNodeStack.pop();\n }\n // Pop the closing tag\n this.matcher.pop();\n this.isCurrentNodeStopNode = false; // Reset flag when closing tag\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n\n let tagData = readTagExp(xmlData, i, false, \"?>\");\n if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);\n if ((this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags) {\n //do nothing\n } else {\n\n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n\n if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, this.matcher, tagData.tagName);\n }\n this.addChild(currentNode, childNode, this.readonlyMatcher, i);\n }\n\n\n i = tagData.closeIndex + 1;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\")\n if (this.options.commentPropName) {\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);\n\n currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n }\n i = endIndex;\n } else if (xmlData.substr(i + 1, 2) === '!D') {\n const result = docTypeReader.readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n } else if (xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9, closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, this.readonlyMatcher, true, false, true, true);\n if (val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if (this.options.cdataPropName) {\n currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n } else {\n currentNode.add(this.options.textNodeName, val);\n }\n\n i = closeIndex + 2;\n } else {//Opening tag\n let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n\n // Safety check: readTagExp can return undefined\n if (!result) {\n // Log context for debugging\n const context = xmlData.substring(Math.max(0, i - 50), Math.min(xmlData.length, i + 50));\n throw new Error(`readTagExp returned undefined at position ${i}. Context: \"${context}\"`);\n }\n\n let tagName = result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n if (this.options.strictReservedNames &&\n (tagName === this.options.commentPropName\n || tagName === this.options.cdataPropName\n || tagName === this.options.textNodeName\n || tagName === this.options.attributesGroupName\n )) {\n throw new Error(`Invalid tag name: ${tagName}`);\n }\n\n //save text as child node\n if (currentNode && textData) {\n if (currentNode.tagname !== '!xml') {\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n currentNode = this.tagsNodeStack.pop();\n this.matcher.pop();\n }\n\n // Clean up self-closing syntax BEFORE processing attributes\n // This is where tagExp gets the trailing / removed\n let isSelfClosing = false;\n if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n isSelfClosing = true;\n if (tagName[tagName.length - 1] === \"/\") {\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n } else {\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n\n // Re-check attrExpPresent after cleaning\n attrExpPresent = (tagName !== tagExp);\n }\n\n // Now process attributes with CLEAN tagExp (no trailing /)\n let prefixedAttrs = null;\n let rawAttrs = {};\n let namespace = undefined;\n\n // Extract namespace from rawTagName\n namespace = extractNamespace(rawTagName);\n\n // Push tag to matcher FIRST (with empty attrs for now) so callbacks see correct path\n if (tagName !== xmlObj.tagname) {\n this.matcher.push(tagName, {}, namespace);\n }\n\n // Now build attributes - callbacks will see correct matcher state\n if (tagName !== tagExp && attrExpPresent) {\n // Build attributes (returns prefixed attributes for the tree)\n // Note: buildAttributesMap now internally updates the matcher with raw attributes\n prefixedAttrs = this.buildAttributesMap(tagExp, this.matcher, tagName);\n\n if (prefixedAttrs) {\n // Extract raw attributes (without prefix) for our use\n rawAttrs = extractRawAttributes(prefixedAttrs, this.options);\n }\n }\n\n // Now check if this is a stop node (after attributes are set)\n if (tagName !== xmlObj.tagname) {\n this.isCurrentNodeStopNode = this.isItStopNode(this.stopNodeExpressions, this.matcher);\n }\n\n const startIndex = i;\n if (this.isCurrentNodeStopNode) {\n let tagContent = \"\";\n\n // For self-closing tags, content is empty\n if (isSelfClosing) {\n i = result.closeIndex;\n }\n //unpaired tag\n else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n i = result.closeIndex;\n }\n //normal tag\n else {\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if (!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n\n if (prefixedAttrs) {\n childNode[\":@\"] = prefixedAttrs;\n }\n\n // For stop nodes, store raw content as-is without any processing\n childNode.add(this.options.textNodeName, tagContent);\n\n this.matcher.pop(); // Pop the stop node tag\n this.isCurrentNodeStopNode = false; // Reset flag\n\n this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex);\n } else {\n //selfClosing tag\n if (isSelfClosing) {\n ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n const childNode = new xmlNode(tagName);\n if (prefixedAttrs) {\n childNode[\":@\"] = prefixedAttrs;\n }\n this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex);\n this.matcher.pop(); // Pop self-closing tag\n this.isCurrentNodeStopNode = false; // Reset flag\n }\n else if (this.options.unpairedTags.indexOf(tagName) !== -1) {//unpaired tag\n const childNode = new xmlNode(tagName);\n if (prefixedAttrs) {\n childNode[\":@\"] = prefixedAttrs;\n }\n this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex);\n this.matcher.pop(); // Pop unpaired tag\n this.isCurrentNodeStopNode = false; // Reset flag\n i = result.closeIndex;\n // Continue to next iteration without changing currentNode\n continue;\n }\n //opening tag\n else {\n const childNode = new xmlNode(tagName);\n if (this.tagsNodeStack.length > this.options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n this.tagsNodeStack.push(currentNode);\n\n if (prefixedAttrs) {\n childNode[\":@\"] = prefixedAttrs;\n }\n this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n } else {\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, matcher, startIndex) {\n // unset startIndex if not requested\n if (!this.options.captureMetaData) startIndex = undefined;\n\n // Pass jPath string or matcher based on options.jPath setting\n const jPathOrMatcher = this.options.jPath ? matcher.toString() : matcher;\n const result = this.options.updateTag(childNode.tagname, jPathOrMatcher, childNode[\":@\"])\n if (result === false) {\n //do nothing\n } else if (typeof result === \"string\") {\n childNode.tagname = result\n currentNode.addChild(childNode, startIndex);\n } else {\n currentNode.addChild(childNode, startIndex);\n }\n}\n\n/**\n * @param {object} val - Entity object with regex and val properties\n * @param {string} tagName - Tag name\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n */\nfunction replaceEntitiesValue(val, tagName, jPath) {\n const entityConfig = this.options.processEntities;\n\n if (!entityConfig || !entityConfig.enabled) {\n return val;\n }\n\n // Check if tag is allowed to contain entities\n if (entityConfig.allowedTags) {\n const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n const allowed = Array.isArray(entityConfig.allowedTags)\n ? entityConfig.allowedTags.includes(tagName)\n : entityConfig.allowedTags(tagName, jPathOrMatcher);\n\n if (!allowed) {\n return val;\n }\n }\n\n // Apply custom tag filter if provided\n if (entityConfig.tagFilter) {\n const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n if (!entityConfig.tagFilter(tagName, jPathOrMatcher)) {\n return val; // Skip based on custom filter\n }\n }\n\n // Replace DOCTYPE entities\n for (const entityName of Object.keys(this.docTypeEntities)) {\n const entity = this.docTypeEntities[entityName];\n const matches = val.match(entity.regx);\n\n if (matches) {\n // Track expansions\n this.entityExpansionCount += matches.length;\n\n // Check expansion limit\n if (entityConfig.maxTotalExpansions &&\n this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n throw new Error(\n `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n );\n }\n\n // Store length before replacement\n const lengthBefore = val.length;\n val = val.replace(entity.regx, entity.val);\n\n // Check expanded length immediately after replacement\n if (entityConfig.maxExpandedLength) {\n this.currentExpandedLength += (val.length - lengthBefore);\n\n if (this.currentExpandedLength > entityConfig.maxExpandedLength) {\n throw new Error(\n `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}`\n );\n }\n }\n }\n }\n // Replace standard entities\n for (const entityName of Object.keys(this.lastEntities)) {\n const entity = this.lastEntities[entityName];\n const matches = val.match(entity.regex);\n if (matches) {\n this.entityExpansionCount += matches.length;\n if (entityConfig.maxTotalExpansions &&\n this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n throw new Error(\n `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n );\n }\n }\n val = val.replace(entity.regex, entity.val);\n }\n if (val.indexOf('&') === -1) return val;\n\n // Replace HTML entities if enabled\n if (this.options.htmlEntities) {\n for (const entityName of Object.keys(this.htmlEntities)) {\n const entity = this.htmlEntities[entityName];\n const matches = val.match(entity.regex);\n if (matches) {\n //console.log(matches);\n this.entityExpansionCount += matches.length;\n if (entityConfig.maxTotalExpansions &&\n this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n throw new Error(\n `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n );\n }\n }\n val = val.replace(entity.regex, entity.val);\n }\n }\n\n // Replace ampersand entity last\n val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n\n return val;\n}\n\n\nfunction saveTextToParentTag(textData, parentNode, matcher, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0\n\n textData = this.parseTextData(textData,\n parentNode.tagname,\n matcher,\n false,\n parentNode[\":@\"] ? Object.keys(parentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n parentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Array} stopNodeExpressions - Array of compiled Expression objects\n * @param {Matcher} matcher - Current path matcher\n */\nfunction isItStopNode(stopNodeExpressions, matcher) {\n if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n for (let i = 0; i < stopNodeExpressions.length; i++) {\n if (matcher.matches(stopNodeExpressions[i])) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if (closingChar[1]) {\n if (xmlData[index + 1] === closingChar[1]) {\n return {\n data: tagExp,\n index: index\n }\n }\n } else {\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n const closingIndex = xmlData.indexOf(str, i);\n if (closingIndex === -1) {\n throw new Error(errMsg)\n } else {\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n if (!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if (separatorIndex !== -1) {//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if (removeNSPrefix) {\n const colonIndex = tagName.indexOf(\":\");\n if (colonIndex !== -1) {\n tagName = tagName.substr(colonIndex + 1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i) {\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === \"<\") {\n if (xmlData[i + 1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n if (closeTagName === tagName) {\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i: closeIndex\n }\n }\n }\n i = closeIndex;\n } else if (xmlData[i + 1] === '?') {\n const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\")\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 3) === '!--') {\n const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\")\n i = closeIndex;\n } else if (xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i = closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n openTagCount++;\n }\n i = tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if (newval === 'true') return true;\n else if (newval === 'false') return false;\n else return toNumber(val, options);\n } else {\n if (isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\nfunction fromCodePoint(str, base, prefix) {\n const codePoint = Number.parseInt(str, base);\n\n if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n return String.fromCodePoint(codePoint);\n } else {\n return prefix + str + \";\";\n }\n}\n\nfunction transformTagName(fn, tagName, tagExp, options) {\n if (fn) {\n const newTagName = fn(tagName);\n if (tagExp === tagName) {\n tagExp = newTagName\n }\n tagName = newTagName;\n }\n tagName = sanitizeName(tagName, options);\n return { tagName, tagExp };\n}\n\n\n\nfunction sanitizeName(name, options) {\n if (criticalProperties.includes(name)) {\n throw new Error(`[SECURITY] Invalid name: \"${name}\" is a reserved JavaScript keyword that could cause prototype pollution`);\n } else if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n return options.onDangerousProperty(name);\n }\n return name;\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","'use strict';\n\nimport XmlNode from './xmlNode.js';\nimport { Matcher } from 'path-expression-matcher';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * Helper function to strip attribute prefix from attribute map\n * @param {object} attrs - Attributes with prefix (e.g., {\"@_class\": \"code\"})\n * @param {string} prefix - Attribute prefix to remove (e.g., \"@_\")\n * @returns {object} Attributes without prefix (e.g., {\"class\": \"code\"})\n */\nfunction stripAttributePrefix(attrs, prefix) {\n if (!attrs || typeof attrs !== 'object') return {};\n if (!prefix) return attrs;\n\n const rawAttrs = {};\n for (const key in attrs) {\n if (key.startsWith(prefix)) {\n const rawName = key.substring(prefix.length);\n rawAttrs[rawName] = attrs[key];\n } else {\n // Attribute without prefix (shouldn't normally happen, but be safe)\n rawAttrs[key] = attrs[key];\n }\n }\n return rawAttrs;\n}\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns \n */\nexport default function prettify(node, options, matcher, readonlyMatcher) {\n return compress(node, options, matcher, readonlyMatcher);\n}\n\n/**\n * @param {array} arr \n * @param {object} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns object\n */\nfunction compress(arr, options, matcher, readonlyMatcher) {\n let text;\n const compressedObj = {}; //This is intended to be a plain object\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n\n // Push current property to matcher WITH RAW ATTRIBUTES (no prefix)\n if (property !== undefined && property !== options.textNodeName) {\n const rawAttrs = stripAttributePrefix(\n tagObj[\":@\"] || {},\n options.attributeNamePrefix\n );\n matcher.push(property, rawAttrs);\n }\n\n if (property === options.textNodeName) {\n if (text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n } else if (property === undefined) {\n continue;\n } else if (tagObj[property]) {\n\n let val = compress(tagObj[property], options, matcher, readonlyMatcher);\n const isLeaf = isLeafTag(val, options);\n\n if (tagObj[\":@\"]) {\n assignAttributes(val, tagObj[\":@\"], readonlyMatcher, options);\n } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {\n val = val[options.textNodeName];\n } else if (Object.keys(val).length === 0) {\n if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === \"object\" && val !== null) {\n val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n }\n\n\n if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) {\n if (!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [compressedObj[property]];\n }\n compressedObj[property].push(val);\n } else {\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n\n // Pass jPath string or readonlyMatcher based on options.jPath setting\n const jPathOrMatcher = options.jPath ? readonlyMatcher.toString() : readonlyMatcher;\n if (options.isArray(property, jPathOrMatcher, isLeaf)) {\n compressedObj[property] = [val];\n } else {\n compressedObj[property] = val;\n }\n }\n\n // Pop property from matcher after processing\n if (property !== undefined && property !== options.textNodeName) {\n matcher.pop();\n }\n }\n\n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if (typeof text === \"string\") {\n if (text.length > 0) compressedObj[options.textNodeName] = text;\n } else if (text !== undefined) compressedObj[options.textNodeName] = text;\n\n\n return compressedObj;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, readonlyMatcher, options) {\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i]; // This is the PREFIXED name (e.g., \"@_class\")\n\n // Strip prefix for matcher path (for isArray callback)\n const rawAttrName = atrrName.startsWith(options.attributeNamePrefix)\n ? atrrName.substring(options.attributeNamePrefix.length)\n : atrrName;\n\n // For attributes, we need to create a temporary path\n // Pass jPath string or matcher based on options.jPath setting\n const jPathOrMatcher = options.jPath\n ? readonlyMatcher.toString() + \".\" + rawAttrName\n : readonlyMatcher;\n\n if (options.isArray(atrrName, jPathOrMatcher, true, true)) {\n obj[atrrName] = [attrMap[atrrName]];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options) {\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n\n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n i += 2;\n i = readPI(xmlData, i);\n if (i.err) return i;\n } else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n\n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n //don't push into stack\n } else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i + 1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\" +\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n \"' found.\", { line: 1, col: 1 });\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char) {\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","import { buildOptions } from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport { validate } from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser {\n\n constructor(options) {\n this.externalEntities = {};\n this.options = buildOptions(options);\n\n }\n /**\n * Parse XML dats to JS object \n * @param {string|Uint8Array} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData, validationOption) {\n if (typeof xmlData !== \"string\" && xmlData.toString) {\n xmlData = xmlData.toString();\n } else if (typeof xmlData !== \"string\") {\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n\n if (validationOption) {\n if (validationOption === true) validationOption = {}; //validate with default options\n\n const result = validate(xmlData, validationOption);\n if (result !== true) {\n throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`)\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if (this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options, orderedObjParser.matcher, orderedObjParser.readonlyMatcher);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value) {\n if (value.indexOf(\"&\") !== -1) {\n throw new Error(\"Entity value can't have '&'\")\n } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n } else if (value === \"&\") {\n throw new Error(\"An entity with value '&' is not permitted\");\n } else {\n this.externalEntities[key] = value;\n }\n }\n\n /**\n * Returns a Symbol that can be used to access the metadata\n * property on a node.\n * \n * If Symbol is not available in the environment, an ordinary property is used\n * and the name of the property is here returned.\n * \n * The XMLMetaData property is only present when `captureMetaData`\n * is true in the options.\n */\n static getMetaDataSymbol() {\n return XmlNode.getMetaDataSymbol();\n }\n}"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","nameStartChar","regexName","RegExp","getAllMatches","string","regex","matches","match","exec","allmatches","startIndex","lastIndex","length","len","index","push","isName","DANGEROUS_PROPERTY_NAMES","criticalProperties","defaultOnDangerousProperty","name","includes","defaultOptions","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","tagName","val","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","isArray","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","attrs","captureMetaData","maxNestedTags","strictReservedNames","onDangerousProperty","validatePropertyName","propertyName","optionName","normalized","toLowerCase","some","dangerous","Error","normalizeProcessEntities","enabled","maxEntitySize","maxExpansionDepth","maxTotalExpansions","maxExpandedLength","maxEntityCount","allowedTags","tagFilter","Math","max","_value$maxEntitySize","_value$maxExpansionDe","_value$maxTotalExpans","_value$maxExpandedLen","_value$maxEntityCount","_value$allowedTags","_value$tagFilter","METADATA_SYMBOL","buildOptions","options","built","assign","_i","_propertyNameOptions","_propertyNameOptions$","Array","map","node","startsWith","substring","XmlNode","tagname","child","create","_proto","add","_this$child$push","addChild","_this$child$push2","_this$child$push3","keys","undefined","getMetaDataSymbol","DocTypeReader","suppressValidationErr","readDocType","xmlData","i","entities","entityCount","angleBracketsCount","hasBody","comment","hasSeq","entityName","_this$readEntityExp","readEntityExp","indexOf","escaped","replace","regx","readElementExp","readNotationExp","skipWhitespace","test","validateEntityName","toUpperCase","entityValue","_this$readIdentifierV","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","_this$readIdentifierV2","_this$readIdentifierV3","_this$readIdentifierV4","type","identifierVal","startChar","elementName","contentModel","trim","readAttlistExp","attributeName","attributeType","allowedNotations","notation","join","defaultValue","_this$readIdentifierV5","data","seq","j","hexRegex","numRegex","consider","decimalPoint","infinity","eNotationRegx","MUTATING_METHODS","Set","Matcher","constructor","separator","path","siblingStacks","attrValues","namespace","values","currentLevel","Map","siblings","siblingKey","counter","position","count","set","tag","pop","updateCurrent","current","getCurrentTag","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","getDepth","toString","includeNamespace","sep","n","toArray","reset","expression","segments","hasDeepWildcard","_matchWithDeepWildcard","_matchSimple","segment","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","found","attrValue","actualValue","String","positionValue","snapshot","restore","readOnly","Proxy","target","receiver","has","TypeError","Reflect","freeze","item","bind","_target","deleteProperty","Expression","pattern","_parse","_hasDeepWildcard","seg","_hasAttributeCondition","_hasPositionSelector","currentPart","_parseSegment","part","bracketContent","withoutBrackets","bracketMatch","content","slice","tagAndPosition","nsIndex","positionMatch","colonIndex","lastIndexOf","tagPart","posPart","eqIndex","nthMatch","parseInt","hasAttributeCondition","hasPositionSelector","extractRawAttributes","prefixedAttrs","rawAttrs","extractNamespace","rawTagName","ns","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","_","str","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","ignoreAttributesFn","_step","_iterator","_createForOfIteratorHelperLoose","done","entityExpansionCount","currentExpandedLength","matcher","readonlyMatcher","isCurrentNodeStopNode","stopNodeExpressions","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","jPathOrMatcher","newval","parseValue","tags","split","prefix","charAt","attrsRegx","attrStr","rawAttrsForMatcher","oldVal","parsedVal","jPathStr","aName","sanitizeName","newVal","attrCollection","xmlObj","xmlNode","textData","docTypeReader","closeIndex","findClosingIndex","substr","lastTagName","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","_ref","result","_ref2","context","min","_transformTagName","lastTag","isSelfClosing","tagContent","_transformTagName2","entityConfig","_i2","_Object$keys","entity","lengthBefore","_i3","_Object$keys2","_i4","_Object$keys3","parentNode","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","search","trimStart","openTagCount","shouldParse","trimmedStr","skipLike","numStr","Number","window","parse_int","isFinite","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","num","parsedStr","isPositive","Infinity","handleInfinity","toNumber","base","codePoint","fn","newTagName","stripAttributePrefix","prettify","compress","arr","text","compressedObj","tagObj","property","propName","isLeaf","isLeafTag","assignAttributes","attrMap","atrrName","rawAttrName","propCount","isWhiteSpace","char","readPI","start","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","readAttributeStr","tagClosed","validAttrStrRegxp","validateAttributeString","attrNames","getPositionFromMatch","validateAttrName","validateAmpersand","re","validateNumberAmpersand","code","message","lineNumber","err","msg","line","col","validateTagName","lines","XMLParser","parse","validationOption","tagFound","reachedRoot","tagStartPos","closingTag","attrStrStart","isValid","otg","openPos","afterAmp","JSON","stringify","t","validate","orderedObjParser","orderedResult","addEntity"],"sourceRoot":""} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/lib/fxvalidator.min.js b/bff/node_modules/fast-xml-parser/lib/fxvalidator.min.js new file mode 100644 index 0000000..5d0215b --- /dev/null +++ b/bff/node_modules/fast-xml-parser/lib/fxvalidator.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.XMLValidator=t():e.XMLValidator=t()}(this,()=>(()=>{"use strict";var e={d:(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{validate:()=>l});var r=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n=new RegExp("^["+r+"]["+r+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),i=function(e){return!(null==n.exec(e))},a={allowBooleanAttributes:!1,unpairedTags:[]};function l(e,t){t=Object.assign({},a,t);var r=[],n=!1,i=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(var l=0;l"!==e[l]&&" "!==e[l]&&"\t"!==e[l]&&"\n"!==e[l]&&"\r"!==e[l];l++)v+=e[l];if("/"===(v=v.trim())[v.length-1]&&(v=v.substring(0,v.length-1),l--),!m(v))return p("InvalidTag",0===v.trim().length?"Invalid space after '<'.":"Tag '"+v+"' is an invalid name.",F(e,l));var b=d(e,l);if(!1===b)return p("InvalidAttr","Attributes for '"+v+"' have open quote.",F(e,l));var I=b.value;if(l=b.index,"/"===I[I.length-1]){var x=l-I.length,y=c(I=I.substring(0,I.length-1),t);if(!0!==y)return p(y.err.code,y.err.msg,F(e,x+y.err.line));n=!0}else if(g){if(!b.tagClosed)return p("InvalidTag","Closing tag '"+v+"' doesn't have proper closing.",F(e,l));if(I.trim().length>0)return p("InvalidTag","Closing tag '"+v+"' can't have attributes or invalid starting.",F(e,s));if(0===r.length)return p("InvalidTag","Closing tag '"+v+"' has not been opened.",F(e,s));var A=r.pop();if(v!==A.tagName){var C=F(e,A.tagStartPos);return p("InvalidTag","Expected closing tag '"+A.tagName+"' (opened in line "+C.line+", col "+C.col+") instead of closing tag '"+v+"'.",F(e,s))}0==r.length&&(i=!0)}else{var T=c(I,t);if(!0!==T)return p(T.err.code,T.err.msg,F(e,l-I.length+T.err.line));if(!0===i)return p("InvalidXml","Multiple possible root nodes found.",F(e,l));-1!==t.unpairedTags.indexOf(v)||r.push({tagName:v,tagStartPos:s}),n=!0}for(l++;l0)||p("InvalidXml","Invalid '"+JSON.stringify(r.map(function(e){return e.tagName}),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):p("InvalidXml","Start tag expected.",1)}function o(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function u(e,t){for(var r=t;t5&&"xml"===n)return p("InvalidXml","XML declaration allowed only at the start of the document.",F(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function f(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){var r=1;for(t+=8;t"===e[t]&&0===--r)break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}var s='"',g="'";function d(e,t){for(var r="",n="",i=!1;t"===e[t]&&""===n){i=!0;break}r+=e[t]}return""===n&&{value:r,index:t,tagClosed:i}}var v=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function c(e,t){for(var r=function(e,t){for(var r=[],n=t.exec(e);n;){var i=[];i.startIndex=t.lastIndex-n[0].length;for(var a=n.length,l=0;l {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n}\n\nexport const isName = function (string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n}\n\n/**\n * Dangerous property names that could lead to prototype pollution or security issues\n */\nexport const DANGEROUS_PROPERTY_NAMES = [\n // '__proto__',\n // 'constructor',\n // 'prototype',\n 'hasOwnProperty',\n 'toString',\n 'valueOf',\n '__defineGetter__',\n '__defineSetter__',\n '__lookupGetter__',\n '__lookupSetter__'\n];\n\nexport const criticalProperties = [\"__proto__\", \"constructor\", \"prototype\"];","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n\n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n i += 2;\n i = readPI(xmlData, i);\n if (i.err) return i;\n } else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n\n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n //don't push into stack\n } else {\n tags.push({ tagName, tagStartPos });\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i + 1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else {\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n } else {\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if (isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n } else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n } else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\" +\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n \"' found.\", { line: 1, col: 1 });\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char) {\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","nameStartChar","regexName","RegExp","isName","string","exec","defaultOptions","allowBooleanAttributes","unpairedTags","validate","xmlData","options","assign","tags","tagFound","reachedRoot","substr","i","length","readPI","err","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","tagName","trim","substring","validateTagName","result","readAttributeStr","attrStr","index","attrStrStart","isValid","validateAttributeString","code","msg","line","tagClosed","otg","pop","openPos","col","indexOf","push","afterAmp","validateAmpersand","JSON","stringify","map","t","replace","char","start","tagname","angleBracketsCount","doubleQuote","singleQuote","startChar","validAttrStrRegxp","matches","regex","match","allmatches","startIndex","lastIndex","len","getAllMatches","attrNames","getPositionFromMatch","undefined","attrName","validateAttrName","re","validateNumberAmpersand","count","message","lineNumber","lines","split"],"sourceRoot":""} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/lib/pem.d.cts b/bff/node_modules/fast-xml-parser/lib/pem.d.cts new file mode 100644 index 0000000..0c88b42 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/lib/pem.d.cts @@ -0,0 +1,148 @@ +/** + * Types copied from path-expression-matcher + * @version + * @updated + * + * Update this file when path-expression-matcher releases a new version. + * Source: https://github.com/NaturalIntelligence/path-expression-matcher + */ + +/** + * Options for creating an Expression + */ +interface ExpressionOptions { + /** + * Path separator character + * @default '.' + */ + separator?: string; +} + +/** + * Parsed segment from an expression pattern + */ +interface Segment { + type: 'tag' | 'deep-wildcard'; + tag?: string; + namespace?: string; + attrName?: string; + attrValue?: string; + position?: 'first' | 'last' | 'odd' | 'even' | 'nth'; + positionValue?: number; +} + +/** + * Expression - Parses and stores a tag pattern expression. + * Patterns are parsed once and stored in an optimized structure for fast matching. + * + * @example + * ```typescript + * const expr = new Expression("root.users.user"); + * const expr2 = new Expression("..user[id]:first"); + * const expr3 = new Expression("root/users/user", { separator: '/' }); + * ``` + * + * Pattern Syntax: + * - `root.users.user` — Match exact path + * - `..user` — Match "user" at any depth (deep wildcard) + * - `user[id]` — Match user tag with "id" attribute + * - `user[id=123]` — Match user tag where id="123" + * - `user:first` — Match first occurrence of user tag + * - `ns::user` — Match user tag with namespace "ns" + * - `ns::user[id]:first` — Combine namespace, attribute, and position + */ +declare class Expression { + readonly pattern: string; + readonly separator: string; + readonly segments: Segment[]; + + constructor(pattern: string, options?: ExpressionOptions); + + get length(): number; + hasDeepWildcard(): boolean; + hasAttributeCondition(): boolean; + hasPositionSelector(): boolean; + toString(): string; +} + +// --------------------------------------------------------------------------- +// ReadonlyMatcher +// --------------------------------------------------------------------------- + +/** + * A live read-only view of a Matcher instance, returned by Matcher.readOnly(). + * + * All query and inspection methods work normally and always reflect the current + * state of the underlying matcher. State-mutating methods (`push`, `pop`, + * `reset`, `updateCurrent`, `restore`) are not present — calling them on the + * underlying Proxy throws a `TypeError` at runtime. + * + * This is the type received by all FXP user callbacks when `jPath: false`. + */ +interface ReadonlyMatcher { + readonly separator: string; + + /** Check if current path matches an Expression. */ + matches(expression: Expression): boolean; + + /** Get current tag name, or `undefined` if path is empty. */ + getCurrentTag(): string | undefined; + + /** Get current namespace, or `undefined` if not present. */ + getCurrentNamespace(): string | undefined; + + /** Get attribute value of the current node. */ + getAttrValue(attrName: string): any; + + /** Check if the current node has a given attribute. */ + hasAttr(attrName: string): boolean; + + /** Sibling position of the current node (child index in parent). */ + getPosition(): number; + + /** Occurrence counter of the current tag name at this level. */ + getCounter(): number; + + /** Number of nodes in the current path. */ + getDepth(): number; + + /** Current path as a string (e.g. `"root.users.user"`). */ + toString(separator?: string, includeNamespace?: boolean): string; + + /** Current path as an array of tag names. */ + toArray(): string[]; + + /** + * Create a snapshot of the current state. + * The snapshot can be passed to the real Matcher.restore() if needed. + */ + snapshot(): MatcherSnapshot; +} + +/** Internal node structure — exposed via snapshot only. */ +interface PathNode { + tag: string; + namespace?: string; + position: number; + counter: number; + values?: Record; +} + +/** Snapshot of matcher state returned by `snapshot()` and `readOnly().snapshot()`. */ +interface MatcherSnapshot { + path: PathNode[]; + siblingStacks: Map[]; +} + +declare namespace pem { + export { + Expression, + ExpressionOptions, + Segment, + ReadonlyMatcher, + PathNode, + MatcherSnapshot, + } +} + +export = pem; \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/package.json b/bff/node_modules/fast-xml-parser/package.json new file mode 100644 index 0000000..23c4d1e --- /dev/null +++ b/bff/node_modules/fast-xml-parser/package.json @@ -0,0 +1,94 @@ +{ + "name": "fast-xml-parser", + "version": "5.5.8", + "description": "Validate XML, Parse XML, Build XML without C/C++ based libraries", + "main": "./lib/fxp.cjs", + "type": "module", + "sideEffects": false, + "module": "./src/fxp.js", + "types": "./src/fxp.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/fxp.d.ts", + "default": "./src/fxp.js" + }, + "require": { + "types": "./lib/fxp.d.cts", + "default": "./lib/fxp.cjs" + } + } + }, + "scripts": { + "test": "c8 --reporter=lcov --reporter=text jasmine spec/*spec.js", + "test-types": "tsc --noEmit spec/typings/typings-test.ts", + "unit": "jasmine", + "coverage": "nyc report --reporter html --reporter text -t .nyc_output --report-dir .nyc_output/summary", + "perf": "node ./benchmark/perfTest3.js", + "lint": "eslint src/**/*.js spec/**/*.js benchmark/**/*.js", + "bundle": "webpack --config webpack.cjs.config.js", + "prettier": "prettier --write src/**/*.js", + "checkReadiness": "publish-please --dry-run", + "publish-please": "publish-please", + "prepublishOnly": "publish-please guard" + }, + "bin": { + "fxparser": "src/cli/cli.js" + }, + "files": [ + "lib", + "src", + "CHANGELOG.md" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/NaturalIntelligence/fast-xml-parser.git" + }, + "keywords": [ + "fast", + "xml", + "json", + "parser", + "xml2js", + "x2js", + "xml2json", + "js", + "validator", + "validate", + "transformer", + "assert", + "js2xml", + "json2xml", + "html" + ], + "author": "Amit Gupta (https://solothought.com)", + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/register": "^7.13.8", + "@types/node": "20", + "babel-loader": "^8.2.2", + "c8": "^10.1.3", + "eslint": "^8.3.0", + "he": "^1.2.0", + "jasmine": "^5.6.0", + "prettier": "^3.5.1", + "publish-please": "^5.5.2", + "typescript": "5", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.2.0", + "strnum": "^2.2.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/cli/cli.js b/bff/node_modules/fast-xml-parser/src/cli/cli.js new file mode 100755 index 0000000..b4773e4 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/cli/cli.js @@ -0,0 +1,97 @@ +#!/usr/bin/env node +'use strict'; +/*eslint-disable no-console*/ +import fs from 'fs'; +import { resolve } from 'path'; +import {XMLParser, XMLValidator} from "../fxp.js"; +import ReadToEnd from './read.js'; +import cmdDetail from "./man.js" + +console.warn("\x1b[33m%s\x1b[0m", "⚠️ Warning: The built-in CLI interface is now deprecated."); +console.warn("Please install the dedicated CLI package instead:"); +console.warn(" npm install -g fxp-cli"); + +if (process.argv[2] === '--help' || process.argv[2] === '-h') { + console.log(cmdDetail); +} else if (process.argv[2] === '--version') { + const packageJsonPath = resolve(process.cwd(), 'package.json'); + const version = JSON.parse(fs.readFileSync(packageJsonPath).toString()).version; + console.log(version); +} else { + const options = { + removeNSPrefix: true, + ignoreAttributes: false, + parseTagValue: true, + parseAttributeValue: true, + }; + let fileName = ''; + let outputFileName; + let validate = false; + let validateOnly = false; + for (let i = 2; i < process.argv.length; i++) { + if (process.argv[i] === '-ns') { + options.removeNSPrefix = false; + } else if (process.argv[i] === '-a') { + options.ignoreAttributes = true; + } else if (process.argv[i] === '-c') { + options.parseTagValue = false; + options.parseAttributeValue = false; + } else if (process.argv[i] === '-o') { + outputFileName = process.argv[++i]; + } else if (process.argv[i] === '-v') { + validate = true; + } else if (process.argv[i] === '-V') { + validateOnly = true; + } else { + //filename + fileName = process.argv[i]; + } + } + + const callback = function(xmlData) { + let output = ''; + if (validateOnly) { + output = XMLValidator.validate(xmlData); + process.exitCode = output === true ? 0 : 1; + } else { + const parser = new XMLParser(options); + output = JSON.stringify(parser.parse(xmlData,validate), null, 4); + } + if (outputFileName) { + writeToFile(outputFileName, output); + } else { + console.log(output); + } + }; + + + try { + + if (!fileName) { + ReadToEnd.readToEnd(process.stdin, function(err, data) { + if (err) { + throw err; + } + callback(data.toString()); + }); + } else { + fs.readFile(fileName, function(err, data) { + if (err) { + throw err; + } + callback(data.toString()); + }); + } + } catch (e) { + console.log('Seems an invalid file or stream.' + e); + } +} + +function writeToFile(fileName, data) { + fs.writeFile(fileName, data, function(err) { + if (err) { + throw err; + } + console.log('JSON output has been written to ' + fileName); + }); +} diff --git a/bff/node_modules/fast-xml-parser/src/cli/man.js b/bff/node_modules/fast-xml-parser/src/cli/man.js new file mode 100644 index 0000000..418ea3d --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/cli/man.js @@ -0,0 +1,17 @@ +import fs from 'fs'; +import { resolve } from 'path'; +const packageJsonPath = resolve(process.cwd(), 'package.json'); +const version = JSON.parse(fs.readFileSync(packageJsonPath).toString()).version; + +export default `Fast XML Parser ${version} +---------------- +$ fxparser [-ns|-a|-c|-v|-V] [-o outputfile.json] +$ cat xmlfile.xml | fxparser [-ns|-a|-c|-v|-V] [-o outputfile.json] + +Options +---------------- +-ns: remove namespace from tag and atrribute name. +-a: don't parse attributes. +-c: parse values to premitive type. +-v: validate before parsing. +-V: validate only.` \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/cli/read.js b/bff/node_modules/fast-xml-parser/src/cli/read.js new file mode 100644 index 0000000..99a2066 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/cli/read.js @@ -0,0 +1,43 @@ +'use strict'; + +import { Transform } from 'stream'; + +export default class ReadToEnd extends Transform { + constructor(options = {}) { + super(options); + this._encoding = options.encoding || 'utf8'; + this._buffer = ''; + } + + _transform(chunk, encoding, done) { + this._buffer += chunk.toString(this._encoding); + this.push(chunk); + done(); + } + + _flush(done) { + this.emit('complete', null, this._buffer); + done(); + } + + static readToEnd(stream, options, callback) { + if (typeof options === 'function') { + callback = options; + options = {}; + } + + const dest = new ReadToEnd(options); + + stream.pipe(dest); + + stream.on('error', (err) => { + stream.unpipe(dest); + callback(err); + }); + + dest.on('complete', callback); + dest.resume(); + + return dest; + } +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/fxp.d.ts b/bff/node_modules/fast-xml-parser/src/fxp.d.ts new file mode 100644 index 0000000..05e38de --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/fxp.d.ts @@ -0,0 +1,579 @@ +import type { Expression, ReadonlyMatcher } from './pem'; + +// jPath: true → string +// jPath: false → ReadonlyMatcher +type JPathOrMatcher = string | ReadonlyMatcher; +type JPathOrExpression = string | Expression; + +export type ProcessEntitiesOptions = { + /** + * Whether to enable entity processing + * + * Defaults to `true` + */ + enabled?: boolean; + + /** + * Maximum size in characters for a single entity definition + * + * Defaults to `10000` + */ + maxEntitySize?: number; + + /** + * Maximum depth for nested entity references (reserved for future use) + * + * Defaults to `10` + */ + maxExpansionDepth?: number; + + /** + * Maximum total number of entity expansions allowed + * + * Defaults to `1000` + */ + maxTotalExpansions?: number; + + /** + * Maximum total expanded content length in characters + * + * Defaults to `100000` + */ + maxExpandedLength?: number; + + /** + * Maximum number of entities allowed in the XML + * + * Defaults to `100` + */ + maxEntityCount?: number; + + /** + * Array of tag names where entity replacement is allowed. + * If null, entities are replaced in all tags. + * + * Defaults to `null` + */ + allowedTags?: string[] | null; + + /** + * Custom filter function to determine if entities should be replaced in a tag + * + * @param tagName - The name of the current tag + * @param jPathOrMatcher - The jPath string (if jPath: true) or Matcher instance (if jPath: false) + * @returns `true` to allow entity replacement, `false` to skip + * + * Defaults to `null` + */ + tagFilter?: ((tagName: string, jPathOrMatcher: JPathOrMatcher) => boolean) | null; +}; + +export type X2jOptions = { + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when parsing + * + * When `true` - ignores all the attributes + * + * When `false` - parses all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPathOrMatcher: JPathOrMatcher) => boolean); + + /** + * Whether to remove namespace string from tag and attribute names + * + * Defaults to `false` + */ + removeNSPrefix?: boolean; + + /** + * Whether to allow attributes without value + * + * Defaults to `false` + */ + allowBooleanAttributes?: boolean; + + /** + * Whether to parse tag value with `strnum` package + * + * Defaults to `true` + */ + parseTagValue?: boolean; + + /** + * Whether to parse attribute value with `strnum` package + * + * Defaults to `false` + */ + parseAttributeValue?: boolean; + + /** + * Whether to remove surrounding whitespace from tag or attribute value + * + * Defaults to `true` + */ + trimValues?: boolean; + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @param tagName - The name of the tag + * @param tagValue - The value of the tag + * @param jPathOrMatcher - The jPath string (if jPath: true) or Matcher instance (if jPath: false) + * @param hasAttributes - Whether the tag has attributes + * @param isLeafNode - Whether the tag is a leaf node + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (tagName: string, tagValue: string, jPathOrMatcher: JPathOrMatcher, hasAttributes: boolean, isLeafNode: boolean) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName - The name of the attribute + * @param attrValue - The value of the attribute + * @param jPathOrMatcher - The jPath string (if jPath: true) or Matcher instance (if jPath: false) + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPathOrMatcher) => val` + */ + attributeValueProcessor?: (attrName: string, attrValue: string, jPathOrMatcher: JPathOrMatcher) => unknown; + + /** + * Options to pass to `strnum` for parsing numbers + * + * Defaults to `{ hex: true, leadingZeros: true, eNotation: true }` + */ + numberParseOptions?: strnumOptions; + + /** + * Nodes to stop parsing at + * + * Accepts string patterns or Expression objects from path-expression-matcher + * + * String patterns starting with "*." are automatically converted to ".." for backward compatibility + * + * Defaults to `[]` + */ + stopNodes?: JPathOrExpression[]; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Whether to always create a text node + * + * Defaults to `false` + */ + alwaysCreateTextNode?: boolean; + + /** + * Determine whether a tag should be parsed as an array + * + * @param tagName - The name of the tag + * @param jPathOrMatcher - The jPath string (if jPath: true) or Matcher instance (if jPath: false) + * @param isLeafNode - Whether the tag is a leaf node + * @param isAttribute - Whether this is an attribute + * @returns {boolean} + * + * Defaults to `() => false` + */ + isArray?: (tagName: string, jPathOrMatcher: JPathOrMatcher, isLeafNode: boolean, isAttribute: boolean) => boolean; + + /** + * Whether to process default and DOCTYPE entities + * + * When `true` - enables entity processing with default limits + * + * When `false` - disables all entity processing + * + * When `ProcessEntitiesOptions` - enables entity processing with custom configuration + * + * Defaults to `true` + */ + processEntities?: boolean | ProcessEntitiesOptions; + + /** + * Whether to process HTML entities + * + * Defaults to `false` + */ + htmlEntities?: boolean; + + /** + * Whether to ignore the declaration tag from output + * + * Defaults to `false` + */ + ignoreDeclaration?: boolean; + + /** + * Whether to ignore Pi tags + * + * Defaults to `false` + */ + ignorePiTags?: boolean; + + /** + * Transform tag names + * + * Defaults to `false` + */ + transformTagName?: ((tagName: string) => string) | false; + + /** + * Transform attribute names + * + * Defaults to `false` + */ + transformAttributeName?: ((attributeName: string) => string) | false; + + /** + * Change the tag name when a different name is returned. Skip the tag from parsed result when false is returned. + * Modify `attrs` object to control attributes for the given tag. + * + * @param tagName - The name of the tag + * @param jPathOrMatcher - The jPath string (if jPath: true) or Matcher instance (if jPath: false) + * @param attrs - The attributes object + * @returns {string} new tag name. + * @returns false to skip the tag + * + * Defaults to `(tagName, jPathOrMatcher, attrs) => tagName` + */ + updateTag?: (tagName: string, jPathOrMatcher: JPathOrMatcher, attrs: { [k: string]: string }) => string | boolean; + + /** + * If true, adds a Symbol to all object nodes, accessible by {@link XMLParser.getMetaDataSymbol} with + * metadata about each the node in the XML file. + */ + captureMetaData?: boolean; + + /** + * Maximum number of nested tags + * + * Defaults to `100` + */ + maxNestedTags?: number; + + /** + * Whether to strictly validate tag names + * + * Defaults to `true` + */ + strictReservedNames?: boolean; + + /** + * Controls whether callbacks receive jPath as string or Matcher instance + * + * When `true` - callbacks receive jPath as string (backward compatible) + * + * When `false` - callbacks receive Matcher instance for advanced pattern matching + * + * Defaults to `true` + */ + jPath?: boolean; + + /** + * Function to sanitize dangerous property names + * + * @param name - The name of the property + * @returns {string} The sanitized name + * + * Defaults to `(name) => __name` + */ + onDangerousProperty?: (name: string) => string; +}; + + + +export type strnumOptions = { + hex: boolean; + leadingZeros: boolean, + skipLike?: RegExp, + eNotation?: boolean +} + +export type validationOptions = { + /** + * Whether to allow attributes without value + * + * Defaults to `false` + */ + allowBooleanAttributes?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; +}; + +export type XmlBuilderOptions = { + /** + * Give a prefix to the attribute name in the resulting JS object + * + * Defaults to '@_' + */ + attributeNamePrefix?: string; + + /** + * A name to group all attributes of a tag under, or `false` to disable + * + * Defaults to `false` + */ + attributesGroupName?: false | string; + + /** + * The name of the next node in the resulting JS + * + * Defaults to `#text` + */ + textNodeName?: string; + + /** + * Whether to ignore attributes when building + * + * When `true` - ignores all the attributes + * + * When `false` - builds all the attributes + * + * When `Array` - filters out attributes that match provided patterns + * + * When `Function` - calls the function for each attribute and filters out those for which the function returned `true` + * + * Defaults to `true` + */ + ignoreAttributes?: boolean | (string | RegExp)[] | ((attrName: string, jPath: string) => boolean); + + /** + * Give a property name to set CDATA values to instead of merging to tag's text value + * + * Defaults to `false` + */ + cdataPropName?: false | string; + + /** + * If set, parse comments and set as this property + * + * Defaults to `false` + */ + commentPropName?: false | string; + + /** + * Whether to make output pretty instead of single line + * + * Defaults to `false` + */ + format?: boolean; + + + /** + * If `format` is set to `true`, sets the indent string + * + * Defaults to ` ` + */ + indentBy?: string; + + /** + * Give a name to a top-level array + * + * Defaults to `undefined` + */ + arrayNodeName?: string; + + /** + * Create empty tags for tags with no text value + * + * Defaults to `false` + */ + suppressEmptyNode?: boolean; + + /** + * Suppress an unpaired tag + * + * Defaults to `true` + */ + suppressUnpairedNode?: boolean; + + /** + * Don't put a value for boolean attributes + * + * Defaults to `true` + */ + suppressBooleanAttributes?: boolean; + + /** + * Preserve the order of tags in resulting JS object + * + * Defaults to `false` + */ + preserveOrder?: boolean; + + /** + * List of tags without closing tags + * + * Defaults to `[]` + */ + unpairedTags?: string[]; + + /** + * Nodes to stop parsing at + * + * Accepts string patterns or Expression objects from path-expression-matcher + * + * Defaults to `[]` + */ + stopNodes?: JPathOrExpression[]; + + /** + * Control how tag value should be parsed. Called only if tag value is not empty + * + * @returns {undefined|null} `undefined` or `null` to set original value. + * @returns {unknown} + * + * 1. Different value or value with different data type to set new value. + * 2. Same value to set parsed value if `parseTagValue: true`. + * + * Defaults to `(tagName, val, jPath, hasAttributes, isLeafNode) => val` + */ + tagValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Control how attribute value should be parsed + * + * @param attrName + * @param attrValue + * @param jPath + * @returns {undefined|null} `undefined` or `null` to set original value + * @returns {unknown} + * + * Defaults to `(attrName, val, jPath) => val` + */ + attributeValueProcessor?: (name: string, value: unknown) => unknown; + + /** + * Whether to process default and DOCTYPE entities + * + * Defaults to `true` + */ + processEntities?: boolean; + + + oneListGroup?: boolean; + + /** + * Maximum number of nested tags + * + * Defaults to `100` + */ + maxNestedTags?: number; +}; + +type ESchema = string | object | Array; + +export type ValidationError = { + err: { + code: string; + msg: string, + line: number, + col: number + }; +}; + +export class XMLParser { + constructor(options?: X2jOptions); + parse(xmlData: string | Uint8Array, validationOptions?: validationOptions | boolean): any; + /** + * Add Entity which is not by default supported by this library + * @param entityIdentifier {string} Eg: 'ent' for &ent; + * @param entityValue {string} Eg: '\r' + */ + addEntity(entityIdentifier: string, entityValue: string): void; + + /** + * Returns a Symbol that can be used to access the {@link XMLMetaData} + * property on a node. + * + * If Symbol is not available in the environment, an ordinary property is used + * and the name of the property is here returned. + * + * The XMLMetaData property is only present when {@link X2jOptions.captureMetaData} + * is true in the options. + */ + static getMetaDataSymbol(): Symbol; +} + +export class XMLValidator { + static validate(xmlData: string, options?: validationOptions): true | ValidationError; +} +export class XMLBuilder { + constructor(options?: XmlBuilderOptions); + build(jObj: any): string; +} + +/** + * This object is available on nodes via the symbol {@link XMLParser.getMetaDataSymbol} + * when {@link X2jOptions.captureMetaData} is true. + */ +export interface XMLMetaData { + /** The index, if available, of the character where the XML node began in the input stream. */ + startIndex?: number; +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/fxp.js b/bff/node_modules/fast-xml-parser/src/fxp.js new file mode 100644 index 0000000..470ed56 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/fxp.js @@ -0,0 +1,14 @@ +'use strict'; + +import { validate } from './validator.js'; +import XMLParser from './xmlparser/XMLParser.js'; +import XMLBuilder from './xmlbuilder/json2xml.js'; + +const XMLValidator = { + validate: validate +} +export { + XMLParser, + XMLValidator, + XMLBuilder +}; \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/ignoreAttributes.js b/bff/node_modules/fast-xml-parser/src/ignoreAttributes.js new file mode 100644 index 0000000..bdec0a6 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/ignoreAttributes.js @@ -0,0 +1,18 @@ +export default function getIgnoreAttributesFn(ignoreAttributes) { + if (typeof ignoreAttributes === 'function') { + return ignoreAttributes + } + if (Array.isArray(ignoreAttributes)) { + return (attrName) => { + for (const pattern of ignoreAttributes) { + if (typeof pattern === 'string' && attrName === pattern) { + return true + } + if (pattern instanceof RegExp && pattern.test(attrName)) { + return true + } + } + } + } + return () => false +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/pem.d.ts b/bff/node_modules/fast-xml-parser/src/pem.d.ts new file mode 100644 index 0000000..74203b6 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/pem.d.ts @@ -0,0 +1,135 @@ +/** + * Types copied from path-expression-matcher + * @version + * @updated + * + * Update this file when path-expression-matcher releases a new version. + * Source: https://github.com/NaturalIntelligence/path-expression-matcher + */ + +/** + * Options for creating an Expression + */ +export interface ExpressionOptions { + /** + * Path separator character + * @default '.' + */ + separator?: string; +} + +/** + * Parsed segment from an expression pattern + */ +export interface Segment { + type: 'tag' | 'deep-wildcard'; + tag?: string; + namespace?: string; + attrName?: string; + attrValue?: string; + position?: 'first' | 'last' | 'odd' | 'even' | 'nth'; + positionValue?: number; +} + +/** + * Expression - Parses and stores a tag pattern expression. + * Patterns are parsed once and stored in an optimized structure for fast matching. + * + * @example + * ```typescript + * const expr = new Expression("root.users.user"); + * const expr2 = new Expression("..user[id]:first"); + * const expr3 = new Expression("root/users/user", { separator: '/' }); + * ``` + * + * Pattern Syntax: + * - `root.users.user` — Match exact path + * - `..user` — Match "user" at any depth (deep wildcard) + * - `user[id]` — Match user tag with "id" attribute + * - `user[id=123]` — Match user tag where id="123" + * - `user:first` — Match first occurrence of user tag + * - `ns::user` — Match user tag with namespace "ns" + * - `ns::user[id]:first` — Combine namespace, attribute, and position + */ +export class Expression { + readonly pattern: string; + readonly separator: string; + readonly segments: Segment[]; + + constructor(pattern: string, options?: ExpressionOptions); + + get length(): number; + hasDeepWildcard(): boolean; + hasAttributeCondition(): boolean; + hasPositionSelector(): boolean; + toString(): string; +} + +// --------------------------------------------------------------------------- +// ReadonlyMatcher +// --------------------------------------------------------------------------- + +/** + * A live read-only view of a {@link Matcher} instance, returned by {@link Matcher.readOnly}. + * + * All query and inspection methods work normally and always reflect the current + * state of the underlying matcher. State-mutating methods (`push`, `pop`, + * `reset`, `updateCurrent`, `restore`) are not present — calling them on the + * underlying Proxy throws a `TypeError` at runtime. + * + * This is the type received by all FXP user callbacks when `jPath: false`. + */ +export interface ReadonlyMatcher { + readonly separator: string; + + /** Check if current path matches an Expression. */ + matches(expression: Expression): boolean; + + /** Get current tag name, or `undefined` if path is empty. */ + getCurrentTag(): string | undefined; + + /** Get current namespace, or `undefined` if not present. */ + getCurrentNamespace(): string | undefined; + + /** Get attribute value of the current node. */ + getAttrValue(attrName: string): any; + + /** Check if the current node has a given attribute. */ + hasAttr(attrName: string): boolean; + + /** Sibling position of the current node (child index in parent). */ + getPosition(): number; + + /** Occurrence counter of the current tag name at this level. */ + getCounter(): number; + + /** Number of nodes in the current path. */ + getDepth(): number; + + /** Current path as a string (e.g. `"root.users.user"`). */ + toString(separator?: string, includeNamespace?: boolean): string; + + /** Current path as an array of tag names. */ + toArray(): string[]; + + /** + * Create a snapshot of the current state. + * The snapshot can be passed to the real {@link Matcher.restore} if needed. + */ + snapshot(): MatcherSnapshot; +} + +/** Internal node structure — exposed via snapshot only. */ +export interface PathNode { + tag: string; + namespace?: string; + position: number; + counter: number; + values?: Record; +} + +/** Snapshot of matcher state returned by `snapshot()` and `readOnly().snapshot()`. */ +export interface MatcherSnapshot { + path: PathNode[]; + siblingStacks: Map[]; +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/util.js b/bff/node_modules/fast-xml-parser/src/util.js new file mode 100644 index 0000000..c2c809d --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/util.js @@ -0,0 +1,61 @@ +'use strict'; + +const nameStartChar = ':A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; +const nameChar = nameStartChar + '\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040'; +export const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'; +const regexName = new RegExp('^' + nameRegexp + '$'); + +export function getAllMatches(string, regex) { + const matches = []; + let match = regex.exec(string); + while (match) { + const allmatches = []; + allmatches.startIndex = regex.lastIndex - match[0].length; + const len = match.length; + for (let index = 0; index < len; index++) { + allmatches.push(match[index]); + } + matches.push(allmatches); + match = regex.exec(string); + } + return matches; +} + +export const isName = function (string) { + const match = regexName.exec(string); + return !(match === null || typeof match === 'undefined'); +} + +export function isExist(v) { + return typeof v !== 'undefined'; +} + +export function isEmptyObject(obj) { + return Object.keys(obj).length === 0; +} + +export function getValue(v) { + if (exports.isExist(v)) { + return v; + } else { + return ''; + } +} + +/** + * Dangerous property names that could lead to prototype pollution or security issues + */ +export const DANGEROUS_PROPERTY_NAMES = [ + // '__proto__', + // 'constructor', + // 'prototype', + 'hasOwnProperty', + 'toString', + 'valueOf', + '__defineGetter__', + '__defineSetter__', + '__lookupGetter__', + '__lookupSetter__' +]; + +export const criticalProperties = ["__proto__", "constructor", "prototype"]; \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/v6/CharsSymbol.js b/bff/node_modules/fast-xml-parser/src/v6/CharsSymbol.js new file mode 100644 index 0000000..6ac2de4 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/CharsSymbol.js @@ -0,0 +1,16 @@ +export default { + "<" : "<", //tag start + ">" : ">", //tag end + "/" : "/", //close tag + "!" : "!", //comment or docttype + "!--" : "!--", //comment + "-->" : "-->", //comment end + "?" : "?", //pi + "?>" : "?>", //pi end + "?xml" : "?xml", //pi end + "![" : "![", //cdata + "]]>" : "]]>", //cdata end + "[" : "[", + "-" : "-", + "D" : "D", +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/v6/EntitiesParser.js b/bff/node_modules/fast-xml-parser/src/v6/EntitiesParser.js new file mode 100644 index 0000000..576e069 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/EntitiesParser.js @@ -0,0 +1,106 @@ +const ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" }; +const htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent": { regex: /&(cent|#162);/g, val: "¢" }, + "pound": { regex: /&(pound|#163);/g, val: "£" }, + "yen": { regex: /&(yen|#165);/g, val: "¥" }, + "euro": { regex: /&(euro|#8364);/g, val: "€" }, + "copyright": { regex: /&(copy|#169);/g, val: "©" }, + "reg": { regex: /&(reg|#174);/g, val: "®" }, + "inr": { regex: /&(inr|#8377);/g, val: "₹" }, + "num_dec": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 10)) }, + "num_hex": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 16)) }, +}; +export default class EntitiesParser { + constructor(replaceHtmlEntities) { + this.replaceHtmlEntities = replaceHtmlEntities; + this.docTypeEntities = {}; + this.lastEntities = { + "apos": { regex: /&(apos|#39|#x27);/g, val: "'" }, + "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" }, + "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" }, + "quot": { regex: /&(quot|#34|#x22);/g, val: "\"" }, + }; + } + + addExternalEntities(externalEntities) { + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.addExternalEntity(ent, externalEntities[ent]) + } + } + addExternalEntity(key, val) { + validateEntityName(key); + const escaped = key.replace(/[.\-+*:]/g, '\\.'); + if (val.indexOf("&") !== -1) { + reportWarning(`Entity ${key} is not added as '&' is found in value;`) + return; + } else { + this.lastEntities[key] = { + regex: new RegExp("&" + escaped + ";", "g"), + val: val + } + } + } + + addDocTypeEntities(entities) { + const entKeys = Object.keys(entities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + const escaped = ent.replace(/[.\-+*:]/g, '\\.'); + this.docTypeEntities[ent] = { + regex: new RegExp("&" + escaped + ";", "g"), + val: entities[ent] + } + } + } + + parse(val) { + return this.replaceEntitiesValue(val) + } + + /** + * 1. Replace DOCTYPE entities + * 2. Replace external entities + * 3. Replace HTML entities if asked + * @param {string} val + */ + replaceEntitiesValue(val) { + if (typeof val === "string" && val.length > 0) { + for (let entityName in this.docTypeEntities) { + const entity = this.docTypeEntities[entityName]; + val = val.replace(entity.regx, entity.val); + } + for (let entityName in this.lastEntities) { + const entity = this.lastEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + if (this.replaceHtmlEntities) { + for (let entityName in htmlEntities) { + const entity = htmlEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + } + val = val.replace(ampEntity.regex, ampEntity.val); + } + return val; + } +} + +//an entity name should not contains special characters that may be used in regex +//Eg !?\\\/[]$%{}^&*()<> +const specialChar = "!?\\/[]$%{}^&*()<>|+"; + +function validateEntityName(name) { + for (let i = 0; i < specialChar.length; i++) { + const ch = specialChar[i]; + if (name.indexOf(ch) !== -1) throw new Error(`Invalid character ${ch} in entity name`); + } + return name; +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js b/bff/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js new file mode 100755 index 0000000..6e33919 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js @@ -0,0 +1,61 @@ + +import { JsObjOutputBuilder } from './OutputBuilders/JsObjBuilder.js'; + +export const defaultOptions = { + preserveOrder: false, + removeNSPrefix: false, // remove NS from tag name or attribute name if true + //ignoreRootElement : false, + stopNodes: [], //nested tags will not be parsed even for errors + // isArray: () => false, //User will set it + htmlEntities: false, + // skipEmptyListItem: false + tags: { + unpaired: [], + nameFor: { + cdata: false, + comment: false, + text: '#text' + }, + separateTextProperty: false, + }, + attributes: { + ignore: false, + booleanType: true, + entities: true, + }, + + // select: ["img[src]"], + // stop: ["anim", "[ads]"] + only: [], // rest tags will be skipped. It will result in flat array + hierarchy: false, //will be used when a particular tag is set to be parsed. + skip: [], // will be skipped from parse result. on('skip') will be triggered + + select: [], // on('select', tag => tag ) will be called if match + stop: [], //given tagPath will not be parsed. innerXML will be set as string value + OutputBuilder: new JsObjOutputBuilder(), +}; + +export const buildOptions = function (options) { + const finalOptions = { ...defaultOptions }; + copyProperties(finalOptions, options) + return finalOptions; +}; + +function copyProperties(target, source) { + for (let key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + if (key === 'OutputBuilder') { + target[key] = source[key]; + } else if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + // Recursively copy nested properties + if (typeof target[key] === 'undefined') { + target[key] = {}; + } + copyProperties(target[key], source[key]); + } else { + // Copy non-nested properties + target[key] = source[key]; + } + } + } +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js new file mode 100644 index 0000000..aee7365 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js @@ -0,0 +1,69 @@ +export default class BaseOutputBuilder { + constructor() { + // this.attributes = {}; + } + + addAttribute(name, value) { + if (this.options.onAttribute) { + //TODO: better to pass tag path + const v = this.options.onAttribute(name, value, this.tagName); + if (v) this.attributes[v.name] = v.value; + } else { + name = this.options.attributes.prefix + name + this.options.attributes.suffix; + this.attributes[name] = this.parseValue(value, this.options.attributes.valueParsers); + } + } + + /** + * parse value by chain of parsers + * @param {string} val + * @returns {any} parsed value if matching parser found + */ + parseValue = function (val, valParsers) { + for (let i = 0; i < valParsers.length; i++) { + let valParser = valParsers[i]; + if (typeof valParser === "string") { + valParser = this.registeredParsers[valParser]; + } + if (valParser) { + val = valParser.parse(val); + } + } + return val; + } + + /** + * To add a nested empty tag. + * @param {string} key + * @param {any} val + */ + _addChild(key, val) { } + + /** + * skip the comment if property is not set + */ + addComment(text) { + if (this.options.nameFor.comment) + this._addChild(this.options.nameFor.comment, text); + } + + //store CDATA separately if property is set + //otherwise add to tag's value + addCdata(text) { + if (this.options.nameFor.cdata) { + this._addChild(this.options.nameFor.cdata, text); + } else { + this.addRawValue(text || ""); + } + } + + addRawValue = text => this.addValue(text); + + addDeclaration() { + if (!this.options.declaration) { + } else { + this.addPi("?xml"); + } + this.attributes = {} + } +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js new file mode 100644 index 0000000..04205e5 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js @@ -0,0 +1,103 @@ +import { buildOptions, registerCommonValueParsers } from './ParserOptionsBuilder.js'; + +export default class OutputBuilder { + constructor(options) { + this.options = buildOptions(options); + this.registeredParsers = registerCommonValueParsers(this.options); + } + + registerValueParser(name, parserInstance) {//existing name will override the parser without warning + this.registeredParsers[name] = parserInstance; + } + + getInstance(parserOptions) { + return new JsArrBuilder(parserOptions, this.options, this.registeredParsers); + } +} + +const rootName = '!js_arr'; +import BaseOutputBuilder from './BaseOutputBuilder.js'; + +class JsArrBuilder extends BaseOutputBuilder { + + constructor(parserOptions, options, registeredParsers) { + super(); + this.tagsStack = []; + this.parserOptions = parserOptions; + this.options = options; + this.registeredParsers = registeredParsers; + + this.root = new Node(rootName); + this.currentNode = this.root; + this.attributes = {}; + } + + addTag(tag) { + //when a new tag is added, it should be added as child of current node + //TODO: shift this check to the parser + if (tag.name === "__proto__") tag.name = "#__proto__"; + + this.tagsStack.push(this.currentNode); + this.currentNode = new Node(tag.name, this.attributes); + this.attributes = {}; + } + + /** + * Check if the node should be added by checking user's preference + * @param {Node} node + * @returns boolean: true if the node should not be added + */ + closeTag() { + const node = this.currentNode; + this.currentNode = this.tagsStack.pop(); //set parent node in scope + if (this.options.onClose !== undefined) { + //TODO TagPathMatcher + const resultTag = this.options.onClose(node, + new TagPathMatcher(this.tagsStack, node)); + + if (resultTag) return; + } + this.currentNode.child.push(node); //to parent node + } + + //Called by parent class methods + _addChild(key, val) { + // if(key === "__proto__") tagName = "#__proto__"; + this.currentNode.child.push({ [key]: val }); + // this.currentNode.leafType = false; + } + + /** + * Add text value child node + * @param {string} text + */ + addValue(text) { + this.currentNode.child.push({ [this.options.nameFor.text]: this.parseValue(text, this.options.tags.valueParsers) }); + } + + addPi(name) { + //TODO: set pi flag + if (!this.options.ignorePiTags) { + const node = new Node(name, this.attributes); + this.currentNode[":@"] = this.attributes; + this.currentNode.child.push(node); + } + this.attributes = {}; + } + getOutput() { + return this.root.child[0]; + } +} + + + +class Node { + constructor(tagname, attributes) { + this.tagname = tagname; + this.child = []; //nested tags, text, cdata, comments + if (attributes && Object.keys(attributes).length > 0) + this[":@"] = attributes; + } +} + +module.exports = OutputBuilder; \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js new file mode 100644 index 0000000..f0eee0c --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js @@ -0,0 +1,100 @@ +import {buildOptions,registerCommonValueParsers} from"./ParserOptionsBuilder.js"; + +export default class OutputBuilder{ + constructor(options){ + this.options = buildOptions(options); + this.registeredParsers = registerCommonValueParsers(this.options); + } + + registerValueParser(name,parserInstance){//existing name will override the parser without warning + this.registeredParsers[name] = parserInstance; + } + + getInstance(parserOptions){ + return new JsMinArrBuilder(parserOptions, this.options, this.registeredParsers); + } +} + +import BaseOutputBuilder from "./BaseOutputBuilder.js"; +const rootName = '^'; + +class JsMinArrBuilder extends BaseOutputBuilder{ + + constructor(parserOptions, options,registeredParsers) { + super(); + this.tagsStack = []; + this.parserOptions = parserOptions; + this.options = options; + this.registeredParsers = registeredParsers; + + this.root = {[rootName]: []}; + this.currentNode = this.root; + this.currentNodeTagName = rootName; + this.attributes = {}; + } + + addTag(tag){ + //when a new tag is added, it should be added as child of current node + //TODO: shift this check to the parser + if(tag.name === "__proto__") tag.name = "#__proto__"; + + this.tagsStack.push([this.currentNodeTagName,this.currentNode]); //this.currentNode is parent node here + this.currentNodeTagName = tag.name; + this.currentNode = { [tag.name]:[]} + if(Object.keys(this.attributes).length > 0){ + this.currentNode[":@"] = this.attributes; + this.attributes = {}; + } + } + + /** + * Check if the node should be added by checking user's preference + * @param {Node} node + * @returns boolean: true if the node should not be added + */ + closeTag(){ + const node = this.currentNode; + const nodeName = this.currentNodeTagName; + const arr = this.tagsStack.pop(); //set parent node in scope + this.currentNodeTagName = arr[0]; + this.currentNode = arr[1]; + + if(this.options.onClose !== undefined){ + //TODO TagPathMatcher + const resultTag = this.options.onClose(node, + new TagPathMatcher(this.tagsStack,node)); + + if(resultTag) return; + } + this.currentNode[this.currentNodeTagName].push(node); //to parent node + } + + //Called by parent class methods + _addChild(key, val){ + // if(key === "__proto__") tagName = "#__proto__"; + this.currentNode.push( {[key]: val }); + // this.currentNode.leafType = false; + } + + /** + * Add text value child node + * @param {string} text + */ + addValue(text){ + this.currentNode[this.currentNodeTagName].push( {[this.options.nameFor.text]: this.parseValue(text, this.options.tags.valueParsers) }); + } + + addPi(name){ + if(!this.options.ignorePiTags){ + const node = { [name]:[]} + if(this.attributes){ + node[":@"] = this.attributes; + } + this.currentNode.push(node); + } + this.attributes = {}; + } + getOutput(){ + return this.root[rootName]; + } +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js new file mode 100644 index 0000000..9e19de9 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js @@ -0,0 +1,154 @@ + + +import { buildOptions, registerCommonValueParsers } from './ParserOptionsBuilder.js'; + +export default class OutputBuilder { + constructor(builderOptions) { + this.options = buildOptions(builderOptions); + this.registeredParsers = registerCommonValueParsers(this.options); + } + + registerValueParser(name, parserInstance) {//existing name will override the parser without warning + this.registeredParsers[name] = parserInstance; + } + + getInstance(parserOptions) { + return new JsObjBuilder(parserOptions, this.options, this.registeredParsers); + } +} + +import BaseOutputBuilder from './BaseOutputBuilder.js'; +const rootName = '^'; + +class JsObjBuilder extends BaseOutputBuilder { + + constructor(parserOptions, builderOptions, registeredParsers) { + super(); + //hold the raw detail of a tag and sequence with reference to the output + this.tagsStack = []; + this.parserOptions = parserOptions; + this.options = builderOptions; + this.registeredParsers = registeredParsers; + + this.root = {}; + this.parent = this.root; + this.tagName = rootName; + this.value = {}; + this.textValue = ""; + this.attributes = {}; + } + + addTag(tag) { + + let value = ""; + if (!isEmpty(this.attributes)) { + value = {}; + if (this.options.attributes.groupBy) { + value[this.options.attributes.groupBy] = this.attributes; + } else { + value = this.attributes; + } + } + + this.tagsStack.push([this.tagName, this.textValue, this.value]); //parent tag, parent text value, parent tag value (jsobj) + this.tagName = tag.name; + this.value = value; + this.textValue = ""; + this.attributes = {}; + } + + /** + * Check if the node should be added by checking user's preference + * @param {Node} node + * @returns boolean: true if the node should not be added + */ + closeTag() { + const tagName = this.tagName; + let value = this.value; + let textValue = this.textValue; + + //update tag text value + if (typeof value !== "object" && !Array.isArray(value)) { + value = this.parseValue(textValue.trim(), this.options.tags.valueParsers); + } else if (textValue.length > 0) { + value[this.options.nameFor.text] = this.parseValue(textValue.trim(), this.options.tags.valueParsers); + } + + + let resultTag = { + tagName: tagName, + value: value + }; + + if (this.options.onTagClose !== undefined) { + //TODO TagPathMatcher + resultTag = this.options.onClose(tagName, value, this.textValue, new TagPathMatcher(this.tagsStack, node)); + + if (!resultTag) return; + } + + //set parent node in scope + let arr = this.tagsStack.pop(); + let parentTag = arr[2]; + parentTag = this._addChildTo(resultTag.tagName, resultTag.value, parentTag); + + this.tagName = arr[0]; + this.textValue = arr[1]; + this.value = parentTag; + } + + _addChild(key, val) { + if (typeof this.value === "string") { + this.value = { [this.options.nameFor.text]: this.value }; + } + + this._addChildTo(key, val, this.value); + // this.currentNode.leafType = false; + this.attributes = {}; + } + + _addChildTo(key, val, node) { + if (typeof node === 'string') node = {}; + if (!node[key]) { + node[key] = val; + } else { //Repeated + if (!Array.isArray(node[key])) { //but not stored as array + node[key] = [node[key]]; + } + node[key].push(val); + } + return node; + } + + + /** + * Add text value child node + * @param {string} text + */ + addValue(text) { + //TODO: use bytes join + if (this.textValue.length > 0) this.textValue += " " + text; + else this.textValue = text; + } + + addPi(name) { + let value = ""; + if (!isEmpty(this.attributes)) { + value = {}; + if (this.options.attributes.groupBy) { + value[this.options.attributes.groupBy] = this.attributes; + } else { + value = this.attributes; + } + } + this._addChild(name, value); + + } + getOutput() { + return this.value; + } +} + +function isEmpty(obj) { + return Object.keys(obj).length === 0; +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js new file mode 100644 index 0000000..0e20683 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js @@ -0,0 +1,94 @@ +import trimParser from "../valueParsers/trim.js"; +import booleanParser from "../valueParsers/booleanParser.js"; +import currencyParser from "../valueParsers/currency.js"; +import numberParser from "../valueParsers/number.js"; + +const defaultOptions = { + nameFor: { + text: "#text", + comment: "", + cdata: "", + }, + // onTagClose: () => {}, + // onAttribute: () => {}, + piTag: false, + declaration: false, //"?xml" + tags: { + valueParsers: [ + // "trim", + // "boolean", + // "number", + // "currency", + // "date", + ] + }, + attributes: { + prefix: "@_", + suffix: "", + groupBy: "", + + valueParsers: [ + // "trim", + // "boolean", + // "number", + // "currency", + // "date", + ] + }, + dataType: { + + } +} + +//TODO +const withJoin = ["trim", "join", /*"entities",*/"number", "boolean", "currency"/*, "date"*/] +const withoutJoin = ["trim", /*"entities",*/"number", "boolean", "currency"/*, "date"*/] + +export function buildOptions(options) { + //clone + const finalOptions = { ...defaultOptions }; + + //add config missed in cloning + finalOptions.tags.valueParsers.push(...withJoin) + if (!this.preserveOrder) + finalOptions.tags.valueParsers.push(...withoutJoin); + + //add config missed in cloning + finalOptions.attributes.valueParsers.push(...withJoin) + + //override configuration + copyProperties(finalOptions, options); + return finalOptions; +} + +function copyProperties(target, source) { + for (let key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + if (typeof source[key] === 'object' && !Array.isArray(source[key])) { + // Recursively copy nested properties + if (typeof target[key] === 'undefined') { + target[key] = {}; + } + copyProperties(target[key], source[key]); + } else { + // Copy non-nested properties + target[key] = source[key]; + } + } + } +} + +export function registerCommonValueParsers(options) { + return { + "trim": new trimParser(), + // "join": this.entityParser.parse, + "boolean": new booleanParser(), + "number": new numberParser({ + hex: true, + leadingZeros: true, + eNotation: true + }), + "currency": new currencyParser(), + // "date": this.entityParser.parse, + } +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/Report.js b/bff/node_modules/fast-xml-parser/src/v6/Report.js new file mode 100644 index 0000000..e69de29 diff --git a/bff/node_modules/fast-xml-parser/src/v6/TagPath.js b/bff/node_modules/fast-xml-parser/src/v6/TagPath.js new file mode 100644 index 0000000..98148c7 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/TagPath.js @@ -0,0 +1,81 @@ +export default class TagPath{ + constructor(pathStr){ + let text = ""; + let tName = ""; + let pos; + let aName = ""; + let aVal = ""; + this.stack = [] + + for (let i = 0; i < pathStr.length; i++) { + let ch = pathStr[i]; + if(ch === " ") { + if(text.length === 0) continue; + tName = text; text = ""; + }else if(ch === "["){ + if(tName.length === 0){ + tName = text; text = ""; + } + i++; + for (; i < pathStr.length; i++) { + ch = pathStr[i]; + if(ch=== "=") continue; + else if(ch=== "]") {aName = text.trim(); text=""; break; i--;} + else if(ch === "'" || ch === '"'){ + let attrEnd = pathStr.indexOf(ch,i+1); + aVal = pathStr.substring(i+1, attrEnd); + i = attrEnd; + }else{ + text +=ch; + } + } + }else if(ch !== " " && text.length === 0 && tName.length > 0){//reading tagName + //save previous tag + this.stack.push(new TagPathNode(tName,pos,aName,aVal)); + text = ch; tName = ""; aName = ""; aVal = ""; + }else{ + text+=ch; + } + } + + //last tag in the path + if(tName.length >0 || text.length>0){ + this.stack.push(new TagPathNode(text||tName,pos,aName,aVal)); + } + } + + match(tagStack,node){ + if(this.stack[0].name !== "*"){ + if(this.stack.length !== tagStack.length +1) return false; + + //loop through tagPath and tagStack and match + for (let i = 0; i < this.tagStack.length; i++) { + if(!this.stack[i].match(tagStack[i])) return false; + } + } + if(!this.stack[this.stack.length - 1].match(node)) return false; + return true; + } +} + +class TagPathNode{ + constructor(name,position,attrName,attrVal){ + this.name = name; + this.position = position; + this.attrName = attrName, + this.attrVal = attrVal; + } + + match(node){ + let matching = true; + matching = node.name === this.name; + if(this.position) matching = node.position === this.position; + if(this.attrName) matching = node.attrs[this.attrName !== undefined]; + if(this.attrVal) matching = node.attrs[this.attrName !== this.attrVal]; + return matching; + } +} + +// console.log((new TagPath("* b[b]")).stack); +// console.log((new TagPath("a[a] b[b] c")).stack); +// console.log((new TagPath(" b [ b= 'cf sdadwa' ] a ")).stack); \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js b/bff/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js new file mode 100644 index 0000000..8110447 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js @@ -0,0 +1,13 @@ +import {TagPath} from './TagPath.js'; + +export default class TagPathMatcher{ + constructor(stack,node){ + this.stack = stack; + this.node= node; + } + + match(path){ + const tagPath = new TagPath(path); + return tagPath.match(this.stack, this.node); + } +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/v6/XMLParser.js b/bff/node_modules/fast-xml-parser/src/v6/XMLParser.js new file mode 100755 index 0000000..44c70dc --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/XMLParser.js @@ -0,0 +1,83 @@ +import { buildOptions } from './OptionsBuilder.js'; +import Xml2JsParser from './Xml2JsParser.js'; + +export default class XMLParser { + + constructor(options) { + this.externalEntities = {}; + this.options = buildOptions(options); + // console.log(this.options) + } + /** + * Parse XML data string to JS object + * @param {string|Buffer} xmlData + * @param {boolean|Object} validationOption + */ + parse(xmlData) { + if (Array.isArray(xmlData) && xmlData.byteLength !== undefined) { + return this.parse(xmlData); + } else if (xmlData.toString) { + xmlData = xmlData.toString(); + } else { + throw new Error("XML data is accepted in String or Bytes[] form.") + } + // if( validationOption){ + // if(validationOption === true) validationOption = {}; //validate with default options + + // const result = validator.validate(xmlData, validationOption); + // if (result !== true) { + // throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` ) + // } + // } + const parser = new Xml2JsParser(this.options); + parser.entityParser.addExternalEntities(this.externalEntities); + return parser.parse(xmlData); + } + /** + * Parse XML data buffer to JS object + * @param {string|Buffer} xmlData + * @param {boolean|Object} validationOption + */ + parseBytesArr(xmlData) { + if (Array.isArray(xmlData) && xmlData.byteLength !== undefined) { + } else { + throw new Error("XML data is accepted in Bytes[] form.") + } + const parser = new Xml2JsParser(this.options); + parser.entityParser.addExternalEntities(this.externalEntities); + return parser.parseBytesArr(xmlData); + } + /** + * Parse XML data stream to JS object + * @param {fs.ReadableStream} xmlDataStream + */ + parseStream(xmlDataStream) { + if (!isStream(xmlDataStream)) throw new Error("FXP: Invalid stream input"); + + const orderedObjParser = new Xml2JsParser(this.options); + orderedObjParser.entityParser.addExternalEntities(this.externalEntities); + return orderedObjParser.parseStream(xmlDataStream); + } + + /** + * Add Entity which is not by default supported by this library + * @param {string} key + * @param {string} value + */ + addEntity(key, value) { + if (value.indexOf("&") !== -1) { + throw new Error("Entity value can't have '&'") + } else if (key.indexOf("&") !== -1 || key.indexOf(";") !== -1) { + throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '") + } else if (value === "&") { + throw new Error("An entity with value '&' is not permitted"); + } else { + this.externalEntities[key] = value; + } + } +} + +function isStream(stream) { + if (stream && typeof stream.read === "function" && typeof stream.on === "function" && typeof stream.readableEnded === "boolean") return true; + return false; +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js b/bff/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js new file mode 100644 index 0000000..bd62265 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js @@ -0,0 +1,235 @@ +import StringSource from './inputSource/StringSource.js'; +import BufferSource from './inputSource/BufferSource.js'; +import {readTagExp,readClosingTagName} from './XmlPartReader.js'; +import {readComment, readCdata,readDocType,readPiTag} from './XmlSpecialTagsReader.js'; +import TagPath from './TagPath.js'; +import TagPathMatcher from './TagPathMatcher.js'; +import EntitiesParser from './EntitiesParser.js'; + +//To hold the data of current tag +//This is usually used to compare jpath expression against current tag +class TagDetail{ + constructor(name){ + this.name = name; + this.position = 0; + // this.attributes = {}; + } +} + +export default class Xml2JsParser { + constructor(options) { + this.options = options; + + this.currentTagDetail = null; + this.tagTextData = ""; + this.tagsStack = []; + this.entityParser = new EntitiesParser(options.htmlEntities); + this.stopNodes = []; + for (let i = 0; i < this.options.stopNodes.length; i++) { + this.stopNodes.push(new TagPath(this.options.stopNodes[i])); + } + } + + parse(strData) { + this.source = new StringSource(strData); + this.parseXml(); + return this.outputBuilder.getOutput(); + } + parseBytesArr(data) { + this.source = new BufferSource(data ); + this.parseXml(); + return this.outputBuilder.getOutput(); + } + + parseXml() { + //TODO: Separate TagValueParser as separate class. So no scope issue in node builder class + + //OutputBuilder should be set in XML Parser + this.outputBuilder = this.options.OutputBuilder.getInstance(this.options); + this.root = { root: true}; + this.currentTagDetail = this.root; + + while(this.source.canRead()){ + let ch = this.source.readCh(); + if (ch === "") break; + + if(ch === "<"){//tagStart + let nextChar = this.source.readChAt(0); + if (nextChar === "" ) throw new Error("Unexpected end of source"); + + + if(nextChar === "!" || nextChar === "?"){ + this.source.updateBufferBoundary(); + //previously collected text should be added to current node + this.addTextNode(); + + this.readSpecialTag(nextChar);// Read DOCTYPE, comment, CDATA, PI tag + }else if(nextChar === "/"){ + this.source.updateBufferBoundary(); + this.readClosingTag(); + // console.log(this.source.buffer.length, this.source.readable); + // console.log(this.tagsStack.length); + }else{//opening tag + this.readOpeningTag(); + } + }else{ + this.tagTextData += ch; + } + }//End While loop + if(this.tagsStack.length > 0 || ( this.tagTextData !== "undefined" && this.tagTextData.trimEnd().length > 0) ) throw new Error("Unexpected data in the end of document"); + } + + /** + * read closing paired tag. Set parent tag in scope. + * skip a node on user's choice + */ + readClosingTag(){ + const tagName = this.processTagName(readClosingTagName(this.source)); + // console.log(tagName, this.tagsStack.length); + this.validateClosingTag(tagName); + // All the text data collected, belongs to current tag. + if(!this.currentTagDetail.root) this.addTextNode(); + this.outputBuilder.closeTag(); + // Since the tag is closed now, parent tag comes in scope + this.currentTagDetail = this.tagsStack.pop(); + } + + validateClosingTag(tagName){ + // This can't be unpaired tag, or a stop tag. + if(this.isUnpaired(tagName) || this.isStopNode(tagName)) throw new Error(`Unexpected closing tag '${tagName}'`); + // This must match with last opening tag + else if(tagName !== this.currentTagDetail.name) + throw new Error(`Unexpected closing tag '${tagName}' expecting '${this.currentTagDetail.name}'`) + } + + /** + * Read paired, unpaired, self-closing, stop and special tags. + * Create a new node + * Push paired tag in stack. + */ + readOpeningTag(){ + //save previously collected text data to current node + this.addTextNode(); + + //create new tag + let tagExp = readTagExp(this, ">" ); + + // process and skip from tagsStack For unpaired tag, self closing tag, and stop node + const tagDetail = new TagDetail(tagExp.tagName); + if(this.isUnpaired(tagExp.tagName)) { + //TODO: this will lead 2 extra stack operation + this.outputBuilder.addTag(tagDetail); + this.outputBuilder.closeTag(); + } else if(tagExp.selfClosing){ + this.outputBuilder.addTag(tagDetail); + this.outputBuilder.closeTag(); + } else if(this.isStopNode(this.currentTagDetail)){ + // TODO: let's user set a stop node boundary detector for complex contents like script tag + //TODO: pass tag name only to avoid string operations + const content = source.readUptoCloseTag(` 0){ + //TODO: shift parsing to output builder + + this.outputBuilder.addValue(this.replaceEntities(this.tagTextData)); + } + this.tagTextData = ""; + } + // } + } + + processAttrName(name){ + if(name === "__proto__") name = "#__proto__"; + name = resolveNameSpace(name, this.removeNSPrefix); + return name; + } + + processTagName(name){ + if(name === "__proto__") name = "#__proto__"; + name = resolveNameSpace(name, this.removeNSPrefix); + return name; + } + + /** + * Generate tags path from tagsStack + */ + tagsPath(tagName){ + //TODO: return TagPath Object. User can call match method with path + return ""; + } + + isUnpaired(tagName){ + return this.options.tags.unpaired.indexOf(tagName) !== -1; + } + + /** + * valid expressions are + * tag nested + * * nested + * tag nested[attribute] + * tag nested[attribute=""] + * tag nested[attribute!=""] + * tag nested:0 //for future + * @param {string} tagName + * @returns + */ + isStopNode(node){ + for (let i = 0; i < this.stopNodes.length; i++) { + const givenPath = this.stopNodes[i]; + if(givenPath.match(this.tagsStack, node)) return true; + } + return false + } + + replaceEntities(text){ + //TODO: if option is set then replace entities + return this.entityParser.parse(text) + } +} + +function resolveNameSpace(name, removeNSPrefix) { + if (removeNSPrefix) { + const parts = name.split(':'); + if(parts.length === 2){ + if (parts[0] === 'xmlns') return ''; + else return parts[1]; + }else reportError(`Multiple namespaces ${name}`) + } + return name; +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/XmlPartReader.js b/bff/node_modules/fast-xml-parser/src/v6/XmlPartReader.js new file mode 100644 index 0000000..61c57ec --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/XmlPartReader.js @@ -0,0 +1,210 @@ +'use strict'; + +/** + * find paired tag for a stop node + * @param {string} xmlDoc + * @param {string} tagName + * @param {number} i : start index + */ +export function readStopNode(xmlDoc, tagName, i){ + const startIndex = i; + // Starting at 1 since we already have an open tag + let openTagCount = 1; + + for (; i < xmlDoc.length; i++) { + if( xmlDoc[i] === "<"){ + if (xmlDoc[i+1] === "/") {//close tag + const closeIndex = findSubStrIndex(xmlDoc, ">", i, `${tagName} is not closed`); + let closeTagName = xmlDoc.substring(i+2,closeIndex).trim(); + if(closeTagName === tagName){ + openTagCount--; + if (openTagCount === 0) { + return { + tagContent: xmlDoc.substring(startIndex, i), + i : closeIndex + } + } + } + i=closeIndex; + } else if(xmlDoc[i+1] === '?') { + const closeIndex = findSubStrIndex(xmlDoc, "?>", i+1, "StopNode is not closed.") + i=closeIndex; + } else if(xmlDoc.substr(i + 1, 3) === '!--') { + const closeIndex = findSubStrIndex(xmlDoc, "-->", i+3, "StopNode is not closed.") + i=closeIndex; + } else if(xmlDoc.substr(i + 1, 2) === '![') { + const closeIndex = findSubStrIndex(xmlDoc, "]]>", i, "StopNode is not closed.") - 2; + i=closeIndex; + } else { + const tagData = readTagExp(xmlDoc, i, '>') + + if (tagData) { + const openTagName = tagData && tagData.tagName; + if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== "/") { + openTagCount++; + } + i=tagData.closeIndex; + } + } + } + }//end for loop +} + +/** + * Read closing tag name + * @param {Source} source + * @returns tag name + */ +export function readClosingTagName(source){ + let text = ""; //temporary data + while(source.canRead()){ + let ch = source.readCh(); + // if (ch === null || ch === undefined) break; + // source.updateBuffer(); + + if (ch === ">") return text.trimEnd(); + else text += ch; + } + throw new Error(`Unexpected end of source. Reading '${substr}'`); +} + +/** + * Read XML tag and build attributes map + * This function can be used to read normal tag, pi tag. + * This function can't be used to read comment, CDATA, DOCTYPE. + * Eg + * @param {string} xmlDoc + * @param {number} startIndex starting index + * @returns tag expression includes tag name & attribute string + */ +export function readTagExp(parser) { + let inSingleQuotes = false; + let inDoubleQuotes = false; + let i; + let EOE = false; + + for (i = 0; parser.source.canRead(i); i++) { + const char = parser.source.readChAt(i); + + if (char === "'" && !inDoubleQuotes) { + inSingleQuotes = !inSingleQuotes; + } else if (char === '"' && !inSingleQuotes) { + inDoubleQuotes = !inDoubleQuotes; + } else if (char === '>' && !inSingleQuotes && !inDoubleQuotes) { + // If not inside quotes, stop reading at '>' + EOE = true; + break; + } + + } + if(inSingleQuotes || inDoubleQuotes){ + throw new Error("Invalid attribute expression. Quote is not properly closed"); + }else if(!EOE) throw new Error("Unexpected closing of source. Waiting for '>'"); + + + const exp = parser.source.readStr(i); + parser.source.updateBufferBoundary(i + 1); + return buildTagExpObj(exp, parser) +} + +export function readPiExp(parser) { + let inSingleQuotes = false; + let inDoubleQuotes = false; + let i; + let EOE = false; + + for (i = 0; parser.source.canRead(i) ; i++) { + const currentChar = parser.source.readChAt(i); + const nextChar = parser.source.readChAt(i+1); + + if (currentChar === "'" && !inDoubleQuotes) { + inSingleQuotes = !inSingleQuotes; + } else if (currentChar === '"' && !inSingleQuotes) { + inDoubleQuotes = !inDoubleQuotes; + } + + if (!inSingleQuotes && !inDoubleQuotes) { + if (currentChar === '?' && nextChar === '>') { + EOE = true; + break; // Exit the loop when '?>' is found + } + } + } + if(inSingleQuotes || inDoubleQuotes){ + throw new Error("Invalid attribute expression. Quote is not properly closed in PI tag expression"); + }else if(!EOE) throw new Error("Unexpected closing of source. Waiting for '?>'"); + + if(!parser.options.attributes.ignore){ + //TODO: use regex to verify attributes if not set to ignore + } + + const exp = parser.source.readStr(i); + parser.source.updateBufferBoundary(i + 1); + return buildTagExpObj(exp, parser) +} + +function buildTagExpObj(exp, parser){ + const tagExp = { + tagName: "", + selfClosing: false + }; + let attrsExp = ""; + + // Check for self-closing tag before setting the name + if(exp[exp.length -1] === "/") { + tagExp.selfClosing = true; + exp = exp.slice(0, -1); // Remove the trailing slash + } + + //separate tag name + let i = 0; + for (; i < exp.length; i++) { + const char = exp[i]; + if(char === " "){ + tagExp.tagName = exp.substring(0, i); + attrsExp = exp.substring(i + 1); + break; + } + } + //only tag + if(tagExp.tagName.length === 0 && i === exp.length)tagExp.tagName = exp; + + tagExp.tagName = tagExp.tagName.trimEnd(); + + if(!parser.options.attributes.ignore && attrsExp.length > 0){ + parseAttributesExp(attrsExp,parser) + } + + return tagExp; +} + +const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])([\\s\\S]*?)\\3)?', 'gm'); + +function parseAttributesExp(attrStr, parser) { + const matches = getAllMatches(attrStr, attrsRegx); + const len = matches.length; //don't make it inline + for (let i = 0; i < len; i++) { + let attrName = parser.processAttrName(matches[i][1]); + let attrVal = parser.replaceEntities(matches[i][4] || true); + + parser.outputBuilder.addAttribute(attrName, attrVal); + } +} + + +const getAllMatches = function(string, regex) { + const matches = []; + let match = regex.exec(string); + while (match) { + const allmatches = []; + allmatches.startIndex = regex.lastIndex - match[0].length; + const len = match.length; + for (let index = 0; index < len; index++) { + allmatches.push(match[index]); + } + matches.push(allmatches); + match = regex.exec(string); + } + return matches; +}; + diff --git a/bff/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js b/bff/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js new file mode 100644 index 0000000..330e0a4 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js @@ -0,0 +1,111 @@ +import {readPiExp} from './XmlPartReader.js'; + +export function readCdata(parser){ + //"); + parser.outputBuilder.addCdata(text); +} +export function readPiTag(parser){ + //"); + if(!tagExp) throw new Error("Invalid Pi Tag expression."); + + if (tagExp.tagName === "?xml") {//TODO: test if tagName is just xml + parser.outputBuilder.addDeclaration(); + } else { + parser.outputBuilder.addPi("?"+tagExp.tagName); + } +} + +export function readComment(parser){ + //"); + parser.outputBuilder.addComment(text); +} + +const DOCTYPE_tags = { + "EL":/^EMENT\s+([^\s>]+)\s+(ANY|EMPTY|\(.+\)\s*$)/m, + "AT":/^TLIST\s+[^\s]+\s+[^\s]+\s+[^\s]+\s+[^\s]+\s+$/m, + "NO":/^TATION.+$/m +} +export function readDocType(parser){ + //"); + const regx = DOCTYPE_tags[str]; + if(regx){ + const match = dTagExp.match(regx); + if(!match) throw new Error("Invalid DOCTYPE"); + }else throw new Error("Invalid DOCTYPE"); + } + }else if( ch === '>' && lastch === "]"){//end of doctype + return; + } + }else if( ch === '>'){//end of doctype + return; + }else if( ch === '['){ + hasBody = true; + }else{ + lastch = ch; + } + }//End While loop + +} + +function registerEntity(parser){ + //read Entity + let attrBoundary=""; + let name ="", val =""; + while(source.canRead()){ + let ch = source.readCh(); + + if(attrBoundary){ + if (ch === attrBoundary){ + val = text; + text = "" + } + }else if(ch === " " || ch === "\t"){ + if(!name){ + name = text.trimStart(); + text = ""; + } + }else if (ch === '"' || ch === "'") {//start of attrBoundary + attrBoundary = ch; + }else if(ch === ">"){ + parser.entityParser.addExternalEntity(name,val); + return; + }else{ + text+=ch; + } + } +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js b/bff/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js new file mode 100644 index 0000000..2c5d8b5 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js @@ -0,0 +1,116 @@ +const Constants = { + space: 32, + tab: 9 +} +export default class BufferSource{ + constructor(bytesArr){ + this.line = 1; + this.cols = 0; + this.buffer = bytesArr; + this.startIndex = 0; + } + + + + readCh() { + return String.fromCharCode(this.buffer[this.startIndex++]); + } + + readChAt(index) { + return String.fromCharCode(this.buffer[this.startIndex+index]); + } + + readStr(n,from){ + if(typeof from === "undefined") from = this.startIndex; + return this.buffer.slice(from, from + n).toString(); + } + + readUpto(stopStr) { + const inputLength = this.buffer.length; + const stopLength = stopStr.length; + const stopBuffer = Buffer.from(stopStr); + + for (let i = this.startIndex; i < inputLength; i++) { + let match = true; + for (let j = 0; j < stopLength; j++) { + if (this.buffer[i + j] !== stopBuffer[j]) { + match = false; + break; + } + } + + if (match) { + const result = this.buffer.slice(this.startIndex, i).toString(); + this.startIndex = i + stopLength; + return result; + } + } + + throw new Error(`Unexpected end of source. Reading '${stopStr}'`); +} + +readUptoCloseTag(stopStr) { //stopStr: "'){ //TODO: if it should be equivalent ASCII + match = 2; + //tag boundary found + // this.startIndex + } + }else{ + match = 1; + for (let j = 0; j < stopLength; j++) { + if (this.buffer[i + j] !== stopBuffer[j]) { + match = 0; + break; + } + } + } + if (match === 2) {//matched closing part + const result = this.buffer.slice(this.startIndex, stopIndex - 1 ).toString(); + this.startIndex = i + 1; + return result; + } + } + + throw new Error(`Unexpected end of source. Reading '${stopStr}'`); +} + + readFromBuffer(n, shouldUpdate) { + let ch; + if (n === 1) { + ch = this.buffer[this.startIndex]; + if (ch === 10) { + this.line++; + this.cols = 1; + } else { + this.cols++; + } + ch = String.fromCharCode(ch); + } else { + this.cols += n; + ch = this.buffer.slice(this.startIndex, this.startIndex + n).toString(); + } + if (shouldUpdate) this.updateBuffer(n); + return ch; + } + + updateBufferBoundary(n = 1) { //n: number of characters read + this.startIndex += n; + } + + canRead(n){ + n = n || this.startIndex; + return this.buffer.length - n + 1 > 0; + } + +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js b/bff/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js new file mode 100644 index 0000000..275889a --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js @@ -0,0 +1,121 @@ +const whiteSpaces = [" ", "\n", "\t"]; + + +export default class StringSource{ + constructor(str){ + this.line = 1; + this.cols = 0; + this.buffer = str; + //a boundary pointer to indicate where from the buffer dat should be read + // data before this pointer can be deleted to free the memory + this.startIndex = 0; + } + + readCh() { + return this.buffer[this.startIndex++]; + } + + readChAt(index) { + return this.buffer[this.startIndex+index]; + } + + readStr(n,from){ + if(typeof from === "undefined") from = this.startIndex; + return this.buffer.substring(from, from + n); + } + + readUpto(stopStr) { + const inputLength = this.buffer.length; + const stopLength = stopStr.length; + + for (let i = this.startIndex; i < inputLength; i++) { + let match = true; + for (let j = 0; j < stopLength; j++) { + if (this.buffer[i + j] !== stopStr[j]) { + match = false; + break; + } + } + + if (match) { + const result = this.buffer.substring(this.startIndex, i); + this.startIndex = i + stopLength; + return result; + } + } + + throw new Error(`Unexpected end of source. Reading '${stopStr}'`); + } + + readUptoCloseTag(stopStr) { //stopStr: "'){ + match = 2; + //tag boundary found + // this.startIndex + } + }else{ + match = 1; + for (let j = 0; j < stopLength; j++) { + if (this.buffer[i + j] !== stopStr[j]) { + match = 0; + break; + } + } + } + if (match === 2) {//matched closing part + const result = this.buffer.substring(this.startIndex, stopIndex - 1 ); + this.startIndex = i + 1; + return result; + } + } + + throw new Error(`Unexpected end of source. Reading '${stopStr}'`); + } + + readFromBuffer(n, updateIndex){ + let ch; + if(n===1){ + ch = this.buffer[this.startIndex]; + // if(ch === "\n") { + // this.line++; + // this.cols = 1; + // }else{ + // this.cols++; + // } + }else{ + ch = this.buffer.substring(this.startIndex, this.startIndex + n); + // if("".indexOf("\n") !== -1){ + // //TODO: handle the scenario when there are multiple lines + // //TODO: col should be set to number of chars after last '\n' + // // this.cols = 1; + // }else{ + // this.cols += n; + + // } + } + if(updateIndex) this.updateBufferBoundary(n); + return ch; + } + + //TODO: rename to updateBufferReadIndex + + updateBufferBoundary(n = 1) { //n: number of characters read + this.startIndex += n; + } + + canRead(n){ + n = n || this.startIndex; + return this.buffer.length - n + 1 > 0; + } + +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js new file mode 100644 index 0000000..b7f7ba8 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js @@ -0,0 +1,105 @@ +const ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" }; +const htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent": { regex: /&(cent|#162);/g, val: "¢" }, + "pound": { regex: /&(pound|#163);/g, val: "£" }, + "yen": { regex: /&(yen|#165);/g, val: "¥" }, + "euro": { regex: /&(euro|#8364);/g, val: "€" }, + "copyright": { regex: /&(copy|#169);/g, val: "©" }, + "reg": { regex: /&(reg|#174);/g, val: "®" }, + "inr": { regex: /&(inr|#8377);/g, val: "₹" }, + "num_dec": { regex: /&#([0-9]{1,7});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 10)) }, + "num_hex": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => String.fromCodePoint(Number.parseInt(str, 16)) }, +}; + +export default class EntitiesParser { + constructor(replaceHtmlEntities) { + this.replaceHtmlEntities = replaceHtmlEntities; + this.docTypeEntities = {}; + this.lastEntities = { + "apos": { regex: /&(apos|#39|#x27);/g, val: "'" }, + "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" }, + "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" }, + "quot": { regex: /&(quot|#34|#x22);/g, val: "\"" }, + }; + } + + addExternalEntities(externalEntities) { + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.addExternalEntity(ent, externalEntities[ent]) + } + } + addExternalEntity(key, val) { + validateEntityName(key); + if (val.indexOf("&") !== -1) { + reportWarning(`Entity ${key} is not added as '&' is found in value;`) + return; + } else { + this.lastEntities[ent] = { + regex: new RegExp("&" + key + ";", "g"), + val: val + } + } + } + + addDocTypeEntities(entities) { + const entKeys = Object.keys(entities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.docTypeEntities[ent] = { + regex: new RegExp("&" + ent + ";", "g"), + val: entities[ent] + } + } + } + + parse(val) { + return this.replaceEntitiesValue(val) + } + + /** + * 1. Replace DOCTYPE entities + * 2. Replace external entities + * 3. Replace HTML entities if asked + * @param {string} val + */ + replaceEntitiesValue(val) { + if (typeof val === "string" && val.length > 0) { + for (let entityName in this.docTypeEntities) { + const entity = this.docTypeEntities[entityName]; + val = val.replace(entity.regx, entity.val); + } + for (let entityName in this.lastEntities) { + const entity = this.lastEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + if (this.replaceHtmlEntities) { + for (let entityName in htmlEntities) { + const entity = htmlEntities[entityName]; + val = val.replace(entity.regex, entity.val); + } + } + val = val.replace(ampEntity.regex, ampEntity.val); + } + return val; + } +}; + +//an entity name should not contains special characters that may be used in regex +//Eg !?\\\/[]$%{}^&*()<> +const specialChar = "!?\\\/[]$%{}^&*()<>|+"; + +function validateEntityName(name) { + for (let i = 0; i < specialChar.length; i++) { + const ch = specialChar[i]; + if (name.indexOf(ch) !== -1) throw new Error(`Invalid character ${ch} in entity name`); + } + return name; +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js new file mode 100644 index 0000000..bc8f806 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js @@ -0,0 +1,22 @@ +export default class boolParser{ + constructor(trueList, falseList){ + if(trueList) + this.trueList = trueList; + else + this.trueList = ["true"]; + + if(falseList) + this.falseList = falseList; + else + this.falseList = ["false"]; + } + parse(val){ + if (typeof val === 'string') { + //TODO: performance: don't convert + const temp = val.toLowerCase(); + if(this.trueList.indexOf(temp) !== -1) return true; + else if(this.falseList.indexOf(temp) !== -1 ) return false; + } + return val; + } +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js new file mode 100644 index 0000000..ec3ba42 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js @@ -0,0 +1,19 @@ +export default function boolParserExt(val){ + if(isArray(val)){ + for (let i = 0; i < val.length; i++) { + val[i] = parse(val[i]) + } + }else{ + val = parse(val) + } + return val; +} + +function parse(val){ + if (typeof val === 'string') { + const temp = val.toLowerCase(); + if(temp === 'true' || temp ==="yes" || temp==="1") return true; + else if(temp === 'false' || temp ==="no" || temp==="0") return false; + } + return val; +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js new file mode 100644 index 0000000..3772817 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js @@ -0,0 +1,38 @@ +const defaultOptions = { + maxLength: 200, + // locale: "en-IN" +} +const localeMap = { + "$":"en-US", + "€":"de-DE", + "£":"en-GB", + "¥":"ja-JP", + "₹":"en-IN", +} +const sign = "(?:-|\+)?"; +const digitsAndSeparator = "(?:\d+|\d{1,3}(?:,\d{3})+)"; +const decimalPart = "(?:\.\d{1,2})?"; +const symbol = "(?:\$|€|¥|₹)?"; + +const currencyCheckRegex = /^\s*(?:-|\+)?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d{1,2})?\s*(?:\$|€|¥|₹)?\s*$/u; + +export default class CurrencyParser{ + constructor(options){ + this.options = options || defaultOptions; + } + parse(val){ + if (typeof val === 'string' && val.length <= this.options.maxLength) { + if(val.indexOf(",,") !== -1 && val.indexOf(".." !== -1)){ + const match = val.match(currencyCheckRegex); + if(match){ + const locale = this.options.locale || localeMap[match[2]||match[5]||"₹"]; + const formatter = new Intl.NumberFormat(locale) + val = val.replace(/[^0-9,.]/g, '').trim(); + val = Number(val.replace(formatter.format(1000)[1], '')); + } + } + } + return val; + } +} +CurrencyParser.defaultOptions = defaultOptions; diff --git a/bff/node_modules/fast-xml-parser/src/v6/valueParsers/join.js b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/join.js new file mode 100644 index 0000000..f597d99 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/join.js @@ -0,0 +1,13 @@ +/** + * + * @param {array} val + * @param {string} by + * @returns + */ +export default function join(val, by=" "){ + if(isArray(val)){ + val.join(by) + } + return val; +} + diff --git a/bff/node_modules/fast-xml-parser/src/v6/valueParsers/number.js b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/number.js new file mode 100644 index 0000000..8397fb6 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/number.js @@ -0,0 +1,14 @@ +import toNumber from "strnum"; + + +export default class numParser{ + constructor(options){ + this.options = options; + } + parse(val){ + if (typeof val === 'string') { + val = toNumber(val,this.options); + } + return val; + } +} diff --git a/bff/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js new file mode 100644 index 0000000..50eed7f --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js @@ -0,0 +1,6 @@ +export default class trimmer{ + parse(val){ + if(typeof val === "string") return val.trim(); + else return val; + } +} diff --git a/bff/node_modules/fast-xml-parser/src/validator.js b/bff/node_modules/fast-xml-parser/src/validator.js new file mode 100644 index 0000000..277225c --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/validator.js @@ -0,0 +1,425 @@ +'use strict'; + +import { getAllMatches, isName } from './util.js'; + +const defaultOptions = { + allowBooleanAttributes: false, //A tag can have attributes without any value + unpairedTags: [] +}; + +//const tagsPattern = new RegExp("<\\/?([\\w:\\-_\.]+)\\s*\/?>","g"); +export function validate(xmlData, options) { + options = Object.assign({}, defaultOptions, options); + + //xmlData = xmlData.replace(/(\r\n|\n|\r)/gm,"");//make it single line + //xmlData = xmlData.replace(/(^\s*<\?xml.*?\?>)/g,"");//Remove XML starting tag + //xmlData = xmlData.replace(/()/g,"");//Remove DOCTYPE + const tags = []; + let tagFound = false; + + //indicates that the root tag has been closed (aka. depth 0 has been reached) + let reachedRoot = false; + + if (xmlData[0] === '\ufeff') { + // check for byte order mark (BOM) + xmlData = xmlData.substr(1); + } + + for (let i = 0; i < xmlData.length; i++) { + + if (xmlData[i] === '<' && xmlData[i + 1] === '?') { + i += 2; + i = readPI(xmlData, i); + if (i.err) return i; + } else if (xmlData[i] === '<') { + //starting of tag + //read until you reach to '>' avoiding any '>' in attribute value + let tagStartPos = i; + i++; + + if (xmlData[i] === '!') { + i = readCommentAndCDATA(xmlData, i); + continue; + } else { + let closingTag = false; + if (xmlData[i] === '/') { + //closing tag + closingTag = true; + i++; + } + //read tagname + let tagName = ''; + for (; i < xmlData.length && + xmlData[i] !== '>' && + xmlData[i] !== ' ' && + xmlData[i] !== '\t' && + xmlData[i] !== '\n' && + xmlData[i] !== '\r'; i++ + ) { + tagName += xmlData[i]; + } + tagName = tagName.trim(); + //console.log(tagName); + + if (tagName[tagName.length - 1] === '/') { + //self closing tag without attributes + tagName = tagName.substring(0, tagName.length - 1); + //continue; + i--; + } + if (!validateTagName(tagName)) { + let msg; + if (tagName.trim().length === 0) { + msg = "Invalid space after '<'."; + } else { + msg = "Tag '" + tagName + "' is an invalid name."; + } + return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i)); + } + + const result = readAttributeStr(xmlData, i); + if (result === false) { + return getErrorObject('InvalidAttr', "Attributes for '" + tagName + "' have open quote.", getLineNumberForPosition(xmlData, i)); + } + let attrStr = result.value; + i = result.index; + + if (attrStr[attrStr.length - 1] === '/') { + //self closing tag + const attrStrStart = i - attrStr.length; + attrStr = attrStr.substring(0, attrStr.length - 1); + const isValid = validateAttributeString(attrStr, options); + if (isValid === true) { + tagFound = true; + //continue; //text may presents after self closing tag + } else { + //the result from the nested function returns the position of the error within the attribute + //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute + //this gives us the absolute index in the entire xml, which we can use to find the line at last + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line)); + } + } else if (closingTag) { + if (!result.tagClosed) { + return getErrorObject('InvalidTag', "Closing tag '" + tagName + "' doesn't have proper closing.", getLineNumberForPosition(xmlData, i)); + } else if (attrStr.trim().length > 0) { + return getErrorObject('InvalidTag', "Closing tag '" + tagName + "' can't have attributes or invalid starting.", getLineNumberForPosition(xmlData, tagStartPos)); + } else if (tags.length === 0) { + return getErrorObject('InvalidTag', "Closing tag '" + tagName + "' has not been opened.", getLineNumberForPosition(xmlData, tagStartPos)); + } else { + const otg = tags.pop(); + if (tagName !== otg.tagName) { + let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos); + return getErrorObject('InvalidTag', + "Expected closing tag '" + otg.tagName + "' (opened in line " + openPos.line + ", col " + openPos.col + ") instead of closing tag '" + tagName + "'.", + getLineNumberForPosition(xmlData, tagStartPos)); + } + + //when there are no more tags, we reached the root level. + if (tags.length == 0) { + reachedRoot = true; + } + } + } else { + const isValid = validateAttributeString(attrStr, options); + if (isValid !== true) { + //the result from the nested function returns the position of the error within the attribute + //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute + //this gives us the absolute index in the entire xml, which we can use to find the line at last + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line)); + } + + //if the root level has been reached before ... + if (reachedRoot === true) { + return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i)); + } else if (options.unpairedTags.indexOf(tagName) !== -1) { + //don't push into stack + } else { + tags.push({ tagName, tagStartPos }); + } + tagFound = true; + } + + //skip tag text value + //It may include comments and CDATA value + for (i++; i < xmlData.length; i++) { + if (xmlData[i] === '<') { + if (xmlData[i + 1] === '!') { + //comment or CADATA + i++; + i = readCommentAndCDATA(xmlData, i); + continue; + } else if (xmlData[i + 1] === '?') { + i = readPI(xmlData, ++i); + if (i.err) return i; + } else { + break; + } + } else if (xmlData[i] === '&') { + const afterAmp = validateAmpersand(xmlData, i); + if (afterAmp == -1) + return getErrorObject('InvalidChar', "char '&' is not expected.", getLineNumberForPosition(xmlData, i)); + i = afterAmp; + } else { + if (reachedRoot === true && !isWhiteSpace(xmlData[i])) { + return getErrorObject('InvalidXml', "Extra text at the end", getLineNumberForPosition(xmlData, i)); + } + } + } //end of reading tag text value + if (xmlData[i] === '<') { + i--; + } + } + } else { + if (isWhiteSpace(xmlData[i])) { + continue; + } + return getErrorObject('InvalidChar', "char '" + xmlData[i] + "' is not expected.", getLineNumberForPosition(xmlData, i)); + } + } + + if (!tagFound) { + return getErrorObject('InvalidXml', 'Start tag expected.', 1); + } else if (tags.length == 1) { + return getErrorObject('InvalidTag', "Unclosed tag '" + tags[0].tagName + "'.", getLineNumberForPosition(xmlData, tags[0].tagStartPos)); + } else if (tags.length > 0) { + return getErrorObject('InvalidXml', "Invalid '" + + JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\r?\n/g, '') + + "' found.", { line: 1, col: 1 }); + } + + return true; +}; + +function isWhiteSpace(char) { + return char === ' ' || char === '\t' || char === '\n' || char === '\r'; +} +/** + * Read Processing insstructions and skip + * @param {*} xmlData + * @param {*} i + */ +function readPI(xmlData, i) { + const start = i; + for (; i < xmlData.length; i++) { + if (xmlData[i] == '?' || xmlData[i] == ' ') { + //tagname + const tagname = xmlData.substr(start, i - start); + if (i > 5 && tagname === 'xml') { + return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i)); + } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') { + //check if valid attribut string + i++; + break; + } else { + continue; + } + } + } + return i; +} + +function readCommentAndCDATA(xmlData, i) { + if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') { + //comment + for (i += 3; i < xmlData.length; i++) { + if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') { + i += 2; + break; + } + } + } else if ( + xmlData.length > i + 8 && + xmlData[i + 1] === 'D' && + xmlData[i + 2] === 'O' && + xmlData[i + 3] === 'C' && + xmlData[i + 4] === 'T' && + xmlData[i + 5] === 'Y' && + xmlData[i + 6] === 'P' && + xmlData[i + 7] === 'E' + ) { + let angleBracketsCount = 1; + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === '<') { + angleBracketsCount++; + } else if (xmlData[i] === '>') { + angleBracketsCount--; + if (angleBracketsCount === 0) { + break; + } + } + } + } else if ( + xmlData.length > i + 9 && + xmlData[i + 1] === '[' && + xmlData[i + 2] === 'C' && + xmlData[i + 3] === 'D' && + xmlData[i + 4] === 'A' && + xmlData[i + 5] === 'T' && + xmlData[i + 6] === 'A' && + xmlData[i + 7] === '[' + ) { + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') { + i += 2; + break; + } + } + } + + return i; +} + +const doubleQuote = '"'; +const singleQuote = "'"; + +/** + * Keep reading xmlData until '<' is found outside the attribute value. + * @param {string} xmlData + * @param {number} i + */ +function readAttributeStr(xmlData, i) { + let attrStr = ''; + let startChar = ''; + let tagClosed = false; + for (; i < xmlData.length; i++) { + if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) { + if (startChar === '') { + startChar = xmlData[i]; + } else if (startChar !== xmlData[i]) { + //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa + } else { + startChar = ''; + } + } else if (xmlData[i] === '>') { + if (startChar === '') { + tagClosed = true; + break; + } + } + attrStr += xmlData[i]; + } + if (startChar !== '') { + return false; + } + + return { + value: attrStr, + index: i, + tagClosed: tagClosed + }; +} + +/** + * Select all the attributes whether valid or invalid. + */ +const validAttrStrRegxp = new RegExp('(\\s*)([^\\s=]+)(\\s*=)?(\\s*([\'"])(([\\s\\S])*?)\\5)?', 'g'); + +//attr, ="sd", a="amit's", a="sd"b="saf", ab cd="" + +function validateAttributeString(attrStr, options) { + //console.log("start:"+attrStr+":end"); + + //if(attrStr.trim().length === 0) return true; //empty string + + const matches = getAllMatches(attrStr, validAttrStrRegxp); + const attrNames = {}; + + for (let i = 0; i < matches.length; i++) { + if (matches[i][1].length === 0) { + //nospace before attribute name: a="sd"b="saf" + return getErrorObject('InvalidAttr', "Attribute '" + matches[i][2] + "' has no space in starting.", getPositionFromMatch(matches[i])) + } else if (matches[i][3] !== undefined && matches[i][4] === undefined) { + return getErrorObject('InvalidAttr', "Attribute '" + matches[i][2] + "' is without value.", getPositionFromMatch(matches[i])); + } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) { + //independent attribute: ab + return getErrorObject('InvalidAttr', "boolean attribute '" + matches[i][2] + "' is not allowed.", getPositionFromMatch(matches[i])); + } + /* else if(matches[i][6] === undefined){//attribute without value: ab= + return { err: { code:"InvalidAttr",msg:"attribute " + matches[i][2] + " has no value assigned."}}; + } */ + const attrName = matches[i][2]; + if (!validateAttrName(attrName)) { + return getErrorObject('InvalidAttr', "Attribute '" + attrName + "' is an invalid name.", getPositionFromMatch(matches[i])); + } + if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) { + //check for duplicate attribute. + attrNames[attrName] = 1; + } else { + return getErrorObject('InvalidAttr', "Attribute '" + attrName + "' is repeated.", getPositionFromMatch(matches[i])); + } + } + + return true; +} + +function validateNumberAmpersand(xmlData, i) { + let re = /\d/; + if (xmlData[i] === 'x') { + i++; + re = /[\da-fA-F]/; + } + for (; i < xmlData.length; i++) { + if (xmlData[i] === ';') + return i; + if (!xmlData[i].match(re)) + break; + } + return -1; +} + +function validateAmpersand(xmlData, i) { + // https://www.w3.org/TR/xml/#dt-charref + i++; + if (xmlData[i] === ';') + return -1; + if (xmlData[i] === '#') { + i++; + return validateNumberAmpersand(xmlData, i); + } + let count = 0; + for (; i < xmlData.length; i++, count++) { + if (xmlData[i].match(/\w/) && count < 20) + continue; + if (xmlData[i] === ';') + break; + return -1; + } + return i; +} + +function getErrorObject(code, message, lineNumber) { + return { + err: { + code: code, + msg: message, + line: lineNumber.line || lineNumber, + col: lineNumber.col, + }, + }; +} + +function validateAttrName(attrName) { + return isName(attrName); +} + +// const startsWithXML = /^xml/i; + +function validateTagName(tagname) { + return isName(tagname) /* && !tagname.match(startsWithXML) */; +} + +//this function returns the line number for the character at the given index +function getLineNumberForPosition(xmlData, index) { + const lines = xmlData.substring(0, index).split(/\r?\n/); + return { + line: lines.length, + + // column number is last line's length + 1, because column numbering starts at 1: + col: lines[lines.length - 1].length + 1 + }; +} + +//this function returns the position of the first character of match within attrStr +function getPositionFromMatch(match) { + return match.startIndex + match[1].length; +} diff --git a/bff/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js b/bff/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js new file mode 100644 index 0000000..30cfaa1 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js @@ -0,0 +1,6 @@ +// Re-export from fast-xml-builder for backward compatibility +import XMLBuilder from 'fast-xml-builder'; +export default XMLBuilder; + +// If there are any named exports you also want to re-export: +export * from 'fast-xml-builder'; \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js b/bff/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js new file mode 100644 index 0000000..18dc310 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js @@ -0,0 +1,410 @@ +import { isName } from '../util.js'; + +export default class DocTypeReader { + constructor(options) { + this.suppressValidationErr = !options; + this.options = options; + } + + readDocType(xmlData, i) { + const entities = Object.create(null); + let entityCount = 0; + + if (xmlData[i + 3] === 'O' && + xmlData[i + 4] === 'C' && + xmlData[i + 5] === 'T' && + xmlData[i + 6] === 'Y' && + xmlData[i + 7] === 'P' && + xmlData[i + 8] === 'E') { + i = i + 9; + let angleBracketsCount = 1; + let hasBody = false, comment = false; + let exp = ""; + for (; i < xmlData.length; i++) { + if (xmlData[i] === '<' && !comment) { //Determine the tag type + if (hasBody && hasSeq(xmlData, "!ENTITY", i)) { + i += 7; + let entityName, val; + [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr); + if (val.indexOf("&") === -1) { //Parameter entities are not supported + if (this.options.enabled !== false && + this.options.maxEntityCount != null && + entityCount >= this.options.maxEntityCount) { + throw new Error( + `Entity count (${entityCount + 1}) exceeds maximum allowed (${this.options.maxEntityCount})` + ); + } + //const escaped = entityName.replace(/[.\-+*:]/g, '\\.'); + const escaped = entityName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + entities[entityName] = { + regx: RegExp(`&${escaped};`, "g"), + val: val + }; + entityCount++; + } + } + else if (hasBody && hasSeq(xmlData, "!ELEMENT", i)) { + i += 8;//Not supported + const { index } = this.readElementExp(xmlData, i + 1); + i = index; + } else if (hasBody && hasSeq(xmlData, "!ATTLIST", i)) { + i += 8;//Not supported + // const {index} = this.readAttlistExp(xmlData,i+1); + // i = index; + } else if (hasBody && hasSeq(xmlData, "!NOTATION", i)) { + i += 9;//Not supported + const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr); + i = index; + } else if (hasSeq(xmlData, "!--", i)) comment = true; + else throw new Error(`Invalid DOCTYPE`); + + angleBracketsCount++; + exp = ""; + } else if (xmlData[i] === '>') { //Read tag content + if (comment) { + if (xmlData[i - 1] === "-" && xmlData[i - 2] === "-") { + comment = false; + angleBracketsCount--; + } + } else { + angleBracketsCount--; + } + if (angleBracketsCount === 0) { + break; + } + } else if (xmlData[i] === '[') { + hasBody = true; + } else { + exp += xmlData[i]; + } + } + if (angleBracketsCount !== 0) { + throw new Error(`Unclosed DOCTYPE`); + } + } else { + throw new Error(`Invalid Tag instead of DOCTYPE`); + } + return { entities, i }; + } + readEntityExp(xmlData, i) { + //External entities are not supported + // + + //Parameter entities are not supported + // + + //Internal entities are supported + // + + // Skip leading whitespace after this.options.maxEntitySize) { + throw new Error( + `Entity "${entityName}" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})` + ); + } + + i--; + return [entityName, entityValue, i]; + } + + readNotationExp(xmlData, i) { + // Skip leading whitespace after + // + // + // + // + + // Skip leading whitespace after { + while (index < data.length && /\s/.test(data[index])) { + index++; + } + return index; +}; + + + +function hasSeq(data, seq, i) { + for (let j = 0; j < seq.length; j++) { + if (seq[j] !== data[i + j + 1]) return false; + } + return true; +} + +function validateEntityName(name) { + if (isName(name)) + return name; + else + throw new Error(`Invalid entity name ${name}`); +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js b/bff/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js new file mode 100644 index 0000000..baf6f9c --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js @@ -0,0 +1,159 @@ +import { DANGEROUS_PROPERTY_NAMES, criticalProperties } from "../util.js"; + +const defaultOnDangerousProperty = (name) => { + if (DANGEROUS_PROPERTY_NAMES.includes(name)) { + return "__" + name; + } + return name; +}; + + +export const defaultOptions = { + preserveOrder: false, + attributeNamePrefix: '@_', + attributesGroupName: false, + textNodeName: '#text', + ignoreAttributes: true, + removeNSPrefix: false, // remove NS from tag name or attribute name if true + allowBooleanAttributes: false, //a tag can have attributes without any value + //ignoreRootElement : false, + parseTagValue: true, + parseAttributeValue: false, + trimValues: true, //Trim string values of tag and attributes + cdataPropName: false, + numberParseOptions: { + hex: true, + leadingZeros: true, + eNotation: true + }, + tagValueProcessor: function (tagName, val) { + return val; + }, + attributeValueProcessor: function (attrName, val) { + return val; + }, + stopNodes: [], //nested tags will not be parsed even for errors + alwaysCreateTextNode: false, + isArray: () => false, + commentPropName: false, + unpairedTags: [], + processEntities: true, + htmlEntities: false, + ignoreDeclaration: false, + ignorePiTags: false, + transformTagName: false, + transformAttributeName: false, + updateTag: function (tagName, jPath, attrs) { + return tagName + }, + // skipEmptyListItem: false + captureMetaData: false, + maxNestedTags: 100, + strictReservedNames: true, + jPath: true, // if true, pass jPath string to callbacks; if false, pass matcher instance + onDangerousProperty: defaultOnDangerousProperty +}; + + +/** + * Validates that a property name is safe to use + * @param {string} propertyName - The property name to validate + * @param {string} optionName - The option field name (for error message) + * @throws {Error} If property name is dangerous + */ +function validatePropertyName(propertyName, optionName) { + if (typeof propertyName !== 'string') { + return; // Only validate string property names + } + + const normalized = propertyName.toLowerCase(); + if (DANGEROUS_PROPERTY_NAMES.some(dangerous => normalized === dangerous.toLowerCase())) { + throw new Error( + `[SECURITY] Invalid ${optionName}: "${propertyName}" is a reserved JavaScript keyword that could cause prototype pollution` + ); + } + + if (criticalProperties.some(dangerous => normalized === dangerous.toLowerCase())) { + throw new Error( + `[SECURITY] Invalid ${optionName}: "${propertyName}" is a reserved JavaScript keyword that could cause prototype pollution` + ); + } +} + +/** + * Normalizes processEntities option for backward compatibility + * @param {boolean|object} value + * @returns {object} Always returns normalized object + */ +function normalizeProcessEntities(value) { + // Boolean backward compatibility + if (typeof value === 'boolean') { + return { + enabled: value, // true or false + maxEntitySize: 10000, + maxExpansionDepth: 10, + maxTotalExpansions: 1000, + maxExpandedLength: 100000, + maxEntityCount: 100, + allowedTags: null, + tagFilter: null + }; + } + + // Object config - merge with defaults + if (typeof value === 'object' && value !== null) { + return { + enabled: value.enabled !== false, + maxEntitySize: Math.max(1, value.maxEntitySize ?? 10000), + maxExpansionDepth: Math.max(1, value.maxExpansionDepth ?? 10), + maxTotalExpansions: Math.max(1, value.maxTotalExpansions ?? 1000), + maxExpandedLength: Math.max(1, value.maxExpandedLength ?? 100000), + maxEntityCount: Math.max(1, value.maxEntityCount ?? 100), + allowedTags: value.allowedTags ?? null, + tagFilter: value.tagFilter ?? null + }; + } + + // Default to enabled with limits + return normalizeProcessEntities(true); +} + +export const buildOptions = function (options) { + const built = Object.assign({}, defaultOptions, options); + + // Validate property names to prevent prototype pollution + const propertyNameOptions = [ + { value: built.attributeNamePrefix, name: 'attributeNamePrefix' }, + { value: built.attributesGroupName, name: 'attributesGroupName' }, + { value: built.textNodeName, name: 'textNodeName' }, + { value: built.cdataPropName, name: 'cdataPropName' }, + { value: built.commentPropName, name: 'commentPropName' } + ]; + + for (const { value, name } of propertyNameOptions) { + if (value) { + validatePropertyName(value, name); + } + } + + if (built.onDangerousProperty === null) { + built.onDangerousProperty = defaultOnDangerousProperty; + } + + // Always normalize processEntities for backward compatibility and validation + built.processEntities = normalizeProcessEntities(built.processEntities); + + // Convert old-style stopNodes for backward compatibility + if (built.stopNodes && Array.isArray(built.stopNodes)) { + built.stopNodes = built.stopNodes.map(node => { + if (typeof node === 'string' && node.startsWith('*.')) { + // Old syntax: *.tagname meant "tagname anywhere" + // Convert to new syntax: ..tagname + return '..' + node.substring(2); + } + return node; + }); + } + //console.debug(built.processEntities) + return built; +}; \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js b/bff/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js new file mode 100644 index 0000000..50701fc --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js @@ -0,0 +1,911 @@ +'use strict'; +///@ts-check + +import { getAllMatches, isExist, DANGEROUS_PROPERTY_NAMES, criticalProperties } from '../util.js'; +import xmlNode from './xmlNode.js'; +import DocTypeReader from './DocTypeReader.js'; +import toNumber from "strnum"; +import getIgnoreAttributesFn from "../ignoreAttributes.js"; +import { Expression, Matcher } from 'path-expression-matcher'; + +// const regx = +// '<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)' +// .replace(/NAME/g, util.nameRegexp); + +//const tagsRegx = new RegExp("<(\\/?[\\w:\\-\._]+)([^>]*)>(\\s*"+cdataRegx+")*([^<]+)?","g"); +//const tagsRegx = new RegExp("<(\\/?)((\\w*:)?([\\w:\\-\._]+))([^>]*)>([^<]*)("+cdataRegx+"([^<]*))*([^<]+)?","g"); + +// Helper functions for attribute and namespace handling + +/** + * Extract raw attributes (without prefix) from prefixed attribute map + * @param {object} prefixedAttrs - Attributes with prefix from buildAttributesMap + * @param {object} options - Parser options containing attributeNamePrefix + * @returns {object} Raw attributes for matcher + */ +function extractRawAttributes(prefixedAttrs, options) { + if (!prefixedAttrs) return {}; + + // Handle attributesGroupName option + const attrs = options.attributesGroupName + ? prefixedAttrs[options.attributesGroupName] + : prefixedAttrs; + + if (!attrs) return {}; + + const rawAttrs = {}; + for (const key in attrs) { + // Remove the attribute prefix to get raw name + if (key.startsWith(options.attributeNamePrefix)) { + const rawName = key.substring(options.attributeNamePrefix.length); + rawAttrs[rawName] = attrs[key]; + } else { + // Attribute without prefix (shouldn't normally happen, but be safe) + rawAttrs[key] = attrs[key]; + } + } + return rawAttrs; +} + +/** + * Extract namespace from raw tag name + * @param {string} rawTagName - Tag name possibly with namespace (e.g., "soap:Envelope") + * @returns {string|undefined} Namespace or undefined + */ +function extractNamespace(rawTagName) { + if (!rawTagName || typeof rawTagName !== 'string') return undefined; + + const colonIndex = rawTagName.indexOf(':'); + if (colonIndex !== -1 && colonIndex > 0) { + const ns = rawTagName.substring(0, colonIndex); + // Don't treat xmlns as a namespace + if (ns !== 'xmlns') { + return ns; + } + } + return undefined; +} + +export default class OrderedObjParser { + constructor(options) { + this.options = options; + this.currentNode = null; + this.tagsNodeStack = []; + this.docTypeEntities = {}; + this.lastEntities = { + "apos": { regex: /&(apos|#39|#x27);/g, val: "'" }, + "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" }, + "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" }, + "quot": { regex: /&(quot|#34|#x22);/g, val: "\"" }, + }; + this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" }; + this.htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent": { regex: /&(cent|#162);/g, val: "¢" }, + "pound": { regex: /&(pound|#163);/g, val: "£" }, + "yen": { regex: /&(yen|#165);/g, val: "¥" }, + "euro": { regex: /&(euro|#8364);/g, val: "€" }, + "copyright": { regex: /&(copy|#169);/g, val: "©" }, + "reg": { regex: /&(reg|#174);/g, val: "®" }, + "inr": { regex: /&(inr|#8377);/g, val: "₹" }, + "num_dec": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, "&#") }, + "num_hex": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, "&#x") }, + }; + this.addExternalEntities = addExternalEntities; + this.parseXml = parseXml; + this.parseTextData = parseTextData; + this.resolveNameSpace = resolveNameSpace; + this.buildAttributesMap = buildAttributesMap; + this.isItStopNode = isItStopNode; + this.replaceEntitiesValue = replaceEntitiesValue; + this.readStopNodeData = readStopNodeData; + this.saveTextToParentTag = saveTextToParentTag; + this.addChild = addChild; + this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes) + this.entityExpansionCount = 0; + this.currentExpandedLength = 0; + + // Initialize path matcher for path-expression-matcher + this.matcher = new Matcher(); + + // Live read-only proxy of matcher — PEM creates and caches this internally. + // All user callbacks receive this instead of the mutable matcher. + this.readonlyMatcher = this.matcher.readOnly(); + + // Flag to track if current node is a stop node (optimization) + this.isCurrentNodeStopNode = false; + + // Pre-compile stopNodes expressions + if (this.options.stopNodes && this.options.stopNodes.length > 0) { + this.stopNodeExpressions = []; + for (let i = 0; i < this.options.stopNodes.length; i++) { + const stopNodeExp = this.options.stopNodes[i]; + if (typeof stopNodeExp === 'string') { + // Convert string to Expression object + this.stopNodeExpressions.push(new Expression(stopNodeExp)); + } else if (stopNodeExp instanceof Expression) { + // Already an Expression object + this.stopNodeExpressions.push(stopNodeExp); + } + } + } + } + +} + +function addExternalEntities(externalEntities) { + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + const escaped = ent.replace(/[.\-+*:]/g, '\\.'); + this.lastEntities[ent] = { + regex: new RegExp("&" + escaped + ";", "g"), + val: externalEntities[ent] + } + } +} + +/** + * @param {string} val + * @param {string} tagName + * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath + * @param {boolean} dontTrim + * @param {boolean} hasAttributes + * @param {boolean} isLeafNode + * @param {boolean} escapeEntities + */ +function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) { + if (val !== undefined) { + if (this.options.trimValues && !dontTrim) { + val = val.trim(); + } + if (val.length > 0) { + if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath); + + // Pass jPath string or matcher based on options.jPath setting + const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath; + const newval = this.options.tagValueProcessor(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode); + if (newval === null || newval === undefined) { + //don't parse + return val; + } else if (typeof newval !== typeof val || newval !== val) { + //overwrite + return newval; + } else if (this.options.trimValues) { + return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions); + } else { + const trimmedVal = val.trim(); + if (trimmedVal === val) { + return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions); + } else { + return val; + } + } + } + } +} + +function resolveNameSpace(tagname) { + if (this.options.removeNSPrefix) { + const tags = tagname.split(':'); + const prefix = tagname.charAt(0) === '/' ? '/' : ''; + if (tags[0] === 'xmlns') { + return ''; + } + if (tags.length === 2) { + tagname = prefix + tags[1]; + } + } + return tagname; +} + +//TODO: change regex to capture NS +//const attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm"); +const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])([\\s\\S]*?)\\3)?', 'gm'); + +function buildAttributesMap(attrStr, jPath, tagName) { + if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') { + // attrStr = attrStr.replace(/\r?\n/g, ' '); + //attrStr = attrStr || attrStr.trim(); + + const matches = getAllMatches(attrStr, attrsRegx); + const len = matches.length; //don't make it inline + const attrs = {}; + + // First pass: parse all attributes and update matcher with raw values + // This ensures the matcher has all attribute values when processors run + const rawAttrsForMatcher = {}; + for (let i = 0; i < len; i++) { + const attrName = this.resolveNameSpace(matches[i][1]); + const oldVal = matches[i][4]; + + if (attrName.length && oldVal !== undefined) { + let parsedVal = oldVal; + if (this.options.trimValues) { + parsedVal = parsedVal.trim(); + } + parsedVal = this.replaceEntitiesValue(parsedVal, tagName, this.readonlyMatcher); + rawAttrsForMatcher[attrName] = parsedVal; + } + } + + // Update matcher with raw attribute values BEFORE running processors + if (Object.keys(rawAttrsForMatcher).length > 0 && typeof jPath === 'object' && jPath.updateCurrent) { + jPath.updateCurrent(rawAttrsForMatcher); + } + + // Second pass: now process attributes with matcher having full attribute context + for (let i = 0; i < len; i++) { + const attrName = this.resolveNameSpace(matches[i][1]); + + // Convert jPath to string if needed for ignoreAttributesFn + const jPathStr = this.options.jPath ? jPath.toString() : this.readonlyMatcher; + if (this.ignoreAttributesFn(attrName, jPathStr)) { + continue + } + + let oldVal = matches[i][4]; + let aName = this.options.attributeNamePrefix + attrName; + + if (attrName.length) { + if (this.options.transformAttributeName) { + aName = this.options.transformAttributeName(aName); + } + //if (aName === "__proto__") aName = "#__proto__"; + aName = sanitizeName(aName, this.options); + + if (oldVal !== undefined) { + if (this.options.trimValues) { + oldVal = oldVal.trim(); + } + oldVal = this.replaceEntitiesValue(oldVal, tagName, this.readonlyMatcher); + + // Pass jPath string or readonlyMatcher based on options.jPath setting + const jPathOrMatcher = this.options.jPath ? jPath.toString() : this.readonlyMatcher; + const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPathOrMatcher); + if (newVal === null || newVal === undefined) { + //don't parse + attrs[aName] = oldVal; + } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) { + //overwrite + attrs[aName] = newVal; + } else { + //parse + attrs[aName] = parseValue( + oldVal, + this.options.parseAttributeValue, + this.options.numberParseOptions + ); + } + } else if (this.options.allowBooleanAttributes) { + attrs[aName] = true; + } + } + } + + if (!Object.keys(attrs).length) { + return; + } + if (this.options.attributesGroupName) { + const attrCollection = {}; + attrCollection[this.options.attributesGroupName] = attrs; + return attrCollection; + } + return attrs + } +} + +const parseXml = function (xmlData) { + xmlData = xmlData.replace(/\r\n?/g, "\n"); //TODO: remove this line + const xmlObj = new xmlNode('!xml'); + let currentNode = xmlObj; + let textData = ""; + + // Reset matcher for new document + this.matcher.reset(); + + // Reset entity expansion counters for this document + this.entityExpansionCount = 0; + this.currentExpandedLength = 0; + + const docTypeReader = new DocTypeReader(this.options.processEntities); + for (let i = 0; i < xmlData.length; i++) {//for each char in XML data + const ch = xmlData[i]; + if (ch === '<') { + // const nextIndex = i+1; + // const _2ndChar = xmlData[nextIndex]; + if (xmlData[i + 1] === '/') {//Closing Tag + const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed.") + let tagName = xmlData.substring(i + 2, closeIndex).trim(); + + if (this.options.removeNSPrefix) { + const colonIndex = tagName.indexOf(":"); + if (colonIndex !== -1) { + tagName = tagName.substr(colonIndex + 1); + } + } + + tagName = transformTagName(this.options.transformTagName, tagName, "", this.options).tagName; + + if (currentNode) { + textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher); + } + + //check if last tag of nested tag was unpaired tag + const lastTagName = this.matcher.getCurrentTag(); + if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) { + throw new Error(`Unpaired tag can not be used as closing tag: `); + } + if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) { + // Pop the unpaired tag + this.matcher.pop(); + this.tagsNodeStack.pop(); + } + // Pop the closing tag + this.matcher.pop(); + this.isCurrentNodeStopNode = false; // Reset flag when closing tag + + currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope + textData = ""; + i = closeIndex; + } else if (xmlData[i + 1] === '?') { + + let tagData = readTagExp(xmlData, i, false, "?>"); + if (!tagData) throw new Error("Pi Tag is not closed."); + + textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher); + if ((this.options.ignoreDeclaration && tagData.tagName === "?xml") || this.options.ignorePiTags) { + //do nothing + } else { + + const childNode = new xmlNode(tagData.tagName); + childNode.add(this.options.textNodeName, ""); + + if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) { + childNode[":@"] = this.buildAttributesMap(tagData.tagExp, this.matcher, tagData.tagName); + } + this.addChild(currentNode, childNode, this.readonlyMatcher, i); + } + + + i = tagData.closeIndex + 1; + } else if (xmlData.substr(i + 1, 3) === '!--') { + const endIndex = findClosingIndex(xmlData, "-->", i + 4, "Comment is not closed.") + if (this.options.commentPropName) { + const comment = xmlData.substring(i + 4, endIndex - 2); + + textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher); + + currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]); + } + i = endIndex; + } else if (xmlData.substr(i + 1, 2) === '!D') { + const result = docTypeReader.readDocType(xmlData, i); + this.docTypeEntities = result.entities; + i = result.i; + } else if (xmlData.substr(i + 1, 2) === '![') { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "CDATA is not closed.") - 2; + const tagExp = xmlData.substring(i + 9, closeIndex); + + textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher); + + let val = this.parseTextData(tagExp, currentNode.tagname, this.readonlyMatcher, true, false, true, true); + if (val == undefined) val = ""; + + //cdata should be set even if it is 0 length string + if (this.options.cdataPropName) { + currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]); + } else { + currentNode.add(this.options.textNodeName, val); + } + + i = closeIndex + 2; + } else {//Opening tag + let result = readTagExp(xmlData, i, this.options.removeNSPrefix); + + // Safety check: readTagExp can return undefined + if (!result) { + // Log context for debugging + const context = xmlData.substring(Math.max(0, i - 50), Math.min(xmlData.length, i + 50)); + throw new Error(`readTagExp returned undefined at position ${i}. Context: "${context}"`); + } + + let tagName = result.tagName; + const rawTagName = result.rawTagName; + let tagExp = result.tagExp; + let attrExpPresent = result.attrExpPresent; + let closeIndex = result.closeIndex; + + ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options)); + + if (this.options.strictReservedNames && + (tagName === this.options.commentPropName + || tagName === this.options.cdataPropName + || tagName === this.options.textNodeName + || tagName === this.options.attributesGroupName + )) { + throw new Error(`Invalid tag name: ${tagName}`); + } + + //save text as child node + if (currentNode && textData) { + if (currentNode.tagname !== '!xml') { + //when nested tag is found + textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher, false); + } + } + + //check if last tag was unpaired tag + const lastTag = currentNode; + if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) { + currentNode = this.tagsNodeStack.pop(); + this.matcher.pop(); + } + + // Clean up self-closing syntax BEFORE processing attributes + // This is where tagExp gets the trailing / removed + let isSelfClosing = false; + if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) { + isSelfClosing = true; + if (tagName[tagName.length - 1] === "/") { + tagName = tagName.substr(0, tagName.length - 1); + tagExp = tagName; + } else { + tagExp = tagExp.substr(0, tagExp.length - 1); + } + + // Re-check attrExpPresent after cleaning + attrExpPresent = (tagName !== tagExp); + } + + // Now process attributes with CLEAN tagExp (no trailing /) + let prefixedAttrs = null; + let rawAttrs = {}; + let namespace = undefined; + + // Extract namespace from rawTagName + namespace = extractNamespace(rawTagName); + + // Push tag to matcher FIRST (with empty attrs for now) so callbacks see correct path + if (tagName !== xmlObj.tagname) { + this.matcher.push(tagName, {}, namespace); + } + + // Now build attributes - callbacks will see correct matcher state + if (tagName !== tagExp && attrExpPresent) { + // Build attributes (returns prefixed attributes for the tree) + // Note: buildAttributesMap now internally updates the matcher with raw attributes + prefixedAttrs = this.buildAttributesMap(tagExp, this.matcher, tagName); + + if (prefixedAttrs) { + // Extract raw attributes (without prefix) for our use + rawAttrs = extractRawAttributes(prefixedAttrs, this.options); + } + } + + // Now check if this is a stop node (after attributes are set) + if (tagName !== xmlObj.tagname) { + this.isCurrentNodeStopNode = this.isItStopNode(this.stopNodeExpressions, this.matcher); + } + + const startIndex = i; + if (this.isCurrentNodeStopNode) { + let tagContent = ""; + + // For self-closing tags, content is empty + if (isSelfClosing) { + i = result.closeIndex; + } + //unpaired tag + else if (this.options.unpairedTags.indexOf(tagName) !== -1) { + i = result.closeIndex; + } + //normal tag + else { + //read until closing tag is found + const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1); + if (!result) throw new Error(`Unexpected end of ${rawTagName}`); + i = result.i; + tagContent = result.tagContent; + } + + const childNode = new xmlNode(tagName); + + if (prefixedAttrs) { + childNode[":@"] = prefixedAttrs; + } + + // For stop nodes, store raw content as-is without any processing + childNode.add(this.options.textNodeName, tagContent); + + this.matcher.pop(); // Pop the stop node tag + this.isCurrentNodeStopNode = false; // Reset flag + + this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex); + } else { + //selfClosing tag + if (isSelfClosing) { + ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options)); + + const childNode = new xmlNode(tagName); + if (prefixedAttrs) { + childNode[":@"] = prefixedAttrs; + } + this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex); + this.matcher.pop(); // Pop self-closing tag + this.isCurrentNodeStopNode = false; // Reset flag + } + else if (this.options.unpairedTags.indexOf(tagName) !== -1) {//unpaired tag + const childNode = new xmlNode(tagName); + if (prefixedAttrs) { + childNode[":@"] = prefixedAttrs; + } + this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex); + this.matcher.pop(); // Pop unpaired tag + this.isCurrentNodeStopNode = false; // Reset flag + i = result.closeIndex; + // Continue to next iteration without changing currentNode + continue; + } + //opening tag + else { + const childNode = new xmlNode(tagName); + if (this.tagsNodeStack.length > this.options.maxNestedTags) { + throw new Error("Maximum nested tags exceeded"); + } + this.tagsNodeStack.push(currentNode); + + if (prefixedAttrs) { + childNode[":@"] = prefixedAttrs; + } + this.addChild(currentNode, childNode, this.readonlyMatcher, startIndex); + currentNode = childNode; + } + textData = ""; + i = closeIndex; + } + } + } else { + textData += xmlData[i]; + } + } + return xmlObj.child; +} + +function addChild(currentNode, childNode, matcher, startIndex) { + // unset startIndex if not requested + if (!this.options.captureMetaData) startIndex = undefined; + + // Pass jPath string or matcher based on options.jPath setting + const jPathOrMatcher = this.options.jPath ? matcher.toString() : matcher; + const result = this.options.updateTag(childNode.tagname, jPathOrMatcher, childNode[":@"]) + if (result === false) { + //do nothing + } else if (typeof result === "string") { + childNode.tagname = result + currentNode.addChild(childNode, startIndex); + } else { + currentNode.addChild(childNode, startIndex); + } +} + +/** + * @param {object} val - Entity object with regex and val properties + * @param {string} tagName - Tag name + * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath + */ +function replaceEntitiesValue(val, tagName, jPath) { + const entityConfig = this.options.processEntities; + + if (!entityConfig || !entityConfig.enabled) { + return val; + } + + // Check if tag is allowed to contain entities + if (entityConfig.allowedTags) { + const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath; + const allowed = Array.isArray(entityConfig.allowedTags) + ? entityConfig.allowedTags.includes(tagName) + : entityConfig.allowedTags(tagName, jPathOrMatcher); + + if (!allowed) { + return val; + } + } + + // Apply custom tag filter if provided + if (entityConfig.tagFilter) { + const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath; + if (!entityConfig.tagFilter(tagName, jPathOrMatcher)) { + return val; // Skip based on custom filter + } + } + + // Replace DOCTYPE entities + for (const entityName of Object.keys(this.docTypeEntities)) { + const entity = this.docTypeEntities[entityName]; + const matches = val.match(entity.regx); + + if (matches) { + // Track expansions + this.entityExpansionCount += matches.length; + + // Check expansion limit + if (entityConfig.maxTotalExpansions && + this.entityExpansionCount > entityConfig.maxTotalExpansions) { + throw new Error( + `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}` + ); + } + + // Store length before replacement + const lengthBefore = val.length; + val = val.replace(entity.regx, entity.val); + + // Check expanded length immediately after replacement + if (entityConfig.maxExpandedLength) { + this.currentExpandedLength += (val.length - lengthBefore); + + if (this.currentExpandedLength > entityConfig.maxExpandedLength) { + throw new Error( + `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}` + ); + } + } + } + } + // Replace standard entities + for (const entityName of Object.keys(this.lastEntities)) { + const entity = this.lastEntities[entityName]; + const matches = val.match(entity.regex); + if (matches) { + this.entityExpansionCount += matches.length; + if (entityConfig.maxTotalExpansions && + this.entityExpansionCount > entityConfig.maxTotalExpansions) { + throw new Error( + `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}` + ); + } + } + val = val.replace(entity.regex, entity.val); + } + if (val.indexOf('&') === -1) return val; + + // Replace HTML entities if enabled + if (this.options.htmlEntities) { + for (const entityName of Object.keys(this.htmlEntities)) { + const entity = this.htmlEntities[entityName]; + const matches = val.match(entity.regex); + if (matches) { + //console.log(matches); + this.entityExpansionCount += matches.length; + if (entityConfig.maxTotalExpansions && + this.entityExpansionCount > entityConfig.maxTotalExpansions) { + throw new Error( + `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}` + ); + } + } + val = val.replace(entity.regex, entity.val); + } + } + + // Replace ampersand entity last + val = val.replace(this.ampEntity.regex, this.ampEntity.val); + + return val; +} + + +function saveTextToParentTag(textData, parentNode, matcher, isLeafNode) { + if (textData) { //store previously collected data as textNode + if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0 + + textData = this.parseTextData(textData, + parentNode.tagname, + matcher, + false, + parentNode[":@"] ? Object.keys(parentNode[":@"]).length !== 0 : false, + isLeafNode); + + if (textData !== undefined && textData !== "") + parentNode.add(this.options.textNodeName, textData); + textData = ""; + } + return textData; +} + +//TODO: use jPath to simplify the logic +/** + * @param {Array} stopNodeExpressions - Array of compiled Expression objects + * @param {Matcher} matcher - Current path matcher + */ +function isItStopNode(stopNodeExpressions, matcher) { + if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false; + + for (let i = 0; i < stopNodeExpressions.length; i++) { + if (matcher.matches(stopNodeExpressions[i])) { + return true; + } + } + return false; +} + +/** + * Returns the tag Expression and where it is ending handling single-double quotes situation + * @param {string} xmlData + * @param {number} i starting index + * @returns + */ +function tagExpWithClosingIndex(xmlData, i, closingChar = ">") { + let attrBoundary; + let tagExp = ""; + for (let index = i; index < xmlData.length; index++) { + let ch = xmlData[index]; + if (attrBoundary) { + if (ch === attrBoundary) attrBoundary = "";//reset + } else if (ch === '"' || ch === "'") { + attrBoundary = ch; + } else if (ch === closingChar[0]) { + if (closingChar[1]) { + if (xmlData[index + 1] === closingChar[1]) { + return { + data: tagExp, + index: index + } + } + } else { + return { + data: tagExp, + index: index + } + } + } else if (ch === '\t') { + ch = " " + } + tagExp += ch; + } +} + +function findClosingIndex(xmlData, str, i, errMsg) { + const closingIndex = xmlData.indexOf(str, i); + if (closingIndex === -1) { + throw new Error(errMsg) + } else { + return closingIndex + str.length - 1; + } +} + +function readTagExp(xmlData, i, removeNSPrefix, closingChar = ">") { + const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar); + if (!result) return; + let tagExp = result.data; + const closeIndex = result.index; + const separatorIndex = tagExp.search(/\s/); + let tagName = tagExp; + let attrExpPresent = true; + if (separatorIndex !== -1) {//separate tag name and attributes expression + tagName = tagExp.substring(0, separatorIndex); + tagExp = tagExp.substring(separatorIndex + 1).trimStart(); + } + + const rawTagName = tagName; + if (removeNSPrefix) { + const colonIndex = tagName.indexOf(":"); + if (colonIndex !== -1) { + tagName = tagName.substr(colonIndex + 1); + attrExpPresent = tagName !== result.data.substr(colonIndex + 1); + } + } + + return { + tagName: tagName, + tagExp: tagExp, + closeIndex: closeIndex, + attrExpPresent: attrExpPresent, + rawTagName: rawTagName, + } +} +/** + * find paired tag for a stop node + * @param {string} xmlData + * @param {string} tagName + * @param {number} i + */ +function readStopNodeData(xmlData, tagName, i) { + const startIndex = i; + // Starting at 1 since we already have an open tag + let openTagCount = 1; + + for (; i < xmlData.length; i++) { + if (xmlData[i] === "<") { + if (xmlData[i + 1] === "/") {//close tag + const closeIndex = findClosingIndex(xmlData, ">", i, `${tagName} is not closed`); + let closeTagName = xmlData.substring(i + 2, closeIndex).trim(); + if (closeTagName === tagName) { + openTagCount--; + if (openTagCount === 0) { + return { + tagContent: xmlData.substring(startIndex, i), + i: closeIndex + } + } + } + i = closeIndex; + } else if (xmlData[i + 1] === '?') { + const closeIndex = findClosingIndex(xmlData, "?>", i + 1, "StopNode is not closed.") + i = closeIndex; + } else if (xmlData.substr(i + 1, 3) === '!--') { + const closeIndex = findClosingIndex(xmlData, "-->", i + 3, "StopNode is not closed.") + i = closeIndex; + } else if (xmlData.substr(i + 1, 2) === '![') { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "StopNode is not closed.") - 2; + i = closeIndex; + } else { + const tagData = readTagExp(xmlData, i, '>') + + if (tagData) { + const openTagName = tagData && tagData.tagName; + if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== "/") { + openTagCount++; + } + i = tagData.closeIndex; + } + } + } + }//end for loop +} + +function parseValue(val, shouldParse, options) { + if (shouldParse && typeof val === 'string') { + //console.log(options) + const newval = val.trim(); + if (newval === 'true') return true; + else if (newval === 'false') return false; + else return toNumber(val, options); + } else { + if (isExist(val)) { + return val; + } else { + return ''; + } + } +} + +function fromCodePoint(str, base, prefix) { + const codePoint = Number.parseInt(str, base); + + if (codePoint >= 0 && codePoint <= 0x10FFFF) { + return String.fromCodePoint(codePoint); + } else { + return prefix + str + ";"; + } +} + +function transformTagName(fn, tagName, tagExp, options) { + if (fn) { + const newTagName = fn(tagName); + if (tagExp === tagName) { + tagExp = newTagName + } + tagName = newTagName; + } + tagName = sanitizeName(tagName, options); + return { tagName, tagExp }; +} + + + +function sanitizeName(name, options) { + if (criticalProperties.includes(name)) { + throw new Error(`[SECURITY] Invalid name: "${name}" is a reserved JavaScript keyword that could cause prototype pollution`); + } else if (DANGEROUS_PROPERTY_NAMES.includes(name)) { + return options.onDangerousProperty(name); + } + return name; +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js b/bff/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js new file mode 100644 index 0000000..aa3f8d9 --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js @@ -0,0 +1,71 @@ +import { buildOptions } from './OptionsBuilder.js'; +import OrderedObjParser from './OrderedObjParser.js'; +import prettify from './node2json.js'; +import { validate } from "../validator.js"; +import XmlNode from './xmlNode.js'; + +export default class XMLParser { + + constructor(options) { + this.externalEntities = {}; + this.options = buildOptions(options); + + } + /** + * Parse XML dats to JS object + * @param {string|Uint8Array} xmlData + * @param {boolean|Object} validationOption + */ + parse(xmlData, validationOption) { + if (typeof xmlData !== "string" && xmlData.toString) { + xmlData = xmlData.toString(); + } else if (typeof xmlData !== "string") { + throw new Error("XML data is accepted in String or Bytes[] form.") + } + + if (validationOption) { + if (validationOption === true) validationOption = {}; //validate with default options + + const result = validate(xmlData, validationOption); + if (result !== true) { + throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`) + } + } + const orderedObjParser = new OrderedObjParser(this.options); + orderedObjParser.addExternalEntities(this.externalEntities); + const orderedResult = orderedObjParser.parseXml(xmlData); + if (this.options.preserveOrder || orderedResult === undefined) return orderedResult; + else return prettify(orderedResult, this.options, orderedObjParser.matcher, orderedObjParser.readonlyMatcher); + } + + /** + * Add Entity which is not by default supported by this library + * @param {string} key + * @param {string} value + */ + addEntity(key, value) { + if (value.indexOf("&") !== -1) { + throw new Error("Entity value can't have '&'") + } else if (key.indexOf("&") !== -1 || key.indexOf(";") !== -1) { + throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '") + } else if (value === "&") { + throw new Error("An entity with value '&' is not permitted"); + } else { + this.externalEntities[key] = value; + } + } + + /** + * Returns a Symbol that can be used to access the metadata + * property on a node. + * + * If Symbol is not available in the environment, an ordinary property is used + * and the name of the property is here returned. + * + * The XMLMetaData property is only present when `captureMetaData` + * is true in the options. + */ + static getMetaDataSymbol() { + return XmlNode.getMetaDataSymbol(); + } +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/xmlparser/node2json.js b/bff/node_modules/fast-xml-parser/src/xmlparser/node2json.js new file mode 100644 index 0000000..c31968a --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/xmlparser/node2json.js @@ -0,0 +1,173 @@ +'use strict'; + +import XmlNode from './xmlNode.js'; +import { Matcher } from 'path-expression-matcher'; + +const METADATA_SYMBOL = XmlNode.getMetaDataSymbol(); + +/** + * Helper function to strip attribute prefix from attribute map + * @param {object} attrs - Attributes with prefix (e.g., {"@_class": "code"}) + * @param {string} prefix - Attribute prefix to remove (e.g., "@_") + * @returns {object} Attributes without prefix (e.g., {"class": "code"}) + */ +function stripAttributePrefix(attrs, prefix) { + if (!attrs || typeof attrs !== 'object') return {}; + if (!prefix) return attrs; + + const rawAttrs = {}; + for (const key in attrs) { + if (key.startsWith(prefix)) { + const rawName = key.substring(prefix.length); + rawAttrs[rawName] = attrs[key]; + } else { + // Attribute without prefix (shouldn't normally happen, but be safe) + rawAttrs[key] = attrs[key]; + } + } + return rawAttrs; +} + +/** + * + * @param {array} node + * @param {any} options + * @param {Matcher} matcher - Path matcher instance + * @returns + */ +export default function prettify(node, options, matcher, readonlyMatcher) { + return compress(node, options, matcher, readonlyMatcher); +} + +/** + * @param {array} arr + * @param {object} options + * @param {Matcher} matcher - Path matcher instance + * @returns object + */ +function compress(arr, options, matcher, readonlyMatcher) { + let text; + const compressedObj = {}; //This is intended to be a plain object + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const property = propName(tagObj); + + // Push current property to matcher WITH RAW ATTRIBUTES (no prefix) + if (property !== undefined && property !== options.textNodeName) { + const rawAttrs = stripAttributePrefix( + tagObj[":@"] || {}, + options.attributeNamePrefix + ); + matcher.push(property, rawAttrs); + } + + if (property === options.textNodeName) { + if (text === undefined) text = tagObj[property]; + else text += "" + tagObj[property]; + } else if (property === undefined) { + continue; + } else if (tagObj[property]) { + + let val = compress(tagObj[property], options, matcher, readonlyMatcher); + const isLeaf = isLeafTag(val, options); + + if (tagObj[":@"]) { + assignAttributes(val, tagObj[":@"], readonlyMatcher, options); + } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) { + val = val[options.textNodeName]; + } else if (Object.keys(val).length === 0) { + if (options.alwaysCreateTextNode) val[options.textNodeName] = ""; + else val = ""; + } + + if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === "object" && val !== null) { + val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata + } + + + if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) { + if (!Array.isArray(compressedObj[property])) { + compressedObj[property] = [compressedObj[property]]; + } + compressedObj[property].push(val); + } else { + //TODO: if a node is not an array, then check if it should be an array + //also determine if it is a leaf node + + // Pass jPath string or readonlyMatcher based on options.jPath setting + const jPathOrMatcher = options.jPath ? readonlyMatcher.toString() : readonlyMatcher; + if (options.isArray(property, jPathOrMatcher, isLeaf)) { + compressedObj[property] = [val]; + } else { + compressedObj[property] = val; + } + } + + // Pop property from matcher after processing + if (property !== undefined && property !== options.textNodeName) { + matcher.pop(); + } + } + + } + // if(text && text.length > 0) compressedObj[options.textNodeName] = text; + if (typeof text === "string") { + if (text.length > 0) compressedObj[options.textNodeName] = text; + } else if (text !== undefined) compressedObj[options.textNodeName] = text; + + + return compressedObj; +} + +function propName(obj) { + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if (key !== ":@") return key; + } +} + +function assignAttributes(obj, attrMap, readonlyMatcher, options) { + if (attrMap) { + const keys = Object.keys(attrMap); + const len = keys.length; //don't make it inline + for (let i = 0; i < len; i++) { + const atrrName = keys[i]; // This is the PREFIXED name (e.g., "@_class") + + // Strip prefix for matcher path (for isArray callback) + const rawAttrName = atrrName.startsWith(options.attributeNamePrefix) + ? atrrName.substring(options.attributeNamePrefix.length) + : atrrName; + + // For attributes, we need to create a temporary path + // Pass jPath string or matcher based on options.jPath setting + const jPathOrMatcher = options.jPath + ? readonlyMatcher.toString() + "." + rawAttrName + : readonlyMatcher; + + if (options.isArray(atrrName, jPathOrMatcher, true, true)) { + obj[atrrName] = [attrMap[atrrName]]; + } else { + obj[atrrName] = attrMap[atrrName]; + } + } + } +} + +function isLeafTag(obj, options) { + const { textNodeName } = options; + const propCount = Object.keys(obj).length; + + if (propCount === 0) { + return true; + } + + if ( + propCount === 1 && + (obj[textNodeName] || typeof obj[textNodeName] === "boolean" || obj[textNodeName] === 0) + ) { + return true; + } + + return false; +} \ No newline at end of file diff --git a/bff/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js b/bff/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js new file mode 100644 index 0000000..4223a8d --- /dev/null +++ b/bff/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js @@ -0,0 +1,40 @@ +'use strict'; + +let METADATA_SYMBOL; + +if (typeof Symbol !== "function") { + METADATA_SYMBOL = "@@xmlMetadata"; +} else { + METADATA_SYMBOL = Symbol("XML Node Metadata"); +} + +export default class XmlNode { + constructor(tagname) { + this.tagname = tagname; + this.child = []; //nested tags, text, cdata, comments in order + this[":@"] = Object.create(null); //attributes map + } + add(key, val) { + // this.child.push( {name : key, val: val, isCdata: isCdata }); + if (key === "__proto__") key = "#__proto__"; + this.child.push({ [key]: val }); + } + addChild(node, startIndex) { + if (node.tagname === "__proto__") node.tagname = "#__proto__"; + if (node[":@"] && Object.keys(node[":@"]).length > 0) { + this.child.push({ [node.tagname]: node.child, [":@"]: node[":@"] }); + } else { + this.child.push({ [node.tagname]: node.child }); + } + // if requested, add the startIndex + if (startIndex !== undefined) { + // Note: for now we just overwrite the metadata. If we had more complex metadata, + // we might need to do an object append here: metadata = { ...metadata, startIndex } + this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex }; + } + } + /** symbol used for metadata */ + static getMetaDataSymbol() { + return METADATA_SYMBOL; + } +} diff --git a/bff/node_modules/finalhandler/HISTORY.md b/bff/node_modules/finalhandler/HISTORY.md new file mode 100644 index 0000000..8b011be --- /dev/null +++ b/bff/node_modules/finalhandler/HISTORY.md @@ -0,0 +1,239 @@ +v2.1.1. / 2025-12-01 +================== + +* update engines field in the package.json to reflect the current compatibility (Node <18). See: 2.0.0 +* Minor changes (package metadata) + +v2.1.0 / 2025-03-05 +================== + + * deps: + * use caret notation for dependency versions + * encodeurl@^2.0.0 + * debug@^4.4.0 + * remove `ServerResponse.headersSent` support check + * remove setImmediate support check + * update test dependencies + * remove unnecessary devDependency `safe-buffer` + * remove `unpipe` package and use native `unpipe()` method + * remove unnecessary devDependency `readable-stream` + * refactor: use object spread to copy error headers + * refactor: use replaceAll instead of replace with a regex + * refactor: replace setHeaders function with optimized inline header setting + +v2.0.0 / 2024-09-02 +================== + + * drop support for node <18 + * ignore status message for HTTP/2 (#53) + +v1.3.1 / 2024-09-11 +================== + + * deps: encodeurl@~2.0.0 + +v1.3.0 / 2024-09-03 +================== + + * ignore status message for HTTP/2 (#53) + +v1.2.1 / 2024-09-02 +================== + + * Gracefully handle when handling an error and socket is null + +1.2.0 / 2022-03-22 +================== + + * Remove set content headers that break response + * deps: on-finished@2.4.1 + * deps: statuses@2.0.1 + - Rename `425 Unordered Collection` to standard `425 Too Early` + +1.1.2 / 2019-05-09 +================== + + * Set stricter `Content-Security-Policy` header + * deps: parseurl@~1.3.3 + * deps: statuses@~1.5.0 + +1.1.1 / 2018-03-06 +================== + + * Fix 404 output for bad / missing pathnames + * deps: encodeurl@~1.0.2 + - Fix encoding `%` as last character + * deps: statuses@~1.4.0 + +1.1.0 / 2017-09-24 +================== + + * Use `res.headersSent` when available + +1.0.6 / 2017-09-22 +================== + + * deps: debug@2.6.9 + +1.0.5 / 2017-09-15 +================== + + * deps: parseurl@~1.3.2 + - perf: reduce overhead for full URLs + - perf: unroll the "fast-path" `RegExp` + +1.0.4 / 2017-08-03 +================== + + * deps: debug@2.6.8 + +1.0.3 / 2017-05-16 +================== + + * deps: debug@2.6.7 + - deps: ms@2.0.0 + +1.0.2 / 2017-04-22 +================== + + * deps: debug@2.6.4 + - deps: ms@0.7.3 + +1.0.1 / 2017-03-21 +================== + + * Fix missing `` in HTML document + * deps: debug@2.6.3 + - Fix: `DEBUG_MAX_ARRAY_LENGTH` + +1.0.0 / 2017-02-15 +================== + + * Fix exception when `err` cannot be converted to a string + * Fully URL-encode the pathname in the 404 message + * Only include the pathname in the 404 message + * Send complete HTML document + * Set `Content-Security-Policy: default-src 'self'` header + * deps: debug@2.6.1 + - Allow colors in workers + - Deprecated `DEBUG_FD` environment variable set to `3` or higher + - Fix error when running under React Native + - Use same color for same namespace + - deps: ms@0.7.2 + +0.5.1 / 2016-11-12 +================== + + * Fix exception when `err.headers` is not an object + * deps: statuses@~1.3.1 + * perf: hoist regular expressions + * perf: remove duplicate validation path + +0.5.0 / 2016-06-15 +================== + + * Change invalid or non-numeric status code to 500 + * Overwrite status message to match set status code + * Prefer `err.statusCode` if `err.status` is invalid + * Set response headers from `err.headers` object + * Use `statuses` instead of `http` module for status messages + - Includes all defined status messages + +0.4.1 / 2015-12-02 +================== + + * deps: escape-html@~1.0.3 + - perf: enable strict mode + - perf: optimize string replacement + - perf: use faster string coercion + +0.4.0 / 2015-06-14 +================== + + * Fix a false-positive when unpiping in Node.js 0.8 + * Support `statusCode` property on `Error` objects + * Use `unpipe` module for unpiping requests + * deps: escape-html@1.0.2 + * deps: on-finished@~2.3.0 + - Add defined behavior for HTTP `CONNECT` requests + - Add defined behavior for HTTP `Upgrade` requests + - deps: ee-first@1.1.1 + * perf: enable strict mode + * perf: remove argument reassignment + +0.3.6 / 2015-05-11 +================== + + * deps: debug@~2.2.0 + - deps: ms@0.7.1 + +0.3.5 / 2015-04-22 +================== + + * deps: on-finished@~2.2.1 + - Fix `isFinished(req)` when data buffered + +0.3.4 / 2015-03-15 +================== + + * deps: debug@~2.1.3 + - Fix high intensity foreground color for bold + - deps: ms@0.7.0 + +0.3.3 / 2015-01-01 +================== + + * deps: debug@~2.1.1 + * deps: on-finished@~2.2.0 + +0.3.2 / 2014-10-22 +================== + + * deps: on-finished@~2.1.1 + - Fix handling of pipelined requests + +0.3.1 / 2014-10-16 +================== + + * deps: debug@~2.1.0 + - Implement `DEBUG_FD` env variable support + +0.3.0 / 2014-09-17 +================== + + * Terminate in progress response only on error + * Use `on-finished` to determine request status + +0.2.0 / 2014-09-03 +================== + + * Set `X-Content-Type-Options: nosniff` header + * deps: debug@~2.0.0 + +0.1.0 / 2014-07-16 +================== + + * Respond after request fully read + - prevents hung responses and socket hang ups + * deps: debug@1.0.4 + +0.0.3 / 2014-07-11 +================== + + * deps: debug@1.0.3 + - Add support for multiple wildcards in namespaces + +0.0.2 / 2014-06-19 +================== + + * Handle invalid status codes + +0.0.1 / 2014-06-05 +================== + + * deps: debug@1.0.2 + +0.0.0 / 2014-06-05 +================== + + * Extracted from connect/express diff --git a/bff/node_modules/finalhandler/LICENSE b/bff/node_modules/finalhandler/LICENSE new file mode 100644 index 0000000..6022106 --- /dev/null +++ b/bff/node_modules/finalhandler/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/finalhandler/README.md b/bff/node_modules/finalhandler/README.md new file mode 100644 index 0000000..e40f729 --- /dev/null +++ b/bff/node_modules/finalhandler/README.md @@ -0,0 +1,150 @@ +# finalhandler + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] +[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] + +Node.js function to invoke as the final step to respond to HTTP request. + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install finalhandler +``` + +## API + +```js +const finalhandler = require('finalhandler') +``` + +### finalhandler(req, res, [options]) + +Returns function to be invoked as the final step for the given `req` and `res`. +This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will +write out a 404 response to the `res`. If it is truthy, an error response will +be written out to the `res` or `res` will be terminated if a response has already +started. + +When an error is written, the following information is added to the response: + + * The `res.statusCode` is set from `err.status` (or `err.statusCode`). If + this value is outside the 4xx or 5xx range, it will be set to 500. + * The `res.statusMessage` is set according to the status code. + * The body will be the HTML of the status code message if `env` is + `'production'`, otherwise will be `err.stack`. + * Any headers specified in an `err.headers` object. + +The final handler will also unpipe anything from `req` when it is invoked. + +#### options.env + +By default, the environment is determined by `NODE_ENV` variable, but it can be +overridden by this option. + +#### options.onerror + +Provide a function to be called with the `err` when it exists. Can be used for +writing errors to a central location without excessive function generation. Called +as `onerror(err, req, res)`. + +## Examples + +### always 404 + +```js +const finalhandler = require('finalhandler') +const http = require('http') + +const server = http.createServer((req, res) => { + const done = finalhandler(req, res) + done() +}) + +server.listen(3000) +``` + +### perform simple action + +```js +const finalhandler = require('finalhandler') +const fs = require('fs') +const http = require('http') + +const server = http.createServer((req, res) => { + const done = finalhandler(req, res) + + fs.readFile('index.html', (err, buf) => { + if (err) return done(err) + res.setHeader('Content-Type', 'text/html') + res.end(buf) + }) +}) + +server.listen(3000) +``` + +### use with middleware-style functions + +```js +const finalhandler = require('finalhandler') +const http = require('http') +const serveStatic = require('serve-static') + +const serve = serveStatic('public') + +const server = http.createServer((req, res) => { + const done = finalhandler(req, res) + serve(req, res, done) +}) + +server.listen(3000) +``` + +### keep log of all errors + +```js +const finalhandler = require('finalhandler') +const fs = require('fs') +const http = require('http') + +const server = http.createServer((req, res) => { + const done = finalhandler(req, res, { onerror: logerror }) + + fs.readFile('index.html', (err, buf) => { + if (err) return done(err) + res.setHeader('Content-Type', 'text/html') + res.end(buf) + }) +}) + +server.listen(3000) + +function logerror (err) { + console.error(err.stack || err.toString()) +} +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/finalhandler.svg +[npm-url]: https://npmjs.org/package/finalhandler +[node-image]: https://img.shields.io/node/v/finalhandler.svg +[node-url]: https://nodejs.org/en/download +[coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg +[coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master +[downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg +[downloads-url]: https://npmjs.org/package/finalhandler +[github-actions-ci-image]: https://github.com/pillarjs/finalhandler/actions/workflows/ci.yml/badge.svg +[github-actions-ci-url]: https://github.com/pillarjs/finalhandler/actions/workflows/ci.yml +[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/pillarjs/finalhandler/badge +[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/pillarjs/finalhandler \ No newline at end of file diff --git a/bff/node_modules/finalhandler/index.js b/bff/node_modules/finalhandler/index.js new file mode 100644 index 0000000..bf15e48 --- /dev/null +++ b/bff/node_modules/finalhandler/index.js @@ -0,0 +1,293 @@ +/*! + * finalhandler + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var debug = require('debug')('finalhandler') +var encodeUrl = require('encodeurl') +var escapeHtml = require('escape-html') +var onFinished = require('on-finished') +var parseUrl = require('parseurl') +var statuses = require('statuses') + +/** + * Module variables. + * @private + */ + +var isFinished = onFinished.isFinished + +/** + * Create a minimal HTML document. + * + * @param {string} message + * @private + */ + +function createHtmlDocument (message) { + var body = escapeHtml(message) + .replaceAll('\n', '
') + .replaceAll(' ', '  ') + + return '\n' + + '\n' + + '\n' + + '\n' + + 'Error\n' + + '\n' + + '\n' + + '
' + body + '
\n' + + '\n' + + '\n' +} + +/** + * Module exports. + * @public + */ + +module.exports = finalhandler + +/** + * Create a function to handle the final response. + * + * @param {Request} req + * @param {Response} res + * @param {Object} [options] + * @return {Function} + * @public + */ + +function finalhandler (req, res, options) { + var opts = options || {} + + // get environment + var env = opts.env || process.env.NODE_ENV || 'development' + + // get error callback + var onerror = opts.onerror + + return function (err) { + var headers + var msg + var status + + // ignore 404 on in-flight response + if (!err && res.headersSent) { + debug('cannot 404 after headers sent') + return + } + + // unhandled error + if (err) { + // respect status code from error + status = getErrorStatusCode(err) + + if (status === undefined) { + // fallback to status code on response + status = getResponseStatusCode(res) + } else { + // respect headers from error + headers = getErrorHeaders(err) + } + + // get error message + msg = getErrorMessage(err, status, env) + } else { + // not found + status = 404 + msg = 'Cannot ' + req.method + ' ' + encodeUrl(getResourceName(req)) + } + + debug('default %s', status) + + // schedule onerror callback + if (err && onerror) { + setImmediate(onerror, err, req, res) + } + + // cannot actually respond + if (res.headersSent) { + debug('cannot %d after headers sent', status) + if (req.socket) { + req.socket.destroy() + } + return + } + + // send response + send(req, res, status, headers, msg) + } +} + +/** + * Get headers from Error object. + * + * @param {Error} err + * @return {object} + * @private + */ + +function getErrorHeaders (err) { + if (!err.headers || typeof err.headers !== 'object') { + return undefined + } + + return { ...err.headers } +} + +/** + * Get message from Error object, fallback to status message. + * + * @param {Error} err + * @param {number} status + * @param {string} env + * @return {string} + * @private + */ + +function getErrorMessage (err, status, env) { + var msg + + if (env !== 'production') { + // use err.stack, which typically includes err.message + msg = err.stack + + // fallback to err.toString() when possible + if (!msg && typeof err.toString === 'function') { + msg = err.toString() + } + } + + return msg || statuses.message[status] +} + +/** + * Get status code from Error object. + * + * @param {Error} err + * @return {number} + * @private + */ + +function getErrorStatusCode (err) { + // check err.status + if (typeof err.status === 'number' && err.status >= 400 && err.status < 600) { + return err.status + } + + // check err.statusCode + if (typeof err.statusCode === 'number' && err.statusCode >= 400 && err.statusCode < 600) { + return err.statusCode + } + + return undefined +} + +/** + * Get resource name for the request. + * + * This is typically just the original pathname of the request + * but will fallback to "resource" is that cannot be determined. + * + * @param {IncomingMessage} req + * @return {string} + * @private + */ + +function getResourceName (req) { + try { + return parseUrl.original(req).pathname + } catch (e) { + return 'resource' + } +} + +/** + * Get status code from response. + * + * @param {OutgoingMessage} res + * @return {number} + * @private + */ + +function getResponseStatusCode (res) { + var status = res.statusCode + + // default status code to 500 if outside valid range + if (typeof status !== 'number' || status < 400 || status > 599) { + status = 500 + } + + return status +} + +/** + * Send response. + * + * @param {IncomingMessage} req + * @param {OutgoingMessage} res + * @param {number} status + * @param {object} headers + * @param {string} message + * @private + */ + +function send (req, res, status, headers, message) { + function write () { + // response body + var body = createHtmlDocument(message) + + // response status + res.statusCode = status + + if (req.httpVersionMajor < 2) { + res.statusMessage = statuses.message[status] + } + + // remove any content headers + res.removeHeader('Content-Encoding') + res.removeHeader('Content-Language') + res.removeHeader('Content-Range') + + // response headers + for (const [key, value] of Object.entries(headers ?? {})) { + res.setHeader(key, value) + } + + // security headers + res.setHeader('Content-Security-Policy', "default-src 'none'") + res.setHeader('X-Content-Type-Options', 'nosniff') + + // standard headers + res.setHeader('Content-Type', 'text/html; charset=utf-8') + res.setHeader('Content-Length', Buffer.byteLength(body, 'utf8')) + + if (req.method === 'HEAD') { + res.end() + return + } + + res.end(body, 'utf8') + } + + if (isFinished(req)) { + write() + return + } + + // unpipe everything from the request + req.unpipe() + + // flush the request + onFinished(req, write) + req.resume() +} diff --git a/bff/node_modules/finalhandler/package.json b/bff/node_modules/finalhandler/package.json new file mode 100644 index 0000000..869ddc2 --- /dev/null +++ b/bff/node_modules/finalhandler/package.json @@ -0,0 +1,47 @@ +{ + "name": "finalhandler", + "description": "Node.js final http responder", + "version": "2.1.1", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "repository": "pillarjs/finalhandler", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "devDependencies": { + "eslint": "^7.32.0", + "eslint-config-standard": "^14.1.1", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-markdown": "^2.2.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.2.0", + "eslint-plugin-standard": "^4.1.0", + "mocha": "^11.0.1", + "nyc": "^17.1.0", + "supertest": "^7.0.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "engines": { + "node": ">= 18.0.0" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-inspect": "mocha --reporter spec --inspect --inspect-brk test/" + } +} diff --git a/bff/node_modules/follow-redirects/LICENSE b/bff/node_modules/follow-redirects/LICENSE new file mode 100644 index 0000000..742cbad --- /dev/null +++ b/bff/node_modules/follow-redirects/LICENSE @@ -0,0 +1,18 @@ +Copyright 2014–present Olivier Lalonde , James Talmage , Ruben Verborgh + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/follow-redirects/README.md b/bff/node_modules/follow-redirects/README.md new file mode 100644 index 0000000..eb869a6 --- /dev/null +++ b/bff/node_modules/follow-redirects/README.md @@ -0,0 +1,155 @@ +## Follow Redirects + +Drop-in replacement for Node's `http` and `https` modules that automatically follows redirects. + +[![npm version](https://img.shields.io/npm/v/follow-redirects.svg)](https://www.npmjs.com/package/follow-redirects) +[![Build Status](https://github.com/follow-redirects/follow-redirects/workflows/CI/badge.svg)](https://github.com/follow-redirects/follow-redirects/actions) +[![Coverage Status](https://coveralls.io/repos/follow-redirects/follow-redirects/badge.svg?branch=master)](https://coveralls.io/r/follow-redirects/follow-redirects?branch=master) +[![npm downloads](https://img.shields.io/npm/dm/follow-redirects.svg)](https://www.npmjs.com/package/follow-redirects) +[![Sponsor on GitHub](https://img.shields.io/static/v1?label=Sponsor&message=%F0%9F%92%96&logo=GitHub)](https://github.com/sponsors/RubenVerborgh) + +`follow-redirects` provides [request](https://nodejs.org/api/http.html#http_http_request_options_callback) and [get](https://nodejs.org/api/http.html#http_http_get_options_callback) + methods that behave identically to those found on the native [http](https://nodejs.org/api/http.html#http_http_request_options_callback) and [https](https://nodejs.org/api/https.html#https_https_request_options_callback) + modules, with the exception that they will seamlessly follow redirects. + +```javascript +const { http, https } = require('follow-redirects'); + +http.get('http://bit.ly/900913', response => { + response.on('data', chunk => { + console.log(chunk); + }); +}).on('error', err => { + console.error(err); +}); +``` + +You can inspect the final redirected URL through the `responseUrl` property on the `response`. +If no redirection happened, `responseUrl` is the original request URL. + +```javascript +const request = https.request({ + host: 'bitly.com', + path: '/UHfDGO', +}, response => { + console.log(response.responseUrl); + // 'http://duckduckgo.com/robots.txt' +}); +request.end(); +``` + +## Options +### Global options +Global options are set directly on the `follow-redirects` module: + +```javascript +const followRedirects = require('follow-redirects'); +followRedirects.maxRedirects = 10; +followRedirects.maxBodyLength = 20 * 1024 * 1024; // 20 MB +``` + +The following global options are supported: + +- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted. + +- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted. + +### Per-request options +Per-request options are set by passing an `options` object: + +```javascript +const url = require('url'); +const { http, https } = require('follow-redirects'); + +const options = url.parse('http://bit.ly/900913'); +options.maxRedirects = 10; +options.beforeRedirect = (options, response, request) => { + // Use this to adjust the request options upon redirecting, + // to inspect the latest response headers, + // or to cancel the request by throwing an error + + // response.headers = the redirect response headers + // response.statusCode = the redirect response code (eg. 301, 307, etc.) + + // request.url = the requested URL that resulted in a redirect + // request.headers = the headers in the request that resulted in a redirect + // request.method = the method of the request that resulted in a redirect + if (options.hostname === "example.com") { + options.auth = "user:password"; + } +}; +http.request(options); +``` + +In addition to the [standard HTTP](https://nodejs.org/api/http.html#http_http_request_options_callback) and [HTTPS options](https://nodejs.org/api/https.html#https_https_request_options_callback), +the following per-request options are supported: +- `followRedirects` (default: `true`) – whether redirects should be followed. + +- `maxRedirects` (default: `21`) – sets the maximum number of allowed redirects; if exceeded, an error will be emitted. + +- `maxBodyLength` (default: 10MB) – sets the maximum size of the request body; if exceeded, an error will be emitted. + +- `beforeRedirect` (default: `undefined`) – optionally change the request `options` on redirects, or abort the request by throwing an error. + +- `agents` (default: `undefined`) – sets the `agent` option per protocol, since HTTP and HTTPS use different agents. Example value: `{ http: new http.Agent(), https: new https.Agent() }` + +- `trackRedirects` (default: `false`) – whether to store the redirected response details into the `redirects` array on the response object. + + +### Advanced usage +By default, `follow-redirects` will use the Node.js default implementations +of [`http`](https://nodejs.org/api/http.html) +and [`https`](https://nodejs.org/api/https.html). +To enable features such as caching and/or intermediate request tracking, +you might instead want to wrap `follow-redirects` around custom protocol implementations: + +```javascript +const { http, https } = require('follow-redirects').wrap({ + http: require('your-custom-http'), + https: require('your-custom-https'), +}); +``` + +Such custom protocols only need an implementation of the `request` method. + +## Browser Usage + +Due to the way the browser works, +the `http` and `https` browser equivalents perform redirects by default. + +By requiring `follow-redirects` this way: +```javascript +const http = require('follow-redirects/http'); +const https = require('follow-redirects/https'); +``` +you can easily tell webpack and friends to replace +`follow-redirect` by the built-in versions: + +```json +{ + "follow-redirects/http" : "http", + "follow-redirects/https" : "https" +} +``` + +## Contributing + +Pull Requests are always welcome. Please [file an issue](https://github.com/follow-redirects/follow-redirects/issues) + detailing your proposal before you invest your valuable time. Additional features and bug fixes should be accompanied + by tests. You can run the test suite locally with a simple `npm test` command. + +## Debug Logging + +`follow-redirects` uses the excellent [debug](https://www.npmjs.com/package/debug) for logging. To turn on logging + set the environment variable `DEBUG=follow-redirects` for debug output from just this module. When running the test + suite it is sometimes advantageous to set `DEBUG=*` to see output from the express server as well. + +## Authors + +- [Ruben Verborgh](https://ruben.verborgh.org/) +- [Olivier Lalonde](mailto:olalonde@gmail.com) +- [James Talmage](mailto:james@talmage.io) + +## License + +[MIT License](https://github.com/follow-redirects/follow-redirects/blob/master/LICENSE) diff --git a/bff/node_modules/follow-redirects/debug.js b/bff/node_modules/follow-redirects/debug.js new file mode 100644 index 0000000..decb77d --- /dev/null +++ b/bff/node_modules/follow-redirects/debug.js @@ -0,0 +1,15 @@ +var debug; + +module.exports = function () { + if (!debug) { + try { + /* eslint global-require: off */ + debug = require("debug")("follow-redirects"); + } + catch (error) { /* */ } + if (typeof debug !== "function") { + debug = function () { /* */ }; + } + } + debug.apply(null, arguments); +}; diff --git a/bff/node_modules/follow-redirects/http.js b/bff/node_modules/follow-redirects/http.js new file mode 100644 index 0000000..695e356 --- /dev/null +++ b/bff/node_modules/follow-redirects/http.js @@ -0,0 +1 @@ +module.exports = require("./").http; diff --git a/bff/node_modules/follow-redirects/https.js b/bff/node_modules/follow-redirects/https.js new file mode 100644 index 0000000..d21c921 --- /dev/null +++ b/bff/node_modules/follow-redirects/https.js @@ -0,0 +1 @@ +module.exports = require("./").https; diff --git a/bff/node_modules/follow-redirects/index.js b/bff/node_modules/follow-redirects/index.js new file mode 100644 index 0000000..a30b32c --- /dev/null +++ b/bff/node_modules/follow-redirects/index.js @@ -0,0 +1,686 @@ +var url = require("url"); +var URL = url.URL; +var http = require("http"); +var https = require("https"); +var Writable = require("stream").Writable; +var assert = require("assert"); +var debug = require("./debug"); + +// Preventive platform detection +// istanbul ignore next +(function detectUnsupportedEnvironment() { + var looksLikeNode = typeof process !== "undefined"; + var looksLikeBrowser = typeof window !== "undefined" && typeof document !== "undefined"; + var looksLikeV8 = isFunction(Error.captureStackTrace); + if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) { + console.warn("The follow-redirects package should be excluded from browser builds."); + } +}()); + +// Whether to use the native URL object or the legacy url module +var useNativeURL = false; +try { + assert(new URL("")); +} +catch (error) { + useNativeURL = error.code === "ERR_INVALID_URL"; +} + +// URL fields to preserve in copy operations +var preservedUrlFields = [ + "auth", + "host", + "hostname", + "href", + "path", + "pathname", + "port", + "protocol", + "query", + "search", + "hash", +]; + +// Create handlers that pass events from native requests +var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; +var eventHandlers = Object.create(null); +events.forEach(function (event) { + eventHandlers[event] = function (arg1, arg2, arg3) { + this._redirectable.emit(event, arg1, arg2, arg3); + }; +}); + +// Error types with codes +var InvalidUrlError = createErrorType( + "ERR_INVALID_URL", + "Invalid URL", + TypeError +); +var RedirectionError = createErrorType( + "ERR_FR_REDIRECTION_FAILURE", + "Redirected request failed" +); +var TooManyRedirectsError = createErrorType( + "ERR_FR_TOO_MANY_REDIRECTS", + "Maximum number of redirects exceeded", + RedirectionError +); +var MaxBodyLengthExceededError = createErrorType( + "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", + "Request body larger than maxBodyLength limit" +); +var WriteAfterEndError = createErrorType( + "ERR_STREAM_WRITE_AFTER_END", + "write after end" +); + +// istanbul ignore next +var destroy = Writable.prototype.destroy || noop; + +// An HTTP(S) request that can be redirected +function RedirectableRequest(options, responseCallback) { + // Initialize the request + Writable.call(this); + this._sanitizeOptions(options); + this._options = options; + this._ended = false; + this._ending = false; + this._redirectCount = 0; + this._redirects = []; + this._requestBodyLength = 0; + this._requestBodyBuffers = []; + + // Attach a callback if passed + if (responseCallback) { + this.on("response", responseCallback); + } + + // React to responses of native requests + var self = this; + this._onNativeResponse = function (response) { + try { + self._processResponse(response); + } + catch (cause) { + self.emit("error", cause instanceof RedirectionError ? + cause : new RedirectionError({ cause: cause })); + } + }; + + // Perform the first request + this._performRequest(); +} +RedirectableRequest.prototype = Object.create(Writable.prototype); + +RedirectableRequest.prototype.abort = function () { + destroyRequest(this._currentRequest); + this._currentRequest.abort(); + this.emit("abort"); +}; + +RedirectableRequest.prototype.destroy = function (error) { + destroyRequest(this._currentRequest, error); + destroy.call(this, error); + return this; +}; + +// Writes buffered data to the current native request +RedirectableRequest.prototype.write = function (data, encoding, callback) { + // Writing is not allowed if end has been called + if (this._ending) { + throw new WriteAfterEndError(); + } + + // Validate input and shift parameters if necessary + if (!isString(data) && !isBuffer(data)) { + throw new TypeError("data should be a string, Buffer or Uint8Array"); + } + if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + + // Ignore empty buffers, since writing them doesn't invoke the callback + // https://github.com/nodejs/node/issues/22066 + if (data.length === 0) { + if (callback) { + callback(); + } + return; + } + // Only write when we don't exceed the maximum body length + if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { + this._requestBodyLength += data.length; + this._requestBodyBuffers.push({ data: data, encoding: encoding }); + this._currentRequest.write(data, encoding, callback); + } + // Error when we exceed the maximum body length + else { + this.emit("error", new MaxBodyLengthExceededError()); + this.abort(); + } +}; + +// Ends the current native request +RedirectableRequest.prototype.end = function (data, encoding, callback) { + // Shift parameters if necessary + if (isFunction(data)) { + callback = data; + data = encoding = null; + } + else if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + + // Write data if needed and end + if (!data) { + this._ended = this._ending = true; + this._currentRequest.end(null, null, callback); + } + else { + var self = this; + var currentRequest = this._currentRequest; + this.write(data, encoding, function () { + self._ended = true; + currentRequest.end(null, null, callback); + }); + this._ending = true; + } +}; + +// Sets a header value on the current native request +RedirectableRequest.prototype.setHeader = function (name, value) { + this._options.headers[name] = value; + this._currentRequest.setHeader(name, value); +}; + +// Clears a header value on the current native request +RedirectableRequest.prototype.removeHeader = function (name) { + delete this._options.headers[name]; + this._currentRequest.removeHeader(name); +}; + +// Global timeout for all underlying requests +RedirectableRequest.prototype.setTimeout = function (msecs, callback) { + var self = this; + + // Destroys the socket on timeout + function destroyOnTimeout(socket) { + socket.setTimeout(msecs); + socket.removeListener("timeout", socket.destroy); + socket.addListener("timeout", socket.destroy); + } + + // Sets up a timer to trigger a timeout event + function startTimer(socket) { + if (self._timeout) { + clearTimeout(self._timeout); + } + self._timeout = setTimeout(function () { + self.emit("timeout"); + clearTimer(); + }, msecs); + destroyOnTimeout(socket); + } + + // Stops a timeout from triggering + function clearTimer() { + // Clear the timeout + if (self._timeout) { + clearTimeout(self._timeout); + self._timeout = null; + } + + // Clean up all attached listeners + self.removeListener("abort", clearTimer); + self.removeListener("error", clearTimer); + self.removeListener("response", clearTimer); + self.removeListener("close", clearTimer); + if (callback) { + self.removeListener("timeout", callback); + } + if (!self.socket) { + self._currentRequest.removeListener("socket", startTimer); + } + } + + // Attach callback if passed + if (callback) { + this.on("timeout", callback); + } + + // Start the timer if or when the socket is opened + if (this.socket) { + startTimer(this.socket); + } + else { + this._currentRequest.once("socket", startTimer); + } + + // Clean up on events + this.on("socket", destroyOnTimeout); + this.on("abort", clearTimer); + this.on("error", clearTimer); + this.on("response", clearTimer); + this.on("close", clearTimer); + + return this; +}; + +// Proxy all other public ClientRequest methods +[ + "flushHeaders", "getHeader", + "setNoDelay", "setSocketKeepAlive", +].forEach(function (method) { + RedirectableRequest.prototype[method] = function (a, b) { + return this._currentRequest[method](a, b); + }; +}); + +// Proxy all public ClientRequest properties +["aborted", "connection", "socket"].forEach(function (property) { + Object.defineProperty(RedirectableRequest.prototype, property, { + get: function () { return this._currentRequest[property]; }, + }); +}); + +RedirectableRequest.prototype._sanitizeOptions = function (options) { + // Ensure headers are always present + if (!options.headers) { + options.headers = {}; + } + + // Since http.request treats host as an alias of hostname, + // but the url module interprets host as hostname plus port, + // eliminate the host property to avoid confusion. + if (options.host) { + // Use hostname if set, because it has precedence + if (!options.hostname) { + options.hostname = options.host; + } + delete options.host; + } + + // Complete the URL object when necessary + if (!options.pathname && options.path) { + var searchPos = options.path.indexOf("?"); + if (searchPos < 0) { + options.pathname = options.path; + } + else { + options.pathname = options.path.substring(0, searchPos); + options.search = options.path.substring(searchPos); + } + } +}; + + +// Executes the next native request (initial or redirect) +RedirectableRequest.prototype._performRequest = function () { + // Load the native protocol + var protocol = this._options.protocol; + var nativeProtocol = this._options.nativeProtocols[protocol]; + if (!nativeProtocol) { + throw new TypeError("Unsupported protocol " + protocol); + } + + // If specified, use the agent corresponding to the protocol + // (HTTP and HTTPS use different types of agents) + if (this._options.agents) { + var scheme = protocol.slice(0, -1); + this._options.agent = this._options.agents[scheme]; + } + + // Create the native request and set up its event handlers + var request = this._currentRequest = + nativeProtocol.request(this._options, this._onNativeResponse); + request._redirectable = this; + for (var event of events) { + request.on(event, eventHandlers[event]); + } + + // RFC7230§5.3.1: When making a request directly to an origin server, […] + // a client MUST send only the absolute path […] as the request-target. + this._currentUrl = /^\//.test(this._options.path) ? + url.format(this._options) : + // When making a request to a proxy, […] + // a client MUST send the target URI in absolute-form […]. + this._options.path; + + // End a redirected request + // (The first request must be ended explicitly with RedirectableRequest#end) + if (this._isRedirect) { + // Write the request entity and end + var i = 0; + var self = this; + var buffers = this._requestBodyBuffers; + (function writeNext(error) { + // Only write if this request has not been redirected yet + // istanbul ignore else + if (request === self._currentRequest) { + // Report any write errors + // istanbul ignore if + if (error) { + self.emit("error", error); + } + // Write the next buffer if there are still left + else if (i < buffers.length) { + var buffer = buffers[i++]; + // istanbul ignore else + if (!request.finished) { + request.write(buffer.data, buffer.encoding, writeNext); + } + } + // End the request if `end` has been called on us + else if (self._ended) { + request.end(); + } + } + }()); + } +}; + +// Processes a response from the current native request +RedirectableRequest.prototype._processResponse = function (response) { + // Store the redirected response + var statusCode = response.statusCode; + if (this._options.trackRedirects) { + this._redirects.push({ + url: this._currentUrl, + headers: response.headers, + statusCode: statusCode, + }); + } + + // RFC7231§6.4: The 3xx (Redirection) class of status code indicates + // that further action needs to be taken by the user agent in order to + // fulfill the request. If a Location header field is provided, + // the user agent MAY automatically redirect its request to the URI + // referenced by the Location field value, + // even if the specific status code is not understood. + + // If the response is not a redirect; return it as-is + var location = response.headers.location; + if (!location || this._options.followRedirects === false || + statusCode < 300 || statusCode >= 400) { + response.responseUrl = this._currentUrl; + response.redirects = this._redirects; + this.emit("response", response); + + // Clean up + this._requestBodyBuffers = []; + return; + } + + // The response is a redirect, so abort the current request + destroyRequest(this._currentRequest); + // Discard the remainder of the response to avoid waiting for data + response.destroy(); + + // RFC7231§6.4: A client SHOULD detect and intervene + // in cyclical redirections (i.e., "infinite" redirection loops). + if (++this._redirectCount > this._options.maxRedirects) { + throw new TooManyRedirectsError(); + } + + // Store the request headers if applicable + var requestHeaders; + var beforeRedirect = this._options.beforeRedirect; + if (beforeRedirect) { + requestHeaders = Object.assign({ + // The Host header was set by nativeProtocol.request + Host: response.req.getHeader("host"), + }, this._options.headers); + } + + // RFC7231§6.4: Automatic redirection needs to done with + // care for methods not known to be safe, […] + // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change + // the request method from POST to GET for the subsequent request. + var method = this._options.method; + if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || + // RFC7231§6.4.4: The 303 (See Other) status code indicates that + // the server is redirecting the user agent to a different resource […] + // A user agent can perform a retrieval request targeting that URI + // (a GET or HEAD request if using HTTP) […] + (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) { + this._options.method = "GET"; + // Drop a possible entity and headers related to it + this._requestBodyBuffers = []; + removeMatchingHeaders(/^content-/i, this._options.headers); + } + + // Drop the Host header, as the redirect might lead to a different host + var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); + + // If the redirect is relative, carry over the host of the last request + var currentUrlParts = parseUrl(this._currentUrl); + var currentHost = currentHostHeader || currentUrlParts.host; + var currentUrl = /^\w+:/.test(location) ? this._currentUrl : + url.format(Object.assign(currentUrlParts, { host: currentHost })); + + // Create the redirected request + var redirectUrl = resolveUrl(location, currentUrl); + debug("redirecting to", redirectUrl.href); + this._isRedirect = true; + spreadUrlObject(redirectUrl, this._options); + + // Drop confidential headers when redirecting to a less secure protocol + // or to a different domain that is not a superdomain + if (redirectUrl.protocol !== currentUrlParts.protocol && + redirectUrl.protocol !== "https:" || + redirectUrl.host !== currentHost && + !isSubdomain(redirectUrl.host, currentHost)) { + removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers); + } + + // Evaluate the beforeRedirect callback + if (isFunction(beforeRedirect)) { + var responseDetails = { + headers: response.headers, + statusCode: statusCode, + }; + var requestDetails = { + url: currentUrl, + method: method, + headers: requestHeaders, + }; + beforeRedirect(this._options, responseDetails, requestDetails); + this._sanitizeOptions(this._options); + } + + // Perform the redirected request + this._performRequest(); +}; + +// Wraps the key/value object of protocols with redirect functionality +function wrap(protocols) { + // Default settings + var exports = { + maxRedirects: 21, + maxBodyLength: 10 * 1024 * 1024, + }; + + // Wrap each protocol + var nativeProtocols = {}; + Object.keys(protocols).forEach(function (scheme) { + var protocol = scheme + ":"; + var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; + var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); + + // Executes a request, following redirects + function request(input, options, callback) { + // Parse parameters, ensuring that input is an object + if (isURL(input)) { + input = spreadUrlObject(input); + } + else if (isString(input)) { + input = spreadUrlObject(parseUrl(input)); + } + else { + callback = options; + options = validateUrl(input); + input = { protocol: protocol }; + } + if (isFunction(options)) { + callback = options; + options = null; + } + + // Set defaults + options = Object.assign({ + maxRedirects: exports.maxRedirects, + maxBodyLength: exports.maxBodyLength, + }, input, options); + options.nativeProtocols = nativeProtocols; + if (!isString(options.host) && !isString(options.hostname)) { + options.hostname = "::1"; + } + + assert.equal(options.protocol, protocol, "protocol mismatch"); + debug("options", options); + return new RedirectableRequest(options, callback); + } + + // Executes a GET request, following redirects + function get(input, options, callback) { + var wrappedRequest = wrappedProtocol.request(input, options, callback); + wrappedRequest.end(); + return wrappedRequest; + } + + // Expose the properties on the wrapped protocol + Object.defineProperties(wrappedProtocol, { + request: { value: request, configurable: true, enumerable: true, writable: true }, + get: { value: get, configurable: true, enumerable: true, writable: true }, + }); + }); + return exports; +} + +function noop() { /* empty */ } + +function parseUrl(input) { + var parsed; + // istanbul ignore else + if (useNativeURL) { + parsed = new URL(input); + } + else { + // Ensure the URL is valid and absolute + parsed = validateUrl(url.parse(input)); + if (!isString(parsed.protocol)) { + throw new InvalidUrlError({ input }); + } + } + return parsed; +} + +function resolveUrl(relative, base) { + // istanbul ignore next + return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative)); +} + +function validateUrl(input) { + if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) { + throw new InvalidUrlError({ input: input.href || input }); + } + if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) { + throw new InvalidUrlError({ input: input.href || input }); + } + return input; +} + +function spreadUrlObject(urlObject, target) { + var spread = target || {}; + for (var key of preservedUrlFields) { + spread[key] = urlObject[key]; + } + + // Fix IPv6 hostname + if (spread.hostname.startsWith("[")) { + spread.hostname = spread.hostname.slice(1, -1); + } + // Ensure port is a number + if (spread.port !== "") { + spread.port = Number(spread.port); + } + // Concatenate path + spread.path = spread.search ? spread.pathname + spread.search : spread.pathname; + + return spread; +} + +function removeMatchingHeaders(regex, headers) { + var lastValue; + for (var header in headers) { + if (regex.test(header)) { + lastValue = headers[header]; + delete headers[header]; + } + } + return (lastValue === null || typeof lastValue === "undefined") ? + undefined : String(lastValue).trim(); +} + +function createErrorType(code, message, baseClass) { + // Create constructor + function CustomError(properties) { + // istanbul ignore else + if (isFunction(Error.captureStackTrace)) { + Error.captureStackTrace(this, this.constructor); + } + Object.assign(this, properties || {}); + this.code = code; + this.message = this.cause ? message + ": " + this.cause.message : message; + } + + // Attach constructor and set default properties + CustomError.prototype = new (baseClass || Error)(); + Object.defineProperties(CustomError.prototype, { + constructor: { + value: CustomError, + enumerable: false, + }, + name: { + value: "Error [" + code + "]", + enumerable: false, + }, + }); + return CustomError; +} + +function destroyRequest(request, error) { + for (var event of events) { + request.removeListener(event, eventHandlers[event]); + } + request.on("error", noop); + request.destroy(error); +} + +function isSubdomain(subdomain, domain) { + assert(isString(subdomain) && isString(domain)); + var dot = subdomain.length - domain.length - 1; + return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); +} + +function isString(value) { + return typeof value === "string" || value instanceof String; +} + +function isFunction(value) { + return typeof value === "function"; +} + +function isBuffer(value) { + return typeof value === "object" && ("length" in value); +} + +function isURL(value) { + return URL && value instanceof URL; +} + +// Exports +module.exports = wrap({ http: http, https: https }); +module.exports.wrap = wrap; diff --git a/bff/node_modules/follow-redirects/package.json b/bff/node_modules/follow-redirects/package.json new file mode 100644 index 0000000..a2689fa --- /dev/null +++ b/bff/node_modules/follow-redirects/package.json @@ -0,0 +1,58 @@ +{ + "name": "follow-redirects", + "version": "1.15.11", + "description": "HTTP and HTTPS modules that follow redirects.", + "license": "MIT", + "main": "index.js", + "files": [ + "*.js" + ], + "engines": { + "node": ">=4.0" + }, + "scripts": { + "lint": "eslint *.js test", + "test": "nyc mocha" + }, + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/follow-redirects/follow-redirects.git" + }, + "homepage": "https://github.com/follow-redirects/follow-redirects", + "bugs": { + "url": "https://github.com/follow-redirects/follow-redirects/issues" + }, + "keywords": [ + "http", + "https", + "url", + "redirect", + "client", + "location", + "utility" + ], + "author": "Ruben Verborgh (https://ruben.verborgh.org/)", + "contributors": [ + "Olivier Lalonde (http://www.syskall.com)", + "James Talmage " + ], + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "peerDependenciesMeta": { + "debug": { + "optional": true + } + }, + "devDependencies": { + "concat-stream": "^2.0.0", + "eslint": "^5.16.0", + "express": "^4.16.4", + "lolex": "^3.1.0", + "mocha": "^6.0.2", + "nyc": "^14.1.1" + } +} diff --git a/bff/node_modules/form-data/CHANGELOG.md b/bff/node_modules/form-data/CHANGELOG.md new file mode 100644 index 0000000..cd3105e --- /dev/null +++ b/bff/node_modules/form-data/CHANGELOG.md @@ -0,0 +1,659 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v4.0.5](https://github.com/form-data/form-data/compare/v4.0.4...v4.0.5) - 2025-11-17 + +### Commits + +- [Tests] Switch to newer v8 prediction library; enable node 24 testing [`16e0076`](https://github.com/form-data/form-data/commit/16e00765342106876f98a1c9703314006c9e937a) +- [Dev Deps] update `@ljharb/eslint-config`, `eslint` [`5822467`](https://github.com/form-data/form-data/commit/5822467f0ec21f6ad613c1c90856375e498793c7) +- [Fix] set Symbol.toStringTag in the proper place [`76d0dee`](https://github.com/form-data/form-data/commit/76d0dee43933b5e167f7f09e5d9cbbd1cf911aa7) + +## [v4.0.4](https://github.com/form-data/form-data/compare/v4.0.3...v4.0.4) - 2025-07-16 + +### Commits + +- [meta] add `auto-changelog` [`811f682`](https://github.com/form-data/form-data/commit/811f68282fab0315209d0e2d1c44b6c32ea0d479) +- [Tests] handle predict-v8-randomness failures in node < 17 and node > 23 [`1d11a76`](https://github.com/form-data/form-data/commit/1d11a76434d101f22fdb26b8aef8615f28b98402) +- [Fix] Switch to using `crypto` random for boundary values [`3d17230`](https://github.com/form-data/form-data/commit/3d1723080e6577a66f17f163ecd345a21d8d0fd0) +- [Tests] fix linting errors [`5e34080`](https://github.com/form-data/form-data/commit/5e340800b5f8914213e4e0378c084aae71cfd73a) +- [meta] actually ensure the readme backup isn’t published [`316c82b`](https://github.com/form-data/form-data/commit/316c82ba93fd4985af757b771b9a1f26d3b709ef) +- [Dev Deps] update `@ljharb/eslint-config` [`58c25d7`](https://github.com/form-data/form-data/commit/58c25d76406a5b0dfdf54045cf252563f2bbda8d) +- [meta] fix readme capitalization [`2300ca1`](https://github.com/form-data/form-data/commit/2300ca19595b0ee96431e868fe2a40db79e41c61) + +## [v4.0.3](https://github.com/form-data/form-data/compare/v4.0.2...v4.0.3) - 2025-06-05 + +### Fixed + +- [Fix] `append`: avoid a crash on nullish values [`#577`](https://github.com/form-data/form-data/issues/577) + +### Commits + +- [eslint] use a shared config [`426ba9a`](https://github.com/form-data/form-data/commit/426ba9ac440f95d1998dac9a5cd8d738043b048f) +- [eslint] fix some spacing issues [`2094191`](https://github.com/form-data/form-data/commit/20941917f0e9487e68c564ebc3157e23609e2939) +- [Refactor] use `hasown` [`81ab41b`](https://github.com/form-data/form-data/commit/81ab41b46fdf34f5d89d7ff30b513b0925febfaa) +- [Fix] validate boundary type in `setBoundary()` method [`8d8e469`](https://github.com/form-data/form-data/commit/8d8e4693093519f7f18e3c597d1e8df8c493de9e) +- [Tests] add tests to check the behavior of `getBoundary` with non-strings [`837b8a1`](https://github.com/form-data/form-data/commit/837b8a1f7562bfb8bda74f3fc538adb7a5858995) +- [Dev Deps] remove unused deps [`870e4e6`](https://github.com/form-data/form-data/commit/870e4e665935e701bf983a051244ab928e62d58e) +- [meta] remove local commit hooks [`e6e83cc`](https://github.com/form-data/form-data/commit/e6e83ccb545a5619ed6cd04f31d5c2f655eb633e) +- [Dev Deps] update `eslint` [`4066fd6`](https://github.com/form-data/form-data/commit/4066fd6f65992b62fa324a6474a9292a4f88c916) +- [meta] fix scripts to use prepublishOnly [`c4bbb13`](https://github.com/form-data/form-data/commit/c4bbb13c0ef669916657bc129341301b1d331d75) + +## [v4.0.2](https://github.com/form-data/form-data/compare/v4.0.1...v4.0.2) - 2025-02-14 + +### Merged + +- [Fix] set `Symbol.toStringTag` when available [`#573`](https://github.com/form-data/form-data/pull/573) +- [Fix] set `Symbol.toStringTag` when available [`#573`](https://github.com/form-data/form-data/pull/573) +- fix (npmignore): ignore temporary build files [`#532`](https://github.com/form-data/form-data/pull/532) +- fix (npmignore): ignore temporary build files [`#532`](https://github.com/form-data/form-data/pull/532) + +### Fixed + +- [Fix] set `Symbol.toStringTag` when available (#573) [`#396`](https://github.com/form-data/form-data/issues/396) +- [Fix] set `Symbol.toStringTag` when available (#573) [`#396`](https://github.com/form-data/form-data/issues/396) +- [Fix] set `Symbol.toStringTag` when available [`#396`](https://github.com/form-data/form-data/issues/396) + +### Commits + +- Merge tags v2.5.3 and v3.0.3 [`92613b9`](https://github.com/form-data/form-data/commit/92613b9208556eb4ebc482fdf599fae111626fb6) +- [Tests] migrate from travis to GHA [`806eda7`](https://github.com/form-data/form-data/commit/806eda77740e6e3c67c7815afb216f2e1f187ba5) +- [Tests] migrate from travis to GHA [`8fdb3bc`](https://github.com/form-data/form-data/commit/8fdb3bc6b5d001f8909a9fca391d1d1d97ef1d79) +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`7fecefe`](https://github.com/form-data/form-data/commit/7fecefe4ba8f775634aff86a698776ad95ecffb5) +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`6e682d4`](https://github.com/form-data/form-data/commit/6e682d4bd41de7e80de41e3c4ee10f23fcc3dd00) +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`df3c1e6`](https://github.com/form-data/form-data/commit/df3c1e6f0937f47a782dc4573756a54987f31dde) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `cross-spawn`, `eslint`, `formidable`, `in-publish`, `pkgfiles`, `pre-commit`, `puppeteer`, `request`, `tape`, `typescript` [`8261fcb`](https://github.com/form-data/form-data/commit/8261fcb8bf5944d30ae3bd04b91b71d6a9932ef4) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `cross-spawn`, `eslint`, `formidable`, `in-publish`, `pkgfiles`, `pre-commit`, `puppeteer`, `request`, `tape`, `typescript` [`fb66cb7`](https://github.com/form-data/form-data/commit/fb66cb740e29fb170eee947d4be6fdf82d6659af) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `eslint`, `formidable`, `in-publish`, `phantomjs-prebuilt`, `pkgfiles`, `pre-commit`, `request`, `tape`, `typescript` [`819f6b7`](https://github.com/form-data/form-data/commit/819f6b7a543306a891fca37c3a06d0ff4a734422) +- [eslint] clean up ignores [`3217b3d`](https://github.com/form-data/form-data/commit/3217b3ded8e382e51171d5c74c6038a21cc54440) +- [eslint] clean up ignores [`3a9d480`](https://github.com/form-data/form-data/commit/3a9d480232dbcbc07260ad84c3da4975d9a3ae9e) +- [Fix] `Buffer.from` and `Buffer.alloc` require node 4+ [`c499f76`](https://github.com/form-data/form-data/commit/c499f76f1faac1ddbf210c45217038e4c1e02337) +- Only apps should have lockfiles [`b82f590`](https://github.com/form-data/form-data/commit/b82f59093cdbadb4b7ec0922d33ae7ab048b82ff) +- Only apps should have lockfiles [`b170ee2`](https://github.com/form-data/form-data/commit/b170ee2b22b4c695c363b811c0c553d2fb1bbd79) +- [Deps] update `combined-stream`, `mime-types` [`6b1ca1d`](https://github.com/form-data/form-data/commit/6b1ca1dc7362a1b1c3a99a885516cca4b7eb817f) +- [Dev Deps] pin `request` which via `tough-cookie` ^2.4 depends on `psl` [`e5df7f2`](https://github.com/form-data/form-data/commit/e5df7f24383342264bd73dee3274818a40d04065) +- [Deps] update `mime-types` [`5a5bafe`](https://github.com/form-data/form-data/commit/5a5bafee894fead10da49e1fa2b084e17f2e1034) +- Bumped version 2.5.3 [`9457283`](https://github.com/form-data/form-data/commit/9457283e1dce6122adc908fdd7442cfc54cabe7a) +- [Dev Deps] pin `request` which via `tough-cookie` ^2.4 depends on `psl` [`9dbe192`](https://github.com/form-data/form-data/commit/9dbe192be3db215eac4d9c0b980470a5c2c030c6) +- Merge tags v2.5.2 and v3.0.2 [`d53265d`](https://github.com/form-data/form-data/commit/d53265d86c5153f535ec68eb107548b1b2883576) +- Bumped version 2.5.2 [`7020dd4`](https://github.com/form-data/form-data/commit/7020dd4c1260370abc40e86e3dfe49c5d576fbda) +- [Dev Deps] downgrade `cross-spawn` [`3fc1a9b`](https://github.com/form-data/form-data/commit/3fc1a9b62ddf1fe77a2bd6bd3476e4c0a9e01a88) +- fix: move util.isArray to Array.isArray (#564) [`edb555a`](https://github.com/form-data/form-data/commit/edb555a811f6f7e4668db4831551cf41c1de1cac) +- fix: move util.isArray to Array.isArray (#564) [`10418d1`](https://github.com/form-data/form-data/commit/10418d1fe4b0d65fe020eafe3911feb5ad5e2bd6) + +## [v4.0.1](https://github.com/form-data/form-data/compare/v4.0.0...v4.0.1) - 2024-10-10 + +### Commits + +- [Tests] migrate from travis to GHA [`757b4e3`](https://github.com/form-data/form-data/commit/757b4e32e95726aec9bdcc771fb5a3b564d88034) +- [eslint] clean up ignores [`e8f0d80`](https://github.com/form-data/form-data/commit/e8f0d80cd7cd424d1488532621ec40a33218b30b) +- fix (npmignore): ignore temporary build files [`335ad19`](https://github.com/form-data/form-data/commit/335ad19c6e17dc2d7298ffe0e9b37ba63600e94b) +- fix: move util.isArray to Array.isArray [`440d3be`](https://github.com/form-data/form-data/commit/440d3bed752ac2f9213b4c2229dbccefe140e5fa) + +## [v4.0.0](https://github.com/form-data/form-data/compare/v3.0.4...v4.0.0) - 2021-02-15 + +### Merged + +- Handle custom stream [`#382`](https://github.com/form-data/form-data/pull/382) + +### Commits + +- Fix typo [`e705c0a`](https://github.com/form-data/form-data/commit/e705c0a1fdaf90d21501f56460b93e43a18bd435) +- Update README for custom stream behavior [`6dd8624`](https://github.com/form-data/form-data/commit/6dd8624b2999e32768d62752c9aae5845a803b0d) + +## [v3.0.4](https://github.com/form-data/form-data/compare/v3.0.3...v3.0.4) - 2025-07-16 + +### Fixed + +- [Fix] `append`: avoid a crash on nullish values [`#577`](https://github.com/form-data/form-data/issues/577) + +### Commits + +- [eslint] update linting config [`f5e7eb0`](https://github.com/form-data/form-data/commit/f5e7eb024bc3fc7e2074ff80f143a4f4cbc1dbda) +- [meta] add `auto-changelog` [`d2eb290`](https://github.com/form-data/form-data/commit/d2eb290a3e47ed5bcad7020d027daa15b3cf5ef5) +- [Tests] handle predict-v8-randomness failures in node < 17 and node > 23 [`e8c574c`](https://github.com/form-data/form-data/commit/e8c574cb07ff3a0de2ecc0912d783ef22e190c1f) +- [Fix] Switch to using `crypto` random for boundary values [`c6ced61`](https://github.com/form-data/form-data/commit/c6ced61d4fae8f617ee2fd692133ed87baa5d0fd) +- [Refactor] use `hasown` [`1a78b5d`](https://github.com/form-data/form-data/commit/1a78b5dd05e508d67e97764d812ac7c6d92ea88d) +- [Fix] validate boundary type in `setBoundary()` method [`70bbaa0`](https://github.com/form-data/form-data/commit/70bbaa0b395ca0fb975c309de8d7286979254cc4) +- [Tests] add tests to check the behavior of `getBoundary` with non-strings [`b22a64e`](https://github.com/form-data/form-data/commit/b22a64ef94ba4f3f6ff7d1ac72a54cca128567df) +- [meta] actually ensure the readme backup isn’t published [`0150851`](https://github.com/form-data/form-data/commit/01508513ffb26fd662ae7027834b325af8efb9ea) +- [meta] remove local commit hooks [`fc42bb9`](https://github.com/form-data/form-data/commit/fc42bb9315b641bfa6dae51cb4e188a86bb04769) +- [Dev Deps] remove unused deps [`a14d09e`](https://github.com/form-data/form-data/commit/a14d09ea8ed7e0a2e1705269ce6fb54bb7ee6bdb) +- [meta] fix scripts to use prepublishOnly [`11d9f73`](https://github.com/form-data/form-data/commit/11d9f7338f18a59b431832a3562b49baece0a432) +- [meta] fix readme capitalization [`fc38b48`](https://github.com/form-data/form-data/commit/fc38b4834a117a1856f3d877eb2f5b7496a24932) + +## [v3.0.3](https://github.com/form-data/form-data/compare/v3.0.2...v3.0.3) - 2025-02-14 + +### Merged + +- [Fix] set `Symbol.toStringTag` when available [`#573`](https://github.com/form-data/form-data/pull/573) + +### Fixed + +- [Fix] set `Symbol.toStringTag` when available (#573) [`#396`](https://github.com/form-data/form-data/issues/396) + +### Commits + +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`7fecefe`](https://github.com/form-data/form-data/commit/7fecefe4ba8f775634aff86a698776ad95ecffb5) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `cross-spawn`, `eslint`, `formidable`, `in-publish`, `pkgfiles`, `pre-commit`, `puppeteer`, `request`, `tape`, `typescript` [`8261fcb`](https://github.com/form-data/form-data/commit/8261fcb8bf5944d30ae3bd04b91b71d6a9932ef4) +- Only apps should have lockfiles [`b82f590`](https://github.com/form-data/form-data/commit/b82f59093cdbadb4b7ec0922d33ae7ab048b82ff) +- [Dev Deps] pin `request` which via `tough-cookie` ^2.4 depends on `psl` [`e5df7f2`](https://github.com/form-data/form-data/commit/e5df7f24383342264bd73dee3274818a40d04065) +- [Deps] update `mime-types` [`5a5bafe`](https://github.com/form-data/form-data/commit/5a5bafee894fead10da49e1fa2b084e17f2e1034) + +## [v3.0.2](https://github.com/form-data/form-data/compare/v3.0.1...v3.0.2) - 2024-10-10 + +### Merged + +- fix (npmignore): ignore temporary build files [`#532`](https://github.com/form-data/form-data/pull/532) + +### Commits + +- [Tests] migrate from travis to GHA [`8fdb3bc`](https://github.com/form-data/form-data/commit/8fdb3bc6b5d001f8909a9fca391d1d1d97ef1d79) +- [eslint] clean up ignores [`3217b3d`](https://github.com/form-data/form-data/commit/3217b3ded8e382e51171d5c74c6038a21cc54440) +- fix: move util.isArray to Array.isArray (#564) [`edb555a`](https://github.com/form-data/form-data/commit/edb555a811f6f7e4668db4831551cf41c1de1cac) + +## [v3.0.1](https://github.com/form-data/form-data/compare/v3.0.0...v3.0.1) - 2021-02-15 + +### Merged + +- Fix typo: ads -> adds [`#451`](https://github.com/form-data/form-data/pull/451) + +### Commits + +- feat: add setBoundary method [`55d90ce`](https://github.com/form-data/form-data/commit/55d90ce4a4c22b0ea0647991d85cb946dfb7395b) + +## [v3.0.0](https://github.com/form-data/form-data/compare/v2.5.5...v3.0.0) - 2019-11-05 + +### Merged + +- Update Readme.md [`#449`](https://github.com/form-data/form-data/pull/449) +- Update package.json [`#448`](https://github.com/form-data/form-data/pull/448) +- fix memory leak [`#447`](https://github.com/form-data/form-data/pull/447) +- form-data: Replaced PhantomJS Dependency [`#442`](https://github.com/form-data/form-data/pull/442) +- Fix constructor options in Typescript definitions [`#446`](https://github.com/form-data/form-data/pull/446) +- Fix the getHeaders method signatures [`#434`](https://github.com/form-data/form-data/pull/434) +- Update combined-stream (fixes #422) [`#424`](https://github.com/form-data/form-data/pull/424) + +### Fixed + +- Merge pull request #424 from botgram/update-combined-stream [`#422`](https://github.com/form-data/form-data/issues/422) +- Update combined-stream (fixes #422) [`#422`](https://github.com/form-data/form-data/issues/422) + +### Commits + +- Add readable stream options to constructor type [`80c8f74`](https://github.com/form-data/form-data/commit/80c8f746bcf4c0418ae35fbedde12fb8c01e2748) +- Fixed: getHeaders method signatures [`f4ca7f8`](https://github.com/form-data/form-data/commit/f4ca7f8e31f7e07df22c1aeb8e0a32a7055a64ca) +- Pass options to constructor if not used with new [`4bde68e`](https://github.com/form-data/form-data/commit/4bde68e12de1ba90fefad2e7e643f6375b902763) +- Make userHeaders optional [`2b4e478`](https://github.com/form-data/form-data/commit/2b4e4787031490942f2d1ee55c56b85a250875a7) + +## [v2.5.5](https://github.com/form-data/form-data/compare/v2.5.4...v2.5.5) - 2025-07-18 + +### Commits + +- [meta] actually ensure the readme backup isn’t published [`10626c0`](https://github.com/form-data/form-data/commit/10626c0a9b78c7d3fcaa51772265015ee0afc25c) +- [Fix] use proper dependency [`026abe5`](https://github.com/form-data/form-data/commit/026abe5c5c0489d8a2ccb59d5cfd14fb63078377) + +## [v2.5.4](https://github.com/form-data/form-data/compare/v2.5.3...v2.5.4) - 2025-07-17 + +### Fixed + +- [Fix] `append`: avoid a crash on nullish values [`#577`](https://github.com/form-data/form-data/issues/577) + +### Commits + +- [eslint] update linting config [`8bf2492`](https://github.com/form-data/form-data/commit/8bf2492e0555d41ff58fa04c91593af998f87a3c) +- [meta] add `auto-changelog` [`b5101ad`](https://github.com/form-data/form-data/commit/b5101ad3d5f73cfd0143aae3735b92826fd731ea) +- [Tests] handle predict-v8-randomness failures in node < 17 and node > 23 [`0e93122`](https://github.com/form-data/form-data/commit/0e93122358414942393d9c2dc434ae69e58be7c8) +- [Fix] Switch to using `crypto` random for boundary values [`b88316c`](https://github.com/form-data/form-data/commit/b88316c94bb004323669cd3639dc8bb8262539eb) +- [Fix] validate boundary type in `setBoundary()` method [`131ae5e`](https://github.com/form-data/form-data/commit/131ae5efa30b9c608add4faef3befb38aa2e1bf1) +- [Tests] Switch to newer v8 prediction library; enable node 24 testing [`c97cfbe`](https://github.com/form-data/form-data/commit/c97cfbed9eb6d2d4b5d53090f69ded4bf9fd8a21) +- [Refactor] use `hasown` [`97ac9c2`](https://github.com/form-data/form-data/commit/97ac9c208be0b83faeee04bb3faef1ed3474ee4c) +- [meta] remove local commit hooks [`be99d4e`](https://github.com/form-data/form-data/commit/be99d4eea5ce47139c23c1f0914596194019d7fb) +- [Dev Deps] remove unused deps [`ddbc89b`](https://github.com/form-data/form-data/commit/ddbc89b6d6d64f730bcb27cb33b7544068466a05) +- [meta] fix scripts to use prepublishOnly [`e351a97`](https://github.com/form-data/form-data/commit/e351a97e9f6c57c74ffd01625e83b09de805d08a) +- [Dev Deps] remove unused script [`8f23366`](https://github.com/form-data/form-data/commit/8f233664842da5bd605ce85541defc713d1d1e0a) +- [Dev Deps] add missing peer dep [`02ff026`](https://github.com/form-data/form-data/commit/02ff026fda71f9943cfdd5754727c628adb8d135) +- [meta] fix readme capitalization [`2fd5f61`](https://github.com/form-data/form-data/commit/2fd5f61ebfb526cd015fb8e7b8b8c1add4a38872) + +## [v2.5.3](https://github.com/form-data/form-data/compare/v2.5.2...v2.5.3) - 2025-02-14 + +### Merged + +- [Fix] set `Symbol.toStringTag` when available [`#573`](https://github.com/form-data/form-data/pull/573) + +### Fixed + +- [Fix] set `Symbol.toStringTag` when available (#573) [`#396`](https://github.com/form-data/form-data/issues/396) + +### Commits + +- [Refactor] use `Object.prototype.hasOwnProperty.call` [`6e682d4`](https://github.com/form-data/form-data/commit/6e682d4bd41de7e80de41e3c4ee10f23fcc3dd00) +- [Dev Deps] update `@types/node`, `browserify`, `coveralls`, `eslint`, `formidable`, `in-publish`, `phantomjs-prebuilt`, `pkgfiles`, `pre-commit`, `request`, `tape`, `typescript` [`819f6b7`](https://github.com/form-data/form-data/commit/819f6b7a543306a891fca37c3a06d0ff4a734422) +- Only apps should have lockfiles [`b170ee2`](https://github.com/form-data/form-data/commit/b170ee2b22b4c695c363b811c0c553d2fb1bbd79) +- [Deps] update `combined-stream`, `mime-types` [`6b1ca1d`](https://github.com/form-data/form-data/commit/6b1ca1dc7362a1b1c3a99a885516cca4b7eb817f) +- Bumped version 2.5.3 [`9457283`](https://github.com/form-data/form-data/commit/9457283e1dce6122adc908fdd7442cfc54cabe7a) +- [Dev Deps] pin `request` which via `tough-cookie` ^2.4 depends on `psl` [`9dbe192`](https://github.com/form-data/form-data/commit/9dbe192be3db215eac4d9c0b980470a5c2c030c6) + +## [v2.5.2](https://github.com/form-data/form-data/compare/v2.5.1...v2.5.2) - 2024-10-10 + +### Merged + +- fix (npmignore): ignore temporary build files [`#532`](https://github.com/form-data/form-data/pull/532) + +### Commits + +- [Tests] migrate from travis to GHA [`806eda7`](https://github.com/form-data/form-data/commit/806eda77740e6e3c67c7815afb216f2e1f187ba5) +- [eslint] clean up ignores [`3a9d480`](https://github.com/form-data/form-data/commit/3a9d480232dbcbc07260ad84c3da4975d9a3ae9e) +- [Fix] `Buffer.from` and `Buffer.alloc` require node 4+ [`c499f76`](https://github.com/form-data/form-data/commit/c499f76f1faac1ddbf210c45217038e4c1e02337) +- Bumped version 2.5.2 [`7020dd4`](https://github.com/form-data/form-data/commit/7020dd4c1260370abc40e86e3dfe49c5d576fbda) +- [Dev Deps] downgrade `cross-spawn` [`3fc1a9b`](https://github.com/form-data/form-data/commit/3fc1a9b62ddf1fe77a2bd6bd3476e4c0a9e01a88) +- fix: move util.isArray to Array.isArray (#564) [`10418d1`](https://github.com/form-data/form-data/commit/10418d1fe4b0d65fe020eafe3911feb5ad5e2bd6) + +## [v2.5.1](https://github.com/form-data/form-data/compare/v2.5.0...v2.5.1) - 2019-08-28 + +### Merged + +- Fix error in callback signatures [`#435`](https://github.com/form-data/form-data/pull/435) +- -Fixed: Eerror in the documentations as indicated in #439 [`#440`](https://github.com/form-data/form-data/pull/440) +- Add constructor options to TypeScript defs [`#437`](https://github.com/form-data/form-data/pull/437) + +### Commits + +- Add remaining combined-stream options to typedef [`4d41a32`](https://github.com/form-data/form-data/commit/4d41a32c0b3f85f8bbc9cf17df43befd2d5fc305) +- Bumped version 2.5.1 [`8ce81f5`](https://github.com/form-data/form-data/commit/8ce81f56cccf5466363a5eff135ad394a929f59b) +- Bump rimraf to 2.7.1 [`a6bc2d4`](https://github.com/form-data/form-data/commit/a6bc2d4296dbdee5d84cbab7c69bcd0eea7a12e2) + +## [v2.5.0](https://github.com/form-data/form-data/compare/v2.4.0...v2.5.0) - 2019-07-03 + +### Merged + +- - Added: public methods with information and examples to readme [`#429`](https://github.com/form-data/form-data/pull/429) +- chore: move @types/node to devDep [`#431`](https://github.com/form-data/form-data/pull/431) +- Switched windows tests from AppVeyor to Travis [`#430`](https://github.com/form-data/form-data/pull/430) +- feat(typings): migrate TS typings #427 [`#428`](https://github.com/form-data/form-data/pull/428) +- enhance the method of path.basename, handle undefined case [`#421`](https://github.com/form-data/form-data/pull/421) + +### Commits + +- - Added: public methods with information and examples to the readme file. [`21323f3`](https://github.com/form-data/form-data/commit/21323f3b4043a167046a4a2554c5f2825356c423) +- feat(typings): migrate TS typings [`a3c0142`](https://github.com/form-data/form-data/commit/a3c0142ed91b0c7dcaf89c4f618776708f1f70a9) +- - Fixed: Typos [`37350fa`](https://github.com/form-data/form-data/commit/37350fa250782f156a998ec1fa9671866d40ac49) +- Switched to Travis Windows from Appveyor [`fc61c73`](https://github.com/form-data/form-data/commit/fc61c7381fad12662df16dbc3e7621c91b886f03) +- - Fixed: rendering of subheaders [`e93ed8d`](https://github.com/form-data/form-data/commit/e93ed8df9d7f22078bc3a2c24889e9dfa11e192d) +- Updated deps and readme [`e3d8628`](https://github.com/form-data/form-data/commit/e3d8628728f6e4817ab97deeed92f0c822661b89) +- Updated dependencies [`19add50`](https://github.com/form-data/form-data/commit/19add50afb7de66c70d189f422d16f1b886616e2) +- Bumped version to 2.5.0 [`905f173`](https://github.com/form-data/form-data/commit/905f173a3f785e8d312998e765634ee451ca5f42) +- - Fixed: filesize is not a valid option? knownLength should be used for streams [`d88f912`](https://github.com/form-data/form-data/commit/d88f912b75b666b47f8674467516eade69d2d5be) +- Bump notion of modern node to node8 [`508b626`](https://github.com/form-data/form-data/commit/508b626bf1b460d3733d3420dc1cfd001617f6ac) +- enhance the method of path.basename [`faaa68a`](https://github.com/form-data/form-data/commit/faaa68a297be7d4fca0ac4709d5b93afc1f78b5c) + +## [v2.4.0](https://github.com/form-data/form-data/compare/v2.3.2...v2.4.0) - 2019-06-19 + +### Merged + +- Added "getBuffer" method and updated certificates [`#419`](https://github.com/form-data/form-data/pull/419) +- docs(readme): add axios integration document [`#425`](https://github.com/form-data/form-data/pull/425) +- Allow newer versions of combined-stream [`#402`](https://github.com/form-data/form-data/pull/402) + +### Commits + +- Updated: Certificate [`e90a76a`](https://github.com/form-data/form-data/commit/e90a76ab3dcaa63a6f3045f8255bfbb9c25a3e4e) +- Updated build/test/badges [`8512eef`](https://github.com/form-data/form-data/commit/8512eef436e28372f5bc88de3ca76a9cb46e6847) +- Bumped version 2.4.0 [`0f8da06`](https://github.com/form-data/form-data/commit/0f8da06c0b4c997bd2f6b09d78290d339616a950) +- docs(readme): remove unnecessary bracket [`4e3954d`](https://github.com/form-data/form-data/commit/4e3954dde304d27e3b95371d8c78002f3af5d5b2) +- Bumped version to 2.3.3 [`b16916a`](https://github.com/form-data/form-data/commit/b16916a568a0d06f3f8a16c31f9a8b89b7844094) + +## [v2.3.2](https://github.com/form-data/form-data/compare/v2.3.1...v2.3.2) - 2018-02-13 + +### Merged + +- Pulling in fixed combined-stream [`#379`](https://github.com/form-data/form-data/pull/379) + +### Commits + +- All the dev dependencies are breaking in old versions of node :'( [`c7dba6a`](https://github.com/form-data/form-data/commit/c7dba6a139d872d173454845e25e1850ed6b72b4) +- Updated badges [`19b6c7a`](https://github.com/form-data/form-data/commit/19b6c7a8a5c40f47f91c8a8da3e5e4dc3c449fa3) +- Try tests in node@4 [`872a326`](https://github.com/form-data/form-data/commit/872a326ab13e2740b660ff589b75232c3a85fcc9) +- Pull in final version [`9d44871`](https://github.com/form-data/form-data/commit/9d44871073d647995270b19dbc26f65671ce15c7) + +## [v2.3.1](https://github.com/form-data/form-data/compare/v2.3.0...v2.3.1) - 2017-08-24 + +### Commits + +- Updated readme with custom options example [`8e0a569`](https://github.com/form-data/form-data/commit/8e0a5697026016fe171e93bec43c2205279e23ca) +- Added support (tests) for node 8 [`d1d6f4a`](https://github.com/form-data/form-data/commit/d1d6f4ad4670d8ba84cc85b28e522ca0e93eb362) + +## [v2.3.0](https://github.com/form-data/form-data/compare/v2.2.0...v2.3.0) - 2017-08-24 + +### Merged + +- Added custom `options` support [`#368`](https://github.com/form-data/form-data/pull/368) +- Allow form.submit with url string param to use https [`#249`](https://github.com/form-data/form-data/pull/249) +- Proper header production [`#357`](https://github.com/form-data/form-data/pull/357) +- Fix wrong MIME type in example [`#285`](https://github.com/form-data/form-data/pull/285) + +### Commits + +- allow form.submit with url string param to use https [`c0390dc`](https://github.com/form-data/form-data/commit/c0390dcc623e15215308fa2bb0225aa431d9381e) +- update tests for url parsing [`eec0e80`](https://github.com/form-data/form-data/commit/eec0e807889d46697abd39a89ad9bf39996ba787) +- Uses for in to assign properties instead of Object.assign [`f6854ed`](https://github.com/form-data/form-data/commit/f6854edd85c708191bb9c89615a09fd0a9afe518) +- Adds test to check for option override [`61762f2`](https://github.com/form-data/form-data/commit/61762f2c5262e576d6a7f778b4ebab6546ef8582) +- Removes the 2mb maxDataSize limitation [`dc171c3`](https://github.com/form-data/form-data/commit/dc171c3ba49ac9b8813636fd4159d139b812315b) +- Ignore .DS_Store [`e8a05d3`](https://github.com/form-data/form-data/commit/e8a05d33361f7dca8927fe1d96433d049843de24) + +## [v2.2.0](https://github.com/form-data/form-data/compare/v2.1.4...v2.2.0) - 2017-06-11 + +### Merged + +- Filename can be a nested path [`#355`](https://github.com/form-data/form-data/pull/355) + +### Commits + +- Bumped version number. [`d7398c3`](https://github.com/form-data/form-data/commit/d7398c3e7cd81ed12ecc0b84363721bae467db02) + +## [v2.1.4](https://github.com/form-data/form-data/compare/2.1.3...v2.1.4) - 2017-04-08 + +## [2.1.3](https://github.com/form-data/form-data/compare/v2.1.3...2.1.3) - 2017-04-08 + +## [v2.1.3](https://github.com/form-data/form-data/compare/v2.1.2...v2.1.3) - 2017-04-08 + +### Merged + +- toString should output '[object FormData]' [`#346`](https://github.com/form-data/form-data/pull/346) + +## [v2.1.2](https://github.com/form-data/form-data/compare/v2.1.1...v2.1.2) - 2016-11-07 + +### Merged + +- #271 Added check for self and window objects + tests [`#282`](https://github.com/form-data/form-data/pull/282) + +### Commits + +- Added check for self and window objects + tests [`c99e4ec`](https://github.com/form-data/form-data/commit/c99e4ec32cd14d83776f2bdcc5a4e7384131c1b1) + +## [v2.1.1](https://github.com/form-data/form-data/compare/v2.1.0...v2.1.1) - 2016-10-03 + +### Merged + +- Bumped dependencies. [`#270`](https://github.com/form-data/form-data/pull/270) +- Update browser.js shim to use self instead of window [`#267`](https://github.com/form-data/form-data/pull/267) +- Boilerplate code rediction [`#265`](https://github.com/form-data/form-data/pull/265) +- eslint@3.7.0 [`#266`](https://github.com/form-data/form-data/pull/266) + +### Commits + +- code duplicates removed [`e9239fb`](https://github.com/form-data/form-data/commit/e9239fbe7d3c897b29fe3bde857d772469541c01) +- Changed according to requests [`aa99246`](https://github.com/form-data/form-data/commit/aa9924626bd9168334d73fea568c0ad9d8fbaa96) +- chore(package): update eslint to version 3.7.0 [`090a859`](https://github.com/form-data/form-data/commit/090a859835016cab0de49629140499e418db9c3a) + +## [v2.1.0](https://github.com/form-data/form-data/compare/v2.0.0...v2.1.0) - 2016-09-25 + +### Merged + +- Added `hasKnownLength` public method [`#263`](https://github.com/form-data/form-data/pull/263) + +### Commits + +- Added hasKnownLength public method [`655b959`](https://github.com/form-data/form-data/commit/655b95988ef2ed3399f8796b29b2a8673c1df11c) + +## [v2.0.0](https://github.com/form-data/form-data/compare/v1.0.0...v2.0.0) - 2016-09-16 + +### Merged + +- Replaced async with asynckit [`#258`](https://github.com/form-data/form-data/pull/258) +- Pre-release house cleaning [`#247`](https://github.com/form-data/form-data/pull/247) + +### Commits + +- Replaced async with asynckit. Modernized [`1749b78`](https://github.com/form-data/form-data/commit/1749b78d50580fbd080e65c1eb9702ad4f4fc0c0) +- Ignore .bak files [`c08190a`](https://github.com/form-data/form-data/commit/c08190a87d3e22a528b6e32b622193742a4c2672) +- Trying to be more chatty. :) [`c79eabb`](https://github.com/form-data/form-data/commit/c79eabb24eaf761069255a44abf4f540cfd47d40) + +## [v1.0.0](https://github.com/form-data/form-data/compare/v1.0.0-rc4...v1.0.0) - 2016-08-26 + +### Merged + +- Allow custom header fields to be set as an object. [`#190`](https://github.com/form-data/form-data/pull/190) +- v1.0.0-rc4 [`#182`](https://github.com/form-data/form-data/pull/182) +- Avoid undefined variable reference in older browsers [`#176`](https://github.com/form-data/form-data/pull/176) +- More housecleaning [`#164`](https://github.com/form-data/form-data/pull/164) +- More cleanup [`#159`](https://github.com/form-data/form-data/pull/159) +- Added windows testing. Some cleanup. [`#158`](https://github.com/form-data/form-data/pull/158) +- Housecleaning. Added test coverage. [`#156`](https://github.com/form-data/form-data/pull/156) +- Second iteration of cleanup. [`#145`](https://github.com/form-data/form-data/pull/145) + +### Commits + +- Pre-release house cleaning [`440d72b`](https://github.com/form-data/form-data/commit/440d72b5fd44dd132f42598c3183d46e5f35ce71) +- Updated deps, updated docs [`54b6114`](https://github.com/form-data/form-data/commit/54b61143e9ce66a656dd537a1e7b31319a4991be) +- make docs up-to-date [`5e383d7`](https://github.com/form-data/form-data/commit/5e383d7f1466713f7fcef58a6817e0cb466c8ba7) +- Added missing deps [`fe04862`](https://github.com/form-data/form-data/commit/fe04862000b2762245e2db69d5207696a08c1174) + +## [v1.0.0-rc4](https://github.com/form-data/form-data/compare/v1.0.0-rc3...v1.0.0-rc4) - 2016-03-15 + +### Merged + +- Housecleaning, preparing for the release [`#144`](https://github.com/form-data/form-data/pull/144) +- lib: emit error when failing to get length [`#127`](https://github.com/form-data/form-data/pull/127) +- Cleaning up for Codacity 2. [`#143`](https://github.com/form-data/form-data/pull/143) +- Cleaned up codacity concerns. [`#142`](https://github.com/form-data/form-data/pull/142) +- Should throw type error without new operator. [`#129`](https://github.com/form-data/form-data/pull/129) + +### Commits + +- More cleanup [`94b6565`](https://github.com/form-data/form-data/commit/94b6565bb98a387335c72feff5ed5c10da0a7f6f) +- Shuffling things around [`3c2f172`](https://github.com/form-data/form-data/commit/3c2f172eaddf0979b3eef5c73985d1a6fd3eee4a) +- Second iteration of cleanup. [`347c88e`](https://github.com/form-data/form-data/commit/347c88ef9a99a66b9bcf4278497425db2f0182b2) +- Housecleaning [`c335610`](https://github.com/form-data/form-data/commit/c3356100c054a4695e4dec8ed7072775cd745616) +- More housecleaning [`f573321`](https://github.com/form-data/form-data/commit/f573321824aae37ba2052a92cc889d533d9f8fb8) +- Trying to make far run on windows. + cleanup [`e426dfc`](https://github.com/form-data/form-data/commit/e426dfcefb07ee307d8a15dec04044cce62413e6) +- Playing with appveyor [`c9458a7`](https://github.com/form-data/form-data/commit/c9458a7c328782b19859bc1745e7d6b2005ede86) +- Updated dev dependencies. [`ceebe88`](https://github.com/form-data/form-data/commit/ceebe88872bb22da0a5a98daf384e3cc232928d3) +- Replaced win-spawn with cross-spawn [`405a69e`](https://github.com/form-data/form-data/commit/405a69ee34e235ee6561b5ff0140b561be40d1cc) +- Updated readme badges. [`12f282a`](https://github.com/form-data/form-data/commit/12f282a1310fcc2f70cc5669782283929c32a63d) +- Making paths windows friendly. [`f4bddc5`](https://github.com/form-data/form-data/commit/f4bddc5955e2472f8e23c892c9b4d7a08fcb85a3) +- [WIP] trying things for greater sanity [`8ad1f02`](https://github.com/form-data/form-data/commit/8ad1f02b0b3db4a0b00c5d6145ed69bcb7558213) +- Bending under Codacy [`bfff3bb`](https://github.com/form-data/form-data/commit/bfff3bb36052dc83f429949b4e6f9b146a49d996) +- Another attempt to make windows friendly [`f3eb628`](https://github.com/form-data/form-data/commit/f3eb628974ccb91ba0020f41df490207eeed77f6) +- Updated dependencies. [`f73996e`](https://github.com/form-data/form-data/commit/f73996e0508ee2d4b2b376276adfac1de4188ac2) +- Missed travis changes. [`67ee79f`](https://github.com/form-data/form-data/commit/67ee79f964fdabaf300bd41b0af0c1cfaca07687) +- Restructured badges. [`48444a1`](https://github.com/form-data/form-data/commit/48444a1ff156ba2c2c3cfd11047c2f2fd92d4474) +- Add similar type error as the browser for attempting to use form-data without new. [`5711320`](https://github.com/form-data/form-data/commit/5711320fb7c8cc620cfc79b24c7721526e23e539) +- Took out codeclimate-test-reporter [`a7e0c65`](https://github.com/form-data/form-data/commit/a7e0c6522afe85ca9974b0b4e1fca9c77c3e52b1) +- One more [`8e84cff`](https://github.com/form-data/form-data/commit/8e84cff3370526ecd3e175fd98e966242d81993c) + +## [v1.0.0-rc3](https://github.com/form-data/form-data/compare/v1.0.0-rc2...v1.0.0-rc3) - 2015-07-29 + +### Merged + +- House cleaning. Added `pre-commit`. [`#140`](https://github.com/form-data/form-data/pull/140) +- Allow custom content-type without setting a filename. [`#138`](https://github.com/form-data/form-data/pull/138) +- Add node-fetch to alternative submission methods. [`#132`](https://github.com/form-data/form-data/pull/132) +- Update dependencies [`#130`](https://github.com/form-data/form-data/pull/130) +- Switching to container based TravisCI [`#136`](https://github.com/form-data/form-data/pull/136) +- Default content-type to 'application/octect-stream' [`#128`](https://github.com/form-data/form-data/pull/128) +- Allow filename as third option of .append [`#125`](https://github.com/form-data/form-data/pull/125) + +### Commits + +- Allow custom content-type without setting a filename [`c8a77cc`](https://github.com/form-data/form-data/commit/c8a77cc0cf16d15f1ebf25272beaab639ce89f76) +- Fixed ranged test. [`a5ac58c`](https://github.com/form-data/form-data/commit/a5ac58cbafd0909f32fe8301998f689314fd4859) +- Allow filename as third option of #append [`d081005`](https://github.com/form-data/form-data/commit/d0810058c84764b3c463a18b15ebb37864de9260) +- Allow custom content-type without setting a filename [`8cb9709`](https://github.com/form-data/form-data/commit/8cb9709e5f1809cfde0cd707dbabf277138cd771) + +## [v1.0.0-rc2](https://github.com/form-data/form-data/compare/v1.0.0-rc1...v1.0.0-rc2) - 2015-07-21 + +### Merged + +- #109 Append proper line break [`#123`](https://github.com/form-data/form-data/pull/123) +- Add shim for browser (browserify/webpack). [`#122`](https://github.com/form-data/form-data/pull/122) +- Update license field [`#115`](https://github.com/form-data/form-data/pull/115) + +### Commits + +- Add shim for browser. [`87c33f4`](https://github.com/form-data/form-data/commit/87c33f4269a2211938f80ab3e53835362b1afee8) +- Bump version [`a3f5d88`](https://github.com/form-data/form-data/commit/a3f5d8872c810ce240c7d3838c69c3c9fcecc111) + +## [v1.0.0-rc1](https://github.com/form-data/form-data/compare/0.2...v1.0.0-rc1) - 2015-06-13 + +### Merged + +- v1.0.0-rc1 [`#114`](https://github.com/form-data/form-data/pull/114) +- Updated test targets [`#102`](https://github.com/form-data/form-data/pull/102) +- Remove duplicate plus sign [`#94`](https://github.com/form-data/form-data/pull/94) + +### Commits + +- Made https test local. Updated deps. [`afe1959`](https://github.com/form-data/form-data/commit/afe1959ec711f23e57038ab5cb20fedd86271f29) +- Proper self-signed ssl [`4d5ec50`](https://github.com/form-data/form-data/commit/4d5ec50e81109ad2addf3dbb56dc7c134df5ff87) +- Update HTTPS handling for modern days [`2c11b01`](https://github.com/form-data/form-data/commit/2c11b01ce2c06e205c84d7154fa2f27b66c94f3b) +- Made tests more local [`09633fa`](https://github.com/form-data/form-data/commit/09633fa249e7ce3ac581543aafe16ee9039a823b) +- Auto create tmp folder for Formidable [`28714b7`](https://github.com/form-data/form-data/commit/28714b7f71ad556064cdff88fabe6b92bd407ddd) +- remove duplicate plus sign [`36e09c6`](https://github.com/form-data/form-data/commit/36e09c695b0514d91a23f5cd64e6805404776fc7) + +## [0.2](https://github.com/form-data/form-data/compare/0.1.4...0.2) - 2014-12-06 + +### Merged + +- Bumped version [`#96`](https://github.com/form-data/form-data/pull/96) +- Replace mime library. [`#95`](https://github.com/form-data/form-data/pull/95) +- #71 Respect bytes range in a read stream. [`#73`](https://github.com/form-data/form-data/pull/73) + +## [0.1.4](https://github.com/form-data/form-data/compare/0.1.3...0.1.4) - 2014-06-23 + +### Merged + +- Updated version. [`#76`](https://github.com/form-data/form-data/pull/76) +- #71 Respect bytes range in a read stream. [`#75`](https://github.com/form-data/form-data/pull/75) + +## [0.1.3](https://github.com/form-data/form-data/compare/0.1.2...0.1.3) - 2014-06-17 + +### Merged + +- Updated versions. [`#69`](https://github.com/form-data/form-data/pull/69) +- Added custom headers support [`#60`](https://github.com/form-data/form-data/pull/60) +- Added test for Request. Small fixes. [`#56`](https://github.com/form-data/form-data/pull/56) + +### Commits + +- Added test for the custom header functionality [`bd50685`](https://github.com/form-data/form-data/commit/bd506855af62daf728ef1718cae88ed23bb732f3) +- Documented custom headers option [`77a024a`](https://github.com/form-data/form-data/commit/77a024a9375f93c246c35513d80f37d5e11d35ff) +- Removed 0.6 support. [`aee8dce`](https://github.com/form-data/form-data/commit/aee8dce604c595cfaacfc6efb12453d1691ac0d6) + +## [0.1.2](https://github.com/form-data/form-data/compare/0.1.1...0.1.2) - 2013-10-02 + +### Merged + +- Fixed default https port assignment, added tests. [`#52`](https://github.com/form-data/form-data/pull/52) +- #45 Added tests for multi-submit. Updated readme. [`#49`](https://github.com/form-data/form-data/pull/49) +- #47 return request from .submit() [`#48`](https://github.com/form-data/form-data/pull/48) + +### Commits + +- Bumped version. [`2b761b2`](https://github.com/form-data/form-data/commit/2b761b256ae607fc2121621f12c2e1042be26baf) + +## [0.1.1](https://github.com/form-data/form-data/compare/0.1.0...0.1.1) - 2013-08-21 + +### Merged + +- Added license type and reference to package.json [`#46`](https://github.com/form-data/form-data/pull/46) + +### Commits + +- #47 return request from .submit() [`1d61c2d`](https://github.com/form-data/form-data/commit/1d61c2da518bd5e136550faa3b5235bb540f1e06) +- #47 Updated readme. [`e3dae15`](https://github.com/form-data/form-data/commit/e3dae1526bd3c3b9d7aff6075abdaac12c3cc60f) + +## [0.1.0](https://github.com/form-data/form-data/compare/0.0.10...0.1.0) - 2013-07-08 + +### Merged + +- Update master to 0.1.0 [`#44`](https://github.com/form-data/form-data/pull/44) +- 0.1.0 - Added error handling. Streamlined edge cases behavior. [`#43`](https://github.com/form-data/form-data/pull/43) +- Pointed badges back to mothership. [`#39`](https://github.com/form-data/form-data/pull/39) +- Updated node-fake to support 0.11 tests. [`#37`](https://github.com/form-data/form-data/pull/37) +- Updated tests to play nice with 0.10 [`#36`](https://github.com/form-data/form-data/pull/36) +- #32 Added .npmignore [`#34`](https://github.com/form-data/form-data/pull/34) +- Spring cleaning [`#30`](https://github.com/form-data/form-data/pull/30) + +### Commits + +- Added error handling. Streamlined edge cases behavior. [`4da496e`](https://github.com/form-data/form-data/commit/4da496e577cb9bc0fd6c94cbf9333a0082ce353a) +- Made tests more deterministic. [`7fc009b`](https://github.com/form-data/form-data/commit/7fc009b8a2cc9232514a44b2808b9f89ce68f7d2) +- Fixed styling. [`d373b41`](https://github.com/form-data/form-data/commit/d373b417e779024bc3326073e176383cd08c0b18) +- #40 Updated Readme.md regarding getLengthSync() [`efb373f`](https://github.com/form-data/form-data/commit/efb373fd63814d977960e0299d23c92cd876cfef) +- Updated readme. [`527e3a6`](https://github.com/form-data/form-data/commit/527e3a63b032cb6f576f597ad7ff2ebcf8a0b9b4) + +## [0.0.10](https://github.com/form-data/form-data/compare/0.0.9...0.0.10) - 2013-05-08 + +### Commits + +- Updated tests to play nice with 0.10. [`932b39b`](https://github.com/form-data/form-data/commit/932b39b773e49edcb2c5d2e58fe389ab6c42f47c) +- Added dependency tracking. [`3131d7f`](https://github.com/form-data/form-data/commit/3131d7f6996cd519d50547e4de1587fd80d0fa07) + +## 0.0.9 - 2013-04-29 + +### Merged + +- Custom params for form.submit() should cover most edge cases. [`#22`](https://github.com/form-data/form-data/pull/22) +- Updated Readme and version number. [`#20`](https://github.com/form-data/form-data/pull/20) +- Allow custom headers and pre-known length in parts [`#17`](https://github.com/form-data/form-data/pull/17) +- Bumped version number. [`#12`](https://github.com/form-data/form-data/pull/12) +- Fix for #10 [`#11`](https://github.com/form-data/form-data/pull/11) +- Bumped version number. [`#8`](https://github.com/form-data/form-data/pull/8) +- Added support for https destination, http-response and mikeal's request streams. [`#7`](https://github.com/form-data/form-data/pull/7) +- Updated git url. [`#6`](https://github.com/form-data/form-data/pull/6) +- Version bump. [`#5`](https://github.com/form-data/form-data/pull/5) +- Changes to support custom content-type and getLengthSync. [`#4`](https://github.com/form-data/form-data/pull/4) +- make .submit(url) use host from url, not 'localhost' [`#2`](https://github.com/form-data/form-data/pull/2) +- Make package.json JSON [`#1`](https://github.com/form-data/form-data/pull/1) + +### Fixed + +- Add MIT license [`#14`](https://github.com/form-data/form-data/issues/14) + +### Commits + +- Spring cleaning. [`850ba1b`](https://github.com/form-data/form-data/commit/850ba1b649b6856b0fa87bbcb04bc70ece0137a6) +- Added custom request params to form.submit(). Made tests more stable. [`de3502f`](https://github.com/form-data/form-data/commit/de3502f6c4a509f6ed12a7dd9dc2ce9c2e0a8d23) +- Basic form (no files) working [`6ffdc34`](https://github.com/form-data/form-data/commit/6ffdc343e8594cfc2efe1e27653ea39d8980a14e) +- Got initial test to pass [`9a59d08`](https://github.com/form-data/form-data/commit/9a59d08c024479fd3c9d99ba2f0893a47b3980f0) +- Implement initial getLength [`9060c91`](https://github.com/form-data/form-data/commit/9060c91b861a6573b73beddd11e866db422b5830) +- Make getLength work with file streams [`6f6b1e9`](https://github.com/form-data/form-data/commit/6f6b1e9b65951e6314167db33b446351702f5558) +- Implemented a simplistic submit() function [`41e9cc1`](https://github.com/form-data/form-data/commit/41e9cc124124721e53bc1d1459d45db1410c44e6) +- added test for custom headers and content-length in parts (felixge/node-form-data/17) [`b16d14e`](https://github.com/form-data/form-data/commit/b16d14e693670f5d52babec32cdedd1aa07c1aa4) +- Fixed code styling. [`5847424`](https://github.com/form-data/form-data/commit/5847424c666970fc2060acd619e8a78678888a82) +- #29 Added custom filename and content-type options to support identity-less streams. [`adf8b4a`](https://github.com/form-data/form-data/commit/adf8b4a41530795682cd3e35ffaf26b30288ccda) +- Initial Readme and package.json [`8c744e5`](https://github.com/form-data/form-data/commit/8c744e58be4014bdf432e11b718ed87f03e217af) +- allow append() to completely override header and boundary [`3fb2ad4`](https://github.com/form-data/form-data/commit/3fb2ad491f66e4b4ff16130be25b462820b8c972) +- Syntax highlighting [`ab3a6a5`](https://github.com/form-data/form-data/commit/ab3a6a5ed1ab77a2943ce3befcb2bb3cd9ff0330) +- Updated Readme.md [`de8f441`](https://github.com/form-data/form-data/commit/de8f44122ca754cbfedc0d2748e84add5ff0b669) +- Added examples to Readme file. [`c406ac9`](https://github.com/form-data/form-data/commit/c406ac921d299cbc130464ed19338a9ef97cb650) +- pass options.knownLength to set length at beginning, w/o waiting for async size calculation [`e2ac039`](https://github.com/form-data/form-data/commit/e2ac0397ff7c37c3dca74fa9925b55f832e4fa0b) +- Updated dependencies and added test command. [`09bd7cd`](https://github.com/form-data/form-data/commit/09bd7cd86f1ad7a58df1b135eb6eef0d290894b4) +- Bumped version. Updated readme. [`4581140`](https://github.com/form-data/form-data/commit/4581140f322758c6fc92019d342c7d7d6c94af5c) +- Test runner [`1707ebb`](https://github.com/form-data/form-data/commit/1707ebbd180856e6ed44e80c46b02557e2425762) +- Added .npmignore, bumped version. [`2e033e0`](https://github.com/form-data/form-data/commit/2e033e0e4be7c1457be090cd9b2996f19d8fb665) +- FormData.prototype.append takes and passes along options (for header) [`b519203`](https://github.com/form-data/form-data/commit/b51920387ed4da7b4e106fc07b9459f26b5ae2f0) +- Make package.json JSON [`bf1b58d`](https://github.com/form-data/form-data/commit/bf1b58df794b10fda86ed013eb9237b1e5032085) +- Add dependencies to package.json [`7413d0b`](https://github.com/form-data/form-data/commit/7413d0b4cf5546312d47ea426db8180619083974) +- Add convenient submit() interface [`55855e4`](https://github.com/form-data/form-data/commit/55855e4bea14585d4a3faf9e7318a56696adbc7d) +- Fix content type [`08b6ae3`](https://github.com/form-data/form-data/commit/08b6ae337b23ef1ba457ead72c9b133047df213c) +- Combatting travis rvm calls. [`409adfd`](https://github.com/form-data/form-data/commit/409adfd100a3cf4968a632c05ba58d92d262d144) +- Fixed Issue #2 [`b3a5d66`](https://github.com/form-data/form-data/commit/b3a5d661739dcd6921b444b81d5cb3c32fab655d) +- Fix for #10. [`bab70b9`](https://github.com/form-data/form-data/commit/bab70b9e803e17287632762073d227d6c59989e0) +- Trying workarounds for formidable - 0.6 "love". [`25782a3`](https://github.com/form-data/form-data/commit/25782a3f183d9c30668ec2bca6247ed83f10611c) +- change whitespace to conform with felixge's style guide [`9fa34f4`](https://github.com/form-data/form-data/commit/9fa34f433bece85ef73086a874c6f0164ab7f1f6) +- Add async to deps [`b7d1a6b`](https://github.com/form-data/form-data/commit/b7d1a6b10ee74be831de24ed76843e5a6935f155) +- typo [`7860a9c`](https://github.com/form-data/form-data/commit/7860a9c8a582f0745ce0e4a0549f4bffc29c0b50) +- Bumped version. [`fa36c1b`](https://github.com/form-data/form-data/commit/fa36c1b4229c34b85d7efd41908429b6d1da3bfc) +- Updated .gitignore [`de567bd`](https://github.com/form-data/form-data/commit/de567bde620e53b8e9b0ed3506e79491525ec558) +- Don't rely on resume() being called by pipe [`1deae47`](https://github.com/form-data/form-data/commit/1deae47e042bcd170bd5dbe2b4a4fa5356bb8aa2) +- One more wrong content type [`28f166d`](https://github.com/form-data/form-data/commit/28f166d443e2eb77f2559324014670674b97e46e) +- Another typo [`b959b6a`](https://github.com/form-data/form-data/commit/b959b6a2be061cac17f8d329b89cea109f0f32be) +- Typo [`698fa0a`](https://github.com/form-data/form-data/commit/698fa0aa5dbf4eeb77377415acc202a6fbe3f4a2) +- Being simply dumb. [`b614db8`](https://github.com/form-data/form-data/commit/b614db85702061149fbd98418605106975e72ade) +- Fixed typo in the filename. [`30af6be`](https://github.com/form-data/form-data/commit/30af6be13fb0c9e92b32e935317680b9d7599928) diff --git a/bff/node_modules/form-data/License b/bff/node_modules/form-data/License new file mode 100644 index 0000000..c7ff12a --- /dev/null +++ b/bff/node_modules/form-data/License @@ -0,0 +1,19 @@ +Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. diff --git a/bff/node_modules/form-data/README.md b/bff/node_modules/form-data/README.md new file mode 100644 index 0000000..f850e30 --- /dev/null +++ b/bff/node_modules/form-data/README.md @@ -0,0 +1,355 @@ +# Form-Data [![NPM Module](https://img.shields.io/npm/v/form-data.svg)](https://www.npmjs.com/package/form-data) [![Join the chat at https://gitter.im/form-data/form-data](http://form-data.github.io/images/gitterbadge.svg)](https://gitter.im/form-data/form-data) + +A library to create readable ```"multipart/form-data"``` streams. Can be used to submit forms and file uploads to other web applications. + +The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface][xhr2-fd]. + +[xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface + +[![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.5.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data) +[![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.5.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data) +[![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.5.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data) + +[![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.5.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master) +[![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data) + +## Install + +``` +npm install --save form-data +``` + +## Usage + +In this example we are constructing a form with 3 fields that contain a string, +a buffer and a file stream. + +``` javascript +var FormData = require('form-data'); +var fs = require('fs'); + +var form = new FormData(); +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_file', fs.createReadStream('/foo/bar.jpg')); +``` + +Also you can use http-response stream: + +``` javascript +var FormData = require('form-data'); +var http = require('http'); + +var form = new FormData(); + +http.request('http://nodejs.org/images/logo.png', function (response) { + form.append('my_field', 'my value'); + form.append('my_buffer', new Buffer(10)); + form.append('my_logo', response); +}); +``` + +Or @mikeal's [request](https://github.com/request/request) stream: + +``` javascript +var FormData = require('form-data'); +var request = require('request'); + +var form = new FormData(); + +form.append('my_field', 'my value'); +form.append('my_buffer', new Buffer(10)); +form.append('my_logo', request('http://nodejs.org/images/logo.png')); +``` + +In order to submit this form to a web application, call ```submit(url, [callback])``` method: + +``` javascript +form.submit('http://example.org/', function (err, res) { + // res – response object (http.IncomingMessage) // + res.resume(); +}); + +``` + +For more advanced request manipulations ```submit()``` method returns ```http.ClientRequest``` object, or you can choose from one of the alternative submission methods. + +### Custom options + +You can provide custom options, such as `maxDataSize`: + +``` javascript +var FormData = require('form-data'); + +var form = new FormData({ maxDataSize: 20971520 }); +form.append('my_field', 'my value'); +form.append('my_buffer', /* something big */); +``` + +List of available options could be found in [combined-stream](https://github.com/felixge/node-combined-stream/blob/master/lib/combined_stream.js#L7-L15) + +### Alternative submission methods + +You can use node's http client interface: + +``` javascript +var http = require('http'); + +var request = http.request({ + method: 'post', + host: 'example.org', + path: '/upload', + headers: form.getHeaders() +}); + +form.pipe(request); + +request.on('response', function (res) { + console.log(res.statusCode); +}); +``` + +Or if you would prefer the `'Content-Length'` header to be set for you: + +``` javascript +form.submit('example.org/upload', function (err, res) { + console.log(res.statusCode); +}); +``` + +To use custom headers and pre-known length in parts: + +``` javascript +var CRLF = '\r\n'; +var form = new FormData(); + +var options = { + header: CRLF + '--' + form.getBoundary() + CRLF + 'X-Custom-Header: 123' + CRLF + CRLF, + knownLength: 1 +}; + +form.append('my_buffer', buffer, options); + +form.submit('http://example.com/', function (err, res) { + if (err) throw err; + console.log('Done'); +}); +``` + +Form-Data can recognize and fetch all the required information from common types of streams (```fs.readStream```, ```http.response``` and ```mikeal's request```), for some other types of streams you'd need to provide "file"-related information manually: + +``` javascript +someModule.stream(function (err, stdout, stderr) { + if (err) throw err; + + var form = new FormData(); + + form.append('file', stdout, { + filename: 'unicycle.jpg', // ... or: + filepath: 'photos/toys/unicycle.jpg', + contentType: 'image/jpeg', + knownLength: 19806 + }); + + form.submit('http://example.com/', function (err, res) { + if (err) throw err; + console.log('Done'); + }); +}); +``` + +The `filepath` property overrides `filename` and may contain a relative path. This is typically used when uploading [multiple files from a directory](https://wicg.github.io/entries-api/#dom-htmlinputelement-webkitdirectory). + +For edge cases, like POST request to URL with query string or to pass HTTP auth credentials, object can be passed to `form.submit()` as first parameter: + +``` javascript +form.submit({ + host: 'example.com', + path: '/probably.php?extra=params', + auth: 'username:password' +}, function (err, res) { + console.log(res.statusCode); +}); +``` + +In case you need to also send custom HTTP headers with the POST request, you can use the `headers` key in first parameter of `form.submit()`: + +``` javascript +form.submit({ + host: 'example.com', + path: '/surelynot.php', + headers: { 'x-test-header': 'test-header-value' } +}, function (err, res) { + console.log(res.statusCode); +}); +``` + +### Methods + +- [_Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] )](https://github.com/form-data/form-data#void-append-string-field-mixed-value--mixed-options-). +- [_Headers_ getHeaders( [**Headers** _userHeaders_] )](https://github.com/form-data/form-data#array-getheaders-array-userheaders-) +- [_String_ getBoundary()](https://github.com/form-data/form-data#string-getboundary) +- [_Void_ setBoundary()](https://github.com/form-data/form-data#void-setboundary) +- [_Buffer_ getBuffer()](https://github.com/form-data/form-data#buffer-getbuffer) +- [_Integer_ getLengthSync()](https://github.com/form-data/form-data#integer-getlengthsync) +- [_Integer_ getLength( **function** _callback_ )](https://github.com/form-data/form-data#integer-getlength-function-callback-) +- [_Boolean_ hasKnownLength()](https://github.com/form-data/form-data#boolean-hasknownlength) +- [_Request_ submit( _params_, **function** _callback_ )](https://github.com/form-data/form-data#request-submit-params-function-callback-) +- [_String_ toString()](https://github.com/form-data/form-data#string-tostring) + +#### _Void_ append( **String** _field_, **Mixed** _value_ [, **Mixed** _options_] ) +Append data to the form. You can submit about any format (string, integer, boolean, buffer, etc.). However, Arrays are not supported and need to be turned into strings by the user. +```javascript +var form = new FormData(); +form.append('my_string', 'my value'); +form.append('my_integer', 1); +form.append('my_boolean', true); +form.append('my_buffer', new Buffer(10)); +form.append('my_array_as_json', JSON.stringify(['bird', 'cute'])); +``` + +You may provide a string for options, or an object. +```javascript +// Set filename by providing a string for options +form.append('my_file', fs.createReadStream('/foo/bar.jpg'), 'bar.jpg'); + +// provide an object. +form.append('my_file', fs.createReadStream('/foo/bar.jpg'), { filename: 'bar.jpg', contentType: 'image/jpeg', knownLength: 19806 }); +``` + +#### _Headers_ getHeaders( [**Headers** _userHeaders_] ) +This method adds the correct `content-type` header to the provided array of `userHeaders`. + +#### _String_ getBoundary() +Return the boundary of the formData. By default, the boundary consists of 26 `-` followed by 24 numbers +for example: +```javascript +--------------------------515890814546601021194782 +``` + +#### _Void_ setBoundary(String _boundary_) +Set the boundary string, overriding the default behavior described above. + +_Note: The boundary must be unique and may not appear in the data._ + +#### _Buffer_ getBuffer() +Return the full formdata request package, as a Buffer. You can insert this Buffer in e.g. Axios to send multipart data. +```javascript +var form = new FormData(); +form.append('my_buffer', Buffer.from([0x4a,0x42,0x20,0x52,0x6f,0x63,0x6b,0x73])); +form.append('my_file', fs.readFileSync('/foo/bar.jpg')); + +axios.post('https://example.com/path/to/api', form.getBuffer(), form.getHeaders()); +``` +**Note:** Because the output is of type Buffer, you can only append types that are accepted by Buffer: *string, Buffer, ArrayBuffer, Array, or Array-like Object*. A ReadStream for example will result in an error. + +#### _Integer_ getLengthSync() +Same as `getLength` but synchronous. + +_Note: getLengthSync __doesn't__ calculate streams length._ + +#### _Integer_ getLength(**function** _callback_ ) +Returns the `Content-Length` async. The callback is used to handle errors and continue once the length has been calculated +```javascript +this.getLength(function (err, length) { + if (err) { + this._error(err); + return; + } + + // add content length + request.setHeader('Content-Length', length); + + ... +}.bind(this)); +``` + +#### _Boolean_ hasKnownLength() +Checks if the length of added values is known. + +#### _Request_ submit(_params_, **function** _callback_ ) +Submit the form to a web application. +```javascript +var form = new FormData(); +form.append('my_string', 'Hello World'); + +form.submit('http://example.com/', function (err, res) { + // res – response object (http.IncomingMessage) // + res.resume(); +} ); +``` + +#### _String_ toString() +Returns the form data as a string. Don't use this if you are sending files or buffers, use `getBuffer()` instead. + +### Integration with other libraries + +#### Request + +Form submission using [request](https://github.com/request/request): + +```javascript +var formData = { + my_field: 'my_value', + my_file: fs.createReadStream(__dirname + '/unicycle.jpg'), +}; + +request.post({url:'http://service.com/upload', formData: formData}, function (err, httpResponse, body) { + if (err) { + return console.error('upload failed:', err); + } + console.log('Upload successful! Server responded with:', body); +}); +``` + +For more details see [request readme](https://github.com/request/request#multipartform-data-multipart-form-uploads). + +#### node-fetch + +You can also submit a form using [node-fetch](https://github.com/bitinn/node-fetch): + +```javascript +var form = new FormData(); + +form.append('a', 1); + +fetch('http://example.com', { method: 'POST', body: form }) + .then(function (res) { + return res.json(); + }).then(function (json) { + console.log(json); + }); +``` + +#### axios + +In Node.js you can post a file using [axios](https://github.com/axios/axios): +```javascript +const form = new FormData(); +const stream = fs.createReadStream(PATH_TO_FILE); + +form.append('image', stream); + +// In Node.js environment you need to set boundary in the header field 'Content-Type' by calling method `getHeaders` +const formHeaders = form.getHeaders(); + +axios.post('http://example.com', form, { + headers: { + ...formHeaders, + }, +}) + .then(response => response) + .catch(error => error) +``` + +## Notes + +- ```getLengthSync()``` method DOESN'T calculate length for streams, use ```knownLength``` options as workaround. +- ```getLength(cb)``` will send an error as first parameter of callback if stream length cannot be calculated (e.g. send in custom streams w/o using ```knownLength```). +- ```submit``` will not add `content-length` if form length is unknown or not calculable. +- Starting version `2.x` FormData has dropped support for `node@0.10.x`. +- Starting version `3.x` FormData has dropped support for `node@4.x`. + +## License + +Form-Data is released under the [MIT](License) license. diff --git a/bff/node_modules/form-data/index.d.ts b/bff/node_modules/form-data/index.d.ts new file mode 100644 index 0000000..295e9e9 --- /dev/null +++ b/bff/node_modules/form-data/index.d.ts @@ -0,0 +1,62 @@ +// Definitions by: Carlos Ballesteros Velasco +// Leon Yu +// BendingBender +// Maple Miao + +/// +import * as stream from 'stream'; +import * as http from 'http'; + +export = FormData; + +// Extracted because @types/node doesn't export interfaces. +interface ReadableOptions { + highWaterMark?: number; + encoding?: string; + objectMode?: boolean; + read?(this: stream.Readable, size: number): void; + destroy?(this: stream.Readable, error: Error | null, callback: (error: Error | null) => void): void; + autoDestroy?: boolean; +} + +interface Options extends ReadableOptions { + writable?: boolean; + readable?: boolean; + dataSize?: number; + maxDataSize?: number; + pauseStreams?: boolean; +} + +declare class FormData extends stream.Readable { + constructor(options?: Options); + append(key: string, value: any, options?: FormData.AppendOptions | string): void; + getHeaders(userHeaders?: FormData.Headers): FormData.Headers; + submit( + params: string | FormData.SubmitOptions, + callback?: (error: Error | null, response: http.IncomingMessage) => void + ): http.ClientRequest; + getBuffer(): Buffer; + setBoundary(boundary: string): void; + getBoundary(): string; + getLength(callback: (err: Error | null, length: number) => void): void; + getLengthSync(): number; + hasKnownLength(): boolean; +} + +declare namespace FormData { + interface Headers { + [key: string]: any; + } + + interface AppendOptions { + header?: string | Headers; + knownLength?: number; + filename?: string; + filepath?: string; + contentType?: string; + } + + interface SubmitOptions extends http.RequestOptions { + protocol?: 'https:' | 'http:'; + } +} diff --git a/bff/node_modules/form-data/lib/browser.js b/bff/node_modules/form-data/lib/browser.js new file mode 100644 index 0000000..8950a91 --- /dev/null +++ b/bff/node_modules/form-data/lib/browser.js @@ -0,0 +1,4 @@ +'use strict'; + +/* eslint-env browser */ +module.exports = typeof self === 'object' ? self.FormData : window.FormData; diff --git a/bff/node_modules/form-data/lib/form_data.js b/bff/node_modules/form-data/lib/form_data.js new file mode 100644 index 0000000..63a0f01 --- /dev/null +++ b/bff/node_modules/form-data/lib/form_data.js @@ -0,0 +1,494 @@ +'use strict'; + +var CombinedStream = require('combined-stream'); +var util = require('util'); +var path = require('path'); +var http = require('http'); +var https = require('https'); +var parseUrl = require('url').parse; +var fs = require('fs'); +var Stream = require('stream').Stream; +var crypto = require('crypto'); +var mime = require('mime-types'); +var asynckit = require('asynckit'); +var setToStringTag = require('es-set-tostringtag'); +var hasOwn = require('hasown'); +var populate = require('./populate.js'); + +/** + * Create readable "multipart/form-data" streams. + * Can be used to submit forms + * and file uploads to other web applications. + * + * @constructor + * @param {object} options - Properties to be added/overriden for FormData and CombinedStream + */ +function FormData(options) { + if (!(this instanceof FormData)) { + return new FormData(options); + } + + this._overheadLength = 0; + this._valueLength = 0; + this._valuesToMeasure = []; + + CombinedStream.call(this); + + options = options || {}; // eslint-disable-line no-param-reassign + for (var option in options) { // eslint-disable-line no-restricted-syntax + this[option] = options[option]; + } +} + +// make it a Stream +util.inherits(FormData, CombinedStream); + +FormData.LINE_BREAK = '\r\n'; +FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; + +FormData.prototype.append = function (field, value, options) { + options = options || {}; // eslint-disable-line no-param-reassign + + // allow filename as single option + if (typeof options === 'string') { + options = { filename: options }; // eslint-disable-line no-param-reassign + } + + var append = CombinedStream.prototype.append.bind(this); + + // all that streamy business can't handle numbers + if (typeof value === 'number' || value == null) { + value = String(value); // eslint-disable-line no-param-reassign + } + + // https://github.com/felixge/node-form-data/issues/38 + if (Array.isArray(value)) { + /* + * Please convert your array into string + * the way web server expects it + */ + this._error(new Error('Arrays are not supported.')); + return; + } + + var header = this._multiPartHeader(field, value, options); + var footer = this._multiPartFooter(); + + append(header); + append(value); + append(footer); + + // pass along options.knownLength + this._trackLength(header, value, options); +}; + +FormData.prototype._trackLength = function (header, value, options) { + var valueLength = 0; + + /* + * used w/ getLengthSync(), when length is known. + * e.g. for streaming directly from a remote server, + * w/ a known file a size, and not wanting to wait for + * incoming file to finish to get its size. + */ + if (options.knownLength != null) { + valueLength += Number(options.knownLength); + } else if (Buffer.isBuffer(value)) { + valueLength = value.length; + } else if (typeof value === 'string') { + valueLength = Buffer.byteLength(value); + } + + this._valueLength += valueLength; + + // @check why add CRLF? does this account for custom/multiple CRLFs? + this._overheadLength += Buffer.byteLength(header) + FormData.LINE_BREAK.length; + + // empty or either doesn't have path or not an http response or not a stream + if (!value || (!value.path && !(value.readable && hasOwn(value, 'httpVersion')) && !(value instanceof Stream))) { + return; + } + + // no need to bother with the length + if (!options.knownLength) { + this._valuesToMeasure.push(value); + } +}; + +FormData.prototype._lengthRetriever = function (value, callback) { + if (hasOwn(value, 'fd')) { + // take read range into a account + // `end` = Infinity –> read file till the end + // + // TODO: Looks like there is bug in Node fs.createReadStream + // it doesn't respect `end` options without `start` options + // Fix it when node fixes it. + // https://github.com/joyent/node/issues/7819 + if (value.end != undefined && value.end != Infinity && value.start != undefined) { + // when end specified + // no need to calculate range + // inclusive, starts with 0 + callback(null, value.end + 1 - (value.start ? value.start : 0)); // eslint-disable-line callback-return + + // not that fast snoopy + } else { + // still need to fetch file size from fs + fs.stat(value.path, function (err, stat) { + if (err) { + callback(err); + return; + } + + // update final size based on the range options + var fileSize = stat.size - (value.start ? value.start : 0); + callback(null, fileSize); + }); + } + + // or http response + } else if (hasOwn(value, 'httpVersion')) { + callback(null, Number(value.headers['content-length'])); // eslint-disable-line callback-return + + // or request stream http://github.com/mikeal/request + } else if (hasOwn(value, 'httpModule')) { + // wait till response come back + value.on('response', function (response) { + value.pause(); + callback(null, Number(response.headers['content-length'])); + }); + value.resume(); + + // something else + } else { + callback('Unknown stream'); // eslint-disable-line callback-return + } +}; + +FormData.prototype._multiPartHeader = function (field, value, options) { + /* + * custom header specified (as string)? + * it becomes responsible for boundary + * (e.g. to handle extra CRLFs on .NET servers) + */ + if (typeof options.header === 'string') { + return options.header; + } + + var contentDisposition = this._getContentDisposition(value, options); + var contentType = this._getContentType(value, options); + + var contents = ''; + var headers = { + // add custom disposition as third element or keep it two elements if not + 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), + // if no content type. allow it to be empty array + 'Content-Type': [].concat(contentType || []) + }; + + // allow custom headers. + if (typeof options.header === 'object') { + populate(headers, options.header); + } + + var header; + for (var prop in headers) { // eslint-disable-line no-restricted-syntax + if (hasOwn(headers, prop)) { + header = headers[prop]; + + // skip nullish headers. + if (header == null) { + continue; // eslint-disable-line no-restricted-syntax, no-continue + } + + // convert all headers to arrays. + if (!Array.isArray(header)) { + header = [header]; + } + + // add non-empty headers. + if (header.length) { + contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; + } + } + } + + return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; +}; + +FormData.prototype._getContentDisposition = function (value, options) { // eslint-disable-line consistent-return + var filename; + + if (typeof options.filepath === 'string') { + // custom filepath for relative paths + filename = path.normalize(options.filepath).replace(/\\/g, '/'); + } else if (options.filename || (value && (value.name || value.path))) { + /* + * custom filename take precedence + * formidable and the browser add a name property + * fs- and request- streams have path property + */ + filename = path.basename(options.filename || (value && (value.name || value.path))); + } else if (value && value.readable && hasOwn(value, 'httpVersion')) { + // or try http response + filename = path.basename(value.client._httpMessage.path || ''); + } + + if (filename) { + return 'filename="' + filename + '"'; + } +}; + +FormData.prototype._getContentType = function (value, options) { + // use custom content-type above all + var contentType = options.contentType; + + // or try `name` from formidable, browser + if (!contentType && value && value.name) { + contentType = mime.lookup(value.name); + } + + // or try `path` from fs-, request- streams + if (!contentType && value && value.path) { + contentType = mime.lookup(value.path); + } + + // or if it's http-reponse + if (!contentType && value && value.readable && hasOwn(value, 'httpVersion')) { + contentType = value.headers['content-type']; + } + + // or guess it from the filepath or filename + if (!contentType && (options.filepath || options.filename)) { + contentType = mime.lookup(options.filepath || options.filename); + } + + // fallback to the default content type if `value` is not simple value + if (!contentType && value && typeof value === 'object') { + contentType = FormData.DEFAULT_CONTENT_TYPE; + } + + return contentType; +}; + +FormData.prototype._multiPartFooter = function () { + return function (next) { + var footer = FormData.LINE_BREAK; + + var lastPart = this._streams.length === 0; + if (lastPart) { + footer += this._lastBoundary(); + } + + next(footer); + }.bind(this); +}; + +FormData.prototype._lastBoundary = function () { + return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; +}; + +FormData.prototype.getHeaders = function (userHeaders) { + var header; + var formHeaders = { + 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() + }; + + for (header in userHeaders) { // eslint-disable-line no-restricted-syntax + if (hasOwn(userHeaders, header)) { + formHeaders[header.toLowerCase()] = userHeaders[header]; + } + } + + return formHeaders; +}; + +FormData.prototype.setBoundary = function (boundary) { + if (typeof boundary !== 'string') { + throw new TypeError('FormData boundary must be a string'); + } + this._boundary = boundary; +}; + +FormData.prototype.getBoundary = function () { + if (!this._boundary) { + this._generateBoundary(); + } + + return this._boundary; +}; + +FormData.prototype.getBuffer = function () { + var dataBuffer = new Buffer.alloc(0); // eslint-disable-line new-cap + var boundary = this.getBoundary(); + + // Create the form content. Add Line breaks to the end of data. + for (var i = 0, len = this._streams.length; i < len; i++) { + if (typeof this._streams[i] !== 'function') { + // Add content to the buffer. + if (Buffer.isBuffer(this._streams[i])) { + dataBuffer = Buffer.concat([dataBuffer, this._streams[i]]); + } else { + dataBuffer = Buffer.concat([dataBuffer, Buffer.from(this._streams[i])]); + } + + // Add break after content. + if (typeof this._streams[i] !== 'string' || this._streams[i].substring(2, boundary.length + 2) !== boundary) { + dataBuffer = Buffer.concat([dataBuffer, Buffer.from(FormData.LINE_BREAK)]); + } + } + } + + // Add the footer and return the Buffer object. + return Buffer.concat([dataBuffer, Buffer.from(this._lastBoundary())]); +}; + +FormData.prototype._generateBoundary = function () { + // This generates a 50 character boundary similar to those used by Firefox. + + // They are optimized for boyer-moore parsing. + this._boundary = '--------------------------' + crypto.randomBytes(12).toString('hex'); +}; + +// Note: getLengthSync DOESN'T calculate streams length +// As workaround one can calculate file size manually and add it as knownLength option +FormData.prototype.getLengthSync = function () { + var knownLength = this._overheadLength + this._valueLength; + + // Don't get confused, there are 3 "internal" streams for each keyval pair so it basically checks if there is any value added to the form + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + // https://github.com/form-data/form-data/issues/40 + if (!this.hasKnownLength()) { + /* + * Some async length retrievers are present + * therefore synchronous length calculation is false. + * Please use getLength(callback) to get proper length + */ + this._error(new Error('Cannot calculate proper length in synchronous way.')); + } + + return knownLength; +}; + +// Public API to check if length of added values is known +// https://github.com/form-data/form-data/issues/196 +// https://github.com/form-data/form-data/issues/262 +FormData.prototype.hasKnownLength = function () { + var hasKnownLength = true; + + if (this._valuesToMeasure.length) { + hasKnownLength = false; + } + + return hasKnownLength; +}; + +FormData.prototype.getLength = function (cb) { + var knownLength = this._overheadLength + this._valueLength; + + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + if (!this._valuesToMeasure.length) { + process.nextTick(cb.bind(this, null, knownLength)); + return; + } + + asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function (err, values) { + if (err) { + cb(err); + return; + } + + values.forEach(function (length) { + knownLength += length; + }); + + cb(null, knownLength); + }); +}; + +FormData.prototype.submit = function (params, cb) { + var request; + var options; + var defaults = { method: 'post' }; + + // parse provided url if it's string or treat it as options object + if (typeof params === 'string') { + params = parseUrl(params); // eslint-disable-line no-param-reassign + /* eslint sort-keys: 0 */ + options = populate({ + port: params.port, + path: params.pathname, + host: params.hostname, + protocol: params.protocol + }, defaults); + } else { // use custom params + options = populate(params, defaults); + // if no port provided use default one + if (!options.port) { + options.port = options.protocol === 'https:' ? 443 : 80; + } + } + + // put that good code in getHeaders to some use + options.headers = this.getHeaders(params.headers); + + // https if specified, fallback to http in any other case + if (options.protocol === 'https:') { + request = https.request(options); + } else { + request = http.request(options); + } + + // get content length and fire away + this.getLength(function (err, length) { + if (err && err !== 'Unknown stream') { + this._error(err); + return; + } + + // add content length + if (length) { + request.setHeader('Content-Length', length); + } + + this.pipe(request); + if (cb) { + var onResponse; + + var callback = function (error, responce) { + request.removeListener('error', callback); + request.removeListener('response', onResponse); + + return cb.call(this, error, responce); + }; + + onResponse = callback.bind(this, null); + + request.on('error', callback); + request.on('response', onResponse); + } + }.bind(this)); + + return request; +}; + +FormData.prototype._error = function (err) { + if (!this.error) { + this.error = err; + this.pause(); + this.emit('error', err); + } +}; + +FormData.prototype.toString = function () { + return '[object FormData]'; +}; +setToStringTag(FormData.prototype, 'FormData'); + +// Public API +module.exports = FormData; diff --git a/bff/node_modules/form-data/lib/populate.js b/bff/node_modules/form-data/lib/populate.js new file mode 100644 index 0000000..55ac3bb --- /dev/null +++ b/bff/node_modules/form-data/lib/populate.js @@ -0,0 +1,10 @@ +'use strict'; + +// populates missing values +module.exports = function (dst, src) { + Object.keys(src).forEach(function (prop) { + dst[prop] = dst[prop] || src[prop]; // eslint-disable-line no-param-reassign + }); + + return dst; +}; diff --git a/bff/node_modules/form-data/node_modules/mime-db/HISTORY.md b/bff/node_modules/form-data/node_modules/mime-db/HISTORY.md new file mode 100644 index 0000000..7436f64 --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-db/HISTORY.md @@ -0,0 +1,507 @@ +1.52.0 / 2022-02-21 +=================== + + * Add extensions from IANA for more `image/*` types + * Add extension `.asc` to `application/pgp-keys` + * Add extensions to various XML types + * Add new upstream MIME types + +1.51.0 / 2021-11-08 +=================== + + * Add new upstream MIME types + * Mark `image/vnd.microsoft.icon` as compressible + * Mark `image/vnd.ms-dds` as compressible + +1.50.0 / 2021-09-15 +=================== + + * Add deprecated iWorks mime types and extensions + * Add new upstream MIME types + +1.49.0 / 2021-07-26 +=================== + + * Add extension `.trig` to `application/trig` + * Add new upstream MIME types + +1.48.0 / 2021-05-30 +=================== + + * Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + * Add new upstream MIME types + * Mark `text/yaml` as compressible + +1.47.0 / 2021-04-01 +=================== + + * Add new upstream MIME types + * Remove ambigious extensions from IANA for `application/*+xml` types + * Update primary extension to `.es` for `application/ecmascript` + +1.46.0 / 2021-02-13 +=================== + + * Add extension `.amr` to `audio/amr` + * Add extension `.m4s` to `video/iso.segment` + * Add extension `.opus` to `audio/ogg` + * Add new upstream MIME types + +1.45.0 / 2020-09-22 +=================== + + * Add `application/ubjson` with extension `.ubj` + * Add `image/avif` with extension `.avif` + * Add `image/ktx2` with extension `.ktx2` + * Add extension `.dbf` to `application/vnd.dbf` + * Add extension `.rar` to `application/vnd.rar` + * Add extension `.td` to `application/urc-targetdesc+xml` + * Add new upstream MIME types + * Fix extension of `application/vnd.apple.keynote` to be `.key` + +1.44.0 / 2020-04-22 +=================== + + * Add charsets from IANA + * Add extension `.cjs` to `application/node` + * Add new upstream MIME types + +1.43.0 / 2020-01-05 +=================== + + * Add `application/x-keepass2` with extension `.kdbx` + * Add extension `.mxmf` to `audio/mobile-xmf` + * Add extensions from IANA for `application/*+xml` types + * Add new upstream MIME types + +1.42.0 / 2019-09-25 +=================== + + * Add `image/vnd.ms-dds` with extension `.dds` + * Add new upstream MIME types + * Remove compressible from `multipart/mixed` + +1.41.0 / 2019-08-30 +=================== + + * Add new upstream MIME types + * Add `application/toml` with extension `.toml` + * Mark `font/ttf` as compressible + +1.40.0 / 2019-04-20 +=================== + + * Add extensions from IANA for `model/*` types + * Add `text/mdx` with extension `.mdx` + +1.39.0 / 2019-04-04 +=================== + + * Add extensions `.siv` and `.sieve` to `application/sieve` + * Add new upstream MIME types + +1.38.0 / 2019-02-04 +=================== + + * Add extension `.nq` to `application/n-quads` + * Add extension `.nt` to `application/n-triples` + * Add new upstream MIME types + * Mark `text/less` as compressible + +1.37.0 / 2018-10-19 +=================== + + * Add extensions to HEIC image types + * Add new upstream MIME types + +1.36.0 / 2018-08-20 +=================== + + * Add Apple file extensions from IANA + * Add extensions from IANA for `image/*` types + * Add new upstream MIME types + +1.35.0 / 2018-07-15 +=================== + + * Add extension `.owl` to `application/rdf+xml` + * Add new upstream MIME types + - Removes extension `.woff` from `application/font-woff` + +1.34.0 / 2018-06-03 +=================== + + * Add extension `.csl` to `application/vnd.citationstyles.style+xml` + * Add extension `.es` to `application/ecmascript` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/turtle` + * Mark all XML-derived types as compressible + +1.33.0 / 2018-02-15 +=================== + + * Add extensions from IANA for `message/*` types + * Add new upstream MIME types + * Fix some incorrect OOXML types + * Remove `application/font-woff2` + +1.32.0 / 2017-11-29 +=================== + + * Add new upstream MIME types + * Update `text/hjson` to registered `application/hjson` + * Add `text/shex` with extension `.shex` + +1.31.0 / 2017-10-25 +=================== + + * Add `application/raml+yaml` with extension `.raml` + * Add `application/wasm` with extension `.wasm` + * Add new `font` type from IANA + * Add new upstream font extensions + * Add new upstream MIME types + * Add extensions for JPEG-2000 images + +1.30.0 / 2017-08-27 +=================== + + * Add `application/vnd.ms-outlook` + * Add `application/x-arj` + * Add extension `.mjs` to `application/javascript` + * Add glTF types and extensions + * Add new upstream MIME types + * Add `text/x-org` + * Add VirtualBox MIME types + * Fix `source` records for `video/*` types that are IANA + * Update `font/opentype` to registered `font/otf` + +1.29.0 / 2017-07-10 +=================== + + * Add `application/fido.trusted-apps+json` + * Add extension `.wadl` to `application/vnd.sun.wadl+xml` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/css` + +1.28.0 / 2017-05-14 +=================== + + * Add new upstream MIME types + * Add extension `.gz` to `application/gzip` + * Update extensions `.md` and `.markdown` to be `text/markdown` + +1.27.0 / 2017-03-16 +=================== + + * Add new upstream MIME types + * Add `image/apng` with extension `.apng` + +1.26.0 / 2017-01-14 +=================== + + * Add new upstream MIME types + * Add extension `.geojson` to `application/geo+json` + +1.25.0 / 2016-11-11 +=================== + + * Add new upstream MIME types + +1.24.0 / 2016-09-18 +=================== + + * Add `audio/mp3` + * Add new upstream MIME types + +1.23.0 / 2016-05-01 +=================== + + * Add new upstream MIME types + * Add extension `.3gpp` to `audio/3gpp` + +1.22.0 / 2016-02-15 +=================== + + * Add `text/slim` + * Add extension `.rng` to `application/xml` + * Add new upstream MIME types + * Fix extension of `application/dash+xml` to be `.mpd` + * Update primary extension to `.m4a` for `audio/mp4` + +1.21.0 / 2016-01-06 +=================== + + * Add Google document types + * Add new upstream MIME types + +1.20.0 / 2015-11-10 +=================== + + * Add `text/x-suse-ymp` + * Add new upstream MIME types + +1.19.0 / 2015-09-17 +=================== + + * Add `application/vnd.apple.pkpass` + * Add new upstream MIME types + +1.18.0 / 2015-09-03 +=================== + + * Add new upstream MIME types + +1.17.0 / 2015-08-13 +=================== + + * Add `application/x-msdos-program` + * Add `audio/g711-0` + * Add `image/vnd.mozilla.apng` + * Add extension `.exe` to `application/x-msdos-program` + +1.16.0 / 2015-07-29 +=================== + + * Add `application/vnd.uri-map` + +1.15.0 / 2015-07-13 +=================== + + * Add `application/x-httpd-php` + +1.14.0 / 2015-06-25 +=================== + + * Add `application/scim+json` + * Add `application/vnd.3gpp.ussd+xml` + * Add `application/vnd.biopax.rdf+xml` + * Add `text/x-processing` + +1.13.0 / 2015-06-07 +=================== + + * Add nginx as a source + * Add `application/x-cocoa` + * Add `application/x-java-archive-diff` + * Add `application/x-makeself` + * Add `application/x-perl` + * Add `application/x-pilot` + * Add `application/x-redhat-package-manager` + * Add `application/x-sea` + * Add `audio/x-m4a` + * Add `audio/x-realaudio` + * Add `image/x-jng` + * Add `text/mathml` + +1.12.0 / 2015-06-05 +=================== + + * Add `application/bdoc` + * Add `application/vnd.hyperdrive+json` + * Add `application/x-bdoc` + * Add extension `.rtf` to `text/rtf` + +1.11.0 / 2015-05-31 +=================== + + * Add `audio/wav` + * Add `audio/wave` + * Add extension `.litcoffee` to `text/coffeescript` + * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` + * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` + +1.10.0 / 2015-05-19 +=================== + + * Add `application/vnd.balsamiq.bmpr` + * Add `application/vnd.microsoft.portable-executable` + * Add `application/x-ns-proxy-autoconfig` + +1.9.1 / 2015-04-19 +================== + + * Remove `.json` extension from `application/manifest+json` + - This is causing bugs downstream + +1.9.0 / 2015-04-19 +================== + + * Add `application/manifest+json` + * Add `application/vnd.micro+json` + * Add `image/vnd.zbrush.pcx` + * Add `image/x-ms-bmp` + +1.8.0 / 2015-03-13 +================== + + * Add `application/vnd.citationstyles.style+xml` + * Add `application/vnd.fastcopy-disk-image` + * Add `application/vnd.gov.sk.xmldatacontainer+xml` + * Add extension `.jsonld` to `application/ld+json` + +1.7.0 / 2015-02-08 +================== + + * Add `application/vnd.gerber` + * Add `application/vnd.msa-disk-image` + +1.6.1 / 2015-02-05 +================== + + * Community extensions ownership transferred from `node-mime` + +1.6.0 / 2015-01-29 +================== + + * Add `application/jose` + * Add `application/jose+json` + * Add `application/json-seq` + * Add `application/jwk+json` + * Add `application/jwk-set+json` + * Add `application/jwt` + * Add `application/rdap+json` + * Add `application/vnd.gov.sk.e-form+xml` + * Add `application/vnd.ims.imsccv1p3` + +1.5.0 / 2014-12-30 +================== + + * Add `application/vnd.oracle.resource+json` + * Fix various invalid MIME type entries + - `application/mbox+xml` + - `application/oscp-response` + - `application/vwg-multiplexed` + - `audio/g721` + +1.4.0 / 2014-12-21 +================== + + * Add `application/vnd.ims.imsccv1p2` + * Fix various invalid MIME type entries + - `application/vnd-acucobol` + - `application/vnd-curl` + - `application/vnd-dart` + - `application/vnd-dxr` + - `application/vnd-fdf` + - `application/vnd-mif` + - `application/vnd-sema` + - `application/vnd-wap-wmlc` + - `application/vnd.adobe.flash-movie` + - `application/vnd.dece-zip` + - `application/vnd.dvb_service` + - `application/vnd.micrografx-igx` + - `application/vnd.sealed-doc` + - `application/vnd.sealed-eml` + - `application/vnd.sealed-mht` + - `application/vnd.sealed-ppt` + - `application/vnd.sealed-tiff` + - `application/vnd.sealed-xls` + - `application/vnd.sealedmedia.softseal-html` + - `application/vnd.sealedmedia.softseal-pdf` + - `application/vnd.wap-slc` + - `application/vnd.wap-wbxml` + - `audio/vnd.sealedmedia.softseal-mpeg` + - `image/vnd-djvu` + - `image/vnd-svf` + - `image/vnd-wap-wbmp` + - `image/vnd.sealed-png` + - `image/vnd.sealedmedia.softseal-gif` + - `image/vnd.sealedmedia.softseal-jpg` + - `model/vnd-dwf` + - `model/vnd.parasolid.transmit-binary` + - `model/vnd.parasolid.transmit-text` + - `text/vnd-a` + - `text/vnd-curl` + - `text/vnd.wap-wml` + * Remove example template MIME types + - `application/example` + - `audio/example` + - `image/example` + - `message/example` + - `model/example` + - `multipart/example` + - `text/example` + - `video/example` + +1.3.1 / 2014-12-16 +================== + + * Fix missing extensions + - `application/json5` + - `text/hjson` + +1.3.0 / 2014-12-07 +================== + + * Add `application/a2l` + * Add `application/aml` + * Add `application/atfx` + * Add `application/atxml` + * Add `application/cdfx+xml` + * Add `application/dii` + * Add `application/json5` + * Add `application/lxf` + * Add `application/mf4` + * Add `application/vnd.apache.thrift.compact` + * Add `application/vnd.apache.thrift.json` + * Add `application/vnd.coffeescript` + * Add `application/vnd.enphase.envoy` + * Add `application/vnd.ims.imsccv1p1` + * Add `text/csv-schema` + * Add `text/hjson` + * Add `text/markdown` + * Add `text/yaml` + +1.2.0 / 2014-11-09 +================== + + * Add `application/cea` + * Add `application/dit` + * Add `application/vnd.gov.sk.e-form+zip` + * Add `application/vnd.tmd.mediaflex.api+xml` + * Type `application/epub+zip` is now IANA-registered + +1.1.2 / 2014-10-23 +================== + + * Rebuild database for `application/x-www-form-urlencoded` change + +1.1.1 / 2014-10-20 +================== + + * Mark `application/x-www-form-urlencoded` as compressible. + +1.1.0 / 2014-09-28 +================== + + * Add `application/font-woff2` + +1.0.3 / 2014-09-25 +================== + + * Fix engine requirement in package + +1.0.2 / 2014-09-25 +================== + + * Add `application/coap-group+json` + * Add `application/dcd` + * Add `application/vnd.apache.thrift.binary` + * Add `image/vnd.tencent.tap` + * Mark all JSON-derived types as compressible + * Update `text/vtt` data + +1.0.1 / 2014-08-30 +================== + + * Fix extension ordering + +1.0.0 / 2014-08-30 +================== + + * Add `application/atf` + * Add `application/merge-patch+json` + * Add `multipart/x-mixed-replace` + * Add `source: 'apache'` metadata + * Add `source: 'iana'` metadata + * Remove badly-assumed charset data diff --git a/bff/node_modules/form-data/node_modules/mime-db/LICENSE b/bff/node_modules/form-data/node_modules/mime-db/LICENSE new file mode 100644 index 0000000..0751cb1 --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-db/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/form-data/node_modules/mime-db/README.md b/bff/node_modules/form-data/node_modules/mime-db/README.md new file mode 100644 index 0000000..5a8fcfe --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-db/README.md @@ -0,0 +1,100 @@ +# mime-db + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +This is a large database of mime types and information about them. +It consists of a single, public JSON file and does not include any logic, +allowing it to remain as un-opinionated as possible with an API. +It aggregates data from the following sources: + +- http://www.iana.org/assignments/media-types/media-types.xhtml +- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types + +## Installation + +```bash +npm install mime-db +``` + +### Database Download + +If you're crazy enough to use this in the browser, you can just grab the +JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to +replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags) +as the JSON format may change in the future. + +``` +https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json +``` + +## Usage + +```js +var db = require('mime-db') + +// grab data on .js files +var data = db['application/javascript'] +``` + +## Data Structure + +The JSON file is a map lookup for lowercased mime types. +Each mime type has the following properties: + +- `.source` - where the mime type is defined. + If not set, it's probably a custom media type. + - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) + - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) + - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) +- `.extensions[]` - known extensions associated with this mime type. +- `.compressible` - whether a file of this type can be gzipped. +- `.charset` - the default charset associated with this type, if any. + +If unknown, every property could be `undefined`. + +## Contributing + +To edit the database, only make PRs against `src/custom-types.json` or +`src/custom-suffix.json`. + +The `src/custom-types.json` file is a JSON object with the MIME type as the +keys and the values being an object with the following keys: + +- `compressible` - leave out if you don't know, otherwise `true`/`false` to + indicate whether the data represented by the type is typically compressible. +- `extensions` - include an array of file extensions that are associated with + the type. +- `notes` - human-readable notes about the type, typically what the type is. +- `sources` - include an array of URLs of where the MIME type and the associated + extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source); + links to type aggregating sites and Wikipedia are _not acceptable_. + +To update the build, run `npm run build`. + +### Adding Custom Media Types + +The best way to get new media types included in this library is to register +them with the IANA. The community registration procedure is outlined in +[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types +registered with the IANA are automatically pulled into this library. + +If that is not possible / feasible, they can be added directly here as a +"custom" type. To do this, it is required to have a primary source that +definitively lists the media type. If an extension is going to be listed as +associateed with this media type, the source must definitively link the +media type and extension as well. + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci +[ci-url]: https://github.com/jshttp/mime-db/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master +[node-image]: https://badgen.net/npm/node/mime-db +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-db +[npm-url]: https://npmjs.org/package/mime-db +[npm-version-image]: https://badgen.net/npm/v/mime-db diff --git a/bff/node_modules/form-data/node_modules/mime-db/db.json b/bff/node_modules/form-data/node_modules/mime-db/db.json new file mode 100644 index 0000000..eb9c42c --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-db/db.json @@ -0,0 +1,8519 @@ +{ + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/3gpphal+json": { + "source": "iana", + "compressible": true + }, + "application/3gpphalforms+json": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/ace+cbor": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": ["ez"] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": ["aw"] + }, + "application/at+jwt": { + "source": "iana" + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atom"] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomcat"] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomdeleted"] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomsvc"] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dwd"] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": ["held"] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsat"] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xcs"] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ccxml"] + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdfx"] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": ["cdmia"] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": ["cdmic"] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": ["cdmid"] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": ["cdmio"] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": ["cdmiq"] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/city+json": { + "source": "iana", + "compressible": true + }, + "application/clr": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cpl"] + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": ["cu"] + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpd"] + }, + "application/dash-patch+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpp"] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": ["davmount"] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana" + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dbk"] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": ["dssc"] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdssc"] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "iana", + "compressible": true, + "extensions": ["es","ecma"] + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/elm+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/elm+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emma"] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emotionml"] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": ["epub"] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": ["exi"] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/express": { + "source": "iana", + "extensions": ["exp"] + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fdt"] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": ["pfr"] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": ["geojson"] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["gml"] + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["gpx"] + }, + "application/gxf": { + "source": "apache", + "extensions": ["gxf"] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": ["gz"] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": ["hjson"] + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": ["stk"] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ink","inkml"] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": ["ipfix"] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": ["its"] + }, + "application/java-archive": { + "source": "apache", + "compressible": false, + "extensions": ["jar","war","ear"] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": ["ser"] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": ["class"] + }, + "application/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js","mjs"] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/jscalendar+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["json","map"] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": ["json5"] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": ["jsonml"] + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": ["jsonld"] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lgr"] + }, + "application/link-format": { + "source": "iana" + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lostxml"] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": ["hqx"] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": ["cpt"] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mads"] + }, + "application/manifest+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["webmanifest"] + }, + "application/marc": { + "source": "iana", + "extensions": ["mrc"] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mrcx"] + }, + "application/mathematica": { + "source": "iana", + "extensions": ["ma","nb","mb"] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mathml"] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": ["mbox"] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpf"] + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mscml"] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": ["metalink"] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": ["meta4"] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mets"] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/missing-blocks+cbor-seq": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["maei"] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musd"] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mods"] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": ["m21","mp21"] + }, + "application/mp4": { + "source": "iana", + "extensions": ["mp4s","m4p"] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": ["doc","dot"] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": ["mxf"] + }, + "application/n-quads": { + "source": "iana", + "extensions": ["nq"] + }, + "application/n-triples": { + "source": "iana", + "extensions": ["nt"] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": ["cjs"] + }, + "application/nss": { + "source": "iana" + }, + "application/oauth-authz-req+jwt": { + "source": "iana" + }, + "application/oblivious-dns-message": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] + }, + "application/oda": { + "source": "iana", + "extensions": ["oda"] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["opf"] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogx"] + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["omdoc"] + }, + "application/onenote": { + "source": "apache", + "extensions": ["onetoc","onetoc2","onetmp","onepkg"] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": ["oxps"] + }, + "application/p21": { + "source": "iana" + }, + "application/p21+zip": { + "source": "iana", + "compressible": false + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": ["relo"] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": ["pdf"] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": ["pgp"] + }, + "application/pgp-keys": { + "source": "iana", + "extensions": ["asc"] + }, + "application/pgp-signature": { + "source": "iana", + "extensions": ["asc","sig"] + }, + "application/pics-rules": { + "source": "apache", + "extensions": ["prf"] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": ["p10"] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": ["p7m","p7c"] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": ["p7s"] + }, + "application/pkcs8": { + "source": "iana", + "extensions": ["p8"] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": ["ac"] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": ["cer"] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": ["crl"] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": ["pkipath"] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": ["pki"] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pls"] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": ["ai","eps","ps"] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": ["cww"] + }, + "application/prs.cyn": { + "source": "iana", + "charset": "7-BIT" + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pskcxml"] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": ["raml"] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rdf","owl"] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rif"] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": ["rnc"] + }, + "application/remote-printing": { + "source": "iana" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rl"] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rld"] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rs"] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rapd"] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sls"] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rusd"] + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": ["gbr"] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": ["mft"] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": ["roa"] + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rsd"] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rss"] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sarif-external-properties+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sbml"] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": ["scq"] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": ["scs"] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": ["spq"] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": ["spp"] + }, + "application/sdp": { + "source": "iana", + "extensions": ["sdp"] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["senmlx"] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sensmlx"] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": ["setpay"] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": ["setreg"] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["shf"] + }, + "application/sieve": { + "source": "iana", + "extensions": ["siv","sieve"] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "iana" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": ["smi","smil"] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": ["rq"] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": ["srx"] + }, + "application/spdx+json": { + "source": "iana", + "compressible": true + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana" + }, + "application/srgs": { + "source": "iana", + "extensions": ["gram"] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["grxml"] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sru"] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ssdl"] + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ssml"] + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["swidtag"] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tei","teicorpus"] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tfi"] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": ["tsd"] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/token-introspection+jwt": { + "source": "iana" + }, + "application/toml": { + "compressible": true, + "extensions": ["toml"] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana", + "extensions": ["trig"] + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ttml"] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": ["ubj"] + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsheet"] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["td"] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gnas": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gtpc": { + "source": "iana" + }, + "application/vnd.3gpp.interworking-data": { + "source": "iana" + }, + "application/vnd.3gpp.lpp": { + "source": "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ngap": { + "source": "iana" + }, + "application/vnd.3gpp.pfcp": { + "source": "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": ["pvb"] + }, + "application/vnd.3gpp.s1ap": { + "source": "iana" + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": ["aso"] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": ["imp"] + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": ["acu"] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": ["atc","acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": ["air"] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": ["fcdt"] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": ["fxp","fxpl"] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdp"] + }, + "application/vnd.adobe.xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-cmtable": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.age": { + "source": "iana", + "extensions": ["age"] + }, + "application/vnd.ah-barcode": { + "source": "iana" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": ["azs"] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": ["acc"] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": ["apk"] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": ["fti"] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": ["atx"] + }, + "application/vnd.apache.arrow.file": { + "source": "iana" + }, + "application/vnd.apache.arrow.stream": { + "source": "iana" + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpkg"] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": ["key"] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": ["m3u8"] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": ["numbers"] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": ["pages"] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": ["pkpass"] + }, + "application/vnd.arastra.swi": { + "source": "iana" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": ["swi"] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": ["iota"] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": ["aep"] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": ["bmi"] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": ["rep"] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdxml"] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": ["mmd"] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": ["csl"] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": ["cla"] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": ["rp9"] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": ["c4g","c4d","c4f","c4p","c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": ["c11amz"] + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": ["csp"] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": ["cmc"] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": ["clkp"] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.cryptomator.encrypted": { + "source": "iana" + }, + "application/vnd.cryptomator.vault": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": ["pml"] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": ["ppd"] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": ["car"] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.cyclonedx+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cyclonedx+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": ["dart"] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": ["rdz"] + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": ["dbf"] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": ["uvf","uvvf","uvd","uvvd"] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uvt","uvvt"] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": ["uvx","uvvx"] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": ["uvz","uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": ["fe_launch"] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": ["dna"] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": ["dpg"] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": ["dfac"] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": ["kpxx"] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": ["svc"] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": ["geo"] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.eclipse.ditto+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": ["mag"] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": ["nml"] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": ["esf"] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": ["msf"] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": ["qam"] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": ["slt"] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": ["es3","et3"] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eu.kasparian.car+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": ["ez2"] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": ["ez3"] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "iana", + "extensions": ["fdf"] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": ["mseed"] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": ["seed","dataless"] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": ["gph"] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": ["fm","frame","maker","book"] + }, + "application/vnd.frogans.fnc": { + "source": "iana", + "extensions": ["fnc"] + }, + "application/vnd.frogans.ltf": { + "source": "iana", + "extensions": ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": ["txd"] + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geo+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": ["ggb"] + }, + "application/vnd.geogebra.slides": { + "source": "iana" + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": ["ggt"] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": ["gex","gre"] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": ["gxt"] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": ["g2w"] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": ["g3w"] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": ["gmx"] + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["kml"] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": ["gqf","gqs"] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": ["gac"] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": ["ghf"] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": ["gim"] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": ["grv"] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": ["gtm"] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": ["tpl"] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": ["vcg"] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zmm"] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": ["hbci"] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": ["les"] + }, + "application/vnd.hl7cda+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hl7v2+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": ["hpgl"] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": ["hpid"] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": ["hps"] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": ["jlt"] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": ["pcl"] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": ["pclxl"] + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "iana" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": ["mpy"] + }, + "application/vnd.ibm.modcap": { + "source": "iana", + "extensions": ["afp","listafp","list3820"] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": ["irm"] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": ["sc"] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": ["icc","icm"] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": ["ivp"] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "iana" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": ["igm"] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": ["xpw","xpx"] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": ["i2g"] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": ["qbo"] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["irp"] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": ["xpr"] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": ["jam"] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": ["rms"] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": ["jisp"] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": ["ktz","ktr"] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": ["karbon"] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": ["chrt"] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": ["kfo"] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": ["flw"] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": ["kon"] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": ["kpr","kpt"] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": ["ksp"] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": ["kwd","kwt"] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": ["htke"] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": ["kia"] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": ["kne","knp"] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": ["skp","skd","skt","skm"] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": ["sse"] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lasxml"] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": ["123"] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": ["apr"] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": ["pre"] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": ["nsf"] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": ["org"] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": ["scm"] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": ["lwp"] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana", + "extensions": ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxar.archive.3tz+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": ["mcd"] + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": ["mwf"] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": ["mfm"] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": ["flo"] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": ["daf"] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": ["dis"] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": ["mbk"] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": ["mqy"] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": ["msl"] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": ["plc"] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": ["txf"] + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": ["mpn"] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xul"] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": ["cil"] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": ["xltm"] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": ["eot"] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": ["chm"] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": ["ims"] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": ["thmx"] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": ["cat"] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": ["ppt","pps","pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": ["mpp","mpt"] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": ["dotm"] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": ["wps","wks","wcm","wdb"] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": ["xps"] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": ["mseq"] + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": ["mus"] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": ["msty"] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nebumind.line": { + "source": "iana" + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": ["nlu"] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": ["ntf","nitf"] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": ["nnd"] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": ["nns"] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": ["nnw"] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "iana", + "extensions": ["n-gage"] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": ["rpss"] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": ["edm"] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": ["edx"] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": ["ext"] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + "source": "iana", + "extensions": ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": ["oth"] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": ["xo"] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": ["obgx"] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osm"] + }, + "application/vnd.opentimestamps.ots": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": ["mgp"] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": ["dp"] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": ["pdb","pqa","oprc"] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": ["paw"] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": ["str"] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": ["efif"] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": ["plf"] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": ["box"] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": ["mgz"] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": ["qps"] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": ["rar"] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": ["bed"] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.resilient.logic": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": ["cryptonote"] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": ["cod"] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": ["link66"] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": ["st"] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": ["see"] + }, + "application/vnd.seis+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sema": { + "source": "iana", + "extensions": ["sema"] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": ["semd"] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": ["semf"] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": ["itp"] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": ["iif"] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": ["ipk"] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": ["twd","twds"] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": ["mmf"] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": ["teacher"] + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sdkm","sdkd"] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": ["dxp"] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": ["sfs"] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": ["sdc"] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": ["sda"] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": ["sdd"] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": ["smf"] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": ["sdw","vor"] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": ["sgl"] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": ["sm"] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wadl"] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": ["stc"] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": ["std"] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": ["sti"] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": ["sxm"] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": ["stw"] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": ["sus","susp"] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": ["svd"] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.syft+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": ["sis","sisx"] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": ["tao"] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": ["pcap","cap","dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": ["tmo"] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": ["tpt"] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": ["mxs"] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": ["tra"] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": ["ufd","ufdl"] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": ["utz"] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": ["umj"] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": ["unityweb"] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uoml"] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": ["vcx"] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veritone.aion+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": ["vsd","vst","vss","vsw"] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": ["vis"] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": ["vsf"] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["wbxml"] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": ["wmlsc"] + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": ["wtb"] + }, + "application/vnd.wfa.dpp": { + "source": "iana" + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": ["nbp"] + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": ["wpd"] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": ["xar"] + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": ["xfdl"] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": ["cmp"] + }, + "application/vnd.youtube.yt": { + "source": "iana" + }, + "application/vnd.zul": { + "source": "iana", + "extensions": ["zir","zirz"] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zaz"] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["vxml"] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "source": "iana", + "compressible": true, + "extensions": ["wasm"] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wif"] + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": ["wgt"] + }, + "application/winhlp": { + "source": "apache", + "extensions": ["hlp"] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wsdl"] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wspolicy"] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["7z"] + }, + "application/x-abiword": { + "source": "apache", + "extensions": ["abw"] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": ["ace"] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": ["dmg"] + }, + "application/x-arj": { + "compressible": false, + "extensions": ["arj"] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": ["aab","x32","u32","vox"] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": ["aam"] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": ["aas"] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": ["bcpio"] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": ["torrent"] + }, + "application/x-blorb": { + "source": "apache", + "extensions": ["blb","blorb"] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": ["bz"] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": ["bz2","boz"] + }, + "application/x-cbr": { + "source": "apache", + "extensions": ["cbr","cba","cbt","cbz","cb7"] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": ["vcd"] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": ["cfs"] + }, + "application/x-chat": { + "source": "apache", + "extensions": ["chat"] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": ["pgn"] + }, + "application/x-chrome-extension": { + "extensions": ["crx"] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": ["cco"] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": ["nsc"] + }, + "application/x-cpio": { + "source": "apache", + "extensions": ["cpio"] + }, + "application/x-csh": { + "source": "apache", + "extensions": ["csh"] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": ["deb","udeb"] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": ["dgc"] + }, + "application/x-director": { + "source": "apache", + "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] + }, + "application/x-doom": { + "source": "apache", + "extensions": ["wad"] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ncx"] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dtb"] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": ["res"] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": ["dvi"] + }, + "application/x-envoy": { + "source": "apache", + "extensions": ["evy"] + }, + "application/x-eva": { + "source": "apache", + "extensions": ["eva"] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": ["bdf"] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": ["gsf"] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": ["psf"] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": ["pcf"] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": ["snf"] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": ["pfa","pfb","pfm","afm"] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": ["arc"] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": ["spl"] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": ["gca"] + }, + "application/x-glulx": { + "source": "apache", + "extensions": ["ulx"] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": ["gnumeric"] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": ["gramps"] + }, + "application/x-gtar": { + "source": "apache", + "extensions": ["gtar"] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": ["hdf"] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": ["php"] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": ["install"] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + "extensions": ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + "extensions": ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + "extensions": ["pages"] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": ["jardiff"] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": ["jnlp"] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": ["kdbx"] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": ["latex"] + }, + "application/x-lua-bytecode": { + "extensions": ["luac"] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": ["lzh","lha"] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": ["run"] + }, + "application/x-mie": { + "source": "apache", + "extensions": ["mie"] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": ["prc","mobi"] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": ["application"] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": ["lnk"] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": ["wmd"] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": ["wmz"] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": ["xbap"] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": ["mdb"] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": ["obd"] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": ["crd"] + }, + "application/x-msclip": { + "source": "apache", + "extensions": ["clp"] + }, + "application/x-msdos-program": { + "extensions": ["exe"] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": ["exe","dll","com","bat","msi"] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": ["mvb","m13","m14"] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": ["wmf","wmz","emf","emz"] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": ["mny"] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": ["pub"] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": ["scd"] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": ["trm"] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": ["wri"] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": ["nc","cdf"] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": ["pac"] + }, + "application/x-nzb": { + "source": "apache", + "extensions": ["nzb"] + }, + "application/x-perl": { + "source": "nginx", + "extensions": ["pl","pm"] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": ["prc","pdb"] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": ["p12","pfx"] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": ["p7b","spc"] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": ["p7r"] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["rar"] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": ["rpm"] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": ["ris"] + }, + "application/x-sea": { + "source": "nginx", + "extensions": ["sea"] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": ["sh"] + }, + "application/x-shar": { + "source": "apache", + "extensions": ["shar"] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": ["swf"] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": ["xap"] + }, + "application/x-sql": { + "source": "apache", + "extensions": ["sql"] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": ["sit"] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": ["sitx"] + }, + "application/x-subrip": { + "source": "apache", + "extensions": ["srt"] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": ["sv4cpio"] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": ["sv4crc"] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": ["t3"] + }, + "application/x-tads": { + "source": "apache", + "extensions": ["gam"] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": ["tar"] + }, + "application/x-tcl": { + "source": "apache", + "extensions": ["tcl","tk"] + }, + "application/x-tex": { + "source": "apache", + "extensions": ["tex"] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": ["tfm"] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": ["texinfo","texi"] + }, + "application/x-tgif": { + "source": "apache", + "extensions": ["obj"] + }, + "application/x-ustar": { + "source": "apache", + "extensions": ["ustar"] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": ["hdd"] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": ["ova"] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": ["ovf"] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": ["vdi"] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": ["vhd"] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": ["vmdk"] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": ["src"] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": ["webapp"] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": ["der","crt","pem"] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": ["fig"] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xlf"] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": ["xpi"] + }, + "application/x-xz": { + "source": "apache", + "extensions": ["xz"] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xaml"] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xav"] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xca"] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xel"] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xns"] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xenc"] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtml","xht"] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xlf"] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml","xsl","xsd","rng"] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": ["dtd"] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xop"] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xpl"] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xsl","xslt"] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xspf"] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mxml","xhvml","xvml","xvm"] + }, + "application/yang": { + "source": "iana", + "extensions": ["yang"] + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": ["yin"] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": ["zip"] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": ["3gpp"] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana" + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": ["adp"] + }, + "audio/amr": { + "source": "iana", + "extensions": ["amr"] + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": ["au","snd"] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": ["mid","midi","kar","rmi"] + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": ["mxmf"] + }, + "audio/mp3": { + "compressible": false, + "extensions": ["mp3"] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["m4a","mp4a"] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["oga","ogg","spx","opus"] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": ["s3m"] + }, + "audio/scip": { + "source": "iana" + }, + "audio/silk": { + "source": "apache", + "extensions": ["sil"] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": ["uva","uvva"] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": ["eol"] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": ["dra"] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": ["dts"] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": ["dtshd"] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": ["rip"] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/wave": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": ["weba"] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": ["aac"] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": ["aif","aiff","aifc"] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": ["caf"] + }, + "audio/x-flac": { + "source": "apache", + "extensions": ["flac"] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": ["m4a"] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": ["mka"] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": ["m3u"] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": ["wax"] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": ["wma"] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": ["ram","ra"] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": ["rmp"] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": ["ra"] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": ["wav"] + }, + "audio/xm": { + "source": "apache", + "extensions": ["xm"] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": ["cdx"] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": ["cif"] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": ["cmdf"] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": ["cml"] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": ["csml"] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": ["xyz"] + }, + "font/collection": { + "source": "iana", + "extensions": ["ttc"] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": ["otf"] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": ["ttf"] + }, + "font/woff": { + "source": "iana", + "extensions": ["woff"] + }, + "font/woff2": { + "source": "iana", + "extensions": ["woff2"] + }, + "image/aces": { + "source": "iana", + "extensions": ["exr"] + }, + "image/apng": { + "compressible": false, + "extensions": ["apng"] + }, + "image/avci": { + "source": "iana", + "extensions": ["avci"] + }, + "image/avcs": { + "source": "iana", + "extensions": ["avcs"] + }, + "image/avif": { + "source": "iana", + "compressible": false, + "extensions": ["avif"] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": ["bmp"] + }, + "image/cgm": { + "source": "iana", + "extensions": ["cgm"] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": ["drle"] + }, + "image/emf": { + "source": "iana", + "extensions": ["emf"] + }, + "image/fits": { + "source": "iana", + "extensions": ["fits"] + }, + "image/g3fax": { + "source": "iana", + "extensions": ["g3"] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": ["gif"] + }, + "image/heic": { + "source": "iana", + "extensions": ["heic"] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": ["heics"] + }, + "image/heif": { + "source": "iana", + "extensions": ["heif"] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": ["heifs"] + }, + "image/hej2k": { + "source": "iana", + "extensions": ["hej2"] + }, + "image/hsj2": { + "source": "iana", + "extensions": ["hsj2"] + }, + "image/ief": { + "source": "iana", + "extensions": ["ief"] + }, + "image/jls": { + "source": "iana", + "extensions": ["jls"] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": ["jp2","jpg2"] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": ["jpeg","jpg","jpe"] + }, + "image/jph": { + "source": "iana", + "extensions": ["jph"] + }, + "image/jphc": { + "source": "iana", + "extensions": ["jhc"] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": ["jpm"] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": ["jpx","jpf"] + }, + "image/jxr": { + "source": "iana", + "extensions": ["jxr"] + }, + "image/jxra": { + "source": "iana", + "extensions": ["jxra"] + }, + "image/jxrs": { + "source": "iana", + "extensions": ["jxrs"] + }, + "image/jxs": { + "source": "iana", + "extensions": ["jxs"] + }, + "image/jxsc": { + "source": "iana", + "extensions": ["jxsc"] + }, + "image/jxsi": { + "source": "iana", + "extensions": ["jxsi"] + }, + "image/jxss": { + "source": "iana", + "extensions": ["jxss"] + }, + "image/ktx": { + "source": "iana", + "extensions": ["ktx"] + }, + "image/ktx2": { + "source": "iana", + "extensions": ["ktx2"] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": ["png"] + }, + "image/prs.btif": { + "source": "iana", + "extensions": ["btif"] + }, + "image/prs.pti": { + "source": "iana", + "extensions": ["pti"] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": ["sgi"] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["svg","svgz"] + }, + "image/t38": { + "source": "iana", + "extensions": ["t38"] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": ["tif","tiff"] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": ["tfx"] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": ["azv"] + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": ["uvi","uvvi","uvg","uvvg"] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": ["djvu","djv"] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": ["dwg"] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": ["dxf"] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": ["fbs"] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": ["fpx"] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "compressible": true, + "extensions": ["ico"] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "compressible": true, + "extensions": ["dds"] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": ["mdi"] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": ["wdp"] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": ["npx"] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": ["b16"] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": ["tap"] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": ["vtf"] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": ["wbmp"] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": ["xif"] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": ["pcx"] + }, + "image/webp": { + "source": "apache", + "extensions": ["webp"] + }, + "image/wmf": { + "source": "iana", + "extensions": ["wmf"] + }, + "image/x-3ds": { + "source": "apache", + "extensions": ["3ds"] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": ["ras"] + }, + "image/x-cmx": { + "source": "apache", + "extensions": ["cmx"] + }, + "image/x-freehand": { + "source": "apache", + "extensions": ["fh","fhc","fh4","fh5","fh7"] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": ["ico"] + }, + "image/x-jng": { + "source": "nginx", + "extensions": ["jng"] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": ["sid"] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": ["bmp"] + }, + "image/x-pcx": { + "source": "apache", + "extensions": ["pcx"] + }, + "image/x-pict": { + "source": "apache", + "extensions": ["pic","pct"] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": ["pnm"] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": ["pbm"] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": ["pgm"] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": ["ppm"] + }, + "image/x-rgb": { + "source": "apache", + "extensions": ["rgb"] + }, + "image/x-tga": { + "source": "apache", + "extensions": ["tga"] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": ["xbm"] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": ["xpm"] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": ["xwd"] + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": ["u8msg"] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": ["u8dsn"] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": ["u8mdn"] + }, + "message/global-headers": { + "source": "iana", + "extensions": ["u8hdr"] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/news": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": ["eml","mime"] + }, + "message/s-http": { + "source": "iana" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "iana" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": ["wsc"] + }, + "model/3mf": { + "source": "iana", + "extensions": ["3mf"] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": ["gltf"] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": ["glb"] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": ["igs","iges"] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": ["msh","mesh","silo"] + }, + "model/mtl": { + "source": "iana", + "extensions": ["mtl"] + }, + "model/obj": { + "source": "iana", + "extensions": ["obj"] + }, + "model/step": { + "source": "iana" + }, + "model/step+xml": { + "source": "iana", + "compressible": true, + "extensions": ["stpx"] + }, + "model/step+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpz"] + }, + "model/step-xml+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpxz"] + }, + "model/stl": { + "source": "iana", + "extensions": ["stl"] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dae"] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": ["dwf"] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": ["gdl"] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": ["gtw"] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": ["mts"] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": ["x_t"] + }, + "model/vnd.pytha.pyox": { + "source": "iana" + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.sap.vds": { + "source": "iana", + "extensions": ["vds"] + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": ["bsp"] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": ["vtu"] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": ["wrl","vrml"] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": ["x3db","x3dbz"] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": ["x3db"] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": ["x3dv","x3dvz"] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": ["x3d","x3dz"] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": ["x3dv"] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": ["appcache","manifest"] + }, + "text/calendar": { + "source": "iana", + "extensions": ["ics","ifb"] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": ["coffee","litcoffee"] + }, + "text/cql": { + "source": "iana" + }, + "text/cql-expression": { + "source": "iana" + }, + "text/cql-identifier": { + "source": "iana" + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["css"] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": ["csv"] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "iana" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fhirpath": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": ["html","htm","shtml"] + }, + "text/jade": { + "extensions": ["jade"] + }, + "text/javascript": { + "source": "iana", + "compressible": true + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": ["jsx"] + }, + "text/less": { + "compressible": true, + "extensions": ["less"] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": ["markdown","md"] + }, + "text/mathml": { + "source": "nginx", + "extensions": ["mml"] + }, + "text/mdx": { + "compressible": true, + "extensions": ["mdx"] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["n3"] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": ["txt","text","conf","def","list","log","in","ini"] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": ["dsc"] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": ["rtx"] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": ["sgml","sgm"] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "source": "iana", + "extensions": ["shex"] + }, + "text/slim": { + "extensions": ["slim","slm"] + }, + "text/spdx": { + "source": "iana", + "extensions": ["spdx"] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": ["stylus","styl"] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": ["tsv"] + }, + "text/troff": { + "source": "iana", + "extensions": ["t","tr","roff","man","me","ms"] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["ttl"] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": ["uri","uris","urls"] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": ["vcard"] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": ["curl"] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": ["dcurl"] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": ["mcurl"] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": ["scurl"] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + "source": "iana", + "extensions": ["ged"] + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": ["fly"] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": ["flx"] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": ["gv"] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": ["3dml"] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": ["spot"] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "iana" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["jad"] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": ["wml"] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": ["wmls"] + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["vtt"] + }, + "text/x-asm": { + "source": "apache", + "extensions": ["s","asm"] + }, + "text/x-c": { + "source": "apache", + "extensions": ["c","cc","cxx","cpp","h","hh","dic"] + }, + "text/x-component": { + "source": "nginx", + "extensions": ["htc"] + }, + "text/x-fortran": { + "source": "apache", + "extensions": ["f","for","f77","f90"] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": ["hbs"] + }, + "text/x-java-source": { + "source": "apache", + "extensions": ["java"] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": ["lua"] + }, + "text/x-markdown": { + "compressible": true, + "extensions": ["mkd"] + }, + "text/x-nfo": { + "source": "apache", + "extensions": ["nfo"] + }, + "text/x-opml": { + "source": "apache", + "extensions": ["opml"] + }, + "text/x-org": { + "compressible": true, + "extensions": ["org"] + }, + "text/x-pascal": { + "source": "apache", + "extensions": ["p","pas"] + }, + "text/x-processing": { + "compressible": true, + "extensions": ["pde"] + }, + "text/x-sass": { + "extensions": ["sass"] + }, + "text/x-scss": { + "extensions": ["scss"] + }, + "text/x-setext": { + "source": "apache", + "extensions": ["etx"] + }, + "text/x-sfv": { + "source": "apache", + "extensions": ["sfv"] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": ["ymp"] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": ["uu"] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": ["vcs"] + }, + "text/x-vcard": { + "source": "apache", + "extensions": ["vcf"] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml"] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "compressible": true, + "extensions": ["yaml","yml"] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": ["3gp","3gpp"] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": ["3g2"] + }, + "video/av1": { + "source": "iana" + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/ffv1": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": ["h261"] + }, + "video/h263": { + "source": "iana", + "extensions": ["h263"] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": ["h264"] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana", + "extensions": ["m4s"] + }, + "video/jpeg": { + "source": "iana", + "extensions": ["jpgv"] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": ["jpm","jpgm"] + }, + "video/jxsv": { + "source": "iana" + }, + "video/mj2": { + "source": "iana", + "extensions": ["mj2","mjp2"] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": ["ts"] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["mp4","mp4v","mpg4"] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpeg","mpg","mpe","m1v","m2v"] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogv"] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": ["qt","mov"] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/scip": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": ["uvh","uvvh"] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": ["uvm","uvvm"] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": ["uvp","uvvp"] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": ["uvs","uvvs"] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": ["uvv","uvvv"] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": ["dvb"] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": ["fvt"] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": ["mxu","m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "iana" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": ["uvu","uvvu"] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": ["viv"] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/vp9": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": ["webm"] + }, + "video/x-f4v": { + "source": "apache", + "extensions": ["f4v"] + }, + "video/x-fli": { + "source": "apache", + "extensions": ["fli"] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": ["flv"] + }, + "video/x-m4v": { + "source": "apache", + "extensions": ["m4v"] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": ["mkv","mk3d","mks"] + }, + "video/x-mng": { + "source": "apache", + "extensions": ["mng"] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": ["asf","asx"] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": ["vob"] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": ["wm"] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": ["wmv"] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": ["wmx"] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": ["wvx"] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": ["avi"] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": ["movie"] + }, + "video/x-smv": { + "source": "apache", + "extensions": ["smv"] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": ["ice"] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +} diff --git a/bff/node_modules/form-data/node_modules/mime-db/index.js b/bff/node_modules/form-data/node_modules/mime-db/index.js new file mode 100644 index 0000000..ec2be30 --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-db/index.js @@ -0,0 +1,12 @@ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module exports. + */ + +module.exports = require('./db.json') diff --git a/bff/node_modules/form-data/node_modules/mime-db/package.json b/bff/node_modules/form-data/node_modules/mime-db/package.json new file mode 100644 index 0000000..32c14b8 --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-db/package.json @@ -0,0 +1,60 @@ +{ + "name": "mime-db", + "description": "Media Type Database", + "version": "1.52.0", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)", + "Robert Kieffer (http://github.com/broofa)" + ], + "license": "MIT", + "keywords": [ + "mime", + "db", + "type", + "types", + "database", + "charset", + "charsets" + ], + "repository": "jshttp/mime-db", + "devDependencies": { + "bluebird": "3.7.2", + "co": "4.6.0", + "cogent": "1.0.1", + "csv-parse": "4.16.3", + "eslint": "7.32.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.1.1", + "eslint-plugin-standard": "4.1.0", + "gnode": "0.1.2", + "media-typer": "1.1.0", + "mocha": "9.2.1", + "nyc": "15.1.0", + "raw-body": "2.5.0", + "stream-to-array": "2.3.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "db.json", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "build": "node scripts/build", + "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx", + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "update": "npm run fetch && npm run build", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/form-data/node_modules/mime-types/HISTORY.md b/bff/node_modules/form-data/node_modules/mime-types/HISTORY.md new file mode 100644 index 0000000..c5043b7 --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-types/HISTORY.md @@ -0,0 +1,397 @@ +2.1.35 / 2022-03-12 +=================== + + * deps: mime-db@1.52.0 + - Add extensions from IANA for more `image/*` types + - Add extension `.asc` to `application/pgp-keys` + - Add extensions to various XML types + - Add new upstream MIME types + +2.1.34 / 2021-11-08 +=================== + + * deps: mime-db@1.51.0 + - Add new upstream MIME types + +2.1.33 / 2021-10-01 +=================== + + * deps: mime-db@1.50.0 + - Add deprecated iWorks mime types and extensions + - Add new upstream MIME types + +2.1.32 / 2021-07-27 +=================== + + * deps: mime-db@1.49.0 + - Add extension `.trig` to `application/trig` + - Add new upstream MIME types + +2.1.31 / 2021-06-01 +=================== + + * deps: mime-db@1.48.0 + - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + - Add new upstream MIME types + +2.1.30 / 2021-04-02 +=================== + + * deps: mime-db@1.47.0 + - Add extension `.amr` to `audio/amr` + - Remove ambigious extensions from IANA for `application/*+xml` types + - Update primary extension to `.es` for `application/ecmascript` + +2.1.29 / 2021-02-17 +=================== + + * deps: mime-db@1.46.0 + - Add extension `.amr` to `audio/amr` + - Add extension `.m4s` to `video/iso.segment` + - Add extension `.opus` to `audio/ogg` + - Add new upstream MIME types + +2.1.28 / 2021-01-01 +=================== + + * deps: mime-db@1.45.0 + - Add `application/ubjson` with extension `.ubj` + - Add `image/avif` with extension `.avif` + - Add `image/ktx2` with extension `.ktx2` + - Add extension `.dbf` to `application/vnd.dbf` + - Add extension `.rar` to `application/vnd.rar` + - Add extension `.td` to `application/urc-targetdesc+xml` + - Add new upstream MIME types + - Fix extension of `application/vnd.apple.keynote` to be `.key` + +2.1.27 / 2020-04-23 +=================== + + * deps: mime-db@1.44.0 + - Add charsets from IANA + - Add extension `.cjs` to `application/node` + - Add new upstream MIME types + +2.1.26 / 2020-01-05 +=================== + + * deps: mime-db@1.43.0 + - Add `application/x-keepass2` with extension `.kdbx` + - Add extension `.mxmf` to `audio/mobile-xmf` + - Add extensions from IANA for `application/*+xml` types + - Add new upstream MIME types + +2.1.25 / 2019-11-12 +=================== + + * deps: mime-db@1.42.0 + - Add new upstream MIME types + - Add `application/toml` with extension `.toml` + - Add `image/vnd.ms-dds` with extension `.dds` + +2.1.24 / 2019-04-20 +=================== + + * deps: mime-db@1.40.0 + - Add extensions from IANA for `model/*` types + - Add `text/mdx` with extension `.mdx` + +2.1.23 / 2019-04-17 +=================== + + * deps: mime-db@~1.39.0 + - Add extensions `.siv` and `.sieve` to `application/sieve` + - Add new upstream MIME types + +2.1.22 / 2019-02-14 +=================== + + * deps: mime-db@~1.38.0 + - Add extension `.nq` to `application/n-quads` + - Add extension `.nt` to `application/n-triples` + - Add new upstream MIME types + +2.1.21 / 2018-10-19 +=================== + + * deps: mime-db@~1.37.0 + - Add extensions to HEIC image types + - Add new upstream MIME types + +2.1.20 / 2018-08-26 +=================== + + * deps: mime-db@~1.36.0 + - Add Apple file extensions from IANA + - Add extensions from IANA for `image/*` types + - Add new upstream MIME types + +2.1.19 / 2018-07-17 +=================== + + * deps: mime-db@~1.35.0 + - Add extension `.csl` to `application/vnd.citationstyles.style+xml` + - Add extension `.es` to `application/ecmascript` + - Add extension `.owl` to `application/rdf+xml` + - Add new upstream MIME types + - Add UTF-8 as default charset for `text/turtle` + +2.1.18 / 2018-02-16 +=================== + + * deps: mime-db@~1.33.0 + - Add `application/raml+yaml` with extension `.raml` + - Add `application/wasm` with extension `.wasm` + - Add `text/shex` with extension `.shex` + - Add extensions for JPEG-2000 images + - Add extensions from IANA for `message/*` types + - Add new upstream MIME types + - Update font MIME types + - Update `text/hjson` to registered `application/hjson` + +2.1.17 / 2017-09-01 +=================== + + * deps: mime-db@~1.30.0 + - Add `application/vnd.ms-outlook` + - Add `application/x-arj` + - Add extension `.mjs` to `application/javascript` + - Add glTF types and extensions + - Add new upstream MIME types + - Add `text/x-org` + - Add VirtualBox MIME types + - Fix `source` records for `video/*` types that are IANA + - Update `font/opentype` to registered `font/otf` + +2.1.16 / 2017-07-24 +=================== + + * deps: mime-db@~1.29.0 + - Add `application/fido.trusted-apps+json` + - Add extension `.wadl` to `application/vnd.sun.wadl+xml` + - Add extension `.gz` to `application/gzip` + - Add new upstream MIME types + - Update extensions `.md` and `.markdown` to be `text/markdown` + +2.1.15 / 2017-03-23 +=================== + + * deps: mime-db@~1.27.0 + - Add new mime types + - Add `image/apng` + +2.1.14 / 2017-01-14 +=================== + + * deps: mime-db@~1.26.0 + - Add new mime types + +2.1.13 / 2016-11-18 +=================== + + * deps: mime-db@~1.25.0 + - Add new mime types + +2.1.12 / 2016-09-18 +=================== + + * deps: mime-db@~1.24.0 + - Add new mime types + - Add `audio/mp3` + +2.1.11 / 2016-05-01 +=================== + + * deps: mime-db@~1.23.0 + - Add new mime types + +2.1.10 / 2016-02-15 +=================== + + * deps: mime-db@~1.22.0 + - Add new mime types + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + +2.1.9 / 2016-01-06 +================== + + * deps: mime-db@~1.21.0 + - Add new mime types + +2.1.8 / 2015-11-30 +================== + + * deps: mime-db@~1.20.0 + - Add new mime types + +2.1.7 / 2015-09-20 +================== + + * deps: mime-db@~1.19.0 + - Add new mime types + +2.1.6 / 2015-09-03 +================== + + * deps: mime-db@~1.18.0 + - Add new mime types + +2.1.5 / 2015-08-20 +================== + + * deps: mime-db@~1.17.0 + - Add new mime types + +2.1.4 / 2015-07-30 +================== + + * deps: mime-db@~1.16.0 + - Add new mime types + +2.1.3 / 2015-07-13 +================== + + * deps: mime-db@~1.15.0 + - Add new mime types + +2.1.2 / 2015-06-25 +================== + + * deps: mime-db@~1.14.0 + - Add new mime types + +2.1.1 / 2015-06-08 +================== + + * perf: fix deopt during mapping + +2.1.0 / 2015-06-07 +================== + + * Fix incorrectly treating extension-less file name as extension + - i.e. `'path/to/json'` will no longer return `application/json` + * Fix `.charset(type)` to accept parameters + * Fix `.charset(type)` to match case-insensitive + * Improve generation of extension to MIME mapping + * Refactor internals for readability and no argument reassignment + * Prefer `application/*` MIME types from the same source + * Prefer any type over `application/octet-stream` + * deps: mime-db@~1.13.0 + - Add nginx as a source + - Add new mime types + +2.0.14 / 2015-06-06 +=================== + + * deps: mime-db@~1.12.0 + - Add new mime types + +2.0.13 / 2015-05-31 +=================== + + * deps: mime-db@~1.11.0 + - Add new mime types + +2.0.12 / 2015-05-19 +=================== + + * deps: mime-db@~1.10.0 + - Add new mime types + +2.0.11 / 2015-05-05 +=================== + + * deps: mime-db@~1.9.1 + - Add new mime types + +2.0.10 / 2015-03-13 +=================== + + * deps: mime-db@~1.8.0 + - Add new mime types + +2.0.9 / 2015-02-09 +================== + + * deps: mime-db@~1.7.0 + - Add new mime types + - Community extensions ownership transferred from `node-mime` + +2.0.8 / 2015-01-29 +================== + + * deps: mime-db@~1.6.0 + - Add new mime types + +2.0.7 / 2014-12-30 +================== + + * deps: mime-db@~1.5.0 + - Add new mime types + - Fix various invalid MIME type entries + +2.0.6 / 2014-12-30 +================== + + * deps: mime-db@~1.4.0 + - Add new mime types + - Fix various invalid MIME type entries + - Remove example template MIME types + +2.0.5 / 2014-12-29 +================== + + * deps: mime-db@~1.3.1 + - Fix missing extensions + +2.0.4 / 2014-12-10 +================== + + * deps: mime-db@~1.3.0 + - Add new mime types + +2.0.3 / 2014-11-09 +================== + + * deps: mime-db@~1.2.0 + - Add new mime types + +2.0.2 / 2014-09-28 +================== + + * deps: mime-db@~1.1.0 + - Add new mime types + - Update charsets + +2.0.1 / 2014-09-07 +================== + + * Support Node.js 0.6 + +2.0.0 / 2014-09-02 +================== + + * Use `mime-db` + * Remove `.define()` + +1.0.2 / 2014-08-04 +================== + + * Set charset=utf-8 for `text/javascript` + +1.0.1 / 2014-06-24 +================== + + * Add `text/jsx` type + +1.0.0 / 2014-05-12 +================== + + * Return `false` for unknown types + * Set charset=utf-8 for `application/json` + +0.1.0 / 2014-05-02 +================== + + * Initial release diff --git a/bff/node_modules/form-data/node_modules/mime-types/LICENSE b/bff/node_modules/form-data/node_modules/mime-types/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-types/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/form-data/node_modules/mime-types/README.md b/bff/node_modules/form-data/node_modules/mime-types/README.md new file mode 100644 index 0000000..48d2fb4 --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-types/README.md @@ -0,0 +1,113 @@ +# mime-types + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +The ultimate javascript content-type utility. + +Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except: + +- __No fallbacks.__ Instead of naively returning the first available type, + `mime-types` simply returns `false`, so do + `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. +- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. +- No `.define()` functionality +- Bug fixes for `.lookup(path)` + +Otherwise, the API is compatible with `mime` 1.x. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install mime-types +``` + +## Adding Types + +All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db), +so open a PR there if you'd like to add mime types. + +## API + +```js +var mime = require('mime-types') +``` + +All functions return `false` if input is invalid or not found. + +### mime.lookup(path) + +Lookup the content-type associated with a file. + +```js +mime.lookup('json') // 'application/json' +mime.lookup('.md') // 'text/markdown' +mime.lookup('file.html') // 'text/html' +mime.lookup('folder/file.js') // 'application/javascript' +mime.lookup('folder/.htaccess') // false + +mime.lookup('cats') // false +``` + +### mime.contentType(type) + +Create a full content-type header given a content-type or extension. +When given an extension, `mime.lookup` is used to get the matching +content-type, otherwise the given content-type is used. Then if the +content-type does not already have a `charset` parameter, `mime.charset` +is used to get the default charset and add to the returned content-type. + +```js +mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' +mime.contentType('file.json') // 'application/json; charset=utf-8' +mime.contentType('text/html') // 'text/html; charset=utf-8' +mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1' + +// from a full path +mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' +``` + +### mime.extension(type) + +Get the default extension for a content-type. + +```js +mime.extension('application/octet-stream') // 'bin' +``` + +### mime.charset(type) + +Lookup the implied default charset of a content-type. + +```js +mime.charset('text/markdown') // 'UTF-8' +``` + +### var type = mime.types[extension] + +A map of content-types by extension. + +### [extensions...] = mime.extensions[type] + +A map of extensions by content-type. + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci +[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master +[node-version-image]: https://badgen.net/npm/node/mime-types +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-types +[npm-url]: https://npmjs.org/package/mime-types +[npm-version-image]: https://badgen.net/npm/v/mime-types diff --git a/bff/node_modules/form-data/node_modules/mime-types/index.js b/bff/node_modules/form-data/node_modules/mime-types/index.js new file mode 100644 index 0000000..b9f34d5 --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-types/index.js @@ -0,0 +1,188 @@ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var db = require('mime-db') +var extname = require('path').extname + +/** + * Module variables. + * @private + */ + +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ +var TEXT_TYPE_REGEXP = /^text\//i + +/** + * Module exports. + * @public + */ + +exports.charset = charset +exports.charsets = { lookup: charset } +exports.contentType = contentType +exports.extension = extension +exports.extensions = Object.create(null) +exports.lookup = lookup +exports.types = Object.create(null) + +// Populate the extensions/types maps +populateMaps(exports.extensions, exports.types) + +/** + * Get the default charset for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function charset (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && db[match[1].toLowerCase()] + + if (mime && mime.charset) { + return mime.charset + } + + // default text/* to utf-8 + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return 'UTF-8' + } + + return false +} + +/** + * Create a full Content-Type header given a MIME type or extension. + * + * @param {string} str + * @return {boolean|string} + */ + +function contentType (str) { + // TODO: should this even be in this module? + if (!str || typeof str !== 'string') { + return false + } + + var mime = str.indexOf('/') === -1 + ? exports.lookup(str) + : str + + if (!mime) { + return false + } + + // TODO: use content-type or other module + if (mime.indexOf('charset') === -1) { + var charset = exports.charset(mime) + if (charset) mime += '; charset=' + charset.toLowerCase() + } + + return mime +} + +/** + * Get the default extension for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function extension (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + + // get extensions + var exts = match && exports.extensions[match[1].toLowerCase()] + + if (!exts || !exts.length) { + return false + } + + return exts[0] +} + +/** + * Lookup the MIME type for a file path/extension. + * + * @param {string} path + * @return {boolean|string} + */ + +function lookup (path) { + if (!path || typeof path !== 'string') { + return false + } + + // get the extension ("ext" or ".ext" or full path) + var extension = extname('x.' + path) + .toLowerCase() + .substr(1) + + if (!extension) { + return false + } + + return exports.types[extension] || false +} + +/** + * Populate the extensions and types maps. + * @private + */ + +function populateMaps (extensions, types) { + // source preference (least -> most) + var preference = ['nginx', 'apache', undefined, 'iana'] + + Object.keys(db).forEach(function forEachMimeType (type) { + var mime = db[type] + var exts = mime.extensions + + if (!exts || !exts.length) { + return + } + + // mime -> extensions + extensions[type] = exts + + // extension -> mime + for (var i = 0; i < exts.length; i++) { + var extension = exts[i] + + if (types[extension]) { + var from = preference.indexOf(db[types[extension]].source) + var to = preference.indexOf(mime.source) + + if (types[extension] !== 'application/octet-stream' && + (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { + // skip the remapping + continue + } + } + + // set the extension -> mime + types[extension] = type + } + }) +} diff --git a/bff/node_modules/form-data/node_modules/mime-types/package.json b/bff/node_modules/form-data/node_modules/mime-types/package.json new file mode 100644 index 0000000..bbef696 --- /dev/null +++ b/bff/node_modules/form-data/node_modules/mime-types/package.json @@ -0,0 +1,44 @@ +{ + "name": "mime-types", + "description": "The ultimate javascript content-type utility.", + "version": "2.1.35", + "contributors": [ + "Douglas Christopher Wilson ", + "Jeremiah Senkpiel (https://searchbeam.jit.su)", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "keywords": [ + "mime", + "types" + ], + "repository": "jshttp/mime-types", + "dependencies": { + "mime-db": "1.52.0" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.2", + "nyc": "15.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec test/test.js", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/form-data/package.json b/bff/node_modules/form-data/package.json new file mode 100644 index 0000000..f8d6117 --- /dev/null +++ b/bff/node_modules/form-data/package.json @@ -0,0 +1,82 @@ +{ + "author": "Felix Geisendörfer (http://debuggable.com/)", + "name": "form-data", + "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", + "version": "4.0.5", + "repository": { + "type": "git", + "url": "git://github.com/form-data/form-data.git" + }, + "main": "./lib/form_data", + "browser": "./lib/browser", + "typings": "./index.d.ts", + "scripts": { + "pretest": "npm run lint", + "pretests-only": "rimraf coverage test/tmp", + "tests-only": "istanbul cover test/run.js", + "posttests-only": "istanbul report lcov text", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "lint": "eslint --ext=js,mjs .", + "report": "istanbul report lcov text", + "ci-lint": "is-node-modern 8 && npm run lint || is-node-not-modern 8", + "ci-test": "npm run tests-only && npm run browser && npm run report", + "predebug": "rimraf coverage test/tmp", + "debug": "verbose=1 ./test/run.js", + "browser": "browserify -t browserify-istanbul test/run-browser.js | obake --coverage", + "check": "istanbul check-coverage coverage/coverage*.json", + "files": "pkgfiles --sort=name", + "get-version": "node -e \"console.log(require('./package.json').version)\"", + "update-readme": "sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md", + "postupdate-readme": "mv README.md.bak READ.ME.md.bak", + "restore-readme": "mv READ.ME.md.bak README.md", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepack": "npm run update-readme", + "postpack": "npm run restore-readme", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "engines": { + "node": ">= 6" + }, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.4.0", + "auto-changelog": "^2.5.0", + "browserify": "^13.3.0", + "browserify-istanbul": "^2.0.0", + "coveralls": "^3.1.1", + "cross-spawn": "^6.0.6", + "eslint": "^8.57.1", + "fake": "^0.2.2", + "far": "^0.0.7", + "formidable": "^1.2.6", + "in-publish": "^2.0.1", + "is-node-modern": "^1.0.0", + "istanbul": "^0.4.5", + "js-randomness-predictor": "^1.5.5", + "obake": "^0.1.2", + "pkgfiles": "^2.3.2", + "pre-commit": "^1.2.2", + "puppeteer": "^1.20.0", + "request": "~2.87.0", + "rimraf": "^2.7.1", + "semver": "^6.3.1", + "tape": "^5.9.0" + }, + "license": "MIT", + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + } +} diff --git a/bff/node_modules/forwarded/HISTORY.md b/bff/node_modules/forwarded/HISTORY.md new file mode 100644 index 0000000..381e6aa --- /dev/null +++ b/bff/node_modules/forwarded/HISTORY.md @@ -0,0 +1,21 @@ +0.2.0 / 2021-05-31 +================== + + * Use `req.socket` over deprecated `req.connection` + +0.1.2 / 2017-09-14 +================== + + * perf: improve header parsing + * perf: reduce overhead when no `X-Forwarded-For` header + +0.1.1 / 2017-09-10 +================== + + * Fix trimming leading / trailing OWS + * perf: hoist regular expression + +0.1.0 / 2014-09-21 +================== + + * Initial release diff --git a/bff/node_modules/forwarded/LICENSE b/bff/node_modules/forwarded/LICENSE new file mode 100644 index 0000000..84441fb --- /dev/null +++ b/bff/node_modules/forwarded/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/forwarded/README.md b/bff/node_modules/forwarded/README.md new file mode 100644 index 0000000..fdd220b --- /dev/null +++ b/bff/node_modules/forwarded/README.md @@ -0,0 +1,57 @@ +# forwarded + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Parse HTTP X-Forwarded-For header + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install forwarded +``` + +## API + +```js +var forwarded = require('forwarded') +``` + +### forwarded(req) + +```js +var addresses = forwarded(req) +``` + +Parse the `X-Forwarded-For` header from the request. Returns an array +of the addresses, including the socket address for the `req`, in reverse +order (i.e. index `0` is the socket address and the last index is the +furthest address, typically the end-user). + +## Testing + +```sh +$ npm test +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/forwarded/master?label=ci +[ci-url]: https://github.com/jshttp/forwarded/actions?query=workflow%3Aci +[npm-image]: https://img.shields.io/npm/v/forwarded.svg +[npm-url]: https://npmjs.org/package/forwarded +[node-version-image]: https://img.shields.io/node/v/forwarded.svg +[node-version-url]: https://nodejs.org/en/download/ +[coveralls-image]: https://img.shields.io/coveralls/jshttp/forwarded/master.svg +[coveralls-url]: https://coveralls.io/r/jshttp/forwarded?branch=master +[downloads-image]: https://img.shields.io/npm/dm/forwarded.svg +[downloads-url]: https://npmjs.org/package/forwarded diff --git a/bff/node_modules/forwarded/index.js b/bff/node_modules/forwarded/index.js new file mode 100644 index 0000000..b2b6bdd --- /dev/null +++ b/bff/node_modules/forwarded/index.js @@ -0,0 +1,90 @@ +/*! + * forwarded + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = forwarded + +/** + * Get all addresses in the request, using the `X-Forwarded-For` header. + * + * @param {object} req + * @return {array} + * @public + */ + +function forwarded (req) { + if (!req) { + throw new TypeError('argument req is required') + } + + // simple header parsing + var proxyAddrs = parse(req.headers['x-forwarded-for'] || '') + var socketAddr = getSocketAddr(req) + var addrs = [socketAddr].concat(proxyAddrs) + + // return all addresses + return addrs +} + +/** + * Get the socket address for a request. + * + * @param {object} req + * @return {string} + * @private + */ + +function getSocketAddr (req) { + return req.socket + ? req.socket.remoteAddress + : req.connection.remoteAddress +} + +/** + * Parse the X-Forwarded-For header. + * + * @param {string} header + * @private + */ + +function parse (header) { + var end = header.length + var list = [] + var start = header.length + + // gather addresses, backwards + for (var i = header.length - 1; i >= 0; i--) { + switch (header.charCodeAt(i)) { + case 0x20: /* */ + if (start === end) { + start = end = i + } + break + case 0x2c: /* , */ + if (start !== end) { + list.push(header.substring(start, end)) + } + start = end = i + break + default: + start = i + break + } + } + + // final address + if (start !== end) { + list.push(header.substring(start, end)) + } + + return list +} diff --git a/bff/node_modules/forwarded/package.json b/bff/node_modules/forwarded/package.json new file mode 100644 index 0000000..bf9c7d6 --- /dev/null +++ b/bff/node_modules/forwarded/package.json @@ -0,0 +1,45 @@ +{ + "name": "forwarded", + "description": "Parse HTTP X-Forwarded-For header", + "version": "0.2.0", + "contributors": [ + "Douglas Christopher Wilson " + ], + "license": "MIT", + "keywords": [ + "x-forwarded-for", + "http", + "req" + ], + "repository": "jshttp/forwarded", + "devDependencies": { + "beautify-benchmark": "0.2.4", + "benchmark": "2.1.4", + "deep-equal": "1.0.1", + "eslint": "7.27.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.23.4", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "4.3.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "8.4.0", + "nyc": "15.1.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "bench": "node benchmark/index.js", + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/fresh/HISTORY.md b/bff/node_modules/fresh/HISTORY.md new file mode 100644 index 0000000..fd3888a --- /dev/null +++ b/bff/node_modules/fresh/HISTORY.md @@ -0,0 +1,80 @@ +2.0.0 - 2024-09-04 +========== + * Drop support for Node.js <18 + +1.0.0 - 2024-09-04 +========== + + * Drop support for Node.js below 0.8 + * Fix: Ignore `If-Modified-Since` in the presence of `If-None-Match`, according to [spec](https://www.rfc-editor.org/rfc/rfc9110.html#section-13.1.3-5). Fixes [#35](https://github.com/jshttp/fresh/issues/35) + +0.5.2 / 2017-09-13 +================== + + * Fix regression matching multiple ETags in `If-None-Match` + * perf: improve `If-None-Match` token parsing + +0.5.1 / 2017-09-11 +================== + + * Fix handling of modified headers with invalid dates + * perf: improve ETag match loop + +0.5.0 / 2017-02-21 +================== + + * Fix incorrect result when `If-None-Match` has both `*` and ETags + * Fix weak `ETag` matching to match spec + * perf: delay reading header values until needed + * perf: skip checking modified time if ETag check failed + * perf: skip parsing `If-None-Match` when no `ETag` header + * perf: use `Date.parse` instead of `new Date` + +0.4.0 / 2017-02-05 +================== + + * Fix false detection of `no-cache` request directive + * perf: enable strict mode + * perf: hoist regular expressions + * perf: remove duplicate conditional + * perf: remove unnecessary boolean coercions + +0.3.0 / 2015-05-12 +================== + + * Add weak `ETag` matching support + +0.2.4 / 2014-09-07 +================== + + * Support Node.js 0.6 + +0.2.3 / 2014-09-07 +================== + + * Move repository to jshttp + +0.2.2 / 2014-02-19 +================== + + * Revert "Fix for blank page on Safari reload" + +0.2.1 / 2014-01-29 +================== + + * Fix for blank page on Safari reload + +0.2.0 / 2013-08-11 +================== + + * Return stale for `Cache-Control: no-cache` + +0.1.0 / 2012-06-15 +================== + + * Add `If-None-Match: *` support + +0.0.1 / 2012-06-10 +================== + + * Initial release diff --git a/bff/node_modules/fresh/LICENSE b/bff/node_modules/fresh/LICENSE new file mode 100644 index 0000000..1434ade --- /dev/null +++ b/bff/node_modules/fresh/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk +Copyright (c) 2016-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/fresh/README.md b/bff/node_modules/fresh/README.md new file mode 100644 index 0000000..fd79c5b --- /dev/null +++ b/bff/node_modules/fresh/README.md @@ -0,0 +1,117 @@ +# fresh + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +HTTP response freshness testing + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +``` +$ npm install fresh +``` + +## API + +```js +var fresh = require('fresh') +``` + +### fresh(reqHeaders, resHeaders) + +Check freshness of the response using request and response headers. + +When the response is still "fresh" in the client's cache `true` is +returned, otherwise `false` is returned to indicate that the client +cache is now stale and the full response should be sent. + +When a client sends the `Cache-Control: no-cache` request header to +indicate an end-to-end reload request, this module will return `false` +to make handling these requests transparent. + +## Known Issues + +This module is designed to only follow the HTTP specifications, not +to work-around all kinda of client bugs (especially since this module +typically does not receive enough information to understand what the +client actually is). + +There is a known issue that in certain versions of Safari, Safari +will incorrectly make a request that allows this module to validate +freshness of the resource even when Safari does not have a +representation of the resource in the cache. The module +[jumanji](https://www.npmjs.com/package/jumanji) can be used in +an Express application to work-around this issue and also provides +links to further reading on this Safari bug. + +## Example + +### API usage + + + +```js +var reqHeaders = { 'if-none-match': '"foo"' } +var resHeaders = { etag: '"bar"' } +fresh(reqHeaders, resHeaders) +// => false + +var reqHeaders = { 'if-none-match': '"foo"' } +var resHeaders = { etag: '"foo"' } +fresh(reqHeaders, resHeaders) +// => true +``` + +### Using with Node.js http server + +```js +var fresh = require('fresh') +var http = require('http') + +var server = http.createServer(function (req, res) { + // perform server logic + // ... including adding ETag / Last-Modified response headers + + if (isFresh(req, res)) { + // client has a fresh copy of resource + res.statusCode = 304 + res.end() + return + } + + // send the resource + res.statusCode = 200 + res.end('hello, world!') +}) + +function isFresh (req, res) { + return fresh(req.headers, { + etag: res.getHeader('ETag'), + 'last-modified': res.getHeader('Last-Modified') + }) +} + +server.listen(3000) +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://img.shields.io/github/workflow/status/jshttp/fresh/ci/master?label=ci +[ci-url]: https://github.com/jshttp/fresh/actions/workflows/ci.yml +[npm-image]: https://img.shields.io/npm/v/fresh.svg +[npm-url]: https://npmjs.org/package/fresh +[node-version-image]: https://img.shields.io/node/v/fresh.svg +[node-version-url]: https://nodejs.org/en/ +[coveralls-image]: https://img.shields.io/coveralls/jshttp/fresh/master.svg +[coveralls-url]: https://coveralls.io/r/jshttp/fresh?branch=master +[downloads-image]: https://img.shields.io/npm/dm/fresh.svg +[downloads-url]: https://npmjs.org/package/fresh diff --git a/bff/node_modules/fresh/index.js b/bff/node_modules/fresh/index.js new file mode 100644 index 0000000..fc3dea7 --- /dev/null +++ b/bff/node_modules/fresh/index.js @@ -0,0 +1,136 @@ +/*! + * fresh + * Copyright(c) 2012 TJ Holowaychuk + * Copyright(c) 2016-2017 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * RegExp to check for no-cache token in Cache-Control. + * @private + */ + +var CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/ + +/** + * Module exports. + * @public + */ + +module.exports = fresh + +/** + * Check freshness of the response using request and response headers. + * + * @param {Object} reqHeaders + * @param {Object} resHeaders + * @return {Boolean} + * @public + */ + +function fresh (reqHeaders, resHeaders) { + // fields + var modifiedSince = reqHeaders['if-modified-since'] + var noneMatch = reqHeaders['if-none-match'] + + // unconditional request + if (!modifiedSince && !noneMatch) { + return false + } + + // Always return stale when Cache-Control: no-cache + // to support end-to-end reload requests + // https://tools.ietf.org/html/rfc2616#section-14.9.4 + var cacheControl = reqHeaders['cache-control'] + if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) { + return false + } + + // if-none-match takes precedent over if-modified-since + if (noneMatch) { + if (noneMatch === '*') { + return true + } + var etag = resHeaders.etag + + if (!etag) { + return false + } + + var matches = parseTokenList(noneMatch) + for (var i = 0; i < matches.length; i++) { + var match = matches[i] + if (match === etag || match === 'W/' + etag || 'W/' + match === etag) { + return true + } + } + + return false + } + + // if-modified-since + if (modifiedSince) { + var lastModified = resHeaders['last-modified'] + var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince)) + + if (modifiedStale) { + return false + } + } + + return true +} + +/** + * Parse an HTTP Date into a number. + * + * @param {string} date + * @private + */ + +function parseHttpDate (date) { + var timestamp = date && Date.parse(date) + + // istanbul ignore next: guard against date.js Date.parse patching + return typeof timestamp === 'number' + ? timestamp + : NaN +} + +/** + * Parse a HTTP token list. + * + * @param {string} str + * @private + */ + +function parseTokenList (str) { + var end = 0 + var list = [] + var start = 0 + + // gather tokens + for (var i = 0, len = str.length; i < len; i++) { + switch (str.charCodeAt(i)) { + case 0x20: /* */ + if (start === end) { + start = end = i + 1 + } + break + case 0x2c: /* , */ + list.push(str.substring(start, end)) + start = end = i + 1 + break + default: + end = i + 1 + break + } + } + + // final token + list.push(str.substring(start, end)) + + return list +} diff --git a/bff/node_modules/fresh/package.json b/bff/node_modules/fresh/package.json new file mode 100644 index 0000000..5d7e215 --- /dev/null +++ b/bff/node_modules/fresh/package.json @@ -0,0 +1,46 @@ +{ + "name": "fresh", + "description": "HTTP response freshness testing", + "version": "2.0.0", + "author": "TJ Holowaychuk (http://tjholowaychuk.com)", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "keywords": [ + "fresh", + "http", + "conditional", + "cache" + ], + "repository": "jshttp/fresh", + "devDependencies": { + "beautify-benchmark": "0.2.4", + "benchmark": "2.1.4", + "eslint": "8.12.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "6.0.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.0", + "nyc": "15.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "bench": "node benchmark/index.js", + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/function-bind/.eslintrc b/bff/node_modules/function-bind/.eslintrc new file mode 100644 index 0000000..71a054f --- /dev/null +++ b/bff/node_modules/function-bind/.eslintrc @@ -0,0 +1,21 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-name-matching": 0, + "indent": [2, 4], + "no-new-func": [1], + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "max-lines-per-function": 0, + "strict": [0] + }, + }, + ], +} diff --git a/bff/node_modules/function-bind/.github/FUNDING.yml b/bff/node_modules/function-bind/.github/FUNDING.yml new file mode 100644 index 0000000..7448219 --- /dev/null +++ b/bff/node_modules/function-bind/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/function-bind +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/function-bind/.github/SECURITY.md b/bff/node_modules/function-bind/.github/SECURITY.md new file mode 100644 index 0000000..82e4285 --- /dev/null +++ b/bff/node_modules/function-bind/.github/SECURITY.md @@ -0,0 +1,3 @@ +# Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. diff --git a/bff/node_modules/function-bind/.nycrc b/bff/node_modules/function-bind/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/bff/node_modules/function-bind/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/function-bind/CHANGELOG.md b/bff/node_modules/function-bind/CHANGELOG.md new file mode 100644 index 0000000..f9e6cc0 --- /dev/null +++ b/bff/node_modules/function-bind/CHANGELOG.md @@ -0,0 +1,136 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.2](https://github.com/ljharb/function-bind/compare/v1.1.1...v1.1.2) - 2023-10-12 + +### Merged + +- Point to the correct file [`#16`](https://github.com/ljharb/function-bind/pull/16) + +### Commits + +- [Tests] migrate tests to Github Actions [`4f8b57c`](https://github.com/ljharb/function-bind/commit/4f8b57c02f2011fe9ae353d5e74e8745f0988af8) +- [Tests] remove `jscs` [`90eb2ed`](https://github.com/ljharb/function-bind/commit/90eb2edbeefd5b76cd6c3a482ea3454db169b31f) +- [meta] update `.gitignore` [`53fcdc3`](https://github.com/ljharb/function-bind/commit/53fcdc371cd66634d6e9b71c836a50f437e89fed) +- [Tests] up to `node` `v11.10`, `v10.15`, `v9.11`, `v8.15`, `v6.16`, `v4.9`; use `nvm install-latest-npm`; run audit script in tests [`1fe8f6e`](https://github.com/ljharb/function-bind/commit/1fe8f6e9aed0dfa8d8b3cdbd00c7f5ea0cd2b36e) +- [meta] add `auto-changelog` [`1921fcb`](https://github.com/ljharb/function-bind/commit/1921fcb5b416b63ffc4acad051b6aad5722f777d) +- [Robustness] remove runtime dependency on all builtins except `.apply` [`f743e61`](https://github.com/ljharb/function-bind/commit/f743e61aa6bb2360358c04d4884c9db853d118b7) +- Docs: enable badges; update wording [`503cb12`](https://github.com/ljharb/function-bind/commit/503cb12d998b5f91822776c73332c7adcd6355dd) +- [readme] update badges [`290c5db`](https://github.com/ljharb/function-bind/commit/290c5dbbbda7264efaeb886552a374b869a4bb48) +- [Tests] switch to nyc for coverage [`ea360ba`](https://github.com/ljharb/function-bind/commit/ea360ba907fc2601ed18d01a3827fa2d3533cdf8) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`cae5e9e`](https://github.com/ljharb/function-bind/commit/cae5e9e07a5578dc6df26c03ee22851ce05b943c) +- [meta] add `funding` field; create FUNDING.yml [`c9f4274`](https://github.com/ljharb/function-bind/commit/c9f4274aa80ea3aae9657a3938fdba41a3b04ca6) +- [Tests] fix eslint errors from #15 [`f69aaa2`](https://github.com/ljharb/function-bind/commit/f69aaa2beb2fdab4415bfb885760a699d0b9c964) +- [actions] fix permissions [`99a0cd9`](https://github.com/ljharb/function-bind/commit/99a0cd9f3b5bac223a0d572f081834cd73314be7) +- [meta] use `npmignore` to autogenerate an npmignore file [`f03b524`](https://github.com/ljharb/function-bind/commit/f03b524ca91f75a109a5d062f029122c86ecd1ae) +- [Dev Deps] update `@ljharb/eslint‑config`, `eslint`, `tape` [`7af9300`](https://github.com/ljharb/function-bind/commit/7af930023ae2ce7645489532821e4fbbcd7a2280) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `tape` [`64a9127`](https://github.com/ljharb/function-bind/commit/64a9127ab0bd331b93d6572eaf6e9971967fc08c) +- [Tests] use `aud` instead of `npm audit` [`e75069c`](https://github.com/ljharb/function-bind/commit/e75069c50010a8fcce2a9ce2324934c35fdb4386) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`d03555c`](https://github.com/ljharb/function-bind/commit/d03555ca59dea3b71ce710045e4303b9e2619e28) +- [meta] add `safe-publish-latest` [`9c8f809`](https://github.com/ljharb/function-bind/commit/9c8f8092aed027d7e80c94f517aa892385b64f09) +- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`baf6893`](https://github.com/ljharb/function-bind/commit/baf6893e27f5b59abe88bc1995e6f6ed1e527397) +- [meta] create SECURITY.md [`4db1779`](https://github.com/ljharb/function-bind/commit/4db17799f1f28ae294cb95e0081ca2b591c3911b) +- [Tests] add `npm run audit` [`c8b38ec`](https://github.com/ljharb/function-bind/commit/c8b38ec40ed3f85dabdee40ed4148f1748375bc2) +- Revert "Point to the correct file" [`05cdf0f`](https://github.com/ljharb/function-bind/commit/05cdf0fa205c6a3c5ba40bbedd1dfa9874f915c9) + +## [v1.1.1](https://github.com/ljharb/function-bind/compare/v1.1.0...v1.1.1) - 2017-08-28 + +### Commits + +- [Tests] up to `node` `v8`; newer npm breaks on older node; fix scripts [`817f7d2`](https://github.com/ljharb/function-bind/commit/817f7d28470fdbff8ef608d4d565dd4d1430bc5e) +- [Dev Deps] update `eslint`, `jscs`, `tape`, `@ljharb/eslint-config` [`854288b`](https://github.com/ljharb/function-bind/commit/854288b1b6f5c555f89aceb9eff1152510262084) +- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`83e639f`](https://github.com/ljharb/function-bind/commit/83e639ff74e6cd6921285bccec22c1bcf72311bd) +- Only apps should have lockfiles [`5ed97f5`](https://github.com/ljharb/function-bind/commit/5ed97f51235c17774e0832e122abda0f3229c908) +- Use a SPDX-compliant “license” field. [`5feefea`](https://github.com/ljharb/function-bind/commit/5feefea0dc0193993e83e5df01ded424403a5381) + +## [v1.1.0](https://github.com/ljharb/function-bind/compare/v1.0.2...v1.1.0) - 2016-02-14 + +### Commits + +- Update `eslint`, `tape`; use my personal shared `eslint` config [`9c9062a`](https://github.com/ljharb/function-bind/commit/9c9062abbe9dd70b59ea2c3a3c3a81f29b457097) +- Add `npm run eslint` [`dd96c56`](https://github.com/ljharb/function-bind/commit/dd96c56720034a3c1ffee10b8a59a6f7c53e24ad) +- [New] return the native `bind` when available. [`82186e0`](https://github.com/ljharb/function-bind/commit/82186e03d73e580f95ff167e03f3582bed90ed72) +- [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`a3dd767`](https://github.com/ljharb/function-bind/commit/a3dd76720c795cb7f4586b0544efabf8aa107b8b) +- Update `eslint` [`3dae2f7`](https://github.com/ljharb/function-bind/commit/3dae2f7423de30a2d20313ddb1edc19660142fe9) +- Update `tape`, `covert`, `jscs` [`a181eee`](https://github.com/ljharb/function-bind/commit/a181eee0cfa24eb229c6e843a971f36e060a2f6a) +- [Tests] up to `node` `v5.6`, `v4.3` [`964929a`](https://github.com/ljharb/function-bind/commit/964929a6a4ddb36fb128de2bcc20af5e4f22e1ed) +- Test up to `io.js` `v2.1` [`2be7310`](https://github.com/ljharb/function-bind/commit/2be7310f2f74886a7124ca925be411117d41d5ea) +- Update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` [`45f3d68`](https://github.com/ljharb/function-bind/commit/45f3d6865c6ca93726abcef54febe009087af101) +- [Dev Deps] update `tape`, `jscs` [`6e1340d`](https://github.com/ljharb/function-bind/commit/6e1340d94642deaecad3e717825db641af4f8b1f) +- [Tests] up to `io.js` `v3.3`, `node` `v4.1` [`d9bad2b`](https://github.com/ljharb/function-bind/commit/d9bad2b778b1b3a6dd2876087b88b3acf319f8cc) +- Update `eslint` [`935590c`](https://github.com/ljharb/function-bind/commit/935590caa024ab356102e4858e8fc315b2ccc446) +- [Dev Deps] update `jscs`, `eslint`, `@ljharb/eslint-config` [`8c9a1ef`](https://github.com/ljharb/function-bind/commit/8c9a1efd848e5167887aa8501857a0940a480c57) +- Test on `io.js` `v2.2` [`9a3a38c`](https://github.com/ljharb/function-bind/commit/9a3a38c92013aed6e108666e7bd40969b84ac86e) +- Run `travis-ci` tests on `iojs` and `node` v0.12; speed up builds; allow 0.8 failures. [`69afc26`](https://github.com/ljharb/function-bind/commit/69afc2617405b147dd2a8d8ae73ca9e9283f18b4) +- [Dev Deps] Update `tape`, `eslint` [`36c1be0`](https://github.com/ljharb/function-bind/commit/36c1be0ab12b45fe5df6b0fdb01a5d5137fd0115) +- Update `tape`, `jscs` [`98d8303`](https://github.com/ljharb/function-bind/commit/98d8303cd5ca1c6b8f985469f86b0d44d7d45f6e) +- Update `jscs` [`9633a4e`](https://github.com/ljharb/function-bind/commit/9633a4e9fbf82051c240855166e468ba8ba0846f) +- Update `tape`, `jscs` [`c80ef0f`](https://github.com/ljharb/function-bind/commit/c80ef0f46efc9791e76fa50de4414092ac147831) +- Test up to `io.js` `v3.0` [`7e2c853`](https://github.com/ljharb/function-bind/commit/7e2c8537d52ab9cf5a655755561d8917684c0df4) +- Test on `io.js` `v2.4` [`5a199a2`](https://github.com/ljharb/function-bind/commit/5a199a27ba46795ba5eaf0845d07d4b8232895c9) +- Test on `io.js` `v2.3` [`a511b88`](https://github.com/ljharb/function-bind/commit/a511b8896de0bddf3b56862daa416c701f4d0453) +- Fixing a typo from 822b4e1938db02dc9584aa434fd3a45cb20caf43 [`732d6b6`](https://github.com/ljharb/function-bind/commit/732d6b63a9b33b45230e630dbcac7a10855d3266) +- Update `jscs` [`da52a48`](https://github.com/ljharb/function-bind/commit/da52a4886c06d6490f46ae30b15e4163ba08905d) +- Lock covert to v1.0.0. [`d6150fd`](https://github.com/ljharb/function-bind/commit/d6150fda1e6f486718ebdeff823333d9e48e7430) + +## [v1.0.2](https://github.com/ljharb/function-bind/compare/v1.0.1...v1.0.2) - 2014-10-04 + +## [v1.0.1](https://github.com/ljharb/function-bind/compare/v1.0.0...v1.0.1) - 2014-10-03 + +### Merged + +- make CI build faster [`#3`](https://github.com/ljharb/function-bind/pull/3) + +### Commits + +- Using my standard jscs.json [`d8ee94c`](https://github.com/ljharb/function-bind/commit/d8ee94c993eff0a84cf5744fe6a29627f5cffa1a) +- Adding `npm run lint` [`7571ab7`](https://github.com/ljharb/function-bind/commit/7571ab7dfdbd99b25a1dbb2d232622bd6f4f9c10) +- Using consistent indentation [`e91a1b1`](https://github.com/ljharb/function-bind/commit/e91a1b13a61e99ec1e530e299b55508f74218a95) +- Updating jscs [`7e17892`](https://github.com/ljharb/function-bind/commit/7e1789284bc629bc9c1547a61c9b227bbd8c7a65) +- Using consistent quotes [`c50b57f`](https://github.com/ljharb/function-bind/commit/c50b57fcd1c5ec38320979c837006069ebe02b77) +- Adding keywords [`cb94631`](https://github.com/ljharb/function-bind/commit/cb946314eed35f21186a25fb42fc118772f9ee00) +- Directly export a function expression instead of using a declaration, and relying on hoisting. [`5a33c5f`](https://github.com/ljharb/function-bind/commit/5a33c5f45642de180e0d207110bf7d1843ceb87c) +- Naming npm URL and badge in README; use SVG [`2aef8fc`](https://github.com/ljharb/function-bind/commit/2aef8fcb79d54e63a58ae557c4e60949e05d5e16) +- Naming deps URLs in README [`04228d7`](https://github.com/ljharb/function-bind/commit/04228d766670ee45ca24e98345c1f6a7621065b5) +- Naming travis-ci URLs in README; using SVG [`62c810c`](https://github.com/ljharb/function-bind/commit/62c810c2f54ced956cd4d4ab7b793055addfe36e) +- Make sure functions are invoked correctly (also passing coverage tests) [`2b289b4`](https://github.com/ljharb/function-bind/commit/2b289b4dfbf037ffcfa4dc95eb540f6165e9e43a) +- Removing the strict mode pragmas; they make tests fail. [`1aa701d`](https://github.com/ljharb/function-bind/commit/1aa701d199ddc3782476e8f7eef82679be97b845) +- Adding myself as a contributor [`85fd57b`](https://github.com/ljharb/function-bind/commit/85fd57b0860e5a7af42de9a287f3f265fc6d72fc) +- Adding strict mode pragmas [`915b08e`](https://github.com/ljharb/function-bind/commit/915b08e084c86a722eafe7245e21db74aa21ca4c) +- Adding devDeps URLs to README [`4ccc731`](https://github.com/ljharb/function-bind/commit/4ccc73112c1769859e4ca3076caf4086b3cba2cd) +- Fixing the description. [`a7a472c`](https://github.com/ljharb/function-bind/commit/a7a472cf649af515c635cf560fc478fbe48999c8) +- Using a function expression instead of a function declaration. [`b5d3e4e`](https://github.com/ljharb/function-bind/commit/b5d3e4ea6aaffc63888953eeb1fbc7ff45f1fa14) +- Updating tape [`f086be6`](https://github.com/ljharb/function-bind/commit/f086be6029fb56dde61a258c1340600fa174d1e0) +- Updating jscs [`5f9bdb3`](https://github.com/ljharb/function-bind/commit/5f9bdb375ab13ba48f30852aab94029520c54d71) +- Updating jscs [`9b409ba`](https://github.com/ljharb/function-bind/commit/9b409ba6118e23395a4e5d83ef39152aab9d3bfc) +- Run coverage as part of tests. [`8e1b6d4`](https://github.com/ljharb/function-bind/commit/8e1b6d459f047d1bd4fee814e01247c984c80bd0) +- Run linter as part of tests [`c1ca83f`](https://github.com/ljharb/function-bind/commit/c1ca83f832df94587d09e621beba682fabfaa987) +- Updating covert [`701e837`](https://github.com/ljharb/function-bind/commit/701e83774b57b4d3ef631e1948143f43a72f4bb9) + +## [v1.0.0](https://github.com/ljharb/function-bind/compare/v0.2.0...v1.0.0) - 2014-08-09 + +### Commits + +- Make sure old and unstable nodes don't fail Travis [`27adca3`](https://github.com/ljharb/function-bind/commit/27adca34a4ab6ad67b6dfde43942a1b103ce4d75) +- Fixing an issue when the bound function is called as a constructor in ES3. [`e20122d`](https://github.com/ljharb/function-bind/commit/e20122d267d92ce553859b280cbbea5d27c07731) +- Adding `npm run coverage` [`a2e29c4`](https://github.com/ljharb/function-bind/commit/a2e29c4ecaef9e2f6cd1603e868c139073375502) +- Updating tape [`b741168`](https://github.com/ljharb/function-bind/commit/b741168b12b235b1717ff696087645526b69213c) +- Upgrading tape [`63631a0`](https://github.com/ljharb/function-bind/commit/63631a04c7fbe97cc2fa61829cc27246d6986f74) +- Updating tape [`363cb46`](https://github.com/ljharb/function-bind/commit/363cb46dafb23cb3e347729a22f9448051d78464) + +## v0.2.0 - 2014-03-23 + +### Commits + +- Updating test coverage to match es5-shim. [`aa94d44`](https://github.com/ljharb/function-bind/commit/aa94d44b8f9d7f69f10e060db7709aa7a694e5d4) +- initial [`942ee07`](https://github.com/ljharb/function-bind/commit/942ee07e94e542d91798137bc4b80b926137e066) +- Setting the bound function's length properly. [`079f46a`](https://github.com/ljharb/function-bind/commit/079f46a2d3515b7c0b308c2c13fceb641f97ca25) +- Ensuring that some older browsers will throw when given a regex. [`36ac55b`](https://github.com/ljharb/function-bind/commit/36ac55b87f460d4330253c92870aa26fbfe8227f) +- Removing npm scripts that don't have dependencies [`9d2be60`](https://github.com/ljharb/function-bind/commit/9d2be600002cb8bc8606f8f3585ad3e05868c750) +- Updating tape [`297a4ac`](https://github.com/ljharb/function-bind/commit/297a4acc5464db381940aafb194d1c88f4e678f3) +- Skipping length tests for now. [`d9891ea`](https://github.com/ljharb/function-bind/commit/d9891ea4d2aaffa69f408339cdd61ff740f70565) +- don't take my tea [`dccd930`](https://github.com/ljharb/function-bind/commit/dccd930bfd60ea10cb178d28c97550c3bc8c1e07) diff --git a/bff/node_modules/function-bind/LICENSE b/bff/node_modules/function-bind/LICENSE new file mode 100644 index 0000000..62d6d23 --- /dev/null +++ b/bff/node_modules/function-bind/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/bff/node_modules/function-bind/README.md b/bff/node_modules/function-bind/README.md new file mode 100644 index 0000000..814c20b --- /dev/null +++ b/bff/node_modules/function-bind/README.md @@ -0,0 +1,46 @@ +# function-bind [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] + +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Implementation of function.prototype.bind + +Old versions of phantomjs, Internet Explorer < 9, and node < 0.6 don't support `Function.prototype.bind`. + +## Example + +```js +Function.prototype.bind = require("function-bind") +``` + +## Installation + +`npm install function-bind` + +## Contributors + + - Raynos + +## MIT Licenced + +[package-url]: https://npmjs.org/package/function-bind +[npm-version-svg]: https://versionbadg.es/Raynos/function-bind.svg +[deps-svg]: https://david-dm.org/Raynos/function-bind.svg +[deps-url]: https://david-dm.org/Raynos/function-bind +[dev-deps-svg]: https://david-dm.org/Raynos/function-bind/dev-status.svg +[dev-deps-url]: https://david-dm.org/Raynos/function-bind#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/function-bind.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/function-bind.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/function-bind.svg +[downloads-url]: https://npm-stat.com/charts.html?package=function-bind +[codecov-image]: https://codecov.io/gh/Raynos/function-bind/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/Raynos/function-bind/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/Raynos/function-bind +[actions-url]: https://github.com/Raynos/function-bind/actions diff --git a/bff/node_modules/function-bind/implementation.js b/bff/node_modules/function-bind/implementation.js new file mode 100644 index 0000000..fd4384c --- /dev/null +++ b/bff/node_modules/function-bind/implementation.js @@ -0,0 +1,84 @@ +'use strict'; + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; + +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; diff --git a/bff/node_modules/function-bind/index.js b/bff/node_modules/function-bind/index.js new file mode 100644 index 0000000..3bb6b96 --- /dev/null +++ b/bff/node_modules/function-bind/index.js @@ -0,0 +1,5 @@ +'use strict'; + +var implementation = require('./implementation'); + +module.exports = Function.prototype.bind || implementation; diff --git a/bff/node_modules/function-bind/package.json b/bff/node_modules/function-bind/package.json new file mode 100644 index 0000000..6185963 --- /dev/null +++ b/bff/node_modules/function-bind/package.json @@ -0,0 +1,87 @@ +{ + "name": "function-bind", + "version": "1.1.2", + "description": "Implementation of Function.prototype.bind", + "keywords": [ + "function", + "bind", + "shim", + "es5" + ], + "author": "Raynos ", + "repository": { + "type": "git", + "url": "https://github.com/Raynos/function-bind.git" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "main": "index", + "homepage": "https://github.com/Raynos/function-bind", + "contributors": [ + { + "name": "Raynos" + }, + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "bugs": { + "url": "https://github.com/Raynos/function-bind/issues", + "email": "raynos2@gmail.com" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1" + }, + "license": "MIT", + "scripts": { + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepack": "npmignore --auto --commentLines=autogenerated", + "pretest": "npm run lint", + "test": "npm run tests-only", + "posttest": "aud --production", + "tests-only": "nyc tape 'test/**/*.js'", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/bff/node_modules/function-bind/test/.eslintrc b/bff/node_modules/function-bind/test/.eslintrc new file mode 100644 index 0000000..8a56d5b --- /dev/null +++ b/bff/node_modules/function-bind/test/.eslintrc @@ -0,0 +1,9 @@ +{ + "rules": { + "array-bracket-newline": 0, + "array-element-newline": 0, + "max-statements-per-line": [2, { "max": 2 }], + "no-invalid-this": 0, + "no-magic-numbers": 0, + } +} diff --git a/bff/node_modules/function-bind/test/index.js b/bff/node_modules/function-bind/test/index.js new file mode 100644 index 0000000..2edecce --- /dev/null +++ b/bff/node_modules/function-bind/test/index.js @@ -0,0 +1,252 @@ +// jscs:disable requireUseStrict + +var test = require('tape'); + +var functionBind = require('../implementation'); +var getCurrentContext = function () { return this; }; + +test('functionBind is a function', function (t) { + t.equal(typeof functionBind, 'function'); + t.end(); +}); + +test('non-functions', function (t) { + var nonFunctions = [true, false, [], {}, 42, 'foo', NaN, /a/g]; + t.plan(nonFunctions.length); + for (var i = 0; i < nonFunctions.length; ++i) { + try { functionBind.call(nonFunctions[i]); } catch (ex) { + t.ok(ex instanceof TypeError, 'throws when given ' + String(nonFunctions[i])); + } + } + t.end(); +}); + +test('without a context', function (t) { + t.test('binds properly', function (st) { + var args, context; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }) + }; + namespace.func(1, 2, 3); + st.deepEqual(args, [1, 2, 3]); + st.equal(context, getCurrentContext.call()); + st.end(); + }); + + t.test('binds properly, and still supplies bound arguments', function (st) { + var args, context; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, undefined, 1, 2, 3) + }; + namespace.func(4, 5, 6); + st.deepEqual(args, [1, 2, 3, 4, 5, 6]); + st.equal(context, getCurrentContext.call()); + st.end(); + }); + + t.test('returns properly', function (st) { + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, null) + }; + var context = namespace.func(1, 2, 3); + st.equal(context, getCurrentContext.call(), 'returned context is namespaced context'); + st.deepEqual(args, [1, 2, 3], 'passed arguments are correct'); + st.end(); + }); + + t.test('returns properly with bound arguments', function (st) { + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, null, 1, 2, 3) + }; + var context = namespace.func(4, 5, 6); + st.equal(context, getCurrentContext.call(), 'returned context is namespaced context'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct'); + st.end(); + }); + + t.test('called as a constructor', function (st) { + var thunkify = function (value) { + return function () { return value; }; + }; + st.test('returns object value', function (sst) { + var expectedReturnValue = [1, 2, 3]; + var Constructor = functionBind.call(thunkify(expectedReturnValue), null); + var result = new Constructor(); + sst.equal(result, expectedReturnValue); + sst.end(); + }); + + st.test('does not return primitive value', function (sst) { + var Constructor = functionBind.call(thunkify(42), null); + var result = new Constructor(); + sst.notEqual(result, 42); + sst.end(); + }); + + st.test('object from bound constructor is instance of original and bound constructor', function (sst) { + var A = function (x) { + this.name = x || 'A'; + }; + var B = functionBind.call(A, null, 'B'); + + var result = new B(); + sst.ok(result instanceof B, 'result is instance of bound constructor'); + sst.ok(result instanceof A, 'result is instance of original constructor'); + sst.end(); + }); + + st.end(); + }); + + t.end(); +}); + +test('with a context', function (t) { + t.test('with no bound arguments', function (st) { + var args, context; + var boundContext = {}; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, boundContext) + }; + namespace.func(1, 2, 3); + st.equal(context, boundContext, 'binds a context properly'); + st.deepEqual(args, [1, 2, 3], 'supplies passed arguments'); + st.end(); + }); + + t.test('with bound arguments', function (st) { + var args, context; + var boundContext = {}; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + context = this; + }, boundContext, 1, 2, 3) + }; + namespace.func(4, 5, 6); + st.equal(context, boundContext, 'binds a context properly'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'supplies bound and passed arguments'); + st.end(); + }); + + t.test('returns properly', function (st) { + var boundContext = {}; + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, boundContext) + }; + var context = namespace.func(1, 2, 3); + st.equal(context, boundContext, 'returned context is bound context'); + st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context'); + st.deepEqual(args, [1, 2, 3], 'passed arguments are correct'); + st.end(); + }); + + t.test('returns properly with bound arguments', function (st) { + var boundContext = {}; + var args; + var namespace = { + func: functionBind.call(function () { + args = Array.prototype.slice.call(arguments); + return this; + }, boundContext, 1, 2, 3) + }; + var context = namespace.func(4, 5, 6); + st.equal(context, boundContext, 'returned context is bound context'); + st.notEqual(context, getCurrentContext.call(), 'returned context is not lexical context'); + st.deepEqual(args, [1, 2, 3, 4, 5, 6], 'passed arguments are correct'); + st.end(); + }); + + t.test('passes the correct arguments when called as a constructor', function (st) { + var expected = { name: 'Correct' }; + var namespace = { + Func: functionBind.call(function (arg) { + return arg; + }, { name: 'Incorrect' }) + }; + var returned = new namespace.Func(expected); + st.equal(returned, expected, 'returns the right arg when called as a constructor'); + st.end(); + }); + + t.test('has the new instance\'s context when called as a constructor', function (st) { + var actualContext; + var expectedContext = { foo: 'bar' }; + var namespace = { + Func: functionBind.call(function () { + actualContext = this; + }, expectedContext) + }; + var result = new namespace.Func(); + st.equal(result instanceof namespace.Func, true); + st.notEqual(actualContext, expectedContext); + st.end(); + }); + + t.end(); +}); + +test('bound function length', function (t) { + t.test('sets a correct length without thisArg', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }); + st.equal(subject.length, 3); + st.equal(subject(1, 2, 3), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}); + st.equal(subject.length, 3); + st.equal(subject(1, 2, 3), 6); + st.end(); + }); + + t.test('sets a correct length without thisArg and first argument', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1); + st.equal(subject.length, 2); + st.equal(subject(2, 3), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg and first argument', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1); + st.equal(subject.length, 2); + st.equal(subject(2, 3), 6); + st.end(); + }); + + t.test('sets a correct length without thisArg and too many arguments', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, undefined, 1, 2, 3, 4); + st.equal(subject.length, 0); + st.equal(subject(), 6); + st.end(); + }); + + t.test('sets a correct length with thisArg and too many arguments', function (st) { + var subject = functionBind.call(function (a, b, c) { return a + b + c; }, {}, 1, 2, 3, 4); + st.equal(subject.length, 0); + st.equal(subject(), 6); + st.end(); + }); +}); diff --git a/bff/node_modules/get-intrinsic/.eslintrc b/bff/node_modules/get-intrinsic/.eslintrc new file mode 100644 index 0000000..235fb79 --- /dev/null +++ b/bff/node_modules/get-intrinsic/.eslintrc @@ -0,0 +1,42 @@ +{ + "root": true, + + "extends": "@ljharb", + + "env": { + "es6": true, + "es2017": true, + "es2020": true, + "es2021": true, + "es2022": true, + }, + + "globals": { + "Float16Array": false, + }, + + "rules": { + "array-bracket-newline": 0, + "complexity": 0, + "eqeqeq": [2, "allow-null"], + "func-name-matching": 0, + "id-length": 0, + "max-lines": 0, + "max-lines-per-function": [2, 90], + "max-params": [2, 4], + "max-statements": 0, + "max-statements-per-line": [2, { "max": 2 }], + "multiline-comment-style": 0, + "no-magic-numbers": 0, + "sort-keys": 0, + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "new-cap": 0, + }, + }, + ], +} diff --git a/bff/node_modules/get-intrinsic/.github/FUNDING.yml b/bff/node_modules/get-intrinsic/.github/FUNDING.yml new file mode 100644 index 0000000..8e8da0d --- /dev/null +++ b/bff/node_modules/get-intrinsic/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/get-intrinsic +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/get-intrinsic/.nycrc b/bff/node_modules/get-intrinsic/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/bff/node_modules/get-intrinsic/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/get-intrinsic/CHANGELOG.md b/bff/node_modules/get-intrinsic/CHANGELOG.md new file mode 100644 index 0000000..ce1dd98 --- /dev/null +++ b/bff/node_modules/get-intrinsic/CHANGELOG.md @@ -0,0 +1,186 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.3.0](https://github.com/ljharb/get-intrinsic/compare/v1.2.7...v1.3.0) - 2025-02-22 + +### Commits + +- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `for-each`, `object-inspect` [`9b61553`](https://github.com/ljharb/get-intrinsic/commit/9b61553c587f1c1edbd435597e88c7d387da97dd) +- [Deps] update `call-bind-apply-helpers`, `es-object-atoms`, `get-proto` [`a341fee`](https://github.com/ljharb/get-intrinsic/commit/a341fee0f39a403b0f0069e82c97642d5eb11043) +- [New] add `Float16Array` [`de22116`](https://github.com/ljharb/get-intrinsic/commit/de22116b492fb989a0341bceb6e573abfaed73dc) + +## [v1.2.7](https://github.com/ljharb/get-intrinsic/compare/v1.2.6...v1.2.7) - 2025-01-02 + +### Commits + +- [Refactor] use `get-proto` directly [`00ab955`](https://github.com/ljharb/get-intrinsic/commit/00ab95546a0980c8ad42a84253daaa8d2adcedf9) +- [Deps] update `math-intrinsics` [`c716cdd`](https://github.com/ljharb/get-intrinsic/commit/c716cdd6bbe36b438057025561b8bb5a879ac8a0) +- [Dev Deps] update `call-bound`, `es-abstract` [`dc648a6`](https://github.com/ljharb/get-intrinsic/commit/dc648a67eb359037dff8d8619bfa71d86debccb1) + +## [v1.2.6](https://github.com/ljharb/get-intrinsic/compare/v1.2.5...v1.2.6) - 2024-12-11 + +### Commits + +- [Refactor] use `math-intrinsics` [`841be86`](https://github.com/ljharb/get-intrinsic/commit/841be8641a9254c4c75483b30c8871b5d5065926) +- [Refactor] use `es-object-atoms` [`42057df`](https://github.com/ljharb/get-intrinsic/commit/42057dfa16f66f64787e66482af381cc6f31d2c1) +- [Deps] update `call-bind-apply-helpers` [`45afa24`](https://github.com/ljharb/get-intrinsic/commit/45afa24a9ee4d6d3c172db1f555b16cb27843ef4) +- [Dev Deps] update `call-bound` [`9cba9c6`](https://github.com/ljharb/get-intrinsic/commit/9cba9c6e70212bc163b7a5529cb25df46071646f) + +## [v1.2.5](https://github.com/ljharb/get-intrinsic/compare/v1.2.4...v1.2.5) - 2024-12-06 + +### Commits + +- [actions] split out node 10-20, and 20+ [`6e2b9dd`](https://github.com/ljharb/get-intrinsic/commit/6e2b9dd23902665681ebe453256ccfe21d7966f0) +- [Refactor] use `dunder-proto` and `call-bind-apply-helpers` instead of `has-proto` [`c095d17`](https://github.com/ljharb/get-intrinsic/commit/c095d179ad0f4fbfff20c8a3e0cb4fe668018998) +- [Refactor] use `gopd` [`9841d5b`](https://github.com/ljharb/get-intrinsic/commit/9841d5b35f7ab4fd2d193f0c741a50a077920e90) +- [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `es-abstract`, `es-value-fixtures`, `gopd`, `mock-property`, `object-inspect`, `tape` [`2d07e01`](https://github.com/ljharb/get-intrinsic/commit/2d07e01310cee2cbaedfead6903df128b1f5d425) +- [Deps] update `gopd`, `has-proto`, `has-symbols`, `hasown` [`974d8bf`](https://github.com/ljharb/get-intrinsic/commit/974d8bf5baad7939eef35c25cc1dd88c10a30fa6) +- [Dev Deps] update `call-bind`, `es-abstract`, `tape` [`df9dde1`](https://github.com/ljharb/get-intrinsic/commit/df9dde178186631ab8a3165ede056549918ce4bc) +- [Refactor] cache `es-define-property` as well [`43ef543`](https://github.com/ljharb/get-intrinsic/commit/43ef543cb02194401420e3a914a4ca9168691926) +- [Deps] update `has-proto`, `has-symbols`, `hasown` [`ad4949d`](https://github.com/ljharb/get-intrinsic/commit/ad4949d5467316505aad89bf75f9417ed782f7af) +- [Tests] use `call-bound` directly [`ad5c406`](https://github.com/ljharb/get-intrinsic/commit/ad5c4069774bfe90e520a35eead5fe5ca9d69e80) +- [Deps] update `has-proto`, `hasown` [`45414ca`](https://github.com/ljharb/get-intrinsic/commit/45414caa312333a2798953682c68f85c550627dd) +- [Tests] replace `aud` with `npm audit` [`18d3509`](https://github.com/ljharb/get-intrinsic/commit/18d3509f79460e7924da70409ee81e5053087523) +- [Deps] update `es-define-property` [`aadaa3b`](https://github.com/ljharb/get-intrinsic/commit/aadaa3b2188d77ad9bff394ce5d4249c49eb21f5) +- [Dev Deps] add missing peer dep [`c296a16`](https://github.com/ljharb/get-intrinsic/commit/c296a16246d0c9a5981944f4cc5cf61fbda0cf6a) + +## [v1.2.4](https://github.com/ljharb/get-intrinsic/compare/v1.2.3...v1.2.4) - 2024-02-05 + +### Commits + +- [Refactor] use all 7 <+ ES6 Errors from `es-errors` [`bcac811`](https://github.com/ljharb/get-intrinsic/commit/bcac811abdc1c982e12abf848a410d6aae148d14) + +## [v1.2.3](https://github.com/ljharb/get-intrinsic/compare/v1.2.2...v1.2.3) - 2024-02-03 + +### Commits + +- [Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic` [`f11db9c`](https://github.com/ljharb/get-intrinsic/commit/f11db9c4fb97d87bbd53d3c73ac6b3db3613ad3b) +- [Dev Deps] update `aud`, `es-abstract`, `mock-property`, `npmignore` [`b7ac7d1`](https://github.com/ljharb/get-intrinsic/commit/b7ac7d1616fefb03877b1aed0c8f8d61aad32b6c) +- [meta] simplify `exports` [`faa0cc6`](https://github.com/ljharb/get-intrinsic/commit/faa0cc618e2830ffb51a8202490b0c215d965cbc) +- [meta] add missing `engines.node` [`774dd0b`](https://github.com/ljharb/get-intrinsic/commit/774dd0b3e8f741c3f05a6322d124d6087f146af1) +- [Dev Deps] update `tape` [`5828e8e`](https://github.com/ljharb/get-intrinsic/commit/5828e8e4a04e69312e87a36c0ea39428a7a4c3d8) +- [Robustness] use null objects for lookups [`eb9a11f`](https://github.com/ljharb/get-intrinsic/commit/eb9a11fa9eb3e13b193fcc05a7fb814341b1a7b7) +- [meta] add `sideEffects` flag [`89bcc7a`](https://github.com/ljharb/get-intrinsic/commit/89bcc7a42e19bf07b7c21e3094d5ab177109e6d2) + +## [v1.2.2](https://github.com/ljharb/get-intrinsic/compare/v1.2.1...v1.2.2) - 2023-10-20 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `call-bind`, `es-abstract`, `mock-property`, `object-inspect`, `tape` [`f51bcf2`](https://github.com/ljharb/get-intrinsic/commit/f51bcf26412d58d17ce17c91c9afd0ad271f0762) +- [Refactor] use `hasown` instead of `has` [`18d14b7`](https://github.com/ljharb/get-intrinsic/commit/18d14b799bea6b5765e1cec91890830cbcdb0587) +- [Deps] update `function-bind` [`6e109c8`](https://github.com/ljharb/get-intrinsic/commit/6e109c81e03804cc5e7824fb64353cdc3d8ee2c7) + +## [v1.2.1](https://github.com/ljharb/get-intrinsic/compare/v1.2.0...v1.2.1) - 2023-05-13 + +### Commits + +- [Fix] avoid a crash in envs without `__proto__` [`7bad8d0`](https://github.com/ljharb/get-intrinsic/commit/7bad8d061bf8721733b58b73a2565af2b6756b64) +- [Dev Deps] update `es-abstract` [`c60e6b7`](https://github.com/ljharb/get-intrinsic/commit/c60e6b7b4cf9660c7f27ed970970fd55fac48dc5) + +## [v1.2.0](https://github.com/ljharb/get-intrinsic/compare/v1.1.3...v1.2.0) - 2023-01-19 + +### Commits + +- [actions] update checkout action [`ca6b12f`](https://github.com/ljharb/get-intrinsic/commit/ca6b12f31eaacea4ea3b055e744cd61623385ffb) +- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `tape` [`41a3727`](https://github.com/ljharb/get-intrinsic/commit/41a3727d0026fa04273ae216a5f8e12eefd72da8) +- [Fix] ensure `Error.prototype` is undeniable [`c511e97`](https://github.com/ljharb/get-intrinsic/commit/c511e97ae99c764c4524b540dee7a70757af8da3) +- [Dev Deps] update `aud`, `es-abstract`, `tape` [`1bef8a8`](https://github.com/ljharb/get-intrinsic/commit/1bef8a8fd439ebb80863199b6189199e0851ac67) +- [Dev Deps] update `aud`, `es-abstract` [`0d41f16`](https://github.com/ljharb/get-intrinsic/commit/0d41f16bcd500bc28b7bfc98043ebf61ea081c26) +- [New] add `BigInt64Array` and `BigUint64Array` [`a6cca25`](https://github.com/ljharb/get-intrinsic/commit/a6cca25f29635889b7e9bd669baf9e04be90e48c) +- [Tests] use `gopd` [`ecf7722`](https://github.com/ljharb/get-intrinsic/commit/ecf7722240d15cfd16edda06acf63359c10fb9bd) + +## [v1.1.3](https://github.com/ljharb/get-intrinsic/compare/v1.1.2...v1.1.3) - 2022-09-12 + +### Commits + +- [Dev Deps] update `es-abstract`, `es-value-fixtures`, `tape` [`07ff291`](https://github.com/ljharb/get-intrinsic/commit/07ff291816406ebe5a12d7f16965bde0942dd688) +- [Fix] properly check for % signs [`50ac176`](https://github.com/ljharb/get-intrinsic/commit/50ac1760fe99c227e64eabde76e9c0e44cd881b5) + +## [v1.1.2](https://github.com/ljharb/get-intrinsic/compare/v1.1.1...v1.1.2) - 2022-06-08 + +### Fixed + +- [Fix] properly validate against extra % signs [`#16`](https://github.com/ljharb/get-intrinsic/issues/16) + +### Commits + +- [actions] reuse common workflows [`0972547`](https://github.com/ljharb/get-intrinsic/commit/0972547efd0abc863fe4c445a6ca7eb4f8c6901d) +- [meta] use `npmignore` to autogenerate an npmignore file [`5ba0b51`](https://github.com/ljharb/get-intrinsic/commit/5ba0b51d8d8d4f1c31d426d74abc0770fd106bad) +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`c364492`](https://github.com/ljharb/get-intrinsic/commit/c364492af4af51333e6f81c0bf21fd3d602c3661) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `es-abstract`, `object-inspect`, `tape` [`dc04dad`](https://github.com/ljharb/get-intrinsic/commit/dc04dad86f6e5608775a2640cb0db5927ae29ed9) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `es-abstract`, `object-inspect`, `safe-publish-latest`, `tape` [`1c14059`](https://github.com/ljharb/get-intrinsic/commit/1c1405984e86dd2dc9366c15d8a0294a96a146a5) +- [Tests] use `mock-property` [`b396ef0`](https://github.com/ljharb/get-intrinsic/commit/b396ef05bb73b1d699811abd64b0d9b97997fdda) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `object-inspect`, `tape` [`c2c758d`](https://github.com/ljharb/get-intrinsic/commit/c2c758d3b90af4fef0a76910d8d3c292ec8d1d3e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`29e3c09`](https://github.com/ljharb/get-intrinsic/commit/29e3c091c2bf3e17099969847e8729d0e46896de) +- [actions] update codecov uploader [`8cbc141`](https://github.com/ljharb/get-intrinsic/commit/8cbc1418940d7a8941f3a7985cbc4ac095c5e13d) +- [Dev Deps] update `@ljharb/eslint-config`, `es-abstract`, `es-value-fixtures`, `object-inspect`, `tape` [`10b6f5c`](https://github.com/ljharb/get-intrinsic/commit/10b6f5c02593fb3680c581d696ac124e30652932) +- [readme] add github actions/codecov badges [`4e25400`](https://github.com/ljharb/get-intrinsic/commit/4e25400d9f51ae9eb059cbe22d9144e70ea214e8) +- [Tests] use `for-each` instead of `foreach` [`c05b957`](https://github.com/ljharb/get-intrinsic/commit/c05b957ad9a7bc7721af7cc9e9be1edbfe057496) +- [Dev Deps] update `es-abstract` [`29b05ae`](https://github.com/ljharb/get-intrinsic/commit/29b05aec3e7330e9ad0b8e0f685a9112c20cdd97) +- [meta] use `prepublishOnly` script for npm 7+ [`95c285d`](https://github.com/ljharb/get-intrinsic/commit/95c285da810516057d3bbfa871176031af38f05d) +- [Deps] update `has-symbols` [`593cb4f`](https://github.com/ljharb/get-intrinsic/commit/593cb4fb38e7922e40e42c183f45274b636424cd) +- [readme] fix repo URLs [`1c8305b`](https://github.com/ljharb/get-intrinsic/commit/1c8305b5365827c9b6fc785434aac0e1328ff2f5) +- [Deps] update `has-symbols` [`c7138b6`](https://github.com/ljharb/get-intrinsic/commit/c7138b6c6d73132d859471fb8c13304e1e7c8b20) +- [Dev Deps] remove unused `has-bigints` [`bd63aff`](https://github.com/ljharb/get-intrinsic/commit/bd63aff6ad8f3a986c557fcda2914187bdaab359) + +## [v1.1.1](https://github.com/ljharb/get-intrinsic/compare/v1.1.0...v1.1.1) - 2021-02-03 + +### Fixed + +- [meta] export `./package.json` [`#9`](https://github.com/ljharb/get-intrinsic/issues/9) + +### Commits + +- [readme] flesh out the readme; use `evalmd` [`d12f12c`](https://github.com/ljharb/get-intrinsic/commit/d12f12c15345a0a0772cc65a7c64369529abd614) +- [eslint] set up proper globals config [`5a8c098`](https://github.com/ljharb/get-intrinsic/commit/5a8c0984e3319d1ac0e64b102f8ec18b64e79f36) +- [Dev Deps] update `eslint` [`7b9a5c0`](https://github.com/ljharb/get-intrinsic/commit/7b9a5c0d31a90ca1a1234181c74988fb046701cd) + +## [v1.1.0](https://github.com/ljharb/get-intrinsic/compare/v1.0.2...v1.1.0) - 2021-01-25 + +### Fixed + +- [Refactor] delay `Function` eval until syntax-derived values are requested [`#3`](https://github.com/ljharb/get-intrinsic/issues/3) + +### Commits + +- [Tests] migrate tests to Github Actions [`2ab762b`](https://github.com/ljharb/get-intrinsic/commit/2ab762b48164aea8af37a40ba105bbc8246ab8c4) +- [meta] do not publish github action workflow files [`5e7108e`](https://github.com/ljharb/get-intrinsic/commit/5e7108e4768b244d48d9567ba4f8a6cab9c65b8e) +- [Tests] add some coverage [`01ac7a8`](https://github.com/ljharb/get-intrinsic/commit/01ac7a87ac29738567e8524cd8c9e026b1fa8cb3) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `call-bind`, `es-abstract`, `tape`; add `call-bind` [`911b672`](https://github.com/ljharb/get-intrinsic/commit/911b672fbffae433a96924c6ce013585e425f4b7) +- [Refactor] rearrange evalled constructors a bit [`7e7e4bf`](https://github.com/ljharb/get-intrinsic/commit/7e7e4bf583f3799c8ac1c6c5e10d2cb553957347) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`0199968`](https://github.com/ljharb/get-intrinsic/commit/01999687a263ffce0a3cb011dfbcb761754aedbc) + +## [v1.0.2](https://github.com/ljharb/get-intrinsic/compare/v1.0.1...v1.0.2) - 2020-12-17 + +### Commits + +- [Fix] Throw for non‑existent intrinsics [`68f873b`](https://github.com/ljharb/get-intrinsic/commit/68f873b013c732a05ad6f5fc54f697e55515461b) +- [Fix] Throw for non‑existent segments in the intrinsic path [`8325dee`](https://github.com/ljharb/get-intrinsic/commit/8325deee43128f3654d3399aa9591741ebe17b21) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-bigints`, `object-inspect` [`0c227a7`](https://github.com/ljharb/get-intrinsic/commit/0c227a7d8b629166f25715fd242553892e458525) +- [meta] do not lint coverage output [`70d2419`](https://github.com/ljharb/get-intrinsic/commit/70d24199b620043cd9110fc5f426d214ebe21dc9) + +## [v1.0.1](https://github.com/ljharb/get-intrinsic/compare/v1.0.0...v1.0.1) - 2020-10-30 + +### Commits + +- [Tests] gather coverage data on every job [`d1d280d`](https://github.com/ljharb/get-intrinsic/commit/d1d280dec714e3f0519cc877dbcb193057d9cac6) +- [Fix] add missing dependencies [`5031771`](https://github.com/ljharb/get-intrinsic/commit/5031771bb1095b38be88ce7c41d5de88718e432e) +- [Tests] use `es-value-fixtures` [`af48765`](https://github.com/ljharb/get-intrinsic/commit/af48765a23c5323fb0b6b38dbf00eb5099c7bebc) + +## v1.0.0 - 2020-10-29 + +### Commits + +- Implementation [`bbce57c`](https://github.com/ljharb/get-intrinsic/commit/bbce57c6f33d05b2d8d3efa273ceeb3ee01127bb) +- Tests [`17b4f0d`](https://github.com/ljharb/get-intrinsic/commit/17b4f0d56dea6b4059b56fc30ef3ee4d9500ebc2) +- Initial commit [`3153294`](https://github.com/ljharb/get-intrinsic/commit/31532948de363b0a27dd9fd4649e7b7028ec4b44) +- npm init [`fb326c4`](https://github.com/ljharb/get-intrinsic/commit/fb326c4d2817c8419ec31de1295f06bb268a7902) +- [meta] add Automatic Rebase and Require Allow Edits workflows [`48862fb`](https://github.com/ljharb/get-intrinsic/commit/48862fb2508c8f6a57968e6d08b7c883afc9d550) +- [meta] add `auto-changelog` [`5f28ad0`](https://github.com/ljharb/get-intrinsic/commit/5f28ad019e060a353d8028f9f2591a9cc93074a1) +- [meta] add "funding"; create `FUNDING.yml` [`c2bbdde`](https://github.com/ljharb/get-intrinsic/commit/c2bbddeba73a875be61484ee4680b129a6d4e0a1) +- [Tests] add `npm run lint` [`0a84b98`](https://github.com/ljharb/get-intrinsic/commit/0a84b98b22b7cf7a748666f705b0003a493c35fd) +- Only apps should have lockfiles [`9586c75`](https://github.com/ljharb/get-intrinsic/commit/9586c75866c1ee678e4d5d4dbbdef6997e511b05) diff --git a/bff/node_modules/get-intrinsic/LICENSE b/bff/node_modules/get-intrinsic/LICENSE new file mode 100644 index 0000000..48f05d0 --- /dev/null +++ b/bff/node_modules/get-intrinsic/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/get-intrinsic/README.md b/bff/node_modules/get-intrinsic/README.md new file mode 100644 index 0000000..3aa0bba --- /dev/null +++ b/bff/node_modules/get-intrinsic/README.md @@ -0,0 +1,71 @@ +# get-intrinsic [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Get and robustly cache all JS language-level intrinsics at first require time. + +See the syntax described [in the JS spec](https://tc39.es/ecma262/#sec-well-known-intrinsic-objects) for reference. + +## Example + +```js +var GetIntrinsic = require('get-intrinsic'); +var assert = require('assert'); + +// static methods +assert.equal(GetIntrinsic('%Math.pow%'), Math.pow); +assert.equal(Math.pow(2, 3), 8); +assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8); +delete Math.pow; +assert.equal(GetIntrinsic('%Math.pow%')(2, 3), 8); + +// instance methods +var arr = [1]; +assert.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push); +assert.deepEqual(arr, [1]); + +arr.push(2); +assert.deepEqual(arr, [1, 2]); + +GetIntrinsic('%Array.prototype.push%').call(arr, 3); +assert.deepEqual(arr, [1, 2, 3]); + +delete Array.prototype.push; +GetIntrinsic('%Array.prototype.push%').call(arr, 4); +assert.deepEqual(arr, [1, 2, 3, 4]); + +// missing features +delete JSON.parse; // to simulate a real intrinsic that is missing in the environment +assert.throws(() => GetIntrinsic('%JSON.parse%')); +assert.equal(undefined, GetIntrinsic('%JSON.parse%', true)); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/get-intrinsic +[npm-version-svg]: https://versionbadg.es/ljharb/get-intrinsic.svg +[deps-svg]: https://david-dm.org/ljharb/get-intrinsic.svg +[deps-url]: https://david-dm.org/ljharb/get-intrinsic +[dev-deps-svg]: https://david-dm.org/ljharb/get-intrinsic/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/get-intrinsic#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/get-intrinsic.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/get-intrinsic.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/get-intrinsic.svg +[downloads-url]: https://npm-stat.com/charts.html?package=get-intrinsic +[codecov-image]: https://codecov.io/gh/ljharb/get-intrinsic/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/get-intrinsic/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-intrinsic +[actions-url]: https://github.com/ljharb/get-intrinsic/actions diff --git a/bff/node_modules/get-intrinsic/index.js b/bff/node_modules/get-intrinsic/index.js new file mode 100644 index 0000000..bd1d94b --- /dev/null +++ b/bff/node_modules/get-intrinsic/index.js @@ -0,0 +1,378 @@ +'use strict'; + +var undefined; + +var $Object = require('es-object-atoms'); + +var $Error = require('es-errors'); +var $EvalError = require('es-errors/eval'); +var $RangeError = require('es-errors/range'); +var $ReferenceError = require('es-errors/ref'); +var $SyntaxError = require('es-errors/syntax'); +var $TypeError = require('es-errors/type'); +var $URIError = require('es-errors/uri'); + +var abs = require('math-intrinsics/abs'); +var floor = require('math-intrinsics/floor'); +var max = require('math-intrinsics/max'); +var min = require('math-intrinsics/min'); +var pow = require('math-intrinsics/pow'); +var round = require('math-intrinsics/round'); +var sign = require('math-intrinsics/sign'); + +var $Function = Function; + +// eslint-disable-next-line consistent-return +var getEvalledConstructor = function (expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); + } catch (e) {} +}; + +var $gOPD = require('gopd'); +var $defineProperty = require('es-define-property'); + +var throwTypeError = function () { + throw new $TypeError(); +}; +var ThrowTypeError = $gOPD + ? (function () { + try { + // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties + arguments.callee; // IE 8 does not throw here + return throwTypeError; + } catch (calleeThrows) { + try { + // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') + return $gOPD(arguments, 'callee').get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }()) + : throwTypeError; + +var hasSymbols = require('has-symbols')(); + +var getProto = require('get-proto'); +var $ObjectGPO = require('get-proto/Object.getPrototypeOf'); +var $ReflectGPO = require('get-proto/Reflect.getPrototypeOf'); + +var $apply = require('call-bind-apply-helpers/functionApply'); +var $call = require('call-bind-apply-helpers/functionCall'); + +var needsEval = {}; + +var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array); + +var INTRINSICS = { + __proto__: null, + '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, + '%Array%': Array, + '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, + '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined, + '%AsyncFromSyncIteratorPrototype%': undefined, + '%AsyncFunction%': needsEval, + '%AsyncGenerator%': needsEval, + '%AsyncGeneratorFunction%': needsEval, + '%AsyncIteratorPrototype%': needsEval, + '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, + '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, + '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array, + '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array, + '%Boolean%': Boolean, + '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, + '%Date%': Date, + '%decodeURI%': decodeURI, + '%decodeURIComponent%': decodeURIComponent, + '%encodeURI%': encodeURI, + '%encodeURIComponent%': encodeURIComponent, + '%Error%': $Error, + '%eval%': eval, // eslint-disable-line no-eval + '%EvalError%': $EvalError, + '%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array, + '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, + '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, + '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, + '%Function%': $Function, + '%GeneratorFunction%': needsEval, + '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, + '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, + '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, + '%isFinite%': isFinite, + '%isNaN%': isNaN, + '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined, + '%JSON%': typeof JSON === 'object' ? JSON : undefined, + '%Map%': typeof Map === 'undefined' ? undefined : Map, + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()), + '%Math%': Math, + '%Number%': Number, + '%Object%': $Object, + '%Object.getOwnPropertyDescriptor%': $gOPD, + '%parseFloat%': parseFloat, + '%parseInt%': parseInt, + '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, + '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, + '%RangeError%': $RangeError, + '%ReferenceError%': $ReferenceError, + '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, + '%RegExp%': RegExp, + '%Set%': typeof Set === 'undefined' ? undefined : Set, + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()), + '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, + '%String%': String, + '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined, + '%Symbol%': hasSymbols ? Symbol : undefined, + '%SyntaxError%': $SyntaxError, + '%ThrowTypeError%': ThrowTypeError, + '%TypedArray%': TypedArray, + '%TypeError%': $TypeError, + '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, + '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, + '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, + '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, + '%URIError%': $URIError, + '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, + '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet, + + '%Function.prototype.call%': $call, + '%Function.prototype.apply%': $apply, + '%Object.defineProperty%': $defineProperty, + '%Object.getPrototypeOf%': $ObjectGPO, + '%Math.abs%': abs, + '%Math.floor%': floor, + '%Math.max%': max, + '%Math.min%': min, + '%Math.pow%': pow, + '%Math.round%': round, + '%Math.sign%': sign, + '%Reflect.getPrototypeOf%': $ReflectGPO +}; + +if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } +} + +var doEval = function doEval(name) { + var value; + if (name === '%AsyncFunction%') { + value = getEvalledConstructor('async function () {}'); + } else if (name === '%GeneratorFunction%') { + value = getEvalledConstructor('function* () {}'); + } else if (name === '%AsyncGeneratorFunction%') { + value = getEvalledConstructor('async function* () {}'); + } else if (name === '%AsyncGenerator%') { + var fn = doEval('%AsyncGeneratorFunction%'); + if (fn) { + value = fn.prototype; + } + } else if (name === '%AsyncIteratorPrototype%') { + var gen = doEval('%AsyncGenerator%'); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + + INTRINSICS[name] = value; + + return value; +}; + +var LEGACY_ALIASES = { + __proto__: null, + '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], + '%ArrayPrototype%': ['Array', 'prototype'], + '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], + '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], + '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], + '%ArrayProto_values%': ['Array', 'prototype', 'values'], + '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], + '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], + '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], + '%BooleanPrototype%': ['Boolean', 'prototype'], + '%DataViewPrototype%': ['DataView', 'prototype'], + '%DatePrototype%': ['Date', 'prototype'], + '%ErrorPrototype%': ['Error', 'prototype'], + '%EvalErrorPrototype%': ['EvalError', 'prototype'], + '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], + '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], + '%FunctionPrototype%': ['Function', 'prototype'], + '%Generator%': ['GeneratorFunction', 'prototype'], + '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], + '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], + '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], + '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], + '%JSONParse%': ['JSON', 'parse'], + '%JSONStringify%': ['JSON', 'stringify'], + '%MapPrototype%': ['Map', 'prototype'], + '%NumberPrototype%': ['Number', 'prototype'], + '%ObjectPrototype%': ['Object', 'prototype'], + '%ObjProto_toString%': ['Object', 'prototype', 'toString'], + '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], + '%PromisePrototype%': ['Promise', 'prototype'], + '%PromiseProto_then%': ['Promise', 'prototype', 'then'], + '%Promise_all%': ['Promise', 'all'], + '%Promise_reject%': ['Promise', 'reject'], + '%Promise_resolve%': ['Promise', 'resolve'], + '%RangeErrorPrototype%': ['RangeError', 'prototype'], + '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], + '%RegExpPrototype%': ['RegExp', 'prototype'], + '%SetPrototype%': ['Set', 'prototype'], + '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], + '%StringPrototype%': ['String', 'prototype'], + '%SymbolPrototype%': ['Symbol', 'prototype'], + '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], + '%TypedArrayPrototype%': ['TypedArray', 'prototype'], + '%TypeErrorPrototype%': ['TypeError', 'prototype'], + '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], + '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], + '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], + '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], + '%URIErrorPrototype%': ['URIError', 'prototype'], + '%WeakMapPrototype%': ['WeakMap', 'prototype'], + '%WeakSetPrototype%': ['WeakSet', 'prototype'] +}; + +var bind = require('function-bind'); +var hasOwn = require('hasown'); +var $concat = bind.call($call, Array.prototype.concat); +var $spliceApply = bind.call($apply, Array.prototype.splice); +var $replace = bind.call($call, String.prototype.replace); +var $strSlice = bind.call($call, String.prototype.slice); +var $exec = bind.call($call, RegExp.prototype.exec); + +/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ +var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; +var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ +var stringToPath = function stringToPath(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === '%' && last !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); + } else if (last === '%' && first !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); + } + var result = []; + $replace(string, rePropName, function (match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; + }); + return result; +}; +/* end adaptation */ + +var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = '%' + alias[0] + '%'; + } + + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === 'undefined' && !allowMissing) { + throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); + } + + return { + alias: alias, + name: intrinsicName, + value: value + }; + } + + throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); +}; + +module.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== 'string' || name.length === 0) { + throw new $TypeError('intrinsic name must be a non-empty string'); + } + if (arguments.length > 1 && typeof allowMissing !== 'boolean') { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; + + var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ( + ( + (first === '"' || first === "'" || first === '`') + || (last === '"' || last === "'" || last === '`') + ) + && first !== last + ) { + throw new $SyntaxError('property names with quotes must have matching quotes'); + } + if (part === 'constructor' || !isOwn) { + skipFurtherCaching = true; + } + + intrinsicBaseName += '.' + part; + intrinsicRealName = '%' + intrinsicBaseName + '%'; + + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); + } + return void undefined; + } + if ($gOPD && (i + 1) >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + + // By convention, when a data property is converted to an accessor + // property to emulate a data property that does not suffer from + // the override mistake, that accessor's getter is marked with + // an `originalValue` property. Here, when we detect this, we + // uphold the illusion by pretending to see that original data + // property, i.e., returning the value rather than the getter + // itself. + if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; +}; diff --git a/bff/node_modules/get-intrinsic/package.json b/bff/node_modules/get-intrinsic/package.json new file mode 100644 index 0000000..2828e73 --- /dev/null +++ b/bff/node_modules/get-intrinsic/package.json @@ -0,0 +1,97 @@ +{ + "name": "get-intrinsic", + "version": "1.3.0", + "description": "Get and robustly cache all JS language-level intrinsics at first require time", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-intrinsic.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "intrinsic", + "getintrinsic", + "es-abstract" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-intrinsic/issues" + }, + "homepage": "https://github.com/ljharb/get-intrinsic#readme", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "auto-changelog": "^2.5.0", + "call-bound": "^1.0.3", + "encoding": "^0.1.13", + "es-abstract": "^1.23.9", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "make-async-function": "^1.0.0", + "make-async-generator-function": "^1.0.0", + "make-generator-function": "^2.0.0", + "mock-property": "^1.1.0", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "testling": { + "files": "test/GetIntrinsic.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/get-intrinsic/test/GetIntrinsic.js b/bff/node_modules/get-intrinsic/test/GetIntrinsic.js new file mode 100644 index 0000000..d9c0f30 --- /dev/null +++ b/bff/node_modules/get-intrinsic/test/GetIntrinsic.js @@ -0,0 +1,274 @@ +'use strict'; + +var GetIntrinsic = require('../'); + +var test = require('tape'); +var forEach = require('for-each'); +var debug = require('object-inspect'); +var generatorFns = require('make-generator-function')(); +var asyncFns = require('make-async-function').list(); +var asyncGenFns = require('make-async-generator-function')(); +var mockProperty = require('mock-property'); + +var callBound = require('call-bound'); +var v = require('es-value-fixtures'); +var $gOPD = require('gopd'); +var DefinePropertyOrThrow = require('es-abstract/2023/DefinePropertyOrThrow'); + +var $isProto = callBound('%Object.prototype.isPrototypeOf%'); + +test('export', function (t) { + t.equal(typeof GetIntrinsic, 'function', 'it is a function'); + t.equal(GetIntrinsic.length, 2, 'function has length of 2'); + + t.end(); +}); + +test('throws', function (t) { + t['throws']( + function () { GetIntrinsic('not an intrinsic'); }, + SyntaxError, + 'nonexistent intrinsic throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic(''); }, + TypeError, + 'empty string intrinsic throws a type error' + ); + + t['throws']( + function () { GetIntrinsic('.'); }, + SyntaxError, + '"just a dot" intrinsic throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic('%String'); }, + SyntaxError, + 'Leading % without trailing % throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic('String%'); }, + SyntaxError, + 'Trailing % without leading % throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic("String['prototype]"); }, + SyntaxError, + 'Dynamic property access is disallowed for intrinsics (unterminated string)' + ); + + t['throws']( + function () { GetIntrinsic('%Proxy.prototype.undefined%'); }, + TypeError, + "Throws when middle part doesn't exist (%Proxy.prototype.undefined%)" + ); + + t['throws']( + function () { GetIntrinsic('%Array.prototype%garbage%'); }, + SyntaxError, + 'Throws with extra percent signs' + ); + + t['throws']( + function () { GetIntrinsic('%Array.prototype%push%'); }, + SyntaxError, + 'Throws with extra percent signs, even on an existing intrinsic' + ); + + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { GetIntrinsic(nonString); }, + TypeError, + debug(nonString) + ' is not a String' + ); + }); + + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { GetIntrinsic('%', nonBoolean); }, + TypeError, + debug(nonBoolean) + ' is not a Boolean' + ); + }); + + forEach([ + 'toString', + 'propertyIsEnumerable', + 'hasOwnProperty' + ], function (objectProtoMember) { + t['throws']( + function () { GetIntrinsic(objectProtoMember); }, + SyntaxError, + debug(objectProtoMember) + ' is not an intrinsic' + ); + }); + + t.end(); +}); + +test('base intrinsics', function (t) { + t.equal(GetIntrinsic('%Object%'), Object, '%Object% yields Object'); + t.equal(GetIntrinsic('Object'), Object, 'Object yields Object'); + t.equal(GetIntrinsic('%Array%'), Array, '%Array% yields Array'); + t.equal(GetIntrinsic('Array'), Array, 'Array yields Array'); + + t.end(); +}); + +test('dotted paths', function (t) { + t.equal(GetIntrinsic('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% yields Object.prototype.toString'); + t.equal(GetIntrinsic('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString yields Object.prototype.toString'); + t.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push, '%Array.prototype.push% yields Array.prototype.push'); + t.equal(GetIntrinsic('Array.prototype.push'), Array.prototype.push, 'Array.prototype.push yields Array.prototype.push'); + + test('underscore paths are aliases for dotted paths', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) { + var original = GetIntrinsic('%ObjProto_toString%'); + + forEach([ + '%Object.prototype.toString%', + 'Object.prototype.toString', + '%ObjectPrototype.toString%', + 'ObjectPrototype.toString', + '%ObjProto_toString%', + 'ObjProto_toString' + ], function (name) { + DefinePropertyOrThrow(Object.prototype, 'toString', { + '[[Value]]': function toString() { + return original.apply(this, arguments); + } + }); + st.equal(GetIntrinsic(name), original, name + ' yields original Object.prototype.toString'); + }); + + DefinePropertyOrThrow(Object.prototype, 'toString', { '[[Value]]': original }); + st.end(); + }); + + test('dotted paths cache', { skip: !Object.isFrozen || Object.isFrozen(Object.prototype) }, function (st) { + var original = GetIntrinsic('%Object.prototype.propertyIsEnumerable%'); + + forEach([ + '%Object.prototype.propertyIsEnumerable%', + 'Object.prototype.propertyIsEnumerable', + '%ObjectPrototype.propertyIsEnumerable%', + 'ObjectPrototype.propertyIsEnumerable' + ], function (name) { + var restore = mockProperty(Object.prototype, 'propertyIsEnumerable', { + value: function propertyIsEnumerable() { + return original.apply(this, arguments); + } + }); + st.equal(GetIntrinsic(name), original, name + ' yields cached Object.prototype.propertyIsEnumerable'); + + restore(); + }); + + st.end(); + }); + + test('dotted path reports correct error', function (st) { + st['throws'](function () { + GetIntrinsic('%NonExistentIntrinsic.prototype.property%'); + }, /%NonExistentIntrinsic%/, 'The base intrinsic of %NonExistentIntrinsic.prototype.property% is %NonExistentIntrinsic%'); + + st['throws'](function () { + GetIntrinsic('%NonExistentIntrinsicPrototype.property%'); + }, /%NonExistentIntrinsicPrototype%/, 'The base intrinsic of %NonExistentIntrinsicPrototype.property% is %NonExistentIntrinsicPrototype%'); + + st.end(); + }); + + t.end(); +}); + +test('accessors', { skip: !$gOPD || typeof Map !== 'function' }, function (t) { + var actual = $gOPD(Map.prototype, 'size'); + t.ok(actual, 'Map.prototype.size has a descriptor'); + t.equal(typeof actual.get, 'function', 'Map.prototype.size has a getter function'); + t.equal(GetIntrinsic('%Map.prototype.size%'), actual.get, '%Map.prototype.size% yields the getter for it'); + t.equal(GetIntrinsic('Map.prototype.size'), actual.get, 'Map.prototype.size yields the getter for it'); + + t.end(); +}); + +test('generator functions', { skip: !generatorFns.length }, function (t) { + var $GeneratorFunction = GetIntrinsic('%GeneratorFunction%'); + var $GeneratorFunctionPrototype = GetIntrinsic('%Generator%'); + var $GeneratorPrototype = GetIntrinsic('%GeneratorPrototype%'); + + forEach(generatorFns, function (genFn) { + var fnName = genFn.name; + fnName = fnName ? "'" + fnName + "'" : 'genFn'; + + t.ok(genFn instanceof $GeneratorFunction, fnName + ' instanceof %GeneratorFunction%'); + t.ok($isProto($GeneratorFunctionPrototype, genFn), '%Generator% is prototype of ' + fnName); + t.ok($isProto($GeneratorPrototype, genFn.prototype), '%GeneratorPrototype% is prototype of ' + fnName + '.prototype'); + }); + + t.end(); +}); + +test('async functions', { skip: !asyncFns.length }, function (t) { + var $AsyncFunction = GetIntrinsic('%AsyncFunction%'); + var $AsyncFunctionPrototype = GetIntrinsic('%AsyncFunctionPrototype%'); + + forEach(asyncFns, function (asyncFn) { + var fnName = asyncFn.name; + fnName = fnName ? "'" + fnName + "'" : 'asyncFn'; + + t.ok(asyncFn instanceof $AsyncFunction, fnName + ' instanceof %AsyncFunction%'); + t.ok($isProto($AsyncFunctionPrototype, asyncFn), '%AsyncFunctionPrototype% is prototype of ' + fnName); + }); + + t.end(); +}); + +test('async generator functions', { skip: asyncGenFns.length === 0 }, function (t) { + var $AsyncGeneratorFunction = GetIntrinsic('%AsyncGeneratorFunction%'); + var $AsyncGeneratorFunctionPrototype = GetIntrinsic('%AsyncGenerator%'); + var $AsyncGeneratorPrototype = GetIntrinsic('%AsyncGeneratorPrototype%'); + + forEach(asyncGenFns, function (asyncGenFn) { + var fnName = asyncGenFn.name; + fnName = fnName ? "'" + fnName + "'" : 'asyncGenFn'; + + t.ok(asyncGenFn instanceof $AsyncGeneratorFunction, fnName + ' instanceof %AsyncGeneratorFunction%'); + t.ok($isProto($AsyncGeneratorFunctionPrototype, asyncGenFn), '%AsyncGenerator% is prototype of ' + fnName); + t.ok($isProto($AsyncGeneratorPrototype, asyncGenFn.prototype), '%AsyncGeneratorPrototype% is prototype of ' + fnName + '.prototype'); + }); + + t.end(); +}); + +test('%ThrowTypeError%', function (t) { + var $ThrowTypeError = GetIntrinsic('%ThrowTypeError%'); + + t.equal(typeof $ThrowTypeError, 'function', 'is a function'); + t['throws']( + $ThrowTypeError, + TypeError, + '%ThrowTypeError% throws a TypeError' + ); + + t.end(); +}); + +test('allowMissing', { skip: asyncGenFns.length > 0 }, function (t) { + t['throws']( + function () { GetIntrinsic('%AsyncGeneratorPrototype%'); }, + TypeError, + 'throws when missing' + ); + + t.equal( + GetIntrinsic('%AsyncGeneratorPrototype%', true), + undefined, + 'does not throw when allowMissing' + ); + + t.end(); +}); diff --git a/bff/node_modules/get-proto/.eslintrc b/bff/node_modules/get-proto/.eslintrc new file mode 100644 index 0000000..1d21a8a --- /dev/null +++ b/bff/node_modules/get-proto/.eslintrc @@ -0,0 +1,10 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "id-length": "off", + "sort-keys": "off", + }, +} diff --git a/bff/node_modules/get-proto/.github/FUNDING.yml b/bff/node_modules/get-proto/.github/FUNDING.yml new file mode 100644 index 0000000..93183ef --- /dev/null +++ b/bff/node_modules/get-proto/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/get-proto +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/get-proto/.nycrc b/bff/node_modules/get-proto/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/bff/node_modules/get-proto/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/get-proto/CHANGELOG.md b/bff/node_modules/get-proto/CHANGELOG.md new file mode 100644 index 0000000..5860229 --- /dev/null +++ b/bff/node_modules/get-proto/CHANGELOG.md @@ -0,0 +1,21 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/get-proto/compare/v1.0.0...v1.0.1) - 2025-01-02 + +### Commits + +- [Fix] for the `Object.getPrototypeOf` window, throw for non-objects [`7fe6508`](https://github.com/ljharb/get-proto/commit/7fe6508b71419ebe1976bedb86001d1feaeaa49a) + +## v1.0.0 - 2025-01-01 + +### Commits + +- Initial implementation, tests, readme, types [`5c70775`](https://github.com/ljharb/get-proto/commit/5c707751e81c3deeb2cf980d185fc7fd43611415) +- Initial commit [`7c65c2a`](https://github.com/ljharb/get-proto/commit/7c65c2ad4e33d5dae2f219ebe1a046ae2256972c) +- npm init [`0b8cf82`](https://github.com/ljharb/get-proto/commit/0b8cf824c9634e4a34ef7dd2a2cdc5be6ac79518) +- Only apps should have lockfiles [`a6d1bff`](https://github.com/ljharb/get-proto/commit/a6d1bffc364f5828377cea7194558b2dbef7aea2) diff --git a/bff/node_modules/get-proto/LICENSE b/bff/node_modules/get-proto/LICENSE new file mode 100644 index 0000000..eeabd1c --- /dev/null +++ b/bff/node_modules/get-proto/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/get-proto/Object.getPrototypeOf.d.ts b/bff/node_modules/get-proto/Object.getPrototypeOf.d.ts new file mode 100644 index 0000000..028b3ff --- /dev/null +++ b/bff/node_modules/get-proto/Object.getPrototypeOf.d.ts @@ -0,0 +1,5 @@ +declare function getProto(object: O): object | null; + +declare const x: typeof getProto | null; + +export = x; \ No newline at end of file diff --git a/bff/node_modules/get-proto/Object.getPrototypeOf.js b/bff/node_modules/get-proto/Object.getPrototypeOf.js new file mode 100644 index 0000000..c2cbbdf --- /dev/null +++ b/bff/node_modules/get-proto/Object.getPrototypeOf.js @@ -0,0 +1,6 @@ +'use strict'; + +var $Object = require('es-object-atoms'); + +/** @type {import('./Object.getPrototypeOf')} */ +module.exports = $Object.getPrototypeOf || null; diff --git a/bff/node_modules/get-proto/README.md b/bff/node_modules/get-proto/README.md new file mode 100644 index 0000000..f8b4cce --- /dev/null +++ b/bff/node_modules/get-proto/README.md @@ -0,0 +1,50 @@ +# get-proto [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Robustly get the [[Prototype]] of an object. Uses the best available method. + +## Getting started + +```sh +npm install --save get-proto +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getProto = require('get-proto'); + +const a = { a: 1, b: 2, [Symbol.toStringTag]: 'foo' }; +const b = { c: 3, __proto__: a }; + +assert.equal(getProto(b), a); +assert.equal(getProto(a), Object.prototype); +assert.equal(getProto({ __proto__: null }), null); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/get-proto +[npm-version-svg]: https://versionbadg.es/ljharb/get-proto.svg +[deps-svg]: https://david-dm.org/ljharb/get-proto.svg +[deps-url]: https://david-dm.org/ljharb/get-proto +[dev-deps-svg]: https://david-dm.org/ljharb/get-proto/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/get-proto#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/get-proto.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/get-proto.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/get-proto.svg +[downloads-url]: https://npm-stat.com/charts.html?package=get-proto +[codecov-image]: https://codecov.io/gh/ljharb/get-proto/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/get-proto/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/get-proto +[actions-url]: https://github.com/ljharb/get-proto/actions diff --git a/bff/node_modules/get-proto/Reflect.getPrototypeOf.d.ts b/bff/node_modules/get-proto/Reflect.getPrototypeOf.d.ts new file mode 100644 index 0000000..2388fe0 --- /dev/null +++ b/bff/node_modules/get-proto/Reflect.getPrototypeOf.d.ts @@ -0,0 +1,3 @@ +declare const x: typeof Reflect.getPrototypeOf | null; + +export = x; \ No newline at end of file diff --git a/bff/node_modules/get-proto/Reflect.getPrototypeOf.js b/bff/node_modules/get-proto/Reflect.getPrototypeOf.js new file mode 100644 index 0000000..e6c51be --- /dev/null +++ b/bff/node_modules/get-proto/Reflect.getPrototypeOf.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./Reflect.getPrototypeOf')} */ +module.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null; diff --git a/bff/node_modules/get-proto/index.d.ts b/bff/node_modules/get-proto/index.d.ts new file mode 100644 index 0000000..2c021f3 --- /dev/null +++ b/bff/node_modules/get-proto/index.d.ts @@ -0,0 +1,5 @@ +declare function getProto(object: O): object | null; + +declare const x: typeof getProto | null; + +export = x; diff --git a/bff/node_modules/get-proto/index.js b/bff/node_modules/get-proto/index.js new file mode 100644 index 0000000..7e5747b --- /dev/null +++ b/bff/node_modules/get-proto/index.js @@ -0,0 +1,27 @@ +'use strict'; + +var reflectGetProto = require('./Reflect.getPrototypeOf'); +var originalGetProto = require('./Object.getPrototypeOf'); + +var getDunderProto = require('dunder-proto/get'); + +/** @type {import('.')} */ +module.exports = reflectGetProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return reflectGetProto(O); + } + : originalGetProto + ? function getProto(O) { + if (!O || (typeof O !== 'object' && typeof O !== 'function')) { + throw new TypeError('getProto: not an object'); + } + // @ts-expect-error TS can't narrow inside a closure, for some reason + return originalGetProto(O); + } + : getDunderProto + ? function getProto(O) { + // @ts-expect-error TS can't narrow inside a closure, for some reason + return getDunderProto(O); + } + : null; diff --git a/bff/node_modules/get-proto/package.json b/bff/node_modules/get-proto/package.json new file mode 100644 index 0000000..9c35cec --- /dev/null +++ b/bff/node_modules/get-proto/package.json @@ -0,0 +1,81 @@ +{ + "name": "get-proto", + "version": "1.0.1", + "description": "Robustly get the [[Prototype]] of an object", + "main": "index.js", + "exports": { + ".": "./index.js", + "./Reflect.getPrototypeOf": "./Reflect.getPrototypeOf.js", + "./Object.getPrototypeOf": "./Object.getPrototypeOf.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "npx npm@\">=10.2\" audit --production", + "tests-only": "nyc tape 'test/**/*.js'", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-proto.git" + }, + "keywords": [ + "get", + "proto", + "prototype", + "getPrototypeOf", + "[[Prototype]]" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-proto/issues" + }, + "homepage": "https://github.com/ljharb/get-proto#readme", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.2", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.3", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "testling": { + "files": "test/index.js" + } +} diff --git a/bff/node_modules/get-proto/test/index.js b/bff/node_modules/get-proto/test/index.js new file mode 100644 index 0000000..5a2ece2 --- /dev/null +++ b/bff/node_modules/get-proto/test/index.js @@ -0,0 +1,68 @@ +'use strict'; + +var test = require('tape'); + +var getProto = require('../'); + +test('getProto', function (t) { + t.equal(typeof getProto, 'function', 'is a function'); + + t.test('can get', { skip: !getProto }, function (st) { + if (getProto) { // TS doesn't understand tape's skip + var proto = { b: 2 }; + st.equal(getProto(proto), Object.prototype, 'proto: returns the [[Prototype]]'); + + st.test('nullish value', function (s2t) { + // @ts-expect-error + s2t['throws'](function () { return getProto(undefined); }, TypeError, 'undefined is not an object'); + // @ts-expect-error + s2t['throws'](function () { return getProto(null); }, TypeError, 'null is not an object'); + s2t.end(); + }); + + // @ts-expect-error + st['throws'](function () { getProto(true); }, 'throws for true'); + // @ts-expect-error + st['throws'](function () { getProto(false); }, 'throws for false'); + // @ts-expect-error + st['throws'](function () { getProto(42); }, 'throws for 42'); + // @ts-expect-error + st['throws'](function () { getProto(NaN); }, 'throws for NaN'); + // @ts-expect-error + st['throws'](function () { getProto(0); }, 'throws for +0'); + // @ts-expect-error + st['throws'](function () { getProto(-0); }, 'throws for -0'); + // @ts-expect-error + st['throws'](function () { getProto(Infinity); }, 'throws for ∞'); + // @ts-expect-error + st['throws'](function () { getProto(-Infinity); }, 'throws for -∞'); + // @ts-expect-error + st['throws'](function () { getProto(''); }, 'throws for empty string'); + // @ts-expect-error + st['throws'](function () { getProto('foo'); }, 'throws for non-empty string'); + st.equal(getProto(/a/g), RegExp.prototype); + st.equal(getProto(new Date()), Date.prototype); + st.equal(getProto(function () {}), Function.prototype); + st.equal(getProto([]), Array.prototype); + st.equal(getProto({}), Object.prototype); + + var nullObject = { __proto__: null }; + if ('toString' in nullObject) { + st.comment('no null objects in this engine'); + st.equal(getProto(nullObject), Object.prototype, '"null" object has Object.prototype as [[Prototype]]'); + } else { + st.equal(getProto(nullObject), null, 'null object has null [[Prototype]]'); + } + } + + st.end(); + }); + + t.test('can not get', { skip: !!getProto }, function (st) { + st.equal(getProto, null); + + st.end(); + }); + + t.end(); +}); diff --git a/bff/node_modules/get-proto/tsconfig.json b/bff/node_modules/get-proto/tsconfig.json new file mode 100644 index 0000000..60fb90e --- /dev/null +++ b/bff/node_modules/get-proto/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + //"target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/gopd/.eslintrc b/bff/node_modules/gopd/.eslintrc new file mode 100644 index 0000000..e2550c0 --- /dev/null +++ b/bff/node_modules/gopd/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "func-style": [2, "declaration"], + "id-length": 0, + "multiline-comment-style": 0, + "new-cap": [2, { + "capIsNewExceptions": [ + "GetIntrinsic", + ], + }], + }, +} diff --git a/bff/node_modules/gopd/.github/FUNDING.yml b/bff/node_modules/gopd/.github/FUNDING.yml new file mode 100644 index 0000000..94a44a8 --- /dev/null +++ b/bff/node_modules/gopd/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/gopd +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/gopd/CHANGELOG.md b/bff/node_modules/gopd/CHANGELOG.md new file mode 100644 index 0000000..87f5727 --- /dev/null +++ b/bff/node_modules/gopd/CHANGELOG.md @@ -0,0 +1,45 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.2.0](https://github.com/ljharb/gopd/compare/v1.1.0...v1.2.0) - 2024-12-03 + +### Commits + +- [New] add `gOPD` entry point; remove `get-intrinsic` [`5b61232`](https://github.com/ljharb/gopd/commit/5b61232dedea4591a314bcf16101b1961cee024e) + +## [v1.1.0](https://github.com/ljharb/gopd/compare/v1.0.1...v1.1.0) - 2024-11-29 + +### Commits + +- [New] add types [`f585e39`](https://github.com/ljharb/gopd/commit/f585e397886d270e4ba84e53d226e4f9ca2eb0e6) +- [Dev Deps] update `@ljharb/eslint-config`, `auto-changelog`, `tape` [`0b8e4fd`](https://github.com/ljharb/gopd/commit/0b8e4fded64397a7726a9daa144a6cc9a5e2edfa) +- [Dev Deps] update `aud`, `npmignore`, `tape` [`48378b2`](https://github.com/ljharb/gopd/commit/48378b2443f09a4f7efbd0fb6c3ee845a6cabcf3) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`78099ee`](https://github.com/ljharb/gopd/commit/78099eeed41bfdc134c912280483689cc8861c31) +- [Tests] replace `aud` with `npm audit` [`4e0d0ac`](https://github.com/ljharb/gopd/commit/4e0d0ac47619d24a75318a8e1f543ee04b2a2632) +- [meta] add missing `engines.node` [`1443316`](https://github.com/ljharb/gopd/commit/14433165d07835c680155b3dfd62d9217d735eca) +- [Deps] update `get-intrinsic` [`eee5f51`](https://github.com/ljharb/gopd/commit/eee5f51769f3dbaf578b70e2a3199116b01aa670) +- [Deps] update `get-intrinsic` [`550c378`](https://github.com/ljharb/gopd/commit/550c3780e3a9c77b62565712a001b4ed64ea61f5) +- [Dev Deps] add missing peer dep [`8c2ecf8`](https://github.com/ljharb/gopd/commit/8c2ecf848122e4e30abfc5b5086fb48b390dce75) + +## [v1.0.1](https://github.com/ljharb/gopd/compare/v1.0.0...v1.0.1) - 2022-11-01 + +### Commits + +- [Fix] actually export gOPD instead of dP [`4b624bf`](https://github.com/ljharb/gopd/commit/4b624bfbeff788c5e3ff16d9443a83627847234f) + +## v1.0.0 - 2022-11-01 + +### Commits + +- Initial implementation, tests, readme [`0911e01`](https://github.com/ljharb/gopd/commit/0911e012cd642092bd88b732c161c58bf4f20bea) +- Initial commit [`b84e33f`](https://github.com/ljharb/gopd/commit/b84e33f5808a805ac57ff88d4247ad935569acbe) +- [actions] add reusable workflows [`12ae28a`](https://github.com/ljharb/gopd/commit/12ae28ae5f50f86e750215b6e2188901646d0119) +- npm init [`280118b`](https://github.com/ljharb/gopd/commit/280118badb45c80b4483836b5cb5315bddf6e582) +- [meta] add `auto-changelog` [`bb78de5`](https://github.com/ljharb/gopd/commit/bb78de5639a180747fb290c28912beaaf1615709) +- [meta] create FUNDING.yml; add `funding` in package.json [`11c22e6`](https://github.com/ljharb/gopd/commit/11c22e6355bb01f24e7fac4c9bb3055eb5b25002) +- [meta] use `npmignore` to autogenerate an npmignore file [`4f4537a`](https://github.com/ljharb/gopd/commit/4f4537a843b39f698c52f072845092e6fca345bb) +- Only apps should have lockfiles [`c567022`](https://github.com/ljharb/gopd/commit/c567022a18573aa7951cf5399445d9840e23e98b) diff --git a/bff/node_modules/gopd/LICENSE b/bff/node_modules/gopd/LICENSE new file mode 100644 index 0000000..6abfe14 --- /dev/null +++ b/bff/node_modules/gopd/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/gopd/README.md b/bff/node_modules/gopd/README.md new file mode 100644 index 0000000..784e56a --- /dev/null +++ b/bff/node_modules/gopd/README.md @@ -0,0 +1,40 @@ +# gopd [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation. + +## Usage + +```javascript +var gOPD = require('gopd'); +var assert = require('assert'); + +if (gOPD) { + assert.equal(typeof gOPD, 'function', 'descriptors supported'); + // use gOPD like Object.getOwnPropertyDescriptor here +} else { + assert.ok(!gOPD, 'descriptors not supported'); +} +``` + +[package-url]: https://npmjs.org/package/gopd +[npm-version-svg]: https://versionbadg.es/ljharb/gopd.svg +[deps-svg]: https://david-dm.org/ljharb/gopd.svg +[deps-url]: https://david-dm.org/ljharb/gopd +[dev-deps-svg]: https://david-dm.org/ljharb/gopd/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/gopd#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/gopd.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/gopd.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/gopd.svg +[downloads-url]: https://npm-stat.com/charts.html?package=gopd +[codecov-image]: https://codecov.io/gh/ljharb/gopd/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/gopd/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/gopd +[actions-url]: https://github.com/ljharb/gopd/actions diff --git a/bff/node_modules/gopd/gOPD.d.ts b/bff/node_modules/gopd/gOPD.d.ts new file mode 100644 index 0000000..def48a3 --- /dev/null +++ b/bff/node_modules/gopd/gOPD.d.ts @@ -0,0 +1 @@ +export = Object.getOwnPropertyDescriptor; diff --git a/bff/node_modules/gopd/gOPD.js b/bff/node_modules/gopd/gOPD.js new file mode 100644 index 0000000..cf9616c --- /dev/null +++ b/bff/node_modules/gopd/gOPD.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./gOPD')} */ +module.exports = Object.getOwnPropertyDescriptor; diff --git a/bff/node_modules/gopd/index.d.ts b/bff/node_modules/gopd/index.d.ts new file mode 100644 index 0000000..e228065 --- /dev/null +++ b/bff/node_modules/gopd/index.d.ts @@ -0,0 +1,5 @@ +declare function gOPD(obj: O, prop: K): PropertyDescriptor | undefined; + +declare const fn: typeof gOPD | undefined | null; + +export = fn; \ No newline at end of file diff --git a/bff/node_modules/gopd/index.js b/bff/node_modules/gopd/index.js new file mode 100644 index 0000000..a4081b0 --- /dev/null +++ b/bff/node_modules/gopd/index.js @@ -0,0 +1,15 @@ +'use strict'; + +/** @type {import('.')} */ +var $gOPD = require('./gOPD'); + +if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } +} + +module.exports = $gOPD; diff --git a/bff/node_modules/gopd/package.json b/bff/node_modules/gopd/package.json new file mode 100644 index 0000000..01c5ffa --- /dev/null +++ b/bff/node_modules/gopd/package.json @@ -0,0 +1,77 @@ +{ + "name": "gopd", + "version": "1.2.0", + "description": "`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./gOPD": "./gOPD.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "tsc -p . && attw -P", + "lint": "eslint --ext=js,mjs .", + "postlint": "evalmd README.md", + "pretest": "npm run lint", + "tests-only": "tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/gopd.git" + }, + "keywords": [ + "ecmascript", + "javascript", + "getownpropertydescriptor", + "property", + "descriptor" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/gopd/issues" + }, + "homepage": "https://github.com/ljharb/gopd#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/gopd/test/index.js b/bff/node_modules/gopd/test/index.js new file mode 100644 index 0000000..6f43453 --- /dev/null +++ b/bff/node_modules/gopd/test/index.js @@ -0,0 +1,36 @@ +'use strict'; + +var test = require('tape'); +var gOPD = require('../'); + +test('gOPD', function (t) { + t.test('supported', { skip: !gOPD }, function (st) { + st.equal(typeof gOPD, 'function', 'is a function'); + + var obj = { x: 1 }; + st.ok('x' in obj, 'property exists'); + + // @ts-expect-error TS can't figure out narrowing from `skip` + var desc = gOPD(obj, 'x'); + st.deepEqual( + desc, + { + configurable: true, + enumerable: true, + value: 1, + writable: true + }, + 'descriptor is as expected' + ); + + st.end(); + }); + + t.test('not supported', { skip: !!gOPD }, function (st) { + st.notOk(gOPD, 'is falsy'); + + st.end(); + }); + + t.end(); +}); diff --git a/bff/node_modules/gopd/tsconfig.json b/bff/node_modules/gopd/tsconfig.json new file mode 100644 index 0000000..d9a6668 --- /dev/null +++ b/bff/node_modules/gopd/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/has-symbols/.eslintrc b/bff/node_modules/has-symbols/.eslintrc new file mode 100644 index 0000000..2d9a66a --- /dev/null +++ b/bff/node_modules/has-symbols/.eslintrc @@ -0,0 +1,11 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "max-statements-per-line": [2, { "max": 2 }], + "no-magic-numbers": 0, + "multiline-comment-style": 0, + } +} diff --git a/bff/node_modules/has-symbols/.github/FUNDING.yml b/bff/node_modules/has-symbols/.github/FUNDING.yml new file mode 100644 index 0000000..04cf87e --- /dev/null +++ b/bff/node_modules/has-symbols/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/has-symbols +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/has-symbols/.nycrc b/bff/node_modules/has-symbols/.nycrc new file mode 100644 index 0000000..bdd626c --- /dev/null +++ b/bff/node_modules/has-symbols/.nycrc @@ -0,0 +1,9 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/has-symbols/CHANGELOG.md b/bff/node_modules/has-symbols/CHANGELOG.md new file mode 100644 index 0000000..cc3cf83 --- /dev/null +++ b/bff/node_modules/has-symbols/CHANGELOG.md @@ -0,0 +1,91 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.0](https://github.com/inspect-js/has-symbols/compare/v1.0.3...v1.1.0) - 2024-12-02 + +### Commits + +- [actions] update workflows [`548c0bf`](https://github.com/inspect-js/has-symbols/commit/548c0bf8c9b1235458df7a1c0490b0064647a282) +- [actions] further shard; update action deps [`bec56bb`](https://github.com/inspect-js/has-symbols/commit/bec56bb0fb44b43a786686b944875a3175cf3ff3) +- [meta] use `npmignore` to autogenerate an npmignore file [`ac81032`](https://github.com/inspect-js/has-symbols/commit/ac81032809157e0a079e5264e9ce9b6f1275777e) +- [New] add types [`6469cbf`](https://github.com/inspect-js/has-symbols/commit/6469cbff1866cfe367b2b3d181d9296ec14b2a3d) +- [actions] update rebase action to use reusable workflow [`9c9d4d0`](https://github.com/inspect-js/has-symbols/commit/9c9d4d0d8938e4b267acdf8e421f4e92d1716d72) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`adb5887`](https://github.com/inspect-js/has-symbols/commit/adb5887ca9444849b08beb5caaa9e1d42320cdfb) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`13ec198`](https://github.com/inspect-js/has-symbols/commit/13ec198ec80f1993a87710af1606a1970b22c7cb) +- [Dev Deps] update `auto-changelog`, `core-js`, `tape` [`941be52`](https://github.com/inspect-js/has-symbols/commit/941be5248387cab1da72509b22acf3fdb223f057) +- [Tests] replace `aud` with `npm audit` [`74f49e9`](https://github.com/inspect-js/has-symbols/commit/74f49e9a9d17a443020784234a1c53ce765b3559) +- [Dev Deps] update `npmignore` [`9c0ac04`](https://github.com/inspect-js/has-symbols/commit/9c0ac0452a834f4c2a4b54044f2d6a89f17e9a70) +- [Dev Deps] add missing peer dep [`52337a5`](https://github.com/inspect-js/has-symbols/commit/52337a5621cced61f846f2afdab7707a8132cc12) + +## [v1.0.3](https://github.com/inspect-js/has-symbols/compare/v1.0.2...v1.0.3) - 2022-03-01 + +### Commits + +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`518b28f`](https://github.com/inspect-js/has-symbols/commit/518b28f6c5a516cbccae30794e40aa9f738b1693) +- [meta] add `bugs` and `homepage` fields; reorder package.json [`c480b13`](https://github.com/inspect-js/has-symbols/commit/c480b13fd6802b557e1cef9749872cb5fdeef744) +- [actions] reuse common workflows [`01d0ee0`](https://github.com/inspect-js/has-symbols/commit/01d0ee0a8d97c0947f5edb73eb722027a77b2b07) +- [actions] update codecov uploader [`6424ebe`](https://github.com/inspect-js/has-symbols/commit/6424ebe86b2c9c7c3d2e9bd4413a4e4f168cb275) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`dfa7e7f`](https://github.com/inspect-js/has-symbols/commit/dfa7e7ff38b594645d8c8222aab895157fa7e282) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`0c8d436`](https://github.com/inspect-js/has-symbols/commit/0c8d43685c45189cea9018191d4fd7eca91c9d02) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`9026554`](https://github.com/inspect-js/has-symbols/commit/902655442a1bf88e72b42345494ef0c60f5d36ab) +- [readme] add actions and codecov badges [`eaa9682`](https://github.com/inspect-js/has-symbols/commit/eaa9682f990f481d3acf7a1c7600bec36f7b3adc) +- [Dev Deps] update `eslint`, `tape` [`bc7a3ba`](https://github.com/inspect-js/has-symbols/commit/bc7a3ba46f27b7743f8a2579732d59d1b9ac791e) +- [Dev Deps] update `eslint`, `auto-changelog` [`0ace00a`](https://github.com/inspect-js/has-symbols/commit/0ace00af08a88cdd1e6ce0d60357d941c60c2d9f) +- [meta] use `prepublishOnly` script for npm 7+ [`093f72b`](https://github.com/inspect-js/has-symbols/commit/093f72bc2b0ed00c781f444922a5034257bf561d) +- [Tests] test on all 16 minors [`9b80d3d`](https://github.com/inspect-js/has-symbols/commit/9b80d3d9102529f04c20ec5b1fcc6e38426c6b03) + +## [v1.0.2](https://github.com/inspect-js/has-symbols/compare/v1.0.1...v1.0.2) - 2021-02-27 + +### Fixed + +- [Fix] use a universal way to get the original Symbol [`#11`](https://github.com/inspect-js/has-symbols/issues/11) + +### Commits + +- [Tests] migrate tests to Github Actions [`90ae798`](https://github.com/inspect-js/has-symbols/commit/90ae79820bdfe7bc703d67f5f3c5e205f98556d3) +- [meta] do not publish github action workflow files [`29e60a1`](https://github.com/inspect-js/has-symbols/commit/29e60a1b7c25c7f1acf7acff4a9320d0d10c49b4) +- [Tests] run `nyc` on all tests [`8476b91`](https://github.com/inspect-js/has-symbols/commit/8476b915650d360915abe2522505abf4b0e8f0ae) +- [readme] fix repo URLs, remove defunct badges [`126288e`](https://github.com/inspect-js/has-symbols/commit/126288ecc1797c0a40247a6b78bcb2e0bc5d7036) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `core-js`, `get-own-property-symbols` [`d84bdfa`](https://github.com/inspect-js/has-symbols/commit/d84bdfa48ac5188abbb4904b42614cd6c030940a) +- [Tests] fix linting errors [`0df3070`](https://github.com/inspect-js/has-symbols/commit/0df3070b981b6c9f2ee530c09189a7f5c6def839) +- [actions] add "Allow Edits" workflow [`1e6bc29`](https://github.com/inspect-js/has-symbols/commit/1e6bc29b188f32b9648657b07eda08504be5aa9c) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`36cea2a`](https://github.com/inspect-js/has-symbols/commit/36cea2addd4e6ec435f35a2656b4e9ef82498e9b) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`1278338`](https://github.com/inspect-js/has-symbols/commit/127833801865fbc2cc8979beb9ca869c7bfe8222) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`1493254`](https://github.com/inspect-js/has-symbols/commit/1493254eda13db5fb8fc5e4a3e8324b3d196029d) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js` [`b090bf2`](https://github.com/inspect-js/has-symbols/commit/b090bf214d3679a30edc1e2d729d466ab5183e1d) +- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`4addb7a`](https://github.com/inspect-js/has-symbols/commit/4addb7ab4dc73f927ae99928d68817554fc21dc0) +- [Dev Deps] update `auto-changelog`, `tape` [`81d0baf`](https://github.com/inspect-js/has-symbols/commit/81d0baf3816096a89a8558e8043895f7a7d10d8b) +- [Dev Deps] update `auto-changelog`; add `aud` [`1a4e561`](https://github.com/inspect-js/has-symbols/commit/1a4e5612c25d91c3a03d509721d02630bc4fe3da) +- [readme] remove unused testling URLs [`3000941`](https://github.com/inspect-js/has-symbols/commit/3000941f958046e923ed8152edb1ef4a599e6fcc) +- [Tests] only audit prod deps [`692e974`](https://github.com/inspect-js/has-symbols/commit/692e9743c912410e9440207631a643a34b4741a1) +- [Dev Deps] update `@ljharb/eslint-config` [`51c946c`](https://github.com/inspect-js/has-symbols/commit/51c946c7f6baa793ec5390bb5a45cdce16b4ba76) + +## [v1.0.1](https://github.com/inspect-js/has-symbols/compare/v1.0.0...v1.0.1) - 2019-11-16 + +### Commits + +- [Tests] use shared travis-ci configs [`ce396c9`](https://github.com/inspect-js/has-symbols/commit/ce396c9419ff11c43d0da5d05cdbb79f7fb42229) +- [Tests] up to `node` `v12.4`, `v11.15`, `v10.15`, `v9.11`, `v8.15`, `v7.10`, `v6.17`, `v4.9`; use `nvm install-latest-npm` [`0690732`](https://github.com/inspect-js/has-symbols/commit/0690732801f47ab429f39ba1962f522d5c462d6b) +- [meta] add `auto-changelog` [`2163d0b`](https://github.com/inspect-js/has-symbols/commit/2163d0b7f36343076b8f947cd1667dd1750f26fc) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `safe-publish-latest`, `tape` [`8e0951f`](https://github.com/inspect-js/has-symbols/commit/8e0951f1a7a2e52068222b7bb73511761e6e4d9c) +- [actions] add automatic rebasing / merge commit blocking [`b09cdb7`](https://github.com/inspect-js/has-symbols/commit/b09cdb7cd7ee39e7a769878f56e2d6066f5ccd1d) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `core-js`, `get-own-property-symbols`, `tape` [`1dd42cd`](https://github.com/inspect-js/has-symbols/commit/1dd42cd86183ed0c50f99b1062345c458babca91) +- [meta] create FUNDING.yml [`aa57a17`](https://github.com/inspect-js/has-symbols/commit/aa57a17b19708906d1927f821ea8e73394d84ca4) +- Only apps should have lockfiles [`a2d8bea`](https://github.com/inspect-js/has-symbols/commit/a2d8bea23a97d15c09eaf60f5b107fcf9a4d57aa) +- [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops [`9e96cb7`](https://github.com/inspect-js/has-symbols/commit/9e96cb783746cbed0c10ef78e599a8eaa7ebe193) +- [meta] add `funding` field [`a0b32cf`](https://github.com/inspect-js/has-symbols/commit/a0b32cf68e803f963c1639b6d47b0a9d6440bab0) +- [Dev Deps] update `safe-publish-latest` [`cb9f0a5`](https://github.com/inspect-js/has-symbols/commit/cb9f0a521a3a1790f1064d437edd33bb6c3d6af0) + +## v1.0.0 - 2016-09-19 + +### Commits + +- Tests. [`ecb6eb9`](https://github.com/inspect-js/has-symbols/commit/ecb6eb934e4883137f3f93b965ba5e0a98df430d) +- package.json [`88a337c`](https://github.com/inspect-js/has-symbols/commit/88a337cee0864a0da35f5d19e69ff0ef0150e46a) +- Initial commit [`42e1e55`](https://github.com/inspect-js/has-symbols/commit/42e1e5502536a2b8ac529c9443984acd14836b1c) +- Initial implementation. [`33f5cc6`](https://github.com/inspect-js/has-symbols/commit/33f5cc6cdff86e2194b081ee842bfdc63caf43fb) +- read me [`01f1170`](https://github.com/inspect-js/has-symbols/commit/01f1170188ff7cb1558aa297f6ba5b516c6d7b0c) diff --git a/bff/node_modules/has-symbols/LICENSE b/bff/node_modules/has-symbols/LICENSE new file mode 100644 index 0000000..df31cbf --- /dev/null +++ b/bff/node_modules/has-symbols/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/has-symbols/README.md b/bff/node_modules/has-symbols/README.md new file mode 100644 index 0000000..33905f0 --- /dev/null +++ b/bff/node_modules/has-symbols/README.md @@ -0,0 +1,46 @@ +# has-symbols [![Version Badge][2]][1] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +Determine if the JS environment has Symbol support. Supports spec, or shams. + +## Example + +```js +var hasSymbols = require('has-symbols'); + +hasSymbols() === true; // if the environment has native Symbol support. Not polyfillable, not forgeable. + +var hasSymbolsKinda = require('has-symbols/shams'); +hasSymbolsKinda() === true; // if the environment has a Symbol sham that mostly follows the spec. +``` + +## Supported Symbol shams + - get-own-property-symbols [npm](https://www.npmjs.com/package/get-own-property-symbols) | [github](https://github.com/WebReflection/get-own-property-symbols) + - core-js [npm](https://www.npmjs.com/package/core-js) | [github](https://github.com/zloirock/core-js) + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[1]: https://npmjs.org/package/has-symbols +[2]: https://versionbadg.es/inspect-js/has-symbols.svg +[5]: https://david-dm.org/inspect-js/has-symbols.svg +[6]: https://david-dm.org/inspect-js/has-symbols +[7]: https://david-dm.org/inspect-js/has-symbols/dev-status.svg +[8]: https://david-dm.org/inspect-js/has-symbols#info=devDependencies +[11]: https://nodei.co/npm/has-symbols.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/has-symbols.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/has-symbols.svg +[downloads-url]: https://npm-stat.com/charts.html?package=has-symbols +[codecov-image]: https://codecov.io/gh/inspect-js/has-symbols/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/has-symbols/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/has-symbols +[actions-url]: https://github.com/inspect-js/has-symbols/actions diff --git a/bff/node_modules/has-symbols/index.d.ts b/bff/node_modules/has-symbols/index.d.ts new file mode 100644 index 0000000..9b98595 --- /dev/null +++ b/bff/node_modules/has-symbols/index.d.ts @@ -0,0 +1,3 @@ +declare function hasNativeSymbols(): boolean; + +export = hasNativeSymbols; \ No newline at end of file diff --git a/bff/node_modules/has-symbols/index.js b/bff/node_modules/has-symbols/index.js new file mode 100644 index 0000000..fa65265 --- /dev/null +++ b/bff/node_modules/has-symbols/index.js @@ -0,0 +1,14 @@ +'use strict'; + +var origSymbol = typeof Symbol !== 'undefined' && Symbol; +var hasSymbolSham = require('./shams'); + +/** @type {import('.')} */ +module.exports = function hasNativeSymbols() { + if (typeof origSymbol !== 'function') { return false; } + if (typeof Symbol !== 'function') { return false; } + if (typeof origSymbol('foo') !== 'symbol') { return false; } + if (typeof Symbol('bar') !== 'symbol') { return false; } + + return hasSymbolSham(); +}; diff --git a/bff/node_modules/has-symbols/package.json b/bff/node_modules/has-symbols/package.json new file mode 100644 index 0000000..d835e20 --- /dev/null +++ b/bff/node_modules/has-symbols/package.json @@ -0,0 +1,111 @@ +{ + "name": "has-symbols", + "version": "1.1.0", + "description": "Determine if the JS environment has Symbol support. Supports spec, or shams.", + "main": "index.js", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "tests-only": "npm run test:stock && npm run test:shams", + "test:stock": "nyc node test", + "test:staging": "nyc node --harmony --es-staging test", + "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs", + "test:shams:corejs": "nyc node test/shams/core-js.js", + "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git://github.com/inspect-js/has-symbols.git" + }, + "keywords": [ + "Symbol", + "symbols", + "typeof", + "sham", + "polyfill", + "native", + "core-js", + "ES6" + ], + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/has-symbols/issues" + }, + "homepage": "https://github.com/ljharb/has-symbols#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.0", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.0", + "@types/core-js": "^2.5.8", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "core-js": "^2.6.12", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "get-own-property-symbols": "^0.9.5", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "iexplore/6.0..latest", + "firefox/3.0..6.0", + "firefox/15.0..latest", + "firefox/nightly", + "chrome/4.0..10.0", + "chrome/20.0..latest", + "chrome/canary", + "opera/10.0..latest", + "opera/next", + "safari/4.0..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "types" + ] + } +} diff --git a/bff/node_modules/has-symbols/shams.d.ts b/bff/node_modules/has-symbols/shams.d.ts new file mode 100644 index 0000000..8d0bf24 --- /dev/null +++ b/bff/node_modules/has-symbols/shams.d.ts @@ -0,0 +1,3 @@ +declare function hasSymbolShams(): boolean; + +export = hasSymbolShams; \ No newline at end of file diff --git a/bff/node_modules/has-symbols/shams.js b/bff/node_modules/has-symbols/shams.js new file mode 100644 index 0000000..f97b474 --- /dev/null +++ b/bff/node_modules/has-symbols/shams.js @@ -0,0 +1,45 @@ +'use strict'; + +/** @type {import('./shams')} */ +/* eslint complexity: [2, 18], max-statements: [2, 33] */ +module.exports = function hasSymbols() { + if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } + if (typeof Symbol.iterator === 'symbol') { return true; } + + /** @type {{ [k in symbol]?: unknown }} */ + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + if (typeof sym === 'string') { return false; } + + if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } + if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } + + // temp disabled per https://github.com/ljharb/object.assign/issues/17 + // if (sym instanceof Symbol) { return false; } + // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 + // if (!(symObj instanceof Symbol)) { return false; } + + // if (typeof Symbol.prototype.toString !== 'function') { return false; } + // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } + + var symVal = 42; + obj[sym] = symVal; + for (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop + if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } + + if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } + + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { return false; } + + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } + + if (typeof Object.getOwnPropertyDescriptor === 'function') { + // eslint-disable-next-line no-extra-parens + var descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym)); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } + } + + return true; +}; diff --git a/bff/node_modules/has-symbols/test/index.js b/bff/node_modules/has-symbols/test/index.js new file mode 100644 index 0000000..352129c --- /dev/null +++ b/bff/node_modules/has-symbols/test/index.js @@ -0,0 +1,22 @@ +'use strict'; + +var test = require('tape'); +var hasSymbols = require('../'); +var runSymbolTests = require('./tests'); + +test('interface', function (t) { + t.equal(typeof hasSymbols, 'function', 'is a function'); + t.equal(typeof hasSymbols(), 'boolean', 'returns a boolean'); + t.end(); +}); + +test('Symbols are supported', { skip: !hasSymbols() }, function (t) { + runSymbolTests(t); + t.end(); +}); + +test('Symbols are not supported', { skip: hasSymbols() }, function (t) { + t.equal(typeof Symbol, 'undefined', 'global Symbol is undefined'); + t.equal(typeof Object.getOwnPropertySymbols, 'undefined', 'Object.getOwnPropertySymbols does not exist'); + t.end(); +}); diff --git a/bff/node_modules/has-symbols/test/shams/core-js.js b/bff/node_modules/has-symbols/test/shams/core-js.js new file mode 100644 index 0000000..1a29024 --- /dev/null +++ b/bff/node_modules/has-symbols/test/shams/core-js.js @@ -0,0 +1,29 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { + test('has native Symbol support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol(), 'symbol'); + t.end(); + }); + // @ts-expect-error TS is stupid and doesn't know about top level return + return; +} + +var hasSymbols = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbols(), false, 'hasSymbols is false before polyfilling'); + require('core-js/fn/symbol'); + require('core-js/fn/symbol/to-string-tag'); + + require('../tests')(t); + + var hasSymbolsAfter = hasSymbols(); + t.equal(hasSymbolsAfter, true, 'hasSymbols is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/bff/node_modules/has-symbols/test/shams/get-own-property-symbols.js b/bff/node_modules/has-symbols/test/shams/get-own-property-symbols.js new file mode 100644 index 0000000..e0296f8 --- /dev/null +++ b/bff/node_modules/has-symbols/test/shams/get-own-property-symbols.js @@ -0,0 +1,29 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { + test('has native Symbol support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol(), 'symbol'); + t.end(); + }); + // @ts-expect-error TS is stupid and doesn't know about top level return + return; +} + +var hasSymbols = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbols(), false, 'hasSymbols is false before polyfilling'); + + require('get-own-property-symbols'); + + require('../tests')(t); + + var hasSymbolsAfter = hasSymbols(); + t.equal(hasSymbolsAfter, true, 'hasSymbols is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/bff/node_modules/has-symbols/test/tests.js b/bff/node_modules/has-symbols/test/tests.js new file mode 100644 index 0000000..66a2cb8 --- /dev/null +++ b/bff/node_modules/has-symbols/test/tests.js @@ -0,0 +1,58 @@ +'use strict'; + +/** @type {(t: import('tape').Test) => false | void} */ +// eslint-disable-next-line consistent-return +module.exports = function runSymbolTests(t) { + t.equal(typeof Symbol, 'function', 'global Symbol is a function'); + + if (typeof Symbol !== 'function') { return false; } + + t.notEqual(Symbol(), Symbol(), 'two symbols are not equal'); + + /* + t.equal( + Symbol.prototype.toString.call(Symbol('foo')), + Symbol.prototype.toString.call(Symbol('foo')), + 'two symbols with the same description stringify the same' + ); + */ + + /* + var foo = Symbol('foo'); + + t.notEqual( + String(foo), + String(Symbol('bar')), + 'two symbols with different descriptions do not stringify the same' + ); + */ + + t.equal(typeof Symbol.prototype.toString, 'function', 'Symbol#toString is a function'); + // t.equal(String(foo), Symbol.prototype.toString.call(foo), 'Symbol#toString equals String of the same symbol'); + + t.equal(typeof Object.getOwnPropertySymbols, 'function', 'Object.getOwnPropertySymbols is a function'); + + /** @type {{ [k in symbol]?: unknown }} */ + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + t.notEqual(typeof sym, 'string', 'Symbol is not a string'); + t.equal(Object.prototype.toString.call(sym), '[object Symbol]', 'symbol primitive Object#toStrings properly'); + t.equal(Object.prototype.toString.call(symObj), '[object Symbol]', 'symbol primitive Object#toStrings properly'); + + var symVal = 42; + obj[sym] = symVal; + // eslint-disable-next-line no-restricted-syntax, no-unused-vars + for (var _ in obj) { t.fail('symbol property key was found in for..in of object'); } + + t.deepEqual(Object.keys(obj), [], 'no enumerable own keys on symbol-valued object'); + t.deepEqual(Object.getOwnPropertyNames(obj), [], 'no own names on symbol-valued object'); + t.deepEqual(Object.getOwnPropertySymbols(obj), [sym], 'one own symbol on symbol-valued object'); + t.equal(Object.prototype.propertyIsEnumerable.call(obj, sym), true, 'symbol is enumerable'); + t.deepEqual(Object.getOwnPropertyDescriptor(obj, sym), { + configurable: true, + enumerable: true, + value: 42, + writable: true + }, 'property descriptor is correct'); +}; diff --git a/bff/node_modules/has-symbols/tsconfig.json b/bff/node_modules/has-symbols/tsconfig.json new file mode 100644 index 0000000..ba99af4 --- /dev/null +++ b/bff/node_modules/has-symbols/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "ES2021", + "maxNodeModuleJsDepth": 0, + }, + "exclude": [ + "coverage" + ] +} diff --git a/bff/node_modules/has-tostringtag/.eslintrc b/bff/node_modules/has-tostringtag/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/bff/node_modules/has-tostringtag/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/bff/node_modules/has-tostringtag/.github/FUNDING.yml b/bff/node_modules/has-tostringtag/.github/FUNDING.yml new file mode 100644 index 0000000..7a450e7 --- /dev/null +++ b/bff/node_modules/has-tostringtag/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/has-tostringtag +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/has-tostringtag/.nycrc b/bff/node_modules/has-tostringtag/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/bff/node_modules/has-tostringtag/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/has-tostringtag/CHANGELOG.md b/bff/node_modules/has-tostringtag/CHANGELOG.md new file mode 100644 index 0000000..eb186ec --- /dev/null +++ b/bff/node_modules/has-tostringtag/CHANGELOG.md @@ -0,0 +1,42 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.2](https://github.com/inspect-js/has-tostringtag/compare/v1.0.1...v1.0.2) - 2024-02-01 + +### Fixed + +- [Fix] move `has-symbols` back to prod deps [`#3`](https://github.com/inspect-js/has-tostringtag/issues/3) + +## [v1.0.1](https://github.com/inspect-js/has-tostringtag/compare/v1.0.0...v1.0.1) - 2024-02-01 + +### Commits + +- [patch] add types [`9276414`](https://github.com/inspect-js/has-tostringtag/commit/9276414b22fab3eeb234688841722c4be113201f) +- [meta] use `npmignore` to autogenerate an npmignore file [`5c0dcd1`](https://github.com/inspect-js/has-tostringtag/commit/5c0dcd1ff66419562a30d1fd88b966cc36bce5fc) +- [actions] reuse common workflows [`dee9509`](https://github.com/inspect-js/has-tostringtag/commit/dee950904ab5719b62cf8d73d2ac950b09093266) +- [actions] update codecov uploader [`b8cb3a0`](https://github.com/inspect-js/has-tostringtag/commit/b8cb3a0b8ffbb1593012c4c2daa45fb25642825d) +- [Tests] generate coverage [`be5b288`](https://github.com/inspect-js/has-tostringtag/commit/be5b28889e2735cdbcef387f84c2829995f2f05e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`69a0827`](https://github.com/inspect-js/has-tostringtag/commit/69a0827974e9b877b2c75b70b057555da8f25a65) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`4c9e210`](https://github.com/inspect-js/has-tostringtag/commit/4c9e210a5682f0557a3235d36b68ce809d7fb825) +- [actions] update rebase action to use reusable workflow [`ca8dcd3`](https://github.com/inspect-js/has-tostringtag/commit/ca8dcd3a6f3f5805d7e3fd461b654aedba0946e7) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `npmignore`, `tape` [`07f3eaf`](https://github.com/inspect-js/has-tostringtag/commit/07f3eafa45dd98208c94479737da77f9a69b94c4) +- [Deps] update `has-symbols` [`999e009`](https://github.com/inspect-js/has-tostringtag/commit/999e0095a7d1749a58f55472ec8bf8108cdfdcf3) +- [Tests] remove staging tests since they fail on modern node [`9d9526b`](https://github.com/inspect-js/has-tostringtag/commit/9d9526b1dc1ca7f2292b52efda4c3d857b0e39bd) + +## v1.0.0 - 2021-08-05 + +### Commits + +- Tests [`6b6f573`](https://github.com/inspect-js/has-tostringtag/commit/6b6f5734dc2058badb300ff0783efdad95fe1a65) +- Initial commit [`2f8190e`](https://github.com/inspect-js/has-tostringtag/commit/2f8190e799fac32ba9b95a076c0255e01d7ce475) +- [meta] do not publish github action workflow files [`6e08cc4`](https://github.com/inspect-js/has-tostringtag/commit/6e08cc4e0fea7ec71ef66e70734b2af2c4a8b71b) +- readme [`94bed6c`](https://github.com/inspect-js/has-tostringtag/commit/94bed6c9560cbbfda034f8d6c260bb7b0db33c1a) +- npm init [`be67840`](https://github.com/inspect-js/has-tostringtag/commit/be67840ab92ee7adb98bcc65261975543f815fa5) +- Implementation [`c4914ec`](https://github.com/inspect-js/has-tostringtag/commit/c4914ecc51ddee692c85b471ae0a5d8123030fbf) +- [meta] use `auto-changelog` [`4aaf768`](https://github.com/inspect-js/has-tostringtag/commit/4aaf76895ae01d7b739f2b19f967ef2372506cd7) +- Only apps should have lockfiles [`bc4d99e`](https://github.com/inspect-js/has-tostringtag/commit/bc4d99e4bf494afbaa235c5f098df6e642edf724) +- [meta] add `safe-publish-latest` [`6523c05`](https://github.com/inspect-js/has-tostringtag/commit/6523c05c9b87140f3ae74c9daf91633dd9ff4e1f) diff --git a/bff/node_modules/has-tostringtag/LICENSE b/bff/node_modules/has-tostringtag/LICENSE new file mode 100644 index 0000000..7948bc0 --- /dev/null +++ b/bff/node_modules/has-tostringtag/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Inspect JS + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/has-tostringtag/README.md b/bff/node_modules/has-tostringtag/README.md new file mode 100644 index 0000000..67a5e92 --- /dev/null +++ b/bff/node_modules/has-tostringtag/README.md @@ -0,0 +1,46 @@ +# has-tostringtag [![Version Badge][2]][1] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![dependency status][5]][6] +[![dev dependency status][7]][8] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][11]][1] + +Determine if the JS environment has `Symbol.toStringTag` support. Supports spec, or shams. + +## Example + +```js +var hasSymbolToStringTag = require('has-tostringtag'); + +hasSymbolToStringTag() === true; // if the environment has native Symbol.toStringTag support. Not polyfillable, not forgeable. + +var hasSymbolToStringTagKinda = require('has-tostringtag/shams'); +hasSymbolToStringTagKinda() === true; // if the environment has a Symbol.toStringTag sham that mostly follows the spec. +``` + +## Supported Symbol shams + - get-own-property-symbols [npm](https://www.npmjs.com/package/get-own-property-symbols) | [github](https://github.com/WebReflection/get-own-property-symbols) + - core-js [npm](https://www.npmjs.com/package/core-js) | [github](https://github.com/zloirock/core-js) + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[1]: https://npmjs.org/package/has-tostringtag +[2]: https://versionbadg.es/inspect-js/has-tostringtag.svg +[5]: https://david-dm.org/inspect-js/has-tostringtag.svg +[6]: https://david-dm.org/inspect-js/has-tostringtag +[7]: https://david-dm.org/inspect-js/has-tostringtag/dev-status.svg +[8]: https://david-dm.org/inspect-js/has-tostringtag#info=devDependencies +[11]: https://nodei.co/npm/has-tostringtag.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/has-tostringtag.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/has-tostringtag.svg +[downloads-url]: https://npm-stat.com/charts.html?package=has-tostringtag +[codecov-image]: https://codecov.io/gh/inspect-js/has-tostringtag/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/has-tostringtag/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/has-tostringtag +[actions-url]: https://github.com/inspect-js/has-tostringtag/actions diff --git a/bff/node_modules/has-tostringtag/index.d.ts b/bff/node_modules/has-tostringtag/index.d.ts new file mode 100644 index 0000000..a61bc60 --- /dev/null +++ b/bff/node_modules/has-tostringtag/index.d.ts @@ -0,0 +1,3 @@ +declare function hasToStringTag(): boolean; + +export = hasToStringTag; diff --git a/bff/node_modules/has-tostringtag/index.js b/bff/node_modules/has-tostringtag/index.js new file mode 100644 index 0000000..77bfa00 --- /dev/null +++ b/bff/node_modules/has-tostringtag/index.js @@ -0,0 +1,8 @@ +'use strict'; + +var hasSymbols = require('has-symbols'); + +/** @type {import('.')} */ +module.exports = function hasToStringTag() { + return hasSymbols() && typeof Symbol.toStringTag === 'symbol'; +}; diff --git a/bff/node_modules/has-tostringtag/package.json b/bff/node_modules/has-tostringtag/package.json new file mode 100644 index 0000000..e5b0300 --- /dev/null +++ b/bff/node_modules/has-tostringtag/package.json @@ -0,0 +1,108 @@ +{ + "name": "has-tostringtag", + "version": "1.0.2", + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "description": "Determine if the JS environment has `Symbol.toStringTag` support. Supports spec, or shams.", + "license": "MIT", + "main": "index.js", + "types": "./index.d.ts", + "exports": { + ".": [ + { + "types": "./index.d.ts", + "default": "./index.js" + }, + "./index.js" + ], + "./shams": [ + { + "types": "./shams.d.ts", + "default": "./shams.js" + }, + "./shams.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "aud --production", + "tests-only": "npm run test:stock && npm run test:shams", + "test:stock": "nyc node test", + "test:staging": "nyc node --harmony --es-staging test", + "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs", + "test:shams:corejs": "nyc node test/shams/core-js.js", + "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/has-tostringtag.git" + }, + "bugs": { + "url": "https://github.com/inspect-js/has-tostringtag/issues" + }, + "homepage": "https://github.com/inspect-js/has-tostringtag#readme", + "keywords": [ + "javascript", + "ecmascript", + "symbol", + "symbols", + "tostringtag", + "Symbol.toStringTag" + ], + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/has-symbols": "^1.0.2", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "core-js": "^2.6.12", + "eslint": "=8.8.0", + "get-own-property-symbols": "^0.9.5", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.4", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "dependencies": { + "has-symbols": "^1.0.3" + } +} diff --git a/bff/node_modules/has-tostringtag/shams.d.ts b/bff/node_modules/has-tostringtag/shams.d.ts new file mode 100644 index 0000000..ea4aeec --- /dev/null +++ b/bff/node_modules/has-tostringtag/shams.d.ts @@ -0,0 +1,3 @@ +declare function hasToStringTagShams(): boolean; + +export = hasToStringTagShams; diff --git a/bff/node_modules/has-tostringtag/shams.js b/bff/node_modules/has-tostringtag/shams.js new file mode 100644 index 0000000..809580d --- /dev/null +++ b/bff/node_modules/has-tostringtag/shams.js @@ -0,0 +1,8 @@ +'use strict'; + +var hasSymbols = require('has-symbols/shams'); + +/** @type {import('.')} */ +module.exports = function hasToStringTagShams() { + return hasSymbols() && !!Symbol.toStringTag; +}; diff --git a/bff/node_modules/has-tostringtag/test/index.js b/bff/node_modules/has-tostringtag/test/index.js new file mode 100644 index 0000000..0679afd --- /dev/null +++ b/bff/node_modules/has-tostringtag/test/index.js @@ -0,0 +1,21 @@ +'use strict'; + +var test = require('tape'); +var hasSymbolToStringTag = require('../'); +var runSymbolTests = require('./tests'); + +test('interface', function (t) { + t.equal(typeof hasSymbolToStringTag, 'function', 'is a function'); + t.equal(typeof hasSymbolToStringTag(), 'boolean', 'returns a boolean'); + t.end(); +}); + +test('Symbol.toStringTag exists', { skip: !hasSymbolToStringTag() }, function (t) { + runSymbolTests(t); + t.end(); +}); + +test('Symbol.toStringTag does not exist', { skip: hasSymbolToStringTag() }, function (t) { + t.equal(typeof Symbol === 'undefined' ? 'undefined' : typeof Symbol.toStringTag, 'undefined', 'global Symbol.toStringTag is undefined'); + t.end(); +}); diff --git a/bff/node_modules/has-tostringtag/test/shams/core-js.js b/bff/node_modules/has-tostringtag/test/shams/core-js.js new file mode 100644 index 0000000..7ab214d --- /dev/null +++ b/bff/node_modules/has-tostringtag/test/shams/core-js.js @@ -0,0 +1,31 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol') { + test('has native Symbol.toStringTag support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol.toStringTag, 'symbol'); + t.end(); + }); + // @ts-expect-error CJS has top-level return + return; +} + +var hasSymbolToStringTag = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbolToStringTag(), false, 'hasSymbolToStringTag is false before polyfilling'); + // @ts-expect-error no types defined + require('core-js/fn/symbol'); + // @ts-expect-error no types defined + require('core-js/fn/symbol/to-string-tag'); + + require('../tests')(t); + + var hasToStringTagAfter = hasSymbolToStringTag(); + t.equal(hasToStringTagAfter, true, 'hasSymbolToStringTag is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/bff/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js b/bff/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js new file mode 100644 index 0000000..c8af44c --- /dev/null +++ b/bff/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js @@ -0,0 +1,30 @@ +'use strict'; + +var test = require('tape'); + +if (typeof Symbol === 'function' && typeof Symbol() === 'symbol') { + test('has native Symbol support', function (t) { + t.equal(typeof Symbol, 'function'); + t.equal(typeof Symbol(), 'symbol'); + t.end(); + }); + // @ts-expect-error CJS has top-level return + return; +} + +var hasSymbolToStringTag = require('../../shams'); + +test('polyfilled Symbols', function (t) { + /* eslint-disable global-require */ + t.equal(hasSymbolToStringTag(), false, 'hasSymbolToStringTag is false before polyfilling'); + + // @ts-expect-error no types defined + require('get-own-property-symbols'); + + require('../tests')(t); + + var hasToStringTagAfter = hasSymbolToStringTag(); + t.equal(hasToStringTagAfter, true, 'hasSymbolToStringTag is true after polyfilling'); + /* eslint-enable global-require */ + t.end(); +}); diff --git a/bff/node_modules/has-tostringtag/test/tests.js b/bff/node_modules/has-tostringtag/test/tests.js new file mode 100644 index 0000000..2aa0d48 --- /dev/null +++ b/bff/node_modules/has-tostringtag/test/tests.js @@ -0,0 +1,15 @@ +'use strict'; + +// eslint-disable-next-line consistent-return +module.exports = /** @type {(t: import('tape').Test) => void | false} */ function runSymbolTests(t) { + t.equal(typeof Symbol, 'function', 'global Symbol is a function'); + t.ok(Symbol.toStringTag, 'Symbol.toStringTag exists'); + + if (typeof Symbol !== 'function' || !Symbol.toStringTag) { return false; } + + /** @type {{ [Symbol.toStringTag]?: 'test'}} */ + var obj = {}; + obj[Symbol.toStringTag] = 'test'; + + t.equal(Object.prototype.toString.call(obj), '[object test]'); +}; diff --git a/bff/node_modules/has-tostringtag/tsconfig.json b/bff/node_modules/has-tostringtag/tsconfig.json new file mode 100644 index 0000000..2002ce5 --- /dev/null +++ b/bff/node_modules/has-tostringtag/tsconfig.json @@ -0,0 +1,49 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + + /* Language and Environment */ + "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + "typeRoots": ["types"], /* Specify multiple folders that act like './node_modules/@types'. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + "maxNodeModuleJsDepth": 0, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declarationMap": true, /* Create sourcemaps for d.ts files. */ + "noEmit": true, /* Disable emitting files from a compilation. */ + + /* Interop Constraints */ + "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + + /* Completeness */ + //"skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "exclude": [ + "coverage" + ] +} diff --git a/bff/node_modules/hasown/.eslintrc b/bff/node_modules/hasown/.eslintrc new file mode 100644 index 0000000..3b5d9e9 --- /dev/null +++ b/bff/node_modules/hasown/.eslintrc @@ -0,0 +1,5 @@ +{ + "root": true, + + "extends": "@ljharb", +} diff --git a/bff/node_modules/hasown/.github/FUNDING.yml b/bff/node_modules/hasown/.github/FUNDING.yml new file mode 100644 index 0000000..d68c8b7 --- /dev/null +++ b/bff/node_modules/hasown/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/hasown +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/bff/node_modules/hasown/.nycrc b/bff/node_modules/hasown/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/bff/node_modules/hasown/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/hasown/CHANGELOG.md b/bff/node_modules/hasown/CHANGELOG.md new file mode 100644 index 0000000..2b0a980 --- /dev/null +++ b/bff/node_modules/hasown/CHANGELOG.md @@ -0,0 +1,40 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v2.0.2](https://github.com/inspect-js/hasOwn/compare/v2.0.1...v2.0.2) - 2024-03-10 + +### Commits + +- [types] use shared config [`68e9d4d`](https://github.com/inspect-js/hasOwn/commit/68e9d4dab6facb4f05f02c6baea94a3f2a4e44b2) +- [actions] remove redundant finisher; use reusable workflow [`241a68e`](https://github.com/inspect-js/hasOwn/commit/241a68e13ea1fe52bec5ba7f74144befc31fae7b) +- [Tests] increase coverage [`4125c0d`](https://github.com/inspect-js/hasOwn/commit/4125c0d6121db56ae30e38346dfb0c000b04f0a7) +- [Tests] skip `npm ls` in old node due to TS [`01b9282`](https://github.com/inspect-js/hasOwn/commit/01b92822f9971dea031eafdd14767df41d61c202) +- [types] improve predicate type [`d340f85`](https://github.com/inspect-js/hasOwn/commit/d340f85ce02e286ef61096cbbb6697081d40a12b) +- [Dev Deps] update `tape` [`70089fc`](https://github.com/inspect-js/hasOwn/commit/70089fcf544e64acc024cbe60f5a9b00acad86de) +- [Tests] use `@arethetypeswrong/cli` [`50b272c`](https://github.com/inspect-js/hasOwn/commit/50b272c829f40d053a3dd91c9796e0ac0b2af084) + +## [v2.0.1](https://github.com/inspect-js/hasOwn/compare/v2.0.0...v2.0.1) - 2024-02-10 + +### Commits + +- [types] use a handwritten d.ts file; fix exported type [`012b989`](https://github.com/inspect-js/hasOwn/commit/012b9898ccf91dc441e2ebf594ff70270a5fda58) +- [Dev Deps] update `@types/function-bind`, `@types/mock-property`, `@types/tape`, `aud`, `mock-property`, `npmignore`, `tape`, `typescript` [`977a56f`](https://github.com/inspect-js/hasOwn/commit/977a56f51a1f8b20566f3c471612137894644025) +- [meta] add `sideEffects` flag [`3a60b7b`](https://github.com/inspect-js/hasOwn/commit/3a60b7bf42fccd8c605e5f145a6fcc83b13cb46f) + +## [v2.0.0](https://github.com/inspect-js/hasOwn/compare/v1.0.1...v2.0.0) - 2023-10-19 + +### Commits + +- revamped implementation, tests, readme [`72bf8b3`](https://github.com/inspect-js/hasOwn/commit/72bf8b338e77a638f0a290c63ffaed18339c36b4) +- [meta] revamp package.json [`079775f`](https://github.com/inspect-js/hasOwn/commit/079775fb1ec72c1c6334069593617a0be3847458) +- Only apps should have lockfiles [`6640e23`](https://github.com/inspect-js/hasOwn/commit/6640e233d1bb8b65260880f90787637db157d215) + +## v1.0.1 - 2023-10-10 + +### Commits + +- Initial commit [`8dbfde6`](https://github.com/inspect-js/hasOwn/commit/8dbfde6e8fb0ebb076fab38d138f2984eb340a62) diff --git a/bff/node_modules/hasown/LICENSE b/bff/node_modules/hasown/LICENSE new file mode 100644 index 0000000..0314929 --- /dev/null +++ b/bff/node_modules/hasown/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Jordan Harband and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/hasown/README.md b/bff/node_modules/hasown/README.md new file mode 100644 index 0000000..f759b8a --- /dev/null +++ b/bff/node_modules/hasown/README.md @@ -0,0 +1,40 @@ +# hasown [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +A robust, ES3 compatible, "has own property" predicate. + +## Example + +```js +const assert = require('assert'); +const hasOwn = require('hasown'); + +assert.equal(hasOwn({}, 'toString'), false); +assert.equal(hasOwn([], 'length'), true); +assert.equal(hasOwn({ a: 42 }, 'a'), true); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/hasown +[npm-version-svg]: https://versionbadg.es/inspect-js/hasown.svg +[deps-svg]: https://david-dm.org/inspect-js/hasOwn.svg +[deps-url]: https://david-dm.org/inspect-js/hasOwn +[dev-deps-svg]: https://david-dm.org/inspect-js/hasOwn/dev-status.svg +[dev-deps-url]: https://david-dm.org/inspect-js/hasOwn#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/hasown.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/hasown.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/hasown.svg +[downloads-url]: https://npm-stat.com/charts.html?package=hasown +[codecov-image]: https://codecov.io/gh/inspect-js/hasOwn/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/hasOwn/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/hasOwn +[actions-url]: https://github.com/inspect-js/hasOwn/actions diff --git a/bff/node_modules/hasown/index.d.ts b/bff/node_modules/hasown/index.d.ts new file mode 100644 index 0000000..aafdf3b --- /dev/null +++ b/bff/node_modules/hasown/index.d.ts @@ -0,0 +1,3 @@ +declare function hasOwn(o: O, p: K): o is O & Record; + +export = hasOwn; diff --git a/bff/node_modules/hasown/index.js b/bff/node_modules/hasown/index.js new file mode 100644 index 0000000..34e6059 --- /dev/null +++ b/bff/node_modules/hasown/index.js @@ -0,0 +1,8 @@ +'use strict'; + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = require('function-bind'); + +/** @type {import('.')} */ +module.exports = bind.call(call, $hasOwn); diff --git a/bff/node_modules/hasown/package.json b/bff/node_modules/hasown/package.json new file mode 100644 index 0000000..8502e13 --- /dev/null +++ b/bff/node_modules/hasown/package.json @@ -0,0 +1,92 @@ +{ + "name": "hasown", + "version": "2.0.2", + "description": "A robust, ES3 compatible, \"has own property\" predicate.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "index.d.ts", + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "npm run tsc", + "pretest": "npm run lint", + "tsc": "tsc -p .", + "posttsc": "attw -P", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/hasOwn.git" + }, + "keywords": [ + "has", + "hasOwnProperty", + "hasOwn", + "has-own", + "own", + "has", + "property", + "in", + "javascript", + "ecmascript" + ], + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/hasOwn/issues" + }, + "homepage": "https://github.com/inspect-js/hasOwn#readme", + "dependencies": { + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.15.1", + "@ljharb/eslint-config": "^21.1.0", + "@ljharb/tsconfig": "^0.2.0", + "@types/function-bind": "^1.1.10", + "@types/mock-property": "^1.0.2", + "@types/tape": "^5.6.4", + "aud": "^2.0.4", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "mock-property": "^1.0.3", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.5", + "typescript": "next" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "test" + ] + } +} diff --git a/bff/node_modules/hasown/tsconfig.json b/bff/node_modules/hasown/tsconfig.json new file mode 100644 index 0000000..0930c56 --- /dev/null +++ b/bff/node_modules/hasown/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "@ljharb/tsconfig", + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/http-errors/HISTORY.md b/bff/node_modules/http-errors/HISTORY.md new file mode 100644 index 0000000..3d81d26 --- /dev/null +++ b/bff/node_modules/http-errors/HISTORY.md @@ -0,0 +1,186 @@ +2.0.1 / 2025-11-20 +================== + + * deps: use tilde notation for dependencies + * deps: update statuses to 2.0.2 + +2.0.0 / 2021-12-17 +================== + + * Drop support for Node.js 0.6 + * Remove `I'mateapot` export; use `ImATeapot` instead + * Remove support for status being non-first argument + * Rename `UnorderedCollection` constructor to `TooEarly` + * deps: depd@2.0.0 + - Replace internal `eval` usage with `Function` constructor + - Use instance methods on `process` to check for listeners + * deps: statuses@2.0.1 + - Fix messaging casing of `418 I'm a Teapot` + - Remove code 306 + - Rename `425 Unordered Collection` to standard `425 Too Early` + +2021-11-14 / 1.8.1 +================== + + * deps: toidentifier@1.0.1 + +2020-06-29 / 1.8.0 +================== + + * Add `isHttpError` export to determine if value is an HTTP error + * deps: setprototypeof@1.2.0 + +2019-06-24 / 1.7.3 +================== + + * deps: inherits@2.0.4 + +2019-02-18 / 1.7.2 +================== + + * deps: setprototypeof@1.1.1 + +2018-09-08 / 1.7.1 +================== + + * Fix error creating objects in some environments + +2018-07-30 / 1.7.0 +================== + + * Set constructor name when possible + * Use `toidentifier` module to make class names + * deps: statuses@'>= 1.5.0 < 2' + +2018-03-29 / 1.6.3 +================== + + * deps: depd@~1.1.2 + - perf: remove argument reassignment + * deps: setprototypeof@1.1.0 + * deps: statuses@'>= 1.4.0 < 2' + +2017-08-04 / 1.6.2 +================== + + * deps: depd@1.1.1 + - Remove unnecessary `Buffer` loading + +2017-02-20 / 1.6.1 +================== + + * deps: setprototypeof@1.0.3 + - Fix shim for old browsers + +2017-02-14 / 1.6.0 +================== + + * Accept custom 4xx and 5xx status codes in factory + * Add deprecation message to `"I'mateapot"` export + * Deprecate passing status code as anything except first argument in factory + * Deprecate using non-error status codes + * Make `message` property enumerable for `HttpError`s + +2016-11-16 / 1.5.1 +================== + + * deps: inherits@2.0.3 + - Fix issue loading in browser + * deps: setprototypeof@1.0.2 + * deps: statuses@'>= 1.3.1 < 2' + +2016-05-18 / 1.5.0 +================== + + * Support new code `421 Misdirected Request` + * Use `setprototypeof` module to replace `__proto__` setting + * deps: statuses@'>= 1.3.0 < 2' + - Add `421 Misdirected Request` + - perf: enable strict mode + * perf: enable strict mode + +2016-01-28 / 1.4.0 +================== + + * Add `HttpError` export, for `err instanceof createError.HttpError` + * deps: inherits@2.0.1 + * deps: statuses@'>= 1.2.1 < 2' + - Fix message for status 451 + - Remove incorrect nginx status code + +2015-02-02 / 1.3.1 +================== + + * Fix regression where status can be overwritten in `createError` `props` + +2015-02-01 / 1.3.0 +================== + + * Construct errors using defined constructors from `createError` + * Fix error names that are not identifiers + - `createError["I'mateapot"]` is now `createError.ImATeapot` + * Set a meaningful `name` property on constructed errors + +2014-12-09 / 1.2.8 +================== + + * Fix stack trace from exported function + * Remove `arguments.callee` usage + +2014-10-14 / 1.2.7 +================== + + * Remove duplicate line + +2014-10-02 / 1.2.6 +================== + + * Fix `expose` to be `true` for `ClientError` constructor + +2014-09-28 / 1.2.5 +================== + + * deps: statuses@1 + +2014-09-21 / 1.2.4 +================== + + * Fix dependency version to work with old `npm`s + +2014-09-21 / 1.2.3 +================== + + * deps: statuses@~1.1.0 + +2014-09-21 / 1.2.2 +================== + + * Fix publish error + +2014-09-21 / 1.2.1 +================== + + * Support Node.js 0.6 + * Use `inherits` instead of `util` + +2014-09-09 / 1.2.0 +================== + + * Fix the way inheriting functions + * Support `expose` being provided in properties argument + +2014-09-08 / 1.1.0 +================== + + * Default status to 500 + * Support provided `error` to extend + +2014-09-08 / 1.0.1 +================== + + * Fix accepting string message + +2014-09-08 / 1.0.0 +================== + + * Initial release diff --git a/bff/node_modules/http-errors/LICENSE b/bff/node_modules/http-errors/LICENSE new file mode 100644 index 0000000..82af4df --- /dev/null +++ b/bff/node_modules/http-errors/LICENSE @@ -0,0 +1,23 @@ + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com +Copyright (c) 2016 Douglas Christopher Wilson doug@somethingdoug.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/http-errors/README.md b/bff/node_modules/http-errors/README.md new file mode 100644 index 0000000..a8b7330 --- /dev/null +++ b/bff/node_modules/http-errors/README.md @@ -0,0 +1,169 @@ +# http-errors + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][node-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Create HTTP errors for Express, Koa, Connect, etc. with ease. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```console +$ npm install http-errors +``` + +## Example + +```js +var createError = require('http-errors') +var express = require('express') +var app = express() + +app.use(function (req, res, next) { + if (!req.user) return next(createError(401, 'Please login to view this page.')) + next() +}) +``` + +## API + +This is the current API, currently extracted from Koa and subject to change. + +### Error Properties + +- `expose` - can be used to signal if `message` should be sent to the client, + defaulting to `false` when `status` >= 500 +- `headers` - can be an object of header names to values to be sent to the + client, defaulting to `undefined`. When defined, the key names should all + be lower-cased +- `message` - the traditional error message, which should be kept short and all + single line +- `status` - the status code of the error, mirroring `statusCode` for general + compatibility +- `statusCode` - the status code of the error, defaulting to `500` + +### createError([status], [message], [properties]) + +Create a new error object with the given message `msg`. +The error object inherits from `createError.HttpError`. + +```js +var err = createError(404, 'This video does not exist!') +``` + +- `status: 500` - the status code as a number +- `message` - the message of the error, defaulting to node's text for that status code. +- `properties` - custom properties to attach to the object + +### createError([status], [error], [properties]) + +Extend the given `error` object with `createError.HttpError` +properties. This will not alter the inheritance of the given +`error` object, and the modified `error` object is the +return value. + + + +```js +fs.readFile('foo.txt', function (err, buf) { + if (err) { + if (err.code === 'ENOENT') { + var httpError = createError(404, err, { expose: false }) + } else { + var httpError = createError(500, err) + } + } +}) +``` + +- `status` - the status code as a number +- `error` - the error object to extend +- `properties` - custom properties to attach to the object + +### createError.isHttpError(val) + +Determine if the provided `val` is an `HttpError`. This will return `true` +if the error inherits from the `HttpError` constructor of this module or +matches the "duck type" for an error this module creates. All outputs from +the `createError` factory will return `true` for this function, including +if an non-`HttpError` was passed into the factory. + +### new createError\[code || name\](\[msg]\)) + +Create a new error object with the given message `msg`. +The error object inherits from `createError.HttpError`. + +```js +var err = new createError.NotFound() +``` + +- `code` - the status code as a number +- `name` - the name of the error as a "bumpy case", i.e. `NotFound` or `InternalServerError`. + +#### List of all constructors + +|Status Code|Constructor Name | +|-----------|-----------------------------| +|400 |BadRequest | +|401 |Unauthorized | +|402 |PaymentRequired | +|403 |Forbidden | +|404 |NotFound | +|405 |MethodNotAllowed | +|406 |NotAcceptable | +|407 |ProxyAuthenticationRequired | +|408 |RequestTimeout | +|409 |Conflict | +|410 |Gone | +|411 |LengthRequired | +|412 |PreconditionFailed | +|413 |PayloadTooLarge | +|414 |URITooLong | +|415 |UnsupportedMediaType | +|416 |RangeNotSatisfiable | +|417 |ExpectationFailed | +|418 |ImATeapot | +|421 |MisdirectedRequest | +|422 |UnprocessableEntity | +|423 |Locked | +|424 |FailedDependency | +|425 |TooEarly | +|426 |UpgradeRequired | +|428 |PreconditionRequired | +|429 |TooManyRequests | +|431 |RequestHeaderFieldsTooLarge | +|451 |UnavailableForLegalReasons | +|500 |InternalServerError | +|501 |NotImplemented | +|502 |BadGateway | +|503 |ServiceUnavailable | +|504 |GatewayTimeout | +|505 |HTTPVersionNotSupported | +|506 |VariantAlsoNegotiates | +|507 |InsufficientStorage | +|508 |LoopDetected | +|509 |BandwidthLimitExceeded | +|510 |NotExtended | +|511 |NetworkAuthenticationRequired| + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/http-errors/master?label=ci +[ci-url]: https://github.com/jshttp/http-errors/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/http-errors/master +[coveralls-url]: https://coveralls.io/r/jshttp/http-errors?branch=master +[node-image]: https://badgen.net/npm/node/http-errors +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/http-errors +[npm-url]: https://npmjs.org/package/http-errors +[npm-version-image]: https://badgen.net/npm/v/http-errors +[travis-image]: https://badgen.net/travis/jshttp/http-errors/master +[travis-url]: https://travis-ci.org/jshttp/http-errors diff --git a/bff/node_modules/http-errors/index.js b/bff/node_modules/http-errors/index.js new file mode 100644 index 0000000..82271f6 --- /dev/null +++ b/bff/node_modules/http-errors/index.js @@ -0,0 +1,290 @@ +/*! + * http-errors + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var deprecate = require('depd')('http-errors') +var setPrototypeOf = require('setprototypeof') +var statuses = require('statuses') +var inherits = require('inherits') +var toIdentifier = require('toidentifier') + +/** + * Module exports. + * @public + */ + +module.exports = createError +module.exports.HttpError = createHttpErrorConstructor() +module.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError) + +// Populate exports for all constructors +populateConstructorExports(module.exports, statuses.codes, module.exports.HttpError) + +/** + * Get the code class of a status code. + * @private + */ + +function codeClass (status) { + return Number(String(status).charAt(0) + '00') +} + +/** + * Create a new HTTP Error. + * + * @returns {Error} + * @public + */ + +function createError () { + // so much arity going on ~_~ + var err + var msg + var status = 500 + var props = {} + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i] + var type = typeof arg + if (type === 'object' && arg instanceof Error) { + err = arg + status = err.status || err.statusCode || status + } else if (type === 'number' && i === 0) { + status = arg + } else if (type === 'string') { + msg = arg + } else if (type === 'object') { + props = arg + } else { + throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type) + } + } + + if (typeof status === 'number' && (status < 400 || status >= 600)) { + deprecate('non-error status code; use only 4xx or 5xx status codes') + } + + if (typeof status !== 'number' || + (!statuses.message[status] && (status < 400 || status >= 600))) { + status = 500 + } + + // constructor + var HttpError = createError[status] || createError[codeClass(status)] + + if (!err) { + // create error + err = HttpError + ? new HttpError(msg) + : new Error(msg || statuses.message[status]) + Error.captureStackTrace(err, createError) + } + + if (!HttpError || !(err instanceof HttpError) || err.status !== status) { + // add properties to generic error + err.expose = status < 500 + err.status = err.statusCode = status + } + + for (var key in props) { + if (key !== 'status' && key !== 'statusCode') { + err[key] = props[key] + } + } + + return err +} + +/** + * Create HTTP error abstract base class. + * @private + */ + +function createHttpErrorConstructor () { + function HttpError () { + throw new TypeError('cannot construct abstract class') + } + + inherits(HttpError, Error) + + return HttpError +} + +/** + * Create a constructor for a client error. + * @private + */ + +function createClientErrorConstructor (HttpError, name, code) { + var className = toClassName(name) + + function ClientError (message) { + // create the error object + var msg = message != null ? message : statuses.message[code] + var err = new Error(msg) + + // capture a stack trace to the construction point + Error.captureStackTrace(err, ClientError) + + // adjust the [[Prototype]] + setPrototypeOf(err, ClientError.prototype) + + // redefine the error message + Object.defineProperty(err, 'message', { + enumerable: true, + configurable: true, + value: msg, + writable: true + }) + + // redefine the error name + Object.defineProperty(err, 'name', { + enumerable: false, + configurable: true, + value: className, + writable: true + }) + + return err + } + + inherits(ClientError, HttpError) + nameFunc(ClientError, className) + + ClientError.prototype.status = code + ClientError.prototype.statusCode = code + ClientError.prototype.expose = true + + return ClientError +} + +/** + * Create function to test is a value is a HttpError. + * @private + */ + +function createIsHttpErrorFunction (HttpError) { + return function isHttpError (val) { + if (!val || typeof val !== 'object') { + return false + } + + if (val instanceof HttpError) { + return true + } + + return val instanceof Error && + typeof val.expose === 'boolean' && + typeof val.statusCode === 'number' && val.status === val.statusCode + } +} + +/** + * Create a constructor for a server error. + * @private + */ + +function createServerErrorConstructor (HttpError, name, code) { + var className = toClassName(name) + + function ServerError (message) { + // create the error object + var msg = message != null ? message : statuses.message[code] + var err = new Error(msg) + + // capture a stack trace to the construction point + Error.captureStackTrace(err, ServerError) + + // adjust the [[Prototype]] + setPrototypeOf(err, ServerError.prototype) + + // redefine the error message + Object.defineProperty(err, 'message', { + enumerable: true, + configurable: true, + value: msg, + writable: true + }) + + // redefine the error name + Object.defineProperty(err, 'name', { + enumerable: false, + configurable: true, + value: className, + writable: true + }) + + return err + } + + inherits(ServerError, HttpError) + nameFunc(ServerError, className) + + ServerError.prototype.status = code + ServerError.prototype.statusCode = code + ServerError.prototype.expose = false + + return ServerError +} + +/** + * Set the name of a function, if possible. + * @private + */ + +function nameFunc (func, name) { + var desc = Object.getOwnPropertyDescriptor(func, 'name') + + if (desc && desc.configurable) { + desc.value = name + Object.defineProperty(func, 'name', desc) + } +} + +/** + * Populate the exports object with constructors for every error class. + * @private + */ + +function populateConstructorExports (exports, codes, HttpError) { + codes.forEach(function forEachCode (code) { + var CodeError + var name = toIdentifier(statuses.message[code]) + + switch (codeClass(code)) { + case 400: + CodeError = createClientErrorConstructor(HttpError, name, code) + break + case 500: + CodeError = createServerErrorConstructor(HttpError, name, code) + break + } + + if (CodeError) { + // export the constructor + exports[code] = CodeError + exports[name] = CodeError + } + }) +} + +/** + * Get a class name from a name identifier. + * + * @param {string} name + * @returns {string} + * @private + */ + +function toClassName (name) { + return name.slice(-5) === 'Error' ? name : name + 'Error' +} diff --git a/bff/node_modules/http-errors/package.json b/bff/node_modules/http-errors/package.json new file mode 100644 index 0000000..4b46d62 --- /dev/null +++ b/bff/node_modules/http-errors/package.json @@ -0,0 +1,54 @@ +{ + "name": "http-errors", + "description": "Create HTTP error objects", + "version": "2.0.1", + "author": "Jonathan Ong (http://jongleberry.com)", + "contributors": [ + "Alan Plum ", + "Douglas Christopher Wilson " + ], + "license": "MIT", + "repository": "jshttp/http-errors", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.1.3", + "nyc": "15.1.0" + }, + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "lint": "eslint . && node ./scripts/lint-readme-list.js", + "test": "mocha --reporter spec", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + }, + "keywords": [ + "http", + "error" + ], + "files": [ + "index.js", + "HISTORY.md", + "LICENSE", + "README.md" + ] +} diff --git a/bff/node_modules/iconv-lite/LICENSE b/bff/node_modules/iconv-lite/LICENSE new file mode 100644 index 0000000..d518d83 --- /dev/null +++ b/bff/node_modules/iconv-lite/LICENSE @@ -0,0 +1,21 @@ +Copyright (c) 2011 Alexander Shtuchkin + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/bff/node_modules/iconv-lite/README.md b/bff/node_modules/iconv-lite/README.md new file mode 100644 index 0000000..78a7a5f --- /dev/null +++ b/bff/node_modules/iconv-lite/README.md @@ -0,0 +1,138 @@ +## iconv-lite: Pure JS character encoding conversion + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-downloads-url] +[![License][license-image]][license-url] +[![NPM Install Size][npm-install-size-image]][npm-install-size-url] + +* No need for native code compilation. Quick to install, works on Windows, Web, and in sandboxed environments. +* Used in popular projects like [Express.js (body_parser)](https://github.com/expressjs/body-parser), + [Grunt](http://gruntjs.com/), [Nodemailer](http://www.nodemailer.com/), [Yeoman](http://yeoman.io/) and others. +* Faster than [node-iconv](https://github.com/bnoordhuis/node-iconv) (see below for performance comparison). +* Intuitive encode/decode API, including Streaming support. +* In-browser usage via [browserify](https://github.com/substack/node-browserify) or [webpack](https://webpack.js.org/) (~180kb gzip compressed with Buffer shim included). +* Typescript [type definition file](https://github.com/ashtuchkin/iconv-lite/blob/master/lib/index.d.ts) included. +* React Native is supported (need to install `stream` module to enable Streaming API). + +## Usage + +### Basic API + +```javascript +var iconv = require('iconv-lite'); + +// Convert from an encoded buffer to a js string. +str = iconv.decode(Buffer.from([0x68, 0x65, 0x6c, 0x6c, 0x6f]), 'win1251'); + +// Convert from a js string to an encoded buffer. +buf = iconv.encode("Sample input string", 'win1251'); + +// Check if encoding is supported +iconv.encodingExists("us-ascii") +``` + +### Streaming API + +```javascript +// Decode stream (from binary data stream to js strings) +http.createServer(function(req, res) { + var converterStream = iconv.decodeStream('win1251'); + req.pipe(converterStream); + + converterStream.on('data', function(str) { + console.log(str); // Do something with decoded strings, chunk-by-chunk. + }); +}); + +// Convert encoding streaming example +fs.createReadStream('file-in-win1251.txt') + .pipe(iconv.decodeStream('win1251')) + .pipe(iconv.encodeStream('ucs2')) + .pipe(fs.createWriteStream('file-in-ucs2.txt')); + +// Sugar: all encode/decode streams have .collect(cb) method to accumulate data. +http.createServer(function(req, res) { + req.pipe(iconv.decodeStream('win1251')).collect(function(err, body) { + assert(typeof body == 'string'); + console.log(body); // full request body string + }); +}); +``` + +## Supported encodings + + * All node.js native encodings: utf8, ucs2 / utf16-le, ascii, binary, base64, hex. + * Additional unicode encodings: utf16, utf16-be, utf-7, utf-7-imap, utf32, utf32-le, and utf32-be. + * All widespread singlebyte encodings: Windows 125x family, ISO-8859 family, + IBM/DOS codepages, Macintosh family, KOI8 family, all others supported by iconv library. + Aliases like 'latin1', 'us-ascii' also supported. + * All widespread multibyte encodings: CP932, CP936, CP949, CP950, GB2312, GBK, GB18030, Big5, Shift_JIS, EUC-JP. + +See [all supported encodings on wiki](https://github.com/ashtuchkin/iconv-lite/wiki/Supported-Encodings). + +Most singlebyte encodings are generated automatically from [node-iconv](https://github.com/bnoordhuis/node-iconv). Thank you Ben Noordhuis and libiconv authors! + +Multibyte encodings are generated from [Unicode.org mappings](http://www.unicode.org/Public/MAPPINGS/) and [WHATWG Encoding Standard mappings](http://encoding.spec.whatwg.org/). Thank you, respective authors! + +## Encoding/decoding speed + +Comparison with node-iconv module (1000x256kb, on MacBook Pro, Core i5/2.6 GHz, Node v0.12.0). +Note: your results may vary, so please always check on your hardware. + + operation iconv@2.1.4 iconv-lite@0.4.7 + ---------------------------------------------------------- + encode('win1251') ~96 Mb/s ~320 Mb/s + decode('win1251') ~95 Mb/s ~246 Mb/s + +## BOM handling + + * Decoding: BOM is stripped by default, unless overridden by passing `stripBOM: false` in options + (f.ex. `iconv.decode(buf, enc, {stripBOM: false})`). + A callback might also be given as a `stripBOM` parameter - it'll be called if BOM character was actually found. + * If you want to detect UTF-8 BOM when decoding other encodings, use [node-autodetect-decoder-stream](https://github.com/danielgindi/node-autodetect-decoder-stream) module. + * Encoding: No BOM added, unless overridden by `addBOM: true` option. + +## UTF-16 Encodings + +This library supports UTF-16LE, UTF-16BE and UTF-16 encodings. First two are straightforward, but UTF-16 is trying to be +smart about endianness in the following ways: + * Decoding: uses BOM and 'spaces heuristic' to determine input endianness. Default is UTF-16LE, but can be + overridden with `defaultEncoding: 'utf-16be'` option. Strips BOM unless `stripBOM: false`. + * Encoding: uses UTF-16LE and writes BOM by default. Use `addBOM: false` to override. + +## UTF-32 Encodings + +This library supports UTF-32LE, UTF-32BE and UTF-32 encodings. Like the UTF-16 encoding above, UTF-32 defaults to UTF-32LE, but uses BOM and 'spaces heuristics' to determine input endianness. + * The default of UTF-32LE can be overridden with the `defaultEncoding: 'utf-32be'` option. Strips BOM unless `stripBOM: false`. + * Encoding: uses UTF-32LE and writes BOM by default. Use `addBOM: false` to override. (`defaultEncoding: 'utf-32be'` can also be used here to change encoding.) + +## Other notes + +When decoding, be sure to supply a Buffer to decode() method, otherwise [bad things usually happen](https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding). +Untranslatable characters are set to � or ?. No transliteration is currently supported. +Node versions 0.10.31 and 0.11.13 are buggy, don't use them (see [#65](https://github.com/ashtuchkin/iconv-lite/issues/65), [#77](https://github.com/ashtuchkin/iconv-lite/issues/77)). + +## Testing + +```sh +git clone git@github.com:ashtuchkin/iconv-lite.git +cd iconv-lite +npm install +npm test + +# To view performance: +npm run test:performance + +# To view test coverage: +npm run test:cov +open coverage/index.html +``` + +[npm-downloads-image]: https://badgen.net/npm/dm/iconv-lite +[npm-downloads-url]: https://npmcharts.com/compare/iconv-lite?minimal=true +[npm-url]: https://npmjs.org/package/iconv-lite +[npm-version-image]: https://badgen.net/npm/v/iconv-lite +[npm-install-size-image]: https://badgen.net/packagephobia/install/iconv-lite +[npm-install-size-url]: https://packagephobia.com/result?p=iconv-lite +[license-image]: https://img.shields.io/npm/l/iconv-lite.svg +[license-url]: https://github.com/ashtuchkin/iconv-lite/blob/HEAD/LICENSE \ No newline at end of file diff --git a/bff/node_modules/iconv-lite/encodings/dbcs-codec.js b/bff/node_modules/iconv-lite/encodings/dbcs-codec.js new file mode 100644 index 0000000..bfec7f2 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/dbcs-codec.js @@ -0,0 +1,532 @@ +"use strict" +var Buffer = require("safer-buffer").Buffer + +// Multibyte codec. In this scheme, a character is represented by 1 or more bytes. +// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences. +// To save memory and loading time, we read table files only when requested. + +exports._dbcs = DBCSCodec + +var UNASSIGNED = -1 +var GB18030_CODE = -2 +var SEQ_START = -10 +var NODE_START = -1000 +var UNASSIGNED_NODE = new Array(0x100) +var DEF_CHAR = -1 + +for (var i = 0; i < 0x100; i++) { UNASSIGNED_NODE[i] = UNASSIGNED } + +// Class DBCSCodec reads and initializes mapping tables. +function DBCSCodec (codecOptions, iconv) { + this.encodingName = codecOptions.encodingName + if (!codecOptions) { throw new Error("DBCS codec is called without the data.") } + if (!codecOptions.table) { throw new Error("Encoding '" + this.encodingName + "' has no data.") } + + // Load tables. + var mappingTable = codecOptions.table() + + // Decode tables: MBCS -> Unicode. + + // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256. + // Trie root is decodeTables[0]. + // Values: >= 0 -> unicode character code. can be > 0xFFFF + // == UNASSIGNED -> unknown/unassigned sequence. + // == GB18030_CODE -> this is the end of a GB18030 4-byte sequence. + // <= NODE_START -> index of the next node in our trie to process next byte. + // <= SEQ_START -> index of the start of a character code sequence, in decodeTableSeq. + this.decodeTables = [] + this.decodeTables[0] = UNASSIGNED_NODE.slice(0) // Create root node. + + // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. + this.decodeTableSeq = [] + + // Actual mapping tables consist of chunks. Use them to fill up decode tables. + for (var i = 0; i < mappingTable.length; i++) { this._addDecodeChunk(mappingTable[i]) } + + // Load & create GB18030 tables when needed. + if (typeof codecOptions.gb18030 === "function") { + this.gb18030 = codecOptions.gb18030() // Load GB18030 ranges. + + // Add GB18030 common decode nodes. + var commonThirdByteNodeIdx = this.decodeTables.length + this.decodeTables.push(UNASSIGNED_NODE.slice(0)) + + var commonFourthByteNodeIdx = this.decodeTables.length + this.decodeTables.push(UNASSIGNED_NODE.slice(0)) + + // Fill out the tree + var firstByteNode = this.decodeTables[0] + for (var i = 0x81; i <= 0xFE; i++) { + var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]] + for (var j = 0x30; j <= 0x39; j++) { + if (secondByteNode[j] === UNASSIGNED) { + secondByteNode[j] = NODE_START - commonThirdByteNodeIdx + } else if (secondByteNode[j] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 2") + } + + var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]] + for (var k = 0x81; k <= 0xFE; k++) { + if (thirdByteNode[k] === UNASSIGNED) { + thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx + } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) { + continue + } else if (thirdByteNode[k] > NODE_START) { + throw new Error("gb18030 decode tables conflict at byte 3") + } + + var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]] + for (var l = 0x30; l <= 0x39; l++) { + if (fourthByteNode[l] === UNASSIGNED) { fourthByteNode[l] = GB18030_CODE } + } + } + } + } + } + + this.defaultCharUnicode = iconv.defaultCharUnicode + + // Encode tables: Unicode -> DBCS. + + // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance. + // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null. + // Values: >= 0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.). + // == UNASSIGNED -> no conversion found. Output a default char. + // <= SEQ_START -> it's an index in encodeTableSeq, see below. The character starts a sequence. + this.encodeTable = [] + + // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of + // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key + // means end of sequence (needed when one sequence is a strict subsequence of another). + // Objects are kept separately from encodeTable to increase performance. + this.encodeTableSeq = [] + + // Some chars can be decoded, but need not be encoded. + var skipEncodeChars = {} + if (codecOptions.encodeSkipVals) { + for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) { + var val = codecOptions.encodeSkipVals[i] + if (typeof val === "number") { skipEncodeChars[val] = true } else { + for (var j = val.from; j <= val.to; j++) { skipEncodeChars[j] = true } + } + } + } + + // Use decode trie to recursively fill out encode tables. + this._fillEncodeTable(0, 0, skipEncodeChars) + + // Add more encoding pairs when needed. + if (codecOptions.encodeAdd) { + for (var uChar in codecOptions.encodeAdd) { + if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) { this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]) } + } + } + + this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)] + if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"] + if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0) +} + +DBCSCodec.prototype.encoder = DBCSEncoder +DBCSCodec.prototype.decoder = DBCSDecoder + +// Decoder helpers +DBCSCodec.prototype._getDecodeTrieNode = function (addr) { + var bytes = [] + for (; addr > 0; addr >>>= 8) { bytes.push(addr & 0xFF) } + if (bytes.length == 0) { bytes.push(0) } + + var node = this.decodeTables[0] + for (var i = bytes.length - 1; i > 0; i--) { // Traverse nodes deeper into the trie. + var val = node[bytes[i]] + + if (val == UNASSIGNED) { // Create new node. + node[bytes[i]] = NODE_START - this.decodeTables.length + this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)) + } else if (val <= NODE_START) { // Existing node. + node = this.decodeTables[NODE_START - val] + } else { throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)) } + } + return node +} + +DBCSCodec.prototype._addDecodeChunk = function (chunk) { + // First element of chunk is the hex mbcs code where we start. + var curAddr = parseInt(chunk[0], 16) + + // Choose the decoding node where we'll write our chars. + var writeTable = this._getDecodeTrieNode(curAddr) + curAddr = curAddr & 0xFF + + // Write all other elements of the chunk to the table. + for (var k = 1; k < chunk.length; k++) { + var part = chunk[k] + if (typeof part === "string") { // String, write as-is. + for (var l = 0; l < part.length;) { + var code = part.charCodeAt(l++) + if (code >= 0xD800 && code < 0xDC00) { // Decode surrogate + var codeTrail = part.charCodeAt(l++) + if (codeTrail >= 0xDC00 && codeTrail < 0xE000) { writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00) } else { throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]) } + } else if (code > 0x0FF0 && code <= 0x0FFF) { // Character sequence (our own encoding used) + var len = 0xFFF - code + 2 + var seq = [] + for (var m = 0; m < len; m++) { seq.push(part.charCodeAt(l++)) } // Simple variation: don't support surrogates or subsequences in seq. + + writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length + this.decodeTableSeq.push(seq) + } else { writeTable[curAddr++] = code } // Basic char + } + } else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character. + var charCode = writeTable[curAddr - 1] + 1 + for (var l = 0; l < part; l++) { writeTable[curAddr++] = charCode++ } + } else { throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]) } + } + if (curAddr > 0xFF) { throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr) } +} + +// Encoder helpers +DBCSCodec.prototype._getEncodeBucket = function (uCode) { + var high = uCode >> 8 // This could be > 0xFF because of astral characters. + if (this.encodeTable[high] === undefined) { + this.encodeTable[high] = UNASSIGNED_NODE.slice(0) + } // Create bucket on demand. + return this.encodeTable[high] +} + +DBCSCodec.prototype._setEncodeChar = function (uCode, dbcsCode) { + var bucket = this._getEncodeBucket(uCode) + var low = uCode & 0xFF + if (bucket[low] <= SEQ_START) { this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode } // There's already a sequence, set a single-char subsequence of it. + else if (bucket[low] == UNASSIGNED) { bucket[low] = dbcsCode } +} + +DBCSCodec.prototype._setEncodeSequence = function (seq, dbcsCode) { + // Get the root of character tree according to first character of the sequence. + var uCode = seq[0] + var bucket = this._getEncodeBucket(uCode) + var low = uCode & 0xFF + + var node + if (bucket[low] <= SEQ_START) { + // There's already a sequence with - use it. + node = this.encodeTableSeq[SEQ_START - bucket[low]] + } else { + // There was no sequence object - allocate a new one. + node = {} + if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low] // If a char was set before - make it a single-char subsequence. + bucket[low] = SEQ_START - this.encodeTableSeq.length + this.encodeTableSeq.push(node) + } + + // Traverse the character tree, allocating new nodes as needed. + for (var j = 1; j < seq.length - 1; j++) { + var oldVal = node[uCode] + if (typeof oldVal === "object") { node = oldVal } else { + node = node[uCode] = {} + if (oldVal !== undefined) { node[DEF_CHAR] = oldVal } + } + } + + // Set the leaf to given dbcsCode. + uCode = seq[seq.length - 1] + node[uCode] = dbcsCode +} + +DBCSCodec.prototype._fillEncodeTable = function (nodeIdx, prefix, skipEncodeChars) { + var node = this.decodeTables[nodeIdx] + var hasValues = false + var subNodeEmpty = {} + for (var i = 0; i < 0x100; i++) { + var uCode = node[i] + var mbCode = prefix + i + if (skipEncodeChars[mbCode]) { continue } + + if (uCode >= 0) { + this._setEncodeChar(uCode, mbCode) + hasValues = true + } else if (uCode <= NODE_START) { + var subNodeIdx = NODE_START - uCode + if (!subNodeEmpty[subNodeIdx]) { // Skip empty subtrees (they are too large in gb18030). + var newPrefix = (mbCode << 8) >>> 0 // NOTE: '>>> 0' keeps 32-bit num positive. + if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) { hasValues = true } else { subNodeEmpty[subNodeIdx] = true } + } + } else if (uCode <= SEQ_START) { + this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode) + hasValues = true + } + } + return hasValues +} + +// == Encoder ================================================================== + +function DBCSEncoder (options, codec) { + // Encoder state + this.leadSurrogate = -1 + this.seqObj = undefined + + // Static data + this.encodeTable = codec.encodeTable + this.encodeTableSeq = codec.encodeTableSeq + this.defaultCharSingleByte = codec.defCharSB + this.gb18030 = codec.gb18030 +} + +DBCSEncoder.prototype.write = function (str) { + var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)) + var leadSurrogate = this.leadSurrogate + var seqObj = this.seqObj + var nextChar = -1 + var i = 0; var j = 0 + + while (true) { + // 0. Get next character. + if (nextChar === -1) { + if (i == str.length) break + var uCode = str.charCodeAt(i++) + } else { + var uCode = nextChar + nextChar = -1 + } + + // 1. Handle surrogates. + if (uCode >= 0xD800 && uCode < 0xE000) { // Char is one of surrogates. + if (uCode < 0xDC00) { // We've got lead surrogate. + if (leadSurrogate === -1) { + leadSurrogate = uCode + continue + } else { + leadSurrogate = uCode + // Double lead surrogate found. + uCode = UNASSIGNED + } + } else { // We've got trail surrogate. + if (leadSurrogate !== -1) { + uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00) + leadSurrogate = -1 + } else { + // Incomplete surrogate pair - only trail surrogate found. + uCode = UNASSIGNED + } + } + } else if (leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + nextChar = uCode; uCode = UNASSIGNED // Write an error, then current char. + leadSurrogate = -1 + } + + // 2. Convert uCode character. + var dbcsCode = UNASSIGNED + if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence + var resCode = seqObj[uCode] + if (typeof resCode === "object") { // Sequence continues. + seqObj = resCode + continue + } else if (typeof resCode === "number") { // Sequence finished. Write it. + dbcsCode = resCode + } else if (resCode == undefined) { // Current character is not part of the sequence. + // Try default character for this sequence + resCode = seqObj[DEF_CHAR] + if (resCode !== undefined) { + dbcsCode = resCode // Found. Write it. + nextChar = uCode // Current character will be written too in the next iteration. + } else { + // TODO: What if we have no default? (resCode == undefined) + // Then, we should write first char of the sequence as-is and try the rest recursively. + // Didn't do it for now because no encoding has this situation yet. + // Currently, just skip the sequence and write current char. + } + } + seqObj = undefined + } else if (uCode >= 0) { // Regular character + var subtable = this.encodeTable[uCode >> 8] + if (subtable !== undefined) { dbcsCode = subtable[uCode & 0xFF] } + + if (dbcsCode <= SEQ_START) { // Sequence start + seqObj = this.encodeTableSeq[SEQ_START - dbcsCode] + continue + } + + if (dbcsCode == UNASSIGNED && this.gb18030) { + // Use GB18030 algorithm to find character(s) to write. + var idx = findIdx(this.gb18030.uChars, uCode) + if (idx != -1) { + var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]) + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600 + newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260 + newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10 + newBuf[j++] = 0x30 + dbcsCode + continue + } + } + } + + // 3. Write dbcsCode character. + if (dbcsCode === UNASSIGNED) { dbcsCode = this.defaultCharSingleByte } + + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode + } else if (dbcsCode < 0x10000) { + newBuf[j++] = dbcsCode >> 8 // high byte + newBuf[j++] = dbcsCode & 0xFF // low byte + } else if (dbcsCode < 0x1000000) { + newBuf[j++] = dbcsCode >> 16 + newBuf[j++] = (dbcsCode >> 8) & 0xFF + newBuf[j++] = dbcsCode & 0xFF + } else { + newBuf[j++] = dbcsCode >>> 24 + newBuf[j++] = (dbcsCode >>> 16) & 0xFF + newBuf[j++] = (dbcsCode >>> 8) & 0xFF + newBuf[j++] = dbcsCode & 0xFF + } + } + + this.seqObj = seqObj + this.leadSurrogate = leadSurrogate + return newBuf.slice(0, j) +} + +DBCSEncoder.prototype.end = function () { + if (this.leadSurrogate === -1 && this.seqObj === undefined) { return } // All clean. Most often case. + + var newBuf = Buffer.alloc(10); var j = 0 + + if (this.seqObj) { // We're in the sequence. + var dbcsCode = this.seqObj[DEF_CHAR] + if (dbcsCode !== undefined) { // Write beginning of the sequence. + if (dbcsCode < 0x100) { + newBuf[j++] = dbcsCode + } else { + newBuf[j++] = dbcsCode >> 8 // high byte + newBuf[j++] = dbcsCode & 0xFF // low byte + } + } else { + // See todo above. + } + this.seqObj = undefined + } + + if (this.leadSurrogate !== -1) { + // Incomplete surrogate pair - only lead surrogate found. + newBuf[j++] = this.defaultCharSingleByte + this.leadSurrogate = -1 + } + + return newBuf.slice(0, j) +} + +// Export for testing +DBCSEncoder.prototype.findIdx = findIdx + +// == Decoder ================================================================== + +function DBCSDecoder (options, codec) { + // Decoder state + this.nodeIdx = 0 + this.prevBytes = [] + + // Static data + this.decodeTables = codec.decodeTables + this.decodeTableSeq = codec.decodeTableSeq + this.defaultCharUnicode = codec.defaultCharUnicode + this.gb18030 = codec.gb18030 +} + +DBCSDecoder.prototype.write = function (buf) { + var newBuf = Buffer.alloc(buf.length * 2) + var nodeIdx = this.nodeIdx + var prevBytes = this.prevBytes; var prevOffset = this.prevBytes.length + var seqStart = -this.prevBytes.length // idx of the start of current parsed sequence. + var uCode + + for (var i = 0, j = 0; i < buf.length; i++) { + var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset] + + // Lookup in current trie node. + var uCode = this.decodeTables[nodeIdx][curByte] + + if (uCode >= 0) { + // Normal character, just use it. + } else if (uCode === UNASSIGNED) { // Unknown char. + // TODO: Callback with seq. + uCode = this.defaultCharUnicode.charCodeAt(0) + i = seqStart // Skip one byte ('i' will be incremented by the for loop) and try to parse again. + } else if (uCode === GB18030_CODE) { + if (i >= 3) { + var ptr = (buf[i - 3] - 0x81) * 12600 + (buf[i - 2] - 0x30) * 1260 + (buf[i - 1] - 0x81) * 10 + (curByte - 0x30) + } else { + var ptr = (prevBytes[i - 3 + prevOffset] - 0x81) * 12600 + + (((i - 2 >= 0) ? buf[i - 2] : prevBytes[i - 2 + prevOffset]) - 0x30) * 1260 + + (((i - 1 >= 0) ? buf[i - 1] : prevBytes[i - 1 + prevOffset]) - 0x81) * 10 + + (curByte - 0x30) + } + var idx = findIdx(this.gb18030.gbChars, ptr) + uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx] + } else if (uCode <= NODE_START) { // Go to next trie node. + nodeIdx = NODE_START - uCode + continue + } else if (uCode <= SEQ_START) { // Output a sequence of chars. + var seq = this.decodeTableSeq[SEQ_START - uCode] + for (var k = 0; k < seq.length - 1; k++) { + uCode = seq[k] + newBuf[j++] = uCode & 0xFF + newBuf[j++] = uCode >> 8 + } + uCode = seq[seq.length - 1] + } else { throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte) } + + // Write the character to buffer, handling higher planes using surrogate pair. + if (uCode >= 0x10000) { + uCode -= 0x10000 + var uCodeLead = 0xD800 | (uCode >> 10) + newBuf[j++] = uCodeLead & 0xFF + newBuf[j++] = uCodeLead >> 8 + + uCode = 0xDC00 | (uCode & 0x3FF) + } + newBuf[j++] = uCode & 0xFF + newBuf[j++] = uCode >> 8 + + // Reset trie node. + nodeIdx = 0; seqStart = i + 1 + } + + this.nodeIdx = nodeIdx + this.prevBytes = (seqStart >= 0) + ? Array.prototype.slice.call(buf, seqStart) + : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf)) + + return newBuf.slice(0, j).toString("ucs2") +} + +DBCSDecoder.prototype.end = function () { + var ret = "" + + // Try to parse all remaining chars. + while (this.prevBytes.length > 0) { + // Skip 1 character in the buffer. + ret += this.defaultCharUnicode + var bytesArr = this.prevBytes.slice(1) + + // Parse remaining as usual. + this.prevBytes = [] + this.nodeIdx = 0 + if (bytesArr.length > 0) { ret += this.write(bytesArr) } + } + + this.prevBytes = [] + this.nodeIdx = 0 + return ret +} + +// Binary search for GB18030. Returns largest i such that table[i] <= val. +function findIdx (table, val) { + if (table[0] > val) { return -1 } + + var l = 0; var r = table.length + while (l < r - 1) { // always table[l] <= val < table[r] + var mid = l + ((r - l + 1) >> 1) + if (table[mid] <= val) { l = mid } else { r = mid } + } + return l +} diff --git a/bff/node_modules/iconv-lite/encodings/dbcs-data.js b/bff/node_modules/iconv-lite/encodings/dbcs-data.js new file mode 100644 index 0000000..a3858d4 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/dbcs-data.js @@ -0,0 +1,185 @@ +"use strict" + +// Description of supported double byte encodings and aliases. +// Tables are not require()-d until they are needed to speed up library load. +// require()-s are direct to support Browserify. + +module.exports = { + + // == Japanese/ShiftJIS ==================================================== + // All japanese encodings are based on JIS X set of standards: + // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. + // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. + // Has several variations in 1978, 1983, 1990 and 1997. + // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. + // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. + // 2 planes, first is superset of 0208, second - revised 0212. + // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) + + // Byte encodings are: + // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte + // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. + // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. + // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. + // 0x00-0x7F - lower part of 0201 + // 0x8E, 0xA1-0xDF - upper part of 0201 + // (0xA1-0xFE)x2 - 0208 plane (94x94). + // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). + // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. + // Used as-is in ISO2022 family. + // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, + // 0201-1976 Roman, 0208-1978, 0208-1983. + // * ISO2022-JP-1: Adds esc seq for 0212-1990. + // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. + // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. + // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. + // + // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. + // + // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html + + shiftjis: { + type: "_dbcs", + table: function () { return require("./tables/shiftjis.json") }, + encodeAdd: { "\u00a5": 0x5C, "\u203E": 0x7E }, + encodeSkipVals: [{ from: 0xED40, to: 0xF940 }] + }, + csshiftjis: "shiftjis", + mskanji: "shiftjis", + sjis: "shiftjis", + windows31j: "shiftjis", + ms31j: "shiftjis", + xsjis: "shiftjis", + windows932: "shiftjis", + ms932: "shiftjis", + 932: "shiftjis", + cp932: "shiftjis", + + eucjp: { + type: "_dbcs", + table: function () { return require("./tables/eucjp.json") }, + encodeAdd: { "\u00a5": 0x5C, "\u203E": 0x7E } + }, + + // TODO: KDDI extension to Shift_JIS + // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. + // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. + + // == Chinese/GBK ========================================================== + // http://en.wikipedia.org/wiki/GBK + // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder + + // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 + gb2312: "cp936", + gb231280: "cp936", + gb23121980: "cp936", + csgb2312: "cp936", + csiso58gb231280: "cp936", + euccn: "cp936", + + // Microsoft's CP936 is a subset and approximation of GBK. + windows936: "cp936", + ms936: "cp936", + 936: "cp936", + cp936: { + type: "_dbcs", + table: function () { return require("./tables/cp936.json") } + }, + + // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. + gbk: { + type: "_dbcs", + table: function () { return require("./tables/cp936.json").concat(require("./tables/gbk-added.json")) } + }, + xgbk: "gbk", + isoir58: "gbk", + + // GB18030 is an algorithmic extension of GBK. + // Main source: https://www.w3.org/TR/encoding/#gbk-encoder + // http://icu-project.org/docs/papers/gb18030.html + // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml + // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 + gb18030: { + type: "_dbcs", + table: function () { return require("./tables/cp936.json").concat(require("./tables/gbk-added.json")) }, + gb18030: function () { return require("./tables/gb18030-ranges.json") }, + encodeSkipVals: [0x80], + encodeAdd: { "€": 0xA2E3 } + }, + + chinese: "gb18030", + + // == Korean =============================================================== + // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. + windows949: "cp949", + ms949: "cp949", + 949: "cp949", + cp949: { + type: "_dbcs", + table: function () { return require("./tables/cp949.json") } + }, + + cseuckr: "cp949", + csksc56011987: "cp949", + euckr: "cp949", + isoir149: "cp949", + korean: "cp949", + ksc56011987: "cp949", + ksc56011989: "cp949", + ksc5601: "cp949", + + // == Big5/Taiwan/Hong Kong ================================================ + // There are lots of tables for Big5 and cp950. Please see the following links for history: + // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html + // Variations, in roughly number of defined chars: + // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT + // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ + // * Big5-2003 (Taiwan standard) almost superset of cp950. + // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. + // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. + // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. + // Plus, it has 4 combining sequences. + // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 + // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. + // Implementations are not consistent within browsers; sometimes labeled as just big5. + // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. + // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 + // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. + // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt + // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt + // + // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder + // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. + + windows950: "cp950", + ms950: "cp950", + 950: "cp950", + cp950: { + type: "_dbcs", + table: function () { return require("./tables/cp950.json") } + }, + + // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. + big5: "big5hkscs", + big5hkscs: { + type: "_dbcs", + table: function () { return require("./tables/cp950.json").concat(require("./tables/big5-added.json")) }, + encodeSkipVals: [ + // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of + // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. + // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter. + 0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe, + 0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca, + 0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62, + 0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef, + 0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed, + + // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 + 0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce + ] + }, + + cnbig5: "big5hkscs", + csbig5: "big5hkscs", + xxbig5: "big5hkscs" +} diff --git a/bff/node_modules/iconv-lite/encodings/index.js b/bff/node_modules/iconv-lite/encodings/index.js new file mode 100644 index 0000000..9d90e3c --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/index.js @@ -0,0 +1,23 @@ +"use strict" + +var mergeModules = require("../lib/helpers/merge-exports") + +// Update this array if you add/rename/remove files in this directory. +// We support Browserify by skipping automatic module discovery and requiring modules directly. +var modules = [ + require("./internal"), + require("./utf32"), + require("./utf16"), + require("./utf7"), + require("./sbcs-codec"), + require("./sbcs-data"), + require("./sbcs-data-generated"), + require("./dbcs-codec"), + require("./dbcs-data") +] + +// Put all encoding/alias/codec definitions to single object and export it. +for (var i = 0; i < modules.length; i++) { + var module = modules[i] + mergeModules(exports, module) +} diff --git a/bff/node_modules/iconv-lite/encodings/internal.js b/bff/node_modules/iconv-lite/encodings/internal.js new file mode 100644 index 0000000..4e5c3ff --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/internal.js @@ -0,0 +1,218 @@ +"use strict" +var Buffer = require("safer-buffer").Buffer + +// Export Node.js internal encodings. + +module.exports = { + // Encodings + utf8: { type: "_internal", bomAware: true }, + cesu8: { type: "_internal", bomAware: true }, + unicode11utf8: "utf8", + + ucs2: { type: "_internal", bomAware: true }, + utf16le: "ucs2", + + binary: { type: "_internal" }, + base64: { type: "_internal" }, + hex: { type: "_internal" }, + + // Codec. + _internal: InternalCodec +} + +// ------------------------------------------------------------------------------ + +function InternalCodec (codecOptions, iconv) { + this.enc = codecOptions.encodingName + this.bomAware = codecOptions.bomAware + + if (this.enc === "base64") { this.encoder = InternalEncoderBase64 } else if (this.enc === "utf8") { this.encoder = InternalEncoderUtf8 } else if (this.enc === "cesu8") { + this.enc = "utf8" // Use utf8 for decoding. + this.encoder = InternalEncoderCesu8 + + // Add decoder for versions of Node not supporting CESU-8 + if (Buffer.from("eda0bdedb2a9", "hex").toString() !== "💩") { + this.decoder = InternalDecoderCesu8 + this.defaultCharUnicode = iconv.defaultCharUnicode + } + } +} + +InternalCodec.prototype.encoder = InternalEncoder +InternalCodec.prototype.decoder = InternalDecoder + +// ------------------------------------------------------------------------------ + +// We use node.js internal decoder. Its signature is the same as ours. +var StringDecoder = require("string_decoder").StringDecoder + +function InternalDecoder (options, codec) { + this.decoder = new StringDecoder(codec.enc) +} + +InternalDecoder.prototype.write = function (buf) { + if (!Buffer.isBuffer(buf)) { + buf = Buffer.from(buf) + } + + return this.decoder.write(buf) +} + +InternalDecoder.prototype.end = function () { + return this.decoder.end() +} + +// ------------------------------------------------------------------------------ +// Encoder is mostly trivial + +function InternalEncoder (options, codec) { + this.enc = codec.enc +} + +InternalEncoder.prototype.write = function (str) { + return Buffer.from(str, this.enc) +} + +InternalEncoder.prototype.end = function () { +} + +// ------------------------------------------------------------------------------ +// Except base64 encoder, which must keep its state. + +function InternalEncoderBase64 (options, codec) { + this.prevStr = "" +} + +InternalEncoderBase64.prototype.write = function (str) { + str = this.prevStr + str + var completeQuads = str.length - (str.length % 4) + this.prevStr = str.slice(completeQuads) + str = str.slice(0, completeQuads) + + return Buffer.from(str, "base64") +} + +InternalEncoderBase64.prototype.end = function () { + return Buffer.from(this.prevStr, "base64") +} + +// ------------------------------------------------------------------------------ +// CESU-8 encoder is also special. + +function InternalEncoderCesu8 (options, codec) { +} + +InternalEncoderCesu8.prototype.write = function (str) { + var buf = Buffer.alloc(str.length * 3); var bufIdx = 0 + for (var i = 0; i < str.length; i++) { + var charCode = str.charCodeAt(i) + // Naive implementation, but it works because CESU-8 is especially easy + // to convert from UTF-16 (which all JS strings are encoded in). + if (charCode < 0x80) { buf[bufIdx++] = charCode } else if (charCode < 0x800) { + buf[bufIdx++] = 0xC0 + (charCode >>> 6) + buf[bufIdx++] = 0x80 + (charCode & 0x3f) + } else { // charCode will always be < 0x10000 in javascript. + buf[bufIdx++] = 0xE0 + (charCode >>> 12) + buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f) + buf[bufIdx++] = 0x80 + (charCode & 0x3f) + } + } + return buf.slice(0, bufIdx) +} + +InternalEncoderCesu8.prototype.end = function () { +} + +// ------------------------------------------------------------------------------ +// CESU-8 decoder is not implemented in Node v4.0+ + +function InternalDecoderCesu8 (options, codec) { + this.acc = 0 + this.contBytes = 0 + this.accBytes = 0 + this.defaultCharUnicode = codec.defaultCharUnicode +} + +InternalDecoderCesu8.prototype.write = function (buf) { + var acc = this.acc; var contBytes = this.contBytes; var accBytes = this.accBytes + var res = "" + for (var i = 0; i < buf.length; i++) { + var curByte = buf[i] + if ((curByte & 0xC0) !== 0x80) { // Leading byte + if (contBytes > 0) { // Previous code is invalid + res += this.defaultCharUnicode + contBytes = 0 + } + + if (curByte < 0x80) { // Single-byte code + res += String.fromCharCode(curByte) + } else if (curByte < 0xE0) { // Two-byte code + acc = curByte & 0x1F + contBytes = 1; accBytes = 1 + } else if (curByte < 0xF0) { // Three-byte code + acc = curByte & 0x0F + contBytes = 2; accBytes = 1 + } else { // Four or more are not supported for CESU-8. + res += this.defaultCharUnicode + } + } else { // Continuation byte + if (contBytes > 0) { // We're waiting for it. + acc = (acc << 6) | (curByte & 0x3f) + contBytes--; accBytes++ + if (contBytes === 0) { + // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80) + if (accBytes === 2 && acc < 0x80 && acc > 0) { + res += this.defaultCharUnicode + } else if (accBytes === 3 && acc < 0x800) { + res += this.defaultCharUnicode + } else { + // Actually add character. + res += String.fromCharCode(acc) + } + } + } else { // Unexpected continuation byte + res += this.defaultCharUnicode + } + } + } + this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes + return res +} + +InternalDecoderCesu8.prototype.end = function () { + var res = 0 + if (this.contBytes > 0) { res += this.defaultCharUnicode } + return res +} + +// ------------------------------------------------------------------------------ +// check the chunk boundaries for surrogate pair + +function InternalEncoderUtf8 (options, codec) { + this.highSurrogate = "" +} + +InternalEncoderUtf8.prototype.write = function (str) { + if (this.highSurrogate) { + str = this.highSurrogate + str + this.highSurrogate = "" + } + + if (str.length > 0) { + var charCode = str.charCodeAt(str.length - 1) + if (charCode >= 0xd800 && charCode < 0xdc00) { + this.highSurrogate = str[str.length - 1] + str = str.slice(0, str.length - 1) + } + } + + return Buffer.from(str, this.enc) +} + +InternalEncoderUtf8.prototype.end = function () { + if (this.highSurrogate) { + var str = this.highSurrogate + this.highSurrogate = "" + return Buffer.from(str, this.enc) + } +} diff --git a/bff/node_modules/iconv-lite/encodings/sbcs-codec.js b/bff/node_modules/iconv-lite/encodings/sbcs-codec.js new file mode 100644 index 0000000..0e2fc92 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/sbcs-codec.js @@ -0,0 +1,75 @@ +"use strict" +var Buffer = require("safer-buffer").Buffer + +// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that +// correspond to encoded bytes (if 128 - then lower half is ASCII). + +exports._sbcs = SBCSCodec +function SBCSCodec (codecOptions, iconv) { + if (!codecOptions) { + throw new Error("SBCS codec is called without the data.") + } + + // Prepare char buffer for decoding. + if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) { + throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)") + } + + if (codecOptions.chars.length === 128) { + var asciiString = "" + for (var i = 0; i < 128; i++) { + asciiString += String.fromCharCode(i) + } + codecOptions.chars = asciiString + codecOptions.chars + } + + this.decodeBuf = Buffer.from(codecOptions.chars, "ucs2") + + // Encoding buffer. + var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)) + + for (var i = 0; i < codecOptions.chars.length; i++) { + encodeBuf[codecOptions.chars.charCodeAt(i)] = i + } + + this.encodeBuf = encodeBuf +} + +SBCSCodec.prototype.encoder = SBCSEncoder +SBCSCodec.prototype.decoder = SBCSDecoder + +function SBCSEncoder (options, codec) { + this.encodeBuf = codec.encodeBuf +} + +SBCSEncoder.prototype.write = function (str) { + var buf = Buffer.alloc(str.length) + for (var i = 0; i < str.length; i++) { + buf[i] = this.encodeBuf[str.charCodeAt(i)] + } + + return buf +} + +SBCSEncoder.prototype.end = function () { +} + +function SBCSDecoder (options, codec) { + this.decodeBuf = codec.decodeBuf +} + +SBCSDecoder.prototype.write = function (buf) { + // Strings are immutable in JS -> we use ucs2 buffer to speed up computations. + var decodeBuf = this.decodeBuf + var newBuf = Buffer.alloc(buf.length * 2) + var idx1 = 0; var idx2 = 0 + for (var i = 0; i < buf.length; i++) { + idx1 = buf[i] * 2; idx2 = i * 2 + newBuf[idx2] = decodeBuf[idx1] + newBuf[idx2 + 1] = decodeBuf[idx1 + 1] + } + return newBuf.toString("ucs2") +} + +SBCSDecoder.prototype.end = function () { +} diff --git a/bff/node_modules/iconv-lite/encodings/sbcs-data-generated.js b/bff/node_modules/iconv-lite/encodings/sbcs-data-generated.js new file mode 100644 index 0000000..9b48236 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/sbcs-data-generated.js @@ -0,0 +1,451 @@ +"use strict"; + +// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script. +module.exports = { + "437": "cp437", + "737": "cp737", + "775": "cp775", + "850": "cp850", + "852": "cp852", + "855": "cp855", + "856": "cp856", + "857": "cp857", + "858": "cp858", + "860": "cp860", + "861": "cp861", + "862": "cp862", + "863": "cp863", + "864": "cp864", + "865": "cp865", + "866": "cp866", + "869": "cp869", + "874": "windows874", + "922": "cp922", + "1046": "cp1046", + "1124": "cp1124", + "1125": "cp1125", + "1129": "cp1129", + "1133": "cp1133", + "1161": "cp1161", + "1162": "cp1162", + "1163": "cp1163", + "1250": "windows1250", + "1251": "windows1251", + "1252": "windows1252", + "1253": "windows1253", + "1254": "windows1254", + "1255": "windows1255", + "1256": "windows1256", + "1257": "windows1257", + "1258": "windows1258", + "28591": "iso88591", + "28592": "iso88592", + "28593": "iso88593", + "28594": "iso88594", + "28595": "iso88595", + "28596": "iso88596", + "28597": "iso88597", + "28598": "iso88598", + "28599": "iso88599", + "28600": "iso885910", + "28601": "iso885911", + "28603": "iso885913", + "28604": "iso885914", + "28605": "iso885915", + "28606": "iso885916", + "windows874": { + "type": "_sbcs", + "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "win874": "windows874", + "cp874": "windows874", + "windows1250": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "win1250": "windows1250", + "cp1250": "windows1250", + "windows1251": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "win1251": "windows1251", + "cp1251": "windows1251", + "windows1252": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "win1252": "windows1252", + "cp1252": "windows1252", + "windows1253": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "win1253": "windows1253", + "cp1253": "windows1253", + "windows1254": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "win1254": "windows1254", + "cp1254": "windows1254", + "windows1255": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "win1255": "windows1255", + "cp1255": "windows1255", + "windows1256": { + "type": "_sbcs", + "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے" + }, + "win1256": "windows1256", + "cp1256": "windows1256", + "windows1257": { + "type": "_sbcs", + "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙" + }, + "win1257": "windows1257", + "cp1257": "windows1257", + "windows1258": { + "type": "_sbcs", + "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "win1258": "windows1258", + "cp1258": "windows1258", + "iso88591": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28591": "iso88591", + "iso88592": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙" + }, + "cp28592": "iso88592", + "iso88593": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙" + }, + "cp28593": "iso88593", + "iso88594": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙" + }, + "cp28594": "iso88594", + "iso88595": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ" + }, + "cp28595": "iso88595", + "iso88596": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������" + }, + "cp28596": "iso88596", + "iso88597": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�" + }, + "cp28597": "iso88597", + "iso88598": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�" + }, + "cp28598": "iso88598", + "iso88599": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ" + }, + "cp28599": "iso88599", + "iso885910": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ" + }, + "cp28600": "iso885910", + "iso885911": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "cp28601": "iso885911", + "iso885913": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’" + }, + "cp28603": "iso885913", + "iso885914": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ" + }, + "cp28604": "iso885914", + "iso885915": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "cp28605": "iso885915", + "iso885916": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ" + }, + "cp28606": "iso885916", + "cp437": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm437": "cp437", + "csibm437": "cp437", + "cp737": { + "type": "_sbcs", + "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ " + }, + "ibm737": "cp737", + "csibm737": "cp737", + "cp775": { + "type": "_sbcs", + "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ " + }, + "ibm775": "cp775", + "csibm775": "cp775", + "cp850": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm850": "cp850", + "csibm850": "cp850", + "cp852": { + "type": "_sbcs", + "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ " + }, + "ibm852": "cp852", + "csibm852": "cp852", + "cp855": { + "type": "_sbcs", + "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ " + }, + "ibm855": "cp855", + "csibm855": "cp855", + "cp856": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm856": "cp856", + "csibm856": "cp856", + "cp857": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ " + }, + "ibm857": "cp857", + "csibm857": "cp857", + "cp858": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ " + }, + "ibm858": "cp858", + "csibm858": "cp858", + "cp860": { + "type": "_sbcs", + "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm860": "cp860", + "csibm860": "cp860", + "cp861": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm861": "cp861", + "csibm861": "cp861", + "cp862": { + "type": "_sbcs", + "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm862": "cp862", + "csibm862": "cp862", + "cp863": { + "type": "_sbcs", + "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm863": "cp863", + "csibm863": "cp863", + "cp864": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�" + }, + "ibm864": "cp864", + "csibm864": "cp864", + "cp865": { + "type": "_sbcs", + "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + "ibm865": "cp865", + "csibm865": "cp865", + "cp866": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ " + }, + "ibm866": "cp866", + "csibm866": "cp866", + "cp869": { + "type": "_sbcs", + "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ " + }, + "ibm869": "cp869", + "csibm869": "cp869", + "cp922": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ" + }, + "ibm922": "cp922", + "csibm922": "cp922", + "cp1046": { + "type": "_sbcs", + "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�" + }, + "ibm1046": "cp1046", + "csibm1046": "cp1046", + "cp1124": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ" + }, + "ibm1124": "cp1124", + "csibm1124": "cp1124", + "cp1125": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ " + }, + "ibm1125": "cp1125", + "csibm1125": "cp1125", + "cp1129": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1129": "cp1129", + "csibm1129": "cp1129", + "cp1133": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�" + }, + "ibm1133": "cp1133", + "csibm1133": "cp1133", + "cp1161": { + "type": "_sbcs", + "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ " + }, + "ibm1161": "cp1161", + "csibm1161": "cp1161", + "cp1162": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + }, + "ibm1162": "cp1162", + "csibm1162": "cp1162", + "cp1163": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ" + }, + "ibm1163": "cp1163", + "csibm1163": "cp1163", + "maccroatian": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ" + }, + "maccyrillic": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "macgreek": { + "type": "_sbcs", + "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�" + }, + "maciceland": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macroman": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macromania": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macthai": { + "type": "_sbcs", + "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����" + }, + "macturkish": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ" + }, + "macukraine": { + "type": "_sbcs", + "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤" + }, + "koi8r": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8u": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8ru": { + "type": "_sbcs", + "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "koi8t": { + "type": "_sbcs", + "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ" + }, + "armscii8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�" + }, + "rk1048": { + "type": "_sbcs", + "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "tcvn": { + "type": "_sbcs", + "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ" + }, + "georgianacademy": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "georgianps": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ" + }, + "pt154": { + "type": "_sbcs", + "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя" + }, + "viscii": { + "type": "_sbcs", + "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ" + }, + "iso646cn": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "iso646jp": { + "type": "_sbcs", + "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������" + }, + "hproman8": { + "type": "_sbcs", + "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�" + }, + "macintosh": { + "type": "_sbcs", + "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ" + }, + "ascii": { + "type": "_sbcs", + "chars": "��������������������������������������������������������������������������������������������������������������������������������" + }, + "tis620": { + "type": "_sbcs", + "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����" + } +} \ No newline at end of file diff --git a/bff/node_modules/iconv-lite/encodings/sbcs-data.js b/bff/node_modules/iconv-lite/encodings/sbcs-data.js new file mode 100644 index 0000000..d8f8e17 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/sbcs-data.js @@ -0,0 +1,178 @@ +"use strict" + +// Manually added data to be used by sbcs codec in addition to generated one. + +module.exports = { + // Not supported by iconv, not sure why. + 10029: "maccenteuro", + maccenteuro: { + type: "_sbcs", + chars: "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ" + }, + + 808: "cp808", + ibm808: "cp808", + cp808: { + type: "_sbcs", + chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ " + }, + + mik: { + type: "_sbcs", + chars: "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ " + }, + + cp720: { + type: "_sbcs", + chars: "\x80\x81éâ\x84à\x86çêëèïî\x8d\x8e\x8f\x90\u0651\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\u064b\u064c\u064d\u064e\u064f\u0650≈°∙·√ⁿ²■\u00a0" + }, + + // Aliases of generated encodings. + ascii8bit: "ascii", + usascii: "ascii", + ansix34: "ascii", + ansix341968: "ascii", + ansix341986: "ascii", + csascii: "ascii", + cp367: "ascii", + ibm367: "ascii", + isoir6: "ascii", + iso646us: "ascii", + iso646irv: "ascii", + us: "ascii", + + latin1: "iso88591", + latin2: "iso88592", + latin3: "iso88593", + latin4: "iso88594", + latin5: "iso88599", + latin6: "iso885910", + latin7: "iso885913", + latin8: "iso885914", + latin9: "iso885915", + latin10: "iso885916", + + csisolatin1: "iso88591", + csisolatin2: "iso88592", + csisolatin3: "iso88593", + csisolatin4: "iso88594", + csisolatincyrillic: "iso88595", + csisolatinarabic: "iso88596", + csisolatingreek: "iso88597", + csisolatinhebrew: "iso88598", + csisolatin5: "iso88599", + csisolatin6: "iso885910", + + l1: "iso88591", + l2: "iso88592", + l3: "iso88593", + l4: "iso88594", + l5: "iso88599", + l6: "iso885910", + l7: "iso885913", + l8: "iso885914", + l9: "iso885915", + l10: "iso885916", + + isoir14: "iso646jp", + isoir57: "iso646cn", + isoir100: "iso88591", + isoir101: "iso88592", + isoir109: "iso88593", + isoir110: "iso88594", + isoir144: "iso88595", + isoir127: "iso88596", + isoir126: "iso88597", + isoir138: "iso88598", + isoir148: "iso88599", + isoir157: "iso885910", + isoir166: "tis620", + isoir179: "iso885913", + isoir199: "iso885914", + isoir203: "iso885915", + isoir226: "iso885916", + + cp819: "iso88591", + ibm819: "iso88591", + + cyrillic: "iso88595", + + arabic: "iso88596", + arabic8: "iso88596", + ecma114: "iso88596", + asmo708: "iso88596", + + greek: "iso88597", + greek8: "iso88597", + ecma118: "iso88597", + elot928: "iso88597", + + hebrew: "iso88598", + hebrew8: "iso88598", + + turkish: "iso88599", + turkish8: "iso88599", + + thai: "iso885911", + thai8: "iso885911", + + celtic: "iso885914", + celtic8: "iso885914", + isoceltic: "iso885914", + + tis6200: "tis620", + tis62025291: "tis620", + tis62025330: "tis620", + + 10000: "macroman", + 10006: "macgreek", + 10007: "maccyrillic", + 10079: "maciceland", + 10081: "macturkish", + + cspc8codepage437: "cp437", + cspc775baltic: "cp775", + cspc850multilingual: "cp850", + cspcp852: "cp852", + cspc862latinhebrew: "cp862", + cpgr: "cp869", + + msee: "cp1250", + mscyrl: "cp1251", + msansi: "cp1252", + msgreek: "cp1253", + msturk: "cp1254", + mshebr: "cp1255", + msarab: "cp1256", + winbaltrim: "cp1257", + + cp20866: "koi8r", + 20866: "koi8r", + ibm878: "koi8r", + cskoi8r: "koi8r", + + cp21866: "koi8u", + 21866: "koi8u", + ibm1168: "koi8u", + + strk10482002: "rk1048", + + tcvn5712: "tcvn", + tcvn57121: "tcvn", + + gb198880: "iso646cn", + cn: "iso646cn", + + csiso14jisc6220ro: "iso646jp", + jisc62201969ro: "iso646jp", + jp: "iso646jp", + + cshproman8: "hproman8", + r8: "hproman8", + roman8: "hproman8", + xroman8: "hproman8", + ibm1051: "hproman8", + + mac: "macintosh", + csmacintosh: "macintosh" +} diff --git a/bff/node_modules/iconv-lite/encodings/tables/big5-added.json b/bff/node_modules/iconv-lite/encodings/tables/big5-added.json new file mode 100644 index 0000000..3c3d3c2 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/tables/big5-added.json @@ -0,0 +1,122 @@ +[ +["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"], +["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"], +["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"], +["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"], +["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"], +["8940","𪎩𡅅"], +["8943","攊"], +["8946","丽滝鵎釟"], +["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"], +["89a1","琑糼緍楆竉刧"], +["89ab","醌碸酞肼"], +["89b0","贋胶𠧧"], +["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"], +["89c1","溚舾甙"], +["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"], +["8a40","𧶄唥"], +["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"], +["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"], +["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"], +["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"], +["8aac","䠋𠆩㿺塳𢶍"], +["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"], +["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"], +["8ac9","𪘁𠸉𢫏𢳉"], +["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"], +["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"], +["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"], +["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"], +["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"], +["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"], +["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"], +["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"], +["8ca1","𣏹椙橃𣱣泿"], +["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"], +["8cc9","顨杫䉶圽"], +["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"], +["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"], +["8d40","𠮟"], +["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"], +["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"], +["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"], +["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"], +["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"], +["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"], +["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"], +["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"], +["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"], +["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"], +["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"], +["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"], +["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"], +["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"], +["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"], +["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"], +["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"], +["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"], +["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"], +["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"], +["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"], +["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"], +["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"], +["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"], +["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"], +["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"], +["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"], +["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"], +["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"], +["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"], +["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"], +["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"], +["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"], +["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"], +["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"], +["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"], +["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"], +["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"], +["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"], +["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"], +["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"], +["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"], +["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"], +["9fae","酙隁酜"], +["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"], +["9fc1","𤤙盖鮝个𠳔莾衂"], +["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"], +["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"], +["9fe7","毺蠘罸"], +["9feb","嘠𪙊蹷齓"], +["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"], +["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"], +["a055","𡠻𦸅"], +["a058","詾𢔛"], +["a05b","惽癧髗鵄鍮鮏蟵"], +["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"], +["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"], +["a0a1","嵗𨯂迚𨸹"], +["a0a6","僙𡵆礆匲阸𠼻䁥"], +["a0ae","矾"], +["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"], +["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"], +["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"], +["a3c0","␀",31,"␡"], +["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23], +["c740","す",58,"ァアィイ"], +["c7a1","ゥ",81,"А",5,"ЁЖ",4], +["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"], +["c8a1","龰冈龱𧘇"], +["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"], +["c8f5","ʃɐɛɔɵœøŋʊɪ"], +["f9fe","■"], +["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"], +["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"], +["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"], +["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"], +["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"], +["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"], +["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"], +["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"], +["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"], +["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"] +] diff --git a/bff/node_modules/iconv-lite/encodings/tables/cp936.json b/bff/node_modules/iconv-lite/encodings/tables/cp936.json new file mode 100644 index 0000000..49ddb9a --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/tables/cp936.json @@ -0,0 +1,264 @@ +[ +["0","\u0000",127,"€"], +["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"], +["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"], +["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11], +["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"], +["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"], +["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5], +["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"], +["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"], +["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"], +["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"], +["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"], +["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"], +["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4], +["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6], +["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"], +["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7], +["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"], +["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"], +["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"], +["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5], +["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"], +["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6], +["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"], +["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4], +["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4], +["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"], +["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"], +["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6], +["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"], +["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"], +["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"], +["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6], +["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"], +["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"], +["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"], +["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"], +["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"], +["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"], +["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8], +["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"], +["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"], +["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"], +["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"], +["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5], +["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"], +["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"], +["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"], +["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"], +["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5], +["9980","檧檨檪檭",114,"欥欦欨",6], +["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"], +["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"], +["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"], +["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"], +["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"], +["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5], +["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"], +["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"], +["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6], +["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"], +["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"], +["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4], +["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19], +["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"], +["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"], +["a2a1","ⅰ",9], +["a2b1","⒈",19,"⑴",19,"①",9], +["a2e5","㈠",9], +["a2f1","Ⅰ",11], +["a3a1","!"#¥%",88," ̄"], +["a4a1","ぁ",82], +["a5a1","ァ",85], +["a6a1","Α",16,"Σ",6], +["a6c1","α",16,"σ",6], +["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"], +["a6ee","︻︼︷︸︱"], +["a6f4","︳︴"], +["a7a1","А",5,"ЁЖ",25], +["a7d1","а",5,"ёж",25], +["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6], +["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"], +["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"], +["a8bd","ńň"], +["a8c0","ɡ"], +["a8c5","ㄅ",36], +["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"], +["a959","℡㈱"], +["a95c","‐"], +["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8], +["a980","﹢",4,"﹨﹩﹪﹫"], +["a996","〇"], +["a9a4","─",75], +["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8], +["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"], +["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4], +["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4], +["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11], +["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"], +["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12], +["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"], +["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"], +["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"], +["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"], +["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"], +["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"], +["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"], +["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"], +["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"], +["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4], +["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"], +["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"], +["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"], +["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9], +["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"], +["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"], +["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"], +["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"], +["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"], +["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16], +["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"], +["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"], +["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"], +["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"], +["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"], +["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"], +["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"], +["bb40","籃",9,"籎",36,"籵",5,"籾",9], +["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"], +["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5], +["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"], +["bd40","紷",54,"絯",7], +["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"], +["be40","継",12,"綧",6,"綯",42], +["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"], +["bf40","緻",62], +["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"], +["c040","繞",35,"纃",23,"纜纝纞"], +["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"], +["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"], +["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"], +["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"], +["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"], +["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"], +["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"], +["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"], +["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"], +["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"], +["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"], +["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"], +["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"], +["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"], +["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"], +["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"], +["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"], +["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"], +["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"], +["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10], +["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"], +["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"], +["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"], +["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"], +["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"], +["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"], +["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"], +["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"], +["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"], +["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9], +["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"], +["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"], +["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"], +["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5], +["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"], +["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"], +["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"], +["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6], +["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"], +["d440","訞",31,"訿",8,"詉",21], +["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"], +["d540","誁",7,"誋",7,"誔",46], +["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"], +["d640","諤",34,"謈",27], +["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"], +["d740","譆",31,"譧",4,"譭",25], +["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"], +["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"], +["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"], +["d940","貮",62], +["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"], +["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"], +["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"], +["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"], +["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"], +["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7], +["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"], +["dd40","軥",62], +["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"], +["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"], +["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"], +["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"], +["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"], +["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"], +["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"], +["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"], +["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"], +["e240","釦",62], +["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"], +["e340","鉆",45,"鉵",16], +["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"], +["e440","銨",5,"銯",24,"鋉",31], +["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"], +["e540","錊",51,"錿",10], +["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"], +["e640","鍬",34,"鎐",27], +["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"], +["e740","鏎",7,"鏗",54], +["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"], +["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"], +["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"], +["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42], +["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"], +["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"], +["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"], +["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"], +["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"], +["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7], +["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"], +["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46], +["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"], +["ee40","頏",62], +["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"], +["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4], +["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"], +["f040","餈",4,"餎餏餑",28,"餯",26], +["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"], +["f140","馌馎馚",10,"馦馧馩",47], +["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"], +["f240","駺",62], +["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"], +["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"], +["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"], +["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5], +["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"], +["f540","魼",62], +["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"], +["f640","鯜",62], +["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"], +["f740","鰼",62], +["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"], +["f840","鳣",62], +["f880","鴢",32], +["f940","鵃",62], +["f980","鶂",32], +["fa40","鶣",62], +["fa80","鷢",32], +["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"], +["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"], +["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6], +["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"], +["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38], +["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"], +["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"] +] diff --git a/bff/node_modules/iconv-lite/encodings/tables/cp949.json b/bff/node_modules/iconv-lite/encodings/tables/cp949.json new file mode 100644 index 0000000..2022a00 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/tables/cp949.json @@ -0,0 +1,273 @@ +[ +["0","\u0000",127], +["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"], +["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"], +["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"], +["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5], +["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"], +["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18], +["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7], +["8361","긝",18,"긲긳긵긶긹긻긼"], +["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8], +["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8], +["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18], +["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"], +["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4], +["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"], +["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"], +["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"], +["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10], +["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"], +["8741","놞",9,"놩",15], +["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"], +["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4], +["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4], +["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"], +["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"], +["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"], +["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"], +["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15], +["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"], +["8a61","둧",4,"둭",18,"뒁뒂"], +["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"], +["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"], +["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8], +["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18], +["8c41","똀",15,"똒똓똕똖똗똙",4], +["8c61","똞",6,"똦",5,"똭",6,"똵",5], +["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16], +["8d41","뛃",16,"뛕",8], +["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"], +["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"], +["8e41","랟랡",6,"랪랮",5,"랶랷랹",8], +["8e61","럂",4,"럈럊",19], +["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7], +["8f41","뢅",7,"뢎",17], +["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4], +["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5], +["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"], +["9061","륾",5,"릆릈릋릌릏",15], +["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"], +["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5], +["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5], +["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6], +["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"], +["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4], +["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"], +["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"], +["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8], +["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"], +["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8], +["9461","봞",5,"봥",6,"봭",12], +["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24], +["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"], +["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"], +["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14], +["9641","뺸",23,"뻒뻓"], +["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8], +["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44], +["9741","뾃",16,"뾕",8], +["9761","뾞",17,"뾱",7], +["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"], +["9841","쁀",16,"쁒",5,"쁙쁚쁛"], +["9861","쁝쁞쁟쁡",6,"쁪",15], +["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"], +["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"], +["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"], +["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"], +["9a41","숤숥숦숧숪숬숮숰숳숵",16], +["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"], +["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"], +["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8], +["9b61","쌳",17,"썆",7], +["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"], +["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5], +["9c61","쏿",8,"쐉",6,"쐑",9], +["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12], +["9d41","쒪",13,"쒹쒺쒻쒽",8], +["9d61","쓆",25], +["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"], +["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"], +["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"], +["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"], +["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"], +["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"], +["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"], +["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"], +["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13], +["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"], +["a141","좥좦좧좩",18,"좾좿죀죁"], +["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"], +["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"], +["a241","줐줒",5,"줙",18], +["a261","줭",6,"줵",18], +["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"], +["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"], +["a361","즑",6,"즚즜즞",16], +["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"], +["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"], +["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12], +["a481","쨦쨧쨨쨪",28,"ㄱ",93], +["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"], +["a561","쩫",17,"쩾",5,"쪅쪆"], +["a581","쪇",16,"쪙",14,"ⅰ",9], +["a5b0","Ⅰ",9], +["a5c1","Α",16,"Σ",6], +["a5e1","α",16,"σ",6], +["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"], +["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6], +["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7], +["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7], +["a761","쬪",22,"쭂쭃쭄"], +["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"], +["a841","쭭",10,"쭺",14], +["a861","쮉",18,"쮝",6], +["a881","쮤",19,"쮹",11,"ÆÐªĦ"], +["a8a6","IJ"], +["a8a8","ĿŁØŒºÞŦŊ"], +["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"], +["a941","쯅",14,"쯕",10], +["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18], +["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"], +["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"], +["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"], +["aa81","챳챴챶",29,"ぁ",82], +["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"], +["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5], +["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85], +["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"], +["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4], +["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25], +["acd1","а",5,"ёж",25], +["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7], +["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"], +["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"], +["ae41","췆",5,"췍췎췏췑",16], +["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4], +["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"], +["af41","츬츭츮츯츲츴츶",19], +["af61","칊",13,"칚칛칝칞칢",5,"칪칬"], +["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"], +["b041","캚",5,"캢캦",5,"캮",12], +["b061","캻",5,"컂",19], +["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"], +["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"], +["b161","켥",6,"켮켲",5,"켹",11], +["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"], +["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"], +["b261","쾎",18,"쾢",5,"쾩"], +["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"], +["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"], +["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5], +["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"], +["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5], +["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"], +["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"], +["b541","킕",14,"킦킧킩킪킫킭",5], +["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4], +["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"], +["b641","턅",7,"턎",17], +["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"], +["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"], +["b741","텮",13,"텽",6,"톅톆톇톉톊"], +["b761","톋",20,"톢톣톥톦톧"], +["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"], +["b841","퇐",7,"퇙",17], +["b861","퇫",8,"퇵퇶퇷퇹",13], +["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"], +["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"], +["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"], +["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"], +["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"], +["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5], +["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"], +["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"], +["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"], +["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"], +["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"], +["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"], +["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"], +["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"], +["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13], +["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"], +["be41","퐸",7,"푁푂푃푅",14], +["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"], +["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"], +["bf41","풞",10,"풪",14], +["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"], +["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"], +["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5], +["c061","픞",25], +["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"], +["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"], +["c161","햌햍햎햏햑",19,"햦햧"], +["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"], +["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"], +["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"], +["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"], +["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4], +["c361","홢",4,"홨홪",5,"홲홳홵",11], +["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"], +["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"], +["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4], +["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"], +["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"], +["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4], +["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"], +["c641","힍힎힏힑",6,"힚힜힞",5], +["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"], +["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"], +["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"], +["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"], +["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"], +["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"], +["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"], +["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"], +["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"], +["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"], +["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"], +["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"], +["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"], +["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"], +["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"], +["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"], +["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"], +["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"], +["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"], +["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"], +["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"], +["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"], +["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"], +["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"], +["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"], +["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"], +["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"], +["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"], +["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"], +["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"], +["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"], +["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"], +["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"], +["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"], +["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"], +["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"], +["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"], +["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"], +["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"], +["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"], +["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"], +["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"], +["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"], +["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"], +["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"], +["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"], +["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"], +["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"], +["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"], +["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"], +["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"], +["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"], +["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"], +["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"], +["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"] +] diff --git a/bff/node_modules/iconv-lite/encodings/tables/cp950.json b/bff/node_modules/iconv-lite/encodings/tables/cp950.json new file mode 100644 index 0000000..d8bc871 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/tables/cp950.json @@ -0,0 +1,177 @@ +[ +["0","\u0000",127], +["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"], +["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"], +["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"], +["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21], +["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10], +["a3a1","ㄐ",25,"˙ˉˊˇˋ"], +["a3e1","€"], +["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"], +["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"], +["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"], +["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"], +["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"], +["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"], +["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"], +["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"], +["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"], +["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"], +["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"], +["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"], +["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"], +["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"], +["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"], +["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"], +["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"], +["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"], +["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"], +["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"], +["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"], +["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"], +["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"], +["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"], +["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"], +["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"], +["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"], +["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"], +["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"], +["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"], +["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"], +["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"], +["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"], +["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"], +["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"], +["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"], +["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"], +["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"], +["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"], +["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"], +["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"], +["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"], +["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"], +["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"], +["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"], +["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"], +["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"], +["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"], +["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"], +["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"], +["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"], +["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"], +["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"], +["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"], +["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"], +["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"], +["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"], +["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"], +["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"], +["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"], +["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"], +["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"], +["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"], +["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"], +["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"], +["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"], +["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"], +["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"], +["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"], +["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"], +["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"], +["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"], +["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"], +["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"], +["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"], +["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"], +["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"], +["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"], +["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"], +["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"], +["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"], +["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"], +["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"], +["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"], +["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"], +["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"], +["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"], +["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"], +["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"], +["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"], +["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"], +["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"], +["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"], +["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"], +["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"], +["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"], +["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"], +["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"], +["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"], +["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"], +["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"], +["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"], +["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"], +["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"], +["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"], +["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"], +["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"], +["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"], +["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"], +["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"], +["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"], +["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"], +["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"], +["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"], +["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"], +["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"], +["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"], +["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"], +["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"], +["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"], +["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"], +["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"], +["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"], +["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"], +["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"], +["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"], +["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"], +["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"], +["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"], +["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"], +["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"], +["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"], +["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"], +["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"], +["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"], +["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"], +["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"], +["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"], +["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"], +["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"], +["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"], +["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"], +["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"], +["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"], +["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"], +["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"], +["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"], +["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"], +["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"], +["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"], +["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"], +["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"], +["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"], +["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"], +["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"], +["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"], +["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"], +["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"], +["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"], +["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"], +["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"], +["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"], +["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"], +["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"], +["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"], +["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"], +["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"] +] diff --git a/bff/node_modules/iconv-lite/encodings/tables/eucjp.json b/bff/node_modules/iconv-lite/encodings/tables/eucjp.json new file mode 100644 index 0000000..4fa61ca --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/tables/eucjp.json @@ -0,0 +1,182 @@ +[ +["0","\u0000",127], +["8ea1","。",62], +["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"], +["a2a1","◆□■△▲▽▼※〒→←↑↓〓"], +["a2ba","∈∋⊆⊇⊂⊃∪∩"], +["a2ca","∧∨¬⇒⇔∀∃"], +["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], +["a2f2","ʼn♯♭♪†‡¶"], +["a2fe","◯"], +["a3b0","0",9], +["a3c1","A",25], +["a3e1","a",25], +["a4a1","ぁ",82], +["a5a1","ァ",85], +["a6a1","Α",16,"Σ",6], +["a6c1","α",16,"σ",6], +["a7a1","А",5,"ЁЖ",25], +["a7d1","а",5,"ёж",25], +["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], +["ada1","①",19,"Ⅰ",9], +["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], +["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], +["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], +["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"], +["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], +["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"], +["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], +["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"], +["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], +["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"], +["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], +["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"], +["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], +["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"], +["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], +["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"], +["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], +["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"], +["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], +["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"], +["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], +["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"], +["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], +["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"], +["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], +["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"], +["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], +["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"], +["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], +["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"], +["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], +["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"], +["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], +["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], +["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], +["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"], +["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], +["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"], +["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], +["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"], +["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], +["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"], +["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], +["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"], +["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], +["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"], +["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], +["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"], +["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], +["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"], +["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], +["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"], +["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], +["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"], +["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], +["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"], +["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], +["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"], +["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], +["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"], +["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], +["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"], +["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], +["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"], +["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], +["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"], +["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], +["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"], +["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], +["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"], +["f4a1","堯槇遙瑤凜熙"], +["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"], +["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], +["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"], +["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], +["fcf1","ⅰ",9,"¬¦'""], +["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"], +["8fa2c2","¡¦¿"], +["8fa2eb","ºª©®™¤№"], +["8fa6e1","ΆΈΉΊΪ"], +["8fa6e7","Ό"], +["8fa6e9","ΎΫ"], +["8fa6ec","Ώ"], +["8fa6f1","άέήίϊΐόςύϋΰώ"], +["8fa7c2","Ђ",10,"ЎЏ"], +["8fa7f2","ђ",10,"ўџ"], +["8fa9a1","ÆĐ"], +["8fa9a4","Ħ"], +["8fa9a6","IJ"], +["8fa9a8","ŁĿ"], +["8fa9ab","ŊØŒ"], +["8fa9af","ŦÞ"], +["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"], +["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"], +["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"], +["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"], +["8fabbd","ġĥíìïîǐ"], +["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"], +["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"], +["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"], +["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"], +["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"], +["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"], +["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"], +["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"], +["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"], +["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"], +["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"], +["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"], +["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"], +["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"], +["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"], +["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"], +["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"], +["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"], +["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"], +["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"], +["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"], +["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"], +["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"], +["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"], +["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"], +["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"], +["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"], +["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"], +["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"], +["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"], +["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"], +["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"], +["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"], +["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"], +["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"], +["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5], +["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"], +["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"], +["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"], +["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"], +["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"], +["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"], +["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"], +["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"], +["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"], +["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"], +["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"], +["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"], +["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"], +["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"], +["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"], +["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"], +["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"], +["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"], +["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"], +["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"], +["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"], +["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"], +["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4], +["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"], +["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"], +["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"], +["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"] +] diff --git a/bff/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json b/bff/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json new file mode 100644 index 0000000..85c6934 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json @@ -0,0 +1 @@ +{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]} \ No newline at end of file diff --git a/bff/node_modules/iconv-lite/encodings/tables/gbk-added.json b/bff/node_modules/iconv-lite/encodings/tables/gbk-added.json new file mode 100644 index 0000000..b742e36 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/tables/gbk-added.json @@ -0,0 +1,56 @@ +[ +["a140","",62], +["a180","",32], +["a240","",62], +["a280","",32], +["a2ab","",5], +["a2e3","€"], +["a2ef",""], +["a2fd",""], +["a340","",62], +["a380","",31," "], +["a440","",62], +["a480","",32], +["a4f4","",10], +["a540","",62], +["a580","",32], +["a5f7","",7], +["a640","",62], +["a680","",32], +["a6b9","",7], +["a6d9","",6], +["a6ec",""], +["a6f3",""], +["a6f6","",8], +["a740","",62], +["a780","",32], +["a7c2","",14], +["a7f2","",12], +["a896","",10], +["a8bc","ḿ"], +["a8bf","ǹ"], +["a8c1",""], +["a8ea","",20], +["a958",""], +["a95b",""], +["a95d",""], +["a989","〾⿰",11], +["a997","",12], +["a9f0","",14], +["aaa1","",93], +["aba1","",93], +["aca1","",93], +["ada1","",93], +["aea1","",93], +["afa1","",93], +["d7fa","",4], +["f8a1","",93], +["f9a1","",93], +["faa1","",93], +["fba1","",93], +["fca1","",93], +["fda1","",93], +["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"], +["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93], +["8135f437",""] +] diff --git a/bff/node_modules/iconv-lite/encodings/tables/shiftjis.json b/bff/node_modules/iconv-lite/encodings/tables/shiftjis.json new file mode 100644 index 0000000..5a3a43c --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/tables/shiftjis.json @@ -0,0 +1,125 @@ +[ +["0","\u0000",128], +["a1","。",62], +["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"], +["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"], +["81b8","∈∋⊆⊇⊂⊃∪∩"], +["81c8","∧∨¬⇒⇔∀∃"], +["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"], +["81f0","ʼn♯♭♪†‡¶"], +["81fc","◯"], +["824f","0",9], +["8260","A",25], +["8281","a",25], +["829f","ぁ",82], +["8340","ァ",62], +["8380","ム",22], +["839f","Α",16,"Σ",6], +["83bf","α",16,"σ",6], +["8440","А",5,"ЁЖ",25], +["8470","а",5,"ёж",7], +["8480","о",17], +["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"], +["8740","①",19,"Ⅰ",9], +["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"], +["877e","㍻"], +["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"], +["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"], +["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"], +["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"], +["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"], +["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"], +["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"], +["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"], +["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"], +["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"], +["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"], +["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"], +["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"], +["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"], +["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"], +["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"], +["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"], +["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"], +["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"], +["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"], +["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"], +["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"], +["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"], +["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"], +["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"], +["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"], +["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"], +["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"], +["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"], +["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"], +["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"], +["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"], +["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"], +["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"], +["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"], +["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"], +["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"], +["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"], +["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"], +["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"], +["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"], +["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"], +["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"], +["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"], +["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"], +["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"], +["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"], +["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"], +["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"], +["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"], +["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"], +["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"], +["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"], +["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"], +["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"], +["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"], +["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"], +["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"], +["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"], +["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"], +["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"], +["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"], +["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"], +["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"], +["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"], +["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"], +["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"], +["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"], +["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"], +["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"], +["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"], +["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"], +["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"], +["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"], +["eeef","ⅰ",9,"¬¦'""], +["f040","",62], +["f080","",124], +["f140","",62], +["f180","",124], +["f240","",62], +["f280","",124], +["f340","",62], +["f380","",124], +["f440","",62], +["f480","",124], +["f540","",62], +["f580","",124], +["f640","",62], +["f680","",124], +["f740","",62], +["f780","",124], +["f840","",62], +["f880","",124], +["f940",""], +["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"], +["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"], +["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"], +["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"], +["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"] +] diff --git a/bff/node_modules/iconv-lite/encodings/utf16.js b/bff/node_modules/iconv-lite/encodings/utf16.js new file mode 100644 index 0000000..ae60d98 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/utf16.js @@ -0,0 +1,187 @@ +"use strict" +var Buffer = require("safer-buffer").Buffer + +// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js + +// == UTF16-BE codec. ========================================================== + +exports.utf16be = Utf16BECodec +function Utf16BECodec () { +} + +Utf16BECodec.prototype.encoder = Utf16BEEncoder +Utf16BECodec.prototype.decoder = Utf16BEDecoder +Utf16BECodec.prototype.bomAware = true + +// -- Encoding + +function Utf16BEEncoder () { +} + +Utf16BEEncoder.prototype.write = function (str) { + var buf = Buffer.from(str, "ucs2") + for (var i = 0; i < buf.length; i += 2) { + var tmp = buf[i]; buf[i] = buf[i + 1]; buf[i + 1] = tmp + } + return buf +} + +Utf16BEEncoder.prototype.end = function () { +} + +// -- Decoding + +function Utf16BEDecoder () { + this.overflowByte = -1 +} + +Utf16BEDecoder.prototype.write = function (buf) { + if (buf.length == 0) { return "" } + + var buf2 = Buffer.alloc(buf.length + 1) + var i = 0; var j = 0 + + if (this.overflowByte !== -1) { + buf2[0] = buf[0] + buf2[1] = this.overflowByte + i = 1; j = 2 + } + + for (; i < buf.length - 1; i += 2, j += 2) { + buf2[j] = buf[i + 1] + buf2[j + 1] = buf[i] + } + + this.overflowByte = (i == buf.length - 1) ? buf[buf.length - 1] : -1 + + return buf2.slice(0, j).toString("ucs2") +} + +Utf16BEDecoder.prototype.end = function () { + this.overflowByte = -1 +} + +// == UTF-16 codec ============================================================= +// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic. +// Defaults to UTF-16LE, as it's prevalent and default in Node. +// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le +// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'}); + +// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false). + +exports.utf16 = Utf16Codec +function Utf16Codec (codecOptions, iconv) { + this.iconv = iconv +} + +Utf16Codec.prototype.encoder = Utf16Encoder +Utf16Codec.prototype.decoder = Utf16Decoder + +// -- Encoding (pass-through) + +function Utf16Encoder (options, codec) { + options = options || {} + if (options.addBOM === undefined) { options.addBOM = true } + this.encoder = codec.iconv.getEncoder("utf-16le", options) +} + +Utf16Encoder.prototype.write = function (str) { + return this.encoder.write(str) +} + +Utf16Encoder.prototype.end = function () { + return this.encoder.end() +} + +// -- Decoding + +function Utf16Decoder (options, codec) { + this.decoder = null + this.initialBufs = [] + this.initialBufsLen = 0 + + this.options = options || {} + this.iconv = codec.iconv +} + +Utf16Decoder.prototype.write = function (buf) { + if (!this.decoder) { + // Codec is not chosen yet. Accumulate initial bytes. + this.initialBufs.push(buf) + this.initialBufsLen += buf.length + + if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below) + { return "" } + + // We have enough bytes -> detect endianness. + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding) + this.decoder = this.iconv.getDecoder(encoding, this.options) + + var resStr = "" + for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) } + + this.initialBufs.length = this.initialBufsLen = 0 + return resStr + } + + return this.decoder.write(buf) +} + +Utf16Decoder.prototype.end = function () { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding) + this.decoder = this.iconv.getDecoder(encoding, this.options) + + var resStr = "" + for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) } + + var trail = this.decoder.end() + if (trail) { resStr += trail } + + this.initialBufs.length = this.initialBufsLen = 0 + return resStr + } + return this.decoder.end() +} + +function detectEncoding (bufs, defaultEncoding) { + var b = [] + var charsProcessed = 0 + // Number of ASCII chars when decoded as LE or BE. + var asciiCharsLE = 0 + var asciiCharsBE = 0 + + outerLoop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i] + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]) + if (b.length === 2) { + if (charsProcessed === 0) { + // Check BOM first. + if (b[0] === 0xFF && b[1] === 0xFE) return "utf-16le" + if (b[0] === 0xFE && b[1] === 0xFF) return "utf-16be" + } + + if (b[0] === 0 && b[1] !== 0) asciiCharsBE++ + if (b[0] !== 0 && b[1] === 0) asciiCharsLE++ + + b.length = 0 + charsProcessed++ + + if (charsProcessed >= 100) { + break outerLoop + } + } + } + } + + // Make decisions. + // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon. + // So, we count ASCII as if it was LE or BE, and decide from that. + if (asciiCharsBE > asciiCharsLE) return "utf-16be" + if (asciiCharsBE < asciiCharsLE) return "utf-16le" + + // Couldn't decide (likely all zeros or not enough data). + return defaultEncoding || "utf-16le" +} diff --git a/bff/node_modules/iconv-lite/encodings/utf32.js b/bff/node_modules/iconv-lite/encodings/utf32.js new file mode 100644 index 0000000..7231789 --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/utf32.js @@ -0,0 +1,307 @@ +"use strict" + +var Buffer = require("safer-buffer").Buffer + +// == UTF32-LE/BE codec. ========================================================== + +exports._utf32 = Utf32Codec + +function Utf32Codec (codecOptions, iconv) { + this.iconv = iconv + this.bomAware = true + this.isLE = codecOptions.isLE +} + +exports.utf32le = { type: "_utf32", isLE: true } +exports.utf32be = { type: "_utf32", isLE: false } + +// Aliases +exports.ucs4le = "utf32le" +exports.ucs4be = "utf32be" + +Utf32Codec.prototype.encoder = Utf32Encoder +Utf32Codec.prototype.decoder = Utf32Decoder + +// -- Encoding + +function Utf32Encoder (options, codec) { + this.isLE = codec.isLE + this.highSurrogate = 0 +} + +Utf32Encoder.prototype.write = function (str) { + var src = Buffer.from(str, "ucs2") + var dst = Buffer.alloc(src.length * 2) + var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE + var offset = 0 + + for (var i = 0; i < src.length; i += 2) { + var code = src.readUInt16LE(i) + var isHighSurrogate = (code >= 0xD800 && code < 0xDC00) + var isLowSurrogate = (code >= 0xDC00 && code < 0xE000) + + if (this.highSurrogate) { + if (isHighSurrogate || !isLowSurrogate) { + // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low + // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character + // (technically wrong, but expected by some applications, like Windows file names). + write32.call(dst, this.highSurrogate, offset) + offset += 4 + } else { + // Create 32-bit value from high and low surrogates; + var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000 + + write32.call(dst, codepoint, offset) + offset += 4 + this.highSurrogate = 0 + + continue + } + } + + if (isHighSurrogate) { this.highSurrogate = code } else { + // Even if the current character is a low surrogate, with no previous high surrogate, we'll + // encode it as a semi-invalid stand-alone character for the same reasons expressed above for + // unpaired high surrogates. + write32.call(dst, code, offset) + offset += 4 + this.highSurrogate = 0 + } + } + + if (offset < dst.length) { dst = dst.slice(0, offset) } + + return dst +} + +Utf32Encoder.prototype.end = function () { + // Treat any leftover high surrogate as a semi-valid independent character. + if (!this.highSurrogate) { return } + + var buf = Buffer.alloc(4) + + if (this.isLE) { buf.writeUInt32LE(this.highSurrogate, 0) } else { buf.writeUInt32BE(this.highSurrogate, 0) } + + this.highSurrogate = 0 + + return buf +} + +// -- Decoding + +function Utf32Decoder (options, codec) { + this.isLE = codec.isLE + this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0) + this.overflow = [] +} + +Utf32Decoder.prototype.write = function (src) { + if (src.length === 0) { return "" } + + var i = 0 + var codepoint = 0 + var dst = Buffer.alloc(src.length + 4) + var offset = 0 + var isLE = this.isLE + var overflow = this.overflow + var badChar = this.badChar + + if (overflow.length > 0) { + for (; i < src.length && overflow.length < 4; i++) { overflow.push(src[i]) } + + if (overflow.length === 4) { + // NOTE: codepoint is a signed int32 and can be negative. + // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer). + if (isLE) { + codepoint = overflow[i] | (overflow[i + 1] << 8) | (overflow[i + 2] << 16) | (overflow[i + 3] << 24) + } else { + codepoint = overflow[i + 3] | (overflow[i + 2] << 8) | (overflow[i + 1] << 16) | (overflow[i] << 24) + } + overflow.length = 0 + + offset = _writeCodepoint(dst, offset, codepoint, badChar) + } + } + + // Main loop. Should be as optimized as possible. + for (; i < src.length - 3; i += 4) { + // NOTE: codepoint is a signed int32 and can be negative. + if (isLE) { + codepoint = src[i] | (src[i + 1] << 8) | (src[i + 2] << 16) | (src[i + 3] << 24) + } else { + codepoint = src[i + 3] | (src[i + 2] << 8) | (src[i + 1] << 16) | (src[i] << 24) + } + offset = _writeCodepoint(dst, offset, codepoint, badChar) + } + + // Keep overflowing bytes. + for (; i < src.length; i++) { + overflow.push(src[i]) + } + + return dst.slice(0, offset).toString("ucs2") +} + +function _writeCodepoint (dst, offset, codepoint, badChar) { + // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations. + if (codepoint < 0 || codepoint > 0x10FFFF) { + // Not a valid Unicode codepoint + codepoint = badChar + } + + // Ephemeral Planes: Write high surrogate. + if (codepoint >= 0x10000) { + codepoint -= 0x10000 + + var high = 0xD800 | (codepoint >> 10) + dst[offset++] = high & 0xff + dst[offset++] = high >> 8 + + // Low surrogate is written below. + var codepoint = 0xDC00 | (codepoint & 0x3FF) + } + + // Write BMP char or low surrogate. + dst[offset++] = codepoint & 0xff + dst[offset++] = codepoint >> 8 + + return offset +}; + +Utf32Decoder.prototype.end = function () { + this.overflow.length = 0 +} + +// == UTF-32 Auto codec ============================================================= +// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic. +// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32 +// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'}); + +// Encoder prepends BOM (which can be overridden with (addBOM: false}). + +exports.utf32 = Utf32AutoCodec +exports.ucs4 = "utf32" + +function Utf32AutoCodec (options, iconv) { + this.iconv = iconv +} + +Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder +Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder + +// -- Encoding + +function Utf32AutoEncoder (options, codec) { + options = options || {} + + if (options.addBOM === undefined) { + options.addBOM = true + } + + this.encoder = codec.iconv.getEncoder(options.defaultEncoding || "utf-32le", options) +} + +Utf32AutoEncoder.prototype.write = function (str) { + return this.encoder.write(str) +} + +Utf32AutoEncoder.prototype.end = function () { + return this.encoder.end() +} + +// -- Decoding + +function Utf32AutoDecoder (options, codec) { + this.decoder = null + this.initialBufs = [] + this.initialBufsLen = 0 + this.options = options || {} + this.iconv = codec.iconv +} + +Utf32AutoDecoder.prototype.write = function (buf) { + if (!this.decoder) { + // Codec is not chosen yet. Accumulate initial bytes. + this.initialBufs.push(buf) + this.initialBufsLen += buf.length + + if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below) + { return "" } + + // We have enough bytes -> detect endianness. + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding) + this.decoder = this.iconv.getDecoder(encoding, this.options) + + var resStr = "" + for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) } + + this.initialBufs.length = this.initialBufsLen = 0 + return resStr + } + + return this.decoder.write(buf) +} + +Utf32AutoDecoder.prototype.end = function () { + if (!this.decoder) { + var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding) + this.decoder = this.iconv.getDecoder(encoding, this.options) + + var resStr = "" + for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) } + + var trail = this.decoder.end() + if (trail) { resStr += trail } + + this.initialBufs.length = this.initialBufsLen = 0 + return resStr + } + + return this.decoder.end() +} + +function detectEncoding (bufs, defaultEncoding) { + var b = [] + var charsProcessed = 0 + var invalidLE = 0; var invalidBE = 0 // Number of invalid chars when decoded as LE or BE. + var bmpCharsLE = 0; var bmpCharsBE = 0 // Number of BMP chars when decoded as LE or BE. + + outerLoop: + for (var i = 0; i < bufs.length; i++) { + var buf = bufs[i] + for (var j = 0; j < buf.length; j++) { + b.push(buf[j]) + if (b.length === 4) { + if (charsProcessed === 0) { + // Check BOM first. + if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) { + return "utf-32le" + } + if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) { + return "utf-32be" + } + } + + if (b[0] !== 0 || b[1] > 0x10) invalidBE++ + if (b[3] !== 0 || b[2] > 0x10) invalidLE++ + + if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++ + if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++ + + b.length = 0 + charsProcessed++ + + if (charsProcessed >= 100) { + break outerLoop + } + } + } + } + + // Make decisions. + if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return "utf-32be" + if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return "utf-32le" + + // Couldn't decide (likely all zeros or not enough data). + return defaultEncoding || "utf-32le" +} diff --git a/bff/node_modules/iconv-lite/encodings/utf7.js b/bff/node_modules/iconv-lite/encodings/utf7.js new file mode 100644 index 0000000..fe72a9d --- /dev/null +++ b/bff/node_modules/iconv-lite/encodings/utf7.js @@ -0,0 +1,283 @@ +"use strict" +var Buffer = require("safer-buffer").Buffer + +// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152 +// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3 + +exports.utf7 = Utf7Codec +exports.unicode11utf7 = "utf7" // Alias UNICODE-1-1-UTF-7 +function Utf7Codec (codecOptions, iconv) { + this.iconv = iconv +}; + +Utf7Codec.prototype.encoder = Utf7Encoder +Utf7Codec.prototype.decoder = Utf7Decoder +Utf7Codec.prototype.bomAware = true + +// -- Encoding + +// Why scape ()?./? +// eslint-disable-next-line no-useless-escape +var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g + +function Utf7Encoder (options, codec) { + this.iconv = codec.iconv +} + +Utf7Encoder.prototype.write = function (str) { + // Naive implementation. + // Non-direct chars are encoded as "+-"; single "+" char is encoded as "+-". + return Buffer.from(str.replace(nonDirectChars, function (chunk) { + return "+" + (chunk === "+" + ? "" + : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + + "-" + }.bind(this))) +} + +Utf7Encoder.prototype.end = function () { +} + +// -- Decoding + +function Utf7Decoder (options, codec) { + this.iconv = codec.iconv + this.inBase64 = false + this.base64Accum = "" +} + +// Why scape /? +// eslint-disable-next-line no-useless-escape +var base64Regex = /[A-Za-z0-9\/+]/ +var base64Chars = [] +for (var i = 0; i < 256; i++) { base64Chars[i] = base64Regex.test(String.fromCharCode(i)) } + +var plusChar = "+".charCodeAt(0) +var minusChar = "-".charCodeAt(0) +var andChar = "&".charCodeAt(0) + +Utf7Decoder.prototype.write = function (buf) { + var res = ""; var lastI = 0 + var inBase64 = this.inBase64 + var base64Accum = this.base64Accum + + // The decoder is more involved as we must handle chunks in stream. + + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '+' + if (buf[i] == plusChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii") // Write direct chars. + lastI = i + 1 + inBase64 = true + } + } else { // We decode base64. + if (!base64Chars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) { // "+-" -> "+" + res += "+" + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii") + res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be") + } + + if (buf[i] != minusChar) // Minus is absorbed after base64. + { i-- } + + lastI = i + 1 + inBase64 = false + base64Accum = "" + } + } + } + + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii") // Write direct chars. + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii") + + var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded) + + res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be") + } + + this.inBase64 = inBase64 + this.base64Accum = base64Accum + + return res +} + +Utf7Decoder.prototype.end = function () { + var res = "" + if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, "base64"), "utf16-be") } + + this.inBase64 = false + this.base64Accum = "" + return res +} + +// UTF-7-IMAP codec. +// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3) +// Differences: +// * Base64 part is started by "&" instead of "+" +// * Direct characters are 0x20-0x7E, except "&" (0x26) +// * In Base64, "," is used instead of "/" +// * Base64 must not be used to represent direct characters. +// * No implicit shift back from Base64 (should always end with '-') +// * String must end in non-shifted position. +// * "-&" while in base64 is not allowed. + +exports.utf7imap = Utf7IMAPCodec +function Utf7IMAPCodec (codecOptions, iconv) { + this.iconv = iconv +}; + +Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder +Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder +Utf7IMAPCodec.prototype.bomAware = true + +// -- Encoding + +function Utf7IMAPEncoder (options, codec) { + this.iconv = codec.iconv + this.inBase64 = false + this.base64Accum = Buffer.alloc(6) + this.base64AccumIdx = 0 +} + +Utf7IMAPEncoder.prototype.write = function (str) { + var inBase64 = this.inBase64 + var base64Accum = this.base64Accum + var base64AccumIdx = this.base64AccumIdx + var buf = Buffer.alloc(str.length * 5 + 10); var bufIdx = 0 + + for (var i = 0; i < str.length; i++) { + var uChar = str.charCodeAt(i) + if (uChar >= 0x20 && uChar <= 0x7E) { // Direct character or '&'. + if (inBase64) { + if (base64AccumIdx > 0) { + bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx) + base64AccumIdx = 0 + } + + buf[bufIdx++] = minusChar // Write '-', then go to direct mode. + inBase64 = false + } + + if (!inBase64) { + buf[bufIdx++] = uChar // Write direct character + + if (uChar === andChar) // Ampersand -> '&-' + { buf[bufIdx++] = minusChar } + } + } else { // Non-direct character + if (!inBase64) { + buf[bufIdx++] = andChar // Write '&', then go to base64 mode. + inBase64 = true + } + if (inBase64) { + base64Accum[base64AccumIdx++] = uChar >> 8 + base64Accum[base64AccumIdx++] = uChar & 0xFF + + if (base64AccumIdx == base64Accum.length) { + bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx) + base64AccumIdx = 0 + } + } + } + } + + this.inBase64 = inBase64 + this.base64AccumIdx = base64AccumIdx + + return buf.slice(0, bufIdx) +} + +Utf7IMAPEncoder.prototype.end = function () { + var buf = Buffer.alloc(10); var bufIdx = 0 + if (this.inBase64) { + if (this.base64AccumIdx > 0) { + bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx) + this.base64AccumIdx = 0 + } + + buf[bufIdx++] = minusChar // Write '-', then go to direct mode. + this.inBase64 = false + } + + return buf.slice(0, bufIdx) +} + +// -- Decoding + +function Utf7IMAPDecoder (options, codec) { + this.iconv = codec.iconv + this.inBase64 = false + this.base64Accum = "" +} + +var base64IMAPChars = base64Chars.slice() +base64IMAPChars[",".charCodeAt(0)] = true + +Utf7IMAPDecoder.prototype.write = function (buf) { + var res = ""; var lastI = 0 + var inBase64 = this.inBase64 + var base64Accum = this.base64Accum + + // The decoder is more involved as we must handle chunks in stream. + // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end). + + for (var i = 0; i < buf.length; i++) { + if (!inBase64) { // We're in direct mode. + // Write direct chars until '&' + if (buf[i] == andChar) { + res += this.iconv.decode(buf.slice(lastI, i), "ascii") // Write direct chars. + lastI = i + 1 + inBase64 = true + } + } else { // We decode base64. + if (!base64IMAPChars[buf[i]]) { // Base64 ended. + if (i == lastI && buf[i] == minusChar) { // "&-" -> "&" + res += "&" + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, "/") + res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be") + } + + if (buf[i] != minusChar) // Minus may be absorbed after base64. + { i-- } + + lastI = i + 1 + inBase64 = false + base64Accum = "" + } + } + } + + if (!inBase64) { + res += this.iconv.decode(buf.slice(lastI), "ascii") // Write direct chars. + } else { + var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, "/") + + var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars. + base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future. + b64str = b64str.slice(0, canBeDecoded) + + res += this.iconv.decode(Buffer.from(b64str, "base64"), "utf16-be") + } + + this.inBase64 = inBase64 + this.base64Accum = base64Accum + + return res +} + +Utf7IMAPDecoder.prototype.end = function () { + var res = "" + if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, "base64"), "utf16-be") } + + this.inBase64 = false + this.base64Accum = "" + return res +} diff --git a/bff/node_modules/iconv-lite/lib/bom-handling.js b/bff/node_modules/iconv-lite/lib/bom-handling.js new file mode 100644 index 0000000..a86a6b5 --- /dev/null +++ b/bff/node_modules/iconv-lite/lib/bom-handling.js @@ -0,0 +1,48 @@ +"use strict" + +var BOMChar = "\uFEFF" + +exports.PrependBOM = PrependBOMWrapper +function PrependBOMWrapper (encoder, options) { + this.encoder = encoder + this.addBOM = true +} + +PrependBOMWrapper.prototype.write = function (str) { + if (this.addBOM) { + str = BOMChar + str + this.addBOM = false + } + + return this.encoder.write(str) +} + +PrependBOMWrapper.prototype.end = function () { + return this.encoder.end() +} + +// ------------------------------------------------------------------------------ + +exports.StripBOM = StripBOMWrapper +function StripBOMWrapper (decoder, options) { + this.decoder = decoder + this.pass = false + this.options = options || {} +} + +StripBOMWrapper.prototype.write = function (buf) { + var res = this.decoder.write(buf) + if (this.pass || !res) { return res } + + if (res[0] === BOMChar) { + res = res.slice(1) + if (typeof this.options.stripBOM === "function") { this.options.stripBOM() } + } + + this.pass = true + return res +} + +StripBOMWrapper.prototype.end = function () { + return this.decoder.end() +} diff --git a/bff/node_modules/iconv-lite/lib/helpers/merge-exports.js b/bff/node_modules/iconv-lite/lib/helpers/merge-exports.js new file mode 100644 index 0000000..e79e041 --- /dev/null +++ b/bff/node_modules/iconv-lite/lib/helpers/merge-exports.js @@ -0,0 +1,13 @@ +"use strict" + +var hasOwn = typeof Object.hasOwn === "undefined" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn + +function mergeModules (target, module) { + for (var key in module) { + if (hasOwn(module, key)) { + target[key] = module[key] + } + } +} + +module.exports = mergeModules diff --git a/bff/node_modules/iconv-lite/lib/index.d.ts b/bff/node_modules/iconv-lite/lib/index.d.ts new file mode 100644 index 0000000..b11d99e --- /dev/null +++ b/bff/node_modules/iconv-lite/lib/index.d.ts @@ -0,0 +1,129 @@ +/* --------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. + * REQUIREMENT: This definition is dependent on the @types/node definition. + * Install with `npm install @types/node --save-dev` + *-------------------------------------------------------------------------------------------- */ + +/* --------------------------------------------------------------------------------------------- + * This file provides detailed typings for the public API of iconv-lite + *-------------------------------------------------------------------------------------------- */ + +import type Stream = require("stream") +import type { Encoding } from "../types/encodings" + +declare namespace iconv { + export interface DecodeOptions { + /** + * Strip the Byte Order Mark (BOM) from the input, + * when decoding, if the codec is BOM-aware. @default true + */ + stripBOM?: boolean; + /** Override the default endianness for `UTF-16` and `UTF-32` decodings. */ + defaultEncoding?: "utf16be" | "utf32be"; + } + + export interface EncodeOptions { + /** + * Add a Byte Order Mark (BOM) to the output, when encoding, + * if the codec is BOM-aware. @default false + */ + addBOM?: boolean; + /** Override the default endianness for `UTF-32` encoding. */ + defaultEncoding?: "utf32be"; + } + + export interface EncoderStream { + write(str: string): Buffer; + end(): Buffer | undefined; + } + + export interface DecoderStream { + write(buf: Buffer): string; + end(): string | undefined; + } + + export interface Codec { + encoder: new (options?: EncodeOptions, codec?: Codec) => EncoderStream; + decoder: new (options?: DecodeOptions, codec?: Codec) => DecoderStream; + bomAware?: boolean; + [key: string]: any; + } + + /** Encodes a `string` into a `Buffer`, using the provided `encoding`. */ + export function encode (content: string, encoding: Encoding, options?: EncodeOptions): Buffer + + /** Decodes a `Buffer` into a `string`, using the provided `encoding`. */ + export function decode (buffer: Buffer | Uint8Array, encoding: Encoding, options?: DecodeOptions): string + + /** Checks if a given encoding is supported by `iconv-lite`. */ + export function encodingExists (encoding: string): encoding is Encoding + + /** Legacy alias for {@link iconv.encode}. */ + export const toEncoding: typeof iconv.encode + + /** Legacy alias for {@link iconv.decode}. */ + export const fromEncoding: typeof iconv.decode + + /** Creates a stream that decodes binary data from a given `encoding` into strings. */ + export function decodeStream (encoding: Encoding, options?: DecodeOptions): NodeJS.ReadWriteStream + + /** Creates a stream that encodes strings into binary data in a given `encoding`. */ + export function encodeStream (encoding: Encoding, options?: EncodeOptions): NodeJS.ReadWriteStream + + /** + * Explicitly enable Streaming API in browser environments by passing in: + * ```js + * require('stream') + * ``` + * @example iconv.enableStreamingAPI(require('stream')); + */ + export function enableStreamingAPI (stream_module: { Transform: typeof Stream.Transform }): void + + /** Creates and returns a low-level encoder stream. */ + export function getEncoder (encoding: Encoding, options?: EncodeOptions): EncoderStream + + /** Creates and returns a low-level decoder stream. */ + export function getDecoder (encoding: Encoding, options?: DecodeOptions): DecoderStream + + /** + * Returns a codec object for the given `encoding`. + * @throws If the `encoding` is not recognized. + */ + export function getCodec (encoding: Encoding): Codec + + /** Strips all non-alphanumeric characters and appended year from `encoding`. */ + export function _canonicalizeEncoding (encoding: Encoding): string + + /** A cache of all loaded encoding definitions. */ + export let encodings: Record< + Encoding, + | string + | { + type: string; + [key: string]: any; + } + > | null + + /** A cache of initialized codec objects. */ + export let _codecDataCache: Record + + /** The character used for untranslatable `Unicode` characters. @default "�" */ + export let defaultCharUnicode: string + + /** The character used for untranslatable `single-byte` characters. @default "?" */ + export let defaultCharSingleByte: string + + /** + * Skip deprecation warning when strings are used instead of Buffers during decoding. + * Note: {@link iconv.decode} converts the string to Buffer regardless. + */ + export let skipDecodeWarning: boolean + + /** @readonly Whether or not, Streaming API is enabled. */ + export const supportsStreams: boolean + + export type { iconv as Iconv, Encoding } +} + +export = iconv diff --git a/bff/node_modules/iconv-lite/lib/index.js b/bff/node_modules/iconv-lite/lib/index.js new file mode 100644 index 0000000..bd5d6bc --- /dev/null +++ b/bff/node_modules/iconv-lite/lib/index.js @@ -0,0 +1,182 @@ +"use strict" + +var Buffer = require("safer-buffer").Buffer + +var bomHandling = require("./bom-handling") +var mergeModules = require("./helpers/merge-exports") + +// All codecs and aliases are kept here, keyed by encoding name/alias. +// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`. +// Cannot initialize with { __proto__: null } because Boolean({ __proto__: null }) === true +module.exports.encodings = null + +// Characters emitted in case of error. +module.exports.defaultCharUnicode = "�" +module.exports.defaultCharSingleByte = "?" + +// Public API. +module.exports.encode = function encode (str, encoding, options) { + str = "" + (str || "") // Ensure string. + + var encoder = module.exports.getEncoder(encoding, options) + + var res = encoder.write(str) + var trail = encoder.end() + + return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res +} + +module.exports.decode = function decode (buf, encoding, options) { + if (typeof buf === "string") { + if (!module.exports.skipDecodeWarning) { + console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding") + module.exports.skipDecodeWarning = true + } + + buf = Buffer.from("" + (buf || ""), "binary") // Ensure buffer. + } + + var decoder = module.exports.getDecoder(encoding, options) + + var res = decoder.write(buf) + var trail = decoder.end() + + return trail ? (res + trail) : res +} + +module.exports.encodingExists = function encodingExists (enc) { + try { + module.exports.getCodec(enc) + return true + } catch (e) { + return false + } +} + +// Legacy aliases to convert functions +module.exports.toEncoding = module.exports.encode +module.exports.fromEncoding = module.exports.decode + +// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache. +module.exports._codecDataCache = { __proto__: null } + +module.exports.getCodec = function getCodec (encoding) { + if (!module.exports.encodings) { + var raw = require("../encodings") + // TODO: In future versions when old nodejs support is removed can use object.assign + module.exports.encodings = { __proto__: null } // Initialize as empty object. + mergeModules(module.exports.encodings, raw) + } + + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + var enc = module.exports._canonicalizeEncoding(encoding) + + // Traverse iconv.encodings to find actual codec. + var codecOptions = {} + while (true) { + var codec = module.exports._codecDataCache[enc] + + if (codec) { return codec } + + var codecDef = module.exports.encodings[enc] + + switch (typeof codecDef) { + case "string": // Direct alias to other encoding. + enc = codecDef + break + + case "object": // Alias with options. Can be layered. + for (var key in codecDef) { codecOptions[key] = codecDef[key] } + + if (!codecOptions.encodingName) { codecOptions.encodingName = enc } + + enc = codecDef.type + break + + case "function": // Codec itself. + if (!codecOptions.encodingName) { codecOptions.encodingName = enc } + + // The codec function must load all tables and return object with .encoder and .decoder methods. + // It'll be called only once (for each different options object). + // + codec = new codecDef(codecOptions, module.exports) + + module.exports._codecDataCache[codecOptions.encodingName] = codec // Save it to be reused later. + return codec + + default: + throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')") + } + } +} + +module.exports._canonicalizeEncoding = function (encoding) { + // Canonicalize encoding name: strip all non-alphanumeric chars and appended year. + return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "") +} + +module.exports.getEncoder = function getEncoder (encoding, options) { + var codec = module.exports.getCodec(encoding) + var encoder = new codec.encoder(options, codec) + + if (codec.bomAware && options && options.addBOM) { encoder = new bomHandling.PrependBOM(encoder, options) } + + return encoder +} + +module.exports.getDecoder = function getDecoder (encoding, options) { + var codec = module.exports.getCodec(encoding) + var decoder = new codec.decoder(options, codec) + + if (codec.bomAware && !(options && options.stripBOM === false)) { decoder = new bomHandling.StripBOM(decoder, options) } + + return decoder +} + +// Streaming API +// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add +// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default. +// If you would like to enable it explicitly, please add the following code to your app: +// > iconv.enableStreamingAPI(require('stream')); +module.exports.enableStreamingAPI = function enableStreamingAPI (streamModule) { + if (module.exports.supportsStreams) { return } + + // Dependency-inject stream module to create IconvLite stream classes. + var streams = require("./streams")(streamModule) + + // Not public API yet, but expose the stream classes. + module.exports.IconvLiteEncoderStream = streams.IconvLiteEncoderStream + module.exports.IconvLiteDecoderStream = streams.IconvLiteDecoderStream + + // Streaming API. + module.exports.encodeStream = function encodeStream (encoding, options) { + return new module.exports.IconvLiteEncoderStream(module.exports.getEncoder(encoding, options), options) + } + + module.exports.decodeStream = function decodeStream (encoding, options) { + return new module.exports.IconvLiteDecoderStream(module.exports.getDecoder(encoding, options), options) + } + + module.exports.supportsStreams = true +} + +// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments). +var streamModule +try { + streamModule = require("stream") +} catch (e) {} + +if (streamModule && streamModule.Transform) { + module.exports.enableStreamingAPI(streamModule) +} else { + // In rare cases where 'stream' module is not available by default, throw a helpful exception. + module.exports.encodeStream = module.exports.decodeStream = function () { + throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.") + } +} + +// Some environments, such as browsers, may not load JavaScript files as UTF-8 +// eslint-disable-next-line no-constant-condition +if ("Ā" !== "\u0100") { + console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.") +} diff --git a/bff/node_modules/iconv-lite/lib/streams.js b/bff/node_modules/iconv-lite/lib/streams.js new file mode 100644 index 0000000..ebfed8e --- /dev/null +++ b/bff/node_modules/iconv-lite/lib/streams.js @@ -0,0 +1,105 @@ +"use strict" + +var Buffer = require("safer-buffer").Buffer + +// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), +// we opt to dependency-inject it instead of creating a hard dependency. +module.exports = function (streamModule) { + var Transform = streamModule.Transform + + // == Encoder stream ======================================================= + + function IconvLiteEncoderStream (conv, options) { + this.conv = conv + options = options || {} + options.decodeStrings = false // We accept only strings, so we don't need to decode them. + Transform.call(this, options) + } + + IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteEncoderStream } + }) + + IconvLiteEncoderStream.prototype._transform = function (chunk, encoding, done) { + if (typeof chunk !== "string") { + return done(new Error("Iconv encoding stream needs strings as its input.")) + } + + try { + var res = this.conv.write(chunk) + if (res && res.length) this.push(res) + done() + } catch (e) { + done(e) + } + } + + IconvLiteEncoderStream.prototype._flush = function (done) { + try { + var res = this.conv.end() + if (res && res.length) this.push(res) + done() + } catch (e) { + done(e) + } + } + + IconvLiteEncoderStream.prototype.collect = function (cb) { + var chunks = [] + this.on("error", cb) + this.on("data", function (chunk) { chunks.push(chunk) }) + this.on("end", function () { + cb(null, Buffer.concat(chunks)) + }) + return this + } + + // == Decoder stream ======================================================= + + function IconvLiteDecoderStream (conv, options) { + this.conv = conv + options = options || {} + options.encoding = this.encoding = "utf8" // We output strings. + Transform.call(this, options) + } + + IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { + constructor: { value: IconvLiteDecoderStream } + }) + + IconvLiteDecoderStream.prototype._transform = function (chunk, encoding, done) { + if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) { return done(new Error("Iconv decoding stream needs buffers as its input.")) } + try { + var res = this.conv.write(chunk) + if (res && res.length) this.push(res, this.encoding) + done() + } catch (e) { + done(e) + } + } + + IconvLiteDecoderStream.prototype._flush = function (done) { + try { + var res = this.conv.end() + if (res && res.length) this.push(res, this.encoding) + done() + } catch (e) { + done(e) + } + } + + IconvLiteDecoderStream.prototype.collect = function (cb) { + var res = "" + this.on("error", cb) + this.on("data", function (chunk) { res += chunk }) + this.on("end", function () { + cb(null, res) + }) + return this + } + + return { + IconvLiteEncoderStream: IconvLiteEncoderStream, + IconvLiteDecoderStream: IconvLiteDecoderStream + } +} diff --git a/bff/node_modules/iconv-lite/package.json b/bff/node_modules/iconv-lite/package.json new file mode 100644 index 0000000..2a57357 --- /dev/null +++ b/bff/node_modules/iconv-lite/package.json @@ -0,0 +1,70 @@ +{ + "name": "iconv-lite", + "description": "Convert character encodings in pure javascript.", + "version": "0.7.2", + "license": "MIT", + "keywords": [ + "iconv", + "convert", + "charset", + "icu" + ], + "author": "Alexander Shtuchkin ", + "main": "./lib/index.js", + "typings": "./lib/index.d.ts", + "homepage": "https://github.com/pillarjs/iconv-lite", + "bugs": "https://github.com/pillarjs/iconv-lite/issues", + "files": [ + "lib/", + "encodings/", + "types/" + ], + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "repository": { + "type": "git", + "url": "https://github.com/pillarjs/iconv-lite.git" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "lint": "eslint", + "lint:fix": "eslint --fix", + "test": "mocha --reporter spec --check-leaks --grep .", + "test:ci": "nyc --exclude test --reporter=lcovonly --reporter=text npm test", + "test:cov": "nyc --exclude test --reporter=html --reporter=text npm test", + "test:performance": "node --allow-natives-syntax performance/index.js", + "test:tap": "mocha --reporter tap --check-leaks --grep .", + "test:typescript": "tsc && attw --pack", + "test:webpack": "npm pack && mv iconv-lite-*.tgz test/webpack/iconv-lite.tgz && cd test/webpack && npm install && npm run test && rm iconv-lite.tgz", + "typegen": "node generation/gen-typings.js" + }, + "browser": { + "stream": false + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.4", + "@stylistic/eslint-plugin": "^5.1.0", + "@stylistic/eslint-plugin-js": "^4.1.0", + "@types/node": "^24.0.12", + "async": "^3.2.0", + "bench-node": "^0.10.0", + "eslint": "^9.0.0", + "errto": "^0.2.1", + "expect-type": "^1.2.0", + "iconv": "^2.3.5", + "mocha": "^6.2.2", + "neostandard": "^0.12.0", + "nyc": "^14.1.1", + "request": "^2.88.2", + "semver": "^6.3.0", + "typescript": "~5.9.2", + "unorm": "^1.6.0" + }, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } +} diff --git a/bff/node_modules/iconv-lite/types/encodings.d.ts b/bff/node_modules/iconv-lite/types/encodings.d.ts new file mode 100644 index 0000000..bedbe33 --- /dev/null +++ b/bff/node_modules/iconv-lite/types/encodings.d.ts @@ -0,0 +1,423 @@ +/* + * --------------------------------------------------------------------------------------------- + * DO NOT EDIT THIS FILE MANUALLY. + * THIS FILE IS AUTOMATICALLY GENERATED. + * TO UPDATE, RUN `npm run typegen` AND COMMIT THE CHANGES. + * --------------------------------------------------------------------------------------------- + */ + +/** A union of all supported encoding strings in `iconv-lite`. */ +export type Encoding = + | "10000" + | "10006" + | "10007" + | "10029" + | "10079" + | "10081" + | "1046" + | "1124" + | "1125" + | "1129" + | "1133" + | "1161" + | "1162" + | "1163" + | "1250" + | "1251" + | "1252" + | "1253" + | "1254" + | "1255" + | "1256" + | "1257" + | "1258" + | "20866" + | "21866" + | "28591" + | "28592" + | "28593" + | "28594" + | "28595" + | "28596" + | "28597" + | "28598" + | "28599" + | "28600" + | "28601" + | "28603" + | "28604" + | "28605" + | "28606" + | "437" + | "737" + | "775" + | "808" + | "850" + | "852" + | "855" + | "856" + | "857" + | "858" + | "860" + | "861" + | "862" + | "863" + | "864" + | "865" + | "866" + | "869" + | "874" + | "922" + | "932" + | "936" + | "949" + | "950" + | "ansix34" + | "ansix341968" + | "ansix341986" + | "arabic" + | "arabic8" + | "armscii8" + | "ascii" + | "ascii8bit" + | "asmo708" + | "base64" + | "big5" + | "big5hkscs" + | "binary" + | "celtic" + | "celtic8" + | "cesu8" + | "chinese" + | "cn" + | "cnbig5" + | "cp1046" + | "cp1124" + | "cp1125" + | "cp1129" + | "cp1133" + | "cp1161" + | "cp1162" + | "cp1163" + | "cp1250" + | "cp1251" + | "cp1252" + | "cp1253" + | "cp1254" + | "cp1255" + | "cp1256" + | "cp1257" + | "cp1258" + | "cp20866" + | "cp21866" + | "cp28591" + | "cp28592" + | "cp28593" + | "cp28594" + | "cp28595" + | "cp28596" + | "cp28597" + | "cp28598" + | "cp28599" + | "cp28600" + | "cp28601" + | "cp28603" + | "cp28604" + | "cp28605" + | "cp28606" + | "cp367" + | "cp437" + | "cp720" + | "cp737" + | "cp775" + | "cp808" + | "cp819" + | "cp850" + | "cp852" + | "cp855" + | "cp856" + | "cp857" + | "cp858" + | "cp860" + | "cp861" + | "cp862" + | "cp863" + | "cp864" + | "cp865" + | "cp866" + | "cp869" + | "cp874" + | "cp922" + | "cp932" + | "cp936" + | "cp949" + | "cp950" + | "cpgr" + | "csascii" + | "csbig5" + | "cseuckr" + | "csgb2312" + | "cshproman8" + | "csibm1046" + | "csibm1124" + | "csibm1125" + | "csibm1129" + | "csibm1133" + | "csibm1161" + | "csibm1162" + | "csibm1163" + | "csibm437" + | "csibm737" + | "csibm775" + | "csibm850" + | "csibm852" + | "csibm855" + | "csibm856" + | "csibm857" + | "csibm858" + | "csibm860" + | "csibm861" + | "csibm862" + | "csibm863" + | "csibm864" + | "csibm865" + | "csibm866" + | "csibm869" + | "csibm922" + | "csiso14jisc6220ro" + | "csiso58gb231280" + | "csisolatin1" + | "csisolatin2" + | "csisolatin3" + | "csisolatin4" + | "csisolatin5" + | "csisolatin6" + | "csisolatinarabic" + | "csisolatincyrillic" + | "csisolatingreek" + | "csisolatinhebrew" + | "cskoi8r" + | "csksc56011987" + | "csmacintosh" + | "cspc775baltic" + | "cspc850multilingual" + | "cspc862latinhebrew" + | "cspc8codepage437" + | "cspcp852" + | "csshiftjis" + | "cyrillic" + | "ecma114" + | "ecma118" + | "elot928" + | "euccn" + | "eucjp" + | "euckr" + | "gb18030" + | "gb198880" + | "gb2312" + | "gb23121980" + | "gb231280" + | "gbk" + | "georgianacademy" + | "georgianps" + | "greek" + | "greek8" + | "hebrew" + | "hebrew8" + | "hex" + | "hproman8" + | "ibm1046" + | "ibm1051" + | "ibm1124" + | "ibm1125" + | "ibm1129" + | "ibm1133" + | "ibm1161" + | "ibm1162" + | "ibm1163" + | "ibm1168" + | "ibm367" + | "ibm437" + | "ibm737" + | "ibm775" + | "ibm808" + | "ibm819" + | "ibm850" + | "ibm852" + | "ibm855" + | "ibm856" + | "ibm857" + | "ibm858" + | "ibm860" + | "ibm861" + | "ibm862" + | "ibm863" + | "ibm864" + | "ibm865" + | "ibm866" + | "ibm869" + | "ibm878" + | "ibm922" + | "iso646cn" + | "iso646irv" + | "iso646jp" + | "iso646us" + | "iso88591" + | "iso885910" + | "iso885911" + | "iso885913" + | "iso885914" + | "iso885915" + | "iso885916" + | "iso88592" + | "iso88593" + | "iso88594" + | "iso88595" + | "iso88596" + | "iso88597" + | "iso88598" + | "iso88599" + | "isoceltic" + | "isoir100" + | "isoir101" + | "isoir109" + | "isoir110" + | "isoir126" + | "isoir127" + | "isoir138" + | "isoir14" + | "isoir144" + | "isoir148" + | "isoir149" + | "isoir157" + | "isoir166" + | "isoir179" + | "isoir199" + | "isoir203" + | "isoir226" + | "isoir57" + | "isoir58" + | "isoir6" + | "jisc62201969ro" + | "jp" + | "koi8r" + | "koi8ru" + | "koi8t" + | "koi8u" + | "korean" + | "ksc5601" + | "ksc56011987" + | "ksc56011989" + | "l1" + | "l10" + | "l2" + | "l3" + | "l4" + | "l5" + | "l6" + | "l7" + | "l8" + | "l9" + | "latin1" + | "latin10" + | "latin2" + | "latin3" + | "latin4" + | "latin5" + | "latin6" + | "latin7" + | "latin8" + | "latin9" + | "mac" + | "maccenteuro" + | "maccroatian" + | "maccyrillic" + | "macgreek" + | "maciceland" + | "macintosh" + | "macroman" + | "macromania" + | "macthai" + | "macturkish" + | "macukraine" + | "mik" + | "ms31j" + | "ms932" + | "ms936" + | "ms949" + | "ms950" + | "msansi" + | "msarab" + | "mscyrl" + | "msee" + | "msgreek" + | "mshebr" + | "mskanji" + | "msturk" + | "pt154" + | "r8" + | "rk1048" + | "roman8" + | "shiftjis" + | "sjis" + | "strk10482002" + | "tcvn" + | "tcvn5712" + | "tcvn57121" + | "thai" + | "thai8" + | "tis620" + | "tis6200" + | "tis62025291" + | "tis62025330" + | "turkish" + | "turkish8" + | "ucs2" + | "ucs4" + | "ucs4be" + | "ucs4le" + | "unicode11utf7" + | "unicode11utf8" + | "us" + | "usascii" + | "utf16" + | "utf16be" + | "utf16le" + | "utf32" + | "utf32be" + | "utf32le" + | "utf7" + | "utf7imap" + | "utf8" + | "viscii" + | "win1250" + | "win1251" + | "win1252" + | "win1253" + | "win1254" + | "win1255" + | "win1256" + | "win1257" + | "win1258" + | "win874" + | "winbaltrim" + | "windows1250" + | "windows1251" + | "windows1252" + | "windows1253" + | "windows1254" + | "windows1255" + | "windows1256" + | "windows1257" + | "windows1258" + | "windows31j" + | "windows874" + | "windows932" + | "windows936" + | "windows949" + | "windows950" + | "xgbk" + | "xroman8" + | "xsjis" + | "xxbig5" + | (string & {}) diff --git a/bff/node_modules/inherits/LICENSE b/bff/node_modules/inherits/LICENSE new file mode 100644 index 0000000..dea3013 --- /dev/null +++ b/bff/node_modules/inherits/LICENSE @@ -0,0 +1,16 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. + diff --git a/bff/node_modules/inherits/README.md b/bff/node_modules/inherits/README.md new file mode 100644 index 0000000..b1c5665 --- /dev/null +++ b/bff/node_modules/inherits/README.md @@ -0,0 +1,42 @@ +Browser-friendly inheritance fully compatible with standard node.js +[inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor). + +This package exports standard `inherits` from node.js `util` module in +node environment, but also provides alternative browser-friendly +implementation through [browser +field](https://gist.github.com/shtylman/4339901). Alternative +implementation is a literal copy of standard one located in standalone +module to avoid requiring of `util`. It also has a shim for old +browsers with no `Object.create` support. + +While keeping you sure you are using standard `inherits` +implementation in node.js environment, it allows bundlers such as +[browserify](https://github.com/substack/node-browserify) to not +include full `util` package to your client code if all you need is +just `inherits` function. It worth, because browser shim for `util` +package is large and `inherits` is often the single function you need +from it. + +It's recommended to use this package instead of +`require('util').inherits` for any code that has chances to be used +not only in node.js but in browser too. + +## usage + +```js +var inherits = require('inherits'); +// then use exactly as the standard one +``` + +## note on version ~1.0 + +Version ~1.0 had completely different motivation and is not compatible +neither with 2.0 nor with standard node.js `inherits`. + +If you are using version ~1.0 and planning to switch to ~2.0, be +careful: + +* new version uses `super_` instead of `super` for referencing + superclass +* new version overwrites current prototype while old one preserves any + existing fields on it diff --git a/bff/node_modules/inherits/inherits.js b/bff/node_modules/inherits/inherits.js new file mode 100644 index 0000000..f71f2d9 --- /dev/null +++ b/bff/node_modules/inherits/inherits.js @@ -0,0 +1,9 @@ +try { + var util = require('util'); + /* istanbul ignore next */ + if (typeof util.inherits !== 'function') throw ''; + module.exports = util.inherits; +} catch (e) { + /* istanbul ignore next */ + module.exports = require('./inherits_browser.js'); +} diff --git a/bff/node_modules/inherits/inherits_browser.js b/bff/node_modules/inherits/inherits_browser.js new file mode 100644 index 0000000..86bbb3d --- /dev/null +++ b/bff/node_modules/inherits/inherits_browser.js @@ -0,0 +1,27 @@ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }) + } + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } + } +} diff --git a/bff/node_modules/inherits/package.json b/bff/node_modules/inherits/package.json new file mode 100644 index 0000000..37b4366 --- /dev/null +++ b/bff/node_modules/inherits/package.json @@ -0,0 +1,29 @@ +{ + "name": "inherits", + "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()", + "version": "2.0.4", + "keywords": [ + "inheritance", + "class", + "klass", + "oop", + "object-oriented", + "inherits", + "browser", + "browserify" + ], + "main": "./inherits.js", + "browser": "./inherits_browser.js", + "repository": "git://github.com/isaacs/inherits", + "license": "ISC", + "scripts": { + "test": "tap" + }, + "devDependencies": { + "tap": "^14.2.4" + }, + "files": [ + "inherits.js", + "inherits_browser.js" + ] +} diff --git a/bff/node_modules/ipaddr.js/LICENSE b/bff/node_modules/ipaddr.js/LICENSE new file mode 100644 index 0000000..f6b37b5 --- /dev/null +++ b/bff/node_modules/ipaddr.js/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2011-2017 whitequark + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/ipaddr.js/README.md b/bff/node_modules/ipaddr.js/README.md new file mode 100644 index 0000000..f57725b --- /dev/null +++ b/bff/node_modules/ipaddr.js/README.md @@ -0,0 +1,233 @@ +# ipaddr.js — an IPv6 and IPv4 address manipulation library [![Build Status](https://travis-ci.org/whitequark/ipaddr.js.svg)](https://travis-ci.org/whitequark/ipaddr.js) + +ipaddr.js is a small (1.9K minified and gzipped) library for manipulating +IP addresses in JavaScript environments. It runs on both CommonJS runtimes +(e.g. [nodejs]) and in a web browser. + +ipaddr.js allows you to verify and parse string representation of an IP +address, match it against a CIDR range or range list, determine if it falls +into some reserved ranges (examples include loopback and private ranges), +and convert between IPv4 and IPv4-mapped IPv6 addresses. + +[nodejs]: http://nodejs.org + +## Installation + +`npm install ipaddr.js` + +or + +`bower install ipaddr.js` + +## API + +ipaddr.js defines one object in the global scope: `ipaddr`. In CommonJS, +it is exported from the module: + +```js +var ipaddr = require('ipaddr.js'); +``` + +The API consists of several global methods and two classes: ipaddr.IPv6 and ipaddr.IPv4. + +### Global methods + +There are three global methods defined: `ipaddr.isValid`, `ipaddr.parse` and +`ipaddr.process`. All of them receive a string as a single parameter. + +The `ipaddr.isValid` method returns `true` if the address is a valid IPv4 or +IPv6 address, and `false` otherwise. It does not throw any exceptions. + +The `ipaddr.parse` method returns an object representing the IP address, +or throws an `Error` if the passed string is not a valid representation of an +IP address. + +The `ipaddr.process` method works just like the `ipaddr.parse` one, but it +automatically converts IPv4-mapped IPv6 addresses to their IPv4 counterparts +before returning. It is useful when you have a Node.js instance listening +on an IPv6 socket, and the `net.ivp6.bindv6only` sysctl parameter (or its +equivalent on non-Linux OS) is set to 0. In this case, you can accept IPv4 +connections on your IPv6-only socket, but the remote address will be mangled. +Use `ipaddr.process` method to automatically demangle it. + +### Object representation + +Parsing methods return an object which descends from `ipaddr.IPv6` or +`ipaddr.IPv4`. These objects share some properties, but most of them differ. + +#### Shared properties + +One can determine the type of address by calling `addr.kind()`. It will return +either `"ipv6"` or `"ipv4"`. + +An address can be converted back to its string representation with `addr.toString()`. +Note that this method: + * does not return the original string used to create the object (in fact, there is + no way of getting that string) + * returns a compact representation (when it is applicable) + +A `match(range, bits)` method can be used to check if the address falls into a +certain CIDR range. +Note that an address can be (obviously) matched only against an address of the same type. + +For example: + +```js +var addr = ipaddr.parse("2001:db8:1234::1"); +var range = ipaddr.parse("2001:db8::"); + +addr.match(range, 32); // => true +``` + +Alternatively, `match` can also be called as `match([range, bits])`. In this way, +it can be used together with the `parseCIDR(string)` method, which parses an IP +address together with a CIDR range. + +For example: + +```js +var addr = ipaddr.parse("2001:db8:1234::1"); + +addr.match(ipaddr.parseCIDR("2001:db8::/32")); // => true +``` + +A `range()` method returns one of predefined names for several special ranges defined +by IP protocols. The exact names (and their respective CIDR ranges) can be looked up +in the source: [IPv6 ranges] and [IPv4 ranges]. Some common ones include `"unicast"` +(the default one) and `"reserved"`. + +You can match against your own range list by using +`ipaddr.subnetMatch(address, rangeList, defaultName)` method. It can work with a mix of IPv6 or IPv4 addresses, and accepts a name-to-subnet map as the range list. For example: + +```js +var rangeList = { + documentationOnly: [ ipaddr.parse('2001:db8::'), 32 ], + tunnelProviders: [ + [ ipaddr.parse('2001:470::'), 32 ], // he.net + [ ipaddr.parse('2001:5c0::'), 32 ] // freenet6 + ] +}; +ipaddr.subnetMatch(ipaddr.parse('2001:470:8:66::1'), rangeList, 'unknown'); // => "tunnelProviders" +``` + +The addresses can be converted to their byte representation with `toByteArray()`. +(Actually, JavaScript mostly does not know about byte buffers. They are emulated with +arrays of numbers, each in range of 0..255.) + +```js +var bytes = ipaddr.parse('2a00:1450:8007::68').toByteArray(); // ipv6.google.com +bytes // => [42, 0x00, 0x14, 0x50, 0x80, 0x07, 0x00, , 0x00, 0x68 ] +``` + +The `ipaddr.IPv4` and `ipaddr.IPv6` objects have some methods defined, too. All of them +have the same interface for both protocols, and are similar to global methods. + +`ipaddr.IPvX.isValid(string)` can be used to check if the string is a valid address +for particular protocol, and `ipaddr.IPvX.parse(string)` is the error-throwing parser. + +`ipaddr.IPvX.isValid(string)` uses the same format for parsing as the POSIX `inet_ntoa` function, which accepts unusual formats like `0xc0.168.1.1` or `0x10000000`. The function `ipaddr.IPv4.isValidFourPartDecimal(string)` validates the IPv4 address and also ensures that it is written in four-part decimal format. + +[IPv6 ranges]: https://github.com/whitequark/ipaddr.js/blob/master/src/ipaddr.coffee#L186 +[IPv4 ranges]: https://github.com/whitequark/ipaddr.js/blob/master/src/ipaddr.coffee#L71 + +#### IPv6 properties + +Sometimes you will want to convert IPv6 not to a compact string representation (with +the `::` substitution); the `toNormalizedString()` method will return an address where +all zeroes are explicit. + +For example: + +```js +var addr = ipaddr.parse("2001:0db8::0001"); +addr.toString(); // => "2001:db8::1" +addr.toNormalizedString(); // => "2001:db8:0:0:0:0:0:1" +``` + +The `isIPv4MappedAddress()` method will return `true` if this address is an IPv4-mapped +one, and `toIPv4Address()` will return an IPv4 object address. + +To access the underlying binary representation of the address, use `addr.parts`. + +```js +var addr = ipaddr.parse("2001:db8:10::1234:DEAD"); +addr.parts // => [0x2001, 0xdb8, 0x10, 0, 0, 0, 0x1234, 0xdead] +``` + +A IPv6 zone index can be accessed via `addr.zoneId`: + +```js +var addr = ipaddr.parse("2001:db8::%eth0"); +addr.zoneId // => 'eth0' +``` + +#### IPv4 properties + +`toIPv4MappedAddress()` will return a corresponding IPv4-mapped IPv6 address. + +To access the underlying representation of the address, use `addr.octets`. + +```js +var addr = ipaddr.parse("192.168.1.1"); +addr.octets // => [192, 168, 1, 1] +``` + +`prefixLengthFromSubnetMask()` will return a CIDR prefix length for a valid IPv4 netmask or +null if the netmask is not valid. + +```js +ipaddr.IPv4.parse('255.255.255.240').prefixLengthFromSubnetMask() == 28 +ipaddr.IPv4.parse('255.192.164.0').prefixLengthFromSubnetMask() == null +``` + +`subnetMaskFromPrefixLength()` will return an IPv4 netmask for a valid CIDR prefix length. + +```js +ipaddr.IPv4.subnetMaskFromPrefixLength(24) == "255.255.255.0" +ipaddr.IPv4.subnetMaskFromPrefixLength(29) == "255.255.255.248" +``` + +`broadcastAddressFromCIDR()` will return the broadcast address for a given IPv4 interface and netmask in CIDR notation. +```js +ipaddr.IPv4.broadcastAddressFromCIDR("172.0.0.1/24") == "172.0.0.255" +``` +`networkAddressFromCIDR()` will return the network address for a given IPv4 interface and netmask in CIDR notation. +```js +ipaddr.IPv4.networkAddressFromCIDR("172.0.0.1/24") == "172.0.0.0" +``` + +#### Conversion + +IPv4 and IPv6 can be converted bidirectionally to and from network byte order (MSB) byte arrays. + +The `fromByteArray()` method will take an array and create an appropriate IPv4 or IPv6 object +if the input satisfies the requirements. For IPv4 it has to be an array of four 8-bit values, +while for IPv6 it has to be an array of sixteen 8-bit values. + +For example: +```js +var addr = ipaddr.fromByteArray([0x7f, 0, 0, 1]); +addr.toString(); // => "127.0.0.1" +``` + +or + +```js +var addr = ipaddr.fromByteArray([0x20, 1, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]) +addr.toString(); // => "2001:db8::1" +``` + +Both objects also offer a `toByteArray()` method, which returns an array in network byte order (MSB). + +For example: +```js +var addr = ipaddr.parse("127.0.0.1"); +addr.toByteArray(); // => [0x7f, 0, 0, 1] +``` + +or + +```js +var addr = ipaddr.parse("2001:db8::1"); +addr.toByteArray(); // => [0x20, 1, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] +``` diff --git a/bff/node_modules/ipaddr.js/ipaddr.min.js b/bff/node_modules/ipaddr.js/ipaddr.min.js new file mode 100644 index 0000000..b54a7cc --- /dev/null +++ b/bff/node_modules/ipaddr.js/ipaddr.min.js @@ -0,0 +1 @@ +(function(){var r,t,n,e,i,o,a,s;t={},s=this,"undefined"!=typeof module&&null!==module&&module.exports?module.exports=t:s.ipaddr=t,a=function(r,t,n,e){var i,o;if(r.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(i=0;e>0;){if((o=n-e)<0&&(o=0),r[i]>>o!=t[i]>>o)return!1;e-=n,i+=1}return!0},t.subnetMatch=function(r,t,n){var e,i,o,a,s;null==n&&(n="unicast");for(o in t)for(!(a=t[o])[0]||a[0]instanceof Array||(a=[a]),e=0,i=a.length;e=0;t=n+=-1){if(!((e=this.octets[t])in a))return null;if(o=a[e],i&&0!==o)return null;8!==o&&(i=!0),r+=o}return 32-r},r}(),n="(0?\\d+|0x[a-f0-9]+)",e={fourOctet:new RegExp("^"+n+"\\."+n+"\\."+n+"\\."+n+"$","i"),longValue:new RegExp("^"+n+"$","i")},t.IPv4.parser=function(r){var t,n,i,o,a;if(n=function(r){return"0"===r[0]&&"x"!==r[1]?parseInt(r,8):parseInt(r)},t=r.match(e.fourOctet))return function(){var r,e,o,a;for(a=[],r=0,e=(o=t.slice(1,6)).length;r4294967295||a<0)throw new Error("ipaddr: address outside defined range");return function(){var r,t;for(t=[],o=r=0;r<=24;o=r+=8)t.push(a>>o&255);return t}().reverse()}return null},t.IPv6=function(){function r(r,t){var n,e,i,o,a,s;if(16===r.length)for(this.parts=[],n=e=0;e<=14;n=e+=2)this.parts.push(r[n]<<8|r[n+1]);else{if(8!==r.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=r}for(i=0,o=(s=this.parts).length;it&&(r=n.index,t=n[0].length);return t<0?i:i.substring(0,r)+"::"+i.substring(r+t)},r.prototype.toByteArray=function(){var r,t,n,e,i;for(r=[],t=0,n=(i=this.parts).length;t>8),r.push(255&e);return r},r.prototype.toNormalizedString=function(){var r,t,n;return r=function(){var r,n,e,i;for(i=[],r=0,n=(e=this.parts).length;r>8,255&r,n>>8,255&n])},r.prototype.prefixLengthFromSubnetMask=function(){var r,t,n,e,i,o,a;for(a={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},r=0,i=!1,t=n=7;n>=0;t=n+=-1){if(!((e=this.parts[t])in a))return null;if(o=a[e],i&&0!==o)return null;16!==o&&(i=!0),r+=o}return 128-r},r}(),i="(?:[0-9a-f]+::?)+",o={zoneIndex:new RegExp("%[0-9a-z]{1,}","i"),native:new RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?(%[0-9a-z]{1,})?$","i"),transitional:new RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+n+"\\."+n+"\\."+n+"\\."+n+"(%[0-9a-z]{1,})?$","i")},r=function(r,t){var n,e,i,a,s,p;if(r.indexOf("::")!==r.lastIndexOf("::"))return null;for((p=(r.match(o.zoneIndex)||[])[0])&&(p=p.substring(1),r=r.replace(/%.+$/,"")),n=0,e=-1;(e=r.indexOf(":",e+1))>=0;)n++;if("::"===r.substr(0,2)&&n--,"::"===r.substr(-2,2)&&n--,n>t)return null;for(s=t-n,a=":";s--;)a+="0:";return":"===(r=r.replace("::",a))[0]&&(r=r.slice(1)),":"===r[r.length-1]&&(r=r.slice(0,-1)),t=function(){var t,n,e,o;for(o=[],t=0,n=(e=r.split(":")).length;t=0&&t<=32)return e=[this.parse(n[1]),t],Object.defineProperty(e,"toString",{value:function(){return this.join("/")}}),e;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},t.IPv4.subnetMaskFromPrefixLength=function(r){var t,n,e;if((r=parseInt(r))<0||r>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(e=[0,0,0,0],n=0,t=Math.floor(r/8);n=0&&t<=128)return e=[this.parse(n[1]),t],Object.defineProperty(e,"toString",{value:function(){return this.join("/")}}),e;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},t.isValid=function(r){return t.IPv6.isValid(r)||t.IPv4.isValid(r)},t.parse=function(r){if(t.IPv6.isValid(r))return t.IPv6.parse(r);if(t.IPv4.isValid(r))return t.IPv4.parse(r);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},t.parseCIDR=function(r){try{return t.IPv6.parseCIDR(r)}catch(n){n;try{return t.IPv4.parseCIDR(r)}catch(r){throw r,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},t.fromByteArray=function(r){var n;if(4===(n=r.length))return new t.IPv4(r);if(16===n)return new t.IPv6(r);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},t.process=function(r){var t;return t=this.parse(r),"ipv6"===t.kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(this); \ No newline at end of file diff --git a/bff/node_modules/ipaddr.js/lib/ipaddr.js b/bff/node_modules/ipaddr.js/lib/ipaddr.js new file mode 100644 index 0000000..18bd93b --- /dev/null +++ b/bff/node_modules/ipaddr.js/lib/ipaddr.js @@ -0,0 +1,673 @@ +(function() { + var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex; + + ipaddr = {}; + + root = this; + + if ((typeof module !== "undefined" && module !== null) && module.exports) { + module.exports = ipaddr; + } else { + root['ipaddr'] = ipaddr; + } + + matchCIDR = function(first, second, partSize, cidrBits) { + var part, shift; + if (first.length !== second.length) { + throw new Error("ipaddr: cannot match CIDR for objects with different lengths"); + } + part = 0; + while (cidrBits > 0) { + shift = partSize - cidrBits; + if (shift < 0) { + shift = 0; + } + if (first[part] >> shift !== second[part] >> shift) { + return false; + } + cidrBits -= partSize; + part += 1; + } + return true; + }; + + ipaddr.subnetMatch = function(address, rangeList, defaultName) { + var k, len, rangeName, rangeSubnets, subnet; + if (defaultName == null) { + defaultName = 'unicast'; + } + for (rangeName in rangeList) { + rangeSubnets = rangeList[rangeName]; + if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) { + rangeSubnets = [rangeSubnets]; + } + for (k = 0, len = rangeSubnets.length; k < len; k++) { + subnet = rangeSubnets[k]; + if (address.kind() === subnet[0].kind()) { + if (address.match.apply(address, subnet)) { + return rangeName; + } + } + } + } + return defaultName; + }; + + ipaddr.IPv4 = (function() { + function IPv4(octets) { + var k, len, octet; + if (octets.length !== 4) { + throw new Error("ipaddr: ipv4 octet count should be 4"); + } + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!((0 <= octet && octet <= 255))) { + throw new Error("ipaddr: ipv4 octet should fit in 8 bits"); + } + } + this.octets = octets; + } + + IPv4.prototype.kind = function() { + return 'ipv4'; + }; + + IPv4.prototype.toString = function() { + return this.octets.join("."); + }; + + IPv4.prototype.toNormalizedString = function() { + return this.toString(); + }; + + IPv4.prototype.toByteArray = function() { + return this.octets.slice(0); + }; + + IPv4.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== 'ipv4') { + throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one"); + } + return matchCIDR(this.octets, other.octets, 8, cidrRange); + }; + + IPv4.prototype.SpecialRanges = { + unspecified: [[new IPv4([0, 0, 0, 0]), 8]], + broadcast: [[new IPv4([255, 255, 255, 255]), 32]], + multicast: [[new IPv4([224, 0, 0, 0]), 4]], + linkLocal: [[new IPv4([169, 254, 0, 0]), 16]], + loopback: [[new IPv4([127, 0, 0, 0]), 8]], + carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]], + "private": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]], + reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]] + }; + + IPv4.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + + IPv4.prototype.toIPv4MappedAddress = function() { + return ipaddr.IPv6.parse("::ffff:" + (this.toString())); + }; + + IPv4.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, octet, stop, zeros, zerotable; + zerotable = { + 0: 8, + 128: 7, + 192: 6, + 224: 5, + 240: 4, + 248: 3, + 252: 2, + 254: 1, + 255: 0 + }; + cidr = 0; + stop = false; + for (i = k = 3; k >= 0; i = k += -1) { + octet = this.octets[i]; + if (octet in zerotable) { + zeros = zerotable[octet]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 8) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 32 - cidr; + }; + + return IPv4; + + })(); + + ipv4Part = "(0?\\d+|0x[a-f0-9]+)"; + + ipv4Regexes = { + fourOctet: new RegExp("^" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$", 'i'), + longValue: new RegExp("^" + ipv4Part + "$", 'i') + }; + + ipaddr.IPv4.parser = function(string) { + var match, parseIntAuto, part, shift, value; + parseIntAuto = function(string) { + if (string[0] === "0" && string[1] !== "x") { + return parseInt(string, 8); + } else { + return parseInt(string); + } + }; + if (match = string.match(ipv4Regexes.fourOctet)) { + return (function() { + var k, len, ref, results; + ref = match.slice(1, 6); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseIntAuto(part)); + } + return results; + })(); + } else if (match = string.match(ipv4Regexes.longValue)) { + value = parseIntAuto(match[1]); + if (value > 0xffffffff || value < 0) { + throw new Error("ipaddr: address outside defined range"); + } + return ((function() { + var k, results; + results = []; + for (shift = k = 0; k <= 24; shift = k += 8) { + results.push((value >> shift) & 0xff); + } + return results; + })()).reverse(); + } else { + return null; + } + }; + + ipaddr.IPv6 = (function() { + function IPv6(parts, zoneId) { + var i, k, l, len, part, ref; + if (parts.length === 16) { + this.parts = []; + for (i = k = 0; k <= 14; i = k += 2) { + this.parts.push((parts[i] << 8) | parts[i + 1]); + } + } else if (parts.length === 8) { + this.parts = parts; + } else { + throw new Error("ipaddr: ipv6 part count should be 8 or 16"); + } + ref = this.parts; + for (l = 0, len = ref.length; l < len; l++) { + part = ref[l]; + if (!((0 <= part && part <= 0xffff))) { + throw new Error("ipaddr: ipv6 part should fit in 16 bits"); + } + } + if (zoneId) { + this.zoneId = zoneId; + } + } + + IPv6.prototype.kind = function() { + return 'ipv6'; + }; + + IPv6.prototype.toString = function() { + return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, '::'); + }; + + IPv6.prototype.toRFC5952String = function() { + var bestMatchIndex, bestMatchLength, match, regex, string; + regex = /((^|:)(0(:|$)){2,})/g; + string = this.toNormalizedString(); + bestMatchIndex = 0; + bestMatchLength = -1; + while ((match = regex.exec(string))) { + if (match[0].length > bestMatchLength) { + bestMatchIndex = match.index; + bestMatchLength = match[0].length; + } + } + if (bestMatchLength < 0) { + return string; + } + return string.substring(0, bestMatchIndex) + '::' + string.substring(bestMatchIndex + bestMatchLength); + }; + + IPv6.prototype.toByteArray = function() { + var bytes, k, len, part, ref; + bytes = []; + ref = this.parts; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + bytes.push(part >> 8); + bytes.push(part & 0xff); + } + return bytes; + }; + + IPv6.prototype.toNormalizedString = function() { + var addr, part, suffix; + addr = ((function() { + var k, len, ref, results; + ref = this.parts; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(part.toString(16)); + } + return results; + }).call(this)).join(":"); + suffix = ''; + if (this.zoneId) { + suffix = '%' + this.zoneId; + } + return addr + suffix; + }; + + IPv6.prototype.toFixedLengthString = function() { + var addr, part, suffix; + addr = ((function() { + var k, len, ref, results; + ref = this.parts; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(part.toString(16).padStart(4, '0')); + } + return results; + }).call(this)).join(":"); + suffix = ''; + if (this.zoneId) { + suffix = '%' + this.zoneId; + } + return addr + suffix; + }; + + IPv6.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== 'ipv6') { + throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one"); + } + return matchCIDR(this.parts, other.parts, 16, cidrRange); + }; + + IPv6.prototype.SpecialRanges = { + unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128], + linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10], + multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8], + loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128], + uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7], + ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96], + rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96], + rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96], + '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16], + teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32], + reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]] + }; + + IPv6.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + + IPv6.prototype.isIPv4MappedAddress = function() { + return this.range() === 'ipv4Mapped'; + }; + + IPv6.prototype.toIPv4Address = function() { + var high, low, ref; + if (!this.isIPv4MappedAddress()) { + throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4"); + } + ref = this.parts.slice(-2), high = ref[0], low = ref[1]; + return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]); + }; + + IPv6.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, part, stop, zeros, zerotable; + zerotable = { + 0: 16, + 32768: 15, + 49152: 14, + 57344: 13, + 61440: 12, + 63488: 11, + 64512: 10, + 65024: 9, + 65280: 8, + 65408: 7, + 65472: 6, + 65504: 5, + 65520: 4, + 65528: 3, + 65532: 2, + 65534: 1, + 65535: 0 + }; + cidr = 0; + stop = false; + for (i = k = 7; k >= 0; i = k += -1) { + part = this.parts[i]; + if (part in zerotable) { + zeros = zerotable[part]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 16) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 128 - cidr; + }; + + return IPv6; + + })(); + + ipv6Part = "(?:[0-9a-f]+::?)+"; + + zoneIndex = "%[0-9a-z]{1,}"; + + ipv6Regexes = { + zoneIndex: new RegExp(zoneIndex, 'i'), + "native": new RegExp("^(::)?(" + ipv6Part + ")?([0-9a-f]+)?(::)?(" + zoneIndex + ")?$", 'i'), + transitional: new RegExp(("^((?:" + ipv6Part + ")|(?:::)(?:" + ipv6Part + ")?)") + (ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part) + ("(" + zoneIndex + ")?$"), 'i') + }; + + expandIPv6 = function(string, parts) { + var colonCount, lastColon, part, replacement, replacementCount, zoneId; + if (string.indexOf('::') !== string.lastIndexOf('::')) { + return null; + } + zoneId = (string.match(ipv6Regexes['zoneIndex']) || [])[0]; + if (zoneId) { + zoneId = zoneId.substring(1); + string = string.replace(/%.+$/, ''); + } + colonCount = 0; + lastColon = -1; + while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) { + colonCount++; + } + if (string.substr(0, 2) === '::') { + colonCount--; + } + if (string.substr(-2, 2) === '::') { + colonCount--; + } + if (colonCount > parts) { + return null; + } + replacementCount = parts - colonCount; + replacement = ':'; + while (replacementCount--) { + replacement += '0:'; + } + string = string.replace('::', replacement); + if (string[0] === ':') { + string = string.slice(1); + } + if (string[string.length - 1] === ':') { + string = string.slice(0, -1); + } + parts = (function() { + var k, len, ref, results; + ref = string.split(":"); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseInt(part, 16)); + } + return results; + })(); + return { + parts: parts, + zoneId: zoneId + }; + }; + + ipaddr.IPv6.parser = function(string) { + var addr, k, len, match, octet, octets, zoneId; + if (ipv6Regexes['native'].test(string)) { + return expandIPv6(string, 8); + } else if (match = string.match(ipv6Regexes['transitional'])) { + zoneId = match[6] || ''; + addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6); + if (addr.parts) { + octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])]; + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!((0 <= octet && octet <= 255))) { + return null; + } + } + addr.parts.push(octets[0] << 8 | octets[1]); + addr.parts.push(octets[2] << 8 | octets[3]); + return { + parts: addr.parts, + zoneId: addr.zoneId + }; + } + } + return null; + }; + + ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) { + return this.parser(string) !== null; + }; + + ipaddr.IPv4.isValid = function(string) { + var e; + try { + new this(this.parser(string)); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + + ipaddr.IPv4.isValidFourPartDecimal = function(string) { + if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/)) { + return true; + } else { + return false; + } + }; + + ipaddr.IPv6.isValid = function(string) { + var addr, e; + if (typeof string === "string" && string.indexOf(":") === -1) { + return false; + } + try { + addr = this.parser(string); + new this(addr.parts, addr.zoneId); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + + ipaddr.IPv4.parse = function(string) { + var parts; + parts = this.parser(string); + if (parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(parts); + }; + + ipaddr.IPv6.parse = function(string) { + var addr; + addr = this.parser(string); + if (addr.parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(addr.parts, addr.zoneId); + }; + + ipaddr.IPv4.parseCIDR = function(string) { + var maskLength, match, parsed; + if (match = string.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 32) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, 'toString', { + value: function() { + return this.join('/'); + } + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range"); + }; + + ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) { + var filledOctetCount, j, octets; + prefix = parseInt(prefix); + if (prefix < 0 || prefix > 32) { + throw new Error('ipaddr: invalid IPv4 prefix length'); + } + octets = [0, 0, 0, 0]; + j = 0; + filledOctetCount = Math.floor(prefix / 8); + while (j < filledOctetCount) { + octets[j] = 255; + j++; + } + if (filledOctetCount < 4) { + octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8); + } + return new this(octets); + }; + + ipaddr.IPv4.broadcastAddressFromCIDR = function(string) { + var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255); + i++; + } + return new this(octets); + } catch (error1) { + error = error1; + throw new Error('ipaddr: the address does not have IPv4 CIDR format'); + } + }; + + ipaddr.IPv4.networkAddressFromCIDR = function(string) { + var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10)); + i++; + } + return new this(octets); + } catch (error1) { + error = error1; + throw new Error('ipaddr: the address does not have IPv4 CIDR format'); + } + }; + + ipaddr.IPv6.parseCIDR = function(string) { + var maskLength, match, parsed; + if (match = string.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 128) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, 'toString', { + value: function() { + return this.join('/'); + } + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range"); + }; + + ipaddr.isValid = function(string) { + return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string); + }; + + ipaddr.parse = function(string) { + if (ipaddr.IPv6.isValid(string)) { + return ipaddr.IPv6.parse(string); + } else if (ipaddr.IPv4.isValid(string)) { + return ipaddr.IPv4.parse(string); + } else { + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format"); + } + }; + + ipaddr.parseCIDR = function(string) { + var e; + try { + return ipaddr.IPv6.parseCIDR(string); + } catch (error1) { + e = error1; + try { + return ipaddr.IPv4.parseCIDR(string); + } catch (error1) { + e = error1; + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format"); + } + } + }; + + ipaddr.fromByteArray = function(bytes) { + var length; + length = bytes.length; + if (length === 4) { + return new ipaddr.IPv4(bytes); + } else if (length === 16) { + return new ipaddr.IPv6(bytes); + } else { + throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address"); + } + }; + + ipaddr.process = function(string) { + var addr; + addr = this.parse(string); + if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) { + return addr.toIPv4Address(); + } else { + return addr; + } + }; + +}).call(this); diff --git a/bff/node_modules/ipaddr.js/lib/ipaddr.js.d.ts b/bff/node_modules/ipaddr.js/lib/ipaddr.js.d.ts new file mode 100644 index 0000000..52174b6 --- /dev/null +++ b/bff/node_modules/ipaddr.js/lib/ipaddr.js.d.ts @@ -0,0 +1,68 @@ +declare module "ipaddr.js" { + type IPv4Range = 'unicast' | 'unspecified' | 'broadcast' | 'multicast' | 'linkLocal' | 'loopback' | 'carrierGradeNat' | 'private' | 'reserved'; + type IPv6Range = 'unicast' | 'unspecified' | 'linkLocal' | 'multicast' | 'loopback' | 'uniqueLocal' | 'ipv4Mapped' | 'rfc6145' | 'rfc6052' | '6to4' | 'teredo' | 'reserved'; + + interface RangeList { + [name: string]: [T, number] | [T, number][]; + } + + // Common methods/properties for IPv4 and IPv6 classes. + class IP { + prefixLengthFromSubnetMask(): number | null; + toByteArray(): number[]; + toNormalizedString(): string; + toString(): string; + } + + namespace Address { + export function isValid(addr: string): boolean; + export function fromByteArray(bytes: number[]): IPv4 | IPv6; + export function parse(addr: string): IPv4 | IPv6; + export function parseCIDR(mask: string): [IPv4 | IPv6, number]; + export function process(addr: string): IPv4 | IPv6; + export function subnetMatch(addr: IPv4, rangeList: RangeList, defaultName?: string): string; + export function subnetMatch(addr: IPv6, rangeList: RangeList, defaultName?: string): string; + + export class IPv4 extends IP { + static broadcastAddressFromCIDR(addr: string): IPv4; + static isIPv4(addr: string): boolean; + static isValidFourPartDecimal(addr: string): boolean; + static isValid(addr: string): boolean; + static networkAddressFromCIDR(addr: string): IPv4; + static parse(addr: string): IPv4; + static parseCIDR(addr: string): [IPv4, number]; + static subnetMaskFromPrefixLength(prefix: number): IPv4; + constructor(octets: number[]); + octets: number[] + + kind(): 'ipv4'; + match(addr: IPv4, bits: number): boolean; + match(mask: [IPv4, number]): boolean; + range(): IPv4Range; + subnetMatch(rangeList: RangeList, defaultName?: string): string; + toIPv4MappedAddress(): IPv6; + } + + export class IPv6 extends IP { + static broadcastAddressFromCIDR(addr: string): IPv6; + static isIPv6(addr: string): boolean; + static isValid(addr: string): boolean; + static parse(addr: string): IPv6; + static parseCIDR(addr: string): [IPv6, number]; + static subnetMaskFromPrefixLength(prefix: number): IPv6; + constructor(parts: number[]); + parts: number[] + zoneId?: string + + isIPv4MappedAddress(): boolean; + kind(): 'ipv6'; + match(addr: IPv6, bits: number): boolean; + match(mask: [IPv6, number]): boolean; + range(): IPv6Range; + subnetMatch(rangeList: RangeList, defaultName?: string): string; + toIPv4Address(): IPv4; + } + } + + export = Address; +} diff --git a/bff/node_modules/ipaddr.js/package.json b/bff/node_modules/ipaddr.js/package.json new file mode 100644 index 0000000..f4d3547 --- /dev/null +++ b/bff/node_modules/ipaddr.js/package.json @@ -0,0 +1,35 @@ +{ + "name": "ipaddr.js", + "description": "A library for manipulating IPv4 and IPv6 addresses in JavaScript.", + "version": "1.9.1", + "author": "whitequark ", + "directories": { + "lib": "./lib" + }, + "dependencies": {}, + "devDependencies": { + "coffee-script": "~1.12.6", + "nodeunit": "^0.11.3", + "uglify-js": "~3.0.19" + }, + "scripts": { + "test": "cake build test" + }, + "files": [ + "lib/", + "LICENSE", + "ipaddr.min.js" + ], + "keywords": [ + "ip", + "ipv4", + "ipv6" + ], + "repository": "git://github.com/whitequark/ipaddr.js", + "main": "./lib/ipaddr.js", + "engines": { + "node": ">= 0.10" + }, + "license": "MIT", + "types": "./lib/ipaddr.js.d.ts" +} diff --git a/bff/node_modules/is-promise/LICENSE b/bff/node_modules/is-promise/LICENSE new file mode 100644 index 0000000..27cc9f3 --- /dev/null +++ b/bff/node_modules/is-promise/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 Forbes Lindesay + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/bff/node_modules/is-promise/index.d.ts b/bff/node_modules/is-promise/index.d.ts new file mode 100644 index 0000000..2107b42 --- /dev/null +++ b/bff/node_modules/is-promise/index.d.ts @@ -0,0 +1,2 @@ +declare function isPromise(obj: PromiseLike | S): obj is PromiseLike; +export default isPromise; diff --git a/bff/node_modules/is-promise/index.js b/bff/node_modules/is-promise/index.js new file mode 100644 index 0000000..1bed087 --- /dev/null +++ b/bff/node_modules/is-promise/index.js @@ -0,0 +1,6 @@ +module.exports = isPromise; +module.exports.default = isPromise; + +function isPromise(obj) { + return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; +} diff --git a/bff/node_modules/is-promise/index.mjs b/bff/node_modules/is-promise/index.mjs new file mode 100644 index 0000000..bf9e99b --- /dev/null +++ b/bff/node_modules/is-promise/index.mjs @@ -0,0 +1,3 @@ +export default function isPromise(obj) { + return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; +} diff --git a/bff/node_modules/is-promise/package.json b/bff/node_modules/is-promise/package.json new file mode 100644 index 0000000..2a3c540 --- /dev/null +++ b/bff/node_modules/is-promise/package.json @@ -0,0 +1,30 @@ +{ + "name": "is-promise", + "version": "4.0.0", + "description": "Test whether an object looks like a promises-a+ promise", + "main": "./index.js", + "scripts": { + "test": "node test" + }, + "files": [ + "index.js", + "index.mjs", + "index.d.ts" + ], + "exports": { + ".": [ + { + "import": "./index.mjs", + "require": "./index.js", + "default": "./index.js" + }, + "./index.js" + ] + }, + "repository": { + "type": "git", + "url": "https://github.com/then/is-promise.git" + }, + "author": "ForbesLindesay", + "license": "MIT" +} diff --git a/bff/node_modules/is-promise/readme.md b/bff/node_modules/is-promise/readme.md new file mode 100644 index 0000000..d53d34b --- /dev/null +++ b/bff/node_modules/is-promise/readme.md @@ -0,0 +1,33 @@ + + +# is-promise + + Test whether an object looks like a promises-a+ promise + + [![Build Status](https://img.shields.io/travis/then/is-promise/master.svg)](https://travis-ci.org/then/is-promise) + [![Dependency Status](https://img.shields.io/david/then/is-promise.svg)](https://david-dm.org/then/is-promise) + [![NPM version](https://img.shields.io/npm/v/is-promise.svg)](https://www.npmjs.org/package/is-promise) + + + +## Installation + + $ npm install is-promise + +You can also use it client side via npm. + +## API + +```typescript +import isPromise from 'is-promise'; + +isPromise(Promise.resolve());//=>true +isPromise({then:function () {...}});//=>true +isPromise(null);//=>false +isPromise({});//=>false +isPromise({then: true})//=>false +``` + +## License + + MIT diff --git a/bff/node_modules/isarray/.npmignore b/bff/node_modules/isarray/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/bff/node_modules/isarray/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/bff/node_modules/isarray/.travis.yml b/bff/node_modules/isarray/.travis.yml new file mode 100644 index 0000000..cc4dba2 --- /dev/null +++ b/bff/node_modules/isarray/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/bff/node_modules/isarray/Makefile b/bff/node_modules/isarray/Makefile new file mode 100644 index 0000000..787d56e --- /dev/null +++ b/bff/node_modules/isarray/Makefile @@ -0,0 +1,6 @@ + +test: + @node_modules/.bin/tape test.js + +.PHONY: test + diff --git a/bff/node_modules/isarray/README.md b/bff/node_modules/isarray/README.md new file mode 100644 index 0000000..16d2c59 --- /dev/null +++ b/bff/node_modules/isarray/README.md @@ -0,0 +1,60 @@ + +# isarray + +`Array#isArray` for older browsers. + +[![build status](https://secure.travis-ci.org/juliangruber/isarray.svg)](http://travis-ci.org/juliangruber/isarray) +[![downloads](https://img.shields.io/npm/dm/isarray.svg)](https://www.npmjs.org/package/isarray) + +[![browser support](https://ci.testling.com/juliangruber/isarray.png) +](https://ci.testling.com/juliangruber/isarray) + +## Usage + +```js +var isArray = require('isarray'); + +console.log(isArray([])); // => true +console.log(isArray({})); // => false +``` + +## Installation + +With [npm](http://npmjs.org) do + +```bash +$ npm install isarray +``` + +Then bundle for the browser with +[browserify](https://github.com/substack/browserify). + +With [component](http://component.io) do + +```bash +$ component install juliangruber/isarray +``` + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/isarray/component.json b/bff/node_modules/isarray/component.json new file mode 100644 index 0000000..9e31b68 --- /dev/null +++ b/bff/node_modules/isarray/component.json @@ -0,0 +1,19 @@ +{ + "name" : "isarray", + "description" : "Array#isArray for older browsers", + "version" : "0.0.1", + "repository" : "juliangruber/isarray", + "homepage": "https://github.com/juliangruber/isarray", + "main" : "index.js", + "scripts" : [ + "index.js" + ], + "dependencies" : {}, + "keywords": ["browser","isarray","array"], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT" +} diff --git a/bff/node_modules/isarray/index.js b/bff/node_modules/isarray/index.js new file mode 100644 index 0000000..a57f634 --- /dev/null +++ b/bff/node_modules/isarray/index.js @@ -0,0 +1,5 @@ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; diff --git a/bff/node_modules/isarray/package.json b/bff/node_modules/isarray/package.json new file mode 100644 index 0000000..1a4317a --- /dev/null +++ b/bff/node_modules/isarray/package.json @@ -0,0 +1,45 @@ +{ + "name": "isarray", + "description": "Array#isArray for older browsers", + "version": "1.0.0", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/isarray.git" + }, + "homepage": "https://github.com/juliangruber/isarray", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "tape": "~2.13.4" + }, + "keywords": [ + "browser", + "isarray", + "array" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test.js", + "browsers": [ + "ie/8..latest", + "firefox/17..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "scripts": { + "test": "tape test.js" + } +} diff --git a/bff/node_modules/isarray/test.js b/bff/node_modules/isarray/test.js new file mode 100644 index 0000000..e0c3444 --- /dev/null +++ b/bff/node_modules/isarray/test.js @@ -0,0 +1,20 @@ +var isArray = require('./'); +var test = require('tape'); + +test('is array', function(t){ + t.ok(isArray([])); + t.notOk(isArray({})); + t.notOk(isArray(null)); + t.notOk(isArray(false)); + + var obj = {}; + obj[0] = true; + t.notOk(isArray(obj)); + + var arr = []; + arr.foo = 'bar'; + t.ok(isArray(arr)); + + t.end(); +}); + diff --git a/bff/node_modules/jsonwebtoken/LICENSE b/bff/node_modules/jsonwebtoken/LICENSE new file mode 100644 index 0000000..bcd1854 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 Auth0, Inc. (http://auth0.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/jsonwebtoken/README.md b/bff/node_modules/jsonwebtoken/README.md new file mode 100644 index 0000000..4e20dd9 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/README.md @@ -0,0 +1,396 @@ +# jsonwebtoken + +| **Build** | **Dependency** | +|-----------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------| +| [![Build Status](https://secure.travis-ci.org/auth0/node-jsonwebtoken.svg?branch=master)](http://travis-ci.org/auth0/node-jsonwebtoken) | [![Dependency Status](https://david-dm.org/auth0/node-jsonwebtoken.svg)](https://david-dm.org/auth0/node-jsonwebtoken) | + + +An implementation of [JSON Web Tokens](https://tools.ietf.org/html/rfc7519). + +This was developed against `draft-ietf-oauth-json-web-token-08`. It makes use of [node-jws](https://github.com/brianloveswords/node-jws) + +# Install + +```bash +$ npm install jsonwebtoken +``` + +# Migration notes + +* [From v8 to v9](https://github.com/auth0/node-jsonwebtoken/wiki/Migration-Notes:-v8-to-v9) +* [From v7 to v8](https://github.com/auth0/node-jsonwebtoken/wiki/Migration-Notes:-v7-to-v8) + +# Usage + +### jwt.sign(payload, secretOrPrivateKey, [options, callback]) + +(Asynchronous) If a callback is supplied, the callback is called with the `err` or the JWT. + +(Synchronous) Returns the JsonWebToken as string + +`payload` could be an object literal, buffer or string representing valid JSON. +> **Please _note_ that** `exp` or any other claim is only set if the payload is an object literal. Buffer or string payloads are not checked for JSON validity. + +> If `payload` is not a buffer or a string, it will be coerced into a string using `JSON.stringify`. + +`secretOrPrivateKey` is a string (utf-8 encoded), buffer, object, or KeyObject containing either the secret for HMAC algorithms or the PEM +encoded private key for RSA and ECDSA. In case of a private key with passphrase an object `{ key, passphrase }` can be used (based on [crypto documentation](https://nodejs.org/api/crypto.html#crypto_sign_sign_private_key_output_format)), in this case be sure you pass the `algorithm` option. +When signing with RSA algorithms the minimum modulus length is 2048 except when the allowInsecureKeySizes option is set to true. Private keys below this size will be rejected with an error. + +`options`: + +* `algorithm` (default: `HS256`) +* `expiresIn`: expressed in seconds or a string describing a time span [vercel/ms](https://github.com/vercel/ms). + > Eg: `60`, `"2 days"`, `"10h"`, `"7d"`. A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default (`"120"` is equal to `"120ms"`). +* `notBefore`: expressed in seconds or a string describing a time span [vercel/ms](https://github.com/vercel/ms). + > Eg: `60`, `"2 days"`, `"10h"`, `"7d"`. A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default (`"120"` is equal to `"120ms"`). +* `audience` +* `issuer` +* `jwtid` +* `subject` +* `noTimestamp` +* `header` +* `keyid` +* `mutatePayload`: if true, the sign function will modify the payload object directly. This is useful if you need a raw reference to the payload after claims have been applied to it but before it has been encoded into a token. +* `allowInsecureKeySizes`: if true allows private keys with a modulus below 2048 to be used for RSA +* `allowInvalidAsymmetricKeyTypes`: if true, allows asymmetric keys which do not match the specified algorithm. This option is intended only for backwards compatability and should be avoided. + + + +> There are no default values for `expiresIn`, `notBefore`, `audience`, `subject`, `issuer`. These claims can also be provided in the payload directly with `exp`, `nbf`, `aud`, `sub` and `iss` respectively, but you **_can't_** include in both places. + +Remember that `exp`, `nbf` and `iat` are **NumericDate**, see related [Token Expiration (exp claim)](#token-expiration-exp-claim) + + +The header can be customized via the `options.header` object. + +Generated jwts will include an `iat` (issued at) claim by default unless `noTimestamp` is specified. If `iat` is inserted in the payload, it will be used instead of the real timestamp for calculating other things like `exp` given a timespan in `options.expiresIn`. + +Synchronous Sign with default (HMAC SHA256) + +```js +var jwt = require('jsonwebtoken'); +var token = jwt.sign({ foo: 'bar' }, 'shhhhh'); +``` + +Synchronous Sign with RSA SHA256 +```js +// sign with RSA SHA256 +var privateKey = fs.readFileSync('private.key'); +var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' }); +``` + +Sign asynchronously +```js +jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256' }, function(err, token) { + console.log(token); +}); +``` + +Backdate a jwt 30 seconds +```js +var older_token = jwt.sign({ foo: 'bar', iat: Math.floor(Date.now() / 1000) - 30 }, 'shhhhh'); +``` + +#### Token Expiration (exp claim) + +The standard for JWT defines an `exp` claim for expiration. The expiration is represented as a **NumericDate**: + +> A JSON numeric value representing the number of seconds from 1970-01-01T00:00:00Z UTC until the specified UTC date/time, ignoring leap seconds. This is equivalent to the IEEE Std 1003.1, 2013 Edition [POSIX.1] definition "Seconds Since the Epoch", in which each day is accounted for by exactly 86400 seconds, other than that non-integer values can be represented. See RFC 3339 [RFC3339] for details regarding date/times in general and UTC in particular. + +This means that the `exp` field should contain the number of seconds since the epoch. + +Signing a token with 1 hour of expiration: + +```javascript +jwt.sign({ + exp: Math.floor(Date.now() / 1000) + (60 * 60), + data: 'foobar' +}, 'secret'); +``` + +Another way to generate a token like this with this library is: + +```javascript +jwt.sign({ + data: 'foobar' +}, 'secret', { expiresIn: 60 * 60 }); + +//or even better: + +jwt.sign({ + data: 'foobar' +}, 'secret', { expiresIn: '1h' }); +``` + +### jwt.verify(token, secretOrPublicKey, [options, callback]) + +(Asynchronous) If a callback is supplied, function acts asynchronously. The callback is called with the decoded payload if the signature is valid and optional expiration, audience, or issuer are valid. If not, it will be called with the error. + +(Synchronous) If a callback is not supplied, function acts synchronously. Returns the payload decoded if the signature is valid and optional expiration, audience, or issuer are valid. If not, it will throw the error. + +> __Warning:__ When the token comes from an untrusted source (e.g. user input or external requests), the returned decoded payload should be treated like any other user input; please make sure to sanitize and only work with properties that are expected + +`token` is the JsonWebToken string + +`secretOrPublicKey` is a string (utf-8 encoded), buffer, or KeyObject containing either the secret for HMAC algorithms, or the PEM +encoded public key for RSA and ECDSA. +If `jwt.verify` is called asynchronous, `secretOrPublicKey` can be a function that should fetch the secret or public key. See below for a detailed example + +As mentioned in [this comment](https://github.com/auth0/node-jsonwebtoken/issues/208#issuecomment-231861138), there are other libraries that expect base64 encoded secrets (random bytes encoded using base64), if that is your case you can pass `Buffer.from(secret, 'base64')`, by doing this the secret will be decoded using base64 and the token verification will use the original random bytes. + +`options` + +* `algorithms`: List of strings with the names of the allowed algorithms. For instance, `["HS256", "HS384"]`. + > If not specified a defaults will be used based on the type of key provided + > * secret - ['HS256', 'HS384', 'HS512'] + > * rsa - ['RS256', 'RS384', 'RS512'] + > * ec - ['ES256', 'ES384', 'ES512'] + > * default - ['RS256', 'RS384', 'RS512'] +* `audience`: if you want to check audience (`aud`), provide a value here. The audience can be checked against a string, a regular expression or a list of strings and/or regular expressions. + > Eg: `"urn:foo"`, `/urn:f[o]{2}/`, `[/urn:f[o]{2}/, "urn:bar"]` +* `complete`: return an object with the decoded `{ payload, header, signature }` instead of only the usual content of the payload. +* `issuer` (optional): string or array of strings of valid values for the `iss` field. +* `jwtid` (optional): if you want to check JWT ID (`jti`), provide a string value here. +* `ignoreExpiration`: if `true` do not validate the expiration of the token. +* `ignoreNotBefore`... +* `subject`: if you want to check subject (`sub`), provide a value here +* `clockTolerance`: number of seconds to tolerate when checking the `nbf` and `exp` claims, to deal with small clock differences among different servers +* `maxAge`: the maximum allowed age for tokens to still be valid. It is expressed in seconds or a string describing a time span [vercel/ms](https://github.com/vercel/ms). + > Eg: `1000`, `"2 days"`, `"10h"`, `"7d"`. A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc), otherwise milliseconds unit is used by default (`"120"` is equal to `"120ms"`). +* `clockTimestamp`: the time in seconds that should be used as the current time for all necessary comparisons. +* `nonce`: if you want to check `nonce` claim, provide a string value here. It is used on Open ID for the ID Tokens. ([Open ID implementation notes](https://openid.net/specs/openid-connect-core-1_0.html#NonceNotes)) +* `allowInvalidAsymmetricKeyTypes`: if true, allows asymmetric keys which do not match the specified algorithm. This option is intended only for backwards compatability and should be avoided. + +```js +// verify a token symmetric - synchronous +var decoded = jwt.verify(token, 'shhhhh'); +console.log(decoded.foo) // bar + +// verify a token symmetric +jwt.verify(token, 'shhhhh', function(err, decoded) { + console.log(decoded.foo) // bar +}); + +// invalid token - synchronous +try { + var decoded = jwt.verify(token, 'wrong-secret'); +} catch(err) { + // err +} + +// invalid token +jwt.verify(token, 'wrong-secret', function(err, decoded) { + // err + // decoded undefined +}); + +// verify a token asymmetric +var cert = fs.readFileSync('public.pem'); // get public key +jwt.verify(token, cert, function(err, decoded) { + console.log(decoded.foo) // bar +}); + +// verify audience +var cert = fs.readFileSync('public.pem'); // get public key +jwt.verify(token, cert, { audience: 'urn:foo' }, function(err, decoded) { + // if audience mismatch, err == invalid audience +}); + +// verify issuer +var cert = fs.readFileSync('public.pem'); // get public key +jwt.verify(token, cert, { audience: 'urn:foo', issuer: 'urn:issuer' }, function(err, decoded) { + // if issuer mismatch, err == invalid issuer +}); + +// verify jwt id +var cert = fs.readFileSync('public.pem'); // get public key +jwt.verify(token, cert, { audience: 'urn:foo', issuer: 'urn:issuer', jwtid: 'jwtid' }, function(err, decoded) { + // if jwt id mismatch, err == invalid jwt id +}); + +// verify subject +var cert = fs.readFileSync('public.pem'); // get public key +jwt.verify(token, cert, { audience: 'urn:foo', issuer: 'urn:issuer', jwtid: 'jwtid', subject: 'subject' }, function(err, decoded) { + // if subject mismatch, err == invalid subject +}); + +// alg mismatch +var cert = fs.readFileSync('public.pem'); // get public key +jwt.verify(token, cert, { algorithms: ['RS256'] }, function (err, payload) { + // if token alg != RS256, err == invalid signature +}); + +// Verify using getKey callback +// Example uses https://github.com/auth0/node-jwks-rsa as a way to fetch the keys. +var jwksClient = require('jwks-rsa'); +var client = jwksClient({ + jwksUri: 'https://sandrino.auth0.com/.well-known/jwks.json' +}); +function getKey(header, callback){ + client.getSigningKey(header.kid, function(err, key) { + var signingKey = key.publicKey || key.rsaPublicKey; + callback(null, signingKey); + }); +} + +jwt.verify(token, getKey, options, function(err, decoded) { + console.log(decoded.foo) // bar +}); + +``` + +
+Need to peek into a JWT without verifying it? (Click to expand) + +### jwt.decode(token [, options]) + +(Synchronous) Returns the decoded payload without verifying if the signature is valid. + +> __Warning:__ This will __not__ verify whether the signature is valid. You should __not__ use this for untrusted messages. You most likely want to use `jwt.verify` instead. + +> __Warning:__ When the token comes from an untrusted source (e.g. user input or external request), the returned decoded payload should be treated like any other user input; please make sure to sanitize and only work with properties that are expected + + +`token` is the JsonWebToken string + +`options`: + +* `json`: force JSON.parse on the payload even if the header doesn't contain `"typ":"JWT"`. +* `complete`: return an object with the decoded payload and header. + +Example + +```js +// get the decoded payload ignoring signature, no secretOrPrivateKey needed +var decoded = jwt.decode(token); + +// get the decoded payload and header +var decoded = jwt.decode(token, {complete: true}); +console.log(decoded.header); +console.log(decoded.payload) +``` + +
+ +## Errors & Codes +Possible thrown errors during verification. +Error is the first argument of the verification callback. + +### TokenExpiredError + +Thrown error if the token is expired. + +Error object: + +* name: 'TokenExpiredError' +* message: 'jwt expired' +* expiredAt: [ExpDate] + +```js +jwt.verify(token, 'shhhhh', function(err, decoded) { + if (err) { + /* + err = { + name: 'TokenExpiredError', + message: 'jwt expired', + expiredAt: 1408621000 + } + */ + } +}); +``` + +### JsonWebTokenError +Error object: + +* name: 'JsonWebTokenError' +* message: + * 'invalid token' - the header or payload could not be parsed + * 'jwt malformed' - the token does not have three components (delimited by a `.`) + * 'jwt signature is required' + * 'invalid signature' + * 'jwt audience invalid. expected: [OPTIONS AUDIENCE]' + * 'jwt issuer invalid. expected: [OPTIONS ISSUER]' + * 'jwt id invalid. expected: [OPTIONS JWT ID]' + * 'jwt subject invalid. expected: [OPTIONS SUBJECT]' + +```js +jwt.verify(token, 'shhhhh', function(err, decoded) { + if (err) { + /* + err = { + name: 'JsonWebTokenError', + message: 'jwt malformed' + } + */ + } +}); +``` + +### NotBeforeError +Thrown if current time is before the nbf claim. + +Error object: + +* name: 'NotBeforeError' +* message: 'jwt not active' +* date: 2018-10-04T16:10:44.000Z + +```js +jwt.verify(token, 'shhhhh', function(err, decoded) { + if (err) { + /* + err = { + name: 'NotBeforeError', + message: 'jwt not active', + date: 2018-10-04T16:10:44.000Z + } + */ + } +}); +``` + + +## Algorithms supported + +Array of supported algorithms. The following algorithms are currently supported. + +| alg Parameter Value | Digital Signature or MAC Algorithm | +|---------------------|------------------------------------------------------------------------| +| HS256 | HMAC using SHA-256 hash algorithm | +| HS384 | HMAC using SHA-384 hash algorithm | +| HS512 | HMAC using SHA-512 hash algorithm | +| RS256 | RSASSA-PKCS1-v1_5 using SHA-256 hash algorithm | +| RS384 | RSASSA-PKCS1-v1_5 using SHA-384 hash algorithm | +| RS512 | RSASSA-PKCS1-v1_5 using SHA-512 hash algorithm | +| PS256 | RSASSA-PSS using SHA-256 hash algorithm (only node ^6.12.0 OR >=8.0.0) | +| PS384 | RSASSA-PSS using SHA-384 hash algorithm (only node ^6.12.0 OR >=8.0.0) | +| PS512 | RSASSA-PSS using SHA-512 hash algorithm (only node ^6.12.0 OR >=8.0.0) | +| ES256 | ECDSA using P-256 curve and SHA-256 hash algorithm | +| ES384 | ECDSA using P-384 curve and SHA-384 hash algorithm | +| ES512 | ECDSA using P-521 curve and SHA-512 hash algorithm | +| none | No digital signature or MAC value included | + +## Refreshing JWTs + +First of all, we recommend you to think carefully if auto-refreshing a JWT will not introduce any vulnerability in your system. + +We are not comfortable including this as part of the library, however, you can take a look at [this example](https://gist.github.com/ziluvatar/a3feb505c4c0ec37059054537b38fc48) to show how this could be accomplished. +Apart from that example there are [an issue](https://github.com/auth0/node-jsonwebtoken/issues/122) and [a pull request](https://github.com/auth0/node-jsonwebtoken/pull/172) to get more knowledge about this topic. + +# TODO + +* X.509 certificate chain is not checked + +## Issue Reporting + +If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues. + +## Author + +[Auth0](https://auth0.com) + +## License + +This project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info. diff --git a/bff/node_modules/jsonwebtoken/decode.js b/bff/node_modules/jsonwebtoken/decode.js new file mode 100644 index 0000000..8fe1adc --- /dev/null +++ b/bff/node_modules/jsonwebtoken/decode.js @@ -0,0 +1,30 @@ +var jws = require('jws'); + +module.exports = function (jwt, options) { + options = options || {}; + var decoded = jws.decode(jwt, options); + if (!decoded) { return null; } + var payload = decoded.payload; + + //try parse the payload + if(typeof payload === 'string') { + try { + var obj = JSON.parse(payload); + if(obj !== null && typeof obj === 'object') { + payload = obj; + } + } catch (e) { } + } + + //return header if `complete` option is enabled. header includes claims + //such as `kid` and `alg` used to select the key within a JWKS needed to + //verify the signature + if (options.complete === true) { + return { + header: decoded.header, + payload: payload, + signature: decoded.signature + }; + } + return payload; +}; diff --git a/bff/node_modules/jsonwebtoken/index.js b/bff/node_modules/jsonwebtoken/index.js new file mode 100644 index 0000000..161eb2d --- /dev/null +++ b/bff/node_modules/jsonwebtoken/index.js @@ -0,0 +1,8 @@ +module.exports = { + decode: require('./decode'), + verify: require('./verify'), + sign: require('./sign'), + JsonWebTokenError: require('./lib/JsonWebTokenError'), + NotBeforeError: require('./lib/NotBeforeError'), + TokenExpiredError: require('./lib/TokenExpiredError'), +}; diff --git a/bff/node_modules/jsonwebtoken/lib/JsonWebTokenError.js b/bff/node_modules/jsonwebtoken/lib/JsonWebTokenError.js new file mode 100644 index 0000000..e068222 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/lib/JsonWebTokenError.js @@ -0,0 +1,14 @@ +var JsonWebTokenError = function (message, error) { + Error.call(this, message); + if(Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } + this.name = 'JsonWebTokenError'; + this.message = message; + if (error) this.inner = error; +}; + +JsonWebTokenError.prototype = Object.create(Error.prototype); +JsonWebTokenError.prototype.constructor = JsonWebTokenError; + +module.exports = JsonWebTokenError; diff --git a/bff/node_modules/jsonwebtoken/lib/NotBeforeError.js b/bff/node_modules/jsonwebtoken/lib/NotBeforeError.js new file mode 100644 index 0000000..7b30084 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/lib/NotBeforeError.js @@ -0,0 +1,13 @@ +var JsonWebTokenError = require('./JsonWebTokenError'); + +var NotBeforeError = function (message, date) { + JsonWebTokenError.call(this, message); + this.name = 'NotBeforeError'; + this.date = date; +}; + +NotBeforeError.prototype = Object.create(JsonWebTokenError.prototype); + +NotBeforeError.prototype.constructor = NotBeforeError; + +module.exports = NotBeforeError; \ No newline at end of file diff --git a/bff/node_modules/jsonwebtoken/lib/TokenExpiredError.js b/bff/node_modules/jsonwebtoken/lib/TokenExpiredError.js new file mode 100644 index 0000000..abb704f --- /dev/null +++ b/bff/node_modules/jsonwebtoken/lib/TokenExpiredError.js @@ -0,0 +1,13 @@ +var JsonWebTokenError = require('./JsonWebTokenError'); + +var TokenExpiredError = function (message, expiredAt) { + JsonWebTokenError.call(this, message); + this.name = 'TokenExpiredError'; + this.expiredAt = expiredAt; +}; + +TokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype); + +TokenExpiredError.prototype.constructor = TokenExpiredError; + +module.exports = TokenExpiredError; \ No newline at end of file diff --git a/bff/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js b/bff/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js new file mode 100644 index 0000000..a6ede56 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js @@ -0,0 +1,3 @@ +const semver = require('semver'); + +module.exports = semver.satisfies(process.version, '>=15.7.0'); diff --git a/bff/node_modules/jsonwebtoken/lib/psSupported.js b/bff/node_modules/jsonwebtoken/lib/psSupported.js new file mode 100644 index 0000000..8c04144 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/lib/psSupported.js @@ -0,0 +1,3 @@ +var semver = require('semver'); + +module.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0'); diff --git a/bff/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js b/bff/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js new file mode 100644 index 0000000..7fcf368 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js @@ -0,0 +1,3 @@ +const semver = require('semver'); + +module.exports = semver.satisfies(process.version, '>=16.9.0'); diff --git a/bff/node_modules/jsonwebtoken/lib/timespan.js b/bff/node_modules/jsonwebtoken/lib/timespan.js new file mode 100644 index 0000000..e509869 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/lib/timespan.js @@ -0,0 +1,18 @@ +var ms = require('ms'); + +module.exports = function (time, iat) { + var timestamp = iat || Math.floor(Date.now() / 1000); + + if (typeof time === 'string') { + var milliseconds = ms(time); + if (typeof milliseconds === 'undefined') { + return; + } + return Math.floor(timestamp + milliseconds / 1000); + } else if (typeof time === 'number') { + return timestamp + time; + } else { + return; + } + +}; \ No newline at end of file diff --git a/bff/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js b/bff/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js new file mode 100644 index 0000000..c10340b --- /dev/null +++ b/bff/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js @@ -0,0 +1,66 @@ +const ASYMMETRIC_KEY_DETAILS_SUPPORTED = require('./asymmetricKeyDetailsSupported'); +const RSA_PSS_KEY_DETAILS_SUPPORTED = require('./rsaPssKeyDetailsSupported'); + +const allowedAlgorithmsForKeys = { + 'ec': ['ES256', 'ES384', 'ES512'], + 'rsa': ['RS256', 'PS256', 'RS384', 'PS384', 'RS512', 'PS512'], + 'rsa-pss': ['PS256', 'PS384', 'PS512'] +}; + +const allowedCurves = { + ES256: 'prime256v1', + ES384: 'secp384r1', + ES512: 'secp521r1', +}; + +module.exports = function(algorithm, key) { + if (!algorithm || !key) return; + + const keyType = key.asymmetricKeyType; + if (!keyType) return; + + const allowedAlgorithms = allowedAlgorithmsForKeys[keyType]; + + if (!allowedAlgorithms) { + throw new Error(`Unknown key type "${keyType}".`); + } + + if (!allowedAlgorithms.includes(algorithm)) { + throw new Error(`"alg" parameter for "${keyType}" key type must be one of: ${allowedAlgorithms.join(', ')}.`) + } + + /* + * Ignore the next block from test coverage because it gets executed + * conditionally depending on the Node version. Not ignoring it would + * prevent us from reaching the target % of coverage for versions of + * Node under 15.7.0. + */ + /* istanbul ignore next */ + if (ASYMMETRIC_KEY_DETAILS_SUPPORTED) { + switch (keyType) { + case 'ec': + const keyCurve = key.asymmetricKeyDetails.namedCurve; + const allowedCurve = allowedCurves[algorithm]; + + if (keyCurve !== allowedCurve) { + throw new Error(`"alg" parameter "${algorithm}" requires curve "${allowedCurve}".`); + } + break; + + case 'rsa-pss': + if (RSA_PSS_KEY_DETAILS_SUPPORTED) { + const length = parseInt(algorithm.slice(-3), 10); + const { hashAlgorithm, mgf1HashAlgorithm, saltLength } = key.asymmetricKeyDetails; + + if (hashAlgorithm !== `sha${length}` || mgf1HashAlgorithm !== hashAlgorithm) { + throw new Error(`Invalid key for this operation, its RSA-PSS parameters do not meet the requirements of "alg" ${algorithm}.`); + } + + if (saltLength !== undefined && saltLength > length >> 3) { + throw new Error(`Invalid key for this operation, its RSA-PSS parameter saltLength does not meet the requirements of "alg" ${algorithm}.`) + } + } + break; + } + } +} diff --git a/bff/node_modules/jsonwebtoken/package.json b/bff/node_modules/jsonwebtoken/package.json new file mode 100644 index 0000000..eab30c0 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/package.json @@ -0,0 +1,70 @@ +{ + "name": "jsonwebtoken", + "version": "9.0.3", + "description": "JSON Web Token implementation (symmetric and asymmetric)", + "main": "index.js", + "nyc": { + "check-coverage": true, + "lines": 95, + "statements": 95, + "functions": 100, + "branches": 95, + "exclude": [ + "./test/**" + ], + "reporter": [ + "json", + "lcov", + "text-summary" + ] + }, + "scripts": { + "lint": "eslint .", + "coverage": "nyc mocha --use_strict", + "test": "mocha" + }, + "repository": { + "type": "git", + "url": "https://github.com/auth0/node-jsonwebtoken" + }, + "keywords": [ + "jwt" + ], + "author": "auth0", + "license": "MIT", + "bugs": { + "url": "https://github.com/auth0/node-jsonwebtoken/issues" + }, + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "devDependencies": { + "atob": "^2.1.2", + "chai": "^4.1.2", + "conventional-changelog": "~1.1.0", + "eslint": "^4.19.1", + "mocha": "^5.2.0", + "nsp": "^2.6.2", + "nyc": "^11.9.0", + "sinon": "^6.0.0" + }, + "engines": { + "npm": ">=6", + "node": ">=12" + }, + "files": [ + "lib", + "decode.js", + "sign.js", + "verify.js" + ] +} diff --git a/bff/node_modules/jsonwebtoken/sign.js b/bff/node_modules/jsonwebtoken/sign.js new file mode 100644 index 0000000..82bf526 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/sign.js @@ -0,0 +1,253 @@ +const timespan = require('./lib/timespan'); +const PS_SUPPORTED = require('./lib/psSupported'); +const validateAsymmetricKey = require('./lib/validateAsymmetricKey'); +const jws = require('jws'); +const includes = require('lodash.includes'); +const isBoolean = require('lodash.isboolean'); +const isInteger = require('lodash.isinteger'); +const isNumber = require('lodash.isnumber'); +const isPlainObject = require('lodash.isplainobject'); +const isString = require('lodash.isstring'); +const once = require('lodash.once'); +const { KeyObject, createSecretKey, createPrivateKey } = require('crypto') + +const SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none']; +if (PS_SUPPORTED) { + SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512'); +} + +const sign_options_schema = { + expiresIn: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '"expiresIn" should be a number of seconds or string representing a timespan' }, + notBefore: { isValid: function(value) { return isInteger(value) || (isString(value) && value); }, message: '"notBefore" should be a number of seconds or string representing a timespan' }, + audience: { isValid: function(value) { return isString(value) || Array.isArray(value); }, message: '"audience" must be a string or array' }, + algorithm: { isValid: includes.bind(null, SUPPORTED_ALGS), message: '"algorithm" must be a valid string enum value' }, + header: { isValid: isPlainObject, message: '"header" must be an object' }, + encoding: { isValid: isString, message: '"encoding" must be a string' }, + issuer: { isValid: isString, message: '"issuer" must be a string' }, + subject: { isValid: isString, message: '"subject" must be a string' }, + jwtid: { isValid: isString, message: '"jwtid" must be a string' }, + noTimestamp: { isValid: isBoolean, message: '"noTimestamp" must be a boolean' }, + keyid: { isValid: isString, message: '"keyid" must be a string' }, + mutatePayload: { isValid: isBoolean, message: '"mutatePayload" must be a boolean' }, + allowInsecureKeySizes: { isValid: isBoolean, message: '"allowInsecureKeySizes" must be a boolean'}, + allowInvalidAsymmetricKeyTypes: { isValid: isBoolean, message: '"allowInvalidAsymmetricKeyTypes" must be a boolean'} +}; + +const registered_claims_schema = { + iat: { isValid: isNumber, message: '"iat" should be a number of seconds' }, + exp: { isValid: isNumber, message: '"exp" should be a number of seconds' }, + nbf: { isValid: isNumber, message: '"nbf" should be a number of seconds' } +}; + +function validate(schema, allowUnknown, object, parameterName) { + if (!isPlainObject(object)) { + throw new Error('Expected "' + parameterName + '" to be a plain object.'); + } + Object.keys(object) + .forEach(function(key) { + const validator = schema[key]; + if (!validator) { + if (!allowUnknown) { + throw new Error('"' + key + '" is not allowed in "' + parameterName + '"'); + } + return; + } + if (!validator.isValid(object[key])) { + throw new Error(validator.message); + } + }); +} + +function validateOptions(options) { + return validate(sign_options_schema, false, options, 'options'); +} + +function validatePayload(payload) { + return validate(registered_claims_schema, true, payload, 'payload'); +} + +const options_to_payload = { + 'audience': 'aud', + 'issuer': 'iss', + 'subject': 'sub', + 'jwtid': 'jti' +}; + +const options_for_objects = [ + 'expiresIn', + 'notBefore', + 'noTimestamp', + 'audience', + 'issuer', + 'subject', + 'jwtid', +]; + +module.exports = function (payload, secretOrPrivateKey, options, callback) { + if (typeof options === 'function') { + callback = options; + options = {}; + } else { + options = options || {}; + } + + const isObjectPayload = typeof payload === 'object' && + !Buffer.isBuffer(payload); + + const header = Object.assign({ + alg: options.algorithm || 'HS256', + typ: isObjectPayload ? 'JWT' : undefined, + kid: options.keyid + }, options.header); + + function failure(err) { + if (callback) { + return callback(err); + } + throw err; + } + + if (!secretOrPrivateKey && options.algorithm !== 'none') { + return failure(new Error('secretOrPrivateKey must have a value')); + } + + if (secretOrPrivateKey != null && !(secretOrPrivateKey instanceof KeyObject)) { + try { + secretOrPrivateKey = createPrivateKey(secretOrPrivateKey) + } catch (_) { + try { + secretOrPrivateKey = createSecretKey(typeof secretOrPrivateKey === 'string' ? Buffer.from(secretOrPrivateKey) : secretOrPrivateKey) + } catch (_) { + return failure(new Error('secretOrPrivateKey is not valid key material')); + } + } + } + + if (header.alg.startsWith('HS') && secretOrPrivateKey.type !== 'secret') { + return failure(new Error((`secretOrPrivateKey must be a symmetric key when using ${header.alg}`))) + } else if (/^(?:RS|PS|ES)/.test(header.alg)) { + if (secretOrPrivateKey.type !== 'private') { + return failure(new Error((`secretOrPrivateKey must be an asymmetric key when using ${header.alg}`))) + } + if (!options.allowInsecureKeySizes && + !header.alg.startsWith('ES') && + secretOrPrivateKey.asymmetricKeyDetails !== undefined && //KeyObject.asymmetricKeyDetails is supported in Node 15+ + secretOrPrivateKey.asymmetricKeyDetails.modulusLength < 2048) { + return failure(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)); + } + } + + if (typeof payload === 'undefined') { + return failure(new Error('payload is required')); + } else if (isObjectPayload) { + try { + validatePayload(payload); + } + catch (error) { + return failure(error); + } + if (!options.mutatePayload) { + payload = Object.assign({},payload); + } + } else { + const invalid_options = options_for_objects.filter(function (opt) { + return typeof options[opt] !== 'undefined'; + }); + + if (invalid_options.length > 0) { + return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + (typeof payload ) + ' payload')); + } + } + + if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') { + return failure(new Error('Bad "options.expiresIn" option the payload already has an "exp" property.')); + } + + if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') { + return failure(new Error('Bad "options.notBefore" option the payload already has an "nbf" property.')); + } + + try { + validateOptions(options); + } + catch (error) { + return failure(error); + } + + if (!options.allowInvalidAsymmetricKeyTypes) { + try { + validateAsymmetricKey(header.alg, secretOrPrivateKey); + } catch (error) { + return failure(error); + } + } + + const timestamp = payload.iat || Math.floor(Date.now() / 1000); + + if (options.noTimestamp) { + delete payload.iat; + } else if (isObjectPayload) { + payload.iat = timestamp; + } + + if (typeof options.notBefore !== 'undefined') { + try { + payload.nbf = timespan(options.notBefore, timestamp); + } + catch (err) { + return failure(err); + } + if (typeof payload.nbf === 'undefined') { + return failure(new Error('"notBefore" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + } + + if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') { + try { + payload.exp = timespan(options.expiresIn, timestamp); + } + catch (err) { + return failure(err); + } + if (typeof payload.exp === 'undefined') { + return failure(new Error('"expiresIn" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + } + + Object.keys(options_to_payload).forEach(function (key) { + const claim = options_to_payload[key]; + if (typeof options[key] !== 'undefined') { + if (typeof payload[claim] !== 'undefined') { + return failure(new Error('Bad "options.' + key + '" option. The payload already has an "' + claim + '" property.')); + } + payload[claim] = options[key]; + } + }); + + const encoding = options.encoding || 'utf8'; + + if (typeof callback === 'function') { + callback = callback && once(callback); + + jws.createSign({ + header: header, + privateKey: secretOrPrivateKey, + payload: payload, + encoding: encoding + }).once('error', callback) + .once('done', function (signature) { + // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version + if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { + return callback(new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`)) + } + callback(null, signature); + }); + } else { + let signature = jws.sign({header: header, payload: payload, secret: secretOrPrivateKey, encoding: encoding}); + // TODO: Remove in favor of the modulus length check before signing once node 15+ is the minimum supported version + if(!options.allowInsecureKeySizes && /^(?:RS|PS)/.test(header.alg) && signature.length < 256) { + throw new Error(`secretOrPrivateKey has a minimum key size of 2048 bits for ${header.alg}`) + } + return signature + } +}; diff --git a/bff/node_modules/jsonwebtoken/verify.js b/bff/node_modules/jsonwebtoken/verify.js new file mode 100644 index 0000000..cdbfdc4 --- /dev/null +++ b/bff/node_modules/jsonwebtoken/verify.js @@ -0,0 +1,263 @@ +const JsonWebTokenError = require('./lib/JsonWebTokenError'); +const NotBeforeError = require('./lib/NotBeforeError'); +const TokenExpiredError = require('./lib/TokenExpiredError'); +const decode = require('./decode'); +const timespan = require('./lib/timespan'); +const validateAsymmetricKey = require('./lib/validateAsymmetricKey'); +const PS_SUPPORTED = require('./lib/psSupported'); +const jws = require('jws'); +const {KeyObject, createSecretKey, createPublicKey} = require("crypto"); + +const PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512']; +const EC_KEY_ALGS = ['ES256', 'ES384', 'ES512']; +const RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512']; +const HS_ALGS = ['HS256', 'HS384', 'HS512']; + +if (PS_SUPPORTED) { + PUB_KEY_ALGS.splice(PUB_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512'); + RSA_KEY_ALGS.splice(RSA_KEY_ALGS.length, 0, 'PS256', 'PS384', 'PS512'); +} + +module.exports = function (jwtString, secretOrPublicKey, options, callback) { + if ((typeof options === 'function') && !callback) { + callback = options; + options = {}; + } + + if (!options) { + options = {}; + } + + //clone this object since we are going to mutate it. + options = Object.assign({}, options); + + let done; + + if (callback) { + done = callback; + } else { + done = function(err, data) { + if (err) throw err; + return data; + }; + } + + if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') { + return done(new JsonWebTokenError('clockTimestamp must be a number')); + } + + if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) { + return done(new JsonWebTokenError('nonce must be a non-empty string')); + } + + if (options.allowInvalidAsymmetricKeyTypes !== undefined && typeof options.allowInvalidAsymmetricKeyTypes !== 'boolean') { + return done(new JsonWebTokenError('allowInvalidAsymmetricKeyTypes must be a boolean')); + } + + const clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000); + + if (!jwtString){ + return done(new JsonWebTokenError('jwt must be provided')); + } + + if (typeof jwtString !== 'string') { + return done(new JsonWebTokenError('jwt must be a string')); + } + + const parts = jwtString.split('.'); + + if (parts.length !== 3){ + return done(new JsonWebTokenError('jwt malformed')); + } + + let decodedToken; + + try { + decodedToken = decode(jwtString, { complete: true }); + } catch(err) { + return done(err); + } + + if (!decodedToken) { + return done(new JsonWebTokenError('invalid token')); + } + + const header = decodedToken.header; + let getSecret; + + if(typeof secretOrPublicKey === 'function') { + if(!callback) { + return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback')); + } + + getSecret = secretOrPublicKey; + } + else { + getSecret = function(header, secretCallback) { + return secretCallback(null, secretOrPublicKey); + }; + } + + return getSecret(header, function(err, secretOrPublicKey) { + if(err) { + return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message)); + } + + const hasSignature = parts[2].trim() !== ''; + + if (!hasSignature && secretOrPublicKey){ + return done(new JsonWebTokenError('jwt signature is required')); + } + + if (hasSignature && !secretOrPublicKey) { + return done(new JsonWebTokenError('secret or public key must be provided')); + } + + if (!hasSignature && !options.algorithms) { + return done(new JsonWebTokenError('please specify "none" in "algorithms" to verify unsigned tokens')); + } + + if (secretOrPublicKey != null && !(secretOrPublicKey instanceof KeyObject)) { + try { + secretOrPublicKey = createPublicKey(secretOrPublicKey); + } catch (_) { + try { + secretOrPublicKey = createSecretKey(typeof secretOrPublicKey === 'string' ? Buffer.from(secretOrPublicKey) : secretOrPublicKey); + } catch (_) { + return done(new JsonWebTokenError('secretOrPublicKey is not valid key material')) + } + } + } + + if (!options.algorithms) { + if (secretOrPublicKey.type === 'secret') { + options.algorithms = HS_ALGS; + } else if (['rsa', 'rsa-pss'].includes(secretOrPublicKey.asymmetricKeyType)) { + options.algorithms = RSA_KEY_ALGS + } else if (secretOrPublicKey.asymmetricKeyType === 'ec') { + options.algorithms = EC_KEY_ALGS + } else { + options.algorithms = PUB_KEY_ALGS + } + } + + if (options.algorithms.indexOf(decodedToken.header.alg) === -1) { + return done(new JsonWebTokenError('invalid algorithm')); + } + + if (header.alg.startsWith('HS') && secretOrPublicKey.type !== 'secret') { + return done(new JsonWebTokenError((`secretOrPublicKey must be a symmetric key when using ${header.alg}`))) + } else if (/^(?:RS|PS|ES)/.test(header.alg) && secretOrPublicKey.type !== 'public') { + return done(new JsonWebTokenError((`secretOrPublicKey must be an asymmetric key when using ${header.alg}`))) + } + + if (!options.allowInvalidAsymmetricKeyTypes) { + try { + validateAsymmetricKey(header.alg, secretOrPublicKey); + } catch (e) { + return done(e); + } + } + + let valid; + + try { + valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey); + } catch (e) { + return done(e); + } + + if (!valid) { + return done(new JsonWebTokenError('invalid signature')); + } + + const payload = decodedToken.payload; + + if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) { + if (typeof payload.nbf !== 'number') { + return done(new JsonWebTokenError('invalid nbf value')); + } + if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) { + return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000))); + } + } + + if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) { + if (typeof payload.exp !== 'number') { + return done(new JsonWebTokenError('invalid exp value')); + } + if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) { + return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000))); + } + } + + if (options.audience) { + const audiences = Array.isArray(options.audience) ? options.audience : [options.audience]; + const target = Array.isArray(payload.aud) ? payload.aud : [payload.aud]; + + const match = target.some(function (targetAudience) { + return audiences.some(function (audience) { + return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience; + }); + }); + + if (!match) { + return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or '))); + } + } + + if (options.issuer) { + const invalid_issuer = + (typeof options.issuer === 'string' && payload.iss !== options.issuer) || + (Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1); + + if (invalid_issuer) { + return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer)); + } + } + + if (options.subject) { + if (payload.sub !== options.subject) { + return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject)); + } + } + + if (options.jwtid) { + if (payload.jti !== options.jwtid) { + return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid)); + } + } + + if (options.nonce) { + if (payload.nonce !== options.nonce) { + return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce)); + } + } + + if (options.maxAge) { + if (typeof payload.iat !== 'number') { + return done(new JsonWebTokenError('iat required when maxAge is specified')); + } + + const maxAgeTimestamp = timespan(options.maxAge, payload.iat); + if (typeof maxAgeTimestamp === 'undefined') { + return done(new JsonWebTokenError('"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60')); + } + if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) { + return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000))); + } + } + + if (options.complete === true) { + const signature = decodedToken.signature; + + return done(null, { + header: header, + payload: payload, + signature: signature + }); + } + + return done(null, payload); + }); +}; diff --git a/bff/node_modules/jwa/LICENSE b/bff/node_modules/jwa/LICENSE new file mode 100644 index 0000000..caeb849 --- /dev/null +++ b/bff/node_modules/jwa/LICENSE @@ -0,0 +1,17 @@ +Copyright (c) 2013 Brian J. Brennan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/jwa/README.md b/bff/node_modules/jwa/README.md new file mode 100644 index 0000000..09e9648 --- /dev/null +++ b/bff/node_modules/jwa/README.md @@ -0,0 +1,150 @@ +# node-jwa [![Build Status](https://travis-ci.org/brianloveswords/node-jwa.svg?branch=master)](https://travis-ci.org/brianloveswords/node-jwa) + +A +[JSON Web Algorithms](http://tools.ietf.org/id/draft-ietf-jose-json-web-algorithms-08.html) +implementation focusing (exclusively, at this point) on the algorithms necessary for +[JSON Web Signatures](http://self-issued.info/docs/draft-ietf-jose-json-web-signature.html). + +This library supports all of the required, recommended and optional cryptographic algorithms for JWS: + +alg Parameter Value | Digital Signature or MAC Algorithm +----------------|---------------------------- +HS256 | HMAC using SHA-256 hash algorithm +HS384 | HMAC using SHA-384 hash algorithm +HS512 | HMAC using SHA-512 hash algorithm +RS256 | RSASSA using SHA-256 hash algorithm +RS384 | RSASSA using SHA-384 hash algorithm +RS512 | RSASSA using SHA-512 hash algorithm +PS256 | RSASSA-PSS using SHA-256 hash algorithm +PS384 | RSASSA-PSS using SHA-384 hash algorithm +PS512 | RSASSA-PSS using SHA-512 hash algorithm +ES256 | ECDSA using P-256 curve and SHA-256 hash algorithm +ES384 | ECDSA using P-384 curve and SHA-384 hash algorithm +ES512 | ECDSA using P-521 curve and SHA-512 hash algorithm +none | No digital signature or MAC value included + +Please note that PS* only works on Node 6.12+ (excluding 7.x). + +# Requirements + +In order to run the tests, a recent version of OpenSSL is +required. **The version that comes with OS X (OpenSSL 0.9.8r 8 Feb +2011) is not recent enough**, as it does not fully support ECDSA +keys. You'll need to use a version > 1.0.0; I tested with OpenSSL 1.0.1c 10 May 2012. + +# Testing + +To run the tests, do + +```bash +$ npm test +``` + +This will generate a bunch of keypairs to use in testing. If you want to +generate new keypairs, do `make clean` before running `npm test` again. + +## Methodology + +I spawn `openssl dgst -sign` to test OpenSSL sign → JS verify and +`openssl dgst -verify` to test JS sign → OpenSSL verify for each of the +RSA and ECDSA algorithms. + +# Usage + +## jwa(algorithm) + +Creates a new `jwa` object with `sign` and `verify` methods for the +algorithm. Valid values for algorithm can be found in the table above +(`'HS256'`, `'HS384'`, etc) and are case-sensitive. Passing an invalid +algorithm value will throw a `TypeError`. + + +## jwa#sign(input, secretOrPrivateKey) + +Sign some input with either a secret for HMAC algorithms, or a private +key for RSA and ECDSA algorithms. + +If input is not already a string or buffer, `JSON.stringify` will be +called on it to attempt to coerce it. + +For the HMAC algorithm, `secretOrPrivateKey` should be a string or a +buffer. For ECDSA and RSA, the value should be a string representing a +PEM encoded **private** key. + +Output [base64url](http://en.wikipedia.org/wiki/Base64#URL_applications) +formatted. This is for convenience as JWS expects the signature in this +format. If your application needs the output in a different format, +[please open an issue](https://github.com/brianloveswords/node-jwa/issues). In +the meantime, you can use +[brianloveswords/base64url](https://github.com/brianloveswords/base64url) +to decode the signature. + +As of nodejs *v0.11.8*, SPKAC support was introduce. If your nodeJs +version satisfies, then you can pass an object `{ key: '..', passphrase: '...' }` + + +## jwa#verify(input, signature, secretOrPublicKey) + +Verify a signature. Returns `true` or `false`. + +`signature` should be a base64url encoded string. + +For the HMAC algorithm, `secretOrPublicKey` should be a string or a +buffer. For ECDSA and RSA, the value should be a string represented a +PEM encoded **public** key. + + +# Example + +HMAC +```js +const jwa = require('jwa'); + +const hmac = jwa('HS256'); +const input = 'super important stuff'; +const secret = 'shhhhhh'; + +const signature = hmac.sign(input, secret); +hmac.verify(input, signature, secret) // === true +hmac.verify(input, signature, 'trickery!') // === false +``` + +With keys +```js +const fs = require('fs'); +const jwa = require('jwa'); +const privateKey = fs.readFileSync(__dirname + '/ecdsa-p521-private.pem'); +const publicKey = fs.readFileSync(__dirname + '/ecdsa-p521-public.pem'); + +const ecdsa = jwa('ES512'); +const input = 'very important stuff'; + +const signature = ecdsa.sign(input, privateKey); +ecdsa.verify(input, signature, publicKey) // === true +``` +## License + +MIT + +``` +Copyright (c) 2013 Brian J. Brennan + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/bff/node_modules/jwa/index.js b/bff/node_modules/jwa/index.js new file mode 100644 index 0000000..5072c34 --- /dev/null +++ b/bff/node_modules/jwa/index.js @@ -0,0 +1,266 @@ +var Buffer = require('safe-buffer').Buffer; +var crypto = require('crypto'); +var formatEcdsa = require('ecdsa-sig-formatter'); +var util = require('util'); + +var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".' +var MSG_INVALID_SECRET = 'secret must be a string or buffer'; +var MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer'; +var MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object'; + +var supportsKeyObjects = typeof crypto.createPublicKey === 'function'; +if (supportsKeyObjects) { + MSG_INVALID_VERIFIER_KEY += ' or a KeyObject'; + MSG_INVALID_SECRET += 'or a KeyObject'; +} + +function checkIsPublicKey(key) { + if (Buffer.isBuffer(key)) { + return; + } + + if (typeof key === 'string') { + return; + } + + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + + if (typeof key !== 'object') { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + + if (typeof key.type !== 'string') { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + + if (typeof key.asymmetricKeyType !== 'string') { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } + + if (typeof key.export !== 'function') { + throw typeError(MSG_INVALID_VERIFIER_KEY); + } +}; + +function checkIsPrivateKey(key) { + if (Buffer.isBuffer(key)) { + return; + } + + if (typeof key === 'string') { + return; + } + + if (typeof key === 'object') { + return; + } + + throw typeError(MSG_INVALID_SIGNER_KEY); +}; + +function checkIsSecretKey(key) { + if (Buffer.isBuffer(key)) { + return; + } + + if (typeof key === 'string') { + return key; + } + + if (!supportsKeyObjects) { + throw typeError(MSG_INVALID_SECRET); + } + + if (typeof key !== 'object') { + throw typeError(MSG_INVALID_SECRET); + } + + if (key.type !== 'secret') { + throw typeError(MSG_INVALID_SECRET); + } + + if (typeof key.export !== 'function') { + throw typeError(MSG_INVALID_SECRET); + } +} + +function fromBase64(base64) { + return base64 + .replace(/=/g, '') + .replace(/\+/g, '-') + .replace(/\//g, '_'); +} + +function toBase64(base64url) { + base64url = base64url.toString(); + + var padding = 4 - base64url.length % 4; + if (padding !== 4) { + for (var i = 0; i < padding; ++i) { + base64url += '='; + } + } + + return base64url + .replace(/\-/g, '+') + .replace(/_/g, '/'); +} + +function typeError(template) { + var args = [].slice.call(arguments, 1); + var errMsg = util.format.bind(util, template).apply(null, args); + return new TypeError(errMsg); +} + +function bufferOrString(obj) { + return Buffer.isBuffer(obj) || typeof obj === 'string'; +} + +function normalizeInput(thing) { + if (!bufferOrString(thing)) + thing = JSON.stringify(thing); + return thing; +} + +function createHmacSigner(bits) { + return function sign(thing, secret) { + checkIsSecretKey(secret); + thing = normalizeInput(thing); + var hmac = crypto.createHmac('sha' + bits, secret); + var sig = (hmac.update(thing), hmac.digest('base64')) + return fromBase64(sig); + } +} + +var bufferEqual; +var timingSafeEqual = 'timingSafeEqual' in crypto ? function timingSafeEqual(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + + return crypto.timingSafeEqual(a, b) +} : function timingSafeEqual(a, b) { + if (!bufferEqual) { + bufferEqual = require('buffer-equal-constant-time'); + } + + return bufferEqual(a, b) +} + +function createHmacVerifier(bits) { + return function verify(thing, signature, secret) { + var computedSig = createHmacSigner(bits)(thing, secret); + return timingSafeEqual(Buffer.from(signature), Buffer.from(computedSig)); + } +} + +function createKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + // Even though we are specifying "RSA" here, this works with ECDSA + // keys as well. + var signer = crypto.createSign('RSA-SHA' + bits); + var sig = (signer.update(thing), signer.sign(privateKey, 'base64')); + return fromBase64(sig); + } +} + +function createKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase64(signature); + var verifier = crypto.createVerify('RSA-SHA' + bits); + verifier.update(thing); + return verifier.verify(publicKey, signature, 'base64'); + } +} + +function createPSSKeySigner(bits) { + return function sign(thing, privateKey) { + checkIsPrivateKey(privateKey); + thing = normalizeInput(thing); + var signer = crypto.createSign('RSA-SHA' + bits); + var sig = (signer.update(thing), signer.sign({ + key: privateKey, + padding: crypto.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST + }, 'base64')); + return fromBase64(sig); + } +} + +function createPSSKeyVerifier(bits) { + return function verify(thing, signature, publicKey) { + checkIsPublicKey(publicKey); + thing = normalizeInput(thing); + signature = toBase64(signature); + var verifier = crypto.createVerify('RSA-SHA' + bits); + verifier.update(thing); + return verifier.verify({ + key: publicKey, + padding: crypto.constants.RSA_PKCS1_PSS_PADDING, + saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST + }, signature, 'base64'); + } +} + +function createECDSASigner(bits) { + var inner = createKeySigner(bits); + return function sign() { + var signature = inner.apply(null, arguments); + signature = formatEcdsa.derToJose(signature, 'ES' + bits); + return signature; + }; +} + +function createECDSAVerifer(bits) { + var inner = createKeyVerifier(bits); + return function verify(thing, signature, publicKey) { + signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64'); + var result = inner(thing, signature, publicKey); + return result; + }; +} + +function createNoneSigner() { + return function sign() { + return ''; + } +} + +function createNoneVerifier() { + return function verify(thing, signature) { + return signature === ''; + } +} + +module.exports = function jwa(algorithm) { + var signerFactories = { + hs: createHmacSigner, + rs: createKeySigner, + ps: createPSSKeySigner, + es: createECDSASigner, + none: createNoneSigner, + } + var verifierFactories = { + hs: createHmacVerifier, + rs: createKeyVerifier, + ps: createPSSKeyVerifier, + es: createECDSAVerifer, + none: createNoneVerifier, + } + var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/); + if (!match) + throw typeError(MSG_INVALID_ALGORITHM, algorithm); + var algo = (match[1] || match[3]).toLowerCase(); + var bits = match[2]; + + return { + sign: signerFactories[algo](bits), + verify: verifierFactories[algo](bits), + } +}; diff --git a/bff/node_modules/jwa/opslevel.yml b/bff/node_modules/jwa/opslevel.yml new file mode 100644 index 0000000..aeeeea7 --- /dev/null +++ b/bff/node_modules/jwa/opslevel.yml @@ -0,0 +1,6 @@ +--- +version: 1 +repository: + owner: iam_protocols + tier: + tags: diff --git a/bff/node_modules/jwa/package.json b/bff/node_modules/jwa/package.json new file mode 100644 index 0000000..fd5824a --- /dev/null +++ b/bff/node_modules/jwa/package.json @@ -0,0 +1,37 @@ +{ + "name": "jwa", + "version": "2.0.1", + "description": "JWA implementation (supports all JWS algorithms)", + "main": "index.js", + "directories": { + "test": "test" + }, + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + }, + "devDependencies": { + "base64url": "^2.0.0", + "jwk-to-pem": "^2.0.1", + "semver": "4.3.6", + "tap": "6.2.0" + }, + "scripts": { + "test": "make test" + }, + "repository": { + "type": "git", + "url": "git://github.com/brianloveswords/node-jwa.git" + }, + "keywords": [ + "jwa", + "jws", + "jwt", + "rsa", + "ecdsa", + "hmac" + ], + "author": "Brian J. Brennan ", + "license": "MIT" +} diff --git a/bff/node_modules/jws/CHANGELOG.md b/bff/node_modules/jws/CHANGELOG.md new file mode 100644 index 0000000..18078df --- /dev/null +++ b/bff/node_modules/jws/CHANGELOG.md @@ -0,0 +1,56 @@ +# Change Log + +All notable changes to this project will be documented in this file. + +## [4.0.1] + +### Changed + +- Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require + that a non empty secret is provided (via opts.secret, opts.privateKey or opts.key) + when using HMAC algorithms. +- Upgrading JWA version to 2.0.1, adressing a compatibility issue for Node >= 25. + +## [3.2.3] + +### Changed + +- Fix advisory GHSA-869p-cjfg-cm3x: createSign and createVerify now require + that a non empty secret is provided (via opts.secret, opts.privateKey or opts.key) + when using HMAC algorithms. +- Upgrading JWA version to 1.4.2, adressing a compatibility issue for Node >= 25. + +## [3.0.0] + +### Changed + +- **BREAKING**: `jwt.verify` now requires an `algorithm` parameter, and + `jws.createVerify` requires an `algorithm` option. The `"alg"` field + signature headers is ignored. This mitigates a critical security flaw + in the library which would allow an attacker to generate signatures with + arbitrary contents that would be accepted by `jwt.verify`. See + https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/ + for details. + +## [2.0.0] - 2015-01-30 + +### Changed + +- **BREAKING**: Default payload encoding changed from `binary` to + `utf8`. `utf8` is a is a more sensible default than `binary` because + many payloads, as far as I can tell, will contain user-facing + strings that could be in any language. ([6b6de48]) + +- Code reorganization, thanks [@fearphage]! ([7880050]) + +### Added + +- Option in all relevant methods for `encoding`. For those few users + that might be depending on a `binary` encoding of the messages, this + is for them. ([6b6de48]) + +[unreleased]: https://github.com/brianloveswords/node-jws/compare/v2.0.0...HEAD +[2.0.0]: https://github.com/brianloveswords/node-jws/compare/v1.0.1...v2.0.0 +[7880050]: https://github.com/brianloveswords/node-jws/commit/7880050 +[6b6de48]: https://github.com/brianloveswords/node-jws/commit/6b6de48 +[@fearphage]: https://github.com/fearphage diff --git a/bff/node_modules/jws/LICENSE b/bff/node_modules/jws/LICENSE new file mode 100644 index 0000000..caeb849 --- /dev/null +++ b/bff/node_modules/jws/LICENSE @@ -0,0 +1,17 @@ +Copyright (c) 2013 Brian J. Brennan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/jws/index.js b/bff/node_modules/jws/index.js new file mode 100644 index 0000000..8c8da93 --- /dev/null +++ b/bff/node_modules/jws/index.js @@ -0,0 +1,22 @@ +/*global exports*/ +var SignStream = require('./lib/sign-stream'); +var VerifyStream = require('./lib/verify-stream'); + +var ALGORITHMS = [ + 'HS256', 'HS384', 'HS512', + 'RS256', 'RS384', 'RS512', + 'PS256', 'PS384', 'PS512', + 'ES256', 'ES384', 'ES512' +]; + +exports.ALGORITHMS = ALGORITHMS; +exports.sign = SignStream.sign; +exports.verify = VerifyStream.verify; +exports.decode = VerifyStream.decode; +exports.isValid = VerifyStream.isValid; +exports.createSign = function createSign(opts) { + return new SignStream(opts); +}; +exports.createVerify = function createVerify(opts) { + return new VerifyStream(opts); +}; diff --git a/bff/node_modules/jws/lib/data-stream.js b/bff/node_modules/jws/lib/data-stream.js new file mode 100644 index 0000000..3535d31 --- /dev/null +++ b/bff/node_modules/jws/lib/data-stream.js @@ -0,0 +1,55 @@ +/*global module, process*/ +var Buffer = require('safe-buffer').Buffer; +var Stream = require('stream'); +var util = require('util'); + +function DataStream(data) { + this.buffer = null; + this.writable = true; + this.readable = true; + + // No input + if (!data) { + this.buffer = Buffer.alloc(0); + return this; + } + + // Stream + if (typeof data.pipe === 'function') { + this.buffer = Buffer.alloc(0); + data.pipe(this); + return this; + } + + // Buffer or String + // or Object (assumedly a passworded key) + if (data.length || typeof data === 'object') { + this.buffer = data; + this.writable = false; + process.nextTick(function () { + this.emit('end', data); + this.readable = false; + this.emit('close'); + }.bind(this)); + return this; + } + + throw new TypeError('Unexpected data type ('+ typeof data + ')'); +} +util.inherits(DataStream, Stream); + +DataStream.prototype.write = function write(data) { + this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]); + this.emit('data', data); +}; + +DataStream.prototype.end = function end(data) { + if (data) + this.write(data); + this.emit('end', data); + this.emit('close'); + this.writable = false; + this.readable = false; +}; + +module.exports = DataStream; diff --git a/bff/node_modules/jws/lib/sign-stream.js b/bff/node_modules/jws/lib/sign-stream.js new file mode 100644 index 0000000..4a7b288 --- /dev/null +++ b/bff/node_modules/jws/lib/sign-stream.js @@ -0,0 +1,83 @@ +/*global module*/ +var Buffer = require('safe-buffer').Buffer; +var DataStream = require('./data-stream'); +var jwa = require('jwa'); +var Stream = require('stream'); +var toString = require('./tostring'); +var util = require('util'); + +function base64url(string, encoding) { + return Buffer + .from(string, encoding) + .toString('base64') + .replace(/=/g, '') + .replace(/\+/g, '-') + .replace(/\//g, '_'); +} + +function jwsSecuredInput(header, payload, encoding) { + encoding = encoding || 'utf8'; + var encodedHeader = base64url(toString(header), 'binary'); + var encodedPayload = base64url(toString(payload), encoding); + return util.format('%s.%s', encodedHeader, encodedPayload); +} + +function jwsSign(opts) { + var header = opts.header; + var payload = opts.payload; + var secretOrKey = opts.secret || opts.privateKey; + var encoding = opts.encoding; + var algo = jwa(header.alg); + var securedInput = jwsSecuredInput(header, payload, encoding); + var signature = algo.sign(securedInput, secretOrKey); + return util.format('%s.%s', securedInput, signature); +} + +function SignStream(opts) { + var secret = opts.secret; + secret = secret == null ? opts.privateKey : secret; + secret = secret == null ? opts.key : secret; + if (/^hs/i.test(opts.header.alg) === true && secret == null) { + throw new TypeError('secret must be a string or buffer or a KeyObject') + } + var secretStream = new DataStream(secret); + this.readable = true; + this.header = opts.header; + this.encoding = opts.encoding; + this.secret = this.privateKey = this.key = secretStream; + this.payload = new DataStream(opts.payload); + this.secret.once('close', function () { + if (!this.payload.writable && this.readable) + this.sign(); + }.bind(this)); + + this.payload.once('close', function () { + if (!this.secret.writable && this.readable) + this.sign(); + }.bind(this)); +} +util.inherits(SignStream, Stream); + +SignStream.prototype.sign = function sign() { + try { + var signature = jwsSign({ + header: this.header, + payload: this.payload.buffer, + secret: this.secret.buffer, + encoding: this.encoding + }); + this.emit('done', signature); + this.emit('data', signature); + this.emit('end'); + this.readable = false; + return signature; + } catch (e) { + this.readable = false; + this.emit('error', e); + this.emit('close'); + } +}; + +SignStream.sign = jwsSign; + +module.exports = SignStream; diff --git a/bff/node_modules/jws/lib/tostring.js b/bff/node_modules/jws/lib/tostring.js new file mode 100644 index 0000000..f5a49a3 --- /dev/null +++ b/bff/node_modules/jws/lib/tostring.js @@ -0,0 +1,10 @@ +/*global module*/ +var Buffer = require('buffer').Buffer; + +module.exports = function toString(obj) { + if (typeof obj === 'string') + return obj; + if (typeof obj === 'number' || Buffer.isBuffer(obj)) + return obj.toString(); + return JSON.stringify(obj); +}; diff --git a/bff/node_modules/jws/lib/verify-stream.js b/bff/node_modules/jws/lib/verify-stream.js new file mode 100644 index 0000000..bb1cb00 --- /dev/null +++ b/bff/node_modules/jws/lib/verify-stream.js @@ -0,0 +1,125 @@ +/*global module*/ +var Buffer = require('safe-buffer').Buffer; +var DataStream = require('./data-stream'); +var jwa = require('jwa'); +var Stream = require('stream'); +var toString = require('./tostring'); +var util = require('util'); +var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/; + +function isObject(thing) { + return Object.prototype.toString.call(thing) === '[object Object]'; +} + +function safeJsonParse(thing) { + if (isObject(thing)) + return thing; + try { return JSON.parse(thing); } + catch (e) { return undefined; } +} + +function headerFromJWS(jwsSig) { + var encodedHeader = jwsSig.split('.', 1)[0]; + return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary')); +} + +function securedInputFromJWS(jwsSig) { + return jwsSig.split('.', 2).join('.'); +} + +function signatureFromJWS(jwsSig) { + return jwsSig.split('.')[2]; +} + +function payloadFromJWS(jwsSig, encoding) { + encoding = encoding || 'utf8'; + var payload = jwsSig.split('.')[1]; + return Buffer.from(payload, 'base64').toString(encoding); +} + +function isValidJws(string) { + return JWS_REGEX.test(string) && !!headerFromJWS(string); +} + +function jwsVerify(jwsSig, algorithm, secretOrKey) { + if (!algorithm) { + var err = new Error("Missing algorithm parameter for jws.verify"); + err.code = "MISSING_ALGORITHM"; + throw err; + } + jwsSig = toString(jwsSig); + var signature = signatureFromJWS(jwsSig); + var securedInput = securedInputFromJWS(jwsSig); + var algo = jwa(algorithm); + return algo.verify(securedInput, signature, secretOrKey); +} + +function jwsDecode(jwsSig, opts) { + opts = opts || {}; + jwsSig = toString(jwsSig); + + if (!isValidJws(jwsSig)) + return null; + + var header = headerFromJWS(jwsSig); + + if (!header) + return null; + + var payload = payloadFromJWS(jwsSig); + if (header.typ === 'JWT' || opts.json) + payload = JSON.parse(payload, opts.encoding); + + return { + header: header, + payload: payload, + signature: signatureFromJWS(jwsSig) + }; +} + +function VerifyStream(opts) { + opts = opts || {}; + var secretOrKey = opts.secret; + secretOrKey = secretOrKey == null ? opts.publicKey : secretOrKey; + secretOrKey = secretOrKey == null ? opts.key : secretOrKey; + if (/^hs/i.test(opts.algorithm) === true && secretOrKey == null) { + throw new TypeError('secret must be a string or buffer or a KeyObject') + } + var secretStream = new DataStream(secretOrKey); + this.readable = true; + this.algorithm = opts.algorithm; + this.encoding = opts.encoding; + this.secret = this.publicKey = this.key = secretStream; + this.signature = new DataStream(opts.signature); + this.secret.once('close', function () { + if (!this.signature.writable && this.readable) + this.verify(); + }.bind(this)); + + this.signature.once('close', function () { + if (!this.secret.writable && this.readable) + this.verify(); + }.bind(this)); +} +util.inherits(VerifyStream, Stream); +VerifyStream.prototype.verify = function verify() { + try { + var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer); + var obj = jwsDecode(this.signature.buffer, this.encoding); + this.emit('done', valid, obj); + this.emit('data', valid); + this.emit('end'); + this.readable = false; + return valid; + } catch (e) { + this.readable = false; + this.emit('error', e); + this.emit('close'); + } +}; + +VerifyStream.decode = jwsDecode; +VerifyStream.isValid = isValidJws; +VerifyStream.verify = jwsVerify; + +module.exports = VerifyStream; diff --git a/bff/node_modules/jws/opslevel.yml b/bff/node_modules/jws/opslevel.yml new file mode 100644 index 0000000..aeeeea7 --- /dev/null +++ b/bff/node_modules/jws/opslevel.yml @@ -0,0 +1,6 @@ +--- +version: 1 +repository: + owner: iam_protocols + tier: + tags: diff --git a/bff/node_modules/jws/package.json b/bff/node_modules/jws/package.json new file mode 100644 index 0000000..464d72b --- /dev/null +++ b/bff/node_modules/jws/package.json @@ -0,0 +1,34 @@ +{ + "name": "jws", + "version": "4.0.1", + "description": "Implementation of JSON Web Signatures", + "main": "index.js", + "directories": { + "test": "test" + }, + "scripts": { + "test": "make test" + }, + "repository": { + "type": "git", + "url": "git://github.com/brianloveswords/node-jws.git" + }, + "keywords": [ + "jws", + "json", + "web", + "signatures" + ], + "author": "Brian J Brennan", + "license": "MIT", + "readmeFilename": "readme.md", + "gitHead": "c0f6b27bcea5a2ad2e304d91c2e842e4076a6b03", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "devDependencies": { + "semver": "^5.1.0", + "tape": "~2.14.0" + } +} diff --git a/bff/node_modules/jws/readme.md b/bff/node_modules/jws/readme.md new file mode 100644 index 0000000..2f32dca --- /dev/null +++ b/bff/node_modules/jws/readme.md @@ -0,0 +1,255 @@ +# node-jws [![Build Status](https://secure.travis-ci.org/brianloveswords/node-jws.svg)](http://travis-ci.org/brianloveswords/node-jws) + +An implementation of [JSON Web Signatures](http://self-issued.info/docs/draft-ietf-jose-json-web-signature.html). + +This was developed against `draft-ietf-jose-json-web-signature-08` and +implements the entire spec **except** X.509 Certificate Chain +signing/verifying (patches welcome). + +There are both synchronous (`jws.sign`, `jws.verify`) and streaming +(`jws.createSign`, `jws.createVerify`) APIs. + +# Install + +```bash +$ npm install jws +``` + +# Usage + +## jws.ALGORITHMS + +Array of supported algorithms. The following algorithms are currently supported. + +alg Parameter Value | Digital Signature or MAC Algorithm +----------------|---------------------------- +HS256 | HMAC using SHA-256 hash algorithm +HS384 | HMAC using SHA-384 hash algorithm +HS512 | HMAC using SHA-512 hash algorithm +RS256 | RSASSA using SHA-256 hash algorithm +RS384 | RSASSA using SHA-384 hash algorithm +RS512 | RSASSA using SHA-512 hash algorithm +PS256 | RSASSA-PSS using SHA-256 hash algorithm +PS384 | RSASSA-PSS using SHA-384 hash algorithm +PS512 | RSASSA-PSS using SHA-512 hash algorithm +ES256 | ECDSA using P-256 curve and SHA-256 hash algorithm +ES384 | ECDSA using P-384 curve and SHA-384 hash algorithm +ES512 | ECDSA using P-521 curve and SHA-512 hash algorithm +none | No digital signature or MAC value included + +## jws.sign(options) + +(Synchronous) Return a JSON Web Signature for a header and a payload. + +Options: + +* `header` +* `payload` +* `secret` or `privateKey` +* `encoding` (Optional, defaults to 'utf8') + +`header` must be an object with an `alg` property. `header.alg` must be +one a value found in `jws.ALGORITHMS`. See above for a table of +supported algorithms. + +If `payload` is not a buffer or a string, it will be coerced into a string +using `JSON.stringify`. + +Example + +```js +const signature = jws.sign({ + header: { alg: 'HS256' }, + payload: 'h. jon benjamin', + secret: 'has a van', +}); +``` + +## jws.verify(signature, algorithm, secretOrKey) + +(Synchronous) Returns `true` or `false` for whether a signature matches a +secret or key. + +`signature` is a JWS Signature. `header.alg` must be a value found in `jws.ALGORITHMS`. +See above for a table of supported algorithms. `secretOrKey` is a string or +buffer containing either the secret for HMAC algorithms, or the PEM +encoded public key for RSA and ECDSA. + +Note that the `"alg"` value from the signature header is ignored. + + +## jws.decode(signature) + +(Synchronous) Returns the decoded header, decoded payload, and signature +parts of the JWS Signature. + +Returns an object with three properties, e.g. +```js +{ header: { alg: 'HS256' }, + payload: 'h. jon benjamin', + signature: 'YOWPewyGHKu4Y_0M_vtlEnNlqmFOclqp4Hy6hVHfFT4' +} +``` + +## jws.createSign(options) + +Returns a new SignStream object. + +Options: + +* `header` (required) +* `payload` +* `key` || `privateKey` || `secret` +* `encoding` (Optional, defaults to 'utf8') + +Other than `header`, all options expect a string or a buffer when the +value is known ahead of time, or a stream for convenience. +`key`/`privateKey`/`secret` may also be an object when using an encrypted +private key, see the [crypto documentation][encrypted-key-docs]. + +Example: + +```js + +// This... +jws.createSign({ + header: { alg: 'RS256' }, + privateKey: privateKeyStream, + payload: payloadStream, +}).on('done', function(signature) { + // ... +}); + +// is equivalent to this: +const signer = jws.createSign({ + header: { alg: 'RS256' }, +}); +privateKeyStream.pipe(signer.privateKey); +payloadStream.pipe(signer.payload); +signer.on('done', function(signature) { + // ... +}); +``` + +## jws.createVerify(options) + +Returns a new VerifyStream object. + +Options: + +* `signature` +* `algorithm` +* `key` || `publicKey` || `secret` +* `encoding` (Optional, defaults to 'utf8') + +All options expect a string or a buffer when the value is known ahead of +time, or a stream for convenience. + +Example: + +```js + +// This... +jws.createVerify({ + publicKey: pubKeyStream, + signature: sigStream, +}).on('done', function(verified, obj) { + // ... +}); + +// is equivilant to this: +const verifier = jws.createVerify(); +pubKeyStream.pipe(verifier.publicKey); +sigStream.pipe(verifier.signature); +verifier.on('done', function(verified, obj) { + // ... +}); +``` + +## Class: SignStream + +A `Readable Stream` that emits a single data event (the calculated +signature) when done. + +### Event: 'done' +`function (signature) { }` + +### signer.payload + +A `Writable Stream` that expects the JWS payload. Do *not* use if you +passed a `payload` option to the constructor. + +Example: + +```js +payloadStream.pipe(signer.payload); +``` + +### signer.secret
signer.key
signer.privateKey + +A `Writable Stream`. Expects the JWS secret for HMAC, or the privateKey +for ECDSA and RSA. Do *not* use if you passed a `secret` or `key` option +to the constructor. + +Example: + +```js +privateKeyStream.pipe(signer.privateKey); +``` + +## Class: VerifyStream + +This is a `Readable Stream` that emits a single data event, the result +of whether or not that signature was valid. + +### Event: 'done' +`function (valid, obj) { }` + +`valid` is a boolean for whether or not the signature is valid. + +### verifier.signature + +A `Writable Stream` that expects a JWS Signature. Do *not* use if you +passed a `signature` option to the constructor. + +### verifier.secret
verifier.key
verifier.publicKey + +A `Writable Stream` that expects a public key or secret. Do *not* use if you +passed a `key` or `secret` option to the constructor. + +# TODO + +* It feels like there should be some convenience options/APIs for + defining the algorithm rather than having to define a header object + with `{ alg: 'ES512' }` or whatever every time. + +* X.509 support, ugh + +# License + +MIT + +``` +Copyright (c) 2013-2015 Brian J. Brennan + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` + +[encrypted-key-docs]: https://nodejs.org/api/crypto.html#crypto_sign_sign_private_key_output_format diff --git a/bff/node_modules/lodash.includes/LICENSE b/bff/node_modules/lodash.includes/LICENSE new file mode 100644 index 0000000..e0c69d5 --- /dev/null +++ b/bff/node_modules/lodash.includes/LICENSE @@ -0,0 +1,47 @@ +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. diff --git a/bff/node_modules/lodash.includes/README.md b/bff/node_modules/lodash.includes/README.md new file mode 100644 index 0000000..26e9377 --- /dev/null +++ b/bff/node_modules/lodash.includes/README.md @@ -0,0 +1,18 @@ +# lodash.includes v4.3.0 + +The [lodash](https://lodash.com/) method `_.includes` exported as a [Node.js](https://nodejs.org/) module. + +## Installation + +Using npm: +```bash +$ {sudo -H} npm i -g npm +$ npm i --save lodash.includes +``` + +In Node.js: +```js +var includes = require('lodash.includes'); +``` + +See the [documentation](https://lodash.com/docs#includes) or [package source](https://github.com/lodash/lodash/blob/4.3.0-npm-packages/lodash.includes) for more details. diff --git a/bff/node_modules/lodash.includes/index.js b/bff/node_modules/lodash.includes/index.js new file mode 100644 index 0000000..e88d533 --- /dev/null +++ b/bff/node_modules/lodash.includes/index.js @@ -0,0 +1,745 @@ +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_SAFE_INTEGER = 9007199254740991, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array ? array.length : 0, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return baseFindIndex(array, baseIsNaN, fromIndex); + } + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +/** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ +function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); +} + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object), + nativeMax = Math.max; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + // Safari 9 makes `arguments.length` enumerable in strict mode. + var result = (isArray(value) || isArguments(value)) + ? baseTimes(value.length, String) + : []; + + var length = result.length, + skipIndexes = !!length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + result.push(key); + } + } + return result; +} + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + length = length == null ? MAX_SAFE_INTEGER : length; + return !!length && + (typeof value == 'number' || reIsUint.test(value)) && + (value > -1 && value % 1 == 0 && value < length); +} + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +/** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ +function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); +} + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +function isArguments(value) { + // Safari 8.1 makes `arguments.callee` enumerable in strict mode. + return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && + (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag); +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ +function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; +} + +/** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ +function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; +} + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +/** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ +function values(object) { + return object ? baseValues(object, keys(object)) : []; +} + +module.exports = includes; diff --git a/bff/node_modules/lodash.includes/package.json b/bff/node_modules/lodash.includes/package.json new file mode 100644 index 0000000..a02e645 --- /dev/null +++ b/bff/node_modules/lodash.includes/package.json @@ -0,0 +1,17 @@ +{ + "name": "lodash.includes", + "version": "4.3.0", + "description": "The lodash method `_.includes` exported as a module.", + "homepage": "https://lodash.com/", + "icon": "https://lodash.com/icon.svg", + "license": "MIT", + "keywords": "lodash-modularized, includes", + "author": "John-David Dalton (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton (http://allyoucanleet.com/)", + "Blaine Bublitz (https://github.com/phated)", + "Mathias Bynens (https://mathiasbynens.be/)" + ], + "repository": "lodash/lodash", + "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } +} diff --git a/bff/node_modules/lodash.isboolean/LICENSE b/bff/node_modules/lodash.isboolean/LICENSE new file mode 100644 index 0000000..b054ca5 --- /dev/null +++ b/bff/node_modules/lodash.isboolean/LICENSE @@ -0,0 +1,22 @@ +Copyright 2012-2016 The Dojo Foundation +Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/lodash.isboolean/README.md b/bff/node_modules/lodash.isboolean/README.md new file mode 100644 index 0000000..b3c476b --- /dev/null +++ b/bff/node_modules/lodash.isboolean/README.md @@ -0,0 +1,18 @@ +# lodash.isboolean v3.0.3 + +The [lodash](https://lodash.com/) method `_.isBoolean` exported as a [Node.js](https://nodejs.org/) module. + +## Installation + +Using npm: +```bash +$ {sudo -H} npm i -g npm +$ npm i --save lodash.isboolean +``` + +In Node.js: +```js +var isBoolean = require('lodash.isboolean'); +``` + +See the [documentation](https://lodash.com/docs#isBoolean) or [package source](https://github.com/lodash/lodash/blob/3.0.3-npm-packages/lodash.isboolean) for more details. diff --git a/bff/node_modules/lodash.isboolean/index.js b/bff/node_modules/lodash.isboolean/index.js new file mode 100644 index 0000000..23bbabd --- /dev/null +++ b/bff/node_modules/lodash.isboolean/index.js @@ -0,0 +1,70 @@ +/** + * lodash 3.0.3 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ +function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && objectToString.call(value) == boolTag); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +module.exports = isBoolean; diff --git a/bff/node_modules/lodash.isboolean/package.json b/bff/node_modules/lodash.isboolean/package.json new file mode 100644 index 0000000..01d6e8b --- /dev/null +++ b/bff/node_modules/lodash.isboolean/package.json @@ -0,0 +1,17 @@ +{ + "name": "lodash.isboolean", + "version": "3.0.3", + "description": "The lodash method `_.isBoolean` exported as a module.", + "homepage": "https://lodash.com/", + "icon": "https://lodash.com/icon.svg", + "license": "MIT", + "keywords": "lodash-modularized, isboolean", + "author": "John-David Dalton (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton (http://allyoucanleet.com/)", + "Blaine Bublitz (https://github.com/phated)", + "Mathias Bynens (https://mathiasbynens.be/)" + ], + "repository": "lodash/lodash", + "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } +} diff --git a/bff/node_modules/lodash.isinteger/LICENSE b/bff/node_modules/lodash.isinteger/LICENSE new file mode 100644 index 0000000..e0c69d5 --- /dev/null +++ b/bff/node_modules/lodash.isinteger/LICENSE @@ -0,0 +1,47 @@ +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. diff --git a/bff/node_modules/lodash.isinteger/README.md b/bff/node_modules/lodash.isinteger/README.md new file mode 100644 index 0000000..3a78567 --- /dev/null +++ b/bff/node_modules/lodash.isinteger/README.md @@ -0,0 +1,18 @@ +# lodash.isinteger v4.0.4 + +The [lodash](https://lodash.com/) method `_.isInteger` exported as a [Node.js](https://nodejs.org/) module. + +## Installation + +Using npm: +```bash +$ {sudo -H} npm i -g npm +$ npm i --save lodash.isinteger +``` + +In Node.js: +```js +var isInteger = require('lodash.isinteger'); +``` + +See the [documentation](https://lodash.com/docs#isInteger) or [package source](https://github.com/lodash/lodash/blob/4.0.4-npm-packages/lodash.isinteger) for more details. diff --git a/bff/node_modules/lodash.isinteger/index.js b/bff/node_modules/lodash.isinteger/index.js new file mode 100644 index 0000000..3bf06f0 --- /dev/null +++ b/bff/node_modules/lodash.isinteger/index.js @@ -0,0 +1,265 @@ +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ +function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ +function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; +} + +/** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ +function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; +} + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +module.exports = isInteger; diff --git a/bff/node_modules/lodash.isinteger/package.json b/bff/node_modules/lodash.isinteger/package.json new file mode 100644 index 0000000..92db256 --- /dev/null +++ b/bff/node_modules/lodash.isinteger/package.json @@ -0,0 +1,17 @@ +{ + "name": "lodash.isinteger", + "version": "4.0.4", + "description": "The lodash method `_.isInteger` exported as a module.", + "homepage": "https://lodash.com/", + "icon": "https://lodash.com/icon.svg", + "license": "MIT", + "keywords": "lodash-modularized, isinteger", + "author": "John-David Dalton (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton (http://allyoucanleet.com/)", + "Blaine Bublitz (https://github.com/phated)", + "Mathias Bynens (https://mathiasbynens.be/)" + ], + "repository": "lodash/lodash", + "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } +} diff --git a/bff/node_modules/lodash.isnumber/LICENSE b/bff/node_modules/lodash.isnumber/LICENSE new file mode 100644 index 0000000..b054ca5 --- /dev/null +++ b/bff/node_modules/lodash.isnumber/LICENSE @@ -0,0 +1,22 @@ +Copyright 2012-2016 The Dojo Foundation +Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/lodash.isnumber/README.md b/bff/node_modules/lodash.isnumber/README.md new file mode 100644 index 0000000..a1d434d --- /dev/null +++ b/bff/node_modules/lodash.isnumber/README.md @@ -0,0 +1,18 @@ +# lodash.isnumber v3.0.3 + +The [lodash](https://lodash.com/) method `_.isNumber` exported as a [Node.js](https://nodejs.org/) module. + +## Installation + +Using npm: +```bash +$ {sudo -H} npm i -g npm +$ npm i --save lodash.isnumber +``` + +In Node.js: +```js +var isNumber = require('lodash.isnumber'); +``` + +See the [documentation](https://lodash.com/docs#isNumber) or [package source](https://github.com/lodash/lodash/blob/3.0.3-npm-packages/lodash.isnumber) for more details. diff --git a/bff/node_modules/lodash.isnumber/index.js b/bff/node_modules/lodash.isnumber/index.js new file mode 100644 index 0000000..35a8573 --- /dev/null +++ b/bff/node_modules/lodash.isnumber/index.js @@ -0,0 +1,79 @@ +/** + * lodash 3.0.3 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** `Object#toString` result references. */ +var numberTag = '[object Number]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified + * as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ +function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && objectToString.call(value) == numberTag); +} + +module.exports = isNumber; diff --git a/bff/node_modules/lodash.isnumber/package.json b/bff/node_modules/lodash.isnumber/package.json new file mode 100644 index 0000000..4c33c2a --- /dev/null +++ b/bff/node_modules/lodash.isnumber/package.json @@ -0,0 +1,17 @@ +{ + "name": "lodash.isnumber", + "version": "3.0.3", + "description": "The lodash method `_.isNumber` exported as a module.", + "homepage": "https://lodash.com/", + "icon": "https://lodash.com/icon.svg", + "license": "MIT", + "keywords": "lodash-modularized, isnumber", + "author": "John-David Dalton (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton (http://allyoucanleet.com/)", + "Blaine Bublitz (https://github.com/phated)", + "Mathias Bynens (https://mathiasbynens.be/)" + ], + "repository": "lodash/lodash", + "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } +} diff --git a/bff/node_modules/lodash.isplainobject/LICENSE b/bff/node_modules/lodash.isplainobject/LICENSE new file mode 100644 index 0000000..e0c69d5 --- /dev/null +++ b/bff/node_modules/lodash.isplainobject/LICENSE @@ -0,0 +1,47 @@ +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. diff --git a/bff/node_modules/lodash.isplainobject/README.md b/bff/node_modules/lodash.isplainobject/README.md new file mode 100644 index 0000000..aeefd74 --- /dev/null +++ b/bff/node_modules/lodash.isplainobject/README.md @@ -0,0 +1,18 @@ +# lodash.isplainobject v4.0.6 + +The [lodash](https://lodash.com/) method `_.isPlainObject` exported as a [Node.js](https://nodejs.org/) module. + +## Installation + +Using npm: +```bash +$ {sudo -H} npm i -g npm +$ npm i --save lodash.isplainobject +``` + +In Node.js: +```js +var isPlainObject = require('lodash.isplainobject'); +``` + +See the [documentation](https://lodash.com/docs#isPlainObject) or [package source](https://github.com/lodash/lodash/blob/4.0.6-npm-packages/lodash.isplainobject) for more details. diff --git a/bff/node_modules/lodash.isplainobject/index.js b/bff/node_modules/lodash.isplainobject/index.js new file mode 100644 index 0000000..0f820ee --- /dev/null +++ b/bff/node_modules/lodash.isplainobject/index.js @@ -0,0 +1,139 @@ +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || + objectToString.call(value) != objectTag || isHostObject(value)) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return (typeof Ctor == 'function' && + Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); +} + +module.exports = isPlainObject; diff --git a/bff/node_modules/lodash.isplainobject/package.json b/bff/node_modules/lodash.isplainobject/package.json new file mode 100644 index 0000000..86f6a07 --- /dev/null +++ b/bff/node_modules/lodash.isplainobject/package.json @@ -0,0 +1,17 @@ +{ + "name": "lodash.isplainobject", + "version": "4.0.6", + "description": "The lodash method `_.isPlainObject` exported as a module.", + "homepage": "https://lodash.com/", + "icon": "https://lodash.com/icon.svg", + "license": "MIT", + "keywords": "lodash-modularized, isplainobject", + "author": "John-David Dalton (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton (http://allyoucanleet.com/)", + "Blaine Bublitz (https://github.com/phated)", + "Mathias Bynens (https://mathiasbynens.be/)" + ], + "repository": "lodash/lodash", + "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } +} diff --git a/bff/node_modules/lodash.isstring/LICENSE b/bff/node_modules/lodash.isstring/LICENSE new file mode 100644 index 0000000..b054ca5 --- /dev/null +++ b/bff/node_modules/lodash.isstring/LICENSE @@ -0,0 +1,22 @@ +Copyright 2012-2016 The Dojo Foundation +Based on Underscore.js, copyright 2009-2016 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/lodash.isstring/README.md b/bff/node_modules/lodash.isstring/README.md new file mode 100644 index 0000000..f184029 --- /dev/null +++ b/bff/node_modules/lodash.isstring/README.md @@ -0,0 +1,18 @@ +# lodash.isstring v4.0.1 + +The [lodash](https://lodash.com/) method `_.isString` exported as a [Node.js](https://nodejs.org/) module. + +## Installation + +Using npm: +```bash +$ {sudo -H} npm i -g npm +$ npm i --save lodash.isstring +``` + +In Node.js: +```js +var isString = require('lodash.isstring'); +``` + +See the [documentation](https://lodash.com/docs#isString) or [package source](https://github.com/lodash/lodash/blob/4.0.1-npm-packages/lodash.isstring) for more details. diff --git a/bff/node_modules/lodash.isstring/index.js b/bff/node_modules/lodash.isstring/index.js new file mode 100644 index 0000000..408225c --- /dev/null +++ b/bff/node_modules/lodash.isstring/index.js @@ -0,0 +1,95 @@ +/** + * lodash 4.0.1 (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright 2012-2016 The Dojo Foundation + * Based on Underscore.js 1.8.3 + * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @type Function + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag); +} + +module.exports = isString; diff --git a/bff/node_modules/lodash.isstring/package.json b/bff/node_modules/lodash.isstring/package.json new file mode 100644 index 0000000..1331535 --- /dev/null +++ b/bff/node_modules/lodash.isstring/package.json @@ -0,0 +1,17 @@ +{ + "name": "lodash.isstring", + "version": "4.0.1", + "description": "The lodash method `_.isString` exported as a module.", + "homepage": "https://lodash.com/", + "icon": "https://lodash.com/icon.svg", + "license": "MIT", + "keywords": "lodash-modularized, isstring", + "author": "John-David Dalton (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton (http://allyoucanleet.com/)", + "Blaine Bublitz (https://github.com/phated)", + "Mathias Bynens (https://mathiasbynens.be/)" + ], + "repository": "lodash/lodash", + "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } +} diff --git a/bff/node_modules/lodash.once/LICENSE b/bff/node_modules/lodash.once/LICENSE new file mode 100644 index 0000000..e0c69d5 --- /dev/null +++ b/bff/node_modules/lodash.once/LICENSE @@ -0,0 +1,47 @@ +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. diff --git a/bff/node_modules/lodash.once/README.md b/bff/node_modules/lodash.once/README.md new file mode 100644 index 0000000..c4a2f16 --- /dev/null +++ b/bff/node_modules/lodash.once/README.md @@ -0,0 +1,18 @@ +# lodash.once v4.1.1 + +The [lodash](https://lodash.com/) method `_.once` exported as a [Node.js](https://nodejs.org/) module. + +## Installation + +Using npm: +```bash +$ {sudo -H} npm i -g npm +$ npm i --save lodash.once +``` + +In Node.js: +```js +var once = require('lodash.once'); +``` + +See the [documentation](https://lodash.com/docs#once) or [package source](https://github.com/lodash/lodash/blob/4.1.1-npm-packages/lodash.once) for more details. diff --git a/bff/node_modules/lodash.once/index.js b/bff/node_modules/lodash.once/index.js new file mode 100644 index 0000000..414ceb3 --- /dev/null +++ b/bff/node_modules/lodash.once/index.js @@ -0,0 +1,294 @@ +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_INTEGER = 1.7976931348623157e+308, + NAN = 0 / 0; + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ +function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; +} + +/** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ +function once(func) { + return before(2, func); +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ +function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; +} + +/** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ +function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; +} + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +module.exports = once; diff --git a/bff/node_modules/lodash.once/package.json b/bff/node_modules/lodash.once/package.json new file mode 100644 index 0000000..fae782c --- /dev/null +++ b/bff/node_modules/lodash.once/package.json @@ -0,0 +1,17 @@ +{ + "name": "lodash.once", + "version": "4.1.1", + "description": "The lodash method `_.once` exported as a module.", + "homepage": "https://lodash.com/", + "icon": "https://lodash.com/icon.svg", + "license": "MIT", + "keywords": "lodash-modularized, once", + "author": "John-David Dalton (http://allyoucanleet.com/)", + "contributors": [ + "John-David Dalton (http://allyoucanleet.com/)", + "Blaine Bublitz (https://github.com/phated)", + "Mathias Bynens (https://mathiasbynens.be/)" + ], + "repository": "lodash/lodash", + "scripts": { "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\"" } +} diff --git a/bff/node_modules/math-intrinsics/.eslintrc b/bff/node_modules/math-intrinsics/.eslintrc new file mode 100644 index 0000000..d90a1bc --- /dev/null +++ b/bff/node_modules/math-intrinsics/.eslintrc @@ -0,0 +1,16 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "eqeqeq": ["error", "allow-null"], + "id-length": "off", + "new-cap": ["error", { + "capIsNewExceptions": [ + "RequireObjectCoercible", + "ToObject", + ], + }], + }, +} diff --git a/bff/node_modules/math-intrinsics/.github/FUNDING.yml b/bff/node_modules/math-intrinsics/.github/FUNDING.yml new file mode 100644 index 0000000..868f4ff --- /dev/null +++ b/bff/node_modules/math-intrinsics/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/math-intrinsics +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/bff/node_modules/math-intrinsics/CHANGELOG.md b/bff/node_modules/math-intrinsics/CHANGELOG.md new file mode 100644 index 0000000..9cf48f5 --- /dev/null +++ b/bff/node_modules/math-intrinsics/CHANGELOG.md @@ -0,0 +1,24 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.0](https://github.com/es-shims/math-intrinsics/compare/v1.0.0...v1.1.0) - 2024-12-18 + +### Commits + +- [New] add `round` [`7cfb044`](https://github.com/es-shims/math-intrinsics/commit/7cfb04460c0fbdf1ca101eecbac3f59d11994130) +- [Tests] add attw [`e96be8f`](https://github.com/es-shims/math-intrinsics/commit/e96be8fbf58449eafe976446a0470e6ea561ad8d) +- [Dev Deps] update `@types/tape` [`30d0023`](https://github.com/es-shims/math-intrinsics/commit/30d00234ce8a3fa0094a61cd55d6686eb91e36ec) + +## v1.0.0 - 2024-12-11 + +### Commits + +- Initial implementation, tests, readme, types [`b898caa`](https://github.com/es-shims/math-intrinsics/commit/b898caae94e9994a94a42b8740f7bbcfd0a868fe) +- Initial commit [`02745b0`](https://github.com/es-shims/math-intrinsics/commit/02745b03a62255af8a332771987b55d127538d9c) +- [New] add `constants/maxArrayLength`, `mod` [`b978178`](https://github.com/es-shims/math-intrinsics/commit/b978178a57685bd23ed1c7efe2137f3784f5fcc5) +- npm init [`a39fc57`](https://github.com/es-shims/math-intrinsics/commit/a39fc57e5639a645d0bd52a0dc56202480223be2) +- Only apps should have lockfiles [`9451580`](https://github.com/es-shims/math-intrinsics/commit/94515800fb34db4f3cc7e99290042d45609ac7bd) diff --git a/bff/node_modules/math-intrinsics/LICENSE b/bff/node_modules/math-intrinsics/LICENSE new file mode 100644 index 0000000..34995e7 --- /dev/null +++ b/bff/node_modules/math-intrinsics/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 ECMAScript Shims + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/math-intrinsics/README.md b/bff/node_modules/math-intrinsics/README.md new file mode 100644 index 0000000..4a66dcf --- /dev/null +++ b/bff/node_modules/math-intrinsics/README.md @@ -0,0 +1,50 @@ +# math-intrinsics [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ES Math-related intrinsics and helpers, robustly cached. + + - `abs` + - `floor` + - `isFinite` + - `isInteger` + - `isNaN` + - `isNegativeZero` + - `max` + - `min` + - `mod` + - `pow` + - `round` + - `sign` + - `constants/maxArrayLength` + - `constants/maxSafeInteger` + - `constants/maxValue` + + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/math-intrinsics +[npm-version-svg]: https://versionbadg.es/es-shims/math-intrinsics.svg +[deps-svg]: https://david-dm.org/es-shims/math-intrinsics.svg +[deps-url]: https://david-dm.org/es-shims/math-intrinsics +[dev-deps-svg]: https://david-dm.org/es-shims/math-intrinsics/dev-status.svg +[dev-deps-url]: https://david-dm.org/es-shims/math-intrinsics#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/math-intrinsics.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/math-intrinsics.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-object.svg +[downloads-url]: https://npm-stat.com/charts.html?package=math-intrinsics +[codecov-image]: https://codecov.io/gh/es-shims/math-intrinsics/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/es-shims/math-intrinsics/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/es-shims/math-intrinsics +[actions-url]: https://github.com/es-shims/math-intrinsics/actions diff --git a/bff/node_modules/math-intrinsics/abs.d.ts b/bff/node_modules/math-intrinsics/abs.d.ts new file mode 100644 index 0000000..14ad9c6 --- /dev/null +++ b/bff/node_modules/math-intrinsics/abs.d.ts @@ -0,0 +1 @@ +export = Math.abs; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/abs.js b/bff/node_modules/math-intrinsics/abs.js new file mode 100644 index 0000000..a751424 --- /dev/null +++ b/bff/node_modules/math-intrinsics/abs.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./abs')} */ +module.exports = Math.abs; diff --git a/bff/node_modules/math-intrinsics/constants/maxArrayLength.d.ts b/bff/node_modules/math-intrinsics/constants/maxArrayLength.d.ts new file mode 100644 index 0000000..b92d46b --- /dev/null +++ b/bff/node_modules/math-intrinsics/constants/maxArrayLength.d.ts @@ -0,0 +1,3 @@ +declare const MAX_ARRAY_LENGTH: 4294967295; + +export = MAX_ARRAY_LENGTH; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/constants/maxArrayLength.js b/bff/node_modules/math-intrinsics/constants/maxArrayLength.js new file mode 100644 index 0000000..cfc6aff --- /dev/null +++ b/bff/node_modules/math-intrinsics/constants/maxArrayLength.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./maxArrayLength')} */ +module.exports = 4294967295; // Math.pow(2, 32) - 1; diff --git a/bff/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts b/bff/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts new file mode 100644 index 0000000..fee3f62 --- /dev/null +++ b/bff/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts @@ -0,0 +1,3 @@ +declare const MAX_SAFE_INTEGER: 9007199254740991; + +export = MAX_SAFE_INTEGER; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/constants/maxSafeInteger.js b/bff/node_modules/math-intrinsics/constants/maxSafeInteger.js new file mode 100644 index 0000000..b568ad3 --- /dev/null +++ b/bff/node_modules/math-intrinsics/constants/maxSafeInteger.js @@ -0,0 +1,5 @@ +'use strict'; + +/** @type {import('./maxSafeInteger')} */ +// eslint-disable-next-line no-extra-parens +module.exports = /** @type {import('./maxSafeInteger')} */ (Number.MAX_SAFE_INTEGER) || 9007199254740991; // Math.pow(2, 53) - 1; diff --git a/bff/node_modules/math-intrinsics/constants/maxValue.d.ts b/bff/node_modules/math-intrinsics/constants/maxValue.d.ts new file mode 100644 index 0000000..292cb82 --- /dev/null +++ b/bff/node_modules/math-intrinsics/constants/maxValue.d.ts @@ -0,0 +1,3 @@ +declare const MAX_VALUE: 1.7976931348623157e+308; + +export = MAX_VALUE; diff --git a/bff/node_modules/math-intrinsics/constants/maxValue.js b/bff/node_modules/math-intrinsics/constants/maxValue.js new file mode 100644 index 0000000..a2202dc --- /dev/null +++ b/bff/node_modules/math-intrinsics/constants/maxValue.js @@ -0,0 +1,5 @@ +'use strict'; + +/** @type {import('./maxValue')} */ +// eslint-disable-next-line no-extra-parens +module.exports = /** @type {import('./maxValue')} */ (Number.MAX_VALUE) || 1.7976931348623157e+308; diff --git a/bff/node_modules/math-intrinsics/floor.d.ts b/bff/node_modules/math-intrinsics/floor.d.ts new file mode 100644 index 0000000..9265236 --- /dev/null +++ b/bff/node_modules/math-intrinsics/floor.d.ts @@ -0,0 +1 @@ +export = Math.floor; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/floor.js b/bff/node_modules/math-intrinsics/floor.js new file mode 100644 index 0000000..ab0e5d7 --- /dev/null +++ b/bff/node_modules/math-intrinsics/floor.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./floor')} */ +module.exports = Math.floor; diff --git a/bff/node_modules/math-intrinsics/isFinite.d.ts b/bff/node_modules/math-intrinsics/isFinite.d.ts new file mode 100644 index 0000000..6daae33 --- /dev/null +++ b/bff/node_modules/math-intrinsics/isFinite.d.ts @@ -0,0 +1,3 @@ +declare function isFinite(x: unknown): x is number | bigint; + +export = isFinite; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/isFinite.js b/bff/node_modules/math-intrinsics/isFinite.js new file mode 100644 index 0000000..b201a5a --- /dev/null +++ b/bff/node_modules/math-intrinsics/isFinite.js @@ -0,0 +1,12 @@ +'use strict'; + +var $isNaN = require('./isNaN'); + +/** @type {import('./isFinite')} */ +module.exports = function isFinite(x) { + return (typeof x === 'number' || typeof x === 'bigint') + && !$isNaN(x) + && x !== Infinity + && x !== -Infinity; +}; + diff --git a/bff/node_modules/math-intrinsics/isInteger.d.ts b/bff/node_modules/math-intrinsics/isInteger.d.ts new file mode 100644 index 0000000..13935a8 --- /dev/null +++ b/bff/node_modules/math-intrinsics/isInteger.d.ts @@ -0,0 +1,3 @@ +declare function isInteger(argument: unknown): argument is number; + +export = isInteger; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/isInteger.js b/bff/node_modules/math-intrinsics/isInteger.js new file mode 100644 index 0000000..4b1b9a5 --- /dev/null +++ b/bff/node_modules/math-intrinsics/isInteger.js @@ -0,0 +1,16 @@ +'use strict'; + +var $abs = require('./abs'); +var $floor = require('./floor'); + +var $isNaN = require('./isNaN'); +var $isFinite = require('./isFinite'); + +/** @type {import('./isInteger')} */ +module.exports = function isInteger(argument) { + if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { + return false; + } + var absValue = $abs(argument); + return $floor(absValue) === absValue; +}; diff --git a/bff/node_modules/math-intrinsics/isNaN.d.ts b/bff/node_modules/math-intrinsics/isNaN.d.ts new file mode 100644 index 0000000..c1d4c55 --- /dev/null +++ b/bff/node_modules/math-intrinsics/isNaN.d.ts @@ -0,0 +1 @@ +export = Number.isNaN; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/isNaN.js b/bff/node_modules/math-intrinsics/isNaN.js new file mode 100644 index 0000000..e36475c --- /dev/null +++ b/bff/node_modules/math-intrinsics/isNaN.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isNaN')} */ +module.exports = Number.isNaN || function isNaN(a) { + return a !== a; +}; diff --git a/bff/node_modules/math-intrinsics/isNegativeZero.d.ts b/bff/node_modules/math-intrinsics/isNegativeZero.d.ts new file mode 100644 index 0000000..7ad8819 --- /dev/null +++ b/bff/node_modules/math-intrinsics/isNegativeZero.d.ts @@ -0,0 +1,3 @@ +declare function isNegativeZero(x: unknown): boolean; + +export = isNegativeZero; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/isNegativeZero.js b/bff/node_modules/math-intrinsics/isNegativeZero.js new file mode 100644 index 0000000..b69adcc --- /dev/null +++ b/bff/node_modules/math-intrinsics/isNegativeZero.js @@ -0,0 +1,6 @@ +'use strict'; + +/** @type {import('./isNegativeZero')} */ +module.exports = function isNegativeZero(x) { + return x === 0 && 1 / x === 1 / -0; +}; diff --git a/bff/node_modules/math-intrinsics/max.d.ts b/bff/node_modules/math-intrinsics/max.d.ts new file mode 100644 index 0000000..ad6f43e --- /dev/null +++ b/bff/node_modules/math-intrinsics/max.d.ts @@ -0,0 +1 @@ +export = Math.max; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/max.js b/bff/node_modules/math-intrinsics/max.js new file mode 100644 index 0000000..edb55df --- /dev/null +++ b/bff/node_modules/math-intrinsics/max.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./max')} */ +module.exports = Math.max; diff --git a/bff/node_modules/math-intrinsics/min.d.ts b/bff/node_modules/math-intrinsics/min.d.ts new file mode 100644 index 0000000..fd90f2d --- /dev/null +++ b/bff/node_modules/math-intrinsics/min.d.ts @@ -0,0 +1 @@ +export = Math.min; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/min.js b/bff/node_modules/math-intrinsics/min.js new file mode 100644 index 0000000..5a4a7c7 --- /dev/null +++ b/bff/node_modules/math-intrinsics/min.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./min')} */ +module.exports = Math.min; diff --git a/bff/node_modules/math-intrinsics/mod.d.ts b/bff/node_modules/math-intrinsics/mod.d.ts new file mode 100644 index 0000000..549dbd4 --- /dev/null +++ b/bff/node_modules/math-intrinsics/mod.d.ts @@ -0,0 +1,3 @@ +declare function mod(number: number, modulo: number): number; + +export = mod; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/mod.js b/bff/node_modules/math-intrinsics/mod.js new file mode 100644 index 0000000..4a98362 --- /dev/null +++ b/bff/node_modules/math-intrinsics/mod.js @@ -0,0 +1,9 @@ +'use strict'; + +var $floor = require('./floor'); + +/** @type {import('./mod')} */ +module.exports = function mod(number, modulo) { + var remain = number % modulo; + return $floor(remain >= 0 ? remain : remain + modulo); +}; diff --git a/bff/node_modules/math-intrinsics/package.json b/bff/node_modules/math-intrinsics/package.json new file mode 100644 index 0000000..0676273 --- /dev/null +++ b/bff/node_modules/math-intrinsics/package.json @@ -0,0 +1,86 @@ +{ + "name": "math-intrinsics", + "version": "1.1.0", + "description": "ES Math-related intrinsics and helpers, robustly cached.", + "main": false, + "exports": { + "./abs": "./abs.js", + "./floor": "./floor.js", + "./isFinite": "./isFinite.js", + "./isInteger": "./isInteger.js", + "./isNaN": "./isNaN.js", + "./isNegativeZero": "./isNegativeZero.js", + "./max": "./max.js", + "./min": "./min.js", + "./mod": "./mod.js", + "./pow": "./pow.js", + "./sign": "./sign.js", + "./round": "./round.js", + "./constants/maxArrayLength": "./constants/maxArrayLength.js", + "./constants/maxSafeInteger": "./constants/maxSafeInteger.js", + "./constants/maxValue": "./constants/maxValue.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@'>= 10.2' audit --production", + "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc && attw -P", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/es-shims/math-intrinsics.git" + }, + "author": "Jordan Harband ", + "license": "MIT", + "bugs": { + "url": "https://github.com/es-shims/math-intrinsics/issues" + }, + "homepage": "https://github.com/es-shims/math-intrinsics#readme", + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/for-each": "^0.3.3", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.8.0", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "es-value-fixtures": "^1.5.0", + "eslint": "^8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "object-inspect": "^1.13.3", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/math-intrinsics/pow.d.ts b/bff/node_modules/math-intrinsics/pow.d.ts new file mode 100644 index 0000000..5873c44 --- /dev/null +++ b/bff/node_modules/math-intrinsics/pow.d.ts @@ -0,0 +1 @@ +export = Math.pow; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/pow.js b/bff/node_modules/math-intrinsics/pow.js new file mode 100644 index 0000000..c0a4103 --- /dev/null +++ b/bff/node_modules/math-intrinsics/pow.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./pow')} */ +module.exports = Math.pow; diff --git a/bff/node_modules/math-intrinsics/round.d.ts b/bff/node_modules/math-intrinsics/round.d.ts new file mode 100644 index 0000000..da1fde3 --- /dev/null +++ b/bff/node_modules/math-intrinsics/round.d.ts @@ -0,0 +1 @@ +export = Math.round; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/round.js b/bff/node_modules/math-intrinsics/round.js new file mode 100644 index 0000000..b792156 --- /dev/null +++ b/bff/node_modules/math-intrinsics/round.js @@ -0,0 +1,4 @@ +'use strict'; + +/** @type {import('./round')} */ +module.exports = Math.round; diff --git a/bff/node_modules/math-intrinsics/sign.d.ts b/bff/node_modules/math-intrinsics/sign.d.ts new file mode 100644 index 0000000..c49ceca --- /dev/null +++ b/bff/node_modules/math-intrinsics/sign.d.ts @@ -0,0 +1,3 @@ +declare function sign(x: number): number; + +export = sign; \ No newline at end of file diff --git a/bff/node_modules/math-intrinsics/sign.js b/bff/node_modules/math-intrinsics/sign.js new file mode 100644 index 0000000..9e5173c --- /dev/null +++ b/bff/node_modules/math-intrinsics/sign.js @@ -0,0 +1,11 @@ +'use strict'; + +var $isNaN = require('./isNaN'); + +/** @type {import('./sign')} */ +module.exports = function sign(number) { + if ($isNaN(number) || number === 0) { + return number; + } + return number < 0 ? -1 : +1; +}; diff --git a/bff/node_modules/math-intrinsics/test/index.js b/bff/node_modules/math-intrinsics/test/index.js new file mode 100644 index 0000000..0f90a5d --- /dev/null +++ b/bff/node_modules/math-intrinsics/test/index.js @@ -0,0 +1,192 @@ +'use strict'; + +var test = require('tape'); +var v = require('es-value-fixtures'); +var forEach = require('for-each'); +var inspect = require('object-inspect'); + +var abs = require('../abs'); +var floor = require('../floor'); +var isFinite = require('../isFinite'); +var isInteger = require('../isInteger'); +var isNaN = require('../isNaN'); +var isNegativeZero = require('../isNegativeZero'); +var max = require('../max'); +var min = require('../min'); +var mod = require('../mod'); +var pow = require('../pow'); +var round = require('../round'); +var sign = require('../sign'); + +var maxArrayLength = require('../constants/maxArrayLength'); +var maxSafeInteger = require('../constants/maxSafeInteger'); +var maxValue = require('../constants/maxValue'); + +test('abs', function (t) { + t.equal(abs(-1), 1, 'abs(-1) === 1'); + t.equal(abs(+1), 1, 'abs(+1) === 1'); + t.equal(abs(+0), +0, 'abs(+0) === +0'); + t.equal(abs(-0), +0, 'abs(-0) === +0'); + + t.end(); +}); + +test('floor', function (t) { + t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); + t.equal(floor(+1.1), 1, 'floor(+1.1) === 1'); + t.equal(floor(+0), +0, 'floor(+0) === +0'); + t.equal(floor(-0), -0, 'floor(-0) === -0'); + t.equal(floor(-Infinity), -Infinity, 'floor(-Infinity) === -Infinity'); + t.equal(floor(Number(Infinity)), Number(Infinity), 'floor(+Infinity) === +Infinity'); + t.equal(floor(NaN), NaN, 'floor(NaN) === NaN'); + t.equal(floor(0), +0, 'floor(0) === +0'); + t.equal(floor(-0), -0, 'floor(-0) === -0'); + t.equal(floor(1), 1, 'floor(1) === 1'); + t.equal(floor(-1), -1, 'floor(-1) === -1'); + t.equal(floor(1.1), 1, 'floor(1.1) === 1'); + t.equal(floor(-1.1), -2, 'floor(-1.1) === -2'); + t.equal(floor(maxValue), maxValue, 'floor(maxValue) === maxValue'); + t.equal(floor(maxSafeInteger), maxSafeInteger, 'floor(maxSafeInteger) === maxSafeInteger'); + + t.end(); +}); + +test('isFinite', function (t) { + t.equal(isFinite(0), true, 'isFinite(+0) === true'); + t.equal(isFinite(-0), true, 'isFinite(-0) === true'); + t.equal(isFinite(1), true, 'isFinite(1) === true'); + t.equal(isFinite(Infinity), false, 'isFinite(Infinity) === false'); + t.equal(isFinite(-Infinity), false, 'isFinite(-Infinity) === false'); + t.equal(isFinite(NaN), false, 'isFinite(NaN) === false'); + + forEach(v.nonNumbers, function (nonNumber) { + t.equal(isFinite(nonNumber), false, 'isFinite(' + inspect(nonNumber) + ') === false'); + }); + + t.end(); +}); + +test('isInteger', function (t) { + forEach([].concat( + // @ts-expect-error TS sucks with concat + v.nonNumbers, + v.nonIntegerNumbers + ), function (nonInteger) { + t.equal(isInteger(nonInteger), false, 'isInteger(' + inspect(nonInteger) + ') === false'); + }); + + t.end(); +}); + +test('isNaN', function (t) { + forEach([].concat( + // @ts-expect-error TS sucks with concat + v.nonNumbers, + v.infinities, + v.zeroes, + v.integerNumbers + ), function (nonNaN) { + t.equal(isNaN(nonNaN), false, 'isNaN(' + inspect(nonNaN) + ') === false'); + }); + + t.equal(isNaN(NaN), true, 'isNaN(NaN) === true'); + + t.end(); +}); + +test('isNegativeZero', function (t) { + t.equal(isNegativeZero(-0), true, 'isNegativeZero(-0) === true'); + t.equal(isNegativeZero(+0), false, 'isNegativeZero(+0) === false'); + t.equal(isNegativeZero(1), false, 'isNegativeZero(1) === false'); + t.equal(isNegativeZero(-1), false, 'isNegativeZero(-1) === false'); + t.equal(isNegativeZero(NaN), false, 'isNegativeZero(NaN) === false'); + t.equal(isNegativeZero(Infinity), false, 'isNegativeZero(Infinity) === false'); + t.equal(isNegativeZero(-Infinity), false, 'isNegativeZero(-Infinity) === false'); + + forEach(v.nonNumbers, function (nonNumber) { + t.equal(isNegativeZero(nonNumber), false, 'isNegativeZero(' + inspect(nonNumber) + ') === false'); + }); + + t.end(); +}); + +test('max', function (t) { + t.equal(max(1, 2), 2, 'max(1, 2) === 2'); + t.equal(max(1, 2, 3), 3, 'max(1, 2, 3) === 3'); + t.equal(max(1, 2, 3, 4), 4, 'max(1, 2, 3, 4) === 4'); + t.equal(max(1, 2, 3, 4, 5), 5, 'max(1, 2, 3, 4, 5) === 5'); + t.equal(max(1, 2, 3, 4, 5, 6), 6, 'max(1, 2, 3, 4, 5, 6) === 6'); + t.equal(max(1, 2, 3, 4, 5, 6, 7), 7, 'max(1, 2, 3, 4, 5, 6, 7) === 7'); + + t.end(); +}); + +test('min', function (t) { + t.equal(min(1, 2), 1, 'min(1, 2) === 1'); + t.equal(min(1, 2, 3), 1, 'min(1, 2, 3) === 1'); + t.equal(min(1, 2, 3, 4), 1, 'min(1, 2, 3, 4) === 1'); + t.equal(min(1, 2, 3, 4, 5), 1, 'min(1, 2, 3, 4, 5) === 1'); + t.equal(min(1, 2, 3, 4, 5, 6), 1, 'min(1, 2, 3, 4, 5, 6) === 1'); + + t.end(); +}); + +test('mod', function (t) { + t.equal(mod(1, 2), 1, 'mod(1, 2) === 1'); + t.equal(mod(2, 2), 0, 'mod(2, 2) === 0'); + t.equal(mod(3, 2), 1, 'mod(3, 2) === 1'); + t.equal(mod(4, 2), 0, 'mod(4, 2) === 0'); + t.equal(mod(5, 2), 1, 'mod(5, 2) === 1'); + t.equal(mod(6, 2), 0, 'mod(6, 2) === 0'); + t.equal(mod(7, 2), 1, 'mod(7, 2) === 1'); + t.equal(mod(8, 2), 0, 'mod(8, 2) === 0'); + t.equal(mod(9, 2), 1, 'mod(9, 2) === 1'); + t.equal(mod(10, 2), 0, 'mod(10, 2) === 0'); + t.equal(mod(11, 2), 1, 'mod(11, 2) === 1'); + + t.end(); +}); + +test('pow', function (t) { + t.equal(pow(2, 2), 4, 'pow(2, 2) === 4'); + t.equal(pow(2, 3), 8, 'pow(2, 3) === 8'); + t.equal(pow(2, 4), 16, 'pow(2, 4) === 16'); + t.equal(pow(2, 5), 32, 'pow(2, 5) === 32'); + t.equal(pow(2, 6), 64, 'pow(2, 6) === 64'); + t.equal(pow(2, 7), 128, 'pow(2, 7) === 128'); + t.equal(pow(2, 8), 256, 'pow(2, 8) === 256'); + t.equal(pow(2, 9), 512, 'pow(2, 9) === 512'); + t.equal(pow(2, 10), 1024, 'pow(2, 10) === 1024'); + + t.end(); +}); + +test('round', function (t) { + t.equal(round(1.1), 1, 'round(1.1) === 1'); + t.equal(round(1.5), 2, 'round(1.5) === 2'); + t.equal(round(1.9), 2, 'round(1.9) === 2'); + + t.end(); +}); + +test('sign', function (t) { + t.equal(sign(-1), -1, 'sign(-1) === -1'); + t.equal(sign(+1), +1, 'sign(+1) === +1'); + t.equal(sign(+0), +0, 'sign(+0) === +0'); + t.equal(sign(-0), -0, 'sign(-0) === -0'); + t.equal(sign(NaN), NaN, 'sign(NaN) === NaN'); + t.equal(sign(Infinity), +1, 'sign(Infinity) === +1'); + t.equal(sign(-Infinity), -1, 'sign(-Infinity) === -1'); + t.equal(sign(maxValue), +1, 'sign(maxValue) === +1'); + t.equal(sign(maxSafeInteger), +1, 'sign(maxSafeInteger) === +1'); + + t.end(); +}); + +test('constants', function (t) { + t.equal(typeof maxArrayLength, 'number', 'typeof maxArrayLength === "number"'); + t.equal(typeof maxSafeInteger, 'number', 'typeof maxSafeInteger === "number"'); + t.equal(typeof maxValue, 'number', 'typeof maxValue === "number"'); + + t.end(); +}); diff --git a/bff/node_modules/math-intrinsics/tsconfig.json b/bff/node_modules/math-intrinsics/tsconfig.json new file mode 100644 index 0000000..b131000 --- /dev/null +++ b/bff/node_modules/math-intrinsics/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@ljharb/tsconfig", +} diff --git a/bff/node_modules/media-typer/HISTORY.md b/bff/node_modules/media-typer/HISTORY.md new file mode 100644 index 0000000..538ade1 --- /dev/null +++ b/bff/node_modules/media-typer/HISTORY.md @@ -0,0 +1,50 @@ +1.1.0 / 2019-04-24 +================== + + * Add `test(string)` function + +1.0.2 / 2019-04-19 +================== + + * Fix JSDoc comment for `parse` function + +1.0.1 / 2018-10-20 +================== + + * Remove left over `parameters` property from class + +1.0.0 / 2018-10-20 +================== + +This major release brings the module back to it's RFC 6838 roots. If you want +a module to parse the `Content-Type` or similar HTTP headers, use the +`content-type` module instead. + + * Drop support for Node.js below 0.8 + * Remove parameter handling, which is outside RFC 6838 scope + * Remove `parse(req)` and `parse(res)` signatures + * perf: enable strict mode + * perf: use a class for object creation + +0.3.0 / 2014-09-07 +================== + + * Support Node.js 0.6 + * Throw error when parameter format invalid on parse + +0.2.0 / 2014-06-18 +================== + + * Add `typer.format()` to format media types + +0.1.0 / 2014-06-17 +================== + + * Accept `req` as argument to `parse` + * Accept `res` as argument to `parse` + * Parse media type with extra LWS between type and first parameter + +0.0.0 / 2014-06-13 +================== + + * Initial implementation diff --git a/bff/node_modules/media-typer/LICENSE b/bff/node_modules/media-typer/LICENSE new file mode 100644 index 0000000..84441fb --- /dev/null +++ b/bff/node_modules/media-typer/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/media-typer/README.md b/bff/node_modules/media-typer/README.md new file mode 100644 index 0000000..37edad1 --- /dev/null +++ b/bff/node_modules/media-typer/README.md @@ -0,0 +1,93 @@ +# media-typer + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Simple RFC 6838 media type parser. + +This module will parse a given media type into it's component parts, like type, +subtype, and suffix. A formatter is also provided to put them back together and +the two can be combined to normalize media types into a canonical form. + +If you are looking to parse the string that represents a media type and it's +parameters in HTTP (for example, the `Content-Type` header), use the +[content-type module](https://www.npmjs.com/package/content-type). + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install media-typer +``` + +## API + + + +```js +var typer = require('media-typer') +``` + +### typer.parse(string) + + + +```js +var obj = typer.parse('image/svg+xml') +``` + +Parse a media type string. This will return an object with the following +properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): + + - `type`: The type of the media type (always lower case). Example: `'image'` + + - `subtype`: The subtype of the media type (always lower case). Example: `'svg'` + + - `suffix`: The suffix of the media type (always lower case). Example: `'xml'` + +If the given type string is invalid, then a `TypeError` is thrown. + +### typer.format(obj) + + + +```js +var obj = typer.format({ type: 'image', subtype: 'svg', suffix: 'xml' }) +``` + +Format an object into a media type string. This will return a string of the +mime type for the given object. For the properties of the object, see the +documentation for `typer.parse(string)`. + +If any of the given object values are invalid, then a `TypeError` is thrown. + +### typer.test(string) + + + +```js +var valid = typer.test('image/svg+xml') +``` + +Validate a media type string. This will return `true` is the string is a well- +formatted media type, or `false` otherwise. + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/media-typer/master +[coveralls-url]: https://coveralls.io/r/jshttp/media-typer?branch=master +[node-version-image]: https://badgen.net/npm/node/media-typer +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/media-typer +[npm-url]: https://npmjs.org/package/media-typer +[npm-version-image]: https://badgen.net/npm/v/media-typer +[travis-image]: https://badgen.net/travis/jshttp/media-typer/master +[travis-url]: https://travis-ci.org/jshttp/media-typer diff --git a/bff/node_modules/media-typer/index.js b/bff/node_modules/media-typer/index.js new file mode 100644 index 0000000..897cae1 --- /dev/null +++ b/bff/node_modules/media-typer/index.js @@ -0,0 +1,143 @@ +/*! + * media-typer + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * RegExp to match type in RFC 6838 + * + * type-name = restricted-name + * subtype-name = restricted-name + * restricted-name = restricted-name-first *126restricted-name-chars + * restricted-name-first = ALPHA / DIGIT + * restricted-name-chars = ALPHA / DIGIT / "!" / "#" / + * "$" / "&" / "-" / "^" / "_" + * restricted-name-chars =/ "." ; Characters before first dot always + * ; specify a facet name + * restricted-name-chars =/ "+" ; Characters after last plus always + * ; specify a structured syntax suffix + * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z + * DIGIT = %x30-39 ; 0-9 + */ +var SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/ +var TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/ +var TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/ + +/** + * Module exports. + */ + +exports.format = format +exports.parse = parse +exports.test = test + +/** + * Format object to media type. + * + * @param {object} obj + * @return {string} + * @public + */ + +function format (obj) { + if (!obj || typeof obj !== 'object') { + throw new TypeError('argument obj is required') + } + + var subtype = obj.subtype + var suffix = obj.suffix + var type = obj.type + + if (!type || !TYPE_NAME_REGEXP.test(type)) { + throw new TypeError('invalid type') + } + + if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) { + throw new TypeError('invalid subtype') + } + + // format as type/subtype + var string = type + '/' + subtype + + // append +suffix + if (suffix) { + if (!TYPE_NAME_REGEXP.test(suffix)) { + throw new TypeError('invalid suffix') + } + + string += '+' + suffix + } + + return string +} + +/** + * Test media type. + * + * @param {string} string + * @return {object} + * @public + */ + +function test (string) { + if (!string) { + throw new TypeError('argument string is required') + } + + if (typeof string !== 'string') { + throw new TypeError('argument string is required to be a string') + } + + return TYPE_REGEXP.test(string.toLowerCase()) +} + +/** + * Parse media type to object. + * + * @param {string} string + * @return {object} + * @public + */ + +function parse (string) { + if (!string) { + throw new TypeError('argument string is required') + } + + if (typeof string !== 'string') { + throw new TypeError('argument string is required to be a string') + } + + var match = TYPE_REGEXP.exec(string.toLowerCase()) + + if (!match) { + throw new TypeError('invalid media type') + } + + var type = match[1] + var subtype = match[2] + var suffix + + // suffix after last + + var index = subtype.lastIndexOf('+') + if (index !== -1) { + suffix = subtype.substr(index + 1) + subtype = subtype.substr(0, index) + } + + return new MediaType(type, subtype, suffix) +} + +/** + * Class for MediaType object. + * @public + */ + +function MediaType (type, subtype, suffix) { + this.type = type + this.subtype = subtype + this.suffix = suffix +} diff --git a/bff/node_modules/media-typer/package.json b/bff/node_modules/media-typer/package.json new file mode 100644 index 0000000..1dca712 --- /dev/null +++ b/bff/node_modules/media-typer/package.json @@ -0,0 +1,33 @@ +{ + "name": "media-typer", + "description": "Simple RFC 6838 media type parser and formatter", + "version": "1.1.0", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "repository": "jshttp/media-typer", + "devDependencies": { + "eslint": "5.16.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.17.2", + "eslint-plugin-markdown": "1.0.0", + "eslint-plugin-node": "8.0.1", + "eslint-plugin-promise": "4.1.1", + "eslint-plugin-standard": "4.0.0", + "mocha": "6.1.4", + "nyc": "14.0.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-travis": "nyc --reporter=text npm test" + } +} diff --git a/bff/node_modules/merge-descriptors/index.d.ts b/bff/node_modules/merge-descriptors/index.d.ts new file mode 100644 index 0000000..df8f91f --- /dev/null +++ b/bff/node_modules/merge-descriptors/index.d.ts @@ -0,0 +1,11 @@ +/** +Merges "own" properties from a source to a destination object, including non-enumerable and accessor-defined properties. It retains original values and descriptors, ensuring the destination receives a complete and accurate copy of the source's properties. + +@param destination - The object to receive properties. +@param source - The object providing properties. +@param overwrite - Optional boolean to control overwriting of existing properties. Defaults to true. +@returns The modified destination object. +*/ +declare function mergeDescriptors(destination: T, source: U, overwrite?: boolean): T & U; + +export = mergeDescriptors; diff --git a/bff/node_modules/merge-descriptors/index.js b/bff/node_modules/merge-descriptors/index.js new file mode 100644 index 0000000..51228e5 --- /dev/null +++ b/bff/node_modules/merge-descriptors/index.js @@ -0,0 +1,26 @@ +'use strict'; + +function mergeDescriptors(destination, source, overwrite = true) { + if (!destination) { + throw new TypeError('The `destination` argument is required.'); + } + + if (!source) { + throw new TypeError('The `source` argument is required.'); + } + + for (const name of Object.getOwnPropertyNames(source)) { + if (!overwrite && Object.hasOwn(destination, name)) { + // Skip descriptor + continue; + } + + // Copy descriptor + const descriptor = Object.getOwnPropertyDescriptor(source, name); + Object.defineProperty(destination, name, descriptor); + } + + return destination; +} + +module.exports = mergeDescriptors; diff --git a/bff/node_modules/merge-descriptors/license b/bff/node_modules/merge-descriptors/license new file mode 100644 index 0000000..c509d45 --- /dev/null +++ b/bff/node_modules/merge-descriptors/license @@ -0,0 +1,11 @@ +MIT License + +Copyright (c) Jonathan Ong +Copyright (c) Douglas Christopher Wilson +Copyright (c) Sindre Sorhus (https://sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/merge-descriptors/package.json b/bff/node_modules/merge-descriptors/package.json new file mode 100644 index 0000000..9bedb25 --- /dev/null +++ b/bff/node_modules/merge-descriptors/package.json @@ -0,0 +1,50 @@ +{ + "name": "merge-descriptors", + "version": "2.0.0", + "description": "Merge objects using their property descriptors", + "license": "MIT", + "repository": "sindresorhus/merge-descriptors", + "funding": "https://github.com/sponsors/sindresorhus", + "contributors": [ + "Jonathan Ong ", + "Douglas Christopher Wilson ", + "Mike Grabowski ", + "Sindre Sorhus " + ], + "exports": { + "types": "./index.d.ts", + "default": "./index.js" + }, + "main": "./index.js", + "types": "./index.d.ts", + "sideEffects": false, + "engines": { + "node": ">=18" + }, + "scripts": { + "test": "xo && ava" + }, + "files": [ + "index.js", + "index.d.ts" + ], + "keywords": [ + "merge", + "descriptors", + "object", + "property", + "properties", + "merging", + "getter", + "setter" + ], + "devDependencies": { + "ava": "^5.3.1", + "xo": "^0.56.0" + }, + "xo": { + "rules": { + "unicorn/prefer-module": "off" + } + } +} diff --git a/bff/node_modules/merge-descriptors/readme.md b/bff/node_modules/merge-descriptors/readme.md new file mode 100644 index 0000000..1dee67d --- /dev/null +++ b/bff/node_modules/merge-descriptors/readme.md @@ -0,0 +1,55 @@ +# merge-descriptors + +> Merge objects using their property descriptors + +## Install + +```sh +npm install merge-descriptors +``` + +## Usage + +```js +import mergeDescriptors from 'merge-descriptors'; + +const thing = { + get name() { + return 'John' + } +} + +const animal = {}; + +mergeDescriptors(animal, thing); + +console.log(animal.name); +//=> 'John' +``` + +## API + +### merge(destination, source, overwrite?) + +Merges "own" properties from a source to a destination object, including non-enumerable and accessor-defined properties. It retains original values and descriptors, ensuring the destination receives a complete and accurate copy of the source's properties. + +Returns the modified destination object. + +#### destination + +Type: `object` + +The object to receive properties. + +#### source + +Type: `object` + +The object providing properties. + +#### overwrite + +Type: `boolean`\ +Default: `true` + +A boolean to control overwriting of existing properties. diff --git a/bff/node_modules/mime-db/HISTORY.md b/bff/node_modules/mime-db/HISTORY.md new file mode 100644 index 0000000..fb35bec --- /dev/null +++ b/bff/node_modules/mime-db/HISTORY.md @@ -0,0 +1,541 @@ +1.54.0 / 2025-03-17 +=================== + + * Update mime type for DCM format (#362) + * mark application/octet-stream as compressible (#163) + * Fix typo in application/x-zip-compressed mimetype (#359) + * Add mime-type for Jupyter notebooks (#282) + * Add Google Drive MIME types (#311) + * Add .blend file type (#338) + * Add support for the FBX file extension (#342) + * Add Adobe DNG file (#340) + * Add Procreate Brush and Brush Set file Types (#339) + * Add support for Procreate Dreams (#341) + * replace got with undici (#352) + * Added extensions list for model/step (#293) + * Add m4b as a type of audio/mp4 (#357) + * windows 11 application/x-zip-compressed (#346) + * add dotLottie mime type (#351) + * Add some MS-related extensions and types (#336) + +1.53.0 / 2024-07-12 +=================== + + * Add extension `.sql` to `application/sql` + * Add extensions `.aac` and `.adts` to `audio/aac` + * Add extensions `.js` and `.mjs` to `text/javascript` + * Add extensions for `application/mp4` from IANA + * Add extensions from IANA for more MIME types + * Add Microsoft app installer types and extensions + * Add new upstream MIME types + * Fix extensions for `text/markdown` to match IANA + * Remove extension `.mjs` from `application/javascript` + * Remove obsolete MIME types from IANA data + +1.52.0 / 2022-02-21 +=================== + + * Add extensions from IANA for more `image/*` types + * Add extension `.asc` to `application/pgp-keys` + * Add extensions to various XML types + * Add new upstream MIME types + +1.51.0 / 2021-11-08 +=================== + + * Add new upstream MIME types + * Mark `image/vnd.microsoft.icon` as compressible + * Mark `image/vnd.ms-dds` as compressible + +1.50.0 / 2021-09-15 +=================== + + * Add deprecated iWorks mime types and extensions + * Add new upstream MIME types + +1.49.0 / 2021-07-26 +=================== + + * Add extension `.trig` to `application/trig` + * Add new upstream MIME types + +1.48.0 / 2021-05-30 +=================== + + * Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + * Add new upstream MIME types + * Mark `text/yaml` as compressible + +1.47.0 / 2021-04-01 +=================== + + * Add new upstream MIME types + * Remove ambiguous extensions from IANA for `application/*+xml` types + * Update primary extension to `.es` for `application/ecmascript` + +1.46.0 / 2021-02-13 +=================== + + * Add extension `.amr` to `audio/amr` + * Add extension `.m4s` to `video/iso.segment` + * Add extension `.opus` to `audio/ogg` + * Add new upstream MIME types + +1.45.0 / 2020-09-22 +=================== + + * Add `application/ubjson` with extension `.ubj` + * Add `image/avif` with extension `.avif` + * Add `image/ktx2` with extension `.ktx2` + * Add extension `.dbf` to `application/vnd.dbf` + * Add extension `.rar` to `application/vnd.rar` + * Add extension `.td` to `application/urc-targetdesc+xml` + * Add new upstream MIME types + * Fix extension of `application/vnd.apple.keynote` to be `.key` + +1.44.0 / 2020-04-22 +=================== + + * Add charsets from IANA + * Add extension `.cjs` to `application/node` + * Add new upstream MIME types + +1.43.0 / 2020-01-05 +=================== + + * Add `application/x-keepass2` with extension `.kdbx` + * Add extension `.mxmf` to `audio/mobile-xmf` + * Add extensions from IANA for `application/*+xml` types + * Add new upstream MIME types + +1.42.0 / 2019-09-25 +=================== + + * Add `image/vnd.ms-dds` with extension `.dds` + * Add new upstream MIME types + * Remove compressible from `multipart/mixed` + +1.41.0 / 2019-08-30 +=================== + + * Add new upstream MIME types + * Add `application/toml` with extension `.toml` + * Mark `font/ttf` as compressible + +1.40.0 / 2019-04-20 +=================== + + * Add extensions from IANA for `model/*` types + * Add `text/mdx` with extension `.mdx` + +1.39.0 / 2019-04-04 +=================== + + * Add extensions `.siv` and `.sieve` to `application/sieve` + * Add new upstream MIME types + +1.38.0 / 2019-02-04 +=================== + + * Add extension `.nq` to `application/n-quads` + * Add extension `.nt` to `application/n-triples` + * Add new upstream MIME types + * Mark `text/less` as compressible + +1.37.0 / 2018-10-19 +=================== + + * Add extensions to HEIC image types + * Add new upstream MIME types + +1.36.0 / 2018-08-20 +=================== + + * Add Apple file extensions from IANA + * Add extensions from IANA for `image/*` types + * Add new upstream MIME types + +1.35.0 / 2018-07-15 +=================== + + * Add extension `.owl` to `application/rdf+xml` + * Add new upstream MIME types + - Removes extension `.woff` from `application/font-woff` + +1.34.0 / 2018-06-03 +=================== + + * Add extension `.csl` to `application/vnd.citationstyles.style+xml` + * Add extension `.es` to `application/ecmascript` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/turtle` + * Mark all XML-derived types as compressible + +1.33.0 / 2018-02-15 +=================== + + * Add extensions from IANA for `message/*` types + * Add new upstream MIME types + * Fix some incorrect OOXML types + * Remove `application/font-woff2` + +1.32.0 / 2017-11-29 +=================== + + * Add new upstream MIME types + * Update `text/hjson` to registered `application/hjson` + * Add `text/shex` with extension `.shex` + +1.31.0 / 2017-10-25 +=================== + + * Add `application/raml+yaml` with extension `.raml` + * Add `application/wasm` with extension `.wasm` + * Add new `font` type from IANA + * Add new upstream font extensions + * Add new upstream MIME types + * Add extensions for JPEG-2000 images + +1.30.0 / 2017-08-27 +=================== + + * Add `application/vnd.ms-outlook` + * Add `application/x-arj` + * Add extension `.mjs` to `application/javascript` + * Add glTF types and extensions + * Add new upstream MIME types + * Add `text/x-org` + * Add VirtualBox MIME types + * Fix `source` records for `video/*` types that are IANA + * Update `font/opentype` to registered `font/otf` + +1.29.0 / 2017-07-10 +=================== + + * Add `application/fido.trusted-apps+json` + * Add extension `.wadl` to `application/vnd.sun.wadl+xml` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/css` + +1.28.0 / 2017-05-14 +=================== + + * Add new upstream MIME types + * Add extension `.gz` to `application/gzip` + * Update extensions `.md` and `.markdown` to be `text/markdown` + +1.27.0 / 2017-03-16 +=================== + + * Add new upstream MIME types + * Add `image/apng` with extension `.apng` + +1.26.0 / 2017-01-14 +=================== + + * Add new upstream MIME types + * Add extension `.geojson` to `application/geo+json` + +1.25.0 / 2016-11-11 +=================== + + * Add new upstream MIME types + +1.24.0 / 2016-09-18 +=================== + + * Add `audio/mp3` + * Add new upstream MIME types + +1.23.0 / 2016-05-01 +=================== + + * Add new upstream MIME types + * Add extension `.3gpp` to `audio/3gpp` + +1.22.0 / 2016-02-15 +=================== + + * Add `text/slim` + * Add extension `.rng` to `application/xml` + * Add new upstream MIME types + * Fix extension of `application/dash+xml` to be `.mpd` + * Update primary extension to `.m4a` for `audio/mp4` + +1.21.0 / 2016-01-06 +=================== + + * Add Google document types + * Add new upstream MIME types + +1.20.0 / 2015-11-10 +=================== + + * Add `text/x-suse-ymp` + * Add new upstream MIME types + +1.19.0 / 2015-09-17 +=================== + + * Add `application/vnd.apple.pkpass` + * Add new upstream MIME types + +1.18.0 / 2015-09-03 +=================== + + * Add new upstream MIME types + +1.17.0 / 2015-08-13 +=================== + + * Add `application/x-msdos-program` + * Add `audio/g711-0` + * Add `image/vnd.mozilla.apng` + * Add extension `.exe` to `application/x-msdos-program` + +1.16.0 / 2015-07-29 +=================== + + * Add `application/vnd.uri-map` + +1.15.0 / 2015-07-13 +=================== + + * Add `application/x-httpd-php` + +1.14.0 / 2015-06-25 +=================== + + * Add `application/scim+json` + * Add `application/vnd.3gpp.ussd+xml` + * Add `application/vnd.biopax.rdf+xml` + * Add `text/x-processing` + +1.13.0 / 2015-06-07 +=================== + + * Add nginx as a source + * Add `application/x-cocoa` + * Add `application/x-java-archive-diff` + * Add `application/x-makeself` + * Add `application/x-perl` + * Add `application/x-pilot` + * Add `application/x-redhat-package-manager` + * Add `application/x-sea` + * Add `audio/x-m4a` + * Add `audio/x-realaudio` + * Add `image/x-jng` + * Add `text/mathml` + +1.12.0 / 2015-06-05 +=================== + + * Add `application/bdoc` + * Add `application/vnd.hyperdrive+json` + * Add `application/x-bdoc` + * Add extension `.rtf` to `text/rtf` + +1.11.0 / 2015-05-31 +=================== + + * Add `audio/wav` + * Add `audio/wave` + * Add extension `.litcoffee` to `text/coffeescript` + * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` + * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` + +1.10.0 / 2015-05-19 +=================== + + * Add `application/vnd.balsamiq.bmpr` + * Add `application/vnd.microsoft.portable-executable` + * Add `application/x-ns-proxy-autoconfig` + +1.9.1 / 2015-04-19 +================== + + * Remove `.json` extension from `application/manifest+json` + - This is causing bugs downstream + +1.9.0 / 2015-04-19 +================== + + * Add `application/manifest+json` + * Add `application/vnd.micro+json` + * Add `image/vnd.zbrush.pcx` + * Add `image/x-ms-bmp` + +1.8.0 / 2015-03-13 +================== + + * Add `application/vnd.citationstyles.style+xml` + * Add `application/vnd.fastcopy-disk-image` + * Add `application/vnd.gov.sk.xmldatacontainer+xml` + * Add extension `.jsonld` to `application/ld+json` + +1.7.0 / 2015-02-08 +================== + + * Add `application/vnd.gerber` + * Add `application/vnd.msa-disk-image` + +1.6.1 / 2015-02-05 +================== + + * Community extensions ownership transferred from `node-mime` + +1.6.0 / 2015-01-29 +================== + + * Add `application/jose` + * Add `application/jose+json` + * Add `application/json-seq` + * Add `application/jwk+json` + * Add `application/jwk-set+json` + * Add `application/jwt` + * Add `application/rdap+json` + * Add `application/vnd.gov.sk.e-form+xml` + * Add `application/vnd.ims.imsccv1p3` + +1.5.0 / 2014-12-30 +================== + + * Add `application/vnd.oracle.resource+json` + * Fix various invalid MIME type entries + - `application/mbox+xml` + - `application/oscp-response` + - `application/vwg-multiplexed` + - `audio/g721` + +1.4.0 / 2014-12-21 +================== + + * Add `application/vnd.ims.imsccv1p2` + * Fix various invalid MIME type entries + - `application/vnd-acucobol` + - `application/vnd-curl` + - `application/vnd-dart` + - `application/vnd-dxr` + - `application/vnd-fdf` + - `application/vnd-mif` + - `application/vnd-sema` + - `application/vnd-wap-wmlc` + - `application/vnd.adobe.flash-movie` + - `application/vnd.dece-zip` + - `application/vnd.dvb_service` + - `application/vnd.micrografx-igx` + - `application/vnd.sealed-doc` + - `application/vnd.sealed-eml` + - `application/vnd.sealed-mht` + - `application/vnd.sealed-ppt` + - `application/vnd.sealed-tiff` + - `application/vnd.sealed-xls` + - `application/vnd.sealedmedia.softseal-html` + - `application/vnd.sealedmedia.softseal-pdf` + - `application/vnd.wap-slc` + - `application/vnd.wap-wbxml` + - `audio/vnd.sealedmedia.softseal-mpeg` + - `image/vnd-djvu` + - `image/vnd-svf` + - `image/vnd-wap-wbmp` + - `image/vnd.sealed-png` + - `image/vnd.sealedmedia.softseal-gif` + - `image/vnd.sealedmedia.softseal-jpg` + - `model/vnd-dwf` + - `model/vnd.parasolid.transmit-binary` + - `model/vnd.parasolid.transmit-text` + - `text/vnd-a` + - `text/vnd-curl` + - `text/vnd.wap-wml` + * Remove example template MIME types + - `application/example` + - `audio/example` + - `image/example` + - `message/example` + - `model/example` + - `multipart/example` + - `text/example` + - `video/example` + +1.3.1 / 2014-12-16 +================== + + * Fix missing extensions + - `application/json5` + - `text/hjson` + +1.3.0 / 2014-12-07 +================== + + * Add `application/a2l` + * Add `application/aml` + * Add `application/atfx` + * Add `application/atxml` + * Add `application/cdfx+xml` + * Add `application/dii` + * Add `application/json5` + * Add `application/lxf` + * Add `application/mf4` + * Add `application/vnd.apache.thrift.compact` + * Add `application/vnd.apache.thrift.json` + * Add `application/vnd.coffeescript` + * Add `application/vnd.enphase.envoy` + * Add `application/vnd.ims.imsccv1p1` + * Add `text/csv-schema` + * Add `text/hjson` + * Add `text/markdown` + * Add `text/yaml` + +1.2.0 / 2014-11-09 +================== + + * Add `application/cea` + * Add `application/dit` + * Add `application/vnd.gov.sk.e-form+zip` + * Add `application/vnd.tmd.mediaflex.api+xml` + * Type `application/epub+zip` is now IANA-registered + +1.1.2 / 2014-10-23 +================== + + * Rebuild database for `application/x-www-form-urlencoded` change + +1.1.1 / 2014-10-20 +================== + + * Mark `application/x-www-form-urlencoded` as compressible. + +1.1.0 / 2014-09-28 +================== + + * Add `application/font-woff2` + +1.0.3 / 2014-09-25 +================== + + * Fix engine requirement in package + +1.0.2 / 2014-09-25 +================== + + * Add `application/coap-group+json` + * Add `application/dcd` + * Add `application/vnd.apache.thrift.binary` + * Add `image/vnd.tencent.tap` + * Mark all JSON-derived types as compressible + * Update `text/vtt` data + +1.0.1 / 2014-08-30 +================== + + * Fix extension ordering + +1.0.0 / 2014-08-30 +================== + + * Add `application/atf` + * Add `application/merge-patch+json` + * Add `multipart/x-mixed-replace` + * Add `source: 'apache'` metadata + * Add `source: 'iana'` metadata + * Remove badly-assumed charset data diff --git a/bff/node_modules/mime-db/LICENSE b/bff/node_modules/mime-db/LICENSE new file mode 100644 index 0000000..0751cb1 --- /dev/null +++ b/bff/node_modules/mime-db/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/mime-db/README.md b/bff/node_modules/mime-db/README.md new file mode 100644 index 0000000..ee93fa0 --- /dev/null +++ b/bff/node_modules/mime-db/README.md @@ -0,0 +1,109 @@ +# mime-db + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +This is a large database of mime types and information about them. +It consists of a single, public JSON file and does not include any logic, +allowing it to remain as un-opinionated as possible with an API. +It aggregates data from the following sources: + +- https://www.iana.org/assignments/media-types/media-types.xhtml +- https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +- https://hg.nginx.org/nginx/raw-file/default/conf/mime.types + +## Installation + +```bash +npm install mime-db +``` + +### Database Download + +If you intend to use this in a web browser, you can conveniently access the JSON file via [jsDelivr](https://www.jsdelivr.com/), a popular CDN (Content Delivery Network). To ensure stability and compatibility, it is advisable to specify [a release tag](https://github.com/jshttp/mime-db/tags) instead of using the 'master' branch. This is because the JSON file's format might change in future updates, and relying on a specific release tag will prevent potential issues arising from these changes. + +``` +https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json +``` + +## Usage + +```js +var db = require('mime-db') + +// grab data on .js files +var data = db['application/javascript'] +``` + +## Data Structure + +The JSON file is a map lookup for lowercased mime types. +Each mime type has the following properties: + +- `.source` - where the mime type is defined. + If not set, it's probably a custom media type. + - `apache` - [Apache common media types](https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) + - `iana` - [IANA-defined media types](https://www.iana.org/assignments/media-types/media-types.xhtml) + - `nginx` - [nginx media types](https://hg.nginx.org/nginx/raw-file/default/conf/mime.types) +- `.extensions[]` - known extensions associated with this mime type. +- `.compressible` - whether a file of this type can be gzipped. +- `.charset` - the default charset associated with this type, if any. + +If unknown, every property could be `undefined`. + +## Note on MIME Type Data and Semver + +This package considers the programmatic api as the semver compatibility. This means the MIME type resolution is *not* considered +in the semver bumps. This means that if you want to pin your `mime-db` data you will need to do it in your application. While +this expectation was not set in docs until now, it is how the pacakge operated, so we do not feel this is a breaking change. + +## Contributing + +The primary way to contribute to this database is by updating the data in +one of the upstream sources. The database is updated from the upstreams +periodically and will pull in any changes. + +### Registering Media Types + +The best way to get new media types included in this library is to register +them with the IANA. The community registration procedure is outlined in +[RFC 6838 section 5](https://tools.ietf.org/html/rfc6838#section-5). Types +registered with the IANA are automatically pulled into this library. + +### Direct Inclusion + +If that is not possible / feasible, they can be added directly here as a +"custom" type. To do this, it is required to have a primary source that +definitively lists the media type. If an extension is going to be listed as +associated with this media type, the source must definitively link the +media type and extension as well. + +To edit the database, only make PRs against `src/custom-types.json` or +`src/custom-suffix.json`. + +The `src/custom-types.json` file is a JSON object with the MIME type as the +keys and the values being an object with the following keys: + +- `compressible` - leave out if you don't know, otherwise `true`/`false` to + indicate whether the data represented by the type is typically compressible. +- `extensions` - include an array of file extensions that are associated with + the type. +- `notes` - human-readable notes about the type, typically what the type is. +- `sources` - include an array of URLs of where the MIME type and the associated + extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source); + links to type aggregating sites and Wikipedia are _not acceptable_. + +To update the build, run `npm run build`. + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci +[ci-url]: https://github.com/jshttp/mime-db/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master +[node-image]: https://badgen.net/npm/node/mime-db +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-db +[npm-url]: https://npmjs.org/package/mime-db +[npm-version-image]: https://badgen.net/npm/v/mime-db diff --git a/bff/node_modules/mime-db/db.json b/bff/node_modules/mime-db/db.json new file mode 100644 index 0000000..7e74733 --- /dev/null +++ b/bff/node_modules/mime-db/db.json @@ -0,0 +1,9342 @@ +{ + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/3gpphal+json": { + "source": "iana", + "compressible": true + }, + "application/3gpphalforms+json": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/ace+cbor": { + "source": "iana" + }, + "application/ace+json": { + "source": "iana", + "compressible": true + }, + "application/ace-groupcomm+cbor": { + "source": "iana" + }, + "application/ace-trl+cbor": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/aif+cbor": { + "source": "iana" + }, + "application/aif+json": { + "source": "iana", + "compressible": true + }, + "application/alto-cdni+json": { + "source": "iana", + "compressible": true + }, + "application/alto-cdnifilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-propmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-propmapparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-tips+json": { + "source": "iana", + "compressible": true + }, + "application/alto-tipsparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": ["ez"] + }, + "application/appinstaller": { + "compressible": false, + "extensions": ["appinstaller"] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": ["aw"] + }, + "application/appx": { + "compressible": false, + "extensions": ["appx"] + }, + "application/appxbundle": { + "compressible": false, + "extensions": ["appxbundle"] + }, + "application/at+jwt": { + "source": "iana" + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atom"] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomcat"] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomdeleted"] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomsvc"] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dwd"] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": ["held"] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsat"] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/automationml-aml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["aml"] + }, + "application/automationml-amlx+zip": { + "source": "iana", + "compressible": false, + "extensions": ["amlx"] + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/bufr": { + "source": "iana" + }, + "application/c2pa": { + "source": "iana" + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xcs"] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ccxml"] + }, + "application/cda+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdfx"] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": ["cdmia"] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": ["cdmic"] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": ["cdmid"] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": ["cdmio"] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": ["cdmiq"] + }, + "application/cdni": { + "source": "iana" + }, + "application/ce+cbor": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/cid-edhoc+cbor-seq": { + "source": "iana" + }, + "application/city+json": { + "source": "iana", + "compressible": true + }, + "application/city+json-seq": { + "source": "iana" + }, + "application/clr": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-eap": { + "source": "iana" + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/concise-problem-details+cbor": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cose-x509": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cpl"] + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": ["cu"] + }, + "application/cwl": { + "source": "iana", + "extensions": ["cwl"] + }, + "application/cwl+json": { + "source": "iana", + "compressible": true + }, + "application/cwl+yaml": { + "source": "iana" + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpd"] + }, + "application/dash-patch+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpp"] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": ["davmount"] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana", + "extensions": ["dcm"] + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dbk"] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dpop+jwt": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": ["dssc"] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdssc"] + }, + "application/dvcs": { + "source": "iana" + }, + "application/eat+cwt": { + "source": "iana" + }, + "application/eat+jwt": { + "source": "iana" + }, + "application/eat-bun+cbor": { + "source": "iana" + }, + "application/eat-bun+json": { + "source": "iana", + "compressible": true + }, + "application/eat-ucs+cbor": { + "source": "iana" + }, + "application/eat-ucs+json": { + "source": "iana", + "compressible": true + }, + "application/ecmascript": { + "source": "apache", + "compressible": true, + "extensions": ["ecma"] + }, + "application/edhoc+cbor-seq": { + "source": "iana" + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/elm+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/elm+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.legacyesn+json": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emma"] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emotionml"] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/entity-statement+jwt": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": ["epub"] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": ["exi"] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/express": { + "source": "iana", + "extensions": ["exp"] + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdf": { + "source": "iana", + "extensions": ["fdf"] + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fdt"] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": ["pfr"] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": ["geojson"] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geopose+json": { + "source": "iana", + "compressible": true + }, + "application/geoxacml+json": { + "source": "iana", + "compressible": true + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["gml"] + }, + "application/gnap-binding-jws": { + "source": "iana" + }, + "application/gnap-binding-jwsd": { + "source": "iana" + }, + "application/gnap-binding-rotation-jws": { + "source": "iana" + }, + "application/gnap-binding-rotation-jwsd": { + "source": "iana" + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["gpx"] + }, + "application/grib": { + "source": "iana" + }, + "application/gxf": { + "source": "apache", + "extensions": ["gxf"] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": ["gz"] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": ["hjson"] + }, + "application/hl7v2+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": ["stk"] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ink","inkml"] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": ["ipfix"] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": ["its"] + }, + "application/java-archive": { + "source": "iana", + "compressible": false, + "extensions": ["jar","war","ear"] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": ["ser"] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": ["class"] + }, + "application/javascript": { + "source": "apache", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js"] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/jscalendar+json": { + "source": "iana", + "compressible": true + }, + "application/jscontact+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["json","map"] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": ["json5"] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": ["jsonml"] + }, + "application/jsonpath": { + "source": "iana" + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+jwt": { + "source": "iana" + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": ["jsonld"] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lgr"] + }, + "application/link-format": { + "source": "iana" + }, + "application/linkset": { + "source": "iana" + }, + "application/linkset+json": { + "source": "iana", + "compressible": true + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/logout+jwt": { + "source": "iana" + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lostxml"] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": ["hqx"] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": ["cpt"] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mads"] + }, + "application/manifest+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["webmanifest"] + }, + "application/marc": { + "source": "iana", + "extensions": ["mrc"] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mrcx"] + }, + "application/mathematica": { + "source": "iana", + "extensions": ["ma","nb","mb"] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mathml"] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": ["mbox"] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpf"] + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mscml"] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": ["metalink"] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": ["meta4"] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mets"] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/missing-blocks+cbor-seq": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["maei"] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musd"] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mods"] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": ["m21","mp21"] + }, + "application/mp4": { + "source": "iana", + "extensions": ["mp4","mpg4","mp4s","m4p"] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msix": { + "compressible": false, + "extensions": ["msix"] + }, + "application/msixbundle": { + "compressible": false, + "extensions": ["msixbundle"] + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": ["doc","dot"] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": ["mxf"] + }, + "application/n-quads": { + "source": "iana", + "extensions": ["nq"] + }, + "application/n-triples": { + "source": "iana", + "extensions": ["nt"] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": ["cjs"] + }, + "application/nss": { + "source": "iana" + }, + "application/oauth-authz-req+jwt": { + "source": "iana" + }, + "application/oblivious-dns-message": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": true, + "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] + }, + "application/oda": { + "source": "iana", + "extensions": ["oda"] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["opf"] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogx"] + }, + "application/ohttp-keys": { + "source": "iana" + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["omdoc"] + }, + "application/onenote": { + "source": "apache", + "extensions": ["onetoc","onetoc2","onetmp","onepkg","one","onea"] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": ["oxps"] + }, + "application/p21": { + "source": "iana" + }, + "application/p21+zip": { + "source": "iana", + "compressible": false + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": ["relo"] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": ["pdf"] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": ["pgp"] + }, + "application/pgp-keys": { + "source": "iana", + "extensions": ["asc"] + }, + "application/pgp-signature": { + "source": "iana", + "extensions": ["sig","asc"] + }, + "application/pics-rules": { + "source": "apache", + "extensions": ["prf"] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": ["p10"] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": ["p7m","p7c"] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": ["p7s"] + }, + "application/pkcs8": { + "source": "iana", + "extensions": ["p8"] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": ["ac"] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": ["cer"] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": ["crl"] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": ["pkipath"] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": ["pki"] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pls"] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": ["ai","eps","ps"] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/private-token-issuer-directory": { + "source": "iana" + }, + "application/private-token-request": { + "source": "iana" + }, + "application/private-token-response": { + "source": "iana" + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": ["provx"] + }, + "application/provided-claims+jwt": { + "source": "iana" + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": ["cww"] + }, + "application/prs.cyn": { + "source": "iana", + "charset": "7-BIT" + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.implied-document+xml": { + "source": "iana", + "compressible": true + }, + "application/prs.implied-executable": { + "source": "iana" + }, + "application/prs.implied-object+json": { + "source": "iana", + "compressible": true + }, + "application/prs.implied-object+json-seq": { + "source": "iana" + }, + "application/prs.implied-object+yaml": { + "source": "iana" + }, + "application/prs.implied-structure": { + "source": "iana" + }, + "application/prs.mayfile": { + "source": "iana" + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.vcfbzip2": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xsf"] + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pskcxml"] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": ["raml"] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rdf","owl"] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rif"] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": ["rnc"] + }, + "application/remote-printing": { + "source": "apache" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resolve-response+jwt": { + "source": "iana" + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rl"] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rld"] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rs"] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rapd"] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sls"] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rusd"] + }, + "application/rpki-checklist": { + "source": "iana" + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": ["gbr"] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": ["mft"] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": ["roa"] + }, + "application/rpki-signed-tal": { + "source": "iana" + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rsd"] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rss"] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sarif-external-properties+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sbml"] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": ["scq"] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": ["scs"] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": ["spq"] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": ["spp"] + }, + "application/sdp": { + "source": "iana", + "extensions": ["sdp"] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["senmlx"] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sensmlx"] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": ["setpay"] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": ["setreg"] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["shf"] + }, + "application/sieve": { + "source": "iana", + "extensions": ["siv","sieve"] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "apache" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": ["smi","smil"] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": ["rq"] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": ["srx"] + }, + "application/spdx+json": { + "source": "iana", + "compressible": true + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana", + "extensions": ["sql"] + }, + "application/srgs": { + "source": "iana", + "extensions": ["gram"] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["grxml"] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sru"] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ssdl"] + }, + "application/sslkeylogfile": { + "source": "iana" + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ssml"] + }, + "application/st2110-41": { + "source": "iana" + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/stratum": { + "source": "iana" + }, + "application/swid+cbor": { + "source": "iana" + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["swidtag"] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tei","teicorpus"] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tfi"] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": ["tsd"] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tm+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/toc+cbor": { + "source": "iana" + }, + "application/token-introspection+jwt": { + "source": "iana" + }, + "application/toml": { + "source": "iana", + "compressible": true, + "extensions": ["toml"] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana", + "extensions": ["trig"] + }, + "application/trust-chain+json": { + "source": "iana", + "compressible": true + }, + "application/trust-mark+jwt": { + "source": "iana" + }, + "application/trust-mark-delegation+jwt": { + "source": "iana" + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ttml"] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": ["ubj"] + }, + "application/uccs+cbor": { + "source": "iana" + }, + "application/ujcs+json": { + "source": "iana", + "compressible": true + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsheet"] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["td"] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vc": { + "source": "iana" + }, + "application/vc+cose": { + "source": "iana" + }, + "application/vc+jwt": { + "source": "iana" + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": ["1km"] + }, + "application/vnd.1ob": { + "source": "iana" + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3a+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ach+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc8+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gnas": { + "source": "iana" + }, + "application/vnd.3gpp.5gsa2x": { + "source": "iana" + }, + "application/vnd.3gpp.5gsa2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gsv2x": { + "source": "iana" + }, + "application/vnd.3gpp.5gsv2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.crs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.current-location-discovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gtpc": { + "source": "iana" + }, + "application/vnd.3gpp.interworking-data": { + "source": "iana" + }, + "application/vnd.3gpp.lpp": { + "source": "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-regroup+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-regroup+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-regroup+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ngap": { + "source": "iana" + }, + "application/vnd.3gpp.pfcp": { + "source": "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": ["pvb"] + }, + "application/vnd.3gpp.pinapp-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.s1ap": { + "source": "iana" + }, + "application/vnd.3gpp.seal-group-doc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-network-qos-management-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-ue-config-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-unicast-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.seal-user-profile-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.v2x": { + "source": "iana" + }, + "application/vnd.3gpp.vae-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": ["aso"] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": ["imp"] + }, + "application/vnd.acm.addressxfer+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.acm.chatbot+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": ["acu"] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": ["atc","acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": ["air"] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": ["fcdt"] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": ["fxp","fxpl"] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdp"] + }, + "application/vnd.adobe.xfdf": { + "source": "apache", + "extensions": ["xfdf"] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-cmtable": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.age": { + "source": "iana", + "extensions": ["age"] + }, + "application/vnd.ah-barcode": { + "source": "apache" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": ["azs"] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": ["acc"] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": ["apk"] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": ["fti"] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": ["atx"] + }, + "application/vnd.apache.arrow.file": { + "source": "iana" + }, + "application/vnd.apache.arrow.stream": { + "source": "iana" + }, + "application/vnd.apache.parquet": { + "source": "iana" + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.apexlang": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpkg"] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": ["key"] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": ["m3u8"] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": ["numbers"] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": ["pages"] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": ["pkpass"] + }, + "application/vnd.arastra.swi": { + "source": "apache" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": ["swi"] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": ["iota"] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": ["aep"] + }, + "application/vnd.autodesk.fbx": { + "extensions": ["fbx"] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.belightsoft.lhzd+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.belightsoft.lhzl+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": ["bmi"] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": ["rep"] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bzip3": { + "source": "iana" + }, + "application/vnd.c3voc.schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdxml"] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": ["mmd"] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": ["csl"] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": ["cla"] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": ["rp9"] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": ["c4g","c4d","c4f","c4p","c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": ["c11amz"] + }, + "application/vnd.cncf.helm.chart.content.v1.tar+gzip": { + "source": "iana" + }, + "application/vnd.cncf.helm.chart.provenance.v1.prov": { + "source": "iana" + }, + "application/vnd.cncf.helm.config.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": ["csp"] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": ["cmc"] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": ["clkp"] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.cryptomator.encrypted": { + "source": "iana" + }, + "application/vnd.cryptomator.vault": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": ["pml"] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": ["ppd"] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": ["car"] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.cyclonedx+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cyclonedx+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": ["dart"] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": ["rdz"] + }, + "application/vnd.datalog": { + "source": "iana" + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": ["dbf"] + }, + "application/vnd.dcmp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dcmp"] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": ["uvf","uvvf","uvd","uvvd"] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uvt","uvvt"] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": ["uvx","uvvx"] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": ["uvz","uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": ["fe_launch"] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": ["dna"] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": ["dpg"] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": ["dfac"] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": ["kpxx"] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": ["svc"] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": ["geo"] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.eclipse.ditto+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": ["mag"] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.eln+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": ["nml"] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": ["esf"] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": ["msf"] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": ["qam"] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": ["slt"] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.erofs": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": ["es3","et3"] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eu.kasparian.car+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": ["ez2"] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": ["ez3"] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "apache", + "extensions": ["fdf"] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": ["mseed"] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": ["seed","dataless"] + }, + "application/vnd.fdsn.stationxml+xml": { + "source": "iana", + "charset": "XML-BASED", + "compressible": true + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": ["gph"] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": ["fm","frame","maker","book"] + }, + "application/vnd.freelog.comic": { + "source": "iana" + }, + "application/vnd.frogans.fnc": { + "source": "apache", + "extensions": ["fnc"] + }, + "application/vnd.frogans.ltf": { + "source": "apache", + "extensions": ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": ["fzs"] + }, + "application/vnd.ga4gh.passport+jwt": { + "source": "iana" + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": ["txd"] + }, + "application/vnd.genozip": { + "source": "iana" + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.gentoo.catmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gentoo.ebuild": { + "source": "iana" + }, + "application/vnd.gentoo.eclass": { + "source": "iana" + }, + "application/vnd.gentoo.gpkg": { + "source": "iana" + }, + "application/vnd.gentoo.manifest": { + "source": "iana" + }, + "application/vnd.gentoo.pkgmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gentoo.xpak": { + "source": "iana" + }, + "application/vnd.geo+json": { + "source": "apache", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": ["ggb"] + }, + "application/vnd.geogebra.pinboard": { + "source": "iana" + }, + "application/vnd.geogebra.slides": { + "source": "iana", + "extensions": ["ggs"] + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": ["ggt"] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": ["gex","gre"] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": ["gxt"] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": ["g2w"] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": ["g3w"] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": ["gmx"] + }, + "application/vnd.gnu.taler.exchange+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.gnu.taler.merchant+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.google-apps.audio": {}, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": ["gdoc"] + }, + "application/vnd.google-apps.drawing": { + "compressible": false, + "extensions": ["gdraw"] + }, + "application/vnd.google-apps.drive-sdk": { + "compressible": false + }, + "application/vnd.google-apps.file": {}, + "application/vnd.google-apps.folder": { + "compressible": false + }, + "application/vnd.google-apps.form": { + "compressible": false, + "extensions": ["gform"] + }, + "application/vnd.google-apps.fusiontable": {}, + "application/vnd.google-apps.jam": { + "compressible": false, + "extensions": ["gjam"] + }, + "application/vnd.google-apps.mail-layout": {}, + "application/vnd.google-apps.map": { + "compressible": false, + "extensions": ["gmap"] + }, + "application/vnd.google-apps.photo": {}, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": ["gslides"] + }, + "application/vnd.google-apps.script": { + "compressible": false, + "extensions": ["gscript"] + }, + "application/vnd.google-apps.shortcut": {}, + "application/vnd.google-apps.site": { + "compressible": false, + "extensions": ["gsite"] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": ["gsheet"] + }, + "application/vnd.google-apps.unknown": {}, + "application/vnd.google-apps.video": {}, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["kml"] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdcf"] + }, + "application/vnd.gpxsee.map+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": ["gqf","gqs"] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": ["gac"] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": ["ghf"] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": ["gim"] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": ["grv"] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": ["gtm"] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": ["tpl"] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": ["vcg"] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zmm"] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": ["hbci"] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": ["les"] + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": ["hpgl"] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": ["hpid"] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": ["hps"] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": ["jlt"] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": ["pcl"] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": ["pclxl"] + }, + "application/vnd.hsl": { + "source": "iana" + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "apache" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": ["mpy"] + }, + "application/vnd.ibm.modcap": { + "source": "apache", + "extensions": ["afp","listafp","list3820"] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": ["irm"] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": ["sc"] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": ["icc","icm"] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": ["ivp"] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "apache" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": ["igm"] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": ["xpw","xpx"] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": ["i2g"] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": ["qbo"] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": ["qfx"] + }, + "application/vnd.ipfs.ipns-record": { + "source": "iana" + }, + "application/vnd.ipld.car": { + "source": "iana" + }, + "application/vnd.ipld.dag-cbor": { + "source": "iana" + }, + "application/vnd.ipld.dag-json": { + "source": "iana" + }, + "application/vnd.ipld.raw": { + "source": "iana" + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["irp"] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": ["xpr"] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": ["jam"] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": ["rms"] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": ["jisp"] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": ["ktz","ktr"] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": ["karbon"] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": ["chrt"] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": ["kfo"] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": ["flw"] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": ["kon"] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": ["kpr","kpt"] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": ["ksp"] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": ["kwd","kwt"] + }, + "application/vnd.kdl": { + "source": "iana" + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": ["htke"] + }, + "application/vnd.keyman.kmp+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.keyman.kmx": { + "source": "iana" + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": ["kia"] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": ["kne","knp"] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": ["skp","skd","skt","skm"] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": ["sse"] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lasxml"] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.ldev.productlicensing": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": ["123"] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": ["apr"] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": ["pre"] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": ["nsf"] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": ["org"] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": ["scm"] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": ["lwp"] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana", + "extensions": ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxar.archive.3tz+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": ["mcd"] + }, + "application/vnd.mdl": { + "source": "iana" + }, + "application/vnd.mdl-mbsdf": { + "source": "iana" + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": ["cdkey"] + }, + "application/vnd.medicalholodeck.recordxr": { + "source": "iana" + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mermaid": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": ["mwf"] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": ["mfm"] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": ["flo"] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": ["daf"] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": ["dis"] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": ["mbk"] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": ["mqy"] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": ["msl"] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": ["plc"] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": ["txf"] + }, + "application/vnd.modl": { + "source": "iana" + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": ["mpn"] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xul"] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": ["cil"] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": ["xltm"] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": ["eot"] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": ["chm"] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": ["ims"] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": ["thmx"] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": ["cat"] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": ["ppt","pps","pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": ["mpp","mpt"] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-visio.viewer": { + "extensions": ["vdx"] + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": ["dotm"] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": ["wps","wks","wcm","wdb"] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": ["xps"] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": ["mseq"] + }, + "application/vnd.msgpack": { + "source": "iana" + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": ["mus"] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": ["msty"] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nato.bindingdataobject+cbor": { + "source": "iana" + }, + "application/vnd.nato.bindingdataobject+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nato.bindingdataobject+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bdo"] + }, + "application/vnd.nato.openxmlformats-package.iepd+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nebumind.line": { + "source": "iana" + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": ["nlu"] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": ["ntf","nitf"] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": ["nnd"] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": ["nns"] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": ["nnw"] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "apache", + "extensions": ["n-gage"] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": ["rpss"] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": ["edm"] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": ["edx"] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": ["ext"] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oai.workflows": { + "source": "iana" + }, + "application/vnd.oai.workflows+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oai.workflows+yaml": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.base": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + "source": "apache", + "extensions": ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": ["odm"] + }, + "application/vnd.oasis.opendocument.text-master-template": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": ["oth"] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": ["xo"] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.onvif.metadata": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": ["obgx"] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osm"] + }, + "application/vnd.opentimestamps.ots": { + "source": "iana" + }, + "application/vnd.openvpi.dspx+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": ["mgp"] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": ["dp"] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": ["pdb","pqa","oprc"] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": ["paw"] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": ["str"] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": ["efif"] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": ["plf"] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": ["box"] + }, + "application/vnd.procrate.brushset": { + "extensions": ["brushset"] + }, + "application/vnd.procreate.brush": { + "extensions": ["brush"] + }, + "application/vnd.procreate.dream": { + "extensions": ["drm"] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": ["mgz"] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.pt.mundusmundi": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": ["qps"] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtm"] + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": ["rar"] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": ["bed"] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musicxml"] + }, + "application/vnd.relpipe": { + "source": "iana" + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.resilient.logic": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": ["cryptonote"] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": ["cod"] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": ["link66"] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": ["st"] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": ["see"] + }, + "application/vnd.seis+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sema": { + "source": "iana", + "extensions": ["sema"] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": ["semd"] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": ["semf"] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": ["itp"] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": ["iif"] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": ["ipk"] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": ["twd","twds"] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sketchometry": { + "source": "iana" + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": ["mmf"] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": ["teacher"] + }, + "application/vnd.smintio.portals.archive": { + "source": "iana" + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sdkm","sdkd"] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": ["dxp"] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": ["sfs"] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": ["sdc"] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": ["sda"] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": ["sdd"] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": ["smf"] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": ["sdw","vor"] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": ["sgl"] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": ["sm"] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wadl"] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": ["stc"] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": ["std"] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": ["sti"] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": ["sxm"] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": ["stw"] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": ["sus","susp"] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": ["svd"] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sybyl.mol2": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.syft+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": ["sis","sisx"] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": ["tao"] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": ["pcap","cap","dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": ["tmo"] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": ["tpt"] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": ["mxs"] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": ["tra"] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": ["ufd","ufdl"] + }, + "application/vnd.uic.osdm+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": ["utz"] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": ["umj"] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": ["unityweb"] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uoml","uo"] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": ["vcx"] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.veraison.tsm-report+cbor": { + "source": "iana" + }, + "application/vnd.veraison.tsm-report+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veritone.aion+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": ["vsd","vst","vss","vsw","vsdx","vtx"] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": ["vis"] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vocalshaper.vsp4": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": ["vsf"] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["wbxml"] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": ["wmlsc"] + }, + "application/vnd.wasmflow.wafl": { + "source": "iana" + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": ["wtb"] + }, + "application/vnd.wfa.dpp": { + "source": "iana" + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": ["nbp"] + }, + "application/vnd.wordlift": { + "source": "iana" + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": ["wpd"] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": ["xar"] + }, + "application/vnd.xarin.cpj": { + "source": "iana" + }, + "application/vnd.xecrets-encrypted": { + "source": "iana" + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": ["xfdl"] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": ["cmp"] + }, + "application/vnd.zul": { + "source": "iana", + "extensions": ["zir","zirz"] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zaz"] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["vxml"] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/voucher-jws+json": { + "source": "iana", + "compressible": true + }, + "application/vp": { + "source": "iana" + }, + "application/vp+cose": { + "source": "iana" + }, + "application/vp+jwt": { + "source": "iana" + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "source": "iana", + "compressible": true, + "extensions": ["wasm"] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wif"] + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": ["wgt"] + }, + "application/winhlp": { + "source": "apache", + "extensions": ["hlp"] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wsdl"] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wspolicy"] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["7z"] + }, + "application/x-abiword": { + "source": "apache", + "extensions": ["abw"] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": ["ace"] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": ["dmg"] + }, + "application/x-arj": { + "compressible": false, + "extensions": ["arj"] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": ["aab","x32","u32","vox"] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": ["aam"] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": ["aas"] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": ["bcpio"] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": ["torrent"] + }, + "application/x-blender": { + "extensions": ["blend"] + }, + "application/x-blorb": { + "source": "apache", + "extensions": ["blb","blorb"] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": ["bz"] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": ["bz2","boz"] + }, + "application/x-cbr": { + "source": "apache", + "extensions": ["cbr","cba","cbt","cbz","cb7"] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": ["vcd"] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": ["cfs"] + }, + "application/x-chat": { + "source": "apache", + "extensions": ["chat"] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": ["pgn"] + }, + "application/x-chrome-extension": { + "extensions": ["crx"] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": ["cco"] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-compressed": { + "extensions": ["rar"] + }, + "application/x-conference": { + "source": "apache", + "extensions": ["nsc"] + }, + "application/x-cpio": { + "source": "apache", + "extensions": ["cpio"] + }, + "application/x-csh": { + "source": "apache", + "extensions": ["csh"] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": ["deb","udeb"] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": ["dgc"] + }, + "application/x-director": { + "source": "apache", + "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] + }, + "application/x-doom": { + "source": "apache", + "extensions": ["wad"] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ncx"] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dtb"] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": ["res"] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": ["dvi"] + }, + "application/x-envoy": { + "source": "apache", + "extensions": ["evy"] + }, + "application/x-eva": { + "source": "apache", + "extensions": ["eva"] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": ["bdf"] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": ["gsf"] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": ["psf"] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": ["pcf"] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": ["snf"] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": ["pfa","pfb","pfm","afm"] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": ["arc"] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": ["spl"] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": ["gca"] + }, + "application/x-glulx": { + "source": "apache", + "extensions": ["ulx"] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": ["gnumeric"] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": ["gramps"] + }, + "application/x-gtar": { + "source": "apache", + "extensions": ["gtar"] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": ["hdf"] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": ["php"] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": ["install"] + }, + "application/x-ipynb+json": { + "compressible": true, + "extensions": ["ipynb"] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + "extensions": ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + "extensions": ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + "extensions": ["pages"] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": ["jardiff"] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": ["jnlp"] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": ["kdbx"] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": ["latex"] + }, + "application/x-lua-bytecode": { + "extensions": ["luac"] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": ["lzh","lha"] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": ["run"] + }, + "application/x-mie": { + "source": "apache", + "extensions": ["mie"] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": ["prc","mobi"] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": ["application"] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": ["lnk"] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": ["wmd"] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": ["wmz"] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": ["xbap"] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": ["mdb"] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": ["obd"] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": ["crd"] + }, + "application/x-msclip": { + "source": "apache", + "extensions": ["clp"] + }, + "application/x-msdos-program": { + "extensions": ["exe"] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": ["exe","dll","com","bat","msi"] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": ["mvb","m13","m14"] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": ["wmf","wmz","emf","emz"] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": ["mny"] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": ["pub"] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": ["scd"] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": ["trm"] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": ["wri"] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": ["nc","cdf"] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": ["pac"] + }, + "application/x-nzb": { + "source": "apache", + "extensions": ["nzb"] + }, + "application/x-perl": { + "source": "nginx", + "extensions": ["pl","pm"] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": ["prc","pdb"] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": ["p12","pfx"] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": ["p7b","spc"] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": ["p7r"] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["rar"] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": ["rpm"] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": ["ris"] + }, + "application/x-sea": { + "source": "nginx", + "extensions": ["sea"] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": ["sh"] + }, + "application/x-shar": { + "source": "apache", + "extensions": ["shar"] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": ["swf"] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": ["xap"] + }, + "application/x-sql": { + "source": "apache", + "extensions": ["sql"] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": ["sit"] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": ["sitx"] + }, + "application/x-subrip": { + "source": "apache", + "extensions": ["srt"] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": ["sv4cpio"] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": ["sv4crc"] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": ["t3"] + }, + "application/x-tads": { + "source": "apache", + "extensions": ["gam"] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": ["tar"] + }, + "application/x-tcl": { + "source": "apache", + "extensions": ["tcl","tk"] + }, + "application/x-tex": { + "source": "apache", + "extensions": ["tex"] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": ["tfm"] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": ["texinfo","texi"] + }, + "application/x-tgif": { + "source": "apache", + "extensions": ["obj"] + }, + "application/x-ustar": { + "source": "apache", + "extensions": ["ustar"] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": ["hdd"] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": ["ova"] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": ["ovf"] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": ["vdi"] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": ["vhd"] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": ["vmdk"] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": ["src"] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": ["webapp"] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": ["der","crt","pem"] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": ["fig"] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xlf"] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": ["xpi"] + }, + "application/x-xz": { + "source": "apache", + "extensions": ["xz"] + }, + "application/x-zip-compressed": { + "extensions": ["zip"] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xaml"] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xav"] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xca"] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xel"] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xns"] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xenc"] + }, + "application/xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtml","xht"] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xlf"] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml","xsl","xsd","rng"] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": ["dtd"] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xop"] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xpl"] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xsl","xslt"] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xspf"] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mxml","xhvml","xvml","xvm"] + }, + "application/yaml": { + "source": "iana" + }, + "application/yang": { + "source": "iana", + "extensions": ["yang"] + }, + "application/yang-data+cbor": { + "source": "iana" + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-sid+json": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": ["yin"] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": ["zip"] + }, + "application/zip+dotlottie": { + "extensions": ["lottie"] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": ["3gpp"] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana", + "extensions": ["adts","aac"] + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": ["adp"] + }, + "audio/amr": { + "source": "iana", + "extensions": ["amr"] + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": ["au","snd"] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flac": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/matroska": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": ["mid","midi","kar","rmi"] + }, + "audio/midi-clip": { + "source": "iana" + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": ["mxmf"] + }, + "audio/mp3": { + "compressible": false, + "extensions": ["mp3"] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["m4a","mp4a","m4b"] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["oga","ogg","spx","opus"] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": ["s3m"] + }, + "audio/scip": { + "source": "iana" + }, + "audio/silk": { + "source": "apache", + "extensions": ["sil"] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": ["uva","uvva"] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": ["eol"] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": ["dra"] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": ["dts"] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": ["dtshd"] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "apache" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": ["rip"] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/wave": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": ["weba"] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": ["aac"] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": ["aif","aiff","aifc"] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": ["caf"] + }, + "audio/x-flac": { + "source": "apache", + "extensions": ["flac"] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": ["m4a"] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": ["mka"] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": ["m3u"] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": ["wax"] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": ["wma"] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": ["ram","ra"] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": ["rmp"] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": ["ra"] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": ["wav"] + }, + "audio/xm": { + "source": "apache", + "extensions": ["xm"] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": ["cdx"] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": ["cif"] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": ["cmdf"] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": ["cml"] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": ["csml"] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": ["xyz"] + }, + "font/collection": { + "source": "iana", + "extensions": ["ttc"] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": ["otf"] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": ["ttf"] + }, + "font/woff": { + "source": "iana", + "extensions": ["woff"] + }, + "font/woff2": { + "source": "iana", + "extensions": ["woff2"] + }, + "image/aces": { + "source": "iana", + "extensions": ["exr"] + }, + "image/apng": { + "source": "iana", + "compressible": false, + "extensions": ["apng"] + }, + "image/avci": { + "source": "iana", + "extensions": ["avci"] + }, + "image/avcs": { + "source": "iana", + "extensions": ["avcs"] + }, + "image/avif": { + "source": "iana", + "compressible": false, + "extensions": ["avif"] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": ["bmp","dib"] + }, + "image/cgm": { + "source": "iana", + "extensions": ["cgm"] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": ["drle"] + }, + "image/dpx": { + "source": "iana", + "extensions": ["dpx"] + }, + "image/emf": { + "source": "iana", + "extensions": ["emf"] + }, + "image/fits": { + "source": "iana", + "extensions": ["fits"] + }, + "image/g3fax": { + "source": "iana", + "extensions": ["g3"] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": ["gif"] + }, + "image/heic": { + "source": "iana", + "extensions": ["heic"] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": ["heics"] + }, + "image/heif": { + "source": "iana", + "extensions": ["heif"] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": ["heifs"] + }, + "image/hej2k": { + "source": "iana", + "extensions": ["hej2"] + }, + "image/ief": { + "source": "iana", + "extensions": ["ief"] + }, + "image/j2c": { + "source": "iana" + }, + "image/jaii": { + "source": "iana", + "extensions": ["jaii"] + }, + "image/jais": { + "source": "iana", + "extensions": ["jais"] + }, + "image/jls": { + "source": "iana", + "extensions": ["jls"] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": ["jp2","jpg2"] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": ["jpg","jpeg","jpe"] + }, + "image/jph": { + "source": "iana", + "extensions": ["jph"] + }, + "image/jphc": { + "source": "iana", + "extensions": ["jhc"] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": ["jpm","jpgm"] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": ["jpx","jpf"] + }, + "image/jxl": { + "source": "iana", + "extensions": ["jxl"] + }, + "image/jxr": { + "source": "iana", + "extensions": ["jxr"] + }, + "image/jxra": { + "source": "iana", + "extensions": ["jxra"] + }, + "image/jxrs": { + "source": "iana", + "extensions": ["jxrs"] + }, + "image/jxs": { + "source": "iana", + "extensions": ["jxs"] + }, + "image/jxsc": { + "source": "iana", + "extensions": ["jxsc"] + }, + "image/jxsi": { + "source": "iana", + "extensions": ["jxsi"] + }, + "image/jxss": { + "source": "iana", + "extensions": ["jxss"] + }, + "image/ktx": { + "source": "iana", + "extensions": ["ktx"] + }, + "image/ktx2": { + "source": "iana", + "extensions": ["ktx2"] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false, + "extensions": ["jfif"] + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": ["png"] + }, + "image/prs.btif": { + "source": "iana", + "extensions": ["btif","btf"] + }, + "image/prs.pti": { + "source": "iana", + "extensions": ["pti"] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": ["sgi"] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["svg","svgz"] + }, + "image/t38": { + "source": "iana", + "extensions": ["t38"] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": ["tif","tiff"] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": ["tfx"] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": ["azv"] + }, + "image/vnd.clip": { + "source": "iana" + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": ["uvi","uvvi","uvg","uvvg"] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": ["djvu","djv"] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": ["dwg"] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": ["dxf"] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": ["fbs"] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": ["fpx"] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "compressible": true, + "extensions": ["ico"] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "compressible": true, + "extensions": ["dds"] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": ["mdi"] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": ["wdp"] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": ["npx"] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": ["b16"] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": ["tap"] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": ["vtf"] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": ["wbmp"] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": ["xif"] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": ["pcx"] + }, + "image/webp": { + "source": "iana", + "extensions": ["webp"] + }, + "image/wmf": { + "source": "iana", + "extensions": ["wmf"] + }, + "image/x-3ds": { + "source": "apache", + "extensions": ["3ds"] + }, + "image/x-adobe-dng": { + "extensions": ["dng"] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": ["ras"] + }, + "image/x-cmx": { + "source": "apache", + "extensions": ["cmx"] + }, + "image/x-emf": { + "source": "iana" + }, + "image/x-freehand": { + "source": "apache", + "extensions": ["fh","fhc","fh4","fh5","fh7"] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": ["ico"] + }, + "image/x-jng": { + "source": "nginx", + "extensions": ["jng"] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": ["sid"] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": ["bmp"] + }, + "image/x-pcx": { + "source": "apache", + "extensions": ["pcx"] + }, + "image/x-pict": { + "source": "apache", + "extensions": ["pic","pct"] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": ["pnm"] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": ["pbm"] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": ["pgm"] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": ["ppm"] + }, + "image/x-rgb": { + "source": "apache", + "extensions": ["rgb"] + }, + "image/x-tga": { + "source": "apache", + "extensions": ["tga"] + }, + "image/x-wmf": { + "source": "iana" + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": ["xbm"] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": ["xpm"] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": ["xwd"] + }, + "message/bhttp": { + "source": "iana" + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": ["u8msg"] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": ["u8dsn"] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": ["u8mdn"] + }, + "message/global-headers": { + "source": "iana", + "extensions": ["u8hdr"] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/mls": { + "source": "iana" + }, + "message/news": { + "source": "apache" + }, + "message/ohttp-req": { + "source": "iana" + }, + "message/ohttp-res": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": ["eml","mime","mht","mhtml"] + }, + "message/s-http": { + "source": "apache" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "apache" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": ["wsc"] + }, + "model/3mf": { + "source": "iana", + "extensions": ["3mf"] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": ["gltf"] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": ["glb"] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": ["igs","iges"] + }, + "model/jt": { + "source": "iana", + "extensions": ["jt"] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": ["msh","mesh","silo"] + }, + "model/mtl": { + "source": "iana", + "extensions": ["mtl"] + }, + "model/obj": { + "source": "iana", + "extensions": ["obj"] + }, + "model/prc": { + "source": "iana", + "extensions": ["prc"] + }, + "model/step": { + "source": "iana", + "extensions": ["step","stp","stpnc","p21","210"] + }, + "model/step+xml": { + "source": "iana", + "compressible": true, + "extensions": ["stpx"] + }, + "model/step+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpz"] + }, + "model/step-xml+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpxz"] + }, + "model/stl": { + "source": "iana", + "extensions": ["stl"] + }, + "model/u3d": { + "source": "iana", + "extensions": ["u3d"] + }, + "model/vnd.bary": { + "source": "iana", + "extensions": ["bary"] + }, + "model/vnd.cld": { + "source": "iana", + "extensions": ["cld"] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dae"] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": ["dwf"] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": ["gdl"] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": ["gtw"] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": ["mts"] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": ["x_t"] + }, + "model/vnd.pytha.pyox": { + "source": "iana", + "extensions": ["pyo","pyox"] + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.sap.vds": { + "source": "iana", + "extensions": ["vds"] + }, + "model/vnd.usda": { + "source": "iana", + "extensions": ["usda"] + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": ["bsp"] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": ["vtu"] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": ["wrl","vrml"] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": ["x3db","x3dbz"] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": ["x3db"] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": ["x3dv","x3dvz"] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": ["x3d","x3dz"] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": ["x3dv"] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": ["appcache","manifest"] + }, + "text/calendar": { + "source": "iana", + "extensions": ["ics","ifb"] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": ["coffee","litcoffee"] + }, + "text/cql": { + "source": "iana" + }, + "text/cql-expression": { + "source": "iana" + }, + "text/cql-identifier": { + "source": "iana" + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["css"] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": ["csv"] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "apache" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fhirpath": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/hl7v2": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": ["html","htm","shtml"] + }, + "text/jade": { + "extensions": ["jade"] + }, + "text/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js","mjs"] + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": ["jsx"] + }, + "text/less": { + "compressible": true, + "extensions": ["less"] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": ["md","markdown"] + }, + "text/mathml": { + "source": "nginx", + "extensions": ["mml"] + }, + "text/mdx": { + "compressible": true, + "extensions": ["mdx"] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["n3"] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": ["txt","text","conf","def","list","log","in","ini"] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": ["dsc"] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/prs.texi": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": ["rtx"] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": ["sgml","sgm"] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "source": "iana", + "extensions": ["shex"] + }, + "text/slim": { + "extensions": ["slim","slm"] + }, + "text/spdx": { + "source": "iana", + "extensions": ["spdx"] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": ["stylus","styl"] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": ["tsv"] + }, + "text/troff": { + "source": "iana", + "extensions": ["t","tr","roff","man","me","ms"] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["ttl"] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": ["uri","uris","urls"] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": ["vcard"] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": ["curl"] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": ["dcurl"] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": ["mcurl"] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": ["scurl"] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.exchangeable": { + "source": "iana" + }, + "text/vnd.familysearch.gedcom": { + "source": "iana", + "extensions": ["ged"] + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": ["fly"] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": ["flx"] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": ["gv"] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": ["3dml"] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": ["spot"] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "apache" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["jad"] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.vcf": { + "source": "iana" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": ["wml"] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": ["wmls"] + }, + "text/vnd.zoo.kcl": { + "source": "iana" + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["vtt"] + }, + "text/wgsl": { + "source": "iana", + "extensions": ["wgsl"] + }, + "text/x-asm": { + "source": "apache", + "extensions": ["s","asm"] + }, + "text/x-c": { + "source": "apache", + "extensions": ["c","cc","cxx","cpp","h","hh","dic"] + }, + "text/x-component": { + "source": "nginx", + "extensions": ["htc"] + }, + "text/x-fortran": { + "source": "apache", + "extensions": ["f","for","f77","f90"] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": ["hbs"] + }, + "text/x-java-source": { + "source": "apache", + "extensions": ["java"] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": ["lua"] + }, + "text/x-markdown": { + "compressible": true, + "extensions": ["mkd"] + }, + "text/x-nfo": { + "source": "apache", + "extensions": ["nfo"] + }, + "text/x-opml": { + "source": "apache", + "extensions": ["opml"] + }, + "text/x-org": { + "compressible": true, + "extensions": ["org"] + }, + "text/x-pascal": { + "source": "apache", + "extensions": ["p","pas"] + }, + "text/x-processing": { + "compressible": true, + "extensions": ["pde"] + }, + "text/x-sass": { + "extensions": ["sass"] + }, + "text/x-scss": { + "extensions": ["scss"] + }, + "text/x-setext": { + "source": "apache", + "extensions": ["etx"] + }, + "text/x-sfv": { + "source": "apache", + "extensions": ["sfv"] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": ["ymp"] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": ["uu"] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": ["vcs"] + }, + "text/x-vcard": { + "source": "apache", + "extensions": ["vcf"] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml"] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "compressible": true, + "extensions": ["yaml","yml"] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": ["3gp","3gpp"] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": ["3g2"] + }, + "video/av1": { + "source": "iana" + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/evc": { + "source": "iana" + }, + "video/ffv1": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": ["h261"] + }, + "video/h263": { + "source": "iana", + "extensions": ["h263"] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": ["h264"] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/h266": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana", + "extensions": ["m4s"] + }, + "video/jpeg": { + "source": "iana", + "extensions": ["jpgv"] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": ["jpm","jpgm"] + }, + "video/jxsv": { + "source": "iana" + }, + "video/lottie+json": { + "source": "iana", + "compressible": true + }, + "video/matroska": { + "source": "iana" + }, + "video/matroska-3d": { + "source": "iana" + }, + "video/mj2": { + "source": "iana", + "extensions": ["mj2","mjp2"] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": ["ts","m2t","m2ts","mts"] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["mp4","mp4v","mpg4"] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpeg","mpg","mpe","m1v","m2v"] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogv"] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": ["qt","mov"] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/scip": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": ["uvh","uvvh"] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": ["uvm","uvvm"] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": ["uvp","uvvp"] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": ["uvs","uvvs"] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": ["uvv","uvvv"] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": ["dvb"] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": ["fvt"] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": ["mxu","m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.planar": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "apache" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": ["uvu","uvvu"] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": ["viv"] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/vp9": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": ["webm"] + }, + "video/x-f4v": { + "source": "apache", + "extensions": ["f4v"] + }, + "video/x-fli": { + "source": "apache", + "extensions": ["fli"] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": ["flv"] + }, + "video/x-m4v": { + "source": "apache", + "extensions": ["m4v"] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": ["mkv","mk3d","mks"] + }, + "video/x-mng": { + "source": "apache", + "extensions": ["mng"] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": ["asf","asx"] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": ["vob"] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": ["wm"] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": ["wmv"] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": ["wmx"] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": ["wvx"] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": ["avi"] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": ["movie"] + }, + "video/x-smv": { + "source": "apache", + "extensions": ["smv"] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": ["ice"] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +} diff --git a/bff/node_modules/mime-db/index.js b/bff/node_modules/mime-db/index.js new file mode 100644 index 0000000..ec2be30 --- /dev/null +++ b/bff/node_modules/mime-db/index.js @@ -0,0 +1,12 @@ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module exports. + */ + +module.exports = require('./db.json') diff --git a/bff/node_modules/mime-db/package.json b/bff/node_modules/mime-db/package.json new file mode 100644 index 0000000..289a370 --- /dev/null +++ b/bff/node_modules/mime-db/package.json @@ -0,0 +1,56 @@ +{ + "name": "mime-db", + "description": "Media Type Database", + "version": "1.54.0", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)", + "Robert Kieffer (http://github.com/broofa)" + ], + "license": "MIT", + "keywords": [ + "mime", + "db", + "type", + "types", + "database", + "charset", + "charsets" + ], + "repository": "jshttp/mime-db", + "devDependencies": { + "csv-parse": "4.16.3", + "eslint": "8.32.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.27.5", + "eslint-plugin-markdown": "3.0.0", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "6.1.1", + "eslint-plugin-standard": "4.1.0", + "media-typer": "1.1.0", + "mocha": "10.2.0", + "nyc": "15.1.0", + "stream-to-array": "2.3.0", + "undici": "7.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "db.json", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "build": "node scripts/build", + "fetch": "node scripts/fetch-apache && node scripts/fetch-iana && node scripts/fetch-nginx", + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "update": "npm run fetch && npm run build", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/mime-types/HISTORY.md b/bff/node_modules/mime-types/HISTORY.md new file mode 100644 index 0000000..9ba2dc0 --- /dev/null +++ b/bff/node_modules/mime-types/HISTORY.md @@ -0,0 +1,428 @@ +3.0.2 / 2025-11-20 +=================== + +* Fix: update JSDoc to reflect that functions return only `false` or `string`, not `boolean|string`. +* Fix: refined mime-score logic so `.mp4` resolves correctly +* Fix:reflect the current Node.js version supported to ≥ 18 (See 3.0.0 for more details). + +3.0.1 / 2025-03-26 +=================== + +* deps: mime-db@1.54.0 + +3.0.0 / 2024-08-31 +=================== + +* Drop support for node <18 +* deps: mime-db@1.53.0 +* resolve extension conflicts with mime-score (#119) + * asc -> application/pgp-signature is now application/pgp-keys + * mpp -> application/vnd.ms-project is now application/dash-patch+xml + * ac -> application/vnd.nokia.n-gage.ac+xml is now application/pkix-attr-cert + * bdoc -> application/x-bdoc is now application/bdoc + * wmz -> application/x-msmetafile is now application/x-ms-wmz + * xsl -> application/xslt+xml is now application/xml + * wav -> audio/wave is now audio/wav + * rtf -> text/rtf is now application/rtf + * xml -> text/xml is now application/xml + * mp4 -> video/mp4 is now application/mp4 + * mpg4 -> video/mp4 is now application/mp4 + + +2.1.35 / 2022-03-12 +=================== + + * deps: mime-db@1.52.0 + - Add extensions from IANA for more `image/*` types + - Add extension `.asc` to `application/pgp-keys` + - Add extensions to various XML types + - Add new upstream MIME types + +2.1.34 / 2021-11-08 +=================== + + * deps: mime-db@1.51.0 + - Add new upstream MIME types + +2.1.33 / 2021-10-01 +=================== + + * deps: mime-db@1.50.0 + - Add deprecated iWorks mime types and extensions + - Add new upstream MIME types + +2.1.32 / 2021-07-27 +=================== + + * deps: mime-db@1.49.0 + - Add extension `.trig` to `application/trig` + - Add new upstream MIME types + +2.1.31 / 2021-06-01 +=================== + + * deps: mime-db@1.48.0 + - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + - Add new upstream MIME types + +2.1.30 / 2021-04-02 +=================== + + * deps: mime-db@1.47.0 + - Add extension `.amr` to `audio/amr` + - Remove ambigious extensions from IANA for `application/*+xml` types + - Update primary extension to `.es` for `application/ecmascript` + +2.1.29 / 2021-02-17 +=================== + + * deps: mime-db@1.46.0 + - Add extension `.amr` to `audio/amr` + - Add extension `.m4s` to `video/iso.segment` + - Add extension `.opus` to `audio/ogg` + - Add new upstream MIME types + +2.1.28 / 2021-01-01 +=================== + + * deps: mime-db@1.45.0 + - Add `application/ubjson` with extension `.ubj` + - Add `image/avif` with extension `.avif` + - Add `image/ktx2` with extension `.ktx2` + - Add extension `.dbf` to `application/vnd.dbf` + - Add extension `.rar` to `application/vnd.rar` + - Add extension `.td` to `application/urc-targetdesc+xml` + - Add new upstream MIME types + - Fix extension of `application/vnd.apple.keynote` to be `.key` + +2.1.27 / 2020-04-23 +=================== + + * deps: mime-db@1.44.0 + - Add charsets from IANA + - Add extension `.cjs` to `application/node` + - Add new upstream MIME types + +2.1.26 / 2020-01-05 +=================== + + * deps: mime-db@1.43.0 + - Add `application/x-keepass2` with extension `.kdbx` + - Add extension `.mxmf` to `audio/mobile-xmf` + - Add extensions from IANA for `application/*+xml` types + - Add new upstream MIME types + +2.1.25 / 2019-11-12 +=================== + + * deps: mime-db@1.42.0 + - Add new upstream MIME types + - Add `application/toml` with extension `.toml` + - Add `image/vnd.ms-dds` with extension `.dds` + +2.1.24 / 2019-04-20 +=================== + + * deps: mime-db@1.40.0 + - Add extensions from IANA for `model/*` types + - Add `text/mdx` with extension `.mdx` + +2.1.23 / 2019-04-17 +=================== + + * deps: mime-db@~1.39.0 + - Add extensions `.siv` and `.sieve` to `application/sieve` + - Add new upstream MIME types + +2.1.22 / 2019-02-14 +=================== + + * deps: mime-db@~1.38.0 + - Add extension `.nq` to `application/n-quads` + - Add extension `.nt` to `application/n-triples` + - Add new upstream MIME types + +2.1.21 / 2018-10-19 +=================== + + * deps: mime-db@~1.37.0 + - Add extensions to HEIC image types + - Add new upstream MIME types + +2.1.20 / 2018-08-26 +=================== + + * deps: mime-db@~1.36.0 + - Add Apple file extensions from IANA + - Add extensions from IANA for `image/*` types + - Add new upstream MIME types + +2.1.19 / 2018-07-17 +=================== + + * deps: mime-db@~1.35.0 + - Add extension `.csl` to `application/vnd.citationstyles.style+xml` + - Add extension `.es` to `application/ecmascript` + - Add extension `.owl` to `application/rdf+xml` + - Add new upstream MIME types + - Add UTF-8 as default charset for `text/turtle` + +2.1.18 / 2018-02-16 +=================== + + * deps: mime-db@~1.33.0 + - Add `application/raml+yaml` with extension `.raml` + - Add `application/wasm` with extension `.wasm` + - Add `text/shex` with extension `.shex` + - Add extensions for JPEG-2000 images + - Add extensions from IANA for `message/*` types + - Add new upstream MIME types + - Update font MIME types + - Update `text/hjson` to registered `application/hjson` + +2.1.17 / 2017-09-01 +=================== + + * deps: mime-db@~1.30.0 + - Add `application/vnd.ms-outlook` + - Add `application/x-arj` + - Add extension `.mjs` to `application/javascript` + - Add glTF types and extensions + - Add new upstream MIME types + - Add `text/x-org` + - Add VirtualBox MIME types + - Fix `source` records for `video/*` types that are IANA + - Update `font/opentype` to registered `font/otf` + +2.1.16 / 2017-07-24 +=================== + + * deps: mime-db@~1.29.0 + - Add `application/fido.trusted-apps+json` + - Add extension `.wadl` to `application/vnd.sun.wadl+xml` + - Add extension `.gz` to `application/gzip` + - Add new upstream MIME types + - Update extensions `.md` and `.markdown` to be `text/markdown` + +2.1.15 / 2017-03-23 +=================== + + * deps: mime-db@~1.27.0 + - Add new mime types + - Add `image/apng` + +2.1.14 / 2017-01-14 +=================== + + * deps: mime-db@~1.26.0 + - Add new mime types + +2.1.13 / 2016-11-18 +=================== + + * deps: mime-db@~1.25.0 + - Add new mime types + +2.1.12 / 2016-09-18 +=================== + + * deps: mime-db@~1.24.0 + - Add new mime types + - Add `audio/mp3` + +2.1.11 / 2016-05-01 +=================== + + * deps: mime-db@~1.23.0 + - Add new mime types + +2.1.10 / 2016-02-15 +=================== + + * deps: mime-db@~1.22.0 + - Add new mime types + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + +2.1.9 / 2016-01-06 +================== + + * deps: mime-db@~1.21.0 + - Add new mime types + +2.1.8 / 2015-11-30 +================== + + * deps: mime-db@~1.20.0 + - Add new mime types + +2.1.7 / 2015-09-20 +================== + + * deps: mime-db@~1.19.0 + - Add new mime types + +2.1.6 / 2015-09-03 +================== + + * deps: mime-db@~1.18.0 + - Add new mime types + +2.1.5 / 2015-08-20 +================== + + * deps: mime-db@~1.17.0 + - Add new mime types + +2.1.4 / 2015-07-30 +================== + + * deps: mime-db@~1.16.0 + - Add new mime types + +2.1.3 / 2015-07-13 +================== + + * deps: mime-db@~1.15.0 + - Add new mime types + +2.1.2 / 2015-06-25 +================== + + * deps: mime-db@~1.14.0 + - Add new mime types + +2.1.1 / 2015-06-08 +================== + + * perf: fix deopt during mapping + +2.1.0 / 2015-06-07 +================== + + * Fix incorrectly treating extension-less file name as extension + - i.e. `'path/to/json'` will no longer return `application/json` + * Fix `.charset(type)` to accept parameters + * Fix `.charset(type)` to match case-insensitive + * Improve generation of extension to MIME mapping + * Refactor internals for readability and no argument reassignment + * Prefer `application/*` MIME types from the same source + * Prefer any type over `application/octet-stream` + * deps: mime-db@~1.13.0 + - Add nginx as a source + - Add new mime types + +2.0.14 / 2015-06-06 +=================== + + * deps: mime-db@~1.12.0 + - Add new mime types + +2.0.13 / 2015-05-31 +=================== + + * deps: mime-db@~1.11.0 + - Add new mime types + +2.0.12 / 2015-05-19 +=================== + + * deps: mime-db@~1.10.0 + - Add new mime types + +2.0.11 / 2015-05-05 +=================== + + * deps: mime-db@~1.9.1 + - Add new mime types + +2.0.10 / 2015-03-13 +=================== + + * deps: mime-db@~1.8.0 + - Add new mime types + +2.0.9 / 2015-02-09 +================== + + * deps: mime-db@~1.7.0 + - Add new mime types + - Community extensions ownership transferred from `node-mime` + +2.0.8 / 2015-01-29 +================== + + * deps: mime-db@~1.6.0 + - Add new mime types + +2.0.7 / 2014-12-30 +================== + + * deps: mime-db@~1.5.0 + - Add new mime types + - Fix various invalid MIME type entries + +2.0.6 / 2014-12-30 +================== + + * deps: mime-db@~1.4.0 + - Add new mime types + - Fix various invalid MIME type entries + - Remove example template MIME types + +2.0.5 / 2014-12-29 +================== + + * deps: mime-db@~1.3.1 + - Fix missing extensions + +2.0.4 / 2014-12-10 +================== + + * deps: mime-db@~1.3.0 + - Add new mime types + +2.0.3 / 2014-11-09 +================== + + * deps: mime-db@~1.2.0 + - Add new mime types + +2.0.2 / 2014-09-28 +================== + + * deps: mime-db@~1.1.0 + - Add new mime types + - Update charsets + +2.0.1 / 2014-09-07 +================== + + * Support Node.js 0.6 + +2.0.0 / 2014-09-02 +================== + + * Use `mime-db` + * Remove `.define()` + +1.0.2 / 2014-08-04 +================== + + * Set charset=utf-8 for `text/javascript` + +1.0.1 / 2014-06-24 +================== + + * Add `text/jsx` type + +1.0.0 / 2014-05-12 +================== + + * Return `false` for unknown types + * Set charset=utf-8 for `application/json` + +0.1.0 / 2014-05-02 +================== + + * Initial release diff --git a/bff/node_modules/mime-types/LICENSE b/bff/node_modules/mime-types/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/bff/node_modules/mime-types/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/mime-types/README.md b/bff/node_modules/mime-types/README.md new file mode 100644 index 0000000..222d2b5 --- /dev/null +++ b/bff/node_modules/mime-types/README.md @@ -0,0 +1,126 @@ +# mime-types + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +The ultimate javascript content-type utility. + +Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except: + +- __No fallbacks.__ Instead of naively returning the first available type, + `mime-types` simply returns `false`, so do + `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. +- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. +- No `.define()` functionality +- Bug fixes for `.lookup(path)` + +Otherwise, the API is compatible with `mime` 1.x. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install mime-types +``` + +## Note on MIME Type Data and Semver + +This package considers the programmatic api as the semver compatibility. Additionally, the package which provides the MIME data +for this package (`mime-db`) *also* considers it's programmatic api as the semver contract. This means the MIME type resolution is *not* considered +in the semver bumps. + +In the past the version of `mime-db` was pinned to give two decision points when adopting MIME data changes. This is no longer true. We still update the +`mime-db` package here as a `minor` release when necessary, but will use a `^` range going forward. This means that if you want to pin your `mime-db` data +you will need to do it in your application. While this expectation was not set in docs until now, it is how the pacakge operated, so we do not feel this is +a breaking change. + +If you wish to pin your `mime-db` version you can do that with overrides via your package manager of choice. See their documentation for how to correctly configure that. + +## Adding Types + +All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db), +so open a PR there if you'd like to add mime types. + +## API + +```js +var mime = require('mime-types') +``` + +All functions return `false` if input is invalid or not found. + +### mime.lookup(path) + +Lookup the content-type associated with a file. + +```js +mime.lookup('json') // 'application/json' +mime.lookup('.md') // 'text/markdown' +mime.lookup('file.html') // 'text/html' +mime.lookup('folder/file.js') // 'application/javascript' +mime.lookup('folder/.htaccess') // false + +mime.lookup('cats') // false +``` + +### mime.contentType(type) + +Create a full content-type header given a content-type or extension. +When given an extension, `mime.lookup` is used to get the matching +content-type, otherwise the given content-type is used. Then if the +content-type does not already have a `charset` parameter, `mime.charset` +is used to get the default charset and add to the returned content-type. + +```js +mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' +mime.contentType('file.json') // 'application/json; charset=utf-8' +mime.contentType('text/html') // 'text/html; charset=utf-8' +mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1' + +// from a full path +mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' +``` + +### mime.extension(type) + +Get the default extension for a content-type. + +```js +mime.extension('application/octet-stream') // 'bin' +``` + +### mime.charset(type) + +Lookup the implied default charset of a content-type. + +```js +mime.charset('text/markdown') // 'UTF-8' +``` + +### var type = mime.types[extension] + +A map of content-types by extension. + +### [extensions...] = mime.extensions[type] + +A map of extensions by content-type. + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci +[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master +[node-version-image]: https://badgen.net/npm/node/mime-types +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-types +[npm-url]: https://npmjs.org/package/mime-types +[npm-version-image]: https://badgen.net/npm/v/mime-types diff --git a/bff/node_modules/mime-types/index.js b/bff/node_modules/mime-types/index.js new file mode 100644 index 0000000..9725ddf --- /dev/null +++ b/bff/node_modules/mime-types/index.js @@ -0,0 +1,211 @@ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var db = require('mime-db') +var extname = require('path').extname +var mimeScore = require('./mimeScore') + +/** + * Module variables. + * @private + */ + +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ +var TEXT_TYPE_REGEXP = /^text\//i + +/** + * Module exports. + * @public + */ + +exports.charset = charset +exports.charsets = { lookup: charset } +exports.contentType = contentType +exports.extension = extension +exports.extensions = Object.create(null) +exports.lookup = lookup +exports.types = Object.create(null) +exports._extensionConflicts = [] + +// Populate the extensions/types maps +populateMaps(exports.extensions, exports.types) + +/** + * Get the default charset for a MIME type. + * + * @param {string} type + * @return {false|string} + */ + +function charset (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && db[match[1].toLowerCase()] + + if (mime && mime.charset) { + return mime.charset + } + + // default text/* to utf-8 + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return 'UTF-8' + } + + return false +} + +/** + * Create a full Content-Type header given a MIME type or extension. + * + * @param {string} str + * @return {false|string} + */ + +function contentType (str) { + // TODO: should this even be in this module? + if (!str || typeof str !== 'string') { + return false + } + + var mime = str.indexOf('/') === -1 ? exports.lookup(str) : str + + if (!mime) { + return false + } + + // TODO: use content-type or other module + if (mime.indexOf('charset') === -1) { + var charset = exports.charset(mime) + if (charset) mime += '; charset=' + charset.toLowerCase() + } + + return mime +} + +/** + * Get the default extension for a MIME type. + * + * @param {string} type + * @return {false|string} + */ + +function extension (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + + // get extensions + var exts = match && exports.extensions[match[1].toLowerCase()] + + if (!exts || !exts.length) { + return false + } + + return exts[0] +} + +/** + * Lookup the MIME type for a file path/extension. + * + * @param {string} path + * @return {false|string} + */ + +function lookup (path) { + if (!path || typeof path !== 'string') { + return false + } + + // get the extension ("ext" or ".ext" or full path) + var extension = extname('x.' + path) + .toLowerCase() + .slice(1) + + if (!extension) { + return false + } + + return exports.types[extension] || false +} + +/** + * Populate the extensions and types maps. + * @private + */ + +function populateMaps (extensions, types) { + Object.keys(db).forEach(function forEachMimeType (type) { + var mime = db[type] + var exts = mime.extensions + + if (!exts || !exts.length) { + return + } + + // mime -> extensions + extensions[type] = exts + + // extension -> mime + for (var i = 0; i < exts.length; i++) { + var extension = exts[i] + types[extension] = _preferredType(extension, types[extension], type) + + // DELETE (eventually): Capture extension->type maps that change as a + // result of switching to mime-score. This is just to help make reviewing + // PR #119 easier, and can be removed once that PR is approved. + const legacyType = _preferredTypeLegacy( + extension, + types[extension], + type + ) + if (legacyType !== types[extension]) { + exports._extensionConflicts.push([extension, legacyType, types[extension]]) + } + } + }) +} + +// Resolve type conflict using mime-score +function _preferredType (ext, type0, type1) { + var score0 = type0 ? mimeScore(type0, db[type0].source) : 0 + var score1 = type1 ? mimeScore(type1, db[type1].source) : 0 + + return score0 > score1 ? type0 : type1 +} + +// Resolve type conflict using pre-mime-score logic +function _preferredTypeLegacy (ext, type0, type1) { + var SOURCE_RANK = ['nginx', 'apache', undefined, 'iana'] + + var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0 + var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0 + + if ( + exports.types[extension] !== 'application/octet-stream' && + (score0 > score1 || + (score0 === score1 && + exports.types[extension]?.slice(0, 12) === 'application/')) + ) { + return type0 + } + + return score0 > score1 ? type0 : type1 +} diff --git a/bff/node_modules/mime-types/mimeScore.js b/bff/node_modules/mime-types/mimeScore.js new file mode 100644 index 0000000..fc2e665 --- /dev/null +++ b/bff/node_modules/mime-types/mimeScore.js @@ -0,0 +1,57 @@ +// 'mime-score' back-ported to CommonJS + +// Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3) +var FACET_SCORES = { + 'prs.': 100, + 'x-': 200, + 'x.': 300, + 'vnd.': 400, + default: 900 +} + +// Score mime source (Logic originally from `jshttp/mime-types` module) +var SOURCE_SCORES = { + nginx: 10, + apache: 20, + iana: 40, + default: 30 // definitions added by `jshttp/mime-db` project? +} + +var TYPE_SCORES = { + // prefer application/xml over text/xml + // prefer application/rtf over text/rtf + application: 1, + + // prefer font/woff over application/font-woff + font: 2, + + // prefer video/mp4 over audio/mp4 over application/mp4 + // See https://www.rfc-editor.org/rfc/rfc4337.html#section-2 + audio: 2, + video: 3, + + default: 0 +} + +/** + * Get each component of the score for a mime type. The sum of these is the + * total score. The higher the score, the more "official" the type. + */ +module.exports = function mimeScore (mimeType, source = 'default') { + if (mimeType === 'application/octet-stream') { + return 0 + } + + const [type, subtype] = mimeType.split('/') + + const facet = subtype.replace(/(\.|x-).*/, '$1') + + const facetScore = FACET_SCORES[facet] || FACET_SCORES.default + const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default + const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default + + // All else being equal prefer shorter types + const lengthScore = 1 - mimeType.length / 100 + + return facetScore + sourceScore + typeScore + lengthScore +} diff --git a/bff/node_modules/mime-types/package.json b/bff/node_modules/mime-types/package.json new file mode 100644 index 0000000..6c58c27 --- /dev/null +++ b/bff/node_modules/mime-types/package.json @@ -0,0 +1,49 @@ +{ + "name": "mime-types", + "description": "The ultimate javascript content-type utility.", + "version": "3.0.2", + "contributors": [ + "Douglas Christopher Wilson ", + "Jeremiah Senkpiel (https://searchbeam.jit.su)", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "keywords": [ + "mime", + "types" + ], + "repository": "jshttp/mime-types", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "dependencies": { + "mime-db": "^1.54.0" + }, + "devDependencies": { + "eslint": "8.33.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-markdown": "3.0.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "6.6.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "10.8.2", + "nyc": "15.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "index.js", + "mimeScore.js" + ], + "engines": { + "node": ">=18" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec test/test.js", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/minimist/.eslintrc b/bff/node_modules/minimist/.eslintrc new file mode 100644 index 0000000..bd1a5e0 --- /dev/null +++ b/bff/node_modules/minimist/.eslintrc @@ -0,0 +1,29 @@ +{ + "root": true, + + "extends": "@ljharb/eslint-config/node/0.4", + + "rules": { + "array-element-newline": 0, + "complexity": 0, + "func-style": [2, "declaration"], + "max-lines-per-function": 0, + "max-nested-callbacks": 1, + "max-statements-per-line": 1, + "max-statements": 0, + "multiline-comment-style": 0, + "no-continue": 1, + "no-param-reassign": 1, + "no-restricted-syntax": 1, + "object-curly-newline": 0, + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "camelcase": 0, + }, + }, + ] +} diff --git a/bff/node_modules/minimist/.github/FUNDING.yml b/bff/node_modules/minimist/.github/FUNDING.yml new file mode 100644 index 0000000..a936622 --- /dev/null +++ b/bff/node_modules/minimist/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/minimist +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/minimist/.nycrc b/bff/node_modules/minimist/.nycrc new file mode 100644 index 0000000..55c3d29 --- /dev/null +++ b/bff/node_modules/minimist/.nycrc @@ -0,0 +1,14 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "example", + "test" + ] +} diff --git a/bff/node_modules/minimist/CHANGELOG.md b/bff/node_modules/minimist/CHANGELOG.md new file mode 100644 index 0000000..c9a1e15 --- /dev/null +++ b/bff/node_modules/minimist/CHANGELOG.md @@ -0,0 +1,298 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.2.8](https://github.com/minimistjs/minimist/compare/v1.2.7...v1.2.8) - 2023-02-09 + +### Merged + +- [Fix] Fix long option followed by single dash [`#17`](https://github.com/minimistjs/minimist/pull/17) +- [Tests] Remove duplicate test [`#12`](https://github.com/minimistjs/minimist/pull/12) +- [Fix] opt.string works with multiple aliases [`#10`](https://github.com/minimistjs/minimist/pull/10) + +### Fixed + +- [Fix] Fix long option followed by single dash (#17) [`#15`](https://github.com/minimistjs/minimist/issues/15) +- [Tests] Remove duplicate test (#12) [`#8`](https://github.com/minimistjs/minimist/issues/8) +- [Fix] Fix long option followed by single dash [`#15`](https://github.com/minimistjs/minimist/issues/15) +- [Fix] opt.string works with multiple aliases (#10) [`#9`](https://github.com/minimistjs/minimist/issues/9) +- [Fix] Fix handling of short option with non-trivial equals [`#5`](https://github.com/minimistjs/minimist/issues/5) +- [Tests] Remove duplicate test [`#8`](https://github.com/minimistjs/minimist/issues/8) +- [Fix] opt.string works with multiple aliases [`#9`](https://github.com/minimistjs/minimist/issues/9) + +### Commits + +- Merge tag 'v0.2.3' [`a026794`](https://github.com/minimistjs/minimist/commit/a0267947c7870fc5847cf2d437fbe33f392767da) +- [eslint] fix indentation and whitespace [`5368ca4`](https://github.com/minimistjs/minimist/commit/5368ca4147e974138a54cc0dc4cea8f756546b70) +- [eslint] fix indentation and whitespace [`e5f5067`](https://github.com/minimistjs/minimist/commit/e5f5067259ceeaf0b098d14bec910f87e58708c7) +- [eslint] more cleanup [`62fde7d`](https://github.com/minimistjs/minimist/commit/62fde7d935f83417fb046741531a9e2346a36976) +- [eslint] more cleanup [`36ac5d0`](https://github.com/minimistjs/minimist/commit/36ac5d0d95e4947d074e5737d94814034ca335d1) +- [meta] add `auto-changelog` [`73923d2`](https://github.com/minimistjs/minimist/commit/73923d223553fca08b1ba77e3fbc2a492862ae4c) +- [actions] add reusable workflows [`d80727d`](https://github.com/minimistjs/minimist/commit/d80727df77bfa9e631044d7f16368d8f09242c91) +- [eslint] add eslint; rules to enable later are warnings [`48bc06a`](https://github.com/minimistjs/minimist/commit/48bc06a1b41f00e9cdf183db34f7a51ba70e98d4) +- [eslint] fix indentation [`34b0f1c`](https://github.com/minimistjs/minimist/commit/34b0f1ccaa45183c3c4f06a91f9b405180a6f982) +- [readme] rename and add badges [`5df0fe4`](https://github.com/minimistjs/minimist/commit/5df0fe49211bd09a3636f8686a7cb3012c3e98f0) +- [Dev Deps] switch from `covert` to `nyc` [`a48b128`](https://github.com/minimistjs/minimist/commit/a48b128fdb8d427dfb20a15273f83e38d97bef07) +- [Dev Deps] update `covert`, `tape`; remove unnecessary `tap` [`f0fb958`](https://github.com/minimistjs/minimist/commit/f0fb958e9a1fe980cdffc436a211b0bda58f621b) +- [meta] create FUNDING.yml; add `funding` in package.json [`3639e0c`](https://github.com/minimistjs/minimist/commit/3639e0c819359a366387e425ab6eabf4c78d3caa) +- [meta] use `npmignore` to autogenerate an npmignore file [`be2e038`](https://github.com/minimistjs/minimist/commit/be2e038c342d8333b32f0fde67a0026b79c8150e) +- Only apps should have lockfiles [`282b570`](https://github.com/minimistjs/minimist/commit/282b570e7489d01b03f2d6d3dabf79cd3e5f84cf) +- isConstructorOrProto adapted from PR [`ef9153f`](https://github.com/minimistjs/minimist/commit/ef9153fc52b6cea0744b2239921c5dcae4697f11) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`098873c`](https://github.com/minimistjs/minimist/commit/098873c213cdb7c92e55ae1ef5aa1af3a8192a79) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`3124ed3`](https://github.com/minimistjs/minimist/commit/3124ed3e46306301ebb3c834874ce0241555c2c4) +- [meta] add `safe-publish-latest` [`4b927de`](https://github.com/minimistjs/minimist/commit/4b927de696d561c636b4f43bf49d4597cb36d6d6) +- [Tests] add `aud` in `posttest` [`b32d9bd`](https://github.com/minimistjs/minimist/commit/b32d9bd0ab340f4e9f8c3a97ff2a4424f25fab8c) +- [meta] update repo URLs [`f9fdfc0`](https://github.com/minimistjs/minimist/commit/f9fdfc032c54884d9a9996a390c63cd0719bbe1a) +- [actions] Avoid 0.6 tests due to build failures [`ba92fe6`](https://github.com/minimistjs/minimist/commit/ba92fe6ebbdc0431cca9a2ea8f27beb492f5e4ec) +- [Dev Deps] update `tape` [`950eaa7`](https://github.com/minimistjs/minimist/commit/950eaa74f112e04d23e9c606c67472c46739b473) +- [Dev Deps] add missing `npmignore` dev dep [`3226afa`](https://github.com/minimistjs/minimist/commit/3226afaf09e9d127ca369742437fe6e88f752d6b) +- Merge tag 'v0.2.2' [`980d7ac`](https://github.com/minimistjs/minimist/commit/980d7ac61a0b4bd552711251ac107d506b23e41f) + +## [v1.2.7](https://github.com/minimistjs/minimist/compare/v1.2.6...v1.2.7) - 2022-10-10 + +### Commits + +- [meta] add `auto-changelog` [`0ebf4eb`](https://github.com/minimistjs/minimist/commit/0ebf4ebcd5f7787a5524d31a849ef41316b83c3c) +- [actions] add reusable workflows [`e115b63`](https://github.com/minimistjs/minimist/commit/e115b63fa9d3909f33b00a2db647ff79068388de) +- [eslint] add eslint; rules to enable later are warnings [`f58745b`](https://github.com/minimistjs/minimist/commit/f58745b9bb84348e1be72af7dbba5840c7c13013) +- [Dev Deps] switch from `covert` to `nyc` [`ab03356`](https://github.com/minimistjs/minimist/commit/ab033567b9c8b31117cb026dc7f1e592ce455c65) +- [readme] rename and add badges [`236f4a0`](https://github.com/minimistjs/minimist/commit/236f4a07e4ebe5ee44f1496ec6974991ab293ffd) +- [meta] create FUNDING.yml; add `funding` in package.json [`783a49b`](https://github.com/minimistjs/minimist/commit/783a49bfd47e8335d3098a8cac75662cf71eb32a) +- [meta] use `npmignore` to autogenerate an npmignore file [`f81ece6`](https://github.com/minimistjs/minimist/commit/f81ece6aaec2fa14e69ff4f1e0407a8c4e2635a2) +- Only apps should have lockfiles [`56cad44`](https://github.com/minimistjs/minimist/commit/56cad44c7f879b9bb5ec18fcc349308024a89bfc) +- [Dev Deps] update `covert`, `tape`; remove unnecessary `tap` [`49c5f9f`](https://github.com/minimistjs/minimist/commit/49c5f9fb7e6a92db9eb340cc679de92fb3aacded) +- [Tests] add `aud` in `posttest` [`228ae93`](https://github.com/minimistjs/minimist/commit/228ae938f3cd9db9dfd8bd7458b076a7b2aef280) +- [meta] add `safe-publish-latest` [`01fc23f`](https://github.com/minimistjs/minimist/commit/01fc23f5104f85c75059972e01dd33796ab529ff) +- [meta] update repo URLs [`6b164c7`](https://github.com/minimistjs/minimist/commit/6b164c7d68e0b6bf32f894699effdfb7c63041dd) + +## [v1.2.6](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.6) - 2022-03-21 + +### Commits + +- test from prototype pollution PR [`bc8ecee`](https://github.com/minimistjs/minimist/commit/bc8ecee43875261f4f17eb20b1243d3ed15e70eb) +- isConstructorOrProto adapted from PR [`c2b9819`](https://github.com/minimistjs/minimist/commit/c2b981977fa834b223b408cfb860f933c9811e4d) +- security notice for additional prototype pollution issue [`ef88b93`](https://github.com/minimistjs/minimist/commit/ef88b9325f77b5ee643ccfc97e2ebda577e4c4e2) + +## [v1.2.5](https://github.com/minimistjs/minimist/compare/v1.2.4...v1.2.5) - 2020-03-12 + +## [v1.2.4](https://github.com/minimistjs/minimist/compare/v1.2.3...v1.2.4) - 2020-03-11 + +### Commits + +- security notice [`4cf1354`](https://github.com/minimistjs/minimist/commit/4cf1354839cb972e38496d35e12f806eea92c11f) +- additional test for constructor prototype pollution [`1043d21`](https://github.com/minimistjs/minimist/commit/1043d212c3caaf871966e710f52cfdf02f9eea4b) + +## [v1.2.3](https://github.com/minimistjs/minimist/compare/v1.2.2...v1.2.3) - 2020-03-10 + +### Commits + +- more failing proto pollution tests [`13c01a5`](https://github.com/minimistjs/minimist/commit/13c01a5327736903704984b7f65616b8476850cc) +- even more aggressive checks for protocol pollution [`38a4d1c`](https://github.com/minimistjs/minimist/commit/38a4d1caead72ef99e824bb420a2528eec03d9ab) + +## [v1.2.2](https://github.com/minimistjs/minimist/compare/v1.2.1...v1.2.2) - 2020-03-10 + +### Commits + +- failing test for protocol pollution [`0efed03`](https://github.com/minimistjs/minimist/commit/0efed0340ec8433638758f7ca0c77cb20a0bfbab) +- cleanup [`67d3722`](https://github.com/minimistjs/minimist/commit/67d3722413448d00a62963d2d30c34656a92d7e2) +- console.dir -> console.log [`47acf72`](https://github.com/minimistjs/minimist/commit/47acf72c715a630bf9ea013867f47f1dd69dfc54) +- don't assign onto __proto__ [`63e7ed0`](https://github.com/minimistjs/minimist/commit/63e7ed05aa4b1889ec2f3b196426db4500cbda94) + +## [v1.2.1](https://github.com/minimistjs/minimist/compare/v1.2.0...v1.2.1) - 2020-03-10 + +### Merged + +- move the `opts['--']` example back where it belongs [`#63`](https://github.com/minimistjs/minimist/pull/63) + +### Commits + +- add test [`6be5dae`](https://github.com/minimistjs/minimist/commit/6be5dae35a32a987bcf4137fcd6c19c5200ee909) +- fix bad boolean regexp [`ac3fc79`](https://github.com/minimistjs/minimist/commit/ac3fc796e63b95128fdbdf67ea7fad71bd59aa76) + +## [v1.2.0](https://github.com/minimistjs/minimist/compare/v1.1.3...v1.2.0) - 2015-08-24 + +### Commits + +- failing -k=v short test [`63416b8`](https://github.com/minimistjs/minimist/commit/63416b8cd1d0d70e4714564cce465a36e4dd26d7) +- kv short fix [`6bbe145`](https://github.com/minimistjs/minimist/commit/6bbe14529166245e86424f220a2321442fe88dc3) +- failing kv short test [`f72ab7f`](https://github.com/minimistjs/minimist/commit/f72ab7f4572adc52902c9b6873cc969192f01b10) +- fixed kv test [`f5a48c3`](https://github.com/minimistjs/minimist/commit/f5a48c3e50e40ca54f00c8e84de4b4d6e9897fa8) +- enforce space between arg key and value [`86b321a`](https://github.com/minimistjs/minimist/commit/86b321affe648a8e016c095a4f0efa9d9074f502) + +## [v1.1.3](https://github.com/minimistjs/minimist/compare/v1.1.2...v1.1.3) - 2015-08-06 + +### Commits + +- add failing test - boolean alias array [`0fa3c5b`](https://github.com/minimistjs/minimist/commit/0fa3c5b3dd98551ddecf5392831b4c21211743fc) +- fix boolean values with multiple aliases [`9c0a6e7`](https://github.com/minimistjs/minimist/commit/9c0a6e7de25a273b11bbf9a7464f0bd833779795) + +## [v1.1.2](https://github.com/minimistjs/minimist/compare/v1.1.1...v1.1.2) - 2015-07-22 + +### Commits + +- Convert boolean arguments to boolean values [`8f3dc27`](https://github.com/minimistjs/minimist/commit/8f3dc27cf833f1d54671b6d0bcb55c2fe19672a9) +- use non-ancient npm, node 0.12 and iojs [`61ed1d0`](https://github.com/minimistjs/minimist/commit/61ed1d034b9ec7282764ce76f3992b1a0b4906ae) +- an older npm for 0.8 [`25cf778`](https://github.com/minimistjs/minimist/commit/25cf778b1220e7838a526832ad6972f75244054f) + +## [v1.1.1](https://github.com/minimistjs/minimist/compare/v1.1.0...v1.1.1) - 2015-03-10 + +### Commits + +- check that they type of a value is a boolean, not just that it is currently set to a boolean [`6863198`](https://github.com/minimistjs/minimist/commit/6863198e36139830ff1f20ffdceaddd93f2c1db9) +- upgrade tape, fix type issues from old tape version [`806712d`](https://github.com/minimistjs/minimist/commit/806712df91604ed02b8e39aa372b84aea659ee34) +- test for setting a boolean to a null default [`8c444fe`](https://github.com/minimistjs/minimist/commit/8c444fe89384ded7d441c120915ea60620b01dd3) +- if the previous value was a boolean, without an default (or with an alias) don't make an array either [`e5f419a`](https://github.com/minimistjs/minimist/commit/e5f419a3b5b3bc3f9e5ac71b7040621af70ed2dd) + +## [v1.1.0](https://github.com/minimistjs/minimist/compare/v1.0.0...v1.1.0) - 2014-08-10 + +### Commits + +- add support for handling "unknown" options not registered with the parser. [`6f3cc5d`](https://github.com/minimistjs/minimist/commit/6f3cc5d4e84524932a6ef2ce3592acc67cdd4383) +- reformat package.json [`02ed371`](https://github.com/minimistjs/minimist/commit/02ed37115194d3697ff358e8e25e5e66bab1d9f8) +- coverage script [`e5531ba`](https://github.com/minimistjs/minimist/commit/e5531ba0479da3b8138d3d8cac545d84ccb1c8df) +- extra fn to get 100% coverage again [`a6972da`](https://github.com/minimistjs/minimist/commit/a6972da89e56bf77642f8ec05a13b6558db93498) + +## [v1.0.0](https://github.com/minimistjs/minimist/compare/v0.2.3...v1.0.0) - 2014-08-10 + +### Commits + +- added stopEarly option [`471c7e4`](https://github.com/minimistjs/minimist/commit/471c7e4a7e910fc7ad8f9df850a186daf32c64e9) +- fix list [`fef6ae7`](https://github.com/minimistjs/minimist/commit/fef6ae79c38b9dc1c49569abb7cd04eb965eac5e) + +## [v0.2.3](https://github.com/minimistjs/minimist/compare/v0.2.2...v0.2.3) - 2023-02-09 + +### Merged + +- [Fix] Fix long option followed by single dash [`#17`](https://github.com/minimistjs/minimist/pull/17) +- [Tests] Remove duplicate test [`#12`](https://github.com/minimistjs/minimist/pull/12) +- [Fix] opt.string works with multiple aliases [`#10`](https://github.com/minimistjs/minimist/pull/10) + +### Fixed + +- [Fix] Fix long option followed by single dash (#17) [`#15`](https://github.com/minimistjs/minimist/issues/15) +- [Tests] Remove duplicate test (#12) [`#8`](https://github.com/minimistjs/minimist/issues/8) +- [Fix] opt.string works with multiple aliases (#10) [`#9`](https://github.com/minimistjs/minimist/issues/9) + +### Commits + +- [eslint] fix indentation and whitespace [`e5f5067`](https://github.com/minimistjs/minimist/commit/e5f5067259ceeaf0b098d14bec910f87e58708c7) +- [eslint] more cleanup [`36ac5d0`](https://github.com/minimistjs/minimist/commit/36ac5d0d95e4947d074e5737d94814034ca335d1) +- [eslint] fix indentation [`34b0f1c`](https://github.com/minimistjs/minimist/commit/34b0f1ccaa45183c3c4f06a91f9b405180a6f982) +- isConstructorOrProto adapted from PR [`ef9153f`](https://github.com/minimistjs/minimist/commit/ef9153fc52b6cea0744b2239921c5dcae4697f11) +- [Dev Deps] update `@ljharb/eslint-config`, `aud` [`098873c`](https://github.com/minimistjs/minimist/commit/098873c213cdb7c92e55ae1ef5aa1af3a8192a79) +- [Dev Deps] add missing `npmignore` dev dep [`3226afa`](https://github.com/minimistjs/minimist/commit/3226afaf09e9d127ca369742437fe6e88f752d6b) + +## [v0.2.2](https://github.com/minimistjs/minimist/compare/v0.2.1...v0.2.2) - 2022-10-10 + +### Commits + +- [meta] add `auto-changelog` [`73923d2`](https://github.com/minimistjs/minimist/commit/73923d223553fca08b1ba77e3fbc2a492862ae4c) +- [actions] add reusable workflows [`d80727d`](https://github.com/minimistjs/minimist/commit/d80727df77bfa9e631044d7f16368d8f09242c91) +- [eslint] add eslint; rules to enable later are warnings [`48bc06a`](https://github.com/minimistjs/minimist/commit/48bc06a1b41f00e9cdf183db34f7a51ba70e98d4) +- [readme] rename and add badges [`5df0fe4`](https://github.com/minimistjs/minimist/commit/5df0fe49211bd09a3636f8686a7cb3012c3e98f0) +- [Dev Deps] switch from `covert` to `nyc` [`a48b128`](https://github.com/minimistjs/minimist/commit/a48b128fdb8d427dfb20a15273f83e38d97bef07) +- [Dev Deps] update `covert`, `tape`; remove unnecessary `tap` [`f0fb958`](https://github.com/minimistjs/minimist/commit/f0fb958e9a1fe980cdffc436a211b0bda58f621b) +- [meta] create FUNDING.yml; add `funding` in package.json [`3639e0c`](https://github.com/minimistjs/minimist/commit/3639e0c819359a366387e425ab6eabf4c78d3caa) +- [meta] use `npmignore` to autogenerate an npmignore file [`be2e038`](https://github.com/minimistjs/minimist/commit/be2e038c342d8333b32f0fde67a0026b79c8150e) +- Only apps should have lockfiles [`282b570`](https://github.com/minimistjs/minimist/commit/282b570e7489d01b03f2d6d3dabf79cd3e5f84cf) +- [meta] add `safe-publish-latest` [`4b927de`](https://github.com/minimistjs/minimist/commit/4b927de696d561c636b4f43bf49d4597cb36d6d6) +- [Tests] add `aud` in `posttest` [`b32d9bd`](https://github.com/minimistjs/minimist/commit/b32d9bd0ab340f4e9f8c3a97ff2a4424f25fab8c) +- [meta] update repo URLs [`f9fdfc0`](https://github.com/minimistjs/minimist/commit/f9fdfc032c54884d9a9996a390c63cd0719bbe1a) + +## [v0.2.1](https://github.com/minimistjs/minimist/compare/v0.2.0...v0.2.1) - 2020-03-12 + +## [v0.2.0](https://github.com/minimistjs/minimist/compare/v0.1.0...v0.2.0) - 2014-06-19 + +### Commits + +- support all-boolean mode [`450a97f`](https://github.com/minimistjs/minimist/commit/450a97f6e2bc85c7a4a13185c19a818d9a5ebe69) + +## [v0.1.0](https://github.com/minimistjs/minimist/compare/v0.0.10...v0.1.0) - 2014-05-12 + +### Commits + +- Provide a mechanism to segregate -- arguments [`ce4a1e6`](https://github.com/minimistjs/minimist/commit/ce4a1e63a7e8d5ab88d2a3768adefa6af98a445a) +- documented argv['--'] [`14db0e6`](https://github.com/minimistjs/minimist/commit/14db0e6dbc6d2b9e472adaa54dad7004b364634f) +- Adding a test-case for notFlags segregation [`715c1e3`](https://github.com/minimistjs/minimist/commit/715c1e3714be223f998f6c537af6b505f0236c16) + +## [v0.0.10](https://github.com/minimistjs/minimist/compare/v0.0.9...v0.0.10) - 2014-05-11 + +### Commits + +- dedicated boolean test [`46e448f`](https://github.com/minimistjs/minimist/commit/46e448f9f513cfeb2bcc8b688b9b47ba1e515c2b) +- dedicated num test [`9bf2d36`](https://github.com/minimistjs/minimist/commit/9bf2d36f1d3b8795be90b8f7de0a937f098aa394) +- aliased values treated as strings [`1ab743b`](https://github.com/minimistjs/minimist/commit/1ab743bad4484d69f1259bed42f9531de01119de) +- cover the case of already numbers, at 100% coverage [`b2bb044`](https://github.com/minimistjs/minimist/commit/b2bb04436599d77a2ce029e8e555e25b3aa55d13) +- another test for higher coverage [`3662624`](https://github.com/minimistjs/minimist/commit/3662624be976d5489d486a856849c048d13be903) + +## [v0.0.9](https://github.com/minimistjs/minimist/compare/v0.0.8...v0.0.9) - 2014-05-08 + +### Commits + +- Eliminate `longest` fn. [`824f642`](https://github.com/minimistjs/minimist/commit/824f642038d1b02ede68b6261d1d65163390929a) + +## [v0.0.8](https://github.com/minimistjs/minimist/compare/v0.0.7...v0.0.8) - 2014-02-20 + +### Commits + +- return '' if flag is string and empty [`fa63ed4`](https://github.com/minimistjs/minimist/commit/fa63ed4651a4ef4eefddce34188e0d98d745a263) +- handle joined single letters [`66c248f`](https://github.com/minimistjs/minimist/commit/66c248f0241d4d421d193b022e9e365f11178534) + +## [v0.0.7](https://github.com/minimistjs/minimist/compare/v0.0.6...v0.0.7) - 2014-02-08 + +### Commits + +- another swap of .test for .match [`d1da408`](https://github.com/minimistjs/minimist/commit/d1da40819acbe846d89a5c02721211e3c1260dde) + +## [v0.0.6](https://github.com/minimistjs/minimist/compare/v0.0.5...v0.0.6) - 2014-02-08 + +### Commits + +- use .test() instead of .match() to not crash on non-string values in the arguments array [`7e0d1ad`](https://github.com/minimistjs/minimist/commit/7e0d1add8c9e5b9b20a4d3d0f9a94d824c578da1) + +## [v0.0.5](https://github.com/minimistjs/minimist/compare/v0.0.4...v0.0.5) - 2013-09-18 + +### Commits + +- Improve '--' handling. [`b11822c`](https://github.com/minimistjs/minimist/commit/b11822c09cc9d2460f30384d12afc0b953c037a4) + +## [v0.0.4](https://github.com/minimistjs/minimist/compare/v0.0.3...v0.0.4) - 2013-09-17 + +## [v0.0.3](https://github.com/minimistjs/minimist/compare/v0.0.2...v0.0.3) - 2013-09-12 + +### Commits + +- failing test for single dash preceeding a double dash [`b465514`](https://github.com/minimistjs/minimist/commit/b465514b82c9ae28972d714facd951deb2ad762b) +- fix for the dot test [`6a095f1`](https://github.com/minimistjs/minimist/commit/6a095f1d364c8fab2d6753d2291a0649315d297a) + +## [v0.0.2](https://github.com/minimistjs/minimist/compare/v0.0.1...v0.0.2) - 2013-08-28 + +### Commits + +- allow dotted aliases & defaults [`321c33e`](https://github.com/minimistjs/minimist/commit/321c33e755485faaeb44eeb1c05d33b2e0a5a7c4) +- use a better version of ff [`e40f611`](https://github.com/minimistjs/minimist/commit/e40f61114cf7be6f7947f7b3eed345853a67dbbb) + +## [v0.0.1](https://github.com/minimistjs/minimist/compare/v0.0.0...v0.0.1) - 2013-06-25 + +### Commits + +- remove trailing commas [`6ff0fa0`](https://github.com/minimistjs/minimist/commit/6ff0fa055064f15dbe06d50b89d5173a6796e1db) + +## v0.0.0 - 2013-06-25 + +### Commits + +- half of the parse test ported [`3079326`](https://github.com/minimistjs/minimist/commit/307932601325087de6cf94188eb798ffc4f3088a) +- stripped down code and a passing test from optimist [`7cced88`](https://github.com/minimistjs/minimist/commit/7cced88d82e399d1a03ed23eb667f04d3f320d10) +- ported parse tests completely over [`9448754`](https://github.com/minimistjs/minimist/commit/944875452e0820df6830b1408c26a0f7d3e1db04) +- docs, package.json [`a5bf46a`](https://github.com/minimistjs/minimist/commit/a5bf46ac9bb3bd114a9c340276c62c1091e538d5) +- move more short tests into short.js [`503edb5`](https://github.com/minimistjs/minimist/commit/503edb5c41d89c0d40831ee517154fc13b0f18b9) +- default bool test was wrong, not the code [`1b9f5db`](https://github.com/minimistjs/minimist/commit/1b9f5db4741b49962846081b68518de824992097) +- passing long tests ripped out of parse.js [`7972c4a`](https://github.com/minimistjs/minimist/commit/7972c4aff1f4803079e1668006658e2a761a0428) +- badges [`84c0370`](https://github.com/minimistjs/minimist/commit/84c037063664d42878aace715fe6572ce01b6f3b) +- all the tests now ported, some failures [`64239ed`](https://github.com/minimistjs/minimist/commit/64239edfe92c711c4eb0da254fcdfad2a5fdb605) +- failing short test [`f8a5341`](https://github.com/minimistjs/minimist/commit/f8a534112dd1138d2fad722def56a848480c446f) +- fixed the numeric test [`6b034f3`](https://github.com/minimistjs/minimist/commit/6b034f37c79342c60083ed97fd222e16928aac51) diff --git a/bff/node_modules/minimist/LICENSE b/bff/node_modules/minimist/LICENSE new file mode 100644 index 0000000..ee27ba4 --- /dev/null +++ b/bff/node_modules/minimist/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/minimist/README.md b/bff/node_modules/minimist/README.md new file mode 100644 index 0000000..74da323 --- /dev/null +++ b/bff/node_modules/minimist/README.md @@ -0,0 +1,121 @@ +# minimist [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +parse argument options + +This module is the guts of optimist's argument parser without all the +fanciful decoration. + +# example + +``` js +var argv = require('minimist')(process.argv.slice(2)); +console.log(argv); +``` + +``` +$ node example/parse.js -a beep -b boop +{ _: [], a: 'beep', b: 'boop' } +``` + +``` +$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz +{ + _: ['foo', 'bar', 'baz'], + x: 3, + y: 4, + n: 5, + a: true, + b: true, + c: true, + beep: 'boop' +} +``` + +# security + +Previous versions had a prototype pollution bug that could cause privilege +escalation in some circumstances when handling untrusted user input. + +Please use version 1.2.6 or later: + +* https://security.snyk.io/vuln/SNYK-JS-MINIMIST-2429795 (version <=1.2.5) +* https://snyk.io/vuln/SNYK-JS-MINIMIST-559764 (version <=1.2.3) + +# methods + +``` js +var parseArgs = require('minimist') +``` + +## var argv = parseArgs(args, opts={}) + +Return an argument object `argv` populated with the array arguments from `args`. + +`argv._` contains all the arguments that didn't have an option associated with +them. + +Numeric-looking arguments will be returned as numbers unless `opts.string` or +`opts.boolean` is set for that argument name. + +Any arguments after `'--'` will not be parsed and will end up in `argv._`. + +options can be: + +* `opts.string` - a string or array of strings argument names to always treat as +strings +* `opts.boolean` - a boolean, string or array of strings to always treat as +booleans. if `true` will treat all double hyphenated arguments without equal signs +as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`) +* `opts.alias` - an object mapping string names to strings or arrays of string +argument names to use as aliases +* `opts.default` - an object mapping string argument names to default values +* `opts.stopEarly` - when true, populate `argv._` with everything after the +first non-option +* `opts['--']` - when true, populate `argv._` with everything before the `--` +and `argv['--']` with everything after the `--`. Here's an example: + + ``` + > require('./')('one two three -- four five --six'.split(' '), { '--': true }) + { + _: ['one', 'two', 'three'], + '--': ['four', 'five', '--six'] + } + ``` + + Note that with `opts['--']` set, parsing for arguments still stops after the + `--`. + +* `opts.unknown` - a function which is invoked with a command line parameter not +defined in the `opts` configuration object. If the function returns `false`, the +unknown option is not added to `argv`. + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install minimist +``` + +# license + +MIT + +[package-url]: https://npmjs.org/package/minimist +[npm-version-svg]: https://versionbadg.es/minimistjs/minimist.svg +[npm-badge-png]: https://nodei.co/npm/minimist.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/minimist.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/minimist.svg +[downloads-url]: https://npm-stat.com/charts.html?package=minimist +[codecov-image]: https://codecov.io/gh/minimistjs/minimist/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/minimistjs/minimist/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/minimistjs/minimist +[actions-url]: https://github.com/minimistjs/minimist/actions diff --git a/bff/node_modules/minimist/example/parse.js b/bff/node_modules/minimist/example/parse.js new file mode 100644 index 0000000..9d90ffb --- /dev/null +++ b/bff/node_modules/minimist/example/parse.js @@ -0,0 +1,4 @@ +'use strict'; + +var argv = require('../')(process.argv.slice(2)); +console.log(argv); diff --git a/bff/node_modules/minimist/index.js b/bff/node_modules/minimist/index.js new file mode 100644 index 0000000..f020f39 --- /dev/null +++ b/bff/node_modules/minimist/index.js @@ -0,0 +1,263 @@ +'use strict'; + +function hasKey(obj, keys) { + var o = obj; + keys.slice(0, -1).forEach(function (key) { + o = o[key] || {}; + }); + + var key = keys[keys.length - 1]; + return key in o; +} + +function isNumber(x) { + if (typeof x === 'number') { return true; } + if ((/^0x[0-9a-f]+$/i).test(x)) { return true; } + return (/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/).test(x); +} + +function isConstructorOrProto(obj, key) { + return (key === 'constructor' && typeof obj[key] === 'function') || key === '__proto__'; +} + +module.exports = function (args, opts) { + if (!opts) { opts = {}; } + + var flags = { + bools: {}, + strings: {}, + unknownFn: null, + }; + + if (typeof opts.unknown === 'function') { + flags.unknownFn = opts.unknown; + } + + if (typeof opts.boolean === 'boolean' && opts.boolean) { + flags.allBools = true; + } else { + [].concat(opts.boolean).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + }); + } + + var aliases = {}; + + function aliasIsBoolean(key) { + return aliases[key].some(function (x) { + return flags.bools[x]; + }); + } + + Object.keys(opts.alias || {}).forEach(function (key) { + aliases[key] = [].concat(opts.alias[key]); + aliases[key].forEach(function (x) { + aliases[x] = [key].concat(aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + + [].concat(opts.string).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + if (aliases[key]) { + [].concat(aliases[key]).forEach(function (k) { + flags.strings[k] = true; + }); + } + }); + + var defaults = opts.default || {}; + + var argv = { _: [] }; + + function argDefined(key, arg) { + return (flags.allBools && (/^--[^=]+$/).test(arg)) + || flags.strings[key] + || flags.bools[key] + || aliases[key]; + } + + function setKey(obj, keys, value) { + var o = obj; + for (var i = 0; i < keys.length - 1; i++) { + var key = keys[i]; + if (isConstructorOrProto(o, key)) { return; } + if (o[key] === undefined) { o[key] = {}; } + if ( + o[key] === Object.prototype + || o[key] === Number.prototype + || o[key] === String.prototype + ) { + o[key] = {}; + } + if (o[key] === Array.prototype) { o[key] = []; } + o = o[key]; + } + + var lastKey = keys[keys.length - 1]; + if (isConstructorOrProto(o, lastKey)) { return; } + if ( + o === Object.prototype + || o === Number.prototype + || o === String.prototype + ) { + o = {}; + } + if (o === Array.prototype) { o = []; } + if (o[lastKey] === undefined || flags.bools[lastKey] || typeof o[lastKey] === 'boolean') { + o[lastKey] = value; + } else if (Array.isArray(o[lastKey])) { + o[lastKey].push(value); + } else { + o[lastKey] = [o[lastKey], value]; + } + } + + function setArg(key, val, arg) { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg) === false) { return; } + } + + var value = !flags.strings[key] && isNumber(val) + ? Number(val) + : val; + setKey(argv, key.split('.'), value); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), value); + }); + } + + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + }); + + var notFlags = []; + + if (args.indexOf('--') !== -1) { + notFlags = args.slice(args.indexOf('--') + 1); + args = args.slice(0, args.indexOf('--')); + } + + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + var key; + var next; + + if ((/^--.+=/).test(arg)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + key = m[1]; + var value = m[2]; + if (flags.bools[key]) { + value = value !== 'false'; + } + setArg(key, value, arg); + } else if ((/^--no-.+/).test(arg)) { + key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false, arg); + } else if ((/^--.+/).test(arg)) { + key = arg.match(/^--(.+)/)[1]; + next = args[i + 1]; + if ( + next !== undefined + && !(/^(-|--)[^-]/).test(next) + && !flags.bools[key] + && !flags.allBools + && (aliases[key] ? !aliasIsBoolean(key) : true) + ) { + setArg(key, next, arg); + i += 1; + } else if ((/^(true|false)$/).test(next)) { + setArg(key, next === 'true', arg); + i += 1; + } else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } else if ((/^-[^-]+/).test(arg)) { + var letters = arg.slice(1, -1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + next = arg.slice(j + 2); + + if (next === '-') { + setArg(letters[j], next, arg); + continue; + } + + if ((/[A-Za-z]/).test(letters[j]) && next[0] === '=') { + setArg(letters[j], next.slice(1), arg); + broken = true; + break; + } + + if ( + (/[A-Za-z]/).test(letters[j]) + && (/-?\d+(\.\d*)?(e-?\d+)?$/).test(next) + ) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); + } + } + + key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if ( + args[i + 1] + && !(/^(-|--)[^-]/).test(args[i + 1]) + && !flags.bools[key] + && (aliases[key] ? !aliasIsBoolean(key) : true) + ) { + setArg(key, args[i + 1], arg); + i += 1; + } else if (args[i + 1] && (/^(true|false)$/).test(args[i + 1])) { + setArg(key, args[i + 1] === 'true', arg); + i += 1; + } else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg)); + } + if (opts.stopEarly) { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } + } + } + + Object.keys(defaults).forEach(function (k) { + if (!hasKey(argv, k.split('.'))) { + setKey(argv, k.split('.'), defaults[k]); + + (aliases[k] || []).forEach(function (x) { + setKey(argv, x.split('.'), defaults[k]); + }); + } + }); + + if (opts['--']) { + argv['--'] = notFlags.slice(); + } else { + notFlags.forEach(function (k) { + argv._.push(k); + }); + } + + return argv; +}; diff --git a/bff/node_modules/minimist/package.json b/bff/node_modules/minimist/package.json new file mode 100644 index 0000000..c10a334 --- /dev/null +++ b/bff/node_modules/minimist/package.json @@ -0,0 +1,75 @@ +{ + "name": "minimist", + "version": "1.2.8", + "description": "parse argument options", + "main": "index.js", + "devDependencies": { + "@ljharb/eslint-config": "^21.0.1", + "aud": "^2.0.2", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.6.3" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "lint": "eslint --ext=js,mjs .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/6..latest", + "ff/5", + "firefox/latest", + "chrome/10", + "chrome/latest", + "safari/5.1", + "safari/latest", + "opera/12" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/minimistjs/minimist.git" + }, + "homepage": "https://github.com/minimistjs/minimist", + "keywords": [ + "argv", + "getopt", + "parser", + "optimist" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} diff --git a/bff/node_modules/minimist/test/all_bool.js b/bff/node_modules/minimist/test/all_bool.js new file mode 100644 index 0000000..befa0c9 --- /dev/null +++ b/bff/node_modules/minimist/test/all_bool.js @@ -0,0 +1,34 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('flag boolean true (default all --args to boolean)', function (t) { + var argv = parse(['moo', '--honk', 'cow'], { + boolean: true, + }); + + t.deepEqual(argv, { + honk: true, + _: ['moo', 'cow'], + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); + +test('flag boolean true only affects double hyphen arguments without equals signs', function (t) { + var argv = parse(['moo', '--honk', 'cow', '-p', '55', '--tacos=good'], { + boolean: true, + }); + + t.deepEqual(argv, { + honk: true, + tacos: 'good', + p: 55, + _: ['moo', 'cow'], + }); + + t.deepEqual(typeof argv.honk, 'boolean'); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/bool.js b/bff/node_modules/minimist/test/bool.js new file mode 100644 index 0000000..e58d47e --- /dev/null +++ b/bff/node_modules/minimist/test/bool.js @@ -0,0 +1,177 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('flag boolean default false', function (t) { + var argv = parse(['moo'], { + boolean: ['t', 'verbose'], + default: { verbose: false, t: false }, + }); + + t.deepEqual(argv, { + verbose: false, + t: false, + _: ['moo'], + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); + +}); + +test('boolean groups', function (t) { + var argv = parse(['-x', '-z', 'one', 'two', 'three'], { + boolean: ['x', 'y', 'z'], + }); + + t.deepEqual(argv, { + x: true, + y: false, + z: true, + _: ['one', 'two', 'three'], + }); + + t.deepEqual(typeof argv.x, 'boolean'); + t.deepEqual(typeof argv.y, 'boolean'); + t.deepEqual(typeof argv.z, 'boolean'); + t.end(); +}); +test('boolean and alias with chainable api', function (t) { + var aliased = ['-h', 'derp']; + var regular = ['--herp', 'derp']; + var aliasedArgv = parse(aliased, { + boolean: 'herp', + alias: { h: 'herp' }, + }); + var propertyArgv = parse(regular, { + boolean: 'herp', + alias: { h: 'herp' }, + }); + var expected = { + herp: true, + h: true, + _: ['derp'], + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias with options hash', function (t) { + var aliased = ['-h', 'derp']; + var regular = ['--herp', 'derp']; + var opts = { + alias: { h: 'herp' }, + boolean: 'herp', + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + _: ['derp'], + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +test('boolean and alias array with options hash', function (t) { + var aliased = ['-h', 'derp']; + var regular = ['--herp', 'derp']; + var alt = ['--harp', 'derp']; + var opts = { + alias: { h: ['herp', 'harp'] }, + boolean: 'h', + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var altPropertyArgv = parse(alt, opts); + var expected = { + harp: true, + herp: true, + h: true, + _: ['derp'], + }; + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.same(altPropertyArgv, expected); + t.end(); +}); + +test('boolean and alias using explicit true', function (t) { + var aliased = ['-h', 'true']; + var regular = ['--herp', 'true']; + var opts = { + alias: { h: 'herp' }, + boolean: 'h', + }; + var aliasedArgv = parse(aliased, opts); + var propertyArgv = parse(regular, opts); + var expected = { + herp: true, + h: true, + _: [], + }; + + t.same(aliasedArgv, expected); + t.same(propertyArgv, expected); + t.end(); +}); + +// regression, see https://github.com/substack/node-optimist/issues/71 +test('boolean and --x=true', function (t) { + var parsed = parse(['--boool', '--other=true'], { + boolean: 'boool', + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'true'); + + parsed = parse(['--boool', '--other=false'], { + boolean: 'boool', + }); + + t.same(parsed.boool, true); + t.same(parsed.other, 'false'); + t.end(); +}); + +test('boolean --boool=true', function (t) { + var parsed = parse(['--boool=true'], { + default: { + boool: false, + }, + boolean: ['boool'], + }); + + t.same(parsed.boool, true); + t.end(); +}); + +test('boolean --boool=false', function (t) { + var parsed = parse(['--boool=false'], { + default: { + boool: true, + }, + boolean: ['boool'], + }); + + t.same(parsed.boool, false); + t.end(); +}); + +test('boolean using something similar to true', function (t) { + var opts = { boolean: 'h' }; + var result = parse(['-h', 'true.txt'], opts); + var expected = { + h: true, + _: ['true.txt'], + }; + + t.same(result, expected); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/dash.js b/bff/node_modules/minimist/test/dash.js new file mode 100644 index 0000000..7078817 --- /dev/null +++ b/bff/node_modules/minimist/test/dash.js @@ -0,0 +1,43 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('-', function (t) { + t.plan(6); + t.deepEqual(parse(['-n', '-']), { n: '-', _: [] }); + t.deepEqual(parse(['--nnn', '-']), { nnn: '-', _: [] }); + t.deepEqual(parse(['-']), { _: ['-'] }); + t.deepEqual(parse(['-f-']), { f: '-', _: [] }); + t.deepEqual( + parse(['-b', '-'], { boolean: 'b' }), + { b: true, _: ['-'] } + ); + t.deepEqual( + parse(['-s', '-'], { string: 's' }), + { s: '-', _: [] } + ); +}); + +test('-a -- b', function (t) { + t.plan(2); + t.deepEqual(parse(['-a', '--', 'b']), { a: true, _: ['b'] }); + t.deepEqual(parse(['--a', '--', 'b']), { a: true, _: ['b'] }); +}); + +test('move arguments after the -- into their own `--` array', function (t) { + t.plan(1); + t.deepEqual( + parse(['--name', 'John', 'before', '--', 'after'], { '--': true }), + { name: 'John', _: ['before'], '--': ['after'] } + ); +}); + +test('--- option value', function (t) { + // A multi-dash value is largely an edge case, but check the behaviour is as expected, + // and in particular the same for short option and long option (as made consistent in Jan 2023). + t.plan(2); + t.deepEqual(parse(['-n', '---']), { n: '---', _: [] }); + t.deepEqual(parse(['--nnn', '---']), { nnn: '---', _: [] }); +}); + diff --git a/bff/node_modules/minimist/test/default_bool.js b/bff/node_modules/minimist/test/default_bool.js new file mode 100644 index 0000000..4e9f625 --- /dev/null +++ b/bff/node_modules/minimist/test/default_bool.js @@ -0,0 +1,37 @@ +'use strict'; + +var test = require('tape'); +var parse = require('../'); + +test('boolean default true', function (t) { + var argv = parse([], { + boolean: 'sometrue', + default: { sometrue: true }, + }); + t.equal(argv.sometrue, true); + t.end(); +}); + +test('boolean default false', function (t) { + var argv = parse([], { + boolean: 'somefalse', + default: { somefalse: false }, + }); + t.equal(argv.somefalse, false); + t.end(); +}); + +test('boolean default to null', function (t) { + var argv = parse([], { + boolean: 'maybe', + default: { maybe: null }, + }); + t.equal(argv.maybe, null); + + var argvLong = parse(['--maybe'], { + boolean: 'maybe', + default: { maybe: null }, + }); + t.equal(argvLong.maybe, true); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/dotted.js b/bff/node_modules/minimist/test/dotted.js new file mode 100644 index 0000000..126ff03 --- /dev/null +++ b/bff/node_modules/minimist/test/dotted.js @@ -0,0 +1,24 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('dotted alias', function (t) { + var argv = parse(['--a.b', '22'], { default: { 'a.b': 11 }, alias: { 'a.b': 'aa.bb' } }); + t.equal(argv.a.b, 22); + t.equal(argv.aa.bb, 22); + t.end(); +}); + +test('dotted default', function (t) { + var argv = parse('', { default: { 'a.b': 11 }, alias: { 'a.b': 'aa.bb' } }); + t.equal(argv.a.b, 11); + t.equal(argv.aa.bb, 11); + t.end(); +}); + +test('dotted default with no alias', function (t) { + var argv = parse('', { default: { 'a.b': 11 } }); + t.equal(argv.a.b, 11); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/kv_short.js b/bff/node_modules/minimist/test/kv_short.js new file mode 100644 index 0000000..6d1b53a --- /dev/null +++ b/bff/node_modules/minimist/test/kv_short.js @@ -0,0 +1,32 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('short -k=v', function (t) { + t.plan(1); + + var argv = parse(['-b=123']); + t.deepEqual(argv, { b: 123, _: [] }); +}); + +test('multi short -k=v', function (t) { + t.plan(1); + + var argv = parse(['-a=whatever', '-b=robots']); + t.deepEqual(argv, { a: 'whatever', b: 'robots', _: [] }); +}); + +test('short with embedded equals -k=a=b', function (t) { + t.plan(1); + + var argv = parse(['-k=a=b']); + t.deepEqual(argv, { k: 'a=b', _: [] }); +}); + +test('short with later equals like -ab=c', function (t) { + t.plan(1); + + var argv = parse(['-ab=c']); + t.deepEqual(argv, { a: true, b: 'c', _: [] }); +}); diff --git a/bff/node_modules/minimist/test/long.js b/bff/node_modules/minimist/test/long.js new file mode 100644 index 0000000..9fef51f --- /dev/null +++ b/bff/node_modules/minimist/test/long.js @@ -0,0 +1,33 @@ +'use strict'; + +var test = require('tape'); +var parse = require('../'); + +test('long opts', function (t) { + t.deepEqual( + parse(['--bool']), + { bool: true, _: [] }, + 'long boolean' + ); + t.deepEqual( + parse(['--pow', 'xixxle']), + { pow: 'xixxle', _: [] }, + 'long capture sp' + ); + t.deepEqual( + parse(['--pow=xixxle']), + { pow: 'xixxle', _: [] }, + 'long capture eq' + ); + t.deepEqual( + parse(['--host', 'localhost', '--port', '555']), + { host: 'localhost', port: 555, _: [] }, + 'long captures sp' + ); + t.deepEqual( + parse(['--host=localhost', '--port=555']), + { host: 'localhost', port: 555, _: [] }, + 'long captures eq' + ); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/num.js b/bff/node_modules/minimist/test/num.js new file mode 100644 index 0000000..074393e --- /dev/null +++ b/bff/node_modules/minimist/test/num.js @@ -0,0 +1,38 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('nums', function (t) { + var argv = parse([ + '-x', '1234', + '-y', '5.67', + '-z', '1e7', + '-w', '10f', + '--hex', '0xdeadbeef', + '789', + ]); + t.deepEqual(argv, { + x: 1234, + y: 5.67, + z: 1e7, + w: '10f', + hex: 0xdeadbeef, + _: [789], + }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv.y, 'number'); + t.deepEqual(typeof argv.z, 'number'); + t.deepEqual(typeof argv.w, 'string'); + t.deepEqual(typeof argv.hex, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); + +test('already a number', function (t) { + var argv = parse(['-x', 1234, 789]); + t.deepEqual(argv, { x: 1234, _: [789] }); + t.deepEqual(typeof argv.x, 'number'); + t.deepEqual(typeof argv._[0], 'number'); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/parse.js b/bff/node_modules/minimist/test/parse.js new file mode 100644 index 0000000..65d9d90 --- /dev/null +++ b/bff/node_modules/minimist/test/parse.js @@ -0,0 +1,209 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('parse args', function (t) { + t.deepEqual( + parse(['--no-moo']), + { moo: false, _: [] }, + 'no' + ); + t.deepEqual( + parse(['-v', 'a', '-v', 'b', '-v', 'c']), + { v: ['a', 'b', 'c'], _: [] }, + 'multi' + ); + t.end(); +}); + +test('comprehensive', function (t) { + t.deepEqual( + parse([ + '--name=meowmers', 'bare', '-cats', 'woo', + '-h', 'awesome', '--multi=quux', + '--key', 'value', + '-b', '--bool', '--no-meep', '--multi=baz', + '--', '--not-a-flag', 'eek', + ]), + { + c: true, + a: true, + t: true, + s: 'woo', + h: 'awesome', + b: true, + bool: true, + key: 'value', + multi: ['quux', 'baz'], + meep: false, + name: 'meowmers', + _: ['bare', '--not-a-flag', 'eek'], + } + ); + t.end(); +}); + +test('flag boolean', function (t) { + var argv = parse(['-t', 'moo'], { boolean: 't' }); + t.deepEqual(argv, { t: true, _: ['moo'] }); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('flag boolean value', function (t) { + var argv = parse(['--verbose', 'false', 'moo', '-t', 'true'], { + boolean: ['t', 'verbose'], + default: { verbose: true }, + }); + + t.deepEqual(argv, { + verbose: false, + t: true, + _: ['moo'], + }); + + t.deepEqual(typeof argv.verbose, 'boolean'); + t.deepEqual(typeof argv.t, 'boolean'); + t.end(); +}); + +test('newlines in params', function (t) { + var args = parse(['-s', 'X\nX']); + t.deepEqual(args, { _: [], s: 'X\nX' }); + + // reproduce in bash: + // VALUE="new + // line" + // node program.js --s="$VALUE" + args = parse(['--s=X\nX']); + t.deepEqual(args, { _: [], s: 'X\nX' }); + t.end(); +}); + +test('strings', function (t) { + var s = parse(['-s', '0001234'], { string: 's' }).s; + t.equal(s, '0001234'); + t.equal(typeof s, 'string'); + + var x = parse(['-x', '56'], { string: 'x' }).x; + t.equal(x, '56'); + t.equal(typeof x, 'string'); + t.end(); +}); + +test('stringArgs', function (t) { + var s = parse([' ', ' '], { string: '_' })._; + t.same(s.length, 2); + t.same(typeof s[0], 'string'); + t.same(s[0], ' '); + t.same(typeof s[1], 'string'); + t.same(s[1], ' '); + t.end(); +}); + +test('empty strings', function (t) { + var s = parse(['-s'], { string: 's' }).s; + t.equal(s, ''); + t.equal(typeof s, 'string'); + + var str = parse(['--str'], { string: 'str' }).str; + t.equal(str, ''); + t.equal(typeof str, 'string'); + + var letters = parse(['-art'], { + string: ['a', 't'], + }); + + t.equal(letters.a, ''); + t.equal(letters.r, true); + t.equal(letters.t, ''); + + t.end(); +}); + +test('string and alias', function (t) { + var x = parse(['--str', '000123'], { + string: 's', + alias: { s: 'str' }, + }); + + t.equal(x.str, '000123'); + t.equal(typeof x.str, 'string'); + t.equal(x.s, '000123'); + t.equal(typeof x.s, 'string'); + + var y = parse(['-s', '000123'], { + string: 'str', + alias: { str: 's' }, + }); + + t.equal(y.str, '000123'); + t.equal(typeof y.str, 'string'); + t.equal(y.s, '000123'); + t.equal(typeof y.s, 'string'); + + var z = parse(['-s123'], { + alias: { str: ['s', 'S'] }, + string: ['str'], + }); + + t.deepEqual( + z, + { _: [], s: '123', S: '123', str: '123' }, + 'opt.string works with multiple aliases' + ); + t.end(); +}); + +test('slashBreak', function (t) { + t.same( + parse(['-I/foo/bar/baz']), + { I: '/foo/bar/baz', _: [] } + ); + t.same( + parse(['-xyz/foo/bar/baz']), + { x: true, y: true, z: '/foo/bar/baz', _: [] } + ); + t.end(); +}); + +test('alias', function (t) { + var argv = parse(['-f', '11', '--zoom', '55'], { + alias: { z: 'zoom' }, + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.f, 11); + t.end(); +}); + +test('multiAlias', function (t) { + var argv = parse(['-f', '11', '--zoom', '55'], { + alias: { z: ['zm', 'zoom'] }, + }); + t.equal(argv.zoom, 55); + t.equal(argv.z, argv.zoom); + t.equal(argv.z, argv.zm); + t.equal(argv.f, 11); + t.end(); +}); + +test('nested dotted objects', function (t) { + var argv = parse([ + '--foo.bar', '3', '--foo.baz', '4', + '--foo.quux.quibble', '5', '--foo.quux.o_O', + '--beep.boop', + ]); + + t.same(argv.foo, { + bar: 3, + baz: 4, + quux: { + quibble: 5, + o_O: true, + }, + }); + t.same(argv.beep, { boop: true }); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/parse_modified.js b/bff/node_modules/minimist/test/parse_modified.js new file mode 100644 index 0000000..32965d1 --- /dev/null +++ b/bff/node_modules/minimist/test/parse_modified.js @@ -0,0 +1,11 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('parse with modifier functions', function (t) { + t.plan(1); + + var argv = parse(['-b', '123'], { boolean: 'b' }); + t.deepEqual(argv, { b: true, _: [123] }); +}); diff --git a/bff/node_modules/minimist/test/proto.js b/bff/node_modules/minimist/test/proto.js new file mode 100644 index 0000000..6e629dd --- /dev/null +++ b/bff/node_modules/minimist/test/proto.js @@ -0,0 +1,64 @@ +'use strict'; + +/* eslint no-proto: 0 */ + +var parse = require('../'); +var test = require('tape'); + +test('proto pollution', function (t) { + var argv = parse(['--__proto__.x', '123']); + t.equal({}.x, undefined); + t.equal(argv.__proto__.x, undefined); + t.equal(argv.x, undefined); + t.end(); +}); + +test('proto pollution (array)', function (t) { + var argv = parse(['--x', '4', '--x', '5', '--x.__proto__.z', '789']); + t.equal({}.z, undefined); + t.deepEqual(argv.x, [4, 5]); + t.equal(argv.x.z, undefined); + t.equal(argv.x.__proto__.z, undefined); + t.end(); +}); + +test('proto pollution (number)', function (t) { + var argv = parse(['--x', '5', '--x.__proto__.z', '100']); + t.equal({}.z, undefined); + t.equal((4).z, undefined); + t.equal(argv.x, 5); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (string)', function (t) { + var argv = parse(['--x', 'abc', '--x.__proto__.z', 'def']); + t.equal({}.z, undefined); + t.equal('...'.z, undefined); + t.equal(argv.x, 'abc'); + t.equal(argv.x.z, undefined); + t.end(); +}); + +test('proto pollution (constructor)', function (t) { + var argv = parse(['--constructor.prototype.y', '123']); + t.equal({}.y, undefined); + t.equal(argv.y, undefined); + t.end(); +}); + +test('proto pollution (constructor function)', function (t) { + var argv = parse(['--_.concat.constructor.prototype.y', '123']); + function fnToBeTested() {} + t.equal(fnToBeTested.y, undefined); + t.equal(argv.y, undefined); + t.end(); +}); + +// powered by snyk - https://github.com/backstage/backstage/issues/10343 +test('proto pollution (constructor function) snyk', function (t) { + var argv = parse('--_.constructor.constructor.prototype.foo bar'.split(' ')); + t.equal(function () {}.foo, undefined); + t.equal(argv.y, undefined); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/short.js b/bff/node_modules/minimist/test/short.js new file mode 100644 index 0000000..4a7b843 --- /dev/null +++ b/bff/node_modules/minimist/test/short.js @@ -0,0 +1,69 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('numeric short args', function (t) { + t.plan(2); + t.deepEqual(parse(['-n123']), { n: 123, _: [] }); + t.deepEqual( + parse(['-123', '456']), + { 1: true, 2: true, 3: 456, _: [] } + ); +}); + +test('short', function (t) { + t.deepEqual( + parse(['-b']), + { b: true, _: [] }, + 'short boolean' + ); + t.deepEqual( + parse(['foo', 'bar', 'baz']), + { _: ['foo', 'bar', 'baz'] }, + 'bare' + ); + t.deepEqual( + parse(['-cats']), + { c: true, a: true, t: true, s: true, _: [] }, + 'group' + ); + t.deepEqual( + parse(['-cats', 'meow']), + { c: true, a: true, t: true, s: 'meow', _: [] }, + 'short group next' + ); + t.deepEqual( + parse(['-h', 'localhost']), + { h: 'localhost', _: [] }, + 'short capture' + ); + t.deepEqual( + parse(['-h', 'localhost', '-p', '555']), + { h: 'localhost', p: 555, _: [] }, + 'short captures' + ); + t.end(); +}); + +test('mixed short bool and capture', function (t) { + t.same( + parse(['-h', 'localhost', '-fp', '555', 'script.js']), + { + f: true, p: 555, h: 'localhost', + _: ['script.js'], + } + ); + t.end(); +}); + +test('short and long', function (t) { + t.deepEqual( + parse(['-h', 'localhost', '-fp', '555', 'script.js']), + { + f: true, p: 555, h: 'localhost', + _: ['script.js'], + } + ); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/stop_early.js b/bff/node_modules/minimist/test/stop_early.js new file mode 100644 index 0000000..52a6a91 --- /dev/null +++ b/bff/node_modules/minimist/test/stop_early.js @@ -0,0 +1,17 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('stops parsing on the first non-option when stopEarly is set', function (t) { + var argv = parse(['--aaa', 'bbb', 'ccc', '--ddd'], { + stopEarly: true, + }); + + t.deepEqual(argv, { + aaa: 'bbb', + _: ['ccc', '--ddd'], + }); + + t.end(); +}); diff --git a/bff/node_modules/minimist/test/unknown.js b/bff/node_modules/minimist/test/unknown.js new file mode 100644 index 0000000..4f2e0ca --- /dev/null +++ b/bff/node_modules/minimist/test/unknown.js @@ -0,0 +1,104 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('boolean and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['-h', 'true', '--derp', 'true']; + var regular = ['--herp', 'true', '-d', 'true']; + var opts = { + alias: { h: 'herp' }, + boolean: 'h', + unknown: unknownFn, + }; + parse(aliased, opts); + parse(regular, opts); + + t.same(unknown, ['--derp', '-d']); + t.end(); +}); + +test('flag boolean true any double hyphen argument is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var argv = parse(['--honk', '--tacos=good', 'cow', '-p', '55'], { + boolean: true, + unknown: unknownFn, + }); + t.same(unknown, ['--tacos=good', 'cow', '-p']); + t.same(argv, { + honk: true, + _: [], + }); + t.end(); +}); + +test('string and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['-h', 'hello', '--derp', 'goodbye']; + var regular = ['--herp', 'hello', '-d', 'moon']; + var opts = { + alias: { h: 'herp' }, + string: 'h', + unknown: unknownFn, + }; + parse(aliased, opts); + parse(regular, opts); + + t.same(unknown, ['--derp', '-d']); + t.end(); +}); + +test('default and alias is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['-h', 'hello']; + var regular = ['--herp', 'hello']; + var opts = { + default: { h: 'bar' }, + alias: { h: 'herp' }, + unknown: unknownFn, + }; + parse(aliased, opts); + parse(regular, opts); + + t.same(unknown, []); + t.end(); + unknownFn(); // exercise fn for 100% coverage +}); + +test('value following -- is not unknown', function (t) { + var unknown = []; + function unknownFn(arg) { + unknown.push(arg); + return false; + } + var aliased = ['--bad', '--', 'good', 'arg']; + var opts = { + '--': true, + unknown: unknownFn, + }; + var argv = parse(aliased, opts); + + t.same(unknown, ['--bad']); + t.same(argv, { + '--': ['good', 'arg'], + _: [], + }); + t.end(); +}); diff --git a/bff/node_modules/minimist/test/whitespace.js b/bff/node_modules/minimist/test/whitespace.js new file mode 100644 index 0000000..4fdaf1d --- /dev/null +++ b/bff/node_modules/minimist/test/whitespace.js @@ -0,0 +1,10 @@ +'use strict'; + +var parse = require('../'); +var test = require('tape'); + +test('whitespace should be whitespace', function (t) { + t.plan(1); + var x = parse(['-x', '\t']).x; + t.equal(x, '\t'); +}); diff --git a/bff/node_modules/mkdirp/LICENSE b/bff/node_modules/mkdirp/LICENSE new file mode 100644 index 0000000..432d1ae --- /dev/null +++ b/bff/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright 2010 James Halliday (mail@substack.net) + +This project is free software released under the MIT/X11 license: + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/mkdirp/bin/cmd.js b/bff/node_modules/mkdirp/bin/cmd.js new file mode 100755 index 0000000..d95de15 --- /dev/null +++ b/bff/node_modules/mkdirp/bin/cmd.js @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +var mkdirp = require('../'); +var minimist = require('minimist'); +var fs = require('fs'); + +var argv = minimist(process.argv.slice(2), { + alias: { m: 'mode', h: 'help' }, + string: [ 'mode' ] +}); +if (argv.help) { + fs.createReadStream(__dirname + '/usage.txt').pipe(process.stdout); + return; +} + +var paths = argv._.slice(); +var mode = argv.mode ? parseInt(argv.mode, 8) : undefined; + +(function next () { + if (paths.length === 0) return; + var p = paths.shift(); + + if (mode === undefined) mkdirp(p, cb) + else mkdirp(p, mode, cb) + + function cb (err) { + if (err) { + console.error(err.message); + process.exit(1); + } + else next(); + } +})(); diff --git a/bff/node_modules/mkdirp/bin/usage.txt b/bff/node_modules/mkdirp/bin/usage.txt new file mode 100644 index 0000000..f952aa2 --- /dev/null +++ b/bff/node_modules/mkdirp/bin/usage.txt @@ -0,0 +1,12 @@ +usage: mkdirp [DIR1,DIR2..] {OPTIONS} + + Create each supplied directory including any necessary parent directories that + don't yet exist. + + If the directory already exists, do nothing. + +OPTIONS are: + + -m, --mode If a directory needs to be created, set the mode as an octal + permission string. + diff --git a/bff/node_modules/mkdirp/index.js b/bff/node_modules/mkdirp/index.js new file mode 100644 index 0000000..0890ac3 --- /dev/null +++ b/bff/node_modules/mkdirp/index.js @@ -0,0 +1,102 @@ +var path = require('path'); +var fs = require('fs'); +var _0777 = parseInt('0777', 8); + +module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; + +function mkdirP (p, opts, f, made) { + if (typeof opts === 'function') { + f = opts; + opts = {}; + } + else if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 + } + if (!made) made = null; + + var cb = f || /* istanbul ignore next */ function () {}; + p = path.resolve(p); + + xfs.mkdir(p, mode, function (er) { + if (!er) { + made = made || p; + return cb(null, made); + } + switch (er.code) { + case 'ENOENT': + /* istanbul ignore if */ + if (path.dirname(p) === p) return cb(er); + mkdirP(path.dirname(p), opts, function (er, made) { + /* istanbul ignore if */ + if (er) cb(er, made); + else mkdirP(p, opts, cb, made); + }); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, function (er2, stat) { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) cb(er, made) + else cb(null, made); + }); + break; + } + }); +} + +mkdirP.sync = function sync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts }; + } + + var mode = opts.mode; + var xfs = opts.fs || fs; + + if (mode === undefined) { + mode = _0777 + } + if (!made) made = null; + + p = path.resolve(p); + + try { + xfs.mkdirSync(p, mode); + made = made || p; + } + catch (err0) { + switch (err0.code) { + case 'ENOENT' : + made = sync(path.dirname(p), opts, made); + sync(p, opts, made); + break; + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + var stat; + try { + stat = xfs.statSync(p); + } + catch (err1) /* istanbul ignore next */ { + throw err0; + } + /* istanbul ignore if */ + if (!stat.isDirectory()) throw err0; + break; + } + } + + return made; +}; diff --git a/bff/node_modules/mkdirp/package.json b/bff/node_modules/mkdirp/package.json new file mode 100644 index 0000000..951e58d --- /dev/null +++ b/bff/node_modules/mkdirp/package.json @@ -0,0 +1,33 @@ +{ + "name": "mkdirp", + "description": "Recursively mkdir, like `mkdir -p`", + "version": "0.5.6", + "publishConfig": { + "tag": "legacy" + }, + "author": "James Halliday (http://substack.net)", + "main": "index.js", + "keywords": [ + "mkdir", + "directory" + ], + "repository": { + "type": "git", + "url": "https://github.com/substack/node-mkdirp.git" + }, + "scripts": { + "test": "tap test/*.js" + }, + "dependencies": { + "minimist": "^1.2.6" + }, + "devDependencies": { + "tap": "^16.0.1" + }, + "bin": "bin/cmd.js", + "license": "MIT", + "files": [ + "bin", + "index.js" + ] +} diff --git a/bff/node_modules/mkdirp/readme.markdown b/bff/node_modules/mkdirp/readme.markdown new file mode 100644 index 0000000..fc314bf --- /dev/null +++ b/bff/node_modules/mkdirp/readme.markdown @@ -0,0 +1,100 @@ +# mkdirp + +Like `mkdir -p`, but in node.js! + +[![build status](https://secure.travis-ci.org/substack/node-mkdirp.png)](http://travis-ci.org/substack/node-mkdirp) + +# example + +## pow.js + +```js +var mkdirp = require('mkdirp'); + +mkdirp('/tmp/foo/bar/baz', function (err) { + if (err) console.error(err) + else console.log('pow!') +}); +``` + +Output + +``` +pow! +``` + +And now /tmp/foo/bar/baz exists, huzzah! + +# methods + +```js +var mkdirp = require('mkdirp'); +``` + +## mkdirp(dir, opts, cb) + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `opts.mode`. If `opts` is a non-object, it will be treated as +the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0777`. + +`cb(err, made)` fires with the error or the first directory `made` +that had to be created, if any. + +You can optionally pass in an alternate `fs` implementation by passing in +`opts.fs`. Your implementation should have `opts.fs.mkdir(path, mode, cb)` and +`opts.fs.stat(path, cb)`. + +## mkdirp.sync(dir, opts) + +Synchronously create a new directory and any necessary subdirectories at `dir` +with octal permission string `opts.mode`. If `opts` is a non-object, it will be +treated as the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0777`. + +Returns the first directory that had to be created, if any. + +You can optionally pass in an alternate `fs` implementation by passing in +`opts.fs`. Your implementation should have `opts.fs.mkdirSync(path, mode)` and +`opts.fs.statSync(path)`. + +# usage + +This package also ships with a `mkdirp` command. + +``` +usage: mkdirp [DIR1,DIR2..] {OPTIONS} + + Create each supplied directory including any necessary parent directories that + don't yet exist. + + If the directory already exists, do nothing. + +OPTIONS are: + + -m, --mode If a directory needs to be created, set the mode as an octal + permission string. + +``` + +# install + +With [npm](http://npmjs.org) do: + +``` +npm install mkdirp +``` + +to get the library, or + +``` +npm install -g mkdirp +``` + +to get the command. + +# license + +MIT diff --git a/bff/node_modules/ms/index.js b/bff/node_modules/ms/index.js new file mode 100644 index 0000000..ea734fb --- /dev/null +++ b/bff/node_modules/ms/index.js @@ -0,0 +1,162 @@ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function (val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} diff --git a/bff/node_modules/ms/license.md b/bff/node_modules/ms/license.md new file mode 100644 index 0000000..fa5d39b --- /dev/null +++ b/bff/node_modules/ms/license.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2020 Vercel, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/ms/package.json b/bff/node_modules/ms/package.json new file mode 100644 index 0000000..4997189 --- /dev/null +++ b/bff/node_modules/ms/package.json @@ -0,0 +1,38 @@ +{ + "name": "ms", + "version": "2.1.3", + "description": "Tiny millisecond conversion utility", + "repository": "vercel/ms", + "main": "./index", + "files": [ + "index.js" + ], + "scripts": { + "precommit": "lint-staged", + "lint": "eslint lib/* bin/*", + "test": "mocha tests.js" + }, + "eslintConfig": { + "extends": "eslint:recommended", + "env": { + "node": true, + "es6": true + } + }, + "lint-staged": { + "*.js": [ + "npm run lint", + "prettier --single-quote --write", + "git add" + ] + }, + "license": "MIT", + "devDependencies": { + "eslint": "4.18.2", + "expect.js": "0.3.1", + "husky": "0.14.3", + "lint-staged": "5.0.0", + "mocha": "4.0.1", + "prettier": "2.0.5" + } +} diff --git a/bff/node_modules/ms/readme.md b/bff/node_modules/ms/readme.md new file mode 100644 index 0000000..0fc1abb --- /dev/null +++ b/bff/node_modules/ms/readme.md @@ -0,0 +1,59 @@ +# ms + +![CI](https://github.com/vercel/ms/workflows/CI/badge.svg) + +Use this package to easily convert various time formats to milliseconds. + +## Examples + +```js +ms('2 days') // 172800000 +ms('1d') // 86400000 +ms('10h') // 36000000 +ms('2.5 hrs') // 9000000 +ms('2h') // 7200000 +ms('1m') // 60000 +ms('5s') // 5000 +ms('1y') // 31557600000 +ms('100') // 100 +ms('-3 days') // -259200000 +ms('-1h') // -3600000 +ms('-200') // -200 +``` + +### Convert from Milliseconds + +```js +ms(60000) // "1m" +ms(2 * 60000) // "2m" +ms(-3 * 60000) // "-3m" +ms(ms('10 hours')) // "10h" +``` + +### Time Format Written-Out + +```js +ms(60000, { long: true }) // "1 minute" +ms(2 * 60000, { long: true }) // "2 minutes" +ms(-3 * 60000, { long: true }) // "-3 minutes" +ms(ms('10 hours'), { long: true }) // "10 hours" +``` + +## Features + +- Works both in [Node.js](https://nodejs.org) and in the browser +- If a number is supplied to `ms`, a string with a unit is returned +- If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`) +- If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned + +## Related Packages + +- [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time. + +## Caught a Bug? + +1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device +2. Link the package to the global module directory: `npm link` +3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms! + +As always, you can run the tests using: `npm test` diff --git a/bff/node_modules/multer/LICENSE b/bff/node_modules/multer/LICENSE new file mode 100644 index 0000000..6c011b1 --- /dev/null +++ b/bff/node_modules/multer/LICENSE @@ -0,0 +1,17 @@ +Copyright (c) 2014 Hage Yaapa <[http://www.hacksparrow.com](http://www.hacksparrow.com)> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/multer/README.md b/bff/node_modules/multer/README.md new file mode 100644 index 0000000..7f5d080 --- /dev/null +++ b/bff/node_modules/multer/README.md @@ -0,0 +1,333 @@ +# Multer [![Build Status](https://travis-ci.org/expressjs/multer.svg?branch=master)](https://travis-ci.org/expressjs/multer) [![NPM version](https://badge.fury.io/js/multer.svg)](https://badge.fury.io/js/multer) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://github.com/feross/standard) + +Multer is a node.js middleware for handling `multipart/form-data`, which is primarily used for uploading files. It is written +on top of [busboy](https://github.com/mscdex/busboy) for maximum efficiency. + +**NOTE**: Multer will not process any form which is not multipart (`multipart/form-data`). + +## Translations + +This README is also available in other languages: + +- [Español](https://github.com/expressjs/multer/blob/master/doc/README-es.md) (Spanish) +- [简体中文](https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md) (Chinese) +- [한국어](https://github.com/expressjs/multer/blob/master/doc/README-ko.md) (Korean) +- [Русский язык](https://github.com/expressjs/multer/blob/master/doc/README-ru.md) (Russian) +- [Việt Nam](https://github.com/expressjs/multer/blob/master/doc/README-vi.md) (Vietnam) +- [Português](https://github.com/expressjs/multer/blob/master/doc/README-pt-br.md) (Portuguese Brazil) + +## Installation + +```sh +$ npm install --save multer +``` + +## Usage + +Multer adds a `body` object and a `file` or `files` object to the `request` object. The `body` object contains the values of the text fields of the form, the `file` or `files` object contains the files uploaded via the form. + +Basic usage example: + +Don't forget the `enctype="multipart/form-data"` in your form. + +```html +
+ +
+``` + +```javascript +const express = require('express') +const multer = require('multer') +const upload = multer({ dest: 'uploads/' }) + +const app = express() + +app.post('/profile', upload.single('avatar'), function (req, res, next) { + // req.file is the `avatar` file + // req.body will hold the text fields, if there were any +}) + +app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) { + // req.files is array of `photos` files + // req.body will contain the text fields, if there were any +}) + +const cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }]) +app.post('/cool-profile', cpUpload, function (req, res, next) { + // req.files is an object (String -> Array) where fieldname is the key, and the value is array of files + // + // e.g. + // req.files['avatar'][0] -> File + // req.files['gallery'] -> Array + // + // req.body will contain the text fields, if there were any +}) +``` + +In case you need to handle a text-only multipart form, you should use the `.none()` method: + +```javascript +const express = require('express') +const app = express() +const multer = require('multer') +const upload = multer() + +app.post('/profile', upload.none(), function (req, res, next) { + // req.body contains the text fields +}) +``` + +Here's an example on how multer is used an HTML form. Take special note of the `enctype="multipart/form-data"` and `name="uploaded_file"` fields: + +```html +
+
+ + + +
+
+``` + +Then in your javascript file you would add these lines to access both the file and the body. It is important that you use the `name` field value from the form in your upload function. This tells multer which field on the request it should look for the files in. If these fields aren't the same in the HTML form and on your server, your upload will fail: + +```javascript +const multer = require('multer') +const upload = multer({ dest: './public/data/uploads/' }) +app.post('/stats', upload.single('uploaded_file'), function (req, res) { + // req.file is the name of your file in the form above, here 'uploaded_file' + // req.body will hold the text fields, if there were any + console.log(req.file, req.body) +}); +``` + + + +## API + +### File information + +Each file contains the following information: + +Key | Description | Note +--- | --- | --- +`fieldname` | Field name specified in the form | +`originalname` | Name of the file on the user's computer | +`encoding` | Encoding type of the file | +`mimetype` | Mime type of the file | +`size` | Size of the file in bytes | +`destination` | The folder to which the file has been saved | `DiskStorage` +`filename` | The name of the file within the `destination` | `DiskStorage` +`path` | The full path to the uploaded file | `DiskStorage` +`buffer` | A `Buffer` of the entire file | `MemoryStorage` + +### `multer(opts)` + +Multer accepts an options object, the most basic of which is the `dest` +property, which tells Multer where to upload the files. In case you omit the +options object, the files will be kept in memory and never written to disk. + +By default, Multer will rename the files so as to avoid naming conflicts. The +renaming function can be customized according to your needs. + +The following are the options that can be passed to Multer. + +Key | Description +--- | --- +`dest` or `storage` | Where to store the files +`fileFilter` | Function to control which files are accepted +`limits` | Limits of the uploaded data +`preservePath` | Keep the full path of files instead of just the base name + +In an average web app, only `dest` might be required, and configured as shown in +the following example. + +```javascript +const upload = multer({ dest: 'uploads/' }) +``` + +If you want more control over your uploads, you'll want to use the `storage` +option instead of `dest`. Multer ships with storage engines `DiskStorage` +and `MemoryStorage`; More engines are available from third parties. + +#### `.single(fieldname)` + +Accept a single file with the name `fieldname`. The single file will be stored +in `req.file`. + +#### `.array(fieldname[, maxCount])` + +Accept an array of files, all with the name `fieldname`. Optionally error out if +more than `maxCount` files are uploaded. The array of files will be stored in +`req.files`. + +#### `.fields(fields)` + +Accept a mix of files, specified by `fields`. An object with arrays of files +will be stored in `req.files`. + +`fields` should be an array of objects with `name` and optionally a `maxCount`. +Example: + +```javascript +[ + { name: 'avatar', maxCount: 1 }, + { name: 'gallery', maxCount: 8 } +] +``` + +#### `.none()` + +Accept only text fields. If any file upload is made, error with code +"LIMIT\_UNEXPECTED\_FILE" will be issued. + +#### `.any()` + +Accepts all files that comes over the wire. An array of files will be stored in +`req.files`. + +**WARNING:** Make sure that you always handle the files that a user uploads. +Never add multer as a global middleware since a malicious user could upload +files to a route that you didn't anticipate. Only use this function on routes +where you are handling the uploaded files. + +### `storage` + +#### `DiskStorage` + +The disk storage engine gives you full control on storing files to disk. + +```javascript +const storage = multer.diskStorage({ + destination: function (req, file, cb) { + cb(null, '/tmp/my-uploads') + }, + filename: function (req, file, cb) { + const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9) + cb(null, file.fieldname + '-' + uniqueSuffix) + } +}) + +const upload = multer({ storage: storage }) +``` + +There are two options available, `destination` and `filename`. They are both +functions that determine where the file should be stored. + +`destination` is used to determine within which folder the uploaded files should +be stored. This can also be given as a `string` (e.g. `'/tmp/uploads'`). If no +`destination` is given, the operating system's default directory for temporary +files is used. + +**Note:** You are responsible for creating the directory when providing +`destination` as a function. When passing a string, multer will make sure that +the directory is created for you. + +`filename` is used to determine what the file should be named inside the folder. +If no `filename` is given, each file will be given a random name that doesn't +include any file extension. + +**Note:** Multer will not append any file extension for you, your function +should return a filename complete with an file extension. + +Each function gets passed both the request (`req`) and some information about +the file (`file`) to aid with the decision. + +Note that `req.body` might not have been fully populated yet. It depends on the +order that the client transmits fields and files to the server. + +For understanding the calling convention used in the callback (needing to pass +null as the first param), refer to +[Node.js error handling](https://www.joyent.com/node-js/production/design/errors) + +#### `MemoryStorage` + +The memory storage engine stores the files in memory as `Buffer` objects. It +doesn't have any options. + +```javascript +const storage = multer.memoryStorage() +const upload = multer({ storage: storage }) +``` + +When using memory storage, the file info will contain a field called +`buffer` that contains the entire file. + +**WARNING**: Uploading very large files, or relatively small files in large +numbers very quickly, can cause your application to run out of memory when +memory storage is used. + +### `limits` + +An object specifying the size limits of the following optional properties. Multer passes this object into busboy directly, and the details of the properties can be found on [busboy's page](https://github.com/mscdex/busboy#busboy-methods). + +The following integer values are available: + +Key | Description | Default +--- | --- | --- +`fieldNameSize` | Max field name size | 100 bytes +`fieldSize` | Max field value size (in bytes) | 1MB +`fields` | Max number of non-file fields | Infinity +`fileSize` | For multipart forms, the max file size (in bytes) | Infinity +`files` | For multipart forms, the max number of file fields | Infinity +`parts` | For multipart forms, the max number of parts (fields + files) | Infinity +`headerPairs` | For multipart forms, the max number of header key=>value pairs to parse | 2000 + +Specifying the limits can help protect your site against denial of service (DoS) attacks. + +### `fileFilter` + +Set this to a function to control which files should be uploaded and which +should be skipped. The function should look like this: + +```javascript +function fileFilter (req, file, cb) { + + // The function should call `cb` with a boolean + // to indicate if the file should be accepted + + // To reject this file pass `false`, like so: + cb(null, false) + + // To accept the file pass `true`, like so: + cb(null, true) + + // You can always pass an error if something goes wrong: + cb(new Error('I don\'t have a clue!')) + +} +``` + +## Error handling + +When encountering an error, Multer will delegate the error to Express. You can +display a nice error page using [the standard express way](http://expressjs.com/guide/error-handling.html). + +If you want to catch errors specifically from Multer, you can call the +middleware function by yourself. Also, if you want to catch only [the Multer errors](https://github.com/expressjs/multer/blob/master/lib/multer-error.js), you can use the `MulterError` class that is attached to the `multer` object itself (e.g. `err instanceof multer.MulterError`). + +```javascript +const multer = require('multer') +const upload = multer().single('avatar') + +app.post('/profile', function (req, res) { + upload(req, res, function (err) { + if (err instanceof multer.MulterError) { + // A Multer error occurred when uploading. + } else if (err) { + // An unknown error occurred when uploading. + } + + // Everything went fine. + }) +}) +``` + +## Custom storage engine + +For information on how to build your own storage engine, see [Multer Storage Engine](https://github.com/expressjs/multer/blob/master/StorageEngine.md). + +## License + +[MIT](LICENSE) diff --git a/bff/node_modules/multer/index.js b/bff/node_modules/multer/index.js new file mode 100644 index 0000000..d5b67eb --- /dev/null +++ b/bff/node_modules/multer/index.js @@ -0,0 +1,104 @@ +var makeMiddleware = require('./lib/make-middleware') + +var diskStorage = require('./storage/disk') +var memoryStorage = require('./storage/memory') +var MulterError = require('./lib/multer-error') + +function allowAll (req, file, cb) { + cb(null, true) +} + +function Multer (options) { + if (options.storage) { + this.storage = options.storage + } else if (options.dest) { + this.storage = diskStorage({ destination: options.dest }) + } else { + this.storage = memoryStorage() + } + + this.limits = options.limits + this.preservePath = options.preservePath + this.fileFilter = options.fileFilter || allowAll +} + +Multer.prototype._makeMiddleware = function (fields, fileStrategy) { + function setup () { + var fileFilter = this.fileFilter + var filesLeft = Object.create(null) + + fields.forEach(function (field) { + if (typeof field.maxCount === 'number') { + filesLeft[field.name] = field.maxCount + } else { + filesLeft[field.name] = Infinity + } + }) + + function wrappedFileFilter (req, file, cb) { + if ((filesLeft[file.fieldname] || 0) <= 0) { + return cb(new MulterError('LIMIT_UNEXPECTED_FILE', file.fieldname)) + } + + filesLeft[file.fieldname] -= 1 + fileFilter(req, file, cb) + } + + return { + limits: this.limits, + preservePath: this.preservePath, + storage: this.storage, + fileFilter: wrappedFileFilter, + fileStrategy: fileStrategy + } + } + + return makeMiddleware(setup.bind(this)) +} + +Multer.prototype.single = function (name) { + return this._makeMiddleware([{ name: name, maxCount: 1 }], 'VALUE') +} + +Multer.prototype.array = function (name, maxCount) { + return this._makeMiddleware([{ name: name, maxCount: maxCount }], 'ARRAY') +} + +Multer.prototype.fields = function (fields) { + return this._makeMiddleware(fields, 'OBJECT') +} + +Multer.prototype.none = function () { + return this._makeMiddleware([], 'NONE') +} + +Multer.prototype.any = function () { + function setup () { + return { + limits: this.limits, + preservePath: this.preservePath, + storage: this.storage, + fileFilter: this.fileFilter, + fileStrategy: 'ARRAY' + } + } + + return makeMiddleware(setup.bind(this)) +} + +function multer (options) { + if (options === undefined) { + return new Multer({}) + } + + if (typeof options === 'object' && options !== null) { + return new Multer(options) + } + + throw new TypeError('Expected object for argument options') +} + +module.exports = multer +module.exports.diskStorage = diskStorage +module.exports.memoryStorage = memoryStorage +module.exports.MulterError = MulterError diff --git a/bff/node_modules/multer/lib/counter.js b/bff/node_modules/multer/lib/counter.js new file mode 100644 index 0000000..29c410c --- /dev/null +++ b/bff/node_modules/multer/lib/counter.js @@ -0,0 +1,28 @@ +var EventEmitter = require('events').EventEmitter + +function Counter () { + EventEmitter.call(this) + this.value = 0 +} + +Counter.prototype = Object.create(EventEmitter.prototype) + +Counter.prototype.increment = function increment () { + this.value++ +} + +Counter.prototype.decrement = function decrement () { + if (--this.value === 0) this.emit('zero') +} + +Counter.prototype.isZero = function isZero () { + return (this.value === 0) +} + +Counter.prototype.onceZero = function onceZero (fn) { + if (this.isZero()) return fn() + + this.once('zero', fn) +} + +module.exports = Counter diff --git a/bff/node_modules/multer/lib/file-appender.js b/bff/node_modules/multer/lib/file-appender.js new file mode 100644 index 0000000..1a2c5e7 --- /dev/null +++ b/bff/node_modules/multer/lib/file-appender.js @@ -0,0 +1,67 @@ +var objectAssign = require('object-assign') + +function arrayRemove (arr, item) { + var idx = arr.indexOf(item) + if (~idx) arr.splice(idx, 1) +} + +function FileAppender (strategy, req) { + this.strategy = strategy + this.req = req + + switch (strategy) { + case 'NONE': break + case 'VALUE': break + case 'ARRAY': req.files = []; break + case 'OBJECT': req.files = Object.create(null); break + default: throw new Error('Unknown file strategy: ' + strategy) + } +} + +FileAppender.prototype.insertPlaceholder = function (file) { + var placeholder = { + fieldname: file.fieldname + } + + switch (this.strategy) { + case 'NONE': break + case 'VALUE': break + case 'ARRAY': this.req.files.push(placeholder); break + case 'OBJECT': + if (this.req.files[file.fieldname]) { + this.req.files[file.fieldname].push(placeholder) + } else { + this.req.files[file.fieldname] = [placeholder] + } + break + } + + return placeholder +} + +FileAppender.prototype.removePlaceholder = function (placeholder) { + switch (this.strategy) { + case 'NONE': break + case 'VALUE': break + case 'ARRAY': arrayRemove(this.req.files, placeholder); break + case 'OBJECT': + if (this.req.files[placeholder.fieldname].length === 1) { + delete this.req.files[placeholder.fieldname] + } else { + arrayRemove(this.req.files[placeholder.fieldname], placeholder) + } + break + } +} + +FileAppender.prototype.replacePlaceholder = function (placeholder, file) { + if (this.strategy === 'VALUE') { + this.req.file = file + return + } + + delete placeholder.fieldname + objectAssign(placeholder, file) +} + +module.exports = FileAppender diff --git a/bff/node_modules/multer/lib/make-middleware.js b/bff/node_modules/multer/lib/make-middleware.js new file mode 100644 index 0000000..cc26414 --- /dev/null +++ b/bff/node_modules/multer/lib/make-middleware.js @@ -0,0 +1,175 @@ +var is = require('type-is') +var Busboy = require('busboy') +var extend = require('xtend') +var appendField = require('append-field') + +var Counter = require('./counter') +var MulterError = require('./multer-error') +var FileAppender = require('./file-appender') +var removeUploadedFiles = require('./remove-uploaded-files') + +function makeMiddleware (setup) { + return function multerMiddleware (req, res, next) { + if (!is(req, ['multipart'])) return next() + + var options = setup() + + var limits = options.limits + var storage = options.storage + var fileFilter = options.fileFilter + var fileStrategy = options.fileStrategy + var preservePath = options.preservePath + + req.body = Object.create(null) + + var busboy + + try { + busboy = Busboy({ headers: req.headers, limits: limits, preservePath: preservePath }) + } catch (err) { + return next(err) + } + + var appender = new FileAppender(fileStrategy, req) + var isDone = false + var readFinished = false + var errorOccured = false + var pendingWrites = new Counter() + var uploadedFiles = [] + + function done (err) { + if (isDone) return + isDone = true + req.unpipe(busboy) + process.nextTick(() => { + busboy.removeAllListeners() + }) + next(err) + } + + function indicateDone () { + if (readFinished && pendingWrites.isZero() && !errorOccured) done() + } + + function abortWithError (uploadError) { + if (errorOccured) return + errorOccured = true + + pendingWrites.onceZero(function () { + function remove (file, cb) { + storage._removeFile(req, file, cb) + } + + removeUploadedFiles(uploadedFiles, remove, function (err, storageErrors) { + if (err) return done(err) + + uploadError.storageErrors = storageErrors + done(uploadError) + }) + }) + } + + function abortWithCode (code, optionalField) { + abortWithError(new MulterError(code, optionalField)) + } + + // handle text field data + busboy.on('field', function (fieldname, value, { nameTruncated, valueTruncated }) { + if (fieldname == null) return abortWithCode('MISSING_FIELD_NAME') + if (nameTruncated) return abortWithCode('LIMIT_FIELD_KEY') + if (valueTruncated) return abortWithCode('LIMIT_FIELD_VALUE', fieldname) + + // Work around bug in Busboy (https://github.com/mscdex/busboy/issues/6) + if (limits && Object.prototype.hasOwnProperty.call(limits, 'fieldNameSize')) { + if (fieldname.length > limits.fieldNameSize) return abortWithCode('LIMIT_FIELD_KEY') + } + + appendField(req.body, fieldname, value) + }) + + // handle files + busboy.on('file', function (fieldname, fileStream, { filename, encoding, mimeType }) { + // don't attach to the files object, if there is no file + if (!filename) return fileStream.resume() + + // Work around bug in Busboy (https://github.com/mscdex/busboy/issues/6) + if (limits && Object.prototype.hasOwnProperty.call(limits, 'fieldNameSize')) { + if (fieldname.length > limits.fieldNameSize) return abortWithCode('LIMIT_FIELD_KEY') + } + + var file = { + fieldname: fieldname, + originalname: filename, + encoding: encoding, + mimetype: mimeType + } + + var placeholder = appender.insertPlaceholder(file) + + fileFilter(req, file, function (err, includeFile) { + if (err) { + appender.removePlaceholder(placeholder) + return abortWithError(err) + } + + if (!includeFile) { + appender.removePlaceholder(placeholder) + return fileStream.resume() + } + + var aborting = false + pendingWrites.increment() + + Object.defineProperty(file, 'stream', { + configurable: true, + enumerable: false, + value: fileStream + }) + + fileStream.on('error', function (err) { + pendingWrites.decrement() + abortWithError(err) + }) + + fileStream.on('limit', function () { + aborting = true + abortWithCode('LIMIT_FILE_SIZE', fieldname) + }) + + storage._handleFile(req, file, function (err, info) { + if (aborting) { + appender.removePlaceholder(placeholder) + uploadedFiles.push(extend(file, info)) + return pendingWrites.decrement() + } + + if (err) { + appender.removePlaceholder(placeholder) + pendingWrites.decrement() + return abortWithError(err) + } + + var fileInfo = extend(file, info) + + appender.replacePlaceholder(placeholder, fileInfo) + uploadedFiles.push(fileInfo) + pendingWrites.decrement() + indicateDone() + }) + }) + }) + + busboy.on('error', function (err) { abortWithError(err) }) + busboy.on('partsLimit', function () { abortWithCode('LIMIT_PART_COUNT') }) + busboy.on('filesLimit', function () { abortWithCode('LIMIT_FILE_COUNT') }) + busboy.on('fieldsLimit', function () { abortWithCode('LIMIT_FIELD_COUNT') }) + busboy.on('close', function () { + readFinished = true + indicateDone() + }) + + req.pipe(busboy) + } +} + +module.exports = makeMiddleware diff --git a/bff/node_modules/multer/lib/multer-error.js b/bff/node_modules/multer/lib/multer-error.js new file mode 100644 index 0000000..d56b00e --- /dev/null +++ b/bff/node_modules/multer/lib/multer-error.js @@ -0,0 +1,24 @@ +var util = require('util') + +var errorMessages = { + LIMIT_PART_COUNT: 'Too many parts', + LIMIT_FILE_SIZE: 'File too large', + LIMIT_FILE_COUNT: 'Too many files', + LIMIT_FIELD_KEY: 'Field name too long', + LIMIT_FIELD_VALUE: 'Field value too long', + LIMIT_FIELD_COUNT: 'Too many fields', + LIMIT_UNEXPECTED_FILE: 'Unexpected field', + MISSING_FIELD_NAME: 'Field name missing' +} + +function MulterError (code, field) { + Error.captureStackTrace(this, this.constructor) + this.name = this.constructor.name + this.message = errorMessages[code] + this.code = code + if (field) this.field = field +} + +util.inherits(MulterError, Error) + +module.exports = MulterError diff --git a/bff/node_modules/multer/lib/remove-uploaded-files.js b/bff/node_modules/multer/lib/remove-uploaded-files.js new file mode 100644 index 0000000..f0b16ea --- /dev/null +++ b/bff/node_modules/multer/lib/remove-uploaded-files.js @@ -0,0 +1,28 @@ +function removeUploadedFiles (uploadedFiles, remove, cb) { + var length = uploadedFiles.length + var errors = [] + + if (length === 0) return cb(null, errors) + + function handleFile (idx) { + var file = uploadedFiles[idx] + + remove(file, function (err) { + if (err) { + err.file = file + err.field = file.fieldname + errors.push(err) + } + + if (idx < length - 1) { + handleFile(idx + 1) + } else { + cb(null, errors) + } + }) + } + + handleFile(0) +} + +module.exports = removeUploadedFiles diff --git a/bff/node_modules/multer/node_modules/media-typer/HISTORY.md b/bff/node_modules/multer/node_modules/media-typer/HISTORY.md new file mode 100644 index 0000000..62c2003 --- /dev/null +++ b/bff/node_modules/multer/node_modules/media-typer/HISTORY.md @@ -0,0 +1,22 @@ +0.3.0 / 2014-09-07 +================== + + * Support Node.js 0.6 + * Throw error when parameter format invalid on parse + +0.2.0 / 2014-06-18 +================== + + * Add `typer.format()` to format media types + +0.1.0 / 2014-06-17 +================== + + * Accept `req` as argument to `parse` + * Accept `res` as argument to `parse` + * Parse media type with extra LWS between type and first parameter + +0.0.0 / 2014-06-13 +================== + + * Initial implementation diff --git a/bff/node_modules/multer/node_modules/media-typer/LICENSE b/bff/node_modules/multer/node_modules/media-typer/LICENSE new file mode 100644 index 0000000..b7dce6c --- /dev/null +++ b/bff/node_modules/multer/node_modules/media-typer/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/multer/node_modules/media-typer/README.md b/bff/node_modules/multer/node_modules/media-typer/README.md new file mode 100644 index 0000000..d8df623 --- /dev/null +++ b/bff/node_modules/multer/node_modules/media-typer/README.md @@ -0,0 +1,81 @@ +# media-typer + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Simple RFC 6838 media type parser + +## Installation + +```sh +$ npm install media-typer +``` + +## API + +```js +var typer = require('media-typer') +``` + +### typer.parse(string) + +```js +var obj = typer.parse('image/svg+xml; charset=utf-8') +``` + +Parse a media type string. This will return an object with the following +properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): + + - `type`: The type of the media type (always lower case). Example: `'image'` + + - `subtype`: The subtype of the media type (always lower case). Example: `'svg'` + + - `suffix`: The suffix of the media type (always lower case). Example: `'xml'` + + - `parameters`: An object of the parameters in the media type (name of parameter always lower case). Example: `{charset: 'utf-8'}` + +### typer.parse(req) + +```js +var obj = typer.parse(req) +``` + +Parse the `content-type` header from the given `req`. Short-cut for +`typer.parse(req.headers['content-type'])`. + +### typer.parse(res) + +```js +var obj = typer.parse(res) +``` + +Parse the `content-type` header set on the given `res`. Short-cut for +`typer.parse(res.getHeader('content-type'))`. + +### typer.format(obj) + +```js +var obj = typer.format({type: 'image', subtype: 'svg', suffix: 'xml'}) +``` + +Format an object into a media type string. This will return a string of the +mime type for the given object. For the properties of the object, see the +documentation for `typer.parse(string)`. + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/media-typer.svg?style=flat +[npm-url]: https://npmjs.org/package/media-typer +[node-version-image]: https://img.shields.io/badge/node.js-%3E%3D_0.6-brightgreen.svg?style=flat +[node-version-url]: http://nodejs.org/download/ +[travis-image]: https://img.shields.io/travis/jshttp/media-typer.svg?style=flat +[travis-url]: https://travis-ci.org/jshttp/media-typer +[coveralls-image]: https://img.shields.io/coveralls/jshttp/media-typer.svg?style=flat +[coveralls-url]: https://coveralls.io/r/jshttp/media-typer +[downloads-image]: https://img.shields.io/npm/dm/media-typer.svg?style=flat +[downloads-url]: https://npmjs.org/package/media-typer diff --git a/bff/node_modules/multer/node_modules/media-typer/index.js b/bff/node_modules/multer/node_modules/media-typer/index.js new file mode 100644 index 0000000..07f7295 --- /dev/null +++ b/bff/node_modules/multer/node_modules/media-typer/index.js @@ -0,0 +1,270 @@ +/*! + * media-typer + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * RegExp to match *( ";" parameter ) in RFC 2616 sec 3.7 + * + * parameter = token "=" ( token | quoted-string ) + * token = 1* + * separators = "(" | ")" | "<" | ">" | "@" + * | "," | ";" | ":" | "\" | <"> + * | "/" | "[" | "]" | "?" | "=" + * | "{" | "}" | SP | HT + * quoted-string = ( <"> *(qdtext | quoted-pair ) <"> ) + * qdtext = > + * quoted-pair = "\" CHAR + * CHAR = + * TEXT = + * LWS = [CRLF] 1*( SP | HT ) + * CRLF = CR LF + * CR = + * LF = + * SP = + * SHT = + * CTL = + * OCTET = + */ +var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g; +var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/ +var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/ + +/** + * RegExp to match quoted-pair in RFC 2616 + * + * quoted-pair = "\" CHAR + * CHAR = + */ +var qescRegExp = /\\([\u0000-\u007f])/g; + +/** + * RegExp to match chars that must be quoted-pair in RFC 2616 + */ +var quoteRegExp = /([\\"])/g; + +/** + * RegExp to match type in RFC 6838 + * + * type-name = restricted-name + * subtype-name = restricted-name + * restricted-name = restricted-name-first *126restricted-name-chars + * restricted-name-first = ALPHA / DIGIT + * restricted-name-chars = ALPHA / DIGIT / "!" / "#" / + * "$" / "&" / "-" / "^" / "_" + * restricted-name-chars =/ "." ; Characters before first dot always + * ; specify a facet name + * restricted-name-chars =/ "+" ; Characters after last plus always + * ; specify a structured syntax suffix + * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z + * DIGIT = %x30-39 ; 0-9 + */ +var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/ +var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/ +var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; + +/** + * Module exports. + */ + +exports.format = format +exports.parse = parse + +/** + * Format object to media type. + * + * @param {object} obj + * @return {string} + * @api public + */ + +function format(obj) { + if (!obj || typeof obj !== 'object') { + throw new TypeError('argument obj is required') + } + + var parameters = obj.parameters + var subtype = obj.subtype + var suffix = obj.suffix + var type = obj.type + + if (!type || !typeNameRegExp.test(type)) { + throw new TypeError('invalid type') + } + + if (!subtype || !subtypeNameRegExp.test(subtype)) { + throw new TypeError('invalid subtype') + } + + // format as type/subtype + var string = type + '/' + subtype + + // append +suffix + if (suffix) { + if (!typeNameRegExp.test(suffix)) { + throw new TypeError('invalid suffix') + } + + string += '+' + suffix + } + + // append parameters + if (parameters && typeof parameters === 'object') { + var param + var params = Object.keys(parameters).sort() + + for (var i = 0; i < params.length; i++) { + param = params[i] + + if (!tokenRegExp.test(param)) { + throw new TypeError('invalid parameter name') + } + + string += '; ' + param + '=' + qstring(parameters[param]) + } + } + + return string +} + +/** + * Parse media type to object. + * + * @param {string|object} string + * @return {Object} + * @api public + */ + +function parse(string) { + if (!string) { + throw new TypeError('argument string is required') + } + + // support req/res-like objects as argument + if (typeof string === 'object') { + string = getcontenttype(string) + } + + if (typeof string !== 'string') { + throw new TypeError('argument string is required to be a string') + } + + var index = string.indexOf(';') + var type = index !== -1 + ? string.substr(0, index) + : string + + var key + var match + var obj = splitType(type) + var params = {} + var value + + paramRegExp.lastIndex = index + + while (match = paramRegExp.exec(string)) { + if (match.index !== index) { + throw new TypeError('invalid parameter format') + } + + index += match[0].length + key = match[1].toLowerCase() + value = match[2] + + if (value[0] === '"') { + // remove quotes and escapes + value = value + .substr(1, value.length - 2) + .replace(qescRegExp, '$1') + } + + params[key] = value + } + + if (index !== -1 && index !== string.length) { + throw new TypeError('invalid parameter format') + } + + obj.parameters = params + + return obj +} + +/** + * Get content-type from req/res objects. + * + * @param {object} + * @return {Object} + * @api private + */ + +function getcontenttype(obj) { + if (typeof obj.getHeader === 'function') { + // res-like + return obj.getHeader('content-type') + } + + if (typeof obj.headers === 'object') { + // req-like + return obj.headers && obj.headers['content-type'] + } +} + +/** + * Quote a string if necessary. + * + * @param {string} val + * @return {string} + * @api private + */ + +function qstring(val) { + var str = String(val) + + // no need to quote tokens + if (tokenRegExp.test(str)) { + return str + } + + if (str.length > 0 && !textRegExp.test(str)) { + throw new TypeError('invalid parameter value') + } + + return '"' + str.replace(quoteRegExp, '\\$1') + '"' +} + +/** + * Simply "type/subtype+siffx" into parts. + * + * @param {string} string + * @return {Object} + * @api private + */ + +function splitType(string) { + var match = typeRegExp.exec(string.toLowerCase()) + + if (!match) { + throw new TypeError('invalid media type') + } + + var type = match[1] + var subtype = match[2] + var suffix + + // suffix after last + + var index = subtype.lastIndexOf('+') + if (index !== -1) { + suffix = subtype.substr(index + 1) + subtype = subtype.substr(0, index) + } + + var obj = { + type: type, + subtype: subtype, + suffix: suffix + } + + return obj +} diff --git a/bff/node_modules/multer/node_modules/media-typer/package.json b/bff/node_modules/multer/node_modules/media-typer/package.json new file mode 100644 index 0000000..8cf3ebc --- /dev/null +++ b/bff/node_modules/multer/node_modules/media-typer/package.json @@ -0,0 +1,26 @@ +{ + "name": "media-typer", + "description": "Simple RFC 6838 media type parser and formatter", + "version": "0.3.0", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "repository": "jshttp/media-typer", + "devDependencies": { + "istanbul": "0.3.2", + "mocha": "~1.21.4", + "should": "~4.0.4" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + } +} diff --git a/bff/node_modules/multer/node_modules/mime-db/HISTORY.md b/bff/node_modules/multer/node_modules/mime-db/HISTORY.md new file mode 100644 index 0000000..7436f64 --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-db/HISTORY.md @@ -0,0 +1,507 @@ +1.52.0 / 2022-02-21 +=================== + + * Add extensions from IANA for more `image/*` types + * Add extension `.asc` to `application/pgp-keys` + * Add extensions to various XML types + * Add new upstream MIME types + +1.51.0 / 2021-11-08 +=================== + + * Add new upstream MIME types + * Mark `image/vnd.microsoft.icon` as compressible + * Mark `image/vnd.ms-dds` as compressible + +1.50.0 / 2021-09-15 +=================== + + * Add deprecated iWorks mime types and extensions + * Add new upstream MIME types + +1.49.0 / 2021-07-26 +=================== + + * Add extension `.trig` to `application/trig` + * Add new upstream MIME types + +1.48.0 / 2021-05-30 +=================== + + * Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + * Add new upstream MIME types + * Mark `text/yaml` as compressible + +1.47.0 / 2021-04-01 +=================== + + * Add new upstream MIME types + * Remove ambigious extensions from IANA for `application/*+xml` types + * Update primary extension to `.es` for `application/ecmascript` + +1.46.0 / 2021-02-13 +=================== + + * Add extension `.amr` to `audio/amr` + * Add extension `.m4s` to `video/iso.segment` + * Add extension `.opus` to `audio/ogg` + * Add new upstream MIME types + +1.45.0 / 2020-09-22 +=================== + + * Add `application/ubjson` with extension `.ubj` + * Add `image/avif` with extension `.avif` + * Add `image/ktx2` with extension `.ktx2` + * Add extension `.dbf` to `application/vnd.dbf` + * Add extension `.rar` to `application/vnd.rar` + * Add extension `.td` to `application/urc-targetdesc+xml` + * Add new upstream MIME types + * Fix extension of `application/vnd.apple.keynote` to be `.key` + +1.44.0 / 2020-04-22 +=================== + + * Add charsets from IANA + * Add extension `.cjs` to `application/node` + * Add new upstream MIME types + +1.43.0 / 2020-01-05 +=================== + + * Add `application/x-keepass2` with extension `.kdbx` + * Add extension `.mxmf` to `audio/mobile-xmf` + * Add extensions from IANA for `application/*+xml` types + * Add new upstream MIME types + +1.42.0 / 2019-09-25 +=================== + + * Add `image/vnd.ms-dds` with extension `.dds` + * Add new upstream MIME types + * Remove compressible from `multipart/mixed` + +1.41.0 / 2019-08-30 +=================== + + * Add new upstream MIME types + * Add `application/toml` with extension `.toml` + * Mark `font/ttf` as compressible + +1.40.0 / 2019-04-20 +=================== + + * Add extensions from IANA for `model/*` types + * Add `text/mdx` with extension `.mdx` + +1.39.0 / 2019-04-04 +=================== + + * Add extensions `.siv` and `.sieve` to `application/sieve` + * Add new upstream MIME types + +1.38.0 / 2019-02-04 +=================== + + * Add extension `.nq` to `application/n-quads` + * Add extension `.nt` to `application/n-triples` + * Add new upstream MIME types + * Mark `text/less` as compressible + +1.37.0 / 2018-10-19 +=================== + + * Add extensions to HEIC image types + * Add new upstream MIME types + +1.36.0 / 2018-08-20 +=================== + + * Add Apple file extensions from IANA + * Add extensions from IANA for `image/*` types + * Add new upstream MIME types + +1.35.0 / 2018-07-15 +=================== + + * Add extension `.owl` to `application/rdf+xml` + * Add new upstream MIME types + - Removes extension `.woff` from `application/font-woff` + +1.34.0 / 2018-06-03 +=================== + + * Add extension `.csl` to `application/vnd.citationstyles.style+xml` + * Add extension `.es` to `application/ecmascript` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/turtle` + * Mark all XML-derived types as compressible + +1.33.0 / 2018-02-15 +=================== + + * Add extensions from IANA for `message/*` types + * Add new upstream MIME types + * Fix some incorrect OOXML types + * Remove `application/font-woff2` + +1.32.0 / 2017-11-29 +=================== + + * Add new upstream MIME types + * Update `text/hjson` to registered `application/hjson` + * Add `text/shex` with extension `.shex` + +1.31.0 / 2017-10-25 +=================== + + * Add `application/raml+yaml` with extension `.raml` + * Add `application/wasm` with extension `.wasm` + * Add new `font` type from IANA + * Add new upstream font extensions + * Add new upstream MIME types + * Add extensions for JPEG-2000 images + +1.30.0 / 2017-08-27 +=================== + + * Add `application/vnd.ms-outlook` + * Add `application/x-arj` + * Add extension `.mjs` to `application/javascript` + * Add glTF types and extensions + * Add new upstream MIME types + * Add `text/x-org` + * Add VirtualBox MIME types + * Fix `source` records for `video/*` types that are IANA + * Update `font/opentype` to registered `font/otf` + +1.29.0 / 2017-07-10 +=================== + + * Add `application/fido.trusted-apps+json` + * Add extension `.wadl` to `application/vnd.sun.wadl+xml` + * Add new upstream MIME types + * Add `UTF-8` as default charset for `text/css` + +1.28.0 / 2017-05-14 +=================== + + * Add new upstream MIME types + * Add extension `.gz` to `application/gzip` + * Update extensions `.md` and `.markdown` to be `text/markdown` + +1.27.0 / 2017-03-16 +=================== + + * Add new upstream MIME types + * Add `image/apng` with extension `.apng` + +1.26.0 / 2017-01-14 +=================== + + * Add new upstream MIME types + * Add extension `.geojson` to `application/geo+json` + +1.25.0 / 2016-11-11 +=================== + + * Add new upstream MIME types + +1.24.0 / 2016-09-18 +=================== + + * Add `audio/mp3` + * Add new upstream MIME types + +1.23.0 / 2016-05-01 +=================== + + * Add new upstream MIME types + * Add extension `.3gpp` to `audio/3gpp` + +1.22.0 / 2016-02-15 +=================== + + * Add `text/slim` + * Add extension `.rng` to `application/xml` + * Add new upstream MIME types + * Fix extension of `application/dash+xml` to be `.mpd` + * Update primary extension to `.m4a` for `audio/mp4` + +1.21.0 / 2016-01-06 +=================== + + * Add Google document types + * Add new upstream MIME types + +1.20.0 / 2015-11-10 +=================== + + * Add `text/x-suse-ymp` + * Add new upstream MIME types + +1.19.0 / 2015-09-17 +=================== + + * Add `application/vnd.apple.pkpass` + * Add new upstream MIME types + +1.18.0 / 2015-09-03 +=================== + + * Add new upstream MIME types + +1.17.0 / 2015-08-13 +=================== + + * Add `application/x-msdos-program` + * Add `audio/g711-0` + * Add `image/vnd.mozilla.apng` + * Add extension `.exe` to `application/x-msdos-program` + +1.16.0 / 2015-07-29 +=================== + + * Add `application/vnd.uri-map` + +1.15.0 / 2015-07-13 +=================== + + * Add `application/x-httpd-php` + +1.14.0 / 2015-06-25 +=================== + + * Add `application/scim+json` + * Add `application/vnd.3gpp.ussd+xml` + * Add `application/vnd.biopax.rdf+xml` + * Add `text/x-processing` + +1.13.0 / 2015-06-07 +=================== + + * Add nginx as a source + * Add `application/x-cocoa` + * Add `application/x-java-archive-diff` + * Add `application/x-makeself` + * Add `application/x-perl` + * Add `application/x-pilot` + * Add `application/x-redhat-package-manager` + * Add `application/x-sea` + * Add `audio/x-m4a` + * Add `audio/x-realaudio` + * Add `image/x-jng` + * Add `text/mathml` + +1.12.0 / 2015-06-05 +=================== + + * Add `application/bdoc` + * Add `application/vnd.hyperdrive+json` + * Add `application/x-bdoc` + * Add extension `.rtf` to `text/rtf` + +1.11.0 / 2015-05-31 +=================== + + * Add `audio/wav` + * Add `audio/wave` + * Add extension `.litcoffee` to `text/coffeescript` + * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` + * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` + +1.10.0 / 2015-05-19 +=================== + + * Add `application/vnd.balsamiq.bmpr` + * Add `application/vnd.microsoft.portable-executable` + * Add `application/x-ns-proxy-autoconfig` + +1.9.1 / 2015-04-19 +================== + + * Remove `.json` extension from `application/manifest+json` + - This is causing bugs downstream + +1.9.0 / 2015-04-19 +================== + + * Add `application/manifest+json` + * Add `application/vnd.micro+json` + * Add `image/vnd.zbrush.pcx` + * Add `image/x-ms-bmp` + +1.8.0 / 2015-03-13 +================== + + * Add `application/vnd.citationstyles.style+xml` + * Add `application/vnd.fastcopy-disk-image` + * Add `application/vnd.gov.sk.xmldatacontainer+xml` + * Add extension `.jsonld` to `application/ld+json` + +1.7.0 / 2015-02-08 +================== + + * Add `application/vnd.gerber` + * Add `application/vnd.msa-disk-image` + +1.6.1 / 2015-02-05 +================== + + * Community extensions ownership transferred from `node-mime` + +1.6.0 / 2015-01-29 +================== + + * Add `application/jose` + * Add `application/jose+json` + * Add `application/json-seq` + * Add `application/jwk+json` + * Add `application/jwk-set+json` + * Add `application/jwt` + * Add `application/rdap+json` + * Add `application/vnd.gov.sk.e-form+xml` + * Add `application/vnd.ims.imsccv1p3` + +1.5.0 / 2014-12-30 +================== + + * Add `application/vnd.oracle.resource+json` + * Fix various invalid MIME type entries + - `application/mbox+xml` + - `application/oscp-response` + - `application/vwg-multiplexed` + - `audio/g721` + +1.4.0 / 2014-12-21 +================== + + * Add `application/vnd.ims.imsccv1p2` + * Fix various invalid MIME type entries + - `application/vnd-acucobol` + - `application/vnd-curl` + - `application/vnd-dart` + - `application/vnd-dxr` + - `application/vnd-fdf` + - `application/vnd-mif` + - `application/vnd-sema` + - `application/vnd-wap-wmlc` + - `application/vnd.adobe.flash-movie` + - `application/vnd.dece-zip` + - `application/vnd.dvb_service` + - `application/vnd.micrografx-igx` + - `application/vnd.sealed-doc` + - `application/vnd.sealed-eml` + - `application/vnd.sealed-mht` + - `application/vnd.sealed-ppt` + - `application/vnd.sealed-tiff` + - `application/vnd.sealed-xls` + - `application/vnd.sealedmedia.softseal-html` + - `application/vnd.sealedmedia.softseal-pdf` + - `application/vnd.wap-slc` + - `application/vnd.wap-wbxml` + - `audio/vnd.sealedmedia.softseal-mpeg` + - `image/vnd-djvu` + - `image/vnd-svf` + - `image/vnd-wap-wbmp` + - `image/vnd.sealed-png` + - `image/vnd.sealedmedia.softseal-gif` + - `image/vnd.sealedmedia.softseal-jpg` + - `model/vnd-dwf` + - `model/vnd.parasolid.transmit-binary` + - `model/vnd.parasolid.transmit-text` + - `text/vnd-a` + - `text/vnd-curl` + - `text/vnd.wap-wml` + * Remove example template MIME types + - `application/example` + - `audio/example` + - `image/example` + - `message/example` + - `model/example` + - `multipart/example` + - `text/example` + - `video/example` + +1.3.1 / 2014-12-16 +================== + + * Fix missing extensions + - `application/json5` + - `text/hjson` + +1.3.0 / 2014-12-07 +================== + + * Add `application/a2l` + * Add `application/aml` + * Add `application/atfx` + * Add `application/atxml` + * Add `application/cdfx+xml` + * Add `application/dii` + * Add `application/json5` + * Add `application/lxf` + * Add `application/mf4` + * Add `application/vnd.apache.thrift.compact` + * Add `application/vnd.apache.thrift.json` + * Add `application/vnd.coffeescript` + * Add `application/vnd.enphase.envoy` + * Add `application/vnd.ims.imsccv1p1` + * Add `text/csv-schema` + * Add `text/hjson` + * Add `text/markdown` + * Add `text/yaml` + +1.2.0 / 2014-11-09 +================== + + * Add `application/cea` + * Add `application/dit` + * Add `application/vnd.gov.sk.e-form+zip` + * Add `application/vnd.tmd.mediaflex.api+xml` + * Type `application/epub+zip` is now IANA-registered + +1.1.2 / 2014-10-23 +================== + + * Rebuild database for `application/x-www-form-urlencoded` change + +1.1.1 / 2014-10-20 +================== + + * Mark `application/x-www-form-urlencoded` as compressible. + +1.1.0 / 2014-09-28 +================== + + * Add `application/font-woff2` + +1.0.3 / 2014-09-25 +================== + + * Fix engine requirement in package + +1.0.2 / 2014-09-25 +================== + + * Add `application/coap-group+json` + * Add `application/dcd` + * Add `application/vnd.apache.thrift.binary` + * Add `image/vnd.tencent.tap` + * Mark all JSON-derived types as compressible + * Update `text/vtt` data + +1.0.1 / 2014-08-30 +================== + + * Fix extension ordering + +1.0.0 / 2014-08-30 +================== + + * Add `application/atf` + * Add `application/merge-patch+json` + * Add `multipart/x-mixed-replace` + * Add `source: 'apache'` metadata + * Add `source: 'iana'` metadata + * Remove badly-assumed charset data diff --git a/bff/node_modules/multer/node_modules/mime-db/LICENSE b/bff/node_modules/multer/node_modules/mime-db/LICENSE new file mode 100644 index 0000000..0751cb1 --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-db/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/multer/node_modules/mime-db/README.md b/bff/node_modules/multer/node_modules/mime-db/README.md new file mode 100644 index 0000000..5a8fcfe --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-db/README.md @@ -0,0 +1,100 @@ +# mime-db + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +This is a large database of mime types and information about them. +It consists of a single, public JSON file and does not include any logic, +allowing it to remain as un-opinionated as possible with an API. +It aggregates data from the following sources: + +- http://www.iana.org/assignments/media-types/media-types.xhtml +- http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +- http://hg.nginx.org/nginx/raw-file/default/conf/mime.types + +## Installation + +```bash +npm install mime-db +``` + +### Database Download + +If you're crazy enough to use this in the browser, you can just grab the +JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to +replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags) +as the JSON format may change in the future. + +``` +https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json +``` + +## Usage + +```js +var db = require('mime-db') + +// grab data on .js files +var data = db['application/javascript'] +``` + +## Data Structure + +The JSON file is a map lookup for lowercased mime types. +Each mime type has the following properties: + +- `.source` - where the mime type is defined. + If not set, it's probably a custom media type. + - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) + - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) + - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) +- `.extensions[]` - known extensions associated with this mime type. +- `.compressible` - whether a file of this type can be gzipped. +- `.charset` - the default charset associated with this type, if any. + +If unknown, every property could be `undefined`. + +## Contributing + +To edit the database, only make PRs against `src/custom-types.json` or +`src/custom-suffix.json`. + +The `src/custom-types.json` file is a JSON object with the MIME type as the +keys and the values being an object with the following keys: + +- `compressible` - leave out if you don't know, otherwise `true`/`false` to + indicate whether the data represented by the type is typically compressible. +- `extensions` - include an array of file extensions that are associated with + the type. +- `notes` - human-readable notes about the type, typically what the type is. +- `sources` - include an array of URLs of where the MIME type and the associated + extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source); + links to type aggregating sites and Wikipedia are _not acceptable_. + +To update the build, run `npm run build`. + +### Adding Custom Media Types + +The best way to get new media types included in this library is to register +them with the IANA. The community registration procedure is outlined in +[RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types +registered with the IANA are automatically pulled into this library. + +If that is not possible / feasible, they can be added directly here as a +"custom" type. To do this, it is required to have a primary source that +definitively lists the media type. If an extension is going to be listed as +associateed with this media type, the source must definitively link the +media type and extension as well. + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci +[ci-url]: https://github.com/jshttp/mime-db/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master +[node-image]: https://badgen.net/npm/node/mime-db +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-db +[npm-url]: https://npmjs.org/package/mime-db +[npm-version-image]: https://badgen.net/npm/v/mime-db diff --git a/bff/node_modules/multer/node_modules/mime-db/db.json b/bff/node_modules/multer/node_modules/mime-db/db.json new file mode 100644 index 0000000..eb9c42c --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-db/db.json @@ -0,0 +1,8519 @@ +{ + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/3gpphal+json": { + "source": "iana", + "compressible": true + }, + "application/3gpphalforms+json": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/ace+cbor": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": ["ez"] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": ["aw"] + }, + "application/at+jwt": { + "source": "iana" + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atom"] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomcat"] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomdeleted"] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomsvc"] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dwd"] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": ["held"] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsat"] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xcs"] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ccxml"] + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdfx"] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": ["cdmia"] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": ["cdmic"] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": ["cdmid"] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": ["cdmio"] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": ["cdmiq"] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/city+json": { + "source": "iana", + "compressible": true + }, + "application/clr": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cpl"] + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": ["cu"] + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpd"] + }, + "application/dash-patch+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpp"] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": ["davmount"] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana" + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dbk"] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": ["dssc"] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdssc"] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "iana", + "compressible": true, + "extensions": ["es","ecma"] + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/elm+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/elm+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emma"] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emotionml"] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": ["epub"] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": ["exi"] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/express": { + "source": "iana", + "extensions": ["exp"] + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fdt"] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": ["pfr"] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": ["geojson"] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["gml"] + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["gpx"] + }, + "application/gxf": { + "source": "apache", + "extensions": ["gxf"] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": ["gz"] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": ["hjson"] + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": ["stk"] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ink","inkml"] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": ["ipfix"] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": ["its"] + }, + "application/java-archive": { + "source": "apache", + "compressible": false, + "extensions": ["jar","war","ear"] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": ["ser"] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": ["class"] + }, + "application/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js","mjs"] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/jscalendar+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["json","map"] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": ["json5"] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": ["jsonml"] + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": ["jsonld"] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lgr"] + }, + "application/link-format": { + "source": "iana" + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lostxml"] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": ["hqx"] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": ["cpt"] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mads"] + }, + "application/manifest+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["webmanifest"] + }, + "application/marc": { + "source": "iana", + "extensions": ["mrc"] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mrcx"] + }, + "application/mathematica": { + "source": "iana", + "extensions": ["ma","nb","mb"] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mathml"] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": ["mbox"] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpf"] + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mscml"] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": ["metalink"] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": ["meta4"] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mets"] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/missing-blocks+cbor-seq": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["maei"] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musd"] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mods"] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": ["m21","mp21"] + }, + "application/mp4": { + "source": "iana", + "extensions": ["mp4s","m4p"] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": ["doc","dot"] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": ["mxf"] + }, + "application/n-quads": { + "source": "iana", + "extensions": ["nq"] + }, + "application/n-triples": { + "source": "iana", + "extensions": ["nt"] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": ["cjs"] + }, + "application/nss": { + "source": "iana" + }, + "application/oauth-authz-req+jwt": { + "source": "iana" + }, + "application/oblivious-dns-message": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] + }, + "application/oda": { + "source": "iana", + "extensions": ["oda"] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["opf"] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogx"] + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["omdoc"] + }, + "application/onenote": { + "source": "apache", + "extensions": ["onetoc","onetoc2","onetmp","onepkg"] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": ["oxps"] + }, + "application/p21": { + "source": "iana" + }, + "application/p21+zip": { + "source": "iana", + "compressible": false + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": ["relo"] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": ["pdf"] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": ["pgp"] + }, + "application/pgp-keys": { + "source": "iana", + "extensions": ["asc"] + }, + "application/pgp-signature": { + "source": "iana", + "extensions": ["asc","sig"] + }, + "application/pics-rules": { + "source": "apache", + "extensions": ["prf"] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": ["p10"] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": ["p7m","p7c"] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": ["p7s"] + }, + "application/pkcs8": { + "source": "iana", + "extensions": ["p8"] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": ["ac"] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": ["cer"] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": ["crl"] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": ["pkipath"] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": ["pki"] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pls"] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": ["ai","eps","ps"] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": ["cww"] + }, + "application/prs.cyn": { + "source": "iana", + "charset": "7-BIT" + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pskcxml"] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": ["raml"] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rdf","owl"] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rif"] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": ["rnc"] + }, + "application/remote-printing": { + "source": "iana" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rl"] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rld"] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rs"] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rapd"] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sls"] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rusd"] + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": ["gbr"] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": ["mft"] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": ["roa"] + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rsd"] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rss"] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sarif-external-properties+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sbml"] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": ["scq"] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": ["scs"] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": ["spq"] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": ["spp"] + }, + "application/sdp": { + "source": "iana", + "extensions": ["sdp"] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["senmlx"] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sensmlx"] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": ["setpay"] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": ["setreg"] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["shf"] + }, + "application/sieve": { + "source": "iana", + "extensions": ["siv","sieve"] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "iana" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": ["smi","smil"] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": ["rq"] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": ["srx"] + }, + "application/spdx+json": { + "source": "iana", + "compressible": true + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana" + }, + "application/srgs": { + "source": "iana", + "extensions": ["gram"] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["grxml"] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sru"] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ssdl"] + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ssml"] + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["swidtag"] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tei","teicorpus"] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tfi"] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": ["tsd"] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/token-introspection+jwt": { + "source": "iana" + }, + "application/toml": { + "compressible": true, + "extensions": ["toml"] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana", + "extensions": ["trig"] + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ttml"] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": ["ubj"] + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsheet"] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["td"] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gnas": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gtpc": { + "source": "iana" + }, + "application/vnd.3gpp.interworking-data": { + "source": "iana" + }, + "application/vnd.3gpp.lpp": { + "source": "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ngap": { + "source": "iana" + }, + "application/vnd.3gpp.pfcp": { + "source": "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": ["pvb"] + }, + "application/vnd.3gpp.s1ap": { + "source": "iana" + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": ["aso"] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": ["imp"] + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": ["acu"] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": ["atc","acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": ["air"] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": ["fcdt"] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": ["fxp","fxpl"] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdp"] + }, + "application/vnd.adobe.xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-cmtable": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.age": { + "source": "iana", + "extensions": ["age"] + }, + "application/vnd.ah-barcode": { + "source": "iana" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": ["azs"] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": ["acc"] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": ["apk"] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": ["fti"] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": ["atx"] + }, + "application/vnd.apache.arrow.file": { + "source": "iana" + }, + "application/vnd.apache.arrow.stream": { + "source": "iana" + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpkg"] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": ["key"] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": ["m3u8"] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": ["numbers"] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": ["pages"] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": ["pkpass"] + }, + "application/vnd.arastra.swi": { + "source": "iana" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": ["swi"] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": ["iota"] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": ["aep"] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": ["bmi"] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": ["rep"] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdxml"] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": ["mmd"] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": ["csl"] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": ["cla"] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": ["rp9"] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": ["c4g","c4d","c4f","c4p","c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": ["c11amz"] + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": ["csp"] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": ["cmc"] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": ["clkp"] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.cryptomator.encrypted": { + "source": "iana" + }, + "application/vnd.cryptomator.vault": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": ["pml"] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": ["ppd"] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": ["car"] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.cyclonedx+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cyclonedx+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": ["dart"] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": ["rdz"] + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": ["dbf"] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": ["uvf","uvvf","uvd","uvvd"] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uvt","uvvt"] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": ["uvx","uvvx"] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": ["uvz","uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": ["fe_launch"] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": ["dna"] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": ["dpg"] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": ["dfac"] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": ["kpxx"] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": ["svc"] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": ["geo"] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.eclipse.ditto+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": ["mag"] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": ["nml"] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": ["esf"] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": ["msf"] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": ["qam"] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": ["slt"] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": ["es3","et3"] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eu.kasparian.car+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": ["ez2"] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": ["ez3"] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "iana", + "extensions": ["fdf"] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": ["mseed"] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": ["seed","dataless"] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": ["gph"] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": ["fm","frame","maker","book"] + }, + "application/vnd.frogans.fnc": { + "source": "iana", + "extensions": ["fnc"] + }, + "application/vnd.frogans.ltf": { + "source": "iana", + "extensions": ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": ["txd"] + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geo+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": ["ggb"] + }, + "application/vnd.geogebra.slides": { + "source": "iana" + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": ["ggt"] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": ["gex","gre"] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": ["gxt"] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": ["g2w"] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": ["g3w"] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": ["gmx"] + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["kml"] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": ["gqf","gqs"] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": ["gac"] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": ["ghf"] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": ["gim"] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": ["grv"] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": ["gtm"] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": ["tpl"] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": ["vcg"] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zmm"] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": ["hbci"] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": ["les"] + }, + "application/vnd.hl7cda+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hl7v2+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": ["hpgl"] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": ["hpid"] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": ["hps"] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": ["jlt"] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": ["pcl"] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": ["pclxl"] + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "iana" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": ["mpy"] + }, + "application/vnd.ibm.modcap": { + "source": "iana", + "extensions": ["afp","listafp","list3820"] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": ["irm"] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": ["sc"] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": ["icc","icm"] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": ["ivp"] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "iana" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": ["igm"] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": ["xpw","xpx"] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": ["i2g"] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": ["qbo"] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["irp"] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": ["xpr"] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": ["jam"] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": ["rms"] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": ["jisp"] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": ["ktz","ktr"] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": ["karbon"] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": ["chrt"] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": ["kfo"] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": ["flw"] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": ["kon"] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": ["kpr","kpt"] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": ["ksp"] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": ["kwd","kwt"] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": ["htke"] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": ["kia"] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": ["kne","knp"] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": ["skp","skd","skt","skm"] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": ["sse"] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lasxml"] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": ["123"] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": ["apr"] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": ["pre"] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": ["nsf"] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": ["org"] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": ["scm"] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": ["lwp"] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana", + "extensions": ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxar.archive.3tz+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": ["mcd"] + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": ["mwf"] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": ["mfm"] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": ["flo"] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": ["daf"] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": ["dis"] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": ["mbk"] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": ["mqy"] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": ["msl"] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": ["plc"] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": ["txf"] + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": ["mpn"] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xul"] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": ["cil"] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": ["xltm"] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": ["eot"] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": ["chm"] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": ["ims"] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": ["thmx"] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": ["cat"] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": ["ppt","pps","pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": ["mpp","mpt"] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": ["dotm"] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": ["wps","wks","wcm","wdb"] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": ["xps"] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": ["mseq"] + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": ["mus"] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": ["msty"] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nebumind.line": { + "source": "iana" + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": ["nlu"] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": ["ntf","nitf"] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": ["nnd"] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": ["nns"] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": ["nnw"] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "iana", + "extensions": ["n-gage"] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": ["rpss"] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": ["edm"] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": ["edx"] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": ["ext"] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + "source": "iana", + "extensions": ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": ["oth"] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": ["xo"] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": ["obgx"] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osm"] + }, + "application/vnd.opentimestamps.ots": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": ["mgp"] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": ["dp"] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": ["pdb","pqa","oprc"] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": ["paw"] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": ["str"] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": ["efif"] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": ["plf"] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": ["box"] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": ["mgz"] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": ["qps"] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": ["rar"] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": ["bed"] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.resilient.logic": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": ["cryptonote"] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": ["cod"] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": ["link66"] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": ["st"] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": ["see"] + }, + "application/vnd.seis+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sema": { + "source": "iana", + "extensions": ["sema"] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": ["semd"] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": ["semf"] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": ["itp"] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": ["iif"] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": ["ipk"] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": ["twd","twds"] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": ["mmf"] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": ["teacher"] + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sdkm","sdkd"] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": ["dxp"] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": ["sfs"] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": ["sdc"] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": ["sda"] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": ["sdd"] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": ["smf"] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": ["sdw","vor"] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": ["sgl"] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": ["sm"] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wadl"] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": ["stc"] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": ["std"] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": ["sti"] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": ["sxm"] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": ["stw"] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": ["sus","susp"] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": ["svd"] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.syft+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": ["sis","sisx"] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": ["tao"] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": ["pcap","cap","dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": ["tmo"] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": ["tpt"] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": ["mxs"] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": ["tra"] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": ["ufd","ufdl"] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": ["utz"] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": ["umj"] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": ["unityweb"] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uoml"] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": ["vcx"] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veritone.aion+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": ["vsd","vst","vss","vsw"] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": ["vis"] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": ["vsf"] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["wbxml"] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": ["wmlsc"] + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": ["wtb"] + }, + "application/vnd.wfa.dpp": { + "source": "iana" + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": ["nbp"] + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": ["wpd"] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": ["xar"] + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": ["xfdl"] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": ["cmp"] + }, + "application/vnd.youtube.yt": { + "source": "iana" + }, + "application/vnd.zul": { + "source": "iana", + "extensions": ["zir","zirz"] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zaz"] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["vxml"] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "source": "iana", + "compressible": true, + "extensions": ["wasm"] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wif"] + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": ["wgt"] + }, + "application/winhlp": { + "source": "apache", + "extensions": ["hlp"] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wsdl"] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wspolicy"] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["7z"] + }, + "application/x-abiword": { + "source": "apache", + "extensions": ["abw"] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": ["ace"] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": ["dmg"] + }, + "application/x-arj": { + "compressible": false, + "extensions": ["arj"] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": ["aab","x32","u32","vox"] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": ["aam"] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": ["aas"] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": ["bcpio"] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": ["torrent"] + }, + "application/x-blorb": { + "source": "apache", + "extensions": ["blb","blorb"] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": ["bz"] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": ["bz2","boz"] + }, + "application/x-cbr": { + "source": "apache", + "extensions": ["cbr","cba","cbt","cbz","cb7"] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": ["vcd"] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": ["cfs"] + }, + "application/x-chat": { + "source": "apache", + "extensions": ["chat"] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": ["pgn"] + }, + "application/x-chrome-extension": { + "extensions": ["crx"] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": ["cco"] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": ["nsc"] + }, + "application/x-cpio": { + "source": "apache", + "extensions": ["cpio"] + }, + "application/x-csh": { + "source": "apache", + "extensions": ["csh"] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": ["deb","udeb"] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": ["dgc"] + }, + "application/x-director": { + "source": "apache", + "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] + }, + "application/x-doom": { + "source": "apache", + "extensions": ["wad"] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ncx"] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dtb"] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": ["res"] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": ["dvi"] + }, + "application/x-envoy": { + "source": "apache", + "extensions": ["evy"] + }, + "application/x-eva": { + "source": "apache", + "extensions": ["eva"] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": ["bdf"] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": ["gsf"] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": ["psf"] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": ["pcf"] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": ["snf"] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": ["pfa","pfb","pfm","afm"] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": ["arc"] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": ["spl"] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": ["gca"] + }, + "application/x-glulx": { + "source": "apache", + "extensions": ["ulx"] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": ["gnumeric"] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": ["gramps"] + }, + "application/x-gtar": { + "source": "apache", + "extensions": ["gtar"] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": ["hdf"] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": ["php"] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": ["install"] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + "extensions": ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + "extensions": ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + "extensions": ["pages"] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": ["jardiff"] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": ["jnlp"] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": ["kdbx"] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": ["latex"] + }, + "application/x-lua-bytecode": { + "extensions": ["luac"] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": ["lzh","lha"] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": ["run"] + }, + "application/x-mie": { + "source": "apache", + "extensions": ["mie"] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": ["prc","mobi"] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": ["application"] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": ["lnk"] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": ["wmd"] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": ["wmz"] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": ["xbap"] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": ["mdb"] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": ["obd"] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": ["crd"] + }, + "application/x-msclip": { + "source": "apache", + "extensions": ["clp"] + }, + "application/x-msdos-program": { + "extensions": ["exe"] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": ["exe","dll","com","bat","msi"] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": ["mvb","m13","m14"] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": ["wmf","wmz","emf","emz"] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": ["mny"] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": ["pub"] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": ["scd"] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": ["trm"] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": ["wri"] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": ["nc","cdf"] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": ["pac"] + }, + "application/x-nzb": { + "source": "apache", + "extensions": ["nzb"] + }, + "application/x-perl": { + "source": "nginx", + "extensions": ["pl","pm"] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": ["prc","pdb"] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": ["p12","pfx"] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": ["p7b","spc"] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": ["p7r"] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["rar"] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": ["rpm"] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": ["ris"] + }, + "application/x-sea": { + "source": "nginx", + "extensions": ["sea"] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": ["sh"] + }, + "application/x-shar": { + "source": "apache", + "extensions": ["shar"] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": ["swf"] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": ["xap"] + }, + "application/x-sql": { + "source": "apache", + "extensions": ["sql"] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": ["sit"] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": ["sitx"] + }, + "application/x-subrip": { + "source": "apache", + "extensions": ["srt"] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": ["sv4cpio"] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": ["sv4crc"] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": ["t3"] + }, + "application/x-tads": { + "source": "apache", + "extensions": ["gam"] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": ["tar"] + }, + "application/x-tcl": { + "source": "apache", + "extensions": ["tcl","tk"] + }, + "application/x-tex": { + "source": "apache", + "extensions": ["tex"] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": ["tfm"] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": ["texinfo","texi"] + }, + "application/x-tgif": { + "source": "apache", + "extensions": ["obj"] + }, + "application/x-ustar": { + "source": "apache", + "extensions": ["ustar"] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": ["hdd"] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": ["ova"] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": ["ovf"] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": ["vdi"] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": ["vhd"] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": ["vmdk"] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": ["src"] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": ["webapp"] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": ["der","crt","pem"] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": ["fig"] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xlf"] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": ["xpi"] + }, + "application/x-xz": { + "source": "apache", + "extensions": ["xz"] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xaml"] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xav"] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xca"] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xel"] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xns"] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xenc"] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtml","xht"] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xlf"] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml","xsl","xsd","rng"] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": ["dtd"] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xop"] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xpl"] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xsl","xslt"] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xspf"] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mxml","xhvml","xvml","xvm"] + }, + "application/yang": { + "source": "iana", + "extensions": ["yang"] + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": ["yin"] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": ["zip"] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": ["3gpp"] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana" + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": ["adp"] + }, + "audio/amr": { + "source": "iana", + "extensions": ["amr"] + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": ["au","snd"] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": ["mid","midi","kar","rmi"] + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": ["mxmf"] + }, + "audio/mp3": { + "compressible": false, + "extensions": ["mp3"] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["m4a","mp4a"] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["oga","ogg","spx","opus"] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": ["s3m"] + }, + "audio/scip": { + "source": "iana" + }, + "audio/silk": { + "source": "apache", + "extensions": ["sil"] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": ["uva","uvva"] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": ["eol"] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": ["dra"] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": ["dts"] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": ["dtshd"] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": ["rip"] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/wave": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": ["weba"] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": ["aac"] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": ["aif","aiff","aifc"] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": ["caf"] + }, + "audio/x-flac": { + "source": "apache", + "extensions": ["flac"] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": ["m4a"] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": ["mka"] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": ["m3u"] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": ["wax"] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": ["wma"] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": ["ram","ra"] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": ["rmp"] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": ["ra"] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": ["wav"] + }, + "audio/xm": { + "source": "apache", + "extensions": ["xm"] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": ["cdx"] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": ["cif"] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": ["cmdf"] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": ["cml"] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": ["csml"] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": ["xyz"] + }, + "font/collection": { + "source": "iana", + "extensions": ["ttc"] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": ["otf"] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": ["ttf"] + }, + "font/woff": { + "source": "iana", + "extensions": ["woff"] + }, + "font/woff2": { + "source": "iana", + "extensions": ["woff2"] + }, + "image/aces": { + "source": "iana", + "extensions": ["exr"] + }, + "image/apng": { + "compressible": false, + "extensions": ["apng"] + }, + "image/avci": { + "source": "iana", + "extensions": ["avci"] + }, + "image/avcs": { + "source": "iana", + "extensions": ["avcs"] + }, + "image/avif": { + "source": "iana", + "compressible": false, + "extensions": ["avif"] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": ["bmp"] + }, + "image/cgm": { + "source": "iana", + "extensions": ["cgm"] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": ["drle"] + }, + "image/emf": { + "source": "iana", + "extensions": ["emf"] + }, + "image/fits": { + "source": "iana", + "extensions": ["fits"] + }, + "image/g3fax": { + "source": "iana", + "extensions": ["g3"] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": ["gif"] + }, + "image/heic": { + "source": "iana", + "extensions": ["heic"] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": ["heics"] + }, + "image/heif": { + "source": "iana", + "extensions": ["heif"] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": ["heifs"] + }, + "image/hej2k": { + "source": "iana", + "extensions": ["hej2"] + }, + "image/hsj2": { + "source": "iana", + "extensions": ["hsj2"] + }, + "image/ief": { + "source": "iana", + "extensions": ["ief"] + }, + "image/jls": { + "source": "iana", + "extensions": ["jls"] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": ["jp2","jpg2"] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": ["jpeg","jpg","jpe"] + }, + "image/jph": { + "source": "iana", + "extensions": ["jph"] + }, + "image/jphc": { + "source": "iana", + "extensions": ["jhc"] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": ["jpm"] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": ["jpx","jpf"] + }, + "image/jxr": { + "source": "iana", + "extensions": ["jxr"] + }, + "image/jxra": { + "source": "iana", + "extensions": ["jxra"] + }, + "image/jxrs": { + "source": "iana", + "extensions": ["jxrs"] + }, + "image/jxs": { + "source": "iana", + "extensions": ["jxs"] + }, + "image/jxsc": { + "source": "iana", + "extensions": ["jxsc"] + }, + "image/jxsi": { + "source": "iana", + "extensions": ["jxsi"] + }, + "image/jxss": { + "source": "iana", + "extensions": ["jxss"] + }, + "image/ktx": { + "source": "iana", + "extensions": ["ktx"] + }, + "image/ktx2": { + "source": "iana", + "extensions": ["ktx2"] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": ["png"] + }, + "image/prs.btif": { + "source": "iana", + "extensions": ["btif"] + }, + "image/prs.pti": { + "source": "iana", + "extensions": ["pti"] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": ["sgi"] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["svg","svgz"] + }, + "image/t38": { + "source": "iana", + "extensions": ["t38"] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": ["tif","tiff"] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": ["tfx"] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": ["azv"] + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": ["uvi","uvvi","uvg","uvvg"] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": ["djvu","djv"] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": ["dwg"] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": ["dxf"] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": ["fbs"] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": ["fpx"] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "compressible": true, + "extensions": ["ico"] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "compressible": true, + "extensions": ["dds"] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": ["mdi"] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": ["wdp"] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": ["npx"] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": ["b16"] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": ["tap"] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": ["vtf"] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": ["wbmp"] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": ["xif"] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": ["pcx"] + }, + "image/webp": { + "source": "apache", + "extensions": ["webp"] + }, + "image/wmf": { + "source": "iana", + "extensions": ["wmf"] + }, + "image/x-3ds": { + "source": "apache", + "extensions": ["3ds"] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": ["ras"] + }, + "image/x-cmx": { + "source": "apache", + "extensions": ["cmx"] + }, + "image/x-freehand": { + "source": "apache", + "extensions": ["fh","fhc","fh4","fh5","fh7"] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": ["ico"] + }, + "image/x-jng": { + "source": "nginx", + "extensions": ["jng"] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": ["sid"] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": ["bmp"] + }, + "image/x-pcx": { + "source": "apache", + "extensions": ["pcx"] + }, + "image/x-pict": { + "source": "apache", + "extensions": ["pic","pct"] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": ["pnm"] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": ["pbm"] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": ["pgm"] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": ["ppm"] + }, + "image/x-rgb": { + "source": "apache", + "extensions": ["rgb"] + }, + "image/x-tga": { + "source": "apache", + "extensions": ["tga"] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": ["xbm"] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": ["xpm"] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": ["xwd"] + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": ["u8msg"] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": ["u8dsn"] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": ["u8mdn"] + }, + "message/global-headers": { + "source": "iana", + "extensions": ["u8hdr"] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/news": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": ["eml","mime"] + }, + "message/s-http": { + "source": "iana" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "iana" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": ["wsc"] + }, + "model/3mf": { + "source": "iana", + "extensions": ["3mf"] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": ["gltf"] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": ["glb"] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": ["igs","iges"] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": ["msh","mesh","silo"] + }, + "model/mtl": { + "source": "iana", + "extensions": ["mtl"] + }, + "model/obj": { + "source": "iana", + "extensions": ["obj"] + }, + "model/step": { + "source": "iana" + }, + "model/step+xml": { + "source": "iana", + "compressible": true, + "extensions": ["stpx"] + }, + "model/step+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpz"] + }, + "model/step-xml+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpxz"] + }, + "model/stl": { + "source": "iana", + "extensions": ["stl"] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dae"] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": ["dwf"] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": ["gdl"] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": ["gtw"] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": ["mts"] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": ["x_t"] + }, + "model/vnd.pytha.pyox": { + "source": "iana" + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.sap.vds": { + "source": "iana", + "extensions": ["vds"] + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": ["bsp"] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": ["vtu"] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": ["wrl","vrml"] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": ["x3db","x3dbz"] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": ["x3db"] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": ["x3dv","x3dvz"] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": ["x3d","x3dz"] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": ["x3dv"] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": ["appcache","manifest"] + }, + "text/calendar": { + "source": "iana", + "extensions": ["ics","ifb"] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": ["coffee","litcoffee"] + }, + "text/cql": { + "source": "iana" + }, + "text/cql-expression": { + "source": "iana" + }, + "text/cql-identifier": { + "source": "iana" + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["css"] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": ["csv"] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "iana" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fhirpath": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": ["html","htm","shtml"] + }, + "text/jade": { + "extensions": ["jade"] + }, + "text/javascript": { + "source": "iana", + "compressible": true + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": ["jsx"] + }, + "text/less": { + "compressible": true, + "extensions": ["less"] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": ["markdown","md"] + }, + "text/mathml": { + "source": "nginx", + "extensions": ["mml"] + }, + "text/mdx": { + "compressible": true, + "extensions": ["mdx"] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["n3"] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": ["txt","text","conf","def","list","log","in","ini"] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": ["dsc"] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": ["rtx"] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": ["sgml","sgm"] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "source": "iana", + "extensions": ["shex"] + }, + "text/slim": { + "extensions": ["slim","slm"] + }, + "text/spdx": { + "source": "iana", + "extensions": ["spdx"] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": ["stylus","styl"] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": ["tsv"] + }, + "text/troff": { + "source": "iana", + "extensions": ["t","tr","roff","man","me","ms"] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["ttl"] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": ["uri","uris","urls"] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": ["vcard"] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": ["curl"] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": ["dcurl"] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": ["mcurl"] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": ["scurl"] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + "source": "iana", + "extensions": ["ged"] + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": ["fly"] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": ["flx"] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": ["gv"] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": ["3dml"] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": ["spot"] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "iana" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["jad"] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": ["wml"] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": ["wmls"] + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["vtt"] + }, + "text/x-asm": { + "source": "apache", + "extensions": ["s","asm"] + }, + "text/x-c": { + "source": "apache", + "extensions": ["c","cc","cxx","cpp","h","hh","dic"] + }, + "text/x-component": { + "source": "nginx", + "extensions": ["htc"] + }, + "text/x-fortran": { + "source": "apache", + "extensions": ["f","for","f77","f90"] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": ["hbs"] + }, + "text/x-java-source": { + "source": "apache", + "extensions": ["java"] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": ["lua"] + }, + "text/x-markdown": { + "compressible": true, + "extensions": ["mkd"] + }, + "text/x-nfo": { + "source": "apache", + "extensions": ["nfo"] + }, + "text/x-opml": { + "source": "apache", + "extensions": ["opml"] + }, + "text/x-org": { + "compressible": true, + "extensions": ["org"] + }, + "text/x-pascal": { + "source": "apache", + "extensions": ["p","pas"] + }, + "text/x-processing": { + "compressible": true, + "extensions": ["pde"] + }, + "text/x-sass": { + "extensions": ["sass"] + }, + "text/x-scss": { + "extensions": ["scss"] + }, + "text/x-setext": { + "source": "apache", + "extensions": ["etx"] + }, + "text/x-sfv": { + "source": "apache", + "extensions": ["sfv"] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": ["ymp"] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": ["uu"] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": ["vcs"] + }, + "text/x-vcard": { + "source": "apache", + "extensions": ["vcf"] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml"] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "compressible": true, + "extensions": ["yaml","yml"] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": ["3gp","3gpp"] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": ["3g2"] + }, + "video/av1": { + "source": "iana" + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/ffv1": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": ["h261"] + }, + "video/h263": { + "source": "iana", + "extensions": ["h263"] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": ["h264"] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana", + "extensions": ["m4s"] + }, + "video/jpeg": { + "source": "iana", + "extensions": ["jpgv"] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": ["jpm","jpgm"] + }, + "video/jxsv": { + "source": "iana" + }, + "video/mj2": { + "source": "iana", + "extensions": ["mj2","mjp2"] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": ["ts"] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["mp4","mp4v","mpg4"] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpeg","mpg","mpe","m1v","m2v"] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogv"] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": ["qt","mov"] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/scip": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": ["uvh","uvvh"] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": ["uvm","uvvm"] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": ["uvp","uvvp"] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": ["uvs","uvvs"] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": ["uvv","uvvv"] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": ["dvb"] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": ["fvt"] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": ["mxu","m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "iana" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": ["uvu","uvvu"] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": ["viv"] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/vp9": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": ["webm"] + }, + "video/x-f4v": { + "source": "apache", + "extensions": ["f4v"] + }, + "video/x-fli": { + "source": "apache", + "extensions": ["fli"] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": ["flv"] + }, + "video/x-m4v": { + "source": "apache", + "extensions": ["m4v"] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": ["mkv","mk3d","mks"] + }, + "video/x-mng": { + "source": "apache", + "extensions": ["mng"] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": ["asf","asx"] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": ["vob"] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": ["wm"] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": ["wmv"] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": ["wmx"] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": ["wvx"] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": ["avi"] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": ["movie"] + }, + "video/x-smv": { + "source": "apache", + "extensions": ["smv"] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": ["ice"] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +} diff --git a/bff/node_modules/multer/node_modules/mime-db/index.js b/bff/node_modules/multer/node_modules/mime-db/index.js new file mode 100644 index 0000000..ec2be30 --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-db/index.js @@ -0,0 +1,12 @@ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module exports. + */ + +module.exports = require('./db.json') diff --git a/bff/node_modules/multer/node_modules/mime-db/package.json b/bff/node_modules/multer/node_modules/mime-db/package.json new file mode 100644 index 0000000..32c14b8 --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-db/package.json @@ -0,0 +1,60 @@ +{ + "name": "mime-db", + "description": "Media Type Database", + "version": "1.52.0", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)", + "Robert Kieffer (http://github.com/broofa)" + ], + "license": "MIT", + "keywords": [ + "mime", + "db", + "type", + "types", + "database", + "charset", + "charsets" + ], + "repository": "jshttp/mime-db", + "devDependencies": { + "bluebird": "3.7.2", + "co": "4.6.0", + "cogent": "1.0.1", + "csv-parse": "4.16.3", + "eslint": "7.32.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.1.1", + "eslint-plugin-standard": "4.1.0", + "gnode": "0.1.2", + "media-typer": "1.1.0", + "mocha": "9.2.1", + "nyc": "15.1.0", + "raw-body": "2.5.0", + "stream-to-array": "2.3.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "db.json", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "build": "node scripts/build", + "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx", + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "update": "npm run fetch && npm run build", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/multer/node_modules/mime-types/HISTORY.md b/bff/node_modules/multer/node_modules/mime-types/HISTORY.md new file mode 100644 index 0000000..c5043b7 --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-types/HISTORY.md @@ -0,0 +1,397 @@ +2.1.35 / 2022-03-12 +=================== + + * deps: mime-db@1.52.0 + - Add extensions from IANA for more `image/*` types + - Add extension `.asc` to `application/pgp-keys` + - Add extensions to various XML types + - Add new upstream MIME types + +2.1.34 / 2021-11-08 +=================== + + * deps: mime-db@1.51.0 + - Add new upstream MIME types + +2.1.33 / 2021-10-01 +=================== + + * deps: mime-db@1.50.0 + - Add deprecated iWorks mime types and extensions + - Add new upstream MIME types + +2.1.32 / 2021-07-27 +=================== + + * deps: mime-db@1.49.0 + - Add extension `.trig` to `application/trig` + - Add new upstream MIME types + +2.1.31 / 2021-06-01 +=================== + + * deps: mime-db@1.48.0 + - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + - Add new upstream MIME types + +2.1.30 / 2021-04-02 +=================== + + * deps: mime-db@1.47.0 + - Add extension `.amr` to `audio/amr` + - Remove ambigious extensions from IANA for `application/*+xml` types + - Update primary extension to `.es` for `application/ecmascript` + +2.1.29 / 2021-02-17 +=================== + + * deps: mime-db@1.46.0 + - Add extension `.amr` to `audio/amr` + - Add extension `.m4s` to `video/iso.segment` + - Add extension `.opus` to `audio/ogg` + - Add new upstream MIME types + +2.1.28 / 2021-01-01 +=================== + + * deps: mime-db@1.45.0 + - Add `application/ubjson` with extension `.ubj` + - Add `image/avif` with extension `.avif` + - Add `image/ktx2` with extension `.ktx2` + - Add extension `.dbf` to `application/vnd.dbf` + - Add extension `.rar` to `application/vnd.rar` + - Add extension `.td` to `application/urc-targetdesc+xml` + - Add new upstream MIME types + - Fix extension of `application/vnd.apple.keynote` to be `.key` + +2.1.27 / 2020-04-23 +=================== + + * deps: mime-db@1.44.0 + - Add charsets from IANA + - Add extension `.cjs` to `application/node` + - Add new upstream MIME types + +2.1.26 / 2020-01-05 +=================== + + * deps: mime-db@1.43.0 + - Add `application/x-keepass2` with extension `.kdbx` + - Add extension `.mxmf` to `audio/mobile-xmf` + - Add extensions from IANA for `application/*+xml` types + - Add new upstream MIME types + +2.1.25 / 2019-11-12 +=================== + + * deps: mime-db@1.42.0 + - Add new upstream MIME types + - Add `application/toml` with extension `.toml` + - Add `image/vnd.ms-dds` with extension `.dds` + +2.1.24 / 2019-04-20 +=================== + + * deps: mime-db@1.40.0 + - Add extensions from IANA for `model/*` types + - Add `text/mdx` with extension `.mdx` + +2.1.23 / 2019-04-17 +=================== + + * deps: mime-db@~1.39.0 + - Add extensions `.siv` and `.sieve` to `application/sieve` + - Add new upstream MIME types + +2.1.22 / 2019-02-14 +=================== + + * deps: mime-db@~1.38.0 + - Add extension `.nq` to `application/n-quads` + - Add extension `.nt` to `application/n-triples` + - Add new upstream MIME types + +2.1.21 / 2018-10-19 +=================== + + * deps: mime-db@~1.37.0 + - Add extensions to HEIC image types + - Add new upstream MIME types + +2.1.20 / 2018-08-26 +=================== + + * deps: mime-db@~1.36.0 + - Add Apple file extensions from IANA + - Add extensions from IANA for `image/*` types + - Add new upstream MIME types + +2.1.19 / 2018-07-17 +=================== + + * deps: mime-db@~1.35.0 + - Add extension `.csl` to `application/vnd.citationstyles.style+xml` + - Add extension `.es` to `application/ecmascript` + - Add extension `.owl` to `application/rdf+xml` + - Add new upstream MIME types + - Add UTF-8 as default charset for `text/turtle` + +2.1.18 / 2018-02-16 +=================== + + * deps: mime-db@~1.33.0 + - Add `application/raml+yaml` with extension `.raml` + - Add `application/wasm` with extension `.wasm` + - Add `text/shex` with extension `.shex` + - Add extensions for JPEG-2000 images + - Add extensions from IANA for `message/*` types + - Add new upstream MIME types + - Update font MIME types + - Update `text/hjson` to registered `application/hjson` + +2.1.17 / 2017-09-01 +=================== + + * deps: mime-db@~1.30.0 + - Add `application/vnd.ms-outlook` + - Add `application/x-arj` + - Add extension `.mjs` to `application/javascript` + - Add glTF types and extensions + - Add new upstream MIME types + - Add `text/x-org` + - Add VirtualBox MIME types + - Fix `source` records for `video/*` types that are IANA + - Update `font/opentype` to registered `font/otf` + +2.1.16 / 2017-07-24 +=================== + + * deps: mime-db@~1.29.0 + - Add `application/fido.trusted-apps+json` + - Add extension `.wadl` to `application/vnd.sun.wadl+xml` + - Add extension `.gz` to `application/gzip` + - Add new upstream MIME types + - Update extensions `.md` and `.markdown` to be `text/markdown` + +2.1.15 / 2017-03-23 +=================== + + * deps: mime-db@~1.27.0 + - Add new mime types + - Add `image/apng` + +2.1.14 / 2017-01-14 +=================== + + * deps: mime-db@~1.26.0 + - Add new mime types + +2.1.13 / 2016-11-18 +=================== + + * deps: mime-db@~1.25.0 + - Add new mime types + +2.1.12 / 2016-09-18 +=================== + + * deps: mime-db@~1.24.0 + - Add new mime types + - Add `audio/mp3` + +2.1.11 / 2016-05-01 +=================== + + * deps: mime-db@~1.23.0 + - Add new mime types + +2.1.10 / 2016-02-15 +=================== + + * deps: mime-db@~1.22.0 + - Add new mime types + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + +2.1.9 / 2016-01-06 +================== + + * deps: mime-db@~1.21.0 + - Add new mime types + +2.1.8 / 2015-11-30 +================== + + * deps: mime-db@~1.20.0 + - Add new mime types + +2.1.7 / 2015-09-20 +================== + + * deps: mime-db@~1.19.0 + - Add new mime types + +2.1.6 / 2015-09-03 +================== + + * deps: mime-db@~1.18.0 + - Add new mime types + +2.1.5 / 2015-08-20 +================== + + * deps: mime-db@~1.17.0 + - Add new mime types + +2.1.4 / 2015-07-30 +================== + + * deps: mime-db@~1.16.0 + - Add new mime types + +2.1.3 / 2015-07-13 +================== + + * deps: mime-db@~1.15.0 + - Add new mime types + +2.1.2 / 2015-06-25 +================== + + * deps: mime-db@~1.14.0 + - Add new mime types + +2.1.1 / 2015-06-08 +================== + + * perf: fix deopt during mapping + +2.1.0 / 2015-06-07 +================== + + * Fix incorrectly treating extension-less file name as extension + - i.e. `'path/to/json'` will no longer return `application/json` + * Fix `.charset(type)` to accept parameters + * Fix `.charset(type)` to match case-insensitive + * Improve generation of extension to MIME mapping + * Refactor internals for readability and no argument reassignment + * Prefer `application/*` MIME types from the same source + * Prefer any type over `application/octet-stream` + * deps: mime-db@~1.13.0 + - Add nginx as a source + - Add new mime types + +2.0.14 / 2015-06-06 +=================== + + * deps: mime-db@~1.12.0 + - Add new mime types + +2.0.13 / 2015-05-31 +=================== + + * deps: mime-db@~1.11.0 + - Add new mime types + +2.0.12 / 2015-05-19 +=================== + + * deps: mime-db@~1.10.0 + - Add new mime types + +2.0.11 / 2015-05-05 +=================== + + * deps: mime-db@~1.9.1 + - Add new mime types + +2.0.10 / 2015-03-13 +=================== + + * deps: mime-db@~1.8.0 + - Add new mime types + +2.0.9 / 2015-02-09 +================== + + * deps: mime-db@~1.7.0 + - Add new mime types + - Community extensions ownership transferred from `node-mime` + +2.0.8 / 2015-01-29 +================== + + * deps: mime-db@~1.6.0 + - Add new mime types + +2.0.7 / 2014-12-30 +================== + + * deps: mime-db@~1.5.0 + - Add new mime types + - Fix various invalid MIME type entries + +2.0.6 / 2014-12-30 +================== + + * deps: mime-db@~1.4.0 + - Add new mime types + - Fix various invalid MIME type entries + - Remove example template MIME types + +2.0.5 / 2014-12-29 +================== + + * deps: mime-db@~1.3.1 + - Fix missing extensions + +2.0.4 / 2014-12-10 +================== + + * deps: mime-db@~1.3.0 + - Add new mime types + +2.0.3 / 2014-11-09 +================== + + * deps: mime-db@~1.2.0 + - Add new mime types + +2.0.2 / 2014-09-28 +================== + + * deps: mime-db@~1.1.0 + - Add new mime types + - Update charsets + +2.0.1 / 2014-09-07 +================== + + * Support Node.js 0.6 + +2.0.0 / 2014-09-02 +================== + + * Use `mime-db` + * Remove `.define()` + +1.0.2 / 2014-08-04 +================== + + * Set charset=utf-8 for `text/javascript` + +1.0.1 / 2014-06-24 +================== + + * Add `text/jsx` type + +1.0.0 / 2014-05-12 +================== + + * Return `false` for unknown types + * Set charset=utf-8 for `application/json` + +0.1.0 / 2014-05-02 +================== + + * Initial release diff --git a/bff/node_modules/multer/node_modules/mime-types/LICENSE b/bff/node_modules/multer/node_modules/mime-types/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-types/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/multer/node_modules/mime-types/README.md b/bff/node_modules/multer/node_modules/mime-types/README.md new file mode 100644 index 0000000..48d2fb4 --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-types/README.md @@ -0,0 +1,113 @@ +# mime-types + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +The ultimate javascript content-type utility. + +Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except: + +- __No fallbacks.__ Instead of naively returning the first available type, + `mime-types` simply returns `false`, so do + `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. +- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. +- No `.define()` functionality +- Bug fixes for `.lookup(path)` + +Otherwise, the API is compatible with `mime` 1.x. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install mime-types +``` + +## Adding Types + +All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db), +so open a PR there if you'd like to add mime types. + +## API + +```js +var mime = require('mime-types') +``` + +All functions return `false` if input is invalid or not found. + +### mime.lookup(path) + +Lookup the content-type associated with a file. + +```js +mime.lookup('json') // 'application/json' +mime.lookup('.md') // 'text/markdown' +mime.lookup('file.html') // 'text/html' +mime.lookup('folder/file.js') // 'application/javascript' +mime.lookup('folder/.htaccess') // false + +mime.lookup('cats') // false +``` + +### mime.contentType(type) + +Create a full content-type header given a content-type or extension. +When given an extension, `mime.lookup` is used to get the matching +content-type, otherwise the given content-type is used. Then if the +content-type does not already have a `charset` parameter, `mime.charset` +is used to get the default charset and add to the returned content-type. + +```js +mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' +mime.contentType('file.json') // 'application/json; charset=utf-8' +mime.contentType('text/html') // 'text/html; charset=utf-8' +mime.contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1' + +// from a full path +mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' +``` + +### mime.extension(type) + +Get the default extension for a content-type. + +```js +mime.extension('application/octet-stream') // 'bin' +``` + +### mime.charset(type) + +Lookup the implied default charset of a content-type. + +```js +mime.charset('text/markdown') // 'UTF-8' +``` + +### var type = mime.types[extension] + +A map of content-types by extension. + +### [extensions...] = mime.extensions[type] + +A map of extensions by content-type. + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/mime-types/master?label=ci +[ci-url]: https://github.com/jshttp/mime-types/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-types/master +[coveralls-url]: https://coveralls.io/r/jshttp/mime-types?branch=master +[node-version-image]: https://badgen.net/npm/node/mime-types +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/mime-types +[npm-url]: https://npmjs.org/package/mime-types +[npm-version-image]: https://badgen.net/npm/v/mime-types diff --git a/bff/node_modules/multer/node_modules/mime-types/index.js b/bff/node_modules/multer/node_modules/mime-types/index.js new file mode 100644 index 0000000..b9f34d5 --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-types/index.js @@ -0,0 +1,188 @@ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var db = require('mime-db') +var extname = require('path').extname + +/** + * Module variables. + * @private + */ + +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ +var TEXT_TYPE_REGEXP = /^text\//i + +/** + * Module exports. + * @public + */ + +exports.charset = charset +exports.charsets = { lookup: charset } +exports.contentType = contentType +exports.extension = extension +exports.extensions = Object.create(null) +exports.lookup = lookup +exports.types = Object.create(null) + +// Populate the extensions/types maps +populateMaps(exports.extensions, exports.types) + +/** + * Get the default charset for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function charset (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && db[match[1].toLowerCase()] + + if (mime && mime.charset) { + return mime.charset + } + + // default text/* to utf-8 + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return 'UTF-8' + } + + return false +} + +/** + * Create a full Content-Type header given a MIME type or extension. + * + * @param {string} str + * @return {boolean|string} + */ + +function contentType (str) { + // TODO: should this even be in this module? + if (!str || typeof str !== 'string') { + return false + } + + var mime = str.indexOf('/') === -1 + ? exports.lookup(str) + : str + + if (!mime) { + return false + } + + // TODO: use content-type or other module + if (mime.indexOf('charset') === -1) { + var charset = exports.charset(mime) + if (charset) mime += '; charset=' + charset.toLowerCase() + } + + return mime +} + +/** + * Get the default extension for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function extension (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + + // get extensions + var exts = match && exports.extensions[match[1].toLowerCase()] + + if (!exts || !exts.length) { + return false + } + + return exts[0] +} + +/** + * Lookup the MIME type for a file path/extension. + * + * @param {string} path + * @return {boolean|string} + */ + +function lookup (path) { + if (!path || typeof path !== 'string') { + return false + } + + // get the extension ("ext" or ".ext" or full path) + var extension = extname('x.' + path) + .toLowerCase() + .substr(1) + + if (!extension) { + return false + } + + return exports.types[extension] || false +} + +/** + * Populate the extensions and types maps. + * @private + */ + +function populateMaps (extensions, types) { + // source preference (least -> most) + var preference = ['nginx', 'apache', undefined, 'iana'] + + Object.keys(db).forEach(function forEachMimeType (type) { + var mime = db[type] + var exts = mime.extensions + + if (!exts || !exts.length) { + return + } + + // mime -> extensions + extensions[type] = exts + + // extension -> mime + for (var i = 0; i < exts.length; i++) { + var extension = exts[i] + + if (types[extension]) { + var from = preference.indexOf(db[types[extension]].source) + var to = preference.indexOf(mime.source) + + if (types[extension] !== 'application/octet-stream' && + (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { + // skip the remapping + continue + } + } + + // set the extension -> mime + types[extension] = type + } + }) +} diff --git a/bff/node_modules/multer/node_modules/mime-types/package.json b/bff/node_modules/multer/node_modules/mime-types/package.json new file mode 100644 index 0000000..bbef696 --- /dev/null +++ b/bff/node_modules/multer/node_modules/mime-types/package.json @@ -0,0 +1,44 @@ +{ + "name": "mime-types", + "description": "The ultimate javascript content-type utility.", + "version": "2.1.35", + "contributors": [ + "Douglas Christopher Wilson ", + "Jeremiah Senkpiel (https://searchbeam.jit.su)", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "keywords": [ + "mime", + "types" + ], + "repository": "jshttp/mime-types", + "dependencies": { + "mime-db": "1.52.0" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.2", + "nyc": "15.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec test/test.js", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/multer/node_modules/type-is/HISTORY.md b/bff/node_modules/multer/node_modules/type-is/HISTORY.md new file mode 100644 index 0000000..8de21f7 --- /dev/null +++ b/bff/node_modules/multer/node_modules/type-is/HISTORY.md @@ -0,0 +1,259 @@ +1.6.18 / 2019-04-26 +=================== + + * Fix regression passing request object to `typeis.is` + +1.6.17 / 2019-04-25 +=================== + + * deps: mime-types@~2.1.24 + - Add Apple file extensions from IANA + - Add extension `.csl` to `application/vnd.citationstyles.style+xml` + - Add extension `.es` to `application/ecmascript` + - Add extension `.nq` to `application/n-quads` + - Add extension `.nt` to `application/n-triples` + - Add extension `.owl` to `application/rdf+xml` + - Add extensions `.siv` and `.sieve` to `application/sieve` + - Add extensions from IANA for `image/*` types + - Add extensions from IANA for `model/*` types + - Add extensions to HEIC image types + - Add new mime types + - Add `text/mdx` with extension `.mdx` + * perf: prevent internal `throw` on invalid type + +1.6.16 / 2018-02-16 +=================== + + * deps: mime-types@~2.1.18 + - Add `application/raml+yaml` with extension `.raml` + - Add `application/wasm` with extension `.wasm` + - Add `text/shex` with extension `.shex` + - Add extensions for JPEG-2000 images + - Add extensions from IANA for `message/*` types + - Add extension `.mjs` to `application/javascript` + - Add extension `.wadl` to `application/vnd.sun.wadl+xml` + - Add extension `.gz` to `application/gzip` + - Add glTF types and extensions + - Add new mime types + - Update extensions `.md` and `.markdown` to be `text/markdown` + - Update font MIME types + - Update `text/hjson` to registered `application/hjson` + +1.6.15 / 2017-03-31 +=================== + + * deps: mime-types@~2.1.15 + - Add new mime types + +1.6.14 / 2016-11-18 +=================== + + * deps: mime-types@~2.1.13 + - Add new mime types + +1.6.13 / 2016-05-18 +=================== + + * deps: mime-types@~2.1.11 + - Add new mime types + +1.6.12 / 2016-02-28 +=================== + + * deps: mime-types@~2.1.10 + - Add new mime types + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + +1.6.11 / 2016-01-29 +=================== + + * deps: mime-types@~2.1.9 + - Add new mime types + +1.6.10 / 2015-12-01 +=================== + + * deps: mime-types@~2.1.8 + - Add new mime types + +1.6.9 / 2015-09-27 +================== + + * deps: mime-types@~2.1.7 + - Add new mime types + +1.6.8 / 2015-09-04 +================== + + * deps: mime-types@~2.1.6 + - Add new mime types + +1.6.7 / 2015-08-20 +================== + + * Fix type error when given invalid type to match against + * deps: mime-types@~2.1.5 + - Add new mime types + +1.6.6 / 2015-07-31 +================== + + * deps: mime-types@~2.1.4 + - Add new mime types + +1.6.5 / 2015-07-16 +================== + + * deps: mime-types@~2.1.3 + - Add new mime types + +1.6.4 / 2015-07-01 +================== + + * deps: mime-types@~2.1.2 + - Add new mime types + * perf: enable strict mode + * perf: remove argument reassignment + +1.6.3 / 2015-06-08 +================== + + * deps: mime-types@~2.1.1 + - Add new mime types + * perf: reduce try block size + * perf: remove bitwise operations + +1.6.2 / 2015-05-10 +================== + + * deps: mime-types@~2.0.11 + - Add new mime types + +1.6.1 / 2015-03-13 +================== + + * deps: mime-types@~2.0.10 + - Add new mime types + +1.6.0 / 2015-02-12 +================== + + * fix false-positives in `hasBody` `Transfer-Encoding` check + * support wildcard for both type and subtype (`*/*`) + +1.5.7 / 2015-02-09 +================== + + * fix argument reassignment + * deps: mime-types@~2.0.9 + - Add new mime types + +1.5.6 / 2015-01-29 +================== + + * deps: mime-types@~2.0.8 + - Add new mime types + +1.5.5 / 2014-12-30 +================== + + * deps: mime-types@~2.0.7 + - Add new mime types + - Fix missing extensions + - Fix various invalid MIME type entries + - Remove example template MIME types + - deps: mime-db@~1.5.0 + +1.5.4 / 2014-12-10 +================== + + * deps: mime-types@~2.0.4 + - Add new mime types + - deps: mime-db@~1.3.0 + +1.5.3 / 2014-11-09 +================== + + * deps: mime-types@~2.0.3 + - Add new mime types + - deps: mime-db@~1.2.0 + +1.5.2 / 2014-09-28 +================== + + * deps: mime-types@~2.0.2 + - Add new mime types + - deps: mime-db@~1.1.0 + +1.5.1 / 2014-09-07 +================== + + * Support Node.js 0.6 + * deps: media-typer@0.3.0 + * deps: mime-types@~2.0.1 + - Support Node.js 0.6 + +1.5.0 / 2014-09-05 +================== + + * fix `hasbody` to be true for `content-length: 0` + +1.4.0 / 2014-09-02 +================== + + * update mime-types + +1.3.2 / 2014-06-24 +================== + + * use `~` range on mime-types + +1.3.1 / 2014-06-19 +================== + + * fix global variable leak + +1.3.0 / 2014-06-19 +================== + + * improve type parsing + + - invalid media type never matches + - media type not case-sensitive + - extra LWS does not affect results + +1.2.2 / 2014-06-19 +================== + + * fix behavior on unknown type argument + +1.2.1 / 2014-06-03 +================== + + * switch dependency from `mime` to `mime-types@1.0.0` + +1.2.0 / 2014-05-11 +================== + + * support suffix matching: + + - `+json` matches `application/vnd+json` + - `*/vnd+json` matches `application/vnd+json` + - `application/*+json` matches `application/vnd+json` + +1.1.0 / 2014-04-12 +================== + + * add non-array values support + * expose internal utilities: + + - `.is()` + - `.hasBody()` + - `.normalize()` + - `.match()` + +1.0.1 / 2014-03-30 +================== + + * add `multipart` as a shorthand diff --git a/bff/node_modules/multer/node_modules/type-is/LICENSE b/bff/node_modules/multer/node_modules/type-is/LICENSE new file mode 100644 index 0000000..386b7b6 --- /dev/null +++ b/bff/node_modules/multer/node_modules/type-is/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/multer/node_modules/type-is/README.md b/bff/node_modules/multer/node_modules/type-is/README.md new file mode 100644 index 0000000..b85ef8f --- /dev/null +++ b/bff/node_modules/multer/node_modules/type-is/README.md @@ -0,0 +1,170 @@ +# type-is + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Infer the content-type of a request. + +### Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install type-is +``` + +## API + +```js +var http = require('http') +var typeis = require('type-is') + +http.createServer(function (req, res) { + var istext = typeis(req, ['text/*']) + res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text') +}) +``` + +### typeis(request, types) + +Checks if the `request` is one of the `types`. If the request has no body, +even if there is a `Content-Type` header, then `null` is returned. If the +`Content-Type` header is invalid or does not matches any of the `types`, then +`false` is returned. Otherwise, a string of the type that matched is returned. + +The `request` argument is expected to be a Node.js HTTP request. The `types` +argument is an array of type strings. + +Each type in the `types` array can be one of the following: + +- A file extension name such as `json`. This name will be returned if matched. +- A mime type such as `application/json`. +- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. + The full mime type will be returned if matched. +- A suffix such as `+json`. This can be combined with a wildcard such as + `*/vnd+json` or `application/*+json`. The full mime type will be returned + if matched. + +Some examples to illustrate the inputs and returned value: + + + +```js +// req.headers.content-type = 'application/json' + +typeis(req, ['json']) // => 'json' +typeis(req, ['html', 'json']) // => 'json' +typeis(req, ['application/*']) // => 'application/json' +typeis(req, ['application/json']) // => 'application/json' + +typeis(req, ['html']) // => false +``` + +### typeis.hasBody(request) + +Returns a Boolean if the given `request` has a body, regardless of the +`Content-Type` header. + +Having a body has no relation to how large the body is (it may be 0 bytes). +This is similar to how file existence works. If a body does exist, then this +indicates that there is data to read from the Node.js request stream. + + + +```js +if (typeis.hasBody(req)) { + // read the body, since there is one + + req.on('data', function (chunk) { + // ... + }) +} +``` + +### typeis.is(mediaType, types) + +Checks if the `mediaType` is one of the `types`. If the `mediaType` is invalid +or does not matches any of the `types`, then `false` is returned. Otherwise, a +string of the type that matched is returned. + +The `mediaType` argument is expected to be a +[media type](https://tools.ietf.org/html/rfc6838) string. The `types` argument +is an array of type strings. + +Each type in the `types` array can be one of the following: + +- A file extension name such as `json`. This name will be returned if matched. +- A mime type such as `application/json`. +- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. + The full mime type will be returned if matched. +- A suffix such as `+json`. This can be combined with a wildcard such as + `*/vnd+json` or `application/*+json`. The full mime type will be returned + if matched. + +Some examples to illustrate the inputs and returned value: + + + +```js +var mediaType = 'application/json' + +typeis.is(mediaType, ['json']) // => 'json' +typeis.is(mediaType, ['html', 'json']) // => 'json' +typeis.is(mediaType, ['application/*']) // => 'application/json' +typeis.is(mediaType, ['application/json']) // => 'application/json' + +typeis.is(mediaType, ['html']) // => false +``` + +## Examples + +### Example body parser + +```js +var express = require('express') +var typeis = require('type-is') + +var app = express() + +app.use(function bodyParser (req, res, next) { + if (!typeis.hasBody(req)) { + return next() + } + + switch (typeis(req, ['urlencoded', 'json', 'multipart'])) { + case 'urlencoded': + // parse urlencoded body + throw new Error('implement urlencoded body parsing') + case 'json': + // parse json body + throw new Error('implement json body parsing') + case 'multipart': + // parse multipart body + throw new Error('implement multipart body parsing') + default: + // 415 error code + res.statusCode = 415 + res.end() + break + } +}) +``` + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/type-is/master +[coveralls-url]: https://coveralls.io/r/jshttp/type-is?branch=master +[node-version-image]: https://badgen.net/npm/node/type-is +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/type-is +[npm-url]: https://npmjs.org/package/type-is +[npm-version-image]: https://badgen.net/npm/v/type-is +[travis-image]: https://badgen.net/travis/jshttp/type-is/master +[travis-url]: https://travis-ci.org/jshttp/type-is diff --git a/bff/node_modules/multer/node_modules/type-is/index.js b/bff/node_modules/multer/node_modules/type-is/index.js new file mode 100644 index 0000000..890ad76 --- /dev/null +++ b/bff/node_modules/multer/node_modules/type-is/index.js @@ -0,0 +1,266 @@ +/*! + * type-is + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var typer = require('media-typer') +var mime = require('mime-types') + +/** + * Module exports. + * @public + */ + +module.exports = typeofrequest +module.exports.is = typeis +module.exports.hasBody = hasbody +module.exports.normalize = normalize +module.exports.match = mimeMatch + +/** + * Compare a `value` content-type with `types`. + * Each `type` can be an extension like `html`, + * a special shortcut like `multipart` or `urlencoded`, + * or a mime type. + * + * If no types match, `false` is returned. + * Otherwise, the first `type` that matches is returned. + * + * @param {String} value + * @param {Array} types + * @public + */ + +function typeis (value, types_) { + var i + var types = types_ + + // remove parameters and normalize + var val = tryNormalizeType(value) + + // no type or invalid + if (!val) { + return false + } + + // support flattened arguments + if (types && !Array.isArray(types)) { + types = new Array(arguments.length - 1) + for (i = 0; i < types.length; i++) { + types[i] = arguments[i + 1] + } + } + + // no types, return the content type + if (!types || !types.length) { + return val + } + + var type + for (i = 0; i < types.length; i++) { + if (mimeMatch(normalize(type = types[i]), val)) { + return type[0] === '+' || type.indexOf('*') !== -1 + ? val + : type + } + } + + // no matches + return false +} + +/** + * Check if a request has a request body. + * A request with a body __must__ either have `transfer-encoding` + * or `content-length` headers set. + * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3 + * + * @param {Object} request + * @return {Boolean} + * @public + */ + +function hasbody (req) { + return req.headers['transfer-encoding'] !== undefined || + !isNaN(req.headers['content-length']) +} + +/** + * Check if the incoming request contains the "Content-Type" + * header field, and it contains any of the give mime `type`s. + * If there is no request body, `null` is returned. + * If there is no content type, `false` is returned. + * Otherwise, it returns the first `type` that matches. + * + * Examples: + * + * // With Content-Type: text/html; charset=utf-8 + * this.is('html'); // => 'html' + * this.is('text/html'); // => 'text/html' + * this.is('text/*', 'application/json'); // => 'text/html' + * + * // When Content-Type is application/json + * this.is('json', 'urlencoded'); // => 'json' + * this.is('application/json'); // => 'application/json' + * this.is('html', 'application/*'); // => 'application/json' + * + * this.is('html'); // => false + * + * @param {String|Array} types... + * @return {String|false|null} + * @public + */ + +function typeofrequest (req, types_) { + var types = types_ + + // no body + if (!hasbody(req)) { + return null + } + + // support flattened arguments + if (arguments.length > 2) { + types = new Array(arguments.length - 1) + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i + 1] + } + } + + // request content type + var value = req.headers['content-type'] + + return typeis(value, types) +} + +/** + * Normalize a mime type. + * If it's a shorthand, expand it to a valid mime type. + * + * In general, you probably want: + * + * var type = is(req, ['urlencoded', 'json', 'multipart']); + * + * Then use the appropriate body parsers. + * These three are the most common request body types + * and are thus ensured to work. + * + * @param {String} type + * @private + */ + +function normalize (type) { + if (typeof type !== 'string') { + // invalid type + return false + } + + switch (type) { + case 'urlencoded': + return 'application/x-www-form-urlencoded' + case 'multipart': + return 'multipart/*' + } + + if (type[0] === '+') { + // "+json" -> "*/*+json" expando + return '*/*' + type + } + + return type.indexOf('/') === -1 + ? mime.lookup(type) + : type +} + +/** + * Check if `expected` mime type + * matches `actual` mime type with + * wildcard and +suffix support. + * + * @param {String} expected + * @param {String} actual + * @return {Boolean} + * @private + */ + +function mimeMatch (expected, actual) { + // invalid type + if (expected === false) { + return false + } + + // split types + var actualParts = actual.split('/') + var expectedParts = expected.split('/') + + // invalid format + if (actualParts.length !== 2 || expectedParts.length !== 2) { + return false + } + + // validate type + if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) { + return false + } + + // validate suffix wildcard + if (expectedParts[1].substr(0, 2) === '*+') { + return expectedParts[1].length <= actualParts[1].length + 1 && + expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length) + } + + // validate subtype + if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) { + return false + } + + return true +} + +/** + * Normalize a type and remove parameters. + * + * @param {string} value + * @return {string} + * @private + */ + +function normalizeType (value) { + // parse the type + var type = typer.parse(value) + + // remove the parameters + type.parameters = undefined + + // reformat it + return typer.format(type) +} + +/** + * Try to normalize a type and remove parameters. + * + * @param {string} value + * @return {string} + * @private + */ + +function tryNormalizeType (value) { + if (!value) { + return null + } + + try { + return normalizeType(value) + } catch (err) { + return null + } +} diff --git a/bff/node_modules/multer/node_modules/type-is/package.json b/bff/node_modules/multer/node_modules/type-is/package.json new file mode 100644 index 0000000..97ba5f1 --- /dev/null +++ b/bff/node_modules/multer/node_modules/type-is/package.json @@ -0,0 +1,45 @@ +{ + "name": "type-is", + "description": "Infer the content-type of a request.", + "version": "1.6.18", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "repository": "jshttp/type-is", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "devDependencies": { + "eslint": "5.16.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.17.2", + "eslint-plugin-markdown": "1.0.0", + "eslint-plugin-node": "8.0.1", + "eslint-plugin-promise": "4.1.1", + "eslint-plugin-standard": "4.0.0", + "mocha": "6.1.4", + "nyc": "14.0.0" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "scripts": { + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-travis": "nyc --reporter=text npm test" + }, + "keywords": [ + "content", + "type", + "checking" + ] +} diff --git a/bff/node_modules/multer/package.json b/bff/node_modules/multer/package.json new file mode 100644 index 0000000..32507d8 --- /dev/null +++ b/bff/node_modules/multer/package.json @@ -0,0 +1,52 @@ +{ + "name": "multer", + "description": "Middleware for handling `multipart/form-data`.", + "version": "1.4.5-lts.2", + "contributors": [ + "Hage Yaapa (http://www.hacksparrow.com)", + "Jaret Pfluger ", + "Linus Unnebäck " + ], + "license": "MIT", + "repository": "expressjs/multer", + "keywords": [ + "form", + "post", + "multipart", + "form-data", + "formdata", + "express", + "middleware" + ], + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "devDependencies": { + "deep-equal": "^2.0.3", + "express": "^4.13.1", + "form-data": "^1.0.0-rc1", + "fs-temp": "^1.1.2", + "mocha": "^3.5.3", + "rimraf": "^2.4.1", + "standard": "^14.3.3", + "testdata-w3c-json-form": "^1.0.0" + }, + "engines": { + "node": ">= 6.0.0" + }, + "files": [ + "LICENSE", + "index.js", + "storage/", + "lib/" + ], + "scripts": { + "test": "standard && mocha" + } +} diff --git a/bff/node_modules/multer/storage/disk.js b/bff/node_modules/multer/storage/disk.js new file mode 100644 index 0000000..2f77c9f --- /dev/null +++ b/bff/node_modules/multer/storage/disk.js @@ -0,0 +1,66 @@ +var fs = require('fs') +var os = require('os') +var path = require('path') +var crypto = require('crypto') +var mkdirp = require('mkdirp') + +function getFilename (req, file, cb) { + crypto.randomBytes(16, function (err, raw) { + cb(err, err ? undefined : raw.toString('hex')) + }) +} + +function getDestination (req, file, cb) { + cb(null, os.tmpdir()) +} + +function DiskStorage (opts) { + this.getFilename = (opts.filename || getFilename) + + if (typeof opts.destination === 'string') { + mkdirp.sync(opts.destination) + this.getDestination = function ($0, $1, cb) { cb(null, opts.destination) } + } else { + this.getDestination = (opts.destination || getDestination) + } +} + +DiskStorage.prototype._handleFile = function _handleFile (req, file, cb) { + var that = this + + that.getDestination(req, file, function (err, destination) { + if (err) return cb(err) + + that.getFilename(req, file, function (err, filename) { + if (err) return cb(err) + + var finalPath = path.join(destination, filename) + var outStream = fs.createWriteStream(finalPath) + + file.stream.pipe(outStream) + outStream.on('error', cb) + outStream.on('finish', function () { + cb(null, { + destination: destination, + filename: filename, + path: finalPath, + size: outStream.bytesWritten + }) + }) + }) + }) +} + +DiskStorage.prototype._removeFile = function _removeFile (req, file, cb) { + var path = file.path + + delete file.destination + delete file.filename + delete file.path + + fs.unlink(path, cb) +} + +module.exports = function (opts) { + return new DiskStorage(opts) +} diff --git a/bff/node_modules/multer/storage/memory.js b/bff/node_modules/multer/storage/memory.js new file mode 100644 index 0000000..f953ded --- /dev/null +++ b/bff/node_modules/multer/storage/memory.js @@ -0,0 +1,21 @@ +var concat = require('concat-stream') + +function MemoryStorage (opts) {} + +MemoryStorage.prototype._handleFile = function _handleFile (req, file, cb) { + file.stream.pipe(concat({ encoding: 'buffer' }, function (data) { + cb(null, { + buffer: data, + size: data.length + }) + })) +} + +MemoryStorage.prototype._removeFile = function _removeFile (req, file, cb) { + delete file.buffer + cb(null) +} + +module.exports = function (opts) { + return new MemoryStorage(opts) +} diff --git a/bff/node_modules/negotiator/HISTORY.md b/bff/node_modules/negotiator/HISTORY.md new file mode 100644 index 0000000..63d537d --- /dev/null +++ b/bff/node_modules/negotiator/HISTORY.md @@ -0,0 +1,114 @@ +1.0.0 / 2024-08-31 +================== + + * Drop support for node <18 + * Added an option preferred encodings array #59 + +0.6.3 / 2022-01-22 +================== + + * Revert "Lazy-load modules from main entry point" + +0.6.2 / 2019-04-29 +================== + + * Fix sorting charset, encoding, and language with extra parameters + +0.6.1 / 2016-05-02 +================== + + * perf: improve `Accept` parsing speed + * perf: improve `Accept-Charset` parsing speed + * perf: improve `Accept-Encoding` parsing speed + * perf: improve `Accept-Language` parsing speed + +0.6.0 / 2015-09-29 +================== + + * Fix including type extensions in parameters in `Accept` parsing + * Fix parsing `Accept` parameters with quoted equals + * Fix parsing `Accept` parameters with quoted semicolons + * Lazy-load modules from main entry point + * perf: delay type concatenation until needed + * perf: enable strict mode + * perf: hoist regular expressions + * perf: remove closures getting spec properties + * perf: remove a closure from media type parsing + * perf: remove property delete from media type parsing + +0.5.3 / 2015-05-10 +================== + + * Fix media type parameter matching to be case-insensitive + +0.5.2 / 2015-05-06 +================== + + * Fix comparing media types with quoted values + * Fix splitting media types with quoted commas + +0.5.1 / 2015-02-14 +================== + + * Fix preference sorting to be stable for long acceptable lists + +0.5.0 / 2014-12-18 +================== + + * Fix list return order when large accepted list + * Fix missing identity encoding when q=0 exists + * Remove dynamic building of Negotiator class + +0.4.9 / 2014-10-14 +================== + + * Fix error when media type has invalid parameter + +0.4.8 / 2014-09-28 +================== + + * Fix all negotiations to be case-insensitive + * Stable sort preferences of same quality according to client order + * Support Node.js 0.6 + +0.4.7 / 2014-06-24 +================== + + * Handle invalid provided languages + * Handle invalid provided media types + +0.4.6 / 2014-06-11 +================== + + * Order by specificity when quality is the same + +0.4.5 / 2014-05-29 +================== + + * Fix regression in empty header handling + +0.4.4 / 2014-05-29 +================== + + * Fix behaviors when headers are not present + +0.4.3 / 2014-04-16 +================== + + * Handle slashes on media params correctly + +0.4.2 / 2014-02-28 +================== + + * Fix media type sorting + * Handle media types params strictly + +0.4.1 / 2014-01-16 +================== + + * Use most specific matches + +0.4.0 / 2014-01-09 +================== + + * Remove preferred prefix from methods diff --git a/bff/node_modules/negotiator/LICENSE b/bff/node_modules/negotiator/LICENSE new file mode 100644 index 0000000..ea6b9e2 --- /dev/null +++ b/bff/node_modules/negotiator/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2012-2014 Federico Romero +Copyright (c) 2012-2014 Isaac Z. Schlueter +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/negotiator/README.md b/bff/node_modules/negotiator/README.md new file mode 100644 index 0000000..6fb7f2d --- /dev/null +++ b/bff/node_modules/negotiator/README.md @@ -0,0 +1,212 @@ +# negotiator + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +An HTTP content negotiator for Node.js + +## Installation + +```sh +$ npm install negotiator +``` + +## API + +```js +var Negotiator = require('negotiator') +``` + +### Accept Negotiation + +```js +availableMediaTypes = ['text/html', 'text/plain', 'application/json'] + +// The negotiator constructor receives a request object +negotiator = new Negotiator(request) + +// Let's say Accept header is 'text/html, application/*;q=0.2, image/jpeg;q=0.8' + +negotiator.mediaTypes() +// -> ['text/html', 'image/jpeg', 'application/*'] + +negotiator.mediaTypes(availableMediaTypes) +// -> ['text/html', 'application/json'] + +negotiator.mediaType(availableMediaTypes) +// -> 'text/html' +``` + +You can check a working example at `examples/accept.js`. + +#### Methods + +##### mediaType() + +Returns the most preferred media type from the client. + +##### mediaType(availableMediaType) + +Returns the most preferred media type from a list of available media types. + +##### mediaTypes() + +Returns an array of preferred media types ordered by the client preference. + +##### mediaTypes(availableMediaTypes) + +Returns an array of preferred media types ordered by priority from a list of +available media types. + +### Accept-Language Negotiation + +```js +negotiator = new Negotiator(request) + +availableLanguages = ['en', 'es', 'fr'] + +// Let's say Accept-Language header is 'en;q=0.8, es, pt' + +negotiator.languages() +// -> ['es', 'pt', 'en'] + +negotiator.languages(availableLanguages) +// -> ['es', 'en'] + +language = negotiator.language(availableLanguages) +// -> 'es' +``` + +You can check a working example at `examples/language.js`. + +#### Methods + +##### language() + +Returns the most preferred language from the client. + +##### language(availableLanguages) + +Returns the most preferred language from a list of available languages. + +##### languages() + +Returns an array of preferred languages ordered by the client preference. + +##### languages(availableLanguages) + +Returns an array of preferred languages ordered by priority from a list of +available languages. + +### Accept-Charset Negotiation + +```js +availableCharsets = ['utf-8', 'iso-8859-1', 'iso-8859-5'] + +negotiator = new Negotiator(request) + +// Let's say Accept-Charset header is 'utf-8, iso-8859-1;q=0.8, utf-7;q=0.2' + +negotiator.charsets() +// -> ['utf-8', 'iso-8859-1', 'utf-7'] + +negotiator.charsets(availableCharsets) +// -> ['utf-8', 'iso-8859-1'] + +negotiator.charset(availableCharsets) +// -> 'utf-8' +``` + +You can check a working example at `examples/charset.js`. + +#### Methods + +##### charset() + +Returns the most preferred charset from the client. + +##### charset(availableCharsets) + +Returns the most preferred charset from a list of available charsets. + +##### charsets() + +Returns an array of preferred charsets ordered by the client preference. + +##### charsets(availableCharsets) + +Returns an array of preferred charsets ordered by priority from a list of +available charsets. + +### Accept-Encoding Negotiation + +```js +availableEncodings = ['identity', 'gzip'] + +negotiator = new Negotiator(request) + +// Let's say Accept-Encoding header is 'gzip, compress;q=0.2, identity;q=0.5' + +negotiator.encodings() +// -> ['gzip', 'identity', 'compress'] + +negotiator.encodings(availableEncodings) +// -> ['gzip', 'identity'] + +negotiator.encoding(availableEncodings) +// -> 'gzip' +``` + +You can check a working example at `examples/encoding.js`. + +#### Methods + +##### encoding() + +Returns the most preferred encoding from the client. + +##### encoding(availableEncodings) + +Returns the most preferred encoding from a list of available encodings. + +##### encoding(availableEncodings, { preferred }) + +Returns the most preferred encoding from a list of available encodings, while prioritizing based on `preferred` array between same-quality encodings. + +##### encodings() + +Returns an array of preferred encodings ordered by the client preference. + +##### encodings(availableEncodings) + +Returns an array of preferred encodings ordered by priority from a list of +available encodings. + +##### encodings(availableEncodings, { preferred }) + +Returns an array of preferred encodings ordered by priority from a list of +available encodings, while prioritizing based on `preferred` array between same-quality encodings. + +## See Also + +The [accepts](https://npmjs.org/package/accepts#readme) module builds on +this module and provides an alternative interface, mime type validation, +and more. + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/negotiator.svg +[npm-url]: https://npmjs.org/package/negotiator +[node-version-image]: https://img.shields.io/node/v/negotiator.svg +[node-version-url]: https://nodejs.org/en/download/ +[coveralls-image]: https://img.shields.io/coveralls/jshttp/negotiator/master.svg +[coveralls-url]: https://coveralls.io/r/jshttp/negotiator?branch=master +[downloads-image]: https://img.shields.io/npm/dm/negotiator.svg +[downloads-url]: https://npmjs.org/package/negotiator +[github-actions-ci-image]: https://img.shields.io/github/workflow/status/jshttp/negotiator/ci/master?label=ci +[github-actions-ci-url]: https://github.com/jshttp/negotiator/actions/workflows/ci.yml diff --git a/bff/node_modules/negotiator/index.js b/bff/node_modules/negotiator/index.js new file mode 100644 index 0000000..4f51315 --- /dev/null +++ b/bff/node_modules/negotiator/index.js @@ -0,0 +1,83 @@ +/*! + * negotiator + * Copyright(c) 2012 Federico Romero + * Copyright(c) 2012-2014 Isaac Z. Schlueter + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +var preferredCharsets = require('./lib/charset') +var preferredEncodings = require('./lib/encoding') +var preferredLanguages = require('./lib/language') +var preferredMediaTypes = require('./lib/mediaType') + +/** + * Module exports. + * @public + */ + +module.exports = Negotiator; +module.exports.Negotiator = Negotiator; + +/** + * Create a Negotiator instance from a request. + * @param {object} request + * @public + */ + +function Negotiator(request) { + if (!(this instanceof Negotiator)) { + return new Negotiator(request); + } + + this.request = request; +} + +Negotiator.prototype.charset = function charset(available) { + var set = this.charsets(available); + return set && set[0]; +}; + +Negotiator.prototype.charsets = function charsets(available) { + return preferredCharsets(this.request.headers['accept-charset'], available); +}; + +Negotiator.prototype.encoding = function encoding(available, opts) { + var set = this.encodings(available, opts); + return set && set[0]; +}; + +Negotiator.prototype.encodings = function encodings(available, options) { + var opts = options || {}; + return preferredEncodings(this.request.headers['accept-encoding'], available, opts.preferred); +}; + +Negotiator.prototype.language = function language(available) { + var set = this.languages(available); + return set && set[0]; +}; + +Negotiator.prototype.languages = function languages(available) { + return preferredLanguages(this.request.headers['accept-language'], available); +}; + +Negotiator.prototype.mediaType = function mediaType(available) { + var set = this.mediaTypes(available); + return set && set[0]; +}; + +Negotiator.prototype.mediaTypes = function mediaTypes(available) { + return preferredMediaTypes(this.request.headers.accept, available); +}; + +// Backwards compatibility +Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; +Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; +Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; +Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; +Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; +Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; +Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; +Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; diff --git a/bff/node_modules/negotiator/lib/charset.js b/bff/node_modules/negotiator/lib/charset.js new file mode 100644 index 0000000..cdd0148 --- /dev/null +++ b/bff/node_modules/negotiator/lib/charset.js @@ -0,0 +1,169 @@ +/** + * negotiator + * Copyright(c) 2012 Isaac Z. Schlueter + * Copyright(c) 2014 Federico Romero + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +module.exports = preferredCharsets; +module.exports.preferredCharsets = preferredCharsets; + +/** + * Module variables. + * @private + */ + +var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + +/** + * Parse the Accept-Charset header. + * @private + */ + +function parseAcceptCharset(accept) { + var accepts = accept.split(','); + + for (var i = 0, j = 0; i < accepts.length; i++) { + var charset = parseCharset(accepts[i].trim(), i); + + if (charset) { + accepts[j++] = charset; + } + } + + // trim accepts + accepts.length = j; + + return accepts; +} + +/** + * Parse a charset from the Accept-Charset header. + * @private + */ + +function parseCharset(str, i) { + var match = simpleCharsetRegExp.exec(str); + if (!match) return null; + + var charset = match[1]; + var q = 1; + if (match[2]) { + var params = match[2].split(';') + for (var j = 0; j < params.length; j++) { + var p = params[j].trim().split('='); + if (p[0] === 'q') { + q = parseFloat(p[1]); + break; + } + } + } + + return { + charset: charset, + q: q, + i: i + }; +} + +/** + * Get the priority of a charset. + * @private + */ + +function getCharsetPriority(charset, accepted, index) { + var priority = {o: -1, q: 0, s: 0}; + + for (var i = 0; i < accepted.length; i++) { + var spec = specify(charset, accepted[i], index); + + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + + return priority; +} + +/** + * Get the specificity of the charset. + * @private + */ + +function specify(charset, spec, index) { + var s = 0; + if(spec.charset.toLowerCase() === charset.toLowerCase()){ + s |= 1; + } else if (spec.charset !== '*' ) { + return null + } + + return { + i: index, + o: spec.i, + q: spec.q, + s: s + } +} + +/** + * Get the preferred charsets from an Accept-Charset header. + * @public + */ + +function preferredCharsets(accept, provided) { + // RFC 2616 sec 14.2: no header = * + var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || ''); + + if (!provided) { + // sorted list of all charsets + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map(getFullCharset); + } + + var priorities = provided.map(function getPriority(type, index) { + return getCharsetPriority(type, accepts, index); + }); + + // sorted list of accepted charsets + return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) { + return provided[priorities.indexOf(priority)]; + }); +} + +/** + * Compare two specs. + * @private + */ + +function compareSpecs(a, b) { + return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; +} + +/** + * Get full charset string. + * @private + */ + +function getFullCharset(spec) { + return spec.charset; +} + +/** + * Check if a spec has any quality. + * @private + */ + +function isQuality(spec) { + return spec.q > 0; +} diff --git a/bff/node_modules/negotiator/lib/encoding.js b/bff/node_modules/negotiator/lib/encoding.js new file mode 100644 index 0000000..9ebb633 --- /dev/null +++ b/bff/node_modules/negotiator/lib/encoding.js @@ -0,0 +1,205 @@ +/** + * negotiator + * Copyright(c) 2012 Isaac Z. Schlueter + * Copyright(c) 2014 Federico Romero + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +module.exports = preferredEncodings; +module.exports.preferredEncodings = preferredEncodings; + +/** + * Module variables. + * @private + */ + +var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; + +/** + * Parse the Accept-Encoding header. + * @private + */ + +function parseAcceptEncoding(accept) { + var accepts = accept.split(','); + var hasIdentity = false; + var minQuality = 1; + + for (var i = 0, j = 0; i < accepts.length; i++) { + var encoding = parseEncoding(accepts[i].trim(), i); + + if (encoding) { + accepts[j++] = encoding; + hasIdentity = hasIdentity || specify('identity', encoding); + minQuality = Math.min(minQuality, encoding.q || 1); + } + } + + if (!hasIdentity) { + /* + * If identity doesn't explicitly appear in the accept-encoding header, + * it's added to the list of acceptable encoding with the lowest q + */ + accepts[j++] = { + encoding: 'identity', + q: minQuality, + i: i + }; + } + + // trim accepts + accepts.length = j; + + return accepts; +} + +/** + * Parse an encoding from the Accept-Encoding header. + * @private + */ + +function parseEncoding(str, i) { + var match = simpleEncodingRegExp.exec(str); + if (!match) return null; + + var encoding = match[1]; + var q = 1; + if (match[2]) { + var params = match[2].split(';'); + for (var j = 0; j < params.length; j++) { + var p = params[j].trim().split('='); + if (p[0] === 'q') { + q = parseFloat(p[1]); + break; + } + } + } + + return { + encoding: encoding, + q: q, + i: i + }; +} + +/** + * Get the priority of an encoding. + * @private + */ + +function getEncodingPriority(encoding, accepted, index) { + var priority = {encoding: encoding, o: -1, q: 0, s: 0}; + + for (var i = 0; i < accepted.length; i++) { + var spec = specify(encoding, accepted[i], index); + + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + + return priority; +} + +/** + * Get the specificity of the encoding. + * @private + */ + +function specify(encoding, spec, index) { + var s = 0; + if(spec.encoding.toLowerCase() === encoding.toLowerCase()){ + s |= 1; + } else if (spec.encoding !== '*' ) { + return null + } + + return { + encoding: encoding, + i: index, + o: spec.i, + q: spec.q, + s: s + } +}; + +/** + * Get the preferred encodings from an Accept-Encoding header. + * @public + */ + +function preferredEncodings(accept, provided, preferred) { + var accepts = parseAcceptEncoding(accept || ''); + + var comparator = preferred ? function comparator (a, b) { + if (a.q !== b.q) { + return b.q - a.q // higher quality first + } + + var aPreferred = preferred.indexOf(a.encoding) + var bPreferred = preferred.indexOf(b.encoding) + + if (aPreferred === -1 && bPreferred === -1) { + // consider the original specifity/order + return (b.s - a.s) || (a.o - b.o) || (a.i - b.i) + } + + if (aPreferred !== -1 && bPreferred !== -1) { + return aPreferred - bPreferred // consider the preferred order + } + + return aPreferred === -1 ? 1 : -1 // preferred first + } : compareSpecs; + + if (!provided) { + // sorted list of all encodings + return accepts + .filter(isQuality) + .sort(comparator) + .map(getFullEncoding); + } + + var priorities = provided.map(function getPriority(type, index) { + return getEncodingPriority(type, accepts, index); + }); + + // sorted list of accepted encodings + return priorities.filter(isQuality).sort(comparator).map(function getEncoding(priority) { + return provided[priorities.indexOf(priority)]; + }); +} + +/** + * Compare two specs. + * @private + */ + +function compareSpecs(a, b) { + return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i); +} + +/** + * Get full encoding string. + * @private + */ + +function getFullEncoding(spec) { + return spec.encoding; +} + +/** + * Check if a spec has any quality. + * @private + */ + +function isQuality(spec) { + return spec.q > 0; +} diff --git a/bff/node_modules/negotiator/lib/language.js b/bff/node_modules/negotiator/lib/language.js new file mode 100644 index 0000000..a231672 --- /dev/null +++ b/bff/node_modules/negotiator/lib/language.js @@ -0,0 +1,179 @@ +/** + * negotiator + * Copyright(c) 2012 Isaac Z. Schlueter + * Copyright(c) 2014 Federico Romero + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +module.exports = preferredLanguages; +module.exports.preferredLanguages = preferredLanguages; + +/** + * Module variables. + * @private + */ + +var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; + +/** + * Parse the Accept-Language header. + * @private + */ + +function parseAcceptLanguage(accept) { + var accepts = accept.split(','); + + for (var i = 0, j = 0; i < accepts.length; i++) { + var language = parseLanguage(accepts[i].trim(), i); + + if (language) { + accepts[j++] = language; + } + } + + // trim accepts + accepts.length = j; + + return accepts; +} + +/** + * Parse a language from the Accept-Language header. + * @private + */ + +function parseLanguage(str, i) { + var match = simpleLanguageRegExp.exec(str); + if (!match) return null; + + var prefix = match[1] + var suffix = match[2] + var full = prefix + + if (suffix) full += "-" + suffix; + + var q = 1; + if (match[3]) { + var params = match[3].split(';') + for (var j = 0; j < params.length; j++) { + var p = params[j].split('='); + if (p[0] === 'q') q = parseFloat(p[1]); + } + } + + return { + prefix: prefix, + suffix: suffix, + q: q, + i: i, + full: full + }; +} + +/** + * Get the priority of a language. + * @private + */ + +function getLanguagePriority(language, accepted, index) { + var priority = {o: -1, q: 0, s: 0}; + + for (var i = 0; i < accepted.length; i++) { + var spec = specify(language, accepted[i], index); + + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + + return priority; +} + +/** + * Get the specificity of the language. + * @private + */ + +function specify(language, spec, index) { + var p = parseLanguage(language) + if (!p) return null; + var s = 0; + if(spec.full.toLowerCase() === p.full.toLowerCase()){ + s |= 4; + } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { + s |= 2; + } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { + s |= 1; + } else if (spec.full !== '*' ) { + return null + } + + return { + i: index, + o: spec.i, + q: spec.q, + s: s + } +}; + +/** + * Get the preferred languages from an Accept-Language header. + * @public + */ + +function preferredLanguages(accept, provided) { + // RFC 2616 sec 14.4: no header = * + var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || ''); + + if (!provided) { + // sorted list of all languages + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map(getFullLanguage); + } + + var priorities = provided.map(function getPriority(type, index) { + return getLanguagePriority(type, accepts, index); + }); + + // sorted list of accepted languages + return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) { + return provided[priorities.indexOf(priority)]; + }); +} + +/** + * Compare two specs. + * @private + */ + +function compareSpecs(a, b) { + return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; +} + +/** + * Get full language string. + * @private + */ + +function getFullLanguage(spec) { + return spec.full; +} + +/** + * Check if a spec has any quality. + * @private + */ + +function isQuality(spec) { + return spec.q > 0; +} diff --git a/bff/node_modules/negotiator/lib/mediaType.js b/bff/node_modules/negotiator/lib/mediaType.js new file mode 100644 index 0000000..8e402ea --- /dev/null +++ b/bff/node_modules/negotiator/lib/mediaType.js @@ -0,0 +1,294 @@ +/** + * negotiator + * Copyright(c) 2012 Isaac Z. Schlueter + * Copyright(c) 2014 Federico Romero + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict'; + +/** + * Module exports. + * @public + */ + +module.exports = preferredMediaTypes; +module.exports.preferredMediaTypes = preferredMediaTypes; + +/** + * Module variables. + * @private + */ + +var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; + +/** + * Parse the Accept header. + * @private + */ + +function parseAccept(accept) { + var accepts = splitMediaTypes(accept); + + for (var i = 0, j = 0; i < accepts.length; i++) { + var mediaType = parseMediaType(accepts[i].trim(), i); + + if (mediaType) { + accepts[j++] = mediaType; + } + } + + // trim accepts + accepts.length = j; + + return accepts; +} + +/** + * Parse a media type from the Accept header. + * @private + */ + +function parseMediaType(str, i) { + var match = simpleMediaTypeRegExp.exec(str); + if (!match) return null; + + var params = Object.create(null); + var q = 1; + var subtype = match[2]; + var type = match[1]; + + if (match[3]) { + var kvps = splitParameters(match[3]).map(splitKeyValuePair); + + for (var j = 0; j < kvps.length; j++) { + var pair = kvps[j]; + var key = pair[0].toLowerCase(); + var val = pair[1]; + + // get the value, unwrapping quotes + var value = val && val[0] === '"' && val[val.length - 1] === '"' + ? val.slice(1, -1) + : val; + + if (key === 'q') { + q = parseFloat(value); + break; + } + + // store parameter + params[key] = value; + } + } + + return { + type: type, + subtype: subtype, + params: params, + q: q, + i: i + }; +} + +/** + * Get the priority of a media type. + * @private + */ + +function getMediaTypePriority(type, accepted, index) { + var priority = {o: -1, q: 0, s: 0}; + + for (var i = 0; i < accepted.length; i++) { + var spec = specify(type, accepted[i], index); + + if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { + priority = spec; + } + } + + return priority; +} + +/** + * Get the specificity of the media type. + * @private + */ + +function specify(type, spec, index) { + var p = parseMediaType(type); + var s = 0; + + if (!p) { + return null; + } + + if(spec.type.toLowerCase() == p.type.toLowerCase()) { + s |= 4 + } else if(spec.type != '*') { + return null; + } + + if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { + s |= 2 + } else if(spec.subtype != '*') { + return null; + } + + var keys = Object.keys(spec.params); + if (keys.length > 0) { + if (keys.every(function (k) { + return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase(); + })) { + s |= 1 + } else { + return null + } + } + + return { + i: index, + o: spec.i, + q: spec.q, + s: s, + } +} + +/** + * Get the preferred media types from an Accept header. + * @public + */ + +function preferredMediaTypes(accept, provided) { + // RFC 2616 sec 14.2: no header = */* + var accepts = parseAccept(accept === undefined ? '*/*' : accept || ''); + + if (!provided) { + // sorted list of all types + return accepts + .filter(isQuality) + .sort(compareSpecs) + .map(getFullType); + } + + var priorities = provided.map(function getPriority(type, index) { + return getMediaTypePriority(type, accepts, index); + }); + + // sorted list of accepted types + return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) { + return provided[priorities.indexOf(priority)]; + }); +} + +/** + * Compare two specs. + * @private + */ + +function compareSpecs(a, b) { + return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0; +} + +/** + * Get full type string. + * @private + */ + +function getFullType(spec) { + return spec.type + '/' + spec.subtype; +} + +/** + * Check if a spec has any quality. + * @private + */ + +function isQuality(spec) { + return spec.q > 0; +} + +/** + * Count the number of quotes in a string. + * @private + */ + +function quoteCount(string) { + var count = 0; + var index = 0; + + while ((index = string.indexOf('"', index)) !== -1) { + count++; + index++; + } + + return count; +} + +/** + * Split a key value pair. + * @private + */ + +function splitKeyValuePair(str) { + var index = str.indexOf('='); + var key; + var val; + + if (index === -1) { + key = str; + } else { + key = str.slice(0, index); + val = str.slice(index + 1); + } + + return [key, val]; +} + +/** + * Split an Accept header into media types. + * @private + */ + +function splitMediaTypes(accept) { + var accepts = accept.split(','); + + for (var i = 1, j = 0; i < accepts.length; i++) { + if (quoteCount(accepts[j]) % 2 == 0) { + accepts[++j] = accepts[i]; + } else { + accepts[j] += ',' + accepts[i]; + } + } + + // trim accepts + accepts.length = j + 1; + + return accepts; +} + +/** + * Split a string of parameters. + * @private + */ + +function splitParameters(str) { + var parameters = str.split(';'); + + for (var i = 1, j = 0; i < parameters.length; i++) { + if (quoteCount(parameters[j]) % 2 == 0) { + parameters[++j] = parameters[i]; + } else { + parameters[j] += ';' + parameters[i]; + } + } + + // trim parameters + parameters.length = j + 1; + + for (var i = 0; i < parameters.length; i++) { + parameters[i] = parameters[i].trim(); + } + + return parameters; +} diff --git a/bff/node_modules/negotiator/package.json b/bff/node_modules/negotiator/package.json new file mode 100644 index 0000000..e4bdc1e --- /dev/null +++ b/bff/node_modules/negotiator/package.json @@ -0,0 +1,43 @@ +{ + "name": "negotiator", + "description": "HTTP content negotiation", + "version": "1.0.0", + "contributors": [ + "Douglas Christopher Wilson ", + "Federico Romero ", + "Isaac Z. Schlueter (http://blog.izs.me/)" + ], + "license": "MIT", + "keywords": [ + "http", + "content negotiation", + "accept", + "accept-language", + "accept-encoding", + "accept-charset" + ], + "repository": "jshttp/negotiator", + "devDependencies": { + "eslint": "7.32.0", + "eslint-plugin-markdown": "2.2.1", + "mocha": "9.1.3", + "nyc": "15.1.0" + }, + "files": [ + "lib/", + "HISTORY.md", + "LICENSE", + "index.js", + "README.md" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test:debug": "mocha --reporter spec --check-leaks --inspect --inspect-brk test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/object-assign/index.js b/bff/node_modules/object-assign/index.js new file mode 100644 index 0000000..0930cf8 --- /dev/null +++ b/bff/node_modules/object-assign/index.js @@ -0,0 +1,90 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + +'use strict'; +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; diff --git a/bff/node_modules/object-assign/license b/bff/node_modules/object-assign/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/bff/node_modules/object-assign/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/object-assign/package.json b/bff/node_modules/object-assign/package.json new file mode 100644 index 0000000..503eb1e --- /dev/null +++ b/bff/node_modules/object-assign/package.json @@ -0,0 +1,42 @@ +{ + "name": "object-assign", + "version": "4.1.1", + "description": "ES2015 `Object.assign()` ponyfill", + "license": "MIT", + "repository": "sindresorhus/object-assign", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "xo && ava", + "bench": "matcha bench.js" + }, + "files": [ + "index.js" + ], + "keywords": [ + "object", + "assign", + "extend", + "properties", + "es2015", + "ecmascript", + "harmony", + "ponyfill", + "prollyfill", + "polyfill", + "shim", + "browser" + ], + "devDependencies": { + "ava": "^0.16.0", + "lodash": "^4.16.4", + "matcha": "^0.7.0", + "xo": "^0.16.0" + } +} diff --git a/bff/node_modules/object-assign/readme.md b/bff/node_modules/object-assign/readme.md new file mode 100644 index 0000000..1be09d3 --- /dev/null +++ b/bff/node_modules/object-assign/readme.md @@ -0,0 +1,61 @@ +# object-assign [![Build Status](https://travis-ci.org/sindresorhus/object-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/object-assign) + +> ES2015 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) [ponyfill](https://ponyfill.com) + + +## Use the built-in + +Node.js 4 and up, as well as every evergreen browser (Chrome, Edge, Firefox, Opera, Safari), +support `Object.assign()` :tada:. If you target only those environments, then by all +means, use `Object.assign()` instead of this package. + + +## Install + +``` +$ npm install --save object-assign +``` + + +## Usage + +```js +const objectAssign = require('object-assign'); + +objectAssign({foo: 0}, {bar: 1}); +//=> {foo: 0, bar: 1} + +// multiple sources +objectAssign({foo: 0}, {bar: 1}, {baz: 2}); +//=> {foo: 0, bar: 1, baz: 2} + +// overwrites equal keys +objectAssign({foo: 0}, {foo: 1}, {foo: 2}); +//=> {foo: 2} + +// ignores null and undefined sources +objectAssign({foo: 0}, null, {bar: 1}, undefined); +//=> {foo: 0, bar: 1} +``` + + +## API + +### objectAssign(target, [source, ...]) + +Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones. + + +## Resources + +- [ES2015 spec - Object.assign](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.assign) + + +## Related + +- [deep-assign](https://github.com/sindresorhus/deep-assign) - Recursive `Object.assign()` + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/bff/node_modules/object-inspect/.eslintrc b/bff/node_modules/object-inspect/.eslintrc new file mode 100644 index 0000000..21f9039 --- /dev/null +++ b/bff/node_modules/object-inspect/.eslintrc @@ -0,0 +1,53 @@ +{ + "root": true, + "extends": "@ljharb", + "rules": { + "complexity": 0, + "func-style": [2, "declaration"], + "indent": [2, 4], + "max-lines": 1, + "max-lines-per-function": 1, + "max-params": [2, 4], + "max-statements": 0, + "max-statements-per-line": [2, { "max": 2 }], + "no-magic-numbers": 0, + "no-param-reassign": 1, + "strict": 0, // TODO + }, + "overrides": [ + { + "files": ["test/**", "test-*", "example/**"], + "extends": "@ljharb/eslint-config/tests", + "rules": { + "id-length": 0, + }, + }, + { + "files": ["example/**"], + "rules": { + "no-console": 0, + }, + }, + { + "files": ["test/browser/**"], + "env": { + "browser": true, + }, + }, + { + "files": ["test/bigint*"], + "rules": { + "new-cap": [2, { "capIsNewExceptions": ["BigInt"] }], + }, + }, + { + "files": "index.js", + "globals": { + "HTMLElement": false, + }, + "rules": { + "no-use-before-define": 1, + }, + }, + ], +} diff --git a/bff/node_modules/object-inspect/.github/FUNDING.yml b/bff/node_modules/object-inspect/.github/FUNDING.yml new file mode 100644 index 0000000..730276b --- /dev/null +++ b/bff/node_modules/object-inspect/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/object-inspect +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/object-inspect/.nycrc b/bff/node_modules/object-inspect/.nycrc new file mode 100644 index 0000000..58a5db7 --- /dev/null +++ b/bff/node_modules/object-inspect/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "instrumentation": false, + "sourceMap": false, + "reporter": ["text-summary", "text", "html", "json"], + "exclude": [ + "coverage", + "example", + "test", + "test-core-js.js" + ] +} diff --git a/bff/node_modules/object-inspect/CHANGELOG.md b/bff/node_modules/object-inspect/CHANGELOG.md new file mode 100644 index 0000000..bdf9002 --- /dev/null +++ b/bff/node_modules/object-inspect/CHANGELOG.md @@ -0,0 +1,424 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.13.4](https://github.com/inspect-js/object-inspect/compare/v1.13.3...v1.13.4) - 2025-02-04 + +### Commits + +- [Fix] avoid being fooled by a `Symbol.toStringTag` [`fa5870d`](https://github.com/inspect-js/object-inspect/commit/fa5870da468a525d2f20193700f70752f506cbf7) +- [Tests] fix tests in node v6.0 - v6.4 [`2abfe1b`](https://github.com/inspect-js/object-inspect/commit/2abfe1bc3c69f9293c07c5cd65a9d7d87a628b84) +- [Dev Deps] update `es-value-fixtures`, `for-each`, `has-symbols` [`3edfb01`](https://github.com/inspect-js/object-inspect/commit/3edfb01cc8cce220fba0dfdfe2dc8bc955758cdd) + +## [v1.13.3](https://github.com/inspect-js/object-inspect/compare/v1.13.2...v1.13.3) - 2024-11-09 + +### Commits + +- [actions] split out node 10-20, and 20+ [`44395a8`](https://github.com/inspect-js/object-inspect/commit/44395a8fc1deda6718a5e125e86b9ffcaa1c7580) +- [Fix] `quoteStyle`: properly escape only the containing quotes [`5137f8f`](https://github.com/inspect-js/object-inspect/commit/5137f8f7bea69a7fc671bb683fd35f244f38fc52) +- [Refactor] clean up `quoteStyle` code [`450680c`](https://github.com/inspect-js/object-inspect/commit/450680cd50de4e689ee3b8e1d6db3a1bcf3fc18c) +- [Tests] add `quoteStyle` escaping tests [`e997c59`](https://github.com/inspect-js/object-inspect/commit/e997c595aeaea84fd98ca35d7e1c3b5ab3ae26e0) +- [Dev Deps] update `auto-changelog`, `es-value-fixtures`, `tape` [`d5a469c`](https://github.com/inspect-js/object-inspect/commit/d5a469c99ec07ccaeafc36ac4b36a93285086d48) +- [Tests] replace `aud` with `npm audit` [`fb7815f`](https://github.com/inspect-js/object-inspect/commit/fb7815f9b72cae277a04f65bbb0543f85b88be62) +- [Dev Deps] update `mock-property` [`11c817b`](https://github.com/inspect-js/object-inspect/commit/11c817bf10392aa017755962ba6bc89d731359ee) + +## [v1.13.2](https://github.com/inspect-js/object-inspect/compare/v1.13.1...v1.13.2) - 2024-06-21 + +### Commits + +- [readme] update badges [`8a51e6b`](https://github.com/inspect-js/object-inspect/commit/8a51e6bedaf389ec40cc4659e9df53e8543d176e) +- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`ef05f58`](https://github.com/inspect-js/object-inspect/commit/ef05f58c9761a41416ab907299bf0fa79517014b) +- [Dev Deps] update `error-cause`, `has-tostringtag`, `tape` [`c0c6c26`](https://github.com/inspect-js/object-inspect/commit/c0c6c26c44cee6671f7c5d43d2b91d27c5c00d90) +- [Fix] Don't throw when `global` is not defined [`d4d0965`](https://github.com/inspect-js/object-inspect/commit/d4d096570f7dbd0e03266a96de11d05eb7b63e0f) +- [meta] add missing `engines.node` [`17a352a`](https://github.com/inspect-js/object-inspect/commit/17a352af6fe1ba6b70a19081674231eb1a50c940) +- [Dev Deps] update `globalthis` [`9c08884`](https://github.com/inspect-js/object-inspect/commit/9c08884aa662a149e2f11403f413927736b97da7) +- [Dev Deps] update `error-cause` [`6af352d`](https://github.com/inspect-js/object-inspect/commit/6af352d7c3929a4cc4c55768c27bf547a5e900f4) +- [Dev Deps] update `npmignore` [`94e617d`](https://github.com/inspect-js/object-inspect/commit/94e617d38831722562fa73dff4c895746861d267) +- [Dev Deps] update `mock-property` [`2ac24d7`](https://github.com/inspect-js/object-inspect/commit/2ac24d7e58cd388ad093c33249e413e05bbfd6c3) +- [Dev Deps] update `tape` [`46125e5`](https://github.com/inspect-js/object-inspect/commit/46125e58f1d1dcfb170ed3d1ea69da550ea8d77b) + +## [v1.13.1](https://github.com/inspect-js/object-inspect/compare/v1.13.0...v1.13.1) - 2023-10-19 + +### Commits + +- [Fix] in IE 8, global can !== window despite them being prototypes of each other [`30d0859`](https://github.com/inspect-js/object-inspect/commit/30d0859dc4606cf75c2410edcd5d5c6355f8d372) + +## [v1.13.0](https://github.com/inspect-js/object-inspect/compare/v1.12.3...v1.13.0) - 2023-10-14 + +### Commits + +- [New] add special handling for the global object [`431bab2`](https://github.com/inspect-js/object-inspect/commit/431bab21a490ee51d35395966a504501e8c685da) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`fd4f619`](https://github.com/inspect-js/object-inspect/commit/fd4f6193562b4b0e95dcf5c0201b4e8cbbc4f58d) +- [Dev Deps] update `mock-property`, `tape` [`b453f6c`](https://github.com/inspect-js/object-inspect/commit/b453f6ceeebf8a1b738a1029754092e0367a4134) +- [Dev Deps] update `error-cause` [`e8ffc57`](https://github.com/inspect-js/object-inspect/commit/e8ffc577d73b92bb6a4b00c44f14e3319e374888) +- [Dev Deps] update `tape` [`054b8b9`](https://github.com/inspect-js/object-inspect/commit/054b8b9b98633284cf989e582450ebfbbe53503c) +- [Dev Deps] temporarily remove `aud` due to breaking change in transitive deps [`2476845`](https://github.com/inspect-js/object-inspect/commit/2476845e0678dd290c541c81cd3dec8420782c52) +- [Dev Deps] pin `glob`, since v10.3.8+ requires a broken `jackspeak` [`383fa5e`](https://github.com/inspect-js/object-inspect/commit/383fa5eebc0afd705cc778a4b49d8e26452e49a8) +- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 [`68c244c`](https://github.com/inspect-js/object-inspect/commit/68c244c5174cdd877e5dcb8ee90aa3f44b2f25be) + +## [v1.12.3](https://github.com/inspect-js/object-inspect/compare/v1.12.2...v1.12.3) - 2023-01-12 + +### Commits + +- [Fix] in eg FF 24, collections lack forEach [`75fc226`](https://github.com/inspect-js/object-inspect/commit/75fc22673c82d45f28322b1946bb0eb41b672b7f) +- [actions] update rebase action to use reusable workflow [`250a277`](https://github.com/inspect-js/object-inspect/commit/250a277a095e9dacc029ab8454dcfc15de549dcd) +- [Dev Deps] update `aud`, `es-value-fixtures`, `tape` [`66a19b3`](https://github.com/inspect-js/object-inspect/commit/66a19b3209ccc3c5ef4b34c3cb0160e65d1ce9d5) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `error-cause` [`c43d332`](https://github.com/inspect-js/object-inspect/commit/c43d3324b48384a16fd3dc444e5fc589d785bef3) +- [Tests] add `@pkgjs/support` to `postlint` [`e2618d2`](https://github.com/inspect-js/object-inspect/commit/e2618d22a7a3fa361b6629b53c1752fddc9c4d80) + +## [v1.12.2](https://github.com/inspect-js/object-inspect/compare/v1.12.1...v1.12.2) - 2022-05-26 + +### Commits + +- [Fix] use `util.inspect` for a custom inspection symbol method [`e243bf2`](https://github.com/inspect-js/object-inspect/commit/e243bf2eda6c4403ac6f1146fddb14d12e9646c1) +- [meta] add support info [`ca20ba3`](https://github.com/inspect-js/object-inspect/commit/ca20ba35713c17068ca912a86c542f5e8acb656c) +- [Fix] ignore `cause` in node v16.9 and v16.10 where it has a bug [`86aa553`](https://github.com/inspect-js/object-inspect/commit/86aa553a4a455562c2c56f1540f0bf857b9d314b) + +## [v1.12.1](https://github.com/inspect-js/object-inspect/compare/v1.12.0...v1.12.1) - 2022-05-21 + +### Commits + +- [Tests] use `mock-property` [`4ec8893`](https://github.com/inspect-js/object-inspect/commit/4ec8893ea9bfd28065ca3638cf6762424bf44352) +- [meta] use `npmignore` to autogenerate an npmignore file [`07f868c`](https://github.com/inspect-js/object-inspect/commit/07f868c10bd25a9d18686528339bb749c211fc9a) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`b05244b`](https://github.com/inspect-js/object-inspect/commit/b05244b4f331e00c43b3151bc498041be77ccc91) +- [Dev Deps] update `@ljharb/eslint-config`, `error-cause`, `es-value-fixtures`, `functions-have-names`, `tape` [`d037398`](https://github.com/inspect-js/object-inspect/commit/d037398dcc5d531532e4c19c4a711ed677f579c1) +- [Fix] properly handle callable regexes in older engines [`848fe48`](https://github.com/inspect-js/object-inspect/commit/848fe48bd6dd0064ba781ee6f3c5e54a94144c37) + +## [v1.12.0](https://github.com/inspect-js/object-inspect/compare/v1.11.1...v1.12.0) - 2021-12-18 + +### Commits + +- [New] add `numericSeparator` boolean option [`2d2d537`](https://github.com/inspect-js/object-inspect/commit/2d2d537f5359a4300ce1c10241369f8024f89e11) +- [Robustness] cache more prototype methods [`191533d`](https://github.com/inspect-js/object-inspect/commit/191533da8aec98a05eadd73a5a6e979c9c8653e8) +- [New] ensure an Error’s `cause` is displayed [`53bc2ce`](https://github.com/inspect-js/object-inspect/commit/53bc2cee4e5a9cc4986f3cafa22c0685f340715e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`bc164b6`](https://github.com/inspect-js/object-inspect/commit/bc164b6e2e7d36b263970f16f54de63048b84a36) +- [Robustness] cache `RegExp.prototype.test` [`a314ab8`](https://github.com/inspect-js/object-inspect/commit/a314ab8271b905cbabc594c82914d2485a8daf12) +- [meta] fix auto-changelog settings [`5ed0983`](https://github.com/inspect-js/object-inspect/commit/5ed0983be72f73e32e2559997517a95525c7e20d) + +## [v1.11.1](https://github.com/inspect-js/object-inspect/compare/v1.11.0...v1.11.1) - 2021-12-05 + +### Commits + +- [meta] add `auto-changelog` [`7dbdd22`](https://github.com/inspect-js/object-inspect/commit/7dbdd228401d6025d8b7391476d88aee9ea9bbdf) +- [actions] reuse common workflows [`c8823bc`](https://github.com/inspect-js/object-inspect/commit/c8823bc0a8790729680709d45fb6e652432e91aa) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `tape` [`7532b12`](https://github.com/inspect-js/object-inspect/commit/7532b120598307497b712890f75af8056f6d37a6) +- [Refactor] use `has-tostringtag` to behave correctly in the presence of symbol shams [`94abb5d`](https://github.com/inspect-js/object-inspect/commit/94abb5d4e745bf33253942dea86b3e538d2ff6c6) +- [actions] update codecov uploader [`5ed5102`](https://github.com/inspect-js/object-inspect/commit/5ed51025267a00e53b1341357315490ac4eb0874) +- [Dev Deps] update `eslint`, `tape` [`37b2ad2`](https://github.com/inspect-js/object-inspect/commit/37b2ad26c08d94bfd01d5d07069a0b28ef4e2ad7) +- [meta] add `sideEffects` flag [`d341f90`](https://github.com/inspect-js/object-inspect/commit/d341f905ef8bffa6a694cda6ddc5ba343532cd4f) + +## [v1.11.0](https://github.com/inspect-js/object-inspect/compare/v1.10.3...v1.11.0) - 2021-07-12 + +### Commits + +- [New] `customInspect`: add `symbol` option, to mimic modern util.inspect behavior [`e973a6e`](https://github.com/inspect-js/object-inspect/commit/e973a6e21f8140c5837cf25e9d89bdde88dc3120) +- [Dev Deps] update `eslint` [`05f1cb3`](https://github.com/inspect-js/object-inspect/commit/05f1cb3cbcfe1f238e8b51cf9bc294305b7ed793) + +## [v1.10.3](https://github.com/inspect-js/object-inspect/compare/v1.10.2...v1.10.3) - 2021-05-07 + +### Commits + +- [Fix] handle core-js Symbol shams [`4acfc2c`](https://github.com/inspect-js/object-inspect/commit/4acfc2c4b503498759120eb517abad6d51c9c5d6) +- [readme] update badges [`95c323a`](https://github.com/inspect-js/object-inspect/commit/95c323ad909d6cbabb95dd6015c190ba6db9c1f2) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud` [`cb38f48`](https://github.com/inspect-js/object-inspect/commit/cb38f485de6ec7a95109b5a9bbd0a1deba2f6611) + +## [v1.10.2](https://github.com/inspect-js/object-inspect/compare/v1.10.1...v1.10.2) - 2021-04-17 + +### Commits + +- [Fix] use a robust check for a boxed Symbol [`87f12d6`](https://github.com/inspect-js/object-inspect/commit/87f12d6e69ce530be04659c81a4cd502943acac5) + +## [v1.10.1](https://github.com/inspect-js/object-inspect/compare/v1.10.0...v1.10.1) - 2021-04-17 + +### Commits + +- [Fix] use a robust check for a boxed bigint [`d5ca829`](https://github.com/inspect-js/object-inspect/commit/d5ca8298b6d2e5c7b9334a5b21b96ed95d225c91) + +## [v1.10.0](https://github.com/inspect-js/object-inspect/compare/v1.9.0...v1.10.0) - 2021-04-17 + +### Commits + +- [Tests] increase coverage [`d8abb8a`](https://github.com/inspect-js/object-inspect/commit/d8abb8a62c2f084919df994a433b346e0d87a227) +- [actions] use `node/install` instead of `node/run`; use `codecov` action [`4bfec2e`](https://github.com/inspect-js/object-inspect/commit/4bfec2e30aaef6ddef6cbb1448306f9f8b9520b7) +- [New] respect `Symbol.toStringTag` on objects [`799b58f`](https://github.com/inspect-js/object-inspect/commit/799b58f536a45e4484633a8e9daeb0330835f175) +- [Fix] do not allow Symbol.toStringTag to masquerade as builtins [`d6c5b37`](https://github.com/inspect-js/object-inspect/commit/d6c5b37d7e94427796b82432fb0c8964f033a6ab) +- [New] add `WeakRef` support [`b6d898e`](https://github.com/inspect-js/object-inspect/commit/b6d898ee21868c780a7ee66b28532b5b34ed7f09) +- [meta] do not publish github action workflow files [`918cdfc`](https://github.com/inspect-js/object-inspect/commit/918cdfc4b6fe83f559ff6ef04fe66201e3ff5cbd) +- [meta] create `FUNDING.yml` [`0bb5fc5`](https://github.com/inspect-js/object-inspect/commit/0bb5fc516dbcd2cd728bd89cee0b580acc5ce301) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `tape` [`22c8dc0`](https://github.com/inspect-js/object-inspect/commit/22c8dc0cac113d70f4781e49a950070923a671be) +- [meta] use `prepublishOnly` script for npm 7+ [`e52ee09`](https://github.com/inspect-js/object-inspect/commit/e52ee09e8050b8dbac94ef57f786675567728223) +- [Dev Deps] update `eslint` [`7c4e6fd`](https://github.com/inspect-js/object-inspect/commit/7c4e6fdedcd27cc980e13c9ad834d05a96f3d40c) + +## [v1.9.0](https://github.com/inspect-js/object-inspect/compare/v1.8.0...v1.9.0) - 2020-11-30 + +### Commits + +- [Tests] migrate tests to Github Actions [`d262251`](https://github.com/inspect-js/object-inspect/commit/d262251e13e16d3490b5473672f6b6d6ff86675d) +- [New] add enumerable own Symbols to plain object output [`ee60c03`](https://github.com/inspect-js/object-inspect/commit/ee60c033088cff9d33baa71e59a362a541b48284) +- [Tests] add passing tests [`01ac3e4`](https://github.com/inspect-js/object-inspect/commit/01ac3e4b5a30f97875a63dc9b1416b3bd626afc9) +- [actions] add "Require Allow Edits" action [`c2d7746`](https://github.com/inspect-js/object-inspect/commit/c2d774680cde4ca4af332d84d4121b26f798ba9e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `core-js` [`70058de`](https://github.com/inspect-js/object-inspect/commit/70058de1579fc54d1d15ed6c2dbe246637ce70ff) +- [Fix] hex characters in strings should be uppercased, to match node `assert` [`6ab8faa`](https://github.com/inspect-js/object-inspect/commit/6ab8faaa0abc08fe7a8e2afd8b39c6f1f0e00113) +- [Tests] run `nyc` on all tests [`4c47372`](https://github.com/inspect-js/object-inspect/commit/4c473727879ddc8e28b599202551ddaaf07b6210) +- [Tests] node 0.8 has an unpredictable property order; fix `groups` test by removing property [`f192069`](https://github.com/inspect-js/object-inspect/commit/f192069a978a3b60e6f0e0d45ac7df260ab9a778) +- [New] add enumerable properties to Function inspect result, per node’s `assert` [`fd38e1b`](https://github.com/inspect-js/object-inspect/commit/fd38e1bc3e2a1dc82091ce3e021917462eee64fc) +- [Tests] fix tests for node < 10, due to regex match `groups` [`2ac6462`](https://github.com/inspect-js/object-inspect/commit/2ac6462cc4f72eaa0b63a8cfee9aabe3008b2330) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config` [`44b59e2`](https://github.com/inspect-js/object-inspect/commit/44b59e2676a7f825ef530dfd19dafb599e3b9456) +- [Robustness] cache `Symbol.prototype.toString` [`f3c2074`](https://github.com/inspect-js/object-inspect/commit/f3c2074d8f32faf8292587c07c9678ea931703dd) +- [Dev Deps] update `eslint` [`9411294`](https://github.com/inspect-js/object-inspect/commit/94112944b9245e3302e25453277876402d207e7f) +- [meta] `require-allow-edits` no longer requires an explicit github token [`36c0220`](https://github.com/inspect-js/object-inspect/commit/36c02205de3c2b0e84d53777c5c9fd54a36c48ab) +- [actions] update rebase checkout action to v2 [`55a39a6`](https://github.com/inspect-js/object-inspect/commit/55a39a64e944f19c6a7d8efddf3df27700f20d14) +- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`f59fd3c`](https://github.com/inspect-js/object-inspect/commit/f59fd3cf406c3a7c7ece140904a80bbc6bacfcca) +- [Dev Deps] update `eslint` [`a492bec`](https://github.com/inspect-js/object-inspect/commit/a492becec644b0155c9c4bc1caf6f9fac11fb2c7) + +## [v1.8.0](https://github.com/inspect-js/object-inspect/compare/v1.7.0...v1.8.0) - 2020-06-18 + +### Fixed + +- [New] add `indent` option [`#27`](https://github.com/inspect-js/object-inspect/issues/27) + +### Commits + +- [Tests] add codecov [`4324cbb`](https://github.com/inspect-js/object-inspect/commit/4324cbb1a2bd7710822a4151ff373570db22453e) +- [New] add `maxStringLength` option [`b3995cb`](https://github.com/inspect-js/object-inspect/commit/b3995cb71e15b5ee127a3094c43994df9d973502) +- [New] add `customInspect` option, to disable custom inspect methods [`28b9179`](https://github.com/inspect-js/object-inspect/commit/28b9179ee802bb3b90810100c11637db90c2fb6d) +- [Tests] add Date and RegExp tests [`3b28eca`](https://github.com/inspect-js/object-inspect/commit/3b28eca57b0367aeadffac604ea09e8bdae7d97b) +- [actions] add automatic rebasing / merge commit blocking [`0d9c6c0`](https://github.com/inspect-js/object-inspect/commit/0d9c6c044e83475ff0bfffb9d35b149834c83a2e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `tape`; add `aud` [`7c204f2`](https://github.com/inspect-js/object-inspect/commit/7c204f22b9e41bc97147f4d32d4cb045b17769a6) +- [readme] fix repo URLs, remove testling [`34ca9a0`](https://github.com/inspect-js/object-inspect/commit/34ca9a0dabfe75bd311f806a326fadad029909a3) +- [Fix] when truncating a deep array, note it as `[Array]` instead of just `[Object]` [`f74c82d`](https://github.com/inspect-js/object-inspect/commit/f74c82dd0b35386445510deb250f34c41be3ec0e) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`1a8a5ea`](https://github.com/inspect-js/object-inspect/commit/1a8a5ea069ea2bee89d77caedad83ffa23d35711) +- [Fix] do not be fooled by a function’s own `toString` method [`7cb5c65`](https://github.com/inspect-js/object-inspect/commit/7cb5c657a976f94715c19c10556a30f15bb7d5d7) +- [patch] indicate explicitly that anon functions are anonymous, to match node [`81ebdd4`](https://github.com/inspect-js/object-inspect/commit/81ebdd4215005144074bbdff3f6bafa01407910a) +- [Dev Deps] loosen the `core-js` dep [`e7472e8`](https://github.com/inspect-js/object-inspect/commit/e7472e8e242117670560bd995830c2a4d12080f5) +- [Dev Deps] update `tape` [`699827e`](https://github.com/inspect-js/object-inspect/commit/699827e6b37258b5203c33c78c009bf4b0e6a66d) +- [meta] add `safe-publish-latest` [`c5d2868`](https://github.com/inspect-js/object-inspect/commit/c5d2868d6eb33c472f37a20f89ceef2787046088) +- [Dev Deps] update `@ljharb/eslint-config` [`9199501`](https://github.com/inspect-js/object-inspect/commit/919950195d486114ccebacbdf9d74d7f382693b0) + +## [v1.7.0](https://github.com/inspect-js/object-inspect/compare/v1.6.0...v1.7.0) - 2019-11-10 + +### Commits + +- [Tests] use shared travis-ci configs [`19899ed`](https://github.com/inspect-js/object-inspect/commit/19899edbf31f4f8809acf745ce34ad1ce1bfa63b) +- [Tests] add linting [`a00f057`](https://github.com/inspect-js/object-inspect/commit/a00f057d917f66ea26dd37769c6b810ec4af97e8) +- [Tests] lint last file [`2698047`](https://github.com/inspect-js/object-inspect/commit/2698047b58af1e2e88061598ef37a75f228dddf6) +- [Tests] up to `node` `v12.7`, `v11.15`, `v10.16`, `v8.16`, `v6.17` [`589e87a`](https://github.com/inspect-js/object-inspect/commit/589e87a99cadcff4b600e6a303418e9d922836e8) +- [New] add support for `WeakMap` and `WeakSet` [`3ddb3e4`](https://github.com/inspect-js/object-inspect/commit/3ddb3e4e0c8287130c61a12e0ed9c104b1549306) +- [meta] clean up license so github can detect it properly [`27527bb`](https://github.com/inspect-js/object-inspect/commit/27527bb801520c9610c68cc3b55d6f20a2bee56d) +- [Tests] cover `util.inspect.custom` [`36d47b9`](https://github.com/inspect-js/object-inspect/commit/36d47b9c59056a57ef2f1491602c726359561800) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `core-js`, `tape` [`b614eaa`](https://github.com/inspect-js/object-inspect/commit/b614eaac901da0e5c69151f534671f990a94cace) +- [Tests] fix coverage thresholds [`7b7b176`](https://github.com/inspect-js/object-inspect/commit/7b7b176e15f8bd6e8b2f261ff5a493c2fe78d9c2) +- [Tests] bigint tests now can run on unflagged node [`063af31`](https://github.com/inspect-js/object-inspect/commit/063af31ce9cd13c202e3b67c07ba06dc9b7c0f81) +- [Refactor] add early bailout to `isMap` and `isSet` checks [`fc51047`](https://github.com/inspect-js/object-inspect/commit/fc5104714a3671d37e225813db79470d6335683b) +- [meta] add `funding` field [`7f9953a`](https://github.com/inspect-js/object-inspect/commit/7f9953a113eec7b064a6393cf9f90ba15f1d131b) +- [Tests] Fix invalid strict-mode syntax with hexadecimal [`a8b5425`](https://github.com/inspect-js/object-inspect/commit/a8b542503b4af1599a275209a1a99f5fdedb1ead) +- [Dev Deps] update `@ljharb/eslint-config` [`98df157`](https://github.com/inspect-js/object-inspect/commit/98df1577314d9188a3fc3f17fdcf2fba697ae1bd) +- add copyright to LICENSE [`bb69fd0`](https://github.com/inspect-js/object-inspect/commit/bb69fd017a062d299e44da1f9b2c7dcd67f621e6) +- [Tests] use `npx aud` in `posttest` [`4838353`](https://github.com/inspect-js/object-inspect/commit/4838353593974cf7f905b9ef04c03c094f0cdbe2) +- [Tests] move `0.6` to allowed failures, because it won‘t build on travis [`1bff32a`](https://github.com/inspect-js/object-inspect/commit/1bff32aa52e8aea687f0856b28ba754b3e43ebf7) + +## [v1.6.0](https://github.com/inspect-js/object-inspect/compare/v1.5.0...v1.6.0) - 2018-05-02 + +### Commits + +- [New] add support for boxed BigInt primitives [`356c66a`](https://github.com/inspect-js/object-inspect/commit/356c66a410e7aece7162c8319880a5ef647beaa9) +- [Tests] up to `node` `v10.0`, `v9.11`, `v8.11`, `v6.14`, `v4.9` [`c77b65b`](https://github.com/inspect-js/object-inspect/commit/c77b65bba593811b906b9ec57561c5cba92e2db3) +- [New] Add support for upcoming `BigInt` [`1ac548e`](https://github.com/inspect-js/object-inspect/commit/1ac548e4b27e26466c28c9a5e63e5d4e0591c31f) +- [Tests] run bigint tests in CI with --harmony-bigint flag [`d31b738`](https://github.com/inspect-js/object-inspect/commit/d31b73831880254b5c6cf5691cda9a149fbc5f04) +- [Dev Deps] update `core-js`, `tape` [`ff9eff6`](https://github.com/inspect-js/object-inspect/commit/ff9eff67113341ee1aaf80c1c22d683f43bfbccf) +- [Docs] fix example to use `safer-buffer` [`48cae12`](https://github.com/inspect-js/object-inspect/commit/48cae12a73ec6cacc955175bc56bbe6aee6a211f) + +## [v1.5.0](https://github.com/inspect-js/object-inspect/compare/v1.4.1...v1.5.0) - 2017-12-25 + +### Commits + +- [New] add `quoteStyle` option [`f5a72d2`](https://github.com/inspect-js/object-inspect/commit/f5a72d26edb3959b048f74c056ca7100a6b091e4) +- [Tests] add more test coverage [`30ebe4e`](https://github.com/inspect-js/object-inspect/commit/30ebe4e1fa943b99ecbb85be7614256d536e2759) +- [Tests] require 0.6 to pass [`99a008c`](https://github.com/inspect-js/object-inspect/commit/99a008ccace189a60fd7da18bf00e32c9572b980) + +## [v1.4.1](https://github.com/inspect-js/object-inspect/compare/v1.4.0...v1.4.1) - 2017-12-19 + +### Commits + +- [Tests] up to `node` `v9.3`, `v8.9`, `v6.12` [`6674476`](https://github.com/inspect-js/object-inspect/commit/6674476cc56acaac1bde96c84fed5ef631911906) +- [Fix] `inspect(Object(-0))` should be “Object(-0)”, not “Object(0)” [`d0a031f`](https://github.com/inspect-js/object-inspect/commit/d0a031f1cbb3024ee9982bfe364dd18a7e4d1bd3) + +## [v1.4.0](https://github.com/inspect-js/object-inspect/compare/v1.3.0...v1.4.0) - 2017-10-24 + +### Commits + +- [Tests] add `npm run coverage` [`3b48fb2`](https://github.com/inspect-js/object-inspect/commit/3b48fb25db037235eeb808f0b2830aad7aa36f70) +- [Tests] remove commented-out osx builds [`71e24db`](https://github.com/inspect-js/object-inspect/commit/71e24db8ad6ee3b9b381c5300b0475f2ba595a73) +- [New] add support for `util.inspect.custom`, in node only. [`20cca77`](https://github.com/inspect-js/object-inspect/commit/20cca7762d7e17f15b21a90793dff84acce155df) +- [Tests] up to `node` `v8.6`; use `nvm install-latest-npm` to ensure new npm doesn’t break old node [`252952d`](https://github.com/inspect-js/object-inspect/commit/252952d230d8065851dd3d4d5fe8398aae068529) +- [Tests] up to `node` `v8.8` [`4aa868d`](https://github.com/inspect-js/object-inspect/commit/4aa868d3a62914091d489dd6ec6eed194ee67cd3) +- [Dev Deps] update `core-js`, `tape` [`59483d1`](https://github.com/inspect-js/object-inspect/commit/59483d1df418f852f51fa0db7b24aa6b0209a27a) + +## [v1.3.0](https://github.com/inspect-js/object-inspect/compare/v1.2.2...v1.3.0) - 2017-07-31 + +### Fixed + +- [Fix] Map/Set: work around core-js bug < v2.5.0 [`#9`](https://github.com/inspect-js/object-inspect/issues/9) + +### Commits + +- [New] add support for arrays with additional object keys [`0d19937`](https://github.com/inspect-js/object-inspect/commit/0d199374ee37959e51539616666f420ccb29acb9) +- [Tests] up to `node` `v8.2`, `v7.10`, `v6.11`; fix new npm breaking on older nodes [`e24784a`](https://github.com/inspect-js/object-inspect/commit/e24784a90c49117787157a12a63897c49cf89bbb) +- Only apps should have lockfiles [`c6faebc`](https://github.com/inspect-js/object-inspect/commit/c6faebcb2ee486a889a4a1c4d78c0776c7576185) +- [Dev Deps] update `tape` [`7345a0a`](https://github.com/inspect-js/object-inspect/commit/7345a0aeba7e91b888a079c10004d17696a7f586) + +## [v1.2.2](https://github.com/inspect-js/object-inspect/compare/v1.2.1...v1.2.2) - 2017-03-24 + +### Commits + +- [Tests] up to `node` `v7.7`, `v6.10`, `v4.8`; improve test matrix [`a2ddc15`](https://github.com/inspect-js/object-inspect/commit/a2ddc15a1f2c65af18076eea1c0eb9cbceb478a0) +- [Tests] up to `node` `v7.0`, `v6.9`, `v5.12`, `v4.6`, `io.js` `v3.3`; improve test matrix [`a48949f`](https://github.com/inspect-js/object-inspect/commit/a48949f6b574b2d4d2298109d8e8d0eb3e7a83e7) +- [Performance] check for primitive types as early as possible. [`3b8092a`](https://github.com/inspect-js/object-inspect/commit/3b8092a2a4deffd0575f94334f00194e2d48dad3) +- [Refactor] remove unneeded `else`s. [`7255034`](https://github.com/inspect-js/object-inspect/commit/725503402e08de4f96f6bf2d8edef44ac36f26b6) +- [Refactor] avoid recreating `lowbyte` function every time. [`81edd34`](https://github.com/inspect-js/object-inspect/commit/81edd3475bd15bdd18e84de7472033dcf5004aaa) +- [Fix] differentiate -0 from 0 [`521d345`](https://github.com/inspect-js/object-inspect/commit/521d3456b009da7bf1c5785c8a9df5a9f8718264) +- [Refactor] move object key gathering into separate function [`aca6265`](https://github.com/inspect-js/object-inspect/commit/aca626536eaeef697196c6e9db3e90e7e0355b6a) +- [Refactor] consolidate wrapping logic for boxed primitives into a function. [`4e440cd`](https://github.com/inspect-js/object-inspect/commit/4e440cd9065df04802a2a1dead03f48c353ca301) +- [Robustness] use `typeof` instead of comparing to literal `undefined` [`5ca6f60`](https://github.com/inspect-js/object-inspect/commit/5ca6f601937506daff8ed2fcf686363b55807b69) +- [Refactor] consolidate Map/Set notations. [`4e576e5`](https://github.com/inspect-js/object-inspect/commit/4e576e5d7ed2f9ec3fb7f37a0d16732eb10758a9) +- [Tests] ensure that this function remains anonymous, despite ES6 name inference. [`7540ae5`](https://github.com/inspect-js/object-inspect/commit/7540ae591278756db614fa4def55ca413150e1a3) +- [Refactor] explicitly coerce Error objects to strings. [`7f4ca84`](https://github.com/inspect-js/object-inspect/commit/7f4ca8424ee8dc2c0ca5a422d94f7fac40327261) +- [Refactor] split up `var` declarations for debuggability [`6f2c11e`](https://github.com/inspect-js/object-inspect/commit/6f2c11e6a85418586a00292dcec5e97683f89bc3) +- [Robustness] cache `Object.prototype.toString` [`df44a20`](https://github.com/inspect-js/object-inspect/commit/df44a20adfccf31529d60d1df2079bfc3c836e27) +- [Dev Deps] update `tape` [`3ec714e`](https://github.com/inspect-js/object-inspect/commit/3ec714eba57bc3f58a6eb4fca1376f49e70d300a) +- [Dev Deps] update `tape` [`beb72d9`](https://github.com/inspect-js/object-inspect/commit/beb72d969653747d7cde300393c28755375329b0) + +## [v1.2.1](https://github.com/inspect-js/object-inspect/compare/v1.2.0...v1.2.1) - 2016-04-09 + +### Fixed + +- [Fix] fix Boolean `false` object inspection. [`#7`](https://github.com/substack/object-inspect/pull/7) + +## [v1.2.0](https://github.com/inspect-js/object-inspect/compare/v1.1.0...v1.2.0) - 2016-04-09 + +### Fixed + +- [New] add support for inspecting String/Number/Boolean objects. [`#6`](https://github.com/inspect-js/object-inspect/issues/6) + +### Commits + +- [Dev Deps] update `tape` [`742caa2`](https://github.com/inspect-js/object-inspect/commit/742caa262cf7af4c815d4821c8bd0129c1446432) + +## [v1.1.0](https://github.com/inspect-js/object-inspect/compare/1.0.2...v1.1.0) - 2015-12-14 + +### Merged + +- [New] add ES6 Map/Set support. [`#4`](https://github.com/inspect-js/object-inspect/pull/4) + +### Fixed + +- [New] add ES6 Map/Set support. [`#3`](https://github.com/inspect-js/object-inspect/issues/3) + +### Commits + +- Update `travis.yml` to test on bunches of `iojs` and `node` versions. [`4c1fd65`](https://github.com/inspect-js/object-inspect/commit/4c1fd65cc3bd95307e854d114b90478324287fd2) +- [Dev Deps] update `tape` [`88a907e`](https://github.com/inspect-js/object-inspect/commit/88a907e33afbe408e4b5d6e4e42a33143f88848c) + +## [1.0.2](https://github.com/inspect-js/object-inspect/compare/1.0.1...1.0.2) - 2015-08-07 + +### Commits + +- [Fix] Cache `Object.prototype.hasOwnProperty` in case it's deleted later. [`1d0075d`](https://github.com/inspect-js/object-inspect/commit/1d0075d3091dc82246feeb1f9871cb2b8ed227b3) +- [Dev Deps] Update `tape` [`ca8d5d7`](https://github.com/inspect-js/object-inspect/commit/ca8d5d75635ddbf76f944e628267581e04958457) +- gitignore node_modules since this is a reusable modules. [`ed41407`](https://github.com/inspect-js/object-inspect/commit/ed41407811743ca530cdeb28f982beb96026af82) + +## [1.0.1](https://github.com/inspect-js/object-inspect/compare/1.0.0...1.0.1) - 2015-07-19 + +### Commits + +- Make `inspect` work with symbol primitives and objects, including in node 0.11 and 0.12. [`ddf1b94`](https://github.com/inspect-js/object-inspect/commit/ddf1b94475ab951f1e3bccdc0a48e9073cfbfef4) +- bump tape [`103d674`](https://github.com/inspect-js/object-inspect/commit/103d67496b504bdcfdd765d303a773f87ec106e2) +- use newer travis config [`d497276`](https://github.com/inspect-js/object-inspect/commit/d497276c1da14234bb5098a59cf20de75fbc316a) + +## [1.0.0](https://github.com/inspect-js/object-inspect/compare/0.4.0...1.0.0) - 2014-08-05 + +### Commits + +- error inspect works properly [`260a22d`](https://github.com/inspect-js/object-inspect/commit/260a22d134d3a8a482c67d52091c6040c34f4299) +- seen coverage [`57269e8`](https://github.com/inspect-js/object-inspect/commit/57269e8baa992a7439047f47325111fdcbcb8417) +- htmlelement instance coverage [`397ffe1`](https://github.com/inspect-js/object-inspect/commit/397ffe10a1980350868043ef9de65686d438979f) +- more element coverage [`6905cc2`](https://github.com/inspect-js/object-inspect/commit/6905cc2f7df35600177e613b0642b4df5efd3eca) +- failing test for type errors [`385b615`](https://github.com/inspect-js/object-inspect/commit/385b6152e49b51b68449a662f410b084ed7c601a) +- fn name coverage [`edc906d`](https://github.com/inspect-js/object-inspect/commit/edc906d40fca6b9194d304062c037ee8e398c4c2) +- server-side element test [`362d1d3`](https://github.com/inspect-js/object-inspect/commit/362d1d3e86f187651c29feeb8478110afada385b) +- custom inspect fn [`e89b0f6`](https://github.com/inspect-js/object-inspect/commit/e89b0f6fe6d5e03681282af83732a509160435a6) +- fixed browser test [`b530882`](https://github.com/inspect-js/object-inspect/commit/b5308824a1c8471c5617e394766a03a6977102a9) +- depth test, matches node [`1cfd9e0`](https://github.com/inspect-js/object-inspect/commit/1cfd9e0285a4ae1dff44101ad482915d9bf47e48) +- exercise hasOwnProperty path [`8d753fb`](https://github.com/inspect-js/object-inspect/commit/8d753fb362a534fa1106e4d80f2ee9bea06a66d9) +- more cases covered for errors [`c5c46a5`](https://github.com/inspect-js/object-inspect/commit/c5c46a569ec4606583497e8550f0d8c7ad39a4a4) +- \W obj key test case [`b0eceee`](https://github.com/inspect-js/object-inspect/commit/b0eceeea6e0eb94d686c1046e99b9e25e5005f75) +- coverage for explicit depth param [`e12b91c`](https://github.com/inspect-js/object-inspect/commit/e12b91cd59683362f3a0e80f46481a0211e26c15) + +## [0.4.0](https://github.com/inspect-js/object-inspect/compare/0.3.1...0.4.0) - 2014-03-21 + +### Commits + +- passing lowbyte interpolation test [`b847511`](https://github.com/inspect-js/object-inspect/commit/b8475114f5def7e7961c5353d48d3d8d9a520985) +- lowbyte test [`4a2b0e1`](https://github.com/inspect-js/object-inspect/commit/4a2b0e142667fc933f195472759385ac08f3946c) + +## [0.3.1](https://github.com/inspect-js/object-inspect/compare/0.3.0...0.3.1) - 2014-03-04 + +### Commits + +- sort keys [`a07b19c`](https://github.com/inspect-js/object-inspect/commit/a07b19cc3b1521a82d4fafb6368b7a9775428a05) + +## [0.3.0](https://github.com/inspect-js/object-inspect/compare/0.2.0...0.3.0) - 2014-03-04 + +### Commits + +- [] and {} instead of [ ] and { } [`654c44b`](https://github.com/inspect-js/object-inspect/commit/654c44b2865811f3519e57bb8526e0821caf5c6b) + +## [0.2.0](https://github.com/inspect-js/object-inspect/compare/0.1.3...0.2.0) - 2014-03-04 + +### Commits + +- failing holes test [`99cdfad`](https://github.com/inspect-js/object-inspect/commit/99cdfad03c6474740275a75636fe6ca86c77737a) +- regex already work [`e324033`](https://github.com/inspect-js/object-inspect/commit/e324033267025995ec97d32ed0a65737c99477a6) +- failing undef/null test [`1f88a00`](https://github.com/inspect-js/object-inspect/commit/1f88a00265d3209719dda8117b7e6360b4c20943) +- holes in the all example [`7d345f3`](https://github.com/inspect-js/object-inspect/commit/7d345f3676dcbe980cff89a4f6c243269ebbb709) +- check for .inspect(), fixes Buffer use-case [`c3f7546`](https://github.com/inspect-js/object-inspect/commit/c3f75466dbca125347d49847c05262c292f12b79) +- fixes for holes [`ce25f73`](https://github.com/inspect-js/object-inspect/commit/ce25f736683de4b92ff27dc5471218415e2d78d8) +- weird null behavior [`405c1ea`](https://github.com/inspect-js/object-inspect/commit/405c1ea72cd5a8cf3b498c3eaa903d01b9fbcab5) +- tape is actually a devDependency, upgrade [`703b0ce`](https://github.com/inspect-js/object-inspect/commit/703b0ce6c5817b4245a082564bccd877e0bb6990) +- put date in the example [`a342219`](https://github.com/inspect-js/object-inspect/commit/a3422190eeaa013215f46df2d0d37b48595ac058) +- passing the null test [`4ab737e`](https://github.com/inspect-js/object-inspect/commit/4ab737ebf862a75d247ebe51e79307a34d6380d4) + +## [0.1.3](https://github.com/inspect-js/object-inspect/compare/0.1.1...0.1.3) - 2013-07-26 + +### Commits + +- special isElement() check [`882768a`](https://github.com/inspect-js/object-inspect/commit/882768a54035d30747be9de1baf14e5aa0daa128) +- oh right old IEs don't have indexOf either [`36d1275`](https://github.com/inspect-js/object-inspect/commit/36d12756c38b08a74370b0bb696c809e529913a5) + +## [0.1.1](https://github.com/inspect-js/object-inspect/compare/0.1.0...0.1.1) - 2013-07-26 + +### Commits + +- tests! [`4422fd9`](https://github.com/inspect-js/object-inspect/commit/4422fd95532c2745aa6c4f786f35f1090be29998) +- fix for ie<9, doesn't have hasOwnProperty [`6b7d611`](https://github.com/inspect-js/object-inspect/commit/6b7d61183050f6da801ea04473211da226482613) +- fix for all IEs: no f.name [`4e0c2f6`](https://github.com/inspect-js/object-inspect/commit/4e0c2f6dfd01c306d067d7163319acc97c94ee50) +- badges [`5ed0d88`](https://github.com/inspect-js/object-inspect/commit/5ed0d88e4e407f9cb327fa4a146c17921f9680f3) + +## [0.1.0](https://github.com/inspect-js/object-inspect/compare/0.0.0...0.1.0) - 2013-07-26 + +### Commits + +- [Function] for functions [`ad5c485`](https://github.com/inspect-js/object-inspect/commit/ad5c485098fc83352cb540a60b2548ca56820e0b) + +## 0.0.0 - 2013-07-26 + +### Commits + +- working browser example [`34be6b6`](https://github.com/inspect-js/object-inspect/commit/34be6b6548f9ce92bdc3c27572857ba0c4a1218d) +- package.json etc [`cad51f2`](https://github.com/inspect-js/object-inspect/commit/cad51f23fc6bcf1a456ed6abe16088256c2f632f) +- docs complete [`b80cce2`](https://github.com/inspect-js/object-inspect/commit/b80cce2490c4e7183a9ee11ea89071f0abec4446) +- circular example [`4b4a7b9`](https://github.com/inspect-js/object-inspect/commit/4b4a7b92209e4e6b4630976cb6bcd17d14165a59) +- string rep [`7afb479`](https://github.com/inspect-js/object-inspect/commit/7afb479baa798d27f09e0a178b72ea327f60f5c8) diff --git a/bff/node_modules/object-inspect/LICENSE b/bff/node_modules/object-inspect/LICENSE new file mode 100644 index 0000000..ca64cc1 --- /dev/null +++ b/bff/node_modules/object-inspect/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013 James Halliday + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/object-inspect/example/all.js b/bff/node_modules/object-inspect/example/all.js new file mode 100644 index 0000000..2f3355c --- /dev/null +++ b/bff/node_modules/object-inspect/example/all.js @@ -0,0 +1,23 @@ +'use strict'; + +var inspect = require('../'); +var Buffer = require('safer-buffer').Buffer; + +var holes = ['a', 'b']; +holes[4] = 'e'; +holes[6] = 'g'; + +var obj = { + a: 1, + b: [3, 4, undefined, null], + c: undefined, + d: null, + e: { + regex: /^x/i, + buf: Buffer.from('abc'), + holes: holes + }, + now: new Date() +}; +obj.self = obj; +console.log(inspect(obj)); diff --git a/bff/node_modules/object-inspect/example/circular.js b/bff/node_modules/object-inspect/example/circular.js new file mode 100644 index 0000000..487a7c1 --- /dev/null +++ b/bff/node_modules/object-inspect/example/circular.js @@ -0,0 +1,6 @@ +'use strict'; + +var inspect = require('../'); +var obj = { a: 1, b: [3, 4] }; +obj.c = obj; +console.log(inspect(obj)); diff --git a/bff/node_modules/object-inspect/example/fn.js b/bff/node_modules/object-inspect/example/fn.js new file mode 100644 index 0000000..9b5db8d --- /dev/null +++ b/bff/node_modules/object-inspect/example/fn.js @@ -0,0 +1,5 @@ +'use strict'; + +var inspect = require('../'); +var obj = [1, 2, function f(n) { return n + 5; }, 4]; +console.log(inspect(obj)); diff --git a/bff/node_modules/object-inspect/example/inspect.js b/bff/node_modules/object-inspect/example/inspect.js new file mode 100644 index 0000000..e2df7c9 --- /dev/null +++ b/bff/node_modules/object-inspect/example/inspect.js @@ -0,0 +1,10 @@ +'use strict'; + +/* eslint-env browser */ +var inspect = require('../'); + +var d = document.createElement('div'); +d.setAttribute('id', 'beep'); +d.innerHTML = 'woooiiiii'; + +console.log(inspect([d, { a: 3, b: 4, c: [5, 6, [7, [8, [9]]]] }])); diff --git a/bff/node_modules/object-inspect/index.js b/bff/node_modules/object-inspect/index.js new file mode 100644 index 0000000..a4b2d4c --- /dev/null +++ b/bff/node_modules/object-inspect/index.js @@ -0,0 +1,544 @@ +var hasMap = typeof Map === 'function' && Map.prototype; +var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; +var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; +var mapForEach = hasMap && Map.prototype.forEach; +var hasSet = typeof Set === 'function' && Set.prototype; +var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; +var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; +var setForEach = hasSet && Set.prototype.forEach; +var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; +var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; +var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; +var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; +var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; +var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; +var booleanValueOf = Boolean.prototype.valueOf; +var objectToString = Object.prototype.toString; +var functionToString = Function.prototype.toString; +var $match = String.prototype.match; +var $slice = String.prototype.slice; +var $replace = String.prototype.replace; +var $toUpperCase = String.prototype.toUpperCase; +var $toLowerCase = String.prototype.toLowerCase; +var $test = RegExp.prototype.test; +var $concat = Array.prototype.concat; +var $join = Array.prototype.join; +var $arrSlice = Array.prototype.slice; +var $floor = Math.floor; +var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; +var gOPS = Object.getOwnPropertySymbols; +var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; +var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; +// ie, `has-tostringtag/shams +var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol') + ? Symbol.toStringTag + : null; +var isEnumerable = Object.prototype.propertyIsEnumerable; + +var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( + [].__proto__ === Array.prototype // eslint-disable-line no-proto + ? function (O) { + return O.__proto__; // eslint-disable-line no-proto + } + : null +); + +function addNumericSeparator(num, str) { + if ( + num === Infinity + || num === -Infinity + || num !== num + || (num && num > -1000 && num < 1000) + || $test.call(/e/, str) + ) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num === 'number') { + var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num) + if (int !== num) { + var intStr = String(int); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, ''); + } + } + return $replace.call(str, sepRegex, '$&_'); +} + +var utilInspect = require('./util.inspect'); +var inspectCustom = utilInspect.custom; +var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; + +var quotes = { + __proto__: null, + 'double': '"', + single: "'" +}; +var quoteREs = { + __proto__: null, + 'double': /(["\\])/g, + single: /(['\\])/g +}; + +module.exports = function inspect_(obj, options, depth, seen) { + var opts = options || {}; + + if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if ( + has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' + ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity + : opts.maxStringLength !== null + ) + ) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, 'customInspect') ? opts.customInspect : true; + if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { + throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); + } + + if ( + has(opts, 'indent') + && opts.indent !== null + && opts.indent !== '\t' + && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) + ) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + + if (typeof obj === 'undefined') { + return 'undefined'; + } + if (obj === null) { + return 'null'; + } + if (typeof obj === 'boolean') { + return obj ? 'true' : 'false'; + } + + if (typeof obj === 'string') { + return inspectString(obj, opts); + } + if (typeof obj === 'number') { + if (obj === 0) { + return Infinity / obj > 0 ? '0' : '-0'; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === 'bigint') { + var bigIntStr = String(obj) + 'n'; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + + var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; + if (typeof depth === 'undefined') { depth = 0; } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { + return isArray(obj) ? '[Array]' : '[Object]'; + } + + var indent = getIndent(opts, depth); + + if (typeof seen === 'undefined') { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return '[Circular]'; + } + + function inspect(value, from, noIndent) { + if (from) { + seen = $arrSlice.call(seen); + seen.push(from); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, 'quoteStyle')) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + + if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable + var name = nameOf(obj); + var keys = arrObjKeys(obj, inspect); + return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : ''); + } + if (isSymbol(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); + return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = '<' + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); + } + s += '>'; + if (obj.childNodes && obj.childNodes.length) { s += '...'; } + s += ''; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { return '[]'; } + var xs = arrObjKeys(obj, inspect); + if (indent && !singleLineValues(xs)) { + return '[' + indentedJoin(xs, indent) + ']'; + } + return '[ ' + $join.call(xs, ', ') + ' ]'; + } + if (isError(obj)) { + var parts = arrObjKeys(obj, inspect); + if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) { + return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }'; + } + if (parts.length === 0) { return '[' + String(obj) + ']'; } + return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }'; + } + if (typeof obj === 'object' && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function (value, key) { + mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); + }); + } + return collectionOf('Map', mapSize.call(obj), mapParts, indent); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function (value) { + setParts.push(inspect(value, obj)); + }); + } + return collectionOf('Set', setSize.call(obj), setParts, indent); + } + if (isWeakMap(obj)) { + return weakCollectionOf('WeakMap'); + } + if (isWeakSet(obj)) { + return weakCollectionOf('WeakSet'); + } + if (isWeakRef(obj)) { + return weakCollectionOf('WeakRef'); + } + if (isNumber(obj)) { + return markBoxed(inspect(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString(obj)) { + return markBoxed(inspect(String(obj))); + } + // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other + /* eslint-env browser */ + if (typeof window !== 'undefined' && obj === window) { + return '{ [object Window] }'; + } + if ( + (typeof globalThis !== 'undefined' && obj === globalThis) + || (typeof global !== 'undefined' && obj === global) + ) { + return '{ [object globalThis] }'; + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect); + var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? '' : 'null prototype'; + var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : ''; + var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; + var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : ''); + if (ys.length === 0) { return tag + '{}'; } + if (indent) { + return tag + '{' + indentedJoin(ys, indent) + '}'; + } + return tag + '{ ' + $join.call(ys, ', ') + ' }'; + } + return String(obj); +}; + +function wrapQuotes(s, defaultStyle, opts) { + var style = opts.quoteStyle || defaultStyle; + var quoteChar = quotes[style]; + return quoteChar + s + quoteChar; +} + +function quote(s) { + return $replace.call(String(s), /"/g, '"'); +} + +function canTrustToString(obj) { + return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined')); +} +function isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); } +function isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); } +function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); } +function isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); } +function isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); } +function isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); } +function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); } + +// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives +function isSymbol(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === 'object' && obj instanceof Symbol; + } + if (typeof obj === 'symbol') { + return true; + } + if (!obj || typeof obj !== 'object' || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) {} + return false; +} + +function isBigInt(obj) { + if (!obj || typeof obj !== 'object' || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) {} + return false; +} + +var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; +function has(obj, key) { + return hasOwn.call(obj, key); +} + +function toStr(obj) { + return objectToString.call(obj); +} + +function nameOf(f) { + if (f.name) { return f.name; } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { return m[1]; } + return null; +} + +function indexOf(xs, x) { + if (xs.indexOf) { return xs.indexOf(x); } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { return i; } + } + return -1; +} + +function isMap(x) { + if (!mapSize || !x || typeof x !== 'object') { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== 'object') { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== 'object') { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) {} + return false; +} + +function isSet(x) { + if (!setSize || !x || typeof x !== 'object') { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== 'object') { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isElement(x) { + if (!x || typeof x !== 'object') { return false; } + if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; +} + +function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + var quoteRE = quoteREs[opts.quoteStyle || 'single']; + quoteRE.lastIndex = 0; + // eslint-disable-next-line no-control-regex + var s = $replace.call($replace.call(str, quoteRE, '\\$1'), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, 'single', opts); +} + +function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: 'b', + 9: 't', + 10: 'n', + 12: 'f', + 13: 'r' + }[n]; + if (x) { return '\\' + x; } + return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16)); +} + +function markBoxed(str) { + return 'Object(' + str + ')'; +} + +function weakCollectionOf(type) { + return type + ' { ? }'; +} + +function collectionOf(type, size, entries, indent) { + var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', '); + return type + ' (' + size + ') {' + joinedEntries + '}'; +} + +function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], '\n') >= 0) { + return false; + } + } + return true; +} + +function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === '\t') { + baseIndent = '\t'; + } else if (typeof opts.indent === 'number' && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), ' '); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; +} + +function indentedJoin(xs, indent) { + if (xs.length === 0) { return ''; } + var lineJoiner = '\n' + indent.prev + indent.base; + return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev; +} + +function arrObjKeys(obj, inspect) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; + } + } + var syms = typeof gOPS === 'function' ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap['$' + syms[k]] = syms[k]; + } + } + + for (var key in obj) { // eslint-disable-line no-restricted-syntax + if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { + // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section + continue; // eslint-disable-line no-restricted-syntax, no-continue + } else if ($test.call(/[^\w$]/, key)) { + xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); + } else { + xs.push(key + ': ' + inspect(obj[key], obj)); + } + } + if (typeof gOPS === 'function') { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); + } + } + } + return xs; +} diff --git a/bff/node_modules/object-inspect/package-support.json b/bff/node_modules/object-inspect/package-support.json new file mode 100644 index 0000000..5cc12d0 --- /dev/null +++ b/bff/node_modules/object-inspect/package-support.json @@ -0,0 +1,20 @@ +{ + "versions": [ + { + "version": "*", + "target": { + "node": "all" + }, + "response": { + "type": "time-permitting" + }, + "backing": { + "npm-funding": true, + "donations": [ + "https://github.com/ljharb", + "https://tidelift.com/funding/github/npm/object-inspect" + ] + } + } + ] +} diff --git a/bff/node_modules/object-inspect/package.json b/bff/node_modules/object-inspect/package.json new file mode 100644 index 0000000..9fd97ff --- /dev/null +++ b/bff/node_modules/object-inspect/package.json @@ -0,0 +1,105 @@ +{ + "name": "object-inspect", + "version": "1.13.4", + "description": "string representations of objects in node and the browser", + "main": "index.js", + "sideEffects": false, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.1", + "@pkgjs/support": "^0.0.6", + "auto-changelog": "^2.5.0", + "core-js": "^2.6.12", + "error-cause": "^1.0.8", + "es-value-fixtures": "^1.7.1", + "eslint": "=8.8.0", + "for-each": "^0.3.4", + "functions-have-names": "^1.2.3", + "glob": "=10.3.7", + "globalthis": "^1.0.4", + "has-symbols": "^1.1.0", + "has-tostringtag": "^1.0.2", + "in-publish": "^2.0.1", + "jackspeak": "=2.1.1", + "make-arrow-function": "^1.2.0", + "mock-property": "^1.1.0", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "safer-buffer": "^2.1.2", + "semver": "^6.3.1", + "string.prototype.repeat": "^1.0.0", + "tape": "^5.9.0" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "pretest": "npm run lint", + "lint": "eslint --ext=js,mjs .", + "postlint": "npx @pkgjs/support validate", + "test": "npm run tests-only && npm run test:corejs", + "tests-only": "nyc tape 'test/*.js'", + "test:corejs": "nyc tape test-core-js.js 'test/*.js'", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": [ + "test/*.js", + "test/browser/*.js" + ], + "browsers": [ + "ie/6..latest", + "chrome/latest", + "firefox/latest", + "safari/latest", + "opera/latest", + "iphone/latest", + "ipad/latest", + "android/latest" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/inspect-js/object-inspect.git" + }, + "homepage": "https://github.com/inspect-js/object-inspect", + "keywords": [ + "inspect", + "util.inspect", + "object", + "stringify", + "pretty" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "browser": { + "./util.inspect.js": false + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "./test-core-js.js" + ] + }, + "support": true, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/object-inspect/readme.markdown b/bff/node_modules/object-inspect/readme.markdown new file mode 100644 index 0000000..f91617d --- /dev/null +++ b/bff/node_modules/object-inspect/readme.markdown @@ -0,0 +1,84 @@ +# object-inspect [![Version Badge][npm-version-svg]][package-url] + +string representations of objects in node and the browser + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +# example + +## circular + +``` js +var inspect = require('object-inspect'); +var obj = { a: 1, b: [3,4] }; +obj.c = obj; +console.log(inspect(obj)); +``` + +## dom element + +``` js +var inspect = require('object-inspect'); + +var d = document.createElement('div'); +d.setAttribute('id', 'beep'); +d.innerHTML = 'woooiiiii'; + +console.log(inspect([ d, { a: 3, b : 4, c: [5,6,[7,[8,[9]]]] } ])); +``` + +output: + +``` +[
...
, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [ ... ] ] ] ] } ] +``` + +# methods + +``` js +var inspect = require('object-inspect') +``` + +## var s = inspect(obj, opts={}) + +Return a string `s` with the string representation of `obj` up to a depth of `opts.depth`. + +Additional options: + - `quoteStyle`: must be "single" or "double", if present. Default `'single'` for strings, `'double'` for HTML elements. + - `maxStringLength`: must be `0`, a positive integer, `Infinity`, or `null`, if present. Default `Infinity`. + - `customInspect`: When `true`, a custom inspect method function will be invoked (either undere the `util.inspect.custom` symbol, or the `inspect` property). When the string `'symbol'`, only the symbol method will be invoked. Default `true`. + - `indent`: must be "\t", `null`, or a positive integer. Default `null`. + - `numericSeparator`: must be a boolean, if present. Default `false`. If `true`, all numbers will be printed with numeric separators (eg, `1234.5678` will be printed as `'1_234.567_8'`) + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install object-inspect +``` + +# license + +MIT + +[package-url]: https://npmjs.org/package/object-inspect +[npm-version-svg]: https://versionbadg.es/inspect-js/object-inspect.svg +[deps-svg]: https://david-dm.org/inspect-js/object-inspect.svg +[deps-url]: https://david-dm.org/inspect-js/object-inspect +[dev-deps-svg]: https://david-dm.org/inspect-js/object-inspect/dev-status.svg +[dev-deps-url]: https://david-dm.org/inspect-js/object-inspect#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/object-inspect.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/object-inspect.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/object-inspect.svg +[downloads-url]: https://npm-stat.com/charts.html?package=object-inspect +[codecov-image]: https://codecov.io/gh/inspect-js/object-inspect/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/inspect-js/object-inspect/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/object-inspect +[actions-url]: https://github.com/inspect-js/object-inspect/actions diff --git a/bff/node_modules/object-inspect/test-core-js.js b/bff/node_modules/object-inspect/test-core-js.js new file mode 100644 index 0000000..e53c400 --- /dev/null +++ b/bff/node_modules/object-inspect/test-core-js.js @@ -0,0 +1,26 @@ +'use strict'; + +require('core-js'); + +var inspect = require('./'); +var test = require('tape'); + +test('Maps', function (t) { + t.equal(inspect(new Map([[1, 2]])), 'Map (1) {1 => 2}'); + t.end(); +}); + +test('WeakMaps', function (t) { + t.equal(inspect(new WeakMap([[{}, 2]])), 'WeakMap { ? }'); + t.end(); +}); + +test('Sets', function (t) { + t.equal(inspect(new Set([[1, 2]])), 'Set (1) {[ 1, 2 ]}'); + t.end(); +}); + +test('WeakSets', function (t) { + t.equal(inspect(new WeakSet([[1, 2]])), 'WeakSet { ? }'); + t.end(); +}); diff --git a/bff/node_modules/object-inspect/test/bigint.js b/bff/node_modules/object-inspect/test/bigint.js new file mode 100644 index 0000000..4ecc31d --- /dev/null +++ b/bff/node_modules/object-inspect/test/bigint.js @@ -0,0 +1,58 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); +var hasToStringTag = require('has-tostringtag/shams')(); + +test('bigint', { skip: typeof BigInt === 'undefined' }, function (t) { + t.test('primitives', function (st) { + st.plan(3); + + st.equal(inspect(BigInt(-256)), '-256n'); + st.equal(inspect(BigInt(0)), '0n'); + st.equal(inspect(BigInt(256)), '256n'); + }); + + t.test('objects', function (st) { + st.plan(3); + + st.equal(inspect(Object(BigInt(-256))), 'Object(-256n)'); + st.equal(inspect(Object(BigInt(0))), 'Object(0n)'); + st.equal(inspect(Object(BigInt(256))), 'Object(256n)'); + }); + + t.test('syntactic primitives', function (st) { + st.plan(3); + + /* eslint-disable no-new-func */ + st.equal(inspect(Function('return -256n')()), '-256n'); + st.equal(inspect(Function('return 0n')()), '0n'); + st.equal(inspect(Function('return 256n')()), '256n'); + }); + + t.test('toStringTag', { skip: !hasToStringTag }, function (st) { + st.plan(1); + + var faker = {}; + faker[Symbol.toStringTag] = 'BigInt'; + st.equal( + inspect(faker), + '{ [Symbol(Symbol.toStringTag)]: \'BigInt\' }', + 'object lying about being a BigInt inspects as an object' + ); + }); + + t.test('numericSeparator', function (st) { + st.equal(inspect(BigInt(0), { numericSeparator: false }), '0n', '0n, numericSeparator false'); + st.equal(inspect(BigInt(0), { numericSeparator: true }), '0n', '0n, numericSeparator true'); + + st.equal(inspect(BigInt(1234), { numericSeparator: false }), '1234n', '1234n, numericSeparator false'); + st.equal(inspect(BigInt(1234), { numericSeparator: true }), '1_234n', '1234n, numericSeparator true'); + st.equal(inspect(BigInt(-1234), { numericSeparator: false }), '-1234n', '1234n, numericSeparator false'); + st.equal(inspect(BigInt(-1234), { numericSeparator: true }), '-1_234n', '1234n, numericSeparator true'); + + st.end(); + }); + + t.end(); +}); diff --git a/bff/node_modules/object-inspect/test/browser/dom.js b/bff/node_modules/object-inspect/test/browser/dom.js new file mode 100644 index 0000000..210c0b2 --- /dev/null +++ b/bff/node_modules/object-inspect/test/browser/dom.js @@ -0,0 +1,15 @@ +var inspect = require('../../'); +var test = require('tape'); + +test('dom element', function (t) { + t.plan(1); + + var d = document.createElement('div'); + d.setAttribute('id', 'beep'); + d.innerHTML = 'woooiiiii'; + + t.equal( + inspect([d, { a: 3, b: 4, c: [5, 6, [7, [8, [9]]]] }]), + '[
...
, { a: 3, b: 4, c: [ 5, 6, [ 7, [ 8, [Object] ] ] ] } ]' + ); +}); diff --git a/bff/node_modules/object-inspect/test/circular.js b/bff/node_modules/object-inspect/test/circular.js new file mode 100644 index 0000000..5df4233 --- /dev/null +++ b/bff/node_modules/object-inspect/test/circular.js @@ -0,0 +1,16 @@ +var inspect = require('../'); +var test = require('tape'); + +test('circular', function (t) { + t.plan(2); + var obj = { a: 1, b: [3, 4] }; + obj.c = obj; + t.equal(inspect(obj), '{ a: 1, b: [ 3, 4 ], c: [Circular] }'); + + var double = {}; + double.a = [double]; + double.b = {}; + double.b.inner = double.b; + double.b.obj = double; + t.equal(inspect(double), '{ a: [ [Circular] ], b: { inner: [Circular], obj: [Circular] } }'); +}); diff --git a/bff/node_modules/object-inspect/test/deep.js b/bff/node_modules/object-inspect/test/deep.js new file mode 100644 index 0000000..99ce32a --- /dev/null +++ b/bff/node_modules/object-inspect/test/deep.js @@ -0,0 +1,12 @@ +var inspect = require('../'); +var test = require('tape'); + +test('deep', function (t) { + t.plan(4); + var obj = [[[[[[500]]]]]]; + t.equal(inspect(obj), '[ [ [ [ [ [Array] ] ] ] ] ]'); + t.equal(inspect(obj, { depth: 4 }), '[ [ [ [ [Array] ] ] ] ]'); + t.equal(inspect(obj, { depth: 2 }), '[ [ [Array] ] ]'); + + t.equal(inspect([[[{ a: 1 }]]], { depth: 3 }), '[ [ [ [Object] ] ] ]'); +}); diff --git a/bff/node_modules/object-inspect/test/element.js b/bff/node_modules/object-inspect/test/element.js new file mode 100644 index 0000000..47fa9e2 --- /dev/null +++ b/bff/node_modules/object-inspect/test/element.js @@ -0,0 +1,53 @@ +var inspect = require('../'); +var test = require('tape'); + +test('element', function (t) { + t.plan(3); + var elem = { + nodeName: 'div', + attributes: [{ name: 'class', value: 'row' }], + getAttribute: function (key) { return key; }, + childNodes: [] + }; + var obj = [1, elem, 3]; + t.deepEqual(inspect(obj), '[ 1,
, 3 ]'); + t.deepEqual(inspect(obj, { quoteStyle: 'single' }), "[ 1,
, 3 ]"); + t.deepEqual(inspect(obj, { quoteStyle: 'double' }), '[ 1,
, 3 ]'); +}); + +test('element no attr', function (t) { + t.plan(1); + var elem = { + nodeName: 'div', + getAttribute: function (key) { return key; }, + childNodes: [] + }; + var obj = [1, elem, 3]; + t.deepEqual(inspect(obj), '[ 1,
, 3 ]'); +}); + +test('element with contents', function (t) { + t.plan(1); + var elem = { + nodeName: 'div', + getAttribute: function (key) { return key; }, + childNodes: [{ nodeName: 'b' }] + }; + var obj = [1, elem, 3]; + t.deepEqual(inspect(obj), '[ 1,
...
, 3 ]'); +}); + +test('element instance', function (t) { + t.plan(1); + var h = global.HTMLElement; + global.HTMLElement = function (name, attr) { + this.nodeName = name; + this.attributes = attr; + }; + global.HTMLElement.prototype.getAttribute = function () {}; + + var elem = new global.HTMLElement('div', []); + var obj = [1, elem, 3]; + t.deepEqual(inspect(obj), '[ 1,
, 3 ]'); + global.HTMLElement = h; +}); diff --git a/bff/node_modules/object-inspect/test/err.js b/bff/node_modules/object-inspect/test/err.js new file mode 100644 index 0000000..cc1d884 --- /dev/null +++ b/bff/node_modules/object-inspect/test/err.js @@ -0,0 +1,48 @@ +var test = require('tape'); +var ErrorWithCause = require('error-cause/Error'); + +var inspect = require('../'); + +test('type error', function (t) { + t.plan(1); + var aerr = new TypeError(); + aerr.foo = 555; + aerr.bar = [1, 2, 3]; + + var berr = new TypeError('tuv'); + berr.baz = 555; + + var cerr = new SyntaxError(); + cerr.message = 'whoa'; + cerr['a-b'] = 5; + + var withCause = new ErrorWithCause('foo', { cause: 'bar' }); + var withCausePlus = new ErrorWithCause('foo', { cause: 'bar' }); + withCausePlus.foo = 'bar'; + var withUndefinedCause = new ErrorWithCause('foo', { cause: undefined }); + var withEnumerableCause = new Error('foo'); + withEnumerableCause.cause = 'bar'; + + var obj = [ + new TypeError(), + new TypeError('xxx'), + aerr, + berr, + cerr, + withCause, + withCausePlus, + withUndefinedCause, + withEnumerableCause + ]; + t.equal(inspect(obj), '[ ' + [ + '[TypeError]', + '[TypeError: xxx]', + '{ [TypeError] foo: 555, bar: [ 1, 2, 3 ] }', + '{ [TypeError: tuv] baz: 555 }', + '{ [SyntaxError: whoa] message: \'whoa\', \'a-b\': 5 }', + 'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: \'bar\' }', + '{ [Error: foo] ' + ('cause' in Error.prototype ? '' : '[cause]: \'bar\', ') + 'foo: \'bar\' }', + 'cause' in Error.prototype ? '[Error: foo]' : '{ [Error: foo] [cause]: undefined }', + '{ [Error: foo] cause: \'bar\' }' + ].join(', ') + ' ]'); +}); diff --git a/bff/node_modules/object-inspect/test/fakes.js b/bff/node_modules/object-inspect/test/fakes.js new file mode 100644 index 0000000..a65c08c --- /dev/null +++ b/bff/node_modules/object-inspect/test/fakes.js @@ -0,0 +1,29 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); +var hasToStringTag = require('has-tostringtag/shams')(); +var forEach = require('for-each'); + +test('fakes', { skip: !hasToStringTag }, function (t) { + forEach([ + 'Array', + 'Boolean', + 'Date', + 'Error', + 'Number', + 'RegExp', + 'String' + ], function (expected) { + var faker = {}; + faker[Symbol.toStringTag] = expected; + + t.equal( + inspect(faker), + '{ [Symbol(Symbol.toStringTag)]: \'' + expected + '\' }', + 'faker masquerading as ' + expected + ' is not shown as one' + ); + }); + + t.end(); +}); diff --git a/bff/node_modules/object-inspect/test/fn.js b/bff/node_modules/object-inspect/test/fn.js new file mode 100644 index 0000000..de3ca62 --- /dev/null +++ b/bff/node_modules/object-inspect/test/fn.js @@ -0,0 +1,76 @@ +var inspect = require('../'); +var test = require('tape'); +var arrow = require('make-arrow-function')(); +var functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames(); + +test('function', function (t) { + t.plan(1); + var obj = [1, 2, function f(n) { return n; }, 4]; + t.equal(inspect(obj), '[ 1, 2, [Function: f], 4 ]'); +}); + +test('function name', function (t) { + t.plan(1); + var f = (function () { + return function () {}; + }()); + f.toString = function toStr() { return 'function xxx () {}'; }; + var obj = [1, 2, f, 4]; + t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)] { toString: [Function: toStr] }, 4 ]'); +}); + +test('anon function', function (t) { + var f = (function () { + return function () {}; + }()); + var obj = [1, 2, f, 4]; + t.equal(inspect(obj), '[ 1, 2, [Function (anonymous)], 4 ]'); + + t.end(); +}); + +test('arrow function', { skip: !arrow }, function (t) { + t.equal(inspect(arrow), '[Function (anonymous)]'); + + t.end(); +}); + +test('truly nameless function', { skip: !arrow || !functionsHaveConfigurableNames }, function (t) { + function f() {} + Object.defineProperty(f, 'name', { value: false }); + t.equal(f.name, false); + t.equal( + inspect(f), + '[Function: f]', + 'named function with falsy `.name` does not hide its original name' + ); + + function g() {} + Object.defineProperty(g, 'name', { value: true }); + t.equal(g.name, true); + t.equal( + inspect(g), + '[Function: true]', + 'named function with truthy `.name` hides its original name' + ); + + var anon = function () {}; // eslint-disable-line func-style + Object.defineProperty(anon, 'name', { value: null }); + t.equal(anon.name, null); + t.equal( + inspect(anon), + '[Function (anonymous)]', + 'anon function with falsy `.name` does not hide its anonymity' + ); + + var anon2 = function () {}; // eslint-disable-line func-style + Object.defineProperty(anon2, 'name', { value: 1 }); + t.equal(anon2.name, 1); + t.equal( + inspect(anon2), + '[Function: 1]', + 'anon function with truthy `.name` hides its anonymity' + ); + + t.end(); +}); diff --git a/bff/node_modules/object-inspect/test/global.js b/bff/node_modules/object-inspect/test/global.js new file mode 100644 index 0000000..c57216a --- /dev/null +++ b/bff/node_modules/object-inspect/test/global.js @@ -0,0 +1,17 @@ +'use strict'; + +var inspect = require('../'); + +var test = require('tape'); +var globalThis = require('globalthis')(); + +test('global object', function (t) { + /* eslint-env browser */ + var expected = typeof window === 'undefined' ? 'globalThis' : 'Window'; + t.equal( + inspect([globalThis]), + '[ { [object ' + expected + '] } ]' + ); + + t.end(); +}); diff --git a/bff/node_modules/object-inspect/test/has.js b/bff/node_modules/object-inspect/test/has.js new file mode 100644 index 0000000..01800de --- /dev/null +++ b/bff/node_modules/object-inspect/test/has.js @@ -0,0 +1,15 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); +var mockProperty = require('mock-property'); + +test('when Object#hasOwnProperty is deleted', function (t) { + t.plan(1); + var arr = [1, , 3]; // eslint-disable-line no-sparse-arrays + + t.teardown(mockProperty(Array.prototype, 1, { value: 2 })); // this is needed to account for "in" vs "hasOwnProperty" + t.teardown(mockProperty(Object.prototype, 'hasOwnProperty', { 'delete': true })); + + t.equal(inspect(arr), '[ 1, , 3 ]'); +}); diff --git a/bff/node_modules/object-inspect/test/holes.js b/bff/node_modules/object-inspect/test/holes.js new file mode 100644 index 0000000..87fc8c8 --- /dev/null +++ b/bff/node_modules/object-inspect/test/holes.js @@ -0,0 +1,15 @@ +var test = require('tape'); +var inspect = require('../'); + +var xs = ['a', 'b']; +xs[5] = 'f'; +xs[7] = 'j'; +xs[8] = 'k'; + +test('holes', function (t) { + t.plan(1); + t.equal( + inspect(xs), + "[ 'a', 'b', , , , 'f', , 'j', 'k' ]" + ); +}); diff --git a/bff/node_modules/object-inspect/test/indent-option.js b/bff/node_modules/object-inspect/test/indent-option.js new file mode 100644 index 0000000..89d8fce --- /dev/null +++ b/bff/node_modules/object-inspect/test/indent-option.js @@ -0,0 +1,271 @@ +var test = require('tape'); +var forEach = require('for-each'); + +var inspect = require('../'); + +test('bad indent options', function (t) { + forEach([ + undefined, + true, + false, + -1, + 1.2, + Infinity, + -Infinity, + NaN + ], function (indent) { + t['throws']( + function () { inspect('', { indent: indent }); }, + TypeError, + inspect(indent) + ' is invalid' + ); + }); + + t.end(); +}); + +test('simple object with indent', function (t) { + t.plan(2); + + var obj = { a: 1, b: 2 }; + + var expectedSpaces = [ + '{', + ' a: 1,', + ' b: 2', + '}' + ].join('\n'); + var expectedTabs = [ + '{', + ' a: 1,', + ' b: 2', + '}' + ].join('\n'); + + t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); +}); + +test('two deep object with indent', function (t) { + t.plan(2); + + var obj = { a: 1, b: { c: 3, d: 4 } }; + + var expectedSpaces = [ + '{', + ' a: 1,', + ' b: {', + ' c: 3,', + ' d: 4', + ' }', + '}' + ].join('\n'); + var expectedTabs = [ + '{', + ' a: 1,', + ' b: {', + ' c: 3,', + ' d: 4', + ' }', + '}' + ].join('\n'); + + t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); +}); + +test('simple array with all single line elements', function (t) { + t.plan(2); + + var obj = [1, 2, 3, 'asdf\nsdf']; + + var expected = '[ 1, 2, 3, \'asdf\\nsdf\' ]'; + + t.equal(inspect(obj, { indent: 2 }), expected, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expected, 'tabs'); +}); + +test('array with complex elements', function (t) { + t.plan(2); + + var obj = [1, { a: 1, b: { c: 1 } }, 'asdf\nsdf']; + + var expectedSpaces = [ + '[', + ' 1,', + ' {', + ' a: 1,', + ' b: {', + ' c: 1', + ' }', + ' },', + ' \'asdf\\nsdf\'', + ']' + ].join('\n'); + var expectedTabs = [ + '[', + ' 1,', + ' {', + ' a: 1,', + ' b: {', + ' c: 1', + ' }', + ' },', + ' \'asdf\\nsdf\'', + ']' + ].join('\n'); + + t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); +}); + +test('values', function (t) { + t.plan(2); + var obj = [{}, [], { 'a-b': 5 }]; + + var expectedSpaces = [ + '[', + ' {},', + ' [],', + ' {', + ' \'a-b\': 5', + ' }', + ']' + ].join('\n'); + var expectedTabs = [ + '[', + ' {},', + ' [],', + ' {', + ' \'a-b\': 5', + ' }', + ']' + ].join('\n'); + + t.equal(inspect(obj, { indent: 2 }), expectedSpaces, 'two'); + t.equal(inspect(obj, { indent: '\t' }), expectedTabs, 'tabs'); +}); + +test('Map', { skip: typeof Map !== 'function' }, function (t) { + var map = new Map(); + map.set({ a: 1 }, ['b']); + map.set(3, NaN); + + var expectedStringSpaces = [ + 'Map (2) {', + ' { a: 1 } => [ \'b\' ],', + ' 3 => NaN', + '}' + ].join('\n'); + var expectedStringTabs = [ + 'Map (2) {', + ' { a: 1 } => [ \'b\' ],', + ' 3 => NaN', + '}' + ].join('\n'); + var expectedStringTabsDoubleQuotes = [ + 'Map (2) {', + ' { a: 1 } => [ "b" ],', + ' 3 => NaN', + '}' + ].join('\n'); + + t.equal( + inspect(map, { indent: 2 }), + expectedStringSpaces, + 'Map keys are not indented (two)' + ); + t.equal( + inspect(map, { indent: '\t' }), + expectedStringTabs, + 'Map keys are not indented (tabs)' + ); + t.equal( + inspect(map, { indent: '\t', quoteStyle: 'double' }), + expectedStringTabsDoubleQuotes, + 'Map keys are not indented (tabs + double quotes)' + ); + + t.equal(inspect(new Map(), { indent: 2 }), 'Map (0) {}', 'empty Map should show as empty (two)'); + t.equal(inspect(new Map(), { indent: '\t' }), 'Map (0) {}', 'empty Map should show as empty (tabs)'); + + var nestedMap = new Map(); + nestedMap.set(nestedMap, map); + var expectedNestedSpaces = [ + 'Map (1) {', + ' [Circular] => Map (2) {', + ' { a: 1 } => [ \'b\' ],', + ' 3 => NaN', + ' }', + '}' + ].join('\n'); + var expectedNestedTabs = [ + 'Map (1) {', + ' [Circular] => Map (2) {', + ' { a: 1 } => [ \'b\' ],', + ' 3 => NaN', + ' }', + '}' + ].join('\n'); + t.equal(inspect(nestedMap, { indent: 2 }), expectedNestedSpaces, 'Map containing a Map should work (two)'); + t.equal(inspect(nestedMap, { indent: '\t' }), expectedNestedTabs, 'Map containing a Map should work (tabs)'); + + t.end(); +}); + +test('Set', { skip: typeof Set !== 'function' }, function (t) { + var set = new Set(); + set.add({ a: 1 }); + set.add(['b']); + var expectedStringSpaces = [ + 'Set (2) {', + ' {', + ' a: 1', + ' },', + ' [ \'b\' ]', + '}' + ].join('\n'); + var expectedStringTabs = [ + 'Set (2) {', + ' {', + ' a: 1', + ' },', + ' [ \'b\' ]', + '}' + ].join('\n'); + t.equal(inspect(set, { indent: 2 }), expectedStringSpaces, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (two)'); + t.equal(inspect(set, { indent: '\t' }), expectedStringTabs, 'new Set([{ a: 1 }, ["b"]]) should show size and contents (tabs)'); + + t.equal(inspect(new Set(), { indent: 2 }), 'Set (0) {}', 'empty Set should show as empty (two)'); + t.equal(inspect(new Set(), { indent: '\t' }), 'Set (0) {}', 'empty Set should show as empty (tabs)'); + + var nestedSet = new Set(); + nestedSet.add(set); + nestedSet.add(nestedSet); + var expectedNestedSpaces = [ + 'Set (2) {', + ' Set (2) {', + ' {', + ' a: 1', + ' },', + ' [ \'b\' ]', + ' },', + ' [Circular]', + '}' + ].join('\n'); + var expectedNestedTabs = [ + 'Set (2) {', + ' Set (2) {', + ' {', + ' a: 1', + ' },', + ' [ \'b\' ]', + ' },', + ' [Circular]', + '}' + ].join('\n'); + t.equal(inspect(nestedSet, { indent: 2 }), expectedNestedSpaces, 'Set containing a Set should work (two)'); + t.equal(inspect(nestedSet, { indent: '\t' }), expectedNestedTabs, 'Set containing a Set should work (tabs)'); + + t.end(); +}); diff --git a/bff/node_modules/object-inspect/test/inspect.js b/bff/node_modules/object-inspect/test/inspect.js new file mode 100644 index 0000000..1abf81b --- /dev/null +++ b/bff/node_modules/object-inspect/test/inspect.js @@ -0,0 +1,139 @@ +var test = require('tape'); +var hasSymbols = require('has-symbols/shams')(); +var utilInspect = require('../util.inspect'); +var repeat = require('string.prototype.repeat'); + +var inspect = require('..'); + +test('inspect', function (t) { + t.plan(5); + + var obj = [{ inspect: function xyzInspect() { return '!XYZ¡'; } }, []]; + var stringResult = '[ !XYZ¡, [] ]'; + var falseResult = '[ { inspect: [Function: xyzInspect] }, [] ]'; + + t.equal(inspect(obj), stringResult); + t.equal(inspect(obj, { customInspect: true }), stringResult); + t.equal(inspect(obj, { customInspect: 'symbol' }), falseResult); + t.equal(inspect(obj, { customInspect: false }), falseResult); + t['throws']( + function () { inspect(obj, { customInspect: 'not a boolean or "symbol"' }); }, + TypeError, + '`customInspect` must be a boolean or the string "symbol"' + ); +}); + +test('inspect custom symbol', { skip: !hasSymbols || !utilInspect || !utilInspect.custom }, function (t) { + t.plan(4); + + var obj = { inspect: function stringInspect() { return 'string'; } }; + obj[utilInspect.custom] = function custom() { return 'symbol'; }; + + var symbolResult = '[ symbol, [] ]'; + var stringResult = '[ string, [] ]'; + var falseResult = '[ { inspect: [Function: stringInspect]' + (utilInspect.custom ? ', [' + inspect(utilInspect.custom) + ']: [Function: custom]' : '') + ' }, [] ]'; + + var symbolStringFallback = utilInspect.custom ? symbolResult : stringResult; + var symbolFalseFallback = utilInspect.custom ? symbolResult : falseResult; + + t.equal(inspect([obj, []]), symbolStringFallback); + t.equal(inspect([obj, []], { customInspect: true }), symbolStringFallback); + t.equal(inspect([obj, []], { customInspect: 'symbol' }), symbolFalseFallback); + t.equal(inspect([obj, []], { customInspect: false }), falseResult); +}); + +test('symbols', { skip: !hasSymbols }, function (t) { + t.plan(2); + + var obj = { a: 1 }; + obj[Symbol('test')] = 2; + obj[Symbol.iterator] = 3; + Object.defineProperty(obj, Symbol('non-enum'), { + enumerable: false, + value: 4 + }); + + if (typeof Symbol.iterator === 'symbol') { + t.equal(inspect(obj), '{ a: 1, [Symbol(test)]: 2, [Symbol(Symbol.iterator)]: 3 }', 'object with symbols'); + t.equal(inspect([obj, []]), '[ { a: 1, [Symbol(test)]: 2, [Symbol(Symbol.iterator)]: 3 }, [] ]', 'object with symbols in array'); + } else { + // symbol sham key ordering is unreliable + t.match( + inspect(obj), + /^(?:{ a: 1, \[Symbol\(test\)\]: 2, \[Symbol\(Symbol.iterator\)\]: 3 }|{ a: 1, \[Symbol\(Symbol.iterator\)\]: 3, \[Symbol\(test\)\]: 2 })$/, + 'object with symbols (nondeterministic symbol sham key ordering)' + ); + t.match( + inspect([obj, []]), + /^\[ (?:{ a: 1, \[Symbol\(test\)\]: 2, \[Symbol\(Symbol.iterator\)\]: 3 }|{ a: 1, \[Symbol\(Symbol.iterator\)\]: 3, \[Symbol\(test\)\]: 2 }), \[\] \]$/, + 'object with symbols in array (nondeterministic symbol sham key ordering)' + ); + } +}); + +test('maxStringLength', function (t) { + t['throws']( + function () { inspect('', { maxStringLength: -1 }); }, + TypeError, + 'maxStringLength must be >= 0, or Infinity, not negative' + ); + + var str = repeat('a', 1e8); + + t.equal( + inspect([str], { maxStringLength: 10 }), + '[ \'aaaaaaaaaa\'... 99999990 more characters ]', + 'maxStringLength option limits output' + ); + + t.equal( + inspect(['f'], { maxStringLength: null }), + '[ \'\'... 1 more character ]', + 'maxStringLength option accepts `null`' + ); + + t.equal( + inspect([str], { maxStringLength: Infinity }), + '[ \'' + str + '\' ]', + 'maxStringLength option accepts ∞' + ); + + t.end(); +}); + +test('inspect options', { skip: !utilInspect.custom }, function (t) { + var obj = {}; + obj[utilInspect.custom] = function () { + return JSON.stringify(arguments); + }; + t.equal( + inspect(obj), + utilInspect(obj, { depth: 5 }), + 'custom symbols will use node\'s inspect' + ); + t.equal( + inspect(obj, { depth: 2 }), + utilInspect(obj, { depth: 2 }), + 'a reduced depth will be passed to node\'s inspect' + ); + t.equal( + inspect({ d1: obj }, { depth: 3 }), + '{ d1: ' + utilInspect(obj, { depth: 2 }) + ' }', + 'deep objects will receive a reduced depth' + ); + t.equal( + inspect({ d1: obj }, { depth: 1 }), + '{ d1: [Object] }', + 'unlike nodejs inspect, customInspect will not be used once the depth is exceeded.' + ); + t.end(); +}); + +test('inspect URL', { skip: typeof URL === 'undefined' }, function (t) { + t.match( + inspect(new URL('https://nodejs.org')), + /nodejs\.org/, // Different environments stringify it differently + 'url can be inspected' + ); + t.end(); +}); diff --git a/bff/node_modules/object-inspect/test/lowbyte.js b/bff/node_modules/object-inspect/test/lowbyte.js new file mode 100644 index 0000000..68a345d --- /dev/null +++ b/bff/node_modules/object-inspect/test/lowbyte.js @@ -0,0 +1,12 @@ +var test = require('tape'); +var inspect = require('../'); + +var obj = { x: 'a\r\nb', y: '\x05! \x1f \x12' }; + +test('interpolate low bytes', function (t) { + t.plan(1); + t.equal( + inspect(obj), + "{ x: 'a\\r\\nb', y: '\\x05! \\x1F \\x12' }" + ); +}); diff --git a/bff/node_modules/object-inspect/test/number.js b/bff/node_modules/object-inspect/test/number.js new file mode 100644 index 0000000..8f287e8 --- /dev/null +++ b/bff/node_modules/object-inspect/test/number.js @@ -0,0 +1,58 @@ +var test = require('tape'); +var v = require('es-value-fixtures'); +var forEach = require('for-each'); + +var inspect = require('../'); + +test('negative zero', function (t) { + t.equal(inspect(0), '0', 'inspect(0) === "0"'); + t.equal(inspect(Object(0)), 'Object(0)', 'inspect(Object(0)) === "Object(0)"'); + + t.equal(inspect(-0), '-0', 'inspect(-0) === "-0"'); + t.equal(inspect(Object(-0)), 'Object(-0)', 'inspect(Object(-0)) === "Object(-0)"'); + + t.end(); +}); + +test('numericSeparator', function (t) { + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { inspect(true, { numericSeparator: nonBoolean }); }, + TypeError, + inspect(nonBoolean) + ' is not a boolean' + ); + }); + + t.test('3 digit numbers', function (st) { + var failed = false; + for (var i = -999; i < 1000; i += 1) { + var actual = inspect(i); + var actualSepNo = inspect(i, { numericSeparator: false }); + var actualSepYes = inspect(i, { numericSeparator: true }); + var expected = String(i); + if (actual !== expected || actualSepNo !== expected || actualSepYes !== expected) { + failed = true; + t.equal(actual, expected); + t.equal(actualSepNo, expected); + t.equal(actualSepYes, expected); + } + } + + st.notOk(failed, 'all 3 digit numbers passed'); + + st.end(); + }); + + t.equal(inspect(1e3), '1000', '1000'); + t.equal(inspect(1e3, { numericSeparator: false }), '1000', '1000, numericSeparator false'); + t.equal(inspect(1e3, { numericSeparator: true }), '1_000', '1000, numericSeparator true'); + t.equal(inspect(-1e3), '-1000', '-1000'); + t.equal(inspect(-1e3, { numericSeparator: false }), '-1000', '-1000, numericSeparator false'); + t.equal(inspect(-1e3, { numericSeparator: true }), '-1_000', '-1000, numericSeparator true'); + + t.equal(inspect(1234.5678, { numericSeparator: true }), '1_234.567_8', 'fractional numbers get separators'); + t.equal(inspect(1234.56789, { numericSeparator: true }), '1_234.567_89', 'fractional numbers get separators'); + t.equal(inspect(1234.567891, { numericSeparator: true }), '1_234.567_891', 'fractional numbers get separators'); + + t.end(); +}); diff --git a/bff/node_modules/object-inspect/test/quoteStyle.js b/bff/node_modules/object-inspect/test/quoteStyle.js new file mode 100644 index 0000000..da23e63 --- /dev/null +++ b/bff/node_modules/object-inspect/test/quoteStyle.js @@ -0,0 +1,26 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); + +test('quoteStyle option', function (t) { + t['throws'](function () { inspect(null, { quoteStyle: false }); }, 'false is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: true }); }, 'true is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: '' }); }, '"" is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: {} }); }, '{} is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: [] }); }, '[] is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: 42 }); }, '42 is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: NaN }); }, 'NaN is not a valid value'); + t['throws'](function () { inspect(null, { quoteStyle: function () {} }); }, 'a function is not a valid value'); + + t.equal(inspect('"', { quoteStyle: 'single' }), '\'"\'', 'double quote, quoteStyle: "single"'); + t.equal(inspect('"', { quoteStyle: 'double' }), '"\\""', 'double quote, quoteStyle: "double"'); + + t.equal(inspect('\'', { quoteStyle: 'single' }), '\'\\\'\'', 'single quote, quoteStyle: "single"'); + t.equal(inspect('\'', { quoteStyle: 'double' }), '"\'"', 'single quote, quoteStyle: "double"'); + + t.equal(inspect('`', { quoteStyle: 'single' }), '\'`\'', 'backtick, quoteStyle: "single"'); + t.equal(inspect('`', { quoteStyle: 'double' }), '"`"', 'backtick, quoteStyle: "double"'); + + t.end(); +}); diff --git a/bff/node_modules/object-inspect/test/toStringTag.js b/bff/node_modules/object-inspect/test/toStringTag.js new file mode 100644 index 0000000..95f8270 --- /dev/null +++ b/bff/node_modules/object-inspect/test/toStringTag.js @@ -0,0 +1,40 @@ +'use strict'; + +var test = require('tape'); +var hasToStringTag = require('has-tostringtag/shams')(); + +var inspect = require('../'); + +test('Symbol.toStringTag', { skip: !hasToStringTag }, function (t) { + t.plan(4); + + var obj = { a: 1 }; + t.equal(inspect(obj), '{ a: 1 }', 'object, no Symbol.toStringTag'); + + obj[Symbol.toStringTag] = 'foo'; + t.equal(inspect(obj), '{ a: 1, [Symbol(Symbol.toStringTag)]: \'foo\' }', 'object with Symbol.toStringTag'); + + t.test('null objects', { skip: 'toString' in { __proto__: null } }, function (st) { + st.plan(2); + + var dict = { __proto__: null, a: 1 }; + st.equal(inspect(dict), '[Object: null prototype] { a: 1 }', 'null object with Symbol.toStringTag'); + + dict[Symbol.toStringTag] = 'Dict'; + st.equal(inspect(dict), '[Dict: null prototype] { a: 1, [Symbol(Symbol.toStringTag)]: \'Dict\' }', 'null object with Symbol.toStringTag'); + }); + + t.test('instances', function (st) { + st.plan(4); + + function C() { + this.a = 1; + } + st.equal(Object.prototype.toString.call(new C()), '[object Object]', 'instance, no toStringTag, Object.prototype.toString'); + st.equal(inspect(new C()), 'C { a: 1 }', 'instance, no toStringTag'); + + C.prototype[Symbol.toStringTag] = 'Class!'; + st.equal(Object.prototype.toString.call(new C()), '[object Class!]', 'instance, with toStringTag, Object.prototype.toString'); + st.equal(inspect(new C()), 'C [Class!] { a: 1 }', 'instance, with toStringTag'); + }); +}); diff --git a/bff/node_modules/object-inspect/test/undef.js b/bff/node_modules/object-inspect/test/undef.js new file mode 100644 index 0000000..e3f4961 --- /dev/null +++ b/bff/node_modules/object-inspect/test/undef.js @@ -0,0 +1,12 @@ +var test = require('tape'); +var inspect = require('../'); + +var obj = { a: 1, b: [3, 4, undefined, null], c: undefined, d: null }; + +test('undef and null', function (t) { + t.plan(1); + t.equal( + inspect(obj), + '{ a: 1, b: [ 3, 4, undefined, null ], c: undefined, d: null }' + ); +}); diff --git a/bff/node_modules/object-inspect/test/values.js b/bff/node_modules/object-inspect/test/values.js new file mode 100644 index 0000000..15986cd --- /dev/null +++ b/bff/node_modules/object-inspect/test/values.js @@ -0,0 +1,261 @@ +'use strict'; + +var inspect = require('../'); +var test = require('tape'); +var mockProperty = require('mock-property'); +var hasSymbols = require('has-symbols/shams')(); +var hasToStringTag = require('has-tostringtag/shams')(); +var forEach = require('for-each'); +var semver = require('semver'); + +test('values', function (t) { + t.plan(1); + var obj = [{}, [], { 'a-b': 5 }]; + t.equal(inspect(obj), '[ {}, [], { \'a-b\': 5 } ]'); +}); + +test('arrays with properties', function (t) { + t.plan(1); + var arr = [3]; + arr.foo = 'bar'; + var obj = [1, 2, arr]; + obj.baz = 'quux'; + obj.index = -1; + t.equal(inspect(obj), '[ 1, 2, [ 3, foo: \'bar\' ], baz: \'quux\', index: -1 ]'); +}); + +test('has', function (t) { + t.plan(1); + t.teardown(mockProperty(Object.prototype, 'hasOwnProperty', { 'delete': true })); + + t.equal(inspect({ a: 1, b: 2 }), '{ a: 1, b: 2 }'); +}); + +test('indexOf seen', function (t) { + t.plan(1); + var xs = [1, 2, 3, {}]; + xs.push(xs); + + var seen = []; + seen.indexOf = undefined; + + t.equal( + inspect(xs, {}, 0, seen), + '[ 1, 2, 3, {}, [Circular] ]' + ); +}); + +test('seen seen', function (t) { + t.plan(1); + var xs = [1, 2, 3]; + + var seen = [xs]; + seen.indexOf = undefined; + + t.equal( + inspect(xs, {}, 0, seen), + '[Circular]' + ); +}); + +test('seen seen seen', function (t) { + t.plan(1); + var xs = [1, 2, 3]; + + var seen = [5, xs]; + seen.indexOf = undefined; + + t.equal( + inspect(xs, {}, 0, seen), + '[Circular]' + ); +}); + +test('symbols', { skip: !hasSymbols }, function (t) { + var sym = Symbol('foo'); + t.equal(inspect(sym), 'Symbol(foo)', 'Symbol("foo") should be "Symbol(foo)"'); + if (typeof sym === 'symbol') { + // Symbol shams are incapable of differentiating boxed from unboxed symbols + t.equal(inspect(Object(sym)), 'Object(Symbol(foo))', 'Object(Symbol("foo")) should be "Object(Symbol(foo))"'); + } + + t.test('toStringTag', { skip: !hasToStringTag }, function (st) { + st.plan(1); + + var faker = {}; + faker[Symbol.toStringTag] = 'Symbol'; + st.equal( + inspect(faker), + '{ [Symbol(Symbol.toStringTag)]: \'Symbol\' }', + 'object lying about being a Symbol inspects as an object' + ); + }); + + t.end(); +}); + +test('Map', { skip: typeof Map !== 'function' }, function (t) { + var map = new Map(); + map.set({ a: 1 }, ['b']); + map.set(3, NaN); + var expectedString = 'Map (2) {' + inspect({ a: 1 }) + ' => ' + inspect(['b']) + ', 3 => NaN}'; + t.equal(inspect(map), expectedString, 'new Map([[{ a: 1 }, ["b"]], [3, NaN]]) should show size and contents'); + t.equal(inspect(new Map()), 'Map (0) {}', 'empty Map should show as empty'); + + var nestedMap = new Map(); + nestedMap.set(nestedMap, map); + t.equal(inspect(nestedMap), 'Map (1) {[Circular] => ' + expectedString + '}', 'Map containing a Map should work'); + + t.end(); +}); + +test('WeakMap', { skip: typeof WeakMap !== 'function' }, function (t) { + var map = new WeakMap(); + map.set({ a: 1 }, ['b']); + var expectedString = 'WeakMap { ? }'; + t.equal(inspect(map), expectedString, 'new WeakMap([[{ a: 1 }, ["b"]]]) should not show size or contents'); + t.equal(inspect(new WeakMap()), 'WeakMap { ? }', 'empty WeakMap should not show as empty'); + + t.end(); +}); + +test('Set', { skip: typeof Set !== 'function' }, function (t) { + var set = new Set(); + set.add({ a: 1 }); + set.add(['b']); + var expectedString = 'Set (2) {' + inspect({ a: 1 }) + ', ' + inspect(['b']) + '}'; + t.equal(inspect(set), expectedString, 'new Set([{ a: 1 }, ["b"]]) should show size and contents'); + t.equal(inspect(new Set()), 'Set (0) {}', 'empty Set should show as empty'); + + var nestedSet = new Set(); + nestedSet.add(set); + nestedSet.add(nestedSet); + t.equal(inspect(nestedSet), 'Set (2) {' + expectedString + ', [Circular]}', 'Set containing a Set should work'); + + t.end(); +}); + +test('WeakSet', { skip: typeof WeakSet !== 'function' }, function (t) { + var map = new WeakSet(); + map.add({ a: 1 }); + var expectedString = 'WeakSet { ? }'; + t.equal(inspect(map), expectedString, 'new WeakSet([{ a: 1 }]) should not show size or contents'); + t.equal(inspect(new WeakSet()), 'WeakSet { ? }', 'empty WeakSet should not show as empty'); + + t.end(); +}); + +test('WeakRef', { skip: typeof WeakRef !== 'function' }, function (t) { + var ref = new WeakRef({ a: 1 }); + var expectedString = 'WeakRef { ? }'; + t.equal(inspect(ref), expectedString, 'new WeakRef({ a: 1 }) should not show contents'); + + t.end(); +}); + +test('FinalizationRegistry', { skip: typeof FinalizationRegistry !== 'function' }, function (t) { + var registry = new FinalizationRegistry(function () {}); + var expectedString = 'FinalizationRegistry [FinalizationRegistry] {}'; + t.equal(inspect(registry), expectedString, 'new FinalizationRegistry(function () {}) should work normallys'); + + t.end(); +}); + +test('Strings', function (t) { + var str = 'abc'; + + t.equal(inspect(str), "'" + str + "'", 'primitive string shows as such'); + t.equal(inspect(str, { quoteStyle: 'single' }), "'" + str + "'", 'primitive string shows as such, single quoted'); + t.equal(inspect(str, { quoteStyle: 'double' }), '"' + str + '"', 'primitive string shows as such, double quoted'); + t.equal(inspect(Object(str)), 'Object(' + inspect(str) + ')', 'String object shows as such'); + t.equal(inspect(Object(str), { quoteStyle: 'single' }), 'Object(' + inspect(str, { quoteStyle: 'single' }) + ')', 'String object shows as such, single quoted'); + t.equal(inspect(Object(str), { quoteStyle: 'double' }), 'Object(' + inspect(str, { quoteStyle: 'double' }) + ')', 'String object shows as such, double quoted'); + + t.end(); +}); + +test('Numbers', function (t) { + var num = 42; + + t.equal(inspect(num), String(num), 'primitive number shows as such'); + t.equal(inspect(Object(num)), 'Object(' + inspect(num) + ')', 'Number object shows as such'); + + t.end(); +}); + +test('Booleans', function (t) { + t.equal(inspect(true), String(true), 'primitive true shows as such'); + t.equal(inspect(Object(true)), 'Object(' + inspect(true) + ')', 'Boolean object true shows as such'); + + t.equal(inspect(false), String(false), 'primitive false shows as such'); + t.equal(inspect(Object(false)), 'Object(' + inspect(false) + ')', 'Boolean false object shows as such'); + + t.end(); +}); + +test('Date', function (t) { + var now = new Date(); + t.equal(inspect(now), String(now), 'Date shows properly'); + t.equal(inspect(new Date(NaN)), 'Invalid Date', 'Invalid Date shows properly'); + + t.end(); +}); + +test('RegExps', function (t) { + t.equal(inspect(/a/g), '/a/g', 'regex shows properly'); + t.equal(inspect(new RegExp('abc', 'i')), '/abc/i', 'new RegExp shows properly'); + + var match = 'abc abc'.match(/[ab]+/); + delete match.groups; // for node < 10 + t.equal(inspect(match), '[ \'ab\', index: 0, input: \'abc abc\' ]', 'RegExp match object shows properly'); + + t.end(); +}); + +test('Proxies', { skip: typeof Proxy !== 'function' || !hasToStringTag }, function (t) { + var target = { proxy: true }; + var fake = new Proxy(target, { has: function () { return false; } }); + + // needed to work around a weird difference in node v6.0 - v6.4 where non-present properties are not logged + var isNode60 = semver.satisfies(process.version, '6.0 - 6.4'); + + forEach([ + 'Boolean', + 'Number', + 'String', + 'Symbol', + 'Date' + ], function (tag) { + target[Symbol.toStringTag] = tag; + + t.equal( + inspect(fake), + '{ ' + (isNode60 ? '' : 'proxy: true, ') + '[Symbol(Symbol.toStringTag)]: \'' + tag + '\' }', + 'Proxy for + ' + tag + ' shows as the target, which has no slots' + ); + }); + + t.end(); +}); + +test('fakers', { skip: !hasToStringTag }, function (t) { + var target = { proxy: false }; + + forEach([ + 'Boolean', + 'Number', + 'String', + 'Symbol', + 'Date' + ], function (tag) { + target[Symbol.toStringTag] = tag; + + t.equal( + inspect(target), + '{ proxy: false, [Symbol(Symbol.toStringTag)]: \'' + tag + '\' }', + 'Object pretending to be ' + tag + ' does not trick us' + ); + }); + + t.end(); +}); diff --git a/bff/node_modules/object-inspect/util.inspect.js b/bff/node_modules/object-inspect/util.inspect.js new file mode 100644 index 0000000..7784fab --- /dev/null +++ b/bff/node_modules/object-inspect/util.inspect.js @@ -0,0 +1 @@ +module.exports = require('util').inspect; diff --git a/bff/node_modules/on-finished/HISTORY.md b/bff/node_modules/on-finished/HISTORY.md new file mode 100644 index 0000000..1917595 --- /dev/null +++ b/bff/node_modules/on-finished/HISTORY.md @@ -0,0 +1,98 @@ +2.4.1 / 2022-02-22 +================== + + * Fix error on early async hooks implementations + +2.4.0 / 2022-02-21 +================== + + * Prevent loss of async hooks context + +2.3.0 / 2015-05-26 +================== + + * Add defined behavior for HTTP `CONNECT` requests + * Add defined behavior for HTTP `Upgrade` requests + * deps: ee-first@1.1.1 + +2.2.1 / 2015-04-22 +================== + + * Fix `isFinished(req)` when data buffered + +2.2.0 / 2014-12-22 +================== + + * Add message object to callback arguments + +2.1.1 / 2014-10-22 +================== + + * Fix handling of pipelined requests + +2.1.0 / 2014-08-16 +================== + + * Check if `socket` is detached + * Return `undefined` for `isFinished` if state unknown + +2.0.0 / 2014-08-16 +================== + + * Add `isFinished` function + * Move to `jshttp` organization + * Remove support for plain socket argument + * Rename to `on-finished` + * Support both `req` and `res` as arguments + * deps: ee-first@1.0.5 + +1.2.2 / 2014-06-10 +================== + + * Reduce listeners added to emitters + - avoids "event emitter leak" warnings when used multiple times on same request + +1.2.1 / 2014-06-08 +================== + + * Fix returned value when already finished + +1.2.0 / 2014-06-05 +================== + + * Call callback when called on already-finished socket + +1.1.4 / 2014-05-27 +================== + + * Support node.js 0.8 + +1.1.3 / 2014-04-30 +================== + + * Make sure errors passed as instanceof `Error` + +1.1.2 / 2014-04-18 +================== + + * Default the `socket` to passed-in object + +1.1.1 / 2014-01-16 +================== + + * Rename module to `finished` + +1.1.0 / 2013-12-25 +================== + + * Call callback when called on already-errored socket + +1.0.1 / 2013-12-20 +================== + + * Actually pass the error to the callback + +1.0.0 / 2013-12-20 +================== + + * Initial release diff --git a/bff/node_modules/on-finished/LICENSE b/bff/node_modules/on-finished/LICENSE new file mode 100644 index 0000000..5931fd2 --- /dev/null +++ b/bff/node_modules/on-finished/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2013 Jonathan Ong +Copyright (c) 2014 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/on-finished/README.md b/bff/node_modules/on-finished/README.md new file mode 100644 index 0000000..8973cde --- /dev/null +++ b/bff/node_modules/on-finished/README.md @@ -0,0 +1,162 @@ +# on-finished + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Coverage Status][coveralls-image]][coveralls-url] + +Execute a callback when a HTTP request closes, finishes, or errors. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install on-finished +``` + +## API + +```js +var onFinished = require('on-finished') +``` + +### onFinished(res, listener) + +Attach a listener to listen for the response to finish. The listener will +be invoked only once when the response finished. If the response finished +to an error, the first argument will contain the error. If the response +has already finished, the listener will be invoked. + +Listening to the end of a response would be used to close things associated +with the response, like open files. + +Listener is invoked as `listener(err, res)`. + + + +```js +onFinished(res, function (err, res) { + // clean up open fds, etc. + // err contains the error if request error'd +}) +``` + +### onFinished(req, listener) + +Attach a listener to listen for the request to finish. The listener will +be invoked only once when the request finished. If the request finished +to an error, the first argument will contain the error. If the request +has already finished, the listener will be invoked. + +Listening to the end of a request would be used to know when to continue +after reading the data. + +Listener is invoked as `listener(err, req)`. + + + +```js +var data = '' + +req.setEncoding('utf8') +req.on('data', function (str) { + data += str +}) + +onFinished(req, function (err, req) { + // data is read unless there is err +}) +``` + +### onFinished.isFinished(res) + +Determine if `res` is already finished. This would be useful to check and +not even start certain operations if the response has already finished. + +### onFinished.isFinished(req) + +Determine if `req` is already finished. This would be useful to check and +not even start certain operations if the request has already finished. + +## Special Node.js requests + +### HTTP CONNECT method + +The meaning of the `CONNECT` method from RFC 7231, section 4.3.6: + +> The CONNECT method requests that the recipient establish a tunnel to +> the destination origin server identified by the request-target and, +> if successful, thereafter restrict its behavior to blind forwarding +> of packets, in both directions, until the tunnel is closed. Tunnels +> are commonly used to create an end-to-end virtual connection, through +> one or more proxies, which can then be secured using TLS (Transport +> Layer Security, [RFC5246]). + +In Node.js, these request objects come from the `'connect'` event on +the HTTP server. + +When this module is used on a HTTP `CONNECT` request, the request is +considered "finished" immediately, **due to limitations in the Node.js +interface**. This means if the `CONNECT` request contains a request entity, +the request will be considered "finished" even before it has been read. + +There is no such thing as a response object to a `CONNECT` request in +Node.js, so there is no support for one. + +### HTTP Upgrade request + +The meaning of the `Upgrade` header from RFC 7230, section 6.1: + +> The "Upgrade" header field is intended to provide a simple mechanism +> for transitioning from HTTP/1.1 to some other protocol on the same +> connection. + +In Node.js, these request objects come from the `'upgrade'` event on +the HTTP server. + +When this module is used on a HTTP request with an `Upgrade` header, the +request is considered "finished" immediately, **due to limitations in the +Node.js interface**. This means if the `Upgrade` request contains a request +entity, the request will be considered "finished" even before it has been +read. + +There is no such thing as a response object to a `Upgrade` request in +Node.js, so there is no support for one. + +## Example + +The following code ensures that file descriptors are always closed +once the response finishes. + +```js +var destroy = require('destroy') +var fs = require('fs') +var http = require('http') +var onFinished = require('on-finished') + +http.createServer(function onRequest (req, res) { + var stream = fs.createReadStream('package.json') + stream.pipe(res) + onFinished(res, function () { + destroy(stream) + }) +}) +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/on-finished/master?label=ci +[ci-url]: https://github.com/jshttp/on-finished/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/on-finished/master +[coveralls-url]: https://coveralls.io/r/jshttp/on-finished?branch=master +[node-image]: https://badgen.net/npm/node/on-finished +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/on-finished +[npm-url]: https://npmjs.org/package/on-finished +[npm-version-image]: https://badgen.net/npm/v/on-finished diff --git a/bff/node_modules/on-finished/index.js b/bff/node_modules/on-finished/index.js new file mode 100644 index 0000000..e68df7b --- /dev/null +++ b/bff/node_modules/on-finished/index.js @@ -0,0 +1,234 @@ +/*! + * on-finished + * Copyright(c) 2013 Jonathan Ong + * Copyright(c) 2014 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = onFinished +module.exports.isFinished = isFinished + +/** + * Module dependencies. + * @private + */ + +var asyncHooks = tryRequireAsyncHooks() +var first = require('ee-first') + +/** + * Variables. + * @private + */ + +/* istanbul ignore next */ +var defer = typeof setImmediate === 'function' + ? setImmediate + : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) } + +/** + * Invoke callback when the response has finished, useful for + * cleaning up resources afterwards. + * + * @param {object} msg + * @param {function} listener + * @return {object} + * @public + */ + +function onFinished (msg, listener) { + if (isFinished(msg) !== false) { + defer(listener, null, msg) + return msg + } + + // attach the listener to the message + attachListener(msg, wrap(listener)) + + return msg +} + +/** + * Determine if message is already finished. + * + * @param {object} msg + * @return {boolean} + * @public + */ + +function isFinished (msg) { + var socket = msg.socket + + if (typeof msg.finished === 'boolean') { + // OutgoingMessage + return Boolean(msg.finished || (socket && !socket.writable)) + } + + if (typeof msg.complete === 'boolean') { + // IncomingMessage + return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable)) + } + + // don't know + return undefined +} + +/** + * Attach a finished listener to the message. + * + * @param {object} msg + * @param {function} callback + * @private + */ + +function attachFinishedListener (msg, callback) { + var eeMsg + var eeSocket + var finished = false + + function onFinish (error) { + eeMsg.cancel() + eeSocket.cancel() + + finished = true + callback(error) + } + + // finished on first message event + eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish) + + function onSocket (socket) { + // remove listener + msg.removeListener('socket', onSocket) + + if (finished) return + if (eeMsg !== eeSocket) return + + // finished on first socket event + eeSocket = first([[socket, 'error', 'close']], onFinish) + } + + if (msg.socket) { + // socket already assigned + onSocket(msg.socket) + return + } + + // wait for socket to be assigned + msg.on('socket', onSocket) + + if (msg.socket === undefined) { + // istanbul ignore next: node.js 0.8 patch + patchAssignSocket(msg, onSocket) + } +} + +/** + * Attach the listener to the message. + * + * @param {object} msg + * @return {function} + * @private + */ + +function attachListener (msg, listener) { + var attached = msg.__onFinished + + // create a private single listener with queue + if (!attached || !attached.queue) { + attached = msg.__onFinished = createListener(msg) + attachFinishedListener(msg, attached) + } + + attached.queue.push(listener) +} + +/** + * Create listener on message. + * + * @param {object} msg + * @return {function} + * @private + */ + +function createListener (msg) { + function listener (err) { + if (msg.__onFinished === listener) msg.__onFinished = null + if (!listener.queue) return + + var queue = listener.queue + listener.queue = null + + for (var i = 0; i < queue.length; i++) { + queue[i](err, msg) + } + } + + listener.queue = [] + + return listener +} + +/** + * Patch ServerResponse.prototype.assignSocket for node.js 0.8. + * + * @param {ServerResponse} res + * @param {function} callback + * @private + */ + +// istanbul ignore next: node.js 0.8 patch +function patchAssignSocket (res, callback) { + var assignSocket = res.assignSocket + + if (typeof assignSocket !== 'function') return + + // res.on('socket', callback) is broken in 0.8 + res.assignSocket = function _assignSocket (socket) { + assignSocket.call(this, socket) + callback(socket) + } +} + +/** + * Try to require async_hooks + * @private + */ + +function tryRequireAsyncHooks () { + try { + return require('async_hooks') + } catch (e) { + return {} + } +} + +/** + * Wrap function with async resource, if possible. + * AsyncResource.bind static method backported. + * @private + */ + +function wrap (fn) { + var res + + // create anonymous resource + if (asyncHooks.AsyncResource) { + res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn') + } + + // incompatible node.js + if (!res || !res.runInAsyncScope) { + return fn + } + + // return bound function + return res.runInAsyncScope.bind(res, fn, null) +} diff --git a/bff/node_modules/on-finished/package.json b/bff/node_modules/on-finished/package.json new file mode 100644 index 0000000..644cd81 --- /dev/null +++ b/bff/node_modules/on-finished/package.json @@ -0,0 +1,39 @@ +{ + "name": "on-finished", + "description": "Execute a callback when a request closes, finishes, or errors", + "version": "2.4.1", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "repository": "jshttp/on-finished", + "dependencies": { + "ee-first": "1.1.1" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.1", + "nyc": "15.1.0" + }, + "engines": { + "node": ">= 0.8" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "index.js" + ], + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/once/LICENSE b/bff/node_modules/once/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/bff/node_modules/once/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/bff/node_modules/once/README.md b/bff/node_modules/once/README.md new file mode 100644 index 0000000..1f1ffca --- /dev/null +++ b/bff/node_modules/once/README.md @@ -0,0 +1,79 @@ +# once + +Only call a function once. + +## usage + +```javascript +var once = require('once') + +function load (file, cb) { + cb = once(cb) + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Or add to the Function.prototype in a responsible way: + +```javascript +// only has to be done once +require('once').proto() + +function load (file, cb) { + cb = cb.once() + loader.load('file') + loader.once('load', cb) + loader.once('error', cb) +} +``` + +Ironically, the prototype feature makes this module twice as +complicated as necessary. + +To check whether you function has been called, use `fn.called`. Once the +function is called for the first time the return value of the original +function is saved in `fn.value` and subsequent calls will continue to +return this value. + +```javascript +var once = require('once') + +function load (cb) { + cb = once(cb) + var stream = createStream() + stream.once('data', cb) + stream.once('end', function () { + if (!cb.called) cb(new Error('not found')) + }) +} +``` + +## `once.strict(func)` + +Throw an error if the function is called twice. + +Some functions are expected to be called only once. Using `once` for them would +potentially hide logical errors. + +In the example below, the `greet` function has to call the callback only once: + +```javascript +function greet (name, cb) { + // return is missing from the if statement + // when no name is passed, the callback is called twice + if (!name) cb('Hello anonymous') + cb('Hello ' + name) +} + +function log (msg) { + console.log(msg) +} + +// this will print 'Hello anonymous' but the logical error will be missed +greet(null, once(msg)) + +// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time +greet(null, once.strict(msg)) +``` diff --git a/bff/node_modules/once/once.js b/bff/node_modules/once/once.js new file mode 100644 index 0000000..2354067 --- /dev/null +++ b/bff/node_modules/once/once.js @@ -0,0 +1,42 @@ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} diff --git a/bff/node_modules/once/package.json b/bff/node_modules/once/package.json new file mode 100644 index 0000000..16815b2 --- /dev/null +++ b/bff/node_modules/once/package.json @@ -0,0 +1,33 @@ +{ + "name": "once", + "version": "1.4.0", + "description": "Run a function exactly one time", + "main": "once.js", + "directories": { + "test": "test" + }, + "dependencies": { + "wrappy": "1" + }, + "devDependencies": { + "tap": "^7.0.1" + }, + "scripts": { + "test": "tap test/*.js" + }, + "files": [ + "once.js" + ], + "repository": { + "type": "git", + "url": "git://github.com/isaacs/once" + }, + "keywords": [ + "once", + "function", + "one", + "single" + ], + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC" +} diff --git a/bff/node_modules/parseurl/HISTORY.md b/bff/node_modules/parseurl/HISTORY.md new file mode 100644 index 0000000..8e40954 --- /dev/null +++ b/bff/node_modules/parseurl/HISTORY.md @@ -0,0 +1,58 @@ +1.3.3 / 2019-04-15 +================== + + * Fix Node.js 0.8 return value inconsistencies + +1.3.2 / 2017-09-09 +================== + + * perf: reduce overhead for full URLs + * perf: unroll the "fast-path" `RegExp` + +1.3.1 / 2016-01-17 +================== + + * perf: enable strict mode + +1.3.0 / 2014-08-09 +================== + + * Add `parseurl.original` for parsing `req.originalUrl` with fallback + * Return `undefined` if `req.url` is `undefined` + +1.2.0 / 2014-07-21 +================== + + * Cache URLs based on original value + * Remove no-longer-needed URL mis-parse work-around + * Simplify the "fast-path" `RegExp` + +1.1.3 / 2014-07-08 +================== + + * Fix typo + +1.1.2 / 2014-07-08 +================== + + * Seriously fix Node.js 0.8 compatibility + +1.1.1 / 2014-07-08 +================== + + * Fix Node.js 0.8 compatibility + +1.1.0 / 2014-07-08 +================== + + * Incorporate URL href-only parse fast-path + +1.0.1 / 2014-03-08 +================== + + * Add missing `require` + +1.0.0 / 2014-03-08 +================== + + * Genesis from `connect` diff --git a/bff/node_modules/parseurl/LICENSE b/bff/node_modules/parseurl/LICENSE new file mode 100644 index 0000000..27653d3 --- /dev/null +++ b/bff/node_modules/parseurl/LICENSE @@ -0,0 +1,24 @@ + +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/parseurl/README.md b/bff/node_modules/parseurl/README.md new file mode 100644 index 0000000..443e716 --- /dev/null +++ b/bff/node_modules/parseurl/README.md @@ -0,0 +1,133 @@ +# parseurl + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Parse a URL with memoization. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install parseurl +``` + +## API + +```js +var parseurl = require('parseurl') +``` + +### parseurl(req) + +Parse the URL of the given request object (looks at the `req.url` property) +and return the result. The result is the same as `url.parse` in Node.js core. +Calling this function multiple times on the same `req` where `req.url` does +not change will return a cached parsed object, rather than parsing again. + +### parseurl.original(req) + +Parse the original URL of the given request object and return the result. +This works by trying to parse `req.originalUrl` if it is a string, otherwise +parses `req.url`. The result is the same as `url.parse` in Node.js core. +Calling this function multiple times on the same `req` where `req.originalUrl` +does not change will return a cached parsed object, rather than parsing again. + +## Benchmark + +```bash +$ npm run-script bench + +> parseurl@1.3.3 bench nodejs-parseurl +> node benchmark/index.js + + http_parser@2.8.0 + node@10.6.0 + v8@6.7.288.46-node.13 + uv@1.21.0 + zlib@1.2.11 + ares@1.14.0 + modules@64 + nghttp2@1.32.0 + napi@3 + openssl@1.1.0h + icu@61.1 + unicode@10.0 + cldr@33.0 + tz@2018c + +> node benchmark/fullurl.js + + Parsing URL "http://localhost:8888/foo/bar?user=tj&pet=fluffy" + + 4 tests completed. + + fasturl x 2,207,842 ops/sec ±3.76% (184 runs sampled) + nativeurl - legacy x 507,180 ops/sec ±0.82% (191 runs sampled) + nativeurl - whatwg x 290,044 ops/sec ±1.96% (189 runs sampled) + parseurl x 488,907 ops/sec ±2.13% (192 runs sampled) + +> node benchmark/pathquery.js + + Parsing URL "/foo/bar?user=tj&pet=fluffy" + + 4 tests completed. + + fasturl x 3,812,564 ops/sec ±3.15% (188 runs sampled) + nativeurl - legacy x 2,651,631 ops/sec ±1.68% (189 runs sampled) + nativeurl - whatwg x 161,837 ops/sec ±2.26% (189 runs sampled) + parseurl x 4,166,338 ops/sec ±2.23% (184 runs sampled) + +> node benchmark/samerequest.js + + Parsing URL "/foo/bar?user=tj&pet=fluffy" on same request object + + 4 tests completed. + + fasturl x 3,821,651 ops/sec ±2.42% (185 runs sampled) + nativeurl - legacy x 2,651,162 ops/sec ±1.90% (187 runs sampled) + nativeurl - whatwg x 175,166 ops/sec ±1.44% (188 runs sampled) + parseurl x 14,912,606 ops/sec ±3.59% (183 runs sampled) + +> node benchmark/simplepath.js + + Parsing URL "/foo/bar" + + 4 tests completed. + + fasturl x 12,421,765 ops/sec ±2.04% (191 runs sampled) + nativeurl - legacy x 7,546,036 ops/sec ±1.41% (188 runs sampled) + nativeurl - whatwg x 198,843 ops/sec ±1.83% (189 runs sampled) + parseurl x 24,244,006 ops/sec ±0.51% (194 runs sampled) + +> node benchmark/slash.js + + Parsing URL "/" + + 4 tests completed. + + fasturl x 17,159,456 ops/sec ±3.25% (188 runs sampled) + nativeurl - legacy x 11,635,097 ops/sec ±3.79% (184 runs sampled) + nativeurl - whatwg x 240,693 ops/sec ±0.83% (189 runs sampled) + parseurl x 42,279,067 ops/sec ±0.55% (190 runs sampled) +``` + +## License + + [MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/pillarjs/parseurl/master +[coveralls-url]: https://coveralls.io/r/pillarjs/parseurl?branch=master +[node-image]: https://badgen.net/npm/node/parseurl +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/parseurl +[npm-url]: https://npmjs.org/package/parseurl +[npm-version-image]: https://badgen.net/npm/v/parseurl +[travis-image]: https://badgen.net/travis/pillarjs/parseurl/master +[travis-url]: https://travis-ci.org/pillarjs/parseurl diff --git a/bff/node_modules/parseurl/index.js b/bff/node_modules/parseurl/index.js new file mode 100644 index 0000000..ece7223 --- /dev/null +++ b/bff/node_modules/parseurl/index.js @@ -0,0 +1,158 @@ +/*! + * parseurl + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var url = require('url') +var parse = url.parse +var Url = url.Url + +/** + * Module exports. + * @public + */ + +module.exports = parseurl +module.exports.original = originalurl + +/** + * Parse the `req` url with memoization. + * + * @param {ServerRequest} req + * @return {Object} + * @public + */ + +function parseurl (req) { + var url = req.url + + if (url === undefined) { + // URL is undefined + return undefined + } + + var parsed = req._parsedUrl + + if (fresh(url, parsed)) { + // Return cached URL parse + return parsed + } + + // Parse the URL + parsed = fastparse(url) + parsed._raw = url + + return (req._parsedUrl = parsed) +}; + +/** + * Parse the `req` original url with fallback and memoization. + * + * @param {ServerRequest} req + * @return {Object} + * @public + */ + +function originalurl (req) { + var url = req.originalUrl + + if (typeof url !== 'string') { + // Fallback + return parseurl(req) + } + + var parsed = req._parsedOriginalUrl + + if (fresh(url, parsed)) { + // Return cached URL parse + return parsed + } + + // Parse the URL + parsed = fastparse(url) + parsed._raw = url + + return (req._parsedOriginalUrl = parsed) +}; + +/** + * Parse the `str` url with fast-path short-cut. + * + * @param {string} str + * @return {Object} + * @private + */ + +function fastparse (str) { + if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) { + return parse(str) + } + + var pathname = str + var query = null + var search = null + + // This takes the regexp from https://github.com/joyent/node/pull/7878 + // Which is /^(\/[^?#\s]*)(\?[^#\s]*)?$/ + // And unrolls it into a for loop + for (var i = 1; i < str.length; i++) { + switch (str.charCodeAt(i)) { + case 0x3f: /* ? */ + if (search === null) { + pathname = str.substring(0, i) + query = str.substring(i + 1) + search = str.substring(i) + } + break + case 0x09: /* \t */ + case 0x0a: /* \n */ + case 0x0c: /* \f */ + case 0x0d: /* \r */ + case 0x20: /* */ + case 0x23: /* # */ + case 0xa0: + case 0xfeff: + return parse(str) + } + } + + var url = Url !== undefined + ? new Url() + : {} + + url.path = str + url.href = str + url.pathname = pathname + + if (search !== null) { + url.query = query + url.search = search + } + + return url +} + +/** + * Determine if parsed is still fresh for url. + * + * @param {string} url + * @param {object} parsedUrl + * @return {boolean} + * @private + */ + +function fresh (url, parsedUrl) { + return typeof parsedUrl === 'object' && + parsedUrl !== null && + (Url === undefined || parsedUrl instanceof Url) && + parsedUrl._raw === url +} diff --git a/bff/node_modules/parseurl/package.json b/bff/node_modules/parseurl/package.json new file mode 100644 index 0000000..6b443ca --- /dev/null +++ b/bff/node_modules/parseurl/package.json @@ -0,0 +1,40 @@ +{ + "name": "parseurl", + "description": "parse a url with memoization", + "version": "1.3.3", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "repository": "pillarjs/parseurl", + "license": "MIT", + "devDependencies": { + "beautify-benchmark": "0.2.4", + "benchmark": "2.1.4", + "eslint": "5.16.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.17.1", + "eslint-plugin-node": "7.0.1", + "eslint-plugin-promise": "4.1.1", + "eslint-plugin-standard": "4.0.0", + "fast-url-parser": "1.1.3", + "istanbul": "0.4.5", + "mocha": "6.1.3" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "bench": "node benchmark/index.js", + "lint": "eslint .", + "test": "mocha --check-leaks --bail --reporter spec test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/" + } +} diff --git a/bff/node_modules/path-expression-matcher/LICENSE b/bff/node_modules/path-expression-matcher/LICENSE new file mode 100644 index 0000000..c13f991 --- /dev/null +++ b/bff/node_modules/path-expression-matcher/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/path-expression-matcher/README.md b/bff/node_modules/path-expression-matcher/README.md new file mode 100644 index 0000000..bbbcd6f --- /dev/null +++ b/bff/node_modules/path-expression-matcher/README.md @@ -0,0 +1,720 @@ +# path-expression-matcher + +Efficient path tracking and pattern matching for XML, JSON, YAML or any other parsers. + +## 🎯 Purpose + +`path-expression-matcher` provides two core classes for tracking and matching paths: + +- **`Expression`**: Parses and stores pattern expressions (e.g., `"root.users.user[id]"`) +- **`Matcher`**: Tracks current path during parsing and matches against expressions + +Compatible with [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) and similar tools. + +## 📦 Installation + +```bash +npm install path-expression-matcher +``` + +## 🚀 Quick Start + +```javascript +import { Expression, Matcher } from 'path-expression-matcher'; + +// Create expression (parse once, reuse many times) +const expr = new Expression("root.users.user"); + +// Create matcher (tracks current path) +const matcher = new Matcher(); + +matcher.push("root"); +matcher.push("users"); +matcher.push("user", { id: "123" }); + +// Match current path against expression +if (matcher.matches(expr)) { + console.log("Match found!"); + console.log("Current path:", matcher.toString()); // "root.users.user" +} + +// Namespace support +const nsExpr = new Expression("soap::Envelope.soap::Body..ns::UserId"); +matcher.push("Envelope", null, "soap"); +matcher.push("Body", null, "soap"); +matcher.push("UserId", null, "ns"); +console.log(matcher.toString()); // "soap:Envelope.soap:Body.ns:UserId" +``` + +## 📖 Pattern Syntax + +### Basic Paths + +```javascript +"root.users.user" // Exact path match +"*.users.user" // Wildcard: any parent +"root.*.user" // Wildcard: any middle +"root.users.*" // Wildcard: any child +``` + +### Deep Wildcard + +```javascript +"..user" // user anywhere in tree +"root..user" // user anywhere under root +"..users..user" // users somewhere, then user below it +``` + +### Attribute Matching + +```javascript +"user[id]" // user with "id" attribute +"user[type=admin]" // user with type="admin" (current node only) +"root[lang]..user" // user under root that has "lang" attribute +``` + +### Position Selectors + +```javascript +"user:first" // First user (counter=0) +"user:nth(2)" // Third user (counter=2, zero-based) +"user:odd" // Odd-numbered users (counter=1,3,5...) +"user:even" // Even-numbered users (counter=0,2,4...) +"root.users.user:first" // First user under users +``` + +**Note:** Position selectors use the **counter** (occurrence count of the tag name), not the position (child index). For example, in ``, the second `` has position=2 but counter=1. + +### Namespaces + +```javascript +"ns::user" // user with namespace "ns" +"soap::Envelope" // Envelope with namespace "soap" +"ns::user[id]" // user with namespace "ns" and "id" attribute +"ns::user:first" // First user with namespace "ns" +"*::user" // user with any namespace +"..ns::item" // item with namespace "ns" anywhere in tree +"soap::Envelope.soap::Body" // Nested namespaced elements +"ns::first" // Tag named "first" with namespace "ns" (NO ambiguity!) +``` + +**Namespace syntax:** +- Use **double colon (::)** for namespace: `ns::tag` +- Use **single colon (:)** for position: `tag:first` +- Combined: `ns::tag:first` (namespace + tag + position) + +**Namespace matching rules:** +- Pattern `ns::user` matches only nodes with namespace "ns" and tag "user" +- Pattern `user` (no namespace) matches nodes with tag "user" regardless of namespace +- Pattern `*::user` matches tag "user" with any namespace (wildcard namespace) +- Namespaces are tracked separately for counter/position (e.g., `ns1::item` and `ns2::item` have independent counters) + +### Wildcard Differences + +**Single wildcard (`*`)** - Matches exactly ONE level: +- `"*.fix1"` matches `root.fix1` (2 levels) ✅ +- `"*.fix1"` does NOT match `root.another.fix1` (3 levels) ❌ +- Path depth MUST equal pattern depth + +**Deep wildcard (`..`)** - Matches ZERO or MORE levels: +- `"..fix1"` matches `root.fix1` ✅ +- `"..fix1"` matches `root.another.fix1` ✅ +- `"..fix1"` matches `a.b.c.d.fix1` ✅ +- Works at any depth + +### Combined Patterns + +```javascript +"..user[id]:first" // First user with id, anywhere +"root..user[type=admin]" // Admin user under root +"ns::user[id]:first" // First namespaced user with id +"soap::Envelope..ns::UserId" // UserId with namespace ns under SOAP envelope +``` + +## 🔧 API Reference + +### Expression + +#### Constructor + +```javascript +new Expression(pattern, options) +``` + +**Parameters:** +- `pattern` (string): Pattern to parse +- `options.separator` (string): Path separator (default: `'.'`) + +**Example:** +```javascript +const expr1 = new Expression("root.users.user"); +const expr2 = new Expression("root/users/user", { separator: '/' }); +``` + +#### Methods + +- `hasDeepWildcard()` → boolean +- `hasAttributeCondition()` → boolean +- `hasPositionSelector()` → boolean +- `toString()` → string + +### Matcher + +#### Constructor + +```javascript +new Matcher(options) +``` + +**Parameters:** +- `options.separator` (string): Default path separator (default: `'.'`) + +#### Path Tracking Methods + +##### `push(tagName, attrValues, namespace)` + +Add a tag to the current path. Position and counter are automatically calculated. + +**Parameters:** +- `tagName` (string): Tag name +- `attrValues` (object, optional): Attribute key-value pairs (current node only) +- `namespace` (string, optional): Namespace for the tag + +**Example:** +```javascript +matcher.push("user", { id: "123", type: "admin" }); +matcher.push("item"); // No attributes +matcher.push("Envelope", null, "soap"); // With namespace +matcher.push("Body", { version: "1.1" }, "soap"); // With both +``` + +**Position vs Counter:** +- **Position**: The child index in the parent (0, 1, 2, 3...) +- **Counter**: How many times this tag name appeared at this level (0, 1, 2...) + +Example: +```xml + + + + + +``` + +##### `pop()` + +Remove the last tag from the path. + +```javascript +matcher.pop(); +``` + +##### `updateCurrent(attrValues)` + +Update current node's attributes (useful when attributes are parsed after push). + +```javascript +matcher.push("user"); // Don't know values yet +// ... parse attributes ... +matcher.updateCurrent({ id: "123" }); +``` + +##### `reset()` + +Clear the entire path. + +```javascript +matcher.reset(); +``` + +#### Query Methods + +##### `matches(expression)` + +Check if current path matches an Expression. + +```javascript +const expr = new Expression("root.users.user"); +if (matcher.matches(expr)) { + // Current path matches +} +``` + +##### `getCurrentTag()` + +Get current tag name. + +```javascript +const tag = matcher.getCurrentTag(); // "user" +``` + +##### `getCurrentNamespace()` + +Get current namespace. + +```javascript +const ns = matcher.getCurrentNamespace(); // "soap" or undefined +``` + +##### `getAttrValue(attrName)` + +Get attribute value of current node. + +```javascript +const id = matcher.getAttrValue("id"); // "123" +``` + +##### `hasAttr(attrName)` + +Check if current node has an attribute. + +```javascript +if (matcher.hasAttr("id")) { + // Current node has "id" attribute +} +``` + +##### `getPosition()` + +Get sibling position of current node (child index in parent). + +```javascript +const position = matcher.getPosition(); // 0, 1, 2, ... +``` + +##### `getCounter()` + +Get repeat counter of current node (occurrence count of this tag name). + +```javascript +const counter = matcher.getCounter(); // 0, 1, 2, ... +``` + +##### `getIndex()` (deprecated) + +Alias for `getPosition()`. Use `getPosition()` or `getCounter()` instead for clarity. + +```javascript +const index = matcher.getIndex(); // Same as getPosition() +``` + +##### `getDepth()` + +Get current path depth. + +```javascript +const depth = matcher.getDepth(); // 3 for "root.users.user" +``` + +##### `toString(separator?, includeNamespace?)` + +Get path as string. + +**Parameters:** +- `separator` (string, optional): Path separator (uses default if not provided) +- `includeNamespace` (boolean, optional): Whether to include namespaces (default: true) + +```javascript +const path = matcher.toString(); // "root.ns:user.item" +const path2 = matcher.toString('/'); // "root/ns:user/item" +const path3 = matcher.toString('.', false); // "root.user.item" (no namespaces) +``` + +##### `toArray()` + +Get path as array. + +```javascript +const arr = matcher.toArray(); // ["root", "users", "user"] +``` + +#### State Management + +##### `snapshot()` + +Create a snapshot of current state. + +```javascript +const snapshot = matcher.snapshot(); +``` + +##### `restore(snapshot)` + +Restore from a snapshot. + +```javascript +matcher.restore(snapshot); +``` + +#### Read-Only Access + +##### `readOnly()` + +Returns a **live, read-only proxy** of the matcher. All query and inspection methods work normally, but any attempt to call a state-mutating method (`push`, `pop`, `reset`, `updateCurrent`, `restore`) or to write/delete a property throws a `TypeError`. + +This is the recommended way to share the matcher with external consumers — plugins, callbacks, event handlers — that only need to inspect the current path without being able to corrupt parser state. + +```javascript +const ro = matcher.readOnly(); +``` + +**What works on the read-only view:** + +```javascript +ro.matches(expr) // ✓ pattern matching +ro.getCurrentTag() // ✓ current tag name +ro.getCurrentNamespace() // ✓ current namespace +ro.getAttrValue("id") // ✓ attribute value +ro.hasAttr("id") // ✓ attribute presence check +ro.getPosition() // ✓ sibling position +ro.getCounter() // ✓ occurrence counter +ro.getDepth() // ✓ path depth +ro.toString() // ✓ path as string +ro.toArray() // ✓ path as array +ro.snapshot() // ✓ snapshot (can be used to restore the real matcher) +``` + +**What throws a `TypeError`:** + +```javascript +ro.push("child", {}) // ✗ TypeError: Cannot call 'push' on a read-only Matcher +ro.pop() // ✗ TypeError: Cannot call 'pop' on a read-only Matcher +ro.reset() // ✗ TypeError: Cannot call 'reset' on a read-only Matcher +ro.updateCurrent({}) // ✗ TypeError: Cannot call 'updateCurrent' on a read-only Matcher +ro.restore(snapshot) // ✗ TypeError: Cannot call 'restore' on a read-only Matcher +ro.separator = '/' // ✗ TypeError: Cannot set property on a read-only Matcher +``` + +**Important:** The read-only view is **live** — it always reflects the current state of the underlying matcher. If you need a frozen-in-time copy instead, use `snapshot()`. + +```javascript +const matcher = new Matcher(); +const ro = matcher.readOnly(); + +matcher.push("root"); +ro.getDepth(); // 1 — immediately reflects the push +matcher.push("users"); +ro.getDepth(); // 2 — still live +``` + +## 💡 Usage Examples + +### Example 1: XML Parser with stopNodes + +```javascript +import { XMLParser } from 'fast-xml-parser'; +import { Expression, Matcher } from 'path-expression-matcher'; + +class MyParser { + constructor() { + this.matcher = new Matcher(); + + // Pre-compile stop node patterns + this.stopNodeExpressions = [ + new Expression("html.body.script"), + new Expression("html.body.style"), + new Expression("..svg"), + ]; + } + + parseTag(tagName, attrs) { + this.matcher.push(tagName, attrs); + + // Check if this is a stop node + for (const expr of this.stopNodeExpressions) { + if (this.matcher.matches(expr)) { + // Don't parse children, read as raw text + return this.readRawContent(); + } + } + + // Continue normal parsing + this.parseChildren(); + + this.matcher.pop(); + } +} +``` + +### Example 2: Conditional Processing + +```javascript +const matcher = new Matcher(); +const userExpr = new Expression("..user[type=admin]"); +const firstItemExpr = new Expression("..item:first"); + +function processTag(tagName, value, attrs) { + matcher.push(tagName, attrs); + + if (matcher.matches(userExpr)) { + value = enhanceAdminUser(value); + } + + if (matcher.matches(firstItemExpr)) { + value = markAsFirst(value); + } + + matcher.pop(); + return value; +} +``` + +### Example 3: Path-based Filtering + +```javascript +const patterns = [ + new Expression("data.users.user"), + new Expression("data.posts.post"), + new Expression("..comment[approved=true]"), +]; + +function shouldInclude(matcher) { + return patterns.some(expr => matcher.matches(expr)); +} +``` + +### Example 4: Custom Separator + +```javascript +const matcher = new Matcher({ separator: '/' }); +const expr = new Expression("root/config/database", { separator: '/' }); + +matcher.push("root"); +matcher.push("config"); +matcher.push("database"); + +console.log(matcher.toString()); // "root/config/database" +console.log(matcher.matches(expr)); // true +``` + +### Example 5: Attribute Checking + +```javascript +const matcher = new Matcher(); +matcher.push("root"); +matcher.push("user", { id: "123", type: "admin", status: "active" }); + +// Check attribute existence (current node only) +console.log(matcher.hasAttr("id")); // true +console.log(matcher.hasAttr("email")); // false + +// Get attribute value (current node only) +console.log(matcher.getAttrValue("type")); // "admin" + +// Match by attribute +const expr1 = new Expression("user[id]"); +console.log(matcher.matches(expr1)); // true + +const expr2 = new Expression("user[type=admin]"); +console.log(matcher.matches(expr2)); // true +``` + +### Example 6: Position vs Counter + +```javascript +const matcher = new Matcher(); +matcher.push("root"); + +// Mixed tags at same level +matcher.push("item"); // position=0, counter=0 (first item) +matcher.pop(); + +matcher.push("div"); // position=1, counter=0 (first div) +matcher.pop(); + +matcher.push("item"); // position=2, counter=1 (second item) + +console.log(matcher.getPosition()); // 2 (third child overall) +console.log(matcher.getCounter()); // 1 (second "item" specifically) + +// :first uses counter, not position +const expr = new Expression("root.item:first"); +console.log(matcher.matches(expr)); // false (counter=1, not 0) +``` + +### Example 8: Passing a Read-Only Matcher to External Consumers + +When passing the matcher into callbacks, plugins, or other code you don't control, use `readOnly()` to prevent accidental state corruption. + +```javascript +import { Expression, Matcher } from 'path-expression-matcher'; + +const matcher = new Matcher(); + +const adminExpr = new Expression("..user[type=admin]"); + +function parseTag(tagName, attrs, onTag) { + matcher.push(tagName, attrs); + + // Pass a read-only view — consumer can inspect but not mutate + onTag(matcher.readOnly()); + + matcher.pop(); +} + +// Safe consumer — can only read +function myPlugin(ro) { + if (ro.matches(adminExpr)) { + console.log("Admin at path:", ro.toString()); + console.log("Depth:", ro.getDepth()); + console.log("ID:", ro.getAttrValue("id")); + } +} + +// ro.push(...) or ro.reset() here would throw TypeError, +// so the parser's state is always safe. +parseTag("user", { id: "1", type: "admin" }, myPlugin); +``` + +**Combining with `snapshot()`:** A snapshot taken via the read-only view can still be used to restore the real matcher. + +```javascript +const matcher = new Matcher(); +matcher.push("root"); +matcher.push("users"); + +const ro = matcher.readOnly(); +const snap = ro.snapshot(); // ✓ snapshot works on read-only view + +matcher.push("user"); // continue parsing... +matcher.restore(snap); // restore to "root.users" using the snapshot +``` + +```javascript +const matcher = new Matcher(); +const soapExpr = new Expression("soap::Envelope.soap::Body..ns::UserId"); + +// Parse SOAP document +matcher.push("Envelope", { xmlns: "..." }, "soap"); +matcher.push("Body", null, "soap"); +matcher.push("GetUserRequest", null, "ns"); +matcher.push("UserId", null, "ns"); + +// Match namespaced pattern +if (matcher.matches(soapExpr)) { + console.log("Found UserId in SOAP body"); + console.log(matcher.toString()); // "soap:Envelope.soap:Body.ns:GetUserRequest.ns:UserId" +} + +// Namespace-specific counters +matcher.reset(); +matcher.push("root"); +matcher.push("item", null, "ns1"); // ns1::item counter=0 +matcher.pop(); +matcher.push("item", null, "ns2"); // ns2::item counter=0 (different namespace) +matcher.pop(); +matcher.push("item", null, "ns1"); // ns1::item counter=1 + +const firstNs1Item = new Expression("root.ns1::item:first"); +console.log(matcher.matches(firstNs1Item)); // false (counter=1) + +const secondNs1Item = new Expression("root.ns1::item:nth(1)"); +console.log(matcher.matches(secondNs1Item)); // true + +// NO AMBIGUITY: Tags named after position keywords +matcher.reset(); +matcher.push("root"); +matcher.push("first", null, "ns"); // Tag named "first" with namespace + +const expr = new Expression("root.ns::first"); +console.log(matcher.matches(expr)); // true - matches namespace "ns", tag "first" +``` + +## 🏗️ Architecture + +### Data Storage Strategy + +**Ancestor nodes:** Store only tag name, position, and counter (minimal memory) +**Current node:** Store tag name, position, counter, and attribute values + +This design minimizes memory usage: +- No attribute names stored (derived from values object when needed) +- Attribute values only for current node, not ancestors +- Attribute checking for ancestors is not supported (acceptable trade-off) +- For 1M nodes with 3 attributes each, saves ~50MB vs storing attribute names + +### Matching Strategy + +Matching is performed **bottom-to-top** (from current node toward root): +1. Start at current node +2. Match segments from pattern end to start +3. Attribute checking only works for current node (ancestors have no attribute data) +4. Position selectors use **counter** (occurrence count), not position (child index) + +### Performance + +- **Expression parsing:** One-time cost when Expression is created +- **Expression analysis:** Cached (hasDeepWildcard, hasAttributeCondition, hasPositionSelector) +- **Path tracking:** O(1) for push/pop operations +- **Pattern matching:** O(n*m) where n = path depth, m = pattern segments +- **Memory per ancestor node:** ~40-60 bytes (tag, position, counter only) +- **Memory per current node:** ~80-120 bytes (adds attribute values) + +## 🎓 Design Patterns + +### Pre-compile Patterns (Recommended) + +```javascript +// ✅ GOOD: Parse once, reuse many times +const expr = new Expression("..user[id]"); + +for (let i = 0; i < 1000; i++) { + if (matcher.matches(expr)) { + // ... + } +} +``` + +```javascript +// ❌ BAD: Parse on every iteration +for (let i = 0; i < 1000; i++) { + if (matcher.matches(new Expression("..user[id]"))) { + // ... + } +} +``` + +### Batch Pattern Checking + +```javascript +// For multiple patterns, check all at once +const patterns = [ + new Expression("..user"), + new Expression("..post"), + new Expression("..comment"), +]; + +function matchesAny(matcher, patterns) { + return patterns.some(expr => matcher.matches(expr)); +} +``` + +## 🔗 Integration with fast-xml-parser + +**Basic integration:** + +```javascript +import { XMLParser } from 'fast-xml-parser'; +import { Expression, Matcher } from 'path-expression-matcher'; + +const parser = new XMLParser({ + // Custom options using path-expression-matcher + stopNodes: ["script", "style"].map(tag => new Expression(`..${tag}`)), + + tagValueProcessor: (tagName, value, jPath, hasAttrs, isLeaf, matcher) => { + // matcher is available in callbacks + if (matcher.matches(new Expression("..user[type=admin]"))) { + return enhanceValue(value); + } + return value; + } +}); +``` + +## 📄 License + +MIT + +## 🤝 Contributing + +Issues and PRs welcome! This package is designed to be used by XML/JSON parsers like fast-xml-parser. \ No newline at end of file diff --git a/bff/node_modules/path-expression-matcher/lib/pem.cjs b/bff/node_modules/path-expression-matcher/lib/pem.cjs new file mode 100644 index 0000000..3428c9a --- /dev/null +++ b/bff/node_modules/path-expression-matcher/lib/pem.cjs @@ -0,0 +1 @@ +(()=>{"use strict";var t={d:(e,s)=>{for(var n in s)t.o(s,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:s[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Expression:()=>s,Matcher:()=>i,default:()=>r});class s{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let s=0,n="";for(;s0&&(this.path[this.path.length-1].values=void 0);const n=this.path.length;this.siblingStacks[n]||(this.siblingStacks[n]=new Map);const i=this.siblingStacks[n],r=s?`${s}:${t}`:t,a=i.get(r)||0;let h=0;for(const t of i.values())h+=t;i.set(r,a+1);const o={tag:t,position:h,counter:a};null!=s&&(o.namespace=s),null!=e&&(o.values=e),this.path.push(o)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const s=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(s)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const n=t[s];if("deep-wildcard"===n.type){if(s--,s<0)return!0;const n=t[s];let i=!1;for(let t=e;t>=0;t--){const r=t===this.path.length-1;if(this._matchSegment(n,this.path[t],r)){e=t-1,s--,i=!0;break}}if(!i)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(n,this.path[e],t))return!1;e--,s--}}return s<0}_matchSegment(t,e,s){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!s)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const s=e.values[t.attrName];if(String(s)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!s)return!1;const n=e.counter??0;if("first"===t.position&&0!==n)return!1;if("odd"===t.position&&n%2!=1)return!1;if("even"===t.position&&n%2!=0)return!1;if("nth"===t.position&&n!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}readOnly(){return new Proxy(this,{get(t,e,s){if(n.has(e))return()=>{throw new TypeError(`Cannot call '${e}' on a read-only Matcher. Obtain a writable instance to mutate state.`)};const i=Reflect.get(t,e,s);return"path"===e||"siblingStacks"===e?Object.freeze(Array.isArray(i)?i.map(t=>t instanceof Map?Object.freeze(new Map(t)):Object.freeze({...t})):i):"function"==typeof i?i.bind(t):i},set(t,e){throw new TypeError(`Cannot set property '${String(e)}' on a read-only Matcher.`)},deleteProperty(t,e){throw new TypeError(`Cannot delete property '${String(e)}' from a read-only Matcher.`)}})}}const r={Expression:s,Matcher:i};module.exports=e})(); \ No newline at end of file diff --git a/bff/node_modules/path-expression-matcher/lib/pem.d.cts b/bff/node_modules/path-expression-matcher/lib/pem.d.cts new file mode 100644 index 0000000..e9ae2d5 --- /dev/null +++ b/bff/node_modules/path-expression-matcher/lib/pem.d.cts @@ -0,0 +1,523 @@ +/** + * TypeScript definitions for path-expression-matcher (CommonJS) + */ + +/** + * Options for creating an Expression + */ +declare interface ExpressionOptions { + /** + * Path separator character + * @default '.' + */ + separator?: string; +} + +/** + * Parsed segment from an expression pattern + */ +declare interface Segment { + /** + * Type of segment + */ + type: 'tag' | 'deep-wildcard'; + + /** + * Tag name (e.g., "user", "*" for wildcard) + * Only present when type is 'tag' + */ + tag?: string; + + /** + * Namespace prefix (e.g., "ns" in "ns::user") + * Only present when namespace is specified + */ + namespace?: string; + + /** + * Attribute name to match (e.g., "id" in "user[id]") + * Only present when attribute condition exists + */ + attrName?: string; + + /** + * Attribute value to match (e.g., "123" in "user[id=123]") + * Only present when attribute value is specified + */ + attrValue?: string; + + /** + * Position selector type + * Only present when position selector exists + */ + position?: 'first' | 'last' | 'odd' | 'even' | 'nth'; + + /** + * Numeric value for nth() selector + * Only present when position is 'nth' + */ + positionValue?: number; +} + +/** + * Expression - Parses and stores a tag pattern expression + * + * Patterns are parsed once and stored in an optimized structure for fast matching. + * + * @example + * ```javascript + * const { Expression } = require('path-expression-matcher'); + * const expr = new Expression("root.users.user"); + * const expr2 = new Expression("..user[id]:first"); + * const expr3 = new Expression("root/users/user", { separator: '/' }); + * ``` + * + * Pattern Syntax: + * - `root.users.user` - Match exact path + * - `..user` - Match "user" at any depth (deep wildcard) + * - `user[id]` - Match user tag with "id" attribute + * - `user[id=123]` - Match user tag where id="123" + * - `user:first` - Match first occurrence of user tag + * - `ns::user` - Match user tag with namespace "ns" + * - `ns::user[id]:first` - Combine namespace, attribute, and position + * ``` + */ +declare class Expression { + /** + * Original pattern string + */ + readonly pattern: string; + + /** + * Path separator character + */ + readonly separator: string; + + /** + * Parsed segments + */ + readonly segments: Segment[]; + + /** + * Create a new Expression + * @param pattern - Pattern string (e.g., "root.users.user", "..user[id]") + * @param options - Configuration options + */ + constructor(pattern: string, options?: ExpressionOptions); + + /** + * Get the number of segments + */ + get length(): number; + + /** + * Check if expression contains deep wildcard (..) + */ + hasDeepWildcard(): boolean; + + /** + * Check if expression has attribute conditions + */ + hasAttributeCondition(): boolean; + + /** + * Check if expression has position selectors + */ + hasPositionSelector(): boolean; + + /** + * Get string representation + */ + toString(): string; +} + +/** + * Options for creating a Matcher + */ +declare interface MatcherOptions { + /** + * Default path separator + * @default '.' + */ + separator?: string; +} + +/** + * Internal node structure in the path stack + */ +declare interface PathNode { + /** + * Tag name + */ + tag: string; + + /** + * Namespace (if present) + */ + namespace?: string; + + /** + * Position in sibling list (child index in parent) + */ + position: number; + + /** + * Counter (occurrence count of this tag name) + */ + counter: number; + + /** + * Attribute key-value pairs + * Only present for the current (last) node in path + */ + values?: Record; +} + +/** + * Snapshot of matcher state + */ +declare interface MatcherSnapshot { + /** + * Copy of the path stack + */ + path: PathNode[]; + + /** + * Copy of sibling tracking maps + */ + siblingStacks: Map[]; +} + +/** + * ReadOnlyMatcher - A safe, read-only view over a {@link Matcher} instance. + * + * Returned by {@link Matcher.readOnly}. Exposes all query and inspection + * methods but **throws a `TypeError`** if any state-mutating method is called + * (`push`, `pop`, `reset`, `updateCurrent`, `restore`). Direct property + * writes are also blocked. + * + * Pass this to consumers that only need to inspect or match the current path + * so they cannot accidentally corrupt the parser state. + * + * @example + * ```javascript + * const matcher = new Matcher(); + * matcher.push("root", {}); + * matcher.push("users", {}); + * matcher.push("user", { id: "123" }); + * + * const ro: ReadOnlyMatcher = matcher.readOnly(); + * + * ro.matches(expr); // ✓ works + * ro.getCurrentTag(); // ✓ "user" + * ro.getDepth(); // ✓ 3 + * ro.push("child", {}); // ✗ TypeError: Cannot call 'push' on a read-only Matcher + * ro.reset(); // ✗ TypeError: Cannot call 'reset' on a read-only Matcher + * ``` + */ +declare interface ReadOnlyMatcher { + /** + * Default path separator (read-only) + */ + readonly separator: string; + + /** + * Current path stack (each node is a frozen copy) + */ + readonly path: ReadonlyArray>; + + // ── Query methods ─────────────────────────────────────────────────────────── + + /** + * Get current tag name + * @returns Current tag name or undefined if path is empty + */ + getCurrentTag(): string | undefined; + + /** + * Get current namespace + * @returns Current namespace or undefined if not present or path is empty + */ + getCurrentNamespace(): string | undefined; + + /** + * Get current node's attribute value + * @param attrName - Attribute name + * @returns Attribute value or undefined + */ + getAttrValue(attrName: string): any; + + /** + * Check if current node has an attribute + * @param attrName - Attribute name + */ + hasAttr(attrName: string): boolean; + + /** + * Get current node's sibling position (child index in parent) + * @returns Position index or -1 if path is empty + */ + getPosition(): number; + + /** + * Get current node's repeat counter (occurrence count of this tag name) + * @returns Counter value or -1 if path is empty + */ + getCounter(): number; + + /** + * Get current node's sibling index (alias for getPosition for backward compatibility) + * @returns Index or -1 if path is empty + * @deprecated Use getPosition() or getCounter() instead + */ + getIndex(): number; + + /** + * Get current path depth + * @returns Number of nodes in the path + */ + getDepth(): number; + + /** + * Get path as string + * @param separator - Optional separator (uses default if not provided) + * @param includeNamespace - Whether to include namespace in output + * @returns Path string (e.g., "root.users.user" or "ns:root.ns:users.user") + */ + toString(separator?: string, includeNamespace?: boolean): string; + + /** + * Get path as array of tag names + * @returns Array of tag names + */ + toArray(): string[]; + + /** + * Match current path against an Expression + * @param expression - The expression to match against + * @returns True if current path matches the expression + */ + matches(expression: Expression): boolean; + + /** + * Create a snapshot of current state + * @returns State snapshot that can be restored later + */ + snapshot(): MatcherSnapshot; + + // ── Blocked mutating methods ──────────────────────────────────────────────── + // These are present in the type so callers get a compile-time error with a + // helpful message instead of a silent "property does not exist" error. + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + push(tagName: string, attrValues?: Record | null, namespace?: string | null): never; + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + pop(): never; + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + updateCurrent(attrValues: Record): never; + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + reset(): never; + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + restore(snapshot: MatcherSnapshot): never; +} + +/** + * Matcher - Tracks current path in XML/JSON tree and matches against Expressions + * + * The matcher maintains a stack of nodes representing the current path from root to + * current tag. It only stores attribute values for the current (top) node to minimize + * memory usage. + * + * @example + * ```javascript + * const { Matcher } = require('path-expression-matcher'); + * const matcher = new Matcher(); + * matcher.push("root", {}); + * matcher.push("users", {}); + * matcher.push("user", { id: "123", type: "admin" }); + * + * const expr = new Expression("root.users.user"); + * matcher.matches(expr); // true + * + * matcher.pop(); + * matcher.matches(expr); // false + * ``` + */ +declare class Matcher { + /** + * Default path separator + */ + readonly separator: string; + + /** + * Current path stack + */ + readonly path: PathNode[]; + + /** + * Create a new Matcher + * @param options - Configuration options + */ + constructor(options?: MatcherOptions); + + /** + * Push a new tag onto the path + * @param tagName - Name of the tag + * @param attrValues - Attribute key-value pairs for current node (optional) + * @param namespace - Namespace for the tag (optional) + * + * @example + * ```javascript + * matcher.push("user", { id: "123", type: "admin" }); + * matcher.push("user", { id: "456" }, "ns"); + * matcher.push("container", null); + * ``` + */ + push(tagName: string, attrValues?: Record | null, namespace?: string | null): void; + + /** + * Pop the last tag from the path + * @returns The popped node or undefined if path is empty + */ + pop(): PathNode | undefined; + + /** + * Update current node's attribute values + * Useful when attributes are parsed after push + * @param attrValues - Attribute values + */ + updateCurrent(attrValues: Record): void; + + /** + * Get current tag name + * @returns Current tag name or undefined if path is empty + */ + getCurrentTag(): string | undefined; + + /** + * Get current namespace + * @returns Current namespace or undefined if not present or path is empty + */ + getCurrentNamespace(): string | undefined; + + /** + * Get current node's attribute value + * @param attrName - Attribute name + * @returns Attribute value or undefined + */ + getAttrValue(attrName: string): any; + + /** + * Check if current node has an attribute + * @param attrName - Attribute name + */ + hasAttr(attrName: string): boolean; + + /** + * Get current node's sibling position (child index in parent) + * @returns Position index or -1 if path is empty + */ + getPosition(): number; + + /** + * Get current node's repeat counter (occurrence count of this tag name) + * @returns Counter value or -1 if path is empty + */ + getCounter(): number; + + /** + * Get current node's sibling index (alias for getPosition for backward compatibility) + * @returns Index or -1 if path is empty + * @deprecated Use getPosition() or getCounter() instead + */ + getIndex(): number; + + /** + * Get current path depth + * @returns Number of nodes in the path + */ + getDepth(): number; + + /** + * Get path as string + * @param separator - Optional separator (uses default if not provided) + * @param includeNamespace - Whether to include namespace in output + * @returns Path string (e.g., "root.users.user" or "ns:root.ns:users.user") + */ + toString(separator?: string, includeNamespace?: boolean): string; + + /** + * Get path as array of tag names + * @returns Array of tag names + */ + toArray(): string[]; + + /** + * Reset the path to empty + */ + reset(): void; + + /** + * Match current path against an Expression + * @param expression - The expression to match against + * @returns True if current path matches the expression + * + * @example + * ```javascript + * const expr = new Expression("root.users.user[id]"); + * const matcher = new Matcher(); + * + * matcher.push("root"); + * matcher.push("users"); + * matcher.push("user", { id: "123" }); + * + * matcher.matches(expr); // true + * ``` + */ + matches(expression: Expression): boolean; + + /** + * Create a snapshot of current state + * @returns State snapshot that can be restored later + */ + snapshot(): MatcherSnapshot; + + /** + * Restore state from snapshot + * @param snapshot - State snapshot from previous snapshot() call + */ + restore(snapshot: MatcherSnapshot): void; + + /** + * Return a read-only view of this matcher. + */ + readOnly(): ReadOnlyMatcher; +} + +declare namespace pathExpressionMatcher { + export { + Expression, + Matcher, + ExpressionOptions, + MatcherOptions, + Segment, + PathNode, + MatcherSnapshot, + }; +} + +export = pathExpressionMatcher; diff --git a/bff/node_modules/path-expression-matcher/lib/pem.min.js b/bff/node_modules/path-expression-matcher/lib/pem.min.js new file mode 100644 index 0000000..f0d1c7a --- /dev/null +++ b/bff/node_modules/path-expression-matcher/lib/pem.min.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.pem=e():t.pem=e()}(this,()=>(()=>{"use strict";var t={d:(e,s)=>{for(var n in s)t.o(s,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:s[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{Expression:()=>s,Matcher:()=>i,default:()=>r});class s{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let s=0,n="";for(;s0&&(this.path[this.path.length-1].values=void 0);const n=this.path.length;this.siblingStacks[n]||(this.siblingStacks[n]=new Map);const i=this.siblingStacks[n],r=s?`${s}:${t}`:t,a=i.get(r)||0;let h=0;for(const t of i.values())h+=t;i.set(r,a+1);const o={tag:t,position:h,counter:a};null!=s&&(o.namespace=s),null!=e&&(o.values=e),this.path.push(o)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const s=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(s)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const n=t[s];if("deep-wildcard"===n.type){if(s--,s<0)return!0;const n=t[s];let i=!1;for(let t=e;t>=0;t--){const r=t===this.path.length-1;if(this._matchSegment(n,this.path[t],r)){e=t-1,s--,i=!0;break}}if(!i)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(n,this.path[e],t))return!1;e--,s--}}return s<0}_matchSegment(t,e,s){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!s)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const s=e.values[t.attrName];if(String(s)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!s)return!1;const n=e.counter??0;if("first"===t.position&&0!==n)return!1;if("odd"===t.position&&n%2!=1)return!1;if("even"===t.position&&n%2!=0)return!1;if("nth"===t.position&&n!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}readOnly(){return new Proxy(this,{get(t,e,s){if(n.has(e))return()=>{throw new TypeError(`Cannot call '${e}' on a read-only Matcher. Obtain a writable instance to mutate state.`)};const i=Reflect.get(t,e,s);return"path"===e||"siblingStacks"===e?Object.freeze(Array.isArray(i)?i.map(t=>t instanceof Map?Object.freeze(new Map(t)):Object.freeze({...t})):i):"function"==typeof i?i.bind(t):i},set(t,e){throw new TypeError(`Cannot set property '${String(e)}' on a read-only Matcher.`)},deleteProperty(t,e){throw new TypeError(`Cannot delete property '${String(e)}' from a read-only Matcher.`)}})}}const r={Expression:s,Matcher:i};return e})()); +//# sourceMappingURL=pem.min.js.map \ No newline at end of file diff --git a/bff/node_modules/path-expression-matcher/lib/pem.min.js.map b/bff/node_modules/path-expression-matcher/lib/pem.min.js.map new file mode 100644 index 0000000..169ed5e --- /dev/null +++ b/bff/node_modules/path-expression-matcher/lib/pem.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"./lib/pem.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAa,IAAID,IAEjBD,EAAU,IAAIC,GACf,CATD,CASGK,KAAM,I,mBCRT,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFT,EAAyBL,IACH,oBAAXkB,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeV,EAASkB,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeV,EAAS,aAAc,CAAEoB,OAAO,M,kECKxC,MAAMC,EAOnBC,WAAAA,CAAYC,EAASC,EAAU,CAAC,GAC9BpB,KAAKmB,QAAUA,EACfnB,KAAKqB,UAAYD,EAAQC,WAAa,IACtCrB,KAAKsB,SAAWtB,KAAKuB,OAAOJ,GAG5BnB,KAAKwB,iBAAmBxB,KAAKsB,SAASG,KAAKC,GAAoB,kBAAbA,EAAIC,MACtD3B,KAAK4B,uBAAyB5B,KAAKsB,SAASG,KAAKC,QAAwBG,IAAjBH,EAAII,UAC5D9B,KAAK+B,qBAAuB/B,KAAKsB,SAASG,KAAKC,QAAwBG,IAAjBH,EAAIM,SAC5D,CAQAT,MAAAA,CAAOJ,GACL,MAAMG,EAAW,GAGjB,IAAIW,EAAI,EACJC,EAAc,GAElB,KAAOD,EAAId,EAAQgB,QACbhB,EAAQc,KAAOjC,KAAKqB,UAElBY,EAAI,EAAId,EAAQgB,QAAUhB,EAAQc,EAAI,KAAOjC,KAAKqB,WAEhDa,EAAYE,SACdd,EAASe,KAAKrC,KAAKsC,cAAcJ,EAAYE,SAC7CF,EAAc,IAGhBZ,EAASe,KAAK,CAAEV,KAAM,kBACtBM,GAAK,IAGDC,EAAYE,QACdd,EAASe,KAAKrC,KAAKsC,cAAcJ,EAAYE,SAE/CF,EAAc,GACdD,MAGFC,GAAef,EAAQc,GACvBA,KASJ,OAJIC,EAAYE,QACdd,EAASe,KAAKrC,KAAKsC,cAAcJ,EAAYE,SAGxCd,CACT,CAQAgB,aAAAA,CAAcC,GACZ,MAAMC,EAAU,CAAEb,KAAM,OAwBxB,IAAIc,EAAiB,KACjBC,EAAkBH,EAEtB,MAAMI,EAAeJ,EAAKK,MAAM,8BAChC,GAAID,IACFD,EAAkBC,EAAa,GAAKA,EAAa,GAC7CA,EAAa,IAAI,CACnB,MAAME,EAAUF,EAAa,GAAGG,MAAM,GAAI,GACtCD,IACFJ,EAAiBI,EAErB,CAIF,IAAIE,EAcAC,EAbAC,EAAiBP,EAErB,GAAIA,EAAgBQ,SAAS,MAAO,CAClC,MAAMC,EAAUT,EAAgBU,QAAQ,MAIxC,GAHAL,EAAYL,EAAgBW,UAAU,EAAGF,GAASf,OAClDa,EAAiBP,EAAgBW,UAAUF,EAAU,GAAGf,QAEnDW,EACH,MAAM,IAAIO,MAAM,iCAAiCf,IAErD,CAIA,IAAIgB,EAAgB,KAEpB,GAAIN,EAAeC,SAAS,KAAM,CAChC,MAAMM,EAAaP,EAAeQ,YAAY,KACxCC,EAAUT,EAAeI,UAAU,EAAGG,GAAYpB,OAClDuB,EAAUV,EAAeI,UAAUG,EAAa,GAAGpB,OAG/B,CAAC,QAAS,OAAQ,MAAO,QAAQc,SAASS,IAClE,eAAeC,KAAKD,IAGpBX,EAAMU,EACNH,EAAgBI,GAGhBX,EAAMC,CAEV,MACED,EAAMC,EAGR,IAAKD,EACH,MAAM,IAAIM,MAAM,4BAA4Bf,KAS9C,GANAC,EAAQQ,IAAMA,EACVD,IACFP,EAAQO,UAAYA,GAIlBN,EACF,GAAIA,EAAeS,SAAS,KAAM,CAChC,MAAMW,EAAUpB,EAAeW,QAAQ,KACvCZ,EAAQV,SAAWW,EAAeY,UAAU,EAAGQ,GAASzB,OACxDI,EAAQsB,UAAYrB,EAAeY,UAAUQ,EAAU,GAAGzB,MAC5D,MACEI,EAAQV,SAAWW,EAAeL,OAKtC,GAAImB,EAAe,CACjB,MAAMQ,EAAWR,EAAcX,MAAM,kBACjCmB,GACFvB,EAAQR,SAAW,MACnBQ,EAAQwB,cAAgBC,SAASF,EAAS,GAAI,KAE9CvB,EAAQR,SAAWuB,CAEvB,CAEA,OAAOf,CACT,CAMA,UAAIL,GACF,OAAOnC,KAAKsB,SAASa,MACvB,CAMA+B,eAAAA,GACE,OAAOlE,KAAKwB,gBACd,CAMA2C,qBAAAA,GACE,OAAOnE,KAAK4B,sBACd,CAMAwC,mBAAAA,GACE,OAAOpE,KAAK+B,oBACd,CAMAsC,QAAAA,GACE,OAAOrE,KAAKmB,OACd,EChNF,MAAMmD,EAAmB,IAAIC,IAAI,CAAC,OAAQ,MAAO,QAAS,gBAAiB,YAE5D,MAAMC,EAMnBtD,WAAAA,CAAYE,EAAU,CAAC,GACrBpB,KAAKqB,UAAYD,EAAQC,WAAa,IACtCrB,KAAKyE,KAAO,GACZzE,KAAK0E,cAAgB,EAIvB,CAQArC,IAAAA,CAAKsC,EAASC,EAAa,KAAM7B,EAAY,MAEvC/C,KAAKyE,KAAKtC,OAAS,IACRnC,KAAKyE,KAAKzE,KAAKyE,KAAKtC,OAAS,GACrC0C,YAAShD,GAIhB,MAAMiD,EAAe9E,KAAKyE,KAAKtC,OAC1BnC,KAAK0E,cAAcI,KACtB9E,KAAK0E,cAAcI,GAAgB,IAAIC,KAGzC,MAAMC,EAAWhF,KAAK0E,cAAcI,GAG9BG,EAAalC,EAAY,GAAGA,KAAa4B,IAAYA,EAGrDO,EAAUF,EAASxE,IAAIyE,IAAe,EAG5C,IAAIjD,EAAW,EACf,IAAK,MAAMmD,KAASH,EAASH,SAC3B7C,GAAYmD,EAIdH,EAASI,IAAIH,EAAYC,EAAU,GAGnC,MAAMG,EAAO,CACXrC,IAAK2B,EACL3C,SAAUA,EACVkD,QAASA,GAIPnC,UACFsC,EAAKtC,UAAYA,GAIf6B,UACFS,EAAKR,OAASD,GAGhB5E,KAAKyE,KAAKpC,KAAKgD,EACjB,CAMAC,GAAAA,GACE,GAAyB,IAArBtF,KAAKyE,KAAKtC,OACZ,OAGF,MAAMkD,EAAOrF,KAAKyE,KAAKa,MASvB,OAJItF,KAAK0E,cAAcvC,OAASnC,KAAKyE,KAAKtC,OAAS,IACjDnC,KAAK0E,cAAcvC,OAASnC,KAAKyE,KAAKtC,OAAS,GAG1CkD,CACT,CAOAE,aAAAA,CAAcX,GACZ,GAAI5E,KAAKyE,KAAKtC,OAAS,EAAG,CACxB,MAAMqD,EAAUxF,KAAKyE,KAAKzE,KAAKyE,KAAKtC,OAAS,GACzCyC,UACFY,EAAQX,OAASD,EAErB,CACF,CAMAa,aAAAA,GACE,OAAOzF,KAAKyE,KAAKtC,OAAS,EAAInC,KAAKyE,KAAKzE,KAAKyE,KAAKtC,OAAS,GAAGa,SAAMnB,CACtE,CAMA6D,mBAAAA,GACE,OAAO1F,KAAKyE,KAAKtC,OAAS,EAAInC,KAAKyE,KAAKzE,KAAKyE,KAAKtC,OAAS,GAAGY,eAAYlB,CAC5E,CAOA8D,YAAAA,CAAa7D,GACX,GAAyB,IAArB9B,KAAKyE,KAAKtC,OAAc,OAC5B,MAAMqD,EAAUxF,KAAKyE,KAAKzE,KAAKyE,KAAKtC,OAAS,GAC7C,OAAOqD,EAAQX,SAAS/C,EAC1B,CAOA8D,OAAAA,CAAQ9D,GACN,GAAyB,IAArB9B,KAAKyE,KAAKtC,OAAc,OAAO,EACnC,MAAMqD,EAAUxF,KAAKyE,KAAKzE,KAAKyE,KAAKtC,OAAS,GAC7C,YAA0BN,IAAnB2D,EAAQX,QAAwB/C,KAAY0D,EAAQX,MAC7D,CAMAgB,WAAAA,GACE,OAAyB,IAArB7F,KAAKyE,KAAKtC,QAAsB,EAC7BnC,KAAKyE,KAAKzE,KAAKyE,KAAKtC,OAAS,GAAGH,UAAY,CACrD,CAMA8D,UAAAA,GACE,OAAyB,IAArB9F,KAAKyE,KAAKtC,QAAsB,EAC7BnC,KAAKyE,KAAKzE,KAAKyE,KAAKtC,OAAS,GAAG+C,SAAW,CACpD,CAOAa,QAAAA,GACE,OAAO/F,KAAK6F,aACd,CAMAG,QAAAA,GACE,OAAOhG,KAAKyE,KAAKtC,MACnB,CAQAkC,QAAAA,CAAShD,EAAW4E,GAAmB,GACrC,MAAMC,EAAM7E,GAAarB,KAAKqB,UAC9B,OAAOrB,KAAKyE,KAAK0B,IAAIC,GACfH,GAAoBG,EAAErD,UACjB,GAAGqD,EAAErD,aAAaqD,EAAEpD,MAEtBoD,EAAEpD,KACRqD,KAAKH,EACV,CAMAI,OAAAA,GACE,OAAOtG,KAAKyE,KAAK0B,IAAIC,GAAKA,EAAEpD,IAC9B,CAKAuD,KAAAA,GACEvG,KAAKyE,KAAO,GACZzE,KAAK0E,cAAgB,EACvB,CAOA8B,OAAAA,CAAQC,GACN,MAAMnF,EAAWmF,EAAWnF,SAE5B,OAAwB,IAApBA,EAASa,SAKTsE,EAAWvC,kBACNlE,KAAK0G,uBAAuBpF,GAI9BtB,KAAK2G,aAAarF,GAC3B,CAMAqF,YAAAA,CAAarF,GAEX,GAAItB,KAAKyE,KAAKtC,SAAWb,EAASa,OAChC,OAAO,EAIT,IAAK,IAAIF,EAAI,EAAGA,EAAIX,EAASa,OAAQF,IAAK,CACxC,MAAMO,EAAUlB,EAASW,GACnBoD,EAAOrF,KAAKyE,KAAKxC,GACjB2E,EAAiB3E,IAAMjC,KAAKyE,KAAKtC,OAAS,EAEhD,IAAKnC,KAAK6G,cAAcrE,EAAS6C,EAAMuB,GACrC,OAAO,CAEX,CAEA,OAAO,CACT,CAMAF,sBAAAA,CAAuBpF,GACrB,IAAIwF,EAAU9G,KAAKyE,KAAKtC,OAAS,EAC7B4E,EAASzF,EAASa,OAAS,EAE/B,KAAO4E,GAAU,GAAKD,GAAW,GAAG,CAClC,MAAMtE,EAAUlB,EAASyF,GAEzB,GAAqB,kBAAjBvE,EAAQb,KAA0B,CAIpC,GAFAoF,IAEIA,EAAS,EAEX,OAAO,EAIT,MAAMC,EAAU1F,EAASyF,GACzB,IAAIE,GAAQ,EAEZ,IAAK,IAAIhF,EAAI6E,EAAS7E,GAAK,EAAGA,IAAK,CACjC,MAAM2E,EAAiB3E,IAAMjC,KAAKyE,KAAKtC,OAAS,EAChD,GAAInC,KAAK6G,cAAcG,EAAShH,KAAKyE,KAAKxC,GAAI2E,GAAgB,CAC5DE,EAAU7E,EAAI,EACd8E,IACAE,GAAQ,EACR,KACF,CACF,CAEA,IAAKA,EACH,OAAO,CAEX,KAAO,CAEL,MAAML,EAAiBE,IAAY9G,KAAKyE,KAAKtC,OAAS,EACtD,IAAKnC,KAAK6G,cAAcrE,EAASxC,KAAKyE,KAAKqC,GAAUF,GACnD,OAAO,EAETE,IACAC,GACF,CACF,CAGA,OAAOA,EAAS,CAClB,CAUAF,aAAAA,CAAcrE,EAAS6C,EAAMuB,GAE3B,GAAoB,MAAhBpE,EAAQQ,KAAeR,EAAQQ,MAAQqC,EAAKrC,IAC9C,OAAO,EAIT,QAA0BnB,IAAtBW,EAAQO,WAEgB,MAAtBP,EAAQO,WAAqBP,EAAQO,YAAcsC,EAAKtC,UAC1D,OAAO,EAOX,QAAyBlB,IAArBW,EAAQV,SAAwB,CAClC,IAAK8E,EAEH,OAAO,EAGT,IAAKvB,EAAKR,UAAYrC,EAAQV,YAAYuD,EAAKR,QAC7C,OAAO,EAIT,QAA0BhD,IAAtBW,EAAQsB,UAAyB,CACnC,MAAMoD,EAAc7B,EAAKR,OAAOrC,EAAQV,UAExC,GAAIqF,OAAOD,KAAiBC,OAAO3E,EAAQsB,WACzC,OAAO,CAEX,CACF,CAGA,QAAyBjC,IAArBW,EAAQR,SAAwB,CAClC,IAAK4E,EAEH,OAAO,EAGT,MAAM1B,EAAUG,EAAKH,SAAW,EAEhC,GAAyB,UAArB1C,EAAQR,UAAoC,IAAZkD,EAClC,OAAO,EACF,GAAyB,QAArB1C,EAAQR,UAAsBkD,EAAU,GAAM,EACvD,OAAO,EACF,GAAyB,SAArB1C,EAAQR,UAAuBkD,EAAU,GAAM,EACxD,OAAO,EACF,GAAyB,QAArB1C,EAAQR,UACbkD,IAAY1C,EAAQwB,cACtB,OAAO,CAGb,CAEA,OAAO,CACT,CAMAoD,QAAAA,GACE,MAAO,CACL3C,KAAMzE,KAAKyE,KAAK0B,IAAId,IAAQ,IAAMA,KAClCX,cAAe1E,KAAK0E,cAAcyB,IAAIA,GAAO,IAAIpB,IAAIoB,IAEzD,CAMAkB,OAAAA,CAAQD,GACNpH,KAAKyE,KAAO2C,EAAS3C,KAAK0B,IAAId,IAAQ,IAAMA,KAC5CrF,KAAK0E,cAAgB0C,EAAS1C,cAAcyB,IAAIA,GAAO,IAAIpB,IAAIoB,GACjE,CAuBAmB,QAAAA,GAGE,OAAO,IAAIC,MAFEvH,KAEU,CACrBQ,GAAAA,CAAIgH,EAAQ9G,EAAM+G,GAEhB,GAAInD,EAAiBoD,IAAIhH,GACvB,MAAO,KACL,MAAM,IAAIiH,UACR,gBAAgBjH,2EAMtB,MAAMM,EAAQ4G,QAAQpH,IAAIgH,EAAQ9G,EAAM+G,GAIxC,MAAa,SAAT/G,GAA4B,kBAATA,EACdL,OAAOwH,OACZC,MAAMC,QAAQ/G,GACVA,EAAMmF,IAAI6B,GACVA,aAAgBjD,IACZ1E,OAAOwH,OAAO,IAAI9C,IAAIiD,IACtB3H,OAAOwH,OAAO,IAAKG,KAEvBhH,GAKa,mBAAVA,EACFA,EAAMiH,KAAKT,GAGbxG,CACT,EAGAoE,GAAAA,CAAI8C,EAASxH,GACX,MAAM,IAAIiH,UACR,wBAAwBR,OAAOzG,8BAEnC,EAGAyH,cAAAA,CAAeD,EAASxH,GACtB,MAAM,IAAIiH,UACR,2BAA2BR,OAAOzG,gCAEtC,GAEJ,ECrdF,SAAiBO,WAAU,EAAEuD,QAAOA,G","sources":["webpack://pem/webpack/universalModuleDefinition","webpack://pem/webpack/bootstrap","webpack://pem/webpack/runtime/define property getters","webpack://pem/webpack/runtime/hasOwnProperty shorthand","webpack://pem/webpack/runtime/make namespace object","webpack://pem/./src/Expression.js","webpack://pem/./src/Matcher.js","webpack://pem/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pem\"] = factory();\n\telse\n\t\troot[\"pem\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\n\n/**\n * Names of methods that mutate Matcher state.\n * Any attempt to call these on a read-only view throws a TypeError.\n * @type {Set}\n */\nconst MUTATING_METHODS = new Set(['push', 'pop', 'reset', 'updateCurrent', 'restore']);\n\nexport default class Matcher {\n /**\n * Create a new Matcher\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Default path separator (default: '.')\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag: string, values: object, position: number, counter: number }\n // values only present for current (last) node\n // Each siblingStacks entry: Map tracking occurrences at each level\n }\n\n /**\n * Push a new tag onto the path\n * @param {string} tagName - Name of the tag\n * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n * @param {string} namespace - Namespace for the tag (optional)\n */\n push(tagName, attrValues = null, namespace = null) {\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n const prev = this.path[this.path.length - 1];\n prev.values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n // Store namespace if provided\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n // Store values only for current node\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n }\n\n /**\n * Pop the last tag from the path\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) {\n return undefined;\n }\n\n const node = this.path.pop();\n\n // Clean up sibling tracking for levels deeper than current\n // After pop, path.length is the new depth\n // We need to clean up siblingStacks[path.length + 1] and beyond\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values\n * Useful when attributes are parsed after push\n * @param {Object} attrValues - Attribute values\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value\n * @param {string} attrName - Attribute name\n * @returns {*} Attribute value or undefined\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n const current = this.path[this.path.length - 1];\n return current.values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute\n * @param {string} attrName - Attribute name\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent)\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name)\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition for backward compatibility)\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string\n * @param {string} separator - Optional separator (uses default if not provided)\n * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n return this.path.map(n => {\n if (includeNamespace && n.namespace) {\n return `${n.namespace}:${n.tag}`;\n }\n return n.tag;\n }).join(sep);\n }\n\n /**\n * Get path as array of tag names\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty\n */\n reset() {\n this.path = [];\n this.siblingStacks = [];\n }\n\n /**\n * Match current path against an Expression\n * @param {Expression} expression - The expression to match against\n * @returns {boolean} True if current path matches the expression\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n // Handle deep wildcard patterns\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n // Simple path matching (no deep wildcards)\n return this._matchSimple(segments);\n }\n\n /**\n * Match simple path (no deep wildcards)\n * @private\n */\n _matchSimple(segments) {\n // Path must be same length as segments\n if (this.path.length !== segments.length) {\n return false;\n }\n\n // Match each segment bottom-to-top\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const node = this.path[i];\n const isCurrentNode = (i === this.path.length - 1);\n\n if (!this._matchSegment(segment, node, isCurrentNode)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match path with deep wildcards\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1; // Start from current node (bottom)\n let segIdx = segments.length - 1; // Start from last segment\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n // \"..\" matches zero or more levels\n segIdx--;\n\n if (segIdx < 0) {\n // Pattern ends with \"..\", always matches\n return true;\n }\n\n // Find where next segment matches in the path\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n const isCurrentNode = (i === this.path.length - 1);\n if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n // Regular segment\n const isCurrentNode = (pathIdx === this.path.length - 1);\n if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n // All segments must be consumed\n return segIdx < 0;\n }\n\n /**\n * Match a single segment against a node\n * @private\n * @param {Object} segment - Segment from Expression\n * @param {Object} node - Node from path\n * @param {boolean} isCurrentNode - Whether this is the current (last) node\n * @returns {boolean}\n */\n _matchSegment(segment, node, isCurrentNode) {\n // Match tag name (* is wildcard)\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n // Match namespace if specified in segment\n if (segment.namespace !== undefined) {\n // Segment has namespace - node must match it\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n // If segment has no namespace, it matches nodes with or without namespace\n\n // Match attribute name (check if node has this attribute)\n // Can only check for current node since ancestors don't have values\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n // Can't check attributes for ancestor nodes (values not stored)\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n // Match attribute value (only possible for current node)\n if (segment.attrValue !== undefined) {\n const actualValue = node.values[segment.attrName];\n // Both should be strings\n if (String(actualValue) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n // Match position (only for current node)\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n // Can't check position for ancestor nodes\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth') {\n if (counter !== segment.positionValue) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Create a snapshot of current state\n * @returns {Object} State snapshot\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map))\n };\n }\n\n /**\n * Restore state from snapshot\n * @param {Object} snapshot - State snapshot\n */\n restore(snapshot) {\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n }\n\n /**\n * Return a read-only view of this matcher.\n *\n * The returned object exposes all query/inspection methods but throws a\n * TypeError if any state-mutating method is called (`push`, `pop`, `reset`,\n * `updateCurrent`, `restore`). Property reads (e.g. `.path`, `.separator`)\n * are allowed but the returned arrays/objects are frozen so callers cannot\n * mutate internal state through them either.\n *\n * @returns {ReadOnlyMatcher} A proxy that forwards read operations and blocks writes.\n *\n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n *\n * const ro = matcher.readOnly();\n * ro.matches(expr); // ✓ works\n * ro.getCurrentTag(); // ✓ works\n * ro.push(\"child\", {}); // ✗ throws TypeError\n * ro.reset(); // ✗ throws TypeError\n */\n readOnly() {\n const self = this;\n\n return new Proxy(self, {\n get(target, prop, receiver) {\n // Block mutating methods\n if (MUTATING_METHODS.has(prop)) {\n return () => {\n throw new TypeError(\n `Cannot call '${prop}' on a read-only Matcher. ` +\n `Obtain a writable instance to mutate state.`\n );\n };\n }\n\n const value = Reflect.get(target, prop, receiver);\n\n // Freeze array/object properties so callers can't mutate internal\n // state through direct property access (e.g. matcher.path.push(...))\n if (prop === 'path' || prop === 'siblingStacks') {\n return Object.freeze(\n Array.isArray(value)\n ? value.map(item =>\n item instanceof Map\n ? Object.freeze(new Map(item)) // freeze a copy of each Map\n : Object.freeze({ ...item }) // freeze a copy of each node\n )\n : value\n );\n }\n\n // Bind methods so `this` inside them still refers to the real Matcher\n if (typeof value === 'function') {\n return value.bind(target);\n }\n\n return value;\n },\n\n // Prevent any property assignment on the read-only view\n set(_target, prop) {\n throw new TypeError(\n `Cannot set property '${String(prop)}' on a read-only Matcher.`\n );\n },\n\n // Prevent property deletion\n deleteProperty(_target, prop) {\n throw new TypeError(\n `Cannot delete property '${String(prop)}' from a read-only Matcher.`\n );\n }\n });\n }\n}","/**\n * fast-xml-tagger - XML/JSON path matching library\n * \n * Provides efficient path tracking and pattern matching for XML/JSON parsers.\n * \n * @example\n * import { Expression, Matcher } from 'fast-xml-tagger';\n * \n * // Create expression (parse once)\n * const expr = new Expression(\"root.users.user[id]\");\n * \n * // Create matcher (track path)\n * const matcher = new Matcher();\n * matcher.push(\"root\", [], {}, 0);\n * matcher.push(\"users\", [], {}, 0);\n * matcher.push(\"user\", [\"id\", \"type\"], { id: \"123\", type: \"admin\" }, 0);\n * \n * // Match\n * if (matcher.matches(expr)) {\n * console.log(\"Match found!\");\n * }\n */\n\nimport Expression from './Expression.js';\nimport Matcher from './Matcher.js';\n\nexport { Expression, Matcher };\nexport default { Expression, Matcher };\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","Expression","constructor","pattern","options","separator","segments","_parse","_hasDeepWildcard","some","seg","type","_hasAttributeCondition","undefined","attrName","_hasPositionSelector","position","i","currentPart","length","trim","push","_parseSegment","part","segment","bracketContent","withoutBrackets","bracketMatch","match","content","slice","namespace","tag","tagAndPosition","includes","nsIndex","indexOf","substring","Error","positionMatch","colonIndex","lastIndexOf","tagPart","posPart","test","eqIndex","attrValue","nthMatch","positionValue","parseInt","hasDeepWildcard","hasAttributeCondition","hasPositionSelector","toString","MUTATING_METHODS","Set","Matcher","path","siblingStacks","tagName","attrValues","values","currentLevel","Map","siblings","siblingKey","counter","count","set","node","pop","updateCurrent","current","getCurrentTag","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","getDepth","includeNamespace","sep","map","n","join","toArray","reset","matches","expression","_matchWithDeepWildcard","_matchSimple","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","found","actualValue","String","snapshot","restore","readOnly","Proxy","target","receiver","has","TypeError","Reflect","freeze","Array","isArray","item","bind","_target","deleteProperty"],"sourceRoot":""} \ No newline at end of file diff --git a/bff/node_modules/path-expression-matcher/package.json b/bff/node_modules/path-expression-matcher/package.json new file mode 100644 index 0000000..7de77c3 --- /dev/null +++ b/bff/node_modules/path-expression-matcher/package.json @@ -0,0 +1,78 @@ +{ + "name": "path-expression-matcher", + "version": "1.2.0", + "description": "Efficient path tracking and pattern matching for XML/JSON parsers", + "main": "./lib/pem.cjs", + "type": "module", + "sideEffects": false, + "module": "./src/index.js", + "types": "./src/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./src/index.d.ts", + "default": "./src/index.js" + }, + "require": { + "types": "./lib/pem.d.cts", + "default": "./lib/pem.cjs" + } + } + }, + "scripts": { + "test": "c8 --reporter=lcov --reporter=text node test/*test.js", + "bundle": "webpack --config webpack.cjs.config.js" + }, + "keywords": [ + "xml", + "json", + "yaml", + "path", + "matcher", + "pattern", + "xpath", + "selector", + "parser", + "fast-xml-parser", + "fast-xml-builder" + ], + "author": "Amit Gupta (https://solothought.com)", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/NaturalIntelligence/path-expression-matcher" + }, + "bugs": { + "url": "https://github.com/NaturalIntelligence/path-expression-matcher/issues" + }, + "homepage": "https://github.com/NaturalIntelligence/path-expression-matcher#readme", + "engines": { + "node": ">=14.0.0" + }, + "files": [ + "lib", + "src/", + "README.md", + "LICENSE" + ], + "devDependencies": { + "@babel/core": "^7.13.10", + "@babel/plugin-transform-runtime": "^7.13.10", + "@babel/preset-env": "^7.13.10", + "@babel/register": "^7.13.8", + "@types/node": "20", + "babel-loader": "^8.2.2", + "c8": "^10.1.3", + "eslint": "^8.3.0", + "prettier": "^3.5.1", + "typescript": "5", + "webpack": "^5.64.4", + "webpack-cli": "^4.9.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ] +} \ No newline at end of file diff --git a/bff/node_modules/path-expression-matcher/src/Expression.js b/bff/node_modules/path-expression-matcher/src/Expression.js new file mode 100644 index 0000000..6cf24d5 --- /dev/null +++ b/bff/node_modules/path-expression-matcher/src/Expression.js @@ -0,0 +1,232 @@ +/** + * Expression - Parses and stores a tag pattern expression + * + * Patterns are parsed once and stored in an optimized structure for fast matching. + * + * @example + * const expr = new Expression("root.users.user"); + * const expr2 = new Expression("..user[id]:first"); + * const expr3 = new Expression("root/users/user", { separator: '/' }); + */ +export default class Expression { + /** + * Create a new Expression + * @param {string} pattern - Pattern string (e.g., "root.users.user", "..user[id]") + * @param {Object} options - Configuration options + * @param {string} options.separator - Path separator (default: '.') + */ + constructor(pattern, options = {}) { + this.pattern = pattern; + this.separator = options.separator || '.'; + this.segments = this._parse(pattern); + + // Cache expensive checks for performance (O(1) instead of O(n)) + this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard'); + this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined); + this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined); + } + + /** + * Parse pattern string into segments + * @private + * @param {string} pattern - Pattern to parse + * @returns {Array} Array of segment objects + */ + _parse(pattern) { + const segments = []; + + // Split by separator but handle ".." specially + let i = 0; + let currentPart = ''; + + while (i < pattern.length) { + if (pattern[i] === this.separator) { + // Check if next char is also separator (deep wildcard) + if (i + 1 < pattern.length && pattern[i + 1] === this.separator) { + // Flush current part if any + if (currentPart.trim()) { + segments.push(this._parseSegment(currentPart.trim())); + currentPart = ''; + } + // Add deep wildcard + segments.push({ type: 'deep-wildcard' }); + i += 2; // Skip both separators + } else { + // Regular separator + if (currentPart.trim()) { + segments.push(this._parseSegment(currentPart.trim())); + } + currentPart = ''; + i++; + } + } else { + currentPart += pattern[i]; + i++; + } + } + + // Flush remaining part + if (currentPart.trim()) { + segments.push(this._parseSegment(currentPart.trim())); + } + + return segments; + } + + /** + * Parse a single segment + * @private + * @param {string} part - Segment string (e.g., "user", "ns::user", "user[id]", "ns::user:first") + * @returns {Object} Segment object + */ + _parseSegment(part) { + const segment = { type: 'tag' }; + + // NEW NAMESPACE SYNTAX (v2.0): + // ============================ + // Namespace uses DOUBLE colon (::) + // Position uses SINGLE colon (:) + // + // Examples: + // "user" → tag + // "user:first" → tag + position + // "user[id]" → tag + attribute + // "user[id]:first" → tag + attribute + position + // "ns::user" → namespace + tag + // "ns::user:first" → namespace + tag + position + // "ns::user[id]" → namespace + tag + attribute + // "ns::user[id]:first" → namespace + tag + attribute + position + // "ns::first" → namespace + tag named "first" (NO ambiguity!) + // + // This eliminates all ambiguity: + // :: = namespace separator + // : = position selector + // [] = attributes + + // Step 1: Extract brackets [attr] or [attr=value] + let bracketContent = null; + let withoutBrackets = part; + + const bracketMatch = part.match(/^([^\[]+)(\[[^\]]*\])(.*)$/); + if (bracketMatch) { + withoutBrackets = bracketMatch[1] + bracketMatch[3]; + if (bracketMatch[2]) { + const content = bracketMatch[2].slice(1, -1); + if (content) { + bracketContent = content; + } + } + } + + // Step 2: Check for namespace (double colon ::) + let namespace = undefined; + let tagAndPosition = withoutBrackets; + + if (withoutBrackets.includes('::')) { + const nsIndex = withoutBrackets.indexOf('::'); + namespace = withoutBrackets.substring(0, nsIndex).trim(); + tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip :: + + if (!namespace) { + throw new Error(`Invalid namespace in pattern: ${part}`); + } + } + + // Step 3: Parse tag and position (single colon :) + let tag = undefined; + let positionMatch = null; + + if (tagAndPosition.includes(':')) { + const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position + const tagPart = tagAndPosition.substring(0, colonIndex).trim(); + const posPart = tagAndPosition.substring(colonIndex + 1).trim(); + + // Verify position is a valid keyword + const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) || + /^nth\(\d+\)$/.test(posPart); + + if (isPositionKeyword) { + tag = tagPart; + positionMatch = posPart; + } else { + // Not a valid position keyword, treat whole thing as tag + tag = tagAndPosition; + } + } else { + tag = tagAndPosition; + } + + if (!tag) { + throw new Error(`Invalid segment pattern: ${part}`); + } + + segment.tag = tag; + if (namespace) { + segment.namespace = namespace; + } + + // Step 4: Parse attributes + if (bracketContent) { + if (bracketContent.includes('=')) { + const eqIndex = bracketContent.indexOf('='); + segment.attrName = bracketContent.substring(0, eqIndex).trim(); + segment.attrValue = bracketContent.substring(eqIndex + 1).trim(); + } else { + segment.attrName = bracketContent.trim(); + } + } + + // Step 5: Parse position selector + if (positionMatch) { + const nthMatch = positionMatch.match(/^nth\((\d+)\)$/); + if (nthMatch) { + segment.position = 'nth'; + segment.positionValue = parseInt(nthMatch[1], 10); + } else { + segment.position = positionMatch; + } + } + + return segment; + } + + /** + * Get the number of segments + * @returns {number} + */ + get length() { + return this.segments.length; + } + + /** + * Check if expression contains deep wildcard + * @returns {boolean} + */ + hasDeepWildcard() { + return this._hasDeepWildcard; + } + + /** + * Check if expression has attribute conditions + * @returns {boolean} + */ + hasAttributeCondition() { + return this._hasAttributeCondition; + } + + /** + * Check if expression has position selectors + * @returns {boolean} + */ + hasPositionSelector() { + return this._hasPositionSelector; + } + + /** + * Get string representation + * @returns {string} + */ + toString() { + return this.pattern; + } +} \ No newline at end of file diff --git a/bff/node_modules/path-expression-matcher/src/Matcher.js b/bff/node_modules/path-expression-matcher/src/Matcher.js new file mode 100644 index 0000000..3a7f340 --- /dev/null +++ b/bff/node_modules/path-expression-matcher/src/Matcher.js @@ -0,0 +1,498 @@ +/** + * Matcher - Tracks current path in XML/JSON tree and matches against Expressions + * + * The matcher maintains a stack of nodes representing the current path from root to + * current tag. It only stores attribute values for the current (top) node to minimize + * memory usage. Sibling tracking is used to auto-calculate position and counter. + * + * @example + * const matcher = new Matcher(); + * matcher.push("root", {}); + * matcher.push("users", {}); + * matcher.push("user", { id: "123", type: "admin" }); + * + * const expr = new Expression("root.users.user"); + * matcher.matches(expr); // true + */ + +/** + * Names of methods that mutate Matcher state. + * Any attempt to call these on a read-only view throws a TypeError. + * @type {Set} + */ +const MUTATING_METHODS = new Set(['push', 'pop', 'reset', 'updateCurrent', 'restore']); + +export default class Matcher { + /** + * Create a new Matcher + * @param {Object} options - Configuration options + * @param {string} options.separator - Default path separator (default: '.') + */ + constructor(options = {}) { + this.separator = options.separator || '.'; + this.path = []; + this.siblingStacks = []; + // Each path node: { tag: string, values: object, position: number, counter: number } + // values only present for current (last) node + // Each siblingStacks entry: Map tracking occurrences at each level + } + + /** + * Push a new tag onto the path + * @param {string} tagName - Name of the tag + * @param {Object} attrValues - Attribute key-value pairs for current node (optional) + * @param {string} namespace - Namespace for the tag (optional) + */ + push(tagName, attrValues = null, namespace = null) { + // Remove values from previous current node (now becoming ancestor) + if (this.path.length > 0) { + const prev = this.path[this.path.length - 1]; + prev.values = undefined; + } + + // Get or create sibling tracking for current level + const currentLevel = this.path.length; + if (!this.siblingStacks[currentLevel]) { + this.siblingStacks[currentLevel] = new Map(); + } + + const siblings = this.siblingStacks[currentLevel]; + + // Create a unique key for sibling tracking that includes namespace + const siblingKey = namespace ? `${namespace}:${tagName}` : tagName; + + // Calculate counter (how many times this tag appeared at this level) + const counter = siblings.get(siblingKey) || 0; + + // Calculate position (total children at this level so far) + let position = 0; + for (const count of siblings.values()) { + position += count; + } + + // Update sibling count for this tag + siblings.set(siblingKey, counter + 1); + + // Create new node + const node = { + tag: tagName, + position: position, + counter: counter + }; + + // Store namespace if provided + if (namespace !== null && namespace !== undefined) { + node.namespace = namespace; + } + + // Store values only for current node + if (attrValues !== null && attrValues !== undefined) { + node.values = attrValues; + } + + this.path.push(node); + } + + /** + * Pop the last tag from the path + * @returns {Object|undefined} The popped node + */ + pop() { + if (this.path.length === 0) { + return undefined; + } + + const node = this.path.pop(); + + // Clean up sibling tracking for levels deeper than current + // After pop, path.length is the new depth + // We need to clean up siblingStacks[path.length + 1] and beyond + if (this.siblingStacks.length > this.path.length + 1) { + this.siblingStacks.length = this.path.length + 1; + } + + return node; + } + + /** + * Update current node's attribute values + * Useful when attributes are parsed after push + * @param {Object} attrValues - Attribute values + */ + updateCurrent(attrValues) { + if (this.path.length > 0) { + const current = this.path[this.path.length - 1]; + if (attrValues !== null && attrValues !== undefined) { + current.values = attrValues; + } + } + } + + /** + * Get current tag name + * @returns {string|undefined} + */ + getCurrentTag() { + return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined; + } + + /** + * Get current namespace + * @returns {string|undefined} + */ + getCurrentNamespace() { + return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined; + } + + /** + * Get current node's attribute value + * @param {string} attrName - Attribute name + * @returns {*} Attribute value or undefined + */ + getAttrValue(attrName) { + if (this.path.length === 0) return undefined; + const current = this.path[this.path.length - 1]; + return current.values?.[attrName]; + } + + /** + * Check if current node has an attribute + * @param {string} attrName - Attribute name + * @returns {boolean} + */ + hasAttr(attrName) { + if (this.path.length === 0) return false; + const current = this.path[this.path.length - 1]; + return current.values !== undefined && attrName in current.values; + } + + /** + * Get current node's sibling position (child index in parent) + * @returns {number} + */ + getPosition() { + if (this.path.length === 0) return -1; + return this.path[this.path.length - 1].position ?? 0; + } + + /** + * Get current node's repeat counter (occurrence count of this tag name) + * @returns {number} + */ + getCounter() { + if (this.path.length === 0) return -1; + return this.path[this.path.length - 1].counter ?? 0; + } + + /** + * Get current node's sibling index (alias for getPosition for backward compatibility) + * @returns {number} + * @deprecated Use getPosition() or getCounter() instead + */ + getIndex() { + return this.getPosition(); + } + + /** + * Get current path depth + * @returns {number} + */ + getDepth() { + return this.path.length; + } + + /** + * Get path as string + * @param {string} separator - Optional separator (uses default if not provided) + * @param {boolean} includeNamespace - Whether to include namespace in output (default: true) + * @returns {string} + */ + toString(separator, includeNamespace = true) { + const sep = separator || this.separator; + return this.path.map(n => { + if (includeNamespace && n.namespace) { + return `${n.namespace}:${n.tag}`; + } + return n.tag; + }).join(sep); + } + + /** + * Get path as array of tag names + * @returns {string[]} + */ + toArray() { + return this.path.map(n => n.tag); + } + + /** + * Reset the path to empty + */ + reset() { + this.path = []; + this.siblingStacks = []; + } + + /** + * Match current path against an Expression + * @param {Expression} expression - The expression to match against + * @returns {boolean} True if current path matches the expression + */ + matches(expression) { + const segments = expression.segments; + + if (segments.length === 0) { + return false; + } + + // Handle deep wildcard patterns + if (expression.hasDeepWildcard()) { + return this._matchWithDeepWildcard(segments); + } + + // Simple path matching (no deep wildcards) + return this._matchSimple(segments); + } + + /** + * Match simple path (no deep wildcards) + * @private + */ + _matchSimple(segments) { + // Path must be same length as segments + if (this.path.length !== segments.length) { + return false; + } + + // Match each segment bottom-to-top + for (let i = 0; i < segments.length; i++) { + const segment = segments[i]; + const node = this.path[i]; + const isCurrentNode = (i === this.path.length - 1); + + if (!this._matchSegment(segment, node, isCurrentNode)) { + return false; + } + } + + return true; + } + + /** + * Match path with deep wildcards + * @private + */ + _matchWithDeepWildcard(segments) { + let pathIdx = this.path.length - 1; // Start from current node (bottom) + let segIdx = segments.length - 1; // Start from last segment + + while (segIdx >= 0 && pathIdx >= 0) { + const segment = segments[segIdx]; + + if (segment.type === 'deep-wildcard') { + // ".." matches zero or more levels + segIdx--; + + if (segIdx < 0) { + // Pattern ends with "..", always matches + return true; + } + + // Find where next segment matches in the path + const nextSeg = segments[segIdx]; + let found = false; + + for (let i = pathIdx; i >= 0; i--) { + const isCurrentNode = (i === this.path.length - 1); + if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) { + pathIdx = i - 1; + segIdx--; + found = true; + break; + } + } + + if (!found) { + return false; + } + } else { + // Regular segment + const isCurrentNode = (pathIdx === this.path.length - 1); + if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) { + return false; + } + pathIdx--; + segIdx--; + } + } + + // All segments must be consumed + return segIdx < 0; + } + + /** + * Match a single segment against a node + * @private + * @param {Object} segment - Segment from Expression + * @param {Object} node - Node from path + * @param {boolean} isCurrentNode - Whether this is the current (last) node + * @returns {boolean} + */ + _matchSegment(segment, node, isCurrentNode) { + // Match tag name (* is wildcard) + if (segment.tag !== '*' && segment.tag !== node.tag) { + return false; + } + + // Match namespace if specified in segment + if (segment.namespace !== undefined) { + // Segment has namespace - node must match it + if (segment.namespace !== '*' && segment.namespace !== node.namespace) { + return false; + } + } + // If segment has no namespace, it matches nodes with or without namespace + + // Match attribute name (check if node has this attribute) + // Can only check for current node since ancestors don't have values + if (segment.attrName !== undefined) { + if (!isCurrentNode) { + // Can't check attributes for ancestor nodes (values not stored) + return false; + } + + if (!node.values || !(segment.attrName in node.values)) { + return false; + } + + // Match attribute value (only possible for current node) + if (segment.attrValue !== undefined) { + const actualValue = node.values[segment.attrName]; + // Both should be strings + if (String(actualValue) !== String(segment.attrValue)) { + return false; + } + } + } + + // Match position (only for current node) + if (segment.position !== undefined) { + if (!isCurrentNode) { + // Can't check position for ancestor nodes + return false; + } + + const counter = node.counter ?? 0; + + if (segment.position === 'first' && counter !== 0) { + return false; + } else if (segment.position === 'odd' && counter % 2 !== 1) { + return false; + } else if (segment.position === 'even' && counter % 2 !== 0) { + return false; + } else if (segment.position === 'nth') { + if (counter !== segment.positionValue) { + return false; + } + } + } + + return true; + } + + /** + * Create a snapshot of current state + * @returns {Object} State snapshot + */ + snapshot() { + return { + path: this.path.map(node => ({ ...node })), + siblingStacks: this.siblingStacks.map(map => new Map(map)) + }; + } + + /** + * Restore state from snapshot + * @param {Object} snapshot - State snapshot + */ + restore(snapshot) { + this.path = snapshot.path.map(node => ({ ...node })); + this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map)); + } + + /** + * Return a read-only view of this matcher. + * + * The returned object exposes all query/inspection methods but throws a + * TypeError if any state-mutating method is called (`push`, `pop`, `reset`, + * `updateCurrent`, `restore`). Property reads (e.g. `.path`, `.separator`) + * are allowed but the returned arrays/objects are frozen so callers cannot + * mutate internal state through them either. + * + * @returns {ReadOnlyMatcher} A proxy that forwards read operations and blocks writes. + * + * @example + * const matcher = new Matcher(); + * matcher.push("root", {}); + * + * const ro = matcher.readOnly(); + * ro.matches(expr); // ✓ works + * ro.getCurrentTag(); // ✓ works + * ro.push("child", {}); // ✗ throws TypeError + * ro.reset(); // ✗ throws TypeError + */ + readOnly() { + const self = this; + + return new Proxy(self, { + get(target, prop, receiver) { + // Block mutating methods + if (MUTATING_METHODS.has(prop)) { + return () => { + throw new TypeError( + `Cannot call '${prop}' on a read-only Matcher. ` + + `Obtain a writable instance to mutate state.` + ); + }; + } + + const value = Reflect.get(target, prop, receiver); + + // Freeze array/object properties so callers can't mutate internal + // state through direct property access (e.g. matcher.path.push(...)) + if (prop === 'path' || prop === 'siblingStacks') { + return Object.freeze( + Array.isArray(value) + ? value.map(item => + item instanceof Map + ? Object.freeze(new Map(item)) // freeze a copy of each Map + : Object.freeze({ ...item }) // freeze a copy of each node + ) + : value + ); + } + + // Bind methods so `this` inside them still refers to the real Matcher + if (typeof value === 'function') { + return value.bind(target); + } + + return value; + }, + + // Prevent any property assignment on the read-only view + set(_target, prop) { + throw new TypeError( + `Cannot set property '${String(prop)}' on a read-only Matcher.` + ); + }, + + // Prevent property deletion + deleteProperty(_target, prop) { + throw new TypeError( + `Cannot delete property '${String(prop)}' from a read-only Matcher.` + ); + } + }); + } +} \ No newline at end of file diff --git a/bff/node_modules/path-expression-matcher/src/index.d.ts b/bff/node_modules/path-expression-matcher/src/index.d.ts new file mode 100644 index 0000000..3be0851 --- /dev/null +++ b/bff/node_modules/path-expression-matcher/src/index.d.ts @@ -0,0 +1,518 @@ +/** + * TypeScript definitions for path-expression-matcher + * + * Provides efficient path tracking and pattern matching for XML/JSON parsers. + */ + +/** + * Options for creating an Expression + */ +export interface ExpressionOptions { + /** + * Path separator character + * @default '.' + */ + separator?: string; +} + +/** + * Parsed segment from an expression pattern + */ +export interface Segment { + /** + * Type of segment + */ + type: 'tag' | 'deep-wildcard'; + + /** + * Tag name (e.g., "user", "*" for wildcard) + * Only present when type is 'tag' + */ + tag?: string; + + /** + * Namespace prefix (e.g., "ns" in "ns::user") + * Only present when namespace is specified + */ + namespace?: string; + + /** + * Attribute name to match (e.g., "id" in "user[id]") + * Only present when attribute condition exists + */ + attrName?: string; + + /** + * Attribute value to match (e.g., "123" in "user[id=123]") + * Only present when attribute value is specified + */ + attrValue?: string; + + /** + * Position selector type + * Only present when position selector exists + */ + position?: 'first' | 'last' | 'odd' | 'even' | 'nth'; + + /** + * Numeric value for nth() selector + * Only present when position is 'nth' + */ + positionValue?: number; +} + +/** + * Expression - Parses and stores a tag pattern expression + * + * Patterns are parsed once and stored in an optimized structure for fast matching. + * + * @example + * ```typescript + * const expr = new Expression("root.users.user"); + * const expr2 = new Expression("..user[id]:first"); + * const expr3 = new Expression("root/users/user", { separator: '/' }); + * ``` + * + * Pattern Syntax: + * - `root.users.user` - Match exact path + * - `..user` - Match "user" at any depth (deep wildcard) + * - `user[id]` - Match user tag with "id" attribute + * - `user[id=123]` - Match user tag where id="123" + * - `user:first` - Match first occurrence of user tag + * - `ns::user` - Match user tag with namespace "ns" + * - `ns::user[id]:first` - Combine namespace, attribute, and position + */ +export class Expression { + /** + * Original pattern string + */ + readonly pattern: string; + + /** + * Path separator character + */ + readonly separator: string; + + /** + * Parsed segments + */ + readonly segments: Segment[]; + + /** + * Create a new Expression + * @param pattern - Pattern string (e.g., "root.users.user", "..user[id]") + * @param options - Configuration options + */ + constructor(pattern: string, options?: ExpressionOptions); + + /** + * Get the number of segments + */ + get length(): number; + + /** + * Check if expression contains deep wildcard (..) + */ + hasDeepWildcard(): boolean; + + /** + * Check if expression has attribute conditions + */ + hasAttributeCondition(): boolean; + + /** + * Check if expression has position selectors + */ + hasPositionSelector(): boolean; + + /** + * Get string representation + */ + toString(): string; +} + +/** + * Options for creating a Matcher + */ +export interface MatcherOptions { + /** + * Default path separator + * @default '.' + */ + separator?: string; +} + +/** + * Internal node structure in the path stack + */ +export interface PathNode { + /** + * Tag name + */ + tag: string; + + /** + * Namespace (if present) + */ + namespace?: string; + + /** + * Position in sibling list (child index in parent) + */ + position: number; + + /** + * Counter (occurrence count of this tag name) + */ + counter: number; + + /** + * Attribute key-value pairs + * Only present for the current (last) node in path + */ + values?: Record; +} + +/** + * Snapshot of matcher state + */ +export interface MatcherSnapshot { + /** + * Copy of the path stack + */ + path: PathNode[]; + + /** + * Copy of sibling tracking maps + */ + siblingStacks: Map[]; +} + +/** + * ReadOnlyMatcher - A safe, read-only view over a {@link Matcher} instance. + * + * Returned by {@link Matcher.readOnly}. Exposes all query and inspection + * methods but **throws a `TypeError`** if any state-mutating method is called + * (`push`, `pop`, `reset`, `updateCurrent`, `restore`). Direct property + * writes are also blocked. + * + * Pass this to consumers that only need to inspect or match the current path + * so they cannot accidentally corrupt the parser state. + * + * @example + * ```typescript + * const matcher = new Matcher(); + * matcher.push("root", {}); + * matcher.push("users", {}); + * matcher.push("user", { id: "123" }); + * + * const ro: ReadOnlyMatcher = matcher.readOnly(); + * + * ro.matches(expr); // ✓ works + * ro.getCurrentTag(); // ✓ "user" + * ro.getDepth(); // ✓ 3 + * ro.push("child", {}); // ✗ TypeError: Cannot call 'push' on a read-only Matcher + * ro.reset(); // ✗ TypeError: Cannot call 'reset' on a read-only Matcher + * ``` + */ +export interface ReadOnlyMatcher { + /** + * Default path separator (read-only) + */ + readonly separator: string; + + /** + * Current path stack (each node is a frozen copy) + */ + readonly path: ReadonlyArray>; + + // ── Query methods ─────────────────────────────────────────────────────────── + + /** + * Get current tag name + * @returns Current tag name or undefined if path is empty + */ + getCurrentTag(): string | undefined; + + /** + * Get current namespace + * @returns Current namespace or undefined if not present or path is empty + */ + getCurrentNamespace(): string | undefined; + + /** + * Get current node's attribute value + * @param attrName - Attribute name + * @returns Attribute value or undefined + */ + getAttrValue(attrName: string): any; + + /** + * Check if current node has an attribute + * @param attrName - Attribute name + */ + hasAttr(attrName: string): boolean; + + /** + * Get current node's sibling position (child index in parent) + * @returns Position index or -1 if path is empty + */ + getPosition(): number; + + /** + * Get current node's repeat counter (occurrence count of this tag name) + * @returns Counter value or -1 if path is empty + */ + getCounter(): number; + + /** + * Get current node's sibling index (alias for getPosition for backward compatibility) + * @returns Index or -1 if path is empty + * @deprecated Use getPosition() or getCounter() instead + */ + getIndex(): number; + + /** + * Get current path depth + * @returns Number of nodes in the path + */ + getDepth(): number; + + /** + * Get path as string + * @param separator - Optional separator (uses default if not provided) + * @param includeNamespace - Whether to include namespace in output + * @returns Path string (e.g., "root.users.user" or "ns:root.ns:users.user") + */ + toString(separator?: string, includeNamespace?: boolean): string; + + /** + * Get path as array of tag names + * @returns Array of tag names + */ + toArray(): string[]; + + /** + * Match current path against an Expression + * @param expression - The expression to match against + * @returns True if current path matches the expression + */ + matches(expression: Expression): boolean; + + /** + * Create a snapshot of current state + * @returns State snapshot that can be restored later + */ + snapshot(): MatcherSnapshot; + + // ── Blocked mutating methods ──────────────────────────────────────────────── + // These are present in the type so callers get a compile-time error with a + // helpful message instead of a silent "property does not exist" error. + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + push(tagName: string, attrValues?: Record | null, namespace?: string | null): never; + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + pop(): never; + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + updateCurrent(attrValues: Record): never; + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + reset(): never; + + /** + * @throws {TypeError} Always – mutation is not allowed on a read-only view. + */ + restore(snapshot: MatcherSnapshot): never; +} + +/** + * Matcher - Tracks current path in XML/JSON tree and matches against Expressions + * + * The matcher maintains a stack of nodes representing the current path from root to + * current tag. It only stores attribute values for the current (top) node to minimize + * memory usage. + * + * @example + * ```typescript + * const matcher = new Matcher(); + * matcher.push("root", {}); + * matcher.push("users", {}); + * matcher.push("user", { id: "123", type: "admin" }); + * + * const expr = new Expression("root.users.user"); + * matcher.matches(expr); // true + * + * matcher.pop(); + * matcher.matches(expr); // false + * ``` + */ +export class Matcher { + /** + * Default path separator + */ + readonly separator: string; + + /** + * Current path stack + */ + readonly path: PathNode[]; + + /** + * Create a new Matcher + * @param options - Configuration options + */ + constructor(options?: MatcherOptions); + + /** + * Push a new tag onto the path + * @param tagName - Name of the tag + * @param attrValues - Attribute key-value pairs for current node (optional) + * @param namespace - Namespace for the tag (optional) + * + * @example + * ```typescript + * matcher.push("user", { id: "123", type: "admin" }); + * matcher.push("user", { id: "456" }, "ns"); + * matcher.push("container", null); + * ``` + */ + push(tagName: string, attrValues?: Record | null, namespace?: string | null): void; + + /** + * Pop the last tag from the path + * @returns The popped node or undefined if path is empty + */ + pop(): PathNode | undefined; + + /** + * Update current node's attribute values + * Useful when attributes are parsed after push + * @param attrValues - Attribute values + */ + updateCurrent(attrValues: Record): void; + + /** + * Get current tag name + * @returns Current tag name or undefined if path is empty + */ + getCurrentTag(): string | undefined; + + /** + * Get current namespace + * @returns Current namespace or undefined if not present or path is empty + */ + getCurrentNamespace(): string | undefined; + + /** + * Get current node's attribute value + * @param attrName - Attribute name + * @returns Attribute value or undefined + */ + getAttrValue(attrName: string): any; + + /** + * Check if current node has an attribute + * @param attrName - Attribute name + */ + hasAttr(attrName: string): boolean; + + /** + * Get current node's sibling position (child index in parent) + * @returns Position index or -1 if path is empty + */ + getPosition(): number; + + /** + * Get current node's repeat counter (occurrence count of this tag name) + * @returns Counter value or -1 if path is empty + */ + getCounter(): number; + + /** + * Get current node's sibling index (alias for getPosition for backward compatibility) + * @returns Index or -1 if path is empty + * @deprecated Use getPosition() or getCounter() instead + */ + getIndex(): number; + + /** + * Get current path depth + * @returns Number of nodes in the path + */ + getDepth(): number; + + /** + * Get path as string + * @param separator - Optional separator (uses default if not provided) + * @param includeNamespace - Whether to include namespace in output + * @returns Path string (e.g., "root.users.user" or "ns:root.ns:users.user") + */ + toString(separator?: string, includeNamespace?: boolean): string; + + /** + * Get path as array of tag names + * @returns Array of tag names + */ + toArray(): string[]; + + /** + * Reset the path to empty + */ + reset(): void; + + /** + * Match current path against an Expression + * @param expression - The expression to match against + * @returns True if current path matches the expression + * + * @example + * ```typescript + * const expr = new Expression("root.users.user[id]"); + * const matcher = new Matcher(); + * + * matcher.push("root"); + * matcher.push("users"); + * matcher.push("user", { id: "123" }); + * + * matcher.matches(expr); // true + * ``` + */ + matches(expression: Expression): boolean; + + /** + * Create a snapshot of current state + * @returns State snapshot that can be restored later + */ + snapshot(): MatcherSnapshot; + + /** + * Restore state from snapshot + * @param snapshot - State snapshot from previous snapshot() call + */ + restore(snapshot: MatcherSnapshot): void; + + /** + * Return a read-only view of this matcher. + */ + readOnly(): ReadOnlyMatcher; +} + +/** + * Default export containing both Expression and Matcher + */ +declare const _default: { + Expression: typeof Expression; + Matcher: typeof Matcher; +}; + +export default _default; \ No newline at end of file diff --git a/bff/node_modules/path-expression-matcher/src/index.js b/bff/node_modules/path-expression-matcher/src/index.js new file mode 100644 index 0000000..630262d --- /dev/null +++ b/bff/node_modules/path-expression-matcher/src/index.js @@ -0,0 +1,28 @@ +/** + * fast-xml-tagger - XML/JSON path matching library + * + * Provides efficient path tracking and pattern matching for XML/JSON parsers. + * + * @example + * import { Expression, Matcher } from 'fast-xml-tagger'; + * + * // Create expression (parse once) + * const expr = new Expression("root.users.user[id]"); + * + * // Create matcher (track path) + * const matcher = new Matcher(); + * matcher.push("root", [], {}, 0); + * matcher.push("users", [], {}, 0); + * matcher.push("user", ["id", "type"], { id: "123", type: "admin" }, 0); + * + * // Match + * if (matcher.matches(expr)) { + * console.log("Match found!"); + * } + */ + +import Expression from './Expression.js'; +import Matcher from './Matcher.js'; + +export { Expression, Matcher }; +export default { Expression, Matcher }; diff --git a/bff/node_modules/path-to-regexp/LICENSE b/bff/node_modules/path-to-regexp/LICENSE new file mode 100644 index 0000000..983fbe8 --- /dev/null +++ b/bff/node_modules/path-to-regexp/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/path-to-regexp/Readme.md b/bff/node_modules/path-to-regexp/Readme.md new file mode 100644 index 0000000..f5df40a --- /dev/null +++ b/bff/node_modules/path-to-regexp/Readme.md @@ -0,0 +1,224 @@ +# Path-to-RegExp + +> Turn a path string such as `/user/:name` into a regular expression. + +[![NPM version][npm-image]][npm-url] +[![NPM downloads][downloads-image]][downloads-url] +[![Build status][build-image]][build-url] +[![Build coverage][coverage-image]][coverage-url] +[![License][license-image]][license-url] + +## Installation + +``` +npm install path-to-regexp --save +``` + +## Usage + +```js +const { + match, + pathToRegexp, + compile, + parse, + stringify, +} = require("path-to-regexp"); +``` + +### Parameters + +Parameters match arbitrary strings in a path by matching up to the end of the segment, or up to any proceeding tokens. They are defined by prefixing a colon to the parameter name (`:foo`). Parameter names can use any valid JavaScript identifier, or be double quoted to use other characters (`:"param-name"`). + +```js +const fn = match("/:foo/:bar"); + +fn("/test/route"); +//=> { path: '/test/route', params: { foo: 'test', bar: 'route' } } +``` + +### Wildcard + +Wildcard parameters match one or more characters across multiple segments. They are defined the same way as regular parameters, but are prefixed with an asterisk (`*foo`). + +```js +const fn = match("/*splat"); + +fn("/bar/baz"); +//=> { path: '/bar/baz', params: { splat: [ 'bar', 'baz' ] } } +``` + +### Optional + +Braces can be used to define parts of the path that are optional. + +```js +const fn = match("/users{/:id}/delete"); + +fn("/users/delete"); +//=> { path: '/users/delete', params: {} } + +fn("/users/123/delete"); +//=> { path: '/users/123/delete', params: { id: '123' } } +``` + +## Match + +The `match` function returns a function for matching strings against a path: + +- **path** String, `TokenData` object, or array of strings and `TokenData` objects. +- **options** _(optional)_ (Extends [pathToRegexp](#pathToRegexp) options) + - **decode** Function for decoding strings to params, or `false` to disable all processing. (default: `decodeURIComponent`) + +```js +const fn = match("/foo/:bar"); +``` + +**Please note:** `path-to-regexp` is intended for ordered data (e.g. paths, hosts). It can not handle arbitrarily ordered data (e.g. query strings, URL fragments, JSON, etc). + +## PathToRegexp + +The `pathToRegexp` function returns the `regexp` for matching strings against paths, and an array of `keys` for understanding the `RegExp#exec` matches. + +- **path** String, `TokenData` object, or array of strings and `TokenData` objects. +- **options** _(optional)_ (See [parse](#parse) for more options) + - **sensitive** Regexp will be case sensitive. (default: `false`) + - **end** Validate the match reaches the end of the string. (default: `true`) + - **delimiter** The default delimiter for segments, e.g. `[^/]` for `:named` parameters. (default: `'/'`) + - **trailing** Allows optional trailing delimiter to match. (default: `true`) + +```js +const { regexp, keys } = pathToRegexp("/foo/:bar"); + +regexp.exec("/foo/123"); //=> ["/foo/123", "123"] +``` + +## Compile ("Reverse" Path-To-RegExp) + +The `compile` function will return a function for transforming parameters into a valid path: + +- **path** A string or `TokenData` object. +- **options** (See [parse](#parse) for more options) + - **delimiter** The default delimiter for segments, e.g. `[^/]` for `:named` parameters. (default: `'/'`) + - **encode** Function for encoding input strings for output into the path, or `false` to disable entirely. (default: `encodeURIComponent`) + +```js +const toPath = compile("/user/:id"); + +toPath({ id: "name" }); //=> "/user/name" +toPath({ id: "café" }); //=> "/user/caf%C3%A9" + +const toPathRepeated = compile("/*segment"); + +toPathRepeated({ segment: ["foo"] }); //=> "/foo" +toPathRepeated({ segment: ["a", "b", "c"] }); //=> "/a/b/c" + +// When disabling `encode`, you need to make sure inputs are encoded correctly. No arrays are accepted. +const toPathRaw = compile("/user/:id", { encode: false }); + +toPathRaw({ id: "%3A%2F" }); //=> "/user/%3A%2F" +``` + +## Stringify + +Transform a `TokenData` object to a Path-to-RegExp string. + +- **data** A `TokenData` object. + +```js +const data = { + tokens: [ + { type: "text", value: "/" }, + { type: "param", name: "foo" }, + ], +}; + +const path = stringify(data); //=> "/:foo" +``` + +## Developers + +- If you are rewriting paths with match and compile, consider using `encode: false` and `decode: false` to keep raw paths passed around. +- To ensure matches work on paths containing characters usually encoded, such as emoji, consider using [encodeurl](https://github.com/pillarjs/encodeurl) for `encodePath`. + +### Parse + +The `parse` function accepts a string and returns `TokenData`, which can be used with `match` and `compile`. + +- **path** A string. +- **options** _(optional)_ + - **encodePath** A function for encoding input strings. (default: `x => x`, recommended: [`encodeurl`](https://github.com/pillarjs/encodeurl)) + +### Tokens + +`TokenData` has two properties: + +- **tokens** A sequence of tokens, currently of types `text`, `parameter`, `wildcard`, or `group`. +- **originalPath** The original path used with `parse`, shown in error messages to assist debugging. + +### Custom path + +In some applications you may not be able to use the `path-to-regexp` syntax, but you still want to use this library for `match` and `compile`. For example: + +```js +import { match } from "path-to-regexp"; + +const tokens = [ + { type: "text", value: "/" }, + { type: "parameter", name: "foo" }, +]; +const originalPath = "/[foo]"; // To help debug error messages. +const path = { tokens, originalPath }; +const fn = match(path); + +fn("/test"); //=> { path: '/test', index: 0, params: { foo: 'test' } } +``` + +## Errors + +An effort has been made to ensure ambiguous paths from previous releases throw an error. This means you might be seeing an error when things worked before. + +### Missing parameter name + +Parameter names must be provided after `:` or `*`, for example `/*path`. They can be valid JavaScript identifiers (e.g. `:myName`) or JSON strings (`:"my-name"`). + +### Unexpected `?` or `+` + +In past releases, `?`, `*`, and `+` were used to denote optional or repeating parameters. As an alternative, try these: + +- For optional (`?`), use braces: `/file{.:ext}`. +- For one or more (`+`), use a wildcard: `/*path`. +- For zero or more (`*`), use both: `/files{/*path}`. + +### Unexpected `(`, `)`, `[`, `]`, etc. + +Previous versions of Path-to-RegExp used these for RegExp features. This version no longer supports them so they've been reserved to avoid ambiguity. To match these characters literally, escape them with a backslash, e.g. `"\\("`. + +### Unterminated quote + +Parameter names can be wrapped in double quote characters, and this error means you forgot to close the quote character. For example, `:"foo`. + +### Express <= 4.x + +Path-To-RegExp breaks compatibility with Express <= `4.x` in the following ways: + +- The wildcard `*` must have a name and matches the behavior of parameters `:`. +- The optional character `?` is no longer supported, use braces instead: `/:file{.:ext}`. +- Regexp characters are not supported. +- Some characters have been reserved to avoid confusion during upgrade (`()[]?+!`). +- Parameter names now support valid JavaScript identifiers, or quoted like `:"this"`. + +## License + +MIT + +[npm-image]: https://img.shields.io/npm/v/path-to-regexp +[npm-url]: https://npmjs.org/package/path-to-regexp +[downloads-image]: https://img.shields.io/npm/dm/path-to-regexp +[downloads-url]: https://npmjs.org/package/path-to-regexp +[build-image]: https://img.shields.io/github/actions/workflow/status/pillarjs/path-to-regexp/ci.yml?branch=master +[build-url]: https://github.com/pillarjs/path-to-regexp/actions/workflows/ci.yml?query=branch%3Amaster +[coverage-image]: https://img.shields.io/codecov/c/gh/pillarjs/path-to-regexp +[coverage-url]: https://codecov.io/gh/pillarjs/path-to-regexp +[license-image]: http://img.shields.io/npm/l/path-to-regexp.svg?style=flat +[license-url]: LICENSE.md diff --git a/bff/node_modules/path-to-regexp/package.json b/bff/node_modules/path-to-regexp/package.json new file mode 100644 index 0000000..5caea46 --- /dev/null +++ b/bff/node_modules/path-to-regexp/package.json @@ -0,0 +1,64 @@ +{ + "name": "path-to-regexp", + "version": "8.4.0", + "description": "Express style path to RegExp utility", + "keywords": [ + "express", + "regexp", + "route", + "routing" + ], + "repository": { + "type": "git", + "url": "https://github.com/pillarjs/path-to-regexp.git" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "license": "MIT", + "exports": "./dist/index.js", + "main": "dist/index.js", + "typings": "dist/index.d.ts", + "files": [ + "dist/" + ], + "scripts": { + "bench": "vitest bench", + "build": "ts-scripts build", + "format": "ts-scripts format", + "lint": "ts-scripts lint", + "prepare": "ts-scripts install && npm run build", + "size": "size-limit", + "specs": "ts-scripts specs", + "test": "ts-scripts test && npm run size" + }, + "devDependencies": { + "@borderless/ts-scripts": "^0.15.0", + "@size-limit/preset-small-lib": "^11.1.2", + "@types/node": "^22.7.2", + "@types/semver": "^7.3.1", + "@vitest/coverage-v8": "^3.0.5", + "recheck": "^4.5.0", + "size-limit": "^11.1.2", + "typescript": "^5.7.3", + "vitest": "^3.0.5" + }, + "publishConfig": { + "access": "public" + }, + "size-limit": [ + { + "path": "dist/index.js", + "limit": "2.15 kB" + } + ], + "ts-scripts": { + "dist": [ + "dist" + ], + "project": [ + "tsconfig.build.json" + ] + } +} diff --git a/bff/node_modules/pg-cloudflare/LICENSE b/bff/node_modules/pg-cloudflare/LICENSE new file mode 100644 index 0000000..5c14056 --- /dev/null +++ b/bff/node_modules/pg-cloudflare/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2010 - 2021 Brian Carlson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/pg-cloudflare/README.md b/bff/node_modules/pg-cloudflare/README.md new file mode 100644 index 0000000..68663c4 --- /dev/null +++ b/bff/node_modules/pg-cloudflare/README.md @@ -0,0 +1,112 @@ +# pg-cloudflare + +`pg-cloudflare` makes it easier to take an existing package that relies on `tls` and `net`, and make it work in environments where only `connect()` is supported, such as Cloudflare Workers. + +`pg-cloudflare` wraps `connect()`, the [TCP Socket API](https://github.com/wintercg/proposal-sockets-api) proposed within WinterCG, and implemented in [Cloudflare Workers](https://developers.cloudflare.com/workers/runtime-apis/tcp-sockets/), and exposes an interface with methods similar to what the `net` and `tls` modules in Node.js expose. (ex: `net.connect(path[, options][, callback])`). This minimizes the number of changes needed in order to make an existing package work across JavaScript runtimes. + +## Installation + +``` +npm i --save-dev pg-cloudflare +``` + +The package uses conditional exports to support bundlers that don't know about +`cloudflare:sockets`, so the consumer code by default imports an empty file. To +enable the package, resolve to the `cloudflare` condition in your bundler's +config. For example: + +- `webpack.config.js` + ```js + export default { + ..., + resolve: { conditionNames: [..., "workerd"] }, + plugins: [ + // ignore cloudflare:sockets imports + new webpack.IgnorePlugin({ + resourceRegExp: /^cloudflare:sockets$/, + }), + ], + } + ``` +- `vite.config.js` + + > [!NOTE] + > If you are using the [Cloudflare Vite plugin](https://www.npmjs.com/package/@cloudflare/vite-plugin) then the following configuration is not necessary. + + ```js + export default defineConfig({ + ..., + resolve: { + conditions: [..., "workerd"], + }, + build: { + ..., + // don't try to bundle cloudflare:sockets + rollupOptions: { + external: [..., 'cloudflare:sockets'], + }, + }, + }) + ``` + +- `rollup.config.js` + ```js + export default defineConfig({ + ..., + plugins: [..., nodeResolve({ exportConditions: [..., 'workerd'] })], + // don't try to bundle cloudflare:sockets + external: [..., 'cloudflare:sockets'], + }) + ``` +- `esbuild.config.js` + ```js + await esbuild.build({ + ..., + conditions: [..., 'workerd'], + }) + ``` + +The concrete examples can be found in `packages/pg-bundler-test`. + +## How to use conditionally, in non-Node.js environments + +As implemented in `pg` [here](https://github.com/brianc/node-postgres/commit/07553428e9c0eacf761a5d4541a3300ff7859578#diff-34588ad868ebcb232660aba7ee6a99d1e02f4bc93f73497d2688c3f074e60533R5-R13), a typical use case might look as follows, where in a Node.js environment the `net` module is used, while in a non-Node.js environment, where `net` is unavailable, `pg-cloudflare` is used instead, providing an equivalent interface: + +```js +module.exports.getStream = function getStream(ssl = false) { + const net = require('net') + if (typeof net.Socket === 'function') { + return net.Socket() + } + const { CloudflareSocket } = require('pg-cloudflare') + return new CloudflareSocket(ssl) +} +``` + +## Node.js implementation of the Socket API proposal + +If you're looking for a way to rely on `connect()` as the interface you use to interact with raw sockets, but need this interface to be available in a Node.js environment, [`@arrowood.dev/socket`](https://github.com/Ethan-Arrowood/socket) provides a Node.js implementation of the Socket API. + +### license + +The MIT License (MIT) + +Copyright (c) 2023 Brian M. Carlson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/pg-cloudflare/esm/index.mjs b/bff/node_modules/pg-cloudflare/esm/index.mjs new file mode 100644 index 0000000..6384216 --- /dev/null +++ b/bff/node_modules/pg-cloudflare/esm/index.mjs @@ -0,0 +1,3 @@ +import cf from '../dist/index.js' + +export const CloudflareSocket = cf.CloudflareSocket diff --git a/bff/node_modules/pg-cloudflare/package.json b/bff/node_modules/pg-cloudflare/package.json new file mode 100644 index 0000000..7eebd46 --- /dev/null +++ b/bff/node_modules/pg-cloudflare/package.json @@ -0,0 +1,39 @@ +{ + "name": "pg-cloudflare", + "version": "1.3.0", + "description": "A socket implementation that can run on Cloudflare Workers using native TCP connections.", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "license": "MIT", + "devDependencies": { + "ts-node": "^8.5.4", + "typescript": "^4.0.3" + }, + "exports": { + ".": { + "workerd": { + "import": "./esm/index.mjs", + "require": "./dist/index.js" + }, + "default": "./dist/empty.js" + }, + "./package.json": "./package.json" + }, + "scripts": { + "build": "tsc", + "build:watch": "tsc --watch", + "prepublish": "yarn build", + "test": "echo e2e test in pg package" + }, + "repository": { + "type": "git", + "url": "git://github.com/brianc/node-postgres.git", + "directory": "packages/pg-cloudflare" + }, + "files": [ + "/dist/*{js,ts,map}", + "/src", + "/esm" + ], + "gitHead": "d10e09c888f94abf77382aba6f353ca665a1cf09" +} diff --git a/bff/node_modules/pg-cloudflare/src/empty.ts b/bff/node_modules/pg-cloudflare/src/empty.ts new file mode 100644 index 0000000..f1e6740 --- /dev/null +++ b/bff/node_modules/pg-cloudflare/src/empty.ts @@ -0,0 +1,3 @@ +// This is an empty module that is served up when outside of a workerd environment +// See the `exports` field in package.json +export default {} diff --git a/bff/node_modules/pg-cloudflare/src/index.ts b/bff/node_modules/pg-cloudflare/src/index.ts new file mode 100644 index 0000000..d83882e --- /dev/null +++ b/bff/node_modules/pg-cloudflare/src/index.ts @@ -0,0 +1,166 @@ +import { SocketOptions, Socket, TlsOptions } from 'cloudflare:sockets' +import { EventEmitter } from 'events' + +/** + * Wrapper around the Cloudflare built-in socket that can be used by the `Connection`. + */ +export class CloudflareSocket extends EventEmitter { + writable = false + destroyed = false + + private _upgrading = false + private _upgraded = false + private _cfSocket: Socket | null = null + private _cfWriter: WritableStreamDefaultWriter | null = null + private _cfReader: ReadableStreamDefaultReader | null = null + + constructor(readonly ssl: boolean) { + super() + } + + setNoDelay() { + return this + } + setKeepAlive() { + return this + } + ref() { + return this + } + unref() { + return this + } + + async connect(port: number, host: string, connectListener?: (...args: unknown[]) => void) { + try { + log('connecting') + if (connectListener) this.once('connect', connectListener) + + const options: SocketOptions = this.ssl ? { secureTransport: 'starttls' } : {} + const mod = await import('cloudflare:sockets') + const connect = mod.connect + this._cfSocket = connect(`${host}:${port}`, options) + this._cfWriter = this._cfSocket.writable.getWriter() + this._addClosedHandler() + + this._cfReader = this._cfSocket.readable.getReader() + if (this.ssl) { + this._listenOnce().catch((e) => this.emit('error', e)) + } else { + this._listen().catch((e) => this.emit('error', e)) + } + + await this._cfWriter!.ready + log('socket ready') + this.writable = true + this.emit('connect') + + return this + } catch (e) { + this.emit('error', e) + } + } + + async _listen() { + // eslint-disable-next-line no-constant-condition + while (true) { + log('awaiting receive from CF socket') + const { done, value } = await this._cfReader!.read() + log('CF socket received:', done, value) + if (done) { + log('done') + break + } + this.emit('data', Buffer.from(value)) + } + } + + async _listenOnce() { + log('awaiting first receive from CF socket') + const { done, value } = await this._cfReader!.read() + log('First CF socket received:', done, value) + this.emit('data', Buffer.from(value)) + } + + write( + data: Uint8Array | string, + encoding: BufferEncoding = 'utf8', + callback: (...args: unknown[]) => void = () => {} + ) { + if (data.length === 0) return callback() + if (typeof data === 'string') data = Buffer.from(data, encoding) + + log('sending data direct:', data) + this._cfWriter!.write(data).then( + () => { + log('data sent') + callback() + }, + (err) => { + log('send error', err) + callback(err) + } + ) + return true + } + + end(data = Buffer.alloc(0), encoding: BufferEncoding = 'utf8', callback: (...args: unknown[]) => void = () => {}) { + log('ending CF socket') + this.write(data, encoding, (err) => { + this._cfSocket!.close() + if (callback) callback(err) + }) + return this + } + + destroy(reason: string) { + log('destroying CF socket', reason) + this.destroyed = true + return this.end() + } + + startTls(options: TlsOptions) { + if (this._upgraded) { + // Don't try to upgrade again. + this.emit('error', 'Cannot call `startTls()` more than once on a socket') + return + } + this._cfWriter!.releaseLock() + this._cfReader!.releaseLock() + this._upgrading = true + this._cfSocket = this._cfSocket!.startTls(options) + this._cfWriter = this._cfSocket.writable.getWriter() + this._cfReader = this._cfSocket.readable.getReader() + this._addClosedHandler() + this._listen().catch((e) => this.emit('error', e)) + } + + _addClosedHandler() { + this._cfSocket!.closed.then(() => { + if (!this._upgrading) { + log('CF socket closed') + this._cfSocket = null + this.emit('close') + } else { + this._upgrading = false + this._upgraded = true + } + }).catch((e) => this.emit('error', e)) + } +} + +const debug = false + +function dump(data: unknown) { + if (data instanceof Uint8Array || data instanceof ArrayBuffer) { + const hex = Buffer.from(data).toString('hex') + const str = new TextDecoder().decode(data) + return `\n>>> STR: "${str.replace(/\n/g, '\\n')}"\n>>> HEX: ${hex}\n` + } else { + return data + } +} + +function log(...args: unknown[]) { + debug && console.log(...args.map(dump)) +} diff --git a/bff/node_modules/pg-cloudflare/src/types.d.ts b/bff/node_modules/pg-cloudflare/src/types.d.ts new file mode 100644 index 0000000..f6f1c3f --- /dev/null +++ b/bff/node_modules/pg-cloudflare/src/types.d.ts @@ -0,0 +1,25 @@ +declare module 'cloudflare:sockets' { + export class Socket { + public readonly readable: any + public readonly writable: any + public readonly closed: Promise + public close(): Promise + public startTls(options: TlsOptions): Socket + } + + export type TlsOptions = { + expectedServerHostname?: string + } + + export type SocketAddress = { + hostname: string + port: number + } + + export type SocketOptions = { + secureTransport?: 'off' | 'on' | 'starttls' + allowHalfOpen?: boolean + } + + export function connect(address: string | SocketAddress, options?: SocketOptions): Socket +} diff --git a/bff/node_modules/pg-connection-string/LICENSE b/bff/node_modules/pg-connection-string/LICENSE new file mode 100644 index 0000000..b068a6c --- /dev/null +++ b/bff/node_modules/pg-connection-string/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Iced Development + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/bff/node_modules/pg-connection-string/README.md b/bff/node_modules/pg-connection-string/README.md new file mode 100644 index 0000000..e47adc8 --- /dev/null +++ b/bff/node_modules/pg-connection-string/README.md @@ -0,0 +1,105 @@ +pg-connection-string +==================== + +[![NPM](https://nodei.co/npm/pg-connection-string.png?compact=true)](https://nodei.co/npm/pg-connection-string/) + +Functions for dealing with a PostgresSQL connection string + +`parse` method taken from [node-postgres](https://github.com/brianc/node-postgres.git) +Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com) +MIT License + +## Usage + +```js +const parse = require('pg-connection-string').parse; + +const config = parse('postgres://someuser:somepassword@somehost:381/somedatabase') +``` + +The resulting config contains a subset of the following properties: + +* `user` - User with which to authenticate to the server +* `password` - Corresponding password +* `host` - Postgres server hostname or, for UNIX domain sockets, the socket filename +* `port` - port on which to connect +* `database` - Database name within the server +* `client_encoding` - string encoding the client will use +* `ssl`, either a boolean or an object with properties + * `rejectUnauthorized` + * `cert` + * `key` + * `ca` +* any other query parameters (for example, `application_name`) are preserved intact. + +### ClientConfig Compatibility for TypeScript + +The pg-connection-string `ConnectionOptions` interface is not compatible with the `ClientConfig` interface that [pg.Client](https://node-postgres.com/apis/client) expects. To remedy this, use the `parseIntoClientConfig` function instead of `parse`: + +```ts +import { ClientConfig } from 'pg'; +import { parseIntoClientConfig } from 'pg-connection-string'; + +const config: ClientConfig = parseIntoClientConfig('postgres://someuser:somepassword@somehost:381/somedatabase') +``` + +You can also use `toClientConfig` to convert an existing `ConnectionOptions` interface into a `ClientConfig` interface: + +```ts +import { ClientConfig } from 'pg'; +import { parse, toClientConfig } from 'pg-connection-string'; + +const config = parse('postgres://someuser:somepassword@somehost:381/somedatabase') +const clientConfig: ClientConfig = toClientConfig(config) +``` + +## Connection Strings + +The short summary of acceptable URLs is: + + * `socket:?` - UNIX domain socket + * `postgres://:@:/?` - TCP connection + +But see below for more details. + +### UNIX Domain Sockets + +When user and password are not given, the socket path follows `socket:`, as in `socket:/var/run/pgsql`. +This form can be shortened to just a path: `/var/run/pgsql`. + +When user and password are given, they are included in the typical URL positions, with an empty `host`, as in `socket://user:pass@/var/run/pgsql`. + +Query parameters follow a `?` character, including the following special query parameters: + + * `db=` - sets the database name (urlencoded) + * `encoding=` - sets the `client_encoding` property + +### TCP Connections + +TCP connections to the Postgres server are indicated with `pg:` or `postgres:` schemes (in fact, any scheme but `socket:` is accepted). +If username and password are included, they should be urlencoded. +The database name, however, should *not* be urlencoded. + +Query parameters follow a `?` character, including the following special query parameters: + * `host=` - sets `host` property, overriding the URL's host + * `encoding=` - sets the `client_encoding` property + * `ssl=1`, `ssl=true`, `ssl=0`, `ssl=false` - sets `ssl` to true or false, accordingly + * `uselibpqcompat=true` - use libpq semantics + * `sslmode=` when `uselibpqcompat=true` is not set + * `sslmode=disable` - sets `ssl` to false + * `sslmode=no-verify` - sets `ssl` to `{ rejectUnauthorized: false }` + * `sslmode=prefer`, `sslmode=require`, `sslmode=verify-ca`, `sslmode=verify-full` - sets `ssl` to true + * `sslmode=` when `uselibpqcompat=true` + * `sslmode=disable` - sets `ssl` to false + * `sslmode=prefer` - sets `ssl` to `{ rejectUnauthorized: false }` + * `sslmode=require` - sets `ssl` to `{ rejectUnauthorized: false }` unless `sslrootcert` is specified, in which case it behaves like `verify-ca` + * `sslmode=verify-ca` - sets `ssl` to `{ checkServerIdentity: no-op }` (verify CA, but not server identity). This verifies the presented certificate against the effective CA specified in sslrootcert. + * `sslmode=verify-full` - sets `ssl` to `{}` (verify CA and server identity) + * `sslcert=` - reads data from the given file and includes the result as `ssl.cert` + * `sslkey=` - reads data from the given file and includes the result as `ssl.key` + * `sslrootcert=` - reads data from the given file and includes the result as `ssl.ca` + +A bare relative URL, such as `salesdata`, will indicate a database name while leaving other properties empty. + +> [!CAUTION] +> Choosing an sslmode other than verify-full has serious security implications. Please read https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-SSLMODE-STATEMENTS to understand the trade-offs. diff --git a/bff/node_modules/pg-connection-string/esm/index.mjs b/bff/node_modules/pg-connection-string/esm/index.mjs new file mode 100644 index 0000000..7b390c5 --- /dev/null +++ b/bff/node_modules/pg-connection-string/esm/index.mjs @@ -0,0 +1,8 @@ +// ESM wrapper for pg-connection-string +import connectionString from '../index.js' + +// Re-export the parse function +export default connectionString.parse +export const parse = connectionString.parse +export const toClientConfig = connectionString.toClientConfig +export const parseIntoClientConfig = connectionString.parseIntoClientConfig diff --git a/bff/node_modules/pg-connection-string/index.d.ts b/bff/node_modules/pg-connection-string/index.d.ts new file mode 100644 index 0000000..2ebe675 --- /dev/null +++ b/bff/node_modules/pg-connection-string/index.d.ts @@ -0,0 +1,36 @@ +import { ClientConfig } from 'pg' + +export function parse(connectionString: string, options?: Options): ConnectionOptions + +export interface Options { + // Use libpq semantics when interpreting the connection string + useLibpqCompat?: boolean +} + +interface SSLConfig { + ca?: string + cert?: string | null + key?: string + rejectUnauthorized?: boolean +} + +export interface ConnectionOptions { + host: string | null + password?: string + user?: string + port?: string | null + database: string | null | undefined + client_encoding?: string + ssl?: boolean | string | SSLConfig + + application_name?: string + fallback_application_name?: string + options?: string + keepalives?: number + + // We allow any other options to be passed through + [key: string]: unknown +} + +export function toClientConfig(config: ConnectionOptions): ClientConfig +export function parseIntoClientConfig(connectionString: string): ClientConfig diff --git a/bff/node_modules/pg-connection-string/index.js b/bff/node_modules/pg-connection-string/index.js new file mode 100644 index 0000000..29ffeaf --- /dev/null +++ b/bff/node_modules/pg-connection-string/index.js @@ -0,0 +1,231 @@ +'use strict' + +//Parse method copied from https://github.com/brianc/node-postgres +//Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com) +//MIT License + +//parses a connection string +function parse(str, options = {}) { + //unix socket + if (str.charAt(0) === '/') { + const config = str.split(' ') + return { host: config[0], database: config[1] } + } + + // Check for empty host in URL + + const config = {} + let result + let dummyHost = false + if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) { + // Ensure spaces are encoded as %20 + str = encodeURI(str).replace(/%25(\d\d)/g, '%$1') + } + + try { + try { + result = new URL(str, 'postgres://base') + } catch (e) { + // The URL is invalid so try again with a dummy host + result = new URL(str.replace('@/', '@___DUMMY___/'), 'postgres://base') + dummyHost = true + } + } catch (err) { + // Remove the input from the error message to avoid leaking sensitive information + err.input && (err.input = '*****REDACTED*****') + throw err + } + + // We'd like to use Object.fromEntries() here but Node.js 10 does not support it + for (const entry of result.searchParams.entries()) { + config[entry[0]] = entry[1] + } + + config.user = config.user || decodeURIComponent(result.username) + config.password = config.password || decodeURIComponent(result.password) + + if (result.protocol == 'socket:') { + config.host = decodeURI(result.pathname) + config.database = result.searchParams.get('db') + config.client_encoding = result.searchParams.get('encoding') + return config + } + const hostname = dummyHost ? '' : result.hostname + if (!config.host) { + // Only set the host if there is no equivalent query param. + config.host = decodeURIComponent(hostname) + } else if (hostname && /^%2f/i.test(hostname)) { + // Only prepend the hostname to the pathname if it is not a URL encoded Unix socket host. + result.pathname = hostname + result.pathname + } + if (!config.port) { + // Only set the port if there is no equivalent query param. + config.port = result.port + } + + const pathname = result.pathname.slice(1) || null + config.database = pathname ? decodeURI(pathname) : null + + if (config.ssl === 'true' || config.ssl === '1') { + config.ssl = true + } + + if (config.ssl === '0') { + config.ssl = false + } + + if (config.sslcert || config.sslkey || config.sslrootcert || config.sslmode) { + config.ssl = {} + } + + // Only try to load fs if we expect to read from the disk + const fs = config.sslcert || config.sslkey || config.sslrootcert ? require('fs') : null + + if (config.sslcert) { + config.ssl.cert = fs.readFileSync(config.sslcert).toString() + } + + if (config.sslkey) { + config.ssl.key = fs.readFileSync(config.sslkey).toString() + } + + if (config.sslrootcert) { + config.ssl.ca = fs.readFileSync(config.sslrootcert).toString() + } + + if (options.useLibpqCompat && config.uselibpqcompat) { + throw new Error('Both useLibpqCompat and uselibpqcompat are set. Please use only one of them.') + } + + if (config.uselibpqcompat === 'true' || options.useLibpqCompat) { + switch (config.sslmode) { + case 'disable': { + config.ssl = false + break + } + case 'prefer': { + config.ssl.rejectUnauthorized = false + break + } + case 'require': { + if (config.sslrootcert) { + // If a root CA is specified, behavior of `sslmode=require` will be the same as that of `verify-ca` + config.ssl.checkServerIdentity = function () {} + } else { + config.ssl.rejectUnauthorized = false + } + break + } + case 'verify-ca': { + if (!config.ssl.ca) { + throw new Error( + 'SECURITY WARNING: Using sslmode=verify-ca requires specifying a CA with sslrootcert. If a public CA is used, verify-ca allows connections to a server that somebody else may have registered with the CA, making you vulnerable to Man-in-the-Middle attacks. Either specify a custom CA certificate with sslrootcert parameter or use sslmode=verify-full for proper security.' + ) + } + config.ssl.checkServerIdentity = function () {} + break + } + case 'verify-full': { + break + } + } + } else { + switch (config.sslmode) { + case 'disable': { + config.ssl = false + break + } + case 'prefer': + case 'require': + case 'verify-ca': + case 'verify-full': { + if (config.sslmode !== 'verify-full') { + deprecatedSslModeWarning(config.sslmode) + } + break + } + case 'no-verify': { + config.ssl.rejectUnauthorized = false + break + } + } + } + + return config +} + +// convert pg-connection-string ssl config to a ClientConfig.ConnectionOptions +function toConnectionOptions(sslConfig) { + const connectionOptions = Object.entries(sslConfig).reduce((c, [key, value]) => { + // we explicitly check for undefined and null instead of `if (value)` because some + // options accept falsy values. Example: `ssl.rejectUnauthorized = false` + if (value !== undefined && value !== null) { + c[key] = value + } + + return c + }, {}) + + return connectionOptions +} + +// convert pg-connection-string config to a ClientConfig +function toClientConfig(config) { + const poolConfig = Object.entries(config).reduce((c, [key, value]) => { + if (key === 'ssl') { + const sslConfig = value + + if (typeof sslConfig === 'boolean') { + c[key] = sslConfig + } + + if (typeof sslConfig === 'object') { + c[key] = toConnectionOptions(sslConfig) + } + } else if (value !== undefined && value !== null) { + if (key === 'port') { + // when port is not specified, it is converted into an empty string + // we want to avoid NaN or empty string as a values in ClientConfig + if (value !== '') { + const v = parseInt(value, 10) + if (isNaN(v)) { + throw new Error(`Invalid ${key}: ${value}`) + } + + c[key] = v + } + } else { + c[key] = value + } + } + + return c + }, {}) + + return poolConfig +} + +// parses a connection string into ClientConfig +function parseIntoClientConfig(str) { + return toClientConfig(parse(str)) +} + +function deprecatedSslModeWarning(sslmode) { + if (!deprecatedSslModeWarning.warned && typeof process !== 'undefined' && process.emitWarning) { + deprecatedSslModeWarning.warned = true + process.emitWarning(`SECURITY WARNING: The SSL modes 'prefer', 'require', and 'verify-ca' are treated as aliases for 'verify-full'. +In the next major version (pg-connection-string v3.0.0 and pg v9.0.0), these modes will adopt standard libpq semantics, which have weaker security guarantees. + +To prepare for this change: +- If you want the current behavior, explicitly use 'sslmode=verify-full' +- If you want libpq compatibility now, use 'uselibpqcompat=true&sslmode=${sslmode}' + +See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode definitions.`) + } +} + +module.exports = parse + +parse.parse = parse +parse.toClientConfig = toClientConfig +parse.parseIntoClientConfig = parseIntoClientConfig diff --git a/bff/node_modules/pg-connection-string/package.json b/bff/node_modules/pg-connection-string/package.json new file mode 100644 index 0000000..083f44b --- /dev/null +++ b/bff/node_modules/pg-connection-string/package.json @@ -0,0 +1,52 @@ +{ + "name": "pg-connection-string", + "version": "2.12.0", + "description": "Functions for dealing with a PostgresSQL connection string", + "main": "./index.js", + "types": "./index.d.ts", + "exports": { + ".": { + "types": "./index.d.ts", + "import": "./esm/index.mjs", + "require": "./index.js", + "default": "./index.js" + } + }, + "scripts": { + "test": "nyc --reporter=lcov mocha && npm run check-coverage", + "check-coverage": "nyc check-coverage --statements 100 --branches 100 --lines 100 --functions 100" + }, + "repository": { + "type": "git", + "url": "git://github.com/brianc/node-postgres.git", + "directory": "packages/pg-connection-string" + }, + "keywords": [ + "pg", + "connection", + "string", + "parse" + ], + "author": "Blaine Bublitz (http://iceddev.com/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/brianc/node-postgres/issues" + }, + "homepage": "https://github.com/brianc/node-postgres/tree/master/packages/pg-connection-string", + "devDependencies": { + "@types/pg": "^8.12.0", + "chai": "^4.1.1", + "coveralls": "^3.0.4", + "istanbul": "^0.4.5", + "mocha": "^11.7.5", + "nyc": "^15", + "tsx": "^4.19.4", + "typescript": "^4.0.3" + }, + "files": [ + "index.js", + "index.d.ts", + "esm" + ], + "gitHead": "c9070cc8d526fca65780cedc25c1966b57cf7532" +} diff --git a/bff/node_modules/pg-int8/LICENSE b/bff/node_modules/pg-int8/LICENSE new file mode 100644 index 0000000..c56c973 --- /dev/null +++ b/bff/node_modules/pg-int8/LICENSE @@ -0,0 +1,13 @@ +Copyright © 2017, Charmander <~@charmander.me> + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/bff/node_modules/pg-int8/README.md b/bff/node_modules/pg-int8/README.md new file mode 100644 index 0000000..ef2e608 --- /dev/null +++ b/bff/node_modules/pg-int8/README.md @@ -0,0 +1,16 @@ +[![Build status][ci image]][ci] + +64-bit big-endian signed integer-to-string conversion designed for [pg][]. + +```js +const readInt8 = require('pg-int8'); + +readInt8(Buffer.from([0, 1, 2, 3, 4, 5, 6, 7])) +// '283686952306183' +``` + + + [pg]: https://github.com/brianc/node-postgres + + [ci]: https://travis-ci.org/charmander/pg-int8 + [ci image]: https://api.travis-ci.org/charmander/pg-int8.svg diff --git a/bff/node_modules/pg-int8/index.js b/bff/node_modules/pg-int8/index.js new file mode 100644 index 0000000..db77975 --- /dev/null +++ b/bff/node_modules/pg-int8/index.js @@ -0,0 +1,100 @@ +'use strict'; + +// selected so (BASE - 1) * 0x100000000 + 0xffffffff is a safe integer +var BASE = 1000000; + +function readInt8(buffer) { + var high = buffer.readInt32BE(0); + var low = buffer.readUInt32BE(4); + var sign = ''; + + if (high < 0) { + high = ~high + (low === 0); + low = (~low + 1) >>> 0; + sign = '-'; + } + + var result = ''; + var carry; + var t; + var digits; + var pad; + var l; + var i; + + { + carry = high % BASE; + high = high / BASE >>> 0; + + t = 0x100000000 * carry + low; + low = t / BASE >>> 0; + digits = '' + (t - BASE * low); + + if (low === 0 && high === 0) { + return sign + digits + result; + } + + pad = ''; + l = 6 - digits.length; + + for (i = 0; i < l; i++) { + pad += '0'; + } + + result = pad + digits + result; + } + + { + carry = high % BASE; + high = high / BASE >>> 0; + + t = 0x100000000 * carry + low; + low = t / BASE >>> 0; + digits = '' + (t - BASE * low); + + if (low === 0 && high === 0) { + return sign + digits + result; + } + + pad = ''; + l = 6 - digits.length; + + for (i = 0; i < l; i++) { + pad += '0'; + } + + result = pad + digits + result; + } + + { + carry = high % BASE; + high = high / BASE >>> 0; + + t = 0x100000000 * carry + low; + low = t / BASE >>> 0; + digits = '' + (t - BASE * low); + + if (low === 0 && high === 0) { + return sign + digits + result; + } + + pad = ''; + l = 6 - digits.length; + + for (i = 0; i < l; i++) { + pad += '0'; + } + + result = pad + digits + result; + } + + { + carry = high % BASE; + t = 0x100000000 * carry + low; + digits = '' + t % BASE; + + return sign + digits + result; + } +} + +module.exports = readInt8; diff --git a/bff/node_modules/pg-int8/package.json b/bff/node_modules/pg-int8/package.json new file mode 100644 index 0000000..4b937e1 --- /dev/null +++ b/bff/node_modules/pg-int8/package.json @@ -0,0 +1,24 @@ +{ + "name": "pg-int8", + "version": "1.0.1", + "description": "64-bit big-endian signed integer-to-string conversion", + "bugs": "https://github.com/charmander/pg-int8/issues", + "license": "ISC", + "files": [ + "index.js" + ], + "repository": { + "type": "git", + "url": "https://github.com/charmander/pg-int8" + }, + "scripts": { + "test": "tap test" + }, + "devDependencies": { + "@charmander/eslint-config-base": "1.0.2", + "tap": "10.7.3" + }, + "engines": { + "node": ">=4.0.0" + } +} diff --git a/bff/node_modules/pg-pool/LICENSE b/bff/node_modules/pg-pool/LICENSE new file mode 100644 index 0000000..4e90581 --- /dev/null +++ b/bff/node_modules/pg-pool/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 Brian M. Carlson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/pg-pool/README.md b/bff/node_modules/pg-pool/README.md new file mode 100644 index 0000000..80c6447 --- /dev/null +++ b/bff/node_modules/pg-pool/README.md @@ -0,0 +1,357 @@ +# pg-pool + +[![Build Status](https://travis-ci.org/brianc/node-pg-pool.svg?branch=master)](https://travis-ci.org/brianc/node-pg-pool) + +A connection pool for node-postgres + +## install + +```sh +npm i pg-pool pg +``` + +## use + +### create + +to use pg-pool you must first create an instance of a pool + +```js +const Pool = require('pg-pool') + +// by default the pool uses the same +// configuration as whatever `pg` version you have installed +const pool = new Pool() + +// you can pass properties to the pool +// these properties are passed unchanged to both the node-postgres Client constructor +// and the pool constructor, allowing you to fully configure the behavior of both +const pool2 = new Pool({ + database: 'postgres', + user: 'brianc', + password: 'secret!', + port: 5432, + ssl: true, + max: 20, // set pool max size to 20 + idleTimeoutMillis: 1000, // close idle clients after 1 second + connectionTimeoutMillis: 1000, // return an error after 1 second if connection could not be established + maxUses: 7500, // close (and replace) a connection after it has been used 7500 times (see below for discussion) +}) + +// you can supply a custom client constructor +// if you want to use the native postgres client +const NativeClient = require('pg').native.Client +const nativePool = new Pool({ Client: NativeClient }) + +// you can even pool pg-native clients directly +const PgNativeClient = require('pg-native') +const pgNativePool = new Pool({ Client: PgNativeClient }) +``` + +##### Note: + +The Pool constructor does not support passing a Database URL as the parameter. To use pg-pool on heroku, for example, you need to parse the URL into a config object. Here is an example of how to parse a Database URL. + +```js +const Pool = require('pg-pool') +const url = require('url') + +const params = url.parse(process.env.DATABASE_URL) +const auth = params.auth.split(':') + +const config = { + user: auth[0], + password: auth[1], + host: params.hostname, + port: params.port, + database: params.pathname.split('/')[1], + ssl: true, +} + +const pool = new Pool(config) + +/* + Transforms, 'postgres://DBuser:secret@DBHost:#####/myDB', into + config = { + user: 'DBuser', + password: 'secret', + host: 'DBHost', + port: '#####', + database: 'myDB', + ssl: true + } +*/ +``` + +### acquire clients with a promise + +pg-pool supports a fully promise-based api for acquiring clients + +```js +const pool = new Pool() +pool.connect().then((client) => { + client + .query('select $1::text as name', ['pg-pool']) + .then((res) => { + client.release() + console.log('hello from', res.rows[0].name) + }) + .catch((e) => { + client.release() + console.error('query error', e.message, e.stack) + }) +}) +``` + +### plays nice with async/await + +this ends up looking much nicer if you're using [co](https://github.com/tj/co) or async/await: + +```js +// with async/await +;(async () => { + const pool = new Pool() + const client = await pool.connect() + try { + const result = await client.query('select $1::text as name', ['brianc']) + console.log('hello from', result.rows[0]) + } finally { + client.release() + } +})().catch((e) => console.error(e.message, e.stack)) + +// with co +co(function* () { + const client = yield pool.connect() + try { + const result = yield client.query('select $1::text as name', ['brianc']) + console.log('hello from', result.rows[0]) + } finally { + client.release() + } +}).catch((e) => console.error(e.message, e.stack)) +``` + +### your new favorite helper method + +because its so common to just run a query and return the client to the pool afterward pg-pool has this built-in: + +```js +const pool = new Pool() +const time = await pool.query('SELECT NOW()') +const name = await pool.query('select $1::text as name', ['brianc']) +console.log(name.rows[0].name, 'says hello at', time.rows[0].now) +``` + +you can also use a callback here if you'd like: + +```js +const pool = new Pool() +pool.query('SELECT $1::text as name', ['brianc'], function (err, res) { + console.log(res.rows[0].name) // brianc +}) +``` + +**pro tip:** unless you need to run a transaction (which requires a single client for multiple queries) or you +have some other edge case like [streaming rows](https://github.com/brianc/node-pg-query-stream) or using a [cursor](https://github.com/brianc/node-pg-cursor) +you should almost always just use `pool.query`. Its easy, it does the right thing :tm:, and wont ever forget to return +clients back to the pool after the query is done. + +### drop-in backwards compatible + +pg-pool still and will always support the traditional callback api for acquiring a client. This is the exact API node-postgres has shipped with for years: + +```js +const pool = new Pool() +pool.connect((err, client, done) => { + if (err) return done(err) + + client.query('SELECT $1::text as name', ['pg-pool'], (err, res) => { + done() + if (err) { + return console.error('query error', err.message, err.stack) + } + console.log('hello from', res.rows[0].name) + }) +}) +``` + +### shut it down + +When you are finished with the pool if all the clients are idle the pool will close them after `config.idleTimeoutMillis` and your app +will shutdown gracefully. If you don't want to wait for the timeout you can end the pool as follows: + +```js +const pool = new Pool() +const client = await pool.connect() +console.log(await client.query('select now()')) +client.release() +await pool.end() +``` + +### a note on instances + +The pool should be a **long-lived object** in your application. Generally you'll want to instantiate one pool when your app starts up and use the same instance of the pool throughout the lifetime of your application. If you are frequently creating a new pool within your code you likely don't have your pool initialization code in the correct place. Example: + +```js +// assume this is a file in your program at ./your-app/lib/db.js + +// correct usage: create the pool and let it live +// 'globally' here, controlling access to it through exported methods +const pool = new pg.Pool() + +// this is the right way to export the query method +module.exports.query = (text, values) => { + console.log('query:', text, values) + return pool.query(text, values) +} + +// this would be the WRONG way to export the connect method +module.exports.connect = () => { + // notice how we would be creating a pool instance here + // every time we called 'connect' to get a new client? + // that's a bad thing & results in creating an unbounded + // number of pools & therefore connections + const aPool = new pg.Pool() + return aPool.connect() +} +``` + +### events + +Every instance of a `Pool` is an event emitter. These instances emit the following events: + +#### error + +Emitted whenever an idle client in the pool encounters an error. This is common when your PostgreSQL server shuts down, reboots, or a network partition otherwise causes it to become unavailable while your pool has connected clients. + +Example: + +```js +const Pool = require('pg-pool') +const pool = new Pool() + +// attach an error handler to the pool for when a connected, idle client +// receives an error by being disconnected, etc +pool.on('error', function (error, client) { + // handle this in the same way you would treat process.on('uncaughtException') + // it is supplied the error as well as the idle client which received the error +}) +``` + +#### connect + +Fired whenever the pool creates a **new** `pg.Client` instance and successfully connects it to the backend. + +Example: + +```js +const Pool = require('pg-pool') +const pool = new Pool() + +const count = 0 + +pool.on('connect', (client) => { + client.count = count++ +}) + +pool + .connect() + .then((client) => { + return client + .query('SELECT $1::int AS "clientCount"', [client.count]) + .then((res) => console.log(res.rows[0].clientCount)) // outputs 0 + .then(() => client) + }) + .then((client) => client.release()) +``` + +#### acquire + +Fired whenever a client is acquired from the pool + +Example: + +This allows you to count the number of clients which have ever been acquired from the pool. + +```js +const Pool = require('pg-pool') +const pool = new Pool() + +const acquireCount = 0 +pool.on('acquire', function (client) { + acquireCount++ +}) + +const connectCount = 0 +pool.on('connect', function () { + connectCount++ +}) + +for (let i = 0; i < 200; i++) { + pool.query('SELECT NOW()') +} + +setTimeout(function () { + console.log('connect count:', connectCount) // output: connect count: 10 + console.log('acquire count:', acquireCount) // output: acquire count: 200 +}, 100) +``` + +### environment variables + +pg-pool & node-postgres support some of the same environment variables as `psql` supports. The most common are: + +``` +PGDATABASE=my_db +PGUSER=username +PGPASSWORD="my awesome password" +PGPORT=5432 +PGSSLMODE=require +``` + +Usually I will export these into my local environment via a `.env` file with environment settings or export them in `~/.bash_profile` or something similar. This way I get configurability which works with both the postgres suite of tools (`psql`, `pg_dump`, `pg_restore`) and node, I can vary the environment variables locally and in production, and it supports the concept of a [12-factor app](http://12factor.net/) out of the box. + +## maxUses and read-replica autoscaling (e.g. AWS Aurora) + +The maxUses config option can help an application instance rebalance load against a replica set that has been auto-scaled after the connection pool is already full of healthy connections. + +The mechanism here is that a connection is considered "expended" after it has been acquired and released `maxUses` number of times. Depending on the load on your system, this means there will be an approximate time in which any given connection will live, thus creating a window for rebalancing. + +Imagine a scenario where you have 10 app instances providing an API running against a replica cluster of 3 that are accessed via a round-robin DNS entry. Each instance runs a connection pool size of 20. With an ambient load of 50 requests per second, the connection pool will likely fill up in a few minutes with healthy connections. + +If you have weekly bursts of traffic which peak at 1,000 requests per second, you might want to grow your replicas to 10 during this period. Without setting `maxUses`, the new replicas will not be adopted by the app servers without an intervention -- namely, restarting each in turn in order to build up new connection pools that are balanced against all the replicas. Adding additional app server instances will help to some extent because they will adopt all the replicas in an even way, but the initial app servers will continue to focus additional load on the original replicas. + +This is where the `maxUses` configuration option comes into play. Setting `maxUses` to 7500 will ensure that over a period of 30 minutes or so the new replicas will be adopted as the pre-existing connections are closed and replaced with new ones, thus creating a window for eventual balance. + +You'll want to test based on your own scenarios, but one way to make a first guess at `maxUses` is to identify an acceptable window for rebalancing and then solve for the value: + +``` +maxUses = rebalanceWindowSeconds * totalRequestsPerSecond / numAppInstances / poolSize +``` + +In the example above, assuming we acquire and release 1 connection per request and we are aiming for a 30 minute rebalancing window: + +``` +maxUses = rebalanceWindowSeconds * totalRequestsPerSecond / numAppInstances / poolSize + 7200 = 1800 * 1000 / 10 / 25 +``` + +## tests + +To run tests clone the repo, `npm i` in the working dir, and then run `npm test` + +## contributions + +I love contributions. Please make sure they have tests, and submit a PR. If you're not sure if the issue is worth it or will be accepted it never hurts to open an issue to begin the conversation. If you're interested in keeping up with node-postgres releated stuff, you can follow me on twitter at [@briancarlson](https://twitter.com/briancarlson) - I generally announce any noteworthy updates there. + +## license + +The MIT License (MIT) +Copyright (c) 2016 Brian M. Carlson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/pg-pool/esm/index.mjs b/bff/node_modules/pg-pool/esm/index.mjs new file mode 100644 index 0000000..a97fb62 --- /dev/null +++ b/bff/node_modules/pg-pool/esm/index.mjs @@ -0,0 +1,5 @@ +// ESM wrapper for pg-pool +import Pool from '../index.js' + +// Export as default only to match CJS module +export default Pool diff --git a/bff/node_modules/pg-pool/index.js b/bff/node_modules/pg-pool/index.js new file mode 100644 index 0000000..2fbdb78 --- /dev/null +++ b/bff/node_modules/pg-pool/index.js @@ -0,0 +1,517 @@ +'use strict' +const EventEmitter = require('events').EventEmitter + +const NOOP = function () {} + +const removeWhere = (list, predicate) => { + const i = list.findIndex(predicate) + + return i === -1 ? undefined : list.splice(i, 1)[0] +} + +class IdleItem { + constructor(client, idleListener, timeoutId) { + this.client = client + this.idleListener = idleListener + this.timeoutId = timeoutId + } +} + +class PendingItem { + constructor(callback) { + this.callback = callback + } +} + +function throwOnDoubleRelease() { + throw new Error('Release called on client which has already been released to the pool.') +} + +function promisify(Promise, callback) { + if (callback) { + return { callback: callback, result: undefined } + } + let rej + let res + const cb = function (err, client) { + err ? rej(err) : res(client) + } + const result = new Promise(function (resolve, reject) { + res = resolve + rej = reject + }).catch((err) => { + // replace the stack trace that leads to `TCP.onStreamRead` with one that leads back to the + // application that created the query + Error.captureStackTrace(err) + throw err + }) + return { callback: cb, result: result } +} + +function makeIdleListener(pool, client) { + return function idleListener(err) { + err.client = client + + client.removeListener('error', idleListener) + client.on('error', () => { + pool.log('additional client error after disconnection due to error', err) + }) + pool._remove(client) + // TODO - document that once the pool emits an error + // the client has already been closed & purged and is unusable + pool.emit('error', err, client) + } +} + +class Pool extends EventEmitter { + constructor(options, Client) { + super() + this.options = Object.assign({}, options) + + if (options != null && 'password' in options) { + // "hiding" the password so it doesn't show up in stack traces + // or if the client is console.logged + Object.defineProperty(this.options, 'password', { + configurable: true, + enumerable: false, + writable: true, + value: options.password, + }) + } + if (options != null && options.ssl && options.ssl.key) { + // "hiding" the ssl->key so it doesn't show up in stack traces + // or if the client is console.logged + Object.defineProperty(this.options.ssl, 'key', { + enumerable: false, + }) + } + + this.options.max = this.options.max || this.options.poolSize || 10 + this.options.min = this.options.min || 0 + this.options.maxUses = this.options.maxUses || Infinity + this.options.allowExitOnIdle = this.options.allowExitOnIdle || false + this.options.maxLifetimeSeconds = this.options.maxLifetimeSeconds || 0 + this.log = this.options.log || function () {} + this.Client = this.options.Client || Client || require('pg').Client + this.Promise = this.options.Promise || global.Promise + + if (typeof this.options.idleTimeoutMillis === 'undefined') { + this.options.idleTimeoutMillis = 10000 + } + + this._clients = [] + this._idle = [] + this._expired = new WeakSet() + this._pendingQueue = [] + this._endCallback = undefined + this.ending = false + this.ended = false + } + + _promiseTry(f) { + const Promise = this.Promise + if (typeof Promise.try === 'function') { + return Promise.try(f) + } + return new Promise((resolve) => resolve(f())) + } + + _isFull() { + return this._clients.length >= this.options.max + } + + _isAboveMin() { + return this._clients.length > this.options.min + } + + _pulseQueue() { + this.log('pulse queue') + if (this.ended) { + this.log('pulse queue ended') + return + } + if (this.ending) { + this.log('pulse queue on ending') + if (this._idle.length) { + this._idle.slice().map((item) => { + this._remove(item.client) + }) + } + if (!this._clients.length) { + this.ended = true + this._endCallback() + } + return + } + + // if we don't have any waiting, do nothing + if (!this._pendingQueue.length) { + this.log('no queued requests') + return + } + // if we don't have any idle clients and we have no more room do nothing + if (!this._idle.length && this._isFull()) { + return + } + const pendingItem = this._pendingQueue.shift() + if (this._idle.length) { + const idleItem = this._idle.pop() + clearTimeout(idleItem.timeoutId) + const client = idleItem.client + client.ref && client.ref() + const idleListener = idleItem.idleListener + + return this._acquireClient(client, pendingItem, idleListener, false) + } + if (!this._isFull()) { + return this.newClient(pendingItem) + } + throw new Error('unexpected condition') + } + + _remove(client, callback) { + const removed = removeWhere(this._idle, (item) => item.client === client) + + if (removed !== undefined) { + clearTimeout(removed.timeoutId) + } + + this._clients = this._clients.filter((c) => c !== client) + const context = this + client.end(() => { + context.emit('remove', client) + + if (typeof callback === 'function') { + callback() + } + }) + } + + connect(cb) { + if (this.ending) { + const err = new Error('Cannot use a pool after calling end on the pool') + return cb ? cb(err) : this.Promise.reject(err) + } + + const response = promisify(this.Promise, cb) + const result = response.result + + // if we don't have to connect a new client, don't do so + if (this._isFull() || this._idle.length) { + // if we have idle clients schedule a pulse immediately + if (this._idle.length) { + process.nextTick(() => this._pulseQueue()) + } + + if (!this.options.connectionTimeoutMillis) { + this._pendingQueue.push(new PendingItem(response.callback)) + return result + } + + const queueCallback = (err, res, done) => { + clearTimeout(tid) + response.callback(err, res, done) + } + + const pendingItem = new PendingItem(queueCallback) + + // set connection timeout on checking out an existing client + const tid = setTimeout(() => { + // remove the callback from pending waiters because + // we're going to call it with a timeout error + removeWhere(this._pendingQueue, (i) => i.callback === queueCallback) + pendingItem.timedOut = true + response.callback(new Error('timeout exceeded when trying to connect')) + }, this.options.connectionTimeoutMillis) + + if (tid.unref) { + tid.unref() + } + + this._pendingQueue.push(pendingItem) + return result + } + + this.newClient(new PendingItem(response.callback)) + + return result + } + + newClient(pendingItem) { + const client = new this.Client(this.options) + this._clients.push(client) + const idleListener = makeIdleListener(this, client) + + this.log('checking client timeout') + + // connection timeout logic + let tid + let timeoutHit = false + if (this.options.connectionTimeoutMillis) { + tid = setTimeout(() => { + if (client.connection) { + this.log('ending client due to timeout') + timeoutHit = true + client.connection.stream.destroy() + } else if (!client.isConnected()) { + this.log('ending client due to timeout') + timeoutHit = true + // force kill the node driver, and let libpq do its teardown + client.end() + } + }, this.options.connectionTimeoutMillis) + } + + this.log('connecting new client') + client.connect((err) => { + if (tid) { + clearTimeout(tid) + } + client.on('error', idleListener) + if (err) { + this.log('client failed to connect', err) + // remove the dead client from our list of clients + this._clients = this._clients.filter((c) => c !== client) + if (timeoutHit) { + err = new Error('Connection terminated due to connection timeout', { cause: err }) + } + + // this client won’t be released, so move on immediately + this._pulseQueue() + + if (!pendingItem.timedOut) { + pendingItem.callback(err, undefined, NOOP) + } + } else { + this.log('new client connected') + + if (this.options.onConnect) { + this._promiseTry(() => this.options.onConnect(client)).then( + () => { + this._afterConnect(client, pendingItem, idleListener) + }, + (hookErr) => { + this._clients = this._clients.filter((c) => c !== client) + client.end(() => { + this._pulseQueue() + if (!pendingItem.timedOut) { + pendingItem.callback(hookErr, undefined, NOOP) + } + }) + } + ) + return + } + + return this._afterConnect(client, pendingItem, idleListener) + } + }) + } + + _afterConnect(client, pendingItem, idleListener) { + if (this.options.maxLifetimeSeconds !== 0) { + const maxLifetimeTimeout = setTimeout(() => { + this.log('ending client due to expired lifetime') + this._expired.add(client) + const idleIndex = this._idle.findIndex((idleItem) => idleItem.client === client) + if (idleIndex !== -1) { + this._acquireClient( + client, + new PendingItem((err, client, clientRelease) => clientRelease()), + idleListener, + false + ) + } + }, this.options.maxLifetimeSeconds * 1000) + + maxLifetimeTimeout.unref() + client.once('end', () => clearTimeout(maxLifetimeTimeout)) + } + + return this._acquireClient(client, pendingItem, idleListener, true) + } + + // acquire a client for a pending work item + _acquireClient(client, pendingItem, idleListener, isNew) { + if (isNew) { + this.emit('connect', client) + } + + this.emit('acquire', client) + + client.release = this._releaseOnce(client, idleListener) + + client.removeListener('error', idleListener) + + if (!pendingItem.timedOut) { + if (isNew && this.options.verify) { + this.options.verify(client, (err) => { + if (err) { + client.release(err) + return pendingItem.callback(err, undefined, NOOP) + } + + pendingItem.callback(undefined, client, client.release) + }) + } else { + pendingItem.callback(undefined, client, client.release) + } + } else { + if (isNew && this.options.verify) { + this.options.verify(client, client.release) + } else { + client.release() + } + } + } + + // returns a function that wraps _release and throws if called more than once + _releaseOnce(client, idleListener) { + let released = false + + return (err) => { + if (released) { + throwOnDoubleRelease() + } + + released = true + this._release(client, idleListener, err) + } + } + + // release a client back to the poll, include an error + // to remove it from the pool + _release(client, idleListener, err) { + client.on('error', idleListener) + + client._poolUseCount = (client._poolUseCount || 0) + 1 + + this.emit('release', err, client) + + // TODO(bmc): expose a proper, public interface _queryable and _ending + if (err || this.ending || !client._queryable || client._ending || client._poolUseCount >= this.options.maxUses) { + if (client._poolUseCount >= this.options.maxUses) { + this.log('remove expended client') + } + + return this._remove(client, this._pulseQueue.bind(this)) + } + + const isExpired = this._expired.has(client) + if (isExpired) { + this.log('remove expired client') + this._expired.delete(client) + return this._remove(client, this._pulseQueue.bind(this)) + } + + // idle timeout + let tid + if (this.options.idleTimeoutMillis && this._isAboveMin()) { + tid = setTimeout(() => { + if (this._isAboveMin()) { + this.log('remove idle client') + this._remove(client, this._pulseQueue.bind(this)) + } + }, this.options.idleTimeoutMillis) + + if (this.options.allowExitOnIdle) { + // allow Node to exit if this is all that's left + tid.unref() + } + } + + if (this.options.allowExitOnIdle) { + client.unref() + } + + this._idle.push(new IdleItem(client, idleListener, tid)) + this._pulseQueue() + } + + query(text, values, cb) { + // guard clause against passing a function as the first parameter + if (typeof text === 'function') { + const response = promisify(this.Promise, text) + setImmediate(function () { + return response.callback(new Error('Passing a function as the first parameter to pool.query is not supported')) + }) + return response.result + } + + // allow plain text query without values + if (typeof values === 'function') { + cb = values + values = undefined + } + const response = promisify(this.Promise, cb) + cb = response.callback + + this.connect((err, client) => { + if (err) { + return cb(err) + } + + let clientReleased = false + const onError = (err) => { + if (clientReleased) { + return + } + clientReleased = true + client.release(err) + cb(err) + } + + client.once('error', onError) + this.log('dispatching query') + try { + client.query(text, values, (err, res) => { + this.log('query dispatched') + client.removeListener('error', onError) + if (clientReleased) { + return + } + clientReleased = true + client.release(err) + if (err) { + return cb(err) + } + return cb(undefined, res) + }) + } catch (err) { + client.release(err) + return cb(err) + } + }) + return response.result + } + + end(cb) { + this.log('ending') + if (this.ending) { + const err = new Error('Called end on pool more than once') + return cb ? cb(err) : this.Promise.reject(err) + } + this.ending = true + const promised = promisify(this.Promise, cb) + this._endCallback = promised.callback + this._pulseQueue() + return promised.result + } + + get waitingCount() { + return this._pendingQueue.length + } + + get idleCount() { + return this._idle.length + } + + get expiredCount() { + return this._clients.reduce((acc, client) => acc + (this._expired.has(client) ? 1 : 0), 0) + } + + get totalCount() { + return this._clients.length + } +} +module.exports = Pool diff --git a/bff/node_modules/pg-pool/package.json b/bff/node_modules/pg-pool/package.json new file mode 100644 index 0000000..a7fe587 --- /dev/null +++ b/bff/node_modules/pg-pool/package.json @@ -0,0 +1,51 @@ +{ + "name": "pg-pool", + "version": "3.13.0", + "description": "Connection pool for node-postgres", + "main": "index.js", + "exports": { + ".": { + "import": "./esm/index.mjs", + "require": "./index.js", + "default": "./index.js" + } + }, + "directories": { + "test": "test" + }, + "scripts": { + "test": " node_modules/.bin/mocha" + }, + "repository": { + "type": "git", + "url": "git://github.com/brianc/node-postgres.git", + "directory": "packages/pg-pool" + }, + "keywords": [ + "pg", + "postgres", + "pool", + "database" + ], + "author": "Brian M. Carlson", + "license": "MIT", + "bugs": { + "url": "https://github.com/brianc/node-postgres/issues" + }, + "homepage": "https://github.com/brianc/node-postgres/tree/master/packages/pg-pool#readme", + "devDependencies": { + "bluebird": "3.7.2", + "co": "4.6.0", + "expect.js": "0.3.1", + "lodash": "^4.17.11", + "mocha": "^11.7.5" + }, + "peerDependencies": { + "pg": ">=8.0" + }, + "files": [ + "index.js", + "esm" + ], + "gitHead": "c9070cc8d526fca65780cedc25c1966b57cf7532" +} diff --git a/bff/node_modules/pg-protocol/LICENSE b/bff/node_modules/pg-protocol/LICENSE new file mode 100644 index 0000000..5c14056 --- /dev/null +++ b/bff/node_modules/pg-protocol/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2010 - 2021 Brian Carlson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/pg-protocol/README.md b/bff/node_modules/pg-protocol/README.md new file mode 100644 index 0000000..8c52e40 --- /dev/null +++ b/bff/node_modules/pg-protocol/README.md @@ -0,0 +1,3 @@ +# pg-protocol + +Low level postgres wire protocol parser and serializer written in Typescript. Used by node-postgres. Needs more documentation. :smile: diff --git a/bff/node_modules/pg-protocol/esm/index.js b/bff/node_modules/pg-protocol/esm/index.js new file mode 100644 index 0000000..c52807d --- /dev/null +++ b/bff/node_modules/pg-protocol/esm/index.js @@ -0,0 +1,11 @@ +// ESM wrapper for pg-protocol +import * as protocol from '../dist/index.js' + +// Re-export all the properties +export const DatabaseError = protocol.DatabaseError +export const SASL = protocol.SASL +export const serialize = protocol.serialize +export const parse = protocol.parse + +// Re-export the default +export default protocol diff --git a/bff/node_modules/pg-protocol/package.json b/bff/node_modules/pg-protocol/package.json new file mode 100644 index 0000000..42a565c --- /dev/null +++ b/bff/node_modules/pg-protocol/package.json @@ -0,0 +1,45 @@ +{ + "name": "pg-protocol", + "version": "1.13.0", + "description": "The postgres client/server binary protocol, implemented in TypeScript", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "import": "./esm/index.js", + "require": "./dist/index.js", + "default": "./dist/index.js" + }, + "./dist/*": "./dist/*.js", + "./dist/*.js": "./dist/*.js" + }, + "license": "MIT", + "devDependencies": { + "@types/chai": "^4.2.7", + "@types/mocha": "^10.0.10", + "@types/node": "^12.12.21", + "chai": "^4.2.0", + "chunky": "^0.0.0", + "mocha": "^11.7.5", + "ts-node": "^8.5.4", + "typescript": "^4.0.3" + }, + "scripts": { + "test": "mocha dist/**/*.test.js", + "build": "tsc", + "build:watch": "tsc --watch", + "prepublish": "yarn build", + "pretest": "yarn build" + }, + "repository": { + "type": "git", + "url": "git://github.com/brianc/node-postgres.git", + "directory": "packages/pg-protocol" + }, + "files": [ + "/dist/*{js,ts,map}", + "/src", + "/esm" + ], + "gitHead": "c9070cc8d526fca65780cedc25c1966b57cf7532" +} diff --git a/bff/node_modules/pg-protocol/src/b.ts b/bff/node_modules/pg-protocol/src/b.ts new file mode 100644 index 0000000..c8a2411 --- /dev/null +++ b/bff/node_modules/pg-protocol/src/b.ts @@ -0,0 +1,25 @@ +// file for microbenchmarking + +import { BufferReader } from './buffer-reader' + +const LOOPS = 1000 +let count = 0 +const start = performance.now() + +const reader = new BufferReader() +const buffer = Buffer.from([33, 33, 33, 33, 33, 33, 33, 0]) + +const run = () => { + if (count > LOOPS) { + console.log(performance.now() - start) + return + } + count++ + for (let i = 0; i < LOOPS; i++) { + reader.setBuffer(0, buffer) + reader.cstring() + } + setImmediate(run) +} + +run() diff --git a/bff/node_modules/pg-protocol/src/buffer-reader.ts b/bff/node_modules/pg-protocol/src/buffer-reader.ts new file mode 100644 index 0000000..b89aceb --- /dev/null +++ b/bff/node_modules/pg-protocol/src/buffer-reader.ts @@ -0,0 +1,58 @@ +export class BufferReader { + private buffer: Buffer = Buffer.allocUnsafe(0) + + // TODO(bmc): support non-utf8 encoding? + private encoding: string = 'utf-8' + + constructor(private offset: number = 0) {} + + public setBuffer(offset: number, buffer: Buffer): void { + this.offset = offset + this.buffer = buffer + } + + public int16(): number { + const result = this.buffer.readInt16BE(this.offset) + this.offset += 2 + return result + } + + public byte(): number { + const result = this.buffer[this.offset] + this.offset++ + return result + } + + public int32(): number { + const result = this.buffer.readInt32BE(this.offset) + this.offset += 4 + return result + } + + public uint32(): number { + const result = this.buffer.readUInt32BE(this.offset) + this.offset += 4 + return result + } + + public string(length: number): string { + const result = this.buffer.toString(this.encoding, this.offset, this.offset + length) + this.offset += length + return result + } + + public cstring(): string { + const start = this.offset + let end = start + // eslint-disable-next-line no-empty + while (this.buffer[end++] !== 0) {} + this.offset = end + return this.buffer.toString(this.encoding, start, end - 1) + } + + public bytes(length: number): Buffer { + const result = this.buffer.slice(this.offset, this.offset + length) + this.offset += length + return result + } +} diff --git a/bff/node_modules/pg-protocol/src/buffer-writer.ts b/bff/node_modules/pg-protocol/src/buffer-writer.ts new file mode 100644 index 0000000..cebb0d9 --- /dev/null +++ b/bff/node_modules/pg-protocol/src/buffer-writer.ts @@ -0,0 +1,85 @@ +//binary data writer tuned for encoding binary specific to the postgres binary protocol + +export class Writer { + private buffer: Buffer + private offset: number = 5 + private headerPosition: number = 0 + constructor(private size = 256) { + this.buffer = Buffer.allocUnsafe(size) + } + + private ensure(size: number): void { + const remaining = this.buffer.length - this.offset + if (remaining < size) { + const oldBuffer = this.buffer + // exponential growth factor of around ~ 1.5 + // https://stackoverflow.com/questions/2269063/buffer-growth-strategy + const newSize = oldBuffer.length + (oldBuffer.length >> 1) + size + this.buffer = Buffer.allocUnsafe(newSize) + oldBuffer.copy(this.buffer) + } + } + + public addInt32(num: number): Writer { + this.ensure(4) + this.buffer[this.offset++] = (num >>> 24) & 0xff + this.buffer[this.offset++] = (num >>> 16) & 0xff + this.buffer[this.offset++] = (num >>> 8) & 0xff + this.buffer[this.offset++] = (num >>> 0) & 0xff + return this + } + + public addInt16(num: number): Writer { + this.ensure(2) + this.buffer[this.offset++] = (num >>> 8) & 0xff + this.buffer[this.offset++] = (num >>> 0) & 0xff + return this + } + + public addCString(string: string): Writer { + if (!string) { + this.ensure(1) + } else { + const len = Buffer.byteLength(string) + this.ensure(len + 1) // +1 for null terminator + this.buffer.write(string, this.offset, 'utf-8') + this.offset += len + } + + this.buffer[this.offset++] = 0 // null terminator + return this + } + + public addString(string: string = ''): Writer { + const len = Buffer.byteLength(string) + this.ensure(len) + this.buffer.write(string, this.offset) + this.offset += len + return this + } + + public add(otherBuffer: Buffer): Writer { + this.ensure(otherBuffer.length) + otherBuffer.copy(this.buffer, this.offset) + this.offset += otherBuffer.length + return this + } + + private join(code?: number): Buffer { + if (code) { + this.buffer[this.headerPosition] = code + //length is everything in this packet minus the code + const length = this.offset - (this.headerPosition + 1) + this.buffer.writeInt32BE(length, this.headerPosition + 1) + } + return this.buffer.slice(code ? 0 : 5, this.offset) + } + + public flush(code?: number): Buffer { + const result = this.join(code) + this.offset = 5 + this.headerPosition = 0 + this.buffer = Buffer.allocUnsafe(this.size) + return result + } +} diff --git a/bff/node_modules/pg-protocol/src/inbound-parser.test.ts b/bff/node_modules/pg-protocol/src/inbound-parser.test.ts new file mode 100644 index 0000000..285f4bf --- /dev/null +++ b/bff/node_modules/pg-protocol/src/inbound-parser.test.ts @@ -0,0 +1,575 @@ +import buffers from './testing/test-buffers' +import BufferList from './testing/buffer-list' +import { parse } from '.' +import assert from 'assert' +import { PassThrough } from 'stream' +import { BackendMessage } from './messages' +import { Parser } from './parser' + +const authOkBuffer = buffers.authenticationOk() +const paramStatusBuffer = buffers.parameterStatus('client_encoding', 'UTF8') +const readyForQueryBuffer = buffers.readyForQuery() +const backendKeyDataBuffer = buffers.backendKeyData(1, 2) +const commandCompleteBuffer = buffers.commandComplete('SELECT 3') +const parseCompleteBuffer = buffers.parseComplete() +const bindCompleteBuffer = buffers.bindComplete() +const portalSuspendedBuffer = buffers.portalSuspended() + +const row1 = { + name: 'id', + tableID: 1, + attributeNumber: 2, + dataTypeID: 3, + dataTypeSize: 4, + typeModifier: 5, + formatCode: 0, +} +const oneRowDescBuff = buffers.rowDescription([row1]) +row1.name = 'bang' + +const twoRowBuf = buffers.rowDescription([ + row1, + { + name: 'whoah', + tableID: 10, + attributeNumber: 11, + dataTypeID: 12, + dataTypeSize: 13, + typeModifier: 14, + formatCode: 0, + }, +]) + +const rowWithBigOids = { + name: 'bigoid', + tableID: 3000000001, + attributeNumber: 2, + dataTypeID: 3000000003, + dataTypeSize: 4, + typeModifier: 5, + formatCode: 0, +} +const bigOidDescBuff = buffers.rowDescription([rowWithBigOids]) + +const emptyRowFieldBuf = buffers.dataRow([]) + +const oneFieldBuf = buffers.dataRow(['test']) + +const expectedAuthenticationOkayMessage = { + name: 'authenticationOk', + length: 8, +} + +const expectedParameterStatusMessage = { + name: 'parameterStatus', + parameterName: 'client_encoding', + parameterValue: 'UTF8', + length: 25, +} + +const expectedBackendKeyDataMessage = { + name: 'backendKeyData', + processID: 1, + secretKey: 2, +} + +const expectedReadyForQueryMessage = { + name: 'readyForQuery', + length: 5, + status: 'I', +} + +const expectedCommandCompleteMessage = { + name: 'commandComplete', + length: 13, + text: 'SELECT 3', +} +const emptyRowDescriptionBuffer = new BufferList() + .addInt16(0) // number of fields + .join(true, 'T') + +const expectedEmptyRowDescriptionMessage = { + name: 'rowDescription', + length: 6, + fieldCount: 0, + fields: [], +} +const expectedOneRowMessage = { + name: 'rowDescription', + length: 27, + fieldCount: 1, + fields: [ + { + name: 'id', + tableID: 1, + columnID: 2, + dataTypeID: 3, + dataTypeSize: 4, + dataTypeModifier: 5, + format: 'text', + }, + ], +} + +const expectedTwoRowMessage = { + name: 'rowDescription', + length: 53, + fieldCount: 2, + fields: [ + { + name: 'bang', + tableID: 1, + columnID: 2, + dataTypeID: 3, + dataTypeSize: 4, + dataTypeModifier: 5, + format: 'text', + }, + { + name: 'whoah', + tableID: 10, + columnID: 11, + dataTypeID: 12, + dataTypeSize: 13, + dataTypeModifier: 14, + format: 'text', + }, + ], +} +const expectedBigOidMessage = { + name: 'rowDescription', + length: 31, + fieldCount: 1, + fields: [ + { + name: 'bigoid', + tableID: 3000000001, + columnID: 2, + dataTypeID: 3000000003, + dataTypeSize: 4, + dataTypeModifier: 5, + format: 'text', + }, + ], +} + +const emptyParameterDescriptionBuffer = new BufferList() + .addInt16(0) // number of parameters + .join(true, 't') + +const oneParameterDescBuf = buffers.parameterDescription([1111]) + +const twoParameterDescBuf = buffers.parameterDescription([2222, 3333]) + +const expectedEmptyParameterDescriptionMessage = { + name: 'parameterDescription', + length: 6, + parameterCount: 0, + dataTypeIDs: [], +} + +const expectedOneParameterMessage = { + name: 'parameterDescription', + length: 10, + parameterCount: 1, + dataTypeIDs: [1111], +} + +const expectedTwoParameterMessage = { + name: 'parameterDescription', + length: 14, + parameterCount: 2, + dataTypeIDs: [2222, 3333], +} + +const testForMessage = function (buffer: Buffer, expectedMessage: any) { + it('receives and parses ' + expectedMessage.name, async () => { + const messages = await parseBuffers([buffer]) + const [lastMessage] = messages + + for (const key in expectedMessage) { + assert.deepEqual((lastMessage as any)[key], expectedMessage[key]) + } + }) +} + +const plainPasswordBuffer = buffers.authenticationCleartextPassword() +const md5PasswordBuffer = buffers.authenticationMD5Password() +const SASLBuffer = buffers.authenticationSASL() +const SASLContinueBuffer = buffers.authenticationSASLContinue() +const SASLFinalBuffer = buffers.authenticationSASLFinal() + +const expectedPlainPasswordMessage = { + name: 'authenticationCleartextPassword', +} + +const expectedMD5PasswordMessage = { + name: 'authenticationMD5Password', + salt: Buffer.from([1, 2, 3, 4]), +} + +const expectedSASLMessage = { + name: 'authenticationSASL', + mechanisms: ['SCRAM-SHA-256'], +} + +const expectedSASLContinueMessage = { + name: 'authenticationSASLContinue', + data: 'data', +} + +const expectedSASLFinalMessage = { + name: 'authenticationSASLFinal', + data: 'data', +} + +const notificationResponseBuffer = buffers.notification(4, 'hi', 'boom') +const expectedNotificationResponseMessage = { + name: 'notification', + processId: 4, + channel: 'hi', + payload: 'boom', +} + +const parseBuffers = async (buffers: Buffer[]): Promise => { + const stream = new PassThrough() + for (const buffer of buffers) { + stream.write(buffer) + } + stream.end() + const msgs: BackendMessage[] = [] + await parse(stream, (msg) => msgs.push(msg)) + return msgs +} + +describe('PgPacketStream', function () { + testForMessage(authOkBuffer, expectedAuthenticationOkayMessage) + testForMessage(plainPasswordBuffer, expectedPlainPasswordMessage) + testForMessage(md5PasswordBuffer, expectedMD5PasswordMessage) + testForMessage(SASLBuffer, expectedSASLMessage) + testForMessage(SASLContinueBuffer, expectedSASLContinueMessage) + + // this exercises a found bug in the parser: + // https://github.com/brianc/node-postgres/pull/2210#issuecomment-627626084 + // and adds a test which is deterministic, rather than relying on network packet chunking + const extendedSASLContinueBuffer = Buffer.concat([SASLContinueBuffer, Buffer.from([1, 2, 3, 4])]) + testForMessage(extendedSASLContinueBuffer, expectedSASLContinueMessage) + + testForMessage(SASLFinalBuffer, expectedSASLFinalMessage) + + // this exercises a found bug in the parser: + // https://github.com/brianc/node-postgres/pull/2210#issuecomment-627626084 + // and adds a test which is deterministic, rather than relying on network packet chunking + const extendedSASLFinalBuffer = Buffer.concat([SASLFinalBuffer, Buffer.from([1, 2, 4, 5])]) + testForMessage(extendedSASLFinalBuffer, expectedSASLFinalMessage) + + testForMessage(paramStatusBuffer, expectedParameterStatusMessage) + testForMessage(backendKeyDataBuffer, expectedBackendKeyDataMessage) + testForMessage(readyForQueryBuffer, expectedReadyForQueryMessage) + testForMessage(commandCompleteBuffer, expectedCommandCompleteMessage) + testForMessage(notificationResponseBuffer, expectedNotificationResponseMessage) + testForMessage(buffers.emptyQuery(), { + name: 'emptyQuery', + length: 4, + }) + + testForMessage(Buffer.from([0x6e, 0, 0, 0, 4]), { + name: 'noData', + }) + + describe('rowDescription messages', function () { + testForMessage(emptyRowDescriptionBuffer, expectedEmptyRowDescriptionMessage) + testForMessage(oneRowDescBuff, expectedOneRowMessage) + testForMessage(twoRowBuf, expectedTwoRowMessage) + testForMessage(bigOidDescBuff, expectedBigOidMessage) + }) + + describe('parameterDescription messages', function () { + testForMessage(emptyParameterDescriptionBuffer, expectedEmptyParameterDescriptionMessage) + testForMessage(oneParameterDescBuf, expectedOneParameterMessage) + testForMessage(twoParameterDescBuf, expectedTwoParameterMessage) + }) + + describe('parsing rows', function () { + describe('parsing empty row', function () { + testForMessage(emptyRowFieldBuf, { + name: 'dataRow', + fieldCount: 0, + }) + }) + + describe('parsing data row with fields', function () { + testForMessage(oneFieldBuf, { + name: 'dataRow', + fieldCount: 1, + fields: ['test'], + }) + }) + }) + + describe('notice message', function () { + // this uses the same logic as error message + const buff = buffers.notice([{ type: 'C', value: 'code' }]) + testForMessage(buff, { + name: 'notice', + code: 'code', + }) + }) + + testForMessage(buffers.error([]), { + name: 'error', + }) + + describe('with all the fields', function () { + const buffer = buffers.error([ + { + type: 'S', + value: 'ERROR', + }, + { + type: 'C', + value: 'code', + }, + { + type: 'M', + value: 'message', + }, + { + type: 'D', + value: 'details', + }, + { + type: 'H', + value: 'hint', + }, + { + type: 'P', + value: '100', + }, + { + type: 'p', + value: '101', + }, + { + type: 'q', + value: 'query', + }, + { + type: 'W', + value: 'where', + }, + { + type: 'F', + value: 'file', + }, + { + type: 'L', + value: 'line', + }, + { + type: 'R', + value: 'routine', + }, + { + type: 'Z', // ignored + value: 'alsdkf', + }, + ]) + + testForMessage(buffer, { + name: 'error', + severity: 'ERROR', + code: 'code', + message: 'message', + detail: 'details', + hint: 'hint', + position: '100', + internalPosition: '101', + internalQuery: 'query', + where: 'where', + file: 'file', + line: 'line', + routine: 'routine', + }) + }) + + testForMessage(parseCompleteBuffer, { + name: 'parseComplete', + }) + + testForMessage(bindCompleteBuffer, { + name: 'bindComplete', + }) + + testForMessage(bindCompleteBuffer, { + name: 'bindComplete', + }) + + testForMessage(buffers.closeComplete(), { + name: 'closeComplete', + }) + + describe('parses portal suspended message', function () { + testForMessage(portalSuspendedBuffer, { + name: 'portalSuspended', + }) + }) + + describe('parses replication start message', function () { + testForMessage(Buffer.from([0x57, 0x00, 0x00, 0x00, 0x04]), { + name: 'replicationStart', + length: 4, + }) + }) + + describe('copy', () => { + testForMessage(buffers.copyIn(0), { + name: 'copyInResponse', + length: 7, + binary: false, + columnTypes: [], + }) + + testForMessage(buffers.copyIn(2), { + name: 'copyInResponse', + length: 11, + binary: false, + columnTypes: [0, 1], + }) + + testForMessage(buffers.copyOut(0), { + name: 'copyOutResponse', + length: 7, + binary: false, + columnTypes: [], + }) + + testForMessage(buffers.copyOut(3), { + name: 'copyOutResponse', + length: 13, + binary: false, + columnTypes: [0, 1, 2], + }) + + testForMessage(buffers.copyDone(), { + name: 'copyDone', + length: 4, + }) + + testForMessage(buffers.copyData(Buffer.from([5, 6, 7])), { + name: 'copyData', + length: 7, + chunk: Buffer.from([5, 6, 7]), + }) + }) + + // since the data message on a stream can randomly divide the incomming + // tcp packets anywhere, we need to make sure we can parse every single + // split on a tcp message + describe('split buffer, single message parsing', function () { + const fullBuffer = buffers.dataRow([null, 'bang', 'zug zug', null, '!']) + + it('parses when full buffer comes in', async function () { + const messages = await parseBuffers([fullBuffer]) + const message = messages[0] as any + assert.equal(message.fields.length, 5) + assert.equal(message.fields[0], null) + assert.equal(message.fields[1], 'bang') + assert.equal(message.fields[2], 'zug zug') + assert.equal(message.fields[3], null) + assert.equal(message.fields[4], '!') + }) + + const testMessageReceivedAfterSplitAt = async function (split: number) { + const firstBuffer = Buffer.alloc(fullBuffer.length - split) + const secondBuffer = Buffer.alloc(fullBuffer.length - firstBuffer.length) + fullBuffer.copy(firstBuffer, 0, 0) + fullBuffer.copy(secondBuffer, 0, firstBuffer.length) + const messages = await parseBuffers([firstBuffer, secondBuffer]) + const message = messages[0] as any + assert.equal(message.fields.length, 5) + assert.equal(message.fields[0], null) + assert.equal(message.fields[1], 'bang') + assert.equal(message.fields[2], 'zug zug') + assert.equal(message.fields[3], null) + assert.equal(message.fields[4], '!') + } + + it('parses when split in the middle', function () { + return testMessageReceivedAfterSplitAt(6) + }) + + it('parses when split at end', function () { + return testMessageReceivedAfterSplitAt(2) + }) + + it('parses when split at beginning', function () { + return Promise.all([ + testMessageReceivedAfterSplitAt(fullBuffer.length - 2), + testMessageReceivedAfterSplitAt(fullBuffer.length - 1), + testMessageReceivedAfterSplitAt(fullBuffer.length - 5), + ]) + }) + }) + + describe('split buffer, multiple message parsing', function () { + const dataRowBuffer = buffers.dataRow(['!']) + const readyForQueryBuffer = buffers.readyForQuery() + const fullBuffer = Buffer.alloc(dataRowBuffer.length + readyForQueryBuffer.length) + dataRowBuffer.copy(fullBuffer, 0, 0) + readyForQueryBuffer.copy(fullBuffer, dataRowBuffer.length, 0) + + const verifyMessages = function (messages: any[]) { + assert.strictEqual(messages.length, 2) + assert.deepEqual(messages[0], { + name: 'dataRow', + fieldCount: 1, + length: 11, + fields: ['!'], + }) + assert.equal(messages[0].fields[0], '!') + assert.deepEqual(messages[1], { + name: 'readyForQuery', + length: 5, + status: 'I', + }) + } + // sanity check + it('receives both messages when packet is not split', async function () { + const messages = await parseBuffers([fullBuffer]) + verifyMessages(messages) + }) + + const splitAndVerifyTwoMessages = async function (split: number) { + const firstBuffer = Buffer.alloc(fullBuffer.length - split) + const secondBuffer = Buffer.alloc(fullBuffer.length - firstBuffer.length) + fullBuffer.copy(firstBuffer, 0, 0) + fullBuffer.copy(secondBuffer, 0, firstBuffer.length) + const messages = await parseBuffers([firstBuffer, secondBuffer]) + verifyMessages(messages) + } + + describe('receives both messages when packet is split', function () { + it('in the middle', function () { + return splitAndVerifyTwoMessages(11) + }) + it('at the front', function () { + return Promise.all([ + splitAndVerifyTwoMessages(fullBuffer.length - 1), + splitAndVerifyTwoMessages(fullBuffer.length - 4), + splitAndVerifyTwoMessages(fullBuffer.length - 6), + ]) + }) + + it('at the end', function () { + return Promise.all([splitAndVerifyTwoMessages(8), splitAndVerifyTwoMessages(1)]) + }) + }) + }) + + it('cleans up the reader after handling a packet', function () { + const parser = new Parser() + parser.parse(oneFieldBuf, () => {}) + assert.strictEqual((parser as any).reader.buffer.byteLength, 0) + }) +}) diff --git a/bff/node_modules/pg-protocol/src/index.ts b/bff/node_modules/pg-protocol/src/index.ts new file mode 100644 index 0000000..703ff2e --- /dev/null +++ b/bff/node_modules/pg-protocol/src/index.ts @@ -0,0 +1,11 @@ +import { DatabaseError } from './messages' +import { serialize } from './serializer' +import { Parser, MessageCallback } from './parser' + +export function parse(stream: NodeJS.ReadableStream, callback: MessageCallback): Promise { + const parser = new Parser() + stream.on('data', (buffer: Buffer) => parser.parse(buffer, callback)) + return new Promise((resolve) => stream.on('end', () => resolve())) +} + +export { serialize, DatabaseError } diff --git a/bff/node_modules/pg-protocol/src/messages.ts b/bff/node_modules/pg-protocol/src/messages.ts new file mode 100644 index 0000000..c3fbbdd --- /dev/null +++ b/bff/node_modules/pg-protocol/src/messages.ts @@ -0,0 +1,262 @@ +export type Mode = 'text' | 'binary' + +export type MessageName = + | 'parseComplete' + | 'bindComplete' + | 'closeComplete' + | 'noData' + | 'portalSuspended' + | 'replicationStart' + | 'emptyQuery' + | 'copyDone' + | 'copyData' + | 'rowDescription' + | 'parameterDescription' + | 'parameterStatus' + | 'backendKeyData' + | 'notification' + | 'readyForQuery' + | 'commandComplete' + | 'dataRow' + | 'copyInResponse' + | 'copyOutResponse' + | 'authenticationOk' + | 'authenticationMD5Password' + | 'authenticationCleartextPassword' + | 'authenticationSASL' + | 'authenticationSASLContinue' + | 'authenticationSASLFinal' + | 'error' + | 'notice' + +export interface BackendMessage { + name: MessageName + length: number +} + +export const parseComplete: BackendMessage = { + name: 'parseComplete', + length: 5, +} + +export const bindComplete: BackendMessage = { + name: 'bindComplete', + length: 5, +} + +export const closeComplete: BackendMessage = { + name: 'closeComplete', + length: 5, +} + +export const noData: BackendMessage = { + name: 'noData', + length: 5, +} + +export const portalSuspended: BackendMessage = { + name: 'portalSuspended', + length: 5, +} + +export const replicationStart: BackendMessage = { + name: 'replicationStart', + length: 4, +} + +export const emptyQuery: BackendMessage = { + name: 'emptyQuery', + length: 4, +} + +export const copyDone: BackendMessage = { + name: 'copyDone', + length: 4, +} + +interface NoticeOrError { + message: string | undefined + severity: string | undefined + code: string | undefined + detail: string | undefined + hint: string | undefined + position: string | undefined + internalPosition: string | undefined + internalQuery: string | undefined + where: string | undefined + schema: string | undefined + table: string | undefined + column: string | undefined + dataType: string | undefined + constraint: string | undefined + file: string | undefined + line: string | undefined + routine: string | undefined +} + +export class DatabaseError extends Error implements NoticeOrError { + public severity: string | undefined + public code: string | undefined + public detail: string | undefined + public hint: string | undefined + public position: string | undefined + public internalPosition: string | undefined + public internalQuery: string | undefined + public where: string | undefined + public schema: string | undefined + public table: string | undefined + public column: string | undefined + public dataType: string | undefined + public constraint: string | undefined + public file: string | undefined + public line: string | undefined + public routine: string | undefined + constructor( + message: string, + public readonly length: number, + public readonly name: MessageName + ) { + super(message) + } +} + +export class CopyDataMessage { + public readonly name = 'copyData' + constructor( + public readonly length: number, + public readonly chunk: Buffer + ) {} +} + +export class CopyResponse { + public readonly columnTypes: number[] + constructor( + public readonly length: number, + public readonly name: MessageName, + public readonly binary: boolean, + columnCount: number + ) { + this.columnTypes = new Array(columnCount) + } +} + +export class Field { + constructor( + public readonly name: string, + public readonly tableID: number, + public readonly columnID: number, + public readonly dataTypeID: number, + public readonly dataTypeSize: number, + public readonly dataTypeModifier: number, + public readonly format: Mode + ) {} +} + +export class RowDescriptionMessage { + public readonly name: MessageName = 'rowDescription' + public readonly fields: Field[] + constructor( + public readonly length: number, + public readonly fieldCount: number + ) { + this.fields = new Array(this.fieldCount) + } +} + +export class ParameterDescriptionMessage { + public readonly name: MessageName = 'parameterDescription' + public readonly dataTypeIDs: number[] + constructor( + public readonly length: number, + public readonly parameterCount: number + ) { + this.dataTypeIDs = new Array(this.parameterCount) + } +} + +export class ParameterStatusMessage { + public readonly name: MessageName = 'parameterStatus' + constructor( + public readonly length: number, + public readonly parameterName: string, + public readonly parameterValue: string + ) {} +} + +export class AuthenticationMD5Password implements BackendMessage { + public readonly name: MessageName = 'authenticationMD5Password' + constructor( + public readonly length: number, + public readonly salt: Buffer + ) {} +} + +export class BackendKeyDataMessage { + public readonly name: MessageName = 'backendKeyData' + constructor( + public readonly length: number, + public readonly processID: number, + public readonly secretKey: number + ) {} +} + +export class NotificationResponseMessage { + public readonly name: MessageName = 'notification' + constructor( + public readonly length: number, + public readonly processId: number, + public readonly channel: string, + public readonly payload: string + ) {} +} + +export class ReadyForQueryMessage { + public readonly name: MessageName = 'readyForQuery' + constructor( + public readonly length: number, + public readonly status: string + ) {} +} + +export class CommandCompleteMessage { + public readonly name: MessageName = 'commandComplete' + constructor( + public readonly length: number, + public readonly text: string + ) {} +} + +export class DataRowMessage { + public readonly fieldCount: number + public readonly name: MessageName = 'dataRow' + constructor( + public length: number, + public fields: any[] + ) { + this.fieldCount = fields.length + } +} + +export class NoticeMessage implements BackendMessage, NoticeOrError { + constructor( + public readonly length: number, + public readonly message: string | undefined + ) {} + public readonly name = 'notice' + public severity: string | undefined + public code: string | undefined + public detail: string | undefined + public hint: string | undefined + public position: string | undefined + public internalPosition: string | undefined + public internalQuery: string | undefined + public where: string | undefined + public schema: string | undefined + public table: string | undefined + public column: string | undefined + public dataType: string | undefined + public constraint: string | undefined + public file: string | undefined + public line: string | undefined + public routine: string | undefined +} diff --git a/bff/node_modules/pg-protocol/src/outbound-serializer.test.ts b/bff/node_modules/pg-protocol/src/outbound-serializer.test.ts new file mode 100644 index 0000000..0d3e387 --- /dev/null +++ b/bff/node_modules/pg-protocol/src/outbound-serializer.test.ts @@ -0,0 +1,276 @@ +import assert from 'assert' +import { serialize } from './serializer' +import BufferList from './testing/buffer-list' + +describe('serializer', () => { + it('builds startup message', function () { + const actual = serialize.startup({ + user: 'brian', + database: 'bang', + }) + assert.deepEqual( + actual, + new BufferList() + .addInt16(3) + .addInt16(0) + .addCString('user') + .addCString('brian') + .addCString('database') + .addCString('bang') + .addCString('client_encoding') + .addCString('UTF8') + .addCString('') + .join(true) + ) + }) + + it('builds password message', function () { + const actual = serialize.password('!') + assert.deepEqual(actual, new BufferList().addCString('!').join(true, 'p')) + }) + + it('builds request ssl message', function () { + const actual = serialize.requestSsl() + const expected = new BufferList().addInt32(80877103).join(true) + assert.deepEqual(actual, expected) + }) + + it('builds SASLInitialResponseMessage message', function () { + const actual = serialize.sendSASLInitialResponseMessage('mech', 'data') + assert.deepEqual(actual, new BufferList().addCString('mech').addInt32(4).addString('data').join(true, 'p')) + }) + + it('builds SCRAMClientFinalMessage message', function () { + const actual = serialize.sendSCRAMClientFinalMessage('data') + assert.deepEqual(actual, new BufferList().addString('data').join(true, 'p')) + }) + + it('builds query message', function () { + const txt = 'select * from boom' + const actual = serialize.query(txt) + assert.deepEqual(actual, new BufferList().addCString(txt).join(true, 'Q')) + }) + + describe('parse message', () => { + it('builds parse message', function () { + const actual = serialize.parse({ text: '!' }) + const expected = new BufferList().addCString('').addCString('!').addInt16(0).join(true, 'P') + assert.deepEqual(actual, expected) + }) + + it('builds parse message with named query', function () { + const actual = serialize.parse({ + name: 'boom', + text: 'select * from boom', + types: [], + }) + const expected = new BufferList().addCString('boom').addCString('select * from boom').addInt16(0).join(true, 'P') + assert.deepEqual(actual, expected) + }) + + it('with multiple parameters', function () { + const actual = serialize.parse({ + name: 'force', + text: 'select * from bang where name = $1', + types: [1, 2, 3, 4], + }) + const expected = new BufferList() + .addCString('force') + .addCString('select * from bang where name = $1') + .addInt16(4) + .addInt32(1) + .addInt32(2) + .addInt32(3) + .addInt32(4) + .join(true, 'P') + assert.deepEqual(actual, expected) + }) + }) + + describe('bind messages', function () { + it('with no values', function () { + const actual = serialize.bind() + + const expectedBuffer = new BufferList() + .addCString('') + .addCString('') + .addInt16(0) + .addInt16(0) + .addInt16(1) + .addInt16(0) + .join(true, 'B') + assert.deepEqual(actual, expectedBuffer) + }) + + it('with named statement, portal, and values', function () { + const actual = serialize.bind({ + portal: 'bang', + statement: 'woo', + values: ['1', 'hi', null, 'zing'], + }) + const expectedBuffer = new BufferList() + .addCString('bang') // portal name + .addCString('woo') // statement name + .addInt16(4) + .addInt16(0) + .addInt16(0) + .addInt16(0) + .addInt16(0) + .addInt16(4) + .addInt32(1) + .add(Buffer.from('1')) + .addInt32(2) + .add(Buffer.from('hi')) + .addInt32(-1) + .addInt32(4) + .add(Buffer.from('zing')) + .addInt16(1) + .addInt16(0) + .join(true, 'B') + assert.deepEqual(actual, expectedBuffer) + }) + }) + + it('with custom valueMapper', function () { + const actual = serialize.bind({ + portal: 'bang', + statement: 'woo', + values: ['1', 'hi', null, 'zing'], + valueMapper: () => null, + }) + const expectedBuffer = new BufferList() + .addCString('bang') // portal name + .addCString('woo') // statement name + .addInt16(4) + .addInt16(0) + .addInt16(0) + .addInt16(0) + .addInt16(0) + .addInt16(4) + .addInt32(-1) + .addInt32(-1) + .addInt32(-1) + .addInt32(-1) + .addInt16(1) + .addInt16(0) + .join(true, 'B') + assert.deepEqual(actual, expectedBuffer) + }) + + it('with named statement, portal, and buffer value', function () { + const actual = serialize.bind({ + portal: 'bang', + statement: 'woo', + values: ['1', 'hi', null, Buffer.from('zing', 'utf8')], + }) + const expectedBuffer = new BufferList() + .addCString('bang') // portal name + .addCString('woo') // statement name + .addInt16(4) // value count + .addInt16(0) // string + .addInt16(0) // string + .addInt16(0) // string + .addInt16(1) // binary + .addInt16(4) + .addInt32(1) + .add(Buffer.from('1')) + .addInt32(2) + .add(Buffer.from('hi')) + .addInt32(-1) + .addInt32(4) + .add(Buffer.from('zing', 'utf-8')) + .addInt16(1) + .addInt16(0) + .join(true, 'B') + assert.deepEqual(actual, expectedBuffer) + }) + + describe('builds execute message', function () { + it('for unamed portal with no row limit', function () { + const actual = serialize.execute() + const expectedBuffer = new BufferList().addCString('').addInt32(0).join(true, 'E') + assert.deepEqual(actual, expectedBuffer) + }) + + it('for named portal with row limit', function () { + const actual = serialize.execute({ + portal: 'my favorite portal', + rows: 100, + }) + const expectedBuffer = new BufferList().addCString('my favorite portal').addInt32(100).join(true, 'E') + assert.deepEqual(actual, expectedBuffer) + }) + }) + + it('builds flush command', function () { + const actual = serialize.flush() + const expected = new BufferList().join(true, 'H') + assert.deepEqual(actual, expected) + }) + + it('builds sync command', function () { + const actual = serialize.sync() + const expected = new BufferList().join(true, 'S') + assert.deepEqual(actual, expected) + }) + + it('builds end command', function () { + const actual = serialize.end() + const expected = Buffer.from([0x58, 0, 0, 0, 4]) + assert.deepEqual(actual, expected) + }) + + describe('builds describe command', function () { + it('describe statement', function () { + const actual = serialize.describe({ type: 'S', name: 'bang' }) + const expected = new BufferList().addChar('S').addCString('bang').join(true, 'D') + assert.deepEqual(actual, expected) + }) + + it('describe unnamed portal', function () { + const actual = serialize.describe({ type: 'P' }) + const expected = new BufferList().addChar('P').addCString('').join(true, 'D') + assert.deepEqual(actual, expected) + }) + }) + + describe('builds close command', function () { + it('describe statement', function () { + const actual = serialize.close({ type: 'S', name: 'bang' }) + const expected = new BufferList().addChar('S').addCString('bang').join(true, 'C') + assert.deepEqual(actual, expected) + }) + + it('describe unnamed portal', function () { + const actual = serialize.close({ type: 'P' }) + const expected = new BufferList().addChar('P').addCString('').join(true, 'C') + assert.deepEqual(actual, expected) + }) + }) + + describe('copy messages', function () { + it('builds copyFromChunk', () => { + const actual = serialize.copyData(Buffer.from([1, 2, 3])) + const expected = new BufferList().add(Buffer.from([1, 2, 3])).join(true, 'd') + assert.deepEqual(actual, expected) + }) + + it('builds copy fail', () => { + const actual = serialize.copyFail('err!') + const expected = new BufferList().addCString('err!').join(true, 'f') + assert.deepEqual(actual, expected) + }) + + it('builds copy done', () => { + const actual = serialize.copyDone() + const expected = new BufferList().join(true, 'c') + assert.deepEqual(actual, expected) + }) + }) + + it('builds cancel message', () => { + const actual = serialize.cancel(3, 4) + const expected = new BufferList().addInt16(1234).addInt16(5678).addInt32(3).addInt32(4).join(true) + assert.deepEqual(actual, expected) + }) +}) diff --git a/bff/node_modules/pg-protocol/src/parser.ts b/bff/node_modules/pg-protocol/src/parser.ts new file mode 100644 index 0000000..998077a --- /dev/null +++ b/bff/node_modules/pg-protocol/src/parser.ts @@ -0,0 +1,413 @@ +import { TransformOptions } from 'stream' +import { + Mode, + bindComplete, + parseComplete, + closeComplete, + noData, + portalSuspended, + copyDone, + replicationStart, + emptyQuery, + ReadyForQueryMessage, + CommandCompleteMessage, + CopyDataMessage, + CopyResponse, + NotificationResponseMessage, + RowDescriptionMessage, + ParameterDescriptionMessage, + Field, + DataRowMessage, + ParameterStatusMessage, + BackendKeyDataMessage, + DatabaseError, + BackendMessage, + MessageName, + AuthenticationMD5Password, + NoticeMessage, +} from './messages' +import { BufferReader } from './buffer-reader' + +// every message is prefixed with a single bye +const CODE_LENGTH = 1 +// every message has an int32 length which includes itself but does +// NOT include the code in the length +const LEN_LENGTH = 4 + +const HEADER_LENGTH = CODE_LENGTH + LEN_LENGTH + +// A placeholder for a `BackendMessage`’s length value that will be set after construction. +const LATEINIT_LENGTH = -1 + +export type Packet = { + code: number + packet: Buffer +} + +const emptyBuffer = Buffer.allocUnsafe(0) + +type StreamOptions = TransformOptions & { + mode: Mode +} + +const enum MessageCodes { + DataRow = 0x44, // D + ParseComplete = 0x31, // 1 + BindComplete = 0x32, // 2 + CloseComplete = 0x33, // 3 + CommandComplete = 0x43, // C + ReadyForQuery = 0x5a, // Z + NoData = 0x6e, // n + NotificationResponse = 0x41, // A + AuthenticationResponse = 0x52, // R + ParameterStatus = 0x53, // S + BackendKeyData = 0x4b, // K + ErrorMessage = 0x45, // E + NoticeMessage = 0x4e, // N + RowDescriptionMessage = 0x54, // T + ParameterDescriptionMessage = 0x74, // t + PortalSuspended = 0x73, // s + ReplicationStart = 0x57, // W + EmptyQuery = 0x49, // I + CopyIn = 0x47, // G + CopyOut = 0x48, // H + CopyDone = 0x63, // c + CopyData = 0x64, // d +} + +export type MessageCallback = (msg: BackendMessage) => void + +export class Parser { + private buffer: Buffer = emptyBuffer + private bufferLength: number = 0 + private bufferOffset: number = 0 + private reader = new BufferReader() + private mode: Mode + + constructor(opts?: StreamOptions) { + if (opts?.mode === 'binary') { + throw new Error('Binary mode not supported yet') + } + this.mode = opts?.mode || 'text' + } + + public parse(buffer: Buffer, callback: MessageCallback) { + this.mergeBuffer(buffer) + const bufferFullLength = this.bufferOffset + this.bufferLength + let offset = this.bufferOffset + while (offset + HEADER_LENGTH <= bufferFullLength) { + // code is 1 byte long - it identifies the message type + const code = this.buffer[offset] + // length is 1 Uint32BE - it is the length of the message EXCLUDING the code + const length = this.buffer.readUInt32BE(offset + CODE_LENGTH) + const fullMessageLength = CODE_LENGTH + length + if (fullMessageLength + offset <= bufferFullLength) { + const message = this.handlePacket(offset + HEADER_LENGTH, code, length, this.buffer) + callback(message) + offset += fullMessageLength + } else { + break + } + } + if (offset === bufferFullLength) { + // No more use for the buffer + this.buffer = emptyBuffer + this.bufferLength = 0 + this.bufferOffset = 0 + } else { + // Adjust the cursors of remainingBuffer + this.bufferLength = bufferFullLength - offset + this.bufferOffset = offset + } + } + + private mergeBuffer(buffer: Buffer): void { + if (this.bufferLength > 0) { + const newLength = this.bufferLength + buffer.byteLength + const newFullLength = newLength + this.bufferOffset + if (newFullLength > this.buffer.byteLength) { + // We can't concat the new buffer with the remaining one + let newBuffer: Buffer + if (newLength <= this.buffer.byteLength && this.bufferOffset >= this.bufferLength) { + // We can move the relevant part to the beginning of the buffer instead of allocating a new buffer + newBuffer = this.buffer + } else { + // Allocate a new larger buffer + let newBufferLength = this.buffer.byteLength * 2 + while (newLength >= newBufferLength) { + newBufferLength *= 2 + } + newBuffer = Buffer.allocUnsafe(newBufferLength) + } + // Move the remaining buffer to the new one + this.buffer.copy(newBuffer, 0, this.bufferOffset, this.bufferOffset + this.bufferLength) + this.buffer = newBuffer + this.bufferOffset = 0 + } + // Concat the new buffer with the remaining one + buffer.copy(this.buffer, this.bufferOffset + this.bufferLength) + this.bufferLength = newLength + } else { + this.buffer = buffer + this.bufferOffset = 0 + this.bufferLength = buffer.byteLength + } + } + + private handlePacket(offset: number, code: number, length: number, bytes: Buffer): BackendMessage { + const { reader } = this + + // NOTE: This undesirably retains the buffer in `this.reader` if the `parse*Message` calls below throw. However, those should only throw in the case of a protocol error, which normally results in the reader being discarded. + reader.setBuffer(offset, bytes) + + let message: BackendMessage + + switch (code) { + case MessageCodes.BindComplete: + message = bindComplete + break + case MessageCodes.ParseComplete: + message = parseComplete + break + case MessageCodes.CloseComplete: + message = closeComplete + break + case MessageCodes.NoData: + message = noData + break + case MessageCodes.PortalSuspended: + message = portalSuspended + break + case MessageCodes.CopyDone: + message = copyDone + break + case MessageCodes.ReplicationStart: + message = replicationStart + break + case MessageCodes.EmptyQuery: + message = emptyQuery + break + case MessageCodes.DataRow: + message = parseDataRowMessage(reader) + break + case MessageCodes.CommandComplete: + message = parseCommandCompleteMessage(reader) + break + case MessageCodes.ReadyForQuery: + message = parseReadyForQueryMessage(reader) + break + case MessageCodes.NotificationResponse: + message = parseNotificationMessage(reader) + break + case MessageCodes.AuthenticationResponse: + message = parseAuthenticationResponse(reader, length) + break + case MessageCodes.ParameterStatus: + message = parseParameterStatusMessage(reader) + break + case MessageCodes.BackendKeyData: + message = parseBackendKeyData(reader) + break + case MessageCodes.ErrorMessage: + message = parseErrorMessage(reader, 'error') + break + case MessageCodes.NoticeMessage: + message = parseErrorMessage(reader, 'notice') + break + case MessageCodes.RowDescriptionMessage: + message = parseRowDescriptionMessage(reader) + break + case MessageCodes.ParameterDescriptionMessage: + message = parseParameterDescriptionMessage(reader) + break + case MessageCodes.CopyIn: + message = parseCopyInMessage(reader) + break + case MessageCodes.CopyOut: + message = parseCopyOutMessage(reader) + break + case MessageCodes.CopyData: + message = parseCopyData(reader, length) + break + default: + return new DatabaseError('received invalid response: ' + code.toString(16), length, 'error') + } + + reader.setBuffer(0, emptyBuffer) + + message.length = length + return message + } +} + +const parseReadyForQueryMessage = (reader: BufferReader) => { + const status = reader.string(1) + return new ReadyForQueryMessage(LATEINIT_LENGTH, status) +} + +const parseCommandCompleteMessage = (reader: BufferReader) => { + const text = reader.cstring() + return new CommandCompleteMessage(LATEINIT_LENGTH, text) +} + +const parseCopyData = (reader: BufferReader, length: number) => { + const chunk = reader.bytes(length - 4) + return new CopyDataMessage(LATEINIT_LENGTH, chunk) +} + +const parseCopyInMessage = (reader: BufferReader) => parseCopyMessage(reader, 'copyInResponse') + +const parseCopyOutMessage = (reader: BufferReader) => parseCopyMessage(reader, 'copyOutResponse') + +const parseCopyMessage = (reader: BufferReader, messageName: MessageName) => { + const isBinary = reader.byte() !== 0 + const columnCount = reader.int16() + const message = new CopyResponse(LATEINIT_LENGTH, messageName, isBinary, columnCount) + for (let i = 0; i < columnCount; i++) { + message.columnTypes[i] = reader.int16() + } + return message +} + +const parseNotificationMessage = (reader: BufferReader) => { + const processId = reader.int32() + const channel = reader.cstring() + const payload = reader.cstring() + return new NotificationResponseMessage(LATEINIT_LENGTH, processId, channel, payload) +} + +const parseRowDescriptionMessage = (reader: BufferReader) => { + const fieldCount = reader.int16() + const message = new RowDescriptionMessage(LATEINIT_LENGTH, fieldCount) + for (let i = 0; i < fieldCount; i++) { + message.fields[i] = parseField(reader) + } + return message +} + +const parseField = (reader: BufferReader) => { + const name = reader.cstring() + const tableID = reader.uint32() + const columnID = reader.int16() + const dataTypeID = reader.uint32() + const dataTypeSize = reader.int16() + const dataTypeModifier = reader.int32() + const mode = reader.int16() === 0 ? 'text' : 'binary' + return new Field(name, tableID, columnID, dataTypeID, dataTypeSize, dataTypeModifier, mode) +} + +const parseParameterDescriptionMessage = (reader: BufferReader) => { + const parameterCount = reader.int16() + const message = new ParameterDescriptionMessage(LATEINIT_LENGTH, parameterCount) + for (let i = 0; i < parameterCount; i++) { + message.dataTypeIDs[i] = reader.int32() + } + return message +} + +const parseDataRowMessage = (reader: BufferReader) => { + const fieldCount = reader.int16() + const fields: any[] = new Array(fieldCount) + for (let i = 0; i < fieldCount; i++) { + const len = reader.int32() + // a -1 for length means the value of the field is null + fields[i] = len === -1 ? null : reader.string(len) + } + return new DataRowMessage(LATEINIT_LENGTH, fields) +} + +const parseParameterStatusMessage = (reader: BufferReader) => { + const name = reader.cstring() + const value = reader.cstring() + return new ParameterStatusMessage(LATEINIT_LENGTH, name, value) +} + +const parseBackendKeyData = (reader: BufferReader) => { + const processID = reader.int32() + const secretKey = reader.int32() + return new BackendKeyDataMessage(LATEINIT_LENGTH, processID, secretKey) +} + +const parseAuthenticationResponse = (reader: BufferReader, length: number) => { + const code = reader.int32() + // TODO(bmc): maybe better types here + const message: BackendMessage & any = { + name: 'authenticationOk', + length, + } + + switch (code) { + case 0: // AuthenticationOk + break + case 3: // AuthenticationCleartextPassword + if (message.length === 8) { + message.name = 'authenticationCleartextPassword' + } + break + case 5: // AuthenticationMD5Password + if (message.length === 12) { + message.name = 'authenticationMD5Password' + const salt = reader.bytes(4) + return new AuthenticationMD5Password(LATEINIT_LENGTH, salt) + } + break + case 10: // AuthenticationSASL + { + message.name = 'authenticationSASL' + message.mechanisms = [] + let mechanism: string + do { + mechanism = reader.cstring() + if (mechanism) { + message.mechanisms.push(mechanism) + } + } while (mechanism) + } + break + case 11: // AuthenticationSASLContinue + message.name = 'authenticationSASLContinue' + message.data = reader.string(length - 8) + break + case 12: // AuthenticationSASLFinal + message.name = 'authenticationSASLFinal' + message.data = reader.string(length - 8) + break + default: + throw new Error('Unknown authenticationOk message type ' + code) + } + return message +} + +const parseErrorMessage = (reader: BufferReader, name: MessageName) => { + const fields: Record = {} + let fieldType = reader.string(1) + while (fieldType !== '\0') { + fields[fieldType] = reader.cstring() + fieldType = reader.string(1) + } + + const messageValue = fields.M + + const message = + name === 'notice' + ? new NoticeMessage(LATEINIT_LENGTH, messageValue) + : new DatabaseError(messageValue, LATEINIT_LENGTH, name) + + message.severity = fields.S + message.code = fields.C + message.detail = fields.D + message.hint = fields.H + message.position = fields.P + message.internalPosition = fields.p + message.internalQuery = fields.q + message.where = fields.W + message.schema = fields.s + message.table = fields.t + message.column = fields.c + message.dataType = fields.d + message.constraint = fields.n + message.file = fields.F + message.line = fields.L + message.routine = fields.R + return message +} diff --git a/bff/node_modules/pg-protocol/src/serializer.ts b/bff/node_modules/pg-protocol/src/serializer.ts new file mode 100644 index 0000000..bb0441f --- /dev/null +++ b/bff/node_modules/pg-protocol/src/serializer.ts @@ -0,0 +1,274 @@ +import { Writer } from './buffer-writer' + +const enum code { + startup = 0x70, + query = 0x51, + parse = 0x50, + bind = 0x42, + execute = 0x45, + flush = 0x48, + sync = 0x53, + end = 0x58, + close = 0x43, + describe = 0x44, + copyFromChunk = 0x64, + copyDone = 0x63, + copyFail = 0x66, +} + +const writer = new Writer() + +const startup = (opts: Record): Buffer => { + // protocol version + writer.addInt16(3).addInt16(0) + for (const key of Object.keys(opts)) { + writer.addCString(key).addCString(opts[key]) + } + + writer.addCString('client_encoding').addCString('UTF8') + + const bodyBuffer = writer.addCString('').flush() + // this message is sent without a code + + const length = bodyBuffer.length + 4 + + return new Writer().addInt32(length).add(bodyBuffer).flush() +} + +const requestSsl = (): Buffer => { + const response = Buffer.allocUnsafe(8) + response.writeInt32BE(8, 0) + response.writeInt32BE(80877103, 4) + return response +} + +const password = (password: string): Buffer => { + return writer.addCString(password).flush(code.startup) +} + +const sendSASLInitialResponseMessage = function (mechanism: string, initialResponse: string): Buffer { + // 0x70 = 'p' + writer.addCString(mechanism).addInt32(Buffer.byteLength(initialResponse)).addString(initialResponse) + + return writer.flush(code.startup) +} + +const sendSCRAMClientFinalMessage = function (additionalData: string): Buffer { + return writer.addString(additionalData).flush(code.startup) +} + +const query = (text: string): Buffer => { + return writer.addCString(text).flush(code.query) +} + +type ParseOpts = { + name?: string + types?: number[] + text: string +} + +const emptyArray: any[] = [] + +const parse = (query: ParseOpts): Buffer => { + // expect something like this: + // { name: 'queryName', + // text: 'select * from blah', + // types: ['int8', 'bool'] } + + // normalize missing query names to allow for null + const name = query.name || '' + if (name.length > 63) { + console.error('Warning! Postgres only supports 63 characters for query names.') + console.error('You supplied %s (%s)', name, name.length) + console.error('This can cause conflicts and silent errors executing queries') + } + + const types = query.types || emptyArray + + const len = types.length + + const buffer = writer + .addCString(name) // name of query + .addCString(query.text) // actual query text + .addInt16(len) + + for (let i = 0; i < len; i++) { + buffer.addInt32(types[i]) + } + + return writer.flush(code.parse) +} + +type ValueMapper = (param: any, index: number) => any + +type BindOpts = { + portal?: string + binary?: boolean + statement?: string + values?: any[] + // optional map from JS value to postgres value per parameter + valueMapper?: ValueMapper +} + +const paramWriter = new Writer() + +// make this a const enum so typescript will inline the value +const enum ParamType { + STRING = 0, + BINARY = 1, +} + +const writeValues = function (values: any[], valueMapper?: ValueMapper): void { + for (let i = 0; i < values.length; i++) { + const mappedVal = valueMapper ? valueMapper(values[i], i) : values[i] + if (mappedVal == null) { + // add the param type (string) to the writer + writer.addInt16(ParamType.STRING) + // write -1 to the param writer to indicate null + paramWriter.addInt32(-1) + } else if (mappedVal instanceof Buffer) { + // add the param type (binary) to the writer + writer.addInt16(ParamType.BINARY) + // add the buffer to the param writer + paramWriter.addInt32(mappedVal.length) + paramWriter.add(mappedVal) + } else { + // add the param type (string) to the writer + writer.addInt16(ParamType.STRING) + paramWriter.addInt32(Buffer.byteLength(mappedVal)) + paramWriter.addString(mappedVal) + } + } +} + +const bind = (config: BindOpts = {}): Buffer => { + // normalize config + const portal = config.portal || '' + const statement = config.statement || '' + const binary = config.binary || false + const values = config.values || emptyArray + const len = values.length + + writer.addCString(portal).addCString(statement) + writer.addInt16(len) + + writeValues(values, config.valueMapper) + + writer.addInt16(len) + writer.add(paramWriter.flush()) + + // all results use the same format code + writer.addInt16(1) + // format code + writer.addInt16(binary ? ParamType.BINARY : ParamType.STRING) + return writer.flush(code.bind) +} + +type ExecOpts = { + portal?: string + rows?: number +} + +const emptyExecute = Buffer.from([code.execute, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00]) + +const execute = (config?: ExecOpts): Buffer => { + // this is the happy path for most queries + if (!config || (!config.portal && !config.rows)) { + return emptyExecute + } + + const portal = config.portal || '' + const rows = config.rows || 0 + + const portalLength = Buffer.byteLength(portal) + const len = 4 + portalLength + 1 + 4 + // one extra bit for code + const buff = Buffer.allocUnsafe(1 + len) + buff[0] = code.execute + buff.writeInt32BE(len, 1) + buff.write(portal, 5, 'utf-8') + buff[portalLength + 5] = 0 // null terminate portal cString + buff.writeUInt32BE(rows, buff.length - 4) + return buff +} + +const cancel = (processID: number, secretKey: number): Buffer => { + const buffer = Buffer.allocUnsafe(16) + buffer.writeInt32BE(16, 0) + buffer.writeInt16BE(1234, 4) + buffer.writeInt16BE(5678, 6) + buffer.writeInt32BE(processID, 8) + buffer.writeInt32BE(secretKey, 12) + return buffer +} + +type PortalOpts = { + type: 'S' | 'P' + name?: string +} + +const cstringMessage = (code: code, string: string): Buffer => { + const stringLen = Buffer.byteLength(string) + const len = 4 + stringLen + 1 + // one extra bit for code + const buffer = Buffer.allocUnsafe(1 + len) + buffer[0] = code + buffer.writeInt32BE(len, 1) + buffer.write(string, 5, 'utf-8') + buffer[len] = 0 // null terminate cString + return buffer +} + +const emptyDescribePortal = writer.addCString('P').flush(code.describe) +const emptyDescribeStatement = writer.addCString('S').flush(code.describe) + +const describe = (msg: PortalOpts): Buffer => { + return msg.name + ? cstringMessage(code.describe, `${msg.type}${msg.name || ''}`) + : msg.type === 'P' + ? emptyDescribePortal + : emptyDescribeStatement +} + +const close = (msg: PortalOpts): Buffer => { + const text = `${msg.type}${msg.name || ''}` + return cstringMessage(code.close, text) +} + +const copyData = (chunk: Buffer): Buffer => { + return writer.add(chunk).flush(code.copyFromChunk) +} + +const copyFail = (message: string): Buffer => { + return cstringMessage(code.copyFail, message) +} + +const codeOnlyBuffer = (code: code): Buffer => Buffer.from([code, 0x00, 0x00, 0x00, 0x04]) + +const flushBuffer = codeOnlyBuffer(code.flush) +const syncBuffer = codeOnlyBuffer(code.sync) +const endBuffer = codeOnlyBuffer(code.end) +const copyDoneBuffer = codeOnlyBuffer(code.copyDone) + +const serialize = { + startup, + password, + requestSsl, + sendSASLInitialResponseMessage, + sendSCRAMClientFinalMessage, + query, + parse, + bind, + execute, + describe, + close, + flush: () => flushBuffer, + sync: () => syncBuffer, + end: () => endBuffer, + copyData, + copyDone: () => copyDoneBuffer, + copyFail, + cancel, +} + +export { serialize } diff --git a/bff/node_modules/pg-protocol/src/testing/buffer-list.ts b/bff/node_modules/pg-protocol/src/testing/buffer-list.ts new file mode 100644 index 0000000..bef75d4 --- /dev/null +++ b/bff/node_modules/pg-protocol/src/testing/buffer-list.ts @@ -0,0 +1,67 @@ +export default class BufferList { + constructor(public buffers: Buffer[] = []) {} + + public add(buffer: Buffer, front?: boolean) { + this.buffers[front ? 'unshift' : 'push'](buffer) + return this + } + + public addInt16(val: number, front?: boolean) { + return this.add(Buffer.from([val >>> 8, val >>> 0]), front) + } + + public getByteLength() { + return this.buffers.reduce(function (previous, current) { + return previous + current.length + }, 0) + } + + public addInt32(val: number, first?: boolean) { + return this.add( + Buffer.from([(val >>> 24) & 0xff, (val >>> 16) & 0xff, (val >>> 8) & 0xff, (val >>> 0) & 0xff]), + first + ) + } + + public addCString(val: string, front?: boolean) { + const len = Buffer.byteLength(val) + const buffer = Buffer.alloc(len + 1) + buffer.write(val) + buffer[len] = 0 + return this.add(buffer, front) + } + + public addString(val: string, front?: boolean) { + const len = Buffer.byteLength(val) + const buffer = Buffer.alloc(len) + buffer.write(val) + return this.add(buffer, front) + } + + public addChar(char: string, first?: boolean) { + return this.add(Buffer.from(char, 'utf8'), first) + } + + public addByte(byte: number) { + return this.add(Buffer.from([byte])) + } + + public join(appendLength?: boolean, char?: string): Buffer { + let length = this.getByteLength() + if (appendLength) { + this.addInt32(length + 4, true) + return this.join(false, char) + } + if (char) { + this.addChar(char, true) + length++ + } + const result = Buffer.alloc(length) + let index = 0 + this.buffers.forEach(function (buffer) { + buffer.copy(result, index, 0) + index += buffer.length + }) + return result + } +} diff --git a/bff/node_modules/pg-protocol/src/testing/test-buffers.ts b/bff/node_modules/pg-protocol/src/testing/test-buffers.ts new file mode 100644 index 0000000..1f0d71f --- /dev/null +++ b/bff/node_modules/pg-protocol/src/testing/test-buffers.ts @@ -0,0 +1,166 @@ +// https://www.postgresql.org/docs/current/protocol-message-formats.html +import BufferList from './buffer-list' + +const buffers = { + readyForQuery: function () { + return new BufferList().add(Buffer.from('I')).join(true, 'Z') + }, + + authenticationOk: function () { + return new BufferList().addInt32(0).join(true, 'R') + }, + + authenticationCleartextPassword: function () { + return new BufferList().addInt32(3).join(true, 'R') + }, + + authenticationMD5Password: function () { + return new BufferList() + .addInt32(5) + .add(Buffer.from([1, 2, 3, 4])) + .join(true, 'R') + }, + + authenticationSASL: function () { + return new BufferList().addInt32(10).addCString('SCRAM-SHA-256').addCString('').join(true, 'R') + }, + + authenticationSASLContinue: function () { + return new BufferList().addInt32(11).addString('data').join(true, 'R') + }, + + authenticationSASLFinal: function () { + return new BufferList().addInt32(12).addString('data').join(true, 'R') + }, + + parameterStatus: function (name: string, value: string) { + return new BufferList().addCString(name).addCString(value).join(true, 'S') + }, + + backendKeyData: function (processID: number, secretKey: number) { + return new BufferList().addInt32(processID).addInt32(secretKey).join(true, 'K') + }, + + commandComplete: function (string: string) { + return new BufferList().addCString(string).join(true, 'C') + }, + + rowDescription: function (fields: any[]) { + fields = fields || [] + const buf = new BufferList() + buf.addInt16(fields.length) + fields.forEach(function (field) { + buf + .addCString(field.name) + .addInt32(field.tableID || 0) + .addInt16(field.attributeNumber || 0) + .addInt32(field.dataTypeID || 0) + .addInt16(field.dataTypeSize || 0) + .addInt32(field.typeModifier || 0) + .addInt16(field.formatCode || 0) + }) + return buf.join(true, 'T') + }, + + parameterDescription: function (dataTypeIDs: number[]) { + dataTypeIDs = dataTypeIDs || [] + const buf = new BufferList() + buf.addInt16(dataTypeIDs.length) + dataTypeIDs.forEach(function (dataTypeID) { + buf.addInt32(dataTypeID) + }) + return buf.join(true, 't') + }, + + dataRow: function (columns: any[]) { + columns = columns || [] + const buf = new BufferList() + buf.addInt16(columns.length) + columns.forEach(function (col) { + if (col == null) { + buf.addInt32(-1) + } else { + const strBuf = Buffer.from(col, 'utf8') + buf.addInt32(strBuf.length) + buf.add(strBuf) + } + }) + return buf.join(true, 'D') + }, + + error: function (fields: any) { + return buffers.errorOrNotice(fields).join(true, 'E') + }, + + notice: function (fields: any) { + return buffers.errorOrNotice(fields).join(true, 'N') + }, + + errorOrNotice: function (fields: any) { + fields = fields || [] + const buf = new BufferList() + fields.forEach(function (field: any) { + buf.addChar(field.type) + buf.addCString(field.value) + }) + return buf.add(Buffer.from([0])) // terminator + }, + + parseComplete: function () { + return new BufferList().join(true, '1') + }, + + bindComplete: function () { + return new BufferList().join(true, '2') + }, + + notification: function (id: number, channel: string, payload: string) { + return new BufferList().addInt32(id).addCString(channel).addCString(payload).join(true, 'A') + }, + + emptyQuery: function () { + return new BufferList().join(true, 'I') + }, + + portalSuspended: function () { + return new BufferList().join(true, 's') + }, + + closeComplete: function () { + return new BufferList().join(true, '3') + }, + + copyIn: function (cols: number) { + const list = new BufferList() + // text mode + .addByte(0) + // column count + .addInt16(cols) + for (let i = 0; i < cols; i++) { + list.addInt16(i) + } + return list.join(true, 'G') + }, + + copyOut: function (cols: number) { + const list = new BufferList() + // text mode + .addByte(0) + // column count + .addInt16(cols) + for (let i = 0; i < cols; i++) { + list.addInt16(i) + } + return list.join(true, 'H') + }, + + copyData: function (bytes: Buffer) { + return new BufferList().add(bytes).join(true, 'd') + }, + + copyDone: function () { + return new BufferList().join(true, 'c') + }, +} + +export default buffers diff --git a/bff/node_modules/pg-protocol/src/types/chunky.d.ts b/bff/node_modules/pg-protocol/src/types/chunky.d.ts new file mode 100644 index 0000000..7389bda --- /dev/null +++ b/bff/node_modules/pg-protocol/src/types/chunky.d.ts @@ -0,0 +1 @@ +declare module 'chunky' diff --git a/bff/node_modules/pg-types/.travis.yml b/bff/node_modules/pg-types/.travis.yml new file mode 100644 index 0000000..dd6b033 --- /dev/null +++ b/bff/node_modules/pg-types/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: + - '4' + - 'lts/*' + - 'node' +env: + - PGUSER=postgres diff --git a/bff/node_modules/pg-types/Makefile b/bff/node_modules/pg-types/Makefile new file mode 100644 index 0000000..d7ec83d --- /dev/null +++ b/bff/node_modules/pg-types/Makefile @@ -0,0 +1,14 @@ +.PHONY: publish-patch test + +test: + npm test + +patch: test + npm version patch -m "Bump version" + git push origin master --tags + npm publish + +minor: test + npm version minor -m "Bump version" + git push origin master --tags + npm publish diff --git a/bff/node_modules/pg-types/README.md b/bff/node_modules/pg-types/README.md new file mode 100644 index 0000000..54a3f2c --- /dev/null +++ b/bff/node_modules/pg-types/README.md @@ -0,0 +1,75 @@ +# pg-types + +This is the code that turns all the raw text from postgres into JavaScript types for [node-postgres](https://github.com/brianc/node-postgres.git) + +## use + +This module is consumed and exported from the root `pg` object of node-postgres. To access it, do the following: + +```js +var types = require('pg').types +``` + +Generally what you'll want to do is override how a specific data-type is parsed and turned into a JavaScript type. By default the PostgreSQL backend server returns everything as strings. Every data type corresponds to a unique `OID` within the server, and these `OIDs` are sent back with the query response. So, you need to match a particluar `OID` to a function you'd like to use to take the raw text input and produce a valid JavaScript object as a result. `null` values are never parsed. + +Let's do something I commonly like to do on projects: return 64-bit integers `(int8)` as JavaScript integers. Because JavaScript doesn't have support for 64-bit integers node-postgres cannot confidently parse `int8` data type results as numbers because if you have a _huge_ number it will overflow and the result you'd get back from node-postgres would not be the result in the datbase. That would be a __very bad thing__ so node-postgres just returns `int8` results as strings and leaves the parsing up to you. Let's say that you know you don't and wont ever have numbers greater than `int4` in your database, but you're tired of recieving results from the `COUNT(*)` function as strings (because that function returns `int8`). You would do this: + +```js +var types = require('pg').types +types.setTypeParser(20, function(val) { + return parseInt(val) +}) +``` + +__boom__: now you get numbers instead of strings. + +Just as another example -- not saying this is a good idea -- let's say you want to return all dates from your database as [moment](http://momentjs.com/docs/) objects. Okay, do this: + +```js +var types = require('pg').types +var moment = require('moment') +var parseFn = function(val) { + return val === null ? null : moment(val) +} +types.setTypeParser(types.builtins.TIMESTAMPTZ, parseFn) +types.setTypeParser(types.builtins.TIMESTAMP, parseFn) +``` +_note: I've never done that with my dates, and I'm not 100% sure moment can parse all the date strings returned from postgres. It's just an example!_ + +If you're thinking "gee, this seems pretty handy, but how can I get a list of all the OIDs in the database and what they correspond to?!?!?!" worry not: + +```bash +$ psql -c "select typname, oid, typarray from pg_type order by oid" +``` + +If you want to find out the OID of a specific type: + +```bash +$ psql -c "select typname, oid, typarray from pg_type where typname = 'daterange' order by oid" +``` + +:smile: + +## license + +The MIT License (MIT) + +Copyright (c) 2014 Brian M. Carlson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/pg-types/index.d.ts b/bff/node_modules/pg-types/index.d.ts new file mode 100644 index 0000000..4bebcbe --- /dev/null +++ b/bff/node_modules/pg-types/index.d.ts @@ -0,0 +1,137 @@ +export enum TypeId { + BOOL = 16, + BYTEA = 17, + CHAR = 18, + INT8 = 20, + INT2 = 21, + INT4 = 23, + REGPROC = 24, + TEXT = 25, + OID = 26, + TID = 27, + XID = 28, + CID = 29, + JSON = 114, + XML = 142, + PG_NODE_TREE = 194, + SMGR = 210, + PATH = 602, + POLYGON = 604, + CIDR = 650, + FLOAT4 = 700, + FLOAT8 = 701, + ABSTIME = 702, + RELTIME = 703, + TINTERVAL = 704, + CIRCLE = 718, + MACADDR8 = 774, + MONEY = 790, + MACADDR = 829, + INET = 869, + ACLITEM = 1033, + BPCHAR = 1042, + VARCHAR = 1043, + DATE = 1082, + TIME = 1083, + TIMESTAMP = 1114, + TIMESTAMPTZ = 1184, + INTERVAL = 1186, + TIMETZ = 1266, + BIT = 1560, + VARBIT = 1562, + NUMERIC = 1700, + REFCURSOR = 1790, + REGPROCEDURE = 2202, + REGOPER = 2203, + REGOPERATOR = 2204, + REGCLASS = 2205, + REGTYPE = 2206, + UUID = 2950, + TXID_SNAPSHOT = 2970, + PG_LSN = 3220, + PG_NDISTINCT = 3361, + PG_DEPENDENCIES = 3402, + TSVECTOR = 3614, + TSQUERY = 3615, + GTSVECTOR = 3642, + REGCONFIG = 3734, + REGDICTIONARY = 3769, + JSONB = 3802, + REGNAMESPACE = 4089, + REGROLE = 4096 +} + +export type builtinsTypes = + 'BOOL' | + 'BYTEA' | + 'CHAR' | + 'INT8' | + 'INT2' | + 'INT4' | + 'REGPROC' | + 'TEXT' | + 'OID' | + 'TID' | + 'XID' | + 'CID' | + 'JSON' | + 'XML' | + 'PG_NODE_TREE' | + 'SMGR' | + 'PATH' | + 'POLYGON' | + 'CIDR' | + 'FLOAT4' | + 'FLOAT8' | + 'ABSTIME' | + 'RELTIME' | + 'TINTERVAL' | + 'CIRCLE' | + 'MACADDR8' | + 'MONEY' | + 'MACADDR' | + 'INET' | + 'ACLITEM' | + 'BPCHAR' | + 'VARCHAR' | + 'DATE' | + 'TIME' | + 'TIMESTAMP' | + 'TIMESTAMPTZ' | + 'INTERVAL' | + 'TIMETZ' | + 'BIT' | + 'VARBIT' | + 'NUMERIC' | + 'REFCURSOR' | + 'REGPROCEDURE' | + 'REGOPER' | + 'REGOPERATOR' | + 'REGCLASS' | + 'REGTYPE' | + 'UUID' | + 'TXID_SNAPSHOT' | + 'PG_LSN' | + 'PG_NDISTINCT' | + 'PG_DEPENDENCIES' | + 'TSVECTOR' | + 'TSQUERY' | + 'GTSVECTOR' | + 'REGCONFIG' | + 'REGDICTIONARY' | + 'JSONB' | + 'REGNAMESPACE' | + 'REGROLE'; + +export type TypesBuiltins = {[key in builtinsTypes]: TypeId}; + +export type TypeFormat = 'text' | 'binary'; + +export const builtins: TypesBuiltins; + +export function setTypeParser (id: TypeId, parseFn: ((value: string) => any)): void; +export function setTypeParser (id: TypeId, format: TypeFormat, parseFn: (value: string) => any): void; + +export const getTypeParser: (id: TypeId, format?: TypeFormat) => any + +export const arrayParser: (source: string, transform: (entry: any) => any) => any[]; diff --git a/bff/node_modules/pg-types/index.js b/bff/node_modules/pg-types/index.js new file mode 100644 index 0000000..952d8c2 --- /dev/null +++ b/bff/node_modules/pg-types/index.js @@ -0,0 +1,47 @@ +var textParsers = require('./lib/textParsers'); +var binaryParsers = require('./lib/binaryParsers'); +var arrayParser = require('./lib/arrayParser'); +var builtinTypes = require('./lib/builtins'); + +exports.getTypeParser = getTypeParser; +exports.setTypeParser = setTypeParser; +exports.arrayParser = arrayParser; +exports.builtins = builtinTypes; + +var typeParsers = { + text: {}, + binary: {} +}; + +//the empty parse function +function noParse (val) { + return String(val); +}; + +//returns a function used to convert a specific type (specified by +//oid) into a result javascript type +//note: the oid can be obtained via the following sql query: +//SELECT oid FROM pg_type WHERE typname = 'TYPE_NAME_HERE'; +function getTypeParser (oid, format) { + format = format || 'text'; + if (!typeParsers[format]) { + return noParse; + } + return typeParsers[format][oid] || noParse; +}; + +function setTypeParser (oid, format, parseFn) { + if(typeof format == 'function') { + parseFn = format; + format = 'text'; + } + typeParsers[format][oid] = parseFn; +}; + +textParsers.init(function(oid, converter) { + typeParsers.text[oid] = converter; +}); + +binaryParsers.init(function(oid, converter) { + typeParsers.binary[oid] = converter; +}); diff --git a/bff/node_modules/pg-types/index.test-d.ts b/bff/node_modules/pg-types/index.test-d.ts new file mode 100644 index 0000000..d530e6e --- /dev/null +++ b/bff/node_modules/pg-types/index.test-d.ts @@ -0,0 +1,21 @@ +import * as types from '.'; +import { expectType } from 'tsd'; + +// builtins +expectType(types.builtins); + +// getTypeParser +const noParse = types.getTypeParser(types.builtins.NUMERIC, 'text'); +const numericParser = types.getTypeParser(types.builtins.NUMERIC, 'binary'); +expectType(noParse('noParse')); +expectType(numericParser([200, 1, 0, 15])); + +// getArrayParser +const value = types.arrayParser('{1,2,3}', (num) => parseInt(num)); +expectType(value); + +//setTypeParser +types.setTypeParser(types.builtins.INT8, parseInt); +types.setTypeParser(types.builtins.FLOAT8, parseFloat); +types.setTypeParser(types.builtins.FLOAT8, 'binary', (data) => data[0]); +types.setTypeParser(types.builtins.FLOAT8, 'text', parseFloat); diff --git a/bff/node_modules/pg-types/lib/arrayParser.js b/bff/node_modules/pg-types/lib/arrayParser.js new file mode 100644 index 0000000..81ccffb --- /dev/null +++ b/bff/node_modules/pg-types/lib/arrayParser.js @@ -0,0 +1,11 @@ +var array = require('postgres-array'); + +module.exports = { + create: function (source, transform) { + return { + parse: function() { + return array.parse(source, transform); + } + }; + } +}; diff --git a/bff/node_modules/pg-types/lib/binaryParsers.js b/bff/node_modules/pg-types/lib/binaryParsers.js new file mode 100644 index 0000000..e12c2f4 --- /dev/null +++ b/bff/node_modules/pg-types/lib/binaryParsers.js @@ -0,0 +1,257 @@ +var parseInt64 = require('pg-int8'); + +var parseBits = function(data, bits, offset, invert, callback) { + offset = offset || 0; + invert = invert || false; + callback = callback || function(lastValue, newValue, bits) { return (lastValue * Math.pow(2, bits)) + newValue; }; + var offsetBytes = offset >> 3; + + var inv = function(value) { + if (invert) { + return ~value & 0xff; + } + + return value; + }; + + // read first (maybe partial) byte + var mask = 0xff; + var firstBits = 8 - (offset % 8); + if (bits < firstBits) { + mask = (0xff << (8 - bits)) & 0xff; + firstBits = bits; + } + + if (offset) { + mask = mask >> (offset % 8); + } + + var result = 0; + if ((offset % 8) + bits >= 8) { + result = callback(0, inv(data[offsetBytes]) & mask, firstBits); + } + + // read bytes + var bytes = (bits + offset) >> 3; + for (var i = offsetBytes + 1; i < bytes; i++) { + result = callback(result, inv(data[i]), 8); + } + + // bits to read, that are not a complete byte + var lastBits = (bits + offset) % 8; + if (lastBits > 0) { + result = callback(result, inv(data[bytes]) >> (8 - lastBits), lastBits); + } + + return result; +}; + +var parseFloatFromBits = function(data, precisionBits, exponentBits) { + var bias = Math.pow(2, exponentBits - 1) - 1; + var sign = parseBits(data, 1); + var exponent = parseBits(data, exponentBits, 1); + + if (exponent === 0) { + return 0; + } + + // parse mantissa + var precisionBitsCounter = 1; + var parsePrecisionBits = function(lastValue, newValue, bits) { + if (lastValue === 0) { + lastValue = 1; + } + + for (var i = 1; i <= bits; i++) { + precisionBitsCounter /= 2; + if ((newValue & (0x1 << (bits - i))) > 0) { + lastValue += precisionBitsCounter; + } + } + + return lastValue; + }; + + var mantissa = parseBits(data, precisionBits, exponentBits + 1, false, parsePrecisionBits); + + // special cases + if (exponent == (Math.pow(2, exponentBits + 1) - 1)) { + if (mantissa === 0) { + return (sign === 0) ? Infinity : -Infinity; + } + + return NaN; + } + + // normale number + return ((sign === 0) ? 1 : -1) * Math.pow(2, exponent - bias) * mantissa; +}; + +var parseInt16 = function(value) { + if (parseBits(value, 1) == 1) { + return -1 * (parseBits(value, 15, 1, true) + 1); + } + + return parseBits(value, 15, 1); +}; + +var parseInt32 = function(value) { + if (parseBits(value, 1) == 1) { + return -1 * (parseBits(value, 31, 1, true) + 1); + } + + return parseBits(value, 31, 1); +}; + +var parseFloat32 = function(value) { + return parseFloatFromBits(value, 23, 8); +}; + +var parseFloat64 = function(value) { + return parseFloatFromBits(value, 52, 11); +}; + +var parseNumeric = function(value) { + var sign = parseBits(value, 16, 32); + if (sign == 0xc000) { + return NaN; + } + + var weight = Math.pow(10000, parseBits(value, 16, 16)); + var result = 0; + + var digits = []; + var ndigits = parseBits(value, 16); + for (var i = 0; i < ndigits; i++) { + result += parseBits(value, 16, 64 + (16 * i)) * weight; + weight /= 10000; + } + + var scale = Math.pow(10, parseBits(value, 16, 48)); + return ((sign === 0) ? 1 : -1) * Math.round(result * scale) / scale; +}; + +var parseDate = function(isUTC, value) { + var sign = parseBits(value, 1); + var rawValue = parseBits(value, 63, 1); + + // discard usecs and shift from 2000 to 1970 + var result = new Date((((sign === 0) ? 1 : -1) * rawValue / 1000) + 946684800000); + + if (!isUTC) { + result.setTime(result.getTime() + result.getTimezoneOffset() * 60000); + } + + // add microseconds to the date + result.usec = rawValue % 1000; + result.getMicroSeconds = function() { + return this.usec; + }; + result.setMicroSeconds = function(value) { + this.usec = value; + }; + result.getUTCMicroSeconds = function() { + return this.usec; + }; + + return result; +}; + +var parseArray = function(value) { + var dim = parseBits(value, 32); + + var flags = parseBits(value, 32, 32); + var elementType = parseBits(value, 32, 64); + + var offset = 96; + var dims = []; + for (var i = 0; i < dim; i++) { + // parse dimension + dims[i] = parseBits(value, 32, offset); + offset += 32; + + // ignore lower bounds + offset += 32; + } + + var parseElement = function(elementType) { + // parse content length + var length = parseBits(value, 32, offset); + offset += 32; + + // parse null values + if (length == 0xffffffff) { + return null; + } + + var result; + if ((elementType == 0x17) || (elementType == 0x14)) { + // int/bigint + result = parseBits(value, length * 8, offset); + offset += length * 8; + return result; + } + else if (elementType == 0x19) { + // string + result = value.toString(this.encoding, offset >> 3, (offset += (length << 3)) >> 3); + return result; + } + else { + console.log("ERROR: ElementType not implemented: " + elementType); + } + }; + + var parse = function(dimension, elementType) { + var array = []; + var i; + + if (dimension.length > 1) { + var count = dimension.shift(); + for (i = 0; i < count; i++) { + array[i] = parse(dimension, elementType); + } + dimension.unshift(count); + } + else { + for (i = 0; i < dimension[0]; i++) { + array[i] = parseElement(elementType); + } + } + + return array; + }; + + return parse(dims, elementType); +}; + +var parseText = function(value) { + return value.toString('utf8'); +}; + +var parseBool = function(value) { + if(value === null) return null; + return (parseBits(value, 8) > 0); +}; + +var init = function(register) { + register(20, parseInt64); + register(21, parseInt16); + register(23, parseInt32); + register(26, parseInt32); + register(1700, parseNumeric); + register(700, parseFloat32); + register(701, parseFloat64); + register(16, parseBool); + register(1114, parseDate.bind(null, false)); + register(1184, parseDate.bind(null, true)); + register(1000, parseArray); + register(1007, parseArray); + register(1016, parseArray); + register(1008, parseArray); + register(1009, parseArray); + register(25, parseText); +}; + +module.exports = { + init: init +}; diff --git a/bff/node_modules/pg-types/lib/builtins.js b/bff/node_modules/pg-types/lib/builtins.js new file mode 100644 index 0000000..f0c134a --- /dev/null +++ b/bff/node_modules/pg-types/lib/builtins.js @@ -0,0 +1,73 @@ +/** + * Following query was used to generate this file: + + SELECT json_object_agg(UPPER(PT.typname), PT.oid::int4 ORDER BY pt.oid) + FROM pg_type PT + WHERE typnamespace = (SELECT pgn.oid FROM pg_namespace pgn WHERE nspname = 'pg_catalog') -- Take only builting Postgres types with stable OID (extension types are not guaranted to be stable) + AND typtype = 'b' -- Only basic types + AND typelem = 0 -- Ignore aliases + AND typisdefined -- Ignore undefined types + */ + +module.exports = { + BOOL: 16, + BYTEA: 17, + CHAR: 18, + INT8: 20, + INT2: 21, + INT4: 23, + REGPROC: 24, + TEXT: 25, + OID: 26, + TID: 27, + XID: 28, + CID: 29, + JSON: 114, + XML: 142, + PG_NODE_TREE: 194, + SMGR: 210, + PATH: 602, + POLYGON: 604, + CIDR: 650, + FLOAT4: 700, + FLOAT8: 701, + ABSTIME: 702, + RELTIME: 703, + TINTERVAL: 704, + CIRCLE: 718, + MACADDR8: 774, + MONEY: 790, + MACADDR: 829, + INET: 869, + ACLITEM: 1033, + BPCHAR: 1042, + VARCHAR: 1043, + DATE: 1082, + TIME: 1083, + TIMESTAMP: 1114, + TIMESTAMPTZ: 1184, + INTERVAL: 1186, + TIMETZ: 1266, + BIT: 1560, + VARBIT: 1562, + NUMERIC: 1700, + REFCURSOR: 1790, + REGPROCEDURE: 2202, + REGOPER: 2203, + REGOPERATOR: 2204, + REGCLASS: 2205, + REGTYPE: 2206, + UUID: 2950, + TXID_SNAPSHOT: 2970, + PG_LSN: 3220, + PG_NDISTINCT: 3361, + PG_DEPENDENCIES: 3402, + TSVECTOR: 3614, + TSQUERY: 3615, + GTSVECTOR: 3642, + REGCONFIG: 3734, + REGDICTIONARY: 3769, + JSONB: 3802, + REGNAMESPACE: 4089, + REGROLE: 4096 +}; diff --git a/bff/node_modules/pg-types/lib/textParsers.js b/bff/node_modules/pg-types/lib/textParsers.js new file mode 100644 index 0000000..b1218bf --- /dev/null +++ b/bff/node_modules/pg-types/lib/textParsers.js @@ -0,0 +1,215 @@ +var array = require('postgres-array') +var arrayParser = require('./arrayParser'); +var parseDate = require('postgres-date'); +var parseInterval = require('postgres-interval'); +var parseByteA = require('postgres-bytea'); + +function allowNull (fn) { + return function nullAllowed (value) { + if (value === null) return value + return fn(value) + } +} + +function parseBool (value) { + if (value === null) return value + return value === 'TRUE' || + value === 't' || + value === 'true' || + value === 'y' || + value === 'yes' || + value === 'on' || + value === '1'; +} + +function parseBoolArray (value) { + if (!value) return null + return array.parse(value, parseBool) +} + +function parseBaseTenInt (string) { + return parseInt(string, 10) +} + +function parseIntegerArray (value) { + if (!value) return null + return array.parse(value, allowNull(parseBaseTenInt)) +} + +function parseBigIntegerArray (value) { + if (!value) return null + return array.parse(value, allowNull(function (entry) { + return parseBigInteger(entry).trim() + })) +} + +var parsePointArray = function(value) { + if(!value) { return null; } + var p = arrayParser.create(value, function(entry) { + if(entry !== null) { + entry = parsePoint(entry); + } + return entry; + }); + + return p.parse(); +}; + +var parseFloatArray = function(value) { + if(!value) { return null; } + var p = arrayParser.create(value, function(entry) { + if(entry !== null) { + entry = parseFloat(entry); + } + return entry; + }); + + return p.parse(); +}; + +var parseStringArray = function(value) { + if(!value) { return null; } + + var p = arrayParser.create(value); + return p.parse(); +}; + +var parseDateArray = function(value) { + if (!value) { return null; } + + var p = arrayParser.create(value, function(entry) { + if (entry !== null) { + entry = parseDate(entry); + } + return entry; + }); + + return p.parse(); +}; + +var parseIntervalArray = function(value) { + if (!value) { return null; } + + var p = arrayParser.create(value, function(entry) { + if (entry !== null) { + entry = parseInterval(entry); + } + return entry; + }); + + return p.parse(); +}; + +var parseByteAArray = function(value) { + if (!value) { return null; } + + return array.parse(value, allowNull(parseByteA)); +}; + +var parseInteger = function(value) { + return parseInt(value, 10); +}; + +var parseBigInteger = function(value) { + var valStr = String(value); + if (/^\d+$/.test(valStr)) { return valStr; } + return value; +}; + +var parseJsonArray = function(value) { + if (!value) { return null; } + + return array.parse(value, allowNull(JSON.parse)); +}; + +var parsePoint = function(value) { + if (value[0] !== '(') { return null; } + + value = value.substring( 1, value.length - 1 ).split(','); + + return { + x: parseFloat(value[0]) + , y: parseFloat(value[1]) + }; +}; + +var parseCircle = function(value) { + if (value[0] !== '<' && value[1] !== '(') { return null; } + + var point = '('; + var radius = ''; + var pointParsed = false; + for (var i = 2; i < value.length - 1; i++){ + if (!pointParsed) { + point += value[i]; + } + + if (value[i] === ')') { + pointParsed = true; + continue; + } else if (!pointParsed) { + continue; + } + + if (value[i] === ','){ + continue; + } + + radius += value[i]; + } + var result = parsePoint(point); + result.radius = parseFloat(radius); + + return result; +}; + +var init = function(register) { + register(20, parseBigInteger); // int8 + register(21, parseInteger); // int2 + register(23, parseInteger); // int4 + register(26, parseInteger); // oid + register(700, parseFloat); // float4/real + register(701, parseFloat); // float8/double + register(16, parseBool); + register(1082, parseDate); // date + register(1114, parseDate); // timestamp without timezone + register(1184, parseDate); // timestamp + register(600, parsePoint); // point + register(651, parseStringArray); // cidr[] + register(718, parseCircle); // circle + register(1000, parseBoolArray); + register(1001, parseByteAArray); + register(1005, parseIntegerArray); // _int2 + register(1007, parseIntegerArray); // _int4 + register(1028, parseIntegerArray); // oid[] + register(1016, parseBigIntegerArray); // _int8 + register(1017, parsePointArray); // point[] + register(1021, parseFloatArray); // _float4 + register(1022, parseFloatArray); // _float8 + register(1231, parseFloatArray); // _numeric + register(1014, parseStringArray); //char + register(1015, parseStringArray); //varchar + register(1008, parseStringArray); + register(1009, parseStringArray); + register(1040, parseStringArray); // macaddr[] + register(1041, parseStringArray); // inet[] + register(1115, parseDateArray); // timestamp without time zone[] + register(1182, parseDateArray); // _date + register(1185, parseDateArray); // timestamp with time zone[] + register(1186, parseInterval); + register(1187, parseIntervalArray); + register(17, parseByteA); + register(114, JSON.parse.bind(JSON)); // json + register(3802, JSON.parse.bind(JSON)); // jsonb + register(199, parseJsonArray); // json[] + register(3807, parseJsonArray); // jsonb[] + register(3907, parseStringArray); // numrange[] + register(2951, parseStringArray); // uuid[] + register(791, parseStringArray); // money[] + register(1183, parseStringArray); // time[] + register(1270, parseStringArray); // timetz[] +}; + +module.exports = { + init: init +}; diff --git a/bff/node_modules/pg-types/package.json b/bff/node_modules/pg-types/package.json new file mode 100644 index 0000000..5f18026 --- /dev/null +++ b/bff/node_modules/pg-types/package.json @@ -0,0 +1,42 @@ +{ + "name": "pg-types", + "version": "2.2.0", + "description": "Query result type converters for node-postgres", + "main": "index.js", + "scripts": { + "test": "tape test/*.js | tap-spec && npm run test-ts", + "test-ts": "if-node-version '>= 8' tsd" + }, + "repository": { + "type": "git", + "url": "git://github.com/brianc/node-pg-types.git" + }, + "keywords": [ + "postgres", + "PostgreSQL", + "pg" + ], + "author": "Brian M. Carlson", + "license": "MIT", + "bugs": { + "url": "https://github.com/brianc/node-pg-types/issues" + }, + "homepage": "https://github.com/brianc/node-pg-types", + "devDependencies": { + "if-node-version": "^1.1.1", + "pff": "^1.0.0", + "tap-spec": "^4.0.0", + "tape": "^4.0.0", + "tsd": "^0.7.4" + }, + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } +} diff --git a/bff/node_modules/pg-types/test/index.js b/bff/node_modules/pg-types/test/index.js new file mode 100644 index 0000000..b7d05cd --- /dev/null +++ b/bff/node_modules/pg-types/test/index.js @@ -0,0 +1,24 @@ + +var test = require('tape') +var printf = require('pff') +var getTypeParser = require('../').getTypeParser +var types = require('./types') + +test('types', function (t) { + Object.keys(types).forEach(function (typeName) { + var type = types[typeName] + t.test(typeName, function (t) { + var parser = getTypeParser(type.id, type.format) + type.tests.forEach(function (tests) { + var input = tests[0] + var expected = tests[1] + var result = parser(input) + if (typeof expected === 'function') { + return expected(t, result) + } + t.equal(result, expected) + }) + t.end() + }) + }) +}) diff --git a/bff/node_modules/pg-types/test/types.js b/bff/node_modules/pg-types/test/types.js new file mode 100644 index 0000000..af708a5 --- /dev/null +++ b/bff/node_modules/pg-types/test/types.js @@ -0,0 +1,597 @@ +'use strict' + +exports['string/varchar'] = { + format: 'text', + id: 1043, + tests: [ + ['bang', 'bang'] + ] +} + +exports['integer/int4'] = { + format: 'text', + id: 23, + tests: [ + ['2147483647', 2147483647] + ] +} + +exports['smallint/int2'] = { + format: 'text', + id: 21, + tests: [ + ['32767', 32767] + ] +} + +exports['bigint/int8'] = { + format: 'text', + id: 20, + tests: [ + ['9223372036854775807', '9223372036854775807'] + ] +} + +exports.oid = { + format: 'text', + id: 26, + tests: [ + ['103', 103] + ] +} + +var bignum = '31415926535897932384626433832795028841971693993751058.16180339887498948482045868343656381177203091798057628' +exports.numeric = { + format: 'text', + id: 1700, + tests: [ + [bignum, bignum] + ] +} + +exports['real/float4'] = { + format: 'text', + id: 700, + tests: [ + ['123.456', 123.456] + ] +} + +exports['double precision / float 8'] = { + format: 'text', + id: 701, + tests: [ + ['12345678.12345678', 12345678.12345678] + ] +} + +exports.boolean = { + format: 'text', + id: 16, + tests: [ + ['TRUE', true], + ['t', true], + ['true', true], + ['y', true], + ['yes', true], + ['on', true], + ['1', true], + ['f', false], + [null, null] + ] +} + +exports.timestamptz = { + format: 'text', + id: 1184, + tests: [ + [ + '2010-10-31 14:54:13.74-05:30', + dateEquals(2010, 9, 31, 20, 24, 13, 740) + ], + [ + '2011-01-23 22:05:00.68-06', + dateEquals(2011, 0, 24, 4, 5, 0, 680) + ], + [ + '2010-10-30 14:11:12.730838Z', + dateEquals(2010, 9, 30, 14, 11, 12, 730) + ], + [ + '2010-10-30 13:10:01+05', + dateEquals(2010, 9, 30, 8, 10, 1, 0) + ] + ] +} + +exports.timestamp = { + format: 'text', + id: 1114, + tests: [ + [ + '2010-10-31 00:00:00', + function (t, value) { + t.equal( + value.toUTCString(), + new Date(2010, 9, 31, 0, 0, 0, 0, 0).toUTCString() + ) + t.equal( + value.toString(), + new Date(2010, 9, 31, 0, 0, 0, 0, 0, 0).toString() + ) + } + ] + ] +} + +exports.date = { + format: 'text', + id: 1082, + tests: [ + ['2010-10-31', function (t, value) { + var now = new Date(2010, 9, 31) + dateEquals( + 2010, + now.getUTCMonth(), + now.getUTCDate(), + now.getUTCHours(), 0, 0, 0)(t, value) + t.equal(value.getHours(), now.getHours()) + }] + ] +} + +exports.inet = { + format: 'text', + id: 869, + tests: [ + ['8.8.8.8', '8.8.8.8'], + ['2001:4860:4860::8888', '2001:4860:4860::8888'], + ['127.0.0.1', '127.0.0.1'], + ['fd00:1::40e', 'fd00:1::40e'], + ['1.2.3.4', '1.2.3.4'] + ] +} + +exports.cidr = { + format: 'text', + id: 650, + tests: [ + ['172.16.0.0/12', '172.16.0.0/12'], + ['fe80::/10', 'fe80::/10'], + ['fc00::/7', 'fc00::/7'], + ['192.168.0.0/24', '192.168.0.0/24'], + ['10.0.0.0/8', '10.0.0.0/8'] + ] +} + +exports.macaddr = { + format: 'text', + id: 829, + tests: [ + ['08:00:2b:01:02:03', '08:00:2b:01:02:03'], + ['16:10:9f:0d:66:00', '16:10:9f:0d:66:00'] + ] +} + +exports.numrange = { + format: 'text', + id: 3906, + tests: [ + ['[,]', '[,]'], + ['(,)', '(,)'], + ['(,]', '(,]'], + ['[1,)', '[1,)'], + ['[,1]', '[,1]'], + ['(1,2)', '(1,2)'], + ['(1,20.5]', '(1,20.5]'] + ] +} + +exports.interval = { + format: 'text', + id: 1186, + tests: [ + ['01:02:03', function (t, value) { + t.equal(value.toPostgres(), '3 seconds 2 minutes 1 hours') + t.deepEqual(value, {hours: 1, minutes: 2, seconds: 3}) + }], + ['01:02:03.456', function (t, value) { + t.deepEqual(value, {hours: 1, minutes:2, seconds: 3, milliseconds: 456}) + }], + ['1 year -32 days', function (t, value) { + t.equal(value.toPostgres(), '-32 days 1 years') + t.deepEqual(value, {years: 1, days: -32}) + }], + ['1 day -00:00:03', function (t, value) { + t.equal(value.toPostgres(), '-3 seconds 1 days') + t.deepEqual(value, {days: 1, seconds: -3}) + }] + ] +} + +exports.bytea = { + format: 'text', + id: 17, + tests: [ + ['foo\\000\\200\\\\\\377', function (t, value) { + var buffer = new Buffer([102, 111, 111, 0, 128, 92, 255]) + t.ok(buffer.equals(value)) + }], + ['', function (t, value) { + var buffer = new Buffer(0) + t.ok(buffer.equals(value)) + }] + ] +} + +exports['array/boolean'] = { + format: 'text', + id: 1000, + tests: [ + ['{true,false}', function (t, value) { + t.deepEqual(value, [true, false]) + }] + ] +} + +exports['array/char'] = { + format: 'text', + id: 1014, + tests: [ + ['{foo,bar}', function (t, value) { + t.deepEqual(value, ['foo', 'bar']) + }] + ] +} + +exports['array/varchar'] = { + format: 'text', + id: 1015, + tests: [ + ['{foo,bar}', function (t, value) { + t.deepEqual(value, ['foo', 'bar']) + }] + ] +} + +exports['array/text'] = { + format: 'text', + id: 1008, + tests: [ + ['{foo}', function (t, value) { + t.deepEqual(value, ['foo']) + }] + ] +} + +exports['array/bytea'] = { + format: 'text', + id: 1001, + tests: [ + ['{"\\\\x00000000"}', function (t, value) { + var buffer = new Buffer('00000000', 'hex') + t.ok(Array.isArray(value)) + t.equal(value.length, 1) + t.ok(buffer.equals(value[0])) + }], + ['{NULL,"\\\\x4e554c4c"}', function (t, value) { + var buffer = new Buffer('4e554c4c', 'hex') + t.ok(Array.isArray(value)) + t.equal(value.length, 2) + t.equal(value[0], null) + t.ok(buffer.equals(value[1])) + }], + ] +} + +exports['array/numeric'] = { + format: 'text', + id: 1231, + tests: [ + ['{1.2,3.4}', function (t, value) { + t.deepEqual(value, [1.2, 3.4]) + }] + ] +} + +exports['array/int2'] = { + format: 'text', + id: 1005, + tests: [ + ['{-32768, -32767, 32766, 32767}', function (t, value) { + t.deepEqual(value, [-32768, -32767, 32766, 32767]) + }] + ] +} + +exports['array/int4'] = { + format: 'text', + id: 1005, + tests: [ + ['{-2147483648, -2147483647, 2147483646, 2147483647}', function (t, value) { + t.deepEqual(value, [-2147483648, -2147483647, 2147483646, 2147483647]) + }] + ] +} + +exports['array/int8'] = { + format: 'text', + id: 1016, + tests: [ + [ + '{-9223372036854775808, -9223372036854775807, 9223372036854775806, 9223372036854775807}', + function (t, value) { + t.deepEqual(value, [ + '-9223372036854775808', + '-9223372036854775807', + '9223372036854775806', + '9223372036854775807' + ]) + } + ] + ] +} + +exports['array/json'] = { + format: 'text', + id: 199, + tests: [ + [ + '{{1,2},{[3],"[4,5]"},{null,NULL}}', + function (t, value) { + t.deepEqual(value, [ + [1, 2], + [[3], [4, 5]], + [null, null], + ]) + } + ] + ] +} + +exports['array/jsonb'] = { + format: 'text', + id: 3807, + tests: exports['array/json'].tests +} + +exports['array/point'] = { + format: 'text', + id: 1017, + tests: [ + ['{"(25.1,50.5)","(10.1,40)"}', function (t, value) { + t.deepEqual(value, [{x: 25.1, y: 50.5}, {x: 10.1, y: 40}]) + }] + ] +} + +exports['array/oid'] = { + format: 'text', + id: 1028, + tests: [ + ['{25864,25860}', function (t, value) { + t.deepEqual(value, [25864, 25860]) + }] + ] +} + +exports['array/float4'] = { + format: 'text', + id: 1021, + tests: [ + ['{1.2, 3.4}', function (t, value) { + t.deepEqual(value, [1.2, 3.4]) + }] + ] +} + +exports['array/float8'] = { + format: 'text', + id: 1022, + tests: [ + ['{-12345678.1234567, 12345678.12345678}', function (t, value) { + t.deepEqual(value, [-12345678.1234567, 12345678.12345678]) + }] + ] +} + +exports['array/date'] = { + format: 'text', + id: 1182, + tests: [ + ['{2014-01-01,2015-12-31}', function (t, value) { + var expecteds = [new Date(2014, 0, 1), new Date(2015, 11, 31)] + t.equal(value.length, 2) + value.forEach(function (date, index) { + var expected = expecteds[index] + dateEquals( + expected.getUTCFullYear(), + expected.getUTCMonth(), + expected.getUTCDate(), + expected.getUTCHours(), 0, 0, 0)(t, date) + }) + }] + ] +} + +exports['array/interval'] = { + format: 'text', + id: 1187, + tests: [ + ['{01:02:03,1 day -00:00:03}', function (t, value) { + var expecteds = [{hours: 1, minutes: 2, seconds: 3}, + {days: 1, seconds: -3}] + t.equal(value.length, 2) + t.deepEqual(value, expecteds); + }] + ] +} + +exports['array/inet'] = { + format: 'text', + id: 1041, + tests: [ + ['{8.8.8.8}', function (t, value) { + t.deepEqual(value, ['8.8.8.8']); + }], + ['{2001:4860:4860::8888}', function (t, value) { + t.deepEqual(value, ['2001:4860:4860::8888']); + }], + ['{127.0.0.1,fd00:1::40e,1.2.3.4}', function (t, value) { + t.deepEqual(value, ['127.0.0.1', 'fd00:1::40e', '1.2.3.4']); + }] + ] +} + +exports['array/cidr'] = { + format: 'text', + id: 651, + tests: [ + ['{172.16.0.0/12}', function (t, value) { + t.deepEqual(value, ['172.16.0.0/12']); + }], + ['{fe80::/10}', function (t, value) { + t.deepEqual(value, ['fe80::/10']); + }], + ['{10.0.0.0/8,fc00::/7,192.168.0.0/24}', function (t, value) { + t.deepEqual(value, ['10.0.0.0/8', 'fc00::/7', '192.168.0.0/24']); + }] + ] +} + +exports['array/macaddr'] = { + format: 'text', + id: 1040, + tests: [ + ['{08:00:2b:01:02:03,16:10:9f:0d:66:00}', function (t, value) { + t.deepEqual(value, ['08:00:2b:01:02:03', '16:10:9f:0d:66:00']); + }] + ] +} + +exports['array/numrange'] = { + format: 'text', + id: 3907, + tests: [ + ['{"[1,2]","(4.5,8)","[10,40)","(-21.2,60.3]"}', function (t, value) { + t.deepEqual(value, ['[1,2]', '(4.5,8)', '[10,40)', '(-21.2,60.3]']); + }], + ['{"[,20]","[3,]","[,]","(,35)","(1,)","(,)"}', function (t, value) { + t.deepEqual(value, ['[,20]', '[3,]', '[,]', '(,35)', '(1,)', '(,)']); + }], + ['{"[,20)","[3,)","[,)","[,35)","[1,)","[,)"}', function (t, value) { + t.deepEqual(value, ['[,20)', '[3,)', '[,)', '[,35)', '[1,)', '[,)']); + }] + ] +} + +exports['binary-string/varchar'] = { + format: 'binary', + id: 1043, + tests: [ + ['bang', 'bang'] + ] +} + +exports['binary-integer/int4'] = { + format: 'binary', + id: 23, + tests: [ + [[0, 0, 0, 100], 100] + ] +} + +exports['binary-smallint/int2'] = { + format: 'binary', + id: 21, + tests: [ + [[0, 101], 101] + ] +} + +exports['binary-bigint/int8'] = { + format: 'binary', + id: 20, + tests: [ + [new Buffer([0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]), '9223372036854775807'] + ] +} + +exports['binary-oid'] = { + format: 'binary', + id: 26, + tests: [ + [[0, 0, 0, 103], 103] + ] +} + +exports['binary-numeric'] = { + format: 'binary', + id: 1700, + tests: [ + [ + [0, 2, 0, 0, 0, 0, 0, hex('0x64'), 0, 12, hex('0xd'), hex('0x48'), 0, 0, 0, 0], + 12.34 + ] + ] +} + +exports['binary-real/float4'] = { + format: 'binary', + id: 700, + tests: [ + [['0x41', '0x48', '0x00', '0x00'].map(hex), 12.5] + ] +} + +exports['binary-boolean'] = { + format: 'binary', + id: 16, + tests: [ + [[1], true], + [[0], false], + [null, null] + ] +} + +exports['binary-string'] = { + format: 'binary', + id: 25, + tests: [ + [ + new Buffer(['0x73', '0x6c', '0x61', '0x64', '0x64', '0x61'].map(hex)), + 'sladda' + ] + ] +} + +exports.point = { + format: 'text', + id: 600, + tests: [ + ['(25.1,50.5)', function (t, value) { + t.deepEqual(value, {x: 25.1, y: 50.5}) + }] + ] +} + +exports.circle = { + format: 'text', + id: 718, + tests: [ + ['<(25,10),5>', function (t, value) { + t.deepEqual(value, {x: 25, y: 10, radius: 5}) + }] + ] +} + +function hex (string) { + return parseInt(string, 16) +} + +function dateEquals () { + var timestamp = Date.UTC.apply(Date, arguments) + return function (t, value) { + t.equal(value.toUTCString(), new Date(timestamp).toUTCString()) + } +} diff --git a/bff/node_modules/pg/LICENSE b/bff/node_modules/pg/LICENSE new file mode 100644 index 0000000..5c14056 --- /dev/null +++ b/bff/node_modules/pg/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2010 - 2021 Brian Carlson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/pg/README.md b/bff/node_modules/pg/README.md new file mode 100644 index 0000000..bf4effe --- /dev/null +++ b/bff/node_modules/pg/README.md @@ -0,0 +1,95 @@ +# node-postgres + +[![Build Status](https://secure.travis-ci.org/brianc/node-postgres.svg?branch=master)](http://travis-ci.org/brianc/node-postgres) +NPM version +NPM downloads + +Non-blocking PostgreSQL client for Node.js. Pure JavaScript and optional native libpq bindings. + +## Install + +```sh +$ npm install pg +``` + +--- + +## :star: [Documentation](https://node-postgres.com) :star: + +### Features + +- Pure JavaScript client and native libpq bindings share _the same API_ +- Connection pooling +- Extensible JS ↔ PostgreSQL data-type coercion +- Supported PostgreSQL features + - Parameterized queries + - Named statements with query plan caching + - Async notifications with `LISTEN/NOTIFY` + - Bulk import & export with `COPY TO/COPY FROM` + +### Extras + +node-postgres is by design pretty light on abstractions. These are some handy modules we've been using over the years to complete the picture. +The entire list can be found on our [wiki](https://github.com/brianc/node-postgres/wiki/Extras). + +## Support + +node-postgres is free software. If you encounter a bug with the library please open an issue on the [GitHub repo](https://github.com/brianc/node-postgres). If you have questions unanswered by the documentation please open an issue pointing out how the documentation was unclear & I will do my best to make it better! + +When you open an issue please provide: + +- version of Node +- version of Postgres +- smallest possible snippet of code to reproduce the problem + +You can also follow me [@briancarlson](https://twitter.com/briancarlson) if that's your thing. I try to always announce noteworthy changes & developments with node-postgres on Twitter. + +## Sponsorship :two_hearts: + +node-postgres's continued development has been made possible in part by generous financial support from [the community](https://github.com/brianc/node-postgres/blob/master/SPONSORS.md). + +If you or your company are benefiting from node-postgres and would like to help keep the project financially sustainable [please consider supporting](https://github.com/sponsors/brianc) its development. + +### Featured sponsor + +Special thanks to [medplum](https://medplum.com) for their generous and thoughtful support of node-postgres! + +![medplum](https://raw.githubusercontent.com/medplum/medplum-logo/refs/heads/main/medplum-logo.png) + +## Contributing + +**:heart: contributions!** + +I will **happily** accept your pull request if it: + +- **has tests** +- looks reasonable +- does not break backwards compatibility + +If your change involves breaking backwards compatibility please please point that out in the pull request & we can discuss & plan when and how to release it and what type of documentation or communicate it will require. + +## Troubleshooting and FAQ + +The causes and solutions to common errors can be found among the [Frequently Asked Questions (FAQ)](https://github.com/brianc/node-postgres/wiki/FAQ) + +## License + +Copyright (c) 2010-2020 Brian Carlson (brian.m.carlson@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/pg/esm/index.mjs b/bff/node_modules/pg/esm/index.mjs new file mode 100644 index 0000000..587d80c --- /dev/null +++ b/bff/node_modules/pg/esm/index.mjs @@ -0,0 +1,20 @@ +// ESM wrapper for pg +import pg from '../lib/index.js' + +// Re-export all the properties +export const Client = pg.Client +export const Pool = pg.Pool +export const Connection = pg.Connection +export const types = pg.types +export const Query = pg.Query +export const DatabaseError = pg.DatabaseError +export const escapeIdentifier = pg.escapeIdentifier +export const escapeLiteral = pg.escapeLiteral +export const Result = pg.Result +export const TypeOverrides = pg.TypeOverrides + +// Also export the defaults +export const defaults = pg.defaults + +// Re-export the default +export default pg diff --git a/bff/node_modules/pg/lib/client.js b/bff/node_modules/pg/lib/client.js new file mode 100644 index 0000000..9200dde --- /dev/null +++ b/bff/node_modules/pg/lib/client.js @@ -0,0 +1,743 @@ +const EventEmitter = require('events').EventEmitter +const utils = require('./utils') +const nodeUtils = require('util') +const sasl = require('./crypto/sasl') +const TypeOverrides = require('./type-overrides') + +const ConnectionParameters = require('./connection-parameters') +const Query = require('./query') +const defaults = require('./defaults') +const Connection = require('./connection') +const crypto = require('./crypto/utils') + +const activeQueryDeprecationNotice = nodeUtils.deprecate( + () => {}, + 'Client.activeQuery is deprecated and will be removed in pg@9.0' +) + +const queryQueueDeprecationNotice = nodeUtils.deprecate( + () => {}, + 'Client.queryQueue is deprecated and will be removed in pg@9.0.' +) + +const pgPassDeprecationNotice = nodeUtils.deprecate( + () => {}, + 'pgpass support is deprecated and will be removed in pg@9.0. ' + + 'You can provide an async function as the password property to the Client/Pool constructor that returns a password instead. Within this function you can call the pgpass module in your own code.' +) + +const byoPromiseDeprecationNotice = nodeUtils.deprecate( + () => {}, + 'Passing a custom Promise implementation to the Client/Pool constructor is deprecated and will be removed in pg@9.0.' +) + +const queryQueueLengthDeprecationNotice = nodeUtils.deprecate( + () => {}, + 'Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead.' +) + +class Client extends EventEmitter { + constructor(config) { + super() + + this.connectionParameters = new ConnectionParameters(config) + this.user = this.connectionParameters.user + this.database = this.connectionParameters.database + this.port = this.connectionParameters.port + this.host = this.connectionParameters.host + + // "hiding" the password so it doesn't show up in stack traces + // or if the client is console.logged + Object.defineProperty(this, 'password', { + configurable: true, + enumerable: false, + writable: true, + value: this.connectionParameters.password, + }) + + this.replication = this.connectionParameters.replication + + const c = config || {} + + if (c.Promise) { + byoPromiseDeprecationNotice() + } + this._Promise = c.Promise || global.Promise + this._types = new TypeOverrides(c.types) + this._ending = false + this._ended = false + this._connecting = false + this._connected = false + this._connectionError = false + this._queryable = true + this._activeQuery = null + + this.enableChannelBinding = Boolean(c.enableChannelBinding) // set true to use SCRAM-SHA-256-PLUS when offered + this.connection = + c.connection || + new Connection({ + stream: c.stream, + ssl: this.connectionParameters.ssl, + keepAlive: c.keepAlive || false, + keepAliveInitialDelayMillis: c.keepAliveInitialDelayMillis || 0, + encoding: this.connectionParameters.client_encoding || 'utf8', + }) + this._queryQueue = [] + this.binary = c.binary || defaults.binary + this.processID = null + this.secretKey = null + this.ssl = this.connectionParameters.ssl || false + // As with Password, make SSL->Key (the private key) non-enumerable. + // It won't show up in stack traces + // or if the client is console.logged + if (this.ssl && this.ssl.key) { + Object.defineProperty(this.ssl, 'key', { + enumerable: false, + }) + } + + this._connectionTimeoutMillis = c.connectionTimeoutMillis || 0 + } + + get activeQuery() { + activeQueryDeprecationNotice() + return this._activeQuery + } + + set activeQuery(val) { + activeQueryDeprecationNotice() + this._activeQuery = val + } + + _getActiveQuery() { + return this._activeQuery + } + + _errorAllQueries(err) { + const enqueueError = (query) => { + process.nextTick(() => { + query.handleError(err, this.connection) + }) + } + + const activeQuery = this._getActiveQuery() + if (activeQuery) { + enqueueError(activeQuery) + this._activeQuery = null + } + + this._queryQueue.forEach(enqueueError) + this._queryQueue.length = 0 + } + + _connect(callback) { + const self = this + const con = this.connection + this._connectionCallback = callback + + if (this._connecting || this._connected) { + const err = new Error('Client has already been connected. You cannot reuse a client.') + process.nextTick(() => { + callback(err) + }) + return + } + this._connecting = true + + if (this._connectionTimeoutMillis > 0) { + this.connectionTimeoutHandle = setTimeout(() => { + con._ending = true + con.stream.destroy(new Error('timeout expired')) + }, this._connectionTimeoutMillis) + + if (this.connectionTimeoutHandle.unref) { + this.connectionTimeoutHandle.unref() + } + } + + if (this.host && this.host.indexOf('/') === 0) { + con.connect(this.host + '/.s.PGSQL.' + this.port) + } else { + con.connect(this.port, this.host) + } + + // once connection is established send startup message + con.on('connect', function () { + if (self.ssl) { + con.requestSsl() + } else { + con.startup(self.getStartupConf()) + } + }) + + con.on('sslconnect', function () { + con.startup(self.getStartupConf()) + }) + + this._attachListeners(con) + + con.once('end', () => { + const error = this._ending ? new Error('Connection terminated') : new Error('Connection terminated unexpectedly') + + clearTimeout(this.connectionTimeoutHandle) + this._errorAllQueries(error) + this._ended = true + + if (!this._ending) { + // if the connection is ended without us calling .end() + // on this client then we have an unexpected disconnection + // treat this as an error unless we've already emitted an error + // during connection. + if (this._connecting && !this._connectionError) { + if (this._connectionCallback) { + this._connectionCallback(error) + } else { + this._handleErrorEvent(error) + } + } else if (!this._connectionError) { + this._handleErrorEvent(error) + } + } + + process.nextTick(() => { + this.emit('end') + }) + }) + } + + connect(callback) { + if (callback) { + this._connect(callback) + return + } + + return new this._Promise((resolve, reject) => { + this._connect((error) => { + if (error) { + reject(error) + } else { + resolve(this) + } + }) + }) + } + + _attachListeners(con) { + // password request handling + con.on('authenticationCleartextPassword', this._handleAuthCleartextPassword.bind(this)) + // password request handling + con.on('authenticationMD5Password', this._handleAuthMD5Password.bind(this)) + // password request handling (SASL) + con.on('authenticationSASL', this._handleAuthSASL.bind(this)) + con.on('authenticationSASLContinue', this._handleAuthSASLContinue.bind(this)) + con.on('authenticationSASLFinal', this._handleAuthSASLFinal.bind(this)) + con.on('backendKeyData', this._handleBackendKeyData.bind(this)) + con.on('error', this._handleErrorEvent.bind(this)) + con.on('errorMessage', this._handleErrorMessage.bind(this)) + con.on('readyForQuery', this._handleReadyForQuery.bind(this)) + con.on('notice', this._handleNotice.bind(this)) + con.on('rowDescription', this._handleRowDescription.bind(this)) + con.on('dataRow', this._handleDataRow.bind(this)) + con.on('portalSuspended', this._handlePortalSuspended.bind(this)) + con.on('emptyQuery', this._handleEmptyQuery.bind(this)) + con.on('commandComplete', this._handleCommandComplete.bind(this)) + con.on('parseComplete', this._handleParseComplete.bind(this)) + con.on('copyInResponse', this._handleCopyInResponse.bind(this)) + con.on('copyData', this._handleCopyData.bind(this)) + con.on('notification', this._handleNotification.bind(this)) + } + + _getPassword(cb) { + const con = this.connection + if (typeof this.password === 'function') { + this._Promise + .resolve() + .then(() => this.password(this.connectionParameters)) + .then((pass) => { + if (pass !== undefined) { + if (typeof pass !== 'string') { + con.emit('error', new TypeError('Password must be a string')) + return + } + this.connectionParameters.password = this.password = pass + } else { + this.connectionParameters.password = this.password = null + } + cb() + }) + .catch((err) => { + con.emit('error', err) + }) + } else if (this.password !== null) { + cb() + } else { + try { + const pgPass = require('pgpass') + pgPass(this.connectionParameters, (pass) => { + if (undefined !== pass) { + pgPassDeprecationNotice() + this.connectionParameters.password = this.password = pass + } + cb() + }) + } catch (e) { + this.emit('error', e) + } + } + } + + _handleAuthCleartextPassword(msg) { + this._getPassword(() => { + this.connection.password(this.password) + }) + } + + _handleAuthMD5Password(msg) { + this._getPassword(async () => { + try { + const hashedPassword = await crypto.postgresMd5PasswordHash(this.user, this.password, msg.salt) + this.connection.password(hashedPassword) + } catch (e) { + this.emit('error', e) + } + }) + } + + _handleAuthSASL(msg) { + this._getPassword(() => { + try { + this.saslSession = sasl.startSession(msg.mechanisms, this.enableChannelBinding && this.connection.stream) + this.connection.sendSASLInitialResponseMessage(this.saslSession.mechanism, this.saslSession.response) + } catch (err) { + this.connection.emit('error', err) + } + }) + } + + async _handleAuthSASLContinue(msg) { + try { + await sasl.continueSession( + this.saslSession, + this.password, + msg.data, + this.enableChannelBinding && this.connection.stream + ) + this.connection.sendSCRAMClientFinalMessage(this.saslSession.response) + } catch (err) { + this.connection.emit('error', err) + } + } + + _handleAuthSASLFinal(msg) { + try { + sasl.finalizeSession(this.saslSession, msg.data) + this.saslSession = null + } catch (err) { + this.connection.emit('error', err) + } + } + + _handleBackendKeyData(msg) { + this.processID = msg.processID + this.secretKey = msg.secretKey + } + + _handleReadyForQuery(msg) { + if (this._connecting) { + this._connecting = false + this._connected = true + clearTimeout(this.connectionTimeoutHandle) + + // process possible callback argument to Client#connect + if (this._connectionCallback) { + this._connectionCallback(null, this) + // remove callback for proper error handling + // after the connect event + this._connectionCallback = null + } + this.emit('connect') + } + const activeQuery = this._getActiveQuery() + this._activeQuery = null + this.readyForQuery = true + if (activeQuery) { + activeQuery.handleReadyForQuery(this.connection) + } + this._pulseQueryQueue() + } + + // if we receive an error event or error message + // during the connection process we handle it here + _handleErrorWhileConnecting(err) { + if (this._connectionError) { + // TODO(bmc): this is swallowing errors - we shouldn't do this + return + } + this._connectionError = true + clearTimeout(this.connectionTimeoutHandle) + if (this._connectionCallback) { + return this._connectionCallback(err) + } + this.emit('error', err) + } + + // if we're connected and we receive an error event from the connection + // this means the socket is dead - do a hard abort of all queries and emit + // the socket error on the client as well + _handleErrorEvent(err) { + if (this._connecting) { + return this._handleErrorWhileConnecting(err) + } + this._queryable = false + this._errorAllQueries(err) + this.emit('error', err) + } + + // handle error messages from the postgres backend + _handleErrorMessage(msg) { + if (this._connecting) { + return this._handleErrorWhileConnecting(msg) + } + const activeQuery = this._getActiveQuery() + + if (!activeQuery) { + this._handleErrorEvent(msg) + return + } + + this._activeQuery = null + activeQuery.handleError(msg, this.connection) + } + + _handleRowDescription(msg) { + const activeQuery = this._getActiveQuery() + if (activeQuery == null) { + const error = new Error('Received unexpected rowDescription message from backend.') + this._handleErrorEvent(error) + return + } + // delegate rowDescription to active query + activeQuery.handleRowDescription(msg) + } + + _handleDataRow(msg) { + const activeQuery = this._getActiveQuery() + if (activeQuery == null) { + const error = new Error('Received unexpected dataRow message from backend.') + this._handleErrorEvent(error) + return + } + // delegate dataRow to active query + activeQuery.handleDataRow(msg) + } + + _handlePortalSuspended(msg) { + const activeQuery = this._getActiveQuery() + if (activeQuery == null) { + const error = new Error('Received unexpected portalSuspended message from backend.') + this._handleErrorEvent(error) + return + } + // delegate portalSuspended to active query + activeQuery.handlePortalSuspended(this.connection) + } + + _handleEmptyQuery(msg) { + const activeQuery = this._getActiveQuery() + if (activeQuery == null) { + const error = new Error('Received unexpected emptyQuery message from backend.') + this._handleErrorEvent(error) + return + } + // delegate emptyQuery to active query + activeQuery.handleEmptyQuery(this.connection) + } + + _handleCommandComplete(msg) { + const activeQuery = this._getActiveQuery() + if (activeQuery == null) { + const error = new Error('Received unexpected commandComplete message from backend.') + this._handleErrorEvent(error) + return + } + // delegate commandComplete to active query + activeQuery.handleCommandComplete(msg, this.connection) + } + + _handleParseComplete() { + const activeQuery = this._getActiveQuery() + if (activeQuery == null) { + const error = new Error('Received unexpected parseComplete message from backend.') + this._handleErrorEvent(error) + return + } + // if a prepared statement has a name and properly parses + // we track that its already been executed so we don't parse + // it again on the same client + if (activeQuery.name) { + this.connection.parsedStatements[activeQuery.name] = activeQuery.text + } + } + + _handleCopyInResponse(msg) { + const activeQuery = this._getActiveQuery() + if (activeQuery == null) { + const error = new Error('Received unexpected copyInResponse message from backend.') + this._handleErrorEvent(error) + return + } + activeQuery.handleCopyInResponse(this.connection) + } + + _handleCopyData(msg) { + const activeQuery = this._getActiveQuery() + if (activeQuery == null) { + const error = new Error('Received unexpected copyData message from backend.') + this._handleErrorEvent(error) + return + } + activeQuery.handleCopyData(msg, this.connection) + } + + _handleNotification(msg) { + this.emit('notification', msg) + } + + _handleNotice(msg) { + this.emit('notice', msg) + } + + getStartupConf() { + const params = this.connectionParameters + + const data = { + user: params.user, + database: params.database, + } + + const appName = params.application_name || params.fallback_application_name + if (appName) { + data.application_name = appName + } + if (params.replication) { + data.replication = '' + params.replication + } + if (params.statement_timeout) { + data.statement_timeout = String(parseInt(params.statement_timeout, 10)) + } + if (params.lock_timeout) { + data.lock_timeout = String(parseInt(params.lock_timeout, 10)) + } + if (params.idle_in_transaction_session_timeout) { + data.idle_in_transaction_session_timeout = String(parseInt(params.idle_in_transaction_session_timeout, 10)) + } + if (params.options) { + data.options = params.options + } + + return data + } + + cancel(client, query) { + if (client.activeQuery === query) { + const con = this.connection + + if (this.host && this.host.indexOf('/') === 0) { + con.connect(this.host + '/.s.PGSQL.' + this.port) + } else { + con.connect(this.port, this.host) + } + + // once connection is established send cancel message + con.on('connect', function () { + con.cancel(client.processID, client.secretKey) + }) + } else if (client._queryQueue.indexOf(query) !== -1) { + client._queryQueue.splice(client._queryQueue.indexOf(query), 1) + } + } + + setTypeParser(oid, format, parseFn) { + return this._types.setTypeParser(oid, format, parseFn) + } + + getTypeParser(oid, format) { + return this._types.getTypeParser(oid, format) + } + + // escapeIdentifier and escapeLiteral moved to utility functions & exported + // on PG + // re-exported here for backwards compatibility + escapeIdentifier(str) { + return utils.escapeIdentifier(str) + } + + escapeLiteral(str) { + return utils.escapeLiteral(str) + } + + _pulseQueryQueue() { + if (this.readyForQuery === true) { + this._activeQuery = this._queryQueue.shift() + const activeQuery = this._getActiveQuery() + if (activeQuery) { + this.readyForQuery = false + this.hasExecuted = true + + const queryError = activeQuery.submit(this.connection) + if (queryError) { + process.nextTick(() => { + activeQuery.handleError(queryError, this.connection) + this.readyForQuery = true + this._pulseQueryQueue() + }) + } + } else if (this.hasExecuted) { + this._activeQuery = null + this.emit('drain') + } + } + } + + query(config, values, callback) { + // can take in strings, config object or query object + let query + let result + let readTimeout + let readTimeoutTimer + let queryCallback + + if (config === null || config === undefined) { + throw new TypeError('Client was passed a null or undefined query') + } else if (typeof config.submit === 'function') { + readTimeout = config.query_timeout || this.connectionParameters.query_timeout + result = query = config + if (!query.callback) { + if (typeof values === 'function') { + query.callback = values + } else if (callback) { + query.callback = callback + } + } + } else { + readTimeout = config.query_timeout || this.connectionParameters.query_timeout + query = new Query(config, values, callback) + if (!query.callback) { + result = new this._Promise((resolve, reject) => { + query.callback = (err, res) => (err ? reject(err) : resolve(res)) + }).catch((err) => { + // replace the stack trace that leads to `TCP.onStreamRead` with one that leads back to the + // application that created the query + Error.captureStackTrace(err) + throw err + }) + } + } + + if (readTimeout) { + queryCallback = query.callback || (() => {}) + + readTimeoutTimer = setTimeout(() => { + const error = new Error('Query read timeout') + + process.nextTick(() => { + query.handleError(error, this.connection) + }) + + queryCallback(error) + + // we already returned an error, + // just do nothing if query completes + query.callback = () => {} + + // Remove from queue + const index = this._queryQueue.indexOf(query) + if (index > -1) { + this._queryQueue.splice(index, 1) + } + + this._pulseQueryQueue() + }, readTimeout) + + query.callback = (err, res) => { + clearTimeout(readTimeoutTimer) + queryCallback(err, res) + } + } + + if (this.binary && !query.binary) { + query.binary = true + } + + if (query._result && !query._result._types) { + query._result._types = this._types + } + + if (!this._queryable) { + process.nextTick(() => { + query.handleError(new Error('Client has encountered a connection error and is not queryable'), this.connection) + }) + return result + } + + if (this._ending) { + process.nextTick(() => { + query.handleError(new Error('Client was closed and is not queryable'), this.connection) + }) + return result + } + + if (this._queryQueue.length > 0) { + queryQueueLengthDeprecationNotice() + } + this._queryQueue.push(query) + this._pulseQueryQueue() + return result + } + + ref() { + this.connection.ref() + } + + unref() { + this.connection.unref() + } + + end(cb) { + this._ending = true + + // if we have never connected, then end is a noop, callback immediately + if (!this.connection._connecting || this._ended) { + if (cb) { + cb() + } else { + return this._Promise.resolve() + } + } + + if (this._getActiveQuery() || !this._queryable) { + // if we have an active query we need to force a disconnect + // on the socket - otherwise a hung query could block end forever + this.connection.stream.destroy() + } else { + this.connection.end() + } + + if (cb) { + this.connection.once('end', cb) + } else { + return new this._Promise((resolve) => { + this.connection.once('end', resolve) + }) + } + } + get queryQueue() { + queryQueueDeprecationNotice() + return this._queryQueue + } +} + +// expose a Query constructor +Client.Query = Query + +module.exports = Client diff --git a/bff/node_modules/pg/lib/connection-parameters.js b/bff/node_modules/pg/lib/connection-parameters.js new file mode 100644 index 0000000..c153932 --- /dev/null +++ b/bff/node_modules/pg/lib/connection-parameters.js @@ -0,0 +1,171 @@ +'use strict' + +const dns = require('dns') + +const defaults = require('./defaults') + +const parse = require('pg-connection-string').parse // parses a connection string + +const val = function (key, config, envVar) { + if (config[key]) { + return config[key] + } + + if (envVar === undefined) { + envVar = process.env['PG' + key.toUpperCase()] + } else if (envVar === false) { + // do nothing ... use false + } else { + envVar = process.env[envVar] + } + + return envVar || defaults[key] +} + +const readSSLConfigFromEnvironment = function () { + switch (process.env.PGSSLMODE) { + case 'disable': + return false + case 'prefer': + case 'require': + case 'verify-ca': + case 'verify-full': + return true + case 'no-verify': + return { rejectUnauthorized: false } + } + return defaults.ssl +} + +// Convert arg to a string, surround in single quotes, and escape single quotes and backslashes +const quoteParamValue = function (value) { + return "'" + ('' + value).replace(/\\/g, '\\\\').replace(/'/g, "\\'") + "'" +} + +const add = function (params, config, paramName) { + const value = config[paramName] + if (value !== undefined && value !== null) { + params.push(paramName + '=' + quoteParamValue(value)) + } +} + +class ConnectionParameters { + constructor(config) { + // if a string is passed, it is a raw connection string so we parse it into a config + config = typeof config === 'string' ? parse(config) : config || {} + + // if the config has a connectionString defined, parse IT into the config we use + // this will override other default values with what is stored in connectionString + if (config.connectionString) { + config = Object.assign({}, config, parse(config.connectionString)) + } + + this.user = val('user', config) + this.database = val('database', config) + + if (this.database === undefined) { + this.database = this.user + } + + this.port = parseInt(val('port', config), 10) + this.host = val('host', config) + + // "hiding" the password so it doesn't show up in stack traces + // or if the client is console.logged + Object.defineProperty(this, 'password', { + configurable: true, + enumerable: false, + writable: true, + value: val('password', config), + }) + + this.binary = val('binary', config) + this.options = val('options', config) + + this.ssl = typeof config.ssl === 'undefined' ? readSSLConfigFromEnvironment() : config.ssl + + if (typeof this.ssl === 'string') { + if (this.ssl === 'true') { + this.ssl = true + } + } + // support passing in ssl=no-verify via connection string + if (this.ssl === 'no-verify') { + this.ssl = { rejectUnauthorized: false } + } + if (this.ssl && this.ssl.key) { + Object.defineProperty(this.ssl, 'key', { + enumerable: false, + }) + } + + this.client_encoding = val('client_encoding', config) + this.replication = val('replication', config) + // a domain socket begins with '/' + this.isDomainSocket = !(this.host || '').indexOf('/') + + this.application_name = val('application_name', config, 'PGAPPNAME') + this.fallback_application_name = val('fallback_application_name', config, false) + this.statement_timeout = val('statement_timeout', config, false) + this.lock_timeout = val('lock_timeout', config, false) + this.idle_in_transaction_session_timeout = val('idle_in_transaction_session_timeout', config, false) + this.query_timeout = val('query_timeout', config, false) + + if (config.connectionTimeoutMillis === undefined) { + this.connect_timeout = process.env.PGCONNECT_TIMEOUT || 0 + } else { + this.connect_timeout = Math.floor(config.connectionTimeoutMillis / 1000) + } + + if (config.keepAlive === false) { + this.keepalives = 0 + } else if (config.keepAlive === true) { + this.keepalives = 1 + } + + if (typeof config.keepAliveInitialDelayMillis === 'number') { + this.keepalives_idle = Math.floor(config.keepAliveInitialDelayMillis / 1000) + } + } + + getLibpqConnectionString(cb) { + const params = [] + add(params, this, 'user') + add(params, this, 'password') + add(params, this, 'port') + add(params, this, 'application_name') + add(params, this, 'fallback_application_name') + add(params, this, 'connect_timeout') + add(params, this, 'options') + + const ssl = typeof this.ssl === 'object' ? this.ssl : this.ssl ? { sslmode: this.ssl } : {} + add(params, ssl, 'sslmode') + add(params, ssl, 'sslca') + add(params, ssl, 'sslkey') + add(params, ssl, 'sslcert') + add(params, ssl, 'sslrootcert') + + if (this.database) { + params.push('dbname=' + quoteParamValue(this.database)) + } + if (this.replication) { + params.push('replication=' + quoteParamValue(this.replication)) + } + if (this.host) { + params.push('host=' + quoteParamValue(this.host)) + } + if (this.isDomainSocket) { + return cb(null, params.join(' ')) + } + if (this.client_encoding) { + params.push('client_encoding=' + quoteParamValue(this.client_encoding)) + } + dns.lookup(this.host, function (err, address) { + if (err) return cb(err, null) + params.push('hostaddr=' + quoteParamValue(address)) + return cb(null, params.join(' ')) + }) + } +} + +module.exports = ConnectionParameters diff --git a/bff/node_modules/pg/lib/connection.js b/bff/node_modules/pg/lib/connection.js new file mode 100644 index 0000000..027f939 --- /dev/null +++ b/bff/node_modules/pg/lib/connection.js @@ -0,0 +1,221 @@ +'use strict' + +const EventEmitter = require('events').EventEmitter + +const { parse, serialize } = require('pg-protocol') +const { getStream, getSecureStream } = require('./stream') + +const flushBuffer = serialize.flush() +const syncBuffer = serialize.sync() +const endBuffer = serialize.end() + +// TODO(bmc) support binary mode at some point +class Connection extends EventEmitter { + constructor(config) { + super() + config = config || {} + + this.stream = config.stream || getStream(config.ssl) + if (typeof this.stream === 'function') { + this.stream = this.stream(config) + } + + this._keepAlive = config.keepAlive + this._keepAliveInitialDelayMillis = config.keepAliveInitialDelayMillis + this.parsedStatements = {} + this.ssl = config.ssl || false + this._ending = false + this._emitMessage = false + const self = this + this.on('newListener', function (eventName) { + if (eventName === 'message') { + self._emitMessage = true + } + }) + } + + connect(port, host) { + const self = this + + this._connecting = true + this.stream.setNoDelay(true) + this.stream.connect(port, host) + + this.stream.once('connect', function () { + if (self._keepAlive) { + self.stream.setKeepAlive(true, self._keepAliveInitialDelayMillis) + } + self.emit('connect') + }) + + const reportStreamError = function (error) { + // errors about disconnections should be ignored during disconnect + if (self._ending && (error.code === 'ECONNRESET' || error.code === 'EPIPE')) { + return + } + self.emit('error', error) + } + this.stream.on('error', reportStreamError) + + this.stream.on('close', function () { + self.emit('end') + }) + + if (!this.ssl) { + return this.attachListeners(this.stream) + } + + this.stream.once('data', function (buffer) { + const responseCode = buffer.toString('utf8') + switch (responseCode) { + case 'S': // Server supports SSL connections, continue with a secure connection + break + case 'N': // Server does not support SSL connections + self.stream.end() + return self.emit('error', new Error('The server does not support SSL connections')) + default: + // Any other response byte, including 'E' (ErrorResponse) indicating a server error + self.stream.end() + return self.emit('error', new Error('There was an error establishing an SSL connection')) + } + const options = { + socket: self.stream, + } + + if (self.ssl !== true) { + Object.assign(options, self.ssl) + + if ('key' in self.ssl) { + options.key = self.ssl.key + } + } + + const net = require('net') + if (net.isIP && net.isIP(host) === 0) { + options.servername = host + } + try { + self.stream = getSecureStream(options) + } catch (err) { + return self.emit('error', err) + } + self.attachListeners(self.stream) + self.stream.on('error', reportStreamError) + + self.emit('sslconnect') + }) + } + + attachListeners(stream) { + parse(stream, (msg) => { + const eventName = msg.name === 'error' ? 'errorMessage' : msg.name + if (this._emitMessage) { + this.emit('message', msg) + } + this.emit(eventName, msg) + }) + } + + requestSsl() { + this.stream.write(serialize.requestSsl()) + } + + startup(config) { + this.stream.write(serialize.startup(config)) + } + + cancel(processID, secretKey) { + this._send(serialize.cancel(processID, secretKey)) + } + + password(password) { + this._send(serialize.password(password)) + } + + sendSASLInitialResponseMessage(mechanism, initialResponse) { + this._send(serialize.sendSASLInitialResponseMessage(mechanism, initialResponse)) + } + + sendSCRAMClientFinalMessage(additionalData) { + this._send(serialize.sendSCRAMClientFinalMessage(additionalData)) + } + + _send(buffer) { + if (!this.stream.writable) { + return false + } + return this.stream.write(buffer) + } + + query(text) { + this._send(serialize.query(text)) + } + + // send parse message + parse(query) { + this._send(serialize.parse(query)) + } + + // send bind message + bind(config) { + this._send(serialize.bind(config)) + } + + // send execute message + execute(config) { + this._send(serialize.execute(config)) + } + + flush() { + if (this.stream.writable) { + this.stream.write(flushBuffer) + } + } + + sync() { + this._ending = true + this._send(syncBuffer) + } + + ref() { + this.stream.ref() + } + + unref() { + this.stream.unref() + } + + end() { + // 0x58 = 'X' + this._ending = true + if (!this._connecting || !this.stream.writable) { + this.stream.end() + return + } + return this.stream.write(endBuffer, () => { + this.stream.end() + }) + } + + close(msg) { + this._send(serialize.close(msg)) + } + + describe(msg) { + this._send(serialize.describe(msg)) + } + + sendCopyFromChunk(chunk) { + this._send(serialize.copyData(chunk)) + } + + endCopyFrom() { + this._send(serialize.copyDone()) + } + + sendCopyFail(msg) { + this._send(serialize.copyFail(msg)) + } +} + +module.exports = Connection diff --git a/bff/node_modules/pg/lib/crypto/cert-signatures.js b/bff/node_modules/pg/lib/crypto/cert-signatures.js new file mode 100644 index 0000000..8d8df34 --- /dev/null +++ b/bff/node_modules/pg/lib/crypto/cert-signatures.js @@ -0,0 +1,122 @@ +function x509Error(msg, cert) { + return new Error('SASL channel binding: ' + msg + ' when parsing public certificate ' + cert.toString('base64')) +} + +function readASN1Length(data, index) { + let length = data[index++] + if (length < 0x80) return { length, index } + + const lengthBytes = length & 0x7f + if (lengthBytes > 4) throw x509Error('bad length', data) + + length = 0 + for (let i = 0; i < lengthBytes; i++) { + length = (length << 8) | data[index++] + } + + return { length, index } +} + +function readASN1OID(data, index) { + if (data[index++] !== 0x6) throw x509Error('non-OID data', data) // 6 = OID + + const { length: OIDLength, index: indexAfterOIDLength } = readASN1Length(data, index) + index = indexAfterOIDLength + const lastIndex = index + OIDLength + + const byte1 = data[index++] + let oid = ((byte1 / 40) >> 0) + '.' + (byte1 % 40) + + while (index < lastIndex) { + // loop over numbers in OID + let value = 0 + while (index < lastIndex) { + // loop over bytes in number + const nextByte = data[index++] + value = (value << 7) | (nextByte & 0x7f) + if (nextByte < 0x80) break + } + oid += '.' + value + } + + return { oid, index } +} + +function expectASN1Seq(data, index) { + if (data[index++] !== 0x30) throw x509Error('non-sequence data', data) // 30 = Sequence + return readASN1Length(data, index) +} + +function signatureAlgorithmHashFromCertificate(data, index) { + // read this thread: https://www.postgresql.org/message-id/17760-b6c61e752ec07060%40postgresql.org + if (index === undefined) index = 0 + index = expectASN1Seq(data, index).index + const { length: certInfoLength, index: indexAfterCertInfoLength } = expectASN1Seq(data, index) + index = indexAfterCertInfoLength + certInfoLength // skip over certificate info + index = expectASN1Seq(data, index).index // skip over signature length field + const { oid, index: indexAfterOID } = readASN1OID(data, index) + switch (oid) { + // RSA + case '1.2.840.113549.1.1.4': + return 'MD5' + case '1.2.840.113549.1.1.5': + return 'SHA-1' + case '1.2.840.113549.1.1.11': + return 'SHA-256' + case '1.2.840.113549.1.1.12': + return 'SHA-384' + case '1.2.840.113549.1.1.13': + return 'SHA-512' + case '1.2.840.113549.1.1.14': + return 'SHA-224' + case '1.2.840.113549.1.1.15': + return 'SHA512-224' + case '1.2.840.113549.1.1.16': + return 'SHA512-256' + // ECDSA + case '1.2.840.10045.4.1': + return 'SHA-1' + case '1.2.840.10045.4.3.1': + return 'SHA-224' + case '1.2.840.10045.4.3.2': + return 'SHA-256' + case '1.2.840.10045.4.3.3': + return 'SHA-384' + case '1.2.840.10045.4.3.4': + return 'SHA-512' + // RSASSA-PSS: hash is indicated separately + case '1.2.840.113549.1.1.10': { + index = indexAfterOID + index = expectASN1Seq(data, index).index + if (data[index++] !== 0xa0) throw x509Error('non-tag data', data) // a0 = constructed tag 0 + index = readASN1Length(data, index).index // skip over tag length field + index = expectASN1Seq(data, index).index // skip over sequence length field + const { oid: hashOID } = readASN1OID(data, index) + switch (hashOID) { + // standalone hash OIDs + case '1.2.840.113549.2.5': + return 'MD5' + case '1.3.14.3.2.26': + return 'SHA-1' + case '2.16.840.1.101.3.4.2.1': + return 'SHA-256' + case '2.16.840.1.101.3.4.2.2': + return 'SHA-384' + case '2.16.840.1.101.3.4.2.3': + return 'SHA-512' + } + throw x509Error('unknown hash OID ' + hashOID, data) + } + // Ed25519 -- see https: return//github.com/openssl/openssl/issues/15477 + case '1.3.101.110': + case '1.3.101.112': // ph + return 'SHA-512' + // Ed448 -- still not in pg 17.2 (if supported, digest would be SHAKE256 x 64 bytes) + case '1.3.101.111': + case '1.3.101.113': // ph + throw x509Error('Ed448 certificate channel binding is not currently supported by Postgres') + } + throw x509Error('unknown OID ' + oid, data) +} + +module.exports = { signatureAlgorithmHashFromCertificate } diff --git a/bff/node_modules/pg/lib/crypto/sasl.js b/bff/node_modules/pg/lib/crypto/sasl.js new file mode 100644 index 0000000..47b7761 --- /dev/null +++ b/bff/node_modules/pg/lib/crypto/sasl.js @@ -0,0 +1,212 @@ +'use strict' +const crypto = require('./utils') +const { signatureAlgorithmHashFromCertificate } = require('./cert-signatures') + +function startSession(mechanisms, stream) { + const candidates = ['SCRAM-SHA-256'] + if (stream) candidates.unshift('SCRAM-SHA-256-PLUS') // higher-priority, so placed first + + const mechanism = candidates.find((candidate) => mechanisms.includes(candidate)) + + if (!mechanism) { + throw new Error('SASL: Only mechanism(s) ' + candidates.join(' and ') + ' are supported') + } + + if (mechanism === 'SCRAM-SHA-256-PLUS' && typeof stream.getPeerCertificate !== 'function') { + // this should never happen if we are really talking to a Postgres server + throw new Error('SASL: Mechanism SCRAM-SHA-256-PLUS requires a certificate') + } + + const clientNonce = crypto.randomBytes(18).toString('base64') + const gs2Header = mechanism === 'SCRAM-SHA-256-PLUS' ? 'p=tls-server-end-point' : stream ? 'y' : 'n' + + return { + mechanism, + clientNonce, + response: gs2Header + ',,n=*,r=' + clientNonce, + message: 'SASLInitialResponse', + } +} + +async function continueSession(session, password, serverData, stream) { + if (session.message !== 'SASLInitialResponse') { + throw new Error('SASL: Last message was not SASLInitialResponse') + } + if (typeof password !== 'string') { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string') + } + if (password === '') { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a non-empty string') + } + if (typeof serverData !== 'string') { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: serverData must be a string') + } + + const sv = parseServerFirstMessage(serverData) + + if (!sv.nonce.startsWith(session.clientNonce)) { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce does not start with client nonce') + } else if (sv.nonce.length === session.clientNonce.length) { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce is too short') + } + + const clientFirstMessageBare = 'n=*,r=' + session.clientNonce + const serverFirstMessage = 'r=' + sv.nonce + ',s=' + sv.salt + ',i=' + sv.iteration + + // without channel binding: + let channelBinding = stream ? 'eSws' : 'biws' // 'y,,' or 'n,,', base64-encoded + + // override if channel binding is in use: + if (session.mechanism === 'SCRAM-SHA-256-PLUS') { + const peerCert = stream.getPeerCertificate().raw + let hashName = signatureAlgorithmHashFromCertificate(peerCert) + if (hashName === 'MD5' || hashName === 'SHA-1') hashName = 'SHA-256' + const certHash = await crypto.hashByName(hashName, peerCert) + const bindingData = Buffer.concat([Buffer.from('p=tls-server-end-point,,'), Buffer.from(certHash)]) + channelBinding = bindingData.toString('base64') + } + + const clientFinalMessageWithoutProof = 'c=' + channelBinding + ',r=' + sv.nonce + const authMessage = clientFirstMessageBare + ',' + serverFirstMessage + ',' + clientFinalMessageWithoutProof + + const saltBytes = Buffer.from(sv.salt, 'base64') + const saltedPassword = await crypto.deriveKey(password, saltBytes, sv.iteration) + const clientKey = await crypto.hmacSha256(saltedPassword, 'Client Key') + const storedKey = await crypto.sha256(clientKey) + const clientSignature = await crypto.hmacSha256(storedKey, authMessage) + const clientProof = xorBuffers(Buffer.from(clientKey), Buffer.from(clientSignature)).toString('base64') + const serverKey = await crypto.hmacSha256(saltedPassword, 'Server Key') + const serverSignatureBytes = await crypto.hmacSha256(serverKey, authMessage) + + session.message = 'SASLResponse' + session.serverSignature = Buffer.from(serverSignatureBytes).toString('base64') + session.response = clientFinalMessageWithoutProof + ',p=' + clientProof +} + +function finalizeSession(session, serverData) { + if (session.message !== 'SASLResponse') { + throw new Error('SASL: Last message was not SASLResponse') + } + if (typeof serverData !== 'string') { + throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: serverData must be a string') + } + + const { serverSignature } = parseServerFinalMessage(serverData) + + if (serverSignature !== session.serverSignature) { + throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature does not match') + } +} + +/** + * printable = %x21-2B / %x2D-7E + * ;; Printable ASCII except ",". + * ;; Note that any "printable" is also + * ;; a valid "value". + */ +function isPrintableChars(text) { + if (typeof text !== 'string') { + throw new TypeError('SASL: text must be a string') + } + return text + .split('') + .map((_, i) => text.charCodeAt(i)) + .every((c) => (c >= 0x21 && c <= 0x2b) || (c >= 0x2d && c <= 0x7e)) +} + +/** + * base64-char = ALPHA / DIGIT / "/" / "+" + * + * base64-4 = 4base64-char + * + * base64-3 = 3base64-char "=" + * + * base64-2 = 2base64-char "==" + * + * base64 = *base64-4 [base64-3 / base64-2] + */ +function isBase64(text) { + return /^(?:[a-zA-Z0-9+/]{4})*(?:[a-zA-Z0-9+/]{2}==|[a-zA-Z0-9+/]{3}=)?$/.test(text) +} + +function parseAttributePairs(text) { + if (typeof text !== 'string') { + throw new TypeError('SASL: attribute pairs text must be a string') + } + + return new Map( + text.split(',').map((attrValue) => { + if (!/^.=/.test(attrValue)) { + throw new Error('SASL: Invalid attribute pair entry') + } + const name = attrValue[0] + const value = attrValue.substring(2) + return [name, value] + }) + ) +} + +function parseServerFirstMessage(data) { + const attrPairs = parseAttributePairs(data) + + const nonce = attrPairs.get('r') + if (!nonce) { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce missing') + } else if (!isPrintableChars(nonce)) { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce must only contain printable characters') + } + const salt = attrPairs.get('s') + if (!salt) { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: salt missing') + } else if (!isBase64(salt)) { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: salt must be base64') + } + const iterationText = attrPairs.get('i') + if (!iterationText) { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration missing') + } else if (!/^[1-9][0-9]*$/.test(iterationText)) { + throw new Error('SASL: SCRAM-SERVER-FIRST-MESSAGE: invalid iteration count') + } + const iteration = parseInt(iterationText, 10) + + return { + nonce, + salt, + iteration, + } +} + +function parseServerFinalMessage(serverData) { + const attrPairs = parseAttributePairs(serverData) + const serverSignature = attrPairs.get('v') + if (!serverSignature) { + throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature is missing') + } else if (!isBase64(serverSignature)) { + throw new Error('SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature must be base64') + } + return { + serverSignature, + } +} + +function xorBuffers(a, b) { + if (!Buffer.isBuffer(a)) { + throw new TypeError('first argument must be a Buffer') + } + if (!Buffer.isBuffer(b)) { + throw new TypeError('second argument must be a Buffer') + } + if (a.length !== b.length) { + throw new Error('Buffer lengths must match') + } + if (a.length === 0) { + throw new Error('Buffers cannot be empty') + } + return Buffer.from(a.map((_, i) => a[i] ^ b[i])) +} + +module.exports = { + startSession, + continueSession, + finalizeSession, +} diff --git a/bff/node_modules/pg/lib/crypto/utils-legacy.js b/bff/node_modules/pg/lib/crypto/utils-legacy.js new file mode 100644 index 0000000..d70fdb6 --- /dev/null +++ b/bff/node_modules/pg/lib/crypto/utils-legacy.js @@ -0,0 +1,43 @@ +'use strict' +// This file contains crypto utility functions for versions of Node.js < 15.0.0, +// which does not support the WebCrypto.subtle API. + +const nodeCrypto = require('crypto') + +function md5(string) { + return nodeCrypto.createHash('md5').update(string, 'utf-8').digest('hex') +} + +// See AuthenticationMD5Password at https://www.postgresql.org/docs/current/static/protocol-flow.html +function postgresMd5PasswordHash(user, password, salt) { + const inner = md5(password + user) + const outer = md5(Buffer.concat([Buffer.from(inner), salt])) + return 'md5' + outer +} + +function sha256(text) { + return nodeCrypto.createHash('sha256').update(text).digest() +} + +function hashByName(hashName, text) { + hashName = hashName.replace(/(\D)-/, '$1') // e.g. SHA-256 -> SHA256 + return nodeCrypto.createHash(hashName).update(text).digest() +} + +function hmacSha256(key, msg) { + return nodeCrypto.createHmac('sha256', key).update(msg).digest() +} + +async function deriveKey(password, salt, iterations) { + return nodeCrypto.pbkdf2Sync(password, salt, iterations, 32, 'sha256') +} + +module.exports = { + postgresMd5PasswordHash, + randomBytes: nodeCrypto.randomBytes, + deriveKey, + sha256, + hashByName, + hmacSha256, + md5, +} diff --git a/bff/node_modules/pg/lib/crypto/utils-webcrypto.js b/bff/node_modules/pg/lib/crypto/utils-webcrypto.js new file mode 100644 index 0000000..65aa4a1 --- /dev/null +++ b/bff/node_modules/pg/lib/crypto/utils-webcrypto.js @@ -0,0 +1,89 @@ +const nodeCrypto = require('crypto') + +module.exports = { + postgresMd5PasswordHash, + randomBytes, + deriveKey, + sha256, + hashByName, + hmacSha256, + md5, +} + +/** + * The Web Crypto API - grabbed from the Node.js library or the global + * @type Crypto + */ +// eslint-disable-next-line no-undef +const webCrypto = nodeCrypto.webcrypto || globalThis.crypto +/** + * The SubtleCrypto API for low level crypto operations. + * @type SubtleCrypto + */ +const subtleCrypto = webCrypto.subtle +const textEncoder = new TextEncoder() + +/** + * + * @param {*} length + * @returns + */ +function randomBytes(length) { + return webCrypto.getRandomValues(Buffer.alloc(length)) +} + +async function md5(string) { + try { + return nodeCrypto.createHash('md5').update(string, 'utf-8').digest('hex') + } catch (e) { + // `createHash()` failed so we are probably not in Node.js, use the WebCrypto API instead. + // Note that the MD5 algorithm on WebCrypto is not available in Node.js. + // This is why we cannot just use WebCrypto in all environments. + const data = typeof string === 'string' ? textEncoder.encode(string) : string + const hash = await subtleCrypto.digest('MD5', data) + return Array.from(new Uint8Array(hash)) + .map((b) => b.toString(16).padStart(2, '0')) + .join('') + } +} + +// See AuthenticationMD5Password at https://www.postgresql.org/docs/current/static/protocol-flow.html +async function postgresMd5PasswordHash(user, password, salt) { + const inner = await md5(password + user) + const outer = await md5(Buffer.concat([Buffer.from(inner), salt])) + return 'md5' + outer +} + +/** + * Create a SHA-256 digest of the given data + * @param {Buffer} data + */ +async function sha256(text) { + return await subtleCrypto.digest('SHA-256', text) +} + +async function hashByName(hashName, text) { + return await subtleCrypto.digest(hashName, text) +} + +/** + * Sign the message with the given key + * @param {ArrayBuffer} keyBuffer + * @param {string} msg + */ +async function hmacSha256(keyBuffer, msg) { + const key = await subtleCrypto.importKey('raw', keyBuffer, { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']) + return await subtleCrypto.sign('HMAC', key, textEncoder.encode(msg)) +} + +/** + * Derive a key from the password and salt + * @param {string} password + * @param {Uint8Array} salt + * @param {number} iterations + */ +async function deriveKey(password, salt, iterations) { + const key = await subtleCrypto.importKey('raw', textEncoder.encode(password), 'PBKDF2', false, ['deriveBits']) + const params = { name: 'PBKDF2', hash: 'SHA-256', salt: salt, iterations: iterations } + return await subtleCrypto.deriveBits(params, key, 32 * 8, ['deriveBits']) +} diff --git a/bff/node_modules/pg/lib/crypto/utils.js b/bff/node_modules/pg/lib/crypto/utils.js new file mode 100644 index 0000000..9644b15 --- /dev/null +++ b/bff/node_modules/pg/lib/crypto/utils.js @@ -0,0 +1,9 @@ +'use strict' + +const useLegacyCrypto = parseInt(process.versions && process.versions.node && process.versions.node.split('.')[0]) < 15 +if (useLegacyCrypto) { + // We are on an old version of Node.js that requires legacy crypto utilities. + module.exports = require('./utils-legacy') +} else { + module.exports = require('./utils-webcrypto') +} diff --git a/bff/node_modules/pg/lib/defaults.js b/bff/node_modules/pg/lib/defaults.js new file mode 100644 index 0000000..673696f --- /dev/null +++ b/bff/node_modules/pg/lib/defaults.js @@ -0,0 +1,91 @@ +'use strict' + +let user +try { + user = process.platform === 'win32' ? process.env.USERNAME : process.env.USER +} catch { + // ignore, e.g., Deno without --allow-env +} + +module.exports = { + // database host. defaults to localhost + host: 'localhost', + + // database user's name + user, + + // name of database to connect + database: undefined, + + // database user's password + password: null, + + // a Postgres connection string to be used instead of setting individual connection items + // NOTE: Setting this value will cause it to override any other value (such as database or user) defined + // in the defaults object. + connectionString: undefined, + + // database port + port: 5432, + + // number of rows to return at a time from a prepared statement's + // portal. 0 will return all rows at once + rows: 0, + + // binary result mode + binary: false, + + // Connection pool options - see https://github.com/brianc/node-pg-pool + + // number of connections to use in connection pool + // 0 will disable connection pooling + max: 10, + + // max milliseconds a client can go unused before it is removed + // from the pool and destroyed + idleTimeoutMillis: 30000, + + client_encoding: '', + + ssl: false, + + application_name: undefined, + + fallback_application_name: undefined, + + options: undefined, + + parseInputDatesAsUTC: false, + + // max milliseconds any query using this connection will execute for before timing out in error. + // false=unlimited + statement_timeout: false, + + // Abort any statement that waits longer than the specified duration in milliseconds while attempting to acquire a lock. + // false=unlimited + lock_timeout: false, + + // Terminate any session with an open transaction that has been idle for longer than the specified duration in milliseconds + // false=unlimited + idle_in_transaction_session_timeout: false, + + // max milliseconds to wait for query to complete (client side) + query_timeout: false, + + connect_timeout: 0, + + keepalives: 1, + + keepalives_idle: 0, +} + +const pgTypes = require('pg-types') +// save default parsers +const parseBigInteger = pgTypes.getTypeParser(20, 'text') +const parseBigIntegerArray = pgTypes.getTypeParser(1016, 'text') + +// parse int8 so you can get your count values as actual numbers +module.exports.__defineSetter__('parseInt8', function (val) { + pgTypes.setTypeParser(20, 'text', val ? pgTypes.getTypeParser(23, 'text') : parseBigInteger) + pgTypes.setTypeParser(1016, 'text', val ? pgTypes.getTypeParser(1007, 'text') : parseBigIntegerArray) +}) diff --git a/bff/node_modules/pg/lib/index.js b/bff/node_modules/pg/lib/index.js new file mode 100644 index 0000000..e8b7461 --- /dev/null +++ b/bff/node_modules/pg/lib/index.js @@ -0,0 +1,73 @@ +'use strict' + +const Client = require('./client') +const defaults = require('./defaults') +const Connection = require('./connection') +const Result = require('./result') +const utils = require('./utils') +const Pool = require('pg-pool') +const TypeOverrides = require('./type-overrides') +const { DatabaseError } = require('pg-protocol') +const { escapeIdentifier, escapeLiteral } = require('./utils') + +const poolFactory = (Client) => { + return class BoundPool extends Pool { + constructor(options) { + super(options, Client) + } + } +} + +const PG = function (clientConstructor) { + this.defaults = defaults + this.Client = clientConstructor + this.Query = this.Client.Query + this.Pool = poolFactory(this.Client) + this._pools = [] + this.Connection = Connection + this.types = require('pg-types') + this.DatabaseError = DatabaseError + this.TypeOverrides = TypeOverrides + this.escapeIdentifier = escapeIdentifier + this.escapeLiteral = escapeLiteral + this.Result = Result + this.utils = utils +} + +let clientConstructor = Client + +let forceNative = false +try { + forceNative = !!process.env.NODE_PG_FORCE_NATIVE +} catch { + // ignore, e.g., Deno without --allow-env +} + +if (forceNative) { + clientConstructor = require('./native') +} + +module.exports = new PG(clientConstructor) + +// lazy require native module...the native module may not have installed +Object.defineProperty(module.exports, 'native', { + configurable: true, + enumerable: false, + get() { + let native = null + try { + native = new PG(require('./native')) + } catch (err) { + if (err.code !== 'MODULE_NOT_FOUND') { + throw err + } + } + + // overwrite module.exports.native so that getter is never called again + Object.defineProperty(module.exports, 'native', { + value: native, + }) + + return native + }, +}) diff --git a/bff/node_modules/pg/lib/native/client.js b/bff/node_modules/pg/lib/native/client.js new file mode 100644 index 0000000..d8bb4dc --- /dev/null +++ b/bff/node_modules/pg/lib/native/client.js @@ -0,0 +1,323 @@ +const nodeUtils = require('util') +// eslint-disable-next-line +var Native +// eslint-disable-next-line no-useless-catch +try { + // Wrap this `require()` in a try-catch to avoid upstream bundlers from complaining that this might not be available since it is an optional import + Native = require('pg-native') +} catch (e) { + throw e +} +const TypeOverrides = require('../type-overrides') +const EventEmitter = require('events').EventEmitter +const util = require('util') +const ConnectionParameters = require('../connection-parameters') + +const NativeQuery = require('./query') + +const queryQueueLengthDeprecationNotice = nodeUtils.deprecate( + () => {}, + 'Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead.' +) + +const Client = (module.exports = function (config) { + EventEmitter.call(this) + config = config || {} + + this._Promise = config.Promise || global.Promise + this._types = new TypeOverrides(config.types) + + this.native = new Native({ + types: this._types, + }) + + this._queryQueue = [] + this._ending = false + this._connecting = false + this._connected = false + this._queryable = true + + // keep these on the object for legacy reasons + // for the time being. TODO: deprecate all this jazz + const cp = (this.connectionParameters = new ConnectionParameters(config)) + if (config.nativeConnectionString) cp.nativeConnectionString = config.nativeConnectionString + this.user = cp.user + + // "hiding" the password so it doesn't show up in stack traces + // or if the client is console.logged + Object.defineProperty(this, 'password', { + configurable: true, + enumerable: false, + writable: true, + value: cp.password, + }) + this.database = cp.database + this.host = cp.host + this.port = cp.port + + // a hash to hold named queries + this.namedQueries = {} +}) + +Client.Query = NativeQuery + +util.inherits(Client, EventEmitter) + +Client.prototype._errorAllQueries = function (err) { + const enqueueError = (query) => { + process.nextTick(() => { + query.native = this.native + query.handleError(err) + }) + } + + if (this._hasActiveQuery()) { + enqueueError(this._activeQuery) + this._activeQuery = null + } + + this._queryQueue.forEach(enqueueError) + this._queryQueue.length = 0 +} + +// connect to the backend +// pass an optional callback to be called once connected +// or with an error if there was a connection error +Client.prototype._connect = function (cb) { + const self = this + + if (this._connecting) { + process.nextTick(() => cb(new Error('Client has already been connected. You cannot reuse a client.'))) + return + } + + this._connecting = true + + this.connectionParameters.getLibpqConnectionString(function (err, conString) { + if (self.connectionParameters.nativeConnectionString) conString = self.connectionParameters.nativeConnectionString + if (err) return cb(err) + self.native.connect(conString, function (err) { + if (err) { + self.native.end() + return cb(err) + } + + // set internal states to connected + self._connected = true + + // handle connection errors from the native layer + self.native.on('error', function (err) { + self._queryable = false + self._errorAllQueries(err) + self.emit('error', err) + }) + + self.native.on('notification', function (msg) { + self.emit('notification', { + channel: msg.relname, + payload: msg.extra, + }) + }) + + // signal we are connected now + self.emit('connect') + self._pulseQueryQueue(true) + + cb(null, this) + }) + }) +} + +Client.prototype.connect = function (callback) { + if (callback) { + this._connect(callback) + return + } + + return new this._Promise((resolve, reject) => { + this._connect((error) => { + if (error) { + reject(error) + } else { + resolve(this) + } + }) + }) +} + +// send a query to the server +// this method is highly overloaded to take +// 1) string query, optional array of parameters, optional function callback +// 2) object query with { +// string query +// optional array values, +// optional function callback instead of as a separate parameter +// optional string name to name & cache the query plan +// optional string rowMode = 'array' for an array of results +// } +Client.prototype.query = function (config, values, callback) { + let query + let result + let readTimeout + let readTimeoutTimer + let queryCallback + + if (config === null || config === undefined) { + throw new TypeError('Client was passed a null or undefined query') + } else if (typeof config.submit === 'function') { + readTimeout = config.query_timeout || this.connectionParameters.query_timeout + result = query = config + // accept query(new Query(...), (err, res) => { }) style + if (typeof values === 'function') { + config.callback = values + } + } else { + readTimeout = config.query_timeout || this.connectionParameters.query_timeout + query = new NativeQuery(config, values, callback) + if (!query.callback) { + let resolveOut, rejectOut + result = new this._Promise((resolve, reject) => { + resolveOut = resolve + rejectOut = reject + }).catch((err) => { + Error.captureStackTrace(err) + throw err + }) + query.callback = (err, res) => (err ? rejectOut(err) : resolveOut(res)) + } + } + + if (readTimeout) { + queryCallback = query.callback || (() => {}) + + readTimeoutTimer = setTimeout(() => { + const error = new Error('Query read timeout') + + process.nextTick(() => { + query.handleError(error, this.connection) + }) + + queryCallback(error) + + // we already returned an error, + // just do nothing if query completes + query.callback = () => {} + + // Remove from queue + const index = this._queryQueue.indexOf(query) + if (index > -1) { + this._queryQueue.splice(index, 1) + } + + this._pulseQueryQueue() + }, readTimeout) + + query.callback = (err, res) => { + clearTimeout(readTimeoutTimer) + queryCallback(err, res) + } + } + + if (!this._queryable) { + query.native = this.native + process.nextTick(() => { + query.handleError(new Error('Client has encountered a connection error and is not queryable')) + }) + return result + } + + if (this._ending) { + query.native = this.native + process.nextTick(() => { + query.handleError(new Error('Client was closed and is not queryable')) + }) + return result + } + + if (this._queryQueue.length > 0) { + queryQueueLengthDeprecationNotice() + } + + this._queryQueue.push(query) + this._pulseQueryQueue() + return result +} + +// disconnect from the backend server +Client.prototype.end = function (cb) { + const self = this + + this._ending = true + + if (!this._connected) { + this.once('connect', this.end.bind(this, cb)) + } + let result + if (!cb) { + result = new this._Promise(function (resolve, reject) { + cb = (err) => (err ? reject(err) : resolve()) + }) + } + + this.native.end(function () { + self._connected = false + + self._errorAllQueries(new Error('Connection terminated')) + + process.nextTick(() => { + self.emit('end') + if (cb) cb() + }) + }) + return result +} + +Client.prototype._hasActiveQuery = function () { + return this._activeQuery && this._activeQuery.state !== 'error' && this._activeQuery.state !== 'end' +} + +Client.prototype._pulseQueryQueue = function (initialConnection) { + if (!this._connected) { + return + } + if (this._hasActiveQuery()) { + return + } + const query = this._queryQueue.shift() + if (!query) { + if (!initialConnection) { + this.emit('drain') + } + return + } + this._activeQuery = query + query.submit(this) + const self = this + query.once('_done', function () { + self._pulseQueryQueue() + }) +} + +// attempt to cancel an in-progress query +Client.prototype.cancel = function (query) { + if (this._activeQuery === query) { + this.native.cancel(function () {}) + } else if (this._queryQueue.indexOf(query) !== -1) { + this._queryQueue.splice(this._queryQueue.indexOf(query), 1) + } +} + +Client.prototype.ref = function () {} +Client.prototype.unref = function () {} + +Client.prototype.setTypeParser = function (oid, format, parseFn) { + return this._types.setTypeParser(oid, format, parseFn) +} + +Client.prototype.getTypeParser = function (oid, format) { + return this._types.getTypeParser(oid, format) +} + +Client.prototype.isConnected = function () { + return this._connected +} diff --git a/bff/node_modules/pg/lib/native/index.js b/bff/node_modules/pg/lib/native/index.js new file mode 100644 index 0000000..eead422 --- /dev/null +++ b/bff/node_modules/pg/lib/native/index.js @@ -0,0 +1,2 @@ +'use strict' +module.exports = require('./client') diff --git a/bff/node_modules/pg/lib/native/query.js b/bff/node_modules/pg/lib/native/query.js new file mode 100644 index 0000000..e02294f --- /dev/null +++ b/bff/node_modules/pg/lib/native/query.js @@ -0,0 +1,165 @@ +'use strict' + +const EventEmitter = require('events').EventEmitter +const util = require('util') +const utils = require('../utils') + +const NativeQuery = (module.exports = function (config, values, callback) { + EventEmitter.call(this) + config = utils.normalizeQueryConfig(config, values, callback) + this.text = config.text + this.values = config.values + this.name = config.name + this.queryMode = config.queryMode + this.callback = config.callback + this.state = 'new' + this._arrayMode = config.rowMode === 'array' + + // if the 'row' event is listened for + // then emit them as they come in + // without setting singleRowMode to true + // this has almost no meaning because libpq + // reads all rows into memory before returning any + this._emitRowEvents = false + this.on( + 'newListener', + function (event) { + if (event === 'row') this._emitRowEvents = true + }.bind(this) + ) +}) + +util.inherits(NativeQuery, EventEmitter) + +const errorFieldMap = { + sqlState: 'code', + statementPosition: 'position', + messagePrimary: 'message', + context: 'where', + schemaName: 'schema', + tableName: 'table', + columnName: 'column', + dataTypeName: 'dataType', + constraintName: 'constraint', + sourceFile: 'file', + sourceLine: 'line', + sourceFunction: 'routine', +} + +NativeQuery.prototype.handleError = function (err) { + // copy pq error fields into the error object + const fields = this.native.pq.resultErrorFields() + if (fields) { + for (const key in fields) { + const normalizedFieldName = errorFieldMap[key] || key + err[normalizedFieldName] = fields[key] + } + } + if (this.callback) { + this.callback(err) + } else { + this.emit('error', err) + } + this.state = 'error' +} + +NativeQuery.prototype.then = function (onSuccess, onFailure) { + return this._getPromise().then(onSuccess, onFailure) +} + +NativeQuery.prototype.catch = function (callback) { + return this._getPromise().catch(callback) +} + +NativeQuery.prototype._getPromise = function () { + if (this._promise) return this._promise + this._promise = new Promise( + function (resolve, reject) { + this._once('end', resolve) + this._once('error', reject) + }.bind(this) + ) + return this._promise +} + +NativeQuery.prototype.submit = function (client) { + this.state = 'running' + const self = this + this.native = client.native + client.native.arrayMode = this._arrayMode + + let after = function (err, rows, results) { + client.native.arrayMode = false + setImmediate(function () { + self.emit('_done') + }) + + // handle possible query error + if (err) { + return self.handleError(err) + } + + // emit row events for each row in the result + if (self._emitRowEvents) { + if (results.length > 1) { + rows.forEach((rowOfRows, i) => { + rowOfRows.forEach((row) => { + self.emit('row', row, results[i]) + }) + }) + } else { + rows.forEach(function (row) { + self.emit('row', row, results) + }) + } + } + + // handle successful result + self.state = 'end' + self.emit('end', results) + if (self.callback) { + self.callback(null, results) + } + } + + if (process.domain) { + after = process.domain.bind(after) + } + + // named query + if (this.name) { + if (this.name.length > 63) { + console.error('Warning! Postgres only supports 63 characters for query names.') + console.error('You supplied %s (%s)', this.name, this.name.length) + console.error('This can cause conflicts and silent errors executing queries') + } + const values = (this.values || []).map(utils.prepareValue) + + // check if the client has already executed this named query + // if so...just execute it again - skip the planning phase + if (client.namedQueries[this.name]) { + if (this.text && client.namedQueries[this.name] !== this.text) { + const err = new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`) + return after(err) + } + return client.native.execute(this.name, values, after) + } + // plan the named query the first time, then execute it + return client.native.prepare(this.name, this.text, values.length, function (err) { + if (err) return after(err) + client.namedQueries[self.name] = self.text + return self.native.execute(self.name, values, after) + }) + } else if (this.values) { + if (!Array.isArray(this.values)) { + const err = new Error('Query values must be an array') + return after(err) + } + const vals = this.values.map(utils.prepareValue) + client.native.query(this.text, vals, after) + } else if (this.queryMode === 'extended') { + client.native.query(this.text, [], after) + } else { + client.native.query(this.text, after) + } +} diff --git a/bff/node_modules/pg/lib/query.js b/bff/node_modules/pg/lib/query.js new file mode 100644 index 0000000..64aab5f --- /dev/null +++ b/bff/node_modules/pg/lib/query.js @@ -0,0 +1,252 @@ +'use strict' + +const { EventEmitter } = require('events') + +const Result = require('./result') +const utils = require('./utils') + +class Query extends EventEmitter { + constructor(config, values, callback) { + super() + + config = utils.normalizeQueryConfig(config, values, callback) + + this.text = config.text + this.values = config.values + this.rows = config.rows + this.types = config.types + this.name = config.name + this.queryMode = config.queryMode + this.binary = config.binary + // use unique portal name each time + this.portal = config.portal || '' + this.callback = config.callback + this._rowMode = config.rowMode + if (process.domain && config.callback) { + this.callback = process.domain.bind(config.callback) + } + this._result = new Result(this._rowMode, this.types) + + // potential for multiple results + this._results = this._result + this._canceledDueToError = false + } + + requiresPreparation() { + if (this.queryMode === 'extended') { + return true + } + + // named queries must always be prepared + if (this.name) { + return true + } + // always prepare if there are max number of rows expected per + // portal execution + if (this.rows) { + return true + } + // don't prepare empty text queries + if (!this.text) { + return false + } + // prepare if there are values + if (!this.values) { + return false + } + return this.values.length > 0 + } + + _checkForMultirow() { + // if we already have a result with a command property + // then we've already executed one query in a multi-statement simple query + // turn our results into an array of results + if (this._result.command) { + if (!Array.isArray(this._results)) { + this._results = [this._result] + } + this._result = new Result(this._rowMode, this._result._types) + this._results.push(this._result) + } + } + + // associates row metadata from the supplied + // message with this query object + // metadata used when parsing row results + handleRowDescription(msg) { + this._checkForMultirow() + this._result.addFields(msg.fields) + this._accumulateRows = this.callback || !this.listeners('row').length + } + + handleDataRow(msg) { + let row + + if (this._canceledDueToError) { + return + } + + try { + row = this._result.parseRow(msg.fields) + } catch (err) { + this._canceledDueToError = err + return + } + + this.emit('row', row, this._result) + if (this._accumulateRows) { + this._result.addRow(row) + } + } + + handleCommandComplete(msg, connection) { + this._checkForMultirow() + this._result.addCommandComplete(msg) + // need to sync after each command complete of a prepared statement + // if we were using a row count which results in multiple calls to _getRows + if (this.rows) { + connection.sync() + } + } + + // if a named prepared statement is created with empty query text + // the backend will send an emptyQuery message but *not* a command complete message + // since we pipeline sync immediately after execute we don't need to do anything here + // unless we have rows specified, in which case we did not pipeline the initial sync call + handleEmptyQuery(connection) { + if (this.rows) { + connection.sync() + } + } + + handleError(err, connection) { + // need to sync after error during a prepared statement + if (this._canceledDueToError) { + err = this._canceledDueToError + this._canceledDueToError = false + } + // if callback supplied do not emit error event as uncaught error + // events will bubble up to node process + if (this.callback) { + return this.callback(err) + } + this.emit('error', err) + } + + handleReadyForQuery(con) { + if (this._canceledDueToError) { + return this.handleError(this._canceledDueToError, con) + } + if (this.callback) { + try { + this.callback(null, this._results) + } catch (err) { + process.nextTick(() => { + throw err + }) + } + } + this.emit('end', this._results) + } + + submit(connection) { + if (typeof this.text !== 'string' && typeof this.name !== 'string') { + return new Error('A query must have either text or a name. Supplying neither is unsupported.') + } + const previous = connection.parsedStatements[this.name] + if (this.text && previous && this.text !== previous) { + return new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`) + } + if (this.values && !Array.isArray(this.values)) { + return new Error('Query values must be an array') + } + if (this.requiresPreparation()) { + // If we're using the extended query protocol we fire off several separate commands + // to the backend. On some versions of node & some operating system versions + // the network stack writes each message separately instead of buffering them together + // causing the client & network to send more slowly. Corking & uncorking the stream + // allows node to buffer up the messages internally before sending them all off at once. + // note: we're checking for existence of cork/uncork because some versions of streams + // might not have this (cloudflare?) + connection.stream.cork && connection.stream.cork() + try { + this.prepare(connection) + } finally { + // while unlikely for this.prepare to throw, if it does & we don't uncork this stream + // this client becomes unresponsive, so put in finally block "just in case" + connection.stream.uncork && connection.stream.uncork() + } + } else { + connection.query(this.text) + } + return null + } + + hasBeenParsed(connection) { + return this.name && connection.parsedStatements[this.name] + } + + handlePortalSuspended(connection) { + this._getRows(connection, this.rows) + } + + _getRows(connection, rows) { + connection.execute({ + portal: this.portal, + rows: rows, + }) + // if we're not reading pages of rows send the sync command + // to indicate the pipeline is finished + if (!rows) { + connection.sync() + } else { + // otherwise flush the call out to read more rows + connection.flush() + } + } + + // http://developer.postgresql.org/pgdocs/postgres/protocol-flow.html#PROTOCOL-FLOW-EXT-QUERY + prepare(connection) { + // TODO refactor this poor encapsulation + if (!this.hasBeenParsed(connection)) { + connection.parse({ + text: this.text, + name: this.name, + types: this.types, + }) + } + + // because we're mapping user supplied values to + // postgres wire protocol compatible values it could + // throw an exception, so try/catch this section + try { + connection.bind({ + portal: this.portal, + statement: this.name, + values: this.values, + binary: this.binary, + valueMapper: utils.prepareValue, + }) + } catch (err) { + this.handleError(err, connection) + return + } + + connection.describe({ + type: 'P', + name: this.portal || '', + }) + + this._getRows(connection, this.rows) + } + + handleCopyInResponse(connection) { + connection.sendCopyFail('No source stream defined') + } + + handleCopyData(msg, connection) { + // noop + } +} + +module.exports = Query diff --git a/bff/node_modules/pg/lib/result.js b/bff/node_modules/pg/lib/result.js new file mode 100644 index 0000000..0ab7bb8 --- /dev/null +++ b/bff/node_modules/pg/lib/result.js @@ -0,0 +1,109 @@ +'use strict' + +const types = require('pg-types') + +const matchRegexp = /^([A-Za-z]+)(?: (\d+))?(?: (\d+))?/ + +// result object returned from query +// in the 'end' event and also +// passed as second argument to provided callback +class Result { + constructor(rowMode, types) { + this.command = null + this.rowCount = null + this.oid = null + this.rows = [] + this.fields = [] + this._parsers = undefined + this._types = types + this.RowCtor = null + this.rowAsArray = rowMode === 'array' + if (this.rowAsArray) { + this.parseRow = this._parseRowAsArray + } + this._prebuiltEmptyResultObject = null + } + + // adds a command complete message + addCommandComplete(msg) { + let match + if (msg.text) { + // pure javascript + match = matchRegexp.exec(msg.text) + } else { + // native bindings + match = matchRegexp.exec(msg.command) + } + if (match) { + this.command = match[1] + if (match[3]) { + // COMMAND OID ROWS + this.oid = parseInt(match[2], 10) + this.rowCount = parseInt(match[3], 10) + } else if (match[2]) { + // COMMAND ROWS + this.rowCount = parseInt(match[2], 10) + } + } + } + + _parseRowAsArray(rowData) { + const row = new Array(rowData.length) + for (let i = 0, len = rowData.length; i < len; i++) { + const rawValue = rowData[i] + if (rawValue !== null) { + row[i] = this._parsers[i](rawValue) + } else { + row[i] = null + } + } + return row + } + + parseRow(rowData) { + const row = { ...this._prebuiltEmptyResultObject } + for (let i = 0, len = rowData.length; i < len; i++) { + const rawValue = rowData[i] + const field = this.fields[i].name + if (rawValue !== null) { + const v = this.fields[i].format === 'binary' ? Buffer.from(rawValue) : rawValue + row[field] = this._parsers[i](v) + } else { + row[field] = null + } + } + return row + } + + addRow(row) { + this.rows.push(row) + } + + addFields(fieldDescriptions) { + // clears field definitions + // multiple query statements in 1 action can result in multiple sets + // of rowDescriptions...eg: 'select NOW(); select 1::int;' + // you need to reset the fields + this.fields = fieldDescriptions + if (this.fields.length) { + this._parsers = new Array(fieldDescriptions.length) + } + + const row = {} + + for (let i = 0; i < fieldDescriptions.length; i++) { + const desc = fieldDescriptions[i] + row[desc.name] = null + + if (this._types) { + this._parsers[i] = this._types.getTypeParser(desc.dataTypeID, desc.format || 'text') + } else { + this._parsers[i] = types.getTypeParser(desc.dataTypeID, desc.format || 'text') + } + } + + this._prebuiltEmptyResultObject = { ...row } + } +} + +module.exports = Result diff --git a/bff/node_modules/pg/lib/stream.js b/bff/node_modules/pg/lib/stream.js new file mode 100644 index 0000000..edc3018 --- /dev/null +++ b/bff/node_modules/pg/lib/stream.js @@ -0,0 +1,83 @@ +const { getStream, getSecureStream } = getStreamFuncs() + +module.exports = { + /** + * Get a socket stream compatible with the current runtime environment. + * @returns {Duplex} + */ + getStream, + /** + * Get a TLS secured socket, compatible with the current environment, + * using the socket and other settings given in `options`. + * @returns {Duplex} + */ + getSecureStream, +} + +/** + * The stream functions that work in Node.js + */ +function getNodejsStreamFuncs() { + function getStream(ssl) { + const net = require('net') + return new net.Socket() + } + + function getSecureStream(options) { + const tls = require('tls') + return tls.connect(options) + } + return { + getStream, + getSecureStream, + } +} + +/** + * The stream functions that work in Cloudflare Workers + */ +function getCloudflareStreamFuncs() { + function getStream(ssl) { + const { CloudflareSocket } = require('pg-cloudflare') + return new CloudflareSocket(ssl) + } + + function getSecureStream(options) { + options.socket.startTls(options) + return options.socket + } + return { + getStream, + getSecureStream, + } +} + +/** + * Are we running in a Cloudflare Worker? + * + * @returns true if the code is currently running inside a Cloudflare Worker. + */ +function isCloudflareRuntime() { + // Since 2022-03-21 the `global_navigator` compatibility flag is on for Cloudflare Workers + // which means that `navigator.userAgent` will be defined. + // eslint-disable-next-line no-undef + if (typeof navigator === 'object' && navigator !== null && typeof navigator.userAgent === 'string') { + // eslint-disable-next-line no-undef + return navigator.userAgent === 'Cloudflare-Workers' + } + // In case `navigator` or `navigator.userAgent` is not defined then try a more sneaky approach + if (typeof Response === 'function') { + const resp = new Response(null, { cf: { thing: true } }) + if (typeof resp.cf === 'object' && resp.cf !== null && resp.cf.thing) { + return true + } + } + return false +} + +function getStreamFuncs() { + if (isCloudflareRuntime()) { + return getCloudflareStreamFuncs() + } + return getNodejsStreamFuncs() +} diff --git a/bff/node_modules/pg/lib/type-overrides.js b/bff/node_modules/pg/lib/type-overrides.js new file mode 100644 index 0000000..9d219e5 --- /dev/null +++ b/bff/node_modules/pg/lib/type-overrides.js @@ -0,0 +1,35 @@ +'use strict' + +const types = require('pg-types') + +function TypeOverrides(userTypes) { + this._types = userTypes || types + this.text = {} + this.binary = {} +} + +TypeOverrides.prototype.getOverrides = function (format) { + switch (format) { + case 'text': + return this.text + case 'binary': + return this.binary + default: + return {} + } +} + +TypeOverrides.prototype.setTypeParser = function (oid, format, parseFn) { + if (typeof format === 'function') { + parseFn = format + format = 'text' + } + this.getOverrides(format)[oid] = parseFn +} + +TypeOverrides.prototype.getTypeParser = function (oid, format) { + format = format || 'text' + return this.getOverrides(format)[oid] || this._types.getTypeParser(oid, format) +} + +module.exports = TypeOverrides diff --git a/bff/node_modules/pg/lib/utils.js b/bff/node_modules/pg/lib/utils.js new file mode 100644 index 0000000..e23a55e --- /dev/null +++ b/bff/node_modules/pg/lib/utils.js @@ -0,0 +1,217 @@ +'use strict' + +const defaults = require('./defaults') + +const util = require('util') +const { isDate } = util.types || util // Node 8 doesn't have `util.types` + +function escapeElement(elementRepresentation) { + const escaped = elementRepresentation.replace(/\\/g, '\\\\').replace(/"/g, '\\"') + + return '"' + escaped + '"' +} + +// convert a JS array to a postgres array literal +// uses comma separator so won't work for types like box that use +// a different array separator. +function arrayString(val) { + let result = '{' + for (let i = 0; i < val.length; i++) { + if (i > 0) { + result = result + ',' + } + if (val[i] === null || typeof val[i] === 'undefined') { + result = result + 'NULL' + } else if (Array.isArray(val[i])) { + result = result + arrayString(val[i]) + } else if (ArrayBuffer.isView(val[i])) { + let item = val[i] + if (!(item instanceof Buffer)) { + const buf = Buffer.from(item.buffer, item.byteOffset, item.byteLength) + if (buf.length === item.byteLength) { + item = buf + } else { + item = buf.slice(item.byteOffset, item.byteOffset + item.byteLength) + } + } + result += '\\\\x' + item.toString('hex') + } else { + result += escapeElement(prepareValue(val[i])) + } + } + result = result + '}' + return result +} + +// converts values from javascript types +// to their 'raw' counterparts for use as a postgres parameter +// note: you can override this function to provide your own conversion mechanism +// for complex types, etc... +const prepareValue = function (val, seen) { + // null and undefined are both null for postgres + if (val == null) { + return null + } + if (typeof val === 'object') { + if (val instanceof Buffer) { + return val + } + if (ArrayBuffer.isView(val)) { + const buf = Buffer.from(val.buffer, val.byteOffset, val.byteLength) + if (buf.length === val.byteLength) { + return buf + } + return buf.slice(val.byteOffset, val.byteOffset + val.byteLength) // Node.js v4 does not support those Buffer.from params + } + if (isDate(val)) { + if (defaults.parseInputDatesAsUTC) { + return dateToStringUTC(val) + } else { + return dateToString(val) + } + } + if (Array.isArray(val)) { + return arrayString(val) + } + + return prepareObject(val, seen) + } + return val.toString() +} + +function prepareObject(val, seen) { + if (val && typeof val.toPostgres === 'function') { + seen = seen || [] + if (seen.indexOf(val) !== -1) { + throw new Error('circular reference detected while preparing "' + val + '" for query') + } + seen.push(val) + + return prepareValue(val.toPostgres(prepareValue), seen) + } + return JSON.stringify(val) +} + +function dateToString(date) { + let offset = -date.getTimezoneOffset() + + let year = date.getFullYear() + const isBCYear = year < 1 + if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation + + let ret = + String(year).padStart(4, '0') + + '-' + + String(date.getMonth() + 1).padStart(2, '0') + + '-' + + String(date.getDate()).padStart(2, '0') + + 'T' + + String(date.getHours()).padStart(2, '0') + + ':' + + String(date.getMinutes()).padStart(2, '0') + + ':' + + String(date.getSeconds()).padStart(2, '0') + + '.' + + String(date.getMilliseconds()).padStart(3, '0') + + if (offset < 0) { + ret += '-' + offset *= -1 + } else { + ret += '+' + } + + ret += String(Math.floor(offset / 60)).padStart(2, '0') + ':' + String(offset % 60).padStart(2, '0') + if (isBCYear) ret += ' BC' + return ret +} + +function dateToStringUTC(date) { + let year = date.getUTCFullYear() + const isBCYear = year < 1 + if (isBCYear) year = Math.abs(year) + 1 // negative years are 1 off their BC representation + + let ret = + String(year).padStart(4, '0') + + '-' + + String(date.getUTCMonth() + 1).padStart(2, '0') + + '-' + + String(date.getUTCDate()).padStart(2, '0') + + 'T' + + String(date.getUTCHours()).padStart(2, '0') + + ':' + + String(date.getUTCMinutes()).padStart(2, '0') + + ':' + + String(date.getUTCSeconds()).padStart(2, '0') + + '.' + + String(date.getUTCMilliseconds()).padStart(3, '0') + + ret += '+00:00' + if (isBCYear) ret += ' BC' + return ret +} + +function normalizeQueryConfig(config, values, callback) { + // can take in strings or config objects + config = typeof config === 'string' ? { text: config } : config + if (values) { + if (typeof values === 'function') { + config.callback = values + } else { + config.values = values + } + } + if (callback) { + config.callback = callback + } + return config +} + +// Ported from PostgreSQL 9.2.4 source code in src/interfaces/libpq/fe-exec.c +const escapeIdentifier = function (str) { + return '"' + str.replace(/"/g, '""') + '"' +} + +const escapeLiteral = function (str) { + let hasBackslash = false + let escaped = "'" + + if (str == null) { + return "''" + } + + if (typeof str !== 'string') { + return "''" + } + + for (let i = 0; i < str.length; i++) { + const c = str[i] + if (c === "'") { + escaped += c + c + } else if (c === '\\') { + escaped += c + c + hasBackslash = true + } else { + escaped += c + } + } + + escaped += "'" + + if (hasBackslash === true) { + escaped = ' E' + escaped + } + + return escaped +} + +module.exports = { + prepareValue: function prepareValueWrapper(value) { + // this ensures that extra arguments do not get passed into prepareValue + // by accident, eg: from calling values.map(utils.prepareValue) + return prepareValue(value) + }, + normalizeQueryConfig, + escapeIdentifier, + escapeLiteral, +} diff --git a/bff/node_modules/pg/package.json b/bff/node_modules/pg/package.json new file mode 100644 index 0000000..27f1885 --- /dev/null +++ b/bff/node_modules/pg/package.json @@ -0,0 +1,76 @@ +{ + "name": "pg", + "version": "8.20.0", + "description": "PostgreSQL client - pure javascript & libpq with the same API", + "keywords": [ + "database", + "libpq", + "pg", + "postgre", + "postgres", + "postgresql", + "rdbms" + ], + "homepage": "https://github.com/brianc/node-postgres", + "repository": { + "type": "git", + "url": "git://github.com/brianc/node-postgres.git", + "directory": "packages/pg" + }, + "author": "Brian Carlson ", + "main": "./lib", + "exports": { + ".": { + "import": "./esm/index.mjs", + "require": "./lib/index.js", + "default": "./lib/index.js" + }, + "./package.json": { + "default": "./package.json" + }, + "./lib/*": "./lib/*.js", + "./lib/*.js": "./lib/*.js" + }, + "dependencies": { + "pg-connection-string": "^2.12.0", + "pg-pool": "^3.13.0", + "pg-protocol": "^1.13.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "devDependencies": { + "@cloudflare/vitest-pool-workers": "0.8.23", + "@cloudflare/workers-types": "^4.20230404.0", + "async": "2.6.4", + "bluebird": "3.7.2", + "co": "4.6.0", + "pg-copy-streams": "0.3.0", + "typescript": "^4.0.3", + "vitest": "~3.0.9", + "wrangler": "^3.x" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.3.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + }, + "scripts": { + "test": "make test-all" + }, + "files": [ + "lib", + "esm", + "SPONSORS.md" + ], + "license": "MIT", + "engines": { + "node": ">= 16.0.0" + }, + "gitHead": "c9070cc8d526fca65780cedc25c1966b57cf7532" +} diff --git a/bff/node_modules/pgpass/README.md b/bff/node_modules/pgpass/README.md new file mode 100644 index 0000000..bbc5193 --- /dev/null +++ b/bff/node_modules/pgpass/README.md @@ -0,0 +1,74 @@ +# pgpass + +[![Build Status](https://github.com/hoegaarden/pgpass/workflows/CI/badge.svg?branch=master)](https://github.com/hoegaarden/pgpass/actions?query=workflow%3ACI+branch%3Amaster) + +## Install + +```sh +npm install pgpass +``` + +## Usage +```js +var pgPass = require('pgpass'); + +var connInfo = { + 'host' : 'pgserver' , + 'user' : 'the_user_name' , +}; + +pgPass(connInfo, function(pass){ + conn_info.password = pass; + // connect to postgresql server +}); +``` + +## Description + +This module tries to read the `~/.pgpass` file (or the equivalent for windows systems). If the environment variable `PGPASSFILE` is set, this file is used instead. If everything goes right, the password from said file is passed to the callback; if the password cannot be read `undefined` is passed to the callback. + +Cases where `undefined` is returned: + +- the environment variable `PGPASSWORD` is set +- the file cannot be read (wrong permissions, no such file, ...) +- for non windows systems: the file is write-/readable by the group or by other users +- there is no matching line for the given connection info + +There should be no need to use this module directly; it is already included in `node-postgres`. + +## Configuration + +The module reads the environment variable `PGPASS_NO_DEESCAPE` to decide if the the read tokens from the password file should be de-escaped or not. Default is to do de-escaping. For further information on this see [this commit](https://github.com/postgres/postgres/commit/8d15e3ec4fcb735875a8a70a09ec0c62153c3329). + + +## Tests + +There are tests in `./test/`; including linting and coverage testing. Running `npm test` runs: + +- `jshint` +- `mocha` tests +- `jscoverage` and `mocha -R html-cov` + +You can see the coverage report in `coverage.html`. + + +## Development, Patches, Bugs, ... + +If you find Bugs or have improvements, please feel free to open a issue on GitHub. If you provide a pull request, I'm more than happy to merge them, just make sure to add tests for your changes. + +## Links + +- https://github.com/hoegaarden/node-pgpass +- http://www.postgresql.org/docs/current/static/libpq-pgpass.html +- https://wiki.postgresql.org/wiki/Pgpass +- https://github.com/postgres/postgres/blob/master/src/interfaces/libpq/fe-connect.c + +## License + +Copyright (c) 2013-2016 Hannes Hörl + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/pgpass/lib/helper.js b/bff/node_modules/pgpass/lib/helper.js new file mode 100644 index 0000000..f988460 --- /dev/null +++ b/bff/node_modules/pgpass/lib/helper.js @@ -0,0 +1,233 @@ +'use strict'; + +var path = require('path') + , Stream = require('stream').Stream + , split = require('split2') + , util = require('util') + , defaultPort = 5432 + , isWin = (process.platform === 'win32') + , warnStream = process.stderr +; + + +var S_IRWXG = 56 // 00070(8) + , S_IRWXO = 7 // 00007(8) + , S_IFMT = 61440 // 00170000(8) + , S_IFREG = 32768 // 0100000(8) +; +function isRegFile(mode) { + return ((mode & S_IFMT) == S_IFREG); +} + +var fieldNames = [ 'host', 'port', 'database', 'user', 'password' ]; +var nrOfFields = fieldNames.length; +var passKey = fieldNames[ nrOfFields -1 ]; + + +function warn() { + var isWritable = ( + warnStream instanceof Stream && + true === warnStream.writable + ); + + if (isWritable) { + var args = Array.prototype.slice.call(arguments).concat("\n"); + warnStream.write( util.format.apply(util, args) ); + } +} + + +Object.defineProperty(module.exports, 'isWin', { + get : function() { + return isWin; + } , + set : function(val) { + isWin = val; + } +}); + + +module.exports.warnTo = function(stream) { + var old = warnStream; + warnStream = stream; + return old; +}; + +module.exports.getFileName = function(rawEnv){ + var env = rawEnv || process.env; + var file = env.PGPASSFILE || ( + isWin ? + path.join( env.APPDATA || './' , 'postgresql', 'pgpass.conf' ) : + path.join( env.HOME || './', '.pgpass' ) + ); + return file; +}; + +module.exports.usePgPass = function(stats, fname) { + if (Object.prototype.hasOwnProperty.call(process.env, 'PGPASSWORD')) { + return false; + } + + if (isWin) { + return true; + } + + fname = fname || ''; + + if (! isRegFile(stats.mode)) { + warn('WARNING: password file "%s" is not a plain file', fname); + return false; + } + + if (stats.mode & (S_IRWXG | S_IRWXO)) { + /* If password file is insecure, alert the user and ignore it. */ + warn('WARNING: password file "%s" has group or world access; permissions should be u=rw (0600) or less', fname); + return false; + } + + return true; +}; + + +var matcher = module.exports.match = function(connInfo, entry) { + return fieldNames.slice(0, -1).reduce(function(prev, field, idx){ + if (idx == 1) { + // the port + if ( Number( connInfo[field] || defaultPort ) === Number( entry[field] ) ) { + return prev && true; + } + } + return prev && ( + entry[field] === '*' || + entry[field] === connInfo[field] + ); + }, true); +}; + + +module.exports.getPassword = function(connInfo, stream, cb) { + var pass; + var lineStream = stream.pipe(split()); + + function onLine(line) { + var entry = parseLine(line); + if (entry && isValidEntry(entry) && matcher(connInfo, entry)) { + pass = entry[passKey]; + lineStream.end(); // -> calls onEnd(), but pass is set now + } + } + + var onEnd = function() { + stream.destroy(); + cb(pass); + }; + + var onErr = function(err) { + stream.destroy(); + warn('WARNING: error on reading file: %s', err); + cb(undefined); + }; + + stream.on('error', onErr); + lineStream + .on('data', onLine) + .on('end', onEnd) + .on('error', onErr) + ; + +}; + + +var parseLine = module.exports.parseLine = function(line) { + if (line.length < 11 || line.match(/^\s+#/)) { + return null; + } + + var curChar = ''; + var prevChar = ''; + var fieldIdx = 0; + var startIdx = 0; + var endIdx = 0; + var obj = {}; + var isLastField = false; + var addToObj = function(idx, i0, i1) { + var field = line.substring(i0, i1); + + if (! Object.hasOwnProperty.call(process.env, 'PGPASS_NO_DEESCAPE')) { + field = field.replace(/\\([:\\])/g, '$1'); + } + + obj[ fieldNames[idx] ] = field; + }; + + for (var i = 0 ; i < line.length-1 ; i += 1) { + curChar = line.charAt(i+1); + prevChar = line.charAt(i); + + isLastField = (fieldIdx == nrOfFields-1); + + if (isLastField) { + addToObj(fieldIdx, startIdx); + break; + } + + if (i >= 0 && curChar == ':' && prevChar !== '\\') { + addToObj(fieldIdx, startIdx, i+1); + + startIdx = i+2; + fieldIdx += 1; + } + } + + obj = ( Object.keys(obj).length === nrOfFields ) ? obj : null; + + return obj; +}; + + +var isValidEntry = module.exports.isValidEntry = function(entry){ + var rules = { + // host + 0 : function(x){ + return x.length > 0; + } , + // port + 1 : function(x){ + if (x === '*') { + return true; + } + x = Number(x); + return ( + isFinite(x) && + x > 0 && + x < 9007199254740992 && + Math.floor(x) === x + ); + } , + // database + 2 : function(x){ + return x.length > 0; + } , + // username + 3 : function(x){ + return x.length > 0; + } , + // password + 4 : function(x){ + return x.length > 0; + } + }; + + for (var idx = 0 ; idx < fieldNames.length ; idx += 1) { + var rule = rules[idx]; + var value = entry[ fieldNames[idx] ] || ''; + + var res = rule(value); + if (!res) { + return false; + } + } + + return true; +}; + diff --git a/bff/node_modules/pgpass/lib/index.js b/bff/node_modules/pgpass/lib/index.js new file mode 100644 index 0000000..ecfcf30 --- /dev/null +++ b/bff/node_modules/pgpass/lib/index.js @@ -0,0 +1,23 @@ +'use strict'; + +var path = require('path') + , fs = require('fs') + , helper = require('./helper.js') +; + + +module.exports = function(connInfo, cb) { + var file = helper.getFileName(); + + fs.stat(file, function(err, stat){ + if (err || !helper.usePgPass(stat, file)) { + return cb(undefined); + } + + var st = fs.createReadStream(file); + + helper.getPassword(connInfo, st, cb); + }); +}; + +module.exports.warnTo = helper.warnTo; diff --git a/bff/node_modules/pgpass/package.json b/bff/node_modules/pgpass/package.json new file mode 100644 index 0000000..22bfe84 --- /dev/null +++ b/bff/node_modules/pgpass/package.json @@ -0,0 +1,41 @@ +{ + "name": "pgpass", + "version": "1.0.5", + "description": "Module for reading .pgpass", + "main": "lib/index", + "scripts": { + "pretest": "chmod 600 ./test/_pgpass", + "_hint": "jshint --exclude node_modules --verbose lib test", + "_test": "mocha --recursive -R list", + "_covered_test": "nyc --reporter html --reporter text \"$npm_execpath\" run _test", + "test": "\"$npm_execpath\" run _hint && \"$npm_execpath\" run _covered_test" + }, + "author": "Hannes Hörl ", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + }, + "devDependencies": { + "jshint": "^2.12.0", + "mocha": "^8.2.0", + "nyc": "^15.1.0", + "pg": "^8.4.1", + "pg-escape": "^0.2.0", + "pg-native": "3.0.0", + "resumer": "0.0.0", + "tmp": "^0.2.1", + "which": "^2.0.2" + }, + "keywords": [ + "postgres", + "pg", + "pgpass", + "password", + "postgresql" + ], + "bugs": "https://github.com/hoegaarden/pgpass/issues", + "repository": { + "type": "git", + "url": "https://github.com/hoegaarden/pgpass.git" + } +} diff --git a/bff/node_modules/postgres-array/index.d.ts b/bff/node_modules/postgres-array/index.d.ts new file mode 100644 index 0000000..88665bd --- /dev/null +++ b/bff/node_modules/postgres-array/index.d.ts @@ -0,0 +1,4 @@ + +export function parse(source: string): string[]; +export function parse(source: string, transform: (value: string) => T): T[]; + diff --git a/bff/node_modules/postgres-array/index.js b/bff/node_modules/postgres-array/index.js new file mode 100644 index 0000000..18bfd16 --- /dev/null +++ b/bff/node_modules/postgres-array/index.js @@ -0,0 +1,97 @@ +'use strict' + +exports.parse = function (source, transform) { + return new ArrayParser(source, transform).parse() +} + +class ArrayParser { + constructor (source, transform) { + this.source = source + this.transform = transform || identity + this.position = 0 + this.entries = [] + this.recorded = [] + this.dimension = 0 + } + + isEof () { + return this.position >= this.source.length + } + + nextCharacter () { + var character = this.source[this.position++] + if (character === '\\') { + return { + value: this.source[this.position++], + escaped: true + } + } + return { + value: character, + escaped: false + } + } + + record (character) { + this.recorded.push(character) + } + + newEntry (includeEmpty) { + var entry + if (this.recorded.length > 0 || includeEmpty) { + entry = this.recorded.join('') + if (entry === 'NULL' && !includeEmpty) { + entry = null + } + if (entry !== null) entry = this.transform(entry) + this.entries.push(entry) + this.recorded = [] + } + } + + consumeDimensions () { + if (this.source[0] === '[') { + while (!this.isEof()) { + var char = this.nextCharacter() + if (char.value === '=') break + } + } + } + + parse (nested) { + var character, parser, quote + this.consumeDimensions() + while (!this.isEof()) { + character = this.nextCharacter() + if (character.value === '{' && !quote) { + this.dimension++ + if (this.dimension > 1) { + parser = new ArrayParser(this.source.substr(this.position - 1), this.transform) + this.entries.push(parser.parse(true)) + this.position += parser.position - 2 + } + } else if (character.value === '}' && !quote) { + this.dimension-- + if (!this.dimension) { + this.newEntry() + if (nested) return this.entries + } + } else if (character.value === '"' && !character.escaped) { + if (quote) this.newEntry(true) + quote = !quote + } else if (character.value === ',' && !quote) { + this.newEntry() + } else { + this.record(character.value) + } + } + if (this.dimension !== 0) { + throw new Error('array dimension not balanced') + } + return this.entries + } +} + +function identity (value) { + return value +} diff --git a/bff/node_modules/postgres-array/license b/bff/node_modules/postgres-array/license new file mode 100644 index 0000000..25c6247 --- /dev/null +++ b/bff/node_modules/postgres-array/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Ben Drucker (bendrucker.me) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/postgres-array/package.json b/bff/node_modules/postgres-array/package.json new file mode 100644 index 0000000..d6aa94e --- /dev/null +++ b/bff/node_modules/postgres-array/package.json @@ -0,0 +1,35 @@ +{ + "name": "postgres-array", + "main": "index.js", + "version": "2.0.0", + "description": "Parse postgres array columns", + "license": "MIT", + "repository": "bendrucker/postgres-array", + "author": { + "name": "Ben Drucker", + "email": "bvdrucker@gmail.com", + "url": "bendrucker.me" + }, + "engines": { + "node": ">=4" + }, + "scripts": { + "test": "standard && tape test.js" + }, + "types": "index.d.ts", + "keywords": [ + "postgres", + "array", + "parser" + ], + "dependencies": {}, + "devDependencies": { + "standard": "^12.0.1", + "tape": "^4.0.0" + }, + "files": [ + "index.js", + "index.d.ts", + "readme.md" + ] +} diff --git a/bff/node_modules/postgres-array/readme.md b/bff/node_modules/postgres-array/readme.md new file mode 100644 index 0000000..b74b369 --- /dev/null +++ b/bff/node_modules/postgres-array/readme.md @@ -0,0 +1,43 @@ +# postgres-array [![Build Status](https://travis-ci.org/bendrucker/postgres-array.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-array) + +> Parse postgres array columns + + +## Install + +``` +$ npm install --save postgres-array +``` + + +## Usage + +```js +var postgresArray = require('postgres-array') + +postgresArray.parse('{1,2,3}', (value) => parseInt(value, 10)) +//=> [1, 2, 3] +``` + +## API + +#### `parse(input, [transform])` -> `array` + +##### input + +*Required* +Type: `string` + +A Postgres array string. + +##### transform + +Type: `function` +Default: `identity` + +A function that transforms non-null values inserted into the array. + + +## License + +MIT © [Ben Drucker](http://bendrucker.me) diff --git a/bff/node_modules/postgres-bytea/index.js b/bff/node_modules/postgres-bytea/index.js new file mode 100644 index 0000000..b0dc4c7 --- /dev/null +++ b/bff/node_modules/postgres-bytea/index.js @@ -0,0 +1,33 @@ +'use strict' + +var bufferFrom = Buffer.from || Buffer + +module.exports = function parseBytea (input) { + if (/^\\x/.test(input)) { + // new 'hex' style response (pg >9.0) + return bufferFrom(input.substr(2), 'hex') + } + var output = '' + var i = 0 + while (i < input.length) { + if (input[i] !== '\\') { + output += input[i] + ++i + } else { + if (/[0-7]{3}/.test(input.substr(i + 1, 3))) { + output += String.fromCharCode(parseInt(input.substr(i + 1, 3), 8)) + i += 4 + } else { + var backslashes = 1 + while (i + backslashes < input.length && input[i + backslashes] === '\\') { + backslashes++ + } + for (var k = 0; k < Math.floor(backslashes / 2); ++k) { + output += '\\' + } + i += Math.floor(backslashes / 2) * 2 + } + } + } + return bufferFrom(output, 'binary') +} diff --git a/bff/node_modules/postgres-bytea/license b/bff/node_modules/postgres-bytea/license new file mode 100644 index 0000000..25c6247 --- /dev/null +++ b/bff/node_modules/postgres-bytea/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Ben Drucker (bendrucker.me) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/postgres-bytea/package.json b/bff/node_modules/postgres-bytea/package.json new file mode 100644 index 0000000..344b9a0 --- /dev/null +++ b/bff/node_modules/postgres-bytea/package.json @@ -0,0 +1,34 @@ +{ + "name": "postgres-bytea", + "main": "index.js", + "version": "1.0.1", + "description": "Postgres bytea parser", + "license": "MIT", + "repository": "bendrucker/postgres-bytea", + "author": { + "name": "Ben Drucker", + "email": "bvdrucker@gmail.com", + "url": "bendrucker.me" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "standard && tape test.js" + }, + "keywords": [ + "bytea", + "postgres", + "binary", + "parser" + ], + "dependencies": {}, + "devDependencies": { + "tape": "^4.0.0", + "standard": "^4.0.0" + }, + "files": [ + "index.js", + "readme.md" + ] +} diff --git a/bff/node_modules/postgres-bytea/readme.md b/bff/node_modules/postgres-bytea/readme.md new file mode 100644 index 0000000..4939c3b --- /dev/null +++ b/bff/node_modules/postgres-bytea/readme.md @@ -0,0 +1,34 @@ +# postgres-bytea [![Build Status](https://travis-ci.org/bendrucker/postgres-bytea.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-bytea) + +> Postgres bytea parser + + +## Install + +``` +$ npm install --save postgres-bytea +``` + + +## Usage + +```js +var bytea = require('postgres-bytea'); +bytea('\\000\\100\\200') +//=> buffer +``` + +## API + +#### `bytea(input)` -> `buffer` + +##### input + +*Required* +Type: `string` + +A Postgres bytea binary string. + +## License + +MIT © [Ben Drucker](http://bendrucker.me) diff --git a/bff/node_modules/postgres-date/index.js b/bff/node_modules/postgres-date/index.js new file mode 100644 index 0000000..5dc73fb --- /dev/null +++ b/bff/node_modules/postgres-date/index.js @@ -0,0 +1,116 @@ +'use strict' + +var DATE_TIME = /(\d{1,})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(\.\d{1,})?.*?( BC)?$/ +var DATE = /^(\d{1,})-(\d{2})-(\d{2})( BC)?$/ +var TIME_ZONE = /([Z+-])(\d{2})?:?(\d{2})?:?(\d{2})?/ +var INFINITY = /^-?infinity$/ + +module.exports = function parseDate (isoDate) { + if (INFINITY.test(isoDate)) { + // Capitalize to Infinity before passing to Number + return Number(isoDate.replace('i', 'I')) + } + var matches = DATE_TIME.exec(isoDate) + + if (!matches) { + // Force YYYY-MM-DD dates to be parsed as local time + return getDate(isoDate) || null + } + + var isBC = !!matches[8] + var year = parseInt(matches[1], 10) + if (isBC) { + year = bcYearToNegativeYear(year) + } + + var month = parseInt(matches[2], 10) - 1 + var day = matches[3] + var hour = parseInt(matches[4], 10) + var minute = parseInt(matches[5], 10) + var second = parseInt(matches[6], 10) + + var ms = matches[7] + ms = ms ? 1000 * parseFloat(ms) : 0 + + var date + var offset = timeZoneOffset(isoDate) + if (offset != null) { + date = new Date(Date.UTC(year, month, day, hour, minute, second, ms)) + + // Account for years from 0 to 99 being interpreted as 1900-1999 + // by Date.UTC / the multi-argument form of the Date constructor + if (is0To99(year)) { + date.setUTCFullYear(year) + } + + if (offset !== 0) { + date.setTime(date.getTime() - offset) + } + } else { + date = new Date(year, month, day, hour, minute, second, ms) + + if (is0To99(year)) { + date.setFullYear(year) + } + } + + return date +} + +function getDate (isoDate) { + var matches = DATE.exec(isoDate) + if (!matches) { + return + } + + var year = parseInt(matches[1], 10) + var isBC = !!matches[4] + if (isBC) { + year = bcYearToNegativeYear(year) + } + + var month = parseInt(matches[2], 10) - 1 + var day = matches[3] + // YYYY-MM-DD will be parsed as local time + var date = new Date(year, month, day) + + if (is0To99(year)) { + date.setFullYear(year) + } + + return date +} + +// match timezones: +// Z (UTC) +// -05 +// +06:30 +function timeZoneOffset (isoDate) { + if (isoDate.endsWith('+00')) { + return 0 + } + + var zone = TIME_ZONE.exec(isoDate.split(' ')[1]) + if (!zone) return + var type = zone[1] + + if (type === 'Z') { + return 0 + } + var sign = type === '-' ? -1 : 1 + var offset = parseInt(zone[2], 10) * 3600 + + parseInt(zone[3] || 0, 10) * 60 + + parseInt(zone[4] || 0, 10) + + return offset * sign * 1000 +} + +function bcYearToNegativeYear (year) { + // Account for numerical difference between representations of BC years + // See: https://github.com/bendrucker/postgres-date/issues/5 + return -(year - 1) +} + +function is0To99 (num) { + return num >= 0 && num < 100 +} diff --git a/bff/node_modules/postgres-date/license b/bff/node_modules/postgres-date/license new file mode 100644 index 0000000..25c6247 --- /dev/null +++ b/bff/node_modules/postgres-date/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Ben Drucker (bendrucker.me) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/postgres-date/package.json b/bff/node_modules/postgres-date/package.json new file mode 100644 index 0000000..6fddec7 --- /dev/null +++ b/bff/node_modules/postgres-date/package.json @@ -0,0 +1,33 @@ +{ + "name": "postgres-date", + "main": "index.js", + "version": "1.0.7", + "description": "Postgres date column parser", + "license": "MIT", + "repository": "bendrucker/postgres-date", + "author": { + "name": "Ben Drucker", + "email": "bvdrucker@gmail.com", + "url": "bendrucker.me" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "standard && tape test.js" + }, + "keywords": [ + "postgres", + "date", + "parser" + ], + "dependencies": {}, + "devDependencies": { + "standard": "^14.0.0", + "tape": "^5.0.0" + }, + "files": [ + "index.js", + "readme.md" + ] +} diff --git a/bff/node_modules/postgres-date/readme.md b/bff/node_modules/postgres-date/readme.md new file mode 100644 index 0000000..095431a --- /dev/null +++ b/bff/node_modules/postgres-date/readme.md @@ -0,0 +1,49 @@ +# postgres-date [![Build Status](https://travis-ci.org/bendrucker/postgres-date.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-date) [![Greenkeeper badge](https://badges.greenkeeper.io/bendrucker/postgres-date.svg)](https://greenkeeper.io/) + +> Postgres date output parser + +This package parses [date/time outputs](https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-DATETIME-OUTPUT) from Postgres into Javascript `Date` objects. Its goal is to match Postgres behavior and preserve data accuracy. + +If you find a case where a valid Postgres output results in incorrect parsing (including loss of precision), please [create a pull request](https://github.com/bendrucker/postgres-date/compare) and provide a failing test. + +**Supported Postgres Versions:** `>= 9.6` + +All prior versions of Postgres are likely compatible but not officially supported. + +## Install + +``` +$ npm install --save postgres-date +``` + + +## Usage + +```js +var parse = require('postgres-date') +parse('2011-01-23 22:15:51Z') +// => 2011-01-23T22:15:51.000Z +``` + +## API + +#### `parse(isoDate)` -> `date` + +##### isoDate + +*Required* +Type: `string` + +A date string from Postgres. + +## Releases + +The following semantic versioning increments will be used for changes: + +* **Major**: Removal of support for Node.js versions or Postgres versions (not expected) +* **Minor**: Unused, since Postgres returns dates in standard ISO 8601 format +* **Patch**: Any fix for parsing behavior + +## License + +MIT © [Ben Drucker](http://bendrucker.me) diff --git a/bff/node_modules/postgres-interval/index.d.ts b/bff/node_modules/postgres-interval/index.d.ts new file mode 100644 index 0000000..f82b4c3 --- /dev/null +++ b/bff/node_modules/postgres-interval/index.d.ts @@ -0,0 +1,20 @@ +declare namespace PostgresInterval { + export interface IPostgresInterval { + years?: number; + months?: number; + days?: number; + hours?: number; + minutes?: number; + seconds?: number; + milliseconds?: number; + + toPostgres(): string; + + toISO(): string; + toISOString(): string; + } +} + +declare function PostgresInterval(raw: string): PostgresInterval.IPostgresInterval; + +export = PostgresInterval; diff --git a/bff/node_modules/postgres-interval/index.js b/bff/node_modules/postgres-interval/index.js new file mode 100644 index 0000000..8ecca80 --- /dev/null +++ b/bff/node_modules/postgres-interval/index.js @@ -0,0 +1,125 @@ +'use strict' + +var extend = require('xtend/mutable') + +module.exports = PostgresInterval + +function PostgresInterval (raw) { + if (!(this instanceof PostgresInterval)) { + return new PostgresInterval(raw) + } + extend(this, parse(raw)) +} +var properties = ['seconds', 'minutes', 'hours', 'days', 'months', 'years'] +PostgresInterval.prototype.toPostgres = function () { + var filtered = properties.filter(this.hasOwnProperty, this) + + // In addition to `properties`, we need to account for fractions of seconds. + if (this.milliseconds && filtered.indexOf('seconds') < 0) { + filtered.push('seconds') + } + + if (filtered.length === 0) return '0' + return filtered + .map(function (property) { + var value = this[property] || 0 + + // Account for fractional part of seconds, + // remove trailing zeroes. + if (property === 'seconds' && this.milliseconds) { + value = (value + this.milliseconds / 1000).toFixed(6).replace(/\.?0+$/, '') + } + + return value + ' ' + property + }, this) + .join(' ') +} + +var propertiesISOEquivalent = { + years: 'Y', + months: 'M', + days: 'D', + hours: 'H', + minutes: 'M', + seconds: 'S' +} +var dateProperties = ['years', 'months', 'days'] +var timeProperties = ['hours', 'minutes', 'seconds'] +// according to ISO 8601 +PostgresInterval.prototype.toISOString = PostgresInterval.prototype.toISO = function () { + var datePart = dateProperties + .map(buildProperty, this) + .join('') + + var timePart = timeProperties + .map(buildProperty, this) + .join('') + + return 'P' + datePart + 'T' + timePart + + function buildProperty (property) { + var value = this[property] || 0 + + // Account for fractional part of seconds, + // remove trailing zeroes. + if (property === 'seconds' && this.milliseconds) { + value = (value + this.milliseconds / 1000).toFixed(6).replace(/0+$/, '') + } + + return value + propertiesISOEquivalent[property] + } +} + +var NUMBER = '([+-]?\\d+)' +var YEAR = NUMBER + '\\s+years?' +var MONTH = NUMBER + '\\s+mons?' +var DAY = NUMBER + '\\s+days?' +var TIME = '([+-])?([\\d]*):(\\d\\d):(\\d\\d)\\.?(\\d{1,6})?' +var INTERVAL = new RegExp([YEAR, MONTH, DAY, TIME].map(function (regexString) { + return '(' + regexString + ')?' +}) + .join('\\s*')) + +// Positions of values in regex match +var positions = { + years: 2, + months: 4, + days: 6, + hours: 9, + minutes: 10, + seconds: 11, + milliseconds: 12 +} +// We can use negative time +var negatives = ['hours', 'minutes', 'seconds', 'milliseconds'] + +function parseMilliseconds (fraction) { + // add omitted zeroes + var microseconds = fraction + '000000'.slice(fraction.length) + return parseInt(microseconds, 10) / 1000 +} + +function parse (interval) { + if (!interval) return {} + var matches = INTERVAL.exec(interval) + var isNegative = matches[8] === '-' + return Object.keys(positions) + .reduce(function (parsed, property) { + var position = positions[property] + var value = matches[position] + // no empty string + if (!value) return parsed + // milliseconds are actually microseconds (up to 6 digits) + // with omitted trailing zeroes. + value = property === 'milliseconds' + ? parseMilliseconds(value) + : parseInt(value, 10) + // no zeros + if (!value) return parsed + if (isNegative && ~negatives.indexOf(property)) { + value *= -1 + } + parsed[property] = value + return parsed + }, {}) +} diff --git a/bff/node_modules/postgres-interval/license b/bff/node_modules/postgres-interval/license new file mode 100644 index 0000000..25c6247 --- /dev/null +++ b/bff/node_modules/postgres-interval/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Ben Drucker (bendrucker.me) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/postgres-interval/package.json b/bff/node_modules/postgres-interval/package.json new file mode 100644 index 0000000..95520a0 --- /dev/null +++ b/bff/node_modules/postgres-interval/package.json @@ -0,0 +1,36 @@ +{ + "name": "postgres-interval", + "main": "index.js", + "version": "1.2.0", + "description": "Parse Postgres interval columns", + "license": "MIT", + "repository": "bendrucker/postgres-interval", + "author": { + "name": "Ben Drucker", + "email": "bvdrucker@gmail.com", + "url": "bendrucker.me" + }, + "engines": { + "node": ">=0.10.0" + }, + "scripts": { + "test": "standard && tape test.js" + }, + "keywords": [ + "postgres", + "interval", + "parser" + ], + "dependencies": { + "xtend": "^4.0.0" + }, + "devDependencies": { + "tape": "^4.0.0", + "standard": "^12.0.1" + }, + "files": [ + "index.js", + "index.d.ts", + "readme.md" + ] +} diff --git a/bff/node_modules/postgres-interval/readme.md b/bff/node_modules/postgres-interval/readme.md new file mode 100644 index 0000000..53cda4a --- /dev/null +++ b/bff/node_modules/postgres-interval/readme.md @@ -0,0 +1,48 @@ +# postgres-interval [![Build Status](https://travis-ci.org/bendrucker/postgres-interval.svg?branch=master)](https://travis-ci.org/bendrucker/postgres-interval) [![Greenkeeper badge](https://badges.greenkeeper.io/bendrucker/postgres-interval.svg)](https://greenkeeper.io/) + +> Parse Postgres interval columns + + +## Install + +``` +$ npm install --save postgres-interval +``` + + +## Usage + +```js +var parse = require('postgres-interval') +var interval = parse('01:02:03') +//=> {hours: 1, minutes: 2, seconds: 3} +interval.toPostgres() +// 3 seconds 2 minutes 1 hours +interval.toISO() +// P0Y0M0DT1H2M3S +``` + +## API + +#### `parse(pgInterval)` -> `interval` + +##### pgInterval + +*Required* +Type: `string` + +A Postgres interval string. + +#### `interval.toPostgres()` -> `string` + +Returns an interval string. This allows the interval object to be passed into prepared statements. + +#### `interval.toISOString()` -> `string` + +Returns an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) compliant string. + +Also available as `interval.toISO()` for backwards compatibility. + +## License + +MIT © [Ben Drucker](http://bendrucker.me) diff --git a/bff/node_modules/process-nextick-args/index.js b/bff/node_modules/process-nextick-args/index.js new file mode 100644 index 0000000..3eecf11 --- /dev/null +++ b/bff/node_modules/process-nextick-args/index.js @@ -0,0 +1,45 @@ +'use strict'; + +if (typeof process === 'undefined' || + !process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + diff --git a/bff/node_modules/process-nextick-args/license.md b/bff/node_modules/process-nextick-args/license.md new file mode 100644 index 0000000..c67e353 --- /dev/null +++ b/bff/node_modules/process-nextick-args/license.md @@ -0,0 +1,19 @@ +# Copyright (c) 2015 Calvin Metcalf + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.** diff --git a/bff/node_modules/process-nextick-args/package.json b/bff/node_modules/process-nextick-args/package.json new file mode 100644 index 0000000..6070b72 --- /dev/null +++ b/bff/node_modules/process-nextick-args/package.json @@ -0,0 +1,25 @@ +{ + "name": "process-nextick-args", + "version": "2.0.1", + "description": "process.nextTick but always with args", + "main": "index.js", + "files": [ + "index.js" + ], + "scripts": { + "test": "node test.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/calvinmetcalf/process-nextick-args.git" + }, + "author": "", + "license": "MIT", + "bugs": { + "url": "https://github.com/calvinmetcalf/process-nextick-args/issues" + }, + "homepage": "https://github.com/calvinmetcalf/process-nextick-args", + "devDependencies": { + "tap": "~0.2.6" + } +} diff --git a/bff/node_modules/process-nextick-args/readme.md b/bff/node_modules/process-nextick-args/readme.md new file mode 100644 index 0000000..ecb432c --- /dev/null +++ b/bff/node_modules/process-nextick-args/readme.md @@ -0,0 +1,18 @@ +process-nextick-args +===== + +[![Build Status](https://travis-ci.org/calvinmetcalf/process-nextick-args.svg?branch=master)](https://travis-ci.org/calvinmetcalf/process-nextick-args) + +```bash +npm install --save process-nextick-args +``` + +Always be able to pass arguments to process.nextTick, no matter the platform + +```js +var pna = require('process-nextick-args'); + +pna.nextTick(function (a, b, c) { + console.log(a, b, c); +}, 'step', 3, 'profit'); +``` diff --git a/bff/node_modules/proxy-addr/HISTORY.md b/bff/node_modules/proxy-addr/HISTORY.md new file mode 100644 index 0000000..8480242 --- /dev/null +++ b/bff/node_modules/proxy-addr/HISTORY.md @@ -0,0 +1,161 @@ +2.0.7 / 2021-05-31 +================== + + * deps: forwarded@0.2.0 + - Use `req.socket` over deprecated `req.connection` + +2.0.6 / 2020-02-24 +================== + + * deps: ipaddr.js@1.9.1 + +2.0.5 / 2019-04-16 +================== + + * deps: ipaddr.js@1.9.0 + +2.0.4 / 2018-07-26 +================== + + * deps: ipaddr.js@1.8.0 + +2.0.3 / 2018-02-19 +================== + + * deps: ipaddr.js@1.6.0 + +2.0.2 / 2017-09-24 +================== + + * deps: forwarded@~0.1.2 + - perf: improve header parsing + - perf: reduce overhead when no `X-Forwarded-For` header + +2.0.1 / 2017-09-10 +================== + + * deps: forwarded@~0.1.1 + - Fix trimming leading / trailing OWS + - perf: hoist regular expression + * deps: ipaddr.js@1.5.2 + +2.0.0 / 2017-08-08 +================== + + * Drop support for Node.js below 0.10 + +1.1.5 / 2017-07-25 +================== + + * Fix array argument being altered + * deps: ipaddr.js@1.4.0 + +1.1.4 / 2017-03-24 +================== + + * deps: ipaddr.js@1.3.0 + +1.1.3 / 2017-01-14 +================== + + * deps: ipaddr.js@1.2.0 + +1.1.2 / 2016-05-29 +================== + + * deps: ipaddr.js@1.1.1 + - Fix IPv6-mapped IPv4 validation edge cases + +1.1.1 / 2016-05-03 +================== + + * Fix regression matching mixed versions against multiple subnets + +1.1.0 / 2016-05-01 +================== + + * Fix accepting various invalid netmasks + - IPv4 netmasks must be contingous + - IPv6 addresses cannot be used as a netmask + * deps: ipaddr.js@1.1.0 + +1.0.10 / 2015-12-09 +=================== + + * deps: ipaddr.js@1.0.5 + - Fix regression in `isValid` with non-string arguments + +1.0.9 / 2015-12-01 +================== + + * deps: ipaddr.js@1.0.4 + - Fix accepting some invalid IPv6 addresses + - Reject CIDRs with negative or overlong masks + * perf: enable strict mode + +1.0.8 / 2015-05-10 +================== + + * deps: ipaddr.js@1.0.1 + +1.0.7 / 2015-03-16 +================== + + * deps: ipaddr.js@0.1.9 + - Fix OOM on certain inputs to `isValid` + +1.0.6 / 2015-02-01 +================== + + * deps: ipaddr.js@0.1.8 + +1.0.5 / 2015-01-08 +================== + + * deps: ipaddr.js@0.1.6 + +1.0.4 / 2014-11-23 +================== + + * deps: ipaddr.js@0.1.5 + - Fix edge cases with `isValid` + +1.0.3 / 2014-09-21 +================== + + * Use `forwarded` npm module + +1.0.2 / 2014-09-18 +================== + + * Fix a global leak when multiple subnets are trusted + * Support Node.js 0.6 + * deps: ipaddr.js@0.1.3 + +1.0.1 / 2014-06-03 +================== + + * Fix links in npm package + +1.0.0 / 2014-05-08 +================== + + * Add `trust` argument to determine proxy trust on + * Accepts custom function + * Accepts IPv4/IPv6 address(es) + * Accepts subnets + * Accepts pre-defined names + * Add optional `trust` argument to `proxyaddr.all` to + stop at first untrusted + * Add `proxyaddr.compile` to pre-compile `trust` function + to make subsequent calls faster + +0.0.1 / 2014-05-04 +================== + + * Fix bad npm publish + +0.0.0 / 2014-05-04 +================== + + * Initial release diff --git a/bff/node_modules/proxy-addr/LICENSE b/bff/node_modules/proxy-addr/LICENSE new file mode 100644 index 0000000..cab251c --- /dev/null +++ b/bff/node_modules/proxy-addr/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/proxy-addr/README.md b/bff/node_modules/proxy-addr/README.md new file mode 100644 index 0000000..69c0b63 --- /dev/null +++ b/bff/node_modules/proxy-addr/README.md @@ -0,0 +1,139 @@ +# proxy-addr + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Determine address of proxied request + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install proxy-addr +``` + +## API + +```js +var proxyaddr = require('proxy-addr') +``` + +### proxyaddr(req, trust) + +Return the address of the request, using the given `trust` parameter. + +The `trust` argument is a function that returns `true` if you trust +the address, `false` if you don't. The closest untrusted address is +returned. + +```js +proxyaddr(req, function (addr) { return addr === '127.0.0.1' }) +proxyaddr(req, function (addr, i) { return i < 1 }) +``` + +The `trust` arugment may also be a single IP address string or an +array of trusted addresses, as plain IP addresses, CIDR-formatted +strings, or IP/netmask strings. + +```js +proxyaddr(req, '127.0.0.1') +proxyaddr(req, ['127.0.0.0/8', '10.0.0.0/8']) +proxyaddr(req, ['127.0.0.0/255.0.0.0', '192.168.0.0/255.255.0.0']) +``` + +This module also supports IPv6. Your IPv6 addresses will be normalized +automatically (i.e. `fe80::00ed:1` equals `fe80:0:0:0:0:0:ed:1`). + +```js +proxyaddr(req, '::1') +proxyaddr(req, ['::1/128', 'fe80::/10']) +``` + +This module will automatically work with IPv4-mapped IPv6 addresses +as well to support node.js in IPv6-only mode. This means that you do +not have to specify both `::ffff:a00:1` and `10.0.0.1`. + +As a convenience, this module also takes certain pre-defined names +in addition to IP addresses, which expand into IP addresses: + +```js +proxyaddr(req, 'loopback') +proxyaddr(req, ['loopback', 'fc00:ac:1ab5:fff::1/64']) +``` + + * `loopback`: IPv4 and IPv6 loopback addresses (like `::1` and + `127.0.0.1`). + * `linklocal`: IPv4 and IPv6 link-local addresses (like + `fe80::1:1:1:1` and `169.254.0.1`). + * `uniquelocal`: IPv4 private addresses and IPv6 unique-local + addresses (like `fc00:ac:1ab5:fff::1` and `192.168.0.1`). + +When `trust` is specified as a function, it will be called for each +address to determine if it is a trusted address. The function is +given two arguments: `addr` and `i`, where `addr` is a string of +the address to check and `i` is a number that represents the distance +from the socket address. + +### proxyaddr.all(req, [trust]) + +Return all the addresses of the request, optionally stopping at the +first untrusted. This array is ordered from closest to furthest +(i.e. `arr[0] === req.connection.remoteAddress`). + +```js +proxyaddr.all(req) +``` + +The optional `trust` argument takes the same arguments as `trust` +does in `proxyaddr(req, trust)`. + +```js +proxyaddr.all(req, 'loopback') +``` + +### proxyaddr.compile(val) + +Compiles argument `val` into a `trust` function. This function takes +the same arguments as `trust` does in `proxyaddr(req, trust)` and +returns a function suitable for `proxyaddr(req, trust)`. + +```js +var trust = proxyaddr.compile('loopback') +var addr = proxyaddr(req, trust) +``` + +This function is meant to be optimized for use against every request. +It is recommend to compile a trust function up-front for the trusted +configuration and pass that to `proxyaddr(req, trust)` for each request. + +## Testing + +```sh +$ npm test +``` + +## Benchmarks + +```sh +$ npm run-script bench +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/proxy-addr/master?label=ci +[ci-url]: https://github.com/jshttp/proxy-addr/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/proxy-addr/master +[coveralls-url]: https://coveralls.io/r/jshttp/proxy-addr?branch=master +[node-image]: https://badgen.net/npm/node/proxy-addr +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/proxy-addr +[npm-url]: https://npmjs.org/package/proxy-addr +[npm-version-image]: https://badgen.net/npm/v/proxy-addr diff --git a/bff/node_modules/proxy-addr/index.js b/bff/node_modules/proxy-addr/index.js new file mode 100644 index 0000000..a909b05 --- /dev/null +++ b/bff/node_modules/proxy-addr/index.js @@ -0,0 +1,327 @@ +/*! + * proxy-addr + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = proxyaddr +module.exports.all = alladdrs +module.exports.compile = compile + +/** + * Module dependencies. + * @private + */ + +var forwarded = require('forwarded') +var ipaddr = require('ipaddr.js') + +/** + * Variables. + * @private + */ + +var DIGIT_REGEXP = /^[0-9]+$/ +var isip = ipaddr.isValid +var parseip = ipaddr.parse + +/** + * Pre-defined IP ranges. + * @private + */ + +var IP_RANGES = { + linklocal: ['169.254.0.0/16', 'fe80::/10'], + loopback: ['127.0.0.1/8', '::1/128'], + uniquelocal: ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', 'fc00::/7'] +} + +/** + * Get all addresses in the request, optionally stopping + * at the first untrusted. + * + * @param {Object} request + * @param {Function|Array|String} [trust] + * @public + */ + +function alladdrs (req, trust) { + // get addresses + var addrs = forwarded(req) + + if (!trust) { + // Return all addresses + return addrs + } + + if (typeof trust !== 'function') { + trust = compile(trust) + } + + for (var i = 0; i < addrs.length - 1; i++) { + if (trust(addrs[i], i)) continue + + addrs.length = i + 1 + } + + return addrs +} + +/** + * Compile argument into trust function. + * + * @param {Array|String} val + * @private + */ + +function compile (val) { + if (!val) { + throw new TypeError('argument is required') + } + + var trust + + if (typeof val === 'string') { + trust = [val] + } else if (Array.isArray(val)) { + trust = val.slice() + } else { + throw new TypeError('unsupported trust argument') + } + + for (var i = 0; i < trust.length; i++) { + val = trust[i] + + if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) { + continue + } + + // Splice in pre-defined range + val = IP_RANGES[val] + trust.splice.apply(trust, [i, 1].concat(val)) + i += val.length - 1 + } + + return compileTrust(compileRangeSubnets(trust)) +} + +/** + * Compile `arr` elements into range subnets. + * + * @param {Array} arr + * @private + */ + +function compileRangeSubnets (arr) { + var rangeSubnets = new Array(arr.length) + + for (var i = 0; i < arr.length; i++) { + rangeSubnets[i] = parseipNotation(arr[i]) + } + + return rangeSubnets +} + +/** + * Compile range subnet array into trust function. + * + * @param {Array} rangeSubnets + * @private + */ + +function compileTrust (rangeSubnets) { + // Return optimized function based on length + var len = rangeSubnets.length + return len === 0 + ? trustNone + : len === 1 + ? trustSingle(rangeSubnets[0]) + : trustMulti(rangeSubnets) +} + +/** + * Parse IP notation string into range subnet. + * + * @param {String} note + * @private + */ + +function parseipNotation (note) { + var pos = note.lastIndexOf('/') + var str = pos !== -1 + ? note.substring(0, pos) + : note + + if (!isip(str)) { + throw new TypeError('invalid IP address: ' + str) + } + + var ip = parseip(str) + + if (pos === -1 && ip.kind() === 'ipv6' && ip.isIPv4MappedAddress()) { + // Store as IPv4 + ip = ip.toIPv4Address() + } + + var max = ip.kind() === 'ipv6' + ? 128 + : 32 + + var range = pos !== -1 + ? note.substring(pos + 1, note.length) + : null + + if (range === null) { + range = max + } else if (DIGIT_REGEXP.test(range)) { + range = parseInt(range, 10) + } else if (ip.kind() === 'ipv4' && isip(range)) { + range = parseNetmask(range) + } else { + range = null + } + + if (range <= 0 || range > max) { + throw new TypeError('invalid range on address: ' + note) + } + + return [ip, range] +} + +/** + * Parse netmask string into CIDR range. + * + * @param {String} netmask + * @private + */ + +function parseNetmask (netmask) { + var ip = parseip(netmask) + var kind = ip.kind() + + return kind === 'ipv4' + ? ip.prefixLengthFromSubnetMask() + : null +} + +/** + * Determine address of proxied request. + * + * @param {Object} request + * @param {Function|Array|String} trust + * @public + */ + +function proxyaddr (req, trust) { + if (!req) { + throw new TypeError('req argument is required') + } + + if (!trust) { + throw new TypeError('trust argument is required') + } + + var addrs = alladdrs(req, trust) + var addr = addrs[addrs.length - 1] + + return addr +} + +/** + * Static trust function to trust nothing. + * + * @private + */ + +function trustNone () { + return false +} + +/** + * Compile trust function for multiple subnets. + * + * @param {Array} subnets + * @private + */ + +function trustMulti (subnets) { + return function trust (addr) { + if (!isip(addr)) return false + + var ip = parseip(addr) + var ipconv + var kind = ip.kind() + + for (var i = 0; i < subnets.length; i++) { + var subnet = subnets[i] + var subnetip = subnet[0] + var subnetkind = subnetip.kind() + var subnetrange = subnet[1] + var trusted = ip + + if (kind !== subnetkind) { + if (subnetkind === 'ipv4' && !ip.isIPv4MappedAddress()) { + // Incompatible IP addresses + continue + } + + if (!ipconv) { + // Convert IP to match subnet IP kind + ipconv = subnetkind === 'ipv4' + ? ip.toIPv4Address() + : ip.toIPv4MappedAddress() + } + + trusted = ipconv + } + + if (trusted.match(subnetip, subnetrange)) { + return true + } + } + + return false + } +} + +/** + * Compile trust function for single subnet. + * + * @param {Object} subnet + * @private + */ + +function trustSingle (subnet) { + var subnetip = subnet[0] + var subnetkind = subnetip.kind() + var subnetisipv4 = subnetkind === 'ipv4' + var subnetrange = subnet[1] + + return function trust (addr) { + if (!isip(addr)) return false + + var ip = parseip(addr) + var kind = ip.kind() + + if (kind !== subnetkind) { + if (subnetisipv4 && !ip.isIPv4MappedAddress()) { + // Incompatible IP addresses + return false + } + + // Convert IP to match subnet IP kind + ip = subnetisipv4 + ? ip.toIPv4Address() + : ip.toIPv4MappedAddress() + } + + return ip.match(subnetip, subnetrange) + } +} diff --git a/bff/node_modules/proxy-addr/package.json b/bff/node_modules/proxy-addr/package.json new file mode 100644 index 0000000..24ba8f7 --- /dev/null +++ b/bff/node_modules/proxy-addr/package.json @@ -0,0 +1,47 @@ +{ + "name": "proxy-addr", + "description": "Determine address of proxied request", + "version": "2.0.7", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "keywords": [ + "ip", + "proxy", + "x-forwarded-for" + ], + "repository": "jshttp/proxy-addr", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "devDependencies": { + "benchmark": "2.1.4", + "beautify-benchmark": "0.2.4", + "deep-equal": "1.0.1", + "eslint": "7.26.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.23.4", + "eslint-plugin-markdown": "2.2.0", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "4.3.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "8.4.0", + "nyc": "15.1.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.10" + }, + "scripts": { + "bench": "node benchmark/index.js", + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} diff --git a/bff/node_modules/proxy-from-env/LICENSE b/bff/node_modules/proxy-from-env/LICENSE new file mode 100644 index 0000000..8f25097 --- /dev/null +++ b/bff/node_modules/proxy-from-env/LICENSE @@ -0,0 +1,20 @@ +The MIT License + +Copyright (C) 2016-2018 Rob Wu + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/proxy-from-env/README.md b/bff/node_modules/proxy-from-env/README.md new file mode 100644 index 0000000..1c00ecf --- /dev/null +++ b/bff/node_modules/proxy-from-env/README.md @@ -0,0 +1,163 @@ +# proxy-from-env + +![Build Status](https://github.com/Rob--W/proxy-from-env/actions/workflows/run-tests.yaml/badge.svg?branch=master) +[![Coverage Status](https://coveralls.io/repos/github/Rob--W/proxy-from-env/badge.svg?branch=master)](https://coveralls.io/github/Rob--W/proxy-from-env?branch=master) + +`proxy-from-env` is a Node.js package that exports a function (`getProxyForUrl`) +that takes an input URL (a string, an instance of +[`URL`](https://nodejs.org/docs/latest/api/url.html#the-whatwg-url-api), +or [`url.parse`](https://nodejs.org/docs/latest/api/url.html#url_url_parsing)'s +return value) and returns the desired proxy URL (also a string) based on +standard proxy environment variables. If no proxy is set, an empty string is +returned. + +If your application makes important (security) decisions based on the URL, be +consistent in the mechanism to parse and validate URLs, as differences in URL +parsing behavior can affect the outcome of proxy resolution. +Strings are parsed with the standard `URL` API, as of `proxy-from-env@2.0.0`. +Older versions relied on the (now deprecated) `url.parse` method instead. + +Invalid values in environment variables are not handled by the library +([#41](https://github.com/Rob--W/proxy-from-env/issues/41)). + +It is your responsibility to actually proxy the request using the given URL. + +Installation: + +```sh +npm install proxy-from-env +``` + +## Example +This example shows how the data for a URL can be fetched via the +[`http` module](https://nodejs.org/api/http.html), in a proxy-aware way. + +warning: this simple example works for http requests only. To support https, +you must establish a proxy tunnel via the +[http `connect` method](https://developer.mozilla.org/en-us/docs/web/http/reference/methods/connect). + +```javascript +import http from 'node:test'; +import { getProxyForUrl } from 'proxy-from-env'; +// ^ or: var getProxyForUrl = require('proxy-from-env').getProxyForUrl; + +var some_url = 'http://example.com/something'; + +// // Example, if there is a proxy server at 10.0.0.1:1234, then setting the +// // http_proxy environment variable causes the request to go through a proxy. +// process.env.http_proxy = 'http://10.0.0.1:1234'; +// +// // But if the host to be proxied is listed in NO_PROXY, then the request is +// // not proxied (but a direct request is made). +// process.env.no_proxy = 'example.com'; + +var proxy_url = getProxyForUrl(some_url); // <-- Our magic. +if (proxy_url) { + // Should be proxied through proxy_url. + var parsed_some_url = new URL(some_url); + var parsed_proxy_url = new URL(proxy_url); + // A HTTP proxy is quite simple. It is similar to a normal request, except the + // path is an absolute URL, and the proxied URL's host is put in the header + // instead of the server's actual host. + httpOptions = { + protocol: parsed_proxy_url.protocol, + hostname: parsed_proxy_url.hostname, + port: parsed_proxy_url.port, + path: parsed_some_url.href, + headers: { + Host: parsed_some_url.host, // = host name + optional port. + }, + }; +} else { + // Direct request. + httpOptions = some_url; +} +http.get(httpOptions, function(res) { + var responses = []; + res.on('data', function(chunk) { responses.push(chunk); }); + res.on('end', function() { console.log(responses.join('')); }); +}); +``` + +### Full proxy support +The simple example above works for http requests only. To support https, you +must establish a proxy tunnel via the +[http `connect` method](https://developer.mozilla.org/en-us/docs/web/http/reference/methods/connect). + +An example of that is shown in the +[`https-proxy-agent` npm package](https://www.npmjs.com/package/https-proxy-agent). +The [`proxy-agent` npm package](https://www.npmjs.com/package/proxy-agent) +combines `https-proxy-agent` and `proxy-from-env` to offer a `http.Agent` that +supports proxies from environment variables. + +### Built-in proxy support +Node.js is working on built-in support for proxy environment variables, +currently behind `NODE_USE_ENV_PROXY=1` or `--use-env-proxy`. For details, see: + +- https://github.com/nodejs/node/issues/57872 +- https://nodejs.org/api/http.html#built-in-proxy-support + + +## Environment variables +The environment variables can be specified in all lowercase or all uppercase, +with lowercase taking precedence over the uppercase variant. A variable that is +not set has the same meaning as a variable that is set but has no value. + +### NO\_PROXY + +`NO_PROXY` is a list of host names (optionally with a port). If the input URL +matches any of the entries in `NO_PROXY`, then the input URL should be fetched +by a direct request (i.e. without a proxy). + +Matching follows the following rules: + +- `NO_PROXY=*` disables all proxies. +- Space and commas may be used to separate the entries in the `NO_PROXY` list. +- If `NO_PROXY` does not contain any entries, then proxies are never disabled. +- If a port is added after the host name, then the ports must match. If the URL + does not have an explicit port name, the protocol's default port is used. +- Generally, the proxy is only disabled if the host name is an exact match for + an entry in the `NO_PROXY` list. The only exceptions are entries that start + with a dot or with a wildcard; then the proxy is disabled if the host name + ends with the entry. + +See `test.js` for examples of what should match and what does not. + +### \*\_PROXY + +The environment variable used for the proxy depends on the protocol of the URL. +For example, `https://example.com` uses the "https" protocol, and therefore the +proxy to be used is `HTTPS_PROXY` (_NOT_ `HTTP_PROXY`, which is _only_ used for +http:-URLs). + +The library is not limited to http(s), other schemes such as +`FTP_PROXY` (ftp:), +`WSS_PROXY` (wss:), +`WS_PROXY` (ws:) +are also supported. + +If present, `ALL_PROXY` is used as fallback if there is no other match. + + +## External resources +The exact way of parsing the environment variables is not codified in any +standard. This library is designed to be compatible with formats as expected by +existing software. +The following resources were used to determine the desired behavior: + +- cURL: + https://curl.haxx.se/docs/manpage.html#ENVIRONMENT + https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4446-L4514 + https://github.com/curl/curl/blob/4af40b3646d3b09f68e419f7ca866ff395d1f897/lib/url.c#L4608-L4638 + +- wget: + https://www.gnu.org/software/wget/manual/wget.html#Proxies + http://git.savannah.gnu.org/cgit/wget.git/tree/src/init.c?id=636a5f9a1c508aa39e35a3a8e9e54520a284d93d#n383 + http://git.savannah.gnu.org/cgit/wget.git/tree/src/retr.c?id=93c1517c4071c4288ba5a4b038e7634e4c6b5482#n1278 + +- W3: + https://www.w3.org/Daemon/User/Proxies/ProxyClients.html + +- Python's urllib: + https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L755-L782 + https://github.com/python/cpython/blob/936135bb97fe04223aa30ca6e98eac8f3ed6b349/Lib/urllib/request.py#L2444-L2479 diff --git a/bff/node_modules/proxy-from-env/index.cjs b/bff/node_modules/proxy-from-env/index.cjs new file mode 100644 index 0000000..ede2a9f --- /dev/null +++ b/bff/node_modules/proxy-from-env/index.cjs @@ -0,0 +1,105 @@ +'use strict'; + +var DEFAULT_PORTS = { + ftp: 21, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443, +}; + +function parseUrl(urlString) { + try { + return new URL(urlString); + } catch { + return null; + } +} + +/** + * @param {string|object|URL} url - The URL as a string or URL instance, or a + * compatible object (such as the result from legacy url.parse). + * @return {string} The URL of the proxy that should handle the request to the + * given URL. If no proxy is set, this will be an empty string. + */ +function getProxyForUrl(url) { + var parsedUrl = (typeof url === 'string' ? parseUrl(url) : url) || {}; + var proto = parsedUrl.protocol; + var hostname = parsedUrl.host; + var port = parsedUrl.port; + if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { + return ''; // Don't proxy URLs without a valid scheme or host. + } + + proto = proto.split(':', 1)[0]; + // Stripping ports in this way instead of using parsedUrl.hostname to make + // sure that the brackets around IPv6 addresses are kept. + hostname = hostname.replace(/:\d*$/, ''); + port = parseInt(port) || DEFAULT_PORTS[proto] || 0; + if (!shouldProxy(hostname, port)) { + return ''; // Don't proxy URLs that match NO_PROXY. + } + + var proxy = getEnv(proto + '_proxy') || getEnv('all_proxy'); + if (proxy && proxy.indexOf('://') === -1) { + // Missing scheme in proxy, default to the requested URL's scheme. + proxy = proto + '://' + proxy; + } + return proxy; +} + +/** + * Determines whether a given URL should be proxied. + * + * @param {string} hostname - The host name of the URL. + * @param {number} port - The effective port of the URL. + * @returns {boolean} Whether the given URL should be proxied. + * @private + */ +function shouldProxy(hostname, port) { + var NO_PROXY = getEnv('no_proxy').toLowerCase(); + if (!NO_PROXY) { + return true; // Always proxy if NO_PROXY is not set. + } + if (NO_PROXY === '*') { + return false; // Never proxy if wildcard is set. + } + + return NO_PROXY.split(/[,\s]/).every(function(proxy) { + if (!proxy) { + return true; // Skip zero-length hosts. + } + var parsedProxy = proxy.match(/^(.+):(\d+)$/); + var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; + var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; + if (parsedProxyPort && parsedProxyPort !== port) { + return true; // Skip if ports don't match. + } + + if (!/^[.*]/.test(parsedProxyHostname)) { + // No wildcards, so stop proxying if there is an exact match. + return hostname !== parsedProxyHostname; + } + + if (parsedProxyHostname.charAt(0) === '*') { + // Remove leading wildcard. + parsedProxyHostname = parsedProxyHostname.slice(1); + } + // Stop proxying if the hostname ends with the no_proxy host. + return !hostname.endsWith(parsedProxyHostname); + }); +} + +/** + * Get the value for an environment variable. + * + * @param {string} key - The name of the environment variable. + * @return {string} The value of the environment variable. + * @private + */ +function getEnv(key) { + return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; +} + +exports.getProxyForUrl = getProxyForUrl; diff --git a/bff/node_modules/proxy-from-env/index.js b/bff/node_modules/proxy-from-env/index.js new file mode 100644 index 0000000..333f45a --- /dev/null +++ b/bff/node_modules/proxy-from-env/index.js @@ -0,0 +1,103 @@ +'use strict'; + +var DEFAULT_PORTS = { + ftp: 21, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443, +}; + +function parseUrl(urlString) { + try { + return new URL(urlString); + } catch { + return null; + } +} + +/** + * @param {string|object|URL} url - The URL as a string or URL instance, or a + * compatible object (such as the result from legacy url.parse). + * @return {string} The URL of the proxy that should handle the request to the + * given URL. If no proxy is set, this will be an empty string. + */ +export function getProxyForUrl(url) { + var parsedUrl = (typeof url === 'string' ? parseUrl(url) : url) || {}; + var proto = parsedUrl.protocol; + var hostname = parsedUrl.host; + var port = parsedUrl.port; + if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { + return ''; // Don't proxy URLs without a valid scheme or host. + } + + proto = proto.split(':', 1)[0]; + // Stripping ports in this way instead of using parsedUrl.hostname to make + // sure that the brackets around IPv6 addresses are kept. + hostname = hostname.replace(/:\d*$/, ''); + port = parseInt(port) || DEFAULT_PORTS[proto] || 0; + if (!shouldProxy(hostname, port)) { + return ''; // Don't proxy URLs that match NO_PROXY. + } + + var proxy = getEnv(proto + '_proxy') || getEnv('all_proxy'); + if (proxy && proxy.indexOf('://') === -1) { + // Missing scheme in proxy, default to the requested URL's scheme. + proxy = proto + '://' + proxy; + } + return proxy; +} + +/** + * Determines whether a given URL should be proxied. + * + * @param {string} hostname - The host name of the URL. + * @param {number} port - The effective port of the URL. + * @returns {boolean} Whether the given URL should be proxied. + * @private + */ +function shouldProxy(hostname, port) { + var NO_PROXY = getEnv('no_proxy').toLowerCase(); + if (!NO_PROXY) { + return true; // Always proxy if NO_PROXY is not set. + } + if (NO_PROXY === '*') { + return false; // Never proxy if wildcard is set. + } + + return NO_PROXY.split(/[,\s]/).every(function(proxy) { + if (!proxy) { + return true; // Skip zero-length hosts. + } + var parsedProxy = proxy.match(/^(.+):(\d+)$/); + var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; + var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; + if (parsedProxyPort && parsedProxyPort !== port) { + return true; // Skip if ports don't match. + } + + if (!/^[.*]/.test(parsedProxyHostname)) { + // No wildcards, so stop proxying if there is an exact match. + return hostname !== parsedProxyHostname; + } + + if (parsedProxyHostname.charAt(0) === '*') { + // Remove leading wildcard. + parsedProxyHostname = parsedProxyHostname.slice(1); + } + // Stop proxying if the hostname ends with the no_proxy host. + return !hostname.endsWith(parsedProxyHostname); + }); +} + +/** + * Get the value for an environment variable. + * + * @param {string} key - The name of the environment variable. + * @return {string} The value of the environment variable. + * @private + */ +function getEnv(key) { + return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; +} diff --git a/bff/node_modules/proxy-from-env/package.json b/bff/node_modules/proxy-from-env/package.json new file mode 100644 index 0000000..3960f35 --- /dev/null +++ b/bff/node_modules/proxy-from-env/package.json @@ -0,0 +1,43 @@ +{ + "name": "proxy-from-env", + "version": "2.1.0", + "description": "Offers getProxyForUrl to get the proxy URL for a URL, respecting the *_PROXY (e.g. HTTP_PROXY) and NO_PROXY environment variables.", + "main": "index.cjs", + "exports": { + "import": "./index.js", + "require": "./index.cjs" + }, + "files": ["index.js", "index.cjs"], + "scripts": { + "lint": "eslint *.js *.mjs *.cjs", + "test": "node --test ./test.js", + "test-require": "node ./test-require.cjs", + "test-coverage": "node --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info ./test.js", + "test-coverage-as-html": "npm run test-coverage && genhtml lcov.info -o coverage/" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Rob--W/proxy-from-env.git" + }, + "keywords": [ + "proxy", + "http_proxy", + "https_proxy", + "no_proxy", + "environment" + ], + "author": "Rob Wu (https://robwu.nl/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/Rob--W/proxy-from-env/issues" + }, + "homepage": "https://github.com/Rob--W/proxy-from-env#readme", + "devDependencies": { + "eslint": "^9.39.2" + }, + "type": "module", + "engines": { + "node": ">=10" + }, + "sideEffects": false +} diff --git a/bff/node_modules/qs/.editorconfig b/bff/node_modules/qs/.editorconfig new file mode 100644 index 0000000..dd5a8d8 --- /dev/null +++ b/bff/node_modules/qs/.editorconfig @@ -0,0 +1,46 @@ +root = true + +[*] +indent_style = space +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 180 +quote_type = single + +[test/*] +max_line_length = off + +[LICENSE.md] +indent_size = off + +[*.md] +max_line_length = off + +[*.json] +max_line_length = off + +[Makefile] +max_line_length = off + +[CHANGELOG.md] +indent_style = space +indent_size = 2 + +[LICENSE] +indent_size = 2 +max_line_length = off + +[coverage/**/*] +indent_size = off +indent_style = off +indent = off +max_line_length = off + +[.nycrc] +indent_style = tab + +[tea.yaml] +indent_size = 2 diff --git a/bff/node_modules/qs/.github/FUNDING.yml b/bff/node_modules/qs/.github/FUNDING.yml new file mode 100644 index 0000000..0355f4f --- /dev/null +++ b/bff/node_modules/qs/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/qs +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/bff/node_modules/qs/.github/SECURITY.md b/bff/node_modules/qs/.github/SECURITY.md new file mode 100644 index 0000000..b499cb6 --- /dev/null +++ b/bff/node_modules/qs/.github/SECURITY.md @@ -0,0 +1,11 @@ +# Security + +Please file a private vulnerability report via GitHub, email [@ljharb](https://github.com/ljharb), or see https://tidelift.com/security if you have a potential security vulnerability to report. + +## Incident Response Plan + +Please see our [Incident Response Plan](https://github.com/ljharb/.github/blob/main/INCIDENT_RESPONSE_PLAN.md). + +## Threat Model + +Please see [THREAT_MODEL.md](./THREAT_MODEL.md). diff --git a/bff/node_modules/qs/.github/THREAT_MODEL.md b/bff/node_modules/qs/.github/THREAT_MODEL.md new file mode 100644 index 0000000..7e6fef1 --- /dev/null +++ b/bff/node_modules/qs/.github/THREAT_MODEL.md @@ -0,0 +1,78 @@ +## Threat Model for qs (querystring parsing library) + +### 1. Library Overview + +- **Library Name:** qs +- **Brief Description:** A JavaScript library for parsing and stringifying URL query strings, supporting nested objects and arrays. It is widely used in Node.js and web applications for processing query parameters[2][6][8]. +- **Key Public APIs/Functions:** `qs.parse()`, `qs.stringify()` + +### 2. Define Scope + +This threat model focuses on the core parsing and stringifying functionality, specifically the handling of nested objects and arrays, option validation, and cycle management in stringification. + +### 3. Conceptual System Diagram + +``` +Caller Application → qs.parse(input, options) → Parsing Engine → Output Object + │ + └→ Options Handling + +Caller Application → qs.stringify(obj, options) → Stringifying Engine → Output String + │ + └→ Options Handling + └→ Cycle Tracking +``` + +**Trust Boundaries:** +- **Input string (parse):** May come from untrusted sources (e.g., user input, network requests) +- **Input object (stringify):** May contain cycles, which can lead to infinite loops during stringification +- **Options:** Provided by the caller +- **Cycle Tracking:** Used only during stringification to detect and handle circular references + +### 4. Identify Assets + +- **Integrity of parsed output:** Prevent malicious manipulation of the output object structure, especially ensuring builtins/globals are not modified as a result of parse[3][4][8]. +- **Confidentiality of processed data:** Avoid leaking sensitive information through errors or output. +- **Availability/performance for host application:** Prevent crashes or resource exhaustion in the consuming application. +- **Security of host application:** Prevent the library from being a vector for attacks (e.g., prototype pollution, DoS). +- **Reputation of library:** Maintain trust by avoiding supply chain attacks and vulnerabilities[1]. + +### 5. Identify Threats + +| Component / API / Interaction | S | T | R | I | D | E | +|---------------------------------------|----|----|----|----|----|----| +| Public API Call (`parse`) | – | ✓ | – | ✓ | ✓ | ✓ | +| Public API Call (`stringify`) | – | ✓ | – | ✓ | ✓ | – | +| Options Handling | ✓ | ✓ | – | ✓ | – | ✓ | +| Dependency Interaction | – | – | – | – | ✓ | – | + +**Key Threats:** +- **Tampering:** Malicious input can, if not prevented, alter parsed output (e.g., prototype pollution via `__proto__`, modification of builtins/globals)[3][4][8]. +- **Information Disclosure:** Error messages may expose internal details or sensitive data. +- **Denial of Service:** Large or malformed input can exhaust memory or CPU. +- **Elevation of Privilege:** Prototype pollution can lead to unintended privilege escalation in the host application[3][4][8]. + +### 6. Mitigation/Countermeasures + +| Threat Identified | Proposed Mitigation | +|---------------------------------------------------|---------------------| +| Tampering (malicious input, prototype pollution) | Strict input validation; keep `allowPrototypes: false` by default; use `plainObjects` for output; ensure builtins/globals are never modified by parse[4][8]. | +| Information Disclosure (error messages) | Generic error messages without stack traces or internal paths. | +| Denial of Service (memory/CPU exhaustion) | Enforce `arrayLimit` and `parameterLimit` with safe defaults; enable `throwOnLimitExceeded`; limit nesting depth[7]. | +| Elevation of Privilege (prototype pollution) | Keep `allowPrototypes: false`; validate options against allowlist; use `plainObjects` to avoid prototype pollution[4][8]. | + +### 7. Risk Ranking + +- **High:** Denial of Service via array parsing or malformed input (historical vulnerability) +- **Medium:** Prototype pollution via options or input (if `allowPrototypes` enabled) +- **Low:** Information disclosure in errors + +### 8. Next Steps & Review + +1. **Audit option validation logic.** +2. **Add depth limiting to nested parsing and stringification.** +3. **Implement fuzz testing for parser and stringifier edge cases.** +4. **Regularly review dependencies for vulnerabilities.** +5. **Keep documentation and threat model up to date.** +6. **Ensure builtins/globals are never modified as a result of parse.** +7. **Support round-trip consistency between parse and stringify as a non-security goal, with the right options[5][9].** diff --git a/bff/node_modules/qs/.nycrc b/bff/node_modules/qs/.nycrc new file mode 100644 index 0000000..1d57cab --- /dev/null +++ b/bff/node_modules/qs/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "dist" + ] +} diff --git a/bff/node_modules/qs/CHANGELOG.md b/bff/node_modules/qs/CHANGELOG.md new file mode 100644 index 0000000..66f3179 --- /dev/null +++ b/bff/node_modules/qs/CHANGELOG.md @@ -0,0 +1,806 @@ +## **6.15.0** +- [New] `parse`: add `strictMerge` option to wrap object/primitive conflicts in an array (#425, #122) +- [Fix] `duplicates` option should not apply to bracket notation keys (#514) + +## **6.14.2** +- [Fix] `parse`: mark overflow objects for indexed notation exceeding `arrayLimit` (#546) +- [Fix] `arrayLimit` means max count, not max index, in `combine`/`merge`/`parseArrayValue` +- [Fix] `parse`: throw on `arrayLimit` exceeded with indexed notation when `throwOnLimitExceeded` is true (#529) +- [Fix] `parse`: enforce `arrayLimit` on `comma`-parsed values +- [Fix] `parse`: fix error message to reflect arrayLimit as max index; remove extraneous comments (#545) +- [Robustness] avoid `.push`, use `void` +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [meta] fix changelog typo (`arrayLength` → `arrayLimit`) +- [actions] fix rebase workflow permissions + +## **6.14.1** +- [Fix] ensure `arrayLimit` applies to `[]` notation as well +- [Fix] `parse`: when a custom decoder returns `null` for a key, ignore that key +- [Refactor] `parse`: extract key segment splitting helper +- [meta] add threat model +- [actions] add workflow permissions +- [Tests] `stringify`: increase coverage +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `npmignore`, `es-value-fixtures`, `for-each`, `object-inspect` + +## **6.14.0** +- [New] `parse`: add `throwOnParameterLimitExceeded` option (#517) +- [Refactor] `parse`: use `utils.combine` more +- [patch] `parse`: add explicit `throwOnLimitExceeded` default +- [actions] use shared action; re-add finishers +- [meta] Fix changelog formatting bug +- [Deps] update `side-channel` +- [Dev Deps] update `es-value-fixtures`, `has-bigints`, `has-proto`, `has-symbols` +- [Tests] increase coverage + +## **6.13.3** +[Fix] fix regressions from robustness refactor +[actions] update reusable workflows + +## **6.13.2** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.13.1** +- [Fix] `stringify`: avoid a crash when a `filter` key is `null` +- [Fix] `utils.merge`: functions should not be stringified into keys +- [Fix] `parse`: avoid a crash with interpretNumericEntities: true, comma: true, and iso charset +- [Fix] `stringify`: ensure a non-string `filter` does not crash +- [Refactor] use `__proto__` syntax instead of `Object.create` for null objects +- [Refactor] misc cleanup +- [Tests] `utils.merge`: add some coverage +- [Tests] fix a test case +- [actions] split out node 10-20, and 20+ +- [Dev Deps] update `es-value-fixtures`, `mock-property`, `object-inspect`, `tape` + +## **6.13.0** +- [New] `parse`: add `strictDepth` option (#511) +- [Tests] use `npm audit` instead of `aud` + +## **6.12.5** +- [Fix] fix regressions from robustness refactor +- [actions] update reusable workflows + +## **6.12.4** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.12.3** +- [Fix] `parse`: properly account for `strictNullHandling` when `allowEmptyArrays` +- [meta] fix changelog indentation + +## **6.12.2** +- [Fix] `parse`: parse encoded square brackets (#506) +- [readme] add CII best practices badge + +## **6.12.1** +- [Fix] `parse`: Disable `decodeDotInKeys` by default to restore previous behavior (#501) +- [Performance] `utils`: Optimize performance under large data volumes, reduce memory usage, and speed up processing (#502) +- [Refactor] `utils`: use `+=` +- [Tests] increase coverage + +## **6.12.0** + +- [New] `parse`/`stringify`: add `decodeDotInKeys`/`encodeDotKeys` options (#488) +- [New] `parse`: add `duplicates` option +- [New] `parse`/`stringify`: add `allowEmptyArrays` option to allow [] in object values (#487) +- [Refactor] `parse`/`stringify`: move allowDots config logic to its own variable +- [Refactor] `stringify`: move option-handling code into `normalizeStringifyOptions` +- [readme] update readme, add logos (#484) +- [readme] `stringify`: clarify default `arrayFormat` behavior +- [readme] fix line wrapping +- [readme] remove dead badges +- [Deps] update `side-channel` +- [meta] make the dist build 50% smaller +- [meta] add `sideEffects` flag +- [meta] run build in prepack, not prepublish +- [Tests] `parse`: remove useless tests; add coverage +- [Tests] `stringify`: increase coverage +- [Tests] use `mock-property` +- [Tests] `stringify`: improve coverage +- [Dev Deps] update `@ljharb/eslint-config `, `aud`, `has-override-mistake`, `has-property-descriptors`, `mock-property`, `npmignore`, `object-inspect`, `tape` +- [Dev Deps] pin `glob`, since v10.3.8+ requires a broken `jackspeak` +- [Dev Deps] pin `jackspeak` since 2.1.2+ depends on npm aliases, which kill the install process in npm < 6 + +## **6.11.4** +- [Fix] fix regressions from robustness refactor +- [actions] update reusable workflows + +## **6.11.3** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.11.2** +- [Fix] `parse`: Fix parsing when the global Object prototype is frozen (#473) +- [Tests] add passing test cases with empty keys (#473) + +## **6.11.1** +- [Fix] `stringify`: encode comma values more consistently (#463) +- [readme] add usage of `filter` option for injecting custom serialization, i.e. of custom types (#447) +- [meta] remove extraneous code backticks (#457) +- [meta] fix changelog markdown +- [actions] update checkout action +- [actions] restrict action permissions +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `object-inspect`, `tape` + +## **6.11.0** +- [New] [Fix] `stringify`: revert 0e903c0; add `commaRoundTrip` option (#442) +- [readme] fix version badge + +## **6.10.7** +- [Fix] fix regressions from robustness refactor +- [actions] update reusable workflows + +## **6.10.6** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.10.5** +- [Fix] `stringify`: with `arrayFormat: comma`, properly include an explicit `[]` on a single-item array (#434) + +## **6.10.4** +- [Fix] `stringify`: with `arrayFormat: comma`, include an explicit `[]` on a single-item array (#441) +- [meta] use `npmignore` to autogenerate an npmignore file +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-symbol`, `object-inspect`, `tape` + +## **6.10.3** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [actions] reuse common workflows +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-inspect`, `tape` + +## **6.10.2** +- [Fix] `stringify`: actually fix cyclic references (#426) +- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] add note and links for coercing primitive values (#408) +- [actions] update codecov uploader +- [actions] update workflows +- [Tests] clean up stringify tests slightly +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `object-inspect`, `safe-publish-latest`, `tape` + +## **6.10.1** +- [Fix] `stringify`: avoid exception on repeated object values (#402) + +## **6.10.0** +- [New] `stringify`: throw on cycles, instead of an infinite loop (#395, #394, #393) +- [New] `parse`: add `allowSparse` option for collapsing arrays with missing indices (#312) +- [meta] fix README.md (#399) +- [meta] only run `npm run dist` in publish, not install +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `has-symbols`, `tape` +- [Tests] fix tests on node v0.6 +- [Tests] use `ljharb/actions/node/install` instead of `ljharb/actions/node/run` +- [Tests] Revert "[meta] ignore eclint transitive audit warning" + +## **6.9.9** +- [Fix] fix regressions from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.9.8** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.9.7** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] add note and links for coercing primitive values (#408) +- [Tests] clean up stringify tests slightly +- [meta] fix README.md (#399) +- Revert "[meta] ignore eclint transitive audit warning" +- [actions] backport actions from main +- [Dev Deps] backport updates from main + +## **6.9.6** +- [Fix] restore `dist` dir; mistakenly removed in d4f6c32 + +## **6.9.5** +- [Fix] `stringify`: do not encode parens for RFC1738 +- [Fix] `stringify`: fix arrayFormat comma with empty array/objects (#350) +- [Refactor] `format`: remove `util.assign` call +- [meta] add "Allow Edits" workflow; update rebase workflow +- [actions] switch Automatic Rebase workflow to `pull_request_target` event +- [Tests] `stringify`: add tests for #378 +- [Tests] migrate tests to Github Actions +- [Tests] run `nyc` on all tests; use `tape` runner +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `mkdirp`, `object-inspect`, `tape`; add `aud` + +## **6.9.4** +- [Fix] `stringify`: when `arrayFormat` is `comma`, respect `serializeDate` (#364) +- [Refactor] `stringify`: reduce branching (part of #350) +- [Refactor] move `maybeMap` to `utils` +- [Dev Deps] update `browserify`, `tape` + +## **6.9.3** +- [Fix] proper comma parsing of URL-encoded commas (#361) +- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) + +## **6.9.2** +- [Fix] `parse`: Fix parsing array from object with `comma` true (#359) +- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349) +- [meta] ignore eclint transitive audit warning +- [meta] fix indentation in package.json +- [meta] add tidelift marketing copy +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `object-inspect`, `has-symbols`, `tape`, `mkdirp`, `iconv-lite` +- [actions] add automatic rebasing / merge commit blocking + +## **6.9.1** +- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335) +- [Fix] `parse`: with comma true, do not split non-string values (#334) +- [meta] add `funding` field +- [Dev Deps] update `eslint`, `@ljharb/eslint-config` +- [Tests] use shared travis-ci config + +## **6.9.0** +- [New] `parse`/`stringify`: Pass extra key/value argument to `decoder` (#333) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `evalmd` +- [Tests] `parse`: add passing `arrayFormat` tests +- [Tests] add `posttest` using `npx aud` to run `npm audit` without a lockfile +- [Tests] up to `node` `v12.10`, `v11.15`, `v10.16`, `v8.16` +- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray + +## **6.8.5** +- [Fix] fix regressions from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.8.4** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.8.3** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Tests] clean up stringify tests slightly +- [Docs] add note and links for coercing primitive values (#408) +- [meta] fix README.md (#399) +- [actions] backport actions from main +- [Dev Deps] backport updates from main +- [Refactor] `stringify`: reduce branching +- [meta] do not publish workflow files + +## **6.8.2** +- [Fix] proper comma parsing of URL-encoded commas (#361) +- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) + +## **6.8.1** +- [Fix] `parse`: Fix parsing array from object with `comma` true (#359) +- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349) +- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335) +- [fix] `parse`: with comma true, do not split non-string values (#334) +- [meta] add tidelift marketing copy +- [meta] add `funding` field +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `safe-publish-latest`, `evalmd`, `has-symbols`, `iconv-lite`, `mkdirp`, `object-inspect` +- [Tests] `parse`: add passing `arrayFormat` tests +- [Tests] use shared travis-ci configs +- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray +- [actions] add automatic rebasing / merge commit blocking + +## **6.8.0** +- [New] add `depth=false` to preserve the original key; [Fix] `depth=0` should preserve the original key (#326) +- [New] [Fix] stringify symbols and bigints +- [Fix] ensure node 0.12 can stringify Symbols +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Refactor] `formats`: tiny bit of cleanup. +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `safe-publish-latest`, `iconv-lite`, `tape` +- [Tests] add tests for `depth=0` and `depth=false` behavior, both current and intuitive/intended (#326) +- [Tests] use `eclint` instead of `editorconfig-tools` +- [docs] readme: add security note +- [meta] add github sponsorship +- [meta] add FUNDING.yml +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause + +## **6.7.5** +- [Fix] fix regressions from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.7.4** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.7.3** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] `stringify`: avoid encoding arrayformat comma when `encodeValuesOnly = true` (#424) +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] add note and links for coercing primitive values (#408) +- [meta] fix README.md (#399) +- [meta] do not publish workflow files +- [actions] backport actions from main +- [Dev Deps] backport updates from main +- [Tests] use `nyc` for coverage +- [Tests] clean up stringify tests slightly + +## **6.7.2** +- [Fix] proper comma parsing of URL-encoded commas (#361) +- [Fix] parses comma delimited array while having percent-encoded comma treated as normal text (#336) + +## **6.7.1** +- [Fix] `parse`: Fix parsing array from object with `comma` true (#359) +- [Fix] `parse`: with comma true, handle field that holds an array of arrays (#335) +- [fix] `parse`: with comma true, do not split non-string values (#334) +- [Fix] `parse`: throw a TypeError instead of an Error for bad charset (#349) +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Refactor] `formats`: tiny bit of cleanup. +- readme: add security note +- [meta] add tidelift marketing copy +- [meta] add `funding` field +- [meta] add FUNDING.yml +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `safe-publish-latest`, `evalmd`, `iconv-lite`, `mkdirp`, `object-inspect`, `browserify` +- [Tests] `parse`: add passing `arrayFormat` tests +- [Tests] use shared travis-ci configs +- [Tests] `Buffer.from` in node v5.0-v5.9 and v4.0-v4.4 requires a TypedArray +- [Tests] add tests for `depth=0` and `depth=false` behavior, both current and intuitive/intended +- [Tests] use `eclint` instead of `editorconfig-tools` +- [actions] add automatic rebasing / merge commit blocking + +## **6.7.0** +- [New] `stringify`/`parse`: add `comma` as an `arrayFormat` option (#276, #219) +- [Fix] correctly parse nested arrays (#212) +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source, also with an array source +- [Robustness] `stringify`: cache `Object.prototype.hasOwnProperty` +- [Refactor] `utils`: `isBuffer`: small tweak; add tests +- [Refactor] use cached `Array.isArray` +- [Refactor] `parse`/`stringify`: make a function to normalize the options +- [Refactor] `utils`: reduce observable [[Get]]s +- [Refactor] `stringify`/`utils`: cache `Array.isArray` +- [Tests] always use `String(x)` over `x.toString()` +- [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10 +- [Tests] temporarily allow coverage to fail + +## **6.6.3** +- [Fix] fix regressions from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.6.2** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.6.1** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] correctly parse nested arrays +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Robustness] `stringify`: cache `Object.prototype.hasOwnProperty` +- [Refactor] `formats`: tiny bit of cleanup. +- [Refactor] `utils`: `isBuffer`: small tweak; add tests +- [Refactor]: `stringify`/`utils`: cache `Array.isArray` +- [Refactor] `utils`: reduce observable [[Get]]s +- [Refactor] use cached `Array.isArray` +- [Refactor] `parse`/`stringify`: make a function to normalize the options +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] do not publish workflow files +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause +- [meta] add FUNDING.yml +- [meta] Fixes typo in CHANGELOG.md +- [actions] backport actions from main +- [Tests] fix Buffer tests to work in node < 4.5 and node < 5.10 +- [Tests] always use `String(x)` over `x.toString()` +- [Dev Deps] backport from main + +## **6.6.0** +- [New] Add support for iso-8859-1, utf8 "sentinel" and numeric entities (#268) +- [New] move two-value combine to a `utils` function (#189) +- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) +- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` (#260) +- [Fix] `stringify`: do not crash in an obscure combo of `interpretNumericEntities`, a bad custom `decoder`, & `iso-8859-1` +- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided +- [refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) +- [Refactor] `parse`: only need to reassign the var once +- [Refactor] `parse`/`stringify`: clean up `charset` options checking; fix defaults +- [Refactor] add missing defaults +- [Refactor] `parse`: one less `concat` call +- [Refactor] `utils`: `compactQueue`: make it explicitly side-effecting +- [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`, `iconv-lite`, `safe-publish-latest`, `tape` +- [Tests] up to `node` `v10.10`, `v9.11`, `v8.12`, `v6.14`, `v4.9`; pin included builds to LTS + +## **6.5.5** +- [Fix] fix regressions from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.5.4** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] document that `addQueryPrefix` does not add `?` to empty output (#418) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.5.3** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] correctly parse nested arrays +- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) +- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided +- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Refactor] `utils`: reduce observable [[Get]]s +- [Refactor] use cached `Array.isArray` +- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) +- [Refactor] `parse`: only need to reassign the var once +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] Clean up license text so it’s properly detected as BSD-3-Clause +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] add FUNDING.yml +- [actions] backport actions from main +- [Tests] always use `String(x)` over `x.toString()` +- [Tests] remove nonexistent tape option +- [Dev Deps] backport from main + +## **6.5.2** +- [Fix] use `safer-buffer` instead of `Buffer` constructor +- [Refactor] utils: `module.exports` one thing, instead of mutating `exports` (#230) +- [Dev Deps] update `browserify`, `eslint`, `iconv-lite`, `safer-buffer`, `tape`, `browserify` + +## **6.5.1** +- [Fix] Fix parsing & compacting very deep objects (#224) +- [Refactor] name utils functions +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` +- [Tests] up to `node` `v8.4`; use `nvm install-latest-npm` so newer npm doesn’t break older node +- [Tests] Use precise dist for Node.js 0.6 runtime (#225) +- [Tests] make 0.6 required, now that it’s passing +- [Tests] on `node` `v8.2`; fix npm on node 0.6 + +## **6.5.0** +- [New] add `utils.assign` +- [New] pass default encoder/decoder to custom encoder/decoder functions (#206) +- [New] `parse`/`stringify`: add `ignoreQueryPrefix`/`addQueryPrefix` options, respectively (#213) +- [Fix] Handle stringifying empty objects with addQueryPrefix (#217) +- [Fix] do not mutate `options` argument (#207) +- [Refactor] `parse`: cache index to reuse in else statement (#182) +- [Docs] add various badges to readme (#208) +- [Dev Deps] update `eslint`, `browserify`, `iconv-lite`, `tape` +- [Tests] up to `node` `v8.1`, `v7.10`, `v6.11`; npm v4.6 breaks on node < v1; npm v5+ breaks on node < v4 +- [Tests] add `editorconfig-tools` + +## **6.4.3** +- [Fix] fix regressions from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.4.2** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] replace runkit CI badge with shields.io check-runs badge +- [readme] replace travis CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.4.1** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Fix] use `safer-buffer` instead of `Buffer` constructor +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) +- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided +- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Refactor] use cached `Array.isArray` +- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) +- [readme] remove travis badge; add github actions/codecov badges; update URLs +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause +- [meta] add FUNDING.yml +- [actions] backport actions from main +- [Tests] remove nonexistent tape option +- [Dev Deps] backport from main + +## **6.4.0** +- [New] `qs.stringify`: add `encodeValuesOnly` option +- [Fix] follow `allowPrototypes` option during merge (#201, #201) +- [Fix] support keys starting with brackets (#202, #200) +- [Fix] chmod a-x +- [Dev Deps] update `eslint` +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds +- [eslint] reduce warnings + +## **6.3.5** +- [Fix] fix regressions from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.3.4** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] replace travis CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.3.3** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] fix for an impossible situation: when the formatter is called with a non-string value +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] `stringify`: fix a crash with `strictNullHandling` and a custom `filter`/`serializeDate` (#279) +- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided +- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Refactor] use cached `Array.isArray` +- [Refactor] `stringify`: Avoid arr = arr.concat(...), push to the existing instance (#269) +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause +- [meta] add FUNDING.yml +- [actions] backport actions from main +- [Tests] use `safer-buffer` instead of `Buffer` constructor +- [Tests] remove nonexistent tape option +- [Dev Deps] backport from main + +## **6.3.2** +- [Fix] follow `allowPrototypes` option during merge (#201, #200) +- [Dev Deps] update `eslint` +- [Fix] chmod a-x +- [Fix] support keys starting with brackets (#202, #200) +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds + +## **6.3.1** +- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties (thanks, @snyk!) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `browserify`, `iconv-lite`, `qs-iconv`, `tape` +- [Tests] on all node minors; improve test matrix +- [Docs] document stringify option `allowDots` (#195) +- [Docs] add empty object and array values example (#195) +- [Docs] Fix minor inconsistency/typo (#192) +- [Docs] document stringify option `sort` (#191) +- [Refactor] `stringify`: throw faster with an invalid encoder +- [Refactor] remove unnecessary escapes (#184) +- Remove contributing.md, since `qs` is no longer part of `hapi` (#183) + +## **6.3.0** +- [New] Add support for RFC 1738 (#174, #173) +- [New] `stringify`: Add `serializeDate` option to customize Date serialization (#159) +- [Fix] ensure `utils.merge` handles merging two arrays +- [Refactor] only constructors should be capitalized +- [Refactor] capitalized var names are for constructors only +- [Refactor] avoid using a sparse array +- [Robustness] `formats`: cache `String#replace` +- [Dev Deps] update `browserify`, `eslint`, `@ljharb/eslint-config`; add `safe-publish-latest` +- [Tests] up to `node` `v6.8`, `v4.6`; improve test matrix +- [Tests] flesh out arrayLimit/arrayFormat tests (#107) +- [Tests] skip Object.create tests when null objects are not available +- [Tests] Turn on eslint for test files (#175) + +## **6.2.6** +- [Fix] fix regression from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.2.5** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] replace travis CI badge with shields.io check-runs badge +- [actions] fix rebase workflow permissions + +## **6.2.4** +- [Fix] `parse`: ignore `__proto__` keys (#428) +- [Fix] `utils.merge`: avoid a crash with a null target and an array source +- [Fix] `utils.merge`: avoid a crash with a null target and a truthy non-array source +- [Fix] `utils`: `merge`: fix crash when `source` is a truthy primitive & no options are provided +- [Fix] when `parseArrays` is false, properly handle keys ending in `[]` +- [Robustness] `stringify`: avoid relying on a global `undefined` (#427) +- [Refactor] use cached `Array.isArray` +- [Docs] Clarify the need for "arrayLimit" option +- [meta] fix README.md (#399) +- [meta] Clean up license text so it’s properly detected as BSD-3-Clause +- [meta] add FUNDING.yml +- [actions] backport actions from main +- [Tests] use `safer-buffer` instead of `Buffer` constructor +- [Tests] remove nonexistent tape option +- [Dev Deps] backport from main + +## **6.2.3** +- [Fix] follow `allowPrototypes` option during merge (#201, #200) +- [Fix] chmod a-x +- [Fix] support keys starting with brackets (#202, #200) +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds + +## **6.2.2** +- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties + +## **6.2.1** +- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values +- [Refactor] Be explicit and use `Object.prototype.hasOwnProperty.call` +- [Tests] remove `parallelshell` since it does not reliably report failures +- [Tests] up to `node` `v6.3`, `v5.12` +- [Dev Deps] update `tape`, `eslint`, `@ljharb/eslint-config`, `qs-iconv` + +## [**6.2.0**](https://github.com/ljharb/qs/issues?milestone=36&state=closed) +- [New] pass Buffers to the encoder/decoder directly (#161) +- [New] add "encoder" and "decoder" options, for custom param encoding/decoding (#160) +- [Fix] fix compacting of nested sparse arrays (#150) + +## **6.1.4** +- [Fix] fix regression from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.1.3** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] replace travis CI badge with shields.io check-runs badge + +## **6.1.2** +- [Fix] follow `allowPrototypes` option during merge (#201, #200) +- [Fix] chmod a-x +- [Fix] support keys starting with brackets (#202, #200) +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds + +## **6.1.1** +- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties + +## [**6.1.0**](https://github.com/ljharb/qs/issues?milestone=35&state=closed) +- [New] allowDots option for `stringify` (#151) +- [Fix] "sort" option should work at a depth of 3 or more (#151) +- [Fix] Restore `dist` directory; will be removed in v7 (#148) + +## **6.0.6** +- [Fix] fix regression from robustness refactor +- [meta] add `npmignore` to autogenerate an npmignore file +- [actions] update reusable workflows + +## **6.0.5** +- [Robustness] avoid `.push`, use `void` +- [readme] clarify `parseArrays` and `arrayLimit` documentation (#543) +- [readme] replace travis CI badge with shields.io check-runs badge + +## **6.0.4** +- [Fix] follow `allowPrototypes` option during merge (#201, #200) +- [Fix] chmod a-x +- [Fix] support keys starting with brackets (#202, #200) +- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds + +## **6.0.3** +- [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties +- [Fix] Restore `dist` directory; will be removed in v7 (#148) + +## [**6.0.2**](https://github.com/ljharb/qs/issues?milestone=33&state=closed) +- Revert ES6 requirement and restore support for node down to v0.8. + +## [**6.0.1**](https://github.com/ljharb/qs/issues?milestone=32&state=closed) +- [**#127**](https://github.com/ljharb/qs/pull/127) Fix engines definition in package.json + +## [**6.0.0**](https://github.com/ljharb/qs/issues?milestone=31&state=closed) +- [**#124**](https://github.com/ljharb/qs/issues/124) Use ES6 and drop support for node < v4 + +## **5.2.1** +- [Fix] ensure `key[]=x&key[]&key[]=y` results in 3, not 2, values + +## [**5.2.0**](https://github.com/ljharb/qs/issues?milestone=30&state=closed) +- [**#64**](https://github.com/ljharb/qs/issues/64) Add option to sort object keys in the query string + +## [**5.1.0**](https://github.com/ljharb/qs/issues?milestone=29&state=closed) +- [**#117**](https://github.com/ljharb/qs/issues/117) make URI encoding stringified results optional +- [**#106**](https://github.com/ljharb/qs/issues/106) Add flag `skipNulls` to optionally skip null values in stringify + +## [**5.0.0**](https://github.com/ljharb/qs/issues?milestone=28&state=closed) +- [**#114**](https://github.com/ljharb/qs/issues/114) default allowDots to false +- [**#100**](https://github.com/ljharb/qs/issues/100) include dist to npm + +## [**4.0.0**](https://github.com/ljharb/qs/issues?milestone=26&state=closed) +- [**#98**](https://github.com/ljharb/qs/issues/98) make returning plain objects and allowing prototype overwriting properties optional + +## [**3.1.0**](https://github.com/ljharb/qs/issues?milestone=24&state=closed) +- [**#89**](https://github.com/ljharb/qs/issues/89) Add option to disable "Transform dot notation to bracket notation" + +## [**3.0.0**](https://github.com/ljharb/qs/issues?milestone=23&state=closed) +- [**#80**](https://github.com/ljharb/qs/issues/80) qs.parse silently drops properties +- [**#77**](https://github.com/ljharb/qs/issues/77) Perf boost +- [**#60**](https://github.com/ljharb/qs/issues/60) Add explicit option to disable array parsing +- [**#74**](https://github.com/ljharb/qs/issues/74) Bad parse when turning array into object +- [**#81**](https://github.com/ljharb/qs/issues/81) Add a `filter` option +- [**#68**](https://github.com/ljharb/qs/issues/68) Fixed issue with recursion and passing strings into objects. +- [**#66**](https://github.com/ljharb/qs/issues/66) Add mixed array and object dot notation support Closes: #47 +- [**#76**](https://github.com/ljharb/qs/issues/76) RFC 3986 +- [**#85**](https://github.com/ljharb/qs/issues/85) No equal sign +- [**#84**](https://github.com/ljharb/qs/issues/84) update license attribute + +## [**2.4.1**](https://github.com/ljharb/qs/issues?milestone=20&state=closed) +- [**#73**](https://github.com/ljharb/qs/issues/73) Property 'hasOwnProperty' of object # is not a function + +## [**2.4.0**](https://github.com/ljharb/qs/issues?milestone=19&state=closed) +- [**#70**](https://github.com/ljharb/qs/issues/70) Add arrayFormat option + +## [**2.3.3**](https://github.com/ljharb/qs/issues?milestone=18&state=closed) +- [**#59**](https://github.com/ljharb/qs/issues/59) make sure array indexes are >= 0, closes #57 +- [**#58**](https://github.com/ljharb/qs/issues/58) make qs usable for browser loader + +## [**2.3.2**](https://github.com/ljharb/qs/issues?milestone=17&state=closed) +- [**#55**](https://github.com/ljharb/qs/issues/55) allow merging a string into an object + +## [**2.3.1**](https://github.com/ljharb/qs/issues?milestone=16&state=closed) +- [**#52**](https://github.com/ljharb/qs/issues/52) Return "undefined" and "false" instead of throwing "TypeError". + +## [**2.3.0**](https://github.com/ljharb/qs/issues?milestone=15&state=closed) +- [**#50**](https://github.com/ljharb/qs/issues/50) add option to omit array indices, closes #46 + +## [**2.2.5**](https://github.com/ljharb/qs/issues?milestone=14&state=closed) +- [**#39**](https://github.com/ljharb/qs/issues/39) Is there an alternative to Buffer.isBuffer? +- [**#49**](https://github.com/ljharb/qs/issues/49) refactor utils.merge, fixes #45 +- [**#41**](https://github.com/ljharb/qs/issues/41) avoid browserifying Buffer, for #39 + +## [**2.2.4**](https://github.com/ljharb/qs/issues?milestone=13&state=closed) +- [**#38**](https://github.com/ljharb/qs/issues/38) how to handle object keys beginning with a number + +## [**2.2.3**](https://github.com/ljharb/qs/issues?milestone=12&state=closed) +- [**#37**](https://github.com/ljharb/qs/issues/37) parser discards first empty value in array +- [**#36**](https://github.com/ljharb/qs/issues/36) Update to lab 4.x + +## [**2.2.2**](https://github.com/ljharb/qs/issues?milestone=11&state=closed) +- [**#33**](https://github.com/ljharb/qs/issues/33) Error when plain object in a value +- [**#34**](https://github.com/ljharb/qs/issues/34) use Object.prototype.hasOwnProperty.call instead of obj.hasOwnProperty +- [**#24**](https://github.com/ljharb/qs/issues/24) Changelog? Semver? + +## [**2.2.1**](https://github.com/ljharb/qs/issues?milestone=10&state=closed) +- [**#32**](https://github.com/ljharb/qs/issues/32) account for circular references properly, closes #31 +- [**#31**](https://github.com/ljharb/qs/issues/31) qs.parse stackoverflow on circular objects + +## [**2.2.0**](https://github.com/ljharb/qs/issues?milestone=9&state=closed) +- [**#26**](https://github.com/ljharb/qs/issues/26) Don't use Buffer global if it's not present +- [**#30**](https://github.com/ljharb/qs/issues/30) Bug when merging non-object values into arrays +- [**#29**](https://github.com/ljharb/qs/issues/29) Don't call Utils.clone at the top of Utils.merge +- [**#23**](https://github.com/ljharb/qs/issues/23) Ability to not limit parameters? + +## [**2.1.0**](https://github.com/ljharb/qs/issues?milestone=8&state=closed) +- [**#22**](https://github.com/ljharb/qs/issues/22) Enable using a RegExp as delimiter + +## [**2.0.0**](https://github.com/ljharb/qs/issues?milestone=7&state=closed) +- [**#18**](https://github.com/ljharb/qs/issues/18) Why is there arrayLimit? +- [**#20**](https://github.com/ljharb/qs/issues/20) Configurable parametersLimit +- [**#21**](https://github.com/ljharb/qs/issues/21) make all limits optional, for #18, for #20 + +## [**1.2.2**](https://github.com/ljharb/qs/issues?milestone=6&state=closed) +- [**#19**](https://github.com/ljharb/qs/issues/19) Don't overwrite null values + +## [**1.2.1**](https://github.com/ljharb/qs/issues?milestone=5&state=closed) +- [**#16**](https://github.com/ljharb/qs/issues/16) ignore non-string delimiters +- [**#15**](https://github.com/ljharb/qs/issues/15) Close code block + +## [**1.2.0**](https://github.com/ljharb/qs/issues?milestone=4&state=closed) +- [**#12**](https://github.com/ljharb/qs/issues/12) Add optional delim argument +- [**#13**](https://github.com/ljharb/qs/issues/13) fix #11: flattened keys in array are now correctly parsed + +## [**1.1.0**](https://github.com/ljharb/qs/issues?milestone=3&state=closed) +- [**#7**](https://github.com/ljharb/qs/issues/7) Empty values of a POST array disappear after being submitted +- [**#9**](https://github.com/ljharb/qs/issues/9) Should not omit equals signs (=) when value is null +- [**#6**](https://github.com/ljharb/qs/issues/6) Minor grammar fix in README + +## [**1.0.2**](https://github.com/ljharb/qs/issues?milestone=2&state=closed) +- [**#5**](https://github.com/ljharb/qs/issues/5) array holes incorrectly copied into object on large index diff --git a/bff/node_modules/qs/LICENSE.md b/bff/node_modules/qs/LICENSE.md new file mode 100644 index 0000000..fecf6b6 --- /dev/null +++ b/bff/node_modules/qs/LICENSE.md @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors) +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/bff/node_modules/qs/README.md b/bff/node_modules/qs/README.md new file mode 100644 index 0000000..0980c9a --- /dev/null +++ b/bff/node_modules/qs/README.md @@ -0,0 +1,758 @@ +

+ qs +

+ +# qs [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] +[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/9058/badge)](https://bestpractices.coreinfrastructure.org/projects/9058) + +[![npm badge][npm-badge-png]][package-url] + +A querystring parsing and stringifying library with some added security. + +Lead Maintainer: [Jordan Harband](https://github.com/ljharb) + +The **qs** module was originally created and maintained by [TJ Holowaychuk](https://github.com/visionmedia/node-querystring). + +## Usage + +```javascript +var qs = require('qs'); +var assert = require('assert'); + +var obj = qs.parse('a=c'); +assert.deepEqual(obj, { a: 'c' }); + +var str = qs.stringify(obj); +assert.equal(str, 'a=c'); +``` + +### Parsing Objects + +[](#preventEval) +```javascript +qs.parse(string, [options]); +``` + +**qs** allows you to create nested objects within your query strings, by surrounding the name of sub-keys with square brackets `[]`. +For example, the string `'foo[bar]=baz'` converts to: + +```javascript +assert.deepEqual(qs.parse('foo[bar]=baz'), { + foo: { + bar: 'baz' + } +}); +``` + +When using the `plainObjects` option the parsed value is returned as a null object, created via `{ __proto__: null }` and as such you should be aware that prototype methods will not exist on it and a user may set those names to whatever value they like: + +```javascript +var nullObject = qs.parse('a[hasOwnProperty]=b', { plainObjects: true }); +assert.deepEqual(nullObject, { a: { hasOwnProperty: 'b' } }); +``` + +By default parameters that would overwrite properties on the object prototype are ignored, if you wish to keep the data from those fields either use `plainObjects` as mentioned above, or set `allowPrototypes` to `true` which will allow user input to overwrite those properties. +*WARNING* It is generally a bad idea to enable this option as it can cause problems when attempting to use the properties that have been overwritten. +Always be careful with this option. + +```javascript +var protoObject = qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }); +assert.deepEqual(protoObject, { a: { hasOwnProperty: 'b' } }); +``` + +URI encoded strings work too: + +```javascript +assert.deepEqual(qs.parse('a%5Bb%5D=c'), { + a: { b: 'c' } +}); +``` + +You can also nest your objects, like `'foo[bar][baz]=foobarbaz'`: + +```javascript +assert.deepEqual(qs.parse('foo[bar][baz]=foobarbaz'), { + foo: { + bar: { + baz: 'foobarbaz' + } + } +}); +``` + +By default, when nesting objects **qs** will only parse up to 5 children deep. +This means if you attempt to parse a string like `'a[b][c][d][e][f][g][h][i]=j'` your resulting object will be: + +```javascript +var expected = { + a: { + b: { + c: { + d: { + e: { + f: { + '[g][h][i]': 'j' + } + } + } + } + } + } +}; +var string = 'a[b][c][d][e][f][g][h][i]=j'; +assert.deepEqual(qs.parse(string), expected); +``` + +This depth can be overridden by passing a `depth` option to `qs.parse(string, [options])`: + +```javascript +var deep = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); +assert.deepEqual(deep, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }); +``` + +You can configure **qs** to throw an error when parsing nested input beyond this depth using the `strictDepth` option (defaulted to false): + +```javascript +try { + qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true }); +} catch (err) { + assert(err instanceof RangeError); + assert.strictEqual(err.message, 'Input depth exceeded depth option of 1 and strictDepth is true'); +} +``` + +The depth limit helps mitigate abuse when **qs** is used to parse user input, and it is recommended to keep it a reasonably small number. The strictDepth option adds a layer of protection by throwing an error when the limit is exceeded, allowing you to catch and handle such cases. + +For similar reasons, by default **qs** will only parse up to 1000 parameters. This can be overridden by passing a `parameterLimit` option: + +```javascript +var limited = qs.parse('a=b&c=d', { parameterLimit: 1 }); +assert.deepEqual(limited, { a: 'b' }); +``` + +If you want an error to be thrown whenever the a limit is exceeded (eg, `parameterLimit`, `arrayLimit`), set the `throwOnLimitExceeded` option to `true`. This option will generate a descriptive error if the query string exceeds a configured limit. +```javascript +try { + qs.parse('a=1&b=2&c=3&d=4', { parameterLimit: 3, throwOnLimitExceeded: true }); +} catch (err) { + assert(err instanceof Error); + assert.strictEqual(err.message, 'Parameter limit exceeded. Only 3 parameters allowed.'); +} +``` + +When `throwOnLimitExceeded` is set to `false` (default), **qs** will parse up to the specified `parameterLimit` and ignore the rest without throwing an error. + +To bypass the leading question mark, use `ignoreQueryPrefix`: + +```javascript +var prefixed = qs.parse('?a=b&c=d', { ignoreQueryPrefix: true }); +assert.deepEqual(prefixed, { a: 'b', c: 'd' }); +``` + +An optional delimiter can also be passed: + +```javascript +var delimited = qs.parse('a=b;c=d', { delimiter: ';' }); +assert.deepEqual(delimited, { a: 'b', c: 'd' }); +``` + +Delimiters can be a regular expression too: + +```javascript +var regexed = qs.parse('a=b;c=d,e=f', { delimiter: /[;,]/ }); +assert.deepEqual(regexed, { a: 'b', c: 'd', e: 'f' }); +``` + +Option `allowDots` can be used to enable dot notation: + +```javascript +var withDots = qs.parse('a.b=c', { allowDots: true }); +assert.deepEqual(withDots, { a: { b: 'c' } }); +``` + +Option `decodeDotInKeys` can be used to decode dots in keys +Note: it implies `allowDots`, so `parse` will error if you set `decodeDotInKeys` to `true`, and `allowDots` to `false`. + +```javascript +var withDots = qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { decodeDotInKeys: true }); +assert.deepEqual(withDots, { 'name.obj': { first: 'John', last: 'Doe' }}); +``` + +Option `allowEmptyArrays` can be used to allowing empty array values in object +```javascript +var withEmptyArrays = qs.parse('foo[]&bar=baz', { allowEmptyArrays: true }); +assert.deepEqual(withEmptyArrays, { foo: [], bar: 'baz' }); +``` + +Option `duplicates` can be used to change the behavior when duplicate keys are encountered +```javascript +assert.deepEqual(qs.parse('foo=bar&foo=baz'), { foo: ['bar', 'baz'] }); +assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'combine' }), { foo: ['bar', 'baz'] }); +assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'first' }), { foo: 'bar' }); +assert.deepEqual(qs.parse('foo=bar&foo=baz', { duplicates: 'last' }), { foo: 'baz' }); +``` + +Note that keys with bracket notation (`[]`) always combine into arrays, regardless of the `duplicates` setting: +```javascript +assert.deepEqual(qs.parse('a=1&a=2&b[]=1&b[]=2', { duplicates: 'last' }), { a: '2', b: ['1', '2'] }); +``` + +If you have to deal with legacy browsers or services, there's also support for decoding percent-encoded octets as iso-8859-1: + +```javascript +var oldCharset = qs.parse('a=%A7', { charset: 'iso-8859-1' }); +assert.deepEqual(oldCharset, { a: '§' }); +``` + +Some services add an initial `utf8=✓` value to forms so that old Internet Explorer versions are more likely to submit the form as utf-8. +Additionally, the server can check the value against wrong encodings of the checkmark character and detect that a query string or `application/x-www-form-urlencoded` body was *not* sent as utf-8, eg. if the form had an `accept-charset` parameter or the containing page had a different character set. + +**qs** supports this mechanism via the `charsetSentinel` option. +If specified, the `utf8` parameter will be omitted from the returned object. +It will be used to switch to `iso-8859-1`/`utf-8` mode depending on how the checkmark is encoded. + +**Important**: When you specify both the `charset` option and the `charsetSentinel` option, the `charset` will be overridden when the request contains a `utf8` parameter from which the actual charset can be deduced. +In that sense the `charset` will behave as the default charset rather than the authoritative charset. + +```javascript +var detectedAsUtf8 = qs.parse('utf8=%E2%9C%93&a=%C3%B8', { + charset: 'iso-8859-1', + charsetSentinel: true +}); +assert.deepEqual(detectedAsUtf8, { a: 'ø' }); + +// Browsers encode the checkmark as ✓ when submitting as iso-8859-1: +var detectedAsIso8859_1 = qs.parse('utf8=%26%2310003%3B&a=%F8', { + charset: 'utf-8', + charsetSentinel: true +}); +assert.deepEqual(detectedAsIso8859_1, { a: 'ø' }); +``` + +If you want to decode the `&#...;` syntax to the actual character, you can specify the `interpretNumericEntities` option as well: + +```javascript +var detectedAsIso8859_1 = qs.parse('a=%26%239786%3B', { + charset: 'iso-8859-1', + interpretNumericEntities: true +}); +assert.deepEqual(detectedAsIso8859_1, { a: '☺' }); +``` + +It also works when the charset has been detected in `charsetSentinel` mode. + +### Parsing Arrays + +**qs** can also parse arrays using a similar `[]` notation: + +```javascript +var withArray = qs.parse('a[]=b&a[]=c'); +assert.deepEqual(withArray, { a: ['b', 'c'] }); +``` + +You may specify an index as well: + +```javascript +var withIndexes = qs.parse('a[1]=c&a[0]=b'); +assert.deepEqual(withIndexes, { a: ['b', 'c'] }); +``` + +Note that the only difference between an index in an array and a key in an object is that the value between the brackets must be a number to create an array. +When creating arrays with specific indices, **qs** will compact a sparse array to only the existing values preserving their order: + +```javascript +var noSparse = qs.parse('a[1]=b&a[15]=c'); +assert.deepEqual(noSparse, { a: ['b', 'c'] }); +``` + +You may also use `allowSparse` option to parse sparse arrays: + +```javascript +var sparseArray = qs.parse('a[1]=2&a[3]=5', { allowSparse: true }); +assert.deepEqual(sparseArray, { a: [, '2', , '5'] }); +``` + +Note that an empty string is also a value, and will be preserved: + +```javascript +var withEmptyString = qs.parse('a[]=&a[]=b'); +assert.deepEqual(withEmptyString, { a: ['', 'b'] }); + +var withIndexedEmptyString = qs.parse('a[0]=b&a[1]=&a[2]=c'); +assert.deepEqual(withIndexedEmptyString, { a: ['b', '', 'c'] }); +``` + +**qs** will also limit arrays to a maximum of `20` elements. +Any array members with an index of `20` or greater will instead be converted to an object with the index as the key. +This is needed to handle cases when someone sent, for example, `a[999999999]` and it will take significant time to iterate over this huge array. + +```javascript +var withMaxIndex = qs.parse('a[100]=b'); +assert.deepEqual(withMaxIndex, { a: { '100': 'b' } }); +``` + +This limit can be overridden by passing an `arrayLimit` option: + +```javascript +var withArrayLimit = qs.parse('a[1]=b', { arrayLimit: 0 }); +assert.deepEqual(withArrayLimit, { a: { '1': 'b' } }); +``` + +If you want to throw an error whenever the array limit is exceeded, set the `throwOnLimitExceeded` option to `true`. This option will generate a descriptive error if the query string exceeds a configured limit. +```javascript +try { + qs.parse('a[1]=b', { arrayLimit: 0, throwOnLimitExceeded: true }); +} catch (err) { + assert(err instanceof Error); + assert.strictEqual(err.message, 'Array limit exceeded. Only 0 elements allowed in an array.'); +} +``` + +When `throwOnLimitExceeded` is set to `false` (default), **qs** will parse up to the specified `arrayLimit` and if the limit is exceeded, the array will instead be converted to an object with the index as the key + +To prevent array syntax (`a[]`, `a[0]`) from being parsed as arrays, set `parseArrays` to `false`. +Note that duplicate keys (e.g. `a=b&a=c`) may still produce arrays when `duplicates` is `'combine'` (the default). + +```javascript +var noParsingArrays = qs.parse('a[]=b', { parseArrays: false }); +assert.deepEqual(noParsingArrays, { a: { '0': 'b' } }); +``` + +If you mix notations, **qs** will merge the two items into an object: + +```javascript +var mixedNotation = qs.parse('a[0]=b&a[b]=c'); +assert.deepEqual(mixedNotation, { a: { '0': 'b', b: 'c' } }); +``` + +When a key appears as both a plain value and an object, **qs** will by default wrap the conflicting values in an array (`strictMerge` defaults to `true`): + +```javascript +assert.deepEqual(qs.parse('a[b]=c&a=d'), { a: [{ b: 'c' }, 'd'] }); +assert.deepEqual(qs.parse('a=d&a[b]=c'), { a: ['d', { b: 'c' }] }); +``` + +To restore the legacy behavior (where the primitive is used as a key with value `true`), set `strictMerge` to `false`: + +```javascript +assert.deepEqual(qs.parse('a[b]=c&a=d', { strictMerge: false }), { a: { b: 'c', d: true } }); +``` + +You can also create arrays of objects: + +```javascript +var arraysOfObjects = qs.parse('a[][b]=c'); +assert.deepEqual(arraysOfObjects, { a: [{ b: 'c' }] }); +``` + +Some people use comma to join array, **qs** can parse it: +```javascript +var arraysOfObjects = qs.parse('a=b,c', { comma: true }) +assert.deepEqual(arraysOfObjects, { a: ['b', 'c'] }) +``` +(_this cannot convert nested objects, such as `a={b:1},{c:d}`_) + +### Parsing primitive/scalar values (numbers, booleans, null, etc) + +By default, all values are parsed as strings. +This behavior will not change and is explained in [issue #91](https://github.com/ljharb/qs/issues/91). + +```javascript +var primitiveValues = qs.parse('a=15&b=true&c=null'); +assert.deepEqual(primitiveValues, { a: '15', b: 'true', c: 'null' }); +``` + +If you wish to auto-convert values which look like numbers, booleans, and other values into their primitive counterparts, you can use the [query-types Express JS middleware](https://github.com/xpepermint/query-types) which will auto-convert all request query parameters. + +### Stringifying + +[](#preventEval) +```javascript +qs.stringify(object, [options]); +``` + +When stringifying, **qs** by default URI encodes output. Objects are stringified as you would expect: + +```javascript +assert.equal(qs.stringify({ a: 'b' }), 'a=b'); +assert.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); +``` + +This encoding can be disabled by setting the `encode` option to `false`: + +```javascript +var unencoded = qs.stringify({ a: { b: 'c' } }, { encode: false }); +assert.equal(unencoded, 'a[b]=c'); +``` + +Encoding can be disabled for keys by setting the `encodeValuesOnly` option to `true`: +```javascript +var encodedValues = qs.stringify( + { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, + { encodeValuesOnly: true } +); +assert.equal(encodedValues,'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h'); +``` + +This encoding can also be replaced by a custom encoding method set as `encoder` option: + +```javascript +var encoded = qs.stringify({ a: { b: 'c' } }, { encoder: function (str) { + // Passed in values `a`, `b`, `c` + return // Return encoded string +}}) +``` + +_(Note: the `encoder` option does not apply if `encode` is `false`)_ + +Analogue to the `encoder` there is a `decoder` option for `parse` to override decoding of properties and values: + +```javascript +var decoded = qs.parse('x=z', { decoder: function (str) { + // Passed in values `x`, `z` + return // Return decoded string +}}) +``` + +You can encode keys and values using different logic by using the type argument provided to the encoder: + +```javascript +var encoded = qs.stringify({ a: { b: 'c' } }, { encoder: function (str, defaultEncoder, charset, type) { + if (type === 'key') { + return // Encoded key + } else if (type === 'value') { + return // Encoded value + } +}}) +``` + +The type argument is also provided to the decoder: + +```javascript +var decoded = qs.parse('x=z', { decoder: function (str, defaultDecoder, charset, type) { + if (type === 'key') { + return // Decoded key + } else if (type === 'value') { + return // Decoded value + } +}}) +``` + +Examples beyond this point will be shown as though the output is not URI encoded for clarity. +Please note that the return values in these cases *will* be URI encoded during real usage. + +When arrays are stringified, they follow the `arrayFormat` option, which defaults to `indices`: + +```javascript +qs.stringify({ a: ['b', 'c', 'd'] }); +// 'a[0]=b&a[1]=c&a[2]=d' +``` + +You may override this by setting the `indices` option to `false`, or to be more explicit, the `arrayFormat` option to `repeat`: + +```javascript +qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }); +// 'a=b&a=c&a=d' +``` + +You may use the `arrayFormat` option to specify the format of the output array: + +```javascript +qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }) +// 'a[0]=b&a[1]=c' +qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }) +// 'a[]=b&a[]=c' +qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }) +// 'a=b&a=c' +qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' }) +// 'a=b,c' +``` + +Note: when using `arrayFormat` set to `'comma'`, you can also pass the `commaRoundTrip` option set to `true` or `false`, to append `[]` on single-item arrays, so that they can round trip through a parse. + +When objects are stringified, by default they use bracket notation: + +```javascript +qs.stringify({ a: { b: { c: 'd', e: 'f' } } }); +// 'a[b][c]=d&a[b][e]=f' +``` + +You may override this to use dot notation by setting the `allowDots` option to `true`: + +```javascript +qs.stringify({ a: { b: { c: 'd', e: 'f' } } }, { allowDots: true }); +// 'a.b.c=d&a.b.e=f' +``` + +You may encode the dot notation in the keys of object with option `encodeDotInKeys` by setting it to `true`: +Note: it implies `allowDots`, so `stringify` will error if you set `decodeDotInKeys` to `true`, and `allowDots` to `false`. +Caveat: when `encodeValuesOnly` is `true` as well as `encodeDotInKeys`, only dots in keys and nothing else will be encoded. +```javascript +qs.stringify({ "name.obj": { "first": "John", "last": "Doe" } }, { allowDots: true, encodeDotInKeys: true }) +// 'name%252Eobj.first=John&name%252Eobj.last=Doe' +``` + +You may allow empty array values by setting the `allowEmptyArrays` option to `true`: +```javascript +qs.stringify({ foo: [], bar: 'baz' }, { allowEmptyArrays: true }); +// 'foo[]&bar=baz' +``` + +Empty strings and null values will omit the value, but the equals sign (=) remains in place: + +```javascript +assert.equal(qs.stringify({ a: '' }), 'a='); +``` + +Key with no values (such as an empty object or array) will return nothing: + +```javascript +assert.equal(qs.stringify({ a: [] }), ''); +assert.equal(qs.stringify({ a: {} }), ''); +assert.equal(qs.stringify({ a: [{}] }), ''); +assert.equal(qs.stringify({ a: { b: []} }), ''); +assert.equal(qs.stringify({ a: { b: {}} }), ''); +``` + +Properties that are set to `undefined` will be omitted entirely: + +```javascript +assert.equal(qs.stringify({ a: null, b: undefined }), 'a='); +``` + +The query string may optionally be prepended with a question mark: + +```javascript +assert.equal(qs.stringify({ a: 'b', c: 'd' }, { addQueryPrefix: true }), '?a=b&c=d'); +``` + +Note that when the output is an empty string, the prefix will not be added: + +```javascript +assert.equal(qs.stringify({}, { addQueryPrefix: true }), ''); +``` + +The delimiter may be overridden with stringify as well: + +```javascript +assert.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); +``` + +If you only want to override the serialization of `Date` objects, you can provide a `serializeDate` option: + +```javascript +var date = new Date(7); +assert.equal(qs.stringify({ a: date }), 'a=1970-01-01T00:00:00.007Z'.replace(/:/g, '%3A')); +assert.equal( + qs.stringify({ a: date }, { serializeDate: function (d) { return d.getTime(); } }), + 'a=7' +); +``` + +You may use the `sort` option to affect the order of parameter keys: + +```javascript +function alphabeticalSort(a, b) { + return a.localeCompare(b); +} +assert.equal(qs.stringify({ a: 'c', z: 'y', b : 'f' }, { sort: alphabeticalSort }), 'a=c&b=f&z=y'); +``` + +Finally, you can use the `filter` option to restrict which keys will be included in the stringified output. +If you pass a function, it will be called for each key to obtain the replacement value. +Otherwise, if you pass an array, it will be used to select properties and array indices for stringification: + +```javascript +function filterFunc(prefix, value) { + if (prefix == 'b') { + // Return an `undefined` value to omit a property. + return; + } + if (prefix == 'e[f]') { + return value.getTime(); + } + if (prefix == 'e[g][0]') { + return value * 2; + } + return value; +} +qs.stringify({ a: 'b', c: 'd', e: { f: new Date(123), g: [2] } }, { filter: filterFunc }); +// 'a=b&c=d&e[f]=123&e[g][0]=4' +qs.stringify({ a: 'b', c: 'd', e: 'f' }, { filter: ['a', 'e'] }); +// 'a=b&e=f' +qs.stringify({ a: ['b', 'c', 'd'], e: 'f' }, { filter: ['a', 0, 2] }); +// 'a[0]=b&a[2]=d' +``` + +You could also use `filter` to inject custom serialization for user defined types. +Consider you're working with some api that expects query strings of the format for ranges: + +``` +https://domain.com/endpoint?range=30...70 +``` + +For which you model as: + +```javascript +class Range { + constructor(from, to) { + this.from = from; + this.to = to; + } +} +``` + +You could _inject_ a custom serializer to handle values of this type: + +```javascript +qs.stringify( + { + range: new Range(30, 70), + }, + { + filter: (prefix, value) => { + if (value instanceof Range) { + return `${value.from}...${value.to}`; + } + // serialize the usual way + return value; + }, + } +); +// range=30...70 +``` + +### Handling of `null` values + +By default, `null` values are treated like empty strings: + +```javascript +var withNull = qs.stringify({ a: null, b: '' }); +assert.equal(withNull, 'a=&b='); +``` + +Parsing does not distinguish between parameters with and without equal signs. +Both are converted to empty strings. + +```javascript +var equalsInsensitive = qs.parse('a&b='); +assert.deepEqual(equalsInsensitive, { a: '', b: '' }); +``` + +To distinguish between `null` values and empty strings use the `strictNullHandling` flag. In the result string the `null` +values have no `=` sign: + +```javascript +var strictNull = qs.stringify({ a: null, b: '' }, { strictNullHandling: true }); +assert.equal(strictNull, 'a&b='); +``` + +To parse values without `=` back to `null` use the `strictNullHandling` flag: + +```javascript +var parsedStrictNull = qs.parse('a&b=', { strictNullHandling: true }); +assert.deepEqual(parsedStrictNull, { a: null, b: '' }); +``` + +To completely skip rendering keys with `null` values, use the `skipNulls` flag: + +```javascript +var nullsSkipped = qs.stringify({ a: 'b', c: null}, { skipNulls: true }); +assert.equal(nullsSkipped, 'a=b'); +``` + +If you're communicating with legacy systems, you can switch to `iso-8859-1` using the `charset` option: + +```javascript +var iso = qs.stringify({ æ: 'æ' }, { charset: 'iso-8859-1' }); +assert.equal(iso, '%E6=%E6'); +``` + +Characters that don't exist in `iso-8859-1` will be converted to numeric entities, similar to what browsers do: + +```javascript +var numeric = qs.stringify({ a: '☺' }, { charset: 'iso-8859-1' }); +assert.equal(numeric, 'a=%26%239786%3B'); +``` + +You can use the `charsetSentinel` option to announce the character by including an `utf8=✓` parameter with the proper encoding if the checkmark, similar to what Ruby on Rails and others do when submitting forms. + +```javascript +var sentinel = qs.stringify({ a: '☺' }, { charsetSentinel: true }); +assert.equal(sentinel, 'utf8=%E2%9C%93&a=%E2%98%BA'); + +var isoSentinel = qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'iso-8859-1' }); +assert.equal(isoSentinel, 'utf8=%26%2310003%3B&a=%E6'); +``` + +### Dealing with special character sets + +By default the encoding and decoding of characters is done in `utf-8`, and `iso-8859-1` support is also built in via the `charset` parameter. + +If you wish to encode querystrings to a different character set (i.e. +[Shift JIS](https://en.wikipedia.org/wiki/Shift_JIS)) you can use the +[`qs-iconv`](https://github.com/martinheidegger/qs-iconv) library: + +```javascript +var encoder = require('qs-iconv/encoder')('shift_jis'); +var shiftJISEncoded = qs.stringify({ a: 'こんにちは!' }, { encoder: encoder }); +assert.equal(shiftJISEncoded, 'a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I'); +``` + +This also works for decoding of query strings: + +```javascript +var decoder = require('qs-iconv/decoder')('shift_jis'); +var obj = qs.parse('a=%82%B1%82%F1%82%C9%82%BF%82%CD%81I', { decoder: decoder }); +assert.deepEqual(obj, { a: 'こんにちは!' }); +``` + +### RFC 3986 and RFC 1738 space encoding + +RFC3986 used as default option and encodes ' ' to *%20* which is backward compatible. +In the same time, output can be stringified as per RFC1738 with ' ' equal to '+'. + +``` +assert.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); +assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC3986' }), 'a=b%20c'); +assert.equal(qs.stringify({ a: 'b c' }, { format : 'RFC1738' }), 'a=b+c'); +``` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +## qs for enterprise + +Available as part of the Tidelift Subscription + +The maintainers of qs and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. +Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. +[Learn more.](https://tidelift.com/subscription/pkg/npm-qs?utm_source=npm-qs&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) + +[package-url]: https://npmjs.org/package/qs +[npm-version-svg]: https://versionbadg.es/ljharb/qs.svg +[deps-svg]: https://david-dm.org/ljharb/qs.svg +[deps-url]: https://david-dm.org/ljharb/qs +[dev-deps-svg]: https://david-dm.org/ljharb/qs/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/qs#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/qs.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/qs.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/qs.svg +[downloads-url]: https://npm-stat.com/charts.html?package=qs +[codecov-image]: https://codecov.io/gh/ljharb/qs/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/qs/ +[actions-image]: https://img.shields.io/github/check-runs/ljharb/qs/main +[actions-url]: https://github.com/ljharb/qs/actions + +## Acknowledgements + +qs logo by [NUMI](https://github.com/numi-hq/open-design): + +[NUMI Logo](https://numi.tech/?ref=qs) diff --git a/bff/node_modules/qs/eslint.config.mjs b/bff/node_modules/qs/eslint.config.mjs new file mode 100644 index 0000000..bdde6e9 --- /dev/null +++ b/bff/node_modules/qs/eslint.config.mjs @@ -0,0 +1,56 @@ +import ljharbConfig from '@ljharb/eslint-config/flat'; + +export default [ + { + ignores: ['dist/'], + }, + + ...ljharbConfig, + + { + rules: { + complexity: 'off', + 'consistent-return': 'warn', + 'func-name-matching': 'off', + 'id-length': [ + 'error', + { + max: 25, + min: 1, + properties: 'never', + }, + ], + indent: ['error', 4], + 'max-lines': 'off', + 'max-lines-per-function': [ + 'error', + { max: 150 }, + ], + 'max-params': ['error', 18], + 'max-statements': ['error', 100], + 'multiline-comment-style': 'off', + 'no-continue': 'warn', + 'no-magic-numbers': 'off', + 'no-restricted-syntax': [ + 'error', + 'BreakStatement', + 'DebuggerStatement', + 'ForInStatement', + 'LabeledStatement', + 'WithStatement', + ], + }, + }, + + { + files: ['test/**'], + rules: { + 'function-paren-newline': 'off', + 'max-lines-per-function': 'off', + 'max-statements': 'off', + 'no-buffer-constructor': 'off', + 'no-extend-native': 'off', + 'no-throw-literal': 'off', + }, + }, +]; diff --git a/bff/node_modules/qs/lib/formats.js b/bff/node_modules/qs/lib/formats.js new file mode 100644 index 0000000..f36cf20 --- /dev/null +++ b/bff/node_modules/qs/lib/formats.js @@ -0,0 +1,23 @@ +'use strict'; + +var replace = String.prototype.replace; +var percentTwenties = /%20/g; + +var Format = { + RFC1738: 'RFC1738', + RFC3986: 'RFC3986' +}; + +module.exports = { + 'default': Format.RFC3986, + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return String(value); + } + }, + RFC1738: Format.RFC1738, + RFC3986: Format.RFC3986 +}; diff --git a/bff/node_modules/qs/lib/index.js b/bff/node_modules/qs/lib/index.js new file mode 100644 index 0000000..0d6a97d --- /dev/null +++ b/bff/node_modules/qs/lib/index.js @@ -0,0 +1,11 @@ +'use strict'; + +var stringify = require('./stringify'); +var parse = require('./parse'); +var formats = require('./formats'); + +module.exports = { + formats: formats, + parse: parse, + stringify: stringify +}; diff --git a/bff/node_modules/qs/lib/parse.js b/bff/node_modules/qs/lib/parse.js new file mode 100644 index 0000000..e9bc15c --- /dev/null +++ b/bff/node_modules/qs/lib/parse.js @@ -0,0 +1,373 @@ +'use strict'; + +var utils = require('./utils'); + +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; + +var defaults = { + allowDots: false, + allowEmptyArrays: false, + allowPrototypes: false, + allowSparse: false, + arrayLimit: 20, + charset: 'utf-8', + charsetSentinel: false, + comma: false, + decodeDotInKeys: false, + decoder: utils.decode, + delimiter: '&', + depth: 5, + duplicates: 'combine', + ignoreQueryPrefix: false, + interpretNumericEntities: false, + parameterLimit: 1000, + parseArrays: true, + plainObjects: false, + strictDepth: false, + strictMerge: true, + strictNullHandling: false, + throwOnLimitExceeded: false +}; + +var interpretNumericEntities = function (str) { + return str.replace(/&#(\d+);/g, function ($0, numberStr) { + return String.fromCharCode(parseInt(numberStr, 10)); + }); +}; + +var parseArrayValue = function (val, options, currentArrayLength) { + if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { + return val.split(','); + } + + if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } + + return val; +}; + +// This is what browsers will submit when the ✓ character occurs in an +// application/x-www-form-urlencoded body and the encoding of the page containing +// the form is iso-8859-1, or when the submitted form has an accept-charset +// attribute of iso-8859-1. Presumably also with other charsets that do not contain +// the ✓ character, such as us-ascii. +var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') + +// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. +var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') + +var parseValues = function parseQueryStringValues(str, options) { + var obj = { __proto__: null }; + + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; + cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']'); + + var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit; + var parts = cleanStr.split( + options.delimiter, + options.throwOnLimitExceeded ? limit + 1 : limit + ); + + if (options.throwOnLimitExceeded && parts.length > limit) { + throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.'); + } + + var skipIndex = -1; // Keep track of where the utf8 sentinel was found + var i; + + var charset = options.charset; + if (options.charsetSentinel) { + for (i = 0; i < parts.length; ++i) { + if (parts[i].indexOf('utf8=') === 0) { + if (parts[i] === charsetSentinel) { + charset = 'utf-8'; + } else if (parts[i] === isoSentinel) { + charset = 'iso-8859-1'; + } + skipIndex = i; + i = parts.length; // The eslint settings do not allow break; + } + } + } + + for (i = 0; i < parts.length; ++i) { + if (i === skipIndex) { + continue; + } + var part = parts[i]; + + var bracketEqualsPos = part.indexOf(']='); + var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; + + var key; + var val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder, charset, 'key'); + val = options.strictNullHandling ? null : ''; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); + + if (key !== null) { + val = utils.maybeMap( + parseArrayValue( + part.slice(pos + 1), + options, + isArray(obj[key]) ? obj[key].length : 0 + ), + function (encodedVal) { + return options.decoder(encodedVal, defaults.decoder, charset, 'value'); + } + ); + } + } + + if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { + val = interpretNumericEntities(String(val)); + } + + if (part.indexOf('[]=') > -1) { + val = isArray(val) ? [val] : val; + } + + if (options.comma && isArray(val) && val.length > options.arrayLimit) { + if (options.throwOnLimitExceeded) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } + val = utils.combine([], val, options.arrayLimit, options.plainObjects); + } + + if (key !== null) { + var existing = has.call(obj, key); + if (existing && (options.duplicates === 'combine' || part.indexOf('[]=') > -1)) { + obj[key] = utils.combine( + obj[key], + val, + options.arrayLimit, + options.plainObjects + ); + } else if (!existing || options.duplicates === 'last') { + obj[key] = val; + } + } + } + + return obj; +}; + +var parseObject = function (chain, val, options, valuesParsed) { + var currentArrayLength = 0; + if (chain.length > 0 && chain[chain.length - 1] === '[]') { + var parentKey = chain.slice(0, -1).join(''); + currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; + } + + var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); + + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; + + if (root === '[]' && options.parseArrays) { + if (utils.isOverflow(leaf)) { + // leaf is already an overflow object, preserve it + obj = leaf; + } else { + obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null)) + ? [] + : utils.combine( + [], + leaf, + options.arrayLimit, + options.plainObjects + ); + } + } else { + obj = options.plainObjects ? { __proto__: null } : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot; + var index = parseInt(decodedRoot, 10); + var isValidArrayIndex = !isNaN(index) + && root !== decodedRoot + && String(index) === decodedRoot + && index >= 0 + && options.parseArrays; + if (!options.parseArrays && decodedRoot === '') { + obj = { 0: leaf }; + } else if (isValidArrayIndex && index < options.arrayLimit) { + obj = []; + obj[index] = leaf; + } else if (isValidArrayIndex && options.throwOnLimitExceeded) { + throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.'); + } else if (isValidArrayIndex) { + obj[index] = leaf; + utils.markOverflow(obj, index); + } else if (decodedRoot !== '__proto__') { + obj[decodedRoot] = leaf; + } + } + + leaf = obj; + } + + return leaf; +}; + +var splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) { + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + + if (options.depth <= 0) { + if (!options.plainObjects && has.call(Object.prototype, key)) { + if (!options.allowPrototypes) { + return; + } + } + + return [key]; + } + + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + + var segment = brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + + var keys = []; + + if (parent) { + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys[keys.length] = parent; + } + + var i = 0; + while ((segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + + var segmentContent = segment[1].slice(1, -1); + if (!options.plainObjects && has.call(Object.prototype, segmentContent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys[keys.length] = segment[1]; + } + + if (segment) { + if (options.strictDepth === true) { + throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true'); + } + + keys[keys.length] = '[' + key.slice(segment.index) + ']'; + } + + return keys; +}; + +var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { + if (!givenKey) { + return; + } + + var keys = splitKeyIntoSegments(givenKey, options); + + if (!keys) { + return; + } + + return parseObject(keys, val, options, valuesParsed); +}; + +var normalizeParseOptions = function normalizeParseOptions(opts) { + if (!opts) { + return defaults; + } + + if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { + throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); + } + + if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') { + throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided'); + } + + if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } + + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + + if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') { + throw new TypeError('`throwOnLimitExceeded` option must be a boolean'); + } + + var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; + + var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates; + + if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') { + throw new TypeError('The duplicates option must be either combine, first, or last'); + } + + var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + + return { + allowDots: allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, + allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, + arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, + decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys, + decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, + delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, + // eslint-disable-next-line no-implicit-coercion, no-extra-parens + depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, + duplicates: duplicates, + ignoreQueryPrefix: opts.ignoreQueryPrefix === true, + interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, + parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, + parseArrays: opts.parseArrays !== false, + plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, + strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth, + strictMerge: typeof opts.strictMerge === 'boolean' ? !!opts.strictMerge : defaults.strictMerge, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling, + throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false + }; +}; + +module.exports = function (str, opts) { + var options = normalizeParseOptions(opts); + + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? { __proto__: null } : {}; + } + + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? { __proto__: null } : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); + obj = utils.merge(obj, newObj, options); + } + + if (options.allowSparse === true) { + return obj; + } + + return utils.compact(obj); +}; diff --git a/bff/node_modules/qs/lib/stringify.js b/bff/node_modules/qs/lib/stringify.js new file mode 100644 index 0000000..2666eaf --- /dev/null +++ b/bff/node_modules/qs/lib/stringify.js @@ -0,0 +1,356 @@ +'use strict'; + +var getSideChannel = require('side-channel'); +var utils = require('./utils'); +var formats = require('./formats'); +var has = Object.prototype.hasOwnProperty; + +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { + return prefix + '[]'; + }, + comma: 'comma', + indices: function indices(prefix, key) { + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { + return prefix; + } +}; + +var isArray = Array.isArray; +var push = Array.prototype.push; +var pushToArray = function (arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); +}; + +var toISO = Date.prototype.toISOString; + +var defaultFormat = formats['default']; +var defaults = { + addQueryPrefix: false, + allowDots: false, + allowEmptyArrays: false, + arrayFormat: 'indices', + charset: 'utf-8', + charsetSentinel: false, + commaRoundTrip: false, + delimiter: '&', + encode: true, + encodeDotInKeys: false, + encoder: utils.encode, + encodeValuesOnly: false, + filter: void undefined, + format: defaultFormat, + formatter: formats.formatters[defaultFormat], + // deprecated + indices: false, + serializeDate: function serializeDate(date) { + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; + +var isNonNullishPrimitive = function isNonNullishPrimitive(v) { + return typeof v === 'string' + || typeof v === 'number' + || typeof v === 'boolean' + || typeof v === 'symbol' + || typeof v === 'bigint'; +}; + +var sentinel = {}; + +var stringify = function stringify( + object, + prefix, + generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, + strictNullHandling, + skipNulls, + encodeDotInKeys, + encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + sideChannel +) { + var obj = object; + + var tmpSc = sideChannel; + var step = 0; + var findFlag = false; + while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) { + // Where object last appeared in the ref tree + var pos = tmpSc.get(object); + step += 1; + if (typeof pos !== 'undefined') { + if (pos === step) { + throw new RangeError('Cyclic object value'); + } else { + findFlag = true; // Break while + } + } + if (typeof tmpSc.get(sentinel) === 'undefined') { + step = 0; + } + } + + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (generateArrayPrefix === 'comma' && isArray(obj)) { + obj = utils.maybeMap(obj, function (value) { + if (value instanceof Date) { + return serializeDate(value); + } + return value; + }); + } + + if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; + } + + obj = ''; + } + + if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } + + var values = []; + + if (typeof obj === 'undefined') { + return values; + } + + var objKeys; + if (generateArrayPrefix === 'comma' && isArray(obj)) { + // we need to join elements in + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } + objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; + } else if (isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, '%2E') : String(prefix); + + var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix; + + if (allowEmptyArrays && isArray(obj) && obj.length === 0) { + return adjustedPrefix + '[]'; + } + + for (var j = 0; j < objKeys.length; ++j) { + var key = objKeys[j]; + var value = typeof key === 'object' && key && typeof key.value !== 'undefined' + ? key.value + : obj[key]; + + if (skipNulls && value === null) { + continue; + } + + var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, '%2E') : String(key); + var keyPrefix = isArray(obj) + ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix + : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']'); + + sideChannel.set(object, step); + var valueSideChannel = getSideChannel(); + valueSideChannel.set(sentinel, sideChannel); + pushToArray(values, stringify( + value, + keyPrefix, + generateArrayPrefix, + commaRoundTrip, + allowEmptyArrays, + strictNullHandling, + skipNulls, + encodeDotInKeys, + generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + valueSideChannel + )); + } + + return values; +}; + +var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { + if (!opts) { + return defaults; + } + + if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') { + throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided'); + } + + if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') { + throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided'); + } + + if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } + + var charset = opts.charset || defaults.charset; + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + + var format = formats['default']; + if (typeof opts.format !== 'undefined') { + if (!has.call(formats.formatters, opts.format)) { + throw new TypeError('Unknown format option provided.'); + } + format = opts.format; + } + var formatter = formats.formatters[format]; + + var filter = defaults.filter; + if (typeof opts.filter === 'function' || isArray(opts.filter)) { + filter = opts.filter; + } + + var arrayFormat; + if (opts.arrayFormat in arrayPrefixGenerators) { + arrayFormat = opts.arrayFormat; + } else if ('indices' in opts) { + arrayFormat = opts.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = defaults.arrayFormat; + } + + if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { + throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); + } + + var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; + + return { + addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, + allowDots: allowDots, + allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, + arrayFormat: arrayFormat, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + commaRoundTrip: !!opts.commaRoundTrip, + delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, + encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, + encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys, + encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, + encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, + filter: filter, + format: format, + formatter: formatter, + serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, + skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, + sort: typeof opts.sort === 'function' ? opts.sort : null, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + }; +}; + +module.exports = function (object, opts) { + var obj = object; + var options = normalizeStringifyOptions(opts); + + var objKeys; + var filter; + + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + + var keys = []; + + if (typeof obj !== 'object' || obj === null) { + return ''; + } + + var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; + var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip; + + if (!objKeys) { + objKeys = Object.keys(obj); + } + + if (options.sort) { + objKeys.sort(options.sort); + } + + var sideChannel = getSideChannel(); + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + var value = obj[key]; + + if (options.skipNulls && value === null) { + continue; + } + pushToArray(keys, stringify( + value, + key, + generateArrayPrefix, + commaRoundTrip, + options.allowEmptyArrays, + options.strictNullHandling, + options.skipNulls, + options.encodeDotInKeys, + options.encode ? options.encoder : null, + options.filter, + options.sort, + options.allowDots, + options.serializeDate, + options.format, + options.formatter, + options.encodeValuesOnly, + options.charset, + sideChannel + )); + } + + var joined = keys.join(options.delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; + + if (options.charsetSentinel) { + if (options.charset === 'iso-8859-1') { + // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark + prefix += 'utf8=%26%2310003%3B&'; + } else { + // encodeURIComponent('✓') + prefix += 'utf8=%E2%9C%93&'; + } + } + + return joined.length > 0 ? prefix + joined : ''; +}; diff --git a/bff/node_modules/qs/lib/utils.js b/bff/node_modules/qs/lib/utils.js new file mode 100644 index 0000000..9aa39e1 --- /dev/null +++ b/bff/node_modules/qs/lib/utils.js @@ -0,0 +1,342 @@ +'use strict'; + +var formats = require('./formats'); +var getSideChannel = require('side-channel'); + +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; + +// Track objects created from arrayLimit overflow using side-channel +// Stores the current max numeric index for O(1) lookup +var overflowChannel = getSideChannel(); + +var markOverflow = function markOverflow(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); + return obj; +}; + +var isOverflow = function isOverflow(obj) { + return overflowChannel.has(obj); +}; + +var getMaxIndex = function getMaxIndex(obj) { + return overflowChannel.get(obj); +}; + +var setMaxIndex = function setMaxIndex(obj, maxIndex) { + overflowChannel.set(obj, maxIndex); +}; + +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase(); + } + + return array; +}()); + +var compactQueue = function compactQueue(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; + + if (isArray(obj)) { + var compacted = []; + + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted[compacted.length] = obj[j]; + } + } + + item.obj[item.prop] = compacted; + } + } +}; + +var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? { __proto__: null } : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + + return obj; +}; + +var merge = function merge(target, source, options) { + /* eslint no-param-reassign: 0 */ + if (!source) { + return target; + } + + if (typeof source !== 'object' && typeof source !== 'function') { + if (isArray(target)) { + var nextIndex = target.length; + if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) { + return markOverflow(arrayToObject(target.concat(source), options), nextIndex); + } + target[nextIndex] = source; + } else if (target && typeof target === 'object') { + if (isOverflow(target)) { + // Add at next numeric index for overflow objects + var newIndex = getMaxIndex(target) + 1; + target[newIndex] = source; + setMaxIndex(target, newIndex); + } else if (options && options.strictMerge) { + return [target, source]; + } else if ( + (options && (options.plainObjects || options.allowPrototypes)) + || !has.call(Object.prototype, source) + ) { + target[source] = true; + } + } else { + return [target, source]; + } + + return target; + } + + if (!target || typeof target !== 'object') { + if (isOverflow(source)) { + // Create new object with target at 0, source values shifted by 1 + var sourceKeys = Object.keys(source); + var result = options && options.plainObjects + ? { __proto__: null, 0: target } + : { 0: target }; + for (var m = 0; m < sourceKeys.length; m++) { + var oldKey = parseInt(sourceKeys[m], 10); + result[oldKey + 1] = source[sourceKeys[m]]; + } + return markOverflow(result, getMaxIndex(source) + 1); + } + var combined = [target].concat(source); + if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) { + return markOverflow(arrayToObject(combined, options), combined.length - 1); + } + return combined; + } + + var mergeTarget = target; + if (isArray(target) && !isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + + if (isArray(target) && isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + var targetItem = target[i]; + if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { + target[i] = merge(targetItem, item, options); + } else { + target[target.length] = item; + } + } else { + target[i] = item; + } + }); + return target; + } + + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; + + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + + if (isOverflow(source) && !isOverflow(acc)) { + markOverflow(acc, getMaxIndex(source)); + } + if (isOverflow(acc)) { + var keyNum = parseInt(key, 10); + if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) { + setMaxIndex(acc, keyNum); + } + } + + return acc; + }, mergeTarget); +}; + +var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); +}; + +var decode = function (str, defaultDecoder, charset) { + var strWithoutPlus = str.replace(/\+/g, ' '); + if (charset === 'iso-8859-1') { + // unescape never throws, no try...catch needed: + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + // utf-8 + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } +}; + +var limit = 1024; + +/* eslint operator-linebreak: [2, "before"] */ + +var encode = function encode(str, defaultEncoder, charset, kind, format) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = str; + if (typeof str === 'symbol') { + string = Symbol.prototype.toString.call(str); + } else if (typeof str !== 'string') { + string = String(str); + } + + if (charset === 'iso-8859-1') { + return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { + return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; + }); + } + + var out = ''; + for (var j = 0; j < string.length; j += limit) { + var segment = string.length >= limit ? string.slice(j, j + limit) : string; + var arr = []; + + for (var i = 0; i < segment.length; ++i) { + var c = segment.charCodeAt(i); + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) + ) { + arr[arr.length] = segment.charAt(i); + continue; + } + + if (c < 0x80) { + arr[arr.length] = hexTable[c]; + continue; + } + + if (c < 0x800) { + arr[arr.length] = hexTable[0xC0 | (c >> 6)] + + hexTable[0x80 | (c & 0x3F)]; + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + arr[arr.length] = hexTable[0xE0 | (c >> 12)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + continue; + } + + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF)); + + arr[arr.length] = hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } + + out += arr.join(''); + } + + return out; +}; + +var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; + + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue[queue.length] = { obj: obj, prop: key }; + refs[refs.length] = val; + } + } + } + + compactQueue(queue); + + return value; +}; + +var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; + +var isBuffer = function isBuffer(obj) { + if (!obj || typeof obj !== 'object') { + return false; + } + + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; + +var combine = function combine(a, b, arrayLimit, plainObjects) { + // If 'a' is already an overflow object, add to it + if (isOverflow(a)) { + var newIndex = getMaxIndex(a) + 1; + a[newIndex] = b; + setMaxIndex(a, newIndex); + return a; + } + + var result = [].concat(a, b); + if (result.length > arrayLimit) { + return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1); + } + return result; +}; + +var maybeMap = function maybeMap(val, fn) { + if (isArray(val)) { + var mapped = []; + for (var i = 0; i < val.length; i += 1) { + mapped[mapped.length] = fn(val[i]); + } + return mapped; + } + return fn(val); +}; + +module.exports = { + arrayToObject: arrayToObject, + assign: assign, + combine: combine, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isOverflow: isOverflow, + isRegExp: isRegExp, + markOverflow: markOverflow, + maybeMap: maybeMap, + merge: merge +}; diff --git a/bff/node_modules/qs/package.json b/bff/node_modules/qs/package.json new file mode 100644 index 0000000..73edd39 --- /dev/null +++ b/bff/node_modules/qs/package.json @@ -0,0 +1,94 @@ +{ + "name": "qs", + "description": "A querystring parser that supports nesting and arrays, with a depth limit", + "homepage": "https://github.com/ljharb/qs", + "version": "6.15.0", + "repository": { + "type": "git", + "url": "https://github.com/ljharb/qs.git" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "main": "lib/index.js", + "sideEffects": false, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "keywords": [ + "querystring", + "qs", + "query", + "url", + "parse", + "stringify" + ], + "engines": { + "node": ">=0.6" + }, + "dependencies": { + "side-channel": "^1.1.0" + }, + "devDependencies": { + "@browserify/envify": "^6.0.0", + "@browserify/uglifyify": "^6.0.0", + "@ljharb/eslint-config": "^22.1.3", + "browserify": "^16.5.2", + "bundle-collapser": "^1.4.0", + "common-shakeify": "~1.0.0", + "eclint": "^2.8.1", + "es-value-fixtures": "^1.7.1", + "eslint": "^9.39.2", + "evalmd": "^0.0.19", + "for-each": "^0.3.5", + "glob": "=10.3.7", + "has-bigints": "^1.1.0", + "has-override-mistake": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "iconv-lite": "^0.5.1", + "in-publish": "^2.0.1", + "jackspeak": "=2.1.1", + "jiti": "^0.0.0", + "mkdirp": "^0.5.5", + "mock-property": "^1.1.0", + "module-deps": "^6.2.3", + "npmignore": "^0.3.5", + "nyc": "^10.3.2", + "object-inspect": "^1.13.4", + "qs-iconv": "^1.0.4", + "safe-publish-latest": "^2.0.0", + "safer-buffer": "^2.1.2", + "tape": "^5.9.0", + "unassertify": "^3.0.1" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated && npm run dist", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent readme && npm run --silent lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "npx npm@'>=10.2' audit --production", + "readme": "evalmd README.md", + "postlint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "lint": "eslint .", + "dist": "mkdirp dist && browserify --standalone Qs -g unassertify -g @browserify/envify -g [@browserify/uglifyify --mangle.keep_fnames --compress.keep_fnames --format.indent_level=1 --compress.arrows=false --compress.passes=4 --compress.typeofs=false] -p common-shakeify -p bundle-collapser/plugin lib/index.js > dist/qs.js" + }, + "license": "BSD-3-Clause", + "publishConfig": { + "ignore": [ + "!dist/*", + "bower.json", + "component.json", + ".github/workflows", + "logos", + "tea.yaml" + ] + } +} diff --git a/bff/node_modules/qs/test/empty-keys-cases.js b/bff/node_modules/qs/test/empty-keys-cases.js new file mode 100644 index 0000000..2b1190e --- /dev/null +++ b/bff/node_modules/qs/test/empty-keys-cases.js @@ -0,0 +1,267 @@ +'use strict'; + +module.exports = { + emptyTestCases: [ + { + input: '&', + withEmptyKeys: {}, + stringifyOutput: { + brackets: '', + indices: '', + repeat: '' + }, + noEmptyKeys: {} + }, + { + input: '&&', + withEmptyKeys: {}, + stringifyOutput: { + brackets: '', + indices: '', + repeat: '' + }, + noEmptyKeys: {} + }, + { + input: '&=', + withEmptyKeys: { '': '' }, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + }, + noEmptyKeys: {} + }, + { + input: '&=&', + withEmptyKeys: { '': '' }, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + }, + noEmptyKeys: {} + }, + { + input: '&=&=', + withEmptyKeys: { '': ['', ''] }, + stringifyOutput: { + brackets: '[]=&[]=', + indices: '[0]=&[1]=', + repeat: '=&=' + }, + noEmptyKeys: {} + }, + { + input: '&=&=&', + withEmptyKeys: { '': ['', ''] }, + stringifyOutput: { + brackets: '[]=&[]=', + indices: '[0]=&[1]=', + repeat: '=&=' + }, + noEmptyKeys: {} + }, + { + input: '=', + withEmptyKeys: { '': '' }, + noEmptyKeys: {}, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + } + }, + { + input: '=&', + withEmptyKeys: { '': '' }, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + }, + noEmptyKeys: {} + }, + { + input: '=&&&', + withEmptyKeys: { '': '' }, + stringifyOutput: { + brackets: '=', + indices: '=', + repeat: '=' + }, + noEmptyKeys: {} + }, + { + input: '=&=&=&', + withEmptyKeys: { '': ['', '', ''] }, + stringifyOutput: { + brackets: '[]=&[]=&[]=', + indices: '[0]=&[1]=&[2]=', + repeat: '=&=&=' + }, + noEmptyKeys: {} + }, + { + input: '=&a[]=b&a[1]=c', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: '=a', + withEmptyKeys: { '': 'a' }, + noEmptyKeys: {}, + stringifyOutput: { + brackets: '=a', + indices: '=a', + repeat: '=a' + } + }, + { + input: 'a==a', + withEmptyKeys: { a: '=a' }, + noEmptyKeys: { a: '=a' }, + stringifyOutput: { + brackets: 'a==a', + indices: 'a==a', + repeat: 'a==a' + } + }, + { + input: '=&a[]=b', + withEmptyKeys: { '': '', a: ['b'] }, + stringifyOutput: { + brackets: '=&a[]=b', + indices: '=&a[0]=b', + repeat: '=&a=b' + }, + noEmptyKeys: { a: ['b'] } + }, + { + input: '=&a[]=b&a[]=c&a[2]=d', + withEmptyKeys: { '': '', a: ['b', 'c', 'd'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c&a[]=d', + indices: '=&a[0]=b&a[1]=c&a[2]=d', + repeat: '=&a=b&a=c&a=d' + }, + noEmptyKeys: { a: ['b', 'c', 'd'] } + }, + { + input: '=a&=b', + withEmptyKeys: { '': ['a', 'b'] }, + stringifyOutput: { + brackets: '[]=a&[]=b', + indices: '[0]=a&[1]=b', + repeat: '=a&=b' + }, + noEmptyKeys: {} + }, + { + input: '=a&foo=b', + withEmptyKeys: { '': 'a', foo: 'b' }, + noEmptyKeys: { foo: 'b' }, + stringifyOutput: { + brackets: '=a&foo=b', + indices: '=a&foo=b', + repeat: '=a&foo=b' + } + }, + { + input: 'a[]=b&a=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: 'a[]=b&a=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: 'a[0]=b&a=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: 'a=b&a[]=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: 'a=b&a[0]=c&=', + withEmptyKeys: { '': '', a: ['b', 'c'] }, + stringifyOutput: { + brackets: '=&a[]=b&a[]=c', + indices: '=&a[0]=b&a[1]=c', + repeat: '=&a=b&a=c' + }, + noEmptyKeys: { a: ['b', 'c'] } + }, + { + input: '[]=a&[]=b& []=1', + withEmptyKeys: { '': ['a', 'b'], ' ': ['1'] }, + stringifyOutput: { + brackets: '[]=a&[]=b& []=1', + indices: '[0]=a&[1]=b& [0]=1', + repeat: '=a&=b& =1' + }, + noEmptyKeys: { 0: 'a', 1: 'b', ' ': ['1'] } + }, + { + input: '[0]=a&[1]=b&a[0]=1&a[1]=2', + withEmptyKeys: { '': ['a', 'b'], a: ['1', '2'] }, + noEmptyKeys: { 0: 'a', 1: 'b', a: ['1', '2'] }, + stringifyOutput: { + brackets: '[]=a&[]=b&a[]=1&a[]=2', + indices: '[0]=a&[1]=b&a[0]=1&a[1]=2', + repeat: '=a&=b&a=1&a=2' + } + }, + { + input: '[deep]=a&[deep]=2', + withEmptyKeys: { '': { deep: ['a', '2'] } + }, + stringifyOutput: { + brackets: '[deep][]=a&[deep][]=2', + indices: '[deep][0]=a&[deep][1]=2', + repeat: '[deep]=a&[deep]=2' + }, + noEmptyKeys: { deep: ['a', '2'] } + }, + { + input: '%5B0%5D=a&%5B1%5D=b', + withEmptyKeys: { '': ['a', 'b'] }, + stringifyOutput: { + brackets: '[]=a&[]=b', + indices: '[0]=a&[1]=b', + repeat: '=a&=b' + }, + noEmptyKeys: { 0: 'a', 1: 'b' } + } + ] +}; diff --git a/bff/node_modules/qs/test/parse.js b/bff/node_modules/qs/test/parse.js new file mode 100644 index 0000000..292039d --- /dev/null +++ b/bff/node_modules/qs/test/parse.js @@ -0,0 +1,1568 @@ +'use strict'; + +var test = require('tape'); +var hasPropertyDescriptors = require('has-property-descriptors')(); +var iconv = require('iconv-lite'); +var mockProperty = require('mock-property'); +var hasOverrideMistake = require('has-override-mistake')(); +var SaferBuffer = require('safer-buffer').Buffer; +var v = require('es-value-fixtures'); +var inspect = require('object-inspect'); +var emptyTestCases = require('./empty-keys-cases').emptyTestCases; +var hasProto = require('has-proto')(); + +var qs = require('../'); +var utils = require('../lib/utils'); + +test('parse()', function (t) { + t.test('parses a simple string', function (st) { + st.deepEqual(qs.parse('0=foo'), { 0: 'foo' }); + st.deepEqual(qs.parse('foo=c++'), { foo: 'c ' }); + st.deepEqual(qs.parse('a[>=]=23'), { a: { '>=': '23' } }); + st.deepEqual(qs.parse('a[<=>]==23'), { a: { '<=>': '=23' } }); + st.deepEqual(qs.parse('a[==]=23'), { a: { '==': '23' } }); + st.deepEqual(qs.parse('foo', { strictNullHandling: true }), { foo: null }); + st.deepEqual(qs.parse('foo'), { foo: '' }); + st.deepEqual(qs.parse('foo='), { foo: '' }); + st.deepEqual(qs.parse('foo=bar'), { foo: 'bar' }); + st.deepEqual(qs.parse(' foo = bar = baz '), { ' foo ': ' bar = baz ' }); + st.deepEqual(qs.parse('foo=bar=baz'), { foo: 'bar=baz' }); + st.deepEqual(qs.parse('foo=bar&bar=baz'), { foo: 'bar', bar: 'baz' }); + st.deepEqual(qs.parse('foo2=bar2&baz2='), { foo2: 'bar2', baz2: '' }); + st.deepEqual(qs.parse('foo=bar&baz', { strictNullHandling: true }), { foo: 'bar', baz: null }); + st.deepEqual(qs.parse('foo=bar&baz'), { foo: 'bar', baz: '' }); + st.deepEqual(qs.parse('cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World'), { + cht: 'p3', + chd: 't:60,40', + chs: '250x100', + chl: 'Hello|World' + }); + st.end(); + }); + + t.test('comma: false', function (st) { + st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[0]=b&a[1]=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b,c'), { a: 'b,c' }); + st.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }); + st.end(); + }); + + t.test('comma: true', function (st) { + st.deepEqual(qs.parse('a[]=b&a[]=c', { comma: true }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[0]=b&a[1]=c', { comma: true }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b,c', { comma: true }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b&a=c', { comma: true }), { a: ['b', 'c'] }); + st.end(); + }); + + t.test('allows enabling dot notation', function (st) { + st.deepEqual(qs.parse('a.b=c'), { 'a.b': 'c' }); + st.deepEqual(qs.parse('a.b=c', { allowDots: true }), { a: { b: 'c' } }); + + st.end(); + }); + + t.test('decode dot keys correctly', function (st) { + st.deepEqual( + qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: false, decodeDotInKeys: false }), + { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' }, + 'with allowDots false and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse('name.obj.first=John&name.obj.last=Doe', { allowDots: true, decodeDotInKeys: false }), + { name: { obj: { first: 'John', last: 'Doe' } } }, + 'with allowDots false and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: false }), + { 'name%2Eobj': { first: 'John', last: 'Doe' } }, + 'with allowDots true and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe', { allowDots: true, decodeDotInKeys: true }), + { 'name.obj': { first: 'John', last: 'Doe' } }, + 'with allowDots true and decodeDotInKeys true' + ); + + st.deepEqual( + qs.parse( + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + { allowDots: false, decodeDotInKeys: false } + ), + { 'name%2Eobj%2Esubobject.first%2Egodly%2Ename': 'John', 'name%2Eobj%2Esubobject.last': 'Doe' }, + 'with allowDots false and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse( + 'name.obj.subobject.first.godly.name=John&name.obj.subobject.last=Doe', + { allowDots: true, decodeDotInKeys: false } + ), + { name: { obj: { subobject: { first: { godly: { name: 'John' } }, last: 'Doe' } } } }, + 'with allowDots true and decodeDotInKeys false' + ); + st.deepEqual( + qs.parse( + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + { allowDots: true, decodeDotInKeys: true } + ), + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + 'with allowDots true and decodeDotInKeys true' + ); + st.deepEqual( + qs.parse('name%252Eobj.first=John&name%252Eobj.last=Doe'), + { 'name%2Eobj.first': 'John', 'name%2Eobj.last': 'Doe' }, + 'with allowDots and decodeDotInKeys undefined' + ); + + st.end(); + }); + + t.test('decodes dot in key of object, and allow enabling dot notation when decodeDotInKeys is set to true and allowDots is undefined', function (st) { + st.deepEqual( + qs.parse( + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + { decodeDotInKeys: true } + ), + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + 'with allowDots undefined and decodeDotInKeys true' + ); + + st.end(); + }); + + t.test('throws when decodeDotInKeys is not of type boolean', function (st) { + st['throws']( + function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 'foobar' }); }, + TypeError + ); + + st['throws']( + function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 0 }); }, + TypeError + ); + st['throws']( + function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: NaN }); }, + TypeError + ); + + st['throws']( + function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: null }); }, + TypeError + ); + + st.end(); + }); + + t.test('allows empty arrays in obj values', function (st) { + st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: true }), { foo: [], bar: 'baz' }); + st.deepEqual(qs.parse('foo[]&bar=baz', { allowEmptyArrays: false }), { foo: [''], bar: 'baz' }); + + st.end(); + }); + + t.test('throws when allowEmptyArrays is not of type boolean', function (st) { + st['throws']( + function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 'foobar' }); }, + TypeError + ); + + st['throws']( + function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 0 }); }, + TypeError + ); + st['throws']( + function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: NaN }); }, + TypeError + ); + + st['throws']( + function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: null }); }, + TypeError + ); + + st.end(); + }); + + t.test('allowEmptyArrays + strictNullHandling', function (st) { + st.deepEqual( + qs.parse('testEmptyArray[]', { strictNullHandling: true, allowEmptyArrays: true }), + { testEmptyArray: [] } + ); + + st.end(); + }); + + t.deepEqual(qs.parse('a[b]=c'), { a: { b: 'c' } }, 'parses a single nested string'); + t.deepEqual(qs.parse('a[b][c]=d'), { a: { b: { c: 'd' } } }, 'parses a double nested string'); + t.deepEqual( + qs.parse('a[b][c][d][e][f][g][h]=i'), + { a: { b: { c: { d: { e: { f: { '[g][h]': 'i' } } } } } } }, + 'defaults to a depth of 5' + ); + + t.test('only parses one level when depth = 1', function (st) { + st.deepEqual(qs.parse('a[b][c]=d', { depth: 1 }), { a: { b: { '[c]': 'd' } } }); + st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } }); + st.end(); + }); + + t.test('uses original key when depth = 0', function (st) { + st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: 0 }), { 'a[0]': 'b', 'a[1]': 'c' }); + st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: 0 }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' }); + st.end(); + }); + + t.test('uses original key when depth = false', function (st) { + st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: false }), { 'a[0]': 'b', 'a[1]': 'c' }); + st.deepEqual(qs.parse('a[0][0]=b&a[0][1]=c&a[1]=d&e=2', { depth: false }), { 'a[0][0]': 'b', 'a[0][1]': 'c', 'a[1]': 'd', e: '2' }); + st.end(); + }); + + t.deepEqual(qs.parse('a=b&a=c'), { a: ['b', 'c'] }, 'parses a simple array'); + + t.test('parses an explicit array', function (st) { + st.deepEqual(qs.parse('a[]=b'), { a: ['b'] }); + st.deepEqual(qs.parse('a[]=b&a[]=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[]=b&a[]=c&a[]=d'), { a: ['b', 'c', 'd'] }); + st.end(); + }); + + t.test('parses a mix of simple and explicit arrays', function (st) { + st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[0]=b&a=c'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] }); + + st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); + st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] }); + + st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); + st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] }); + + st.end(); + }); + + t.test('parses a nested array', function (st) { + st.deepEqual(qs.parse('a[b][]=c&a[b][]=d'), { a: { b: ['c', 'd'] } }); + st.deepEqual(qs.parse('a[>=]=25'), { a: { '>=': '25' } }); + st.end(); + }); + + t.test('allows to specify array indices', function (st) { + st.deepEqual(qs.parse('a[1]=c&a[0]=b&a[2]=d'), { a: ['b', 'c', 'd'] }); + st.deepEqual(qs.parse('a[1]=c&a[0]=b'), { a: ['b', 'c'] }); + st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 20 }), { a: ['c'] }); + st.deepEqual(qs.parse('a[1]=c', { arrayLimit: 0 }), { a: { 1: 'c' } }); + st.deepEqual(qs.parse('a[1]=c'), { a: ['c'] }); + st.end(); + }); + + t.test('limits specific array indices to arrayLimit', function (st) { + st.deepEqual(qs.parse('a[19]=a', { arrayLimit: 20 }), { a: ['a'] }); + st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: { 20: 'a' } }); + + st.deepEqual(qs.parse('a[19]=a'), { a: ['a'] }); + st.deepEqual(qs.parse('a[20]=a'), { a: { 20: 'a' } }); + st.end(); + }); + + t.deepEqual(qs.parse('a[12b]=c'), { a: { '12b': 'c' } }, 'supports keys that begin with a number'); + + t.test('supports encoded = signs', function (st) { + st.deepEqual(qs.parse('he%3Dllo=th%3Dere'), { 'he=llo': 'th=ere' }); + st.end(); + }); + + t.test('is ok with url encoded strings', function (st) { + st.deepEqual(qs.parse('a[b%20c]=d'), { a: { 'b c': 'd' } }); + st.deepEqual(qs.parse('a[b]=c%20d'), { a: { b: 'c d' } }); + st.end(); + }); + + t.test('allows brackets in the value', function (st) { + st.deepEqual(qs.parse('pets=["tobi"]'), { pets: '["tobi"]' }); + st.deepEqual(qs.parse('operators=[">=", "<="]'), { operators: '[">=", "<="]' }); + st.end(); + }); + + t.test('allows empty values', function (st) { + st.deepEqual(qs.parse(''), {}); + st.deepEqual(qs.parse(null), {}); + st.deepEqual(qs.parse(undefined), {}); + st.end(); + }); + + t.test('transforms arrays to objects', function (st) { + st.deepEqual(qs.parse('foo[0]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); + st.deepEqual(qs.parse('foo[bad]=baz&foo[0]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); + st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar'), { foo: { bad: 'baz', 0: 'bar' } }); + st.deepEqual(qs.parse('foo[]=bar&foo[bad]=baz'), { foo: { 0: 'bar', bad: 'baz' } }); + st.deepEqual(qs.parse('foo[bad]=baz&foo[]=bar&foo[]=foo'), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); + st.deepEqual(qs.parse('foo[0][a]=a&foo[0][b]=b&foo[1][a]=aa&foo[1][b]=bb'), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); + + st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: false }), { a: { 0: 'b', t: 'u' } }); + st.deepEqual(qs.parse('a[]=b&a[t]=u&a[hasOwnProperty]=c', { allowPrototypes: true }), { a: { 0: 'b', t: 'u', hasOwnProperty: 'c' } }); + st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: false }), { a: { 0: 'b', x: 'y' } }); + st.deepEqual(qs.parse('a[]=b&a[hasOwnProperty]=c&a[x]=y', { allowPrototypes: true }), { a: { 0: 'b', hasOwnProperty: 'c', x: 'y' } }); + st.end(); + }); + + t.test('transforms arrays to objects (dot notation)', function (st) { + st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: 'baz' } }); + st.deepEqual(qs.parse('foo[0].baz=bar&fool.bad.boo=baz', { allowDots: true }), { foo: [{ baz: 'bar' }], fool: { bad: { boo: 'baz' } } }); + st.deepEqual(qs.parse('foo[0][0].baz=bar&fool.bad=baz', { allowDots: true }), { foo: [[{ baz: 'bar' }]], fool: { bad: 'baz' } }); + st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15'], bar: '2' }] }); + st.deepEqual(qs.parse('foo[0].baz[0]=15&foo[0].baz[1]=16&foo[0].bar=2', { allowDots: true }), { foo: [{ baz: ['15', '16'], bar: '2' }] }); + st.deepEqual(qs.parse('foo.bad=baz&foo[0]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); + st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar' } }); + st.deepEqual(qs.parse('foo[]=bar&foo.bad=baz', { allowDots: true }), { foo: { 0: 'bar', bad: 'baz' } }); + st.deepEqual(qs.parse('foo.bad=baz&foo[]=bar&foo[]=foo', { allowDots: true }), { foo: { bad: 'baz', 0: 'bar', 1: 'foo' } }); + st.deepEqual(qs.parse('foo[0].a=a&foo[0].b=b&foo[1].a=aa&foo[1].b=bb', { allowDots: true }), { foo: [{ a: 'a', b: 'b' }, { a: 'aa', b: 'bb' }] }); + st.end(); + }); + + t.test('correctly prunes undefined values when converting an array to an object', function (st) { + st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { 2: 'b', 99999999: 'c' } }); + st.end(); + }); + + t.test('supports malformed uri characters', function (st) { + st.deepEqual(qs.parse('{%:%}', { strictNullHandling: true }), { '{%:%}': null }); + st.deepEqual(qs.parse('{%:%}='), { '{%:%}': '' }); + st.deepEqual(qs.parse('foo=%:%}'), { foo: '%:%}' }); + st.end(); + }); + + t.test('doesn\'t produce empty keys', function (st) { + st.deepEqual(qs.parse('_r=1&'), { _r: '1' }); + st.end(); + }); + + t.test('cannot access Object prototype', function (st) { + qs.parse('constructor[prototype][bad]=bad'); + qs.parse('bad[constructor][prototype][bad]=bad'); + st.equal(typeof Object.prototype.bad, 'undefined'); + st.end(); + }); + + t.test('parses arrays of objects', function (st) { + st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); + st.deepEqual(qs.parse('a[0][b]=c'), { a: [{ b: 'c' }] }); + st.end(); + }); + + t.test('allows for empty strings in arrays', function (st) { + st.deepEqual(qs.parse('a[]=b&a[]=&a[]=c'), { a: ['b', '', 'c'] }); + + st.deepEqual( + qs.parse('a[0]=b&a[1]&a[2]=c&a[19]=', { strictNullHandling: true, arrayLimit: 20 }), + { a: ['b', null, 'c', ''] }, + 'with arrayLimit 20 + array indices: null then empty string works' + ); + st.deepEqual( + qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }), + { a: { 0: 'b', 1: null, 2: 'c', 3: '' } }, + 'with arrayLimit 0 + array brackets: null then empty string works' + ); + + st.deepEqual( + qs.parse('a[0]=b&a[1]=&a[2]=c&a[19]', { strictNullHandling: true, arrayLimit: 20 }), + { a: ['b', '', 'c', null] }, + 'with arrayLimit 20 + array indices: empty string then null works' + ); + st.deepEqual( + qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }), + { a: { 0: 'b', 1: '', 2: 'c', 3: null } }, + 'with arrayLimit 0 + array brackets: empty string then null works' + ); + + st.deepEqual( + qs.parse('a[]=&a[]=b&a[]=c'), + { a: ['', 'b', 'c'] }, + 'array brackets: empty strings work' + ); + st.end(); + }); + + t.test('compacts sparse arrays', function (st) { + st.deepEqual(qs.parse('a[10]=1&a[2]=2', { arrayLimit: 20 }), { a: ['2', '1'] }); + st.deepEqual(qs.parse('a[1][b][2][c]=1', { arrayLimit: 20 }), { a: [{ b: [{ c: '1' }] }] }); + st.deepEqual(qs.parse('a[1][2][3][c]=1', { arrayLimit: 20 }), { a: [[[{ c: '1' }]]] }); + st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { arrayLimit: 20 }), { a: [[[{ c: ['1'] }]]] }); + st.end(); + }); + + t.test('parses sparse arrays', function (st) { + /* eslint no-sparse-arrays: 0 */ + st.deepEqual(qs.parse('a[4]=1&a[1]=2', { allowSparse: true }), { a: [, '2', , , '1'] }); + st.deepEqual(qs.parse('a[1][b][2][c]=1', { allowSparse: true }), { a: [, { b: [, , { c: '1' }] }] }); + st.deepEqual(qs.parse('a[1][2][3][c]=1', { allowSparse: true }), { a: [, [, , [, , , { c: '1' }]]] }); + st.deepEqual(qs.parse('a[1][2][3][c][1]=1', { allowSparse: true }), { a: [, [, , [, , , { c: [, '1'] }]]] }); + st.end(); + }); + + t.test('parses semi-parsed strings', function (st) { + st.deepEqual(qs.parse({ 'a[b]': 'c' }), { a: { b: 'c' } }); + st.deepEqual(qs.parse({ 'a[b]': 'c', 'a[d]': 'e' }), { a: { b: 'c', d: 'e' } }); + st.end(); + }); + + t.test('parses buffers correctly', function (st) { + var b = SaferBuffer.from('test'); + st.deepEqual(qs.parse({ a: b }), { a: b }); + st.end(); + }); + + t.test('parses jquery-param strings', function (st) { + // readable = 'filter[0][]=int1&filter[0][]==&filter[0][]=77&filter[]=and&filter[2][]=int2&filter[2][]==&filter[2][]=8' + var encoded = 'filter%5B0%5D%5B%5D=int1&filter%5B0%5D%5B%5D=%3D&filter%5B0%5D%5B%5D=77&filter%5B%5D=and&filter%5B2%5D%5B%5D=int2&filter%5B2%5D%5B%5D=%3D&filter%5B2%5D%5B%5D=8'; + var expected = { filter: [['int1', '=', '77'], 'and', ['int2', '=', '8']] }; + st.deepEqual(qs.parse(encoded), expected); + st.end(); + }); + + t.test('continues parsing when no parent is found', function (st) { + st.deepEqual(qs.parse('[]=&a=b'), { 0: '', a: 'b' }); + st.deepEqual(qs.parse('[]&a=b', { strictNullHandling: true }), { 0: null, a: 'b' }); + st.deepEqual(qs.parse('[foo]=bar'), { foo: 'bar' }); + st.end(); + }); + + t.test('does not error when parsing a very long array', function (st) { + var str = 'a[]=a'; + while (Buffer.byteLength(str) < 128 * 1024) { + str = str + '&' + str; + } + + st.doesNotThrow(function () { + qs.parse(str); + }); + + st.end(); + }); + + t.test('does not throw when a native prototype has an enumerable property', function (st) { + st.intercept(Object.prototype, 'crash', { value: '' }); + st.intercept(Array.prototype, 'crash', { value: '' }); + + st.doesNotThrow(qs.parse.bind(null, 'a=b')); + st.deepEqual(qs.parse('a=b'), { a: 'b' }); + st.doesNotThrow(qs.parse.bind(null, 'a[][b]=c')); + st.deepEqual(qs.parse('a[][b]=c'), { a: [{ b: 'c' }] }); + + st.end(); + }); + + t.test('parses a string with an alternative string delimiter', function (st) { + st.deepEqual(qs.parse('a=b;c=d', { delimiter: ';' }), { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('parses a string with an alternative RegExp delimiter', function (st) { + st.deepEqual(qs.parse('a=b; c=d', { delimiter: /[;,] */ }), { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('does not use non-splittable objects as delimiters', function (st) { + st.deepEqual(qs.parse('a=b&c=d', { delimiter: true }), { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('allows overriding parameter limit', function (st) { + st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: 1 }), { a: 'b' }); + st.end(); + }); + + t.test('allows setting the parameter limit to Infinity', function (st) { + st.deepEqual(qs.parse('a=b&c=d', { parameterLimit: Infinity }), { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('allows overriding array limit', function (st) { + st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } }); + st.deepEqual(qs.parse('a[0]=b', { arrayLimit: 0 }), { a: { 0: 'b' } }); + + st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } }); + st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: 0 }), { a: { '-1': 'b' } }); + + st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: -1 }), { a: { 0: 'b', 1: 'c' } }); + st.deepEqual(qs.parse('a[0]=b&a[1]=c', { arrayLimit: 0 }), { a: { 0: 'b', 1: 'c' } }); + + st.end(); + }); + + t.test('allows disabling array parsing', function (st) { + var indices = qs.parse('a[0]=b&a[1]=c', { parseArrays: false }); + st.deepEqual(indices, { a: { 0: 'b', 1: 'c' } }); + st.equal(Array.isArray(indices.a), false, 'parseArrays:false, indices case is not an array'); + + var emptyBrackets = qs.parse('a[]=b', { parseArrays: false }); + st.deepEqual(emptyBrackets, { a: { 0: 'b' } }); + st.equal(Array.isArray(emptyBrackets.a), false, 'parseArrays:false, empty brackets case is not an array'); + + st.end(); + }); + + t.test('allows for query string prefix', function (st) { + st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); + st.deepEqual(qs.parse('foo=bar', { ignoreQueryPrefix: true }), { foo: 'bar' }); + st.deepEqual(qs.parse('?foo=bar', { ignoreQueryPrefix: false }), { '?foo': 'bar' }); + + st.end(); + }); + + t.test('parses an object', function (st) { + var input = { + 'user[name]': { 'pop[bob]': 3 }, + 'user[email]': null + }; + + var expected = { + user: { + name: { 'pop[bob]': 3 }, + email: null + } + }; + + var result = qs.parse(input); + + st.deepEqual(result, expected); + st.end(); + }); + + t.test('parses string with comma as array divider', function (st) { + st.deepEqual(qs.parse('foo=bar,tee', { comma: true }), { foo: ['bar', 'tee'] }); + st.deepEqual(qs.parse('foo[bar]=coffee,tee', { comma: true }), { foo: { bar: ['coffee', 'tee'] } }); + st.deepEqual(qs.parse('foo=', { comma: true }), { foo: '' }); + st.deepEqual(qs.parse('foo', { comma: true }), { foo: '' }); + st.deepEqual(qs.parse('foo', { comma: true, strictNullHandling: true }), { foo: null }); + + // test cases inversed from from stringify tests + st.deepEqual(qs.parse('a[0]=c'), { a: ['c'] }); + st.deepEqual(qs.parse('a[]=c'), { a: ['c'] }); + st.deepEqual(qs.parse('a[]=c', { comma: true }), { a: ['c'] }); + + st.deepEqual(qs.parse('a[0]=c&a[1]=d'), { a: ['c', 'd'] }); + st.deepEqual(qs.parse('a[]=c&a[]=d'), { a: ['c', 'd'] }); + st.deepEqual(qs.parse('a=c,d', { comma: true }), { a: ['c', 'd'] }); + + st.end(); + }); + + t.test('parses values with comma as array divider', function (st) { + st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: false }), { foo: 'bar,tee' }); + st.deepEqual(qs.parse({ foo: 'bar,tee' }, { comma: true }), { foo: ['bar', 'tee'] }); + st.end(); + }); + + t.test('use number decoder, parses string that has one number with comma option enabled', function (st) { + var decoder = function (str, defaultDecoder, charset, type) { + if (!isNaN(Number(str))) { + return parseFloat(str); + } + return defaultDecoder(str, defaultDecoder, charset, type); + }; + + st.deepEqual(qs.parse('foo=1', { comma: true, decoder: decoder }), { foo: 1 }); + st.deepEqual(qs.parse('foo=0', { comma: true, decoder: decoder }), { foo: 0 }); + + st.end(); + }); + + t.test('parses brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) { + st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] }); + st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=', { comma: true }), { foo: [['1', '2', '3'], ''] }); + st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] }); + st.deepEqual(qs.parse('foo[]=1,2,3&foo[]=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] }); + + st.end(); + }); + + t.test('parses url-encoded brackets holds array of arrays when having two parts of strings with comma as array divider', function (st) { + st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=4,5,6', { comma: true }), { foo: [['1', '2', '3'], ['4', '5', '6']] }); + st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=', { comma: true }), { foo: [['1', '2', '3'], ''] }); + st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=,', { comma: true }), { foo: [['1', '2', '3'], ['', '']] }); + st.deepEqual(qs.parse('foo%5B%5D=1,2,3&foo%5B%5D=a', { comma: true }), { foo: [['1', '2', '3'], 'a'] }); + + st.end(); + }); + + t.test('parses comma delimited array while having percent-encoded comma treated as normal text', function (st) { + st.deepEqual(qs.parse('foo=a%2Cb', { comma: true }), { foo: 'a,b' }); + st.deepEqual(qs.parse('foo=a%2C%20b,d', { comma: true }), { foo: ['a, b', 'd'] }); + st.deepEqual(qs.parse('foo=a%2C%20b,c%2C%20d', { comma: true }), { foo: ['a, b', 'c, d'] }); + + st.end(); + }); + + t.test('parses an object in dot notation', function (st) { + var input = { + 'user.name': { 'pop[bob]': 3 }, + 'user.email.': null + }; + + var expected = { + user: { + name: { 'pop[bob]': 3 }, + email: null + } + }; + + var result = qs.parse(input, { allowDots: true }); + + st.deepEqual(result, expected); + st.end(); + }); + + t.test('parses an object and not child values', function (st) { + var input = { + 'user[name]': { 'pop[bob]': { test: 3 } }, + 'user[email]': null + }; + + var expected = { + user: { + name: { 'pop[bob]': { test: 3 } }, + email: null + } + }; + + var result = qs.parse(input); + + st.deepEqual(result, expected); + st.end(); + }); + + t.test('does not blow up when Buffer global is missing', function (st) { + var restore = mockProperty(global, 'Buffer', { 'delete': true }); + + var result = qs.parse('a=b&c=d'); + + restore(); + + st.deepEqual(result, { a: 'b', c: 'd' }); + st.end(); + }); + + t.test('does not crash when parsing circular references', function (st) { + var a = {}; + a.b = a; + + var parsed; + + st.doesNotThrow(function () { + parsed = qs.parse({ 'foo[bar]': 'baz', 'foo[baz]': a }); + }); + + st.equal('foo' in parsed, true, 'parsed has "foo" property'); + st.equal('bar' in parsed.foo, true); + st.equal('baz' in parsed.foo, true); + st.equal(parsed.foo.bar, 'baz'); + st.deepEqual(parsed.foo.baz, a); + st.end(); + }); + + t.test('does not crash when parsing deep objects', function (st) { + var parsed; + var str = 'foo'; + + for (var i = 0; i < 5000; i++) { + str += '[p]'; + } + + str += '=bar'; + + st.doesNotThrow(function () { + parsed = qs.parse(str, { depth: 5000 }); + }); + + st.equal('foo' in parsed, true, 'parsed has "foo" property'); + + var depth = 0; + var ref = parsed.foo; + while ((ref = ref.p)) { + depth += 1; + } + + st.equal(depth, 5000, 'parsed is 5000 properties deep'); + + st.end(); + }); + + t.test('parses null objects correctly', { skip: !hasProto }, function (st) { + var a = { __proto__: null, b: 'c' }; + + st.deepEqual(qs.parse(a), { b: 'c' }); + var result = qs.parse({ a: a }); + st.equal('a' in result, true, 'result has "a" property'); + st.deepEqual(result.a, a); + st.end(); + }); + + t.test('parses dates correctly', function (st) { + var now = new Date(); + st.deepEqual(qs.parse({ a: now }), { a: now }); + st.end(); + }); + + t.test('parses regular expressions correctly', function (st) { + var re = /^test$/; + st.deepEqual(qs.parse({ a: re }), { a: re }); + st.end(); + }); + + t.test('does not allow overwriting prototype properties', function (st) { + st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: false }), {}); + st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: false }), {}); + + st.deepEqual( + qs.parse('toString', { allowPrototypes: false }), + {}, + 'bare "toString" results in {}' + ); + + st.end(); + }); + + t.test('can allow overwriting prototype properties', function (st) { + st.deepEqual(qs.parse('a[hasOwnProperty]=b', { allowPrototypes: true }), { a: { hasOwnProperty: 'b' } }); + st.deepEqual(qs.parse('hasOwnProperty=b', { allowPrototypes: true }), { hasOwnProperty: 'b' }); + + st.deepEqual( + qs.parse('toString', { allowPrototypes: true }), + { toString: '' }, + 'bare "toString" results in { toString: "" }' + ); + + st.end(); + }); + + t.test('does not crash when the global Object prototype is frozen', { skip: !hasPropertyDescriptors || !hasOverrideMistake }, function (st) { + // We can't actually freeze the global Object prototype as that will interfere with other tests, and once an object is frozen, it + // can't be unfrozen. Instead, we add a new non-writable property to simulate this. + st.teardown(mockProperty(Object.prototype, 'frozenProp', { value: 'foo', nonWritable: true, nonEnumerable: true })); + + st['throws']( + function () { + var obj = {}; + obj.frozenProp = 'bar'; + }, + // node < 6 has a different error message + /^TypeError: Cannot assign to read only property 'frozenProp' of (?:object '#'|#)/, + 'regular assignment of an inherited non-writable property throws' + ); + + var parsed; + st.doesNotThrow( + function () { + parsed = qs.parse('frozenProp', { allowPrototypes: false }); + }, + 'parsing a nonwritable Object.prototype property does not throw' + ); + + st.deepEqual(parsed, {}, 'bare "frozenProp" results in {}'); + + st.end(); + }); + + t.test('params starting with a closing bracket', function (st) { + st.deepEqual(qs.parse(']=toString'), { ']': 'toString' }); + st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' }); + st.deepEqual(qs.parse(']hello]=toString'), { ']hello]': 'toString' }); + st.end(); + }); + + t.test('params starting with a starting bracket', function (st) { + st.deepEqual(qs.parse('[=toString'), { '[': 'toString' }); + st.deepEqual(qs.parse('[[=toString'), { '[[': 'toString' }); + st.deepEqual(qs.parse('[hello[=toString'), { '[hello[': 'toString' }); + st.end(); + }); + + t.test('add keys to objects', function (st) { + st.deepEqual( + qs.parse('a[b]=c&a=d', { strictMerge: false }), + { a: { b: 'c', d: true } }, + 'can add keys to objects' + ); + + st.deepEqual( + qs.parse('a[b]=c&a=toString', { strictMerge: false }), + { a: { b: 'c' } }, + 'can not overwrite prototype' + ); + + st.deepEqual( + qs.parse('a[b]=c&a=toString', { strictMerge: false, allowPrototypes: true }), + { a: { b: 'c', toString: true } }, + 'can overwrite prototype with allowPrototypes true' + ); + + st.deepEqual( + qs.parse('a[b]=c&a=toString', { strictMerge: false, plainObjects: true }), + { __proto__: null, a: { __proto__: null, b: 'c', toString: true } }, + 'can overwrite prototype with plainObjects true' + ); + + st.end(); + }); + + t.test('strictMerge wraps object and primitive into an array', function (st) { + st.deepEqual( + qs.parse('a[b]=c&a=d'), + { a: [{ b: 'c' }, 'd'] }, + 'object then primitive produces array' + ); + + st.deepEqual( + qs.parse('a=d&a[b]=c'), + { a: ['d', { b: 'c' }] }, + 'primitive then object produces array' + ); + + st.deepEqual( + qs.parse('a[b]=c&a=toString'), + { a: [{ b: 'c' }, 'toString'] }, + 'prototype-colliding value is preserved in array' + ); + + st.deepEqual( + qs.parse('a[b]=c&a=toString', { plainObjects: true }), + { __proto__: null, a: [{ __proto__: null, b: 'c' }, 'toString'] }, + 'plainObjects preserved in array wrapping' + ); + + st.end(); + }); + + t.test('dunder proto is ignored', function (st) { + var payload = 'categories[__proto__]=login&categories[__proto__]&categories[length]=42'; + var result = qs.parse(payload, { allowPrototypes: true }); + + st.deepEqual( + result, + { + categories: { + length: '42' + } + }, + 'silent [[Prototype]] payload' + ); + + var plainResult = qs.parse(payload, { allowPrototypes: true, plainObjects: true }); + + st.deepEqual( + plainResult, + { + __proto__: null, + categories: { + __proto__: null, + length: '42' + } + }, + 'silent [[Prototype]] payload: plain objects' + ); + + var query = qs.parse('categories[__proto__]=cats&categories[__proto__]=dogs&categories[some][json]=toInject', { allowPrototypes: true }); + + st.notOk(Array.isArray(query.categories), 'is not an array'); + st.notOk(query.categories instanceof Array, 'is not instanceof an array'); + st.deepEqual(query.categories, { some: { json: 'toInject' } }); + st.equal(JSON.stringify(query.categories), '{"some":{"json":"toInject"}}', 'stringifies as a non-array'); + + st.deepEqual( + qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true }), + { + foo: { + bar: 'stuffs' + } + }, + 'hidden values' + ); + + st.deepEqual( + qs.parse('foo[__proto__][hidden]=value&foo[bar]=stuffs', { allowPrototypes: true, plainObjects: true }), + { + __proto__: null, + foo: { + __proto__: null, + bar: 'stuffs' + } + }, + 'hidden values: plain objects' + ); + + st.end(); + }); + + t.test('can return null objects', { skip: !hasProto }, function (st) { + var expected = { + __proto__: null, + a: { + __proto__: null, + b: 'c', + hasOwnProperty: 'd' + } + }; + st.deepEqual(qs.parse('a[b]=c&a[hasOwnProperty]=d', { plainObjects: true }), expected); + st.deepEqual(qs.parse(null, { plainObjects: true }), { __proto__: null }); + var expectedArray = { + __proto__: null, + a: { + __proto__: null, + 0: 'b', + c: 'd' + } + }; + st.deepEqual(qs.parse('a[]=b&a[c]=d', { plainObjects: true }), expectedArray); + st.end(); + }); + + t.test('can parse with custom encoding', function (st) { + st.deepEqual(qs.parse('%8c%a7=%91%e5%8d%e3%95%7b', { + decoder: function (str) { + var reg = /%([0-9A-F]{2})/ig; + var result = []; + var parts = reg.exec(str); + while (parts) { + result.push(parseInt(parts[1], 16)); + parts = reg.exec(str); + } + return String(iconv.decode(SaferBuffer.from(result), 'shift_jis')); + } + }), { 県: '大阪府' }); + st.end(); + }); + + t.test('receives the default decoder as a second argument', function (st) { + st.plan(1); + qs.parse('a', { + decoder: function (str, defaultDecoder) { + st.equal(defaultDecoder, utils.decode); + } + }); + st.end(); + }); + + t.test('throws error with wrong decoder', function (st) { + st['throws'](function () { + qs.parse({}, { decoder: 'string' }); + }, new TypeError('Decoder has to be a function.')); + st.end(); + }); + + t.test('does not mutate the options argument', function (st) { + var options = {}; + qs.parse('a[b]=true', options); + st.deepEqual(options, {}); + st.end(); + }); + + t.test('throws if an invalid charset is specified', function (st) { + st['throws'](function () { + qs.parse('a=b', { charset: 'foobar' }); + }, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined')); + st.end(); + }); + + t.test('parses an iso-8859-1 string if asked to', function (st) { + st.deepEqual(qs.parse('%A2=%BD', { charset: 'iso-8859-1' }), { '¢': '½' }); + st.end(); + }); + + var urlEncodedCheckmarkInUtf8 = '%E2%9C%93'; + var urlEncodedOSlashInUtf8 = '%C3%B8'; + var urlEncodedNumCheckmark = '%26%2310003%3B'; + var urlEncodedNumSmiley = '%26%239786%3B'; + + t.test('prefers an utf-8 charset specified by the utf8 sentinel to a default charset of iso-8859-1', function (st) { + st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'iso-8859-1' }), { ø: 'ø' }); + st.end(); + }); + + t.test('prefers an iso-8859-1 charset specified by the utf8 sentinel to a default charset of utf-8', function (st) { + st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { 'ø': 'ø' }); + st.end(); + }); + + t.test('does not require the utf8 sentinel to be defined before the parameters whose decoding it affects', function (st) { + st.deepEqual(qs.parse('a=' + urlEncodedOSlashInUtf8 + '&utf8=' + urlEncodedNumCheckmark, { charsetSentinel: true, charset: 'utf-8' }), { a: 'ø' }); + st.end(); + }); + + t.test('ignores an utf8 sentinel with an unknown value', function (st) { + st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { ø: 'ø' }); + st.end(); + }); + + t.test('uses the utf8 sentinel to switch to utf-8 when no default charset is given', function (st) { + st.deepEqual(qs.parse('utf8=' + urlEncodedCheckmarkInUtf8 + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { ø: 'ø' }); + st.end(); + }); + + t.test('uses the utf8 sentinel to switch to iso-8859-1 when no default charset is given', function (st) { + st.deepEqual(qs.parse('utf8=' + urlEncodedNumCheckmark + '&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true }), { 'ø': 'ø' }); + st.end(); + }); + + t.test('interprets numeric entities in iso-8859-1 when `interpretNumericEntities`', function (st) { + st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1', interpretNumericEntities: true }), { foo: '☺' }); + st.end(); + }); + + t.test('handles a custom decoder returning `null`, in the `iso-8859-1` charset, when `interpretNumericEntities`', function (st) { + st.deepEqual(qs.parse('foo=&bar=' + urlEncodedNumSmiley, { + charset: 'iso-8859-1', + decoder: function (str, defaultDecoder, charset) { + return str ? defaultDecoder(str, defaultDecoder, charset) : null; + }, + interpretNumericEntities: true + }), { foo: null, bar: '☺' }); + st.end(); + }); + + t.test('handles a custom decoder returning `null`, with a string key of `null`', function (st) { + st.deepEqual( + qs.parse('null=1&ToNull=2', { + decoder: function (str, defaultDecoder, charset) { + return str === 'ToNull' ? null : defaultDecoder(str, defaultDecoder, charset); + } + }), + { 'null': '1' }, + '"null" key is not overridden by `null` decoder result' + ); + + st.end(); + }); + + t.test('does not interpret numeric entities in iso-8859-1 when `interpretNumericEntities` is absent', function (st) { + st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1' }), { foo: '☺' }); + st.end(); + }); + + t.test('does not interpret numeric entities when the charset is utf-8, even when `interpretNumericEntities`', function (st) { + st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'utf-8', interpretNumericEntities: true }), { foo: '☺' }); + st.end(); + }); + + t.test('interpretNumericEntities with comma:true and iso charset does not crash', function (st) { + st.deepEqual( + qs.parse('b&a[]=1,' + urlEncodedNumSmiley, { comma: true, charset: 'iso-8859-1', interpretNumericEntities: true }), + { b: '', a: ['1,☺'] } + ); + + st.end(); + }); + + t.test('does not interpret %uXXXX syntax in iso-8859-1 mode', function (st) { + st.deepEqual(qs.parse('%u263A=%u263A', { charset: 'iso-8859-1' }), { '%u263A': '%u263A' }); + st.end(); + }); + + t.test('allows for decoding keys and values differently', function (st) { + var decoder = function (str, defaultDecoder, charset, type) { + if (type === 'key') { + return defaultDecoder(str, defaultDecoder, charset, type).toLowerCase(); + } + if (type === 'value') { + return defaultDecoder(str, defaultDecoder, charset, type).toUpperCase(); + } + throw 'this should never happen! type: ' + type; + }; + + st.deepEqual(qs.parse('KeY=vAlUe', { decoder: decoder }), { key: 'VALUE' }); + st.end(); + }); + + t.test('parameter limit tests', function (st) { + st.test('does not throw error when within parameter limit', function (sst) { + var result = qs.parse('a=1&b=2&c=3', { parameterLimit: 5, throwOnLimitExceeded: true }); + sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses without errors'); + sst.end(); + }); + + st.test('throws error when throwOnLimitExceeded is present but not boolean', function (sst) { + sst['throws']( + function () { + qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: 'true' }); + }, + new TypeError('`throwOnLimitExceeded` option must be a boolean'), + 'throws error when throwOnLimitExceeded is present and not boolean' + ); + sst.end(); + }); + + st.test('throws error when parameter limit exceeded', function (sst) { + sst['throws']( + function () { + qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: true }); + }, + new RangeError('Parameter limit exceeded. Only 3 parameters allowed.'), + 'throws error when parameter limit is exceeded' + ); + sst.end(); + }); + + st.test('silently truncates when throwOnLimitExceeded is not given', function (sst) { + var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3 }); + sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently'); + sst.end(); + }); + + st.test('silently truncates when parameter limit exceeded without error', function (sst) { + var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3, throwOnLimitExceeded: false }); + sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently'); + sst.end(); + }); + + st.test('allows unlimited parameters when parameterLimit set to Infinity', function (sst) { + var result = qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: Infinity }); + sst.deepEqual(result, { a: '1', b: '2', c: '3', d: '4', e: '5', f: '6' }, 'parses all parameters without truncation'); + sst.end(); + }); + + st.end(); + }); + + t.test('array limit tests', function (st) { + st.test('does not throw error when array is within limit', function (sst) { + var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 5, throwOnLimitExceeded: true }); + sst.deepEqual(result, { a: ['1', '2', '3'] }, 'parses array without errors'); + sst.end(); + }); + + st.test('throws error when throwOnLimitExceeded is present but not boolean for array limit', function (sst) { + sst['throws']( + function () { + qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: 'true' }); + }, + new TypeError('`throwOnLimitExceeded` option must be a boolean'), + 'throws error when throwOnLimitExceeded is present and not boolean for array limit' + ); + sst.end(); + }); + + st.test('throws error when array limit exceeded', function (sst) { + // 4 elements exceeds limit of 3 + sst['throws']( + function () { + qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: true }); + }, + new RangeError('Array limit exceeded. Only 3 elements allowed in an array.'), + 'throws error when array limit is exceeded' + ); + sst.end(); + }); + + st.test('does not throw when at limit', function (sst) { + // 3 elements = limit of 3, should not throw + var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 3, throwOnLimitExceeded: true }); + sst.ok(Array.isArray(result.a), 'result is an array'); + sst.deepEqual(result.a, ['1', '2', '3'], 'all values present'); + sst.end(); + }); + + st.test('converts array to object if length is greater than limit', function (sst) { + var result = qs.parse('a[1]=1&a[2]=2&a[3]=3&a[4]=4&a[5]=5&a[6]=6', { arrayLimit: 5 }); + + sst.deepEqual(result, { a: { 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6' } }, 'parses into object if array length is greater than limit'); + sst.end(); + }); + + st.test('throws error when indexed notation exceeds arrayLimit with throwOnLimitExceeded', function (sst) { + sst['throws']( + function () { + qs.parse('a[1001]=b', { arrayLimit: 1000, throwOnLimitExceeded: true }); + }, + new RangeError('Array limit exceeded. Only 1000 elements allowed in an array.'), + 'throws error for a single index exceeding arrayLimit' + ); + + sst['throws']( + function () { + qs.parse('a[0]=1&a[1]=2&a[2]=3&a[10]=4', { arrayLimit: 6, throwOnLimitExceeded: true, allowSparse: true }); + }, + new RangeError('Array limit exceeded. Only 6 elements allowed in an array.'), + 'throws error when a sparse index exceeds arrayLimit' + ); + + sst.end(); + }); + + st.test('does not throw for indexed notation within arrayLimit with throwOnLimitExceeded', function (sst) { + var result = qs.parse('a[4]=b', { arrayLimit: 5, throwOnLimitExceeded: true, allowSparse: true }); + sst.ok(Array.isArray(result.a), 'result is an array'); + sst.equal(result.a.length, 5, 'array has correct length'); + sst.equal(result.a[4], 'b', 'value at index 4 is correct'); + sst.end(); + }); + + st.test('silently converts to object for indexed notation exceeding arrayLimit without throwOnLimitExceeded', function (sst) { + var result = qs.parse('a[1001]=b', { arrayLimit: 1000 }); + sst.deepEqual(result, { a: { 1001: 'b' } }, 'converts to object without throwing'); + sst.end(); + }); + + st.end(); + }); + + t.end(); +}); + +test('parses empty keys', function (t) { + emptyTestCases.forEach(function (testCase) { + t.test('skips empty string key with ' + testCase.input, function (st) { + st.deepEqual(qs.parse(testCase.input), testCase.noEmptyKeys); + + st.end(); + }); + }); +}); + +test('`duplicates` option', function (t) { + v.nonStrings.concat('not a valid option').forEach(function (invalidOption) { + if (typeof invalidOption !== 'undefined') { + t['throws']( + function () { qs.parse('', { duplicates: invalidOption }); }, + TypeError, + 'throws on invalid option: ' + inspect(invalidOption) + ); + } + }); + + t.deepEqual( + qs.parse('foo=bar&foo=baz'), + { foo: ['bar', 'baz'] }, + 'duplicates: default, combine' + ); + + t.deepEqual( + qs.parse('foo=bar&foo=baz', { duplicates: 'combine' }), + { foo: ['bar', 'baz'] }, + 'duplicates: combine' + ); + + t.deepEqual( + qs.parse('foo=bar&foo=baz', { duplicates: 'first' }), + { foo: 'bar' }, + 'duplicates: first' + ); + + t.deepEqual( + qs.parse('foo=bar&foo=baz', { duplicates: 'last' }), + { foo: 'baz' }, + 'duplicates: last' + ); + + t.test('bracket notation always combines regardless of duplicates', function (st) { + st.deepEqual( + qs.parse('a=1&a=2&b[]=1&b[]=2', { duplicates: 'last' }), + { a: '2', b: ['1', '2'] }, + 'duplicates last: unbracketed takes last, bracketed combines' + ); + + st.deepEqual( + qs.parse('b[]=1&b[]=2', { duplicates: 'last' }), + { b: ['1', '2'] }, + 'duplicates last: bracketed always combines' + ); + + st.deepEqual( + qs.parse('b[]=1&b[]=2', { duplicates: 'first' }), + { b: ['1', '2'] }, + 'duplicates first: bracketed always combines' + ); + + st.deepEqual( + qs.parse('a=1&a=2&b[]=1&b[]=2', { duplicates: 'first' }), + { a: '1', b: ['1', '2'] }, + 'duplicates first: unbracketed takes first, bracketed combines' + ); + + st.end(); + }); + + t.end(); +}); + +test('qs strictDepth option - throw cases', function (t) { + t.test('throws an exception when depth exceeds the limit with strictDepth: true', function (st) { + st['throws']( + function () { + qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true }); + }, + RangeError, + 'throws RangeError' + ); + st.end(); + }); + + t.test('throws an exception for multiple nested arrays with strictDepth: true', function (st) { + st['throws']( + function () { + qs.parse('a[0][1][2][3][4]=b', { depth: 3, strictDepth: true }); + }, + RangeError, + 'throws RangeError' + ); + st.end(); + }); + + t.test('throws an exception for nested objects and arrays with strictDepth: true', function (st) { + st['throws']( + function () { + qs.parse('a[b][c][0][d][e]=f', { depth: 3, strictDepth: true }); + }, + RangeError, + 'throws RangeError' + ); + st.end(); + }); + + t.test('throws an exception for different types of values with strictDepth: true', function (st) { + st['throws']( + function () { + qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 3, strictDepth: true }); + }, + RangeError, + 'throws RangeError' + ); + st.end(); + }); + +}); + +test('qs strictDepth option - non-throw cases', function (t) { + t.test('when depth is 0 and strictDepth true, do not throw', function (st) { + st.doesNotThrow( + function () { + qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 0, strictDepth: true }); + }, + RangeError, + 'does not throw RangeError' + ); + st.end(); + }); + + t.test('parses successfully when depth is within the limit with strictDepth: true', function (st) { + st.doesNotThrow( + function () { + var result = qs.parse('a[b]=c', { depth: 1, strictDepth: true }); + st.deepEqual(result, { a: { b: 'c' } }, 'parses correctly'); + } + ); + st.end(); + }); + + t.test('does not throw an exception when depth exceeds the limit with strictDepth: false', function (st) { + st.doesNotThrow( + function () { + var result = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 }); + st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, 'parses with depth limit'); + } + ); + st.end(); + }); + + t.test('parses successfully when depth is within the limit with strictDepth: false', function (st) { + st.doesNotThrow( + function () { + var result = qs.parse('a[b]=c', { depth: 1 }); + st.deepEqual(result, { a: { b: 'c' } }, 'parses correctly'); + } + ); + st.end(); + }); + + t.test('does not throw when depth is exactly at the limit with strictDepth: true', function (st) { + st.doesNotThrow( + function () { + var result = qs.parse('a[b][c]=d', { depth: 2, strictDepth: true }); + st.deepEqual(result, { a: { b: { c: 'd' } } }, 'parses correctly'); + } + ); + st.end(); + }); +}); + +test('DOS', function (t) { + var arr = []; + for (var i = 0; i < 105; i++) { + arr[arr.length] = 'x'; + } + var attack = 'a[]=' + arr.join('&a[]='); + var result = qs.parse(attack, { arrayLimit: 100 }); + + t.notOk(Array.isArray(result.a), 'arrayLimit is respected: result is an object, not an array'); + t.equal(Object.keys(result.a).length, 105, 'all values are preserved'); + + t.end(); +}); + +test('arrayLimit boundary conditions', function (t) { + // arrayLimit is the max number of elements allowed in an array + t.test('exactly at the limit stays as array', function (st) { + // 3 elements = limit of 3 + var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 3 }); + st.ok(Array.isArray(result.a), 'result is an array when count equals limit'); + st.deepEqual(result.a, ['1', '2', '3'], 'all values present'); + st.end(); + }); + + t.test('one over the limit converts to object', function (st) { + // 4 elements exceeds limit of 3 + var result = qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3 }); + st.notOk(Array.isArray(result.a), 'result is not an array when over limit'); + st.deepEqual(result.a, { 0: '1', 1: '2', 2: '3', 3: '4' }, 'all values preserved as object'); + st.end(); + }); + + t.test('arrayLimit 1 with one value', function (st) { + // 1 element = limit of 1 + var result = qs.parse('a[]=1', { arrayLimit: 1 }); + st.ok(Array.isArray(result.a), 'result is an array when count equals limit'); + st.deepEqual(result.a, ['1'], 'value preserved as array'); + st.end(); + }); + + t.test('arrayLimit 1 with two values converts to object', function (st) { + // 2 elements exceeds limit of 1 + var result = qs.parse('a[]=1&a[]=2', { arrayLimit: 1 }); + st.notOk(Array.isArray(result.a), 'result is not an array'); + st.deepEqual(result.a, { 0: '1', 1: '2' }, 'all values preserved as object'); + st.end(); + }); + + t.end(); +}); + +test('comma + arrayLimit', function (t) { + t.test('comma-separated values within arrayLimit stay as array', function (st) { + var result = qs.parse('a=1,2,3', { comma: true, arrayLimit: 5 }); + st.ok(Array.isArray(result.a), 'result is an array'); + st.deepEqual(result.a, ['1', '2', '3'], 'all values present'); + st.end(); + }); + + t.test('comma-separated values exceeding arrayLimit convert to object', function (st) { + var result = qs.parse('a=1,2,3,4', { comma: true, arrayLimit: 3 }); + st.notOk(Array.isArray(result.a), 'result is not an array when over limit'); + st.deepEqual(result.a, { 0: '1', 1: '2', 2: '3', 3: '4' }, 'all values preserved as object'); + st.end(); + }); + + t.test('comma-separated values exceeding arrayLimit with throwOnLimitExceeded throws', function (st) { + st['throws']( + function () { + qs.parse('a=1,2,3,4', { comma: true, arrayLimit: 3, throwOnLimitExceeded: true }); + }, + new RangeError('Array limit exceeded. Only 3 elements allowed in an array.'), + 'throws error when comma-split exceeds array limit' + ); + st.end(); + }); + + t.test('comma-separated values at exactly arrayLimit stay as array', function (st) { + var result = qs.parse('a=1,2,3', { comma: true, arrayLimit: 3 }); + st.ok(Array.isArray(result.a), 'result is an array when exactly at limit'); + st.deepEqual(result.a, ['1', '2', '3'], 'all values present'); + st.end(); + }); + + t.end(); +}); + +test('mixed array and object notation', function (t) { + t.test('array brackets with object key - under limit', function (st) { + st.deepEqual( + qs.parse('a[]=b&a[c]=d'), + { a: { 0: 'b', c: 'd' } }, + 'mixing [] and [key] converts to object' + ); + st.end(); + }); + + t.test('array index with object key - under limit', function (st) { + st.deepEqual( + qs.parse('a[0]=b&a[c]=d'), + { a: { 0: 'b', c: 'd' } }, + 'mixing [0] and [key] produces object' + ); + st.end(); + }); + + t.test('plain value with array brackets - under limit', function (st) { + st.deepEqual( + qs.parse('a=b&a[]=c', { arrayLimit: 20 }), + { a: ['b', 'c'] }, + 'plain value combined with [] stays as array under limit' + ); + st.end(); + }); + + t.test('array brackets with plain value - under limit', function (st) { + st.deepEqual( + qs.parse('a[]=b&a=c', { arrayLimit: 20 }), + { a: ['b', 'c'] }, + '[] combined with plain value stays as array under limit' + ); + st.end(); + }); + + t.test('plain value with array index - under limit', function (st) { + st.deepEqual( + qs.parse('a=b&a[0]=c', { arrayLimit: 20 }), + { a: ['b', 'c'] }, + 'plain value combined with [0] stays as array under limit' + ); + st.end(); + }); + + t.test('multiple plain values with duplicates combine', function (st) { + st.deepEqual( + qs.parse('a=b&a=c&a=d', { arrayLimit: 20 }), + { a: ['b', 'c', 'd'] }, + 'duplicate plain keys combine into array' + ); + st.end(); + }); + + t.test('multiple plain values exceeding limit', function (st) { + // 3 elements (indices 0-2), max index 2 > limit 1 + st.deepEqual( + qs.parse('a=b&a=c&a=d', { arrayLimit: 1 }), + { a: { 0: 'b', 1: 'c', 2: 'd' } }, + 'duplicate plain keys convert to object when exceeding limit' + ); + st.end(); + }); + + t.test('mixed notation produces consistent results when arrayLimit is exceeded', function (st) { + var expected = { a: { 0: 'b', 1: 'c', 2: 'd' } }; + + st.deepEqual( + qs.parse('a[]=b&a[1]=c&a=d', { arrayLimit: -1 }), + expected, + 'arrayLimit -1' + ); + + st.deepEqual( + qs.parse('a[]=b&a[1]=c&a=d', { arrayLimit: 0 }), + expected, + 'arrayLimit 0' + ); + + st.deepEqual( + qs.parse('a[]=b&a[1]=c&a=d', { arrayLimit: 1 }), + expected, + 'arrayLimit 1' + ); + + st.end(); + }); + + t.end(); +}); diff --git a/bff/node_modules/qs/test/stringify.js b/bff/node_modules/qs/test/stringify.js new file mode 100644 index 0000000..4d77694 --- /dev/null +++ b/bff/node_modules/qs/test/stringify.js @@ -0,0 +1,1310 @@ +'use strict'; + +var test = require('tape'); +var qs = require('../'); +var utils = require('../lib/utils'); +var iconv = require('iconv-lite'); +var SaferBuffer = require('safer-buffer').Buffer; +var hasSymbols = require('has-symbols'); +var mockProperty = require('mock-property'); +var emptyTestCases = require('./empty-keys-cases').emptyTestCases; +var hasProto = require('has-proto')(); +var hasBigInt = require('has-bigints')(); + +test('stringify()', function (t) { + t.test('stringifies a querystring object', function (st) { + st.equal(qs.stringify({ a: 'b' }), 'a=b'); + st.equal(qs.stringify({ a: 1 }), 'a=1'); + st.equal(qs.stringify({ a: 1, b: 2 }), 'a=1&b=2'); + st.equal(qs.stringify({ a: 'A_Z' }), 'a=A_Z'); + st.equal(qs.stringify({ a: '€' }), 'a=%E2%82%AC'); + st.equal(qs.stringify({ a: '' }), 'a=%EE%80%80'); + st.equal(qs.stringify({ a: 'א' }), 'a=%D7%90'); + st.equal(qs.stringify({ a: '𐐷' }), 'a=%F0%90%90%B7'); + st.end(); + }); + + t.test('stringifies falsy values', function (st) { + st.equal(qs.stringify(undefined), ''); + st.equal(qs.stringify(null), ''); + st.equal(qs.stringify(null, { strictNullHandling: true }), ''); + st.equal(qs.stringify(false), ''); + st.equal(qs.stringify(0), ''); + st.end(); + }); + + t.test('stringifies symbols', { skip: !hasSymbols() }, function (st) { + st.equal(qs.stringify(Symbol.iterator), ''); + st.equal(qs.stringify([Symbol.iterator]), '0=Symbol%28Symbol.iterator%29'); + st.equal(qs.stringify({ a: Symbol.iterator }), 'a=Symbol%28Symbol.iterator%29'); + st.equal( + qs.stringify({ a: [Symbol.iterator] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), + 'a[]=Symbol%28Symbol.iterator%29' + ); + st.end(); + }); + + t.test('stringifies bigints', { skip: !hasBigInt }, function (st) { + var three = BigInt(3); + var encodeWithN = function (value, defaultEncoder, charset) { + var result = defaultEncoder(value, defaultEncoder, charset); + return typeof value === 'bigint' ? result + 'n' : result; + }; + st.equal(qs.stringify(three), ''); + st.equal(qs.stringify([three]), '0=3'); + st.equal(qs.stringify([three], { encoder: encodeWithN }), '0=3n'); + st.equal(qs.stringify({ a: three }), 'a=3'); + st.equal(qs.stringify({ a: three }, { encoder: encodeWithN }), 'a=3n'); + st.equal( + qs.stringify({ a: [three] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), + 'a[]=3' + ); + st.equal( + qs.stringify({ a: [three] }, { encodeValuesOnly: true, encoder: encodeWithN, arrayFormat: 'brackets' }), + 'a[]=3n' + ); + st.end(); + }); + + t.test('encodes dot in key of object when encodeDotInKeys and allowDots is provided', function (st) { + st.equal( + qs.stringify( + { 'name.obj': { first: 'John', last: 'Doe' } }, + { allowDots: false, encodeDotInKeys: false } + ), + 'name.obj%5Bfirst%5D=John&name.obj%5Blast%5D=Doe', + 'with allowDots false and encodeDotInKeys false' + ); + st.equal( + qs.stringify( + { 'name.obj': { first: 'John', last: 'Doe' } }, + { allowDots: true, encodeDotInKeys: false } + ), + 'name.obj.first=John&name.obj.last=Doe', + 'with allowDots true and encodeDotInKeys false' + ); + st.equal( + qs.stringify( + { 'name.obj': { first: 'John', last: 'Doe' } }, + { allowDots: false, encodeDotInKeys: true } + ), + 'name%252Eobj%5Bfirst%5D=John&name%252Eobj%5Blast%5D=Doe', + 'with allowDots false and encodeDotInKeys true' + ); + st.equal( + qs.stringify( + { 'name.obj': { first: 'John', last: 'Doe' } }, + { allowDots: true, encodeDotInKeys: true } + ), + 'name%252Eobj.first=John&name%252Eobj.last=Doe', + 'with allowDots true and encodeDotInKeys true' + ); + + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { allowDots: false, encodeDotInKeys: false } + ), + 'name.obj.subobject%5Bfirst.godly.name%5D=John&name.obj.subobject%5Blast%5D=Doe', + 'with allowDots false and encodeDotInKeys false' + ); + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { allowDots: true, encodeDotInKeys: false } + ), + 'name.obj.subobject.first.godly.name=John&name.obj.subobject.last=Doe', + 'with allowDots false and encodeDotInKeys false' + ); + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { allowDots: false, encodeDotInKeys: true } + ), + 'name%252Eobj%252Esubobject%5Bfirst.godly.name%5D=John&name%252Eobj%252Esubobject%5Blast%5D=Doe', + 'with allowDots false and encodeDotInKeys true' + ); + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { allowDots: true, encodeDotInKeys: true } + ), + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + 'with allowDots true and encodeDotInKeys true' + ); + + st.end(); + }); + + t.test('should encode dot in key of object, and automatically set allowDots to `true` when encodeDotInKeys is true and allowDots in undefined', function (st) { + st.equal( + qs.stringify( + { 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, + { encodeDotInKeys: true } + ), + 'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe', + 'with allowDots undefined and encodeDotInKeys true' + ); + st.end(); + }); + + t.test('should encode dot in key of object when encodeDotInKeys and allowDots is provided, and nothing else when encodeValuesOnly is provided', function (st) { + st.equal( + qs.stringify({ 'name.obj': { first: 'John', last: 'Doe' } }, { + encodeDotInKeys: true, allowDots: true, encodeValuesOnly: true + }), + 'name%2Eobj.first=John&name%2Eobj.last=Doe' + ); + + st.equal( + qs.stringify({ 'name.obj.subobject': { 'first.godly.name': 'John', last: 'Doe' } }, { allowDots: true, encodeDotInKeys: true, encodeValuesOnly: true }), + 'name%2Eobj%2Esubobject.first%2Egodly%2Ename=John&name%2Eobj%2Esubobject.last=Doe' + ); + + st.end(); + }); + + t.test('throws when `commaRoundTrip` is not a boolean', function (st) { + st['throws']( + function () { qs.stringify({}, { commaRoundTrip: 'not a boolean' }); }, + TypeError, + 'throws when `commaRoundTrip` is not a boolean' + ); + + st.end(); + }); + + t.test('throws when `encodeDotInKeys` is not a boolean', function (st) { + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: 'foobar' }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: 0 }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: NaN }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { encodeDotInKeys: null }); }, + TypeError + ); + + st.end(); + }); + + t.test('adds query prefix', function (st) { + st.equal(qs.stringify({ a: 'b' }, { addQueryPrefix: true }), '?a=b'); + st.end(); + }); + + t.test('with query prefix, outputs blank string given an empty object', function (st) { + st.equal(qs.stringify({}, { addQueryPrefix: true }), ''); + st.end(); + }); + + t.test('stringifies nested falsy values', function (st) { + st.equal(qs.stringify({ a: { b: { c: null } } }), 'a%5Bb%5D%5Bc%5D='); + st.equal(qs.stringify({ a: { b: { c: null } } }, { strictNullHandling: true }), 'a%5Bb%5D%5Bc%5D'); + st.equal(qs.stringify({ a: { b: { c: false } } }), 'a%5Bb%5D%5Bc%5D=false'); + st.end(); + }); + + t.test('stringifies a nested object', function (st) { + st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); + st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }), 'a%5Bb%5D%5Bc%5D%5Bd%5D=e'); + st.end(); + }); + + t.test('`allowDots` option: stringifies a nested object with dots notation', function (st) { + st.equal(qs.stringify({ a: { b: 'c' } }, { allowDots: true }), 'a.b=c'); + st.equal(qs.stringify({ a: { b: { c: { d: 'e' } } } }, { allowDots: true }), 'a.b.c.d=e'); + st.end(); + }); + + t.test('stringifies an array value', function (st) { + st.equal( + qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'indices' }), + 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', + 'indices => indices' + ); + st.equal( + qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'brackets' }), + 'a%5B%5D=b&a%5B%5D=c&a%5B%5D=d', + 'brackets => brackets' + ); + st.equal( + qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'comma' }), + 'a=b%2Cc%2Cd', + 'comma => comma' + ); + st.equal( + qs.stringify({ a: ['b', 'c', 'd'] }, { arrayFormat: 'comma', commaRoundTrip: true }), + 'a=b%2Cc%2Cd', + 'comma round trip => comma' + ); + st.equal( + qs.stringify({ a: ['b', 'c', 'd'] }), + 'a%5B0%5D=b&a%5B1%5D=c&a%5B2%5D=d', + 'default => indices' + ); + st.end(); + }); + + t.test('`skipNulls` option', function (st) { + st.equal( + qs.stringify({ a: 'b', c: null }, { skipNulls: true }), + 'a=b', + 'omits nulls when asked' + ); + + st.equal( + qs.stringify({ a: { b: 'c', d: null } }, { skipNulls: true }), + 'a%5Bb%5D=c', + 'omits nested nulls when asked' + ); + + st.end(); + }); + + t.test('omits array indices when asked', function (st) { + st.equal(qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false }), 'a=b&a=c&a=d'); + + st.end(); + }); + + t.test('omits object key/value pair when value is empty array', function (st) { + st.equal(qs.stringify({ a: [], b: 'zz' }), 'b=zz'); + + st.end(); + }); + + t.test('should not omit object key/value pair when value is empty array and when asked', function (st) { + st.equal(qs.stringify({ a: [], b: 'zz' }), 'b=zz'); + st.equal(qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: false }), 'b=zz'); + st.equal(qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: true }), 'a[]&b=zz'); + + st.end(); + }); + + t.test('should throw when allowEmptyArrays is not of type boolean', function (st) { + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: 'foobar' }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: 0 }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: NaN }); }, + TypeError + ); + + st['throws']( + function () { qs.stringify({ a: [], b: 'zz' }, { allowEmptyArrays: null }); }, + TypeError + ); + + st.end(); + }); + + t.test('allowEmptyArrays + strictNullHandling', function (st) { + st.equal( + qs.stringify( + { testEmptyArray: [] }, + { strictNullHandling: true, allowEmptyArrays: true } + ), + 'testEmptyArray[]' + ); + + st.end(); + }); + + t.test('stringifies an array value with one item vs multiple items', function (st) { + st.test('non-array item', function (s2t) { + s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a=c'); + s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a=c'); + s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c'); + s2t.equal(qs.stringify({ a: 'c' }, { encodeValuesOnly: true }), 'a=c'); + + s2t.end(); + }); + + st.test('array with a single item', function (s2t) { + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c'); + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c'); + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c'); + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a[]=c'); // so it parses back as an array + s2t.equal(qs.stringify({ a: ['c'] }, { encodeValuesOnly: true }), 'a[0]=c'); + + s2t.end(); + }); + + st.test('array with multiple items', function (s2t) { + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=c&a[1]=d'); + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=c&a[]=d'); + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c,d'); + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a=c,d'); + s2t.equal(qs.stringify({ a: ['c', 'd'] }, { encodeValuesOnly: true }), 'a[0]=c&a[1]=d'); + + s2t.end(); + }); + + st.test('array with multiple items with a comma inside', function (s2t) { + s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=c%2Cd,e'); + s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { arrayFormat: 'comma' }), 'a=c%2Cd%2Ce'); + + s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { encodeValuesOnly: true, arrayFormat: 'comma', commaRoundTrip: true }), 'a=c%2Cd,e'); + s2t.equal(qs.stringify({ a: ['c,d', 'e'] }, { arrayFormat: 'comma', commaRoundTrip: true }), 'a=c%2Cd%2Ce'); + + s2t.end(); + }); + + st.end(); + }); + + t.test('stringifies a nested array value', function (st) { + st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[b][0]=c&a[b][1]=d'); + st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[b][]=c&a[b][]=d'); + st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true, arrayFormat: 'comma' }), 'a[b]=c,d'); + st.equal(qs.stringify({ a: { b: ['c', 'd'] } }, { encodeValuesOnly: true }), 'a[b][0]=c&a[b][1]=d'); + st.end(); + }); + + t.test('stringifies comma and empty array values', function (st) { + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'indices' }), 'a[0]=,&a[1]=&a[2]=c,d%'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'brackets' }), 'a[]=,&a[]=&a[]=c,d%'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'comma' }), 'a=,,,c,d%'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: false, arrayFormat: 'repeat' }), 'a=,&a=&a=c,d%'); + + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[0]=%2C&a[1]=&a[2]=c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=%2C&a[]=&a[]=c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=%2C,,c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=%2C&a=&a=c%2Cd%25'); + + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'indices' }), 'a%5B0%5D=%2C&a%5B1%5D=&a%5B2%5D=c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'brackets' }), 'a%5B%5D=%2C&a%5B%5D=&a%5B%5D=c%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'comma' }), 'a=%2C%2C%2Cc%2Cd%25'); + st.equal(qs.stringify({ a: [',', '', 'c,d%'] }, { encode: true, encodeValuesOnly: false, arrayFormat: 'repeat' }), 'a=%2C&a=&a=c%2Cd%25'); + + st.end(); + }); + + t.test('stringifies comma and empty non-array values', function (st) { + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'indices' }), 'a=,&b=&c=c,d%'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'brackets' }), 'a=,&b=&c=c,d%'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'comma' }), 'a=,&b=&c=c,d%'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: false, arrayFormat: 'repeat' }), 'a=,&b=&c=c,d%'); + + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'indices' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'comma' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=%2C&b=&c=c%2Cd%25'); + + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'indices' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'brackets' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'comma' }), 'a=%2C&b=&c=c%2Cd%25'); + st.equal(qs.stringify({ a: ',', b: '', c: 'c,d%' }, { encode: true, encodeValuesOnly: false, arrayFormat: 'repeat' }), 'a=%2C&b=&c=c%2Cd%25'); + + st.end(); + }); + + t.test('stringifies a nested array value with dots notation', function (st) { + st.equal( + qs.stringify( + { a: { b: ['c', 'd'] } }, + { allowDots: true, encodeValuesOnly: true, arrayFormat: 'indices' } + ), + 'a.b[0]=c&a.b[1]=d', + 'indices: stringifies with dots + indices' + ); + st.equal( + qs.stringify( + { a: { b: ['c', 'd'] } }, + { allowDots: true, encodeValuesOnly: true, arrayFormat: 'brackets' } + ), + 'a.b[]=c&a.b[]=d', + 'brackets: stringifies with dots + brackets' + ); + st.equal( + qs.stringify( + { a: { b: ['c', 'd'] } }, + { allowDots: true, encodeValuesOnly: true, arrayFormat: 'comma' } + ), + 'a.b=c,d', + 'comma: stringifies with dots + comma' + ); + st.equal( + qs.stringify( + { a: { b: ['c', 'd'] } }, + { allowDots: true, encodeValuesOnly: true } + ), + 'a.b[0]=c&a.b[1]=d', + 'default: stringifies with dots + indices' + ); + st.end(); + }); + + t.test('stringifies an object inside an array', function (st) { + st.equal( + qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'indices', encodeValuesOnly: true }), + 'a[0][b]=c', + 'indices => indices' + ); + st.equal( + qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'repeat', encodeValuesOnly: true }), + 'a[b]=c', + 'repeat => repeat' + ); + st.equal( + qs.stringify({ a: [{ b: 'c' }] }, { arrayFormat: 'brackets', encodeValuesOnly: true }), + 'a[][b]=c', + 'brackets => brackets' + ); + st.equal( + qs.stringify({ a: [{ b: 'c' }] }, { encodeValuesOnly: true }), + 'a[0][b]=c', + 'default => indices' + ); + + st.equal( + qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'indices', encodeValuesOnly: true }), + 'a[0][b][c][0]=1', + 'indices => indices' + ); + st.equal( + qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'repeat', encodeValuesOnly: true }), + 'a[b][c]=1', + 'repeat => repeat' + ); + st.equal( + qs.stringify({ a: [{ b: { c: [1] } }] }, { arrayFormat: 'brackets', encodeValuesOnly: true }), + 'a[][b][c][]=1', + 'brackets => brackets' + ); + st.equal( + qs.stringify({ a: [{ b: { c: [1] } }] }, { encodeValuesOnly: true }), + 'a[0][b][c][0]=1', + 'default => indices' + ); + + st.end(); + }); + + t.test('stringifies an array with mixed objects and primitives', function (st) { + st.equal( + qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), + 'a[0][b]=1&a[1]=2&a[2]=3', + 'indices => indices' + ); + st.equal( + qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), + 'a[][b]=1&a[]=2&a[]=3', + 'brackets => brackets' + ); + st.equal( + qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true, arrayFormat: 'comma' }), + '???', + 'brackets => brackets', + { skip: 'TODO: figure out what this should do' } + ); + st.equal( + qs.stringify({ a: [{ b: 1 }, 2, 3] }, { encodeValuesOnly: true }), + 'a[0][b]=1&a[1]=2&a[2]=3', + 'default => indices' + ); + + st.end(); + }); + + t.test('stringifies an object inside an array with dots notation', function (st) { + st.equal( + qs.stringify( + { a: [{ b: 'c' }] }, + { allowDots: true, encode: false, arrayFormat: 'indices' } + ), + 'a[0].b=c', + 'indices => indices' + ); + st.equal( + qs.stringify( + { a: [{ b: 'c' }] }, + { allowDots: true, encode: false, arrayFormat: 'brackets' } + ), + 'a[].b=c', + 'brackets => brackets' + ); + st.equal( + qs.stringify( + { a: [{ b: 'c' }] }, + { allowDots: true, encode: false } + ), + 'a[0].b=c', + 'default => indices' + ); + + st.equal( + qs.stringify( + { a: [{ b: { c: [1] } }] }, + { allowDots: true, encode: false, arrayFormat: 'indices' } + ), + 'a[0].b.c[0]=1', + 'indices => indices' + ); + st.equal( + qs.stringify( + { a: [{ b: { c: [1] } }] }, + { allowDots: true, encode: false, arrayFormat: 'brackets' } + ), + 'a[].b.c[]=1', + 'brackets => brackets' + ); + st.equal( + qs.stringify( + { a: [{ b: { c: [1] } }] }, + { allowDots: true, encode: false } + ), + 'a[0].b.c[0]=1', + 'default => indices' + ); + + st.end(); + }); + + t.test('does not omit object keys when indices = false', function (st) { + st.equal(qs.stringify({ a: [{ b: 'c' }] }, { indices: false }), 'a%5Bb%5D=c'); + st.end(); + }); + + t.test('uses indices notation for arrays when indices=true', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }, { indices: true }), 'a%5B0%5D=b&a%5B1%5D=c'); + st.end(); + }); + + t.test('uses indices notation for arrays when no arrayFormat is specified', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }), 'a%5B0%5D=b&a%5B1%5D=c'); + st.end(); + }); + + t.test('uses indices notation for arrays when arrayFormat=indices', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' }), 'a%5B0%5D=b&a%5B1%5D=c'); + st.end(); + }); + + t.test('uses repeat notation for arrays when arrayFormat=repeat', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' }), 'a=b&a=c'); + st.end(); + }); + + t.test('uses brackets notation for arrays when arrayFormat=brackets', function (st) { + st.equal(qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' }), 'a%5B%5D=b&a%5B%5D=c'); + st.end(); + }); + + t.test('stringifies a complicated object', function (st) { + st.equal(qs.stringify({ a: { b: 'c', d: 'e' } }), 'a%5Bb%5D=c&a%5Bd%5D=e'); + st.end(); + }); + + t.test('stringifies an empty value', function (st) { + st.equal(qs.stringify({ a: '' }), 'a='); + st.equal(qs.stringify({ a: null }, { strictNullHandling: true }), 'a'); + + st.equal(qs.stringify({ a: '', b: '' }), 'a=&b='); + st.equal(qs.stringify({ a: null, b: '' }, { strictNullHandling: true }), 'a&b='); + + st.equal(qs.stringify({ a: { b: '' } }), 'a%5Bb%5D='); + st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: true }), 'a%5Bb%5D'); + st.equal(qs.stringify({ a: { b: null } }, { strictNullHandling: false }), 'a%5Bb%5D='); + + st.end(); + }); + + t.test('stringifies an empty array in different arrayFormat', function (st) { + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false }), 'b[0]=&c=c'); + // arrayFormat default + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices' }), 'b[0]=&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets' }), 'b[]=&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat' }), 'b=&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma' }), 'b=&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', commaRoundTrip: true }), 'b[]=&c=c'); + // with strictNullHandling + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', strictNullHandling: true }), 'b[0]&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', strictNullHandling: true }), 'b[]&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', strictNullHandling: true }), 'b&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true }), 'b&c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', strictNullHandling: true, commaRoundTrip: true }), 'b[]&c=c'); + // with skipNulls + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'indices', skipNulls: true }), 'c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'brackets', skipNulls: true }), 'c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'repeat', skipNulls: true }), 'c=c'); + st.equal(qs.stringify({ a: [], b: [null], c: 'c' }, { encode: false, arrayFormat: 'comma', skipNulls: true }), 'c=c'); + + st.end(); + }); + + t.test('stringifies a null object', { skip: !hasProto }, function (st) { + st.equal(qs.stringify({ __proto__: null, a: 'b' }), 'a=b'); + st.end(); + }); + + t.test('returns an empty string for invalid input', function (st) { + st.equal(qs.stringify(undefined), ''); + st.equal(qs.stringify(false), ''); + st.equal(qs.stringify(null), ''); + st.equal(qs.stringify(''), ''); + st.end(); + }); + + t.test('stringifies an object with a null object as a child', { skip: !hasProto }, function (st) { + st.equal(qs.stringify({ a: { __proto__: null, b: 'c' } }), 'a%5Bb%5D=c'); + st.end(); + }); + + t.test('drops keys with a value of undefined', function (st) { + st.equal(qs.stringify({ a: undefined }), ''); + + st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: true }), 'a%5Bc%5D'); + st.equal(qs.stringify({ a: { b: undefined, c: null } }, { strictNullHandling: false }), 'a%5Bc%5D='); + st.equal(qs.stringify({ a: { b: undefined, c: '' } }), 'a%5Bc%5D='); + st.end(); + }); + + t.test('url encodes values', function (st) { + st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); + st.end(); + }); + + t.test('stringifies a date', function (st) { + var now = new Date(); + var str = 'a=' + encodeURIComponent(now.toISOString()); + st.equal(qs.stringify({ a: now }), str); + st.end(); + }); + + t.test('stringifies the weird object from qs', function (st) { + st.equal(qs.stringify({ 'my weird field': '~q1!2"\'w$5&7/z8)?' }), 'my%20weird%20field=~q1%212%22%27w%245%267%2Fz8%29%3F'); + st.end(); + }); + + t.test('skips properties that are part of the object prototype', function (st) { + st.intercept(Object.prototype, 'crash', { value: 'test' }); + + st.equal(qs.stringify({ a: 'b' }), 'a=b'); + st.equal(qs.stringify({ a: { b: 'c' } }), 'a%5Bb%5D=c'); + + st.end(); + }); + + t.test('stringifies boolean values', function (st) { + st.equal(qs.stringify({ a: true }), 'a=true'); + st.equal(qs.stringify({ a: { b: true } }), 'a%5Bb%5D=true'); + st.equal(qs.stringify({ b: false }), 'b=false'); + st.equal(qs.stringify({ b: { c: false } }), 'b%5Bc%5D=false'); + st.end(); + }); + + t.test('stringifies buffer values', function (st) { + st.equal(qs.stringify({ a: SaferBuffer.from('test') }), 'a=test'); + st.equal(qs.stringify({ a: { b: SaferBuffer.from('test') } }), 'a%5Bb%5D=test'); + st.end(); + }); + + t.test('stringifies an object using an alternative delimiter', function (st) { + st.equal(qs.stringify({ a: 'b', c: 'd' }, { delimiter: ';' }), 'a=b;c=d'); + st.end(); + }); + + t.test('does not blow up when Buffer global is missing', function (st) { + var restore = mockProperty(global, 'Buffer', { 'delete': true }); + + var result = qs.stringify({ a: 'b', c: 'd' }); + + restore(); + + st.equal(result, 'a=b&c=d'); + st.end(); + }); + + t.test('does not crash when parsing circular references', function (st) { + var a = {}; + a.b = a; + + st['throws']( + function () { qs.stringify({ 'foo[bar]': 'baz', 'foo[baz]': a }); }, + /RangeError: Cyclic object value/, + 'cyclic values throw' + ); + + var circular = { + a: 'value' + }; + circular.a = circular; + st['throws']( + function () { qs.stringify(circular); }, + /RangeError: Cyclic object value/, + 'cyclic values throw' + ); + + var arr = ['a']; + st.doesNotThrow( + function () { qs.stringify({ x: arr, y: arr }); }, + 'non-cyclic values do not throw' + ); + + st.end(); + }); + + t.test('non-circular duplicated references can still work', function (st) { + var hourOfDay = { + 'function': 'hour_of_day' + }; + + var p1 = { + 'function': 'gte', + arguments: [hourOfDay, 0] + }; + var p2 = { + 'function': 'lte', + arguments: [hourOfDay, 23] + }; + + st.equal( + qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'indices' }), + 'filters[$and][0][function]=gte&filters[$and][0][arguments][0][function]=hour_of_day&filters[$and][0][arguments][1]=0&filters[$and][1][function]=lte&filters[$and][1][arguments][0][function]=hour_of_day&filters[$and][1][arguments][1]=23' + ); + st.equal( + qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), + 'filters[$and][][function]=gte&filters[$and][][arguments][][function]=hour_of_day&filters[$and][][arguments][]=0&filters[$and][][function]=lte&filters[$and][][arguments][][function]=hour_of_day&filters[$and][][arguments][]=23' + ); + st.equal( + qs.stringify({ filters: { $and: [p1, p2] } }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), + 'filters[$and][function]=gte&filters[$and][arguments][function]=hour_of_day&filters[$and][arguments]=0&filters[$and][function]=lte&filters[$and][arguments][function]=hour_of_day&filters[$and][arguments]=23' + ); + + st.end(); + }); + + t.test('selects properties when filter=array', function (st) { + st.equal(qs.stringify({ a: 'b' }, { filter: ['a'] }), 'a=b'); + st.equal(qs.stringify({ a: 1 }, { filter: [] }), ''); + + st.equal( + qs.stringify( + { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, + { filter: ['a', 'b', 0, 2], arrayFormat: 'indices' } + ), + 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', + 'indices => indices' + ); + st.equal( + qs.stringify( + { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, + { filter: ['a', 'b', 0, 2], arrayFormat: 'brackets' } + ), + 'a%5Bb%5D%5B%5D=1&a%5Bb%5D%5B%5D=3', + 'brackets => brackets' + ); + st.equal( + qs.stringify( + { a: { b: [1, 2, 3, 4], c: 'd' }, c: 'f' }, + { filter: ['a', 'b', 0, 2] } + ), + 'a%5Bb%5D%5B0%5D=1&a%5Bb%5D%5B2%5D=3', + 'default => indices' + ); + + st.end(); + }); + + t.test('supports custom representations when filter=function', function (st) { + var calls = 0; + var obj = { a: 'b', c: 'd', e: { f: new Date(1257894000000) } }; + var filterFunc = function (prefix, value) { + calls += 1; + if (calls === 1) { + st.equal(prefix, '', 'prefix is empty'); + st.equal(value, obj); + } else if (prefix === 'c') { + return void 0; + } else if (value instanceof Date) { + st.equal(prefix, 'e[f]'); + return value.getTime(); + } + return value; + }; + + st.equal(qs.stringify(obj, { filter: filterFunc }), 'a=b&e%5Bf%5D=1257894000000'); + st.equal(calls, 5); + st.end(); + }); + + t.test('can disable uri encoding', function (st) { + st.equal(qs.stringify({ a: 'b' }, { encode: false }), 'a=b'); + st.equal(qs.stringify({ a: { b: 'c' } }, { encode: false }), 'a[b]=c'); + st.equal(qs.stringify({ a: 'b', c: null }, { strictNullHandling: true, encode: false }), 'a=b&c'); + st.end(); + }); + + t.test('can sort the keys', function (st) { + var sort = function (a, b) { + return a.localeCompare(b); + }; + st.equal(qs.stringify({ a: 'c', z: 'y', b: 'f' }, { sort: sort }), 'a=c&b=f&z=y'); + st.equal(qs.stringify({ a: 'c', z: { j: 'a', i: 'b' }, b: 'f' }, { sort: sort }), 'a=c&b=f&z%5Bi%5D=b&z%5Bj%5D=a'); + st.end(); + }); + + t.test('can sort the keys at depth 3 or more too', function (st) { + var sort = function (a, b) { + return a.localeCompare(b); + }; + st.equal( + qs.stringify( + { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, + { sort: sort, encode: false } + ), + 'a=a&b=b&z[zi][zia]=zia&z[zi][zib]=zib&z[zj][zja]=zja&z[zj][zjb]=zjb' + ); + st.equal( + qs.stringify( + { a: 'a', z: { zj: { zjb: 'zjb', zja: 'zja' }, zi: { zib: 'zib', zia: 'zia' } }, b: 'b' }, + { sort: null, encode: false } + ), + 'a=a&z[zj][zjb]=zjb&z[zj][zja]=zja&z[zi][zib]=zib&z[zi][zia]=zia&b=b' + ); + st.end(); + }); + + t.test('can stringify with custom encoding', function (st) { + st.equal(qs.stringify({ 県: '大阪府', '': '' }, { + encoder: function (str) { + if (str.length === 0) { + return ''; + } + var buf = iconv.encode(str, 'shiftjis'); + var result = []; + for (var i = 0; i < buf.length; ++i) { + result.push(buf.readUInt8(i).toString(16)); + } + return '%' + result.join('%'); + } + }), '%8c%a7=%91%e5%8d%e3%95%7b&='); + st.end(); + }); + + t.test('receives the default encoder as a second argument', function (st) { + st.plan(8); + + qs.stringify({ a: 1, b: new Date(), c: true, d: [1] }, { + encoder: function (str) { + st.match(typeof str, /^(?:string|number|boolean)$/); + return ''; + } + }); + + st.end(); + }); + + t.test('receives the default encoder as a second argument', function (st) { + st.plan(2); + + qs.stringify({ a: 1 }, { + encoder: function (str, defaultEncoder) { + st.equal(defaultEncoder, utils.encode); + } + }); + + st.end(); + }); + + t.test('throws error with wrong encoder', function (st) { + st['throws'](function () { + qs.stringify({}, { encoder: 'string' }); + }, new TypeError('Encoder has to be a function.')); + st.end(); + }); + + t.test('can use custom encoder for a buffer object', { skip: typeof Buffer === 'undefined' }, function (st) { + st.equal(qs.stringify({ a: SaferBuffer.from([1]) }, { + encoder: function (buffer) { + if (typeof buffer === 'string') { + return buffer; + } + return String.fromCharCode(buffer.readUInt8(0) + 97); + } + }), 'a=b'); + + st.equal(qs.stringify({ a: SaferBuffer.from('a b') }, { + encoder: function (buffer) { + return buffer; + } + }), 'a=a b'); + st.end(); + }); + + t.test('serializeDate option', function (st) { + var date = new Date(); + st.equal( + qs.stringify({ a: date }), + 'a=' + date.toISOString().replace(/:/g, '%3A'), + 'default is toISOString' + ); + + var mutatedDate = new Date(); + mutatedDate.toISOString = function () { + throw new SyntaxError(); + }; + st['throws'](function () { + mutatedDate.toISOString(); + }, SyntaxError); + st.equal( + qs.stringify({ a: mutatedDate }), + 'a=' + Date.prototype.toISOString.call(mutatedDate).replace(/:/g, '%3A'), + 'toISOString works even when method is not locally present' + ); + + var specificDate = new Date(6); + st.equal( + qs.stringify( + { a: specificDate }, + { serializeDate: function (d) { return d.getTime() * 7; } } + ), + 'a=42', + 'custom serializeDate function called' + ); + + st.equal( + qs.stringify( + { a: [date] }, + { + serializeDate: function (d) { return d.getTime(); }, + arrayFormat: 'comma' + } + ), + 'a=' + date.getTime(), + 'works with arrayFormat comma' + ); + st.equal( + qs.stringify( + { a: [date] }, + { + serializeDate: function (d) { return d.getTime(); }, + arrayFormat: 'comma', + commaRoundTrip: true + } + ), + 'a%5B%5D=' + date.getTime(), + 'works with arrayFormat comma' + ); + + st.end(); + }); + + t.test('RFC 1738 serialization', function (st) { + st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC1738 }), 'a=b+c'); + st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC1738 }), 'a+b=c+d'); + st.equal(qs.stringify({ 'a b': SaferBuffer.from('a b') }, { format: qs.formats.RFC1738 }), 'a+b=a+b'); + + st.equal(qs.stringify({ 'foo(ref)': 'bar' }, { format: qs.formats.RFC1738 }), 'foo(ref)=bar'); + + st.end(); + }); + + t.test('RFC 3986 spaces serialization', function (st) { + st.equal(qs.stringify({ a: 'b c' }, { format: qs.formats.RFC3986 }), 'a=b%20c'); + st.equal(qs.stringify({ 'a b': 'c d' }, { format: qs.formats.RFC3986 }), 'a%20b=c%20d'); + st.equal(qs.stringify({ 'a b': SaferBuffer.from('a b') }, { format: qs.formats.RFC3986 }), 'a%20b=a%20b'); + + st.end(); + }); + + t.test('Backward compatibility to RFC 3986', function (st) { + st.equal(qs.stringify({ a: 'b c' }), 'a=b%20c'); + st.equal(qs.stringify({ 'a b': SaferBuffer.from('a b') }), 'a%20b=a%20b'); + + st.end(); + }); + + t.test('Edge cases and unknown formats', function (st) { + ['UFO1234', false, 1234, null, {}, []].forEach(function (format) { + st['throws']( + function () { + qs.stringify({ a: 'b c' }, { format: format }); + }, + new TypeError('Unknown format option provided.') + ); + }); + st.end(); + }); + + t.test('encodeValuesOnly', function (st) { + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, + { encodeValuesOnly: true, arrayFormat: 'indices' } + ), + 'a=b&c[0]=d&c[1]=e%3Df&f[0][0]=g&f[1][0]=h', + 'encodeValuesOnly + indices' + ); + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, + { encodeValuesOnly: true, arrayFormat: 'brackets' } + ), + 'a=b&c[]=d&c[]=e%3Df&f[][]=g&f[][]=h', + 'encodeValuesOnly + brackets' + ); + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e=f'], f: [['g'], ['h']] }, + { encodeValuesOnly: true, arrayFormat: 'repeat' } + ), + 'a=b&c=d&c=e%3Df&f=g&f=h', + 'encodeValuesOnly + repeat' + ); + + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, + { arrayFormat: 'indices' } + ), + 'a=b&c%5B0%5D=d&c%5B1%5D=e&f%5B0%5D%5B0%5D=g&f%5B1%5D%5B0%5D=h', + 'no encodeValuesOnly + indices' + ); + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, + { arrayFormat: 'brackets' } + ), + 'a=b&c%5B%5D=d&c%5B%5D=e&f%5B%5D%5B%5D=g&f%5B%5D%5B%5D=h', + 'no encodeValuesOnly + brackets' + ); + st.equal( + qs.stringify( + { a: 'b', c: ['d', 'e'], f: [['g'], ['h']] }, + { arrayFormat: 'repeat' } + ), + 'a=b&c=d&c=e&f=g&f=h', + 'no encodeValuesOnly + repeat' + ); + + st.end(); + }); + + t.test('encodeValuesOnly - strictNullHandling', function (st) { + st.equal( + qs.stringify( + { a: { b: null } }, + { encodeValuesOnly: true, strictNullHandling: true } + ), + 'a[b]' + ); + st.end(); + }); + + t.test('throws if an invalid charset is specified', function (st) { + st['throws'](function () { + qs.stringify({ a: 'b' }, { charset: 'foobar' }); + }, new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined')); + st.end(); + }); + + t.test('respects a charset of iso-8859-1', function (st) { + st.equal(qs.stringify({ æ: 'æ' }, { charset: 'iso-8859-1' }), '%E6=%E6'); + st.end(); + }); + + t.test('encodes unrepresentable chars as numeric entities in iso-8859-1 mode', function (st) { + st.equal(qs.stringify({ a: '☺' }, { charset: 'iso-8859-1' }), 'a=%26%239786%3B'); + st.end(); + }); + + t.test('respects an explicit charset of utf-8 (the default)', function (st) { + st.equal(qs.stringify({ a: 'æ' }, { charset: 'utf-8' }), 'a=%C3%A6'); + st.end(); + }); + + t.test('`charsetSentinel` option', function (st) { + st.equal( + qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'utf-8' }), + 'utf8=%E2%9C%93&a=%C3%A6', + 'adds the right sentinel when instructed to and the charset is utf-8' + ); + + st.equal( + qs.stringify({ a: 'æ' }, { charsetSentinel: true, charset: 'iso-8859-1' }), + 'utf8=%26%2310003%3B&a=%E6', + 'adds the right sentinel when instructed to and the charset is iso-8859-1' + ); + + st.end(); + }); + + t.test('does not mutate the options argument', function (st) { + var options = {}; + qs.stringify({}, options); + st.deepEqual(options, {}); + st.end(); + }); + + t.test('strictNullHandling works with custom filter', function (st) { + var filter = function (prefix, value) { + return value; + }; + + var options = { strictNullHandling: true, filter: filter }; + st.equal(qs.stringify({ key: null }, options), 'key'); + st.end(); + }); + + t.test('strictNullHandling works with null serializeDate', function (st) { + var serializeDate = function () { + return null; + }; + var options = { strictNullHandling: true, serializeDate: serializeDate }; + var date = new Date(); + st.equal(qs.stringify({ key: date }, options), 'key'); + st.end(); + }); + + t.test('allows for encoding keys and values differently', function (st) { + var encoder = function (str, defaultEncoder, charset, type) { + if (type === 'key') { + return defaultEncoder(str, defaultEncoder, charset, type).toLowerCase(); + } + if (type === 'value') { + return defaultEncoder(str, defaultEncoder, charset, type).toUpperCase(); + } + throw 'this should never happen! type: ' + type; + }; + + st.deepEqual(qs.stringify({ KeY: 'vAlUe' }, { encoder: encoder }), 'key=VALUE'); + st.end(); + }); + + t.test('objects inside arrays', function (st) { + var obj = { a: { b: { c: 'd', e: 'f' } } }; + var withArray = { a: { b: [{ c: 'd', e: 'f' }] } }; + + st.equal(qs.stringify(obj, { encode: false }), 'a[b][c]=d&a[b][e]=f', 'no array, no arrayFormat'); + st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'brackets' }), 'a[b][c]=d&a[b][e]=f', 'no array, bracket'); + st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'indices' }), 'a[b][c]=d&a[b][e]=f', 'no array, indices'); + st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'repeat' }), 'a[b][c]=d&a[b][e]=f', 'no array, repeat'); + st.equal(qs.stringify(obj, { encode: false, arrayFormat: 'comma' }), 'a[b][c]=d&a[b][e]=f', 'no array, comma'); + + st.equal(qs.stringify(withArray, { encode: false }), 'a[b][0][c]=d&a[b][0][e]=f', 'array, no arrayFormat'); + st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'brackets' }), 'a[b][][c]=d&a[b][][e]=f', 'array, bracket'); + st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'indices' }), 'a[b][0][c]=d&a[b][0][e]=f', 'array, indices'); + st.equal(qs.stringify(withArray, { encode: false, arrayFormat: 'repeat' }), 'a[b][c]=d&a[b][e]=f', 'array, repeat'); + st.equal( + qs.stringify(withArray, { encode: false, arrayFormat: 'comma' }), + '???', + 'array, comma', + { skip: 'TODO: figure out what this should do' } + ); + + st.end(); + }); + + t.test('stringifies sparse arrays', function (st) { + /* eslint no-sparse-arrays: 0 */ + st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1]=2&a[4]=1'); + st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[]=2&a[]=1'); + st.equal(qs.stringify({ a: [, '2', , , '1'] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a=2&a=1'); + + st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][b][2][c]=1'); + st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][b][][c]=1'); + st.equal(qs.stringify({ a: [, { b: [, , { c: '1' }] }] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[b][c]=1'); + + st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][2][3][c]=1'); + st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][][][c]=1'); + st.equal(qs.stringify({ a: [, [, , [, , , { c: '1' }]]] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[c]=1'); + + st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'indices' }), 'a[1][2][3][c][1]=1'); + st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'brackets' }), 'a[][][][c][]=1'); + st.equal(qs.stringify({ a: [, [, , [, , , { c: [, '1'] }]]] }, { encodeValuesOnly: true, arrayFormat: 'repeat' }), 'a[c]=1'); + + st.end(); + }); + + t.test('encodes a very long string', function (st) { + var chars = []; + var expected = []; + for (var i = 0; i < 5e3; i++) { + chars.push(' ' + i); + + expected.push('%20' + i); + } + + var obj = { + foo: chars.join('') + }; + + st.equal( + qs.stringify(obj, { arrayFormat: 'brackets', charset: 'utf-8' }), + 'foo=' + expected.join('') + ); + + st.end(); + }); + + t.end(); +}); + +test('stringifies empty keys', function (t) { + emptyTestCases.forEach(function (testCase) { + t.test('stringifies an object with empty string key with ' + testCase.input, function (st) { + st.deepEqual( + qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'indices' }), + testCase.stringifyOutput.indices, + 'test case: ' + testCase.input + ', indices' + ); + st.deepEqual( + qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'brackets' }), + testCase.stringifyOutput.brackets, + 'test case: ' + testCase.input + ', brackets' + ); + st.deepEqual( + qs.stringify(testCase.withEmptyKeys, { encode: false, arrayFormat: 'repeat' }), + testCase.stringifyOutput.repeat, + 'test case: ' + testCase.input + ', repeat' + ); + + st.end(); + }); + }); + + t.test('edge case with object/arrays', function (st) { + st.deepEqual(qs.stringify({ '': { '': [2, 3] } }, { encode: false }), '[][0]=2&[][1]=3'); + st.deepEqual(qs.stringify({ '': { '': [2, 3], a: 2 } }, { encode: false }), '[][0]=2&[][1]=3&[a]=2'); + st.deepEqual(qs.stringify({ '': { '': [2, 3] } }, { encode: false, arrayFormat: 'indices' }), '[][0]=2&[][1]=3'); + st.deepEqual(qs.stringify({ '': { '': [2, 3], a: 2 } }, { encode: false, arrayFormat: 'indices' }), '[][0]=2&[][1]=3&[a]=2'); + + st.end(); + }); + + t.test('stringifies non-string keys', function (st) { + var S = Object('abc'); + S.toString = function () { + return 'd'; + }; + var actual = qs.stringify({ a: 'b', 'false': {}, 1e+22: 'c', d: 'e' }, { + filter: ['a', false, null, 10000000000000000000000, S], + allowDots: true, + encodeDotInKeys: true + }); + + st.equal(actual, 'a=b&1e%2B22=c&d=e', 'stringifies correctly'); + + st.end(); + }); +}); diff --git a/bff/node_modules/qs/test/utils.js b/bff/node_modules/qs/test/utils.js new file mode 100644 index 0000000..dc2f444 --- /dev/null +++ b/bff/node_modules/qs/test/utils.js @@ -0,0 +1,404 @@ +'use strict'; + +var test = require('tape'); +var inspect = require('object-inspect'); +var SaferBuffer = require('safer-buffer').Buffer; +var forEach = require('for-each'); +var v = require('es-value-fixtures'); + +var utils = require('../lib/utils'); + +test('merge()', function (t) { + t.deepEqual(utils.merge(null, true), [null, true], 'merges true into null'); + + t.deepEqual(utils.merge(null, [42]), [null, 42], 'merges null into an array'); + + t.deepEqual(utils.merge({ a: 'b' }, { a: 'c' }), { a: ['b', 'c'] }, 'merges two objects with the same key'); + + var oneMerged = utils.merge({ foo: 'bar' }, { foo: { first: '123' } }); + t.deepEqual(oneMerged, { foo: ['bar', { first: '123' }] }, 'merges a standalone and an object into an array'); + + var twoMerged = utils.merge({ foo: ['bar', { first: '123' }] }, { foo: { second: '456' } }); + t.deepEqual(twoMerged, { foo: { 0: 'bar', 1: { first: '123' }, second: '456' } }, 'merges a standalone and two objects into an array'); + + var sandwiched = utils.merge({ foo: ['bar', { first: '123', second: '456' }] }, { foo: 'baz' }); + t.deepEqual(sandwiched, { foo: ['bar', { first: '123', second: '456' }, 'baz'] }, 'merges an object sandwiched by two standalones into an array'); + + var nestedArrays = utils.merge({ foo: ['baz'] }, { foo: ['bar', 'xyzzy'] }); + t.deepEqual(nestedArrays, { foo: ['baz', 'bar', 'xyzzy'] }); + + var noOptionsNonObjectSource = utils.merge({ foo: 'baz' }, 'bar'); + t.deepEqual(noOptionsNonObjectSource, { foo: 'baz', bar: true }); + + var func = function f() {}; + t.deepEqual( + utils.merge(func, { foo: 'bar' }), + [func, { foo: 'bar' }], + 'functions can not be merged into' + ); + + func.bar = 'baz'; + t.deepEqual( + utils.merge({ foo: 'bar' }, func), + { foo: 'bar', bar: 'baz' }, + 'functions can be merge sources' + ); + + t.test( + 'avoids invoking array setters unnecessarily', + { skip: typeof Object.defineProperty !== 'function' }, + function (st) { + var setCount = 0; + var getCount = 0; + var observed = []; + Object.defineProperty(observed, 0, { + get: function () { + getCount += 1; + return { bar: 'baz' }; + }, + set: function () { setCount += 1; } + }); + utils.merge(observed, [null]); + st.equal(setCount, 0); + st.equal(getCount, 1); + observed[0] = observed[0]; // eslint-disable-line no-self-assign + st.equal(setCount, 1); + st.equal(getCount, 2); + st.end(); + } + ); + + t.test('with overflow objects (from arrayLimit)', function (st) { + // arrayLimit is max index, so with limit 0, max index 0 is allowed (1 element) + // To create overflow, need 2+ elements with limit 0, or 3+ with limit 1, etc. + st.test('merges primitive into overflow object at next index', function (s2t) { + // Create an overflow object via combine: 3 elements (indices 0-2) with limit 0 + var overflow = utils.combine(['a', 'b'], 'c', 0, false); + s2t.ok(utils.isOverflow(overflow), 'overflow object is marked'); + var merged = utils.merge(overflow, 'd'); + s2t.deepEqual(merged, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'adds primitive at next numeric index'); + s2t.end(); + }); + + st.test('merges primitive into regular object with numeric keys normally', function (s2t) { + var obj = { 0: 'a', 1: 'b' }; + s2t.notOk(utils.isOverflow(obj), 'plain object is not marked as overflow'); + var merged = utils.merge(obj, 'c'); + s2t.deepEqual(merged, { 0: 'a', 1: 'b', c: true }, 'adds primitive as key (not at next index)'); + s2t.end(); + }); + + st.test('merges primitive into object with non-numeric keys normally', function (s2t) { + var obj = { foo: 'bar' }; + var merged = utils.merge(obj, 'baz'); + s2t.deepEqual(merged, { foo: 'bar', baz: true }, 'adds primitive as key with value true'); + s2t.end(); + }); + + st.test('with strictMerge, wraps object and primitive in array', function (s2t) { + var obj = { foo: 'bar' }; + var merged = utils.merge(obj, 'baz', { strictMerge: true }); + s2t.deepEqual(merged, [{ foo: 'bar' }, 'baz'], 'wraps in array with strictMerge'); + s2t.end(); + }); + + st.test('merges overflow object into primitive', function (s2t) { + // Create an overflow object via combine: 2 elements (indices 0-1) with limit 0 + var overflow = utils.combine(['a'], 'b', 0, false); + s2t.ok(utils.isOverflow(overflow), 'overflow object is marked'); + var merged = utils.merge('c', overflow); + s2t.ok(utils.isOverflow(merged), 'result is also marked as overflow'); + s2t.deepEqual(merged, { 0: 'c', 1: 'a', 2: 'b' }, 'creates object with primitive at 0, source values shifted'); + s2t.end(); + }); + + st.test('merges overflow object with multiple values into primitive', function (s2t) { + // Create an overflow object via combine: 3 elements (indices 0-2) with limit 0 + var overflow = utils.combine(['b', 'c'], 'd', 0, false); + s2t.ok(utils.isOverflow(overflow), 'overflow object is marked'); + var merged = utils.merge('a', overflow); + s2t.deepEqual(merged, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'shifts all source indices by 1'); + s2t.end(); + }); + + st.test('merges regular object into primitive as array', function (s2t) { + var obj = { foo: 'bar' }; + var merged = utils.merge('a', obj); + s2t.deepEqual(merged, ['a', { foo: 'bar' }], 'creates array with primitive and object'); + s2t.end(); + }); + + st.end(); + }); + + t.end(); +}); + +test('assign()', function (t) { + var target = { a: 1, b: 2 }; + var source = { b: 3, c: 4 }; + var result = utils.assign(target, source); + + t.equal(result, target, 'returns the target'); + t.deepEqual(target, { a: 1, b: 3, c: 4 }, 'target and source are merged'); + t.deepEqual(source, { b: 3, c: 4 }, 'source is untouched'); + + t.end(); +}); + +test('combine()', function (t) { + t.test('both arrays', function (st) { + var a = [1]; + var b = [2]; + var combined = utils.combine(a, b); + + st.deepEqual(a, [1], 'a is not mutated'); + st.deepEqual(b, [2], 'b is not mutated'); + st.notEqual(a, combined, 'a !== combined'); + st.notEqual(b, combined, 'b !== combined'); + st.deepEqual(combined, [1, 2], 'combined is a + b'); + + st.end(); + }); + + t.test('one array, one non-array', function (st) { + var aN = 1; + var a = [aN]; + var bN = 2; + var b = [bN]; + + var combinedAnB = utils.combine(aN, b); + st.deepEqual(b, [bN], 'b is not mutated'); + st.notEqual(aN, combinedAnB, 'aN + b !== aN'); + st.notEqual(a, combinedAnB, 'aN + b !== a'); + st.notEqual(bN, combinedAnB, 'aN + b !== bN'); + st.notEqual(b, combinedAnB, 'aN + b !== b'); + st.deepEqual([1, 2], combinedAnB, 'first argument is array-wrapped when not an array'); + + var combinedABn = utils.combine(a, bN); + st.deepEqual(a, [aN], 'a is not mutated'); + st.notEqual(aN, combinedABn, 'a + bN !== aN'); + st.notEqual(a, combinedABn, 'a + bN !== a'); + st.notEqual(bN, combinedABn, 'a + bN !== bN'); + st.notEqual(b, combinedABn, 'a + bN !== b'); + st.deepEqual([1, 2], combinedABn, 'second argument is array-wrapped when not an array'); + + st.end(); + }); + + t.test('neither is an array', function (st) { + var combined = utils.combine(1, 2); + st.notEqual(1, combined, '1 + 2 !== 1'); + st.notEqual(2, combined, '1 + 2 !== 2'); + st.deepEqual([1, 2], combined, 'both arguments are array-wrapped when not an array'); + + st.end(); + }); + + t.test('with arrayLimit', function (st) { + st.test('under the limit', function (s2t) { + var combined = utils.combine(['a', 'b'], 'c', 10, false); + s2t.deepEqual(combined, ['a', 'b', 'c'], 'returns array when under limit'); + s2t.ok(Array.isArray(combined), 'result is an array'); + s2t.end(); + }); + + st.test('exactly at the limit stays as array', function (s2t) { + var combined = utils.combine(['a', 'b'], 'c', 3, false); + s2t.deepEqual(combined, ['a', 'b', 'c'], 'stays as array when count equals limit'); + s2t.ok(Array.isArray(combined), 'result is an array'); + s2t.end(); + }); + + st.test('over the limit', function (s2t) { + var combined = utils.combine(['a', 'b', 'c'], 'd', 3, false); + s2t.deepEqual(combined, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'converts to object when over limit'); + s2t.notOk(Array.isArray(combined), 'result is not an array'); + s2t.end(); + }); + + st.test('with arrayLimit 1', function (s2t) { + var combined = utils.combine([], 'a', 1, false); + s2t.deepEqual(combined, ['a'], 'stays as array when count equals limit'); + s2t.ok(Array.isArray(combined), 'result is an array'); + s2t.end(); + }); + + st.test('with arrayLimit 0 converts single element to object', function (s2t) { + var combined = utils.combine([], 'a', 0, false); + s2t.deepEqual(combined, { 0: 'a' }, 'converts to object when count exceeds limit'); + s2t.notOk(Array.isArray(combined), 'result is not an array'); + s2t.end(); + }); + + st.test('with arrayLimit 0 and two elements converts to object', function (s2t) { + var combined = utils.combine(['a'], 'b', 0, false); + s2t.deepEqual(combined, { 0: 'a', 1: 'b' }, 'converts to object when count exceeds limit'); + s2t.notOk(Array.isArray(combined), 'result is not an array'); + s2t.end(); + }); + + st.test('with plainObjects option', function (s2t) { + var combined = utils.combine(['a', 'b'], 'c', 1, true); + var expected = { __proto__: null, 0: 'a', 1: 'b', 2: 'c' }; + s2t.deepEqual(combined, expected, 'converts to object with null prototype'); + s2t.equal(Object.getPrototypeOf(combined), null, 'result has null prototype when plainObjects is true'); + s2t.end(); + }); + + st.end(); + }); + + t.test('with existing overflow object', function (st) { + st.test('adds to existing overflow object at next index', function (s2t) { + // Create overflow object first via combine: 3 elements (indices 0-2) with limit 0 + var overflow = utils.combine(['a', 'b'], 'c', 0, false); + s2t.ok(utils.isOverflow(overflow), 'initial object is marked as overflow'); + + var combined = utils.combine(overflow, 'd', 10, false); + s2t.equal(combined, overflow, 'returns the same object (mutated)'); + s2t.deepEqual(combined, { 0: 'a', 1: 'b', 2: 'c', 3: 'd' }, 'adds value at next numeric index'); + s2t.end(); + }); + + st.test('does not treat plain object with numeric keys as overflow', function (s2t) { + var plainObj = { 0: 'a', 1: 'b' }; + s2t.notOk(utils.isOverflow(plainObj), 'plain object is not marked as overflow'); + + // combine treats this as a regular value, not an overflow object to append to + var combined = utils.combine(plainObj, 'c', 10, false); + s2t.deepEqual(combined, [{ 0: 'a', 1: 'b' }, 'c'], 'concatenates as regular values'); + s2t.end(); + }); + + st.end(); + }); + + t.end(); +}); + +test('decode', function (t) { + t.equal( + utils.decode('a+b'), + 'a b', + 'decodes + to space' + ); + + t.equal( + utils.decode('name%2Eobj'), + 'name.obj', + 'decodes a string' + ); + t.equal( + utils.decode('name%2Eobj%2Efoo', null, 'iso-8859-1'), + 'name.obj.foo', + 'decodes a string in iso-8859-1' + ); + + t.end(); +}); + +test('encode', function (t) { + forEach(v.nullPrimitives, function (nullish) { + t['throws']( + function () { utils.encode(nullish); }, + TypeError, + inspect(nullish) + ' is not a string' + ); + }); + + t.equal(utils.encode(''), '', 'empty string returns itself'); + t.deepEqual(utils.encode([]), [], 'empty array returns itself'); + t.deepEqual(utils.encode({ length: 0 }), { length: 0 }, 'empty arraylike returns itself'); + + t.test('symbols', { skip: !v.hasSymbols }, function (st) { + st.equal(utils.encode(Symbol('x')), 'Symbol%28x%29', 'symbol is encoded'); + + st.end(); + }); + + t.equal( + utils.encode('(abc)'), + '%28abc%29', + 'encodes parentheses' + ); + t.equal( + utils.encode({ toString: function () { return '(abc)'; } }), + '%28abc%29', + 'toStrings and encodes parentheses' + ); + + t.equal( + utils.encode('abc 123 💩', null, 'iso-8859-1'), + 'abc%20123%20%26%2355357%3B%26%2356489%3B', + 'encodes in iso-8859-1' + ); + + var longString = ''; + var expectedString = ''; + for (var i = 0; i < 1500; i++) { + longString += ' '; + expectedString += '%20'; + } + + t.equal( + utils.encode(longString), + expectedString, + 'encodes a long string' + ); + + t.equal( + utils.encode('\x28\x29'), + '%28%29', + 'encodes parens normally' + ); + t.equal( + utils.encode('\x28\x29', null, null, null, 'RFC1738'), + '()', + 'does not encode parens in RFC1738' + ); + + // todo RFC1738 format + + t.equal( + utils.encode('Āက豈'), + '%C4%80%E1%80%80%EF%A4%80', + 'encodes multibyte chars' + ); + + t.equal( + utils.encode('\uD83D \uDCA9'), + '%F0%9F%90%A0%F0%BA%90%80', + 'encodes lone surrogates' + ); + + t.end(); +}); + +test('isBuffer()', function (t) { + forEach([null, undefined, true, false, '', 'abc', 42, 0, NaN, {}, [], function () {}, /a/g], function (x) { + t.equal(utils.isBuffer(x), false, inspect(x) + ' is not a buffer'); + }); + + var fakeBuffer = { constructor: Buffer }; + t.equal(utils.isBuffer(fakeBuffer), false, 'fake buffer is not a buffer'); + + var saferBuffer = SaferBuffer.from('abc'); + t.equal(utils.isBuffer(saferBuffer), true, 'SaferBuffer instance is a buffer'); + + var buffer = Buffer.from && Buffer.alloc ? Buffer.from('abc') : new Buffer('abc'); + t.equal(utils.isBuffer(buffer), true, 'real Buffer instance is a buffer'); + t.end(); +}); + +test('isRegExp()', function (t) { + t.equal(utils.isRegExp(/a/g), true, 'RegExp is a RegExp'); + t.equal(utils.isRegExp(new RegExp('a', 'g')), true, 'new RegExp is a RegExp'); + t.equal(utils.isRegExp(new Date()), false, 'Date is not a RegExp'); + + forEach(v.primitives, function (primitive) { + t.equal(utils.isRegExp(primitive), false, inspect(primitive) + ' is not a RegExp'); + }); + + t.end(); +}); diff --git a/bff/node_modules/range-parser/HISTORY.md b/bff/node_modules/range-parser/HISTORY.md new file mode 100644 index 0000000..70a973d --- /dev/null +++ b/bff/node_modules/range-parser/HISTORY.md @@ -0,0 +1,56 @@ +1.2.1 / 2019-05-10 +================== + + * Improve error when `str` is not a string + +1.2.0 / 2016-06-01 +================== + + * Add `combine` option to combine overlapping ranges + +1.1.0 / 2016-05-13 +================== + + * Fix incorrectly returning -1 when there is at least one valid range + * perf: remove internal function + +1.0.3 / 2015-10-29 +================== + + * perf: enable strict mode + +1.0.2 / 2014-09-08 +================== + + * Support Node.js 0.6 + +1.0.1 / 2014-09-07 +================== + + * Move repository to jshttp + +1.0.0 / 2013-12-11 +================== + + * Add repository to package.json + * Add MIT license + +0.0.4 / 2012-06-17 +================== + + * Change ret -1 for unsatisfiable and -2 when invalid + +0.0.3 / 2012-06-17 +================== + + * Fix last-byte-pos default to len - 1 + +0.0.2 / 2012-06-14 +================== + + * Add `.type` + +0.0.1 / 2012-06-11 +================== + + * Initial release diff --git a/bff/node_modules/range-parser/LICENSE b/bff/node_modules/range-parser/LICENSE new file mode 100644 index 0000000..3599954 --- /dev/null +++ b/bff/node_modules/range-parser/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2012-2014 TJ Holowaychuk +Copyright (c) 2015-2016 Douglas Christopher Wilson + +```js +var parseRange = require('range-parser') +``` + +### parseRange(size, header, options) + +Parse the given `header` string where `size` is the maximum size of the resource. +An array of ranges will be returned or negative numbers indicating an error parsing. + + * `-2` signals a malformed header string + * `-1` signals an unsatisfiable range + + + +```js +// parse header from request +var range = parseRange(size, req.headers.range) + +// the type of the range +if (range.type === 'bytes') { + // the ranges + range.forEach(function (r) { + // do something with r.start and r.end + }) +} +``` + +#### Options + +These properties are accepted in the options object. + +##### combine + +Specifies if overlapping & adjacent ranges should be combined, defaults to `false`. +When `true`, ranges will be combined and returned as if they were specified that +way in the header. + + + +```js +parseRange(100, 'bytes=50-55,0-10,5-10,56-60', { combine: true }) +// => [ +// { start: 0, end: 10 }, +// { start: 50, end: 60 } +// ] +``` + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/range-parser/master +[coveralls-url]: https://coveralls.io/r/jshttp/range-parser?branch=master +[node-image]: https://badgen.net/npm/node/range-parser +[node-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/range-parser +[npm-url]: https://npmjs.org/package/range-parser +[npm-version-image]: https://badgen.net/npm/v/range-parser +[travis-image]: https://badgen.net/travis/jshttp/range-parser/master +[travis-url]: https://travis-ci.org/jshttp/range-parser diff --git a/bff/node_modules/range-parser/index.js b/bff/node_modules/range-parser/index.js new file mode 100644 index 0000000..b7dc5c0 --- /dev/null +++ b/bff/node_modules/range-parser/index.js @@ -0,0 +1,162 @@ +/*! + * range-parser + * Copyright(c) 2012-2014 TJ Holowaychuk + * Copyright(c) 2015-2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = rangeParser + +/** + * Parse "Range" header `str` relative to the given file `size`. + * + * @param {Number} size + * @param {String} str + * @param {Object} [options] + * @return {Array} + * @public + */ + +function rangeParser (size, str, options) { + if (typeof str !== 'string') { + throw new TypeError('argument str must be a string') + } + + var index = str.indexOf('=') + + if (index === -1) { + return -2 + } + + // split the range string + var arr = str.slice(index + 1).split(',') + var ranges = [] + + // add ranges type + ranges.type = str.slice(0, index) + + // parse all ranges + for (var i = 0; i < arr.length; i++) { + var range = arr[i].split('-') + var start = parseInt(range[0], 10) + var end = parseInt(range[1], 10) + + // -nnn + if (isNaN(start)) { + start = size - end + end = size - 1 + // nnn- + } else if (isNaN(end)) { + end = size - 1 + } + + // limit last-byte-pos to current length + if (end > size - 1) { + end = size - 1 + } + + // invalid or unsatisifiable + if (isNaN(start) || isNaN(end) || start > end || start < 0) { + continue + } + + // add range + ranges.push({ + start: start, + end: end + }) + } + + if (ranges.length < 1) { + // unsatisifiable + return -1 + } + + return options && options.combine + ? combineRanges(ranges) + : ranges +} + +/** + * Combine overlapping & adjacent ranges. + * @private + */ + +function combineRanges (ranges) { + var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart) + + for (var j = 0, i = 1; i < ordered.length; i++) { + var range = ordered[i] + var current = ordered[j] + + if (range.start > current.end + 1) { + // next range + ordered[++j] = range + } else if (range.end > current.end) { + // extend range + current.end = range.end + current.index = Math.min(current.index, range.index) + } + } + + // trim ordered array + ordered.length = j + 1 + + // generate combined range + var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex) + + // copy ranges type + combined.type = ranges.type + + return combined +} + +/** + * Map function to add index value to ranges. + * @private + */ + +function mapWithIndex (range, index) { + return { + start: range.start, + end: range.end, + index: index + } +} + +/** + * Map function to remove index value from ranges. + * @private + */ + +function mapWithoutIndex (range) { + return { + start: range.start, + end: range.end + } +} + +/** + * Sort function to sort ranges by index. + * @private + */ + +function sortByRangeIndex (a, b) { + return a.index - b.index +} + +/** + * Sort function to sort ranges by start position. + * @private + */ + +function sortByRangeStart (a, b) { + return a.start - b.start +} diff --git a/bff/node_modules/range-parser/package.json b/bff/node_modules/range-parser/package.json new file mode 100644 index 0000000..abea6d8 --- /dev/null +++ b/bff/node_modules/range-parser/package.json @@ -0,0 +1,44 @@ +{ + "name": "range-parser", + "author": "TJ Holowaychuk (http://tjholowaychuk.com)", + "description": "Range header field string parser", + "version": "1.2.1", + "contributors": [ + "Douglas Christopher Wilson ", + "James Wyatt Cready ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "keywords": [ + "range", + "parser", + "http" + ], + "repository": "jshttp/range-parser", + "devDependencies": { + "deep-equal": "1.0.1", + "eslint": "5.16.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-markdown": "1.0.0", + "eslint-plugin-import": "2.17.2", + "eslint-plugin-node": "8.0.1", + "eslint-plugin-promise": "4.1.1", + "eslint-plugin-standard": "4.0.0", + "mocha": "6.1.4", + "nyc": "14.1.1" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-travis": "nyc --reporter=text npm test" + } +} diff --git a/bff/node_modules/raw-body/LICENSE b/bff/node_modules/raw-body/LICENSE new file mode 100644 index 0000000..1029a7a --- /dev/null +++ b/bff/node_modules/raw-body/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2013-2014 Jonathan Ong +Copyright (c) 2014-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/raw-body/README.md b/bff/node_modules/raw-body/README.md new file mode 100644 index 0000000..d9b36d6 --- /dev/null +++ b/bff/node_modules/raw-body/README.md @@ -0,0 +1,223 @@ +# raw-body + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build status][github-actions-ci-image]][github-actions-ci-url] +[![Test coverage][coveralls-image]][coveralls-url] + +Gets the entire buffer of a stream either as a `Buffer` or a string. +Validates the stream's length against an expected length and maximum limit. +Ideal for parsing request bodies. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install raw-body +``` + +### TypeScript + +This module includes a [TypeScript](https://www.typescriptlang.org/) +declaration file to enable auto complete in compatible editors and type +information for TypeScript projects. This module depends on the Node.js +types, so install `@types/node`: + +```sh +$ npm install @types/node +``` + +## API + +```js +var getRawBody = require('raw-body') +``` + +### getRawBody(stream, [options], [callback]) + +**Returns a promise if no callback specified and global `Promise` exists.** + +Options: + +- `length` - The length of the stream. + If the contents of the stream do not add up to this length, + an `400` error code is returned. +- `limit` - The byte limit of the body. + This is the number of bytes or any string format supported by + [bytes](https://www.npmjs.com/package/bytes), + for example `1000`, `'500kb'` or `'3mb'`. + If the body ends up being larger than this limit, + a `413` error code is returned. +- `encoding` - The encoding to use to decode the body into a string. + By default, a `Buffer` instance will be returned when no encoding is specified. + Most likely, you want `utf-8`, so setting `encoding` to `true` will decode as `utf-8`. + You can use any type of encoding supported by [iconv-lite](https://www.npmjs.org/package/iconv-lite#readme). + +You can also pass a string in place of options to just specify the encoding. + +If an error occurs, the stream will be paused, everything unpiped, +and you are responsible for correctly disposing the stream. +For HTTP requests, you may need to finish consuming the stream if +you want to keep the socket open for future requests. For streams +that use file descriptors, you should `stream.destroy()` or +`stream.close()` to prevent leaks. + +## Errors + +This module creates errors depending on the error condition during reading. +The error may be an error from the underlying Node.js implementation, but is +otherwise an error created by this module, which has the following attributes: + + * `limit` - the limit in bytes + * `length` and `expected` - the expected length of the stream + * `received` - the received bytes + * `encoding` - the invalid encoding + * `status` and `statusCode` - the corresponding status code for the error + * `type` - the error type + +### Types + +The errors from this module have a `type` property which allows for the programmatic +determination of the type of error returned. + +#### encoding.unsupported + +This error will occur when the `encoding` option is specified, but the value does +not map to an encoding supported by the [iconv-lite](https://www.npmjs.org/package/iconv-lite#readme) +module. + +#### entity.too.large + +This error will occur when the `limit` option is specified, but the stream has +an entity that is larger. + +#### request.aborted + +This error will occur when the request stream is aborted by the client before +reading the body has finished. + +#### request.size.invalid + +This error will occur when the `length` option is specified, but the stream has +emitted more bytes. + +#### stream.encoding.set + +This error will occur when the given stream has an encoding set on it, making it +a decoded stream. The stream should not have an encoding set and is expected to +emit `Buffer` objects. + +#### stream.not.readable + +This error will occur when the given stream is not readable. + +## Examples + +### Simple Express example + +```js +var contentType = require('content-type') +var express = require('express') +var getRawBody = require('raw-body') + +var app = express() + +app.use(function (req, res, next) { + getRawBody(req, { + length: req.headers['content-length'], + limit: '1mb', + encoding: contentType.parse(req).parameters.charset + }, function (err, string) { + if (err) return next(err) + req.text = string + next() + }) +}) + +// now access req.text +``` + +### Simple Koa example + +```js +var contentType = require('content-type') +var getRawBody = require('raw-body') +var koa = require('koa') + +var app = koa() + +app.use(function * (next) { + this.text = yield getRawBody(this.req, { + length: this.req.headers['content-length'], + limit: '1mb', + encoding: contentType.parse(this.req).parameters.charset + }) + yield next +}) + +// now access this.text +``` + +### Using as a promise + +To use this library as a promise, simply omit the `callback` and a promise is +returned, provided that a global `Promise` is defined. + +```js +var getRawBody = require('raw-body') +var http = require('http') + +var server = http.createServer(function (req, res) { + getRawBody(req) + .then(function (buf) { + res.statusCode = 200 + res.end(buf.length + ' bytes submitted') + }) + .catch(function (err) { + res.statusCode = 500 + res.end(err.message) + }) +}) + +server.listen(3000) +``` + +### Using with TypeScript + +```ts +import * as getRawBody from 'raw-body'; +import * as http from 'http'; + +const server = http.createServer((req, res) => { + getRawBody(req) + .then((buf) => { + res.statusCode = 200; + res.end(buf.length + ' bytes submitted'); + }) + .catch((err) => { + res.statusCode = err.statusCode; + res.end(err.message); + }); +}); + +server.listen(3000); +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/raw-body.svg +[npm-url]: https://npmjs.org/package/raw-body +[node-version-image]: https://img.shields.io/node/v/raw-body.svg +[node-version-url]: https://nodejs.org/en/download/ +[coveralls-image]: https://img.shields.io/coveralls/stream-utils/raw-body/master.svg +[coveralls-url]: https://coveralls.io/r/stream-utils/raw-body?branch=master +[downloads-image]: https://img.shields.io/npm/dm/raw-body.svg +[downloads-url]: https://npmjs.org/package/raw-body +[github-actions-ci-image]: https://img.shields.io/github/actions/workflow/status/stream-utils/raw-body/ci.yml?branch=master&label=ci +[github-actions-ci-url]: https://github.com/jshttp/stream-utils/raw-body?query=workflow%3Aci diff --git a/bff/node_modules/raw-body/index.d.ts b/bff/node_modules/raw-body/index.d.ts new file mode 100644 index 0000000..b504611 --- /dev/null +++ b/bff/node_modules/raw-body/index.d.ts @@ -0,0 +1,85 @@ +declare namespace getRawBody { + export type Encoding = string | true; + + export interface Options { + /** + * The expected length of the stream. + */ + length?: number | string | null; + /** + * The byte limit of the body. This is the number of bytes or any string + * format supported by `bytes`, for example `1000`, `'500kb'` or `'3mb'`. + */ + limit?: number | string | null; + /** + * The encoding to use to decode the body into a string. By default, a + * `Buffer` instance will be returned when no encoding is specified. Most + * likely, you want `utf-8`, so setting encoding to `true` will decode as + * `utf-8`. You can use any type of encoding supported by `iconv-lite`. + */ + encoding?: Encoding | null; + } + + export interface RawBodyError extends Error { + /** + * The limit in bytes. + */ + limit?: number; + /** + * The expected length of the stream. + */ + length?: number; + expected?: number; + /** + * The received bytes. + */ + received?: number; + /** + * The encoding. + */ + encoding?: string; + /** + * The corresponding status code for the error. + */ + status: number; + statusCode: number; + /** + * The error type. + */ + type: string; + } +} + +/** + * Gets the entire buffer of a stream either as a `Buffer` or a string. + * Validates the stream's length against an expected length and maximum + * limit. Ideal for parsing request bodies. + */ +declare function getRawBody( + stream: NodeJS.ReadableStream, + callback: (err: getRawBody.RawBodyError, body: Buffer) => void +): void; + +declare function getRawBody( + stream: NodeJS.ReadableStream, + options: (getRawBody.Options & { encoding: getRawBody.Encoding }) | getRawBody.Encoding, + callback: (err: getRawBody.RawBodyError, body: string) => void +): void; + +declare function getRawBody( + stream: NodeJS.ReadableStream, + options: getRawBody.Options, + callback: (err: getRawBody.RawBodyError, body: Buffer) => void +): void; + +declare function getRawBody( + stream: NodeJS.ReadableStream, + options: (getRawBody.Options & { encoding: getRawBody.Encoding }) | getRawBody.Encoding +): Promise; + +declare function getRawBody( + stream: NodeJS.ReadableStream, + options?: getRawBody.Options +): Promise; + +export = getRawBody; diff --git a/bff/node_modules/raw-body/index.js b/bff/node_modules/raw-body/index.js new file mode 100644 index 0000000..9cdcd12 --- /dev/null +++ b/bff/node_modules/raw-body/index.js @@ -0,0 +1,336 @@ +/*! + * raw-body + * Copyright(c) 2013-2014 Jonathan Ong + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var asyncHooks = tryRequireAsyncHooks() +var bytes = require('bytes') +var createError = require('http-errors') +var iconv = require('iconv-lite') +var unpipe = require('unpipe') + +/** + * Module exports. + * @public + */ + +module.exports = getRawBody + +/** + * Module variables. + * @private + */ + +var ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: / + +/** + * Get the decoder for a given encoding. + * + * @param {string} encoding + * @private + */ + +function getDecoder (encoding) { + if (!encoding) return null + + try { + return iconv.getDecoder(encoding) + } catch (e) { + // error getting decoder + if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e + + // the encoding was not found + throw createError(415, 'specified encoding unsupported', { + encoding: encoding, + type: 'encoding.unsupported' + }) + } +} + +/** + * Get the raw body of a stream (typically HTTP). + * + * @param {object} stream + * @param {object|string|function} [options] + * @param {function} [callback] + * @public + */ + +function getRawBody (stream, options, callback) { + var done = callback + var opts = options || {} + + // light validation + if (stream === undefined) { + throw new TypeError('argument stream is required') + } else if (typeof stream !== 'object' || stream === null || typeof stream.on !== 'function') { + throw new TypeError('argument stream must be a stream') + } + + if (options === true || typeof options === 'string') { + // short cut for encoding + opts = { + encoding: options + } + } + + if (typeof options === 'function') { + done = options + opts = {} + } + + // validate callback is a function, if provided + if (done !== undefined && typeof done !== 'function') { + throw new TypeError('argument callback must be a function') + } + + // require the callback without promises + if (!done && !global.Promise) { + throw new TypeError('argument callback is required') + } + + // get encoding + var encoding = opts.encoding !== true + ? opts.encoding + : 'utf-8' + + // convert the limit to an integer + var limit = bytes.parse(opts.limit) + + // convert the expected length to an integer + var length = opts.length != null && !isNaN(opts.length) + ? parseInt(opts.length, 10) + : null + + if (done) { + // classic callback style + return readStream(stream, encoding, length, limit, wrap(done)) + } + + return new Promise(function executor (resolve, reject) { + readStream(stream, encoding, length, limit, function onRead (err, buf) { + if (err) return reject(err) + resolve(buf) + }) + }) +} + +/** + * Halt a stream. + * + * @param {Object} stream + * @private + */ + +function halt (stream) { + // unpipe everything from the stream + unpipe(stream) + + // pause stream + if (typeof stream.pause === 'function') { + stream.pause() + } +} + +/** + * Read the data from the stream. + * + * @param {object} stream + * @param {string} encoding + * @param {number} length + * @param {number} limit + * @param {function} callback + * @public + */ + +function readStream (stream, encoding, length, limit, callback) { + var complete = false + var sync = true + + // check the length and limit options. + // note: we intentionally leave the stream paused, + // so users should handle the stream themselves. + if (limit !== null && length !== null && length > limit) { + return done(createError(413, 'request entity too large', { + expected: length, + length: length, + limit: limit, + type: 'entity.too.large' + })) + } + + // streams1: assert request encoding is buffer. + // streams2+: assert the stream encoding is buffer. + // stream._decoder: streams1 + // state.encoding: streams2 + // state.decoder: streams2, specifically < 0.10.6 + var state = stream._readableState + if (stream._decoder || (state && (state.encoding || state.decoder))) { + // developer error + return done(createError(500, 'stream encoding should not be set', { + type: 'stream.encoding.set' + })) + } + + if (typeof stream.readable !== 'undefined' && !stream.readable) { + return done(createError(500, 'stream is not readable', { + type: 'stream.not.readable' + })) + } + + var received = 0 + var decoder + + try { + decoder = getDecoder(encoding) + } catch (err) { + return done(err) + } + + var buffer = decoder + ? '' + : [] + + // attach listeners + stream.on('aborted', onAborted) + stream.on('close', cleanup) + stream.on('data', onData) + stream.on('end', onEnd) + stream.on('error', onEnd) + + // mark sync section complete + sync = false + + function done () { + var args = new Array(arguments.length) + + // copy arguments + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + + // mark complete + complete = true + + if (sync) { + process.nextTick(invokeCallback) + } else { + invokeCallback() + } + + function invokeCallback () { + cleanup() + + if (args[0]) { + // halt the stream on error + halt(stream) + } + + callback.apply(null, args) + } + } + + function onAborted () { + if (complete) return + + done(createError(400, 'request aborted', { + code: 'ECONNABORTED', + expected: length, + length: length, + received: received, + type: 'request.aborted' + })) + } + + function onData (chunk) { + if (complete) return + + received += chunk.length + + if (limit !== null && received > limit) { + done(createError(413, 'request entity too large', { + limit: limit, + received: received, + type: 'entity.too.large' + })) + } else if (decoder) { + buffer += decoder.write(chunk) + } else { + buffer.push(chunk) + } + } + + function onEnd (err) { + if (complete) return + if (err) return done(err) + + if (length !== null && received !== length) { + done(createError(400, 'request size did not match content length', { + expected: length, + length: length, + received: received, + type: 'request.size.invalid' + })) + } else { + var string = decoder + ? buffer + (decoder.end() || '') + : Buffer.concat(buffer) + done(null, string) + } + } + + function cleanup () { + buffer = null + + stream.removeListener('aborted', onAborted) + stream.removeListener('data', onData) + stream.removeListener('end', onEnd) + stream.removeListener('error', onEnd) + stream.removeListener('close', cleanup) + } +} + +/** + * Try to require async_hooks + * @private + */ + +function tryRequireAsyncHooks () { + try { + return require('async_hooks') + } catch (e) { + return {} + } +} + +/** + * Wrap function with async resource, if possible. + * AsyncResource.bind static method backported. + * @private + */ + +function wrap (fn) { + var res + + // create anonymous resource + if (asyncHooks.AsyncResource) { + res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn') + } + + // incompatible node.js + if (!res || !res.runInAsyncScope) { + return fn + } + + // return bound function + return res.runInAsyncScope.bind(res, fn, null) +} diff --git a/bff/node_modules/raw-body/package.json b/bff/node_modules/raw-body/package.json new file mode 100644 index 0000000..eab819f --- /dev/null +++ b/bff/node_modules/raw-body/package.json @@ -0,0 +1,46 @@ +{ + "name": "raw-body", + "description": "Get and validate the raw body of a readable stream.", + "version": "3.0.2", + "author": "Jonathan Ong (http://jongleberry.com)", + "contributors": [ + "Douglas Christopher Wilson ", + "Raynos " + ], + "license": "MIT", + "repository": "stream-utils/raw-body", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "devDependencies": { + "@stylistic/eslint-plugin": "^5.1.0", + "@stylistic/eslint-plugin-js": "^4.1.0", + "bluebird": "3.7.2", + "eslint": "^9.0.0", + "mocha": "10.7.0", + "neostandard": "^0.12.0", + "nyc": "17.0.0", + "readable-stream": "2.3.7", + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.10" + }, + "files": [ + "LICENSE", + "README.md", + "index.d.ts", + "index.js" + ], + "scripts": { + "lint": "eslint", + "lint:fix": "eslint --fix", + "test": "mocha --trace-deprecation --reporter spec --check-leaks test/", + "test:ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test:cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/readable-stream/.travis.yml b/bff/node_modules/readable-stream/.travis.yml new file mode 100644 index 0000000..f62cdac --- /dev/null +++ b/bff/node_modules/readable-stream/.travis.yml @@ -0,0 +1,34 @@ +sudo: false +language: node_js +before_install: + - (test $NPM_LEGACY && npm install -g npm@2 && npm install -g npm@3) || true +notifications: + email: false +matrix: + fast_finish: true + include: + - node_js: '0.8' + env: NPM_LEGACY=true + - node_js: '0.10' + env: NPM_LEGACY=true + - node_js: '0.11' + env: NPM_LEGACY=true + - node_js: '0.12' + env: NPM_LEGACY=true + - node_js: 1 + env: NPM_LEGACY=true + - node_js: 2 + env: NPM_LEGACY=true + - node_js: 3 + env: NPM_LEGACY=true + - node_js: 4 + - node_js: 5 + - node_js: 6 + - node_js: 7 + - node_js: 8 + - node_js: 9 +script: "npm run test" +env: + global: + - secure: rE2Vvo7vnjabYNULNyLFxOyt98BoJexDqsiOnfiD6kLYYsiQGfr/sbZkPMOFm9qfQG7pjqx+zZWZjGSswhTt+626C0t/njXqug7Yps4c3dFblzGfreQHp7wNX5TFsvrxd6dAowVasMp61sJcRnB2w8cUzoe3RAYUDHyiHktwqMc= + - secure: g9YINaKAdMatsJ28G9jCGbSaguXCyxSTy+pBO6Ch0Cf57ZLOTka3HqDj8p3nV28LUIHZ3ut5WO43CeYKwt4AUtLpBS3a0dndHdY6D83uY6b2qh5hXlrcbeQTq2cvw2y95F7hm4D1kwrgZ7ViqaKggRcEupAL69YbJnxeUDKWEdI= diff --git a/bff/node_modules/readable-stream/CONTRIBUTING.md b/bff/node_modules/readable-stream/CONTRIBUTING.md new file mode 100644 index 0000000..f478d58 --- /dev/null +++ b/bff/node_modules/readable-stream/CONTRIBUTING.md @@ -0,0 +1,38 @@ +# Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +* (a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +* (b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +* (c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +* (d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. + +## Moderation Policy + +The [Node.js Moderation Policy] applies to this WG. + +## Code of Conduct + +The [Node.js Code of Conduct][] applies to this WG. + +[Node.js Code of Conduct]: +https://github.com/nodejs/node/blob/master/CODE_OF_CONDUCT.md +[Node.js Moderation Policy]: +https://github.com/nodejs/TSC/blob/master/Moderation-Policy.md diff --git a/bff/node_modules/readable-stream/GOVERNANCE.md b/bff/node_modules/readable-stream/GOVERNANCE.md new file mode 100644 index 0000000..16ffb93 --- /dev/null +++ b/bff/node_modules/readable-stream/GOVERNANCE.md @@ -0,0 +1,136 @@ +### Streams Working Group + +The Node.js Streams is jointly governed by a Working Group +(WG) +that is responsible for high-level guidance of the project. + +The WG has final authority over this project including: + +* Technical direction +* Project governance and process (including this policy) +* Contribution policy +* GitHub repository hosting +* Conduct guidelines +* Maintaining the list of additional Collaborators + +For the current list of WG members, see the project +[README.md](./README.md#current-project-team-members). + +### Collaborators + +The readable-stream GitHub repository is +maintained by the WG and additional Collaborators who are added by the +WG on an ongoing basis. + +Individuals making significant and valuable contributions are made +Collaborators and given commit-access to the project. These +individuals are identified by the WG and their addition as +Collaborators is discussed during the WG meeting. + +_Note:_ If you make a significant contribution and are not considered +for commit-access log an issue or contact a WG member directly and it +will be brought up in the next WG meeting. + +Modifications of the contents of the readable-stream repository are +made on +a collaborative basis. Anybody with a GitHub account may propose a +modification via pull request and it will be considered by the project +Collaborators. All pull requests must be reviewed and accepted by a +Collaborator with sufficient expertise who is able to take full +responsibility for the change. In the case of pull requests proposed +by an existing Collaborator, an additional Collaborator is required +for sign-off. Consensus should be sought if additional Collaborators +participate and there is disagreement around a particular +modification. See _Consensus Seeking Process_ below for further detail +on the consensus model used for governance. + +Collaborators may opt to elevate significant or controversial +modifications, or modifications that have not found consensus to the +WG for discussion by assigning the ***WG-agenda*** tag to a pull +request or issue. The WG should serve as the final arbiter where +required. + +For the current list of Collaborators, see the project +[README.md](./README.md#members). + +### WG Membership + +WG seats are not time-limited. There is no fixed size of the WG. +However, the expected target is between 6 and 12, to ensure adequate +coverage of important areas of expertise, balanced with the ability to +make decisions efficiently. + +There is no specific set of requirements or qualifications for WG +membership beyond these rules. + +The WG may add additional members to the WG by unanimous consensus. + +A WG member may be removed from the WG by voluntary resignation, or by +unanimous consensus of all other WG members. + +Changes to WG membership should be posted in the agenda, and may be +suggested as any other agenda item (see "WG Meetings" below). + +If an addition or removal is proposed during a meeting, and the full +WG is not in attendance to participate, then the addition or removal +is added to the agenda for the subsequent meeting. This is to ensure +that all members are given the opportunity to participate in all +membership decisions. If a WG member is unable to attend a meeting +where a planned membership decision is being made, then their consent +is assumed. + +No more than 1/3 of the WG members may be affiliated with the same +employer. If removal or resignation of a WG member, or a change of +employment by a WG member, creates a situation where more than 1/3 of +the WG membership shares an employer, then the situation must be +immediately remedied by the resignation or removal of one or more WG +members affiliated with the over-represented employer(s). + +### WG Meetings + +The WG meets occasionally on a Google Hangout On Air. A designated moderator +approved by the WG runs the meeting. Each meeting should be +published to YouTube. + +Items are added to the WG agenda that are considered contentious or +are modifications of governance, contribution policy, WG membership, +or release process. + +The intention of the agenda is not to approve or review all patches; +that should happen continuously on GitHub and be handled by the larger +group of Collaborators. + +Any community member or contributor can ask that something be added to +the next meeting's agenda by logging a GitHub Issue. Any Collaborator, +WG member or the moderator can add the item to the agenda by adding +the ***WG-agenda*** tag to the issue. + +Prior to each WG meeting the moderator will share the Agenda with +members of the WG. WG members can add any items they like to the +agenda at the beginning of each meeting. The moderator and the WG +cannot veto or remove items. + +The WG may invite persons or representatives from certain projects to +participate in a non-voting capacity. + +The moderator is responsible for summarizing the discussion of each +agenda item and sends it as a pull request after the meeting. + +### Consensus Seeking Process + +The WG follows a +[Consensus +Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making) +decision-making model. + +When an agenda item has appeared to reach a consensus the moderator +will ask "Does anyone object?" as a final call for dissent from the +consensus. + +If an agenda item cannot reach a consensus a WG member can call for +either a closing vote or a vote to table the issue to the next +meeting. The call for a vote must be seconded by a majority of the WG +or else the discussion will continue. Simple majority wins. + +Note that changes to WG membership require a majority consensus. See +"WG Membership" above. diff --git a/bff/node_modules/readable-stream/LICENSE b/bff/node_modules/readable-stream/LICENSE new file mode 100644 index 0000000..2873b3b --- /dev/null +++ b/bff/node_modules/readable-stream/LICENSE @@ -0,0 +1,47 @@ +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" diff --git a/bff/node_modules/readable-stream/README.md b/bff/node_modules/readable-stream/README.md new file mode 100644 index 0000000..f1c5a93 --- /dev/null +++ b/bff/node_modules/readable-stream/README.md @@ -0,0 +1,58 @@ +# readable-stream + +***Node-core v8.17.0 streams for userland*** [![Build Status](https://travis-ci.org/nodejs/readable-stream.svg?branch=master)](https://travis-ci.org/nodejs/readable-stream) + + +[![NPM](https://nodei.co/npm/readable-stream.png?downloads=true&downloadRank=true)](https://nodei.co/npm/readable-stream/) +[![NPM](https://nodei.co/npm-dl/readable-stream.png?&months=6&height=3)](https://nodei.co/npm/readable-stream/) + + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/readable-stream.svg)](https://saucelabs.com/u/readable-stream) + +```bash +npm install --save readable-stream +``` + +***Node-core streams for userland*** + +This package is a mirror of the Streams2 and Streams3 implementations in +Node-core. + +Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.17.0/docs/api/stream.html). + +If you want to guarantee a stable streams base, regardless of what version of +Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). + +As of version 2.0.0 **readable-stream** uses semantic versioning. + +# Streams Working Group + +`readable-stream` is maintained by the Streams Working Group, which +oversees the development and maintenance of the Streams API within +Node.js. The responsibilities of the Streams Working Group include: + +* Addressing stream issues on the Node.js issue tracker. +* Authoring and editing stream documentation within the Node.js project. +* Reviewing changes to stream subclasses within the Node.js project. +* Redirecting changes to streams from the Node.js project to this + project. +* Assisting in the implementation of stream providers within Node.js. +* Recommending versions of `readable-stream` to be included in Node.js. +* Messaging about the future of streams to give the community advance + notice of changes. + + +## Team Members + +* **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com> + - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B +* **Calvin Metcalf** ([@calvinmetcalf](https://github.com/calvinmetcalf)) <calvin.metcalf@gmail.com> + - Release GPG key: F3EF5F62A87FC27A22E643F714CE4FF5015AA242 +* **Rod Vagg** ([@rvagg](https://github.com/rvagg)) <rod@vagg.org> + - Release GPG key: DD8F2338BAE7501E3DD5AC78C273792F7D83545D +* **Sam Newman** ([@sonewman](https://github.com/sonewman)) <newmansam@outlook.com> +* **Mathias Buus** ([@mafintosh](https://github.com/mafintosh)) <mathiasbuus@gmail.com> +* **Domenic Denicola** ([@domenic](https://github.com/domenic)) <d@domenic.me> +* **Matteo Collina** ([@mcollina](https://github.com/mcollina)) <matteo.collina@gmail.com> + - Release GPG key: 3ABC01543F22DD2239285CDD818674489FBC127E +* **Irina Shestak** ([@lrlna](https://github.com/lrlna)) <shestak.irina@gmail.com> diff --git a/bff/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md b/bff/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md new file mode 100644 index 0000000..83275f1 --- /dev/null +++ b/bff/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md @@ -0,0 +1,60 @@ +# streams WG Meeting 2015-01-30 + +## Links + +* **Google Hangouts Video**: http://www.youtube.com/watch?v=I9nDOSGfwZg +* **GitHub Issue**: https://github.com/iojs/readable-stream/issues/106 +* **Original Minutes Google Doc**: https://docs.google.com/document/d/17aTgLnjMXIrfjgNaTUnHQO7m3xgzHR2VXBTmi03Qii4/ + +## Agenda + +Extracted from https://github.com/iojs/readable-stream/labels/wg-agenda prior to meeting. + +* adopt a charter [#105](https://github.com/iojs/readable-stream/issues/105) +* release and versioning strategy [#101](https://github.com/iojs/readable-stream/issues/101) +* simpler stream creation [#102](https://github.com/iojs/readable-stream/issues/102) +* proposal: deprecate implicit flowing of streams [#99](https://github.com/iojs/readable-stream/issues/99) + +## Minutes + +### adopt a charter + +* group: +1's all around + +### What versioning scheme should be adopted? +* group: +1’s 3.0.0 +* domenic+group: pulling in patches from other sources where appropriate +* mikeal: version independently, suggesting versions for io.js +* mikeal+domenic: work with TC to notify in advance of changes +simpler stream creation + +### streamline creation of streams +* sam: streamline creation of streams +* domenic: nice simple solution posted + but, we lose the opportunity to change the model + may not be backwards incompatible (double check keys) + + **action item:** domenic will check + +### remove implicit flowing of streams on(‘data’) +* add isFlowing / isPaused +* mikeal: worrying that we’re documenting polyfill methods – confuses users +* domenic: more reflective API is probably good, with warning labels for users +* new section for mad scientists (reflective stream access) +* calvin: name the “third state” +* mikeal: maybe borrow the name from whatwg? +* domenic: we’re missing the “third state” +* consensus: kind of difficult to name the third state +* mikeal: figure out differences in states / compat +* mathias: always flow on data – eliminates third state + * explore what it breaks + +**action items:** +* ask isaac for ability to list packages by what public io.js APIs they use (esp. Stream) +* ask rod/build for infrastructure +* **chris**: explore the “flow on data” approach +* add isPaused/isFlowing +* add new docs section +* move isPaused to that section + + diff --git a/bff/node_modules/readable-stream/duplex-browser.js b/bff/node_modules/readable-stream/duplex-browser.js new file mode 100644 index 0000000..f8b2db8 --- /dev/null +++ b/bff/node_modules/readable-stream/duplex-browser.js @@ -0,0 +1 @@ +module.exports = require('./lib/_stream_duplex.js'); diff --git a/bff/node_modules/readable-stream/duplex.js b/bff/node_modules/readable-stream/duplex.js new file mode 100644 index 0000000..46924cb --- /dev/null +++ b/bff/node_modules/readable-stream/duplex.js @@ -0,0 +1 @@ +module.exports = require('./readable').Duplex diff --git a/bff/node_modules/readable-stream/lib/_stream_duplex.js b/bff/node_modules/readable-stream/lib/_stream_duplex.js new file mode 100644 index 0000000..57003c3 --- /dev/null +++ b/bff/node_modules/readable-stream/lib/_stream_duplex.js @@ -0,0 +1,131 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +var Readable = require('./_stream_readable'); +var Writable = require('./_stream_writable'); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; \ No newline at end of file diff --git a/bff/node_modules/readable-stream/lib/_stream_passthrough.js b/bff/node_modules/readable-stream/lib/_stream_passthrough.js new file mode 100644 index 0000000..612edb4 --- /dev/null +++ b/bff/node_modules/readable-stream/lib/_stream_passthrough.js @@ -0,0 +1,47 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a passthrough stream. +// basically just the most minimal sort of Transform stream. +// Every written chunk gets output as-is. + +'use strict'; + +module.exports = PassThrough; + +var Transform = require('./_stream_transform'); + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +util.inherits(PassThrough, Transform); + +function PassThrough(options) { + if (!(this instanceof PassThrough)) return new PassThrough(options); + + Transform.call(this, options); +} + +PassThrough.prototype._transform = function (chunk, encoding, cb) { + cb(null, chunk); +}; \ No newline at end of file diff --git a/bff/node_modules/readable-stream/lib/_stream_readable.js b/bff/node_modules/readable-stream/lib/_stream_readable.js new file mode 100644 index 0000000..3af95cb --- /dev/null +++ b/bff/node_modules/readable-stream/lib/_stream_readable.js @@ -0,0 +1,1019 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +module.exports = Readable; + +/**/ +var isArray = require('isarray'); +/**/ + +/**/ +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = require('events').EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ +var Stream = require('./internal/streams/stream'); +/**/ + +/**/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +/**/ +var debugUtil = require('util'); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ + +var BufferList = require('./internal/streams/BufferList'); +var destroyImpl = require('./internal/streams/destroy'); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', state.awaitDrain); + state.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, { hasUnpiped: false }); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} \ No newline at end of file diff --git a/bff/node_modules/readable-stream/lib/_stream_transform.js b/bff/node_modules/readable-stream/lib/_stream_transform.js new file mode 100644 index 0000000..fcfc105 --- /dev/null +++ b/bff/node_modules/readable-stream/lib/_stream_transform.js @@ -0,0 +1,214 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + +'use strict'; + +module.exports = Transform; + +var Duplex = require('./_stream_duplex'); + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +util.inherits(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + + cb(er); + + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} \ No newline at end of file diff --git a/bff/node_modules/readable-stream/lib/_stream_writable.js b/bff/node_modules/readable-stream/lib/_stream_writable.js new file mode 100644 index 0000000..e1e897f --- /dev/null +++ b/bff/node_modules/readable-stream/lib/_stream_writable.js @@ -0,0 +1,685 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +module.exports = Writable; + +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/**/ + +/**/ +var Duplex; +/**/ + +Writable.WritableState = WritableState; + +/**/ +var util = Object.create(require('core-util-is')); +util.inherits = require('inherits'); +/**/ + +/**/ +var internalUtil = { + deprecate: require('util-deprecate') +}; +/**/ + +/**/ +var Stream = require('./internal/streams/stream'); +/**/ + +/**/ + +var Buffer = require('safe-buffer').Buffer; +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +var destroyImpl = require('./internal/streams/destroy'); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || require('./_stream_duplex'); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + + // reuse the free corkReq. + state.corkedRequestsFree.next = corkReq; +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; \ No newline at end of file diff --git a/bff/node_modules/readable-stream/lib/internal/streams/BufferList.js b/bff/node_modules/readable-stream/lib/internal/streams/BufferList.js new file mode 100644 index 0000000..5e08097 --- /dev/null +++ b/bff/node_modules/readable-stream/lib/internal/streams/BufferList.js @@ -0,0 +1,78 @@ +'use strict'; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Buffer = require('safe-buffer').Buffer; +var util = require('util'); + +function copyBuffer(src, target, offset) { + src.copy(target, offset); +} + +module.exports = function () { + function BufferList() { + _classCallCheck(this, BufferList); + + this.head = null; + this.tail = null; + this.length = 0; + } + + BufferList.prototype.push = function push(v) { + var entry = { data: v, next: null }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + }; + + BufferList.prototype.unshift = function unshift(v) { + var entry = { data: v, next: this.head }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + }; + + BufferList.prototype.shift = function shift() { + if (this.length === 0) return; + var ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + }; + + BufferList.prototype.clear = function clear() { + this.head = this.tail = null; + this.length = 0; + }; + + BufferList.prototype.join = function join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) { + ret += s + p.data; + }return ret; + }; + + BufferList.prototype.concat = function concat(n) { + if (this.length === 0) return Buffer.alloc(0); + var ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; + } + return ret; + }; + + return BufferList; +}(); + +if (util && util.inspect && util.inspect.custom) { + module.exports.prototype[util.inspect.custom] = function () { + var obj = util.inspect({ length: this.length }); + return this.constructor.name + ' ' + obj; + }; +} \ No newline at end of file diff --git a/bff/node_modules/readable-stream/lib/internal/streams/destroy.js b/bff/node_modules/readable-stream/lib/internal/streams/destroy.js new file mode 100644 index 0000000..85a8214 --- /dev/null +++ b/bff/node_modules/readable-stream/lib/internal/streams/destroy.js @@ -0,0 +1,84 @@ +'use strict'; + +/**/ + +var pna = require('process-nextick-args'); +/**/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err) { + if (!this._writableState) { + pna.nextTick(emitErrorNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, this, err); + } + } + + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + if (!_this._writableState) { + pna.nextTick(emitErrorNT, _this, err); + } else if (!_this._writableState.errorEmitted) { + _this._writableState.errorEmitted = true; + pna.nextTick(emitErrorNT, _this, err); + } + } else if (cb) { + cb(err); + } + }); + + return this; +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finalCalled = false; + this._writableState.prefinished = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; \ No newline at end of file diff --git a/bff/node_modules/readable-stream/lib/internal/streams/stream-browser.js b/bff/node_modules/readable-stream/lib/internal/streams/stream-browser.js new file mode 100644 index 0000000..9332a3f --- /dev/null +++ b/bff/node_modules/readable-stream/lib/internal/streams/stream-browser.js @@ -0,0 +1 @@ +module.exports = require('events').EventEmitter; diff --git a/bff/node_modules/readable-stream/lib/internal/streams/stream.js b/bff/node_modules/readable-stream/lib/internal/streams/stream.js new file mode 100644 index 0000000..ce2ad5b --- /dev/null +++ b/bff/node_modules/readable-stream/lib/internal/streams/stream.js @@ -0,0 +1 @@ +module.exports = require('stream'); diff --git a/bff/node_modules/readable-stream/node_modules/safe-buffer/LICENSE b/bff/node_modules/readable-stream/node_modules/safe-buffer/LICENSE new file mode 100644 index 0000000..0c068ce --- /dev/null +++ b/bff/node_modules/readable-stream/node_modules/safe-buffer/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/readable-stream/node_modules/safe-buffer/README.md b/bff/node_modules/readable-stream/node_modules/safe-buffer/README.md new file mode 100644 index 0000000..e9a81af --- /dev/null +++ b/bff/node_modules/readable-stream/node_modules/safe-buffer/README.md @@ -0,0 +1,584 @@ +# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg +[travis-url]: https://travis-ci.org/feross/safe-buffer +[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg +[npm-url]: https://npmjs.org/package/safe-buffer +[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg +[downloads-url]: https://npmjs.org/package/safe-buffer +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +#### Safer Node.js Buffer API + +**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`, +`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.** + +**Uses the built-in implementation when available.** + +## install + +``` +npm install safe-buffer +``` + +## usage + +The goal of this package is to provide a safe replacement for the node.js `Buffer`. + +It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to +the top of your node.js modules: + +```js +var Buffer = require('safe-buffer').Buffer + +// Existing buffer code will continue to work without issues: + +new Buffer('hey', 'utf8') +new Buffer([1, 2, 3], 'utf8') +new Buffer(obj) +new Buffer(16) // create an uninitialized buffer (potentially unsafe) + +// But you can use these new explicit APIs to make clear what you want: + +Buffer.from('hey', 'utf8') // convert from many types to a Buffer +Buffer.alloc(16) // create a zero-filled buffer (safe) +Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe) +``` + +## api + +### Class Method: Buffer.from(array) + + +* `array` {Array} + +Allocates a new `Buffer` using an `array` of octets. + +```js +const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]); + // creates a new Buffer containing ASCII bytes + // ['b','u','f','f','e','r'] +``` + +A `TypeError` will be thrown if `array` is not an `Array`. + +### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) + + +* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or + a `new ArrayBuffer()` +* `byteOffset` {Number} Default: `0` +* `length` {Number} Default: `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a `TypedArray` instance, +the newly created `Buffer` will share the same allocated memory as the +TypedArray. + +```js +const arr = new Uint16Array(2); +arr[0] = 5000; +arr[1] = 4000; + +const buf = Buffer.from(arr.buffer); // shares the memory with arr; + +console.log(buf); + // Prints: + +// changing the TypedArray changes the Buffer also +arr[1] = 6000; + +console.log(buf); + // Prints: +``` + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +```js +const ab = new ArrayBuffer(10); +const buf = Buffer.from(ab, 0, 2); +console.log(buf.length); + // Prints: 2 +``` + +A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`. + +### Class Method: Buffer.from(buffer) + + +* `buffer` {Buffer} + +Copies the passed `buffer` data onto a new `Buffer` instance. + +```js +const buf1 = Buffer.from('buffer'); +const buf2 = Buffer.from(buf1); + +buf1[0] = 0x61; +console.log(buf1.toString()); + // 'auffer' +console.log(buf2.toString()); + // 'buffer' (copy is not changed) +``` + +A `TypeError` will be thrown if `buffer` is not a `Buffer`. + +### Class Method: Buffer.from(str[, encoding]) + + +* `str` {String} String to encode. +* `encoding` {String} Encoding to use, Default: `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `str`. If +provided, the `encoding` parameter identifies the character encoding. +If not provided, `encoding` defaults to `'utf8'`. + +```js +const buf1 = Buffer.from('this is a tést'); +console.log(buf1.toString()); + // prints: this is a tést +console.log(buf1.toString('ascii')); + // prints: this is a tC)st + +const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); +console.log(buf2.toString()); + // prints: this is a tést +``` + +A `TypeError` will be thrown if `str` is not a string. + +### Class Method: Buffer.alloc(size[, fill[, encoding]]) + + +* `size` {Number} +* `fill` {Value} Default: `undefined` +* `encoding` {String} Default: `utf8` + +Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the +`Buffer` will be *zero-filled*. + +```js +const buf = Buffer.alloc(5); +console.log(buf); + // +``` + +The `size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +If `fill` is specified, the allocated `Buffer` will be initialized by calling +`buf.fill(fill)`. See [`buf.fill()`][] for more information. + +```js +const buf = Buffer.alloc(5, 'a'); +console.log(buf); + // +``` + +If both `fill` and `encoding` are specified, the allocated `Buffer` will be +initialized by calling `buf.fill(fill, encoding)`. For example: + +```js +const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); +console.log(buf); + // +``` + +Calling `Buffer.alloc(size)` can be significantly slower than the alternative +`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance +contents will *never contain sensitive data*. + +A `TypeError` will be thrown if `size` is not a number. + +### Class Method: Buffer.allocUnsafe(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must +be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit +architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is +thrown. A zero-length Buffer will be created if a `size` less than or equal to +0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +```js +const buf = Buffer.allocUnsafe(5); +console.log(buf); + // + // (octets will be different, every time) +buf.fill(0); +console.log(buf); + // +``` + +A `TypeError` will be thrown if `size` is not a number. + +Note that the `Buffer` module pre-allocates an internal `Buffer` instance of +size `Buffer.poolSize` that is used as a pool for the fast allocation of new +`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated +`new Buffer(size)` constructor) only when `size` is less than or equal to +`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default +value of `Buffer.poolSize` is `8192` but can be modified. + +Use of this pre-allocated internal memory pool is a key difference between +calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. +Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer +pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal +Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The +difference is subtle but can be important when an application requires the +additional performance that `Buffer.allocUnsafe(size)` provides. + +### Class Method: Buffer.allocUnsafeSlow(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The +`size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, +allocations under 4KB are, by default, sliced from a single pre-allocated +`Buffer`. This allows applications to avoid the garbage collection overhead of +creating many individually allocated Buffers. This approach improves both +performance and memory usage by eliminating the need to track and cleanup as +many `Persistent` objects. + +However, in the case where a developer may need to retain a small chunk of +memory from a pool for an indeterminate amount of time, it may be appropriate +to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then +copy out the relevant bits. + +```js +// need to keep around a few small chunks of memory +const store = []; + +socket.on('readable', () => { + const data = socket.read(); + // allocate for retained data + const sb = Buffer.allocUnsafeSlow(10); + // copy the data into the new allocation + data.copy(sb, 0, 0, 10); + store.push(sb); +}); +``` + +Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after* +a developer has observed undue memory retention in their applications. + +A `TypeError` will be thrown if `size` is not a number. + +### All the Rest + +The rest of the `Buffer` API is exactly the same as in node.js. +[See the docs](https://nodejs.org/api/buffer.html). + + +## Related links + +- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660) +- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4) + +## Why is `Buffer` unsafe? + +Today, the node.js `Buffer` constructor is overloaded to handle many different argument +types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), +`ArrayBuffer`, and also `Number`. + +The API is optimized for convenience: you can throw any type at it, and it will try to do +what you want. + +Because the Buffer constructor is so powerful, you often see code like this: + +```js +// Convert UTF-8 strings to hex +function toHex (str) { + return new Buffer(str).toString('hex') +} +``` + +***But what happens if `toHex` is called with a `Number` argument?*** + +### Remote Memory Disclosure + +If an attacker can make your program call the `Buffer` constructor with a `Number` +argument, then they can make it allocate uninitialized memory from the node.js process. +This could potentially disclose TLS private keys, user data, or database passwords. + +When the `Buffer` constructor is passed a `Number` argument, it returns an +**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like +this, you **MUST** overwrite the contents before returning it to the user. + +From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size): + +> `new Buffer(size)` +> +> - `size` Number +> +> The underlying memory for `Buffer` instances created in this way is not initialized. +> **The contents of a newly created `Buffer` are unknown and could contain sensitive +> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes. + +(Emphasis our own.) + +Whenever the programmer intended to create an uninitialized `Buffer` you often see code +like this: + +```js +var buf = new Buffer(16) + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### Would this ever be a problem in real code? + +Yes. It's surprisingly common to forget to check the type of your variables in a +dynamically-typed language like JavaScript. + +Usually the consequences of assuming the wrong type is that your program crashes with an +uncaught exception. But the failure mode for forgetting to check the type of arguments to +the `Buffer` constructor is more catastrophic. + +Here's an example of a vulnerable service that takes a JSON payload and converts it to +hex: + +```js +// Take a JSON payload {str: "some string"} and convert it to hex +var server = http.createServer(function (req, res) { + var data = '' + req.setEncoding('utf8') + req.on('data', function (chunk) { + data += chunk + }) + req.on('end', function () { + var body = JSON.parse(data) + res.end(new Buffer(body.str).toString('hex')) + }) +}) + +server.listen(8080) +``` + +In this example, an http client just has to send: + +```json +{ + "str": 1000 +} +``` + +and it will get back 1,000 bytes of uninitialized memory from the server. + +This is a very serious bug. It's similar in severity to the +[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process +memory by remote attackers. + + +### Which real-world packages were vulnerable? + +#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht) + +[Mathias Buus](https://github.com/mafintosh) and I +([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages, +[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow +anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get +them to reveal 20 bytes at a time of uninitialized memory from the node.js process. + +Here's +[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) +that fixed it. We released a new fixed version, created a +[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all +vulnerable versions on npm so users will get a warning to upgrade to a newer version. + +#### [`ws`](https://www.npmjs.com/package/ws) + +That got us wondering if there were other vulnerable packages. Sure enough, within a short +period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the +most popular WebSocket implementation in node.js. + +If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as +expected, then uninitialized server memory would be disclosed to the remote peer. + +These were the vulnerable methods: + +```js +socket.send(number) +socket.ping(number) +socket.pong(number) +``` + +Here's a vulnerable socket server with some echo functionality: + +```js +server.on('connection', function (socket) { + socket.on('message', function (message) { + message = JSON.parse(message) + if (message.type === 'echo') { + socket.send(message.data) // send back the user's message + } + }) +}) +``` + +`socket.send(number)` called on the server, will disclose server memory. + +Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue +was fixed, with a more detailed explanation. Props to +[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the +[Node Security Project disclosure](https://nodesecurity.io/advisories/67). + + +### What's the solution? + +It's important that node.js offers a fast way to get memory otherwise performance-critical +applications would needlessly get a lot slower. + +But we need a better way to *signal our intent* as programmers. **When we want +uninitialized memory, we should request it explicitly.** + +Sensitive functionality should not be packed into a developer-friendly API that loosely +accepts many different types. This type of API encourages the lazy practice of passing +variables in without checking the type very carefully. + +#### A new API: `Buffer.allocUnsafe(number)` + +The functionality of creating buffers with uninitialized memory should be part of another +API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that +frequently gets user input of all sorts of different types passed into it. + +```js +var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory! + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### How do we fix node.js core? + +We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as +`semver-major`) which defends against one case: + +```js +var str = 16 +new Buffer(str, 'utf8') +``` + +In this situation, it's implied that the programmer intended the first argument to be a +string, since they passed an encoding as a second argument. Today, node.js will allocate +uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not +what the programmer intended. + +But this is only a partial solution, since if the programmer does `new Buffer(variable)` +(without an `encoding` parameter) there's no way to know what they intended. If `variable` +is sometimes a number, then uninitialized memory will sometimes be returned. + +### What's the real long-term fix? + +We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when +we need uninitialized memory. But that would break 1000s of packages. + +~~We believe the best solution is to:~~ + +~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~ + +~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~ + +#### Update + +We now support adding three new APIs: + +- `Buffer.from(value)` - convert from any type to a buffer +- `Buffer.alloc(size)` - create a zero-filled buffer +- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size + +This solves the core problem that affected `ws` and `bittorrent-dht` which is +`Buffer(variable)` getting tricked into taking a number argument. + +This way, existing code continues working and the impact on the npm ecosystem will be +minimal. Over time, npm maintainers can migrate performance-critical code to use +`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`. + + +### Conclusion + +We think there's a serious design issue with the `Buffer` API as it exists today. It +promotes insecure software by putting high-risk functionality into a convenient API +with friendly "developer ergonomics". + +This wasn't merely a theoretical exercise because we found the issue in some of the +most popular npm packages. + +Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of +`buffer`. + +```js +var Buffer = require('safe-buffer').Buffer +``` + +Eventually, we hope that node.js core can switch to this new, safer behavior. We believe +the impact on the ecosystem would be minimal since it's not a breaking change. +Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while +older, insecure packages would magically become safe from this attack vector. + + +## links + +- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514) +- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67) +- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68) + + +## credit + +The original issues in `bittorrent-dht` +([disclosure](https://nodesecurity.io/advisories/68)) and +`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by +[Mathias Buus](https://github.com/mafintosh) and +[Feross Aboukhadijeh](http://feross.org/). + +Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues +and for his work running the [Node Security Project](https://nodesecurity.io/). + +Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and +auditing the code. + + +## license + +MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) diff --git a/bff/node_modules/readable-stream/node_modules/safe-buffer/index.d.ts b/bff/node_modules/readable-stream/node_modules/safe-buffer/index.d.ts new file mode 100644 index 0000000..e9fed80 --- /dev/null +++ b/bff/node_modules/readable-stream/node_modules/safe-buffer/index.d.ts @@ -0,0 +1,187 @@ +declare module "safe-buffer" { + export class Buffer { + length: number + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): { type: 'Buffer', data: any[] }; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + swap16(): Buffer; + swap32(): Buffer; + swap64(): Buffer; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; + + /** + * Allocates a new buffer containing the given {str}. + * + * @param str String to store in buffer. + * @param encoding encoding to use, optional. Default is 'utf8' + */ + constructor (str: string, encoding?: string); + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + */ + constructor (size: number); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: Uint8Array); + /** + * Produces a Buffer backed by the same allocated memory as + * the given {ArrayBuffer}. + * + * + * @param arrayBuffer The ArrayBuffer with which to share memory. + */ + constructor (arrayBuffer: ArrayBuffer); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: any[]); + /** + * Copies the passed {buffer} data onto a new {Buffer} instance. + * + * @param buffer The buffer to copy. + */ + constructor (buffer: Buffer); + prototype: Buffer; + /** + * Allocates a new Buffer using an {array} of octets. + * + * @param array + */ + static from(array: any[]): Buffer; + /** + * When passed a reference to the .buffer property of a TypedArray instance, + * the newly created Buffer will share the same allocated memory as the TypedArray. + * The optional {byteOffset} and {length} arguments specify a memory range + * within the {arrayBuffer} that will be shared by the Buffer. + * + * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() + * @param byteOffset + * @param length + */ + static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + /** + * Copies the passed {buffer} data onto a new Buffer instance. + * + * @param buffer + */ + static from(buffer: Buffer): Buffer; + /** + * Creates a new Buffer containing the given JavaScript string {str}. + * If provided, the {encoding} parameter identifies the character encoding. + * If not provided, {encoding} defaults to 'utf8'. + * + * @param str + */ + static from(str: string, encoding?: string): Buffer; + /** + * Returns true if {obj} is a Buffer + * + * @param obj object to test. + */ + static isBuffer(obj: any): obj is Buffer; + /** + * Returns true if {encoding} is a valid encoding argument. + * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' + * + * @param encoding string to test. + */ + static isEncoding(encoding: string): boolean; + /** + * Gives the actual byte length of a string. encoding defaults to 'utf8'. + * This is not the same as String.prototype.length since that returns the number of characters in a string. + * + * @param string string to test. + * @param encoding encoding used to evaluate (defaults to 'utf8') + */ + static byteLength(string: string, encoding?: string): number; + /** + * Returns a buffer which is the result of concatenating all the buffers in the list together. + * + * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. + * If the list has exactly one item, then the first item of the list is returned. + * If the list has more than one item, then a new Buffer is created. + * + * @param list An array of Buffer objects to concatenate + * @param totalLength Total length of the buffers when concatenated. + * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. + */ + static concat(list: Buffer[], totalLength?: number): Buffer; + /** + * The same as buf1.compare(buf2). + */ + static compare(buf1: Buffer, buf2: Buffer): number; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + * @param fill if specified, buffer will be initialized by calling buf.fill(fill). + * If parameter is omitted, buffer will be filled with zeros. + * @param encoding encoding used for call to buf.fill while initalizing + */ + static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + /** + * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafe(size: number): Buffer; + /** + * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafeSlow(size: number): Buffer; + } +} \ No newline at end of file diff --git a/bff/node_modules/readable-stream/node_modules/safe-buffer/index.js b/bff/node_modules/readable-stream/node_modules/safe-buffer/index.js new file mode 100644 index 0000000..22438da --- /dev/null +++ b/bff/node_modules/readable-stream/node_modules/safe-buffer/index.js @@ -0,0 +1,62 @@ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} diff --git a/bff/node_modules/readable-stream/node_modules/safe-buffer/package.json b/bff/node_modules/readable-stream/node_modules/safe-buffer/package.json new file mode 100644 index 0000000..623fbc3 --- /dev/null +++ b/bff/node_modules/readable-stream/node_modules/safe-buffer/package.json @@ -0,0 +1,37 @@ +{ + "name": "safe-buffer", + "description": "Safer Node.js Buffer API", + "version": "5.1.2", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "http://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/safe-buffer/issues" + }, + "devDependencies": { + "standard": "*", + "tape": "^4.0.0" + }, + "homepage": "https://github.com/feross/safe-buffer", + "keywords": [ + "buffer", + "buffer allocate", + "node security", + "safe", + "safe-buffer", + "security", + "uninitialized" + ], + "license": "MIT", + "main": "index.js", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "git://github.com/feross/safe-buffer.git" + }, + "scripts": { + "test": "standard && tape test/*.js" + } +} diff --git a/bff/node_modules/readable-stream/package.json b/bff/node_modules/readable-stream/package.json new file mode 100644 index 0000000..514c178 --- /dev/null +++ b/bff/node_modules/readable-stream/package.json @@ -0,0 +1,52 @@ +{ + "name": "readable-stream", + "version": "2.3.8", + "description": "Streams3, a user-land copy of the stream library from Node.js", + "main": "readable.js", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "devDependencies": { + "assert": "^1.4.0", + "babel-polyfill": "^6.9.1", + "buffer": "^4.9.0", + "lolex": "^2.3.2", + "nyc": "^6.4.0", + "tap": "^0.7.0", + "tape": "^4.8.0" + }, + "scripts": { + "test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js", + "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js", + "cover": "nyc npm test", + "report": "nyc report --reporter=lcov" + }, + "repository": { + "type": "git", + "url": "git://github.com/nodejs/readable-stream" + }, + "keywords": [ + "readable", + "stream", + "pipe" + ], + "browser": { + "util": false, + "./readable.js": "./readable-browser.js", + "./writable.js": "./writable-browser.js", + "./duplex.js": "./duplex-browser.js", + "./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js" + }, + "nyc": { + "include": [ + "lib/**.js" + ] + }, + "license": "MIT" +} diff --git a/bff/node_modules/readable-stream/passthrough.js b/bff/node_modules/readable-stream/passthrough.js new file mode 100644 index 0000000..ffd791d --- /dev/null +++ b/bff/node_modules/readable-stream/passthrough.js @@ -0,0 +1 @@ +module.exports = require('./readable').PassThrough diff --git a/bff/node_modules/readable-stream/readable-browser.js b/bff/node_modules/readable-stream/readable-browser.js new file mode 100644 index 0000000..e503725 --- /dev/null +++ b/bff/node_modules/readable-stream/readable-browser.js @@ -0,0 +1,7 @@ +exports = module.exports = require('./lib/_stream_readable.js'); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = require('./lib/_stream_writable.js'); +exports.Duplex = require('./lib/_stream_duplex.js'); +exports.Transform = require('./lib/_stream_transform.js'); +exports.PassThrough = require('./lib/_stream_passthrough.js'); diff --git a/bff/node_modules/readable-stream/readable.js b/bff/node_modules/readable-stream/readable.js new file mode 100644 index 0000000..ec89ec5 --- /dev/null +++ b/bff/node_modules/readable-stream/readable.js @@ -0,0 +1,19 @@ +var Stream = require('stream'); +if (process.env.READABLE_STREAM === 'disable' && Stream) { + module.exports = Stream; + exports = module.exports = Stream.Readable; + exports.Readable = Stream.Readable; + exports.Writable = Stream.Writable; + exports.Duplex = Stream.Duplex; + exports.Transform = Stream.Transform; + exports.PassThrough = Stream.PassThrough; + exports.Stream = Stream; +} else { + exports = module.exports = require('./lib/_stream_readable.js'); + exports.Stream = Stream || exports; + exports.Readable = exports; + exports.Writable = require('./lib/_stream_writable.js'); + exports.Duplex = require('./lib/_stream_duplex.js'); + exports.Transform = require('./lib/_stream_transform.js'); + exports.PassThrough = require('./lib/_stream_passthrough.js'); +} diff --git a/bff/node_modules/readable-stream/transform.js b/bff/node_modules/readable-stream/transform.js new file mode 100644 index 0000000..b1baba2 --- /dev/null +++ b/bff/node_modules/readable-stream/transform.js @@ -0,0 +1 @@ +module.exports = require('./readable').Transform diff --git a/bff/node_modules/readable-stream/writable-browser.js b/bff/node_modules/readable-stream/writable-browser.js new file mode 100644 index 0000000..ebdde6a --- /dev/null +++ b/bff/node_modules/readable-stream/writable-browser.js @@ -0,0 +1 @@ +module.exports = require('./lib/_stream_writable.js'); diff --git a/bff/node_modules/readable-stream/writable.js b/bff/node_modules/readable-stream/writable.js new file mode 100644 index 0000000..3211a6f --- /dev/null +++ b/bff/node_modules/readable-stream/writable.js @@ -0,0 +1,8 @@ +var Stream = require("stream") +var Writable = require("./lib/_stream_writable.js") + +if (process.env.READABLE_STREAM === 'disable') { + module.exports = Stream && Stream.Writable || Writable +} else { + module.exports = Writable +} diff --git a/bff/node_modules/router/HISTORY.md b/bff/node_modules/router/HISTORY.md new file mode 100644 index 0000000..b292257 --- /dev/null +++ b/bff/node_modules/router/HISTORY.md @@ -0,0 +1,228 @@ +2.2.0 / 2025-03-26 +================== + +* Remove `setImmediate` support check +* Restore `debug` dependency + +2.1.0 / 2025-02-10 +================== + +* Updated `engines` field to Node@18 or higher +* Remove `Object.setPrototypeOf` polyfill +* Use `Array.flat` instead of `array-flatten` package +* Replace `methods` dependency with standard library +* deps: parseurl@^1.3.3 +* deps: is-promise@^4.0.0 +* Replace `utils-merge` dependency with `Object.assign` +* deps: Remove unused dep `after` + +2.0.0 / 2024-09-09 +================== + +* Drop support for node <18 +* deps: path-to-regexp@^8.0.0 + - Drop support for partial capture group `router.route('/user(s?)/:user/:op')` but still have optional non-capture `/user{s}/:user/:op` + - `:name?` becomes `{:name}` + - `:name*` becomes `*name`. + - The splat change also changes splat from strings to an array of strings + - Optional splats become `{*name}` + - `:name+` becomes `*name` and thus equivalent to `*name` so I dropped those tests + - Strings as regular expressions are fully removed, need to be converted to native regular expressions + +2.0.0-beta.2 / 2024-03-20 +========================= + +This incorporates all changes after 1.3.5 up to 1.3.8. + + * Add support for returned, rejected Promises to `router.param` + +2.0.0-beta.1 / 2020-03-29 +========================= + +This incorporates all changes after 1.3.3 up to 1.3.5. + + * Internalize private `router.process_params` method + * Remove `debug` dependency + * deps: array-flatten@3.0.0 + * deps: parseurl@~1.3.3 + * deps: path-to-regexp@3.2.0 + - Add new `?`, `*`, and `+` parameter modifiers. + - Matching group expressions are only RegExp syntax. + `(*)` is no longer valid and must be written as `(.*)`, for example. + - Named matching groups no longer available by position in `req.params`. + `/:foo(.*)` only captures as `req.params.foo` and not available as + `req.params[0]`. + - Regular expressions can only be used in a matching group. + `/\\d+` is no longer valid and must be written as `/(\\d+)`. + - Matching groups are now literal regular expressions. + `:foo` named captures can no longer be included inside a capture group. + - Special `*` path segment behavior removed. + `/foo/*/bar` will match a literal `*` as the middle segment. + * deps: setprototypeof@1.2.0 + +2.0.0-alpha.1 / 2018-07-27 +========================== + + * Add basic support for returned, rejected Promises + - Rejected Promises from middleware functions `next(error)` + * Drop support for Node.js below 0.10 + * deps: debug@3.1.0 + - Add `DEBUG_HIDE_DATE` environment variable + - Change timer to per-namespace instead of global + - Change non-TTY date format + - Remove `DEBUG_FD` environment variable support + - Support 256 namespace colors + +1.3.8 / 2023-02-24 +================== + + * Fix routing requests without method + +1.3.7 / 2022-04-28 +================== + + * Fix hanging on large stack of sync routes + +1.3.6 / 2021-11-15 +================== + + * Fix handling very large stacks of sync middleware + * deps: safe-buffer@5.2.1 + +1.3.5 / 2020-03-24 +================== + + * Fix incorrect middleware execution with unanchored `RegExp`s + * perf: use plain object for internal method map + +1.3.4 / 2020-01-24 +================== + + * deps: array-flatten@3.0.0 + * deps: parseurl@~1.3.3 + * deps: setprototypeof@1.2.0 + +1.3.3 / 2018-07-06 +================== + + * Fix JSDoc for `Router` constructor + +1.3.2 / 2017-09-24 +================== + + * deps: debug@2.6.9 + * deps: parseurl@~1.3.2 + - perf: reduce overhead for full URLs + - perf: unroll the "fast-path" `RegExp` + * deps: setprototypeof@1.1.0 + * deps: utils-merge@1.0.1 + +1.3.1 / 2017-05-19 +================== + + * deps: debug@2.6.8 + - Fix `DEBUG_MAX_ARRAY_LENGTH` + - deps: ms@2.0.0 + +1.3.0 / 2017-02-25 +================== + + * Add `next("router")` to exit from router + * Fix case where `router.use` skipped requests routes did not + * Use `%o` in path debug to tell types apart + * deps: setprototypeof@1.0.3 + * perf: add fast match path for `*` route + +1.2.0 / 2017-02-17 +================== + + * Skip routing when `req.url` is not set + * deps: debug@2.6.1 + - Allow colors in workers + - Deprecated `DEBUG_FD` environment variable set to `3` or higher + - Fix error when running under React Native + - Use same color for same namespace + - deps: ms@0.7.2 + +1.1.5 / 2017-01-28 +================== + + * deps: array-flatten@2.1.1 + * deps: setprototypeof@1.0.2 + - Fix using fallback even when native method exists + +1.1.4 / 2016-01-21 +================== + + * deps: array-flatten@2.0.0 + * deps: methods@~1.1.2 + - perf: enable strict mode + * deps: parseurl@~1.3.1 + - perf: enable strict mode + +1.1.3 / 2015-08-02 +================== + + * Fix infinite loop condition using `mergeParams: true` + * Fix inner numeric indices incorrectly altering parent `req.params` + * deps: array-flatten@1.1.1 + - perf: enable strict mode + * deps: path-to-regexp@0.1.7 + - Fix regression with escaped round brackets and matching groups + +1.1.2 / 2015-07-06 +================== + + * Fix hiding platform issues with `decodeURIComponent` + - Only `URIError`s are a 400 + * Fix using `*` before params in routes + * Fix using capture groups before params in routes + * deps: path-to-regexp@0.1.6 + * perf: enable strict mode + * perf: remove argument reassignments in routing + * perf: skip attempting to decode zero length string + * perf: use plain for loops + +1.1.1 / 2015-05-25 +================== + + * Fix issue where `next('route')` in `router.param` would incorrectly skip values + * deps: array-flatten@1.1.0 + * deps: debug@~2.2.0 + - deps: ms@0.7.1 + +1.1.0 / 2015-04-22 +================== + + * Use `setprototypeof` instead of `__proto__` + * deps: debug@~2.1.3 + - Fix high intensity foreground color for bold + - deps: ms@0.7.0 + +1.0.0 / 2015-01-13 +================== + + * Fix crash from error within `OPTIONS` response handler + * deps: array-flatten@1.0.2 + - Remove redundant code path + +1.0.0-beta.3 / 2015-01-11 +========================= + + * Fix duplicate methods appearing in OPTIONS responses + * Fix OPTIONS responses to include the HEAD method properly + * Remove support for leading colon in `router.param(name, fn)` + * Use `array-flatten` for flattening arrays + * deps: debug@~2.1.1 + * deps: methods@~1.1.1 + +1.0.0-beta.2 / 2014-11-19 +========================= + + * Match routes iteratively to prevent stack overflows + +1.0.0-beta.1 / 2014-11-16 +========================= + + * Initial release ported from Express 4.x + - Altered to work without Express diff --git a/bff/node_modules/router/LICENSE b/bff/node_modules/router/LICENSE new file mode 100644 index 0000000..237e1b6 --- /dev/null +++ b/bff/node_modules/router/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2013 Roman Shtylman +Copyright (c) 2014-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/router/README.md b/bff/node_modules/router/README.md new file mode 100644 index 0000000..218fd57 --- /dev/null +++ b/bff/node_modules/router/README.md @@ -0,0 +1,416 @@ +# router + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Simple middleware-style router + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +$ npm install router +``` + +## API + +```js +var finalhandler = require('finalhandler') +var http = require('http') +var Router = require('router') + +var router = Router() +router.get('/', function (req, res) { + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + res.end('Hello World!') +}) + +var server = http.createServer(function (req, res) { + router(req, res, finalhandler(req, res)) +}) + +server.listen(3000) +``` + +This module is currently an extracted version from the Express project, +but with the main change being it can be used with a plain `http.createServer` +object or other web frameworks by removing Express-specific API calls. + +## Router(options) + +Options + +- `strict` - When `false` trailing slashes are optional (default: `false`) +- `caseSensitive` - When `true` the routing will be case sensitive. (default: `false`) +- `mergeParams` - When `true` any `req.params` passed to the router will be + merged into the router's `req.params`. (default: `false`) ([example](#example-using-mergeparams)) + +Returns a function with the signature `router(req, res, callback)` where +`callback([err])` must be provided to handle errors and fall-through from +not handling requests. + +### router.use([path], ...middleware) + +Use the given [middleware function](#middleware) for all http methods on the +given `path`, defaulting to the root path. + +`router` does not automatically see `use` as a handler. As such, it will not +consider it one for handling `OPTIONS` requests. + +* Note: If a `path` is specified, that `path` is stripped from the start of + `req.url`. + + + +```js +router.use(function (req, res, next) { + // do your things + + // continue to the next middleware + // the request will stall if this is not called + next() + + // note: you should NOT call `next` if you have begun writing to the response +}) +``` + +[Middleware](#middleware) can themselves use `next('router')` at any time to +exit the current router instance completely, invoking the top-level callback. + +### router\[method](path, ...[middleware], handler) + +The [http methods](https://github.com/jshttp/methods/blob/master/index.js) provide +the routing functionality in `router`. + +Method middleware and handlers follow usual [middleware](#middleware) behavior, +except they will only be called when the method and path match the request. + + + +```js +// handle a `GET` request +router.get('/', function (req, res) { + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + res.end('Hello World!') +}) +``` + +[Middleware](#middleware) given before the handler have one additional trick, +they may invoke `next('route')`. Calling `next('route')` bypasses the remaining +middleware and the handler mounted for this route, passing the request to the +next route suitable for handling this request. + +Route handlers and middleware can themselves use `next('router')` at any time +to exit the current router instance completely, invoking the top-level callback. + +### router.param(name, param_middleware) + +Maps the specified path parameter `name` to a specialized param-capturing middleware. + +This function positions the middleware in the same stack as `.use`. + +The function can optionally return a `Promise` object. If a `Promise` object +is returned from the function, the router will attach an `onRejected` callback +using `.then`. If the promise is rejected, `next` will be called with the +rejected value, or an error if the value is falsy. + +Parameter mapping is used to provide pre-conditions to routes +which use normalized placeholders. For example a _:user_id_ parameter +could automatically load a user's information from the database without +any additional code: + + + +```js +router.param('user_id', function (req, res, next, id) { + User.find(id, function (err, user) { + if (err) { + return next(err) + } else if (!user) { + return next(new Error('failed to load user')) + } + req.user = user + + // continue processing the request + next() + }) +}) +``` + +### router.route(path) + +Creates an instance of a single `Route` for the given `path`. +(See `Router.Route` below) + +Routes can be used to handle http `methods` with their own, optional middleware. + +Using `router.route(path)` is a recommended approach to avoiding duplicate +route naming and thus typo errors. + + + +```js +var api = router.route('/api/') +``` + +## Router.Route(path) + +Represents a single route as an instance that can be used to handle http +`methods` with it's own, optional middleware. + +### route\[method](handler) + +These are functions which you can directly call on a route to register a new +`handler` for the `method` on the route. + + + +```js +// handle a `GET` request +var status = router.route('/status') + +status.get(function (req, res) { + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + res.end('All Systems Green!') +}) +``` + +### route.all(handler) + +Adds a handler for all HTTP methods to this route. + +The handler can behave like middleware and call `next` to continue processing +rather than responding. + + + +```js +router.route('/') + .all(function (req, res, next) { + next() + }) + .all(checkSomething) + .get(function (req, res) { + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + res.end('Hello World!') + }) +``` + +## Middleware + +Middleware (and method handlers) are functions that follow specific function +parameters and have defined behavior when used with `router`. The most common +format is with three parameters - "req", "res" and "next". + +- `req` - This is a [HTTP incoming message](https://nodejs.org/api/http.html#http_http_incomingmessage) instance. +- `res` - This is a [HTTP server response](https://nodejs.org/api/http.html#http_class_http_serverresponse) instance. +- `next` - Calling this function that tells `router` to proceed to the next matching middleware or method handler. It accepts an error as the first argument. + +The function can optionally return a `Promise` object. If a `Promise` object +is returned from the function, the router will attach an `onRejected` callback +using `.then`. If the promise is rejected, `next` will be called with the +rejected value, or an error if the value is falsy. + +Middleware and method handlers can also be defined with four arguments. When +the function has four parameters defined, the first argument is an error and +subsequent arguments remain, becoming - "err", "req", "res", "next". These +functions are "error handling middleware", and can be used for handling +errors that occurred in previous handlers (E.g. from calling `next(err)`). +This is most used when you want to define arbitrary rendering of errors. + + + +```js +router.get('/error_route', function (req, res, next) { + return next(new Error('Bad Request')) +}) + +router.use(function (err, req, res, next) { + res.end(err.message) //= > "Bad Request" +}) +``` + +Error handling middleware will **only** be invoked when an error was given. As +long as the error is in the pipeline, normal middleware and handlers will be +bypassed - only error handling middleware will be invoked with an error. + +## Examples + +```js +// import our modules +var http = require('http') +var Router = require('router') +var finalhandler = require('finalhandler') +var compression = require('compression') +var bodyParser = require('body-parser') + +// store our message to display +var message = 'Hello World!' + +// initialize the router & server and add a final callback. +var router = Router() +var server = http.createServer(function onRequest (req, res) { + router(req, res, finalhandler(req, res)) +}) + +// use some middleware and compress all outgoing responses +router.use(compression()) + +// handle `GET` requests to `/message` +router.get('/message', function (req, res) { + res.statusCode = 200 + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + res.end(message + '\n') +}) + +// create and mount a new router for our API +var api = Router() +router.use('/api/', api) + +// add a body parsing middleware to our API +api.use(bodyParser.json()) + +// handle `PATCH` requests to `/api/set-message` +api.patch('/set-message', function (req, res) { + if (req.body.value) { + message = req.body.value + + res.statusCode = 200 + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + res.end(message + '\n') + } else { + res.statusCode = 400 + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + res.end('Invalid API Syntax\n') + } +}) + +// make our http server listen to connections +server.listen(8080) +``` + +You can get the message by running this command in your terminal, + or navigating to `127.0.0.1:8080` in a web browser. +```bash +curl http://127.0.0.1:8080 +``` + +You can set the message by sending it a `PATCH` request via this command: +```bash +curl http://127.0.0.1:8080/api/set-message -X PATCH -H "Content-Type: application/json" -d '{"value":"Cats!"}' +``` + +### Example using mergeParams + +```js +var http = require('http') +var Router = require('router') +var finalhandler = require('finalhandler') + +// this example is about the mergeParams option +var opts = { mergeParams: true } + +// make a router with out special options +var router = Router(opts) +var server = http.createServer(function onRequest (req, res) { + // set something to be passed into the router + req.params = { type: 'kitten' } + + router(req, res, finalhandler(req, res)) +}) + +router.get('/', function (req, res) { + res.statusCode = 200 + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + + // with respond with the the params that were passed in + res.end(req.params.type + '\n') +}) + +// make another router with our options +var handler = Router(opts) + +// mount our new router to a route that accepts a param +router.use('/:path', handler) + +handler.get('/', function (req, res) { + res.statusCode = 200 + res.setHeader('Content-Type', 'text/plain; charset=utf-8') + + // will respond with the param of the router's parent route + res.end(req.params.path + '\n') +}) + +// make our http server listen to connections +server.listen(8080) +``` + +Now you can get the type, or what path you are requesting: +```bash +curl http://127.0.0.1:8080 +> kitten +curl http://127.0.0.1:8080/such_path +> such_path +``` + +### Example of advanced `.route()` usage + +This example shows how to implement routes where there is a custom +handler to execute when the path matched, but no methods matched. +Without any special handling, this would be treated as just a +generic non-match by `router` (which typically results in a 404), +but with a custom handler, a `405 Method Not Allowed` can be sent. + +```js +var http = require('http') +var finalhandler = require('finalhandler') +var Router = require('router') + +// create the router and server +var router = new Router() +var server = http.createServer(function onRequest (req, res) { + router(req, res, finalhandler(req, res)) +}) + +// register a route and add all methods +router.route('/pet/:id') + .get(function (req, res) { + // this is GET /pet/:id + res.setHeader('Content-Type', 'application/json') + res.end(JSON.stringify({ name: 'tobi' })) + }) + .delete(function (req, res) { + // this is DELETE /pet/:id + res.end() + }) + .all(function (req, res) { + // this is called for all other methods not + // defined above for /pet/:id + res.statusCode = 405 + res.end() + }) + +// make our http server listen to connections +server.listen(8080) +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/pillarjs/router/master?label=ci +[ci-url]: https://github.com/pillarjs/router/actions/workflows/ci.yml +[npm-image]: https://img.shields.io/npm/v/router.svg +[npm-url]: https://npmjs.org/package/router +[node-version-image]: https://img.shields.io/node/v/router.svg +[node-version-url]: http://nodejs.org/download/ +[coveralls-image]: https://img.shields.io/coveralls/pillarjs/router/master.svg +[coveralls-url]: https://coveralls.io/r/pillarjs/router?branch=master +[downloads-image]: https://img.shields.io/npm/dm/router.svg +[downloads-url]: https://npmjs.org/package/router diff --git a/bff/node_modules/router/index.js b/bff/node_modules/router/index.js new file mode 100644 index 0000000..4358aeb --- /dev/null +++ b/bff/node_modules/router/index.js @@ -0,0 +1,748 @@ +/*! + * router + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +const isPromise = require('is-promise') +const Layer = require('./lib/layer') +const { METHODS } = require('node:http') +const parseUrl = require('parseurl') +const Route = require('./lib/route') +const debug = require('debug')('router') +const deprecate = require('depd')('router') + +/** + * Module variables. + * @private + */ + +const slice = Array.prototype.slice +const flatten = Array.prototype.flat +const methods = METHODS.map((method) => method.toLowerCase()) + +/** + * Expose `Router`. + */ + +module.exports = Router + +/** + * Expose `Route`. + */ + +module.exports.Route = Route + +/** + * Initialize a new `Router` with the given `options`. + * + * @param {object} [options] + * @return {Router} which is a callable function + * @public + */ + +function Router (options) { + if (!(this instanceof Router)) { + return new Router(options) + } + + const opts = options || {} + + function router (req, res, next) { + router.handle(req, res, next) + } + + // inherit from the correct prototype + Object.setPrototypeOf(router, this) + + router.caseSensitive = opts.caseSensitive + router.mergeParams = opts.mergeParams + router.params = {} + router.strict = opts.strict + router.stack = [] + + return router +} + +/** + * Router prototype inherits from a Function. + */ + +/* istanbul ignore next */ +Router.prototype = function () {} + +/** + * Map the given param placeholder `name`(s) to the given callback. + * + * Parameter mapping is used to provide pre-conditions to routes + * which use normalized placeholders. For example a _:user_id_ parameter + * could automatically load a user's information from the database without + * any additional code. + * + * The callback uses the same signature as middleware, the only difference + * being that the value of the placeholder is passed, in this case the _id_ + * of the user. Once the `next()` function is invoked, just like middleware + * it will continue on to execute the route, or subsequent parameter functions. + * + * Just like in middleware, you must either respond to the request or call next + * to avoid stalling the request. + * + * router.param('user_id', function(req, res, next, id){ + * User.find(id, function(err, user){ + * if (err) { + * return next(err) + * } else if (!user) { + * return next(new Error('failed to load user')) + * } + * req.user = user + * next() + * }) + * }) + * + * @param {string} name + * @param {function} fn + * @public + */ + +Router.prototype.param = function param (name, fn) { + if (!name) { + throw new TypeError('argument name is required') + } + + if (typeof name !== 'string') { + throw new TypeError('argument name must be a string') + } + + if (!fn) { + throw new TypeError('argument fn is required') + } + + if (typeof fn !== 'function') { + throw new TypeError('argument fn must be a function') + } + + let params = this.params[name] + + if (!params) { + params = this.params[name] = [] + } + + params.push(fn) + + return this +} + +/** + * Dispatch a req, res into the router. + * + * @private + */ + +Router.prototype.handle = function handle (req, res, callback) { + if (!callback) { + throw new TypeError('argument callback is required') + } + + debug('dispatching %s %s', req.method, req.url) + + let idx = 0 + let methods + const protohost = getProtohost(req.url) || '' + let removed = '' + const self = this + let slashAdded = false + let sync = 0 + const paramcalled = {} + + // middleware and routes + const stack = this.stack + + // manage inter-router variables + const parentParams = req.params + const parentUrl = req.baseUrl || '' + let done = restore(callback, req, 'baseUrl', 'next', 'params') + + // setup next layer + req.next = next + + // for options requests, respond with a default if nothing else responds + if (req.method === 'OPTIONS') { + methods = [] + done = wrap(done, generateOptionsResponder(res, methods)) + } + + // setup basic req values + req.baseUrl = parentUrl + req.originalUrl = req.originalUrl || req.url + + next() + + function next (err) { + let layerError = err === 'route' + ? null + : err + + // remove added slash + if (slashAdded) { + req.url = req.url.slice(1) + slashAdded = false + } + + // restore altered req.url + if (removed.length !== 0) { + req.baseUrl = parentUrl + req.url = protohost + removed + req.url.slice(protohost.length) + removed = '' + } + + // signal to exit router + if (layerError === 'router') { + setImmediate(done, null) + return + } + + // no more matching layers + if (idx >= stack.length) { + setImmediate(done, layerError) + return + } + + // max sync stack + if (++sync > 100) { + return setImmediate(next, err) + } + + // get pathname of request + const path = getPathname(req) + + if (path == null) { + return done(layerError) + } + + // find next matching layer + let layer + let match + let route + + while (match !== true && idx < stack.length) { + layer = stack[idx++] + match = matchLayer(layer, path) + route = layer.route + + if (typeof match !== 'boolean') { + // hold on to layerError + layerError = layerError || match + } + + if (match !== true) { + continue + } + + if (!route) { + // process non-route handlers normally + continue + } + + if (layerError) { + // routes do not match with a pending error + match = false + continue + } + + const method = req.method + const hasMethod = route._handlesMethod(method) + + // build up automatic options response + if (!hasMethod && method === 'OPTIONS' && methods) { + methods.push.apply(methods, route._methods()) + } + + // don't even bother matching route + if (!hasMethod && method !== 'HEAD') { + match = false + } + } + + // no match + if (match !== true) { + return done(layerError) + } + + // store route for dispatch on change + if (route) { + req.route = route + } + + // Capture one-time layer values + req.params = self.mergeParams + ? mergeParams(layer.params, parentParams) + : layer.params + const layerPath = layer.path + + // this should be done for the layer + processParams(self.params, layer, paramcalled, req, res, function (err) { + if (err) { + next(layerError || err) + } else if (route) { + layer.handleRequest(req, res, next) + } else { + trimPrefix(layer, layerError, layerPath, path) + } + + sync = 0 + }) + } + + function trimPrefix (layer, layerError, layerPath, path) { + if (layerPath.length !== 0) { + // Validate path is a prefix match + if (layerPath !== path.substring(0, layerPath.length)) { + next(layerError) + return + } + + // Validate path breaks on a path separator + const c = path[layerPath.length] + if (c && c !== '/') { + next(layerError) + return + } + + // Trim off the part of the url that matches the route + // middleware (.use stuff) needs to have the path stripped + debug('trim prefix (%s) from url %s', layerPath, req.url) + removed = layerPath + req.url = protohost + req.url.slice(protohost.length + removed.length) + + // Ensure leading slash + if (!protohost && req.url[0] !== '/') { + req.url = '/' + req.url + slashAdded = true + } + + // Setup base URL (no trailing slash) + req.baseUrl = parentUrl + (removed[removed.length - 1] === '/' + ? removed.substring(0, removed.length - 1) + : removed) + } + + debug('%s %s : %s', layer.name, layerPath, req.originalUrl) + + if (layerError) { + layer.handleError(layerError, req, res, next) + } else { + layer.handleRequest(req, res, next) + } + } +} + +/** + * Use the given middleware function, with optional path, defaulting to "/". + * + * Use (like `.all`) will run for any http METHOD, but it will not add + * handlers for those methods so OPTIONS requests will not consider `.use` + * functions even if they could respond. + * + * The other difference is that _route_ path is stripped and not visible + * to the handler function. The main effect of this feature is that mounted + * handlers can operate without any code changes regardless of the "prefix" + * pathname. + * + * @public + */ + +Router.prototype.use = function use (handler) { + let offset = 0 + let path = '/' + + // default path to '/' + // disambiguate router.use([handler]) + if (typeof handler !== 'function') { + let arg = handler + + while (Array.isArray(arg) && arg.length !== 0) { + arg = arg[0] + } + + // first arg is the path + if (typeof arg !== 'function') { + offset = 1 + path = handler + } + } + + const callbacks = flatten.call(slice.call(arguments, offset), Infinity) + + if (callbacks.length === 0) { + throw new TypeError('argument handler is required') + } + + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i] + + if (typeof fn !== 'function') { + throw new TypeError('argument handler must be a function') + } + + // add the middleware + debug('use %o %s', path, fn.name || '') + + const layer = new Layer(path, { + sensitive: this.caseSensitive, + strict: false, + end: false + }, fn) + + layer.route = undefined + + this.stack.push(layer) + } + + return this +} + +/** + * Create a new Route for the given path. + * + * Each route contains a separate middleware stack and VERB handlers. + * + * See the Route api documentation for details on adding handlers + * and middleware to routes. + * + * @param {string} path + * @return {Route} + * @public + */ + +Router.prototype.route = function route (path) { + const route = new Route(path) + + const layer = new Layer(path, { + sensitive: this.caseSensitive, + strict: this.strict, + end: true + }, handle) + + function handle (req, res, next) { + route.dispatch(req, res, next) + } + + layer.route = route + + this.stack.push(layer) + return route +} + +// create Router#VERB functions +methods.concat('all').forEach(function (method) { + Router.prototype[method] = function (path) { + const route = this.route(path) + route[method].apply(route, slice.call(arguments, 1)) + return this + } +}) + +/** + * Generate a callback that will make an OPTIONS response. + * + * @param {OutgoingMessage} res + * @param {array} methods + * @private + */ + +function generateOptionsResponder (res, methods) { + return function onDone (fn, err) { + if (err || methods.length === 0) { + return fn(err) + } + + trySendOptionsResponse(res, methods, fn) + } +} + +/** + * Get pathname of request. + * + * @param {IncomingMessage} req + * @private + */ + +function getPathname (req) { + try { + return parseUrl(req).pathname + } catch (err) { + return undefined + } +} + +/** + * Get get protocol + host for a URL. + * + * @param {string} url + * @private + */ + +function getProtohost (url) { + if (typeof url !== 'string' || url.length === 0 || url[0] === '/') { + return undefined + } + + const searchIndex = url.indexOf('?') + const pathLength = searchIndex !== -1 + ? searchIndex + : url.length + const fqdnIndex = url.substring(0, pathLength).indexOf('://') + + return fqdnIndex !== -1 + ? url.substring(0, url.indexOf('/', 3 + fqdnIndex)) + : undefined +} + +/** + * Match path to a layer. + * + * @param {Layer} layer + * @param {string} path + * @private + */ + +function matchLayer (layer, path) { + try { + return layer.match(path) + } catch (err) { + return err + } +} + +/** + * Merge params with parent params + * + * @private + */ + +function mergeParams (params, parent) { + if (typeof parent !== 'object' || !parent) { + return params + } + + // make copy of parent for base + const obj = Object.assign({}, parent) + + // simple non-numeric merging + if (!(0 in params) || !(0 in parent)) { + return Object.assign(obj, params) + } + + let i = 0 + let o = 0 + + // determine numeric gap in params + while (i in params) { + i++ + } + + // determine numeric gap in parent + while (o in parent) { + o++ + } + + // offset numeric indices in params before merge + for (i--; i >= 0; i--) { + params[i + o] = params[i] + + // create holes for the merge when necessary + if (i < o) { + delete params[i] + } + } + + return Object.assign(obj, params) +} + +/** + * Process any parameters for the layer. + * + * @private + */ + +function processParams (params, layer, called, req, res, done) { + // captured parameters from the layer, keys and values + const keys = layer.keys + + // fast track + if (!keys || keys.length === 0) { + return done() + } + + let i = 0 + let paramIndex = 0 + let key + let paramVal + let paramCallbacks + let paramCalled + + // process params in order + // param callbacks can be async + function param (err) { + if (err) { + return done(err) + } + + if (i >= keys.length) { + return done() + } + + paramIndex = 0 + key = keys[i++] + paramVal = req.params[key] + paramCallbacks = params[key] + paramCalled = called[key] + + if (paramVal === undefined || !paramCallbacks) { + return param() + } + + // param previously called with same value or error occurred + if (paramCalled && (paramCalled.match === paramVal || + (paramCalled.error && paramCalled.error !== 'route'))) { + // restore value + req.params[key] = paramCalled.value + + // next param + return param(paramCalled.error) + } + + called[key] = paramCalled = { + error: null, + match: paramVal, + value: paramVal + } + + paramCallback() + } + + // single param callbacks + function paramCallback (err) { + const fn = paramCallbacks[paramIndex++] + + // store updated value + paramCalled.value = req.params[key] + + if (err) { + // store error + paramCalled.error = err + param(err) + return + } + + if (!fn) return param() + + try { + const ret = fn(req, res, paramCallback, paramVal, key) + if (isPromise(ret)) { + if (!(ret instanceof Promise)) { + deprecate('parameters that are Promise-like are deprecated, use a native Promise instead') + } + + ret.then(null, function (error) { + paramCallback(error || new Error('Rejected promise')) + }) + } + } catch (e) { + paramCallback(e) + } + } + + param() +} + +/** + * Restore obj props after function + * + * @private + */ + +function restore (fn, obj) { + const props = new Array(arguments.length - 2) + const vals = new Array(arguments.length - 2) + + for (let i = 0; i < props.length; i++) { + props[i] = arguments[i + 2] + vals[i] = obj[props[i]] + } + + return function () { + // restore vals + for (let i = 0; i < props.length; i++) { + obj[props[i]] = vals[i] + } + + return fn.apply(this, arguments) + } +} + +/** + * Send an OPTIONS response. + * + * @private + */ + +function sendOptionsResponse (res, methods) { + const options = Object.create(null) + + // build unique method map + for (let i = 0; i < methods.length; i++) { + options[methods[i]] = true + } + + // construct the allow list + const allow = Object.keys(options).sort().join(', ') + + // send response + res.setHeader('Allow', allow) + res.setHeader('Content-Length', Buffer.byteLength(allow)) + res.setHeader('Content-Type', 'text/plain') + res.setHeader('X-Content-Type-Options', 'nosniff') + res.end(allow) +} + +/** + * Try to send an OPTIONS response. + * + * @private + */ + +function trySendOptionsResponse (res, methods, next) { + try { + sendOptionsResponse(res, methods) + } catch (err) { + next(err) + } +} + +/** + * Wrap a function + * + * @private + */ + +function wrap (old, fn) { + return function proxy () { + const args = new Array(arguments.length + 1) + + args[0] = old + for (let i = 0, len = arguments.length; i < len; i++) { + args[i + 1] = arguments[i] + } + + fn.apply(this, args) + } +} diff --git a/bff/node_modules/router/lib/layer.js b/bff/node_modules/router/lib/layer.js new file mode 100644 index 0000000..6a4408f --- /dev/null +++ b/bff/node_modules/router/lib/layer.js @@ -0,0 +1,247 @@ +/*! + * router + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +const isPromise = require('is-promise') +const pathRegexp = require('path-to-regexp') +const debug = require('debug')('router:layer') +const deprecate = require('depd')('router') + +/** + * Module variables. + * @private + */ + +const TRAILING_SLASH_REGEXP = /\/+$/ +const MATCHING_GROUP_REGEXP = /\((?:\?<(.*?)>)?(?!\?)/g + +/** + * Expose `Layer`. + */ + +module.exports = Layer + +function Layer (path, options, fn) { + if (!(this instanceof Layer)) { + return new Layer(path, options, fn) + } + + debug('new %o', path) + const opts = options || {} + + this.handle = fn + this.keys = [] + this.name = fn.name || '' + this.params = undefined + this.path = undefined + this.slash = path === '/' && opts.end === false + + function matcher (_path) { + if (_path instanceof RegExp) { + const keys = [] + let name = 0 + let m + // eslint-disable-next-line no-cond-assign + while (m = MATCHING_GROUP_REGEXP.exec(_path.source)) { + keys.push({ + name: m[1] || name++, + offset: m.index + }) + } + + return function regexpMatcher (p) { + const match = _path.exec(p) + if (!match) { + return false + } + + const params = {} + for (let i = 1; i < match.length; i++) { + const key = keys[i - 1] + const prop = key.name + const val = decodeParam(match[i]) + + if (val !== undefined) { + params[prop] = val + } + } + + return { + params, + path: match[0] + } + } + } + + return pathRegexp.match((opts.strict ? _path : loosen(_path)), { + sensitive: opts.sensitive, + end: opts.end, + trailing: !opts.strict, + decode: decodeParam + }) + } + this.matchers = Array.isArray(path) ? path.map(matcher) : [matcher(path)] +} + +/** + * Handle the error for the layer. + * + * @param {Error} error + * @param {Request} req + * @param {Response} res + * @param {function} next + * @api private + */ + +Layer.prototype.handleError = function handleError (error, req, res, next) { + const fn = this.handle + + if (fn.length !== 4) { + // not a standard error handler + return next(error) + } + + try { + // invoke function + const ret = fn(error, req, res, next) + + // wait for returned promise + if (isPromise(ret)) { + if (!(ret instanceof Promise)) { + deprecate('handlers that are Promise-like are deprecated, use a native Promise instead') + } + + ret.then(null, function (error) { + next(error || new Error('Rejected promise')) + }) + } + } catch (err) { + next(err) + } +} + +/** + * Handle the request for the layer. + * + * @param {Request} req + * @param {Response} res + * @param {function} next + * @api private + */ + +Layer.prototype.handleRequest = function handleRequest (req, res, next) { + const fn = this.handle + + if (fn.length > 3) { + // not a standard request handler + return next() + } + + try { + // invoke function + const ret = fn(req, res, next) + + // wait for returned promise + if (isPromise(ret)) { + if (!(ret instanceof Promise)) { + deprecate('handlers that are Promise-like are deprecated, use a native Promise instead') + } + + ret.then(null, function (error) { + next(error || new Error('Rejected promise')) + }) + } + } catch (err) { + next(err) + } +} + +/** + * Check if this route matches `path`, if so + * populate `.params`. + * + * @param {String} path + * @return {Boolean} + * @api private + */ + +Layer.prototype.match = function match (path) { + let match + + if (path != null) { + // fast path non-ending match for / (any path matches) + if (this.slash) { + this.params = {} + this.path = '' + return true + } + + let i = 0 + while (!match && i < this.matchers.length) { + // match the path + match = this.matchers[i](path) + i++ + } + } + + if (!match) { + this.params = undefined + this.path = undefined + return false + } + + // store values + this.params = match.params + this.path = match.path + this.keys = Object.keys(match.params) + + return true +} + +/** + * Decode param value. + * + * @param {string} val + * @return {string} + * @private + */ + +function decodeParam (val) { + if (typeof val !== 'string' || val.length === 0) { + return val + } + + try { + return decodeURIComponent(val) + } catch (err) { + if (err instanceof URIError) { + err.message = 'Failed to decode param \'' + val + '\'' + err.status = 400 + } + + throw err + } +} + +/** + * Loosens the given path for path-to-regexp matching. + */ +function loosen (path) { + if (path instanceof RegExp || path === '/') { + return path + } + + return Array.isArray(path) + ? path.map(function (p) { return loosen(p) }) + : String(path).replace(TRAILING_SLASH_REGEXP, '') +} diff --git a/bff/node_modules/router/lib/route.js b/bff/node_modules/router/lib/route.js new file mode 100644 index 0000000..1887d78 --- /dev/null +++ b/bff/node_modules/router/lib/route.js @@ -0,0 +1,242 @@ +/*! + * router + * Copyright(c) 2013 Roman Shtylman + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +const debug = require('debug')('router:route') +const Layer = require('./layer') +const { METHODS } = require('node:http') + +/** + * Module variables. + * @private + */ + +const slice = Array.prototype.slice +const flatten = Array.prototype.flat +const methods = METHODS.map((method) => method.toLowerCase()) + +/** + * Expose `Route`. + */ + +module.exports = Route + +/** + * Initialize `Route` with the given `path`, + * + * @param {String} path + * @api private + */ + +function Route (path) { + debug('new %o', path) + this.path = path + this.stack = [] + + // route handlers for various http methods + this.methods = Object.create(null) +} + +/** + * @private + */ + +Route.prototype._handlesMethod = function _handlesMethod (method) { + if (this.methods._all) { + return true + } + + // normalize name + let name = typeof method === 'string' + ? method.toLowerCase() + : method + + if (name === 'head' && !this.methods.head) { + name = 'get' + } + + return Boolean(this.methods[name]) +} + +/** + * @return {array} supported HTTP methods + * @private + */ + +Route.prototype._methods = function _methods () { + const methods = Object.keys(this.methods) + + // append automatic head + if (this.methods.get && !this.methods.head) { + methods.push('head') + } + + for (let i = 0; i < methods.length; i++) { + // make upper case + methods[i] = methods[i].toUpperCase() + } + + return methods +} + +/** + * dispatch req, res into this route + * + * @private + */ + +Route.prototype.dispatch = function dispatch (req, res, done) { + let idx = 0 + const stack = this.stack + let sync = 0 + + if (stack.length === 0) { + return done() + } + + let method = typeof req.method === 'string' + ? req.method.toLowerCase() + : req.method + + if (method === 'head' && !this.methods.head) { + method = 'get' + } + + req.route = this + + next() + + function next (err) { + // signal to exit route + if (err && err === 'route') { + return done() + } + + // signal to exit router + if (err && err === 'router') { + return done(err) + } + + // no more matching layers + if (idx >= stack.length) { + return done(err) + } + + // max sync stack + if (++sync > 100) { + return setImmediate(next, err) + } + + let layer + let match + + // find next matching layer + while (match !== true && idx < stack.length) { + layer = stack[idx++] + match = !layer.method || layer.method === method + } + + // no match + if (match !== true) { + return done(err) + } + + if (err) { + layer.handleError(err, req, res, next) + } else { + layer.handleRequest(req, res, next) + } + + sync = 0 + } +} + +/** + * Add a handler for all HTTP verbs to this route. + * + * Behaves just like middleware and can respond or call `next` + * to continue processing. + * + * You can use multiple `.all` call to add multiple handlers. + * + * function check_something(req, res, next){ + * next() + * } + * + * function validate_user(req, res, next){ + * next() + * } + * + * route + * .all(validate_user) + * .all(check_something) + * .get(function(req, res, next){ + * res.send('hello world') + * }) + * + * @param {array|function} handler + * @return {Route} for chaining + * @api public + */ + +Route.prototype.all = function all (handler) { + const callbacks = flatten.call(slice.call(arguments), Infinity) + + if (callbacks.length === 0) { + throw new TypeError('argument handler is required') + } + + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i] + + if (typeof fn !== 'function') { + throw new TypeError('argument handler must be a function') + } + + const layer = Layer('/', {}, fn) + layer.method = undefined + + this.methods._all = true + this.stack.push(layer) + } + + return this +} + +methods.forEach(function (method) { + Route.prototype[method] = function (handler) { + const callbacks = flatten.call(slice.call(arguments), Infinity) + + if (callbacks.length === 0) { + throw new TypeError('argument handler is required') + } + + for (let i = 0; i < callbacks.length; i++) { + const fn = callbacks[i] + + if (typeof fn !== 'function') { + throw new TypeError('argument handler must be a function') + } + + debug('%s %s', method, this.path) + + const layer = Layer('/', {}, fn) + layer.method = method + + this.methods[method] = true + this.stack.push(layer) + } + + return this + } +}) diff --git a/bff/node_modules/router/package.json b/bff/node_modules/router/package.json new file mode 100644 index 0000000..123eca2 --- /dev/null +++ b/bff/node_modules/router/package.json @@ -0,0 +1,44 @@ +{ + "name": "router", + "description": "Simple middleware-style router", + "version": "2.2.0", + "author": "Douglas Christopher Wilson ", + "contributors": [ + "Blake Embrey " + ], + "license": "MIT", + "repository": "pillarjs/router", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "devDependencies": { + "finalhandler": "^2.1.0", + "mocha": "10.2.0", + "nyc": "15.1.0", + "run-series": "^1.1.9", + "standard": "^17.1.0", + "supertest": "6.3.3" + }, + "files": [ + "lib/", + "LICENSE", + "HISTORY.md", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 18" + }, + "scripts": { + "lint": "standard", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test:debug": "mocha --reporter spec --bail --check-leaks test/ --inspect --inspect-brk", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/safe-buffer/LICENSE b/bff/node_modules/safe-buffer/LICENSE new file mode 100644 index 0000000..0c068ce --- /dev/null +++ b/bff/node_modules/safe-buffer/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/safe-buffer/README.md b/bff/node_modules/safe-buffer/README.md new file mode 100644 index 0000000..e9a81af --- /dev/null +++ b/bff/node_modules/safe-buffer/README.md @@ -0,0 +1,584 @@ +# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg +[travis-url]: https://travis-ci.org/feross/safe-buffer +[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg +[npm-url]: https://npmjs.org/package/safe-buffer +[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg +[downloads-url]: https://npmjs.org/package/safe-buffer +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +#### Safer Node.js Buffer API + +**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`, +`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.** + +**Uses the built-in implementation when available.** + +## install + +``` +npm install safe-buffer +``` + +## usage + +The goal of this package is to provide a safe replacement for the node.js `Buffer`. + +It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to +the top of your node.js modules: + +```js +var Buffer = require('safe-buffer').Buffer + +// Existing buffer code will continue to work without issues: + +new Buffer('hey', 'utf8') +new Buffer([1, 2, 3], 'utf8') +new Buffer(obj) +new Buffer(16) // create an uninitialized buffer (potentially unsafe) + +// But you can use these new explicit APIs to make clear what you want: + +Buffer.from('hey', 'utf8') // convert from many types to a Buffer +Buffer.alloc(16) // create a zero-filled buffer (safe) +Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe) +``` + +## api + +### Class Method: Buffer.from(array) + + +* `array` {Array} + +Allocates a new `Buffer` using an `array` of octets. + +```js +const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]); + // creates a new Buffer containing ASCII bytes + // ['b','u','f','f','e','r'] +``` + +A `TypeError` will be thrown if `array` is not an `Array`. + +### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) + + +* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or + a `new ArrayBuffer()` +* `byteOffset` {Number} Default: `0` +* `length` {Number} Default: `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a `TypedArray` instance, +the newly created `Buffer` will share the same allocated memory as the +TypedArray. + +```js +const arr = new Uint16Array(2); +arr[0] = 5000; +arr[1] = 4000; + +const buf = Buffer.from(arr.buffer); // shares the memory with arr; + +console.log(buf); + // Prints: + +// changing the TypedArray changes the Buffer also +arr[1] = 6000; + +console.log(buf); + // Prints: +``` + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +```js +const ab = new ArrayBuffer(10); +const buf = Buffer.from(ab, 0, 2); +console.log(buf.length); + // Prints: 2 +``` + +A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`. + +### Class Method: Buffer.from(buffer) + + +* `buffer` {Buffer} + +Copies the passed `buffer` data onto a new `Buffer` instance. + +```js +const buf1 = Buffer.from('buffer'); +const buf2 = Buffer.from(buf1); + +buf1[0] = 0x61; +console.log(buf1.toString()); + // 'auffer' +console.log(buf2.toString()); + // 'buffer' (copy is not changed) +``` + +A `TypeError` will be thrown if `buffer` is not a `Buffer`. + +### Class Method: Buffer.from(str[, encoding]) + + +* `str` {String} String to encode. +* `encoding` {String} Encoding to use, Default: `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `str`. If +provided, the `encoding` parameter identifies the character encoding. +If not provided, `encoding` defaults to `'utf8'`. + +```js +const buf1 = Buffer.from('this is a tést'); +console.log(buf1.toString()); + // prints: this is a tést +console.log(buf1.toString('ascii')); + // prints: this is a tC)st + +const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); +console.log(buf2.toString()); + // prints: this is a tést +``` + +A `TypeError` will be thrown if `str` is not a string. + +### Class Method: Buffer.alloc(size[, fill[, encoding]]) + + +* `size` {Number} +* `fill` {Value} Default: `undefined` +* `encoding` {String} Default: `utf8` + +Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the +`Buffer` will be *zero-filled*. + +```js +const buf = Buffer.alloc(5); +console.log(buf); + // +``` + +The `size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +If `fill` is specified, the allocated `Buffer` will be initialized by calling +`buf.fill(fill)`. See [`buf.fill()`][] for more information. + +```js +const buf = Buffer.alloc(5, 'a'); +console.log(buf); + // +``` + +If both `fill` and `encoding` are specified, the allocated `Buffer` will be +initialized by calling `buf.fill(fill, encoding)`. For example: + +```js +const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); +console.log(buf); + // +``` + +Calling `Buffer.alloc(size)` can be significantly slower than the alternative +`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance +contents will *never contain sensitive data*. + +A `TypeError` will be thrown if `size` is not a number. + +### Class Method: Buffer.allocUnsafe(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must +be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit +architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is +thrown. A zero-length Buffer will be created if a `size` less than or equal to +0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +```js +const buf = Buffer.allocUnsafe(5); +console.log(buf); + // + // (octets will be different, every time) +buf.fill(0); +console.log(buf); + // +``` + +A `TypeError` will be thrown if `size` is not a number. + +Note that the `Buffer` module pre-allocates an internal `Buffer` instance of +size `Buffer.poolSize` that is used as a pool for the fast allocation of new +`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated +`new Buffer(size)` constructor) only when `size` is less than or equal to +`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default +value of `Buffer.poolSize` is `8192` but can be modified. + +Use of this pre-allocated internal memory pool is a key difference between +calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. +Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer +pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal +Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The +difference is subtle but can be important when an application requires the +additional performance that `Buffer.allocUnsafe(size)` provides. + +### Class Method: Buffer.allocUnsafeSlow(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The +`size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, +allocations under 4KB are, by default, sliced from a single pre-allocated +`Buffer`. This allows applications to avoid the garbage collection overhead of +creating many individually allocated Buffers. This approach improves both +performance and memory usage by eliminating the need to track and cleanup as +many `Persistent` objects. + +However, in the case where a developer may need to retain a small chunk of +memory from a pool for an indeterminate amount of time, it may be appropriate +to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then +copy out the relevant bits. + +```js +// need to keep around a few small chunks of memory +const store = []; + +socket.on('readable', () => { + const data = socket.read(); + // allocate for retained data + const sb = Buffer.allocUnsafeSlow(10); + // copy the data into the new allocation + data.copy(sb, 0, 0, 10); + store.push(sb); +}); +``` + +Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after* +a developer has observed undue memory retention in their applications. + +A `TypeError` will be thrown if `size` is not a number. + +### All the Rest + +The rest of the `Buffer` API is exactly the same as in node.js. +[See the docs](https://nodejs.org/api/buffer.html). + + +## Related links + +- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660) +- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4) + +## Why is `Buffer` unsafe? + +Today, the node.js `Buffer` constructor is overloaded to handle many different argument +types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), +`ArrayBuffer`, and also `Number`. + +The API is optimized for convenience: you can throw any type at it, and it will try to do +what you want. + +Because the Buffer constructor is so powerful, you often see code like this: + +```js +// Convert UTF-8 strings to hex +function toHex (str) { + return new Buffer(str).toString('hex') +} +``` + +***But what happens if `toHex` is called with a `Number` argument?*** + +### Remote Memory Disclosure + +If an attacker can make your program call the `Buffer` constructor with a `Number` +argument, then they can make it allocate uninitialized memory from the node.js process. +This could potentially disclose TLS private keys, user data, or database passwords. + +When the `Buffer` constructor is passed a `Number` argument, it returns an +**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like +this, you **MUST** overwrite the contents before returning it to the user. + +From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size): + +> `new Buffer(size)` +> +> - `size` Number +> +> The underlying memory for `Buffer` instances created in this way is not initialized. +> **The contents of a newly created `Buffer` are unknown and could contain sensitive +> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes. + +(Emphasis our own.) + +Whenever the programmer intended to create an uninitialized `Buffer` you often see code +like this: + +```js +var buf = new Buffer(16) + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### Would this ever be a problem in real code? + +Yes. It's surprisingly common to forget to check the type of your variables in a +dynamically-typed language like JavaScript. + +Usually the consequences of assuming the wrong type is that your program crashes with an +uncaught exception. But the failure mode for forgetting to check the type of arguments to +the `Buffer` constructor is more catastrophic. + +Here's an example of a vulnerable service that takes a JSON payload and converts it to +hex: + +```js +// Take a JSON payload {str: "some string"} and convert it to hex +var server = http.createServer(function (req, res) { + var data = '' + req.setEncoding('utf8') + req.on('data', function (chunk) { + data += chunk + }) + req.on('end', function () { + var body = JSON.parse(data) + res.end(new Buffer(body.str).toString('hex')) + }) +}) + +server.listen(8080) +``` + +In this example, an http client just has to send: + +```json +{ + "str": 1000 +} +``` + +and it will get back 1,000 bytes of uninitialized memory from the server. + +This is a very serious bug. It's similar in severity to the +[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process +memory by remote attackers. + + +### Which real-world packages were vulnerable? + +#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht) + +[Mathias Buus](https://github.com/mafintosh) and I +([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages, +[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow +anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get +them to reveal 20 bytes at a time of uninitialized memory from the node.js process. + +Here's +[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) +that fixed it. We released a new fixed version, created a +[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all +vulnerable versions on npm so users will get a warning to upgrade to a newer version. + +#### [`ws`](https://www.npmjs.com/package/ws) + +That got us wondering if there were other vulnerable packages. Sure enough, within a short +period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the +most popular WebSocket implementation in node.js. + +If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as +expected, then uninitialized server memory would be disclosed to the remote peer. + +These were the vulnerable methods: + +```js +socket.send(number) +socket.ping(number) +socket.pong(number) +``` + +Here's a vulnerable socket server with some echo functionality: + +```js +server.on('connection', function (socket) { + socket.on('message', function (message) { + message = JSON.parse(message) + if (message.type === 'echo') { + socket.send(message.data) // send back the user's message + } + }) +}) +``` + +`socket.send(number)` called on the server, will disclose server memory. + +Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue +was fixed, with a more detailed explanation. Props to +[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the +[Node Security Project disclosure](https://nodesecurity.io/advisories/67). + + +### What's the solution? + +It's important that node.js offers a fast way to get memory otherwise performance-critical +applications would needlessly get a lot slower. + +But we need a better way to *signal our intent* as programmers. **When we want +uninitialized memory, we should request it explicitly.** + +Sensitive functionality should not be packed into a developer-friendly API that loosely +accepts many different types. This type of API encourages the lazy practice of passing +variables in without checking the type very carefully. + +#### A new API: `Buffer.allocUnsafe(number)` + +The functionality of creating buffers with uninitialized memory should be part of another +API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that +frequently gets user input of all sorts of different types passed into it. + +```js +var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory! + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### How do we fix node.js core? + +We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as +`semver-major`) which defends against one case: + +```js +var str = 16 +new Buffer(str, 'utf8') +``` + +In this situation, it's implied that the programmer intended the first argument to be a +string, since they passed an encoding as a second argument. Today, node.js will allocate +uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not +what the programmer intended. + +But this is only a partial solution, since if the programmer does `new Buffer(variable)` +(without an `encoding` parameter) there's no way to know what they intended. If `variable` +is sometimes a number, then uninitialized memory will sometimes be returned. + +### What's the real long-term fix? + +We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when +we need uninitialized memory. But that would break 1000s of packages. + +~~We believe the best solution is to:~~ + +~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~ + +~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~ + +#### Update + +We now support adding three new APIs: + +- `Buffer.from(value)` - convert from any type to a buffer +- `Buffer.alloc(size)` - create a zero-filled buffer +- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size + +This solves the core problem that affected `ws` and `bittorrent-dht` which is +`Buffer(variable)` getting tricked into taking a number argument. + +This way, existing code continues working and the impact on the npm ecosystem will be +minimal. Over time, npm maintainers can migrate performance-critical code to use +`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`. + + +### Conclusion + +We think there's a serious design issue with the `Buffer` API as it exists today. It +promotes insecure software by putting high-risk functionality into a convenient API +with friendly "developer ergonomics". + +This wasn't merely a theoretical exercise because we found the issue in some of the +most popular npm packages. + +Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of +`buffer`. + +```js +var Buffer = require('safe-buffer').Buffer +``` + +Eventually, we hope that node.js core can switch to this new, safer behavior. We believe +the impact on the ecosystem would be minimal since it's not a breaking change. +Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while +older, insecure packages would magically become safe from this attack vector. + + +## links + +- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514) +- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67) +- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68) + + +## credit + +The original issues in `bittorrent-dht` +([disclosure](https://nodesecurity.io/advisories/68)) and +`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by +[Mathias Buus](https://github.com/mafintosh) and +[Feross Aboukhadijeh](http://feross.org/). + +Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues +and for his work running the [Node Security Project](https://nodesecurity.io/). + +Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and +auditing the code. + + +## license + +MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) diff --git a/bff/node_modules/safe-buffer/index.d.ts b/bff/node_modules/safe-buffer/index.d.ts new file mode 100644 index 0000000..e9fed80 --- /dev/null +++ b/bff/node_modules/safe-buffer/index.d.ts @@ -0,0 +1,187 @@ +declare module "safe-buffer" { + export class Buffer { + length: number + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): { type: 'Buffer', data: any[] }; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + swap16(): Buffer; + swap32(): Buffer; + swap64(): Buffer; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; + + /** + * Allocates a new buffer containing the given {str}. + * + * @param str String to store in buffer. + * @param encoding encoding to use, optional. Default is 'utf8' + */ + constructor (str: string, encoding?: string); + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + */ + constructor (size: number); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: Uint8Array); + /** + * Produces a Buffer backed by the same allocated memory as + * the given {ArrayBuffer}. + * + * + * @param arrayBuffer The ArrayBuffer with which to share memory. + */ + constructor (arrayBuffer: ArrayBuffer); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: any[]); + /** + * Copies the passed {buffer} data onto a new {Buffer} instance. + * + * @param buffer The buffer to copy. + */ + constructor (buffer: Buffer); + prototype: Buffer; + /** + * Allocates a new Buffer using an {array} of octets. + * + * @param array + */ + static from(array: any[]): Buffer; + /** + * When passed a reference to the .buffer property of a TypedArray instance, + * the newly created Buffer will share the same allocated memory as the TypedArray. + * The optional {byteOffset} and {length} arguments specify a memory range + * within the {arrayBuffer} that will be shared by the Buffer. + * + * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() + * @param byteOffset + * @param length + */ + static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + /** + * Copies the passed {buffer} data onto a new Buffer instance. + * + * @param buffer + */ + static from(buffer: Buffer): Buffer; + /** + * Creates a new Buffer containing the given JavaScript string {str}. + * If provided, the {encoding} parameter identifies the character encoding. + * If not provided, {encoding} defaults to 'utf8'. + * + * @param str + */ + static from(str: string, encoding?: string): Buffer; + /** + * Returns true if {obj} is a Buffer + * + * @param obj object to test. + */ + static isBuffer(obj: any): obj is Buffer; + /** + * Returns true if {encoding} is a valid encoding argument. + * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' + * + * @param encoding string to test. + */ + static isEncoding(encoding: string): boolean; + /** + * Gives the actual byte length of a string. encoding defaults to 'utf8'. + * This is not the same as String.prototype.length since that returns the number of characters in a string. + * + * @param string string to test. + * @param encoding encoding used to evaluate (defaults to 'utf8') + */ + static byteLength(string: string, encoding?: string): number; + /** + * Returns a buffer which is the result of concatenating all the buffers in the list together. + * + * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. + * If the list has exactly one item, then the first item of the list is returned. + * If the list has more than one item, then a new Buffer is created. + * + * @param list An array of Buffer objects to concatenate + * @param totalLength Total length of the buffers when concatenated. + * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. + */ + static concat(list: Buffer[], totalLength?: number): Buffer; + /** + * The same as buf1.compare(buf2). + */ + static compare(buf1: Buffer, buf2: Buffer): number; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + * @param fill if specified, buffer will be initialized by calling buf.fill(fill). + * If parameter is omitted, buffer will be filled with zeros. + * @param encoding encoding used for call to buf.fill while initalizing + */ + static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + /** + * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafe(size: number): Buffer; + /** + * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafeSlow(size: number): Buffer; + } +} \ No newline at end of file diff --git a/bff/node_modules/safe-buffer/index.js b/bff/node_modules/safe-buffer/index.js new file mode 100644 index 0000000..f8d3ec9 --- /dev/null +++ b/bff/node_modules/safe-buffer/index.js @@ -0,0 +1,65 @@ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.prototype = Object.create(Buffer.prototype) + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} diff --git a/bff/node_modules/safe-buffer/package.json b/bff/node_modules/safe-buffer/package.json new file mode 100644 index 0000000..f2869e2 --- /dev/null +++ b/bff/node_modules/safe-buffer/package.json @@ -0,0 +1,51 @@ +{ + "name": "safe-buffer", + "description": "Safer Node.js Buffer API", + "version": "5.2.1", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "https://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/safe-buffer/issues" + }, + "devDependencies": { + "standard": "*", + "tape": "^5.0.0" + }, + "homepage": "https://github.com/feross/safe-buffer", + "keywords": [ + "buffer", + "buffer allocate", + "node security", + "safe", + "safe-buffer", + "security", + "uninitialized" + ], + "license": "MIT", + "main": "index.js", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "git://github.com/feross/safe-buffer.git" + }, + "scripts": { + "test": "standard && tape test/*.js" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] +} diff --git a/bff/node_modules/safer-buffer/LICENSE b/bff/node_modules/safer-buffer/LICENSE new file mode 100644 index 0000000..4fe9e6f --- /dev/null +++ b/bff/node_modules/safer-buffer/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Nikita Skovoroda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/safer-buffer/Porting-Buffer.md b/bff/node_modules/safer-buffer/Porting-Buffer.md new file mode 100644 index 0000000..68d86ba --- /dev/null +++ b/bff/node_modules/safer-buffer/Porting-Buffer.md @@ -0,0 +1,268 @@ +# Porting to the Buffer.from/Buffer.alloc API + + +## Overview + +- [Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x.](#variant-1) (*recommended*) +- [Variant 2: Use a polyfill](#variant-2) +- [Variant 3: manual detection, with safeguards](#variant-3) + +### Finding problematic bits of code using grep + +Just run `grep -nrE '[^a-zA-Z](Slow)?Buffer\s*\(' --exclude-dir node_modules`. + +It will find all the potentially unsafe places in your own code (with some considerably unlikely +exceptions). + +### Finding problematic bits of code using Node.js 8 + +If you’re using Node.js ≥ 8.0.0 (which is recommended), Node.js exposes multiple options that help with finding the relevant pieces of code: + +- `--trace-warnings` will make Node.js show a stack trace for this warning and other warnings that are printed by Node.js. +- `--trace-deprecation` does the same thing, but only for deprecation warnings. +- `--pending-deprecation` will show more types of deprecation warnings. In particular, it will show the `Buffer()` deprecation warning, even on Node.js 8. + +You can set these flags using an environment variable: + +```console +$ export NODE_OPTIONS='--trace-warnings --pending-deprecation' +$ cat example.js +'use strict'; +const foo = new Buffer('foo'); +$ node example.js +(node:7147) [DEP0005] DeprecationWarning: The Buffer() and new Buffer() constructors are not recommended for use due to security and usability concerns. Please use the new Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() construction methods instead. + at showFlaggedDeprecation (buffer.js:127:13) + at new Buffer (buffer.js:148:3) + at Object. (/path/to/example.js:2:13) + [... more stack trace lines ...] +``` + +### Finding problematic bits of code using linters + +Eslint rules [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) +or +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) +also find calls to deprecated `Buffer()` API. Those rules are included in some pre-sets. + +There is a drawback, though, that it doesn't always +[work correctly](https://github.com/chalker/safer-buffer#why-not-safe-buffer) when `Buffer` is +overriden e.g. with a polyfill, so recommended is a combination of this and some other method +described above. + + +## Variant 1: Drop support for Node.js ≤ 4.4.x and 5.0.0 — 5.9.x. + +This is the recommended solution nowadays that would imply only minimal overhead. + +The Node.js 5.x release line has been unsupported since July 2016, and the Node.js 4.x release line reaches its End of Life in April 2018 (→ [Schedule](https://github.com/nodejs/Release#release-schedule)). This means that these versions of Node.js will *not* receive any updates, even in case of security issues, so using these release lines should be avoided, if at all possible. + +What you would do in this case is to convert all `new Buffer()` or `Buffer()` calls to use `Buffer.alloc()` or `Buffer.from()`, in the following way: + +- For `new Buffer(number)`, replace it with `Buffer.alloc(number)`. +- For `new Buffer(string)` (or `new Buffer(string, encoding)`), replace it with `Buffer.from(string)` (or `Buffer.from(string, encoding)`). +- For all other combinations of arguments (these are much rarer), also replace `new Buffer(...arguments)` with `Buffer.from(...arguments)`. + +Note that `Buffer.alloc()` is also _faster_ on the current Node.js versions than +`new Buffer(size).fill(0)`, which is what you would otherwise need to ensure zero-filling. + +Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) +or +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) +is recommended to avoid accidential unsafe Buffer API usage. + +There is also a [JSCodeshift codemod](https://github.com/joyeecheung/node-dep-codemod#dep005) +for automatically migrating Buffer constructors to `Buffer.alloc()` or `Buffer.from()`. +Note that it currently only works with cases where the arguments are literals or where the +constructor is invoked with two arguments. + +_If you currently support those older Node.js versions and dropping them would be a semver-major change +for you, or if you support older branches of your packages, consider using [Variant 2](#variant-2) +or [Variant 3](#variant-3) on older branches, so people using those older branches will also receive +the fix. That way, you will eradicate potential issues caused by unguarded Buffer API usage and +your users will not observe a runtime deprecation warning when running your code on Node.js 10._ + + +## Variant 2: Use a polyfill + +Utilize [safer-buffer](https://www.npmjs.com/package/safer-buffer) as a polyfill to support older +Node.js versions. + +You would take exacly the same steps as in [Variant 1](#variant-1), but with a polyfill +`const Buffer = require('safer-buffer').Buffer` in all files where you use the new `Buffer` api. + +Make sure that you do not use old `new Buffer` API — in any files where the line above is added, +using old `new Buffer()` API will _throw_. It will be easy to notice that in CI, though. + +Alternatively, you could use [buffer-from](https://www.npmjs.com/package/buffer-from) and/or +[buffer-alloc](https://www.npmjs.com/package/buffer-alloc) [ponyfills](https://ponyfill.com/) — +those are great, the only downsides being 4 deps in the tree and slightly more code changes to +migrate off them (as you would be using e.g. `Buffer.from` under a different name). If you need only +`Buffer.from` polyfilled — `buffer-from` alone which comes with no extra dependencies. + +_Alternatively, you could use [safe-buffer](https://www.npmjs.com/package/safe-buffer) — it also +provides a polyfill, but takes a different approach which has +[it's drawbacks](https://github.com/chalker/safer-buffer#why-not-safe-buffer). It will allow you +to also use the older `new Buffer()` API in your code, though — but that's arguably a benefit, as +it is problematic, can cause issues in your code, and will start emitting runtime deprecation +warnings starting with Node.js 10._ + +Note that in either case, it is important that you also remove all calls to the old Buffer +API manually — just throwing in `safe-buffer` doesn't fix the problem by itself, it just provides +a polyfill for the new API. I have seen people doing that mistake. + +Enabling eslint rule [no-buffer-constructor](https://eslint.org/docs/rules/no-buffer-constructor) +or +[node/no-deprecated-api](https://github.com/mysticatea/eslint-plugin-node/blob/master/docs/rules/no-deprecated-api.md) +is recommended. + +_Don't forget to drop the polyfill usage once you drop support for Node.js < 4.5.0._ + + +## Variant 3 — manual detection, with safeguards + +This is useful if you create Buffer instances in only a few places (e.g. one), or you have your own +wrapper around them. + +### Buffer(0) + +This special case for creating empty buffers can be safely replaced with `Buffer.concat([])`, which +returns the same result all the way down to Node.js 0.8.x. + +### Buffer(notNumber) + +Before: + +```js +var buf = new Buffer(notNumber, encoding); +``` + +After: + +```js +var buf; +if (Buffer.from && Buffer.from !== Uint8Array.from) { + buf = Buffer.from(notNumber, encoding); +} else { + if (typeof notNumber === 'number') + throw new Error('The "size" argument must be of type number.'); + buf = new Buffer(notNumber, encoding); +} +``` + +`encoding` is optional. + +Note that the `typeof notNumber` before `new Buffer` is required (for cases when `notNumber` argument is not +hard-coded) and _is not caused by the deprecation of Buffer constructor_ — it's exactly _why_ the +Buffer constructor is deprecated. Ecosystem packages lacking this type-check caused numereous +security issues — situations when unsanitized user input could end up in the `Buffer(arg)` create +problems ranging from DoS to leaking sensitive information to the attacker from the process memory. + +When `notNumber` argument is hardcoded (e.g. literal `"abc"` or `[0,1,2]`), the `typeof` check can +be omitted. + +Also note that using TypeScript does not fix this problem for you — when libs written in +`TypeScript` are used from JS, or when user input ends up there — it behaves exactly as pure JS, as +all type checks are translation-time only and are not present in the actual JS code which TS +compiles to. + +### Buffer(number) + +For Node.js 0.10.x (and below) support: + +```js +var buf; +if (Buffer.alloc) { + buf = Buffer.alloc(number); +} else { + buf = new Buffer(number); + buf.fill(0); +} +``` + +Otherwise (Node.js ≥ 0.12.x): + +```js +const buf = Buffer.alloc ? Buffer.alloc(number) : new Buffer(number).fill(0); +``` + +## Regarding Buffer.allocUnsafe + +Be extra cautious when using `Buffer.allocUnsafe`: + * Don't use it if you don't have a good reason to + * e.g. you probably won't ever see a performance difference for small buffers, in fact, those + might be even faster with `Buffer.alloc()`, + * if your code is not in the hot code path — you also probably won't notice a difference, + * keep in mind that zero-filling minimizes the potential risks. + * If you use it, make sure that you never return the buffer in a partially-filled state, + * if you are writing to it sequentially — always truncate it to the actuall written length + +Errors in handling buffers allocated with `Buffer.allocUnsafe` could result in various issues, +ranged from undefined behaviour of your code to sensitive data (user input, passwords, certs) +leaking to the remote attacker. + +_Note that the same applies to `new Buffer` usage without zero-filling, depending on the Node.js +version (and lacking type checks also adds DoS to the list of potential problems)._ + + +## FAQ + + +### What is wrong with the `Buffer` constructor? + +The `Buffer` constructor could be used to create a buffer in many different ways: + +- `new Buffer(42)` creates a `Buffer` of 42 bytes. Before Node.js 8, this buffer contained + *arbitrary memory* for performance reasons, which could include anything ranging from + program source code to passwords and encryption keys. +- `new Buffer('abc')` creates a `Buffer` that contains the UTF-8-encoded version of + the string `'abc'`. A second argument could specify another encoding: For example, + `new Buffer(string, 'base64')` could be used to convert a Base64 string into the original + sequence of bytes that it represents. +- There are several other combinations of arguments. + +This meant that, in code like `var buffer = new Buffer(foo);`, *it is not possible to tell +what exactly the contents of the generated buffer are* without knowing the type of `foo`. + +Sometimes, the value of `foo` comes from an external source. For example, this function +could be exposed as a service on a web server, converting a UTF-8 string into its Base64 form: + +``` +function stringToBase64(req, res) { + // The request body should have the format of `{ string: 'foobar' }` + const rawBytes = new Buffer(req.body.string) + const encoded = rawBytes.toString('base64') + res.end({ encoded: encoded }) +} +``` + +Note that this code does *not* validate the type of `req.body.string`: + +- `req.body.string` is expected to be a string. If this is the case, all goes well. +- `req.body.string` is controlled by the client that sends the request. +- If `req.body.string` is the *number* `50`, the `rawBytes` would be 50 bytes: + - Before Node.js 8, the content would be uninitialized + - After Node.js 8, the content would be `50` bytes with the value `0` + +Because of the missing type check, an attacker could intentionally send a number +as part of the request. Using this, they can either: + +- Read uninitialized memory. This **will** leak passwords, encryption keys and other + kinds of sensitive information. (Information leak) +- Force the program to allocate a large amount of memory. For example, when specifying + `500000000` as the input value, each request will allocate 500MB of memory. + This can be used to either exhaust the memory available of a program completely + and make it crash, or slow it down significantly. (Denial of Service) + +Both of these scenarios are considered serious security issues in a real-world +web server context. + +when using `Buffer.from(req.body.string)` instead, passing a number will always +throw an exception instead, giving a controlled behaviour that can always be +handled by the program. + + +### The `Buffer()` constructor has been deprecated for a while. Is this really an issue? + +Surveys of code in the `npm` ecosystem have shown that the `Buffer()` constructor is still +widely used. This includes new code, and overall usage of such code has actually been +*increasing*. diff --git a/bff/node_modules/safer-buffer/Readme.md b/bff/node_modules/safer-buffer/Readme.md new file mode 100644 index 0000000..14b0822 --- /dev/null +++ b/bff/node_modules/safer-buffer/Readme.md @@ -0,0 +1,156 @@ +# safer-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![javascript style guide][standard-image]][standard-url] [![Security Responsible Disclosure][secuirty-image]][secuirty-url] + +[travis-image]: https://travis-ci.org/ChALkeR/safer-buffer.svg?branch=master +[travis-url]: https://travis-ci.org/ChALkeR/safer-buffer +[npm-image]: https://img.shields.io/npm/v/safer-buffer.svg +[npm-url]: https://npmjs.org/package/safer-buffer +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com +[secuirty-image]: https://img.shields.io/badge/Security-Responsible%20Disclosure-green.svg +[secuirty-url]: https://github.com/nodejs/security-wg/blob/master/processes/responsible_disclosure_template.md + +Modern Buffer API polyfill without footguns, working on Node.js from 0.8 to current. + +## How to use? + +First, port all `Buffer()` and `new Buffer()` calls to `Buffer.alloc()` and `Buffer.from()` API. + +Then, to achieve compatibility with outdated Node.js versions (`<4.5.0` and 5.x `<5.9.0`), use +`const Buffer = require('safer-buffer').Buffer` in all files where you make calls to the new +Buffer API. _Use `var` instead of `const` if you need that for your Node.js version range support._ + +Also, see the +[porting Buffer](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) guide. + +## Do I need it? + +Hopefully, not — dropping support for outdated Node.js versions should be fine nowdays, and that +is the recommended path forward. You _do_ need to port to the `Buffer.alloc()` and `Buffer.from()` +though. + +See the [porting guide](https://github.com/ChALkeR/safer-buffer/blob/master/Porting-Buffer.md) +for a better description. + +## Why not [safe-buffer](https://npmjs.com/safe-buffer)? + +_In short: while `safe-buffer` serves as a polyfill for the new API, it allows old API usage and +itself contains footguns._ + +`safe-buffer` could be used safely to get the new API while still keeping support for older +Node.js versions (like this module), but while analyzing ecosystem usage of the old Buffer API +I found out that `safe-buffer` is itself causing problems in some cases. + +For example, consider the following snippet: + +```console +$ cat example.unsafe.js +console.log(Buffer(20)) +$ ./node-v6.13.0-linux-x64/bin/node example.unsafe.js + +$ standard example.unsafe.js +standard: Use JavaScript Standard Style (https://standardjs.com) + /home/chalker/repo/safer-buffer/example.unsafe.js:2:13: 'Buffer()' was deprecated since v6. Use 'Buffer.alloc()' or 'Buffer.from()' (use 'https://www.npmjs.com/package/safe-buffer' for '<4.5.0') instead. +``` + +This is allocates and writes to console an uninitialized chunk of memory. +[standard](https://www.npmjs.com/package/standard) linter (among others) catch that and warn people +to avoid using unsafe API. + +Let's now throw in `safe-buffer`! + +```console +$ cat example.safe-buffer.js +const Buffer = require('safe-buffer').Buffer +console.log(Buffer(20)) +$ standard example.safe-buffer.js +$ ./node-v6.13.0-linux-x64/bin/node example.safe-buffer.js + +``` + +See the problem? Adding in `safe-buffer` _magically removes the lint warning_, but the behavior +remains identiсal to what we had before, and when launched on Node.js 6.x LTS — this dumps out +chunks of uninitialized memory. +_And this code will still emit runtime warnings on Node.js 10.x and above._ + +That was done by design. I first considered changing `safe-buffer`, prohibiting old API usage or +emitting warnings on it, but that significantly diverges from `safe-buffer` design. After some +discussion, it was decided to move my approach into a separate package, and _this is that separate +package_. + +This footgun is not imaginary — I observed top-downloaded packages doing that kind of thing, +«fixing» the lint warning by blindly including `safe-buffer` without any actual changes. + +Also in some cases, even if the API _was_ migrated to use of safe Buffer API — a random pull request +can bring unsafe Buffer API usage back to the codebase by adding new calls — and that could go +unnoticed even if you have a linter prohibiting that (becase of the reason stated above), and even +pass CI. _I also observed that being done in popular packages._ + +Some examples: + * [webdriverio](https://github.com/webdriverio/webdriverio/commit/05cbd3167c12e4930f09ef7cf93b127ba4effae4#diff-124380949022817b90b622871837d56cR31) + (a module with 548 759 downloads/month), + * [websocket-stream](https://github.com/maxogden/websocket-stream/commit/c9312bd24d08271687d76da0fe3c83493871cf61) + (218 288 d/m, fix in [maxogden/websocket-stream#142](https://github.com/maxogden/websocket-stream/pull/142)), + * [node-serialport](https://github.com/node-serialport/node-serialport/commit/e8d9d2b16c664224920ce1c895199b1ce2def48c) + (113 138 d/m, fix in [node-serialport/node-serialport#1510](https://github.com/node-serialport/node-serialport/pull/1510)), + * [karma](https://github.com/karma-runner/karma/commit/3d94b8cf18c695104ca195334dc75ff054c74eec) + (3 973 193 d/m, fix in [karma-runner/karma#2947](https://github.com/karma-runner/karma/pull/2947)), + * [spdy-transport](https://github.com/spdy-http2/spdy-transport/commit/5375ac33f4a62a4f65bcfc2827447d42a5dbe8b1) + (5 970 727 d/m, fix in [spdy-http2/spdy-transport#53](https://github.com/spdy-http2/spdy-transport/pull/53)). + * And there are a lot more over the ecosystem. + +I filed a PR at +[mysticatea/eslint-plugin-node#110](https://github.com/mysticatea/eslint-plugin-node/pull/110) to +partially fix that (for cases when that lint rule is used), but it is a semver-major change for +linter rules and presets, so it would take significant time for that to reach actual setups. +_It also hasn't been released yet (2018-03-20)._ + +Also, `safer-buffer` discourages the usage of `.allocUnsafe()`, which is often done by a mistake. +It still supports it with an explicit concern barier, by placing it under +`require('safer-buffer/dangereous')`. + +## But isn't throwing bad? + +Not really. It's an error that could be noticed and fixed early, instead of causing havoc later like +unguarded `new Buffer()` calls that end up receiving user input can do. + +This package affects only the files where `var Buffer = require('safer-buffer').Buffer` was done, so +it is really simple to keep track of things and make sure that you don't mix old API usage with that. +Also, CI should hint anything that you might have missed. + +New commits, if tested, won't land new usage of unsafe Buffer API this way. +_Node.js 10.x also deals with that by printing a runtime depecation warning._ + +### Would it affect third-party modules? + +No, unless you explicitly do an awful thing like monkey-patching or overriding the built-in `Buffer`. +Don't do that. + +### But I don't want throwing… + +That is also fine! + +Also, it could be better in some cases when you don't comprehensive enough test coverage. + +In that case — just don't override `Buffer` and use +`var SaferBuffer = require('safer-buffer').Buffer` instead. + +That way, everything using `Buffer` natively would still work, but there would be two drawbacks: + +* `Buffer.from`/`Buffer.alloc` won't be polyfilled — use `SaferBuffer.from` and + `SaferBuffer.alloc` instead. +* You are still open to accidentally using the insecure deprecated API — use a linter to catch that. + +Note that using a linter to catch accidential `Buffer` constructor usage in this case is strongly +recommended. `Buffer` is not overriden in this usecase, so linters won't get confused. + +## «Without footguns»? + +Well, it is still possible to do _some_ things with `Buffer` API, e.g. accessing `.buffer` property +on older versions and duping things from there. You shouldn't do that in your code, probabably. + +The intention is to remove the most significant footguns that affect lots of packages in the +ecosystem, and to do it in the proper way. + +Also, this package doesn't protect against security issues affecting some Node.js versions, so for +usage in your own production code, it is still recommended to update to a Node.js version +[supported by upstream](https://github.com/nodejs/release#release-schedule). diff --git a/bff/node_modules/safer-buffer/dangerous.js b/bff/node_modules/safer-buffer/dangerous.js new file mode 100644 index 0000000..ca41fdc --- /dev/null +++ b/bff/node_modules/safer-buffer/dangerous.js @@ -0,0 +1,58 @@ +/* eslint-disable node/no-deprecated-api */ + +'use strict' + +var buffer = require('buffer') +var Buffer = buffer.Buffer +var safer = require('./safer.js') +var Safer = safer.Buffer + +var dangerous = {} + +var key + +for (key in safer) { + if (!safer.hasOwnProperty(key)) continue + dangerous[key] = safer[key] +} + +var Dangereous = dangerous.Buffer = {} + +// Copy Safer API +for (key in Safer) { + if (!Safer.hasOwnProperty(key)) continue + Dangereous[key] = Safer[key] +} + +// Copy those missing unsafe methods, if they are present +for (key in Buffer) { + if (!Buffer.hasOwnProperty(key)) continue + if (Dangereous.hasOwnProperty(key)) continue + Dangereous[key] = Buffer[key] +} + +if (!Dangereous.allocUnsafe) { + Dangereous.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } + return Buffer(size) + } +} + +if (!Dangereous.allocUnsafeSlow) { + Dangereous.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } + return buffer.SlowBuffer(size) + } +} + +module.exports = dangerous diff --git a/bff/node_modules/safer-buffer/package.json b/bff/node_modules/safer-buffer/package.json new file mode 100644 index 0000000..d452b04 --- /dev/null +++ b/bff/node_modules/safer-buffer/package.json @@ -0,0 +1,34 @@ +{ + "name": "safer-buffer", + "version": "2.1.2", + "description": "Modern Buffer API polyfill without footguns", + "main": "safer.js", + "scripts": { + "browserify-test": "browserify --external tape tests.js > browserify-tests.js && tape browserify-tests.js", + "test": "standard && tape tests.js" + }, + "author": { + "name": "Nikita Skovoroda", + "email": "chalkerx@gmail.com", + "url": "https://github.com/ChALkeR" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/ChALkeR/safer-buffer.git" + }, + "bugs": { + "url": "https://github.com/ChALkeR/safer-buffer/issues" + }, + "devDependencies": { + "standard": "^11.0.1", + "tape": "^4.9.0" + }, + "files": [ + "Porting-Buffer.md", + "Readme.md", + "tests.js", + "dangerous.js", + "safer.js" + ] +} diff --git a/bff/node_modules/safer-buffer/safer.js b/bff/node_modules/safer-buffer/safer.js new file mode 100644 index 0000000..37c7e1a --- /dev/null +++ b/bff/node_modules/safer-buffer/safer.js @@ -0,0 +1,77 @@ +/* eslint-disable node/no-deprecated-api */ + +'use strict' + +var buffer = require('buffer') +var Buffer = buffer.Buffer + +var safer = {} + +var key + +for (key in buffer) { + if (!buffer.hasOwnProperty(key)) continue + if (key === 'SlowBuffer' || key === 'Buffer') continue + safer[key] = buffer[key] +} + +var Safer = safer.Buffer = {} +for (key in Buffer) { + if (!Buffer.hasOwnProperty(key)) continue + if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue + Safer[key] = Buffer[key] +} + +safer.Buffer.prototype = Buffer.prototype + +if (!Safer.from || Safer.from === Uint8Array.from) { + Safer.from = function (value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) + } + if (value && typeof value.length === 'undefined') { + throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) + } + return Buffer(value, encodingOrOffset, length) + } +} + +if (!Safer.alloc) { + Safer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) + } + if (size < 0 || size >= 2 * (1 << 30)) { + throw new RangeError('The value "' + size + '" is invalid for option "size"') + } + var buf = Buffer(size) + if (!fill || fill.length === 0) { + buf.fill(0) + } else if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + return buf + } +} + +if (!safer.kStringMaxLength) { + try { + safer.kStringMaxLength = process.binding('buffer').kStringMaxLength + } catch (e) { + // we can't determine kStringMaxLength in environments where process.binding + // is unsupported, so let's not set it + } +} + +if (!safer.constants) { + safer.constants = { + MAX_LENGTH: safer.kMaxLength + } + if (safer.kStringMaxLength) { + safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength + } +} + +module.exports = safer diff --git a/bff/node_modules/safer-buffer/tests.js b/bff/node_modules/safer-buffer/tests.js new file mode 100644 index 0000000..7ed2777 --- /dev/null +++ b/bff/node_modules/safer-buffer/tests.js @@ -0,0 +1,406 @@ +/* eslint-disable node/no-deprecated-api */ + +'use strict' + +var test = require('tape') + +var buffer = require('buffer') + +var index = require('./') +var safer = require('./safer') +var dangerous = require('./dangerous') + +/* Inheritance tests */ + +test('Default is Safer', function (t) { + t.equal(index, safer) + t.notEqual(safer, dangerous) + t.notEqual(index, dangerous) + t.end() +}) + +test('Is not a function', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(typeof impl, 'object') + t.equal(typeof impl.Buffer, 'object') + }); + [buffer].forEach(function (impl) { + t.equal(typeof impl, 'object') + t.equal(typeof impl.Buffer, 'function') + }) + t.end() +}) + +test('Constructor throws', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.throws(function () { impl.Buffer() }) + t.throws(function () { impl.Buffer(0) }) + t.throws(function () { impl.Buffer('a') }) + t.throws(function () { impl.Buffer('a', 'utf-8') }) + t.throws(function () { return new impl.Buffer() }) + t.throws(function () { return new impl.Buffer(0) }) + t.throws(function () { return new impl.Buffer('a') }) + t.throws(function () { return new impl.Buffer('a', 'utf-8') }) + }) + t.end() +}) + +test('Safe methods exist', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(typeof impl.Buffer.alloc, 'function', 'alloc') + t.equal(typeof impl.Buffer.from, 'function', 'from') + }) + t.end() +}) + +test('Unsafe methods exist only in Dangerous', function (t) { + [index, safer].forEach(function (impl) { + t.equal(typeof impl.Buffer.allocUnsafe, 'undefined') + t.equal(typeof impl.Buffer.allocUnsafeSlow, 'undefined') + }); + [dangerous].forEach(function (impl) { + t.equal(typeof impl.Buffer.allocUnsafe, 'function') + t.equal(typeof impl.Buffer.allocUnsafeSlow, 'function') + }) + t.end() +}) + +test('Generic methods/properties are defined and equal', function (t) { + ['poolSize', 'isBuffer', 'concat', 'byteLength'].forEach(function (method) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer[method], buffer.Buffer[method], method) + t.notEqual(typeof impl.Buffer[method], 'undefined', method) + }) + }) + t.end() +}) + +test('Built-in buffer static methods/properties are inherited', function (t) { + Object.keys(buffer).forEach(function (method) { + if (method === 'SlowBuffer' || method === 'Buffer') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl[method], buffer[method], method) + t.notEqual(typeof impl[method], 'undefined', method) + }) + }) + t.end() +}) + +test('Built-in Buffer static methods/properties are inherited', function (t) { + Object.keys(buffer.Buffer).forEach(function (method) { + if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer[method], buffer.Buffer[method], method) + t.notEqual(typeof impl.Buffer[method], 'undefined', method) + }) + }) + t.end() +}) + +test('.prototype property of Buffer is inherited', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer.prototype, buffer.Buffer.prototype, 'prototype') + t.notEqual(typeof impl.Buffer.prototype, 'undefined', 'prototype') + }) + t.end() +}) + +test('All Safer methods are present in Dangerous', function (t) { + Object.keys(safer).forEach(function (method) { + if (method === 'Buffer') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl[method], safer[method], method) + if (method !== 'kStringMaxLength') { + t.notEqual(typeof impl[method], 'undefined', method) + } + }) + }) + Object.keys(safer.Buffer).forEach(function (method) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer[method], safer.Buffer[method], method) + t.notEqual(typeof impl.Buffer[method], 'undefined', method) + }) + }) + t.end() +}) + +test('Safe methods from Dangerous methods are present in Safer', function (t) { + Object.keys(dangerous).forEach(function (method) { + if (method === 'Buffer') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl[method], dangerous[method], method) + if (method !== 'kStringMaxLength') { + t.notEqual(typeof impl[method], 'undefined', method) + } + }) + }) + Object.keys(dangerous.Buffer).forEach(function (method) { + if (method === 'allocUnsafe' || method === 'allocUnsafeSlow') return; + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer[method], dangerous.Buffer[method], method) + t.notEqual(typeof impl.Buffer[method], 'undefined', method) + }) + }) + t.end() +}) + +/* Behaviour tests */ + +test('Methods return Buffers', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 10))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(0, 'a'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(10, 'x'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.alloc(9, 'ab'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(''))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('string', 'utf-8'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([0, 42, 3]))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from(new Uint8Array([0, 42, 3])))) + t.ok(buffer.Buffer.isBuffer(impl.Buffer.from([]))) + }); + ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { + t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](0))) + t.ok(buffer.Buffer.isBuffer(dangerous.Buffer[method](10))) + }) + t.end() +}) + +test('Constructor is buffer.Buffer', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer.alloc(0).constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(0, 10).constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(0, 'a').constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(10).constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(10, 'x').constructor, buffer.Buffer) + t.equal(impl.Buffer.alloc(9, 'ab').constructor, buffer.Buffer) + t.equal(impl.Buffer.from('').constructor, buffer.Buffer) + t.equal(impl.Buffer.from('string').constructor, buffer.Buffer) + t.equal(impl.Buffer.from('string', 'utf-8').constructor, buffer.Buffer) + t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').constructor, buffer.Buffer) + t.equal(impl.Buffer.from([0, 42, 3]).constructor, buffer.Buffer) + t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).constructor, buffer.Buffer) + t.equal(impl.Buffer.from([]).constructor, buffer.Buffer) + }); + [0, 10, 100].forEach(function (arg) { + t.equal(dangerous.Buffer.allocUnsafe(arg).constructor, buffer.Buffer) + t.equal(dangerous.Buffer.allocUnsafeSlow(arg).constructor, buffer.SlowBuffer(0).constructor) + }) + t.end() +}) + +test('Invalid calls throw', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.throws(function () { impl.Buffer.from(0) }) + t.throws(function () { impl.Buffer.from(10) }) + t.throws(function () { impl.Buffer.from(10, 'utf-8') }) + t.throws(function () { impl.Buffer.from('string', 'invalid encoding') }) + t.throws(function () { impl.Buffer.from(-10) }) + t.throws(function () { impl.Buffer.from(1e90) }) + t.throws(function () { impl.Buffer.from(Infinity) }) + t.throws(function () { impl.Buffer.from(-Infinity) }) + t.throws(function () { impl.Buffer.from(NaN) }) + t.throws(function () { impl.Buffer.from(null) }) + t.throws(function () { impl.Buffer.from(undefined) }) + t.throws(function () { impl.Buffer.from() }) + t.throws(function () { impl.Buffer.from({}) }) + t.throws(function () { impl.Buffer.alloc('') }) + t.throws(function () { impl.Buffer.alloc('string') }) + t.throws(function () { impl.Buffer.alloc('string', 'utf-8') }) + t.throws(function () { impl.Buffer.alloc('b25ldHdvdGhyZWU=', 'base64') }) + t.throws(function () { impl.Buffer.alloc(-10) }) + t.throws(function () { impl.Buffer.alloc(1e90) }) + t.throws(function () { impl.Buffer.alloc(2 * (1 << 30)) }) + t.throws(function () { impl.Buffer.alloc(Infinity) }) + t.throws(function () { impl.Buffer.alloc(-Infinity) }) + t.throws(function () { impl.Buffer.alloc(null) }) + t.throws(function () { impl.Buffer.alloc(undefined) }) + t.throws(function () { impl.Buffer.alloc() }) + t.throws(function () { impl.Buffer.alloc([]) }) + t.throws(function () { impl.Buffer.alloc([0, 42, 3]) }) + t.throws(function () { impl.Buffer.alloc({}) }) + }); + ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { + t.throws(function () { dangerous.Buffer[method]('') }) + t.throws(function () { dangerous.Buffer[method]('string') }) + t.throws(function () { dangerous.Buffer[method]('string', 'utf-8') }) + t.throws(function () { dangerous.Buffer[method](2 * (1 << 30)) }) + t.throws(function () { dangerous.Buffer[method](Infinity) }) + if (dangerous.Buffer[method] === buffer.Buffer.allocUnsafe) { + t.skip('Skipping, older impl of allocUnsafe coerced negative sizes to 0') + } else { + t.throws(function () { dangerous.Buffer[method](-10) }) + t.throws(function () { dangerous.Buffer[method](-1e90) }) + t.throws(function () { dangerous.Buffer[method](-Infinity) }) + } + t.throws(function () { dangerous.Buffer[method](null) }) + t.throws(function () { dangerous.Buffer[method](undefined) }) + t.throws(function () { dangerous.Buffer[method]() }) + t.throws(function () { dangerous.Buffer[method]([]) }) + t.throws(function () { dangerous.Buffer[method]([0, 42, 3]) }) + t.throws(function () { dangerous.Buffer[method]({}) }) + }) + t.end() +}) + +test('Buffers have appropriate lengths', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.equal(impl.Buffer.alloc(0).length, 0) + t.equal(impl.Buffer.alloc(10).length, 10) + t.equal(impl.Buffer.from('').length, 0) + t.equal(impl.Buffer.from('string').length, 6) + t.equal(impl.Buffer.from('string', 'utf-8').length, 6) + t.equal(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64').length, 11) + t.equal(impl.Buffer.from([0, 42, 3]).length, 3) + t.equal(impl.Buffer.from(new Uint8Array([0, 42, 3])).length, 3) + t.equal(impl.Buffer.from([]).length, 0) + }); + ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { + t.equal(dangerous.Buffer[method](0).length, 0) + t.equal(dangerous.Buffer[method](10).length, 10) + }) + t.end() +}) + +test('Buffers have appropriate lengths (2)', function (t) { + t.equal(index.Buffer.alloc, safer.Buffer.alloc) + t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) + var ok = true; + [ safer.Buffer.alloc, + dangerous.Buffer.allocUnsafe, + dangerous.Buffer.allocUnsafeSlow + ].forEach(function (method) { + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 1e5) + var buf = method(length) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + } + }) + t.ok(ok) + t.end() +}) + +test('.alloc(size) is zero-filled and has correct length', function (t) { + t.equal(index.Buffer.alloc, safer.Buffer.alloc) + t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) + var ok = true + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 2e6) + var buf = index.Buffer.alloc(length) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + var j + for (j = 0; j < length; j++) { + if (buf[j] !== 0) ok = false + } + buf.fill(1) + for (j = 0; j < length; j++) { + if (buf[j] !== 1) ok = false + } + } + t.ok(ok) + t.end() +}) + +test('.allocUnsafe / .allocUnsafeSlow are fillable and have correct lengths', function (t) { + ['allocUnsafe', 'allocUnsafeSlow'].forEach(function (method) { + var ok = true + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 2e6) + var buf = dangerous.Buffer[method](length) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + buf.fill(0, 0, length) + var j + for (j = 0; j < length; j++) { + if (buf[j] !== 0) ok = false + } + buf.fill(1, 0, length) + for (j = 0; j < length; j++) { + if (buf[j] !== 1) ok = false + } + } + t.ok(ok, method) + }) + t.end() +}) + +test('.alloc(size, fill) is `fill`-filled', function (t) { + t.equal(index.Buffer.alloc, safer.Buffer.alloc) + t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) + var ok = true + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 2e6) + var fill = Math.round(Math.random() * 255) + var buf = index.Buffer.alloc(length, fill) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + for (var j = 0; j < length; j++) { + if (buf[j] !== fill) ok = false + } + } + t.ok(ok) + t.end() +}) + +test('.alloc(size, fill) is `fill`-filled', function (t) { + t.equal(index.Buffer.alloc, safer.Buffer.alloc) + t.equal(index.Buffer.alloc, dangerous.Buffer.alloc) + var ok = true + for (var i = 0; i < 1e2; i++) { + var length = Math.round(Math.random() * 2e6) + var fill = Math.round(Math.random() * 255) + var buf = index.Buffer.alloc(length, fill) + if (!buffer.Buffer.isBuffer(buf)) ok = false + if (buf.length !== length) ok = false + for (var j = 0; j < length; j++) { + if (buf[j] !== fill) ok = false + } + } + t.ok(ok) + t.deepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 97)) + t.notDeepEqual(index.Buffer.alloc(9, 'a'), index.Buffer.alloc(9, 98)) + + var tmp = new buffer.Buffer(2) + tmp.fill('ok') + if (tmp[1] === tmp[0]) { + // Outdated Node.js + t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('ooooo')) + } else { + t.deepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('okoko')) + } + t.notDeepEqual(index.Buffer.alloc(5, 'ok'), index.Buffer.from('kokok')) + + t.end() +}) + +test('safer.Buffer.from returns results same as Buffer constructor', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.deepEqual(impl.Buffer.from(''), new buffer.Buffer('')) + t.deepEqual(impl.Buffer.from('string'), new buffer.Buffer('string')) + t.deepEqual(impl.Buffer.from('string', 'utf-8'), new buffer.Buffer('string', 'utf-8')) + t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), new buffer.Buffer('b25ldHdvdGhyZWU=', 'base64')) + t.deepEqual(impl.Buffer.from([0, 42, 3]), new buffer.Buffer([0, 42, 3])) + t.deepEqual(impl.Buffer.from(new Uint8Array([0, 42, 3])), new buffer.Buffer(new Uint8Array([0, 42, 3]))) + t.deepEqual(impl.Buffer.from([]), new buffer.Buffer([])) + }) + t.end() +}) + +test('safer.Buffer.from returns consistent results', function (t) { + [index, safer, dangerous].forEach(function (impl) { + t.deepEqual(impl.Buffer.from(''), impl.Buffer.alloc(0)) + t.deepEqual(impl.Buffer.from([]), impl.Buffer.alloc(0)) + t.deepEqual(impl.Buffer.from(new Uint8Array([])), impl.Buffer.alloc(0)) + t.deepEqual(impl.Buffer.from('string', 'utf-8'), impl.Buffer.from('string')) + t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from([115, 116, 114, 105, 110, 103])) + t.deepEqual(impl.Buffer.from('string'), impl.Buffer.from(impl.Buffer.from('string'))) + t.deepEqual(impl.Buffer.from('b25ldHdvdGhyZWU=', 'base64'), impl.Buffer.from('onetwothree')) + t.notDeepEqual(impl.Buffer.from('b25ldHdvdGhyZWU='), impl.Buffer.from('onetwothree')) + }) + t.end() +}) diff --git a/bff/node_modules/semver/LICENSE b/bff/node_modules/semver/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/bff/node_modules/semver/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/bff/node_modules/semver/README.md b/bff/node_modules/semver/README.md new file mode 100644 index 0000000..e9d1bc5 --- /dev/null +++ b/bff/node_modules/semver/README.md @@ -0,0 +1,665 @@ +semver(1) -- The semantic versioner for npm +=========================================== + +## Install + +```bash +npm install semver +```` + +## Usage + +As a node module: + +```js +const semver = require('semver') + +semver.valid('1.2.3') // '1.2.3' +semver.valid('a.b.c') // null +semver.clean(' =v1.2.3 ') // '1.2.3' +semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true +semver.gt('1.2.3', '9.8.7') // false +semver.lt('1.2.3', '9.8.7') // true +semver.minVersion('>=1.0.0') // '1.0.0' +semver.valid(semver.coerce('v2')) // '2.0.0' +semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7' +``` + +You can also just load the module for the function that you care about if +you'd like to minimize your footprint. + +```js +// load the whole API at once in a single object +const semver = require('semver') + +// or just load the bits you need +// all of them listed here, just pick and choose what you want + +// classes +const SemVer = require('semver/classes/semver') +const Comparator = require('semver/classes/comparator') +const Range = require('semver/classes/range') + +// functions for working with versions +const semverParse = require('semver/functions/parse') +const semverValid = require('semver/functions/valid') +const semverClean = require('semver/functions/clean') +const semverInc = require('semver/functions/inc') +const semverDiff = require('semver/functions/diff') +const semverMajor = require('semver/functions/major') +const semverMinor = require('semver/functions/minor') +const semverPatch = require('semver/functions/patch') +const semverPrerelease = require('semver/functions/prerelease') +const semverCompare = require('semver/functions/compare') +const semverRcompare = require('semver/functions/rcompare') +const semverCompareLoose = require('semver/functions/compare-loose') +const semverCompareBuild = require('semver/functions/compare-build') +const semverSort = require('semver/functions/sort') +const semverRsort = require('semver/functions/rsort') + +// low-level comparators between versions +const semverGt = require('semver/functions/gt') +const semverLt = require('semver/functions/lt') +const semverEq = require('semver/functions/eq') +const semverNeq = require('semver/functions/neq') +const semverGte = require('semver/functions/gte') +const semverLte = require('semver/functions/lte') +const semverCmp = require('semver/functions/cmp') +const semverCoerce = require('semver/functions/coerce') + +// working with ranges +const semverSatisfies = require('semver/functions/satisfies') +const semverMaxSatisfying = require('semver/ranges/max-satisfying') +const semverMinSatisfying = require('semver/ranges/min-satisfying') +const semverToComparators = require('semver/ranges/to-comparators') +const semverMinVersion = require('semver/ranges/min-version') +const semverValidRange = require('semver/ranges/valid') +const semverOutside = require('semver/ranges/outside') +const semverGtr = require('semver/ranges/gtr') +const semverLtr = require('semver/ranges/ltr') +const semverIntersects = require('semver/ranges/intersects') +const semverSimplifyRange = require('semver/ranges/simplify') +const semverRangeSubset = require('semver/ranges/subset') +``` + +As a command-line utility: + +``` +$ semver -h + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, prerelease, or release. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-n <0|1|false> + Base number for prerelease identifier (default: 0). + Use false to omit the number altogether. + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +--rtl + Coerce version strings right to left + +--ltr + Coerce version strings left to right (default) + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them. +``` + +## Versions + +A "version" is described by the `v2.0.0` specification found at +. + +A leading `"="` or `"v"` character is stripped off and ignored. +Support for stripping a leading "v" is kept for compatibility with `v1.0.0` of the SemVer +specification but should not be used anymore. + +## Ranges + +A `version range` is a set of `comparators` that specify versions +that satisfy the range. + +A `comparator` is composed of an `operator` and a `version`. The set +of primitive `operators` is: + +* `<` Less than +* `<=` Less than or equal to +* `>` Greater than +* `>=` Greater than or equal to +* `=` Equal. If no operator is specified, then equality is assumed, + so this operator is optional but MAY be included. + +For example, the comparator `>=1.2.7` would match the versions +`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6` +or `1.1.0`. The comparator `>1` is equivalent to `>=2.0.0` and +would match the versions `2.0.0` and `3.1.0`, but not the versions +`1.0.1` or `1.1.0`. + +Comparators can be joined by whitespace to form a `comparator set`, +which is satisfied by the **intersection** of all of the comparators +it includes. + +A range is composed of one or more comparator sets, joined by `||`. A +version matches a range if and only if every comparator in at least +one of the `||`-separated comparator sets is satisfied by the version. + +For example, the range `>=1.2.7 <1.3.0` would match the versions +`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`, +or `1.1.0`. + +The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`, +`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`. + +### Prerelease Tags + +If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then +it will only be allowed to satisfy comparator sets if at least one +comparator with the same `[major, minor, patch]` tuple also has a +prerelease tag. + +For example, the range `>1.2.3-alpha.3` would be allowed to match the +version `1.2.3-alpha.7`, but it would *not* be satisfied by +`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater +than" `1.2.3-alpha.3` according to the SemVer sort rules. The version +range only accepts prerelease tags on the `1.2.3` version. +Version `3.4.5` *would* satisfy the range because it does not have a +prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`. + +The purpose of this behavior is twofold. First, prerelease versions +frequently are updated very quickly, and contain many breaking changes +that are (by the author's design) not yet fit for public consumption. +Therefore, by default, they are excluded from range-matching +semantics. + +Second, a user who has opted into using a prerelease version has +indicated the intent to use *that specific* set of +alpha/beta/rc versions. By including a prerelease tag in the range, +the user is indicating that they are aware of the risk. However, it +is still not appropriate to assume that they have opted into taking a +similar risk on the *next* set of prerelease versions. + +Note that this behavior can be suppressed (treating all prerelease +versions as if they were normal versions, for range-matching) +by setting the `includePrerelease` flag on the options +object to any +[functions](https://github.com/npm/node-semver#functions) that do +range matching. + +#### Prerelease Identifiers + +The method `.inc` takes an additional `identifier` string argument that +will append the value of the string as a prerelease identifier: + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta') +// '1.2.4-beta.0' +``` + +command-line example: + +```bash +$ semver 1.2.3 -i prerelease --preid beta +1.2.4-beta.0 +``` + +Which then can be used to increment further: + +```bash +$ semver 1.2.4-beta.0 -i prerelease +1.2.4-beta.1 +``` + +To get out of the prerelease phase, use the `release` option: + +```bash +$ semver 1.2.4-beta.1 -i release +1.2.4 +``` + +#### Prerelease Identifier Base + +The method `.inc` takes an optional parameter 'identifierBase' string +that will let you let your prerelease number as zero-based or one-based. +Set to `false` to omit the prerelease number altogether. +If you do not specify this parameter, it will default to zero-based. + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta', '1') +// '1.2.4-beta.1' +``` + +```javascript +semver.inc('1.2.3', 'prerelease', 'beta', false) +// '1.2.4-beta' +``` + +command-line example: + +```bash +$ semver 1.2.3 -i prerelease --preid beta -n 1 +1.2.4-beta.1 +``` + +```bash +$ semver 1.2.3 -i prerelease --preid beta -n false +1.2.4-beta +``` + +### Advanced Range Syntax + +Advanced range syntax desugars to primitive comparators in +deterministic ways. + +Advanced ranges may be combined in the same way as primitive +comparators using white space or `||`. + +#### Hyphen Ranges `X.Y.Z - A.B.C` + +Specifies an inclusive set. + +* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4` + +If a partial version is provided as the first version in the inclusive +range, then the missing pieces are replaced with zeroes. + +* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4` + +If a partial version is provided as the second version in the +inclusive range, then all versions that start with the supplied parts +of the tuple are accepted, but nothing that would be greater than the +provided tuple parts. + +* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0-0` +* `1.2.3 - 2` := `>=1.2.3 <3.0.0-0` + +#### X-Ranges `1.2.x` `1.X` `1.2.*` `*` + +Any of `X`, `x`, or `*` may be used to "stand in" for one of the +numeric values in the `[major, minor, patch]` tuple. + +* `*` := `>=0.0.0` (Any non-prerelease version satisfies, unless + `includePrerelease` is specified, in which case any version at all + satisfies) +* `1.x` := `>=1.0.0 <2.0.0-0` (Matching major version) +* `1.2.x` := `>=1.2.0 <1.3.0-0` (Matching major and minor versions) + +A partial version range is treated as an X-Range, so the special +character is in fact optional. + +* `""` (empty string) := `*` := `>=0.0.0` +* `1` := `1.x.x` := `>=1.0.0 <2.0.0-0` +* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0-0` + +#### Tilde Ranges `~1.2.3` `~1.2` `~1` + +Allows patch-level changes if a minor version is specified on the +comparator. Allows minor-level changes if not. + +* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0-0` +* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0-0` (Same as `1.2.x`) +* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0-0` (Same as `1.x`) +* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0-0` +* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0-0` (Same as `0.2.x`) +* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0-0` (Same as `0.x`) +* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0-0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. + +#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4` + +Allows changes that do not modify the left-most non-zero element in the +`[major, minor, patch]` tuple. In other words, this allows patch and +minor updates for versions `1.0.0` and above, patch updates for +versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`. + +Many authors treat a `0.x` version as if the `x` were the major +"breaking-change" indicator. + +Caret ranges are ideal when an author may make breaking changes +between `0.2.4` and `0.3.0` releases, which is a common practice. +However, it presumes that there will *not* be breaking changes between +`0.2.4` and `0.2.5`. It allows for changes that are presumed to be +additive (but non-breaking), according to commonly observed practices. + +* `^1.2.3` := `>=1.2.3 <2.0.0-0` +* `^0.2.3` := `>=0.2.3 <0.3.0-0` +* `^0.0.3` := `>=0.0.3 <0.0.4-0` +* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0-0` Note that prereleases in + the `1.2.3` version will be allowed, if they are greater than or + equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but + `1.2.4-beta.2` would not, because it is a prerelease of a + different `[major, minor, patch]` tuple. +* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4-0` Note that prereleases in the + `0.0.3` version *only* will be allowed, if they are greater than or + equal to `beta`. So, `0.0.3-pr.2` would be allowed. + +When parsing caret ranges, a missing `patch` value desugars to the +number `0`, but will allow flexibility within that value, even if the +major and minor versions are both `0`. + +* `^1.2.x` := `>=1.2.0 <2.0.0-0` +* `^0.0.x` := `>=0.0.0 <0.1.0-0` +* `^0.0` := `>=0.0.0 <0.1.0-0` + +A missing `minor` and `patch` values will desugar to zero, but also +allow flexibility within those values, even if the major version is +zero. + +* `^1.x` := `>=1.0.0 <2.0.0-0` +* `^0.x` := `>=0.0.0 <1.0.0-0` + +### Range Grammar + +Putting all this together, here is a Backus-Naur grammar for ranges, +for the benefit of parser authors: + +```bnf +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ +``` + +## Functions + +All methods and classes take a final `options` object argument. All +options in this object are `false` by default. The options supported +are: + +- `loose`: Be more forgiving about not-quite-valid semver strings. + (Any resulting output will always be 100% strict compliant, of + course.) For backwards compatibility reasons, if the `options` + argument is a boolean value instead of an object, it is interpreted + to be the `loose` param. +- `includePrerelease`: Set to suppress the [default + behavior](https://github.com/npm/node-semver#prerelease-tags) of + excluding prerelease tagged versions from ranges unless they are + explicitly opted into. + +Strict-mode Comparators and Ranges will be strict about the SemVer +strings that they parse. + +* `valid(v)`: Return the parsed version, or null if it's not valid. +* `inc(v, releaseType, options, identifier, identifierBase)`: + Return the version incremented by the release + type (`major`, `premajor`, `minor`, `preminor`, `patch`, + `prepatch`, `prerelease`, or `release`), or null if it's not valid + * `premajor` in one call will bump the version up to the next major + version and down to a prerelease of that major version. + `preminor`, and `prepatch` work the same way. + * If called from a non-prerelease version, `prerelease` will work the + same as `prepatch`. It increments the patch version and then makes a + prerelease. If the input version is already a prerelease it simply + increments it. + * `release` will remove any prerelease part of the version. + * `identifier` can be used to prefix `premajor`, `preminor`, + `prepatch`, or `prerelease` version increments. `identifierBase` + is the base to be used for the `prerelease` identifier. +* `prerelease(v)`: Returns an array of prerelease components, or null + if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]` +* `major(v)`: Return the major version number. +* `minor(v)`: Return the minor version number. +* `patch(v)`: Return the patch version number. +* `intersects(r1, r2, loose)`: Return true if the two supplied ranges + or comparators intersect. +* `parse(v)`: Attempt to parse a string as a semantic version, returning either + a `SemVer` object or `null`. + +### Comparison + +* `gt(v1, v2)`: `v1 > v2` +* `gte(v1, v2)`: `v1 >= v2` +* `lt(v1, v2)`: `v1 < v2` +* `lte(v1, v2)`: `v1 <= v2` +* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent, + even if they're not the same string. You already know how to + compare strings. +* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`. +* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call + the corresponding function above. `"==="` and `"!=="` do simple + string comparison, but are included for completeness. Throws if an + invalid comparison string is provided. +* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if + `v2` is greater. Sorts in ascending order if passed to `Array.sort()`. +* `rcompare(v1, v2)`: The reverse of `compare`. Sorts an array of versions + in descending order when passed to `Array.sort()`. +* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions + are equal. Sorts in ascending order if passed to `Array.sort()`. +* `compareLoose(v1, v2)`: Short for `compare(v1, v2, { loose: true })`. +* `diff(v1, v2)`: Returns the difference between two versions by the release type + (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`), + or null if the versions are the same. + +### Sorting + +* `sort(versions)`: Returns a sorted array of versions based on the `compareBuild` + function. +* `rsort(versions)`: The reverse of `sort`. Returns an array of versions based on + the `compareBuild` function in descending order. + +### Comparators + +* `intersects(comparator)`: Return true if the comparators intersect + +### Ranges + +* `validRange(range)`: Return the valid range or null if it's not valid. +* `satisfies(version, range)`: Return true if the version satisfies the + range. +* `maxSatisfying(versions, range)`: Return the highest version in the list + that satisfies the range, or `null` if none of them do. +* `minSatisfying(versions, range)`: Return the lowest version in the list + that satisfies the range, or `null` if none of them do. +* `minVersion(range)`: Return the lowest version that can match + the given range. +* `gtr(version, range)`: Return `true` if the version is greater than all the + versions possible in the range. +* `ltr(version, range)`: Return `true` if the version is less than all the + versions possible in the range. +* `outside(version, range, hilo)`: Return true if the version is outside + the bounds of the range in either the high or low direction. The + `hilo` argument must be either the string `'>'` or `'<'`. (This is + the function called by `gtr` and `ltr`.) +* `intersects(range)`: Return true if any of the range comparators intersect. +* `simplifyRange(versions, range)`: Return a "simplified" range that + matches the same items in the `versions` list as the range specified. Note + that it does *not* guarantee that it would match the same versions in all + cases, only for the set of versions provided. This is useful when + generating ranges by joining together multiple versions with `||` + programmatically, to provide the user with something a bit more + ergonomic. If the provided range is shorter in string-length than the + generated range, then that is returned. +* `subset(subRange, superRange)`: Return `true` if the `subRange` range is + entirely contained by the `superRange` range. + +Note that, since ranges may be non-contiguous, a version might not be +greater than a range, less than a range, *or* satisfy a range! For +example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9` +until `2.0.0`, so version `1.2.10` would not be greater than the +range (because `2.0.1` satisfies, which is higher), nor less than the +range (since `1.2.8` satisfies, which is lower), and it also does not +satisfy the range. + +If you want to know if a version satisfies or does not satisfy a +range, use the `satisfies(version, range)` function. + +### Coercion + +* `coerce(version, options)`: Coerces a string to semver if possible + +This aims to provide a very forgiving translation of a non-semver string to +semver. It looks for the first digit in a string and consumes all +remaining characters which satisfy at least a partial semver (e.g., `1`, +`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer +versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All +surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes +`3.4.0`). Only text which lacks digits will fail coercion (`version one` +is not valid). The maximum length for any semver component considered for +coercion is 16 characters; longer components will be ignored +(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any +semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value +components are invalid (`9999999999999999.4.7.4` is likely invalid). + +If the `options.rtl` flag is set, then `coerce` will return the right-most +coercible tuple that does not share an ending index with a longer coercible +tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not +`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of +any other overlapping SemVer tuple. + +If the `options.includePrerelease` flag is set, then the `coerce` result will contain +prerelease and build parts of a version. For example, `1.2.3.4-rc.1+rev.2` +will preserve prerelease `rc.1` and build `rev.2` in the result. + +### Clean + +* `clean(version)`: Clean a string to be a valid semver if possible + +This will return a cleaned and trimmed semver version. If the provided +version is not valid a null will be returned. This does not work for +ranges. + +ex. +* `s.clean(' = v 2.1.5foo')`: `null` +* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'` +* `s.clean(' = v 2.1.5-foo')`: `null` +* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'` +* `s.clean('=v2.1.5')`: `'2.1.5'` +* `s.clean(' =v2.1.5')`: `'2.1.5'` +* `s.clean(' 2.1.5 ')`: `'2.1.5'` +* `s.clean('~1.0.0')`: `null` + +## Constants + +As a convenience, helper constants are exported to provide information about what `node-semver` supports: + +### `RELEASE_TYPES` + +- major +- premajor +- minor +- preminor +- patch +- prepatch +- prerelease + +``` +const semver = require('semver'); + +if (semver.RELEASE_TYPES.includes(arbitraryUserInput)) { + console.log('This is a valid release type!'); +} else { + console.warn('This is NOT a valid release type!'); +} +``` + +### `SEMVER_SPEC_VERSION` + +2.0.0 + +``` +const semver = require('semver'); + +console.log('We are currently using the semver specification version:', semver.SEMVER_SPEC_VERSION); +``` + +## Exported Modules + + + +You may pull in just the part of this semver utility that you need if you +are sensitive to packing and tree-shaking concerns. The main +`require('semver')` export uses getter functions to lazily load the parts +of the API that are used. + +The following modules are available: + +* `require('semver')` +* `require('semver/classes')` +* `require('semver/classes/comparator')` +* `require('semver/classes/range')` +* `require('semver/classes/semver')` +* `require('semver/functions/clean')` +* `require('semver/functions/cmp')` +* `require('semver/functions/coerce')` +* `require('semver/functions/compare')` +* `require('semver/functions/compare-build')` +* `require('semver/functions/compare-loose')` +* `require('semver/functions/diff')` +* `require('semver/functions/eq')` +* `require('semver/functions/gt')` +* `require('semver/functions/gte')` +* `require('semver/functions/inc')` +* `require('semver/functions/lt')` +* `require('semver/functions/lte')` +* `require('semver/functions/major')` +* `require('semver/functions/minor')` +* `require('semver/functions/neq')` +* `require('semver/functions/parse')` +* `require('semver/functions/patch')` +* `require('semver/functions/prerelease')` +* `require('semver/functions/rcompare')` +* `require('semver/functions/rsort')` +* `require('semver/functions/satisfies')` +* `require('semver/functions/sort')` +* `require('semver/functions/valid')` +* `require('semver/ranges/gtr')` +* `require('semver/ranges/intersects')` +* `require('semver/ranges/ltr')` +* `require('semver/ranges/max-satisfying')` +* `require('semver/ranges/min-satisfying')` +* `require('semver/ranges/min-version')` +* `require('semver/ranges/outside')` +* `require('semver/ranges/simplify')` +* `require('semver/ranges/subset')` +* `require('semver/ranges/to-comparators')` +* `require('semver/ranges/valid')` + diff --git a/bff/node_modules/semver/bin/semver.js b/bff/node_modules/semver/bin/semver.js new file mode 100755 index 0000000..d62bfc0 --- /dev/null +++ b/bff/node_modules/semver/bin/semver.js @@ -0,0 +1,191 @@ +#!/usr/bin/env node +// Standalone semver comparison program. +// Exits successfully and prints matching version(s) if +// any supplied version is valid and passes all tests. + +'use strict' + +const argv = process.argv.slice(2) + +let versions = [] + +const range = [] + +let inc = null + +const version = require('../package.json').version + +let loose = false + +let includePrerelease = false + +let coerce = false + +let rtl = false + +let identifier + +let identifierBase + +const semver = require('../') +const parseOptions = require('../internal/parse-options') + +let reverse = false + +let options = {} + +const main = () => { + if (!argv.length) { + return help() + } + while (argv.length) { + let a = argv.shift() + const indexOfEqualSign = a.indexOf('=') + if (indexOfEqualSign !== -1) { + const value = a.slice(indexOfEqualSign + 1) + a = a.slice(0, indexOfEqualSign) + argv.unshift(value) + } + switch (a) { + case '-rv': case '-rev': case '--rev': case '--reverse': + reverse = true + break + case '-l': case '--loose': + loose = true + break + case '-p': case '--include-prerelease': + includePrerelease = true + break + case '-v': case '--version': + versions.push(argv.shift()) + break + case '-i': case '--inc': case '--increment': + switch (argv[0]) { + case 'major': case 'minor': case 'patch': case 'prerelease': + case 'premajor': case 'preminor': case 'prepatch': + case 'release': + inc = argv.shift() + break + default: + inc = 'patch' + break + } + break + case '--preid': + identifier = argv.shift() + break + case '-r': case '--range': + range.push(argv.shift()) + break + case '-n': + identifierBase = argv.shift() + if (identifierBase === 'false') { + identifierBase = false + } + break + case '-c': case '--coerce': + coerce = true + break + case '--rtl': + rtl = true + break + case '--ltr': + rtl = false + break + case '-h': case '--help': case '-?': + return help() + default: + versions.push(a) + break + } + } + + options = parseOptions({ loose, includePrerelease, rtl }) + + versions = versions.map((v) => { + return coerce ? (semver.coerce(v, options) || { version: v }).version : v + }).filter((v) => { + return semver.valid(v, options) + }) + if (!versions.length) { + return fail() + } + if (inc && (versions.length !== 1 || range.length)) { + return failInc() + } + + for (let i = 0, l = range.length; i < l; i++) { + versions = versions.filter((v) => { + return semver.satisfies(v, range[i], options) + }) + if (!versions.length) { + return fail() + } + } + versions + .sort((a, b) => semver[reverse ? 'rcompare' : 'compare'](a, b, options)) + .map(v => semver.clean(v, options)) + .map(v => inc ? semver.inc(v, inc, options, identifier, identifierBase) : v) + .forEach(v => console.log(v)) +} + +const failInc = () => { + console.error('--inc can only be used on a single version with no range') + fail() +} + +const fail = () => process.exit(1) + +const help = () => console.log( +`SemVer ${version} + +A JavaScript implementation of the https://semver.org/ specification +Copyright Isaac Z. Schlueter + +Usage: semver [options] [ [...]] +Prints valid versions sorted by SemVer precedence + +Options: +-r --range + Print versions that match the specified range. + +-i --increment [] + Increment a version by the specified level. Level can + be one of: major, minor, patch, premajor, preminor, + prepatch, prerelease, or release. Default level is 'patch'. + Only one version may be specified. + +--preid + Identifier to be used to prefix premajor, preminor, + prepatch or prerelease version increments. + +-l --loose + Interpret versions and ranges loosely + +-p --include-prerelease + Always include prerelease versions in range matching + +-c --coerce + Coerce a string into SemVer if possible + (does not imply --loose) + +--rtl + Coerce version strings right to left + +--ltr + Coerce version strings left to right (default) + +-n + Base number to be used for the prerelease identifier. + Can be either 0 or 1, or false to omit the number altogether. + Defaults to 0. + +Program exits successfully if any valid version satisfies +all supplied ranges, and prints all satisfying versions. + +If no satisfying versions are found, then exits failure. + +Versions are printed in ascending order, so supplying +multiple versions to the utility will just sort them.`) + +main() diff --git a/bff/node_modules/semver/classes/comparator.js b/bff/node_modules/semver/classes/comparator.js new file mode 100644 index 0000000..647c1f0 --- /dev/null +++ b/bff/node_modules/semver/classes/comparator.js @@ -0,0 +1,143 @@ +'use strict' + +const ANY = Symbol('SemVer ANY') +// hoisted class for cyclic dependency +class Comparator { + static get ANY () { + return ANY + } + + constructor (comp, options) { + options = parseOptions(options) + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + comp = comp.trim().split(/\s+/).join(' ') + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) + } + + parse (comp) { + const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] + const m = comp.match(r) + + if (!m) { + throw new TypeError(`Invalid comparator: ${comp}`) + } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } + } + + toString () { + return this.value + } + + test (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + return cmp(version, this.operator, this.semver, this.options) + } + + intersects (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (this.operator === '') { + if (this.value === '') { + return true + } + return new Range(comp.value, options).test(this.value) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + return new Range(this.value, options).test(comp.semver) + } + + options = parseOptions(options) + + // Special cases where nothing can possibly be lower + if (options.includePrerelease && + (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) { + return false + } + if (!options.includePrerelease && + (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) { + return false + } + + // Same direction increasing (> or >=) + if (this.operator.startsWith('>') && comp.operator.startsWith('>')) { + return true + } + // Same direction decreasing (< or <=) + if (this.operator.startsWith('<') && comp.operator.startsWith('<')) { + return true + } + // same SemVer and both sides are inclusive (<= or >=) + if ( + (this.semver.version === comp.semver.version) && + this.operator.includes('=') && comp.operator.includes('=')) { + return true + } + // opposite directions less than + if (cmp(this.semver, '<', comp.semver, options) && + this.operator.startsWith('>') && comp.operator.startsWith('<')) { + return true + } + // opposite directions greater than + if (cmp(this.semver, '>', comp.semver, options) && + this.operator.startsWith('<') && comp.operator.startsWith('>')) { + return true + } + return false + } +} + +module.exports = Comparator + +const parseOptions = require('../internal/parse-options') +const { safeRe: re, t } = require('../internal/re') +const cmp = require('../functions/cmp') +const debug = require('../internal/debug') +const SemVer = require('./semver') +const Range = require('./range') diff --git a/bff/node_modules/semver/classes/index.js b/bff/node_modules/semver/classes/index.js new file mode 100644 index 0000000..91c24ec --- /dev/null +++ b/bff/node_modules/semver/classes/index.js @@ -0,0 +1,7 @@ +'use strict' + +module.exports = { + SemVer: require('./semver.js'), + Range: require('./range.js'), + Comparator: require('./comparator.js'), +} diff --git a/bff/node_modules/semver/classes/range.js b/bff/node_modules/semver/classes/range.js new file mode 100644 index 0000000..94629ce --- /dev/null +++ b/bff/node_modules/semver/classes/range.js @@ -0,0 +1,557 @@ +'use strict' + +const SPACE_CHARACTERS = /\s+/g + +// hoisted class for cyclic dependency +class Range { + constructor (range, options) { + options = parseOptions(options) + + if (range instanceof Range) { + if ( + range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease + ) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + // just put it in the set and return + this.raw = range.value + this.set = [[range]] + this.formatted = undefined + return this + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First reduce all whitespace as much as possible so we do not have to rely + // on potentially slow regexes like \s*. This is then stored and used for + // future error messages as well. + this.raw = range.trim().replace(SPACE_CHARACTERS, ' ') + + // First, split on || + this.set = this.raw + .split('||') + // map the range to a 2d array of comparators + .map(r => this.parseRange(r.trim())) + // throw out any comparator lists that are empty + // this generally means that it was not a valid range, which is allowed + // in loose mode, but will still throw if the WHOLE range is invalid. + .filter(c => c.length) + + if (!this.set.length) { + throw new TypeError(`Invalid SemVer Range: ${this.raw}`) + } + + // if we have any that are not the null set, throw out null sets. + if (this.set.length > 1) { + // keep the first one, in case they're all null sets + const first = this.set[0] + this.set = this.set.filter(c => !isNullSet(c[0])) + if (this.set.length === 0) { + this.set = [first] + } else if (this.set.length > 1) { + // if we have any that are *, then the range is just * + for (const c of this.set) { + if (c.length === 1 && isAny(c[0])) { + this.set = [c] + break + } + } + } + } + + this.formatted = undefined + } + + get range () { + if (this.formatted === undefined) { + this.formatted = '' + for (let i = 0; i < this.set.length; i++) { + if (i > 0) { + this.formatted += '||' + } + const comps = this.set[i] + for (let k = 0; k < comps.length; k++) { + if (k > 0) { + this.formatted += ' ' + } + this.formatted += comps[k].toString().trim() + } + } + } + return this.formatted + } + + format () { + return this.range + } + + toString () { + return this.range + } + + parseRange (range) { + // memoize range parsing for performance. + // this is a very hot path, and fully deterministic. + const memoOpts = + (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) | + (this.options.loose && FLAG_LOOSE) + const memoKey = memoOpts + ':' + range + const cached = cache.get(memoKey) + if (cached) { + return cached + } + + const loose = this.options.loose + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) + debug('hyphen replace', range) + + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(re[t.TILDETRIM], tildeTrimReplace) + debug('tilde trim', range) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(re[t.CARETTRIM], caretTrimReplace) + debug('caret trim', range) + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + let rangeList = range + .split(' ') + .map(comp => parseComparator(comp, this.options)) + .join(' ') + .split(/\s+/) + // >=0.0.0 is equivalent to * + .map(comp => replaceGTE0(comp, this.options)) + + if (loose) { + // in loose mode, throw out any that are not valid comparators + rangeList = rangeList.filter(comp => { + debug('loose invalid filter', comp, this.options) + return !!comp.match(re[t.COMPARATORLOOSE]) + }) + } + debug('range list', rangeList) + + // if any comparators are the null set, then replace with JUST null set + // if more than one comparator, remove any * comparators + // also, don't include the same comparator more than once + const rangeMap = new Map() + const comparators = rangeList.map(comp => new Comparator(comp, this.options)) + for (const comp of comparators) { + if (isNullSet(comp)) { + return [comp] + } + rangeMap.set(comp.value, comp) + } + if (rangeMap.size > 1 && rangeMap.has('')) { + rangeMap.delete('') + } + + const result = [...rangeMap.values()] + cache.set(memoKey, result) + return result + } + + intersects (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some((thisComparators) => { + return ( + isSatisfiable(thisComparators, options) && + range.set.some((rangeComparators) => { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every((thisComparator) => { + return rangeComparators.every((rangeComparator) => { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) + } + + // if ANY of the sets match ALL of its comparators, then pass + test (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + for (let i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false + } +} + +module.exports = Range + +const LRU = require('../internal/lrucache') +const cache = new LRU() + +const parseOptions = require('../internal/parse-options') +const Comparator = require('./comparator') +const debug = require('../internal/debug') +const SemVer = require('./semver') +const { + safeRe: re, + t, + comparatorTrimReplace, + tildeTrimReplace, + caretTrimReplace, +} = require('../internal/re') +const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants') + +const isNullSet = c => c.value === '<0.0.0-0' +const isAny = c => c.value === '' + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +const isSatisfiable = (comparators, options) => { + let result = true + const remainingComparators = comparators.slice() + let testComparator = remainingComparators.pop() + + while (result && remainingComparators.length) { + result = remainingComparators.every((otherComparator) => { + return testComparator.intersects(otherComparator, options) + }) + + testComparator = remainingComparators.pop() + } + + return result +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +const parseComparator = (comp, options) => { + comp = comp.replace(re[t.BUILD], '') + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +const isX = id => !id || id.toLowerCase() === 'x' || id === '*' + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 +// ~0.0.1 --> >=0.0.1 <0.1.0-0 +const replaceTildes = (comp, options) => { + return comp + .trim() + .split(/\s+/) + .map((c) => replaceTilde(c, options)) + .join(' ') +} + +const replaceTilde = (comp, options) => { + const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] + return comp.replace(r, (_, M, m, p, pr) => { + debug('tilde', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0 <${+M + 1}.0.0-0` + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0-0 + ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` + } else if (pr) { + debug('replaceTilde pr', pr) + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } else { + // ~1.2.3 == >=1.2.3 <1.3.0-0 + ret = `>=${M}.${m}.${p + } <${M}.${+m + 1}.0-0` + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 +// ^1.2.3 --> >=1.2.3 <2.0.0-0 +// ^1.2.0 --> >=1.2.0 <2.0.0-0 +// ^0.0.1 --> >=0.0.1 <0.0.2-0 +// ^0.1.0 --> >=0.1.0 <0.2.0-0 +const replaceCarets = (comp, options) => { + return comp + .trim() + .split(/\s+/) + .map((c) => replaceCaret(c, options)) + .join(' ') +} + +const replaceCaret = (comp, options) => { + debug('caret', comp, options) + const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] + const z = options.includePrerelease ? '-0' : '' + return comp.replace(r, (_, M, m, p, pr) => { + debug('caret', comp, _, M, m, p, pr) + let ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` + } else if (isX(p)) { + if (M === '0') { + ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` + } else { + ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${M}.${+m + 1}.0-0` + } + } else { + ret = `>=${M}.${m}.${p}-${pr + } <${+M + 1}.0.0-0` + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = `>=${M}.${m}.${p + }${z} <${M}.${m}.${+p + 1}-0` + } else { + ret = `>=${M}.${m}.${p + }${z} <${M}.${+m + 1}.0-0` + } + } else { + ret = `>=${M}.${m}.${p + } <${+M + 1}.0.0-0` + } + } + + debug('caret return', ret) + return ret + }) +} + +const replaceXRanges = (comp, options) => { + debug('replaceXRanges', comp, options) + return comp + .split(/\s+/) + .map((c) => replaceXRange(c, options)) + .join(' ') +} + +const replaceXRange = (comp, options) => { + comp = comp.trim() + const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] + return comp.replace(r, (ret, gtlt, M, m, p, pr) => { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + const xM = isX(M) + const xm = xM || isX(m) + const xp = xm || isX(p) + const anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + if (gtlt === '<') { + pr = '-0' + } + + ret = `${gtlt + M}.${m}.${p}${pr}` + } else if (xm) { + ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` + } else if (xp) { + ret = `>=${M}.${m}.0${pr + } <${M}.${+m + 1}.0-0` + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +const replaceStars = (comp, options) => { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp + .trim() + .replace(re[t.STAR], '') +} + +const replaceGTE0 = (comp, options) => { + debug('replaceGTE0', comp, options) + return comp + .trim() + .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') +} + +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 +// TODO build? +const hyphenReplace = incPr => ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr) => { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = `>=${fM}.0.0${incPr ? '-0' : ''}` + } else if (isX(fp)) { + from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}` + } else if (fpr) { + from = `>=${from}` + } else { + from = `>=${from}${incPr ? '-0' : ''}` + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = `<${+tM + 1}.0.0-0` + } else if (isX(tp)) { + to = `<${tM}.${+tm + 1}.0-0` + } else if (tpr) { + to = `<=${tM}.${tm}.${tp}-${tpr}` + } else if (incPr) { + to = `<${tM}.${tm}.${+tp + 1}-0` + } else { + to = `<=${to}` + } + + return `${from} ${to}`.trim() +} + +const testSet = (set, version, options) => { + for (let i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (let i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === Comparator.ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + const allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} diff --git a/bff/node_modules/semver/classes/semver.js b/bff/node_modules/semver/classes/semver.js new file mode 100644 index 0000000..92254be --- /dev/null +++ b/bff/node_modules/semver/classes/semver.js @@ -0,0 +1,333 @@ +'use strict' + +const debug = require('../internal/debug') +const { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants') +const { safeRe: re, t } = require('../internal/re') + +const parseOptions = require('../internal/parse-options') +const { compareIdentifiers } = require('../internal/identifiers') +class SemVer { + constructor (version, options) { + options = parseOptions(options) + + if (version instanceof SemVer) { + if (version.loose === !!options.loose && + version.includePrerelease === !!options.includePrerelease) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError( + `version is longer than ${MAX_LENGTH} characters` + ) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + // this isn't actually relevant for versions, but keep it so that we + // don't run into trouble passing this.options around. + this.includePrerelease = !!options.includePrerelease + + const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) + + if (!m) { + throw new TypeError(`Invalid Version: ${version}`) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map((id) => { + if (/^[0-9]+$/.test(id)) { + const num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() + } + + format () { + this.version = `${this.major}.${this.minor}.${this.patch}` + if (this.prerelease.length) { + this.version += `-${this.prerelease.join('.')}` + } + return this.version + } + + toString () { + return this.version + } + + compare (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + if (typeof other === 'string' && other === this.version) { + return 0 + } + other = new SemVer(other, this.options) + } + + if (other.version === this.version) { + return 0 + } + + return this.compareMain(other) || this.comparePre(other) + } + + compareMain (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + if (this.major < other.major) { + return -1 + } + if (this.major > other.major) { + return 1 + } + if (this.minor < other.minor) { + return -1 + } + if (this.minor > other.minor) { + return 1 + } + if (this.patch < other.patch) { + return -1 + } + if (this.patch > other.patch) { + return 1 + } + return 0 + } + + comparePre (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + let i = 0 + do { + const a = this.prerelease[i] + const b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + compareBuild (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + let i = 0 + do { + const a = this.build[i] + const b = other.build[i] + debug('build compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) + } + + // preminor will bump the version up to the next minor release, and immediately + // down to pre-release. premajor and prepatch work the same way. + inc (release, identifier, identifierBase) { + if (release.startsWith('pre')) { + if (!identifier && identifierBase === false) { + throw new Error('invalid increment argument: identifier is empty') + } + // Avoid an invalid semver results + if (identifier) { + const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]) + if (!match || match[1] !== identifier) { + throw new Error(`invalid identifier: ${identifier}`) + } + } + } + + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier, identifierBase) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier, identifierBase) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier, identifierBase) + this.inc('pre', identifier, identifierBase) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier, identifierBase) + } + this.inc('pre', identifier, identifierBase) + break + case 'release': + if (this.prerelease.length === 0) { + throw new Error(`version ${this.raw} is not a prerelease`) + } + this.prerelease.length = 0 + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if ( + this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0 + ) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. + case 'pre': { + const base = Number(identifierBase) ? 1 : 0 + + if (this.prerelease.length === 0) { + this.prerelease = [base] + } else { + let i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + if (identifier === this.prerelease.join('.') && identifierBase === false) { + throw new Error('invalid increment argument: identifier already exists') + } + this.prerelease.push(base) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + let prerelease = [identifier, base] + if (identifierBase === false) { + prerelease = [identifier] + } + if (compareIdentifiers(this.prerelease[0], identifier) === 0) { + if (isNaN(this.prerelease[1])) { + this.prerelease = prerelease + } + } else { + this.prerelease = prerelease + } + } + break + } + default: + throw new Error(`invalid increment argument: ${release}`) + } + this.raw = this.format() + if (this.build.length) { + this.raw += `+${this.build.join('.')}` + } + return this + } +} + +module.exports = SemVer diff --git a/bff/node_modules/semver/functions/clean.js b/bff/node_modules/semver/functions/clean.js new file mode 100644 index 0000000..79703d6 --- /dev/null +++ b/bff/node_modules/semver/functions/clean.js @@ -0,0 +1,8 @@ +'use strict' + +const parse = require('./parse') +const clean = (version, options) => { + const s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} +module.exports = clean diff --git a/bff/node_modules/semver/functions/cmp.js b/bff/node_modules/semver/functions/cmp.js new file mode 100644 index 0000000..77487dc --- /dev/null +++ b/bff/node_modules/semver/functions/cmp.js @@ -0,0 +1,54 @@ +'use strict' + +const eq = require('./eq') +const neq = require('./neq') +const gt = require('./gt') +const gte = require('./gte') +const lt = require('./lt') +const lte = require('./lte') + +const cmp = (a, op, b, loose) => { + switch (op) { + case '===': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a === b + + case '!==': + if (typeof a === 'object') { + a = a.version + } + if (typeof b === 'object') { + b = b.version + } + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError(`Invalid operator: ${op}`) + } +} +module.exports = cmp diff --git a/bff/node_modules/semver/functions/coerce.js b/bff/node_modules/semver/functions/coerce.js new file mode 100644 index 0000000..cfe0275 --- /dev/null +++ b/bff/node_modules/semver/functions/coerce.js @@ -0,0 +1,62 @@ +'use strict' + +const SemVer = require('../classes/semver') +const parse = require('./parse') +const { safeRe: re, t } = require('../internal/re') + +const coerce = (version, options) => { + if (version instanceof SemVer) { + return version + } + + if (typeof version === 'number') { + version = String(version) + } + + if (typeof version !== 'string') { + return null + } + + options = options || {} + + let match = null + if (!options.rtl) { + match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL] + let next + while ((next = coerceRtlRegex.exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length + } + // leave it in a clean state + coerceRtlRegex.lastIndex = -1 + } + + if (match === null) { + return null + } + + const major = match[2] + const minor = match[3] || '0' + const patch = match[4] || '0' + const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : '' + const build = options.includePrerelease && match[6] ? `+${match[6]}` : '' + + return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options) +} +module.exports = coerce diff --git a/bff/node_modules/semver/functions/compare-build.js b/bff/node_modules/semver/functions/compare-build.js new file mode 100644 index 0000000..99157cf --- /dev/null +++ b/bff/node_modules/semver/functions/compare-build.js @@ -0,0 +1,9 @@ +'use strict' + +const SemVer = require('../classes/semver') +const compareBuild = (a, b, loose) => { + const versionA = new SemVer(a, loose) + const versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) +} +module.exports = compareBuild diff --git a/bff/node_modules/semver/functions/compare-loose.js b/bff/node_modules/semver/functions/compare-loose.js new file mode 100644 index 0000000..7531634 --- /dev/null +++ b/bff/node_modules/semver/functions/compare-loose.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const compareLoose = (a, b) => compare(a, b, true) +module.exports = compareLoose diff --git a/bff/node_modules/semver/functions/compare.js b/bff/node_modules/semver/functions/compare.js new file mode 100644 index 0000000..63d8090 --- /dev/null +++ b/bff/node_modules/semver/functions/compare.js @@ -0,0 +1,7 @@ +'use strict' + +const SemVer = require('../classes/semver') +const compare = (a, b, loose) => + new SemVer(a, loose).compare(new SemVer(b, loose)) + +module.exports = compare diff --git a/bff/node_modules/semver/functions/diff.js b/bff/node_modules/semver/functions/diff.js new file mode 100644 index 0000000..c99ab51 --- /dev/null +++ b/bff/node_modules/semver/functions/diff.js @@ -0,0 +1,60 @@ +'use strict' + +const parse = require('./parse.js') + +const diff = (version1, version2) => { + const v1 = parse(version1, null, true) + const v2 = parse(version2, null, true) + const comparison = v1.compare(v2) + + if (comparison === 0) { + return null + } + + const v1Higher = comparison > 0 + const highVersion = v1Higher ? v1 : v2 + const lowVersion = v1Higher ? v2 : v1 + const highHasPre = !!highVersion.prerelease.length + const lowHasPre = !!lowVersion.prerelease.length + + if (lowHasPre && !highHasPre) { + // Going from prerelease -> no prerelease requires some special casing + + // If the low version has only a major, then it will always be a major + // Some examples: + // 1.0.0-1 -> 1.0.0 + // 1.0.0-1 -> 1.1.1 + // 1.0.0-1 -> 2.0.0 + if (!lowVersion.patch && !lowVersion.minor) { + return 'major' + } + + // If the main part has no difference + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) { + return 'minor' + } + return 'patch' + } + } + + // add the `pre` prefix if we are going to a prerelease version + const prefix = highHasPre ? 'pre' : '' + + if (v1.major !== v2.major) { + return prefix + 'major' + } + + if (v1.minor !== v2.minor) { + return prefix + 'minor' + } + + if (v1.patch !== v2.patch) { + return prefix + 'patch' + } + + // high and low are prereleases + return 'prerelease' +} + +module.exports = diff diff --git a/bff/node_modules/semver/functions/eq.js b/bff/node_modules/semver/functions/eq.js new file mode 100644 index 0000000..5f0eead --- /dev/null +++ b/bff/node_modules/semver/functions/eq.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const eq = (a, b, loose) => compare(a, b, loose) === 0 +module.exports = eq diff --git a/bff/node_modules/semver/functions/gt.js b/bff/node_modules/semver/functions/gt.js new file mode 100644 index 0000000..84a57dd --- /dev/null +++ b/bff/node_modules/semver/functions/gt.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const gt = (a, b, loose) => compare(a, b, loose) > 0 +module.exports = gt diff --git a/bff/node_modules/semver/functions/gte.js b/bff/node_modules/semver/functions/gte.js new file mode 100644 index 0000000..7c52bdf --- /dev/null +++ b/bff/node_modules/semver/functions/gte.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const gte = (a, b, loose) => compare(a, b, loose) >= 0 +module.exports = gte diff --git a/bff/node_modules/semver/functions/inc.js b/bff/node_modules/semver/functions/inc.js new file mode 100644 index 0000000..ff999e9 --- /dev/null +++ b/bff/node_modules/semver/functions/inc.js @@ -0,0 +1,21 @@ +'use strict' + +const SemVer = require('../classes/semver') + +const inc = (version, release, options, identifier, identifierBase) => { + if (typeof (options) === 'string') { + identifierBase = identifier + identifier = options + options = undefined + } + + try { + return new SemVer( + version instanceof SemVer ? version.version : version, + options + ).inc(release, identifier, identifierBase).version + } catch (er) { + return null + } +} +module.exports = inc diff --git a/bff/node_modules/semver/functions/lt.js b/bff/node_modules/semver/functions/lt.js new file mode 100644 index 0000000..2fb32a0 --- /dev/null +++ b/bff/node_modules/semver/functions/lt.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const lt = (a, b, loose) => compare(a, b, loose) < 0 +module.exports = lt diff --git a/bff/node_modules/semver/functions/lte.js b/bff/node_modules/semver/functions/lte.js new file mode 100644 index 0000000..da9ee8f --- /dev/null +++ b/bff/node_modules/semver/functions/lte.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const lte = (a, b, loose) => compare(a, b, loose) <= 0 +module.exports = lte diff --git a/bff/node_modules/semver/functions/major.js b/bff/node_modules/semver/functions/major.js new file mode 100644 index 0000000..e6d08dc --- /dev/null +++ b/bff/node_modules/semver/functions/major.js @@ -0,0 +1,5 @@ +'use strict' + +const SemVer = require('../classes/semver') +const major = (a, loose) => new SemVer(a, loose).major +module.exports = major diff --git a/bff/node_modules/semver/functions/minor.js b/bff/node_modules/semver/functions/minor.js new file mode 100644 index 0000000..9e70ffd --- /dev/null +++ b/bff/node_modules/semver/functions/minor.js @@ -0,0 +1,5 @@ +'use strict' + +const SemVer = require('../classes/semver') +const minor = (a, loose) => new SemVer(a, loose).minor +module.exports = minor diff --git a/bff/node_modules/semver/functions/neq.js b/bff/node_modules/semver/functions/neq.js new file mode 100644 index 0000000..84326b7 --- /dev/null +++ b/bff/node_modules/semver/functions/neq.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const neq = (a, b, loose) => compare(a, b, loose) !== 0 +module.exports = neq diff --git a/bff/node_modules/semver/functions/parse.js b/bff/node_modules/semver/functions/parse.js new file mode 100644 index 0000000..d544d33 --- /dev/null +++ b/bff/node_modules/semver/functions/parse.js @@ -0,0 +1,18 @@ +'use strict' + +const SemVer = require('../classes/semver') +const parse = (version, options, throwErrors = false) => { + if (version instanceof SemVer) { + return version + } + try { + return new SemVer(version, options) + } catch (er) { + if (!throwErrors) { + return null + } + throw er + } +} + +module.exports = parse diff --git a/bff/node_modules/semver/functions/patch.js b/bff/node_modules/semver/functions/patch.js new file mode 100644 index 0000000..7675162 --- /dev/null +++ b/bff/node_modules/semver/functions/patch.js @@ -0,0 +1,5 @@ +'use strict' + +const SemVer = require('../classes/semver') +const patch = (a, loose) => new SemVer(a, loose).patch +module.exports = patch diff --git a/bff/node_modules/semver/functions/prerelease.js b/bff/node_modules/semver/functions/prerelease.js new file mode 100644 index 0000000..b8fe1db --- /dev/null +++ b/bff/node_modules/semver/functions/prerelease.js @@ -0,0 +1,8 @@ +'use strict' + +const parse = require('./parse') +const prerelease = (version, options) => { + const parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} +module.exports = prerelease diff --git a/bff/node_modules/semver/functions/rcompare.js b/bff/node_modules/semver/functions/rcompare.js new file mode 100644 index 0000000..8e1c222 --- /dev/null +++ b/bff/node_modules/semver/functions/rcompare.js @@ -0,0 +1,5 @@ +'use strict' + +const compare = require('./compare') +const rcompare = (a, b, loose) => compare(b, a, loose) +module.exports = rcompare diff --git a/bff/node_modules/semver/functions/rsort.js b/bff/node_modules/semver/functions/rsort.js new file mode 100644 index 0000000..5d3d200 --- /dev/null +++ b/bff/node_modules/semver/functions/rsort.js @@ -0,0 +1,5 @@ +'use strict' + +const compareBuild = require('./compare-build') +const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) +module.exports = rsort diff --git a/bff/node_modules/semver/functions/satisfies.js b/bff/node_modules/semver/functions/satisfies.js new file mode 100644 index 0000000..a0264a2 --- /dev/null +++ b/bff/node_modules/semver/functions/satisfies.js @@ -0,0 +1,12 @@ +'use strict' + +const Range = require('../classes/range') +const satisfies = (version, range, options) => { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} +module.exports = satisfies diff --git a/bff/node_modules/semver/functions/sort.js b/bff/node_modules/semver/functions/sort.js new file mode 100644 index 0000000..edb24b1 --- /dev/null +++ b/bff/node_modules/semver/functions/sort.js @@ -0,0 +1,5 @@ +'use strict' + +const compareBuild = require('./compare-build') +const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) +module.exports = sort diff --git a/bff/node_modules/semver/functions/valid.js b/bff/node_modules/semver/functions/valid.js new file mode 100644 index 0000000..0db67ed --- /dev/null +++ b/bff/node_modules/semver/functions/valid.js @@ -0,0 +1,8 @@ +'use strict' + +const parse = require('./parse') +const valid = (version, options) => { + const v = parse(version, options) + return v ? v.version : null +} +module.exports = valid diff --git a/bff/node_modules/semver/index.js b/bff/node_modules/semver/index.js new file mode 100644 index 0000000..285662a --- /dev/null +++ b/bff/node_modules/semver/index.js @@ -0,0 +1,91 @@ +'use strict' + +// just pre-load all the stuff that index.js lazily exports +const internalRe = require('./internal/re') +const constants = require('./internal/constants') +const SemVer = require('./classes/semver') +const identifiers = require('./internal/identifiers') +const parse = require('./functions/parse') +const valid = require('./functions/valid') +const clean = require('./functions/clean') +const inc = require('./functions/inc') +const diff = require('./functions/diff') +const major = require('./functions/major') +const minor = require('./functions/minor') +const patch = require('./functions/patch') +const prerelease = require('./functions/prerelease') +const compare = require('./functions/compare') +const rcompare = require('./functions/rcompare') +const compareLoose = require('./functions/compare-loose') +const compareBuild = require('./functions/compare-build') +const sort = require('./functions/sort') +const rsort = require('./functions/rsort') +const gt = require('./functions/gt') +const lt = require('./functions/lt') +const eq = require('./functions/eq') +const neq = require('./functions/neq') +const gte = require('./functions/gte') +const lte = require('./functions/lte') +const cmp = require('./functions/cmp') +const coerce = require('./functions/coerce') +const Comparator = require('./classes/comparator') +const Range = require('./classes/range') +const satisfies = require('./functions/satisfies') +const toComparators = require('./ranges/to-comparators') +const maxSatisfying = require('./ranges/max-satisfying') +const minSatisfying = require('./ranges/min-satisfying') +const minVersion = require('./ranges/min-version') +const validRange = require('./ranges/valid') +const outside = require('./ranges/outside') +const gtr = require('./ranges/gtr') +const ltr = require('./ranges/ltr') +const intersects = require('./ranges/intersects') +const simplifyRange = require('./ranges/simplify') +const subset = require('./ranges/subset') +module.exports = { + parse, + valid, + clean, + inc, + diff, + major, + minor, + patch, + prerelease, + compare, + rcompare, + compareLoose, + compareBuild, + sort, + rsort, + gt, + lt, + eq, + neq, + gte, + lte, + cmp, + coerce, + Comparator, + Range, + satisfies, + toComparators, + maxSatisfying, + minSatisfying, + minVersion, + validRange, + outside, + gtr, + ltr, + intersects, + simplifyRange, + subset, + SemVer, + re: internalRe.re, + src: internalRe.src, + tokens: internalRe.t, + SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION, + RELEASE_TYPES: constants.RELEASE_TYPES, + compareIdentifiers: identifiers.compareIdentifiers, + rcompareIdentifiers: identifiers.rcompareIdentifiers, +} diff --git a/bff/node_modules/semver/internal/constants.js b/bff/node_modules/semver/internal/constants.js new file mode 100644 index 0000000..6d1db91 --- /dev/null +++ b/bff/node_modules/semver/internal/constants.js @@ -0,0 +1,37 @@ +'use strict' + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +const SEMVER_SPEC_VERSION = '2.0.0' + +const MAX_LENGTH = 256 +const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || +/* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +const MAX_SAFE_COMPONENT_LENGTH = 16 + +// Max safe length for a build identifier. The max length minus 6 characters for +// the shortest version with a build 0.0.0+BUILD. +const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 + +const RELEASE_TYPES = [ + 'major', + 'premajor', + 'minor', + 'preminor', + 'patch', + 'prepatch', + 'prerelease', +] + +module.exports = { + MAX_LENGTH, + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_SAFE_INTEGER, + RELEASE_TYPES, + SEMVER_SPEC_VERSION, + FLAG_INCLUDE_PRERELEASE: 0b001, + FLAG_LOOSE: 0b010, +} diff --git a/bff/node_modules/semver/internal/debug.js b/bff/node_modules/semver/internal/debug.js new file mode 100644 index 0000000..20d1e9d --- /dev/null +++ b/bff/node_modules/semver/internal/debug.js @@ -0,0 +1,11 @@ +'use strict' + +const debug = ( + typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG) +) ? (...args) => console.error('SEMVER', ...args) + : () => {} + +module.exports = debug diff --git a/bff/node_modules/semver/internal/identifiers.js b/bff/node_modules/semver/internal/identifiers.js new file mode 100644 index 0000000..d053472 --- /dev/null +++ b/bff/node_modules/semver/internal/identifiers.js @@ -0,0 +1,29 @@ +'use strict' + +const numeric = /^[0-9]+$/ +const compareIdentifiers = (a, b) => { + if (typeof a === 'number' && typeof b === 'number') { + return a === b ? 0 : a < b ? -1 : 1 + } + + const anum = numeric.test(a) + const bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) + +module.exports = { + compareIdentifiers, + rcompareIdentifiers, +} diff --git a/bff/node_modules/semver/internal/lrucache.js b/bff/node_modules/semver/internal/lrucache.js new file mode 100644 index 0000000..b8bf526 --- /dev/null +++ b/bff/node_modules/semver/internal/lrucache.js @@ -0,0 +1,42 @@ +'use strict' + +class LRUCache { + constructor () { + this.max = 1000 + this.map = new Map() + } + + get (key) { + const value = this.map.get(key) + if (value === undefined) { + return undefined + } else { + // Remove the key from the map and add it to the end + this.map.delete(key) + this.map.set(key, value) + return value + } + } + + delete (key) { + return this.map.delete(key) + } + + set (key, value) { + const deleted = this.delete(key) + + if (!deleted && value !== undefined) { + // If cache is full, delete the least recently used item + if (this.map.size >= this.max) { + const firstKey = this.map.keys().next().value + this.delete(firstKey) + } + + this.map.set(key, value) + } + + return this + } +} + +module.exports = LRUCache diff --git a/bff/node_modules/semver/internal/parse-options.js b/bff/node_modules/semver/internal/parse-options.js new file mode 100644 index 0000000..5295454 --- /dev/null +++ b/bff/node_modules/semver/internal/parse-options.js @@ -0,0 +1,17 @@ +'use strict' + +// parse out just the options we care about +const looseOption = Object.freeze({ loose: true }) +const emptyOpts = Object.freeze({ }) +const parseOptions = options => { + if (!options) { + return emptyOpts + } + + if (typeof options !== 'object') { + return looseOption + } + + return options +} +module.exports = parseOptions diff --git a/bff/node_modules/semver/internal/re.js b/bff/node_modules/semver/internal/re.js new file mode 100644 index 0000000..639fca8 --- /dev/null +++ b/bff/node_modules/semver/internal/re.js @@ -0,0 +1,223 @@ +'use strict' + +const { + MAX_SAFE_COMPONENT_LENGTH, + MAX_SAFE_BUILD_LENGTH, + MAX_LENGTH, +} = require('./constants') +const debug = require('./debug') +exports = module.exports = {} + +// The actual regexps go on exports.re +const re = exports.re = [] +const safeRe = exports.safeRe = [] +const src = exports.src = [] +const safeSrc = exports.safeSrc = [] +const t = exports.t = {} +let R = 0 + +const LETTERDASHNUMBER = '[a-zA-Z0-9-]' + +// Replace some greedy regex tokens to prevent regex dos issues. These regex are +// used internally via the safeRe object since all inputs in this library get +// normalized first to trim and collapse all extra whitespace. The original +// regexes are exported for userland consumption and lower level usage. A +// future breaking change could export the safer regex only with a note that +// all input should have extra whitespace removed. +const safeRegexReplacements = [ + ['\\s', 1], + ['\\d', MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], +] + +const makeSafeRegex = (value) => { + for (const [token, max] of safeRegexReplacements) { + value = value + .split(`${token}*`).join(`${token}{0,${max}}`) + .split(`${token}+`).join(`${token}{1,${max}}`) + } + return value +} + +const createToken = (name, value, isGlobal) => { + const safe = makeSafeRegex(value) + const index = R++ + debug(name, index, value) + t[name] = index + src[index] = value + safeSrc[index] = safe + re[index] = new RegExp(value, isGlobal ? 'g' : undefined) + safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined) +} + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') +createToken('NUMERICIDENTIFIERLOOSE', '\\d+') + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`) + +// ## Main Version +// Three dot-separated numeric identifiers. + +createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})\\.` + + `(${src[t.NUMERICIDENTIFIER]})`) + +createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + + `(${src[t.NUMERICIDENTIFIERLOOSE]})`) + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. +// Non-numeric identifiers include numeric identifiers but can be longer. +// Therefore non-numeric identifiers must go first. + +createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER] +}|${src[t.NUMERICIDENTIFIER]})`) + +createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER] +}|${src[t.NUMERICIDENTIFIERLOOSE]})`) + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] +}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) + +createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] +}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`) + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] +}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +createToken('FULLPLAIN', `v?${src[t.MAINVERSION] +}${src[t.PRERELEASE]}?${ + src[t.BUILD]}?`) + +createToken('FULL', `^${src[t.FULLPLAIN]}$`) + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] +}${src[t.PRERELEASELOOSE]}?${ + src[t.BUILD]}?`) + +createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) + +createToken('GTLT', '((?:<|>)?=?)') + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) +createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) + +createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + + `(?:${src[t.PRERELEASE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + + `(?:${src[t.PRERELEASELOOSE]})?${ + src[t.BUILD]}?` + + `)?)?`) + +createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) +createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +createToken('COERCEPLAIN', `${'(^|[^\\d])' + + '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + + `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`) +createToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\d])`) +createToken('COERCEFULL', src[t.COERCEPLAIN] + + `(?:${src[t.PRERELEASE]})?` + + `(?:${src[t.BUILD]})?` + + `(?:$|[^\\d])`) +createToken('COERCERTL', src[t.COERCE], true) +createToken('COERCERTLFULL', src[t.COERCEFULL], true) + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +createToken('LONETILDE', '(?:~>?)') + +createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) +exports.tildeTrimReplace = '$1~' + +createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) +createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +createToken('LONECARET', '(?:\\^)') + +createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) +exports.caretTrimReplace = '$1^' + +createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) +createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) +createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] +}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) +exports.comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAIN]})` + + `\\s*$`) + +createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + + `\\s+-\\s+` + + `(${src[t.XRANGEPLAINLOOSE]})` + + `\\s*$`) + +// Star ranges basically just allow anything at all. +createToken('STAR', '(<|>)?=?\\s*\\*') +// >=0.0.0 is like a star +createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$') +createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$') diff --git a/bff/node_modules/semver/package.json b/bff/node_modules/semver/package.json new file mode 100644 index 0000000..a84de91 --- /dev/null +++ b/bff/node_modules/semver/package.json @@ -0,0 +1,78 @@ +{ + "name": "semver", + "version": "7.7.4", + "description": "The semantic version parser used by npm.", + "main": "index.js", + "scripts": { + "test": "tap", + "snap": "tap", + "lint": "npm run eslint", + "postlint": "template-oss-check", + "lintfix": "npm run eslint -- --fix", + "posttest": "npm run lint", + "template-oss-apply": "template-oss-apply --force", + "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\"" + }, + "devDependencies": { + "@npmcli/eslint-config": "^6.0.0", + "@npmcli/template-oss": "4.29.0", + "benchmark": "^2.1.4", + "tap": "^16.0.0" + }, + "license": "ISC", + "repository": { + "type": "git", + "url": "git+https://github.com/npm/node-semver.git" + }, + "bin": { + "semver": "bin/semver.js" + }, + "files": [ + "bin/", + "lib/", + "classes/", + "functions/", + "internal/", + "ranges/", + "index.js", + "preload.js", + "range.bnf" + ], + "tap": { + "timeout": 30, + "coverage-map": "map.js", + "nyc-arg": [ + "--exclude", + "tap-snapshots/**" + ] + }, + "engines": { + "node": ">=10" + }, + "author": "GitHub Inc.", + "templateOSS": { + "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", + "version": "4.29.0", + "engines": ">=10", + "distPaths": [ + "classes/", + "functions/", + "internal/", + "ranges/", + "index.js", + "preload.js", + "range.bnf" + ], + "allowPaths": [ + "/classes/", + "/functions/", + "/internal/", + "/ranges/", + "/index.js", + "/preload.js", + "/range.bnf", + "/benchmarks" + ], + "publish": "true" + } +} diff --git a/bff/node_modules/semver/preload.js b/bff/node_modules/semver/preload.js new file mode 100644 index 0000000..e6c47b9 --- /dev/null +++ b/bff/node_modules/semver/preload.js @@ -0,0 +1,4 @@ +'use strict' + +// XXX remove in v8 or beyond +module.exports = require('./index.js') diff --git a/bff/node_modules/semver/range.bnf b/bff/node_modules/semver/range.bnf new file mode 100644 index 0000000..d4c6ae0 --- /dev/null +++ b/bff/node_modules/semver/range.bnf @@ -0,0 +1,16 @@ +range-set ::= range ( logical-or range ) * +logical-or ::= ( ' ' ) * '||' ( ' ' ) * +range ::= hyphen | simple ( ' ' simple ) * | '' +hyphen ::= partial ' - ' partial +simple ::= primitive | partial | tilde | caret +primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial +partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? +xr ::= 'x' | 'X' | '*' | nr +nr ::= '0' | [1-9] ( [0-9] ) * +tilde ::= '~' partial +caret ::= '^' partial +qualifier ::= ( '-' pre )? ( '+' build )? +pre ::= parts +build ::= parts +parts ::= part ( '.' part ) * +part ::= nr | [-0-9A-Za-z]+ diff --git a/bff/node_modules/semver/ranges/gtr.js b/bff/node_modules/semver/ranges/gtr.js new file mode 100644 index 0000000..0e7601f --- /dev/null +++ b/bff/node_modules/semver/ranges/gtr.js @@ -0,0 +1,6 @@ +'use strict' + +// Determine if version is greater than all the versions possible in the range. +const outside = require('./outside') +const gtr = (version, range, options) => outside(version, range, '>', options) +module.exports = gtr diff --git a/bff/node_modules/semver/ranges/intersects.js b/bff/node_modules/semver/ranges/intersects.js new file mode 100644 index 0000000..917be7e --- /dev/null +++ b/bff/node_modules/semver/ranges/intersects.js @@ -0,0 +1,9 @@ +'use strict' + +const Range = require('../classes/range') +const intersects = (r1, r2, options) => { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2, options) +} +module.exports = intersects diff --git a/bff/node_modules/semver/ranges/ltr.js b/bff/node_modules/semver/ranges/ltr.js new file mode 100644 index 0000000..aa5e568 --- /dev/null +++ b/bff/node_modules/semver/ranges/ltr.js @@ -0,0 +1,6 @@ +'use strict' + +const outside = require('./outside') +// Determine if version is less than all the versions possible in the range +const ltr = (version, range, options) => outside(version, range, '<', options) +module.exports = ltr diff --git a/bff/node_modules/semver/ranges/max-satisfying.js b/bff/node_modules/semver/ranges/max-satisfying.js new file mode 100644 index 0000000..01fe5ae --- /dev/null +++ b/bff/node_modules/semver/ranges/max-satisfying.js @@ -0,0 +1,27 @@ +'use strict' + +const SemVer = require('../classes/semver') +const Range = require('../classes/range') + +const maxSatisfying = (versions, range, options) => { + let max = null + let maxSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} +module.exports = maxSatisfying diff --git a/bff/node_modules/semver/ranges/min-satisfying.js b/bff/node_modules/semver/ranges/min-satisfying.js new file mode 100644 index 0000000..af89c8e --- /dev/null +++ b/bff/node_modules/semver/ranges/min-satisfying.js @@ -0,0 +1,26 @@ +'use strict' + +const SemVer = require('../classes/semver') +const Range = require('../classes/range') +const minSatisfying = (versions, range, options) => { + let min = null + let minSV = null + let rangeObj = null + try { + rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach((v) => { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} +module.exports = minSatisfying diff --git a/bff/node_modules/semver/ranges/min-version.js b/bff/node_modules/semver/ranges/min-version.js new file mode 100644 index 0000000..09a65aa --- /dev/null +++ b/bff/node_modules/semver/ranges/min-version.js @@ -0,0 +1,63 @@ +'use strict' + +const SemVer = require('../classes/semver') +const Range = require('../classes/range') +const gt = require('../functions/gt') + +const minVersion = (range, loose) => { + range = new Range(range, loose) + + let minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let setMin = null + comparators.forEach((comparator) => { + // Clone to avoid manipulating the comparator's semver object. + const compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!setMin || gt(compver, setMin)) { + setMin = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error(`Unexpected operation: ${comparator.operator}`) + } + }) + if (setMin && (!minver || gt(minver, setMin))) { + minver = setMin + } + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} +module.exports = minVersion diff --git a/bff/node_modules/semver/ranges/outside.js b/bff/node_modules/semver/ranges/outside.js new file mode 100644 index 0000000..ca74421 --- /dev/null +++ b/bff/node_modules/semver/ranges/outside.js @@ -0,0 +1,82 @@ +'use strict' + +const SemVer = require('../classes/semver') +const Comparator = require('../classes/comparator') +const { ANY } = Comparator +const Range = require('../classes/range') +const satisfies = require('../functions/satisfies') +const gt = require('../functions/gt') +const lt = require('../functions/lt') +const lte = require('../functions/lte') +const gte = require('../functions/gte') + +const outside = (version, range, hilo, options) => { + version = new SemVer(version, options) + range = new Range(range, options) + + let gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisfies the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (let i = 0; i < range.set.length; ++i) { + const comparators = range.set[i] + + let high = null + let low = null + + comparators.forEach((comparator) => { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +module.exports = outside diff --git a/bff/node_modules/semver/ranges/simplify.js b/bff/node_modules/semver/ranges/simplify.js new file mode 100644 index 0000000..262732e --- /dev/null +++ b/bff/node_modules/semver/ranges/simplify.js @@ -0,0 +1,49 @@ +'use strict' + +// given a set of versions and a range, create a "simplified" range +// that includes the same versions that the original range does +// If the original range is shorter than the simplified one, return that. +const satisfies = require('../functions/satisfies.js') +const compare = require('../functions/compare.js') +module.exports = (versions, range, options) => { + const set = [] + let first = null + let prev = null + const v = versions.sort((a, b) => compare(a, b, options)) + for (const version of v) { + const included = satisfies(version, range, options) + if (included) { + prev = version + if (!first) { + first = version + } + } else { + if (prev) { + set.push([first, prev]) + } + prev = null + first = null + } + } + if (first) { + set.push([first, null]) + } + + const ranges = [] + for (const [min, max] of set) { + if (min === max) { + ranges.push(min) + } else if (!max && min === v[0]) { + ranges.push('*') + } else if (!max) { + ranges.push(`>=${min}`) + } else if (min === v[0]) { + ranges.push(`<=${max}`) + } else { + ranges.push(`${min} - ${max}`) + } + } + const simplified = ranges.join(' || ') + const original = typeof range.raw === 'string' ? range.raw : String(range) + return simplified.length < original.length ? simplified : range +} diff --git a/bff/node_modules/semver/ranges/subset.js b/bff/node_modules/semver/ranges/subset.js new file mode 100644 index 0000000..99f4321 --- /dev/null +++ b/bff/node_modules/semver/ranges/subset.js @@ -0,0 +1,249 @@ +'use strict' + +const Range = require('../classes/range.js') +const Comparator = require('../classes/comparator.js') +const { ANY } = Comparator +const satisfies = require('../functions/satisfies.js') +const compare = require('../functions/compare.js') + +// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: +// - Every simple range `r1, r2, ...` is a null set, OR +// - Every simple range `r1, r2, ...` which is not a null set is a subset of +// some `R1, R2, ...` +// +// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: +// - If c is only the ANY comparator +// - If C is only the ANY comparator, return true +// - Else if in prerelease mode, return false +// - else replace c with `[>=0.0.0]` +// - If C is only the ANY comparator +// - if in prerelease mode, return true +// - else replace C with `[>=0.0.0]` +// - Let EQ be the set of = comparators in c +// - If EQ is more than one, return true (null set) +// - Let GT be the highest > or >= comparator in c +// - Let LT be the lowest < or <= comparator in c +// - If GT and LT, and GT.semver > LT.semver, return true (null set) +// - If any C is a = range, and GT or LT are set, return false +// - If EQ +// - If GT, and EQ does not satisfy GT, return true (null set) +// - If LT, and EQ does not satisfy LT, return true (null set) +// - If EQ satisfies every C, return true +// - Else return false +// - If GT +// - If GT.semver is lower than any > or >= comp in C, return false +// - If GT is >=, and GT.semver does not satisfy every C, return false +// - If GT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the GT.semver tuple, return false +// - If LT +// - If LT.semver is greater than any < or <= comp in C, return false +// - If LT is <=, and LT.semver does not satisfy every C, return false +// - If LT.semver has a prerelease, and not in prerelease mode +// - If no C has a prerelease and the LT.semver tuple, return false +// - Else return true + +const subset = (sub, dom, options = {}) => { + if (sub === dom) { + return true + } + + sub = new Range(sub, options) + dom = new Range(dom, options) + let sawNonNull = false + + OUTER: for (const simpleSub of sub.set) { + for (const simpleDom of dom.set) { + const isSub = simpleSubset(simpleSub, simpleDom, options) + sawNonNull = sawNonNull || isSub !== null + if (isSub) { + continue OUTER + } + } + // the null set is a subset of everything, but null simple ranges in + // a complex range should be ignored. so if we saw a non-null range, + // then we know this isn't a subset, but if EVERY simple range was null, + // then it is a subset. + if (sawNonNull) { + return false + } + } + return true +} + +const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')] +const minimumVersion = [new Comparator('>=0.0.0')] + +const simpleSubset = (sub, dom, options) => { + if (sub === dom) { + return true + } + + if (sub.length === 1 && sub[0].semver === ANY) { + if (dom.length === 1 && dom[0].semver === ANY) { + return true + } else if (options.includePrerelease) { + sub = minimumVersionWithPreRelease + } else { + sub = minimumVersion + } + } + + if (dom.length === 1 && dom[0].semver === ANY) { + if (options.includePrerelease) { + return true + } else { + dom = minimumVersion + } + } + + const eqSet = new Set() + let gt, lt + for (const c of sub) { + if (c.operator === '>' || c.operator === '>=') { + gt = higherGT(gt, c, options) + } else if (c.operator === '<' || c.operator === '<=') { + lt = lowerLT(lt, c, options) + } else { + eqSet.add(c.semver) + } + } + + if (eqSet.size > 1) { + return null + } + + let gtltComp + if (gt && lt) { + gtltComp = compare(gt.semver, lt.semver, options) + if (gtltComp > 0) { + return null + } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) { + return null + } + } + + // will iterate one or zero times + for (const eq of eqSet) { + if (gt && !satisfies(eq, String(gt), options)) { + return null + } + + if (lt && !satisfies(eq, String(lt), options)) { + return null + } + + for (const c of dom) { + if (!satisfies(eq, String(c), options)) { + return false + } + } + + return true + } + + let higher, lower + let hasDomLT, hasDomGT + // if the subset has a prerelease, we need a comparator in the superset + // with the same tuple and a prerelease, or it's not a subset + let needDomLTPre = lt && + !options.includePrerelease && + lt.semver.prerelease.length ? lt.semver : false + let needDomGTPre = gt && + !options.includePrerelease && + gt.semver.prerelease.length ? gt.semver : false + // exception: <1.2.3-0 is the same as <1.2.3 + if (needDomLTPre && needDomLTPre.prerelease.length === 1 && + lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { + needDomLTPre = false + } + + for (const c of dom) { + hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=' + hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=' + if (gt) { + if (needDomGTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomGTPre.major && + c.semver.minor === needDomGTPre.minor && + c.semver.patch === needDomGTPre.patch) { + needDomGTPre = false + } + } + if (c.operator === '>' || c.operator === '>=') { + higher = higherGT(gt, c, options) + if (higher === c && higher !== gt) { + return false + } + } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) { + return false + } + } + if (lt) { + if (needDomLTPre) { + if (c.semver.prerelease && c.semver.prerelease.length && + c.semver.major === needDomLTPre.major && + c.semver.minor === needDomLTPre.minor && + c.semver.patch === needDomLTPre.patch) { + needDomLTPre = false + } + } + if (c.operator === '<' || c.operator === '<=') { + lower = lowerLT(lt, c, options) + if (lower === c && lower !== lt) { + return false + } + } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) { + return false + } + } + if (!c.operator && (lt || gt) && gtltComp !== 0) { + return false + } + } + + // if there was a < or >, and nothing in the dom, then must be false + // UNLESS it was limited by another range in the other direction. + // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 + if (gt && hasDomLT && !lt && gtltComp !== 0) { + return false + } + + if (lt && hasDomGT && !gt && gtltComp !== 0) { + return false + } + + // we needed a prerelease range in a specific tuple, but didn't get one + // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, + // because it includes prereleases in the 1.2.3 tuple + if (needDomGTPre || needDomLTPre) { + return false + } + + return true +} + +// >=1.2.3 is lower than >1.2.3 +const higherGT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare(a.semver, b.semver, options) + return comp > 0 ? a + : comp < 0 ? b + : b.operator === '>' && a.operator === '>=' ? b + : a +} + +// <=1.2.3 is higher than <1.2.3 +const lowerLT = (a, b, options) => { + if (!a) { + return b + } + const comp = compare(a.semver, b.semver, options) + return comp < 0 ? a + : comp > 0 ? b + : b.operator === '<' && a.operator === '<=' ? b + : a +} + +module.exports = subset diff --git a/bff/node_modules/semver/ranges/to-comparators.js b/bff/node_modules/semver/ranges/to-comparators.js new file mode 100644 index 0000000..5be2519 --- /dev/null +++ b/bff/node_modules/semver/ranges/to-comparators.js @@ -0,0 +1,10 @@ +'use strict' + +const Range = require('../classes/range') + +// Mostly just for testing and legacy API reasons +const toComparators = (range, options) => + new Range(range, options).set + .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) + +module.exports = toComparators diff --git a/bff/node_modules/semver/ranges/valid.js b/bff/node_modules/semver/ranges/valid.js new file mode 100644 index 0000000..cc6b0e9 --- /dev/null +++ b/bff/node_modules/semver/ranges/valid.js @@ -0,0 +1,13 @@ +'use strict' + +const Range = require('../classes/range') +const validRange = (range, options) => { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} +module.exports = validRange diff --git a/bff/node_modules/send/LICENSE b/bff/node_modules/send/LICENSE new file mode 100644 index 0000000..b6ea1c1 --- /dev/null +++ b/bff/node_modules/send/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2012 TJ Holowaychuk +Copyright (c) 2014-2022 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/send/README.md b/bff/node_modules/send/README.md new file mode 100644 index 0000000..350fccd --- /dev/null +++ b/bff/node_modules/send/README.md @@ -0,0 +1,317 @@ +# send + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![CI][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Send is a library for streaming files from the file system as a http response +supporting partial responses (Ranges), conditional-GET negotiation (If-Match, +If-Unmodified-Since, If-None-Match, If-Modified-Since), high test coverage, +and granular events which may be leveraged to take appropriate actions in your +application or framework. + +Looking to serve up entire folders mapped to URLs? Try [serve-static](https://www.npmjs.org/package/serve-static). + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +$ npm install send +``` + +## API + +```js +var send = require('send') +``` + +### send(req, path, [options]) + +Create a new `SendStream` for the given path to send to a `res`. The `req` is +the Node.js HTTP request and the `path` is a urlencoded path to send (urlencoded, +not the actual file-system path). + +#### Options + +##### acceptRanges + +Enable or disable accepting ranged requests, defaults to true. +Disabling this will not send `Accept-Ranges` and ignore the contents +of the `Range` request header. + +##### cacheControl + +Enable or disable setting `Cache-Control` response header, defaults to +true. Disabling this will ignore the `immutable` and `maxAge` options. + +##### dotfiles + +Set how "dotfiles" are treated when encountered. A dotfile is a file +or directory that begins with a dot ("."). Note this check is done on +the path itself without checking if the path actually exists on the +disk. If `root` is specified, only the dotfiles above the root are +checked (i.e. the root itself can be within a dotfile when set +to "deny"). + + - `'allow'` No special treatment for dotfiles. + - `'deny'` Send a 403 for any request for a dotfile. + - `'ignore'` Pretend like the dotfile does not exist and 404. + +The default value is _similar_ to `'ignore'`, with the exception that +this default will not ignore the files within a directory that begins +with a dot, for backward-compatibility. + +##### end + +Byte offset at which the stream ends, defaults to the length of the file +minus 1. The end is inclusive in the stream, meaning `end: 3` will include +the 4th byte in the stream. + +##### etag + +Enable or disable etag generation, defaults to true. + +##### extensions + +If a given file doesn't exist, try appending one of the given extensions, +in the given order. By default, this is disabled (set to `false`). An +example value that will serve extension-less HTML files: `['html', 'htm']`. +This is skipped if the requested file already has an extension. + +##### immutable + +Enable or disable the `immutable` directive in the `Cache-Control` response +header, defaults to `false`. If set to `true`, the `maxAge` option should +also be specified to enable caching. The `immutable` directive will prevent +supported clients from making conditional requests during the life of the +`maxAge` option to check if the file has changed. + +##### index + +By default send supports "index.html" files, to disable this +set `false` or to supply a new index pass a string or an array +in preferred order. + +##### lastModified + +Enable or disable `Last-Modified` header, defaults to true. Uses the file +system's last modified value. + +##### maxAge + +Provide a max-age in milliseconds for http caching, defaults to 0. +This can also be a string accepted by the +[ms](https://www.npmjs.org/package/ms#readme) module. + +##### root + +Serve files relative to `path`. + +##### start + +Byte offset at which the stream starts, defaults to 0. The start is inclusive, +meaning `start: 2` will include the 3rd byte in the stream. + +#### Events + +The `SendStream` is an event emitter and will emit the following events: + + - `error` an error occurred `(err)` + - `directory` a directory was requested `(res, path)` + - `file` a file was requested `(path, stat)` + - `headers` the headers are about to be set on a file `(res, path, stat)` + - `stream` file streaming has started `(stream)` + - `end` streaming has completed + +#### .pipe + +The `pipe` method is used to pipe the response into the Node.js HTTP response +object, typically `send(req, path, options).pipe(res)`. + +## Error-handling + +By default when no `error` listeners are present an automatic response will be +made, otherwise you have full control over the response, aka you may show a 5xx +page etc. + +## Caching + +It does _not_ perform internal caching, you should use a reverse proxy cache +such as Varnish for this, or those fancy things called CDNs. If your +application is small enough that it would benefit from single-node memory +caching, it's small enough that it does not need caching at all ;). + +## Debugging + +To enable `debug()` instrumentation output export __DEBUG__: + +``` +$ DEBUG=send node app +``` + +## Running tests + +``` +$ npm install +$ npm test +``` + +## Examples + +### Serve a specific file + +This simple example will send a specific file to all requests. + +```js +var http = require('http') +var send = require('send') + +var server = http.createServer(function onRequest (req, res) { + send(req, '/path/to/index.html') + .pipe(res) +}) + +server.listen(3000) +``` + +### Serve all files from a directory + +This simple example will just serve up all the files in a +given directory as the top-level. For example, a request +`GET /foo.txt` will send back `/www/public/foo.txt`. + +```js +var http = require('http') +var parseUrl = require('parseurl') +var send = require('send') + +var server = http.createServer(function onRequest (req, res) { + send(req, parseUrl(req).pathname, { root: '/www/public' }) + .pipe(res) +}) + +server.listen(3000) +``` + +### Custom file types + +```js +var extname = require('path').extname +var http = require('http') +var parseUrl = require('parseurl') +var send = require('send') + +var server = http.createServer(function onRequest (req, res) { + send(req, parseUrl(req).pathname, { root: '/www/public' }) + .on('headers', function (res, path) { + switch (extname(path)) { + case '.x-mt': + case '.x-mtt': + // custom type for these extensions + res.setHeader('Content-Type', 'application/x-my-type') + break + } + }) + .pipe(res) +}) + +server.listen(3000) +``` + +### Custom directory index view + +This is an example of serving up a structure of directories with a +custom function to render a listing of a directory. + +```js +var http = require('http') +var fs = require('fs') +var parseUrl = require('parseurl') +var send = require('send') + +// Transfer arbitrary files from within /www/example.com/public/* +// with a custom handler for directory listing +var server = http.createServer(function onRequest (req, res) { + send(req, parseUrl(req).pathname, { index: false, root: '/www/public' }) + .once('directory', directory) + .pipe(res) +}) + +server.listen(3000) + +// Custom directory handler +function directory (res, path) { + var stream = this + + // redirect to trailing slash for consistent url + if (!stream.hasTrailingSlash()) { + return stream.redirect(path) + } + + // get directory list + fs.readdir(path, function onReaddir (err, list) { + if (err) return stream.error(err) + + // render an index for the directory + res.setHeader('Content-Type', 'text/plain; charset=UTF-8') + res.end(list.join('\n') + '\n') + }) +} +``` + +### Serving from a root directory with custom error-handling + +```js +var http = require('http') +var parseUrl = require('parseurl') +var send = require('send') + +var server = http.createServer(function onRequest (req, res) { + // your custom error-handling logic: + function error (err) { + res.statusCode = err.status || 500 + res.end(err.message) + } + + // your custom headers + function headers (res, path, stat) { + // serve all files for download + res.setHeader('Content-Disposition', 'attachment') + } + + // your custom directory handling logic: + function redirect () { + res.statusCode = 301 + res.setHeader('Location', req.url + '/') + res.end('Redirecting to ' + req.url + '/') + } + + // transfer arbitrary files from within + // /www/example.com/public/* + send(req, parseUrl(req).pathname, { root: '/www/public' }) + .on('error', error) + .on('directory', redirect) + .on('headers', headers) + .pipe(res) +}) + +server.listen(3000) +``` + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/pillarjs/send/master +[coveralls-url]: https://coveralls.io/r/pillarjs/send?branch=master +[github-actions-ci-image]: https://badgen.net/github/checks/pillarjs/send/master?label=linux +[github-actions-ci-url]: https://github.com/pillarjs/send/actions/workflows/ci.yml +[node-image]: https://badgen.net/npm/node/send +[node-url]: https://nodejs.org/en/download/ +[npm-downloads-image]: https://badgen.net/npm/dm/send +[npm-url]: https://npmjs.org/package/send +[npm-version-image]: https://badgen.net/npm/v/send diff --git a/bff/node_modules/send/index.js b/bff/node_modules/send/index.js new file mode 100644 index 0000000..1655053 --- /dev/null +++ b/bff/node_modules/send/index.js @@ -0,0 +1,997 @@ +/*! + * send + * Copyright(c) 2012 TJ Holowaychuk + * Copyright(c) 2014-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var createError = require('http-errors') +var debug = require('debug')('send') +var encodeUrl = require('encodeurl') +var escapeHtml = require('escape-html') +var etag = require('etag') +var fresh = require('fresh') +var fs = require('fs') +var mime = require('mime-types') +var ms = require('ms') +var onFinished = require('on-finished') +var parseRange = require('range-parser') +var path = require('path') +var statuses = require('statuses') +var Stream = require('stream') +var util = require('util') + +/** + * Path function references. + * @private + */ + +var extname = path.extname +var join = path.join +var normalize = path.normalize +var resolve = path.resolve +var sep = path.sep + +/** + * Regular expression for identifying a bytes Range header. + * @private + */ + +var BYTES_RANGE_REGEXP = /^ *bytes=/ + +/** + * Maximum value allowed for the max age. + * @private + */ + +var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1000 // 1 year + +/** + * Regular expression to match a path with a directory up component. + * @private + */ + +var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/ + +/** + * Module exports. + * @public + */ + +module.exports = send + +/** + * Return a `SendStream` for `req` and `path`. + * + * @param {object} req + * @param {string} path + * @param {object} [options] + * @return {SendStream} + * @public + */ + +function send (req, path, options) { + return new SendStream(req, path, options) +} + +/** + * Initialize a `SendStream` with the given `path`. + * + * @param {Request} req + * @param {String} path + * @param {object} [options] + * @private + */ + +function SendStream (req, path, options) { + Stream.call(this) + + var opts = options || {} + + this.options = opts + this.path = path + this.req = req + + this._acceptRanges = opts.acceptRanges !== undefined + ? Boolean(opts.acceptRanges) + : true + + this._cacheControl = opts.cacheControl !== undefined + ? Boolean(opts.cacheControl) + : true + + this._etag = opts.etag !== undefined + ? Boolean(opts.etag) + : true + + this._dotfiles = opts.dotfiles !== undefined + ? opts.dotfiles + : 'ignore' + + if (this._dotfiles !== 'ignore' && this._dotfiles !== 'allow' && this._dotfiles !== 'deny') { + throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"') + } + + this._extensions = opts.extensions !== undefined + ? normalizeList(opts.extensions, 'extensions option') + : [] + + this._immutable = opts.immutable !== undefined + ? Boolean(opts.immutable) + : false + + this._index = opts.index !== undefined + ? normalizeList(opts.index, 'index option') + : ['index.html'] + + this._lastModified = opts.lastModified !== undefined + ? Boolean(opts.lastModified) + : true + + this._maxage = opts.maxAge || opts.maxage + this._maxage = typeof this._maxage === 'string' + ? ms(this._maxage) + : Number(this._maxage) + this._maxage = !isNaN(this._maxage) + ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) + : 0 + + this._root = opts.root + ? resolve(opts.root) + : null +} + +/** + * Inherits from `Stream`. + */ + +util.inherits(SendStream, Stream) + +/** + * Emit error with `status`. + * + * @param {number} status + * @param {Error} [err] + * @private + */ + +SendStream.prototype.error = function error (status, err) { + // emit if listeners instead of responding + if (hasListeners(this, 'error')) { + return this.emit('error', createHttpError(status, err)) + } + + var res = this.res + var msg = statuses.message[status] || String(status) + var doc = createHtmlDocument('Error', escapeHtml(msg)) + + // clear existing headers + clearHeaders(res) + + // add error headers + if (err && err.headers) { + setHeaders(res, err.headers) + } + + // send basic response + res.statusCode = status + res.setHeader('Content-Type', 'text/html; charset=UTF-8') + res.setHeader('Content-Length', Buffer.byteLength(doc)) + res.setHeader('Content-Security-Policy', "default-src 'none'") + res.setHeader('X-Content-Type-Options', 'nosniff') + res.end(doc) +} + +/** + * Check if the pathname ends with "/". + * + * @return {boolean} + * @private + */ + +SendStream.prototype.hasTrailingSlash = function hasTrailingSlash () { + return this.path[this.path.length - 1] === '/' +} + +/** + * Check if this is a conditional GET request. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isConditionalGET = function isConditionalGET () { + return this.req.headers['if-match'] || + this.req.headers['if-unmodified-since'] || + this.req.headers['if-none-match'] || + this.req.headers['if-modified-since'] +} + +/** + * Check if the request preconditions failed. + * + * @return {boolean} + * @private + */ + +SendStream.prototype.isPreconditionFailure = function isPreconditionFailure () { + var req = this.req + var res = this.res + + // if-match + var match = req.headers['if-match'] + if (match) { + var etag = res.getHeader('ETag') + return !etag || (match !== '*' && parseTokenList(match).every(function (match) { + return match !== etag && match !== 'W/' + etag && 'W/' + match !== etag + })) + } + + // if-unmodified-since + var unmodifiedSince = parseHttpDate(req.headers['if-unmodified-since']) + if (!isNaN(unmodifiedSince)) { + var lastModified = parseHttpDate(res.getHeader('Last-Modified')) + return isNaN(lastModified) || lastModified > unmodifiedSince + } + + return false +} + +/** + * Strip various content header fields for a change in entity. + * + * @private + */ + +SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields () { + var res = this.res + + res.removeHeader('Content-Encoding') + res.removeHeader('Content-Language') + res.removeHeader('Content-Length') + res.removeHeader('Content-Range') + res.removeHeader('Content-Type') +} + +/** + * Respond with 304 not modified. + * + * @api private + */ + +SendStream.prototype.notModified = function notModified () { + var res = this.res + debug('not modified') + this.removeContentHeaderFields() + res.statusCode = 304 + res.end() +} + +/** + * Raise error that headers already sent. + * + * @api private + */ + +SendStream.prototype.headersAlreadySent = function headersAlreadySent () { + var err = new Error('Can\'t set headers after they are sent.') + debug('headers already sent') + this.error(500, err) +} + +/** + * Check if the request is cacheable, aka + * responded with 2xx or 304 (see RFC 2616 section 14.2{5,6}). + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isCachable = function isCachable () { + var statusCode = this.res.statusCode + return (statusCode >= 200 && statusCode < 300) || + statusCode === 304 +} + +/** + * Handle stat() error. + * + * @param {Error} error + * @private + */ + +SendStream.prototype.onStatError = function onStatError (error) { + switch (error.code) { + case 'ENAMETOOLONG': + case 'ENOENT': + case 'ENOTDIR': + this.error(404, error) + break + default: + this.error(500, error) + break + } +} + +/** + * Check if the cache is fresh. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isFresh = function isFresh () { + return fresh(this.req.headers, { + etag: this.res.getHeader('ETag'), + 'last-modified': this.res.getHeader('Last-Modified') + }) +} + +/** + * Check if the range is fresh. + * + * @return {Boolean} + * @api private + */ + +SendStream.prototype.isRangeFresh = function isRangeFresh () { + var ifRange = this.req.headers['if-range'] + + if (!ifRange) { + return true + } + + // if-range as etag + if (ifRange.indexOf('"') !== -1) { + var etag = this.res.getHeader('ETag') + return Boolean(etag && ifRange.indexOf(etag) !== -1) + } + + // if-range as modified date + var lastModified = this.res.getHeader('Last-Modified') + return parseHttpDate(lastModified) <= parseHttpDate(ifRange) +} + +/** + * Redirect to path. + * + * @param {string} path + * @private + */ + +SendStream.prototype.redirect = function redirect (path) { + var res = this.res + + if (hasListeners(this, 'directory')) { + this.emit('directory', res, path) + return + } + + if (this.hasTrailingSlash()) { + this.error(403) + return + } + + var loc = encodeUrl(collapseLeadingSlashes(this.path + '/')) + var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) + + // redirect + res.statusCode = 301 + res.setHeader('Content-Type', 'text/html; charset=UTF-8') + res.setHeader('Content-Length', Buffer.byteLength(doc)) + res.setHeader('Content-Security-Policy', "default-src 'none'") + res.setHeader('X-Content-Type-Options', 'nosniff') + res.setHeader('Location', loc) + res.end(doc) +} + +/** + * Pipe to `res. + * + * @param {Stream} res + * @return {Stream} res + * @api public + */ + +SendStream.prototype.pipe = function pipe (res) { + // root path + var root = this._root + + // references + this.res = res + + // decode the path + var path = decode(this.path) + if (path === -1) { + this.error(400) + return res + } + + // null byte(s) + if (~path.indexOf('\0')) { + this.error(400) + return res + } + + var parts + if (root !== null) { + // normalize + if (path) { + path = normalize('.' + sep + path) + } + + // malicious path + if (UP_PATH_REGEXP.test(path)) { + debug('malicious path "%s"', path) + this.error(403) + return res + } + + // explode path parts + parts = path.split(sep) + + // join / normalize from optional root dir + path = normalize(join(root, path)) + } else { + // ".." is malicious without "root" + if (UP_PATH_REGEXP.test(path)) { + debug('malicious path "%s"', path) + this.error(403) + return res + } + + // explode path parts + parts = normalize(path).split(sep) + + // resolve the path + path = resolve(path) + } + + // dotfile handling + if (containsDotFile(parts)) { + debug('%s dotfile "%s"', this._dotfiles, path) + switch (this._dotfiles) { + case 'allow': + break + case 'deny': + this.error(403) + return res + case 'ignore': + default: + this.error(404) + return res + } + } + + // index file support + if (this._index.length && this.hasTrailingSlash()) { + this.sendIndex(path) + return res + } + + this.sendFile(path) + return res +} + +/** + * Transfer `path`. + * + * @param {String} path + * @api public + */ + +SendStream.prototype.send = function send (path, stat) { + var len = stat.size + var options = this.options + var opts = {} + var res = this.res + var req = this.req + var ranges = req.headers.range + var offset = options.start || 0 + + if (res.headersSent) { + // impossible to send now + this.headersAlreadySent() + return + } + + debug('pipe "%s"', path) + + // set header fields + this.setHeader(path, stat) + + // set content-type + this.type(path) + + // conditional GET support + if (this.isConditionalGET()) { + if (this.isPreconditionFailure()) { + this.error(412) + return + } + + if (this.isCachable() && this.isFresh()) { + this.notModified() + return + } + } + + // adjust len to start/end options + len = Math.max(0, len - offset) + if (options.end !== undefined) { + var bytes = options.end - offset + 1 + if (len > bytes) len = bytes + } + + // Range support + if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) { + // parse + ranges = parseRange(len, ranges, { + combine: true + }) + + // If-Range support + if (!this.isRangeFresh()) { + debug('range stale') + ranges = -2 + } + + // unsatisfiable + if (ranges === -1) { + debug('range unsatisfiable') + + // Content-Range + res.setHeader('Content-Range', contentRange('bytes', len)) + + // 416 Requested Range Not Satisfiable + return this.error(416, { + headers: { 'Content-Range': res.getHeader('Content-Range') } + }) + } + + // valid (syntactically invalid/multiple ranges are treated as a regular response) + if (ranges !== -2 && ranges.length === 1) { + debug('range %j', ranges) + + // Content-Range + res.statusCode = 206 + res.setHeader('Content-Range', contentRange('bytes', len, ranges[0])) + + // adjust for requested range + offset += ranges[0].start + len = ranges[0].end - ranges[0].start + 1 + } + } + + // clone options + for (var prop in options) { + opts[prop] = options[prop] + } + + // set read options + opts.start = offset + opts.end = Math.max(offset, offset + len - 1) + + // content-length + res.setHeader('Content-Length', len) + + // HEAD support + if (req.method === 'HEAD') { + res.end() + return + } + + this.stream(path, opts) +} + +/** + * Transfer file for `path`. + * + * @param {String} path + * @api private + */ +SendStream.prototype.sendFile = function sendFile (path) { + var i = 0 + var self = this + + debug('stat "%s"', path) + fs.stat(path, function onstat (err, stat) { + var pathEndsWithSep = path[path.length - 1] === sep + if (err && err.code === 'ENOENT' && !extname(path) && !pathEndsWithSep) { + // not found, check extensions + return next(err) + } + if (err) return self.onStatError(err) + if (stat.isDirectory()) return self.redirect(path) + if (pathEndsWithSep) return self.error(404) + self.emit('file', path, stat) + self.send(path, stat) + }) + + function next (err) { + if (self._extensions.length <= i) { + return err + ? self.onStatError(err) + : self.error(404) + } + + var p = path + '.' + self._extensions[i++] + + debug('stat "%s"', p) + fs.stat(p, function (err, stat) { + if (err) return next(err) + if (stat.isDirectory()) return next() + self.emit('file', p, stat) + self.send(p, stat) + }) + } +} + +/** + * Transfer index for `path`. + * + * @param {String} path + * @api private + */ +SendStream.prototype.sendIndex = function sendIndex (path) { + var i = -1 + var self = this + + function next (err) { + if (++i >= self._index.length) { + if (err) return self.onStatError(err) + return self.error(404) + } + + var p = join(path, self._index[i]) + + debug('stat "%s"', p) + fs.stat(p, function (err, stat) { + if (err) return next(err) + if (stat.isDirectory()) return next() + self.emit('file', p, stat) + self.send(p, stat) + }) + } + + next() +} + +/** + * Stream `path` to the response. + * + * @param {String} path + * @param {Object} options + * @api private + */ + +SendStream.prototype.stream = function stream (path, options) { + var self = this + var res = this.res + + // pipe + var stream = fs.createReadStream(path, options) + this.emit('stream', stream) + stream.pipe(res) + + // cleanup + function cleanup () { + stream.destroy() + } + + // response finished, cleanup + onFinished(res, cleanup) + + // error handling + stream.on('error', function onerror (err) { + // clean up stream early + cleanup() + + // error + self.onStatError(err) + }) + + // end + stream.on('end', function onend () { + self.emit('end') + }) +} + +/** + * Set content-type based on `path` + * if it hasn't been explicitly set. + * + * @param {String} path + * @api private + */ + +SendStream.prototype.type = function type (path) { + var res = this.res + + if (res.getHeader('Content-Type')) return + + var ext = extname(path) + var type = mime.contentType(ext) || 'application/octet-stream' + + debug('content-type %s', type) + res.setHeader('Content-Type', type) +} + +/** + * Set response header fields, most + * fields may be pre-defined. + * + * @param {String} path + * @param {Object} stat + * @api private + */ + +SendStream.prototype.setHeader = function setHeader (path, stat) { + var res = this.res + + this.emit('headers', res, path, stat) + + if (this._acceptRanges && !res.getHeader('Accept-Ranges')) { + debug('accept ranges') + res.setHeader('Accept-Ranges', 'bytes') + } + + if (this._cacheControl && !res.getHeader('Cache-Control')) { + var cacheControl = 'public, max-age=' + Math.floor(this._maxage / 1000) + + if (this._immutable) { + cacheControl += ', immutable' + } + + debug('cache-control %s', cacheControl) + res.setHeader('Cache-Control', cacheControl) + } + + if (this._lastModified && !res.getHeader('Last-Modified')) { + var modified = stat.mtime.toUTCString() + debug('modified %s', modified) + res.setHeader('Last-Modified', modified) + } + + if (this._etag && !res.getHeader('ETag')) { + var val = etag(stat) + debug('etag %s', val) + res.setHeader('ETag', val) + } +} + +/** + * Clear all headers from a response. + * + * @param {object} res + * @private + */ + +function clearHeaders (res) { + for (const header of res.getHeaderNames()) { + res.removeHeader(header) + } +} + +/** + * Collapse all leading slashes into a single slash + * + * @param {string} str + * @private + */ +function collapseLeadingSlashes (str) { + for (var i = 0; i < str.length; i++) { + if (str[i] !== '/') { + break + } + } + + return i > 1 + ? '/' + str.substr(i) + : str +} + +/** + * Determine if path parts contain a dotfile. + * + * @api private + */ + +function containsDotFile (parts) { + for (var i = 0; i < parts.length; i++) { + var part = parts[i] + if (part.length > 1 && part[0] === '.') { + return true + } + } + + return false +} + +/** + * Create a Content-Range header. + * + * @param {string} type + * @param {number} size + * @param {array} [range] + */ + +function contentRange (type, size, range) { + return type + ' ' + (range ? range.start + '-' + range.end : '*') + '/' + size +} + +/** + * Create a minimal HTML document. + * + * @param {string} title + * @param {string} body + * @private + */ + +function createHtmlDocument (title, body) { + return '\n' + + '\n' + + '\n' + + '\n' + + '' + title + '\n' + + '\n' + + '\n' + + '
' + body + '
\n' + + '\n' + + '\n' +} + +/** + * Create a HttpError object from simple arguments. + * + * @param {number} status + * @param {Error|object} err + * @private + */ + +function createHttpError (status, err) { + if (!err) { + return createError(status) + } + + return err instanceof Error + ? createError(status, err, { expose: false }) + : createError(status, err) +} + +/** + * decodeURIComponent. + * + * Allows V8 to only deoptimize this fn instead of all + * of send(). + * + * @param {String} path + * @api private + */ + +function decode (path) { + try { + return decodeURIComponent(path) + } catch (err) { + return -1 + } +} + +/** + * Determine if emitter has listeners of a given type. + * + * The way to do this check is done three different ways in Node.js >= 0.10 + * so this consolidates them into a minimal set using instance methods. + * + * @param {EventEmitter} emitter + * @param {string} type + * @returns {boolean} + * @private + */ + +function hasListeners (emitter, type) { + var count = typeof emitter.listenerCount !== 'function' + ? emitter.listeners(type).length + : emitter.listenerCount(type) + + return count > 0 +} + +/** + * Normalize the index option into an array. + * + * @param {boolean|string|array} val + * @param {string} name + * @private + */ + +function normalizeList (val, name) { + var list = [].concat(val || []) + + for (var i = 0; i < list.length; i++) { + if (typeof list[i] !== 'string') { + throw new TypeError(name + ' must be array of strings or false') + } + } + + return list +} + +/** + * Parse an HTTP Date into a number. + * + * @param {string} date + * @private + */ + +function parseHttpDate (date) { + var timestamp = date && Date.parse(date) + + return typeof timestamp === 'number' + ? timestamp + : NaN +} + +/** + * Parse a HTTP token list. + * + * @param {string} str + * @private + */ + +function parseTokenList (str) { + var end = 0 + var list = [] + var start = 0 + + // gather tokens + for (var i = 0, len = str.length; i < len; i++) { + switch (str.charCodeAt(i)) { + case 0x20: /* */ + if (start === end) { + start = end = i + 1 + } + break + case 0x2c: /* , */ + if (start !== end) { + list.push(str.substring(start, end)) + } + start = end = i + 1 + break + default: + end = i + 1 + break + } + } + + // final token + if (start !== end) { + list.push(str.substring(start, end)) + } + + return list +} + +/** + * Set an object of headers on a response. + * + * @param {object} res + * @param {object} headers + * @private + */ + +function setHeaders (res, headers) { + var keys = Object.keys(headers) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i] + res.setHeader(key, headers[key]) + } +} diff --git a/bff/node_modules/send/package.json b/bff/node_modules/send/package.json new file mode 100644 index 0000000..e9d3cc2 --- /dev/null +++ b/bff/node_modules/send/package.json @@ -0,0 +1,63 @@ +{ + "name": "send", + "description": "Better streaming static file server with Range and conditional-GET support", + "version": "1.2.1", + "author": "TJ Holowaychuk ", + "contributors": [ + "Douglas Christopher Wilson ", + "James Wyatt Cready ", + "Jesús Leganés Combarro " + ], + "license": "MIT", + "repository": "pillarjs/send", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "keywords": [ + "static", + "file", + "server" + ], + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "devDependencies": { + "after": "^0.8.2", + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "^10.7.0", + "nyc": "^17.0.0", + "supertest": "6.3.4" + }, + "files": [ + "LICENSE", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 18" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --check-leaks --reporter spec", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/serve-static/LICENSE b/bff/node_modules/serve-static/LICENSE new file mode 100644 index 0000000..cbe62e8 --- /dev/null +++ b/bff/node_modules/serve-static/LICENSE @@ -0,0 +1,25 @@ +(The MIT License) + +Copyright (c) 2010 Sencha Inc. +Copyright (c) 2011 LearnBoost +Copyright (c) 2011 TJ Holowaychuk +Copyright (c) 2014-2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/serve-static/README.md b/bff/node_modules/serve-static/README.md new file mode 100644 index 0000000..3ff1f1f --- /dev/null +++ b/bff/node_modules/serve-static/README.md @@ -0,0 +1,253 @@ +# serve-static + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![CI][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install serve-static +``` + +## API + +```js +const serveStatic = require('serve-static') +``` + +### serveStatic(root, options) + +Create a new middleware function to serve files from within a given root +directory. The file to serve will be determined by combining `req.url` +with the provided root directory. When a file is not found, instead of +sending a 404 response, this module will instead call `next()` to move on +to the next middleware, allowing for stacking and fall-backs. + +#### Options + +##### acceptRanges + +Enable or disable accepting ranged requests, defaults to true. +Disabling this will not send `Accept-Ranges` and ignore the contents +of the `Range` request header. + +##### cacheControl + +Enable or disable setting `Cache-Control` response header, defaults to +true. Disabling this will ignore the `immutable` and `maxAge` options. + +##### dotfiles + +Set how "dotfiles" are treated when encountered. A dotfile is a file +or directory that begins with a dot ("."). Note this check is done on +the path itself without checking if the path actually exists on the +disk. If `root` is specified, only the dotfiles above the root are +checked (i.e. the root itself can be within a dotfile when set +to "deny"). + + - `'allow'` No special treatment for dotfiles. + - `'deny'` Deny a request for a dotfile and 403/`next()`. + - `'ignore'` Pretend like the dotfile does not exist and 404/`next()`. + +The default value is `'ignore'`. + +##### etag + +Enable or disable etag generation, defaults to true. + +##### extensions + +Set file extension fallbacks. When set, if a file is not found, the given +extensions will be added to the file name and search for. The first that +exists will be served. Example: `['html', 'htm']`. + +The default value is `false`. + +##### fallthrough + +Set the middleware to have client errors fall-through as just unhandled +requests, otherwise forward a client error. The difference is that client +errors like a bad request or a request to a non-existent file will cause +this middleware to simply `next()` to your next middleware when this value +is `true`. When this value is `false`, these errors (even 404s), will invoke +`next(err)`. + +Typically `true` is desired such that multiple physical directories can be +mapped to the same web address or for routes to fill in non-existent files. + +The value `false` can be used if this middleware is mounted at a path that +is designed to be strictly a single file system directory, which allows for +short-circuiting 404s for less overhead. This middleware will also reply to +all methods. + +The default value is `true`. + +##### immutable + +Enable or disable the `immutable` directive in the `Cache-Control` response +header, defaults to `false`. If set to `true`, the `maxAge` option should +also be specified to enable caching. The `immutable` directive will prevent +supported clients from making conditional requests during the life of the +`maxAge` option to check if the file has changed. + +##### index + +By default this module will send "index.html" files in response to a request +on a directory. To disable this set `false` or to supply a new index pass a +string or an array in preferred order. + +##### lastModified + +Enable or disable `Last-Modified` header, defaults to true. Uses the file +system's last modified value. + +##### maxAge + +Provide a max-age in milliseconds for http caching, defaults to 0. This +can also be a string accepted by the [ms](https://www.npmjs.org/package/ms#readme) +module. + +##### redirect + +Redirect to trailing "/" when the pathname is a dir. Defaults to `true`. + +##### setHeaders + +Function to set custom headers on response. Alterations to the headers need to +occur synchronously. The function is called as `fn(res, path, stat)`, where +the arguments are: + + - `res` the response object + - `path` the file path that is being sent + - `stat` the stat object of the file that is being sent + +## Examples + +### Serve files with vanilla node.js http server + +```js +const finalhandler = require('finalhandler') +const http = require('http') +const serveStatic = require('serve-static') + +// Serve up public/ftp folder +const serve = serveStatic('public/ftp', { index: ['index.html', 'index.htm'] }) + +// Create server +const server = http.createServer((req, res) => { + serve(req, res, finalhandler(req, res)) +}) + +// Listen +server.listen(3000) +``` + +### Serve all files as downloads + +```js +const contentDisposition = require('content-disposition') +const finalhandler = require('finalhandler') +const http = require('http') +const serveStatic = require('serve-static') + +// Serve up public/ftp folder +const serve = serveStatic('public/ftp', { + index: false, + setHeaders: setHeaders +}) + +// Set header to force download +function setHeaders (res, path) { + res.setHeader('Content-Disposition', contentDisposition(path)) +} + +// Create server +const server = http.createServer((req, res) => { + serve(req, res, finalhandler(req, res)) +}) + +// Listen +server.listen(3000) +``` + +### Serving using express + +#### Simple + +This is a simple example of using Express. + +```js +const express = require('express') +const serveStatic = require('serve-static') + +const app = express() + +app.use(serveStatic('public/ftp', { index: ['default.html', 'default.htm'] })) +app.listen(3000) +``` + +#### Multiple roots + +This example shows a simple way to search through multiple directories. +Files are searched for in `public-optimized/` first, then `public/` second +as a fallback. + +```js +const express = require('express') +const path = require('path') +const serveStatic = require('serve-static') + +const app = express() + +app.use(serveStatic(path.join(__dirname, 'public-optimized'))) +app.use(serveStatic(path.join(__dirname, 'public'))) +app.listen(3000) +``` + +#### Different settings for paths + +This example shows how to set a different max age depending on the served +file. In this example, HTML files are not cached, while everything else +is for 1 day. + +```js +const express = require('express') +const path = require('path') +const serveStatic = require('serve-static') + +const app = express() + +app.use(serveStatic(path.join(__dirname, 'public'), { + maxAge: '1d', + setHeaders: setCustomCacheControl +})) + +app.listen(3000) + +function setCustomCacheControl (res, file) { + if (path.extname(file) === '.html') { + // Custom Cache-Control for HTML files + res.setHeader('Cache-Control', 'public, max-age=0') + } +} +``` + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/serve-static/master +[coveralls-url]: https://coveralls.io/r/expressjs/serve-static?branch=master +[github-actions-ci-image]: https://badgen.net/github/checks/expressjs/serve-static/master?label=linux +[github-actions-ci-url]: https://github.com/expressjs/serve-static/actions/workflows/ci.yml +[node-image]: https://badgen.net/npm/node/serve-static +[node-url]: https://nodejs.org/en/download/ +[npm-downloads-image]: https://badgen.net/npm/dm/serve-static +[npm-url]: https://npmjs.org/package/serve-static +[npm-version-image]: https://badgen.net/npm/v/serve-static diff --git a/bff/node_modules/serve-static/index.js b/bff/node_modules/serve-static/index.js new file mode 100644 index 0000000..1bee463 --- /dev/null +++ b/bff/node_modules/serve-static/index.js @@ -0,0 +1,208 @@ +/*! + * serve-static + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2014-2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var encodeUrl = require('encodeurl') +var escapeHtml = require('escape-html') +var parseUrl = require('parseurl') +var resolve = require('path').resolve +var send = require('send') +var url = require('url') + +/** + * Module exports. + * @public + */ + +module.exports = serveStatic + +/** + * @param {string} root + * @param {object} [options] + * @return {function} + * @public + */ + +function serveStatic (root, options) { + if (!root) { + throw new TypeError('root path required') + } + + if (typeof root !== 'string') { + throw new TypeError('root path must be a string') + } + + // copy options object + var opts = Object.create(options || null) + + // fall-though + var fallthrough = opts.fallthrough !== false + + // default redirect + var redirect = opts.redirect !== false + + // headers listener + var setHeaders = opts.setHeaders + + if (setHeaders && typeof setHeaders !== 'function') { + throw new TypeError('option setHeaders must be function') + } + + // setup options for send + opts.maxage = opts.maxage || opts.maxAge || 0 + opts.root = resolve(root) + + // construct directory listener + var onDirectory = redirect + ? createRedirectDirectoryListener() + : createNotFoundDirectoryListener() + + return function serveStatic (req, res, next) { + if (req.method !== 'GET' && req.method !== 'HEAD') { + if (fallthrough) { + return next() + } + + // method not allowed + res.statusCode = 405 + res.setHeader('Allow', 'GET, HEAD') + res.setHeader('Content-Length', '0') + res.end() + return + } + + var forwardError = !fallthrough + var originalUrl = parseUrl.original(req) + var path = parseUrl(req).pathname + + // make sure redirect occurs at mount + if (path === '/' && originalUrl.pathname.substr(-1) !== '/') { + path = '' + } + + // create send stream + var stream = send(req, path, opts) + + // add directory handler + stream.on('directory', onDirectory) + + // add headers listener + if (setHeaders) { + stream.on('headers', setHeaders) + } + + // add file listener for fallthrough + if (fallthrough) { + stream.on('file', function onFile () { + // once file is determined, always forward error + forwardError = true + }) + } + + // forward errors + stream.on('error', function error (err) { + if (forwardError || !(err.statusCode < 500)) { + next(err) + return + } + + next() + }) + + // pipe + stream.pipe(res) + } +} + +/** + * Collapse all leading slashes into a single slash + * @private + */ +function collapseLeadingSlashes (str) { + for (var i = 0; i < str.length; i++) { + if (str.charCodeAt(i) !== 0x2f /* / */) { + break + } + } + + return i > 1 + ? '/' + str.substr(i) + : str +} + +/** + * Create a minimal HTML document. + * + * @param {string} title + * @param {string} body + * @private + */ + +function createHtmlDocument (title, body) { + return '\n' + + '\n' + + '\n' + + '\n' + + '' + title + '\n' + + '\n' + + '\n' + + '
' + body + '
\n' + + '\n' + + '\n' +} + +/** + * Create a directory listener that just 404s. + * @private + */ + +function createNotFoundDirectoryListener () { + return function notFound () { + this.error(404) + } +} + +/** + * Create a directory listener that performs a redirect. + * @private + */ + +function createRedirectDirectoryListener () { + return function redirect (res) { + if (this.hasTrailingSlash()) { + this.error(404) + return + } + + // get original URL + var originalUrl = parseUrl.original(this.req) + + // append trailing slash + originalUrl.path = null + originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + '/') + + // reformat the URL + var loc = encodeUrl(url.format(originalUrl)) + var doc = createHtmlDocument('Redirecting', 'Redirecting to ' + escapeHtml(loc)) + + // send redirect response + res.statusCode = 301 + res.setHeader('Content-Type', 'text/html; charset=UTF-8') + res.setHeader('Content-Length', Buffer.byteLength(doc)) + res.setHeader('Content-Security-Policy', "default-src 'none'") + res.setHeader('X-Content-Type-Options', 'nosniff') + res.setHeader('Location', loc) + res.end(doc) + } +} diff --git a/bff/node_modules/serve-static/package.json b/bff/node_modules/serve-static/package.json new file mode 100644 index 0000000..5fb5b02 --- /dev/null +++ b/bff/node_modules/serve-static/package.json @@ -0,0 +1,44 @@ +{ + "name": "serve-static", + "description": "Serve static files", + "version": "2.2.1", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "repository": "expressjs/serve-static", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + }, + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "^10.7.0", + "nyc": "^17.0.0", + "supertest": "^6.3.4" + }, + "files": [ + "LICENSE", + "index.js" + ], + "engines": { + "node": ">= 18" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/setprototypeof/LICENSE b/bff/node_modules/setprototypeof/LICENSE new file mode 100644 index 0000000..61afa2f --- /dev/null +++ b/bff/node_modules/setprototypeof/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2015, Wes Todd + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/bff/node_modules/setprototypeof/README.md b/bff/node_modules/setprototypeof/README.md new file mode 100644 index 0000000..791eeff --- /dev/null +++ b/bff/node_modules/setprototypeof/README.md @@ -0,0 +1,31 @@ +# Polyfill for `Object.setPrototypeOf` + +[![NPM Version](https://img.shields.io/npm/v/setprototypeof.svg)](https://npmjs.org/package/setprototypeof) +[![NPM Downloads](https://img.shields.io/npm/dm/setprototypeof.svg)](https://npmjs.org/package/setprototypeof) +[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](https://github.com/standard/standard) + +A simple cross platform implementation to set the prototype of an instianted object. Supports all modern browsers and at least back to IE8. + +## Usage: + +``` +$ npm install --save setprototypeof +``` + +```javascript +var setPrototypeOf = require('setprototypeof') + +var obj = {} +setPrototypeOf(obj, { + foo: function () { + return 'bar' + } +}) +obj.foo() // bar +``` + +TypeScript is also supported: + +```typescript +import setPrototypeOf from 'setprototypeof' +``` diff --git a/bff/node_modules/setprototypeof/index.d.ts b/bff/node_modules/setprototypeof/index.d.ts new file mode 100644 index 0000000..f108ecd --- /dev/null +++ b/bff/node_modules/setprototypeof/index.d.ts @@ -0,0 +1,2 @@ +declare function setPrototypeOf(o: any, proto: object | null): any; +export = setPrototypeOf; diff --git a/bff/node_modules/setprototypeof/index.js b/bff/node_modules/setprototypeof/index.js new file mode 100644 index 0000000..c527055 --- /dev/null +++ b/bff/node_modules/setprototypeof/index.js @@ -0,0 +1,17 @@ +'use strict' +/* eslint no-proto: 0 */ +module.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties) + +function setProtoOf (obj, proto) { + obj.__proto__ = proto + return obj +} + +function mixinProperties (obj, proto) { + for (var prop in proto) { + if (!Object.prototype.hasOwnProperty.call(obj, prop)) { + obj[prop] = proto[prop] + } + } + return obj +} diff --git a/bff/node_modules/setprototypeof/package.json b/bff/node_modules/setprototypeof/package.json new file mode 100644 index 0000000..f20915b --- /dev/null +++ b/bff/node_modules/setprototypeof/package.json @@ -0,0 +1,38 @@ +{ + "name": "setprototypeof", + "version": "1.2.0", + "description": "A small polyfill for Object.setprototypeof", + "main": "index.js", + "typings": "index.d.ts", + "scripts": { + "test": "standard && mocha", + "testallversions": "npm run node010 && npm run node4 && npm run node6 && npm run node9 && npm run node11", + "testversion": "docker run -it --rm -v $(PWD):/usr/src/app -w /usr/src/app node:${NODE_VER} npm install mocha@${MOCHA_VER:-latest} && npm t", + "node010": "NODE_VER=0.10 MOCHA_VER=3 npm run testversion", + "node4": "NODE_VER=4 npm run testversion", + "node6": "NODE_VER=6 npm run testversion", + "node9": "NODE_VER=9 npm run testversion", + "node11": "NODE_VER=11 npm run testversion", + "prepublishOnly": "npm t", + "postpublish": "git push origin && git push origin --tags" + }, + "repository": { + "type": "git", + "url": "https://github.com/wesleytodd/setprototypeof.git" + }, + "keywords": [ + "polyfill", + "object", + "setprototypeof" + ], + "author": "Wes Todd", + "license": "ISC", + "bugs": { + "url": "https://github.com/wesleytodd/setprototypeof/issues" + }, + "homepage": "https://github.com/wesleytodd/setprototypeof", + "devDependencies": { + "mocha": "^6.1.4", + "standard": "^13.0.2" + } +} diff --git a/bff/node_modules/setprototypeof/test/index.js b/bff/node_modules/setprototypeof/test/index.js new file mode 100644 index 0000000..afeb4dd --- /dev/null +++ b/bff/node_modules/setprototypeof/test/index.js @@ -0,0 +1,24 @@ +'use strict' +/* eslint-env mocha */ +/* eslint no-proto: 0 */ +var assert = require('assert') +var setPrototypeOf = require('..') + +describe('setProtoOf(obj, proto)', function () { + it('should merge objects', function () { + var obj = { a: 1, b: 2 } + var proto = { b: 3, c: 4 } + var mergeObj = setPrototypeOf(obj, proto) + + if (Object.getPrototypeOf) { + assert.strictEqual(Object.getPrototypeOf(obj), proto) + } else if ({ __proto__: [] } instanceof Array) { + assert.strictEqual(obj.__proto__, proto) + } else { + assert.strictEqual(obj.a, 1) + assert.strictEqual(obj.b, 2) + assert.strictEqual(obj.c, 4) + } + assert.strictEqual(mergeObj, obj) + }) +}) diff --git a/bff/node_modules/side-channel-list/.editorconfig b/bff/node_modules/side-channel-list/.editorconfig new file mode 100644 index 0000000..72e0eba --- /dev/null +++ b/bff/node_modules/side-channel-list/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab +indent_size = 2 +trim_trailing_whitespace = true diff --git a/bff/node_modules/side-channel-list/.eslintrc b/bff/node_modules/side-channel-list/.eslintrc new file mode 100644 index 0000000..93978e7 --- /dev/null +++ b/bff/node_modules/side-channel-list/.eslintrc @@ -0,0 +1,11 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "max-lines-per-function": 0, + "multiline-comment-style": 1, + "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], + }, +} diff --git a/bff/node_modules/side-channel-list/.github/FUNDING.yml b/bff/node_modules/side-channel-list/.github/FUNDING.yml new file mode 100644 index 0000000..eaff735 --- /dev/null +++ b/bff/node_modules/side-channel-list/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/side-channel-list +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/side-channel-list/.nycrc b/bff/node_modules/side-channel-list/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/bff/node_modules/side-channel-list/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/side-channel-list/CHANGELOG.md b/bff/node_modules/side-channel-list/CHANGELOG.md new file mode 100644 index 0000000..2ec51b7 --- /dev/null +++ b/bff/node_modules/side-channel-list/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## v1.0.0 - 2024-12-10 + +### Commits + +- Initial implementation, tests, readme, types [`5d6baee`](https://github.com/ljharb/side-channel-list/commit/5d6baee5c9054a1238007f5a1dfc109a7a816251) +- Initial commit [`3ae784c`](https://github.com/ljharb/side-channel-list/commit/3ae784c63a47895fbaeed2a91ab54a8029a7a100) +- npm init [`07055a4`](https://github.com/ljharb/side-channel-list/commit/07055a4d139895565b199dba5fe2479c1a1b9e28) +- Only apps should have lockfiles [`9573058`](https://github.com/ljharb/side-channel-list/commit/9573058a47494e2d68f8c6c77b5d7fbe441949c1) diff --git a/bff/node_modules/side-channel-list/LICENSE b/bff/node_modules/side-channel-list/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/bff/node_modules/side-channel-list/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/side-channel-list/README.md b/bff/node_modules/side-channel-list/README.md new file mode 100644 index 0000000..d9c7a13 --- /dev/null +++ b/bff/node_modules/side-channel-list/README.md @@ -0,0 +1,62 @@ +# side-channel-list [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Store information about any JS value in a side channel, using a linked list. + +Warning: this implementation will leak memory until you `delete` the `key`. +Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy. + +## Getting started + +```sh +npm install --save side-channel-list +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getSideChannelList = require('side-channel-list'); + +const channel = getSideChannelList(); + +const key = {}; +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); + +channel.set(key, 42); + +channel.assert(key); // does not throw +assert.equal(channel.has(key), true); +assert.equal(channel.get(key), 42); + +channel.delete(key); +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/side-channel-list +[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-list.svg +[deps-svg]: https://david-dm.org/ljharb/side-channel-list.svg +[deps-url]: https://david-dm.org/ljharb/side-channel-list +[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-list/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/side-channel-list#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/side-channel-list.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/side-channel-list.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/side-channel-list.svg +[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-list +[codecov-image]: https://codecov.io/gh/ljharb/side-channel-list/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-list/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-list +[actions-url]: https://github.com/ljharb/side-channel-list/actions diff --git a/bff/node_modules/side-channel-list/index.d.ts b/bff/node_modules/side-channel-list/index.d.ts new file mode 100644 index 0000000..c9cabc8 --- /dev/null +++ b/bff/node_modules/side-channel-list/index.d.ts @@ -0,0 +1,13 @@ +declare namespace getSideChannelList { + type Channel = { + assert: (key: K) => void; + has: (key: K) => boolean; + get: (key: K) => V | undefined; + set: (key: K, value: V) => void; + delete: (key: K) => boolean; + }; +} + +declare function getSideChannelList(): getSideChannelList.Channel; + +export = getSideChannelList; diff --git a/bff/node_modules/side-channel-list/index.js b/bff/node_modules/side-channel-list/index.js new file mode 100644 index 0000000..8d6f98c --- /dev/null +++ b/bff/node_modules/side-channel-list/index.js @@ -0,0 +1,113 @@ +'use strict'; + +var inspect = require('object-inspect'); + +var $TypeError = require('es-errors/type'); + +/* +* This function traverses the list returning the node corresponding to the given key. +* +* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. +* By doing so, all the recently used nodes can be accessed relatively quickly. +*/ +/** @type {import('./list.d.ts').listGetNode} */ +// eslint-disable-next-line consistent-return +var listGetNode = function (list, key, isDelete) { + /** @type {typeof list | NonNullable<(typeof list)['next']>} */ + var prev = list; + /** @type {(typeof list)['next']} */ + var curr; + // eslint-disable-next-line eqeqeq + for (; (curr = prev.next) != null; prev = curr) { + if (curr.key === key) { + prev.next = curr.next; + if (!isDelete) { + // eslint-disable-next-line no-extra-parens + curr.next = /** @type {NonNullable} */ (list.next); + list.next = curr; // eslint-disable-line no-param-reassign + } + return curr; + } + } +}; + +/** @type {import('./list.d.ts').listGet} */ +var listGet = function (objects, key) { + if (!objects) { + return void undefined; + } + var node = listGetNode(objects, key); + return node && node.value; +}; +/** @type {import('./list.d.ts').listSet} */ +var listSet = function (objects, key, value) { + var node = listGetNode(objects, key); + if (node) { + node.value = value; + } else { + // Prepend the new node to the beginning of the list + objects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens + key: key, + next: objects.next, + value: value + }); + } +}; +/** @type {import('./list.d.ts').listHas} */ +var listHas = function (objects, key) { + if (!objects) { + return false; + } + return !!listGetNode(objects, key); +}; +/** @type {import('./list.d.ts').listDelete} */ +// eslint-disable-next-line consistent-return +var listDelete = function (objects, key) { + if (objects) { + return listGetNode(objects, key, true); + } +}; + +/** @type {import('.')} */ +module.exports = function getSideChannelList() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {import('./list.d.ts').RootNode | undefined} */ var $o; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + var root = $o && $o.next; + var deletedNode = listDelete($o, key); + if (deletedNode && root && root === deletedNode) { + $o = void undefined; + } + return !!deletedNode; + }, + get: function (key) { + return listGet($o, key); + }, + has: function (key) { + return listHas($o, key); + }, + set: function (key, value) { + if (!$o) { + // Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head + $o = { + next: void undefined + }; + } + // eslint-disable-next-line no-extra-parens + listSet(/** @type {NonNullable} */ ($o), key, value); + } + }; + // @ts-expect-error TODO: figure out why this is erroring + return channel; +}; diff --git a/bff/node_modules/side-channel-list/list.d.ts b/bff/node_modules/side-channel-list/list.d.ts new file mode 100644 index 0000000..2c759e2 --- /dev/null +++ b/bff/node_modules/side-channel-list/list.d.ts @@ -0,0 +1,14 @@ +type ListNode = { + key: K; + next: undefined | ListNode; + value: T; +}; +type RootNode = { + next: undefined | ListNode; +}; + +export function listGetNode(list: RootNode, key: ListNode['key'], isDelete?: boolean): ListNode | undefined; +export function listGet(objects: undefined | RootNode, key: ListNode['key']): T | undefined; +export function listSet(objects: RootNode, key: ListNode['key'], value: T): void; +export function listHas(objects: undefined | RootNode, key: ListNode['key']): boolean; +export function listDelete(objects: undefined | RootNode, key: ListNode['key']): ListNode | undefined; diff --git a/bff/node_modules/side-channel-list/package.json b/bff/node_modules/side-channel-list/package.json new file mode 100644 index 0000000..ba0f5c5 --- /dev/null +++ b/bff/node_modules/side-channel-list/package.json @@ -0,0 +1,77 @@ +{ + "name": "side-channel-list", + "version": "1.0.0", + "description": "Store information about any JS value in a side channel, using a linked list", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "./index.d.ts", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/side-channel-list.git" + }, + "keywords": [], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/side-channel-list/issues" + }, + "homepage": "https://github.com/ljharb/side-channel-list#readme", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/side-channel-list/test/index.js b/bff/node_modules/side-channel-list/test/index.js new file mode 100644 index 0000000..3ad4368 --- /dev/null +++ b/bff/node_modules/side-channel-list/test/index.js @@ -0,0 +1,104 @@ +'use strict'; + +var test = require('tape'); + +var getSideChannelList = require('../'); + +test('getSideChannelList', function (t) { + t.test('export', function (st) { + st.equal(typeof getSideChannelList, 'function', 'is a function'); + + st.equal(getSideChannelList.length, 0, 'takes no arguments'); + + var channel = getSideChannelList(); + st.ok(channel, 'is truthy'); + st.equal(typeof channel, 'object', 'is an object'); + st.end(); + }); + + t.test('assert', function (st) { + var channel = getSideChannelList(); + st['throws']( + function () { channel.assert({}); }, + TypeError, + 'nonexistent value throws' + ); + + var o = {}; + channel.set(o, 'data'); + st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); + + st.end(); + }); + + t.test('has', function (st) { + var channel = getSideChannelList(); + /** @type {unknown[]} */ var o = []; + + st.equal(channel.has(o), false, 'nonexistent value yields false'); + + channel.set(o, 'foo'); + st.equal(channel.has(o), true, 'existent value yields true'); + + st.equal(channel.has('abc'), false, 'non object value non existent yields false'); + + channel.set('abc', 'foo'); + st.equal(channel.has('abc'), true, 'non object value that exists yields true'); + + st.end(); + }); + + t.test('get', function (st) { + var channel = getSideChannelList(); + var o = {}; + st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); + + var data = {}; + channel.set(o, data); + st.equal(channel.get(o), data, '"get" yields data set by "set"'); + + st.end(); + }); + + t.test('set', function (st) { + var channel = getSideChannelList(); + var o = function () {}; + st.equal(channel.get(o), undefined, 'value not set'); + + channel.set(o, 42); + st.equal(channel.get(o), 42, 'value was set'); + + channel.set(o, Infinity); + st.equal(channel.get(o), Infinity, 'value was set again'); + + var o2 = {}; + channel.set(o2, 17); + st.equal(channel.get(o), Infinity, 'o is not modified'); + st.equal(channel.get(o2), 17, 'o2 is set'); + + channel.set(o, 14); + st.equal(channel.get(o), 14, 'o is modified'); + st.equal(channel.get(o2), 17, 'o2 is not modified'); + + st.end(); + }); + + t.test('delete', function (st) { + var channel = getSideChannelList(); + var o = {}; + st.equal(channel['delete']({}), false, 'nonexistent value yields false'); + + channel.set(o, 42); + st.equal(channel.has(o), true, 'value is set'); + + st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); + + st.equal(channel['delete'](o), true, 'deleted value yields true'); + + st.equal(channel.has(o), false, 'value is no longer set'); + + st.end(); + }); + + t.end(); +}); diff --git a/bff/node_modules/side-channel-list/tsconfig.json b/bff/node_modules/side-channel-list/tsconfig.json new file mode 100644 index 0000000..d9a6668 --- /dev/null +++ b/bff/node_modules/side-channel-list/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/side-channel-map/.editorconfig b/bff/node_modules/side-channel-map/.editorconfig new file mode 100644 index 0000000..72e0eba --- /dev/null +++ b/bff/node_modules/side-channel-map/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab +indent_size = 2 +trim_trailing_whitespace = true diff --git a/bff/node_modules/side-channel-map/.eslintrc b/bff/node_modules/side-channel-map/.eslintrc new file mode 100644 index 0000000..93978e7 --- /dev/null +++ b/bff/node_modules/side-channel-map/.eslintrc @@ -0,0 +1,11 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "max-lines-per-function": 0, + "multiline-comment-style": 1, + "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], + }, +} diff --git a/bff/node_modules/side-channel-map/.github/FUNDING.yml b/bff/node_modules/side-channel-map/.github/FUNDING.yml new file mode 100644 index 0000000..f2891bd --- /dev/null +++ b/bff/node_modules/side-channel-map/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/side-channel-map +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/side-channel-map/.nycrc b/bff/node_modules/side-channel-map/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/bff/node_modules/side-channel-map/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/side-channel-map/CHANGELOG.md b/bff/node_modules/side-channel-map/CHANGELOG.md new file mode 100644 index 0000000..b6ccea9 --- /dev/null +++ b/bff/node_modules/side-channel-map/CHANGELOG.md @@ -0,0 +1,22 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.1](https://github.com/ljharb/side-channel-map/compare/v1.0.0...v1.0.1) - 2024-12-10 + +### Commits + +- [Deps] update `call-bound` [`6d05aaa`](https://github.com/ljharb/side-channel-map/commit/6d05aaa4ce5f2be4e7825df433d650696f0ba40f) +- [types] fix generics ordering [`11c0184`](https://github.com/ljharb/side-channel-map/commit/11c0184132ac11fdc16857e12682e148e5e9ee74) + +## v1.0.0 - 2024-12-10 + +### Commits + +- Initial implementation, tests, readme, types [`ad877b4`](https://github.com/ljharb/side-channel-map/commit/ad877b42926d46d63fff76a2bd01d2b4a01959a9) +- Initial commit [`28f8879`](https://github.com/ljharb/side-channel-map/commit/28f8879c512abe8fcf9b6a4dc7754a0287e5eba4) +- npm init [`2c9604e`](https://github.com/ljharb/side-channel-map/commit/2c9604e5aa40223e425ea7cea78f8a07697504bd) +- Only apps should have lockfiles [`5e7ba9c`](https://github.com/ljharb/side-channel-map/commit/5e7ba9cffe3ef42095815adc8ac1255b49bbadf5) diff --git a/bff/node_modules/side-channel-map/LICENSE b/bff/node_modules/side-channel-map/LICENSE new file mode 100644 index 0000000..f82f389 --- /dev/null +++ b/bff/node_modules/side-channel-map/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/side-channel-map/README.md b/bff/node_modules/side-channel-map/README.md new file mode 100644 index 0000000..8fa6f77 --- /dev/null +++ b/bff/node_modules/side-channel-map/README.md @@ -0,0 +1,62 @@ +# side-channel-map [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Store information about any JS value in a side channel, using a Map. + +Warning: if the `key` is an object, this implementation will leak memory until you `delete` it. +Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy. + +## Getting started + +```sh +npm install --save side-channel-map +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getSideChannelMap = require('side-channel-map'); + +const channel = getSideChannelMap(); + +const key = {}; +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); + +channel.set(key, 42); + +channel.assert(key); // does not throw +assert.equal(channel.has(key), true); +assert.equal(channel.get(key), 42); + +channel.delete(key); +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/side-channel-map +[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-map.svg +[deps-svg]: https://david-dm.org/ljharb/side-channel-map.svg +[deps-url]: https://david-dm.org/ljharb/side-channel-map +[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-map/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/side-channel-map#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/side-channel-map.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/side-channel-map.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/side-channel-map.svg +[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-map +[codecov-image]: https://codecov.io/gh/ljharb/side-channel-map/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-map/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-map +[actions-url]: https://github.com/ljharb/side-channel-map/actions diff --git a/bff/node_modules/side-channel-map/index.d.ts b/bff/node_modules/side-channel-map/index.d.ts new file mode 100644 index 0000000..de33e89 --- /dev/null +++ b/bff/node_modules/side-channel-map/index.d.ts @@ -0,0 +1,15 @@ +declare namespace getSideChannelMap { + type Channel = { + assert: (key: K) => void; + has: (key: K) => boolean; + get: (key: K) => V | undefined; + set: (key: K, value: V) => void; + delete: (key: K) => boolean; + }; +} + +declare function getSideChannelMap(): getSideChannelMap.Channel; + +declare const x: false | typeof getSideChannelMap; + +export = x; diff --git a/bff/node_modules/side-channel-map/index.js b/bff/node_modules/side-channel-map/index.js new file mode 100644 index 0000000..e111100 --- /dev/null +++ b/bff/node_modules/side-channel-map/index.js @@ -0,0 +1,68 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); +var callBound = require('call-bound'); +var inspect = require('object-inspect'); + +var $TypeError = require('es-errors/type'); +var $Map = GetIntrinsic('%Map%', true); + +/** @type {(thisArg: Map, key: K) => V} */ +var $mapGet = callBound('Map.prototype.get', true); +/** @type {(thisArg: Map, key: K, value: V) => void} */ +var $mapSet = callBound('Map.prototype.set', true); +/** @type {(thisArg: Map, key: K) => boolean} */ +var $mapHas = callBound('Map.prototype.has', true); +/** @type {(thisArg: Map, key: K) => boolean} */ +var $mapDelete = callBound('Map.prototype.delete', true); +/** @type {(thisArg: Map) => number} */ +var $mapSize = callBound('Map.prototype.size', true); + +/** @type {import('.')} */ +module.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {Map | undefined} */ var $m; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + if ($m) { + var result = $mapDelete($m, key); + if ($mapSize($m) === 0) { + $m = void undefined; + } + return result; + } + return false; + }, + get: function (key) { // eslint-disable-line consistent-return + if ($m) { + return $mapGet($m, key); + } + }, + has: function (key) { + if ($m) { + return $mapHas($m, key); + } + return false; + }, + set: function (key, value) { + if (!$m) { + // @ts-expect-error TS can't handle narrowing a variable inside a closure + $m = new $Map(); + } + $mapSet($m, key, value); + } + }; + + // @ts-expect-error TODO: figure out why TS is erroring here + return channel; +}; diff --git a/bff/node_modules/side-channel-map/package.json b/bff/node_modules/side-channel-map/package.json new file mode 100644 index 0000000..18e8080 --- /dev/null +++ b/bff/node_modules/side-channel-map/package.json @@ -0,0 +1,80 @@ +{ + "name": "side-channel-map", + "version": "1.0.1", + "description": "Store information about any JS value in a side channel, using a Map", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "./index.d.ts", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "evalmd README.md && eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>= 10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/side-channel-map.git" + }, + "keywords": [], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/side-channel-map/issues" + }, + "homepage": "https://github.com/ljharb/side-channel-map#readme", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/get-intrinsic": "^1.2.3", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/side-channel-map/test/index.js b/bff/node_modules/side-channel-map/test/index.js new file mode 100644 index 0000000..1743323 --- /dev/null +++ b/bff/node_modules/side-channel-map/test/index.js @@ -0,0 +1,114 @@ +'use strict'; + +var test = require('tape'); + +var getSideChannelMap = require('../'); + +test('getSideChannelMap', { skip: typeof Map !== 'function' }, function (t) { + var getSideChannel = getSideChannelMap || function () { + throw new EvalError('should never happen'); + }; + + t.test('export', function (st) { + st.equal(typeof getSideChannel, 'function', 'is a function'); + + st.equal(getSideChannel.length, 0, 'takes no arguments'); + + var channel = getSideChannel(); + st.ok(channel, 'is truthy'); + st.equal(typeof channel, 'object', 'is an object'); + st.end(); + }); + + t.test('assert', function (st) { + var channel = getSideChannel(); + st['throws']( + function () { channel.assert({}); }, + TypeError, + 'nonexistent value throws' + ); + + var o = {}; + channel.set(o, 'data'); + st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); + + st.end(); + }); + + t.test('has', function (st) { + var channel = getSideChannel(); + /** @type {unknown[]} */ var o = []; + + st.equal(channel.has(o), false, 'nonexistent value yields false'); + + channel.set(o, 'foo'); + st.equal(channel.has(o), true, 'existent value yields true'); + + st.equal(channel.has('abc'), false, 'non object value non existent yields false'); + + channel.set('abc', 'foo'); + st.equal(channel.has('abc'), true, 'non object value that exists yields true'); + + st.end(); + }); + + t.test('get', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); + + var data = {}; + channel.set(o, data); + st.equal(channel.get(o), data, '"get" yields data set by "set"'); + + st.end(); + }); + + t.test('set', function (st) { + var channel = getSideChannel(); + var o = function () {}; + st.equal(channel.get(o), undefined, 'value not set'); + + channel.set(o, 42); + st.equal(channel.get(o), 42, 'value was set'); + + channel.set(o, Infinity); + st.equal(channel.get(o), Infinity, 'value was set again'); + + var o2 = {}; + channel.set(o2, 17); + st.equal(channel.get(o), Infinity, 'o is not modified'); + st.equal(channel.get(o2), 17, 'o2 is set'); + + channel.set(o, 14); + st.equal(channel.get(o), 14, 'o is modified'); + st.equal(channel.get(o2), 17, 'o2 is not modified'); + + st.end(); + }); + + t.test('delete', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel['delete']({}), false, 'nonexistent value yields false'); + + channel.set(o, 42); + st.equal(channel.has(o), true, 'value is set'); + + st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); + + st.equal(channel['delete'](o), true, 'deleted value yields true'); + + st.equal(channel.has(o), false, 'value is no longer set'); + + st.end(); + }); + + t.end(); +}); + +test('getSideChannelMap, no Maps', { skip: typeof Map === 'function' }, function (t) { + t.equal(getSideChannelMap, false, 'is false'); + + t.end(); +}); diff --git a/bff/node_modules/side-channel-map/tsconfig.json b/bff/node_modules/side-channel-map/tsconfig.json new file mode 100644 index 0000000..d9a6668 --- /dev/null +++ b/bff/node_modules/side-channel-map/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/side-channel-weakmap/.editorconfig b/bff/node_modules/side-channel-weakmap/.editorconfig new file mode 100644 index 0000000..72e0eba --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab +indent_size = 2 +trim_trailing_whitespace = true diff --git a/bff/node_modules/side-channel-weakmap/.eslintrc b/bff/node_modules/side-channel-weakmap/.eslintrc new file mode 100644 index 0000000..9b13ad8 --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/.eslintrc @@ -0,0 +1,12 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "id-length": 0, + "max-lines-per-function": 0, + "multiline-comment-style": 1, + "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], + }, +} diff --git a/bff/node_modules/side-channel-weakmap/.github/FUNDING.yml b/bff/node_modules/side-channel-weakmap/.github/FUNDING.yml new file mode 100644 index 0000000..2ae71cd --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/side-channel-weakmap +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/side-channel-weakmap/.nycrc b/bff/node_modules/side-channel-weakmap/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/side-channel-weakmap/CHANGELOG.md b/bff/node_modules/side-channel-weakmap/CHANGELOG.md new file mode 100644 index 0000000..aba7ab0 --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.0.2](https://github.com/ljharb/side-channel-weakmap/compare/v1.0.1...v1.0.2) - 2024-12-10 + +### Commits + +- [types] fix generics ordering [`1b62e94`](https://github.com/ljharb/side-channel-weakmap/commit/1b62e94a2ad6ed30b640ba73c4a2535836c67289) + +## [v1.0.1](https://github.com/ljharb/side-channel-weakmap/compare/v1.0.0...v1.0.1) - 2024-12-10 + +### Commits + +- [types] fix generics ordering [`08a4a5d`](https://github.com/ljharb/side-channel-weakmap/commit/08a4a5dbffedc3ebc79f1aaaf5a3dd6d2196dc1b) +- [Deps] update `side-channel-map` [`b53fe44`](https://github.com/ljharb/side-channel-weakmap/commit/b53fe447dfdd3a9aebedfd015b384eac17fce916) + +## v1.0.0 - 2024-12-10 + +### Commits + +- Initial implementation, tests, readme, types [`53c0fa4`](https://github.com/ljharb/side-channel-weakmap/commit/53c0fa4788435a006f58b9d7b43cb65989ecee49) +- Initial commit [`a157947`](https://github.com/ljharb/side-channel-weakmap/commit/a157947f26fcaf2c4a941d3a044e76bf67343532) +- npm init [`54dfc55`](https://github.com/ljharb/side-channel-weakmap/commit/54dfc55bafb16265910d5aad4e743c43aee5bbbb) +- Only apps should have lockfiles [`0ddd6c7`](https://github.com/ljharb/side-channel-weakmap/commit/0ddd6c7b07fe8ee04d67b2e9f7255af7ce62c07d) diff --git a/bff/node_modules/side-channel-weakmap/LICENSE b/bff/node_modules/side-channel-weakmap/LICENSE new file mode 100644 index 0000000..3900dd7 --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/side-channel-weakmap/README.md b/bff/node_modules/side-channel-weakmap/README.md new file mode 100644 index 0000000..856ee36 --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/README.md @@ -0,0 +1,62 @@ +# side-channel-weakmap [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Store information about any JS value in a side channel. Uses WeakMap if available. + +Warning: this implementation will leak memory until you `delete` the `key`. +Use [`side-channel`](https://npmjs.com/side-channel) for the best available strategy. + +## Getting started + +```sh +npm install --save side-channel-weakmap +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getSideChannelList = require('side-channel-weakmap'); + +const channel = getSideChannelList(); + +const key = {}; +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); + +channel.set(key, 42); + +channel.assert(key); // does not throw +assert.equal(channel.has(key), true); +assert.equal(channel.get(key), 42); + +channel.delete(key); +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/side-channel-weakmap +[npm-version-svg]: https://versionbadg.es/ljharb/side-channel-weakmap.svg +[deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap.svg +[deps-url]: https://david-dm.org/ljharb/side-channel-weakmap +[dev-deps-svg]: https://david-dm.org/ljharb/side-channel-weakmap/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/side-channel-weakmap#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/side-channel-weakmap.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/side-channel-weakmap.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/side-channel-weakmap.svg +[downloads-url]: https://npm-stat.com/charts.html?package=side-channel-weakmap +[codecov-image]: https://codecov.io/gh/ljharb/side-channel-weakmap/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel-weakmap/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel-weakmap +[actions-url]: https://github.com/ljharb/side-channel-weakmap/actions diff --git a/bff/node_modules/side-channel-weakmap/index.d.ts b/bff/node_modules/side-channel-weakmap/index.d.ts new file mode 100644 index 0000000..ce1bc2a --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/index.d.ts @@ -0,0 +1,15 @@ +declare namespace getSideChannelWeakMap { + type Channel = { + assert: (key: K) => void; + has: (key: K) => boolean; + get: (key: K) => V | undefined; + set: (key: K, value: V) => void; + delete: (key: K) => boolean; + } +} + +declare function getSideChannelWeakMap(): getSideChannelWeakMap.Channel; + +declare const x: false | typeof getSideChannelWeakMap; + +export = x; diff --git a/bff/node_modules/side-channel-weakmap/index.js b/bff/node_modules/side-channel-weakmap/index.js new file mode 100644 index 0000000..e5b8183 --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/index.js @@ -0,0 +1,84 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); +var callBound = require('call-bound'); +var inspect = require('object-inspect'); +var getSideChannelMap = require('side-channel-map'); + +var $TypeError = require('es-errors/type'); +var $WeakMap = GetIntrinsic('%WeakMap%', true); + +/** @type {(thisArg: WeakMap, key: K) => V} */ +var $weakMapGet = callBound('WeakMap.prototype.get', true); +/** @type {(thisArg: WeakMap, key: K, value: V) => void} */ +var $weakMapSet = callBound('WeakMap.prototype.set', true); +/** @type {(thisArg: WeakMap, key: K) => boolean} */ +var $weakMapHas = callBound('WeakMap.prototype.has', true); +/** @type {(thisArg: WeakMap, key: K) => boolean} */ +var $weakMapDelete = callBound('WeakMap.prototype.delete', true); + +/** @type {import('.')} */ +module.exports = $WeakMap + ? /** @type {Exclude} */ function getSideChannelWeakMap() { + /** @typedef {ReturnType} Channel */ + /** @typedef {Parameters[0]} K */ + /** @typedef {Parameters[1]} V */ + + /** @type {WeakMap | undefined} */ var $wm; + /** @type {Channel | undefined} */ var $m; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapDelete($wm, key); + } + } else if (getSideChannelMap) { + if ($m) { + return $m['delete'](key); + } + } + return false; + }, + get: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapGet($wm, key); + } + } + return $m && $m.get(key); + }, + has: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapHas($wm, key); + } + } + return !!$m && $m.has(key); + }, + set: function (key, value) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key, value); + } else if (getSideChannelMap) { + if (!$m) { + $m = getSideChannelMap(); + } + // eslint-disable-next-line no-extra-parens + /** @type {NonNullable} */ ($m).set(key, value); + } + } + }; + + // @ts-expect-error TODO: figure out why this is erroring + return channel; + } + : getSideChannelMap; diff --git a/bff/node_modules/side-channel-weakmap/package.json b/bff/node_modules/side-channel-weakmap/package.json new file mode 100644 index 0000000..9ef6583 --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/package.json @@ -0,0 +1,87 @@ +{ + "name": "side-channel-weakmap", + "version": "1.0.2", + "description": "Store information about any JS value in a side channel. Uses WeakMap if available.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "./index.d.ts", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/side-channel-weakmap.git" + }, + "keywords": [ + "weakmap", + "map", + "side", + "channel", + "metadata" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/side-channel-weakmap/issues" + }, + "homepage": "https://github.com/ljharb/side-channel-weakmap#readme", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/call-bind": "^1.0.5", + "@types/get-intrinsic": "^1.2.3", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/side-channel-weakmap/test/index.js b/bff/node_modules/side-channel-weakmap/test/index.js new file mode 100644 index 0000000..a01248b --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/test/index.js @@ -0,0 +1,114 @@ +'use strict'; + +var test = require('tape'); + +var getSideChannelWeakMap = require('../'); + +test('getSideChannelMap', { skip: typeof WeakMap !== 'function' && typeof Map !== 'function' }, function (t) { + var getSideChannel = getSideChannelWeakMap || function () { + throw new EvalError('should never happen'); + }; + + t.test('export', function (st) { + st.equal(typeof getSideChannel, 'function', 'is a function'); + + st.equal(getSideChannel.length, 0, 'takes no arguments'); + + var channel = getSideChannel(); + st.ok(channel, 'is truthy'); + st.equal(typeof channel, 'object', 'is an object'); + st.end(); + }); + + t.test('assert', function (st) { + var channel = getSideChannel(); + st['throws']( + function () { channel.assert({}); }, + TypeError, + 'nonexistent value throws' + ); + + var o = {}; + channel.set(o, 'data'); + st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); + + st.end(); + }); + + t.test('has', function (st) { + var channel = getSideChannel(); + /** @type {unknown[]} */ var o = []; + + st.equal(channel.has(o), false, 'nonexistent value yields false'); + + channel.set(o, 'foo'); + st.equal(channel.has(o), true, 'existent value yields true'); + + st.equal(channel.has('abc'), false, 'non object value non existent yields false'); + + channel.set('abc', 'foo'); + st.equal(channel.has('abc'), true, 'non object value that exists yields true'); + + st.end(); + }); + + t.test('get', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); + + var data = {}; + channel.set(o, data); + st.equal(channel.get(o), data, '"get" yields data set by "set"'); + + st.end(); + }); + + t.test('set', function (st) { + var channel = getSideChannel(); + var o = function () {}; + st.equal(channel.get(o), undefined, 'value not set'); + + channel.set(o, 42); + st.equal(channel.get(o), 42, 'value was set'); + + channel.set(o, Infinity); + st.equal(channel.get(o), Infinity, 'value was set again'); + + var o2 = {}; + channel.set(o2, 17); + st.equal(channel.get(o), Infinity, 'o is not modified'); + st.equal(channel.get(o2), 17, 'o2 is set'); + + channel.set(o, 14); + st.equal(channel.get(o), 14, 'o is modified'); + st.equal(channel.get(o2), 17, 'o2 is not modified'); + + st.end(); + }); + + t.test('delete', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel['delete']({}), false, 'nonexistent value yields false'); + + channel.set(o, 42); + st.equal(channel.has(o), true, 'value is set'); + + st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); + + st.equal(channel['delete'](o), true, 'deleted value yields true'); + + st.equal(channel.has(o), false, 'value is no longer set'); + + st.end(); + }); + + t.end(); +}); + +test('getSideChannelMap, no WeakMaps and/or Maps', { skip: typeof WeakMap === 'function' || typeof Map === 'function' }, function (t) { + t.equal(getSideChannelWeakMap, false, 'is false'); + + t.end(); +}); diff --git a/bff/node_modules/side-channel-weakmap/tsconfig.json b/bff/node_modules/side-channel-weakmap/tsconfig.json new file mode 100644 index 0000000..d9a6668 --- /dev/null +++ b/bff/node_modules/side-channel-weakmap/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/side-channel/.editorconfig b/bff/node_modules/side-channel/.editorconfig new file mode 100644 index 0000000..72e0eba --- /dev/null +++ b/bff/node_modules/side-channel/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = tab +indent_size = 2 +trim_trailing_whitespace = true diff --git a/bff/node_modules/side-channel/.eslintrc b/bff/node_modules/side-channel/.eslintrc new file mode 100644 index 0000000..9b13ad8 --- /dev/null +++ b/bff/node_modules/side-channel/.eslintrc @@ -0,0 +1,12 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "id-length": 0, + "max-lines-per-function": 0, + "multiline-comment-style": 1, + "new-cap": [2, { "capIsNewExceptions": ["GetIntrinsic"] }], + }, +} diff --git a/bff/node_modules/side-channel/.github/FUNDING.yml b/bff/node_modules/side-channel/.github/FUNDING.yml new file mode 100644 index 0000000..2a94840 --- /dev/null +++ b/bff/node_modules/side-channel/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/side-channel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/bff/node_modules/side-channel/.nycrc b/bff/node_modules/side-channel/.nycrc new file mode 100644 index 0000000..1826526 --- /dev/null +++ b/bff/node_modules/side-channel/.nycrc @@ -0,0 +1,13 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "test" + ] +} diff --git a/bff/node_modules/side-channel/CHANGELOG.md b/bff/node_modules/side-channel/CHANGELOG.md new file mode 100644 index 0000000..58e378c --- /dev/null +++ b/bff/node_modules/side-channel/CHANGELOG.md @@ -0,0 +1,110 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [v1.1.0](https://github.com/ljharb/side-channel/compare/v1.0.6...v1.1.0) - 2024-12-11 + +### Commits + +- [Refactor] extract implementations to `side-channel-weakmap`, `side-channel-map`, `side-channel-list` [`ada5955`](https://github.com/ljharb/side-channel/commit/ada595549a5c4c6c853756d598846b180941c6da) +- [New] add `channel.delete` [`c01d2d3`](https://github.com/ljharb/side-channel/commit/c01d2d3fd51dbb1ce6da72ad7916e61bd6172aad) +- [types] improve types [`0c54356`](https://github.com/ljharb/side-channel/commit/0c5435651417df41b8cc1a5f7cdce8bffae68cde) +- [readme] add content [`be24868`](https://github.com/ljharb/side-channel/commit/be248682ac294b0e22c883092c45985aa91c490a) +- [actions] split out node 10-20, and 20+ [`c4488e2`](https://github.com/ljharb/side-channel/commit/c4488e241ef3d49a19fe266ac830a2e644305911) +- [types] use shared tsconfig [`0e0d57c`](https://github.com/ljharb/side-channel/commit/0e0d57c2ff17c7b45c6cbd43ebcf553edc9e3adc) +- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/object-inspect`, `@types/tape`, `auto-changelog`, `tape` [`fb4f622`](https://github.com/ljharb/side-channel/commit/fb4f622e64a99a1e40b6e5cd7691674a9dc429e4) +- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`b78336b`](https://github.com/ljharb/side-channel/commit/b78336b886172d1b457d414ac9e28de8c5fecc78) +- [Tests] replace `aud` with `npm audit` [`ee3ab46`](https://github.com/ljharb/side-channel/commit/ee3ab4690d954311c35115651bcfd45edd205aa1) +- [Dev Deps] add missing peer dep [`c03e21a`](https://github.com/ljharb/side-channel/commit/c03e21a7def3b67cdc15ae22316884fefcb2f6a8) + +## [v1.0.6](https://github.com/ljharb/side-channel/compare/v1.0.5...v1.0.6) - 2024-02-29 + +### Commits + +- add types [`9beef66`](https://github.com/ljharb/side-channel/commit/9beef6643e6d717ea57bedabf86448123a7dd9e9) +- [meta] simplify `exports` [`4334cf9`](https://github.com/ljharb/side-channel/commit/4334cf9df654151504c383b62a2f9ebdc8d9d5ac) +- [Deps] update `call-bind` [`d6043c4`](https://github.com/ljharb/side-channel/commit/d6043c4d8f4d7be9037dd0f0419c7a2e0e39ec6a) +- [Dev Deps] update `tape` [`6aca376`](https://github.com/ljharb/side-channel/commit/6aca3761868dc8cd5ff7fd9799bf6b95e09a6eb0) + +## [v1.0.5](https://github.com/ljharb/side-channel/compare/v1.0.4...v1.0.5) - 2024-02-06 + +### Commits + +- [actions] reuse common workflows [`3d2e1ff`](https://github.com/ljharb/side-channel/commit/3d2e1ffd16dd6eaaf3e40ff57951f840d2d63c04) +- [meta] use `npmignore` to autogenerate an npmignore file [`04296ea`](https://github.com/ljharb/side-channel/commit/04296ea17d1544b0a5d20fd5bfb31aa4f6513eb9) +- [meta] add `.editorconfig`; add `eclint` [`130f0a6`](https://github.com/ljharb/side-channel/commit/130f0a6adbc04d385c7456a601d38344dce3d6a9) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `safe-publish-latest`, `tape` [`d480c2f`](https://github.com/ljharb/side-channel/commit/d480c2fbe757489ae9b4275491ffbcc3ac4725e9) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`ecbe70e`](https://github.com/ljharb/side-channel/commit/ecbe70e53a418234081a77971fec1fdfae20c841) +- [actions] update rebase action [`75240b9`](https://github.com/ljharb/side-channel/commit/75240b9963b816e8846400d2287cb68f88c7fba7) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `npmignore`, `tape` [`ae8d281`](https://github.com/ljharb/side-channel/commit/ae8d281572430099109870fd9430d2ca3f320b8d) +- [Dev Deps] update `@ljharb/eslint-config`, `aud`, `tape` [`7125b88`](https://github.com/ljharb/side-channel/commit/7125b885fd0eacad4fee9b073b72d14065ece278) +- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`82577c9`](https://github.com/ljharb/side-channel/commit/82577c9796304519139a570f82a317211b5f3b86) +- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`550aadf`](https://github.com/ljharb/side-channel/commit/550aadf20475a6081fd70304cc54f77259a5c8a8) +- [Tests] increase coverage [`5130877`](https://github.com/ljharb/side-channel/commit/5130877a7b27c862e64e6d1c12a178b28808859d) +- [Deps] update `get-intrinsic`, `object-inspect` [`ba0194c`](https://github.com/ljharb/side-channel/commit/ba0194c505b1a8a0427be14cadd5b8a46d4d01b8) +- [meta] add missing `engines.node` [`985fd24`](https://github.com/ljharb/side-channel/commit/985fd249663cb06617a693a94fe08cad12f5cb70) +- [Refactor] use `es-errors`, so things that only need those do not need `get-intrinsic` [`40227a8`](https://github.com/ljharb/side-channel/commit/40227a87b01709ad2c0eebf87eb4223a800099b9) +- [Deps] update `get-intrinsic` [`a989b40`](https://github.com/ljharb/side-channel/commit/a989b4024958737ae7be9fbffdeff2078f33a0fd) +- [Deps] update `object-inspect` [`aec42d2`](https://github.com/ljharb/side-channel/commit/aec42d2ec541a31aaa02475692c87d489237d9a3) + +## [v1.0.4](https://github.com/ljharb/side-channel/compare/v1.0.3...v1.0.4) - 2020-12-29 + +### Commits + +- [Tests] migrate tests to Github Actions [`10909cb`](https://github.com/ljharb/side-channel/commit/10909cbf8ce9c0bf96f604cf13d7ffd5a22c2d40) +- [Refactor] Use a linked list rather than an array, and move accessed nodes to the beginning [`195613f`](https://github.com/ljharb/side-channel/commit/195613f28b5c1e6072ef0b61b5beebaf2b6a304e) +- [meta] do not publish github action workflow files [`290ec29`](https://github.com/ljharb/side-channel/commit/290ec29cd21a60585145b4a7237ec55228c52c27) +- [Tests] run `nyc` on all tests; use `tape` runner [`ea6d030`](https://github.com/ljharb/side-channel/commit/ea6d030ff3fe6be2eca39e859d644c51ecd88869) +- [actions] add "Allow Edits" workflow [`d464d8f`](https://github.com/ljharb/side-channel/commit/d464d8fe52b5eddf1504a0ed97f0941a90f32c15) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog` [`02daca8`](https://github.com/ljharb/side-channel/commit/02daca87c6809821c97be468d1afa2f5ef447383) +- [Refactor] use `call-bind` and `get-intrinsic` instead of `es-abstract` [`e09d481`](https://github.com/ljharb/side-channel/commit/e09d481528452ebafa5cdeae1af665c35aa2deee) +- [Deps] update `object.assign` [`ee83aa8`](https://github.com/ljharb/side-channel/commit/ee83aa81df313b5e46319a63adb05cf0c179079a) +- [actions] update rebase action to use checkout v2 [`7726b0b`](https://github.com/ljharb/side-channel/commit/7726b0b058b632fccea709f58960871defaaa9d7) + +## [v1.0.3](https://github.com/ljharb/side-channel/compare/v1.0.2...v1.0.3) - 2020-08-23 + +### Commits + +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `aud`, `auto-changelog`, `tape` [`1f10561`](https://github.com/ljharb/side-channel/commit/1f105611ef3acf32dec8032ae5c0baa5e56bb868) +- [Deps] update `es-abstract`, `object-inspect` [`bc20159`](https://github.com/ljharb/side-channel/commit/bc201597949a505e37cef9eaf24c7010831e6f03) +- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`b9b2b22`](https://github.com/ljharb/side-channel/commit/b9b2b225f9e0ea72a6ec2b89348f0bd690bc9ed1) +- [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` [`7055ab4`](https://github.com/ljharb/side-channel/commit/7055ab4de0860606efd2003674a74f1fe6ebc07e) +- [Dev Deps] update `auto-changelog`; add `aud` [`d278c37`](https://github.com/ljharb/side-channel/commit/d278c37d08227be4f84aa769fcd919e73feeba40) +- [actions] switch Automatic Rebase workflow to `pull_request_target` event [`3bcf982`](https://github.com/ljharb/side-channel/commit/3bcf982faa122745b39c33ce83d32fdf003741c6) +- [Tests] only audit prod deps [`18d01c4`](https://github.com/ljharb/side-channel/commit/18d01c4015b82a3d75044c4d5ba7917b2eac01ec) +- [Deps] update `es-abstract` [`6ab096d`](https://github.com/ljharb/side-channel/commit/6ab096d9de2b482cf5e0717e34e212f5b2b9bc9a) +- [Dev Deps] update `tape` [`9dc174c`](https://github.com/ljharb/side-channel/commit/9dc174cc651dfd300b4b72da936a0a7eda5f9452) +- [Deps] update `es-abstract` [`431d0f0`](https://github.com/ljharb/side-channel/commit/431d0f0ff11fbd2ae6f3115582a356d3a1cfce82) +- [Deps] update `es-abstract` [`49869fd`](https://github.com/ljharb/side-channel/commit/49869fd323bf4453f0ba515c0fb265cf5ab7b932) +- [meta] Add package.json to package's exports [`77d9cdc`](https://github.com/ljharb/side-channel/commit/77d9cdceb2a9e47700074f2ae0c0a202e7dac0d4) + +## [v1.0.2](https://github.com/ljharb/side-channel/compare/v1.0.1...v1.0.2) - 2019-12-20 + +### Commits + +- [Dev Deps] update `@ljharb/eslint-config`, `tape` [`4a526df`](https://github.com/ljharb/side-channel/commit/4a526df44e4701566ed001ec78546193f818b082) +- [Deps] update `es-abstract` [`d4f6e62`](https://github.com/ljharb/side-channel/commit/d4f6e629b6fb93a07415db7f30d3c90fd7f264fe) + +## [v1.0.1](https://github.com/ljharb/side-channel/compare/v1.0.0...v1.0.1) - 2019-12-01 + +### Commits + +- [Fix] add missing "exports" [`d212907`](https://github.com/ljharb/side-channel/commit/d2129073abf0701a5343bf28aa2145617604dc2e) + +## v1.0.0 - 2019-12-01 + +### Commits + +- Initial implementation [`dbebd3a`](https://github.com/ljharb/side-channel/commit/dbebd3a4b5ed64242f9a6810efe7c4214cd8cde4) +- Initial tests [`73bdefe`](https://github.com/ljharb/side-channel/commit/73bdefe568c9076cf8c0b8719bc2141aec0e19b8) +- Initial commit [`43c03e1`](https://github.com/ljharb/side-channel/commit/43c03e1c2849ec50a87b7a5cd76238a62b0b8770) +- npm init [`5c090a7`](https://github.com/ljharb/side-channel/commit/5c090a765d66a5527d9889b89aeff78dee91348c) +- [meta] add `auto-changelog` [`a5c4e56`](https://github.com/ljharb/side-channel/commit/a5c4e5675ec02d5eb4d84b4243aeea2a1d38fbec) +- [actions] add automatic rebasing / merge commit blocking [`bab1683`](https://github.com/ljharb/side-channel/commit/bab1683d8f9754b086e94397699fdc645e0d7077) +- [meta] add `funding` field; create FUNDING.yml [`63d7aea`](https://github.com/ljharb/side-channel/commit/63d7aeaf34f5650650ae97ca4b9fae685bd0937c) +- [Tests] add `npm run lint` [`46a5a81`](https://github.com/ljharb/side-channel/commit/46a5a81705cd2664f83df232c01dbbf2ee952885) +- Only apps should have lockfiles [`8b16b03`](https://github.com/ljharb/side-channel/commit/8b16b0305f00895d90c4e2e5773c854cfea0e448) +- [meta] add `safe-publish-latest` [`2f098ef`](https://github.com/ljharb/side-channel/commit/2f098ef092a39399cfe548b19a1fc03c2fd2f490) diff --git a/bff/node_modules/side-channel/LICENSE b/bff/node_modules/side-channel/LICENSE new file mode 100644 index 0000000..3900dd7 --- /dev/null +++ b/bff/node_modules/side-channel/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/side-channel/README.md b/bff/node_modules/side-channel/README.md new file mode 100644 index 0000000..cc7e103 --- /dev/null +++ b/bff/node_modules/side-channel/README.md @@ -0,0 +1,61 @@ +# side-channel [![Version Badge][npm-version-svg]][package-url] + +[![github actions][actions-image]][actions-url] +[![coverage][codecov-image]][codecov-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +Store information about any JS value in a side channel. Uses WeakMap if available. + +Warning: in an environment that lacks `WeakMap`, this implementation will leak memory until you `delete` the `key`. + +## Getting started + +```sh +npm install --save side-channel +``` + +## Usage/Examples + +```js +const assert = require('assert'); +const getSideChannel = require('side-channel'); + +const channel = getSideChannel(); + +const key = {}; +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); + +channel.set(key, 42); + +channel.assert(key); // does not throw +assert.equal(channel.has(key), true); +assert.equal(channel.get(key), 42); + +channel.delete(key); +assert.equal(channel.has(key), false); +assert.throws(() => channel.assert(key), TypeError); +``` + +## Tests + +Clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/side-channel +[npm-version-svg]: https://versionbadg.es/ljharb/side-channel.svg +[deps-svg]: https://david-dm.org/ljharb/side-channel.svg +[deps-url]: https://david-dm.org/ljharb/side-channel +[dev-deps-svg]: https://david-dm.org/ljharb/side-channel/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/side-channel#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/side-channel.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/side-channel.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/side-channel.svg +[downloads-url]: https://npm-stat.com/charts.html?package=side-channel +[codecov-image]: https://codecov.io/gh/ljharb/side-channel/branch/main/graphs/badge.svg +[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel/ +[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel +[actions-url]: https://github.com/ljharb/side-channel/actions diff --git a/bff/node_modules/side-channel/index.d.ts b/bff/node_modules/side-channel/index.d.ts new file mode 100644 index 0000000..18c6317 --- /dev/null +++ b/bff/node_modules/side-channel/index.d.ts @@ -0,0 +1,14 @@ +import getSideChannelList from 'side-channel-list'; +import getSideChannelMap from 'side-channel-map'; +import getSideChannelWeakMap from 'side-channel-weakmap'; + +declare namespace getSideChannel { + type Channel = + | getSideChannelList.Channel + | ReturnType, false>> + | ReturnType, false>>; +} + +declare function getSideChannel(): getSideChannel.Channel; + +export = getSideChannel; diff --git a/bff/node_modules/side-channel/index.js b/bff/node_modules/side-channel/index.js new file mode 100644 index 0000000..a8a9b05 --- /dev/null +++ b/bff/node_modules/side-channel/index.js @@ -0,0 +1,43 @@ +'use strict'; + +var $TypeError = require('es-errors/type'); +var inspect = require('object-inspect'); +var getSideChannelList = require('side-channel-list'); +var getSideChannelMap = require('side-channel-map'); +var getSideChannelWeakMap = require('side-channel-weakmap'); + +var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; + +/** @type {import('.')} */ +module.exports = function getSideChannel() { + /** @typedef {ReturnType} Channel */ + + /** @type {Channel | undefined} */ var $channelData; + + /** @type {Channel} */ + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + 'delete': function (key) { + return !!$channelData && $channelData['delete'](key); + }, + get: function (key) { + return $channelData && $channelData.get(key); + }, + has: function (key) { + return !!$channelData && $channelData.has(key); + }, + set: function (key, value) { + if (!$channelData) { + $channelData = makeChannel(); + } + + $channelData.set(key, value); + } + }; + // @ts-expect-error TODO: figure out why this is erroring + return channel; +}; diff --git a/bff/node_modules/side-channel/package.json b/bff/node_modules/side-channel/package.json new file mode 100644 index 0000000..30fa42c --- /dev/null +++ b/bff/node_modules/side-channel/package.json @@ -0,0 +1,85 @@ +{ + "name": "side-channel", + "version": "1.1.0", + "description": "Store information about any JS value in a side channel. Uses WeakMap if available.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "types": "./index.d.ts", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prelint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git')", + "lint": "eslint --ext=js,mjs .", + "postlint": "tsc -p . && attw -P", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx npm@'>=10.2' audit --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/side-channel.git" + }, + "keywords": [ + "weakmap", + "map", + "side", + "channel", + "metadata" + ], + "author": "Jordan Harband ", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/side-channel/issues" + }, + "homepage": "https://github.com/ljharb/side-channel#readme", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "devDependencies": { + "@arethetypeswrong/cli": "^0.17.1", + "@ljharb/eslint-config": "^21.1.1", + "@ljharb/tsconfig": "^0.2.2", + "@types/object-inspect": "^1.13.0", + "@types/tape": "^5.6.5", + "auto-changelog": "^2.5.0", + "eclint": "^2.8.1", + "encoding": "^0.1.13", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.1", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.9.0", + "typescript": "next" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + }, + "engines": { + "node": ">= 0.4" + } +} diff --git a/bff/node_modules/side-channel/test/index.js b/bff/node_modules/side-channel/test/index.js new file mode 100644 index 0000000..bd1e7c2 --- /dev/null +++ b/bff/node_modules/side-channel/test/index.js @@ -0,0 +1,104 @@ +'use strict'; + +var test = require('tape'); + +var getSideChannel = require('../'); + +test('getSideChannel', function (t) { + t.test('export', function (st) { + st.equal(typeof getSideChannel, 'function', 'is a function'); + + st.equal(getSideChannel.length, 0, 'takes no arguments'); + + var channel = getSideChannel(); + st.ok(channel, 'is truthy'); + st.equal(typeof channel, 'object', 'is an object'); + st.end(); + }); + + t.test('assert', function (st) { + var channel = getSideChannel(); + st['throws']( + function () { channel.assert({}); }, + TypeError, + 'nonexistent value throws' + ); + + var o = {}; + channel.set(o, 'data'); + st.doesNotThrow(function () { channel.assert(o); }, 'existent value noops'); + + st.end(); + }); + + t.test('has', function (st) { + var channel = getSideChannel(); + /** @type {unknown[]} */ var o = []; + + st.equal(channel.has(o), false, 'nonexistent value yields false'); + + channel.set(o, 'foo'); + st.equal(channel.has(o), true, 'existent value yields true'); + + st.equal(channel.has('abc'), false, 'non object value non existent yields false'); + + channel.set('abc', 'foo'); + st.equal(channel.has('abc'), true, 'non object value that exists yields true'); + + st.end(); + }); + + t.test('get', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel.get(o), undefined, 'nonexistent value yields undefined'); + + var data = {}; + channel.set(o, data); + st.equal(channel.get(o), data, '"get" yields data set by "set"'); + + st.end(); + }); + + t.test('set', function (st) { + var channel = getSideChannel(); + var o = function () {}; + st.equal(channel.get(o), undefined, 'value not set'); + + channel.set(o, 42); + st.equal(channel.get(o), 42, 'value was set'); + + channel.set(o, Infinity); + st.equal(channel.get(o), Infinity, 'value was set again'); + + var o2 = {}; + channel.set(o2, 17); + st.equal(channel.get(o), Infinity, 'o is not modified'); + st.equal(channel.get(o2), 17, 'o2 is set'); + + channel.set(o, 14); + st.equal(channel.get(o), 14, 'o is modified'); + st.equal(channel.get(o2), 17, 'o2 is not modified'); + + st.end(); + }); + + t.test('delete', function (st) { + var channel = getSideChannel(); + var o = {}; + st.equal(channel['delete']({}), false, 'nonexistent value yields false'); + + channel.set(o, 42); + st.equal(channel.has(o), true, 'value is set'); + + st.equal(channel['delete']({}), false, 'nonexistent value still yields false'); + + st.equal(channel['delete'](o), true, 'deleted value yields true'); + + st.equal(channel.has(o), false, 'value is no longer set'); + + st.end(); + }); + + t.end(); +}); diff --git a/bff/node_modules/side-channel/tsconfig.json b/bff/node_modules/side-channel/tsconfig.json new file mode 100644 index 0000000..d9a6668 --- /dev/null +++ b/bff/node_modules/side-channel/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@ljharb/tsconfig", + "compilerOptions": { + "target": "es2021", + }, + "exclude": [ + "coverage", + ], +} diff --git a/bff/node_modules/split2/LICENSE b/bff/node_modules/split2/LICENSE new file mode 100644 index 0000000..a91afe5 --- /dev/null +++ b/bff/node_modules/split2/LICENSE @@ -0,0 +1,13 @@ +Copyright (c) 2014-2018, Matteo Collina + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/bff/node_modules/split2/README.md b/bff/node_modules/split2/README.md new file mode 100644 index 0000000..36f03ab --- /dev/null +++ b/bff/node_modules/split2/README.md @@ -0,0 +1,85 @@ +# Split2(matcher, mapper, options) + +![ci](https://github.com/mcollina/split2/workflows/ci/badge.svg) + +Break up a stream and reassemble it so that each line is a chunk. +`split2` is inspired by [@dominictarr](https://github.com/dominictarr) [`split`](https://github.com/dominictarr/split) module, +and it is totally API compatible with it. +However, it is based on Node.js core [`Transform`](https://nodejs.org/api/stream.html#stream_new_stream_transform_options). + +`matcher` may be a `String`, or a `RegExp`. Example, read every line in a file ... + +``` js + fs.createReadStream(file) + .pipe(split2()) + .on('data', function (line) { + //each chunk now is a separate line! + }) + +``` + +`split` takes the same arguments as `string.split` except it defaults to '/\r?\n/', and the optional `limit` paremeter is ignored. +[String#split](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split) + +`split` takes an optional options object on it's third argument, which +is directly passed as a +[Transform](https://nodejs.org/api/stream.html#stream_new_stream_transform_options) +option. + +Additionally, the `.maxLength` and `.skipOverflow` options are implemented, which set limits on the internal +buffer size and the stream's behavior when the limit is exceeded. There is no limit unless `maxLength` is set. When +the internal buffer size exceeds `maxLength`, the stream emits an error by default. You may also set `skipOverflow` to +true to suppress the error and instead skip past any lines that cause the internal buffer to exceed `maxLength`. + +Calling `.destroy` will make the stream emit `close`. Use this to perform cleanup logic + +``` js +var splitFile = function(filename) { + var file = fs.createReadStream(filename) + + return file + .pipe(split2()) + .on('close', function() { + // destroy the file stream in case the split stream was destroyed + file.destroy() + }) +} + +var stream = splitFile('my-file.txt') + +stream.destroy() // will destroy the input file stream +``` + +# NDJ - Newline Delimited Json + +`split2` accepts a function which transforms each line. + +``` js +fs.createReadStream(file) + .pipe(split2(JSON.parse)) + .on('data', function (obj) { + //each chunk now is a js object + }) + .on("error", function(error) { + //handling parsing errors + }) +``` + +However, in [@dominictarr](https://github.com/dominictarr) [`split`](https://github.com/dominictarr/split) the mapper +is wrapped in a try-catch, while here it is not: if your parsing logic can throw, wrap it yourself. Otherwise, you can also use the stream error handling when mapper function throw. + +# License + +Copyright (c) 2014-2021, Matteo Collina + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/bff/node_modules/split2/bench.js b/bff/node_modules/split2/bench.js new file mode 100644 index 0000000..15ec5df --- /dev/null +++ b/bff/node_modules/split2/bench.js @@ -0,0 +1,27 @@ +'use strict' + +const split = require('./') +const bench = require('fastbench') +const binarySplit = require('binary-split') +const fs = require('fs') + +function benchSplit (cb) { + fs.createReadStream('package.json') + .pipe(split()) + .on('end', cb) + .resume() +} + +function benchBinarySplit (cb) { + fs.createReadStream('package.json') + .pipe(binarySplit()) + .on('end', cb) + .resume() +} + +const run = bench([ + benchSplit, + benchBinarySplit +], 10000) + +run(run) diff --git a/bff/node_modules/split2/index.js b/bff/node_modules/split2/index.js new file mode 100644 index 0000000..9b59f6c --- /dev/null +++ b/bff/node_modules/split2/index.js @@ -0,0 +1,141 @@ +/* +Copyright (c) 2014-2021, Matteo Collina + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +'use strict' + +const { Transform } = require('stream') +const { StringDecoder } = require('string_decoder') +const kLast = Symbol('last') +const kDecoder = Symbol('decoder') + +function transform (chunk, enc, cb) { + let list + if (this.overflow) { // Line buffer is full. Skip to start of next line. + const buf = this[kDecoder].write(chunk) + list = buf.split(this.matcher) + + if (list.length === 1) return cb() // Line ending not found. Discard entire chunk. + + // Line ending found. Discard trailing fragment of previous line and reset overflow state. + list.shift() + this.overflow = false + } else { + this[kLast] += this[kDecoder].write(chunk) + list = this[kLast].split(this.matcher) + } + + this[kLast] = list.pop() + + for (let i = 0; i < list.length; i++) { + try { + push(this, this.mapper(list[i])) + } catch (error) { + return cb(error) + } + } + + this.overflow = this[kLast].length > this.maxLength + if (this.overflow && !this.skipOverflow) { + cb(new Error('maximum buffer reached')) + return + } + + cb() +} + +function flush (cb) { + // forward any gibberish left in there + this[kLast] += this[kDecoder].end() + + if (this[kLast]) { + try { + push(this, this.mapper(this[kLast])) + } catch (error) { + return cb(error) + } + } + + cb() +} + +function push (self, val) { + if (val !== undefined) { + self.push(val) + } +} + +function noop (incoming) { + return incoming +} + +function split (matcher, mapper, options) { + // Set defaults for any arguments not supplied. + matcher = matcher || /\r?\n/ + mapper = mapper || noop + options = options || {} + + // Test arguments explicitly. + switch (arguments.length) { + case 1: + // If mapper is only argument. + if (typeof matcher === 'function') { + mapper = matcher + matcher = /\r?\n/ + // If options is only argument. + } else if (typeof matcher === 'object' && !(matcher instanceof RegExp) && !matcher[Symbol.split]) { + options = matcher + matcher = /\r?\n/ + } + break + + case 2: + // If mapper and options are arguments. + if (typeof matcher === 'function') { + options = mapper + mapper = matcher + matcher = /\r?\n/ + // If matcher and options are arguments. + } else if (typeof mapper === 'object') { + options = mapper + mapper = noop + } + } + + options = Object.assign({}, options) + options.autoDestroy = true + options.transform = transform + options.flush = flush + options.readableObjectMode = true + + const stream = new Transform(options) + + stream[kLast] = '' + stream[kDecoder] = new StringDecoder('utf8') + stream.matcher = matcher + stream.mapper = mapper + stream.maxLength = options.maxLength + stream.skipOverflow = options.skipOverflow || false + stream.overflow = false + stream._destroy = function (err, cb) { + // Weird Node v12 bug that we need to work around + this._writableState.errorEmitted = false + cb(err) + } + + return stream +} + +module.exports = split diff --git a/bff/node_modules/split2/package.json b/bff/node_modules/split2/package.json new file mode 100644 index 0000000..e04bcc8 --- /dev/null +++ b/bff/node_modules/split2/package.json @@ -0,0 +1,39 @@ +{ + "name": "split2", + "version": "4.2.0", + "description": "split a Text Stream into a Line Stream, using Stream 3", + "main": "index.js", + "scripts": { + "lint": "standard --verbose", + "unit": "nyc --lines 100 --branches 100 --functions 100 --check-coverage --reporter=text tape test.js", + "coverage": "nyc --reporter=html --reporter=cobertura --reporter=text tape test/test.js", + "test:report": "npm run lint && npm run unit:report", + "test": "npm run lint && npm run unit", + "legacy": "tape test.js" + }, + "pre-commit": [ + "test" + ], + "website": "https://github.com/mcollina/split2", + "repository": { + "type": "git", + "url": "https://github.com/mcollina/split2.git" + }, + "bugs": { + "url": "http://github.com/mcollina/split2/issues" + }, + "engines": { + "node": ">= 10.x" + }, + "author": "Matteo Collina ", + "license": "ISC", + "devDependencies": { + "binary-split": "^1.0.3", + "callback-stream": "^1.1.0", + "fastbench": "^1.0.0", + "nyc": "^15.0.1", + "pre-commit": "^1.1.2", + "standard": "^17.0.0", + "tape": "^5.0.0" + } +} diff --git a/bff/node_modules/split2/test.js b/bff/node_modules/split2/test.js new file mode 100644 index 0000000..a7f9838 --- /dev/null +++ b/bff/node_modules/split2/test.js @@ -0,0 +1,409 @@ +'use strict' + +const test = require('tape') +const split = require('./') +const callback = require('callback-stream') +const strcb = callback.bind(null, { decodeStrings: false }) +const objcb = callback.bind(null, { objectMode: true }) + +test('split two lines on end', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.end('hello\nworld') +}) + +test('split two lines on two writes', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.write('hello') + input.write('\nworld') + input.end() +}) + +test('split four lines on three writes', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world', 'bye', 'world']) + })) + + input.write('hello\nwor') + input.write('ld\nbye\nwo') + input.write('rld') + input.end() +}) + +test('accumulate multiple writes', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['helloworld']) + })) + + input.write('hello') + input.write('world') + input.end() +}) + +test('split using a custom string matcher', function (t) { + t.plan(2) + + const input = split('~') + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.end('hello~world') +}) + +test('split using a custom regexp matcher', function (t) { + t.plan(2) + + const input = split(/~/) + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.end('hello~world') +}) + +test('support an option argument', function (t) { + t.plan(2) + + const input = split({ highWaterMark: 2 }) + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.end('hello\nworld') +}) + +test('support a mapper function', function (t) { + t.plan(2) + + const a = { a: '42' } + const b = { b: '24' } + + const input = split(JSON.parse) + + input.pipe(objcb(function (err, list) { + t.error(err) + t.deepEqual(list, [a, b]) + })) + + input.write(JSON.stringify(a)) + input.write('\n') + input.end(JSON.stringify(b)) +}) + +test('split lines windows-style', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.end('hello\r\nworld') +}) + +test('splits a buffer', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.end(Buffer.from('hello\nworld')) +}) + +test('do not end on undefined', function (t) { + t.plan(2) + + const input = split(function (line) { }) + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, []) + })) + + input.end(Buffer.from('hello\nworld')) +}) + +test('has destroy method', function (t) { + t.plan(1) + + const input = split(function (line) { }) + + input.on('close', function () { + t.ok(true, 'close emitted') + t.end() + }) + + input.destroy() +}) + +test('support custom matcher and mapper', function (t) { + t.plan(4) + + const a = { a: '42' } + const b = { b: '24' } + const input = split('~', JSON.parse) + + t.equal(input.matcher, '~') + t.equal(typeof input.mapper, 'function') + + input.pipe(objcb(function (err, list) { + t.notOk(err, 'no errors') + t.deepEqual(list, [a, b]) + })) + + input.write(JSON.stringify(a)) + input.write('~') + input.end(JSON.stringify(b)) +}) + +test('support custom matcher and options', function (t) { + t.plan(6) + + const input = split('~', { highWaterMark: 1024 }) + + t.equal(input.matcher, '~') + t.equal(typeof input.mapper, 'function') + t.equal(input._readableState.highWaterMark, 1024) + t.equal(input._writableState.highWaterMark, 1024) + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.end('hello~world') +}) + +test('support mapper and options', function (t) { + t.plan(6) + + const a = { a: '42' } + const b = { b: '24' } + const input = split(JSON.parse, { highWaterMark: 1024 }) + + t.ok(input.matcher instanceof RegExp, 'matcher is RegExp') + t.equal(typeof input.mapper, 'function') + t.equal(input._readableState.highWaterMark, 1024) + t.equal(input._writableState.highWaterMark, 1024) + + input.pipe(objcb(function (err, list) { + t.error(err) + t.deepEqual(list, [a, b]) + })) + + input.write(JSON.stringify(a)) + input.write('\n') + input.end(JSON.stringify(b)) +}) + +test('split utf8 chars', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['烫烫烫', '锟斤拷']) + })) + + const buf = Buffer.from('烫烫烫\r\n锟斤拷', 'utf8') + for (let i = 0; i < buf.length; ++i) { + input.write(buf.slice(i, i + 1)) + } + input.end() +}) + +test('split utf8 chars 2by2', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['烫烫烫', '烫烫烫']) + })) + + const str = '烫烫烫\r\n烫烫烫' + const buf = Buffer.from(str, 'utf8') + for (let i = 0; i < buf.length; i += 2) { + input.write(buf.slice(i, i + 2)) + } + input.end() +}) + +test('split lines when the \n comes at the end of a chunk', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.write('hello\n') + input.end('world') +}) + +test('truncated utf-8 char', function (t) { + t.plan(2) + + const input = split() + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['烫' + Buffer.from('e7', 'hex').toString()]) + })) + + const str = '烫烫' + const buf = Buffer.from(str, 'utf8') + + input.write(buf.slice(0, 3)) + input.end(buf.slice(3, 4)) +}) + +test('maximum buffer limit', function (t) { + t.plan(1) + + const input = split({ maxLength: 2 }) + input.on('error', function (err) { + t.ok(err) + }) + + input.resume() + + input.write('hey') +}) + +test('readable highWaterMark', function (t) { + const input = split() + t.equal(input._readableState.highWaterMark, 16) + t.end() +}) + +test('maxLength < chunk size', function (t) { + t.plan(2) + + const input = split({ maxLength: 2 }) + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['a', 'b']) + })) + + input.end('a\nb') +}) + +test('maximum buffer limit w/skip', function (t) { + t.plan(2) + + const input = split({ maxLength: 2, skipOverflow: true }) + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['a', 'b', 'c']) + })) + + input.write('a\n123') + input.write('456') + input.write('789\nb\nc') + input.end() +}) + +test("don't modify the options object", function (t) { + t.plan(2) + + const options = {} + const input = split(options) + + input.pipe(strcb(function (err, list) { + t.error(err) + t.same(options, {}) + })) + + input.end() +}) + +test('mapper throws flush', function (t) { + t.plan(1) + const error = new Error() + const input = split(function () { + throw error + }) + + input.on('error', (err, list) => { + t.same(err, error) + }) + input.end('hello') +}) + +test('mapper throws on transform', function (t) { + t.plan(1) + + const error = new Error() + const input = split(function (l) { + throw error + }) + + input.on('error', (err) => { + t.same(err, error) + }) + input.write('a') + input.write('\n') + input.end('b') +}) + +test('supports Symbol.split', function (t) { + t.plan(2) + + const input = split({ + [Symbol.split] (str) { + return str.split('~') + } + }) + + input.pipe(strcb(function (err, list) { + t.error(err) + t.deepEqual(list, ['hello', 'world']) + })) + + input.end('hello~world') +}) diff --git a/bff/node_modules/statuses/HISTORY.md b/bff/node_modules/statuses/HISTORY.md new file mode 100644 index 0000000..dc549b8 --- /dev/null +++ b/bff/node_modules/statuses/HISTORY.md @@ -0,0 +1,87 @@ +2.0.2 / 2025-06-06 +================== + + * Migrate to `String.prototype.slice()` + +2.0.1 / 2021-01-03 +================== + + * Fix returning values from `Object.prototype` + +2.0.0 / 2020-04-19 +================== + + * Drop support for Node.js 0.6 + * Fix messaging casing of `418 I'm a Teapot` + * Remove code 306 + * Remove `status[code]` exports; use `status.message[code]` + * Remove `status[msg]` exports; use `status.code[msg]` + * Rename `425 Unordered Collection` to standard `425 Too Early` + * Rename `STATUS_CODES` export to `message` + * Return status message for `statuses(code)` when given code + +1.5.0 / 2018-03-27 +================== + + * Add `103 Early Hints` + +1.4.0 / 2017-10-20 +================== + + * Add `STATUS_CODES` export + +1.3.1 / 2016-11-11 +================== + + * Fix return type in JSDoc + +1.3.0 / 2016-05-17 +================== + + * Add `421 Misdirected Request` + * perf: enable strict mode + +1.2.1 / 2015-02-01 +================== + + * Fix message for status 451 + - `451 Unavailable For Legal Reasons` + +1.2.0 / 2014-09-28 +================== + + * Add `208 Already Repored` + * Add `226 IM Used` + * Add `306 (Unused)` + * Add `415 Unable For Legal Reasons` + * Add `508 Loop Detected` + +1.1.1 / 2014-09-24 +================== + + * Add missing 308 to `codes.json` + +1.1.0 / 2014-09-21 +================== + + * Add `codes.json` for universal support + +1.0.4 / 2014-08-20 +================== + + * Package cleanup + +1.0.3 / 2014-06-08 +================== + + * Add 308 to `.redirect` category + +1.0.2 / 2014-03-13 +================== + + * Add `.retry` category + +1.0.1 / 2014-03-12 +================== + + * Initial release diff --git a/bff/node_modules/statuses/LICENSE b/bff/node_modules/statuses/LICENSE new file mode 100644 index 0000000..28a3161 --- /dev/null +++ b/bff/node_modules/statuses/LICENSE @@ -0,0 +1,23 @@ + +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/statuses/README.md b/bff/node_modules/statuses/README.md new file mode 100644 index 0000000..89d542f --- /dev/null +++ b/bff/node_modules/statuses/README.md @@ -0,0 +1,139 @@ +# statuses + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] +[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer] + +HTTP status utility for node. + +This module provides a list of status codes and messages sourced from +a few different projects: + + * The [IANA Status Code Registry](https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml) + * The [Node.js project](https://nodejs.org/) + * The [NGINX project](https://www.nginx.com/) + * The [Apache HTTP Server project](https://httpd.apache.org/) + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install statuses +``` + +## API + + + +```js +var status = require('statuses') +``` + +### status(code) + +Returns the status message string for a known HTTP status code. The code +may be a number or a string. An error is thrown for an unknown status code. + + + +```js +status(403) // => 'Forbidden' +status('403') // => 'Forbidden' +status(306) // throws +``` + +### status(msg) + +Returns the numeric status code for a known HTTP status message. The message +is case-insensitive. An error is thrown for an unknown status message. + + + +```js +status('forbidden') // => 403 +status('Forbidden') // => 403 +status('foo') // throws +``` + +### status.codes + +Returns an array of all the status codes as `Integer`s. + +### status.code[msg] + +Returns the numeric status code for a known status message (in lower-case), +otherwise `undefined`. + + + +```js +status['not found'] // => 404 +``` + +### status.empty[code] + +Returns `true` if a status code expects an empty body. + + + +```js +status.empty[200] // => undefined +status.empty[204] // => true +status.empty[304] // => true +``` + +### status.message[code] + +Returns the string message for a known numeric status code, otherwise +`undefined`. This object is the same format as the +[Node.js http module `http.STATUS_CODES`](https://nodejs.org/dist/latest/docs/api/http.html#http_http_status_codes). + + + +```js +status.message[404] // => 'Not Found' +``` + +### status.redirect[code] + +Returns `true` if a status code is a valid redirect status. + + + +```js +status.redirect[200] // => undefined +status.redirect[301] // => true +``` + +### status.retry[code] + +Returns `true` if you should retry the rest. + + + +```js +status.retry[501] // => undefined +status.retry[503] // => true +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/statuses/master?label=ci +[ci-url]: https://github.com/jshttp/statuses/actions?query=workflow%3Aci +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/statuses/master +[coveralls-url]: https://coveralls.io/r/jshttp/statuses?branch=master +[node-version-image]: https://badgen.net/npm/node/statuses +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/statuses +[npm-url]: https://npmjs.org/package/statuses +[npm-version-image]: https://badgen.net/npm/v/statuses +[ossf-scorecard-badge]: https://api.securityscorecards.dev/projects/github.com/jshttp/statuses/badge +[ossf-scorecard-visualizer]: https://kooltheba.github.io/openssf-scorecard-api-visualizer/#/projects/github.com/jshttp/statuses diff --git a/bff/node_modules/statuses/codes.json b/bff/node_modules/statuses/codes.json new file mode 100644 index 0000000..1333ed1 --- /dev/null +++ b/bff/node_modules/statuses/codes.json @@ -0,0 +1,65 @@ +{ + "100": "Continue", + "101": "Switching Protocols", + "102": "Processing", + "103": "Early Hints", + "200": "OK", + "201": "Created", + "202": "Accepted", + "203": "Non-Authoritative Information", + "204": "No Content", + "205": "Reset Content", + "206": "Partial Content", + "207": "Multi-Status", + "208": "Already Reported", + "226": "IM Used", + "300": "Multiple Choices", + "301": "Moved Permanently", + "302": "Found", + "303": "See Other", + "304": "Not Modified", + "305": "Use Proxy", + "307": "Temporary Redirect", + "308": "Permanent Redirect", + "400": "Bad Request", + "401": "Unauthorized", + "402": "Payment Required", + "403": "Forbidden", + "404": "Not Found", + "405": "Method Not Allowed", + "406": "Not Acceptable", + "407": "Proxy Authentication Required", + "408": "Request Timeout", + "409": "Conflict", + "410": "Gone", + "411": "Length Required", + "412": "Precondition Failed", + "413": "Payload Too Large", + "414": "URI Too Long", + "415": "Unsupported Media Type", + "416": "Range Not Satisfiable", + "417": "Expectation Failed", + "418": "I'm a Teapot", + "421": "Misdirected Request", + "422": "Unprocessable Entity", + "423": "Locked", + "424": "Failed Dependency", + "425": "Too Early", + "426": "Upgrade Required", + "428": "Precondition Required", + "429": "Too Many Requests", + "431": "Request Header Fields Too Large", + "451": "Unavailable For Legal Reasons", + "500": "Internal Server Error", + "501": "Not Implemented", + "502": "Bad Gateway", + "503": "Service Unavailable", + "504": "Gateway Timeout", + "505": "HTTP Version Not Supported", + "506": "Variant Also Negotiates", + "507": "Insufficient Storage", + "508": "Loop Detected", + "509": "Bandwidth Limit Exceeded", + "510": "Not Extended", + "511": "Network Authentication Required" +} diff --git a/bff/node_modules/statuses/index.js b/bff/node_modules/statuses/index.js new file mode 100644 index 0000000..ea351c5 --- /dev/null +++ b/bff/node_modules/statuses/index.js @@ -0,0 +1,146 @@ +/*! + * statuses + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var codes = require('./codes.json') + +/** + * Module exports. + * @public + */ + +module.exports = status + +// status code to message map +status.message = codes + +// status message (lower-case) to code map +status.code = createMessageToStatusCodeMap(codes) + +// array of status codes +status.codes = createStatusCodeList(codes) + +// status codes for redirects +status.redirect = { + 300: true, + 301: true, + 302: true, + 303: true, + 305: true, + 307: true, + 308: true +} + +// status codes for empty bodies +status.empty = { + 204: true, + 205: true, + 304: true +} + +// status codes for when you should retry the request +status.retry = { + 502: true, + 503: true, + 504: true +} + +/** + * Create a map of message to status code. + * @private + */ + +function createMessageToStatusCodeMap (codes) { + var map = {} + + Object.keys(codes).forEach(function forEachCode (code) { + var message = codes[code] + var status = Number(code) + + // populate map + map[message.toLowerCase()] = status + }) + + return map +} + +/** + * Create a list of all status codes. + * @private + */ + +function createStatusCodeList (codes) { + return Object.keys(codes).map(function mapCode (code) { + return Number(code) + }) +} + +/** + * Get the status code for given message. + * @private + */ + +function getStatusCode (message) { + var msg = message.toLowerCase() + + if (!Object.prototype.hasOwnProperty.call(status.code, msg)) { + throw new Error('invalid status message: "' + message + '"') + } + + return status.code[msg] +} + +/** + * Get the status message for given code. + * @private + */ + +function getStatusMessage (code) { + if (!Object.prototype.hasOwnProperty.call(status.message, code)) { + throw new Error('invalid status code: ' + code) + } + + return status.message[code] +} + +/** + * Get the status code. + * + * Given a number, this will throw if it is not a known status + * code, otherwise the code will be returned. Given a string, + * the string will be parsed for a number and return the code + * if valid, otherwise will lookup the code assuming this is + * the status message. + * + * @param {string|number} code + * @returns {number} + * @public + */ + +function status (code) { + if (typeof code === 'number') { + return getStatusMessage(code) + } + + if (typeof code !== 'string') { + throw new TypeError('code must be a number or string') + } + + // '403' + var n = parseInt(code, 10) + if (!isNaN(n)) { + return getStatusMessage(n) + } + + return getStatusCode(code) +} diff --git a/bff/node_modules/statuses/package.json b/bff/node_modules/statuses/package.json new file mode 100644 index 0000000..b5d016e --- /dev/null +++ b/bff/node_modules/statuses/package.json @@ -0,0 +1,49 @@ +{ + "name": "statuses", + "description": "HTTP status utility", + "version": "2.0.2", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "repository": "jshttp/statuses", + "license": "MIT", + "keywords": [ + "http", + "status", + "code" + ], + "files": [ + "HISTORY.md", + "index.js", + "codes.json", + "LICENSE" + ], + "devDependencies": { + "csv-parse": "4.16.3", + "eslint": "7.19.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.31.0", + "eslint-plugin-markdown": "1.0.2", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "4.3.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "8.4.0", + "nyc": "15.1.0", + "raw-body": "2.5.2", + "stream-to-array": "2.3.0" + }, + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "build": "node scripts/build.js", + "fetch": "node scripts/fetch-apache.js && node scripts/fetch-iana.js && node scripts/fetch-nginx.js && node scripts/fetch-node.js", + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "update": "npm run fetch && npm run build", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/streamsearch/.eslintrc.js b/bff/node_modules/streamsearch/.eslintrc.js new file mode 100644 index 0000000..be9311d --- /dev/null +++ b/bff/node_modules/streamsearch/.eslintrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + extends: '@mscdex/eslint-config', +}; diff --git a/bff/node_modules/streamsearch/.github/workflows/ci.yml b/bff/node_modules/streamsearch/.github/workflows/ci.yml new file mode 100644 index 0000000..29d5178 --- /dev/null +++ b/bff/node_modules/streamsearch/.github/workflows/ci.yml @@ -0,0 +1,24 @@ +name: CI + +on: + pull_request: + push: + branches: [ master ] + +jobs: + tests-linux: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + node-version: [10.x, 12.x, 14.x, 16.x] + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - name: Install module + run: npm install + - name: Run tests + run: npm test diff --git a/bff/node_modules/streamsearch/.github/workflows/lint.yml b/bff/node_modules/streamsearch/.github/workflows/lint.yml new file mode 100644 index 0000000..9f9e1f5 --- /dev/null +++ b/bff/node_modules/streamsearch/.github/workflows/lint.yml @@ -0,0 +1,23 @@ +name: lint + +on: + pull_request: + push: + branches: [ master ] + +env: + NODE_VERSION: 16.x + +jobs: + lint-js: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v1 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Install ESLint + ESLint configs/plugins + run: npm install --only=dev + - name: Lint files + run: npm run lint diff --git a/bff/node_modules/streamsearch/LICENSE b/bff/node_modules/streamsearch/LICENSE new file mode 100644 index 0000000..9ea90e0 --- /dev/null +++ b/bff/node_modules/streamsearch/LICENSE @@ -0,0 +1,19 @@ +Copyright Brian White. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. \ No newline at end of file diff --git a/bff/node_modules/streamsearch/README.md b/bff/node_modules/streamsearch/README.md new file mode 100644 index 0000000..c3934d1 --- /dev/null +++ b/bff/node_modules/streamsearch/README.md @@ -0,0 +1,95 @@ +Description +=========== + +streamsearch is a module for [node.js](http://nodejs.org/) that allows searching a stream using the Boyer-Moore-Horspool algorithm. + +This module is based heavily on the Streaming Boyer-Moore-Horspool C++ implementation by Hongli Lai [here](https://github.com/FooBarWidget/boyer-moore-horspool). + + +Requirements +============ + +* [node.js](http://nodejs.org/) -- v10.0.0 or newer + + +Installation +============ + + npm install streamsearch + +Example +======= + +```js + const { inspect } = require('util'); + + const StreamSearch = require('streamsearch'); + + const needle = Buffer.from('\r\n'); + const ss = new StreamSearch(needle, (isMatch, data, start, end) => { + if (data) + console.log('data: ' + inspect(data.toString('latin1', start, end))); + if (isMatch) + console.log('match!'); + }); + + const chunks = [ + 'foo', + ' bar', + '\r', + '\n', + 'baz, hello\r', + '\n world.', + '\r\n Node.JS rules!!\r\n\r\n', + ]; + for (const chunk of chunks) + ss.push(Buffer.from(chunk)); + + // output: + // + // data: 'foo' + // data: ' bar' + // match! + // data: 'baz, hello' + // match! + // data: ' world.' + // match! + // data: ' Node.JS rules!!' + // match! + // data: '' + // match! +``` + + +API +=== + +Properties +---------- + +* **maxMatches** - < _integer_ > - The maximum number of matches. Defaults to `Infinity`. + +* **matches** - < _integer_ > - The current match count. + + +Functions +--------- + +* **(constructor)**(< _mixed_ >needle, < _function_ >callback) - Creates and returns a new instance for searching for a _Buffer_ or _string_ `needle`. `callback` is called any time there is non-matching data and/or there is a needle match. `callback` will be called with the following arguments: + + 1. `isMatch` - _boolean_ - Indicates whether a match has been found + + 2. `data` - _mixed_ - If set, this contains data that did not match the needle. + + 3. `start` - _integer_ - The index in `data` where the non-matching data begins (inclusive). + + 4. `end` - _integer_ - The index in `data` where the non-matching data ends (exclusive). + + 5. `isSafeData` - _boolean_ - Indicates if it is safe to store a reference to `data` (e.g. as-is or via `data.slice()`) or not, as in some cases `data` may point to a Buffer whose contents change over time. + +* **destroy**() - _(void)_ - Emits any last remaining unmatched data that may still be buffered and then resets internal state. + +* **push**(< _Buffer_ >chunk) - _integer_ - Processes `chunk`, searching for a match. The return value is the last processed index in `chunk` + 1. + +* **reset**() - _(void)_ - Resets internal state. Useful for when you wish to start searching a new/different stream for example. + diff --git a/bff/node_modules/streamsearch/lib/sbmh.js b/bff/node_modules/streamsearch/lib/sbmh.js new file mode 100644 index 0000000..510cae2 --- /dev/null +++ b/bff/node_modules/streamsearch/lib/sbmh.js @@ -0,0 +1,267 @@ +'use strict'; +/* + Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation + by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool +*/ +function memcmp(buf1, pos1, buf2, pos2, num) { + for (let i = 0; i < num; ++i) { + if (buf1[pos1 + i] !== buf2[pos2 + i]) + return false; + } + return true; +} + +class SBMH { + constructor(needle, cb) { + if (typeof cb !== 'function') + throw new Error('Missing match callback'); + + if (typeof needle === 'string') + needle = Buffer.from(needle); + else if (!Buffer.isBuffer(needle)) + throw new Error(`Expected Buffer for needle, got ${typeof needle}`); + + const needleLen = needle.length; + + this.maxMatches = Infinity; + this.matches = 0; + + this._cb = cb; + this._lookbehindSize = 0; + this._needle = needle; + this._bufPos = 0; + + this._lookbehind = Buffer.allocUnsafe(needleLen); + + // Initialize occurrence table. + this._occ = [ + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen, needleLen, needleLen, + needleLen, needleLen, needleLen, needleLen + ]; + + // Populate occurrence table with analysis of the needle, ignoring the last + // letter. + if (needleLen > 1) { + for (let i = 0; i < needleLen - 1; ++i) + this._occ[needle[i]] = needleLen - 1 - i; + } + } + + reset() { + this.matches = 0; + this._lookbehindSize = 0; + this._bufPos = 0; + } + + push(chunk, pos) { + let result; + if (!Buffer.isBuffer(chunk)) + chunk = Buffer.from(chunk, 'latin1'); + const chunkLen = chunk.length; + this._bufPos = pos || 0; + while (result !== chunkLen && this.matches < this.maxMatches) + result = feed(this, chunk); + return result; + } + + destroy() { + const lbSize = this._lookbehindSize; + if (lbSize) + this._cb(false, this._lookbehind, 0, lbSize, false); + this.reset(); + } +} + +function feed(self, data) { + const len = data.length; + const needle = self._needle; + const needleLen = needle.length; + + // Positive: points to a position in `data` + // pos == 3 points to data[3] + // Negative: points to a position in the lookbehind buffer + // pos == -2 points to lookbehind[lookbehindSize - 2] + let pos = -self._lookbehindSize; + const lastNeedleCharPos = needleLen - 1; + const lastNeedleChar = needle[lastNeedleCharPos]; + const end = len - needleLen; + const occ = self._occ; + const lookbehind = self._lookbehind; + + if (pos < 0) { + // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool + // search with character lookup code that considers both the + // lookbehind buffer and the current round's haystack data. + // + // Loop until + // there is a match. + // or until + // we've moved past the position that requires the + // lookbehind buffer. In this case we switch to the + // optimized loop. + // or until + // the character to look at lies outside the haystack. + while (pos < 0 && pos <= end) { + const nextPos = pos + lastNeedleCharPos; + const ch = (nextPos < 0 + ? lookbehind[self._lookbehindSize + nextPos] + : data[nextPos]); + + if (ch === lastNeedleChar + && matchNeedle(self, data, pos, lastNeedleCharPos)) { + self._lookbehindSize = 0; + ++self.matches; + if (pos > -self._lookbehindSize) + self._cb(true, lookbehind, 0, self._lookbehindSize + pos, false); + else + self._cb(true, undefined, 0, 0, true); + + return (self._bufPos = pos + needleLen); + } + + pos += occ[ch]; + } + + // No match. + + // There's too few data for Boyer-Moore-Horspool to run, + // so let's use a different algorithm to skip as much as + // we can. + // Forward pos until + // the trailing part of lookbehind + data + // looks like the beginning of the needle + // or until + // pos == 0 + while (pos < 0 && !matchNeedle(self, data, pos, len - pos)) + ++pos; + + if (pos < 0) { + // Cut off part of the lookbehind buffer that has + // been processed and append the entire haystack + // into it. + const bytesToCutOff = self._lookbehindSize + pos; + + if (bytesToCutOff > 0) { + // The cut off data is guaranteed not to contain the needle. + self._cb(false, lookbehind, 0, bytesToCutOff, false); + } + + self._lookbehindSize -= bytesToCutOff; + lookbehind.copy(lookbehind, 0, bytesToCutOff, self._lookbehindSize); + lookbehind.set(data, self._lookbehindSize); + self._lookbehindSize += len; + + self._bufPos = len; + return len; + } + + // Discard lookbehind buffer. + self._cb(false, lookbehind, 0, self._lookbehindSize, false); + self._lookbehindSize = 0; + } + + pos += self._bufPos; + + const firstNeedleChar = needle[0]; + + // Lookbehind buffer is now empty. Perform Boyer-Moore-Horspool + // search with optimized character lookup code that only considers + // the current round's haystack data. + while (pos <= end) { + const ch = data[pos + lastNeedleCharPos]; + + if (ch === lastNeedleChar + && data[pos] === firstNeedleChar + && memcmp(needle, 0, data, pos, lastNeedleCharPos)) { + ++self.matches; + if (pos > 0) + self._cb(true, data, self._bufPos, pos, true); + else + self._cb(true, undefined, 0, 0, true); + + return (self._bufPos = pos + needleLen); + } + + pos += occ[ch]; + } + + // There was no match. If there's trailing haystack data that we cannot + // match yet using the Boyer-Moore-Horspool algorithm (because the trailing + // data is less than the needle size) then match using a modified + // algorithm that starts matching from the beginning instead of the end. + // Whatever trailing data is left after running this algorithm is added to + // the lookbehind buffer. + while (pos < len) { + if (data[pos] !== firstNeedleChar + || !memcmp(data, pos, needle, 0, len - pos)) { + ++pos; + continue; + } + data.copy(lookbehind, 0, pos, len); + self._lookbehindSize = len - pos; + break; + } + + // Everything until `pos` is guaranteed not to contain needle data. + if (pos > 0) + self._cb(false, data, self._bufPos, pos < len ? pos : len, true); + + self._bufPos = len; + return len; +} + +function matchNeedle(self, data, pos, len) { + const lb = self._lookbehind; + const lbSize = self._lookbehindSize; + const needle = self._needle; + + for (let i = 0; i < len; ++i, ++pos) { + const ch = (pos < 0 ? lb[lbSize + pos] : data[pos]); + if (ch !== needle[i]) + return false; + } + return true; +} + +module.exports = SBMH; diff --git a/bff/node_modules/streamsearch/package.json b/bff/node_modules/streamsearch/package.json new file mode 100644 index 0000000..51df8f9 --- /dev/null +++ b/bff/node_modules/streamsearch/package.json @@ -0,0 +1,34 @@ +{ + "name": "streamsearch", + "version": "1.1.0", + "author": "Brian White ", + "description": "Streaming Boyer-Moore-Horspool searching for node.js", + "main": "./lib/sbmh.js", + "engines": { + "node": ">=10.0.0" + }, + "devDependencies": { + "@mscdex/eslint-config": "^1.1.0", + "eslint": "^7.32.0" + }, + "scripts": { + "test": "node test/test.js", + "lint": "eslint --cache --report-unused-disable-directives --ext=.js .eslintrc.js lib test", + "lint:fix": "npm run lint -- --fix" + }, + "keywords": [ + "stream", + "horspool", + "boyer-moore-horspool", + "boyer-moore", + "search" + ], + "licenses": [{ + "type": "MIT", + "url": "http://github.com/mscdex/streamsearch/raw/master/LICENSE" + }], + "repository": { + "type": "git", + "url": "http://github.com/mscdex/streamsearch.git" + } +} diff --git a/bff/node_modules/streamsearch/test/test.js b/bff/node_modules/streamsearch/test/test.js new file mode 100644 index 0000000..39a04d7 --- /dev/null +++ b/bff/node_modules/streamsearch/test/test.js @@ -0,0 +1,70 @@ +'use strict'; + +const assert = require('assert'); + +const StreamSearch = require('../lib/sbmh.js'); + +[ + { + needle: '\r\n', + chunks: [ + 'foo', + ' bar', + '\r', + '\n', + 'baz, hello\r', + '\n world.', + '\r\n Node.JS rules!!\r\n\r\n', + ], + expect: [ + [false, 'foo'], + [false, ' bar'], + [ true, null], + [false, 'baz, hello'], + [ true, null], + [false, ' world.'], + [ true, null], + [ true, ' Node.JS rules!!'], + [ true, ''], + ], + }, + { + needle: '---foobarbaz', + chunks: [ + '---foobarbaz', + 'asdf', + '\r\n', + '---foobarba', + '---foobar', + 'ba', + '\r\n---foobarbaz--\r\n', + ], + expect: [ + [ true, null], + [false, 'asdf'], + [false, '\r\n'], + [false, '---foobarba'], + [false, '---foobarba'], + [ true, '\r\n'], + [false, '--\r\n'], + ], + }, +].forEach((test, i) => { + console.log(`Running test #${i + 1}`); + const { needle, chunks, expect } = test; + + const results = []; + const ss = new StreamSearch(Buffer.from(needle), + (isMatch, data, start, end) => { + if (data) + data = data.toString('latin1', start, end); + else + data = null; + results.push([isMatch, data]); + }); + + for (const chunk of chunks) + ss.push(Buffer.from(chunk)); + + assert.deepStrictEqual(results, expect); +}); diff --git a/bff/node_modules/string_decoder/.travis.yml b/bff/node_modules/string_decoder/.travis.yml new file mode 100644 index 0000000..3347a72 --- /dev/null +++ b/bff/node_modules/string_decoder/.travis.yml @@ -0,0 +1,50 @@ +sudo: false +language: node_js +before_install: + - npm install -g npm@2 + - test $NPM_LEGACY && npm install -g npm@latest-3 || npm install npm -g +notifications: + email: false +matrix: + fast_finish: true + include: + - node_js: '0.8' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: '0.10' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: '0.11' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: '0.12' + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 1 + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 2 + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 3 + env: + - TASK=test + - NPM_LEGACY=true + - node_js: 4 + env: TASK=test + - node_js: 5 + env: TASK=test + - node_js: 6 + env: TASK=test + - node_js: 7 + env: TASK=test + - node_js: 8 + env: TASK=test + - node_js: 9 + env: TASK=test diff --git a/bff/node_modules/string_decoder/LICENSE b/bff/node_modules/string_decoder/LICENSE new file mode 100644 index 0000000..778edb2 --- /dev/null +++ b/bff/node_modules/string_decoder/LICENSE @@ -0,0 +1,48 @@ +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + diff --git a/bff/node_modules/string_decoder/README.md b/bff/node_modules/string_decoder/README.md new file mode 100644 index 0000000..5fd5831 --- /dev/null +++ b/bff/node_modules/string_decoder/README.md @@ -0,0 +1,47 @@ +# string_decoder + +***Node-core v8.9.4 string_decoder for userland*** + + +[![NPM](https://nodei.co/npm/string_decoder.png?downloads=true&downloadRank=true)](https://nodei.co/npm/string_decoder/) +[![NPM](https://nodei.co/npm-dl/string_decoder.png?&months=6&height=3)](https://nodei.co/npm/string_decoder/) + + +```bash +npm install --save string_decoder +``` + +***Node-core string_decoder for userland*** + +This package is a mirror of the string_decoder implementation in Node-core. + +Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v8.9.4/docs/api/). + +As of version 1.0.0 **string_decoder** uses semantic versioning. + +## Previous versions + +Previous version numbers match the versions found in Node core, e.g. 0.10.24 matches Node 0.10.24, likewise 0.11.10 matches Node 0.11.10. + +## Update + +The *build/* directory contains a build script that will scrape the source from the [nodejs/node](https://github.com/nodejs/node) repo given a specific Node version. + +## Streams Working Group + +`string_decoder` is maintained by the Streams Working Group, which +oversees the development and maintenance of the Streams API within +Node.js. The responsibilities of the Streams Working Group include: + +* Addressing stream issues on the Node.js issue tracker. +* Authoring and editing stream documentation within the Node.js project. +* Reviewing changes to stream subclasses within the Node.js project. +* Redirecting changes to streams from the Node.js project to this + project. +* Assisting in the implementation of stream providers within Node.js. +* Recommending versions of `readable-stream` to be included in Node.js. +* Messaging about the future of streams to give the community advance + notice of changes. + +See [readable-stream](https://github.com/nodejs/readable-stream) for +more details. diff --git a/bff/node_modules/string_decoder/lib/string_decoder.js b/bff/node_modules/string_decoder/lib/string_decoder.js new file mode 100644 index 0000000..2e89e63 --- /dev/null +++ b/bff/node_modules/string_decoder/lib/string_decoder.js @@ -0,0 +1,296 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +/**/ + +var Buffer = require('safe-buffer').Buffer; +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} \ No newline at end of file diff --git a/bff/node_modules/string_decoder/node_modules/safe-buffer/LICENSE b/bff/node_modules/string_decoder/node_modules/safe-buffer/LICENSE new file mode 100644 index 0000000..0c068ce --- /dev/null +++ b/bff/node_modules/string_decoder/node_modules/safe-buffer/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/string_decoder/node_modules/safe-buffer/README.md b/bff/node_modules/string_decoder/node_modules/safe-buffer/README.md new file mode 100644 index 0000000..e9a81af --- /dev/null +++ b/bff/node_modules/string_decoder/node_modules/safe-buffer/README.md @@ -0,0 +1,584 @@ +# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url] + +[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg +[travis-url]: https://travis-ci.org/feross/safe-buffer +[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg +[npm-url]: https://npmjs.org/package/safe-buffer +[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg +[downloads-url]: https://npmjs.org/package/safe-buffer +[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg +[standard-url]: https://standardjs.com + +#### Safer Node.js Buffer API + +**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`, +`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.** + +**Uses the built-in implementation when available.** + +## install + +``` +npm install safe-buffer +``` + +## usage + +The goal of this package is to provide a safe replacement for the node.js `Buffer`. + +It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to +the top of your node.js modules: + +```js +var Buffer = require('safe-buffer').Buffer + +// Existing buffer code will continue to work without issues: + +new Buffer('hey', 'utf8') +new Buffer([1, 2, 3], 'utf8') +new Buffer(obj) +new Buffer(16) // create an uninitialized buffer (potentially unsafe) + +// But you can use these new explicit APIs to make clear what you want: + +Buffer.from('hey', 'utf8') // convert from many types to a Buffer +Buffer.alloc(16) // create a zero-filled buffer (safe) +Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe) +``` + +## api + +### Class Method: Buffer.from(array) + + +* `array` {Array} + +Allocates a new `Buffer` using an `array` of octets. + +```js +const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]); + // creates a new Buffer containing ASCII bytes + // ['b','u','f','f','e','r'] +``` + +A `TypeError` will be thrown if `array` is not an `Array`. + +### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]]) + + +* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or + a `new ArrayBuffer()` +* `byteOffset` {Number} Default: `0` +* `length` {Number} Default: `arrayBuffer.length - byteOffset` + +When passed a reference to the `.buffer` property of a `TypedArray` instance, +the newly created `Buffer` will share the same allocated memory as the +TypedArray. + +```js +const arr = new Uint16Array(2); +arr[0] = 5000; +arr[1] = 4000; + +const buf = Buffer.from(arr.buffer); // shares the memory with arr; + +console.log(buf); + // Prints: + +// changing the TypedArray changes the Buffer also +arr[1] = 6000; + +console.log(buf); + // Prints: +``` + +The optional `byteOffset` and `length` arguments specify a memory range within +the `arrayBuffer` that will be shared by the `Buffer`. + +```js +const ab = new ArrayBuffer(10); +const buf = Buffer.from(ab, 0, 2); +console.log(buf.length); + // Prints: 2 +``` + +A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`. + +### Class Method: Buffer.from(buffer) + + +* `buffer` {Buffer} + +Copies the passed `buffer` data onto a new `Buffer` instance. + +```js +const buf1 = Buffer.from('buffer'); +const buf2 = Buffer.from(buf1); + +buf1[0] = 0x61; +console.log(buf1.toString()); + // 'auffer' +console.log(buf2.toString()); + // 'buffer' (copy is not changed) +``` + +A `TypeError` will be thrown if `buffer` is not a `Buffer`. + +### Class Method: Buffer.from(str[, encoding]) + + +* `str` {String} String to encode. +* `encoding` {String} Encoding to use, Default: `'utf8'` + +Creates a new `Buffer` containing the given JavaScript string `str`. If +provided, the `encoding` parameter identifies the character encoding. +If not provided, `encoding` defaults to `'utf8'`. + +```js +const buf1 = Buffer.from('this is a tést'); +console.log(buf1.toString()); + // prints: this is a tést +console.log(buf1.toString('ascii')); + // prints: this is a tC)st + +const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex'); +console.log(buf2.toString()); + // prints: this is a tést +``` + +A `TypeError` will be thrown if `str` is not a string. + +### Class Method: Buffer.alloc(size[, fill[, encoding]]) + + +* `size` {Number} +* `fill` {Value} Default: `undefined` +* `encoding` {String} Default: `utf8` + +Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the +`Buffer` will be *zero-filled*. + +```js +const buf = Buffer.alloc(5); +console.log(buf); + // +``` + +The `size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +If `fill` is specified, the allocated `Buffer` will be initialized by calling +`buf.fill(fill)`. See [`buf.fill()`][] for more information. + +```js +const buf = Buffer.alloc(5, 'a'); +console.log(buf); + // +``` + +If both `fill` and `encoding` are specified, the allocated `Buffer` will be +initialized by calling `buf.fill(fill, encoding)`. For example: + +```js +const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); +console.log(buf); + // +``` + +Calling `Buffer.alloc(size)` can be significantly slower than the alternative +`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance +contents will *never contain sensitive data*. + +A `TypeError` will be thrown if `size` is not a number. + +### Class Method: Buffer.allocUnsafe(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must +be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit +architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is +thrown. A zero-length Buffer will be created if a `size` less than or equal to +0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +```js +const buf = Buffer.allocUnsafe(5); +console.log(buf); + // + // (octets will be different, every time) +buf.fill(0); +console.log(buf); + // +``` + +A `TypeError` will be thrown if `size` is not a number. + +Note that the `Buffer` module pre-allocates an internal `Buffer` instance of +size `Buffer.poolSize` that is used as a pool for the fast allocation of new +`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated +`new Buffer(size)` constructor) only when `size` is less than or equal to +`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default +value of `Buffer.poolSize` is `8192` but can be modified. + +Use of this pre-allocated internal memory pool is a key difference between +calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`. +Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer +pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal +Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The +difference is subtle but can be important when an application requires the +additional performance that `Buffer.allocUnsafe(size)` provides. + +### Class Method: Buffer.allocUnsafeSlow(size) + + +* `size` {Number} + +Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The +`size` must be less than or equal to the value of +`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is +`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will +be created if a `size` less than or equal to 0 is specified. + +The underlying memory for `Buffer` instances created in this way is *not +initialized*. The contents of the newly created `Buffer` are unknown and +*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such +`Buffer` instances to zeroes. + +When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances, +allocations under 4KB are, by default, sliced from a single pre-allocated +`Buffer`. This allows applications to avoid the garbage collection overhead of +creating many individually allocated Buffers. This approach improves both +performance and memory usage by eliminating the need to track and cleanup as +many `Persistent` objects. + +However, in the case where a developer may need to retain a small chunk of +memory from a pool for an indeterminate amount of time, it may be appropriate +to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then +copy out the relevant bits. + +```js +// need to keep around a few small chunks of memory +const store = []; + +socket.on('readable', () => { + const data = socket.read(); + // allocate for retained data + const sb = Buffer.allocUnsafeSlow(10); + // copy the data into the new allocation + data.copy(sb, 0, 0, 10); + store.push(sb); +}); +``` + +Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after* +a developer has observed undue memory retention in their applications. + +A `TypeError` will be thrown if `size` is not a number. + +### All the Rest + +The rest of the `Buffer` API is exactly the same as in node.js. +[See the docs](https://nodejs.org/api/buffer.html). + + +## Related links + +- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660) +- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4) + +## Why is `Buffer` unsafe? + +Today, the node.js `Buffer` constructor is overloaded to handle many different argument +types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.), +`ArrayBuffer`, and also `Number`. + +The API is optimized for convenience: you can throw any type at it, and it will try to do +what you want. + +Because the Buffer constructor is so powerful, you often see code like this: + +```js +// Convert UTF-8 strings to hex +function toHex (str) { + return new Buffer(str).toString('hex') +} +``` + +***But what happens if `toHex` is called with a `Number` argument?*** + +### Remote Memory Disclosure + +If an attacker can make your program call the `Buffer` constructor with a `Number` +argument, then they can make it allocate uninitialized memory from the node.js process. +This could potentially disclose TLS private keys, user data, or database passwords. + +When the `Buffer` constructor is passed a `Number` argument, it returns an +**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like +this, you **MUST** overwrite the contents before returning it to the user. + +From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size): + +> `new Buffer(size)` +> +> - `size` Number +> +> The underlying memory for `Buffer` instances created in this way is not initialized. +> **The contents of a newly created `Buffer` are unknown and could contain sensitive +> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes. + +(Emphasis our own.) + +Whenever the programmer intended to create an uninitialized `Buffer` you often see code +like this: + +```js +var buf = new Buffer(16) + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### Would this ever be a problem in real code? + +Yes. It's surprisingly common to forget to check the type of your variables in a +dynamically-typed language like JavaScript. + +Usually the consequences of assuming the wrong type is that your program crashes with an +uncaught exception. But the failure mode for forgetting to check the type of arguments to +the `Buffer` constructor is more catastrophic. + +Here's an example of a vulnerable service that takes a JSON payload and converts it to +hex: + +```js +// Take a JSON payload {str: "some string"} and convert it to hex +var server = http.createServer(function (req, res) { + var data = '' + req.setEncoding('utf8') + req.on('data', function (chunk) { + data += chunk + }) + req.on('end', function () { + var body = JSON.parse(data) + res.end(new Buffer(body.str).toString('hex')) + }) +}) + +server.listen(8080) +``` + +In this example, an http client just has to send: + +```json +{ + "str": 1000 +} +``` + +and it will get back 1,000 bytes of uninitialized memory from the server. + +This is a very serious bug. It's similar in severity to the +[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process +memory by remote attackers. + + +### Which real-world packages were vulnerable? + +#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht) + +[Mathias Buus](https://github.com/mafintosh) and I +([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages, +[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow +anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get +them to reveal 20 bytes at a time of uninitialized memory from the node.js process. + +Here's +[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8) +that fixed it. We released a new fixed version, created a +[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all +vulnerable versions on npm so users will get a warning to upgrade to a newer version. + +#### [`ws`](https://www.npmjs.com/package/ws) + +That got us wondering if there were other vulnerable packages. Sure enough, within a short +period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the +most popular WebSocket implementation in node.js. + +If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as +expected, then uninitialized server memory would be disclosed to the remote peer. + +These were the vulnerable methods: + +```js +socket.send(number) +socket.ping(number) +socket.pong(number) +``` + +Here's a vulnerable socket server with some echo functionality: + +```js +server.on('connection', function (socket) { + socket.on('message', function (message) { + message = JSON.parse(message) + if (message.type === 'echo') { + socket.send(message.data) // send back the user's message + } + }) +}) +``` + +`socket.send(number)` called on the server, will disclose server memory. + +Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue +was fixed, with a more detailed explanation. Props to +[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the +[Node Security Project disclosure](https://nodesecurity.io/advisories/67). + + +### What's the solution? + +It's important that node.js offers a fast way to get memory otherwise performance-critical +applications would needlessly get a lot slower. + +But we need a better way to *signal our intent* as programmers. **When we want +uninitialized memory, we should request it explicitly.** + +Sensitive functionality should not be packed into a developer-friendly API that loosely +accepts many different types. This type of API encourages the lazy practice of passing +variables in without checking the type very carefully. + +#### A new API: `Buffer.allocUnsafe(number)` + +The functionality of creating buffers with uninitialized memory should be part of another +API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that +frequently gets user input of all sorts of different types passed into it. + +```js +var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory! + +// Immediately overwrite the uninitialized buffer with data from another buffer +for (var i = 0; i < buf.length; i++) { + buf[i] = otherBuf[i] +} +``` + + +### How do we fix node.js core? + +We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as +`semver-major`) which defends against one case: + +```js +var str = 16 +new Buffer(str, 'utf8') +``` + +In this situation, it's implied that the programmer intended the first argument to be a +string, since they passed an encoding as a second argument. Today, node.js will allocate +uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not +what the programmer intended. + +But this is only a partial solution, since if the programmer does `new Buffer(variable)` +(without an `encoding` parameter) there's no way to know what they intended. If `variable` +is sometimes a number, then uninitialized memory will sometimes be returned. + +### What's the real long-term fix? + +We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when +we need uninitialized memory. But that would break 1000s of packages. + +~~We believe the best solution is to:~~ + +~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~ + +~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~ + +#### Update + +We now support adding three new APIs: + +- `Buffer.from(value)` - convert from any type to a buffer +- `Buffer.alloc(size)` - create a zero-filled buffer +- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size + +This solves the core problem that affected `ws` and `bittorrent-dht` which is +`Buffer(variable)` getting tricked into taking a number argument. + +This way, existing code continues working and the impact on the npm ecosystem will be +minimal. Over time, npm maintainers can migrate performance-critical code to use +`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`. + + +### Conclusion + +We think there's a serious design issue with the `Buffer` API as it exists today. It +promotes insecure software by putting high-risk functionality into a convenient API +with friendly "developer ergonomics". + +This wasn't merely a theoretical exercise because we found the issue in some of the +most popular npm packages. + +Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of +`buffer`. + +```js +var Buffer = require('safe-buffer').Buffer +``` + +Eventually, we hope that node.js core can switch to this new, safer behavior. We believe +the impact on the ecosystem would be minimal since it's not a breaking change. +Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while +older, insecure packages would magically become safe from this attack vector. + + +## links + +- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514) +- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67) +- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68) + + +## credit + +The original issues in `bittorrent-dht` +([disclosure](https://nodesecurity.io/advisories/68)) and +`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by +[Mathias Buus](https://github.com/mafintosh) and +[Feross Aboukhadijeh](http://feross.org/). + +Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues +and for his work running the [Node Security Project](https://nodesecurity.io/). + +Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and +auditing the code. + + +## license + +MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org) diff --git a/bff/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts b/bff/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts new file mode 100644 index 0000000..e9fed80 --- /dev/null +++ b/bff/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts @@ -0,0 +1,187 @@ +declare module "safe-buffer" { + export class Buffer { + length: number + write(string: string, offset?: number, length?: number, encoding?: string): number; + toString(encoding?: string, start?: number, end?: number): string; + toJSON(): { type: 'Buffer', data: any[] }; + equals(otherBuffer: Buffer): boolean; + compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number; + copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number; + slice(start?: number, end?: number): Buffer; + writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number; + readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntLE(offset: number, byteLength: number, noAssert?: boolean): number; + readIntBE(offset: number, byteLength: number, noAssert?: boolean): number; + readUInt8(offset: number, noAssert?: boolean): number; + readUInt16LE(offset: number, noAssert?: boolean): number; + readUInt16BE(offset: number, noAssert?: boolean): number; + readUInt32LE(offset: number, noAssert?: boolean): number; + readUInt32BE(offset: number, noAssert?: boolean): number; + readInt8(offset: number, noAssert?: boolean): number; + readInt16LE(offset: number, noAssert?: boolean): number; + readInt16BE(offset: number, noAssert?: boolean): number; + readInt32LE(offset: number, noAssert?: boolean): number; + readInt32BE(offset: number, noAssert?: boolean): number; + readFloatLE(offset: number, noAssert?: boolean): number; + readFloatBE(offset: number, noAssert?: boolean): number; + readDoubleLE(offset: number, noAssert?: boolean): number; + readDoubleBE(offset: number, noAssert?: boolean): number; + swap16(): Buffer; + swap32(): Buffer; + swap64(): Buffer; + writeUInt8(value: number, offset: number, noAssert?: boolean): number; + writeUInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeUInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeInt8(value: number, offset: number, noAssert?: boolean): number; + writeInt16LE(value: number, offset: number, noAssert?: boolean): number; + writeInt16BE(value: number, offset: number, noAssert?: boolean): number; + writeInt32LE(value: number, offset: number, noAssert?: boolean): number; + writeInt32BE(value: number, offset: number, noAssert?: boolean): number; + writeFloatLE(value: number, offset: number, noAssert?: boolean): number; + writeFloatBE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleLE(value: number, offset: number, noAssert?: boolean): number; + writeDoubleBE(value: number, offset: number, noAssert?: boolean): number; + fill(value: any, offset?: number, end?: number): this; + indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number; + includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean; + + /** + * Allocates a new buffer containing the given {str}. + * + * @param str String to store in buffer. + * @param encoding encoding to use, optional. Default is 'utf8' + */ + constructor (str: string, encoding?: string); + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + */ + constructor (size: number); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: Uint8Array); + /** + * Produces a Buffer backed by the same allocated memory as + * the given {ArrayBuffer}. + * + * + * @param arrayBuffer The ArrayBuffer with which to share memory. + */ + constructor (arrayBuffer: ArrayBuffer); + /** + * Allocates a new buffer containing the given {array} of octets. + * + * @param array The octets to store. + */ + constructor (array: any[]); + /** + * Copies the passed {buffer} data onto a new {Buffer} instance. + * + * @param buffer The buffer to copy. + */ + constructor (buffer: Buffer); + prototype: Buffer; + /** + * Allocates a new Buffer using an {array} of octets. + * + * @param array + */ + static from(array: any[]): Buffer; + /** + * When passed a reference to the .buffer property of a TypedArray instance, + * the newly created Buffer will share the same allocated memory as the TypedArray. + * The optional {byteOffset} and {length} arguments specify a memory range + * within the {arrayBuffer} that will be shared by the Buffer. + * + * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer() + * @param byteOffset + * @param length + */ + static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer; + /** + * Copies the passed {buffer} data onto a new Buffer instance. + * + * @param buffer + */ + static from(buffer: Buffer): Buffer; + /** + * Creates a new Buffer containing the given JavaScript string {str}. + * If provided, the {encoding} parameter identifies the character encoding. + * If not provided, {encoding} defaults to 'utf8'. + * + * @param str + */ + static from(str: string, encoding?: string): Buffer; + /** + * Returns true if {obj} is a Buffer + * + * @param obj object to test. + */ + static isBuffer(obj: any): obj is Buffer; + /** + * Returns true if {encoding} is a valid encoding argument. + * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex' + * + * @param encoding string to test. + */ + static isEncoding(encoding: string): boolean; + /** + * Gives the actual byte length of a string. encoding defaults to 'utf8'. + * This is not the same as String.prototype.length since that returns the number of characters in a string. + * + * @param string string to test. + * @param encoding encoding used to evaluate (defaults to 'utf8') + */ + static byteLength(string: string, encoding?: string): number; + /** + * Returns a buffer which is the result of concatenating all the buffers in the list together. + * + * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer. + * If the list has exactly one item, then the first item of the list is returned. + * If the list has more than one item, then a new Buffer is created. + * + * @param list An array of Buffer objects to concatenate + * @param totalLength Total length of the buffers when concatenated. + * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly. + */ + static concat(list: Buffer[], totalLength?: number): Buffer; + /** + * The same as buf1.compare(buf2). + */ + static compare(buf1: Buffer, buf2: Buffer): number; + /** + * Allocates a new buffer of {size} octets. + * + * @param size count of octets to allocate. + * @param fill if specified, buffer will be initialized by calling buf.fill(fill). + * If parameter is omitted, buffer will be filled with zeros. + * @param encoding encoding used for call to buf.fill while initalizing + */ + static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer; + /** + * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafe(size: number): Buffer; + /** + * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents + * of the newly created Buffer are unknown and may contain sensitive data. + * + * @param size count of octets to allocate + */ + static allocUnsafeSlow(size: number): Buffer; + } +} \ No newline at end of file diff --git a/bff/node_modules/string_decoder/node_modules/safe-buffer/index.js b/bff/node_modules/string_decoder/node_modules/safe-buffer/index.js new file mode 100644 index 0000000..22438da --- /dev/null +++ b/bff/node_modules/string_decoder/node_modules/safe-buffer/index.js @@ -0,0 +1,62 @@ +/* eslint-disable node/no-deprecated-api */ +var buffer = require('buffer') +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} diff --git a/bff/node_modules/string_decoder/node_modules/safe-buffer/package.json b/bff/node_modules/string_decoder/node_modules/safe-buffer/package.json new file mode 100644 index 0000000..623fbc3 --- /dev/null +++ b/bff/node_modules/string_decoder/node_modules/safe-buffer/package.json @@ -0,0 +1,37 @@ +{ + "name": "safe-buffer", + "description": "Safer Node.js Buffer API", + "version": "5.1.2", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "http://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/safe-buffer/issues" + }, + "devDependencies": { + "standard": "*", + "tape": "^4.0.0" + }, + "homepage": "https://github.com/feross/safe-buffer", + "keywords": [ + "buffer", + "buffer allocate", + "node security", + "safe", + "safe-buffer", + "security", + "uninitialized" + ], + "license": "MIT", + "main": "index.js", + "types": "index.d.ts", + "repository": { + "type": "git", + "url": "git://github.com/feross/safe-buffer.git" + }, + "scripts": { + "test": "standard && tape test/*.js" + } +} diff --git a/bff/node_modules/string_decoder/package.json b/bff/node_modules/string_decoder/package.json new file mode 100644 index 0000000..518c3eb --- /dev/null +++ b/bff/node_modules/string_decoder/package.json @@ -0,0 +1,31 @@ +{ + "name": "string_decoder", + "version": "1.1.1", + "description": "The string_decoder module from Node core", + "main": "lib/string_decoder.js", + "dependencies": { + "safe-buffer": "~5.1.0" + }, + "devDependencies": { + "babel-polyfill": "^6.23.0", + "core-util-is": "^1.0.2", + "inherits": "^2.0.3", + "tap": "~0.4.8" + }, + "scripts": { + "test": "tap test/parallel/*.js && node test/verify-dependencies", + "ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/nodejs/string_decoder.git" + }, + "homepage": "https://github.com/nodejs/string_decoder", + "keywords": [ + "string", + "decoder", + "browser", + "browserify" + ], + "license": "MIT" +} diff --git a/bff/node_modules/strnum/.github/SECURITY.md b/bff/node_modules/strnum/.github/SECURITY.md new file mode 100644 index 0000000..0db86ca --- /dev/null +++ b/bff/node_modules/strnum/.github/SECURITY.md @@ -0,0 +1,5 @@ +If you believe you have found a security vulnerability in this repository which can be potentially harful for the users in anyway, please do not report security vulnerabilities through public GitHub issues. Instead, please report it to us as described below. + +## Security contact information + +To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure. diff --git a/bff/node_modules/strnum/.vscode/launch.json b/bff/node_modules/strnum/.vscode/launch.json new file mode 100644 index 0000000..b87b349 --- /dev/null +++ b/bff/node_modules/strnum/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Jasmine Tests", + "program": "${workspaceFolder}/node_modules/jasmine/bin/jasmine.js", + "args": [ + "${workspaceFolder}/spec/attr_spec.js" + ], + "internalConsoleOptions": "openOnSessionStart" + },{ + "type": "node", + "request": "launch", + "name": "Jasmine Tests current test file", + "program": "${workspaceFolder}/node_modules/jasmine/bin/jasmine.js", + "args": [ + "${file}" + ], + "internalConsoleOptions": "openOnSessionStart" + } + ] + +} \ No newline at end of file diff --git a/bff/node_modules/strnum/CHANGELOG.md b/bff/node_modules/strnum/CHANGELOG.md new file mode 100644 index 0000000..97a8ee4 --- /dev/null +++ b/bff/node_modules/strnum/CHANGELOG.md @@ -0,0 +1,40 @@ + +**2.2.2 / 2026-03-23** +- fix for space string + + +**2.2.1 / 2026-03-19** +- fix false positive for eNotation when no leading zeros + +**2.2.0 / 2026-02-28** +- support infinity + +**2.1.0 / 2025-05-01** +- fix e-notation + - to return string when invalid enotation is found. Eg `E24` + - to return valid number when only leading zero before e char is present + +**2.0.5 / 2025-02-27** +- changes done in 1.1.2 + +**1.1.2 / 2025-02-27** +- fix skiplike for 0 + +**1.1.1 / 2025-02-21** +- All recent fixes of version 2 + +**2.0.4 / 2025-02-20** +- remove console log + +**2.0.3 / 2025-02-20** +- fix for string which are falsly identified as e-notation + +**2.0.1 / 2025-02-20** +- fix: handle only zeros +- fix: return original string when NaN + +**2.0.0 / 2025-02-20** +- Migrating to ESM modules. No functional change + +**1.1.0 / 2025-02-20** +- fix (#9): support missing floating point and e notations \ No newline at end of file diff --git a/bff/node_modules/strnum/LICENSE b/bff/node_modules/strnum/LICENSE new file mode 100644 index 0000000..6450554 --- /dev/null +++ b/bff/node_modules/strnum/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Natural Intelligence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/strnum/README.md b/bff/node_modules/strnum/README.md new file mode 100644 index 0000000..737dd0d --- /dev/null +++ b/bff/node_modules/strnum/README.md @@ -0,0 +1,104 @@ +# strnum +Parse string into Number based on configuration + +## Users + + + + + +Many React Native projects and plugins + +## Usage + +```bash +npm install strnum +``` +```js +const toNumber = require("strnum"); + +toNumber(undefined) // undefined +toNumber(null)) //null +toNumber("")) // "" +toNumber("string"); //"string") +toNumber("12,12"); //"12,12") +toNumber("12 12"); //"12 12") +toNumber("12-12"); //"12-12") +toNumber("12.12.12"); //"12.12.12") +toNumber("0x2f"); //47) +toNumber("-0x2f"); //-47) +toNumber("0x2f", { hex : true}); //47) +toNumber("-0x2f", { hex : true}); //-47) +toNumber("0x2f", { hex : false}); //"0x2f") +toNumber("-0x2f", { hex : false}); //"-0x2f") +toNumber("06"); //6) +toNumber("06", { leadingZeros : true}); //6) +toNumber("06", { leadingZeros : false}); //"06") + +toNumber("006"); //6) +toNumber("006", { leadingZeros : true}); //6) +toNumber("006", { leadingZeros : false}); //"006") +toNumber("0.0"); //0) +toNumber("00.00"); //0) +toNumber("0.06"); //0.06) +toNumber("00.6"); //0.6) +toNumber(".006"); //0.006) +toNumber("6.0"); //6) +toNumber("06.0"); //6) + +toNumber("0.0", { leadingZeros : false}); //0) +toNumber("00.00", { leadingZeros : false}); //"00.00") +toNumber("0.06", { leadingZeros : false}); //0.06) +toNumber("00.6", { leadingZeros : false}); //"00.6") +toNumber(".006", { leadingZeros : false}); //0.006) +toNumber("6.0" , { leadingZeros : false}); //6) +toNumber("06.0" , { leadingZeros : false}); //"06.0") +toNumber("-06"); //-6) +toNumber("-06", { leadingZeros : true}); //-6) +toNumber("-06", { leadingZeros : false}); //"-06") + +toNumber("-0.0"); //-0) +toNumber("-00.00"); //-0) +toNumber("-0.06"); //-0.06) +toNumber("-00.6"); //-0.6) +toNumber("-.006"); //-0.006) +toNumber("-6.0"); //-6) +toNumber("-06.0"); //-6) + +toNumber("-0.0" , { leadingZeros : false}); //-0) +toNumber("-00.00", { leadingZeros : false}); //"-00.00") +toNumber("-0.06", { leadingZeros : false}); //-0.06) +toNumber("-00.6", { leadingZeros : false}); //"-00.6") +toNumber("-.006", {leadingZeros : false}); //-0.006) +toNumber("-6.0" , { leadingZeros : false}); //-6) +toNumber("-06.0" , { leadingZeros : false}); //"-06.0") +toNumber("420926189200190257681175017717") ; //4.209261892001902e+29) +toNumber("000000000000000000000000017717" , { leadingZeros : false}); //"000000000000000000000000017717") +toNumber("000000000000000000000000017717" , { leadingZeros : true}); //17717) +toNumber("01.0e2" , { leadingZeros : false}); //"01.0e2") +toNumber("-01.0e2" , { leadingZeros : false}); //"-01.0e2") +toNumber("01.0e2") ; //100) +toNumber("-01.0e2") ; //-100) +toNumber("1.0e2") ; //100) + +toNumber("-1.0e2") ; //-100) +toNumber("1.0e-2"); //0.01) + +toNumber("+1212121212"); // 1212121212 +toNumber("+1212121212", { skipLike: /\+[0-9]{10}/} )); //"+1212121212" +``` + +Supported Options +```js +hex: true, //when hexadecimal string should be parsed +leadingZeros: true, //when number with leading zeros like 08 should be parsed. 0.0 is not impacted +eNotation: true, //when number with eNotation or number parsed in eNotation should be considered +skipLike: /regex/ //when string should not be parsed when it matches the specified regular expression +infinity: "original", // "null", "infinity" (Infinity type), "string" ("Infinity" (the string literal)) +``` + + +# Try out our other work + +WishIn - You need it if negative thoughts take over all the time
+ diff --git a/bff/node_modules/strnum/algo.stflow b/bff/node_modules/strnum/algo.stflow new file mode 100644 index 0000000..fd0e64e --- /dev/null +++ b/bff/node_modules/strnum/algo.stflow @@ -0,0 +1,84 @@ + +FLOW: toNumber +input: x, options +IF not string + END x +ELSE_IF should skip + END x +ELSE_IF 0 + END 0 +ELSE_IF hex is supported AND x is hex + END int of x of base 16 +ELSE_IF possible e notation + FOLLOW: resolve enotation (x, trimmed x, options) +ELSE + IF match numeric pattern + separate sign, leading zeros, pure number + IF x doesn't starts with "[+-]0." + END number(x) + IF leading zeros are not allowed + IF leading zeros > 1 + #00.1 + END x + ELSE_IF leading zeros == 1 AND decimal is not adjacent to leading zeros + #06.5 + #but not 0.65, .65, 6.0 + END x + ELSE_IF str has only zeros + END 0 + ELSE + parse x to number + IF parsed x == 0 or -0 + END parsed x + ELSE_IF parsed x is eNotation + IF conversion to enotation is allowed + END parsed x + ELSE + END x + ELSE_IF floating number + IF parsed x is 0 + END parsed x + ELSE_IF parsed x == number without leading 0s + #0.456. 0.79000 + END parsed x + ELSE_IF parsed x is negative AND == parsed x == number without leading 0s + END parsed x + ELSE + END x + ELSE_IF leading 0s are present + IF parsed x == x without leading 0s + END parsed x + ELSE + END x + ELSE + IF parsed x == x (consider sign) + END parsed x + ELSE + END x + + ELSE + END x + + + +FLOW: resolve enotation +input: x, trimmed x, options +IF eNotation has not to be evaluated + END x +IF match eNotation pattern + extract sign, eChar, leading zeros + find if eChar adjacent to leading zeros + + IF leading zeros > 1 AND eChar adjacent to leading zeros + # 00e, -00e + END x + ELSE_IF exp is `0e`, `0.e`, `-0.e`, `-0e` + END number(x); + ELSE_IF leading zeros are allowed but eChar is not adjacent to leading zeros + # -003e2 + remove leading zeros + END number(x) + ELSE + END x +ELSE + END x \ No newline at end of file diff --git a/bff/node_modules/strnum/package.json b/bff/node_modules/strnum/package.json new file mode 100644 index 0000000..a2389f0 --- /dev/null +++ b/bff/node_modules/strnum/package.json @@ -0,0 +1,31 @@ +{ + "name": "strnum", + "version": "2.2.2", + "description": "Parse String to Number based on configuration", + "type": "module", + "main": "strnum.js", + "scripts": { + "test": "jasmine tests/*_test.js" + }, + "keywords": [ + "string", + "number", + "parse", + "convert" + ], + "repository": { + "type": "git", + "url": "https://github.com/NaturalIntelligence/strnum" + }, + "author": "Amit Gupta (https://amitkumargupta.work/)", + "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "devDependencies": { + "jasmine": "^5.6.0" + } +} \ No newline at end of file diff --git a/bff/node_modules/strnum/strnum.js b/bff/node_modules/strnum/strnum.js new file mode 100644 index 0000000..3099d60 --- /dev/null +++ b/bff/node_modules/strnum/strnum.js @@ -0,0 +1,161 @@ +const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/; +const numRegex = /^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/; +// const octRegex = /^0x[a-z0-9]+/; +// const binRegex = /0x[a-z0-9]+/; + + +const consider = { + hex: true, + // oct: false, + leadingZeros: true, + decimalPoint: "\.", + eNotation: true, + //skipLike: /regex/, + infinity: "original", // "null", "infinity" (Infinity type), "string" ("Infinity" (the string literal)) +}; + +export default function toNumber(str, options = {}) { + options = Object.assign({}, consider, options); + if (!str || typeof str !== "string") return str; + + let trimmedStr = str.trim(); + + if (trimmedStr.length === 0) return str; + else if (options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str; + else if (trimmedStr === "0") return 0; + else if (options.hex && hexRegex.test(trimmedStr)) { + return parse_int(trimmedStr, 16); + // }else if (options.oct && octRegex.test(str)) { + // return Number.parseInt(val, 8); + } else if (!isFinite(trimmedStr)) { //Infinity + return handleInfinity(str, Number(trimmedStr), options); + } else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation + return resolveEnotation(str, trimmedStr, options); + // }else if (options.parseBin && binRegex.test(str)) { + // return Number.parseInt(val, 2); + } else { + //separate negative sign, leading zeros, and rest number + const match = numRegex.exec(trimmedStr); + // +00.123 => [ , '+', '00', '.123', .. + if (match) { + const sign = match[1] || ""; + const leadingZeros = match[2]; + let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros + const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000. + str[leadingZeros.length + 1] === "." + : str[leadingZeros.length] === "."; + + //trim ending zeros for floating number + if (!options.leadingZeros //leading zeros are not allowed + && (leadingZeros.length > 1 + || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))) { + // 00, 00.3, +03.24, 03, 03.24 + return str; + } + else {//no leading zeros or leading zeros are allowed + const num = Number(trimmedStr); + const parsedStr = String(num); + + if (num === 0) return num; + if (parsedStr.search(/[eE]/) !== -1) { //given number is long and parsed to eNotation + if (options.eNotation) return num; + else return str; + } else if (trimmedStr.indexOf(".") !== -1) { //floating number + if (parsedStr === "0") return num; //0.0 + else if (parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000 + else if (parsedStr === `${sign}${numTrimmedByZeros}`) return num; + else return str; + } + + let n = leadingZeros ? numTrimmedByZeros : trimmedStr; + if (leadingZeros) { + // -009 => -9 + return (n === parsedStr) || (sign + n === parsedStr) ? num : str + } else { + // +9 + return (n === parsedStr) || (n === sign + parsedStr) ? num : str + } + } + } else { //non-numeric string + return str; + } + } +} + +const eNotationRegx = /^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/; +function resolveEnotation(str, trimmedStr, options) { + if (!options.eNotation) return str; + const notation = trimmedStr.match(eNotationRegx); + if (notation) { + let sign = notation[1] || ""; + const eChar = notation[3].indexOf("e") === -1 ? "E" : "e"; + const leadingZeros = notation[2]; + const eAdjacentToLeadingZeros = sign ? // 0E. + str[leadingZeros.length + 1] === eChar + : str[leadingZeros.length] === eChar; + + if (leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str; + else if (leadingZeros.length === 1 + && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)) { + return Number(trimmedStr); + } else if (leadingZeros.length > 0) { + // Has leading zeros — only accept if leadingZeros option allows it + if (options.leadingZeros && !eAdjacentToLeadingZeros) { + trimmedStr = (notation[1] || "") + notation[3]; + return Number(trimmedStr); + } else return str; + } else { + // No leading zeros — always valid e-notation, parse it + return Number(trimmedStr); + } + } else { + return str; + } +} + +/** + * + * @param {string} numStr without leading zeros + * @returns + */ +function trimZeros(numStr) { + if (numStr && numStr.indexOf(".") !== -1) {//float + numStr = numStr.replace(/0+$/, ""); //remove ending zeros + if (numStr === ".") numStr = "0"; + else if (numStr[0] === ".") numStr = "0" + numStr; + else if (numStr[numStr.length - 1] === ".") numStr = numStr.substring(0, numStr.length - 1); + return numStr; + } + return numStr; +} + +function parse_int(numStr, base) { + //polyfill + if (parseInt) return parseInt(numStr, base); + else if (Number.parseInt) return Number.parseInt(numStr, base); + else if (window && window.parseInt) return window.parseInt(numStr, base); + else throw new Error("parseInt, Number.parseInt, window.parseInt are not supported") +} + +/** + * Handle infinite values based on user option + * @param {string} str - original input string + * @param {number} num - parsed number (Infinity or -Infinity) + * @param {object} options - user options + * @returns {string|number|null} based on infinity option + */ +function handleInfinity(str, num, options) { + const isPositive = num === Infinity; + + switch (options.infinity.toLowerCase()) { + case "null": + return null; + case "infinity": + return num; // Return Infinity or -Infinity + case "string": + return isPositive ? "Infinity" : "-Infinity"; + case "original": + default: + return str; // Return original string like "1e1000" + } +} \ No newline at end of file diff --git a/bff/node_modules/strnum/tests/infinity_test.js b/bff/node_modules/strnum/tests/infinity_test.js new file mode 100644 index 0000000..cb62da9 --- /dev/null +++ b/bff/node_modules/strnum/tests/infinity_test.js @@ -0,0 +1,18 @@ +import toNumber from "../strnum.js"; + +describe("Should convert all the valid numeric strings to number", () => { + it("should return infinity as per user option", () => { + expect(toNumber("1e1000", { infinity: "original" })).toEqual("1e1000"); + expect(toNumber("1e1000", { infinity: "null" })).toEqual(null); + expect(toNumber("1e1000", { infinity: "infinity" })).toEqual(Infinity); + expect(toNumber("1e1000", { infinity: "string" })).toEqual("Infinity"); + expect(toNumber("-1e1000", { infinity: "original" })).toEqual("-1e1000"); + expect(toNumber("-1e1000", { infinity: "null" })).toEqual(null); + expect(toNumber("-1e1000", { infinity: "infinity" })).toEqual(-Infinity); + expect(toNumber("-1e1000", { infinity: "string" })).toEqual("-Infinity"); + + + expect(toNumber("1e309")).toEqual("1e309"); + + }); +}); \ No newline at end of file diff --git a/bff/node_modules/strnum/tests/strnum_test.js b/bff/node_modules/strnum/tests/strnum_test.js new file mode 100644 index 0000000..11daa0a --- /dev/null +++ b/bff/node_modules/strnum/tests/strnum_test.js @@ -0,0 +1,175 @@ +import toNumber from "../strnum.js"; + +describe("Should convert all the valid numeric strings to number", () => { + it("should return undefined, null, empty string, or non-numeric as it is", () => { + expect(toNumber(undefined)).not.toBeDefined(); + expect(toNumber(null)).toEqual(null); + expect(toNumber("")).toEqual(""); + expect(toNumber(" ")).toEqual(" "); + expect(toNumber("string")).toEqual("string"); + expect(toNumber("e89794659669cb7bb967db73a7ea6889c3891727")).toEqual("e89794659669cb7bb967db73a7ea6889c3891727"); + }); + it("should not parse number with spaces or comma", () => { + expect(toNumber("12,12")).toEqual("12,12"); + expect(toNumber("12 12")).toEqual("12 12"); + expect(toNumber("12-12")).toEqual("12-12"); + expect(toNumber("12.12.12")).toEqual("12.12.12"); + }) + it("should consider + sign", () => { + expect(toNumber("+12")).toEqual(12); + expect(toNumber("+ 12")).toEqual("+ 12"); + expect(toNumber("12+12")).toEqual("12+12"); + expect(toNumber("1212+")).toEqual("1212+"); + }) + it("should parse hexadecimal values", () => { + expect(toNumber("0x2f")).toEqual(47); + expect(toNumber("-0x2f")).toEqual(-47); + expect(toNumber("0x2f", { hex: true })).toEqual(47); + expect(toNumber("-0x2f", { hex: true })).toEqual(-47); + expect(toNumber("0x2f", { hex: false })).toEqual("0x2f"); + expect(toNumber("-0x2f", { hex: false })).toEqual("-0x2f"); + }) + it("should not parse strings with 0x embedded", () => { + expect(toNumber("0xzz")).toEqual("0xzz"); + expect(toNumber("iweraf0x123qwerqwer")).toEqual("iweraf0x123qwerqwer"); + expect(toNumber("1230x55")).toEqual("1230x55"); + expect(toNumber("JVBERi0xLjMNCiXi48")).toEqual("JVBERi0xLjMNCiXi48"); + }) + it("leading zeros", () => { + expect(toNumber("0")).toEqual(0); + expect(toNumber("00")).toEqual(0); + expect(toNumber("00.0")).toEqual(0); + + expect(toNumber("0", { leadingZeros: false })).toEqual(0); + expect(toNumber("00", { leadingZeros: false })).toEqual("00"); + expect(toNumber("00.0", { leadingZeros: false })).toEqual("00.0"); + + expect(toNumber("06")).toEqual(6); + expect(toNumber("06", { leadingZeros: true })).toEqual(6); + expect(toNumber("06", { leadingZeros: false })).toEqual("06"); + + expect(toNumber("006")).toEqual(6); + expect(toNumber("006", { leadingZeros: true })).toEqual(6); + expect(toNumber("006", { leadingZeros: false })).toEqual("006"); + + expect(toNumber("000000000000000000000000017717", { leadingZeros: false })).toEqual("000000000000000000000000017717"); + expect(toNumber("000000000000000000000000017717", { leadingZeros: true })).toEqual(17717); + expect(toNumber("020211201030005811824")).toEqual("020211201030005811824"); + expect(toNumber("0420926189200190257681175017717")).toEqual(4.209261892001902e+29); + }) + it("invalid floating number", () => { + expect(toNumber("20.21.030")).toEqual("20.21.030"); + expect(toNumber("0.21.030")).toEqual("0.21.030"); + expect(toNumber("0.21.")).toEqual("0.21."); + }); + it("floating point and leading zeros", () => { + expect(toNumber("0.")).toEqual(0); + expect(toNumber("+0.")).toEqual(0); + expect(toNumber("-0.")).toEqual(-0); + expect(toNumber("1.")).toEqual(1); + expect(toNumber("00.00")).toEqual(0); + expect(toNumber("0.06")).toEqual(0.06); + expect(toNumber("00.6")).toEqual(0.6); + expect(toNumber(".006")).toEqual(0.006); + expect(toNumber("6.0")).toEqual(6); + expect(toNumber("06.0")).toEqual(6); + + expect(toNumber("0.0", { leadingZeros: false })).toEqual(0); + expect(toNumber("00.00", { leadingZeros: false })).toEqual("00.00"); + expect(toNumber("0.06", { leadingZeros: false })).toEqual(0.06); + expect(toNumber("00.6", { leadingZeros: false })).toEqual("00.6"); + expect(toNumber(".006", { leadingZeros: false })).toEqual(0.006); + expect(toNumber("6.0", { leadingZeros: false })).toEqual(6); + expect(toNumber("06.0", { leadingZeros: false })).toEqual("06.0"); + }) + it("negative number leading zeros", () => { + expect(toNumber("+06")).toEqual(6); + expect(toNumber("-06")).toEqual(-6); + expect(toNumber("-06", { leadingZeros: true })).toEqual(-6); + expect(toNumber("-06", { leadingZeros: false })).toEqual("-06"); + + expect(toNumber("-0.0")).toEqual(-0); + expect(toNumber("-00.00")).toEqual(-0); + expect(toNumber("-0.06")).toEqual(-0.06); + expect(toNumber("-00.6")).toEqual(-0.6); + expect(toNumber("-.006")).toEqual(-0.006); + expect(toNumber("-6.0")).toEqual(-6); + expect(toNumber("-06.0")).toEqual(-6); + expect(toNumber("+06.0")).toEqual(6); + + expect(toNumber("-0.0", { leadingZeros: false })).toEqual(-0); + expect(toNumber("-00.00", { leadingZeros: false })).toEqual("-00.00"); + expect(toNumber("-0.06", { leadingZeros: false })).toEqual(-0.06); + expect(toNumber("-00.6", { leadingZeros: false })).toEqual("-00.6"); + expect(toNumber("-.006", { leadingZeros: false })).toEqual(-0.006); + expect(toNumber("-6.0", { leadingZeros: false })).toEqual(-6); + expect(toNumber("-06.0", { leadingZeros: false })).toEqual("-06.0"); + }) + it("long number", () => { + expect(toNumber("020211201030005811824")).toEqual("020211201030005811824"); + expect(toNumber("20211201030005811824")).toEqual("20211201030005811824"); + expect(toNumber("20.211201030005811824")).toEqual("20.211201030005811824"); + expect(toNumber("0.211201030005811824")).toEqual("0.211201030005811824"); + }); + it("scientific notation", () => { + expect(toNumber("01.0e2", { leadingZeros: false })).toEqual("01.0e2"); + expect(toNumber("-01.0e2", { leadingZeros: false })).toEqual("-01.0e2"); + expect(toNumber("01.0e2")).toEqual(100); + expect(toNumber("-01.0e2")).toEqual(-100); + expect(toNumber("1.0e2")).toEqual(100); + + expect(toNumber("-1.0e2")).toEqual(-100); + expect(toNumber("1.0e-2")).toEqual(0.01); + + expect(toNumber("420926189200190257681175017717")).toEqual(4.209261892001902e+29); + expect(toNumber("420926189200190257681175017717", { eNotation: false })).toEqual("420926189200190257681175017717"); + + expect(toNumber("1e-2")).toEqual(0.01); + expect(toNumber("1e+2")).toEqual(100); + expect(toNumber("1.e+2")).toEqual(100); + + expect(toNumber("1.5e3", { leadingZeros: false })).toEqual(1500); + }); + + it("scientific notation with upper E", () => { + expect(toNumber("01.0E2", { leadingZeros: false })).toEqual("01.0E2"); + expect(toNumber("-01.0E2", { leadingZeros: false })).toEqual("-01.0E2"); + expect(toNumber("01.0E2")).toEqual(100); + expect(toNumber("-01.0E2")).toEqual(-100); + expect(toNumber("1.0E2")).toEqual(100); + + expect(toNumber("-1.0E2")).toEqual(-100); + expect(toNumber("1.0E-2")).toEqual(0.01); + + expect(toNumber("E-2")).toEqual("E-2"); + expect(toNumber("E2")).toEqual("E2"); + expect(toNumber("0E2")).toEqual(0); + expect(toNumber("-0E2")).toEqual(-0); + expect(toNumber("00E2")).toEqual("00E2"); + expect(toNumber("00E2", { leadingZeros: false })).toEqual("00E2"); + }); + + it("should skip matching pattern", () => { + expect(toNumber("0", { skipLike: /.*/ })).toEqual("0"); + expect(toNumber("+12", { skipLike: /\+[0-9]{10}/ })).toEqual(12); + expect(toNumber("12+12", { skipLike: /\+[0-9]{10}/ })).toEqual("12+12"); + expect(toNumber("12+1212121212", { skipLike: /\+[0-9]{10}/ })).toEqual("12+1212121212"); + expect(toNumber("+1212121212")).toEqual(1212121212); + expect(toNumber("+1212121212", { skipLike: /\+[0-9]{10}/ })).toEqual("+1212121212"); + }) + it("should not change string if not number", () => { + expect(toNumber("+12 12")).toEqual("+12 12"); + expect(toNumber(" +12 12 ")).toEqual(" +12 12 "); + }) + it("should ignore sorrounded spaces ", () => { + expect(toNumber(" +1212 ")).toEqual(1212); + }) + + it("negative numbers", () => { + expect(toNumber("+1212")).toEqual(1212); + expect(toNumber("+12.12")).toEqual(12.12); + expect(toNumber("-12.12")).toEqual(-12.12); + expect(toNumber("-012.12")).toEqual(-12.12); + expect(toNumber("-012.12")).toEqual(-12.12); + }) +}); diff --git a/bff/node_modules/strnum/tests/temp.js b/bff/node_modules/strnum/tests/temp.js new file mode 100644 index 0000000..13c2e01 --- /dev/null +++ b/bff/node_modules/strnum/tests/temp.js @@ -0,0 +1,8 @@ +import toNumber from "../strnum.js"; + +console.log(toNumber("1.5e3", {leadingZeros: false})) +// describe("temp", () = { + +// it("scientific notation", () => { +// }); +// }) \ No newline at end of file diff --git a/bff/node_modules/toidentifier/HISTORY.md b/bff/node_modules/toidentifier/HISTORY.md new file mode 100644 index 0000000..cb7cc89 --- /dev/null +++ b/bff/node_modules/toidentifier/HISTORY.md @@ -0,0 +1,9 @@ +1.0.1 / 2021-11-14 +================== + + * pref: enable strict mode + +1.0.0 / 2018-07-09 +================== + + * Initial release diff --git a/bff/node_modules/toidentifier/LICENSE b/bff/node_modules/toidentifier/LICENSE new file mode 100644 index 0000000..de22d15 --- /dev/null +++ b/bff/node_modules/toidentifier/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/bff/node_modules/toidentifier/README.md b/bff/node_modules/toidentifier/README.md new file mode 100644 index 0000000..57e8a78 --- /dev/null +++ b/bff/node_modules/toidentifier/README.md @@ -0,0 +1,61 @@ +# toidentifier + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Build Status][github-actions-ci-image]][github-actions-ci-url] +[![Test Coverage][codecov-image]][codecov-url] + +> Convert a string of words to a JavaScript identifier + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +$ npm install toidentifier +``` + +## Example + +```js +var toIdentifier = require('toidentifier') + +console.log(toIdentifier('Bad Request')) +// => "BadRequest" +``` + +## API + +This CommonJS module exports a single default function: `toIdentifier`. + +### toIdentifier(string) + +Given a string as the argument, it will be transformed according to +the following rules and the new string will be returned: + +1. Split into words separated by space characters (`0x20`). +2. Upper case the first character of each word. +3. Join the words together with no separator. +4. Remove all non-word (`[0-9a-z_]`) characters. + +## License + +[MIT](LICENSE) + +[codecov-image]: https://img.shields.io/codecov/c/github/component/toidentifier.svg +[codecov-url]: https://codecov.io/gh/component/toidentifier +[downloads-image]: https://img.shields.io/npm/dm/toidentifier.svg +[downloads-url]: https://npmjs.org/package/toidentifier +[github-actions-ci-image]: https://img.shields.io/github/workflow/status/component/toidentifier/ci/master?label=ci +[github-actions-ci-url]: https://github.com/component/toidentifier?query=workflow%3Aci +[npm-image]: https://img.shields.io/npm/v/toidentifier.svg +[npm-url]: https://npmjs.org/package/toidentifier + + +## + +[npm]: https://www.npmjs.com/ + +[yarn]: https://yarnpkg.com/ diff --git a/bff/node_modules/toidentifier/index.js b/bff/node_modules/toidentifier/index.js new file mode 100644 index 0000000..9295d02 --- /dev/null +++ b/bff/node_modules/toidentifier/index.js @@ -0,0 +1,32 @@ +/*! + * toidentifier + * Copyright(c) 2016 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = toIdentifier + +/** + * Trasform the given string into a JavaScript identifier + * + * @param {string} str + * @returns {string} + * @public + */ + +function toIdentifier (str) { + return str + .split(' ') + .map(function (token) { + return token.slice(0, 1).toUpperCase() + token.slice(1) + }) + .join('') + .replace(/[^ _0-9a-z]/gi, '') +} diff --git a/bff/node_modules/toidentifier/package.json b/bff/node_modules/toidentifier/package.json new file mode 100644 index 0000000..42db1a6 --- /dev/null +++ b/bff/node_modules/toidentifier/package.json @@ -0,0 +1,38 @@ +{ + "name": "toidentifier", + "description": "Convert a string of words to a JavaScript identifier", + "version": "1.0.1", + "author": "Douglas Christopher Wilson ", + "contributors": [ + "Douglas Christopher Wilson ", + "Nick Baugh (http://niftylettuce.com/)" + ], + "repository": "component/toidentifier", + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.3", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "4.3.1", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.1.3", + "nyc": "15.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "license": "MIT", + "files": [ + "HISTORY.md", + "LICENSE", + "index.js" + ], + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} diff --git a/bff/node_modules/tslib/CopyrightNotice.txt b/bff/node_modules/tslib/CopyrightNotice.txt new file mode 100644 index 0000000..0e42542 --- /dev/null +++ b/bff/node_modules/tslib/CopyrightNotice.txt @@ -0,0 +1,15 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + diff --git a/bff/node_modules/tslib/LICENSE.txt b/bff/node_modules/tslib/LICENSE.txt new file mode 100644 index 0000000..bfe6430 --- /dev/null +++ b/bff/node_modules/tslib/LICENSE.txt @@ -0,0 +1,12 @@ +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file diff --git a/bff/node_modules/tslib/README.md b/bff/node_modules/tslib/README.md new file mode 100644 index 0000000..290cc61 --- /dev/null +++ b/bff/node_modules/tslib/README.md @@ -0,0 +1,164 @@ +# tslib + +This is a runtime library for [TypeScript](https://www.typescriptlang.org/) that contains all of the TypeScript helper functions. + +This library is primarily used by the `--importHelpers` flag in TypeScript. +When using `--importHelpers`, a module that uses helper functions like `__extends` and `__assign` in the following emitted file: + +```ts +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; +exports.x = {}; +exports.y = __assign({}, exports.x); + +``` + +will instead be emitted as something like the following: + +```ts +var tslib_1 = require("tslib"); +exports.x = {}; +exports.y = tslib_1.__assign({}, exports.x); +``` + +Because this can avoid duplicate declarations of things like `__extends`, `__assign`, etc., this means delivering users smaller files on average, as well as less runtime overhead. +For optimized bundles with TypeScript, you should absolutely consider using `tslib` and `--importHelpers`. + +# Installing + +For the latest stable version, run: + +## npm + +```sh +# TypeScript 3.9.2 or later +npm install tslib + +# TypeScript 3.8.4 or earlier +npm install tslib@^1 + +# TypeScript 2.3.2 or earlier +npm install tslib@1.6.1 +``` + +## yarn + +```sh +# TypeScript 3.9.2 or later +yarn add tslib + +# TypeScript 3.8.4 or earlier +yarn add tslib@^1 + +# TypeScript 2.3.2 or earlier +yarn add tslib@1.6.1 +``` + +## bower + +```sh +# TypeScript 3.9.2 or later +bower install tslib + +# TypeScript 3.8.4 or earlier +bower install tslib@^1 + +# TypeScript 2.3.2 or earlier +bower install tslib@1.6.1 +``` + +## JSPM + +```sh +# TypeScript 3.9.2 or later +jspm install tslib + +# TypeScript 3.8.4 or earlier +jspm install tslib@^1 + +# TypeScript 2.3.2 or earlier +jspm install tslib@1.6.1 +``` + +# Usage + +Set the `importHelpers` compiler option on the command line: + +``` +tsc --importHelpers file.ts +``` + +or in your tsconfig.json: + +```json +{ + "compilerOptions": { + "importHelpers": true + } +} +``` + +#### For bower and JSPM users + +You will need to add a `paths` mapping for `tslib`, e.g. For Bower users: + +```json +{ + "compilerOptions": { + "module": "amd", + "importHelpers": true, + "baseUrl": "./", + "paths": { + "tslib" : ["bower_components/tslib/tslib.d.ts"] + } + } +} +``` + +For JSPM users: + +```json +{ + "compilerOptions": { + "module": "system", + "importHelpers": true, + "baseUrl": "./", + "paths": { + "tslib" : ["jspm_packages/npm/tslib@2.x.y/tslib.d.ts"] + } + } +} +``` + +## Deployment + +- Choose your new version number +- Set it in `package.json` and `bower.json` +- Create a tag: `git tag [version]` +- Push the tag: `git push --tags` +- Create a [release in GitHub](https://github.com/microsoft/tslib/releases) +- Run the [publish to npm](https://github.com/microsoft/tslib/actions?query=workflow%3A%22Publish+to+NPM%22) workflow + +Done. + +# Contribute + +There are many ways to [contribute](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md) to TypeScript. + +* [Submit bugs](https://github.com/Microsoft/TypeScript/issues) and help us verify fixes as they are checked in. +* Review the [source code changes](https://github.com/Microsoft/TypeScript/pulls). +* Engage with other TypeScript users and developers on [StackOverflow](http://stackoverflow.com/questions/tagged/typescript). +* Join the [#typescript](http://twitter.com/#!/search/realtime/%23typescript) discussion on Twitter. +* [Contribute bug fixes](https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md). + +# Documentation + +* [Quick tutorial](http://www.typescriptlang.org/Tutorial) +* [Programming handbook](http://www.typescriptlang.org/Handbook) +* [Homepage](http://www.typescriptlang.org/) diff --git a/bff/node_modules/tslib/SECURITY.md b/bff/node_modules/tslib/SECURITY.md new file mode 100644 index 0000000..869fdfe --- /dev/null +++ b/bff/node_modules/tslib/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). + + diff --git a/bff/node_modules/tslib/modules/index.d.ts b/bff/node_modules/tslib/modules/index.d.ts new file mode 100644 index 0000000..3244fab --- /dev/null +++ b/bff/node_modules/tslib/modules/index.d.ts @@ -0,0 +1,38 @@ +// Note: named reexports are used instead of `export *` because +// TypeScript itself doesn't resolve the `export *` when checking +// if a particular helper exists. +export { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __createBinding, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +} from '../tslib.js'; +export * as default from '../tslib.js'; diff --git a/bff/node_modules/tslib/modules/index.js b/bff/node_modules/tslib/modules/index.js new file mode 100644 index 0000000..c91f618 --- /dev/null +++ b/bff/node_modules/tslib/modules/index.js @@ -0,0 +1,70 @@ +import tslib from '../tslib.js'; +const { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __createBinding, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +} = tslib; +export { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __exportStar, + __createBinding, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +}; +export default tslib; diff --git a/bff/node_modules/tslib/modules/package.json b/bff/node_modules/tslib/modules/package.json new file mode 100644 index 0000000..aafa0e4 --- /dev/null +++ b/bff/node_modules/tslib/modules/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/bff/node_modules/tslib/package.json b/bff/node_modules/tslib/package.json new file mode 100644 index 0000000..57d0578 --- /dev/null +++ b/bff/node_modules/tslib/package.json @@ -0,0 +1,47 @@ +{ + "name": "tslib", + "author": "Microsoft Corp.", + "homepage": "https://www.typescriptlang.org/", + "version": "2.8.1", + "license": "0BSD", + "description": "Runtime library for TypeScript helper functions", + "keywords": [ + "TypeScript", + "Microsoft", + "compiler", + "language", + "javascript", + "tslib", + "runtime" + ], + "bugs": { + "url": "https://github.com/Microsoft/TypeScript/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/tslib.git" + }, + "main": "tslib.js", + "module": "tslib.es6.js", + "jsnext:main": "tslib.es6.js", + "typings": "tslib.d.ts", + "sideEffects": false, + "exports": { + ".": { + "module": { + "types": "./modules/index.d.ts", + "default": "./tslib.es6.mjs" + }, + "import": { + "node": "./modules/index.js", + "default": { + "types": "./modules/index.d.ts", + "default": "./tslib.es6.mjs" + } + }, + "default": "./tslib.js" + }, + "./*": "./*", + "./": "./" + } +} diff --git a/bff/node_modules/tslib/tslib.d.ts b/bff/node_modules/tslib/tslib.d.ts new file mode 100644 index 0000000..f23df55 --- /dev/null +++ b/bff/node_modules/tslib/tslib.d.ts @@ -0,0 +1,460 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +/** + * Used to shim class extends. + * + * @param d The derived class. + * @param b The base class. + */ +export declare function __extends(d: Function, b: Function): void; + +/** + * Copy the values of all of the enumerable own properties from one or more source objects to a + * target object. Returns the target object. + * + * @param t The target object to copy to. + * @param sources One or more source objects from which to copy properties + */ +export declare function __assign(t: any, ...sources: any[]): any; + +/** + * Performs a rest spread on an object. + * + * @param t The source value. + * @param propertyNames The property names excluded from the rest spread. + */ +export declare function __rest(t: any, propertyNames: (string | symbol)[]): any; + +/** + * Applies decorators to a target object + * + * @param decorators The set of decorators to apply. + * @param target The target object. + * @param key If specified, the own property to apply the decorators to. + * @param desc The property descriptor, defaults to fetching the descriptor from the target object. + * @experimental + */ +export declare function __decorate(decorators: Function[], target: any, key?: string | symbol, desc?: any): any; + +/** + * Creates an observing function decorator from a parameter decorator. + * + * @param paramIndex The parameter index to apply the decorator to. + * @param decorator The parameter decorator to apply. Note that the return value is ignored. + * @experimental + */ +export declare function __param(paramIndex: number, decorator: Function): Function; + +/** + * Applies decorators to a class or class member, following the native ECMAScript decorator specification. + * @param ctor For non-field class members, the class constructor. Otherwise, `null`. + * @param descriptorIn The `PropertyDescriptor` to use when unable to look up the property from `ctor`. + * @param decorators The decorators to apply + * @param contextIn The `DecoratorContext` to clone for each decorator application. + * @param initializers An array of field initializer mutation functions into which new initializers are written. + * @param extraInitializers An array of extra initializer functions into which new initializers are written. + */ +export declare function __esDecorate(ctor: Function | null, descriptorIn: object | null, decorators: Function[], contextIn: object, initializers: Function[] | null, extraInitializers: Function[]): void; + +/** + * Runs field initializers or extra initializers generated by `__esDecorate`. + * @param thisArg The `this` argument to use. + * @param initializers The array of initializers to evaluate. + * @param value The initial value to pass to the initializers. + */ +export declare function __runInitializers(thisArg: unknown, initializers: Function[], value?: any): any; + +/** + * Converts a computed property name into a `string` or `symbol` value. + */ +export declare function __propKey(x: any): string | symbol; + +/** + * Assigns the name of a function derived from the left-hand side of an assignment. + * @param f The function to rename. + * @param name The new name for the function. + * @param prefix A prefix (such as `"get"` or `"set"`) to insert before the name. + */ +export declare function __setFunctionName(f: Function, name: string | symbol, prefix?: string): Function; + +/** + * Creates a decorator that sets metadata. + * + * @param metadataKey The metadata key + * @param metadataValue The metadata value + * @experimental + */ +export declare function __metadata(metadataKey: any, metadataValue: any): Function; + +/** + * Converts a generator function into a pseudo-async function, by treating each `yield` as an `await`. + * + * @param thisArg The reference to use as the `this` value in the generator function + * @param _arguments The optional arguments array + * @param P The optional promise constructor argument, defaults to the `Promise` property of the global object. + * @param generator The generator function + */ +export declare function __awaiter(thisArg: any, _arguments: any, P: Function, generator: Function): any; + +/** + * Creates an Iterator object using the body as the implementation. + * + * @param thisArg The reference to use as the `this` value in the function + * @param body The generator state-machine based implementation. + * + * @see [./docs/generator.md] + */ +export declare function __generator(thisArg: any, body: Function): any; + +/** + * Creates bindings for all enumerable properties of `m` on `exports` + * + * @param m The source object + * @param o The `exports` object. + */ +export declare function __exportStar(m: any, o: any): void; + +/** + * Creates a value iterator from an `Iterable` or `ArrayLike` object. + * + * @param o The object. + * @throws {TypeError} If `o` is neither `Iterable`, nor an `ArrayLike`. + */ +export declare function __values(o: any): any; + +/** + * Reads values from an `Iterable` or `ArrayLike` object and returns the resulting array. + * + * @param o The object to read from. + * @param n The maximum number of arguments to read, defaults to `Infinity`. + */ +export declare function __read(o: any, n?: number): any[]; + +/** + * Creates an array from iterable spread. + * + * @param args The Iterable objects to spread. + * @deprecated since TypeScript 4.2 - Use `__spreadArray` + */ +export declare function __spread(...args: any[][]): any[]; + +/** + * Creates an array from array spread. + * + * @param args The ArrayLikes to spread into the resulting array. + * @deprecated since TypeScript 4.2 - Use `__spreadArray` + */ +export declare function __spreadArrays(...args: any[][]): any[]; + +/** + * Spreads the `from` array into the `to` array. + * + * @param pack Replace empty elements with `undefined`. + */ +export declare function __spreadArray(to: any[], from: any[], pack?: boolean): any[]; + +/** + * Creates an object that signals to `__asyncGenerator` that it shouldn't be yielded, + * and instead should be awaited and the resulting value passed back to the generator. + * + * @param v The value to await. + */ +export declare function __await(v: any): any; + +/** + * Converts a generator function into an async generator function, by using `yield __await` + * in place of normal `await`. + * + * @param thisArg The reference to use as the `this` value in the generator function + * @param _arguments The optional arguments array + * @param generator The generator function + */ +export declare function __asyncGenerator(thisArg: any, _arguments: any, generator: Function): any; + +/** + * Used to wrap a potentially async iterator in such a way so that it wraps the result + * of calling iterator methods of `o` in `__await` instances, and then yields the awaited values. + * + * @param o The potentially async iterator. + * @returns A synchronous iterator yielding `__await` instances on every odd invocation + * and returning the awaited `IteratorResult` passed to `next` every even invocation. + */ +export declare function __asyncDelegator(o: any): any; + +/** + * Creates a value async iterator from an `AsyncIterable`, `Iterable` or `ArrayLike` object. + * + * @param o The object. + * @throws {TypeError} If `o` is neither `AsyncIterable`, `Iterable`, nor an `ArrayLike`. + */ +export declare function __asyncValues(o: any): any; + +/** + * Creates a `TemplateStringsArray` frozen object from the `cooked` and `raw` arrays. + * + * @param cooked The cooked possibly-sparse array. + * @param raw The raw string content. + */ +export declare function __makeTemplateObject(cooked: string[], raw: string[]): TemplateStringsArray; + +/** + * Used to shim default and named imports in ECMAScript Modules transpiled to CommonJS. + * + * ```js + * import Default, { Named, Other } from "mod"; + * // or + * import { default as Default, Named, Other } from "mod"; + * ``` + * + * @param mod The CommonJS module exports object. + */ +export declare function __importStar(mod: T): T; + +/** + * Used to shim default imports in ECMAScript Modules transpiled to CommonJS. + * + * ```js + * import Default from "mod"; + * ``` + * + * @param mod The CommonJS module exports object. + */ +export declare function __importDefault(mod: T): T | { default: T }; + +/** + * Emulates reading a private instance field. + * + * @param receiver The instance from which to read the private field. + * @param state A WeakMap containing the private field value for an instance. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet( + receiver: T, + state: { has(o: T): boolean, get(o: T): V | undefined }, + kind?: "f" +): V; + +/** + * Emulates reading a private static field. + * + * @param receiver The object from which to read the private static field. + * @param state The class constructor containing the definition of the static field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The descriptor that holds the static field value. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V>( + receiver: T, + state: T, + kind: "f", + f: { value: V } +): V; + +/** + * Emulates evaluating a private instance "get" accessor. + * + * @param receiver The instance on which to evaluate the private "get" accessor. + * @param state A WeakSet used to verify an instance supports the private "get" accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "get" accessor function to evaluate. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet( + receiver: T, + state: { has(o: T): boolean }, + kind: "a", + f: () => V +): V; + +/** + * Emulates evaluating a private static "get" accessor. + * + * @param receiver The object on which to evaluate the private static "get" accessor. + * @param state The class constructor containing the definition of the static "get" accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "get" accessor function to evaluate. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V>( + receiver: T, + state: T, + kind: "a", + f: () => V +): V; + +/** + * Emulates reading a private instance method. + * + * @param receiver The instance from which to read a private method. + * @param state A WeakSet used to verify an instance supports the private method. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The function to return as the private instance method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldGet unknown>( + receiver: T, + state: { has(o: T): boolean }, + kind: "m", + f: V +): V; + +/** + * Emulates reading a private static method. + * + * @param receiver The object from which to read the private static method. + * @param state The class constructor containing the definition of the static method. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The function to return as the private static method. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldGet unknown, V extends (...args: any[]) => unknown>( + receiver: T, + state: T, + kind: "m", + f: V +): V; + +/** + * Emulates writing to a private instance field. + * + * @param receiver The instance on which to set a private field value. + * @param state A WeakMap used to store the private field value for an instance. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldSet( + receiver: T, + state: { has(o: T): boolean, set(o: T, value: V): unknown }, + value: V, + kind?: "f" +): V; + +/** + * Emulates writing to a private static field. + * + * @param receiver The object on which to set the private static field. + * @param state The class constructor containing the definition of the private static field. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The descriptor that holds the static field value. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldSet unknown, V>( + receiver: T, + state: T, + value: V, + kind: "f", + f: { value: V } +): V; + +/** + * Emulates writing to a private instance "set" accessor. + * + * @param receiver The instance on which to evaluate the private instance "set" accessor. + * @param state A WeakSet used to verify an instance supports the private "set" accessor. + * @param value The value to store in the private accessor. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "set" accessor function to evaluate. + * + * @throws {TypeError} If `state` doesn't have an entry for `receiver`. + */ +export declare function __classPrivateFieldSet( + receiver: T, + state: { has(o: T): boolean }, + value: V, + kind: "a", + f: (v: V) => void +): V; + +/** + * Emulates writing to a private static "set" accessor. + * + * @param receiver The object on which to evaluate the private static "set" accessor. + * @param state The class constructor containing the definition of the static "set" accessor. + * @param value The value to store in the private field. + * @param kind Either `"f"` for a field, `"a"` for an accessor, or `"m"` for a method. + * @param f The "set" accessor function to evaluate. + * + * @throws {TypeError} If `receiver` is not `state`. + */ +export declare function __classPrivateFieldSet unknown, V>( + receiver: T, + state: T, + value: V, + kind: "a", + f: (v: V) => void +): V; + +/** + * Checks for the existence of a private field/method/accessor. + * + * @param state The class constructor containing the static member, or the WeakMap or WeakSet associated with a private instance member. + * @param receiver The object for which to test the presence of the private member. + */ +export declare function __classPrivateFieldIn( + state: (new (...args: any[]) => unknown) | { has(o: any): boolean }, + receiver: unknown, +): boolean; + +/** + * Creates a re-export binding on `object` with key `objectKey` that references `target[key]`. + * + * @param object The local `exports` object. + * @param target The object to re-export from. + * @param key The property key of `target` to re-export. + * @param objectKey The property key to re-export as. Defaults to `key`. + */ +export declare function __createBinding(object: object, target: object, key: PropertyKey, objectKey?: PropertyKey): void; + +/** + * Adds a disposable resource to a resource-tracking environment object. + * @param env A resource-tracking environment object. + * @param value Either a Disposable or AsyncDisposable object, `null`, or `undefined`. + * @param async When `true`, `AsyncDisposable` resources can be added. When `false`, `AsyncDisposable` resources cannot be added. + * @returns The {@link value} argument. + * + * @throws {TypeError} If {@link value} is not an object, or if either `Symbol.dispose` or `Symbol.asyncDispose` are not + * defined, or if {@link value} does not have an appropriate `Symbol.dispose` or `Symbol.asyncDispose` method. + */ +export declare function __addDisposableResource(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }, value: T, async: boolean): T; + +/** + * Disposes all resources in a resource-tracking environment object. + * @param env A resource-tracking environment object. + * @returns A {@link Promise} if any resources in the environment were marked as `async` when added; otherwise, `void`. + * + * @throws {SuppressedError} if an error thrown during disposal would have suppressed a prior error from disposal or the + * error recorded in the resource-tracking environment object. + * @seealso {@link __addDisposableResource} + */ +export declare function __disposeResources(env: { stack: { value?: unknown, dispose?: Function, async: boolean }[]; error: unknown; hasError: boolean; }): any; + +/** + * Transforms a relative import specifier ending in a non-declaration TypeScript file extension to its JavaScript file extension counterpart. + * @param path The import specifier. + * @param preserveJsx Causes '*.tsx' to transform to '*.jsx' instead of '*.js'. Should be true when `--jsx` is set to `preserve`. + */ +export declare function __rewriteRelativeImportExtension(path: string, preserveJsx?: boolean): string; \ No newline at end of file diff --git a/bff/node_modules/tslib/tslib.es6.html b/bff/node_modules/tslib/tslib.es6.html new file mode 100644 index 0000000..b122e41 --- /dev/null +++ b/bff/node_modules/tslib/tslib.es6.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/bff/node_modules/tslib/tslib.es6.js b/bff/node_modules/tslib/tslib.es6.js new file mode 100644 index 0000000..6c1739b --- /dev/null +++ b/bff/node_modules/tslib/tslib.es6.js @@ -0,0 +1,402 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +export function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +export var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +export function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +export function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +export function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +}; + +export function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +}; + +export function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +}; + +export function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +}; + +export function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +export function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +export function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +export var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +export function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +export function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +export function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +export function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +export function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +export function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +export function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +export function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +export function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } +} + +export function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +export function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); +}; + +export function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; +} + +export function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +export function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +export function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +export function __classPrivateFieldIn(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} + +export function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; + +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +export function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); +} + +export function __rewriteRelativeImportExtension(path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; +} + +export default { + __extends: __extends, + __assign: __assign, + __rest: __rest, + __decorate: __decorate, + __param: __param, + __esDecorate: __esDecorate, + __runInitializers: __runInitializers, + __propKey: __propKey, + __setFunctionName: __setFunctionName, + __metadata: __metadata, + __awaiter: __awaiter, + __generator: __generator, + __createBinding: __createBinding, + __exportStar: __exportStar, + __values: __values, + __read: __read, + __spread: __spread, + __spreadArrays: __spreadArrays, + __spreadArray: __spreadArray, + __await: __await, + __asyncGenerator: __asyncGenerator, + __asyncDelegator: __asyncDelegator, + __asyncValues: __asyncValues, + __makeTemplateObject: __makeTemplateObject, + __importStar: __importStar, + __importDefault: __importDefault, + __classPrivateFieldGet: __classPrivateFieldGet, + __classPrivateFieldSet: __classPrivateFieldSet, + __classPrivateFieldIn: __classPrivateFieldIn, + __addDisposableResource: __addDisposableResource, + __disposeResources: __disposeResources, + __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, +}; diff --git a/bff/node_modules/tslib/tslib.es6.mjs b/bff/node_modules/tslib/tslib.es6.mjs new file mode 100644 index 0000000..c17990a --- /dev/null +++ b/bff/node_modules/tslib/tslib.es6.mjs @@ -0,0 +1,401 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise, SuppressedError, Symbol, Iterator */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +export function __extends(d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +export var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +export function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +export function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +export function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +}; + +export function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +}; + +export function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +}; + +export function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +}; + +export function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +export function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +export function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +export var __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +}); + +export function __exportStar(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); +} + +export function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +export function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +/** @deprecated */ +export function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +/** @deprecated */ +export function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +} + +export function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +} + +export function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +export function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +export function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } +} + +export function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +export function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}; + +var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); +}; + +export function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; +} + +export function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +export function __classPrivateFieldGet(receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); +} + +export function __classPrivateFieldSet(receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; +} + +export function __classPrivateFieldIn(state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); +} + +export function __addDisposableResource(env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; +} + +var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +export function __disposeResources(env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); +} + +export function __rewriteRelativeImportExtension(path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; +} + +export default { + __extends, + __assign, + __rest, + __decorate, + __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, + __metadata, + __awaiter, + __generator, + __createBinding, + __exportStar, + __values, + __read, + __spread, + __spreadArrays, + __spreadArray, + __await, + __asyncGenerator, + __asyncDelegator, + __asyncValues, + __makeTemplateObject, + __importStar, + __importDefault, + __classPrivateFieldGet, + __classPrivateFieldSet, + __classPrivateFieldIn, + __addDisposableResource, + __disposeResources, + __rewriteRelativeImportExtension, +}; diff --git a/bff/node_modules/tslib/tslib.html b/bff/node_modules/tslib/tslib.html new file mode 100644 index 0000000..44c9ba5 --- /dev/null +++ b/bff/node_modules/tslib/tslib.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/bff/node_modules/tslib/tslib.js b/bff/node_modules/tslib/tslib.js new file mode 100644 index 0000000..5e12ace --- /dev/null +++ b/bff/node_modules/tslib/tslib.js @@ -0,0 +1,484 @@ +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global global, define, Symbol, Reflect, Promise, SuppressedError, Iterator */ +var __extends; +var __assign; +var __rest; +var __decorate; +var __param; +var __esDecorate; +var __runInitializers; +var __propKey; +var __setFunctionName; +var __metadata; +var __awaiter; +var __generator; +var __exportStar; +var __values; +var __read; +var __spread; +var __spreadArrays; +var __spreadArray; +var __await; +var __asyncGenerator; +var __asyncDelegator; +var __asyncValues; +var __makeTemplateObject; +var __importStar; +var __importDefault; +var __classPrivateFieldGet; +var __classPrivateFieldSet; +var __classPrivateFieldIn; +var __createBinding; +var __addDisposableResource; +var __disposeResources; +var __rewriteRelativeImportExtension; +(function (factory) { + var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {}; + if (typeof define === "function" && define.amd) { + define("tslib", ["exports"], function (exports) { factory(createExporter(root, createExporter(exports))); }); + } + else if (typeof module === "object" && typeof module.exports === "object") { + factory(createExporter(root, createExporter(module.exports))); + } + else { + factory(createExporter(root)); + } + function createExporter(exports, previous) { + if (exports !== root) { + if (typeof Object.create === "function") { + Object.defineProperty(exports, "__esModule", { value: true }); + } + else { + exports.__esModule = true; + } + } + return function (id, v) { return exports[id] = previous ? previous(id, v) : v; }; + } +}) +(function (exporter) { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + + __extends = function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + + __assign = Object.assign || function (t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + + __rest = function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; + }; + + __decorate = function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; + }; + + __param = function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } + }; + + __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.unshift(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.unshift(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; + }; + + __runInitializers = function (thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; + }; + + __propKey = function (x) { + return typeof x === "symbol" ? x : "".concat(x); + }; + + __setFunctionName = function (f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); + }; + + __metadata = function (metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); + }; + + __awaiter = function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); + }; + + __generator = function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); + return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } + }; + + __exportStar = function(m, o) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); + }; + + __createBinding = Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); + }) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; + }); + + __values = function (o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); + }; + + __read = function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; + }; + + /** @deprecated */ + __spread = function () { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; + }; + + /** @deprecated */ + __spreadArrays = function () { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; + }; + + __spreadArray = function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + }; + + __await = function (v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); + }; + + __asyncGenerator = function (thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i; + function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; } + function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } + }; + + __asyncDelegator = function (o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } + }; + + __asyncValues = function (o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } + }; + + __makeTemplateObject = function (cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; + }; + + var __setModuleDefault = Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + }) : function(o, v) { + o["default"] = v; + }; + + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + + __importStar = function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; + + __importDefault = function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; + }; + + __classPrivateFieldGet = function (receiver, state, kind, f) { + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); + return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); + }; + + __classPrivateFieldSet = function (receiver, state, value, kind, f) { + if (kind === "m") throw new TypeError("Private method is not writable"); + if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); + if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); + return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; + }; + + __classPrivateFieldIn = function (state, receiver) { + if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object"); + return typeof state === "function" ? receiver === state : state.has(receiver); + }; + + __addDisposableResource = function (env, value, async) { + if (value !== null && value !== void 0) { + if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); + var dispose, inner; + if (async) { + if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); + dispose = value[Symbol.asyncDispose]; + } + if (dispose === void 0) { + if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); + dispose = value[Symbol.dispose]; + if (async) inner = dispose; + } + if (typeof dispose !== "function") throw new TypeError("Object not disposable."); + if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; + env.stack.push({ value: value, dispose: dispose, async: async }); + } + else if (async) { + env.stack.push({ async: true }); + } + return value; + }; + + var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; + }; + + __disposeResources = function (env) { + function fail(e) { + env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e; + env.hasError = true; + } + var r, s = 0; + function next() { + while (r = env.stack.pop()) { + try { + if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next); + if (r.dispose) { + var result = r.dispose.call(r.value); + if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); + } + else s |= 1; + } + catch (e) { + fail(e); + } + } + if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve(); + if (env.hasError) throw env.error; + } + return next(); + }; + + __rewriteRelativeImportExtension = function (path, preserveJsx) { + if (typeof path === "string" && /^\.\.?\//.test(path)) { + return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) { + return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js"); + }); + } + return path; + }; + + exporter("__extends", __extends); + exporter("__assign", __assign); + exporter("__rest", __rest); + exporter("__decorate", __decorate); + exporter("__param", __param); + exporter("__esDecorate", __esDecorate); + exporter("__runInitializers", __runInitializers); + exporter("__propKey", __propKey); + exporter("__setFunctionName", __setFunctionName); + exporter("__metadata", __metadata); + exporter("__awaiter", __awaiter); + exporter("__generator", __generator); + exporter("__exportStar", __exportStar); + exporter("__createBinding", __createBinding); + exporter("__values", __values); + exporter("__read", __read); + exporter("__spread", __spread); + exporter("__spreadArrays", __spreadArrays); + exporter("__spreadArray", __spreadArray); + exporter("__await", __await); + exporter("__asyncGenerator", __asyncGenerator); + exporter("__asyncDelegator", __asyncDelegator); + exporter("__asyncValues", __asyncValues); + exporter("__makeTemplateObject", __makeTemplateObject); + exporter("__importStar", __importStar); + exporter("__importDefault", __importDefault); + exporter("__classPrivateFieldGet", __classPrivateFieldGet); + exporter("__classPrivateFieldSet", __classPrivateFieldSet); + exporter("__classPrivateFieldIn", __classPrivateFieldIn); + exporter("__addDisposableResource", __addDisposableResource); + exporter("__disposeResources", __disposeResources); + exporter("__rewriteRelativeImportExtension", __rewriteRelativeImportExtension); +}); + +0 && (module.exports = { + __extends: __extends, + __assign: __assign, + __rest: __rest, + __decorate: __decorate, + __param: __param, + __esDecorate: __esDecorate, + __runInitializers: __runInitializers, + __propKey: __propKey, + __setFunctionName: __setFunctionName, + __metadata: __metadata, + __awaiter: __awaiter, + __generator: __generator, + __exportStar: __exportStar, + __createBinding: __createBinding, + __values: __values, + __read: __read, + __spread: __spread, + __spreadArrays: __spreadArrays, + __spreadArray: __spreadArray, + __await: __await, + __asyncGenerator: __asyncGenerator, + __asyncDelegator: __asyncDelegator, + __asyncValues: __asyncValues, + __makeTemplateObject: __makeTemplateObject, + __importStar: __importStar, + __importDefault: __importDefault, + __classPrivateFieldGet: __classPrivateFieldGet, + __classPrivateFieldSet: __classPrivateFieldSet, + __classPrivateFieldIn: __classPrivateFieldIn, + __addDisposableResource: __addDisposableResource, + __disposeResources: __disposeResources, + __rewriteRelativeImportExtension: __rewriteRelativeImportExtension, +}); diff --git a/bff/node_modules/type-is/HISTORY.md b/bff/node_modules/type-is/HISTORY.md new file mode 100644 index 0000000..6812655 --- /dev/null +++ b/bff/node_modules/type-is/HISTORY.md @@ -0,0 +1,292 @@ +2.0.1 / 2025-03-27 +========== + +2.0.0 / 2024-08-31 +========== + + * Drop node <18 + * Use `content-type@^1.0.5` and `media-typer@^1.0.0` for type validation + - No behavior changes, upgrades `media-typer` + * deps: mime-types@^3.0.0 + - Add `application/toml` with extension `.toml` + - Add `application/ubjson` with extension `.ubj` + - Add `application/x-keepass2` with extension `.kdbx` + - Add deprecated iWorks mime types and extensions + - Add extension `.amr` to `audio/amr` + - Add extension `.cjs` to `application/node` + - Add extension `.dbf` to `application/vnd.dbf` + - Add extension `.m4s` to `video/iso.segment` + - Add extension `.mvt` to `application/vnd.mapbox-vector-tile` + - Add extension `.mxmf` to `audio/mobile-xmf` + - Add extension `.opus` to `audio/ogg` + - Add extension `.rar` to `application/vnd.rar` + - Add extension `.td` to `application/urc-targetdesc+xml` + - Add extension `.trig` to `application/trig` + - Add extensions from IANA for `application/*+xml` types + - Add `image/avif` with extension `.avif` + - Add `image/ktx2` with extension `.ktx2` + - Add `image/vnd.ms-dds` with extension `.dds` + - Add new upstream MIME types + - Fix extension of `application/vnd.apple.keynote` to be `.key` + - Remove ambigious extensions from IANA for `application/*+xml` types + - Update primary extension to `.es` for `application/ecmascript` + +1.6.18 / 2019-04-26 +=================== + + * Fix regression passing request object to `typeis.is` + +1.6.17 / 2019-04-25 +=================== + + * deps: mime-types@~2.1.24 + - Add Apple file extensions from IANA + - Add extension `.csl` to `application/vnd.citationstyles.style+xml` + - Add extension `.es` to `application/ecmascript` + - Add extension `.nq` to `application/n-quads` + - Add extension `.nt` to `application/n-triples` + - Add extension `.owl` to `application/rdf+xml` + - Add extensions `.siv` and `.sieve` to `application/sieve` + - Add extensions from IANA for `image/*` types + - Add extensions from IANA for `model/*` types + - Add extensions to HEIC image types + - Add new mime types + - Add `text/mdx` with extension `.mdx` + * perf: prevent internal `throw` on invalid type + +1.6.16 / 2018-02-16 +=================== + + * deps: mime-types@~2.1.18 + - Add `application/raml+yaml` with extension `.raml` + - Add `application/wasm` with extension `.wasm` + - Add `text/shex` with extension `.shex` + - Add extensions for JPEG-2000 images + - Add extensions from IANA for `message/*` types + - Add extension `.mjs` to `application/javascript` + - Add extension `.wadl` to `application/vnd.sun.wadl+xml` + - Add extension `.gz` to `application/gzip` + - Add glTF types and extensions + - Add new mime types + - Update extensions `.md` and `.markdown` to be `text/markdown` + - Update font MIME types + - Update `text/hjson` to registered `application/hjson` + +1.6.15 / 2017-03-31 +=================== + + * deps: mime-types@~2.1.15 + - Add new mime types + +1.6.14 / 2016-11-18 +=================== + + * deps: mime-types@~2.1.13 + - Add new mime types + +1.6.13 / 2016-05-18 +=================== + + * deps: mime-types@~2.1.11 + - Add new mime types + +1.6.12 / 2016-02-28 +=================== + + * deps: mime-types@~2.1.10 + - Add new mime types + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + +1.6.11 / 2016-01-29 +=================== + + * deps: mime-types@~2.1.9 + - Add new mime types + +1.6.10 / 2015-12-01 +=================== + + * deps: mime-types@~2.1.8 + - Add new mime types + +1.6.9 / 2015-09-27 +================== + + * deps: mime-types@~2.1.7 + - Add new mime types + +1.6.8 / 2015-09-04 +================== + + * deps: mime-types@~2.1.6 + - Add new mime types + +1.6.7 / 2015-08-20 +================== + + * Fix type error when given invalid type to match against + * deps: mime-types@~2.1.5 + - Add new mime types + +1.6.6 / 2015-07-31 +================== + + * deps: mime-types@~2.1.4 + - Add new mime types + +1.6.5 / 2015-07-16 +================== + + * deps: mime-types@~2.1.3 + - Add new mime types + +1.6.4 / 2015-07-01 +================== + + * deps: mime-types@~2.1.2 + - Add new mime types + * perf: enable strict mode + * perf: remove argument reassignment + +1.6.3 / 2015-06-08 +================== + + * deps: mime-types@~2.1.1 + - Add new mime types + * perf: reduce try block size + * perf: remove bitwise operations + +1.6.2 / 2015-05-10 +================== + + * deps: mime-types@~2.0.11 + - Add new mime types + +1.6.1 / 2015-03-13 +================== + + * deps: mime-types@~2.0.10 + - Add new mime types + +1.6.0 / 2015-02-12 +================== + + * fix false-positives in `hasBody` `Transfer-Encoding` check + * support wildcard for both type and subtype (`*/*`) + +1.5.7 / 2015-02-09 +================== + + * fix argument reassignment + * deps: mime-types@~2.0.9 + - Add new mime types + +1.5.6 / 2015-01-29 +================== + + * deps: mime-types@~2.0.8 + - Add new mime types + +1.5.5 / 2014-12-30 +================== + + * deps: mime-types@~2.0.7 + - Add new mime types + - Fix missing extensions + - Fix various invalid MIME type entries + - Remove example template MIME types + - deps: mime-db@~1.5.0 + +1.5.4 / 2014-12-10 +================== + + * deps: mime-types@~2.0.4 + - Add new mime types + - deps: mime-db@~1.3.0 + +1.5.3 / 2014-11-09 +================== + + * deps: mime-types@~2.0.3 + - Add new mime types + - deps: mime-db@~1.2.0 + +1.5.2 / 2014-09-28 +================== + + * deps: mime-types@~2.0.2 + - Add new mime types + - deps: mime-db@~1.1.0 + +1.5.1 / 2014-09-07 +================== + + * Support Node.js 0.6 + * deps: media-typer@0.3.0 + * deps: mime-types@~2.0.1 + - Support Node.js 0.6 + +1.5.0 / 2014-09-05 +================== + + * fix `hasbody` to be true for `content-length: 0` + +1.4.0 / 2014-09-02 +================== + + * update mime-types + +1.3.2 / 2014-06-24 +================== + + * use `~` range on mime-types + +1.3.1 / 2014-06-19 +================== + + * fix global variable leak + +1.3.0 / 2014-06-19 +================== + + * improve type parsing + + - invalid media type never matches + - media type not case-sensitive + - extra LWS does not affect results + +1.2.2 / 2014-06-19 +================== + + * fix behavior on unknown type argument + +1.2.1 / 2014-06-03 +================== + + * switch dependency from `mime` to `mime-types@1.0.0` + +1.2.0 / 2014-05-11 +================== + + * support suffix matching: + + - `+json` matches `application/vnd+json` + - `*/vnd+json` matches `application/vnd+json` + - `application/*+json` matches `application/vnd+json` + +1.1.0 / 2014-04-12 +================== + + * add non-array values support + * expose internal utilities: + + - `.is()` + - `.hasBody()` + - `.normalize()` + - `.match()` + +1.0.1 / 2014-03-30 +================== + + * add `multipart` as a shorthand diff --git a/bff/node_modules/type-is/LICENSE b/bff/node_modules/type-is/LICENSE new file mode 100644 index 0000000..386b7b6 --- /dev/null +++ b/bff/node_modules/type-is/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/type-is/README.md b/bff/node_modules/type-is/README.md new file mode 100644 index 0000000..d23946e --- /dev/null +++ b/bff/node_modules/type-is/README.md @@ -0,0 +1,198 @@ +# type-is + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][ci-image]][ci-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Infer the content-type of a request. + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install type-is +``` + +## API + +```js +var http = require('http') +var typeis = require('type-is') + +http.createServer(function (req, res) { + var istext = typeis(req, ['text/*']) + res.end('you ' + (istext ? 'sent' : 'did not send') + ' me text') +}) +``` + +### typeis(request, types) + +Checks if the `request` is one of the `types`. If the request has no body, +even if there is a `Content-Type` header, then `null` is returned. If the +`Content-Type` header is invalid or does not matches any of the `types`, then +`false` is returned. Otherwise, a string of the type that matched is returned. + +The `request` argument is expected to be a Node.js HTTP request. The `types` +argument is an array of type strings. + +Each type in the `types` array can be one of the following: + +- A file extension name such as `json`. This name will be returned if matched. +- A mime type such as `application/json`. +- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. + The full mime type will be returned if matched. +- A suffix such as `+json`. This can be combined with a wildcard such as + `*/vnd+json` or `application/*+json`. The full mime type will be returned + if matched. + +Some examples to illustrate the inputs and returned value: + +```js +// req.headers.content-type = 'application/json' + +typeis(req, ['json']) // => 'json' +typeis(req, ['html', 'json']) // => 'json' +typeis(req, ['application/*']) // => 'application/json' +typeis(req, ['application/json']) // => 'application/json' + +typeis(req, ['html']) // => false +``` + +### typeis.hasBody(request) + +Returns a Boolean if the given `request` has a body, regardless of the +`Content-Type` header. + +Having a body has no relation to how large the body is (it may be 0 bytes). +This is similar to how file existence works. If a body does exist, then this +indicates that there is data to read from the Node.js request stream. + +```js +if (typeis.hasBody(req)) { + // read the body, since there is one + + req.on('data', function (chunk) { + // ... + }) +} +``` + +### typeis.is(mediaType, types) + +Checks if the `mediaType` is one of the `types`. If the `mediaType` is invalid +or does not matches any of the `types`, then `false` is returned. Otherwise, a +string of the type that matched is returned. + +The `mediaType` argument is expected to be a +[media type](https://tools.ietf.org/html/rfc6838) string. The `types` argument +is an array of type strings. + +Each type in the `types` array can be one of the following: + +- A file extension name such as `json`. This name will be returned if matched. +- A mime type such as `application/json`. +- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. + The full mime type will be returned if matched. +- A suffix such as `+json`. This can be combined with a wildcard such as + `*/vnd+json` or `application/*+json`. The full mime type will be returned + if matched. + +Some examples to illustrate the inputs and returned value: + +```js +var mediaType = 'application/json' + +typeis.is(mediaType, ['json']) // => 'json' +typeis.is(mediaType, ['html', 'json']) // => 'json' +typeis.is(mediaType, ['application/*']) // => 'application/json' +typeis.is(mediaType, ['application/json']) // => 'application/json' + +typeis.is(mediaType, ['html']) // => false +``` + +### typeis.match(expected, actual) + +Match the type string `expected` with `actual`, taking in to account wildcards. +A wildcard can only be in the type of the subtype part of a media type and only +in the `expected` value (as `actual` should be the real media type to match). A +suffix can still be included even with a wildcard subtype. If an input is +malformed, `false` will be returned. + +```js +typeis.match('text/html', 'text/html') // => true +typeis.match('*/html', 'text/html') // => true +typeis.match('text/*', 'text/html') // => true +typeis.match('*/*', 'text/html') // => true +typeis.match('*/*+json', 'application/x-custom+json') // => true +``` + +### typeis.normalize(type) + +Normalize a `type` string. This works by performing the following: + +- If the `type` is not a string, `false` is returned. +- If the string starts with `+` (so it is a `+suffix` shorthand like `+json`), + then it is expanded to contain the complete wildcard notation of `*/*+suffix`. +- If the string contains a `/`, then it is returned as the type. +- Else the string is assumed to be a file extension and the mapped media type is + returned, or `false` is there is no mapping. + +This includes two special mappings: + +- `'multipart'` -> `'multipart/*'` +- `'urlencoded'` -> `'application/x-www-form-urlencoded'` + +## Examples + +### Example body parser + +```js +var express = require('express') +var typeis = require('type-is') + +var app = express() + +app.use(function bodyParser (req, res, next) { + if (!typeis.hasBody(req)) { + return next() + } + + switch (typeis(req, ['urlencoded', 'json', 'multipart'])) { + case 'urlencoded': + // parse urlencoded body + throw new Error('implement urlencoded body parsing') + case 'json': + // parse json body + throw new Error('implement json body parsing') + case 'multipart': + // parse multipart body + throw new Error('implement multipart body parsing') + default: + // 415 error code + res.statusCode = 415 + res.end() + break + } +}) +``` + +## License + +[MIT](LICENSE) + +[ci-image]: https://badgen.net/github/checks/jshttp/type-is/master?label=ci +[ci-url]: https://github.com/jshttp/type-is/actions/workflows/ci.yml +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/type-is/master +[coveralls-url]: https://coveralls.io/r/jshttp/type-is?branch=master +[node-version-image]: https://badgen.net/npm/node/type-is +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/type-is +[npm-url]: https://npmjs.org/package/type-is +[npm-version-image]: https://badgen.net/npm/v/type-is +[travis-image]: https://badgen.net/travis/jshttp/type-is/master +[travis-url]: https://travis-ci.org/jshttp/type-is diff --git a/bff/node_modules/type-is/index.js b/bff/node_modules/type-is/index.js new file mode 100644 index 0000000..e773845 --- /dev/null +++ b/bff/node_modules/type-is/index.js @@ -0,0 +1,250 @@ +/*! + * type-is + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var contentType = require('content-type') +var mime = require('mime-types') +var typer = require('media-typer') + +/** + * Module exports. + * @public + */ + +module.exports = typeofrequest +module.exports.is = typeis +module.exports.hasBody = hasbody +module.exports.normalize = normalize +module.exports.match = mimeMatch + +/** + * Compare a `value` content-type with `types`. + * Each `type` can be an extension like `html`, + * a special shortcut like `multipart` or `urlencoded`, + * or a mime type. + * + * If no types match, `false` is returned. + * Otherwise, the first `type` that matches is returned. + * + * @param {String} value + * @param {Array} types + * @public + */ + +function typeis (value, types_) { + var i + var types = types_ + + // remove parameters and normalize + var val = tryNormalizeType(value) + + // no type or invalid + if (!val) { + return false + } + + // support flattened arguments + if (types && !Array.isArray(types)) { + types = new Array(arguments.length - 1) + for (i = 0; i < types.length; i++) { + types[i] = arguments[i + 1] + } + } + + // no types, return the content type + if (!types || !types.length) { + return val + } + + var type + for (i = 0; i < types.length; i++) { + if (mimeMatch(normalize(type = types[i]), val)) { + return type[0] === '+' || type.indexOf('*') !== -1 + ? val + : type + } + } + + // no matches + return false +} + +/** + * Check if a request has a request body. + * A request with a body __must__ either have `transfer-encoding` + * or `content-length` headers set. + * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3 + * + * @param {Object} request + * @return {Boolean} + * @public + */ + +function hasbody (req) { + return req.headers['transfer-encoding'] !== undefined || + !isNaN(req.headers['content-length']) +} + +/** + * Check if the incoming request contains the "Content-Type" + * header field, and it contains any of the give mime `type`s. + * If there is no request body, `null` is returned. + * If there is no content type, `false` is returned. + * Otherwise, it returns the first `type` that matches. + * + * Examples: + * + * // With Content-Type: text/html; charset=utf-8 + * this.is('html'); // => 'html' + * this.is('text/html'); // => 'text/html' + * this.is('text/*', 'application/json'); // => 'text/html' + * + * // When Content-Type is application/json + * this.is('json', 'urlencoded'); // => 'json' + * this.is('application/json'); // => 'application/json' + * this.is('html', 'application/*'); // => 'application/json' + * + * this.is('html'); // => false + * + * @param {Object} req + * @param {(String|Array)} types... + * @return {(String|false|null)} + * @public + */ + +function typeofrequest (req, types_) { + // no body + if (!hasbody(req)) return null + // support flattened arguments + var types = arguments.length > 2 + ? Array.prototype.slice.call(arguments, 1) + : types_ + // request content type + var value = req.headers['content-type'] + + return typeis(value, types) +} + +/** + * Normalize a mime type. + * If it's a shorthand, expand it to a valid mime type. + * + * In general, you probably want: + * + * var type = is(req, ['urlencoded', 'json', 'multipart']); + * + * Then use the appropriate body parsers. + * These three are the most common request body types + * and are thus ensured to work. + * + * @param {String} type + * @return {String|false|null} + * @public + */ + +function normalize (type) { + if (typeof type !== 'string') { + // invalid type + return false + } + + switch (type) { + case 'urlencoded': + return 'application/x-www-form-urlencoded' + case 'multipart': + return 'multipart/*' + } + + if (type[0] === '+') { + // "+json" -> "*/*+json" expando + return '*/*' + type + } + + return type.indexOf('/') === -1 + ? mime.lookup(type) + : type +} + +/** + * Check if `expected` mime type + * matches `actual` mime type with + * wildcard and +suffix support. + * + * @param {String} expected + * @param {String} actual + * @return {Boolean} + * @public + */ + +function mimeMatch (expected, actual) { + // invalid type + if (expected === false) { + return false + } + + // split types + var actualParts = actual.split('/') + var expectedParts = expected.split('/') + + // invalid format + if (actualParts.length !== 2 || expectedParts.length !== 2) { + return false + } + + // validate type + if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) { + return false + } + + // validate suffix wildcard + if (expectedParts[1].slice(0, 2) === '*+') { + return expectedParts[1].length <= actualParts[1].length + 1 && + expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length) + } + + // validate subtype + if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) { + return false + } + + return true +} + +/** + * Normalize a type and remove parameters. + * + * @param {string} value + * @return {(string|null)} + * @private + */ +function normalizeType (value) { + // Parse the type + var type = contentType.parse(value).type + + return typer.test(type) ? type : null +} + +/** + * Try to normalize a type and remove parameters. + * + * @param {string} value + * @return {(string|null)} + * @private + */ +function tryNormalizeType (value) { + try { + return value ? normalizeType(value) : null + } catch (err) { + return null + } +} diff --git a/bff/node_modules/type-is/package.json b/bff/node_modules/type-is/package.json new file mode 100644 index 0000000..08586d2 --- /dev/null +++ b/bff/node_modules/type-is/package.json @@ -0,0 +1,47 @@ +{ + "name": "type-is", + "description": "Infer the content-type of a request.", + "version": "2.0.1", + "contributors": [ + "Douglas Christopher Wilson ", + "Jonathan Ong (http://jongleberry.com)" + ], + "license": "MIT", + "repository": "jshttp/type-is", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.1", + "nyc": "15.1.0" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test:debug": "mocha --reporter spec --check-leaks --inspect --inspect-brk test/", + "test-ci": "nyc --reporter=lcovonly --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + }, + "keywords": [ + "content", + "type", + "checking" + ] +} diff --git a/bff/node_modules/typedarray/.travis.yml b/bff/node_modules/typedarray/.travis.yml new file mode 100644 index 0000000..cc4dba2 --- /dev/null +++ b/bff/node_modules/typedarray/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/bff/node_modules/typedarray/LICENSE b/bff/node_modules/typedarray/LICENSE new file mode 100644 index 0000000..11adfae --- /dev/null +++ b/bff/node_modules/typedarray/LICENSE @@ -0,0 +1,35 @@ +/* + Copyright (c) 2010, Linden Research, Inc. + Copyright (c) 2012, Joshua Bell + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + $/LicenseInfo$ + */ + +// Original can be found at: +// https://bitbucket.org/lindenlab/llsd +// Modifications by Joshua Bell inexorabletash@gmail.com +// https://github.com/inexorabletash/polyfill + +// ES3/ES5 implementation of the Krhonos Typed Array Specification +// Ref: http://www.khronos.org/registry/typedarray/specs/latest/ +// Date: 2011-02-01 +// +// Variations: +// * Allows typed_array.get/set() as alias for subscripts (typed_array[]) diff --git a/bff/node_modules/typedarray/example/tarray.js b/bff/node_modules/typedarray/example/tarray.js new file mode 100644 index 0000000..8423d7c --- /dev/null +++ b/bff/node_modules/typedarray/example/tarray.js @@ -0,0 +1,4 @@ +var Uint8Array = require('../').Uint8Array; +var ua = new Uint8Array(5); +ua[1] = 256 + 55; +console.log(ua[1]); diff --git a/bff/node_modules/typedarray/index.js b/bff/node_modules/typedarray/index.js new file mode 100644 index 0000000..5e54084 --- /dev/null +++ b/bff/node_modules/typedarray/index.js @@ -0,0 +1,630 @@ +var undefined = (void 0); // Paranoia + +// Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to +// create, and consume so much memory, that the browser appears frozen. +var MAX_ARRAY_LENGTH = 1e5; + +// Approximations of internal ECMAScript conversion functions +var ECMAScript = (function() { + // Stash a copy in case other scripts modify these + var opts = Object.prototype.toString, + ophop = Object.prototype.hasOwnProperty; + + return { + // Class returns internal [[Class]] property, used to avoid cross-frame instanceof issues: + Class: function(v) { return opts.call(v).replace(/^\[object *|\]$/g, ''); }, + HasProperty: function(o, p) { return p in o; }, + HasOwnProperty: function(o, p) { return ophop.call(o, p); }, + IsCallable: function(o) { return typeof o === 'function'; }, + ToInt32: function(v) { return v >> 0; }, + ToUint32: function(v) { return v >>> 0; } + }; +}()); + +// Snapshot intrinsics +var LN2 = Math.LN2, + abs = Math.abs, + floor = Math.floor, + log = Math.log, + min = Math.min, + pow = Math.pow, + round = Math.round; + +// ES5: lock down object properties +function configureProperties(obj) { + if (getOwnPropNames && defineProp) { + var props = getOwnPropNames(obj), i; + for (i = 0; i < props.length; i += 1) { + defineProp(obj, props[i], { + value: obj[props[i]], + writable: false, + enumerable: false, + configurable: false + }); + } + } +} + +// emulate ES5 getter/setter API using legacy APIs +// http://blogs.msdn.com/b/ie/archive/2010/09/07/transitioning-existing-code-to-the-es5-getter-setter-apis.aspx +// (second clause tests for Object.defineProperty() in IE<9 that only supports extending DOM prototypes, but +// note that IE<9 does not support __defineGetter__ or __defineSetter__ so it just renders the method harmless) +var defineProp +if (Object.defineProperty && (function() { + try { + Object.defineProperty({}, 'x', {}); + return true; + } catch (e) { + return false; + } + })()) { + defineProp = Object.defineProperty; +} else { + defineProp = function(o, p, desc) { + if (!o === Object(o)) throw new TypeError("Object.defineProperty called on non-object"); + if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) { Object.prototype.__defineGetter__.call(o, p, desc.get); } + if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) { Object.prototype.__defineSetter__.call(o, p, desc.set); } + if (ECMAScript.HasProperty(desc, 'value')) { o[p] = desc.value; } + return o; + }; +} + +var getOwnPropNames = Object.getOwnPropertyNames || function (o) { + if (o !== Object(o)) throw new TypeError("Object.getOwnPropertyNames called on non-object"); + var props = [], p; + for (p in o) { + if (ECMAScript.HasOwnProperty(o, p)) { + props.push(p); + } + } + return props; +}; + +// ES5: Make obj[index] an alias for obj._getter(index)/obj._setter(index, value) +// for index in 0 ... obj.length +function makeArrayAccessors(obj) { + if (!defineProp) { return; } + + if (obj.length > MAX_ARRAY_LENGTH) throw new RangeError("Array too large for polyfill"); + + function makeArrayAccessor(index) { + defineProp(obj, index, { + 'get': function() { return obj._getter(index); }, + 'set': function(v) { obj._setter(index, v); }, + enumerable: true, + configurable: false + }); + } + + var i; + for (i = 0; i < obj.length; i += 1) { + makeArrayAccessor(i); + } +} + +// Internal conversion functions: +// pack() - take a number (interpreted as Type), output a byte array +// unpack() - take a byte array, output a Type-like number + +function as_signed(value, bits) { var s = 32 - bits; return (value << s) >> s; } +function as_unsigned(value, bits) { var s = 32 - bits; return (value << s) >>> s; } + +function packI8(n) { return [n & 0xff]; } +function unpackI8(bytes) { return as_signed(bytes[0], 8); } + +function packU8(n) { return [n & 0xff]; } +function unpackU8(bytes) { return as_unsigned(bytes[0], 8); } + +function packU8Clamped(n) { n = round(Number(n)); return [n < 0 ? 0 : n > 0xff ? 0xff : n & 0xff]; } + +function packI16(n) { return [(n >> 8) & 0xff, n & 0xff]; } +function unpackI16(bytes) { return as_signed(bytes[0] << 8 | bytes[1], 16); } + +function packU16(n) { return [(n >> 8) & 0xff, n & 0xff]; } +function unpackU16(bytes) { return as_unsigned(bytes[0] << 8 | bytes[1], 16); } + +function packI32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } +function unpackI32(bytes) { return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } + +function packU32(n) { return [(n >> 24) & 0xff, (n >> 16) & 0xff, (n >> 8) & 0xff, n & 0xff]; } +function unpackU32(bytes) { return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32); } + +function packIEEE754(v, ebits, fbits) { + + var bias = (1 << (ebits - 1)) - 1, + s, e, f, ln, + i, bits, str, bytes; + + function roundToEven(n) { + var w = floor(n), f = n - w; + if (f < 0.5) + return w; + if (f > 0.5) + return w + 1; + return w % 2 ? w + 1 : w; + } + + // Compute sign, exponent, fraction + if (v !== v) { + // NaN + // http://dev.w3.org/2006/webapi/WebIDL/#es-type-mapping + e = (1 << ebits) - 1; f = pow(2, fbits - 1); s = 0; + } else if (v === Infinity || v === -Infinity) { + e = (1 << ebits) - 1; f = 0; s = (v < 0) ? 1 : 0; + } else if (v === 0) { + e = 0; f = 0; s = (1 / v === -Infinity) ? 1 : 0; + } else { + s = v < 0; + v = abs(v); + + if (v >= pow(2, 1 - bias)) { + e = min(floor(log(v) / LN2), 1023); + f = roundToEven(v / pow(2, e) * pow(2, fbits)); + if (f / pow(2, fbits) >= 2) { + e = e + 1; + f = 1; + } + if (e > bias) { + // Overflow + e = (1 << ebits) - 1; + f = 0; + } else { + // Normalized + e = e + bias; + f = f - pow(2, fbits); + } + } else { + // Denormalized + e = 0; + f = roundToEven(v / pow(2, 1 - bias - fbits)); + } + } + + // Pack sign, exponent, fraction + bits = []; + for (i = fbits; i; i -= 1) { bits.push(f % 2 ? 1 : 0); f = floor(f / 2); } + for (i = ebits; i; i -= 1) { bits.push(e % 2 ? 1 : 0); e = floor(e / 2); } + bits.push(s ? 1 : 0); + bits.reverse(); + str = bits.join(''); + + // Bits to bytes + bytes = []; + while (str.length) { + bytes.push(parseInt(str.substring(0, 8), 2)); + str = str.substring(8); + } + return bytes; +} + +function unpackIEEE754(bytes, ebits, fbits) { + + // Bytes to bits + var bits = [], i, j, b, str, + bias, s, e, f; + + for (i = bytes.length; i; i -= 1) { + b = bytes[i - 1]; + for (j = 8; j; j -= 1) { + bits.push(b % 2 ? 1 : 0); b = b >> 1; + } + } + bits.reverse(); + str = bits.join(''); + + // Unpack sign, exponent, fraction + bias = (1 << (ebits - 1)) - 1; + s = parseInt(str.substring(0, 1), 2) ? -1 : 1; + e = parseInt(str.substring(1, 1 + ebits), 2); + f = parseInt(str.substring(1 + ebits), 2); + + // Produce number + if (e === (1 << ebits) - 1) { + return f !== 0 ? NaN : s * Infinity; + } else if (e > 0) { + // Normalized + return s * pow(2, e - bias) * (1 + f / pow(2, fbits)); + } else if (f !== 0) { + // Denormalized + return s * pow(2, -(bias - 1)) * (f / pow(2, fbits)); + } else { + return s < 0 ? -0 : 0; + } +} + +function unpackF64(b) { return unpackIEEE754(b, 11, 52); } +function packF64(v) { return packIEEE754(v, 11, 52); } +function unpackF32(b) { return unpackIEEE754(b, 8, 23); } +function packF32(v) { return packIEEE754(v, 8, 23); } + + +// +// 3 The ArrayBuffer Type +// + +(function() { + + /** @constructor */ + var ArrayBuffer = function ArrayBuffer(length) { + length = ECMAScript.ToInt32(length); + if (length < 0) throw new RangeError('ArrayBuffer size is not a small enough positive integer'); + + this.byteLength = length; + this._bytes = []; + this._bytes.length = length; + + var i; + for (i = 0; i < this.byteLength; i += 1) { + this._bytes[i] = 0; + } + + configureProperties(this); + }; + + exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer; + + // + // 4 The ArrayBufferView Type + // + + // NOTE: this constructor is not exported + /** @constructor */ + var ArrayBufferView = function ArrayBufferView() { + //this.buffer = null; + //this.byteOffset = 0; + //this.byteLength = 0; + }; + + // + // 5 The Typed Array View Types + // + + function makeConstructor(bytesPerElement, pack, unpack) { + // Each TypedArray type requires a distinct constructor instance with + // identical logic, which this produces. + + var ctor; + ctor = function(buffer, byteOffset, length) { + var array, sequence, i, s; + + if (!arguments.length || typeof arguments[0] === 'number') { + // Constructor(unsigned long length) + this.length = ECMAScript.ToInt32(arguments[0]); + if (length < 0) throw new RangeError('ArrayBufferView size is not a small enough positive integer'); + + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + this.buffer = new ArrayBuffer(this.byteLength); + this.byteOffset = 0; + } else if (typeof arguments[0] === 'object' && arguments[0].constructor === ctor) { + // Constructor(TypedArray array) + array = arguments[0]; + + this.length = array.length; + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + this.buffer = new ArrayBuffer(this.byteLength); + this.byteOffset = 0; + + for (i = 0; i < this.length; i += 1) { + this._setter(i, array._getter(i)); + } + } else if (typeof arguments[0] === 'object' && + !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { + // Constructor(sequence array) + sequence = arguments[0]; + + this.length = ECMAScript.ToUint32(sequence.length); + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + this.buffer = new ArrayBuffer(this.byteLength); + this.byteOffset = 0; + + for (i = 0; i < this.length; i += 1) { + s = sequence[i]; + this._setter(i, Number(s)); + } + } else if (typeof arguments[0] === 'object' && + (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) { + // Constructor(ArrayBuffer buffer, + // optional unsigned long byteOffset, optional unsigned long length) + this.buffer = buffer; + + this.byteOffset = ECMAScript.ToUint32(byteOffset); + if (this.byteOffset > this.buffer.byteLength) { + throw new RangeError("byteOffset out of range"); + } + + if (this.byteOffset % this.BYTES_PER_ELEMENT) { + // The given byteOffset must be a multiple of the element + // size of the specific type, otherwise an exception is raised. + throw new RangeError("ArrayBuffer length minus the byteOffset is not a multiple of the element size."); + } + + if (arguments.length < 3) { + this.byteLength = this.buffer.byteLength - this.byteOffset; + + if (this.byteLength % this.BYTES_PER_ELEMENT) { + throw new RangeError("length of buffer minus byteOffset not a multiple of the element size"); + } + this.length = this.byteLength / this.BYTES_PER_ELEMENT; + } else { + this.length = ECMAScript.ToUint32(length); + this.byteLength = this.length * this.BYTES_PER_ELEMENT; + } + + if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { + throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); + } + } else { + throw new TypeError("Unexpected argument type(s)"); + } + + this.constructor = ctor; + + configureProperties(this); + makeArrayAccessors(this); + }; + + ctor.prototype = new ArrayBufferView(); + ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement; + ctor.prototype._pack = pack; + ctor.prototype._unpack = unpack; + ctor.BYTES_PER_ELEMENT = bytesPerElement; + + // getter type (unsigned long index); + ctor.prototype._getter = function(index) { + if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); + + index = ECMAScript.ToUint32(index); + if (index >= this.length) { + return undefined; + } + + var bytes = [], i, o; + for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; + i < this.BYTES_PER_ELEMENT; + i += 1, o += 1) { + bytes.push(this.buffer._bytes[o]); + } + return this._unpack(bytes); + }; + + // NONSTANDARD: convenience alias for getter: type get(unsigned long index); + ctor.prototype.get = ctor.prototype._getter; + + // setter void (unsigned long index, type value); + ctor.prototype._setter = function(index, value) { + if (arguments.length < 2) throw new SyntaxError("Not enough arguments"); + + index = ECMAScript.ToUint32(index); + if (index >= this.length) { + return undefined; + } + + var bytes = this._pack(value), i, o; + for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; + i < this.BYTES_PER_ELEMENT; + i += 1, o += 1) { + this.buffer._bytes[o] = bytes[i]; + } + }; + + // void set(TypedArray array, optional unsigned long offset); + // void set(sequence array, optional unsigned long offset); + ctor.prototype.set = function(index, value) { + if (arguments.length < 1) throw new SyntaxError("Not enough arguments"); + var array, sequence, offset, len, + i, s, d, + byteOffset, byteLength, tmp; + + if (typeof arguments[0] === 'object' && arguments[0].constructor === this.constructor) { + // void set(TypedArray array, optional unsigned long offset); + array = arguments[0]; + offset = ECMAScript.ToUint32(arguments[1]); + + if (offset + array.length > this.length) { + throw new RangeError("Offset plus length of array is out of range"); + } + + byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT; + byteLength = array.length * this.BYTES_PER_ELEMENT; + + if (array.buffer === this.buffer) { + tmp = []; + for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) { + tmp[i] = array.buffer._bytes[s]; + } + for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) { + this.buffer._bytes[d] = tmp[i]; + } + } else { + for (i = 0, s = array.byteOffset, d = byteOffset; + i < byteLength; i += 1, s += 1, d += 1) { + this.buffer._bytes[d] = array.buffer._bytes[s]; + } + } + } else if (typeof arguments[0] === 'object' && typeof arguments[0].length !== 'undefined') { + // void set(sequence array, optional unsigned long offset); + sequence = arguments[0]; + len = ECMAScript.ToUint32(sequence.length); + offset = ECMAScript.ToUint32(arguments[1]); + + if (offset + len > this.length) { + throw new RangeError("Offset plus length of array is out of range"); + } + + for (i = 0; i < len; i += 1) { + s = sequence[i]; + this._setter(offset + i, Number(s)); + } + } else { + throw new TypeError("Unexpected argument type(s)"); + } + }; + + // TypedArray subarray(long begin, optional long end); + ctor.prototype.subarray = function(start, end) { + function clamp(v, min, max) { return v < min ? min : v > max ? max : v; } + + start = ECMAScript.ToInt32(start); + end = ECMAScript.ToInt32(end); + + if (arguments.length < 1) { start = 0; } + if (arguments.length < 2) { end = this.length; } + + if (start < 0) { start = this.length + start; } + if (end < 0) { end = this.length + end; } + + start = clamp(start, 0, this.length); + end = clamp(end, 0, this.length); + + var len = end - start; + if (len < 0) { + len = 0; + } + + return new this.constructor( + this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len); + }; + + return ctor; + } + + var Int8Array = makeConstructor(1, packI8, unpackI8); + var Uint8Array = makeConstructor(1, packU8, unpackU8); + var Uint8ClampedArray = makeConstructor(1, packU8Clamped, unpackU8); + var Int16Array = makeConstructor(2, packI16, unpackI16); + var Uint16Array = makeConstructor(2, packU16, unpackU16); + var Int32Array = makeConstructor(4, packI32, unpackI32); + var Uint32Array = makeConstructor(4, packU32, unpackU32); + var Float32Array = makeConstructor(4, packF32, unpackF32); + var Float64Array = makeConstructor(8, packF64, unpackF64); + + exports.Int8Array = exports.Int8Array || Int8Array; + exports.Uint8Array = exports.Uint8Array || Uint8Array; + exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray; + exports.Int16Array = exports.Int16Array || Int16Array; + exports.Uint16Array = exports.Uint16Array || Uint16Array; + exports.Int32Array = exports.Int32Array || Int32Array; + exports.Uint32Array = exports.Uint32Array || Uint32Array; + exports.Float32Array = exports.Float32Array || Float32Array; + exports.Float64Array = exports.Float64Array || Float64Array; +}()); + +// +// 6 The DataView View Type +// + +(function() { + function r(array, index) { + return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index]; + } + + var IS_BIG_ENDIAN = (function() { + var u16array = new(exports.Uint16Array)([0x1234]), + u8array = new(exports.Uint8Array)(u16array.buffer); + return r(u8array, 0) === 0x12; + }()); + + // Constructor(ArrayBuffer buffer, + // optional unsigned long byteOffset, + // optional unsigned long byteLength) + /** @constructor */ + var DataView = function DataView(buffer, byteOffset, byteLength) { + if (arguments.length === 0) { + buffer = new exports.ArrayBuffer(0); + } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) { + throw new TypeError("TypeError"); + } + + this.buffer = buffer || new exports.ArrayBuffer(0); + + this.byteOffset = ECMAScript.ToUint32(byteOffset); + if (this.byteOffset > this.buffer.byteLength) { + throw new RangeError("byteOffset out of range"); + } + + if (arguments.length < 3) { + this.byteLength = this.buffer.byteLength - this.byteOffset; + } else { + this.byteLength = ECMAScript.ToUint32(byteLength); + } + + if ((this.byteOffset + this.byteLength) > this.buffer.byteLength) { + throw new RangeError("byteOffset and length reference an area beyond the end of the buffer"); + } + + configureProperties(this); + }; + + function makeGetter(arrayType) { + return function(byteOffset, littleEndian) { + + byteOffset = ECMAScript.ToUint32(byteOffset); + + if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { + throw new RangeError("Array index out of range"); + } + byteOffset += this.byteOffset; + + var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), + bytes = [], i; + for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { + bytes.push(r(uint8Array, i)); + } + + if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { + bytes.reverse(); + } + + return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0); + }; + } + + DataView.prototype.getUint8 = makeGetter(exports.Uint8Array); + DataView.prototype.getInt8 = makeGetter(exports.Int8Array); + DataView.prototype.getUint16 = makeGetter(exports.Uint16Array); + DataView.prototype.getInt16 = makeGetter(exports.Int16Array); + DataView.prototype.getUint32 = makeGetter(exports.Uint32Array); + DataView.prototype.getInt32 = makeGetter(exports.Int32Array); + DataView.prototype.getFloat32 = makeGetter(exports.Float32Array); + DataView.prototype.getFloat64 = makeGetter(exports.Float64Array); + + function makeSetter(arrayType) { + return function(byteOffset, value, littleEndian) { + + byteOffset = ECMAScript.ToUint32(byteOffset); + if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) { + throw new RangeError("Array index out of range"); + } + + // Get bytes + var typeArray = new arrayType([value]), + byteArray = new exports.Uint8Array(typeArray.buffer), + bytes = [], i, byteView; + + for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) { + bytes.push(r(byteArray, i)); + } + + // Flip if necessary + if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) { + bytes.reverse(); + } + + // Write them + byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT); + byteView.set(bytes); + }; + } + + DataView.prototype.setUint8 = makeSetter(exports.Uint8Array); + DataView.prototype.setInt8 = makeSetter(exports.Int8Array); + DataView.prototype.setUint16 = makeSetter(exports.Uint16Array); + DataView.prototype.setInt16 = makeSetter(exports.Int16Array); + DataView.prototype.setUint32 = makeSetter(exports.Uint32Array); + DataView.prototype.setInt32 = makeSetter(exports.Int32Array); + DataView.prototype.setFloat32 = makeSetter(exports.Float32Array); + DataView.prototype.setFloat64 = makeSetter(exports.Float64Array); + + exports.DataView = exports.DataView || DataView; + +}()); diff --git a/bff/node_modules/typedarray/package.json b/bff/node_modules/typedarray/package.json new file mode 100644 index 0000000..a7854a0 --- /dev/null +++ b/bff/node_modules/typedarray/package.json @@ -0,0 +1,55 @@ +{ + "name": "typedarray", + "version": "0.0.6", + "description": "TypedArray polyfill for old browsers", + "main": "index.js", + "devDependencies": { + "tape": "~2.3.2" + }, + "scripts": { + "test": "tape test/*.js test/server/*.js" + }, + "repository": { + "type": "git", + "url": "git://github.com/substack/typedarray.git" + }, + "homepage": "https://github.com/substack/typedarray", + "keywords": [ + "ArrayBuffer", + "DataView", + "Float32Array", + "Float64Array", + "Int8Array", + "Int16Array", + "Int32Array", + "Uint8Array", + "Uint8ClampedArray", + "Uint16Array", + "Uint32Array", + "typed", + "array", + "polyfill" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "license": "MIT", + "testling": { + "files": "test/*.js", + "browsers": [ + "ie/6..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + } +} diff --git a/bff/node_modules/typedarray/readme.markdown b/bff/node_modules/typedarray/readme.markdown new file mode 100644 index 0000000..d18f6f7 --- /dev/null +++ b/bff/node_modules/typedarray/readme.markdown @@ -0,0 +1,61 @@ +# typedarray + +TypedArray polyfill ripped from [this +module](https://raw.github.com/inexorabletash/polyfill). + +[![build status](https://secure.travis-ci.org/substack/typedarray.png)](http://travis-ci.org/substack/typedarray) + +[![testling badge](https://ci.testling.com/substack/typedarray.png)](https://ci.testling.com/substack/typedarray) + +# example + +``` js +var Uint8Array = require('typedarray').Uint8Array; +var ua = new Uint8Array(5); +ua[1] = 256 + 55; +console.log(ua[1]); +``` + +output: + +``` +55 +``` + +# methods + +``` js +var TA = require('typedarray') +``` + +The `TA` object has the following constructors: + +* TA.ArrayBuffer +* TA.DataView +* TA.Float32Array +* TA.Float64Array +* TA.Int8Array +* TA.Int16Array +* TA.Int32Array +* TA.Uint8Array +* TA.Uint8ClampedArray +* TA.Uint16Array +* TA.Uint32Array + +# install + +With [npm](https://npmjs.org) do: + +``` +npm install typedarray +``` + +To use this module in the browser, compile with +[browserify](http://browserify.org) +or download a UMD build from browserify CDN: + +http://wzrd.in/standalone/typedarray@latest + +# license + +MIT diff --git a/bff/node_modules/typedarray/test/server/undef_globals.js b/bff/node_modules/typedarray/test/server/undef_globals.js new file mode 100644 index 0000000..425950f --- /dev/null +++ b/bff/node_modules/typedarray/test/server/undef_globals.js @@ -0,0 +1,19 @@ +var test = require('tape'); +var vm = require('vm'); +var fs = require('fs'); +var src = fs.readFileSync(__dirname + '/../../index.js', 'utf8'); + +test('u8a without globals', function (t) { + var c = { + module: { exports: {} }, + }; + c.exports = c.module.exports; + vm.runInNewContext(src, c); + var TA = c.module.exports; + var ua = new(TA.Uint8Array)(5); + + t.equal(ua.length, 5); + ua[1] = 256 + 55; + t.equal(ua[1], 55); + t.end(); +}); diff --git a/bff/node_modules/typedarray/test/tarray.js b/bff/node_modules/typedarray/test/tarray.js new file mode 100644 index 0000000..df596a3 --- /dev/null +++ b/bff/node_modules/typedarray/test/tarray.js @@ -0,0 +1,10 @@ +var TA = require('../'); +var test = require('tape'); + +test('tiny u8a test', function (t) { + var ua = new(TA.Uint8Array)(5); + t.equal(ua.length, 5); + ua[1] = 256 + 55; + t.equal(ua[1], 55); + t.end(); +}); diff --git a/bff/node_modules/unpipe/HISTORY.md b/bff/node_modules/unpipe/HISTORY.md new file mode 100644 index 0000000..85e0f8d --- /dev/null +++ b/bff/node_modules/unpipe/HISTORY.md @@ -0,0 +1,4 @@ +1.0.0 / 2015-06-14 +================== + + * Initial release diff --git a/bff/node_modules/unpipe/LICENSE b/bff/node_modules/unpipe/LICENSE new file mode 100644 index 0000000..aed0138 --- /dev/null +++ b/bff/node_modules/unpipe/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/unpipe/README.md b/bff/node_modules/unpipe/README.md new file mode 100644 index 0000000..e536ad2 --- /dev/null +++ b/bff/node_modules/unpipe/README.md @@ -0,0 +1,43 @@ +# unpipe + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-image]][node-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Unpipe a stream from all destinations. + +## Installation + +```sh +$ npm install unpipe +``` + +## API + +```js +var unpipe = require('unpipe') +``` + +### unpipe(stream) + +Unpipes all destinations from a given stream. With stream 2+, this is +equivalent to `stream.unpipe()`. When used with streams 1 style streams +(typically Node.js 0.8 and below), this module attempts to undo the +actions done in `stream.pipe(dest)`. + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/unpipe.svg +[npm-url]: https://npmjs.org/package/unpipe +[node-image]: https://img.shields.io/node/v/unpipe.svg +[node-url]: http://nodejs.org/download/ +[travis-image]: https://img.shields.io/travis/stream-utils/unpipe.svg +[travis-url]: https://travis-ci.org/stream-utils/unpipe +[coveralls-image]: https://img.shields.io/coveralls/stream-utils/unpipe.svg +[coveralls-url]: https://coveralls.io/r/stream-utils/unpipe?branch=master +[downloads-image]: https://img.shields.io/npm/dm/unpipe.svg +[downloads-url]: https://npmjs.org/package/unpipe diff --git a/bff/node_modules/unpipe/index.js b/bff/node_modules/unpipe/index.js new file mode 100644 index 0000000..15c3d97 --- /dev/null +++ b/bff/node_modules/unpipe/index.js @@ -0,0 +1,69 @@ +/*! + * unpipe + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + * @public + */ + +module.exports = unpipe + +/** + * Determine if there are Node.js pipe-like data listeners. + * @private + */ + +function hasPipeDataListeners(stream) { + var listeners = stream.listeners('data') + + for (var i = 0; i < listeners.length; i++) { + if (listeners[i].name === 'ondata') { + return true + } + } + + return false +} + +/** + * Unpipe a stream from all destinations. + * + * @param {object} stream + * @public + */ + +function unpipe(stream) { + if (!stream) { + throw new TypeError('argument stream is required') + } + + if (typeof stream.unpipe === 'function') { + // new-style + stream.unpipe() + return + } + + // Node.js 0.8 hack + if (!hasPipeDataListeners(stream)) { + return + } + + var listener + var listeners = stream.listeners('close') + + for (var i = 0; i < listeners.length; i++) { + listener = listeners[i] + + if (listener.name !== 'cleanup' && listener.name !== 'onclose') { + continue + } + + // invoke the listener + listener.call(stream) + } +} diff --git a/bff/node_modules/unpipe/package.json b/bff/node_modules/unpipe/package.json new file mode 100644 index 0000000..a2b7358 --- /dev/null +++ b/bff/node_modules/unpipe/package.json @@ -0,0 +1,27 @@ +{ + "name": "unpipe", + "description": "Unpipe a stream from all destinations", + "version": "1.0.0", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "repository": "stream-utils/unpipe", + "devDependencies": { + "istanbul": "0.3.15", + "mocha": "2.2.5", + "readable-stream": "1.1.13" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + } +} diff --git a/bff/node_modules/util-deprecate/History.md b/bff/node_modules/util-deprecate/History.md new file mode 100644 index 0000000..acc8675 --- /dev/null +++ b/bff/node_modules/util-deprecate/History.md @@ -0,0 +1,16 @@ + +1.0.2 / 2015-10-07 +================== + + * use try/catch when checking `localStorage` (#3, @kumavis) + +1.0.1 / 2014-11-25 +================== + + * browser: use `console.warn()` for deprecation calls + * browser: more jsdocs + +1.0.0 / 2014-04-30 +================== + + * initial commit diff --git a/bff/node_modules/util-deprecate/LICENSE b/bff/node_modules/util-deprecate/LICENSE new file mode 100644 index 0000000..6a60e8c --- /dev/null +++ b/bff/node_modules/util-deprecate/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/util-deprecate/README.md b/bff/node_modules/util-deprecate/README.md new file mode 100644 index 0000000..75622fa --- /dev/null +++ b/bff/node_modules/util-deprecate/README.md @@ -0,0 +1,53 @@ +util-deprecate +============== +### The Node.js `util.deprecate()` function with browser support + +In Node.js, this module simply re-exports the `util.deprecate()` function. + +In the web browser (i.e. via browserify), a browser-specific implementation +of the `util.deprecate()` function is used. + + +## API + +A `deprecate()` function is the only thing exposed by this module. + +``` javascript +// setup: +exports.foo = deprecate(foo, 'foo() is deprecated, use bar() instead'); + + +// users see: +foo(); +// foo() is deprecated, use bar() instead +foo(); +foo(); +``` + + +## License + +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/util-deprecate/browser.js b/bff/node_modules/util-deprecate/browser.js new file mode 100644 index 0000000..549ae2f --- /dev/null +++ b/bff/node_modules/util-deprecate/browser.js @@ -0,0 +1,67 @@ + +/** + * Module exports. + */ + +module.exports = deprecate; + +/** + * Mark that a method should not be used. + * Returns a modified function which warns once by default. + * + * If `localStorage.noDeprecation = true` is set, then it is a no-op. + * + * If `localStorage.throwDeprecation = true` is set, then deprecated functions + * will throw an Error when invoked. + * + * If `localStorage.traceDeprecation = true` is set, then deprecated functions + * will invoke `console.trace()` instead of `console.error()`. + * + * @param {Function} fn - the function to deprecate + * @param {String} msg - the string to print to the console when `fn` is invoked + * @returns {Function} a new "deprecated" version of `fn` + * @api public + */ + +function deprecate (fn, msg) { + if (config('noDeprecation')) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (config('throwDeprecation')) { + throw new Error(msg); + } else if (config('traceDeprecation')) { + console.trace(msg); + } else { + console.warn(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +} + +/** + * Checks `localStorage` for boolean values for the given `name`. + * + * @param {String} name + * @returns {Boolean} + * @api private + */ + +function config (name) { + // accessing global.localStorage can trigger a DOMException in sandboxed iframes + try { + if (!global.localStorage) return false; + } catch (_) { + return false; + } + var val = global.localStorage[name]; + if (null == val) return false; + return String(val).toLowerCase() === 'true'; +} diff --git a/bff/node_modules/util-deprecate/node.js b/bff/node_modules/util-deprecate/node.js new file mode 100644 index 0000000..5e6fcff --- /dev/null +++ b/bff/node_modules/util-deprecate/node.js @@ -0,0 +1,6 @@ + +/** + * For Node.js, simply re-export the core `util.deprecate` function. + */ + +module.exports = require('util').deprecate; diff --git a/bff/node_modules/util-deprecate/package.json b/bff/node_modules/util-deprecate/package.json new file mode 100644 index 0000000..2e79f89 --- /dev/null +++ b/bff/node_modules/util-deprecate/package.json @@ -0,0 +1,27 @@ +{ + "name": "util-deprecate", + "version": "1.0.2", + "description": "The Node.js `util.deprecate()` function with browser support", + "main": "node.js", + "browser": "browser.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git://github.com/TooTallNate/util-deprecate.git" + }, + "keywords": [ + "util", + "deprecate", + "browserify", + "browser", + "node" + ], + "author": "Nathan Rajlich (http://n8.io/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/TooTallNate/util-deprecate/issues" + }, + "homepage": "https://github.com/TooTallNate/util-deprecate" +} diff --git a/bff/node_modules/vary/HISTORY.md b/bff/node_modules/vary/HISTORY.md new file mode 100644 index 0000000..f6cbcf7 --- /dev/null +++ b/bff/node_modules/vary/HISTORY.md @@ -0,0 +1,39 @@ +1.1.2 / 2017-09-23 +================== + + * perf: improve header token parsing speed + +1.1.1 / 2017-03-20 +================== + + * perf: hoist regular expression + +1.1.0 / 2015-09-29 +================== + + * Only accept valid field names in the `field` argument + - Ensures the resulting string is a valid HTTP header value + +1.0.1 / 2015-07-08 +================== + + * Fix setting empty header from empty `field` + * perf: enable strict mode + * perf: remove argument reassignments + +1.0.0 / 2014-08-10 +================== + + * Accept valid `Vary` header string as `field` + * Add `vary.append` for low-level string manipulation + * Move to `jshttp` orgainzation + +0.1.0 / 2014-06-05 +================== + + * Support array of fields to set + +0.0.0 / 2014-06-04 +================== + + * Initial release diff --git a/bff/node_modules/vary/LICENSE b/bff/node_modules/vary/LICENSE new file mode 100644 index 0000000..84441fb --- /dev/null +++ b/bff/node_modules/vary/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2014-2017 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/bff/node_modules/vary/README.md b/bff/node_modules/vary/README.md new file mode 100644 index 0000000..cc000b3 --- /dev/null +++ b/bff/node_modules/vary/README.md @@ -0,0 +1,101 @@ +# vary + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Manipulate the HTTP Vary header + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install vary +``` + +## API + + + +```js +var vary = require('vary') +``` + +### vary(res, field) + +Adds the given header `field` to the `Vary` response header of `res`. +This can be a string of a single field, a string of a valid `Vary` +header, or an array of multiple fields. + +This will append the header if not already listed, otherwise leaves +it listed in the current location. + + + +```js +// Append "Origin" to the Vary header of the response +vary(res, 'Origin') +``` + +### vary.append(header, field) + +Adds the given header `field` to the `Vary` response header string `header`. +This can be a string of a single field, a string of a valid `Vary` header, +or an array of multiple fields. + +This will append the header if not already listed, otherwise leaves +it listed in the current location. The new header string is returned. + + + +```js +// Get header string appending "Origin" to "Accept, User-Agent" +vary.append('Accept, User-Agent', 'Origin') +``` + +## Examples + +### Updating the Vary header when content is based on it + +```js +var http = require('http') +var vary = require('vary') + +http.createServer(function onRequest (req, res) { + // about to user-agent sniff + vary(res, 'User-Agent') + + var ua = req.headers['user-agent'] || '' + var isMobile = /mobi|android|touch|mini/i.test(ua) + + // serve site, depending on isMobile + res.setHeader('Content-Type', 'text/html') + res.end('You are (probably) ' + (isMobile ? '' : 'not ') + 'a mobile user') +}) +``` + +## Testing + +```sh +$ npm test +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/vary.svg +[npm-url]: https://npmjs.org/package/vary +[node-version-image]: https://img.shields.io/node/v/vary.svg +[node-version-url]: https://nodejs.org/en/download +[travis-image]: https://img.shields.io/travis/jshttp/vary/master.svg +[travis-url]: https://travis-ci.org/jshttp/vary +[coveralls-image]: https://img.shields.io/coveralls/jshttp/vary/master.svg +[coveralls-url]: https://coveralls.io/r/jshttp/vary +[downloads-image]: https://img.shields.io/npm/dm/vary.svg +[downloads-url]: https://npmjs.org/package/vary diff --git a/bff/node_modules/vary/index.js b/bff/node_modules/vary/index.js new file mode 100644 index 0000000..5b5e741 --- /dev/null +++ b/bff/node_modules/vary/index.js @@ -0,0 +1,149 @@ +/*! + * vary + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module exports. + */ + +module.exports = vary +module.exports.append = append + +/** + * RegExp to match field-name in RFC 7230 sec 3.2 + * + * field-name = token + * token = 1*tchar + * tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" + * / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" + * / DIGIT / ALPHA + * ; any VCHAR, except delimiters + */ + +var FIELD_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/ + +/** + * Append a field to a vary header. + * + * @param {String} header + * @param {String|Array} field + * @return {String} + * @public + */ + +function append (header, field) { + if (typeof header !== 'string') { + throw new TypeError('header argument is required') + } + + if (!field) { + throw new TypeError('field argument is required') + } + + // get fields array + var fields = !Array.isArray(field) + ? parse(String(field)) + : field + + // assert on invalid field names + for (var j = 0; j < fields.length; j++) { + if (!FIELD_NAME_REGEXP.test(fields[j])) { + throw new TypeError('field argument contains an invalid header name') + } + } + + // existing, unspecified vary + if (header === '*') { + return header + } + + // enumerate current values + var val = header + var vals = parse(header.toLowerCase()) + + // unspecified vary + if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) { + return '*' + } + + for (var i = 0; i < fields.length; i++) { + var fld = fields[i].toLowerCase() + + // append value (case-preserving) + if (vals.indexOf(fld) === -1) { + vals.push(fld) + val = val + ? val + ', ' + fields[i] + : fields[i] + } + } + + return val +} + +/** + * Parse a vary header into an array. + * + * @param {String} header + * @return {Array} + * @private + */ + +function parse (header) { + var end = 0 + var list = [] + var start = 0 + + // gather tokens + for (var i = 0, len = header.length; i < len; i++) { + switch (header.charCodeAt(i)) { + case 0x20: /* */ + if (start === end) { + start = end = i + 1 + } + break + case 0x2c: /* , */ + list.push(header.substring(start, end)) + start = end = i + 1 + break + default: + end = i + 1 + break + } + } + + // final token + list.push(header.substring(start, end)) + + return list +} + +/** + * Mark that a request is varied on a header field. + * + * @param {Object} res + * @param {String|Array} field + * @public + */ + +function vary (res, field) { + if (!res || !res.getHeader || !res.setHeader) { + // quack quack + throw new TypeError('res argument is required') + } + + // get existing header + var val = res.getHeader('Vary') || '' + var header = Array.isArray(val) + ? val.join(', ') + : String(val) + + // set new header + if ((val = append(header, field))) { + res.setHeader('Vary', val) + } +} diff --git a/bff/node_modules/vary/package.json b/bff/node_modules/vary/package.json new file mode 100644 index 0000000..028f72a --- /dev/null +++ b/bff/node_modules/vary/package.json @@ -0,0 +1,43 @@ +{ + "name": "vary", + "description": "Manipulate the HTTP Vary header", + "version": "1.1.2", + "author": "Douglas Christopher Wilson ", + "license": "MIT", + "keywords": [ + "http", + "res", + "vary" + ], + "repository": "jshttp/vary", + "devDependencies": { + "beautify-benchmark": "0.2.4", + "benchmark": "2.1.4", + "eslint": "3.19.0", + "eslint-config-standard": "10.2.1", + "eslint-plugin-import": "2.7.0", + "eslint-plugin-markdown": "1.0.0-beta.6", + "eslint-plugin-node": "5.1.1", + "eslint-plugin-promise": "3.5.0", + "eslint-plugin-standard": "3.0.1", + "istanbul": "0.4.5", + "mocha": "2.5.3", + "supertest": "1.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "index.js" + ], + "engines": { + "node": ">= 0.8" + }, + "scripts": { + "bench": "node benchmark/index.js", + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/" + } +} diff --git a/bff/node_modules/wrappy/LICENSE b/bff/node_modules/wrappy/LICENSE new file mode 100644 index 0000000..19129e3 --- /dev/null +++ b/bff/node_modules/wrappy/LICENSE @@ -0,0 +1,15 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/bff/node_modules/wrappy/README.md b/bff/node_modules/wrappy/README.md new file mode 100644 index 0000000..98eab25 --- /dev/null +++ b/bff/node_modules/wrappy/README.md @@ -0,0 +1,36 @@ +# wrappy + +Callback wrapping utility + +## USAGE + +```javascript +var wrappy = require("wrappy") + +// var wrapper = wrappy(wrapperFunction) + +// make sure a cb is called only once +// See also: http://npm.im/once for this specific use case +var once = wrappy(function (cb) { + var called = false + return function () { + if (called) return + called = true + return cb.apply(this, arguments) + } +}) + +function printBoo () { + console.log('boo') +} +// has some rando property +printBoo.iAmBooPrinter = true + +var onlyPrintOnce = once(printBoo) + +onlyPrintOnce() // prints 'boo' +onlyPrintOnce() // does nothing + +// random property is retained! +assert.equal(onlyPrintOnce.iAmBooPrinter, true) +``` diff --git a/bff/node_modules/wrappy/package.json b/bff/node_modules/wrappy/package.json new file mode 100644 index 0000000..1307520 --- /dev/null +++ b/bff/node_modules/wrappy/package.json @@ -0,0 +1,29 @@ +{ + "name": "wrappy", + "version": "1.0.2", + "description": "Callback wrapping utility", + "main": "wrappy.js", + "files": [ + "wrappy.js" + ], + "directories": { + "test": "test" + }, + "dependencies": {}, + "devDependencies": { + "tap": "^2.3.1" + }, + "scripts": { + "test": "tap --coverage test/*.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/npm/wrappy" + }, + "author": "Isaac Z. Schlueter (http://blog.izs.me/)", + "license": "ISC", + "bugs": { + "url": "https://github.com/npm/wrappy/issues" + }, + "homepage": "https://github.com/npm/wrappy" +} diff --git a/bff/node_modules/wrappy/wrappy.js b/bff/node_modules/wrappy/wrappy.js new file mode 100644 index 0000000..bb7e7d6 --- /dev/null +++ b/bff/node_modules/wrappy/wrappy.js @@ -0,0 +1,33 @@ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} diff --git a/bff/node_modules/xtend/.jshintrc b/bff/node_modules/xtend/.jshintrc new file mode 100644 index 0000000..77887b5 --- /dev/null +++ b/bff/node_modules/xtend/.jshintrc @@ -0,0 +1,30 @@ +{ + "maxdepth": 4, + "maxstatements": 200, + "maxcomplexity": 12, + "maxlen": 80, + "maxparams": 5, + + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": false, + "noarg": true, + "noempty": true, + "nonew": true, + "undef": true, + "unused": "vars", + "trailing": true, + + "quotmark": true, + "expr": true, + "asi": true, + + "browser": false, + "esnext": true, + "devel": false, + "node": false, + "nonstandard": false, + + "predef": ["require", "module", "__dirname", "__filename"] +} diff --git a/bff/node_modules/xtend/LICENSE b/bff/node_modules/xtend/LICENSE new file mode 100644 index 0000000..0099f4f --- /dev/null +++ b/bff/node_modules/xtend/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) +Copyright (c) 2012-2014 Raynos. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/bff/node_modules/xtend/README.md b/bff/node_modules/xtend/README.md new file mode 100644 index 0000000..4a2703c --- /dev/null +++ b/bff/node_modules/xtend/README.md @@ -0,0 +1,32 @@ +# xtend + +[![browser support][3]][4] + +[![locked](http://badges.github.io/stability-badges/dist/locked.svg)](http://github.com/badges/stability-badges) + +Extend like a boss + +xtend is a basic utility library which allows you to extend an object by appending all of the properties from each object in a list. When there are identical properties, the right-most property takes precedence. + +## Examples + +```js +var extend = require("xtend") + +// extend returns a new object. Does not mutate arguments +var combination = extend({ + a: "a", + b: "c" +}, { + b: "b" +}) +// { a: "a", b: "b" } +``` + +## Stability status: Locked + +## MIT Licensed + + + [3]: http://ci.testling.com/Raynos/xtend.png + [4]: http://ci.testling.com/Raynos/xtend diff --git a/bff/node_modules/xtend/immutable.js b/bff/node_modules/xtend/immutable.js new file mode 100644 index 0000000..94889c9 --- /dev/null +++ b/bff/node_modules/xtend/immutable.js @@ -0,0 +1,19 @@ +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend() { + var target = {} + + for (var i = 0; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} diff --git a/bff/node_modules/xtend/mutable.js b/bff/node_modules/xtend/mutable.js new file mode 100644 index 0000000..72debed --- /dev/null +++ b/bff/node_modules/xtend/mutable.js @@ -0,0 +1,17 @@ +module.exports = extend + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +function extend(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] + + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + + return target +} diff --git a/bff/node_modules/xtend/package.json b/bff/node_modules/xtend/package.json new file mode 100644 index 0000000..f7a39d1 --- /dev/null +++ b/bff/node_modules/xtend/package.json @@ -0,0 +1,55 @@ +{ + "name": "xtend", + "version": "4.0.2", + "description": "extend like a boss", + "keywords": [ + "extend", + "merge", + "options", + "opts", + "object", + "array" + ], + "author": "Raynos ", + "repository": "git://github.com/Raynos/xtend.git", + "main": "immutable", + "scripts": { + "test": "node test" + }, + "dependencies": {}, + "devDependencies": { + "tape": "~1.1.0" + }, + "homepage": "https://github.com/Raynos/xtend", + "contributors": [ + { + "name": "Jake Verbaten" + }, + { + "name": "Matt Esch" + } + ], + "bugs": { + "url": "https://github.com/Raynos/xtend/issues", + "email": "raynos2@gmail.com" + }, + "license": "MIT", + "testling": { + "files": "test.js", + "browsers": [ + "ie/7..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest" + ] + }, + "engines": { + "node": ">=0.4" + } +} diff --git a/bff/node_modules/xtend/test.js b/bff/node_modules/xtend/test.js new file mode 100644 index 0000000..b895b42 --- /dev/null +++ b/bff/node_modules/xtend/test.js @@ -0,0 +1,103 @@ +var test = require("tape") +var extend = require("./") +var mutableExtend = require("./mutable") + +test("merge", function(assert) { + var a = { a: "foo" } + var b = { b: "bar" } + + assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) + assert.end() +}) + +test("replace", function(assert) { + var a = { a: "foo" } + var b = { a: "bar" } + + assert.deepEqual(extend(a, b), { a: "bar" }) + assert.end() +}) + +test("undefined", function(assert) { + var a = { a: undefined } + var b = { b: "foo" } + + assert.deepEqual(extend(a, b), { a: undefined, b: "foo" }) + assert.deepEqual(extend(b, a), { a: undefined, b: "foo" }) + assert.end() +}) + +test("handle 0", function(assert) { + var a = { a: "default" } + var b = { a: 0 } + + assert.deepEqual(extend(a, b), { a: 0 }) + assert.deepEqual(extend(b, a), { a: "default" }) + assert.end() +}) + +test("is immutable", function (assert) { + var record = {} + + extend(record, { foo: "bar" }) + assert.equal(record.foo, undefined) + assert.end() +}) + +test("null as argument", function (assert) { + var a = { foo: "bar" } + var b = null + var c = void 0 + + assert.deepEqual(extend(b, a, c), { foo: "bar" }) + assert.end() +}) + +test("mutable", function (assert) { + var a = { foo: "bar" } + + mutableExtend(a, { bar: "baz" }) + + assert.equal(a.bar, "baz") + assert.end() +}) + +test("null prototype", function(assert) { + var a = { a: "foo" } + var b = Object.create(null) + b.b = "bar"; + + assert.deepEqual(extend(a, b), { a: "foo", b: "bar" }) + assert.end() +}) + +test("null prototype mutable", function (assert) { + var a = { foo: "bar" } + var b = Object.create(null) + b.bar = "baz"; + + mutableExtend(a, b) + + assert.equal(a.bar, "baz") + assert.end() +}) + +test("prototype pollution", function (assert) { + var a = {} + var maliciousPayload = '{"__proto__":{"oops":"It works!"}}' + + assert.strictEqual(a.oops, undefined) + extend({}, maliciousPayload) + assert.strictEqual(a.oops, undefined) + assert.end() +}) + +test("prototype pollution mutable", function (assert) { + var a = {} + var maliciousPayload = '{"__proto__":{"oops":"It works!"}}' + + assert.strictEqual(a.oops, undefined) + mutableExtend({}, maliciousPayload) + assert.strictEqual(a.oops, undefined) + assert.end() +}) diff --git a/bff/package-lock.json b/bff/package-lock.json new file mode 100644 index 0000000..284f686 --- /dev/null +++ b/bff/package-lock.json @@ -0,0 +1,3071 @@ +{ + "name": "bff", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "bff", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@aws-sdk/client-s3": "^3.450.0", + "@aws-sdk/s3-request-presigner": "^3.450.0", + "axios": "^1.14.0", + "cookie-parser": "^1.4.7", + "cors": "^2.8.6", + "dotenv": "^17.3.1", + "express": "^5.2.1", + "jsonwebtoken": "^9.0.3", + "multer": "^1.4.5-lts.1", + "pg": "^8.20.0" + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/crc32c": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-s3": { + "version": "3.1021.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1021.0.tgz", + "integrity": "sha512-BCfggq8gYSjlKOZlMSVApix3cgKAQIWGeoJFX/AU5HMvqz1BZBEw83jJFL9LYrqTPCocH8NGl++1Xr70ro+jcg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-node": "^3.972.29", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.8", + "@aws-sdk/middleware-expect-continue": "^3.972.8", + "@aws-sdk/middleware-flexible-checksums": "^3.974.6", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-location-constraint": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.9", + "@aws-sdk/middleware-sdk-s3": "^3.972.27", + "@aws-sdk/middleware-ssec": "^3.972.8", + "@aws-sdk/middleware-user-agent": "^3.972.28", + "@aws-sdk/region-config-resolver": "^3.972.10", + "@aws-sdk/signature-v4-multi-region": "^3.996.15", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.14", + "@smithy/config-resolver": "^4.4.13", + "@smithy/core": "^3.23.13", + "@smithy/eventstream-serde-browser": "^4.2.12", + "@smithy/eventstream-serde-config-resolver": "^4.3.12", + "@smithy/eventstream-serde-node": "^4.2.12", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-blob-browser": "^4.2.13", + "@smithy/hash-node": "^4.2.12", + "@smithy/hash-stream-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/md5-js": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.13", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "@smithy/util-waiter": "^4.2.14", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.973.26", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.26.tgz", + "integrity": "sha512-A/E6n2W42ruU+sfWk+mMUOyVXbsSgGrY3MJ9/0Az5qUdG67y8I6HYzzoAa+e/lzxxl1uCYmEL6BTMi9ZiZnplQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/xml-builder": "^3.972.16", + "@smithy/core": "^3.23.13", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/crc64-nvme": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.5.tgz", + "integrity": "sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.24.tgz", + "integrity": "sha512-FWg8uFmT6vQM7VuzELzwVo5bzExGaKHdubn0StjgrcU5FvuLExUe+k06kn/40uKv59rYzhez8eFNM4yYE/Yb/w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.26", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.26.tgz", + "integrity": "sha512-CY4ppZ+qHYqcXqBVi//sdHST1QK3KzOEiLtpLsc9W2k2vfZPKExGaQIsOwcyvjpjUEolotitmd3mUNY56IwDEA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.21", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.28.tgz", + "integrity": "sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/credential-provider-env": "^3.972.24", + "@aws-sdk/credential-provider-http": "^3.972.26", + "@aws-sdk/credential-provider-login": "^3.972.28", + "@aws-sdk/credential-provider-process": "^3.972.24", + "@aws-sdk/credential-provider-sso": "^3.972.28", + "@aws-sdk/credential-provider-web-identity": "^3.972.28", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.28.tgz", + "integrity": "sha512-ZSTfO6jqUTCysbdBPtEX5OUR//3rbD0lN7jO3sQeS2Gjr/Y+DT6SbIJ0oT2cemNw3UzKu97sNONd1CwNMthuZQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.29", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.29.tgz", + "integrity": "sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "^3.972.24", + "@aws-sdk/credential-provider-http": "^3.972.26", + "@aws-sdk/credential-provider-ini": "^3.972.28", + "@aws-sdk/credential-provider-process": "^3.972.24", + "@aws-sdk/credential-provider-sso": "^3.972.28", + "@aws-sdk/credential-provider-web-identity": "^3.972.28", + "@aws-sdk/types": "^3.973.6", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.24", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.24.tgz", + "integrity": "sha512-Q2k/XLrFXhEztPHqj4SLCNID3hEPdlhh1CDLBpNnM+1L8fq7P+yON9/9M1IGN/dA5W45v44ylERfXtDAlmMNmw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.28.tgz", + "integrity": "sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/token-providers": "3.1021.0", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.28.tgz", + "integrity": "sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.8.tgz", + "integrity": "sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.8.tgz", + "integrity": "sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.974.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.6.tgz", + "integrity": "sha512-YckB8k1ejbyCg/g36gUMFLNzE4W5cERIa4MtsdO+wpTmJEP0+TB7okWIt7d8TDOvnb7SwvxJ21E4TGOBxFpSWQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/crc64-nvme": "^3.972.5", + "@aws-sdk/types": "^3.973.6", + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.8.tgz", + "integrity": "sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.8.tgz", + "integrity": "sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.8.tgz", + "integrity": "sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.9", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.9.tgz", + "integrity": "sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.972.27", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.27.tgz", + "integrity": "sha512-gomO6DZwx+1D/9mbCpcqO5tPBqYBK7DtdgjTIjZ4yvfh/S7ETwAPS0XbJgP2JD8Ycr5CwVrEkV1sFtu3ShXeOw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-arn-parser": "^3.972.3", + "@smithy/core": "^3.23.13", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.8.tgz", + "integrity": "sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.28", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.28.tgz", + "integrity": "sha512-cfWZFlVh7Va9lRay4PN2A9ARFzaBYcA097InT5M2CdRS05ECF5yaz86jET8Wsl2WcyKYEvVr/QNmKtYtafUHtQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@smithy/core": "^3.23.13", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-retry": "^4.2.13", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.996.18", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.996.18.tgz", + "integrity": "sha512-c7ZSIXrESxHKx2Mcopgd8AlzZgoXMr20fkx5ViPWPOLBvmyhw9VwJx/Govg8Ef/IhEon5R9l53Z8fdYSEmp6VA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/middleware-host-header": "^3.972.8", + "@aws-sdk/middleware-logger": "^3.972.8", + "@aws-sdk/middleware-recursion-detection": "^3.972.9", + "@aws-sdk/middleware-user-agent": "^3.972.28", + "@aws-sdk/region-config-resolver": "^3.972.10", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-endpoints": "^3.996.5", + "@aws-sdk/util-user-agent-browser": "^3.972.8", + "@aws-sdk/util-user-agent-node": "^3.973.14", + "@smithy/config-resolver": "^4.4.13", + "@smithy/core": "^3.23.13", + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/hash-node": "^4.2.12", + "@smithy/invalid-dependency": "^4.2.12", + "@smithy/middleware-content-length": "^4.2.12", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-retry": "^4.4.46", + "@smithy/middleware-serde": "^4.2.16", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-body-length-node": "^4.2.3", + "@smithy/util-defaults-mode-browser": "^4.3.44", + "@smithy/util-defaults-mode-node": "^4.2.48", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.13", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.10", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.10.tgz", + "integrity": "sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/config-resolver": "^4.4.13", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/s3-request-presigner": { + "version": "3.1021.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.1021.0.tgz", + "integrity": "sha512-kkIzsIAc7wnG7vVRkZFIwJ3noOyF3S6ozOQ9t2KxzPde1LsmpmPwYbmiB91DzdfuGySdk4Hpb0JmHh4KhGECXQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/signature-v4-multi-region": "^3.996.15", + "@aws-sdk/types": "^3.973.6", + "@aws-sdk/util-format-url": "^3.972.8", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/protocol-http": "^5.3.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.996.15", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.15.tgz", + "integrity": "sha512-Ukw2RpqvaL96CjfH/FgfBmy/ZosHBqoHBCFsN61qGg99F33vpntIVii8aNeh65XuOja73arSduskoa4OJea9RQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "^3.972.27", + "@aws-sdk/types": "^3.973.6", + "@smithy/protocol-http": "^5.3.12", + "@smithy/signature-v4": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.1021.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1021.0.tgz", + "integrity": "sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.26", + "@aws-sdk/nested-clients": "^3.996.18", + "@aws-sdk/types": "^3.973.6", + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.973.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.6.tgz", + "integrity": "sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", + "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.996.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.5.tgz", + "integrity": "sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-endpoints": "^3.3.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.972.8.tgz", + "integrity": "sha512-J6DS9oocrgxM8xlUTTmQOuwRF6rnAGEujAN9SAzllcrQmwn5iJ58ogxy3SEhD0Q7JZvlA5jvIXBkpQRqEqlE9A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.965.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", + "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.8", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.8.tgz", + "integrity": "sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.6", + "@smithy/types": "^4.13.1", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.973.14", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.14.tgz", + "integrity": "sha512-vNSB/DYaPOyujVZBg/zUznH9QC142MaTHVmaFlF7uzzfg3CgT9f/l4C0Yi+vU/tbBhxVcXVB90Oohk5+o+ZbWw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "^3.972.28", + "@aws-sdk/types": "^3.973.6", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.972.16", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.16.tgz", + "integrity": "sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "fast-xml-parser": "5.5.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", + "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", + "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", + "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.13.tgz", + "integrity": "sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-config-provider": "^4.2.2", + "@smithy/util-endpoints": "^3.3.3", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.23.13", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.13.tgz", + "integrity": "sha512-J+2TT9D6oGsUVXVEMvz8h2EmdVnkBiy2auCie4aSJMvKlzUtO5hqjEzXhoCUkIMo7gAYjbQcN0g/MMSXEhDs1Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-body-length-browser": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-stream": "^4.5.21", + "@smithy/util-utf8": "^4.2.2", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.12.tgz", + "integrity": "sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.12.tgz", + "integrity": "sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.12.tgz", + "integrity": "sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.12.tgz", + "integrity": "sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.12.tgz", + "integrity": "sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.12.tgz", + "integrity": "sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.15", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.15.tgz", + "integrity": "sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.13.tgz", + "integrity": "sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^5.2.2", + "@smithy/chunked-blob-reader-native": "^4.2.3", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.12.tgz", + "integrity": "sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.12.tgz", + "integrity": "sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.12.tgz", + "integrity": "sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", + "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/md5-js": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.12.tgz", + "integrity": "sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.12.tgz", + "integrity": "sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.4.28", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.28.tgz", + "integrity": "sha512-p1gfYpi91CHcs5cBq982UlGlDrxoYUX6XdHSo91cQ2KFuz6QloHosO7Jc60pJiVmkWrKOV8kFYlGFFbQ2WUKKQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.13", + "@smithy/middleware-serde": "^4.2.16", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "@smithy/url-parser": "^4.2.12", + "@smithy/util-middleware": "^4.2.12", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.46", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.46.tgz", + "integrity": "sha512-SpvWNNOPOrKQGUqZbEPO+es+FRXMWvIyzUKUOYdDgdlA6BdZj/R58p4umoQ76c2oJC44PiM7mKizyyex1IJzow==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/service-error-classification": "^4.2.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-retry": "^4.2.13", + "@smithy/uuid": "^1.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.16", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.16.tgz", + "integrity": "sha512-beqfV+RZ9RSv+sQqor3xroUUYgRFCGRw6niGstPG8zO9LgTl0B0MCucxjmrH/2WwksQN7UUgI7KNANoZv+KALA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.13", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.12.tgz", + "integrity": "sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.12.tgz", + "integrity": "sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/shared-ini-file-loader": "^4.4.7", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.5.1.tgz", + "integrity": "sha512-ejjxdAXjkPIs9lyYyVutOGNOraqUE9v/NjGMKwwFrfOM354wfSD8lmlj8hVwUzQmlLLF4+udhfCX9Exnbmvfzw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.12", + "@smithy/querystring-builder": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.12.tgz", + "integrity": "sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.12.tgz", + "integrity": "sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.12.tgz", + "integrity": "sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "@smithy/util-uri-escape": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.12.tgz", + "integrity": "sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.12.tgz", + "integrity": "sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.7.tgz", + "integrity": "sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.12", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.12.tgz", + "integrity": "sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-middleware": "^4.2.12", + "@smithy/util-uri-escape": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.12.8", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.8.tgz", + "integrity": "sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.23.13", + "@smithy/middleware-endpoint": "^4.4.28", + "@smithy/middleware-stack": "^4.2.12", + "@smithy/protocol-http": "^5.3.12", + "@smithy/types": "^4.13.1", + "@smithy/util-stream": "^4.5.21", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.13.1.tgz", + "integrity": "sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.12.tgz", + "integrity": "sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", + "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", + "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", + "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", + "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", + "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.44", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.44.tgz", + "integrity": "sha512-eZg6XzaCbVr2S5cAErU5eGBDaOVTuTo1I65i4tQcHENRcZ8rMWhQy1DaIYUSLyZjsfXvmCqZrstSMYyGFocvHA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.48", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.48.tgz", + "integrity": "sha512-FqOKTlqSaoV3nzO55pMs5NBnZX8EhoI0DGmn9kbYeXWppgHD6dchyuj2HLqp4INJDJbSrj6OFYJkAh/WhSzZPg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.13", + "@smithy/credential-provider-imds": "^4.2.12", + "@smithy/node-config-provider": "^4.3.12", + "@smithy/property-provider": "^4.2.12", + "@smithy/smithy-client": "^4.12.8", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.3.3.tgz", + "integrity": "sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", + "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.12.tgz", + "integrity": "sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.13", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.13.tgz", + "integrity": "sha512-qQQsIvL0MGIbUjeSrg0/VlQ3jGNKyM3/2iU3FPNgy01z+Sp4OvcaxbgIoFOTvB61ZoohtutuOvOcgmhbD0katQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.12", + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.21", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.21.tgz", + "integrity": "sha512-KzSg+7KKywLnkoKejRtIBXDmwBfjGvg1U1i/etkC7XSWUyFCoLno1IohV2c74IzQqdhX5y3uE44r/8/wuK+A7Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.15", + "@smithy/node-http-handler": "^4.5.1", + "@smithy/types": "^4.13.1", + "@smithy/util-base64": "^4.3.2", + "@smithy/util-buffer-from": "^4.2.2", + "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/util-utf8": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", + "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", + "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.14.tgz", + "integrity": "sha512-2zqq5o/oizvMaFUlNiTyZ7dbgYv1a893aGut2uaxtbzTx/VYYnRxWzDHuD/ftgcw94ffenua+ZNLrbqwUYE+Bg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.13.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", + "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", + "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/bowser": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", + "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", + "license": "MIT" + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", + "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", + "dependencies": { + "cookie": "0.7.2", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-parser/node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dotenv": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fast-xml-builder": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } + }, + "node_modules/fast-xml-parser": { + "version": "5.5.8", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz", + "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.2.0", + "strnum": "^2.2.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/multer": { + "version": "1.4.5-lts.2", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.2.tgz", + "integrity": "sha512-VzGiVigcG9zUAoCNU+xShztrlr1auZOlurXynNvO9GiWD1/mTBbUljOKY+qMeazBqXgRnjzeEgJI/wyjJUHg9A==", + "deprecated": "Multer 1.x is impacted by a number of vulnerabilities, which have been patched in 2.x. You should upgrade to the latest 2.x version.", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/multer/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-expression-matcher": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", + "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.0.tgz", + "integrity": "sha512-PuseHIvAnz3bjrM2rGJtSgo1zjgxapTLZ7x2pjhzWwlp4SJQgK3f3iZIQwkpEnBaKz6seKBADpM4B4ySkuYypg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/pg": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", + "dependencies": { + "pg-connection-string": "^2.12.0", + "pg-pool": "^3.13.0", + "pg-protocol": "^1.13.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.3.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", + "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", + "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/strnum": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", + "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + } + } +} diff --git a/bff/package.json b/bff/package.json new file mode 100644 index 0000000..6660ff4 --- /dev/null +++ b/bff/package.json @@ -0,0 +1,25 @@ +{ + "name": "bff", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@aws-sdk/client-s3": "^3.450.0", + "@aws-sdk/s3-request-presigner": "^3.450.0", + "axios": "^1.14.0", + "cookie-parser": "^1.4.7", + "cors": "^2.8.6", + "dotenv": "^17.3.1", + "express": "^5.2.1", + "jsonwebtoken": "^9.0.3", + "multer": "^1.4.5-lts.1", + "pg": "^8.20.0" + }, + "type": "module" +} diff --git a/bff/public/prompt.html b/bff/public/prompt.html new file mode 100644 index 0000000..049e000 --- /dev/null +++ b/bff/public/prompt.html @@ -0,0 +1,327 @@ + + + + + + Загрузка изображений - Prompt + + + +
+

📤 Загрузка изображений

+
+

Перетащите файл сюда или кликните для выбора

+

Поддерживаются: JPEG, PNG, GIF, WebP (макс. 10MB)

+ + +
+
+ Preview +
+
+ + +
+ +
+
+
+
+
+
+
+

📁 Мои файлы

+
+
+
+ + + + diff --git a/bff/repositories/scenario.repository.js b/bff/repositories/scenario.repository.js new file mode 100644 index 0000000..4870ec0 --- /dev/null +++ b/bff/repositories/scenario.repository.js @@ -0,0 +1,246 @@ +import { pool } from '../db.js'; + +/** + * Проверка прав доступа пользователя к сценарию + */ +export async function getUserScenarioPermission(userId, scenarioId) { + const query = ` + SELECT can_start, can_execute, can_view_results + FROM uno_bff.scenario_permissions + WHERE user_id = $1 AND scenario_id = $2 + `; + const result = await pool.query(query, [userId, scenarioId]); + return result.rows[0] || null; +} + +/** + * Получить сценарий по ID + */ +export async function getScenarioById(scenarioId) { + const query = ` + SELECT scenario_id, name, description, status, is_public, start_workflow_key, created_at, updated_at + FROM uno_bff.scenarios + WHERE scenario_id = $1 + `; + const result = await pool.query(query, [scenarioId]); + return result.rows[0] || null; +} + +/** + * Получить шаг сценария по ID + */ +export async function getScenarioStep(scenarioId, stepId) { + const query = ` + SELECT scenario_id, step_id, name, description, step_order, status, step_workflow_key, is_terminal, input_schema, output_schema, created_at, updated_at + FROM uno_bff.scenario_steps + WHERE scenario_id = $1 AND step_id = $2 + `; + const result = await pool.query(query, [scenarioId, stepId]); + return result.rows[0] || null; +} + +/** + * Получить первый шаг сценария + */ +export async function getFirstScenarioStep(scenarioId) { + const query = ` + SELECT scenario_id, step_id, name, description, step_order, status, step_workflow_key, is_terminal, input_schema, output_schema + FROM uno_bff.scenario_steps + WHERE scenario_id = $1 AND status = 'active' + ORDER BY step_order ASC + LIMIT 1 + `; + const result = await pool.query(query, [scenarioId]); + return result.rows[0] || null; +} + +/** + * Создать запись generation + */ +export async function createGeneration({ userId, scenarioId, authSessionId, requestPayload, currentStepId }) { + const query = ` + INSERT INTO uno_bff.generations (user_id, scenario_id, auth_session_id, status, request_payload, current_step_id) + VALUES ($1, $2, $3, 'running', $4, $5) + RETURNING generation_uuid, user_id, scenario_id, auth_session_id, status, current_step_id, request_payload, started_at + `; + const result = await pool.query(query, [userId, scenarioId, authSessionId, JSON.stringify(requestPayload), currentStepId]); + return result.rows[0]; +} + +/** + * Получить generation по UUID + */ +export async function getGenerationByUuid(generationUuid) { + const query = ` + SELECT generation_uuid, user_id, scenario_id, auth_session_id, status, current_step_id, request_payload, result_payload, last_error_payload, external_run_id, started_at, finished_at + FROM uno_bff.generations + WHERE generation_uuid = $1 + `; + const result = await pool.query(query, [generationUuid]); + return result.rows[0] || null; +} + +/** + * Обновить generation (после выполнения шага) + */ +export async function updateGeneration(generationUuid, updates) { + const fields = []; + const values = []; + let idx = 1; + + if (updates.status !== undefined) { + fields.push(`status = $${idx++}`); + values.push(updates.status); + } + if (updates.currentStepId !== undefined) { + fields.push(`current_step_id = $${idx++}`); + values.push(updates.currentStepId); + } + if (updates.resultPayload !== undefined) { + fields.push(`result_payload = $${idx++}`); + values.push(JSON.stringify(updates.resultPayload)); + } + if (updates.lastErrorPayload !== undefined) { + fields.push(`last_error_payload = $${idx++}`); + values.push(JSON.stringify(updates.lastErrorPayload)); + } + if (updates.externalRunId !== undefined) { + fields.push(`external_run_id = $${idx++}`); + values.push(updates.externalRunId); + } + if (updates.finishedAt !== undefined) { + fields.push(`finished_at = $${idx++}`); + values.push(updates.finishedAt); + } + + if (fields.length === 0) { + return getGenerationByUuid(generationUuid); + } + + values.push(generationUuid); + const query = ` + UPDATE uno_bff.generations + SET ${fields.join(', ')}, updated_at = now() + WHERE generation_uuid = $${idx} + RETURNING generation_uuid, user_id, scenario_id, status, current_step_id, request_payload, result_payload, external_run_id + `; + const result = await pool.query(query, values); + return result.rows[0]; +} + +/** + * Обновить generation_step + * Используется n8n workflow для обновления статуса шага + */ +export async function updateGenerationStepByUuid(generationUuid, stepId, updates) { + const fields = []; + const values = []; + let idx = 1; + + if (updates.status !== undefined) { + fields.push(`status = $${idx++}`); + values.push(updates.status); + } + if (updates.responsePayload !== undefined) { + fields.push(`response_payload = $${idx++}`); + values.push(JSON.stringify(updates.responsePayload)); + } + if (updates.errorPayload !== undefined) { + fields.push(`error_payload = $${idx++}`); + values.push(JSON.stringify(updates.errorPayload)); + } + if (updates.startedAt !== undefined) { + fields.push(`started_at = $${idx++}`); + values.push(updates.startedAt); + } + if (updates.finishedAt !== undefined) { + fields.push(`finished_at = $${idx++}`); + values.push(updates.finishedAt); + } + + if (fields.length === 0) { + return getGenerationStep(generationUuid, stepId); + } + + values.push(generationUuid, stepId); + const query = ` + UPDATE uno_bff.generation_steps + SET ${fields.join(', ')}, updated_at = now() + WHERE generation_uuid = $${idx} AND step_id = $${idx + 1} + RETURNING id, generation_uuid, scenario_id, step_id, status, request_payload, response_payload + `; + const result = await pool.query(query, values); + return result.rows[0]; +} + +/** + * Получить generation_step + */ +export async function getGenerationStep(generationUuid, stepId) { + const query = ` + SELECT id, generation_uuid, scenario_id, step_id, step_order, status, request_payload, response_payload, error_payload + FROM uno_bff.generation_steps + WHERE generation_uuid = $1 AND step_id = $2 + `; + const result = await pool.query(query, [generationUuid, stepId]); + return result.rows[0] || null; +} + +/** + * Получить generation по UUID с проверкой принадлежности пользователю + */ +export async function getGenerationByUuidForUser(generationUuid, userId) { + const query = ` + SELECT g.generation_uuid, g.user_id, g.scenario_id, g.auth_session_id, g.status, + g.current_step_id, g.request_payload, g.result_payload, g.last_error_payload, + g.external_run_id, g.started_at, g.finished_at, + s.name as scenario_name + FROM uno_bff.generations g + LEFT JOIN uno_bff.scenarios s ON g.scenario_id = s.scenario_id + WHERE g.generation_uuid = $1 AND g.user_id = $2 + `; + const result = await pool.query(query, [generationUuid, userId]); + return result.rows[0] || null; +} + +/** + * Получить метаданные generation по UUID с проверкой принадлежности пользователю + */ +export async function getGenerationMetaByUuid(generationUuid, userId) { + const query = ` + SELECT g.scenario_id, s.name as scenario_name + FROM uno_bff.generations g + LEFT JOIN uno_bff.scenarios s ON g.scenario_id = s.scenario_id + WHERE g.generation_uuid = $1 AND g.user_id = $2 + `; + const result = await pool.query(query, [generationUuid, userId]); + return result.rows[0] || null; +} + +/** + * Обновить generation result_payload и статус + */ +export async function updateGenerationResult(generationUuid, resultPayload, status = 'completed') { + const query = ` + UPDATE uno_bff.generations + SET result_payload = $2, status = $3, finished_at = COALESCE(finished_at, now()), updated_at = now() + WHERE generation_uuid = $1 + RETURNING generation_uuid, user_id, scenario_id, status, result_payload + `; + const result = await pool.query(query, [generationUuid, JSON.stringify(resultPayload), status]); + return result.rows[0] || null; +} + +/** + * Получить все шаги для generation + */ +export async function getGenerationSteps(generationUuid) { + const query = ` + SELECT step_id, step_order, status, request_payload, response_payload, error_payload, started_at, finished_at + FROM uno_bff.generation_steps + WHERE generation_uuid = $1 + ORDER BY step_order ASC + `; + const result = await pool.query(query, [generationUuid]); + return result.rows; +} diff --git a/bff/repositories/session.repository.js b/bff/repositories/session.repository.js new file mode 100644 index 0000000..0eeff1b --- /dev/null +++ b/bff/repositories/session.repository.js @@ -0,0 +1,91 @@ +import { pool } from '../db.js'; + +export async function createAuthSession({ + userId, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt, +}) { + const sql = ` + INSERT INTO uno_bff.auth_sessions + ( + user_id, + refresh_token_hash, + csrf_token_hash, + status, + user_agent, + ip_address, + expires_at, + last_seen_at + ) + VALUES + ( + $1, $2, $3, 'active', $4, $5, $6, now() + ) + RETURNING + id, + user_id, + refresh_token_hash, + csrf_token_hash, + status, + user_agent, + ip_address, + expires_at, + last_seen_at, + revoked_at, + created_at, + updated_at + `; + + const params = [ + userId, + refreshTokenHash, + csrfTokenHash, + userAgent || null, + ipAddress || null, + expiresAt, + ]; + + const { rows } = await pool.query(sql, params); + return rows[0]; +} + +export async function revokeSession(sessionId) { + const sql = ` + UPDATE uno_bff.auth_sessions + SET + status = 'revoked', + revoked_at = now(), + updated_at = now() + WHERE id = $1 + AND status = 'active' + `; + + await pool.query(sql, [sessionId]); +} + +export async function getAuthSession(sessionId) { + const sql = ` + SELECT id, user_id, refresh_token_hash, csrf_token_hash, status, expires_at + FROM uno_bff.auth_sessions + WHERE id = $1 AND status = 'active' AND expires_at > now() + `; + const result = await pool.query(sql, [sessionId]); + return result.rows[0] || null; +} + +export async function rotateSessionTokens(sessionId, newRefreshTokenHash, newCsrfTokenHash) { + const sql = ` + UPDATE uno_bff.auth_sessions + SET + refresh_token_hash = $2, + csrf_token_hash = $3, + updated_at = now() + WHERE id = $1 AND status = 'active' + RETURNING id, user_id + `; + const result = await pool.query(sql, [sessionId, newRefreshTokenHash, newCsrfTokenHash]); + return result.rows[0] || null; +} \ No newline at end of file diff --git a/bff/repositories/tg-login.repository.js b/bff/repositories/tg-login.repository.js new file mode 100644 index 0000000..52b1574 --- /dev/null +++ b/bff/repositories/tg-login.repository.js @@ -0,0 +1,66 @@ +import { pool } from "../db.js"; + +const TOKEN_TTL_SEC = 600; // 10 минут + +export async function createTgLoginToken({ token, intent, userId, ipAddress, userAgent }) { + const expires = new Date(Date.now() + TOKEN_TTL_SEC * 1000); + await pool.query( + `INSERT INTO uno_bff.tg_login_tokens + (token, intent, status, user_id, ip_address, user_agent, expires_at) + VALUES ($1, $2, 'pending', $3, $4, $5, $6)`, + [token, intent, userId || null, ipAddress, userAgent, expires] + ); + return { token, expiresAt: expires, ttlSec: TOKEN_TTL_SEC }; +} + +export async function findTgLoginToken(token) { + const r = await pool.query( + `SELECT * FROM uno_bff.tg_login_tokens WHERE token = $1`, [token] + ); + return r.rows[0] || null; +} + +export async function markTgTokenConfirmed(token, { telegramId, telegramUsername, telegramFirstName, telegramLastName, userId }) { + await pool.query( + `UPDATE uno_bff.tg_login_tokens + SET status = 'confirmed', + telegram_id = $2, + telegram_username = $3, + telegram_first_name = $4, + telegram_last_name = $5, + user_id = COALESCE($6, user_id), + confirmed_at = now() + WHERE token = $1 AND status = 'pending' AND expires_at > now()`, + [token, telegramId, telegramUsername, telegramFirstName, telegramLastName, userId || null] + ); +} + +export async function markTgTokenError(token, errorCode) { + await pool.query( + `UPDATE uno_bff.tg_login_tokens + SET status = 'error', error_code = $2 + WHERE token = $1 AND status = 'pending'`, + [token, errorCode] + ); +} + +export async function consumeTgToken(token) { + const r = await pool.query( + `UPDATE uno_bff.tg_login_tokens + SET status = 'consumed', consumed_at = now() + WHERE token = $1 AND status = 'confirmed' + RETURNING *`, + [token] + ); + return r.rows[0] || null; +} + +export async function countTgStartsByIpLastMinutes(ipAddress, minutes = 10) { + if (!ipAddress) return 0; + const r = await pool.query( + `SELECT count(*)::int AS c FROM uno_bff.tg_login_tokens + WHERE ip_address = $1 AND created_at > now() - ($2 || ' minutes')::interval`, + [ipAddress, String(minutes)] + ); + return r.rows[0]?.c || 0; +} diff --git a/bff/repositories/user-file.repository.js b/bff/repositories/user-file.repository.js new file mode 100644 index 0000000..7a3660d --- /dev/null +++ b/bff/repositories/user-file.repository.js @@ -0,0 +1,213 @@ +import { pool } from '../db.js'; + +/** + * Repository для работы с метаданными файлов пользователей + */ +export const userFileRepository = { + /** + * Создать запись о файле + */ + async create({ userId, s3Key, originalFilename, fileSize, contentType, fileType = 'image', folder = 'images_input', generationUuid = null, generationStepId = null, status = 'uploaded', uploadId = null }) { + const query = ` + INSERT INTO uno_bff.user_files (user_id, s3_key, original_filename, file_size, content_type, file_type, folder, generation_uuid, generation_step_id, status, upload_id) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) + RETURNING id, user_id, s3_key, original_filename, file_size, content_type, file_type, folder, generation_uuid, generation_step_id, status, upload_id, created_at, updated_at + `; + const values = [userId, s3Key, originalFilename, fileSize, contentType, fileType, folder, generationUuid, generationStepId, status, uploadId]; + + const result = await pool.query(query, values); + return result.rows[0]; + }, + + /** + * Обновить файл + */ + async update(fileId, updates) { + const allowedFields = ['status', 'upload_id', 'file_size', 'updated_at']; + const setClauses = []; + const values = [fileId]; + let paramIndex = 2; + + for (const [key, value] of Object.entries(updates)) { + if (allowedFields.includes(key)) { + setClauses.push(`${key} = $${paramIndex}`); + values.push(value); + paramIndex++; + } + } + + if (setClauses.length === 0) { + throw new Error('No valid fields to update'); + } + + const query = ` + UPDATE uno_bff.user_files + SET ${setClauses.join(', ')} + WHERE id = $1 + RETURNING id, user_id, s3_key, original_filename, file_size, content_type, file_type, folder, status, upload_id, created_at, updated_at + `; + + const result = await pool.query(query, values); + return result.rows[0]; + }, + + /** + * Удалить файл по ID + */ + async delete(fileId) { + const query = ` + DELETE FROM uno_bff.user_files + WHERE id = $1 + RETURNING id + `; + + const result = await pool.query(query, [fileId]); + return result.rows[0]; + }, + + /** + * Найти файл по ID и проверить владение + */ + async findByIdAndOwner(fileId, userId) { + const query = ` + SELECT id, user_id, s3_key, original_filename, file_size, content_type, file_type, folder, created_at + FROM uno_bff.user_files + WHERE id = $1 AND user_id = $2 + `; + + const result = await pool.query(query, [fileId, userId]); + return result.rows[0]; + }, + + /** + * Найти файл по S3 ключу и проверить владение + */ + async findByKeyAndOwner(s3Key, userId) { + const query = ` + SELECT id, user_id, s3_key, original_filename, file_size, content_type, file_type, folder, created_at + FROM uno_bff.user_files + WHERE s3_key = $1 AND user_id = $2 + `; + + const result = await pool.query(query, [s3Key, userId]); + return result.rows[0]; + }, + + /** + * Получить список файлов пользователя + */ + async findByUser(userId, options = {}) { + const { + fileType = 'image', + folder = 'images_input', + limit = 50, + offset = 0, + orderBy = 'created_at', + order = 'DESC', + } = options; + + const validOrderColumns = ['created_at', 'original_filename', 'file_size']; + const validOrders = ['ASC', 'DESC']; + const safeOrderBy = validOrderColumns.includes(orderBy) ? orderBy : 'created_at'; + const safeOrder = validOrders.includes(order?.toUpperCase()) ? order.toUpperCase() : 'DESC'; + + const query = ` + SELECT id, user_id, s3_key, original_filename, file_size, content_type, file_type, folder, created_at + FROM uno_bff.user_files + WHERE user_id = $1 + AND ($2::VARCHAR IS NULL OR file_type = $2) + AND ($3::VARCHAR IS NULL OR folder = $3) + ORDER BY ${safeOrderBy} ${safeOrder} + LIMIT $4 OFFSET $5 + `; + + const values = [ + userId, + fileType || null, + folder || null, + limit, + offset, + ]; + + const result = await pool.query(query, values); + return result.rows; + }, + + /** + * Получить общее количество файлов пользователя + */ + async countByUser(userId, options = {}) { + const { fileType = 'image', folder = 'images_input' } = options; + + const query = ` + SELECT COUNT(*) as total + FROM uno_bff.user_files + WHERE user_id = $1 + AND ($2::VARCHAR IS NULL OR file_type = $2) + AND ($3::VARCHAR IS NULL OR folder = $3) + `; + + const values = [userId, fileType || null, folder || null]; + const result = await pool.query(query, values); + return parseInt(result.rows[0].total, 10); + }, + + /** + * Удалить запись о файле (по ID и владельцу) + */ + async deleteByIdAndOwner(fileId, userId) { + const query = ` + DELETE FROM uno_bff.user_files + WHERE id = $1 AND user_id = $2 + RETURNING s3_key + `; + + const result = await pool.query(query, [fileId, userId]); + return result.rows[0]; + }, + + /** + * Удалить запись о файле по S3 ключу + */ + async deleteByKeyAndOwner(s3Key, userId) { + const query = ` + DELETE FROM uno_bff.user_files + WHERE s3_key = $1 AND user_id = $2 + RETURNING s3_key + `; + + const result = await pool.query(query, [s3Key, userId]); + return result.rows[0]; + }, + + /** + * Получить файлы генерации + */ + async findByGeneration(generationUuid, userId) { + const query = ` + SELECT id, user_id, s3_key, original_filename, file_size, content_type, file_type, folder, generation_uuid, generation_step_id, created_at + FROM uno_bff.user_files + WHERE generation_uuid = $1 AND user_id = $2 + ORDER BY created_at ASC + `; + + const result = await pool.query(query, [generationUuid, userId]); + return result.rows; + }, + + /** + * Получить файлы шага генерации + */ + async findByGenerationStep(generationUuid, stepId, userId) { + const query = ` + SELECT f.id, f.user_id, f.s3_key, f.original_filename, f.file_size, f.content_type, f.file_type, f.folder, f.generation_uuid, f.generation_step_id, f.created_at + FROM uno_bff.user_files f + INNER JOIN uno_bff.generation_steps gs ON f.generation_step_id = gs.id + WHERE f.generation_uuid = $1 AND gs.step_id = $2 AND f.user_id = $3 + ORDER BY f.created_at ASC + `; + + const result = await pool.query(query, [generationUuid, stepId, userId]); + return result.rows; + }, +}; diff --git a/bff/repositories/user.repository.js b/bff/repositories/user.repository.js new file mode 100644 index 0000000..2180bab --- /dev/null +++ b/bff/repositories/user.repository.js @@ -0,0 +1,105 @@ +import { pool } from "../db.js"; + +export async function findUserByEmail(email) { + const { rows } = await pool.query(` + SELECT id, email, password_hash, display_name, role, status, balance, last_login_at, created_at, updated_at + FROM uno_bff.users WHERE lower(email) = lower($1) LIMIT 1 + `, [email]); + return rows[0] || null; +} + +export async function findUserByEmailAndPassword(email, password) { + const { rows } = await pool.query(` + SELECT id, email, password_hash, display_name, role, status, balance, last_login_at, created_at, updated_at + FROM uno_bff.users + WHERE lower(email) = lower($1) AND status = 'active' + AND password_hash::text = sites.crypt($2::text, password_hash::text) + LIMIT 1 + `, [email, password]); + return rows[0] || null; +} + +export async function findUserById(userId) { + const { rows } = await pool.query(` + SELECT id, email, display_name, role, status, balance, created_at + FROM uno_bff.users WHERE id = $1 AND status = 'active' + `, [userId]); + return rows[0] || null; +} + +export async function updateUserBalance(userId, delta) { + const { rows } = await pool.query(` + UPDATE uno_bff.users + SET balance = balance + $2, updated_at = NOW() + WHERE id = $1 + RETURNING balance + `, [userId, delta]); + return rows[0]?.balance ?? null; +} + +export async function touchLastLogin(userId) { + await pool.query(`UPDATE uno_bff.users SET last_login_at = now(), updated_at = now() WHERE id = $1`, [userId]); +} + +export async function createUser({ email, password, displayName }) { + const { rows } = await pool.query(` + INSERT INTO uno_bff.users (email, password_hash, display_name, role, status) + VALUES (lower($1), sites.crypt($2::text, sites.gen_salt('bf', 10)), $3, 'user', 'active') + RETURNING id, email, display_name, role, status, balance, created_at + `, [email, password, displayName || null]); + return rows[0]; +} + +export async function userExistsByEmail(email) { + const { rows } = await pool.query(`SELECT 1 FROM uno_bff.users WHERE lower(email) = lower($1) LIMIT 1`, [email]); + return rows.length > 0; +} + +export async function findUserByTelegramId(telegramId) { + const { rows } = await pool.query(`SELECT * FROM uno_bff.users WHERE telegram_id = $1 AND status = 'active' LIMIT 1`, [telegramId]); + return rows[0] || null; +} + +export async function linkTelegramToUser(userId, telegramId) { + const { rows } = await pool.query(`UPDATE uno_bff.users SET telegram_id = $2 WHERE id = $1 RETURNING *`, [userId, telegramId]); + return rows[0] || null; +} + +export async function createUserFromTelegram({ telegramId, displayName, email }) { + const { rows } = await pool.query( + `INSERT INTO uno_bff.users (email, password_hash, display_name, telegram_id, role, status) + VALUES (lower($1), '!tg!' || sites.gen_salt('bf', 10), $2, $3, 'user', 'active') + RETURNING id, email, display_name, role, status, balance, telegram_id, created_at`, + [email, displayName || null, telegramId] + ); + return rows[0]; +} + +export async function countTelegramSignupsByIpLast24h(ipAddress) { + if (!ipAddress) return 0; + const { rows } = await pool.query( + `SELECT COUNT(*)::int AS c FROM uno_bff.signup_attempts + WHERE ip_address = $1 AND provider = 'telegram' AND created_at > now() - interval '24 hours'`, + [ipAddress] + ); + return rows[0]?.c ?? 0; +} + +export async function recordSignupAttempt({ ipAddress, provider, telegramId, userAgent }) { + await pool.query( + `INSERT INTO uno_bff.signup_attempts (ip_address, provider, telegram_id, user_agent) + VALUES ($1, $2, $3, $4)`, + [ipAddress || null, provider, telegramId || null, userAgent || null] + ); +} + +export async function findTelegramOwner(telegramId) { + const { rows } = await pool.query(`SELECT id FROM uno_bff.users WHERE telegram_id = $1 LIMIT 1`, [telegramId]); + return rows[0] || null; +} + +export async function unlinkTelegramFromUser(userId) { + const { rows } = await pool.query(`UPDATE uno_bff.users SET telegram_id = NULL, updated_at = now() WHERE id = $1 RETURNING id`, [userId]); + return rows[0] || null; +} + diff --git a/bff/repositories/user.repository.js.bak.20260423_095808 b/bff/repositories/user.repository.js.bak.20260423_095808 new file mode 100644 index 0000000..809bc8d --- /dev/null +++ b/bff/repositories/user.repository.js.bak.20260423_095808 @@ -0,0 +1,66 @@ +import { pool } from "../db.js"; + +export async function findUserByEmail(email) { + const { rows } = await pool.query(` + SELECT id, email, password_hash, display_name, role, status, balance, last_login_at, created_at, updated_at + FROM uno_bff.users WHERE lower(email) = lower($1) LIMIT 1 + `, [email]); + return rows[0] || null; +} + +export async function findUserByEmailAndPassword(email, password) { + const { rows } = await pool.query(` + SELECT id, email, password_hash, display_name, role, status, balance, last_login_at, created_at, updated_at + FROM uno_bff.users + WHERE lower(email) = lower($1) AND status = 'active' + AND password_hash::text = sites.crypt($2::text, password_hash::text) + LIMIT 1 + `, [email, password]); + return rows[0] || null; +} + +export async function findUserById(userId) { + const { rows } = await pool.query(` + SELECT id, email, display_name, role, status, balance, created_at + FROM uno_bff.users WHERE id = $1 AND status = 'active' + `, [userId]); + return rows[0] || null; +} + +export async function updateUserBalance(userId, delta) { + const { rows } = await pool.query(` + UPDATE uno_bff.users + SET balance = balance + $2, updated_at = NOW() + WHERE id = $1 + RETURNING balance + `, [userId, delta]); + return rows[0]?.balance ?? null; +} + +export async function touchLastLogin(userId) { + await pool.query(`UPDATE uno_bff.users SET last_login_at = now(), updated_at = now() WHERE id = $1`, [userId]); +} + +export async function createUser({ email, password, displayName }) { + const { rows } = await pool.query(` + INSERT INTO uno_bff.users (email, password_hash, display_name, role, status) + VALUES (lower($1), sites.crypt($2::text, sites.gen_salt('bf', 10)), $3, 'user', 'active') + RETURNING id, email, display_name, role, status, balance, created_at + `, [email, password, displayName || null]); + return rows[0]; +} + +export async function userExistsByEmail(email) { + const { rows } = await pool.query(`SELECT 1 FROM uno_bff.users WHERE lower(email) = lower($1) LIMIT 1`, [email]); + return rows.length > 0; +} + +export async function findUserByTelegramId(telegramId) { + const { rows } = await pool.query(`SELECT * FROM uno_bff.users WHERE telegram_id = $1 AND status = 'active' LIMIT 1`, [telegramId]); + return rows[0] || null; +} + +export async function linkTelegramToUser(userId, telegramId) { + const { rows } = await pool.query(`UPDATE uno_bff.users SET telegram_id = $2 WHERE id = $1 RETURNING *`, [userId, telegramId]); + return rows[0] || null; +} diff --git a/bff/repositories/user.repository.js.bak.20260423_102956 b/bff/repositories/user.repository.js.bak.20260423_102956 new file mode 100644 index 0000000..c4f8131 --- /dev/null +++ b/bff/repositories/user.repository.js.bak.20260423_102956 @@ -0,0 +1,94 @@ +import { pool } from "../db.js"; + +export async function findUserByEmail(email) { + const { rows } = await pool.query(` + SELECT id, email, password_hash, display_name, role, status, balance, last_login_at, created_at, updated_at + FROM uno_bff.users WHERE lower(email) = lower($1) LIMIT 1 + `, [email]); + return rows[0] || null; +} + +export async function findUserByEmailAndPassword(email, password) { + const { rows } = await pool.query(` + SELECT id, email, password_hash, display_name, role, status, balance, last_login_at, created_at, updated_at + FROM uno_bff.users + WHERE lower(email) = lower($1) AND status = 'active' + AND password_hash::text = sites.crypt($2::text, password_hash::text) + LIMIT 1 + `, [email, password]); + return rows[0] || null; +} + +export async function findUserById(userId) { + const { rows } = await pool.query(` + SELECT id, email, display_name, role, status, balance, created_at + FROM uno_bff.users WHERE id = $1 AND status = 'active' + `, [userId]); + return rows[0] || null; +} + +export async function updateUserBalance(userId, delta) { + const { rows } = await pool.query(` + UPDATE uno_bff.users + SET balance = balance + $2, updated_at = NOW() + WHERE id = $1 + RETURNING balance + `, [userId, delta]); + return rows[0]?.balance ?? null; +} + +export async function touchLastLogin(userId) { + await pool.query(`UPDATE uno_bff.users SET last_login_at = now(), updated_at = now() WHERE id = $1`, [userId]); +} + +export async function createUser({ email, password, displayName }) { + const { rows } = await pool.query(` + INSERT INTO uno_bff.users (email, password_hash, display_name, role, status) + VALUES (lower($1), sites.crypt($2::text, sites.gen_salt('bf', 10)), $3, 'user', 'active') + RETURNING id, email, display_name, role, status, balance, created_at + `, [email, password, displayName || null]); + return rows[0]; +} + +export async function userExistsByEmail(email) { + const { rows } = await pool.query(`SELECT 1 FROM uno_bff.users WHERE lower(email) = lower($1) LIMIT 1`, [email]); + return rows.length > 0; +} + +export async function findUserByTelegramId(telegramId) { + const { rows } = await pool.query(`SELECT * FROM uno_bff.users WHERE telegram_id = $1 AND status = 'active' LIMIT 1`, [telegramId]); + return rows[0] || null; +} + +export async function linkTelegramToUser(userId, telegramId) { + const { rows } = await pool.query(`UPDATE uno_bff.users SET telegram_id = $2 WHERE id = $1 RETURNING *`, [userId, telegramId]); + return rows[0] || null; +} + +export async function createUserFromTelegram({ telegramId, displayName, email }) { + const { rows } = await pool.query( + `INSERT INTO uno_bff.users (email, password_hash, display_name, telegram_id, role, status) + VALUES (lower($1), '!tg!' || sites.gen_salt('bf', 10), $2, $3, 'user', 'active') + RETURNING id, email, display_name, role, status, balance, telegram_id, created_at`, + [email, displayName || null, telegramId] + ); + return rows[0]; +} + +export async function countTelegramSignupsByIpLast24h(ipAddress) { + if (!ipAddress) return 0; + const { rows } = await pool.query( + `SELECT COUNT(*)::int AS c FROM uno_bff.signup_attempts + WHERE ip_address = $1 AND provider = 'telegram' AND created_at > now() - interval '24 hours'`, + [ipAddress] + ); + return rows[0]?.c ?? 0; +} + +export async function recordSignupAttempt({ ipAddress, provider, telegramId, userAgent }) { + await pool.query( + `INSERT INTO uno_bff.signup_attempts (ip_address, provider, telegram_id, user_agent) + VALUES ($1, $2, $3, $4)`, + [ipAddress || null, provider, telegramId || null, userAgent || null] + ); +} diff --git a/bff/routes/auth.routes.js b/bff/routes/auth.routes.js new file mode 100644 index 0000000..88d265c --- /dev/null +++ b/bff/routes/auth.routes.js @@ -0,0 +1,315 @@ +import { Router } from 'express'; +import { env } from '../config/env.js'; +import { loginUser, logoutUser, refreshUserSession, registerUser, loginWithTelegram, loginWithTelegramInitData, linkTelegramAccount, unlinkTelegramAccount, startTelegramLoginFlow, pollTelegramLoginFlow } from '../services/auth.service.js'; +import { authRequired } from '../middleware/authRequired.js'; +import { findUserById, updateUserBalance } from '../repositories/user.repository.js'; + +const router = Router(); + +function buildAccessCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.ACCESS_TOKEN_TTL_SEC * 1000, + }; +} + +function buildRefreshCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +function buildCsrfCookieOptions() { + return { + httpOnly: false, // фронту надо прочитать и отправить в header + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для работы с __Host- префиксом + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +router.post('/login', async (req, res, next) => { + try { + const { email, password } = req.body; + + const result = await loginUser({ + email, + password, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.post('/logout', authRequired, async (req, res, next) => { + try { + await logoutUser({ sessionId: req.user.sessionId }); + + res.clearCookie(env.COOKIE_ACCESS_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_REFRESH_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_CSRF_NAME, { path: '/' }); + + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +router.post('/refresh', async (req, res, next) => { + try { + const refreshToken = req.cookies?.[env.COOKIE_REFRESH_NAME]; + + if (!refreshToken) { + return res.status(401).json({ + error: 'REFRESH_TOKEN_MISSING', + message: 'Refresh token is missing', + }); + } + + const result = await refreshUserSession({ + refreshToken, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.get('/me', authRequired, async (req, res) => { + try { + const dbUser = await findUserById(req.user.id); + if (!dbUser) return res.status(401).json({ error: 'USER_NOT_FOUND' }); + res.json({ + ok: true, + user: { + id: dbUser.id, + email: dbUser.email, + displayName: dbUser.display_name, + role: dbUser.role, + status: dbUser.status, + balance: Number(dbUser.balance || 0), + createdAt: dbUser.created_at, + sessionId: req.user.sessionId, + telegramLinked: dbUser.telegram_id != null, + }, + }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.post('/balance/update', authRequired, async (req, res) => { + const delta = Number(req.body.delta); + if (!delta || isNaN(delta)) return res.status(400).json({ error: 'delta required' }); + try { + const newBalance = await updateUserBalance(req.user.id, delta); + if (newBalance === null) return res.status(404).json({ error: 'User not found' }); + res.json({ ok: true, balance: Number(newBalance) }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.get('/csrf', authRequired, async (req, res) => { + res.json({ + ok: true, + csrfToken: req.cookies?.[env.COOKIE_CSRF_NAME] || null, + }); +}); + + +router.post('/register', async (req, res, next) => { + try { + const { email, password, name } = req.body; + + const result = await registerUser({ + email, + password, + displayName: name || null, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(201).json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + if (err.statusCode === 409) { + return res.status(409).json({ ok: false, error: err.code, message: err.message }); + } + if (err.statusCode === 400) { + return res.status(400).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.post('/telegram', async (req, res, next) => { + try { + const result = await loginWithTelegram({ + telegramData: req.body, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(200).json({ ok: true, accessToken: result.accessToken, user: result.user }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) { + return res.status(status).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.get('/telegram-widget', (req, res) => { + res.setHeader('Content-Type', 'text/html; charset=utf-8'); + res.send('\nTelegram Auth

One Click

Войдите через Telegram

'); +}); + +router.post('/telegram/link', authRequired, async (req, res, next) => { + try { + const result = await linkTelegramAccount({ userId: req.user.id, telegramData: req.body }); + res.status(200).json(result); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + +router.post('/telegram/unlink', authRequired, async (req, res, next) => { + try { + const result = await unlinkTelegramAccount(req.user.id); + res.status(200).json(result); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + + +router.post('/telegram/start', async (req, res, next) => { + try { + const result = await startTelegramLoginFlow({ + intent: 'login', + userId: null, + ipAddress: req.ip || null, + userAgent: req.get('user-agent') || null, + }); + res.json({ ok: true, token: result.token, url: result.url, ttlSec: result.ttlSec }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + +router.post('/telegram/start-link', authRequired, async (req, res, next) => { + try { + const result = await startTelegramLoginFlow({ + intent: 'link', + userId: req.user.id, + ipAddress: req.ip || null, + userAgent: req.get('user-agent') || null, + }); + res.json({ ok: true, token: result.token, url: result.url, ttlSec: result.ttlSec }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + +router.get('/telegram/poll/:token', async (req, res, next) => { + try { + const result = await pollTelegramLoginFlow({ + token: req.params.token, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + if (result.status === 'authenticated') { + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + return res.json({ ok: true, status: 'authenticated', accessToken: result.accessToken, user: result.user }); + } + if (result.status === 'linked') return res.json({ ok: true, status: 'linked' }); + if (result.status === 'pending') return res.json({ ok: true, status: 'pending' }); + if (result.status === 'consumed') return res.status(410).json({ ok: false, status: 'consumed', message: 'Эта ссылка уже использована.' }); + if (result.status === 'expired') return res.status(410).json({ ok: false, status: 'expired', message: 'Срок действия ссылки истёк.' }); + if (result.status === 'not_found') return res.status(404).json({ ok: false, status: 'not_found', message: 'Запрос не найден.' }); + if (result.status === 'error') return res.status(400).json({ ok: false, status: 'error', error: result.code }); + return res.json({ ok: true, status: result.status }); + } catch (err) { next(err); } +}); + + +export default router; +router.post('/telegram/webapp', async (req, res, next) => { + try { + const result = await loginWithTelegramInitData({ + initData: req.body && req.body.initData, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(200).json({ ok: true, accessToken: result.accessToken, user: result.user }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) { + return res.status(status).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); diff --git a/bff/routes/auth.routes.js.bak.20260423_095808 b/bff/routes/auth.routes.js.bak.20260423_095808 new file mode 100644 index 0000000..8efe67f --- /dev/null +++ b/bff/routes/auth.routes.js.bak.20260423_095808 @@ -0,0 +1,213 @@ +import { Router } from 'express'; +import { env } from '../config/env.js'; +import { loginUser, logoutUser, refreshUserSession, registerUser, loginWithTelegram } from '../services/auth.service.js'; +import { authRequired } from '../middleware/authRequired.js'; +import { findUserById, updateUserBalance } from '../repositories/user.repository.js'; + +const router = Router(); + +function buildAccessCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.ACCESS_TOKEN_TTL_SEC * 1000, + }; +} + +function buildRefreshCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +function buildCsrfCookieOptions() { + return { + httpOnly: false, // фронту надо прочитать и отправить в header + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для работы с __Host- префиксом + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +router.post('/login', async (req, res, next) => { + try { + const { email, password } = req.body; + + const result = await loginUser({ + email, + password, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.post('/logout', authRequired, async (req, res, next) => { + try { + await logoutUser({ sessionId: req.user.sessionId }); + + res.clearCookie(env.COOKIE_ACCESS_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_REFRESH_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_CSRF_NAME, { path: '/' }); + + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +router.post('/refresh', async (req, res, next) => { + try { + const refreshToken = req.cookies?.[env.COOKIE_REFRESH_NAME]; + + if (!refreshToken) { + return res.status(401).json({ + error: 'REFRESH_TOKEN_MISSING', + message: 'Refresh token is missing', + }); + } + + const result = await refreshUserSession({ + refreshToken, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.get('/me', authRequired, async (req, res) => { + try { + const dbUser = await findUserById(req.user.id); + if (!dbUser) return res.status(401).json({ error: 'USER_NOT_FOUND' }); + res.json({ + ok: true, + user: { + id: dbUser.id, + email: dbUser.email, + displayName: dbUser.display_name, + role: dbUser.role, + status: dbUser.status, + balance: Number(dbUser.balance || 0), + createdAt: dbUser.created_at, + sessionId: req.user.sessionId, + }, + }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.post('/balance/update', authRequired, async (req, res) => { + const delta = Number(req.body.delta); + if (!delta || isNaN(delta)) return res.status(400).json({ error: 'delta required' }); + try { + const newBalance = await updateUserBalance(req.user.id, delta); + if (newBalance === null) return res.status(404).json({ error: 'User not found' }); + res.json({ ok: true, balance: Number(newBalance) }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.get('/csrf', authRequired, async (req, res) => { + res.json({ + ok: true, + csrfToken: req.cookies?.[env.COOKIE_CSRF_NAME] || null, + }); +}); + + +router.post('/register', async (req, res, next) => { + try { + const { email, password, name } = req.body; + + const result = await registerUser({ + email, + password, + displayName: name || null, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(201).json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + if (err.statusCode === 409) { + return res.status(409).json({ ok: false, error: err.code, message: err.message }); + } + if (err.statusCode === 400) { + return res.status(400).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.post('/telegram', async (req, res, next) => { + try { + const result = await loginWithTelegram({ + telegramData: req.body, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(200).json({ ok: true, accessToken: result.accessToken, user: result.user }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) { + return res.status(status).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.get('/telegram-widget', (req, res) => { + res.setHeader('Content-Type', 'text/html; charset=utf-8'); + res.send('\nTelegram Auth

One Click

Войдите через Telegram

'); +}); +export default router; \ No newline at end of file diff --git a/bff/routes/auth.routes.js.bak.20260423_102956 b/bff/routes/auth.routes.js.bak.20260423_102956 new file mode 100644 index 0000000..1425941 --- /dev/null +++ b/bff/routes/auth.routes.js.bak.20260423_102956 @@ -0,0 +1,213 @@ +import { Router } from 'express'; +import { env } from '../config/env.js'; +import { loginUser, logoutUser, refreshUserSession, registerUser, loginWithTelegram } from '../services/auth.service.js'; +import { authRequired } from '../middleware/authRequired.js'; +import { findUserById, updateUserBalance } from '../repositories/user.repository.js'; + +const router = Router(); + +function buildAccessCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.ACCESS_TOKEN_TTL_SEC * 1000, + }; +} + +function buildRefreshCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +function buildCsrfCookieOptions() { + return { + httpOnly: false, // фронту надо прочитать и отправить в header + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для работы с __Host- префиксом + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +router.post('/login', async (req, res, next) => { + try { + const { email, password } = req.body; + + const result = await loginUser({ + email, + password, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.post('/logout', authRequired, async (req, res, next) => { + try { + await logoutUser({ sessionId: req.user.sessionId }); + + res.clearCookie(env.COOKIE_ACCESS_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_REFRESH_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_CSRF_NAME, { path: '/' }); + + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +router.post('/refresh', async (req, res, next) => { + try { + const refreshToken = req.cookies?.[env.COOKIE_REFRESH_NAME]; + + if (!refreshToken) { + return res.status(401).json({ + error: 'REFRESH_TOKEN_MISSING', + message: 'Refresh token is missing', + }); + } + + const result = await refreshUserSession({ + refreshToken, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.get('/me', authRequired, async (req, res) => { + try { + const dbUser = await findUserById(req.user.id); + if (!dbUser) return res.status(401).json({ error: 'USER_NOT_FOUND' }); + res.json({ + ok: true, + user: { + id: dbUser.id, + email: dbUser.email, + displayName: dbUser.display_name, + role: dbUser.role, + status: dbUser.status, + balance: Number(dbUser.balance || 0), + createdAt: dbUser.created_at, + sessionId: req.user.sessionId, + }, + }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.post('/balance/update', authRequired, async (req, res) => { + const delta = Number(req.body.delta); + if (!delta || isNaN(delta)) return res.status(400).json({ error: 'delta required' }); + try { + const newBalance = await updateUserBalance(req.user.id, delta); + if (newBalance === null) return res.status(404).json({ error: 'User not found' }); + res.json({ ok: true, balance: Number(newBalance) }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.get('/csrf', authRequired, async (req, res) => { + res.json({ + ok: true, + csrfToken: req.cookies?.[env.COOKIE_CSRF_NAME] || null, + }); +}); + + +router.post('/register', async (req, res, next) => { + try { + const { email, password, name } = req.body; + + const result = await registerUser({ + email, + password, + displayName: name || null, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(201).json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + if (err.statusCode === 409) { + return res.status(409).json({ ok: false, error: err.code, message: err.message }); + } + if (err.statusCode === 400) { + return res.status(400).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.post('/telegram', async (req, res, next) => { + try { + const result = await loginWithTelegram({ + telegramData: req.body, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(200).json({ ok: true, accessToken: result.accessToken, user: result.user }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) { + return res.status(status).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.get('/telegram-widget', (req, res) => { + res.setHeader('Content-Type', 'text/html; charset=utf-8'); + res.send('\nTelegram Auth

One Click

Войдите через Telegram

'); +}); +export default router; \ No newline at end of file diff --git a/bff/routes/auth.routes.js.bak.20260423_104351 b/bff/routes/auth.routes.js.bak.20260423_104351 new file mode 100644 index 0000000..2aa6bf8 --- /dev/null +++ b/bff/routes/auth.routes.js.bak.20260423_104351 @@ -0,0 +1,237 @@ +import { Router } from 'express'; +import { env } from '../config/env.js'; +import { loginUser, logoutUser, refreshUserSession, registerUser, loginWithTelegram, linkTelegramAccount, unlinkTelegramAccount } from '../services/auth.service.js'; +import { authRequired } from '../middleware/authRequired.js'; +import { findUserById, updateUserBalance } from '../repositories/user.repository.js'; + +const router = Router(); + +function buildAccessCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.ACCESS_TOKEN_TTL_SEC * 1000, + }; +} + +function buildRefreshCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +function buildCsrfCookieOptions() { + return { + httpOnly: false, // фронту надо прочитать и отправить в header + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для работы с __Host- префиксом + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +router.post('/login', async (req, res, next) => { + try { + const { email, password } = req.body; + + const result = await loginUser({ + email, + password, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.post('/logout', authRequired, async (req, res, next) => { + try { + await logoutUser({ sessionId: req.user.sessionId }); + + res.clearCookie(env.COOKIE_ACCESS_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_REFRESH_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_CSRF_NAME, { path: '/' }); + + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +router.post('/refresh', async (req, res, next) => { + try { + const refreshToken = req.cookies?.[env.COOKIE_REFRESH_NAME]; + + if (!refreshToken) { + return res.status(401).json({ + error: 'REFRESH_TOKEN_MISSING', + message: 'Refresh token is missing', + }); + } + + const result = await refreshUserSession({ + refreshToken, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.get('/me', authRequired, async (req, res) => { + try { + const dbUser = await findUserById(req.user.id); + if (!dbUser) return res.status(401).json({ error: 'USER_NOT_FOUND' }); + res.json({ + ok: true, + user: { + id: dbUser.id, + email: dbUser.email, + displayName: dbUser.display_name, + role: dbUser.role, + status: dbUser.status, + balance: Number(dbUser.balance || 0), + createdAt: dbUser.created_at, + sessionId: req.user.sessionId, + telegramLinked: dbUser.telegram_id != null, + }, + }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.post('/balance/update', authRequired, async (req, res) => { + const delta = Number(req.body.delta); + if (!delta || isNaN(delta)) return res.status(400).json({ error: 'delta required' }); + try { + const newBalance = await updateUserBalance(req.user.id, delta); + if (newBalance === null) return res.status(404).json({ error: 'User not found' }); + res.json({ ok: true, balance: Number(newBalance) }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.get('/csrf', authRequired, async (req, res) => { + res.json({ + ok: true, + csrfToken: req.cookies?.[env.COOKIE_CSRF_NAME] || null, + }); +}); + + +router.post('/register', async (req, res, next) => { + try { + const { email, password, name } = req.body; + + const result = await registerUser({ + email, + password, + displayName: name || null, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(201).json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + if (err.statusCode === 409) { + return res.status(409).json({ ok: false, error: err.code, message: err.message }); + } + if (err.statusCode === 400) { + return res.status(400).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.post('/telegram', async (req, res, next) => { + try { + const result = await loginWithTelegram({ + telegramData: req.body, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(200).json({ ok: true, accessToken: result.accessToken, user: result.user }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) { + return res.status(status).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.get('/telegram-widget', (req, res) => { + res.setHeader('Content-Type', 'text/html; charset=utf-8'); + res.send('\nTelegram Auth

One Click

Войдите через Telegram

'); +}); + +router.post('/telegram/link', authRequired, async (req, res, next) => { + try { + const result = await linkTelegramAccount({ userId: req.user.id, telegramData: req.body }); + res.status(200).json(result); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + +router.post('/telegram/unlink', authRequired, async (req, res, next) => { + try { + const result = await unlinkTelegramAccount(req.user.id); + res.status(200).json(result); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + +export default router; \ No newline at end of file diff --git a/bff/routes/auth.routes.js.bak.20260423_124500 b/bff/routes/auth.routes.js.bak.20260423_124500 new file mode 100644 index 0000000..c6a692e --- /dev/null +++ b/bff/routes/auth.routes.js.bak.20260423_124500 @@ -0,0 +1,294 @@ +import { Router } from 'express'; +import { env } from '../config/env.js'; +import { loginUser, logoutUser, refreshUserSession, registerUser, loginWithTelegram, linkTelegramAccount, unlinkTelegramAccount, startTelegramLoginFlow, pollTelegramLoginFlow } from '../services/auth.service.js'; +import { authRequired } from '../middleware/authRequired.js'; +import { findUserById, updateUserBalance } from '../repositories/user.repository.js'; + +const router = Router(); + +function buildAccessCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.ACCESS_TOKEN_TTL_SEC * 1000, + }; +} + +function buildRefreshCookieOptions() { + return { + httpOnly: true, + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для __Host- префикса (требование RFC 6265) + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +function buildCsrfCookieOptions() { + return { + httpOnly: false, // фронту надо прочитать и отправить в header + secure: env.COOKIE_SECURE, + sameSite: env.COOKIE_SAME_SITE, + // Domain не указывается для работы с __Host- префиксом + path: '/', + maxAge: env.REFRESH_TOKEN_TTL_SEC * 1000, + }; +} + +router.post('/login', async (req, res, next) => { + try { + const { email, password } = req.body; + + const result = await loginUser({ + email, + password, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.post('/logout', authRequired, async (req, res, next) => { + try { + await logoutUser({ sessionId: req.user.sessionId }); + + res.clearCookie(env.COOKIE_ACCESS_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_REFRESH_NAME, { path: '/' }); + res.clearCookie(env.COOKIE_CSRF_NAME, { path: '/' }); + + res.json({ ok: true }); + } catch (err) { + next(err); + } +}); + +router.post('/refresh', async (req, res, next) => { + try { + const refreshToken = req.cookies?.[env.COOKIE_REFRESH_NAME]; + + if (!refreshToken) { + return res.status(401).json({ + error: 'REFRESH_TOKEN_MISSING', + message: 'Refresh token is missing', + }); + } + + const result = await refreshUserSession({ + refreshToken, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.json({ + ok: true, + user: result.user, + }); + } catch (err) { + next(err); + } +}); + +router.get('/me', authRequired, async (req, res) => { + try { + const dbUser = await findUserById(req.user.id); + if (!dbUser) return res.status(401).json({ error: 'USER_NOT_FOUND' }); + res.json({ + ok: true, + user: { + id: dbUser.id, + email: dbUser.email, + displayName: dbUser.display_name, + role: dbUser.role, + status: dbUser.status, + balance: Number(dbUser.balance || 0), + createdAt: dbUser.created_at, + sessionId: req.user.sessionId, + telegramLinked: dbUser.telegram_id != null, + }, + }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.post('/balance/update', authRequired, async (req, res) => { + const delta = Number(req.body.delta); + if (!delta || isNaN(delta)) return res.status(400).json({ error: 'delta required' }); + try { + const newBalance = await updateUserBalance(req.user.id, delta); + if (newBalance === null) return res.status(404).json({ error: 'User not found' }); + res.json({ ok: true, balance: Number(newBalance) }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +router.get('/csrf', authRequired, async (req, res) => { + res.json({ + ok: true, + csrfToken: req.cookies?.[env.COOKIE_CSRF_NAME] || null, + }); +}); + + +router.post('/register', async (req, res, next) => { + try { + const { email, password, name } = req.body; + + const result = await registerUser({ + email, + password, + displayName: name || null, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(201).json({ + ok: true, + accessToken: result.accessToken, + user: result.user, + }); + } catch (err) { + if (err.statusCode === 409) { + return res.status(409).json({ ok: false, error: err.code, message: err.message }); + } + if (err.statusCode === 400) { + return res.status(400).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.post('/telegram', async (req, res, next) => { + try { + const result = await loginWithTelegram({ + telegramData: req.body, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + + res.status(200).json({ ok: true, accessToken: result.accessToken, user: result.user }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) { + return res.status(status).json({ ok: false, error: err.code, message: err.message }); + } + next(err); + } +}); + + +router.get('/telegram-widget', (req, res) => { + res.setHeader('Content-Type', 'text/html; charset=utf-8'); + res.send('\nTelegram Auth

One Click

Войдите через Telegram

'); +}); + +router.post('/telegram/link', authRequired, async (req, res, next) => { + try { + const result = await linkTelegramAccount({ userId: req.user.id, telegramData: req.body }); + res.status(200).json(result); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + +router.post('/telegram/unlink', authRequired, async (req, res, next) => { + try { + const result = await unlinkTelegramAccount(req.user.id); + res.status(200).json(result); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + + +router.post('/telegram/start', async (req, res, next) => { + try { + const result = await startTelegramLoginFlow({ + intent: 'login', + userId: null, + ipAddress: req.ip || null, + userAgent: req.get('user-agent') || null, + }); + res.json({ ok: true, token: result.token, url: result.url, ttlSec: result.ttlSec }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + +router.post('/telegram/start-link', authRequired, async (req, res, next) => { + try { + const result = await startTelegramLoginFlow({ + intent: 'link', + userId: req.user.id, + ipAddress: req.ip || null, + userAgent: req.get('user-agent') || null, + }); + res.json({ ok: true, token: result.token, url: result.url, ttlSec: result.ttlSec }); + } catch (err) { + const status = err.statusCode || 500; + if (status < 500) return res.status(status).json({ ok: false, error: err.code, message: err.message }); + next(err); + } +}); + +router.get('/telegram/poll/:token', async (req, res, next) => { + try { + const result = await pollTelegramLoginFlow({ + token: req.params.token, + userAgent: req.get('user-agent') || null, + ipAddress: req.ip || null, + }); + if (result.status === 'authenticated') { + res.cookie(env.COOKIE_ACCESS_NAME, result.accessToken, buildAccessCookieOptions()); + res.cookie(env.COOKIE_REFRESH_NAME, result.refreshToken, buildRefreshCookieOptions()); + res.cookie(env.COOKIE_CSRF_NAME, result.csrfToken, buildCsrfCookieOptions()); + return res.json({ ok: true, status: 'authenticated', accessToken: result.accessToken, user: result.user }); + } + if (result.status === 'linked') return res.json({ ok: true, status: 'linked' }); + if (result.status === 'pending') return res.json({ ok: true, status: 'pending' }); + if (result.status === 'consumed') return res.status(410).json({ ok: false, status: 'consumed', message: 'Эта ссылка уже использована.' }); + if (result.status === 'expired') return res.status(410).json({ ok: false, status: 'expired', message: 'Срок действия ссылки истёк.' }); + if (result.status === 'not_found') return res.status(404).json({ ok: false, status: 'not_found', message: 'Запрос не найден.' }); + if (result.status === 'error') return res.status(400).json({ ok: false, status: 'error', error: result.code }); + return res.json({ ok: true, status: result.status }); + } catch (err) { next(err); } +}); + + +export default router; \ No newline at end of file diff --git a/bff/routes/media.routes.js b/bff/routes/media.routes.js new file mode 100644 index 0000000..60aa287 --- /dev/null +++ b/bff/routes/media.routes.js @@ -0,0 +1,232 @@ +import { Router } from "express"; +import { randomUUID } from "crypto"; +import multer from "multer"; +import { + S3Client, PutObjectCommand, GetObjectCommand, + CreateBucketCommand, HeadBucketCommand, +} from "@aws-sdk/client-s3"; +import pg from "pg"; +import { authRequired } from "../middleware/authRequired.js"; + +const { Pool } = pg; +const router = Router(); + +const s3 = new S3Client({ + region: process.env.S3_REGION || "us-east-1", + endpoint: process.env.S3_ENDPOINT || "http://127.0.0.1:9000", + forcePathStyle: true, + credentials: { + accessKeyId: process.env.S3_ACCESS_KEY || "UN0-admin", + secretAccessKey: process.env.S3_SECRET_KEY || "RAygtZHqGN49qKn", + }, +}); +const BUCKET = process.env.S3_BUCKET || "uno-click"; + +const pool = new Pool({ + host: process.env.PG_HOST || "127.0.0.1", + port: Number(process.env.PG_PORT || 5432), + database: process.env.PG_DATABASE || "n8n", + user: process.env.PG_USER || "n8n", + password: process.env.PG_PASSWORD, +}); + +async function ensureBucket() { + try { await s3.send(new HeadBucketCommand({ Bucket: BUCKET })); } + catch { await s3.send(new CreateBucketCommand({ Bucket: BUCKET })); } +} +ensureBucket().catch(console.error); + +// Сохраняем таблицу video_jobs для обратной совместимости (старые задания) +pool.query(`CREATE TABLE IF NOT EXISTS video_jobs ( + job_id TEXT PRIMARY KEY, + status TEXT NOT NULL DEFAULT 'queued', + input_s3_key TEXT, + output_s3_key TEXT, + error_msg TEXT, + created_at TIMESTAMPTZ DEFAULT NOW(), + updated_at TIMESTAMPTZ DEFAULT NOW() +)`).then(() => console.log("[media] video_jobs table ready")).catch(console.error); + +const upload = multer({ + storage: multer.memoryStorage(), + limits: { fileSize: 500 * 1024 * 1024 }, + fileFilter: (req, file, cb) => { + if (file.mimetype.startsWith("video/")) cb(null, true); + else cb(new Error("Only video files allowed")); + }, +}); + +// Рандомные параметры уникализации для ffmpeg-api +function buildFFmpegArgs() { + const r = (a, b) => Math.random() * (b - a) + a; + const hue = r(0, 5).toFixed(1); + const sat = r(0, 5).toFixed(1); + const br = r(-0.05, 0.05).toFixed(2); + const con = r(0.98, 1.05).toFixed(2); + const satv = r(0.95, 1.1).toFixed(2); + const noise = Math.round(r(10, 20)); + const speed = r(0.97, 0.99).toFixed(3); + const tempo = (1 / parseFloat(speed)).toFixed(3); + const scale = r(0.94, 0.98).toFixed(2); + const pad = (1 / parseFloat(scale)).toFixed(4); + const vol = r(1.0, 1.1).toFixed(2); + const crf = Math.round(r(20, 24)); + + return [ + "-c:v", "libx264", "-preset", "medium", "-crf", String(crf), + "-c:a", "aac", "-b:a", "128k", + "-vf", [ + `hue=s=${sat}:h=${hue}`, + `eq=brightness=${br}:contrast=${con}:saturation=${satv}`, + `noise=alls=${noise}:allf=t+u`, + `setpts=${speed}*PTS`, + `scale=iw*${scale}:ih*${scale}`, + `pad=iw*${pad}:ih*${pad}:(ow-iw)/2:(oh-ih)/2`, + ].join(","), + "-af", `volume=${vol},atempo=${tempo}`, + "-max_muxing_queue_size", "1024", + ]; +} + +// ─── POST /api/media/upload-video ───────────────────────────────────────────── +// Принимает видеофайл, сохраняет в MinIO, привязывает к активному сценарию. +// Прямой вызов FFmpeg удалён — запуск уникализации происходит через +// POST /api/scenario/basic-unique/step/run-video → n8n → ffmpeg-api. +router.post("/upload-video", authRequired, upload.single("video"), async (req, res) => { + if (!req.file) return res.status(400).json({ error: "Field video required" }); + + const jobId = randomUUID(); + const userId = req.user.id; + const inputKey = `videos/input/${userId}/${jobId}.mp4`; + const outputKey = `videos/output/${userId}/${jobId}.mp4`; + + // generationUuid может прийти в теле формы (FormData) или из JSON + const generationUuid = req.body?.generationUuid || null; + + try { + // 1. Сохраняем оригинальное видео в MinIO + await s3.send(new PutObjectCommand({ + Bucket: BUCKET, + Key: inputKey, + Body: req.file.buffer, + ContentType: req.file.mimetype || "video/mp4", + })); + + // 2. Если передан generationUuid — сохраняем шаг upload-video в БД, + // чтобы шаг run-video мог прочитать ключи S3 и аргументы ffmpeg. + if (generationUuid) { + const stepPayload = { + input_s3_key: inputKey, + output_s3_key: outputKey, + ffmpeg_args: buildFFmpegArgs(), + }; + await pool.query(` + INSERT INTO uno_bff.generation_steps + (generation_uuid, scenario_id, step_id, step_order, status, request_payload, started_at, finished_at) + VALUES ($1, 'basic-unique', 'upload-video', 1, 'completed', $2, NOW(), NOW()) + ON CONFLICT (generation_uuid, step_id) DO UPDATE + SET status = 'completed', + request_payload = $2, + finished_at = NOW(), + updated_at = NOW() + `, [generationUuid, JSON.stringify(stepPayload)]); + + console.log(`[upload-video] Linked to generation ${generationUuid}, inputKey=${inputKey}`); + } + + // 3. Отвечаем немедленно — FFmpeg НЕ вызываем здесь + return res.json({ + ok: true, + job_id: jobId, + input_s3_key: inputKey, + output_s3_key: outputKey, + generationUuid: generationUuid || null, + }); + + } catch (err) { + console.error("[upload-video]", err); + if (!res.headersSent) res.status(500).json({ error: err.message }); + } +}); + +// ─── GET /api/media/status/:job_id ──────────────────────────────────────────── +// Оставлен для обратной совместимости (старые задания через video_jobs). +router.get("/status/:job_id", async (req, res) => { + const { job_id } = req.params; + try { + const { rows } = await pool.query( + "SELECT status, output_s3_key, error_msg FROM video_jobs WHERE job_id=$1", + [job_id], + ); + if (!rows.length) return res.status(404).json({ error: "Job not found" }); + + const job = rows[0]; + const PUBLIC_BFF = process.env.PUBLIC_BFF_URL || "https://uno-click.pip-test.ru"; + const url = job.status === "done" + ? `${PUBLIC_BFF}/api/media/download/${job_id}` + : null; + + res.json({ status: job.status, url, error: job.error_msg || null }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +// ─── GET /api/media/download/:job_id ────────────────────────────────────────── +// Оставлен для обратной совместимости (старые задания через video_jobs). +router.get("/download/:job_id", async (req, res) => { + const { job_id } = req.params; + try { + const { rows } = await pool.query( + "SELECT status, output_s3_key FROM video_jobs WHERE job_id=$1", + [job_id], + ); + if (!rows.length) return res.status(404).json({ error: "Job not found" }); + if (rows[0].status !== "done") return res.status(409).json({ error: "Not ready yet" }); + + const s3Resp = await s3.send( + new GetObjectCommand({ Bucket: BUCKET, Key: rows[0].output_s3_key }), + ); + res.setHeader("Content-Type", "video/mp4"); + res.setHeader("Content-Disposition", `attachment; filename="uniqueized_${job_id}.mp4"`); + if (s3Resp.ContentLength) res.setHeader("Content-Length", s3Resp.ContentLength); + s3Resp.Body.pipe(res); + } catch (err) { + console.error("[download]", err); + res.status(500).json({ error: err.message }); + } +}); + + +// ─── GET /api/media/video/:generationUuid ───────────────────────────────────── +// Стримит уникализованное видео из MinIO по generationUuid. +// URL используется n8n result-воркфлоу в ответе на поллинг. +router.get('/video/:generationUuid', async (req, res) => { + const { generationUuid } = req.params; + try { + const { rows } = await pool.query( + `SELECT response_payload FROM uno_bff.generation_steps + WHERE generation_uuid = $1 AND step_id = 'run-video' AND status = 'completed' + ORDER BY created_at DESC LIMIT 1`, + [generationUuid] + ); + if (!rows.length) return res.status(404).json({ error: 'Video not ready or not found' }); + + const payload = rows[0].response_payload; + const outputKey = typeof payload === 'string' ? JSON.parse(payload).output_s3_key : payload.output_s3_key; + if (!outputKey) return res.status(404).json({ error: 'output_s3_key missing' }); + + const s3Resp = await s3.send( + new GetObjectCommand({ Bucket: BUCKET, Key: outputKey }) + ); + res.setHeader('Content-Type', 'video/mp4'); + res.setHeader('Content-Disposition', `attachment; filename=video_${generationUuid}.mp4`); + if (s3Resp.ContentLength) res.setHeader('Content-Length', s3Resp.ContentLength); + s3Resp.Body.pipe(res); + } catch (err) { + console.error('[video-by-generation]', err); + if (!res.headersSent) res.status(500).json({ error: err.message }); + } +}); + +export default router; diff --git a/bff/routes/media.routes.js.bak b/bff/routes/media.routes.js.bak new file mode 100644 index 0000000..4bffa5b --- /dev/null +++ b/bff/routes/media.routes.js.bak @@ -0,0 +1,214 @@ +import { Router } from "express"; +import { randomUUID } from "crypto"; +import multer from "multer"; +import { + S3Client, PutObjectCommand, GetObjectCommand, + CreateBucketCommand, HeadBucketCommand, +} from "@aws-sdk/client-s3"; +import pg from "pg"; + +const { Pool } = pg; +const router = Router(); + +const s3 = new S3Client({ + region: process.env.S3_REGION || "us-east-1", + endpoint: process.env.S3_ENDPOINT || "http://127.0.0.1:9000", + forcePathStyle: true, + credentials: { + accessKeyId: process.env.S3_ACCESS_KEY || "UN0-admin", + secretAccessKey: process.env.S3_SECRET_KEY || "RAygtZHqGN49qKn", + }, +}); +const BUCKET = process.env.S3_BUCKET || "uno-click"; + +// ffmpeg-api теперь доступен на хосте через 127.0.0.1:8000 +const FFMPEG_API = process.env.FFMPEG_API_URL || "http://127.0.0.1:8000"; + +const pool = new Pool({ + host: process.env.PG_HOST || "127.0.0.1", + port: Number(process.env.PG_PORT || 5432), + database: process.env.PG_DATABASE || "n8n", + user: process.env.PG_USER || "n8n", + password: process.env.PG_PASSWORD, +}); + +async function ensureBucket() { + try { await s3.send(new HeadBucketCommand({ Bucket: BUCKET })); } + catch { await s3.send(new CreateBucketCommand({ Bucket: BUCKET })); } +} +ensureBucket().catch(console.error); + +pool.query(`CREATE TABLE IF NOT EXISTS video_jobs ( + job_id TEXT PRIMARY KEY, + status TEXT NOT NULL DEFAULT 'queued', + input_s3_key TEXT, + output_s3_key TEXT, + error_msg TEXT, + created_at TIMESTAMPTZ DEFAULT NOW(), + updated_at TIMESTAMPTZ DEFAULT NOW() +)`).then(() => console.log("[media] video_jobs table ready")).catch(console.error); + +const upload = multer({ + storage: multer.memoryStorage(), + limits: { fileSize: 500 * 1024 * 1024 }, + fileFilter: (req, file, cb) => { + if (file.mimetype.startsWith("video/")) cb(null, true); + else cb(new Error("Only video files allowed")); + }, +}); + +// Рандомные параметры уникализации для ffmpeg-api +function buildFFmpegArgs() { + const r = (a, b) => Math.random() * (b - a) + a; + const hue = r(0, 5).toFixed(1); + const sat = r(0, 5).toFixed(1); + const br = r(-0.05, 0.05).toFixed(2); + const con = r(0.98, 1.05).toFixed(2); + const satv = r(0.95, 1.1).toFixed(2); + const noise = Math.round(r(10, 20)); + const speed = r(0.97, 0.99).toFixed(3); + const tempo = (1 / parseFloat(speed)).toFixed(3); + const scale = r(0.94, 0.98).toFixed(2); + const pad = (1 / parseFloat(scale)).toFixed(4); + const vol = r(1.0, 1.1).toFixed(2); + const crf = Math.round(r(20, 24)); + + return [ + "-c:v", "libx264", "-preset", "medium", "-crf", String(crf), + "-c:a", "aac", "-b:a", "128k", + "-vf", [ + `hue=s=${sat}:h=${hue}`, + `eq=brightness=${br}:contrast=${con}:saturation=${satv}`, + `noise=alls=${noise}:allf=t+u`, + `setpts=${speed}*PTS`, + `scale=iw*${scale}:ih*${scale}`, + `pad=iw*${pad}:ih*${pad}:(ow-iw)/2:(oh-ih)/2`, + ].join(","), + "-af", `volume=${vol},atempo=${tempo}`, + "-max_muxing_queue_size", "1024", + ]; +} + +// Вызывает ffmpeg-api /run-s3 асинхронно, потом обновляет БД +async function processVideoJob(jobId, inputKey, outputKey) { + console.log("[media] calling ffmpeg-api for job:", jobId); + try { + await pool.query( + "UPDATE video_jobs SET status='processing', updated_at=NOW() WHERE job_id=$1", + [jobId], + ); + + const body = { + job_id: jobId, + input_s3: `s3://${BUCKET}/${inputKey}`, + output_s3: `s3://${BUCKET}/${outputKey}`, + ffmpeg_args: buildFFmpegArgs(), + }; + + const resp = await fetch(`${FFMPEG_API}/run-s3`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(body), + signal: AbortSignal.timeout(600_000), // 10 минут + }); + + const data = await resp.json(); + console.log("[media] ffmpeg-api response:", resp.status, JSON.stringify(data).slice(0, 200)); + + if (!resp.ok || !data.ok) { + throw new Error(data.detail ? JSON.stringify(data.detail) : "ffmpeg-api error"); + } + + await pool.query( + "UPDATE video_jobs SET status='done', updated_at=NOW() WHERE job_id=$1", + [jobId], + ); + console.log("[media] job done:", jobId); + } catch (err) { + console.error("[media] job failed:", jobId, err.message); + await pool.query( + "UPDATE video_jobs SET status='error', error_msg=$2, updated_at=NOW() WHERE job_id=$1", + [jobId, err.message], + ).catch(() => {}); + } +} + +// ─── POST /api/media/upload-video ───────────────────────────────────────────── +router.post("/upload-video", upload.single("video"), async (req, res) => { + if (!req.file) return res.status(400).json({ error: "Field video required" }); + const jobId = randomUUID(); + const inputKey = `videos/input/${jobId}.mp4`; + const outputKey = `videos/output/${jobId}.mp4`; + + try { + // 1. Загружаем в MinIO + await s3.send(new PutObjectCommand({ + Bucket: BUCKET, Key: inputKey, + Body: req.file.buffer, ContentType: req.file.mimetype || "video/mp4", + })); + + // 2. Создаём задачу в БД + await pool.query( + "INSERT INTO video_jobs (job_id, status, input_s3_key, output_s3_key) VALUES ($1,$2,$3,$4)", + [jobId, "queued", inputKey, outputKey], + ); + + // 3. Отвечаем фронту немедленно + res.json({ ok: true, job_id: jobId }); + + // 4. Запускаем FFmpeg через ffmpeg-api в фоне (не блокирует ответ) + processVideoJob(jobId, inputKey, outputKey); + + } catch (err) { + console.error("[upload-video]", err); + if (!res.headersSent) res.status(500).json({ error: err.message }); + } +}); + +// ─── GET /api/media/status/:job_id ──────────────────────────────────────────── +router.get("/status/:job_id", async (req, res) => { + const { job_id } = req.params; + try { + const { rows } = await pool.query( + "SELECT status, output_s3_key, error_msg FROM video_jobs WHERE job_id=$1", + [job_id], + ); + if (!rows.length) return res.status(404).json({ error: "Job not found" }); + + const job = rows[0]; + const PUBLIC_BFF = process.env.PUBLIC_BFF_URL || "https://uno-click.pip-test.ru"; + const url = job.status === "done" + ? `${PUBLIC_BFF}/api/media/download/${job_id}` + : null; + + res.json({ status: job.status, url, error: job.error_msg || null }); + } catch (err) { + res.status(500).json({ error: err.message }); + } +}); + +// ─── GET /api/media/download/:job_id ────────────────────────────────────────── +router.get("/download/:job_id", async (req, res) => { + const { job_id } = req.params; + try { + const { rows } = await pool.query( + "SELECT status, output_s3_key FROM video_jobs WHERE job_id=$1", + [job_id], + ); + if (!rows.length) return res.status(404).json({ error: "Job not found" }); + if (rows[0].status !== "done") return res.status(409).json({ error: "Not ready yet" }); + + const s3Resp = await s3.send( + new GetObjectCommand({ Bucket: BUCKET, Key: rows[0].output_s3_key }), + ); + res.setHeader("Content-Type", "video/mp4"); + res.setHeader("Content-Disposition", `attachment; filename="uniqueized_${job_id}.mp4"`); + if (s3Resp.ContentLength) res.setHeader("Content-Length", s3Resp.ContentLength); + s3Resp.Body.pipe(res); + } catch (err) { + console.error("[download]", err); + res.status(500).json({ error: err.message }); + } +}); + +export default router; diff --git a/bff/routes/result.routes.js b/bff/routes/result.routes.js new file mode 100644 index 0000000..01b60f6 --- /dev/null +++ b/bff/routes/result.routes.js @@ -0,0 +1,178 @@ +import { Router } from 'express'; +import { authRequired } from '../middleware/authRequired.js'; +import * as resultService from '../services/result.service.js'; +import axios from 'axios'; +import { env } from '../config/env.js'; + +const router = Router(); + +/** + * GET /api/result/:generationUuid + * Получить результат генерации + */ +router.get('/:generationUuid', authRequired, async (req, res, next) => { + try { + const { generationUuid } = req.params; + const userId = req.user.id; + + // Получаем метаданные генерации из БД (только для получения scenarioId) + const generationMeta = await resultService.getGenerationMeta({ userId, generationUuid }); + + if (!generationMeta) { + return res.status(404).json({ + error: 'NOT_FOUND', + message: 'Result not found or access denied', + }); + } + + // Вызываем n8n webhook для получения результата + const stepData = {}; + + const n8nUrl = 'https://n8n.uno-click.pip-test.ru/webhook/result'; + const n8nResponse = await axios.post(n8nUrl, { + meta: { generationUuid, userId, scenarioId: generationMeta.scenarioId, stepData }, + body: stepData + }); + + // Проверяем формат ответа от n8n + const n8nData = n8nResponse.data; + console.log('[result] n8n response:', JSON.stringify(n8nData, null, 2)); + + // n8n может вернуть данные в разных форматах + // Формат 1: { response: { body: { success: {...} } } } + // Формат 2: { success: {...} } + // Формат 3: [{ response: { body: { success: {...} } } }] - массив + let responseData = n8nData; + + // Если массив - берём первый элемент + if (Array.isArray(n8nData) && n8nData.length > 0) { + responseData = n8nData[0]; + } + + // Если есть response.body - извлекаем + if (responseData?.response?.body) { + responseData = responseData.response.body; + } + + console.log('[result] extracted responseData:', JSON.stringify(responseData, null, 2)); + + // Вариант 1: n8n вернул output_s3 в response_payload + if (responseData?.success?.response_payload?.output_s3) { + const s3Key = responseData.success.response_payload.output_s3.replace('s3://uno-click/', ''); + const publicUrl = `/files/${s3Key}`; + + return res.json({ + ok: true, + result: { + generationUuid, + scenarioId: generationMeta.scenarioId, + scenarioName: generationMeta.scenarioName, + status: 'completed', + files: [{ + contentType: 'video', + url: publicUrl, + }], + }, + }); + } + + // Вариант 2: n8n вернул files массив с s3:// URL + if (responseData?.success?.files && Array.isArray(responseData.success.files)) { + const convertedFiles = responseData.success.files.map(file => { + // Конвертируем s3:// в /files/... + // Поддерживаем оба формата: { url: "s3://..." } и { output_s3: "s3://..." } + let fileUrl = file.url || file.output_s3; + + if (fileUrl && fileUrl.startsWith('s3://uno-click/')) { + const s3Key = fileUrl.replace('s3://uno-click/', ''); + return { + contentType: file.contentType, + url: `/files/${s3Key}`, + }; + } + return file; + }); + + return res.json({ + ok: true, + result: { + generationUuid, + scenarioId: generationMeta.scenarioId, + scenarioName: generationMeta.scenarioName, + status: 'completed', + files: convertedFiles, + }, + }); + } + + // Вариант 3: success на верхнем уровне (для совместимости) + if (n8nData?.success?.files && Array.isArray(n8nData.success.files)) { + const convertedFiles = n8nData.success.files.map(file => { + if (file.url && file.url.startsWith('s3://uno-click/')) { + const s3Key = file.url.replace('s3://uno-click/', ''); + return { + ...file, + url: `/files/${s3Key}`, + }; + } + return file; + }); + + return res.json({ + ok: true, + result: { + generationUuid, + scenarioId: generationMeta.scenarioId, + scenarioName: generationMeta.scenarioName, + status: 'completed', + files: convertedFiles, + }, + }); + } + + // Вариант 4: провайдер вернул fail с сообщением — пробрасываем наверх + if (responseData?.success?.code === 'fail') { + return res.json({ + success: { + code: 'fail', + message: responseData.success.message || responseData.success.msg, + }, + }); + } + + // Вариант 5: ошибка от n8n с code/message — пробрасываем наверх + if (responseData?.error?.code) { + return res.json({ + error: { + code: responseData.error.code, + message: responseData.error.message, + }, + }); + } + + // Pass-through для не-успешных кодов (waiting/fail) от universal result-workflow (n8n). + // n8n возвращает {success:{code:'fail'|'waiting', message}} — фронт ждёт success на корне. + // Без этого блока success теряется в spread внутри data.result, и фронт крутится + // в "Рендерит..." до таймаута вместо показа реальной ошибки kie.ai. + if (responseData?.success && typeof responseData.success === 'object' + && responseData.success.code && responseData.success.code !== 'success') { + console.log('[result] pass-through non-success:', JSON.stringify(responseData.success)); + return res.json({ success: responseData.success }); + } + + res.json({ + ok: true, + result: { + generationUuid, + scenarioId: generationMeta.scenarioId, + scenarioName: generationMeta.scenarioName, + ...responseData, + }, + }); + } catch (err) { + console.error('[result] Error:', err); + next(err); + } +}); + +export default router; diff --git a/bff/routes/result.routes.js.bak.20260430_083104 b/bff/routes/result.routes.js.bak.20260430_083104 new file mode 100644 index 0000000..488a77d --- /dev/null +++ b/bff/routes/result.routes.js.bak.20260430_083104 @@ -0,0 +1,168 @@ +import { Router } from 'express'; +import { authRequired } from '../middleware/authRequired.js'; +import * as resultService from '../services/result.service.js'; +import axios from 'axios'; +import { env } from '../config/env.js'; + +const router = Router(); + +/** + * GET /api/result/:generationUuid + * Получить результат генерации + */ +router.get('/:generationUuid', authRequired, async (req, res, next) => { + try { + const { generationUuid } = req.params; + const userId = req.user.id; + + // Получаем метаданные генерации из БД (только для получения scenarioId) + const generationMeta = await resultService.getGenerationMeta({ userId, generationUuid }); + + if (!generationMeta) { + return res.status(404).json({ + error: 'NOT_FOUND', + message: 'Result not found or access denied', + }); + } + + // Вызываем n8n webhook для получения результата + const stepData = {}; + + const n8nUrl = 'https://n8n.uno-click.pip-test.ru/webhook/result'; + const n8nResponse = await axios.post(n8nUrl, { + meta: { generationUuid, userId, scenarioId: generationMeta.scenarioId, stepData }, + body: stepData + }); + + // Проверяем формат ответа от n8n + const n8nData = n8nResponse.data; + console.log('[result] n8n response:', JSON.stringify(n8nData, null, 2)); + + // n8n может вернуть данные в разных форматах + // Формат 1: { response: { body: { success: {...} } } } + // Формат 2: { success: {...} } + // Формат 3: [{ response: { body: { success: {...} } } }] - массив + let responseData = n8nData; + + // Если массив - берём первый элемент + if (Array.isArray(n8nData) && n8nData.length > 0) { + responseData = n8nData[0]; + } + + // Если есть response.body - извлекаем + if (responseData?.response?.body) { + responseData = responseData.response.body; + } + + console.log('[result] extracted responseData:', JSON.stringify(responseData, null, 2)); + + // Вариант 1: n8n вернул output_s3 в response_payload + if (responseData?.success?.response_payload?.output_s3) { + const s3Key = responseData.success.response_payload.output_s3.replace('s3://uno-click/', ''); + const publicUrl = `/files/${s3Key}`; + + return res.json({ + ok: true, + result: { + generationUuid, + scenarioId: generationMeta.scenarioId, + scenarioName: generationMeta.scenarioName, + status: 'completed', + files: [{ + contentType: 'video', + url: publicUrl, + }], + }, + }); + } + + // Вариант 2: n8n вернул files массив с s3:// URL + if (responseData?.success?.files && Array.isArray(responseData.success.files)) { + const convertedFiles = responseData.success.files.map(file => { + // Конвертируем s3:// в /files/... + // Поддерживаем оба формата: { url: "s3://..." } и { output_s3: "s3://..." } + let fileUrl = file.url || file.output_s3; + + if (fileUrl && fileUrl.startsWith('s3://uno-click/')) { + const s3Key = fileUrl.replace('s3://uno-click/', ''); + return { + contentType: file.contentType, + url: `/files/${s3Key}`, + }; + } + return file; + }); + + return res.json({ + ok: true, + result: { + generationUuid, + scenarioId: generationMeta.scenarioId, + scenarioName: generationMeta.scenarioName, + status: 'completed', + files: convertedFiles, + }, + }); + } + + // Вариант 3: success на верхнем уровне (для совместимости) + if (n8nData?.success?.files && Array.isArray(n8nData.success.files)) { + const convertedFiles = n8nData.success.files.map(file => { + if (file.url && file.url.startsWith('s3://uno-click/')) { + const s3Key = file.url.replace('s3://uno-click/', ''); + return { + ...file, + url: `/files/${s3Key}`, + }; + } + return file; + }); + + return res.json({ + ok: true, + result: { + generationUuid, + scenarioId: generationMeta.scenarioId, + scenarioName: generationMeta.scenarioName, + status: 'completed', + files: convertedFiles, + }, + }); + } + + // Вариант 4: провайдер вернул fail с сообщением — пробрасываем наверх + if (responseData?.success?.code === 'fail') { + return res.json({ + success: { + code: 'fail', + message: responseData.success.message || responseData.success.msg, + }, + }); + } + + // Вариант 5: ошибка от n8n с code/message — пробрасываем наверх + if (responseData?.error?.code) { + return res.json({ + error: { + code: responseData.error.code, + message: responseData.error.message, + }, + }); + } + + res.json({ + ok: true, + result: { + generationUuid, + scenarioId: generationMeta.scenarioId, + scenarioName: generationMeta.scenarioName, + ...responseData, + }, + }); + } catch (err) { + console.error('[result] Error:', err); + next(err); + } +}); + +export default router; diff --git a/bff/routes/scenario.routes.js b/bff/routes/scenario.routes.js new file mode 100644 index 0000000..ddb52c2 --- /dev/null +++ b/bff/routes/scenario.routes.js @@ -0,0 +1,152 @@ +import { Router } from 'express'; +import { authRequired } from '../middleware/authRequired.js'; +import { csrfRequired } from '../middleware/csrfRequired.js'; +import * as scenarioService from '../services/scenario.service.js'; + +const router = Router(); + +/** + * POST /api/scenario/:scenarioId/start + * Запуск сценария. body должен быть пустым {}. + */ +router.post('/:scenarioId/start', authRequired, csrfRequired, async (req, res, next) => { + try { + const { scenarioId } = req.params; + const input = req.body; + + // 1) проверить, что пользователь имеет право на этот scenarioId + await scenarioService.assertUserCanStartScenario({ + userId: req.user.id, + scenarioId, + }); + + // 2) создать generation и вызвать n8n + const generation = await scenarioService.startScenario({ + userId: req.user.id, + scenarioId, + input, + user: req.user, + }); + + res.status(202).json({ + ok: true, + generationUuid: generation.generationUuid, + status: generation.status, + currentStepId: generation.currentStepId, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/scenario/:scenarioId/step/:stepId + * Выполнение шага сценария. body должен соответствовать input_schema из БД. + */ +router.post('/:scenarioId/step/:stepId', authRequired, csrfRequired, async (req, res, next) => { + try { + const { scenarioId, stepId } = req.params; + const input = req.body; + + // 1) проверить, что пользователь может выполнять этот шаг + await scenarioService.assertUserCanExecuteStep({ + userId: req.user.id, + scenarioId, + stepId, + }); + + // 2) выполнить шаг (с валидацией input_schema) + const result = await scenarioService.executeStep({ + userId: req.user.id, + scenarioId, + stepId, + input, + user: req.user, + }); + + res.status(202).json({ + ok: true, + generationUuid: result.generationUuid, + stepState: result.stepState, + nextStepId: result.nextStepId, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/scenario/:scenarioId/step/:stepId/record + * Создать запись generation_step и вернуть её ID (для загрузки файлов). + * Используется когда нужно загрузить файл ДО выполнения шага. + */ +router.post('/:scenarioId/step/:stepId/record', authRequired, csrfRequired, async (req, res, next) => { + try { + const { scenarioId, stepId } = req.params; + const input = req.body; + const userId = req.user.id; + + // Проверка прав + await scenarioService.assertUserCanExecuteStep({ + userId, + scenarioId, + stepId, + }); + + // Найти активную generation + const { pool } = await import('../db.js'); + const genQuery = ` + SELECT generation_uuid, current_step_id, status + FROM uno_bff.generations + WHERE user_id = $1 AND scenario_id = $2 AND status IN ('running', 'waiting_for_input') + ORDER BY created_at DESC + LIMIT 1 + `; + const genResult = await pool.query(genQuery, [userId, scenarioId]); + const generation = genResult.rows[0]; + + if (!generation) { + return res.status(400).json({ + ok: false, + error: 'GENERATION_NOT_FOUND', + message: `No active generation found for scenario '${scenarioId}'`, + }); + } + + // Найти шаг сценария для получения step_order + const step = await scenarioService.getScenarioStep(scenarioId, stepId); + if (!step) { + return res.status(404).json({ + ok: false, + error: 'STEP_NOT_FOUND', + message: `Step '${stepId}' not found`, + }); + } + + // Создать/обновить запись generation_step + const stepQuery = ` + INSERT INTO uno_bff.generation_steps (generation_uuid, scenario_id, step_id, step_order, status, request_payload) + VALUES ($1, $2, $3, $4, 'running', $5) + ON CONFLICT (generation_uuid, step_id) DO UPDATE + SET status = 'running', request_payload = $5, updated_at = now() + RETURNING id + `; + const stepResult = await pool.query(stepQuery, [ + generation.generation_uuid, + scenarioId, + stepId, + step.step_order, + JSON.stringify(input), + ]); + + res.status(201).json({ + ok: true, + stepRecordId: stepResult.rows[0].id, + generationUuid: generation.generation_uuid, + }); + } catch (err) { + next(err); + } +}); + +export default router; \ No newline at end of file diff --git a/bff/routes/telegram.routes.js b/bff/routes/telegram.routes.js new file mode 100644 index 0000000..315d256 --- /dev/null +++ b/bff/routes/telegram.routes.js @@ -0,0 +1,60 @@ +import { Router } from "express"; +import { confirmTelegramFromBot } from "../services/auth.service.js"; + +const router = Router(); + +const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; +const WEBHOOK_SECRET = process.env.TELEGRAM_WEBHOOK_SECRET; + +async function tgSendMessage(chatId, text) { + if (!BOT_TOKEN) return; + try { + await fetch(`https://api.telegram.org/bot${BOT_TOKEN}/sendMessage`, { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ chat_id: chatId, text, parse_mode: "HTML" }), + }); + } catch (err) { + console.error("[tg] sendMessage failed", err.message); + } +} + +router.post("/webhook", async (req, res) => { + // Telegram добавит заголовок если мы установили secret_token при setWebhook + if (WEBHOOK_SECRET) { + const got = req.get("x-telegram-bot-api-secret-token"); + if (got !== WEBHOOK_SECRET) { + console.warn("[tg] webhook: bad secret token"); + return res.status(401).json({ ok: false }); + } + } + + // Всегда отвечаем 200 — иначе Telegram будет ретраить + res.json({ ok: true }); + + try { + const update = req.body || {}; + const msg = update.message; + if (!msg || !msg.text || !msg.from || !msg.chat) return; + + const text = String(msg.text).trim(); + const m = text.match(/^\/start\s+(\S+)/); + if (!m) { + // /start без параметра или другая команда — приветствие + if (text === "/start" || text === "/help") { + await tgSendMessage(msg.chat.id, + "Привет! Это бот авторизации One Click.\n\nЧтобы войти на сайт, нажмите кнопку «Войти через Telegram» на сайте — она пришлёт вам сюда специальную ссылку."); + } + return; + } + + const token = m[1]; + const result = await confirmTelegramFromBot({ token, telegramUser: msg.from }); + + await tgSendMessage(msg.chat.id, result.message || (result.ok ? "Готово!" : "Не получилось войти.")); + } catch (err) { + console.error("[tg] webhook handler error:", err); + } +}); + +export default router; diff --git a/bff/routes/upload.routes.js b/bff/routes/upload.routes.js new file mode 100644 index 0000000..1ca48cc --- /dev/null +++ b/bff/routes/upload.routes.js @@ -0,0 +1,516 @@ +import { Router } from 'express'; +import multer from 'multer'; +import { authRequired } from '../middleware/authRequired.js'; +import { validateImage } from '../middleware/validateImage.js'; +import { csrfRequired } from '../middleware/csrfRequired.js'; +import { fileService } from '../services/file.service.js'; + +const router = Router(); + +// ───────────────────────────────────────────────────────────────────────────── +// MIME-нормализация: браузер-алиасы (Safari/Firefox/legacy) → канонические +// типы, которые принимает kie.ai. Применять до любой валидации и до загрузки +// в S3, чтобы файл лёг в MinIO с правильным Content-Type. +// ───────────────────────────────────────────────────────────────────────────── +const MIME_NORMALIZE = { + 'audio/mp3': 'audio/mpeg', + 'audio/x-m4a': 'audio/mp4', + 'audio/m4a': 'audio/mp4', + 'audio/wave': 'audio/wav', +}; +const ALLOWED_VIDEO_TYPES = ['video/mp4', 'video/quicktime', 'video/x-msvideo', 'video/webm']; +const ALLOWED_AUDIO_TYPES = ['audio/mpeg', 'audio/wav', 'audio/x-wav', 'audio/aac', 'audio/mp4', 'audio/ogg']; +const ALLOWED_MEDIA_TYPES = [...ALLOWED_VIDEO_TYPES, ...ALLOWED_AUDIO_TYPES]; +const MAX_AUDIO_SIZE = 10 * 1024 * 1024; // 10 МБ — лимит kie.ai для аудио +const MAX_VIDEO_SIZE = 500 * 1024 * 1024; // 500 МБ — multipart upload + +// Настройки multer для малых файлов (< 10MB) - для обратной совместимости +const storage = multer.memoryStorage(); +const upload = multer({ + storage, + limits: { + fileSize: 10 * 1024 * 1024, // 10MB для простой загрузки + }, +}); + +// ───────────────────────────────────────────────────────────────────────────── +// Multipart Upload endpoints (прямая загрузка в S3) +// ───────────────────────────────────────────────────────────────────────────── + +/** + * POST /api/upload/video/init + * Инициировать multipart upload для прямой загрузки в S3 + */ +router.post('/video/init', authRequired, csrfRequired, async (req, res, next) => { + try { + const userId = req.user.id; + const { filename, contentType, fileSize, generationUuid, generationStepId } = req.body; + + // Нормализуем браузер-алиасы (audio/mp3 → audio/mpeg и т.п.) до валидации + const canonical = MIME_NORMALIZE[contentType] || contentType; + + // Валидация по канонической форме + if (!ALLOWED_MEDIA_TYPES.includes(canonical)) { + return res.status(400).json({ + ok: false, + error: 'INVALID_CONTENT_TYPE', + message: 'Разрешены форматы: MP4, MOV, AVI, WebM, MP3, WAV, AAC, M4A, OGG', + }); + } + + // Размер: для аудио — 10 МБ (лимит kie.ai), для видео — 500 МБ (multipart) + const isAudio = ALLOWED_AUDIO_TYPES.includes(canonical); + const maxSize = isAudio ? MAX_AUDIO_SIZE : MAX_VIDEO_SIZE; + if (!fileSize || fileSize > maxSize) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILE_SIZE', + message: isAudio + ? 'Размер аудиофайла должен быть от 1 байта до 10 МБ (требование kie.ai)' + : 'Размер видеофайла должен быть от 1 байта до 500 МБ', + }); + } + + if (!filename) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILENAME', + message: 'Необходимо указать имя файла', + }); + } + + const result = await fileService.initMultipartUpload({ + userId, + filename, + contentType: canonical, + fileSize, + folder: 'videos_input', + generationUuid: generationUuid || null, + generationStepId: generationStepId ? Number(generationStepId) : null, + }); + + res.status(201).json({ + ok: true, + data: { + fileId: result.fileId, + s3Key: result.s3Key, + uploadId: result.uploadId, + parts: result.parts, // Array of { partNumber, presignedUrl } + partCount: result.partCount, + }, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/upload/video/complete + * Завершить multipart upload + */ +router.post('/video/complete', authRequired, csrfRequired, async (req, res, next) => { + try { + const userId = req.user.id; + const { fileId, uploadId, parts } = req.body; + + if (!fileId || !uploadId || !parts || !Array.isArray(parts)) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Необходимо указать fileId, uploadId и parts', + }); + } + + // Валидация parts: каждый part должен иметь ETag + for (let i = 0; i < parts.length; i++) { + if (!parts[i].ETag) { + return res.status(400).json({ + ok: false, + error: 'INVALID_PART', + message: `Part ${i + 1} должен иметь ETag`, + }); + } + } + + const result = await fileService.completeMultipartUpload({ + fileId, + userId, + uploadId, + parts, + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +/** + * POST /api/upload/video/abort + * Отменить multipart upload + */ +router.post('/video/abort', authRequired, csrfRequired, async (req, res, next) => { + try { + const userId = req.user.id; + const { fileId, uploadId } = req.body; + + if (!fileId || !uploadId) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Необходимо указать fileId и uploadId', + }); + } + + const result = await fileService.abortMultipartUpload({ + fileId, + userId, + uploadId, + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +// ───────────────────────────────────────────────────────────────────────────── +// Старые endpoints (для обратной совместимости с малыми файлами) +// ───────────────────────────────────────────────────────────────────────────── + +/** + * POST /api/upload/image + * Загрузка изображения в S3 + */ +router.post('/image', authRequired, csrfRequired, upload.single('file'), validateImage, async (req, res, next) => { + try { + const file = req.file; + const userId = req.user.id; + const { generationUuid, generationStepId } = req.body; + + const fileRecord = await fileService.uploadImage({ + userId, + file, + folder: 'images_input', + generationUuid: generationUuid || null, + generationStepId: generationStepId ? Number(generationStepId) : null, + }); + + res.status(201).json({ + ok: true, + data: { + id: fileRecord.id, + s3Key: fileRecord.s3_key, + filename: fileRecord.original_filename, + size: fileRecord.file_size, + contentType: fileRecord.content_type, + generationUuid: fileRecord.generation_uuid, + generationStepId: fileRecord.generation_step_id, + createdAt: fileRecord.created_at, + }, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/upload/video + * Загрузка видео в S3 (для малых файлов < 10MB) + * Для больших файлов используйте /api/upload/video/init + прямая загрузка + */ +router.post('/video', authRequired, csrfRequired, upload.single('file'), async (req, res, next) => { + try { + const file = req.file; + const userId = req.user.id; + const { generationUuid, generationStepId } = req.body; + + if (!file) { + return res.status(400).json({ + ok: false, + error: 'NO_FILE', + message: 'Файл не загружен', + }); + } + + // Нормализуем браузер-алиасы (audio/mp3 → audio/mpeg и т.п.) до валидации. + // Перезаписываем file.mimetype, чтобы и S3, и БД использовали канонический Content-Type. + const canonical = MIME_NORMALIZE[file.mimetype] || file.mimetype; + file.mimetype = canonical; + + // Валидация по канонической форме + if (!ALLOWED_MEDIA_TYPES.includes(canonical)) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILE_TYPE', + message: 'Разрешены форматы: MP4, MOV, AVI, WebM, MP3, WAV, AAC, M4A, OGG', + }); + } + + const isAudio = ALLOWED_AUDIO_TYPES.includes(canonical); + + // Аудио: 10 МБ — лимит kie.ai + if (isAudio && file.size > MAX_AUDIO_SIZE) { + return res.status(400).json({ + ok: false, + error: 'AUDIO_TOO_LARGE', + message: 'Аудио до 10 МБ — требование kie.ai', + }); + } + + // Видео > 10 МБ — отправляем на multipart endpoint + if (!isAudio && file.size > 10 * 1024 * 1024) { + return res.status(400).json({ + ok: false, + error: 'FILE_TOO_LARGE_FOR_SIMPLE_UPLOAD', + message: 'Для файлов больше 10MB используйте multipart upload: POST /api/upload/video/init', + }); + } + + const fileRecord = await fileService.uploadVideo({ + userId, + file, + folder: 'videos_input', + generationUuid: generationUuid || null, + generationStepId: generationStepId ? Number(generationStepId) : null, + }); + + res.status(201).json({ + ok: true, + data: { + id: fileRecord.id, + s3Key: fileRecord.s3_key, + filename: fileRecord.original_filename, + size: fileRecord.file_size, + contentType: fileRecord.content_type, + generationUuid: fileRecord.generation_uuid, + generationStepId: fileRecord.generation_step_id, + createdAt: fileRecord.created_at, + }, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/upload/url + * Получить presigned URL для доступа к файлу + * Требует: авторизация, CSRF, владение файлом + */ +router.post('/url', authRequired, csrfRequired, async (req, res, next) => { + try { + const { fileId, s3Key, expiresIn = 3600 } = req.body; + + if (!fileId && !s3Key) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Необходимо указать fileId или s3Key', + }); + } + + const result = await fileService.getPresignedUrl({ + userId: req.user.id, + fileId, + s3Key, + expiresIn: Math.min(Number(expiresIn), 86400), // макс. 24 часа + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +/** + * GET /api/upload/files + * Получить список файлов пользователя + * Требует: авторизация + */ +router.get('/files', authRequired, async (req, res, next) => { + try { + const { + fileType = 'image', + folder = 'images_input', + limit = 50, + offset = 0, + } = req.query; + + const result = await fileService.listUserFiles(req.user.id, { + fileType, + folder, + limit: Math.min(Number(limit), 100), + offset: Number(offset), + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + next(err); + } +}); + +/** + * GET /api/upload/stats + * Получить статистику по файлам пользователя + * Требует: авторизация + */ +router.get('/stats', authRequired, async (req, res, next) => { + try { + const stats = await fileService.getFileStats(req.user.id); + res.json({ + ok: true, + data: stats, + }); + } catch (err) { + next(err); + } +}); + +/** + * DELETE /api/upload/file/:fileId + * Удалить файл + * Требует: авторизация, CSRF, владение файлом + */ +router.delete('/file/:fileId', authRequired, csrfRequired, async (req, res, next) => { + try { + const { fileId } = req.params; + const userId = req.user.id; + + const result = await fileService.deleteFile({ + userId, + fileId: Number(fileId), + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +/** + * GET /api/upload/generation/:generationUuid/files + * Получить файлы генерации + * Требует: авторизация, владение генерацией + */ +router.get('/generation/:generationUuid/files', authRequired, async (req, res, next) => { + try { + const { generationUuid } = req.params; + const userId = req.user.id; + + const files = await fileService.getGenerationFiles(generationUuid, userId); + + res.json({ + ok: true, + data: files, + }); + } catch (err) { + next(err); + } +}); + +/** + * GET /api/upload/generation/:generationUuid/step/:stepId/files + * Получить файлы шага генерации + * Требует: авторизация, владение генерацией + */ +router.get('/generation/:generationUuid/step/:stepId/files', authRequired, async (req, res, next) => { + try { + const { generationUuid, stepId } = req.params; + const userId = req.user.id; + + const files = await fileService.getGenerationStepFiles(generationUuid, stepId, userId); + + res.json({ + ok: true, + data: files, + }); + } catch (err) { + next(err); + } +}); + +/** + * PUT /api/upload/file/:fileId/link + * Связать файл с генерацией + * Требует: авторизация, CSRF, владение файлом и генерацией + */ +router.put('/file/:fileId/link', authRequired, csrfRequired, async (req, res, next) => { + try { + const { fileId } = req.params; + const { generationUuid, generationStepId } = req.body; + const userId = req.user.id; + + // Проверяем владение файлом + const fileRecord = await userFileRepository.findByIdAndOwner(Number(fileId), userId); + if (!fileRecord) { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: 'Файл не найден или у вас нет доступа к нему', + }); + } + + // Обновляем связь + const { pool } = await import('../db.js'); + const query = ` + UPDATE uno_bff.user_files + SET generation_uuid = $1, generation_step_id = $2, updated_at = now() + WHERE id = $3 AND user_id = $4 + RETURNING id, generation_uuid, generation_step_id + `; + const result = await pool.query(query, [generationUuid, generationStepId ? Number(generationStepId) : null, fileId, userId]); + + res.json({ + ok: true, + data: result.rows[0], + }); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/bff/routes/upload.routes.js.bak.20260430 b/bff/routes/upload.routes.js.bak.20260430 new file mode 100644 index 0000000..e7f41d9 --- /dev/null +++ b/bff/routes/upload.routes.js.bak.20260430 @@ -0,0 +1,482 @@ +import { Router } from 'express'; +import multer from 'multer'; +import { authRequired } from '../middleware/authRequired.js'; +import { validateImage } from '../middleware/validateImage.js'; +import { csrfRequired } from '../middleware/csrfRequired.js'; +import { fileService } from '../services/file.service.js'; + +const router = Router(); + +// Настройки multer для малых файлов (< 10MB) - для обратной совместимости +const storage = multer.memoryStorage(); +const upload = multer({ + storage, + limits: { + fileSize: 10 * 1024 * 1024, // 10MB для простой загрузки + }, +}); + +// ───────────────────────────────────────────────────────────────────────────── +// Multipart Upload endpoints (прямая загрузка в S3) +// ───────────────────────────────────────────────────────────────────────────── + +/** + * POST /api/upload/video/init + * Инициировать multipart upload для прямой загрузки в S3 + */ +router.post('/video/init', authRequired, csrfRequired, async (req, res, next) => { + try { + const userId = req.user.id; + const { filename, contentType, fileSize, generationUuid, generationStepId } = req.body; + + // Валидация + const allowedVideoTypes = ['video/mp4', 'video/quicktime', 'video/x-msvideo', 'video/webm']; + const allowedAudioTypes = ['audio/mpeg', 'audio/mp3', 'audio/wav', 'audio/x-wav', 'audio/aac', 'audio/mp4', 'audio/x-m4a', 'audio/ogg']; + const allowedTypes = [...allowedVideoTypes, ...allowedAudioTypes]; + if (!allowedTypes.includes(contentType)) { + return res.status(400).json({ + ok: false, + error: 'INVALID_CONTENT_TYPE', + message: 'Разрешены форматы: MP4, MOV, AVI, WebM, MP3, WAV, AAC, M4A, OGG', + }); + } + + const maxSize = 500 * 1024 * 1024; + if (!fileSize || fileSize > maxSize) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILE_SIZE', + message: 'Размер файла должен быть от 1 байта до 500MB', + }); + } + + if (!filename) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILENAME', + message: 'Необходимо указать имя файла', + }); + } + + const result = await fileService.initMultipartUpload({ + userId, + filename, + contentType, + fileSize, + folder: 'videos_input', + generationUuid: generationUuid || null, + generationStepId: generationStepId ? Number(generationStepId) : null, + }); + + res.status(201).json({ + ok: true, + data: { + fileId: result.fileId, + s3Key: result.s3Key, + uploadId: result.uploadId, + parts: result.parts, // Array of { partNumber, presignedUrl } + partCount: result.partCount, + }, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/upload/video/complete + * Завершить multipart upload + */ +router.post('/video/complete', authRequired, csrfRequired, async (req, res, next) => { + try { + const userId = req.user.id; + const { fileId, uploadId, parts } = req.body; + + if (!fileId || !uploadId || !parts || !Array.isArray(parts)) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Необходимо указать fileId, uploadId и parts', + }); + } + + // Валидация parts: каждый part должен иметь ETag + for (let i = 0; i < parts.length; i++) { + if (!parts[i].ETag) { + return res.status(400).json({ + ok: false, + error: 'INVALID_PART', + message: `Part ${i + 1} должен иметь ETag`, + }); + } + } + + const result = await fileService.completeMultipartUpload({ + fileId, + userId, + uploadId, + parts, + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +/** + * POST /api/upload/video/abort + * Отменить multipart upload + */ +router.post('/video/abort', authRequired, csrfRequired, async (req, res, next) => { + try { + const userId = req.user.id; + const { fileId, uploadId } = req.body; + + if (!fileId || !uploadId) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Необходимо указать fileId и uploadId', + }); + } + + const result = await fileService.abortMultipartUpload({ + fileId, + userId, + uploadId, + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +// ───────────────────────────────────────────────────────────────────────────── +// Старые endpoints (для обратной совместимости с малыми файлами) +// ───────────────────────────────────────────────────────────────────────────── + +/** + * POST /api/upload/image + * Загрузка изображения в S3 + */ +router.post('/image', authRequired, csrfRequired, upload.single('file'), validateImage, async (req, res, next) => { + try { + const file = req.file; + const userId = req.user.id; + const { generationUuid, generationStepId } = req.body; + + const fileRecord = await fileService.uploadImage({ + userId, + file, + folder: 'images_input', + generationUuid: generationUuid || null, + generationStepId: generationStepId ? Number(generationStepId) : null, + }); + + res.status(201).json({ + ok: true, + data: { + id: fileRecord.id, + s3Key: fileRecord.s3_key, + filename: fileRecord.original_filename, + size: fileRecord.file_size, + contentType: fileRecord.content_type, + generationUuid: fileRecord.generation_uuid, + generationStepId: fileRecord.generation_step_id, + createdAt: fileRecord.created_at, + }, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/upload/video + * Загрузка видео в S3 (для малых файлов < 10MB) + * Для больших файлов используйте /api/upload/video/init + прямая загрузка + */ +router.post('/video', authRequired, csrfRequired, upload.single('file'), async (req, res, next) => { + try { + const file = req.file; + const userId = req.user.id; + const { generationUuid, generationStepId } = req.body; + + if (!file) { + return res.status(400).json({ + ok: false, + error: 'NO_FILE', + message: 'Файл не загружен', + }); + } + + // Валидация типа файла + const allowedVideoTypes = ['video/mp4', 'video/quicktime', 'video/x-msvideo', 'video/webm']; + const allowedAudioTypes = ['audio/mpeg', 'audio/mp3', 'audio/wav', 'audio/x-wav', 'audio/aac', 'audio/mp4', 'audio/x-m4a', 'audio/ogg']; + const allowedTypes = [...allowedVideoTypes, ...allowedAudioTypes]; + if (!allowedTypes.includes(file.mimetype)) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILE_TYPE', + message: 'Разрешены форматы: MP4, MOV, AVI, WebM, MP3, WAV, AAC, M4A, OGG', + }); + } + + // Для файлов > 10MB рекомендуем multipart upload + if (file.size > 10 * 1024 * 1024) { + return res.status(400).json({ + ok: false, + error: 'FILE_TOO_LARGE_FOR_SIMPLE_UPLOAD', + message: 'Для файлов больше 10MB используйте multipart upload: POST /api/upload/video/init', + }); + } + + const fileRecord = await fileService.uploadVideo({ + userId, + file, + folder: 'videos_input', + generationUuid: generationUuid || null, + generationStepId: generationStepId ? Number(generationStepId) : null, + }); + + res.status(201).json({ + ok: true, + data: { + id: fileRecord.id, + s3Key: fileRecord.s3_key, + filename: fileRecord.original_filename, + size: fileRecord.file_size, + contentType: fileRecord.content_type, + generationUuid: fileRecord.generation_uuid, + generationStepId: fileRecord.generation_step_id, + createdAt: fileRecord.created_at, + }, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/upload/url + * Получить presigned URL для доступа к файлу + * Требует: авторизация, CSRF, владение файлом + */ +router.post('/url', authRequired, csrfRequired, async (req, res, next) => { + try { + const { fileId, s3Key, expiresIn = 3600 } = req.body; + + if (!fileId && !s3Key) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Необходимо указать fileId или s3Key', + }); + } + + const result = await fileService.getPresignedUrl({ + userId: req.user.id, + fileId, + s3Key, + expiresIn: Math.min(Number(expiresIn), 86400), // макс. 24 часа + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +/** + * GET /api/upload/files + * Получить список файлов пользователя + * Требует: авторизация + */ +router.get('/files', authRequired, async (req, res, next) => { + try { + const { + fileType = 'image', + folder = 'images_input', + limit = 50, + offset = 0, + } = req.query; + + const result = await fileService.listUserFiles(req.user.id, { + fileType, + folder, + limit: Math.min(Number(limit), 100), + offset: Number(offset), + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + next(err); + } +}); + +/** + * GET /api/upload/stats + * Получить статистику по файлам пользователя + * Требует: авторизация + */ +router.get('/stats', authRequired, async (req, res, next) => { + try { + const stats = await fileService.getFileStats(req.user.id); + res.json({ + ok: true, + data: stats, + }); + } catch (err) { + next(err); + } +}); + +/** + * DELETE /api/upload/file/:fileId + * Удалить файл + * Требует: авторизация, CSRF, владение файлом + */ +router.delete('/file/:fileId', authRequired, csrfRequired, async (req, res, next) => { + try { + const { fileId } = req.params; + const userId = req.user.id; + + const result = await fileService.deleteFile({ + userId, + fileId: Number(fileId), + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +/** + * GET /api/upload/generation/:generationUuid/files + * Получить файлы генерации + * Требует: авторизация, владение генерацией + */ +router.get('/generation/:generationUuid/files', authRequired, async (req, res, next) => { + try { + const { generationUuid } = req.params; + const userId = req.user.id; + + const files = await fileService.getGenerationFiles(generationUuid, userId); + + res.json({ + ok: true, + data: files, + }); + } catch (err) { + next(err); + } +}); + +/** + * GET /api/upload/generation/:generationUuid/step/:stepId/files + * Получить файлы шага генерации + * Требует: авторизация, владение генерацией + */ +router.get('/generation/:generationUuid/step/:stepId/files', authRequired, async (req, res, next) => { + try { + const { generationUuid, stepId } = req.params; + const userId = req.user.id; + + const files = await fileService.getGenerationStepFiles(generationUuid, stepId, userId); + + res.json({ + ok: true, + data: files, + }); + } catch (err) { + next(err); + } +}); + +/** + * PUT /api/upload/file/:fileId/link + * Связать файл с генерацией + * Требует: авторизация, CSRF, владение файлом и генерацией + */ +router.put('/file/:fileId/link', authRequired, csrfRequired, async (req, res, next) => { + try { + const { fileId } = req.params; + const { generationUuid, generationStepId } = req.body; + const userId = req.user.id; + + // Проверяем владение файлом + const fileRecord = await userFileRepository.findByIdAndOwner(Number(fileId), userId); + if (!fileRecord) { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: 'Файл не найден или у вас нет доступа к нему', + }); + } + + // Обновляем связь + const { pool } = await import('../db.js'); + const query = ` + UPDATE uno_bff.user_files + SET generation_uuid = $1, generation_step_id = $2, updated_at = now() + WHERE id = $3 AND user_id = $4 + RETURNING id, generation_uuid, generation_step_id + `; + const result = await pool.query(query, [generationUuid, generationStepId ? Number(generationStepId) : null, fileId, userId]); + + res.json({ + ok: true, + data: result.rows[0], + }); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/bff/routes/upload.routes.js.bak.20260430_053301 b/bff/routes/upload.routes.js.bak.20260430_053301 new file mode 100644 index 0000000..9a3ed06 --- /dev/null +++ b/bff/routes/upload.routes.js.bak.20260430_053301 @@ -0,0 +1,478 @@ +import { Router } from 'express'; +import multer from 'multer'; +import { authRequired } from '../middleware/authRequired.js'; +import { validateImage } from '../middleware/validateImage.js'; +import { csrfRequired } from '../middleware/csrfRequired.js'; +import { fileService } from '../services/file.service.js'; + +const router = Router(); + +// Настройки multer для малых файлов (< 10MB) - для обратной совместимости +const storage = multer.memoryStorage(); +const upload = multer({ + storage, + limits: { + fileSize: 10 * 1024 * 1024, // 10MB для простой загрузки + }, +}); + +// ───────────────────────────────────────────────────────────────────────────── +// Multipart Upload endpoints (прямая загрузка в S3) +// ───────────────────────────────────────────────────────────────────────────── + +/** + * POST /api/upload/video/init + * Инициировать multipart upload для прямой загрузки в S3 + */ +router.post('/video/init', authRequired, csrfRequired, async (req, res, next) => { + try { + const userId = req.user.id; + const { filename, contentType, fileSize, generationUuid, generationStepId } = req.body; + + // Валидация + const allowedTypes = ['video/mp4', 'video/quicktime', 'video/x-msvideo', 'video/webm']; + if (!allowedTypes.includes(contentType)) { + return res.status(400).json({ + ok: false, + error: 'INVALID_CONTENT_TYPE', + message: 'Разрешены только видео форматы: MP4, MOV, AVI, WebM', + }); + } + + const maxSize = 500 * 1024 * 1024; + if (!fileSize || fileSize > maxSize) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILE_SIZE', + message: 'Размер файла должен быть от 1 байта до 500MB', + }); + } + + if (!filename) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILENAME', + message: 'Необходимо указать имя файла', + }); + } + + const result = await fileService.initMultipartUpload({ + userId, + filename, + contentType, + fileSize, + folder: 'videos_input', + generationUuid: generationUuid || null, + generationStepId: generationStepId ? Number(generationStepId) : null, + }); + + res.status(201).json({ + ok: true, + data: { + fileId: result.fileId, + s3Key: result.s3Key, + uploadId: result.uploadId, + parts: result.parts, // Array of { partNumber, presignedUrl } + partCount: result.partCount, + }, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/upload/video/complete + * Завершить multipart upload + */ +router.post('/video/complete', authRequired, csrfRequired, async (req, res, next) => { + try { + const userId = req.user.id; + const { fileId, uploadId, parts } = req.body; + + if (!fileId || !uploadId || !parts || !Array.isArray(parts)) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Необходимо указать fileId, uploadId и parts', + }); + } + + // Валидация parts: каждый part должен иметь ETag + for (let i = 0; i < parts.length; i++) { + if (!parts[i].ETag) { + return res.status(400).json({ + ok: false, + error: 'INVALID_PART', + message: `Part ${i + 1} должен иметь ETag`, + }); + } + } + + const result = await fileService.completeMultipartUpload({ + fileId, + userId, + uploadId, + parts, + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +/** + * POST /api/upload/video/abort + * Отменить multipart upload + */ +router.post('/video/abort', authRequired, csrfRequired, async (req, res, next) => { + try { + const userId = req.user.id; + const { fileId, uploadId } = req.body; + + if (!fileId || !uploadId) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Необходимо указать fileId и uploadId', + }); + } + + const result = await fileService.abortMultipartUpload({ + fileId, + userId, + uploadId, + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +// ───────────────────────────────────────────────────────────────────────────── +// Старые endpoints (для обратной совместимости с малыми файлами) +// ───────────────────────────────────────────────────────────────────────────── + +/** + * POST /api/upload/image + * Загрузка изображения в S3 + */ +router.post('/image', authRequired, csrfRequired, upload.single('file'), validateImage, async (req, res, next) => { + try { + const file = req.file; + const userId = req.user.id; + const { generationUuid, generationStepId } = req.body; + + const fileRecord = await fileService.uploadImage({ + userId, + file, + folder: 'images_input', + generationUuid: generationUuid || null, + generationStepId: generationStepId ? Number(generationStepId) : null, + }); + + res.status(201).json({ + ok: true, + data: { + id: fileRecord.id, + s3Key: fileRecord.s3_key, + filename: fileRecord.original_filename, + size: fileRecord.file_size, + contentType: fileRecord.content_type, + generationUuid: fileRecord.generation_uuid, + generationStepId: fileRecord.generation_step_id, + createdAt: fileRecord.created_at, + }, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/upload/video + * Загрузка видео в S3 (для малых файлов < 10MB) + * Для больших файлов используйте /api/upload/video/init + прямая загрузка + */ +router.post('/video', authRequired, csrfRequired, upload.single('file'), async (req, res, next) => { + try { + const file = req.file; + const userId = req.user.id; + const { generationUuid, generationStepId } = req.body; + + if (!file) { + return res.status(400).json({ + ok: false, + error: 'NO_FILE', + message: 'Файл не загружен', + }); + } + + // Валидация типа файла + const allowedTypes = ['video/mp4', 'video/quicktime', 'video/x-msvideo', 'video/webm']; + if (!allowedTypes.includes(file.mimetype)) { + return res.status(400).json({ + ok: false, + error: 'INVALID_FILE_TYPE', + message: 'Разрешены только видео форматы: MP4, MOV, AVI, WebM', + }); + } + + // Для файлов > 10MB рекомендуем multipart upload + if (file.size > 10 * 1024 * 1024) { + return res.status(400).json({ + ok: false, + error: 'FILE_TOO_LARGE_FOR_SIMPLE_UPLOAD', + message: 'Для файлов больше 10MB используйте multipart upload: POST /api/upload/video/init', + }); + } + + const fileRecord = await fileService.uploadVideo({ + userId, + file, + folder: 'videos_input', + generationUuid: generationUuid || null, + generationStepId: generationStepId ? Number(generationStepId) : null, + }); + + res.status(201).json({ + ok: true, + data: { + id: fileRecord.id, + s3Key: fileRecord.s3_key, + filename: fileRecord.original_filename, + size: fileRecord.file_size, + contentType: fileRecord.content_type, + generationUuid: fileRecord.generation_uuid, + generationStepId: fileRecord.generation_step_id, + createdAt: fileRecord.created_at, + }, + }); + } catch (err) { + next(err); + } +}); + +/** + * POST /api/upload/url + * Получить presigned URL для доступа к файлу + * Требует: авторизация, CSRF, владение файлом + */ +router.post('/url', authRequired, csrfRequired, async (req, res, next) => { + try { + const { fileId, s3Key, expiresIn = 3600 } = req.body; + + if (!fileId && !s3Key) { + return res.status(400).json({ + ok: false, + error: 'BAD_REQUEST', + message: 'Необходимо указать fileId или s3Key', + }); + } + + const result = await fileService.getPresignedUrl({ + userId: req.user.id, + fileId, + s3Key, + expiresIn: Math.min(Number(expiresIn), 86400), // макс. 24 часа + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +/** + * GET /api/upload/files + * Получить список файлов пользователя + * Требует: авторизация + */ +router.get('/files', authRequired, async (req, res, next) => { + try { + const { + fileType = 'image', + folder = 'images_input', + limit = 50, + offset = 0, + } = req.query; + + const result = await fileService.listUserFiles(req.user.id, { + fileType, + folder, + limit: Math.min(Number(limit), 100), + offset: Number(offset), + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + next(err); + } +}); + +/** + * GET /api/upload/stats + * Получить статистику по файлам пользователя + * Требует: авторизация + */ +router.get('/stats', authRequired, async (req, res, next) => { + try { + const stats = await fileService.getFileStats(req.user.id); + res.json({ + ok: true, + data: stats, + }); + } catch (err) { + next(err); + } +}); + +/** + * DELETE /api/upload/file/:fileId + * Удалить файл + * Требует: авторизация, CSRF, владение файлом + */ +router.delete('/file/:fileId', authRequired, csrfRequired, async (req, res, next) => { + try { + const { fileId } = req.params; + const userId = req.user.id; + + const result = await fileService.deleteFile({ + userId, + fileId: Number(fileId), + }); + + res.json({ + ok: true, + data: result, + }); + } catch (err) { + if (err.code === 'FILE_NOT_FOUND') { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: err.message, + }); + } + next(err); + } +}); + +/** + * GET /api/upload/generation/:generationUuid/files + * Получить файлы генерации + * Требует: авторизация, владение генерацией + */ +router.get('/generation/:generationUuid/files', authRequired, async (req, res, next) => { + try { + const { generationUuid } = req.params; + const userId = req.user.id; + + const files = await fileService.getGenerationFiles(generationUuid, userId); + + res.json({ + ok: true, + data: files, + }); + } catch (err) { + next(err); + } +}); + +/** + * GET /api/upload/generation/:generationUuid/step/:stepId/files + * Получить файлы шага генерации + * Требует: авторизация, владение генерацией + */ +router.get('/generation/:generationUuid/step/:stepId/files', authRequired, async (req, res, next) => { + try { + const { generationUuid, stepId } = req.params; + const userId = req.user.id; + + const files = await fileService.getGenerationStepFiles(generationUuid, stepId, userId); + + res.json({ + ok: true, + data: files, + }); + } catch (err) { + next(err); + } +}); + +/** + * PUT /api/upload/file/:fileId/link + * Связать файл с генерацией + * Требует: авторизация, CSRF, владение файлом и генерацией + */ +router.put('/file/:fileId/link', authRequired, csrfRequired, async (req, res, next) => { + try { + const { fileId } = req.params; + const { generationUuid, generationStepId } = req.body; + const userId = req.user.id; + + // Проверяем владение файлом + const fileRecord = await userFileRepository.findByIdAndOwner(Number(fileId), userId); + if (!fileRecord) { + return res.status(404).json({ + ok: false, + error: 'FILE_NOT_FOUND', + message: 'Файл не найден или у вас нет доступа к нему', + }); + } + + // Обновляем связь + const { pool } = await import('../db.js'); + const query = ` + UPDATE uno_bff.user_files + SET generation_uuid = $1, generation_step_id = $2, updated_at = now() + WHERE id = $3 AND user_id = $4 + RETURNING id, generation_uuid, generation_step_id + `; + const result = await pool.query(query, [generationUuid, generationStepId ? Number(generationStepId) : null, fileId, userId]); + + res.json({ + ok: true, + data: result.rows[0], + }); + } catch (err) { + next(err); + } +}); + +export default router; diff --git a/bff/services/auth.service.js b/bff/services/auth.service.js new file mode 100644 index 0000000..14c3992 --- /dev/null +++ b/bff/services/auth.service.js @@ -0,0 +1,596 @@ +import { findUserByEmailAndPassword, touchLastLogin, findUserById, createUser, userExistsByEmail } from '../repositories/user.repository.js'; +import { createAuthSession, revokeSession, getAuthSession, rotateSessionTokens } from '../repositories/session.repository.js'; +import { + generateRefreshToken, + generateCsrfToken, + hashToken, + signAccessToken, + verifyRefreshToken, + signRefreshToken, +} from './token.service.js'; + +const REFRESH_TTL_DAYS = Number(process.env.REFRESH_TTL_DAYS || 30); + +function buildSessionExpiresAt() { + const dt = new Date(); + dt.setDate(dt.getDate() + REFRESH_TTL_DAYS); + return dt; +} + +export async function loginUser({ + email, + password, + userAgent, + ipAddress, +}) { + const user = await findUserByEmailAndPassword(email, password); + + if (!user) { + const err = new Error('Invalid email or password'); + err.statusCode = 401; + err.code = 'INVALID_CREDENTIALS'; + throw err; + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + await touchLastLogin(user.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { + id: session.id, + expiresAt: session.expires_at, + }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function logoutUser({ sessionId }) { + if (!sessionId) { + return; + } + + await revokeSession(sessionId); +} + +export async function refreshUserSession({ refreshToken, userAgent, ipAddress }) { + let payload; + try { + payload = verifyRefreshToken(refreshToken); + } catch (err) { + const error = new Error('Invalid or expired refresh token'); + error.code = 'INVALID_REFRESH_TOKEN'; + error.status = 401; + throw error; + } + + const session = await getAuthSession(payload.sid); + if (!session) { + const error = new Error('Session not found or expired'); + error.code = 'SESSION_NOT_FOUND'; + error.status = 401; + throw error; + } + + const user = await findUserById(session.user_id); + if (!user) { + const error = new Error('User not found'); + error.code = 'USER_NOT_FOUND'; + error.status = 401; + throw error; + } + + const newRefreshToken = generateRefreshToken(); + const newCsrfToken = generateCsrfToken(); + const newRefreshTokenHash = hashToken(newRefreshToken); + const newCsrfTokenHash = hashToken(newCsrfToken); + + const updatedSession = await rotateSessionTokens( + session.id, + newRefreshTokenHash, + newCsrfTokenHash + ); + + if (!updatedSession) { + const error = new Error('Failed to rotate session tokens'); + error.code = 'SESSION_ROTATION_FAILED'; + error.status = 500; + throw error; + } + + const accessToken = signAccessToken(user, session.id); + const refreshTokenJwt = signRefreshToken({ + sub: user.id, + sid: session.id, + }); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + accessToken, + refreshToken: refreshTokenJwt, + csrfToken: newCsrfToken, + }; +} +export async function registerUser({ email, password, displayName, userAgent, ipAddress }) { + const { userExistsByEmail, createUser } = await import('../repositories/user.repository.js'); + + if (!email || !password) { + const err = new Error('Email and password are required'); + err.statusCode = 400; + err.code = 'VALIDATION_ERROR'; + throw err; + } + + if (password.length < 6) { + const err = new Error('Password must be at least 6 characters'); + err.statusCode = 400; + err.code = 'PASSWORD_TOO_SHORT'; + throw err; + } + + const exists = await userExistsByEmail(email); + if (exists) { + const err = new Error('User with this email already exists'); + err.statusCode = 409; + err.code = 'EMAIL_ALREADY_EXISTS'; + throw err; + } + + const user = await createUser({ email, password, displayName }); + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function loginWithTelegram({ telegramData, userAgent, ipAddress }) { + const crypto = await import("crypto"); + + const { hash, ...fields } = telegramData; + const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; + + if (!BOT_TOKEN) throw Object.assign(new Error("Telegram not configured"), { statusCode: 500, code: "CONFIG_ERROR" }); + + // Verify auth_date freshness (max 1 day) + const authDate = Number(fields.auth_date); + if (!authDate || Date.now() / 1000 - authDate > 86400) { + throw Object.assign(new Error("Telegram auth expired"), { statusCode: 401, code: "AUTH_EXPIRED" }); + } + + // Antifraud: require Telegram username (filters out throwaway / bot accounts) + if (!fields.username || String(fields.username).trim().length < 3) { + throw Object.assign(new Error("Telegram username required"), { statusCode: 400, code: "TELEGRAM_USERNAME_REQUIRED" }); + } + + // Verify HMAC-SHA256 signature + const dataCheckString = Object.keys(fields) + .sort() + .filter(k => fields[k] !== undefined && fields[k] !== null) + .map(k => `${k}=${fields[k]}`) + .join("\n"); + + const secretKey = crypto.createHash("sha256").update(BOT_TOKEN).digest(); + const hmac = crypto.createHmac("sha256", secretKey).update(dataCheckString).digest("hex"); + + if (hmac !== hash) { + throw Object.assign(new Error("Telegram signature invalid"), { statusCode: 401, code: "INVALID_SIGNATURE" }); + } + + const { findUserByTelegramId, createUserFromTelegram, countTelegramSignupsByIpLast24h, recordSignupAttempt } = await import("../repositories/user.repository.js"); + + const telegramId = Number(fields.id); + let user = await findUserByTelegramId(telegramId); + + if (!user) { + // Antifraud: limit 3 new Telegram signups per IP per 24h + const recentCount = await countTelegramSignupsByIpLast24h(ipAddress); + if (recentCount >= 3) { + throw Object.assign(new Error("Too many signups from this IP"), { statusCode: 429, code: "SIGNUP_RATE_LIMIT" }); + } + const displayName = [fields.first_name, fields.last_name].filter(Boolean).join(" ") || fields.username || null; + const email = `tg_${telegramId}@telegram.local`; + user = await createUserFromTelegram({ telegramId, displayName, email }); + await recordSignupAttempt({ ipAddress, provider: 'telegram', telegramId, userAgent }); + } + + if (user.status !== "active") { + throw Object.assign(new Error("Account is blocked"), { statusCode: 403, code: "ACCOUNT_BLOCKED" }); + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function linkTelegramAccount({ userId, telegramData }) { + const crypto = await import("crypto"); + const { hash, ...fields } = telegramData || {}; + const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; + if (!BOT_TOKEN) throw Object.assign(new Error("Telegram not configured"), { statusCode: 500, code: "CONFIG_ERROR" }); + + const authDate = Number(fields.auth_date); + if (!authDate || Date.now() / 1000 - authDate > 86400) { + throw Object.assign(new Error("Telegram auth expired"), { statusCode: 401, code: "AUTH_EXPIRED" }); + } + if (!fields.username || String(fields.username).trim().length < 3) { + throw Object.assign(new Error("Telegram username required"), { statusCode: 400, code: "TELEGRAM_USERNAME_REQUIRED" }); + } + const dataCheckString = Object.keys(fields) + .sort() + .filter(k => fields[k] !== undefined && fields[k] !== null) + .map(k => `${k}=${fields[k]}`) + .join("\n"); + const secretKey = crypto.createHash("sha256").update(BOT_TOKEN).digest(); + const hmac = crypto.createHmac("sha256", secretKey).update(dataCheckString).digest("hex"); + if (hmac !== hash) { + throw Object.assign(new Error("Telegram signature invalid"), { statusCode: 401, code: "INVALID_SIGNATURE" }); + } + + const { findTelegramOwner, linkTelegramToUser } = await import("../repositories/user.repository.js"); + const telegramId = Number(fields.id); + const owner = await findTelegramOwner(telegramId); + if (owner && owner.id !== userId) { + throw Object.assign(new Error("Telegram already linked to another account"), { statusCode: 409, code: "TELEGRAM_ALREADY_LINKED" }); + } + await linkTelegramToUser(userId, telegramId); + return { ok: true, telegramId }; +} + +export async function unlinkTelegramAccount(userId) { + const { unlinkTelegramFromUser } = await import("../repositories/user.repository.js"); + await unlinkTelegramFromUser(userId); + return { ok: true }; +} + + +// ─── Bot deeplink login flow ───────────────────────────────────────────────── + +export async function startTelegramLoginFlow({ intent, userId, ipAddress, userAgent }) { + const crypto = await import("crypto"); + const { createTgLoginToken, countTgStartsByIpLastMinutes } = await import("../repositories/tg-login.repository.js"); + + // Антифрод: 10 стартов с одного IP за 10 минут + const recent = await countTgStartsByIpLastMinutes(ipAddress, 10); + if (recent >= 10) { + throw Object.assign(new Error("Too many login attempts. Try again later."), + { statusCode: 429, code: "TG_START_RATE_LIMIT" }); + } + + // Telegram /start payload: до 64 base64url-символов + const token = crypto.randomBytes(24).toString("base64url"); + const created = await createTgLoginToken({ token, intent, userId, ipAddress, userAgent }); + + const botUsername = process.env.TELEGRAM_BOT_USERNAME || "One_Click_Auth_bot"; + const url = `https://t.me/${botUsername}?start=${token}`; + + return { token, url, expiresAt: created.expiresAt, ttlSec: created.ttlSec }; +} + +export async function confirmTelegramFromBot({ token, telegramUser }) { + const { findTgLoginToken, markTgTokenConfirmed, markTgTokenError } = await import("../repositories/tg-login.repository.js"); + const { + findUserByTelegramId, createUserFromTelegram, + countTelegramSignupsByIpLast24h, recordSignupAttempt, + findUserById, findTelegramOwner, linkTelegramToUser, + } = await import("../repositories/user.repository.js"); + + const row = await findTgLoginToken(token); + if (!row) return { ok: false, code: "TOKEN_NOT_FOUND", message: "Ссылка не найдена или устарела." }; + if (row.status !== "pending") return { ok: false, code: "TOKEN_NOT_PENDING", message: "Эта ссылка уже использована. Запросите новую на сайте." }; + if (new Date(row.expires_at) < new Date()) { + await markTgTokenError(token, "EXPIRED"); + return { ok: false, code: "EXPIRED", message: "Ссылка истекла. Запросите новую на сайте." }; + } + + // Антифрод: требуем username + if (!telegramUser.username || String(telegramUser.username).trim().length < 3) { + await markTgTokenError(token, "USERNAME_REQUIRED"); + return { ok: false, code: "USERNAME_REQUIRED", message: "У вашего Telegram-аккаунта должно быть @username." }; + } + + const telegramId = Number(telegramUser.id); + + if (row.intent === "link") { + if (!row.user_id) { + await markTgTokenError(token, "NO_USER"); + return { ok: false, code: "NO_USER", message: "Авторизация не найдена. Войдите на сайт и попробуйте снова." }; + } + const owner = await findTelegramOwner(telegramId); + if (owner && owner.id !== row.user_id) { + await markTgTokenError(token, "TELEGRAM_ALREADY_LINKED"); + return { ok: false, code: "TELEGRAM_ALREADY_LINKED", message: "Этот Telegram уже привязан к другому аккаунту." }; + } + await linkTelegramToUser(row.user_id, telegramId); + await markTgTokenConfirmed(token, { + telegramId, + telegramUsername: telegramUser.username, + telegramFirstName: telegramUser.first_name || null, + telegramLastName: telegramUser.last_name || null, + userId: row.user_id, + }); + return { ok: true, message: "Готово! Telegram привязан. Возвращайтесь на сайт." }; + } + + // intent === "login" + let user = await findUserByTelegramId(telegramId); + if (!user) { + const recent = await countTelegramSignupsByIpLast24h(row.ip_address); + if (recent >= 3) { + await markTgTokenError(token, "SIGNUP_RATE_LIMIT"); + return { ok: false, code: "SIGNUP_RATE_LIMIT", message: "Слишком много регистраций с этого IP. Попробуйте позже." }; + } + const displayName = [telegramUser.first_name, telegramUser.last_name].filter(Boolean).join(" ") || telegramUser.username || null; + const email = `tg_${telegramId}@telegram.local`; + user = await createUserFromTelegram({ telegramId, displayName, email }); + await recordSignupAttempt({ ipAddress: row.ip_address, provider: "telegram", telegramId, userAgent: row.user_agent }); + } + + if (user.status !== "active") { + await markTgTokenError(token, "ACCOUNT_BLOCKED"); + return { ok: false, code: "ACCOUNT_BLOCKED", message: "Аккаунт заблокирован." }; + } + + await markTgTokenConfirmed(token, { + telegramId, + telegramUsername: telegramUser.username, + telegramFirstName: telegramUser.first_name || null, + telegramLastName: telegramUser.last_name || null, + userId: user.id, + }); + return { ok: true, message: "Готово! Можете возвращаться на сайт — вы уже вошли." }; +} + +export async function pollTelegramLoginFlow({ token, userAgent, ipAddress }) { + const { findTgLoginToken, consumeTgToken } = await import("../repositories/tg-login.repository.js"); + const { findUserById } = await import("../repositories/user.repository.js"); + + const row = await findTgLoginToken(token); + if (!row) return { status: "not_found" }; + + if (row.status === "pending") { + if (new Date(row.expires_at) < new Date()) return { status: "expired" }; + return { status: "pending" }; + } + + if (row.status === "error") { + return { status: "error", code: row.error_code }; + } + + if (row.status === "consumed") { + return { status: "consumed" }; + } + + if (row.status !== "confirmed") { + return { status: row.status }; + } + + // confirmed → consume + maybe issue session + const consumed = await consumeTgToken(token); + if (!consumed) return { status: "consumed" }; + + if (row.intent === "link") { + return { status: "linked" }; + } + + // login: создаём сессию + const user = await findUserById(row.user_id); + if (!user) return { status: "error", code: "USER_NOT_FOUND" }; + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash: hashToken(refreshToken), + csrfTokenHash: hashToken(csrfToken), + userAgent, ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + const accessToken = signAccessToken(user, session.id); + + return { + status: "authenticated", + user: { + id: user.id, email: user.email, displayName: user.display_name, + role: user.role, status: user.status, + }, + accessToken, refreshToken, csrfToken, + sessionExpiresAt: session.expires_at, + }; +} + + +// ─── Telegram Mini App (Web App) login by initData ─────────────────────────── +// Спека: https://core.telegram.org/bots/webapps#validating-data-received-via-the-mini-app +// Алгоритм: secret = HMAC_SHA256("WebAppData", BOT_TOKEN); +// expected = HMAC_SHA256(secret, data_check_string).hex(); +// data_check_string = отсортированные по ключу пары "k=v", разделённые "\n", без поля "hash". +export async function loginWithTelegramInitData({ initData, userAgent, ipAddress }) { + const crypto = await import("crypto"); + const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; + if (!BOT_TOKEN) { + throw Object.assign(new Error("Telegram not configured"), { statusCode: 500, code: "CONFIG_ERROR" }); + } + if (!initData || typeof initData !== "string") { + throw Object.assign(new Error("initData is required"), { statusCode: 400, code: "INIT_DATA_REQUIRED" }); + } + + // Парсим как URLSearchParams + const params = new URLSearchParams(initData); + const hash = params.get("hash"); + if (!hash) { + throw Object.assign(new Error("hash missing"), { statusCode: 401, code: "INVALID_INIT_DATA" }); + } + params.delete("hash"); + + const pairs = []; + for (const [k, v] of params.entries()) pairs.push([k, v]); + pairs.sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0)); + const dataCheckString = pairs.map(([k, v]) => `${k}=${v}`).join("\n"); + + const secretKey = crypto.createHmac("sha256", "WebAppData").update(BOT_TOKEN).digest(); + const expected = crypto.createHmac("sha256", secretKey).update(dataCheckString).digest("hex"); + + // Константно-временное сравнение + const a = Buffer.from(expected, "hex"); + const b = Buffer.from(hash, "hex"); + if (a.length !== b.length || !crypto.timingSafeEqual(a, b)) { + throw Object.assign(new Error("Telegram signature invalid"), { statusCode: 401, code: "INVALID_INIT_DATA" }); + } + + // Свежесть auth_date (24 часа, как в widget-flow) + const authDate = Number(params.get("auth_date")); + if (!authDate || Date.now() / 1000 - authDate > 86400) { + throw Object.assign(new Error("Telegram auth expired"), { statusCode: 401, code: "AUTH_EXPIRED" }); + } + + // Парсим user + let tgUser; + try { + tgUser = JSON.parse(params.get("user") || "null"); + } catch { + tgUser = null; + } + if (!tgUser || !tgUser.id) { + throw Object.assign(new Error("Telegram user missing"), { statusCode: 400, code: "TELEGRAM_USER_MISSING" }); + } + + // Антифрод: требуем username + if (!tgUser.username || String(tgUser.username).trim().length < 3) { + throw Object.assign(new Error("Telegram username required"), { statusCode: 400, code: "TELEGRAM_USERNAME_REQUIRED" }); + } + + const { findUserByTelegramId, createUserFromTelegram, countTelegramSignupsByIpLast24h, recordSignupAttempt } = + await import("../repositories/user.repository.js"); + + const telegramId = Number(tgUser.id); + let user = await findUserByTelegramId(telegramId); + + if (!user) { + // Антифрод: 3 регистрации с одного IP за 24 часа (общий счётчик с widget/bot-flow) + const recentCount = await countTelegramSignupsByIpLast24h(ipAddress); + if (recentCount >= 3) { + throw Object.assign(new Error("Too many signups from this IP"), { statusCode: 429, code: "SIGNUP_RATE_LIMIT" }); + } + const displayName = + [tgUser.first_name, tgUser.last_name].filter(Boolean).join(" ") || tgUser.username || null; + const email = `tg_${telegramId}@telegram.local`; + user = await createUserFromTelegram({ telegramId, displayName, email }); + await recordSignupAttempt({ ipAddress, provider: "telegram_webapp", telegramId, userAgent }); + } + + if (user.status !== "active") { + throw Object.assign(new Error("Account is blocked"), { statusCode: 403, code: "ACCOUNT_BLOCKED" }); + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} diff --git a/bff/services/auth.service.js.bak.20260423_095808 b/bff/services/auth.service.js.bak.20260423_095808 new file mode 100644 index 0000000..6b4416a --- /dev/null +++ b/bff/services/auth.service.js.bak.20260423_095808 @@ -0,0 +1,274 @@ +import { findUserByEmailAndPassword, touchLastLogin, findUserById, createUser, userExistsByEmail } from '../repositories/user.repository.js'; +import { createAuthSession, revokeSession, getAuthSession, rotateSessionTokens } from '../repositories/session.repository.js'; +import { + generateRefreshToken, + generateCsrfToken, + hashToken, + signAccessToken, + verifyRefreshToken, + signRefreshToken, +} from './token.service.js'; + +const REFRESH_TTL_DAYS = Number(process.env.REFRESH_TTL_DAYS || 30); + +function buildSessionExpiresAt() { + const dt = new Date(); + dt.setDate(dt.getDate() + REFRESH_TTL_DAYS); + return dt; +} + +export async function loginUser({ + email, + password, + userAgent, + ipAddress, +}) { + const user = await findUserByEmailAndPassword(email, password); + + if (!user) { + const err = new Error('Invalid email or password'); + err.statusCode = 401; + err.code = 'INVALID_CREDENTIALS'; + throw err; + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + await touchLastLogin(user.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { + id: session.id, + expiresAt: session.expires_at, + }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function logoutUser({ sessionId }) { + if (!sessionId) { + return; + } + + await revokeSession(sessionId); +} + +export async function refreshUserSession({ refreshToken, userAgent, ipAddress }) { + let payload; + try { + payload = verifyRefreshToken(refreshToken); + } catch (err) { + const error = new Error('Invalid or expired refresh token'); + error.code = 'INVALID_REFRESH_TOKEN'; + error.status = 401; + throw error; + } + + const session = await getAuthSession(payload.sid); + if (!session) { + const error = new Error('Session not found or expired'); + error.code = 'SESSION_NOT_FOUND'; + error.status = 401; + throw error; + } + + const user = await findUserById(session.user_id); + if (!user) { + const error = new Error('User not found'); + error.code = 'USER_NOT_FOUND'; + error.status = 401; + throw error; + } + + const newRefreshToken = generateRefreshToken(); + const newCsrfToken = generateCsrfToken(); + const newRefreshTokenHash = hashToken(newRefreshToken); + const newCsrfTokenHash = hashToken(newCsrfToken); + + const updatedSession = await rotateSessionTokens( + session.id, + newRefreshTokenHash, + newCsrfTokenHash + ); + + if (!updatedSession) { + const error = new Error('Failed to rotate session tokens'); + error.code = 'SESSION_ROTATION_FAILED'; + error.status = 500; + throw error; + } + + const accessToken = signAccessToken(user, session.id); + const refreshTokenJwt = signRefreshToken({ + sub: user.id, + sid: session.id, + }); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + accessToken, + refreshToken: refreshTokenJwt, + csrfToken: newCsrfToken, + }; +} +export async function registerUser({ email, password, displayName, userAgent, ipAddress }) { + const { userExistsByEmail, createUser } = await import('../repositories/user.repository.js'); + + if (!email || !password) { + const err = new Error('Email and password are required'); + err.statusCode = 400; + err.code = 'VALIDATION_ERROR'; + throw err; + } + + if (password.length < 6) { + const err = new Error('Password must be at least 6 characters'); + err.statusCode = 400; + err.code = 'PASSWORD_TOO_SHORT'; + throw err; + } + + const exists = await userExistsByEmail(email); + if (exists) { + const err = new Error('User with this email already exists'); + err.statusCode = 409; + err.code = 'EMAIL_ALREADY_EXISTS'; + throw err; + } + + const user = await createUser({ email, password, displayName }); + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function loginWithTelegram({ telegramData, userAgent, ipAddress }) { + const crypto = await import("crypto"); + + const { hash, ...fields } = telegramData; + const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; + + if (!BOT_TOKEN) throw Object.assign(new Error("Telegram not configured"), { statusCode: 500, code: "CONFIG_ERROR" }); + + // Verify auth_date freshness (max 1 day) + const authDate = Number(fields.auth_date); + if (!authDate || Date.now() / 1000 - authDate > 86400) { + throw Object.assign(new Error("Telegram auth expired"), { statusCode: 401, code: "AUTH_EXPIRED" }); + } + + // Verify HMAC-SHA256 signature + const dataCheckString = Object.keys(fields) + .sort() + .filter(k => fields[k] !== undefined && fields[k] !== null) + .map(k => `${k}=${fields[k]}`) + .join("\n"); + + const secretKey = crypto.createHash("sha256").update(BOT_TOKEN).digest(); + const hmac = crypto.createHmac("sha256", secretKey).update(dataCheckString).digest("hex"); + + if (hmac !== hash) { + throw Object.assign(new Error("Telegram signature invalid"), { statusCode: 401, code: "INVALID_SIGNATURE" }); + } + + const { findUserByTelegramId, createUserFromTelegram } = await import("../repositories/user.repository.js"); + + const telegramId = Number(fields.id); + let user = await findUserByTelegramId(telegramId); + + if (!user) { + const displayName = [fields.first_name, fields.last_name].filter(Boolean).join(" ") || fields.username || null; + const email = `tg_${telegramId}@telegram.local`; + user = await createUserFromTelegram({ telegramId, displayName, email }); + } + + if (user.status !== "active") { + throw Object.assign(new Error("Account is blocked"), { statusCode: 403, code: "ACCOUNT_BLOCKED" }); + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} diff --git a/bff/services/auth.service.js.bak.20260423_102956 b/bff/services/auth.service.js.bak.20260423_102956 new file mode 100644 index 0000000..85f8d9d --- /dev/null +++ b/bff/services/auth.service.js.bak.20260423_102956 @@ -0,0 +1,285 @@ +import { findUserByEmailAndPassword, touchLastLogin, findUserById, createUser, userExistsByEmail } from '../repositories/user.repository.js'; +import { createAuthSession, revokeSession, getAuthSession, rotateSessionTokens } from '../repositories/session.repository.js'; +import { + generateRefreshToken, + generateCsrfToken, + hashToken, + signAccessToken, + verifyRefreshToken, + signRefreshToken, +} from './token.service.js'; + +const REFRESH_TTL_DAYS = Number(process.env.REFRESH_TTL_DAYS || 30); + +function buildSessionExpiresAt() { + const dt = new Date(); + dt.setDate(dt.getDate() + REFRESH_TTL_DAYS); + return dt; +} + +export async function loginUser({ + email, + password, + userAgent, + ipAddress, +}) { + const user = await findUserByEmailAndPassword(email, password); + + if (!user) { + const err = new Error('Invalid email or password'); + err.statusCode = 401; + err.code = 'INVALID_CREDENTIALS'; + throw err; + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + await touchLastLogin(user.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { + id: session.id, + expiresAt: session.expires_at, + }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function logoutUser({ sessionId }) { + if (!sessionId) { + return; + } + + await revokeSession(sessionId); +} + +export async function refreshUserSession({ refreshToken, userAgent, ipAddress }) { + let payload; + try { + payload = verifyRefreshToken(refreshToken); + } catch (err) { + const error = new Error('Invalid or expired refresh token'); + error.code = 'INVALID_REFRESH_TOKEN'; + error.status = 401; + throw error; + } + + const session = await getAuthSession(payload.sid); + if (!session) { + const error = new Error('Session not found or expired'); + error.code = 'SESSION_NOT_FOUND'; + error.status = 401; + throw error; + } + + const user = await findUserById(session.user_id); + if (!user) { + const error = new Error('User not found'); + error.code = 'USER_NOT_FOUND'; + error.status = 401; + throw error; + } + + const newRefreshToken = generateRefreshToken(); + const newCsrfToken = generateCsrfToken(); + const newRefreshTokenHash = hashToken(newRefreshToken); + const newCsrfTokenHash = hashToken(newCsrfToken); + + const updatedSession = await rotateSessionTokens( + session.id, + newRefreshTokenHash, + newCsrfTokenHash + ); + + if (!updatedSession) { + const error = new Error('Failed to rotate session tokens'); + error.code = 'SESSION_ROTATION_FAILED'; + error.status = 500; + throw error; + } + + const accessToken = signAccessToken(user, session.id); + const refreshTokenJwt = signRefreshToken({ + sub: user.id, + sid: session.id, + }); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + accessToken, + refreshToken: refreshTokenJwt, + csrfToken: newCsrfToken, + }; +} +export async function registerUser({ email, password, displayName, userAgent, ipAddress }) { + const { userExistsByEmail, createUser } = await import('../repositories/user.repository.js'); + + if (!email || !password) { + const err = new Error('Email and password are required'); + err.statusCode = 400; + err.code = 'VALIDATION_ERROR'; + throw err; + } + + if (password.length < 6) { + const err = new Error('Password must be at least 6 characters'); + err.statusCode = 400; + err.code = 'PASSWORD_TOO_SHORT'; + throw err; + } + + const exists = await userExistsByEmail(email); + if (exists) { + const err = new Error('User with this email already exists'); + err.statusCode = 409; + err.code = 'EMAIL_ALREADY_EXISTS'; + throw err; + } + + const user = await createUser({ email, password, displayName }); + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function loginWithTelegram({ telegramData, userAgent, ipAddress }) { + const crypto = await import("crypto"); + + const { hash, ...fields } = telegramData; + const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; + + if (!BOT_TOKEN) throw Object.assign(new Error("Telegram not configured"), { statusCode: 500, code: "CONFIG_ERROR" }); + + // Verify auth_date freshness (max 1 day) + const authDate = Number(fields.auth_date); + if (!authDate || Date.now() / 1000 - authDate > 86400) { + throw Object.assign(new Error("Telegram auth expired"), { statusCode: 401, code: "AUTH_EXPIRED" }); + } + + // Antifraud: require Telegram username (filters out throwaway / bot accounts) + if (!fields.username || String(fields.username).trim().length < 3) { + throw Object.assign(new Error("Telegram username required"), { statusCode: 400, code: "TELEGRAM_USERNAME_REQUIRED" }); + } + + // Verify HMAC-SHA256 signature + const dataCheckString = Object.keys(fields) + .sort() + .filter(k => fields[k] !== undefined && fields[k] !== null) + .map(k => `${k}=${fields[k]}`) + .join("\n"); + + const secretKey = crypto.createHash("sha256").update(BOT_TOKEN).digest(); + const hmac = crypto.createHmac("sha256", secretKey).update(dataCheckString).digest("hex"); + + if (hmac !== hash) { + throw Object.assign(new Error("Telegram signature invalid"), { statusCode: 401, code: "INVALID_SIGNATURE" }); + } + + const { findUserByTelegramId, createUserFromTelegram, countTelegramSignupsByIpLast24h, recordSignupAttempt } = await import("../repositories/user.repository.js"); + + const telegramId = Number(fields.id); + let user = await findUserByTelegramId(telegramId); + + if (!user) { + // Antifraud: limit 3 new Telegram signups per IP per 24h + const recentCount = await countTelegramSignupsByIpLast24h(ipAddress); + if (recentCount >= 3) { + throw Object.assign(new Error("Too many signups from this IP"), { statusCode: 429, code: "SIGNUP_RATE_LIMIT" }); + } + const displayName = [fields.first_name, fields.last_name].filter(Boolean).join(" ") || fields.username || null; + const email = `tg_${telegramId}@telegram.local`; + user = await createUserFromTelegram({ telegramId, displayName, email }); + await recordSignupAttempt({ ipAddress, provider: 'telegram', telegramId, userAgent }); + } + + if (user.status !== "active") { + throw Object.assign(new Error("Account is blocked"), { statusCode: 403, code: "ACCOUNT_BLOCKED" }); + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} diff --git a/bff/services/auth.service.js.bak.20260423_104351 b/bff/services/auth.service.js.bak.20260423_104351 new file mode 100644 index 0000000..7691b7b --- /dev/null +++ b/bff/services/auth.service.js.bak.20260423_104351 @@ -0,0 +1,326 @@ +import { findUserByEmailAndPassword, touchLastLogin, findUserById, createUser, userExistsByEmail } from '../repositories/user.repository.js'; +import { createAuthSession, revokeSession, getAuthSession, rotateSessionTokens } from '../repositories/session.repository.js'; +import { + generateRefreshToken, + generateCsrfToken, + hashToken, + signAccessToken, + verifyRefreshToken, + signRefreshToken, +} from './token.service.js'; + +const REFRESH_TTL_DAYS = Number(process.env.REFRESH_TTL_DAYS || 30); + +function buildSessionExpiresAt() { + const dt = new Date(); + dt.setDate(dt.getDate() + REFRESH_TTL_DAYS); + return dt; +} + +export async function loginUser({ + email, + password, + userAgent, + ipAddress, +}) { + const user = await findUserByEmailAndPassword(email, password); + + if (!user) { + const err = new Error('Invalid email or password'); + err.statusCode = 401; + err.code = 'INVALID_CREDENTIALS'; + throw err; + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + await touchLastLogin(user.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { + id: session.id, + expiresAt: session.expires_at, + }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function logoutUser({ sessionId }) { + if (!sessionId) { + return; + } + + await revokeSession(sessionId); +} + +export async function refreshUserSession({ refreshToken, userAgent, ipAddress }) { + let payload; + try { + payload = verifyRefreshToken(refreshToken); + } catch (err) { + const error = new Error('Invalid or expired refresh token'); + error.code = 'INVALID_REFRESH_TOKEN'; + error.status = 401; + throw error; + } + + const session = await getAuthSession(payload.sid); + if (!session) { + const error = new Error('Session not found or expired'); + error.code = 'SESSION_NOT_FOUND'; + error.status = 401; + throw error; + } + + const user = await findUserById(session.user_id); + if (!user) { + const error = new Error('User not found'); + error.code = 'USER_NOT_FOUND'; + error.status = 401; + throw error; + } + + const newRefreshToken = generateRefreshToken(); + const newCsrfToken = generateCsrfToken(); + const newRefreshTokenHash = hashToken(newRefreshToken); + const newCsrfTokenHash = hashToken(newCsrfToken); + + const updatedSession = await rotateSessionTokens( + session.id, + newRefreshTokenHash, + newCsrfTokenHash + ); + + if (!updatedSession) { + const error = new Error('Failed to rotate session tokens'); + error.code = 'SESSION_ROTATION_FAILED'; + error.status = 500; + throw error; + } + + const accessToken = signAccessToken(user, session.id); + const refreshTokenJwt = signRefreshToken({ + sub: user.id, + sid: session.id, + }); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + accessToken, + refreshToken: refreshTokenJwt, + csrfToken: newCsrfToken, + }; +} +export async function registerUser({ email, password, displayName, userAgent, ipAddress }) { + const { userExistsByEmail, createUser } = await import('../repositories/user.repository.js'); + + if (!email || !password) { + const err = new Error('Email and password are required'); + err.statusCode = 400; + err.code = 'VALIDATION_ERROR'; + throw err; + } + + if (password.length < 6) { + const err = new Error('Password must be at least 6 characters'); + err.statusCode = 400; + err.code = 'PASSWORD_TOO_SHORT'; + throw err; + } + + const exists = await userExistsByEmail(email); + if (exists) { + const err = new Error('User with this email already exists'); + err.statusCode = 409; + err.code = 'EMAIL_ALREADY_EXISTS'; + throw err; + } + + const user = await createUser({ email, password, displayName }); + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function loginWithTelegram({ telegramData, userAgent, ipAddress }) { + const crypto = await import("crypto"); + + const { hash, ...fields } = telegramData; + const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; + + if (!BOT_TOKEN) throw Object.assign(new Error("Telegram not configured"), { statusCode: 500, code: "CONFIG_ERROR" }); + + // Verify auth_date freshness (max 1 day) + const authDate = Number(fields.auth_date); + if (!authDate || Date.now() / 1000 - authDate > 86400) { + throw Object.assign(new Error("Telegram auth expired"), { statusCode: 401, code: "AUTH_EXPIRED" }); + } + + // Antifraud: require Telegram username (filters out throwaway / bot accounts) + if (!fields.username || String(fields.username).trim().length < 3) { + throw Object.assign(new Error("Telegram username required"), { statusCode: 400, code: "TELEGRAM_USERNAME_REQUIRED" }); + } + + // Verify HMAC-SHA256 signature + const dataCheckString = Object.keys(fields) + .sort() + .filter(k => fields[k] !== undefined && fields[k] !== null) + .map(k => `${k}=${fields[k]}`) + .join("\n"); + + const secretKey = crypto.createHash("sha256").update(BOT_TOKEN).digest(); + const hmac = crypto.createHmac("sha256", secretKey).update(dataCheckString).digest("hex"); + + if (hmac !== hash) { + throw Object.assign(new Error("Telegram signature invalid"), { statusCode: 401, code: "INVALID_SIGNATURE" }); + } + + const { findUserByTelegramId, createUserFromTelegram, countTelegramSignupsByIpLast24h, recordSignupAttempt } = await import("../repositories/user.repository.js"); + + const telegramId = Number(fields.id); + let user = await findUserByTelegramId(telegramId); + + if (!user) { + // Antifraud: limit 3 new Telegram signups per IP per 24h + const recentCount = await countTelegramSignupsByIpLast24h(ipAddress); + if (recentCount >= 3) { + throw Object.assign(new Error("Too many signups from this IP"), { statusCode: 429, code: "SIGNUP_RATE_LIMIT" }); + } + const displayName = [fields.first_name, fields.last_name].filter(Boolean).join(" ") || fields.username || null; + const email = `tg_${telegramId}@telegram.local`; + user = await createUserFromTelegram({ telegramId, displayName, email }); + await recordSignupAttempt({ ipAddress, provider: 'telegram', telegramId, userAgent }); + } + + if (user.status !== "active") { + throw Object.assign(new Error("Account is blocked"), { statusCode: 403, code: "ACCOUNT_BLOCKED" }); + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function linkTelegramAccount({ userId, telegramData }) { + const crypto = await import("crypto"); + const { hash, ...fields } = telegramData || {}; + const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; + if (!BOT_TOKEN) throw Object.assign(new Error("Telegram not configured"), { statusCode: 500, code: "CONFIG_ERROR" }); + + const authDate = Number(fields.auth_date); + if (!authDate || Date.now() / 1000 - authDate > 86400) { + throw Object.assign(new Error("Telegram auth expired"), { statusCode: 401, code: "AUTH_EXPIRED" }); + } + if (!fields.username || String(fields.username).trim().length < 3) { + throw Object.assign(new Error("Telegram username required"), { statusCode: 400, code: "TELEGRAM_USERNAME_REQUIRED" }); + } + const dataCheckString = Object.keys(fields) + .sort() + .filter(k => fields[k] !== undefined && fields[k] !== null) + .map(k => `${k}=${fields[k]}`) + .join("\n"); + const secretKey = crypto.createHash("sha256").update(BOT_TOKEN).digest(); + const hmac = crypto.createHmac("sha256", secretKey).update(dataCheckString).digest("hex"); + if (hmac !== hash) { + throw Object.assign(new Error("Telegram signature invalid"), { statusCode: 401, code: "INVALID_SIGNATURE" }); + } + + const { findTelegramOwner, linkTelegramToUser } = await import("../repositories/user.repository.js"); + const telegramId = Number(fields.id); + const owner = await findTelegramOwner(telegramId); + if (owner && owner.id !== userId) { + throw Object.assign(new Error("Telegram already linked to another account"), { statusCode: 409, code: "TELEGRAM_ALREADY_LINKED" }); + } + await linkTelegramToUser(userId, telegramId); + return { ok: true, telegramId }; +} + +export async function unlinkTelegramAccount(userId) { + const { unlinkTelegramFromUser } = await import("../repositories/user.repository.js"); + await unlinkTelegramFromUser(userId); + return { ok: true }; +} + diff --git a/bff/services/auth.service.js.bak.20260423_124500 b/bff/services/auth.service.js.bak.20260423_124500 new file mode 100644 index 0000000..f58dc57 --- /dev/null +++ b/bff/services/auth.service.js.bak.20260423_124500 @@ -0,0 +1,481 @@ +import { findUserByEmailAndPassword, touchLastLogin, findUserById, createUser, userExistsByEmail } from '../repositories/user.repository.js'; +import { createAuthSession, revokeSession, getAuthSession, rotateSessionTokens } from '../repositories/session.repository.js'; +import { + generateRefreshToken, + generateCsrfToken, + hashToken, + signAccessToken, + verifyRefreshToken, + signRefreshToken, +} from './token.service.js'; + +const REFRESH_TTL_DAYS = Number(process.env.REFRESH_TTL_DAYS || 30); + +function buildSessionExpiresAt() { + const dt = new Date(); + dt.setDate(dt.getDate() + REFRESH_TTL_DAYS); + return dt; +} + +export async function loginUser({ + email, + password, + userAgent, + ipAddress, +}) { + const user = await findUserByEmailAndPassword(email, password); + + if (!user) { + const err = new Error('Invalid email or password'); + err.statusCode = 401; + err.code = 'INVALID_CREDENTIALS'; + throw err; + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + await touchLastLogin(user.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { + id: session.id, + expiresAt: session.expires_at, + }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function logoutUser({ sessionId }) { + if (!sessionId) { + return; + } + + await revokeSession(sessionId); +} + +export async function refreshUserSession({ refreshToken, userAgent, ipAddress }) { + let payload; + try { + payload = verifyRefreshToken(refreshToken); + } catch (err) { + const error = new Error('Invalid or expired refresh token'); + error.code = 'INVALID_REFRESH_TOKEN'; + error.status = 401; + throw error; + } + + const session = await getAuthSession(payload.sid); + if (!session) { + const error = new Error('Session not found or expired'); + error.code = 'SESSION_NOT_FOUND'; + error.status = 401; + throw error; + } + + const user = await findUserById(session.user_id); + if (!user) { + const error = new Error('User not found'); + error.code = 'USER_NOT_FOUND'; + error.status = 401; + throw error; + } + + const newRefreshToken = generateRefreshToken(); + const newCsrfToken = generateCsrfToken(); + const newRefreshTokenHash = hashToken(newRefreshToken); + const newCsrfTokenHash = hashToken(newCsrfToken); + + const updatedSession = await rotateSessionTokens( + session.id, + newRefreshTokenHash, + newCsrfTokenHash + ); + + if (!updatedSession) { + const error = new Error('Failed to rotate session tokens'); + error.code = 'SESSION_ROTATION_FAILED'; + error.status = 500; + throw error; + } + + const accessToken = signAccessToken(user, session.id); + const refreshTokenJwt = signRefreshToken({ + sub: user.id, + sid: session.id, + }); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + accessToken, + refreshToken: refreshTokenJwt, + csrfToken: newCsrfToken, + }; +} +export async function registerUser({ email, password, displayName, userAgent, ipAddress }) { + const { userExistsByEmail, createUser } = await import('../repositories/user.repository.js'); + + if (!email || !password) { + const err = new Error('Email and password are required'); + err.statusCode = 400; + err.code = 'VALIDATION_ERROR'; + throw err; + } + + if (password.length < 6) { + const err = new Error('Password must be at least 6 characters'); + err.statusCode = 400; + err.code = 'PASSWORD_TOO_SHORT'; + throw err; + } + + const exists = await userExistsByEmail(email); + if (exists) { + const err = new Error('User with this email already exists'); + err.statusCode = 409; + err.code = 'EMAIL_ALREADY_EXISTS'; + throw err; + } + + const user = await createUser({ email, password, displayName }); + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function loginWithTelegram({ telegramData, userAgent, ipAddress }) { + const crypto = await import("crypto"); + + const { hash, ...fields } = telegramData; + const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; + + if (!BOT_TOKEN) throw Object.assign(new Error("Telegram not configured"), { statusCode: 500, code: "CONFIG_ERROR" }); + + // Verify auth_date freshness (max 1 day) + const authDate = Number(fields.auth_date); + if (!authDate || Date.now() / 1000 - authDate > 86400) { + throw Object.assign(new Error("Telegram auth expired"), { statusCode: 401, code: "AUTH_EXPIRED" }); + } + + // Antifraud: require Telegram username (filters out throwaway / bot accounts) + if (!fields.username || String(fields.username).trim().length < 3) { + throw Object.assign(new Error("Telegram username required"), { statusCode: 400, code: "TELEGRAM_USERNAME_REQUIRED" }); + } + + // Verify HMAC-SHA256 signature + const dataCheckString = Object.keys(fields) + .sort() + .filter(k => fields[k] !== undefined && fields[k] !== null) + .map(k => `${k}=${fields[k]}`) + .join("\n"); + + const secretKey = crypto.createHash("sha256").update(BOT_TOKEN).digest(); + const hmac = crypto.createHmac("sha256", secretKey).update(dataCheckString).digest("hex"); + + if (hmac !== hash) { + throw Object.assign(new Error("Telegram signature invalid"), { statusCode: 401, code: "INVALID_SIGNATURE" }); + } + + const { findUserByTelegramId, createUserFromTelegram, countTelegramSignupsByIpLast24h, recordSignupAttempt } = await import("../repositories/user.repository.js"); + + const telegramId = Number(fields.id); + let user = await findUserByTelegramId(telegramId); + + if (!user) { + // Antifraud: limit 3 new Telegram signups per IP per 24h + const recentCount = await countTelegramSignupsByIpLast24h(ipAddress); + if (recentCount >= 3) { + throw Object.assign(new Error("Too many signups from this IP"), { statusCode: 429, code: "SIGNUP_RATE_LIMIT" }); + } + const displayName = [fields.first_name, fields.last_name].filter(Boolean).join(" ") || fields.username || null; + const email = `tg_${telegramId}@telegram.local`; + user = await createUserFromTelegram({ telegramId, displayName, email }); + await recordSignupAttempt({ ipAddress, provider: 'telegram', telegramId, userAgent }); + } + + if (user.status !== "active") { + throw Object.assign(new Error("Account is blocked"), { statusCode: 403, code: "ACCOUNT_BLOCKED" }); + } + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const refreshTokenHash = hashToken(refreshToken); + const csrfTokenHash = hashToken(csrfToken); + + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash, + csrfTokenHash, + userAgent, + ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + + const accessToken = signAccessToken(user, session.id); + + return { + user: { + id: user.id, + email: user.email, + displayName: user.display_name, + role: user.role, + status: user.status, + }, + session: { id: session.id, expiresAt: session.expires_at }, + accessToken, + refreshToken, + csrfToken, + }; +} + +export async function linkTelegramAccount({ userId, telegramData }) { + const crypto = await import("crypto"); + const { hash, ...fields } = telegramData || {}; + const BOT_TOKEN = process.env.TELEGRAM_BOT_TOKEN; + if (!BOT_TOKEN) throw Object.assign(new Error("Telegram not configured"), { statusCode: 500, code: "CONFIG_ERROR" }); + + const authDate = Number(fields.auth_date); + if (!authDate || Date.now() / 1000 - authDate > 86400) { + throw Object.assign(new Error("Telegram auth expired"), { statusCode: 401, code: "AUTH_EXPIRED" }); + } + if (!fields.username || String(fields.username).trim().length < 3) { + throw Object.assign(new Error("Telegram username required"), { statusCode: 400, code: "TELEGRAM_USERNAME_REQUIRED" }); + } + const dataCheckString = Object.keys(fields) + .sort() + .filter(k => fields[k] !== undefined && fields[k] !== null) + .map(k => `${k}=${fields[k]}`) + .join("\n"); + const secretKey = crypto.createHash("sha256").update(BOT_TOKEN).digest(); + const hmac = crypto.createHmac("sha256", secretKey).update(dataCheckString).digest("hex"); + if (hmac !== hash) { + throw Object.assign(new Error("Telegram signature invalid"), { statusCode: 401, code: "INVALID_SIGNATURE" }); + } + + const { findTelegramOwner, linkTelegramToUser } = await import("../repositories/user.repository.js"); + const telegramId = Number(fields.id); + const owner = await findTelegramOwner(telegramId); + if (owner && owner.id !== userId) { + throw Object.assign(new Error("Telegram already linked to another account"), { statusCode: 409, code: "TELEGRAM_ALREADY_LINKED" }); + } + await linkTelegramToUser(userId, telegramId); + return { ok: true, telegramId }; +} + +export async function unlinkTelegramAccount(userId) { + const { unlinkTelegramFromUser } = await import("../repositories/user.repository.js"); + await unlinkTelegramFromUser(userId); + return { ok: true }; +} + + +// ─── Bot deeplink login flow ───────────────────────────────────────────────── + +export async function startTelegramLoginFlow({ intent, userId, ipAddress, userAgent }) { + const crypto = await import("crypto"); + const { createTgLoginToken, countTgStartsByIpLastMinutes } = await import("../repositories/tg-login.repository.js"); + + // Антифрод: 10 стартов с одного IP за 10 минут + const recent = await countTgStartsByIpLastMinutes(ipAddress, 10); + if (recent >= 10) { + throw Object.assign(new Error("Too many login attempts. Try again later."), + { statusCode: 429, code: "TG_START_RATE_LIMIT" }); + } + + // Telegram /start payload: до 64 base64url-символов + const token = crypto.randomBytes(24).toString("base64url"); + const created = await createTgLoginToken({ token, intent, userId, ipAddress, userAgent }); + + const botUsername = process.env.TELEGRAM_BOT_USERNAME || "One_Click_Auth_bot"; + const url = `https://t.me/${botUsername}?start=${token}`; + + return { token, url, expiresAt: created.expiresAt, ttlSec: created.ttlSec }; +} + +export async function confirmTelegramFromBot({ token, telegramUser }) { + const { findTgLoginToken, markTgTokenConfirmed, markTgTokenError } = await import("../repositories/tg-login.repository.js"); + const { + findUserByTelegramId, createUserFromTelegram, + countTelegramSignupsByIpLast24h, recordSignupAttempt, + findUserById, findTelegramOwner, linkTelegramToUser, + } = await import("../repositories/user.repository.js"); + + const row = await findTgLoginToken(token); + if (!row) return { ok: false, code: "TOKEN_NOT_FOUND", message: "Ссылка не найдена или устарела." }; + if (row.status !== "pending") return { ok: false, code: "TOKEN_NOT_PENDING", message: "Эта ссылка уже использована. Запросите новую на сайте." }; + if (new Date(row.expires_at) < new Date()) { + await markTgTokenError(token, "EXPIRED"); + return { ok: false, code: "EXPIRED", message: "Ссылка истекла. Запросите новую на сайте." }; + } + + // Антифрод: требуем username + if (!telegramUser.username || String(telegramUser.username).trim().length < 3) { + await markTgTokenError(token, "USERNAME_REQUIRED"); + return { ok: false, code: "USERNAME_REQUIRED", message: "У вашего Telegram-аккаунта должно быть @username." }; + } + + const telegramId = Number(telegramUser.id); + + if (row.intent === "link") { + if (!row.user_id) { + await markTgTokenError(token, "NO_USER"); + return { ok: false, code: "NO_USER", message: "Авторизация не найдена. Войдите на сайт и попробуйте снова." }; + } + const owner = await findTelegramOwner(telegramId); + if (owner && owner.id !== row.user_id) { + await markTgTokenError(token, "TELEGRAM_ALREADY_LINKED"); + return { ok: false, code: "TELEGRAM_ALREADY_LINKED", message: "Этот Telegram уже привязан к другому аккаунту." }; + } + await linkTelegramToUser(row.user_id, telegramId); + await markTgTokenConfirmed(token, { + telegramId, + telegramUsername: telegramUser.username, + telegramFirstName: telegramUser.first_name || null, + telegramLastName: telegramUser.last_name || null, + userId: row.user_id, + }); + return { ok: true, message: "Готово! Telegram привязан. Возвращайтесь на сайт." }; + } + + // intent === "login" + let user = await findUserByTelegramId(telegramId); + if (!user) { + const recent = await countTelegramSignupsByIpLast24h(row.ip_address); + if (recent >= 3) { + await markTgTokenError(token, "SIGNUP_RATE_LIMIT"); + return { ok: false, code: "SIGNUP_RATE_LIMIT", message: "Слишком много регистраций с этого IP. Попробуйте позже." }; + } + const displayName = [telegramUser.first_name, telegramUser.last_name].filter(Boolean).join(" ") || telegramUser.username || null; + const email = `tg_${telegramId}@telegram.local`; + user = await createUserFromTelegram({ telegramId, displayName, email }); + await recordSignupAttempt({ ipAddress: row.ip_address, provider: "telegram", telegramId, userAgent: row.user_agent }); + } + + if (user.status !== "active") { + await markTgTokenError(token, "ACCOUNT_BLOCKED"); + return { ok: false, code: "ACCOUNT_BLOCKED", message: "Аккаунт заблокирован." }; + } + + await markTgTokenConfirmed(token, { + telegramId, + telegramUsername: telegramUser.username, + telegramFirstName: telegramUser.first_name || null, + telegramLastName: telegramUser.last_name || null, + userId: user.id, + }); + return { ok: true, message: "Готово! Можете возвращаться на сайт — вы уже вошли." }; +} + +export async function pollTelegramLoginFlow({ token, userAgent, ipAddress }) { + const { findTgLoginToken, consumeTgToken } = await import("../repositories/tg-login.repository.js"); + const { findUserById } = await import("../repositories/user.repository.js"); + + const row = await findTgLoginToken(token); + if (!row) return { status: "not_found" }; + + if (row.status === "pending") { + if (new Date(row.expires_at) < new Date()) return { status: "expired" }; + return { status: "pending" }; + } + + if (row.status === "error") { + return { status: "error", code: row.error_code }; + } + + if (row.status === "consumed") { + return { status: "consumed" }; + } + + if (row.status !== "confirmed") { + return { status: row.status }; + } + + // confirmed → consume + maybe issue session + const consumed = await consumeTgToken(token); + if (!consumed) return { status: "consumed" }; + + if (row.intent === "link") { + return { status: "linked" }; + } + + // login: создаём сессию + const user = await findUserById(row.user_id); + if (!user) return { status: "error", code: "USER_NOT_FOUND" }; + + const refreshToken = generateRefreshToken(); + const csrfToken = generateCsrfToken(); + const session = await createAuthSession({ + userId: user.id, + refreshTokenHash: hashToken(refreshToken), + csrfTokenHash: hashToken(csrfToken), + userAgent, ipAddress, + expiresAt: buildSessionExpiresAt(), + }); + const accessToken = signAccessToken(user, session.id); + + return { + status: "authenticated", + user: { + id: user.id, email: user.email, displayName: user.display_name, + role: user.role, status: user.status, + }, + accessToken, refreshToken, csrfToken, + sessionExpiresAt: session.expires_at, + }; +} diff --git a/bff/services/file.service.js b/bff/services/file.service.js new file mode 100644 index 0000000..4ec5ba8 --- /dev/null +++ b/bff/services/file.service.js @@ -0,0 +1,352 @@ +import { userFileRepository } from '../repositories/user-file.repository.js'; +import { + uploadFile as s3UploadFile, + getPresignedUrl as s3GetPresignedUrl, + deleteFile as s3DeleteFile, + getImageInputKey, + getVideoInputKey, + createMultipartUpload as s3CreateMultipartUpload, + getPresignedPartUrl as s3GetPresignedPartUrl, + completeMultipartUpload as s3CompleteMultipartUpload, + abortMultipartUpload as s3AbortMultipartUpload, +} from './s3.service.js'; + +/** + * Сервис для управления файлами пользователей + */ +export const fileService = { + /** + * Загрузить изображение в S3 + */ + async uploadImage({ userId, file, folder = 'images_input', generationUuid = null, generationStepId = null }) { + console.log('[fileService.uploadImage] userId:', userId, 'file:', file?.originalname, 'folder:', folder); + + const s3Key = getImageInputKey(file.originalname, userId, folder); + await s3UploadFile(s3Key, file.buffer, file.mimetype); + + const fileRecord = await userFileRepository.create({ + userId, + s3Key, + originalFilename: file.originalname, + fileSize: file.size, + contentType: file.mimetype, + fileType: 'image', + folder, + generationUuid, + generationStepId, + }); + + return fileRecord; + }, + + /** + * Загрузить видео в S3 + */ + async uploadVideo({ userId, file, folder = 'videos_input', generationUuid = null, generationStepId = null }) { + console.log('[fileService.uploadVideo] userId:', userId, 'file:', file?.originalname, 'folder:', folder); + + const s3Key = getVideoInputKey(file.originalname, userId, folder); + await s3UploadFile(s3Key, file.buffer, file.mimetype); + + const fileRecord = await userFileRepository.create({ + userId, + s3Key, + originalFilename: file.originalname, + fileSize: file.size, + contentType: file.mimetype, + fileType: 'video', + folder, + generationUuid, + generationStepId, + }); + + return fileRecord; + }, + + /** + * Инициировать multipart upload для прямой загрузки в S3 + */ + async initMultipartUpload({ userId, filename, contentType, fileSize, folder = 'videos_input', generationUuid = null, generationStepId = null }) { + console.log('[fileService.initMultipartUpload] userId:', userId, 'filename:', filename, 'size:', fileSize); + + const s3Key = getVideoInputKey(filename, userId, folder); + + // Инициируем multipart upload в S3 + const { uploadId } = await s3CreateMultipartUpload(s3Key, contentType); + + // Создаём запись в БД со статусом "uploading" и uploadId + const fileRecord = await userFileRepository.create({ + userId, + s3Key, + originalFilename: filename, + fileSize, + contentType, + fileType: 'video', + folder, + generationUuid, + generationStepId, + status: 'uploading', + uploadId, // Сохраняем uploadId в БД + }); + + // Вычисляем количество частей (10MB на часть - оптимизировано для скорости) + const PART_SIZE = 10 * 1024 * 1024; // 10MB + const partCount = Math.ceil(fileSize / PART_SIZE); + + // Создаём presigned URLs для всех частей + const parts = []; + for (let i = 1; i <= partCount; i++) { + const presignedUrl = await s3GetPresignedPartUrl(s3Key, uploadId, i, 3600); // 1 час на загрузку части + parts.push({ + partNumber: i, + presignedUrl, + }); + } + + return { + fileId: fileRecord.id, + s3Key, + uploadId, + parts, + partCount, + }; + }, + + /** + * Завершить multipart upload + */ + async completeMultipartUpload({ fileId, userId, uploadId, parts }) { + console.log('[fileService.completeMultipartUpload] fileId:', fileId, 'uploadId:', uploadId); + + // Проверяем владение файлом + const fileRecord = await userFileRepository.findByIdAndOwner(fileId, userId); + if (!fileRecord) { + const error = new Error('Файл не найден'); + error.code = 'FILE_NOT_FOUND'; + throw error; + } + + // Завершаем multipart upload в S3 + const result = await s3CompleteMultipartUpload(fileRecord.s3_key, uploadId, parts); + + // Обновляем статус файла в БД + await userFileRepository.update(fileId, { + status: 'uploaded', + updated_at: new Date(), + }); + + return { + fileId: fileRecord.id, + s3Key: fileRecord.s3_key, + location: result.location, + etag: result.etag, + }; + }, + + /** + * Отменить multipart upload + */ + async abortMultipartUpload({ fileId, userId, uploadId }) { + console.log('[fileService.abortMultipartUpload] fileId:', fileId); + + const fileRecord = await userFileRepository.findByIdAndOwner(fileId, userId); + if (!fileRecord) { + const error = new Error('Файл не найден'); + error.code = 'FILE_NOT_FOUND'; + throw error; + } + + // Отменяем multipart upload в S3 + await s3AbortMultipartUpload(fileRecord.s3_key, uploadId); + + // Удаляем запись из БД + await userFileRepository.delete(fileId); + + return { fileId, aborted: true }; + }, + + /** + * Получить URL для файла с проверкой владения + * Если файл в публичной папке — возвращается прямой URL, иначе presigned + */ + async getPresignedUrl({ userId, fileId, s3Key, expiresIn }) { + let fileRecord; + + // Поиск файла по ID или по ключу + if (fileId) { + fileRecord = await userFileRepository.findByIdAndOwner(fileId, userId); + } else if (s3Key) { + fileRecord = await userFileRepository.findByKeyAndOwner(s3Key, userId); + } + + if (!fileRecord) { + const error = new Error('Файл не найден или у вас нет доступа к нему'); + error.code = 'FILE_NOT_FOUND'; + error.statusCode = 404; + throw error; + } + + // Для публичных папок возвращаем прямой URL через nginx + const publicFolders = ['images_input', 'videos_input', 'videos_output']; + const isPublic = publicFolders.includes(fileRecord.folder); + + let url; + if (isPublic) { + // Прямой URL через nginx прокси + url = `/files/${fileRecord.s3_key}`; + } else { + // Presigned URL для приватных файлов + url = await s3GetPresignedUrl(fileRecord.s3_key, expiresIn); + } + + return { + id: fileRecord.id, + s3Key: fileRecord.s3_key, + originalFilename: fileRecord.original_filename, + contentType: fileRecord.content_type, + fileSize: fileRecord.file_size, + url, + isPublic, + expiresIn: isPublic ? null : (expiresIn || 3600), + }; + }, + + /** + * Получить список файлов пользователя + */ + async listUserFiles(userId, options = {}) { + const defaultOptions = { + fileType: 'image', + folder: 'images_input', + limit: 50, + offset: 0, + }; + + const mergedOptions = { ...defaultOptions, ...options }; + const [files, total] = await Promise.all([ + userFileRepository.findByUser(userId, mergedOptions), + userFileRepository.countByUser(userId, mergedOptions), + ]); + + return { + files: files.map((f) => ({ + id: f.id, + s3Key: f.s3_key, + originalFilename: f.original_filename, + contentType: f.content_type, + fileSize: f.file_size, + fileType: f.file_type, + folder: f.folder, + createdAt: f.created_at, + })), + total, + limit: mergedOptions.limit, + offset: mergedOptions.offset, + }; + }, + + /** + * Удалить файл пользователя (из S3 и БД) + */ + async deleteFile({ userId, fileId, s3Key }) { + let fileRecord; + + // Поиск файла с проверкой владения + if (fileId) { + fileRecord = await userFileRepository.deleteByIdAndOwner(fileId, userId); + } else if (s3Key) { + fileRecord = await userFileRepository.deleteByKeyAndOwner(s3Key, userId); + } + + if (!fileRecord) { + const error = new Error('Файл не найден или у вас нет доступа к нему'); + error.code = 'FILE_NOT_FOUND'; + error.statusCode = 404; + throw error; + } + + // Удаление из S3 + try { + await s3DeleteFile(fileRecord.s3_key); + } catch (err) { + // Логируем ошибку, но не прерываем процесс + // Файл уже удалён из БД + console.error(`Ошибка удаления файла из S3: ${fileRecord.s3_key}`, err); + } + + return { + id: fileRecord.id, + s3Key: fileRecord.s3_key, + deleted: true, + }; + }, + + /** + * Получить статистику по файлам пользователя + */ + async getFileStats(userId) { + const { pool } = await import('../db.js'); + + const [imageCount, videoCount, totalSize] = await Promise.all([ + userFileRepository.countByUser(userId, { fileType: 'image' }), + userFileRepository.countByUser(userId, { fileType: 'video' }), + (async () => { + const query = ` + SELECT COALESCE(SUM(file_size), 0) as total + FROM uno_bff.user_files + WHERE user_id = $1 + `; + const result = await pool.query(query, [userId]); + return parseInt(result.rows[0].total, 10); + })(), + ]); + + return { + imageCount, + videoCount, + totalCount: imageCount + videoCount, + totalSizeBytes: totalSize, + totalSizeMB: Math.round((totalSize / (1024 * 1024)) * 100) / 100, + }; + }, + + /** + * Получить файлы генерации + */ + async getGenerationFiles(generationUuid, userId) { + const files = await userFileRepository.findByGeneration(generationUuid, userId); + + return files.map((f) => ({ + id: f.id, + s3Key: f.s3_key, + originalFilename: f.original_filename, + contentType: f.content_type, + fileSize: f.file_size, + fileType: f.file_type, + folder: f.folder, + generationUuid: f.generation_uuid, + generationStepId: f.generation_step_id, + createdAt: f.created_at, + })); + }, + + /** + * Получить файлы шага генерации + */ + async getGenerationStepFiles(generationUuid, stepId, userId) { + const files = await userFileRepository.findByGenerationStep(generationUuid, stepId, userId); + + return files.map((f) => ({ + id: f.id, + s3Key: f.s3_key, + originalFilename: f.original_filename, + contentType: f.content_type, + fileSize: f.file_size, + fileType: f.file_type, + folder: f.folder, + generationUuid: f.generation_uuid, + generationStepId: f.generation_step_id, + createdAt: f.created_at, + })); + }, +}; diff --git a/bff/services/result.service.js b/bff/services/result.service.js new file mode 100644 index 0000000..e83a321 --- /dev/null +++ b/bff/services/result.service.js @@ -0,0 +1,309 @@ +import { env } from '../config/env.js'; +import { + getGenerationByUuidForUser, + getGenerationSteps, + updateGenerationResult, + getGenerationMetaByUuid, +} from '../repositories/scenario.repository.js'; + +/** + * Валидация формата результата от n8n + * + * Ожидаемый формат body (массив файлов): + * { + * files: [ + * { + * contentType: 'image' | 'video', + * url: string, // ссылка на файл (GET запрос) + * thumbnailUrl?: string, + * duration?: number, + * width?: number, + * height?: number, + * size?: number, + * format?: string + * } + * ] + * } + */ +function validateResultBody(body) { + const errors = []; + + if (!body || typeof body !== 'object') { + errors.push('Body must be an object'); + return { valid: false, errors }; + } + + // files: обязательный массив + if (!body.files) { + errors.push('files is required'); + } else if (!Array.isArray(body.files)) { + errors.push('files must be an array'); + } else if (body.files.length === 0) { + errors.push('files array cannot be empty'); + } else { + // Валидация каждого файла + body.files.forEach((file, index) => { + const prefix = `files[${index}]`; + + // contentType + if (!file.contentType) { + errors.push(`${prefix}.contentType is required`); + } else if (!['image', 'video'].includes(file.contentType)) { + errors.push(`${prefix}.contentType must be 'image' or 'video'`); + } + + // url: обязателен + if (!file.url) { + errors.push(`${prefix}.url is required`); + } else if (typeof file.url !== 'string' || file.url.trim() === '') { + errors.push(`${prefix}.url must be a non-empty string`); + } else { + try { + new URL(file.url); + } catch { + errors.push(`${prefix}.url must be a valid URL`); + } + } + + // thumbnailUrl: опционален + if (file.thumbnailUrl !== undefined && file.thumbnailUrl !== null) { + if (typeof file.thumbnailUrl !== 'string') { + errors.push(`${prefix}.thumbnailUrl must be a string`); + } else { + try { + new URL(file.thumbnailUrl); + } catch { + errors.push(`${prefix}.thumbnailUrl must be a valid URL`); + } + } + } + + // duration: опционален, только для видео + if (file.duration !== undefined && file.duration !== null) { + if (typeof file.duration !== 'number') { + errors.push(`${prefix}.duration must be a number`); + } else if (file.duration < 0) { + errors.push(`${prefix}.duration must be >= 0`); + } + } + + // width/height: опциональны + if (file.width !== undefined && file.width !== null) { + if (!Number.isInteger(file.width) || file.width <= 0) { + errors.push(`${prefix}.width must be a positive integer`); + } + } + + if (file.height !== undefined && file.height !== null) { + if (!Number.isInteger(file.height) || file.height <= 0) { + errors.push(`${prefix}.height must be a positive integer`); + } + } + + // size: опционален + if (file.size !== undefined && file.size !== null) { + if (typeof file.size !== 'number' || file.size < 0) { + errors.push(`${prefix}.size must be a non-negative number`); + } + } + + // format: опционален + if (file.format !== undefined && file.format !== null) { + if (typeof file.format !== 'string' || file.format.trim() === '') { + errors.push(`${prefix}.format must be a non-empty string`); + } + } + }); + } + + return { + valid: errors.length === 0, + errors, + }; +} + +/** + * Получить результат генерации для пользователя + * Формат ответа для фронта: + * { + * generationUuid: string, + * scenarioId: string, + * scenarioName: string, + * status: 'running' | 'completed' | 'failed' | 'waiting_for_input', + * files: Array<{ + * id: string, + * contentType: 'image' | 'video', + * url: string, + * thumbnailUrl?: string, + * duration?: number, + * width?: number, + * height?: number, + * size?: number, + * format?: string + * }>, + * steps: [...], + * startedAt: date, + * finishedAt: date + * } + */ +export async function getResultForUser({ userId, generationUuid }) { + const generation = await getGenerationByUuidForUser(generationUuid, userId); + + if (!generation) { + return null; + } + + const steps = await getGenerationSteps(generationUuid); + + // Преобразуем result_payload в формат для фронта + const files = parseResultPayload(generation.result_payload); + + return { + generationUuid: generation.generation_uuid, + scenarioId: generation.scenario_id, + scenarioName: generation.scenario_name, + status: generation.status, + files, + steps, + startedAt: generation.started_at, + finishedAt: generation.finished_at, + requestPayload: generation.request_payload, + }; +} + +/** + * Сохранить результат в БД + */ +export async function saveResultToDB(generationUuid, files) { + const resultPayload = { files }; + return updateGenerationResult(generationUuid, resultPayload, 'completed'); +} + +/** + * Получить метаданные генерации (только scenarioId и scenarioName) + */ +export async function getGenerationMeta({ userId, generationUuid }) { + const generation = await getGenerationMetaByUuid(generationUuid, userId); + + if (!generation) { + return null; + } + + return { + scenarioId: generation.scenario_id, + scenarioName: generation.scenario_name, + }; +} + +/** + * Парсит result_payload в массив файлов + */ +function parseResultPayload(resultPayload) { + if (!resultPayload || !resultPayload.files) { + return []; + } + + return resultPayload.files.map((file, index) => ({ + id: `file-${index}`, + contentType: file.contentType, + url: file.url, + thumbnailUrl: file.thumbnailUrl, + duration: file.duration, + width: file.width, + height: file.height, + size: file.size, + format: file.format, + })); +} + +/** + * Обработать результат от n8n + */ +export async function processResultFromN8n({ generationUuid, userId, scenarioId, resultBody }) { + // Проверяем, что generation существует и принадлежит пользователю + const generation = await getGenerationByUuidForUser(generationUuid, userId); + + if (!generation) { + const error = new Error(`Generation '${generationUuid}' not found or does not belong to user '${userId}'`); + error.code = 'GENERATION_NOT_FOUND'; + error.status = 404; + throw error; + } + + // Валидация результата + const validation = validateResultBody(resultBody); + if (!validation.valid) { + const error = new Error(`Invalid result format: ${validation.errors.join(', ')}`); + error.code = 'INVALID_RESULT_FORMAT'; + error.status = 400; + error.details = validation.errors; + throw error; + } + + // Сохраняем результат в БД + const updatedGeneration = await updateGenerationResult(generationUuid, resultBody, 'completed'); + + return { + generationUuid: updatedGeneration.generation_uuid, + status: updatedGeneration.status, + files: parseResultPayload(updatedGeneration.result_payload), + }; +} + +/** + * Вызов n8n webhook для получения результата + * stepData - данные из response_payload шага (taskId, recordId и т.д.) + */ +export async function fetchResultFromN8n({ generationUuid, userId, scenarioId, stepData = {} }) { + // Вызываем webhook без generationUuid в пути (передаём в meta/body) + const n8nUrl = `${env.N8N_BASE_URL}/webhook/result`; + + const payload = { + meta: { + generationUuid, + userId, + scenarioId, + stepData, + }, + body: stepData, + }; + + console.log('[fetchResultFromN8n] Calling:', n8nUrl); + console.log('[fetchResultFromN8n] Payload:', JSON.stringify(payload, null, 2)); + + try { + const response = await fetch(n8nUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); + + console.log('[fetchResultFromN8n] Response status:', response.status, response.statusText); + + const responseText = await response.text(); + console.log('[fetchResultFromN8n] Response body:', responseText); + + if (!response.ok) { + const error = new Error(`n8n webhook failed: ${response.status} ${response.statusText}`); + error.code = 'N8N_WEBHOOK_ERROR'; + error.status = response.status; + error.n8nResponse = responseText; + throw error; + } + + const data = JSON.parse(responseText); + console.log('[fetchResultFromN8n] Parsed data:', data); + return data; + } catch (err) { + console.error('[fetchResultFromN8n] Error:', err.message); + if (err.code === 'N8N_WEBHOOK_ERROR') { + throw err; + } + const error = new Error(`Failed to call n8n webhook: ${err.message}`); + error.code = 'N8N_CONNECTION_ERROR'; + error.status = 503; + throw error; + } +} diff --git a/bff/services/s3.service.js b/bff/services/s3.service.js new file mode 100644 index 0000000..a44e33f --- /dev/null +++ b/bff/services/s3.service.js @@ -0,0 +1,172 @@ +import { + S3Client, + PutObjectCommand, + GetObjectCommand, + DeleteObjectCommand, + CreateMultipartUploadCommand, + UploadPartCommand, + CompleteMultipartUploadCommand, + AbortMultipartUploadCommand, +} from '@aws-sdk/client-s3'; +import { getSignedUrl } from '@aws-sdk/s3-request-presigner'; +import { env } from '../config/env.js'; + +// S3 client for internal server-to-server communication +const s3Client = new S3Client({ + endpoint: env.S3_ENDPOINT, + credentials: { + accessKeyId: env.S3_ACCESS_KEY, + secretAccessKey: env.S3_SECRET_KEY, + }, + region: 'us-east-1', + forcePathStyle: true, + // Оптимизация для больших файлов + requestHandler: { + connectionTimeout: 300000, // 5 минут + socketTimeout: 600000, // 10 минут + }, +}); + +// S3 client for generating presigned URLs for browser access +// Uses the same credentials but will generate URLs with public endpoint +const s3ClientForPresigned = new S3Client({ + endpoint: env.S3_ENDPOINT, + credentials: { + accessKeyId: env.S3_ACCESS_KEY, + secretAccessKey: env.S3_SECRET_KEY, + }, + region: 'us-east-1', + forcePathStyle: true, +}); + +export async function uploadFile(key, body, contentType) { + const command = new PutObjectCommand({ + Bucket: env.S3_BUCKET, + Key: key, + Body: body, + ContentType: contentType, + }); + + await s3Client.send(command); + return key; +} + +export async function getPresignedUrl(key, expiresIn = env.S3_PRESIGNED_URL_EXPIRES_IN) { + const command = new GetObjectCommand({ + Bucket: env.S3_BUCKET, + Key: key, + }); + + const signedUrl = await getSignedUrl(s3Client, command, { expiresIn }); + return signedUrl; +} + +export async function deleteFile(key) { + const command = new DeleteObjectCommand({ + Bucket: env.S3_BUCKET, + Key: key, + }); + + await s3Client.send(command); + return true; +} + +export function getImageInputKey(filename, userId, folder = env.S3_IMAGES_INPUT_FOLDER) { + const timestamp = Date.now(); + const ext = filename.split('.').pop() || 'jpg'; + return `${folder}/${userId}/${timestamp}-${filename}`; +} + +export function getVideoInputKey(filename, userId, folder = 'videos_input') { + const timestamp = Date.now(); + const ext = filename.split('.').pop() || 'mp4'; + return `${folder}/${userId}/${timestamp}-${filename}`; +} + +// ────────────────────────────── +// Multipart Upload для прямой загрузки в S3 +// ────────────────────────────── + +/** + * Инициировать multipart upload + */ +export async function createMultipartUpload(key, contentType) { + const command = new CreateMultipartUploadCommand({ + Bucket: env.S3_BUCKET, + Key: key, + ContentType: contentType, + }); + + const result = await s3Client.send(command); + return { + uploadId: result.UploadId, + key, + }; +} + +/** + * Создать presigned URL для загрузки части файла + * Возвращает URL для прямой загрузки из браузера через nginx proxy + */ +export async function getPresignedPartUrl(key, uploadId, partNumber, expiresIn = 3600) { + const command = new UploadPartCommand({ + Bucket: env.S3_BUCKET, + Key: key, + UploadId: uploadId, + PartNumber: partNumber, + }); + + // Для presigned URL используем endpoint который совпадает с public endpoint + // Браузер будет отправлять запрос на https://uno-click.pip-test.ru/s3-upload/uno-click/ + // Нginx будет проксировать на minio:9000/uno-click/ + // MinIO проверяет подпись используя только путь и query параметры, не host + const signedUrl = await getSignedUrl(s3ClientForPresigned, command, { expiresIn }); + + // Заменяем внутренний endpoint на публичный для доступа из браузера + // Превращаем http://minio:9000/uno-click/... в https://uno-click.pip-test.ru/s3-upload/uno-click/... + const publicUrl = signedUrl.replace( + `${env.S3_ENDPOINT}/${env.S3_BUCKET}/`, + env.S3_PUBLIC_ENDPOINT + ); + + return publicUrl; +} + +/** + * Завершить multipart upload + */ +export async function completeMultipartUpload(key, uploadId, parts) { + const command = new CompleteMultipartUploadCommand({ + Bucket: env.S3_BUCKET, + Key: key, + UploadId: uploadId, + MultipartUpload: { + Parts: parts.map((p, index) => ({ + PartNumber: index + 1, + ETag: p.ETag, + })), + }, + }); + + const result = await s3Client.send(command); + return { + key, + location: result.Location, + bucket: result.Bucket, + etag: result.ETag, + }; +} + +/** + * Отменить multipart upload + */ +export async function abortMultipartUpload(key, uploadId) { + const command = new AbortMultipartUploadCommand({ + Bucket: env.S3_BUCKET, + Key: key, + UploadId: uploadId, + }); + + await s3Client.send(command); + return true; +} diff --git a/bff/services/scenario.service.js b/bff/services/scenario.service.js new file mode 100644 index 0000000..b5ec593 --- /dev/null +++ b/bff/services/scenario.service.js @@ -0,0 +1,322 @@ +import { env } from '../config/env.js'; +import { + getUserScenarioPermission, + getScenarioById, + getScenarioStep, + getFirstScenarioStep, + createGeneration, + updateGeneration, + getGenerationByUuid, +} from '../repositories/scenario.repository.js'; +import { pool } from '../db.js'; + +// Экспорт для использования в routes +export { getScenarioStep }; + +/** + * Валидация данных по JSON Schema (строгая - все required поля) + */ +function validateInputSchema(inputSchema, data) { + const errors = []; + + if (!inputSchema || inputSchema === '{}') { + return { valid: true, errors: [] }; + } + + const schema = typeof inputSchema === 'string' ? JSON.parse(inputSchema) : inputSchema; + + // Проверка required полей + if (schema.required && Array.isArray(schema.required)) { + for (const field of schema.required) { + if (data[field] === undefined || data[field] === null) { + errors.push(`Missing required field: ${field}`); + } + } + } + + // Проверка типов полей + if (schema.properties) { + for (const [field, fieldSchema] of Object.entries(schema.properties)) { + const value = data[field]; + if (value === undefined || value === null) { + continue; // already checked in required + } + + if (fieldSchema.type === 'string' && typeof value !== 'string') { + errors.push(`Field '${field}' must be a string`); + } else if (fieldSchema.type === 'boolean' && typeof value !== 'boolean') { + errors.push(`Field '${field}' must be a boolean`); + } else if (fieldSchema.type === 'number' && typeof value !== 'number') { + errors.push(`Field '${field}' must be a number`); + } else if (fieldSchema.type === 'integer' && (!Number.isInteger(value))) { + errors.push(`Field '${field}' must be an integer`); + } else if (fieldSchema.type === 'array' && !Array.isArray(value)) { + errors.push(`Field '${field}' must be an array`); + } else if (fieldSchema.type === 'object' && (typeof value !== 'object' || Array.isArray(value))) { + errors.push(`Field '${field}' must be an object`); + } + + // Проверка minLength для string + if (fieldSchema.type === 'string' && typeof value === 'string' && fieldSchema.minLength !== undefined) { + if (value.length < fieldSchema.minLength) { + errors.push(`Field '${field}' must have at least ${fieldSchema.minLength} characters`); + } + } + } + } + + return { + valid: errors.length === 0, + errors, + }; +} + +/** + * Проверка прав доступа на запуск сценария + */ +export async function assertUserCanStartScenario({ userId, scenarioId }) { + const scenario = await getScenarioById(scenarioId); + if (!scenario) { + const error = new Error(`Scenario '${scenarioId}' not found`); + error.code = 'SCENARIO_NOT_FOUND'; + error.status = 404; + throw error; + } + + if (scenario.status !== 'active') { + const error = new Error(`Scenario '${scenarioId}' is not active (status: ${scenario.status})`); + error.code = 'SCENARIO_NOT_ACTIVE'; + error.status = 403; + throw error; + } + + // Публичные сценарии доступны всем авторизованным пользователям + if (!scenario.is_public) { + const permission = await getUserScenarioPermission(userId, scenarioId); + if (!permission || !permission.can_start) { + const error = new Error(`User '${userId}' does not have permission to start scenario '${scenarioId}'`); + error.code = 'SCENARIO_ACCESS_DENIED'; + error.status = 403; + throw error; + } + } + + return true; +} + +/** + * Проверка прав доступа на выполнение шага + */ +export async function assertUserCanExecuteStep({ userId, scenarioId, stepId }) { + const scenario = await getScenarioById(scenarioId); + if (!scenario) { + const error = new Error(`Scenario '${scenarioId}' not found`); + error.code = 'SCENARIO_NOT_FOUND'; + error.status = 404; + throw error; + } + + const step = await getScenarioStep(scenarioId, stepId); + if (!step) { + const error = new Error(`Step '${stepId}' not found in scenario '${scenarioId}'`); + error.code = 'STEP_NOT_FOUND'; + error.status = 404; + throw error; + } + + if (step.status !== 'active') { + const error = new Error(`Step '${stepId}' is not active (status: ${step.status})`); + error.code = 'STEP_NOT_ACTIVE'; + error.status = 403; + throw error; + } + + // Публичные сценарии доступны всем авторизованным пользователям + if (!scenario.is_public) { + const permission = await getUserScenarioPermission(userId, scenarioId); + if (!permission || !permission.can_execute) { + const error = new Error(`User '${userId}' does not have permission to execute steps in scenario '${scenarioId}'`); + error.code = 'SCENARIO_ACCESS_DENIED'; + error.status = 403; + throw error; + } + } + + return true; +} + +/** + * Запуск сценария + */ +export async function startScenario({ userId, scenarioId, input, user }) { + // Валидация input для start - body должен быть пустым или минимальным + // Для start сценария проверяем, что нет лишних данных (body должен быть пустым {}) + if (input && Object.keys(input).length > 0) { + const error = new Error('Start scenario body must be empty'); + error.code = 'INVALID_START_BODY'; + error.status = 400; + throw error; + } + + const firstStep = await getFirstScenarioStep(scenarioId); + if (!firstStep) { + const error = new Error(`No active steps found in scenario '${scenarioId}'`); + error.code = 'NO_ACTIVE_STEPS'; + error.status = 400; + throw error; + } + + // Создаем generation + const generation = await createGeneration({ + userId, + scenarioId, + authSessionId: user?.sessionId || null, + requestPayload: {}, + currentStepId: firstStep.step_id, + }); + + // Формируем payload для n8n + // generationUuid НЕ отправляем - n8n должен сгенерировать свой и вернуть в ответе + const n8nPayload = { + meta: { + userId: user.id, + userEmail: user.email, + sessionId: user.sessionId, + scenarioId, + }, + body: {}, + }; + + // Вызов n8n webhook + const n8nUrl = `${env.N8N_BASE_URL}/webhook/scenario/${scenarioId}/start`; + const n8nResponse = await callN8nWebhook(n8nUrl, n8nPayload); + + // Обновляем generation с external_run_id и generation_uuid от n8n + const updateData = {}; + if (n8nResponse?.runId) { + updateData.externalRunId = n8nResponse.runId; + } + if (n8nResponse?.generationUuid) { + // Если n8n вернул свой generationUuid, используем его + // Но это маловероятно - скорее всего мы уже сгенерировали свой + updateData.generationUuid = n8nResponse.generationUuid; + } + + if (Object.keys(updateData).length > 0) { + await updateGeneration(generation.generation_uuid, updateData); + } + + return { + generationUuid: generation.generation_uuid, + status: generation.status, + currentStepId: firstStep.step_id, + }; +} + +/** + * Выполнение шага сценария + * BFF только валидирует входные данные и проксирует запрос в n8n. + * n8n отвечает за запись в БД (generation_steps, generations). + */ +export async function executeStep({ userId, scenarioId, stepId, input, user }) { + const step = await getScenarioStep(scenarioId, stepId); + + // Валидация input по input_schema из БД + const validation = validateInputSchema(step.input_schema, input); + if (!validation.valid) { + const error = new Error(`Invalid input: ${validation.errors.join(', ')}`); + error.code = 'INVALID_INPUT'; + error.status = 400; + error.details = validation.errors; + throw error; + } + + // Если фронт передал явный generationUuid — берём его (защита от race condition + // при параллельных submitStep-вызовах от одного пользователя в одном сценарии). + // Иначе fallback на самую свежую активную generation (back-compat). + const explicitUuid = input && typeof input.generationUuid === 'string' ? input.generationUuid : null; + let generation; + if (explicitUuid) { + const r = await pool.query( + `SELECT generation_uuid, current_step_id, status FROM uno_bff.generations WHERE user_id = $1 AND scenario_id = $2 AND generation_uuid = $3::uuid LIMIT 1`, + [userId, scenarioId, explicitUuid], + ); + generation = r.rows[0]; + if (input && 'generationUuid' in input) { delete input.generationUuid; } + } else { + const r = await pool.query( + `SELECT generation_uuid, current_step_id, status FROM uno_bff.generations WHERE user_id = $1 AND scenario_id = $2 AND status IN ('running', 'waiting_for_input') ORDER BY created_at DESC LIMIT 1`, + [userId, scenarioId], + ); + generation = r.rows[0]; + } + + if (!generation) { + const error = new Error(`No active generation found for scenario '${scenarioId}'`); + error.code = 'GENERATION_NOT_FOUND'; + error.status = 400; + throw error; + } + + // Формируем payload для n8n + const n8nPayload = { + meta: { + userId: user.id, + userEmail: user.email, + scenarioId, + stepId, + generationUuid: generation.generation_uuid, + }, + body: input, + }; + + // Вызов n8n webhook - n8n сам пишет в БД + const n8nUrl = `${env.N8N_BASE_URL}/webhook/scenario/${scenarioId}/step/${stepId}`; + const n8nResponse = await callN8nWebhook(n8nUrl, n8nPayload); + + // Возвращаем ответ от n8n + return { + generationUuid: generation.generation_uuid, + stepState: n8nResponse?.stepState || 'processing', + nextStepId: n8nResponse?.nextStepId || stepId, + n8nResponse: n8nResponse?.data || {}, + }; +} + +/** + * Вызов n8n webhook + */ +async function callN8nWebhook(url, payload) { + try { + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + const errorText = await response.text(); + const error = new Error(`n8n webhook failed: ${response.status} ${response.statusText}`); + error.code = 'N8N_WEBHOOK_ERROR'; + error.status = response.status; + error.n8nResponse = errorText; + throw error; + } + + const data = await response.json(); + return { + runId: data.runId || data.externalRunId || null, + data, + }; + } catch (err) { + if (err.code === 'N8N_WEBHOOK_ERROR') { + throw err; + } + const error = new Error(`Failed to call n8n webhook: ${err.message}`); + error.code = 'N8N_CONNECTION_ERROR'; + error.status = 503; + throw error; + } +} diff --git a/bff/services/scenario.service.js.bak.20260422 b/bff/services/scenario.service.js.bak.20260422 new file mode 100644 index 0000000..5824f89 --- /dev/null +++ b/bff/services/scenario.service.js.bak.20260422 @@ -0,0 +1,313 @@ +import { env } from '../config/env.js'; +import { + getUserScenarioPermission, + getScenarioById, + getScenarioStep, + getFirstScenarioStep, + createGeneration, + updateGeneration, + getGenerationByUuid, +} from '../repositories/scenario.repository.js'; +import { pool } from '../db.js'; + +// Экспорт для использования в routes +export { getScenarioStep }; + +/** + * Валидация данных по JSON Schema (строгая - все required поля) + */ +function validateInputSchema(inputSchema, data) { + const errors = []; + + if (!inputSchema || inputSchema === '{}') { + return { valid: true, errors: [] }; + } + + const schema = typeof inputSchema === 'string' ? JSON.parse(inputSchema) : inputSchema; + + // Проверка required полей + if (schema.required && Array.isArray(schema.required)) { + for (const field of schema.required) { + if (data[field] === undefined || data[field] === null) { + errors.push(`Missing required field: ${field}`); + } + } + } + + // Проверка типов полей + if (schema.properties) { + for (const [field, fieldSchema] of Object.entries(schema.properties)) { + const value = data[field]; + if (value === undefined || value === null) { + continue; // already checked in required + } + + if (fieldSchema.type === 'string' && typeof value !== 'string') { + errors.push(`Field '${field}' must be a string`); + } else if (fieldSchema.type === 'boolean' && typeof value !== 'boolean') { + errors.push(`Field '${field}' must be a boolean`); + } else if (fieldSchema.type === 'number' && typeof value !== 'number') { + errors.push(`Field '${field}' must be a number`); + } else if (fieldSchema.type === 'integer' && (!Number.isInteger(value))) { + errors.push(`Field '${field}' must be an integer`); + } else if (fieldSchema.type === 'array' && !Array.isArray(value)) { + errors.push(`Field '${field}' must be an array`); + } else if (fieldSchema.type === 'object' && (typeof value !== 'object' || Array.isArray(value))) { + errors.push(`Field '${field}' must be an object`); + } + + // Проверка minLength для string + if (fieldSchema.type === 'string' && typeof value === 'string' && fieldSchema.minLength !== undefined) { + if (value.length < fieldSchema.minLength) { + errors.push(`Field '${field}' must have at least ${fieldSchema.minLength} characters`); + } + } + } + } + + return { + valid: errors.length === 0, + errors, + }; +} + +/** + * Проверка прав доступа на запуск сценария + */ +export async function assertUserCanStartScenario({ userId, scenarioId }) { + const scenario = await getScenarioById(scenarioId); + if (!scenario) { + const error = new Error(`Scenario '${scenarioId}' not found`); + error.code = 'SCENARIO_NOT_FOUND'; + error.status = 404; + throw error; + } + + if (scenario.status !== 'active') { + const error = new Error(`Scenario '${scenarioId}' is not active (status: ${scenario.status})`); + error.code = 'SCENARIO_NOT_ACTIVE'; + error.status = 403; + throw error; + } + + // Публичные сценарии доступны всем авторизованным пользователям + if (!scenario.is_public) { + const permission = await getUserScenarioPermission(userId, scenarioId); + if (!permission || !permission.can_start) { + const error = new Error(`User '${userId}' does not have permission to start scenario '${scenarioId}'`); + error.code = 'SCENARIO_ACCESS_DENIED'; + error.status = 403; + throw error; + } + } + + return true; +} + +/** + * Проверка прав доступа на выполнение шага + */ +export async function assertUserCanExecuteStep({ userId, scenarioId, stepId }) { + const scenario = await getScenarioById(scenarioId); + if (!scenario) { + const error = new Error(`Scenario '${scenarioId}' not found`); + error.code = 'SCENARIO_NOT_FOUND'; + error.status = 404; + throw error; + } + + const step = await getScenarioStep(scenarioId, stepId); + if (!step) { + const error = new Error(`Step '${stepId}' not found in scenario '${scenarioId}'`); + error.code = 'STEP_NOT_FOUND'; + error.status = 404; + throw error; + } + + if (step.status !== 'active') { + const error = new Error(`Step '${stepId}' is not active (status: ${step.status})`); + error.code = 'STEP_NOT_ACTIVE'; + error.status = 403; + throw error; + } + + // Публичные сценарии доступны всем авторизованным пользователям + if (!scenario.is_public) { + const permission = await getUserScenarioPermission(userId, scenarioId); + if (!permission || !permission.can_execute) { + const error = new Error(`User '${userId}' does not have permission to execute steps in scenario '${scenarioId}'`); + error.code = 'SCENARIO_ACCESS_DENIED'; + error.status = 403; + throw error; + } + } + + return true; +} + +/** + * Запуск сценария + */ +export async function startScenario({ userId, scenarioId, input, user }) { + // Валидация input для start - body должен быть пустым или минимальным + // Для start сценария проверяем, что нет лишних данных (body должен быть пустым {}) + if (input && Object.keys(input).length > 0) { + const error = new Error('Start scenario body must be empty'); + error.code = 'INVALID_START_BODY'; + error.status = 400; + throw error; + } + + const firstStep = await getFirstScenarioStep(scenarioId); + if (!firstStep) { + const error = new Error(`No active steps found in scenario '${scenarioId}'`); + error.code = 'NO_ACTIVE_STEPS'; + error.status = 400; + throw error; + } + + // Создаем generation + const generation = await createGeneration({ + userId, + scenarioId, + authSessionId: user?.sessionId || null, + requestPayload: {}, + currentStepId: firstStep.step_id, + }); + + // Формируем payload для n8n + // generationUuid НЕ отправляем - n8n должен сгенерировать свой и вернуть в ответе + const n8nPayload = { + meta: { + userId: user.id, + userEmail: user.email, + sessionId: user.sessionId, + scenarioId, + }, + body: {}, + }; + + // Вызов n8n webhook + const n8nUrl = `${env.N8N_BASE_URL}/webhook/scenario/${scenarioId}/start`; + const n8nResponse = await callN8nWebhook(n8nUrl, n8nPayload); + + // Обновляем generation с external_run_id и generation_uuid от n8n + const updateData = {}; + if (n8nResponse?.runId) { + updateData.externalRunId = n8nResponse.runId; + } + if (n8nResponse?.generationUuid) { + // Если n8n вернул свой generationUuid, используем его + // Но это маловероятно - скорее всего мы уже сгенерировали свой + updateData.generationUuid = n8nResponse.generationUuid; + } + + if (Object.keys(updateData).length > 0) { + await updateGeneration(generation.generation_uuid, updateData); + } + + return { + generationUuid: generation.generation_uuid, + status: generation.status, + currentStepId: firstStep.step_id, + }; +} + +/** + * Выполнение шага сценария + * BFF только валидирует входные данные и проксирует запрос в n8n. + * n8n отвечает за запись в БД (generation_steps, generations). + */ +export async function executeStep({ userId, scenarioId, stepId, input, user }) { + const step = await getScenarioStep(scenarioId, stepId); + + // Валидация input по input_schema из БД + const validation = validateInputSchema(step.input_schema, input); + if (!validation.valid) { + const error = new Error(`Invalid input: ${validation.errors.join(', ')}`); + error.code = 'INVALID_INPUT'; + error.status = 400; + error.details = validation.errors; + throw error; + } + + // Ищем активную generation для этого пользователя и сценария + const query = ` + SELECT generation_uuid, current_step_id, status + FROM uno_bff.generations + WHERE user_id = $1 AND scenario_id = $2 AND status IN ('running', 'waiting_for_input') + ORDER BY created_at DESC + LIMIT 1 + `; + const result = await pool.query(query, [userId, scenarioId]); + let generation = result.rows[0]; + + if (!generation) { + const error = new Error(`No active generation found for scenario '${scenarioId}'`); + error.code = 'GENERATION_NOT_FOUND'; + error.status = 400; + throw error; + } + + // Формируем payload для n8n + const n8nPayload = { + meta: { + userId: user.id, + userEmail: user.email, + scenarioId, + stepId, + generationUuid: generation.generation_uuid, + }, + body: input, + }; + + // Вызов n8n webhook - n8n сам пишет в БД + const n8nUrl = `${env.N8N_BASE_URL}/webhook/scenario/${scenarioId}/step/${stepId}`; + const n8nResponse = await callN8nWebhook(n8nUrl, n8nPayload); + + // Возвращаем ответ от n8n + return { + generationUuid: generation.generation_uuid, + stepState: n8nResponse?.stepState || 'processing', + nextStepId: n8nResponse?.nextStepId || stepId, + n8nResponse: n8nResponse?.data || {}, + }; +} + +/** + * Вызов n8n webhook + */ +async function callN8nWebhook(url, payload) { + try { + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(payload), + }); + + if (!response.ok) { + const errorText = await response.text(); + const error = new Error(`n8n webhook failed: ${response.status} ${response.statusText}`); + error.code = 'N8N_WEBHOOK_ERROR'; + error.status = response.status; + error.n8nResponse = errorText; + throw error; + } + + const data = await response.json(); + return { + runId: data.runId || data.externalRunId || null, + data, + }; + } catch (err) { + if (err.code === 'N8N_WEBHOOK_ERROR') { + throw err; + } + const error = new Error(`Failed to call n8n webhook: ${err.message}`); + error.code = 'N8N_CONNECTION_ERROR'; + error.status = 503; + throw error; + } +} diff --git a/bff/services/token.service.js b/bff/services/token.service.js new file mode 100644 index 0000000..b1d7978 --- /dev/null +++ b/bff/services/token.service.js @@ -0,0 +1,55 @@ +import crypto from 'node:crypto'; +import jwt from 'jsonwebtoken'; + +const ACCESS_TTL_SEC = Number(process.env.ACCESS_TOKEN_TTL_SEC || 900); + +export function hashToken(value) { + return crypto.createHash('sha256').update(value, 'utf8').digest('hex'); +} + +export function generateRefreshToken() { + return crypto.randomBytes(48).toString('base64url'); +} + +export function generateCsrfToken() { + return crypto.randomBytes(32).toString('base64url'); +} + +export function signAccessToken(user, sessionId) { + return jwt.sign( + { + sub: user.id, + email: user.email, + role: user.role, + sid: sessionId, + }, + process.env.JWT_SECRET, + { + issuer: process.env.JWT_ISSUER || 'uno-click-bff', + audience: process.env.JWT_AUDIENCE || 'uno-click-web', + expiresIn: ACCESS_TTL_SEC, + } + ); +} + +export function verifyAccessToken(token) { + return jwt.verify(token, process.env.JWT_SECRET, { + issuer: process.env.JWT_ISSUER || 'uno-click-bff', + audience: process.env.JWT_AUDIENCE || 'uno-click-web', + }); +} + +export function verifyRefreshToken(token) { + return jwt.verify(token, process.env.JWT_SECRET, { + issuer: process.env.JWT_ISSUER || 'uno-click-bff', + audience: process.env.JWT_AUDIENCE || 'uno-click-web', + }); +} + +export function signRefreshToken(payload) { + return jwt.sign(payload, process.env.JWT_SECRET, { + issuer: process.env.JWT_ISSUER || 'uno-click-bff', + audience: process.env.JWT_AUDIENCE || 'uno-click-web', + expiresIn: '30d', + }); +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..923a9d2 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,131 @@ +services: + postgres: + image: postgres:15 + container_name: uno-postgres + restart: unless-stopped + ports: + - "127.0.0.1:5432:5432" + environment: + POSTGRES_DB: ${POSTGRES_DB} + POSTGRES_USER: ${POSTGRES_USER} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 10 + n8n: + image: docker.n8n.io/n8nio/n8n:stable + container_name: uno-n8n + restart: unless-stopped + depends_on: + postgres: + condition: service_healthy + ports: + - "127.0.0.1:5678:5678" + environment: + DB_TYPE: postgresdb + DB_POSTGRESDB_HOST: postgres + DB_POSTGRESDB_PORT: 5432 + DB_POSTGRESDB_DATABASE: ${POSTGRES_DB} + DB_POSTGRESDB_USER: ${POSTGRES_USER} + DB_POSTGRESDB_PASSWORD: ${POSTGRES_PASSWORD} + + N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY} + + N8N_HOST: ${N8N_HOST} + N8N_PROTOCOL: ${N8N_PROTOCOL} + N8N_PORT: ${N8N_PORT} + WEBHOOK_URL: ${WEBHOOK_URL} + N8N_PROXY_HOPS: ${N8N_PROXY_HOPS} + NODE_FUNCTION_ALLOW_BUILTIN: crypto,http + + GENERIC_TIMEZONE: ${GENERIC_TIMEZONE} + TZ: ${TZ} + volumes: + - n8n_data:/home/node/.n8n + - ./local-files:/files + ffmpeg-api: + build: + context: ./ffmpeg-api + container_name: uno-ffmpeg-api + restart: unless-stopped + volumes: + - ./local-files:/files + ports: + - "127.0.0.1:8000:8000" + minio: + image: minio/minio:latest + container_name: minio + restart: always + ports: + - "9000:9000" # API + - "9001:9001" # Web UI + environment: + MINIO_ROOT_USER: UN0-admin + MINIO_ROOT_PASSWORD: RAygtZHqGN49qKn + volumes: + - /opt/minio/data:/data + command: server /data --console-address ":9001" + bff: + build: + context: ./bff + container_name: uno-bff + restart: unless-stopped + depends_on: + postgres: + condition: service_healthy + minio: + condition: service_started + ports: + - "127.0.0.1:3001:3001" + environment: + - NODE_ENV=production + - HOST=0.0.0.0 + - PORT=3001 + - PG_HOST=postgres + - PG_PORT=5432 + - PG_DATABASE=${POSTGRES_DB} + - PG_USER=${POSTGRES_USER} + - PG_PASSWORD=${POSTGRES_PASSWORD} + - COOKIE_ACCESS_NAME=__Host-access_token + - COOKIE_REFRESH_NAME=__Host-refresh_token + - COOKIE_CSRF_NAME=csrf_token + - ACCESS_TOKEN_TTL_SEC=900 + - REFRESH_TOKEN_TTL_SEC=2592000 + - JWT_ISSUER=uno-click-bff + - JWT_AUDIENCE=uno-click-web + - JWT_SECRET=test-secret-key-for-development + - N8N_BASE_URL=http://uno-n8n:5678 + - S3_ENDPOINT=http://minio:9000 + - S3_ACCESS_KEY=UN0-admin + - S3_SECRET_KEY=RAygtZHqGN49qKn + - S3_BUCKET=uno-click + - S3_IMAGES_INPUT_FOLDER=images_input + - S3_PRESIGNED_URL_EXPIRES_IN=3600 + - S3_PUBLIC_ENDPOINT=https://uno-click.pip-test.ru/s3-upload/uno-click/ + - TELEGRAM_BOT_TOKEN=8679428833:AAGtP7fkEjoJCPz1o1PhSV_vCI7g2JB9pHo + - TELEGRAM_BOT_USERNAME=One_Click_Auth_bot + - TELEGRAM_WEBHOOK_SECRET=dbe8c8d2903a836339dc009782a63f1a96b94f70ac204a1d + - FRONTEND_URL=https://uno-click.pip-test.ru,https://cc86b8e0-c23c-42e4-9ca9-52684746940d-00-2b5hl9u4q8nnf.pike.replit.dev,https://150b44f4-d8b1-439c-9b60-f012e9015ab6-00-2sfcbvia8exhs.pike.replit.dev + site: + build: + context: ./site + dockerfile: Dockerfile + container_name: uno-site + restart: unless-stopped + depends_on: + bff: + condition: service_started + ports: + - "127.0.0.1:3000:3000" + environment: + - NODE_ENV=production + - PORT=3000 + - BFF_URL=http://uno-bff:3001 + +volumes: + postgres_data: + n8n_data: diff --git a/ffmpeg-api/Dockerfile b/ffmpeg-api/Dockerfile new file mode 100644 index 0000000..9221d1f --- /dev/null +++ b/ffmpeg-api/Dockerfile @@ -0,0 +1,12 @@ +FROM python:3.11-slim + +RUN apt-get update \ + && apt-get install -y ffmpeg \ + && pip install --no-cache-dir fastapi uvicorn[standard] python-multipart boto3 aiofiles \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /app +COPY app.py /app/app.py + +CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/ffmpeg-api/app.py b/ffmpeg-api/app.py new file mode 100644 index 0000000..6f7f3bc --- /dev/null +++ b/ffmpeg-api/app.py @@ -0,0 +1,684 @@ +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from typing import Optional, Dict, Any, List, Literal +import subprocess +import os +import uuid +from pathlib import Path +from datetime import datetime, timedelta +from enum import Enum +import asyncio +import time +import aiofiles + +import boto3 +from botocore.client import Config + +app = FastAPI() + +FILES_DIR = Path("/files") + +# ─── S3 / MinIO ─────────────────────────────────────────────────────────────── +S3_ENDPOINT = os.getenv("S3_ENDPOINT", "http://minio:9000") +S3_ACCESS = os.getenv("S3_ACCESS_KEY", "UN0-admin") +S3_SECRET = os.getenv("S3_SECRET_KEY", "RAygtZHqGN49qKn") +S3_REGION = os.getenv("S3_REGION", "us-east-1") + +def get_s3(): + return boto3.client( + "s3", + endpoint_url=S3_ENDPOINT, + aws_access_key_id=S3_ACCESS, + aws_secret_access_key=S3_SECRET, + region_name=S3_REGION, + config=Config(signature_version="s3v4"), + ) + +def parse_s3_uri(uri: str) -> tuple[str, str]: + if not uri.startswith("s3://"): + raise ValueError(f"Not an s3:// URI: {uri}") + parts = uri[5:].split("/", 1) + if len(parts) != 2: + raise ValueError(f"Bad s3 URI: {uri}") + return parts[0], parts[1] + + +# ─── Модели ─────────────────────────────────────────────────────────────────── +class JobStatus(str, Enum): + WAITING = "pending" # Ждёт начала обработки (pending для обратной совместимости) + PROCESSING = "processing" + COMPLETED = "completed" + FAILED = "failed" + +class JobInfo(BaseModel): + job_id: str + status: JobStatus + created_at: str + updated_at: str + input_s3: Optional[str] = None + output_s3: Optional[str] = None + error: Optional[str] = None + progress: Optional[int] = None + +class FfmpegS3Request(BaseModel): + input_s3: str + ffmpeg_args: list[str] + output_s3: str | None = None + job_id: str | None = None + +class ConcatS3Request(BaseModel): + inputs_s3: List[str] + output_s3: str + audio: Literal["keep", "mute", "first-only"] = "keep" + reencode: bool = False + job_id: Optional[str] = None + + +# ─── Хранилище задач и очередь ──────────────────────────────────────────────── +jobs: Dict[str, Dict[str, Any]] = {} +job_queue: asyncio.Queue = asyncio.Queue() +JOB_TTL = timedelta(hours=1) +jobs_lock = asyncio.Lock() +NUM_WORKERS = 4 + + +# ─── Очистка старых задач ───────────────────────────────────────────────────── +async def cleanup_old_jobs(): + now = datetime.utcnow() + to_delete = [] + async with jobs_lock: + for job_id, job in jobs.items(): + if job["status"] in (JobStatus.COMPLETED, JobStatus.FAILED): + updated = datetime.fromisoformat(job["updated_at"]) + if now - updated > JOB_TTL: + to_delete.append(job_id) + for job_id in to_delete: + del jobs[job_id] + + +# ─── Воркер очереди ─────────────────────────────────────────────────────────── +async def job_worker(worker_id: int): + """Обработчик задач из очереди""" + while True: + job_data = await job_queue.get() + job_id = job_data["job_id"] + kind = job_data.get("kind", "ffmpeg") + try: + if kind == "concat": + await process_concat_job(job_id, job_data) + else: + await process_ffmpeg_job(job_id, job_data) + finally: + job_queue.task_done() + + +async def process_ffmpeg_job(job_id: str, job_data: Dict[str, Any]): + """Асинхронная обработка задачи""" + s3 = get_s3() + + in_bucket = job_data["in_bucket"] + in_key = job_data["in_key"] + out_bucket = job_data["out_bucket"] + out_key = job_data["out_key"] + output_s3 = job_data["output_s3"] + ffmpeg_args = job_data["ffmpeg_args"] + tmp_in = job_data["tmp_in"] + tmp_out = job_data["tmp_out"] + + try: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.PROCESSING + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + # 1. Скачать из MinIO + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.download_file(in_bucket, in_key, str(tmp_in)) + ) + + # 2. Запустить FFmpeg + cmd = ["ffmpeg", "-i", str(tmp_in), *ffmpeg_args, "-y", str(tmp_out)] + proc = await asyncio.create_subprocess_exec( + *cmd, + cwd=str(FILES_DIR), + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE + ) + _, stderr = await proc.communicate() + + if proc.returncode != 0: + error_msg = stderr.decode("utf-8", errors="ignore")[-8000:] if stderr else "Unknown error" + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = error_msg + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + return + + # 3. Загрузить результат в MinIO + async with aiofiles.open(str(tmp_out), "rb") as f: + content = await f.read() + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.put_object(Bucket=out_bucket, Key=out_key, Body=content, ContentType="video/mp4") + ) + + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.COMPLETED + jobs[job_id]["output_s3"] = output_s3 + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + except Exception as e: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = str(e) + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + finally: + try: + tmp_in.unlink(missing_ok=True) + tmp_out.unlink(missing_ok=True) + except: + pass + + + +async def _probe_video_size(path: Path) -> tuple[int, int]: + """Return (width, height) using ffprobe; (0,0) on failure.""" + proc = await asyncio.create_subprocess_exec( + "ffprobe", "-v", "error", "-select_streams", "v:0", + "-show_entries", "stream=width,height", "-of", "csv=p=0:s=x", str(path), + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.DEVNULL, + ) + out, _ = await proc.communicate() + try: + w, h = out.decode().strip().split("x") + return int(w), int(h) + except Exception: + return 0, 0 + +async def _probe_main_video_index(path: Path) -> int: + """Index of the first video stream that is NOT an attached_pic/cover art.""" + proc = await asyncio.create_subprocess_exec( + "ffprobe", "-v", "error", "-select_streams", "v", + "-show_entries", "stream=index,disposition", + "-of", "default=nw=1:nk=0", str(path), + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.DEVNULL, + ) + out, _ = await proc.communicate() + text = out.decode("utf-8", errors="ignore").splitlines() + streams: List[dict] = [] + cur: dict = {} + for line in text: + if "=" not in line: + continue + k, v = line.split("=", 1) + if k == "index": + if cur: + streams.append(cur) + cur = {"index": int(v)} + else: + cur[k] = v + if cur: + streams.append(cur) + main = [s for s in streams if s.get("disposition:attached_pic", "0") != "1"] + if not main: + return 0 + # ffprobe video-only stream order is the per-type index; first non-attached_pic is 0. + return next((i for i, s in enumerate(streams) if s.get("disposition:attached_pic", "0") != "1"), 0) + + +async def _probe_has_audio(path: Path) -> bool: + proc = await asyncio.create_subprocess_exec( + "ffprobe", "-v", "error", "-select_streams", "a:0", + "-show_entries", "stream=codec_type", "-of", "csv=p=0", str(path), + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.DEVNULL, + ) + out, _ = await proc.communicate() + return b"audio" in out + + +async def process_concat_job(job_id: str, job_data: Dict[str, Any]): + """Склейка нескольких видео из MinIO в одно через ffmpeg concat.""" + s3 = get_s3() + + inputs: List[Dict[str, str]] = job_data["inputs"] # [{"bucket":..,"key":..,"tmp":Path}] + out_bucket: str = job_data["out_bucket"] + out_key: str = job_data["out_key"] + output_s3: str = job_data["output_s3"] + audio_mode: str = job_data["audio"] + reencode: bool = job_data["reencode"] + list_file: Path = job_data["list_file"] + tmp_out: Path = job_data["tmp_out"] + + try: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.PROCESSING + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + # 1. Скачать все входные файлы из MinIO параллельно + loop = asyncio.get_event_loop() + await asyncio.gather(*[ + loop.run_in_executor( + None, + lambda b=item["bucket"], k=item["key"], t=item["tmp"]: s3.download_file(b, k, str(t)) + ) + for item in inputs + ]) + + # 2. Сформировать list.txt для concat demuxer + # Имена пишем относительно cwd=FILES_DIR (где лежат файлы), без полных путей + # для безопасности concat (-safe 0 разрешает абсолютные, но проще относительные). + async with aiofiles.open(str(list_file), "w") as f: + for item in inputs: + # экранируем одинарные кавычки в имени файла + safe = str(item["tmp"]).replace("'", "'\\''") + await f.write(f"file '{safe}'\n") + + # 3. Сформировать команду + async def run_ffmpeg(args: List[str]) -> tuple[int, str]: + proc = await asyncio.create_subprocess_exec( + "ffmpeg", *args, + cwd=str(FILES_DIR), + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, + ) + _, stderr = await proc.communicate() + return proc.returncode, stderr.decode("utf-8", errors="ignore") if stderr else "" + + async def attempt(cmd_args: List[str]) -> tuple[int, str]: + return await run_ffmpeg(cmd_args) + + rc = -1 + stderr_text = "" + + if audio_mode == "first-only": + # video concat по всем (с нормализацией), audio только из первого. Всегда reencode. + n = len(inputs) + sizes = await asyncio.gather(*[_probe_video_size(item["tmp"]) for item in inputs]) + vi = await asyncio.gather(*[_probe_main_video_index(item["tmp"]) for item in inputs]) + tgt_w = max((w for w, _ in sizes if w > 0), default=1280) + tgt_h = max((h for _, h in sizes if h > 0), default=720) + if tgt_w % 2: tgt_w += 1 + if tgt_h % 2: tgt_h += 1 + cmd: List[str] = [] + for item in inputs: + cmd += ["-i", str(item["tmp"])] + norm_filters = [ + f"[{i}:v:{vi[i]}]scale={tgt_w}:{tgt_h}:force_original_aspect_ratio=decrease," + f"pad={tgt_w}:{tgt_h}:(ow-iw)/2:(oh-ih)/2:color=black," + f"setsar=1,fps=30,format=yuv420p[v{i}]" + for i in range(n) + ] + v_chain = "".join(f"[v{i}]" for i in range(n)) + f"concat=n={n}:v=1:a=0[outv]" + filter_complex = ";".join(norm_filters + [v_chain]) + cmd += [ + "-filter_complex", filter_complex, + "-map", "[outv]", + "-map", "0:a:0?", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-c:a", "aac", "-b:a", "128k", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + rc, stderr_text = await attempt(cmd) + + else: + # keep / mute → если разрешено copy, пробуем concat demuxer без перекодировки. + base_cmd = ["-f", "concat", "-safe", "0", "-i", str(list_file)] + if audio_mode == "mute": + copy_cmd = base_cmd + ["-c:v", "copy", "-an", "-movflags", "+faststart", "-y", str(tmp_out)] + else: # keep + copy_cmd = base_cmd + ["-c", "copy", "-movflags", "+faststart", "-y", str(tmp_out)] + + if not reencode: + rc, stderr_text = await attempt(copy_cmd) + + # Перекодировка с нормализацией размера/SAR/fps для разнородных входов. + if reencode or rc != 0: + n = len(inputs) + # Подбираем целевое разрешение = максимум по всем входам (чётное). + sizes = await asyncio.gather(*[_probe_video_size(item["tmp"]) for item in inputs]) + vi = await asyncio.gather(*[_probe_main_video_index(item["tmp"]) for item in inputs]) + tgt_w = max((w for w, _ in sizes if w > 0), default=1280) + tgt_h = max((h for _, h in sizes if h > 0), default=720) + if tgt_w % 2: tgt_w += 1 + if tgt_h % 2: tgt_h += 1 + + cmd: List[str] = [] + for item in inputs: + cmd += ["-i", str(item["tmp"])] + + # Для keep-режима проверяем наличие аудио в каждом входе; если где-то нет — + # подмешиваем тишину через anullsrc, иначе concat=...:a=1 упадёт. + want_audio = audio_mode == "keep" + has_audio: List[bool] = [] + if want_audio: + has_audio = list(await asyncio.gather(*[_probe_has_audio(item["tmp"]) for item in inputs])) + # Добавляем anullsrc-вход для каждого клипа без аудио. + for missing in (i for i, ok in enumerate(has_audio) if not ok): + cmd += ["-f", "lavfi", "-t", "0.1", "-i", "anullsrc=channel_layout=stereo:sample_rate=44100"] + + norm_filters: List[str] = [] + concat_inputs: List[str] = [] + anull_idx = n # индекс первого anullsrc-входа + for i in range(n): + norm_filters.append( + f"[{i}:v:{vi[i]}]scale={tgt_w}:{tgt_h}:force_original_aspect_ratio=decrease," + f"pad={tgt_w}:{tgt_h}:(ow-iw)/2:(oh-ih)/2:color=black," + f"setsar=1,fps=30,format=yuv420p[v{i}]" + ) + if want_audio: + if has_audio[i]: + norm_filters.append(f"[{i}:a:0]aresample=async=1:first_pts=0[a{i}]") + else: + norm_filters.append(f"[{anull_idx}:a:0]aresample=async=1[a{i}]") + anull_idx += 1 + concat_inputs.append(f"[v{i}][a{i}]") + else: + concat_inputs.append(f"[v{i}]") + + if want_audio: + concat = "".join(concat_inputs) + f"concat=n={n}:v=1:a=1[outv][outa]" + filter_complex = ";".join(norm_filters + [concat]) + cmd += [ + "-filter_complex", filter_complex, + "-map", "[outv]", "-map", "[outa]", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-c:a", "aac", "-b:a", "128k", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + else: + concat = "".join(concat_inputs) + f"concat=n={n}:v=1:a=0[outv]" + filter_complex = ";".join(norm_filters + [concat]) + cmd += [ + "-filter_complex", filter_complex, + "-map", "[outv]", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-an", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + rc, stderr_text = await attempt(cmd) + + if rc != 0: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = stderr_text[-8000:] if stderr_text else "Unknown error" + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + return + + # 4. Залить результат в MinIO + async with aiofiles.open(str(tmp_out), "rb") as f: + content = await f.read() + await loop.run_in_executor( + None, + lambda: s3.put_object(Bucket=out_bucket, Key=out_key, Body=content, ContentType="video/mp4") + ) + + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.COMPLETED + jobs[job_id]["output_s3"] = output_s3 + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + except Exception as e: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = str(e) + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + finally: + try: + for item in inputs: + item["tmp"].unlink(missing_ok=True) + list_file.unlink(missing_ok=True) + tmp_out.unlink(missing_ok=True) + except: + pass + + +# ─── Запуск воркеров при старте ─────────────────────────────────────────────── +@app.on_event("startup") +async def startup_event(): + """Запуск воркеров очереди + чистка осиротевших временных файлов.""" + try: + now = time.time() + for pat in ("_in_*", "_out_*", "_concat_*", "_list_*"): + for f in FILES_DIR.glob(pat): + try: + if now - f.stat().st_mtime > 3600: # 1 час + f.unlink(missing_ok=True) + except Exception: + pass + except Exception: + pass + for i in range(NUM_WORKERS): + asyncio.create_task(job_worker(i)) + + +# ─── POST /run-s3 ───────────────────────────────────────────────────────────── +@app.post("/run-s3") +async def run_ffmpeg_s3(req: FfmpegS3Request): + """Создаёт задачу и добавляет в очередь, сразу возвращает job_id""" + tmp_id = req.job_id or str(uuid.uuid4()) + + try: + in_bucket, in_key = parse_s3_uri(req.input_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + if req.output_s3: + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + else: + folder = "/".join(in_key.split("/")[:-1]) + ext = in_key.rsplit(".", 1)[-1] if "." in in_key else "mp4" + out_key = f"{folder}/{tmp_id}_processed.{ext}" if folder else f"{tmp_id}_processed.{ext}" + out_bucket = in_bucket + + tmp_in = FILES_DIR / f"_in_{tmp_id}.{in_key.rsplit('.',1)[-1] if '.' in in_key else 'mp4'}" + tmp_out = FILES_DIR / f"_out_{tmp_id}.mp4" + output_s3 = f"s3://{out_bucket}/{out_key}" + now = datetime.utcnow().isoformat() + + async with jobs_lock: + jobs[tmp_id] = { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "created_at": now, + "updated_at": now, + "input_s3": req.input_s3, + "output_s3": output_s3, + "error": None, + "progress": None, + } + + # Добавляем в очередь + await job_queue.put({ + "kind": "ffmpeg", + "job_id": tmp_id, + "in_bucket": in_bucket, + "in_key": in_key, + "out_bucket": out_bucket, + "out_key": out_key, + "output_s3": output_s3, + "ffmpeg_args": req.ffmpeg_args, + "tmp_in": tmp_in, + "tmp_out": tmp_out, + }) + + await cleanup_old_jobs() + + return { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "status_url": f"/status/{tmp_id}", + "queue_position": job_queue.qsize(), + } + + +# ─── POST /concat-s3 ────────────────────────────────────────────────────────── +@app.post("/concat-s3") +async def concat_s3(req: ConcatS3Request): + """Склеивает несколько видео из MinIO в одно. Возвращает job_id и status_url.""" + if len(req.inputs_s3) < 2: + raise HTTPException(status_code=400, detail="inputs_s3 must contain at least 2 items") + if len(req.inputs_s3) > 20: + raise HTTPException(status_code=400, detail="inputs_s3 too long (max 20)") + + tmp_id = req.job_id or str(uuid.uuid4()) + + inputs: List[Dict[str, Any]] = [] + for idx, uri in enumerate(req.inputs_s3): + try: + b, k = parse_s3_uri(uri) + except ValueError as e: + raise HTTPException(status_code=400, detail=f"inputs_s3[{idx}]: {e}") + ext = k.rsplit(".", 1)[-1] if "." in k else "mp4" + inputs.append({ + "bucket": b, + "key": k, + "tmp": FILES_DIR / f"_concat_{tmp_id}_{idx}.{ext}", + }) + + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + list_file = FILES_DIR / f"_concat_{tmp_id}.txt" + tmp_out = FILES_DIR / f"_concat_out_{tmp_id}.mp4" + output_s3 = f"s3://{out_bucket}/{out_key}" + now = datetime.utcnow().isoformat() + + async with jobs_lock: + jobs[tmp_id] = { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "created_at": now, + "updated_at": now, + "input_s3": ",".join(req.inputs_s3), + "output_s3": output_s3, + "error": None, + "progress": None, + } + + await job_queue.put({ + "kind": "concat", + "job_id": tmp_id, + "inputs": inputs, + "out_bucket": out_bucket, + "out_key": out_key, + "output_s3": output_s3, + "audio": req.audio, + "reencode": req.reencode, + "list_file": list_file, + "tmp_out": tmp_out, + }) + + await cleanup_old_jobs() + + return { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "status_url": f"/status/{tmp_id}", + "queue_position": job_queue.qsize(), + } + + +# ─── GET /status/{job_id} ───────────────────────────────────────────────────── +@app.get("/status/{job_id}", response_model=JobInfo) +async def get_job_status(job_id: str): + """Получить статус задачи""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + job = jobs[job_id].copy() + return JobInfo(**job) + + +# ─── GET /status ────────────────────────────────────────────────────────────── +@app.get("/status") +async def list_statuses(): + """Список всех задач""" + async with jobs_lock: + return [ + { + "job_id": j["job_id"], + "status": j["status"], + "created_at": j["created_at"], + "updated_at": j["updated_at"], + } + for j in jobs.values() + ] + + +# ─── DELETE /jobs/{job_id} ──────────────────────────────────────────────────── +@app.delete("/jobs/{job_id}") +async def delete_job(job_id: str): + """Удалить задачу""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + del jobs[job_id] + return {"ok": True, "message": "Job deleted"} + + +# ─── Health check ───────────────────────────────────────────────────────────── +@app.get("/health") +async def health_check(): + return { + "status": "ok", + "jobs_count": len(jobs), + "queue_size": job_queue.qsize(), + "workers": NUM_WORKERS, + } + + +# ─── POST /ingest-url ───────────────────────────────────────────────────────── +import urllib.request + +class IngestUrlRequest(BaseModel): + url: str + output_s3: str + content_type: Optional[str] = None + +@app.post("/ingest-url") +async def ingest_url(req: IngestUrlRequest): + """Скачивает файл по URL и кладёт его в S3/MinIO. Возвращает {output_s3}.""" + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + tmp = FILES_DIR / f"_ingest_{uuid.uuid4().hex}" + + def _download_and_upload(): + request = urllib.request.Request(req.url, headers={"User-Agent": "uno-ffmpeg-api/1.0"}) + with urllib.request.urlopen(request, timeout=300) as resp: + with open(tmp, "wb") as f: + while True: + chunk = resp.read(1024 * 1024) + if not chunk: + break + f.write(chunk) + s3 = get_s3() + extra = {"ContentType": req.content_type} if req.content_type else None + if extra: + s3.upload_file(str(tmp), out_bucket, out_key, ExtraArgs=extra) + else: + s3.upload_file(str(tmp), out_bucket, out_key) + + try: + await asyncio.to_thread(_download_and_upload) + except urllib.error.HTTPError as e: + raise HTTPException(status_code=502, detail=f"Source URL HTTP {e.code}: {e.reason}") + except Exception as e: + raise HTTPException(status_code=500, detail=f"Ingest failed: {e}") + finally: + try: + tmp.unlink(missing_ok=True) + except Exception: + pass + + return {"output_s3": req.output_s3, "content_type": req.content_type} diff --git a/ffmpeg-api/app.py.bak.1776865028 b/ffmpeg-api/app.py.bak.1776865028 new file mode 100644 index 0000000..8875ca3 --- /dev/null +++ b/ffmpeg-api/app.py.bak.1776865028 @@ -0,0 +1,521 @@ +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from typing import Optional, Dict, Any, List, Literal +import subprocess +import os +import uuid +from pathlib import Path +from datetime import datetime, timedelta +from enum import Enum +import asyncio +import aiofiles + +import boto3 +from botocore.client import Config + +app = FastAPI() + +FILES_DIR = Path("/files") + +# ─── S3 / MinIO ─────────────────────────────────────────────────────────────── +S3_ENDPOINT = os.getenv("S3_ENDPOINT", "http://minio:9000") +S3_ACCESS = os.getenv("S3_ACCESS_KEY", "UN0-admin") +S3_SECRET = os.getenv("S3_SECRET_KEY", "RAygtZHqGN49qKn") +S3_REGION = os.getenv("S3_REGION", "us-east-1") + +def get_s3(): + return boto3.client( + "s3", + endpoint_url=S3_ENDPOINT, + aws_access_key_id=S3_ACCESS, + aws_secret_access_key=S3_SECRET, + region_name=S3_REGION, + config=Config(signature_version="s3v4"), + ) + +def parse_s3_uri(uri: str) -> tuple[str, str]: + if not uri.startswith("s3://"): + raise ValueError(f"Not an s3:// URI: {uri}") + parts = uri[5:].split("/", 1) + if len(parts) != 2: + raise ValueError(f"Bad s3 URI: {uri}") + return parts[0], parts[1] + + +# ─── Модели ─────────────────────────────────────────────────────────────────── +class JobStatus(str, Enum): + WAITING = "pending" # Ждёт начала обработки (pending для обратной совместимости) + PROCESSING = "processing" + COMPLETED = "completed" + FAILED = "failed" + +class JobInfo(BaseModel): + job_id: str + status: JobStatus + created_at: str + updated_at: str + input_s3: Optional[str] = None + output_s3: Optional[str] = None + error: Optional[str] = None + progress: Optional[int] = None + +class FfmpegS3Request(BaseModel): + input_s3: str + ffmpeg_args: list[str] + output_s3: str | None = None + job_id: str | None = None + +class ConcatS3Request(BaseModel): + inputs_s3: List[str] + output_s3: str + audio: Literal["keep", "mute", "first-only"] = "keep" + reencode: bool = False + job_id: Optional[str] = None + + +# ─── Хранилище задач и очередь ──────────────────────────────────────────────── +jobs: Dict[str, Dict[str, Any]] = {} +job_queue: asyncio.Queue = asyncio.Queue() +JOB_TTL = timedelta(hours=1) +jobs_lock = asyncio.Lock() +NUM_WORKERS = 4 + + +# ─── Очистка старых задач ───────────────────────────────────────────────────── +async def cleanup_old_jobs(): + now = datetime.utcnow() + to_delete = [] + async with jobs_lock: + for job_id, job in jobs.items(): + if job["status"] in (JobStatus.COMPLETED, JobStatus.FAILED): + updated = datetime.fromisoformat(job["updated_at"]) + if now - updated > JOB_TTL: + to_delete.append(job_id) + for job_id in to_delete: + del jobs[job_id] + + +# ─── Воркер очереди ─────────────────────────────────────────────────────────── +async def job_worker(worker_id: int): + """Обработчик задач из очереди""" + while True: + job_data = await job_queue.get() + job_id = job_data["job_id"] + kind = job_data.get("kind", "ffmpeg") + try: + if kind == "concat": + await process_concat_job(job_id, job_data) + else: + await process_ffmpeg_job(job_id, job_data) + finally: + job_queue.task_done() + + +async def process_ffmpeg_job(job_id: str, job_data: Dict[str, Any]): + """Асинхронная обработка задачи""" + s3 = get_s3() + + in_bucket = job_data["in_bucket"] + in_key = job_data["in_key"] + out_bucket = job_data["out_bucket"] + out_key = job_data["out_key"] + output_s3 = job_data["output_s3"] + ffmpeg_args = job_data["ffmpeg_args"] + tmp_in = job_data["tmp_in"] + tmp_out = job_data["tmp_out"] + + try: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.PROCESSING + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + # 1. Скачать из MinIO + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.download_file(in_bucket, in_key, str(tmp_in)) + ) + + # 2. Запустить FFmpeg + cmd = ["ffmpeg", "-i", str(tmp_in), *ffmpeg_args, "-y", str(tmp_out)] + proc = await asyncio.create_subprocess_exec( + *cmd, + cwd=str(FILES_DIR), + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE + ) + _, stderr = await proc.communicate() + + if proc.returncode != 0: + error_msg = stderr.decode("utf-8", errors="ignore")[-8000:] if stderr else "Unknown error" + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = error_msg + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + return + + # 3. Загрузить результат в MinIO + async with aiofiles.open(str(tmp_out), "rb") as f: + content = await f.read() + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.put_object(Bucket=out_bucket, Key=out_key, Body=content, ContentType="video/mp4") + ) + + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.COMPLETED + jobs[job_id]["output_s3"] = output_s3 + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + except Exception as e: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = str(e) + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + finally: + try: + tmp_in.unlink(missing_ok=True) + tmp_out.unlink(missing_ok=True) + except: + pass + + +async def process_concat_job(job_id: str, job_data: Dict[str, Any]): + """Склейка нескольких видео из MinIO в одно через ffmpeg concat.""" + s3 = get_s3() + + inputs: List[Dict[str, str]] = job_data["inputs"] # [{"bucket":..,"key":..,"tmp":Path}] + out_bucket: str = job_data["out_bucket"] + out_key: str = job_data["out_key"] + output_s3: str = job_data["output_s3"] + audio_mode: str = job_data["audio"] + reencode: bool = job_data["reencode"] + list_file: Path = job_data["list_file"] + tmp_out: Path = job_data["tmp_out"] + + try: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.PROCESSING + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + # 1. Скачать все входные файлы из MinIO параллельно + loop = asyncio.get_event_loop() + await asyncio.gather(*[ + loop.run_in_executor( + None, + lambda b=item["bucket"], k=item["key"], t=item["tmp"]: s3.download_file(b, k, str(t)) + ) + for item in inputs + ]) + + # 2. Сформировать list.txt для concat demuxer + # Имена пишем относительно cwd=FILES_DIR (где лежат файлы), без полных путей + # для безопасности concat (-safe 0 разрешает абсолютные, но проще относительные). + async with aiofiles.open(str(list_file), "w") as f: + for item in inputs: + # экранируем одинарные кавычки в имени файла + safe = str(item["tmp"]).replace("'", "'\\''") + await f.write(f"file '{safe}'\n") + + # 3. Сформировать команду + async def run_ffmpeg(args: List[str]) -> tuple[int, str]: + proc = await asyncio.create_subprocess_exec( + "ffmpeg", *args, + cwd=str(FILES_DIR), + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, + ) + _, stderr = await proc.communicate() + return proc.returncode, stderr.decode("utf-8", errors="ignore") if stderr else "" + + async def attempt(cmd_args: List[str]) -> tuple[int, str]: + return await run_ffmpeg(cmd_args) + + rc = -1 + stderr_text = "" + + if audio_mode == "first-only": + # Нужен filter_complex: video concat по всем, audio только из первого. + # Этот режим всегда требует перекодировки. + n = len(inputs) + cmd: List[str] = [] + for item in inputs: + cmd += ["-i", str(item["tmp"])] + v_chain = "".join(f"[{i}:v:0]" for i in range(n)) + f"concat=n={n}:v=1:a=0[outv]" + cmd += [ + "-filter_complex", v_chain, + "-map", "[outv]", + "-map", "0:a:0?", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-c:a", "aac", "-b:a", "128k", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + rc, stderr_text = await attempt(cmd) + + else: + # keep / mute → пробуем concat demuxer без перекодировки (самый быстрый) + base_cmd = ["-f", "concat", "-safe", "0", "-i", str(list_file)] + if audio_mode == "mute": + copy_cmd = base_cmd + ["-c:v", "copy", "-an", "-movflags", "+faststart", "-y", str(tmp_out)] + else: # keep + copy_cmd = base_cmd + ["-c", "copy", "-movflags", "+faststart", "-y", str(tmp_out)] + + if not reencode: + rc, stderr_text = await attempt(copy_cmd) + + # Фолбэк на перекодировку, если кодеки/частоты не совпадают + if reencode or rc != 0: + if reencode and rc == 0: + pass # already done + else: + n = len(inputs) + cmd: List[str] = [] + for item in inputs: + cmd += ["-i", str(item["tmp"])] + if audio_mode == "mute": + v_chain = "".join(f"[{i}:v:0]" for i in range(n)) + f"concat=n={n}:v=1:a=0[outv]" + cmd += [ + "-filter_complex", v_chain, + "-map", "[outv]", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-an", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + else: + # keep: если у одного из клипов нет аудио — фолбэк может упасть. + # Делаем концат и видео, и аудио; на нет-аудио клипе будет ошибка, + # пользователь увидит её в job.error. + v_chain = "".join(f"[{i}:v:0][{i}:a:0]" for i in range(n)) + f"concat=n={n}:v=1:a=1[outv][outa]" + cmd += [ + "-filter_complex", v_chain, + "-map", "[outv]", "-map", "[outa]", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-c:a", "aac", "-b:a", "128k", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + rc, stderr_text = await attempt(cmd) + + if rc != 0: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = stderr_text[-8000:] if stderr_text else "Unknown error" + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + return + + # 4. Залить результат в MinIO + async with aiofiles.open(str(tmp_out), "rb") as f: + content = await f.read() + await loop.run_in_executor( + None, + lambda: s3.put_object(Bucket=out_bucket, Key=out_key, Body=content, ContentType="video/mp4") + ) + + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.COMPLETED + jobs[job_id]["output_s3"] = output_s3 + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + except Exception as e: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = str(e) + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + finally: + try: + for item in inputs: + item["tmp"].unlink(missing_ok=True) + list_file.unlink(missing_ok=True) + tmp_out.unlink(missing_ok=True) + except: + pass + + +# ─── Запуск воркеров при старте ─────────────────────────────────────────────── +@app.on_event("startup") +async def startup_event(): + """Запуск воркеров очереди""" + for i in range(NUM_WORKERS): + asyncio.create_task(job_worker(i)) + + +# ─── POST /run-s3 ───────────────────────────────────────────────────────────── +@app.post("/run-s3") +async def run_ffmpeg_s3(req: FfmpegS3Request): + """Создаёт задачу и добавляет в очередь, сразу возвращает job_id""" + tmp_id = req.job_id or str(uuid.uuid4()) + + try: + in_bucket, in_key = parse_s3_uri(req.input_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + if req.output_s3: + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + else: + folder = "/".join(in_key.split("/")[:-1]) + ext = in_key.rsplit(".", 1)[-1] if "." in in_key else "mp4" + out_key = f"{folder}/{tmp_id}_processed.{ext}" if folder else f"{tmp_id}_processed.{ext}" + out_bucket = in_bucket + + tmp_in = FILES_DIR / f"_in_{tmp_id}.{in_key.rsplit('.',1)[-1] if '.' in in_key else 'mp4'}" + tmp_out = FILES_DIR / f"_out_{tmp_id}.mp4" + output_s3 = f"s3://{out_bucket}/{out_key}" + now = datetime.utcnow().isoformat() + + async with jobs_lock: + jobs[tmp_id] = { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "created_at": now, + "updated_at": now, + "input_s3": req.input_s3, + "output_s3": output_s3, + "error": None, + "progress": None, + } + + # Добавляем в очередь + await job_queue.put({ + "kind": "ffmpeg", + "job_id": tmp_id, + "in_bucket": in_bucket, + "in_key": in_key, + "out_bucket": out_bucket, + "out_key": out_key, + "output_s3": output_s3, + "ffmpeg_args": req.ffmpeg_args, + "tmp_in": tmp_in, + "tmp_out": tmp_out, + }) + + await cleanup_old_jobs() + + return { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "status_url": f"/status/{tmp_id}", + "queue_position": job_queue.qsize(), + } + + +# ─── POST /concat-s3 ────────────────────────────────────────────────────────── +@app.post("/concat-s3") +async def concat_s3(req: ConcatS3Request): + """Склеивает несколько видео из MinIO в одно. Возвращает job_id и status_url.""" + if len(req.inputs_s3) < 2: + raise HTTPException(status_code=400, detail="inputs_s3 must contain at least 2 items") + if len(req.inputs_s3) > 20: + raise HTTPException(status_code=400, detail="inputs_s3 too long (max 20)") + + tmp_id = req.job_id or str(uuid.uuid4()) + + inputs: List[Dict[str, Any]] = [] + for idx, uri in enumerate(req.inputs_s3): + try: + b, k = parse_s3_uri(uri) + except ValueError as e: + raise HTTPException(status_code=400, detail=f"inputs_s3[{idx}]: {e}") + ext = k.rsplit(".", 1)[-1] if "." in k else "mp4" + inputs.append({ + "bucket": b, + "key": k, + "tmp": FILES_DIR / f"_concat_{tmp_id}_{idx}.{ext}", + }) + + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + list_file = FILES_DIR / f"_concat_{tmp_id}.txt" + tmp_out = FILES_DIR / f"_concat_out_{tmp_id}.mp4" + output_s3 = f"s3://{out_bucket}/{out_key}" + now = datetime.utcnow().isoformat() + + async with jobs_lock: + jobs[tmp_id] = { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "created_at": now, + "updated_at": now, + "input_s3": ",".join(req.inputs_s3), + "output_s3": output_s3, + "error": None, + "progress": None, + } + + await job_queue.put({ + "kind": "concat", + "job_id": tmp_id, + "inputs": inputs, + "out_bucket": out_bucket, + "out_key": out_key, + "output_s3": output_s3, + "audio": req.audio, + "reencode": req.reencode, + "list_file": list_file, + "tmp_out": tmp_out, + }) + + await cleanup_old_jobs() + + return { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "status_url": f"/status/{tmp_id}", + "queue_position": job_queue.qsize(), + } + + +# ─── GET /status/{job_id} ───────────────────────────────────────────────────── +@app.get("/status/{job_id}", response_model=JobInfo) +async def get_job_status(job_id: str): + """Получить статус задачи""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + job = jobs[job_id].copy() + return JobInfo(**job) + + +# ─── GET /status ────────────────────────────────────────────────────────────── +@app.get("/status") +async def list_statuses(): + """Список всех задач""" + async with jobs_lock: + return [ + { + "job_id": j["job_id"], + "status": j["status"], + "created_at": j["created_at"], + "updated_at": j["updated_at"], + } + for j in jobs.values() + ] + + +# ─── DELETE /jobs/{job_id} ──────────────────────────────────────────────────── +@app.delete("/jobs/{job_id}") +async def delete_job(job_id: str): + """Удалить задачу""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + del jobs[job_id] + return {"ok": True, "message": "Job deleted"} + + +# ─── Health check ───────────────────────────────────────────────────────────── +@app.get("/health") +async def health_check(): + return { + "status": "ok", + "jobs_count": len(jobs), + "queue_size": job_queue.qsize(), + "workers": NUM_WORKERS, + } diff --git a/ffmpeg-api/app.py.bak.1776865610 b/ffmpeg-api/app.py.bak.1776865610 new file mode 100644 index 0000000..d8cfed1 --- /dev/null +++ b/ffmpeg-api/app.py.bak.1776865610 @@ -0,0 +1,590 @@ +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from typing import Optional, Dict, Any, List, Literal +import subprocess +import os +import uuid +from pathlib import Path +from datetime import datetime, timedelta +from enum import Enum +import asyncio +import aiofiles + +import boto3 +from botocore.client import Config + +app = FastAPI() + +FILES_DIR = Path("/files") + +# ─── S3 / MinIO ─────────────────────────────────────────────────────────────── +S3_ENDPOINT = os.getenv("S3_ENDPOINT", "http://minio:9000") +S3_ACCESS = os.getenv("S3_ACCESS_KEY", "UN0-admin") +S3_SECRET = os.getenv("S3_SECRET_KEY", "RAygtZHqGN49qKn") +S3_REGION = os.getenv("S3_REGION", "us-east-1") + +def get_s3(): + return boto3.client( + "s3", + endpoint_url=S3_ENDPOINT, + aws_access_key_id=S3_ACCESS, + aws_secret_access_key=S3_SECRET, + region_name=S3_REGION, + config=Config(signature_version="s3v4"), + ) + +def parse_s3_uri(uri: str) -> tuple[str, str]: + if not uri.startswith("s3://"): + raise ValueError(f"Not an s3:// URI: {uri}") + parts = uri[5:].split("/", 1) + if len(parts) != 2: + raise ValueError(f"Bad s3 URI: {uri}") + return parts[0], parts[1] + + +# ─── Модели ─────────────────────────────────────────────────────────────────── +class JobStatus(str, Enum): + WAITING = "pending" # Ждёт начала обработки (pending для обратной совместимости) + PROCESSING = "processing" + COMPLETED = "completed" + FAILED = "failed" + +class JobInfo(BaseModel): + job_id: str + status: JobStatus + created_at: str + updated_at: str + input_s3: Optional[str] = None + output_s3: Optional[str] = None + error: Optional[str] = None + progress: Optional[int] = None + +class FfmpegS3Request(BaseModel): + input_s3: str + ffmpeg_args: list[str] + output_s3: str | None = None + job_id: str | None = None + +class ConcatS3Request(BaseModel): + inputs_s3: List[str] + output_s3: str + audio: Literal["keep", "mute", "first-only"] = "keep" + reencode: bool = False + job_id: Optional[str] = None + + +# ─── Хранилище задач и очередь ──────────────────────────────────────────────── +jobs: Dict[str, Dict[str, Any]] = {} +job_queue: asyncio.Queue = asyncio.Queue() +JOB_TTL = timedelta(hours=1) +jobs_lock = asyncio.Lock() +NUM_WORKERS = 4 + + +# ─── Очистка старых задач ───────────────────────────────────────────────────── +async def cleanup_old_jobs(): + now = datetime.utcnow() + to_delete = [] + async with jobs_lock: + for job_id, job in jobs.items(): + if job["status"] in (JobStatus.COMPLETED, JobStatus.FAILED): + updated = datetime.fromisoformat(job["updated_at"]) + if now - updated > JOB_TTL: + to_delete.append(job_id) + for job_id in to_delete: + del jobs[job_id] + + +# ─── Воркер очереди ─────────────────────────────────────────────────────────── +async def job_worker(worker_id: int): + """Обработчик задач из очереди""" + while True: + job_data = await job_queue.get() + job_id = job_data["job_id"] + kind = job_data.get("kind", "ffmpeg") + try: + if kind == "concat": + await process_concat_job(job_id, job_data) + else: + await process_ffmpeg_job(job_id, job_data) + finally: + job_queue.task_done() + + +async def process_ffmpeg_job(job_id: str, job_data: Dict[str, Any]): + """Асинхронная обработка задачи""" + s3 = get_s3() + + in_bucket = job_data["in_bucket"] + in_key = job_data["in_key"] + out_bucket = job_data["out_bucket"] + out_key = job_data["out_key"] + output_s3 = job_data["output_s3"] + ffmpeg_args = job_data["ffmpeg_args"] + tmp_in = job_data["tmp_in"] + tmp_out = job_data["tmp_out"] + + try: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.PROCESSING + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + # 1. Скачать из MinIO + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.download_file(in_bucket, in_key, str(tmp_in)) + ) + + # 2. Запустить FFmpeg + cmd = ["ffmpeg", "-i", str(tmp_in), *ffmpeg_args, "-y", str(tmp_out)] + proc = await asyncio.create_subprocess_exec( + *cmd, + cwd=str(FILES_DIR), + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE + ) + _, stderr = await proc.communicate() + + if proc.returncode != 0: + error_msg = stderr.decode("utf-8", errors="ignore")[-8000:] if stderr else "Unknown error" + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = error_msg + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + return + + # 3. Загрузить результат в MinIO + async with aiofiles.open(str(tmp_out), "rb") as f: + content = await f.read() + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.put_object(Bucket=out_bucket, Key=out_key, Body=content, ContentType="video/mp4") + ) + + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.COMPLETED + jobs[job_id]["output_s3"] = output_s3 + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + except Exception as e: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = str(e) + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + finally: + try: + tmp_in.unlink(missing_ok=True) + tmp_out.unlink(missing_ok=True) + except: + pass + + + +async def _probe_video_size(path: Path) -> tuple[int, int]: + """Return (width, height) using ffprobe; (0,0) on failure.""" + proc = await asyncio.create_subprocess_exec( + "ffprobe", "-v", "error", "-select_streams", "v:0", + "-show_entries", "stream=width,height", "-of", "csv=p=0:s=x", str(path), + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.DEVNULL, + ) + out, _ = await proc.communicate() + try: + w, h = out.decode().strip().split("x") + return int(w), int(h) + except Exception: + return 0, 0 + +async def _probe_has_audio(path: Path) -> bool: + proc = await asyncio.create_subprocess_exec( + "ffprobe", "-v", "error", "-select_streams", "a:0", + "-show_entries", "stream=codec_type", "-of", "csv=p=0", str(path), + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.DEVNULL, + ) + out, _ = await proc.communicate() + return b"audio" in out + + +async def process_concat_job(job_id: str, job_data: Dict[str, Any]): + """Склейка нескольких видео из MinIO в одно через ffmpeg concat.""" + s3 = get_s3() + + inputs: List[Dict[str, str]] = job_data["inputs"] # [{"bucket":..,"key":..,"tmp":Path}] + out_bucket: str = job_data["out_bucket"] + out_key: str = job_data["out_key"] + output_s3: str = job_data["output_s3"] + audio_mode: str = job_data["audio"] + reencode: bool = job_data["reencode"] + list_file: Path = job_data["list_file"] + tmp_out: Path = job_data["tmp_out"] + + try: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.PROCESSING + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + # 1. Скачать все входные файлы из MinIO параллельно + loop = asyncio.get_event_loop() + await asyncio.gather(*[ + loop.run_in_executor( + None, + lambda b=item["bucket"], k=item["key"], t=item["tmp"]: s3.download_file(b, k, str(t)) + ) + for item in inputs + ]) + + # 2. Сформировать list.txt для concat demuxer + # Имена пишем относительно cwd=FILES_DIR (где лежат файлы), без полных путей + # для безопасности concat (-safe 0 разрешает абсолютные, но проще относительные). + async with aiofiles.open(str(list_file), "w") as f: + for item in inputs: + # экранируем одинарные кавычки в имени файла + safe = str(item["tmp"]).replace("'", "'\\''") + await f.write(f"file '{safe}'\n") + + # 3. Сформировать команду + async def run_ffmpeg(args: List[str]) -> tuple[int, str]: + proc = await asyncio.create_subprocess_exec( + "ffmpeg", *args, + cwd=str(FILES_DIR), + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, + ) + _, stderr = await proc.communicate() + return proc.returncode, stderr.decode("utf-8", errors="ignore") if stderr else "" + + async def attempt(cmd_args: List[str]) -> tuple[int, str]: + return await run_ffmpeg(cmd_args) + + rc = -1 + stderr_text = "" + + if audio_mode == "first-only": + # video concat по всем (с нормализацией), audio только из первого. Всегда reencode. + n = len(inputs) + sizes = await asyncio.gather(*[_probe_video_size(item["tmp"]) for item in inputs]) + tgt_w = max((w for w, _ in sizes if w > 0), default=1280) + tgt_h = max((h for _, h in sizes if h > 0), default=720) + if tgt_w % 2: tgt_w += 1 + if tgt_h % 2: tgt_h += 1 + cmd: List[str] = [] + for item in inputs: + cmd += ["-i", str(item["tmp"])] + norm_filters = [ + f"[{i}:v:0]scale={tgt_w}:{tgt_h}:force_original_aspect_ratio=decrease," + f"pad={tgt_w}:{tgt_h}:(ow-iw)/2:(oh-ih)/2:color=black," + f"setsar=1,fps=30,format=yuv420p[v{i}]" + for i in range(n) + ] + v_chain = "".join(f"[v{i}]" for i in range(n)) + f"concat=n={n}:v=1:a=0[outv]" + filter_complex = ";".join(norm_filters + [v_chain]) + cmd += [ + "-filter_complex", filter_complex, + "-map", "[outv]", + "-map", "0:a:0?", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-c:a", "aac", "-b:a", "128k", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + rc, stderr_text = await attempt(cmd) + + else: + # keep / mute → если разрешено copy, пробуем concat demuxer без перекодировки. + base_cmd = ["-f", "concat", "-safe", "0", "-i", str(list_file)] + if audio_mode == "mute": + copy_cmd = base_cmd + ["-c:v", "copy", "-an", "-movflags", "+faststart", "-y", str(tmp_out)] + else: # keep + copy_cmd = base_cmd + ["-c", "copy", "-movflags", "+faststart", "-y", str(tmp_out)] + + if not reencode: + rc, stderr_text = await attempt(copy_cmd) + + # Перекодировка с нормализацией размера/SAR/fps для разнородных входов. + if reencode or rc != 0: + n = len(inputs) + # Подбираем целевое разрешение = максимум по всем входам (чётное). + sizes = await asyncio.gather(*[_probe_video_size(item["tmp"]) for item in inputs]) + tgt_w = max((w for w, _ in sizes if w > 0), default=1280) + tgt_h = max((h for _, h in sizes if h > 0), default=720) + if tgt_w % 2: tgt_w += 1 + if tgt_h % 2: tgt_h += 1 + + cmd: List[str] = [] + for item in inputs: + cmd += ["-i", str(item["tmp"])] + + # Для keep-режима проверяем наличие аудио в каждом входе; если где-то нет — + # подмешиваем тишину через anullsrc, иначе concat=...:a=1 упадёт. + want_audio = audio_mode == "keep" + has_audio: List[bool] = [] + if want_audio: + has_audio = list(await asyncio.gather(*[_probe_has_audio(item["tmp"]) for item in inputs])) + # Добавляем anullsrc-вход для каждого клипа без аудио. + for missing in (i for i, ok in enumerate(has_audio) if not ok): + cmd += ["-f", "lavfi", "-t", "0.1", "-i", "anullsrc=channel_layout=stereo:sample_rate=44100"] + + norm_filters: List[str] = [] + concat_inputs: List[str] = [] + anull_idx = n # индекс первого anullsrc-входа + for i in range(n): + norm_filters.append( + f"[{i}:v:0]scale={tgt_w}:{tgt_h}:force_original_aspect_ratio=decrease," + f"pad={tgt_w}:{tgt_h}:(ow-iw)/2:(oh-ih)/2:color=black," + f"setsar=1,fps=30,format=yuv420p[v{i}]" + ) + if want_audio: + if has_audio[i]: + norm_filters.append(f"[{i}:a:0]aresample=async=1:first_pts=0[a{i}]") + else: + norm_filters.append(f"[{anull_idx}:a:0]aresample=async=1[a{i}]") + anull_idx += 1 + concat_inputs.append(f"[v{i}][a{i}]") + else: + concat_inputs.append(f"[v{i}]") + + if want_audio: + concat = "".join(concat_inputs) + f"concat=n={n}:v=1:a=1[outv][outa]" + filter_complex = ";".join(norm_filters + [concat]) + cmd += [ + "-filter_complex", filter_complex, + "-map", "[outv]", "-map", "[outa]", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-c:a", "aac", "-b:a", "128k", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + else: + concat = "".join(concat_inputs) + f"concat=n={n}:v=1:a=0[outv]" + filter_complex = ";".join(norm_filters + [concat]) + cmd += [ + "-filter_complex", filter_complex, + "-map", "[outv]", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-an", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + rc, stderr_text = await attempt(cmd) + + if rc != 0: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = stderr_text[-8000:] if stderr_text else "Unknown error" + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + return + + # 4. Залить результат в MinIO + async with aiofiles.open(str(tmp_out), "rb") as f: + content = await f.read() + await loop.run_in_executor( + None, + lambda: s3.put_object(Bucket=out_bucket, Key=out_key, Body=content, ContentType="video/mp4") + ) + + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.COMPLETED + jobs[job_id]["output_s3"] = output_s3 + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + except Exception as e: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = str(e) + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + finally: + try: + for item in inputs: + item["tmp"].unlink(missing_ok=True) + list_file.unlink(missing_ok=True) + tmp_out.unlink(missing_ok=True) + except: + pass + + +# ─── Запуск воркеров при старте ─────────────────────────────────────────────── +@app.on_event("startup") +async def startup_event(): + """Запуск воркеров очереди""" + for i in range(NUM_WORKERS): + asyncio.create_task(job_worker(i)) + + +# ─── POST /run-s3 ───────────────────────────────────────────────────────────── +@app.post("/run-s3") +async def run_ffmpeg_s3(req: FfmpegS3Request): + """Создаёт задачу и добавляет в очередь, сразу возвращает job_id""" + tmp_id = req.job_id or str(uuid.uuid4()) + + try: + in_bucket, in_key = parse_s3_uri(req.input_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + if req.output_s3: + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + else: + folder = "/".join(in_key.split("/")[:-1]) + ext = in_key.rsplit(".", 1)[-1] if "." in in_key else "mp4" + out_key = f"{folder}/{tmp_id}_processed.{ext}" if folder else f"{tmp_id}_processed.{ext}" + out_bucket = in_bucket + + tmp_in = FILES_DIR / f"_in_{tmp_id}.{in_key.rsplit('.',1)[-1] if '.' in in_key else 'mp4'}" + tmp_out = FILES_DIR / f"_out_{tmp_id}.mp4" + output_s3 = f"s3://{out_bucket}/{out_key}" + now = datetime.utcnow().isoformat() + + async with jobs_lock: + jobs[tmp_id] = { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "created_at": now, + "updated_at": now, + "input_s3": req.input_s3, + "output_s3": output_s3, + "error": None, + "progress": None, + } + + # Добавляем в очередь + await job_queue.put({ + "kind": "ffmpeg", + "job_id": tmp_id, + "in_bucket": in_bucket, + "in_key": in_key, + "out_bucket": out_bucket, + "out_key": out_key, + "output_s3": output_s3, + "ffmpeg_args": req.ffmpeg_args, + "tmp_in": tmp_in, + "tmp_out": tmp_out, + }) + + await cleanup_old_jobs() + + return { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "status_url": f"/status/{tmp_id}", + "queue_position": job_queue.qsize(), + } + + +# ─── POST /concat-s3 ────────────────────────────────────────────────────────── +@app.post("/concat-s3") +async def concat_s3(req: ConcatS3Request): + """Склеивает несколько видео из MinIO в одно. Возвращает job_id и status_url.""" + if len(req.inputs_s3) < 2: + raise HTTPException(status_code=400, detail="inputs_s3 must contain at least 2 items") + if len(req.inputs_s3) > 20: + raise HTTPException(status_code=400, detail="inputs_s3 too long (max 20)") + + tmp_id = req.job_id or str(uuid.uuid4()) + + inputs: List[Dict[str, Any]] = [] + for idx, uri in enumerate(req.inputs_s3): + try: + b, k = parse_s3_uri(uri) + except ValueError as e: + raise HTTPException(status_code=400, detail=f"inputs_s3[{idx}]: {e}") + ext = k.rsplit(".", 1)[-1] if "." in k else "mp4" + inputs.append({ + "bucket": b, + "key": k, + "tmp": FILES_DIR / f"_concat_{tmp_id}_{idx}.{ext}", + }) + + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + list_file = FILES_DIR / f"_concat_{tmp_id}.txt" + tmp_out = FILES_DIR / f"_concat_out_{tmp_id}.mp4" + output_s3 = f"s3://{out_bucket}/{out_key}" + now = datetime.utcnow().isoformat() + + async with jobs_lock: + jobs[tmp_id] = { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "created_at": now, + "updated_at": now, + "input_s3": ",".join(req.inputs_s3), + "output_s3": output_s3, + "error": None, + "progress": None, + } + + await job_queue.put({ + "kind": "concat", + "job_id": tmp_id, + "inputs": inputs, + "out_bucket": out_bucket, + "out_key": out_key, + "output_s3": output_s3, + "audio": req.audio, + "reencode": req.reencode, + "list_file": list_file, + "tmp_out": tmp_out, + }) + + await cleanup_old_jobs() + + return { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "status_url": f"/status/{tmp_id}", + "queue_position": job_queue.qsize(), + } + + +# ─── GET /status/{job_id} ───────────────────────────────────────────────────── +@app.get("/status/{job_id}", response_model=JobInfo) +async def get_job_status(job_id: str): + """Получить статус задачи""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + job = jobs[job_id].copy() + return JobInfo(**job) + + +# ─── GET /status ────────────────────────────────────────────────────────────── +@app.get("/status") +async def list_statuses(): + """Список всех задач""" + async with jobs_lock: + return [ + { + "job_id": j["job_id"], + "status": j["status"], + "created_at": j["created_at"], + "updated_at": j["updated_at"], + } + for j in jobs.values() + ] + + +# ─── DELETE /jobs/{job_id} ──────────────────────────────────────────────────── +@app.delete("/jobs/{job_id}") +async def delete_job(job_id: str): + """Удалить задачу""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + del jobs[job_id] + return {"ok": True, "message": "Job deleted"} + + +# ─── Health check ───────────────────────────────────────────────────────────── +@app.get("/health") +async def health_check(): + return { + "status": "ok", + "jobs_count": len(jobs), + "queue_size": job_queue.qsize(), + "workers": NUM_WORKERS, + } diff --git a/ffmpeg-api/app.py.bak.20260422 b/ffmpeg-api/app.py.bak.20260422 new file mode 100644 index 0000000..13156d8 --- /dev/null +++ b/ffmpeg-api/app.py.bak.20260422 @@ -0,0 +1,286 @@ +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from typing import Optional, Dict, Any, List +import subprocess +import os +import uuid +from pathlib import Path +from datetime import datetime, timedelta +from enum import Enum +import asyncio +import aiofiles + +import boto3 +from botocore.client import Config + +app = FastAPI() + +FILES_DIR = Path("/files") + +# ─── S3 / MinIO ─────────────────────────────────────────────────────────────── +S3_ENDPOINT = os.getenv("S3_ENDPOINT", "http://minio:9000") +S3_ACCESS = os.getenv("S3_ACCESS_KEY", "UN0-admin") +S3_SECRET = os.getenv("S3_SECRET_KEY", "RAygtZHqGN49qKn") +S3_REGION = os.getenv("S3_REGION", "us-east-1") + +def get_s3(): + return boto3.client( + "s3", + endpoint_url=S3_ENDPOINT, + aws_access_key_id=S3_ACCESS, + aws_secret_access_key=S3_SECRET, + region_name=S3_REGION, + config=Config(signature_version="s3v4"), + ) + +def parse_s3_uri(uri: str) -> tuple[str, str]: + if not uri.startswith("s3://"): + raise ValueError(f"Not an s3:// URI: {uri}") + parts = uri[5:].split("/", 1) + if len(parts) != 2: + raise ValueError(f"Bad s3 URI: {uri}") + return parts[0], parts[1] + + +# ─── Модели ─────────────────────────────────────────────────────────────────── +class JobStatus(str, Enum): + WAITING = "pending" # Ждёт начала обработки (pending для обратной совместимости) + PROCESSING = "processing" + COMPLETED = "completed" + FAILED = "failed" + +class JobInfo(BaseModel): + job_id: str + status: JobStatus + created_at: str + updated_at: str + input_s3: Optional[str] = None + output_s3: Optional[str] = None + error: Optional[str] = None + progress: Optional[int] = None + +class FfmpegS3Request(BaseModel): + input_s3: str + ffmpeg_args: list[str] + output_s3: str | None = None + job_id: str | None = None + + +# ─── Хранилище задач и очередь ──────────────────────────────────────────────── +jobs: Dict[str, Dict[str, Any]] = {} +job_queue: asyncio.Queue = asyncio.Queue() +JOB_TTL = timedelta(hours=1) +jobs_lock = asyncio.Lock() +NUM_WORKERS = 4 + + +# ─── Очистка старых задач ───────────────────────────────────────────────────── +async def cleanup_old_jobs(): + now = datetime.utcnow() + to_delete = [] + async with jobs_lock: + for job_id, job in jobs.items(): + if job["status"] in (JobStatus.COMPLETED, JobStatus.FAILED): + updated = datetime.fromisoformat(job["updated_at"]) + if now - updated > JOB_TTL: + to_delete.append(job_id) + for job_id in to_delete: + del jobs[job_id] + + +# ─── Воркер очереди ─────────────────────────────────────────────────────────── +async def job_worker(worker_id: int): + """Обработчик задач из очереди""" + while True: + job_data = await job_queue.get() + job_id = job_data["job_id"] + try: + await process_ffmpeg_job(job_id, job_data) + finally: + job_queue.task_done() + + +async def process_ffmpeg_job(job_id: str, job_data: Dict[str, Any]): + """Асинхронная обработка задачи""" + s3 = get_s3() + + in_bucket = job_data["in_bucket"] + in_key = job_data["in_key"] + out_bucket = job_data["out_bucket"] + out_key = job_data["out_key"] + output_s3 = job_data["output_s3"] + ffmpeg_args = job_data["ffmpeg_args"] + tmp_in = job_data["tmp_in"] + tmp_out = job_data["tmp_out"] + + try: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.PROCESSING + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + # 1. Скачать из MinIO + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.download_file(in_bucket, in_key, str(tmp_in)) + ) + + # 2. Запустить FFmpeg + cmd = ["ffmpeg", "-i", str(tmp_in), *ffmpeg_args, "-y", str(tmp_out)] + proc = await asyncio.create_subprocess_exec( + *cmd, + cwd=str(FILES_DIR), + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE + ) + _, stderr = await proc.communicate() + + if proc.returncode != 0: + error_msg = stderr.decode("utf-8", errors="ignore")[-8000:] if stderr else "Unknown error" + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = error_msg + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + return + + # 3. Загрузить результат в MinIO + async with aiofiles.open(str(tmp_out), "rb") as f: + content = await f.read() + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.put_object(Bucket=out_bucket, Key=out_key, Body=content, ContentType="video/mp4") + ) + + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.COMPLETED + jobs[job_id]["output_s3"] = output_s3 + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + except Exception as e: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = str(e) + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + finally: + try: + tmp_in.unlink(missing_ok=True) + tmp_out.unlink(missing_ok=True) + except: + pass + + +# ─── Запуск воркеров при старте ─────────────────────────────────────────────── +@app.on_event("startup") +async def startup_event(): + """Запуск воркеров очереди""" + for i in range(NUM_WORKERS): + asyncio.create_task(job_worker(i)) + + +# ─── POST /run-s3 ───────────────────────────────────────────────────────────── +@app.post("/run-s3") +async def run_ffmpeg_s3(req: FfmpegS3Request): + """Создаёт задачу и добавляет в очередь, сразу возвращает job_id""" + tmp_id = req.job_id or str(uuid.uuid4()) + + try: + in_bucket, in_key = parse_s3_uri(req.input_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + if req.output_s3: + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + else: + folder = "/".join(in_key.split("/")[:-1]) + ext = in_key.rsplit(".", 1)[-1] if "." in in_key else "mp4" + out_key = f"{folder}/{tmp_id}_processed.{ext}" if folder else f"{tmp_id}_processed.{ext}" + out_bucket = in_bucket + + tmp_in = FILES_DIR / f"_in_{tmp_id}.{in_key.rsplit('.',1)[-1] if '.' in in_key else 'mp4'}" + tmp_out = FILES_DIR / f"_out_{tmp_id}.mp4" + output_s3 = f"s3://{out_bucket}/{out_key}" + now = datetime.utcnow().isoformat() + + async with jobs_lock: + jobs[tmp_id] = { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "created_at": now, + "updated_at": now, + "input_s3": req.input_s3, + "output_s3": output_s3, + "error": None, + "progress": None, + } + + # Добавляем в очередь + await job_queue.put({ + "job_id": tmp_id, + "in_bucket": in_bucket, + "in_key": in_key, + "out_bucket": out_bucket, + "out_key": out_key, + "output_s3": output_s3, + "ffmpeg_args": req.ffmpeg_args, + "tmp_in": tmp_in, + "tmp_out": tmp_out, + }) + + await cleanup_old_jobs() + + return { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "status_url": f"/status/{tmp_id}", + "queue_position": job_queue.qsize(), + } + + +# ─── GET /status/{job_id} ───────────────────────────────────────────────────── +@app.get("/status/{job_id}", response_model=JobInfo) +async def get_job_status(job_id: str): + """Получить статус задачи""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + job = jobs[job_id].copy() + return JobInfo(**job) + + +# ─── GET /status ────────────────────────────────────────────────────────────── +@app.get("/status") +async def list_statuses(): + """Список всех задач""" + async with jobs_lock: + return [ + { + "job_id": j["job_id"], + "status": j["status"], + "created_at": j["created_at"], + "updated_at": j["updated_at"], + } + for j in jobs.values() + ] + + +# ─── DELETE /jobs/{job_id} ──────────────────────────────────────────────────── +@app.delete("/jobs/{job_id}") +async def delete_job(job_id: str): + """Удалить задачу""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + del jobs[job_id] + return {"ok": True, "message": "Job deleted"} + + +# ─── Health check ───────────────────────────────────────────────────────────── +@app.get("/health") +async def health_check(): + return { + "status": "ok", + "jobs_count": len(jobs), + "queue_size": job_queue.qsize(), + "workers": NUM_WORKERS, + } diff --git a/ffmpeg-api/app.py.bak.20260422_160827 b/ffmpeg-api/app.py.bak.20260422_160827 new file mode 100644 index 0000000..a2b867e --- /dev/null +++ b/ffmpeg-api/app.py.bak.20260422_160827 @@ -0,0 +1,635 @@ +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from typing import Optional, Dict, Any, List, Literal +import subprocess +import os +import uuid +from pathlib import Path +from datetime import datetime, timedelta +from enum import Enum +import asyncio +import time +import aiofiles + +import boto3 +from botocore.client import Config + +app = FastAPI() + +FILES_DIR = Path("/files") + +# ─── S3 / MinIO ─────────────────────────────────────────────────────────────── +S3_ENDPOINT = os.getenv("S3_ENDPOINT", "http://minio:9000") +S3_ACCESS = os.getenv("S3_ACCESS_KEY", "UN0-admin") +S3_SECRET = os.getenv("S3_SECRET_KEY", "RAygtZHqGN49qKn") +S3_REGION = os.getenv("S3_REGION", "us-east-1") + +def get_s3(): + return boto3.client( + "s3", + endpoint_url=S3_ENDPOINT, + aws_access_key_id=S3_ACCESS, + aws_secret_access_key=S3_SECRET, + region_name=S3_REGION, + config=Config(signature_version="s3v4"), + ) + +def parse_s3_uri(uri: str) -> tuple[str, str]: + if not uri.startswith("s3://"): + raise ValueError(f"Not an s3:// URI: {uri}") + parts = uri[5:].split("/", 1) + if len(parts) != 2: + raise ValueError(f"Bad s3 URI: {uri}") + return parts[0], parts[1] + + +# ─── Модели ─────────────────────────────────────────────────────────────────── +class JobStatus(str, Enum): + WAITING = "pending" # Ждёт начала обработки (pending для обратной совместимости) + PROCESSING = "processing" + COMPLETED = "completed" + FAILED = "failed" + +class JobInfo(BaseModel): + job_id: str + status: JobStatus + created_at: str + updated_at: str + input_s3: Optional[str] = None + output_s3: Optional[str] = None + error: Optional[str] = None + progress: Optional[int] = None + +class FfmpegS3Request(BaseModel): + input_s3: str + ffmpeg_args: list[str] + output_s3: str | None = None + job_id: str | None = None + +class ConcatS3Request(BaseModel): + inputs_s3: List[str] + output_s3: str + audio: Literal["keep", "mute", "first-only"] = "keep" + reencode: bool = False + job_id: Optional[str] = None + + +# ─── Хранилище задач и очередь ──────────────────────────────────────────────── +jobs: Dict[str, Dict[str, Any]] = {} +job_queue: asyncio.Queue = asyncio.Queue() +JOB_TTL = timedelta(hours=1) +jobs_lock = asyncio.Lock() +NUM_WORKERS = 4 + + +# ─── Очистка старых задач ───────────────────────────────────────────────────── +async def cleanup_old_jobs(): + now = datetime.utcnow() + to_delete = [] + async with jobs_lock: + for job_id, job in jobs.items(): + if job["status"] in (JobStatus.COMPLETED, JobStatus.FAILED): + updated = datetime.fromisoformat(job["updated_at"]) + if now - updated > JOB_TTL: + to_delete.append(job_id) + for job_id in to_delete: + del jobs[job_id] + + +# ─── Воркер очереди ─────────────────────────────────────────────────────────── +async def job_worker(worker_id: int): + """Обработчик задач из очереди""" + while True: + job_data = await job_queue.get() + job_id = job_data["job_id"] + kind = job_data.get("kind", "ffmpeg") + try: + if kind == "concat": + await process_concat_job(job_id, job_data) + else: + await process_ffmpeg_job(job_id, job_data) + finally: + job_queue.task_done() + + +async def process_ffmpeg_job(job_id: str, job_data: Dict[str, Any]): + """Асинхронная обработка задачи""" + s3 = get_s3() + + in_bucket = job_data["in_bucket"] + in_key = job_data["in_key"] + out_bucket = job_data["out_bucket"] + out_key = job_data["out_key"] + output_s3 = job_data["output_s3"] + ffmpeg_args = job_data["ffmpeg_args"] + tmp_in = job_data["tmp_in"] + tmp_out = job_data["tmp_out"] + + try: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.PROCESSING + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + # 1. Скачать из MinIO + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.download_file(in_bucket, in_key, str(tmp_in)) + ) + + # 2. Запустить FFmpeg + cmd = ["ffmpeg", "-i", str(tmp_in), *ffmpeg_args, "-y", str(tmp_out)] + proc = await asyncio.create_subprocess_exec( + *cmd, + cwd=str(FILES_DIR), + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE + ) + _, stderr = await proc.communicate() + + if proc.returncode != 0: + error_msg = stderr.decode("utf-8", errors="ignore")[-8000:] if stderr else "Unknown error" + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = error_msg + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + return + + # 3. Загрузить результат в MinIO + async with aiofiles.open(str(tmp_out), "rb") as f: + content = await f.read() + await asyncio.get_event_loop().run_in_executor( + None, lambda: s3.put_object(Bucket=out_bucket, Key=out_key, Body=content, ContentType="video/mp4") + ) + + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.COMPLETED + jobs[job_id]["output_s3"] = output_s3 + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + except Exception as e: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = str(e) + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + finally: + try: + tmp_in.unlink(missing_ok=True) + tmp_out.unlink(missing_ok=True) + except: + pass + + + +async def _probe_video_size(path: Path) -> tuple[int, int]: + """Return (width, height) using ffprobe; (0,0) on failure.""" + proc = await asyncio.create_subprocess_exec( + "ffprobe", "-v", "error", "-select_streams", "v:0", + "-show_entries", "stream=width,height", "-of", "csv=p=0:s=x", str(path), + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.DEVNULL, + ) + out, _ = await proc.communicate() + try: + w, h = out.decode().strip().split("x") + return int(w), int(h) + except Exception: + return 0, 0 + +async def _probe_main_video_index(path: Path) -> int: + """Index of the first video stream that is NOT an attached_pic/cover art.""" + proc = await asyncio.create_subprocess_exec( + "ffprobe", "-v", "error", "-select_streams", "v", + "-show_entries", "stream=index,disposition", + "-of", "default=nw=1:nk=0", str(path), + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.DEVNULL, + ) + out, _ = await proc.communicate() + text = out.decode("utf-8", errors="ignore").splitlines() + streams: List[dict] = [] + cur: dict = {} + for line in text: + if "=" not in line: + continue + k, v = line.split("=", 1) + if k == "index": + if cur: + streams.append(cur) + cur = {"index": int(v)} + else: + cur[k] = v + if cur: + streams.append(cur) + main = [s for s in streams if s.get("disposition:attached_pic", "0") != "1"] + if not main: + return 0 + # ffprobe video-only stream order is the per-type index; first non-attached_pic is 0. + return next((i for i, s in enumerate(streams) if s.get("disposition:attached_pic", "0") != "1"), 0) + + +async def _probe_has_audio(path: Path) -> bool: + proc = await asyncio.create_subprocess_exec( + "ffprobe", "-v", "error", "-select_streams", "a:0", + "-show_entries", "stream=codec_type", "-of", "csv=p=0", str(path), + stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.DEVNULL, + ) + out, _ = await proc.communicate() + return b"audio" in out + + +async def process_concat_job(job_id: str, job_data: Dict[str, Any]): + """Склейка нескольких видео из MinIO в одно через ffmpeg concat.""" + s3 = get_s3() + + inputs: List[Dict[str, str]] = job_data["inputs"] # [{"bucket":..,"key":..,"tmp":Path}] + out_bucket: str = job_data["out_bucket"] + out_key: str = job_data["out_key"] + output_s3: str = job_data["output_s3"] + audio_mode: str = job_data["audio"] + reencode: bool = job_data["reencode"] + list_file: Path = job_data["list_file"] + tmp_out: Path = job_data["tmp_out"] + + try: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.PROCESSING + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + # 1. Скачать все входные файлы из MinIO параллельно + loop = asyncio.get_event_loop() + await asyncio.gather(*[ + loop.run_in_executor( + None, + lambda b=item["bucket"], k=item["key"], t=item["tmp"]: s3.download_file(b, k, str(t)) + ) + for item in inputs + ]) + + # 2. Сформировать list.txt для concat demuxer + # Имена пишем относительно cwd=FILES_DIR (где лежат файлы), без полных путей + # для безопасности concat (-safe 0 разрешает абсолютные, но проще относительные). + async with aiofiles.open(str(list_file), "w") as f: + for item in inputs: + # экранируем одинарные кавычки в имени файла + safe = str(item["tmp"]).replace("'", "'\\''") + await f.write(f"file '{safe}'\n") + + # 3. Сформировать команду + async def run_ffmpeg(args: List[str]) -> tuple[int, str]: + proc = await asyncio.create_subprocess_exec( + "ffmpeg", *args, + cwd=str(FILES_DIR), + stdout=asyncio.subprocess.DEVNULL, + stderr=asyncio.subprocess.PIPE, + ) + _, stderr = await proc.communicate() + return proc.returncode, stderr.decode("utf-8", errors="ignore") if stderr else "" + + async def attempt(cmd_args: List[str]) -> tuple[int, str]: + return await run_ffmpeg(cmd_args) + + rc = -1 + stderr_text = "" + + if audio_mode == "first-only": + # video concat по всем (с нормализацией), audio только из первого. Всегда reencode. + n = len(inputs) + sizes = await asyncio.gather(*[_probe_video_size(item["tmp"]) for item in inputs]) + vi = await asyncio.gather(*[_probe_main_video_index(item["tmp"]) for item in inputs]) + tgt_w = max((w for w, _ in sizes if w > 0), default=1280) + tgt_h = max((h for _, h in sizes if h > 0), default=720) + if tgt_w % 2: tgt_w += 1 + if tgt_h % 2: tgt_h += 1 + cmd: List[str] = [] + for item in inputs: + cmd += ["-i", str(item["tmp"])] + norm_filters = [ + f"[{i}:v:{vi[i]}]scale={tgt_w}:{tgt_h}:force_original_aspect_ratio=decrease," + f"pad={tgt_w}:{tgt_h}:(ow-iw)/2:(oh-ih)/2:color=black," + f"setsar=1,fps=30,format=yuv420p[v{i}]" + for i in range(n) + ] + v_chain = "".join(f"[v{i}]" for i in range(n)) + f"concat=n={n}:v=1:a=0[outv]" + filter_complex = ";".join(norm_filters + [v_chain]) + cmd += [ + "-filter_complex", filter_complex, + "-map", "[outv]", + "-map", "0:a:0?", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-c:a", "aac", "-b:a", "128k", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + rc, stderr_text = await attempt(cmd) + + else: + # keep / mute → если разрешено copy, пробуем concat demuxer без перекодировки. + base_cmd = ["-f", "concat", "-safe", "0", "-i", str(list_file)] + if audio_mode == "mute": + copy_cmd = base_cmd + ["-c:v", "copy", "-an", "-movflags", "+faststart", "-y", str(tmp_out)] + else: # keep + copy_cmd = base_cmd + ["-c", "copy", "-movflags", "+faststart", "-y", str(tmp_out)] + + if not reencode: + rc, stderr_text = await attempt(copy_cmd) + + # Перекодировка с нормализацией размера/SAR/fps для разнородных входов. + if reencode or rc != 0: + n = len(inputs) + # Подбираем целевое разрешение = максимум по всем входам (чётное). + sizes = await asyncio.gather(*[_probe_video_size(item["tmp"]) for item in inputs]) + vi = await asyncio.gather(*[_probe_main_video_index(item["tmp"]) for item in inputs]) + tgt_w = max((w for w, _ in sizes if w > 0), default=1280) + tgt_h = max((h for _, h in sizes if h > 0), default=720) + if tgt_w % 2: tgt_w += 1 + if tgt_h % 2: tgt_h += 1 + + cmd: List[str] = [] + for item in inputs: + cmd += ["-i", str(item["tmp"])] + + # Для keep-режима проверяем наличие аудио в каждом входе; если где-то нет — + # подмешиваем тишину через anullsrc, иначе concat=...:a=1 упадёт. + want_audio = audio_mode == "keep" + has_audio: List[bool] = [] + if want_audio: + has_audio = list(await asyncio.gather(*[_probe_has_audio(item["tmp"]) for item in inputs])) + # Добавляем anullsrc-вход для каждого клипа без аудио. + for missing in (i for i, ok in enumerate(has_audio) if not ok): + cmd += ["-f", "lavfi", "-t", "0.1", "-i", "anullsrc=channel_layout=stereo:sample_rate=44100"] + + norm_filters: List[str] = [] + concat_inputs: List[str] = [] + anull_idx = n # индекс первого anullsrc-входа + for i in range(n): + norm_filters.append( + f"[{i}:v:{vi[i]}]scale={tgt_w}:{tgt_h}:force_original_aspect_ratio=decrease," + f"pad={tgt_w}:{tgt_h}:(ow-iw)/2:(oh-ih)/2:color=black," + f"setsar=1,fps=30,format=yuv420p[v{i}]" + ) + if want_audio: + if has_audio[i]: + norm_filters.append(f"[{i}:a:0]aresample=async=1:first_pts=0[a{i}]") + else: + norm_filters.append(f"[{anull_idx}:a:0]aresample=async=1[a{i}]") + anull_idx += 1 + concat_inputs.append(f"[v{i}][a{i}]") + else: + concat_inputs.append(f"[v{i}]") + + if want_audio: + concat = "".join(concat_inputs) + f"concat=n={n}:v=1:a=1[outv][outa]" + filter_complex = ";".join(norm_filters + [concat]) + cmd += [ + "-filter_complex", filter_complex, + "-map", "[outv]", "-map", "[outa]", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-c:a", "aac", "-b:a", "128k", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + else: + concat = "".join(concat_inputs) + f"concat=n={n}:v=1:a=0[outv]" + filter_complex = ";".join(norm_filters + [concat]) + cmd += [ + "-filter_complex", filter_complex, + "-map", "[outv]", + "-c:v", "libx264", "-preset", "veryfast", "-crf", "23", + "-an", + "-movflags", "+faststart", + "-y", str(tmp_out), + ] + rc, stderr_text = await attempt(cmd) + + if rc != 0: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = stderr_text[-8000:] if stderr_text else "Unknown error" + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + return + + # 4. Залить результат в MinIO + async with aiofiles.open(str(tmp_out), "rb") as f: + content = await f.read() + await loop.run_in_executor( + None, + lambda: s3.put_object(Bucket=out_bucket, Key=out_key, Body=content, ContentType="video/mp4") + ) + + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.COMPLETED + jobs[job_id]["output_s3"] = output_s3 + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + except Exception as e: + async with jobs_lock: + jobs[job_id]["status"] = JobStatus.FAILED + jobs[job_id]["error"] = str(e) + jobs[job_id]["updated_at"] = datetime.utcnow().isoformat() + + finally: + try: + for item in inputs: + item["tmp"].unlink(missing_ok=True) + list_file.unlink(missing_ok=True) + tmp_out.unlink(missing_ok=True) + except: + pass + + +# ─── Запуск воркеров при старте ─────────────────────────────────────────────── +@app.on_event("startup") +async def startup_event(): + """Запуск воркеров очереди + чистка осиротевших временных файлов.""" + try: + now = time.time() + for pat in ("_in_*", "_out_*", "_concat_*", "_list_*"): + for f in FILES_DIR.glob(pat): + try: + if now - f.stat().st_mtime > 3600: # 1 час + f.unlink(missing_ok=True) + except Exception: + pass + except Exception: + pass + for i in range(NUM_WORKERS): + asyncio.create_task(job_worker(i)) + + +# ─── POST /run-s3 ───────────────────────────────────────────────────────────── +@app.post("/run-s3") +async def run_ffmpeg_s3(req: FfmpegS3Request): + """Создаёт задачу и добавляет в очередь, сразу возвращает job_id""" + tmp_id = req.job_id or str(uuid.uuid4()) + + try: + in_bucket, in_key = parse_s3_uri(req.input_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + if req.output_s3: + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + else: + folder = "/".join(in_key.split("/")[:-1]) + ext = in_key.rsplit(".", 1)[-1] if "." in in_key else "mp4" + out_key = f"{folder}/{tmp_id}_processed.{ext}" if folder else f"{tmp_id}_processed.{ext}" + out_bucket = in_bucket + + tmp_in = FILES_DIR / f"_in_{tmp_id}.{in_key.rsplit('.',1)[-1] if '.' in in_key else 'mp4'}" + tmp_out = FILES_DIR / f"_out_{tmp_id}.mp4" + output_s3 = f"s3://{out_bucket}/{out_key}" + now = datetime.utcnow().isoformat() + + async with jobs_lock: + jobs[tmp_id] = { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "created_at": now, + "updated_at": now, + "input_s3": req.input_s3, + "output_s3": output_s3, + "error": None, + "progress": None, + } + + # Добавляем в очередь + await job_queue.put({ + "kind": "ffmpeg", + "job_id": tmp_id, + "in_bucket": in_bucket, + "in_key": in_key, + "out_bucket": out_bucket, + "out_key": out_key, + "output_s3": output_s3, + "ffmpeg_args": req.ffmpeg_args, + "tmp_in": tmp_in, + "tmp_out": tmp_out, + }) + + await cleanup_old_jobs() + + return { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "status_url": f"/status/{tmp_id}", + "queue_position": job_queue.qsize(), + } + + +# ─── POST /concat-s3 ────────────────────────────────────────────────────────── +@app.post("/concat-s3") +async def concat_s3(req: ConcatS3Request): + """Склеивает несколько видео из MinIO в одно. Возвращает job_id и status_url.""" + if len(req.inputs_s3) < 2: + raise HTTPException(status_code=400, detail="inputs_s3 must contain at least 2 items") + if len(req.inputs_s3) > 20: + raise HTTPException(status_code=400, detail="inputs_s3 too long (max 20)") + + tmp_id = req.job_id or str(uuid.uuid4()) + + inputs: List[Dict[str, Any]] = [] + for idx, uri in enumerate(req.inputs_s3): + try: + b, k = parse_s3_uri(uri) + except ValueError as e: + raise HTTPException(status_code=400, detail=f"inputs_s3[{idx}]: {e}") + ext = k.rsplit(".", 1)[-1] if "." in k else "mp4" + inputs.append({ + "bucket": b, + "key": k, + "tmp": FILES_DIR / f"_concat_{tmp_id}_{idx}.{ext}", + }) + + try: + out_bucket, out_key = parse_s3_uri(req.output_s3) + except ValueError as e: + raise HTTPException(status_code=400, detail=str(e)) + + list_file = FILES_DIR / f"_concat_{tmp_id}.txt" + tmp_out = FILES_DIR / f"_concat_out_{tmp_id}.mp4" + output_s3 = f"s3://{out_bucket}/{out_key}" + now = datetime.utcnow().isoformat() + + async with jobs_lock: + jobs[tmp_id] = { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "created_at": now, + "updated_at": now, + "input_s3": ",".join(req.inputs_s3), + "output_s3": output_s3, + "error": None, + "progress": None, + } + + await job_queue.put({ + "kind": "concat", + "job_id": tmp_id, + "inputs": inputs, + "out_bucket": out_bucket, + "out_key": out_key, + "output_s3": output_s3, + "audio": req.audio, + "reencode": req.reencode, + "list_file": list_file, + "tmp_out": tmp_out, + }) + + await cleanup_old_jobs() + + return { + "job_id": tmp_id, + "status": JobStatus.WAITING, + "status_url": f"/status/{tmp_id}", + "queue_position": job_queue.qsize(), + } + + +# ─── GET /status/{job_id} ───────────────────────────────────────────────────── +@app.get("/status/{job_id}", response_model=JobInfo) +async def get_job_status(job_id: str): + """Получить статус задачи""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + job = jobs[job_id].copy() + return JobInfo(**job) + + +# ─── GET /status ────────────────────────────────────────────────────────────── +@app.get("/status") +async def list_statuses(): + """Список всех задач""" + async with jobs_lock: + return [ + { + "job_id": j["job_id"], + "status": j["status"], + "created_at": j["created_at"], + "updated_at": j["updated_at"], + } + for j in jobs.values() + ] + + +# ─── DELETE /jobs/{job_id} ──────────────────────────────────────────────────── +@app.delete("/jobs/{job_id}") +async def delete_job(job_id: str): + """Удалить задачу""" + async with jobs_lock: + if job_id not in jobs: + raise HTTPException(status_code=404, detail="Job not found") + del jobs[job_id] + return {"ok": True, "message": "Job deleted"} + + +# ─── Health check ───────────────────────────────────────────────────────────── +@app.get("/health") +async def health_check(): + return { + "status": "ok", + "jobs_count": len(jobs), + "queue_size": job_queue.qsize(), + "workers": NUM_WORKERS, + } diff --git a/internal_token.txt b/internal_token.txt new file mode 100644 index 0000000..e747276 --- /dev/null +++ b/internal_token.txt @@ -0,0 +1 @@ +6ccc4165bff84b0d06956bf59bac9f970b16c9f7a2ab0699de34f9ed7a4637e4 diff --git a/local-files/test_tiny.mp4 b/local-files/test_tiny.mp4 new file mode 100644 index 0000000..d48acb3 Binary files /dev/null and b/local-files/test_tiny.mp4 differ diff --git a/migrations/001-create-user-files-table.sql b/migrations/001-create-user-files-table.sql new file mode 100644 index 0000000..0f1e43a --- /dev/null +++ b/migrations/001-create-user-files-table.sql @@ -0,0 +1,30 @@ +-- Таблица для хранения метаданных загруженных файлов пользователей +CREATE TABLE IF NOT EXISTS user_files ( + id BIGSERIAL PRIMARY KEY, + user_id BIGINT NOT NULL, + s3_key VARCHAR(512) NOT NULL, + original_filename VARCHAR(255) NOT NULL, + file_size BIGINT NOT NULL, + content_type VARCHAR(128) NOT NULL, + file_type VARCHAR(32) NOT NULL DEFAULT 'image', -- image, video + folder VARCHAR(64) NOT NULL DEFAULT 'images_input', + created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT user_files_user_id_fk FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE, + CONSTRAINT user_files_s3_key_unique UNIQUE (s3_key) +); + +-- Индексы для ускорения поиска +CREATE INDEX IF NOT EXISTS idx_user_files_user_id ON user_files(user_id); +CREATE INDEX IF NOT EXISTS idx_user_files_folder ON user_files(folder); +CREATE INDEX IF NOT EXISTS idx_user_files_created_at ON user_files(created_at DESC); +CREATE INDEX IF NOT EXISTS idx_user_files_file_type ON user_files(file_type); + +-- Комментарий +COMMENT ON TABLE user_files IS 'Метаданные загруженных файлов пользователей в S3'; +COMMENT ON COLUMN user_files.user_id IS 'ID владельца файла'; +COMMENT ON COLUMN user_files.s3_key IS 'Путь к файлу в S3 хранилище'; +COMMENT ON COLUMN user_files.original_filename IS 'Оригинальное имя файла'; +COMMENT ON COLUMN user_files.file_type IS 'Тип файла: image, video'; +COMMENT ON COLUMN user_files.folder IS 'Папка в S3 бакете (images_input, videos_input, etc.)'; diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..86695f8 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,42 @@ +server { + listen 80; + server_name uno-click.pip-test.ru; + + # Redirect HTTP to HTTPS + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl http2; + server_name uno-click.pip-test.ru; + + # SSL сертификаты (Let's Encrypt) + ssl_certificate /etc/letsencrypt/live/uno-click.pip-test.ru/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/uno-click.pip-test.ru/privkey.pem; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + + # Next.js сайт + location / { + proxy_pass http://uno-site:3000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + } + + # BFF API (опционально можно проксировать через nginx) + location /api/ { + proxy_pass http://uno-bff:3001; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } +} diff --git a/nginx/uno-click.pip-test.ru.conf b/nginx/uno-click.pip-test.ru.conf new file mode 100644 index 0000000..7dc9659 --- /dev/null +++ b/nginx/uno-click.pip-test.ru.conf @@ -0,0 +1,103 @@ +map $http_origin $cors_origin { + default ''; + '~^https://.*\.replit\.dev$' $http_origin; + '~^https://.*\.repl\.co$' $http_origin; + 'https://uno-click.pip-test.ru' $http_origin; +} + +map $http_origin $proxy_origin { + default $http_origin; + '~^https://.*\.replit\.dev$' 'https://uno-click.pip-test.ru'; + '~^https://.*\.repl\.co$' 'https://uno-click.pip-test.ru'; +} + +log_format upload_log '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" rt=$request_time ' + 'content_length=$http_content_length'; + +server { + listen 80; + server_name uno-click.pip-test.ru; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl; + server_name uno-click.pip-test.ru; + + ssl_certificate /etc/letsencrypt/live/uno-click.pip-test.ru/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/uno-click.pip-test.ru/privkey.pem; + + # HTTP/1.1 только для upload endpoint (отключаем HTTP/2 flow control) + # Основной сайт остаётся с HTTP/2 + location /s3-upload/ { + access_log /var/log/nginx/s3-upload.log upload_log; + + rewrite ^/s3-upload/(.*)$ /$1 break; + + proxy_pass http://127.0.0.1:9000; + proxy_http_version 1.1; + + proxy_set_header Host "minio:9000"; + proxy_set_header Connection "close"; + + chunked_transfer_encoding off; + proxy_request_buffering off; + + client_max_body_size 500M; + + proxy_connect_timeout 600s; + proxy_send_timeout 600s; + proxy_read_timeout 600s; + + proxy_pass_header Authorization; + proxy_pass_header Content-MD5; + proxy_pass_header Content-Type; + proxy_pass_header Content-Length; + + # CORS headers - только ОДИН раз + add_header 'Access-Control-Allow-Origin' 'https://uno-click.pip-test.ru' always; + add_header 'Access-Control-Allow-Credentials' 'true' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always; + add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, x-csrf-token, x-amz-*' always; + } + + location / { + proxy_pass http://127.0.0.1:3000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + proxy_read_timeout 300; + proxy_send_timeout 300; + proxy_cookie_path / /; + } + + location /api/ { + proxy_pass http://127.0.0.1:3001; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cookie_path / /; + proxy_request_buffering off; + proxy_buffering off; + client_max_body_size 500M; + } + + location /files/ { + proxy_pass http://127.0.0.1:9000/uno-click/; + proxy_http_version 1.1; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + client_max_body_size 100M; + add_header Cache-Control 'public, max-age=31536000, immutable'; + } +} diff --git a/site/.next/BUILD_ID b/site/.next/BUILD_ID new file mode 100644 index 0000000..4f2086f --- /dev/null +++ b/site/.next/BUILD_ID @@ -0,0 +1 @@ +1RTyIO_go5amcBV6dwgIE \ No newline at end of file diff --git a/site/.next/app-build-manifest.json b/site/.next/app-build-manifest.json new file mode 100644 index 0000000..53bf88c --- /dev/null +++ b/site/.next/app-build-manifest.json @@ -0,0 +1,54 @@ +{ + "pages": { + "/_not-found/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/_not-found/page-7f77cbb62a3be354.js" + ], + "/layout": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/css/6f88e2c7ca075e83.css", + "static/chunks/app/layout-18e79b1a6e9bb295.js" + ], + "/dashboard/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/dashboard/page-4ae4d2092fe0a084.js" + ], + "/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/page-7d69bfe6ff018b59.js" + ], + "/prompt/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/prompt/page-6fa8974048233766.js" + ], + "/uniqueizer/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/uniqueizer/page-e45a265393ee86bd.js" + ], + "/result/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/result/page-7096d0d3c33dfb7f.js" + ] + } +} \ No newline at end of file diff --git a/site/.next/app-path-routes-manifest.json b/site/.next/app-path-routes-manifest.json new file mode 100644 index 0000000..38c6d28 --- /dev/null +++ b/site/.next/app-path-routes-manifest.json @@ -0,0 +1 @@ +{"/_not-found/page":"/_not-found","/dashboard/page":"/dashboard","/page":"/","/prompt/page":"/prompt","/uniqueizer/page":"/uniqueizer","/result/page":"/result"} \ No newline at end of file diff --git a/site/.next/build-manifest.json b/site/.next/build-manifest.json new file mode 100644 index 0000000..8dae9a3 --- /dev/null +++ b/site/.next/build-manifest.json @@ -0,0 +1,32 @@ +{ + "polyfillFiles": [ + "static/chunks/polyfills-42372ed130431b0a.js" + ], + "devFiles": [], + "ampDevFiles": [], + "lowPriorityFiles": [ + "static/1RTyIO_go5amcBV6dwgIE/_buildManifest.js", + "static/1RTyIO_go5amcBV6dwgIE/_ssgManifest.js" + ], + "rootMainFiles": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js" + ], + "pages": { + "/_app": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/framework-f66176bb897dc684.js", + "static/chunks/main-4542ef43ae2cfc86.js", + "static/chunks/pages/_app-72b849fbd24ac258.js" + ], + "/_error": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/framework-f66176bb897dc684.js", + "static/chunks/main-4542ef43ae2cfc86.js", + "static/chunks/pages/_error-7ba65e1336b92748.js" + ] + }, + "ampFirstPages": [] +} \ No newline at end of file diff --git a/site/.next/cache/.tsbuildinfo b/site/.next/cache/.tsbuildinfo new file mode 100644 index 0000000..7a52916 --- /dev/null +++ b/site/.next/cache/.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.promise.d.ts","../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/next/dist/styled-jsx/types/css.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/next/dist/styled-jsx/types/index.d.ts","../../node_modules/next/dist/styled-jsx/types/macro.d.ts","../../node_modules/next/dist/styled-jsx/types/style.d.ts","../../node_modules/next/dist/styled-jsx/types/global.d.ts","../../node_modules/next/dist/shared/lib/amp.d.ts","../../node_modules/next/amp.d.ts","../../node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/compatibility/index.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../node_modules/@types/node/web-globals/domexception.d.ts","../../node_modules/@types/node/web-globals/events.d.ts","../../node_modules/undici-types/header.d.ts","../../node_modules/undici-types/readable.d.ts","../../node_modules/undici-types/file.d.ts","../../node_modules/undici-types/fetch.d.ts","../../node_modules/undici-types/formdata.d.ts","../../node_modules/undici-types/connector.d.ts","../../node_modules/undici-types/client.d.ts","../../node_modules/undici-types/errors.d.ts","../../node_modules/undici-types/dispatcher.d.ts","../../node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/undici-types/global-origin.d.ts","../../node_modules/undici-types/pool-stats.d.ts","../../node_modules/undici-types/pool.d.ts","../../node_modules/undici-types/handlers.d.ts","../../node_modules/undici-types/balanced-pool.d.ts","../../node_modules/undici-types/agent.d.ts","../../node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/undici-types/mock-agent.d.ts","../../node_modules/undici-types/mock-client.d.ts","../../node_modules/undici-types/mock-pool.d.ts","../../node_modules/undici-types/mock-errors.d.ts","../../node_modules/undici-types/proxy-agent.d.ts","../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/undici-types/retry-handler.d.ts","../../node_modules/undici-types/retry-agent.d.ts","../../node_modules/undici-types/api.d.ts","../../node_modules/undici-types/interceptors.d.ts","../../node_modules/undici-types/util.d.ts","../../node_modules/undici-types/cookies.d.ts","../../node_modules/undici-types/patch.d.ts","../../node_modules/undici-types/websocket.d.ts","../../node_modules/undici-types/eventsource.d.ts","../../node_modules/undici-types/filereader.d.ts","../../node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/undici-types/content-type.d.ts","../../node_modules/undici-types/cache.d.ts","../../node_modules/undici-types/index.d.ts","../../node_modules/@types/node/web-globals/fetch.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.generated.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/sea.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/next/dist/server/get-page-files.d.ts","../../node_modules/@types/react/canary.d.ts","../../node_modules/@types/react/experimental.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/react-dom/canary.d.ts","../../node_modules/@types/react-dom/experimental.d.ts","../../node_modules/next/dist/compiled/webpack/webpack.d.ts","../../node_modules/next/dist/server/config.d.ts","../../node_modules/next/dist/lib/load-custom-routes.d.ts","../../node_modules/next/dist/shared/lib/image-config.d.ts","../../node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","../../node_modules/next/dist/server/body-streams.d.ts","../../node_modules/next/dist/server/future/route-kind.d.ts","../../node_modules/next/dist/server/future/route-definitions/route-definition.d.ts","../../node_modules/next/dist/server/future/route-matches/route-match.d.ts","../../node_modules/next/dist/client/components/app-router-headers.d.ts","../../node_modules/next/dist/server/request-meta.d.ts","../../node_modules/next/dist/server/lib/revalidate.d.ts","../../node_modules/next/dist/server/config-shared.d.ts","../../node_modules/next/dist/server/base-http/index.d.ts","../../node_modules/next/dist/server/api-utils/index.d.ts","../../node_modules/next/dist/server/node-environment.d.ts","../../node_modules/next/dist/server/require-hook.d.ts","../../node_modules/next/dist/server/node-polyfill-crypto.d.ts","../../node_modules/next/dist/lib/page-types.d.ts","../../node_modules/next/dist/build/analysis/get-page-static-info.d.ts","../../node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","../../node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","../../node_modules/next/dist/server/render-result.d.ts","../../node_modules/next/dist/server/future/helpers/i18n-provider.d.ts","../../node_modules/next/dist/server/web/next-url.d.ts","../../node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","../../node_modules/next/dist/server/web/spec-extension/cookies.d.ts","../../node_modules/next/dist/server/web/spec-extension/request.d.ts","../../node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","../../node_modules/next/dist/server/web/spec-extension/response.d.ts","../../node_modules/next/dist/server/web/types.d.ts","../../node_modules/next/dist/lib/setup-exception-listeners.d.ts","../../node_modules/next/dist/lib/constants.d.ts","../../node_modules/next/dist/build/index.d.ts","../../node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","../../node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","../../node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","../../node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","../../node_modules/next/dist/server/base-http/node.d.ts","../../node_modules/next/dist/server/font-utils.d.ts","../../node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","../../node_modules/next/dist/server/future/route-modules/route-module.d.ts","../../node_modules/next/dist/shared/lib/deep-readonly.d.ts","../../node_modules/next/dist/server/load-components.d.ts","../../node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","../../node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","../../node_modules/next/dist/server/future/route-definitions/locale-route-definition.d.ts","../../node_modules/next/dist/server/future/route-definitions/pages-route-definition.d.ts","../../node_modules/next/dist/shared/lib/mitt.d.ts","../../node_modules/next/dist/client/with-router.d.ts","../../node_modules/next/dist/client/router.d.ts","../../node_modules/next/dist/client/route-loader.d.ts","../../node_modules/next/dist/client/page-loader.d.ts","../../node_modules/next/dist/shared/lib/bloom-filter.d.ts","../../node_modules/next/dist/shared/lib/router/router.d.ts","../../node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","../../node_modules/next/dist/server/future/route-definitions/app-page-route-definition.d.ts","../../node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","../../node_modules/next/dist/shared/lib/constants.d.ts","../../node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","../../node_modules/next/dist/build/page-extensions-type.d.ts","../../node_modules/next/dist/build/webpack/loaders/next-app-loader.d.ts","../../node_modules/next/dist/server/lib/app-dir-module.d.ts","../../node_modules/next/dist/server/response-cache/types.d.ts","../../node_modules/next/dist/server/response-cache/index.d.ts","../../node_modules/next/dist/server/lib/incremental-cache/index.d.ts","../../node_modules/next/dist/client/components/hooks-server-context.d.ts","../../node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","../../node_modules/next/dist/client/components/static-generation-async-storage-instance.d.ts","../../node_modules/next/dist/client/components/static-generation-async-storage.external.d.ts","../../node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","../../node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","../../node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","../../node_modules/next/dist/client/components/request-async-storage-instance.d.ts","../../node_modules/next/dist/client/components/request-async-storage.external.d.ts","../../node_modules/next/dist/server/app-render/create-error-handler.d.ts","../../node_modules/next/dist/server/app-render/app-render.d.ts","../../node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","../../node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","../../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.d.ts","../../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.d.ts","../../node_modules/@types/react/jsx-runtime.d.ts","../../node_modules/next/dist/client/components/error-boundary.d.ts","../../node_modules/next/dist/client/components/router-reducer/create-initial-router-state.d.ts","../../node_modules/next/dist/client/components/app-router.d.ts","../../node_modules/next/dist/client/components/layout-router.d.ts","../../node_modules/next/dist/client/components/render-from-template-context.d.ts","../../node_modules/next/dist/client/components/action-async-storage-instance.d.ts","../../node_modules/next/dist/client/components/action-async-storage.external.d.ts","../../node_modules/next/dist/client/components/client-page.d.ts","../../node_modules/next/dist/client/components/search-params.d.ts","../../node_modules/next/dist/client/components/not-found-boundary.d.ts","../../node_modules/next/dist/server/app-render/rsc/preloads.d.ts","../../node_modules/next/dist/server/app-render/rsc/postpone.d.ts","../../node_modules/next/dist/server/app-render/rsc/taint.d.ts","../../node_modules/next/dist/server/app-render/entry-base.d.ts","../../node_modules/next/dist/build/templates/app-page.d.ts","../../node_modules/next/dist/server/future/route-modules/app-page/module.d.ts","../../node_modules/next/dist/server/lib/builtin-request-context.d.ts","../../node_modules/next/dist/server/app-render/types.d.ts","../../node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","../../node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","../../node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","../../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.d.ts","../../node_modules/next/dist/server/future/route-modules/pages/module.compiled.d.ts","../../node_modules/next/dist/build/templates/pages.d.ts","../../node_modules/next/dist/server/future/route-modules/pages/module.d.ts","../../node_modules/next/dist/server/render.d.ts","../../node_modules/next/dist/server/future/route-definitions/pages-api-route-definition.d.ts","../../node_modules/next/dist/server/future/route-matches/pages-api-route-match.d.ts","../../node_modules/next/dist/server/future/route-matchers/route-matcher.d.ts","../../node_modules/next/dist/server/future/route-matcher-providers/route-matcher-provider.d.ts","../../node_modules/next/dist/server/future/route-matcher-managers/route-matcher-manager.d.ts","../../node_modules/next/dist/server/future/normalizers/normalizer.d.ts","../../node_modules/next/dist/server/future/normalizers/locale-route-normalizer.d.ts","../../node_modules/next/dist/server/future/normalizers/request/pathname-normalizer.d.ts","../../node_modules/next/dist/server/future/normalizers/request/suffix.d.ts","../../node_modules/next/dist/server/future/normalizers/request/rsc.d.ts","../../node_modules/next/dist/server/future/normalizers/request/prefix.d.ts","../../node_modules/next/dist/server/future/normalizers/request/postponed.d.ts","../../node_modules/next/dist/server/future/normalizers/request/action.d.ts","../../node_modules/next/dist/server/future/normalizers/request/prefetch-rsc.d.ts","../../node_modules/next/dist/server/future/normalizers/request/next-data.d.ts","../../node_modules/next/dist/server/base-server.d.ts","../../node_modules/next/dist/server/image-optimizer.d.ts","../../node_modules/next/dist/server/next-server.d.ts","../../node_modules/next/dist/lib/coalesced-function.d.ts","../../node_modules/next/dist/server/lib/router-utils/types.d.ts","../../node_modules/next/dist/trace/types.d.ts","../../node_modules/next/dist/trace/trace.d.ts","../../node_modules/next/dist/trace/shared.d.ts","../../node_modules/next/dist/trace/index.d.ts","../../node_modules/next/dist/build/load-jsconfig.d.ts","../../node_modules/next/dist/build/webpack-config.d.ts","../../node_modules/next/dist/build/webpack/plugins/define-env-plugin.d.ts","../../node_modules/next/dist/build/swc/index.d.ts","../../node_modules/next/dist/server/dev/parse-version-info.d.ts","../../node_modules/next/dist/server/dev/hot-reloader-types.d.ts","../../node_modules/next/dist/telemetry/storage.d.ts","../../node_modules/next/dist/server/lib/types.d.ts","../../node_modules/next/dist/server/lib/render-server.d.ts","../../node_modules/next/dist/server/lib/router-server.d.ts","../../node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","../../node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","../../node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","../../node_modules/next/dist/server/lib/dev-bundler-service.d.ts","../../node_modules/next/dist/server/dev/static-paths-worker.d.ts","../../node_modules/next/dist/server/dev/next-dev-server.d.ts","../../node_modules/next/dist/server/next.d.ts","../../node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","../../node_modules/next/dist/lib/metadata/types/extra-types.d.ts","../../node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","../../node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","../../node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","../../node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","../../node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","../../node_modules/next/types/index.d.ts","../../node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","../../node_modules/@next/env/dist/index.d.ts","../../node_modules/next/dist/shared/lib/utils.d.ts","../../node_modules/next/dist/pages/_app.d.ts","../../node_modules/next/app.d.ts","../../node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","../../node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","../../node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","../../node_modules/next/cache.d.ts","../../node_modules/next/dist/shared/lib/runtime-config.external.d.ts","../../node_modules/next/config.d.ts","../../node_modules/next/dist/pages/_document.d.ts","../../node_modules/next/document.d.ts","../../node_modules/next/dist/shared/lib/dynamic.d.ts","../../node_modules/next/dynamic.d.ts","../../node_modules/next/dist/pages/_error.d.ts","../../node_modules/next/error.d.ts","../../node_modules/next/dist/shared/lib/head.d.ts","../../node_modules/next/head.d.ts","../../node_modules/next/dist/client/components/draft-mode.d.ts","../../node_modules/next/dist/client/components/headers.d.ts","../../node_modules/next/headers.d.ts","../../node_modules/next/dist/shared/lib/get-img-props.d.ts","../../node_modules/next/dist/client/image-component.d.ts","../../node_modules/next/dist/shared/lib/image-external.d.ts","../../node_modules/next/image.d.ts","../../node_modules/next/dist/client/link.d.ts","../../node_modules/next/link.d.ts","../../node_modules/next/dist/client/components/redirect-status-code.d.ts","../../node_modules/next/dist/client/components/redirect.d.ts","../../node_modules/next/dist/client/components/not-found.d.ts","../../node_modules/next/dist/client/components/navigation.react-server.d.ts","../../node_modules/next/dist/client/components/navigation.d.ts","../../node_modules/next/navigation.d.ts","../../node_modules/next/router.d.ts","../../node_modules/next/dist/client/script.d.ts","../../node_modules/next/script.d.ts","../../node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","../../node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","../../node_modules/next/dist/server/web/spec-extension/image-response.d.ts","../../node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","../../node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","../../node_modules/next/dist/compiled/@vercel/og/types.d.ts","../../node_modules/next/server.d.ts","../../node_modules/next/types/global.d.ts","../../node_modules/next/types/compiled.d.ts","../../node_modules/next/index.d.ts","../../node_modules/next/image-types/global.d.ts","../../next-env.d.ts","../../app/layout.tsx","../../app/page.tsx","../../app/dashboard/page.tsx","../../app/prompt/page.tsx","../../app/result/page.tsx","../../app/uniqueizer/page.tsx","../types/app/layout.ts","../types/app/page.ts","../types/app/dashboard/page.ts","../types/app/prompt/page.ts","../types/app/result/page.ts","../types/app/uniqueizer/page.ts"],"fileIdsList":[[99,145,360,413],[99,145,360,411],[99,145,360,412],[99,145,360,414],[99,145,360,415],[99,145,360,416],[87,99,145,395],[99,145],[99,145,408,409],[99,142,145],[99,144,145],[145],[99,145,150,178],[99,145,146,151,156,164,175,186],[99,145,146,147,156,164],[94,95,96,99,145],[99,145,148,187],[99,145,149,150,157,165],[99,145,150,175,183],[99,145,151,153,156,164],[99,144,145,152],[99,145,153,154],[99,145,155,156],[99,144,145,156],[99,145,156,157,158,175,186],[99,145,156,157,158,171,175,178],[99,145,153,156,159,164,175,186],[99,145,156,157,159,160,164,175,183,186],[99,145,159,161,175,183,186],[97,98,99,100,101,102,103,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192],[99,145,156,162],[99,145,163,186,191],[99,145,153,156,164,175],[99,145,165],[99,145,166],[99,144,145,167],[99,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192],[99,145,169],[99,145,170],[99,145,156,171,172],[99,145,171,173,187,189],[99,145,156,175,176,178],[99,145,177,178],[99,145,175,176],[99,145,178],[99,145,179],[99,142,145,175,180],[99,145,156,181,182],[99,145,181,182],[99,145,150,164,175,183],[99,145,184],[99,145,164,185],[99,145,159,170,186],[99,145,150,187],[99,145,175,188],[99,145,163,189],[99,145,190],[99,140,145],[99,140,145,156,158,167,175,178,186,189,191],[99,145,175,192],[87,99,145,197,198,199],[87,99,145,197,198],[87,99,145],[87,91,99,145,196,361,404],[87,91,99,145,195,361,404],[84,85,86,99,145],[92,99,145],[99,145,365],[99,145,367,368,369],[99,145,371],[99,145,202,212,218,220,361],[99,145,202,209,211,214,232],[99,145,212],[99,145,212,214,339],[99,145,267,285,300,407],[99,145,309],[99,145,202,212,219,253,263,336,337,407],[99,145,219,407],[99,145,212,263,264,265,407],[99,145,212,219,253,407],[99,145,407],[99,145,202,219,220,407],[99,145,293],[99,144,145,193,292],[87,99,145,286,287,288,306,307],[87,99,145,286],[99,145,276],[99,145,275,277,381],[87,99,145,286,287,304],[99,145,282,307,393],[99,145,391,392],[99,145,226,390],[99,145,279],[99,144,145,193,226,242,275,276,277,278],[87,99,145,304,306,307],[99,145,304,306],[99,145,304,305,307],[99,145,170,193],[99,145,274],[99,144,145,193,211,213,270,271,272,273],[87,99,145,203,384],[87,99,145,186,193],[87,99,145,219,251],[87,99,145,219],[99,145,249,254],[87,99,145,250,364],[87,91,99,145,159,193,195,196,361,402,403],[99,145,361],[99,145,201],[99,145,354,355,356,357,358,359],[99,145,356],[87,99,145,250,286,364],[87,99,145,286,362,364],[87,99,145,286,364],[99,145,159,193,213,364],[99,145,159,193,210,211,222,240,242,274,279,280,302,304],[99,145,271,274,279,287,289,290,291,293,294,295,296,297,298,299,407],[99,145,272],[87,99,145,170,193,211,212,240,242,243,245,270,302,303,307,361,407],[99,145,159,193,213,214,226,227,275],[99,145,159,193,212,214],[99,145,159,175,193,210,213,214],[99,145,159,170,186,193,210,211,212,213,214,219,222,223,233,234,236,239,240,242,243,244,245,269,270,303,304,312,314,317,319,322,324,325,326,327],[99,145,159,175,193],[99,145,202,203,204,210,211,361,364,407],[99,145,159,175,186,193,207,338,340,341,407],[99,145,170,186,193,207,210,213,230,234,236,237,238,243,270,317,328,330,336,350,351],[99,145,212,216,270],[99,145,210,212],[99,145,223,318],[99,145,320,321],[99,145,320],[99,145,318],[99,145,320,323],[99,145,206,207],[99,145,206,246],[99,145,206],[99,145,208,223,316],[99,145,315],[99,145,207,208],[99,145,208,313],[99,145,207],[99,145,302],[99,145,159,193,210,222,241,261,267,281,284,301,304],[99,145,255,256,257,258,259,260,282,283,307,362],[99,145,311],[99,145,159,193,210,222,241,247,308,310,312,361,364],[99,145,159,186,193,203,210,212,269],[99,145,266],[99,145,159,193,344,349],[99,145,233,242,269,364],[99,145,332,336,350,353],[99,145,159,216,336,344,345,353],[99,145,202,212,233,244,347],[99,145,159,193,212,219,244,331,332,342,343,346,348],[99,145,194,240,241,242,361,364],[99,145,159,170,186,193,208,210,211,213,216,221,222,230,233,234,236,237,238,239,243,245,269,270,314,328,329,364],[99,145,159,193,210,212,216,330,352],[99,145,159,193,211,213],[87,99,145,159,170,193,201,203,210,211,214,222,239,240,242,243,245,311,361,364],[99,145,159,170,186,193,205,208,209,213],[99,145,206,268],[99,145,159,193,206,211,222],[99,145,159,193,212,223],[99,145,159,193],[99,145,226],[99,145,225],[99,145,227],[99,145,212,224,226,230],[99,145,212,224,226],[99,145,159,193,205,212,213,219,227,228,229],[87,99,145,304,305,306],[99,145,262],[87,99,145,203],[87,99,145,236],[87,99,145,194,239,242,245,361,364],[99,145,203,384,385],[87,99,145,254],[87,99,145,170,186,193,201,248,250,252,253,364],[99,145,213,219,236],[99,145,235],[87,99,145,157,159,170,193,201,254,263,361,362,363],[83,87,88,89,90,99,145,195,196,361,404],[99,145,150],[99,145,333,334,335],[99,145,333],[99,145,373],[99,145,375],[99,145,377],[99,145,379],[99,145,382],[99,145,386],[91,93,99,145,361,366,370,372,374,376,378,380,383,387,389,395,396,398,405,406,407],[99,145,388],[99,145,394],[99,145,250],[99,145,397],[99,144,145,227,228,229,230,399,400,401,404],[99,145,193],[87,91,99,145,159,161,170,193,195,196,197,199,201,214,353,360,364,404],[99,112,116,145,186],[99,112,145,175,186],[99,107,145],[99,109,112,145,183,186],[99,145,164,183],[99,107,145,193],[99,109,112,145,164,186],[99,104,105,108,111,145,156,175,186],[99,112,119,145],[99,104,110,145],[99,112,133,134,145],[99,108,112,145,178,186,193],[99,133,145,193],[99,106,107,145,193],[99,112,145],[99,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,134,135,136,137,138,139,145],[99,112,127,145],[99,112,119,120,145],[99,110,112,120,121,145],[99,111,145],[99,104,107,112,145],[99,112,116,120,121,145],[99,116,145],[99,110,112,115,145,186],[99,104,109,112,119,145],[99,145,175],[99,107,112,133,145,191,193]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","signature":false,"impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","signature":false,"impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","signature":false,"impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","signature":false,"impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","signature":false,"impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","signature":false,"impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","signature":false,"impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","signature":false,"impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","signature":false,"impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","signature":false,"impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","signature":false,"impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"0990a7576222f248f0a3b888adcb7389f957928ce2afb1cd5128169086ff4d29","signature":false,"impliedFormat":1},{"version":"eb5b19b86227ace1d29ea4cf81387279d04bb34051e944bc53df69f58914b788","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","signature":false,"impliedFormat":1},{"version":"87d9d29dbc745f182683f63187bf3d53fd8673e5fca38ad5eaab69798ed29fbc","signature":false,"impliedFormat":1},{"version":"035312d4945d13efa134ae482f6dc56a1a9346f7ac3be7ccbad5741058ce87f3","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"cc69795d9954ee4ad57545b10c7bf1a7260d990231b1685c147ea71a6faa265c","signature":false,"impliedFormat":1},{"version":"8bc6c94ff4f2af1f4023b7bb2379b08d3d7dd80c698c9f0b07431ea16101f05f","signature":false,"impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","signature":false,"impliedFormat":1},{"version":"57194e1f007f3f2cbef26fa299d4c6b21f4623a2eddc63dfeef79e38e187a36e","signature":false,"impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","signature":false,"impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","signature":false,"impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","signature":false,"impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","signature":false,"impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","signature":false,"impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","signature":false,"impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","signature":false,"impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","signature":false,"impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","signature":false,"impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","signature":false,"impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","signature":false,"impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","signature":false,"impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","signature":false,"impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","signature":false,"impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","signature":false,"impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","signature":false,"impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","signature":false,"impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","signature":false,"impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","signature":false,"impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","signature":false,"impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","signature":false,"impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","signature":false,"impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","signature":false,"impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","signature":false,"impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","signature":false,"impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","signature":false,"impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","signature":false,"impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","signature":false,"impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","signature":false,"impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","signature":false,"impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","signature":false,"impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","signature":false,"impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","signature":false,"impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","signature":false,"impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","signature":false,"impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","signature":false,"impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","signature":false,"impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","signature":false,"impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","signature":false,"impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","signature":false,"impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","signature":false,"impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","signature":false,"impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","signature":false,"impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","signature":false,"impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","signature":false,"impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","signature":false,"impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","signature":false,"impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","signature":false,"impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","signature":false,"impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","signature":false,"impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","signature":false,"impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","signature":false,"impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","signature":false,"impliedFormat":1},{"version":"641942a78f9063caa5d6b777c99304b7d1dc7328076038c6d94d8a0b81fc95c1","signature":false,"impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","signature":false,"impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","signature":false,"impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","signature":false,"impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"7e20d899c28ca26a2a7afc98beaa69e63ff7fba0a8bc47b4e3bf3ede5e09e424","signature":false,"impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","signature":false,"impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","signature":false,"impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"372413016d17d804e1d139418aca0c68e47a83fb6669490857f4b318de8cccb3","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","signature":false,"impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","signature":false,"impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","signature":false,"impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","signature":false,"impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","signature":false,"impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","signature":false,"impliedFormat":1},{"version":"085f552d005479e2e6a7311cdbbe5d8c55c497b4d19274285df161ee9684cd9c","signature":false,"impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","signature":false,"impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","signature":false,"impliedFormat":1},{"version":"007faacc9268357caa21d24169f3f3f2497af3e9241308df2d89f6e6d9bb3f2e","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","signature":false,"impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","signature":false,"impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","signature":false,"impliedFormat":1},{"version":"809821b8a065e3234a55b3a9d7846231ed18d66dd749f2494c66288d890daf7f","signature":false,"impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","signature":false,"impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","signature":false,"impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","signature":false,"impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","signature":false,"impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","signature":false,"impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"b7c5e2ea4a9749097c347454805e933844ed207b6eefec6b7cfd418b5f5f7b28","signature":false,"impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","signature":false,"impliedFormat":1},{"version":"8caa5c86be1b793cd5f599e27ecb34252c41e011980f7d61ae4989a149ff6ccc","signature":false,"impliedFormat":1},{"version":"f9fd93190acb1ffe0bc0fb395df979452f8d625071e9ffc8636e4dfb86ab2508","signature":false,"impliedFormat":1},{"version":"5f41fd8732a89e940c58ce22206e3df85745feb8983e2b4c6257fb8cbb118493","signature":false,"impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","signature":false,"impliedFormat":1},{"version":"1cfa8647d7d71cb03847d616bd79320abfc01ddea082a49569fda71ac5ece66b","signature":false,"impliedFormat":1},{"version":"bb7a61dd55dc4b9422d13da3a6bb9cc5e89be888ef23bbcf6558aa9726b89a1c","signature":false,"impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","signature":false,"impliedFormat":1},{"version":"cfe4ef4710c3786b6e23dae7c086c70b4f4835a2e4d77b75d39f9046106e83d3","signature":false,"impliedFormat":1},{"version":"cbea99888785d49bb630dcbb1613c73727f2b5a2cf02e1abcaab7bcf8d6bf3c5","signature":false,"impliedFormat":1},{"version":"3a8bddb66b659f6bd2ff641fc71df8a8165bafe0f4b799cc298be5cd3755bb20","signature":false,"impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","signature":false,"impliedFormat":1},{"version":"2dad084c67e649f0f354739ec7df7c7df0779a28a4f55c97c6b6883ae850d1ce","signature":false,"impliedFormat":1},{"version":"fa5bbc7ab4130dd8cdc55ea294ec39f76f2bc507a0f75f4f873e38631a836ca7","signature":false,"impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","signature":false,"impliedFormat":1},{"version":"cf86de1054b843e484a3c9300d62fbc8c97e77f168bbffb131d560ca0474d4a8","signature":false,"impliedFormat":1},{"version":"196c960b12253fde69b204aa4fbf69470b26daf7a430855d7f94107a16495ab0","signature":false,"impliedFormat":1},{"version":"ee15ea5dd7a9fc9f5013832e5843031817a880bf0f24f37a29fd8337981aae07","signature":false,"impliedFormat":1},{"version":"bf24f6d35f7318e246010ffe9924395893c4e96d34324cde77151a73f078b9ad","signature":false,"impliedFormat":1},{"version":"ea53732769832d0f127ae16620bd5345991d26bf0b74e85e41b61b27d74ea90f","signature":false,"impliedFormat":1},{"version":"10595c7ff5094dd5b6a959ccb1c00e6a06441b4e10a87bc09c15f23755d34439","signature":false,"impliedFormat":1},{"version":"9620c1ff645afb4a9ab4044c85c26676f0a93e8c0e4b593aea03a89ccb47b6d0","signature":false,"impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","signature":false,"impliedFormat":1},{"version":"a9af0e608929aaf9ce96bd7a7b99c9360636c31d73670e4af09a09950df97841","signature":false,"impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","signature":false,"impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","signature":false,"impliedFormat":1},{"version":"08ed0b3f0166787f84a6606f80aa3b1388c7518d78912571b203817406e471da","signature":false,"impliedFormat":1},{"version":"47e5af2a841356a961f815e7c55d72554db0c11b4cba4d0caab91f8717846a94","signature":false,"impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","signature":false,"impliedFormat":1},{"version":"f5f541902bf7ae0512a177295de9b6bcd6809ea38307a2c0a18bfca72212f368","signature":false,"impliedFormat":1},{"version":"b0decf4b6da3ebc52ea0c96095bdfaa8503acc4ac8e9081c5f2b0824835dd3bd","signature":false,"impliedFormat":1},{"version":"ca1b882a105a1972f82cc58e3be491e7d750a1eb074ffd13b198269f57ed9e1b","signature":false,"impliedFormat":1},{"version":"fc3e1c87b39e5ba1142f27ec089d1966da168c04a859a4f6aab64dceae162c2b","signature":false,"impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","signature":false,"impliedFormat":1},{"version":"61888522cec948102eba94d831c873200aa97d00d8989fdfd2a3e0ee75ec65a2","signature":false,"impliedFormat":1},{"version":"4e10622f89fea7b05dd9b52fb65e1e2b5cbd96d4cca3d9e1a60bb7f8a9cb86a1","signature":false,"impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","signature":false,"impliedFormat":1},{"version":"59bf32919de37809e101acffc120596a9e45fdbab1a99de5087f31fdc36e2f11","signature":false,"impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","signature":false,"impliedFormat":1},{"version":"faa03dffb64286e8304a2ca96dd1317a77db6bfc7b3fb385163648f67e535d77","signature":false,"impliedFormat":1},{"version":"c40c848daad198266370c1c72a7a8c3d18d2f50727c7859fcfefd3ff69a7f288","signature":false,"impliedFormat":1},{"version":"ac60bbee0d4235643cc52b57768b22de8c257c12bd8c2039860540cab1fa1d82","signature":false,"impliedFormat":1},{"version":"6428e6edd944ce6789afdf43f9376c1f2e4957eea34166177625aaff4c0da1a0","signature":false,"impliedFormat":1},{"version":"ada39cbb2748ab2873b7835c90c8d4620723aedf323550e8489f08220e477c7f","signature":false,"impliedFormat":1},{"version":"6e5f5cee603d67ee1ba6120815497909b73399842254fc1e77a0d5cdc51d8c9c","signature":false,"impliedFormat":1},{"version":"8dba67056cbb27628e9b9a1cba8e57036d359dceded0725c72a3abe4b6c79cd4","signature":false,"impliedFormat":1},{"version":"70f3814c457f54a7efe2d9ce9d2686de9250bb42eb7f4c539bd2280a42e52d33","signature":false,"impliedFormat":1},{"version":"154dd2e22e1e94d5bc4ff7726706bc0483760bae40506bdce780734f11f7ec47","signature":false,"impliedFormat":1},{"version":"ef61792acbfa8c27c9bd113f02731e66229f7d3a169e3c1993b508134f1a58e0","signature":false,"impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","signature":false,"impliedFormat":1},{"version":"0131e203d8560edb39678abe10db42564a068f98c4ebd1ed9ffe7279c78b3c81","signature":false,"impliedFormat":1},{"version":"f6404e7837b96da3ea4d38c4f1a3812c96c9dcdf264e93d5bdb199f983a3ef4b","signature":false,"impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","signature":false,"impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","signature":false,"impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","signature":false,"impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","signature":false,"impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","signature":false,"impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","signature":false,"impliedFormat":1},{"version":"8b8f00491431fe82f060dfe8c7f2180a9fb239f3d851527db909b83230e75882","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","signature":false,"impliedFormat":1},{"version":"903e299a28282fa7b714586e28409ed73c3b63f5365519776bf78e8cf173db36","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","signature":false,"impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","signature":false,"impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","signature":false,"impliedFormat":1},{"version":"dd3900b24a6a8745efeb7ad27629c0f8a626470ac229c1d73f1fe29d67e44dca","signature":false,"impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","signature":false,"impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","signature":false,"impliedFormat":1},{"version":"ec29be0737d39268696edcec4f5e97ce26f449fa9b7afc2f0f99a86def34a418","signature":false,"impliedFormat":1},{"version":"aeab39e8e0b1a3b250434c3b2bb8f4d17bbec2a9dbce5f77e8a83569d3d2cbc2","signature":false,"impliedFormat":1},{"version":"ec6cba1c02c675e4dd173251b156792e8d3b0c816af6d6ad93f1a55d674591aa","signature":false,"impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","signature":false,"impliedFormat":1},{"version":"d729408dfde75b451530bcae944cf89ee8277e2a9df04d1f62f2abfd8b03c1e1","signature":false,"impliedFormat":1},{"version":"e15d3c84d5077bb4a3adee4c791022967b764dc41cb8fa3cfa44d4379b2c95f5","signature":false,"impliedFormat":1},{"version":"5f58e28cd22e8fc1ac1b3bc6b431869f1e7d0b39e2c21fbf79b9fa5195a85980","signature":false,"impliedFormat":1},{"version":"e1fc1a1045db5aa09366be2b330e4ce391550041fc3e925f60998ca0b647aa97","signature":false,"impliedFormat":1},{"version":"63533978dcda286422670f6e184ac516805a365fb37a086eeff4309e812f1402","signature":false,"impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","signature":false,"impliedFormat":1},{"version":"31fb49ef3aa3d76f0beb644984e01eab0ea222372ea9b49bb6533be5722d756c","signature":false,"impliedFormat":1},{"version":"33cd131e1461157e3e06b06916b5176e7a8ec3fce15a5cfe145e56de744e07d2","signature":false,"impliedFormat":1},{"version":"889ef863f90f4917221703781d9723278db4122d75596b01c429f7c363562b86","signature":false,"impliedFormat":1},{"version":"3556cfbab7b43da96d15a442ddbb970e1f2fc97876d055b6555d86d7ac57dae5","signature":false,"impliedFormat":1},{"version":"437751e0352c6e924ddf30e90849f1d9eb00ca78c94d58d6a37202ec84eb8393","signature":false,"impliedFormat":1},{"version":"48e8af7fdb2677a44522fd185d8c87deff4d36ee701ea003c6c780b1407a1397","signature":false,"impliedFormat":1},{"version":"d11308de5a36c7015bb73adb5ad1c1bdaac2baede4cc831a05cf85efa3cc7f2f","signature":false,"impliedFormat":1},{"version":"38e4684c22ed9319beda6765bab332c724103d3a966c2e5e1c5a49cf7007845f","signature":false,"impliedFormat":1},{"version":"f9812cfc220ecf7557183379531fa409acd249b9e5b9a145d0d52b76c20862de","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"e650298721abc4f6ae851e60ae93ee8199791ceec4b544c3379862f81f43178c","signature":false,"impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","signature":false,"impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","signature":false,"impliedFormat":1},{"version":"680793958f6a70a44c8d9ae7d46b7a385361c69ac29dcab3ed761edce1c14ab8","signature":false,"impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","signature":false,"impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","signature":false,"impliedFormat":1},{"version":"913ddbba170240070bd5921b8f33ea780021bdf42fbdfcd4fcb2691b1884ddde","signature":false,"impliedFormat":1},{"version":"b4e6d416466999ff40d3fe5ceb95f7a8bfb7ac2262580287ac1a8391e5362431","signature":false,"impliedFormat":1},{"version":"5fe23bd829e6be57d41929ac374ee9551ccc3c44cee893167b7b5b77be708014","signature":false,"impliedFormat":1},{"version":"0a626484617019fcfbfc3c1bc1f9e84e2913f1adb73692aa9075817404fb41a1","signature":false,"impliedFormat":1},{"version":"438c7513b1df91dcef49b13cd7a1c4720f91a36e88c1df731661608b7c055f10","signature":false,"impliedFormat":1},{"version":"cf185cc4a9a6d397f416dd28cca95c227b29f0f27b160060a95c0e5e36cda865","signature":false,"impliedFormat":1},{"version":"0086f3e4ad898fd7ca56bb223098acfacf3fa065595182aaf0f6c4a6a95e6fbd","signature":false,"impliedFormat":1},{"version":"efaa078e392f9abda3ee8ade3f3762ab77f9c50b184e6883063a911742a4c96a","signature":false,"impliedFormat":1},{"version":"54a8bb487e1dc04591a280e7a673cdfb272c83f61e28d8a64cf1ac2e63c35c51","signature":false,"impliedFormat":1},{"version":"021a9498000497497fd693dd315325484c58a71b5929e2bbb91f419b04b24cea","signature":false,"impliedFormat":1},{"version":"9385cdc09850950bc9b59cca445a3ceb6fcca32b54e7b626e746912e489e535e","signature":false,"impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","signature":false,"impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","signature":false,"impliedFormat":1},{"version":"84124384abae2f6f66b7fbfc03862d0c2c0b71b826f7dbf42c8085d31f1d3f95","signature":false,"impliedFormat":1},{"version":"63a8e96f65a22604eae82737e409d1536e69a467bb738bec505f4f97cce9d878","signature":false,"impliedFormat":1},{"version":"3fd78152a7031315478f159c6a5872c712ece6f01212c78ea82aef21cb0726e2","signature":false,"impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","signature":false,"impliedFormat":1},{"version":"58b49e5c1def740360b5ae22ae2405cfac295fee74abd88d74ac4ea42502dc03","signature":false,"impliedFormat":1},{"version":"512fc15cca3a35b8dbbf6e23fe9d07e6f87ad03c895acffd3087ce09f352aad0","signature":false,"impliedFormat":1},{"version":"9a0946d15a005832e432ea0cd4da71b57797efb25b755cc07f32274296d62355","signature":false,"impliedFormat":1},{"version":"a52ff6c0a149e9f370372fc3c715d7f2beee1f3bab7980e271a7ab7d313ec677","signature":false,"impliedFormat":1},{"version":"fd933f824347f9edd919618a76cdb6a0c0085c538115d9a287fa0c7f59957ab3","signature":false,"impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","signature":false,"impliedFormat":1},{"version":"6a1aa3e55bdc50503956c5cd09ae4cd72e3072692d742816f65c66ca14f4dfdd","signature":false,"impliedFormat":1},{"version":"ab75cfd9c4f93ffd601f7ca1753d6a9d953bbedfbd7a5b3f0436ac8a1de60dfa","signature":false,"impliedFormat":1},{"version":"f95180f03d827525ca4f990f49e17ec67198c316dd000afbe564655141f725cd","signature":false,"impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","signature":false,"impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","signature":false,"impliedFormat":1},{"version":"1364f64d2fb03bbb514edc42224abd576c064f89be6a990136774ecdd881a1da","signature":false,"impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","signature":false,"impliedFormat":1},{"version":"950fb67a59be4c2dbe69a5786292e60a5cb0e8612e0e223537784c731af55db1","signature":false,"impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","signature":false,"impliedFormat":1},{"version":"07ca44e8d8288e69afdec7a31fa408ce6ab90d4f3d620006701d5544646da6aa","signature":false,"impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","signature":false,"impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","signature":false,"impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","signature":false,"impliedFormat":1},{"version":"4e4475fba4ed93a72f167b061cd94a2e171b82695c56de9899275e880e06ba41","signature":false,"impliedFormat":1},{"version":"97c5f5d580ab2e4decd0a3135204050f9b97cd7908c5a8fbc041eadede79b2fa","signature":false,"impliedFormat":1},{"version":"c99a3a5f2215d5b9d735aa04cec6e61ed079d8c0263248e298ffe4604d4d0624","signature":false,"impliedFormat":1},{"version":"49b2375c586882c3ac7f57eba86680ff9742a8d8cb2fe25fe54d1b9673690d41","signature":false,"impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","signature":false,"impliedFormat":1},{"version":"847e160d709c74cc714fbe1f99c41d3425b74cd47b1be133df1623cd87014089","signature":false,"impliedFormat":1},{"version":"9fee04f1e1afa50524862289b9f0b0fdc3735b80e2a0d684cec3b9ff3d94cecc","signature":false,"impliedFormat":1},{"version":"5cdc27fbc5c166fc5c763a30ac21cbac9859dc5ba795d3230db6d4e52a1965bb","signature":false,"impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","signature":false,"impliedFormat":1},{"version":"f416c9c3eee9d47ff49132c34f96b9180e50485d435d5748f0e8b72521d28d2e","signature":false,"impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","signature":false,"impliedFormat":1},{"version":"14e5cdec6f8ae82dfd0694e64903a0a54abdfe37e1d966de3d4128362acbf35f","signature":false,"impliedFormat":1},{"version":"bbc183d2d69f4b59fd4dd8799ffdf4eb91173d1c4ad71cce91a3811c021bf80c","signature":false,"impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","signature":false,"impliedFormat":1},{"version":"8dbc4134a4b3623fc476be5f36de35c40f2768e2e3d9ed437e0d5f1c4cd850f6","signature":false,"impliedFormat":1},{"version":"4e06330a84dec7287f7ebdd64978f41a9f70a668d3b5edc69d5d4a50b9b376bb","signature":false,"impliedFormat":1},{"version":"65bfa72967fbe9fc33353e1ac03f0480aa2e2ea346d61ff3ea997dfd850f641a","signature":false,"impliedFormat":1},{"version":"c06f0bb92d1a1a5a6c6e4b5389a5664d96d09c31673296cb7da5fe945d54d786","signature":false,"impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","signature":false,"impliedFormat":1},{"version":"872caaa31423f4345983d643e4649fb30f548e9883a334d6d1c5fff68ede22d4","signature":false,"impliedFormat":1},{"version":"94404c4a878fe291e7578a2a80264c6f18e9f1933fbb57e48f0eb368672e389c","signature":false,"impliedFormat":1},{"version":"5c1b7f03aa88be854bc15810bfd5bd5a1943c5a7620e1c53eddd2a013996343e","signature":false,"impliedFormat":1},{"version":"09dfc64fcd6a2785867f2368419859a6cc5a8d4e73cbe2538f205b1642eb0f51","signature":false,"impliedFormat":1},{"version":"bcf6f0a323653e72199105a9316d91463ad4744c546d1271310818b8cef7c608","signature":false,"impliedFormat":1},{"version":"01aa917531e116485beca44a14970834687b857757159769c16b228eb1e49c5f","signature":false,"impliedFormat":1},{"version":"351475f9c874c62f9b45b1f0dc7e2704e80dfd5f1af83a3a9f841f9dfe5b2912","signature":false,"impliedFormat":1},{"version":"ac457ad39e531b7649e7b40ee5847606eac64e236efd76c5d12db95bf4eacd17","signature":false,"impliedFormat":1},{"version":"187a6fdbdecb972510b7555f3caacb44b58415da8d5825d03a583c4b73fde4cf","signature":false,"impliedFormat":1},{"version":"d4c3250105a612202289b3a266bb7e323db144f6b9414f9dea85c531c098b811","signature":false,"impliedFormat":1},{"version":"95b444b8c311f2084f0fb51c616163f950fb2e35f4eaa07878f313a2d36c98a4","signature":false,"impliedFormat":1},{"version":"741067675daa6d4334a2dc80a4452ca3850e89d5852e330db7cb2b5f867173b1","signature":false,"impliedFormat":1},{"version":"f8acecec1114f11690956e007d920044799aefeb3cece9e7f4b1f8a1d542b2c9","signature":false,"impliedFormat":1},{"version":"178071ccd043967a58c5d1a032db0ddf9bd139e7920766b537d9783e88eb615e","signature":false,"impliedFormat":1},{"version":"3a17f09634c50cce884721f54fd9e7b98e03ac505889c560876291fcf8a09e90","signature":false,"impliedFormat":1},{"version":"32531dfbb0cdc4525296648f53b2b5c39b64282791e2a8c765712e49e6461046","signature":false,"impliedFormat":1},{"version":"0ce1b2237c1c3df49748d61568160d780d7b26693bd9feb3acb0744a152cd86d","signature":false,"impliedFormat":1},{"version":"e489985388e2c71d3542612685b4a7db326922b57ac880f299da7026a4e8a117","signature":false,"impliedFormat":1},{"version":"5cad4158616d7793296dd41e22e1257440910ea8d01c7b75045d4dfb20c5a41a","signature":false,"impliedFormat":1},{"version":"04d3aad777b6af5bd000bfc409907a159fe77e190b9d368da4ba649cdc28d39e","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"74efc1d6523bd57eb159c18d805db4ead810626bc5bc7002a2c7f483044b2e0f","signature":false,"impliedFormat":1},{"version":"19252079538942a69be1645e153f7dbbc1ef56b4f983c633bf31fe26aeac32cd","signature":false,"impliedFormat":1},{"version":"bc11f3ac00ac060462597add171220aed628c393f2782ac75dd29ff1e0db871c","signature":false,"impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","signature":false,"impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","signature":false,"impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","signature":false,"impliedFormat":1},{"version":"3b0b1d352b8d2e47f1c4df4fb0678702aee071155b12ef0185fce9eb4fa4af1e","signature":false,"impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","signature":false,"impliedFormat":1},{"version":"a344403e7a7384e0e7093942533d309194ad0a53eca2a3100c0b0ab4d3932773","signature":false,"impliedFormat":1},{"version":"b7fff2d004c5879cae335db8f954eb1d61242d9f2d28515e67902032723caeab","signature":false,"impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","signature":false,"impliedFormat":1},{"version":"bb18bf4a61a17b4a6199eb3938ecfa4a59eb7c40843ad4a82b975ab6f7e3d925","signature":false,"impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","signature":false,"impliedFormat":1},{"version":"e9b6fc05f536dfddcdc65dbcf04e09391b1c968ab967382e48924f5cb90d88e1","signature":false,"impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","signature":false,"impliedFormat":1},{"version":"2b664c3cc544d0e35276e1fb2d4989f7d4b4027ffc64da34ec83a6ccf2e5c528","signature":false,"impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","signature":false,"impliedFormat":1},{"version":"3cd8f0464e0939b47bfccbb9bb474a6d87d57210e304029cd8eb59c63a81935d","signature":false,"impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","signature":false,"impliedFormat":1},{"version":"3026abd48e5e312f2328629ede6e0f770d21c3cd32cee705c450e589d015ee09","signature":false,"impliedFormat":1},{"version":"8b140b398a6afbd17cc97c38aea5274b2f7f39b1ae5b62952cfe65bf493e3e75","signature":false,"impliedFormat":1},{"version":"7663d2c19ce5ef8288c790edba3d45af54e58c84f1b37b1249f6d49d962f3d91","signature":false,"impliedFormat":1},{"version":"5cce3b975cdb72b57ae7de745b3c5de5790781ee88bcb41ba142f07c0fa02e97","signature":false,"impliedFormat":1},{"version":"00bd6ebe607246b45296aa2b805bd6a58c859acecda154bfa91f5334d7c175c6","signature":false,"impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","signature":false,"impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","signature":false,"impliedFormat":1},{"version":"0d28b974a7605c4eda20c943b3fa9ae16cb452c1666fc9b8c341b879992c7612","signature":false,"impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","signature":false,"impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","signature":false,"impliedFormat":1},{"version":"87ac2fb61e629e777f4d161dff534c2023ee15afd9cb3b1589b9b1f014e75c58","signature":false,"impliedFormat":1},{"version":"13c8b4348db91e2f7d694adc17e7438e6776bc506d5c8f5de9ad9989707fa3fe","signature":false,"impliedFormat":1},{"version":"3c1051617aa50b38e9efaabce25e10a5dd9b1f42e372ef0e8a674076a68742ed","signature":false,"impliedFormat":1},{"version":"07a3e20cdcb0f1182f452c0410606711fbea922ca76929a41aacb01104bc0d27","signature":false,"impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","signature":false,"impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","signature":false,"impliedFormat":1},{"version":"4cd4b6b1279e9d744a3825cbd7757bbefe7f0708f3f1069179ad535f19e8ed2c","signature":false,"impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","signature":false,"impliedFormat":1},{"version":"c0eeaaa67c85c3bb6c52b629ebbfd3b2292dc67e8c0ffda2fc6cd2f78dc471e6","signature":false,"impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","signature":false,"impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","signature":false,"impliedFormat":1},{"version":"b95a6f019095dd1d48fd04965b50dfd63e5743a6e75478343c46d2582a5132bf","signature":false,"impliedFormat":99},{"version":"c2008605e78208cfa9cd70bd29856b72dda7ad89df5dc895920f8e10bcb9cd0a","signature":false,"impliedFormat":99},{"version":"b97cb5616d2ab82a98ec9ada7b9e9cabb1f5da880ec50ea2b8dc5baa4cbf3c16","signature":false,"impliedFormat":99},{"version":"d23df9ff06ae8bf1dcb7cc933e97ae7da418ac77749fecee758bb43a8d69f840","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"040c71dde2c406f869ad2f41e8d4ce579cc60c8dbe5aa0dd8962ac943b846572","signature":false,"affectsGlobalScope":true,"impliedFormat":1},{"version":"3586f5ea3cc27083a17bd5c9059ede9421d587286d5a47f4341a4c2d00e4fa91","signature":false,"impliedFormat":1},{"version":"a6df929821e62f4719551f7955b9f42c0cd53c1370aec2dd322e24196a7dfe33","signature":false,"impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","signature":false,"impliedFormat":1},{"version":"9dd9d642cdb87d4d5b3173217e0c45429b3e47a6f5cf5fb0ead6c644ec5fed01","signature":false},{"version":"bf7fe6b10536c940ef170af38c316d2eea7bf92bb68194a35d61a13c143af779","signature":false},{"version":"50cfd917cd0115df89bd5aa0ae202009d778b8844bb0e2223cbebc90ec5f0953","signature":false},{"version":"72c3b9c53835278c87af4c916e27421d4e8472f64edf7089148a722bfcd79bfb","signature":false},{"version":"eca4f3053cf6ddbef30ec23f5ad06b92a9180dd5d97b9b1037ebe7112c00fccc","signature":false},{"version":"3c4202a4da1f4040e7baac7e2367ca4efb85d4e15d8c24c17a61c1e9a5dfb5e7","signature":false},{"version":"346214c37934804ce3dfdc9cd98b32c1a27cd433ab88c034dceb40202dba6dd5","signature":false},{"version":"7f05cdad2d0e39113c155ae1bd064eb30ff1eb8bba61ca7b8cf9045b4115533b","signature":false},{"version":"2644a2a5e97e7ae1e71a5d6c6c428328d9fc2fdc100fe742643b87cefb67bd28","signature":false},{"version":"1c801f03c66242394c5d3b581f592dc08d66753c1eac554418b49e4723474e22","signature":false},{"version":"f57d0c88a529fc033857cc17685e83e529da20a900437f7007816f2ec71e18f4","signature":false},{"version":"fecbd238b967445e78eb631e16a402ddebc87e37b409a1844427e68332567a3b","signature":false},{"version":"dd98e10eae24aeb7b3379bf1f163c1395b852cf3da3f555048abcde9f9f97501","signature":false}],"root":[[410,422]],"options":{"allowJs":true,"composite":false,"declarationMap":false,"emitDeclarationOnly":false,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[419,1],[417,2],[418,3],[420,4],[421,5],[422,6],[413,7],[411,8],[412,7],[414,7],[415,7],[416,7],[410,9],[363,8],[142,10],[143,10],[144,11],[99,12],[145,13],[146,14],[147,15],[94,8],[97,16],[95,8],[96,8],[148,17],[149,18],[150,19],[151,20],[152,21],[153,22],[154,22],[155,23],[156,24],[157,25],[158,26],[100,8],[98,8],[159,27],[160,28],[161,29],[193,30],[162,31],[163,32],[164,33],[165,34],[166,35],[167,36],[168,37],[169,38],[170,39],[171,40],[172,40],[173,41],[174,8],[175,42],[177,43],[176,44],[178,45],[179,46],[180,47],[181,48],[182,49],[183,50],[184,51],[185,52],[186,53],[187,54],[188,55],[189,56],[190,57],[101,8],[102,8],[103,8],[141,58],[191,59],[192,60],[86,8],[198,61],[199,62],[197,63],[195,64],[196,65],[84,8],[87,66],[286,63],[85,8],[93,67],[366,68],[370,69],[372,70],[219,71],[233,72],[337,73],[265,8],[340,74],[301,75],[310,76],[338,77],[220,78],[264,8],[266,79],[339,80],[240,81],[221,82],[245,81],[234,81],[204,81],[292,83],[293,84],[209,8],[289,85],[294,86],[381,87],[287,86],[382,88],[271,8],[290,89],[394,90],[393,91],[296,86],[392,8],[390,8],[391,92],[291,63],[278,93],[279,94],[288,95],[305,96],[306,97],[295,98],[273,99],[274,100],[385,101],[388,102],[252,103],[251,104],[250,105],[397,63],[249,106],[225,8],[400,8],[403,8],[402,63],[404,107],[200,8],[331,8],[232,108],[202,109],[354,8],[355,8],[357,8],[360,110],[356,8],[358,111],[359,111],[218,8],[231,8],[365,112],[373,113],[377,114],[214,115],[281,116],[280,8],[272,99],[300,117],[298,118],[297,8],[299,8],[304,119],[276,120],[213,121],[238,122],[328,123],[205,124],[212,125],[201,73],[342,126],[352,127],[341,8],[351,128],[239,8],[223,129],[319,130],[318,8],[325,131],[327,132],[320,133],[324,134],[326,131],[323,133],[322,131],[321,133],[261,135],[246,135],[313,136],[247,136],[207,137],[206,8],[317,138],[316,139],[315,140],[314,141],[208,142],[285,143],[302,144],[284,145],[309,146],[311,147],[308,145],[241,142],[194,8],[329,148],[267,149],[303,8],[350,150],[270,151],[345,152],[211,8],[346,153],[348,154],[349,155],[332,8],[344,124],[243,156],[330,157],[353,158],[215,8],[217,8],[222,159],[312,160],[210,161],[216,8],[269,162],[268,163],[224,164],[277,165],[275,166],[226,167],[228,168],[401,8],[227,169],[229,170],[368,8],[367,8],[369,8],[399,8],[230,171],[283,63],[92,8],[307,172],[253,8],[263,173],[242,8],[375,63],[384,174],[260,63],[379,86],[259,175],[362,176],[258,174],[203,8],[386,177],[256,63],[257,63],[248,8],[262,8],[255,178],[254,179],[244,180],[237,98],[347,8],[236,181],[235,8],[371,8],[282,63],[364,182],[83,8],[91,183],[88,63],[89,8],[90,8],[343,184],[336,185],[335,8],[334,186],[333,8],[374,187],[376,188],[378,189],[380,190],[383,191],[409,192],[387,192],[408,193],[389,194],[395,195],[396,196],[398,197],[405,198],[407,8],[406,199],[361,200],[81,8],[82,8],[13,8],[14,8],[16,8],[15,8],[2,8],[17,8],[18,8],[19,8],[20,8],[21,8],[22,8],[23,8],[24,8],[3,8],[25,8],[26,8],[4,8],[27,8],[31,8],[28,8],[29,8],[30,8],[32,8],[33,8],[34,8],[5,8],[35,8],[36,8],[37,8],[38,8],[6,8],[42,8],[39,8],[40,8],[41,8],[43,8],[7,8],[44,8],[49,8],[50,8],[45,8],[46,8],[47,8],[48,8],[8,8],[54,8],[51,8],[52,8],[53,8],[55,8],[9,8],[56,8],[57,8],[58,8],[60,8],[59,8],[61,8],[62,8],[10,8],[63,8],[64,8],[65,8],[11,8],[66,8],[67,8],[68,8],[69,8],[70,8],[1,8],[71,8],[72,8],[12,8],[76,8],[74,8],[79,8],[78,8],[73,8],[77,8],[75,8],[80,8],[119,201],[129,202],[118,201],[139,203],[110,204],[109,205],[138,199],[132,206],[137,207],[112,208],[126,209],[111,210],[135,211],[107,212],[106,199],[136,213],[108,214],[113,215],[114,8],[117,215],[104,8],[140,216],[130,217],[121,218],[122,219],[124,220],[120,221],[123,222],[133,199],[115,223],[116,224],[125,225],[105,226],[128,217],[127,215],[131,8],[134,227]],"changeFileSet":[419,417,418,420,421,422,413,411,412,414,415,416,410,363,142,143,144,99,145,146,147,94,97,95,96,148,149,150,151,152,153,154,155,156,157,158,100,98,159,160,161,193,162,163,164,165,166,167,168,169,170,171,172,173,174,175,177,176,178,179,180,181,182,183,184,185,186,187,188,189,190,101,102,103,141,191,192,86,198,199,197,195,196,84,87,286,85,93,366,370,372,219,233,337,265,340,301,310,338,220,264,266,339,240,221,245,234,204,292,293,209,289,294,381,287,382,271,290,394,393,296,392,390,391,291,278,279,288,305,306,295,273,274,385,388,252,251,250,397,249,225,400,403,402,404,200,331,232,202,354,355,357,360,356,358,359,218,231,365,373,377,214,281,280,272,300,298,297,299,304,276,213,238,328,205,212,201,342,352,341,351,239,223,319,318,325,327,320,324,326,323,322,321,261,246,313,247,207,206,317,316,315,314,208,285,302,284,309,311,308,241,194,329,267,303,350,270,345,211,346,348,349,332,344,243,330,353,215,217,222,312,210,216,269,268,224,277,275,226,228,401,227,229,368,367,369,399,230,283,92,307,253,263,242,375,384,260,379,259,362,258,203,386,256,257,248,262,255,254,244,237,347,236,235,371,282,364,83,91,88,89,90,343,336,335,334,333,374,376,378,380,383,409,387,408,389,395,396,398,405,407,406,361,81,82,13,14,16,15,2,17,18,19,20,21,22,23,24,3,25,26,4,27,31,28,29,30,32,33,34,5,35,36,37,38,6,42,39,40,41,43,7,44,49,50,45,46,47,48,8,54,51,52,53,55,9,56,57,58,60,59,61,62,10,63,64,65,11,66,67,68,69,70,1,71,72,12,76,74,79,78,73,77,75,80,119,129,118,139,110,109,138,132,137,112,126,111,135,107,106,136,108,113,114,117,104,140,130,121,122,124,120,123,133,115,116,125,105,128,127,131,134],"version":"5.9.3"} \ No newline at end of file diff --git a/site/.next/cache/webpack/client-development/0.pack.gz b/site/.next/cache/webpack/client-development/0.pack.gz new file mode 100644 index 0000000..fa7919a Binary files /dev/null and b/site/.next/cache/webpack/client-development/0.pack.gz differ diff --git a/site/.next/cache/webpack/client-development/1.pack.gz b/site/.next/cache/webpack/client-development/1.pack.gz new file mode 100644 index 0000000..a1d8774 Binary files /dev/null and b/site/.next/cache/webpack/client-development/1.pack.gz differ diff --git a/site/.next/cache/webpack/client-development/index.pack.gz b/site/.next/cache/webpack/client-development/index.pack.gz new file mode 100644 index 0000000..fd29e39 Binary files /dev/null and b/site/.next/cache/webpack/client-development/index.pack.gz differ diff --git a/site/.next/cache/webpack/client-development/index.pack.gz.old b/site/.next/cache/webpack/client-development/index.pack.gz.old new file mode 100644 index 0000000..8a3fead Binary files /dev/null and b/site/.next/cache/webpack/client-development/index.pack.gz.old differ diff --git a/site/.next/cache/webpack/client-production/0.pack b/site/.next/cache/webpack/client-production/0.pack new file mode 100644 index 0000000..39fdfd8 Binary files /dev/null and b/site/.next/cache/webpack/client-production/0.pack differ diff --git a/site/.next/cache/webpack/client-production/1.pack b/site/.next/cache/webpack/client-production/1.pack new file mode 100644 index 0000000..8f31fdf Binary files /dev/null and b/site/.next/cache/webpack/client-production/1.pack differ diff --git a/site/.next/cache/webpack/client-production/10.pack b/site/.next/cache/webpack/client-production/10.pack new file mode 100644 index 0000000..a894091 Binary files /dev/null and b/site/.next/cache/webpack/client-production/10.pack differ diff --git a/site/.next/cache/webpack/client-production/11.pack b/site/.next/cache/webpack/client-production/11.pack new file mode 100644 index 0000000..8832c7e Binary files /dev/null and b/site/.next/cache/webpack/client-production/11.pack differ diff --git a/site/.next/cache/webpack/client-production/12.pack b/site/.next/cache/webpack/client-production/12.pack new file mode 100644 index 0000000..abf3338 Binary files /dev/null and b/site/.next/cache/webpack/client-production/12.pack differ diff --git a/site/.next/cache/webpack/client-production/13.pack b/site/.next/cache/webpack/client-production/13.pack new file mode 100644 index 0000000..94d393c Binary files /dev/null and b/site/.next/cache/webpack/client-production/13.pack differ diff --git a/site/.next/cache/webpack/client-production/2.pack b/site/.next/cache/webpack/client-production/2.pack new file mode 100644 index 0000000..0a77e3f Binary files /dev/null and b/site/.next/cache/webpack/client-production/2.pack differ diff --git a/site/.next/cache/webpack/client-production/3.pack b/site/.next/cache/webpack/client-production/3.pack new file mode 100644 index 0000000..41f7393 Binary files /dev/null and b/site/.next/cache/webpack/client-production/3.pack differ diff --git a/site/.next/cache/webpack/client-production/4.pack b/site/.next/cache/webpack/client-production/4.pack new file mode 100644 index 0000000..9b8267f Binary files /dev/null and b/site/.next/cache/webpack/client-production/4.pack differ diff --git a/site/.next/cache/webpack/client-production/5.pack b/site/.next/cache/webpack/client-production/5.pack new file mode 100644 index 0000000..09ac209 Binary files /dev/null and b/site/.next/cache/webpack/client-production/5.pack differ diff --git a/site/.next/cache/webpack/client-production/6.pack b/site/.next/cache/webpack/client-production/6.pack new file mode 100644 index 0000000..ed516fc Binary files /dev/null and b/site/.next/cache/webpack/client-production/6.pack differ diff --git a/site/.next/cache/webpack/client-production/7.pack b/site/.next/cache/webpack/client-production/7.pack new file mode 100644 index 0000000..205d33d Binary files /dev/null and b/site/.next/cache/webpack/client-production/7.pack differ diff --git a/site/.next/cache/webpack/client-production/8.pack b/site/.next/cache/webpack/client-production/8.pack new file mode 100644 index 0000000..fccdac0 Binary files /dev/null and b/site/.next/cache/webpack/client-production/8.pack differ diff --git a/site/.next/cache/webpack/client-production/9.pack b/site/.next/cache/webpack/client-production/9.pack new file mode 100644 index 0000000..536383e Binary files /dev/null and b/site/.next/cache/webpack/client-production/9.pack differ diff --git a/site/.next/cache/webpack/client-production/index.pack b/site/.next/cache/webpack/client-production/index.pack new file mode 100644 index 0000000..1aad90b Binary files /dev/null and b/site/.next/cache/webpack/client-production/index.pack differ diff --git a/site/.next/cache/webpack/client-production/index.pack.old b/site/.next/cache/webpack/client-production/index.pack.old new file mode 100644 index 0000000..10ef8a1 Binary files /dev/null and b/site/.next/cache/webpack/client-production/index.pack.old differ diff --git a/site/.next/cache/webpack/edge-server-production/0.pack b/site/.next/cache/webpack/edge-server-production/0.pack new file mode 100644 index 0000000..2a73bc8 Binary files /dev/null and b/site/.next/cache/webpack/edge-server-production/0.pack differ diff --git a/site/.next/cache/webpack/edge-server-production/index.pack b/site/.next/cache/webpack/edge-server-production/index.pack new file mode 100644 index 0000000..a986fe0 Binary files /dev/null and b/site/.next/cache/webpack/edge-server-production/index.pack differ diff --git a/site/.next/cache/webpack/edge-server-production/index.pack.old b/site/.next/cache/webpack/edge-server-production/index.pack.old new file mode 100644 index 0000000..8276be2 Binary files /dev/null and b/site/.next/cache/webpack/edge-server-production/index.pack.old differ diff --git a/site/.next/cache/webpack/server-development/0.pack.gz b/site/.next/cache/webpack/server-development/0.pack.gz new file mode 100644 index 0000000..fbaf189 Binary files /dev/null and b/site/.next/cache/webpack/server-development/0.pack.gz differ diff --git a/site/.next/cache/webpack/server-development/index.pack.gz b/site/.next/cache/webpack/server-development/index.pack.gz new file mode 100644 index 0000000..23f4720 Binary files /dev/null and b/site/.next/cache/webpack/server-development/index.pack.gz differ diff --git a/site/.next/cache/webpack/server-production/0.pack b/site/.next/cache/webpack/server-production/0.pack new file mode 100644 index 0000000..c4d3086 Binary files /dev/null and b/site/.next/cache/webpack/server-production/0.pack differ diff --git a/site/.next/cache/webpack/server-production/1.pack b/site/.next/cache/webpack/server-production/1.pack new file mode 100644 index 0000000..848a232 Binary files /dev/null and b/site/.next/cache/webpack/server-production/1.pack differ diff --git a/site/.next/cache/webpack/server-production/2.pack b/site/.next/cache/webpack/server-production/2.pack new file mode 100644 index 0000000..e238543 Binary files /dev/null and b/site/.next/cache/webpack/server-production/2.pack differ diff --git a/site/.next/cache/webpack/server-production/3.pack b/site/.next/cache/webpack/server-production/3.pack new file mode 100644 index 0000000..fd674a5 Binary files /dev/null and b/site/.next/cache/webpack/server-production/3.pack differ diff --git a/site/.next/cache/webpack/server-production/4.pack b/site/.next/cache/webpack/server-production/4.pack new file mode 100644 index 0000000..9babc64 Binary files /dev/null and b/site/.next/cache/webpack/server-production/4.pack differ diff --git a/site/.next/cache/webpack/server-production/5.pack b/site/.next/cache/webpack/server-production/5.pack new file mode 100644 index 0000000..6871743 Binary files /dev/null and b/site/.next/cache/webpack/server-production/5.pack differ diff --git a/site/.next/cache/webpack/server-production/6.pack b/site/.next/cache/webpack/server-production/6.pack new file mode 100644 index 0000000..e313961 Binary files /dev/null and b/site/.next/cache/webpack/server-production/6.pack differ diff --git a/site/.next/cache/webpack/server-production/index.pack b/site/.next/cache/webpack/server-production/index.pack new file mode 100644 index 0000000..d244487 Binary files /dev/null and b/site/.next/cache/webpack/server-production/index.pack differ diff --git a/site/.next/cache/webpack/server-production/index.pack.old b/site/.next/cache/webpack/server-production/index.pack.old new file mode 100644 index 0000000..bb88356 Binary files /dev/null and b/site/.next/cache/webpack/server-production/index.pack.old differ diff --git a/site/.next/export-marker.json b/site/.next/export-marker.json new file mode 100644 index 0000000..07328d6 --- /dev/null +++ b/site/.next/export-marker.json @@ -0,0 +1 @@ +{"version":1,"hasExportPathMap":false,"exportTrailingSlash":false,"isNextImageImported":false} \ No newline at end of file diff --git a/site/.next/images-manifest.json b/site/.next/images-manifest.json new file mode 100644 index 0000000..3be0467 --- /dev/null +++ b/site/.next/images-manifest.json @@ -0,0 +1 @@ +{"version":1,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false,"sizes":[640,750,828,1080,1200,1920,2048,3840,16,32,48,64,96,128,256,384]}} \ No newline at end of file diff --git a/site/.next/next-minimal-server.js.nft.json b/site/.next/next-minimal-server.js.nft.json new file mode 100644 index 0000000..fd7c357 --- /dev/null +++ b/site/.next/next-minimal-server.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../node_modules/styled-jsx/index.js","../node_modules/styled-jsx/package.json","../node_modules/styled-jsx/dist/index/index.js","../node_modules/react/package.json","../node_modules/react/index.js","../node_modules/client-only/package.json","../node_modules/react/cjs/react.production.min.js","../node_modules/client-only/index.js","../node_modules/styled-jsx/style.js","../node_modules/next/dist/compiled/next-server/server.runtime.prod.js","../node_modules/next/package.json","../node_modules/next/dist/lib/constants.js","../node_modules/next/dist/server/body-streams.js","../node_modules/next/dist/lib/picocolors.js","../node_modules/next/dist/shared/lib/constants.js","../node_modules/next/dist/server/web/utils.js","../node_modules/next/dist/client/components/app-router-headers.js","../node_modules/next/dist/server/lib/trace/tracer.js","../node_modules/next/dist/server/lib/trace/constants.js","../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../node_modules/next/dist/compiled/debug/package.json","../node_modules/next/dist/shared/lib/error-source.js","../node_modules/next/dist/shared/lib/modern-browserslist-target.js","../node_modules/next/dist/compiled/debug/index.js","../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../node_modules/next/dist/compiled/ws/package.json","../node_modules/next/dist/shared/lib/runtime-config.external.js","../node_modules/next/dist/compiled/lru-cache/package.json","../node_modules/next/dist/compiled/node-html-parser/package.json","../node_modules/@swc/helpers/_/_interop_require_default/package.json","../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../node_modules/next/dist/compiled/ws/index.js","../node_modules/next/dist/compiled/lru-cache/index.js","../node_modules/next/dist/compiled/node-html-parser/index.js","../node_modules/@swc/helpers/package.json","../node_modules/next/dist/compiled/jsonwebtoken/package.json","../node_modules/next/dist/client/components/async-local-storage.js","../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/parseStack.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/nodeStackFrames.js","../node_modules/next/dist/compiled/jsonwebtoken/index.js","../node_modules/next/dist/compiled/browserslist/package.json","../node_modules/next/dist/client/components/react-dev-overlay/server/middleware.js","../node_modules/next/dist/compiled/browserslist/index.js","../node_modules/next/dist/compiled/babel/code-frame.js","../node_modules/next/dist/client/components/react-dev-overlay/server/shared.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getRawSourceMap.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/launchEditor.js","../node_modules/next/dist/lib/semver-noop.js","../node_modules/next/dist/compiled/json5/package.json","../node_modules/next/dist/compiled/semver/package.json","../node_modules/next/dist/compiled/babel/package.json","../node_modules/caniuse-lite/dist/unpacker/feature.js","../node_modules/caniuse-lite/dist/unpacker/region.js","../node_modules/caniuse-lite/dist/unpacker/agents.js","../node_modules/next/dist/compiled/json5/index.js","../node_modules/next/dist/compiled/semver/index.js","../node_modules/next/dist/compiled/stacktrace-parser/package.json","../node_modules/next/dist/compiled/source-map08/package.json","../node_modules/caniuse-lite/package.json","../node_modules/next/dist/compiled/babel/bundle.js","../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../node_modules/next/dist/compiled/source-map08/source-map.js","../node_modules/caniuse-lite/data/agents.js","../node_modules/caniuse-lite/dist/lib/statuses.js","../node_modules/caniuse-lite/dist/unpacker/browsers.js","../node_modules/caniuse-lite/dist/lib/supported.js","../node_modules/caniuse-lite/dist/unpacker/browserVersions.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getSourceMapUrl.js","../node_modules/next/dist/compiled/babel/core.js","../node_modules/next/dist/compiled/data-uri-to-buffer/package.json","../node_modules/next/dist/compiled/shell-quote/package.json","../node_modules/caniuse-lite/data/browsers.js","../node_modules/caniuse-lite/data/browserVersions.js","../node_modules/next/dist/compiled/data-uri-to-buffer/index.js","../node_modules/next/dist/compiled/shell-quote/index.js","../node_modules/next/dist/compiled/babel-packages/package.json","../node_modules/next/dist/compiled/babel-packages/packages-bundle.js","../node_modules/next/dist/compiled/babel/parser.js","../node_modules/next/dist/compiled/babel/traverse.js","../node_modules/next/dist/compiled/babel/types.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/server-inserted-html.js","../node_modules/next/dist/server/future/route-modules/pages/module.compiled.js"]} \ No newline at end of file diff --git a/site/.next/next-server.js.nft.json b/site/.next/next-server.js.nft.json new file mode 100644 index 0000000..15a2e2e --- /dev/null +++ b/site/.next/next-server.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../node_modules/next/dist/compiled/jest-worker/processChild.js","../node_modules/next/dist/compiled/jest-worker/threadChild.js","../node_modules/styled-jsx/index.js","../node_modules/styled-jsx/package.json","../node_modules/styled-jsx/dist/index/index.js","../node_modules/react/package.json","../node_modules/react/index.js","../node_modules/client-only/package.json","../node_modules/react/cjs/react.production.min.js","../node_modules/client-only/index.js","../node_modules/styled-jsx/style.js","../node_modules/next/dist/server/lib/start-server.js","../node_modules/next/dist/server/next.js","../node_modules/next/dist/server/require-hook.js","../node_modules/next/dist/server/next-server.js","../node_modules/next/package.json","../node_modules/next/dist/server/node-polyfill-crypto.js","../node_modules/next/dist/server/config.js","../node_modules/next/dist/lib/constants.js","../node_modules/next/dist/server/next-typescript.js","../node_modules/next/dist/server/base-server.js","../node_modules/next/dist/server/node-environment.js","../node_modules/next/dist/server/request-meta.js","../node_modules/next/dist/lib/find-pages-dir.js","../node_modules/next/dist/server/send-payload.js","../node_modules/next/dist/server/require.js","../node_modules/next/dist/server/load-components.js","../node_modules/next/dist/lib/is-error.js","../node_modules/next/dist/server/body-streams.js","../node_modules/next/dist/server/setup-http-agent-env.js","../node_modules/next/dist/server/pipe-readable.js","../node_modules/next/dist/server/load-manifest.js","../node_modules/next/dist/lib/interop-default.js","../node_modules/next/dist/lib/format-dynamic-import-path.js","../node_modules/next/dist/lib/generate-interception-routes-rewrites.js","../node_modules/next/dist/server/image-optimizer.js","../node_modules/next/dist/server/serve-static.js","../node_modules/next/dist/lib/format-server-error.js","../node_modules/next/dist/lib/picocolors.js","../node_modules/next/dist/lib/turbopack-warning.js","../node_modules/next/dist/build/output/log.js","../node_modules/next/dist/shared/lib/constants.js","../node_modules/next/dist/server/lib/utils.js","../node_modules/next/dist/server/dev/next-dev-server.js","../node_modules/next/dist/shared/lib/utils.js","../node_modules/next/dist/server/base-http/node.js","../node_modules/next/dist/server/web/utils.js","../node_modules/next/dist/server/lib/node-fs-methods.js","../node_modules/next/dist/server/lib/mock-request.js","../node_modules/next/dist/client/components/app-router-headers.js","../node_modules/next/dist/server/lib/format-hostname.js","../node_modules/next/dist/server/lib/router-server.js","../node_modules/next/dist/server/lib/app-info-log.js","../node_modules/next/dist/server/lib/trace/tracer.js","../node_modules/next/dist/server/lib/trace/constants.js","../node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js","../node_modules/next/dist/shared/lib/page-path/normalize-page-path.js","../node_modules/next/dist/server/future/route-matches/pages-api-route-match.js","../node_modules/next/dist/server/lib/router-utils/is-postpone.js","../node_modules/next/dist/shared/lib/router/utils/format-url.js","../node_modules/next/dist/shared/lib/router/utils/route-matcher.js","../node_modules/next/dist/shared/lib/router/utils/parse-url.js","../node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.js","../node_modules/next/dist/shared/lib/router/utils/querystring.js","../node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js","../node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js","../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../node_modules/next/dist/shared/lib/router/utils/route-regex.js","../node_modules/next/dist/server/future/helpers/module-loader/route-module-loader.js","../node_modules/next/dist/server/web/spec-extension/adapters/next-request.js","../node_modules/next/dist/server/future/route-modules/app-page/module.render.js","../node_modules/next/dist/server/future/route-modules/pages/module.render.js","../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../node_modules/next/dist/client/components/action-async-storage.external.js","../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../node_modules/next/dist/client/components/request-async-storage.external.js","../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../node_modules/next/dist/trace/index.js","../node_modules/react/jsx-runtime.js","../node_modules/next/dist/server/api-utils/index.js","../node_modules/next/dist/server/response-cache/index.js","../node_modules/next/dist/server/lib/incremental-cache/index.js","../node_modules/next/dist/experimental/testmode/server.js","../node_modules/next/dist/server/web/sandbox/index.js","../node_modules/@next/env/package.json","../node_modules/next/dist/compiled/watchpack/package.json","../node_modules/next/dist/compiled/debug/package.json","../node_modules/next/dist/server/config-shared.js","../node_modules/next/dist/server/config-utils.js","../node_modules/next/dist/telemetry/flush-and-exit.js","../node_modules/next/dist/lib/find-root.js","../node_modules/next/dist/telemetry/ci-info.js","../node_modules/next/dist/server/config-schema.js","../node_modules/next/dist/lib/wait.js","../node_modules/next/dist/lib/detached-promise.js","../node_modules/next/dist/server/client-component-renderer-logger.js","../node_modules/next/dist/lib/url.js","../node_modules/next/dist/build/get-babel-config-file.js","../node_modules/next/dist/shared/lib/image-config.js","../node_modules/next/dist/shared/lib/match-remote-pattern.js","../node_modules/@next/env/dist/index.js","../node_modules/next/dist/telemetry/storage.js","../node_modules/next/dist/server/load-default-error-components.js","../node_modules/next/dist/lib/coalesced-function.js","../node_modules/next/dist/build/utils.js","../node_modules/next/dist/lib/build-custom-route.js","../node_modules/next/dist/server/app-render/action-utils.js","../node_modules/next/dist/server/app-render/encryption-utils.js","../node_modules/next/dist/shared/lib/is-plain-object.js","../node_modules/next/dist/server/lib/revalidate.js","../node_modules/next/dist/server/lib/etag.js","../node_modules/next/dist/shared/lib/deep-freeze.js","../node_modules/next/dist/shared/lib/match-local-pattern.js","../node_modules/next/dist/shared/lib/image-blur-svg.js","../node_modules/next/dist/lib/helpers/get-pkg-manager.js","../node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js","../node_modules/next/dist/server/lib/find-page-file.js","../node_modules/next/dist/shared/lib/error-source.js","../node_modules/next/dist/server/dev/static-paths-worker.js","../node_modules/next/dist/server/future/helpers/interception-routes.js","../node_modules/next/dist/server/lib/squoosh/main.js","../node_modules/next/dist/shared/lib/modern-browserslist-target.js","../node_modules/next/dist/server/base-http/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js","../node_modules/next/dist/server/lib/is-ipv6.js","../node_modules/next/dist/server/future/route-matcher-managers/dev-route-matcher-manager.js","../node_modules/next/dist/server/future/route-kind.js","../node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js","../node_modules/next/dist/server/future/route-matcher-providers/dev/dev-pages-api-route-matcher-provider.js","../node_modules/next/dist/server/future/route-matcher-providers/dev/dev-pages-route-matcher-provider.js","../node_modules/next/dist/server/future/route-matcher-providers/dev/dev-app-route-route-matcher-provider.js","../node_modules/next/dist/server/future/route-matcher-providers/dev/dev-app-page-route-matcher-provider.js","../node_modules/next/dist/client/components/react-dev-overlay/pages/client.js","../node_modules/next/dist/compiled/watchpack/watchpack.js","../node_modules/next/dist/compiled/debug/index.js","../node_modules/next/dist/trace/shared.js","../node_modules/next/dist/trace/trace.js","../node_modules/next/dist/client/components/redirect-status-code.js","../node_modules/next/dist/server/lib/dev-bundler-service.js","../node_modules/next/dist/shared/lib/get-hostname.js","../node_modules/next/dist/shared/lib/normalized-asset-prefix.js","../node_modules/next/dist/server/lib/render-server.js","../node_modules/next/dist/server/typescript/index.js","../node_modules/next/dist/shared/lib/page-path/normalize-path-sep.js","../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../node_modules/next/dist/server/future/route-matcher-providers/helpers/manifest-loaders/node-manifest-loader.js","../node_modules/next/dist/shared/lib/segment.js","../node_modules/next/dist/shared/lib/escape-regexp.js","../node_modules/next/dist/server/lib/router-utils/proxy-request.js","../node_modules/next/dist/server/lib/router-utils/resolve-routes.js","../node_modules/next/dist/server/lib/router-utils/filesystem.js","../node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js","../node_modules/next/dist/server/lib/server-ipc/utils.js","../node_modules/next/dist/server/lib/router-utils/block-cross-site.js","../node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js","../node_modules/next/dist/shared/lib/i18n/get-locale-redirect.js","../node_modules/next/dist/lib/batcher.js","../node_modules/next/dist/lib/scheduler.js","../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../node_modules/next/dist/client/components/action-async-storage-instance.js","../node_modules/next/dist/client/components/request-async-storage-instance.js","../node_modules/next/dist/build/output/index.js","../node_modules/next/dist/server/future/route-matcher-providers/dev/helpers/file-reader/batched-file-reader.js","../node_modules/next/dist/server/future/route-matcher-providers/dev/helpers/file-reader/default-file-reader.js","../node_modules/next/dist/server/web/spec-extension/request.js","../node_modules/next/dist/server/response-cache/utils.js","../node_modules/next/dist/server/response-cache/types.js","../node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js","../node_modules/next/dist/shared/lib/router/utils/prepare-destination.js","../node_modules/next/dist/server/future/helpers/module-loader/node-module-loader.js","../node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","../node_modules/next/dist/server/future/route-modules/pages/module.compiled.js","../node_modules/next/dist/lib/redirect-status.js","../node_modules/next/dist/lib/is-edge-runtime.js","../node_modules/next/dist/server/utils.js","../node_modules/next/dist/server/render-result.js","../node_modules/next/dist/server/server-utils.js","../node_modules/next/dist/server/send-response.js","../node_modules/next/dist/experimental/testmode/context.js","../node_modules/next/dist/experimental/testmode/fetch.js","../node_modules/next/dist/experimental/testmode/httpget.js","../node_modules/next/dist/server/lib/to-route.js","../node_modules/next/dist/compiled/find-up/package.json","../node_modules/next/dist/compiled/zod/package.json","../node_modules/next/dist/server/web/spec-extension/adapters/headers.js","../node_modules/next/dist/server/lib/builtin-request-context.js","../node_modules/next/dist/compiled/ws/package.json","../node_modules/next/dist/shared/lib/runtime-config.external.js","../node_modules/next/dist/server/lib/match-next-data-pathname.js","../node_modules/next/dist/server/app-render/strip-flight-headers.js","../node_modules/next/dist/server/lib/server-action-request-meta.js","../node_modules/next/dist/compiled/lru-cache/package.json","../node_modules/next/dist/compiled/node-html-parser/package.json","../node_modules/next/dist/compiled/fresh/package.json","../node_modules/next/dist/compiled/content-disposition/package.json","../node_modules/next/dist/compiled/get-orientation/package.json","../node_modules/next/dist/compiled/send/package.json","../node_modules/next/dist/compiled/image-size/package.json","../node_modules/next/dist/compiled/is-animated/package.json","../node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js","../node_modules/next/dist/server/lib/incremental-cache/fetch-cache.js","../node_modules/next/dist/server/lib/incremental-cache/shared-revalidate-timings.js","../node_modules/next/dist/server/lib/server-ipc/request-utils.js","../node_modules/next/dist/server/web/sandbox/sandbox.js","../node_modules/next/dist/server/web/sandbox/context.js","../node_modules/next/dist/server/future/route-matcher-managers/default-route-matcher-manager.js","../node_modules/next/dist/server/future/route-matcher-providers/app-page-route-matcher-provider.js","../node_modules/next/dist/server/future/route-matcher-providers/app-route-route-matcher-provider.js","../node_modules/next/dist/server/future/route-matcher-providers/pages-api-route-matcher-provider.js","../node_modules/next/dist/server/future/route-matcher-providers/pages-route-matcher-provider.js","../node_modules/next/dist/server/future/helpers/i18n-provider.js","../node_modules/next/dist/server/future/normalizers/locale-route-normalizer.js","../node_modules/next/dist/server/future/route-modules/checks.js","../node_modules/next/dist/server/api-utils/node/try-get-preview-data.js","../node_modules/next/dist/compiled/@hapi/accept/package.json","../node_modules/next/dist/build/swc/index.js","../node_modules/react-dom/package.json","../node_modules/@swc/helpers/_/_interop_require_default/package.json","../node_modules/next/dist/compiled/commander/package.json","../node_modules/next/dist/shared/lib/router/utils/index.js","../node_modules/next/dist/compiled/jest-worker/package.json","../node_modules/next/dist/compiled/amphtml-validator/package.json","../node_modules/next/dist/compiled/path-to-regexp/index.js","../node_modules/next/dist/shared/lib/router/utils/is-bot.js","../node_modules/next/dist/shared/lib/router/utils/escape-path-delimiters.js","../node_modules/next/dist/shared/lib/router/utils/get-route-from-asset-path.js","../node_modules/next/dist/server/future/normalizers/request/rsc.js","../node_modules/next/dist/server/future/normalizers/request/postponed.js","../node_modules/next/dist/server/future/normalizers/request/action.js","../node_modules/next/dist/server/future/normalizers/request/prefetch-rsc.js","../node_modules/next/dist/server/future/normalizers/request/next-data.js","../node_modules/next/dist/server/future/route-modules/helpers/response-handlers.js","../node_modules/next/dist/telemetry/anonymous-meta.js","../node_modules/next/dist/telemetry/post-payload.js","../node_modules/next/dist/telemetry/project-id.js","../node_modules/next/dist/telemetry/detached-flush.js","../node_modules/next/dist/lib/pretty-bytes.js","../node_modules/next/dist/lib/client-reference.js","../node_modules/next/dist/lib/load-custom-routes.js","../node_modules/next/dist/server/future/route-matcher-providers/helpers/manifest-loaders/server-manifest-loader.js","../node_modules/next/dist/server/async-storage/static-generation-async-storage-wrapper.js","../node_modules/next/dist/compiled/compression/package.json","../node_modules/next/dist/lib/non-nullable.js","../node_modules/next/dist/lib/file-exists.js","../node_modules/react-dom/server.browser.js","../node_modules/next/dist/compiled/find-up/index.js","../node_modules/next/dist/compiled/zod/index.js","../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../node_modules/next/dist/compiled/ws/index.js","../node_modules/next/dist/compiled/lru-cache/index.js","../node_modules/next/dist/shared/lib/page-path/denormalize-app-path.js","../node_modules/next/dist/compiled/node-html-parser/index.js","../node_modules/next/dist/compiled/fresh/index.js","../node_modules/next/dist/compiled/content-disposition/index.js","../node_modules/next/dist/compiled/get-orientation/index.js","../node_modules/next/dist/compiled/image-size/index.js","../node_modules/next/dist/compiled/send/index.js","../node_modules/next/dist/compiled/is-animated/index.js","../node_modules/next/dist/lib/metadata/is-metadata-route.js","../node_modules/@swc/helpers/_/_interop_require_wildcard/package.json","../node_modules/next/dist/server/api-utils/get-cookie-parser.js","../node_modules/@swc/helpers/package.json","../node_modules/next/dist/shared/lib/router/utils/is-dynamic.js","../node_modules/next/dist/shared/lib/page-path/get-page-paths.js","../node_modules/next/dist/compiled/cookie/package.json","../node_modules/next/dist/compiled/commander/index.js","../node_modules/next/dist/compiled/jest-worker/index.js","../node_modules/next/dist/compiled/amphtml-validator/index.js","../node_modules/next/dist/compiled/@hapi/accept/index.js","../node_modules/next/dist/compiled/jsonwebtoken/package.json","../node_modules/next/dist/server/future/route-modules/pages/builtin/_error.js","../node_modules/next/dist/build/normalize-catchall-routes.js","../node_modules/next/dist/lib/is-app-route-route.js","../node_modules/next/dist/shared/lib/isomorphic/path.js","../node_modules/next/dist/server/server-route-utils.js","../node_modules/next/dist/server/accept-header.js","../node_modules/next/dist/compiled/webpack/webpack.js","../node_modules/next/dist/server/typescript/utils.js","../node_modules/next/dist/server/typescript/constant.js","../node_modules/next/dist/lib/recursive-readdir.js","../node_modules/next/dist/build/webpack/plugins/nextjs-require-cache-hot-reloader.js","../node_modules/next/dist/shared/lib/router/utils/parse-path.js","../node_modules/next/dist/client/components/async-local-storage.js","../node_modules/next/dist/compiled/compression/index.js","../node_modules/next/dist/server/app-render/csrf-protection.js","../node_modules/next/dist/server/typescript/rules/config.js","../node_modules/next/dist/server/typescript/rules/client-boundary.js","../node_modules/next/dist/server/typescript/rules/entry.js","../node_modules/next/dist/server/typescript/rules/server-boundary.js","../node_modules/next/dist/server/typescript/rules/metadata.js","../node_modules/next/dist/server/typescript/rules/error.js","../node_modules/next/dist/server/typescript/rules/server.js","../node_modules/next/dist/server/future/route-matchers/pages-api-route-matcher.js","../node_modules/next/dist/server/future/route-matchers/pages-route-matcher.js","../node_modules/next/dist/server/future/route-matchers/app-page-route-matcher.js","../node_modules/next/dist/server/future/route-matchers/app-route-route-matcher.js","../node_modules/next/dist/client/components/react-dev-overlay/shared.js","../node_modules/next/dist/lib/metadata/get-metadata-route.js","../node_modules/next/dist/build/load-jsconfig.js","../node_modules/next/dist/build/entries.js","../node_modules/next/dist/lib/verify-typescript-setup.js","../node_modules/next/dist/lib/verify-partytown-setup.js","../node_modules/next/dist/lib/create-client-router-filter.js","../node_modules/next/dist/lib/page-types.js","../node_modules/next/dist/build/output/store.js","../node_modules/next/dist/server/web/next-url.js","../node_modules/next/dist/server/web/error.js","../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../node_modules/next/dist/server/future/route-matcher-providers/dev/file-cache-route-matcher-provider.js","../node_modules/next/dist/client/components/react-dev-overlay/pages/bus.js","../node_modules/next/dist/client/components/react-dev-overlay/pages/ReactDevOverlay.js","../node_modules/next/dist/server/dev/hot-reloader-webpack.js","../node_modules/next/dist/server/dev/log-app-dir-error.js","../node_modules/next/dist/server/dev/hot-reloader-types.js","../node_modules/next/dist/server/dev/hot-reloader-turbopack.js","../node_modules/next/dist/compiled/ci-info/package.json","../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../node_modules/next/dist/compiled/webpack/package.json","../node_modules/next/dist/server/stream-utils/node-web-streams-helper.js","../node_modules/next/dist/server/web/spec-extension/cookies.js","../node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js","../node_modules/next/dist/shared/lib/router/utils/relativize-url.js","../node_modules/next/dist/server/future/normalizers/request/base-path.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/parseStack.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/parse-component-stack.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/hydration-error-info.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/nodeStackFrames.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getErrorByType.js","../node_modules/next/dist/compiled/cookie/index.js","../node_modules/next/dist/trace/report/index.js","../node_modules/next/dist/shared/lib/router/utils/path-match.js","../node_modules/next/dist/build/webpack/plugins/define-env-plugin.js","../node_modules/next/dist/server/lib/router-utils/build-data-route.js","../node_modules/next/dist/shared/lib/page-path/absolute-path-to-page.js","../node_modules/next/dist/compiled/jsonwebtoken/index.js","../node_modules/next/dist/compiled/conf/package.json","../node_modules/next/dist/compiled/is-docker/package.json","../node_modules/next/dist/compiled/text-table/package.json","../node_modules/next/dist/compiled/strip-ansi/package.json","../node_modules/next/dist/compiled/react-is/package.json","../node_modules/next/dist/compiled/browserslist/package.json","../node_modules/next/dist/compiled/gzip-size/package.json","../node_modules/next/dist/compiled/async-sema/package.json","../node_modules/next/dist/lib/pick.js","../node_modules/next/dist/client/components/react-dev-overlay/server/middleware.js","../node_modules/next/dist/build/webpack/plugins/next-types-plugin/shared.js","../node_modules/next/dist/client/components/react-dev-overlay/server/middleware-turbopack.js","../node_modules/next/dist/compiled/picomatch/package.json","../node_modules/next/dist/lib/patch-incorrect-lockfile.js","../node_modules/next/dist/lib/download-swc.js","../node_modules/next/dist/lib/is-app-page-route.js","../node_modules/next/dist/lib/is-api-route.js","../node_modules/next/dist/server/crypto-utils.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/format-webpack-messages.js","../node_modules/next/dist/compiled/@edge-runtime/ponyfill/package.json","../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/next/dist/build/swc/options.js","../node_modules/next/dist/telemetry/events/swc-load-failure.js","../node_modules/next/dist/lib/get-project-dir.js","../node_modules/next/dist/lib/try-to-parse-path.js","../node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs","../node_modules/next/dist/server/lib/server-ipc/invoke-request.js","../node_modules/next/dist/server/web/sandbox/fetch-inline-assets.js","../node_modules/next/dist/server/web/sandbox/resource-managers.js","../node_modules/next/dist/telemetry/events/index.js","../node_modules/next/dist/server/future/route-matchers/locale-route-matcher.js","../node_modules/next/dist/server/future/route-matcher-providers/manifest-route-matcher-provider.js","../node_modules/next/dist/server/web/spec-extension/adapters/reflect.js","../node_modules/next/dist/compiled/ci-info/index.js","../node_modules/next/dist/server/app-render/dynamic-rendering.js","../node_modules/next/dist/server/future/normalizers/built/pages/index.js","../node_modules/next/dist/server/future/normalizers/built/app/index.js","../node_modules/next/dist/shared/lib/router/utils/sorted-routes.js","../node_modules/next/dist/compiled/conf/index.js","../node_modules/next/dist/compiled/is-docker/index.js","../node_modules/next/dist/compiled/text-table/index.js","../node_modules/next/dist/compiled/strip-ansi/index.js","../node_modules/next/dist/compiled/react-is/index.js","../node_modules/next/dist/compiled/browserslist/index.js","../node_modules/next/dist/compiled/gzip-size/index.js","../node_modules/next/dist/compiled/async-sema/index.js","../node_modules/next/dist/server/future/normalizers/request/suffix.js","../node_modules/next/dist/server/future/normalizers/request/prefix.js","../node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js","../node_modules/next/dist/compiled/picomatch/index.js","../node_modules/next/dist/compiled/unistore/package.json","../node_modules/next/dist/compiled/http-proxy/package.json","../node_modules/next/dist/compiled/@edge-runtime/ponyfill/index.js","../node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js","../node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js","../node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js","../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../node_modules/next/dist/server/htmlescape.js","../node_modules/next/dist/lib/has-necessary-dependencies.js","../node_modules/next/dist/lib/is-internal-component.js","../node_modules/next/dist/client/router.js","../node_modules/next/dist/lib/compile-error.js","../node_modules/next/dist/lib/fatal-error.js","../node_modules/next/dist/lib/install-dependencies.js","../node_modules/next/dist/shared/lib/html-context.shared-runtime.js","../node_modules/next/dist/shared/lib/encode-uri-path.js","../node_modules/next/dist/server/future/route-modules/pages/module.js","../node_modules/next/dist/server/future/route-modules/app-page/module.js","../node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js","../node_modules/next/dist/build/analysis/get-page-static-info.js","../node_modules/next/dist/lib/typescript/getTypeScriptIntent.js","../node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js","../node_modules/next/dist/lib/typescript/writeConfigurationDefaults.js","../node_modules/next/dist/lib/typescript/runTypeCheck.js","../node_modules/next/dist/lib/typescript/missingDependencyError.js","../node_modules/next/dist/shared/lib/bloom-filter.js","../node_modules/next/dist/shared/lib/hash.js","../node_modules/next/dist/build/webpack-config.js","../node_modules/next/dist/lib/recursive-delete.js","../node_modules/next/dist/server/get-route-from-entrypoint.js","../node_modules/next/dist/server/future/normalizers/built/app/app-pathname-normalizer.js","../node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/package.json","../node_modules/next/dist/build/webpack/loaders/next-middleware-loader.js","../node_modules/next/dist/build/webpack/loaders/utils.js","../node_modules/next/dist/compiled/edge-runtime/package.json","../node_modules/next/dist/server/dev/hot-middleware.js","../node_modules/next/dist/server/dev/on-demand-entry-handler.js","../node_modules/next/dist/server/dev/parse-version-info.js","../node_modules/next/dist/server/dev/messages.js","../node_modules/next/dist/compiled/is-wsl/package.json","../node_modules/next/dist/compiled/async-retry/package.json","../node_modules/next/dist/server/future/route-matchers/route-matcher.js","../node_modules/next/dist/lib/needs-experimental-react.js","../node_modules/next/dist/server/dev/turbopack-utils.js","../node_modules/next/dist/server/stream-utils/encodedTags.js","../node_modules/next/dist/server/stream-utils/uint8array-helpers.js","../node_modules/next/dist/compiled/unistore/unistore.js","../node_modules/next/dist/compiled/http-proxy/index.js","../node_modules/next/dist/compiled/@napi-rs/triples/package.json","../node_modules/next/dist/trace/report/to-telemetry.js","../node_modules/next/dist/trace/report/to-json.js","../node_modules/next/dist/server/dev/turbopack/manifest-loader.js","../node_modules/next/dist/server/dev/turbopack/entry-key.js","../node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js","../node_modules/next/dist/lib/helpers/get-registry.js","../node_modules/next/dist/lib/helpers/get-cache-directory.js","../node_modules/next/dist/lib/detect-typo.js","../node_modules/next/dist/lib/realpath.js","../node_modules/next/dist/shared/lib/page-path/remove-page-path-tail.js","../node_modules/next/dist/compiled/p-limit/package.json","../node_modules/next/dist/server/future/route-matcher-providers/helpers/cached-route-matcher-provider.js","../node_modules/next/dist/client/components/react-dev-overlay/pages/ErrorBoundary.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/container/Errors.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/ShadowPortal.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/container/BuildError.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/styles/ComponentStyles.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/styles/Base.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/styles/CssReset.js","../node_modules/next/dist/telemetry/events/plugins.js","../node_modules/next/dist/telemetry/events/version.js","../node_modules/next/dist/telemetry/events/build.js","../node_modules/next/dist/compiled/babel/code-frame.js","../node_modules/next/dist/compiled/edge-runtime/index.js","../node_modules/next/dist/client/components/react-dev-overlay/server/shared.js","../node_modules/next/dist/compiled/is-wsl/index.js","../node_modules/next/dist/compiled/async-retry/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/stack-frame.js","../node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js","../node_modules/next/dist/client/components/hooks-server-context.js","../node_modules/next/dist/client/components/static-generation-bailout.js","../node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getRawSourceMap.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/launchEditor.js","../node_modules/next/dist/lib/semver-noop.js","../node_modules/next/dist/compiled/@napi-rs/triples/index.js","../node_modules/next/dist/compiled/json5/package.json","../node_modules/next/dist/compiled/semver/package.json","../node_modules/next/dist/compiled/bytes/package.json","../node_modules/next/dist/compiled/babel/package.json","../node_modules/next/dist/compiled/react-is/cjs/react-is.production.min.js","../node_modules/next/dist/compiled/react-is/cjs/react-is.development.js","../node_modules/next/dist/compiled/path-browserify/package.json","../node_modules/next/dist/compiled/p-limit/index.js","../node_modules/next/dist/lib/resolve-from.js","../node_modules/next/dist/client/with-router.js","../node_modules/next/dist/shared/lib/head.js","../node_modules/next/dist/shared/lib/router-context.shared-runtime.js","../node_modules/next/dist/lib/helpers/install.js","../node_modules/next/dist/lib/helpers/get-online.js","../node_modules/next/dist/server/get-app-route-from-entrypoint.js","../node_modules/next/dist/server/match-bundle.js","../node_modules/next/dist/lib/oxford-comma-list.js","../node_modules/next/dist/compiled/tar/package.json","../node_modules/next/dist/server/render.js","../node_modules/next/dist/server/future/normalizers/built/pages/pages-bundle-path-normalizer.js","../node_modules/next/dist/server/future/normalizers/built/pages/pages-filename-normalizer.js","../node_modules/next/dist/server/future/normalizers/built/pages/pages-pathname-normalizer.js","../node_modules/next/dist/server/future/normalizers/built/pages/pages-page-normalizer.js","../node_modules/next/dist/server/future/normalizers/built/app/app-bundle-path-normalizer.js","../node_modules/next/dist/server/future/normalizers/built/app/app-page-normalizer.js","../node_modules/next/dist/server/future/normalizers/built/app/app-filename-normalizer.js","../node_modules/next/dist/shared/lib/router/router.js","../node_modules/next/dist/build/analysis/extract-const-value.js","../node_modules/next/dist/build/analysis/parse-module.js","../node_modules/next/dist/lib/typescript/diagnosticFormatter.js","../node_modules/next/dist/server/app-render/app-render.js","../node_modules/next/dist/build/load-entrypoint.js","../node_modules/caniuse-lite/dist/unpacker/feature.js","../node_modules/caniuse-lite/dist/unpacker/region.js","../node_modules/caniuse-lite/dist/unpacker/agents.js","../node_modules/next/dist/compiled/@edge-runtime/cookies/package.json","../node_modules/next/dist/compiled/json5/index.js","../node_modules/next/dist/compiled/semver/index.js","../node_modules/next/dist/compiled/bytes/index.js","../node_modules/next/dist/compiled/regenerator-runtime/package.json","../node_modules/next/dist/compiled/path-browserify/index.js","../node_modules/next/dist/server/future/route-modules/route-module.js","../node_modules/next/dist/compiled/stacktrace-parser/package.json","../node_modules/next/dist/compiled/source-map08/package.json","../node_modules/next/dist/shared/lib/magic-identifier.js","../node_modules/next/dist/server/future/route-definitions/app-page-route-definition.js","../node_modules/next/dist/build/webpack/loaders/get-module-build-info.js","../node_modules/caniuse-lite/package.json","../node_modules/next/dist/server/future/normalizers/normalizers.js","../node_modules/next/dist/server/future/normalizers/underscore-normalizer.js","../node_modules/next/dist/server/future/normalizers/wrap-normalizer-fn.js","../node_modules/next/dist/lib/fs/write-atomic.js","../node_modules/next/dist/compiled/tar/index.js","../node_modules/next/dist/build/webpack/plugins/build-manifest-plugin.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/entrypoints.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/entrypoints.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/entrypoints.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/entrypoints.js","../node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js","../node_modules/next/dist/compiled/babel/bundle.js","../node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js","../node_modules/next/dist/shared/lib/router/utils/add-locale.js","../node_modules/next/dist/compiled/@edge-runtime/cookies/index.js","../node_modules/next/dist/compiled/regenerator-runtime/runtime.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/package.json","../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../node_modules/next/dist/compiled/source-map08/source-map.js","../node_modules/next/dist/client/components/not-found-error.js","../node_modules/next/dist/compiled/comment-json/package.json","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/noop-template.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/icons/CloseIcon.js","../node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js","../node_modules/next/dist/shared/lib/side-effect.js","../node_modules/next/dist/shared/lib/amp-mode.js","../node_modules/next/dist/shared/lib/amp-context.shared-runtime.js","../node_modules/next/dist/lib/is-serializable-props.js","../node_modules/next/dist/server/internal-utils.js","../node_modules/next/dist/server/post-process.js","../node_modules/caniuse-lite/data/agents.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/container/RuntimeError/component-stack-pseudo-html.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/CodeFrame/styles.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/styles.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Terminal/styles.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/LeftRightDialogHeader/styles.js","../node_modules/next/dist/shared/lib/utils/warn-once.js","../node_modules/next/dist/shared/lib/loadable.shared-runtime.js","../node_modules/next/dist/shared/lib/loadable-context.shared-runtime.js","../node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js","../node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js","../node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js","../node_modules/next/dist/lib/with-promise-cache.js","../node_modules/caniuse-lite/dist/lib/statuses.js","../node_modules/caniuse-lite/dist/unpacker/browsers.js","../node_modules/caniuse-lite/dist/lib/supported.js","../node_modules/caniuse-lite/dist/unpacker/browserVersions.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getSourceMapUrl.js","../node_modules/next/dist/compiled/babel/core.js","../node_modules/next/dist/shared/lib/router/adapters.js","../node_modules/next/dist/client/route-loader.js","../node_modules/next/dist/client/script.js","../node_modules/next/dist/client/detect-domain-locale.js","../node_modules/next/dist/client/add-locale.js","../node_modules/next/dist/client/remove-locale.js","../node_modules/next/dist/client/remove-base-path.js","../node_modules/next/dist/client/add-base-path.js","../node_modules/next/dist/client/has-base-path.js","../node_modules/next/dist/client/resolve-href.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/index.js","../node_modules/next/dist/client/components/match-segments.js","../node_modules/next/dist/server/async-storage/request-async-storage-wrapper.js","../node_modules/next/dist/client/components/not-found.js","../node_modules/next/dist/lib/metadata/metadata.js","../node_modules/next/dist/client/components/redirect.js","../node_modules/next/dist/server/lib/patch-fetch.js","../node_modules/next/dist/server/app-render/flight-render-result.js","../node_modules/next/dist/server/app-render/create-error-handler.js","../node_modules/next/dist/server/app-render/get-segment-param.js","../node_modules/next/dist/server/app-render/get-short-dynamic-param-type.js","../node_modules/next/dist/server/app-render/get-script-nonce-from-header.js","../node_modules/next/dist/server/app-render/validate-url.js","../node_modules/next/dist/server/app-render/parse-and-validate-flight-router-state.js","../node_modules/next/dist/server/app-render/action-handler.js","../node_modules/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js","../node_modules/next/dist/server/app-render/server-inserted-html.js","../node_modules/next/dist/server/app-render/required-scripts.js","../node_modules/next/dist/server/app-render/make-get-server-inserted-html.js","../node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js","../node_modules/next/dist/server/app-render/create-component-tree.js","../node_modules/next/dist/server/app-render/get-asset-query-string.js","../node_modules/next/dist/server/app-render/use-flight-response.js","../node_modules/next/dist/client/components/dev-root-not-found-boundary.js","../node_modules/next/dist/shared/lib/mitt.js","../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../node_modules/next/dist/server/app-render/static/static-renderer.js","../node_modules/next/dist/compiled/comment-json/index.js","../node_modules/next/dist/server/future/normalizers/prefixing-normalizer.js","../node_modules/next/dist/server/future/normalizers/absolute-filename-normalizer.js","../node_modules/next/dist/shared/lib/router/utils/resolve-rewrites.js","../node_modules/next/dist/shared/lib/router/utils/compare-states.js","../node_modules/next/dist/shared/lib/router/utils/is-local-url.js","../node_modules/next/dist/shared/lib/router/utils/omit.js","../node_modules/next/dist/shared/lib/router/utils/interpolate-as.js","../node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js","../node_modules/next/dist/lib/fs/rename.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/LeftRightDialogHeader/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/container/RuntimeError/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Toast/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/VersionStalenessInfo/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/hot-linked-text/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Terminal/index.js","../node_modules/@swc/helpers/_/_tagged_template_literal_loose/package.json","../node_modules/next/dist/build/webpack/plugins/next-drop-client-page-plugin.js","../node_modules/next/dist/build/webpack/plugins/profiling-plugin.js","../node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.js","../node_modules/next/dist/compiled/data-uri-to-buffer/package.json","../node_modules/next/dist/compiled/shell-quote/package.json","../node_modules/next/dist/compiled/cross-spawn/package.json","../node_modules/react-dom/index.js","../node_modules/next/dist/server/optimize-amp.js","../node_modules/caniuse-lite/data/browsers.js","../node_modules/caniuse-lite/data/browserVersions.js","../node_modules/next/dist/compiled/nanoid/package.json","../node_modules/next/dist/client/trusted-types.js","../node_modules/next/dist/client/request-idle-callback.js","../node_modules/next/dist/build/deployment-id.js","../node_modules/next/dist/client/head-manager.js","../node_modules/next/dist/client/normalize-trailing-slash.js","../node_modules/next/dist/compiled/data-uri-to-buffer/index.js","../node_modules/next/dist/compiled/shell-quote/index.js","../node_modules/next/dist/compiled/cross-spawn/index.js","../node_modules/next/dist/server/async-storage/draft-mode-provider.js","../node_modules/next/dist/lib/metadata/resolve-metadata.js","../node_modules/next/dist/lib/metadata/default-metadata.js","../node_modules/next/dist/server/lib/dedupe-fetch.js","../node_modules/next/dist/server/lib/clone-response.js","../node_modules/next/dist/export/helpers/is-dynamic-usage-error.js","../node_modules/next/dist/server/app-render/types.js","../node_modules/next/dist/server/app-render/react-server.node.js","../node_modules/next/dist/server/app-render/get-css-inlined-link-tags.js","../node_modules/next/dist/server/app-render/get-preloadable-fonts.js","../node_modules/next/dist/server/app-render/has-loading-component-in-tree.js","../node_modules/next/dist/server/app-render/parse-loader-tree.js","../node_modules/next/dist/server/app-render/interop-default.js","../node_modules/next/dist/server/lib/app-dir-module.js","../node_modules/next/dist/server/app-render/get-layer-assets.js","../node_modules/next/dist/client/components/parallel-route-default.js","../node_modules/next/dist/server/app-render/create-component-styles-and-scripts.js","../node_modules/next/dist/client/components/not-found-boundary.js","../node_modules/@swc/helpers/cjs/_tagged_template_literal_loose.cjs","../node_modules/next/dist/lib/metadata/generate/basic.js","../node_modules/next/dist/lib/metadata/generate/alternate.js","../node_modules/next/dist/lib/metadata/generate/opengraph.js","../node_modules/next/dist/lib/metadata/generate/icons.js","../node_modules/next/dist/lib/metadata/generate/meta.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/load.js","../node_modules/next/dist/compiled/nanoid/index.cjs","../node_modules/next/dist/compiled/devalue/package.json","../node_modules/next/dist/shared/lib/router/utils/as-path-to-search-params.js","../node_modules/next/dist/compiled/babel-packages/package.json","../node_modules/next/dist/client/components/react-dev-overlay/internal/icons/CollapseIcon.js","../node_modules/react/jsx-dev-runtime.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/busboy/package.json","../node_modules/next/dist/compiled/@next/react-refresh-utils/dist/loader.js","../node_modules/next/dist/compiled/devalue/devalue.umd.js","../node_modules/next/dist/compiled/babel-packages/packages-bundle.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/group-stack-frames-by-framework.js","../node_modules/graceful-fs/package.json","../node_modules/next/dist/compiled/string-hash/package.json","../node_modules/next/dist/compiled/superstruct/package.json","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/DialogBody.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/Dialog.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/DialogContent.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/DialogHeader.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/Overlay.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/styles.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/LeftRightDialogHeader/LeftRightDialogHeader.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Toast/styles.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/container/RuntimeError/GroupedStackFrames.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Toast/Toast.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/VersionStalenessInfo/styles.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/VersionStalenessInfo/VersionStalenessInfo.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Terminal/Terminal.js","../node_modules/busboy/lib/index.js","../node_modules/next/dist/lib/server-external-packages.json","../node_modules/next/dist/build/handle-externals.js","../node_modules/next/dist/build/create-compiler-aliases.js","../node_modules/next/dist/export/utils.js","../node_modules/react/cjs/react-jsx-dev-runtime.production.min.js","../node_modules/next/dist/build/webpack-config-rules/resolve.js","../node_modules/next/dist/build/polyfills/process.js","../node_modules/next/dist/build/polyfills/polyfill-nomodule.js","../node_modules/graceful-fs/graceful-fs.js","../node_modules/next/dist/lib/metadata/clone-metadata.js","../node_modules/next/dist/export/helpers/is-navigation-signal-error.js","../node_modules/next/dist/client/components/navigation.js","../node_modules/next/dist/build/webpack/plugins/middleware-plugin.js","../node_modules/next/dist/build/webpack/plugins/jsconfig-paths-plugin.js","../node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.js","../node_modules/next/dist/build/webpack/plugins/react-loadable-plugin.js","../node_modules/next/dist/build/webpack/plugins/copy-file-plugin.js","../node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.js","../node_modules/next/dist/build/webpack/plugins/flight-client-entry-plugin.js","../node_modules/next/dist/build/webpack/plugins/memory-with-gc-cache-plugin.js","../node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.js","../node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.js","../node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.js","../node_modules/next/dist/build/webpack/plugins/optional-peer-dependency-resolve-plugin.js","../node_modules/next/dist/build/webpack/plugins/css-chunking-plugin.js","../node_modules/next/dist/build/webpack/plugins/css-minimizer-plugin.js","../node_modules/next/dist/build/webpack/plugins/next-trace-entrypoints-plugin.js","../node_modules/next/dist/build/webpack/plugins/telemetry-plugin.js","../node_modules/next/dist/build/babel/loader/index.js","../node_modules/next/dist/build/webpack/plugins/font-stylesheet-gathering-plugin.js","../node_modules/next/dist/lib/metadata/generate/utils.js","../node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js","../node_modules/next/dist/lib/metadata/resolvers/resolve-title.js","../node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js","../node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js","../node_modules/next/dist/lib/metadata/constants.js","../node_modules/next/dist/compiled/string-hash/index.js","../node_modules/next/dist/compiled/superstruct/index.cjs","../node_modules/next/dist/build/webpack/plugins/terser-webpack-plugin/src/index.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/CodeFrame/index.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/console.js.text.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/events.js.text.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/timers.js.text.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/abort-controller.js.text.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/url.js.text.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/blob.js.text.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/structured-clone.js.text.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/fetch.js.text.js","../node_modules/next/dist/compiled/@edge-runtime/primitives/crypto.js.text.js","../node_modules/next/dist/compiled/buffer/package.json","../node_modules/next/dist/compiled/events/package.json","../node_modules/next/dist/compiled/util/package.json","../node_modules/next/dist/build/webpack/config/index.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/index.js","../node_modules/next/dist/build/webpack/plugins/next-types-plugin/index.js","../node_modules/busboy/lib/utils.js","../node_modules/next/dist/compiled/@next/react-refresh-utils/dist/ReactRefreshWebpackPlugin.js","../node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js","../node_modules/graceful-fs/legacy-streams.js","../node_modules/graceful-fs/polyfills.js","../node_modules/graceful-fs/clone.js","../node_modules/next/dist/compiled/assert/package.json","../node_modules/next/dist/compiled/constants-browserify/package.json","../node_modules/next/dist/compiled/crypto-browserify/package.json","../node_modules/next/dist/compiled/https-browserify/package.json","../node_modules/next/dist/compiled/domain-browser/package.json","../node_modules/next/dist/compiled/os-browserify/package.json","../node_modules/next/dist/compiled/querystring-es3/package.json","../node_modules/next/dist/compiled/punycode/package.json","../node_modules/next/dist/compiled/stream-browserify/package.json","../node_modules/next/dist/compiled/string_decoder/package.json","../node_modules/next/dist/compiled/timers-browserify/package.json","../node_modules/next/dist/compiled/stream-http/package.json","../node_modules/next/dist/compiled/vm-browserify/package.json","../node_modules/next/dist/compiled/tty-browserify/package.json","../node_modules/next/dist/compiled/browserify-zlib/package.json","../node_modules/next/dist/compiled/setimmediate/package.json","../node_modules/scheduler/package.json","../node_modules/next/dist/build/webpack/config/blocks/css/index.js","../node_modules/busboy/lib/types/multipart.js","../node_modules/busboy/lib/types/urlencoded.js","../node_modules/next/dist/compiled/buffer/index.js","../node_modules/next/dist/compiled/events/events.js","../node_modules/next/dist/compiled/util/util.js","../node_modules/scheduler/index.js","../node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/ReactRefreshModule.runtime.js","../node_modules/next/dist/lib/known-edge-safe-packages.json","../node_modules/next/dist/build/build-context.js","../node_modules/next/dist/server/font-utils.js","../node_modules/next/dist/compiled/assert/assert.js","../node_modules/next/dist/compiled/constants-browserify/constants.json","../node_modules/next/dist/compiled/crypto-browserify/index.js","../node_modules/next/dist/compiled/https-browserify/index.js","../node_modules/next/dist/compiled/domain-browser/index.js","../node_modules/next/dist/compiled/os-browserify/browser.js","../node_modules/next/dist/compiled/querystring-es3/index.js","../node_modules/next/dist/compiled/punycode/punycode.js","../node_modules/next/dist/compiled/stream-browserify/index.js","../node_modules/next/dist/compiled/string_decoder/string_decoder.js","../node_modules/next/dist/compiled/timers-browserify/main.js","../node_modules/next/dist/compiled/stream-http/index.js","../node_modules/next/dist/compiled/vm-browserify/index.js","../node_modules/next/dist/compiled/tty-browserify/index.js","../node_modules/next/dist/compiled/browserify-zlib/index.js","../node_modules/next/dist/compiled/setimmediate/setImmediate.js","../node_modules/next/dist/client/components/navigation.react-server.js","../node_modules/next/dist/client/components/bailout-to-client-rendering.js","../node_modules/next/dist/build/webpack/utils.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/hooks/use-on-click-outside.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/icons/FrameworkIcon.js","../node_modules/next/dist/build/babel/loader/transform.js","../node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js","../node_modules/next/dist/compiled/babel/parser.js","../node_modules/next/dist/compiled/babel/traverse.js","../node_modules/next/dist/compiled/babel/types.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/maintain--tab-focus.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/body-locker.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/container/RuntimeError/CallStackFrame.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/Terminal/EditorLink.js","../node_modules/next/dist/lib/metadata/resolvers/resolve-url.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parse-dynamic-code-evaluation-error.js","../node_modules/next/dist/build/webpack/config/utils.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/cjs/scheduler.development.js","../node_modules/next/dist/server/web/http.js","../node_modules/next/dist/build/webpack/config/blocks/base.js","../node_modules/postcss/package.json","../node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js","../node_modules/next/dist/compiled/process/package.json","../node_modules/next/dist/client/components/react-dev-overlay/internal/components/CodeFrame/CodeFrame.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/webpackModuleError.js","../node_modules/next/dist/compiled/anser/package.json","../node_modules/next/dist/compiled/loader-utils3/package.json","../node_modules/next/dist/compiled/postcss-scss/package.json","../node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js","../node_modules/next/dist/compiled/@vercel/nft/package.json","../node_modules/next/dist/compiled/cssnano-simple/index.js","../node_modules/streamsearch/package.json","../node_modules/next/dist/compiled/process/browser.js","../node_modules/next/dist/build/webpack/config/blocks/images/index.js","../node_modules/postcss/lib/postcss.js","../node_modules/next/dist/compiled/anser/index.js","../node_modules/next/dist/compiled/loader-utils3/index.js","../node_modules/next/dist/compiled/postcss-scss/scss-syntax.js","../node_modules/next/dist/compiled/react-refresh/runtime.js","../node_modules/next/dist/build/babel/loader/util.js","../node_modules/next/dist/build/babel/loader/get-config.js","../node_modules/next/dist/server/capsize-font-metrics.json","../node_modules/streamsearch/lib/sbmh.js","../node_modules/next/dist/compiled/@vercel/nft/index.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/getModuleTrace.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/simpleWebpackError.js","../node_modules/next/dist/compiled/react-refresh/package.json","../node_modules/next/dist/build/polyfills/object-assign.js","../node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/use-open-in-editor.js","../node_modules/next/dist/build/polyfills/fetch/whatwg-fetch.js","../node_modules/next/dist/build/polyfills/object.assign/auto.js","../node_modules/next/dist/build/polyfills/object.assign/implementation.js","../node_modules/next/dist/build/polyfills/object.assign/polyfill.js","../node_modules/next/dist/build/polyfills/object.assign/shim.js","../node_modules/next/dist/build/polyfills/fetch/index.js","../node_modules/next/dist/compiled/sass-loader/package.json","../node_modules/next/dist/compiled/native-url/package.json","../node_modules/next/dist/compiled/babel/core-lib-normalize-file.js","../node_modules/next/dist/compiled/babel/core-lib-block-hoist-plugin.js","../node_modules/next/dist/compiled/babel/core-lib-normalize-opts.js","../node_modules/next/dist/compiled/babel/core-lib-plugin-pass.js","../node_modules/next/dist/compiled/babel/generator.js","../node_modules/postcss/lib/result.js","../node_modules/postcss/lib/css-syntax-error.js","../node_modules/postcss/lib/lazy-result.js","../node_modules/postcss/lib/declaration.js","../node_modules/postcss/lib/container.js","../node_modules/postcss/lib/stringify.js","../node_modules/postcss/lib/processor.js","../node_modules/postcss/lib/fromJSON.js","../node_modules/postcss/lib/document.js","../node_modules/postcss/lib/warning.js","../node_modules/postcss/lib/comment.js","../node_modules/postcss/lib/at-rule.js","../node_modules/postcss/lib/input.js","../node_modules/postcss/lib/parse.js","../node_modules/postcss/lib/list.js","../node_modules/postcss/lib/node.js","../node_modules/postcss/lib/rule.js","../node_modules/postcss/lib/root.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseBabel.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseCss.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseScss.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseRSC.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNotFoundError.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNextFontError.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNextAppLoaderError.js","../node_modules/next/dist/build/webpack/plugins/wellknown-errors-plugin/parseNextInvalidImportError.js","../node_modules/next/dist/compiled/native-url/index.js","../node_modules/next/dist/build/webpack/config/helpers.js","../node_modules/next/dist/compiled/css.escape/package.json","../node_modules/next/dist/compiled/platform/package.json","../node_modules/next/dist/compiled/react-refresh/cjs/react-refresh-runtime.development.js","../node_modules/next/dist/compiled/react-refresh/cjs/react-refresh-runtime.production.min.js","../node_modules/next/dist/client/components/noop-head.js","../node_modules/next/dist/build/babel/plugins/commonjs.js","../node_modules/next/dist/build/babel/plugins/next-page-disallow-re-export-all-exports.js","../node_modules/next/dist/build/babel/plugins/next-ssg-transform.js","../node_modules/next/dist/build/babel/plugins/next-page-config.js","../node_modules/next/dist/build/babel/plugins/next-font-unsupported.js","../node_modules/next/dist/build/webpack/config/blocks/images/messages.js","../node_modules/next/dist/compiled/lodash.curry/package.json","../node_modules/next/dist/compiled/css.escape/css.escape.js","../node_modules/next/dist/compiled/platform/platform.js","../node_modules/postcss/lib/terminal-highlight.js","../node_modules/postcss/lib/symbols.js","../node_modules/postcss/lib/map-generator.js","../node_modules/postcss/lib/warn-once.js","../node_modules/postcss/lib/stringifier.js","../node_modules/postcss/lib/no-work-result.js","../node_modules/postcss/lib/previous-map.js","../node_modules/postcss/lib/parser.js","../node_modules/next/dist/compiled/@vercel/nft/LICENSE","../node_modules/next/dist/compiled/babel/core-lib-config.js","../node_modules/next/dist/compiled/react-refresh/babel.js","../node_modules/next/dist/compiled/babel/plugin-transform-define.js","../node_modules/next/dist/compiled/babel/plugin-transform-modules-commonjs.js","../node_modules/next/dist/compiled/lodash.curry/index.js","../node_modules/next/dist/compiled/postcss-value-parser/package.json","../node_modules/caniuse-lite/dist/unpacker/index.js","../node_modules/next/dist/compiled/postcss-plugin-stub-for-cssnano-simple/index.js","../node_modules/picocolors/package.json","../node_modules/source-map-js/package.json","../node_modules/nanoid/non-secure/package.json","../node_modules/next/dist/compiled/postcss-value-parser/index.js","../node_modules/next/dist/compiled/acorn/package.json","../node_modules/next/dist/compiled/glob/package.json","../node_modules/picocolors/picocolors.js","../node_modules/source-map-js/source-map.js","../node_modules/postcss/lib/tokenize.js","../node_modules/nanoid/package.json","../node_modules/next/dist/compiled/acorn/acorn.js","../node_modules/next/dist/compiled/glob/glob.js","../node_modules/nanoid/non-secure/index.cjs","../node_modules/next/dist/compiled/react-refresh/cjs/react-refresh-babel.production.min.js","../node_modules/next/dist/compiled/react-refresh/cjs/react-refresh-babel.development.js","../node_modules/caniuse-lite/dist/unpacker/features.js","../node_modules/source-map-js/lib/source-map-generator.js","../node_modules/source-map-js/lib/source-map-consumer.js","../node_modules/source-map-js/lib/source-node.js","../node_modules/caniuse-lite/data/features.js","../node_modules/source-map-js/lib/base64-vlq.js","../node_modules/source-map-js/lib/array-set.js","../node_modules/source-map-js/lib/util.js","../node_modules/source-map-js/lib/mapping-list.js","../node_modules/source-map-js/lib/binary-search.js","../node_modules/source-map-js/lib/quick-sort.js","../node_modules/caniuse-lite/data/features/aac.js","../node_modules/caniuse-lite/data/features/abortcontroller.js","../node_modules/caniuse-lite/data/features/ac3-ec3.js","../node_modules/caniuse-lite/data/features/accelerometer.js","../node_modules/caniuse-lite/data/features/addeventlistener.js","../node_modules/caniuse-lite/data/features/alternate-stylesheet.js","../node_modules/caniuse-lite/data/features/ambient-light.js","../node_modules/caniuse-lite/data/features/array-find.js","../node_modules/caniuse-lite/data/features/apng.js","../node_modules/caniuse-lite/data/features/array-includes.js","../node_modules/caniuse-lite/data/features/array-flat.js","../node_modules/caniuse-lite/data/features/arrow-functions.js","../node_modules/caniuse-lite/data/features/asmjs.js","../node_modules/caniuse-lite/data/features/array-find-index.js","../node_modules/caniuse-lite/data/features/async-functions.js","../node_modules/caniuse-lite/data/features/async-clipboard.js","../node_modules/caniuse-lite/data/features/atob-btoa.js","../node_modules/caniuse-lite/data/features/audio-api.js","../node_modules/caniuse-lite/data/features/audiotracks.js","../node_modules/caniuse-lite/data/features/autofocus.js","../node_modules/caniuse-lite/data/features/auxclick.js","../node_modules/caniuse-lite/data/features/audio.js","../node_modules/caniuse-lite/data/features/av1.js","../node_modules/caniuse-lite/data/features/background-clip-text.js","../node_modules/caniuse-lite/data/features/background-attachment.js","../node_modules/caniuse-lite/data/features/background-img-opts.js","../node_modules/caniuse-lite/data/features/background-position-x-y.js","../node_modules/caniuse-lite/data/features/avif.js","../node_modules/caniuse-lite/data/features/battery-status.js","../node_modules/caniuse-lite/data/features/background-repeat-round-space.js","../node_modules/caniuse-lite/data/features/background-sync.js","../node_modules/caniuse-lite/data/features/beacon.js","../node_modules/caniuse-lite/data/features/beforeafterprint.js","../node_modules/caniuse-lite/data/features/bigint.js","../node_modules/caniuse-lite/data/features/blobbuilder.js","../node_modules/caniuse-lite/data/features/bloburls.js","../node_modules/caniuse-lite/data/features/border-image.js","../node_modules/caniuse-lite/data/features/border-radius.js","../node_modules/caniuse-lite/data/features/broadcastchannel.js","../node_modules/caniuse-lite/data/features/brotli.js","../node_modules/caniuse-lite/data/features/canvas-blending.js","../node_modules/caniuse-lite/data/features/calc.js","../node_modules/caniuse-lite/data/features/canvas-text.js","../node_modules/caniuse-lite/data/features/canvas.js","../node_modules/caniuse-lite/data/features/ch-unit.js","../node_modules/caniuse-lite/data/features/chacha20-poly1305.js","../node_modules/caniuse-lite/data/features/channel-messaging.js","../node_modules/caniuse-lite/data/features/childnode-remove.js","../node_modules/caniuse-lite/data/features/classlist.js","../node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js","../node_modules/caniuse-lite/data/features/clipboard.js","../node_modules/caniuse-lite/data/features/colr.js","../node_modules/caniuse-lite/data/features/colr-v1.js","../node_modules/caniuse-lite/data/features/comparedocumentposition.js","../node_modules/caniuse-lite/data/features/console-basic.js","../node_modules/caniuse-lite/data/features/console-time.js","../node_modules/caniuse-lite/data/features/const.js","../node_modules/caniuse-lite/data/features/constraint-validation.js","../node_modules/caniuse-lite/data/features/contenteditable.js","../node_modules/caniuse-lite/data/features/contentsecuritypolicy.js","../node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js","../node_modules/caniuse-lite/data/features/cookie-store-api.js","../node_modules/caniuse-lite/data/features/cors.js","../node_modules/caniuse-lite/data/features/createimagebitmap.js","../node_modules/caniuse-lite/data/features/credential-management.js","../node_modules/caniuse-lite/data/features/cross-document-view-transitions.js","../node_modules/caniuse-lite/data/features/cryptography.js","../node_modules/caniuse-lite/data/features/css-all.js","../node_modules/caniuse-lite/data/features/css-animation.js","../node_modules/caniuse-lite/data/features/css-anchor-positioning.js","../node_modules/caniuse-lite/data/features/css-any-link.js","../node_modules/caniuse-lite/data/features/css-appearance.js","../node_modules/caniuse-lite/data/features/css-at-counter-style.js","../node_modules/caniuse-lite/data/features/css-backdrop-filter.js","../node_modules/caniuse-lite/data/features/css-autofill.js","../node_modules/caniuse-lite/data/features/css-backgroundblendmode.js","../node_modules/caniuse-lite/data/features/css-background-offsets.js","../node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js","../node_modules/caniuse-lite/data/features/css-boxshadow.js","../node_modules/caniuse-lite/data/features/css-canvas.js","../node_modules/caniuse-lite/data/features/css-caret-color.js","../node_modules/caniuse-lite/data/features/css-cascade-layers.js","../node_modules/caniuse-lite/data/features/css-cascade-scope.js","../node_modules/caniuse-lite/data/features/css-case-insensitive.js","../node_modules/caniuse-lite/data/features/css-color-adjust.js","../node_modules/caniuse-lite/data/features/css-color-function.js","../node_modules/caniuse-lite/data/features/css-clip-path.js","../node_modules/caniuse-lite/data/features/css-conic-gradients.js","../node_modules/caniuse-lite/data/features/css-container-queries-style.js","../node_modules/caniuse-lite/data/features/css-container-queries.js","../node_modules/caniuse-lite/data/features/css-container-query-units.js","../node_modules/caniuse-lite/data/features/css-containment.js","../node_modules/caniuse-lite/data/features/css-content-visibility.js","../node_modules/caniuse-lite/data/features/css-counters.js","../node_modules/caniuse-lite/data/features/css-crisp-edges.js","../node_modules/caniuse-lite/data/features/css-cross-fade.js","../node_modules/caniuse-lite/data/features/css-descendant-gtgt.js","../node_modules/caniuse-lite/data/features/css-deviceadaptation.js","../node_modules/caniuse-lite/data/features/css-dir-pseudo.js","../node_modules/caniuse-lite/data/features/css-default-pseudo.js","../node_modules/caniuse-lite/data/features/css-display-contents.js","../node_modules/caniuse-lite/data/features/css-env-function.js","../node_modules/caniuse-lite/data/features/css-element-function.js","../node_modules/caniuse-lite/data/features/css-exclusions.js","../node_modules/caniuse-lite/data/features/css-featurequeries.js","../node_modules/caniuse-lite/data/features/css-file-selector-button.js","../node_modules/caniuse-lite/data/features/css-filters.js","../node_modules/caniuse-lite/data/features/css-filter-function.js","../node_modules/caniuse-lite/data/features/css-first-letter.js","../node_modules/caniuse-lite/data/features/css-first-line.js","../node_modules/caniuse-lite/data/features/css-fixed.js","../node_modules/caniuse-lite/data/features/css-focus-visible.js","../node_modules/caniuse-lite/data/features/css-focus-within.js","../node_modules/caniuse-lite/data/features/css-font-palette.js","../node_modules/caniuse-lite/data/features/css-font-rendering-controls.js","../node_modules/caniuse-lite/data/features/css-gencontent.js","../node_modules/caniuse-lite/data/features/css-font-stretch.js","../node_modules/caniuse-lite/data/features/css-gradients.js","../node_modules/caniuse-lite/data/features/css-grid-animation.js","../node_modules/caniuse-lite/data/features/css-grid-lanes.js","../node_modules/caniuse-lite/data/features/css-grid.js","../node_modules/caniuse-lite/data/features/css-hanging-punctuation.js","../node_modules/caniuse-lite/data/features/css-hyphens.js","../node_modules/caniuse-lite/data/features/css-has.js","../node_modules/caniuse-lite/data/features/css-if.js","../node_modules/caniuse-lite/data/features/css-image-orientation.js","../node_modules/caniuse-lite/data/features/css-image-set.js","../node_modules/caniuse-lite/data/features/css-in-out-of-range.js","../node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js","../node_modules/caniuse-lite/data/features/css-initial-value.js","../node_modules/caniuse-lite/data/features/css-initial-letter.js","../node_modules/caniuse-lite/data/features/css-lch-lab.js","../node_modules/caniuse-lite/data/features/css-letter-spacing.js","../node_modules/caniuse-lite/data/features/css-line-clamp.js","../node_modules/caniuse-lite/data/features/css-logical-props.js","../node_modules/caniuse-lite/data/features/css-marker-pseudo.js","../node_modules/caniuse-lite/data/features/css-masks.js","../node_modules/caniuse-lite/data/features/css-matches-pseudo.js","../node_modules/caniuse-lite/data/features/css-math-functions.js","../node_modules/caniuse-lite/data/features/css-media-interaction.js","../node_modules/caniuse-lite/data/features/css-media-range-syntax.js","../node_modules/caniuse-lite/data/features/css-media-resolution.js","../node_modules/caniuse-lite/data/features/css-media-scripting.js","../node_modules/caniuse-lite/data/features/css-mediaqueries.js","../node_modules/caniuse-lite/data/features/css-mixblendmode.js","../node_modules/caniuse-lite/data/features/css-module-scripts.js","../node_modules/caniuse-lite/data/features/css-motion-paths.js","../node_modules/caniuse-lite/data/features/css-namespaces.js","../node_modules/caniuse-lite/data/features/css-nesting.js","../node_modules/caniuse-lite/data/features/css-not-sel-list.js","../node_modules/caniuse-lite/data/features/css-nth-child-of.js","../node_modules/caniuse-lite/data/features/css-opacity.js","../node_modules/caniuse-lite/data/features/css-optional-pseudo.js","../node_modules/caniuse-lite/data/features/css-overflow-overlay.js","../node_modules/caniuse-lite/data/features/css-overflow-anchor.js","../node_modules/caniuse-lite/data/features/css-overflow.js","../node_modules/caniuse-lite/data/features/css-overscroll-behavior.js","../node_modules/caniuse-lite/data/features/css-page-break.js","../node_modules/caniuse-lite/data/features/css-paged-media.js","../node_modules/caniuse-lite/data/features/css-paint-api.js","../node_modules/caniuse-lite/data/features/css-placeholder-shown.js","../node_modules/caniuse-lite/data/features/css-placeholder.js","../node_modules/caniuse-lite/data/features/css-print-color-adjust.js","../node_modules/caniuse-lite/data/features/css-read-only-write.js","../node_modules/caniuse-lite/data/features/css-rebeccapurple.js","../node_modules/caniuse-lite/data/features/css-reflections.js","../node_modules/caniuse-lite/data/features/css-regions.js","../node_modules/caniuse-lite/data/features/css-relative-colors.js","../node_modules/caniuse-lite/data/features/css-repeating-gradients.js","../node_modules/caniuse-lite/data/features/css-resize.js","../node_modules/caniuse-lite/data/features/css-revert-value.js","../node_modules/caniuse-lite/data/features/css-scroll-behavior.js","../node_modules/caniuse-lite/data/features/css-rrggbbaa.js","../node_modules/caniuse-lite/data/features/css-scrollbar.js","../node_modules/caniuse-lite/data/features/css-sel2.js","../node_modules/caniuse-lite/data/features/css-sel3.js","../node_modules/caniuse-lite/data/features/css-selection.js","../node_modules/caniuse-lite/data/features/css-shapes.js","../node_modules/caniuse-lite/data/features/css-snappoints.js","../node_modules/caniuse-lite/data/features/css-sticky.js","../node_modules/caniuse-lite/data/features/css-subgrid.js","../node_modules/caniuse-lite/data/features/css-supports-api.js","../node_modules/caniuse-lite/data/features/css-table.js","../node_modules/caniuse-lite/data/features/css-text-align-last.js","../node_modules/caniuse-lite/data/features/css-text-box-trim.js","../node_modules/caniuse-lite/data/features/css-text-indent.js","../node_modules/caniuse-lite/data/features/css-text-justify.js","../node_modules/caniuse-lite/data/features/css-text-orientation.js","../node_modules/caniuse-lite/data/features/css-text-spacing.js","../node_modules/caniuse-lite/data/features/css-text-wrap-balance.js","../node_modules/caniuse-lite/data/features/css-textshadow.js","../node_modules/caniuse-lite/data/features/css-touch-action.js","../node_modules/caniuse-lite/data/features/css-transitions.js","../node_modules/caniuse-lite/data/features/css-when-else.js","../node_modules/caniuse-lite/data/features/css-unicode-bidi.js","../node_modules/caniuse-lite/data/features/css-width-stretch.js","../node_modules/caniuse-lite/data/features/css-unset-value.js","../node_modules/caniuse-lite/data/features/css-variables.js","../node_modules/caniuse-lite/data/features/css-widows-orphans.js","../node_modules/caniuse-lite/data/features/css-writing-mode.js","../node_modules/caniuse-lite/data/features/css-zoom.js","../node_modules/caniuse-lite/data/features/css3-attr.js","../node_modules/caniuse-lite/data/features/css3-boxsizing.js","../node_modules/caniuse-lite/data/features/css3-colors.js","../node_modules/caniuse-lite/data/features/css3-cursors-grab.js","../node_modules/caniuse-lite/data/features/css3-cursors-newer.js","../node_modules/caniuse-lite/data/features/css3-cursors.js","../node_modules/caniuse-lite/data/features/css3-tabsize.js","../node_modules/caniuse-lite/data/features/currentcolor.js","../node_modules/caniuse-lite/data/features/custom-elements.js","../node_modules/caniuse-lite/data/features/custom-elementsv1.js","../node_modules/caniuse-lite/data/features/customevent.js","../node_modules/caniuse-lite/data/features/customizable-select.js","../node_modules/caniuse-lite/data/features/datalist.js","../node_modules/caniuse-lite/data/features/dataset.js","../node_modules/caniuse-lite/data/features/datauri.js","../node_modules/caniuse-lite/data/features/date-tolocaledatestring.js","../node_modules/caniuse-lite/data/features/declarative-shadow-dom.js","../node_modules/caniuse-lite/data/features/decorators.js","../node_modules/caniuse-lite/data/features/details.js","../node_modules/caniuse-lite/data/features/deviceorientation.js","../node_modules/caniuse-lite/data/features/dialog.js","../node_modules/caniuse-lite/data/features/devicepixelratio.js","../node_modules/caniuse-lite/data/features/do-not-track.js","../node_modules/caniuse-lite/data/features/dispatchevent.js","../node_modules/caniuse-lite/data/features/document-currentscript.js","../node_modules/caniuse-lite/data/features/dnssec.js","../node_modules/caniuse-lite/data/features/document-evaluate-xpath.js","../node_modules/caniuse-lite/data/features/document-execcommand.js","../node_modules/caniuse-lite/data/features/document-policy.js","../node_modules/caniuse-lite/data/features/documenthead.js","../node_modules/caniuse-lite/data/features/dom-manip-convenience.js","../node_modules/caniuse-lite/data/features/document-scrollingelement.js","../node_modules/caniuse-lite/data/features/dom-range.js","../node_modules/caniuse-lite/data/features/domcontentloaded.js","../node_modules/caniuse-lite/data/features/dommatrix.js","../node_modules/caniuse-lite/data/features/download.js","../node_modules/caniuse-lite/data/features/dragndrop.js","../node_modules/caniuse-lite/data/features/element-closest.js","../node_modules/caniuse-lite/data/features/element-from-point.js","../node_modules/caniuse-lite/data/features/element-scroll-methods.js","../node_modules/caniuse-lite/data/features/eot.js","../node_modules/caniuse-lite/data/features/es6-class.js","../node_modules/caniuse-lite/data/features/es5.js","../node_modules/caniuse-lite/data/features/eme.js","../node_modules/caniuse-lite/data/features/es6-generators.js","../node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js","../node_modules/caniuse-lite/data/features/es6-module.js","../node_modules/caniuse-lite/data/features/es6-number.js","../node_modules/caniuse-lite/data/features/es6-string-includes.js","../node_modules/caniuse-lite/data/features/es6.js","../node_modules/caniuse-lite/data/features/eventsource.js","../node_modules/caniuse-lite/data/features/extended-system-fonts.js","../node_modules/caniuse-lite/data/features/feature-policy.js","../node_modules/caniuse-lite/data/features/fieldset-disabled.js","../node_modules/caniuse-lite/data/features/fileapi.js","../node_modules/caniuse-lite/data/features/fetch.js","../node_modules/caniuse-lite/data/features/filereader.js","../node_modules/caniuse-lite/data/features/filereadersync.js","../node_modules/caniuse-lite/data/features/filesystem.js","../node_modules/caniuse-lite/data/features/flac.js","../node_modules/caniuse-lite/data/features/flexbox-gap.js","../node_modules/caniuse-lite/data/features/flexbox.js","../node_modules/caniuse-lite/data/features/flow-root.js","../node_modules/caniuse-lite/data/features/focusin-focusout-events.js","../node_modules/caniuse-lite/data/features/font-family-system-ui.js","../node_modules/caniuse-lite/data/features/font-feature.js","../node_modules/caniuse-lite/data/features/font-kerning.js","../node_modules/caniuse-lite/data/features/font-loading.js","../node_modules/caniuse-lite/data/features/font-size-adjust.js","../node_modules/caniuse-lite/data/features/font-unicode-range.js","../node_modules/caniuse-lite/data/features/font-variant-alternates.js","../node_modules/caniuse-lite/data/features/font-smooth.js","../node_modules/caniuse-lite/data/features/font-variant-numeric.js","../node_modules/caniuse-lite/data/features/fontface.js","../node_modules/caniuse-lite/data/features/form-attribute.js","../node_modules/caniuse-lite/data/features/form-submit-attributes.js","../node_modules/caniuse-lite/data/features/form-validation.js","../node_modules/caniuse-lite/data/features/forms.js","../node_modules/caniuse-lite/data/features/fullscreen.js","../node_modules/caniuse-lite/data/features/gamepad.js","../node_modules/caniuse-lite/data/features/geolocation.js","../node_modules/caniuse-lite/data/features/getboundingclientrect.js","../node_modules/caniuse-lite/data/features/getelementsbyclassname.js","../node_modules/caniuse-lite/data/features/gyroscope.js","../node_modules/caniuse-lite/data/features/getrandomvalues.js","../node_modules/caniuse-lite/data/features/hashchange.js","../node_modules/caniuse-lite/data/features/getcomputedstyle.js","../node_modules/caniuse-lite/data/features/hardwareconcurrency.js","../node_modules/caniuse-lite/data/features/heif.js","../node_modules/caniuse-lite/data/features/hevc.js","../node_modules/caniuse-lite/data/features/hidden.js","../node_modules/caniuse-lite/data/features/high-resolution-time.js","../node_modules/caniuse-lite/data/features/history.js","../node_modules/caniuse-lite/data/features/html-media-capture.js","../node_modules/caniuse-lite/data/features/html5semantic.js","../node_modules/caniuse-lite/data/features/http2.js","../node_modules/caniuse-lite/data/features/http-live-streaming.js","../node_modules/caniuse-lite/data/features/http3.js","../node_modules/caniuse-lite/data/features/iframe-sandbox.js","../node_modules/caniuse-lite/data/features/iframe-seamless.js","../node_modules/caniuse-lite/data/features/iframe-srcdoc.js","../node_modules/caniuse-lite/data/features/ime.js","../node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js","../node_modules/caniuse-lite/data/features/imagecapture.js","../node_modules/caniuse-lite/data/features/import-maps.js","../node_modules/caniuse-lite/data/features/imports.js","../node_modules/caniuse-lite/data/features/indeterminate-checkbox.js","../node_modules/caniuse-lite/data/features/indexeddb.js","../node_modules/caniuse-lite/data/features/inline-block.js","../node_modules/caniuse-lite/data/features/indexeddb2.js","../node_modules/caniuse-lite/data/features/innertext.js","../node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js","../node_modules/caniuse-lite/data/features/input-datetime.js","../node_modules/caniuse-lite/data/features/input-event.js","../node_modules/caniuse-lite/data/features/input-color.js","../node_modules/caniuse-lite/data/features/input-email-tel-url.js","../node_modules/caniuse-lite/data/features/input-file-directory.js","../node_modules/caniuse-lite/data/features/input-file-accept.js","../node_modules/caniuse-lite/data/features/input-file-multiple.js","../node_modules/caniuse-lite/data/features/input-inputmode.js","../node_modules/caniuse-lite/data/features/input-minlength.js","../node_modules/caniuse-lite/data/features/input-number.js","../node_modules/caniuse-lite/data/features/input-placeholder.js","../node_modules/caniuse-lite/data/features/input-pattern.js","../node_modules/caniuse-lite/data/features/input-range.js","../node_modules/caniuse-lite/data/features/input-search.js","../node_modules/caniuse-lite/data/features/input-selection.js","../node_modules/caniuse-lite/data/features/insert-adjacent.js","../node_modules/caniuse-lite/data/features/insertadjacenthtml.js","../node_modules/caniuse-lite/data/features/internationalization.js","../node_modules/caniuse-lite/data/features/intersectionobserver-v2.js","../node_modules/caniuse-lite/data/features/intersectionobserver.js","../node_modules/caniuse-lite/data/features/intl-pluralrules.js","../node_modules/caniuse-lite/data/features/intrinsic-width.js","../node_modules/caniuse-lite/data/features/jpeg2000.js","../node_modules/caniuse-lite/data/features/jpegxl.js","../node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js","../node_modules/caniuse-lite/data/features/jpegxr.js","../node_modules/caniuse-lite/data/features/json.js","../node_modules/caniuse-lite/data/features/justify-content-space-evenly.js","../node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js","../node_modules/caniuse-lite/data/features/keyboardevent-charcode.js","../node_modules/caniuse-lite/data/features/keyboardevent-code.js","../node_modules/caniuse-lite/data/features/keyboardevent-key.js","../node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js","../node_modules/caniuse-lite/data/features/lazyload.js","../node_modules/caniuse-lite/data/features/keyboardevent-location.js","../node_modules/caniuse-lite/data/features/keyboardevent-which.js","../node_modules/caniuse-lite/data/features/let.js","../node_modules/caniuse-lite/data/features/link-icon-png.js","../node_modules/caniuse-lite/data/features/link-icon-svg.js","../node_modules/caniuse-lite/data/features/link-rel-preconnect.js","../node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js","../node_modules/caniuse-lite/data/features/link-rel-modulepreload.js","../node_modules/caniuse-lite/data/features/link-rel-preload.js","../node_modules/caniuse-lite/data/features/link-rel-prefetch.js","../node_modules/caniuse-lite/data/features/link-rel-prerender.js","../node_modules/caniuse-lite/data/features/loading-lazy-media.js","../node_modules/caniuse-lite/data/features/loading-lazy-attr.js","../node_modules/caniuse-lite/data/features/localecompare.js","../node_modules/caniuse-lite/data/features/magnetometer.js","../node_modules/caniuse-lite/data/features/matchmedia.js","../node_modules/caniuse-lite/data/features/matchesselector.js","../node_modules/caniuse-lite/data/features/mathml.js","../node_modules/caniuse-lite/data/features/maxlength.js","../node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js","../node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js","../node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js","../node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js","../node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js","../node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js","../node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js","../node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js","../node_modules/caniuse-lite/data/features/media-fragments.js","../node_modules/caniuse-lite/data/features/mediacapture-fromelement.js","../node_modules/caniuse-lite/data/features/mediarecorder.js","../node_modules/caniuse-lite/data/features/meta-theme-color.js","../node_modules/caniuse-lite/data/features/mediasource.js","../node_modules/caniuse-lite/data/features/meter.js","../node_modules/caniuse-lite/data/features/midi.js","../node_modules/caniuse-lite/data/features/menu.js","../node_modules/caniuse-lite/data/features/minmaxwh.js","../node_modules/caniuse-lite/data/features/mp3.js","../node_modules/caniuse-lite/data/features/mpeg-dash.js","../node_modules/caniuse-lite/data/features/mpeg4.js","../node_modules/caniuse-lite/data/features/multibackgrounds.js","../node_modules/caniuse-lite/data/features/multicolumn.js","../node_modules/caniuse-lite/data/features/mutation-events.js","../node_modules/caniuse-lite/data/features/namevalue-storage.js","../node_modules/caniuse-lite/data/features/mutationobserver.js","../node_modules/caniuse-lite/data/features/native-filesystem-api.js","../node_modules/caniuse-lite/data/features/nav-timing.js","../node_modules/caniuse-lite/data/features/netinfo.js","../node_modules/caniuse-lite/data/features/notifications.js","../node_modules/caniuse-lite/data/features/object-entries.js","../node_modules/caniuse-lite/data/features/object-fit.js","../node_modules/caniuse-lite/data/features/object-observe.js","../node_modules/caniuse-lite/data/features/object-values.js","../node_modules/caniuse-lite/data/features/objectrtc.js","../node_modules/caniuse-lite/data/features/offline-apps.js","../node_modules/caniuse-lite/data/features/offscreencanvas.js","../node_modules/caniuse-lite/data/features/ogg-vorbis.js","../node_modules/caniuse-lite/data/features/ogv.js","../node_modules/caniuse-lite/data/features/ol-reversed.js","../node_modules/caniuse-lite/data/features/once-event-listener.js","../node_modules/caniuse-lite/data/features/online-status.js","../node_modules/caniuse-lite/data/features/opus.js","../node_modules/caniuse-lite/data/features/orientation-sensor.js","../node_modules/caniuse-lite/data/features/outline.js","../node_modules/caniuse-lite/data/features/page-transition-events.js","../node_modules/caniuse-lite/data/features/pagevisibility.js","../node_modules/caniuse-lite/data/features/pad-start-end.js","../node_modules/caniuse-lite/data/features/passive-event-listener.js","../node_modules/caniuse-lite/data/features/passkeys.js","../node_modules/caniuse-lite/data/features/passwordrules.js","../node_modules/caniuse-lite/data/features/pdf-viewer.js","../node_modules/caniuse-lite/data/features/payment-request.js","../node_modules/caniuse-lite/data/features/path2d.js","../node_modules/caniuse-lite/data/features/permissions-policy.js","../node_modules/caniuse-lite/data/features/picture-in-picture.js","../node_modules/caniuse-lite/data/features/permissions-api.js","../node_modules/caniuse-lite/data/features/picture.js","../node_modules/caniuse-lite/data/features/ping.js","../node_modules/caniuse-lite/data/features/png-alpha.js","../node_modules/caniuse-lite/data/features/pointer-events.js","../node_modules/caniuse-lite/data/features/pointer.js","../node_modules/caniuse-lite/data/features/portals.js","../node_modules/caniuse-lite/data/features/prefers-color-scheme.js","../node_modules/caniuse-lite/data/features/pointerlock.js","../node_modules/caniuse-lite/data/features/prefers-reduced-motion.js","../node_modules/caniuse-lite/data/features/promise-finally.js","../node_modules/caniuse-lite/data/features/progress.js","../node_modules/caniuse-lite/data/features/promises.js","../node_modules/caniuse-lite/data/features/proximity.js","../node_modules/caniuse-lite/data/features/proxy.js","../node_modules/caniuse-lite/data/features/publickeypinning.js","../node_modules/caniuse-lite/data/features/queryselector.js","../node_modules/caniuse-lite/data/features/push-api.js","../node_modules/caniuse-lite/data/features/readonly-attr.js","../node_modules/caniuse-lite/data/features/referrer-policy.js","../node_modules/caniuse-lite/data/features/registerprotocolhandler.js","../node_modules/caniuse-lite/data/features/rel-noopener.js","../node_modules/caniuse-lite/data/features/rel-noreferrer.js","../node_modules/caniuse-lite/data/features/rellist.js","../node_modules/caniuse-lite/data/features/rem.js","../node_modules/caniuse-lite/data/features/requestanimationframe.js","../node_modules/caniuse-lite/data/features/requestidlecallback.js","../node_modules/caniuse-lite/data/features/resizeobserver.js","../node_modules/caniuse-lite/data/features/resource-timing.js","../node_modules/caniuse-lite/data/features/rest-parameters.js","../node_modules/caniuse-lite/data/features/rtcpeerconnection.js","../node_modules/caniuse-lite/data/features/ruby.js","../node_modules/caniuse-lite/data/features/run-in.js","../node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js","../node_modules/caniuse-lite/data/features/screen-orientation.js","../node_modules/caniuse-lite/data/features/script-async.js","../node_modules/caniuse-lite/data/features/script-defer.js","../node_modules/caniuse-lite/data/features/scrollintoview.js","../node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js","../node_modules/caniuse-lite/data/features/sdch.js","../node_modules/caniuse-lite/data/features/selection-api.js","../node_modules/caniuse-lite/data/features/server-timing.js","../node_modules/caniuse-lite/data/features/serviceworkers.js","../node_modules/caniuse-lite/data/features/setimmediate.js","../node_modules/caniuse-lite/data/features/shadowdom.js","../node_modules/caniuse-lite/data/features/sharedarraybuffer.js","../node_modules/caniuse-lite/data/features/shadowdomv1.js","../node_modules/caniuse-lite/data/features/sharedworkers.js","../node_modules/caniuse-lite/data/features/sni.js","../node_modules/caniuse-lite/data/features/spdy.js","../node_modules/caniuse-lite/data/features/speech-recognition.js","../node_modules/caniuse-lite/data/features/speech-synthesis.js","../node_modules/caniuse-lite/data/features/spellcheck-attribute.js","../node_modules/caniuse-lite/data/features/sql-storage.js","../node_modules/caniuse-lite/data/features/srcset.js","../node_modules/caniuse-lite/data/features/streams.js","../node_modules/caniuse-lite/data/features/stream.js","../node_modules/caniuse-lite/data/features/stricttransportsecurity.js","../node_modules/caniuse-lite/data/features/style-scoped.js","../node_modules/caniuse-lite/data/features/subresource-bundling.js","../node_modules/caniuse-lite/data/features/svg-css.js","../node_modules/caniuse-lite/data/features/subresource-integrity.js","../node_modules/caniuse-lite/data/features/svg-filters.js","../node_modules/caniuse-lite/data/features/svg-fonts.js","../node_modules/caniuse-lite/data/features/svg-html.js","../node_modules/caniuse-lite/data/features/svg-fragment.js","../node_modules/caniuse-lite/data/features/svg-html5.js","../node_modules/caniuse-lite/data/features/svg-img.js","../node_modules/caniuse-lite/data/features/svg-smil.js","../node_modules/caniuse-lite/data/features/svg.js","../node_modules/caniuse-lite/data/features/sxg.js","../node_modules/caniuse-lite/data/features/template-literals.js","../node_modules/caniuse-lite/data/features/tabindex-attr.js","../node_modules/caniuse-lite/data/features/temporal.js","../node_modules/caniuse-lite/data/features/testfeat.js","../node_modules/caniuse-lite/data/features/template.js","../node_modules/caniuse-lite/data/features/text-decoration.js","../node_modules/caniuse-lite/data/features/text-emphasis.js","../node_modules/caniuse-lite/data/features/text-size-adjust.js","../node_modules/caniuse-lite/data/features/text-overflow.js","../node_modules/caniuse-lite/data/features/text-stroke.js","../node_modules/caniuse-lite/data/features/textcontent.js","../node_modules/caniuse-lite/data/features/textencoder.js","../node_modules/caniuse-lite/data/features/tls1-1.js","../node_modules/caniuse-lite/data/features/tls1-2.js","../node_modules/caniuse-lite/data/features/tls1-3.js","../node_modules/caniuse-lite/data/features/touch.js","../node_modules/caniuse-lite/data/features/transforms2d.js","../node_modules/caniuse-lite/data/features/transforms3d.js","../node_modules/caniuse-lite/data/features/trusted-types.js","../node_modules/caniuse-lite/data/features/ttf.js","../node_modules/caniuse-lite/data/features/typedarrays.js","../node_modules/caniuse-lite/data/features/u2f.js","../node_modules/caniuse-lite/data/features/unhandledrejection.js","../node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js","../node_modules/caniuse-lite/data/features/use-strict.js","../node_modules/caniuse-lite/data/features/url.js","../node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js","../node_modules/caniuse-lite/data/features/urlsearchparams.js","../node_modules/caniuse-lite/data/features/user-select-none.js","../node_modules/caniuse-lite/data/features/user-timing.js","../node_modules/caniuse-lite/data/features/variable-fonts.js","../node_modules/caniuse-lite/data/features/vector-effect.js","../node_modules/caniuse-lite/data/features/vibration.js","../node_modules/caniuse-lite/data/features/video.js","../node_modules/caniuse-lite/data/features/videotracks.js","../node_modules/caniuse-lite/data/features/view-transitions.js","../node_modules/caniuse-lite/data/features/viewport-unit-variants.js","../node_modules/caniuse-lite/data/features/viewport-units.js","../node_modules/caniuse-lite/data/features/wai-aria.js","../node_modules/caniuse-lite/data/features/wake-lock.js","../node_modules/caniuse-lite/data/features/wasm-bigint.js","../node_modules/caniuse-lite/data/features/wasm-bulk-memory.js","../node_modules/caniuse-lite/data/features/wasm-extended-const.js","../node_modules/caniuse-lite/data/features/wasm-gc.js","../node_modules/caniuse-lite/data/features/wasm-multi-memory.js","../node_modules/caniuse-lite/data/features/wasm-multi-value.js","../node_modules/caniuse-lite/data/features/wasm-mutable-globals.js","../node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js","../node_modules/caniuse-lite/data/features/wasm-reference-types.js","../node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js","../node_modules/caniuse-lite/data/features/wasm-simd.js","../node_modules/caniuse-lite/data/features/wasm-signext.js","../node_modules/caniuse-lite/data/features/wasm-tail-calls.js","../node_modules/caniuse-lite/data/features/wasm.js","../node_modules/caniuse-lite/data/features/wasm-threads.js","../node_modules/caniuse-lite/data/features/wbr-element.js","../node_modules/caniuse-lite/data/features/web-animation.js","../node_modules/caniuse-lite/data/features/wav.js","../node_modules/caniuse-lite/data/features/web-app-manifest.js","../node_modules/caniuse-lite/data/features/web-bluetooth.js","../node_modules/caniuse-lite/data/features/web-serial.js","../node_modules/caniuse-lite/data/features/web-share.js","../node_modules/caniuse-lite/data/features/webauthn.js","../node_modules/caniuse-lite/data/features/webcodecs.js","../node_modules/caniuse-lite/data/features/webgl.js","../node_modules/caniuse-lite/data/features/webgl2.js","../node_modules/caniuse-lite/data/features/webgpu.js","../node_modules/caniuse-lite/data/features/webhid.js","../node_modules/caniuse-lite/data/features/webkit-user-drag.js","../node_modules/caniuse-lite/data/features/webm.js","../node_modules/caniuse-lite/data/features/webnfc.js","../node_modules/caniuse-lite/data/features/webp.js","../node_modules/caniuse-lite/data/features/websockets.js","../node_modules/caniuse-lite/data/features/webtransport.js","../node_modules/caniuse-lite/data/features/webusb.js","../node_modules/caniuse-lite/data/features/webvr.js","../node_modules/caniuse-lite/data/features/webworkers.js","../node_modules/caniuse-lite/data/features/webvtt.js","../node_modules/caniuse-lite/data/features/webxr.js","../node_modules/caniuse-lite/data/features/will-change.js","../node_modules/caniuse-lite/data/features/woff.js","../node_modules/caniuse-lite/data/features/woff2.js","../node_modules/caniuse-lite/data/features/word-break.js","../node_modules/caniuse-lite/data/features/wordwrap.js","../node_modules/caniuse-lite/data/features/x-doc-messaging.js","../node_modules/caniuse-lite/data/features/x-frame-options.js","../node_modules/caniuse-lite/data/features/xhr2.js","../node_modules/caniuse-lite/data/features/xhtmlsmil.js","../node_modules/caniuse-lite/data/features/xhtml.js","../node_modules/caniuse-lite/data/features/xml-serializer.js","../node_modules/caniuse-lite/data/features/zstd.js","../node_modules/source-map-js/lib/base64.js","../node_modules/next/dist/build/webpack/loaders/next-flight-css-loader.js","../node_modules/next/dist/build/webpack/plugins/mini-css-extract-plugin.js","../node_modules/next/dist/build/webpack/loaders/resolve-url-loader/index.js","../node_modules/next/dist/build/webpack/config/blocks/css/messages.js","../node_modules/next/dist/build/webpack/config/blocks/css/plugins.js","../node_modules/next/dist/build/webpack/config/blocks/css/loaders/next-font.js","../node_modules/next/font/google/target.css","../node_modules/next/dist/build/webpack/config/blocks/css/loaders/index.js","../node_modules/next/dist/compiled/@next/font/local/loader.js","../node_modules/next/dist/compiled/@next/font/google/loader.js","../node_modules/next/dist/compiled/ignore-loader/package.json","../node_modules/next/dist/compiled/@next/font/package.json","../node_modules/next/dist/compiled/sass-loader/cjs.js","../node_modules/next/dist/compiled/ignore-loader/index.js","../node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/value-processor.js","../node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/join-function.js","../node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/postcss.js","../node_modules/next/dist/build/webpack/config/blocks/css/loaders/file-resolve.js","../node_modules/next/dist/build/webpack/config/blocks/css/loaders/client.js","../node_modules/next/dist/compiled/mini-css-extract-plugin/package.json","../node_modules/next/dist/compiled/source-map/package.json","../node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js","../node_modules/next/dist/compiled/@next/font/dist/local/loader.js","../node_modules/next/dist/compiled/@next/font/dist/google/loader.js","../node_modules/next/dist/compiled/postcss-flexbugs-fixes/package.json","../node_modules/next/dist/build/webpack/config/blocks/css/loaders/modules.js","../node_modules/next/dist/build/webpack/config/blocks/css/loaders/global.js","../node_modules/next/dist/compiled/mini-css-extract-plugin/cjs.js","../node_modules/next/dist/compiled/source-map/source-map.js","../node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/file-protocol.js","../node_modules/next/dist/lib/find-config.js","../node_modules/next/dist/build/webpack/stringify-request.js","../node_modules/next/dist/compiled/mini-css-extract-plugin/index.js","../node_modules/next/dist/compiled/@next/font/dist/next-font-error.js","../node_modules/next/dist/build/webpack/loaders/css-loader/src/CssSyntaxError.js","../node_modules/next/dist/build/webpack/loaders/postcss-loader/src/Warning.js","../node_modules/next/dist/build/webpack/loaders/css-loader/src/utils.js","../node_modules/next/dist/compiled/loader-utils2/package.json","../node_modules/next/dist/compiled/@next/font/dist/local/get-fallback-metrics-from-font-file.js","../node_modules/next/dist/compiled/@next/font/dist/local/pick-font-file-for-fallback-generation.js","../node_modules/next/dist/compiled/@next/font/dist/local/validate-local-font-function-call.js","../node_modules/next/dist/compiled/@next/font/dist/google/get-font-axes.js","../node_modules/next/dist/compiled/@next/font/dist/google/validate-google-font-function-call.js","../node_modules/next/dist/compiled/@next/font/dist/google/get-google-fonts-url.js","../node_modules/next/dist/compiled/@next/font/dist/google/get-fallback-font-override-metrics.js","../node_modules/next/dist/compiled/@next/font/dist/google/find-font-files-in-css.js","../node_modules/next/dist/compiled/@next/font/dist/google/fetch-font-file.js","../node_modules/next/dist/compiled/@next/font/dist/google/fetch-css-from-google-fonts.js","../node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/api.js","../node_modules/next/dist/compiled/neo-async/package.json","../node_modules/next/dist/build/webpack/config/blocks/css/loaders/getCssModuleLocalIdent.js","../node_modules/next/dist/compiled/loader-utils2/index.js","../node_modules/next/dist/compiled/@next/font/dist/fontkit/index.js","../node_modules/next/dist/compiled/postcss-preset-env/package.json","../node_modules/next/dist/compiled/neo-async/async.js","../node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/index.js","../node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/index.js","../node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js","../node_modules/next/dist/compiled/postcss-flexbugs-fixes/index.js","../node_modules/next/dist/compiled/postcss-preset-env/index.cjs","../node_modules/next/dist/compiled/@next/font/dist/format-available-values.js","../node_modules/next/dist/compiled/@next/font/dist/constants.js","../node_modules/next/dist/build/webpack/loaders/css-loader/src/camelcase.js","../node_modules/next/dist/compiled/@next/font/dist/google/google-fonts-metadata.js","../node_modules/next/dist/compiled/@next/font/dist/google/sort-fonts-variant-values.js","../node_modules/next/dist/compiled/@next/font/dist/google/get-proxy-agent.js","../node_modules/next/dist/compiled/@next/font/dist/google/retry.js","../node_modules/next/dist/compiled/schema-utils3/package.json","../node_modules/next/dist/compiled/node-fetch/package.json","../node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/minify.js","../node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/loader.js","../node_modules/next/dist/build/webpack/loaders/postcss-loader/src/utils.js","../node_modules/next/dist/build/webpack/loaders/postcss-loader/src/Error.js","../node_modules/next/dist/compiled/schema-utils3/index.js","../node_modules/next/dist/compiled/postcss-modules-extract-imports/package.json","../node_modules/next/dist/compiled/postcss-modules-values/package.json","../node_modules/next/dist/compiled/postcss-modules-local-by-default/package.json","../node_modules/next/dist/compiled/postcss-modules-scope/package.json","../node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-import-parser.js","../node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-icss-parser.js","../node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-url-parser.js","../node_modules/next/dist/compiled/node-fetch/index.js","../node_modules/next/dist/compiled/postcss-modules-extract-imports/index.js","../node_modules/next/dist/compiled/postcss-modules-local-by-default/index.js","../node_modules/next/dist/compiled/postcss-modules-scope/index.js","../node_modules/next/dist/compiled/postcss-modules-values/index.js","../node_modules/next/dist/compiled/@next/font/dist/google/font-data.json","../node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/interface.js","../node_modules/next/dist/compiled/https-proxy-agent/package.json","../node_modules/next/dist/compiled/http-proxy-agent/package.json","../node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/utils.js","../node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/codegen.js","../node_modules/next/dist/build/webpack/loaders/css-loader/src/runtime/getUrl.js","../node_modules/next/dist/compiled/https-proxy-agent/index.js","../node_modules/next/dist/compiled/http-proxy-agent/index.js","../node_modules/next/dist/compiled/webpack-sources3/package.json","../node_modules/next/dist/compiled/icss-utils/package.json","../node_modules/next/dist/compiled/webpack-sources3/index.js","../node_modules/next/dist/compiled/icss-utils/index.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/amp-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/app-router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/hooks-client-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/html-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/image-config-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/loadable.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js","../node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/server-inserted-html.js"]} \ No newline at end of file diff --git a/site/.next/package.json b/site/.next/package.json new file mode 100644 index 0000000..7156107 --- /dev/null +++ b/site/.next/package.json @@ -0,0 +1 @@ +{"type": "commonjs"} \ No newline at end of file diff --git a/site/.next/prerender-manifest.json b/site/.next/prerender-manifest.json new file mode 100644 index 0000000..898e4b0 --- /dev/null +++ b/site/.next/prerender-manifest.json @@ -0,0 +1 @@ +{"version":4,"routes":{"/dashboard":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/dashboard","dataRoute":"/dashboard.rsc"},"/uniqueizer":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/uniqueizer","dataRoute":"/uniqueizer.rsc"},"/result":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/result","dataRoute":"/result.rsc"},"/":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/","dataRoute":"/index.rsc"},"/prompt":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/prompt","dataRoute":"/prompt.rsc"}},"dynamicRoutes":{},"notFoundRoutes":[],"preview":{"previewModeId":"78c5db5ec1a542ea811b7cf881a1b451","previewModeSigningKey":"54c77ae08d9dcf78312769622612eecdc57ea8e63ca49dd9896a67941aba4535","previewModeEncryptionKey":"6f9e2825f960da5529a28ceecea28f6c5b0251d4b746933742f7441f6644e20e"}} \ No newline at end of file diff --git a/site/.next/react-loadable-manifest.json b/site/.next/react-loadable-manifest.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/site/.next/react-loadable-manifest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/site/.next/required-server-files.json b/site/.next/required-server-files.json new file mode 100644 index 0000000..5b28537 --- /dev/null +++ b/site/.next/required-server-files.json @@ -0,0 +1 @@ +{"version":1,"config":{"env":{},"webpack":null,"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"distDir":".next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false},"devIndicators":{"buildActivity":true,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":true,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"experimental":{"multiZoneDraftMode":false,"prerenderEarlyExit":false,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":5,"memoryBasedWorkersCount":false,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"outputFileTracingRoot":"/opt/uno-click/site","swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"adjustFontFallbacks":false,"adjustFontFallbacksWithSizeAdjust":false,"typedRoutes":false,"instrumentationHook":false,"bundlePagesExternals":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"missingSuspenseWithCSRBailout":true,"optimizeServerReact":true,"useEarlyImport":false,"staleTimes":{"dynamic":30,"static":300},"serverActions":{"bodySizeLimit":"10mb"},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"configFileName":"next.config.js"},"appDir":"/opt/uno-click/site","relativeAppDir":"","files":[".next/routes-manifest.json",".next/server/pages-manifest.json",".next/build-manifest.json",".next/prerender-manifest.json",".next/server/middleware-manifest.json",".next/server/middleware-build-manifest.js",".next/server/middleware-react-loadable-manifest.js",".next/server/app-paths-manifest.json",".next/app-path-routes-manifest.json",".next/app-build-manifest.json",".next/server/server-reference-manifest.js",".next/server/server-reference-manifest.json",".next/react-loadable-manifest.json",".next/server/font-manifest.json",".next/BUILD_ID",".next/server/next-font-manifest.js",".next/server/next-font-manifest.json"],"ignore":["node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"]} \ No newline at end of file diff --git a/site/.next/routes-manifest.json b/site/.next/routes-manifest.json new file mode 100644 index 0000000..2dbacfe --- /dev/null +++ b/site/.next/routes-manifest.json @@ -0,0 +1 @@ +{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/_not-found","regex":"^/_not\\-found(?:/)?$","routeKeys":{},"namedRegex":"^/_not\\-found(?:/)?$"},{"page":"/dashboard","regex":"^/dashboard(?:/)?$","routeKeys":{},"namedRegex":"^/dashboard(?:/)?$"},{"page":"/prompt","regex":"^/prompt(?:/)?$","routeKeys":{},"namedRegex":"^/prompt(?:/)?$"},{"page":"/result","regex":"^/result(?:/)?$","routeKeys":{},"namedRegex":"^/result(?:/)?$"},{"page":"/uniqueizer","regex":"^/uniqueizer(?:/)?$","routeKeys":{},"namedRegex":"^/uniqueizer(?:/)?$"}],"dataRoutes":[],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[]} \ No newline at end of file diff --git a/site/.next/server/app-paths-manifest.json b/site/.next/server/app-paths-manifest.json new file mode 100644 index 0000000..756285a --- /dev/null +++ b/site/.next/server/app-paths-manifest.json @@ -0,0 +1,8 @@ +{ + "/_not-found/page": "app/_not-found/page.js", + "/dashboard/page": "app/dashboard/page.js", + "/page": "app/page.js", + "/prompt/page": "app/prompt/page.js", + "/uniqueizer/page": "app/uniqueizer/page.js", + "/result/page": "app/result/page.js" +} \ No newline at end of file diff --git a/site/.next/server/app/_not-found.html b/site/.next/server/app/_not-found.html new file mode 100644 index 0000000..b9d3e96 --- /dev/null +++ b/site/.next/server/app/_not-found.html @@ -0,0 +1 @@ +404: This page could not be found.Uno Click

404

This page could not be found.

\ No newline at end of file diff --git a/site/.next/server/app/_not-found.meta b/site/.next/server/app/_not-found.meta new file mode 100644 index 0000000..547abaf --- /dev/null +++ b/site/.next/server/app/_not-found.meta @@ -0,0 +1,6 @@ +{ + "status": 404, + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/_not-found/layout,_N_T_/_not-found/page,_N_T_/_not-found" + } +} \ No newline at end of file diff --git a/site/.next/server/app/_not-found.rsc b/site/.next/server/app/_not-found.rsc new file mode 100644 index 0000000..e9d3e61 --- /dev/null +++ b/site/.next/server/app/_not-found.rsc @@ -0,0 +1,9 @@ +2:I[4707,[],""] +3:I[6423,[],""] +4:{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"} +5:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"} +6:{"display":"inline-block"} +7:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0} +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["/_not-found",{"children":["__PAGE__",{},[["$L1",[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null],null],null]},[null,["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","/_not-found","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$4","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$5","children":"404"}],["$","div",null,{"style":"$6","children":["$","h2",null,{"style":"$7","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L8",["$","meta",null,{"name":"robots","content":"noindex"}]]]]] +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/server/app/_not-found/page.js b/site/.next/server/app/_not-found/page.js new file mode 100644 index 0000000..374b903 --- /dev/null +++ b/site/.next/server/app/_not-found/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=409,e.ids=[409],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},8938:(e,t,n)=>{"use strict";n.r(t),n.d(t,{GlobalError:()=>s.a,__next_app__:()=>f,originalPathname:()=>c,pages:()=>a,routeModule:()=>p,tree:()=>d}),n(7352),n(5866),n(1506);var o=n(3191),r=n(8716),i=n(7922),s=n.n(i),u=n(5231),l={};for(let e in u)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>u[e]);n.d(t,l);let d=["",{children:["/_not-found",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(n.t.bind(n,5866,23)),"next/dist/client/components/not-found-error"]}]},{}]},{layout:[()=>Promise.resolve().then(n.bind(n,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(n.t.bind(n,5866,23)),"next/dist/client/components/not-found-error"]}],a=[],c="/_not-found/page",f={require:n,loadChunk:()=>Promise.resolve()},p=new o.AppPageRouteModule({definition:{kind:r.x.APP_PAGE,page:"/_not-found/page",pathname:"/_not-found",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},4199:()=>{},9682:(e,t,n)=>{Promise.resolve().then(n.t.bind(n,2994,23)),Promise.resolve().then(n.t.bind(n,6114,23)),Promise.resolve().then(n.t.bind(n,9727,23)),Promise.resolve().then(n.t.bind(n,9671,23)),Promise.resolve().then(n.t.bind(n,1868,23)),Promise.resolve().then(n.t.bind(n,4759,23))},1506:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i,metadata:()=>r});var o=n(9510);n(7272);let r={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function i({children:e}){return o.jsx("html",{lang:"ru",children:o.jsx("body",{children:e})})}},6399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{isNotFoundError:function(){return r},notFound:function(){return o}});let n="NEXT_NOT_FOUND";function o(){let e=Error(n);throw e.digest=n,e}function r(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7352:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{PARALLEL_ROUTE_DEFAULT_PATH:function(){return r},default:function(){return i}});let o=n(6399),r="next/dist/client/components/parallel-route-default.js";function i(){(0,o.notFound)()}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var n=e=>t(t.s=e),o=t.X(0,[819],()=>n(8938));module.exports=o})(); \ No newline at end of file diff --git a/site/.next/server/app/_not-found/page.js.nft.json b/site/.next/server/app/_not-found/page.js.nft.json new file mode 100644 index 0000000..d92d441 --- /dev/null +++ b/site/.next/server/app/_not-found/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/server/app/_not-found/page_client-reference-manifest.js b/site/.next/server/app/_not-found/page_client-reference-manifest.js new file mode 100644 index 0000000..2d90e6c --- /dev/null +++ b/site/.next/server/app/_not-found/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/_not-found/page":[]}} \ No newline at end of file diff --git a/site/.next/server/app/dashboard.html b/site/.next/server/app/dashboard.html new file mode 100644 index 0000000..008e1ba --- /dev/null +++ b/site/.next/server/app/dashboard.html @@ -0,0 +1 @@ +Uno Click
Загрузка...
\ No newline at end of file diff --git a/site/.next/server/app/dashboard.meta b/site/.next/server/app/dashboard.meta new file mode 100644 index 0000000..1e4d246 --- /dev/null +++ b/site/.next/server/app/dashboard.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/dashboard/layout,_N_T_/dashboard/page,_N_T_/dashboard" + } +} \ No newline at end of file diff --git a/site/.next/server/app/dashboard.rsc b/site/.next/server/app/dashboard.rsc new file mode 100644 index 0000000..e0cbf96 --- /dev/null +++ b/site/.next/server/app/dashboard.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[1720,["702","static/chunks/app/dashboard/page-4ae4d2092fe0a084.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["dashboard",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["dashboard",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/server/app/dashboard/page.js b/site/.next/server/app/dashboard/page.js new file mode 100644 index 0000000..f748a44 --- /dev/null +++ b/site/.next/server/app/dashboard/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=702,e.ids=[702],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},8209:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>u,originalPathname:()=>p,pages:()=>c,routeModule:()=>x,tree:()=>l}),r(9521),r(1506),r(5866);var n=r(3191),i=r(8716),o=r(7922),a=r.n(o),s=r(5231),d={};for(let e in s)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(d[e]=()=>s[e]);r.d(t,d);let l=["",{children:["dashboard",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,9521)),"/opt/uno-click/site/app/dashboard/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,5866,23)),"next/dist/client/components/not-found-error"]}],c=["/opt/uno-click/site/app/dashboard/page.tsx"],p="/dashboard/page",u={require:r,loadChunk:()=>Promise.resolve()},x=new n.AppPageRouteModule({definition:{kind:i.x.APP_PAGE,page:"/dashboard/page",pathname:"/dashboard",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:l}})},9264:(e,t,r)=>{Promise.resolve().then(r.bind(r,7581))},4199:()=>{},9682:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,2994,23)),Promise.resolve().then(r.t.bind(r,6114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,9671,23)),Promise.resolve().then(r.t.bind(r,1868,23)),Promise.resolve().then(r.t.bind(r,4759,23))},7581:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(326),i=r(7577),o=r(5047);function a(){let e=(0,o.useRouter)(),[t,r]=(0,i.useState)(null),[a,d]=(0,i.useState)(!0),[l,c]=(0,i.useState)(!1);async function p(){try{await fetch("/api/auth/logout",{method:"POST",credentials:"same-origin"}),e.push("/")}catch(t){console.error("Logout error:",t),e.push("/")}}async function u(){let e=await fetch("/api/auth/csrf",{credentials:"same-origin"});return(await e.json()).csrfToken||""}async function x(){c(!0);try{let t=await u(),r=await fetch("/api/scenario/uniqueizer/start",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json","x-csrf-token":t}});if(r.ok){let t=await r.json();e.push(`/uniqueizer?generationUuid=${t.generationUuid}`)}else{let e=await r.json();alert("Ошибка запуска сценария: "+(e.message||r.statusText))}}catch(e){alert("Ошибка: "+(e instanceof Error?e.message:String(e)))}finally{c(!1)}}return a?n.jsx("div",{style:s.loading,children:"Загрузка..."}):n.jsx("div",{style:s.page,children:(0,n.jsxs)("div",{style:s.container,children:[(0,n.jsxs)("div",{style:s.header,children:[n.jsx("h1",{style:s.headerTitle,children:"Uno Click"}),n.jsx("button",{onClick:p,style:s.logoutBtn,children:"Выйти"})]}),(0,n.jsxs)("div",{style:s.welcome,children:[(0,n.jsxs)("h2",{style:s.welcomeTitle,children:["Добро пожаловать, ",t?.displayName||t?.email,"!"]}),n.jsx("p",{style:s.welcomeText,children:"Выберите сценарий для запуска"})]}),(0,n.jsxs)("div",{style:s.scenariosGrid,children:[(0,n.jsxs)("div",{style:s.scenarioCard,children:[n.jsx("div",{style:{...s.scenarioIcon,...s.scenarioIconBlue},children:"\uD83C\uDFA8"}),n.jsx("div",{style:s.scenarioName,children:"Nano Banana"}),n.jsx("div",{style:s.scenarioDesc,children:"Генерация изображений по текстовому описанию. Введите промпт и получите уникальную иллюстрацию."}),n.jsx("a",{href:"/prompt?scenario=nano-banana",style:s.btnPrimary,children:"Запустить"})]}),(0,n.jsxs)("div",{style:s.scenarioCard,children:[n.jsx("div",{style:{...s.scenarioIcon,...s.scenarioIconGreen},children:"\uD83E\uDDEA"}),n.jsx("div",{style:s.scenarioName,children:"Demo Scenario"}),n.jsx("div",{style:s.scenarioDesc,children:"Тестовый сценарий для проверки функциональности. Многоступенчатая генерация с подтверждением."}),n.jsx("a",{href:"/prompt?scenario=demo-scenario",style:s.btnSecondary,children:"Запустить"})]}),(0,n.jsxs)("div",{style:s.scenarioCard,children:[n.jsx("div",{style:{...s.scenarioIcon,...s.scenarioIconBlue},children:"✨"}),n.jsx("div",{style:s.scenarioName,children:"Уникализация"}),n.jsx("div",{style:s.scenarioDesc,children:"Запуск сценария уникализации контента."}),n.jsx("button",{onClick:x,disabled:l,style:{...s.btnPrimary,...l?s.btnDisabled:{}},children:l?"Запуск...":"Запустить"})]})]})]})})}let s={page:{minHeight:"100vh",padding:"40px 20px",background:"#f5f5f5"},container:{maxWidth:"800px",margin:"0 auto"},header:{background:"white",padding:"20px 30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",marginBottom:"20px",display:"flex",justifyContent:"space-between",alignItems:"center"},headerTitle:{fontSize:"20px",fontWeight:600,color:"#333"},logoutBtn:{background:"none",border:"1px solid #ddd",padding:"8px 16px",borderRadius:"6px",cursor:"pointer",fontSize:"14px",color:"#666"},welcome:{background:"white",padding:"20px 30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",marginBottom:"20px"},welcomeTitle:{fontSize:"18px",fontWeight:600,color:"#333",marginBottom:"8px"},welcomeText:{color:"#666",fontSize:"14px"},scenariosGrid:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",gap:"20px"},scenarioCard:{background:"white",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",padding:"24px",transition:"box-shadow 0.2s"},scenarioIcon:{width:"48px",height:"48px",borderRadius:"10px",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"24px",marginBottom:"16px"},scenarioIconBlue:{background:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)"},scenarioIconGreen:{background:"linear-gradient(135deg, #11998e 0%, #38ef7d 100%)"},scenarioName:{fontSize:"16px",fontWeight:600,color:"#333",marginBottom:"8px"},scenarioDesc:{fontSize:"14px",color:"#666",marginBottom:"20px",lineHeight:1.5},btnPrimary:{width:"100%",padding:"12px",background:"#007bff",color:"white",border:"none",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer",textAlign:"center",textDecoration:"none",display:"inline-block"},btnSecondary:{width:"100%",padding:"12px",background:"#f5f5f5",color:"#333",border:"1px solid #ddd",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer",textAlign:"center",textDecoration:"none",display:"inline-block"},btnDisabled:{background:"#ccc",cursor:"not-allowed"},loading:{display:"flex",alignItems:"center",justifyContent:"center",minHeight:"100vh",fontSize:"18px",color:"#666"}}},5047:(e,t,r)=>{"use strict";var n=r(7389);r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},9521:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n=(0,r(8570).createProxy)(String.raw`/opt/uno-click/site/app/dashboard/page.tsx#default`)},1506:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o,metadata:()=>i});var n=r(9510);r(7272);let i={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function o({children:e}){return n.jsx("html",{lang:"ru",children:n.jsx("body",{children:e})})}},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[819],()=>r(8209));module.exports=n})(); \ No newline at end of file diff --git a/site/.next/server/app/dashboard/page.js.nft.json b/site/.next/server/app/dashboard/page.js.nft.json new file mode 100644 index 0000000..d728bdc --- /dev/null +++ b/site/.next/server/app/dashboard/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/server/app/dashboard/page_client-reference-manifest.js b/site/.next/server/app/dashboard/page_client-reference-manifest.js new file mode 100644 index 0000000..42f75ff --- /dev/null +++ b/site/.next/server/app/dashboard/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":["702","static/chunks/app/dashboard/page-4ae4d2092fe0a084.js"],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/dashboard/page":[]}} \ No newline at end of file diff --git a/site/.next/server/app/index.html b/site/.next/server/app/index.html new file mode 100644 index 0000000..a04ff47 --- /dev/null +++ b/site/.next/server/app/index.html @@ -0,0 +1 @@ +Uno Click

Uno Click

Войдите для продолжения

\ No newline at end of file diff --git a/site/.next/server/app/index.meta b/site/.next/server/app/index.meta new file mode 100644 index 0000000..4bb6676 --- /dev/null +++ b/site/.next/server/app/index.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/page,_N_T_/" + } +} \ No newline at end of file diff --git a/site/.next/server/app/index.rsc b/site/.next/server/app/index.rsc new file mode 100644 index 0000000..d47c2e9 --- /dev/null +++ b/site/.next/server/app/index.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[7340,["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/server/app/page.js b/site/.next/server/app/page.js new file mode 100644 index 0000000..6c2e6c4 --- /dev/null +++ b/site/.next/server/app/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=931,e.ids=[931],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},65:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>s.a,__next_app__:()=>c,originalPathname:()=>p,pages:()=>u,routeModule:()=>x,tree:()=>d}),r(908),r(1506),r(5866);var o=r(3191),i=r(8716),n=r(7922),s=r.n(n),a=r(5231),l={};for(let e in a)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>a[e]);r.d(t,l);let d=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,908)),"/opt/uno-click/site/app/page.tsx"]}]},{layout:[()=>Promise.resolve().then(r.bind(r,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,5866,23)),"next/dist/client/components/not-found-error"]}],u=["/opt/uno-click/site/app/page.tsx"],p="/page",c={require:r,loadChunk:()=>Promise.resolve()},x=new o.AppPageRouteModule({definition:{kind:i.x.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},4199:()=>{},9321:(e,t,r)=>{Promise.resolve().then(r.bind(r,8743))},9682:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,2994,23)),Promise.resolve().then(r.t.bind(r,6114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,9671,23)),Promise.resolve().then(r.t.bind(r,1868,23)),Promise.resolve().then(r.t.bind(r,4759,23))},8743:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var o=r(326),i=r(7577),n=r(5047);function s(){let e=(0,n.useRouter)(),[t,r]=(0,i.useState)(""),[s,l]=(0,i.useState)(""),[d,u]=(0,i.useState)(""),[p,c]=(0,i.useState)(!1);async function x(r){r.preventDefault(),c(!0),u("");try{let r=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({email:t,password:s})}),o=await r.json();if(!r.ok)throw Error(o.message||"Ошибка входа");e.push("/dashboard")}catch(e){u(e instanceof Error?e.message:"Неизвестная ошибка"),c(!1)}}return o.jsx("div",{style:a.container,children:(0,o.jsxs)("div",{style:a.card,children:[o.jsx("h1",{style:a.title,children:"Uno Click"}),o.jsx("p",{style:a.subtitle,children:"Войдите для продолжения"}),d&&o.jsx("div",{style:a.error,children:d}),(0,o.jsxs)("form",{onSubmit:x,children:[(0,o.jsxs)("div",{style:a.formGroup,children:[o.jsx("label",{htmlFor:"email",style:a.label,children:"Email"}),o.jsx("input",{type:"email",id:"email",value:t,onChange:e=>r(e.target.value),required:!0,placeholder:"test.user@uno-click.local",style:a.input})]}),(0,o.jsxs)("div",{style:a.formGroup,children:[o.jsx("label",{htmlFor:"password",style:a.label,children:"Пароль"}),o.jsx("input",{type:"password",id:"password",value:s,onChange:e=>l(e.target.value),required:!0,placeholder:"test123",style:a.input})]}),o.jsx("button",{type:"submit",disabled:p,style:{...a.button,...p?a.buttonDisabled:{}},children:p?"Вход...":"Войти"})]})]})})}let a={container:{display:"flex",alignItems:"center",justifyContent:"center",minHeight:"100vh",background:"#f5f5f5"},card:{background:"white",padding:"40px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",width:"100%",maxWidth:"400px"},title:{fontSize:"24px",fontWeight:600,marginBottom:"8px",color:"#333"},subtitle:{color:"#666",marginBottom:"32px",fontSize:"14px"},formGroup:{marginBottom:"20px"},label:{display:"block",marginBottom:"6px",fontSize:"14px",color:"#333",fontWeight:500},input:{width:"100%",padding:"12px 14px",border:"1px solid #ddd",borderRadius:"6px",fontSize:"14px",transition:"border-color 0.2s"},button:{width:"100%",padding:"12px",background:"#007bff",color:"white",border:"none",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer",transition:"background 0.2s"},buttonDisabled:{background:"#ccc",cursor:"not-allowed"},error:{background:"#fee",color:"#c00",padding:"12px",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"}}},5047:(e,t,r)=>{"use strict";var o=r(7389);r.o(o,"useRouter")&&r.d(t,{useRouter:function(){return o.useRouter}}),r.o(o,"useSearchParams")&&r.d(t,{useSearchParams:function(){return o.useSearchParams}})},1506:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n,metadata:()=>i});var o=r(9510);r(7272);let i={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function n({children:e}){return o.jsx("html",{lang:"ru",children:o.jsx("body",{children:e})})}},908:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});let o=(0,r(8570).createProxy)(String.raw`/opt/uno-click/site/app/page.tsx#default`)},7272:()=>{}};var t=require("../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[819],()=>r(65));module.exports=o})(); \ No newline at end of file diff --git a/site/.next/server/app/page.js.nft.json b/site/.next/server/app/page.js.nft.json new file mode 100644 index 0000000..c548449 --- /dev/null +++ b/site/.next/server/app/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../node_modules/next/dist/client/components/async-local-storage.js","../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../package.json","../../package.json","../chunks/819.js","../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/server/app/page_client-reference-manifest.js b/site/.next/server/app/page_client-reference-manifest.js new file mode 100644 index 0000000..f5cdc56 --- /dev/null +++ b/site/.next/server/app/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[]}} \ No newline at end of file diff --git a/site/.next/server/app/prompt.html b/site/.next/server/app/prompt.html new file mode 100644 index 0000000..718bff9 --- /dev/null +++ b/site/.next/server/app/prompt.html @@ -0,0 +1 @@ +Uno Click
Загрузка...
\ No newline at end of file diff --git a/site/.next/server/app/prompt.meta b/site/.next/server/app/prompt.meta new file mode 100644 index 0000000..cc6ab81 --- /dev/null +++ b/site/.next/server/app/prompt.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/prompt/layout,_N_T_/prompt/page,_N_T_/prompt" + } +} \ No newline at end of file diff --git a/site/.next/server/app/prompt.rsc b/site/.next/server/app/prompt.rsc new file mode 100644 index 0000000..4e0dc51 --- /dev/null +++ b/site/.next/server/app/prompt.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[1882,["681","static/chunks/app/prompt/page-6fa8974048233766.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["prompt",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["prompt",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","prompt","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/server/app/prompt/page.js b/site/.next/server/app/prompt/page.js new file mode 100644 index 0000000..37621c7 --- /dev/null +++ b/site/.next/server/app/prompt/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=681,e.ids=[681],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},6108:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>o.a,__next_app__:()=>u,originalPathname:()=>c,pages:()=>p,routeModule:()=>x,tree:()=>d}),r(2712),r(1506),r(5866);var i=r(3191),n=r(8716),a=r(7922),o=r.n(a),s=r(5231),l={};for(let e in s)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>s[e]);r.d(t,l);let d=["",{children:["prompt",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,2712)),"/opt/uno-click/site/app/prompt/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,5866,23)),"next/dist/client/components/not-found-error"]}],p=["/opt/uno-click/site/app/prompt/page.tsx"],c="/prompt/page",u={require:r,loadChunk:()=>Promise.resolve()},x=new i.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/prompt/page",pathname:"/prompt",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},4199:()=>{},313:(e,t,r)=>{Promise.resolve().then(r.bind(r,7338))},9682:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,2994,23)),Promise.resolve().then(r.t.bind(r,6114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,9671,23)),Promise.resolve().then(r.t.bind(r,1868,23)),Promise.resolve().then(r.t.bind(r,4759,23))},7338:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var i=r(326),n=r(7577),a=r(5047);function o(){let e=(0,a.useRouter)(),t=(0,a.useSearchParams)().get("scenario")||"nano-banana",r={"nano-banana":{name:"Nano Banana",desc:"Генерация изображений по промпту",icon:"\uD83C\uDFA8",class:"blue",stepId:"1"},"demo-scenario":{name:"Demo Scenario",desc:"Тестовый сценарий с подтверждением",icon:"\uD83E\uDDEA",class:"green",stepId:"collect-input"}},o=r[t]||r["nano-banana"],[s,d]=(0,n.useState)(""),[p,c]=(0,n.useState)(null),[u,x]=(0,n.useState)(null),[g,m]=(0,n.useState)(""),[f,h]=(0,n.useState)(!1),[b,y]=(0,n.useState)(""),[v,j]=(0,n.useState)(""),P=(0,n.useRef)(null),S=(0,n.useRef)(null);async function w(e,t,r){let i=new FormData;i.append("file",e),i.append("generationUuid",t),i.append("generationStepId",r);let n=await fetch("/api/upload/image",{method:"POST",headers:{"x-csrf-token":v},body:i,credentials:"same-origin"}),a=await n.json();if(!n.ok)throw Error(a.message||"Ошибка загрузки файла");return a.data.s3Key}async function k(r){r.preventDefault(),h(!0),m(""),y("Запуск сценария...");try{let r;let i=await fetch(`/api/scenario/${t}/start`,{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":v},credentials:"same-origin",body:JSON.stringify({})}),n=await i.json();if(!i.ok)throw Error(n.message||"Ошибка запуска сценария");let a=n.generationUuid;if(p){y("Загрузка файла...");let e=await fetch(`/api/scenario/${t}/step/${o.stepId}/record`,{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":v},credentials:"same-origin",body:JSON.stringify({prompt:s})}),i=(await e.json()).stepRecordId;r=await w(p,a,i)}let l={prompt:s};r&&(l.imageKey=r),y("Генерация...");let d=await fetch(`/api/scenario/${t}/step/${o.stepId}`,{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":v},credentials:"same-origin",body:JSON.stringify(l)}),c=await d.json();if(!d.ok)throw Error(c.message||"Ошибка выполнения шага");e.push(`/result?generationUuid=${a}`)}catch(e){m(e instanceof Error?e.message:"Неизвестная ошибка"),h(!1),y("")}}return i.jsx("div",{style:l.page,children:(0,i.jsxs)("div",{style:l.container,children:[(0,i.jsxs)("div",{style:l.header,children:[i.jsx("h1",{style:l.headerTitle,children:"Создание"}),i.jsx("button",{onClick:()=>e.push("/dashboard"),style:l.btnSmall,children:"Назад"})]}),(0,i.jsxs)("div",{style:l.card,children:[(0,i.jsxs)("div",{style:l.scenarioInfo,children:[i.jsx("div",{style:{...l.scenarioIcon,...l[o.class]},children:o.icon}),(0,i.jsxs)("div",{children:[i.jsx("div",{style:l.scenarioName,children:o.name}),i.jsx("div",{style:l.scenarioDesc,children:o.desc})]})]}),g&&i.jsx("div",{style:l.error,children:g}),(0,i.jsxs)("form",{onSubmit:k,children:[(0,i.jsxs)("div",{style:l.formGroup,children:[i.jsx("label",{htmlFor:"prompt",style:l.label,children:"Опишите, что хотите создать"}),i.jsx("textarea",{id:"prompt",value:s,onChange:e=>d(e.target.value),required:!0,placeholder:"Например: кот в космосе, цифровая иллюстрация, яркие цвета...",style:l.textarea})]}),(0,i.jsxs)("div",{style:l.formGroup,children:[i.jsx("label",{style:l.label,children:"Изображение (опционально)"}),(0,i.jsxs)("div",{ref:S,style:l.fileUpload,onClick:()=>P.current?.click(),children:[i.jsx("input",{ref:P,type:"file",accept:"image/jpeg,image/jpg,image/png,image/gif,image/webp",onChange:function(e){e.target.files?.length&&function(e){if(!["image/jpeg","image/jpg","image/png","image/gif","image/webp"].includes(e.type)){m("Недопустимый тип файла. Разрешены: JPEG, PNG, GIF, WebP");return}if(e.size>10485760){m("Файл слишком большой. Максимум: 10MB");return}c(e);let t=new FileReader;t.onload=e=>x(e.target?.result),t.readAsDataURL(e),m("")}(e.target.files[0])},style:{display:"none"}}),(0,i.jsxs)("div",{style:l.fileUploadLabel,children:[i.jsx("div",{style:l.fileUploadIcon,children:"\uD83D\uDCC1"}),i.jsx("div",{style:l.fileUploadText,children:"Нажмите для загрузки или перетащите файл"}),i.jsx("div",{style:{...l.fileUploadText,fontSize:"12px",color:"#999",marginTop:"4px"},children:"JPEG, PNG, GIF, WebP до 10MB"})]})]}),u&&(0,i.jsxs)("div",{style:l.filePreview,children:[i.jsx("img",{src:u,alt:"Preview",style:l.previewImg}),(0,i.jsxs)("div",{style:l.filePreviewInfo,children:[i.jsx("div",{style:l.filePreviewName,children:p?.name}),i.jsx("div",{children:p&&function(e){if(0===e)return"0 Bytes";let t=Math.floor(Math.log(e)/Math.log(1024));return Math.round(e/Math.pow(1024,t)*100)/100+" "+["Bytes","KB","MB","GB"][t]}(p.size)})]}),i.jsx("button",{type:"button",onClick:function(){c(null),x(null),P.current&&(P.current.value="")},style:l.fileRemove,children:"\xd7"})]})]}),i.jsx("button",{type:"submit",disabled:f,style:{...l.btnPrimary,...f?l.btnDisabled:{}},children:f?"Запуск...":"Создать"})]}),b&&(0,i.jsxs)("div",{style:l.status,children:[i.jsx("span",{style:l.spinner}),i.jsx("span",{children:b})]})]})]})})}function s(){return i.jsx(n.Suspense,{fallback:i.jsx("div",{style:l.page,children:i.jsx("div",{style:l.container,children:i.jsx("div",{style:l.emptyState,children:"Загрузка..."})})}),children:i.jsx(o,{})})}let l={page:{minHeight:"100vh",padding:"40px 20px",background:"#f5f5f5"},container:{maxWidth:"600px",margin:"0 auto"},emptyState:{textAlign:"center",padding:"60px 20px",color:"#666"},header:{background:"white",padding:"20px 30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",marginBottom:"20px",display:"flex",justifyContent:"space-between",alignItems:"center"},headerTitle:{fontSize:"20px",fontWeight:600,color:"#333"},btnSmall:{background:"none",border:"1px solid #ddd",padding:"8px 16px",borderRadius:"6px",cursor:"pointer",fontSize:"14px",color:"#666"},card:{background:"white",padding:"30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)"},scenarioInfo:{display:"flex",alignItems:"center",gap:"12px",marginBottom:"24px",padding:"16px",background:"#f8f9fa",borderRadius:"6px"},scenarioIcon:{width:"40px",height:"40px",borderRadius:"8px",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"20px"},blue:{background:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)"},green:{background:"linear-gradient(135deg, #11998e 0%, #38ef7d 100%)"},scenarioName:{fontWeight:600,color:"#333"},scenarioDesc:{fontSize:"13px",color:"#666"},formGroup:{marginBottom:"20px"},label:{display:"block",marginBottom:"8px",fontSize:"14px",color:"#333",fontWeight:500},textarea:{width:"100%",padding:"14px",border:"1px solid #ddd",borderRadius:"6px",fontSize:"14px",fontFamily:"inherit",resize:"vertical",minHeight:"120px"},fileUpload:{border:"2px dashed #ddd",borderRadius:"6px",padding:"20px",textAlign:"center",cursor:"pointer",transition:"all 0.2s",marginBottom:"10px"},fileUploadLabel:{display:"block",cursor:"pointer"},fileUploadIcon:{fontSize:"32px",marginBottom:"8px"},fileUploadText:{fontSize:"14px",color:"#666"},filePreview:{display:"flex",alignItems:"center",gap:"10px",marginTop:"10px",padding:"10px",background:"#f8f9fa",borderRadius:"6px"},previewImg:{maxWidth:"80px",maxHeight:"80px",borderRadius:"4px",objectFit:"cover"},filePreviewInfo:{flex:1,fontSize:"13px",color:"#666"},filePreviewName:{fontWeight:500,color:"#333",marginBottom:"4px"},fileRemove:{background:"none",border:"none",color:"#dc3545",cursor:"pointer",fontSize:"18px",padding:"4px 8px"},btnPrimary:{padding:"12px 24px",background:"#007bff",color:"white",border:"none",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer",width:"100%"},btnDisabled:{background:"#ccc",cursor:"not-allowed"},error:{background:"#fee",color:"#c00",padding:"12px",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},status:{textAlign:"center",padding:"20px",color:"#666"},spinner:{display:"inline-block",width:"20px",height:"20px",border:"2px solid #ddd",borderTopColor:"#007bff",borderRadius:"50%",animation:"spin 1s linear infinite",marginRight:"10px",verticalAlign:"middle"}}},5047:(e,t,r)=>{"use strict";var i=r(7389);r.o(i,"useRouter")&&r.d(t,{useRouter:function(){return i.useRouter}}),r.o(i,"useSearchParams")&&r.d(t,{useSearchParams:function(){return i.useSearchParams}})},1506:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a,metadata:()=>n});var i=r(9510);r(7272);let n={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function a({children:e}){return i.jsx("html",{lang:"ru",children:i.jsx("body",{children:e})})}},2712:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});let i=(0,r(8570).createProxy)(String.raw`/opt/uno-click/site/app/prompt/page.tsx#default`)},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[819],()=>r(6108));module.exports=i})(); \ No newline at end of file diff --git a/site/.next/server/app/prompt/page.js.nft.json b/site/.next/server/app/prompt/page.js.nft.json new file mode 100644 index 0000000..d728bdc --- /dev/null +++ b/site/.next/server/app/prompt/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/server/app/prompt/page_client-reference-manifest.js b/site/.next/server/app/prompt/page_client-reference-manifest.js new file mode 100644 index 0000000..c97d49f --- /dev/null +++ b/site/.next/server/app/prompt/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/prompt/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":["681","static/chunks/app/prompt/page-6fa8974048233766.js"],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/prompt/page":[]}} \ No newline at end of file diff --git a/site/.next/server/app/result.html b/site/.next/server/app/result.html new file mode 100644 index 0000000..59ffee2 --- /dev/null +++ b/site/.next/server/app/result.html @@ -0,0 +1 @@ +Uno Click
Загрузка...
\ No newline at end of file diff --git a/site/.next/server/app/result.meta b/site/.next/server/app/result.meta new file mode 100644 index 0000000..2471783 --- /dev/null +++ b/site/.next/server/app/result.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/result/layout,_N_T_/result/page,_N_T_/result" + } +} \ No newline at end of file diff --git a/site/.next/server/app/result.rsc b/site/.next/server/app/result.rsc new file mode 100644 index 0000000..e8e81a1 --- /dev/null +++ b/site/.next/server/app/result.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[4437,["609","static/chunks/app/result/page-7096d0d3c33dfb7f.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["result",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["result",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","result","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/server/app/result/page.js b/site/.next/server/app/result/page.js new file mode 100644 index 0000000..37ce7c5 --- /dev/null +++ b/site/.next/server/app/result/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=609,e.ids=[609],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},5554:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>x,originalPathname:()=>c,pages:()=>p,routeModule:()=>u,tree:()=>o}),r(5556),r(1506),r(5866);var i=r(3191),n=r(8716),s=r(7922),a=r.n(s),d=r(5231),l={};for(let e in d)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>d[e]);r.d(t,l);let o=["",{children:["result",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,5556)),"/opt/uno-click/site/app/result/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,5866,23)),"next/dist/client/components/not-found-error"]}],p=["/opt/uno-click/site/app/result/page.tsx"],c="/result/page",x={require:r,loadChunk:()=>Promise.resolve()},u=new i.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/result/page",pathname:"/result",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:o}})},4199:()=>{},7594:(e,t,r)=>{Promise.resolve().then(r.bind(r,7367))},9682:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,2994,23)),Promise.resolve().then(r.t.bind(r,6114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,9671,23)),Promise.resolve().then(r.t.bind(r,1868,23)),Promise.resolve().then(r.t.bind(r,4759,23))},7367:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var i=r(326),n=r(7577),s=r(5047);function a(){var e;(0,s.useRouter)();let t=(0,s.useSearchParams)().get("generationUuid"),[r,a]=(0,n.useState)(null),[d,o]=(0,n.useState)(!0),[p,c]=(0,n.useState)(""),[x,u]=(0,n.useState)(!1);async function h(){if(t)try{let e=await fetch(`/api/result/${t}`,{credentials:"same-origin"}),r=await e.json();if(!e.ok)throw Error(r.message||"Ошибка загрузки результата");a(r.result),c(""),o(!1),"running"===r.result.status||"waiting_for_input"===r.result.status?(u(!0),setTimeout(h,3e3)):u(!1)}catch(e){c(e instanceof Error?e.message:"Ошибка загрузки"),o(!1)}}return d?i.jsx("div",{style:l.page,children:(0,i.jsxs)("div",{style:l.container,children:[(0,i.jsxs)("div",{style:l.header,children:[i.jsx("h1",{style:l.headerTitle,children:"Результат"}),i.jsx("a",{href:"/dashboard",style:l.btnSmall,children:"К сценариям"})]}),i.jsx("div",{style:l.card,children:(0,i.jsxs)("div",{style:l.emptyState,children:[i.jsx("div",{style:l.emptyStateIcon,children:i.jsx("span",{style:l.spinnerLarge})}),i.jsx("div",{style:l.emptyStateText,children:"Загружаем результат..."})]})})]})}):p&&!r?i.jsx("div",{style:l.page,children:(0,i.jsxs)("div",{style:l.container,children:[(0,i.jsxs)("div",{style:l.header,children:[i.jsx("h1",{style:l.headerTitle,children:"Результат"}),i.jsx("a",{href:"/dashboard",style:l.btnSmall,children:"К сценариям"})]}),i.jsx("div",{style:l.card,children:i.jsx("div",{style:l.error,children:p})})]})}):i.jsx("div",{style:l.page,children:(0,i.jsxs)("div",{style:l.container,children:[(0,i.jsxs)("div",{style:l.header,children:[i.jsx("h1",{style:l.headerTitle,children:"Результат"}),i.jsx("div",{style:l.headerActions,children:i.jsx("a",{href:"/dashboard",style:l.btnSmall,children:"К сценариям"})})]}),(0,i.jsxs)("div",{style:l.card,children:[(0,i.jsxs)("div",{style:l.cardHeader,children:[i.jsx("span",{style:l.cardTitle,children:r?.scenarioName||"Загрузка..."}),i.jsx("span",{style:{...l.statusBadge,...r?.status==="completed"?l.statusCompleted:r?.status==="failed"?l.statusFailed:l.statusRunning},children:r?({running:"Генерация...",completed:"Готово",failed:"Ошибка",waiting_for_input:"Ожидание...",created:"Создано"})[e=r.status]||e:"Загрузка..."})]}),(0,i.jsxs)("div",{style:l.cardBody,children:[p&&i.jsx("div",{style:l.error,children:p}),r?.requestPayload?.prompt&&(0,i.jsxs)("div",{style:l.promptInfo,children:[i.jsx("div",{style:l.promptLabel,children:"Промпт"}),i.jsx("div",{style:l.promptText,children:r.requestPayload.prompt})]}),r?.files&&r.files.length>0?i.jsx("div",{style:l.fileContainer,children:r.files.map((e,t)=>(function(e,t){var r;let n="video"===e.contentType?i.jsx("video",{src:e.url,controls:!0,style:l.previewMedia}):i.jsx("img",{src:e.url,alt:`Result ${t+1}`,style:l.previewMedia});return(0,i.jsxs)("div",{style:l.fileCard,children:[i.jsx("div",{style:l.filePreview,children:n}),(0,i.jsxs)("div",{style:l.fileInfo,children:[(0,i.jsxs)("div",{style:l.fileMeta,children:[e.format&&(0,i.jsxs)("span",{style:l.fileMetaItem,children:[i.jsx("strong",{children:"Формат:"})," ",e.format.toUpperCase()]}),e.width&&e.height&&(0,i.jsxs)("span",{style:l.fileMetaItem,children:[i.jsx("strong",{children:"Размер:"})," ",e.width,"\xd7",e.height]}),e.duration&&(0,i.jsxs)("span",{style:l.fileMetaItem,children:[i.jsx("strong",{children:"Длительность:"})," ",(r=e.duration,`${Math.floor(r/60)}:${Math.floor(r%60).toString().padStart(2,"0")}`)]})]}),(0,i.jsxs)("div",{style:l.fileActions,children:[i.jsx("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",style:l.btnPrimary,children:"\uD83D\uDC41 Открыть"}),i.jsx("a",{href:e.url,download:!0,style:l.btnSecondary,children:"⬇ Скачать"})]})]})]},t)})(e,t))}):r?.status==="completed"?(0,i.jsxs)("div",{style:l.emptyState,children:[i.jsx("div",{style:l.emptyStateIcon,children:"⏳"}),i.jsx("div",{style:l.emptyStateText,children:"Результат получен, но файлы не найдены"})]}):r?.status==="failed"?(0,i.jsxs)("div",{style:l.emptyState,children:[i.jsx("div",{style:l.emptyStateIcon,children:"❌"}),i.jsx("div",{style:l.emptyStateText,children:"Произошла ошибка при генерации"})]}):(0,i.jsxs)("div",{style:l.emptyState,children:[i.jsx("div",{style:l.emptyStateIcon,children:"⏳"}),i.jsx("div",{style:l.emptyStateText,children:"Результат ещё не готов"}),(0,i.jsxs)("button",{onClick:h,style:l.refreshBtn,children:[i.jsx("span",{style:{...l.spinner,display:x?"inline-block":"none"}}),i.jsx("span",{children:"Проверить снова"})]})]})]})]})]})})}function d(){return i.jsx(n.Suspense,{fallback:i.jsx("div",{style:l.page,children:i.jsx("div",{style:l.container,children:i.jsx("div",{style:l.emptyState,children:"Загрузка..."})})}),children:i.jsx(a,{})})}let l={page:{minHeight:"100vh",padding:"40px 20px",background:"#f5f5f5"},container:{maxWidth:"900px",margin:"0 auto"},header:{background:"white",padding:"20px 30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",marginBottom:"20px",display:"flex",justifyContent:"space-between",alignItems:"center"},headerTitle:{fontSize:"20px",fontWeight:600,color:"#333"},headerActions:{display:"flex",gap:"10px"},btnSmall:{padding:"8px 16px",borderRadius:"6px",fontSize:"13px",cursor:"pointer",border:"1px solid #ddd",background:"white",color:"#666",textDecoration:"none"},card:{background:"white",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",overflow:"hidden"},cardHeader:{padding:"20px 30px",borderBottom:"1px solid #eee",display:"flex",alignItems:"center"},cardTitle:{fontSize:"16px",fontWeight:600,color:"#333"},cardBody:{padding:"30px"},statusBadge:{display:"inline-block",padding:"4px 12px",borderRadius:"20px",fontSize:"12px",fontWeight:500,marginLeft:"10px"},statusRunning:{background:"#fff3cd",color:"#856404"},statusCompleted:{background:"#d4edda",color:"#155724"},statusFailed:{background:"#f8d7da",color:"#721c24"},emptyState:{textAlign:"center",padding:"60px 20px",color:"#666"},emptyStateIcon:{fontSize:"48px",marginBottom:"16px"},emptyStateText:{fontSize:"16px",marginBottom:"24px"},refreshBtn:{display:"inline-flex",alignItems:"center",gap:"8px",padding:"12px 24px",background:"#007bff",color:"white",border:"none",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer"},spinner:{display:"inline-block",width:"16px",height:"16px",border:"2px solid rgba(255,255,255,0.3)",borderTopColor:"white",borderRadius:"50%",animation:"spin 1s linear infinite"},spinnerLarge:{width:"32px",height:"32px",border:"2px solid rgba(0,123,255,0.3)",borderTopColor:"#007bff",borderRadius:"50%",animation:"spin 1s linear infinite"},error:{background:"#fee",color:"#c00",padding:"12px",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},promptInfo:{background:"#f8f9fa",padding:"16px 20px",borderRadius:"6px",marginBottom:"20px"},promptLabel:{fontSize:"12px",color:"#666",marginBottom:"4px"},promptText:{fontSize:"14px",color:"#333"},fileContainer:{display:"flex",flexDirection:"column",gap:"20px"},fileCard:{border:"1px solid #eee",borderRadius:"8px",overflow:"hidden"},filePreview:{width:"100%",background:"#f5f5f5",display:"flex",alignItems:"center",justifyContent:"center",minHeight:"300px",maxHeight:"600px"},previewMedia:{maxWidth:"100%",maxHeight:"600px",objectFit:"contain"},fileInfo:{padding:"16px 20px",background:"#fafafa",display:"flex",justifyContent:"space-between",alignItems:"center",flexWrap:"wrap",gap:"12px"},fileMeta:{display:"flex",gap:"16px",flexWrap:"wrap"},fileMetaItem:{fontSize:"13px",color:"#666"},fileActions:{display:"flex",gap:"10px"},btnPrimary:{padding:"10px 20px",borderRadius:"6px",fontSize:"13px",fontWeight:500,cursor:"pointer",textDecoration:"none",border:"none",display:"inline-flex",alignItems:"center",gap:"6px",background:"#007bff",color:"white"},btnSecondary:{padding:"10px 20px",borderRadius:"6px",fontSize:"13px",fontWeight:500,cursor:"pointer",textDecoration:"none",border:"1px solid #ddd",display:"inline-flex",alignItems:"center",gap:"6px",background:"#f5f5f5",color:"#333"}}},5047:(e,t,r)=>{"use strict";var i=r(7389);r.o(i,"useRouter")&&r.d(t,{useRouter:function(){return i.useRouter}}),r.o(i,"useSearchParams")&&r.d(t,{useSearchParams:function(){return i.useSearchParams}})},1506:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s,metadata:()=>n});var i=r(9510);r(7272);let n={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function s({children:e}){return i.jsx("html",{lang:"ru",children:i.jsx("body",{children:e})})}},5556:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});let i=(0,r(8570).createProxy)(String.raw`/opt/uno-click/site/app/result/page.tsx#default`)},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[819],()=>r(5554));module.exports=i})(); \ No newline at end of file diff --git a/site/.next/server/app/result/page.js.nft.json b/site/.next/server/app/result/page.js.nft.json new file mode 100644 index 0000000..d728bdc --- /dev/null +++ b/site/.next/server/app/result/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/server/app/result/page_client-reference-manifest.js b/site/.next/server/app/result/page_client-reference-manifest.js new file mode 100644 index 0000000..7f20ca7 --- /dev/null +++ b/site/.next/server/app/result/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/result/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":["609","static/chunks/app/result/page-7096d0d3c33dfb7f.js"],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/result/page":[]}} \ No newline at end of file diff --git a/site/.next/server/app/uniqueizer.html b/site/.next/server/app/uniqueizer.html new file mode 100644 index 0000000..d6dfa2e --- /dev/null +++ b/site/.next/server/app/uniqueizer.html @@ -0,0 +1 @@ +Uno Click
Загрузка...
\ No newline at end of file diff --git a/site/.next/server/app/uniqueizer.meta b/site/.next/server/app/uniqueizer.meta new file mode 100644 index 0000000..3b9b969 --- /dev/null +++ b/site/.next/server/app/uniqueizer.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/uniqueizer/layout,_N_T_/uniqueizer/page,_N_T_/uniqueizer" + } +} \ No newline at end of file diff --git a/site/.next/server/app/uniqueizer.rsc b/site/.next/server/app/uniqueizer.rsc new file mode 100644 index 0000000..b77fceb --- /dev/null +++ b/site/.next/server/app/uniqueizer.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[2572,["167","static/chunks/app/uniqueizer/page-e45a265393ee86bd.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["uniqueizer",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["uniqueizer",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","uniqueizer","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/server/app/uniqueizer/page.js b/site/.next/server/app/uniqueizer/page.js new file mode 100644 index 0000000..142174b --- /dev/null +++ b/site/.next/server/app/uniqueizer/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=167,e.ids=[167],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},9912:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GlobalError:()=>s.a,__next_app__:()=>u,originalPathname:()=>c,pages:()=>p,routeModule:()=>x,tree:()=>l}),i(8686),i(1506),i(5866);var r=i(3191),n=i(8716),o=i(7922),s=i.n(o),a=i(5231),d={};for(let e in a)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(d[e]=()=>a[e]);i.d(t,d);let l=["",{children:["uniqueizer",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(i.bind(i,8686)),"/opt/uno-click/site/app/uniqueizer/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(i.bind(i,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(i.t.bind(i,5866,23)),"next/dist/client/components/not-found-error"]}],p=["/opt/uno-click/site/app/uniqueizer/page.tsx"],c="/uniqueizer/page",u={require:i,loadChunk:()=>Promise.resolve()},x=new r.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/uniqueizer/page",pathname:"/uniqueizer",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:l}})},4199:()=>{},5305:(e,t,i)=>{Promise.resolve().then(i.bind(i,6880))},9682:(e,t,i)=>{Promise.resolve().then(i.t.bind(i,2994,23)),Promise.resolve().then(i.t.bind(i,6114,23)),Promise.resolve().then(i.t.bind(i,9727,23)),Promise.resolve().then(i.t.bind(i,9671,23)),Promise.resolve().then(i.t.bind(i,1868,23)),Promise.resolve().then(i.t.bind(i,4759,23))},6880:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>d});var r=i(326),n=i(7577),o=i(5047);function s(){let e=(0,o.useRouter)(),t=(0,o.useSearchParams)(),i=(0,n.useRef)(null),s=(0,n.useRef)(null),[d,l]=(0,n.useState)(null),[p,c]=(0,n.useState)(null),[u,x]=(0,n.useState)(!1),[f,h]=(0,n.useState)(0),[g,m]=(0,n.useState)(""),[b,v]=(0,n.useState)(""),[y,j]=(0,n.useState)(null),w=t.get("generationUuid"),[S,P]=(0,n.useState)(w),[k,R]=(0,n.useState)(!1);async function z(){try{let e=await B();j(e)}catch(e){}}async function B(){if(!d)throw Error("Файл не выбран");if(!S)throw Error("generationUuid не получен");x(!0),h(0),v(""),m("Загрузка видео...");try{let e=await q(),t=new FormData;return t.append("file",d),t.append("generationUuid",S),new Promise((i,r)=>{let n=new XMLHttpRequest;n.upload.addEventListener("progress",e=>{if(e.lengthComputable){let t=Math.round(e.loaded/e.total*100);h(t),m(`Загрузка видео... ${t}%`)}}),n.addEventListener("load",()=>{if(201===n.status){let e=JSON.parse(n.responseText);h(100),m("Видео загружено"),x(!1),i(e.data.s3Key)}else{let e="Ошибка загрузки видео";try{e=JSON.parse(n.responseText).message||e}catch(e){}r(Error(e))}}),n.addEventListener("error",()=>{r(Error("Ошибка сети при загрузке"))}),n.open("POST","/api/upload/video"),n.setRequestHeader("x-csrf-token",e),n.withCredentials=!0,n.send(t)})}catch(e){throw v(e instanceof Error?e.message:"Ошибка загрузки"),x(!1),e}}async function C(){v("");try{if(!S)throw Error("generationUuid не получен");let t=y;t||(x(!0),m("Загрузка видео..."),t=await B(),j(t),x(!1)),m("Видео отправлено на обработку");let i=await q(),r={input:{url:t}},n=await fetch("/api/scenario/uniqueizer/step/1",{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":i},credentials:"same-origin",body:JSON.stringify(r)});if(!n.ok){let e=await n.json();throw Error(e.message||"Ошибка выполнения шага")}setTimeout(()=>{e.push(`/result?generationUuid=${S}`)},1e3)}catch(e){v(e instanceof Error?e.message:"Ошибка обработки"),x(!1)}}async function q(){let e=await fetch("/api/auth/csrf",{credentials:"same-origin"});return(await e.json()).csrfToken||""}return r.jsx("div",{style:a.page,children:r.jsx("div",{style:a.container,children:(0,r.jsxs)("div",{style:a.card,children:[r.jsx("h1",{style:a.title,children:"Уникализация видео"}),b&&r.jsx("div",{style:a.error,children:b}),g&&r.jsx("div",{style:a.status,children:r.jsx("span",{children:g})}),!k&&(0,r.jsxs)("div",{style:a.infoBox,children:[r.jsx("span",{style:a.spinner}),"Запуск сценария..."]}),k&&!b&&(0,r.jsxs)("div",{style:a.infoBox,children:["✓ Сценарий запущен (ID: ",S?.slice(0,8),"...)"]}),(0,r.jsxs)("div",{style:a.section,children:[r.jsx("h2",{style:a.sectionTitle,children:"1. Загрузите видео"}),d?(0,r.jsxs)("div",{style:a.filePreview,children:[r.jsx("video",{src:p,controls:!0,style:a.previewVideo}),(0,r.jsxs)("div",{style:a.filePreviewInfo,children:[r.jsx("div",{style:a.filePreviewName,children:d.name}),r.jsx("div",{children:function(e){if(0===e)return"0 Bytes";let t=Math.floor(Math.log(e)/Math.log(1024));return Math.round(e/Math.pow(1024,t)*100)/100+" "+["Bytes","KB","MB","GB"][t]}(d.size)})]}),r.jsx("button",{type:"button",onClick:function(){l(null),c(null),j(null),i.current&&(i.current.value="")},style:a.fileRemove,disabled:u,children:"\xd7"})]}):(0,r.jsxs)("div",{ref:s,style:a.fileUpload,onClick:()=>i.current?.click(),children:[r.jsx("input",{ref:i,type:"file",accept:"video/mp4,video/quicktime,video/x-msvideo,video/webm",onChange:function(e){e.target.files?.length&&function(e){if(!["video/mp4","video/quicktime","video/x-msvideo","video/webm"].includes(e.type)){v("Недопустимый тип файла. Разрешены: MP4, MOV, AVI, WebM");return}if(e.size>524288e3){v("Файл слишком большой. Максимум: 500MB");return}l(e),c(URL.createObjectURL(e)),v(""),j(null)}(e.target.files[0])},style:{display:"none"}}),r.jsx("div",{style:a.fileUploadIcon,children:"\uD83C\uDFAC"}),r.jsx("div",{style:a.fileUploadText,children:"Нажмите для загрузки или перетащите файл"}),r.jsx("div",{style:a.fileUploadHint,children:"MP4, MOV, AVI, WebM до 500MB"})]}),d&&!y&&(0,r.jsxs)("div",{children:[u&&f>0&&(0,r.jsxs)("div",{style:a.progressContainer,children:[r.jsx("div",{style:{...a.progressBar,width:`${f}%`}}),(0,r.jsxs)("span",{style:a.progressText,children:[f,"%"]})]}),r.jsx("button",{onClick:z,disabled:u||!k,style:{...a.btn,...a.btnPrimary,...u||!k?a.btnDisabled:{}},children:u?"Загрузка...":"Загрузить видео"})]})]}),(y||d)&&(0,r.jsxs)("div",{style:a.section,children:[r.jsx("h2",{style:a.sectionTitle,children:"2. Уникализируйте"}),r.jsx("p",{style:a.sectionDesc,children:"После нажатия видео будет отправлено на обработку"}),r.jsx("button",{onClick:C,disabled:u||!k,style:{...a.btn,...a.btnPrimary,...u||!k?a.btnDisabled:{}},children:u?"Загрузка...":"Уникализировать"})]}),r.jsx("button",{onClick:function(){e.push("/dashboard")},style:a.btnSecondary,children:"Закрыть"})]})})})}let a={page:{minHeight:"100vh",background:"#f5f5f5",display:"flex",alignItems:"center",justifyContent:"center",padding:"40px 20px"},container:{maxWidth:"700px",width:"100%"},emptyState:{textAlign:"center",padding:"60px 20px",color:"#666",fontSize:"16px"},card:{background:"white",padding:"40px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)"},title:{fontSize:"24px",fontWeight:600,marginBottom:"24px",color:"#333",textAlign:"center"},infoBox:{display:"flex",alignItems:"center",gap:"10px",padding:"12px",background:"#e8f5e9",color:"#2e7d32",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},section:{marginBottom:"32px",padding:"20px",background:"#f8f9fa",borderRadius:"8px"},sectionTitle:{fontSize:"16px",fontWeight:600,color:"#333",marginBottom:"8px"},sectionDesc:{fontSize:"14px",color:"#666",marginBottom:"16px"},fileUpload:{border:"2px dashed #ddd",borderRadius:"8px",padding:"40px 20px",textAlign:"center",cursor:"pointer",transition:"all 0.2s"},fileUploadIcon:{fontSize:"48px",marginBottom:"16px"},fileUploadText:{fontSize:"16px",color:"#666",marginBottom:"8px"},fileUploadHint:{fontSize:"13px",color:"#999"},filePreview:{position:"relative",marginBottom:"16px"},previewVideo:{width:"100%",maxHeight:"400px",borderRadius:"8px",background:"#000"},filePreviewInfo:{padding:"12px",background:"#fff",borderRadius:"6px",marginTop:"8px",fontSize:"14px",color:"#666"},filePreviewName:{fontWeight:500,color:"#333",marginBottom:"4px"},fileRemove:{position:"absolute",top:"8px",right:"8px",background:"rgba(220, 38, 38, 0.9)",color:"white",border:"none",borderRadius:"50%",width:"32px",height:"32px",fontSize:"20px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},btn:{width:"100%",padding:"14px 24px",borderRadius:"6px",fontSize:"15px",fontWeight:500,cursor:"pointer",border:"none",transition:"all 0.2s"},btnPrimary:{background:"#007bff",color:"white"},btnDisabled:{background:"#ccc",cursor:"not-allowed"},btnSecondary:{width:"100%",padding:"12px 24px",background:"#f5f5f5",color:"#333",border:"1px solid #ddd",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer"},error:{background:"#fee",color:"#c00",padding:"12px",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},status:{display:"flex",alignItems:"center",gap:"10px",padding:"12px",background:"#e7f3ff",color:"#0066cc",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},spinner:{display:"inline-block",width:"16px",height:"16px",border:"2px solid rgba(0,123,255,0.3)",borderTopColor:"#007bff",borderRadius:"50%",animation:"spin 1s linear infinite"},progressContainer:{position:"relative",height:"24px",background:"#e0e0e0",borderRadius:"12px",marginBottom:"12px",overflow:"hidden"},progressBar:{height:"100%",background:"linear-gradient(90deg, #007bff, #0056b3)",borderRadius:"12px",transition:"width 0.3s ease"},progressText:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontSize:"13px",fontWeight:"600",color:"#333"}};function d(){return r.jsx(n.Suspense,{fallback:r.jsx("div",{style:a.page,children:r.jsx("div",{style:a.container,children:r.jsx("div",{style:a.emptyState,children:"Загрузка..."})})}),children:r.jsx(s,{})})}},5047:(e,t,i)=>{"use strict";var r=i(7389);i.o(r,"useRouter")&&i.d(t,{useRouter:function(){return r.useRouter}}),i.o(r,"useSearchParams")&&i.d(t,{useSearchParams:function(){return r.useSearchParams}})},1506:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>o,metadata:()=>n});var r=i(9510);i(7272);let n={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function o({children:e}){return r.jsx("html",{lang:"ru",children:r.jsx("body",{children:e})})}},8686:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>r});let r=(0,i(8570).createProxy)(String.raw`/opt/uno-click/site/app/uniqueizer/page.tsx#default`)},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var i=e=>t(t.s=e),r=t.X(0,[819],()=>i(9912));module.exports=r})(); \ No newline at end of file diff --git a/site/.next/server/app/uniqueizer/page.js.nft.json b/site/.next/server/app/uniqueizer/page.js.nft.json new file mode 100644 index 0000000..d728bdc --- /dev/null +++ b/site/.next/server/app/uniqueizer/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/server/app/uniqueizer/page_client-reference-manifest.js b/site/.next/server/app/uniqueizer/page_client-reference-manifest.js new file mode 100644 index 0000000..8ba5080 --- /dev/null +++ b/site/.next/server/app/uniqueizer/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/uniqueizer/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":["167","static/chunks/app/uniqueizer/page-e45a265393ee86bd.js"],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/uniqueizer/page":[]}} \ No newline at end of file diff --git a/site/.next/server/chunks/682.js b/site/.next/server/chunks/682.js new file mode 100644 index 0000000..aa2b899 --- /dev/null +++ b/site/.next/server/chunks/682.js @@ -0,0 +1,6 @@ +"use strict";exports.id=682,exports.ids=[682],exports.modules={1682:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{Head:function(){return y},Html:function(){return I},Main:function(){return T},NextScript:function(){return S},default:function(){return P}});let r=n(997),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=p(void 0);if(n&&n.has(e))return n.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(r,o,s):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r}(n(6689)),o=n(5104),s=n(5778),a=n(9630),l=function(e){return e&&e.__esModule?e:{default:e}}(n(676)),u=n(3112),c=n(8584);function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}let f=new Set;function d(e,t,n){let r=(0,s.getPageFiles)(e,"/_app"),i=n?[]:(0,s.getPageFiles)(e,t);return{sharedFiles:r,pageFiles:i,allFiles:[...new Set([...r,...i])]}}function h(e,t){let{assetPrefix:n,buildManifest:i,assetQueryString:o,disableOptimizedLoading:s,crossOrigin:a}=e;return i.polyfillFiles.filter(e=>e.endsWith(".js")&&!e.endsWith(".module.js")).map(e=>(0,r.jsx)("script",{defer:!s,nonce:t.nonce,crossOrigin:t.crossOrigin||a,noModule:!0,src:`${n}/_next/${(0,c.encodeURIPath)(e)}${o}`},e))}function m({styles:e}){if(!e)return null;let t=Array.isArray(e)?e:[];if(e.props&&Array.isArray(e.props.children)){let n=e=>{var t,n;return null==e?void 0:null==(n=e.props)?void 0:null==(t=n.dangerouslySetInnerHTML)?void 0:t.__html};e.props.children.forEach(e=>{Array.isArray(e)?e.forEach(e=>n(e)&&t.push(e)):n(e)&&t.push(e)})}return(0,r.jsx)("style",{"amp-custom":"",dangerouslySetInnerHTML:{__html:t.map(e=>e.props.dangerouslySetInnerHTML.__html).join("").replace(/\/\*# sourceMappingURL=.*\*\//g,"").replace(/\/\*@ sourceURL=.*?\*\//g,"")}})}function _(e,t,n){let{dynamicImports:i,assetPrefix:o,isDevelopment:s,assetQueryString:a,disableOptimizedLoading:l,crossOrigin:u}=e;return i.map(e=>!e.endsWith(".js")||n.allFiles.includes(e)?null:(0,r.jsx)("script",{async:!s&&l,defer:!l,src:`${o}/_next/${(0,c.encodeURIPath)(e)}${a}`,nonce:t.nonce,crossOrigin:t.crossOrigin||u},e))}function g(e,t,n){var i;let{assetPrefix:o,buildManifest:s,isDevelopment:a,assetQueryString:l,disableOptimizedLoading:u,crossOrigin:p}=e;return[...n.allFiles.filter(e=>e.endsWith(".js")),...null==(i=s.lowPriorityFiles)?void 0:i.filter(e=>e.endsWith(".js"))].map(e=>(0,r.jsx)("script",{src:`${o}/_next/${(0,c.encodeURIPath)(e)}${l}`,nonce:t.nonce,async:!a&&u,defer:!u,crossOrigin:t.crossOrigin||p},e))}function E(e,t){let{scriptLoader:n,disableOptimizedLoading:o,crossOrigin:s}=e,a=function(e,t){let{assetPrefix:n,scriptLoader:o,crossOrigin:s,nextScriptWorkers:a}=e;if(!a)return null;try{let{partytownSnippet:e}=require("@builder.io/partytown/integration"),a=(Array.isArray(t.children)?t.children:[t.children]).find(e=>{var t,n;return!!e&&!!e.props&&(null==e?void 0:null==(n=e.props)?void 0:null==(t=n.dangerouslySetInnerHTML)?void 0:t.__html.length)&&"data-partytown-config"in e.props});return(0,r.jsxs)(r.Fragment,{children:[!a&&(0,r.jsx)("script",{"data-partytown-config":"",dangerouslySetInnerHTML:{__html:` + partytown = { + lib: "${n}/_next/static/~partytown/" + }; + `}}),(0,r.jsx)("script",{"data-partytown":"",dangerouslySetInnerHTML:{__html:e()}}),(o.worker||[]).map((e,n)=>{let{strategy:r,src:o,children:a,dangerouslySetInnerHTML:l,...u}=e,c={};if(o)c.src=o;else if(l&&l.__html)c.dangerouslySetInnerHTML={__html:l.__html};else if(a)c.dangerouslySetInnerHTML={__html:"string"==typeof a?a:Array.isArray(a)?a.join(""):""};else throw Error("Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script");return(0,i.createElement)("script",{...c,...u,type:"text/partytown",key:o||n,nonce:t.nonce,"data-nscript":"worker",crossOrigin:t.crossOrigin||s})})]})}catch(e){return(0,l.default)(e)&&"MODULE_NOT_FOUND"!==e.code&&console.warn(`Warning: ${e.message}`),null}}(e,t),u=(n.beforeInteractive||[]).filter(e=>e.src).map((e,n)=>{let{strategy:r,...a}=e;return(0,i.createElement)("script",{...a,key:a.src||n,defer:a.defer??!o,nonce:t.nonce,"data-nscript":"beforeInteractive",crossOrigin:t.crossOrigin||s})});return(0,r.jsxs)(r.Fragment,{children:[a,u]})}class y extends i.default.Component{static #e=this.contextType=u.HtmlContext;getCssLinks(e){let{assetPrefix:t,assetQueryString:n,dynamicImports:i,crossOrigin:o,optimizeCss:s,optimizeFonts:a}=this.context,l=e.allFiles.filter(e=>e.endsWith(".css")),u=new Set(e.sharedFiles),p=new Set([]),f=Array.from(new Set(i.filter(e=>e.endsWith(".css"))));if(f.length){let e=new Set(l);p=new Set(f=f.filter(t=>!(e.has(t)||u.has(t)))),l.push(...f)}let d=[];return l.forEach(e=>{let i=u.has(e);s||d.push((0,r.jsx)("link",{nonce:this.props.nonce,rel:"preload",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,as:"style",crossOrigin:this.props.crossOrigin||o},`${e}-preload`));let a=p.has(e);d.push((0,r.jsx)("link",{nonce:this.props.nonce,rel:"stylesheet",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,crossOrigin:this.props.crossOrigin||o,"data-n-g":a?void 0:i?"":void 0,"data-n-p":a?void 0:i?void 0:""},e))}),a&&(d=this.makeStylesheetInert(d)),0===d.length?null:d}getPreloadDynamicChunks(){let{dynamicImports:e,assetPrefix:t,assetQueryString:n,crossOrigin:i}=this.context;return e.map(e=>e.endsWith(".js")?(0,r.jsx)("link",{rel:"preload",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,as:"script",nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||i},e):null).filter(Boolean)}getPreloadMainLinks(e){let{assetPrefix:t,assetQueryString:n,scriptLoader:i,crossOrigin:o}=this.context,s=e.allFiles.filter(e=>e.endsWith(".js"));return[...(i.beforeInteractive||[]).map(e=>(0,r.jsx)("link",{nonce:this.props.nonce,rel:"preload",href:e.src,as:"script",crossOrigin:this.props.crossOrigin||o},e.src)),...s.map(e=>(0,r.jsx)("link",{nonce:this.props.nonce,rel:"preload",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,as:"script",crossOrigin:this.props.crossOrigin||o},e))]}getBeforeInteractiveInlineScripts(){let{scriptLoader:e}=this.context,{nonce:t,crossOrigin:n}=this.props;return(e.beforeInteractive||[]).filter(e=>!e.src&&(e.dangerouslySetInnerHTML||e.children)).map((e,r)=>{let{strategy:o,children:s,dangerouslySetInnerHTML:a,src:l,...u}=e,c="";return a&&a.__html?c=a.__html:s&&(c="string"==typeof s?s:Array.isArray(s)?s.join(""):""),(0,i.createElement)("script",{...u,dangerouslySetInnerHTML:{__html:c},key:u.id||r,nonce:t,"data-nscript":"beforeInteractive",crossOrigin:n||void 0})})}getDynamicChunks(e){return _(this.context,this.props,e)}getPreNextScripts(){return E(this.context,this.props)}getScripts(e){return g(this.context,this.props,e)}getPolyfillScripts(){return h(this.context,this.props)}makeStylesheetInert(e){return i.default.Children.map(e,e=>{var t,n;if((null==e?void 0:e.type)==="link"&&(null==e?void 0:null==(t=e.props)?void 0:t.href)&&o.OPTIMIZED_FONT_PROVIDERS.some(({url:t})=>{var n,r;return null==e?void 0:null==(r=e.props)?void 0:null==(n=r.href)?void 0:n.startsWith(t)})){let t={...e.props||{},"data-href":e.props.href,href:void 0};return i.default.cloneElement(e,t)}if(null==e?void 0:null==(n=e.props)?void 0:n.children){let t={...e.props||{},children:this.makeStylesheetInert(e.props.children)};return i.default.cloneElement(e,t)}return e}).filter(Boolean)}render(){let{styles:e,ampPath:t,inAmpMode:o,hybridAmp:s,canonicalBase:a,__NEXT_DATA__:l,dangerousAsPath:u,headTags:p,unstable_runtimeJS:f,unstable_JsPreload:h,disableOptimizedLoading:_,optimizeCss:g,optimizeFonts:E,assetPrefix:y,nextFontManifest:S}=this.context,I=!1===f,T=!1===h||!_;this.context.docComponentsRendered.Head=!0;let{head:P}=this.context,O=[],x=[];P&&(P.forEach(e=>{let t;this.context.strictNextHead&&(t=i.default.createElement("meta",{name:"next-head",content:"1"})),e&&"link"===e.type&&"preload"===e.props.rel&&"style"===e.props.as?(t&&O.push(t),O.push(e)):e&&(t&&("meta"!==e.type||!e.props.charSet)&&x.push(t),x.push(e))}),P=O.concat(x));let b=i.default.Children.toArray(this.props.children).filter(Boolean);E&&!o&&(b=this.makeStylesheetInert(b));let N=!1,j=!1;P=i.default.Children.map(P||[],e=>{if(!e)return e;let{type:t,props:n}=e;if(o){let r="";if("meta"===t&&"viewport"===n.name?r='name="viewport"':"link"===t&&"canonical"===n.rel?j=!0:"script"===t&&(n.src&&-1>n.src.indexOf("ampproject")||n.dangerouslySetInnerHTML&&(!n.type||"text/javascript"===n.type))&&(r="{r+=` ${e}="${n[e]}"`}),r+="/>"),r)return console.warn(`Found conflicting amp tag "${e.type}" with conflicting prop ${r} in ${l.page}. https://nextjs.org/docs/messages/conflicting-amp-tag`),null}else"link"===t&&"amphtml"===n.rel&&(N=!0);return e});let v=d(this.context.buildManifest,this.context.__NEXT_DATA__.page,o),R=function(e,t,n=""){if(!e)return{preconnect:null,preload:null};let i=e.pages["/_app"],o=e.pages[t],s=Array.from(new Set([...i??[],...o??[]]));return{preconnect:0===s.length&&(i||o)?(0,r.jsx)("link",{"data-next-font":e.pagesUsingSizeAdjust?"size-adjust":"",rel:"preconnect",href:"/",crossOrigin:"anonymous"}):null,preload:s?s.map(e=>{let t=/\.(woff|woff2|eot|ttf|otf)$/.exec(e)[1];return(0,r.jsx)("link",{rel:"preload",href:`${n}/_next/${(0,c.encodeURIPath)(e)}`,as:"font",type:`font/${t}`,crossOrigin:"anonymous","data-next-font":e.includes("-s")?"size-adjust":""},e)}):null}}(S,u,y);return(0,r.jsxs)("head",{...function(e){let{crossOrigin:t,nonce:n,...r}=e;return r}(this.props),children:[this.context.isDevelopment&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("style",{"data-next-hide-fouc":!0,"data-ampdevmode":o?"true":void 0,dangerouslySetInnerHTML:{__html:"body{display:none}"}}),(0,r.jsx)("noscript",{"data-next-hide-fouc":!0,"data-ampdevmode":o?"true":void 0,children:(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{display:block}"}})})]}),P,this.context.strictNextHead?null:(0,r.jsx)("meta",{name:"next-head-count",content:i.default.Children.count(P||[]).toString()}),b,E&&(0,r.jsx)("meta",{name:"next-font-preconnect"}),R.preconnect,R.preload,o&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("meta",{name:"viewport",content:"width=device-width,minimum-scale=1,initial-scale=1"}),!j&&(0,r.jsx)("link",{rel:"canonical",href:a+n(733).cleanAmpPath(u)}),(0,r.jsx)("link",{rel:"preload",as:"script",href:"https://cdn.ampproject.org/v0.js"}),(0,r.jsx)(m,{styles:e}),(0,r.jsx)("style",{"amp-boilerplate":"",dangerouslySetInnerHTML:{__html:"body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}"}}),(0,r.jsx)("noscript",{children:(0,r.jsx)("style",{"amp-boilerplate":"",dangerouslySetInnerHTML:{__html:"body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}"}})}),(0,r.jsx)("script",{async:!0,src:"https://cdn.ampproject.org/v0.js"})]}),!o&&(0,r.jsxs)(r.Fragment,{children:[!N&&s&&(0,r.jsx)("link",{rel:"amphtml",href:a+(t||`${u}${u.includes("?")?"&":"?"}amp=1`)}),this.getBeforeInteractiveInlineScripts(),!g&&this.getCssLinks(v),!g&&(0,r.jsx)("noscript",{"data-n-css":this.props.nonce??""}),!I&&!T&&this.getPreloadDynamicChunks(),!I&&!T&&this.getPreloadMainLinks(v),!_&&!I&&this.getPolyfillScripts(),!_&&!I&&this.getPreNextScripts(),!_&&!I&&this.getDynamicChunks(v),!_&&!I&&this.getScripts(v),g&&this.getCssLinks(v),g&&(0,r.jsx)("noscript",{"data-n-css":this.props.nonce??""}),this.context.isDevelopment&&(0,r.jsx)("noscript",{id:"__next_css__DO_NOT_USE__"}),e||null]}),i.default.createElement(i.default.Fragment,{},...p||[])]})}}class S extends i.default.Component{static #e=this.contextType=u.HtmlContext;getDynamicChunks(e){return _(this.context,this.props,e)}getPreNextScripts(){return E(this.context,this.props)}getScripts(e){return g(this.context,this.props,e)}getPolyfillScripts(){return h(this.context,this.props)}static getInlineScriptSource(e){let{__NEXT_DATA__:t,largePageDataBytes:r}=e;try{let i=JSON.stringify(t);if(f.has(t.page))return(0,a.htmlEscapeJsonString)(i);let o=Buffer.from(i).byteLength,s=n(5955).Z;return r&&o>r&&(f.add(t.page),console.warn(`Warning: data for page "${t.page}"${t.page===e.dangerousAsPath?"":` (path "${e.dangerousAsPath}")`} is ${s(o)} which exceeds the threshold of ${s(r)}, this amount of data can reduce performance. +See more info here: https://nextjs.org/docs/messages/large-page-data`)),(0,a.htmlEscapeJsonString)(i)}catch(e){if((0,l.default)(e)&&-1!==e.message.indexOf("circular structure"))throw Error(`Circular structure in "getInitialProps" result of page "${t.page}". https://nextjs.org/docs/messages/circular-structure`);throw e}}render(){let{assetPrefix:e,inAmpMode:t,buildManifest:n,unstable_runtimeJS:i,docComponentsRendered:o,assetQueryString:s,disableOptimizedLoading:a,crossOrigin:l}=this.context,u=!1===i;if(o.NextScript=!0,t)return null;let p=d(this.context.buildManifest,this.context.__NEXT_DATA__.page,t);return(0,r.jsxs)(r.Fragment,{children:[!u&&n.devFiles?n.devFiles.map(t=>(0,r.jsx)("script",{src:`${e}/_next/${(0,c.encodeURIPath)(t)}${s}`,nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||l},t)):null,u?null:(0,r.jsx)("script",{id:"__NEXT_DATA__",type:"application/json",nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||l,dangerouslySetInnerHTML:{__html:S.getInlineScriptSource(this.context)}}),a&&!u&&this.getPolyfillScripts(),a&&!u&&this.getPreNextScripts(),a&&!u&&this.getDynamicChunks(p),a&&!u&&this.getScripts(p)]})}}function I(e){let{inAmpMode:t,docComponentsRendered:n,locale:o,scriptLoader:s,__NEXT_DATA__:a}=(0,u.useHtmlContext)();return n.Html=!0,function(e,t,n){var r,o,s,a;if(!n.children)return;let l=[],u=Array.isArray(n.children)?n.children:[n.children],c=null==(o=u.find(e=>e.type===y))?void 0:null==(r=o.props)?void 0:r.children,p=null==(a=u.find(e=>"body"===e.type))?void 0:null==(s=a.props)?void 0:s.children,f=[...Array.isArray(c)?c:[c],...Array.isArray(p)?p:[p]];i.default.Children.forEach(f,t=>{var n;if(t&&(null==(n=t.type)?void 0:n.__nextScript)){if("beforeInteractive"===t.props.strategy){e.beforeInteractive=(e.beforeInteractive||[]).concat([{...t.props}]);return}if(["lazyOnload","afterInteractive","worker"].includes(t.props.strategy)){l.push(t.props);return}}}),t.scriptLoader=l}(s,a,e),(0,r.jsx)("html",{...e,lang:e.lang||o||void 0,amp:t?"":void 0,"data-ampdevmode":void 0})}function T(){let{docComponentsRendered:e}=(0,u.useHtmlContext)();return e.Main=!0,(0,r.jsx)("next-js-internal-body-render-target",{})}class P extends i.default.Component{static getInitialProps(e){return e.defaultGetInitialProps(e)}render(){return(0,r.jsxs)(I,{children:[(0,r.jsx)(y,{}),(0,r.jsxs)("body",{children:[(0,r.jsx)(T,{}),(0,r.jsx)(S,{})]})]})}}P[o.NEXT_BUILTIN_DOCUMENT]=function(){return(0,r.jsxs)(I,{children:[(0,r.jsx)(y,{}),(0,r.jsxs)("body",{children:[(0,r.jsx)(T,{}),(0,r.jsx)(S,{})]})]})}},5104:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{APP_BUILD_MANIFEST:function(){return E},APP_CLIENT_INTERNALS:function(){return K},APP_PATHS_MANIFEST:function(){return m},APP_PATH_ROUTES_MANIFEST:function(){return _},AUTOMATIC_FONT_OPTIMIZATION_MANIFEST:function(){return M},BARREL_OPTIMIZATION_PREFIX:function(){return B},BLOCKED_PAGES:function(){return F},BUILD_ID_FILE:function(){return w},BUILD_MANIFEST:function(){return g},CLIENT_PUBLIC_FILES_PATH:function(){return D},CLIENT_REFERENCE_MANIFEST:function(){return W},CLIENT_STATIC_FILES_PATH:function(){return U},CLIENT_STATIC_FILES_RUNTIME_AMP:function(){return q},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return V},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return X},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return Q},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return ee},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return Z},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return J},COMPILER_INDEXES:function(){return o},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return C},DEFAULT_RUNTIME_WEBPACK:function(){return et},DEFAULT_SANS_SERIF_FONT:function(){return el},DEFAULT_SERIF_FONT:function(){return ea},DEV_CLIENT_PAGES_MANIFEST:function(){return j},DEV_MIDDLEWARE_MANIFEST:function(){return R},EDGE_RUNTIME_WEBPACK:function(){return en},EDGE_UNSUPPORTED_NODE_APIS:function(){return ed},EXPORT_DETAIL:function(){return P},EXPORT_MARKER:function(){return T},FUNCTIONS_CONFIG_MANIFEST:function(){return y},GOOGLE_FONT_PROVIDER:function(){return eo},IMAGES_MANIFEST:function(){return b},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Y},MIDDLEWARE_BUILD_MANIFEST:function(){return G},MIDDLEWARE_MANIFEST:function(){return v},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return z},MODERN_BROWSERSLIST_TARGET:function(){return r.default},NEXT_BUILTIN_DOCUMENT:function(){return $},NEXT_FONT_MANIFEST:function(){return I},OPTIMIZED_FONT_PROVIDERS:function(){return es},PAGES_MANIFEST:function(){return h},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return d},PHASE_PRODUCTION_BUILD:function(){return u},PHASE_PRODUCTION_SERVER:function(){return c},PHASE_TEST:function(){return f},PRERENDER_MANIFEST:function(){return O},REACT_LOADABLE_MANIFEST:function(){return A},ROUTES_MANIFEST:function(){return x},RSC_MODULE_TYPES:function(){return ef},SERVER_DIRECTORY:function(){return L},SERVER_FILES_MANIFEST:function(){return N},SERVER_PROPS_ID:function(){return ei},SERVER_REFERENCE_MANIFEST:function(){return H},STATIC_PROPS_ID:function(){return er},STATIC_STATUS_PAGES:function(){return eu},STRING_LITERAL_DROP_BUNDLE:function(){return k},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return S},SYSTEM_ENTRYPOINTS:function(){return eh},TRACE_OUTPUT_VERSION:function(){return ec},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ep},UNDERSCORE_NOT_FOUND_ROUTE:function(){return s},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return a}});let r=n(167)._(n(979)),i={client:"client",server:"server",edgeServer:"edge-server"},o={[i.client]:0,[i.server]:1,[i.edgeServer]:2},s="/_not-found",a=""+s+"/page",l="phase-export",u="phase-production-build",c="phase-production-server",p="phase-development-server",f="phase-test",d="phase-info",h="pages-manifest.json",m="app-paths-manifest.json",_="app-path-routes-manifest.json",g="build-manifest.json",E="app-build-manifest.json",y="functions-config-manifest.json",S="subresource-integrity-manifest",I="next-font-manifest",T="export-marker.json",P="export-detail.json",O="prerender-manifest.json",x="routes-manifest.json",b="images-manifest.json",N="required-server-files.json",j="_devPagesManifest.json",v="middleware-manifest.json",R="_devMiddlewareManifest.json",A="react-loadable-manifest.json",M="font-manifest.json",L="server",C=["next.config.js","next.config.mjs"],w="BUILD_ID",F=["/_document","/_app","/_error"],D="public",U="static",k="__NEXT_DROP_CLIENT_FILE__",$="__NEXT_BUILTIN_DOCUMENT__",B="__barrel_optimize__",W="client-reference-manifest",H="server-reference-manifest",G="middleware-build-manifest",z="middleware-react-loadable-manifest",Y="interception-route-rewrite-manifest",V="main",X=""+V+"-app",K="app-pages-internals",Z="react-refresh",q="amp",J="webpack",Q="polyfills",ee=Symbol(Q),et="webpack-runtime",en="edge-runtime-webpack",er="__N_SSG",ei="__N_SSP",eo="https://fonts.googleapis.com/",es=[{url:eo,preconnect:"https://fonts.gstatic.com"},{url:"https://use.typekit.net",preconnect:"https://use.typekit.net"}],ea={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},el={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},eu=["/500"],ec=1,ep=6e3,ef={client:"client",server:"server"},ed=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eh=new Set([V,Z,q,X]);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8584:(e,t)=>{function n(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return n}})},8299:(e,t)=>{function n(e){return Object.prototype.toString.call(e)}function r(e){if("[object Object]"!==n(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t.hasOwnProperty("isPrototypeOf")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getObjectClassLabel:function(){return n},isPlainObject:function(){return r}})},979:e=>{e.exports=["chrome 64","edge 79","firefox 67","opera 51","safari 12"]},5876:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"denormalizePagePath",{enumerable:!0,get:function(){return o}});let r=n(2189),i=n(4212);function o(e){let t=(0,i.normalizePathSep)(e);return t.startsWith("/index/")&&!(0,r.isDynamicRoute)(t)?t.slice(6):"/index"!==t?t:"/"}},5078:(e,t)=>{function n(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return n}})},9431:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePagePath",{enumerable:!0,get:function(){return s}});let r=n(5078),i=n(2189),o=n(5782);function s(e){let t=/^\/index(\/|$)/.test(e)&&!(0,i.isDynamicRoute)(e)?"/index"+e:"/"===e?"/index":(0,r.ensureLeadingSlash)(e);{let{posix:e}=n(5315),r=e.normalize(t);if(r!==t)throw new o.NormalizeError("Requested and resolved page mismatch: "+t+" "+r)}return t}},4212:(e,t)=>{function n(e){return e.replace(/\\/g,"/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathSep",{enumerable:!0,get:function(){return n}})},2340:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{normalizeAppPath:function(){return o},normalizeRscURL:function(){return s}});let r=n(5078),i=n(3737);function o(e){return(0,r.ensureLeadingSlash)(e.split("/").reduce((e,t,n,r)=>!t||(0,i.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&n===r.length-1?e:e+"/"+t,""))}function s(e){return e.replace(/\.rsc($|\?)/,"$1")}},2189:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getSortedRoutes:function(){return r.getSortedRoutes},isDynamicRoute:function(){return i.isDynamicRoute}});let r=n(317),i=n(1735)},1735:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicRoute",{enumerable:!0,get:function(){return o}});let r=n(2407),i=/\/\[[^/]+?\](?=\/|$)/;function o(e){return(0,r.isInterceptionRouteAppPath)(e)&&(e=(0,r.extractInterceptionRouteInformation)(e).interceptedRoute),i.test(e)}},317:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSortedRoutes",{enumerable:!0,get:function(){return r}});class n{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e){void 0===e&&(e="/");let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let n=t.map(t=>this.children.get(t)._smoosh(""+e+t+"/")).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&n.push(...this.children.get("[]")._smoosh(e+"["+this.slugName+"]/")),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Error('You cannot define a route with the same specificity as a optional catch-all route ("'+t+'" and "'+t+"[[..."+this.optionalRestSlugName+']]").');n.unshift(t)}return null!==this.restSlugName&&n.push(...this.children.get("[...]")._smoosh(e+"[..."+this.restSlugName+"]/")),null!==this.optionalRestSlugName&&n.push(...this.children.get("[[...]]")._smoosh(e+"[[..."+this.optionalRestSlugName+"]]/")),n}_insert(e,t,r){if(0===e.length){this.placeholder=!1;return}if(r)throw Error("Catch-all must be the last part of the URL.");let i=e[0];if(i.startsWith("[")&&i.endsWith("]")){let n=i.slice(1,-1),s=!1;if(n.startsWith("[")&&n.endsWith("]")&&(n=n.slice(1,-1),s=!0),n.startsWith("...")&&(n=n.substring(3),r=!0),n.startsWith("[")||n.endsWith("]"))throw Error("Segment names may not start or end with extra brackets ('"+n+"').");if(n.startsWith("."))throw Error("Segment names may not start with erroneous periods ('"+n+"').");function o(e,n){if(null!==e&&e!==n)throw Error("You cannot use different slug names for the same dynamic path ('"+e+"' !== '"+n+"').");t.forEach(e=>{if(e===n)throw Error('You cannot have the same slug name "'+n+'" repeat within a single dynamic path');if(e.replace(/\W/g,"")===i.replace(/\W/g,""))throw Error('You cannot have the slug names "'+e+'" and "'+n+'" differ only by non-word symbols within a single dynamic path')}),t.push(n)}if(r){if(s){if(null!=this.restSlugName)throw Error('You cannot use both an required and optional catch-all route at the same level ("[...'+this.restSlugName+']" and "'+e[0]+'" ).');o(this.optionalRestSlugName,n),this.optionalRestSlugName=n,i="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Error('You cannot use both an optional and required catch-all route at the same level ("[[...'+this.optionalRestSlugName+']]" and "'+e[0]+'").');o(this.restSlugName,n),this.restSlugName=n,i="[...]"}}else{if(s)throw Error('Optional route parameters are not yet supported ("'+e[0]+'").');o(this.slugName,n),this.slugName=n,i="[]"}}this.children.has(i)||this.children.set(i,new n),this.children.get(i)._insert(e.slice(1),t,r)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function r(e){let t=new n;return e.forEach(e=>t.insert(e)),t.smoosh()}},3737:(e,t)=>{function n(e){return"("===e[0]&&e.endsWith(")")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DEFAULT_SEGMENT_KEY:function(){return i},PAGE_SEGMENT_KEY:function(){return r},isGroupSegment:function(){return n}});let r="__PAGE__",i="__DEFAULT__"},5782:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return E},MissingStaticPage:function(){return g},NormalizeError:function(){return m},PageNotFoundError:function(){return _},SP:function(){return f},ST:function(){return d},WEB_VITALS:function(){return n},execOnce:function(){return r},getDisplayName:function(){return l},getLocationOrigin:function(){return s},getURL:function(){return a},isAbsoluteUrl:function(){return o},isResSent:function(){return u},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return y}});let n=["CLS","FCP","FID","INP","LCP","TTFB"];function r(e){let t,n=!1;return function(){for(var r=arguments.length,i=Array(r),o=0;oi.test(e);function s(){let{protocol:e,hostname:t,port:n}=window.location;return e+"//"+t+(n?":"+n:"")}function a(){let{href:e}=window.location,t=s();return e.substring(t.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function u(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function p(e,t){let n=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let r=await e.getInitialProps(t);if(n&&u(n))return r;if(!r)throw Error('"'+l(e)+'.getInitialProps()" should resolve to an object. But found "'+r+'" instead.');return r}let f="undefined"!=typeof performance,d=f&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class m extends Error{}class _ extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class g extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class E extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function y(e){return JSON.stringify({message:e.message,stack:e.stack})}},676:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{default:function(){return i},getProperError:function(){return o}});let r=n(8299);function i(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}function o(e){return i(e)?e:Error((0,r.isPlainObject)(e)?JSON.stringify(e):e+"")}},5955:(e,t)=>{Object.defineProperty(t,"Z",{enumerable:!0,get:function(){return i}});let n=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],r=(e,t)=>{let n=e;return"string"==typeof t?n=e.toLocaleString(t):!0===t&&(n=e.toLocaleString()),n};function i(e,t){if(!Number.isFinite(e))throw TypeError(`Expected a finite number, got ${typeof e}: ${e}`);if((t=Object.assign({},t)).signed&&0===e)return" 0 B";let i=e<0,o=i?"-":t.signed?"+":"";if(i&&(e=-e),e<1)return o+r(e,t.locale)+" B";let s=Math.min(Math.floor(Math.log10(e)/3),n.length-1);return o+r(e=Number((e/Math.pow(1e3,s)).toPrecision(3)),t.locale)+" "+n[s]}},2407:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return i},extractInterceptionRouteInformation:function(){return s},isInterceptionRouteAppPath:function(){return o}});let r=n(2340),i=["(..)(..)","(.)","(..)","(...)"];function o(e){return void 0!==e.split("/").find(e=>i.find(t=>e.startsWith(t)))}function s(e){let t,n,o;for(let r of e.split("/"))if(n=i.find(e=>r.startsWith(e))){[t,o]=e.split(n,2);break}if(!t||!n||!o)throw Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`);switch(t=(0,r.normalizeAppPath)(t),n){case"(.)":o="/"===t?`/${o}`:t+"/"+o;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);o=t.split("/").slice(0,-1).concat(o).join("/");break;case"(...)":o="/"+o;break;case"(..)(..)":let s=t.split("/");if(s.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);o=s.slice(0,-2).concat(o).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:o}}},7093:(e,t,n)=>{e.exports=n(2785)},3112:(e,t,n)=>{e.exports=n(7093).vendored.contexts.HtmlContext},5778:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getPageFiles",{enumerable:!0,get:function(){return o}});let r=n(5876),i=n(9431);function o(e,t){let n=(0,r.denormalizePagePath)((0,i.normalizePagePath)(t));return e.pages[n]||(console.warn(`Could not find files for ${n} in .next/build-manifest.json`),[])}},9630:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ESCAPE_REGEX:function(){return r},htmlEscapeJsonString:function(){return i}});let n={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},r=/[&><\u2028\u2029]/g;function i(e){return e.replace(r,e=>n[e])}},733:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{cleanAmpPath:function(){return o},debounce:function(){return s},isBlockedPage:function(){return i}});let r=n(5104);function i(e){return r.BLOCKED_PAGES.includes(e)}function o(e){return e.match(/\?amp=(y|yes|true|1)/)&&(e=e.replace(/\?amp=(y|yes|true|1)&?/,"?")),e.match(/&=(y|yes|true|1)/)&&(e=e.replace(/&=(y|yes|true|1)/,"")),e=e.replace(/\?$/,"")}function s(e,t,n=1/0){let r,i,o;let s=0,a=0;function l(){let u=Date.now(),c=a+t-u;c<=0||s+n>=u?(r=void 0,e.apply(o,i)):r=setTimeout(l,c)}return function(...e){i=e,o=this,a=Date.now(),void 0===r&&(s=a,r=setTimeout(l,t))}}},167:(e,t)=>{t._=t._interop_require_default=function(e){return e&&e.__esModule?e:{default:e}}}}; \ No newline at end of file diff --git a/site/.next/server/chunks/819.js b/site/.next/server/chunks/819.js new file mode 100644 index 0000000..92443b9 --- /dev/null +++ b/site/.next/server/chunks/819.js @@ -0,0 +1,3 @@ +exports.id=819,exports.ids=[819],exports.modules={3486:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return a}});let n=r(8974),o=r(3658);function a(e,t){return(0,o.normalizePathTrailingSlash)((0,n.addPathPrefix)(e,""))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5424:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"callServer",{enumerable:!0,get:function(){return o}});let n=r(2994);async function o(e,t){let r=(0,n.getServerActionDispatcher)();if(!r)throw Error("Invariant: missing action dispatcher.");return new Promise((n,o)=>{r({actionId:e,actionArgs:t,resolve:n,reject:o})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8038:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AppRouterAnnouncer",{enumerable:!0,get:function(){return l}});let n=r(7577),o=r(962),a="next-route-announcer";function l(e){let{tree:t}=e,[r,l]=(0,n.useState)(null);(0,n.useEffect)(()=>(l(function(){var e;let t=document.getElementsByName(a)[0];if(null==t?void 0:null==(e=t.shadowRoot)?void 0:e.childNodes[0])return t.shadowRoot.childNodes[0];{let e=document.createElement(a);e.style.cssText="position:absolute";let t=document.createElement("div");return t.ariaLive="assertive",t.id="__next-route-announcer__",t.role="alert",t.style.cssText="position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal",e.attachShadow({mode:"open"}).appendChild(t),document.body.appendChild(e),t}}()),()=>{let e=document.getElementsByTagName(a)[0];(null==e?void 0:e.isConnected)&&document.body.removeChild(e)}),[]);let[i,u]=(0,n.useState)(""),s=(0,n.useRef)();return(0,n.useEffect)(()=>{let e="";if(document.title)e=document.title;else{let t=document.querySelector("h1");t&&(e=t.innerText||t.textContent||"")}void 0!==s.current&&s.current!==e&&u(e),s.current=e},[t]),r?(0,o.createPortal)(i,r):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5138:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION:function(){return n},FLIGHT_PARAMETERS:function(){return u},NEXT_DID_POSTPONE_HEADER:function(){return c},NEXT_ROUTER_PREFETCH_HEADER:function(){return a},NEXT_ROUTER_STATE_TREE:function(){return o},NEXT_RSC_UNION_QUERY:function(){return s},NEXT_URL:function(){return l},RSC_CONTENT_TYPE_HEADER:function(){return i},RSC_HEADER:function(){return r}});let r="RSC",n="Next-Action",o="Next-Router-State-Tree",a="Next-Router-Prefetch",l="Next-Url",i="text/x-component",u=[[r],[o],[a]],s="_rsc",c="x-nextjs-postponed";("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2994:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createEmptyCacheNode:function(){return N},default:function(){return I},getServerActionDispatcher:function(){return E},urlToUrlWithoutFlightMarker:function(){return j}});let n=r(8374),o=r(326),a=n._(r(7577)),l=r(2413),i=r(7767),u=r(7584),s=r(7008),c=r(7326),d=r(9727),f=r(6199),p=r(2148),g=r(3486),h=r(8038),_=r(6265),y=r(2492),v=r(9519),b=r(5138),m=r(4237),P=r(7929),R=r(8071),S=null,O=null;function E(){return O}let T={};function j(e){let t=new URL(e,location.origin);return t.searchParams.delete(b.NEXT_RSC_UNION_QUERY),t}function x(e){return e.origin!==window.location.origin}function M(e){let{appRouterState:t,sync:r}=e;return(0,a.useInsertionEffect)(()=>{let{tree:e,pushRef:n,canonicalUrl:o}=t,a={...n.preserveCustomHistoryState?window.history.state:{},__NA:!0,__PRIVATE_NEXTJS_INTERNALS_TREE:e};n.pendingPush&&(0,u.createHrefFromUrl)(new URL(window.location.href))!==o?(n.pendingPush=!1,window.history.pushState(a,"",o)):window.history.replaceState(a,"",o),r(t)},[t,r]),null}function N(){return{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null}}function C(e){null==e&&(e={});let t=window.history.state,r=null==t?void 0:t.__NA;r&&(e.__NA=r);let n=null==t?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;return n&&(e.__PRIVATE_NEXTJS_INTERNALS_TREE=n),e}function A(e){let{headCacheNode:t}=e,r=null!==t?t.head:null,n=null!==t?t.prefetchHead:null,o=null!==n?n:r;return(0,a.useDeferredValue)(r,o)}function w(e){let t,{buildId:r,initialHead:n,initialTree:u,urlParts:d,initialSeedData:b,couldBeIntercepted:E,assetPrefix:j,missingSlots:N}=e,w=(0,a.useMemo)(()=>(0,f.createInitialRouterState)({buildId:r,initialSeedData:b,urlParts:d,initialTree:u,initialParallelRoutes:S,location:null,initialHead:n,couldBeIntercepted:E}),[r,b,d,u,n,E]),[I,D,L]=(0,c.useReducerWithReduxDevtools)(w);(0,a.useEffect)(()=>{S=null},[]);let{canonicalUrl:U}=(0,c.useUnwrapState)(I),{searchParams:F,pathname:H}=(0,a.useMemo)(()=>{let e=new URL(U,"http://n");return{searchParams:e.searchParams,pathname:(0,P.hasBasePath)(e.pathname)?(0,m.removeBasePath)(e.pathname):e.pathname}},[U]),G=(0,a.useCallback)(e=>{let{previousTree:t,serverResponse:r}=e;(0,a.startTransition)(()=>{D({type:i.ACTION_SERVER_PATCH,previousTree:t,serverResponse:r})})},[D]),k=(0,a.useCallback)((e,t,r)=>{let n=new URL((0,g.addBasePath)(e),location.href);return D({type:i.ACTION_NAVIGATE,url:n,isExternalUrl:x(n),locationSearch:location.search,shouldScroll:null==r||r,navigateType:t})},[D]);O=(0,a.useCallback)(e=>{(0,a.startTransition)(()=>{D({...e,type:i.ACTION_SERVER_ACTION})})},[D]);let B=(0,a.useMemo)(()=>({back:()=>window.history.back(),forward:()=>window.history.forward(),prefetch:(e,t)=>{let r;if(!(0,p.isBot)(window.navigator.userAgent)){try{r=new URL((0,g.addBasePath)(e),window.location.href)}catch(t){throw Error("Cannot prefetch '"+e+"' because it cannot be converted to a URL.")}x(r)||(0,a.startTransition)(()=>{var e;D({type:i.ACTION_PREFETCH,url:r,kind:null!=(e=null==t?void 0:t.kind)?e:i.PrefetchKind.FULL})})}},replace:(e,t)=>{void 0===t&&(t={}),(0,a.startTransition)(()=>{var r;k(e,"replace",null==(r=t.scroll)||r)})},push:(e,t)=>{void 0===t&&(t={}),(0,a.startTransition)(()=>{var r;k(e,"push",null==(r=t.scroll)||r)})},refresh:()=>{(0,a.startTransition)(()=>{D({type:i.ACTION_REFRESH,origin:window.location.origin})})},fastRefresh:()=>{throw Error("fastRefresh can only be used in development mode. Please use refresh instead.")}}),[D,k]);(0,a.useEffect)(()=>{window.next&&(window.next.router=B)},[B]),(0,a.useEffect)(()=>{function e(e){var t;e.persisted&&(null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE)&&(T.pendingMpaPath=void 0,D({type:i.ACTION_RESTORE,url:new URL(window.location.href),tree:window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE}))}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}},[D]);let{pushRef:V}=(0,c.useUnwrapState)(I);if(V.mpaNavigation){if(T.pendingMpaPath!==U){let e=window.location;V.pendingPush?e.assign(U):e.replace(U),T.pendingMpaPath=U}(0,a.use)(v.unresolvedThenable)}(0,a.useEffect)(()=>{let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history),r=e=>{var t;let r=window.location.href,n=null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;(0,a.startTransition)(()=>{D({type:i.ACTION_RESTORE,url:new URL(null!=e?e:r,r),tree:n})})};window.history.pushState=function(t,n,o){return(null==t?void 0:t.__NA)||(null==t?void 0:t._N)||(t=C(t),o&&r(o)),e(t,n,o)},window.history.replaceState=function(e,n,o){return(null==e?void 0:e.__NA)||(null==e?void 0:e._N)||(e=C(e),o&&r(o)),t(e,n,o)};let n=e=>{let{state:t}=e;if(t){if(!t.__NA){window.location.reload();return}(0,a.startTransition)(()=>{D({type:i.ACTION_RESTORE,url:new URL(window.location.href),tree:t.__PRIVATE_NEXTJS_INTERNALS_TREE})})}};return window.addEventListener("popstate",n),()=>{window.history.pushState=e,window.history.replaceState=t,window.removeEventListener("popstate",n)}},[D]);let{cache:$,tree:X,nextUrl:K,focusAndScrollRef:z}=(0,c.useUnwrapState)(I),W=(0,a.useMemo)(()=>(0,y.findHeadInCache)($,X[1]),[$,X]),Y=(0,a.useMemo)(()=>(function e(t,r){for(let n of(void 0===r&&(r={}),Object.values(t[1]))){let t=n[0],o=Array.isArray(t),a=o?t[1]:t;!a||a.startsWith(R.PAGE_SEGMENT_KEY)||(o&&("c"===t[2]||"oc"===t[2])?r[t[0]]=t[1].split("/"):o&&(r[t[0]]=t[1]),r=e(n,r))}return r})(X),[X]);if(null!==W){let[e,r]=W;t=(0,o.jsx)(A,{headCacheNode:e},r)}else t=null;let q=(0,o.jsxs)(_.RedirectBoundary,{children:[t,$.rsc,(0,o.jsx)(h.AppRouterAnnouncer,{tree:X})]});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(M,{appRouterState:(0,c.useUnwrapState)(I),sync:L}),(0,o.jsx)(s.PathParamsContext.Provider,{value:Y,children:(0,o.jsx)(s.PathnameContext.Provider,{value:H,children:(0,o.jsx)(s.SearchParamsContext.Provider,{value:F,children:(0,o.jsx)(l.GlobalLayoutRouterContext.Provider,{value:{buildId:r,changeByServerResponse:G,tree:X,focusAndScrollRef:z,nextUrl:K},children:(0,o.jsx)(l.AppRouterContext.Provider,{value:B,children:(0,o.jsx)(l.LayoutRouterContext.Provider,{value:{childNodes:$.parallelRoutes,tree:X,url:U,loading:$.loading},children:q})})})})})})]})}function I(e){let{globalErrorComponent:t,...r}=e;return(0,o.jsx)(d.ErrorBoundary,{errorComponent:t,children:(0,o.jsx)(w,{...r})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6136:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"bailoutToClientRendering",{enumerable:!0,get:function(){return a}});let n=r(4129),o=r(5869);function a(e){let t=o.staticGenerationAsyncStorage.getStore();if((null==t||!t.forceStatic)&&(null==t?void 0:t.isStaticGeneration))throw new n.BailoutToCSRError(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6114:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientPageRoot",{enumerable:!0,get:function(){return a}});let n=r(326),o=r(3325);function a(e){let{Component:t,props:r}=e;return r.searchParams=(0,o.createDynamicallyTrackedSearchParams)(r.searchParams||{}),(0,n.jsx)(t,{...r})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9727:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ErrorBoundary:function(){return g},ErrorBoundaryHandler:function(){return d},GlobalError:function(){return f},default:function(){return p}});let n=r(1174),o=r(326),a=n._(r(7577)),l=r(7389),i=r(7313),u=r(5869),s={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},text:{fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"}};function c(e){let{error:t}=e,r=u.staticGenerationAsyncStorage.getStore();if((null==r?void 0:r.isRevalidate)||(null==r?void 0:r.isStaticGeneration))throw console.error(t),t;return null}class d extends a.default.Component{static getDerivedStateFromError(e){if((0,i.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(c,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,o.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}}function f(e){let{error:t}=e,r=null==t?void 0:t.digest;return(0,o.jsxs)("html",{id:"__next_error__",children:[(0,o.jsx)("head",{}),(0,o.jsxs)("body",{children:[(0,o.jsx)(c,{error:t}),(0,o.jsx)("div",{style:s.error,children:(0,o.jsxs)("div",{children:[(0,o.jsx)("h2",{style:s.text,children:"Application error: a "+(r?"server":"client")+"-side exception has occurred (see the "+(r?"server logs":"browser console")+" for more information)."}),r?(0,o.jsx)("p",{style:s.text,children:"Digest: "+r}):null]})})]})]})}let p=f;function g(e){let{errorComponent:t,errorStyles:r,errorScripts:n,children:a}=e,i=(0,l.usePathname)();return t?(0,o.jsx)(d,{pathname:i,errorComponent:t,errorStyles:r,errorScripts:n,children:a}):(0,o.jsx)(o.Fragment,{children:a})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},442:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DynamicServerError:function(){return n},isDynamicServerError:function(){return o}});let r="DYNAMIC_SERVER_USAGE";class n extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7313:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return a}});let n=r(706),o=r(2747);function a(e){return e&&e.digest&&((0,o.isRedirectError)(e)||(0,n.isNotFoundError)(e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9671:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return S}}),r(1174);let n=r(8374),o=r(326),a=n._(r(7577));r(962);let l=r(2413),i=r(9009),u=r(9519),s=r(9727),c=r(455),d=r(9976),f=r(6265),p=r(1868),g=r(2162),h=r(9886),_=r(5262),y=["bottom","height","left","right","top","width","x","y"];function v(e,t){let r=e.getBoundingClientRect();return r.top>=0&&r.top<=t}class b extends a.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,r)=>(0,c.matchSegment)(t,e[r]))))return;let r=null,n=e.hashFragment;if(n&&(r=function(e){var t;return"top"===e?document.body:null!=(t=document.getElementById(e))?t:document.getElementsByName(e)[0]}(n)),!r&&(r=null),!(r instanceof Element))return;for(;!(r instanceof HTMLElement)||function(e){if(["sticky","fixed"].includes(getComputedStyle(e).position))return!0;let t=e.getBoundingClientRect();return y.every(e=>0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,d.handleSmoothScroll)(()=>{if(n){r.scrollIntoView();return}let e=document.documentElement,t=e.clientHeight;!v(r,t)&&(e.scrollTop=0,v(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function m(e){let{segmentPath:t,children:r}=e,n=(0,a.useContext)(l.GlobalLayoutRouterContext);if(!n)throw Error("invariant global layout router not mounted");return(0,o.jsx)(b,{segmentPath:t,focusAndScrollRef:n.focusAndScrollRef,children:r})}function P(e){let{parallelRouterKey:t,url:r,childNodes:n,segmentPath:s,tree:d,cacheKey:f}=e,p=(0,a.useContext)(l.GlobalLayoutRouterContext);if(!p)throw Error("invariant global layout router not mounted");let{buildId:g,changeByServerResponse:h,tree:y}=p,v=n.get(f);if(void 0===v){let e={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};v=e,n.set(f,e)}let b=null!==v.prefetchRsc?v.prefetchRsc:v.rsc,m=(0,a.useDeferredValue)(v.rsc,b),P="object"==typeof m&&null!==m&&"function"==typeof m.then?(0,a.use)(m):m;if(!P){let e=v.lazyData;if(null===e){let t=function e(t,r){if(t){let[n,o]=t,a=2===t.length;if((0,c.matchSegment)(r[0],n)&&r[1].hasOwnProperty(o)){if(a){let t=e(void 0,r[1][o]);return[r[0],{...r[1],[o]:[t[0],t[1],t[2],"refetch"]}]}return[r[0],{...r[1],[o]:e(t.slice(2),r[1][o])}]}}return r}(["",...s],y),n=(0,_.hasInterceptionRouteInCurrentTree)(y);v.lazyData=e=(0,i.fetchServerResponse)(new URL(r,location.origin),t,n?p.nextUrl:null,g),v.lazyDataResolved=!1}let t=(0,a.use)(e);v.lazyDataResolved||(setTimeout(()=>{(0,a.startTransition)(()=>{h({previousTree:y,serverResponse:t})})}),v.lazyDataResolved=!0),(0,a.use)(u.unresolvedThenable)}return(0,o.jsx)(l.LayoutRouterContext.Provider,{value:{tree:d[1][t],childNodes:v.parallelRoutes,url:r,loading:v.loading},children:P})}function R(e){let{children:t,hasLoading:r,loading:n,loadingStyles:l,loadingScripts:i}=e;return r?(0,o.jsx)(a.Suspense,{fallback:(0,o.jsxs)(o.Fragment,{children:[l,i,n]}),children:t}):(0,o.jsx)(o.Fragment,{children:t})}function S(e){let{parallelRouterKey:t,segmentPath:r,error:n,errorStyles:i,errorScripts:u,templateStyles:c,templateScripts:d,template:_,notFound:y,notFoundStyles:v}=e,b=(0,a.useContext)(l.LayoutRouterContext);if(!b)throw Error("invariant expected layout router to be mounted");let{childNodes:S,tree:O,url:E,loading:T}=b,j=S.get(t);j||(j=new Map,S.set(t,j));let x=O[1][t][0],M=(0,g.getSegmentValue)(x),N=[x];return(0,o.jsx)(o.Fragment,{children:N.map(e=>{let a=(0,g.getSegmentValue)(e),b=(0,h.createRouterCacheKey)(e);return(0,o.jsxs)(l.TemplateContext.Provider,{value:(0,o.jsx)(m,{segmentPath:r,children:(0,o.jsx)(s.ErrorBoundary,{errorComponent:n,errorStyles:i,errorScripts:u,children:(0,o.jsx)(R,{hasLoading:!!T,loading:null==T?void 0:T[0],loadingStyles:null==T?void 0:T[1],loadingScripts:null==T?void 0:T[2],children:(0,o.jsx)(p.NotFoundBoundary,{notFound:y,notFoundStyles:v,children:(0,o.jsx)(f.RedirectBoundary,{children:(0,o.jsx)(P,{parallelRouterKey:t,url:E,tree:O,childNodes:j,segmentPath:r,cacheKey:b,isActive:M===a})})})})})}),children:[c,d,_]},(0,h.createRouterCacheKey)(e,!0))})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},455:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{canSegmentBeOverridden:function(){return a},matchSegment:function(){return o}});let n=r(2357),o=(e,t)=>"string"==typeof e?"string"==typeof t&&e===t:"string"!=typeof t&&e[0]===t[0]&&e[1]===t[1],a=(e,t)=>{var r;return!Array.isArray(e)&&!!Array.isArray(t)&&(null==(r=(0,n.getSegmentParam)(e))?void 0:r.param)===t[0]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7389:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return u.ReadonlyURLSearchParams},RedirectType:function(){return u.RedirectType},ServerInsertedHTMLContext:function(){return s.ServerInsertedHTMLContext},notFound:function(){return u.notFound},permanentRedirect:function(){return u.permanentRedirect},redirect:function(){return u.redirect},useParams:function(){return p},usePathname:function(){return d},useRouter:function(){return f},useSearchParams:function(){return c},useSelectedLayoutSegment:function(){return h},useSelectedLayoutSegments:function(){return g},useServerInsertedHTML:function(){return s.useServerInsertedHTML}});let n=r(7577),o=r(2413),a=r(7008),l=r(2162),i=r(8071),u=r(7375),s=r(3347);function c(){let e=(0,n.useContext)(a.SearchParamsContext),t=(0,n.useMemo)(()=>e?new u.ReadonlyURLSearchParams(e):null,[e]);{let{bailoutToClientRendering:e}=r(6136);e("useSearchParams()")}return t}function d(){return(0,n.useContext)(a.PathnameContext)}function f(){let e=(0,n.useContext)(o.AppRouterContext);if(null===e)throw Error("invariant expected app router to be mounted");return e}function p(){return(0,n.useContext)(a.PathParamsContext)}function g(e){void 0===e&&(e="children");let t=(0,n.useContext)(o.LayoutRouterContext);return t?function e(t,r,n,o){let a;if(void 0===n&&(n=!0),void 0===o&&(o=[]),n)a=t[1][r];else{var u;let e=t[1];a=null!=(u=e.children)?u:Object.values(e)[0]}if(!a)return o;let s=a[0],c=(0,l.getSegmentValue)(s);return!c||c.startsWith(i.PAGE_SEGMENT_KEY)?o:(o.push(c),e(a,r,!1,o))}(t.tree,e):null}function h(e){void 0===e&&(e="children");let t=g(e);if(!t||0===t.length)return null;let r="children"===e?t[0]:t[t.length-1];return r===i.DEFAULT_SEGMENT_KEY?null:r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7375:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return l},RedirectType:function(){return n.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect}});let n=r(2747),o=r(706);class a extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class l extends URLSearchParams{append(){throw new a}delete(){throw new a}set(){throw new a}sort(){throw new a}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1868:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NotFoundBoundary",{enumerable:!0,get:function(){return c}});let n=r(8374),o=r(326),a=n._(r(7577)),l=r(7389),i=r(706);r(576);let u=r(2413);class s extends a.default.Component{componentDidCatch(){}static getDerivedStateFromError(e){if((0,i.isNotFoundError)(e))return{notFoundTriggered:!0};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.notFoundTriggered?{notFoundTriggered:!1,previousPathname:e.pathname}:{notFoundTriggered:t.notFoundTriggered,previousPathname:e.pathname}}render(){return this.state.notFoundTriggered?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("meta",{name:"robots",content:"noindex"}),!1,this.props.notFoundStyles,this.props.notFound]}):this.props.children}constructor(e){super(e),this.state={notFoundTriggered:!!e.asNotFound,previousPathname:e.pathname}}}function c(e){let{notFound:t,notFoundStyles:r,asNotFound:n,children:i}=e,c=(0,l.usePathname)(),d=(0,a.useContext)(u.MissingSlotContext);return t?(0,o.jsx)(s,{pathname:c,notFound:t,notFoundStyles:r,asNotFound:n,missingSlots:d,children:i}):(0,o.jsx)(o.Fragment,{children:i})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},706:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return o},notFound:function(){return n}});let r="NEXT_NOT_FOUND";function n(){let e=Error(r);throw e.digest=r,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7815:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PromiseQueue",{enumerable:!0,get:function(){return s}});let n=r(8285),o=r(8817);var a=o._("_maxConcurrency"),l=o._("_runningCount"),i=o._("_queue"),u=o._("_processNext");class s{enqueue(e){let t,r;let o=new Promise((e,n)=>{t=e,r=n}),a=async()=>{try{n._(this,l)[l]++;let r=await e();t(r)}catch(e){r(e)}finally{n._(this,l)[l]--,n._(this,u)[u]()}};return n._(this,i)[i].push({promiseFn:o,task:a}),n._(this,u)[u](),o}bump(e){let t=n._(this,i)[i].findIndex(t=>t.promiseFn===e);if(t>-1){let e=n._(this,i)[i].splice(t,1)[0];n._(this,i)[i].unshift(e),n._(this,u)[u](!0)}}constructor(e=5){Object.defineProperty(this,u,{value:c}),Object.defineProperty(this,a,{writable:!0,value:void 0}),Object.defineProperty(this,l,{writable:!0,value:void 0}),Object.defineProperty(this,i,{writable:!0,value:void 0}),n._(this,a)[a]=e,n._(this,l)[l]=0,n._(this,i)[i]=[]}}function c(e){if(void 0===e&&(e=!1),(n._(this,l)[l]0){var t;null==(t=n._(this,i)[i].shift())||t.task()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6265:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectBoundary:function(){return c},RedirectErrorBoundary:function(){return s}});let n=r(8374),o=r(326),a=n._(r(7577)),l=r(7389),i=r(2747);function u(e){let{redirect:t,reset:r,redirectType:n}=e,o=(0,l.useRouter)();return(0,a.useEffect)(()=>{a.default.startTransition(()=>{n===i.RedirectType.push?o.push(t,{}):o.replace(t,{}),r()})},[t,n,r,o]),null}class s extends a.default.Component{static getDerivedStateFromError(e){if((0,i.isRedirectError)(e))return{redirect:(0,i.getURLFromRedirectError)(e),redirectType:(0,i.getRedirectTypeFromError)(e)};throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,o.jsx)(u,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}constructor(e){super(e),this.state={redirect:null,redirectType:null}}}function c(e){let{children:t}=e,r=(0,l.useRouter)();return(0,o.jsx)(s,{router:r,children:t})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8778:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}}),function(e){e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect"}(r||(r={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2747:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectType:function(){return n},getRedirectError:function(){return u},getRedirectStatusCodeFromError:function(){return g},getRedirectTypeFromError:function(){return p},getURLFromRedirectError:function(){return f},isRedirectError:function(){return d},permanentRedirect:function(){return c},redirect:function(){return s}});let o=r(4580),a=r(2934),l=r(8778),i="NEXT_REDIRECT";function u(e,t,r){void 0===r&&(r=l.RedirectStatusCode.TemporaryRedirect);let n=Error(i);n.digest=i+";"+t+";"+e+";"+r+";";let a=o.requestAsyncStorage.getStore();return a&&(n.mutableCookies=a.mutableCookies),n}function s(e,t){void 0===t&&(t="replace");let r=a.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?l.RedirectStatusCode.SeeOther:l.RedirectStatusCode.TemporaryRedirect)}function c(e,t){void 0===t&&(t="replace");let r=a.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?l.RedirectStatusCode.SeeOther:l.RedirectStatusCode.PermanentRedirect)}function d(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r,n,o]=e.digest.split(";",4),a=Number(o);return t===i&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(a)&&a in l.RedirectStatusCode}function f(e){return d(e)?e.digest.split(";",3)[2]:null}function p(e){if(!d(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function g(e){if(!d(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(function(e){e.push="push",e.replace="replace"})(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4759:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=r(8374),o=r(326),a=n._(r(7577)),l=r(2413);function i(){let e=(0,a.useContext)(l.TemplateContext);return(0,o.jsx)(o.Fragment,{children:e})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9894:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyFlightData",{enumerable:!0,get:function(){return a}});let n=r(114),o=r(9056);function a(e,t,r,a){let[l,i,u]=r.slice(-3);if(null===i)return!1;if(3===r.length){let r=i[2],o=i[3];t.loading=o,t.rsc=r,t.prefetchRsc=null,(0,n.fillLazyItemsTillLeafWithHead)(t,e,l,i,u,a)}else t.rsc=e.rsc,t.prefetchRsc=e.prefetchRsc,t.parallelRoutes=new Map(e.parallelRoutes),t.loading=e.loading,(0,o.fillCacheWithNewSubTreeData)(t,e,r,a);return!0}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5166:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyRouterStatePatchToTree",{enumerable:!0,get:function(){return function e(t,r,n,i){let u;let[s,c,d,f,p]=r;if(1===t.length){let e=l(r,n,t);return(0,a.addRefreshMarkerToActiveParallelSegments)(e,i),e}let[g,h]=t;if(!(0,o.matchSegment)(g,s))return null;if(2===t.length)u=l(c[h],n,t);else if(null===(u=e(t.slice(2),c[h],n,i)))return null;let _=[t[0],{...c,[h]:u},d,f];return p&&(_[4]=!0),(0,a.addRefreshMarkerToActiveParallelSegments)(_,i),_}}});let n=r(8071),o=r(455),a=r(4158);function l(e,t,r){let[a,i]=e,[u,s]=t;if(u===n.DEFAULT_SEGMENT_KEY&&a!==n.DEFAULT_SEGMENT_KEY)return e;if((0,o.matchSegment)(a,u)){let t={};for(let e in i)void 0!==s[e]?t[e]=l(i[e],s[e],r):t[e]=i[e];for(let e in s)t[e]||(t[e]=s[e]);let n=[a,t];return e[2]&&(n[2]=e[2]),e[3]&&(n[3]=e[3]),e[4]&&(n[4]=e[4]),n}return t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2895:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"clearCacheNodeDataForSegmentPath",{enumerable:!0,get:function(){return function e(t,r,o){let a=o.length<=2,[l,i]=o,u=(0,n.createRouterCacheKey)(i),s=r.parallelRoutes.get(l),c=t.parallelRoutes.get(l);c&&c!==s||(c=new Map(s),t.parallelRoutes.set(l,c));let d=null==s?void 0:s.get(u),f=c.get(u);if(a){f&&f.lazyData&&f!==d||c.set(u,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}if(!f||!d){f||c.set(u,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}return f===d&&(f={lazyData:f.lazyData,rsc:f.rsc,prefetchRsc:f.prefetchRsc,head:f.head,prefetchHead:f.prefetchHead,parallelRoutes:new Map(f.parallelRoutes),lazyDataResolved:f.lazyDataResolved,loading:f.loading},c.set(u,f)),e(f,d,o.slice(2))}}});let n=r(9886);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3648:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{computeChangedPath:function(){return c},extractPathFromFlightRouterState:function(){return s}});let n=r(7356),o=r(8071),a=r(455),l=e=>"/"===e[0]?e.slice(1):e,i=e=>"string"==typeof e?"children"===e?"":e:e[1];function u(e){return e.reduce((e,t)=>""===(t=l(t))||(0,o.isGroupSegment)(t)?e:e+"/"+t,"")||"/"}function s(e){var t;let r=Array.isArray(e[0])?e[0][1]:e[0];if(r===o.DEFAULT_SEGMENT_KEY||n.INTERCEPTION_ROUTE_MARKERS.some(e=>r.startsWith(e)))return;if(r.startsWith(o.PAGE_SEGMENT_KEY))return"";let a=[i(r)],l=null!=(t=e[1])?t:{},c=l.children?s(l.children):void 0;if(void 0!==c)a.push(c);else for(let[e,t]of Object.entries(l)){if("children"===e)continue;let r=s(t);void 0!==r&&a.push(r)}return u(a)}function c(e,t){let r=function e(t,r){let[o,l]=t,[u,c]=r,d=i(o),f=i(u);if(n.INTERCEPTION_ROUTE_MARKERS.some(e=>d.startsWith(e)||f.startsWith(e)))return"";if(!(0,a.matchSegment)(o,u)){var p;return null!=(p=s(r))?p:""}for(let t in l)if(c[t]){let r=e(l[t],c[t]);if(null!==r)return i(u)+"/"+r}return null}(e,t);return null==r||"/"===r?r:u(r.split("/"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7584:(e,t)=>{"use strict";function r(e,t){return void 0===t&&(t=!0),e.pathname+e.search+(t?e.hash:"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createHrefFromUrl",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6199:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createInitialRouterState",{enumerable:!0,get:function(){return s}});let n=r(7584),o=r(114),a=r(3648),l=r(9373),i=r(7767),u=r(4158);function s(e){var t;let{buildId:r,initialTree:s,initialSeedData:c,urlParts:d,initialParallelRoutes:f,location:p,initialHead:g,couldBeIntercepted:h}=e,_=d.join("/"),y=!p,v={lazyData:null,rsc:c[2],prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:y?new Map:f,lazyDataResolved:!1,loading:c[3]},b=p?(0,n.createHrefFromUrl)(p):_;(0,u.addRefreshMarkerToActiveParallelSegments)(s,b);let m=new Map;(null===f||0===f.size)&&(0,o.fillLazyItemsTillLeafWithHead)(v,void 0,s,c,g);let P={buildId:r,tree:s,cache:v,prefetchCache:m,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:{apply:!1,onlyHashChange:!1,hashFragment:null,segmentPaths:[]},canonicalUrl:b,nextUrl:null!=(t=(0,a.extractPathFromFlightRouterState)(s)||(null==p?void 0:p.pathname))?t:null};if(p){let e=new URL(""+p.pathname+p.search,p.origin),t=[["",s,null,null]];(0,l.createPrefetchCacheEntryForInitialLoad)({url:e,kind:i.PrefetchKind.AUTO,data:[t,void 0,!1,h],tree:P.tree,prefetchCache:P.prefetchCache,nextUrl:P.nextUrl})}return P}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9886:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=r(8071);function o(e,t){return(void 0===t&&(t=!1),Array.isArray(e))?e[0]+"|"+e[1]+"|"+e[2]:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9009:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fetchServerResponse",{enumerable:!0,get:function(){return d}});let n=r(5138),o=r(2994),a=r(5424),l=r(7767),i=r(2165),u=r(7542),{createFromFetch:s}=r(6493);function c(e){return[(0,o.urlToUrlWithoutFlightMarker)(e).toString(),void 0,!1,!1]}async function d(e,t,r,d,f){let p={[n.RSC_HEADER]:"1",[n.NEXT_ROUTER_STATE_TREE]:(0,u.prepareFlightRouterStateForRequest)(t)};f===l.PrefetchKind.AUTO&&(p[n.NEXT_ROUTER_PREFETCH_HEADER]="1"),r&&(p[n.NEXT_URL]=r);let g=(0,i.hexHash)([p[n.NEXT_ROUTER_PREFETCH_HEADER]||"0",p[n.NEXT_ROUTER_STATE_TREE],p[n.NEXT_URL]].join(","));try{var h;let t=new URL(e);t.searchParams.set(n.NEXT_RSC_UNION_QUERY,g);let r=await fetch(t,{credentials:"same-origin",headers:p}),l=(0,o.urlToUrlWithoutFlightMarker)(r.url),i=r.redirected?l:void 0,u=r.headers.get("content-type")||"",f=!!r.headers.get(n.NEXT_DID_POSTPONE_HEADER),_=!!(null==(h=r.headers.get("vary"))?void 0:h.includes(n.NEXT_URL));if(u!==n.RSC_CONTENT_TYPE_HEADER||!r.ok)return e.hash&&(l.hash=e.hash),c(l.toString());let[y,v]=await s(Promise.resolve(r),{callServer:a.callServer});if(d!==y)return c(r.url);return[v,i,f,_]}catch(t){return console.error("Failed to fetch RSC payload for "+e+". Falling back to browser navigation.",t),[e.toString(),void 0,!1,!1]}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9056:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillCacheWithNewSubTreeData",{enumerable:!0,get:function(){return function e(t,r,l,i){let u=l.length<=5,[s,c]=l,d=(0,a.createRouterCacheKey)(c),f=r.parallelRoutes.get(s);if(!f)return;let p=t.parallelRoutes.get(s);p&&p!==f||(p=new Map(f),t.parallelRoutes.set(s,p));let g=f.get(d),h=p.get(d);if(u){if(!h||!h.lazyData||h===g){let e=l[3];h={lazyData:null,rsc:e[2],prefetchRsc:null,head:null,prefetchHead:null,loading:e[3],parallelRoutes:g?new Map(g.parallelRoutes):new Map,lazyDataResolved:!1},g&&(0,n.invalidateCacheByRouterState)(h,g,l[2]),(0,o.fillLazyItemsTillLeafWithHead)(h,g,l[2],e,l[4],i),p.set(d,h)}return}h&&g&&(h===g&&(h={lazyData:h.lazyData,rsc:h.rsc,prefetchRsc:h.prefetchRsc,head:h.head,prefetchHead:h.prefetchHead,parallelRoutes:new Map(h.parallelRoutes),lazyDataResolved:!1,loading:h.loading},p.set(d,h)),e(h,g,l.slice(2),i))}}});let n=r(2498),o=r(114),a=r(9886);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},114:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillLazyItemsTillLeafWithHead",{enumerable:!0,get:function(){return function e(t,r,a,l,i,u){if(0===Object.keys(a[1]).length){t.head=i;return}for(let s in a[1]){let c;let d=a[1][s],f=d[0],p=(0,n.createRouterCacheKey)(f),g=null!==l&&void 0!==l[1][s]?l[1][s]:null;if(r){let n=r.parallelRoutes.get(s);if(n){let r;let a=(null==u?void 0:u.kind)==="auto"&&u.status===o.PrefetchCacheEntryStatus.reusable,l=new Map(n),c=l.get(p);r=null!==g?{lazyData:null,rsc:g[2],prefetchRsc:null,head:null,prefetchHead:null,loading:g[3],parallelRoutes:new Map(null==c?void 0:c.parallelRoutes),lazyDataResolved:!1}:a&&c?{lazyData:c.lazyData,rsc:c.rsc,prefetchRsc:c.prefetchRsc,head:c.head,prefetchHead:c.prefetchHead,parallelRoutes:new Map(c.parallelRoutes),lazyDataResolved:c.lazyDataResolved,loading:c.loading}:{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map(null==c?void 0:c.parallelRoutes),lazyDataResolved:!1,loading:null},l.set(p,r),e(r,c,d,g||null,i,u),t.parallelRoutes.set(s,l);continue}}if(null!==g){let e=g[2],t=g[3];c={lazyData:null,rsc:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:t}}else c={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};let h=t.parallelRoutes.get(s);h?h.set(p,c):t.parallelRoutes.set(s,new Map([[p,c]])),e(c,void 0,d,g,i,u)}}}});let n=r(9886),o=r(7767);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7252:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleMutable",{enumerable:!0,get:function(){return a}});let n=r(3648);function o(e){return void 0!==e}function a(e,t){var r,a,l;let i=null==(a=t.shouldScroll)||a,u=e.nextUrl;if(o(t.patchedTree)){let r=(0,n.computeChangedPath)(e.tree,t.patchedTree);r?u=r:u||(u=e.canonicalUrl)}return{buildId:e.buildId,canonicalUrl:o(t.canonicalUrl)?t.canonicalUrl===e.canonicalUrl?e.canonicalUrl:t.canonicalUrl:e.canonicalUrl,pushRef:{pendingPush:o(t.pendingPush)?t.pendingPush:e.pushRef.pendingPush,mpaNavigation:o(t.mpaNavigation)?t.mpaNavigation:e.pushRef.mpaNavigation,preserveCustomHistoryState:o(t.preserveCustomHistoryState)?t.preserveCustomHistoryState:e.pushRef.preserveCustomHistoryState},focusAndScrollRef:{apply:!!i&&(!!o(null==t?void 0:t.scrollableSegments)||e.focusAndScrollRef.apply),onlyHashChange:!!t.hashFragment&&e.canonicalUrl.split("#",1)[0]===(null==(r=t.canonicalUrl)?void 0:r.split("#",1)[0]),hashFragment:i?t.hashFragment&&""!==t.hashFragment?decodeURIComponent(t.hashFragment.slice(1)):e.focusAndScrollRef.hashFragment:null,segmentPaths:i?null!=(l=null==t?void 0:t.scrollableSegments)?l:e.focusAndScrollRef.segmentPaths:[]},cache:t.cache?t.cache:e.cache,prefetchCache:t.prefetchCache?t.prefetchCache:e.prefetchCache,tree:o(t.patchedTree)?t.patchedTree:e.tree,nextUrl:u}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5652:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSegmentMismatch",{enumerable:!0,get:function(){return o}});let n=r(941);function o(e,t,r){return(0,n.handleExternalUrl)(e,{},e.canonicalUrl,!0)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3193:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheBelowFlightSegmentPath",{enumerable:!0,get:function(){return function e(t,r,o){let a=o.length<=2,[l,i]=o,u=(0,n.createRouterCacheKey)(i),s=r.parallelRoutes.get(l);if(!s)return;let c=t.parallelRoutes.get(l);if(c&&c!==s||(c=new Map(s),t.parallelRoutes.set(l,c)),a){c.delete(u);return}let d=s.get(u),f=c.get(u);f&&d&&(f===d&&(f={lazyData:f.lazyData,rsc:f.rsc,prefetchRsc:f.prefetchRsc,head:f.head,prefetchHead:f.prefetchHead,parallelRoutes:new Map(f.parallelRoutes),lazyDataResolved:f.lazyDataResolved},c.set(u,f)),e(f,d,o.slice(2)))}}});let n=r(9886);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2498:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheByRouterState",{enumerable:!0,get:function(){return o}});let n=r(9886);function o(e,t,r){for(let o in r[1]){let a=r[1][o][0],l=(0,n.createRouterCacheKey)(a),i=t.parallelRoutes.get(o);if(i){let t=new Map(i);t.delete(l),e.parallelRoutes.set(o,t)}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3772:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNavigatingToNewRootLayout",{enumerable:!0,get:function(){return function e(t,r){let n=t[0],o=r[0];if(Array.isArray(n)&&Array.isArray(o)){if(n[0]!==o[0]||n[2]!==o[2])return!0}else if(n!==o)return!0;if(t[4])return!r[4];if(r[4])return!0;let a=Object.values(t[1])[0],l=Object.values(r[1])[0];return!a||!l||e(a,l)}}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8831:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{abortTask:function(){return s},listenForDynamicRequest:function(){return i},updateCacheNodeOnNavigation:function(){return function e(t,r,i,s,c){let d=r[1],f=i[1],p=s[1],g=t.parallelRoutes,h=new Map(g),_={},y=null;for(let t in f){let r;let i=f[t],s=d[t],v=g.get(t),b=p[t],m=i[0],P=(0,a.createRouterCacheKey)(m),R=void 0!==s?s[0]:void 0,S=void 0!==v?v.get(P):void 0;if(null!==(r=m===n.PAGE_SEGMENT_KEY?l(i,void 0!==b?b:null,c):m===n.DEFAULT_SEGMENT_KEY?void 0!==s?{route:s,node:null,children:null}:l(i,void 0!==b?b:null,c):void 0!==R&&(0,o.matchSegment)(m,R)&&void 0!==S&&void 0!==s?null!=b?e(S,s,i,b,c):function(e){let t=u(e,null,null);return{route:e,node:t,children:null}}(i):l(i,void 0!==b?b:null,c))){null===y&&(y=new Map),y.set(t,r);let e=r.node;if(null!==e){let r=new Map(v);r.set(P,e),h.set(t,r)}_[t]=r.route}else _[t]=i}if(null===y)return null;let v={lazyData:null,rsc:t.rsc,prefetchRsc:t.prefetchRsc,head:t.head,prefetchHead:t.prefetchHead,loading:t.loading,parallelRoutes:h,lazyDataResolved:!1};return{route:function(e,t){let r=[e[0],t];return 2 in e&&(r[2]=e[2]),3 in e&&(r[3]=e[3]),4 in e&&(r[4]=e[4]),r}(i,_),node:v,children:y}}},updateCacheNodeOnPopstateRestoration:function(){return function e(t,r){let n=r[1],o=t.parallelRoutes,l=new Map(o);for(let t in n){let r=n[t],i=r[0],u=(0,a.createRouterCacheKey)(i),s=o.get(t);if(void 0!==s){let n=s.get(u);if(void 0!==n){let o=e(n,r),a=new Map(s);a.set(u,o),l.set(t,a)}}}let i=t.rsc,u=f(i)&&"pending"===i.status;return{lazyData:null,rsc:i,head:t.head,prefetchHead:u?t.prefetchHead:null,prefetchRsc:u?t.prefetchRsc:null,loading:u?t.loading:null,parallelRoutes:l,lazyDataResolved:!1}}}});let n=r(8071),o=r(455),a=r(9886);function l(e,t,r){let n=u(e,t,r);return{route:e,node:n,children:null}}function i(e,t){t.then(t=>{for(let r of t[0]){let t=r.slice(0,-3),n=r[r.length-3],l=r[r.length-2],i=r[r.length-1];"string"!=typeof t&&function(e,t,r,n,l){let i=e;for(let e=0;e{s(e,t)})}function u(e,t,r){let n=e[1],o=null!==t?t[1]:null,l=new Map;for(let e in n){let t=n[e],i=null!==o?o[e]:null,s=t[0],c=(0,a.createRouterCacheKey)(s),d=u(t,void 0===i?null:i,r),f=new Map;f.set(c,d),l.set(e,f)}let i=0===l.size,s=null!==t?t[2]:null,c=null!==t?t[3]:null;return{lazyData:null,parallelRoutes:l,prefetchRsc:void 0!==s?s:null,prefetchHead:i?r:null,loading:void 0!==c?c:null,rsc:p(),head:i?p():null,lazyDataResolved:!1}}function s(e,t){let r=e.node;if(null===r)return;let n=e.children;if(null===n)c(e.route,r,t);else for(let e of n.values())s(e,t);e.node=null}function c(e,t,r){let n=e[1],o=t.parallelRoutes;for(let e in n){let t=n[e],l=o.get(e);if(void 0===l)continue;let i=t[0],u=(0,a.createRouterCacheKey)(i),s=l.get(u);void 0!==s&&c(t,s,r)}let l=t.rsc;f(l)&&(null===r?l.resolve(null):l.reject(r));let i=t.head;f(i)&&i.resolve(null)}let d=Symbol();function f(e){return e&&e.tag===d}function p(){let e,t;let r=new Promise((r,n)=>{e=r,t=n});return r.status="pending",r.resolve=t=>{"pending"===r.status&&(r.status="fulfilled",r.value=t,e(t))},r.reject=e=>{"pending"===r.status&&(r.status="rejected",r.reason=e,t(e))},r.tag=d,r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9373:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createPrefetchCacheEntryForInitialLoad:function(){return s},getOrCreatePrefetchCacheEntry:function(){return u},prunePrefetchCache:function(){return d}});let n=r(7584),o=r(9009),a=r(7767),l=r(1156);function i(e,t){let r=(0,n.createHrefFromUrl)(e,!1);return t?t+"%"+r:r}function u(e){let t,{url:r,nextUrl:n,tree:o,buildId:l,prefetchCache:u,kind:s}=e,d=i(r,n),f=u.get(d);if(f)t=f;else{let e=i(r),n=u.get(e);n&&(t=n)}return t?(t.status=g(t),t.kind!==a.PrefetchKind.FULL&&s===a.PrefetchKind.FULL)?c({tree:o,url:r,buildId:l,nextUrl:n,prefetchCache:u,kind:null!=s?s:a.PrefetchKind.TEMPORARY}):(s&&t.kind===a.PrefetchKind.TEMPORARY&&(t.kind=s),t):c({tree:o,url:r,buildId:l,nextUrl:n,prefetchCache:u,kind:s||a.PrefetchKind.TEMPORARY})}function s(e){let{nextUrl:t,tree:r,prefetchCache:n,url:o,kind:l,data:u}=e,[,,,s]=u,c=s?i(o,t):i(o),d={treeAtTimeOfPrefetch:r,data:Promise.resolve(u),kind:l,prefetchTime:Date.now(),lastUsedTime:Date.now(),key:c,status:a.PrefetchCacheEntryStatus.fresh};return n.set(c,d),d}function c(e){let{url:t,kind:r,tree:n,nextUrl:u,buildId:s,prefetchCache:c}=e,d=i(t),f=l.prefetchQueue.enqueue(()=>(0,o.fetchServerResponse)(t,n,u,s,r).then(e=>{let[,,,r]=e;return r&&function(e){let{url:t,nextUrl:r,prefetchCache:n}=e,o=i(t),a=n.get(o);if(!a)return;let l=i(t,r);n.set(l,a),n.delete(o)}({url:t,nextUrl:u,prefetchCache:c}),e})),p={treeAtTimeOfPrefetch:n,data:f,kind:r,prefetchTime:Date.now(),lastUsedTime:null,key:d,status:a.PrefetchCacheEntryStatus.fresh};return c.set(d,p),p}function d(e){for(let[t,r]of e)g(r)===a.PrefetchCacheEntryStatus.expired&&e.delete(t)}let f=1e3*Number("30"),p=1e3*Number("300");function g(e){let{kind:t,prefetchTime:r,lastUsedTime:n}=e;return Date.now()<(null!=n?n:r)+f?n?a.PrefetchCacheEntryStatus.reusable:a.PrefetchCacheEntryStatus.fresh:"auto"===t&&Date.now(){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fastRefreshReducer",{enumerable:!0,get:function(){return n}}),r(9009),r(7584),r(5166),r(3772),r(941),r(7252),r(9894),r(2994),r(5652),r(5262);let n=function(e,t){return e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2492:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findHeadInCache",{enumerable:!0,get:function(){return o}});let n=r(9886);function o(e,t){return function e(t,r,o){if(0===Object.keys(r).length)return[t,o];for(let a in r){let[l,i]=r[a],u=t.parallelRoutes.get(a);if(!u)continue;let s=(0,n.createRouterCacheKey)(l),c=u.get(s);if(!c)continue;let d=e(c,i,o+"/"+s);if(d)return d}return null}(e,t,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2162:(e,t)=>{"use strict";function r(e){return Array.isArray(e)?e[1]:e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentValue",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5262:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasInterceptionRouteInCurrentTree",{enumerable:!0,get:function(){return function e(t){let[r,o]=t;if(Array.isArray(r)&&("di"===r[2]||"ci"===r[2])||"string"==typeof r&&(0,n.isInterceptionRouteAppPath)(r))return!0;if(o){for(let t in o)if(e(o[t]))return!0}return!1}}});let n=r(7356);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},941:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleExternalUrl:function(){return _},navigateReducer:function(){return v}}),r(9009);let n=r(7584),o=r(3193),a=r(5166),l=r(4614),i=r(3772),u=r(7767),s=r(7252),c=r(9894),d=r(1156),f=r(2994),p=r(8071),g=(r(8831),r(9373)),h=r(2895);function _(e,t,r,n){return t.mpaNavigation=!0,t.canonicalUrl=r,t.pendingPush=n,t.scrollableSegments=void 0,(0,s.handleMutable)(e,t)}function y(e){let t=[],[r,n]=e;if(0===Object.keys(n).length)return[[r]];for(let[e,o]of Object.entries(n))for(let n of y(o))""===r?t.push([e,...n]):t.push([r,e,...n]);return t}let v=function(e,t){let{url:r,isExternalUrl:v,navigateType:b,shouldScroll:m}=t,P={},{hash:R}=r,S=(0,n.createHrefFromUrl)(r),O="push"===b;if((0,g.prunePrefetchCache)(e.prefetchCache),P.preserveCustomHistoryState=!1,v)return _(e,P,r.toString(),O);let E=(0,g.getOrCreatePrefetchCacheEntry)({url:r,nextUrl:e.nextUrl,tree:e.tree,buildId:e.buildId,prefetchCache:e.prefetchCache}),{treeAtTimeOfPrefetch:T,data:j}=E;return d.prefetchQueue.bump(j),j.then(t=>{let[r,d]=t,g=!1;if(E.lastUsedTime||(E.lastUsedTime=Date.now(),g=!0),"string"==typeof r)return _(e,P,r,O);if(document.getElementById("__next-page-redirect"))return _(e,P,S,O);let v=e.tree,b=e.cache,j=[];for(let t of r){let r=t.slice(0,-4),n=t.slice(-3)[0],s=["",...r],d=(0,a.applyRouterStatePatchToTree)(s,v,n,S);if(null===d&&(d=(0,a.applyRouterStatePatchToTree)(s,T,n,S)),null!==d){if((0,i.isNavigatingToNewRootLayout)(v,d))return _(e,P,S,O);let a=(0,f.createEmptyCacheNode)(),m=!1;for(let e of(E.status!==u.PrefetchCacheEntryStatus.stale||g?m=(0,c.applyFlightData)(b,a,t,E):(m=function(e,t,r,n){let o=!1;for(let a of(e.rsc=t.rsc,e.prefetchRsc=t.prefetchRsc,e.loading=t.loading,e.parallelRoutes=new Map(t.parallelRoutes),y(n).map(e=>[...r,...e])))(0,h.clearCacheNodeDataForSegmentPath)(e,t,a),o=!0;return o}(a,b,r,n),E.lastUsedTime=Date.now()),(0,l.shouldHardNavigate)(s,v)?(a.rsc=b.rsc,a.prefetchRsc=b.prefetchRsc,(0,o.invalidateCacheBelowFlightSegmentPath)(a,b,r),P.cache=a):m&&(P.cache=a,b=a),v=d,y(n))){let t=[...r,...e];t[t.length-1]!==p.DEFAULT_SEGMENT_KEY&&j.push(t)}}}return P.patchedTree=v,P.canonicalUrl=d?(0,n.createHrefFromUrl)(d):S,P.pendingPush=O,P.scrollableSegments=j,P.hashFragment=R,P.shouldScroll=m,(0,s.handleMutable)(e,P)},()=>e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1156:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{prefetchQueue:function(){return l},prefetchReducer:function(){return i}});let n=r(5138),o=r(7815),a=r(9373),l=new o.PromiseQueue(5);function i(e,t){(0,a.prunePrefetchCache)(e.prefetchCache);let{url:r}=t;return r.searchParams.delete(n.NEXT_RSC_UNION_QUERY),(0,a.getOrCreatePrefetchCacheEntry)({url:r,nextUrl:e.nextUrl,prefetchCache:e.prefetchCache,kind:t.kind,tree:e.tree,buildId:e.buildId}),e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9809:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"refreshReducer",{enumerable:!0,get:function(){return g}});let n=r(9009),o=r(7584),a=r(5166),l=r(3772),i=r(941),u=r(7252),s=r(114),c=r(2994),d=r(5652),f=r(5262),p=r(4158);function g(e,t){let{origin:r}=t,g={},h=e.canonicalUrl,_=e.tree;g.preserveCustomHistoryState=!1;let y=(0,c.createEmptyCacheNode)(),v=(0,f.hasInterceptionRouteInCurrentTree)(e.tree);return y.lazyData=(0,n.fetchServerResponse)(new URL(h,r),[_[0],_[1],_[2],"refetch"],v?e.nextUrl:null,e.buildId),y.lazyData.then(async r=>{let[n,c]=r;if("string"==typeof n)return(0,i.handleExternalUrl)(e,g,n,e.pushRef.pendingPush);for(let r of(y.lazyData=null,n)){if(3!==r.length)return console.log("REFRESH FAILED"),e;let[n]=r,u=(0,a.applyRouterStatePatchToTree)([""],_,n,e.canonicalUrl);if(null===u)return(0,d.handleSegmentMismatch)(e,t,n);if((0,l.isNavigatingToNewRootLayout)(_,u))return(0,i.handleExternalUrl)(e,g,h,e.pushRef.pendingPush);let f=c?(0,o.createHrefFromUrl)(c):void 0;c&&(g.canonicalUrl=f);let[b,m]=r.slice(-2);if(null!==b){let e=b[2];y.rsc=e,y.prefetchRsc=null,(0,s.fillLazyItemsTillLeafWithHead)(y,void 0,n,b,m),g.prefetchCache=new Map}await (0,p.refreshInactiveParallelSegments)({state:e,updatedTree:u,updatedCache:y,includeNextUrl:v,canonicalUrl:g.canonicalUrl||e.canonicalUrl}),g.cache=y,g.patchedTree=u,g.canonicalUrl=h,_=u}return(0,u.handleMutable)(e,g)},()=>e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5608:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"restoreReducer",{enumerable:!0,get:function(){return a}});let n=r(7584),o=r(3648);function a(e,t){var r;let{url:a,tree:l}=t,i=(0,n.createHrefFromUrl)(a),u=l||e.tree,s=e.cache;return{buildId:e.buildId,canonicalUrl:i,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:e.focusAndScrollRef,cache:s,prefetchCache:e.prefetchCache,tree:u,nextUrl:null!=(r=(0,o.extractPathFromFlightRouterState)(u))?r:a.pathname}}r(8831),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5240:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverActionReducer",{enumerable:!0,get:function(){return m}});let n=r(5424),o=r(5138),a=r(3486),l=r(7584),i=r(941),u=r(5166),s=r(3772),c=r(7252),d=r(114),f=r(2994),p=r(5262),g=r(5652),h=r(4158),_=r(7542),{createFromFetch:y,encodeReply:v}=r(6493);async function b(e,t,r){let l,{actionId:i,actionArgs:u}=r,s=await v(u),c=await fetch("",{method:"POST",headers:{Accept:o.RSC_CONTENT_TYPE_HEADER,[o.ACTION]:i,[o.NEXT_ROUTER_STATE_TREE]:(0,_.prepareFlightRouterStateForRequest)(e.tree),...t?{[o.NEXT_URL]:t}:{}},body:s}),d=c.headers.get("x-action-redirect");try{let e=JSON.parse(c.headers.get("x-action-revalidated")||"[[],0,0]");l={paths:e[0]||[],tag:!!e[1],cookie:e[2]}}catch(e){l={paths:[],tag:!1,cookie:!1}}let f=d?new URL((0,a.addBasePath)(d),new URL(e.canonicalUrl,window.location.href)):void 0;if(c.headers.get("content-type")===o.RSC_CONTENT_TYPE_HEADER){let e=await y(Promise.resolve(c),{callServer:n.callServer});if(d){let[,t]=null!=e?e:[];return{actionFlightData:t,redirectLocation:f,revalidatedParts:l}}let[t,[,r]]=null!=e?e:[];return{actionResult:t,actionFlightData:r,redirectLocation:f,revalidatedParts:l}}return{redirectLocation:f,revalidatedParts:l}}function m(e,t){let{resolve:r,reject:n}=t,o={},a=e.canonicalUrl,_=e.tree;o.preserveCustomHistoryState=!1;let y=e.nextUrl&&(0,p.hasInterceptionRouteInCurrentTree)(e.tree)?e.nextUrl:null;return o.inFlightServerAction=b(e,y,t),o.inFlightServerAction.then(async n=>{let{actionResult:p,actionFlightData:v,redirectLocation:b}=n;if(b&&(e.pushRef.pendingPush=!0,o.pendingPush=!0),!v)return(r(p),b)?(0,i.handleExternalUrl)(e,o,b.href,e.pushRef.pendingPush):e;if("string"==typeof v)return(0,i.handleExternalUrl)(e,o,v,e.pushRef.pendingPush);if(o.inFlightServerAction=null,b){let e=(0,l.createHrefFromUrl)(b,!1);o.canonicalUrl=e}for(let r of v){if(3!==r.length)return console.log("SERVER ACTION APPLY FAILED"),e;let[n]=r,c=(0,u.applyRouterStatePatchToTree)([""],_,n,b?(0,l.createHrefFromUrl)(b):e.canonicalUrl);if(null===c)return(0,g.handleSegmentMismatch)(e,t,n);if((0,s.isNavigatingToNewRootLayout)(_,c))return(0,i.handleExternalUrl)(e,o,a,e.pushRef.pendingPush);let[p,v]=r.slice(-2),m=null!==p?p[2]:null;if(null!==m){let t=(0,f.createEmptyCacheNode)();t.rsc=m,t.prefetchRsc=null,(0,d.fillLazyItemsTillLeafWithHead)(t,void 0,n,p,v),await (0,h.refreshInactiveParallelSegments)({state:e,updatedTree:c,updatedCache:t,includeNextUrl:!!y,canonicalUrl:o.canonicalUrl||e.canonicalUrl}),o.cache=t,o.prefetchCache=new Map}o.patchedTree=c,_=c}return r(p),(0,c.handleMutable)(e,o)},t=>(n(t),e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4025:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverPatchReducer",{enumerable:!0,get:function(){return d}});let n=r(7584),o=r(5166),a=r(3772),l=r(941),i=r(9894),u=r(7252),s=r(2994),c=r(5652);function d(e,t){let{serverResponse:r}=t,[d,f]=r,p={};if(p.preserveCustomHistoryState=!1,"string"==typeof d)return(0,l.handleExternalUrl)(e,p,d,e.pushRef.pendingPush);let g=e.tree,h=e.cache;for(let r of d){let u=r.slice(0,-4),[d]=r.slice(-3,-2),_=(0,o.applyRouterStatePatchToTree)(["",...u],g,d,e.canonicalUrl);if(null===_)return(0,c.handleSegmentMismatch)(e,t,d);if((0,a.isNavigatingToNewRootLayout)(g,_))return(0,l.handleExternalUrl)(e,p,e.canonicalUrl,e.pushRef.pendingPush);let y=f?(0,n.createHrefFromUrl)(f):void 0;y&&(p.canonicalUrl=y);let v=(0,s.createEmptyCacheNode)();(0,i.applyFlightData)(h,v,r),p.patchedTree=_,p.cache=v,h=v,g=_}return(0,u.handleMutable)(e,p)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4158:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addRefreshMarkerToActiveParallelSegments:function(){return function e(t,r){let[n,o,,l]=t;for(let i in n.includes(a.PAGE_SEGMENT_KEY)&&"refresh"!==l&&(t[2]=r,t[3]="refresh"),o)e(o[i],r)}},refreshInactiveParallelSegments:function(){return l}});let n=r(9894),o=r(9009),a=r(8071);async function l(e){let t=new Set;await i({...e,rootTree:e.updatedTree,fetchedSegments:t})}async function i(e){let{state:t,updatedTree:r,updatedCache:a,includeNextUrl:l,fetchedSegments:u,rootTree:s=r,canonicalUrl:c}=e,[,d,f,p]=r,g=[];if(f&&f!==c&&"refresh"===p&&!u.has(f)){u.add(f);let e=(0,o.fetchServerResponse)(new URL(f,location.origin),[s[0],s[1],s[2],"refetch"],l?t.nextUrl:null,t.buildId).then(e=>{let t=e[0];if("string"!=typeof t)for(let e of t)(0,n.applyFlightData)(a,a,e)});g.push(e)}for(let e in d){let r=i({state:t,updatedTree:d[e],updatedCache:a,includeNextUrl:l,fetchedSegments:u,rootTree:s,canonicalUrl:c});g.push(r)}await Promise.all(g)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7767:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_FAST_REFRESH:function(){return s},ACTION_NAVIGATE:function(){return a},ACTION_PREFETCH:function(){return u},ACTION_REFRESH:function(){return o},ACTION_RESTORE:function(){return l},ACTION_SERVER_ACTION:function(){return c},ACTION_SERVER_PATCH:function(){return i},PrefetchCacheEntryStatus:function(){return n},PrefetchKind:function(){return r},isThenable:function(){return d}});let o="refresh",a="navigate",l="restore",i="server-patch",u="prefetch",s="fast-refresh",c="server-action";function d(e){return e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}(function(e){e.AUTO="auto",e.FULL="full",e.TEMPORARY="temporary"})(r||(r={})),function(e){e.fresh="fresh",e.reusable="reusable",e.expired="expired",e.stale="stale"}(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3860:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reducer",{enumerable:!0,get:function(){return n}}),r(7767),r(941),r(4025),r(5608),r(9809),r(1156),r(5703),r(5240);let n=function(e,t){return e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"shouldHardNavigate",{enumerable:!0,get:function(){return function e(t,r){let[o,a]=r,[l,i]=t;return(0,n.matchSegment)(l,o)?!(t.length<=2)&&e(t.slice(2),a[i]):!!Array.isArray(l)}}});let n=r(455);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3325:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createDynamicallyTrackedSearchParams:function(){return i},createUntrackedSearchParams:function(){return l}});let n=r(5869),o=r(2846),a=r(2255);function l(e){let t=n.staticGenerationAsyncStorage.getStore();return t&&t.forceStatic?{}:e}function i(e){let t=n.staticGenerationAsyncStorage.getStore();return t?t.forceStatic?{}:t.isStaticGeneration||t.dynamicShouldError?new Proxy({},{get:(e,r,n)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),a.ReflectAdapter.get(e,r,n)),has:(e,r)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),Reflect.has(e,r)),ownKeys:e=>((0,o.trackDynamicDataAccessed)(t,"searchParams"),Reflect.ownKeys(e))}):e:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6488:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{StaticGenBailoutError:function(){return n},isStaticGenBailoutError:function(){return o}});let r="NEXT_STATIC_GEN_BAILOUT";class n extends Error{constructor(...e){super(...e),this.code=r}}function o(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9519:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unresolvedThenable",{enumerable:!0,get:function(){return r}});let r={then:()=>{}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7326:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{useReducerWithReduxDevtools:function(){return i},useUnwrapState:function(){return l}});let n=r(8374)._(r(7577)),o=r(7767);function a(e){if(e instanceof Map){let t={};for(let[r,n]of e.entries()){if("function"==typeof n){t[r]="fn()";continue}if("object"==typeof n&&null!==n){if(n.$$typeof){t[r]=n.$$typeof.toString();continue}if(n._bundlerConfig){t[r]="FlightData";continue}}t[r]=a(n)}return t}if("object"==typeof e&&null!==e){let t={};for(let r in e){let n=e[r];if("function"==typeof n){t[r]="fn()";continue}if("object"==typeof n&&null!==n){if(n.$$typeof){t[r]=n.$$typeof.toString();continue}if(n.hasOwnProperty("_bundlerConfig")){t[r]="FlightData";continue}}t[r]=a(n)}return t}return Array.isArray(e)?e.map(a):e}function l(e){return(0,o.isThenable)(e)?(0,n.use)(e):e}r(3879);let i=function(e){return[e,()=>{},()=>{}]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7542:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"prepareFlightRouterStateForRequest",{enumerable:!0,get:function(){return o}});let n=r(8071);function o(e,t){return t?encodeURIComponent(JSON.stringify(e)):encodeURIComponent(JSON.stringify(function e(t){let[r,o,,a,l]=t,i="string"==typeof r&&r.startsWith(n.PAGE_SEGMENT_KEY+"?")?n.PAGE_SEGMENT_KEY:r,u={};for(let[t,r]of Object.entries(o))u[t]=e(r);let s=[i,u,null,a&&"refresh"!==a?a:null];return void 0!==l&&(s[4]=l),s}(e)))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7929:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let n=r(4655);function o(e){return(0,n.pathHasPrefix)(e,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3658:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return a}});let n=r(3236),o=r(3067),a=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:a}=(0,o.parsePath)(e);return""+(0,n.removeTrailingSlash)(t)+r+a};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4237:(e,t,r)=>{"use strict";function n(e){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return n}}),r(7929),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6401:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getPathname:function(){return n},isFullStringUrl:function(){return o},parseUrl:function(){return a}});let r="http://n";function n(e){return new URL(e,r).pathname}function o(e){return/https?:\/\//.test(e)}function a(e){let t;try{t=new URL(e,r)}catch{}return t}},2846:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Postpone:function(){return d},createPostponedAbortSignal:function(){return y},createPrerenderState:function(){return u},formatDynamicAPIAccesses:function(){return h},markCurrentScopeAsDynamic:function(){return s},trackDynamicDataAccessed:function(){return c},trackDynamicFetch:function(){return f},usedDynamicAPIs:function(){return g}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(7577)),o=r(442),a=r(6488),l=r(6401),i="function"==typeof n.default.unstable_postpone;function u(e){return{isDebugSkeleton:e,dynamicAccesses:[]}}function s(e,t){let r=(0,l.getPathname)(e.urlPathname);if(!e.isUnstableCacheCallback){if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}}function c(e,t){let r=(0,l.getPathname)(e.urlPathname);if(e.isUnstableCacheCallback)throw Error(`Route ${r} used "${t}" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "${t}" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}function d({reason:e,prerenderState:t,pathname:r}){p(t,e,r)}function f(e,t){e.prerenderState&&p(e.prerenderState,t,e.urlPathname)}function p(e,t,r){_();let o=`Route ${r} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;e.dynamicAccesses.push({stack:e.isDebugSkeleton?Error().stack:void 0,expression:t}),n.default.unstable_postpone(o)}function g(e){return e.dynamicAccesses.length>0}function h(e){return e.dynamicAccesses.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: +${t}`))}function _(){if(!i)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function y(e){_();let t=new AbortController;try{n.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}},2357:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentParam",{enumerable:!0,get:function(){return o}});let n=r(7356);function o(e){let t=n.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t));return(t&&(e=e.slice(t.length)),e.startsWith("[[...")&&e.endsWith("]]"))?{type:"optional-catchall",param:e.slice(5,-2)}:e.startsWith("[...")&&e.endsWith("]")?{type:t?"catchall-intercepted":"catchall",param:e.slice(4,-1)}:e.startsWith("[")&&e.endsWith("]")?{type:t?"dynamic-intercepted":"dynamic",param:e.slice(1,-1)}:null}},7356:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return l},isInterceptionRouteAppPath:function(){return a}});let n=r(2862),o=["(..)(..)","(.)","(..)","(...)"];function a(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function l(e){let t,r,a;for(let n of e.split("/"))if(r=o.find(e=>n.startsWith(e))){[t,a]=e.split(r,2);break}if(!t||!r||!a)throw Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`);switch(t=(0,n.normalizeAppPath)(t),r){case"(.)":a="/"===t?`/${a}`:t+"/"+a;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);a=t.split("/").slice(0,-1).concat(a).join("/");break;case"(...)":a="/"+a;break;case"(..)(..)":let l=t.split("/");if(l.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);a=l.slice(0,-2).concat(a).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:a}}},1616:(e,t,r)=>{"use strict";e.exports=r(399)},2413:(e,t,r)=>{"use strict";e.exports=r(1616).vendored.contexts.AppRouterContext},7008:(e,t,r)=>{"use strict";e.exports=r(1616).vendored.contexts.HooksClientContext},3347:(e,t,r)=>{"use strict";e.exports=r(1616).vendored.contexts.ServerInsertedHtml},962:(e,t,r)=>{"use strict";e.exports=r(1616).vendored["react-ssr"].ReactDOM},326:(e,t,r)=>{"use strict";e.exports=r(1616).vendored["react-ssr"].ReactJsxRuntime},6493:(e,t,r)=>{"use strict";e.exports=r(1616).vendored["react-ssr"].ReactServerDOMWebpackClientEdge},7577:(e,t,r)=>{"use strict";e.exports=r(1616).vendored["react-ssr"].React},2255:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},2165:(e,t)=>{"use strict";function r(e){let t=5381;for(let r=0;r>>0}function n(e){return r(e).toString(36).slice(0,5)}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{djb2Hash:function(){return r},hexHash:function(){return n}})},4129:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{BailoutToCSRError:function(){return n},isBailoutToCSRError:function(){return o}});let r="BAILOUT_TO_CLIENT_SIDE_RENDERING";class n extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}},6058:(e,t)=>{"use strict";function r(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},3879:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ActionQueueContext:function(){return i},createMutableActionQueue:function(){return c}});let n=r(8374),o=r(7767),a=r(3860),l=n._(r(7577)),i=l.default.createContext(null);function u(e,t){null!==e.pending&&(e.pending=e.pending.next,null!==e.pending?s({actionQueue:e,action:e.pending,setState:t}):e.needsRefresh&&(e.needsRefresh=!1,e.dispatch({type:o.ACTION_REFRESH,origin:window.location.origin},t)))}async function s(e){let{actionQueue:t,action:r,setState:n}=e,a=t.state;if(!a)throw Error("Invariant: Router state not initialized");t.pending=r;let l=r.payload,i=t.action(a,l);function s(e){r.discarded||(t.state=e,t.devToolsInstance&&t.devToolsInstance.send(l,e),u(t,n),r.resolve(e))}(0,o.isThenable)(i)?i.then(s,e=>{u(t,n),r.reject(e)}):s(i)}function c(){let e={state:null,dispatch:(t,r)=>(function(e,t,r){let n={resolve:r,reject:()=>{}};if(t.type!==o.ACTION_RESTORE){let e=new Promise((e,t)=>{n={resolve:e,reject:t}});(0,l.startTransition)(()=>{r(e)})}let a={payload:t,next:null,resolve:n.resolve,reject:n.reject};null===e.pending?(e.last=a,s({actionQueue:e,action:a,setState:r})):t.type===o.ACTION_NAVIGATE||t.type===o.ACTION_RESTORE?(e.pending.discarded=!0,e.last=a,e.pending.payload.type===o.ACTION_SERVER_ACTION&&(e.needsRefresh=!0),s({actionQueue:e,action:a,setState:r})):(null!==e.last&&(e.last.next=a),e.last=a)})(e,t,r),action:async(e,t)=>{if(null===e)throw Error("Invariant: Router state not initialized");return(0,a.reducer)(e,t)},pending:null,last:null};return e}},8974:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let n=r(3067);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:a}=(0,n.parsePath)(e);return""+t+r+o+a}},2862:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{normalizeAppPath:function(){return a},normalizeRscURL:function(){return l}});let n=r(6058),o=r(8071);function a(e){return(0,n.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:e+"/"+t,""))}function l(e){return e.replace(/\.rsc($|\?)/,"$1")}},9976:(e,t)=>{"use strict";function r(e,t){if(void 0===t&&(t={}),t.onlyHashChange){e();return}let r=document.documentElement,n=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return r}})},2148:(e,t)=>{"use strict";function r(e){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(e)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isBot",{enumerable:!0,get:function(){return r}})},3067:(e,t)=>{"use strict";function r(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return r}})},4655:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let n=r(3067);function o(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},3236:(e,t)=>{"use strict";function r(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return r}})},8071:(e,t)=>{"use strict";function r(e){return"("===e[0]&&e.endsWith(")")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DEFAULT_SEGMENT_KEY:function(){return o},PAGE_SEGMENT_KEY:function(){return n},isGroupSegment:function(){return r}});let n="__PAGE__",o="__DEFAULT__"},576:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},8839:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bootstrap:function(){return i},error:function(){return s},event:function(){return p},info:function(){return f},prefixes:function(){return o},ready:function(){return d},trace:function(){return g},wait:function(){return u},warn:function(){return c},warnOnce:function(){return _}});let n=r(1354),o={wait:(0,n.white)((0,n.bold)("○")),error:(0,n.red)((0,n.bold)("⨯")),warn:(0,n.yellow)((0,n.bold)("⚠")),ready:"▲",info:(0,n.white)((0,n.bold)(" ")),event:(0,n.green)((0,n.bold)("✓")),trace:(0,n.magenta)((0,n.bold)("\xbb"))},a={log:"log",warn:"warn",error:"error"};function l(e,...t){(""===t[0]||void 0===t[0])&&1===t.length&&t.shift();let r=e in a?a[e]:"log",n=o[e];0===t.length?console[r](""):console[r](" "+n,...t)}function i(...e){console.log(" ",...e)}function u(...e){l("wait",...e)}function s(...e){l("error",...e)}function c(...e){l("warn",...e)}function d(...e){l("ready",...e)}function f(...e){l("info",...e)}function p(...e){l("event",...e)}function g(...e){l("trace",...e)}let h=new Set;function _(...e){h.has(e[0])||(h.add(e.join(" ")),c(...e))}},8570:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createProxy",{enumerable:!0,get:function(){return n}});let n=r(1749).createClientModuleProxy},9943:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js")},3144:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js")},7922:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js")},4789:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DynamicServerError:function(){return n},isDynamicServerError:function(){return o}});let r="DYNAMIC_SERVER_USAGE";class n extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5106:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js")},525:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js")},5866:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}}),r(3370);let n=r(9510);r(1159);let o={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};function a(){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("title",{children:"404: This page could not be found."}),(0,n.jsx)("div",{style:o.error,children:(0,n.jsxs)("div",{children:[(0,n.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,n.jsx)("h1",{className:"next-error-h1",style:o.h1,children:"404"}),(0,n.jsx)("div",{style:o.desc,children:(0,n.jsx)("h2",{style:o.h2,children:"This page could not be found."})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4892:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js")},9181:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createDynamicallyTrackedSearchParams:function(){return i},createUntrackedSearchParams:function(){return l}});let n=r(5869),o=r(6278),a=r(8238);function l(e){let t=n.staticGenerationAsyncStorage.getStore();return t&&t.forceStatic?{}:e}function i(e){let t=n.staticGenerationAsyncStorage.getStore();return t?t.forceStatic?{}:t.isStaticGeneration||t.dynamicShouldError?new Proxy({},{get:(e,r,n)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),a.ReflectAdapter.get(e,r,n)),has:(e,r)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),Reflect.has(e,r)),ownKeys:e=>((0,o.trackDynamicDataAccessed)(t,"searchParams"),Reflect.ownKeys(e))}):e:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4618:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{StaticGenBailoutError:function(){return n},isStaticGenBailoutError:function(){return o}});let r="NEXT_STATIC_GEN_BAILOUT";class n extends Error{constructor(...e){super(...e),this.code=r}}function o(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7482:e=>{(()=>{"use strict";var t={491:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ContextAPI=void 0;let n=r(223),o=r(172),a=r(930),l="context",i=new n.NoopContextManager;class u{constructor(){}static getInstance(){return this._instance||(this._instance=new u),this._instance}setGlobalContextManager(e){return(0,o.registerGlobal)(l,e,a.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,o.getGlobal)(l)||i}disable(){this._getContextManager().disable(),(0,o.unregisterGlobal)(l,a.DiagAPI.instance())}}t.ContextAPI=u},930:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagAPI=void 0;let n=r(56),o=r(912),a=r(957),l=r(172);class i{constructor(){function e(e){return function(...t){let r=(0,l.getGlobal)("diag");if(r)return r[e](...t)}}let t=this;t.setLogger=(e,r={logLevel:a.DiagLogLevel.INFO})=>{var n,i,u;if(e===t){let e=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return t.error(null!==(n=e.stack)&&void 0!==n?n:e.message),!1}"number"==typeof r&&(r={logLevel:r});let s=(0,l.getGlobal)("diag"),c=(0,o.createLogLevelDiagLogger)(null!==(i=r.logLevel)&&void 0!==i?i:a.DiagLogLevel.INFO,e);if(s&&!r.suppressOverrideMessage){let e=null!==(u=Error().stack)&&void 0!==u?u:"";s.warn(`Current logger will be overwritten from ${e}`),c.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,l.registerGlobal)("diag",c,t,!0)},t.disable=()=>{(0,l.unregisterGlobal)("diag",t)},t.createComponentLogger=e=>new n.DiagComponentLogger(e),t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}static instance(){return this._instance||(this._instance=new i),this._instance}}t.DiagAPI=i},653:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MetricsAPI=void 0;let n=r(660),o=r(172),a=r(930),l="metrics";class i{constructor(){}static getInstance(){return this._instance||(this._instance=new i),this._instance}setGlobalMeterProvider(e){return(0,o.registerGlobal)(l,e,a.DiagAPI.instance())}getMeterProvider(){return(0,o.getGlobal)(l)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,o.unregisterGlobal)(l,a.DiagAPI.instance())}}t.MetricsAPI=i},181:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PropagationAPI=void 0;let n=r(172),o=r(874),a=r(194),l=r(277),i=r(369),u=r(930),s="propagation",c=new o.NoopTextMapPropagator;class d{constructor(){this.createBaggage=i.createBaggage,this.getBaggage=l.getBaggage,this.getActiveBaggage=l.getActiveBaggage,this.setBaggage=l.setBaggage,this.deleteBaggage=l.deleteBaggage}static getInstance(){return this._instance||(this._instance=new d),this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(s,e,u.DiagAPI.instance())}inject(e,t,r=a.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=a.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(s,u.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(s)||c}}t.PropagationAPI=d},997:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceAPI=void 0;let n=r(172),o=r(846),a=r(139),l=r(607),i=r(930),u="trace";class s{constructor(){this._proxyTracerProvider=new o.ProxyTracerProvider,this.wrapSpanContext=a.wrapSpanContext,this.isSpanContextValid=a.isSpanContextValid,this.deleteSpan=l.deleteSpan,this.getSpan=l.getSpan,this.getActiveSpan=l.getActiveSpan,this.getSpanContext=l.getSpanContext,this.setSpan=l.setSpan,this.setSpanContext=l.setSpanContext}static getInstance(){return this._instance||(this._instance=new s),this._instance}setGlobalTracerProvider(e){let t=(0,n.registerGlobal)(u,this._proxyTracerProvider,i.DiagAPI.instance());return t&&this._proxyTracerProvider.setDelegate(e),t}getTracerProvider(){return(0,n.getGlobal)(u)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(u,i.DiagAPI.instance()),this._proxyTracerProvider=new o.ProxyTracerProvider}}t.TraceAPI=s},277:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;let n=r(491),o=(0,r(780).createContextKey)("OpenTelemetry Baggage Key");function a(e){return e.getValue(o)||void 0}t.getBaggage=a,t.getActiveBaggage=function(){return a(n.ContextAPI.getInstance().active())},t.setBaggage=function(e,t){return e.setValue(o,t)},t.deleteBaggage=function(e){return e.deleteValue(o)}},993:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaggageImpl=void 0;class r{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){let t=this._entries.get(e);if(t)return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map(([e,t])=>[e,t])}setEntry(e,t){let n=new r(this._entries);return n._entries.set(e,t),n}removeEntry(e){let t=new r(this._entries);return t._entries.delete(e),t}removeEntries(...e){let t=new r(this._entries);for(let r of e)t._entries.delete(r);return t}clear(){return new r}}t.BaggageImpl=r},830:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataSymbol=void 0,t.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")},369:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataFromString=t.createBaggage=void 0;let n=r(930),o=r(993),a=r(830),l=n.DiagAPI.instance();t.createBaggage=function(e={}){return new o.BaggageImpl(new Map(Object.entries(e)))},t.baggageEntryMetadataFromString=function(e){return"string"!=typeof e&&(l.error(`Cannot create baggage metadata from unknown type: ${typeof e}`),e=""),{__TYPE__:a.baggageEntryMetadataSymbol,toString:()=>e}}},67:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.context=void 0;let n=r(491);t.context=n.ContextAPI.getInstance()},223:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopContextManager=void 0;let n=r(780);class o{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=o},780:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ROOT_CONTEXT=t.createContextKey=void 0,t.createContextKey=function(e){return Symbol.for(e)};class r{constructor(e){let t=this;t._currentContext=e?new Map(e):new Map,t.getValue=e=>t._currentContext.get(e),t.setValue=(e,n)=>{let o=new r(t._currentContext);return o._currentContext.set(e,n),o},t.deleteValue=e=>{let n=new r(t._currentContext);return n._currentContext.delete(e),n}}}t.ROOT_CONTEXT=new r},506:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.diag=void 0;let n=r(930);t.diag=n.DiagAPI.instance()},56:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagComponentLogger=void 0;let n=r(172);class o{constructor(e){this._namespace=e.namespace||"DiagComponentLogger"}debug(...e){return a("debug",this._namespace,e)}error(...e){return a("error",this._namespace,e)}info(...e){return a("info",this._namespace,e)}warn(...e){return a("warn",this._namespace,e)}verbose(...e){return a("verbose",this._namespace,e)}}function a(e,t,r){let o=(0,n.getGlobal)("diag");if(o)return r.unshift(t),o[e](...r)}t.DiagComponentLogger=o},972:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagConsoleLogger=void 0;let r=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];class n{constructor(){for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.createLogLevelDiagLogger=void 0;let n=r(957);t.createLogLevelDiagLogger=function(e,t){function r(r,n){let o=t[r];return"function"==typeof o&&e>=n?o.bind(t):function(){}}return en.DiagLogLevel.ALL&&(e=n.DiagLogLevel.ALL),t=t||{},{error:r("error",n.DiagLogLevel.ERROR),warn:r("warn",n.DiagLogLevel.WARN),info:r("info",n.DiagLogLevel.INFO),debug:r("debug",n.DiagLogLevel.DEBUG),verbose:r("verbose",n.DiagLogLevel.VERBOSE)}}},957:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagLogLevel=void 0,function(e){e[e.NONE=0]="NONE",e[e.ERROR=30]="ERROR",e[e.WARN=50]="WARN",e[e.INFO=60]="INFO",e[e.DEBUG=70]="DEBUG",e[e.VERBOSE=80]="VERBOSE",e[e.ALL=9999]="ALL"}(t.DiagLogLevel||(t.DiagLogLevel={}))},172:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;let n=r(200),o=r(521),a=r(130),l=o.VERSION.split(".")[0],i=Symbol.for(`opentelemetry.js.api.${l}`),u=n._globalThis;t.registerGlobal=function(e,t,r,n=!1){var a;let l=u[i]=null!==(a=u[i])&&void 0!==a?a:{version:o.VERSION};if(!n&&l[e]){let t=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);return r.error(t.stack||t.message),!1}if(l.version!==o.VERSION){let t=Error(`@opentelemetry/api: Registration of version v${l.version} for ${e} does not match previously registered API v${o.VERSION}`);return r.error(t.stack||t.message),!1}return l[e]=t,r.debug(`@opentelemetry/api: Registered a global for ${e} v${o.VERSION}.`),!0},t.getGlobal=function(e){var t,r;let n=null===(t=u[i])||void 0===t?void 0:t.version;if(n&&(0,a.isCompatible)(n))return null===(r=u[i])||void 0===r?void 0:r[e]},t.unregisterGlobal=function(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${o.VERSION}.`);let r=u[i];r&&delete r[e]}},130:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isCompatible=t._makeCompatibilityCheck=void 0;let n=r(521),o=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function a(e){let t=new Set([e]),r=new Set,n=e.match(o);if(!n)return()=>!1;let a={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(null!=a.prerelease)return function(t){return t===e};function l(e){return r.add(e),!1}return function(e){if(t.has(e))return!0;if(r.has(e))return!1;let n=e.match(o);if(!n)return l(e);let i={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};return null!=i.prerelease||a.major!==i.major?l(e):0===a.major?a.minor===i.minor&&a.patch<=i.patch?(t.add(e),!0):l(e):a.minor<=i.minor?(t.add(e),!0):l(e)}}t._makeCompatibilityCheck=a,t.isCompatible=a(n.VERSION)},886:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.metrics=void 0;let n=r(653);t.metrics=n.MetricsAPI.getInstance()},901:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ValueType=void 0,function(e){e[e.INT=0]="INT",e[e.DOUBLE=1]="DOUBLE"}(t.ValueType||(t.ValueType={}))},102:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class r{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=r;class n{}t.NoopMetric=n;class o extends n{add(e,t){}}t.NoopCounterMetric=o;class a extends n{add(e,t){}}t.NoopUpDownCounterMetric=a;class l extends n{record(e,t){}}t.NoopHistogramMetric=l;class i{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=i;class u extends i{}t.NoopObservableCounterMetric=u;class s extends i{}t.NoopObservableGaugeMetric=s;class c extends i{}t.NoopObservableUpDownCounterMetric=c,t.NOOP_METER=new r,t.NOOP_COUNTER_METRIC=new o,t.NOOP_HISTOGRAM_METRIC=new l,t.NOOP_UP_DOWN_COUNTER_METRIC=new a,t.NOOP_OBSERVABLE_COUNTER_METRIC=new u,t.NOOP_OBSERVABLE_GAUGE_METRIC=new s,t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new c,t.createNoopMeter=function(){return t.NOOP_METER}},660:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;let n=r(102);class o{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=o,t.NOOP_METER_PROVIDER=new o},200:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(46),t)},651:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t._globalThis=void 0,t._globalThis="object"==typeof globalThis?globalThis:global},46:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(651),t)},939:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.propagation=void 0;let n=r(181);t.propagation=n.PropagationAPI.getInstance()},874:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTextMapPropagator=void 0;class r{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=r},194:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultTextMapSetter=t.defaultTextMapGetter=void 0,t.defaultTextMapGetter={get(e,t){if(null!=e)return e[t]},keys:e=>null==e?[]:Object.keys(e)},t.defaultTextMapSetter={set(e,t,r){null!=e&&(e[t]=r)}}},845:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.trace=void 0;let n=r(997);t.trace=n.TraceAPI.getInstance()},403:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonRecordingSpan=void 0;let n=r(476);class o{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return!1}recordException(e,t){}}t.NonRecordingSpan=o},614:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracer=void 0;let n=r(491),o=r(607),a=r(403),l=r(139),i=n.ContextAPI.getInstance();class u{startSpan(e,t,r=i.active()){if(null==t?void 0:t.root)return new a.NonRecordingSpan;let n=r&&(0,o.getSpanContext)(r);return"object"==typeof n&&"string"==typeof n.spanId&&"string"==typeof n.traceId&&"number"==typeof n.traceFlags&&(0,l.isSpanContextValid)(n)?new a.NonRecordingSpan(n):new a.NonRecordingSpan}startActiveSpan(e,t,r,n){let a,l,u;if(arguments.length<2)return;2==arguments.length?u=t:3==arguments.length?(a=t,u=r):(a=t,l=r,u=n);let s=null!=l?l:i.active(),c=this.startSpan(e,a,s),d=(0,o.setSpan)(s,c);return i.with(d,u,void 0,c)}}t.NoopTracer=u},124:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracerProvider=void 0;let n=r(614);class o{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=o},125:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracer=void 0;let n=new(r(614)).NoopTracer;class o{constructor(e,t,r,n){this._provider=e,this.name=t,this.version=r,this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){let o=this._getTracer();return Reflect.apply(o.startActiveSpan,o,arguments)}_getTracer(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):n}}t.ProxyTracer=o},846:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracerProvider=void 0;let n=r(125),o=new(r(124)).NoopTracerProvider;class a{getTracer(e,t,r){var o;return null!==(o=this.getDelegateTracer(e,t,r))&&void 0!==o?o:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return null!==(e=this._delegate)&&void 0!==e?e:o}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return null===(n=this._delegate)||void 0===n?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=a},996:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SamplingDecision=void 0,function(e){e[e.NOT_RECORD=0]="NOT_RECORD",e[e.RECORD=1]="RECORD",e[e.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"}(t.SamplingDecision||(t.SamplingDecision={}))},607:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;let n=r(780),o=r(403),a=r(491),l=(0,n.createContextKey)("OpenTelemetry Context Key SPAN");function i(e){return e.getValue(l)||void 0}function u(e,t){return e.setValue(l,t)}t.getSpan=i,t.getActiveSpan=function(){return i(a.ContextAPI.getInstance().active())},t.setSpan=u,t.deleteSpan=function(e){return e.deleteValue(l)},t.setSpanContext=function(e,t){return u(e,new o.NonRecordingSpan(t))},t.getSpanContext=function(e){var t;return null===(t=i(e))||void 0===t?void 0:t.spanContext()}},325:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceStateImpl=void 0;let n=r(564);class o{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let r=this._clone();return r._internalState.has(e)&&r._internalState.delete(e),r._internalState.set(e,t),r}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce((e,t)=>(e.push(t+"="+this.get(t)),e),[]).join(",")}_parse(e){!(e.length>512)&&(this._internalState=e.split(",").reverse().reduce((e,t)=>{let r=t.trim(),o=r.indexOf("=");if(-1!==o){let a=r.slice(0,o),l=r.slice(o+1,t.length);(0,n.validateKey)(a)&&(0,n.validateValue)(l)&&e.set(a,l)}return e},new Map),this._internalState.size>32&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,32))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let e=new o;return e._internalState=new Map(this._internalState),e}}t.TraceStateImpl=o},564:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateValue=t.validateKey=void 0;let r="[_0-9a-z-*/]",n=`[a-z]${r}{0,255}`,o=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`,a=RegExp(`^(?:${n}|${o})$`),l=/^[ -~]{0,255}[!-~]$/,i=/,|=/;t.validateKey=function(e){return a.test(e)},t.validateValue=function(e){return l.test(e)&&!i.test(e)}},98:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTraceState=void 0;let n=r(325);t.createTraceState=function(e){return new n.TraceStateImpl(e)}},476:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;let n=r(475);t.INVALID_SPANID="0000000000000000",t.INVALID_TRACEID="00000000000000000000000000000000",t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},357:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanKind=void 0,function(e){e[e.INTERNAL=0]="INTERNAL",e[e.SERVER=1]="SERVER",e[e.CLIENT=2]="CLIENT",e[e.PRODUCER=3]="PRODUCER",e[e.CONSUMER=4]="CONSUMER"}(t.SpanKind||(t.SpanKind={}))},139:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;let n=r(476),o=r(403),a=/^([0-9a-f]{32})$/i,l=/^[0-9a-f]{16}$/i;function i(e){return a.test(e)&&e!==n.INVALID_TRACEID}function u(e){return l.test(e)&&e!==n.INVALID_SPANID}t.isValidTraceId=i,t.isValidSpanId=u,t.isSpanContextValid=function(e){return i(e.traceId)&&u(e.spanId)},t.wrapSpanContext=function(e){return new o.NonRecordingSpan(e)}},847:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanStatusCode=void 0,function(e){e[e.UNSET=0]="UNSET",e[e.OK=1]="OK",e[e.ERROR=2]="ERROR"}(t.SpanStatusCode||(t.SpanStatusCode={}))},475:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceFlags=void 0,function(e){e[e.NONE=0]="NONE",e[e.SAMPLED=1]="SAMPLED"}(t.TraceFlags||(t.TraceFlags={}))},521:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,t.VERSION="1.6.0"}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}},l=!0;try{t[e].call(a.exports,a,a.exports,n),l=!1}finally{l&&delete r[e]}return a.exports}n.ab=__dirname+"/";var o={};(()=>{Object.defineProperty(o,"__esModule",{value:!0}),o.trace=o.propagation=o.metrics=o.diag=o.context=o.INVALID_SPAN_CONTEXT=o.INVALID_TRACEID=o.INVALID_SPANID=o.isValidSpanId=o.isValidTraceId=o.isSpanContextValid=o.createTraceState=o.TraceFlags=o.SpanStatusCode=o.SpanKind=o.SamplingDecision=o.ProxyTracerProvider=o.ProxyTracer=o.defaultTextMapSetter=o.defaultTextMapGetter=o.ValueType=o.createNoopMeter=o.DiagLogLevel=o.DiagConsoleLogger=o.ROOT_CONTEXT=o.createContextKey=o.baggageEntryMetadataFromString=void 0;var e=n(369);Object.defineProperty(o,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return e.baggageEntryMetadataFromString}});var t=n(780);Object.defineProperty(o,"createContextKey",{enumerable:!0,get:function(){return t.createContextKey}}),Object.defineProperty(o,"ROOT_CONTEXT",{enumerable:!0,get:function(){return t.ROOT_CONTEXT}});var r=n(972);Object.defineProperty(o,"DiagConsoleLogger",{enumerable:!0,get:function(){return r.DiagConsoleLogger}});var a=n(957);Object.defineProperty(o,"DiagLogLevel",{enumerable:!0,get:function(){return a.DiagLogLevel}});var l=n(102);Object.defineProperty(o,"createNoopMeter",{enumerable:!0,get:function(){return l.createNoopMeter}});var i=n(901);Object.defineProperty(o,"ValueType",{enumerable:!0,get:function(){return i.ValueType}});var u=n(194);Object.defineProperty(o,"defaultTextMapGetter",{enumerable:!0,get:function(){return u.defaultTextMapGetter}}),Object.defineProperty(o,"defaultTextMapSetter",{enumerable:!0,get:function(){return u.defaultTextMapSetter}});var s=n(125);Object.defineProperty(o,"ProxyTracer",{enumerable:!0,get:function(){return s.ProxyTracer}});var c=n(846);Object.defineProperty(o,"ProxyTracerProvider",{enumerable:!0,get:function(){return c.ProxyTracerProvider}});var d=n(996);Object.defineProperty(o,"SamplingDecision",{enumerable:!0,get:function(){return d.SamplingDecision}});var f=n(357);Object.defineProperty(o,"SpanKind",{enumerable:!0,get:function(){return f.SpanKind}});var p=n(847);Object.defineProperty(o,"SpanStatusCode",{enumerable:!0,get:function(){return p.SpanStatusCode}});var g=n(475);Object.defineProperty(o,"TraceFlags",{enumerable:!0,get:function(){return g.TraceFlags}});var h=n(98);Object.defineProperty(o,"createTraceState",{enumerable:!0,get:function(){return h.createTraceState}});var _=n(139);Object.defineProperty(o,"isSpanContextValid",{enumerable:!0,get:function(){return _.isSpanContextValid}}),Object.defineProperty(o,"isValidTraceId",{enumerable:!0,get:function(){return _.isValidTraceId}}),Object.defineProperty(o,"isValidSpanId",{enumerable:!0,get:function(){return _.isValidSpanId}});var y=n(476);Object.defineProperty(o,"INVALID_SPANID",{enumerable:!0,get:function(){return y.INVALID_SPANID}}),Object.defineProperty(o,"INVALID_TRACEID",{enumerable:!0,get:function(){return y.INVALID_TRACEID}}),Object.defineProperty(o,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return y.INVALID_SPAN_CONTEXT}});let v=n(67);Object.defineProperty(o,"context",{enumerable:!0,get:function(){return v.context}});let b=n(506);Object.defineProperty(o,"diag",{enumerable:!0,get:function(){return b.diag}});let m=n(886);Object.defineProperty(o,"metrics",{enumerable:!0,get:function(){return m.metrics}});let P=n(939);Object.defineProperty(o,"propagation",{enumerable:!0,get:function(){return P.propagation}});let R=n(845);Object.defineProperty(o,"trace",{enumerable:!0,get:function(){return R.trace}}),o.default={context:v.context,diag:b.diag,metrics:m.metrics,propagation:P.propagation,trace:R.trace}})(),e.exports=o})()},1943:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_SUFFIX:function(){return u},APP_DIR_ALIAS:function(){return j},CACHE_ONE_YEAR:function(){return m},DOT_NEXT_ALIAS:function(){return E},ESLINT_DEFAULT_DIRS:function(){return X},GSP_NO_RETURNED_VALUE:function(){return H},GSSP_COMPONENT_MEMBER_ERROR:function(){return B},GSSP_NO_RETURNED_VALUE:function(){return G},INSTRUMENTATION_HOOK_FILENAME:function(){return S},MIDDLEWARE_FILENAME:function(){return P},MIDDLEWARE_LOCATION_REGEXP:function(){return R},NEXT_BODY_SUFFIX:function(){return d},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return b},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return g},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return h},NEXT_CACHE_SOFT_TAGS_HEADER:function(){return p},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return v},NEXT_CACHE_TAGS_HEADER:function(){return f},NEXT_CACHE_TAG_MAX_ITEMS:function(){return _},NEXT_CACHE_TAG_MAX_LENGTH:function(){return y},NEXT_DATA_SUFFIX:function(){return s},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return n},NEXT_META_SUFFIX:function(){return c},NEXT_QUERY_PARAM_PREFIX:function(){return r},NON_STANDARD_NODE_ENV:function(){return V},PAGES_DIR_ALIAS:function(){return O},PRERENDER_REVALIDATE_HEADER:function(){return o},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return a},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return w},ROOT_DIR_ALIAS:function(){return T},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return A},RSC_ACTION_ENCRYPTION_ALIAS:function(){return C},RSC_ACTION_PROXY_ALIAS:function(){return N},RSC_ACTION_VALIDATE_ALIAS:function(){return M},RSC_MOD_REF_PROXY_ALIAS:function(){return x},RSC_PREFETCH_SUFFIX:function(){return l},RSC_SUFFIX:function(){return i},SERVER_PROPS_EXPORT_ERROR:function(){return F},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return D},SERVER_PROPS_SSG_CONFLICT:function(){return L},SERVER_RUNTIME:function(){return K},SSG_FALLBACK_EXPORT_ERROR:function(){return $},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return I},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return U},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return k},WEBPACK_LAYERS:function(){return W},WEBPACK_RESOURCE_QUERIES:function(){return Y}});let r="nxtP",n="nxtI",o="x-prerender-revalidate",a="x-prerender-revalidate-if-generated",l=".prefetch.rsc",i=".rsc",u=".action",s=".json",c=".meta",d=".body",f="x-next-cache-tags",p="x-next-cache-soft-tags",g="x-next-revalidated-tags",h="x-next-revalidate-tag-token",_=128,y=256,v=1024,b="_N_T_",m=31536e3,P="middleware",R=`(?:src/)?${P}`,S="instrumentation",O="private-next-pages",E="private-dot-next",T="private-next-root-dir",j="private-next-app-dir",x="next/dist/build/webpack/loaders/next-flight-loader/module-proxy",M="private-next-rsc-action-validate",N="private-next-rsc-server-reference",C="private-next-rsc-action-encryption",A="private-next-rsc-action-client-wrapper",w="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",I="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",D="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",L="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",U="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",F="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",H="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",G="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",k="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",B="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",V='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',$="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",X=["app","pages","components","lib","src"],K={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},z={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",api:"api",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",appMetadataRoute:"app-metadata-route",appRouteHandler:"app-route-handler"},W={...z,GROUP:{serverOnly:[z.reactServerComponents,z.actionBrowser,z.appMetadataRoute,z.appRouteHandler,z.instrument],clientOnly:[z.serverSideRendering,z.appPagesBrowser],nonClientServerTarget:[z.middleware,z.api],app:[z.reactServerComponents,z.actionBrowser,z.appMetadataRoute,z.appRouteHandler,z.serverSideRendering,z.appPagesBrowser,z.shared,z.instrument]}},Y={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},1354:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bgBlack:function(){return T},bgBlue:function(){return N},bgCyan:function(){return A},bgGreen:function(){return x},bgMagenta:function(){return C},bgRed:function(){return j},bgWhite:function(){return w},bgYellow:function(){return M},black:function(){return _},blue:function(){return m},bold:function(){return s},cyan:function(){return S},dim:function(){return c},gray:function(){return E},green:function(){return v},hidden:function(){return g},inverse:function(){return p},italic:function(){return d},magenta:function(){return P},purple:function(){return R},red:function(){return y},reset:function(){return u},strikethrough:function(){return h},underline:function(){return f},white:function(){return O},yellow:function(){return b}});let{env:n,stdout:o}=(null==(r=globalThis)?void 0:r.process)??{},a=n&&!n.NO_COLOR&&(n.FORCE_COLOR||(null==o?void 0:o.isTTY)&&!n.CI&&"dumb"!==n.TERM),l=(e,t,r,n)=>{let o=e.substring(0,n)+r,a=e.substring(n+t.length),i=a.indexOf(t);return~i?o+l(a,t,r,i):o+a},i=(e,t,r=e)=>a?n=>{let o=""+n,a=o.indexOf(t,e.length);return~a?e+l(o,t,r,a)+t:e+o+t}:String,u=a?e=>`\x1b[0m${e}\x1b[0m`:String,s=i("\x1b[1m","\x1b[22m","\x1b[22m\x1b[1m"),c=i("\x1b[2m","\x1b[22m","\x1b[22m\x1b[2m"),d=i("\x1b[3m","\x1b[23m"),f=i("\x1b[4m","\x1b[24m"),p=i("\x1b[7m","\x1b[27m"),g=i("\x1b[8m","\x1b[28m"),h=i("\x1b[9m","\x1b[29m"),_=i("\x1b[30m","\x1b[39m"),y=i("\x1b[31m","\x1b[39m"),v=i("\x1b[32m","\x1b[39m"),b=i("\x1b[33m","\x1b[39m"),m=i("\x1b[34m","\x1b[39m"),P=i("\x1b[35m","\x1b[39m"),R=i("\x1b[38;2;173;127;168m","\x1b[39m"),S=i("\x1b[36m","\x1b[39m"),O=i("\x1b[37m","\x1b[39m"),E=i("\x1b[90m","\x1b[39m"),T=i("\x1b[40m","\x1b[49m"),j=i("\x1b[41m","\x1b[49m"),x=i("\x1b[42m","\x1b[49m"),M=i("\x1b[43m","\x1b[49m"),N=i("\x1b[44m","\x1b[49m"),C=i("\x1b[45m","\x1b[49m"),A=i("\x1b[46m","\x1b[49m"),w=i("\x1b[47m","\x1b[49m")},8834:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getPathname:function(){return n},isFullStringUrl:function(){return o},parseUrl:function(){return a}});let r="http://n";function n(e){return new URL(e,r).pathname}function o(e){return/https?:\/\//.test(e)}function a(e){let t;try{t=new URL(e,r)}catch{}return t}},6278:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Postpone:function(){return d},createPostponedAbortSignal:function(){return y},createPrerenderState:function(){return u},formatDynamicAPIAccesses:function(){return h},markCurrentScopeAsDynamic:function(){return s},trackDynamicDataAccessed:function(){return c},trackDynamicFetch:function(){return f},usedDynamicAPIs:function(){return g}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(1159)),o=r(4789),a=r(4618),l=r(8834),i="function"==typeof n.default.unstable_postpone;function u(e){return{isDebugSkeleton:e,dynamicAccesses:[]}}function s(e,t){let r=(0,l.getPathname)(e.urlPathname);if(!e.isUnstableCacheCallback){if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}}function c(e,t){let r=(0,l.getPathname)(e.urlPathname);if(e.isUnstableCacheCallback)throw Error(`Route ${r} used "${t}" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "${t}" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}function d({reason:e,prerenderState:t,pathname:r}){p(t,e,r)}function f(e,t){e.prerenderState&&p(e.prerenderState,t,e.urlPathname)}function p(e,t,r){_();let o=`Route ${r} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;e.dynamicAccesses.push({stack:e.isDebugSkeleton?Error().stack:void 0,expression:t}),n.default.unstable_postpone(o)}function g(e){return e.dynamicAccesses.length>0}function h(e){return e.dynamicAccesses.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: +${t}`))}function _(){if(!i)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function y(e){_();let t=new AbortController;try{n.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}},5231:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRouter:function(){return o.default},ClientPageRoot:function(){return c.ClientPageRoot},LayoutRouter:function(){return a.default},NotFoundBoundary:function(){return p.NotFoundBoundary},Postpone:function(){return _.Postpone},RenderFromTemplateContext:function(){return l.default},actionAsyncStorage:function(){return s.actionAsyncStorage},createDynamicallyTrackedSearchParams:function(){return d.createDynamicallyTrackedSearchParams},createUntrackedSearchParams:function(){return d.createUntrackedSearchParams},decodeAction:function(){return n.decodeAction},decodeFormState:function(){return n.decodeFormState},decodeReply:function(){return n.decodeReply},patchFetch:function(){return m},preconnect:function(){return h.preconnect},preloadFont:function(){return h.preloadFont},preloadStyle:function(){return h.preloadStyle},renderToReadableStream:function(){return n.renderToReadableStream},requestAsyncStorage:function(){return u.requestAsyncStorage},serverHooks:function(){return f},staticGenerationAsyncStorage:function(){return i.staticGenerationAsyncStorage},taintObjectReference:function(){return y.taintObjectReference}});let n=r(1749),o=v(r(9943)),a=v(r(5106)),l=v(r(4892)),i=r(5869),u=r(4580),s=r(2934),c=r(3144),d=r(9181),f=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=b(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(n,a,l):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}(r(4789)),p=r(525),g=r(670);r(7922);let h=r(135),_=r(9257),y=r(526);function v(e){return e&&e.__esModule?e:{default:e}}function b(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(b=function(e){return e?r:t})(e)}function m(){return(0,g.patchFetch)({serverHooks:f,staticGenerationAsyncStorage:i.staticGenerationAsyncStorage})}},9257:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Postpone",{enumerable:!0,get:function(){return n.Postpone}});let n=r(6278)},135:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{preconnect:function(){return l},preloadFont:function(){return a},preloadStyle:function(){return o}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(7049));function o(e,t){let r={as:"style"};"string"==typeof t&&(r.crossOrigin=t),n.default.preload(e,r)}function a(e,t,r){let o={as:"font",type:t};"string"==typeof r&&(o.crossOrigin=r),n.default.preload(e,o)}function l(e,t){n.default.preconnect(e,"string"==typeof t?{crossOrigin:t}:void 0)}},526:(e,t,r)=>{"use strict";function n(){throw Error("Taint can only be used with the taint flag.")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{taintObjectReference:function(){return o},taintUniqueValue:function(){return a}}),r(1159);let o=n,a=n},8716:(e,t)=>{"use strict";var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},3191:(e,t,r)=>{"use strict";e.exports=r(399)},7049:(e,t,r)=>{"use strict";e.exports=r(3191).vendored["react-rsc"].ReactDOM},9510:(e,t,r)=>{"use strict";e.exports=r(3191).vendored["react-rsc"].ReactJsxRuntime},1749:(e,t,r)=>{"use strict";e.exports=r(3191).vendored["react-rsc"].ReactServerDOMWebpackServerEdge},1159:(e,t,r)=>{"use strict";e.exports=r(3191).vendored["react-rsc"].React},4300:(e,t)=>{"use strict";function r(e){if(!e.body)return[e,e];let[t,r]=e.body.tee(),n=new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers});Object.defineProperty(n,"url",{value:e.url});let o=new Response(r,{status:e.status,statusText:e.statusText,headers:e.headers});return Object.defineProperty(o,"url",{value:e.url}),[n,o]}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"cloneResponse",{enumerable:!0,get:function(){return r}})},9585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createDedupeFetch",{enumerable:!0,get:function(){return l}});let n=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var i=o?Object.getOwnPropertyDescriptor(e,l):null;i&&(i.get||i.set)?Object.defineProperty(n,l,i):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n}(r(1159)),o=r(4300);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function l(e){let t=n.cache(e=>[]);return function(r,n){let a,l;if(n&&n.signal)return e(r,n);if("string"!=typeof r||n){let t="string"==typeof r||r instanceof URL?new Request(r,n):r;if("GET"!==t.method&&"HEAD"!==t.method||t.keepalive)return e(r,n);l=JSON.stringify([t.method,Array.from(t.headers.entries()),t.mode,t.redirect,t.credentials,t.referrer,t.referrerPolicy,t.integrity]),a=t.url}else l='["GET",[],null,"follow",null,null,null,null]',a=r;let i=t(a);for(let e=0,t=i.length;e{let t=i[e][2];if(!t)throw Error("No cached response");let[r,n]=(0,o.cloneResponse)(t);return i[e][2]=n,r})}let u=new AbortController,s=e(r,{...n,signal:u.signal}),c=[l,s,null];return i.push(c),s.then(e=>{let[t,r]=(0,o.cloneResponse)(e);return c[2]=r,t})}}},670:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addImplicitTags:function(){return g},patchFetch:function(){return _},validateRevalidate:function(){return d},validateTags:function(){return f}});let n=r(1376),o=r(4994),a=r(1943),l=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=c(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(n,a,l):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}(r(8839)),i=r(6278),u=r(9585),s=r(4300);function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(c=function(e){return e?r:t})(e)}function d(e,t){try{let r;if(!1===e)r=e;else if("number"==typeof e&&!isNaN(e)&&e>-1)r=e;else if(void 0!==e)throw Error(`Invalid revalidate value "${e}" on "${t}", must be a non-negative number or "false"`);return r}catch(e){if(e instanceof Error&&e.message.includes("Invalid revalidate"))throw e;return}}function f(e,t){let r=[],n=[];for(let o=0;oa.NEXT_CACHE_TAG_MAX_LENGTH?n.push({tag:l,reason:`exceeded max length of ${a.NEXT_CACHE_TAG_MAX_LENGTH}`}):r.push(l),r.length>a.NEXT_CACHE_TAG_MAX_ITEMS){console.warn(`Warning: exceeded max tag count for ${t}, dropped tags:`,e.slice(o).join(", "));break}}if(n.length>0)for(let{tag:e,reason:r}of(console.warn(`Warning: invalid tags passed to ${t}: `),n))console.log(`tag: "${e}" ${r}`);return r}let p=e=>{let t=["/layout"];if(e.startsWith("/")){let r=e.split("/");for(let e=1;e{var p,_;let y;try{(y=new URL(u instanceof Request?u.url:u)).username="",y.password=""}catch{y=void 0}let v=(null==y?void 0:y.href)??"",b=Date.now(),m=(null==c?void 0:null==(p=c.method)?void 0:p.toUpperCase())||"GET",P=(null==c?void 0:null==(_=c.next)?void 0:_.internal)===!0,R="1"===process.env.NEXT_OTEL_FETCH_DISABLED;return(0,o.getTracer)().trace(P?n.NextNodeServerSpan.internalFetch:n.AppRenderSpan.fetch,{hideSpan:R,kind:o.SpanKind.CLIENT,spanName:["fetch",m,v].filter(Boolean).join(" "),attributes:{"http.url":v,"http.method":m,"net.peer.name":null==y?void 0:y.hostname,"net.peer.port":(null==y?void 0:y.port)||void 0}},async()=>{var n;let o,p,_;if(P)return e(u,c);let y=r.getStore();if(!y||y.isDraftMode)return e(u,c);let m=u&&"object"==typeof u&&"string"==typeof u.method,R=e=>(null==c?void 0:c[e])||(m?u[e]:null),S=e=>{var t,r,n;return void 0!==(null==c?void 0:null==(t=c.next)?void 0:t[e])?null==c?void 0:null==(r=c.next)?void 0:r[e]:m?null==(n=u.next)?void 0:n[e]:void 0},O=S("revalidate"),E=f(S("tags")||[],`fetch ${u.toString()}`);if(Array.isArray(E))for(let e of(y.tags||(y.tags=[]),E))y.tags.includes(e)||y.tags.push(e);let T=g(y),j=y.fetchCache,x=!!y.isUnstableNoStore,M=R("cache"),N="";"string"==typeof M&&void 0!==O&&(m&&"default"===M||l.warn(`fetch for ${v} on ${y.urlPathname} specified "cache: ${M}" and "revalidate: ${O}", only one should be specified.`),M=void 0),"force-cache"===M?O=!1:("no-cache"===M||"no-store"===M||"force-no-store"===j||"only-no-store"===j)&&(O=0),("no-cache"===M||"no-store"===M)&&(N=`cache: ${M}`),_=d(O,y.urlPathname);let C=R("headers"),A="function"==typeof(null==C?void 0:C.get)?C:new Headers(C||{}),w=A.get("authorization")||A.get("cookie"),I=!["get","head"].includes((null==(n=R("method"))?void 0:n.toLowerCase())||"get"),D=(w||I)&&0===y.revalidate;switch(j){case"force-no-store":N="fetchCache = force-no-store";break;case"only-no-store":if("force-cache"===M||void 0!==_&&(!1===_||_>0))throw Error(`cache: 'force-cache' used on fetch for ${v} with 'export const fetchCache = 'only-no-store'`);N="fetchCache = only-no-store";break;case"only-cache":if("no-store"===M)throw Error(`cache: 'no-store' used on fetch for ${v} with 'export const fetchCache = 'only-cache'`);break;case"force-cache":(void 0===O||0===O)&&(N="fetchCache = force-cache",_=!1)}void 0===_?"default-cache"===j?(_=!1,N="fetchCache = default-cache"):D?(_=0,N="auto no cache"):"default-no-store"===j?(_=0,N="fetchCache = default-no-store"):x?(_=0,N="noStore call"):(N="auto cache",_="boolean"!=typeof y.revalidate&&void 0!==y.revalidate&&y.revalidate):N||(N=`revalidate: ${_}`),y.forceStatic&&0===_||D||void 0!==y.revalidate&&("number"!=typeof _||!1!==y.revalidate&&("number"!=typeof y.revalidate||!(_0||!1===_;if(y.incrementalCache&&L)try{o=await y.incrementalCache.fetchCacheKey(v,m?u:c)}catch(e){console.error("Failed to generate cache key for",u)}let U=y.nextFetchId??1;y.nextFetchId=U+1;let F="number"!=typeof _?a.CACHE_ONE_YEAR:_,H=async(t,r)=>{let n=["cache","credentials","headers","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","window","duplex",...t?[]:["signal"]];if(m){let e=u,t={body:e._ogBody||e.body};for(let r of n)t[r]=e[r];u=new Request(e.url,t)}else if(c){let{_ogBody:e,body:r,signal:n,...o}=c;c={...o,body:e||r,signal:t?void 0:n}}let a={...c,next:{...null==c?void 0:c.next,fetchType:"origin",fetchIdx:U}};return e(u,a).then(async e=>{if(t||h(y,{start:b,url:v,cacheReason:r||N,cacheStatus:0===_||r?"skip":"miss",status:e.status,method:a.method||"GET"}),200===e.status&&y.incrementalCache&&o&&L){let t=Buffer.from(await e.arrayBuffer());try{await y.incrementalCache.set(o,{kind:"FETCH",data:{headers:Object.fromEntries(e.headers.entries()),body:t.toString("base64"),status:e.status,url:e.url},revalidate:F},{fetchCache:!0,revalidate:_,fetchUrl:v,fetchIdx:U,tags:E})}catch(e){console.warn("Failed to set fetch cache",u,e)}let r=new Response(t,{headers:new Headers(e.headers),status:e.status});return Object.defineProperty(r,"url",{value:e.url}),r}return e})},G=()=>Promise.resolve(),k=!1;if(o&&y.incrementalCache){G=await y.incrementalCache.lock(o);let e=y.isOnDemandRevalidate?null:await y.incrementalCache.get(o,{kindHint:"fetch",revalidate:_,fetchUrl:v,fetchIdx:U,tags:E,softTags:T});if(e?await G():p="cache-control: no-cache (hard refresh)",(null==e?void 0:e.value)&&"FETCH"===e.value.kind){if(y.isRevalidate&&e.isStale)k=!0;else{if(e.isStale&&(y.pendingRevalidates??={},!y.pendingRevalidates[o])){let e=H(!0).then(async e=>({body:await e.arrayBuffer(),headers:e.headers,status:e.status,statusText:e.statusText})).finally(()=>{y.pendingRevalidates??={},delete y.pendingRevalidates[o||""]});e.catch(console.error),y.pendingRevalidates[o]=e}let t=e.value.data;h(y,{start:b,url:v,cacheReason:N,cacheStatus:"hit",status:t.status||200,method:(null==c?void 0:c.method)||"GET"});let r=new Response(Buffer.from(t.body,"base64"),{headers:t.headers,status:t.status});return Object.defineProperty(r,"url",{value:e.value.data.url}),r}}}if(y.isStaticGeneration&&c&&"object"==typeof c){let{cache:e}=c;if(!y.forceStatic&&"no-store"===e){let e=`no-store fetch ${u}${y.urlPathname?` ${y.urlPathname}`:""}`;(0,i.trackDynamicFetch)(y,e),y.revalidate=0;let r=new t(e);throw y.dynamicUsageErr=r,y.dynamicUsageDescription=e,r}let r="next"in c,{next:n={}}=c;if("number"==typeof n.revalidate&&(void 0===y.revalidate||"number"==typeof y.revalidate&&n.revalidate{let t=e[0];return{body:await t.arrayBuffer(),headers:t.headers,status:t.status,statusText:t.statusText}}).finally(()=>{if(o){var e;(null==(e=y.pendingRevalidates)?void 0:e[o])&&delete y.pendingRevalidates[o]}})).catch(()=>{}),y.pendingRevalidates[o]=e,t.then(e=>e[1])}})};return u.__nextPatched=!0,u.__nextGetStaticStore=()=>r,u._nextOriginalFetch=e,u}(r,e)}},1376:(e,t)=>{"use strict";var r,n,o,a,l,i,u,s,c,d,f,p;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRenderSpan:function(){return u},AppRouteRouteHandlersSpan:function(){return d},BaseServerSpan:function(){return r},LoadComponentsSpan:function(){return n},LogSpanAllowList:function(){return h},MiddlewareSpan:function(){return p},NextNodeServerSpan:function(){return a},NextServerSpan:function(){return o},NextVanillaSpanAllowlist:function(){return g},NodeSpan:function(){return c},RenderSpan:function(){return i},ResolveMetadataSpan:function(){return f},RouterSpan:function(){return s},StartServerSpan:function(){return l}}),function(e){e.handleRequest="BaseServer.handleRequest",e.run="BaseServer.run",e.pipe="BaseServer.pipe",e.getStaticHTML="BaseServer.getStaticHTML",e.render="BaseServer.render",e.renderToResponseWithComponents="BaseServer.renderToResponseWithComponents",e.renderToResponse="BaseServer.renderToResponse",e.renderToHTML="BaseServer.renderToHTML",e.renderError="BaseServer.renderError",e.renderErrorToResponse="BaseServer.renderErrorToResponse",e.renderErrorToHTML="BaseServer.renderErrorToHTML",e.render404="BaseServer.render404"}(r||(r={})),function(e){e.loadDefaultErrorComponents="LoadComponents.loadDefaultErrorComponents",e.loadComponents="LoadComponents.loadComponents"}(n||(n={})),function(e){e.getRequestHandler="NextServer.getRequestHandler",e.getServer="NextServer.getServer",e.getServerRequestHandler="NextServer.getServerRequestHandler",e.createServer="createServer.createServer"}(o||(o={})),function(e){e.compression="NextNodeServer.compression",e.getBuildId="NextNodeServer.getBuildId",e.createComponentTree="NextNodeServer.createComponentTree",e.clientComponentLoading="NextNodeServer.clientComponentLoading",e.getLayoutOrPageModule="NextNodeServer.getLayoutOrPageModule",e.generateStaticRoutes="NextNodeServer.generateStaticRoutes",e.generateFsStaticRoutes="NextNodeServer.generateFsStaticRoutes",e.generatePublicRoutes="NextNodeServer.generatePublicRoutes",e.generateImageRoutes="NextNodeServer.generateImageRoutes.route",e.sendRenderResult="NextNodeServer.sendRenderResult",e.proxyRequest="NextNodeServer.proxyRequest",e.runApi="NextNodeServer.runApi",e.render="NextNodeServer.render",e.renderHTML="NextNodeServer.renderHTML",e.imageOptimizer="NextNodeServer.imageOptimizer",e.getPagePath="NextNodeServer.getPagePath",e.getRoutesManifest="NextNodeServer.getRoutesManifest",e.findPageComponents="NextNodeServer.findPageComponents",e.getFontManifest="NextNodeServer.getFontManifest",e.getServerComponentManifest="NextNodeServer.getServerComponentManifest",e.getRequestHandler="NextNodeServer.getRequestHandler",e.renderToHTML="NextNodeServer.renderToHTML",e.renderError="NextNodeServer.renderError",e.renderErrorToHTML="NextNodeServer.renderErrorToHTML",e.render404="NextNodeServer.render404",e.startResponse="NextNodeServer.startResponse",e.route="route",e.onProxyReq="onProxyReq",e.apiResolver="apiResolver",e.internalFetch="internalFetch"}(a||(a={})),(l||(l={})).startServer="startServer.startServer",function(e){e.getServerSideProps="Render.getServerSideProps",e.getStaticProps="Render.getStaticProps",e.renderToString="Render.renderToString",e.renderDocument="Render.renderDocument",e.createBodyResult="Render.createBodyResult"}(i||(i={})),function(e){e.renderToString="AppRender.renderToString",e.renderToReadableStream="AppRender.renderToReadableStream",e.getBodyResult="AppRender.getBodyResult",e.fetch="AppRender.fetch"}(u||(u={})),(s||(s={})).executeRoute="Router.executeRoute",(c||(c={})).runHandler="Node.runHandler",(d||(d={})).runHandler="AppRouteRouteHandlers.runHandler",function(e){e.generateMetadata="ResolveMetadata.generateMetadata",e.generateViewport="ResolveMetadata.generateViewport"}(f||(f={})),(p||(p={})).execute="Middleware.execute";let g=["Middleware.execute","BaseServer.handleRequest","Render.getServerSideProps","Render.getStaticProps","AppRender.fetch","AppRender.getBodyResult","Render.renderDocument","Node.runHandler","AppRouteRouteHandlers.runHandler","ResolveMetadata.generateMetadata","ResolveMetadata.generateViewport","NextNodeServer.createComponentTree","NextNodeServer.findPageComponents","NextNodeServer.getLayoutOrPageModule","NextNodeServer.startResponse","NextNodeServer.clientComponentLoading"],h=["NextNodeServer.findPageComponents","NextNodeServer.createComponentTree","NextNodeServer.clientComponentLoading"]},4994:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{SpanKind:function(){return s},SpanStatusCode:function(){return u},getTracer:function(){return v}});let o=r(1376);try{n=r(7482)}catch(e){n=r(7482)}let{context:a,propagation:l,trace:i,SpanStatusCode:u,SpanKind:s,ROOT_CONTEXT:c}=n,d=e=>null!==e&&"object"==typeof e&&"function"==typeof e.then,f=(e,t)=>{(null==t?void 0:t.bubble)===!0?e.setAttribute("next.bubble",!0):(t&&e.recordException(t),e.setStatus({code:u.ERROR,message:null==t?void 0:t.message})),e.end()},p=new Map,g=n.createContextKey("next.rootSpanId"),h=0,_=()=>h++;class y{getTracerInstance(){return i.getTracer("next.js","0.0.1")}getContext(){return a}getActiveScopeSpan(){return i.getSpan(null==a?void 0:a.active())}withPropagatedContext(e,t,r){let n=a.active();if(i.getSpanContext(n))return t();let o=l.extract(n,e,r);return a.with(o,t)}trace(...e){var t;let[r,n,l]=e,{fn:u,options:s}="function"==typeof n?{fn:n,options:{}}:{fn:l,options:{...n}},h=s.spanName??r;if(!o.NextVanillaSpanAllowlist.includes(r)&&"1"!==process.env.NEXT_OTEL_VERBOSE||s.hideSpan)return u();let y=this.getSpanContext((null==s?void 0:s.parentSpan)??this.getActiveScopeSpan()),v=!1;y?(null==(t=i.getSpanContext(y))?void 0:t.isRemote)&&(v=!0):(y=(null==a?void 0:a.active())??c,v=!0);let b=_();return s.attributes={"next.span_name":h,"next.span_type":r,...s.attributes},a.with(y.setValue(g,b),()=>this.getTracerInstance().startActiveSpan(h,s,e=>{let t="performance"in globalThis?globalThis.performance.now():void 0,n=()=>{p.delete(b),t&&process.env.NEXT_OTEL_PERFORMANCE_PREFIX&&o.LogSpanAllowList.includes(r||"")&&performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(r.split(".").pop()||"").replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}`,{start:t,end:performance.now()})};v&&p.set(b,new Map(Object.entries(s.attributes??{})));try{if(u.length>1)return u(e,t=>f(e,t));let t=u(e);if(d(t))return t.then(t=>(e.end(),t)).catch(t=>{throw f(e,t),t}).finally(n);return e.end(),n(),t}catch(t){throw f(e,t),n(),t}}))}wrap(...e){let t=this,[r,n,l]=3===e.length?e:[e[0],{},e[1]];return o.NextVanillaSpanAllowlist.includes(r)||"1"===process.env.NEXT_OTEL_VERBOSE?function(){let e=n;"function"==typeof e&&"function"==typeof l&&(e=e.apply(this,arguments));let o=arguments.length-1,i=arguments[o];if("function"!=typeof i)return t.trace(r,e,()=>l.apply(this,arguments));{let n=t.getContext().bind(a.active(),i);return t.trace(r,e,(e,t)=>(arguments[o]=function(e){return null==t||t(e),n.apply(this,arguments)},l.apply(this,arguments)))}}:l}startSpan(...e){let[t,r]=e,n=this.getSpanContext((null==r?void 0:r.parentSpan)??this.getActiveScopeSpan());return this.getTracerInstance().startSpan(t,r,n)}getSpanContext(e){return e?i.setSpan(a.active(),e):void 0}getRootSpanAttributes(){let e=a.active().getValue(g);return p.get(e)}}let v=(()=>{let e=new y;return()=>e})()},8238:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},8285:(e,t,r)=>{"use strict";function n(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}r.r(t),r.d(t,{_:()=>n,_class_private_field_loose_base:()=>n})},8817:(e,t,r)=>{"use strict";r.r(t),r.d(t,{_:()=>o,_class_private_field_loose_key:()=>o});var n=0;function o(e){return"__private_"+n+++"_"+e}},1174:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n,_interop_require_default:()=>n})},8374:(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var i=a?Object.getOwnPropertyDescriptor(e,l):null;i&&(i.get||i.set)?Object.defineProperty(o,l,i):o[l]=e[l]}return o.default=e,r&&r.set(e,o),o}r.r(t),r.d(t,{_:()=>o,_interop_require_wildcard:()=>o})},3370:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n,_interop_require_default:()=>n})}}; \ No newline at end of file diff --git a/site/.next/server/chunks/font-manifest.json b/site/.next/server/chunks/font-manifest.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/site/.next/server/chunks/font-manifest.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/site/.next/server/font-manifest.json b/site/.next/server/font-manifest.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/site/.next/server/font-manifest.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/site/.next/server/functions-config-manifest.json b/site/.next/server/functions-config-manifest.json new file mode 100644 index 0000000..996cd78 --- /dev/null +++ b/site/.next/server/functions-config-manifest.json @@ -0,0 +1 @@ +{"version":1,"functions":{}} \ No newline at end of file diff --git a/site/.next/server/interception-route-rewrite-manifest.js b/site/.next/server/interception-route-rewrite-manifest.js new file mode 100644 index 0000000..24f77ba --- /dev/null +++ b/site/.next/server/interception-route-rewrite-manifest.js @@ -0,0 +1 @@ +self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]"; \ No newline at end of file diff --git a/site/.next/server/middleware-build-manifest.js b/site/.next/server/middleware-build-manifest.js new file mode 100644 index 0000000..80fd18a --- /dev/null +++ b/site/.next/server/middleware-build-manifest.js @@ -0,0 +1 @@ +self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-c81f7fd28659d64f.js","static/chunks/fd9d1056-1aae0987937804d3.js","static/chunks/117-9e579d196b4a8b27.js","static/chunks/main-app-a2993c9a226c8885.js"],pages:{"/_app":["static/chunks/webpack-c81f7fd28659d64f.js","static/chunks/framework-f66176bb897dc684.js","static/chunks/main-4542ef43ae2cfc86.js","static/chunks/pages/_app-72b849fbd24ac258.js"],"/_error":["static/chunks/webpack-c81f7fd28659d64f.js","static/chunks/framework-f66176bb897dc684.js","static/chunks/main-4542ef43ae2cfc86.js","static/chunks/pages/_error-7ba65e1336b92748.js"]},ampFirstPages:[]},self.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"]; \ No newline at end of file diff --git a/site/.next/server/middleware-manifest.json b/site/.next/server/middleware-manifest.json new file mode 100644 index 0000000..33872a3 --- /dev/null +++ b/site/.next/server/middleware-manifest.json @@ -0,0 +1,6 @@ +{ + "version": 3, + "middleware": {}, + "functions": {}, + "sortedMiddleware": [] +} \ No newline at end of file diff --git a/site/.next/server/middleware-react-loadable-manifest.js b/site/.next/server/middleware-react-loadable-manifest.js new file mode 100644 index 0000000..170749e --- /dev/null +++ b/site/.next/server/middleware-react-loadable-manifest.js @@ -0,0 +1 @@ +self.__REACT_LOADABLE_MANIFEST="{}"; \ No newline at end of file diff --git a/site/.next/server/next-font-manifest.js b/site/.next/server/next-font-manifest.js new file mode 100644 index 0000000..8267a50 --- /dev/null +++ b/site/.next/server/next-font-manifest.js @@ -0,0 +1 @@ +self.__NEXT_FONT_MANIFEST='{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}'; \ No newline at end of file diff --git a/site/.next/server/next-font-manifest.json b/site/.next/server/next-font-manifest.json new file mode 100644 index 0000000..25f78e7 --- /dev/null +++ b/site/.next/server/next-font-manifest.json @@ -0,0 +1 @@ +{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false} \ No newline at end of file diff --git a/site/.next/server/pages-manifest.json b/site/.next/server/pages-manifest.json new file mode 100644 index 0000000..f7c2e89 --- /dev/null +++ b/site/.next/server/pages-manifest.json @@ -0,0 +1 @@ +{"/_app":"pages/_app.js","/_error":"pages/_error.js","/_document":"pages/_document.js","/404":"pages/404.html"} \ No newline at end of file diff --git a/site/.next/server/pages/404.html b/site/.next/server/pages/404.html new file mode 100644 index 0000000..b9d3e96 --- /dev/null +++ b/site/.next/server/pages/404.html @@ -0,0 +1 @@ +404: This page could not be found.Uno Click

404

This page could not be found.

\ No newline at end of file diff --git a/site/.next/server/pages/500.html b/site/.next/server/pages/500.html new file mode 100644 index 0000000..b31eae2 --- /dev/null +++ b/site/.next/server/pages/500.html @@ -0,0 +1 @@ +500: Internal Server Error

500

Internal Server Error.

\ No newline at end of file diff --git a/site/.next/server/pages/_app.js b/site/.next/server/pages/_app.js new file mode 100644 index 0000000..df07b84 --- /dev/null +++ b/site/.next/server/pages/_app.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=888,e.ids=[888],e.modules={8141:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(167),o=r(997),i=n._(r(6689)),u=r(5782);async function s(e){let{Component:t,ctx:r}=e;return{pageProps:await (0,u.loadGetInitialProps)(t,r)}}class a extends i.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,o.jsx)(e,{...t})}}a.origGetInitialProps=s,a.getInitialProps=s,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5782:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return g},MiddlewareNotFoundError:function(){return E},MissingStaticPage:function(){return y},NormalizeError:function(){return m},PageNotFoundError:function(){return P},SP:function(){return d},ST:function(){return p},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return a},getLocationOrigin:function(){return u},getURL:function(){return s},isAbsoluteUrl:function(){return i},isResSent:function(){return c},loadGetInitialProps:function(){return f},normalizeRepeatedSlashes:function(){return l},stringifyError:function(){return x}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),i=0;io.test(e);function u(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function s(){let{href:e}=window.location,t=u();return e.substring(t.length)}function a(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function c(e){return e.finished||e.headersSent}function l(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function f(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await f(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&c(r))return n;if(!n)throw Error('"'+a(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.');return n}let d="undefined"!=typeof performance,p=d&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class m extends Error{}class P extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class y extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class E extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function x(e){return JSON.stringify({message:e.message,stack:e.stack})}},6689:e=>{e.exports=require("react")},997:e=>{e.exports=require("react/jsx-runtime")},167:(e,t)=>{t._=t._interop_require_default=function(e){return e&&e.__esModule?e:{default:e}}}};var t=require("../webpack-runtime.js");t.C(e);var r=t(t.s=8141);module.exports=r})(); \ No newline at end of file diff --git a/site/.next/server/pages/_app.js.nft.json b/site/.next/server/pages/_app.js.nft.json new file mode 100644 index 0000000..f4a2132 --- /dev/null +++ b/site/.next/server/pages/_app.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../node_modules/next/dist/pages/_app.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../package.json","../../package.json","../webpack-runtime.js"]} \ No newline at end of file diff --git a/site/.next/server/pages/_document.js b/site/.next/server/pages/_document.js new file mode 100644 index 0000000..445c33f --- /dev/null +++ b/site/.next/server/pages/_document.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=660,e.ids=[660],e.modules={2785:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},6689:e=>{e.exports=require("react")},997:e=>{e.exports=require("react/jsx-runtime")},5315:e=>{e.exports=require("path")}};var r=require("../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[682],()=>s(1682));module.exports=t})(); \ No newline at end of file diff --git a/site/.next/server/pages/_document.js.nft.json b/site/.next/server/pages/_document.js.nft.json new file mode 100644 index 0000000..0f53100 --- /dev/null +++ b/site/.next/server/pages/_document.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/compiled/node-html-parser/index.js","../../../node_modules/next/dist/compiled/node-html-parser/package.json","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/pages/_document.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../../package.json","../../package.json","../chunks/682.js","../webpack-runtime.js"]} \ No newline at end of file diff --git a/site/.next/server/pages/_error.js b/site/.next/server/pages/_error.js new file mode 100644 index 0000000..b39a7a6 --- /dev/null +++ b/site/.next/server/pages/_error.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=820,e.ids=[820,660],e.modules={1323:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},6051:(e,t,r)=>{r.r(t),r.d(t,{config:()=>h,default:()=>p,getServerSideProps:()=>g,getStaticPaths:()=>f,getStaticProps:()=>c,reportWebVitals:()=>y,routeModule:()=>v,unstable_getServerProps:()=>P,unstable_getServerSideProps:()=>x,unstable_getStaticParams:()=>_,unstable_getStaticPaths:()=>m,unstable_getStaticProps:()=>b});var n=r(7093),o=r(5244),l=r(1323),a=r(1682),i=r.n(a),u=r(8141),d=r.n(u),s=r(8529);let p=(0,l.l)(s,"default"),c=(0,l.l)(s,"getStaticProps"),f=(0,l.l)(s,"getStaticPaths"),g=(0,l.l)(s,"getServerSideProps"),h=(0,l.l)(s,"config"),y=(0,l.l)(s,"reportWebVitals"),b=(0,l.l)(s,"unstable_getStaticProps"),m=(0,l.l)(s,"unstable_getStaticPaths"),_=(0,l.l)(s,"unstable_getStaticParams"),P=(0,l.l)(s,"unstable_getServerProps"),x=(0,l.l)(s,"unstable_getServerSideProps"),v=new n.PagesRouteModule({definition:{kind:o.x.PAGES,page:"/_error",pathname:"/_error",bundlePath:"",filename:""},components:{App:d(),Document:i()},userland:s})},8141:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let n=r(167),o=r(997),l=n._(r(6689)),a=r(5782);async function i(e){let{Component:t,ctx:r}=e;return{pageProps:await (0,a.loadGetInitialProps)(t,r)}}class u extends l.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,o.jsx)(e,{...t})}}u.origGetInitialProps=i,u.getInitialProps=i,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8529:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let n=r(167),o=r(997),l=n._(r(6689)),a=n._(r(494)),i={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function u(e){let{res:t,err:r}=e;return{statusCode:t&&t.statusCode?t.statusCode:r?r.statusCode:404}}let d={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{lineHeight:"48px"},h1:{display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h2:{fontSize:14,fontWeight:400,lineHeight:"28px"},wrap:{display:"inline-block"}};class s extends l.default.Component{render(){let{statusCode:e,withDarkMode:t=!0}=this.props,r=this.props.title||i[e]||"An unexpected error has occurred";return(0,o.jsxs)("div",{style:d.error,children:[(0,o.jsx)(a.default,{children:(0,o.jsx)("title",{children:e?e+": "+r:"Application error: a client-side exception has occurred"})}),(0,o.jsxs)("div",{style:d.desc,children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}"+(t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":"")}}),e?(0,o.jsx)("h1",{className:"next-error-h1",style:d.h1,children:e}):null,(0,o.jsx)("div",{style:d.wrap,children:(0,o.jsxs)("h2",{style:d.h2,children:[this.props.title||e?r:(0,o.jsx)(o.Fragment,{children:"Application error: a client-side exception has occurred (see the browser console for more information)"}),"."]})})]})]})}}s.displayName="ErrorPage",s.getInitialProps=u,s.origGetInitialProps=u,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8579:(e,t)=>{function r(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return r}})},494:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return h},defaultHead:function(){return p}});let n=r(167),o=r(8760),l=r(997),a=o._(r(6689)),i=n._(r(3657)),u=r(8039),d=r(1988),s=r(8579);function p(e){void 0===e&&(e=!1);let t=[(0,l.jsx)("meta",{charSet:"utf-8"})];return e||t.push((0,l.jsx)("meta",{name:"viewport",content:"width=device-width"})),t}function c(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===a.default.Fragment?e.concat(a.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}r(9784);let f=["name","httpEquiv","charSet","itemProp"];function g(e,t){let{inAmpMode:r}=t;return e.reduce(c,[]).reverse().concat(p(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return o=>{let l=!0,a=!1;if(o.key&&"number"!=typeof o.key&&o.key.indexOf("$")>0){a=!0;let t=o.key.slice(o.key.indexOf("$")+1);e.has(t)?l=!1:e.add(t)}switch(o.type){case"title":case"base":t.has(o.type)?l=!1:t.add(o.type);break;case"meta":for(let e=0,t=f.length;e{let n=e.key||t;if(!r&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,a.default.cloneElement(e,t)}return a.default.cloneElement(e,{key:n})})}let h=function(e){let{children:t}=e,r=(0,a.useContext)(u.AmpStateContext),n=(0,a.useContext)(d.HeadManagerContext);return(0,l.jsx)(i.default,{reduceComponentsToState:g,headManager:n,inAmpMode:(0,s.isInAmpMode)(r),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3657:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(6689),o=()=>{},l=()=>{};function a(e){var t;let{headManager:r,reduceComponentsToState:a}=e;function i(){if(r&&r.mountedInstances){let t=n.Children.toArray(Array.from(r.mountedInstances).filter(Boolean));r.updateHead(a(t,e))}}return null==r||null==(t=r.mountedInstances)||t.add(e.children),i(),o(()=>{var t;return null==r||null==(t=r.mountedInstances)||t.add(e.children),()=>{var t;null==r||null==(t=r.mountedInstances)||t.delete(e.children)}}),o(()=>(r&&(r._pendingUpdate=i),()=>{r&&(r._pendingUpdate=i)})),l(()=>(r&&r._pendingUpdate&&(r._pendingUpdate(),r._pendingUpdate=null),()=>{r&&r._pendingUpdate&&(r._pendingUpdate(),r._pendingUpdate=null)})),null}},9784:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},5244:(e,t)=>{var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},8039:(e,t,r)=>{e.exports=r(7093).vendored.contexts.AmpContext},1988:(e,t,r)=>{e.exports=r(7093).vendored.contexts.HeadManagerContext},2785:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},6689:e=>{e.exports=require("react")},997:e=>{e.exports=require("react/jsx-runtime")},5315:e=>{e.exports=require("path")},8760:(e,t)=>{function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}t._=t._interop_require_wildcard=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=l?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(o,a,i):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o}}};var t=require("../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[682],()=>r(6051));module.exports=n})(); \ No newline at end of file diff --git a/site/.next/server/pages/_error.js.nft.json b/site/.next/server/pages/_error.js.nft.json new file mode 100644 index 0000000..abe34ef --- /dev/null +++ b/site/.next/server/pages/_error.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/compiled/node-html-parser/index.js","../../../node_modules/next/dist/compiled/node-html-parser/package.json","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../package.json","../chunks/682.js","../webpack-runtime.js"]} \ No newline at end of file diff --git a/site/.next/server/server-reference-manifest.js b/site/.next/server/server-reference-manifest.js new file mode 100644 index 0000000..3ca5dc5 --- /dev/null +++ b/site/.next/server/server-reference-manifest.js @@ -0,0 +1 @@ +self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}" \ No newline at end of file diff --git a/site/.next/server/server-reference-manifest.json b/site/.next/server/server-reference-manifest.json new file mode 100644 index 0000000..9e92cf6 --- /dev/null +++ b/site/.next/server/server-reference-manifest.json @@ -0,0 +1 @@ +{"node":{},"edge":{},"encryptionKey":"nYMxoghgKItaY8mukH6QJp27Y0t4pzgGnx9TV7L48ys="} \ No newline at end of file diff --git a/site/.next/server/webpack-runtime.js b/site/.next/server/webpack-runtime.js new file mode 100644 index 0000000..fdf08bd --- /dev/null +++ b/site/.next/server/webpack-runtime.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={},r={};function t(o){var n=r[o];if(void 0!==n)return n.exports;var a=r[o]={exports:{}},u=!0;try{e[o](a,a.exports,t),u=!1}finally{u&&delete r[o]}return a.exports}t.m=e,t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},(()=>{var e,r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;t.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);t.r(a);var u={};e=e||[null,r({}),r([]),r(r)];for(var f=2&n&&o;"object"==typeof f&&!~e.indexOf(f);f=r(f))Object.getOwnPropertyNames(f).forEach(e=>u[e]=()=>o[e]);return u.default=()=>o,t.d(a,u),a}})(),t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.f={},t.e=e=>Promise.all(Object.keys(t.f).reduce((r,o)=>(t.f[o](e,r),r),[])),t.u=e=>""+e+".js",t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.X=(e,r,o)=>{var n=r;o||(r=e,o=()=>t(t.s=n)),r.map(t.e,t);var a=o();return void 0===a?e:a},(()=>{var e={658:1},r=r=>{var o=r.modules,n=r.ids,a=r.runtime;for(var u in o)t.o(o,u)&&(t.m[u]=o[u]);a&&a(t);for(var f=0;f{e[o]||(658!=o?r(require("./chunks/"+t.u(o))):e[o]=1)},module.exports=t,t.C=r})()})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/BUILD_ID b/site/.next/standalone/.next/BUILD_ID new file mode 100644 index 0000000..4f2086f --- /dev/null +++ b/site/.next/standalone/.next/BUILD_ID @@ -0,0 +1 @@ +1RTyIO_go5amcBV6dwgIE \ No newline at end of file diff --git a/site/.next/standalone/.next/app-build-manifest.json b/site/.next/standalone/.next/app-build-manifest.json new file mode 100644 index 0000000..53bf88c --- /dev/null +++ b/site/.next/standalone/.next/app-build-manifest.json @@ -0,0 +1,54 @@ +{ + "pages": { + "/_not-found/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/_not-found/page-7f77cbb62a3be354.js" + ], + "/layout": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/css/6f88e2c7ca075e83.css", + "static/chunks/app/layout-18e79b1a6e9bb295.js" + ], + "/dashboard/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/dashboard/page-4ae4d2092fe0a084.js" + ], + "/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/page-7d69bfe6ff018b59.js" + ], + "/prompt/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/prompt/page-6fa8974048233766.js" + ], + "/uniqueizer/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/uniqueizer/page-e45a265393ee86bd.js" + ], + "/result/page": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js", + "static/chunks/app/result/page-7096d0d3c33dfb7f.js" + ] + } +} \ No newline at end of file diff --git a/site/.next/standalone/.next/app-path-routes-manifest.json b/site/.next/standalone/.next/app-path-routes-manifest.json new file mode 100644 index 0000000..38c6d28 --- /dev/null +++ b/site/.next/standalone/.next/app-path-routes-manifest.json @@ -0,0 +1 @@ +{"/_not-found/page":"/_not-found","/dashboard/page":"/dashboard","/page":"/","/prompt/page":"/prompt","/uniqueizer/page":"/uniqueizer","/result/page":"/result"} \ No newline at end of file diff --git a/site/.next/standalone/.next/build-manifest.json b/site/.next/standalone/.next/build-manifest.json new file mode 100644 index 0000000..8dae9a3 --- /dev/null +++ b/site/.next/standalone/.next/build-manifest.json @@ -0,0 +1,32 @@ +{ + "polyfillFiles": [ + "static/chunks/polyfills-42372ed130431b0a.js" + ], + "devFiles": [], + "ampDevFiles": [], + "lowPriorityFiles": [ + "static/1RTyIO_go5amcBV6dwgIE/_buildManifest.js", + "static/1RTyIO_go5amcBV6dwgIE/_ssgManifest.js" + ], + "rootMainFiles": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/fd9d1056-1aae0987937804d3.js", + "static/chunks/117-9e579d196b4a8b27.js", + "static/chunks/main-app-a2993c9a226c8885.js" + ], + "pages": { + "/_app": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/framework-f66176bb897dc684.js", + "static/chunks/main-4542ef43ae2cfc86.js", + "static/chunks/pages/_app-72b849fbd24ac258.js" + ], + "/_error": [ + "static/chunks/webpack-c81f7fd28659d64f.js", + "static/chunks/framework-f66176bb897dc684.js", + "static/chunks/main-4542ef43ae2cfc86.js", + "static/chunks/pages/_error-7ba65e1336b92748.js" + ] + }, + "ampFirstPages": [] +} \ No newline at end of file diff --git a/site/.next/standalone/.next/package.json b/site/.next/standalone/.next/package.json new file mode 100644 index 0000000..7156107 --- /dev/null +++ b/site/.next/standalone/.next/package.json @@ -0,0 +1 @@ +{"type": "commonjs"} \ No newline at end of file diff --git a/site/.next/standalone/.next/prerender-manifest.json b/site/.next/standalone/.next/prerender-manifest.json new file mode 100644 index 0000000..898e4b0 --- /dev/null +++ b/site/.next/standalone/.next/prerender-manifest.json @@ -0,0 +1 @@ +{"version":4,"routes":{"/dashboard":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/dashboard","dataRoute":"/dashboard.rsc"},"/uniqueizer":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/uniqueizer","dataRoute":"/uniqueizer.rsc"},"/result":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/result","dataRoute":"/result.rsc"},"/":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/","dataRoute":"/index.rsc"},"/prompt":{"experimentalBypassFor":[{"type":"header","key":"Next-Action"},{"type":"header","key":"content-type","value":"multipart/form-data;.*"}],"initialRevalidateSeconds":false,"srcRoute":"/prompt","dataRoute":"/prompt.rsc"}},"dynamicRoutes":{},"notFoundRoutes":[],"preview":{"previewModeId":"78c5db5ec1a542ea811b7cf881a1b451","previewModeSigningKey":"54c77ae08d9dcf78312769622612eecdc57ea8e63ca49dd9896a67941aba4535","previewModeEncryptionKey":"6f9e2825f960da5529a28ceecea28f6c5b0251d4b746933742f7441f6644e20e"}} \ No newline at end of file diff --git a/site/.next/standalone/.next/react-loadable-manifest.json b/site/.next/standalone/.next/react-loadable-manifest.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/site/.next/standalone/.next/react-loadable-manifest.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/site/.next/standalone/.next/required-server-files.json b/site/.next/standalone/.next/required-server-files.json new file mode 100644 index 0000000..5b28537 --- /dev/null +++ b/site/.next/standalone/.next/required-server-files.json @@ -0,0 +1 @@ +{"version":1,"config":{"env":{},"webpack":null,"eslint":{"ignoreDuringBuilds":false},"typescript":{"ignoreBuildErrors":false,"tsconfigPath":"tsconfig.json"},"distDir":".next","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.js","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"analyticsId":"","images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":60,"formats":["image/webp"],"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"inline","remotePatterns":[],"unoptimized":false},"devIndicators":{"buildActivity":true,"buildActivityPosition":"bottom-right"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"amp":{"canonicalBase":""},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"optimizeFonts":true,"excludeDefaultMomentLocales":true,"serverRuntimeConfig":{},"publicRuntimeConfig":{},"reactProductionProfiling":false,"reactStrictMode":null,"httpAgentOptions":{"keepAlive":true},"outputFileTracing":true,"staticPageGenerationTimeout":60,"swcMinify":true,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"experimental":{"multiZoneDraftMode":false,"prerenderEarlyExit":false,"serverMinification":true,"serverSourceMaps":false,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","middlewarePrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":5,"memoryBasedWorkersCount":false,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"outputFileTracingRoot":"/opt/uno-click/site","swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"adjustFontFallbacks":false,"adjustFontFallbacksWithSizeAdjust":false,"typedRoutes":false,"instrumentationHook":false,"bundlePagesExternals":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"missingSuspenseWithCSRBailout":true,"optimizeServerReact":true,"useEarlyImport":false,"staleTimes":{"dynamic":30,"static":300},"serverActions":{"bodySizeLimit":"10mb"},"optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"configFileName":"next.config.js"},"appDir":"/opt/uno-click/site","relativeAppDir":"","files":[".next/routes-manifest.json",".next/server/pages-manifest.json",".next/build-manifest.json",".next/prerender-manifest.json",".next/server/middleware-manifest.json",".next/server/middleware-build-manifest.js",".next/server/middleware-react-loadable-manifest.js",".next/server/app-paths-manifest.json",".next/app-path-routes-manifest.json",".next/app-build-manifest.json",".next/server/server-reference-manifest.js",".next/server/server-reference-manifest.json",".next/react-loadable-manifest.json",".next/server/font-manifest.json",".next/BUILD_ID",".next/server/next-font-manifest.js",".next/server/next-font-manifest.json"],"ignore":["node_modules/next/dist/compiled/@ampproject/toolbox-optimizer/**/*"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/routes-manifest.json b/site/.next/standalone/.next/routes-manifest.json new file mode 100644 index 0000000..2dbacfe --- /dev/null +++ b/site/.next/standalone/.next/routes-manifest.json @@ -0,0 +1 @@ +{"version":3,"pages404":true,"caseSensitive":false,"basePath":"","redirects":[{"source":"/:path+/","destination":"/:path+","internal":true,"statusCode":308,"regex":"^(?:/((?:[^/]+?)(?:/(?:[^/]+?))*))/$"}],"headers":[],"dynamicRoutes":[],"staticRoutes":[{"page":"/","regex":"^/(?:/)?$","routeKeys":{},"namedRegex":"^/(?:/)?$"},{"page":"/_not-found","regex":"^/_not\\-found(?:/)?$","routeKeys":{},"namedRegex":"^/_not\\-found(?:/)?$"},{"page":"/dashboard","regex":"^/dashboard(?:/)?$","routeKeys":{},"namedRegex":"^/dashboard(?:/)?$"},{"page":"/prompt","regex":"^/prompt(?:/)?$","routeKeys":{},"namedRegex":"^/prompt(?:/)?$"},{"page":"/result","regex":"^/result(?:/)?$","routeKeys":{},"namedRegex":"^/result(?:/)?$"},{"page":"/uniqueizer","regex":"^/uniqueizer(?:/)?$","routeKeys":{},"namedRegex":"^/uniqueizer(?:/)?$"}],"dataRoutes":[],"rsc":{"header":"RSC","varyHeader":"RSC, Next-Router-State-Tree, Next-Router-Prefetch","prefetchHeader":"Next-Router-Prefetch","didPostponeHeader":"x-nextjs-postponed","contentTypeHeader":"text/x-component","suffix":".rsc","prefetchSuffix":".prefetch.rsc"},"rewrites":[]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app-paths-manifest.json b/site/.next/standalone/.next/server/app-paths-manifest.json new file mode 100644 index 0000000..756285a --- /dev/null +++ b/site/.next/standalone/.next/server/app-paths-manifest.json @@ -0,0 +1,8 @@ +{ + "/_not-found/page": "app/_not-found/page.js", + "/dashboard/page": "app/dashboard/page.js", + "/page": "app/page.js", + "/prompt/page": "app/prompt/page.js", + "/uniqueizer/page": "app/uniqueizer/page.js", + "/result/page": "app/result/page.js" +} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/_not-found.html b/site/.next/standalone/.next/server/app/_not-found.html new file mode 100644 index 0000000..b9d3e96 --- /dev/null +++ b/site/.next/standalone/.next/server/app/_not-found.html @@ -0,0 +1 @@ +404: This page could not be found.Uno Click

404

This page could not be found.

\ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/_not-found.meta b/site/.next/standalone/.next/server/app/_not-found.meta new file mode 100644 index 0000000..547abaf --- /dev/null +++ b/site/.next/standalone/.next/server/app/_not-found.meta @@ -0,0 +1,6 @@ +{ + "status": 404, + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/_not-found/layout,_N_T_/_not-found/page,_N_T_/_not-found" + } +} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/_not-found.rsc b/site/.next/standalone/.next/server/app/_not-found.rsc new file mode 100644 index 0000000..e9d3e61 --- /dev/null +++ b/site/.next/standalone/.next/server/app/_not-found.rsc @@ -0,0 +1,9 @@ +2:I[4707,[],""] +3:I[6423,[],""] +4:{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"} +5:{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"} +6:{"display":"inline-block"} +7:{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0} +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["/_not-found",{"children":["__PAGE__",{},[["$L1",[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null],null],null]},[null,["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children","/_not-found","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L2",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$4","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$5","children":"404"}],["$","div",null,{"style":"$6","children":["$","h2",null,{"style":"$7","children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L8",["$","meta",null,{"name":"robots","content":"noindex"}]]]]] +8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/standalone/.next/server/app/_not-found/page.js b/site/.next/standalone/.next/server/app/_not-found/page.js new file mode 100644 index 0000000..374b903 --- /dev/null +++ b/site/.next/standalone/.next/server/app/_not-found/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=409,e.ids=[409],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},8938:(e,t,n)=>{"use strict";n.r(t),n.d(t,{GlobalError:()=>s.a,__next_app__:()=>f,originalPathname:()=>c,pages:()=>a,routeModule:()=>p,tree:()=>d}),n(7352),n(5866),n(1506);var o=n(3191),r=n(8716),i=n(7922),s=n.n(i),u=n(5231),l={};for(let e in u)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>u[e]);n.d(t,l);let d=["",{children:["/_not-found",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(n.t.bind(n,5866,23)),"next/dist/client/components/not-found-error"]}]},{}]},{layout:[()=>Promise.resolve().then(n.bind(n,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(n.t.bind(n,5866,23)),"next/dist/client/components/not-found-error"]}],a=[],c="/_not-found/page",f={require:n,loadChunk:()=>Promise.resolve()},p=new o.AppPageRouteModule({definition:{kind:r.x.APP_PAGE,page:"/_not-found/page",pathname:"/_not-found",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},4199:()=>{},9682:(e,t,n)=>{Promise.resolve().then(n.t.bind(n,2994,23)),Promise.resolve().then(n.t.bind(n,6114,23)),Promise.resolve().then(n.t.bind(n,9727,23)),Promise.resolve().then(n.t.bind(n,9671,23)),Promise.resolve().then(n.t.bind(n,1868,23)),Promise.resolve().then(n.t.bind(n,4759,23))},1506:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i,metadata:()=>r});var o=n(9510);n(7272);let r={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function i({children:e}){return o.jsx("html",{lang:"ru",children:o.jsx("body",{children:e})})}},6399:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{isNotFoundError:function(){return r},notFound:function(){return o}});let n="NEXT_NOT_FOUND";function o(){let e=Error(n);throw e.digest=n,e}function r(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===n}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7352:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{PARALLEL_ROUTE_DEFAULT_PATH:function(){return r},default:function(){return i}});let o=n(6399),r="next/dist/client/components/parallel-route-default.js";function i(){(0,o.notFound)()}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var n=e=>t(t.s=e),o=t.X(0,[819],()=>n(8938));module.exports=o})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/_not-found/page.js.nft.json b/site/.next/standalone/.next/server/app/_not-found/page.js.nft.json new file mode 100644 index 0000000..d92d441 --- /dev/null +++ b/site/.next/standalone/.next/server/app/_not-found/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js b/site/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js new file mode 100644 index 0000000..2d90e6c --- /dev/null +++ b/site/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/_not-found/page":[]}} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/dashboard.html b/site/.next/standalone/.next/server/app/dashboard.html new file mode 100644 index 0000000..008e1ba --- /dev/null +++ b/site/.next/standalone/.next/server/app/dashboard.html @@ -0,0 +1 @@ +Uno Click
Загрузка...
\ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/dashboard.meta b/site/.next/standalone/.next/server/app/dashboard.meta new file mode 100644 index 0000000..1e4d246 --- /dev/null +++ b/site/.next/standalone/.next/server/app/dashboard.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/dashboard/layout,_N_T_/dashboard/page,_N_T_/dashboard" + } +} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/dashboard.rsc b/site/.next/standalone/.next/server/app/dashboard.rsc new file mode 100644 index 0000000..e0cbf96 --- /dev/null +++ b/site/.next/standalone/.next/server/app/dashboard.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[1720,["702","static/chunks/app/dashboard/page-4ae4d2092fe0a084.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["dashboard",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["dashboard",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","dashboard","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/standalone/.next/server/app/dashboard/page.js b/site/.next/standalone/.next/server/app/dashboard/page.js new file mode 100644 index 0000000..f748a44 --- /dev/null +++ b/site/.next/standalone/.next/server/app/dashboard/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=702,e.ids=[702],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},8209:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>u,originalPathname:()=>p,pages:()=>c,routeModule:()=>x,tree:()=>l}),r(9521),r(1506),r(5866);var n=r(3191),i=r(8716),o=r(7922),a=r.n(o),s=r(5231),d={};for(let e in s)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(d[e]=()=>s[e]);r.d(t,d);let l=["",{children:["dashboard",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,9521)),"/opt/uno-click/site/app/dashboard/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,5866,23)),"next/dist/client/components/not-found-error"]}],c=["/opt/uno-click/site/app/dashboard/page.tsx"],p="/dashboard/page",u={require:r,loadChunk:()=>Promise.resolve()},x=new n.AppPageRouteModule({definition:{kind:i.x.APP_PAGE,page:"/dashboard/page",pathname:"/dashboard",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:l}})},9264:(e,t,r)=>{Promise.resolve().then(r.bind(r,7581))},4199:()=>{},9682:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,2994,23)),Promise.resolve().then(r.t.bind(r,6114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,9671,23)),Promise.resolve().then(r.t.bind(r,1868,23)),Promise.resolve().then(r.t.bind(r,4759,23))},7581:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a});var n=r(326),i=r(7577),o=r(5047);function a(){let e=(0,o.useRouter)(),[t,r]=(0,i.useState)(null),[a,d]=(0,i.useState)(!0),[l,c]=(0,i.useState)(!1);async function p(){try{await fetch("/api/auth/logout",{method:"POST",credentials:"same-origin"}),e.push("/")}catch(t){console.error("Logout error:",t),e.push("/")}}async function u(){let e=await fetch("/api/auth/csrf",{credentials:"same-origin"});return(await e.json()).csrfToken||""}async function x(){c(!0);try{let t=await u(),r=await fetch("/api/scenario/uniqueizer/start",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json","x-csrf-token":t}});if(r.ok){let t=await r.json();e.push(`/uniqueizer?generationUuid=${t.generationUuid}`)}else{let e=await r.json();alert("Ошибка запуска сценария: "+(e.message||r.statusText))}}catch(e){alert("Ошибка: "+(e instanceof Error?e.message:String(e)))}finally{c(!1)}}return a?n.jsx("div",{style:s.loading,children:"Загрузка..."}):n.jsx("div",{style:s.page,children:(0,n.jsxs)("div",{style:s.container,children:[(0,n.jsxs)("div",{style:s.header,children:[n.jsx("h1",{style:s.headerTitle,children:"Uno Click"}),n.jsx("button",{onClick:p,style:s.logoutBtn,children:"Выйти"})]}),(0,n.jsxs)("div",{style:s.welcome,children:[(0,n.jsxs)("h2",{style:s.welcomeTitle,children:["Добро пожаловать, ",t?.displayName||t?.email,"!"]}),n.jsx("p",{style:s.welcomeText,children:"Выберите сценарий для запуска"})]}),(0,n.jsxs)("div",{style:s.scenariosGrid,children:[(0,n.jsxs)("div",{style:s.scenarioCard,children:[n.jsx("div",{style:{...s.scenarioIcon,...s.scenarioIconBlue},children:"\uD83C\uDFA8"}),n.jsx("div",{style:s.scenarioName,children:"Nano Banana"}),n.jsx("div",{style:s.scenarioDesc,children:"Генерация изображений по текстовому описанию. Введите промпт и получите уникальную иллюстрацию."}),n.jsx("a",{href:"/prompt?scenario=nano-banana",style:s.btnPrimary,children:"Запустить"})]}),(0,n.jsxs)("div",{style:s.scenarioCard,children:[n.jsx("div",{style:{...s.scenarioIcon,...s.scenarioIconGreen},children:"\uD83E\uDDEA"}),n.jsx("div",{style:s.scenarioName,children:"Demo Scenario"}),n.jsx("div",{style:s.scenarioDesc,children:"Тестовый сценарий для проверки функциональности. Многоступенчатая генерация с подтверждением."}),n.jsx("a",{href:"/prompt?scenario=demo-scenario",style:s.btnSecondary,children:"Запустить"})]}),(0,n.jsxs)("div",{style:s.scenarioCard,children:[n.jsx("div",{style:{...s.scenarioIcon,...s.scenarioIconBlue},children:"✨"}),n.jsx("div",{style:s.scenarioName,children:"Уникализация"}),n.jsx("div",{style:s.scenarioDesc,children:"Запуск сценария уникализации контента."}),n.jsx("button",{onClick:x,disabled:l,style:{...s.btnPrimary,...l?s.btnDisabled:{}},children:l?"Запуск...":"Запустить"})]})]})]})})}let s={page:{minHeight:"100vh",padding:"40px 20px",background:"#f5f5f5"},container:{maxWidth:"800px",margin:"0 auto"},header:{background:"white",padding:"20px 30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",marginBottom:"20px",display:"flex",justifyContent:"space-between",alignItems:"center"},headerTitle:{fontSize:"20px",fontWeight:600,color:"#333"},logoutBtn:{background:"none",border:"1px solid #ddd",padding:"8px 16px",borderRadius:"6px",cursor:"pointer",fontSize:"14px",color:"#666"},welcome:{background:"white",padding:"20px 30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",marginBottom:"20px"},welcomeTitle:{fontSize:"18px",fontWeight:600,color:"#333",marginBottom:"8px"},welcomeText:{color:"#666",fontSize:"14px"},scenariosGrid:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(300px, 1fr))",gap:"20px"},scenarioCard:{background:"white",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",padding:"24px",transition:"box-shadow 0.2s"},scenarioIcon:{width:"48px",height:"48px",borderRadius:"10px",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"24px",marginBottom:"16px"},scenarioIconBlue:{background:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)"},scenarioIconGreen:{background:"linear-gradient(135deg, #11998e 0%, #38ef7d 100%)"},scenarioName:{fontSize:"16px",fontWeight:600,color:"#333",marginBottom:"8px"},scenarioDesc:{fontSize:"14px",color:"#666",marginBottom:"20px",lineHeight:1.5},btnPrimary:{width:"100%",padding:"12px",background:"#007bff",color:"white",border:"none",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer",textAlign:"center",textDecoration:"none",display:"inline-block"},btnSecondary:{width:"100%",padding:"12px",background:"#f5f5f5",color:"#333",border:"1px solid #ddd",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer",textAlign:"center",textDecoration:"none",display:"inline-block"},btnDisabled:{background:"#ccc",cursor:"not-allowed"},loading:{display:"flex",alignItems:"center",justifyContent:"center",minHeight:"100vh",fontSize:"18px",color:"#666"}}},5047:(e,t,r)=>{"use strict";var n=r(7389);r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},9521:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n=(0,r(8570).createProxy)(String.raw`/opt/uno-click/site/app/dashboard/page.tsx#default`)},1506:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o,metadata:()=>i});var n=r(9510);r(7272);let i={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function o({children:e}){return n.jsx("html",{lang:"ru",children:n.jsx("body",{children:e})})}},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[819],()=>r(8209));module.exports=n})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/dashboard/page.js.nft.json b/site/.next/standalone/.next/server/app/dashboard/page.js.nft.json new file mode 100644 index 0000000..d728bdc --- /dev/null +++ b/site/.next/standalone/.next/server/app/dashboard/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/dashboard/page_client-reference-manifest.js b/site/.next/standalone/.next/server/app/dashboard/page_client-reference-manifest.js new file mode 100644 index 0000000..42f75ff --- /dev/null +++ b/site/.next/standalone/.next/server/app/dashboard/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/dashboard/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":["702","static/chunks/app/dashboard/page-4ae4d2092fe0a084.js"],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/dashboard/page":[]}} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/index.html b/site/.next/standalone/.next/server/app/index.html new file mode 100644 index 0000000..a04ff47 --- /dev/null +++ b/site/.next/standalone/.next/server/app/index.html @@ -0,0 +1 @@ +Uno Click

Uno Click

Войдите для продолжения

\ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/index.meta b/site/.next/standalone/.next/server/app/index.meta new file mode 100644 index 0000000..4bb6676 --- /dev/null +++ b/site/.next/standalone/.next/server/app/index.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/page,_N_T_/" + } +} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/index.rsc b/site/.next/standalone/.next/server/app/index.rsc new file mode 100644 index 0000000..d47c2e9 --- /dev/null +++ b/site/.next/standalone/.next/server/app/index.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[7340,["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/standalone/.next/server/app/page.js b/site/.next/standalone/.next/server/app/page.js new file mode 100644 index 0000000..6c2e6c4 --- /dev/null +++ b/site/.next/standalone/.next/server/app/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=931,e.ids=[931],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},65:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>s.a,__next_app__:()=>c,originalPathname:()=>p,pages:()=>u,routeModule:()=>x,tree:()=>d}),r(908),r(1506),r(5866);var o=r(3191),i=r(8716),n=r(7922),s=r.n(n),a=r(5231),l={};for(let e in a)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>a[e]);r.d(t,l);let d=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,908)),"/opt/uno-click/site/app/page.tsx"]}]},{layout:[()=>Promise.resolve().then(r.bind(r,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,5866,23)),"next/dist/client/components/not-found-error"]}],u=["/opt/uno-click/site/app/page.tsx"],p="/page",c={require:r,loadChunk:()=>Promise.resolve()},x=new o.AppPageRouteModule({definition:{kind:i.x.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},4199:()=>{},9321:(e,t,r)=>{Promise.resolve().then(r.bind(r,8743))},9682:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,2994,23)),Promise.resolve().then(r.t.bind(r,6114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,9671,23)),Promise.resolve().then(r.t.bind(r,1868,23)),Promise.resolve().then(r.t.bind(r,4759,23))},8743:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var o=r(326),i=r(7577),n=r(5047);function s(){let e=(0,n.useRouter)(),[t,r]=(0,i.useState)(""),[s,l]=(0,i.useState)(""),[d,u]=(0,i.useState)(""),[p,c]=(0,i.useState)(!1);async function x(r){r.preventDefault(),c(!0),u("");try{let r=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"same-origin",body:JSON.stringify({email:t,password:s})}),o=await r.json();if(!r.ok)throw Error(o.message||"Ошибка входа");e.push("/dashboard")}catch(e){u(e instanceof Error?e.message:"Неизвестная ошибка"),c(!1)}}return o.jsx("div",{style:a.container,children:(0,o.jsxs)("div",{style:a.card,children:[o.jsx("h1",{style:a.title,children:"Uno Click"}),o.jsx("p",{style:a.subtitle,children:"Войдите для продолжения"}),d&&o.jsx("div",{style:a.error,children:d}),(0,o.jsxs)("form",{onSubmit:x,children:[(0,o.jsxs)("div",{style:a.formGroup,children:[o.jsx("label",{htmlFor:"email",style:a.label,children:"Email"}),o.jsx("input",{type:"email",id:"email",value:t,onChange:e=>r(e.target.value),required:!0,placeholder:"test.user@uno-click.local",style:a.input})]}),(0,o.jsxs)("div",{style:a.formGroup,children:[o.jsx("label",{htmlFor:"password",style:a.label,children:"Пароль"}),o.jsx("input",{type:"password",id:"password",value:s,onChange:e=>l(e.target.value),required:!0,placeholder:"test123",style:a.input})]}),o.jsx("button",{type:"submit",disabled:p,style:{...a.button,...p?a.buttonDisabled:{}},children:p?"Вход...":"Войти"})]})]})})}let a={container:{display:"flex",alignItems:"center",justifyContent:"center",minHeight:"100vh",background:"#f5f5f5"},card:{background:"white",padding:"40px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",width:"100%",maxWidth:"400px"},title:{fontSize:"24px",fontWeight:600,marginBottom:"8px",color:"#333"},subtitle:{color:"#666",marginBottom:"32px",fontSize:"14px"},formGroup:{marginBottom:"20px"},label:{display:"block",marginBottom:"6px",fontSize:"14px",color:"#333",fontWeight:500},input:{width:"100%",padding:"12px 14px",border:"1px solid #ddd",borderRadius:"6px",fontSize:"14px",transition:"border-color 0.2s"},button:{width:"100%",padding:"12px",background:"#007bff",color:"white",border:"none",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer",transition:"background 0.2s"},buttonDisabled:{background:"#ccc",cursor:"not-allowed"},error:{background:"#fee",color:"#c00",padding:"12px",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"}}},5047:(e,t,r)=>{"use strict";var o=r(7389);r.o(o,"useRouter")&&r.d(t,{useRouter:function(){return o.useRouter}}),r.o(o,"useSearchParams")&&r.d(t,{useSearchParams:function(){return o.useSearchParams}})},1506:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n,metadata:()=>i});var o=r(9510);r(7272);let i={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function n({children:e}){return o.jsx("html",{lang:"ru",children:o.jsx("body",{children:e})})}},908:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>o});let o=(0,r(8570).createProxy)(String.raw`/opt/uno-click/site/app/page.tsx#default`)},7272:()=>{}};var t=require("../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),o=t.X(0,[819],()=>r(65));module.exports=o})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/page.js.nft.json b/site/.next/standalone/.next/server/app/page.js.nft.json new file mode 100644 index 0000000..c548449 --- /dev/null +++ b/site/.next/standalone/.next/server/app/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../node_modules/next/dist/client/components/async-local-storage.js","../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../package.json","../../package.json","../chunks/819.js","../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/page_client-reference-manifest.js b/site/.next/standalone/.next/server/app/page_client-reference-manifest.js new file mode 100644 index 0000000..f5cdc56 --- /dev/null +++ b/site/.next/standalone/.next/server/app/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[]}} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/prompt.html b/site/.next/standalone/.next/server/app/prompt.html new file mode 100644 index 0000000..718bff9 --- /dev/null +++ b/site/.next/standalone/.next/server/app/prompt.html @@ -0,0 +1 @@ +Uno Click
Загрузка...
\ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/prompt.meta b/site/.next/standalone/.next/server/app/prompt.meta new file mode 100644 index 0000000..cc6ab81 --- /dev/null +++ b/site/.next/standalone/.next/server/app/prompt.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/prompt/layout,_N_T_/prompt/page,_N_T_/prompt" + } +} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/prompt.rsc b/site/.next/standalone/.next/server/app/prompt.rsc new file mode 100644 index 0000000..4e0dc51 --- /dev/null +++ b/site/.next/standalone/.next/server/app/prompt.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[1882,["681","static/chunks/app/prompt/page-6fa8974048233766.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["prompt",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["prompt",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","prompt","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/standalone/.next/server/app/prompt/page.js b/site/.next/standalone/.next/server/app/prompt/page.js new file mode 100644 index 0000000..37621c7 --- /dev/null +++ b/site/.next/standalone/.next/server/app/prompt/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=681,e.ids=[681],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},6108:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>o.a,__next_app__:()=>u,originalPathname:()=>c,pages:()=>p,routeModule:()=>x,tree:()=>d}),r(2712),r(1506),r(5866);var i=r(3191),n=r(8716),a=r(7922),o=r.n(a),s=r(5231),l={};for(let e in s)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>s[e]);r.d(t,l);let d=["",{children:["prompt",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,2712)),"/opt/uno-click/site/app/prompt/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,5866,23)),"next/dist/client/components/not-found-error"]}],p=["/opt/uno-click/site/app/prompt/page.tsx"],c="/prompt/page",u={require:r,loadChunk:()=>Promise.resolve()},x=new i.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/prompt/page",pathname:"/prompt",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:d}})},4199:()=>{},313:(e,t,r)=>{Promise.resolve().then(r.bind(r,7338))},9682:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,2994,23)),Promise.resolve().then(r.t.bind(r,6114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,9671,23)),Promise.resolve().then(r.t.bind(r,1868,23)),Promise.resolve().then(r.t.bind(r,4759,23))},7338:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s});var i=r(326),n=r(7577),a=r(5047);function o(){let e=(0,a.useRouter)(),t=(0,a.useSearchParams)().get("scenario")||"nano-banana",r={"nano-banana":{name:"Nano Banana",desc:"Генерация изображений по промпту",icon:"\uD83C\uDFA8",class:"blue",stepId:"1"},"demo-scenario":{name:"Demo Scenario",desc:"Тестовый сценарий с подтверждением",icon:"\uD83E\uDDEA",class:"green",stepId:"collect-input"}},o=r[t]||r["nano-banana"],[s,d]=(0,n.useState)(""),[p,c]=(0,n.useState)(null),[u,x]=(0,n.useState)(null),[g,m]=(0,n.useState)(""),[f,h]=(0,n.useState)(!1),[b,y]=(0,n.useState)(""),[v,j]=(0,n.useState)(""),P=(0,n.useRef)(null),S=(0,n.useRef)(null);async function w(e,t,r){let i=new FormData;i.append("file",e),i.append("generationUuid",t),i.append("generationStepId",r);let n=await fetch("/api/upload/image",{method:"POST",headers:{"x-csrf-token":v},body:i,credentials:"same-origin"}),a=await n.json();if(!n.ok)throw Error(a.message||"Ошибка загрузки файла");return a.data.s3Key}async function k(r){r.preventDefault(),h(!0),m(""),y("Запуск сценария...");try{let r;let i=await fetch(`/api/scenario/${t}/start`,{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":v},credentials:"same-origin",body:JSON.stringify({})}),n=await i.json();if(!i.ok)throw Error(n.message||"Ошибка запуска сценария");let a=n.generationUuid;if(p){y("Загрузка файла...");let e=await fetch(`/api/scenario/${t}/step/${o.stepId}/record`,{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":v},credentials:"same-origin",body:JSON.stringify({prompt:s})}),i=(await e.json()).stepRecordId;r=await w(p,a,i)}let l={prompt:s};r&&(l.imageKey=r),y("Генерация...");let d=await fetch(`/api/scenario/${t}/step/${o.stepId}`,{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":v},credentials:"same-origin",body:JSON.stringify(l)}),c=await d.json();if(!d.ok)throw Error(c.message||"Ошибка выполнения шага");e.push(`/result?generationUuid=${a}`)}catch(e){m(e instanceof Error?e.message:"Неизвестная ошибка"),h(!1),y("")}}return i.jsx("div",{style:l.page,children:(0,i.jsxs)("div",{style:l.container,children:[(0,i.jsxs)("div",{style:l.header,children:[i.jsx("h1",{style:l.headerTitle,children:"Создание"}),i.jsx("button",{onClick:()=>e.push("/dashboard"),style:l.btnSmall,children:"Назад"})]}),(0,i.jsxs)("div",{style:l.card,children:[(0,i.jsxs)("div",{style:l.scenarioInfo,children:[i.jsx("div",{style:{...l.scenarioIcon,...l[o.class]},children:o.icon}),(0,i.jsxs)("div",{children:[i.jsx("div",{style:l.scenarioName,children:o.name}),i.jsx("div",{style:l.scenarioDesc,children:o.desc})]})]}),g&&i.jsx("div",{style:l.error,children:g}),(0,i.jsxs)("form",{onSubmit:k,children:[(0,i.jsxs)("div",{style:l.formGroup,children:[i.jsx("label",{htmlFor:"prompt",style:l.label,children:"Опишите, что хотите создать"}),i.jsx("textarea",{id:"prompt",value:s,onChange:e=>d(e.target.value),required:!0,placeholder:"Например: кот в космосе, цифровая иллюстрация, яркие цвета...",style:l.textarea})]}),(0,i.jsxs)("div",{style:l.formGroup,children:[i.jsx("label",{style:l.label,children:"Изображение (опционально)"}),(0,i.jsxs)("div",{ref:S,style:l.fileUpload,onClick:()=>P.current?.click(),children:[i.jsx("input",{ref:P,type:"file",accept:"image/jpeg,image/jpg,image/png,image/gif,image/webp",onChange:function(e){e.target.files?.length&&function(e){if(!["image/jpeg","image/jpg","image/png","image/gif","image/webp"].includes(e.type)){m("Недопустимый тип файла. Разрешены: JPEG, PNG, GIF, WebP");return}if(e.size>10485760){m("Файл слишком большой. Максимум: 10MB");return}c(e);let t=new FileReader;t.onload=e=>x(e.target?.result),t.readAsDataURL(e),m("")}(e.target.files[0])},style:{display:"none"}}),(0,i.jsxs)("div",{style:l.fileUploadLabel,children:[i.jsx("div",{style:l.fileUploadIcon,children:"\uD83D\uDCC1"}),i.jsx("div",{style:l.fileUploadText,children:"Нажмите для загрузки или перетащите файл"}),i.jsx("div",{style:{...l.fileUploadText,fontSize:"12px",color:"#999",marginTop:"4px"},children:"JPEG, PNG, GIF, WebP до 10MB"})]})]}),u&&(0,i.jsxs)("div",{style:l.filePreview,children:[i.jsx("img",{src:u,alt:"Preview",style:l.previewImg}),(0,i.jsxs)("div",{style:l.filePreviewInfo,children:[i.jsx("div",{style:l.filePreviewName,children:p?.name}),i.jsx("div",{children:p&&function(e){if(0===e)return"0 Bytes";let t=Math.floor(Math.log(e)/Math.log(1024));return Math.round(e/Math.pow(1024,t)*100)/100+" "+["Bytes","KB","MB","GB"][t]}(p.size)})]}),i.jsx("button",{type:"button",onClick:function(){c(null),x(null),P.current&&(P.current.value="")},style:l.fileRemove,children:"\xd7"})]})]}),i.jsx("button",{type:"submit",disabled:f,style:{...l.btnPrimary,...f?l.btnDisabled:{}},children:f?"Запуск...":"Создать"})]}),b&&(0,i.jsxs)("div",{style:l.status,children:[i.jsx("span",{style:l.spinner}),i.jsx("span",{children:b})]})]})]})})}function s(){return i.jsx(n.Suspense,{fallback:i.jsx("div",{style:l.page,children:i.jsx("div",{style:l.container,children:i.jsx("div",{style:l.emptyState,children:"Загрузка..."})})}),children:i.jsx(o,{})})}let l={page:{minHeight:"100vh",padding:"40px 20px",background:"#f5f5f5"},container:{maxWidth:"600px",margin:"0 auto"},emptyState:{textAlign:"center",padding:"60px 20px",color:"#666"},header:{background:"white",padding:"20px 30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",marginBottom:"20px",display:"flex",justifyContent:"space-between",alignItems:"center"},headerTitle:{fontSize:"20px",fontWeight:600,color:"#333"},btnSmall:{background:"none",border:"1px solid #ddd",padding:"8px 16px",borderRadius:"6px",cursor:"pointer",fontSize:"14px",color:"#666"},card:{background:"white",padding:"30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)"},scenarioInfo:{display:"flex",alignItems:"center",gap:"12px",marginBottom:"24px",padding:"16px",background:"#f8f9fa",borderRadius:"6px"},scenarioIcon:{width:"40px",height:"40px",borderRadius:"8px",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"20px"},blue:{background:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)"},green:{background:"linear-gradient(135deg, #11998e 0%, #38ef7d 100%)"},scenarioName:{fontWeight:600,color:"#333"},scenarioDesc:{fontSize:"13px",color:"#666"},formGroup:{marginBottom:"20px"},label:{display:"block",marginBottom:"8px",fontSize:"14px",color:"#333",fontWeight:500},textarea:{width:"100%",padding:"14px",border:"1px solid #ddd",borderRadius:"6px",fontSize:"14px",fontFamily:"inherit",resize:"vertical",minHeight:"120px"},fileUpload:{border:"2px dashed #ddd",borderRadius:"6px",padding:"20px",textAlign:"center",cursor:"pointer",transition:"all 0.2s",marginBottom:"10px"},fileUploadLabel:{display:"block",cursor:"pointer"},fileUploadIcon:{fontSize:"32px",marginBottom:"8px"},fileUploadText:{fontSize:"14px",color:"#666"},filePreview:{display:"flex",alignItems:"center",gap:"10px",marginTop:"10px",padding:"10px",background:"#f8f9fa",borderRadius:"6px"},previewImg:{maxWidth:"80px",maxHeight:"80px",borderRadius:"4px",objectFit:"cover"},filePreviewInfo:{flex:1,fontSize:"13px",color:"#666"},filePreviewName:{fontWeight:500,color:"#333",marginBottom:"4px"},fileRemove:{background:"none",border:"none",color:"#dc3545",cursor:"pointer",fontSize:"18px",padding:"4px 8px"},btnPrimary:{padding:"12px 24px",background:"#007bff",color:"white",border:"none",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer",width:"100%"},btnDisabled:{background:"#ccc",cursor:"not-allowed"},error:{background:"#fee",color:"#c00",padding:"12px",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},status:{textAlign:"center",padding:"20px",color:"#666"},spinner:{display:"inline-block",width:"20px",height:"20px",border:"2px solid #ddd",borderTopColor:"#007bff",borderRadius:"50%",animation:"spin 1s linear infinite",marginRight:"10px",verticalAlign:"middle"}}},5047:(e,t,r)=>{"use strict";var i=r(7389);r.o(i,"useRouter")&&r.d(t,{useRouter:function(){return i.useRouter}}),r.o(i,"useSearchParams")&&r.d(t,{useSearchParams:function(){return i.useSearchParams}})},1506:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>a,metadata:()=>n});var i=r(9510);r(7272);let n={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function a({children:e}){return i.jsx("html",{lang:"ru",children:i.jsx("body",{children:e})})}},2712:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});let i=(0,r(8570).createProxy)(String.raw`/opt/uno-click/site/app/prompt/page.tsx#default`)},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[819],()=>r(6108));module.exports=i})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/prompt/page.js.nft.json b/site/.next/standalone/.next/server/app/prompt/page.js.nft.json new file mode 100644 index 0000000..d728bdc --- /dev/null +++ b/site/.next/standalone/.next/server/app/prompt/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/prompt/page_client-reference-manifest.js b/site/.next/standalone/.next/server/app/prompt/page_client-reference-manifest.js new file mode 100644 index 0000000..c97d49f --- /dev/null +++ b/site/.next/standalone/.next/server/app/prompt/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/prompt/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":["681","static/chunks/app/prompt/page-6fa8974048233766.js"],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/prompt/page":[]}} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/result.html b/site/.next/standalone/.next/server/app/result.html new file mode 100644 index 0000000..59ffee2 --- /dev/null +++ b/site/.next/standalone/.next/server/app/result.html @@ -0,0 +1 @@ +Uno Click
Загрузка...
\ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/result.meta b/site/.next/standalone/.next/server/app/result.meta new file mode 100644 index 0000000..2471783 --- /dev/null +++ b/site/.next/standalone/.next/server/app/result.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/result/layout,_N_T_/result/page,_N_T_/result" + } +} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/result.rsc b/site/.next/standalone/.next/server/app/result.rsc new file mode 100644 index 0000000..e8e81a1 --- /dev/null +++ b/site/.next/standalone/.next/server/app/result.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[4437,["609","static/chunks/app/result/page-7096d0d3c33dfb7f.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["result",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["result",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","result","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/standalone/.next/server/app/result/page.js b/site/.next/standalone/.next/server/app/result/page.js new file mode 100644 index 0000000..37ce7c5 --- /dev/null +++ b/site/.next/standalone/.next/server/app/result/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=609,e.ids=[609],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},5554:(e,t,r)=>{"use strict";r.r(t),r.d(t,{GlobalError:()=>a.a,__next_app__:()=>x,originalPathname:()=>c,pages:()=>p,routeModule:()=>u,tree:()=>o}),r(5556),r(1506),r(5866);var i=r(3191),n=r(8716),s=r(7922),a=r.n(s),d=r(5231),l={};for(let e in d)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(l[e]=()=>d[e]);r.d(t,l);let o=["",{children:["result",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(r.bind(r,5556)),"/opt/uno-click/site/app/result/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(r.bind(r,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(r.t.bind(r,5866,23)),"next/dist/client/components/not-found-error"]}],p=["/opt/uno-click/site/app/result/page.tsx"],c="/result/page",x={require:r,loadChunk:()=>Promise.resolve()},u=new i.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/result/page",pathname:"/result",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:o}})},4199:()=>{},7594:(e,t,r)=>{Promise.resolve().then(r.bind(r,7367))},9682:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,2994,23)),Promise.resolve().then(r.t.bind(r,6114,23)),Promise.resolve().then(r.t.bind(r,9727,23)),Promise.resolve().then(r.t.bind(r,9671,23)),Promise.resolve().then(r.t.bind(r,1868,23)),Promise.resolve().then(r.t.bind(r,4759,23))},7367:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var i=r(326),n=r(7577),s=r(5047);function a(){var e;(0,s.useRouter)();let t=(0,s.useSearchParams)().get("generationUuid"),[r,a]=(0,n.useState)(null),[d,o]=(0,n.useState)(!0),[p,c]=(0,n.useState)(""),[x,u]=(0,n.useState)(!1);async function h(){if(t)try{let e=await fetch(`/api/result/${t}`,{credentials:"same-origin"}),r=await e.json();if(!e.ok)throw Error(r.message||"Ошибка загрузки результата");a(r.result),c(""),o(!1),"running"===r.result.status||"waiting_for_input"===r.result.status?(u(!0),setTimeout(h,3e3)):u(!1)}catch(e){c(e instanceof Error?e.message:"Ошибка загрузки"),o(!1)}}return d?i.jsx("div",{style:l.page,children:(0,i.jsxs)("div",{style:l.container,children:[(0,i.jsxs)("div",{style:l.header,children:[i.jsx("h1",{style:l.headerTitle,children:"Результат"}),i.jsx("a",{href:"/dashboard",style:l.btnSmall,children:"К сценариям"})]}),i.jsx("div",{style:l.card,children:(0,i.jsxs)("div",{style:l.emptyState,children:[i.jsx("div",{style:l.emptyStateIcon,children:i.jsx("span",{style:l.spinnerLarge})}),i.jsx("div",{style:l.emptyStateText,children:"Загружаем результат..."})]})})]})}):p&&!r?i.jsx("div",{style:l.page,children:(0,i.jsxs)("div",{style:l.container,children:[(0,i.jsxs)("div",{style:l.header,children:[i.jsx("h1",{style:l.headerTitle,children:"Результат"}),i.jsx("a",{href:"/dashboard",style:l.btnSmall,children:"К сценариям"})]}),i.jsx("div",{style:l.card,children:i.jsx("div",{style:l.error,children:p})})]})}):i.jsx("div",{style:l.page,children:(0,i.jsxs)("div",{style:l.container,children:[(0,i.jsxs)("div",{style:l.header,children:[i.jsx("h1",{style:l.headerTitle,children:"Результат"}),i.jsx("div",{style:l.headerActions,children:i.jsx("a",{href:"/dashboard",style:l.btnSmall,children:"К сценариям"})})]}),(0,i.jsxs)("div",{style:l.card,children:[(0,i.jsxs)("div",{style:l.cardHeader,children:[i.jsx("span",{style:l.cardTitle,children:r?.scenarioName||"Загрузка..."}),i.jsx("span",{style:{...l.statusBadge,...r?.status==="completed"?l.statusCompleted:r?.status==="failed"?l.statusFailed:l.statusRunning},children:r?({running:"Генерация...",completed:"Готово",failed:"Ошибка",waiting_for_input:"Ожидание...",created:"Создано"})[e=r.status]||e:"Загрузка..."})]}),(0,i.jsxs)("div",{style:l.cardBody,children:[p&&i.jsx("div",{style:l.error,children:p}),r?.requestPayload?.prompt&&(0,i.jsxs)("div",{style:l.promptInfo,children:[i.jsx("div",{style:l.promptLabel,children:"Промпт"}),i.jsx("div",{style:l.promptText,children:r.requestPayload.prompt})]}),r?.files&&r.files.length>0?i.jsx("div",{style:l.fileContainer,children:r.files.map((e,t)=>(function(e,t){var r;let n="video"===e.contentType?i.jsx("video",{src:e.url,controls:!0,style:l.previewMedia}):i.jsx("img",{src:e.url,alt:`Result ${t+1}`,style:l.previewMedia});return(0,i.jsxs)("div",{style:l.fileCard,children:[i.jsx("div",{style:l.filePreview,children:n}),(0,i.jsxs)("div",{style:l.fileInfo,children:[(0,i.jsxs)("div",{style:l.fileMeta,children:[e.format&&(0,i.jsxs)("span",{style:l.fileMetaItem,children:[i.jsx("strong",{children:"Формат:"})," ",e.format.toUpperCase()]}),e.width&&e.height&&(0,i.jsxs)("span",{style:l.fileMetaItem,children:[i.jsx("strong",{children:"Размер:"})," ",e.width,"\xd7",e.height]}),e.duration&&(0,i.jsxs)("span",{style:l.fileMetaItem,children:[i.jsx("strong",{children:"Длительность:"})," ",(r=e.duration,`${Math.floor(r/60)}:${Math.floor(r%60).toString().padStart(2,"0")}`)]})]}),(0,i.jsxs)("div",{style:l.fileActions,children:[i.jsx("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",style:l.btnPrimary,children:"\uD83D\uDC41 Открыть"}),i.jsx("a",{href:e.url,download:!0,style:l.btnSecondary,children:"⬇ Скачать"})]})]})]},t)})(e,t))}):r?.status==="completed"?(0,i.jsxs)("div",{style:l.emptyState,children:[i.jsx("div",{style:l.emptyStateIcon,children:"⏳"}),i.jsx("div",{style:l.emptyStateText,children:"Результат получен, но файлы не найдены"})]}):r?.status==="failed"?(0,i.jsxs)("div",{style:l.emptyState,children:[i.jsx("div",{style:l.emptyStateIcon,children:"❌"}),i.jsx("div",{style:l.emptyStateText,children:"Произошла ошибка при генерации"})]}):(0,i.jsxs)("div",{style:l.emptyState,children:[i.jsx("div",{style:l.emptyStateIcon,children:"⏳"}),i.jsx("div",{style:l.emptyStateText,children:"Результат ещё не готов"}),(0,i.jsxs)("button",{onClick:h,style:l.refreshBtn,children:[i.jsx("span",{style:{...l.spinner,display:x?"inline-block":"none"}}),i.jsx("span",{children:"Проверить снова"})]})]})]})]})]})})}function d(){return i.jsx(n.Suspense,{fallback:i.jsx("div",{style:l.page,children:i.jsx("div",{style:l.container,children:i.jsx("div",{style:l.emptyState,children:"Загрузка..."})})}),children:i.jsx(a,{})})}let l={page:{minHeight:"100vh",padding:"40px 20px",background:"#f5f5f5"},container:{maxWidth:"900px",margin:"0 auto"},header:{background:"white",padding:"20px 30px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",marginBottom:"20px",display:"flex",justifyContent:"space-between",alignItems:"center"},headerTitle:{fontSize:"20px",fontWeight:600,color:"#333"},headerActions:{display:"flex",gap:"10px"},btnSmall:{padding:"8px 16px",borderRadius:"6px",fontSize:"13px",cursor:"pointer",border:"1px solid #ddd",background:"white",color:"#666",textDecoration:"none"},card:{background:"white",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)",overflow:"hidden"},cardHeader:{padding:"20px 30px",borderBottom:"1px solid #eee",display:"flex",alignItems:"center"},cardTitle:{fontSize:"16px",fontWeight:600,color:"#333"},cardBody:{padding:"30px"},statusBadge:{display:"inline-block",padding:"4px 12px",borderRadius:"20px",fontSize:"12px",fontWeight:500,marginLeft:"10px"},statusRunning:{background:"#fff3cd",color:"#856404"},statusCompleted:{background:"#d4edda",color:"#155724"},statusFailed:{background:"#f8d7da",color:"#721c24"},emptyState:{textAlign:"center",padding:"60px 20px",color:"#666"},emptyStateIcon:{fontSize:"48px",marginBottom:"16px"},emptyStateText:{fontSize:"16px",marginBottom:"24px"},refreshBtn:{display:"inline-flex",alignItems:"center",gap:"8px",padding:"12px 24px",background:"#007bff",color:"white",border:"none",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer"},spinner:{display:"inline-block",width:"16px",height:"16px",border:"2px solid rgba(255,255,255,0.3)",borderTopColor:"white",borderRadius:"50%",animation:"spin 1s linear infinite"},spinnerLarge:{width:"32px",height:"32px",border:"2px solid rgba(0,123,255,0.3)",borderTopColor:"#007bff",borderRadius:"50%",animation:"spin 1s linear infinite"},error:{background:"#fee",color:"#c00",padding:"12px",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},promptInfo:{background:"#f8f9fa",padding:"16px 20px",borderRadius:"6px",marginBottom:"20px"},promptLabel:{fontSize:"12px",color:"#666",marginBottom:"4px"},promptText:{fontSize:"14px",color:"#333"},fileContainer:{display:"flex",flexDirection:"column",gap:"20px"},fileCard:{border:"1px solid #eee",borderRadius:"8px",overflow:"hidden"},filePreview:{width:"100%",background:"#f5f5f5",display:"flex",alignItems:"center",justifyContent:"center",minHeight:"300px",maxHeight:"600px"},previewMedia:{maxWidth:"100%",maxHeight:"600px",objectFit:"contain"},fileInfo:{padding:"16px 20px",background:"#fafafa",display:"flex",justifyContent:"space-between",alignItems:"center",flexWrap:"wrap",gap:"12px"},fileMeta:{display:"flex",gap:"16px",flexWrap:"wrap"},fileMetaItem:{fontSize:"13px",color:"#666"},fileActions:{display:"flex",gap:"10px"},btnPrimary:{padding:"10px 20px",borderRadius:"6px",fontSize:"13px",fontWeight:500,cursor:"pointer",textDecoration:"none",border:"none",display:"inline-flex",alignItems:"center",gap:"6px",background:"#007bff",color:"white"},btnSecondary:{padding:"10px 20px",borderRadius:"6px",fontSize:"13px",fontWeight:500,cursor:"pointer",textDecoration:"none",border:"1px solid #ddd",display:"inline-flex",alignItems:"center",gap:"6px",background:"#f5f5f5",color:"#333"}}},5047:(e,t,r)=>{"use strict";var i=r(7389);r.o(i,"useRouter")&&r.d(t,{useRouter:function(){return i.useRouter}}),r.o(i,"useSearchParams")&&r.d(t,{useSearchParams:function(){return i.useSearchParams}})},1506:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>s,metadata:()=>n});var i=r(9510);r(7272);let n={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function s({children:e}){return i.jsx("html",{lang:"ru",children:i.jsx("body",{children:e})})}},5556:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>i});let i=(0,r(8570).createProxy)(String.raw`/opt/uno-click/site/app/result/page.tsx#default`)},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),i=t.X(0,[819],()=>r(5554));module.exports=i})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/result/page.js.nft.json b/site/.next/standalone/.next/server/app/result/page.js.nft.json new file mode 100644 index 0000000..d728bdc --- /dev/null +++ b/site/.next/standalone/.next/server/app/result/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/result/page_client-reference-manifest.js b/site/.next/standalone/.next/server/app/result/page_client-reference-manifest.js new file mode 100644 index 0000000..7f20ca7 --- /dev/null +++ b/site/.next/standalone/.next/server/app/result/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/result/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":["609","static/chunks/app/result/page-7096d0d3c33dfb7f.js"],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/result/page":[]}} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/uniqueizer.html b/site/.next/standalone/.next/server/app/uniqueizer.html new file mode 100644 index 0000000..d6dfa2e --- /dev/null +++ b/site/.next/standalone/.next/server/app/uniqueizer.html @@ -0,0 +1 @@ +Uno Click
Загрузка...
\ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/uniqueizer.meta b/site/.next/standalone/.next/server/app/uniqueizer.meta new file mode 100644 index 0000000..3b9b969 --- /dev/null +++ b/site/.next/standalone/.next/server/app/uniqueizer.meta @@ -0,0 +1,5 @@ +{ + "headers": { + "x-next-cache-tags": "_N_T_/layout,_N_T_/uniqueizer/layout,_N_T_/uniqueizer/page,_N_T_/uniqueizer" + } +} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/uniqueizer.rsc b/site/.next/standalone/.next/server/app/uniqueizer.rsc new file mode 100644 index 0000000..b77fceb --- /dev/null +++ b/site/.next/standalone/.next/server/app/uniqueizer.rsc @@ -0,0 +1,7 @@ +2:I[9107,[],"ClientPageRoot"] +3:I[2572,["167","static/chunks/app/uniqueizer/page-e45a265393ee86bd.js"],"default",1] +4:I[4707,[],""] +5:I[6423,[],""] +0:["1RTyIO_go5amcBV6dwgIE",[[["",{"children":["uniqueizer",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["uniqueizer",{"children":["__PAGE__",{},[["$L1",["$","$L2",null,{"props":{"params":{},"searchParams":{}},"Component":"$3"}],null],null],null]},[null,["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children","uniqueizer","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/6f88e2c7ca075e83.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"ru","children":["$","body",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L6",null]]]] +6:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Uno Click"}],["$","meta","3",{"name":"description","content":"Uno Click - платформа для генерации контента"}]] +1:null diff --git a/site/.next/standalone/.next/server/app/uniqueizer/page.js b/site/.next/standalone/.next/server/app/uniqueizer/page.js new file mode 100644 index 0000000..142174b --- /dev/null +++ b/site/.next/standalone/.next/server/app/uniqueizer/page.js @@ -0,0 +1 @@ +(()=>{var e={};e.id=167,e.ids=[167],e.modules={2934:e=>{"use strict";e.exports=require("next/dist/client/components/action-async-storage.external.js")},4580:e=>{"use strict";e.exports=require("next/dist/client/components/request-async-storage.external.js")},5869:e=>{"use strict";e.exports=require("next/dist/client/components/static-generation-async-storage.external.js")},399:e=>{"use strict";e.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},9912:(e,t,i)=>{"use strict";i.r(t),i.d(t,{GlobalError:()=>s.a,__next_app__:()=>u,originalPathname:()=>c,pages:()=>p,routeModule:()=>x,tree:()=>l}),i(8686),i(1506),i(5866);var r=i(3191),n=i(8716),o=i(7922),s=i.n(o),a=i(5231),d={};for(let e in a)0>["default","tree","pages","GlobalError","originalPathname","__next_app__","routeModule"].indexOf(e)&&(d[e]=()=>a[e]);i.d(t,d);let l=["",{children:["uniqueizer",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(i.bind(i,8686)),"/opt/uno-click/site/app/uniqueizer/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(i.bind(i,1506)),"/opt/uno-click/site/app/layout.tsx"],"not-found":[()=>Promise.resolve().then(i.t.bind(i,5866,23)),"next/dist/client/components/not-found-error"]}],p=["/opt/uno-click/site/app/uniqueizer/page.tsx"],c="/uniqueizer/page",u={require:i,loadChunk:()=>Promise.resolve()},x=new r.AppPageRouteModule({definition:{kind:n.x.APP_PAGE,page:"/uniqueizer/page",pathname:"/uniqueizer",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:l}})},4199:()=>{},5305:(e,t,i)=>{Promise.resolve().then(i.bind(i,6880))},9682:(e,t,i)=>{Promise.resolve().then(i.t.bind(i,2994,23)),Promise.resolve().then(i.t.bind(i,6114,23)),Promise.resolve().then(i.t.bind(i,9727,23)),Promise.resolve().then(i.t.bind(i,9671,23)),Promise.resolve().then(i.t.bind(i,1868,23)),Promise.resolve().then(i.t.bind(i,4759,23))},6880:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>d});var r=i(326),n=i(7577),o=i(5047);function s(){let e=(0,o.useRouter)(),t=(0,o.useSearchParams)(),i=(0,n.useRef)(null),s=(0,n.useRef)(null),[d,l]=(0,n.useState)(null),[p,c]=(0,n.useState)(null),[u,x]=(0,n.useState)(!1),[f,h]=(0,n.useState)(0),[g,m]=(0,n.useState)(""),[b,v]=(0,n.useState)(""),[y,j]=(0,n.useState)(null),w=t.get("generationUuid"),[S,P]=(0,n.useState)(w),[k,R]=(0,n.useState)(!1);async function z(){try{let e=await B();j(e)}catch(e){}}async function B(){if(!d)throw Error("Файл не выбран");if(!S)throw Error("generationUuid не получен");x(!0),h(0),v(""),m("Загрузка видео...");try{let e=await q(),t=new FormData;return t.append("file",d),t.append("generationUuid",S),new Promise((i,r)=>{let n=new XMLHttpRequest;n.upload.addEventListener("progress",e=>{if(e.lengthComputable){let t=Math.round(e.loaded/e.total*100);h(t),m(`Загрузка видео... ${t}%`)}}),n.addEventListener("load",()=>{if(201===n.status){let e=JSON.parse(n.responseText);h(100),m("Видео загружено"),x(!1),i(e.data.s3Key)}else{let e="Ошибка загрузки видео";try{e=JSON.parse(n.responseText).message||e}catch(e){}r(Error(e))}}),n.addEventListener("error",()=>{r(Error("Ошибка сети при загрузке"))}),n.open("POST","/api/upload/video"),n.setRequestHeader("x-csrf-token",e),n.withCredentials=!0,n.send(t)})}catch(e){throw v(e instanceof Error?e.message:"Ошибка загрузки"),x(!1),e}}async function C(){v("");try{if(!S)throw Error("generationUuid не получен");let t=y;t||(x(!0),m("Загрузка видео..."),t=await B(),j(t),x(!1)),m("Видео отправлено на обработку");let i=await q(),r={input:{url:t}},n=await fetch("/api/scenario/uniqueizer/step/1",{method:"POST",headers:{"Content-Type":"application/json","x-csrf-token":i},credentials:"same-origin",body:JSON.stringify(r)});if(!n.ok){let e=await n.json();throw Error(e.message||"Ошибка выполнения шага")}setTimeout(()=>{e.push(`/result?generationUuid=${S}`)},1e3)}catch(e){v(e instanceof Error?e.message:"Ошибка обработки"),x(!1)}}async function q(){let e=await fetch("/api/auth/csrf",{credentials:"same-origin"});return(await e.json()).csrfToken||""}return r.jsx("div",{style:a.page,children:r.jsx("div",{style:a.container,children:(0,r.jsxs)("div",{style:a.card,children:[r.jsx("h1",{style:a.title,children:"Уникализация видео"}),b&&r.jsx("div",{style:a.error,children:b}),g&&r.jsx("div",{style:a.status,children:r.jsx("span",{children:g})}),!k&&(0,r.jsxs)("div",{style:a.infoBox,children:[r.jsx("span",{style:a.spinner}),"Запуск сценария..."]}),k&&!b&&(0,r.jsxs)("div",{style:a.infoBox,children:["✓ Сценарий запущен (ID: ",S?.slice(0,8),"...)"]}),(0,r.jsxs)("div",{style:a.section,children:[r.jsx("h2",{style:a.sectionTitle,children:"1. Загрузите видео"}),d?(0,r.jsxs)("div",{style:a.filePreview,children:[r.jsx("video",{src:p,controls:!0,style:a.previewVideo}),(0,r.jsxs)("div",{style:a.filePreviewInfo,children:[r.jsx("div",{style:a.filePreviewName,children:d.name}),r.jsx("div",{children:function(e){if(0===e)return"0 Bytes";let t=Math.floor(Math.log(e)/Math.log(1024));return Math.round(e/Math.pow(1024,t)*100)/100+" "+["Bytes","KB","MB","GB"][t]}(d.size)})]}),r.jsx("button",{type:"button",onClick:function(){l(null),c(null),j(null),i.current&&(i.current.value="")},style:a.fileRemove,disabled:u,children:"\xd7"})]}):(0,r.jsxs)("div",{ref:s,style:a.fileUpload,onClick:()=>i.current?.click(),children:[r.jsx("input",{ref:i,type:"file",accept:"video/mp4,video/quicktime,video/x-msvideo,video/webm",onChange:function(e){e.target.files?.length&&function(e){if(!["video/mp4","video/quicktime","video/x-msvideo","video/webm"].includes(e.type)){v("Недопустимый тип файла. Разрешены: MP4, MOV, AVI, WebM");return}if(e.size>524288e3){v("Файл слишком большой. Максимум: 500MB");return}l(e),c(URL.createObjectURL(e)),v(""),j(null)}(e.target.files[0])},style:{display:"none"}}),r.jsx("div",{style:a.fileUploadIcon,children:"\uD83C\uDFAC"}),r.jsx("div",{style:a.fileUploadText,children:"Нажмите для загрузки или перетащите файл"}),r.jsx("div",{style:a.fileUploadHint,children:"MP4, MOV, AVI, WebM до 500MB"})]}),d&&!y&&(0,r.jsxs)("div",{children:[u&&f>0&&(0,r.jsxs)("div",{style:a.progressContainer,children:[r.jsx("div",{style:{...a.progressBar,width:`${f}%`}}),(0,r.jsxs)("span",{style:a.progressText,children:[f,"%"]})]}),r.jsx("button",{onClick:z,disabled:u||!k,style:{...a.btn,...a.btnPrimary,...u||!k?a.btnDisabled:{}},children:u?"Загрузка...":"Загрузить видео"})]})]}),(y||d)&&(0,r.jsxs)("div",{style:a.section,children:[r.jsx("h2",{style:a.sectionTitle,children:"2. Уникализируйте"}),r.jsx("p",{style:a.sectionDesc,children:"После нажатия видео будет отправлено на обработку"}),r.jsx("button",{onClick:C,disabled:u||!k,style:{...a.btn,...a.btnPrimary,...u||!k?a.btnDisabled:{}},children:u?"Загрузка...":"Уникализировать"})]}),r.jsx("button",{onClick:function(){e.push("/dashboard")},style:a.btnSecondary,children:"Закрыть"})]})})})}let a={page:{minHeight:"100vh",background:"#f5f5f5",display:"flex",alignItems:"center",justifyContent:"center",padding:"40px 20px"},container:{maxWidth:"700px",width:"100%"},emptyState:{textAlign:"center",padding:"60px 20px",color:"#666",fontSize:"16px"},card:{background:"white",padding:"40px",borderRadius:"8px",boxShadow:"0 2px 10px rgba(0,0,0,0.1)"},title:{fontSize:"24px",fontWeight:600,marginBottom:"24px",color:"#333",textAlign:"center"},infoBox:{display:"flex",alignItems:"center",gap:"10px",padding:"12px",background:"#e8f5e9",color:"#2e7d32",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},section:{marginBottom:"32px",padding:"20px",background:"#f8f9fa",borderRadius:"8px"},sectionTitle:{fontSize:"16px",fontWeight:600,color:"#333",marginBottom:"8px"},sectionDesc:{fontSize:"14px",color:"#666",marginBottom:"16px"},fileUpload:{border:"2px dashed #ddd",borderRadius:"8px",padding:"40px 20px",textAlign:"center",cursor:"pointer",transition:"all 0.2s"},fileUploadIcon:{fontSize:"48px",marginBottom:"16px"},fileUploadText:{fontSize:"16px",color:"#666",marginBottom:"8px"},fileUploadHint:{fontSize:"13px",color:"#999"},filePreview:{position:"relative",marginBottom:"16px"},previewVideo:{width:"100%",maxHeight:"400px",borderRadius:"8px",background:"#000"},filePreviewInfo:{padding:"12px",background:"#fff",borderRadius:"6px",marginTop:"8px",fontSize:"14px",color:"#666"},filePreviewName:{fontWeight:500,color:"#333",marginBottom:"4px"},fileRemove:{position:"absolute",top:"8px",right:"8px",background:"rgba(220, 38, 38, 0.9)",color:"white",border:"none",borderRadius:"50%",width:"32px",height:"32px",fontSize:"20px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center"},btn:{width:"100%",padding:"14px 24px",borderRadius:"6px",fontSize:"15px",fontWeight:500,cursor:"pointer",border:"none",transition:"all 0.2s"},btnPrimary:{background:"#007bff",color:"white"},btnDisabled:{background:"#ccc",cursor:"not-allowed"},btnSecondary:{width:"100%",padding:"12px 24px",background:"#f5f5f5",color:"#333",border:"1px solid #ddd",borderRadius:"6px",fontSize:"14px",fontWeight:500,cursor:"pointer"},error:{background:"#fee",color:"#c00",padding:"12px",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},status:{display:"flex",alignItems:"center",gap:"10px",padding:"12px",background:"#e7f3ff",color:"#0066cc",borderRadius:"6px",marginBottom:"20px",fontSize:"14px"},spinner:{display:"inline-block",width:"16px",height:"16px",border:"2px solid rgba(0,123,255,0.3)",borderTopColor:"#007bff",borderRadius:"50%",animation:"spin 1s linear infinite"},progressContainer:{position:"relative",height:"24px",background:"#e0e0e0",borderRadius:"12px",marginBottom:"12px",overflow:"hidden"},progressBar:{height:"100%",background:"linear-gradient(90deg, #007bff, #0056b3)",borderRadius:"12px",transition:"width 0.3s ease"},progressText:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",fontSize:"13px",fontWeight:"600",color:"#333"}};function d(){return r.jsx(n.Suspense,{fallback:r.jsx("div",{style:a.page,children:r.jsx("div",{style:a.container,children:r.jsx("div",{style:a.emptyState,children:"Загрузка..."})})}),children:r.jsx(s,{})})}},5047:(e,t,i)=>{"use strict";var r=i(7389);i.o(r,"useRouter")&&i.d(t,{useRouter:function(){return r.useRouter}}),i.o(r,"useSearchParams")&&i.d(t,{useSearchParams:function(){return r.useSearchParams}})},1506:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>o,metadata:()=>n});var r=i(9510);i(7272);let n={title:"Uno Click",description:"Uno Click - платформа для генерации контента"};function o({children:e}){return r.jsx("html",{lang:"ru",children:r.jsx("body",{children:e})})}},8686:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>r});let r=(0,i(8570).createProxy)(String.raw`/opt/uno-click/site/app/uniqueizer/page.tsx#default`)},7272:()=>{}};var t=require("../../webpack-runtime.js");t.C(e);var i=e=>t(t.s=e),r=t.X(0,[819],()=>i(9912));module.exports=r})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/uniqueizer/page.js.nft.json b/site/.next/standalone/.next/server/app/uniqueizer/page.js.nft.json new file mode 100644 index 0000000..d728bdc --- /dev/null +++ b/site/.next/standalone/.next/server/app/uniqueizer/page.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../../node_modules/next/dist/client/components/action-async-storage-instance.js","../../../../node_modules/next/dist/client/components/action-async-storage.external.js","../../../../node_modules/next/dist/client/components/async-local-storage.js","../../../../node_modules/next/dist/client/components/request-async-storage-instance.js","../../../../node_modules/next/dist/client/components/request-async-storage.external.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage-instance.js","../../../../node_modules/next/dist/client/components/static-generation-async-storage.external.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/package.json","../../../../package.json","../../../package.json","../../chunks/819.js","../../webpack-runtime.js","page_client-reference-manifest.js"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/app/uniqueizer/page_client-reference-manifest.js b/site/.next/standalone/.next/server/app/uniqueizer/page_client-reference-manifest.js new file mode 100644 index 0000000..8ba5080 --- /dev/null +++ b/site/.next/standalone/.next/server/app/uniqueizer/page_client-reference-manifest.js @@ -0,0 +1 @@ +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/uniqueizer/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"80":{"*":{"id":"1868","name":"*","chunks":[],"async":false}},"1060":{"*":{"id":"9727","name":"*","chunks":[],"async":false}},"1720":{"*":{"id":"7581","name":"*","chunks":[],"async":false}},"1882":{"*":{"id":"7338","name":"*","chunks":[],"async":false}},"2572":{"*":{"id":"6880","name":"*","chunks":[],"async":false}},"2846":{"*":{"id":"2994","name":"*","chunks":[],"async":false}},"4437":{"*":{"id":"7367","name":"*","chunks":[],"async":false}},"4707":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"6423":{"*":{"id":"4759","name":"*","chunks":[],"async":false}},"7340":{"*":{"id":"8743","name":"*","chunks":[],"async":false}},"9107":{"*":{"id":"6114","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/app-router.js":{"id":2846,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/client-page.js":{"id":9107,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":1060,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/layout-router.js":{"id":4707,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":80,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":6423,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/globals.css":{"id":7960,"name":"*","chunks":["185","static/chunks/app/layout-18e79b1a6e9bb295.js"],"async":false},"/opt/uno-click/site/app/dashboard/page.tsx":{"id":1720,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/page.tsx":{"id":7340,"name":"*","chunks":["931","static/chunks/app/page-7d69bfe6ff018b59.js"],"async":false},"/opt/uno-click/site/app/prompt/page.tsx":{"id":1882,"name":"*","chunks":[],"async":false},"/opt/uno-click/site/app/uniqueizer/page.tsx":{"id":2572,"name":"*","chunks":["167","static/chunks/app/uniqueizer/page-e45a265393ee86bd.js"],"async":false},"/opt/uno-click/site/app/result/page.tsx":{"id":4437,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/opt/uno-click/site/":[],"/opt/uno-click/site/app/layout":["static/css/6f88e2c7ca075e83.css"],"/opt/uno-click/site/app/page":[],"/opt/uno-click/site/app/uniqueizer/page":[]}} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/chunks/682.js b/site/.next/standalone/.next/server/chunks/682.js new file mode 100644 index 0000000..aa2b899 --- /dev/null +++ b/site/.next/standalone/.next/server/chunks/682.js @@ -0,0 +1,6 @@ +"use strict";exports.id=682,exports.ids=[682],exports.modules={1682:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{Head:function(){return y},Html:function(){return I},Main:function(){return T},NextScript:function(){return S},default:function(){return P}});let r=n(997),i=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=p(void 0);if(n&&n.has(e))return n.get(e);var r={__proto__:null},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(r,o,s):r[o]=e[o]}return r.default=e,n&&n.set(e,r),r}(n(6689)),o=n(5104),s=n(5778),a=n(9630),l=function(e){return e&&e.__esModule?e:{default:e}}(n(676)),u=n(3112),c=n(8584);function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(p=function(e){return e?n:t})(e)}let f=new Set;function d(e,t,n){let r=(0,s.getPageFiles)(e,"/_app"),i=n?[]:(0,s.getPageFiles)(e,t);return{sharedFiles:r,pageFiles:i,allFiles:[...new Set([...r,...i])]}}function h(e,t){let{assetPrefix:n,buildManifest:i,assetQueryString:o,disableOptimizedLoading:s,crossOrigin:a}=e;return i.polyfillFiles.filter(e=>e.endsWith(".js")&&!e.endsWith(".module.js")).map(e=>(0,r.jsx)("script",{defer:!s,nonce:t.nonce,crossOrigin:t.crossOrigin||a,noModule:!0,src:`${n}/_next/${(0,c.encodeURIPath)(e)}${o}`},e))}function m({styles:e}){if(!e)return null;let t=Array.isArray(e)?e:[];if(e.props&&Array.isArray(e.props.children)){let n=e=>{var t,n;return null==e?void 0:null==(n=e.props)?void 0:null==(t=n.dangerouslySetInnerHTML)?void 0:t.__html};e.props.children.forEach(e=>{Array.isArray(e)?e.forEach(e=>n(e)&&t.push(e)):n(e)&&t.push(e)})}return(0,r.jsx)("style",{"amp-custom":"",dangerouslySetInnerHTML:{__html:t.map(e=>e.props.dangerouslySetInnerHTML.__html).join("").replace(/\/\*# sourceMappingURL=.*\*\//g,"").replace(/\/\*@ sourceURL=.*?\*\//g,"")}})}function _(e,t,n){let{dynamicImports:i,assetPrefix:o,isDevelopment:s,assetQueryString:a,disableOptimizedLoading:l,crossOrigin:u}=e;return i.map(e=>!e.endsWith(".js")||n.allFiles.includes(e)?null:(0,r.jsx)("script",{async:!s&&l,defer:!l,src:`${o}/_next/${(0,c.encodeURIPath)(e)}${a}`,nonce:t.nonce,crossOrigin:t.crossOrigin||u},e))}function g(e,t,n){var i;let{assetPrefix:o,buildManifest:s,isDevelopment:a,assetQueryString:l,disableOptimizedLoading:u,crossOrigin:p}=e;return[...n.allFiles.filter(e=>e.endsWith(".js")),...null==(i=s.lowPriorityFiles)?void 0:i.filter(e=>e.endsWith(".js"))].map(e=>(0,r.jsx)("script",{src:`${o}/_next/${(0,c.encodeURIPath)(e)}${l}`,nonce:t.nonce,async:!a&&u,defer:!u,crossOrigin:t.crossOrigin||p},e))}function E(e,t){let{scriptLoader:n,disableOptimizedLoading:o,crossOrigin:s}=e,a=function(e,t){let{assetPrefix:n,scriptLoader:o,crossOrigin:s,nextScriptWorkers:a}=e;if(!a)return null;try{let{partytownSnippet:e}=require("@builder.io/partytown/integration"),a=(Array.isArray(t.children)?t.children:[t.children]).find(e=>{var t,n;return!!e&&!!e.props&&(null==e?void 0:null==(n=e.props)?void 0:null==(t=n.dangerouslySetInnerHTML)?void 0:t.__html.length)&&"data-partytown-config"in e.props});return(0,r.jsxs)(r.Fragment,{children:[!a&&(0,r.jsx)("script",{"data-partytown-config":"",dangerouslySetInnerHTML:{__html:` + partytown = { + lib: "${n}/_next/static/~partytown/" + }; + `}}),(0,r.jsx)("script",{"data-partytown":"",dangerouslySetInnerHTML:{__html:e()}}),(o.worker||[]).map((e,n)=>{let{strategy:r,src:o,children:a,dangerouslySetInnerHTML:l,...u}=e,c={};if(o)c.src=o;else if(l&&l.__html)c.dangerouslySetInnerHTML={__html:l.__html};else if(a)c.dangerouslySetInnerHTML={__html:"string"==typeof a?a:Array.isArray(a)?a.join(""):""};else throw Error("Invalid usage of next/script. Did you forget to include a src attribute or an inline script? https://nextjs.org/docs/messages/invalid-script");return(0,i.createElement)("script",{...c,...u,type:"text/partytown",key:o||n,nonce:t.nonce,"data-nscript":"worker",crossOrigin:t.crossOrigin||s})})]})}catch(e){return(0,l.default)(e)&&"MODULE_NOT_FOUND"!==e.code&&console.warn(`Warning: ${e.message}`),null}}(e,t),u=(n.beforeInteractive||[]).filter(e=>e.src).map((e,n)=>{let{strategy:r,...a}=e;return(0,i.createElement)("script",{...a,key:a.src||n,defer:a.defer??!o,nonce:t.nonce,"data-nscript":"beforeInteractive",crossOrigin:t.crossOrigin||s})});return(0,r.jsxs)(r.Fragment,{children:[a,u]})}class y extends i.default.Component{static #e=this.contextType=u.HtmlContext;getCssLinks(e){let{assetPrefix:t,assetQueryString:n,dynamicImports:i,crossOrigin:o,optimizeCss:s,optimizeFonts:a}=this.context,l=e.allFiles.filter(e=>e.endsWith(".css")),u=new Set(e.sharedFiles),p=new Set([]),f=Array.from(new Set(i.filter(e=>e.endsWith(".css"))));if(f.length){let e=new Set(l);p=new Set(f=f.filter(t=>!(e.has(t)||u.has(t)))),l.push(...f)}let d=[];return l.forEach(e=>{let i=u.has(e);s||d.push((0,r.jsx)("link",{nonce:this.props.nonce,rel:"preload",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,as:"style",crossOrigin:this.props.crossOrigin||o},`${e}-preload`));let a=p.has(e);d.push((0,r.jsx)("link",{nonce:this.props.nonce,rel:"stylesheet",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,crossOrigin:this.props.crossOrigin||o,"data-n-g":a?void 0:i?"":void 0,"data-n-p":a?void 0:i?void 0:""},e))}),a&&(d=this.makeStylesheetInert(d)),0===d.length?null:d}getPreloadDynamicChunks(){let{dynamicImports:e,assetPrefix:t,assetQueryString:n,crossOrigin:i}=this.context;return e.map(e=>e.endsWith(".js")?(0,r.jsx)("link",{rel:"preload",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,as:"script",nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||i},e):null).filter(Boolean)}getPreloadMainLinks(e){let{assetPrefix:t,assetQueryString:n,scriptLoader:i,crossOrigin:o}=this.context,s=e.allFiles.filter(e=>e.endsWith(".js"));return[...(i.beforeInteractive||[]).map(e=>(0,r.jsx)("link",{nonce:this.props.nonce,rel:"preload",href:e.src,as:"script",crossOrigin:this.props.crossOrigin||o},e.src)),...s.map(e=>(0,r.jsx)("link",{nonce:this.props.nonce,rel:"preload",href:`${t}/_next/${(0,c.encodeURIPath)(e)}${n}`,as:"script",crossOrigin:this.props.crossOrigin||o},e))]}getBeforeInteractiveInlineScripts(){let{scriptLoader:e}=this.context,{nonce:t,crossOrigin:n}=this.props;return(e.beforeInteractive||[]).filter(e=>!e.src&&(e.dangerouslySetInnerHTML||e.children)).map((e,r)=>{let{strategy:o,children:s,dangerouslySetInnerHTML:a,src:l,...u}=e,c="";return a&&a.__html?c=a.__html:s&&(c="string"==typeof s?s:Array.isArray(s)?s.join(""):""),(0,i.createElement)("script",{...u,dangerouslySetInnerHTML:{__html:c},key:u.id||r,nonce:t,"data-nscript":"beforeInteractive",crossOrigin:n||void 0})})}getDynamicChunks(e){return _(this.context,this.props,e)}getPreNextScripts(){return E(this.context,this.props)}getScripts(e){return g(this.context,this.props,e)}getPolyfillScripts(){return h(this.context,this.props)}makeStylesheetInert(e){return i.default.Children.map(e,e=>{var t,n;if((null==e?void 0:e.type)==="link"&&(null==e?void 0:null==(t=e.props)?void 0:t.href)&&o.OPTIMIZED_FONT_PROVIDERS.some(({url:t})=>{var n,r;return null==e?void 0:null==(r=e.props)?void 0:null==(n=r.href)?void 0:n.startsWith(t)})){let t={...e.props||{},"data-href":e.props.href,href:void 0};return i.default.cloneElement(e,t)}if(null==e?void 0:null==(n=e.props)?void 0:n.children){let t={...e.props||{},children:this.makeStylesheetInert(e.props.children)};return i.default.cloneElement(e,t)}return e}).filter(Boolean)}render(){let{styles:e,ampPath:t,inAmpMode:o,hybridAmp:s,canonicalBase:a,__NEXT_DATA__:l,dangerousAsPath:u,headTags:p,unstable_runtimeJS:f,unstable_JsPreload:h,disableOptimizedLoading:_,optimizeCss:g,optimizeFonts:E,assetPrefix:y,nextFontManifest:S}=this.context,I=!1===f,T=!1===h||!_;this.context.docComponentsRendered.Head=!0;let{head:P}=this.context,O=[],x=[];P&&(P.forEach(e=>{let t;this.context.strictNextHead&&(t=i.default.createElement("meta",{name:"next-head",content:"1"})),e&&"link"===e.type&&"preload"===e.props.rel&&"style"===e.props.as?(t&&O.push(t),O.push(e)):e&&(t&&("meta"!==e.type||!e.props.charSet)&&x.push(t),x.push(e))}),P=O.concat(x));let b=i.default.Children.toArray(this.props.children).filter(Boolean);E&&!o&&(b=this.makeStylesheetInert(b));let N=!1,j=!1;P=i.default.Children.map(P||[],e=>{if(!e)return e;let{type:t,props:n}=e;if(o){let r="";if("meta"===t&&"viewport"===n.name?r='name="viewport"':"link"===t&&"canonical"===n.rel?j=!0:"script"===t&&(n.src&&-1>n.src.indexOf("ampproject")||n.dangerouslySetInnerHTML&&(!n.type||"text/javascript"===n.type))&&(r="{r+=` ${e}="${n[e]}"`}),r+="/>"),r)return console.warn(`Found conflicting amp tag "${e.type}" with conflicting prop ${r} in ${l.page}. https://nextjs.org/docs/messages/conflicting-amp-tag`),null}else"link"===t&&"amphtml"===n.rel&&(N=!0);return e});let v=d(this.context.buildManifest,this.context.__NEXT_DATA__.page,o),R=function(e,t,n=""){if(!e)return{preconnect:null,preload:null};let i=e.pages["/_app"],o=e.pages[t],s=Array.from(new Set([...i??[],...o??[]]));return{preconnect:0===s.length&&(i||o)?(0,r.jsx)("link",{"data-next-font":e.pagesUsingSizeAdjust?"size-adjust":"",rel:"preconnect",href:"/",crossOrigin:"anonymous"}):null,preload:s?s.map(e=>{let t=/\.(woff|woff2|eot|ttf|otf)$/.exec(e)[1];return(0,r.jsx)("link",{rel:"preload",href:`${n}/_next/${(0,c.encodeURIPath)(e)}`,as:"font",type:`font/${t}`,crossOrigin:"anonymous","data-next-font":e.includes("-s")?"size-adjust":""},e)}):null}}(S,u,y);return(0,r.jsxs)("head",{...function(e){let{crossOrigin:t,nonce:n,...r}=e;return r}(this.props),children:[this.context.isDevelopment&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("style",{"data-next-hide-fouc":!0,"data-ampdevmode":o?"true":void 0,dangerouslySetInnerHTML:{__html:"body{display:none}"}}),(0,r.jsx)("noscript",{"data-next-hide-fouc":!0,"data-ampdevmode":o?"true":void 0,children:(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{display:block}"}})})]}),P,this.context.strictNextHead?null:(0,r.jsx)("meta",{name:"next-head-count",content:i.default.Children.count(P||[]).toString()}),b,E&&(0,r.jsx)("meta",{name:"next-font-preconnect"}),R.preconnect,R.preload,o&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("meta",{name:"viewport",content:"width=device-width,minimum-scale=1,initial-scale=1"}),!j&&(0,r.jsx)("link",{rel:"canonical",href:a+n(733).cleanAmpPath(u)}),(0,r.jsx)("link",{rel:"preload",as:"script",href:"https://cdn.ampproject.org/v0.js"}),(0,r.jsx)(m,{styles:e}),(0,r.jsx)("style",{"amp-boilerplate":"",dangerouslySetInnerHTML:{__html:"body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}"}}),(0,r.jsx)("noscript",{children:(0,r.jsx)("style",{"amp-boilerplate":"",dangerouslySetInnerHTML:{__html:"body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}"}})}),(0,r.jsx)("script",{async:!0,src:"https://cdn.ampproject.org/v0.js"})]}),!o&&(0,r.jsxs)(r.Fragment,{children:[!N&&s&&(0,r.jsx)("link",{rel:"amphtml",href:a+(t||`${u}${u.includes("?")?"&":"?"}amp=1`)}),this.getBeforeInteractiveInlineScripts(),!g&&this.getCssLinks(v),!g&&(0,r.jsx)("noscript",{"data-n-css":this.props.nonce??""}),!I&&!T&&this.getPreloadDynamicChunks(),!I&&!T&&this.getPreloadMainLinks(v),!_&&!I&&this.getPolyfillScripts(),!_&&!I&&this.getPreNextScripts(),!_&&!I&&this.getDynamicChunks(v),!_&&!I&&this.getScripts(v),g&&this.getCssLinks(v),g&&(0,r.jsx)("noscript",{"data-n-css":this.props.nonce??""}),this.context.isDevelopment&&(0,r.jsx)("noscript",{id:"__next_css__DO_NOT_USE__"}),e||null]}),i.default.createElement(i.default.Fragment,{},...p||[])]})}}class S extends i.default.Component{static #e=this.contextType=u.HtmlContext;getDynamicChunks(e){return _(this.context,this.props,e)}getPreNextScripts(){return E(this.context,this.props)}getScripts(e){return g(this.context,this.props,e)}getPolyfillScripts(){return h(this.context,this.props)}static getInlineScriptSource(e){let{__NEXT_DATA__:t,largePageDataBytes:r}=e;try{let i=JSON.stringify(t);if(f.has(t.page))return(0,a.htmlEscapeJsonString)(i);let o=Buffer.from(i).byteLength,s=n(5955).Z;return r&&o>r&&(f.add(t.page),console.warn(`Warning: data for page "${t.page}"${t.page===e.dangerousAsPath?"":` (path "${e.dangerousAsPath}")`} is ${s(o)} which exceeds the threshold of ${s(r)}, this amount of data can reduce performance. +See more info here: https://nextjs.org/docs/messages/large-page-data`)),(0,a.htmlEscapeJsonString)(i)}catch(e){if((0,l.default)(e)&&-1!==e.message.indexOf("circular structure"))throw Error(`Circular structure in "getInitialProps" result of page "${t.page}". https://nextjs.org/docs/messages/circular-structure`);throw e}}render(){let{assetPrefix:e,inAmpMode:t,buildManifest:n,unstable_runtimeJS:i,docComponentsRendered:o,assetQueryString:s,disableOptimizedLoading:a,crossOrigin:l}=this.context,u=!1===i;if(o.NextScript=!0,t)return null;let p=d(this.context.buildManifest,this.context.__NEXT_DATA__.page,t);return(0,r.jsxs)(r.Fragment,{children:[!u&&n.devFiles?n.devFiles.map(t=>(0,r.jsx)("script",{src:`${e}/_next/${(0,c.encodeURIPath)(t)}${s}`,nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||l},t)):null,u?null:(0,r.jsx)("script",{id:"__NEXT_DATA__",type:"application/json",nonce:this.props.nonce,crossOrigin:this.props.crossOrigin||l,dangerouslySetInnerHTML:{__html:S.getInlineScriptSource(this.context)}}),a&&!u&&this.getPolyfillScripts(),a&&!u&&this.getPreNextScripts(),a&&!u&&this.getDynamicChunks(p),a&&!u&&this.getScripts(p)]})}}function I(e){let{inAmpMode:t,docComponentsRendered:n,locale:o,scriptLoader:s,__NEXT_DATA__:a}=(0,u.useHtmlContext)();return n.Html=!0,function(e,t,n){var r,o,s,a;if(!n.children)return;let l=[],u=Array.isArray(n.children)?n.children:[n.children],c=null==(o=u.find(e=>e.type===y))?void 0:null==(r=o.props)?void 0:r.children,p=null==(a=u.find(e=>"body"===e.type))?void 0:null==(s=a.props)?void 0:s.children,f=[...Array.isArray(c)?c:[c],...Array.isArray(p)?p:[p]];i.default.Children.forEach(f,t=>{var n;if(t&&(null==(n=t.type)?void 0:n.__nextScript)){if("beforeInteractive"===t.props.strategy){e.beforeInteractive=(e.beforeInteractive||[]).concat([{...t.props}]);return}if(["lazyOnload","afterInteractive","worker"].includes(t.props.strategy)){l.push(t.props);return}}}),t.scriptLoader=l}(s,a,e),(0,r.jsx)("html",{...e,lang:e.lang||o||void 0,amp:t?"":void 0,"data-ampdevmode":void 0})}function T(){let{docComponentsRendered:e}=(0,u.useHtmlContext)();return e.Main=!0,(0,r.jsx)("next-js-internal-body-render-target",{})}class P extends i.default.Component{static getInitialProps(e){return e.defaultGetInitialProps(e)}render(){return(0,r.jsxs)(I,{children:[(0,r.jsx)(y,{}),(0,r.jsxs)("body",{children:[(0,r.jsx)(T,{}),(0,r.jsx)(S,{})]})]})}}P[o.NEXT_BUILTIN_DOCUMENT]=function(){return(0,r.jsxs)(I,{children:[(0,r.jsx)(y,{}),(0,r.jsxs)("body",{children:[(0,r.jsx)(T,{}),(0,r.jsx)(S,{})]})]})}},5104:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{APP_BUILD_MANIFEST:function(){return E},APP_CLIENT_INTERNALS:function(){return K},APP_PATHS_MANIFEST:function(){return m},APP_PATH_ROUTES_MANIFEST:function(){return _},AUTOMATIC_FONT_OPTIMIZATION_MANIFEST:function(){return M},BARREL_OPTIMIZATION_PREFIX:function(){return B},BLOCKED_PAGES:function(){return F},BUILD_ID_FILE:function(){return w},BUILD_MANIFEST:function(){return g},CLIENT_PUBLIC_FILES_PATH:function(){return D},CLIENT_REFERENCE_MANIFEST:function(){return W},CLIENT_STATIC_FILES_PATH:function(){return U},CLIENT_STATIC_FILES_RUNTIME_AMP:function(){return q},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return V},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return X},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return Q},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return ee},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return Z},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return J},COMPILER_INDEXES:function(){return o},COMPILER_NAMES:function(){return i},CONFIG_FILES:function(){return C},DEFAULT_RUNTIME_WEBPACK:function(){return et},DEFAULT_SANS_SERIF_FONT:function(){return el},DEFAULT_SERIF_FONT:function(){return ea},DEV_CLIENT_PAGES_MANIFEST:function(){return j},DEV_MIDDLEWARE_MANIFEST:function(){return R},EDGE_RUNTIME_WEBPACK:function(){return en},EDGE_UNSUPPORTED_NODE_APIS:function(){return ed},EXPORT_DETAIL:function(){return P},EXPORT_MARKER:function(){return T},FUNCTIONS_CONFIG_MANIFEST:function(){return y},GOOGLE_FONT_PROVIDER:function(){return eo},IMAGES_MANIFEST:function(){return b},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return Y},MIDDLEWARE_BUILD_MANIFEST:function(){return G},MIDDLEWARE_MANIFEST:function(){return v},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return z},MODERN_BROWSERSLIST_TARGET:function(){return r.default},NEXT_BUILTIN_DOCUMENT:function(){return $},NEXT_FONT_MANIFEST:function(){return I},OPTIMIZED_FONT_PROVIDERS:function(){return es},PAGES_MANIFEST:function(){return h},PHASE_DEVELOPMENT_SERVER:function(){return p},PHASE_EXPORT:function(){return l},PHASE_INFO:function(){return d},PHASE_PRODUCTION_BUILD:function(){return u},PHASE_PRODUCTION_SERVER:function(){return c},PHASE_TEST:function(){return f},PRERENDER_MANIFEST:function(){return O},REACT_LOADABLE_MANIFEST:function(){return A},ROUTES_MANIFEST:function(){return x},RSC_MODULE_TYPES:function(){return ef},SERVER_DIRECTORY:function(){return L},SERVER_FILES_MANIFEST:function(){return N},SERVER_PROPS_ID:function(){return ei},SERVER_REFERENCE_MANIFEST:function(){return H},STATIC_PROPS_ID:function(){return er},STATIC_STATUS_PAGES:function(){return eu},STRING_LITERAL_DROP_BUNDLE:function(){return k},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return S},SYSTEM_ENTRYPOINTS:function(){return eh},TRACE_OUTPUT_VERSION:function(){return ec},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ep},UNDERSCORE_NOT_FOUND_ROUTE:function(){return s},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return a}});let r=n(167)._(n(979)),i={client:"client",server:"server",edgeServer:"edge-server"},o={[i.client]:0,[i.server]:1,[i.edgeServer]:2},s="/_not-found",a=""+s+"/page",l="phase-export",u="phase-production-build",c="phase-production-server",p="phase-development-server",f="phase-test",d="phase-info",h="pages-manifest.json",m="app-paths-manifest.json",_="app-path-routes-manifest.json",g="build-manifest.json",E="app-build-manifest.json",y="functions-config-manifest.json",S="subresource-integrity-manifest",I="next-font-manifest",T="export-marker.json",P="export-detail.json",O="prerender-manifest.json",x="routes-manifest.json",b="images-manifest.json",N="required-server-files.json",j="_devPagesManifest.json",v="middleware-manifest.json",R="_devMiddlewareManifest.json",A="react-loadable-manifest.json",M="font-manifest.json",L="server",C=["next.config.js","next.config.mjs"],w="BUILD_ID",F=["/_document","/_app","/_error"],D="public",U="static",k="__NEXT_DROP_CLIENT_FILE__",$="__NEXT_BUILTIN_DOCUMENT__",B="__barrel_optimize__",W="client-reference-manifest",H="server-reference-manifest",G="middleware-build-manifest",z="middleware-react-loadable-manifest",Y="interception-route-rewrite-manifest",V="main",X=""+V+"-app",K="app-pages-internals",Z="react-refresh",q="amp",J="webpack",Q="polyfills",ee=Symbol(Q),et="webpack-runtime",en="edge-runtime-webpack",er="__N_SSG",ei="__N_SSP",eo="https://fonts.googleapis.com/",es=[{url:eo,preconnect:"https://fonts.gstatic.com"},{url:"https://use.typekit.net",preconnect:"https://use.typekit.net"}],ea={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},el={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},eu=["/500"],ec=1,ep=6e3,ef={client:"client",server:"server"},ed=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eh=new Set([V,Z,q,X]);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8584:(e,t)=>{function n(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return n}})},8299:(e,t)=>{function n(e){return Object.prototype.toString.call(e)}function r(e){if("[object Object]"!==n(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t.hasOwnProperty("isPrototypeOf")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getObjectClassLabel:function(){return n},isPlainObject:function(){return r}})},979:e=>{e.exports=["chrome 64","edge 79","firefox 67","opera 51","safari 12"]},5876:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"denormalizePagePath",{enumerable:!0,get:function(){return o}});let r=n(2189),i=n(4212);function o(e){let t=(0,i.normalizePathSep)(e);return t.startsWith("/index/")&&!(0,r.isDynamicRoute)(t)?t.slice(6):"/index"!==t?t:"/"}},5078:(e,t)=>{function n(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return n}})},9431:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePagePath",{enumerable:!0,get:function(){return s}});let r=n(5078),i=n(2189),o=n(5782);function s(e){let t=/^\/index(\/|$)/.test(e)&&!(0,i.isDynamicRoute)(e)?"/index"+e:"/"===e?"/index":(0,r.ensureLeadingSlash)(e);{let{posix:e}=n(5315),r=e.normalize(t);if(r!==t)throw new o.NormalizeError("Requested and resolved page mismatch: "+t+" "+r)}return t}},4212:(e,t)=>{function n(e){return e.replace(/\\/g,"/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathSep",{enumerable:!0,get:function(){return n}})},2340:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{normalizeAppPath:function(){return o},normalizeRscURL:function(){return s}});let r=n(5078),i=n(3737);function o(e){return(0,r.ensureLeadingSlash)(e.split("/").reduce((e,t,n,r)=>!t||(0,i.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&n===r.length-1?e:e+"/"+t,""))}function s(e){return e.replace(/\.rsc($|\?)/,"$1")}},2189:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{getSortedRoutes:function(){return r.getSortedRoutes},isDynamicRoute:function(){return i.isDynamicRoute}});let r=n(317),i=n(1735)},1735:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicRoute",{enumerable:!0,get:function(){return o}});let r=n(2407),i=/\/\[[^/]+?\](?=\/|$)/;function o(e){return(0,r.isInterceptionRouteAppPath)(e)&&(e=(0,r.extractInterceptionRouteInformation)(e).interceptedRoute),i.test(e)}},317:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSortedRoutes",{enumerable:!0,get:function(){return r}});class n{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e){void 0===e&&(e="/");let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let n=t.map(t=>this.children.get(t)._smoosh(""+e+t+"/")).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&n.push(...this.children.get("[]")._smoosh(e+"["+this.slugName+"]/")),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Error('You cannot define a route with the same specificity as a optional catch-all route ("'+t+'" and "'+t+"[[..."+this.optionalRestSlugName+']]").');n.unshift(t)}return null!==this.restSlugName&&n.push(...this.children.get("[...]")._smoosh(e+"[..."+this.restSlugName+"]/")),null!==this.optionalRestSlugName&&n.push(...this.children.get("[[...]]")._smoosh(e+"[[..."+this.optionalRestSlugName+"]]/")),n}_insert(e,t,r){if(0===e.length){this.placeholder=!1;return}if(r)throw Error("Catch-all must be the last part of the URL.");let i=e[0];if(i.startsWith("[")&&i.endsWith("]")){let n=i.slice(1,-1),s=!1;if(n.startsWith("[")&&n.endsWith("]")&&(n=n.slice(1,-1),s=!0),n.startsWith("...")&&(n=n.substring(3),r=!0),n.startsWith("[")||n.endsWith("]"))throw Error("Segment names may not start or end with extra brackets ('"+n+"').");if(n.startsWith("."))throw Error("Segment names may not start with erroneous periods ('"+n+"').");function o(e,n){if(null!==e&&e!==n)throw Error("You cannot use different slug names for the same dynamic path ('"+e+"' !== '"+n+"').");t.forEach(e=>{if(e===n)throw Error('You cannot have the same slug name "'+n+'" repeat within a single dynamic path');if(e.replace(/\W/g,"")===i.replace(/\W/g,""))throw Error('You cannot have the slug names "'+e+'" and "'+n+'" differ only by non-word symbols within a single dynamic path')}),t.push(n)}if(r){if(s){if(null!=this.restSlugName)throw Error('You cannot use both an required and optional catch-all route at the same level ("[...'+this.restSlugName+']" and "'+e[0]+'" ).');o(this.optionalRestSlugName,n),this.optionalRestSlugName=n,i="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Error('You cannot use both an optional and required catch-all route at the same level ("[[...'+this.optionalRestSlugName+']]" and "'+e[0]+'").');o(this.restSlugName,n),this.restSlugName=n,i="[...]"}}else{if(s)throw Error('Optional route parameters are not yet supported ("'+e[0]+'").');o(this.slugName,n),this.slugName=n,i="[]"}}this.children.has(i)||this.children.set(i,new n),this.children.get(i)._insert(e.slice(1),t,r)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function r(e){let t=new n;return e.forEach(e=>t.insert(e)),t.smoosh()}},3737:(e,t)=>{function n(e){return"("===e[0]&&e.endsWith(")")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DEFAULT_SEGMENT_KEY:function(){return i},PAGE_SEGMENT_KEY:function(){return r},isGroupSegment:function(){return n}});let r="__PAGE__",i="__DEFAULT__"},5782:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return E},MissingStaticPage:function(){return g},NormalizeError:function(){return m},PageNotFoundError:function(){return _},SP:function(){return f},ST:function(){return d},WEB_VITALS:function(){return n},execOnce:function(){return r},getDisplayName:function(){return l},getLocationOrigin:function(){return s},getURL:function(){return a},isAbsoluteUrl:function(){return o},isResSent:function(){return u},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return y}});let n=["CLS","FCP","FID","INP","LCP","TTFB"];function r(e){let t,n=!1;return function(){for(var r=arguments.length,i=Array(r),o=0;oi.test(e);function s(){let{protocol:e,hostname:t,port:n}=window.location;return e+"//"+t+(n?":"+n:"")}function a(){let{href:e}=window.location,t=s();return e.substring(t.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function u(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function p(e,t){let n=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let r=await e.getInitialProps(t);if(n&&u(n))return r;if(!r)throw Error('"'+l(e)+'.getInitialProps()" should resolve to an object. But found "'+r+'" instead.');return r}let f="undefined"!=typeof performance,d=f&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class m extends Error{}class _ extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class g extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class E extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function y(e){return JSON.stringify({message:e.message,stack:e.stack})}},676:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{default:function(){return i},getProperError:function(){return o}});let r=n(8299);function i(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}function o(e){return i(e)?e:Error((0,r.isPlainObject)(e)?JSON.stringify(e):e+"")}},5955:(e,t)=>{Object.defineProperty(t,"Z",{enumerable:!0,get:function(){return i}});let n=["B","kB","MB","GB","TB","PB","EB","ZB","YB"],r=(e,t)=>{let n=e;return"string"==typeof t?n=e.toLocaleString(t):!0===t&&(n=e.toLocaleString()),n};function i(e,t){if(!Number.isFinite(e))throw TypeError(`Expected a finite number, got ${typeof e}: ${e}`);if((t=Object.assign({},t)).signed&&0===e)return" 0 B";let i=e<0,o=i?"-":t.signed?"+":"";if(i&&(e=-e),e<1)return o+r(e,t.locale)+" B";let s=Math.min(Math.floor(Math.log10(e)/3),n.length-1);return o+r(e=Number((e/Math.pow(1e3,s)).toPrecision(3)),t.locale)+" "+n[s]}},2407:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return i},extractInterceptionRouteInformation:function(){return s},isInterceptionRouteAppPath:function(){return o}});let r=n(2340),i=["(..)(..)","(.)","(..)","(...)"];function o(e){return void 0!==e.split("/").find(e=>i.find(t=>e.startsWith(t)))}function s(e){let t,n,o;for(let r of e.split("/"))if(n=i.find(e=>r.startsWith(e))){[t,o]=e.split(n,2);break}if(!t||!n||!o)throw Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`);switch(t=(0,r.normalizeAppPath)(t),n){case"(.)":o="/"===t?`/${o}`:t+"/"+o;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);o=t.split("/").slice(0,-1).concat(o).join("/");break;case"(...)":o="/"+o;break;case"(..)(..)":let s=t.split("/");if(s.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);o=s.slice(0,-2).concat(o).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:o}}},7093:(e,t,n)=>{e.exports=n(2785)},3112:(e,t,n)=>{e.exports=n(7093).vendored.contexts.HtmlContext},5778:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getPageFiles",{enumerable:!0,get:function(){return o}});let r=n(5876),i=n(9431);function o(e,t){let n=(0,r.denormalizePagePath)((0,i.normalizePagePath)(t));return e.pages[n]||(console.warn(`Could not find files for ${n} in .next/build-manifest.json`),[])}},9630:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{ESCAPE_REGEX:function(){return r},htmlEscapeJsonString:function(){return i}});let n={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},r=/[&><\u2028\u2029]/g;function i(e){return e.replace(r,e=>n[e])}},733:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(t,{cleanAmpPath:function(){return o},debounce:function(){return s},isBlockedPage:function(){return i}});let r=n(5104);function i(e){return r.BLOCKED_PAGES.includes(e)}function o(e){return e.match(/\?amp=(y|yes|true|1)/)&&(e=e.replace(/\?amp=(y|yes|true|1)&?/,"?")),e.match(/&=(y|yes|true|1)/)&&(e=e.replace(/&=(y|yes|true|1)/,"")),e=e.replace(/\?$/,"")}function s(e,t,n=1/0){let r,i,o;let s=0,a=0;function l(){let u=Date.now(),c=a+t-u;c<=0||s+n>=u?(r=void 0,e.apply(o,i)):r=setTimeout(l,c)}return function(...e){i=e,o=this,a=Date.now(),void 0===r&&(s=a,r=setTimeout(l,t))}}},167:(e,t)=>{t._=t._interop_require_default=function(e){return e&&e.__esModule?e:{default:e}}}}; \ No newline at end of file diff --git a/site/.next/standalone/.next/server/chunks/819.js b/site/.next/standalone/.next/server/chunks/819.js new file mode 100644 index 0000000..92443b9 --- /dev/null +++ b/site/.next/standalone/.next/server/chunks/819.js @@ -0,0 +1,3 @@ +exports.id=819,exports.ids=[819],exports.modules={3486:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return a}});let n=r(8974),o=r(3658);function a(e,t){return(0,o.normalizePathTrailingSlash)((0,n.addPathPrefix)(e,""))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5424:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"callServer",{enumerable:!0,get:function(){return o}});let n=r(2994);async function o(e,t){let r=(0,n.getServerActionDispatcher)();if(!r)throw Error("Invariant: missing action dispatcher.");return new Promise((n,o)=>{r({actionId:e,actionArgs:t,resolve:n,reject:o})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8038:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AppRouterAnnouncer",{enumerable:!0,get:function(){return l}});let n=r(7577),o=r(962),a="next-route-announcer";function l(e){let{tree:t}=e,[r,l]=(0,n.useState)(null);(0,n.useEffect)(()=>(l(function(){var e;let t=document.getElementsByName(a)[0];if(null==t?void 0:null==(e=t.shadowRoot)?void 0:e.childNodes[0])return t.shadowRoot.childNodes[0];{let e=document.createElement(a);e.style.cssText="position:absolute";let t=document.createElement("div");return t.ariaLive="assertive",t.id="__next-route-announcer__",t.role="alert",t.style.cssText="position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal",e.attachShadow({mode:"open"}).appendChild(t),document.body.appendChild(e),t}}()),()=>{let e=document.getElementsByTagName(a)[0];(null==e?void 0:e.isConnected)&&document.body.removeChild(e)}),[]);let[i,u]=(0,n.useState)(""),s=(0,n.useRef)();return(0,n.useEffect)(()=>{let e="";if(document.title)e=document.title;else{let t=document.querySelector("h1");t&&(e=t.innerText||t.textContent||"")}void 0!==s.current&&s.current!==e&&u(e),s.current=e},[t]),r?(0,o.createPortal)(i,r):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5138:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION:function(){return n},FLIGHT_PARAMETERS:function(){return u},NEXT_DID_POSTPONE_HEADER:function(){return c},NEXT_ROUTER_PREFETCH_HEADER:function(){return a},NEXT_ROUTER_STATE_TREE:function(){return o},NEXT_RSC_UNION_QUERY:function(){return s},NEXT_URL:function(){return l},RSC_CONTENT_TYPE_HEADER:function(){return i},RSC_HEADER:function(){return r}});let r="RSC",n="Next-Action",o="Next-Router-State-Tree",a="Next-Router-Prefetch",l="Next-Url",i="text/x-component",u=[[r],[o],[a]],s="_rsc",c="x-nextjs-postponed";("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2994:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createEmptyCacheNode:function(){return N},default:function(){return I},getServerActionDispatcher:function(){return E},urlToUrlWithoutFlightMarker:function(){return j}});let n=r(8374),o=r(326),a=n._(r(7577)),l=r(2413),i=r(7767),u=r(7584),s=r(7008),c=r(7326),d=r(9727),f=r(6199),p=r(2148),g=r(3486),h=r(8038),_=r(6265),y=r(2492),v=r(9519),b=r(5138),m=r(4237),P=r(7929),R=r(8071),S=null,O=null;function E(){return O}let T={};function j(e){let t=new URL(e,location.origin);return t.searchParams.delete(b.NEXT_RSC_UNION_QUERY),t}function x(e){return e.origin!==window.location.origin}function M(e){let{appRouterState:t,sync:r}=e;return(0,a.useInsertionEffect)(()=>{let{tree:e,pushRef:n,canonicalUrl:o}=t,a={...n.preserveCustomHistoryState?window.history.state:{},__NA:!0,__PRIVATE_NEXTJS_INTERNALS_TREE:e};n.pendingPush&&(0,u.createHrefFromUrl)(new URL(window.location.href))!==o?(n.pendingPush=!1,window.history.pushState(a,"",o)):window.history.replaceState(a,"",o),r(t)},[t,r]),null}function N(){return{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null}}function C(e){null==e&&(e={});let t=window.history.state,r=null==t?void 0:t.__NA;r&&(e.__NA=r);let n=null==t?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;return n&&(e.__PRIVATE_NEXTJS_INTERNALS_TREE=n),e}function A(e){let{headCacheNode:t}=e,r=null!==t?t.head:null,n=null!==t?t.prefetchHead:null,o=null!==n?n:r;return(0,a.useDeferredValue)(r,o)}function w(e){let t,{buildId:r,initialHead:n,initialTree:u,urlParts:d,initialSeedData:b,couldBeIntercepted:E,assetPrefix:j,missingSlots:N}=e,w=(0,a.useMemo)(()=>(0,f.createInitialRouterState)({buildId:r,initialSeedData:b,urlParts:d,initialTree:u,initialParallelRoutes:S,location:null,initialHead:n,couldBeIntercepted:E}),[r,b,d,u,n,E]),[I,D,L]=(0,c.useReducerWithReduxDevtools)(w);(0,a.useEffect)(()=>{S=null},[]);let{canonicalUrl:U}=(0,c.useUnwrapState)(I),{searchParams:F,pathname:H}=(0,a.useMemo)(()=>{let e=new URL(U,"http://n");return{searchParams:e.searchParams,pathname:(0,P.hasBasePath)(e.pathname)?(0,m.removeBasePath)(e.pathname):e.pathname}},[U]),G=(0,a.useCallback)(e=>{let{previousTree:t,serverResponse:r}=e;(0,a.startTransition)(()=>{D({type:i.ACTION_SERVER_PATCH,previousTree:t,serverResponse:r})})},[D]),k=(0,a.useCallback)((e,t,r)=>{let n=new URL((0,g.addBasePath)(e),location.href);return D({type:i.ACTION_NAVIGATE,url:n,isExternalUrl:x(n),locationSearch:location.search,shouldScroll:null==r||r,navigateType:t})},[D]);O=(0,a.useCallback)(e=>{(0,a.startTransition)(()=>{D({...e,type:i.ACTION_SERVER_ACTION})})},[D]);let B=(0,a.useMemo)(()=>({back:()=>window.history.back(),forward:()=>window.history.forward(),prefetch:(e,t)=>{let r;if(!(0,p.isBot)(window.navigator.userAgent)){try{r=new URL((0,g.addBasePath)(e),window.location.href)}catch(t){throw Error("Cannot prefetch '"+e+"' because it cannot be converted to a URL.")}x(r)||(0,a.startTransition)(()=>{var e;D({type:i.ACTION_PREFETCH,url:r,kind:null!=(e=null==t?void 0:t.kind)?e:i.PrefetchKind.FULL})})}},replace:(e,t)=>{void 0===t&&(t={}),(0,a.startTransition)(()=>{var r;k(e,"replace",null==(r=t.scroll)||r)})},push:(e,t)=>{void 0===t&&(t={}),(0,a.startTransition)(()=>{var r;k(e,"push",null==(r=t.scroll)||r)})},refresh:()=>{(0,a.startTransition)(()=>{D({type:i.ACTION_REFRESH,origin:window.location.origin})})},fastRefresh:()=>{throw Error("fastRefresh can only be used in development mode. Please use refresh instead.")}}),[D,k]);(0,a.useEffect)(()=>{window.next&&(window.next.router=B)},[B]),(0,a.useEffect)(()=>{function e(e){var t;e.persisted&&(null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE)&&(T.pendingMpaPath=void 0,D({type:i.ACTION_RESTORE,url:new URL(window.location.href),tree:window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE}))}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}},[D]);let{pushRef:V}=(0,c.useUnwrapState)(I);if(V.mpaNavigation){if(T.pendingMpaPath!==U){let e=window.location;V.pendingPush?e.assign(U):e.replace(U),T.pendingMpaPath=U}(0,a.use)(v.unresolvedThenable)}(0,a.useEffect)(()=>{let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history),r=e=>{var t;let r=window.location.href,n=null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;(0,a.startTransition)(()=>{D({type:i.ACTION_RESTORE,url:new URL(null!=e?e:r,r),tree:n})})};window.history.pushState=function(t,n,o){return(null==t?void 0:t.__NA)||(null==t?void 0:t._N)||(t=C(t),o&&r(o)),e(t,n,o)},window.history.replaceState=function(e,n,o){return(null==e?void 0:e.__NA)||(null==e?void 0:e._N)||(e=C(e),o&&r(o)),t(e,n,o)};let n=e=>{let{state:t}=e;if(t){if(!t.__NA){window.location.reload();return}(0,a.startTransition)(()=>{D({type:i.ACTION_RESTORE,url:new URL(window.location.href),tree:t.__PRIVATE_NEXTJS_INTERNALS_TREE})})}};return window.addEventListener("popstate",n),()=>{window.history.pushState=e,window.history.replaceState=t,window.removeEventListener("popstate",n)}},[D]);let{cache:$,tree:X,nextUrl:K,focusAndScrollRef:z}=(0,c.useUnwrapState)(I),W=(0,a.useMemo)(()=>(0,y.findHeadInCache)($,X[1]),[$,X]),Y=(0,a.useMemo)(()=>(function e(t,r){for(let n of(void 0===r&&(r={}),Object.values(t[1]))){let t=n[0],o=Array.isArray(t),a=o?t[1]:t;!a||a.startsWith(R.PAGE_SEGMENT_KEY)||(o&&("c"===t[2]||"oc"===t[2])?r[t[0]]=t[1].split("/"):o&&(r[t[0]]=t[1]),r=e(n,r))}return r})(X),[X]);if(null!==W){let[e,r]=W;t=(0,o.jsx)(A,{headCacheNode:e},r)}else t=null;let q=(0,o.jsxs)(_.RedirectBoundary,{children:[t,$.rsc,(0,o.jsx)(h.AppRouterAnnouncer,{tree:X})]});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(M,{appRouterState:(0,c.useUnwrapState)(I),sync:L}),(0,o.jsx)(s.PathParamsContext.Provider,{value:Y,children:(0,o.jsx)(s.PathnameContext.Provider,{value:H,children:(0,o.jsx)(s.SearchParamsContext.Provider,{value:F,children:(0,o.jsx)(l.GlobalLayoutRouterContext.Provider,{value:{buildId:r,changeByServerResponse:G,tree:X,focusAndScrollRef:z,nextUrl:K},children:(0,o.jsx)(l.AppRouterContext.Provider,{value:B,children:(0,o.jsx)(l.LayoutRouterContext.Provider,{value:{childNodes:$.parallelRoutes,tree:X,url:U,loading:$.loading},children:q})})})})})})]})}function I(e){let{globalErrorComponent:t,...r}=e;return(0,o.jsx)(d.ErrorBoundary,{errorComponent:t,children:(0,o.jsx)(w,{...r})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6136:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"bailoutToClientRendering",{enumerable:!0,get:function(){return a}});let n=r(4129),o=r(5869);function a(e){let t=o.staticGenerationAsyncStorage.getStore();if((null==t||!t.forceStatic)&&(null==t?void 0:t.isStaticGeneration))throw new n.BailoutToCSRError(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6114:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientPageRoot",{enumerable:!0,get:function(){return a}});let n=r(326),o=r(3325);function a(e){let{Component:t,props:r}=e;return r.searchParams=(0,o.createDynamicallyTrackedSearchParams)(r.searchParams||{}),(0,n.jsx)(t,{...r})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9727:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ErrorBoundary:function(){return g},ErrorBoundaryHandler:function(){return d},GlobalError:function(){return f},default:function(){return p}});let n=r(1174),o=r(326),a=n._(r(7577)),l=r(7389),i=r(7313),u=r(5869),s={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},text:{fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"}};function c(e){let{error:t}=e,r=u.staticGenerationAsyncStorage.getStore();if((null==r?void 0:r.isRevalidate)||(null==r?void 0:r.isStaticGeneration))throw console.error(t),t;return null}class d extends a.default.Component{static getDerivedStateFromError(e){if((0,i.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(c,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,o.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}}function f(e){let{error:t}=e,r=null==t?void 0:t.digest;return(0,o.jsxs)("html",{id:"__next_error__",children:[(0,o.jsx)("head",{}),(0,o.jsxs)("body",{children:[(0,o.jsx)(c,{error:t}),(0,o.jsx)("div",{style:s.error,children:(0,o.jsxs)("div",{children:[(0,o.jsx)("h2",{style:s.text,children:"Application error: a "+(r?"server":"client")+"-side exception has occurred (see the "+(r?"server logs":"browser console")+" for more information)."}),r?(0,o.jsx)("p",{style:s.text,children:"Digest: "+r}):null]})})]})]})}let p=f;function g(e){let{errorComponent:t,errorStyles:r,errorScripts:n,children:a}=e,i=(0,l.usePathname)();return t?(0,o.jsx)(d,{pathname:i,errorComponent:t,errorStyles:r,errorScripts:n,children:a}):(0,o.jsx)(o.Fragment,{children:a})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},442:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DynamicServerError:function(){return n},isDynamicServerError:function(){return o}});let r="DYNAMIC_SERVER_USAGE";class n extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7313:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return a}});let n=r(706),o=r(2747);function a(e){return e&&e.digest&&((0,o.isRedirectError)(e)||(0,n.isNotFoundError)(e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9671:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return S}}),r(1174);let n=r(8374),o=r(326),a=n._(r(7577));r(962);let l=r(2413),i=r(9009),u=r(9519),s=r(9727),c=r(455),d=r(9976),f=r(6265),p=r(1868),g=r(2162),h=r(9886),_=r(5262),y=["bottom","height","left","right","top","width","x","y"];function v(e,t){let r=e.getBoundingClientRect();return r.top>=0&&r.top<=t}class b extends a.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,r)=>(0,c.matchSegment)(t,e[r]))))return;let r=null,n=e.hashFragment;if(n&&(r=function(e){var t;return"top"===e?document.body:null!=(t=document.getElementById(e))?t:document.getElementsByName(e)[0]}(n)),!r&&(r=null),!(r instanceof Element))return;for(;!(r instanceof HTMLElement)||function(e){if(["sticky","fixed"].includes(getComputedStyle(e).position))return!0;let t=e.getBoundingClientRect();return y.every(e=>0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,d.handleSmoothScroll)(()=>{if(n){r.scrollIntoView();return}let e=document.documentElement,t=e.clientHeight;!v(r,t)&&(e.scrollTop=0,v(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function m(e){let{segmentPath:t,children:r}=e,n=(0,a.useContext)(l.GlobalLayoutRouterContext);if(!n)throw Error("invariant global layout router not mounted");return(0,o.jsx)(b,{segmentPath:t,focusAndScrollRef:n.focusAndScrollRef,children:r})}function P(e){let{parallelRouterKey:t,url:r,childNodes:n,segmentPath:s,tree:d,cacheKey:f}=e,p=(0,a.useContext)(l.GlobalLayoutRouterContext);if(!p)throw Error("invariant global layout router not mounted");let{buildId:g,changeByServerResponse:h,tree:y}=p,v=n.get(f);if(void 0===v){let e={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};v=e,n.set(f,e)}let b=null!==v.prefetchRsc?v.prefetchRsc:v.rsc,m=(0,a.useDeferredValue)(v.rsc,b),P="object"==typeof m&&null!==m&&"function"==typeof m.then?(0,a.use)(m):m;if(!P){let e=v.lazyData;if(null===e){let t=function e(t,r){if(t){let[n,o]=t,a=2===t.length;if((0,c.matchSegment)(r[0],n)&&r[1].hasOwnProperty(o)){if(a){let t=e(void 0,r[1][o]);return[r[0],{...r[1],[o]:[t[0],t[1],t[2],"refetch"]}]}return[r[0],{...r[1],[o]:e(t.slice(2),r[1][o])}]}}return r}(["",...s],y),n=(0,_.hasInterceptionRouteInCurrentTree)(y);v.lazyData=e=(0,i.fetchServerResponse)(new URL(r,location.origin),t,n?p.nextUrl:null,g),v.lazyDataResolved=!1}let t=(0,a.use)(e);v.lazyDataResolved||(setTimeout(()=>{(0,a.startTransition)(()=>{h({previousTree:y,serverResponse:t})})}),v.lazyDataResolved=!0),(0,a.use)(u.unresolvedThenable)}return(0,o.jsx)(l.LayoutRouterContext.Provider,{value:{tree:d[1][t],childNodes:v.parallelRoutes,url:r,loading:v.loading},children:P})}function R(e){let{children:t,hasLoading:r,loading:n,loadingStyles:l,loadingScripts:i}=e;return r?(0,o.jsx)(a.Suspense,{fallback:(0,o.jsxs)(o.Fragment,{children:[l,i,n]}),children:t}):(0,o.jsx)(o.Fragment,{children:t})}function S(e){let{parallelRouterKey:t,segmentPath:r,error:n,errorStyles:i,errorScripts:u,templateStyles:c,templateScripts:d,template:_,notFound:y,notFoundStyles:v}=e,b=(0,a.useContext)(l.LayoutRouterContext);if(!b)throw Error("invariant expected layout router to be mounted");let{childNodes:S,tree:O,url:E,loading:T}=b,j=S.get(t);j||(j=new Map,S.set(t,j));let x=O[1][t][0],M=(0,g.getSegmentValue)(x),N=[x];return(0,o.jsx)(o.Fragment,{children:N.map(e=>{let a=(0,g.getSegmentValue)(e),b=(0,h.createRouterCacheKey)(e);return(0,o.jsxs)(l.TemplateContext.Provider,{value:(0,o.jsx)(m,{segmentPath:r,children:(0,o.jsx)(s.ErrorBoundary,{errorComponent:n,errorStyles:i,errorScripts:u,children:(0,o.jsx)(R,{hasLoading:!!T,loading:null==T?void 0:T[0],loadingStyles:null==T?void 0:T[1],loadingScripts:null==T?void 0:T[2],children:(0,o.jsx)(p.NotFoundBoundary,{notFound:y,notFoundStyles:v,children:(0,o.jsx)(f.RedirectBoundary,{children:(0,o.jsx)(P,{parallelRouterKey:t,url:E,tree:O,childNodes:j,segmentPath:r,cacheKey:b,isActive:M===a})})})})})}),children:[c,d,_]},(0,h.createRouterCacheKey)(e,!0))})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},455:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{canSegmentBeOverridden:function(){return a},matchSegment:function(){return o}});let n=r(2357),o=(e,t)=>"string"==typeof e?"string"==typeof t&&e===t:"string"!=typeof t&&e[0]===t[0]&&e[1]===t[1],a=(e,t)=>{var r;return!Array.isArray(e)&&!!Array.isArray(t)&&(null==(r=(0,n.getSegmentParam)(e))?void 0:r.param)===t[0]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7389:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return u.ReadonlyURLSearchParams},RedirectType:function(){return u.RedirectType},ServerInsertedHTMLContext:function(){return s.ServerInsertedHTMLContext},notFound:function(){return u.notFound},permanentRedirect:function(){return u.permanentRedirect},redirect:function(){return u.redirect},useParams:function(){return p},usePathname:function(){return d},useRouter:function(){return f},useSearchParams:function(){return c},useSelectedLayoutSegment:function(){return h},useSelectedLayoutSegments:function(){return g},useServerInsertedHTML:function(){return s.useServerInsertedHTML}});let n=r(7577),o=r(2413),a=r(7008),l=r(2162),i=r(8071),u=r(7375),s=r(3347);function c(){let e=(0,n.useContext)(a.SearchParamsContext),t=(0,n.useMemo)(()=>e?new u.ReadonlyURLSearchParams(e):null,[e]);{let{bailoutToClientRendering:e}=r(6136);e("useSearchParams()")}return t}function d(){return(0,n.useContext)(a.PathnameContext)}function f(){let e=(0,n.useContext)(o.AppRouterContext);if(null===e)throw Error("invariant expected app router to be mounted");return e}function p(){return(0,n.useContext)(a.PathParamsContext)}function g(e){void 0===e&&(e="children");let t=(0,n.useContext)(o.LayoutRouterContext);return t?function e(t,r,n,o){let a;if(void 0===n&&(n=!0),void 0===o&&(o=[]),n)a=t[1][r];else{var u;let e=t[1];a=null!=(u=e.children)?u:Object.values(e)[0]}if(!a)return o;let s=a[0],c=(0,l.getSegmentValue)(s);return!c||c.startsWith(i.PAGE_SEGMENT_KEY)?o:(o.push(c),e(a,r,!1,o))}(t.tree,e):null}function h(e){void 0===e&&(e="children");let t=g(e);if(!t||0===t.length)return null;let r="children"===e?t[0]:t[t.length-1];return r===i.DEFAULT_SEGMENT_KEY?null:r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7375:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return l},RedirectType:function(){return n.RedirectType},notFound:function(){return o.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect}});let n=r(2747),o=r(706);class a extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class l extends URLSearchParams{append(){throw new a}delete(){throw new a}set(){throw new a}sort(){throw new a}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1868:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"NotFoundBoundary",{enumerable:!0,get:function(){return c}});let n=r(8374),o=r(326),a=n._(r(7577)),l=r(7389),i=r(706);r(576);let u=r(2413);class s extends a.default.Component{componentDidCatch(){}static getDerivedStateFromError(e){if((0,i.isNotFoundError)(e))return{notFoundTriggered:!0};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.notFoundTriggered?{notFoundTriggered:!1,previousPathname:e.pathname}:{notFoundTriggered:t.notFoundTriggered,previousPathname:e.pathname}}render(){return this.state.notFoundTriggered?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("meta",{name:"robots",content:"noindex"}),!1,this.props.notFoundStyles,this.props.notFound]}):this.props.children}constructor(e){super(e),this.state={notFoundTriggered:!!e.asNotFound,previousPathname:e.pathname}}}function c(e){let{notFound:t,notFoundStyles:r,asNotFound:n,children:i}=e,c=(0,l.usePathname)(),d=(0,a.useContext)(u.MissingSlotContext);return t?(0,o.jsx)(s,{pathname:c,notFound:t,notFoundStyles:r,asNotFound:n,missingSlots:d,children:i}):(0,o.jsx)(o.Fragment,{children:i})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},706:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{isNotFoundError:function(){return o},notFound:function(){return n}});let r="NEXT_NOT_FOUND";function n(){let e=Error(r);throw e.digest=r,e}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7815:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PromiseQueue",{enumerable:!0,get:function(){return s}});let n=r(8285),o=r(8817);var a=o._("_maxConcurrency"),l=o._("_runningCount"),i=o._("_queue"),u=o._("_processNext");class s{enqueue(e){let t,r;let o=new Promise((e,n)=>{t=e,r=n}),a=async()=>{try{n._(this,l)[l]++;let r=await e();t(r)}catch(e){r(e)}finally{n._(this,l)[l]--,n._(this,u)[u]()}};return n._(this,i)[i].push({promiseFn:o,task:a}),n._(this,u)[u](),o}bump(e){let t=n._(this,i)[i].findIndex(t=>t.promiseFn===e);if(t>-1){let e=n._(this,i)[i].splice(t,1)[0];n._(this,i)[i].unshift(e),n._(this,u)[u](!0)}}constructor(e=5){Object.defineProperty(this,u,{value:c}),Object.defineProperty(this,a,{writable:!0,value:void 0}),Object.defineProperty(this,l,{writable:!0,value:void 0}),Object.defineProperty(this,i,{writable:!0,value:void 0}),n._(this,a)[a]=e,n._(this,l)[l]=0,n._(this,i)[i]=[]}}function c(e){if(void 0===e&&(e=!1),(n._(this,l)[l]0){var t;null==(t=n._(this,i)[i].shift())||t.task()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6265:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectBoundary:function(){return c},RedirectErrorBoundary:function(){return s}});let n=r(8374),o=r(326),a=n._(r(7577)),l=r(7389),i=r(2747);function u(e){let{redirect:t,reset:r,redirectType:n}=e,o=(0,l.useRouter)();return(0,a.useEffect)(()=>{a.default.startTransition(()=>{n===i.RedirectType.push?o.push(t,{}):o.replace(t,{}),r()})},[t,n,r,o]),null}class s extends a.default.Component{static getDerivedStateFromError(e){if((0,i.isRedirectError)(e))return{redirect:(0,i.getURLFromRedirectError)(e),redirectType:(0,i.getRedirectTypeFromError)(e)};throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,o.jsx)(u,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}constructor(e){super(e),this.state={redirect:null,redirectType:null}}}function c(e){let{children:t}=e,r=(0,l.useRouter)();return(0,o.jsx)(s,{router:r,children:t})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8778:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}}),function(e){e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect"}(r||(r={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2747:(e,t,r)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectType:function(){return n},getRedirectError:function(){return u},getRedirectStatusCodeFromError:function(){return g},getRedirectTypeFromError:function(){return p},getURLFromRedirectError:function(){return f},isRedirectError:function(){return d},permanentRedirect:function(){return c},redirect:function(){return s}});let o=r(4580),a=r(2934),l=r(8778),i="NEXT_REDIRECT";function u(e,t,r){void 0===r&&(r=l.RedirectStatusCode.TemporaryRedirect);let n=Error(i);n.digest=i+";"+t+";"+e+";"+r+";";let a=o.requestAsyncStorage.getStore();return a&&(n.mutableCookies=a.mutableCookies),n}function s(e,t){void 0===t&&(t="replace");let r=a.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?l.RedirectStatusCode.SeeOther:l.RedirectStatusCode.TemporaryRedirect)}function c(e,t){void 0===t&&(t="replace");let r=a.actionAsyncStorage.getStore();throw u(e,t,(null==r?void 0:r.isAction)?l.RedirectStatusCode.SeeOther:l.RedirectStatusCode.PermanentRedirect)}function d(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r,n,o]=e.digest.split(";",4),a=Number(o);return t===i&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(a)&&a in l.RedirectStatusCode}function f(e){return d(e)?e.digest.split(";",3)[2]:null}function p(e){if(!d(e))throw Error("Not a redirect error");return e.digest.split(";",2)[1]}function g(e){if(!d(e))throw Error("Not a redirect error");return Number(e.digest.split(";",4)[3])}(function(e){e.push="push",e.replace="replace"})(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4759:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=r(8374),o=r(326),a=n._(r(7577)),l=r(2413);function i(){let e=(0,a.useContext)(l.TemplateContext);return(0,o.jsx)(o.Fragment,{children:e})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9894:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyFlightData",{enumerable:!0,get:function(){return a}});let n=r(114),o=r(9056);function a(e,t,r,a){let[l,i,u]=r.slice(-3);if(null===i)return!1;if(3===r.length){let r=i[2],o=i[3];t.loading=o,t.rsc=r,t.prefetchRsc=null,(0,n.fillLazyItemsTillLeafWithHead)(t,e,l,i,u,a)}else t.rsc=e.rsc,t.prefetchRsc=e.prefetchRsc,t.parallelRoutes=new Map(e.parallelRoutes),t.loading=e.loading,(0,o.fillCacheWithNewSubTreeData)(t,e,r,a);return!0}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5166:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyRouterStatePatchToTree",{enumerable:!0,get:function(){return function e(t,r,n,i){let u;let[s,c,d,f,p]=r;if(1===t.length){let e=l(r,n,t);return(0,a.addRefreshMarkerToActiveParallelSegments)(e,i),e}let[g,h]=t;if(!(0,o.matchSegment)(g,s))return null;if(2===t.length)u=l(c[h],n,t);else if(null===(u=e(t.slice(2),c[h],n,i)))return null;let _=[t[0],{...c,[h]:u},d,f];return p&&(_[4]=!0),(0,a.addRefreshMarkerToActiveParallelSegments)(_,i),_}}});let n=r(8071),o=r(455),a=r(4158);function l(e,t,r){let[a,i]=e,[u,s]=t;if(u===n.DEFAULT_SEGMENT_KEY&&a!==n.DEFAULT_SEGMENT_KEY)return e;if((0,o.matchSegment)(a,u)){let t={};for(let e in i)void 0!==s[e]?t[e]=l(i[e],s[e],r):t[e]=i[e];for(let e in s)t[e]||(t[e]=s[e]);let n=[a,t];return e[2]&&(n[2]=e[2]),e[3]&&(n[3]=e[3]),e[4]&&(n[4]=e[4]),n}return t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2895:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"clearCacheNodeDataForSegmentPath",{enumerable:!0,get:function(){return function e(t,r,o){let a=o.length<=2,[l,i]=o,u=(0,n.createRouterCacheKey)(i),s=r.parallelRoutes.get(l),c=t.parallelRoutes.get(l);c&&c!==s||(c=new Map(s),t.parallelRoutes.set(l,c));let d=null==s?void 0:s.get(u),f=c.get(u);if(a){f&&f.lazyData&&f!==d||c.set(u,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}if(!f||!d){f||c.set(u,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null});return}return f===d&&(f={lazyData:f.lazyData,rsc:f.rsc,prefetchRsc:f.prefetchRsc,head:f.head,prefetchHead:f.prefetchHead,parallelRoutes:new Map(f.parallelRoutes),lazyDataResolved:f.lazyDataResolved,loading:f.loading},c.set(u,f)),e(f,d,o.slice(2))}}});let n=r(9886);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3648:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{computeChangedPath:function(){return c},extractPathFromFlightRouterState:function(){return s}});let n=r(7356),o=r(8071),a=r(455),l=e=>"/"===e[0]?e.slice(1):e,i=e=>"string"==typeof e?"children"===e?"":e:e[1];function u(e){return e.reduce((e,t)=>""===(t=l(t))||(0,o.isGroupSegment)(t)?e:e+"/"+t,"")||"/"}function s(e){var t;let r=Array.isArray(e[0])?e[0][1]:e[0];if(r===o.DEFAULT_SEGMENT_KEY||n.INTERCEPTION_ROUTE_MARKERS.some(e=>r.startsWith(e)))return;if(r.startsWith(o.PAGE_SEGMENT_KEY))return"";let a=[i(r)],l=null!=(t=e[1])?t:{},c=l.children?s(l.children):void 0;if(void 0!==c)a.push(c);else for(let[e,t]of Object.entries(l)){if("children"===e)continue;let r=s(t);void 0!==r&&a.push(r)}return u(a)}function c(e,t){let r=function e(t,r){let[o,l]=t,[u,c]=r,d=i(o),f=i(u);if(n.INTERCEPTION_ROUTE_MARKERS.some(e=>d.startsWith(e)||f.startsWith(e)))return"";if(!(0,a.matchSegment)(o,u)){var p;return null!=(p=s(r))?p:""}for(let t in l)if(c[t]){let r=e(l[t],c[t]);if(null!==r)return i(u)+"/"+r}return null}(e,t);return null==r||"/"===r?r:u(r.split("/"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7584:(e,t)=>{"use strict";function r(e,t){return void 0===t&&(t=!0),e.pathname+e.search+(t?e.hash:"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createHrefFromUrl",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6199:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createInitialRouterState",{enumerable:!0,get:function(){return s}});let n=r(7584),o=r(114),a=r(3648),l=r(9373),i=r(7767),u=r(4158);function s(e){var t;let{buildId:r,initialTree:s,initialSeedData:c,urlParts:d,initialParallelRoutes:f,location:p,initialHead:g,couldBeIntercepted:h}=e,_=d.join("/"),y=!p,v={lazyData:null,rsc:c[2],prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:y?new Map:f,lazyDataResolved:!1,loading:c[3]},b=p?(0,n.createHrefFromUrl)(p):_;(0,u.addRefreshMarkerToActiveParallelSegments)(s,b);let m=new Map;(null===f||0===f.size)&&(0,o.fillLazyItemsTillLeafWithHead)(v,void 0,s,c,g);let P={buildId:r,tree:s,cache:v,prefetchCache:m,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:{apply:!1,onlyHashChange:!1,hashFragment:null,segmentPaths:[]},canonicalUrl:b,nextUrl:null!=(t=(0,a.extractPathFromFlightRouterState)(s)||(null==p?void 0:p.pathname))?t:null};if(p){let e=new URL(""+p.pathname+p.search,p.origin),t=[["",s,null,null]];(0,l.createPrefetchCacheEntryForInitialLoad)({url:e,kind:i.PrefetchKind.AUTO,data:[t,void 0,!1,h],tree:P.tree,prefetchCache:P.prefetchCache,nextUrl:P.nextUrl})}return P}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9886:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=r(8071);function o(e,t){return(void 0===t&&(t=!1),Array.isArray(e))?e[0]+"|"+e[1]+"|"+e[2]:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9009:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fetchServerResponse",{enumerable:!0,get:function(){return d}});let n=r(5138),o=r(2994),a=r(5424),l=r(7767),i=r(2165),u=r(7542),{createFromFetch:s}=r(6493);function c(e){return[(0,o.urlToUrlWithoutFlightMarker)(e).toString(),void 0,!1,!1]}async function d(e,t,r,d,f){let p={[n.RSC_HEADER]:"1",[n.NEXT_ROUTER_STATE_TREE]:(0,u.prepareFlightRouterStateForRequest)(t)};f===l.PrefetchKind.AUTO&&(p[n.NEXT_ROUTER_PREFETCH_HEADER]="1"),r&&(p[n.NEXT_URL]=r);let g=(0,i.hexHash)([p[n.NEXT_ROUTER_PREFETCH_HEADER]||"0",p[n.NEXT_ROUTER_STATE_TREE],p[n.NEXT_URL]].join(","));try{var h;let t=new URL(e);t.searchParams.set(n.NEXT_RSC_UNION_QUERY,g);let r=await fetch(t,{credentials:"same-origin",headers:p}),l=(0,o.urlToUrlWithoutFlightMarker)(r.url),i=r.redirected?l:void 0,u=r.headers.get("content-type")||"",f=!!r.headers.get(n.NEXT_DID_POSTPONE_HEADER),_=!!(null==(h=r.headers.get("vary"))?void 0:h.includes(n.NEXT_URL));if(u!==n.RSC_CONTENT_TYPE_HEADER||!r.ok)return e.hash&&(l.hash=e.hash),c(l.toString());let[y,v]=await s(Promise.resolve(r),{callServer:a.callServer});if(d!==y)return c(r.url);return[v,i,f,_]}catch(t){return console.error("Failed to fetch RSC payload for "+e+". Falling back to browser navigation.",t),[e.toString(),void 0,!1,!1]}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9056:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillCacheWithNewSubTreeData",{enumerable:!0,get:function(){return function e(t,r,l,i){let u=l.length<=5,[s,c]=l,d=(0,a.createRouterCacheKey)(c),f=r.parallelRoutes.get(s);if(!f)return;let p=t.parallelRoutes.get(s);p&&p!==f||(p=new Map(f),t.parallelRoutes.set(s,p));let g=f.get(d),h=p.get(d);if(u){if(!h||!h.lazyData||h===g){let e=l[3];h={lazyData:null,rsc:e[2],prefetchRsc:null,head:null,prefetchHead:null,loading:e[3],parallelRoutes:g?new Map(g.parallelRoutes):new Map,lazyDataResolved:!1},g&&(0,n.invalidateCacheByRouterState)(h,g,l[2]),(0,o.fillLazyItemsTillLeafWithHead)(h,g,l[2],e,l[4],i),p.set(d,h)}return}h&&g&&(h===g&&(h={lazyData:h.lazyData,rsc:h.rsc,prefetchRsc:h.prefetchRsc,head:h.head,prefetchHead:h.prefetchHead,parallelRoutes:new Map(h.parallelRoutes),lazyDataResolved:!1,loading:h.loading},p.set(d,h)),e(h,g,l.slice(2),i))}}});let n=r(2498),o=r(114),a=r(9886);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},114:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillLazyItemsTillLeafWithHead",{enumerable:!0,get:function(){return function e(t,r,a,l,i,u){if(0===Object.keys(a[1]).length){t.head=i;return}for(let s in a[1]){let c;let d=a[1][s],f=d[0],p=(0,n.createRouterCacheKey)(f),g=null!==l&&void 0!==l[1][s]?l[1][s]:null;if(r){let n=r.parallelRoutes.get(s);if(n){let r;let a=(null==u?void 0:u.kind)==="auto"&&u.status===o.PrefetchCacheEntryStatus.reusable,l=new Map(n),c=l.get(p);r=null!==g?{lazyData:null,rsc:g[2],prefetchRsc:null,head:null,prefetchHead:null,loading:g[3],parallelRoutes:new Map(null==c?void 0:c.parallelRoutes),lazyDataResolved:!1}:a&&c?{lazyData:c.lazyData,rsc:c.rsc,prefetchRsc:c.prefetchRsc,head:c.head,prefetchHead:c.prefetchHead,parallelRoutes:new Map(c.parallelRoutes),lazyDataResolved:c.lazyDataResolved,loading:c.loading}:{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map(null==c?void 0:c.parallelRoutes),lazyDataResolved:!1,loading:null},l.set(p,r),e(r,c,d,g||null,i,u),t.parallelRoutes.set(s,l);continue}}if(null!==g){let e=g[2],t=g[3];c={lazyData:null,rsc:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:t}}else c={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,lazyDataResolved:!1,loading:null};let h=t.parallelRoutes.get(s);h?h.set(p,c):t.parallelRoutes.set(s,new Map([[p,c]])),e(c,void 0,d,g,i,u)}}}});let n=r(9886),o=r(7767);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7252:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleMutable",{enumerable:!0,get:function(){return a}});let n=r(3648);function o(e){return void 0!==e}function a(e,t){var r,a,l;let i=null==(a=t.shouldScroll)||a,u=e.nextUrl;if(o(t.patchedTree)){let r=(0,n.computeChangedPath)(e.tree,t.patchedTree);r?u=r:u||(u=e.canonicalUrl)}return{buildId:e.buildId,canonicalUrl:o(t.canonicalUrl)?t.canonicalUrl===e.canonicalUrl?e.canonicalUrl:t.canonicalUrl:e.canonicalUrl,pushRef:{pendingPush:o(t.pendingPush)?t.pendingPush:e.pushRef.pendingPush,mpaNavigation:o(t.mpaNavigation)?t.mpaNavigation:e.pushRef.mpaNavigation,preserveCustomHistoryState:o(t.preserveCustomHistoryState)?t.preserveCustomHistoryState:e.pushRef.preserveCustomHistoryState},focusAndScrollRef:{apply:!!i&&(!!o(null==t?void 0:t.scrollableSegments)||e.focusAndScrollRef.apply),onlyHashChange:!!t.hashFragment&&e.canonicalUrl.split("#",1)[0]===(null==(r=t.canonicalUrl)?void 0:r.split("#",1)[0]),hashFragment:i?t.hashFragment&&""!==t.hashFragment?decodeURIComponent(t.hashFragment.slice(1)):e.focusAndScrollRef.hashFragment:null,segmentPaths:i?null!=(l=null==t?void 0:t.scrollableSegments)?l:e.focusAndScrollRef.segmentPaths:[]},cache:t.cache?t.cache:e.cache,prefetchCache:t.prefetchCache?t.prefetchCache:e.prefetchCache,tree:o(t.patchedTree)?t.patchedTree:e.tree,nextUrl:u}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5652:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSegmentMismatch",{enumerable:!0,get:function(){return o}});let n=r(941);function o(e,t,r){return(0,n.handleExternalUrl)(e,{},e.canonicalUrl,!0)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3193:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheBelowFlightSegmentPath",{enumerable:!0,get:function(){return function e(t,r,o){let a=o.length<=2,[l,i]=o,u=(0,n.createRouterCacheKey)(i),s=r.parallelRoutes.get(l);if(!s)return;let c=t.parallelRoutes.get(l);if(c&&c!==s||(c=new Map(s),t.parallelRoutes.set(l,c)),a){c.delete(u);return}let d=s.get(u),f=c.get(u);f&&d&&(f===d&&(f={lazyData:f.lazyData,rsc:f.rsc,prefetchRsc:f.prefetchRsc,head:f.head,prefetchHead:f.prefetchHead,parallelRoutes:new Map(f.parallelRoutes),lazyDataResolved:f.lazyDataResolved},c.set(u,f)),e(f,d,o.slice(2)))}}});let n=r(9886);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2498:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheByRouterState",{enumerable:!0,get:function(){return o}});let n=r(9886);function o(e,t,r){for(let o in r[1]){let a=r[1][o][0],l=(0,n.createRouterCacheKey)(a),i=t.parallelRoutes.get(o);if(i){let t=new Map(i);t.delete(l),e.parallelRoutes.set(o,t)}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3772:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNavigatingToNewRootLayout",{enumerable:!0,get:function(){return function e(t,r){let n=t[0],o=r[0];if(Array.isArray(n)&&Array.isArray(o)){if(n[0]!==o[0]||n[2]!==o[2])return!0}else if(n!==o)return!0;if(t[4])return!r[4];if(r[4])return!0;let a=Object.values(t[1])[0],l=Object.values(r[1])[0];return!a||!l||e(a,l)}}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8831:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{abortTask:function(){return s},listenForDynamicRequest:function(){return i},updateCacheNodeOnNavigation:function(){return function e(t,r,i,s,c){let d=r[1],f=i[1],p=s[1],g=t.parallelRoutes,h=new Map(g),_={},y=null;for(let t in f){let r;let i=f[t],s=d[t],v=g.get(t),b=p[t],m=i[0],P=(0,a.createRouterCacheKey)(m),R=void 0!==s?s[0]:void 0,S=void 0!==v?v.get(P):void 0;if(null!==(r=m===n.PAGE_SEGMENT_KEY?l(i,void 0!==b?b:null,c):m===n.DEFAULT_SEGMENT_KEY?void 0!==s?{route:s,node:null,children:null}:l(i,void 0!==b?b:null,c):void 0!==R&&(0,o.matchSegment)(m,R)&&void 0!==S&&void 0!==s?null!=b?e(S,s,i,b,c):function(e){let t=u(e,null,null);return{route:e,node:t,children:null}}(i):l(i,void 0!==b?b:null,c))){null===y&&(y=new Map),y.set(t,r);let e=r.node;if(null!==e){let r=new Map(v);r.set(P,e),h.set(t,r)}_[t]=r.route}else _[t]=i}if(null===y)return null;let v={lazyData:null,rsc:t.rsc,prefetchRsc:t.prefetchRsc,head:t.head,prefetchHead:t.prefetchHead,loading:t.loading,parallelRoutes:h,lazyDataResolved:!1};return{route:function(e,t){let r=[e[0],t];return 2 in e&&(r[2]=e[2]),3 in e&&(r[3]=e[3]),4 in e&&(r[4]=e[4]),r}(i,_),node:v,children:y}}},updateCacheNodeOnPopstateRestoration:function(){return function e(t,r){let n=r[1],o=t.parallelRoutes,l=new Map(o);for(let t in n){let r=n[t],i=r[0],u=(0,a.createRouterCacheKey)(i),s=o.get(t);if(void 0!==s){let n=s.get(u);if(void 0!==n){let o=e(n,r),a=new Map(s);a.set(u,o),l.set(t,a)}}}let i=t.rsc,u=f(i)&&"pending"===i.status;return{lazyData:null,rsc:i,head:t.head,prefetchHead:u?t.prefetchHead:null,prefetchRsc:u?t.prefetchRsc:null,loading:u?t.loading:null,parallelRoutes:l,lazyDataResolved:!1}}}});let n=r(8071),o=r(455),a=r(9886);function l(e,t,r){let n=u(e,t,r);return{route:e,node:n,children:null}}function i(e,t){t.then(t=>{for(let r of t[0]){let t=r.slice(0,-3),n=r[r.length-3],l=r[r.length-2],i=r[r.length-1];"string"!=typeof t&&function(e,t,r,n,l){let i=e;for(let e=0;e{s(e,t)})}function u(e,t,r){let n=e[1],o=null!==t?t[1]:null,l=new Map;for(let e in n){let t=n[e],i=null!==o?o[e]:null,s=t[0],c=(0,a.createRouterCacheKey)(s),d=u(t,void 0===i?null:i,r),f=new Map;f.set(c,d),l.set(e,f)}let i=0===l.size,s=null!==t?t[2]:null,c=null!==t?t[3]:null;return{lazyData:null,parallelRoutes:l,prefetchRsc:void 0!==s?s:null,prefetchHead:i?r:null,loading:void 0!==c?c:null,rsc:p(),head:i?p():null,lazyDataResolved:!1}}function s(e,t){let r=e.node;if(null===r)return;let n=e.children;if(null===n)c(e.route,r,t);else for(let e of n.values())s(e,t);e.node=null}function c(e,t,r){let n=e[1],o=t.parallelRoutes;for(let e in n){let t=n[e],l=o.get(e);if(void 0===l)continue;let i=t[0],u=(0,a.createRouterCacheKey)(i),s=l.get(u);void 0!==s&&c(t,s,r)}let l=t.rsc;f(l)&&(null===r?l.resolve(null):l.reject(r));let i=t.head;f(i)&&i.resolve(null)}let d=Symbol();function f(e){return e&&e.tag===d}function p(){let e,t;let r=new Promise((r,n)=>{e=r,t=n});return r.status="pending",r.resolve=t=>{"pending"===r.status&&(r.status="fulfilled",r.value=t,e(t))},r.reject=e=>{"pending"===r.status&&(r.status="rejected",r.reason=e,t(e))},r.tag=d,r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9373:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createPrefetchCacheEntryForInitialLoad:function(){return s},getOrCreatePrefetchCacheEntry:function(){return u},prunePrefetchCache:function(){return d}});let n=r(7584),o=r(9009),a=r(7767),l=r(1156);function i(e,t){let r=(0,n.createHrefFromUrl)(e,!1);return t?t+"%"+r:r}function u(e){let t,{url:r,nextUrl:n,tree:o,buildId:l,prefetchCache:u,kind:s}=e,d=i(r,n),f=u.get(d);if(f)t=f;else{let e=i(r),n=u.get(e);n&&(t=n)}return t?(t.status=g(t),t.kind!==a.PrefetchKind.FULL&&s===a.PrefetchKind.FULL)?c({tree:o,url:r,buildId:l,nextUrl:n,prefetchCache:u,kind:null!=s?s:a.PrefetchKind.TEMPORARY}):(s&&t.kind===a.PrefetchKind.TEMPORARY&&(t.kind=s),t):c({tree:o,url:r,buildId:l,nextUrl:n,prefetchCache:u,kind:s||a.PrefetchKind.TEMPORARY})}function s(e){let{nextUrl:t,tree:r,prefetchCache:n,url:o,kind:l,data:u}=e,[,,,s]=u,c=s?i(o,t):i(o),d={treeAtTimeOfPrefetch:r,data:Promise.resolve(u),kind:l,prefetchTime:Date.now(),lastUsedTime:Date.now(),key:c,status:a.PrefetchCacheEntryStatus.fresh};return n.set(c,d),d}function c(e){let{url:t,kind:r,tree:n,nextUrl:u,buildId:s,prefetchCache:c}=e,d=i(t),f=l.prefetchQueue.enqueue(()=>(0,o.fetchServerResponse)(t,n,u,s,r).then(e=>{let[,,,r]=e;return r&&function(e){let{url:t,nextUrl:r,prefetchCache:n}=e,o=i(t),a=n.get(o);if(!a)return;let l=i(t,r);n.set(l,a),n.delete(o)}({url:t,nextUrl:u,prefetchCache:c}),e})),p={treeAtTimeOfPrefetch:n,data:f,kind:r,prefetchTime:Date.now(),lastUsedTime:null,key:d,status:a.PrefetchCacheEntryStatus.fresh};return c.set(d,p),p}function d(e){for(let[t,r]of e)g(r)===a.PrefetchCacheEntryStatus.expired&&e.delete(t)}let f=1e3*Number("30"),p=1e3*Number("300");function g(e){let{kind:t,prefetchTime:r,lastUsedTime:n}=e;return Date.now()<(null!=n?n:r)+f?n?a.PrefetchCacheEntryStatus.reusable:a.PrefetchCacheEntryStatus.fresh:"auto"===t&&Date.now(){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fastRefreshReducer",{enumerable:!0,get:function(){return n}}),r(9009),r(7584),r(5166),r(3772),r(941),r(7252),r(9894),r(2994),r(5652),r(5262);let n=function(e,t){return e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2492:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findHeadInCache",{enumerable:!0,get:function(){return o}});let n=r(9886);function o(e,t){return function e(t,r,o){if(0===Object.keys(r).length)return[t,o];for(let a in r){let[l,i]=r[a],u=t.parallelRoutes.get(a);if(!u)continue;let s=(0,n.createRouterCacheKey)(l),c=u.get(s);if(!c)continue;let d=e(c,i,o+"/"+s);if(d)return d}return null}(e,t,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2162:(e,t)=>{"use strict";function r(e){return Array.isArray(e)?e[1]:e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentValue",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5262:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasInterceptionRouteInCurrentTree",{enumerable:!0,get:function(){return function e(t){let[r,o]=t;if(Array.isArray(r)&&("di"===r[2]||"ci"===r[2])||"string"==typeof r&&(0,n.isInterceptionRouteAppPath)(r))return!0;if(o){for(let t in o)if(e(o[t]))return!0}return!1}}});let n=r(7356);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},941:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleExternalUrl:function(){return _},navigateReducer:function(){return v}}),r(9009);let n=r(7584),o=r(3193),a=r(5166),l=r(4614),i=r(3772),u=r(7767),s=r(7252),c=r(9894),d=r(1156),f=r(2994),p=r(8071),g=(r(8831),r(9373)),h=r(2895);function _(e,t,r,n){return t.mpaNavigation=!0,t.canonicalUrl=r,t.pendingPush=n,t.scrollableSegments=void 0,(0,s.handleMutable)(e,t)}function y(e){let t=[],[r,n]=e;if(0===Object.keys(n).length)return[[r]];for(let[e,o]of Object.entries(n))for(let n of y(o))""===r?t.push([e,...n]):t.push([r,e,...n]);return t}let v=function(e,t){let{url:r,isExternalUrl:v,navigateType:b,shouldScroll:m}=t,P={},{hash:R}=r,S=(0,n.createHrefFromUrl)(r),O="push"===b;if((0,g.prunePrefetchCache)(e.prefetchCache),P.preserveCustomHistoryState=!1,v)return _(e,P,r.toString(),O);let E=(0,g.getOrCreatePrefetchCacheEntry)({url:r,nextUrl:e.nextUrl,tree:e.tree,buildId:e.buildId,prefetchCache:e.prefetchCache}),{treeAtTimeOfPrefetch:T,data:j}=E;return d.prefetchQueue.bump(j),j.then(t=>{let[r,d]=t,g=!1;if(E.lastUsedTime||(E.lastUsedTime=Date.now(),g=!0),"string"==typeof r)return _(e,P,r,O);if(document.getElementById("__next-page-redirect"))return _(e,P,S,O);let v=e.tree,b=e.cache,j=[];for(let t of r){let r=t.slice(0,-4),n=t.slice(-3)[0],s=["",...r],d=(0,a.applyRouterStatePatchToTree)(s,v,n,S);if(null===d&&(d=(0,a.applyRouterStatePatchToTree)(s,T,n,S)),null!==d){if((0,i.isNavigatingToNewRootLayout)(v,d))return _(e,P,S,O);let a=(0,f.createEmptyCacheNode)(),m=!1;for(let e of(E.status!==u.PrefetchCacheEntryStatus.stale||g?m=(0,c.applyFlightData)(b,a,t,E):(m=function(e,t,r,n){let o=!1;for(let a of(e.rsc=t.rsc,e.prefetchRsc=t.prefetchRsc,e.loading=t.loading,e.parallelRoutes=new Map(t.parallelRoutes),y(n).map(e=>[...r,...e])))(0,h.clearCacheNodeDataForSegmentPath)(e,t,a),o=!0;return o}(a,b,r,n),E.lastUsedTime=Date.now()),(0,l.shouldHardNavigate)(s,v)?(a.rsc=b.rsc,a.prefetchRsc=b.prefetchRsc,(0,o.invalidateCacheBelowFlightSegmentPath)(a,b,r),P.cache=a):m&&(P.cache=a,b=a),v=d,y(n))){let t=[...r,...e];t[t.length-1]!==p.DEFAULT_SEGMENT_KEY&&j.push(t)}}}return P.patchedTree=v,P.canonicalUrl=d?(0,n.createHrefFromUrl)(d):S,P.pendingPush=O,P.scrollableSegments=j,P.hashFragment=R,P.shouldScroll=m,(0,s.handleMutable)(e,P)},()=>e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1156:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{prefetchQueue:function(){return l},prefetchReducer:function(){return i}});let n=r(5138),o=r(7815),a=r(9373),l=new o.PromiseQueue(5);function i(e,t){(0,a.prunePrefetchCache)(e.prefetchCache);let{url:r}=t;return r.searchParams.delete(n.NEXT_RSC_UNION_QUERY),(0,a.getOrCreatePrefetchCacheEntry)({url:r,nextUrl:e.nextUrl,prefetchCache:e.prefetchCache,kind:t.kind,tree:e.tree,buildId:e.buildId}),e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9809:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"refreshReducer",{enumerable:!0,get:function(){return g}});let n=r(9009),o=r(7584),a=r(5166),l=r(3772),i=r(941),u=r(7252),s=r(114),c=r(2994),d=r(5652),f=r(5262),p=r(4158);function g(e,t){let{origin:r}=t,g={},h=e.canonicalUrl,_=e.tree;g.preserveCustomHistoryState=!1;let y=(0,c.createEmptyCacheNode)(),v=(0,f.hasInterceptionRouteInCurrentTree)(e.tree);return y.lazyData=(0,n.fetchServerResponse)(new URL(h,r),[_[0],_[1],_[2],"refetch"],v?e.nextUrl:null,e.buildId),y.lazyData.then(async r=>{let[n,c]=r;if("string"==typeof n)return(0,i.handleExternalUrl)(e,g,n,e.pushRef.pendingPush);for(let r of(y.lazyData=null,n)){if(3!==r.length)return console.log("REFRESH FAILED"),e;let[n]=r,u=(0,a.applyRouterStatePatchToTree)([""],_,n,e.canonicalUrl);if(null===u)return(0,d.handleSegmentMismatch)(e,t,n);if((0,l.isNavigatingToNewRootLayout)(_,u))return(0,i.handleExternalUrl)(e,g,h,e.pushRef.pendingPush);let f=c?(0,o.createHrefFromUrl)(c):void 0;c&&(g.canonicalUrl=f);let[b,m]=r.slice(-2);if(null!==b){let e=b[2];y.rsc=e,y.prefetchRsc=null,(0,s.fillLazyItemsTillLeafWithHead)(y,void 0,n,b,m),g.prefetchCache=new Map}await (0,p.refreshInactiveParallelSegments)({state:e,updatedTree:u,updatedCache:y,includeNextUrl:v,canonicalUrl:g.canonicalUrl||e.canonicalUrl}),g.cache=y,g.patchedTree=u,g.canonicalUrl=h,_=u}return(0,u.handleMutable)(e,g)},()=>e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5608:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"restoreReducer",{enumerable:!0,get:function(){return a}});let n=r(7584),o=r(3648);function a(e,t){var r;let{url:a,tree:l}=t,i=(0,n.createHrefFromUrl)(a),u=l||e.tree,s=e.cache;return{buildId:e.buildId,canonicalUrl:i,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:e.focusAndScrollRef,cache:s,prefetchCache:e.prefetchCache,tree:u,nextUrl:null!=(r=(0,o.extractPathFromFlightRouterState)(u))?r:a.pathname}}r(8831),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5240:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverActionReducer",{enumerable:!0,get:function(){return m}});let n=r(5424),o=r(5138),a=r(3486),l=r(7584),i=r(941),u=r(5166),s=r(3772),c=r(7252),d=r(114),f=r(2994),p=r(5262),g=r(5652),h=r(4158),_=r(7542),{createFromFetch:y,encodeReply:v}=r(6493);async function b(e,t,r){let l,{actionId:i,actionArgs:u}=r,s=await v(u),c=await fetch("",{method:"POST",headers:{Accept:o.RSC_CONTENT_TYPE_HEADER,[o.ACTION]:i,[o.NEXT_ROUTER_STATE_TREE]:(0,_.prepareFlightRouterStateForRequest)(e.tree),...t?{[o.NEXT_URL]:t}:{}},body:s}),d=c.headers.get("x-action-redirect");try{let e=JSON.parse(c.headers.get("x-action-revalidated")||"[[],0,0]");l={paths:e[0]||[],tag:!!e[1],cookie:e[2]}}catch(e){l={paths:[],tag:!1,cookie:!1}}let f=d?new URL((0,a.addBasePath)(d),new URL(e.canonicalUrl,window.location.href)):void 0;if(c.headers.get("content-type")===o.RSC_CONTENT_TYPE_HEADER){let e=await y(Promise.resolve(c),{callServer:n.callServer});if(d){let[,t]=null!=e?e:[];return{actionFlightData:t,redirectLocation:f,revalidatedParts:l}}let[t,[,r]]=null!=e?e:[];return{actionResult:t,actionFlightData:r,redirectLocation:f,revalidatedParts:l}}return{redirectLocation:f,revalidatedParts:l}}function m(e,t){let{resolve:r,reject:n}=t,o={},a=e.canonicalUrl,_=e.tree;o.preserveCustomHistoryState=!1;let y=e.nextUrl&&(0,p.hasInterceptionRouteInCurrentTree)(e.tree)?e.nextUrl:null;return o.inFlightServerAction=b(e,y,t),o.inFlightServerAction.then(async n=>{let{actionResult:p,actionFlightData:v,redirectLocation:b}=n;if(b&&(e.pushRef.pendingPush=!0,o.pendingPush=!0),!v)return(r(p),b)?(0,i.handleExternalUrl)(e,o,b.href,e.pushRef.pendingPush):e;if("string"==typeof v)return(0,i.handleExternalUrl)(e,o,v,e.pushRef.pendingPush);if(o.inFlightServerAction=null,b){let e=(0,l.createHrefFromUrl)(b,!1);o.canonicalUrl=e}for(let r of v){if(3!==r.length)return console.log("SERVER ACTION APPLY FAILED"),e;let[n]=r,c=(0,u.applyRouterStatePatchToTree)([""],_,n,b?(0,l.createHrefFromUrl)(b):e.canonicalUrl);if(null===c)return(0,g.handleSegmentMismatch)(e,t,n);if((0,s.isNavigatingToNewRootLayout)(_,c))return(0,i.handleExternalUrl)(e,o,a,e.pushRef.pendingPush);let[p,v]=r.slice(-2),m=null!==p?p[2]:null;if(null!==m){let t=(0,f.createEmptyCacheNode)();t.rsc=m,t.prefetchRsc=null,(0,d.fillLazyItemsTillLeafWithHead)(t,void 0,n,p,v),await (0,h.refreshInactiveParallelSegments)({state:e,updatedTree:c,updatedCache:t,includeNextUrl:!!y,canonicalUrl:o.canonicalUrl||e.canonicalUrl}),o.cache=t,o.prefetchCache=new Map}o.patchedTree=c,_=c}return r(p),(0,c.handleMutable)(e,o)},t=>(n(t),e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4025:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverPatchReducer",{enumerable:!0,get:function(){return d}});let n=r(7584),o=r(5166),a=r(3772),l=r(941),i=r(9894),u=r(7252),s=r(2994),c=r(5652);function d(e,t){let{serverResponse:r}=t,[d,f]=r,p={};if(p.preserveCustomHistoryState=!1,"string"==typeof d)return(0,l.handleExternalUrl)(e,p,d,e.pushRef.pendingPush);let g=e.tree,h=e.cache;for(let r of d){let u=r.slice(0,-4),[d]=r.slice(-3,-2),_=(0,o.applyRouterStatePatchToTree)(["",...u],g,d,e.canonicalUrl);if(null===_)return(0,c.handleSegmentMismatch)(e,t,d);if((0,a.isNavigatingToNewRootLayout)(g,_))return(0,l.handleExternalUrl)(e,p,e.canonicalUrl,e.pushRef.pendingPush);let y=f?(0,n.createHrefFromUrl)(f):void 0;y&&(p.canonicalUrl=y);let v=(0,s.createEmptyCacheNode)();(0,i.applyFlightData)(h,v,r),p.patchedTree=_,p.cache=v,h=v,g=_}return(0,u.handleMutable)(e,p)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4158:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addRefreshMarkerToActiveParallelSegments:function(){return function e(t,r){let[n,o,,l]=t;for(let i in n.includes(a.PAGE_SEGMENT_KEY)&&"refresh"!==l&&(t[2]=r,t[3]="refresh"),o)e(o[i],r)}},refreshInactiveParallelSegments:function(){return l}});let n=r(9894),o=r(9009),a=r(8071);async function l(e){let t=new Set;await i({...e,rootTree:e.updatedTree,fetchedSegments:t})}async function i(e){let{state:t,updatedTree:r,updatedCache:a,includeNextUrl:l,fetchedSegments:u,rootTree:s=r,canonicalUrl:c}=e,[,d,f,p]=r,g=[];if(f&&f!==c&&"refresh"===p&&!u.has(f)){u.add(f);let e=(0,o.fetchServerResponse)(new URL(f,location.origin),[s[0],s[1],s[2],"refetch"],l?t.nextUrl:null,t.buildId).then(e=>{let t=e[0];if("string"!=typeof t)for(let e of t)(0,n.applyFlightData)(a,a,e)});g.push(e)}for(let e in d){let r=i({state:t,updatedTree:d[e],updatedCache:a,includeNextUrl:l,fetchedSegments:u,rootTree:s,canonicalUrl:c});g.push(r)}await Promise.all(g)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7767:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_FAST_REFRESH:function(){return s},ACTION_NAVIGATE:function(){return a},ACTION_PREFETCH:function(){return u},ACTION_REFRESH:function(){return o},ACTION_RESTORE:function(){return l},ACTION_SERVER_ACTION:function(){return c},ACTION_SERVER_PATCH:function(){return i},PrefetchCacheEntryStatus:function(){return n},PrefetchKind:function(){return r},isThenable:function(){return d}});let o="refresh",a="navigate",l="restore",i="server-patch",u="prefetch",s="fast-refresh",c="server-action";function d(e){return e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof e.then}(function(e){e.AUTO="auto",e.FULL="full",e.TEMPORARY="temporary"})(r||(r={})),function(e){e.fresh="fresh",e.reusable="reusable",e.expired="expired",e.stale="stale"}(n||(n={})),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3860:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reducer",{enumerable:!0,get:function(){return n}}),r(7767),r(941),r(4025),r(5608),r(9809),r(1156),r(5703),r(5240);let n=function(e,t){return e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"shouldHardNavigate",{enumerable:!0,get:function(){return function e(t,r){let[o,a]=r,[l,i]=t;return(0,n.matchSegment)(l,o)?!(t.length<=2)&&e(t.slice(2),a[i]):!!Array.isArray(l)}}});let n=r(455);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3325:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createDynamicallyTrackedSearchParams:function(){return i},createUntrackedSearchParams:function(){return l}});let n=r(5869),o=r(2846),a=r(2255);function l(e){let t=n.staticGenerationAsyncStorage.getStore();return t&&t.forceStatic?{}:e}function i(e){let t=n.staticGenerationAsyncStorage.getStore();return t?t.forceStatic?{}:t.isStaticGeneration||t.dynamicShouldError?new Proxy({},{get:(e,r,n)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),a.ReflectAdapter.get(e,r,n)),has:(e,r)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),Reflect.has(e,r)),ownKeys:e=>((0,o.trackDynamicDataAccessed)(t,"searchParams"),Reflect.ownKeys(e))}):e:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6488:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{StaticGenBailoutError:function(){return n},isStaticGenBailoutError:function(){return o}});let r="NEXT_STATIC_GEN_BAILOUT";class n extends Error{constructor(...e){super(...e),this.code=r}}function o(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9519:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unresolvedThenable",{enumerable:!0,get:function(){return r}});let r={then:()=>{}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7326:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{useReducerWithReduxDevtools:function(){return i},useUnwrapState:function(){return l}});let n=r(8374)._(r(7577)),o=r(7767);function a(e){if(e instanceof Map){let t={};for(let[r,n]of e.entries()){if("function"==typeof n){t[r]="fn()";continue}if("object"==typeof n&&null!==n){if(n.$$typeof){t[r]=n.$$typeof.toString();continue}if(n._bundlerConfig){t[r]="FlightData";continue}}t[r]=a(n)}return t}if("object"==typeof e&&null!==e){let t={};for(let r in e){let n=e[r];if("function"==typeof n){t[r]="fn()";continue}if("object"==typeof n&&null!==n){if(n.$$typeof){t[r]=n.$$typeof.toString();continue}if(n.hasOwnProperty("_bundlerConfig")){t[r]="FlightData";continue}}t[r]=a(n)}return t}return Array.isArray(e)?e.map(a):e}function l(e){return(0,o.isThenable)(e)?(0,n.use)(e):e}r(3879);let i=function(e){return[e,()=>{},()=>{}]};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7542:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"prepareFlightRouterStateForRequest",{enumerable:!0,get:function(){return o}});let n=r(8071);function o(e,t){return t?encodeURIComponent(JSON.stringify(e)):encodeURIComponent(JSON.stringify(function e(t){let[r,o,,a,l]=t,i="string"==typeof r&&r.startsWith(n.PAGE_SEGMENT_KEY+"?")?n.PAGE_SEGMENT_KEY:r,u={};for(let[t,r]of Object.entries(o))u[t]=e(r);let s=[i,u,null,a&&"refresh"!==a?a:null];return void 0!==l&&(s[4]=l),s}(e)))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7929:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let n=r(4655);function o(e){return(0,n.pathHasPrefix)(e,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3658:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return a}});let n=r(3236),o=r(3067),a=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:a}=(0,o.parsePath)(e);return""+(0,n.removeTrailingSlash)(t)+r+a};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4237:(e,t,r)=>{"use strict";function n(e){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return n}}),r(7929),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6401:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getPathname:function(){return n},isFullStringUrl:function(){return o},parseUrl:function(){return a}});let r="http://n";function n(e){return new URL(e,r).pathname}function o(e){return/https?:\/\//.test(e)}function a(e){let t;try{t=new URL(e,r)}catch{}return t}},2846:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Postpone:function(){return d},createPostponedAbortSignal:function(){return y},createPrerenderState:function(){return u},formatDynamicAPIAccesses:function(){return h},markCurrentScopeAsDynamic:function(){return s},trackDynamicDataAccessed:function(){return c},trackDynamicFetch:function(){return f},usedDynamicAPIs:function(){return g}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(7577)),o=r(442),a=r(6488),l=r(6401),i="function"==typeof n.default.unstable_postpone;function u(e){return{isDebugSkeleton:e,dynamicAccesses:[]}}function s(e,t){let r=(0,l.getPathname)(e.urlPathname);if(!e.isUnstableCacheCallback){if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}}function c(e,t){let r=(0,l.getPathname)(e.urlPathname);if(e.isUnstableCacheCallback)throw Error(`Route ${r} used "${t}" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "${t}" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}function d({reason:e,prerenderState:t,pathname:r}){p(t,e,r)}function f(e,t){e.prerenderState&&p(e.prerenderState,t,e.urlPathname)}function p(e,t,r){_();let o=`Route ${r} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;e.dynamicAccesses.push({stack:e.isDebugSkeleton?Error().stack:void 0,expression:t}),n.default.unstable_postpone(o)}function g(e){return e.dynamicAccesses.length>0}function h(e){return e.dynamicAccesses.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: +${t}`))}function _(){if(!i)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function y(e){_();let t=new AbortController;try{n.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}},2357:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentParam",{enumerable:!0,get:function(){return o}});let n=r(7356);function o(e){let t=n.INTERCEPTION_ROUTE_MARKERS.find(t=>e.startsWith(t));return(t&&(e=e.slice(t.length)),e.startsWith("[[...")&&e.endsWith("]]"))?{type:"optional-catchall",param:e.slice(5,-2)}:e.startsWith("[...")&&e.endsWith("]")?{type:t?"catchall-intercepted":"catchall",param:e.slice(4,-1)}:e.startsWith("[")&&e.endsWith("]")?{type:t?"dynamic-intercepted":"dynamic",param:e.slice(1,-1)}:null}},7356:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return l},isInterceptionRouteAppPath:function(){return a}});let n=r(2862),o=["(..)(..)","(.)","(..)","(...)"];function a(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function l(e){let t,r,a;for(let n of e.split("/"))if(r=o.find(e=>n.startsWith(e))){[t,a]=e.split(r,2);break}if(!t||!r||!a)throw Error(`Invalid interception route: ${e}. Must be in the format //(..|...|..)(..)/`);switch(t=(0,n.normalizeAppPath)(t),r){case"(.)":a="/"===t?`/${a}`:t+"/"+a;break;case"(..)":if("/"===t)throw Error(`Invalid interception route: ${e}. Cannot use (..) marker at the root level, use (.) instead.`);a=t.split("/").slice(0,-1).concat(a).join("/");break;case"(...)":a="/"+a;break;case"(..)(..)":let l=t.split("/");if(l.length<=2)throw Error(`Invalid interception route: ${e}. Cannot use (..)(..) marker at the root level or one level up.`);a=l.slice(0,-2).concat(a).join("/");break;default:throw Error("Invariant: unexpected marker")}return{interceptingRoute:t,interceptedRoute:a}}},1616:(e,t,r)=>{"use strict";e.exports=r(399)},2413:(e,t,r)=>{"use strict";e.exports=r(1616).vendored.contexts.AppRouterContext},7008:(e,t,r)=>{"use strict";e.exports=r(1616).vendored.contexts.HooksClientContext},3347:(e,t,r)=>{"use strict";e.exports=r(1616).vendored.contexts.ServerInsertedHtml},962:(e,t,r)=>{"use strict";e.exports=r(1616).vendored["react-ssr"].ReactDOM},326:(e,t,r)=>{"use strict";e.exports=r(1616).vendored["react-ssr"].ReactJsxRuntime},6493:(e,t,r)=>{"use strict";e.exports=r(1616).vendored["react-ssr"].ReactServerDOMWebpackClientEdge},7577:(e,t,r)=>{"use strict";e.exports=r(1616).vendored["react-ssr"].React},2255:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},2165:(e,t)=>{"use strict";function r(e){let t=5381;for(let r=0;r>>0}function n(e){return r(e).toString(36).slice(0,5)}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{djb2Hash:function(){return r},hexHash:function(){return n}})},4129:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{BailoutToCSRError:function(){return n},isBailoutToCSRError:function(){return o}});let r="BAILOUT_TO_CLIENT_SIDE_RENDERING";class n extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}},6058:(e,t)=>{"use strict";function r(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},3879:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ActionQueueContext:function(){return i},createMutableActionQueue:function(){return c}});let n=r(8374),o=r(7767),a=r(3860),l=n._(r(7577)),i=l.default.createContext(null);function u(e,t){null!==e.pending&&(e.pending=e.pending.next,null!==e.pending?s({actionQueue:e,action:e.pending,setState:t}):e.needsRefresh&&(e.needsRefresh=!1,e.dispatch({type:o.ACTION_REFRESH,origin:window.location.origin},t)))}async function s(e){let{actionQueue:t,action:r,setState:n}=e,a=t.state;if(!a)throw Error("Invariant: Router state not initialized");t.pending=r;let l=r.payload,i=t.action(a,l);function s(e){r.discarded||(t.state=e,t.devToolsInstance&&t.devToolsInstance.send(l,e),u(t,n),r.resolve(e))}(0,o.isThenable)(i)?i.then(s,e=>{u(t,n),r.reject(e)}):s(i)}function c(){let e={state:null,dispatch:(t,r)=>(function(e,t,r){let n={resolve:r,reject:()=>{}};if(t.type!==o.ACTION_RESTORE){let e=new Promise((e,t)=>{n={resolve:e,reject:t}});(0,l.startTransition)(()=>{r(e)})}let a={payload:t,next:null,resolve:n.resolve,reject:n.reject};null===e.pending?(e.last=a,s({actionQueue:e,action:a,setState:r})):t.type===o.ACTION_NAVIGATE||t.type===o.ACTION_RESTORE?(e.pending.discarded=!0,e.last=a,e.pending.payload.type===o.ACTION_SERVER_ACTION&&(e.needsRefresh=!0),s({actionQueue:e,action:a,setState:r})):(null!==e.last&&(e.last.next=a),e.last=a)})(e,t,r),action:async(e,t)=>{if(null===e)throw Error("Invariant: Router state not initialized");return(0,a.reducer)(e,t)},pending:null,last:null};return e}},8974:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let n=r(3067);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:a}=(0,n.parsePath)(e);return""+t+r+o+a}},2862:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{normalizeAppPath:function(){return a},normalizeRscURL:function(){return l}});let n=r(6058),o=r(8071);function a(e){return(0,n.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:e+"/"+t,""))}function l(e){return e.replace(/\.rsc($|\?)/,"$1")}},9976:(e,t)=>{"use strict";function r(e,t){if(void 0===t&&(t={}),t.onlyHashChange){e();return}let r=document.documentElement,n=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return r}})},2148:(e,t)=>{"use strict";function r(e){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(e)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isBot",{enumerable:!0,get:function(){return r}})},3067:(e,t)=>{"use strict";function r(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return r}})},4655:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let n=r(3067);function o(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},3236:(e,t)=>{"use strict";function r(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return r}})},8071:(e,t)=>{"use strict";function r(e){return"("===e[0]&&e.endsWith(")")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DEFAULT_SEGMENT_KEY:function(){return o},PAGE_SEGMENT_KEY:function(){return n},isGroupSegment:function(){return r}});let n="__PAGE__",o="__DEFAULT__"},576:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},8839:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bootstrap:function(){return i},error:function(){return s},event:function(){return p},info:function(){return f},prefixes:function(){return o},ready:function(){return d},trace:function(){return g},wait:function(){return u},warn:function(){return c},warnOnce:function(){return _}});let n=r(1354),o={wait:(0,n.white)((0,n.bold)("○")),error:(0,n.red)((0,n.bold)("⨯")),warn:(0,n.yellow)((0,n.bold)("⚠")),ready:"▲",info:(0,n.white)((0,n.bold)(" ")),event:(0,n.green)((0,n.bold)("✓")),trace:(0,n.magenta)((0,n.bold)("\xbb"))},a={log:"log",warn:"warn",error:"error"};function l(e,...t){(""===t[0]||void 0===t[0])&&1===t.length&&t.shift();let r=e in a?a[e]:"log",n=o[e];0===t.length?console[r](""):console[r](" "+n,...t)}function i(...e){console.log(" ",...e)}function u(...e){l("wait",...e)}function s(...e){l("error",...e)}function c(...e){l("warn",...e)}function d(...e){l("ready",...e)}function f(...e){l("info",...e)}function p(...e){l("event",...e)}function g(...e){l("trace",...e)}let h=new Set;function _(...e){h.has(e[0])||(h.add(e.join(" ")),c(...e))}},8570:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createProxy",{enumerable:!0,get:function(){return n}});let n=r(1749).createClientModuleProxy},9943:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/app-router.js")},3144:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/client-page.js")},7922:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/error-boundary.js")},4789:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DynamicServerError:function(){return n},isDynamicServerError:function(){return o}});let r="DYNAMIC_SERVER_USAGE";class n extends Error{constructor(e){super("Dynamic server usage: "+e),this.description=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest&&e.digest===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5106:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/layout-router.js")},525:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/not-found-boundary.js")},5866:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}}),r(3370);let n=r(9510);r(1159);let o={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};function a(){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("title",{children:"404: This page could not be found."}),(0,n.jsx)("div",{style:o.error,children:(0,n.jsxs)("div",{children:[(0,n.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,n.jsx)("h1",{className:"next-error-h1",style:o.h1,children:"404"}),(0,n.jsx)("div",{style:o.desc,children:(0,n.jsx)("h2",{style:o.h2,children:"This page could not be found."})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4892:(e,t,r)=>{"use strict";let{createProxy:n}=r(8570);e.exports=n("/opt/uno-click/site/node_modules/next/dist/client/components/render-from-template-context.js")},9181:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createDynamicallyTrackedSearchParams:function(){return i},createUntrackedSearchParams:function(){return l}});let n=r(5869),o=r(6278),a=r(8238);function l(e){let t=n.staticGenerationAsyncStorage.getStore();return t&&t.forceStatic?{}:e}function i(e){let t=n.staticGenerationAsyncStorage.getStore();return t?t.forceStatic?{}:t.isStaticGeneration||t.dynamicShouldError?new Proxy({},{get:(e,r,n)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),a.ReflectAdapter.get(e,r,n)),has:(e,r)=>("string"==typeof r&&(0,o.trackDynamicDataAccessed)(t,"searchParams."+r),Reflect.has(e,r)),ownKeys:e=>((0,o.trackDynamicDataAccessed)(t,"searchParams"),Reflect.ownKeys(e))}):e:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4618:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{StaticGenBailoutError:function(){return n},isStaticGenBailoutError:function(){return o}});let r="NEXT_STATIC_GEN_BAILOUT";class n extends Error{constructor(...e){super(...e),this.code=r}}function o(e){return"object"==typeof e&&null!==e&&"code"in e&&e.code===r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7482:e=>{(()=>{"use strict";var t={491:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ContextAPI=void 0;let n=r(223),o=r(172),a=r(930),l="context",i=new n.NoopContextManager;class u{constructor(){}static getInstance(){return this._instance||(this._instance=new u),this._instance}setGlobalContextManager(e){return(0,o.registerGlobal)(l,e,a.DiagAPI.instance())}active(){return this._getContextManager().active()}with(e,t,r,...n){return this._getContextManager().with(e,t,r,...n)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return(0,o.getGlobal)(l)||i}disable(){this._getContextManager().disable(),(0,o.unregisterGlobal)(l,a.DiagAPI.instance())}}t.ContextAPI=u},930:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagAPI=void 0;let n=r(56),o=r(912),a=r(957),l=r(172);class i{constructor(){function e(e){return function(...t){let r=(0,l.getGlobal)("diag");if(r)return r[e](...t)}}let t=this;t.setLogger=(e,r={logLevel:a.DiagLogLevel.INFO})=>{var n,i,u;if(e===t){let e=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return t.error(null!==(n=e.stack)&&void 0!==n?n:e.message),!1}"number"==typeof r&&(r={logLevel:r});let s=(0,l.getGlobal)("diag"),c=(0,o.createLogLevelDiagLogger)(null!==(i=r.logLevel)&&void 0!==i?i:a.DiagLogLevel.INFO,e);if(s&&!r.suppressOverrideMessage){let e=null!==(u=Error().stack)&&void 0!==u?u:"";s.warn(`Current logger will be overwritten from ${e}`),c.warn(`Current logger will overwrite one already registered from ${e}`)}return(0,l.registerGlobal)("diag",c,t,!0)},t.disable=()=>{(0,l.unregisterGlobal)("diag",t)},t.createComponentLogger=e=>new n.DiagComponentLogger(e),t.verbose=e("verbose"),t.debug=e("debug"),t.info=e("info"),t.warn=e("warn"),t.error=e("error")}static instance(){return this._instance||(this._instance=new i),this._instance}}t.DiagAPI=i},653:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.MetricsAPI=void 0;let n=r(660),o=r(172),a=r(930),l="metrics";class i{constructor(){}static getInstance(){return this._instance||(this._instance=new i),this._instance}setGlobalMeterProvider(e){return(0,o.registerGlobal)(l,e,a.DiagAPI.instance())}getMeterProvider(){return(0,o.getGlobal)(l)||n.NOOP_METER_PROVIDER}getMeter(e,t,r){return this.getMeterProvider().getMeter(e,t,r)}disable(){(0,o.unregisterGlobal)(l,a.DiagAPI.instance())}}t.MetricsAPI=i},181:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PropagationAPI=void 0;let n=r(172),o=r(874),a=r(194),l=r(277),i=r(369),u=r(930),s="propagation",c=new o.NoopTextMapPropagator;class d{constructor(){this.createBaggage=i.createBaggage,this.getBaggage=l.getBaggage,this.getActiveBaggage=l.getActiveBaggage,this.setBaggage=l.setBaggage,this.deleteBaggage=l.deleteBaggage}static getInstance(){return this._instance||(this._instance=new d),this._instance}setGlobalPropagator(e){return(0,n.registerGlobal)(s,e,u.DiagAPI.instance())}inject(e,t,r=a.defaultTextMapSetter){return this._getGlobalPropagator().inject(e,t,r)}extract(e,t,r=a.defaultTextMapGetter){return this._getGlobalPropagator().extract(e,t,r)}fields(){return this._getGlobalPropagator().fields()}disable(){(0,n.unregisterGlobal)(s,u.DiagAPI.instance())}_getGlobalPropagator(){return(0,n.getGlobal)(s)||c}}t.PropagationAPI=d},997:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceAPI=void 0;let n=r(172),o=r(846),a=r(139),l=r(607),i=r(930),u="trace";class s{constructor(){this._proxyTracerProvider=new o.ProxyTracerProvider,this.wrapSpanContext=a.wrapSpanContext,this.isSpanContextValid=a.isSpanContextValid,this.deleteSpan=l.deleteSpan,this.getSpan=l.getSpan,this.getActiveSpan=l.getActiveSpan,this.getSpanContext=l.getSpanContext,this.setSpan=l.setSpan,this.setSpanContext=l.setSpanContext}static getInstance(){return this._instance||(this._instance=new s),this._instance}setGlobalTracerProvider(e){let t=(0,n.registerGlobal)(u,this._proxyTracerProvider,i.DiagAPI.instance());return t&&this._proxyTracerProvider.setDelegate(e),t}getTracerProvider(){return(0,n.getGlobal)(u)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){(0,n.unregisterGlobal)(u,i.DiagAPI.instance()),this._proxyTracerProvider=new o.ProxyTracerProvider}}t.TraceAPI=s},277:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.deleteBaggage=t.setBaggage=t.getActiveBaggage=t.getBaggage=void 0;let n=r(491),o=(0,r(780).createContextKey)("OpenTelemetry Baggage Key");function a(e){return e.getValue(o)||void 0}t.getBaggage=a,t.getActiveBaggage=function(){return a(n.ContextAPI.getInstance().active())},t.setBaggage=function(e,t){return e.setValue(o,t)},t.deleteBaggage=function(e){return e.deleteValue(o)}},993:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BaggageImpl=void 0;class r{constructor(e){this._entries=e?new Map(e):new Map}getEntry(e){let t=this._entries.get(e);if(t)return Object.assign({},t)}getAllEntries(){return Array.from(this._entries.entries()).map(([e,t])=>[e,t])}setEntry(e,t){let n=new r(this._entries);return n._entries.set(e,t),n}removeEntry(e){let t=new r(this._entries);return t._entries.delete(e),t}removeEntries(...e){let t=new r(this._entries);for(let r of e)t._entries.delete(r);return t}clear(){return new r}}t.BaggageImpl=r},830:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataSymbol=void 0,t.baggageEntryMetadataSymbol=Symbol("BaggageEntryMetadata")},369:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.baggageEntryMetadataFromString=t.createBaggage=void 0;let n=r(930),o=r(993),a=r(830),l=n.DiagAPI.instance();t.createBaggage=function(e={}){return new o.BaggageImpl(new Map(Object.entries(e)))},t.baggageEntryMetadataFromString=function(e){return"string"!=typeof e&&(l.error(`Cannot create baggage metadata from unknown type: ${typeof e}`),e=""),{__TYPE__:a.baggageEntryMetadataSymbol,toString:()=>e}}},67:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.context=void 0;let n=r(491);t.context=n.ContextAPI.getInstance()},223:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopContextManager=void 0;let n=r(780);class o{active(){return n.ROOT_CONTEXT}with(e,t,r,...n){return t.call(r,...n)}bind(e,t){return t}enable(){return this}disable(){return this}}t.NoopContextManager=o},780:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ROOT_CONTEXT=t.createContextKey=void 0,t.createContextKey=function(e){return Symbol.for(e)};class r{constructor(e){let t=this;t._currentContext=e?new Map(e):new Map,t.getValue=e=>t._currentContext.get(e),t.setValue=(e,n)=>{let o=new r(t._currentContext);return o._currentContext.set(e,n),o},t.deleteValue=e=>{let n=new r(t._currentContext);return n._currentContext.delete(e),n}}}t.ROOT_CONTEXT=new r},506:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.diag=void 0;let n=r(930);t.diag=n.DiagAPI.instance()},56:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagComponentLogger=void 0;let n=r(172);class o{constructor(e){this._namespace=e.namespace||"DiagComponentLogger"}debug(...e){return a("debug",this._namespace,e)}error(...e){return a("error",this._namespace,e)}info(...e){return a("info",this._namespace,e)}warn(...e){return a("warn",this._namespace,e)}verbose(...e){return a("verbose",this._namespace,e)}}function a(e,t,r){let o=(0,n.getGlobal)("diag");if(o)return r.unshift(t),o[e](...r)}t.DiagComponentLogger=o},972:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagConsoleLogger=void 0;let r=[{n:"error",c:"error"},{n:"warn",c:"warn"},{n:"info",c:"info"},{n:"debug",c:"debug"},{n:"verbose",c:"trace"}];class n{constructor(){for(let e=0;e{Object.defineProperty(t,"__esModule",{value:!0}),t.createLogLevelDiagLogger=void 0;let n=r(957);t.createLogLevelDiagLogger=function(e,t){function r(r,n){let o=t[r];return"function"==typeof o&&e>=n?o.bind(t):function(){}}return en.DiagLogLevel.ALL&&(e=n.DiagLogLevel.ALL),t=t||{},{error:r("error",n.DiagLogLevel.ERROR),warn:r("warn",n.DiagLogLevel.WARN),info:r("info",n.DiagLogLevel.INFO),debug:r("debug",n.DiagLogLevel.DEBUG),verbose:r("verbose",n.DiagLogLevel.VERBOSE)}}},957:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagLogLevel=void 0,function(e){e[e.NONE=0]="NONE",e[e.ERROR=30]="ERROR",e[e.WARN=50]="WARN",e[e.INFO=60]="INFO",e[e.DEBUG=70]="DEBUG",e[e.VERBOSE=80]="VERBOSE",e[e.ALL=9999]="ALL"}(t.DiagLogLevel||(t.DiagLogLevel={}))},172:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.unregisterGlobal=t.getGlobal=t.registerGlobal=void 0;let n=r(200),o=r(521),a=r(130),l=o.VERSION.split(".")[0],i=Symbol.for(`opentelemetry.js.api.${l}`),u=n._globalThis;t.registerGlobal=function(e,t,r,n=!1){var a;let l=u[i]=null!==(a=u[i])&&void 0!==a?a:{version:o.VERSION};if(!n&&l[e]){let t=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);return r.error(t.stack||t.message),!1}if(l.version!==o.VERSION){let t=Error(`@opentelemetry/api: Registration of version v${l.version} for ${e} does not match previously registered API v${o.VERSION}`);return r.error(t.stack||t.message),!1}return l[e]=t,r.debug(`@opentelemetry/api: Registered a global for ${e} v${o.VERSION}.`),!0},t.getGlobal=function(e){var t,r;let n=null===(t=u[i])||void 0===t?void 0:t.version;if(n&&(0,a.isCompatible)(n))return null===(r=u[i])||void 0===r?void 0:r[e]},t.unregisterGlobal=function(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${o.VERSION}.`);let r=u[i];r&&delete r[e]}},130:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.isCompatible=t._makeCompatibilityCheck=void 0;let n=r(521),o=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function a(e){let t=new Set([e]),r=new Set,n=e.match(o);if(!n)return()=>!1;let a={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};if(null!=a.prerelease)return function(t){return t===e};function l(e){return r.add(e),!1}return function(e){if(t.has(e))return!0;if(r.has(e))return!1;let n=e.match(o);if(!n)return l(e);let i={major:+n[1],minor:+n[2],patch:+n[3],prerelease:n[4]};return null!=i.prerelease||a.major!==i.major?l(e):0===a.major?a.minor===i.minor&&a.patch<=i.patch?(t.add(e),!0):l(e):a.minor<=i.minor?(t.add(e),!0):l(e)}}t._makeCompatibilityCheck=a,t.isCompatible=a(n.VERSION)},886:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.metrics=void 0;let n=r(653);t.metrics=n.MetricsAPI.getInstance()},901:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ValueType=void 0,function(e){e[e.INT=0]="INT",e[e.DOUBLE=1]="DOUBLE"}(t.ValueType||(t.ValueType={}))},102:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createNoopMeter=t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=t.NOOP_OBSERVABLE_GAUGE_METRIC=t.NOOP_OBSERVABLE_COUNTER_METRIC=t.NOOP_UP_DOWN_COUNTER_METRIC=t.NOOP_HISTOGRAM_METRIC=t.NOOP_COUNTER_METRIC=t.NOOP_METER=t.NoopObservableUpDownCounterMetric=t.NoopObservableGaugeMetric=t.NoopObservableCounterMetric=t.NoopObservableMetric=t.NoopHistogramMetric=t.NoopUpDownCounterMetric=t.NoopCounterMetric=t.NoopMetric=t.NoopMeter=void 0;class r{constructor(){}createHistogram(e,r){return t.NOOP_HISTOGRAM_METRIC}createCounter(e,r){return t.NOOP_COUNTER_METRIC}createUpDownCounter(e,r){return t.NOOP_UP_DOWN_COUNTER_METRIC}createObservableGauge(e,r){return t.NOOP_OBSERVABLE_GAUGE_METRIC}createObservableCounter(e,r){return t.NOOP_OBSERVABLE_COUNTER_METRIC}createObservableUpDownCounter(e,r){return t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC}addBatchObservableCallback(e,t){}removeBatchObservableCallback(e){}}t.NoopMeter=r;class n{}t.NoopMetric=n;class o extends n{add(e,t){}}t.NoopCounterMetric=o;class a extends n{add(e,t){}}t.NoopUpDownCounterMetric=a;class l extends n{record(e,t){}}t.NoopHistogramMetric=l;class i{addCallback(e){}removeCallback(e){}}t.NoopObservableMetric=i;class u extends i{}t.NoopObservableCounterMetric=u;class s extends i{}t.NoopObservableGaugeMetric=s;class c extends i{}t.NoopObservableUpDownCounterMetric=c,t.NOOP_METER=new r,t.NOOP_COUNTER_METRIC=new o,t.NOOP_HISTOGRAM_METRIC=new l,t.NOOP_UP_DOWN_COUNTER_METRIC=new a,t.NOOP_OBSERVABLE_COUNTER_METRIC=new u,t.NOOP_OBSERVABLE_GAUGE_METRIC=new s,t.NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC=new c,t.createNoopMeter=function(){return t.NOOP_METER}},660:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NOOP_METER_PROVIDER=t.NoopMeterProvider=void 0;let n=r(102);class o{getMeter(e,t,r){return n.NOOP_METER}}t.NoopMeterProvider=o,t.NOOP_METER_PROVIDER=new o},200:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(46),t)},651:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t._globalThis=void 0,t._globalThis="object"==typeof globalThis?globalThis:global},46:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(651),t)},939:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.propagation=void 0;let n=r(181);t.propagation=n.PropagationAPI.getInstance()},874:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTextMapPropagator=void 0;class r{inject(e,t){}extract(e,t){return e}fields(){return[]}}t.NoopTextMapPropagator=r},194:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.defaultTextMapSetter=t.defaultTextMapGetter=void 0,t.defaultTextMapGetter={get(e,t){if(null!=e)return e[t]},keys:e=>null==e?[]:Object.keys(e)},t.defaultTextMapSetter={set(e,t,r){null!=e&&(e[t]=r)}}},845:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.trace=void 0;let n=r(997);t.trace=n.TraceAPI.getInstance()},403:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NonRecordingSpan=void 0;let n=r(476);class o{constructor(e=n.INVALID_SPAN_CONTEXT){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return!1}recordException(e,t){}}t.NonRecordingSpan=o},614:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracer=void 0;let n=r(491),o=r(607),a=r(403),l=r(139),i=n.ContextAPI.getInstance();class u{startSpan(e,t,r=i.active()){if(null==t?void 0:t.root)return new a.NonRecordingSpan;let n=r&&(0,o.getSpanContext)(r);return"object"==typeof n&&"string"==typeof n.spanId&&"string"==typeof n.traceId&&"number"==typeof n.traceFlags&&(0,l.isSpanContextValid)(n)?new a.NonRecordingSpan(n):new a.NonRecordingSpan}startActiveSpan(e,t,r,n){let a,l,u;if(arguments.length<2)return;2==arguments.length?u=t:3==arguments.length?(a=t,u=r):(a=t,l=r,u=n);let s=null!=l?l:i.active(),c=this.startSpan(e,a,s),d=(0,o.setSpan)(s,c);return i.with(d,u,void 0,c)}}t.NoopTracer=u},124:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NoopTracerProvider=void 0;let n=r(614);class o{getTracer(e,t,r){return new n.NoopTracer}}t.NoopTracerProvider=o},125:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracer=void 0;let n=new(r(614)).NoopTracer;class o{constructor(e,t,r,n){this._provider=e,this.name=t,this.version=r,this.options=n}startSpan(e,t,r){return this._getTracer().startSpan(e,t,r)}startActiveSpan(e,t,r,n){let o=this._getTracer();return Reflect.apply(o.startActiveSpan,o,arguments)}_getTracer(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):n}}t.ProxyTracer=o},846:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ProxyTracerProvider=void 0;let n=r(125),o=new(r(124)).NoopTracerProvider;class a{getTracer(e,t,r){var o;return null!==(o=this.getDelegateTracer(e,t,r))&&void 0!==o?o:new n.ProxyTracer(this,e,t,r)}getDelegate(){var e;return null!==(e=this._delegate)&&void 0!==e?e:o}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,r){var n;return null===(n=this._delegate)||void 0===n?void 0:n.getTracer(e,t,r)}}t.ProxyTracerProvider=a},996:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SamplingDecision=void 0,function(e){e[e.NOT_RECORD=0]="NOT_RECORD",e[e.RECORD=1]="RECORD",e[e.RECORD_AND_SAMPLED=2]="RECORD_AND_SAMPLED"}(t.SamplingDecision||(t.SamplingDecision={}))},607:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.getSpanContext=t.setSpanContext=t.deleteSpan=t.setSpan=t.getActiveSpan=t.getSpan=void 0;let n=r(780),o=r(403),a=r(491),l=(0,n.createContextKey)("OpenTelemetry Context Key SPAN");function i(e){return e.getValue(l)||void 0}function u(e,t){return e.setValue(l,t)}t.getSpan=i,t.getActiveSpan=function(){return i(a.ContextAPI.getInstance().active())},t.setSpan=u,t.deleteSpan=function(e){return e.deleteValue(l)},t.setSpanContext=function(e,t){return u(e,new o.NonRecordingSpan(t))},t.getSpanContext=function(e){var t;return null===(t=i(e))||void 0===t?void 0:t.spanContext()}},325:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceStateImpl=void 0;let n=r(564);class o{constructor(e){this._internalState=new Map,e&&this._parse(e)}set(e,t){let r=this._clone();return r._internalState.has(e)&&r._internalState.delete(e),r._internalState.set(e,t),r}unset(e){let t=this._clone();return t._internalState.delete(e),t}get(e){return this._internalState.get(e)}serialize(){return this._keys().reduce((e,t)=>(e.push(t+"="+this.get(t)),e),[]).join(",")}_parse(e){!(e.length>512)&&(this._internalState=e.split(",").reverse().reduce((e,t)=>{let r=t.trim(),o=r.indexOf("=");if(-1!==o){let a=r.slice(0,o),l=r.slice(o+1,t.length);(0,n.validateKey)(a)&&(0,n.validateValue)(l)&&e.set(a,l)}return e},new Map),this._internalState.size>32&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,32))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let e=new o;return e._internalState=new Map(this._internalState),e}}t.TraceStateImpl=o},564:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.validateValue=t.validateKey=void 0;let r="[_0-9a-z-*/]",n=`[a-z]${r}{0,255}`,o=`[a-z0-9]${r}{0,240}@[a-z]${r}{0,13}`,a=RegExp(`^(?:${n}|${o})$`),l=/^[ -~]{0,255}[!-~]$/,i=/,|=/;t.validateKey=function(e){return a.test(e)},t.validateValue=function(e){return l.test(e)&&!i.test(e)}},98:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.createTraceState=void 0;let n=r(325);t.createTraceState=function(e){return new n.TraceStateImpl(e)}},476:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.INVALID_SPAN_CONTEXT=t.INVALID_TRACEID=t.INVALID_SPANID=void 0;let n=r(475);t.INVALID_SPANID="0000000000000000",t.INVALID_TRACEID="00000000000000000000000000000000",t.INVALID_SPAN_CONTEXT={traceId:t.INVALID_TRACEID,spanId:t.INVALID_SPANID,traceFlags:n.TraceFlags.NONE}},357:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanKind=void 0,function(e){e[e.INTERNAL=0]="INTERNAL",e[e.SERVER=1]="SERVER",e[e.CLIENT=2]="CLIENT",e[e.PRODUCER=3]="PRODUCER",e[e.CONSUMER=4]="CONSUMER"}(t.SpanKind||(t.SpanKind={}))},139:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.wrapSpanContext=t.isSpanContextValid=t.isValidSpanId=t.isValidTraceId=void 0;let n=r(476),o=r(403),a=/^([0-9a-f]{32})$/i,l=/^[0-9a-f]{16}$/i;function i(e){return a.test(e)&&e!==n.INVALID_TRACEID}function u(e){return l.test(e)&&e!==n.INVALID_SPANID}t.isValidTraceId=i,t.isValidSpanId=u,t.isSpanContextValid=function(e){return i(e.traceId)&&u(e.spanId)},t.wrapSpanContext=function(e){return new o.NonRecordingSpan(e)}},847:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SpanStatusCode=void 0,function(e){e[e.UNSET=0]="UNSET",e[e.OK=1]="OK",e[e.ERROR=2]="ERROR"}(t.SpanStatusCode||(t.SpanStatusCode={}))},475:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TraceFlags=void 0,function(e){e[e.NONE=0]="NONE",e[e.SAMPLED=1]="SAMPLED"}(t.TraceFlags||(t.TraceFlags={}))},521:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,t.VERSION="1.6.0"}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}},l=!0;try{t[e].call(a.exports,a,a.exports,n),l=!1}finally{l&&delete r[e]}return a.exports}n.ab=__dirname+"/";var o={};(()=>{Object.defineProperty(o,"__esModule",{value:!0}),o.trace=o.propagation=o.metrics=o.diag=o.context=o.INVALID_SPAN_CONTEXT=o.INVALID_TRACEID=o.INVALID_SPANID=o.isValidSpanId=o.isValidTraceId=o.isSpanContextValid=o.createTraceState=o.TraceFlags=o.SpanStatusCode=o.SpanKind=o.SamplingDecision=o.ProxyTracerProvider=o.ProxyTracer=o.defaultTextMapSetter=o.defaultTextMapGetter=o.ValueType=o.createNoopMeter=o.DiagLogLevel=o.DiagConsoleLogger=o.ROOT_CONTEXT=o.createContextKey=o.baggageEntryMetadataFromString=void 0;var e=n(369);Object.defineProperty(o,"baggageEntryMetadataFromString",{enumerable:!0,get:function(){return e.baggageEntryMetadataFromString}});var t=n(780);Object.defineProperty(o,"createContextKey",{enumerable:!0,get:function(){return t.createContextKey}}),Object.defineProperty(o,"ROOT_CONTEXT",{enumerable:!0,get:function(){return t.ROOT_CONTEXT}});var r=n(972);Object.defineProperty(o,"DiagConsoleLogger",{enumerable:!0,get:function(){return r.DiagConsoleLogger}});var a=n(957);Object.defineProperty(o,"DiagLogLevel",{enumerable:!0,get:function(){return a.DiagLogLevel}});var l=n(102);Object.defineProperty(o,"createNoopMeter",{enumerable:!0,get:function(){return l.createNoopMeter}});var i=n(901);Object.defineProperty(o,"ValueType",{enumerable:!0,get:function(){return i.ValueType}});var u=n(194);Object.defineProperty(o,"defaultTextMapGetter",{enumerable:!0,get:function(){return u.defaultTextMapGetter}}),Object.defineProperty(o,"defaultTextMapSetter",{enumerable:!0,get:function(){return u.defaultTextMapSetter}});var s=n(125);Object.defineProperty(o,"ProxyTracer",{enumerable:!0,get:function(){return s.ProxyTracer}});var c=n(846);Object.defineProperty(o,"ProxyTracerProvider",{enumerable:!0,get:function(){return c.ProxyTracerProvider}});var d=n(996);Object.defineProperty(o,"SamplingDecision",{enumerable:!0,get:function(){return d.SamplingDecision}});var f=n(357);Object.defineProperty(o,"SpanKind",{enumerable:!0,get:function(){return f.SpanKind}});var p=n(847);Object.defineProperty(o,"SpanStatusCode",{enumerable:!0,get:function(){return p.SpanStatusCode}});var g=n(475);Object.defineProperty(o,"TraceFlags",{enumerable:!0,get:function(){return g.TraceFlags}});var h=n(98);Object.defineProperty(o,"createTraceState",{enumerable:!0,get:function(){return h.createTraceState}});var _=n(139);Object.defineProperty(o,"isSpanContextValid",{enumerable:!0,get:function(){return _.isSpanContextValid}}),Object.defineProperty(o,"isValidTraceId",{enumerable:!0,get:function(){return _.isValidTraceId}}),Object.defineProperty(o,"isValidSpanId",{enumerable:!0,get:function(){return _.isValidSpanId}});var y=n(476);Object.defineProperty(o,"INVALID_SPANID",{enumerable:!0,get:function(){return y.INVALID_SPANID}}),Object.defineProperty(o,"INVALID_TRACEID",{enumerable:!0,get:function(){return y.INVALID_TRACEID}}),Object.defineProperty(o,"INVALID_SPAN_CONTEXT",{enumerable:!0,get:function(){return y.INVALID_SPAN_CONTEXT}});let v=n(67);Object.defineProperty(o,"context",{enumerable:!0,get:function(){return v.context}});let b=n(506);Object.defineProperty(o,"diag",{enumerable:!0,get:function(){return b.diag}});let m=n(886);Object.defineProperty(o,"metrics",{enumerable:!0,get:function(){return m.metrics}});let P=n(939);Object.defineProperty(o,"propagation",{enumerable:!0,get:function(){return P.propagation}});let R=n(845);Object.defineProperty(o,"trace",{enumerable:!0,get:function(){return R.trace}}),o.default={context:v.context,diag:b.diag,metrics:m.metrics,propagation:P.propagation,trace:R.trace}})(),e.exports=o})()},1943:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_SUFFIX:function(){return u},APP_DIR_ALIAS:function(){return j},CACHE_ONE_YEAR:function(){return m},DOT_NEXT_ALIAS:function(){return E},ESLINT_DEFAULT_DIRS:function(){return X},GSP_NO_RETURNED_VALUE:function(){return H},GSSP_COMPONENT_MEMBER_ERROR:function(){return B},GSSP_NO_RETURNED_VALUE:function(){return G},INSTRUMENTATION_HOOK_FILENAME:function(){return S},MIDDLEWARE_FILENAME:function(){return P},MIDDLEWARE_LOCATION_REGEXP:function(){return R},NEXT_BODY_SUFFIX:function(){return d},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return b},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return g},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return h},NEXT_CACHE_SOFT_TAGS_HEADER:function(){return p},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return v},NEXT_CACHE_TAGS_HEADER:function(){return f},NEXT_CACHE_TAG_MAX_ITEMS:function(){return _},NEXT_CACHE_TAG_MAX_LENGTH:function(){return y},NEXT_DATA_SUFFIX:function(){return s},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return n},NEXT_META_SUFFIX:function(){return c},NEXT_QUERY_PARAM_PREFIX:function(){return r},NON_STANDARD_NODE_ENV:function(){return V},PAGES_DIR_ALIAS:function(){return O},PRERENDER_REVALIDATE_HEADER:function(){return o},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return a},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return w},ROOT_DIR_ALIAS:function(){return T},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return A},RSC_ACTION_ENCRYPTION_ALIAS:function(){return C},RSC_ACTION_PROXY_ALIAS:function(){return N},RSC_ACTION_VALIDATE_ALIAS:function(){return M},RSC_MOD_REF_PROXY_ALIAS:function(){return x},RSC_PREFETCH_SUFFIX:function(){return l},RSC_SUFFIX:function(){return i},SERVER_PROPS_EXPORT_ERROR:function(){return F},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return D},SERVER_PROPS_SSG_CONFLICT:function(){return L},SERVER_RUNTIME:function(){return K},SSG_FALLBACK_EXPORT_ERROR:function(){return $},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return I},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return U},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return k},WEBPACK_LAYERS:function(){return W},WEBPACK_RESOURCE_QUERIES:function(){return Y}});let r="nxtP",n="nxtI",o="x-prerender-revalidate",a="x-prerender-revalidate-if-generated",l=".prefetch.rsc",i=".rsc",u=".action",s=".json",c=".meta",d=".body",f="x-next-cache-tags",p="x-next-cache-soft-tags",g="x-next-revalidated-tags",h="x-next-revalidate-tag-token",_=128,y=256,v=1024,b="_N_T_",m=31536e3,P="middleware",R=`(?:src/)?${P}`,S="instrumentation",O="private-next-pages",E="private-dot-next",T="private-next-root-dir",j="private-next-app-dir",x="next/dist/build/webpack/loaders/next-flight-loader/module-proxy",M="private-next-rsc-action-validate",N="private-next-rsc-server-reference",C="private-next-rsc-action-encryption",A="private-next-rsc-action-client-wrapper",w="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",I="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",D="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",L="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",U="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",F="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",H="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",G="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",k="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",B="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",V='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',$="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",X=["app","pages","components","lib","src"],K={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},z={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",api:"api",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",appMetadataRoute:"app-metadata-route",appRouteHandler:"app-route-handler"},W={...z,GROUP:{serverOnly:[z.reactServerComponents,z.actionBrowser,z.appMetadataRoute,z.appRouteHandler,z.instrument],clientOnly:[z.serverSideRendering,z.appPagesBrowser],nonClientServerTarget:[z.middleware,z.api],app:[z.reactServerComponents,z.actionBrowser,z.appMetadataRoute,z.appRouteHandler,z.serverSideRendering,z.appPagesBrowser,z.shared,z.instrument]}},Y={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},1354:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{bgBlack:function(){return T},bgBlue:function(){return N},bgCyan:function(){return A},bgGreen:function(){return x},bgMagenta:function(){return C},bgRed:function(){return j},bgWhite:function(){return w},bgYellow:function(){return M},black:function(){return _},blue:function(){return m},bold:function(){return s},cyan:function(){return S},dim:function(){return c},gray:function(){return E},green:function(){return v},hidden:function(){return g},inverse:function(){return p},italic:function(){return d},magenta:function(){return P},purple:function(){return R},red:function(){return y},reset:function(){return u},strikethrough:function(){return h},underline:function(){return f},white:function(){return O},yellow:function(){return b}});let{env:n,stdout:o}=(null==(r=globalThis)?void 0:r.process)??{},a=n&&!n.NO_COLOR&&(n.FORCE_COLOR||(null==o?void 0:o.isTTY)&&!n.CI&&"dumb"!==n.TERM),l=(e,t,r,n)=>{let o=e.substring(0,n)+r,a=e.substring(n+t.length),i=a.indexOf(t);return~i?o+l(a,t,r,i):o+a},i=(e,t,r=e)=>a?n=>{let o=""+n,a=o.indexOf(t,e.length);return~a?e+l(o,t,r,a)+t:e+o+t}:String,u=a?e=>`\x1b[0m${e}\x1b[0m`:String,s=i("\x1b[1m","\x1b[22m","\x1b[22m\x1b[1m"),c=i("\x1b[2m","\x1b[22m","\x1b[22m\x1b[2m"),d=i("\x1b[3m","\x1b[23m"),f=i("\x1b[4m","\x1b[24m"),p=i("\x1b[7m","\x1b[27m"),g=i("\x1b[8m","\x1b[28m"),h=i("\x1b[9m","\x1b[29m"),_=i("\x1b[30m","\x1b[39m"),y=i("\x1b[31m","\x1b[39m"),v=i("\x1b[32m","\x1b[39m"),b=i("\x1b[33m","\x1b[39m"),m=i("\x1b[34m","\x1b[39m"),P=i("\x1b[35m","\x1b[39m"),R=i("\x1b[38;2;173;127;168m","\x1b[39m"),S=i("\x1b[36m","\x1b[39m"),O=i("\x1b[37m","\x1b[39m"),E=i("\x1b[90m","\x1b[39m"),T=i("\x1b[40m","\x1b[49m"),j=i("\x1b[41m","\x1b[49m"),x=i("\x1b[42m","\x1b[49m"),M=i("\x1b[43m","\x1b[49m"),N=i("\x1b[44m","\x1b[49m"),C=i("\x1b[45m","\x1b[49m"),A=i("\x1b[46m","\x1b[49m"),w=i("\x1b[47m","\x1b[49m")},8834:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getPathname:function(){return n},isFullStringUrl:function(){return o},parseUrl:function(){return a}});let r="http://n";function n(e){return new URL(e,r).pathname}function o(e){return/https?:\/\//.test(e)}function a(e){let t;try{t=new URL(e,r)}catch{}return t}},6278:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Postpone:function(){return d},createPostponedAbortSignal:function(){return y},createPrerenderState:function(){return u},formatDynamicAPIAccesses:function(){return h},markCurrentScopeAsDynamic:function(){return s},trackDynamicDataAccessed:function(){return c},trackDynamicFetch:function(){return f},usedDynamicAPIs:function(){return g}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(1159)),o=r(4789),a=r(4618),l=r(8834),i="function"==typeof n.default.unstable_postpone;function u(e){return{isDebugSkeleton:e,dynamicAccesses:[]}}function s(e,t){let r=(0,l.getPathname)(e.urlPathname);if(!e.isUnstableCacheCallback){if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used ${t}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}}function c(e,t){let r=(0,l.getPathname)(e.urlPathname);if(e.isUnstableCacheCallback)throw Error(`Route ${r} used "${t}" inside a function cached with "unstable_cache(...)". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use "${t}" outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`);if(e.dynamicShouldError)throw new a.StaticGenBailoutError(`Route ${r} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`);if(e.prerenderState)p(e.prerenderState,t,r);else if(e.revalidate=0,e.isStaticGeneration){let n=new o.DynamicServerError(`Route ${r} couldn't be rendered statically because it used \`${t}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`);throw e.dynamicUsageDescription=t,e.dynamicUsageStack=n.stack,n}}function d({reason:e,prerenderState:t,pathname:r}){p(t,e,r)}function f(e,t){e.prerenderState&&p(e.prerenderState,t,e.urlPathname)}function p(e,t,r){_();let o=`Route ${r} needs to bail out of prerendering at this point because it used ${t}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`;e.dynamicAccesses.push({stack:e.isDebugSkeleton?Error().stack:void 0,expression:t}),n.default.unstable_postpone(o)}function g(e){return e.dynamicAccesses.length>0}function h(e){return e.dynamicAccesses.filter(e=>"string"==typeof e.stack&&e.stack.length>0).map(({expression:e,stack:t})=>(t=t.split("\n").slice(4).filter(e=>!(e.includes("node_modules/next/")||e.includes(" ()")||e.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${e}: +${t}`))}function _(){if(!i)throw Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js")}function y(e){_();let t=new AbortController;try{n.default.unstable_postpone(e)}catch(e){t.abort(e)}return t.signal}},5231:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRouter:function(){return o.default},ClientPageRoot:function(){return c.ClientPageRoot},LayoutRouter:function(){return a.default},NotFoundBoundary:function(){return p.NotFoundBoundary},Postpone:function(){return _.Postpone},RenderFromTemplateContext:function(){return l.default},actionAsyncStorage:function(){return s.actionAsyncStorage},createDynamicallyTrackedSearchParams:function(){return d.createDynamicallyTrackedSearchParams},createUntrackedSearchParams:function(){return d.createUntrackedSearchParams},decodeAction:function(){return n.decodeAction},decodeFormState:function(){return n.decodeFormState},decodeReply:function(){return n.decodeReply},patchFetch:function(){return m},preconnect:function(){return h.preconnect},preloadFont:function(){return h.preloadFont},preloadStyle:function(){return h.preloadStyle},renderToReadableStream:function(){return n.renderToReadableStream},requestAsyncStorage:function(){return u.requestAsyncStorage},serverHooks:function(){return f},staticGenerationAsyncStorage:function(){return i.staticGenerationAsyncStorage},taintObjectReference:function(){return y.taintObjectReference}});let n=r(1749),o=v(r(9943)),a=v(r(5106)),l=v(r(4892)),i=r(5869),u=r(4580),s=r(2934),c=r(3144),d=r(9181),f=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=b(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(n,a,l):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}(r(4789)),p=r(525),g=r(670);r(7922);let h=r(135),_=r(9257),y=r(526);function v(e){return e&&e.__esModule?e:{default:e}}function b(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(b=function(e){return e?r:t})(e)}function m(){return(0,g.patchFetch)({serverHooks:f,staticGenerationAsyncStorage:i.staticGenerationAsyncStorage})}},9257:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Postpone",{enumerable:!0,get:function(){return n.Postpone}});let n=r(6278)},135:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{preconnect:function(){return l},preloadFont:function(){return a},preloadStyle:function(){return o}});let n=function(e){return e&&e.__esModule?e:{default:e}}(r(7049));function o(e,t){let r={as:"style"};"string"==typeof t&&(r.crossOrigin=t),n.default.preload(e,r)}function a(e,t,r){let o={as:"font",type:t};"string"==typeof r&&(o.crossOrigin=r),n.default.preload(e,o)}function l(e,t){n.default.preconnect(e,"string"==typeof t?{crossOrigin:t}:void 0)}},526:(e,t,r)=>{"use strict";function n(){throw Error("Taint can only be used with the taint flag.")}Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{taintObjectReference:function(){return o},taintUniqueValue:function(){return a}}),r(1159);let o=n,a=n},8716:(e,t)=>{"use strict";var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},3191:(e,t,r)=>{"use strict";e.exports=r(399)},7049:(e,t,r)=>{"use strict";e.exports=r(3191).vendored["react-rsc"].ReactDOM},9510:(e,t,r)=>{"use strict";e.exports=r(3191).vendored["react-rsc"].ReactJsxRuntime},1749:(e,t,r)=>{"use strict";e.exports=r(3191).vendored["react-rsc"].ReactServerDOMWebpackServerEdge},1159:(e,t,r)=>{"use strict";e.exports=r(3191).vendored["react-rsc"].React},4300:(e,t)=>{"use strict";function r(e){if(!e.body)return[e,e];let[t,r]=e.body.tee(),n=new Response(t,{status:e.status,statusText:e.statusText,headers:e.headers});Object.defineProperty(n,"url",{value:e.url});let o=new Response(r,{status:e.status,statusText:e.statusText,headers:e.headers});return Object.defineProperty(o,"url",{value:e.url}),[n,o]}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"cloneResponse",{enumerable:!0,get:function(){return r}})},9585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createDedupeFetch",{enumerable:!0,get:function(){return l}});let n=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=a(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var i=o?Object.getOwnPropertyDescriptor(e,l):null;i&&(i.get||i.set)?Object.defineProperty(n,l,i):n[l]=e[l]}return n.default=e,r&&r.set(e,n),n}(r(1159)),o=r(4300);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(a=function(e){return e?r:t})(e)}function l(e){let t=n.cache(e=>[]);return function(r,n){let a,l;if(n&&n.signal)return e(r,n);if("string"!=typeof r||n){let t="string"==typeof r||r instanceof URL?new Request(r,n):r;if("GET"!==t.method&&"HEAD"!==t.method||t.keepalive)return e(r,n);l=JSON.stringify([t.method,Array.from(t.headers.entries()),t.mode,t.redirect,t.credentials,t.referrer,t.referrerPolicy,t.integrity]),a=t.url}else l='["GET",[],null,"follow",null,null,null,null]',a=r;let i=t(a);for(let e=0,t=i.length;e{let t=i[e][2];if(!t)throw Error("No cached response");let[r,n]=(0,o.cloneResponse)(t);return i[e][2]=n,r})}let u=new AbortController,s=e(r,{...n,signal:u.signal}),c=[l,s,null];return i.push(c),s.then(e=>{let[t,r]=(0,o.cloneResponse)(e);return c[2]=r,t})}}},670:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addImplicitTags:function(){return g},patchFetch:function(){return _},validateRevalidate:function(){return d},validateTags:function(){return f}});let n=r(1376),o=r(4994),a=r(1943),l=function(e,t){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=c(void 0);if(r&&r.has(e))return r.get(e);var n={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var l=o?Object.getOwnPropertyDescriptor(e,a):null;l&&(l.get||l.set)?Object.defineProperty(n,a,l):n[a]=e[a]}return n.default=e,r&&r.set(e,n),n}(r(8839)),i=r(6278),u=r(9585),s=r(4300);function c(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(c=function(e){return e?r:t})(e)}function d(e,t){try{let r;if(!1===e)r=e;else if("number"==typeof e&&!isNaN(e)&&e>-1)r=e;else if(void 0!==e)throw Error(`Invalid revalidate value "${e}" on "${t}", must be a non-negative number or "false"`);return r}catch(e){if(e instanceof Error&&e.message.includes("Invalid revalidate"))throw e;return}}function f(e,t){let r=[],n=[];for(let o=0;oa.NEXT_CACHE_TAG_MAX_LENGTH?n.push({tag:l,reason:`exceeded max length of ${a.NEXT_CACHE_TAG_MAX_LENGTH}`}):r.push(l),r.length>a.NEXT_CACHE_TAG_MAX_ITEMS){console.warn(`Warning: exceeded max tag count for ${t}, dropped tags:`,e.slice(o).join(", "));break}}if(n.length>0)for(let{tag:e,reason:r}of(console.warn(`Warning: invalid tags passed to ${t}: `),n))console.log(`tag: "${e}" ${r}`);return r}let p=e=>{let t=["/layout"];if(e.startsWith("/")){let r=e.split("/");for(let e=1;e{var p,_;let y;try{(y=new URL(u instanceof Request?u.url:u)).username="",y.password=""}catch{y=void 0}let v=(null==y?void 0:y.href)??"",b=Date.now(),m=(null==c?void 0:null==(p=c.method)?void 0:p.toUpperCase())||"GET",P=(null==c?void 0:null==(_=c.next)?void 0:_.internal)===!0,R="1"===process.env.NEXT_OTEL_FETCH_DISABLED;return(0,o.getTracer)().trace(P?n.NextNodeServerSpan.internalFetch:n.AppRenderSpan.fetch,{hideSpan:R,kind:o.SpanKind.CLIENT,spanName:["fetch",m,v].filter(Boolean).join(" "),attributes:{"http.url":v,"http.method":m,"net.peer.name":null==y?void 0:y.hostname,"net.peer.port":(null==y?void 0:y.port)||void 0}},async()=>{var n;let o,p,_;if(P)return e(u,c);let y=r.getStore();if(!y||y.isDraftMode)return e(u,c);let m=u&&"object"==typeof u&&"string"==typeof u.method,R=e=>(null==c?void 0:c[e])||(m?u[e]:null),S=e=>{var t,r,n;return void 0!==(null==c?void 0:null==(t=c.next)?void 0:t[e])?null==c?void 0:null==(r=c.next)?void 0:r[e]:m?null==(n=u.next)?void 0:n[e]:void 0},O=S("revalidate"),E=f(S("tags")||[],`fetch ${u.toString()}`);if(Array.isArray(E))for(let e of(y.tags||(y.tags=[]),E))y.tags.includes(e)||y.tags.push(e);let T=g(y),j=y.fetchCache,x=!!y.isUnstableNoStore,M=R("cache"),N="";"string"==typeof M&&void 0!==O&&(m&&"default"===M||l.warn(`fetch for ${v} on ${y.urlPathname} specified "cache: ${M}" and "revalidate: ${O}", only one should be specified.`),M=void 0),"force-cache"===M?O=!1:("no-cache"===M||"no-store"===M||"force-no-store"===j||"only-no-store"===j)&&(O=0),("no-cache"===M||"no-store"===M)&&(N=`cache: ${M}`),_=d(O,y.urlPathname);let C=R("headers"),A="function"==typeof(null==C?void 0:C.get)?C:new Headers(C||{}),w=A.get("authorization")||A.get("cookie"),I=!["get","head"].includes((null==(n=R("method"))?void 0:n.toLowerCase())||"get"),D=(w||I)&&0===y.revalidate;switch(j){case"force-no-store":N="fetchCache = force-no-store";break;case"only-no-store":if("force-cache"===M||void 0!==_&&(!1===_||_>0))throw Error(`cache: 'force-cache' used on fetch for ${v} with 'export const fetchCache = 'only-no-store'`);N="fetchCache = only-no-store";break;case"only-cache":if("no-store"===M)throw Error(`cache: 'no-store' used on fetch for ${v} with 'export const fetchCache = 'only-cache'`);break;case"force-cache":(void 0===O||0===O)&&(N="fetchCache = force-cache",_=!1)}void 0===_?"default-cache"===j?(_=!1,N="fetchCache = default-cache"):D?(_=0,N="auto no cache"):"default-no-store"===j?(_=0,N="fetchCache = default-no-store"):x?(_=0,N="noStore call"):(N="auto cache",_="boolean"!=typeof y.revalidate&&void 0!==y.revalidate&&y.revalidate):N||(N=`revalidate: ${_}`),y.forceStatic&&0===_||D||void 0!==y.revalidate&&("number"!=typeof _||!1!==y.revalidate&&("number"!=typeof y.revalidate||!(_0||!1===_;if(y.incrementalCache&&L)try{o=await y.incrementalCache.fetchCacheKey(v,m?u:c)}catch(e){console.error("Failed to generate cache key for",u)}let U=y.nextFetchId??1;y.nextFetchId=U+1;let F="number"!=typeof _?a.CACHE_ONE_YEAR:_,H=async(t,r)=>{let n=["cache","credentials","headers","integrity","keepalive","method","mode","redirect","referrer","referrerPolicy","window","duplex",...t?[]:["signal"]];if(m){let e=u,t={body:e._ogBody||e.body};for(let r of n)t[r]=e[r];u=new Request(e.url,t)}else if(c){let{_ogBody:e,body:r,signal:n,...o}=c;c={...o,body:e||r,signal:t?void 0:n}}let a={...c,next:{...null==c?void 0:c.next,fetchType:"origin",fetchIdx:U}};return e(u,a).then(async e=>{if(t||h(y,{start:b,url:v,cacheReason:r||N,cacheStatus:0===_||r?"skip":"miss",status:e.status,method:a.method||"GET"}),200===e.status&&y.incrementalCache&&o&&L){let t=Buffer.from(await e.arrayBuffer());try{await y.incrementalCache.set(o,{kind:"FETCH",data:{headers:Object.fromEntries(e.headers.entries()),body:t.toString("base64"),status:e.status,url:e.url},revalidate:F},{fetchCache:!0,revalidate:_,fetchUrl:v,fetchIdx:U,tags:E})}catch(e){console.warn("Failed to set fetch cache",u,e)}let r=new Response(t,{headers:new Headers(e.headers),status:e.status});return Object.defineProperty(r,"url",{value:e.url}),r}return e})},G=()=>Promise.resolve(),k=!1;if(o&&y.incrementalCache){G=await y.incrementalCache.lock(o);let e=y.isOnDemandRevalidate?null:await y.incrementalCache.get(o,{kindHint:"fetch",revalidate:_,fetchUrl:v,fetchIdx:U,tags:E,softTags:T});if(e?await G():p="cache-control: no-cache (hard refresh)",(null==e?void 0:e.value)&&"FETCH"===e.value.kind){if(y.isRevalidate&&e.isStale)k=!0;else{if(e.isStale&&(y.pendingRevalidates??={},!y.pendingRevalidates[o])){let e=H(!0).then(async e=>({body:await e.arrayBuffer(),headers:e.headers,status:e.status,statusText:e.statusText})).finally(()=>{y.pendingRevalidates??={},delete y.pendingRevalidates[o||""]});e.catch(console.error),y.pendingRevalidates[o]=e}let t=e.value.data;h(y,{start:b,url:v,cacheReason:N,cacheStatus:"hit",status:t.status||200,method:(null==c?void 0:c.method)||"GET"});let r=new Response(Buffer.from(t.body,"base64"),{headers:t.headers,status:t.status});return Object.defineProperty(r,"url",{value:e.value.data.url}),r}}}if(y.isStaticGeneration&&c&&"object"==typeof c){let{cache:e}=c;if(!y.forceStatic&&"no-store"===e){let e=`no-store fetch ${u}${y.urlPathname?` ${y.urlPathname}`:""}`;(0,i.trackDynamicFetch)(y,e),y.revalidate=0;let r=new t(e);throw y.dynamicUsageErr=r,y.dynamicUsageDescription=e,r}let r="next"in c,{next:n={}}=c;if("number"==typeof n.revalidate&&(void 0===y.revalidate||"number"==typeof y.revalidate&&n.revalidate{let t=e[0];return{body:await t.arrayBuffer(),headers:t.headers,status:t.status,statusText:t.statusText}}).finally(()=>{if(o){var e;(null==(e=y.pendingRevalidates)?void 0:e[o])&&delete y.pendingRevalidates[o]}})).catch(()=>{}),y.pendingRevalidates[o]=e,t.then(e=>e[1])}})};return u.__nextPatched=!0,u.__nextGetStaticStore=()=>r,u._nextOriginalFetch=e,u}(r,e)}},1376:(e,t)=>{"use strict";var r,n,o,a,l,i,u,s,c,d,f,p;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRenderSpan:function(){return u},AppRouteRouteHandlersSpan:function(){return d},BaseServerSpan:function(){return r},LoadComponentsSpan:function(){return n},LogSpanAllowList:function(){return h},MiddlewareSpan:function(){return p},NextNodeServerSpan:function(){return a},NextServerSpan:function(){return o},NextVanillaSpanAllowlist:function(){return g},NodeSpan:function(){return c},RenderSpan:function(){return i},ResolveMetadataSpan:function(){return f},RouterSpan:function(){return s},StartServerSpan:function(){return l}}),function(e){e.handleRequest="BaseServer.handleRequest",e.run="BaseServer.run",e.pipe="BaseServer.pipe",e.getStaticHTML="BaseServer.getStaticHTML",e.render="BaseServer.render",e.renderToResponseWithComponents="BaseServer.renderToResponseWithComponents",e.renderToResponse="BaseServer.renderToResponse",e.renderToHTML="BaseServer.renderToHTML",e.renderError="BaseServer.renderError",e.renderErrorToResponse="BaseServer.renderErrorToResponse",e.renderErrorToHTML="BaseServer.renderErrorToHTML",e.render404="BaseServer.render404"}(r||(r={})),function(e){e.loadDefaultErrorComponents="LoadComponents.loadDefaultErrorComponents",e.loadComponents="LoadComponents.loadComponents"}(n||(n={})),function(e){e.getRequestHandler="NextServer.getRequestHandler",e.getServer="NextServer.getServer",e.getServerRequestHandler="NextServer.getServerRequestHandler",e.createServer="createServer.createServer"}(o||(o={})),function(e){e.compression="NextNodeServer.compression",e.getBuildId="NextNodeServer.getBuildId",e.createComponentTree="NextNodeServer.createComponentTree",e.clientComponentLoading="NextNodeServer.clientComponentLoading",e.getLayoutOrPageModule="NextNodeServer.getLayoutOrPageModule",e.generateStaticRoutes="NextNodeServer.generateStaticRoutes",e.generateFsStaticRoutes="NextNodeServer.generateFsStaticRoutes",e.generatePublicRoutes="NextNodeServer.generatePublicRoutes",e.generateImageRoutes="NextNodeServer.generateImageRoutes.route",e.sendRenderResult="NextNodeServer.sendRenderResult",e.proxyRequest="NextNodeServer.proxyRequest",e.runApi="NextNodeServer.runApi",e.render="NextNodeServer.render",e.renderHTML="NextNodeServer.renderHTML",e.imageOptimizer="NextNodeServer.imageOptimizer",e.getPagePath="NextNodeServer.getPagePath",e.getRoutesManifest="NextNodeServer.getRoutesManifest",e.findPageComponents="NextNodeServer.findPageComponents",e.getFontManifest="NextNodeServer.getFontManifest",e.getServerComponentManifest="NextNodeServer.getServerComponentManifest",e.getRequestHandler="NextNodeServer.getRequestHandler",e.renderToHTML="NextNodeServer.renderToHTML",e.renderError="NextNodeServer.renderError",e.renderErrorToHTML="NextNodeServer.renderErrorToHTML",e.render404="NextNodeServer.render404",e.startResponse="NextNodeServer.startResponse",e.route="route",e.onProxyReq="onProxyReq",e.apiResolver="apiResolver",e.internalFetch="internalFetch"}(a||(a={})),(l||(l={})).startServer="startServer.startServer",function(e){e.getServerSideProps="Render.getServerSideProps",e.getStaticProps="Render.getStaticProps",e.renderToString="Render.renderToString",e.renderDocument="Render.renderDocument",e.createBodyResult="Render.createBodyResult"}(i||(i={})),function(e){e.renderToString="AppRender.renderToString",e.renderToReadableStream="AppRender.renderToReadableStream",e.getBodyResult="AppRender.getBodyResult",e.fetch="AppRender.fetch"}(u||(u={})),(s||(s={})).executeRoute="Router.executeRoute",(c||(c={})).runHandler="Node.runHandler",(d||(d={})).runHandler="AppRouteRouteHandlers.runHandler",function(e){e.generateMetadata="ResolveMetadata.generateMetadata",e.generateViewport="ResolveMetadata.generateViewport"}(f||(f={})),(p||(p={})).execute="Middleware.execute";let g=["Middleware.execute","BaseServer.handleRequest","Render.getServerSideProps","Render.getStaticProps","AppRender.fetch","AppRender.getBodyResult","Render.renderDocument","Node.runHandler","AppRouteRouteHandlers.runHandler","ResolveMetadata.generateMetadata","ResolveMetadata.generateViewport","NextNodeServer.createComponentTree","NextNodeServer.findPageComponents","NextNodeServer.getLayoutOrPageModule","NextNodeServer.startResponse","NextNodeServer.clientComponentLoading"],h=["NextNodeServer.findPageComponents","NextNodeServer.createComponentTree","NextNodeServer.clientComponentLoading"]},4994:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{SpanKind:function(){return s},SpanStatusCode:function(){return u},getTracer:function(){return v}});let o=r(1376);try{n=r(7482)}catch(e){n=r(7482)}let{context:a,propagation:l,trace:i,SpanStatusCode:u,SpanKind:s,ROOT_CONTEXT:c}=n,d=e=>null!==e&&"object"==typeof e&&"function"==typeof e.then,f=(e,t)=>{(null==t?void 0:t.bubble)===!0?e.setAttribute("next.bubble",!0):(t&&e.recordException(t),e.setStatus({code:u.ERROR,message:null==t?void 0:t.message})),e.end()},p=new Map,g=n.createContextKey("next.rootSpanId"),h=0,_=()=>h++;class y{getTracerInstance(){return i.getTracer("next.js","0.0.1")}getContext(){return a}getActiveScopeSpan(){return i.getSpan(null==a?void 0:a.active())}withPropagatedContext(e,t,r){let n=a.active();if(i.getSpanContext(n))return t();let o=l.extract(n,e,r);return a.with(o,t)}trace(...e){var t;let[r,n,l]=e,{fn:u,options:s}="function"==typeof n?{fn:n,options:{}}:{fn:l,options:{...n}},h=s.spanName??r;if(!o.NextVanillaSpanAllowlist.includes(r)&&"1"!==process.env.NEXT_OTEL_VERBOSE||s.hideSpan)return u();let y=this.getSpanContext((null==s?void 0:s.parentSpan)??this.getActiveScopeSpan()),v=!1;y?(null==(t=i.getSpanContext(y))?void 0:t.isRemote)&&(v=!0):(y=(null==a?void 0:a.active())??c,v=!0);let b=_();return s.attributes={"next.span_name":h,"next.span_type":r,...s.attributes},a.with(y.setValue(g,b),()=>this.getTracerInstance().startActiveSpan(h,s,e=>{let t="performance"in globalThis?globalThis.performance.now():void 0,n=()=>{p.delete(b),t&&process.env.NEXT_OTEL_PERFORMANCE_PREFIX&&o.LogSpanAllowList.includes(r||"")&&performance.measure(`${process.env.NEXT_OTEL_PERFORMANCE_PREFIX}:next-${(r.split(".").pop()||"").replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}`,{start:t,end:performance.now()})};v&&p.set(b,new Map(Object.entries(s.attributes??{})));try{if(u.length>1)return u(e,t=>f(e,t));let t=u(e);if(d(t))return t.then(t=>(e.end(),t)).catch(t=>{throw f(e,t),t}).finally(n);return e.end(),n(),t}catch(t){throw f(e,t),n(),t}}))}wrap(...e){let t=this,[r,n,l]=3===e.length?e:[e[0],{},e[1]];return o.NextVanillaSpanAllowlist.includes(r)||"1"===process.env.NEXT_OTEL_VERBOSE?function(){let e=n;"function"==typeof e&&"function"==typeof l&&(e=e.apply(this,arguments));let o=arguments.length-1,i=arguments[o];if("function"!=typeof i)return t.trace(r,e,()=>l.apply(this,arguments));{let n=t.getContext().bind(a.active(),i);return t.trace(r,e,(e,t)=>(arguments[o]=function(e){return null==t||t(e),n.apply(this,arguments)},l.apply(this,arguments)))}}:l}startSpan(...e){let[t,r]=e,n=this.getSpanContext((null==r?void 0:r.parentSpan)??this.getActiveScopeSpan());return this.getTracerInstance().startSpan(t,r,n)}getSpanContext(e){return e?i.setSpan(a.active(),e):void 0}getRootSpanAttributes(){let e=a.active().getValue(g);return p.get(e)}}let v=(()=>{let e=new y;return()=>e})()},8238:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ReflectAdapter",{enumerable:!0,get:function(){return r}});class r{static get(e,t,r){let n=Reflect.get(e,t,r);return"function"==typeof n?n.bind(e):n}static set(e,t,r,n){return Reflect.set(e,t,r,n)}static has(e,t){return Reflect.has(e,t)}static deleteProperty(e,t){return Reflect.deleteProperty(e,t)}}},8285:(e,t,r)=>{"use strict";function n(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}r.r(t),r.d(t,{_:()=>n,_class_private_field_loose_base:()=>n})},8817:(e,t,r)=>{"use strict";r.r(t),r.d(t,{_:()=>o,_class_private_field_loose_key:()=>o});var n=0;function o(e){return"__private_"+n+++"_"+e}},1174:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n,_interop_require_default:()=>n})},8374:(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var i=a?Object.getOwnPropertyDescriptor(e,l):null;i&&(i.get||i.set)?Object.defineProperty(o,l,i):o[l]=e[l]}return o.default=e,r&&r.set(e,o),o}r.r(t),r.d(t,{_:()=>o,_interop_require_wildcard:()=>o})},3370:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n,_interop_require_default:()=>n})}}; \ No newline at end of file diff --git a/site/.next/standalone/.next/server/font-manifest.json b/site/.next/standalone/.next/server/font-manifest.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/site/.next/standalone/.next/server/font-manifest.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/site/.next/standalone/.next/server/middleware-build-manifest.js b/site/.next/standalone/.next/server/middleware-build-manifest.js new file mode 100644 index 0000000..80fd18a --- /dev/null +++ b/site/.next/standalone/.next/server/middleware-build-manifest.js @@ -0,0 +1 @@ +self.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],ampDevFiles:[],lowPriorityFiles:[],rootMainFiles:["static/chunks/webpack-c81f7fd28659d64f.js","static/chunks/fd9d1056-1aae0987937804d3.js","static/chunks/117-9e579d196b4a8b27.js","static/chunks/main-app-a2993c9a226c8885.js"],pages:{"/_app":["static/chunks/webpack-c81f7fd28659d64f.js","static/chunks/framework-f66176bb897dc684.js","static/chunks/main-4542ef43ae2cfc86.js","static/chunks/pages/_app-72b849fbd24ac258.js"],"/_error":["static/chunks/webpack-c81f7fd28659d64f.js","static/chunks/framework-f66176bb897dc684.js","static/chunks/main-4542ef43ae2cfc86.js","static/chunks/pages/_error-7ba65e1336b92748.js"]},ampFirstPages:[]},self.__BUILD_MANIFEST.lowPriorityFiles=["/static/"+process.env.__NEXT_BUILD_ID+"/_buildManifest.js",,"/static/"+process.env.__NEXT_BUILD_ID+"/_ssgManifest.js"]; \ No newline at end of file diff --git a/site/.next/standalone/.next/server/middleware-manifest.json b/site/.next/standalone/.next/server/middleware-manifest.json new file mode 100644 index 0000000..33872a3 --- /dev/null +++ b/site/.next/standalone/.next/server/middleware-manifest.json @@ -0,0 +1,6 @@ +{ + "version": 3, + "middleware": {}, + "functions": {}, + "sortedMiddleware": [] +} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/middleware-react-loadable-manifest.js b/site/.next/standalone/.next/server/middleware-react-loadable-manifest.js new file mode 100644 index 0000000..170749e --- /dev/null +++ b/site/.next/standalone/.next/server/middleware-react-loadable-manifest.js @@ -0,0 +1 @@ +self.__REACT_LOADABLE_MANIFEST="{}"; \ No newline at end of file diff --git a/site/.next/standalone/.next/server/next-font-manifest.js b/site/.next/standalone/.next/server/next-font-manifest.js new file mode 100644 index 0000000..8267a50 --- /dev/null +++ b/site/.next/standalone/.next/server/next-font-manifest.js @@ -0,0 +1 @@ +self.__NEXT_FONT_MANIFEST='{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false}'; \ No newline at end of file diff --git a/site/.next/standalone/.next/server/next-font-manifest.json b/site/.next/standalone/.next/server/next-font-manifest.json new file mode 100644 index 0000000..25f78e7 --- /dev/null +++ b/site/.next/standalone/.next/server/next-font-manifest.json @@ -0,0 +1 @@ +{"pages":{},"app":{},"appUsingSizeAdjust":false,"pagesUsingSizeAdjust":false} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/pages-manifest.json b/site/.next/standalone/.next/server/pages-manifest.json new file mode 100644 index 0000000..f7c2e89 --- /dev/null +++ b/site/.next/standalone/.next/server/pages-manifest.json @@ -0,0 +1 @@ +{"/_app":"pages/_app.js","/_error":"pages/_error.js","/_document":"pages/_document.js","/404":"pages/404.html"} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/pages/404.html b/site/.next/standalone/.next/server/pages/404.html new file mode 100644 index 0000000..b9d3e96 --- /dev/null +++ b/site/.next/standalone/.next/server/pages/404.html @@ -0,0 +1 @@ +404: This page could not be found.Uno Click

404

This page could not be found.

\ No newline at end of file diff --git a/site/.next/standalone/.next/server/pages/500.html b/site/.next/standalone/.next/server/pages/500.html new file mode 100644 index 0000000..b31eae2 --- /dev/null +++ b/site/.next/standalone/.next/server/pages/500.html @@ -0,0 +1 @@ +500: Internal Server Error

500

Internal Server Error.

\ No newline at end of file diff --git a/site/.next/standalone/.next/server/pages/_app.js b/site/.next/standalone/.next/server/pages/_app.js new file mode 100644 index 0000000..df07b84 --- /dev/null +++ b/site/.next/standalone/.next/server/pages/_app.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=888,e.ids=[888],e.modules={8141:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(167),o=r(997),i=n._(r(6689)),u=r(5782);async function s(e){let{Component:t,ctx:r}=e;return{pageProps:await (0,u.loadGetInitialProps)(t,r)}}class a extends i.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,o.jsx)(e,{...t})}}a.origGetInitialProps=s,a.getInitialProps=s,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5782:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return g},MiddlewareNotFoundError:function(){return E},MissingStaticPage:function(){return y},NormalizeError:function(){return m},PageNotFoundError:function(){return P},SP:function(){return d},ST:function(){return p},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return a},getLocationOrigin:function(){return u},getURL:function(){return s},isAbsoluteUrl:function(){return i},isResSent:function(){return c},loadGetInitialProps:function(){return f},normalizeRepeatedSlashes:function(){return l},stringifyError:function(){return x}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),i=0;io.test(e);function u(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function s(){let{href:e}=window.location,t=u();return e.substring(t.length)}function a(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function c(e){return e.finished||e.headersSent}function l(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function f(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await f(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&c(r))return n;if(!n)throw Error('"'+a(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.');return n}let d="undefined"!=typeof performance,p=d&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class g extends Error{}class m extends Error{}class P extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class y extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class E extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function x(e){return JSON.stringify({message:e.message,stack:e.stack})}},6689:e=>{e.exports=require("react")},997:e=>{e.exports=require("react/jsx-runtime")},167:(e,t)=>{t._=t._interop_require_default=function(e){return e&&e.__esModule?e:{default:e}}}};var t=require("../webpack-runtime.js");t.C(e);var r=t(t.s=8141);module.exports=r})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/server/pages/_app.js.nft.json b/site/.next/standalone/.next/server/pages/_app.js.nft.json new file mode 100644 index 0000000..f4a2132 --- /dev/null +++ b/site/.next/standalone/.next/server/pages/_app.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../node_modules/next/dist/pages/_app.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../package.json","../../package.json","../webpack-runtime.js"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/pages/_document.js b/site/.next/standalone/.next/server/pages/_document.js new file mode 100644 index 0000000..445c33f --- /dev/null +++ b/site/.next/standalone/.next/server/pages/_document.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=660,e.ids=[660],e.modules={2785:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},6689:e=>{e.exports=require("react")},997:e=>{e.exports=require("react/jsx-runtime")},5315:e=>{e.exports=require("path")}};var r=require("../webpack-runtime.js");r.C(e);var s=e=>r(r.s=e),t=r.X(0,[682],()=>s(1682));module.exports=t})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/server/pages/_document.js.nft.json b/site/.next/standalone/.next/server/pages/_document.js.nft.json new file mode 100644 index 0000000..0f53100 --- /dev/null +++ b/site/.next/standalone/.next/server/pages/_document.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/compiled/node-html-parser/index.js","../../../node_modules/next/dist/compiled/node-html-parser/package.json","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/pages/_document.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../../package.json","../../package.json","../chunks/682.js","../webpack-runtime.js"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/pages/_error.js b/site/.next/standalone/.next/server/pages/_error.js new file mode 100644 index 0000000..b39a7a6 --- /dev/null +++ b/site/.next/standalone/.next/server/pages/_error.js @@ -0,0 +1 @@ +"use strict";(()=>{var e={};e.id=820,e.ids=[820,660],e.modules={1323:(e,t)=>{Object.defineProperty(t,"l",{enumerable:!0,get:function(){return function e(t,r){return r in t?t[r]:"then"in t&&"function"==typeof t.then?t.then(t=>e(t,r)):"function"==typeof t&&"default"===r?t:void 0}}})},6051:(e,t,r)=>{r.r(t),r.d(t,{config:()=>h,default:()=>p,getServerSideProps:()=>g,getStaticPaths:()=>f,getStaticProps:()=>c,reportWebVitals:()=>y,routeModule:()=>v,unstable_getServerProps:()=>P,unstable_getServerSideProps:()=>x,unstable_getStaticParams:()=>_,unstable_getStaticPaths:()=>m,unstable_getStaticProps:()=>b});var n=r(7093),o=r(5244),l=r(1323),a=r(1682),i=r.n(a),u=r(8141),d=r.n(u),s=r(8529);let p=(0,l.l)(s,"default"),c=(0,l.l)(s,"getStaticProps"),f=(0,l.l)(s,"getStaticPaths"),g=(0,l.l)(s,"getServerSideProps"),h=(0,l.l)(s,"config"),y=(0,l.l)(s,"reportWebVitals"),b=(0,l.l)(s,"unstable_getStaticProps"),m=(0,l.l)(s,"unstable_getStaticPaths"),_=(0,l.l)(s,"unstable_getStaticParams"),P=(0,l.l)(s,"unstable_getServerProps"),x=(0,l.l)(s,"unstable_getServerSideProps"),v=new n.PagesRouteModule({definition:{kind:o.x.PAGES,page:"/_error",pathname:"/_error",bundlePath:"",filename:""},components:{App:d(),Document:i()},userland:s})},8141:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let n=r(167),o=r(997),l=n._(r(6689)),a=r(5782);async function i(e){let{Component:t,ctx:r}=e;return{pageProps:await (0,a.loadGetInitialProps)(t,r)}}class u extends l.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,o.jsx)(e,{...t})}}u.origGetInitialProps=i,u.getInitialProps=i,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8529:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let n=r(167),o=r(997),l=n._(r(6689)),a=n._(r(494)),i={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function u(e){let{res:t,err:r}=e;return{statusCode:t&&t.statusCode?t.statusCode:r?r.statusCode:404}}let d={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{lineHeight:"48px"},h1:{display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h2:{fontSize:14,fontWeight:400,lineHeight:"28px"},wrap:{display:"inline-block"}};class s extends l.default.Component{render(){let{statusCode:e,withDarkMode:t=!0}=this.props,r=this.props.title||i[e]||"An unexpected error has occurred";return(0,o.jsxs)("div",{style:d.error,children:[(0,o.jsx)(a.default,{children:(0,o.jsx)("title",{children:e?e+": "+r:"Application error: a client-side exception has occurred"})}),(0,o.jsxs)("div",{style:d.desc,children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}"+(t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":"")}}),e?(0,o.jsx)("h1",{className:"next-error-h1",style:d.h1,children:e}):null,(0,o.jsx)("div",{style:d.wrap,children:(0,o.jsxs)("h2",{style:d.h2,children:[this.props.title||e?r:(0,o.jsx)(o.Fragment,{children:"Application error: a client-side exception has occurred (see the browser console for more information)"}),"."]})})]})]})}}s.displayName="ErrorPage",s.getInitialProps=u,s.origGetInitialProps=u,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8579:(e,t)=>{function r(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return r}})},494:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return h},defaultHead:function(){return p}});let n=r(167),o=r(8760),l=r(997),a=o._(r(6689)),i=n._(r(3657)),u=r(8039),d=r(1988),s=r(8579);function p(e){void 0===e&&(e=!1);let t=[(0,l.jsx)("meta",{charSet:"utf-8"})];return e||t.push((0,l.jsx)("meta",{name:"viewport",content:"width=device-width"})),t}function c(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===a.default.Fragment?e.concat(a.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}r(9784);let f=["name","httpEquiv","charSet","itemProp"];function g(e,t){let{inAmpMode:r}=t;return e.reduce(c,[]).reverse().concat(p(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return o=>{let l=!0,a=!1;if(o.key&&"number"!=typeof o.key&&o.key.indexOf("$")>0){a=!0;let t=o.key.slice(o.key.indexOf("$")+1);e.has(t)?l=!1:e.add(t)}switch(o.type){case"title":case"base":t.has(o.type)?l=!1:t.add(o.type);break;case"meta":for(let e=0,t=f.length;e{let n=e.key||t;if(!r&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,a.default.cloneElement(e,t)}return a.default.cloneElement(e,{key:n})})}let h=function(e){let{children:t}=e,r=(0,a.useContext)(u.AmpStateContext),n=(0,a.useContext)(d.HeadManagerContext);return(0,l.jsx)(i.default,{reduceComponentsToState:g,headManager:n,inAmpMode:(0,s.isInAmpMode)(r),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3657:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(6689),o=()=>{},l=()=>{};function a(e){var t;let{headManager:r,reduceComponentsToState:a}=e;function i(){if(r&&r.mountedInstances){let t=n.Children.toArray(Array.from(r.mountedInstances).filter(Boolean));r.updateHead(a(t,e))}}return null==r||null==(t=r.mountedInstances)||t.add(e.children),i(),o(()=>{var t;return null==r||null==(t=r.mountedInstances)||t.add(e.children),()=>{var t;null==r||null==(t=r.mountedInstances)||t.delete(e.children)}}),o(()=>(r&&(r._pendingUpdate=i),()=>{r&&(r._pendingUpdate=i)})),l(()=>(r&&r._pendingUpdate&&(r._pendingUpdate(),r._pendingUpdate=null),()=>{r&&r._pendingUpdate&&(r._pendingUpdate(),r._pendingUpdate=null)})),null}},9784:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},5244:(e,t)=>{var r;Object.defineProperty(t,"x",{enumerable:!0,get:function(){return r}}),function(e){e.PAGES="PAGES",e.PAGES_API="PAGES_API",e.APP_PAGE="APP_PAGE",e.APP_ROUTE="APP_ROUTE"}(r||(r={}))},8039:(e,t,r)=>{e.exports=r(7093).vendored.contexts.AmpContext},1988:(e,t,r)=>{e.exports=r(7093).vendored.contexts.HeadManagerContext},2785:e=>{e.exports=require("next/dist/compiled/next-server/pages.runtime.prod.js")},6689:e=>{e.exports=require("react")},997:e=>{e.exports=require("react/jsx-runtime")},5315:e=>{e.exports=require("path")},8760:(e,t)=>{function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}t._=t._interop_require_wildcard=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var o={__proto__:null},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=l?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(o,a,i):o[a]=e[a]}return o.default=e,n&&n.set(e,o),o}}};var t=require("../webpack-runtime.js");t.C(e);var r=e=>t(t.s=e),n=t.X(0,[682],()=>r(6051));module.exports=n})(); \ No newline at end of file diff --git a/site/.next/standalone/.next/server/pages/_error.js.nft.json b/site/.next/standalone/.next/server/pages/_error.js.nft.json new file mode 100644 index 0000000..abe34ef --- /dev/null +++ b/site/.next/standalone/.next/server/pages/_error.js.nft.json @@ -0,0 +1 @@ +{"version":1,"files":["../../../node_modules/client-only/index.js","../../../node_modules/client-only/package.json","../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../node_modules/next/dist/compiled/next-server/pages.runtime.prod.js","../../../node_modules/next/dist/compiled/node-html-parser/index.js","../../../node_modules/next/dist/compiled/node-html-parser/package.json","../../../node_modules/next/dist/lib/semver-noop.js","../../../node_modules/next/dist/server/lib/trace/constants.js","../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../node_modules/next/package.json","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.development.js","../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../node_modules/react-dom/package.json","../../../node_modules/react-dom/server.browser.js","../../../node_modules/react/cjs/react-jsx-runtime.development.js","../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/react/cjs/react.development.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/react/jsx-runtime.js","../../../node_modules/react/package.json","../../../node_modules/styled-jsx/dist/index/index.js","../../../node_modules/styled-jsx/index.js","../../../node_modules/styled-jsx/package.json","../../package.json","../chunks/682.js","../webpack-runtime.js"]} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/server-reference-manifest.js b/site/.next/standalone/.next/server/server-reference-manifest.js new file mode 100644 index 0000000..3ca5dc5 --- /dev/null +++ b/site/.next/standalone/.next/server/server-reference-manifest.js @@ -0,0 +1 @@ +self.__RSC_SERVER_MANIFEST="{\"node\":{},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}" \ No newline at end of file diff --git a/site/.next/standalone/.next/server/server-reference-manifest.json b/site/.next/standalone/.next/server/server-reference-manifest.json new file mode 100644 index 0000000..9e92cf6 --- /dev/null +++ b/site/.next/standalone/.next/server/server-reference-manifest.json @@ -0,0 +1 @@ +{"node":{},"edge":{},"encryptionKey":"nYMxoghgKItaY8mukH6QJp27Y0t4pzgGnx9TV7L48ys="} \ No newline at end of file diff --git a/site/.next/standalone/.next/server/webpack-runtime.js b/site/.next/standalone/.next/server/webpack-runtime.js new file mode 100644 index 0000000..fdf08bd --- /dev/null +++ b/site/.next/standalone/.next/server/webpack-runtime.js @@ -0,0 +1 @@ +(()=>{"use strict";var e={},r={};function t(o){var n=r[o];if(void 0!==n)return n.exports;var a=r[o]={exports:{}},u=!0;try{e[o](a,a.exports,t),u=!1}finally{u&&delete r[o]}return a.exports}t.m=e,t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},(()=>{var e,r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;t.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);t.r(a);var u={};e=e||[null,r({}),r([]),r(r)];for(var f=2&n&&o;"object"==typeof f&&!~e.indexOf(f);f=r(f))Object.getOwnPropertyNames(f).forEach(e=>u[e]=()=>o[e]);return u.default=()=>o,t.d(a,u),a}})(),t.d=(e,r)=>{for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})},t.f={},t.e=e=>Promise.all(Object.keys(t.f).reduce((r,o)=>(t.f[o](e,r),r),[])),t.u=e=>""+e+".js",t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.X=(e,r,o)=>{var n=r;o||(r=e,o=()=>t(t.s=n)),r.map(t.e,t);var a=o();return void 0===a?e:a},(()=>{var e={658:1},r=r=>{var o=r.modules,n=r.ids,a=r.runtime;for(var u in o)t.o(o,u)&&(t.m[u]=o[u]);a&&a(t);for(var f=0;f{e[o]||(658!=o?r(require("./chunks/"+t.u(o))):e[o]=1)},module.exports=t,t.C=r})()})(); \ No newline at end of file diff --git a/site/.next/standalone/node_modules/@next/env/package.json b/site/.next/standalone/node_modules/@next/env/package.json new file mode 100644 index 0000000..29090d0 --- /dev/null +++ b/site/.next/standalone/node_modules/@next/env/package.json @@ -0,0 +1,36 @@ +{ + "name": "@next/env", + "version": "14.2.35", + "keywords": [ + "react", + "next", + "next.js", + "dotenv" + ], + "description": "Next.js dotenv file loading", + "repository": { + "type": "git", + "url": "https://github.com/vercel/next.js", + "directory": "packages/next-env" + }, + "author": "Next.js Team ", + "license": "MIT", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "dev": "ncc build ./index.ts -w -o dist/", + "prerelease": "node ../../scripts/rm.mjs dist", + "types": "tsc index.ts --declaration --emitDeclarationOnly --declarationDir dist --esModuleInterop", + "release": "ncc build ./index.ts -o ./dist/ --minify --no-cache --no-source-map-register", + "build": "pnpm release && pnpm types", + "prepublishOnly": "cd ../../ && turbo run build" + }, + "devDependencies": { + "@vercel/ncc": "0.34.0", + "dotenv": "16.3.1", + "dotenv-expand": "10.0.0" + } +} diff --git a/site/.next/standalone/node_modules/@swc/helpers/_/_interop_require_default/package.json b/site/.next/standalone/node_modules/@swc/helpers/_/_interop_require_default/package.json new file mode 100644 index 0000000..70d438f --- /dev/null +++ b/site/.next/standalone/node_modules/@swc/helpers/_/_interop_require_default/package.json @@ -0,0 +1,4 @@ +{ + "main": "../../cjs/_interop_require_default.cjs", + "module": "../../esm/_interop_require_default.js" +} diff --git a/site/.next/standalone/node_modules/@swc/helpers/_/_interop_require_wildcard/package.json b/site/.next/standalone/node_modules/@swc/helpers/_/_interop_require_wildcard/package.json new file mode 100644 index 0000000..b3469a5 --- /dev/null +++ b/site/.next/standalone/node_modules/@swc/helpers/_/_interop_require_wildcard/package.json @@ -0,0 +1,4 @@ +{ + "main": "../../cjs/_interop_require_wildcard.cjs", + "module": "../../esm/_interop_require_wildcard.js" +} diff --git a/site/.next/standalone/node_modules/@swc/helpers/_/_tagged_template_literal_loose/package.json b/site/.next/standalone/node_modules/@swc/helpers/_/_tagged_template_literal_loose/package.json new file mode 100644 index 0000000..6a45bd3 --- /dev/null +++ b/site/.next/standalone/node_modules/@swc/helpers/_/_tagged_template_literal_loose/package.json @@ -0,0 +1,4 @@ +{ + "main": "../../cjs/_tagged_template_literal_loose.cjs", + "module": "../../esm/_tagged_template_literal_loose.js" +} diff --git a/site/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_default.cjs b/site/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_default.cjs new file mode 100644 index 0000000..e5b08e3 --- /dev/null +++ b/site/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_default.cjs @@ -0,0 +1,6 @@ +"use strict"; + +exports._ = exports._interop_require_default = _interop_require_default; +function _interop_require_default(obj) { + return obj && obj.__esModule ? obj : { default: obj }; +} diff --git a/site/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs b/site/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs new file mode 100644 index 0000000..bf493b7 --- /dev/null +++ b/site/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs @@ -0,0 +1,38 @@ +"use strict"; + +function _getRequireWildcardCache(nodeInterop) { + if (typeof WeakMap !== "function") return null; + + var cacheBabelInterop = new WeakMap(); + var cacheNodeInterop = new WeakMap(); + + return (_getRequireWildcardCache = function(nodeInterop) { + return nodeInterop ? cacheNodeInterop : cacheBabelInterop; + })(nodeInterop); +} +exports._ = exports._interop_require_wildcard = _interop_require_wildcard; +function _interop_require_wildcard(obj, nodeInterop) { + if (!nodeInterop && obj && obj.__esModule) return obj; + if (obj === null || typeof obj !== "object" && typeof obj !== "function") return { default: obj }; + + var cache = _getRequireWildcardCache(nodeInterop); + + if (cache && cache.has(obj)) return cache.get(obj); + + var newObj = { __proto__: null }; + var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; + + for (var key in obj) { + if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { + var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; + if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc); + else newObj[key] = obj[key]; + } + } + + newObj.default = obj; + + if (cache) cache.set(obj, newObj); + + return newObj; +} diff --git a/site/.next/standalone/node_modules/@swc/helpers/cjs/_tagged_template_literal_loose.cjs b/site/.next/standalone/node_modules/@swc/helpers/cjs/_tagged_template_literal_loose.cjs new file mode 100644 index 0000000..e56e28d --- /dev/null +++ b/site/.next/standalone/node_modules/@swc/helpers/cjs/_tagged_template_literal_loose.cjs @@ -0,0 +1,10 @@ +"use strict"; + +exports._ = exports._tagged_template_literal_loose = _tagged_template_literal_loose; +function _tagged_template_literal_loose(strings, raw) { + if (!raw) raw = strings.slice(0); + + strings.raw = raw; + + return strings; +} diff --git a/site/.next/standalone/node_modules/@swc/helpers/package.json b/site/.next/standalone/node_modules/@swc/helpers/package.json new file mode 100644 index 0000000..e79c26e --- /dev/null +++ b/site/.next/standalone/node_modules/@swc/helpers/package.json @@ -0,0 +1,452 @@ +{ + "name": "@swc/helpers", + "packageManager": "yarn@4.0.2", + "version": "0.5.5", + "description": "External helpers for the swc project.", + "module": "esm/index.js", + "main": "cjs/index.cjs", + "sideEffects": false, + "scripts": { + "build": "zx ./scripts/build.js", + "prepack": "zx ./scripts/build.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/swc-project/swc.git" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org/", + "access": "public" + }, + "keywords": [ + "swc", + "helpers" + ], + "author": "강동윤 ", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/swc-project/swc/issues" + }, + "homepage": "https://swc.rs", + "type": "module", + "devDependencies": { + "@ast-grep/napi": "^0.3.1", + "dprint": "^0.35.3", + "magic-string": "^0.30.0", + "zx": "^7.2.1" + }, + "dependencies": { + "@swc/counter": "^0.1.3", + "tslib": "^2.4.0" + }, + "exports": { + "./package.json": "./package.json", + "./esm/*": "./esm/*", + "./cjs/*": "./cjs/*", + "./src/*": "./src/*", + ".": { + "import": "./esm/index.js", + "default": "./cjs/index.cjs" + }, + "./_": { + "import": "./esm/index.js", + "default": "./cjs/index.cjs" + }, + "./_/_apply_decorated_descriptor": { + "import": "./esm/_apply_decorated_descriptor.js", + "default": "./cjs/_apply_decorated_descriptor.cjs" + }, + "./_/_apply_decs_2203_r": { + "import": "./esm/_apply_decs_2203_r.js", + "default": "./cjs/_apply_decs_2203_r.cjs" + }, + "./_/_array_like_to_array": { + "import": "./esm/_array_like_to_array.js", + "default": "./cjs/_array_like_to_array.cjs" + }, + "./_/_array_with_holes": { + "import": "./esm/_array_with_holes.js", + "default": "./cjs/_array_with_holes.cjs" + }, + "./_/_array_without_holes": { + "import": "./esm/_array_without_holes.js", + "default": "./cjs/_array_without_holes.cjs" + }, + "./_/_assert_this_initialized": { + "import": "./esm/_assert_this_initialized.js", + "default": "./cjs/_assert_this_initialized.cjs" + }, + "./_/_async_generator": { + "import": "./esm/_async_generator.js", + "default": "./cjs/_async_generator.cjs" + }, + "./_/_async_generator_delegate": { + "import": "./esm/_async_generator_delegate.js", + "default": "./cjs/_async_generator_delegate.cjs" + }, + "./_/_async_iterator": { + "import": "./esm/_async_iterator.js", + "default": "./cjs/_async_iterator.cjs" + }, + "./_/_async_to_generator": { + "import": "./esm/_async_to_generator.js", + "default": "./cjs/_async_to_generator.cjs" + }, + "./_/_await_async_generator": { + "import": "./esm/_await_async_generator.js", + "default": "./cjs/_await_async_generator.cjs" + }, + "./_/_await_value": { + "import": "./esm/_await_value.js", + "default": "./cjs/_await_value.cjs" + }, + "./_/_check_private_redeclaration": { + "import": "./esm/_check_private_redeclaration.js", + "default": "./cjs/_check_private_redeclaration.cjs" + }, + "./_/_class_apply_descriptor_destructure": { + "import": "./esm/_class_apply_descriptor_destructure.js", + "default": "./cjs/_class_apply_descriptor_destructure.cjs" + }, + "./_/_class_apply_descriptor_get": { + "import": "./esm/_class_apply_descriptor_get.js", + "default": "./cjs/_class_apply_descriptor_get.cjs" + }, + "./_/_class_apply_descriptor_set": { + "import": "./esm/_class_apply_descriptor_set.js", + "default": "./cjs/_class_apply_descriptor_set.cjs" + }, + "./_/_class_apply_descriptor_update": { + "import": "./esm/_class_apply_descriptor_update.js", + "default": "./cjs/_class_apply_descriptor_update.cjs" + }, + "./_/_class_call_check": { + "import": "./esm/_class_call_check.js", + "default": "./cjs/_class_call_check.cjs" + }, + "./_/_class_check_private_static_access": { + "import": "./esm/_class_check_private_static_access.js", + "default": "./cjs/_class_check_private_static_access.cjs" + }, + "./_/_class_check_private_static_field_descriptor": { + "import": "./esm/_class_check_private_static_field_descriptor.js", + "default": "./cjs/_class_check_private_static_field_descriptor.cjs" + }, + "./_/_class_extract_field_descriptor": { + "import": "./esm/_class_extract_field_descriptor.js", + "default": "./cjs/_class_extract_field_descriptor.cjs" + }, + "./_/_class_name_tdz_error": { + "import": "./esm/_class_name_tdz_error.js", + "default": "./cjs/_class_name_tdz_error.cjs" + }, + "./_/_class_private_field_destructure": { + "import": "./esm/_class_private_field_destructure.js", + "default": "./cjs/_class_private_field_destructure.cjs" + }, + "./_/_class_private_field_get": { + "import": "./esm/_class_private_field_get.js", + "default": "./cjs/_class_private_field_get.cjs" + }, + "./_/_class_private_field_init": { + "import": "./esm/_class_private_field_init.js", + "default": "./cjs/_class_private_field_init.cjs" + }, + "./_/_class_private_field_loose_base": { + "import": "./esm/_class_private_field_loose_base.js", + "default": "./cjs/_class_private_field_loose_base.cjs" + }, + "./_/_class_private_field_loose_key": { + "import": "./esm/_class_private_field_loose_key.js", + "default": "./cjs/_class_private_field_loose_key.cjs" + }, + "./_/_class_private_field_set": { + "import": "./esm/_class_private_field_set.js", + "default": "./cjs/_class_private_field_set.cjs" + }, + "./_/_class_private_field_update": { + "import": "./esm/_class_private_field_update.js", + "default": "./cjs/_class_private_field_update.cjs" + }, + "./_/_class_private_method_get": { + "import": "./esm/_class_private_method_get.js", + "default": "./cjs/_class_private_method_get.cjs" + }, + "./_/_class_private_method_init": { + "import": "./esm/_class_private_method_init.js", + "default": "./cjs/_class_private_method_init.cjs" + }, + "./_/_class_private_method_set": { + "import": "./esm/_class_private_method_set.js", + "default": "./cjs/_class_private_method_set.cjs" + }, + "./_/_class_static_private_field_destructure": { + "import": "./esm/_class_static_private_field_destructure.js", + "default": "./cjs/_class_static_private_field_destructure.cjs" + }, + "./_/_class_static_private_field_spec_get": { + "import": "./esm/_class_static_private_field_spec_get.js", + "default": "./cjs/_class_static_private_field_spec_get.cjs" + }, + "./_/_class_static_private_field_spec_set": { + "import": "./esm/_class_static_private_field_spec_set.js", + "default": "./cjs/_class_static_private_field_spec_set.cjs" + }, + "./_/_class_static_private_field_update": { + "import": "./esm/_class_static_private_field_update.js", + "default": "./cjs/_class_static_private_field_update.cjs" + }, + "./_/_class_static_private_method_get": { + "import": "./esm/_class_static_private_method_get.js", + "default": "./cjs/_class_static_private_method_get.cjs" + }, + "./_/_construct": { + "import": "./esm/_construct.js", + "default": "./cjs/_construct.cjs" + }, + "./_/_create_class": { + "import": "./esm/_create_class.js", + "default": "./cjs/_create_class.cjs" + }, + "./_/_create_for_of_iterator_helper_loose": { + "import": "./esm/_create_for_of_iterator_helper_loose.js", + "default": "./cjs/_create_for_of_iterator_helper_loose.cjs" + }, + "./_/_create_super": { + "import": "./esm/_create_super.js", + "default": "./cjs/_create_super.cjs" + }, + "./_/_decorate": { + "import": "./esm/_decorate.js", + "default": "./cjs/_decorate.cjs" + }, + "./_/_defaults": { + "import": "./esm/_defaults.js", + "default": "./cjs/_defaults.cjs" + }, + "./_/_define_enumerable_properties": { + "import": "./esm/_define_enumerable_properties.js", + "default": "./cjs/_define_enumerable_properties.cjs" + }, + "./_/_define_property": { + "import": "./esm/_define_property.js", + "default": "./cjs/_define_property.cjs" + }, + "./_/_dispose": { + "import": "./esm/_dispose.js", + "default": "./cjs/_dispose.cjs" + }, + "./_/_export_star": { + "import": "./esm/_export_star.js", + "default": "./cjs/_export_star.cjs" + }, + "./_/_extends": { + "import": "./esm/_extends.js", + "default": "./cjs/_extends.cjs" + }, + "./_/_get": { + "import": "./esm/_get.js", + "default": "./cjs/_get.cjs" + }, + "./_/_get_prototype_of": { + "import": "./esm/_get_prototype_of.js", + "default": "./cjs/_get_prototype_of.cjs" + }, + "./_/_inherits": { + "import": "./esm/_inherits.js", + "default": "./cjs/_inherits.cjs" + }, + "./_/_inherits_loose": { + "import": "./esm/_inherits_loose.js", + "default": "./cjs/_inherits_loose.cjs" + }, + "./_/_initializer_define_property": { + "import": "./esm/_initializer_define_property.js", + "default": "./cjs/_initializer_define_property.cjs" + }, + "./_/_initializer_warning_helper": { + "import": "./esm/_initializer_warning_helper.js", + "default": "./cjs/_initializer_warning_helper.cjs" + }, + "./_/_instanceof": { + "import": "./esm/_instanceof.js", + "default": "./cjs/_instanceof.cjs" + }, + "./_/_interop_require_default": { + "import": "./esm/_interop_require_default.js", + "default": "./cjs/_interop_require_default.cjs" + }, + "./_/_interop_require_wildcard": { + "import": "./esm/_interop_require_wildcard.js", + "default": "./cjs/_interop_require_wildcard.cjs" + }, + "./_/_is_native_function": { + "import": "./esm/_is_native_function.js", + "default": "./cjs/_is_native_function.cjs" + }, + "./_/_is_native_reflect_construct": { + "import": "./esm/_is_native_reflect_construct.js", + "default": "./cjs/_is_native_reflect_construct.cjs" + }, + "./_/_iterable_to_array": { + "import": "./esm/_iterable_to_array.js", + "default": "./cjs/_iterable_to_array.cjs" + }, + "./_/_iterable_to_array_limit": { + "import": "./esm/_iterable_to_array_limit.js", + "default": "./cjs/_iterable_to_array_limit.cjs" + }, + "./_/_iterable_to_array_limit_loose": { + "import": "./esm/_iterable_to_array_limit_loose.js", + "default": "./cjs/_iterable_to_array_limit_loose.cjs" + }, + "./_/_jsx": { + "import": "./esm/_jsx.js", + "default": "./cjs/_jsx.cjs" + }, + "./_/_new_arrow_check": { + "import": "./esm/_new_arrow_check.js", + "default": "./cjs/_new_arrow_check.cjs" + }, + "./_/_non_iterable_rest": { + "import": "./esm/_non_iterable_rest.js", + "default": "./cjs/_non_iterable_rest.cjs" + }, + "./_/_non_iterable_spread": { + "import": "./esm/_non_iterable_spread.js", + "default": "./cjs/_non_iterable_spread.cjs" + }, + "./_/_object_destructuring_empty": { + "import": "./esm/_object_destructuring_empty.js", + "default": "./cjs/_object_destructuring_empty.cjs" + }, + "./_/_object_spread": { + "import": "./esm/_object_spread.js", + "default": "./cjs/_object_spread.cjs" + }, + "./_/_object_spread_props": { + "import": "./esm/_object_spread_props.js", + "default": "./cjs/_object_spread_props.cjs" + }, + "./_/_object_without_properties": { + "import": "./esm/_object_without_properties.js", + "default": "./cjs/_object_without_properties.cjs" + }, + "./_/_object_without_properties_loose": { + "import": "./esm/_object_without_properties_loose.js", + "default": "./cjs/_object_without_properties_loose.cjs" + }, + "./_/_possible_constructor_return": { + "import": "./esm/_possible_constructor_return.js", + "default": "./cjs/_possible_constructor_return.cjs" + }, + "./_/_read_only_error": { + "import": "./esm/_read_only_error.js", + "default": "./cjs/_read_only_error.cjs" + }, + "./_/_set": { + "import": "./esm/_set.js", + "default": "./cjs/_set.cjs" + }, + "./_/_set_prototype_of": { + "import": "./esm/_set_prototype_of.js", + "default": "./cjs/_set_prototype_of.cjs" + }, + "./_/_skip_first_generator_next": { + "import": "./esm/_skip_first_generator_next.js", + "default": "./cjs/_skip_first_generator_next.cjs" + }, + "./_/_sliced_to_array": { + "import": "./esm/_sliced_to_array.js", + "default": "./cjs/_sliced_to_array.cjs" + }, + "./_/_sliced_to_array_loose": { + "import": "./esm/_sliced_to_array_loose.js", + "default": "./cjs/_sliced_to_array_loose.cjs" + }, + "./_/_super_prop_base": { + "import": "./esm/_super_prop_base.js", + "default": "./cjs/_super_prop_base.cjs" + }, + "./_/_tagged_template_literal": { + "import": "./esm/_tagged_template_literal.js", + "default": "./cjs/_tagged_template_literal.cjs" + }, + "./_/_tagged_template_literal_loose": { + "import": "./esm/_tagged_template_literal_loose.js", + "default": "./cjs/_tagged_template_literal_loose.cjs" + }, + "./_/_throw": { + "import": "./esm/_throw.js", + "default": "./cjs/_throw.cjs" + }, + "./_/_to_array": { + "import": "./esm/_to_array.js", + "default": "./cjs/_to_array.cjs" + }, + "./_/_to_consumable_array": { + "import": "./esm/_to_consumable_array.js", + "default": "./cjs/_to_consumable_array.cjs" + }, + "./_/_to_primitive": { + "import": "./esm/_to_primitive.js", + "default": "./cjs/_to_primitive.cjs" + }, + "./_/_to_property_key": { + "import": "./esm/_to_property_key.js", + "default": "./cjs/_to_property_key.cjs" + }, + "./_/_ts_decorate": { + "import": "./esm/_ts_decorate.js", + "default": "./cjs/_ts_decorate.cjs" + }, + "./_/_ts_generator": { + "import": "./esm/_ts_generator.js", + "default": "./cjs/_ts_generator.cjs" + }, + "./_/_ts_metadata": { + "import": "./esm/_ts_metadata.js", + "default": "./cjs/_ts_metadata.cjs" + }, + "./_/_ts_param": { + "import": "./esm/_ts_param.js", + "default": "./cjs/_ts_param.cjs" + }, + "./_/_ts_values": { + "import": "./esm/_ts_values.js", + "default": "./cjs/_ts_values.cjs" + }, + "./_/_type_of": { + "import": "./esm/_type_of.js", + "default": "./cjs/_type_of.cjs" + }, + "./_/_unsupported_iterable_to_array": { + "import": "./esm/_unsupported_iterable_to_array.js", + "default": "./cjs/_unsupported_iterable_to_array.cjs" + }, + "./_/_update": { + "import": "./esm/_update.js", + "default": "./cjs/_update.cjs" + }, + "./_/_using": { + "import": "./esm/_using.js", + "default": "./cjs/_using.cjs" + }, + "./_/_wrap_async_generator": { + "import": "./esm/_wrap_async_generator.js", + "default": "./cjs/_wrap_async_generator.cjs" + }, + "./_/_wrap_native_super": { + "import": "./esm/_wrap_native_super.js", + "default": "./cjs/_wrap_native_super.cjs" + }, + "./_/_write_only_error": { + "import": "./esm/_write_only_error.js", + "default": "./cjs/_write_only_error.cjs" + }, + "./_/index": { + "import": "./esm/index.js", + "default": "./cjs/index.cjs" + } + } +} diff --git a/site/.next/standalone/node_modules/busboy/lib/index.js b/site/.next/standalone/node_modules/busboy/lib/index.js new file mode 100644 index 0000000..873272d --- /dev/null +++ b/site/.next/standalone/node_modules/busboy/lib/index.js @@ -0,0 +1,57 @@ +'use strict'; + +const { parseContentType } = require('./utils.js'); + +function getInstance(cfg) { + const headers = cfg.headers; + const conType = parseContentType(headers['content-type']); + if (!conType) + throw new Error('Malformed content type'); + + for (const type of TYPES) { + const matched = type.detect(conType); + if (!matched) + continue; + + const instanceCfg = { + limits: cfg.limits, + headers, + conType, + highWaterMark: undefined, + fileHwm: undefined, + defCharset: undefined, + defParamCharset: undefined, + preservePath: false, + }; + if (cfg.highWaterMark) + instanceCfg.highWaterMark = cfg.highWaterMark; + if (cfg.fileHwm) + instanceCfg.fileHwm = cfg.fileHwm; + instanceCfg.defCharset = cfg.defCharset; + instanceCfg.defParamCharset = cfg.defParamCharset; + instanceCfg.preservePath = cfg.preservePath; + return new type(instanceCfg); + } + + throw new Error(`Unsupported content type: ${headers['content-type']}`); +} + +// Note: types are explicitly listed here for easier bundling +// See: https://github.com/mscdex/busboy/issues/121 +const TYPES = [ + require('./types/multipart'), + require('./types/urlencoded'), +].filter(function(typemod) { return typeof typemod.detect === 'function'; }); + +module.exports = (cfg) => { + if (typeof cfg !== 'object' || cfg === null) + cfg = {}; + + if (typeof cfg.headers !== 'object' + || cfg.headers === null + || typeof cfg.headers['content-type'] !== 'string') { + throw new Error('Missing Content-Type'); + } + + return getInstance(cfg); +}; diff --git a/site/.next/standalone/node_modules/busboy/lib/types/multipart.js b/site/.next/standalone/node_modules/busboy/lib/types/multipart.js new file mode 100644 index 0000000..cc0d7bb --- /dev/null +++ b/site/.next/standalone/node_modules/busboy/lib/types/multipart.js @@ -0,0 +1,653 @@ +'use strict'; + +const { Readable, Writable } = require('stream'); + +const StreamSearch = require('streamsearch'); + +const { + basename, + convertToUTF8, + getDecoder, + parseContentType, + parseDisposition, +} = require('../utils.js'); + +const BUF_CRLF = Buffer.from('\r\n'); +const BUF_CR = Buffer.from('\r'); +const BUF_DASH = Buffer.from('-'); + +function noop() {} + +const MAX_HEADER_PAIRS = 2000; // From node +const MAX_HEADER_SIZE = 16 * 1024; // From node (its default value) + +const HPARSER_NAME = 0; +const HPARSER_PRE_OWS = 1; +const HPARSER_VALUE = 2; +class HeaderParser { + constructor(cb) { + this.header = Object.create(null); + this.pairCount = 0; + this.byteCount = 0; + this.state = HPARSER_NAME; + this.name = ''; + this.value = ''; + this.crlf = 0; + this.cb = cb; + } + + reset() { + this.header = Object.create(null); + this.pairCount = 0; + this.byteCount = 0; + this.state = HPARSER_NAME; + this.name = ''; + this.value = ''; + this.crlf = 0; + } + + push(chunk, pos, end) { + let start = pos; + while (pos < end) { + switch (this.state) { + case HPARSER_NAME: { + let done = false; + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (TOKEN[code] !== 1) { + if (code !== 58/* ':' */) + return -1; + this.name += chunk.latin1Slice(start, pos); + if (this.name.length === 0) + return -1; + ++pos; + done = true; + this.state = HPARSER_PRE_OWS; + break; + } + } + if (!done) { + this.name += chunk.latin1Slice(start, pos); + break; + } + // FALLTHROUGH + } + case HPARSER_PRE_OWS: { + // Skip optional whitespace + let done = false; + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) { + start = pos; + done = true; + this.state = HPARSER_VALUE; + break; + } + } + if (!done) + break; + // FALLTHROUGH + } + case HPARSER_VALUE: + switch (this.crlf) { + case 0: // Nothing yet + for (; pos < end; ++pos) { + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (FIELD_VCHAR[code] !== 1) { + if (code !== 13/* '\r' */) + return -1; + ++this.crlf; + break; + } + } + this.value += chunk.latin1Slice(start, pos++); + break; + case 1: // Received CR + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + if (chunk[pos++] !== 10/* '\n' */) + return -1; + ++this.crlf; + break; + case 2: { // Received CR LF + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + const code = chunk[pos]; + if (code === 32/* ' ' */ || code === 9/* '\t' */) { + // Folded value + start = pos; + this.crlf = 0; + } else { + if (++this.pairCount < MAX_HEADER_PAIRS) { + this.name = this.name.toLowerCase(); + if (this.header[this.name] === undefined) + this.header[this.name] = [this.value]; + else + this.header[this.name].push(this.value); + } + if (code === 13/* '\r' */) { + ++this.crlf; + ++pos; + } else { + // Assume start of next header field name + start = pos; + this.crlf = 0; + this.state = HPARSER_NAME; + this.name = ''; + this.value = ''; + } + } + break; + } + case 3: { // Received CR LF CR + if (this.byteCount === MAX_HEADER_SIZE) + return -1; + ++this.byteCount; + if (chunk[pos++] !== 10/* '\n' */) + return -1; + // End of header + const header = this.header; + this.reset(); + this.cb(header); + return pos; + } + } + break; + } + } + + return pos; + } +} + +class FileStream extends Readable { + constructor(opts, owner) { + super(opts); + this.truncated = false; + this._readcb = null; + this.once('end', () => { + // We need to make sure that we call any outstanding _writecb() that is + // associated with this file so that processing of the rest of the form + // can continue. This may not happen if the file stream ends right after + // backpressure kicks in, so we force it here. + this._read(); + if (--owner._fileEndsLeft === 0 && owner._finalcb) { + const cb = owner._finalcb; + owner._finalcb = null; + // Make sure other 'end' event handlers get a chance to be executed + // before busboy's 'finish' event is emitted + process.nextTick(cb); + } + }); + } + _read(n) { + const cb = this._readcb; + if (cb) { + this._readcb = null; + cb(); + } + } +} + +const ignoreData = { + push: (chunk, pos) => {}, + destroy: () => {}, +}; + +function callAndUnsetCb(self, err) { + const cb = self._writecb; + self._writecb = null; + if (err) + self.destroy(err); + else if (cb) + cb(); +} + +function nullDecoder(val, hint) { + return val; +} + +class Multipart extends Writable { + constructor(cfg) { + const streamOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: (typeof cfg.highWaterMark === 'number' + ? cfg.highWaterMark + : undefined), + }; + super(streamOpts); + + if (!cfg.conType.params || typeof cfg.conType.params.boundary !== 'string') + throw new Error('Multipart: Boundary not found'); + + const boundary = cfg.conType.params.boundary; + const paramDecoder = (typeof cfg.defParamCharset === 'string' + && cfg.defParamCharset + ? getDecoder(cfg.defParamCharset) + : nullDecoder); + const defCharset = (cfg.defCharset || 'utf8'); + const preservePath = cfg.preservePath; + const fileOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: (typeof cfg.fileHwm === 'number' + ? cfg.fileHwm + : undefined), + }; + + const limits = cfg.limits; + const fieldSizeLimit = (limits && typeof limits.fieldSize === 'number' + ? limits.fieldSize + : 1 * 1024 * 1024); + const fileSizeLimit = (limits && typeof limits.fileSize === 'number' + ? limits.fileSize + : Infinity); + const filesLimit = (limits && typeof limits.files === 'number' + ? limits.files + : Infinity); + const fieldsLimit = (limits && typeof limits.fields === 'number' + ? limits.fields + : Infinity); + const partsLimit = (limits && typeof limits.parts === 'number' + ? limits.parts + : Infinity); + + let parts = -1; // Account for initial boundary + let fields = 0; + let files = 0; + let skipPart = false; + + this._fileEndsLeft = 0; + this._fileStream = undefined; + this._complete = false; + let fileSize = 0; + + let field; + let fieldSize = 0; + let partCharset; + let partEncoding; + let partType; + let partName; + let partTruncated = false; + + let hitFilesLimit = false; + let hitFieldsLimit = false; + + this._hparser = null; + const hparser = new HeaderParser((header) => { + this._hparser = null; + skipPart = false; + + partType = 'text/plain'; + partCharset = defCharset; + partEncoding = '7bit'; + partName = undefined; + partTruncated = false; + + let filename; + if (!header['content-disposition']) { + skipPart = true; + return; + } + + const disp = parseDisposition(header['content-disposition'][0], + paramDecoder); + if (!disp || disp.type !== 'form-data') { + skipPart = true; + return; + } + + if (disp.params) { + if (disp.params.name) + partName = disp.params.name; + + if (disp.params['filename*']) + filename = disp.params['filename*']; + else if (disp.params.filename) + filename = disp.params.filename; + + if (filename !== undefined && !preservePath) + filename = basename(filename); + } + + if (header['content-type']) { + const conType = parseContentType(header['content-type'][0]); + if (conType) { + partType = `${conType.type}/${conType.subtype}`; + if (conType.params && typeof conType.params.charset === 'string') + partCharset = conType.params.charset.toLowerCase(); + } + } + + if (header['content-transfer-encoding']) + partEncoding = header['content-transfer-encoding'][0].toLowerCase(); + + if (partType === 'application/octet-stream' || filename !== undefined) { + // File + + if (files === filesLimit) { + if (!hitFilesLimit) { + hitFilesLimit = true; + this.emit('filesLimit'); + } + skipPart = true; + return; + } + ++files; + + if (this.listenerCount('file') === 0) { + skipPart = true; + return; + } + + fileSize = 0; + this._fileStream = new FileStream(fileOpts, this); + ++this._fileEndsLeft; + this.emit( + 'file', + partName, + this._fileStream, + { filename, + encoding: partEncoding, + mimeType: partType } + ); + } else { + // Non-file + + if (fields === fieldsLimit) { + if (!hitFieldsLimit) { + hitFieldsLimit = true; + this.emit('fieldsLimit'); + } + skipPart = true; + return; + } + ++fields; + + if (this.listenerCount('field') === 0) { + skipPart = true; + return; + } + + field = []; + fieldSize = 0; + } + }); + + let matchPostBoundary = 0; + const ssCb = (isMatch, data, start, end, isDataSafe) => { +retrydata: + while (data) { + if (this._hparser !== null) { + const ret = this._hparser.push(data, start, end); + if (ret === -1) { + this._hparser = null; + hparser.reset(); + this.emit('error', new Error('Malformed part header')); + break; + } + start = ret; + } + + if (start === end) + break; + + if (matchPostBoundary !== 0) { + if (matchPostBoundary === 1) { + switch (data[start]) { + case 45: // '-' + // Try matching '--' after boundary + matchPostBoundary = 2; + ++start; + break; + case 13: // '\r' + // Try matching CR LF before header + matchPostBoundary = 3; + ++start; + break; + default: + matchPostBoundary = 0; + } + if (start === end) + return; + } + + if (matchPostBoundary === 2) { + matchPostBoundary = 0; + if (data[start] === 45/* '-' */) { + // End of multipart data + this._complete = true; + this._bparser = ignoreData; + return; + } + // We saw something other than '-', so put the dash we consumed + // "back" + const writecb = this._writecb; + this._writecb = noop; + ssCb(false, BUF_DASH, 0, 1, false); + this._writecb = writecb; + } else if (matchPostBoundary === 3) { + matchPostBoundary = 0; + if (data[start] === 10/* '\n' */) { + ++start; + if (parts >= partsLimit) + break; + // Prepare the header parser + this._hparser = hparser; + if (start === end) + break; + // Process the remaining data as a header + continue retrydata; + } else { + // We saw something other than LF, so put the CR we consumed + // "back" + const writecb = this._writecb; + this._writecb = noop; + ssCb(false, BUF_CR, 0, 1, false); + this._writecb = writecb; + } + } + } + + if (!skipPart) { + if (this._fileStream) { + let chunk; + const actualLen = Math.min(end - start, fileSizeLimit - fileSize); + if (!isDataSafe) { + chunk = Buffer.allocUnsafe(actualLen); + data.copy(chunk, 0, start, start + actualLen); + } else { + chunk = data.slice(start, start + actualLen); + } + + fileSize += chunk.length; + if (fileSize === fileSizeLimit) { + if (chunk.length > 0) + this._fileStream.push(chunk); + this._fileStream.emit('limit'); + this._fileStream.truncated = true; + skipPart = true; + } else if (!this._fileStream.push(chunk)) { + if (this._writecb) + this._fileStream._readcb = this._writecb; + this._writecb = null; + } + } else if (field !== undefined) { + let chunk; + const actualLen = Math.min( + end - start, + fieldSizeLimit - fieldSize + ); + if (!isDataSafe) { + chunk = Buffer.allocUnsafe(actualLen); + data.copy(chunk, 0, start, start + actualLen); + } else { + chunk = data.slice(start, start + actualLen); + } + + fieldSize += actualLen; + field.push(chunk); + if (fieldSize === fieldSizeLimit) { + skipPart = true; + partTruncated = true; + } + } + } + + break; + } + + if (isMatch) { + matchPostBoundary = 1; + + if (this._fileStream) { + // End the active file stream if the previous part was a file + this._fileStream.push(null); + this._fileStream = null; + } else if (field !== undefined) { + let data; + switch (field.length) { + case 0: + data = ''; + break; + case 1: + data = convertToUTF8(field[0], partCharset, 0); + break; + default: + data = convertToUTF8( + Buffer.concat(field, fieldSize), + partCharset, + 0 + ); + } + field = undefined; + fieldSize = 0; + this.emit( + 'field', + partName, + data, + { nameTruncated: false, + valueTruncated: partTruncated, + encoding: partEncoding, + mimeType: partType } + ); + } + + if (++parts === partsLimit) + this.emit('partsLimit'); + } + }; + this._bparser = new StreamSearch(`\r\n--${boundary}`, ssCb); + + this._writecb = null; + this._finalcb = null; + + // Just in case there is no preamble + this.write(BUF_CRLF); + } + + static detect(conType) { + return (conType.type === 'multipart' && conType.subtype === 'form-data'); + } + + _write(chunk, enc, cb) { + this._writecb = cb; + this._bparser.push(chunk, 0); + if (this._writecb) + callAndUnsetCb(this); + } + + _destroy(err, cb) { + this._hparser = null; + this._bparser = ignoreData; + if (!err) + err = checkEndState(this); + const fileStream = this._fileStream; + if (fileStream) { + this._fileStream = null; + fileStream.destroy(err); + } + cb(err); + } + + _final(cb) { + this._bparser.destroy(); + if (!this._complete) + return cb(new Error('Unexpected end of form')); + if (this._fileEndsLeft) + this._finalcb = finalcb.bind(null, this, cb); + else + finalcb(this, cb); + } +} + +function finalcb(self, cb, err) { + if (err) + return cb(err); + err = checkEndState(self); + cb(err); +} + +function checkEndState(self) { + if (self._hparser) + return new Error('Malformed part header'); + const fileStream = self._fileStream; + if (fileStream) { + self._fileStream = null; + fileStream.destroy(new Error('Unexpected end of file')); + } + if (!self._complete) + return new Error('Unexpected end of form'); +} + +const TOKEN = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const FIELD_VCHAR = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +]; + +module.exports = Multipart; diff --git a/site/.next/standalone/node_modules/busboy/lib/types/urlencoded.js b/site/.next/standalone/node_modules/busboy/lib/types/urlencoded.js new file mode 100644 index 0000000..5c463a2 --- /dev/null +++ b/site/.next/standalone/node_modules/busboy/lib/types/urlencoded.js @@ -0,0 +1,350 @@ +'use strict'; + +const { Writable } = require('stream'); + +const { getDecoder } = require('../utils.js'); + +class URLEncoded extends Writable { + constructor(cfg) { + const streamOpts = { + autoDestroy: true, + emitClose: true, + highWaterMark: (typeof cfg.highWaterMark === 'number' + ? cfg.highWaterMark + : undefined), + }; + super(streamOpts); + + let charset = (cfg.defCharset || 'utf8'); + if (cfg.conType.params && typeof cfg.conType.params.charset === 'string') + charset = cfg.conType.params.charset; + + this.charset = charset; + + const limits = cfg.limits; + this.fieldSizeLimit = (limits && typeof limits.fieldSize === 'number' + ? limits.fieldSize + : 1 * 1024 * 1024); + this.fieldsLimit = (limits && typeof limits.fields === 'number' + ? limits.fields + : Infinity); + this.fieldNameSizeLimit = ( + limits && typeof limits.fieldNameSize === 'number' + ? limits.fieldNameSize + : 100 + ); + + this._inKey = true; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + this._fields = 0; + this._key = ''; + this._val = ''; + this._byte = -2; + this._lastPos = 0; + this._encode = 0; + this._decoder = getDecoder(charset); + } + + static detect(conType) { + return (conType.type === 'application' + && conType.subtype === 'x-www-form-urlencoded'); + } + + _write(chunk, enc, cb) { + if (this._fields >= this.fieldsLimit) + return cb(); + + let i = 0; + const len = chunk.length; + this._lastPos = 0; + + // Check if we last ended mid-percent-encoded byte + if (this._byte !== -2) { + i = readPctEnc(this, chunk, i, len); + if (i === -1) + return cb(new Error('Malformed urlencoded form')); + if (i >= len) + return cb(); + if (this._inKey) + ++this._bytesKey; + else + ++this._bytesVal; + } + +main: + while (i < len) { + if (this._inKey) { + // Parsing key + + i = skipKeyBytes(this, chunk, i, len); + + while (i < len) { + switch (chunk[i]) { + case 61: // '=' + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._key = this._decoder(this._key, this._encode); + this._encode = 0; + this._inKey = false; + continue main; + case 38: // '&' + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._key = this._decoder(this._key, this._encode); + this._encode = 0; + if (this._bytesKey > 0) { + this.emit( + 'field', + this._key, + '', + { nameTruncated: this._keyTrunc, + valueTruncated: false, + encoding: this.charset, + mimeType: 'text/plain' } + ); + } + this._key = ''; + this._val = ''; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + if (++this._fields >= this.fieldsLimit) { + this.emit('fieldsLimit'); + return cb(); + } + continue; + case 43: // '+' + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._key += ' '; + this._lastPos = i + 1; + break; + case 37: // '%' + if (this._encode === 0) + this._encode = 1; + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + this._lastPos = i + 1; + this._byte = -1; + i = readPctEnc(this, chunk, i + 1, len); + if (i === -1) + return cb(new Error('Malformed urlencoded form')); + if (i >= len) + return cb(); + ++this._bytesKey; + i = skipKeyBytes(this, chunk, i, len); + continue; + } + ++i; + ++this._bytesKey; + i = skipKeyBytes(this, chunk, i, len); + } + if (this._lastPos < i) + this._key += chunk.latin1Slice(this._lastPos, i); + } else { + // Parsing value + + i = skipValBytes(this, chunk, i, len); + + while (i < len) { + switch (chunk[i]) { + case 38: // '&' + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._lastPos = ++i; + this._inKey = true; + this._val = this._decoder(this._val, this._encode); + this._encode = 0; + if (this._bytesKey > 0 || this._bytesVal > 0) { + this.emit( + 'field', + this._key, + this._val, + { nameTruncated: this._keyTrunc, + valueTruncated: this._valTrunc, + encoding: this.charset, + mimeType: 'text/plain' } + ); + } + this._key = ''; + this._val = ''; + this._keyTrunc = false; + this._valTrunc = false; + this._bytesKey = 0; + this._bytesVal = 0; + if (++this._fields >= this.fieldsLimit) { + this.emit('fieldsLimit'); + return cb(); + } + continue main; + case 43: // '+' + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._val += ' '; + this._lastPos = i + 1; + break; + case 37: // '%' + if (this._encode === 0) + this._encode = 1; + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + this._lastPos = i + 1; + this._byte = -1; + i = readPctEnc(this, chunk, i + 1, len); + if (i === -1) + return cb(new Error('Malformed urlencoded form')); + if (i >= len) + return cb(); + ++this._bytesVal; + i = skipValBytes(this, chunk, i, len); + continue; + } + ++i; + ++this._bytesVal; + i = skipValBytes(this, chunk, i, len); + } + if (this._lastPos < i) + this._val += chunk.latin1Slice(this._lastPos, i); + } + } + + cb(); + } + + _final(cb) { + if (this._byte !== -2) + return cb(new Error('Malformed urlencoded form')); + if (!this._inKey || this._bytesKey > 0 || this._bytesVal > 0) { + if (this._inKey) + this._key = this._decoder(this._key, this._encode); + else + this._val = this._decoder(this._val, this._encode); + this.emit( + 'field', + this._key, + this._val, + { nameTruncated: this._keyTrunc, + valueTruncated: this._valTrunc, + encoding: this.charset, + mimeType: 'text/plain' } + ); + } + cb(); + } +} + +function readPctEnc(self, chunk, pos, len) { + if (pos >= len) + return len; + + if (self._byte === -1) { + // We saw a '%' but no hex characters yet + const hexUpper = HEX_VALUES[chunk[pos++]]; + if (hexUpper === -1) + return -1; + + if (hexUpper >= 8) + self._encode = 2; // Indicate high bits detected + + if (pos < len) { + // Both hex characters are in this chunk + const hexLower = HEX_VALUES[chunk[pos++]]; + if (hexLower === -1) + return -1; + + if (self._inKey) + self._key += String.fromCharCode((hexUpper << 4) + hexLower); + else + self._val += String.fromCharCode((hexUpper << 4) + hexLower); + + self._byte = -2; + self._lastPos = pos; + } else { + // Only one hex character was available in this chunk + self._byte = hexUpper; + } + } else { + // We saw only one hex character so far + const hexLower = HEX_VALUES[chunk[pos++]]; + if (hexLower === -1) + return -1; + + if (self._inKey) + self._key += String.fromCharCode((self._byte << 4) + hexLower); + else + self._val += String.fromCharCode((self._byte << 4) + hexLower); + + self._byte = -2; + self._lastPos = pos; + } + + return pos; +} + +function skipKeyBytes(self, chunk, pos, len) { + // Skip bytes if we've truncated + if (self._bytesKey > self.fieldNameSizeLimit) { + if (!self._keyTrunc) { + if (self._lastPos < pos) + self._key += chunk.latin1Slice(self._lastPos, pos - 1); + } + self._keyTrunc = true; + for (; pos < len; ++pos) { + const code = chunk[pos]; + if (code === 61/* '=' */ || code === 38/* '&' */) + break; + ++self._bytesKey; + } + self._lastPos = pos; + } + + return pos; +} + +function skipValBytes(self, chunk, pos, len) { + // Skip bytes if we've truncated + if (self._bytesVal > self.fieldSizeLimit) { + if (!self._valTrunc) { + if (self._lastPos < pos) + self._val += chunk.latin1Slice(self._lastPos, pos - 1); + } + self._valTrunc = true; + for (; pos < len; ++pos) { + if (chunk[pos] === 38/* '&' */) + break; + ++self._bytesVal; + } + self._lastPos = pos; + } + + return pos; +} + +/* eslint-disable no-multi-spaces */ +const HEX_VALUES = [ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +]; +/* eslint-enable no-multi-spaces */ + +module.exports = URLEncoded; diff --git a/site/.next/standalone/node_modules/busboy/lib/utils.js b/site/.next/standalone/node_modules/busboy/lib/utils.js new file mode 100644 index 0000000..8274f6c --- /dev/null +++ b/site/.next/standalone/node_modules/busboy/lib/utils.js @@ -0,0 +1,596 @@ +'use strict'; + +function parseContentType(str) { + if (str.length === 0) + return; + + const params = Object.create(null); + let i = 0; + + // Parse type + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code !== 47/* '/' */ || i === 0) + return; + break; + } + } + // Check for type without subtype + if (i === str.length) + return; + + const type = str.slice(0, i).toLowerCase(); + + // Parse subtype + const subtypeStart = ++i; + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + // Make sure we have a subtype + if (i === subtypeStart) + return; + + if (parseContentTypeParams(str, i, params) === undefined) + return; + break; + } + } + // Make sure we have a subtype + if (i === subtypeStart) + return; + + const subtype = str.slice(subtypeStart, i).toLowerCase(); + + return { type, subtype, params }; +} + +function parseContentTypeParams(str, i, params) { + while (i < str.length) { + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace + if (i === str.length) + break; + + // Check for malformed parameter + if (str.charCodeAt(i++) !== 59/* ';' */) + return; + + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace (malformed) + if (i === str.length) + return; + + let name; + const nameStart = i; + // Parse parameter name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code !== 61/* '=' */) + return; + break; + } + } + + // No value (malformed) + if (i === str.length) + return; + + name = str.slice(nameStart, i); + ++i; // Skip over '=' + + // No value (malformed) + if (i === str.length) + return; + + let value = ''; + let valueStart; + if (str.charCodeAt(i) === 34/* '"' */) { + valueStart = ++i; + let escaping = false; + // Parse quoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 92/* '\\' */) { + if (escaping) { + valueStart = i; + escaping = false; + } else { + value += str.slice(valueStart, i); + escaping = true; + } + continue; + } + if (code === 34/* '"' */) { + if (escaping) { + valueStart = i; + escaping = false; + continue; + } + value += str.slice(valueStart, i); + break; + } + if (escaping) { + valueStart = i - 1; + escaping = false; + } + // Invalid unescaped quoted character (malformed) + if (QDTEXT[code] !== 1) + return; + } + + // No end quote (malformed) + if (i === str.length) + return; + + ++i; // Skip over double quote + } else { + valueStart = i; + // Parse unquoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + // No value (malformed) + if (i === valueStart) + return; + break; + } + } + value = str.slice(valueStart, i); + } + + name = name.toLowerCase(); + if (params[name] === undefined) + params[name] = value; + } + + return params; +} + +function parseDisposition(str, defDecoder) { + if (str.length === 0) + return; + + const params = Object.create(null); + let i = 0; + + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (parseDispositionParams(str, i, params, defDecoder) === undefined) + return; + break; + } + } + + const type = str.slice(0, i).toLowerCase(); + + return { type, params }; +} + +function parseDispositionParams(str, i, params, defDecoder) { + while (i < str.length) { + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace + if (i === str.length) + break; + + // Check for malformed parameter + if (str.charCodeAt(i++) !== 59/* ';' */) + return; + + // Consume whitespace + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code !== 32/* ' ' */ && code !== 9/* '\t' */) + break; + } + + // Ended on whitespace (malformed) + if (i === str.length) + return; + + let name; + const nameStart = i; + // Parse parameter name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + if (code === 61/* '=' */) + break; + return; + } + } + + // No value (malformed) + if (i === str.length) + return; + + let value = ''; + let valueStart; + let charset; + //~ let lang; + name = str.slice(nameStart, i); + if (name.charCodeAt(name.length - 1) === 42/* '*' */) { + // Extended value + + const charsetStart = ++i; + // Parse charset name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (CHARSET[code] !== 1) { + if (code !== 39/* '\'' */) + return; + break; + } + } + + // Incomplete charset (malformed) + if (i === str.length) + return; + + charset = str.slice(charsetStart, i); + ++i; // Skip over the '\'' + + //~ const langStart = ++i; + // Parse language name + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 39/* '\'' */) + break; + } + + // Incomplete language (malformed) + if (i === str.length) + return; + + //~ lang = str.slice(langStart, i); + ++i; // Skip over the '\'' + + // No value (malformed) + if (i === str.length) + return; + + valueStart = i; + + let encode = 0; + // Parse value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (EXTENDED_VALUE[code] !== 1) { + if (code === 37/* '%' */) { + let hexUpper; + let hexLower; + if (i + 2 < str.length + && (hexUpper = HEX_VALUES[str.charCodeAt(i + 1)]) !== -1 + && (hexLower = HEX_VALUES[str.charCodeAt(i + 2)]) !== -1) { + const byteVal = (hexUpper << 4) + hexLower; + value += str.slice(valueStart, i); + value += String.fromCharCode(byteVal); + i += 2; + valueStart = i + 1; + if (byteVal >= 128) + encode = 2; + else if (encode === 0) + encode = 1; + continue; + } + // '%' disallowed in non-percent encoded contexts (malformed) + return; + } + break; + } + } + + value += str.slice(valueStart, i); + value = convertToUTF8(value, charset, encode); + if (value === undefined) + return; + } else { + // Non-extended value + + ++i; // Skip over '=' + + // No value (malformed) + if (i === str.length) + return; + + if (str.charCodeAt(i) === 34/* '"' */) { + valueStart = ++i; + let escaping = false; + // Parse quoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (code === 92/* '\\' */) { + if (escaping) { + valueStart = i; + escaping = false; + } else { + value += str.slice(valueStart, i); + escaping = true; + } + continue; + } + if (code === 34/* '"' */) { + if (escaping) { + valueStart = i; + escaping = false; + continue; + } + value += str.slice(valueStart, i); + break; + } + if (escaping) { + valueStart = i - 1; + escaping = false; + } + // Invalid unescaped quoted character (malformed) + if (QDTEXT[code] !== 1) + return; + } + + // No end quote (malformed) + if (i === str.length) + return; + + ++i; // Skip over double quote + } else { + valueStart = i; + // Parse unquoted value + for (; i < str.length; ++i) { + const code = str.charCodeAt(i); + if (TOKEN[code] !== 1) { + // No value (malformed) + if (i === valueStart) + return; + break; + } + } + value = str.slice(valueStart, i); + } + + value = defDecoder(value, 2); + if (value === undefined) + return; + } + + name = name.toLowerCase(); + if (params[name] === undefined) + params[name] = value; + } + + return params; +} + +function getDecoder(charset) { + let lc; + while (true) { + switch (charset) { + case 'utf-8': + case 'utf8': + return decoders.utf8; + case 'latin1': + case 'ascii': // TODO: Make these a separate, strict decoder? + case 'us-ascii': + case 'iso-8859-1': + case 'iso8859-1': + case 'iso88591': + case 'iso_8859-1': + case 'windows-1252': + case 'iso_8859-1:1987': + case 'cp1252': + case 'x-cp1252': + return decoders.latin1; + case 'utf16le': + case 'utf-16le': + case 'ucs2': + case 'ucs-2': + return decoders.utf16le; + case 'base64': + return decoders.base64; + default: + if (lc === undefined) { + lc = true; + charset = charset.toLowerCase(); + continue; + } + return decoders.other.bind(charset); + } + } +} + +const decoders = { + utf8: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') { + // If `data` never had any percent-encoded bytes or never had any that + // were outside of the ASCII range, then we can safely just return the + // input since UTF-8 is ASCII compatible + if (hint < 2) + return data; + + data = Buffer.from(data, 'latin1'); + } + return data.utf8Slice(0, data.length); + }, + + latin1: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + return data; + return data.latin1Slice(0, data.length); + }, + + utf16le: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + data = Buffer.from(data, 'latin1'); + return data.ucs2Slice(0, data.length); + }, + + base64: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + data = Buffer.from(data, 'latin1'); + return data.base64Slice(0, data.length); + }, + + other: (data, hint) => { + if (data.length === 0) + return ''; + if (typeof data === 'string') + data = Buffer.from(data, 'latin1'); + try { + const decoder = new TextDecoder(this); + return decoder.decode(data); + } catch {} + }, +}; + +function convertToUTF8(data, charset, hint) { + const decode = getDecoder(charset); + if (decode) + return decode(data, hint); +} + +function basename(path) { + if (typeof path !== 'string') + return ''; + for (let i = path.length - 1; i >= 0; --i) { + switch (path.charCodeAt(i)) { + case 0x2F: // '/' + case 0x5C: // '\' + path = path.slice(i + 1); + return (path === '..' || path === '.' ? '' : path); + } + } + return (path === '..' || path === '.' ? '' : path); +} + +const TOKEN = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const QDTEXT = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +]; + +const CHARSET = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +const EXTENDED_VALUE = [ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +]; + +/* eslint-disable no-multi-spaces */ +const HEX_VALUES = [ + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, +]; +/* eslint-enable no-multi-spaces */ + +module.exports = { + basename, + convertToUTF8, + getDecoder, + parseContentType, + parseDisposition, +}; diff --git a/site/.next/standalone/node_modules/busboy/package.json b/site/.next/standalone/node_modules/busboy/package.json new file mode 100644 index 0000000..ac2577f --- /dev/null +++ b/site/.next/standalone/node_modules/busboy/package.json @@ -0,0 +1,22 @@ +{ "name": "busboy", + "version": "1.6.0", + "author": "Brian White ", + "description": "A streaming parser for HTML form data for node.js", + "main": "./lib/index.js", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "devDependencies": { + "@mscdex/eslint-config": "^1.1.0", + "eslint": "^7.32.0" + }, + "scripts": { + "test": "node test/test.js", + "lint": "eslint --cache --report-unused-disable-directives --ext=.js .eslintrc.js lib test bench", + "lint:fix": "npm run lint -- --fix" + }, + "engines": { "node": ">=10.16.0" }, + "keywords": [ "uploads", "forms", "multipart", "form-data" ], + "licenses": [ { "type": "MIT", "url": "http://github.com/mscdex/busboy/raw/master/LICENSE" } ], + "repository": { "type": "git", "url": "http://github.com/mscdex/busboy.git" } +} diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/agents.js b/site/.next/standalone/node_modules/caniuse-lite/data/agents.js new file mode 100644 index 0000000..78cf242 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/agents.js @@ -0,0 +1 @@ +module.exports={A:{A:{J:0,D:0,E:0,F:0,A:0,B:0.290244,"5C":0},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","5C","J","D","E","F","A","B","","",""],E:"IE",F:{"5C":962323200,J:998870400,D:1161129600,E:1237420800,F:1300060800,A:1346716800,B:1381968000}},B:{A:{"0":0,"1":0,"2":0.012996,"3":0,"4":0.008664,"5":0,"6":0,"7":0,"8":0.004332,"9":0.004332,C:0,K:0,L:0,G:0,M:0,N:0,O:0,P:0,H:0,Q:0,R:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,a:0.008664,b:0,c:0,d:0,e:0,f:0,g:0,h:0,i:0,j:0,k:0,l:0,m:0,n:0,o:0,p:0,q:0,r:0.034656,s:0,t:0,u:0,v:0,w:0.004332,x:0,y:0,z:0,LB:0,MB:0,NB:0.004332,OB:0.012996,PB:0.004332,QB:0.008664,RB:0.008664,SB:0.008664,TB:0.008664,UB:0.008664,VB:0.017328,WB:0.012996,XB:0.012996,YB:0.017328,ZB:0.025992,aB:0.073644,bB:0.138624,cB:2.56888,dB:2.44758},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","K","L","G","M","N","O","P","H","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","","",""],E:"Edge",F:{"0":1697155200,"1":1698969600,"2":1701993600,"3":1706227200,"4":1708732800,"5":1711152000,"6":1713398400,"7":1715990400,"8":1718841600,"9":1721865600,C:1438128000,K:1447286400,L:1470096000,G:1491868800,M:1508198400,N:1525046400,O:1542067200,P:1579046400,H:1581033600,Q:1586736000,R:1590019200,S:1594857600,T:1598486400,U:1602201600,V:1605830400,W:1611360000,X:1614816000,Y:1618358400,Z:1622073600,a:1626912000,b:1630627200,c:1632441600,d:1634774400,e:1637539200,f:1641427200,g:1643932800,h:1646265600,i:1649635200,j:1651190400,k:1653955200,l:1655942400,m:1659657600,n:1661990400,o:1664755200,p:1666915200,q:1670198400,r:1673481600,s:1675900800,t:1678665600,u:1680825600,v:1683158400,w:1685664000,x:1689897600,y:1692576000,z:1694649600,LB:1724371200,MB:1726704000,NB:1729123200,OB:1731542400,PB:1737417600,QB:1740614400,RB:1741219200,SB:1743984000,TB:1746316800,UB:1748476800,VB:1750896000,WB:1754611200,XB:1756944000,YB:1759363200,ZB:1761868800,aB:1764806400,bB:1768780800,cB:1770854400,dB:1773446400},D:{C:"ms",K:"ms",L:"ms",G:"ms",M:"ms",N:"ms",O:"ms"}},C:{A:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"6C":0,YC:0,I:0,eB:0.008664,J:0,D:0,E:0,F:0,A:0,B:0,C:0,K:0,L:0,G:0,M:0,N:0,O:0,fB:0,AB:0,BB:0,CB:0,DB:0,EB:0,FB:0,GB:0,HB:0,IB:0,JB:0,gB:0,hB:0,iB:0,jB:0,kB:0,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0,rB:0,sB:0,tB:0,uB:0,vB:0,wB:0,xB:0,yB:0,zB:0,"0B":0,"1B":0,"2B":0.012996,"3B":0,"4B":0,"5B":0,"6B":0,"7B":0,"8B":0,ZC:0,"9B":0,aC:0,AC:0,BC:0,CC:0,DC:0,EC:0,FC:0,GC:0,HC:0,IC:0,JC:0,KC:0,LC:0,MC:0,NC:0,OC:0,PC:0,QC:0.008664,P:0,H:0,Q:0,bC:0,R:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,a:0,b:0,c:0,d:0,e:0,f:0,g:0,h:0,i:0,j:0,k:0,l:0,m:0,n:0,o:0,p:0,q:0,r:0,s:0,t:0,u:0,v:0,w:0,x:0.142956,y:0,z:0,LB:0.008664,MB:0,NB:0,OB:0,PB:0,QB:0,RB:0,SB:0.004332,TB:0.008664,UB:0,VB:0.004332,WB:0.004332,XB:0.095304,YB:0,ZB:0.004332,aB:0.004332,bB:0.008664,cB:0.008664,dB:0.017328,KB:0.095304,cC:1.23895,RC:0.242592,dC:0,"7C":0,"8C":0,"9C":0,AD:0},B:"moz",C:["6C","YC","9C","AD","I","eB","J","D","E","F","A","B","C","K","L","G","M","N","O","fB","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","gB","hB","iB","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","xB","yB","zB","0B","1B","2B","3B","4B","5B","6B","7B","8B","ZC","9B","aC","AC","BC","CC","DC","EC","FC","GC","HC","IC","JC","KC","LC","MC","NC","OC","PC","QC","P","H","Q","bC","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","KB","cC","RC","dC","7C","8C"],E:"Firefox",F:{"0":1695686400,"1":1698105600,"2":1700524800,"3":1702944000,"4":1705968000,"5":1708387200,"6":1710806400,"7":1713225600,"8":1715644800,"9":1718064000,"6C":1161648000,YC:1213660800,"9C":1246320000,AD:1264032000,I:1300752000,eB:1308614400,J:1313452800,D:1317081600,E:1317081600,F:1320710400,A:1324339200,B:1327968000,C:1331596800,K:1335225600,L:1338854400,G:1342483200,M:1346112000,N:1349740800,O:1353628800,fB:1357603200,AB:1361232000,BB:1364860800,CB:1368489600,DB:1372118400,EB:1375747200,FB:1379376000,GB:1386633600,HB:1391472000,IB:1395100800,JB:1398729600,gB:1402358400,hB:1405987200,iB:1409616000,jB:1413244800,kB:1417392000,lB:1421107200,mB:1424736000,nB:1428278400,oB:1431475200,pB:1435881600,qB:1439251200,rB:1442880000,sB:1446508800,tB:1450137600,uB:1453852800,vB:1457395200,wB:1461628800,xB:1465257600,yB:1470096000,zB:1474329600,"0B":1479168000,"1B":1485216000,"2B":1488844800,"3B":1492560000,"4B":1497312000,"5B":1502150400,"6B":1506556800,"7B":1510617600,"8B":1516665600,ZC:1520985600,"9B":1525824000,aC:1529971200,AC:1536105600,BC:1540252800,CC:1544486400,DC:1548720000,EC:1552953600,FC:1558396800,GC:1562630400,HC:1567468800,IC:1571788800,JC:1575331200,KC:1578355200,LC:1581379200,MC:1583798400,NC:1586304000,OC:1588636800,PC:1591056000,QC:1593475200,P:1595894400,H:1598313600,Q:1600732800,bC:1603152000,R:1605571200,S:1607990400,T:1611619200,U:1614038400,V:1616457600,W:1618790400,X:1622505600,Y:1626134400,Z:1628553600,a:1630972800,b:1633392000,c:1635811200,d:1638835200,e:1641859200,f:1644364800,g:1646697600,h:1649116800,i:1651536000,j:1653955200,k:1656374400,l:1658793600,m:1661212800,n:1663632000,o:1666051200,p:1668470400,q:1670889600,r:1673913600,s:1676332800,t:1678752000,u:1681171200,v:1683590400,w:1686009600,x:1688428800,y:1690848000,z:1693267200,LB:1720483200,MB:1722902400,NB:1725321600,OB:1727740800,PB:1730160000,QB:1732579200,RB:1736208000,SB:1738627200,TB:1741046400,UB:1743465600,VB:1745884800,WB:1748304000,XB:1750723200,YB:1753142400,ZB:1755561600,aB:1757980800,bB:1760400000,cB:1762819200,dB:1765238400,KB:1768262400,cC:1771891200,RC:1774310400,dC:null,"7C":null,"8C":null}},D:{A:{"0":0.008664,"1":0.017328,"2":0.08664,"3":0.017328,"4":0.038988,"5":0.012996,"6":0.082308,"7":0.02166,"8":0.038988,"9":0.012996,I:0,eB:0,J:0,D:0,E:0,F:0,A:0,B:0,C:0,K:0,L:0,G:0,M:0,N:0,O:0,fB:0,AB:0,BB:0,CB:0,DB:0,EB:0,FB:0,GB:0,HB:0,IB:0,JB:0,gB:0,hB:0,iB:0,jB:0,kB:0,lB:0,mB:0,nB:0,oB:0,pB:0.034656,qB:0.034656,rB:0.034656,sB:0.034656,tB:0.034656,uB:0.034656,vB:0.034656,wB:0.034656,xB:0.034656,yB:0.038988,zB:0.04332,"0B":0.034656,"1B":0.034656,"2B":0.034656,"3B":0.034656,"4B":0.034656,"5B":0.034656,"6B":0.034656,"7B":0.034656,"8B":0.034656,ZC:0.034656,"9B":0.034656,aC:0,AC:0,BC:0,CC:0,DC:0,EC:0,FC:0,GC:0,HC:0.004332,IC:0,JC:0,KC:0,LC:0,MC:0,NC:0,OC:0,PC:0.034656,QC:0,P:0.008664,H:0.004332,Q:0,R:0,S:0,T:0,U:0.008664,V:0.008664,W:0,X:0,Y:0,Z:0.004332,a:0.004332,b:0.008664,c:0,d:0,e:0,f:0.008664,g:0.004332,h:0.004332,i:0,j:0.008664,k:0.004332,l:0.121296,m:0.06498,n:0.06498,o:0.06498,p:0.06498,q:0.069312,r:0.645468,s:0.06498,t:0.06498,u:0.142956,v:0,w:0.025992,x:0.008664,y:0.17328,z:0.069312,LB:0.056316,MB:0.012996,NB:0.060648,OB:0.229596,PB:0.034656,QB:0.147288,RB:0.047652,SB:0.051984,TB:0.04332,UB:0.047652,VB:0.212268,WB:0.34656,XB:0.073644,YB:0.082308,ZB:0.207936,aB:0.320568,bB:0.940044,cB:9.30947,dB:6.96152,KB:0.025992,cC:0.004332,RC:0,dC:0},B:"webkit",C:["","","","","","","","I","eB","J","D","E","F","A","B","C","K","L","G","M","N","O","fB","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","gB","hB","iB","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","xB","yB","zB","0B","1B","2B","3B","4B","5B","6B","7B","8B","ZC","9B","aC","AC","BC","CC","DC","EC","FC","GC","HC","IC","JC","KC","LC","MC","NC","OC","PC","QC","P","H","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","KB","cC","RC","dC"],E:"Chrome",F:{"0":1696896000,"1":1698710400,"2":1701993600,"3":1705968000,"4":1708387200,"5":1710806400,"6":1713225600,"7":1715644800,"8":1718064000,"9":1721174400,I:1264377600,eB:1274745600,J:1283385600,D:1287619200,E:1291248000,F:1296777600,A:1299542400,B:1303862400,C:1307404800,K:1312243200,L:1316131200,G:1316131200,M:1319500800,N:1323734400,O:1328659200,fB:1332892800,AB:1337040000,BB:1340668800,CB:1343692800,DB:1348531200,EB:1352246400,FB:1357862400,GB:1361404800,HB:1364428800,IB:1369094400,JB:1374105600,gB:1376956800,hB:1384214400,iB:1389657600,jB:1392940800,kB:1397001600,lB:1400544000,mB:1405468800,nB:1409011200,oB:1412640000,pB:1416268800,qB:1421798400,rB:1425513600,sB:1429401600,tB:1432080000,uB:1437523200,vB:1441152000,wB:1444780800,xB:1449014400,yB:1453248000,zB:1456963200,"0B":1460592000,"1B":1464134400,"2B":1469059200,"3B":1472601600,"4B":1476230400,"5B":1480550400,"6B":1485302400,"7B":1489017600,"8B":1492560000,ZC:1496707200,"9B":1500940800,aC:1504569600,AC:1508198400,BC:1512518400,CC:1516752000,DC:1520294400,EC:1523923200,FC:1527552000,GC:1532390400,HC:1536019200,IC:1539648000,JC:1543968000,KC:1548720000,LC:1552348800,MC:1555977600,NC:1559606400,OC:1564444800,PC:1568073600,QC:1571702400,P:1575936000,H:1580860800,Q:1586304000,R:1589846400,S:1594684800,T:1598313600,U:1601942400,V:1605571200,W:1611014400,X:1614556800,Y:1618272000,Z:1621987200,a:1626739200,b:1630368000,c:1632268800,d:1634601600,e:1637020800,f:1641340800,g:1643673600,h:1646092800,i:1648512000,j:1650931200,k:1653350400,l:1655769600,m:1659398400,n:1661817600,o:1664236800,p:1666656000,q:1669680000,r:1673308800,s:1675728000,t:1678147200,u:1680566400,v:1682985600,w:1685404800,x:1689724800,y:1692057600,z:1694476800,LB:1724112000,MB:1726531200,NB:1728950400,OB:1731369600,PB:1736812800,QB:1738627200,RB:1741046400,SB:1743465600,TB:1745884800,UB:1748304000,VB:1750723200,WB:1754352000,XB:1756771200,YB:1759190400,ZB:1761609600,aB:1764633600,bB:1768262400,cB:1770681600,dB:1773100800,KB:1775520000,cC:null,RC:null,dC:null}},E:{A:{I:0,eB:0,J:0,D:0,E:0,F:0,A:0,B:0,C:0,K:0,L:0.008664,G:0,BD:0,eC:0,CD:0,DD:0,ED:0,FD:0,fC:0,SC:0,TC:0,GD:0.02166,HD:0.02166,ID:0,gC:0,hC:0.004332,UC:0.004332,JD:0.090972,VC:0.004332,iC:0.012996,jC:0.008664,kC:0.017328,lC:0.012996,mC:0.012996,KD:0.155952,WC:0.004332,nC:0.112632,oC:0.008664,pC:0.012996,qC:0.030324,rC:0.04332,LD:0.177612,XC:0.008664,sC:0.02166,tC:0.008664,uC:0.04332,vC:0.02166,wC:0.463524,xC:0.030324,yC:0.04332,zC:0.255588,"0C":1.30393,"1C":0.047652,"2C":0,MD:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BD","eC","I","eB","CD","J","DD","D","ED","E","F","FD","A","fC","B","SC","C","TC","K","GD","L","HD","G","ID","gC","hC","UC","JD","VC","iC","jC","kC","lC","mC","KD","WC","nC","oC","pC","qC","rC","LD","XC","sC","tC","uC","vC","wC","xC","yC","zC","0C","1C","2C","MD",""],E:"Safari",F:{BD:1205798400,eC:1226534400,I:1244419200,eB:1275868800,CD:1311120000,J:1343174400,DD:1382400000,D:1382400000,ED:1410998400,E:1413417600,F:1443657600,FD:1458518400,A:1474329600,fC:1490572800,B:1505779200,SC:1522281600,C:1537142400,TC:1553472000,K:1568851200,GD:1585008000,L:1600214400,HD:1619395200,G:1632096000,ID:1635292800,gC:1639353600,hC:1647216000,UC:1652745600,JD:1658275200,VC:1662940800,iC:1666569600,jC:1670889600,kC:1674432000,lC:1679875200,mC:1684368000,KD:1690156800,WC:1695686400,nC:1698192000,oC:1702252800,pC:1705881600,qC:1709596800,rC:1715558400,LD:1722211200,XC:1726444800,sC:1730073600,tC:1733875200,uC:1737936000,vC:1743379200,wC:1747008000,xC:1757894400,yC:1762128000,zC:1762041600,"0C":1770854400,"1C":1774310400,"2C":null,MD:null}},F:{A:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0.012996,"9":0.441864,F:0,B:0,C:0,G:0,M:0,N:0,O:0,fB:0,AB:0,BB:0,CB:0,DB:0,EB:0,FB:0,GB:0,HB:0,IB:0,JB:0,gB:0,hB:0,iB:0,jB:0,kB:0,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0,rB:0,sB:0,tB:0,uB:0,vB:0,wB:0,xB:0,yB:0,zB:0,"0B":0,"1B":0,"2B":0,"3B":0,"4B":0,"5B":0,"6B":0,"7B":0,"8B":0,"9B":0,AC:0,BC:0,CC:0,DC:0,EC:0,FC:0,GC:0,HC:0,IC:0,JC:0,KC:0,LC:0,MC:0,NC:0,OC:0,PC:0,QC:0,P:0,H:0,Q:0,bC:0,R:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,a:0,b:0,c:0.004332,d:0.073644,e:0.06498,f:0,g:0,h:0,i:0,j:0,k:0,l:0,m:0,n:0,o:0,p:0,q:0,r:0,s:0,t:0,u:0,v:0,w:0,x:0,y:0,z:0,ND:0,OD:0,PD:0,QD:0,SC:0,"3C":0,RD:0,TC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","F","ND","OD","PD","QD","B","SC","3C","RD","C","TC","G","M","N","O","fB","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","gB","hB","iB","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","xB","yB","zB","0B","1B","2B","3B","4B","5B","6B","7B","8B","9B","AC","BC","CC","DC","EC","FC","GC","HC","IC","JC","KC","LC","MC","NC","OC","PC","QC","P","H","Q","bC","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","","",""],E:"Opera",F:{"0":1744675200,"1":1747094400,"2":1751414400,"3":1756339200,"4":1757548800,"5":1761609600,"6":1762992000,"7":1764806400,"8":1769990400,"9":1772064000,F:1150761600,ND:1223424000,OD:1251763200,PD:1267488000,QD:1277942400,B:1292457600,SC:1302566400,"3C":1309219200,RD:1323129600,C:1323129600,TC:1352073600,G:1372723200,M:1377561600,N:1381104000,O:1386288000,fB:1390867200,AB:1393891200,BB:1399334400,CB:1401753600,DB:1405987200,EB:1409616000,FB:1413331200,GB:1417132800,HB:1422316800,IB:1425945600,JB:1430179200,gB:1433808000,hB:1438646400,iB:1442448000,jB:1445904000,kB:1449100800,lB:1454371200,mB:1457308800,nB:1462320000,oB:1465344000,pB:1470096000,qB:1474329600,rB:1477267200,sB:1481587200,tB:1486425600,uB:1490054400,vB:1494374400,wB:1498003200,xB:1502236800,yB:1506470400,zB:1510099200,"0B":1515024000,"1B":1517961600,"2B":1521676800,"3B":1525910400,"4B":1530144000,"5B":1534982400,"6B":1537833600,"7B":1543363200,"8B":1548201600,"9B":1554768000,AC:1561593600,BC:1566259200,CC:1570406400,DC:1573689600,EC:1578441600,FC:1583971200,GC:1587513600,HC:1592956800,IC:1595894400,JC:1600128000,KC:1603238400,LC:1613520000,MC:1612224000,NC:1616544000,OC:1619568000,PC:1623715200,QC:1627948800,P:1631577600,H:1633392000,Q:1635984000,bC:1638403200,R:1642550400,S:1644969600,T:1647993600,U:1650412800,V:1652745600,W:1654646400,X:1657152000,Y:1660780800,Z:1663113600,a:1668816000,b:1668643200,c:1671062400,d:1675209600,e:1677024000,f:1679529600,g:1681948800,h:1684195200,i:1687219200,j:1690329600,k:1692748800,l:1696204800,m:1699920000,n:1699920000,o:1702944000,p:1707264000,q:1710115200,r:1711497600,s:1716336000,t:1719273600,u:1721088000,v:1724284800,w:1727222400,x:1732665600,y:1736294400,z:1739404800},D:{F:"o",B:"o",C:"o",ND:"o",OD:"o",PD:"o",QD:"o",SC:"o","3C":"o",RD:"o",TC:"o"}},G:{A:{E:0,eC:0,SD:0,"4C":0.00147255,TD:0,UD:0,VD:0.00294509,WD:0,XD:0,YD:0,ZD:0,aD:0.00736273,bD:0.185541,cD:0.00441764,dD:0,eD:0.0574293,fD:0,gD:0.0220882,hD:0.00294509,iD:0.00736273,jD:0.0132529,kD:0.0132529,lD:0.0191431,gC:0.0117804,hC:0.0147255,UC:0.016198,mD:0.260641,VC:0.0265058,iC:0.0515391,jC:0.0294509,kC:0.0530117,lC:0.0117804,mC:0.0220882,nD:0.362246,WC:0.016198,nC:0.0265058,oC:0.0235607,pC:0.032396,qC:0.0530117,rC:0.100133,oD:0.257696,XC:0.0559568,sC:0.114859,tC:0.0603744,uC:0.192904,vC:0.0927704,wC:2.95098,xC:0.184068,yC:0.279784,zC:1.64631,"0C":7.15216,"1C":0.268003,"2C":0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","eC","SD","4C","TD","UD","VD","E","WD","XD","YD","ZD","aD","bD","cD","dD","eD","fD","gD","hD","iD","jD","kD","lD","gC","hC","UC","mD","VC","iC","jC","kC","lC","mC","nD","WC","nC","oC","pC","qC","rC","oD","XC","sC","tC","uC","vC","wC","xC","yC","zC","0C","1C","2C","",""],E:"Safari on iOS",F:{eC:1270252800,SD:1283904000,"4C":1299628800,TD:1331078400,UD:1359331200,VD:1394409600,E:1410912000,WD:1413763200,XD:1442361600,YD:1458518400,ZD:1473724800,aD:1490572800,bD:1505779200,cD:1522281600,dD:1537142400,eD:1553472000,fD:1568851200,gD:1572220800,hD:1580169600,iD:1585008000,jD:1600214400,kD:1619395200,lD:1632096000,gC:1639353600,hC:1647216000,UC:1652659200,mD:1658275200,VC:1662940800,iC:1666569600,jC:1670889600,kC:1674432000,lC:1679875200,mC:1684368000,nD:1690156800,WC:1694995200,nC:1698192000,oC:1702252800,pC:1705881600,qC:1709596800,rC:1715558400,oD:1722211200,XC:1726444800,sC:1730073600,tC:1733875200,uC:1737936000,vC:1743379200,wC:1747008000,xC:1757894400,yC:1762128000,zC:1765497600,"0C":1770854400,"1C":1774310400,"2C":null}},H:{A:{pD:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","pD","","",""],E:"Opera Mini",F:{pD:1426464000}},I:{A:{YC:0,I:0,KB:0.0509661,qD:0,rD:0,sD:0,tD:0,"4C":0,uD:0,vD:0.000025506},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","qD","rD","sD","YC","I","tD","4C","uD","vD","KB","","",""],E:"Android Browser",F:{qD:1256515200,rD:1274313600,sD:1291593600,YC:1298332800,I:1318896000,tD:1341792000,"4C":1374624000,uD:1386547200,vD:1401667200,KB:1775606400}},J:{A:{D:0,A:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","A","","",""],E:"Blackberry Browser",F:{D:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,H:0.895544,SC:0,"3C":0,TC:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","SC","3C","C","TC","H","","",""],E:"Opera Mobile",F:{A:1287100800,B:1300752000,SC:1314835200,"3C":1318291200,C:1330300800,TC:1349740800,H:1709769600},D:{H:"webkit"}},L:{A:{KB:44.7569},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","KB","","",""],E:"Chrome for Android",F:{KB:1775606400}},M:{A:{RC:0.351416},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","RC","","",""],E:"Firefox for Android",F:{RC:1774310400}},N:{A:{A:0,B:0},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{UC:0.640484},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","UC","","",""],E:"UC Browser for Android",F:{UC:1710115200},D:{UC:"webkit"}},P:{A:{I:0,AB:0,BB:0.0107893,CB:0,DB:0,EB:0.0107893,FB:0.0107893,GB:0.032368,HB:0.032368,IB:0.0863147,JB:1.94208,wD:0,xD:0,yD:0,zD:0,"0D":0,fC:0,"1D":0,"2D":0,"3D":0,"4D":0,"5D":0,VC:0,WC:0,XC:0,"6D":0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","I","wD","xD","yD","zD","0D","fC","1D","2D","3D","4D","5D","VC","WC","XC","6D","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","","",""],E:"Samsung Internet",F:{I:1461024000,wD:1481846400,xD:1509408000,yD:1528329600,zD:1546128000,"0D":1554163200,fC:1567900800,"1D":1582588800,"2D":1593475200,"3D":1605657600,"4D":1618531200,"5D":1629072000,VC:1640736000,WC:1651708800,XC:1659657600,"6D":1667260800,AB:1677369600,BB:1684454400,CB:1689292800,DB:1697587200,EB:1711497600,FB:1715126400,GB:1717718400,HB:1725667200,IB:1746057600,JB:1761264000}},Q:{A:{"7D":0.11336},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","7D","","",""],E:"QQ Browser",F:{"7D":1710288000}},R:{A:{"8D":0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","8D","","",""],E:"Baidu Browser",F:{"8D":1710201600}},S:{A:{"9D":0.005668,AE:0},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","9D","AE","","",""],E:"KaiOS Browser",F:{"9D":1527811200,AE:1631664000}}}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/browserVersions.js b/site/.next/standalone/node_modules/caniuse-lite/data/browserVersions.js new file mode 100644 index 0000000..ef90459 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/browserVersions.js @@ -0,0 +1 @@ +module.exports={"0":"118","1":"119","2":"120","3":"121","4":"122","5":"123","6":"124","7":"125","8":"126","9":"127",A:"10",B:"11",C:"12",D:"7",E:"8",F:"9",G:"15",H:"80",I:"4",J:"6",K:"13",L:"14",M:"16",N:"17",O:"18",P:"79",Q:"81",R:"83",S:"84",T:"85",U:"86",V:"87",W:"88",X:"89",Y:"90",Z:"91",a:"92",b:"93",c:"94",d:"95",e:"96",f:"97",g:"98",h:"99",i:"100",j:"101",k:"102",l:"103",m:"104",n:"105",o:"106",p:"107",q:"108",r:"109",s:"110",t:"111",u:"112",v:"113",w:"114",x:"115",y:"116",z:"117",AB:"20",BB:"21",CB:"22",DB:"23",EB:"24",FB:"25",GB:"26",HB:"27",IB:"28",JB:"29",KB:"147",LB:"128",MB:"129",NB:"130",OB:"131",PB:"132",QB:"133",RB:"134",SB:"135",TB:"136",UB:"137",VB:"138",WB:"139",XB:"140",YB:"141",ZB:"142",aB:"143",bB:"144",cB:"145",dB:"146",eB:"5",fB:"19",gB:"30",hB:"31",iB:"32",jB:"33",kB:"34",lB:"35",mB:"36",nB:"37",oB:"38",pB:"39",qB:"40",rB:"41",sB:"42",tB:"43",uB:"44",vB:"45",wB:"46",xB:"47",yB:"48",zB:"49","0B":"50","1B":"51","2B":"52","3B":"53","4B":"54","5B":"55","6B":"56","7B":"57","8B":"58","9B":"60",AC:"62",BC:"63",CC:"64",DC:"65",EC:"66",FC:"67",GC:"68",HC:"69",IC:"70",JC:"71",KC:"72",LC:"73",MC:"74",NC:"75",OC:"76",PC:"77",QC:"78",RC:"149",SC:"11.1",TC:"12.1",UC:"15.5",VC:"16.0",WC:"17.0",XC:"18.0",YC:"3",ZC:"59",aC:"61",bC:"82",cC:"148",dC:"150",eC:"3.2",fC:"10.1",gC:"15.2-15.3",hC:"15.4",iC:"16.1",jC:"16.2",kC:"16.3",lC:"16.4",mC:"16.5",nC:"17.1",oC:"17.2",pC:"17.3",qC:"17.4",rC:"17.5",sC:"18.1",tC:"18.2",uC:"18.3",vC:"18.4",wC:"18.5-18.7",xC:"26.0",yC:"26.1",zC:"26.2","0C":"26.3","1C":"26.4","2C":"26.5","3C":"11.5","4C":"4.2-4.3","5C":"5.5","6C":"2","7C":"151","8C":"152","9C":"3.5",AD:"3.6",BD:"3.1",CD:"5.1",DD:"6.1",ED:"7.1",FD:"9.1",GD:"13.1",HD:"14.1",ID:"15.1",JD:"15.6",KD:"16.6",LD:"17.6",MD:"TP",ND:"9.5-9.6",OD:"10.0-10.1",PD:"10.5",QD:"10.6",RD:"11.6",SD:"4.0-4.1",TD:"5.0-5.1",UD:"6.0-6.1",VD:"7.0-7.1",WD:"8.1-8.4",XD:"9.0-9.2",YD:"9.3",ZD:"10.0-10.2",aD:"10.3",bD:"11.0-11.2",cD:"11.3-11.4",dD:"12.0-12.1",eD:"12.2-12.5",fD:"13.0-13.1",gD:"13.2",hD:"13.3",iD:"13.4-13.7",jD:"14.0-14.4",kD:"14.5-14.8",lD:"15.0-15.1",mD:"15.6-15.8",nD:"16.6-16.7",oD:"17.6-17.7",pD:"all",qD:"2.1",rD:"2.2",sD:"2.3",tD:"4.1",uD:"4.4",vD:"4.4.3-4.4.4",wD:"5.0-5.4",xD:"6.2-6.4",yD:"7.2-7.4",zD:"8.2","0D":"9.2","1D":"11.1-11.2","2D":"12.0","3D":"13.0","4D":"14.0","5D":"15.0","6D":"19.0","7D":"14.9","8D":"13.52","9D":"2.5",AE:"3.0-3.1"}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/browsers.js b/site/.next/standalone/node_modules/caniuse-lite/data/browsers.js new file mode 100644 index 0000000..04fbb50 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/browsers.js @@ -0,0 +1 @@ +module.exports={A:"ie",B:"edge",C:"firefox",D:"chrome",E:"safari",F:"opera",G:"ios_saf",H:"op_mini",I:"android",J:"bb",K:"op_mob",L:"and_chr",M:"and_ff",N:"ie_mob",O:"and_uc",P:"samsung",Q:"and_qq",R:"baidu",S:"kaios"}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features.js b/site/.next/standalone/node_modules/caniuse-lite/data/features.js new file mode 100644 index 0000000..2a3d561 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features.js @@ -0,0 +1 @@ +module.exports={"aac":require("./features/aac"),"abortcontroller":require("./features/abortcontroller"),"ac3-ec3":require("./features/ac3-ec3"),"accelerometer":require("./features/accelerometer"),"addeventlistener":require("./features/addeventlistener"),"alternate-stylesheet":require("./features/alternate-stylesheet"),"ambient-light":require("./features/ambient-light"),"apng":require("./features/apng"),"array-find-index":require("./features/array-find-index"),"array-find":require("./features/array-find"),"array-flat":require("./features/array-flat"),"array-includes":require("./features/array-includes"),"arrow-functions":require("./features/arrow-functions"),"asmjs":require("./features/asmjs"),"async-clipboard":require("./features/async-clipboard"),"async-functions":require("./features/async-functions"),"atob-btoa":require("./features/atob-btoa"),"audio-api":require("./features/audio-api"),"audio":require("./features/audio"),"audiotracks":require("./features/audiotracks"),"autofocus":require("./features/autofocus"),"auxclick":require("./features/auxclick"),"av1":require("./features/av1"),"avif":require("./features/avif"),"background-attachment":require("./features/background-attachment"),"background-clip-text":require("./features/background-clip-text"),"background-img-opts":require("./features/background-img-opts"),"background-position-x-y":require("./features/background-position-x-y"),"background-repeat-round-space":require("./features/background-repeat-round-space"),"background-sync":require("./features/background-sync"),"battery-status":require("./features/battery-status"),"beacon":require("./features/beacon"),"beforeafterprint":require("./features/beforeafterprint"),"bigint":require("./features/bigint"),"blobbuilder":require("./features/blobbuilder"),"bloburls":require("./features/bloburls"),"border-image":require("./features/border-image"),"border-radius":require("./features/border-radius"),"broadcastchannel":require("./features/broadcastchannel"),"brotli":require("./features/brotli"),"calc":require("./features/calc"),"canvas-blending":require("./features/canvas-blending"),"canvas-text":require("./features/canvas-text"),"canvas":require("./features/canvas"),"ch-unit":require("./features/ch-unit"),"chacha20-poly1305":require("./features/chacha20-poly1305"),"channel-messaging":require("./features/channel-messaging"),"childnode-remove":require("./features/childnode-remove"),"classlist":require("./features/classlist"),"client-hints-dpr-width-viewport":require("./features/client-hints-dpr-width-viewport"),"clipboard":require("./features/clipboard"),"colr-v1":require("./features/colr-v1"),"colr":require("./features/colr"),"comparedocumentposition":require("./features/comparedocumentposition"),"console-basic":require("./features/console-basic"),"console-time":require("./features/console-time"),"const":require("./features/const"),"constraint-validation":require("./features/constraint-validation"),"contenteditable":require("./features/contenteditable"),"contentsecuritypolicy":require("./features/contentsecuritypolicy"),"contentsecuritypolicy2":require("./features/contentsecuritypolicy2"),"cookie-store-api":require("./features/cookie-store-api"),"cors":require("./features/cors"),"createimagebitmap":require("./features/createimagebitmap"),"credential-management":require("./features/credential-management"),"cross-document-view-transitions":require("./features/cross-document-view-transitions"),"cryptography":require("./features/cryptography"),"css-all":require("./features/css-all"),"css-anchor-positioning":require("./features/css-anchor-positioning"),"css-animation":require("./features/css-animation"),"css-any-link":require("./features/css-any-link"),"css-appearance":require("./features/css-appearance"),"css-at-counter-style":require("./features/css-at-counter-style"),"css-autofill":require("./features/css-autofill"),"css-backdrop-filter":require("./features/css-backdrop-filter"),"css-background-offsets":require("./features/css-background-offsets"),"css-backgroundblendmode":require("./features/css-backgroundblendmode"),"css-boxdecorationbreak":require("./features/css-boxdecorationbreak"),"css-boxshadow":require("./features/css-boxshadow"),"css-canvas":require("./features/css-canvas"),"css-caret-color":require("./features/css-caret-color"),"css-cascade-layers":require("./features/css-cascade-layers"),"css-cascade-scope":require("./features/css-cascade-scope"),"css-case-insensitive":require("./features/css-case-insensitive"),"css-clip-path":require("./features/css-clip-path"),"css-color-adjust":require("./features/css-color-adjust"),"css-color-function":require("./features/css-color-function"),"css-conic-gradients":require("./features/css-conic-gradients"),"css-container-queries-style":require("./features/css-container-queries-style"),"css-container-queries":require("./features/css-container-queries"),"css-container-query-units":require("./features/css-container-query-units"),"css-containment":require("./features/css-containment"),"css-content-visibility":require("./features/css-content-visibility"),"css-counters":require("./features/css-counters"),"css-crisp-edges":require("./features/css-crisp-edges"),"css-cross-fade":require("./features/css-cross-fade"),"css-default-pseudo":require("./features/css-default-pseudo"),"css-descendant-gtgt":require("./features/css-descendant-gtgt"),"css-deviceadaptation":require("./features/css-deviceadaptation"),"css-dir-pseudo":require("./features/css-dir-pseudo"),"css-display-contents":require("./features/css-display-contents"),"css-element-function":require("./features/css-element-function"),"css-env-function":require("./features/css-env-function"),"css-exclusions":require("./features/css-exclusions"),"css-featurequeries":require("./features/css-featurequeries"),"css-file-selector-button":require("./features/css-file-selector-button"),"css-filter-function":require("./features/css-filter-function"),"css-filters":require("./features/css-filters"),"css-first-letter":require("./features/css-first-letter"),"css-first-line":require("./features/css-first-line"),"css-fixed":require("./features/css-fixed"),"css-focus-visible":require("./features/css-focus-visible"),"css-focus-within":require("./features/css-focus-within"),"css-font-palette":require("./features/css-font-palette"),"css-font-rendering-controls":require("./features/css-font-rendering-controls"),"css-font-stretch":require("./features/css-font-stretch"),"css-gencontent":require("./features/css-gencontent"),"css-gradients":require("./features/css-gradients"),"css-grid-animation":require("./features/css-grid-animation"),"css-grid-lanes":require("./features/css-grid-lanes"),"css-grid":require("./features/css-grid"),"css-hanging-punctuation":require("./features/css-hanging-punctuation"),"css-has":require("./features/css-has"),"css-hyphens":require("./features/css-hyphens"),"css-if":require("./features/css-if"),"css-image-orientation":require("./features/css-image-orientation"),"css-image-set":require("./features/css-image-set"),"css-in-out-of-range":require("./features/css-in-out-of-range"),"css-indeterminate-pseudo":require("./features/css-indeterminate-pseudo"),"css-initial-letter":require("./features/css-initial-letter"),"css-initial-value":require("./features/css-initial-value"),"css-lch-lab":require("./features/css-lch-lab"),"css-letter-spacing":require("./features/css-letter-spacing"),"css-line-clamp":require("./features/css-line-clamp"),"css-logical-props":require("./features/css-logical-props"),"css-marker-pseudo":require("./features/css-marker-pseudo"),"css-masks":require("./features/css-masks"),"css-matches-pseudo":require("./features/css-matches-pseudo"),"css-math-functions":require("./features/css-math-functions"),"css-media-interaction":require("./features/css-media-interaction"),"css-media-range-syntax":require("./features/css-media-range-syntax"),"css-media-resolution":require("./features/css-media-resolution"),"css-media-scripting":require("./features/css-media-scripting"),"css-mediaqueries":require("./features/css-mediaqueries"),"css-mixblendmode":require("./features/css-mixblendmode"),"css-module-scripts":require("./features/css-module-scripts"),"css-motion-paths":require("./features/css-motion-paths"),"css-namespaces":require("./features/css-namespaces"),"css-nesting":require("./features/css-nesting"),"css-not-sel-list":require("./features/css-not-sel-list"),"css-nth-child-of":require("./features/css-nth-child-of"),"css-opacity":require("./features/css-opacity"),"css-optional-pseudo":require("./features/css-optional-pseudo"),"css-overflow-anchor":require("./features/css-overflow-anchor"),"css-overflow-overlay":require("./features/css-overflow-overlay"),"css-overflow":require("./features/css-overflow"),"css-overscroll-behavior":require("./features/css-overscroll-behavior"),"css-page-break":require("./features/css-page-break"),"css-paged-media":require("./features/css-paged-media"),"css-paint-api":require("./features/css-paint-api"),"css-placeholder-shown":require("./features/css-placeholder-shown"),"css-placeholder":require("./features/css-placeholder"),"css-print-color-adjust":require("./features/css-print-color-adjust"),"css-read-only-write":require("./features/css-read-only-write"),"css-rebeccapurple":require("./features/css-rebeccapurple"),"css-reflections":require("./features/css-reflections"),"css-regions":require("./features/css-regions"),"css-relative-colors":require("./features/css-relative-colors"),"css-repeating-gradients":require("./features/css-repeating-gradients"),"css-resize":require("./features/css-resize"),"css-revert-value":require("./features/css-revert-value"),"css-rrggbbaa":require("./features/css-rrggbbaa"),"css-scroll-behavior":require("./features/css-scroll-behavior"),"css-scrollbar":require("./features/css-scrollbar"),"css-sel2":require("./features/css-sel2"),"css-sel3":require("./features/css-sel3"),"css-selection":require("./features/css-selection"),"css-shapes":require("./features/css-shapes"),"css-snappoints":require("./features/css-snappoints"),"css-sticky":require("./features/css-sticky"),"css-subgrid":require("./features/css-subgrid"),"css-supports-api":require("./features/css-supports-api"),"css-table":require("./features/css-table"),"css-text-align-last":require("./features/css-text-align-last"),"css-text-box-trim":require("./features/css-text-box-trim"),"css-text-indent":require("./features/css-text-indent"),"css-text-justify":require("./features/css-text-justify"),"css-text-orientation":require("./features/css-text-orientation"),"css-text-spacing":require("./features/css-text-spacing"),"css-text-wrap-balance":require("./features/css-text-wrap-balance"),"css-textshadow":require("./features/css-textshadow"),"css-touch-action":require("./features/css-touch-action"),"css-transitions":require("./features/css-transitions"),"css-unicode-bidi":require("./features/css-unicode-bidi"),"css-unset-value":require("./features/css-unset-value"),"css-variables":require("./features/css-variables"),"css-when-else":require("./features/css-when-else"),"css-widows-orphans":require("./features/css-widows-orphans"),"css-width-stretch":require("./features/css-width-stretch"),"css-writing-mode":require("./features/css-writing-mode"),"css-zoom":require("./features/css-zoom"),"css3-attr":require("./features/css3-attr"),"css3-boxsizing":require("./features/css3-boxsizing"),"css3-colors":require("./features/css3-colors"),"css3-cursors-grab":require("./features/css3-cursors-grab"),"css3-cursors-newer":require("./features/css3-cursors-newer"),"css3-cursors":require("./features/css3-cursors"),"css3-tabsize":require("./features/css3-tabsize"),"currentcolor":require("./features/currentcolor"),"custom-elements":require("./features/custom-elements"),"custom-elementsv1":require("./features/custom-elementsv1"),"customevent":require("./features/customevent"),"customizable-select":require("./features/customizable-select"),"datalist":require("./features/datalist"),"dataset":require("./features/dataset"),"datauri":require("./features/datauri"),"date-tolocaledatestring":require("./features/date-tolocaledatestring"),"declarative-shadow-dom":require("./features/declarative-shadow-dom"),"decorators":require("./features/decorators"),"details":require("./features/details"),"deviceorientation":require("./features/deviceorientation"),"devicepixelratio":require("./features/devicepixelratio"),"dialog":require("./features/dialog"),"dispatchevent":require("./features/dispatchevent"),"dnssec":require("./features/dnssec"),"do-not-track":require("./features/do-not-track"),"document-currentscript":require("./features/document-currentscript"),"document-evaluate-xpath":require("./features/document-evaluate-xpath"),"document-execcommand":require("./features/document-execcommand"),"document-policy":require("./features/document-policy"),"document-scrollingelement":require("./features/document-scrollingelement"),"documenthead":require("./features/documenthead"),"dom-manip-convenience":require("./features/dom-manip-convenience"),"dom-range":require("./features/dom-range"),"domcontentloaded":require("./features/domcontentloaded"),"dommatrix":require("./features/dommatrix"),"download":require("./features/download"),"dragndrop":require("./features/dragndrop"),"element-closest":require("./features/element-closest"),"element-from-point":require("./features/element-from-point"),"element-scroll-methods":require("./features/element-scroll-methods"),"eme":require("./features/eme"),"eot":require("./features/eot"),"es5":require("./features/es5"),"es6-class":require("./features/es6-class"),"es6-generators":require("./features/es6-generators"),"es6-module-dynamic-import":require("./features/es6-module-dynamic-import"),"es6-module":require("./features/es6-module"),"es6-number":require("./features/es6-number"),"es6-string-includes":require("./features/es6-string-includes"),"es6":require("./features/es6"),"eventsource":require("./features/eventsource"),"extended-system-fonts":require("./features/extended-system-fonts"),"feature-policy":require("./features/feature-policy"),"fetch":require("./features/fetch"),"fieldset-disabled":require("./features/fieldset-disabled"),"fileapi":require("./features/fileapi"),"filereader":require("./features/filereader"),"filereadersync":require("./features/filereadersync"),"filesystem":require("./features/filesystem"),"flac":require("./features/flac"),"flexbox-gap":require("./features/flexbox-gap"),"flexbox":require("./features/flexbox"),"flow-root":require("./features/flow-root"),"focusin-focusout-events":require("./features/focusin-focusout-events"),"font-family-system-ui":require("./features/font-family-system-ui"),"font-feature":require("./features/font-feature"),"font-kerning":require("./features/font-kerning"),"font-loading":require("./features/font-loading"),"font-size-adjust":require("./features/font-size-adjust"),"font-smooth":require("./features/font-smooth"),"font-unicode-range":require("./features/font-unicode-range"),"font-variant-alternates":require("./features/font-variant-alternates"),"font-variant-numeric":require("./features/font-variant-numeric"),"fontface":require("./features/fontface"),"form-attribute":require("./features/form-attribute"),"form-submit-attributes":require("./features/form-submit-attributes"),"form-validation":require("./features/form-validation"),"forms":require("./features/forms"),"fullscreen":require("./features/fullscreen"),"gamepad":require("./features/gamepad"),"geolocation":require("./features/geolocation"),"getboundingclientrect":require("./features/getboundingclientrect"),"getcomputedstyle":require("./features/getcomputedstyle"),"getelementsbyclassname":require("./features/getelementsbyclassname"),"getrandomvalues":require("./features/getrandomvalues"),"gyroscope":require("./features/gyroscope"),"hardwareconcurrency":require("./features/hardwareconcurrency"),"hashchange":require("./features/hashchange"),"heif":require("./features/heif"),"hevc":require("./features/hevc"),"hidden":require("./features/hidden"),"high-resolution-time":require("./features/high-resolution-time"),"history":require("./features/history"),"html-media-capture":require("./features/html-media-capture"),"html5semantic":require("./features/html5semantic"),"http-live-streaming":require("./features/http-live-streaming"),"http2":require("./features/http2"),"http3":require("./features/http3"),"iframe-sandbox":require("./features/iframe-sandbox"),"iframe-seamless":require("./features/iframe-seamless"),"iframe-srcdoc":require("./features/iframe-srcdoc"),"imagecapture":require("./features/imagecapture"),"ime":require("./features/ime"),"img-naturalwidth-naturalheight":require("./features/img-naturalwidth-naturalheight"),"import-maps":require("./features/import-maps"),"imports":require("./features/imports"),"indeterminate-checkbox":require("./features/indeterminate-checkbox"),"indexeddb":require("./features/indexeddb"),"indexeddb2":require("./features/indexeddb2"),"inline-block":require("./features/inline-block"),"innertext":require("./features/innertext"),"input-autocomplete-onoff":require("./features/input-autocomplete-onoff"),"input-color":require("./features/input-color"),"input-datetime":require("./features/input-datetime"),"input-email-tel-url":require("./features/input-email-tel-url"),"input-event":require("./features/input-event"),"input-file-accept":require("./features/input-file-accept"),"input-file-directory":require("./features/input-file-directory"),"input-file-multiple":require("./features/input-file-multiple"),"input-inputmode":require("./features/input-inputmode"),"input-minlength":require("./features/input-minlength"),"input-number":require("./features/input-number"),"input-pattern":require("./features/input-pattern"),"input-placeholder":require("./features/input-placeholder"),"input-range":require("./features/input-range"),"input-search":require("./features/input-search"),"input-selection":require("./features/input-selection"),"insert-adjacent":require("./features/insert-adjacent"),"insertadjacenthtml":require("./features/insertadjacenthtml"),"internationalization":require("./features/internationalization"),"intersectionobserver-v2":require("./features/intersectionobserver-v2"),"intersectionobserver":require("./features/intersectionobserver"),"intl-pluralrules":require("./features/intl-pluralrules"),"intrinsic-width":require("./features/intrinsic-width"),"jpeg2000":require("./features/jpeg2000"),"jpegxl":require("./features/jpegxl"),"jpegxr":require("./features/jpegxr"),"js-regexp-lookbehind":require("./features/js-regexp-lookbehind"),"json":require("./features/json"),"justify-content-space-evenly":require("./features/justify-content-space-evenly"),"kerning-pairs-ligatures":require("./features/kerning-pairs-ligatures"),"keyboardevent-charcode":require("./features/keyboardevent-charcode"),"keyboardevent-code":require("./features/keyboardevent-code"),"keyboardevent-getmodifierstate":require("./features/keyboardevent-getmodifierstate"),"keyboardevent-key":require("./features/keyboardevent-key"),"keyboardevent-location":require("./features/keyboardevent-location"),"keyboardevent-which":require("./features/keyboardevent-which"),"lazyload":require("./features/lazyload"),"let":require("./features/let"),"link-icon-png":require("./features/link-icon-png"),"link-icon-svg":require("./features/link-icon-svg"),"link-rel-dns-prefetch":require("./features/link-rel-dns-prefetch"),"link-rel-modulepreload":require("./features/link-rel-modulepreload"),"link-rel-preconnect":require("./features/link-rel-preconnect"),"link-rel-prefetch":require("./features/link-rel-prefetch"),"link-rel-preload":require("./features/link-rel-preload"),"link-rel-prerender":require("./features/link-rel-prerender"),"loading-lazy-attr":require("./features/loading-lazy-attr"),"loading-lazy-media":require("./features/loading-lazy-media"),"localecompare":require("./features/localecompare"),"magnetometer":require("./features/magnetometer"),"matchesselector":require("./features/matchesselector"),"matchmedia":require("./features/matchmedia"),"mathml":require("./features/mathml"),"maxlength":require("./features/maxlength"),"mdn-css-backdrop-pseudo-element":require("./features/mdn-css-backdrop-pseudo-element"),"mdn-css-unicode-bidi-isolate-override":require("./features/mdn-css-unicode-bidi-isolate-override"),"mdn-css-unicode-bidi-isolate":require("./features/mdn-css-unicode-bidi-isolate"),"mdn-css-unicode-bidi-plaintext":require("./features/mdn-css-unicode-bidi-plaintext"),"mdn-text-decoration-color":require("./features/mdn-text-decoration-color"),"mdn-text-decoration-line":require("./features/mdn-text-decoration-line"),"mdn-text-decoration-shorthand":require("./features/mdn-text-decoration-shorthand"),"mdn-text-decoration-style":require("./features/mdn-text-decoration-style"),"media-fragments":require("./features/media-fragments"),"mediacapture-fromelement":require("./features/mediacapture-fromelement"),"mediarecorder":require("./features/mediarecorder"),"mediasource":require("./features/mediasource"),"menu":require("./features/menu"),"meta-theme-color":require("./features/meta-theme-color"),"meter":require("./features/meter"),"midi":require("./features/midi"),"minmaxwh":require("./features/minmaxwh"),"mp3":require("./features/mp3"),"mpeg-dash":require("./features/mpeg-dash"),"mpeg4":require("./features/mpeg4"),"multibackgrounds":require("./features/multibackgrounds"),"multicolumn":require("./features/multicolumn"),"mutation-events":require("./features/mutation-events"),"mutationobserver":require("./features/mutationobserver"),"namevalue-storage":require("./features/namevalue-storage"),"native-filesystem-api":require("./features/native-filesystem-api"),"nav-timing":require("./features/nav-timing"),"netinfo":require("./features/netinfo"),"notifications":require("./features/notifications"),"object-entries":require("./features/object-entries"),"object-fit":require("./features/object-fit"),"object-observe":require("./features/object-observe"),"object-values":require("./features/object-values"),"objectrtc":require("./features/objectrtc"),"offline-apps":require("./features/offline-apps"),"offscreencanvas":require("./features/offscreencanvas"),"ogg-vorbis":require("./features/ogg-vorbis"),"ogv":require("./features/ogv"),"ol-reversed":require("./features/ol-reversed"),"once-event-listener":require("./features/once-event-listener"),"online-status":require("./features/online-status"),"opus":require("./features/opus"),"orientation-sensor":require("./features/orientation-sensor"),"outline":require("./features/outline"),"pad-start-end":require("./features/pad-start-end"),"page-transition-events":require("./features/page-transition-events"),"pagevisibility":require("./features/pagevisibility"),"passive-event-listener":require("./features/passive-event-listener"),"passkeys":require("./features/passkeys"),"passwordrules":require("./features/passwordrules"),"path2d":require("./features/path2d"),"payment-request":require("./features/payment-request"),"pdf-viewer":require("./features/pdf-viewer"),"permissions-api":require("./features/permissions-api"),"permissions-policy":require("./features/permissions-policy"),"picture-in-picture":require("./features/picture-in-picture"),"picture":require("./features/picture"),"ping":require("./features/ping"),"png-alpha":require("./features/png-alpha"),"pointer-events":require("./features/pointer-events"),"pointer":require("./features/pointer"),"pointerlock":require("./features/pointerlock"),"portals":require("./features/portals"),"prefers-color-scheme":require("./features/prefers-color-scheme"),"prefers-reduced-motion":require("./features/prefers-reduced-motion"),"progress":require("./features/progress"),"promise-finally":require("./features/promise-finally"),"promises":require("./features/promises"),"proximity":require("./features/proximity"),"proxy":require("./features/proxy"),"publickeypinning":require("./features/publickeypinning"),"push-api":require("./features/push-api"),"queryselector":require("./features/queryselector"),"readonly-attr":require("./features/readonly-attr"),"referrer-policy":require("./features/referrer-policy"),"registerprotocolhandler":require("./features/registerprotocolhandler"),"rel-noopener":require("./features/rel-noopener"),"rel-noreferrer":require("./features/rel-noreferrer"),"rellist":require("./features/rellist"),"rem":require("./features/rem"),"requestanimationframe":require("./features/requestanimationframe"),"requestidlecallback":require("./features/requestidlecallback"),"resizeobserver":require("./features/resizeobserver"),"resource-timing":require("./features/resource-timing"),"rest-parameters":require("./features/rest-parameters"),"rtcpeerconnection":require("./features/rtcpeerconnection"),"ruby":require("./features/ruby"),"run-in":require("./features/run-in"),"same-site-cookie-attribute":require("./features/same-site-cookie-attribute"),"screen-orientation":require("./features/screen-orientation"),"script-async":require("./features/script-async"),"script-defer":require("./features/script-defer"),"scrollintoview":require("./features/scrollintoview"),"scrollintoviewifneeded":require("./features/scrollintoviewifneeded"),"sdch":require("./features/sdch"),"selection-api":require("./features/selection-api"),"server-timing":require("./features/server-timing"),"serviceworkers":require("./features/serviceworkers"),"setimmediate":require("./features/setimmediate"),"shadowdom":require("./features/shadowdom"),"shadowdomv1":require("./features/shadowdomv1"),"sharedarraybuffer":require("./features/sharedarraybuffer"),"sharedworkers":require("./features/sharedworkers"),"sni":require("./features/sni"),"spdy":require("./features/spdy"),"speech-recognition":require("./features/speech-recognition"),"speech-synthesis":require("./features/speech-synthesis"),"spellcheck-attribute":require("./features/spellcheck-attribute"),"sql-storage":require("./features/sql-storage"),"srcset":require("./features/srcset"),"stream":require("./features/stream"),"streams":require("./features/streams"),"stricttransportsecurity":require("./features/stricttransportsecurity"),"style-scoped":require("./features/style-scoped"),"subresource-bundling":require("./features/subresource-bundling"),"subresource-integrity":require("./features/subresource-integrity"),"svg-css":require("./features/svg-css"),"svg-filters":require("./features/svg-filters"),"svg-fonts":require("./features/svg-fonts"),"svg-fragment":require("./features/svg-fragment"),"svg-html":require("./features/svg-html"),"svg-html5":require("./features/svg-html5"),"svg-img":require("./features/svg-img"),"svg-smil":require("./features/svg-smil"),"svg":require("./features/svg"),"sxg":require("./features/sxg"),"tabindex-attr":require("./features/tabindex-attr"),"template-literals":require("./features/template-literals"),"template":require("./features/template"),"temporal":require("./features/temporal"),"testfeat":require("./features/testfeat"),"text-decoration":require("./features/text-decoration"),"text-emphasis":require("./features/text-emphasis"),"text-overflow":require("./features/text-overflow"),"text-size-adjust":require("./features/text-size-adjust"),"text-stroke":require("./features/text-stroke"),"textcontent":require("./features/textcontent"),"textencoder":require("./features/textencoder"),"tls1-1":require("./features/tls1-1"),"tls1-2":require("./features/tls1-2"),"tls1-3":require("./features/tls1-3"),"touch":require("./features/touch"),"transforms2d":require("./features/transforms2d"),"transforms3d":require("./features/transforms3d"),"trusted-types":require("./features/trusted-types"),"ttf":require("./features/ttf"),"typedarrays":require("./features/typedarrays"),"u2f":require("./features/u2f"),"unhandledrejection":require("./features/unhandledrejection"),"upgradeinsecurerequests":require("./features/upgradeinsecurerequests"),"url-scroll-to-text-fragment":require("./features/url-scroll-to-text-fragment"),"url":require("./features/url"),"urlsearchparams":require("./features/urlsearchparams"),"use-strict":require("./features/use-strict"),"user-select-none":require("./features/user-select-none"),"user-timing":require("./features/user-timing"),"variable-fonts":require("./features/variable-fonts"),"vector-effect":require("./features/vector-effect"),"vibration":require("./features/vibration"),"video":require("./features/video"),"videotracks":require("./features/videotracks"),"view-transitions":require("./features/view-transitions"),"viewport-unit-variants":require("./features/viewport-unit-variants"),"viewport-units":require("./features/viewport-units"),"wai-aria":require("./features/wai-aria"),"wake-lock":require("./features/wake-lock"),"wasm-bigint":require("./features/wasm-bigint"),"wasm-bulk-memory":require("./features/wasm-bulk-memory"),"wasm-extended-const":require("./features/wasm-extended-const"),"wasm-gc":require("./features/wasm-gc"),"wasm-multi-memory":require("./features/wasm-multi-memory"),"wasm-multi-value":require("./features/wasm-multi-value"),"wasm-mutable-globals":require("./features/wasm-mutable-globals"),"wasm-nontrapping-fptoint":require("./features/wasm-nontrapping-fptoint"),"wasm-reference-types":require("./features/wasm-reference-types"),"wasm-relaxed-simd":require("./features/wasm-relaxed-simd"),"wasm-signext":require("./features/wasm-signext"),"wasm-simd":require("./features/wasm-simd"),"wasm-tail-calls":require("./features/wasm-tail-calls"),"wasm-threads":require("./features/wasm-threads"),"wasm":require("./features/wasm"),"wav":require("./features/wav"),"wbr-element":require("./features/wbr-element"),"web-animation":require("./features/web-animation"),"web-app-manifest":require("./features/web-app-manifest"),"web-bluetooth":require("./features/web-bluetooth"),"web-serial":require("./features/web-serial"),"web-share":require("./features/web-share"),"webauthn":require("./features/webauthn"),"webcodecs":require("./features/webcodecs"),"webgl":require("./features/webgl"),"webgl2":require("./features/webgl2"),"webgpu":require("./features/webgpu"),"webhid":require("./features/webhid"),"webkit-user-drag":require("./features/webkit-user-drag"),"webm":require("./features/webm"),"webnfc":require("./features/webnfc"),"webp":require("./features/webp"),"websockets":require("./features/websockets"),"webtransport":require("./features/webtransport"),"webusb":require("./features/webusb"),"webvr":require("./features/webvr"),"webvtt":require("./features/webvtt"),"webworkers":require("./features/webworkers"),"webxr":require("./features/webxr"),"will-change":require("./features/will-change"),"woff":require("./features/woff"),"woff2":require("./features/woff2"),"word-break":require("./features/word-break"),"wordwrap":require("./features/wordwrap"),"x-doc-messaging":require("./features/x-doc-messaging"),"x-frame-options":require("./features/x-frame-options"),"xhr2":require("./features/xhr2"),"xhtml":require("./features/xhtml"),"xhtmlsmil":require("./features/xhtmlsmil"),"xml-serializer":require("./features/xml-serializer"),"zstd":require("./features/zstd")}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/aac.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/aac.js new file mode 100644 index 0000000..8bc8f94 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/aac.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD","132":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F","16":"A B"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"132":"RC"},N:{"1":"A","2":"B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"132":"9D AE"}},B:6,C:"AAC audio file format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/abortcontroller.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/abortcontroller.js new file mode 100644 index 0000000..ad79fbe --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/abortcontroller.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC","130":"C SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B ND OD PD QD SC 3C RD TC"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"AbortController & AbortSignal",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ac3-ec3.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ac3-ec3.js new file mode 100644 index 0000000..cd86cdb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ac3-ec3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"C K L G M N O","2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD","132":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D","132":"A"},K:{"2":"A B C H SC 3C","132":"TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/accelerometer.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/accelerometer.js new file mode 100644 index 0000000..4461ab4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/accelerometer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B","194":"8B ZC 9B aC AC BC CC DC EC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:4,C:"Accelerometer",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/addeventlistener.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/addeventlistener.js new file mode 100644 index 0000000..aa1baff --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/addeventlistener.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","130":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","257":"6C YC I eB J 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"EventTarget.addEventListener()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/alternate-stylesheet.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/alternate-stylesheet.js new file mode 100644 index 0000000..bb60606 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/alternate-stylesheet.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F A B","2":"J D 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"F B C ND OD PD QD SC 3C RD TC","16":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"16":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"16":"D A"},K:{"2":"H","16":"A B C SC 3C TC"},L:{"16":"KB"},M:{"16":"RC"},N:{"16":"A B"},O:{"16":"UC"},P:{"16":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"16":"8D"},S:{"1":"9D AE"}},B:1,C:"Alternate stylesheet",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ambient-light.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ambient-light.js new file mode 100644 index 0000000..1c5a1f4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ambient-light.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K","132":"L G M N O","322":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD","132":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC","194":"0 1 2 3 4 5 6 7 8 9 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B","322":"0 1 2 3 4 5 6 7 8 9 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC ND OD PD QD SC 3C RD TC","322":"0 1 2 3 4 5 6 7 8 9 LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"322":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"132":"9D AE"}},B:4,C:"Ambient Light Sensor",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/apng.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/apng.js new file mode 100644 index 0000000..0acbc1a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/apng.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B"},E:{"1":"E F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Animated PNG (APNG)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/array-find-index.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/array-find-index.js new file mode 100644 index 0000000..794a0ee --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/array-find-index.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},E:{"1":"E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB ND OD PD QD SC 3C RD TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D","16":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Array.prototype.findIndex",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/array-find.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/array-find.js new file mode 100644 index 0000000..f7f8bc3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/array-find.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},E:{"1":"E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB ND OD PD QD SC 3C RD TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D","16":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Array.prototype.find",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/array-flat.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/array-flat.js new file mode 100644 index 0000000..a59cceb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/array-flat.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC"},E:{"1":"C K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B ND OD PD QD SC 3C RD TC"},G:{"1":"dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"flat & flatMap array methods",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/array-includes.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/array-includes.js new file mode 100644 index 0000000..794e719 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/array-includes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Array.prototype.includes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/arrow-functions.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/arrow-functions.js new file mode 100644 index 0000000..b52d074 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/arrow-functions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Arrow functions",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/asmjs.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/asmjs.js new file mode 100644 index 0000000..0a277db --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/asmjs.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"K L G M N O","132":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","322":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB","132":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","132":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","132":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","132":"H"},L:{"132":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"132":"UC"},P:{"2":"I","132":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"132":"7D"},R:{"132":"8D"},S:{"1":"9D AE"}},B:6,C:"asm.js",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/async-clipboard.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/async-clipboard.js new file mode 100644 index 0000000..3d29052 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/async-clipboard.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC 9C AD","132":"0 1 2 3 4 5 6 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC"},E:{"1":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B ND OD PD QD SC 3C RD TC"},G:{"1":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","260":"KB"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"FB GB HB IB JB","2":"I wD xD yD zD","260":"AB BB CB DB EB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D","132":"AE"}},B:5,C:"Asynchronous Clipboard API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/async-functions.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/async-functions.js new file mode 100644 index 0000000..145e1b9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/async-functions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K","194":"L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD","258":"fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB ND OD PD QD SC 3C RD TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD","258":"aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"Async functions",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/atob-btoa.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/atob-btoa.js new file mode 100644 index 0000000..0c67c68 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/atob-btoa.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","2":"F ND OD","16":"PD"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","16":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Base64 encoding and decoding",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/audio-api.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/audio-api.js new file mode 100644 index 0000000..82f3bfe --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/audio-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K","33":"L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB"},E:{"1":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","33":"J D E F A B C K L DD ED FD fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB"},G:{"1":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Web Audio API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/audio.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/audio.js new file mode 100644 index 0000000..b834f32 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/audio.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","132":"I eB J D E F A B C K L G M N O fB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F","4":"ND OD"},G:{"260":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","2":"qD rD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Audio element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/audiotracks.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/audiotracks.js new file mode 100644 index 0000000..13ed1f4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/audiotracks.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"C K L G M N O","322":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB 9C AD","194":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB","322":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB ND OD PD QD SC 3C RD TC","322":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","322":"H"},L:{"322":"KB"},M:{"2":"RC"},N:{"1":"A B"},O:{"322":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"322":"7D"},R:{"322":"8D"},S:{"194":"9D AE"}},B:1,C:"Audio Tracks",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/autofocus.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/autofocus.js new file mode 100644 index 0000000..56d934a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/autofocus.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"Autofocus attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/auxclick.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/auxclick.js new file mode 100644 index 0000000..fbc0e0c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/auxclick.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 9C AD","129":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B"},E:{"1":"tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB ND OD PD QD SC 3C RD TC"},G:{"1":"tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:5,C:"Auxclick",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/av1.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/av1.js new file mode 100644 index 0000000..a04ba78 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/av1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"0 1 2 C K L G M N y z","194":"O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 9C AD","66":"5B 6B 7B 8B ZC 9B aC AC BC CC","260":"DC","516":"EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC","66":"FC GC HC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD","1028":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD","1028":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:6,C:"AV1 video format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/avif.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/avif.js new file mode 100644 index 0000000..5daa718 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/avif.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"0 1 2 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v","4162":"w x y z"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC 9C AD","194":"PC QC P H Q bC R S T U V W X Y Z a","257":"b c d e f g h i j k l m n o p q r s","2049":"t u"},D:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC","1796":"iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC ND OD PD QD SC 3C RD TC"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD","1281":"VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:6,C:"AVIF image format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/background-attachment.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-attachment.js new file mode 100644 index 0000000..f304e0d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-attachment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","132":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","132":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J D E F A B C CD DD ED FD fC SC TC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","132":"I K BD eC GD","2050":"L G HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","132":"F ND OD"},G:{"2":"eC SD 4C","4100":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","4868":"E TD UD VD WD XD YD ZD aD bD cD dD eD","6148":"fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD uD vD","132":"tD 4C"},J:{"260":"D A"},K:{"1":"B C H SC 3C TC","132":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"2":"I","1028":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS background-attachment",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/background-clip-text.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-clip-text.js new file mode 100644 index 0000000..d4eb83b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-clip-text.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"G M N O","33":"C K L","129":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","161":"0 1 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB 9C AD"},D:{"129":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","161":"0 1 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"2":"BD","129":"UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","388":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC","420":"I eC"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","129":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z","161":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n"},G:{"129":"UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","388":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC"},H:{"2":"pD"},I:{"16":"YC qD rD sD","129":"KB","161":"I tD 4C uD vD"},J:{"161":"D A"},K:{"16":"A B C SC 3C TC","129":"H"},L:{"129":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"161":"UC"},P:{"1":"FB GB HB IB JB","161":"I AB BB CB DB EB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"161":"7D"},R:{"161":"8D"},S:{"1":"9D AE"}},B:7,C:"Background-clip: text",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/background-img-opts.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-img-opts.js new file mode 100644 index 0000000..d866b58 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-img-opts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C","36":"AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","516":"I eB J D E F A B C K L"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","772":"I eB J BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND","36":"OD"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","4":"eC SD 4C UD","516":"TD"},H:{"132":"pD"},I:{"1":"KB uD vD","36":"qD","516":"YC I tD 4C","548":"rD sD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS3 Background-image options",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/background-position-x-y.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-position-x-y.js new file mode 100644 index 0000000..129d2b7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-position-x-y.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:7,C:"background-position-x & background-position-y",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/background-repeat-round-space.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-repeat-round-space.js new file mode 100644 index 0000000..2cef388 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-repeat-round-space.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E 5C","132":"F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F G M N O ND OD"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"CSS background-repeat round and space",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/background-sync.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-sync.js new file mode 100644 index 0000000..8d31e37 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/background-sync.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC 9C AD","16":"dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"Background Sync API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/battery-status.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/battery-status.js new file mode 100644 index 0000000..c66cd9a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/battery-status.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"tB uB vB wB xB yB zB 0B 1B","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","132":"M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB","164":"A B C K L G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB","66":"nB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D","2":"AE"}},B:4,C:"Battery Status API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/beacon.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/beacon.js new file mode 100644 index 0000000..6c3b1f9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/beacon.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB ND OD PD QD SC 3C RD TC"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Beacon API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/beforeafterprint.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/beforeafterprint.js new file mode 100644 index 0000000..9f37d89 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/beforeafterprint.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B","16":"5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB ND OD PD QD SC 3C RD TC"},G:{"1":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"16":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"16":"A B"},O:{"1":"UC"},P:{"2":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","16":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Printing Events",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/bigint.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/bigint.js new file mode 100644 index 0000000..b447686 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/bigint.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC 9C AD","194":"DC EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC"},E:{"1":"L G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B ND OD PD QD SC 3C RD TC"},G:{"1":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"BigInt",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/blobbuilder.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/blobbuilder.js new file mode 100644 index 0000000..2b540b0 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/blobbuilder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD","36":"J D E F A B C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D","36":"E F A B C K L G M N O fB"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B C ND OD PD QD SC 3C RD"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD"},H:{"2":"pD"},I:{"1":"KB","2":"qD rD sD","36":"YC I tD 4C uD vD"},J:{"1":"A","2":"D"},K:{"1":"H TC","2":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Blob constructing",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/bloburls.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/bloburls.js new file mode 100644 index 0000000..ae384d8 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/bloburls.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","129":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D","33":"E F A B C K L G M N O fB AB BB CB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC qD rD sD","33":"I tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Blob URLs",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/border-image.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/border-image.js new file mode 100644 index 0000000..705db37 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/border-image.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","260":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB","804":"I eB J D E F A B C K L 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","260":"1B 2B 3B 4B 5B","388":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","1412":"G M N O fB AB BB CB DB EB FB GB HB IB JB","1956":"I eB J D E F A B C K L"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","129":"A B C K L G FD fC SC TC GD HD ID gC","1412":"J D E F DD ED","1956":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F ND OD","260":"oB pB qB rB sB","388":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB","1796":"PD QD","1828":"B C SC 3C RD TC"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","129":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC","1412":"E UD VD WD XD","1956":"eC SD 4C TD"},H:{"1828":"pD"},I:{"1":"KB","388":"uD vD","1956":"YC I qD rD sD tD 4C"},J:{"1412":"A","1924":"D"},K:{"1":"H","2":"A","1828":"B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","260":"wD xD","388":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","260":"9D"}},B:4,C:"CSS3 Border images",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/border-radius.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/border-radius.js new file mode 100644 index 0000000..c892754 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/border-radius.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","257":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB","289":"YC 9C AD","292":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I"},E:{"1":"eB D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","33":"I BD eC","129":"J CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"eC"},H:{"2":"pD"},I:{"1":"YC I KB rD sD tD 4C uD vD","33":"qD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","257":"9D"}},B:4,C:"CSS3 Border-radius (rounded corners)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/broadcastchannel.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/broadcastchannel.js new file mode 100644 index 0000000..9dcb8d7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/broadcastchannel.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB ND OD PD QD SC 3C RD TC"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"BroadcastChannel",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/brotli.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/brotli.js new file mode 100644 index 0000000..e7d795b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/brotli.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB","194":"zB","257":"0B"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","513":"B C SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC","194":"mB nB"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Brotli Accept-Encoding/Content-Encoding",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/calc.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/calc.js new file mode 100644 index 0000000..ac39e56 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/calc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","260":"F","516":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","33":"I eB J D E F A B C K L G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O","33":"fB AB BB CB DB EB FB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"UD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","132":"uD vD"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"calc() as CSS unit value",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/canvas-blending.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/canvas-blending.js new file mode 100644 index 0000000..fdf3763 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/canvas-blending.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Canvas blend modes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/canvas-text.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/canvas-text.js new file mode 100644 index 0000000..0d6fef8 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/canvas-text.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"5C","8":"J D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","8":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","8":"F ND OD"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","8":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Text API for Canvas",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/canvas.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/canvas.js new file mode 100644 index 0000000..66d4225 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/canvas.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"5C","8":"J D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","132":"6C YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","132":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"260":"pD"},I:{"1":"YC I KB tD 4C uD vD","132":"qD rD sD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Canvas (basic support)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ch-unit.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ch-unit.js new file mode 100644 index 0000000..5b26944 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ch-unit.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","132":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"ch (character) unit",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/chacha20-poly1305.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/chacha20-poly1305.js new file mode 100644 index 0000000..963db61 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/chacha20-poly1305.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB","129":"jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD","16":"vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"ChaCha20-Poly1305 cipher suites for TLS",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/channel-messaging.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/channel-messaging.js new file mode 100644 index 0000000..9f1f6a0 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/channel-messaging.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB 9C AD","194":"GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","2":"F ND OD","16":"PD"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Channel messaging",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/childnode-remove.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/childnode-remove.js new file mode 100644 index 0000000..7013bb1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/childnode-remove.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"ChildNode.remove()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/classlist.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/classlist.js new file mode 100644 index 0000000..de080e6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/classlist.js @@ -0,0 +1 @@ +module.exports={A:{A:{"8":"J D E F 5C","1924":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","8":"6C YC 9C","516":"EB FB","772":"I eB J D E F A B C K L G M N O fB AB BB CB DB AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","8":"I eB J D","516":"EB FB GB HB","772":"DB","900":"E F A B C K L G M N O fB AB BB CB"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I eB BD eC","900":"J CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","8":"F B ND OD PD QD SC","900":"C 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"eC SD 4C","900":"TD UD"},H:{"900":"pD"},I:{"1":"KB uD vD","8":"qD rD sD","900":"YC I tD 4C"},J:{"1":"A","900":"D"},K:{"1":"H","8":"A B","900":"C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"900":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"classList (DOMTokenList)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js new file mode 100644 index 0000000..73c6dee --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:6,C:"Client Hints: DPR, Width, Viewport-Width",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/clipboard.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/clipboard.js new file mode 100644 index 0000000..f877c34 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/clipboard.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2436":"J D E F A B 5C"},B:{"260":"N O","2436":"C K L G M","8196":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD","772":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB","4100":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C","2564":"K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB","8196":"0 1 2 3 4 5 6 7 8 9 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","10244":"tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B"},E:{"1":"C K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD eC","2308":"A B fC SC","2820":"I eB J D E F CD DD ED FD"},F:{"2":"F B ND OD PD QD SC 3C RD","16":"C","516":"TC","2564":"G M N O fB AB BB CB DB EB FB GB HB IB JB","8196":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","10244":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},G:{"1":"dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C","2820":"E TD UD VD WD XD YD ZD aD bD cD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C","260":"KB","2308":"uD vD"},J:{"2":"D","2308":"A"},K:{"2":"A B C SC 3C","16":"TC","8196":"H"},L:{"8196":"KB"},M:{"1028":"RC"},N:{"2":"A B"},O:{"8196":"UC"},P:{"2052":"wD xD","2308":"I","8196":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"8196":"7D"},R:{"8196":"8D"},S:{"4100":"9D AE"}},B:5,C:"Synchronous Clipboard API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/colr-v1.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/colr-v1.js new file mode 100644 index 0000000..64849fb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/colr-v1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f 9C AD","258":"g h i j k l m","578":"n o"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X","194":"Y Z a b c d e f"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"16":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"16":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"COLR/CPAL(v1) Font Formats",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/colr.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/colr.js new file mode 100644 index 0000000..5eb270f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/colr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","257":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","513":"P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r"},C:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC","513":"JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r"},E:{"1":"L G HD ID gC hC UC JD VC iC jC kC lC mC KD oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","129":"B C K SC TC GD","1026":"WC nC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B ND OD PD QD SC 3C RD TC","513":"8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD","1026":"WC nC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"16":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"16":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"COLR/CPAL(v0) Font Formats",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/comparedocumentposition.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/comparedocumentposition.js new file mode 100644 index 0000000..17c1404 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/comparedocumentposition.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","16":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L","132":"G M N O fB AB BB CB DB EB FB GB HB IB JB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB J BD eC","132":"D E F DD ED FD","260":"CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","16":"F B ND OD PD QD SC 3C","132":"G M"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC","132":"E SD 4C TD UD VD WD XD YD"},H:{"1":"pD"},I:{"1":"KB uD vD","16":"qD rD","132":"YC I sD tD 4C"},J:{"132":"D A"},K:{"1":"C H TC","16":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Node.compareDocumentPosition()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/console-basic.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/console-basic.js new file mode 100644 index 0000000..b3b3f73 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/console-basic.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D 5C","132":"E F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","2":"F ND OD PD QD"},G:{"1":"eC SD 4C TD","513":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"4097":"pD"},I:{"1025":"YC I KB qD rD sD tD 4C uD vD"},J:{"258":"D A"},K:{"2":"A","258":"B C SC 3C TC","1025":"H"},L:{"1025":"KB"},M:{"2049":"RC"},N:{"258":"A B"},O:{"258":"UC"},P:{"1025":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1025":"8D"},S:{"1":"9D AE"}},B:1,C:"Basic console logging functions",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/console-time.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/console-time.js new file mode 100644 index 0000000..2c5d2e5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/console-time.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","2":"F ND OD PD QD","16":"B"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"H","16":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"console.time and console.timeEnd",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/const.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/const.js new file mode 100644 index 0000000..7ee04e7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/const.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","2052":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","132":"6C YC I eB J D E F A B C 9C AD","260":"K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","260":"I eB J D E F A B C K L G M N O fB AB","772":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB","1028":"rB sB tB uB vB wB xB yB"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","260":"I eB A BD eC fC","772":"J D E F CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F ND","132":"B OD PD QD SC 3C","644":"C RD TC","772":"G M N O fB AB BB CB DB EB FB GB HB","1028":"IB JB gB hB iB jB kB lB"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","260":"eC SD 4C ZD aD","772":"E TD UD VD WD XD YD"},H:{"644":"pD"},I:{"1":"KB","16":"qD rD","260":"sD","772":"YC I tD 4C uD vD"},J:{"772":"D A"},K:{"1":"H","132":"A B SC 3C","644":"C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","1028":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"const",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/constraint-validation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/constraint-validation.js new file mode 100644 index 0000000..d24e9ab --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/constraint-validation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","900":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","388":"L G M","900":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","260":"zB 0B","388":"JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB","900":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L","388":"FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB","900":"G M N O fB AB BB CB DB EB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC","388":"E F ED FD","900":"J D CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F B ND OD PD QD SC 3C","388":"G M N O fB AB BB CB DB EB FB GB","900":"C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C","388":"E VD WD XD YD","900":"TD UD"},H:{"2":"pD"},I:{"1":"KB","16":"YC qD rD sD","388":"uD vD","900":"I tD 4C"},J:{"16":"D","388":"A"},K:{"1":"H","16":"A B SC 3C","900":"C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"900":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","388":"9D"}},B:1,C:"Constraint Validation API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/contenteditable.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/contenteditable.js new file mode 100644 index 0000000..a04734a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/contenteditable.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C","4":"YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"D A"},K:{"1":"H TC","2":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"contenteditable attribute (basic support)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js new file mode 100644 index 0000000..532adfa --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","132":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","129":"I eB J D E F A B C K L G M N O fB AB BB CB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K","257":"L G M N O fB AB BB CB DB EB"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC","257":"J DD","260":"CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C","257":"UD","260":"TD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D","257":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Content Security Policy 1.0",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js new file mode 100644 index 0000000..47037f6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L","4100":"G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB 9C AD","132":"hB iB jB kB","260":"lB","516":"mB nB oB pB qB rB sB tB uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB","1028":"mB nB oB","2052":"pB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB ND OD PD QD SC 3C RD TC","1028":"DB EB FB","2052":"GB"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Content Security Policy Level 2",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/cookie-store-api.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/cookie-store-api.js new file mode 100644 index 0000000..f0a31ca --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/cookie-store-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","194":"P H Q R S T U"},C:{"1":"XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB 9C AD","322":"PB QB RB SB TB UB VB WB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC","194":"CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U"},E:{"1":"vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B ND OD PD QD SC 3C RD TC","194":"1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC"},G:{"1":"vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"Cookie Store API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/cors.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/cors.js new file mode 100644 index 0000000..6fb3ad6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/cors.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D 5C","132":"A","260":"E F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC","1025":"aC AC BC CC DC EC FC GC HC IC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C"},E:{"2":"BD eC","513":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","644":"I eB CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD SC 3C RD"},G:{"513":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","644":"eC SD 4C TD"},H:{"2":"pD"},I:{"1":"KB uD vD","132":"YC I qD rD sD tD 4C"},J:{"1":"A","132":"D"},K:{"1":"C H TC","2":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","132":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Cross-Origin Resource Sharing",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/createimagebitmap.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/createimagebitmap.js new file mode 100644 index 0000000..5c5c14d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/createimagebitmap.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB 9C AD","1028":"b c d e f","3076":"sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a","8193":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB","132":"0B 1B","260":"2B 3B","516":"4B 5B 6B 7B 8B"},E:{"1":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD HD","4100":"G ID gC hC UC JD VC iC jC kC lC mC KD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB ND OD PD QD SC 3C RD TC","132":"nB oB","260":"pB qB","516":"rB sB tB uB vB"},G:{"1":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD","4100":"lD gC hC UC mD VC iC jC kC lC mC nD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"8193":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","16":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"3076":"9D AE"}},B:1,C:"createImageBitmap",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/credential-management.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/credential-management.js new file mode 100644 index 0000000..4dbc1c4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/credential-management.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB","66":"yB zB 0B","129":"1B 2B 3B 4B 5B 6B"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB ND OD PD QD SC 3C RD TC"},G:{"1":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:5,C:"Credential Management API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js new file mode 100644 index 0000000..b6337e3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/cross-document-view-transitions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"0 1 2 3 4 5 6 7 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB 9C AD","194":"aB","260":"bB cB dB KB cC RC dC 7C 8C"},D:{"1":"8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"0 1 2 3 4 5 6 7 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"1":"tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t ND OD PD QD SC 3C RD TC"},G:{"1":"tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"260":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"View Transitions (cross-document)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/cryptography.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/cryptography.js new file mode 100644 index 0000000..7a84f2a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/cryptography.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","8":"J D E F A","164":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","513":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","8":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB 9C AD","66":"iB jB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","8":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I eB J D BD eC CD DD","289":"E F A ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","8":"F B C G M N O fB AB BB CB DB ND OD PD QD SC 3C RD TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"eC SD 4C TD UD VD","289":"E WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","8":"YC I qD rD sD tD 4C uD vD"},J:{"8":"D A"},K:{"1":"H","8":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"8":"A","164":"B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Web Cryptography",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-all.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-all.js new file mode 100644 index 0000000..e7c2ce6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-all.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB ND OD PD QD SC 3C RD TC"},G:{"1":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD"},H:{"2":"pD"},I:{"1":"KB vD","2":"YC I qD rD sD tD 4C uD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS all property",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-anchor-positioning.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-anchor-positioning.js new file mode 100644 index 0000000..d00639c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-anchor-positioning.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y","194":"0 1 2 3 4 5 6 z"},C:{"1":"KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB 9C AD","322":"cB dB"},D:{"1":"7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y","194":"0 1 2 3 4 5 6 z"},E:{"1":"xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k ND OD PD QD SC 3C RD TC","194":"l m n o p q r s"},G:{"1":"xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"HB IB JB","2":"I AB BB CB DB EB FB GB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Anchor Positioning",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-animation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-animation.js new file mode 100644 index 0000000..5a4b443 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-animation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I 9C AD","33":"eB J D E F A B C K L G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC","33":"J D E CD DD ED","292":"I eB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD SC 3C RD","33":"C G M N O fB AB BB CB DB EB FB GB HB IB JB"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"E UD VD WD","164":"eC SD 4C TD"},H:{"2":"pD"},I:{"1":"KB","33":"I tD 4C uD vD","164":"YC qD rD sD"},J:{"33":"D A"},K:{"1":"H TC","2":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"CSS Animation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-any-link.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-any-link.js new file mode 100644 index 0000000..31212c1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-any-link.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","16":"6C","33":"YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB J BD eC CD","33":"D E DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C TD","33":"E UD VD WD"},H:{"2":"pD"},I:{"1":"KB","16":"YC I qD rD sD tD 4C","33":"uD vD"},J:{"16":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","16":"I","33":"wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","33":"9D"}},B:5,C:"CSS :any-link selector",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-appearance.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-appearance.js new file mode 100644 index 0000000..894f061 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-appearance.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","33":"R","164":"P H Q","388":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","164":"lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P","676":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"R","164":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","164":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"IC JC KC","164":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","164":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","164":"YC I qD rD sD tD 4C uD vD"},J:{"164":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A","388":"B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","164":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"164":"7D"},R:{"1":"8D"},S:{"1":"AE","164":"9D"}},B:5,C:"CSS Appearance",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-at-counter-style.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-at-counter-style.js new file mode 100644 index 0000000..e32b408 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-at-counter-style.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O P H Q R S T U V W X Y","132":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB 9C AD","132":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y","132":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD","4":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC ND OD PD QD SC 3C RD TC","132":"0 1 2 3 4 5 6 7 8 9 PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD","4":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","132":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","132":"H"},L:{"132":"KB"},M:{"132":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D","132":"AB BB CB DB EB FB GB HB IB JB VC WC XC 6D"},Q:{"2":"7D"},R:{"132":"8D"},S:{"132":"9D AE"}},B:4,C:"CSS Counter Styles",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-autofill.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-autofill.js new file mode 100644 index 0000000..eaefb9d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-autofill.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","33":"P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},M:{"2":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"MD","33":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD HD"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD"},P:{"1":"BB CB DB EB FB GB HB IB JB","33":"I AB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","33":"uD vD"}},B:6,C:":autofill CSS pseudo-class",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-backdrop-filter.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-backdrop-filter.js new file mode 100644 index 0000000..6ebab36 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-backdrop-filter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M","257":"N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC 9C AD","578":"IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k"},D:{"1":"0 1 2 3 4 5 6 7 8 9 OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB","194":"xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC"},E:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED","33":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB ND OD PD QD SC 3C RD TC","194":"kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC"},G:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD","33":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 2D 3D 4D 5D VC WC XC 6D","2":"I","194":"wD xD yD zD 0D fC 1D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"CSS Backdrop Filter",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-background-offsets.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-background-offsets.js new file mode 100644 index 0000000..6b1bc11 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-background-offsets.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS background-position edge offsets",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js new file mode 100644 index 0000000..d76e14e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB","260":"wB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD","132":"E F A ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB ND OD PD QD SC 3C RD TC","260":"jB"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD","132":"E WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS background-blend-mode",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js new file mode 100644 index 0000000..3a79ee4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","164":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB 9C AD"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB","164":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB"},E:{"2":"I eB J BD eC CD","164":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z","2":"F ND OD PD QD","129":"B C SC 3C RD TC","164":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x"},G:{"2":"eC SD 4C TD UD","164":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"132":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","164":"uD vD"},J:{"2":"D","164":"A"},K:{"2":"A","129":"B C SC 3C TC","164":"H"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"164":"UC"},P:{"164":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"164":"7D"},R:{"164":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS box-decoration-break",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-boxshadow.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-boxshadow.js new file mode 100644 index 0000000..7dd9858 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-boxshadow.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","33":"9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","33":"eB","164":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"SD 4C","164":"eC"},H:{"2":"pD"},I:{"1":"I KB tD 4C uD vD","164":"YC qD rD sD"},J:{"1":"A","33":"D"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS3 Box-shadow",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-canvas.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-canvas.js new file mode 100644 index 0000000..ec25740 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-canvas.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},E:{"2":"BD eC","33":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB"},G:{"33":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"KB","33":"YC I qD rD sD tD 4C uD vD"},J:{"33":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","33":"I"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"CSS Canvas Drawings",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-caret-color.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-caret-color.js new file mode 100644 index 0000000..2097469 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-caret-color.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB ND OD PD QD SC 3C RD TC"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:2,C:"CSS caret-color",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-cascade-layers.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-cascade-layers.js new file mode 100644 index 0000000..ede5274 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-cascade-layers.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d","322":"e f g"},C:{"1":"0 1 2 3 4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b 9C AD","194":"c d e"},D:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d","322":"e f g"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T ND OD PD QD SC 3C RD TC"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:4,C:"CSS Cascade Layers",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-cascade-scope.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-cascade-scope.js new file mode 100644 index 0000000..860293b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-cascade-scope.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l","194":"m n o p q r s t u v w x y z"},C:{"1":"dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l","194":"m n o p q r s t u v w x y z"},E:{"1":"qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X ND OD PD QD SC 3C RD TC","194":"Y Z a b c d e f g h i j k l m n"},G:{"1":"qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"FB GB HB IB JB","2":"I AB BB CB DB EB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"Scoped Styles: the @scope rule",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-case-insensitive.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-case-insensitive.js new file mode 100644 index 0000000..5125f66 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-case-insensitive.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Case-insensitive CSS attribute selectors",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-clip-path.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-clip-path.js new file mode 100644 index 0000000..1535804 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-clip-path.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N","260":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","3138":"O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 9C AD","644":"xB yB zB 0B 1B 2B 3B"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB","260":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","292":"EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B"},E:{"2":"I eB J BD eC CD DD","260":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","292":"D E F A B C K ED FD fC SC TC"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","260":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","292":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB"},G:{"2":"eC SD 4C TD UD","260":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","292":"E VD WD XD YD ZD aD bD cD dD eD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C","260":"KB","292":"uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","260":"H"},L:{"260":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"260":"UC"},P:{"260":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","292":"I wD"},Q:{"260":"7D"},R:{"260":"8D"},S:{"1":"AE","644":"9D"}},B:4,C:"CSS clip-path property (for HTML)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-color-adjust.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-color-adjust.js new file mode 100644 index 0000000..bbd9193 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-color-adjust.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB 9C AD"},D:{"16":"I eB J D E F A B C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","33":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","33":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"16":"YC I qD rD sD tD 4C uD vD","33":"KB"},J:{"16":"D A"},K:{"2":"A B C SC 3C TC","33":"H"},L:{"16":"KB"},M:{"1":"RC"},N:{"16":"A B"},O:{"16":"UC"},P:{"16":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"33":"7D"},R:{"16":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS print-color-adjust",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-color-function.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-color-function.js new file mode 100644 index 0000000..e498966 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-color-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p","322":"q r s"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s 9C AD","578":"t u"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p","322":"q r s"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD","132":"B C K L fC SC TC GD HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c ND OD PD QD SC 3C RD TC","322":"d e f"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD","132":"aD bD cD dD eD fD gD hD iD jD kD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"CB DB EB FB GB HB IB JB","2":"I AB BB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:4,C:"CSS color() function",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-conic-gradients.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-conic-gradients.js new file mode 100644 index 0000000..4d211a2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-conic-gradients.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC 9C AD","578":"NC OC PC QC P H Q bC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B","257":"HC IC","450":"ZC 9B aC AC BC CC DC EC FC GC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB ND OD PD QD SC 3C RD TC","257":"6B 7B","450":"wB xB yB zB 0B 1B 2B 3B 4B 5B"},G:{"1":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"CSS Conical Gradients",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-container-queries-style.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-container-queries-style.js new file mode 100644 index 0000000..a218478 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-container-queries-style.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o","194":"p q r s","260":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o","194":"p q r s","260":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD","260":"sC tC uC vC wC xC yC zC 0C 1C 2C MD","772":"XC"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a ND OD PD QD SC 3C RD TC","194":"b c d e f","260":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD","260":"sC tC uC vC wC xC yC zC 0C 1C 2C","772":"XC"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","260":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","260":"H"},L:{"260":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","260":"CB DB EB FB GB HB IB JB"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Container Style Queries",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-container-queries.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-container-queries.js new file mode 100644 index 0000000..14873cb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-container-queries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m","516":"n"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z","194":"b c d e f g h i j k l m","450":"a","516":"n"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC ND OD PD QD SC 3C RD TC","194":"P H Q bC R S T U V W X Y","516":"Z a b"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Container Queries (Size)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-container-query-units.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-container-query-units.js new file mode 100644 index 0000000..7e1d66d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-container-query-units.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a","194":"j k l m","450":"b c d e f g h i"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC ND OD PD QD SC 3C RD TC","194":"P H Q bC R S T U V W X Y"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Container Query Units",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-containment.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-containment.js new file mode 100644 index 0000000..c22ffe9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-containment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB 9C AD","194":"rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","66":"1B"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB ND OD PD QD SC 3C RD TC","66":"oB pB"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","194":"9D"}},B:2,C:"CSS Containment",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-content-visibility.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-content-visibility.js new file mode 100644 index 0000000..c1225c3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-content-visibility.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S"},C:{"1":"7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q 9C AD","194":"0 1 2 3 4 5 6 r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S"},E:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC ND OD PD QD SC 3C RD TC"},G:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS content-visibility",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-counters.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-counters.js new file mode 100644 index 0000000..eb3dffe --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-counters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F A B","2":"J D 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS Counters",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-crisp-edges.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-crisp-edges.js new file mode 100644 index 0000000..94256c9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-crisp-edges.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J 5C","2340":"D E F A B"},B:{"2":"C K L G M N O","1025":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C","513":"DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a","545":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB","1025":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","164":"J","4644":"D E F DD ED FD"},F:{"2":"F B G M N O fB AB BB CB DB EB FB GB HB ND OD PD QD SC 3C","545":"C RD TC","1025":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C","4260":"TD UD","4644":"E VD WD XD YD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","1025":"KB"},J:{"2":"D","4260":"A"},K:{"2":"A B SC 3C","545":"C TC","1025":"H"},L:{"1025":"KB"},M:{"1":"RC"},N:{"2340":"A B"},O:{"1025":"UC"},P:{"1025":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1025":"7D"},R:{"1025":"8D"},S:{"1":"AE","4097":"9D"}},B:4,C:"Crisp edges/pixelated images",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-cross-fade.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-cross-fade.js new file mode 100644 index 0000000..e26e170 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-cross-fade.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7 8 9 N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC","33":"J D E F CD DD ED FD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","33":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C","33":"E TD UD VD WD XD YD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C","33":"KB uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","33":"H"},L:{"33":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"33":"UC"},P:{"33":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"33":"7D"},R:{"33":"8D"},S:{"2":"9D AE"}},B:4,C:"CSS Cross-Fade Function",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-default-pseudo.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-default-pseudo.js new file mode 100644 index 0000000..20d919d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-default-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","16":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L","132":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC","132":"J D E F A CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F B ND OD PD QD SC 3C","132":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB","260":"C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C TD UD","132":"E VD WD XD YD ZD"},H:{"260":"pD"},I:{"1":"KB","16":"YC qD rD sD","132":"I tD 4C uD vD"},J:{"16":"D","132":"A"},K:{"1":"H","16":"A B C SC 3C","260":"TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","132":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:":default CSS pseudo-class",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js new file mode 100644 index 0000000..ea2030c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","16":"P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"B","2":"I eB J D E F A C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Explicit descendant combinator >>",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-deviceadaptation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-deviceadaptation.js new file mode 100644 index 0000000..9c54b9e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-deviceadaptation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","164":"A B"},B:{"66":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","164":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB","66":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB ND OD PD QD SC 3C RD TC","66":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"292":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A H","292":"B C SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"164":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"66":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Device Adaptation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-dir-pseudo.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-dir-pseudo.js new file mode 100644 index 0000000..39240e6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-dir-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m","194":"0 1 n o p q r s t u v w x y z"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M 9C AD","33":"N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB"},D:{"1":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y","194":"0 1 Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y ND OD PD QD SC 3C RD TC","194":"Z a b c d e f g h i j k l m n"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"FB GB HB IB JB","2":"I AB BB CB DB EB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"AE","33":"9D"}},B:5,C:":dir() CSS pseudo-class",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-display-contents.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-display-contents.js new file mode 100644 index 0000000..93d2d57 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-display-contents.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","132":"P H Q R S T U V W","260":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB 9C AD","132":"nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC","260":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B","132":"DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W","194":"8B ZC 9B aC AC BC CC","260":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B BD eC CD DD ED FD fC","132":"C K L G SC TC GD HD ID gC hC UC JD","260":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","772":"VC iC jC kC lC mC KD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B ND OD PD QD SC 3C RD TC","132":"2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC","260":"0 1 2 3 4 5 6 7 8 9 OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD","132":"cD dD eD fD gD hD","260":"iD jD kD lD gC hC UC mD","516":"iC jC kC lC mC nD","772":"VC"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","260":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","260":"H"},L:{"260":"KB"},M:{"260":"RC"},N:{"2":"A B"},O:{"132":"UC"},P:{"2":"I wD xD yD zD","132":"0D fC 1D 2D 3D 4D","260":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D"},Q:{"132":"7D"},R:{"260":"8D"},S:{"132":"9D","260":"AE"}},B:4,C:"CSS display: contents",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-element-function.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-element-function.js new file mode 100644 index 0000000..187de5a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-element-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"33":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","164":"6C YC 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"33":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"33":"9D AE"}},B:5,C:"CSS element() function",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-env-function.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-env-function.js new file mode 100644 index 0000000..48b6186 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-env-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","132":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B ND OD PD QD SC 3C RD TC"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD","132":"bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:7,C:"CSS Environment Variables env()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-exclusions.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-exclusions.js new file mode 100644 index 0000000..f5971cd --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-exclusions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","33":"A B"},B:{"2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"33":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Exclusions Level 1",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-featurequeries.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-featurequeries.js new file mode 100644 index 0000000..8d0f0af --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-featurequeries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B C ND OD PD QD SC 3C RD"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS Feature Queries",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-file-selector-button.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-file-selector-button.js new file mode 100644 index 0000000..de8054b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-file-selector-button.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","33":"C K L G M N O P H Q R S T U V W"},C:{"1":"0 1 2 3 4 5 6 7 8 9 bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q 9C AD"},M:{"1":"RC"},A:{"2":"J D E F 5C","33":"A B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"MD","33":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD"},G:{"1":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D","33":"I wD xD yD zD 0D fC 1D 2D 3D 4D"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","33":"uD vD"}},B:6,C:"::file-selector-button CSS pseudo-element",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-filter-function.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-filter-function.js new file mode 100644 index 0000000..babc717 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-filter-function.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED","33":"F"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD","33":"XD YD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS filter() function",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-filters.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-filters.js new file mode 100644 index 0000000..14569df --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-filters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","1028":"K L G M N O","1346":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C","196":"kB","516":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N","33":"O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","33":"J D E F DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB"},G:{"1":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"E UD VD WD XD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","33":"uD vD"},J:{"2":"D","33":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","33":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"CSS Filter Effects",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-first-letter.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-first-letter.js new file mode 100644 index 0000000..cfbdbd8 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-first-letter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","16":"5C","516":"E","1540":"J D"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","132":"YC","260":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"eB J D E","132":"I"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"eB BD","132":"I eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","16":"F ND","260":"B OD PD QD SC 3C"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C"},H:{"1":"pD"},I:{"1":"YC I KB tD 4C uD vD","16":"qD rD","132":"sD"},J:{"1":"D A"},K:{"1":"C H TC","260":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"::first-letter CSS pseudo-element selector",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-first-line.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-first-line.js new file mode 100644 index 0000000..d621c2c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-first-line.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","132":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS first-line pseudo-element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-fixed.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-fixed.js new file mode 100644 index 0000000..aea5174 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-fixed.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"D E F A B","2":"5C","8":"J"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","1025":"FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C","132":"TD UD VD"},H:{"2":"pD"},I:{"1":"YC KB uD vD","260":"qD rD sD","513":"I tD 4C"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS position:fixed",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-focus-visible.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-focus-visible.js new file mode 100644 index 0000000..076b8b4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-focus-visible.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","328":"P H Q R S T"},C:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","161":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S"},D:{"1":"0 1 2 3 4 5 6 7 8 9 U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC","328":"FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD HD","578":"G ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC ND OD PD QD SC 3C RD TC","328":"EC FC GC HC IC JC"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD","578":"lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"161":"9D AE"}},B:5,C:":focus-visible CSS pseudo-class",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-focus-within.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-focus-within.js new file mode 100644 index 0000000..fb4fdb6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-focus-within.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B","194":"ZC"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB ND OD PD QD SC 3C RD TC","194":"wB"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:7,C:":focus-within CSS pseudo-class",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-font-palette.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-font-palette.js new file mode 100644 index 0000000..e61b20b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-font-palette.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U ND OD PD QD SC 3C RD TC"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS font-palette",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js new file mode 100644 index 0000000..3982578 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB 9C AD","194":"wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB","66":"zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC","66":"mB nB oB pB qB rB sB tB uB vB wB"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","66":"wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","194":"9D"}},B:5,C:"CSS font-display",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-font-stretch.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-font-stretch.js new file mode 100644 index 0000000..6fc6fe5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-font-stretch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"CSS font-stretch",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-gencontent.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-gencontent.js new file mode 100644 index 0000000..cc64459 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-gencontent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D 5C","132":"E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS Generated content for pseudo-elements",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-gradients.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-gradients.js new file mode 100644 index 0000000..21bc58c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-gradients.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C","260":"M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB","292":"I eB J D E F A B C K L G AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"A B C K L G M N O fB AB BB CB DB EB FB","548":"I eB J D E F"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC","260":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC","292":"J CD","804":"I eB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD","33":"C RD","164":"SC 3C"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","260":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC","292":"TD UD","804":"eC SD 4C"},H:{"2":"pD"},I:{"1":"KB uD vD","33":"I tD 4C","548":"YC qD rD sD"},J:{"1":"A","548":"D"},K:{"1":"H TC","2":"A B","33":"C","164":"SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS Gradients",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-grid-animation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-grid-animation.js new file mode 100644 index 0000000..6d9002c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-grid-animation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o"},C:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a ND OD PD QD SC 3C RD TC"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"BB CB DB EB FB GB HB IB JB","2":"I AB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"CSS Grid animation",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-grid-lanes.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-grid-lanes.js new file mode 100644 index 0000000..a3fabf9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-grid-lanes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB","200":"XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC 9C AD","200":"0 1 2 3 4 5 6 7 8 9 PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB","200":"XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC","200":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C"},F:{"2":"0 1 2 3 4 5 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","200":"6"},G:{"1":"1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC","200":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"200":"KB"},M:{"200":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Grid Lanes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-grid.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-grid.js new file mode 100644 index 0000000..4fbf3bb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-grid.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","8":"F","292":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","292":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O 9C AD","8":"fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB","584":"qB rB sB tB uB vB wB xB yB zB 0B 1B","1025":"2B 3B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB","8":"FB GB HB IB","200":"JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B","1025":"7B"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","8":"J D E F A DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB ND OD PD QD SC 3C RD TC","200":"IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","8":"E UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD","8":"4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"292":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"wD","8":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS Grid Layout (level 1)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js new file mode 100644 index 0000000..a4c56b6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F BD eC CD DD ED FD","132":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD","132":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:4,C:"CSS hanging-punctuation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-has.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-has.js new file mode 100644 index 0000000..f923998 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-has.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m"},C:{"1":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k 9C AD","322":"0 1 2 l m n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i","194":"j k l m"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y ND OD PD QD SC 3C RD TC"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:":has() CSS relational pseudo-class",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-hyphens.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-hyphens.js new file mode 100644 index 0000000..413fd62 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-hyphens.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","33":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","33":"C K L G M N O","132":"P H Q R S T U V","260":"W X Y Z a b c d e f g h i j k l m"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD","33":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B","132":"5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V"},E:{"1":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC","33":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB ND OD PD QD SC 3C RD TC","132":"sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y"},G:{"1":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD","33":"E 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","132":"wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS Hyphenation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-if.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-if.js new file mode 100644 index 0000000..6254d4a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-if.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"UB VB WB XB YB ZB aB bB cB dB","2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"3 4 5 6 7 8 9","2":"0 1 2 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS if() function",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-image-orientation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-image-orientation.js new file mode 100644 index 0000000..097044b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-image-orientation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H","257":"Q R S T U V W"},C:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H","257":"Q R S T U V W"},E:{"1":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC ND OD PD QD SC 3C RD TC","257":"GC HC IC JC KC LC MC NC OC"},G:{"1":"iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","132":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D","257":"3D 4D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS3 image-orientation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-image-set.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-image-set.js new file mode 100644 index 0000000..067068b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-image-set.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","164":"P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u","2049":"v"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T 9C AD","66":"U V","2305":"X Y Z a b c d e f g h i j k l m n o p q r s t u","2820":"W"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB","164":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u","2049":"v"},E:{"1":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","132":"A B C K fC SC TC GD","164":"J D E F DD ED FD","1540":"L G HD ID gC hC UC JD VC iC jC kC lC mC KD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","164":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g","2049":"h"},G:{"1":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","132":"ZD aD bD cD dD eD fD gD hD iD","164":"E UD VD WD XD YD","1540":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","164":"uD vD"},J:{"2":"D","164":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"164":"UC"},P:{"1":"DB EB FB GB HB IB JB","164":"I AB BB CB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"164":"7D"},R:{"164":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS image-set",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-in-out-of-range.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-in-out-of-range.js new file mode 100644 index 0000000..d0e5d4f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-in-out-of-range.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C","260":"K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD","516":"JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I","16":"eB J D E F A B C K L","260":"2B","772":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","16":"eB","772":"J D E F A CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F ND","260":"B C pB OD PD QD SC 3C RD TC","772":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C","772":"E TD UD VD WD XD YD ZD"},H:{"132":"pD"},I:{"1":"KB","2":"YC qD rD sD","260":"I tD 4C uD vD"},J:{"2":"D","260":"A"},K:{"1":"H","260":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","260":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","516":"9D"}},B:5,C:":in-range and :out-of-range CSS pseudo-classes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js new file mode 100644 index 0000000..5beea56 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","132":"A B","388":"F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","16":"6C YC 9C AD","132":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","388":"I eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L","132":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB J BD eC","132":"D E F A DD ED FD","388":"CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F B ND OD PD QD SC 3C","132":"G M N O fB AB BB CB DB EB FB","516":"C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C TD UD","132":"E VD WD XD YD ZD"},H:{"516":"pD"},I:{"1":"KB","16":"YC qD rD sD vD","132":"uD","388":"I tD 4C"},J:{"16":"D","132":"A"},K:{"1":"H","16":"A B C SC 3C","516":"TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","132":"9D"}},B:5,C:":indeterminate CSS pseudo-class",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-initial-letter.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-initial-letter.js new file mode 100644 index 0000000..b08fa7c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-initial-letter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r","260":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r","260":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E BD eC CD DD ED","260":"F","292":"vC wC xC yC zC 0C 1C 2C MD","420":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f ND OD PD QD SC 3C RD TC","260":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD","292":"vC wC xC yC zC 0C 1C 2C","420":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","260":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","260":"H"},L:{"260":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","260":"BB CB DB EB FB GB HB IB JB"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Initial Letter",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-initial-value.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-initial-value.js new file mode 100644 index 0000000..dfafcef --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-initial-value.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","33":"I eB J D E F A B C K L G M N O 9C AD","164":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS initial value",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-lch-lab.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-lch-lab.js new file mode 100644 index 0000000..04e175b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-lch-lab.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r","322":"s"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s 9C AD","194":"t u"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r","322":"s"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f ND OD PD QD SC 3C RD TC"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"CB DB EB FB GB HB IB JB","2":"I AB BB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:4,C:"LCH and Lab color values",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-letter-spacing.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-letter-spacing.js new file mode 100644 index 0000000..95e31b7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-letter-spacing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","16":"5C","132":"J D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD","132":"I eB J eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F ND","132":"B C G M OD PD QD SC 3C RD TC"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"2":"pD"},I:{"1":"KB uD vD","16":"qD rD","132":"YC I sD tD 4C"},J:{"132":"D A"},K:{"1":"H","132":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"letter-spacing CSS property",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-line-clamp.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-line-clamp.js new file mode 100644 index 0000000..e1742f6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-line-clamp.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M","33":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC 9C AD","33":"0 1 2 3 4 5 6 7 8 9 GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"16":"I eB J D E F A B C K","33":"0 1 2 3 4 5 6 7 8 9 L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I BD eC","33":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","33":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"eC SD 4C","33":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"16":"qD rD","33":"YC I KB sD tD 4C uD vD"},J:{"33":"D A"},K:{"2":"A B C SC 3C TC","33":"H"},L:{"33":"KB"},M:{"33":"RC"},N:{"2":"A B"},O:{"33":"UC"},P:{"33":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"33":"7D"},R:{"33":"8D"},S:{"2":"9D","33":"AE"}},B:5,C:"CSS line-clamp",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-logical-props.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-logical-props.js new file mode 100644 index 0000000..041e156 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-logical-props.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","1028":"V W","1540":"P H Q R S T U"},C:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C","164":"YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB 9C AD","1540":"rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","292":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC","1028":"V W","1540":"HC IC JC KC LC MC NC OC PC QC P H Q R S T U"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","292":"I eB J D E F A B C BD eC CD DD ED FD fC SC","1540":"K L TC GD","3076":"HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","292":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B","1028":"MC NC","1540":"6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","292":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD","1540":"eD fD gD hD iD jD","3076":"kD"},H:{"2":"pD"},I:{"1":"KB","292":"YC I qD rD sD tD 4C uD vD"},J:{"292":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D","292":"I wD xD yD zD 0D","1540":"fC 1D 2D 3D 4D"},Q:{"1540":"7D"},R:{"1":"8D"},S:{"1":"AE","1540":"9D"}},B:5,C:"CSS Logical Properties",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-marker-pseudo.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-marker-pseudo.js new file mode 100644 index 0000000..b1f08f5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-marker-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T"},C:{"1":"0 1 2 3 4 5 6 7 8 9 GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T"},E:{"2":"I eB J D E F A B BD eC CD DD ED FD fC","132":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD","132":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"CSS ::marker pseudo-element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-masks.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-masks.js new file mode 100644 index 0000000..5250cb5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-masks.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M","164":"0 1 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","3138":"N","12292":"O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","260":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 9C AD"},D:{"1":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","164":"0 1 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC","164":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","164":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","164":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","164":"uD vD","676":"YC I qD rD sD tD 4C"},J:{"164":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"164":"UC"},P:{"1":"FB GB HB IB JB","164":"I AB BB CB DB EB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"164":"7D"},R:{"164":"8D"},S:{"1":"AE","260":"9D"}},B:4,C:"CSS Masks",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-matches-pseudo.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-matches-pseudo.js new file mode 100644 index 0000000..89ef584 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-matches-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","1220":"P H Q R S T U V"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","548":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L","164":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC","196":"DC EC FC","1220":"GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V"},E:{"1":"L G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","16":"eB","164":"J D E CD DD ED","260":"F A B C K FD fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","164":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B","196":"2B 3B 4B","1220":"5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC"},G:{"1":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C TD UD","164":"E VD WD","260":"XD YD ZD aD bD cD dD eD fD gD hD iD"},H:{"2":"pD"},I:{"1":"KB","16":"YC qD rD sD","164":"I tD 4C uD vD"},J:{"16":"D","164":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D","164":"I wD xD yD zD 0D fC 1D 2D 3D 4D"},Q:{"1220":"7D"},R:{"1":"8D"},S:{"1":"AE","548":"9D"}},B:5,C:":is() CSS pseudo-class",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-math-functions.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-math-functions.js new file mode 100644 index 0000000..4e51c21 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-math-functions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC"},E:{"1":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC","132":"C K SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC ND OD PD QD SC 3C RD TC"},G:{"1":"iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD","132":"cD dD eD fD gD hD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"CSS math functions min(), max() and clamp()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-interaction.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-interaction.js new file mode 100644 index 0000000..e64fe4c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-interaction.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"Media Queries: interaction media features",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-range-syntax.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-range-syntax.js new file mode 100644 index 0000000..d0c5954 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-range-syntax.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l"},C:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y ND OD PD QD SC 3C RD TC"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"Media Queries: Range Syntax",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-resolution.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-resolution.js new file mode 100644 index 0000000..7d27c70 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-resolution.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","132":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","1028":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","260":"I eB J D E F A B C K L G 9C AD","1028":"M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","548":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB","1028":"JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC","548":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F","548":"B C ND OD PD QD SC 3C RD","1028":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC","548":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"132":"pD"},I:{"1":"KB","16":"qD rD","548":"YC I sD tD 4C","1028":"uD vD"},J:{"548":"D A"},K:{"1":"H TC","548":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","1028":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Media Queries: resolution feature",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-scripting.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-scripting.js new file mode 100644 index 0000000..0ea5f35 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-media-scripting.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"Media Queries: scripting media feature",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-mediaqueries.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-mediaqueries.js new file mode 100644 index 0000000..8f0807e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-mediaqueries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"8":"J D E 5C","129":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","129":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","129":"I eB J CD","388":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","129":"eC SD 4C TD UD"},H:{"1":"pD"},I:{"1":"KB uD vD","129":"YC I qD rD sD tD 4C"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"129":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS3 Media Queries",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-mixblendmode.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-mixblendmode.js new file mode 100644 index 0000000..f342dbb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-mixblendmode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB","194":"JB gB hB iB jB kB lB mB nB oB pB qB"},E:{"2":"I eB J D BD eC CD DD","260":"E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB ND OD PD QD SC 3C RD TC"},G:{"2":"eC SD 4C TD UD VD","260":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Blending of HTML/SVG elements",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-module-scripts.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-module-scripts.js new file mode 100644 index 0000000..928a71a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-module-scripts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a","132":"0 1 2 3 4 b c d e f g h i j k l m n o p q r s t u v w x y z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a","132":"0 1 2 3 4 b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"16":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"194":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:1,C:"CSS Module Scripts",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-motion-paths.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-motion-paths.js new file mode 100644 index 0000000..cf546a5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-motion-paths.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB","194":"tB uB vB"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB ND OD PD QD SC 3C RD TC","194":"gB hB iB"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"CSS Motion Path",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-namespaces.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-namespaces.js new file mode 100644 index 0000000..f974eaa --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-namespaces.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS namespaces",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-nesting.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-nesting.js new file mode 100644 index 0000000..d618640 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-nesting.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q","194":"r s t","516":"0 1 u v w x y z"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w 9C AD","322":"x y"},D:{"1":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q","194":"r s t","516":"0 1 u v w x y z"},E:{"1":"oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC","516":"mC KD WC nC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c ND OD PD QD SC 3C RD TC","194":"d e f","516":"g h i j k l m n"},G:{"1":"oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC","516":"mC nD WC nC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"FB GB HB IB JB","2":"I AB BB CB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","516":"DB EB"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Nesting",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-not-sel-list.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-not-sel-list.js new file mode 100644 index 0000000..ba3dba3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-not-sel-list.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O H Q R S T U V","16":"P"},C:{"1":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"selector list argument of :not()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-nth-child-of.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-nth-child-of.js new file mode 100644 index 0000000..c29489e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-nth-child-of.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"CB DB EB FB GB HB IB JB","2":"I AB BB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"selector list argument of :nth-child and :nth-last-child CSS pseudo-classes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-opacity.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-opacity.js new file mode 100644 index 0000000..21bdbb9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-opacity.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","4":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS3 Opacity",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-optional-pseudo.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-optional-pseudo.js new file mode 100644 index 0000000..1dece77 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-optional-pseudo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F ND","132":"B C OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"132":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"H","132":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:":optional CSS pseudo-class",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow-anchor.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow-anchor.js new file mode 100644 index 0000000..cc62550 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow-anchor.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B"},E:{"1":"MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"CSS overflow-anchor (Scroll Anchoring)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow-overlay.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow-overlay.js new file mode 100644 index 0000000..fbd301d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow-overlay.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v","2":"C K L G M N O","130":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v","16":"I eB J D E F A B C K L","130":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B CD DD ED FD fC SC","16":"BD eC","130":"C K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h","2":"F B C ND OD PD QD SC 3C RD TC","130":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD","16":"eC","130":"dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I qD rD sD tD 4C uD vD","130":"KB"},J:{"16":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"130":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"CSS overflow: overlay",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow.js new file mode 100644 index 0000000..f1509e3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overflow.js @@ -0,0 +1 @@ +module.exports={A:{A:{"388":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"P H Q R S T U V W X","388":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","260":"aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H","388":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","260":"GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X","388":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","260":"L G GD HD ID gC hC UC JD","388":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","260":"5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC","388":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B ND OD PD QD SC 3C RD TC"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","260":"iD jD kD lD gC hC UC mD","388":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD"},H:{"388":"pD"},I:{"1":"KB","388":"YC I qD rD sD tD 4C uD vD"},J:{"388":"D A"},K:{"1":"H","388":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"388":"A B"},O:{"388":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D","388":"I wD xD yD zD 0D fC 1D 2D 3D 4D"},Q:{"388":"7D"},R:{"1":"8D"},S:{"1":"AE","388":"9D"}},B:5,C:"CSS overflow property",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js new file mode 100644 index 0000000..bbcb984 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","132":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"C K L G M N","516":"O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC","260":"BC CC"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD","1090":"G HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB ND OD PD QD SC 3C RD TC","260":"0B 1B"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD","1090":"kD lD gC hC UC mD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"CSS overscroll-behavior",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-page-break.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-page-break.js new file mode 100644 index 0000000..3afe141 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-page-break.js @@ -0,0 +1 @@ +module.exports={A:{A:{"388":"A B","900":"J D E F 5C"},B:{"388":"C K L G M N O","641":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","900":"P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p"},C:{"772":"0 1 2 3 4 5 6 7 8 9 DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","900":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC 9C AD"},D:{"641":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","900":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p"},E:{"772":"A","900":"I eB J D E F B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"16":"F ND","129":"B C OD PD QD SC 3C RD TC","641":"0 1 2 3 4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x y z","900":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b"},G:{"900":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"129":"pD"},I:{"641":"KB","900":"YC I qD rD sD tD 4C uD vD"},J:{"900":"D A"},K:{"129":"A B C SC 3C TC","641":"H"},L:{"900":"KB"},M:{"772":"RC"},N:{"388":"A B"},O:{"900":"UC"},P:{"641":"BB CB DB EB FB GB HB IB JB","900":"I AB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"900":"7D"},R:{"900":"8D"},S:{"772":"AE","900":"9D"}},B:2,C:"CSS page-break properties",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-paged-media.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-paged-media.js new file mode 100644 index 0000000..e642571 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-paged-media.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D 5C","132":"E F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O 9C AD","132":"fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","132":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC"},H:{"16":"pD"},I:{"16":"YC I KB qD rD sD tD 4C uD vD"},J:{"16":"D A"},K:{"1":"H","16":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"258":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"132":"9D AE"}},B:5,C:"CSS Paged Media (@page)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-paint-api.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-paint-api.js new file mode 100644 index 0000000..d6753b3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-paint-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC"},E:{"2":"I eB J D E F A B C BD eC CD DD ED FD fC SC","194":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:4,C:"CSS Painting API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-placeholder-shown.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-placeholder-shown.js new file mode 100644 index 0000000..c9af83f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-placeholder-shown.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","292":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","164":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","164":"9D"}},B:5,C:":placeholder-shown CSS pseudo-class",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-placeholder.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-placeholder.js new file mode 100644 index 0000000..6bf7999 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-placeholder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","36":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","33":"fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","130":"6C YC I eB J D E F A B C K L G M N O 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","36":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","36":"eB J D E F A CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","36":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD","36":"E 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","36":"YC I qD rD sD tD 4C uD vD"},J:{"36":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"36":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","36":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","33":"9D"}},B:5,C:"::placeholder CSS pseudo-element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-print-color-adjust.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-print-color-adjust.js new file mode 100644 index 0000000..1521a3c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-print-color-adjust.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7 8 9 N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB"},L:{"1":"KB"},B:{"1":"TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB 9C AD","33":"yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e"},M:{"1":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"3 4 5 6 7 8 9","2":"F B C ND OD PD QD SC 3C RD TC","33":"0 1 2 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},K:{"2":"A B C SC 3C TC","33":"H"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"I eB BD eC CD MD","33":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},P:{"1":"JB","33":"I AB BB CB DB EB FB GB HB IB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","33":"uD vD"}},B:6,C:"print-color-adjust property",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-read-only-write.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-read-only-write.js new file mode 100644 index 0000000..e810da7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-read-only-write.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","16":"6C","33":"YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L","132":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD eC","132":"I eB J D E CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F B ND OD PD QD SC","132":"C G M N O fB AB BB CB 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD","132":"E 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","16":"qD rD","132":"YC I sD tD 4C uD vD"},J:{"1":"A","132":"D"},K:{"1":"H","2":"A B SC","132":"C 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","33":"9D"}},B:1,C:"CSS :read-only and :read-write selectors",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-rebeccapurple.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-rebeccapurple.js new file mode 100644 index 0000000..3b5a47b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-rebeccapurple.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","132":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD","16":"DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB ND OD PD QD SC 3C RD TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Rebeccapurple color",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-reflections.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-reflections.js new file mode 100644 index 0000000..e024e06 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-reflections.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"BD eC","33":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","33":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"33":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"33":"YC I KB qD rD sD tD 4C uD vD"},J:{"33":"D A"},K:{"2":"A B C SC 3C TC","33":"H"},L:{"33":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"33":"UC"},P:{"33":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"33":"7D"},R:{"33":"8D"},S:{"2":"9D AE"}},B:7,C:"CSS Reflections",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-regions.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-regions.js new file mode 100644 index 0000000..fef72a7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-regions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","420":"A B"},B:{"2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","420":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","36":"G M N O","66":"fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB"},E:{"2":"I eB J C K L G BD eC CD SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","33":"D E F A B DD ED FD fC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"eC SD 4C TD UD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"E VD WD XD YD ZD aD bD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"420":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Regions",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-relative-colors.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-relative-colors.js new file mode 100644 index 0000000..8220062 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-relative-colors.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","194":"0","260":"1 2 3 4 5 6 7 8 9 LB MB NB"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD","260":"LB MB NB OB PB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","194":"0","260":"1 2 3 4 5 6 7 8 9 LB MB NB"},E:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC","260":"lC mC KD WC nC oC pC qC rC LD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l ND OD PD QD SC 3C RD TC","194":"m n","260":"o p q r s t u v w x y"},G:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC","260":"lC mC nD WC nC oC pC qC rC oD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","260":"H"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","260":"FB GB HB IB JB"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Relative color syntax",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-repeating-gradients.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-repeating-gradients.js new file mode 100644 index 0000000..df90bd6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-repeating-gradients.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C","33":"I eB J D E F A B C K L G AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F","33":"A B C K L G M N O fB AB BB CB DB EB FB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC","33":"J CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD","33":"C RD","36":"SC 3C"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C","33":"TD UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC qD rD sD","33":"I tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H TC","2":"A B","33":"C","36":"SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS Repeating Gradients",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-resize.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-resize.js new file mode 100644 index 0000000..92139d2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-resize.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","33":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD","132":"TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:2,C:"CSS resize property",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-revert-value.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-revert-value.js new file mode 100644 index 0000000..bd64f77 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-revert-value.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC ND OD PD QD SC 3C RD TC"},G:{"1":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"CSS revert value",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-rrggbbaa.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-rrggbbaa.js new file mode 100644 index 0000000..dc3aa53 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-rrggbbaa.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B","194":"2B 3B 4B 5B 6B 7B 8B ZC 9B aC"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB ND OD PD QD SC 3C RD TC","194":"pB qB rB sB tB uB vB wB xB yB zB 0B 1B"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","194":"wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"#rrggbbaa hex color notation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-scroll-behavior.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-scroll-behavior.js new file mode 100644 index 0000000..30e4101 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-scroll-behavior.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","129":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB","129":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","450":"rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC GD","578":"L G HD ID gC"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB ND OD PD QD SC 3C RD TC","129":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","450":"IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD","578":"kD lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"129":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"129":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"CSS Scroll-behavior",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-scrollbar.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-scrollbar.js new file mode 100644 index 0000000..d181ce1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-scrollbar.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J D E F A B 5C"},B:{"1":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","292":"0 1 2 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC 9C AD","3138":"BC"},D:{"1":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","292":"0 1 2 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"1":"zC 0C 1C 2C MD","16":"I eB BD eC","292":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","292":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o"},G:{"1":"zC 0C 1C 2C","2":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC","16":"eC SD 4C TD UD","292":"VD","804":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD"},H:{"2":"pD"},I:{"16":"qD rD","292":"YC I KB sD tD 4C uD vD"},J:{"292":"D A"},K:{"2":"A B C SC 3C TC","292":"H"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"292":"UC"},P:{"1":"FB GB HB IB JB","292":"I AB BB CB DB EB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"292":"7D"},R:{"292":"8D"},S:{"2":"9D AE"}},B:4,C:"CSS scrollbar styling",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-sel2.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-sel2.js new file mode 100644 index 0000000..6774394 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-sel2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"D E F A B","2":"5C","8":"J"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS 2.1 selectors",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-sel3.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-sel3.js new file mode 100644 index 0000000..fcda314 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-sel3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"5C","8":"J","132":"D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS3 selectors",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-selection.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-selection.js new file mode 100644 index 0000000..952a8df --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-selection.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","33":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"C H 3C TC","16":"A B SC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","33":"9D"}},B:5,C:"::selection CSS pseudo-element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-shapes.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-shapes.js new file mode 100644 index 0000000..b88820d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-shapes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 9C AD","322":"1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB","194":"kB lB mB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD","33":"E F A ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD","33":"E WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"CSS Shapes Level 1",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-snappoints.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-snappoints.js new file mode 100644 index 0000000..55f309a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-snappoints.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","6308":"A","6436":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","6436":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB 9C AD","2052":"pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC","8258":"EC FC GC"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED","3108":"F A FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B ND OD PD QD SC 3C RD TC","8258":"4B 5B 6B 7B 8B 9B AC BC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD","3108":"XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2052":"9D"}},B:4,C:"CSS Scroll Snap",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-sticky.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-sticky.js new file mode 100644 index 0000000..53c373b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-sticky.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G","1028":"P H Q R S T U V W X Y","4100":"M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB 9C AD","194":"GB HB IB JB gB hB","516":"iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B","322":"DB EB FB GB HB IB JB gB hB iB jB kB lB mB 2B 3B 4B 5B","1028":"6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD","33":"E F A B C ED FD fC SC TC","2084":"D DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB ND OD PD QD SC 3C RD TC","322":"pB qB rB","1028":"sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},G:{"1":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"E WD XD YD ZD aD bD cD dD eD","2084":"UD VD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD"},Q:{"1028":"7D"},R:{"1":"8D"},S:{"1":"AE","516":"9D"}},B:5,C:"CSS position:sticky",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-subgrid.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-subgrid.js new file mode 100644 index 0000000..fefe916 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-subgrid.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v","194":"w x y"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v","194":"w x y"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h ND OD PD QD SC 3C RD TC","194":"i j k"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"EB FB GB HB IB JB","2":"I AB BB CB DB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"CSS Subgrid",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-supports-api.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-supports-api.js new file mode 100644 index 0000000..830a678 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-supports-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB 9C AD","66":"AB BB","260":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB","260":"IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD","132":"TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"132":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C","132":"TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS.supports() API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-table.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-table.js new file mode 100644 index 0000000..074d8ce --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-table.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F A B","2":"J D 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","132":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS Table display",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-align-last.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-align-last.js new file mode 100644 index 0000000..810052a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-align-last.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","4":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B 9C AD","33":"C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB","322":"lB mB nB oB pB qB rB sB tB uB vB wB"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB ND OD PD QD SC 3C RD TC","578":"CB DB EB FB GB HB IB JB gB hB iB jB"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","33":"9D"}},B:4,C:"CSS3 text-align-last",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-box-trim.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-box-trim.js new file mode 100644 index 0000000..e76e9ff --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-box-trim.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","322":"LB MB NB OB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","322":"LB MB NB OB PB"},E:{"1":"tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC","194":"lC mC KD WC nC oC pC qC rC LD XC sC"},F:{"1":"7 8 9","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y ND OD PD QD SC 3C RD TC","322":"0 1 2 3 4 5 6 z"},G:{"1":"tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC","194":"lC mC nD WC nC oC pC qC rC oD XC sC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Text Box",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-indent.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-indent.js new file mode 100644 index 0000000..98034f1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-indent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J D E F A B 5C"},B:{"1":"dB","132":"C K L G M N O","388":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},C:{"1":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","132":"0 1 2 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"dB KB cC RC dC","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB","388":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","132":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"132":"F B C G M N O fB AB BB CB DB EB ND OD PD QD SC 3C RD TC","388":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","132":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"132":"pD"},I:{"1":"KB","132":"YC I qD rD sD tD 4C uD vD"},J:{"132":"D A"},K:{"132":"A B C SC 3C TC","388":"H"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"388":"UC"},P:{"132":"I","388":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"388":"7D"},R:{"388":"8D"},S:{"132":"9D AE"}},B:4,C:"CSS text-indent",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-justify.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-justify.js new file mode 100644 index 0000000..1a675e6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-justify.js @@ -0,0 +1 @@ +module.exports={A:{A:{"16":"J D 5C","132":"E F A B"},B:{"1":"cB dB","132":"C K L G M N O","322":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 9C AD","1025":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","1602":"4B"},D:{"1":"cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB","322":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB ND OD PD QD SC 3C RD TC","322":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","322":"H"},L:{"1":"KB"},M:{"1025":"RC"},N:{"132":"A B"},O:{"322":"UC"},P:{"2":"I","322":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"322":"7D"},R:{"322":"8D"},S:{"2":"9D","1025":"AE"}},B:4,C:"CSS text-justify",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-orientation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-orientation.js new file mode 100644 index 0000000..39799ed --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-orientation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB 9C AD","194":"oB pB qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},E:{"1":"L G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD","16":"A","33":"B C K fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS text-orientation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-spacing.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-spacing.js new file mode 100644 index 0000000..a49c982 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-spacing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D 5C","161":"E F A B"},B:{"2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"16":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS Text 4 text-spacing",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js new file mode 100644 index 0000000..3ca4faf --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-text-wrap-balance.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v","132":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB"},C:{"1":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v","132":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB"},E:{"1":"rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g ND OD PD QD SC 3C RD TC","132":"h i j k l m n o p q r s t u v w x"},G:{"1":"rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","132":"H"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","132":"DB EB FB GB HB IB JB"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS text-wrap: balance",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-textshadow.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-textshadow.js new file mode 100644 index 0000000..749fd3d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-textshadow.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","129":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","260":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"4":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"A","4":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"129":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS3 Text-shadow",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-touch-action.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-touch-action.js new file mode 100644 index 0000000..29b1b3f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-touch-action.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F 5C","289":"A"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD","194":"JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B","1025":"2B 3B 4B 5B 6B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},E:{"2050":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB ND OD PD QD SC 3C RD TC"},G:{"1":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD","516":"YD ZD aD bD cD dD eD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","289":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","194":"9D"}},B:2,C:"CSS touch-action property",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-transitions.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-transitions.js new file mode 100644 index 0000000..03f692a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-transitions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","33":"eB J D E F A B C K L G","164":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","33":"J CD","164":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F ND OD","33":"C","164":"B PD QD SC 3C RD"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"UD","164":"eC SD 4C TD"},H:{"2":"pD"},I:{"1":"KB uD vD","33":"YC I qD rD sD tD 4C"},J:{"1":"A","33":"D"},K:{"1":"H TC","33":"C","164":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"CSS3 Transitions",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-unicode-bidi.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-unicode-bidi.js new file mode 100644 index 0000000..20f3a9d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-unicode-bidi.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","33":"N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB","132":"6C YC I eB J D E F 9C AD","292":"A B C K L G M"},D:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C K L G M","548":"N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},E:{"132":"I eB J D E BD eC CD DD ED","548":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"132":"E eC SD 4C TD UD VD WD","548":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"16":"pD"},I:{"1":"KB","16":"YC I qD rD sD tD 4C uD vD"},J:{"16":"D A"},K:{"1":"H","16":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","16":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","33":"9D"}},B:4,C:"CSS unicode-bidi property",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-unset-value.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-unset-value.js new file mode 100644 index 0000000..a556bd4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-unset-value.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB ND OD PD QD SC 3C RD TC"},G:{"1":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS unset value",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-variables.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-variables.js new file mode 100644 index 0000000..9d2e5e9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-variables.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L","260":"G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB","194":"yB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED","260":"FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB ND OD PD QD SC 3C RD TC","194":"lB"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD","260":"YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS Variables (Custom Properties)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-when-else.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-when-else.js new file mode 100644 index 0000000..00091b4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-when-else.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS @when / @else conditional rules",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-widows-orphans.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-widows-orphans.js new file mode 100644 index 0000000..b0adab9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-widows-orphans.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D 5C","129":"E F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","129":"F B ND OD PD QD SC 3C RD"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H TC","2":"A B C SC 3C"},L:{"1":"KB"},M:{"2":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:2,C:"CSS widows & orphans",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-width-stretch.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-width-stretch.js new file mode 100644 index 0000000..1610848 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-width-stretch.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB","33":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB"},L:{"1":"KB"},B:{"1":"VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB 9C AD","33":"dB KB cC RC dC 7C 8C"},M:{"33":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"4 5 6 7 8 9","2":"F B C ND OD PD QD SC 3C RD TC","33":"0 1 2 3 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},K:{"2":"A B C SC 3C TC","33":"H"},E:{"2":"I eB J BD eC CD DD MD","33":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},G:{"2":"eC SD 4C TD UD","33":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},P:{"2":"I","33":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","33":"uD vD"}},B:6,C:"width: stretch property",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-writing-mode.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-writing-mode.js new file mode 100644 index 0000000..ca4928b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-writing-mode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB 9C AD","322":"mB nB oB pB qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J","16":"D","33":"E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","16":"eB","33":"J D E F A CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C","33":"E TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"qD rD sD","33":"YC I tD 4C uD vD"},J:{"33":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"36":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","33":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS writing-mode property",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css-zoom.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-zoom.js new file mode 100644 index 0000000..97811cc --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css-zoom.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D 5C","129":"E F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC"},H:{"2":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"129":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:5,C:"CSS zoom",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-attr.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-attr.js new file mode 100644 index 0000000..60dcf01 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-attr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"JB","2":"I AB BB CB DB EB FB GB HB IB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"CSS3 attr() function for all properties",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-boxsizing.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-boxsizing.js new file mode 100644 index 0000000..38756a6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-boxsizing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F A B","8":"J D 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","33":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","33":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"eC SD 4C"},H:{"1":"pD"},I:{"1":"I KB tD 4C uD vD","33":"YC qD rD sD"},J:{"1":"A","33":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"CSS3 Box-sizing",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-colors.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-colors.js new file mode 100644 index 0000000..d737216 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-colors.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","4":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z OD PD QD SC 3C RD TC","2":"F","4":"ND"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS3 Colors",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors-grab.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors-grab.js new file mode 100644 index 0000000..7732f5a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors-grab.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","33":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","33":"I eB J D E F A BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F B ND OD PD QD SC 3C","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"33":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:2,C:"CSS grab & grabbing cursors",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors-newer.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors-newer.js new file mode 100644 index 0000000..8678bf1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors-newer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","33":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","33":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F B ND OD PD QD SC 3C","33":"G M N O fB AB BB CB DB"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"33":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:2,C:"CSS3 Cursors: zoom-in & zoom-out",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors.js new file mode 100644 index 0000000..332a30b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-cursors.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","132":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","4":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","4":"I"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","4":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","260":"F B C ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D","16":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:2,C:"CSS3 Cursors (original values)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-tabsize.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-tabsize.js new file mode 100644 index 0000000..96807a7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/css3-tabsize.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","33":"3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y","164":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB","132":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB"},E:{"1":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD","132":"D E F A B C K DD ED FD fC SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F ND OD PD","132":"G M N O fB AB BB CB DB EB FB GB HB IB","164":"B C QD SC 3C RD TC"},G:{"1":"iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD","132":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD"},H:{"164":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","132":"uD vD"},J:{"132":"D A"},K:{"1":"H","2":"A","164":"B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"164":"9D AE"}},B:4,C:"CSS3 tab-size",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/currentcolor.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/currentcolor.js new file mode 100644 index 0000000..0b21464 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/currentcolor.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS currentColor value",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/custom-elements.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/custom-elements.js new file mode 100644 index 0000000..ebdd9ea --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/custom-elements.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","8":"A B"},B:{"1":"P","2":"0 1 2 3 4 5 6 7 8 9 H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","8":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","66":"DB EB FB GB HB IB JB","72":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B"},D:{"1":"jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","66":"HB IB JB gB hB iB"},E:{"2":"I eB BD eC CD","8":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC","2":"0 1 2 3 4 5 6 7 8 9 F B C FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","66":"G M N O fB"},G:{"2":"eC SD 4C TD UD","8":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"vD","2":"YC I KB qD rD sD tD 4C uD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I wD xD yD zD 0D fC 1D 2D","2":"AB BB CB DB EB FB GB HB IB JB 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"2":"8D"},S:{"2":"AE","72":"9D"}},B:7,C:"Custom Elements (deprecated V0 spec)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/custom-elementsv1.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/custom-elementsv1.js new file mode 100644 index 0000000..8f8b24e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/custom-elementsv1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","8":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","8":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB 9C AD","8":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB","456":"0B 1B 2B 3B 4B 5B 6B 7B 8B","712":"ZC 9B aC AC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B","8":"2B 3B","132":"4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC"},E:{"2":"I eB J D BD eC CD DD ED","8":"E F A FD","132":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB ND OD PD QD SC 3C RD TC","132":"rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD","132":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","132":"wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","8":"9D"}},B:1,C:"Custom Elements (V1)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/customevent.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/customevent.js new file mode 100644 index 0000000..3dbb16a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/customevent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","132":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD","132":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I","16":"eB J D E K L","388":"F A B C"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","16":"eB J","388":"CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F ND OD PD QD","132":"B SC 3C"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"SD","16":"eC 4C","388":"TD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"qD rD sD","388":"YC I tD 4C"},J:{"1":"A","388":"D"},K:{"1":"C H TC","2":"A","132":"B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"CustomEvent",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/customizable-select.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/customizable-select.js new file mode 100644 index 0000000..e751a80 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/customizable-select.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e","194":"0 1 2 3 4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e","194":"0 1 2 3 4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB"},E:{"1":"MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},F:{"1":"2 3 4 5 6 7 8 9","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC ND OD PD QD SC 3C RD TC","194":"0 1 R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","194":"H"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:1,C:"Customizable Select element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/datalist.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/datalist.js new file mode 100644 index 0000000..014eb18 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/datalist.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","8":"J D E F","260":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K L G","1284":"M N O"},C:{"8":"6C YC 9C AD","516":"k l m n o p q r","4612":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j","8196":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","8":"I eB J D E F A B C K L G M N O fB","132":"AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I eB J D E F A B C BD eC CD DD ED FD fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","132":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC"},G:{"8":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD","18436":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB vD","8":"YC I qD rD sD tD 4C uD"},J:{"1":"A","8":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"8":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:1,C:"Datalist element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/dataset.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/dataset.js new file mode 100644 index 0000000..34e6bbe --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/dataset.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","4":"J D E F A 5C"},B:{"1":"C K L G M","129":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","4":"6C YC I eB 9C AD","129":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"vB wB xB yB zB 0B 1B 2B 3B 4B","4":"I eB J","129":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"4":"I eB BD eC","129":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"C iB jB kB lB mB nB oB pB qB rB SC 3C RD TC","4":"F B ND OD PD QD","129":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"4":"eC SD 4C","129":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"4":"pD"},I:{"4":"qD rD sD","129":"YC I KB tD 4C uD vD"},J:{"129":"D A"},K:{"1":"C SC 3C TC","4":"A B","129":"H"},L:{"129":"KB"},M:{"129":"RC"},N:{"1":"B","4":"A"},O:{"129":"UC"},P:{"129":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"129":"7D"},R:{"129":"8D"},S:{"1":"9D","129":"AE"}},B:1,C:"dataset & data-* attributes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/datauri.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/datauri.js new file mode 100644 index 0000000..c241c10 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/datauri.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D 5C","132":"E","260":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K G M N O","772":"L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"260":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Data URIs",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js new file mode 100644 index 0000000..0736b87 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js @@ -0,0 +1 @@ +module.exports={A:{A:{"16":"5C","132":"J D E F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","132":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD","260":"2B 3B 4B 5B","772":"JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB","260":"oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC","772":"EB FB GB HB IB JB gB hB iB jB kB lB mB nB"},E:{"1":"C K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC","132":"J D E F A CD DD ED FD","260":"B fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F B C ND OD PD QD SC 3C RD","132":"TC","260":"FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B","772":"G M N O fB AB BB CB DB EB"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C TD","132":"E UD VD WD XD YD ZD"},H:{"132":"pD"},I:{"1":"KB","16":"YC qD rD sD","132":"I tD 4C","772":"uD vD"},J:{"132":"D A"},K:{"1":"H","16":"A B C SC 3C","132":"TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","260":"I wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","132":"9D"}},B:6,C:"Date.prototype.toLocaleDateString",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js new file mode 100644 index 0000000..22be384 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y","132":"Z a b c d e f g h i j k l m n o p q r s"},C:{"1":"5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S","66":"T U V W X","132":"Y Z a b c d e f g h i j k l m n o p q r s"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC ND OD PD QD SC 3C RD TC","132":"PC QC P H Q bC R S T U V W X Y Z a b c d e"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"CB DB EB FB GB HB IB JB","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D","16":"5D","132":"AB BB VC WC XC 6D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:1,C:"Declarative Shadow DOM",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/decorators.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/decorators.js new file mode 100644 index 0000000..4bdde19 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/decorators.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Decorators",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/details.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/details.js new file mode 100644 index 0000000..75da13c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/details.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"F A B 5C","8":"J D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C","8":"YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 9C AD","194":"xB yB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","8":"I eB J D E F A B","257":"fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB","769":"C K L G M N O"},E:{"1":"C K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I eB BD eC CD","257":"J D E F A DD ED FD","1025":"B fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"C SC 3C RD TC","8":"F B ND OD PD QD"},G:{"1":"E UD VD WD XD YD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"eC SD 4C TD","1025":"ZD aD bD"},H:{"8":"pD"},I:{"1":"I KB tD 4C uD vD","8":"YC qD rD sD"},J:{"1":"A","8":"D"},K:{"1":"H","8":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Details & Summary elements",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/deviceorientation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/deviceorientation.js new file mode 100644 index 0000000..e036cf2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/deviceorientation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C","8":"I eB AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J","4":"D E B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB"},E:{"1":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","4":"G M N"},G:{"1":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD","4":"E 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD"},H:{"2":"pD"},I:{"1":"KB vD","2":"qD rD sD","4":"YC I tD 4C uD"},J:{"1":"A","2":"D"},K:{"1":"C H TC","2":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"DeviceOrientation & DeviceMotion events",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/devicepixelratio.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/devicepixelratio.js new file mode 100644 index 0000000..3df3fc1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/devicepixelratio.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"132":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F B ND OD PD QD SC 3C"},G:{"132":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"C H TC","2":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Window.devicePixelRatio",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/dialog.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/dialog.js new file mode 100644 index 0000000..7b4d9d4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/dialog.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 9C AD","194":"3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P","1218":"H Q bC R S T U V W X Y Z a b c d e f"},D:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB","322":"iB jB kB lB mB"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O ND OD PD QD SC 3C RD TC","578":"fB AB BB CB DB"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:1,C:"Dialog element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/dispatchevent.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/dispatchevent.js new file mode 100644 index 0000000..9f4450e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/dispatchevent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","16":"5C","129":"F A","130":"J D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","16":"F"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","129":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"EventTarget.dispatchEvent",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/dnssec.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/dnssec.js new file mode 100644 index 0000000..d6a2016 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/dnssec.js @@ -0,0 +1 @@ +module.exports={A:{A:{"132":"J D E F A B 5C"},B:{"132":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"132":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"132":"0 1 2 3 4 5 6 7 8 9 I eB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","388":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB"},E:{"132":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"132":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"132":"pD"},I:{"132":"YC I KB qD rD sD tD 4C uD vD"},J:{"132":"D A"},K:{"132":"A B C H SC 3C TC"},L:{"132":"KB"},M:{"132":"RC"},N:{"132":"A B"},O:{"132":"UC"},P:{"132":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"132":"7D"},R:{"132":"8D"},S:{"132":"9D AE"}},B:6,C:"DNSSEC and DANE",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/do-not-track.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/do-not-track.js new file mode 100644 index 0000000..70aaf03 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/do-not-track.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","164":"F A","260":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E 9C AD","516":"F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB"},E:{"1":"J A B C CD FD fC SC","2":"I eB K L G BD eC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","1028":"D E F DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD SC 3C RD"},G:{"1":"XD YD ZD aD bD cD dD","2":"eC SD 4C TD UD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","1028":"E VD WD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"16":"D","1028":"A"},K:{"1":"H TC","16":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"164":"A","260":"B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:7,C:"Do Not Track API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/document-currentscript.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-currentscript.js new file mode 100644 index 0000000..639b77e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-currentscript.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB"},E:{"1":"E F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G ND OD PD QD SC 3C RD TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"document.currentScript",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js new file mode 100644 index 0000000..824211e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","16":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","16":"F"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:7,C:"document.evaluate & XPath",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/document-execcommand.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-execcommand.js new file mode 100644 index 0000000..cae6e86 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-execcommand.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z OD PD QD SC 3C RD TC","16":"F ND"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD","16":"4C TD UD"},H:{"2":"pD"},I:{"1":"KB tD 4C uD vD","2":"YC I qD rD sD"},J:{"1":"A","2":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:7,C:"Document.execCommand()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/document-policy.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-policy.js new file mode 100644 index 0000000..b81860e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-policy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O P H Q R S","132":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S","132":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC ND OD PD QD SC 3C RD TC","132":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","132":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","132":"H"},L:{"132":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"132":"8D"},S:{"2":"9D AE"}},B:7,C:"Document Policy",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/document-scrollingelement.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-scrollingelement.js new file mode 100644 index 0000000..fb09ded --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/document-scrollingelement.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","16":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"document.scrollingElement",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/documenthead.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/documenthead.js new file mode 100644 index 0000000..a408ccb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/documenthead.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","16":"eB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","2":"F ND OD PD QD"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"document.head",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/dom-manip-convenience.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/dom-manip-convenience.js new file mode 100644 index 0000000..5b3abf4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/dom-manip-convenience.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B","194":"2B 3B"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB ND OD PD QD SC 3C RD TC","194":"qB"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"DOM manipulation convenience methods",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/dom-range.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/dom-range.js new file mode 100644 index 0000000..cd48f49 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/dom-range.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"5C","8":"J D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Document Object Model Range",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/domcontentloaded.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/domcontentloaded.js new file mode 100644 index 0000000..8b3da4d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/domcontentloaded.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"DOMContentLoaded",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/dommatrix.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/dommatrix.js new file mode 100644 index 0000000..4c4cf91 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/dommatrix.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","132":"A B"},B:{"132":"C K L G M N O","1028":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB 9C AD","1028":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2564":"jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB","3076":"zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC"},D:{"16":"I eB J D","132":"F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B","388":"E","1028":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"16":"I BD eC","132":"eB J D E F A CD DD ED FD fC","1028":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","132":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB","1028":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"16":"eC SD 4C","132":"E TD UD VD WD XD YD ZD aD","1028":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"132":"I tD 4C uD vD","292":"YC qD rD sD","1028":"KB"},J:{"16":"D","132":"A"},K:{"2":"A B C SC 3C TC","1028":"H"},L:{"1028":"KB"},M:{"1028":"RC"},N:{"132":"A B"},O:{"1028":"UC"},P:{"132":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1028":"7D"},R:{"1028":"8D"},S:{"1028":"AE","2564":"9D"}},B:4,C:"DOMMatrix",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/download.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/download.js new file mode 100644 index 0000000..9489146 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/download.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Download attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/dragndrop.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/dragndrop.js new file mode 100644 index 0000000..6556f83 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/dragndrop.js @@ -0,0 +1 @@ +module.exports={A:{A:{"644":"J D E F 5C","772":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","8":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","8":"F B ND OD PD QD SC 3C RD"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","1025":"KB"},J:{"2":"D A"},K:{"1":"TC","8":"A B C SC 3C","1025":"H"},L:{"1025":"KB"},M:{"2":"RC"},N:{"1":"A B"},O:{"1025":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:1,C:"Drag and Drop",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/element-closest.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/element-closest.js new file mode 100644 index 0000000..8710978 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/element-closest.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Element.closest()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/element-from-point.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/element-from-point.js new file mode 100644 index 0000000..afb0c75 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/element-from-point.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B","16":"5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","16":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","16":"F ND OD PD QD"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"C H TC","16":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"document.elementFromPoint()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/element-scroll-methods.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/element-scroll-methods.js new file mode 100644 index 0000000..18bee2b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/element-scroll-methods.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B"},E:{"1":"L G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD","132":"A B C K fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB ND OD PD QD SC 3C RD TC"},G:{"1":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD","132":"ZD aD bD cD dD eD fD gD hD iD jD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Scroll methods on elements (scroll, scrollTo, scrollBy)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/eme.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/eme.js new file mode 100644 index 0000000..0f167b4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/eme.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","164":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB","132":"lB mB nB oB pB qB rB"},E:{"1":"C K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD","164":"D E F A B ED FD fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB ND OD PD QD SC 3C RD TC","132":"CB DB EB FB GB HB IB"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Encrypted Media Extensions",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/eot.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/eot.js new file mode 100644 index 0000000..8502277 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/eot.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B","2":"5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"EOT - Embedded OpenType fonts",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/es5.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/es5.js new file mode 100644 index 0000000..a48dac5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/es5.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D 5C","260":"F","1026":"E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","4":"6C YC 9C AD","132":"I eB J D E F A B C K L G M N O fB AB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","4":"I eB J D E F A B C K L G M N O","132":"fB AB BB CB"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","4":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","4":"F B C ND OD PD QD SC 3C RD","132":"TC"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","4":"eC SD 4C TD"},H:{"132":"pD"},I:{"1":"KB uD vD","4":"YC qD rD sD","132":"tD 4C","900":"I"},J:{"1":"A","4":"D"},K:{"1":"H","4":"A B C SC 3C","132":"TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"ECMAScript 5",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-class.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-class.js new file mode 100644 index 0000000..7b38939 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-class.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB","132":"sB tB uB vB wB xB yB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB ND OD PD QD SC 3C RD TC","132":"JB gB hB iB jB kB lB"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"ES6 classes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-generators.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-generators.js new file mode 100644 index 0000000..65dae5b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-generators.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"ES6 Generators",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js new file mode 100644 index 0000000..798ca74 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC 9C AD","194":"EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB ND OD PD QD SC 3C RD TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"JavaScript modules: dynamic import()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-module.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-module.js new file mode 100644 index 0000000..375e17e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-module.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L","2049":"M N O","2242":"G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 9C AD","322":"4B 5B 6B 7B 8B ZC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC","194":"9B"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD","1540":"fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB ND OD PD QD SC 3C RD TC","194":"xB"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD","1540":"aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"JavaScript modules via script tag",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-number.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-number.js new file mode 100644 index 0000000..1239e71 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-number.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G 9C AD","132":"M N O fB AB BB CB DB EB","260":"FB GB HB IB JB gB","516":"hB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O","1028":"fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","1028":"G M N O fB AB"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD","1028":"tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"ES6 Number",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-string-includes.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-string-includes.js new file mode 100644 index 0000000..112329c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6-string-includes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"String.prototype.includes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/es6.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6.js new file mode 100644 index 0000000..8825005 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/es6.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","388":"B"},B:{"257":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K L","769":"G M N O"},C:{"2":"6C YC I eB 9C AD","4":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B","257":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB","4":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","257":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD","4":"E F ED FD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","4":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB","257":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD","4":"E VD WD XD YD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C","4":"uD vD","257":"KB"},J:{"2":"D","4":"A"},K:{"2":"A B C SC 3C TC","257":"H"},L:{"257":"KB"},M:{"257":"RC"},N:{"2":"A","388":"B"},O:{"257":"UC"},P:{"4":"I","257":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"257":"7D"},R:{"257":"8D"},S:{"4":"9D","257":"AE"}},B:6,C:"ECMAScript 2015 (ES6)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/eventsource.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/eventsource.js new file mode 100644 index 0000000..207e2b1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/eventsource.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","4":"F ND OD PD QD"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"D A"},K:{"1":"C H SC 3C TC","4":"A B"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Server-sent events",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/extended-system-fonts.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/extended-system-fonts.js new file mode 100644 index 0000000..5a320cc --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/extended-system-fonts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for font-family",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/feature-policy.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/feature-policy.js new file mode 100644 index 0000000..0ba30ff --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/feature-policy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"P H Q R S T U V","2":"C K L G M N O","1025":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC 9C AD","260":"0 1 2 3 4 5 6 7 8 9 MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"MC NC OC PC QC P H Q R S T U V","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC","132":"9B aC AC BC CC DC EC FC GC HC IC JC KC LC","1025":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B BD eC CD DD ED FD fC","772":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"AC BC CC DC EC FC GC HC IC JC KC LC MC","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB ND OD PD QD SC 3C RD TC","132":"xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B","1025":"0 1 2 3 4 5 6 7 8 9 NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD","772":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","1025":"H"},L:{"1025":"KB"},M:{"260":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD","132":"zD 0D fC"},Q:{"132":"7D"},R:{"1025":"8D"},S:{"2":"9D","260":"AE"}},B:7,C:"Feature Policy",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/fetch.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/fetch.js new file mode 100644 index 0000000..a00e1c5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/fetch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB 9C AD","1025":"pB","1218":"kB lB mB nB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB","260":"qB","772":"rB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB ND OD PD QD SC 3C RD TC","260":"HB","772":"IB"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Fetch",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/fieldset-disabled.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/fieldset-disabled.js new file mode 100644 index 0000000..2003a67 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/fieldset-disabled.js @@ -0,0 +1 @@ +module.exports={A:{A:{"16":"5C","132":"E F","388":"J D A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G","16":"M N O fB"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z OD PD QD SC 3C RD TC","16":"F ND"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD"},H:{"388":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A","260":"B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"disabled attribute of the fieldset element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/fileapi.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/fileapi.js new file mode 100644 index 0000000..6d674eb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/fileapi.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","260":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C","260":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB","260":"K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB","388":"J D E F A B C"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC","260":"J D E F DD ED FD","388":"CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B ND OD PD QD","260":"C G M N O fB AB BB CB DB EB SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","260":"E UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB vD","2":"qD rD sD","260":"uD","388":"YC I tD 4C"},J:{"260":"A","388":"D"},K:{"1":"H","2":"A B","260":"C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A","260":"B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"File API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/filereader.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/filereader.js new file mode 100644 index 0000000..9e1b1e8 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/filereader.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","132":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","2":"6C YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","2":"F B ND OD PD QD"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"A","2":"D"},K:{"1":"C H SC 3C TC","2":"A B"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"FileReader API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/filereadersync.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/filereadersync.js new file mode 100644 index 0000000..5223ba4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/filereadersync.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F ND OD","16":"B PD QD SC 3C"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"C H 3C TC","2":"A","16":"B SC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"FileReaderSync",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/filesystem.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/filesystem.js new file mode 100644 index 0000000..a9a7266 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/filesystem.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D","33":"0 1 2 3 4 5 6 7 8 9 K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","36":"E F A B C"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","33":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D","33":"A"},K:{"2":"A B C SC 3C TC","33":"H"},L:{"33":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"33":"UC"},P:{"2":"I","33":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"33":"8D"},S:{"2":"9D AE"}},B:7,C:"Filesystem & FileWriter API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/flac.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/flac.js new file mode 100644 index 0000000..6e8c1eb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/flac.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB","16":"uB vB wB","388":"xB yB zB 0B 1B 2B 3B 4B 5B"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","516":"B C SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB ND OD PD QD SC 3C RD TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"qD rD sD","16":"YC I tD 4C uD vD"},J:{"1":"A","2":"D"},K:{"1":"H TC","16":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","129":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"FLAC audio format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/flexbox-gap.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/flexbox-gap.js new file mode 100644 index 0000000..c35a097 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/flexbox-gap.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R"},C:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R"},E:{"1":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC ND OD PD QD SC 3C RD TC"},G:{"1":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"gap property for Flexbox",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/flexbox.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/flexbox.js new file mode 100644 index 0000000..b438382 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/flexbox.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","1028":"B","1316":"A"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","164":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD","516":"CB DB EB FB GB HB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"BB CB DB EB FB GB HB IB","164":"I eB J D E F A B C K L G M N O fB AB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","33":"D E DD ED","164":"I eB J BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B C ND OD PD QD SC 3C RD","33":"G M"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"E VD WD","164":"eC SD 4C TD UD"},H:{"1":"pD"},I:{"1":"KB uD vD","164":"YC I qD rD sD tD 4C"},J:{"1":"A","164":"D"},K:{"1":"H TC","2":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","292":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS Flexible Box Layout Module",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/flow-root.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/flow-root.js new file mode 100644 index 0000000..89a3bd2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/flow-root.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB ND OD PD QD SC 3C RD TC"},G:{"1":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"display: flow-root",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/focusin-focusout-events.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/focusin-focusout-events.js new file mode 100644 index 0000000..2a3395c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/focusin-focusout-events.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B","2":"5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F ND OD PD QD","16":"B SC 3C"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"2":"pD"},I:{"1":"I KB tD 4C uD vD","2":"qD rD sD","16":"YC"},J:{"1":"D A"},K:{"1":"C H TC","2":"A","16":"B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"focusin & focusout events",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/font-family-system-ui.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-family-system-ui.js new file mode 100644 index 0000000..db91dfd --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-family-system-ui.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB 9C AD","132":"tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B","260":"3B 4B 5B"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED","16":"F","132":"A FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB ND OD PD QD SC 3C RD TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD","132":"XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"132":"9D AE"}},B:5,C:"system-ui value for font-family",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/font-feature.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-feature.js new file mode 100644 index 0000000..3662d5e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-feature.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB","164":"I eB J D E F A B C K L"},D:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G","33":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB","292":"M N O fB AB"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"D E F BD eC DD ED","4":"I eB J CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB"},G:{"1":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E VD WD XD","4":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","33":"uD vD"},J:{"2":"D","33":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","33":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS font-feature-settings",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/font-kerning.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-kerning.js new file mode 100644 index 0000000..bf4ffd7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-kerning.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB 9C AD","194":"EB FB GB HB IB JB gB hB iB jB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB","33":"JB gB hB iB"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD","33":"D E F ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G ND OD PD QD SC 3C RD TC","33":"M N O fB"},G:{"1":"dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD","33":"E WD XD YD ZD aD bD cD"},H:{"2":"pD"},I:{"1":"KB vD","2":"YC I qD rD sD tD 4C","33":"uD"},J:{"2":"D","33":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS3 font-kerning",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/font-loading.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-loading.js new file mode 100644 index 0000000..53c5a54 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-loading.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB 9C AD","194":"lB mB nB oB pB qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"CSS Font Loading",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/font-size-adjust.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-size-adjust.js new file mode 100644 index 0000000..75e3bf1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-size-adjust.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","194":"0 1 2 3 4 5 6 7 8 z","962":"P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y"},C:{"1":"0 1 2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C","516":"a b c d e f g h i j k l m n o p q r s t u v w x y z","772":"YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z 9C AD"},D:{"1":"9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB","194":"2 3 4 5 6 7 8","962":"0 1 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"1":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC","772":"lC mC KD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB ND OD PD QD SC 3C RD TC","194":"k l m n o p q r s t u","962":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j"},G:{"1":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC","772":"lC mC nD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"194":"7D"},R:{"2":"8D"},S:{"2":"9D","516":"AE"}},B:2,C:"CSS font-size-adjust",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/font-smooth.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-smooth.js new file mode 100644 index 0000000..f57d446 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-smooth.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","676":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB 9C AD","804":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","1828":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I","676":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"BD eC","676":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","676":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"804":"9D AE"}},B:7,C:"CSS font-smooth",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/font-unicode-range.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-unicode-range.js new file mode 100644 index 0000000..bbc797d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-unicode-range.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","4":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","4":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB 9C AD","194":"mB nB oB pB qB rB sB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","4":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","4":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","4":"G M N O fB AB BB CB"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","4":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","4":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D","4":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"4":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","4":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Font unicode-range subsetting",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/font-variant-alternates.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-variant-alternates.js new file mode 100644 index 0000000..4603b21 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-variant-alternates.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","130":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","130":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s"},C:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","130":"I eB J D E F A B C K L G M N O fB AB BB CB DB","322":"EB FB GB HB IB JB gB hB iB jB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G","130":"M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"D E F BD eC DD ED","130":"I eB J CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","130":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f"},G:{"1":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC VD WD XD","130":"SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","130":"uD vD"},J:{"2":"D","130":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"130":"UC"},P:{"1":"CB DB EB FB GB HB IB JB","130":"I AB BB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"130":"7D"},R:{"130":"8D"},S:{"1":"9D AE"}},B:5,C:"CSS font-variant-alternates",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/font-variant-numeric.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-variant-numeric.js new file mode 100644 index 0000000..2b461c0 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/font-variant-numeric.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB ND OD PD QD SC 3C RD TC"},G:{"1":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D","16":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS font-variant-numeric",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/fontface.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/fontface.js new file mode 100644 index 0000000..685ddc6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/fontface.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","132":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z OD PD QD SC 3C RD TC","2":"F ND"},G:{"1":"E 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","260":"eC SD"},H:{"2":"pD"},I:{"1":"I KB tD 4C uD vD","2":"qD","4":"YC rD sD"},J:{"1":"A","4":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"@font-face Web fonts",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/form-attribute.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/form-attribute.js new file mode 100644 index 0000000..4b6a4fd --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/form-attribute.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","16":"eB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"1":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Form attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/form-submit-attributes.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/form-submit-attributes.js new file mode 100644 index 0000000..a43b517 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/form-submit-attributes.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","2":"F ND","16":"OD PD"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"1":"pD"},I:{"1":"I KB tD 4C uD vD","2":"qD rD sD","16":"YC"},J:{"1":"A","2":"D"},K:{"1":"B C H SC 3C TC","16":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Attributes for form submission",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/form-validation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/form-validation.js new file mode 100644 index 0000000..d166e7c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/form-validation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","132":"eB J D E F A CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z OD PD QD SC 3C RD TC","2":"F ND"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC","132":"E SD 4C TD UD VD WD XD YD ZD"},H:{"516":"pD"},I:{"1":"KB vD","2":"YC qD rD sD","132":"I tD 4C uD"},J:{"1":"A","132":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"132":"RC"},N:{"260":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","132":"9D"}},B:1,C:"Form validation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/forms.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/forms.js new file mode 100644 index 0000000..63c313e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/forms.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","4":"A B","8":"J D E F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","4":"C K L G"},C:{"4":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","8":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","4":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B"},E:{"4":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","4":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B"},G:{"2":"eC","4":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","4":"uD vD"},J:{"2":"D","4":"A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"4":"RC"},N:{"4":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","4":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"4":"9D AE"}},B:1,C:"HTML5 form features",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/fullscreen.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/fullscreen.js new file mode 100644 index 0000000..5682172 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/fullscreen.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","548":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","516":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F 9C AD","676":"A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB","1700":"xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L","676":"G M N O fB","804":"AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC","548":"hC UC JD VC iC jC kC","676":"CD","804":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B C ND OD PD QD SC 3C RD","804":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD","2052":"dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D","292":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A","548":"B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","804":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Fullscreen API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/gamepad.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/gamepad.js new file mode 100644 index 0000000..a4ea9a0 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/gamepad.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB","33":"BB CB DB EB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"Gamepad API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/geolocation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/geolocation.js new file mode 100644 index 0000000..aae1754 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/geolocation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"5C","8":"J D E"},B:{"1":"C K L G M N O","129":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 9C AD","8":"6C YC","129":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB","4":"I","129":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J D E F B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I BD eC","129":"A"},F:{"1":"B C M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB QD SC 3C RD TC","2":"F G ND","8":"OD PD","129":"0 1 2 3 4 5 6 7 8 9 pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"E eC SD 4C TD UD VD WD XD YD","129":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I qD rD sD tD 4C uD vD","129":"KB"},J:{"1":"D A"},K:{"1":"B C SC 3C TC","8":"A","129":"H"},L:{"129":"KB"},M:{"129":"RC"},N:{"1":"A B"},O:{"129":"UC"},P:{"1":"I","129":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"129":"7D"},R:{"129":"8D"},S:{"1":"9D","129":"AE"}},B:2,C:"Geolocation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/getboundingclientrect.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/getboundingclientrect.js new file mode 100644 index 0000000..5dc2931 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/getboundingclientrect.js @@ -0,0 +1 @@ +module.exports={A:{A:{"644":"J D 5C","2049":"F A B","2692":"E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2049":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C","260":"I eB J D E F A B","1156":"YC","1284":"9C","1796":"AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","16":"F ND","132":"OD PD"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","132":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"2049":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Element.getBoundingClientRect()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/getcomputedstyle.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/getcomputedstyle.js new file mode 100644 index 0000000..3009677 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/getcomputedstyle.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C","132":"YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","260":"I eB J D E F A"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","260":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","260":"F ND OD PD"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","260":"eC SD 4C"},H:{"260":"pD"},I:{"1":"I KB tD 4C uD vD","260":"YC qD rD sD"},J:{"1":"A","260":"D"},K:{"1":"B C H SC 3C TC","260":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"getComputedStyle",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/getelementsbyclassname.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/getelementsbyclassname.js new file mode 100644 index 0000000..f6267cc --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/getelementsbyclassname.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"5C","8":"J D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","8":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"getElementsByClassName",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/getrandomvalues.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/getrandomvalues.js new file mode 100644 index 0000000..02cd825 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/getrandomvalues.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","33":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A","33":"B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"crypto.getRandomValues()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/gyroscope.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/gyroscope.js new file mode 100644 index 0000000..ce8f2be --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/gyroscope.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B","194":"8B ZC 9B aC AC BC CC DC EC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:4,C:"Gyroscope",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/hardwareconcurrency.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/hardwareconcurrency.js new file mode 100644 index 0000000..6a53f49 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/hardwareconcurrency.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB"},E:{"2":"I eB J D B C K L G BD eC CD DD ED SC TC GD HD ID gC","129":"fC","194":"E F A FD","257":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB ND OD PD QD SC 3C RD TC"},G:{"2":"eC SD 4C TD UD VD bD cD dD eD fD gD hD iD jD kD lD gC","129":"aD","194":"E WD XD YD ZD","257":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"navigator.hardwareConcurrency",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/hashchange.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/hashchange.js new file mode 100644 index 0000000..ccac76f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/hashchange.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F A B","8":"J D 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","8":"6C YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","8":"I"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","8":"F ND OD PD"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC"},H:{"2":"pD"},I:{"1":"YC I KB rD sD tD 4C uD vD","2":"qD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","8":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Hashchange event",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/heif.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/heif.js new file mode 100644 index 0000000..6586031 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/heif.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","130":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD nD","130":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"HEIF/HEIC image format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/hevc.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/hevc.js new file mode 100644 index 0000000..f63c597 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/hevc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","132":"B"},B:{"132":"C K L G M N O","1028":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD","4098":"2","8258":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB","16388":"UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o","2052":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","516":"B C SC TC"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b ND OD PD QD SC 3C RD TC","2052":"0 1 2 3 4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","2052":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","258":"H"},L:{"2052":"KB"},M:{"16388":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"BB CB DB EB FB GB HB IB JB","2":"I","258":"AB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:6,C:"HEVC/H.265 video format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/hidden.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/hidden.js new file mode 100644 index 0000000..f327999 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/hidden.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","2":"F B ND OD PD QD"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"1":"pD"},I:{"1":"I KB tD 4C uD vD","2":"YC qD rD sD"},J:{"1":"A","2":"D"},K:{"1":"C H SC 3C TC","2":"A B"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"hidden attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/high-resolution-time.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/high-resolution-time.js new file mode 100644 index 0000000..68ca76a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/high-resolution-time.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B","2":"6C YC I eB J D E F A B C K L 9C AD","129":"5B 6B 7B","769":"8B ZC","1281":"0 1 2 3 4 5 6 7 8 9 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB","33":"AB BB CB DB"},E:{"1":"E F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"High Resolution Time API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/history.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/history.js new file mode 100644 index 0000000..2ef387d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/history.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","4":"eB CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 3C RD TC","2":"F B ND OD PD QD SC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD","4":"4C"},H:{"2":"pD"},I:{"1":"KB rD sD 4C uD vD","2":"YC I qD tD"},J:{"1":"D A"},K:{"1":"C H SC 3C TC","2":"A B"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Session history management",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/html-media-capture.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/html-media-capture.js new file mode 100644 index 0000000..e8389b2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/html-media-capture.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"eC SD 4C TD","129":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD","257":"rD sD"},J:{"1":"A","16":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"516":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"16":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:2,C:"HTML Media Capture",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/html5semantic.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/html5semantic.js new file mode 100644 index 0000000..e8df2ff --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/html5semantic.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","8":"J D E","260":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C","132":"YC 9C AD","260":"I eB J D E F A B C K L G M N O fB AB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB","260":"J D E F A B C K L G M N O fB AB BB CB DB EB FB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","132":"I BD eC","260":"eB J CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","132":"F B ND OD PD QD","260":"C SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","132":"eC","260":"SD 4C TD UD"},H:{"132":"pD"},I:{"1":"KB uD vD","132":"qD","260":"YC I rD sD tD 4C"},J:{"260":"D A"},K:{"1":"H","132":"A","260":"B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"260":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"HTML5 semantic elements",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/http-live-streaming.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/http-live-streaming.js new file mode 100644 index 0000000..2bef401 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/http-live-streaming.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"C K L G M N O","2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"ZB aB bB cB dB KB cC RC dC","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"HTTP Live Streaming (HLS)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/http2.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/http2.js new file mode 100644 index 0000000..a371150 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/http2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","132":"B"},B:{"1":"C K L G M N O","513":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB 9C AD","513":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"rB sB tB uB vB wB xB yB zB 0B","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB","513":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED","260":"F A FD fC"},F:{"1":"IB JB gB hB iB jB kB lB mB nB","2":"F B C G M N O fB AB BB CB DB EB FB GB HB ND OD PD QD SC 3C RD TC","513":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","513":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","513":"H"},L:{"513":"KB"},M:{"513":"RC"},N:{"2":"A B"},O:{"513":"UC"},P:{"1":"I","513":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"513":"7D"},R:{"513":"8D"},S:{"1":"9D","513":"AE"}},B:6,C:"HTTP/2 protocol",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/http3.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/http3.js new file mode 100644 index 0000000..78d7cb9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/http3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","322":"P H Q R S","578":"T U"},C:{"1":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC 9C AD","194":"KC LC MC NC OC PC QC P H Q bC R S T U V"},D:{"1":"0 1 2 3 4 5 6 7 8 9 V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC","322":"P H Q R S","578":"T U"},E:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC GD","2049":"lC mC KD WC nC oC pC qC rC LD","2113":"VC iC jC kC","3140":"L G HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC ND OD PD QD SC 3C RD TC","578":"LC"},G:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD","2049":"lC mC nD WC nC oC pC qC rC oD","2113":"VC iC jC kC","2116":"jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"yD","2":"I AB BB CB DB EB FB GB HB wD xD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","4098":"IB JB"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:6,C:"HTTP/3 protocol",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/iframe-sandbox.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/iframe-sandbox.js new file mode 100644 index 0000000..148d245 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/iframe-sandbox.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M 9C AD","4":"N O fB AB BB CB DB EB FB GB HB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC"},H:{"2":"pD"},I:{"1":"YC I KB rD sD tD 4C uD vD","2":"qD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"sandbox attribute for iframes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/iframe-seamless.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/iframe-seamless.js new file mode 100644 index 0000000..22677a4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/iframe-seamless.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","66":"AB BB CB DB EB FB GB"},E:{"2":"I eB J E F A B C K L G BD eC CD DD FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","130":"D ED"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","130":"VD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"seamless attribute for iframes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/iframe-srcdoc.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/iframe-srcdoc.js new file mode 100644 index 0000000..4a1b8d1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/iframe-srcdoc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","8":"J D E F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","8":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C","8":"YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K","8":"L G M N O fB"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC","8":"I eB CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B ND OD PD QD","8":"C SC 3C RD TC"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC","8":"SD 4C TD"},H:{"2":"pD"},I:{"1":"KB uD vD","8":"YC I qD rD sD tD 4C"},J:{"1":"A","8":"D"},K:{"1":"H","2":"A B","8":"C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"8":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"srcdoc attribute for iframes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/imagecapture.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/imagecapture.js new file mode 100644 index 0000000..6b81917 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/imagecapture.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB 9C AD","194":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B","322":"3B 4B 5B 6B 7B 8B"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","516":"MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB ND OD PD QD SC 3C RD TC","322":"qB rB sB tB uB vB"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"194":"9D AE"}},B:5,C:"ImageCapture API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ime.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ime.js new file mode 100644 index 0000000..6b631a1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ime.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","161":"B"},B:{"2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A","161":"B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Input Method Editor API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js new file mode 100644 index 0000000..d0f2409 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"naturalWidth & naturalHeight image properties",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/import-maps.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/import-maps.js new file mode 100644 index 0000000..bf595e3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/import-maps.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","194":"P H Q R S T U V W"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j 9C AD","322":"k l m n o p"},D:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC","194":"MC NC OC PC QC P H Q R S T U V W"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC","194":"AC BC CC DC EC FC GC HC IC JC KC LC MC NC"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"Import maps",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/imports.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/imports.js new file mode 100644 index 0000000..a6e5521 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/imports.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","8":"A B"},B:{"1":"P","2":"0 1 2 3 4 5 6 7 8 9 H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","8":"C K L G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB 9C AD","8":"0 1 2 3 4 5 6 7 8 9 gB hB 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","72":"iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B"},D:{"1":"mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","66":"gB hB iB jB kB","72":"lB"},E:{"2":"I eB BD eC CD","8":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC","2":"0 1 2 3 4 5 6 7 8 9 F B C G M FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","66":"N O fB AB BB","72":"CB"},G:{"2":"eC SD 4C TD UD","8":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"8":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I wD xD yD zD 0D fC 1D 2D","2":"AB BB CB DB EB FB GB HB IB JB 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"2":"8D"},S:{"1":"9D","8":"AE"}},B:5,C:"HTML Imports",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js new file mode 100644 index 0000000..80a1a6e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B","16":"5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","2":"6C YC","16":"9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F B ND OD PD QD SC 3C"},G:{"1":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"indeterminate checkbox",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/indexeddb.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/indexeddb.js new file mode 100644 index 0000000..8f7247d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/indexeddb.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","132":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","33":"A B C K L G","36":"I eB J D E F"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"A","8":"I eB J D E F","33":"DB","36":"B C K L G M N O fB AB BB CB"},E:{"1":"A B C K L G fC SC TC GD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I eB J D BD eC CD DD","260":"E F ED FD","516":"HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F ND OD","8":"B C PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"eC SD 4C TD UD VD","260":"E WD XD YD","516":"kD"},H:{"2":"pD"},I:{"1":"KB uD vD","8":"YC I qD rD sD tD 4C"},J:{"1":"A","8":"D"},K:{"1":"H","2":"A","8":"B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"IndexedDB",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/indexeddb2.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/indexeddb2.js new file mode 100644 index 0000000..c4b817c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/indexeddb2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB 9C AD","132":"uB vB wB","260":"xB yB zB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB","132":"yB zB 0B 1B","260":"2B 3B 4B 5B 6B 7B"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB ND OD PD QD SC 3C RD TC","132":"lB mB nB oB","260":"pB qB rB sB tB uB"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD","16":"ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","260":"wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","260":"9D"}},B:2,C:"IndexedDB 2.0",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/inline-block.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/inline-block.js new file mode 100644 index 0000000..3cb4700 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/inline-block.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F A B","4":"5C","132":"J D"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","36":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS inline-block",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/innertext.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/innertext.js new file mode 100644 index 0000000..b513720 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/innertext.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B","16":"5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","16":"F"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"HTMLElement.innerText",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js new file mode 100644 index 0000000..80baed8 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A 5C","132":"B"},B:{"132":"C K L G M N O","260":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB 9C AD","516":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"N O fB AB BB CB DB EB FB GB","2":"I eB J D E F A B C K L G M","132":"HB IB JB gB hB iB jB kB lB mB nB oB pB qB","260":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"J CD DD","2":"I eB BD eC","2052":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"eC SD 4C","1025":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1025":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2052":"A B"},O:{"1025":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"260":"7D"},R:{"1":"8D"},S:{"516":"9D AE"}},B:1,C:"autocomplete attribute: on & off values",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-color.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-color.js new file mode 100644 index 0000000..3bb8ecb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-color.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","2":"F G M ND OD PD QD"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD","129":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"Color input type",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-datetime.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-datetime.js new file mode 100644 index 0000000..3b0b999 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-datetime.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"C"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 9C AD","1090":"3B 4B 5B 6B","2052":"7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a","4100":"0 1 2 3 4 5 6 7 8 9 b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB","2052":"AB BB CB DB EB"},E:{"2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD","4100":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"eC SD 4C","260":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC","8193":"tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC qD rD sD","514":"I tD 4C"},J:{"1":"A","2":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"4100":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2052":"9D AE"}},B:1,C:"Date and time input types",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-email-tel-url.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-email-tel-url.js new file mode 100644 index 0000000..59d1b70 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-email-tel-url.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","132":"qD rD sD"},J:{"1":"A","132":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Email, telephone & URL input types",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-event.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-event.js new file mode 100644 index 0000000..17808a4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-event.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","2561":"A B","2692":"F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2561":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","16":"6C","1537":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB AD","1796":"YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L","1025":"lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC","1537":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB"},E:{"1":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB J BD eC","1025":"D E F A B C DD ED FD fC SC","1537":"CD","4097":"K TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","16":"F B C ND OD PD QD SC 3C","260":"RD","1025":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B","1537":"G M N O fB AB BB"},G:{"1":"gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C","1025":"E WD XD YD ZD aD bD cD dD","1537":"TD UD VD","4097":"eD fD"},H:{"2":"pD"},I:{"16":"qD rD","1025":"KB vD","1537":"YC I sD tD 4C uD"},J:{"1025":"A","1537":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2561":"A B"},O:{"1":"UC"},P:{"1025":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","1537":"9D"}},B:1,C:"input event",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-file-accept.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-file-accept.js new file mode 100644 index 0000000..df4a94b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-file-accept.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I","16":"eB J D E BB CB DB EB FB","132":"F A B C K L G M N O fB AB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","132":"J D E F A B DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"2":"UD VD","132":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","514":"eC SD 4C TD"},H:{"2":"pD"},I:{"2":"qD rD sD","260":"YC I tD 4C","514":"KB uD vD"},J:{"132":"A","260":"D"},K:{"2":"A B C SC 3C TC","514":"H"},L:{"260":"KB"},M:{"2":"RC"},N:{"514":"A","1028":"B"},O:{"2":"UC"},P:{"260":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"260":"7D"},R:{"260":"8D"},S:{"1":"9D AE"}},B:1,C:"accept attribute for file input",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-file-directory.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-file-directory.js new file mode 100644 index 0000000..d9b675f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-file-directory.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M ND OD PD QD SC 3C RD TC"},G:{"1":"vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Directory selection from file input",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-file-multiple.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-file-multiple.js new file mode 100644 index 0000000..605b0f7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-file-multiple.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","2":"6C YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","2":"F ND OD PD"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD"},H:{"130":"pD"},I:{"130":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","130":"A B C SC 3C TC"},L:{"132":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"130":"UC"},P:{"130":"I","132":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"132":"7D"},R:{"132":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"Multiple file selection",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-inputmode.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-inputmode.js new file mode 100644 index 0000000..8518d76 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-inputmode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M 9C AD","4":"N O fB AB","194":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B","66":"6B 7B 8B ZC 9B aC AC BC CC DC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB ND OD PD QD SC 3C RD TC","66":"tB uB vB wB xB yB zB 0B 1B 2B"},G:{"1":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"194":"9D AE"}},B:1,C:"inputmode attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-minlength.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-minlength.js new file mode 100644 index 0000000..ada3064 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-minlength.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"Minimum length attribute for input fields",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-number.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-number.js new file mode 100644 index 0000000..b7a781b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-number.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","129":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"C K","1025":"L G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD","513":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"388":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC qD rD sD","388":"I KB tD 4C uD vD"},J:{"2":"D","388":"A"},K:{"1":"A B C SC 3C TC","388":"H"},L:{"388":"KB"},M:{"641":"RC"},N:{"388":"A B"},O:{"388":"UC"},P:{"388":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"388":"7D"},R:{"388":"8D"},S:{"513":"9D AE"}},B:1,C:"Number input type",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-pattern.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-pattern.js new file mode 100644 index 0000000..122cbc4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-pattern.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","16":"eB","388":"J D E F A CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C","388":"E TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB vD","2":"YC I qD rD sD tD 4C uD"},J:{"1":"A","2":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Pattern attribute for input fields",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-placeholder.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-placeholder.js new file mode 100644 index 0000000..4d519fb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-placeholder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","132":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 3C RD TC","2":"F ND OD PD QD","132":"B SC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC KB qD rD sD 4C uD vD","4":"I tD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"input placeholder attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-range.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-range.js new file mode 100644 index 0000000..2c85fbb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-range.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"2":"pD"},I:{"1":"KB 4C uD vD","4":"YC I qD rD sD tD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Range input type",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-search.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-search.js new file mode 100644 index 0000000..1bcdc8e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-search.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","129":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"C K L G M N O"},C:{"2":"6C YC 9C AD","129":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L BB CB DB EB FB","129":"G M N O fB AB"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F ND OD PD QD","16":"B SC 3C"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C"},H:{"129":"pD"},I:{"1":"KB uD vD","16":"qD rD","129":"YC I sD tD 4C"},J:{"1":"D","129":"A"},K:{"1":"C H","2":"A","16":"B SC 3C","129":"TC"},L:{"1":"KB"},M:{"129":"RC"},N:{"129":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"129":"9D AE"}},B:1,C:"Search input type",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/input-selection.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-selection.js new file mode 100644 index 0000000..870d073 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/input-selection.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","16":"F ND OD PD"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"2":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Selection controls for input & textarea",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/insert-adjacent.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/insert-adjacent.js new file mode 100644 index 0000000..c5670e0 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/insert-adjacent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B","16":"5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","16":"F"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Element.insertAdjacentElement() & Element.insertAdjacentText()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/insertadjacenthtml.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/insertadjacenthtml.js new file mode 100644 index 0000000..d24a78a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/insertadjacenthtml.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","16":"5C","132":"J D E F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z OD PD QD SC 3C RD TC","16":"F ND"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Element.insertAdjacentHTML()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/internationalization.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/internationalization.js new file mode 100644 index 0000000..d6d5ab3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/internationalization.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"Internationalization API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js new file mode 100644 index 0000000..4456b77 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"IntersectionObserver V2",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/intersectionobserver.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/intersectionobserver.js new file mode 100644 index 0000000..aec6627 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/intersectionobserver.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"M N O","2":"C K L","260":"G","513":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 9C AD","194":"2B 3B 4B"},D:{"1":"8B ZC 9B aC AC BC CC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","260":"1B 2B 3B 4B 5B 6B 7B","513":"0 1 2 3 4 5 6 7 8 9 DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC"},F:{"1":"vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB ND OD PD QD SC 3C RD TC","260":"oB pB qB rB sB tB uB","513":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","513":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","513":"H"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","260":"wD xD"},Q:{"513":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"IntersectionObserver",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/intl-pluralrules.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/intl-pluralrules.js new file mode 100644 index 0000000..8ed3071 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/intl-pluralrules.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N","130":"O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB ND OD PD QD SC 3C RD TC"},G:{"1":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"Intl.PluralRules API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/intrinsic-width.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/intrinsic-width.js new file mode 100644 index 0000000..30d0d64 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/intrinsic-width.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","1025":"0 1 2 3 4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","1537":"P H Q R S T U V W X Y Z a b"},C:{"2":"6C","932":"YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC 9C AD","2308":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB","545":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB","1025":"0 1 2 3 4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","1537":"wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD","516":"B C K L G SC TC GD HD ID gC hC UC JD","548":"F A FD fC","676":"D E DD ED"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","513":"kB","545":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB","1025":"0 1 2 3 4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x y z","1537":"jB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD","516":"jD kD lD gC hC UC mD","548":"XD YD ZD aD bD cD dD eD fD gD hD iD","676":"E VD WD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C","545":"uD vD","1025":"KB"},J:{"2":"D","545":"A"},K:{"2":"A B C SC 3C TC","1025":"H"},L:{"1025":"KB"},M:{"2308":"RC"},N:{"2":"A B"},O:{"1537":"UC"},P:{"545":"I","1025":"AB BB CB DB EB FB GB HB IB JB WC XC 6D","1537":"wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC"},Q:{"1537":"7D"},R:{"1537":"8D"},S:{"932":"9D","2308":"AE"}},B:5,C:"Intrinsic & Extrinsic Sizing",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/jpeg2000.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/jpeg2000.js new file mode 100644 index 0000000..567634e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/jpeg2000.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD","2":"I BD eC XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","129":"eB CD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD","2":"eC SD 4C XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"JPEG 2000 image format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/jpegxl.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/jpegxl.js new file mode 100644 index 0000000..469f11f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/jpegxl.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","578":"Z a b c d e f g h i j k l m n o p q r"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X 9C AD","2370":"0 1 2 3 4 5 6 7 8 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB","194":"Z a b c d e f g h i j k l m n o p q r","6210":"cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD","3076":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","194":"PC QC P H Q bC R S T U V W X Y Z a b c d"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD","3076":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"6210":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"JPEG XL image format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/jpegxr.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/jpegxr.js new file mode 100644 index 0000000..f657827 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/jpegxr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"C K L G M N O","2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"1":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"JPEG XR image format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js new file mode 100644 index 0000000..56e98fe --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB ND OD PD QD SC 3C RD TC"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"Lookbehind in JS regular expressions",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/json.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/json.js new file mode 100644 index 0000000..c47abcb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/json.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D 5C","129":"E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"JSON parsing",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js new file mode 100644 index 0000000..666d08b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G","132":"M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B","132":"7B 8B ZC"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD","132":"fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB ND OD PD QD SC 3C RD TC","132":"uB vB wB"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD","132":"aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD","132":"yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","132":"9D"}},B:5,C:"CSS justify-content: space-evenly",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js new file mode 100644 index 0000000..473a371 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"qD rD sD","132":"YC I tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:7,C:"High-quality kerning pairs & ligatures",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js new file mode 100644 index 0000000..0e1a012 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","16":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD SC 3C RD","16":"C"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"H TC","2":"A B SC 3C","16":"C"},L:{"1":"KB"},M:{"130":"RC"},N:{"130":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:7,C:"KeyboardEvent.charCode",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-code.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-code.js new file mode 100644 index 0000000..61d3a1c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-code.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB","194":"sB tB uB vB wB xB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB ND OD PD QD SC 3C RD TC","194":"JB gB hB iB jB kB"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"194":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I","194":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"194":"8D"},S:{"1":"9D AE"}},B:5,C:"KeyboardEvent.code",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js new file mode 100644 index 0000000..782358d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B G M ND OD PD QD SC 3C RD","16":"C"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H TC","2":"A B SC 3C","16":"C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"KeyboardEvent.getModifierState()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-key.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-key.js new file mode 100644 index 0000000..f18887d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-key.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","260":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB 9C AD","132":"DB EB FB GB HB IB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB ND OD PD QD SC 3C RD","16":"C"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"1":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H TC","2":"A B SC 3C","16":"C"},L:{"1":"KB"},M:{"1":"RC"},N:{"260":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"KeyboardEvent.key",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-location.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-location.js new file mode 100644 index 0000000..9c3e6aa --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-location.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"J BD eC","132":"I eB CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD SC 3C RD","16":"C","132":"G M"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C","132":"TD UD VD"},H:{"2":"pD"},I:{"1":"KB uD vD","16":"qD rD","132":"YC I sD tD 4C"},J:{"132":"D A"},K:{"1":"H TC","2":"A B SC 3C","16":"C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"KeyboardEvent.location",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-which.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-which.js new file mode 100644 index 0000000..62c48d5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/keyboardevent-which.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","16":"eB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z OD PD QD SC 3C RD TC","16":"F ND"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C","16":"qD rD","132":"uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"132":"KB"},M:{"132":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"2":"I","132":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"132":"8D"},S:{"1":"9D AE"}},B:7,C:"KeyboardEvent.which",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/lazyload.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/lazyload.js new file mode 100644 index 0000000..c6a455c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/lazyload.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"C K L G M N O","2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"1":"B","2":"A"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Resource Hints: Lazyload",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/let.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/let.js new file mode 100644 index 0000000..2351edf --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/let.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","2052":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","194":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O","322":"fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB","516":"rB sB tB uB vB wB xB yB"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD","1028":"A fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","322":"G M N O fB AB BB CB DB EB FB GB HB","516":"IB JB gB hB iB jB kB lB"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD","1028":"ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","516":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"let",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/link-icon-png.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-icon-png.js new file mode 100644 index 0000000..926945d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-icon-png.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","130":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD"},H:{"130":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D","130":"A"},K:{"1":"H","130":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"130":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"PNG favicons",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/link-icon-svg.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-icon-svg.js new file mode 100644 index 0000000..8d4cece --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-icon-svg.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O P","1537":"0 1 2 3 4 5 6 7 8 9 H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC 9C AD","260":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB","513":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P","1537":"0 1 2 3 4 5 6 7 8 9 H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC"},F:{"1":"uB vB wB xB yB zB 0B 1B 2B 3B","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB 4B 5B 6B 7B 8B 9B AC BC CC DC EC ND OD PD QD SC 3C RD TC","1537":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"xC yC zC 0C 1C 2C","2":"dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC","130":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD"},H:{"130":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D","130":"A"},K:{"130":"A B C SC 3C TC","1537":"H"},L:{"1537":"KB"},M:{"1":"RC"},N:{"130":"A B"},O:{"2":"UC"},P:{"2":"I wD xD yD zD 0D fC 1D 2D","1537":"AB BB CB DB EB FB GB HB IB JB 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"1537":"8D"},S:{"513":"9D AE"}},B:1,C:"SVG favicons",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js new file mode 100644 index 0000000..f9ba922 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E 5C","132":"F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","260":"0 1 2 3 4 5 6 7 8 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"xC yC zC 0C 1C 2C","16":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC"},H:{"2":"pD"},I:{"16":"YC I KB qD rD sD tD 4C uD vD"},J:{"16":"D A"},K:{"1":"H","16":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","16":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Resource Hints: dns-prefetch",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js new file mode 100644 index 0000000..4ff63af --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC"},E:{"1":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B ND OD PD QD SC 3C RD TC"},G:{"1":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:1,C:"Resource Hints: modulepreload",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-preconnect.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-preconnect.js new file mode 100644 index 0000000..ac7ed1f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-preconnect.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L","260":"G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB 9C AD","129":"pB","514":"JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w"},D:{"1":"0 1 2 3 4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB ND OD PD QD SC 3C RD TC"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Resource Hints: preconnect",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-prefetch.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-prefetch.js new file mode 100644 index 0000000..f6ca603 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-prefetch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D"},E:{"2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC","194":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD","194":"iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"I KB uD vD","2":"YC qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Resource Hints: prefetch",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-preload.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-preload.js new file mode 100644 index 0000000..0a323c5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-preload.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M","1028":"N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 9C AD","132":"6B","578":"7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S"},D:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","322":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB ND OD PD QD SC 3C RD TC"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD","322":"bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:4,C:"Resource Hints: preload",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-prerender.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-prerender.js new file mode 100644 index 0000000..c48fdb1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/link-rel-prerender.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:5,C:"Resource Hints: prerender",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/loading-lazy-attr.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/loading-lazy-attr.js new file mode 100644 index 0000000..1bc1063 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/loading-lazy-attr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC 9C AD","132":"0 1 2 NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC","66":"NC OC"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC","322":"L G GD HD ID gC","580":"hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC","66":"AC BC"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD","322":"iD jD kD lD gC","580":"hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D","132":"AE"}},B:1,C:"Lazy loading via attribute for images & iframes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/loading-lazy-media.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/loading-lazy-media.js new file mode 100644 index 0000000..c27265a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/loading-lazy-media.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"cC RC dC","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","194":"KB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:1,C:"Lazy loading via attribute for video & audio",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/localecompare.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/localecompare.js new file mode 100644 index 0000000..56bcd5b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/localecompare.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","16":"5C","132":"J D E F A"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","132":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","132":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F B C ND OD PD QD SC 3C RD","132":"TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","132":"E eC SD 4C TD UD VD WD XD YD"},H:{"132":"pD"},I:{"1":"KB uD vD","132":"YC I qD rD sD tD 4C"},J:{"132":"D A"},K:{"1":"H","16":"A B C SC 3C","132":"TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","132":"A"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","132":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","4":"9D"}},B:6,C:"localeCompare()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/magnetometer.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/magnetometer.js new file mode 100644 index 0000000..2049c12 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/magnetometer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B","194":"0 1 2 3 4 5 6 7 8 9 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB ND OD PD QD SC 3C RD TC","194":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"194":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:4,C:"Magnetometer",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/matchesselector.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/matchesselector.js new file mode 100644 index 0000000..a22d956 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/matchesselector.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","36":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","36":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C","36":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","36":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB"},E:{"1":"E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","36":"eB J D CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B ND OD PD QD SC","36":"C G M N O fB AB 3C RD TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC","36":"SD 4C TD UD VD"},H:{"2":"pD"},I:{"1":"KB","2":"qD","36":"YC I rD sD tD 4C uD vD"},J:{"36":"D A"},K:{"1":"H","2":"A B","36":"C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"36":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","36":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"matches() DOM method",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/matchmedia.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/matchmedia.js new file mode 100644 index 0000000..eb04f7f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/matchmedia.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B C ND OD PD QD SC 3C RD"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"1":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"A","2":"D"},K:{"1":"H TC","2":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"matchMedia",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mathml.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mathml.js new file mode 100644 index 0000000..75ff25a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mathml.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"F A B 5C","8":"J D E"},B:{"2":"C K L G M N O","8":"P H Q R S T U V W X Y Z a b c d e","584":"f g h i j k l m n o p q","1025":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","129":"6C YC 9C AD"},D:{"1":"EB","8":"I eB J D E F A B C K L G M N O fB AB BB CB DB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e","584":"f g h i j k l m n o p q","1025":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","260":"I eB J D E F BD eC CD DD ED FD"},F:{"2":"F","8":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC","584":"R S T U V W X Y Z a b c","1025":"0 1 2 3 4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x y z","2052":"B C ND OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"eC SD 4C"},H:{"8":"pD"},I:{"8":"YC I qD rD sD tD 4C uD vD","1025":"KB"},J:{"1":"A","8":"D"},K:{"8":"A B C SC 3C TC","1025":"H"},L:{"1025":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"8":"UC"},P:{"1":"BB CB DB EB FB GB HB IB JB","8":"I AB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"8":"7D"},R:{"8":"8D"},S:{"1":"9D AE"}},B:2,C:"MathML",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/maxlength.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/maxlength.js new file mode 100644 index 0000000..16eb764 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/maxlength.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","16":"5C","900":"J D E F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","1025":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","900":"6C YC 9C AD","1025":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"eB BD","900":"I eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F","132":"B C ND OD PD QD SC 3C RD TC"},G:{"1":"SD 4C TD UD VD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC","2052":"E WD"},H:{"132":"pD"},I:{"1":"YC I sD tD 4C uD vD","16":"qD rD","4097":"KB"},J:{"1":"D A"},K:{"132":"A B C SC 3C TC","4097":"H"},L:{"4097":"KB"},M:{"4097":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"4097":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1025":"9D AE"}},B:1,C:"maxlength attribute for input and textarea elements",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js new file mode 100644 index 0000000..9ffc45d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-backdrop-pseudo-element.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB","33":"iB jB kB lB mB"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","33":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 9C AD"},M:{"1":"RC"},A:{"2":"J D E F A 5C","33":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O ND OD PD QD SC 3C RD TC","33":"fB AB BB CB DB"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC MD"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","33":"uD vD"}},B:6,C:"CSS ::backdrop pseudo-element",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js new file mode 100644 index 0000000..3bf3b0c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M 9C AD","33":"N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB"},M:{"1":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB ND OD PD QD SC 3C RD TC"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"I eB J BD eC CD DD MD","33":"D E F A ED FD fC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD","33":"E VD WD XD YD ZD aD"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"}},B:6,C:"isolate-override from unicode-bidi",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js new file mode 100644 index 0000000..4d5b5d2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G","33":"M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F 9C AD","33":"A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB"},M:{"1":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"I eB BD eC CD MD","33":"J D E F A DD ED FD fC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"E UD VD WD XD YD ZD aD"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"}},B:6,C:"isolate from unicode-bidi",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js new file mode 100644 index 0000000..d23b9c7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F 9C AD","33":"A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB"},M:{"1":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB ND OD PD QD SC 3C RD TC"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"I eB BD eC CD MD","33":"J D E F A DD ED FD fC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"E UD VD WD XD YD ZD aD"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"}},B:6,C:"plaintext from unicode-bidi",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js new file mode 100644 index 0000000..dcebef1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD","33":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},M:{"1":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB ND OD PD QD SC 3C RD TC"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"I eB J D BD eC CD DD ED MD","33":"E F A B C FD fC SC"},G:{"1":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD","33":"E WD XD YD ZD aD bD cD dD"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"}},B:6,C:"text-decoration-color property",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js new file mode 100644 index 0000000..544429e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD","33":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},M:{"1":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB ND OD PD QD SC 3C RD TC"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"I eB J D BD eC CD DD ED MD","33":"E F A B C FD fC SC"},G:{"1":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD","33":"E WD XD YD ZD aD bD cD dD"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"}},B:6,C:"text-decoration-line property",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js new file mode 100644 index 0000000..91a331b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD"},M:{"1":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB ND OD PD QD SC 3C RD TC"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"zC 0C 1C 2C","2":"I eB J D BD eC CD DD ED MD","33":"E F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC"},G:{"1":"zC 0C 1C 2C","2":"eC SD 4C TD UD VD","33":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"}},B:6,C:"text-decoration shorthand property",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js new file mode 100644 index 0000000..05781c5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js @@ -0,0 +1 @@ +module.exports={A:{D:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B"},L:{"1":"KB"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD","33":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},M:{"1":"RC"},A:{"2":"J D E F A B 5C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB ND OD PD QD SC 3C RD TC"},K:{"1":"H","2":"A B C SC 3C TC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"I eB J D BD eC CD DD ED MD","33":"E F A B C FD fC SC"},G:{"1":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD","33":"E WD XD YD ZD aD bD cD dD"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"}},B:6,C:"text-decoration-style property",D:undefined}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/media-fragments.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/media-fragments.js new file mode 100644 index 0000000..3ae0566 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/media-fragments.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","132":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB 9C AD","132":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N","132":"0 1 2 3 4 5 6 7 8 9 O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB BD eC CD","132":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","132":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"eC SD 4C TD UD VD","132":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C","132":"KB uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","132":"H"},L:{"132":"KB"},M:{"132":"RC"},N:{"132":"A B"},O:{"132":"UC"},P:{"2":"I wD","132":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"132":"7D"},R:{"132":"8D"},S:{"132":"9D AE"}},B:2,C:"Media Fragments",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js new file mode 100644 index 0000000..4c32b89 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB 9C AD","260":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","324":"1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC"},E:{"2":"I eB J D E F A BD eC CD DD ED FD fC","132":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC","324":"mB nB oB pB qB rB sB tB uB vB wB xB"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"260":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","132":"wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"260":"9D AE"}},B:5,C:"Media Capture from DOM Elements API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mediarecorder.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mediarecorder.js new file mode 100644 index 0000000..cdabbcd --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mediarecorder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB","194":"xB yB"},E:{"1":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC","322":"K L TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB ND OD PD QD SC 3C RD TC","194":"kB lB"},G:{"1":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD","578":"dD eD fD gD hD iD jD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"MediaRecorder API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mediasource.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mediasource.js new file mode 100644 index 0000000..03e3669 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mediasource.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","132":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB 9C AD","66":"FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M","33":"DB EB FB GB HB IB JB gB","66":"N O fB AB BB CB"},E:{"1":"E F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD","260":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB vD","2":"YC I qD rD sD tD 4C uD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Media Source Extensions",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/menu.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/menu.js new file mode 100644 index 0000000..952dbff --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/menu.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D 9C AD","132":"E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S","450":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","66":"rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","66":"lB mB nB oB pB qB rB sB tB uB vB wB"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"450":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Context menu item (menuitem element)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/meta-theme-color.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/meta-theme-color.js new file mode 100644 index 0000000..094dc52 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/meta-theme-color.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB","132":"0 1 2 3 4 5 6 7 8 9 LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","258":"pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD HD","2052":"xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD","1026":"xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"516":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","16":"wD"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:1,C:"theme-color Meta Tag",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/meter.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/meter.js new file mode 100644 index 0000000..38ed619 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/meter.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","2":"F ND OD PD QD"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"meter element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/midi.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/midi.js new file mode 100644 index 0000000..0fecf44 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/midi.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:5,C:"Web MIDI API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/minmaxwh.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/minmaxwh.js new file mode 100644 index 0000000..c6bdf13 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/minmaxwh.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","8":"J 5C","129":"D","257":"E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS min/max-width/height",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mp3.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mp3.js new file mode 100644 index 0000000..c1ad943 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mp3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","132":"I eB J D E F A B C K L G M N O fB AB BB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","2":"qD rD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"MP3 audio format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mpeg-dash.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mpeg-dash.js new file mode 100644 index 0000000..439ffa1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mpeg-dash.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"C K L G M N O","2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","386":"BB CB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"Dynamic Adaptive Streaming over HTTP (MPEG-DASH)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mpeg4.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mpeg4.js new file mode 100644 index 0000000..fa7fffb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mpeg4.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB 9C AD","4":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB uD vD","4":"YC I qD rD tD 4C","132":"sD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"MPEG-4/H.264 video format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/multibackgrounds.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/multibackgrounds.js new file mode 100644 index 0000000..9b9a94a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/multibackgrounds.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","2":"6C YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS3 Multiple backgrounds",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/multicolumn.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/multicolumn.js new file mode 100644 index 0000000..050a1e4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/multicolumn.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"C K L G M N O","516":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"132":"2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC","164":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 9C AD","516":"DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z","1028":"0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"420":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB","516":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","132":"F FD","164":"D E ED","420":"I eB J BD eC CD DD"},F:{"1":"C SC 3C RD TC","2":"F B ND OD PD QD","420":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB","516":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","132":"XD YD","164":"E VD WD","420":"eC SD 4C TD UD"},H:{"1":"pD"},I:{"420":"YC I qD rD sD tD 4C uD vD","516":"KB"},J:{"420":"D A"},K:{"1":"C SC 3C TC","2":"A B","516":"H"},L:{"516":"KB"},M:{"1028":"RC"},N:{"1":"A B"},O:{"516":"UC"},P:{"420":"I","516":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"516":"7D"},R:{"516":"8D"},S:{"164":"9D AE"}},B:4,C:"CSS3 Multiple column layout",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mutation-events.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mutation-events.js new file mode 100644 index 0000000..efb44b9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mutation-events.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","260":"F A B"},B:{"2":"UB VB WB XB YB ZB aB bB cB dB","66":"9 LB MB NB OB PB QB RB SB TB","132":"0 1 2 3 4 5 6 7 8 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","260":"C K L G M N O"},C:{"2":"6C YC I eB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","260":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB"},D:{"2":"SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L","66":"9 LB MB NB OB PB QB RB","132":"0 1 2 3 4 5 6 7 8 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"2":"xC yC zC 0C 1C 2C MD","16":"BD eC","132":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC"},F:{"1":"C RD TC","2":"F ND OD PD QD","16":"B SC 3C","66":"0 1 2 3 4 5 6 7 8 9 v w x y z","132":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u"},G:{"2":"xC yC zC 0C 1C 2C","16":"eC SD","132":"E 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC"},H:{"2":"pD"},I:{"2":"KB","16":"qD rD","132":"YC I sD tD 4C uD vD"},J:{"132":"D A"},K:{"1":"C TC","2":"A","16":"B SC 3C","132":"H"},L:{"2":"KB"},M:{"2":"RC"},N:{"260":"A B"},O:{"132":"UC"},P:{"132":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"132":"7D"},R:{"132":"8D"},S:{"260":"9D AE"}},B:7,C:"Mutation events",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/mutationobserver.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/mutationobserver.js new file mode 100644 index 0000000..167fa9e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/mutationobserver.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E 5C","8":"F A"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N","33":"O fB AB BB CB DB EB FB GB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC qD rD sD","8":"I tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","8":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Mutation Observer",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/namevalue-storage.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/namevalue-storage.js new file mode 100644 index 0000000..db8cacb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/namevalue-storage.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F A B","2":"5C","8":"J D"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","4":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Web Storage - name/value pairs",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/native-filesystem-api.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/native-filesystem-api.js new file mode 100644 index 0000000..e0a8baf --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/native-filesystem-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","194":"P H Q R S T","260":"U V W X Y Z a b c d e f g h i j k l m"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC","194":"MC NC OC PC QC P H Q R S T","260":"U V W X Y Z a b c d e f g h i j k l m"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC","194":"AC BC CC DC EC FC GC HC IC JC","260":"KC LC MC NC OC PC QC P H Q bC R S T U V W X Y"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"File System Access API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/nav-timing.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/nav-timing.js new file mode 100644 index 0000000..494829c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/nav-timing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB","33":"J D E F A B C"},E:{"1":"E F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"I KB tD 4C uD vD","2":"YC qD rD sD"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Navigation Timing API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/netinfo.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/netinfo.js new file mode 100644 index 0000000..f7d1cb0 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/netinfo.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","1028":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B","1028":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB ND OD PD QD SC 3C RD TC","1028":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"qD uD vD","132":"YC I rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","132":"I","516":"wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"AE","260":"9D"}},B:7,C:"Network Information API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/notifications.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/notifications.js new file mode 100644 index 0000000..780226b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/notifications.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I","36":"eB J D E F A B C K L G M N O fB AB BB"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC","516":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C","36":"KB uD vD"},J:{"1":"A","2":"D"},K:{"2":"A B C SC 3C TC","36":"H"},L:{"257":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"36":"I","130":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"130":"8D"},S:{"1":"9D AE"}},B:1,C:"Web Notifications",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/object-entries.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/object-entries.js new file mode 100644 index 0000000..28bb5f8 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/object-entries.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D","16":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Object.entries",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/object-fit.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/object-fit.js new file mode 100644 index 0000000..1eeb071 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/object-fit.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G","260":"M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD","132":"E F ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F G M N O ND OD PD","33":"B C QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD","132":"E WD XD YD"},H:{"33":"pD"},I:{"1":"KB vD","2":"YC I qD rD sD tD 4C uD"},J:{"2":"D A"},K:{"1":"H","2":"A","33":"B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS3 object-fit/object-position",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/object-observe.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/object-observe.js new file mode 100644 index 0000000..b202d2f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/object-observe.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"mB nB oB pB qB rB sB tB uB vB wB xB yB zB","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"DB EB FB GB HB IB JB gB hB iB jB kB lB mB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"I","2":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Object.observe data binding",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/object-values.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/object-values.js new file mode 100644 index 0000000..a8110d4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/object-values.js @@ -0,0 +1 @@ +module.exports={A:{A:{"8":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","8":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","8":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","8":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"8":"pD"},I:{"1":"KB","8":"YC I qD rD sD tD 4C uD vD"},J:{"8":"D A"},K:{"1":"H","8":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"8":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","8":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Object.values method",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/objectrtc.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/objectrtc.js new file mode 100644 index 0000000..ddb45c3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/objectrtc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"K L G M N O","2":"0 1 2 3 4 5 6 7 8 9 C P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"Object RTC (ORTC) API for WebRTC",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/offline-apps.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/offline-apps.js new file mode 100644 index 0000000..0658f9e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/offline-apps.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"F 5C","8":"J D E"},B:{"1":"C K L G M N O P H Q R S","2":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R 9C AD","2":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","4":"YC","8":"6C"},D:{"1":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S","2":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L CD DD ED FD fC SC TC GD HD","2":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"BD eC"},F:{"1":"B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC QD SC 3C RD TC","2":"0 1 2 3 4 5 6 7 8 9 F LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND","8":"OD PD"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD","2":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I qD rD sD tD 4C uD vD","2":"KB"},J:{"1":"D A"},K:{"1":"B C SC 3C TC","2":"A H"},L:{"2":"KB"},M:{"2":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"2":"8D"},S:{"1":"9D","2":"AE"}},B:7,C:"Offline web applications",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/offscreencanvas.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/offscreencanvas.js new file mode 100644 index 0000000..e5e6f99 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/offscreencanvas.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB 9C AD","194":"uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m"},D:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B","322":"8B ZC 9B aC AC BC CC DC EC FC GC"},E:{"1":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC","516":"jC kC lC mC KD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB ND OD PD QD SC 3C RD TC","322":"vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC"},G:{"1":"WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC","516":"jC kC lC mC nD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"194":"9D AE"}},B:1,C:"OffscreenCanvas",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ogg-vorbis.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ogg-vorbis.js new file mode 100644 index 0000000..3837535 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ogg-vorbis.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD","260":"WC nC oC pC qC rC LD XC sC tC uC","388":"G HD ID gC hC UC JD VC iC jC kC lC mC KD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"1":"vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC","260":"qC rC oD XC sC tC uC"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"A","2":"D"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Ogg Vorbis audio format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ogv.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ogv.js new file mode 100644 index 0000000..441b0f6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ogv.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","8":"F A B"},B:{"1":"0 1 2 3 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","8":"C K L G M","194":"4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB 9C AD","2":"6C YC NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","194":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n PD QD SC 3C RD TC","2":"F ND OD","194":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"1":"RC"},N:{"8":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"2":"8D"},S:{"1":"9D AE"}},B:6,C:"Ogg/Theora video format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ol-reversed.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ol-reversed.js new file mode 100644 index 0000000..be8e0e8 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ol-reversed.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G","16":"M N O fB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD SC 3C RD","16":"C"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Reversed attribute of ordered lists",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/once-event-listener.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/once-event-listener.js new file mode 100644 index 0000000..b108f34 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/once-event-listener.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"\"once\" event listener option",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/online-status.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/online-status.js new file mode 100644 index 0000000..9e1b555 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/online-status.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D 5C","260":"E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC","516":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K"},E:{"1":"eB J E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","1025":"D"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD","4":"TC"},G:{"1":"E 4C TD UD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD","1025":"VD"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"A","132":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Online/offline status",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/opus.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/opus.js new file mode 100644 index 0000000..fdf42e0 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/opus.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB"},E:{"2":"I eB J D E F A BD eC CD DD ED FD fC","132":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC","260":"qC","516":"rC LD XC sC tC uC","1028":"vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB ND OD PD QD SC 3C RD TC"},G:{"1":"vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD","132":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC","260":"qC","516":"rC oD XC sC tC uC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Opus audio format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/orientation-sensor.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/orientation-sensor.js new file mode 100644 index 0000000..d854c04 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/orientation-sensor.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B","194":"8B ZC 9B aC AC BC CC DC EC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:4,C:"Orientation Sensor",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/outline.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/outline.js new file mode 100644 index 0000000..5e90107 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/outline.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D 5C","260":"E","388":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","388":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD","129":"TC","260":"F B ND OD PD QD SC 3C"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"C H TC","260":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"388":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS outline properties",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/pad-start-end.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/pad-start-end.js new file mode 100644 index 0000000..d67f99d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/pad-start-end.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"String.prototype.padStart(), String.prototype.padEnd()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/page-transition-events.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/page-transition-events.js new file mode 100644 index 0000000..9ca2796 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/page-transition-events.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"PageTransitionEvent",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/pagevisibility.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/pagevisibility.js new file mode 100644 index 0000000..6d2dd09 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/pagevisibility.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F 9C AD","33":"A B C K L G M N"},D:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K","33":"L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B C ND OD PD QD SC 3C RD","33":"G M N O fB"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","33":"uD vD"},J:{"1":"A","2":"D"},K:{"1":"H TC","2":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","33":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Page Visibility",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/passive-event-listener.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/passive-event-listener.js new file mode 100644 index 0000000..f7e53cb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/passive-event-listener.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"Passive event listeners",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/passkeys.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/passkeys.js new file mode 100644 index 0000000..f54c5d7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/passkeys.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p"},C:{"1":"4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p"},E:{"1":"iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e ND OD PD QD SC 3C RD TC"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"BB CB DB EB FB GB HB IB JB","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","16":"AB"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"Passkeys",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/passwordrules.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/passwordrules.js new file mode 100644 index 0000000..8cc4b72 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/passwordrules.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","16":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC 9C AD","16":"dC 7C 8C"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB","16":"cC RC dC"},E:{"1":"C K TC","2":"I eB J D E F A B BD eC CD DD ED FD fC SC","16":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B ND OD PD QD SC 3C RD TC","16":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"16":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","16":"KB"},J:{"2":"D","16":"A"},K:{"2":"A B C SC 3C TC","16":"H"},L:{"16":"KB"},M:{"16":"RC"},N:{"2":"A","16":"B"},O:{"16":"UC"},P:{"2":"I wD xD","16":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D AE"}},B:1,C:"Password Rules",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/path2d.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/path2d.js new file mode 100644 index 0000000..43583f2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/path2d.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K","132":"L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB 9C AD","132":"hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB","132":"mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD DD","132":"E F ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB ND OD PD QD SC 3C RD TC","132":"DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD","16":"E","132":"WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","132":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Path2D",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/payment-request.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/payment-request.js new file mode 100644 index 0000000..fa7d6d2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/payment-request.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K","322":"L","8196":"G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 9C AD","4162":"5B 6B 7B 8B ZC 9B aC AC BC CC DC","16452":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B","194":"3B 4B 5B 6B 7B 8B","1090":"ZC 9B","8196":"aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD","514":"A B fC","8196":"C SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB ND OD PD QD SC 3C RD TC","194":"qB rB sB tB uB vB wB xB","8196":"yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC"},G:{"1":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD","514":"ZD aD bD","8196":"cD dD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"2049":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 2D 3D 4D 5D VC WC XC 6D","2":"I","8196":"wD xD yD zD 0D fC 1D"},Q:{"8196":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:2,C:"Payment Request API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/pdf-viewer.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/pdf-viewer.js new file mode 100644 index 0000000..93767f6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/pdf-viewer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","132":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD SC 3C RD"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"16":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"16":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"Built-in PDF viewer",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/permissions-api.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/permissions-api.js new file mode 100644 index 0000000..73af947 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/permissions-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB ND OD PD QD SC 3C RD TC"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Permissions API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/permissions-policy.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/permissions-policy.js new file mode 100644 index 0000000..81ff638 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/permissions-policy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","258":"P H Q R S T","322":"U V","388":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC 9C AD","258":"0 1 2 3 4 5 6 7 8 9 MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC","258":"9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T","322":"U V","388":"0 1 2 3 4 5 6 7 8 9 W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B BD eC CD DD ED FD fC","258":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB ND OD PD QD SC 3C RD TC","258":"xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC","322":"KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c","388":"0 1 2 3 4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD","258":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","258":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","388":"H"},L:{"388":"KB"},M:{"258":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I wD xD yD","258":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"258":"7D"},R:{"388":"8D"},S:{"2":"9D","258":"AE"}},B:5,C:"Permissions Policy",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/picture-in-picture.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/picture-in-picture.js new file mode 100644 index 0000000..0282892 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/picture-in-picture.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC 9C AD","132":"0 1 2 3 4 5 6 7 8 9 KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","1090":"FC","1412":"JC","1668":"GC HC IC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC","2114":"HC"},E:{"1":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD","4100":"A B C K fC SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB ND OD PD QD SC 3C RD TC","8196":"nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC"},G:{"1":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD","4100":"XD YD ZD aD bD cD dD eD fD gD hD iD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"16388":"KB"},M:{"16388":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"Picture-in-Picture",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/picture.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/picture.js new file mode 100644 index 0000000..6bb5f87 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/picture.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB 9C AD","578":"kB lB mB nB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB","194":"nB"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB ND OD PD QD SC 3C RD TC","322":"EB"},G:{"1":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Picture element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ping.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ping.js new file mode 100644 index 0000000..c3a8097 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ping.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M"},C:{"2":"6C","194":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"194":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"194":"9D AE"}},B:1,C:"Ping attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/png-alpha.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/png-alpha.js new file mode 100644 index 0000000..4ded321 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/png-alpha.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"D E F A B","2":"5C","8":"J"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"PNG alpha transparency",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/pointer-events.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/pointer-events.js new file mode 100644 index 0000000..942da13 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/pointer-events.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","2":"6C YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:7,C:"CSS pointer-events (for HTML)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/pointer.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/pointer.js new file mode 100644 index 0000000..95b1630 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/pointer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F 5C","164":"A"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD","8":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB","328":"rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB","8":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B","584":"2B 3B 4B"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD","8":"D E F A B C DD ED FD fC SC","1096":"TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","8":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB","584":"pB qB rB"},G:{"1":"gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD","6148":"fD"},H:{"2":"pD"},I:{"1":"KB","8":"YC I qD rD sD tD 4C uD vD"},J:{"8":"D A"},K:{"1":"H","2":"A","8":"B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","36":"A"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"wD","8":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","328":"9D"}},B:2,C:"Pointer events",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/pointerlock.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/pointerlock.js new file mode 100644 index 0000000..4e9ef07 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/pointerlock.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K 9C AD","33":"L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G","33":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB","66":"M N O fB AB BB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","16":"H"},L:{"2":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"16":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"16":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Pointer Lock API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/portals.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/portals.js new file mode 100644 index 0000000..0c12c06 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/portals.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O P H Q R S","322":"0 1 2 3 4 5 6 7 8 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","450":"T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC","194":"NC OC PC QC P H Q R S","322":"0 1 2 3 4 5 6 7 8 9 U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","450":"T"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC","194":"AC BC CC DC EC FC GC HC IC JC KC","322":"0 1 2 3 4 5 6 7 8 9 LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"450":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Portals",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/prefers-color-scheme.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/prefers-color-scheme.js new file mode 100644 index 0000000..b4a9e08 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/prefers-color-scheme.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC"},E:{"1":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC"},G:{"1":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"prefers-color-scheme media query",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js new file mode 100644 index 0000000..6b35165 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"prefers-reduced-motion media query",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/progress.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/progress.js new file mode 100644 index 0000000..d044478 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/progress.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","2":"F ND OD PD QD"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD","132":"VD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"progress element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/promise-finally.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/promise-finally.js new file mode 100644 index 0000000..2fd987b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/promise-finally.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB ND OD PD QD SC 3C RD TC"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"Promise.prototype.finally",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/promises.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/promises.js new file mode 100644 index 0000000..f9dbcef --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/promises.js @@ -0,0 +1 @@ +module.exports={A:{A:{"8":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","4":"HB IB","8":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","4":"iB","8":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB"},E:{"1":"E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I eB J D BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","4":"fB","8":"F B C G M N O ND OD PD QD SC 3C RD TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"eC SD 4C TD UD VD"},H:{"8":"pD"},I:{"1":"KB vD","8":"YC I qD rD sD tD 4C uD"},J:{"8":"D A"},K:{"1":"H","8":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"8":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Promises",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/proximity.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/proximity.js new file mode 100644 index 0000000..9fd3c5f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/proximity.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"9D AE"}},B:4,C:"Proximity API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/proxy.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/proxy.js new file mode 100644 index 0000000..59dd282 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/proxy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O oB pB qB rB sB tB uB vB wB xB yB","66":"fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC","66":"G M N O fB AB BB CB DB EB"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Proxy object",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/publickeypinning.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/publickeypinning.js new file mode 100644 index 0000000..90d72b3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/publickeypinning.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","4":"DB","16":"AB BB CB EB"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"I wD xD yD zD 0D fC","2":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"9D","2":"AE"}},B:6,C:"HTTP Public Key Pinning",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/push-api.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/push-api.js new file mode 100644 index 0000000..d60cf85 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/push-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"N O","2":"C K L G M","257":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB 9C AD","257":"0 1 2 3 4 5 6 7 8 9 uB wB xB yB zB 0B 1B 3B 4B 5B 6B 7B 8B ZC aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","1281":"vB 2B 9B"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB","257":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","388":"uB vB wB xB yB zB"},E:{"2":"I eB J BD eC CD DD","514":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC","4609":"XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","6660":"iC jC kC lC mC KD WC nC oC pC qC rC LD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB ND OD PD QD SC 3C RD TC","16":"nB oB pB qB rB","257":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC","8196":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"2":"8D"},S:{"257":"9D AE"}},B:5,C:"Push API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/queryselector.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/queryselector.js new file mode 100644 index 0000000..7650867 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/queryselector.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"5C","8":"J D","132":"E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","8":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z OD PD QD SC 3C RD TC","8":"F ND"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"querySelector/querySelectorAll",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/readonly-attr.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/readonly-attr.js new file mode 100644 index 0000000..2355267 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/readonly-attr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B","16":"5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","16":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F ND","132":"B C OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C TD UD"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"H","132":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"257":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"readonly attribute of input and textarea elements",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/referrer-policy.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/referrer-policy.js new file mode 100644 index 0000000..17f9397 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/referrer-policy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","132":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"C K L G M N O","513":"P H Q R S"},C:{"1":"V W X Y Z","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB 9C AD","513":"mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U","2049":"0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB","260":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B","513":"aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S"},E:{"2":"I eB J D BD eC CD DD","132":"E F A B ED FD fC","513":"C SC TC","1025":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","1537":"K L GD HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","513":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC"},G:{"2":"eC SD 4C TD UD VD","132":"E WD XD YD ZD aD bD cD","513":"dD eD fD gD","1025":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","1537":"hD iD jD kD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2049":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I","513":"wD xD yD zD 0D fC 1D 2D 3D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"513":"9D AE"}},B:4,C:"Referrer Policy",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/registerprotocolhandler.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/registerprotocolhandler.js new file mode 100644 index 0000000..3ad505c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/registerprotocolhandler.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","129":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C"},D:{"2":"I eB J D E F A B C","129":"0 1 2 3 4 5 6 7 8 9 K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B ND OD PD QD SC 3C","129":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D","129":"A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:1,C:"Custom protocol handling",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/rel-noopener.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/rel-noopener.js new file mode 100644 index 0000000..58fa30d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/rel-noopener.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"rel=noopener",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/rel-noreferrer.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/rel-noreferrer.js new file mode 100644 index 0000000..609160c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/rel-noreferrer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","132":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L G"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Link type \"noreferrer\"",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/rellist.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/rellist.js new file mode 100644 index 0000000..1eb7e34 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/rellist.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M","132":"N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB","132":"0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB ND OD PD QD SC 3C RD TC","132":"nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","132":"wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"relList (DOMTokenList)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/rem.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/rem.js new file mode 100644 index 0000000..2006bf6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/rem.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E 5C","132":"F A"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","2":"6C YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F B ND OD PD QD SC 3C"},G:{"1":"E SD 4C UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC","260":"TD"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"C H TC","2":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"rem (root em) units",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/requestanimationframe.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/requestanimationframe.js new file mode 100644 index 0000000..4cbb6e7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/requestanimationframe.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","33":"B C K L G M N O fB AB BB CB","164":"I eB J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F","33":"CB DB","164":"O fB AB BB","420":"A B C K L G M N"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","33":"UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"requestAnimationFrame",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/requestidlecallback.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/requestidlecallback.js new file mode 100644 index 0000000..1f8e775 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/requestidlecallback.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 9C AD","194":"3B 4B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB"},E:{"1":"MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC","322":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD","322":"iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"requestIdleCallback",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/resizeobserver.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/resizeobserver.js new file mode 100644 index 0000000..fe22fb5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/resizeobserver.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B","194":"4B 5B 6B 7B 8B ZC 9B aC AC BC"},E:{"1":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC TC","66":"K"},F:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB ND OD PD QD SC 3C RD TC","194":"rB sB tB uB vB wB xB yB zB 0B 1B"},G:{"1":"iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"Resize Observer",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/resource-timing.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/resource-timing.js new file mode 100644 index 0000000..82e6542 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/resource-timing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB 9C AD","194":"hB iB jB kB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","260":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Resource Timing (basic support)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/rest-parameters.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/rest-parameters.js new file mode 100644 index 0000000..3344810 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/rest-parameters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB","194":"uB vB wB"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB ND OD PD QD SC 3C RD TC","194":"hB iB jB"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Rest parameters",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/rtcpeerconnection.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/rtcpeerconnection.js new file mode 100644 index 0000000..b53124e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/rtcpeerconnection.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L","260":"G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD","33":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB","33":"DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N ND OD PD QD SC 3C RD TC","33":"O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D","130":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","33":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"WebRTC Peer-to-peer connections",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ruby.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ruby.js new file mode 100644 index 0000000..a1387fe --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ruby.js @@ -0,0 +1 @@ +module.exports={A:{A:{"4":"J D E 5C","132":"F A B"},B:{"4":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","8":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB 9C AD"},D:{"4":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","8":"I"},E:{"4":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I BD eC"},F:{"4":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","8":"F B C ND OD PD QD SC 3C RD TC"},G:{"4":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"eC SD 4C"},H:{"8":"pD"},I:{"4":"YC I KB tD 4C uD vD","8":"qD rD sD"},J:{"4":"A","8":"D"},K:{"4":"H","8":"A B C SC 3C TC"},L:{"4":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"4":"UC"},P:{"4":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"4":"7D"},R:{"4":"8D"},S:{"1":"9D AE"}},B:1,C:"Ruby annotation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/run-in.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/run-in.js new file mode 100644 index 0000000..7d3734d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/run-in.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F A B","2":"J D 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB","2":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J CD","2":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"DD","129":"I BD eC"},F:{"1":"F B C G M N O ND OD PD QD SC 3C RD TC","2":"0 1 2 3 4 5 6 7 8 9 fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"SD 4C TD UD VD","2":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","129":"eC"},H:{"1":"pD"},I:{"1":"YC I qD rD sD tD 4C uD","2":"KB vD"},J:{"1":"D A"},K:{"1":"A B C SC 3C TC","2":"H"},L:{"2":"KB"},M:{"2":"RC"},N:{"1":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:4,C:"display: run-in",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js new file mode 100644 index 0000000..1c86e15 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","388":"B"},B:{"1":"O P H Q R S T","2":"C K L G","129":"M N","513":"0 1 2 3 4 5 6 7 8 9 U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9C AD"},D:{"1":"1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","513":"0 1 2 3 4 5 6 7 8 9 H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC SC","2052":"L HD","3076":"C K TC GD"},F:{"1":"pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB ND OD PD QD SC 3C RD TC","513":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD","2052":"dD eD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","513":"H"},L:{"513":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"16":"7D"},R:{"513":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"'SameSite' cookie attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/screen-orientation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/screen-orientation.js new file mode 100644 index 0000000..be05690 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/screen-orientation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","164":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","36":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N 9C AD","36":"O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB ND OD PD QD SC 3C RD TC"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A","36":"B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","16":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"Screen Orientation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/script-async.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/script-async.js new file mode 100644 index 0000000..6370157 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/script-async.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","2":"6C YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","132":"eB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"async attribute for external scripts",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/script-defer.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/script-defer.js new file mode 100644 index 0000000..4aea855 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/script-defer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","132":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","257":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"defer attribute for external scripts",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/scrollintoview.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/scrollintoview.js new file mode 100644 index 0000000..b74cc8d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/scrollintoview.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D 5C","132":"E F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","132":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","132":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC","132":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F ND OD PD QD","16":"B SC 3C","132":"C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB RD TC"},G:{"1":"VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C","132":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"1":"KB","16":"qD rD","132":"YC I sD tD 4C uD vD"},J:{"132":"D A"},K:{"1":"H","132":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","132":"I wD xD yD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"scrollIntoView",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js new file mode 100644 index 0000000..b0edc24 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"Element.scrollIntoViewIfNeeded()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/sdch.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/sdch.js new file mode 100644 index 0000000..00dddc5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/sdch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B","2":"0 1 2 3 4 5 6 7 8 9 ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC","2":"0 1 2 3 4 5 6 7 8 9 F B C LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"SDCH Accept-Encoding/Content-Encoding",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/selection-api.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/selection-api.js new file mode 100644 index 0000000..d7c600e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/selection-api.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","16":"5C","260":"J D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","132":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB 9C AD","2180":"tB uB vB wB xB yB zB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","132":"F B C ND OD PD QD SC 3C RD TC"},G:{"16":"4C","132":"eC SD","516":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB uD vD","16":"YC I qD rD sD tD","1025":"4C"},J:{"1":"A","16":"D"},K:{"1":"H","16":"A B C SC 3C","132":"TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","16":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2180":"9D"}},B:5,C:"Selection API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/server-timing.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/server-timing.js new file mode 100644 index 0000000..d5ca1a1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/server-timing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC","196":"9B aC AC BC","324":"CC"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC","516":"K L G TC GD HD ID gC hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B ND OD PD QD SC 3C RD TC"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"Server Timing",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/serviceworkers.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/serviceworkers.js new file mode 100644 index 0000000..f1052ff --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/serviceworkers.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L","322":"G M"},C:{"1":"VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB 9C AD","194":"jB kB lB mB nB oB pB qB rB sB tB","1025":"0 1 2 3 4 5 6 7 8 9 uB wB xB yB zB 0B 1B 3B 4B 5B 6B 7B 8B ZC aC AC BC CC DC EC FC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB","1537":"vB 2B 9B GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB","4":"qB rB sB tB uB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB ND OD PD QD SC 3C RD TC","4":"HB IB JB gB hB"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","4":"KB"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"Service Workers",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/setimmediate.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/setimmediate.js new file mode 100644 index 0000000..18925d9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/setimmediate.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"C K L G M N O","2":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"1":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Efficient Script Yielding: setImmediate()",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/shadowdom.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/shadowdom.js new file mode 100644 index 0000000..4f17be4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/shadowdom.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"P","2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","66":"JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B"},D:{"1":"lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"FB GB HB IB JB gB hB iB jB kB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC","2":"0 1 2 3 4 5 6 7 8 9 F B C FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C","33":"uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"wD xD yD zD 0D fC 1D 2D","2":"AB BB CB DB EB FB GB HB IB JB 3D 4D 5D VC WC XC 6D","33":"I"},Q:{"1":"7D"},R:{"2":"8D"},S:{"1":"9D","2":"AE"}},B:7,C:"Shadow DOM (deprecated V0 spec)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/shadowdomv1.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/shadowdomv1.js new file mode 100644 index 0000000..8ed7063 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/shadowdomv1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 9C AD","322":"8B","578":"ZC 9B aC AC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B"},E:{"1":"A B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB ND OD PD QD SC 3C RD TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD","132":"ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","4":"wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"Shadow DOM (V1)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/sharedarraybuffer.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/sharedarraybuffer.js new file mode 100644 index 0000000..92211ab --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/sharedarraybuffer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"P H Q R S T U V W X Y","2":"C K L G","194":"M N O","513":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 9C AD","194":"7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC","450":"MC NC OC PC QC","513":"0 1 2 3 4 5 6 7 8 9 P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC","194":"9B aC AC BC CC DC EC FC","513":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A BD eC CD DD ED FD","194":"B C K L G fC SC TC GD HD ID","513":"gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB ND OD PD QD SC 3C RD TC","194":"xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC","513":"0 1 2 3 4 5 6 7 8 9 QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD","194":"aD bD cD dD eD fD gD hD iD jD kD lD","513":"gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","513":"H"},L:{"513":"KB"},M:{"513":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I wD xD yD zD 0D fC 1D 2D 3D 4D","513":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"513":"8D"},S:{"2":"9D","513":"AE"}},B:6,C:"Shared Array Buffer",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/sharedworkers.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/sharedworkers.js new file mode 100644 index 0000000..2e4b9cd --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/sharedworkers.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"eB J CD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I D E F A B C K L G BD eC DD ED FD fC SC TC GD HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","2":"F ND OD PD"},G:{"1":"TD UD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"B C SC 3C TC","2":"H","16":"A"},L:{"2":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"I","2":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"9D AE"}},B:1,C:"Shared Web Workers",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/sni.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/sni.js new file mode 100644 index 0000000..592770b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/sni.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J 5C","132":"D E"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC"},H:{"1":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"A","2":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Server Name Indication",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/spdy.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/spdy.js new file mode 100644 index 0000000..6ee7fba --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/spdy.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F A 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","2":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"E F A B C FD fC SC","2":"I eB J D BD eC CD DD ED","129":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB sB uB TC","2":"0 1 2 3 4 5 6 7 8 9 F B C qB rB tB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD"},G:{"1":"E WD XD YD ZD aD bD cD dD","2":"eC SD 4C TD UD VD","257":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I tD 4C uD vD","2":"KB qD rD sD"},J:{"2":"D A"},K:{"1":"TC","2":"A B C H SC 3C"},L:{"2":"KB"},M:{"2":"RC"},N:{"1":"B","2":"A"},O:{"2":"UC"},P:{"1":"I","2":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"9D","2":"AE"}},B:7,C:"SPDY protocol",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/speech-recognition.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/speech-recognition.js new file mode 100644 index 0000000..aad1ebb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/speech-recognition.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","514":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD","322":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB","164":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD","1060":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB ND OD PD QD SC 3C RD TC","514":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD","1060":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","164":"H"},L:{"164":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"164":"UC"},P:{"164":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"164":"7D"},R:{"164":"8D"},S:{"322":"9D AE"}},B:7,C:"Speech Recognition API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/speech-synthesis.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/speech-synthesis.js new file mode 100644 index 0000000..98c2d0b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/speech-synthesis.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"L G M N O","2":"C K","257":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB 9C AD","194":"hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB"},D:{"1":"jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB","257":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD"},F:{"1":"HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC","2":"F B C G M N O fB AB BB CB DB EB FB GB ND OD PD QD SC 3C RD TC","257":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"2":"8D"},S:{"1":"9D AE"}},B:7,C:"Speech Synthesis API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/spellcheck-attribute.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/spellcheck-attribute.js new file mode 100644 index 0000000..270de3f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/spellcheck-attribute.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"4":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"4":"pD"},I:{"4":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"A","4":"D"},K:{"4":"A B C H SC 3C TC"},L:{"4":"KB"},M:{"4":"RC"},N:{"4":"A B"},O:{"4":"UC"},P:{"4":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"4":"8D"},S:{"2":"9D AE"}},B:1,C:"Spellcheck attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/sql-storage.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/sql-storage.js new file mode 100644 index 0000000..4ff6c18 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/sql-storage.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"P H Q R S T U V W X Y Z a b c d e f g h i","2":"6 7 8 9 C K L G M N O LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"j k l m n o p q r","385":"0 1 2 3 4 5 s t u v w x y z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i","2":"6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","129":"j k l m n o p q r","385":"0 s t u v w x y z","897":"1 2 3 4 5"},E:{"1":"I eB J D E F A B C BD eC CD DD ED FD fC SC TC","2":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y PD QD SC 3C RD TC","2":"0 1 2 3 4 5 6 7 8 9 F s t u v w x y z ND OD","257":"Z a b c d e f g h i j k l m n o p q r"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD","2":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I qD rD sD tD 4C uD vD","2":"KB"},J:{"1":"D A"},K:{"1":"B C SC 3C TC","2":"A","257":"H"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"Web SQL Database",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/srcset.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/srcset.js new file mode 100644 index 0000000..405c414 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/srcset.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C","514":"K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB 9C AD","194":"iB jB kB lB mB nB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB","260":"kB lB mB nB"},E:{"2":"I eB J D BD eC CD DD","260":"E ED","1028":"F A FD fC","2052":"1C 2C MD","3076":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB ND OD PD QD SC 3C RD TC","260":"BB CB DB EB"},G:{"1":"1C 2C","2":"eC SD 4C TD UD VD","260":"E WD","1028":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Srcset and sizes attributes",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/stream.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/stream.js new file mode 100644 index 0000000..7aaa061 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/stream.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M 9C AD","129":"mB nB oB pB qB rB","420":"N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB","420":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B G M N ND OD PD QD SC 3C RD","420":"C O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD","513":"iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","1537":"bD cD dD eD fD gD hD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D","420":"A"},K:{"1":"H","2":"A B SC 3C","420":"C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","420":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:4,C:"getUserMedia/Stream API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/streams.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/streams.js new file mode 100644 index 0000000..2a0367a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/streams.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","130":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","16":"C K","260":"L G","1028":"P H Q R S T U V W","5124":"M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 9C AD","5124":"i j","7172":"DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h","7746":"7B 8B ZC 9B aC AC BC CC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B","260":"2B 3B 4B 5B 6B 7B 8B","1028":"ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W"},E:{"2":"I eB J D E F BD eC CD DD ED FD","1028":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","3076":"A B C K L fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB ND OD PD QD SC 3C RD TC","260":"pB qB rB sB tB uB vB","1028":"wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD","16":"ZD","1028":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 5D VC WC XC 6D","2":"I wD xD","1028":"yD zD 0D fC 1D 2D 3D 4D"},Q:{"1028":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:1,C:"Streams",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/stricttransportsecurity.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/stricttransportsecurity.js new file mode 100644 index 0000000..d52e245 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/stricttransportsecurity.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A 5C","129":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F B ND OD PD QD SC 3C RD"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Strict Transport Security",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/style-scoped.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/style-scoped.js new file mode 100644 index 0000000..21f31ff --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/style-scoped.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","322":"5B 6B 7B 8B ZC 9B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","194":"AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"9D","2":"AE"}},B:7,C:"Scoped attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/subresource-bundling.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/subresource-bundling.js new file mode 100644 index 0000000..1a5b796 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/subresource-bundling.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Subresource Loading with Web Bundles",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/subresource-integrity.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/subresource-integrity.js new file mode 100644 index 0000000..8b51d2e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/subresource-integrity.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB ND OD PD QD SC 3C RD TC"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD","194":"bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Subresource Integrity",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-css.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-css.js new file mode 100644 index 0000000..6fbbca4 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-css.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","516":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","260":"I eB J D E F A B C K L G M N O fB AB BB CB DB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","4":"I"},E:{"1":"eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD","132":"I eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","132":"eC SD"},H:{"260":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"D A"},K:{"1":"H","260":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"SVG in CSS backgrounds",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-filters.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-filters.js new file mode 100644 index 0000000..427c925 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-filters.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I","4":"eB J D"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"SVG filters",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-fonts.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-fonts.js new file mode 100644 index 0000000..0270f57 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-fonts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"F A B 5C","8":"J D E"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB","2":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","130":"oB pB qB rB sB tB uB vB wB xB yB zB 0B"},E:{"1":"I eB J D E F A B C K L G eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD"},F:{"1":"F B C G M N O fB AB BB CB DB EB ND OD PD QD SC 3C RD TC","2":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","130":"FB GB HB IB JB gB hB iB jB kB lB mB"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"258":"pD"},I:{"1":"YC I tD 4C uD vD","2":"KB qD rD sD"},J:{"1":"D A"},K:{"1":"A B C SC 3C TC","2":"H"},L:{"130":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"I","130":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"130":"8D"},S:{"2":"9D AE"}},B:2,C:"SVG fonts",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-fragment.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-fragment.js new file mode 100644 index 0000000..42a4db5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-fragment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","260":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB","132":"mB nB oB pB qB rB sB tB uB vB wB xB yB zB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D F A B BD eC CD DD FD fC","132":"E ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"G M N O fB AB BB CB","4":"B C OD PD QD SC 3C RD","16":"F ND","132":"DB EB FB GB HB IB JB gB hB iB jB kB lB mB"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD XD YD ZD aD bD","132":"E WD"},H:{"1":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D","132":"A"},K:{"1":"H TC","4":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","132":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"SVG fragment identifiers",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-html.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-html.js new file mode 100644 index 0000000..555c80f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-html.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","388":"F A B"},B:{"4":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C","4":"YC"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"BD eC","4":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"4":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"4":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C","4":"KB uD vD"},J:{"1":"A","2":"D"},K:{"4":"A B C H SC 3C TC"},L:{"4":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"4":"UC"},P:{"4":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"4":"7D"},R:{"4":"8D"},S:{"1":"9D AE"}},B:2,C:"SVG effects for HTML",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-html5.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-html5.js new file mode 100644 index 0000000..a648e26 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-html5.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","8":"J D E","129":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","8":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","8":"I eB J"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"I eB BD eC","129":"J D E CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"B QD SC 3C","8":"F ND OD PD"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","8":"eC SD 4C","129":"E TD UD VD WD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"qD rD sD","129":"YC I tD 4C"},J:{"1":"A","129":"D"},K:{"1":"C H TC","8":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"129":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Inline SVG in HTML5",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-img.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-img.js new file mode 100644 index 0000000..d48b4f6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-img.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD","4":"eC","132":"I eB J D E CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","132":"E eC SD 4C TD UD VD WD"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"qD rD sD","132":"YC I tD 4C"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"SVG in HTML img element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-smil.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-smil.js new file mode 100644 index 0000000..7d7848f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg-smil.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","8":"J D E F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","8":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","8":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","4":"I"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"BD eC","132":"I eB CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","132":"eC SD 4C TD"},H:{"2":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"8":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"SVG SMIL animation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/svg.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg.js new file mode 100644 index 0000000..3dbd58d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/svg.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","8":"J D E","772":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","513":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","4":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","4":"BD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"KB uD vD","2":"qD rD sD","132":"YC I tD 4C"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"257":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"SVG (basic support)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/sxg.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/sxg.js new file mode 100644 index 0000000..d36ab2c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/sxg.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC","132":"JC KC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:6,C:"Signed HTTP Exchanges (SXG)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/tabindex-attr.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/tabindex-attr.js new file mode 100644 index 0000000..c240163 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/tabindex-attr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"D E F A B","16":"J 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"16":"6C YC 9C AD","129":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"16":"I eB BD eC","257":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","16":"F"},G:{"769":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"16":"pD"},I:{"16":"YC I KB qD rD sD tD 4C uD vD"},J:{"16":"D A"},K:{"1":"H","16":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"16":"A B"},O:{"1":"UC"},P:{"16":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"129":"9D AE"}},B:1,C:"tabindex global attribute",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/template-literals.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/template-literals.js new file mode 100644 index 0000000..050d56e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/template-literals.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB"},E:{"1":"A B K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED","129":"C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB ND OD PD QD SC 3C RD TC"},G:{"1":"XD YD ZD aD bD cD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD","129":"dD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"ES6 Template Literals (Template Strings)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/template.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/template.js new file mode 100644 index 0000000..4604bc8 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/template.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C","388":"K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB","132":"GB HB IB JB gB hB iB jB kB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D BD eC CD","388":"E ED","514":"DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","132":"G M N O fB AB BB"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD","388":"E WD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"HTML templates",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/temporal.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/temporal.js new file mode 100644 index 0000000..1a9a2f7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/temporal.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"bB cB dB","2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB"},C:{"1":"WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB 9C AD","194":"SB TB UB VB"},D:{"1":"bB cB dB KB cC RC dC","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C","322":"MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"Temporal",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/testfeat.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/testfeat.js new file mode 100644 index 0000000..e98ff30 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/testfeat.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E A B 5C","16":"F"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","16":"I eB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"B C"},E:{"2":"I J BD eC CD","16":"eB D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD 3C RD TC","16":"SC"},G:{"2":"eC SD 4C TD UD","16":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD tD 4C uD vD","16":"sD"},J:{"2":"A","16":"D"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Test feature - updated",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/text-decoration.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-decoration.js new file mode 100644 index 0000000..46cc980 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-decoration.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","2052":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB 9C AD","1028":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","1060":"J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB","226":"GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B","2052":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D BD eC CD DD","772":"K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","804":"E F A B C FD fC SC","1316":"ED"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB ND OD PD QD SC 3C RD TC","226":"lB mB nB oB pB qB rB sB tB","2052":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"eC SD 4C TD UD VD","292":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","2052":"H"},L:{"2052":"KB"},M:{"1028":"RC"},N:{"2":"A B"},O:{"2052":"UC"},P:{"2":"I wD xD","2052":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2052":"7D"},R:{"2052":"8D"},S:{"1028":"9D AE"}},B:4,C:"text-decoration styling",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/text-emphasis.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-emphasis.js new file mode 100644 index 0000000..3ad5cee --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-emphasis.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","164":"P H Q R S T U V W X Y Z a b c d e f g"},C:{"1":"0 1 2 3 4 5 6 7 8 9 wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB 9C AD","322":"vB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB","164":"FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g"},E:{"1":"E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD","164":"D DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","164":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C","164":"uD vD"},J:{"2":"D","164":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB XC 6D","164":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC"},Q:{"164":"7D"},R:{"164":"8D"},S:{"1":"9D AE"}},B:4,C:"text-emphasis styling",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/text-overflow.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-overflow.js new file mode 100644 index 0000000..9cd8763 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-overflow.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B","2":"5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","8":"6C YC I eB J 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","33":"F ND OD PD QD"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"H TC","33":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"CSS3 Text-overflow",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/text-size-adjust.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-size-adjust.js new file mode 100644 index 0000000..20c0f46 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-size-adjust.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B","258":"GB"},E:{"2":"I eB J D E F A B C K L G BD eC DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","258":"CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 tB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB uB ND OD PD QD SC 3C RD TC"},G:{"2":"eC SD 4C","33":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"33":"RC"},N:{"161":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"CSS text-size-adjust",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/text-stroke.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-stroke.js new file mode 100644 index 0000000..59d356d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/text-stroke.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L","33":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","161":"G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB 9C AD","161":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","450":"yB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"33":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","33":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"33":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","36":"eC"},H:{"2":"pD"},I:{"2":"YC","33":"I KB qD rD sD tD 4C uD vD"},J:{"33":"D A"},K:{"2":"A B C SC 3C TC","33":"H"},L:{"33":"KB"},M:{"161":"RC"},N:{"2":"A B"},O:{"33":"UC"},P:{"33":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"33":"7D"},R:{"33":"8D"},S:{"161":"9D AE"}},B:7,C:"CSS text-stroke and text-fill",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/textcontent.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/textcontent.js new file mode 100644 index 0000000..7bbb798 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/textcontent.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","16":"F"},G:{"1":"E SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Node.textContent",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/textencoder.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/textencoder.js new file mode 100644 index 0000000..0decc08 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/textencoder.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O 9C AD","132":"fB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"TextEncoder & TextDecoder",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/tls1-1.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/tls1-1.js new file mode 100644 index 0000000..b4ccaeb --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/tls1-1.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D 5C","66":"E F A"},B:{"1":"C K L G M N O P H Q R S","2":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","1540":"T U V W X Y Z a b c d e f"},C:{"1":"EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","66":"DB","129":"GC HC IC JC KC LC MC NC OC PC","388":"QC P H Q bC R S T U V W X Y Z a b c d e"},D:{"1":"CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S","2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","1540":"T U V W X Y Z a b c d e f"},E:{"1":"D E F A B C K ED FD fC SC TC","2":"I eB J BD eC CD DD","513":"L GD","1028":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC TC","2":"0 1 2 3 4 5 6 7 8 9 F B C S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD","1540":"LC MC NC OC PC QC P H Q bC R"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD","2":"eC SD 4C","1028":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"16":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"A","2":"D"},K:{"1":"TC","2":"A B C H SC 3C"},L:{"2":"KB"},M:{"2":"RC"},N:{"1":"B","66":"A"},O:{"2":"UC"},P:{"1":"I wD xD yD zD 0D","2":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"1":"9D AE"}},B:7,C:"TLS 1.1",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/tls1-2.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/tls1-2.js new file mode 100644 index 0000000..22ecf91 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/tls1-2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D 5C","66":"E F A"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB 9C AD","66":"EB FB GB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F G ND","66":"B C OD PD QD SC 3C RD TC"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"1":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"1":"A","2":"D"},K:{"1":"H TC","2":"A B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","66":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"TLS 1.2",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/tls1-3.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/tls1-3.js new file mode 100644 index 0000000..fee929f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/tls1-3.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 9C AD","132":"9B aC AC","450":"1B 2B 3B 4B 5B 6B 7B 8B ZC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B","706":"4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC"},E:{"1":"L G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC","1028":"K TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B ND OD PD QD SC 3C RD TC","706":"4B 5B 6B"},G:{"1":"eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:6,C:"TLS 1.3",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/touch.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/touch.js new file mode 100644 index 0000000..bea187b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/touch.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","8":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","578":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O fB AB BB CB DB EB 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","4":"I eB J D E F A B C K L G M N","194":"FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"8":"A","260":"B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:2,C:"Touch events",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/transforms2d.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/transforms2d.js new file mode 100644 index 0000000..12cf77b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/transforms2d.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","8":"J D E","129":"A B","161":"F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","33":"I eB J D E F A B C K L G 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","33":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F ND OD","33":"B C G M N O fB AB BB CB PD QD SC 3C RD"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","33":"YC I qD rD sD tD 4C uD vD"},J:{"33":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS3 2D Transforms",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/transforms3d.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/transforms3d.js new file mode 100644 index 0000000..9a32571 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/transforms3d.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","132":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F 9C AD","33":"A B C K L G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B","33":"C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC","33":"I eB J D E CD DD ED","257":"F A B C K L G FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","33":"E eC SD 4C TD UD VD WD","257":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"qD rD sD","33":"YC I tD 4C uD vD"},J:{"33":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:5,C:"CSS3 3D Transforms",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/trusted-types.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/trusted-types.js new file mode 100644 index 0000000..a3abd5e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/trusted-types.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q"},C:{"1":"cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB 9C AD","66":"cB dB KB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q"},E:{"1":"xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC ND OD PD QD SC 3C RD TC"},G:{"1":"xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"Trusted Types for DOM manipulation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/ttf.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/ttf.js new file mode 100644 index 0000000..4acf29d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/ttf.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","132":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z OD PD QD SC 3C RD TC","2":"F ND"},G:{"1":"E 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD"},H:{"2":"pD"},I:{"1":"YC I KB rD sD tD 4C uD vD","2":"qD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"TTF/OTF - TrueType and OpenType font support",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/typedarrays.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/typedarrays.js new file mode 100644 index 0000000..c25e096 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/typedarrays.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"B","2":"J D E F 5C","132":"A"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC","260":"CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F B ND OD PD QD SC 3C"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD","260":"4C"},H:{"1":"pD"},I:{"1":"I KB tD 4C uD vD","2":"YC qD rD sD"},J:{"1":"A","2":"D"},K:{"1":"C H TC","2":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"132":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Typed Arrays",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/u2f.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/u2f.js new file mode 100644 index 0000000..ec04bb2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/u2f.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","513":"P H Q R S T U V W X Y Z a b c d e f g h i j k l m n"},C:{"1":"FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","322":"xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC u v"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","130":"oB pB qB","513":"rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f","578":"g h i j k l m n"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC TC"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB rB ND OD PD QD SC 3C RD TC","513":"0 1 2 3 4 5 6 7 8 9 qB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"1":"AE","322":"9D"}},B:7,C:"FIDO U2F API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/unhandledrejection.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/unhandledrejection.js new file mode 100644 index 0000000..4fd2ecc --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/unhandledrejection.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC"},G:{"1":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD","16":"bD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:1,C:"unhandledrejection/rejectionhandled events",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js new file mode 100644 index 0000000..d34e989 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Upgrade Insecure Requests",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js new file mode 100644 index 0000000..3a64ba6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","66":"P H Q"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC","66":"MC NC OC PC QC P H"},E:{"1":"iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC ND OD PD QD SC 3C RD TC","66":"EC FC"},G:{"1":"iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"URL Scroll-To-Text Fragment",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/url.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/url.js new file mode 100644 index 0000000..78ee84d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/url.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB","130":"DB EB FB GB HB IB JB gB hB"},E:{"1":"E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD DD","130":"D"},F:{"1":"0 1 2 3 4 5 6 7 8 9 fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","130":"G M N O"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD","130":"VD"},H:{"2":"pD"},I:{"1":"KB vD","2":"YC I qD rD sD tD 4C","130":"uD"},J:{"2":"D","130":"A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"URL API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/urlsearchparams.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/urlsearchparams.js new file mode 100644 index 0000000..192dced --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/urlsearchparams.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD","132":"JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB"},E:{"1":"B C K L G fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC"},G:{"1":"aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"URLSearchParams",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/use-strict.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/use-strict.js new file mode 100644 index 0000000..39c6edd --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/use-strict.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","132":"eB CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F B ND OD PD QD SC 3C"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"1":"pD"},I:{"1":"YC I KB tD 4C uD vD","2":"qD rD sD"},J:{"1":"D A"},K:{"1":"C H 3C TC","2":"A B SC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"ECMAScript 5 Strict Mode",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/user-select-none.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/user-select-none.js new file mode 100644 index 0000000..14fb084 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/user-select-none.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","33":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","33":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","33":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","33":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B"},E:{"33":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","33":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB"},G:{"33":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","33":"YC I qD rD sD tD 4C uD vD"},J:{"33":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"33":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","33":"I wD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","33":"9D"}},B:5,C:"CSS user-select: none",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/user-timing.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/user-timing.js new file mode 100644 index 0000000..6fad625 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/user-timing.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"User Timing API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/variable-fonts.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/variable-fonts.js new file mode 100644 index 0000000..e014455 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/variable-fonts.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 9C AD","4609":"AC BC CC DC EC FC GC HC IC","4674":"aC","5698":"9B","7490":"3B 4B 5B 6B 7B","7746":"8B ZC","8705":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B","4097":"EC","4290":"ZC 9B aC","6148":"AC BC CC DC"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","4609":"B C SC TC","8193":"K L GD HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB ND OD PD QD SC 3C RD TC","4097":"3B","6148":"zB 0B 1B 2B"},G:{"1":"fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD","4097":"bD cD dD eD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"4097":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I wD xD yD","4097":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:5,C:"Variable fonts",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/vector-effect.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/vector-effect.js new file mode 100644 index 0000000..c2f121d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/vector-effect.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","2":"F B ND OD PD QD SC 3C"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C"},H:{"1":"pD"},I:{"1":"KB uD vD","16":"YC I qD rD sD tD 4C"},J:{"16":"D A"},K:{"1":"C H TC","2":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"SVG vector-effect: non-scaling-stroke",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/vibration.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/vibration.js new file mode 100644 index 0000000..b836bda --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/vibration.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB","2":"6C YC I eB J D E F A MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","33":"B C K L G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"Vibration API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/video.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/video.js new file mode 100644 index 0000000..4392cdd --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/video.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","260":"I eB J D E F A B C K L G M N O fB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A BD eC CD DD ED FD fC","513":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"1025":"E eC SD 4C TD UD VD WD XD YD ZD aD","1537":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","132":"qD rD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Video element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/videotracks.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/videotracks.js new file mode 100644 index 0000000..0debc55 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/videotracks.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"C K L G M N O","322":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB 9C AD","194":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB","322":"0 1 2 3 4 5 6 7 8 9 vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J BD eC CD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB ND OD PD QD SC 3C RD TC","322":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","322":"H"},L:{"322":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"322":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"322":"7D"},R:{"322":"8D"},S:{"194":"9D AE"}},B:1,C:"Video Tracks",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/view-transitions.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/view-transitions.js new file mode 100644 index 0000000..a6b6450 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/view-transitions.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s"},C:{"1":"bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB 9C AD","194":"aB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s"},E:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e ND OD PD QD SC 3C RD TC"},G:{"1":"XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"DB EB FB GB HB IB JB","2":"I AB BB CB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"View Transitions API (single-document)",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/viewport-unit-variants.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/viewport-unit-variants.js new file mode 100644 index 0000000..9f4044a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/viewport-unit-variants.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m","194":"n o p"},C:{"1":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h","194":"i j k l m n o p"},E:{"1":"hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y ND OD PD QD SC 3C RD TC","194":"Z a b"},G:{"1":"hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"BB CB DB EB FB GB HB IB JB","2":"I AB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:5,C:"Small, Large, and Dynamic viewport units",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/viewport-units.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/viewport-units.js new file mode 100644 index 0000000..47e1469 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/viewport-units.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","132":"F","260":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","260":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB","260":"AB BB CB DB EB FB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD","260":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD","516":"VD","772":"UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"260":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"Viewport units: vw, vh, vmin, vmax",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wai-aria.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wai-aria.js new file mode 100644 index 0000000..1b01464 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wai-aria.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D 5C","4":"E F A B"},B:{"4":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"4":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"BD eC","4":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F","4":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"4":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"4":"pD"},I:{"2":"YC I qD rD sD tD 4C","4":"KB uD vD"},J:{"2":"D A"},K:{"4":"A B C H SC 3C TC"},L:{"4":"KB"},M:{"4":"RC"},N:{"4":"A B"},O:{"4":"UC"},P:{"4":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"4":"7D"},R:{"4":"8D"},S:{"4":"9D AE"}},B:2,C:"WAI-ARIA Accessibility features",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wake-lock.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wake-lock.js new file mode 100644 index 0000000..c60a115 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wake-lock.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","194":"P H Q R S T U V W X"},C:{"1":"8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD","322":"6 7"},D:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC","194":"JC KC LC MC NC OC PC QC P H Q R S"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B ND OD PD QD SC 3C RD TC","194":"8B 9B AC BC CC DC EC FC GC HC IC JC KC"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:4,C:"Screen Wake Lock API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-bigint.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-bigint.js new file mode 100644 index 0000000..e6f96b2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-bigint.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S"},E:{"1":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC ND OD PD QD SC 3C RD TC"},G:{"1":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly BigInt to i64 conversion in JS API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-bulk-memory.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-bulk-memory.js new file mode 100644 index 0000000..bd8891a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-bulk-memory.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Bulk Memory Operations",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-extended-const.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-extended-const.js new file mode 100644 index 0000000..78d4a6d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-extended-const.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v"},E:{"1":"qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h ND OD PD QD SC 3C RD TC"},G:{"1":"qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"DB EB FB GB HB IB JB","2":"I AB BB CB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Extended Constant Expressions",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-gc.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-gc.js new file mode 100644 index 0000000..a2acc00 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-gc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"1 2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"0 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},C:{"1":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"1 2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"0 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Garbage Collection",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-multi-memory.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-multi-memory.js new file mode 100644 index 0000000..bc259bd --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-multi-memory.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"0 1 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},C:{"1":"7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"1 2 3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"0 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Multi-Memory",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-multi-value.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-multi-value.js new file mode 100644 index 0000000..9f3d957 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-multi-value.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S"},C:{"1":"0 1 2 3 4 5 6 7 8 9 QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S"},E:{"1":"L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC ND OD PD QD SC 3C RD TC"},G:{"1":"gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Multi-Value",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-mutable-globals.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-mutable-globals.js new file mode 100644 index 0000000..284cf3b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-mutable-globals.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC"},E:{"1":"C K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B BD eC CD DD ED FD fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ND OD PD QD SC 3C RD TC"},G:{"1":"dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Import/Export of Mutable Globals",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js new file mode 100644 index 0000000..52626d9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-nontrapping-fptoint.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Non-trapping float-to-int Conversion",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-reference-types.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-reference-types.js new file mode 100644 index 0000000..e9faa83 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-reference-types.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d"},C:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q ND OD PD QD SC 3C RD TC"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Reference Types",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js new file mode 100644 index 0000000..050d365 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-relaxed-simd.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f 9C AD","194":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"DB EB FB GB HB IB JB","2":"I AB BB CB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Relaxed SIMD",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-signext.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-signext.js new file mode 100644 index 0000000..86920c3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-signext.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC"},E:{"1":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC"},G:{"1":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Sign Extension Operators",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-simd.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-simd.js new file mode 100644 index 0000000..ac42225 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-simd.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y"},C:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y"},E:{"1":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC ND OD PD QD SC 3C RD TC"},G:{"1":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB VC WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly SIMD",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-tail-calls.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-tail-calls.js new file mode 100644 index 0000000..62bb1c3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-tail-calls.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t"},C:{"1":"3 4 5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"DB EB FB GB HB IB JB","2":"I AB BB CB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Tail Calls",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-threads.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-threads.js new file mode 100644 index 0000000..d278750 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm-threads.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC"},E:{"1":"G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L BD eC CD DD ED FD fC SC TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B ND OD PD QD SC 3C RD TC"},G:{"1":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD zD 0D fC"},Q:{"16":"7D"},R:{"16":"8D"},S:{"2":"9D","16":"AE"}},B:5,C:"WebAssembly Threads and Atomics",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm.js new file mode 100644 index 0000000..c1c0799 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wasm.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L","578":"G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB 9C AD","194":"xB yB zB 0B 1B","1025":"2B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B","322":"1B 2B 3B 4B 5B 6B"},E:{"1":"B C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB ND OD PD QD SC 3C RD TC","322":"oB pB qB rB sB tB"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","194":"9D"}},B:6,C:"WebAssembly",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wav.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wav.js new file mode 100644 index 0000000..4874384 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wav.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z PD QD SC 3C RD TC","2":"F ND OD"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","16":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"Wav audio format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wbr-element.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wbr-element.js new file mode 100644 index 0000000..65450f5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wbr-element.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D 5C","2":"E F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"BD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","16":"F"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C"},H:{"1":"pD"},I:{"1":"YC I KB sD tD 4C uD vD","16":"qD rD"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"wbr (word break opportunity) element",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/web-animation.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-animation.js new file mode 100644 index 0000000..3a18c99 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-animation.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","260":"P H Q R"},C:{"1":"0 1 2 3 4 5 6 7 8 9 Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB 9C AD","260":"ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC","516":"xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B","580":"jB kB lB mB nB oB pB qB rB sB tB uB vB wB","2049":"NC OC PC QC P H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB","132":"mB nB oB","260":"pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD fC","1090":"B C K SC TC","2049":"L GD HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB ND OD PD QD SC 3C RD TC","132":"DB EB FB","260":"GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD","1090":"bD cD dD eD fD gD hD","2049":"iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB 4D 5D VC WC XC 6D","260":"I wD xD yD zD 0D fC 1D 2D 3D"},Q:{"260":"7D"},R:{"1":"8D"},S:{"1":"AE","516":"9D"}},B:5,C:"Web Animations API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/web-app-manifest.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-app-manifest.js new file mode 100644 index 0000000..e6d7217 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-app-manifest.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M","130":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","578":"OC PC QC P H Q bC R S T"},D:{"1":"0 1 2 3 4 5 6 7 8 9 pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD","4":"WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD","4":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","260":"cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:5,C:"Add to home screen (A2HS)",D:false}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/web-bluetooth.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-bluetooth.js new file mode 100644 index 0000000..43a3870 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-bluetooth.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","1025":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB","194":"vB wB xB yB zB 0B 1B 2B","706":"3B 4B 5B","1025":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB ND OD PD QD SC 3C RD TC","450":"mB nB oB pB","706":"qB rB sB","1025":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD vD","1025":"KB"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","1025":"H"},L:{"1025":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1025":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD"},Q:{"2":"7D"},R:{"1025":"8D"},S:{"2":"9D AE"}},B:7,C:"Web Bluetooth",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/web-serial.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-serial.js new file mode 100644 index 0000000..3301d37 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-serial.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","66":"P H Q R S T U V W"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","66":"QC P H Q R S T U V W"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC ND OD PD QD SC 3C RD TC","66":"DC EC FC GC HC IC JC KC LC MC NC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"129":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"Web Serial API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/web-share.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-share.js new file mode 100644 index 0000000..c50243a --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/web-share.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H","516":"Q R S T U V W X Y Z a b c"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W","130":"O fB AB BB CB DB EB","1028":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},E:{"1":"L G HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC","2049":"K TC GD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v ND OD PD QD SC 3C RD TC"},G:{"1":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD","2049":"eD fD gD hD iD"},H:{"2":"pD"},I:{"2":"YC I qD rD sD tD 4C uD","258":"KB vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I","258":"wD xD yD"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:4,C:"Web Share API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webauthn.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webauthn.js new file mode 100644 index 0000000..4bf0acf --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webauthn.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C","226":"K L G M N"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9C AD","4100":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","5124":"9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC"},E:{"1":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C BD eC CD DD ED FD fC SC","322":"TC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B ND OD PD QD SC 3C RD TC"},G:{"1":"kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD","578":"gD","2052":"jD","3076":"hD iD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"8196":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2":"9D"}},B:2,C:"Web Authentication API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webcodecs.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webcodecs.js new file mode 100644 index 0000000..23ec5ae --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webcodecs.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b"},C:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b"},E:{"1":"xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC","132":"lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P ND OD PD QD SC 3C RD TC"},G:{"1":"xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC","132":"lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB WC XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:5,C:"WebCodecs API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webgl.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webgl.js new file mode 100644 index 0000000..0c2edd5 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webgl.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"5C","8":"J D E F A","129":"B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","129":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","129":"I eB J D E F A B C K L G M N O fB AB BB CB DB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D","129":"E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB"},E:{"1":"E F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC","129":"J D CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B ND OD PD QD SC 3C RD","129":"C G M N O TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD VD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"1":"A","2":"D"},K:{"1":"C H TC","2":"A B SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"8":"A","129":"B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","129":"9D"}},B:6,C:"WebGL - 3D Canvas graphics",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webgl2.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webgl2.js new file mode 100644 index 0000000..09583a9 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webgl2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB 9C AD","194":"sB tB uB","450":"FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB","2242":"vB wB xB yB zB 0B"},D:{"1":"0 1 2 3 4 5 6 7 8 9 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB","578":"tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B"},E:{"1":"G ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A BD eC CD DD ED FD","1090":"B C K L fC SC TC GD HD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB ND OD PD QD SC 3C RD TC"},G:{"1":"lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD","1090":"dD eD fD gD hD iD jD kD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","2242":"9D"}},B:6,C:"WebGL 2.0",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webgpu.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webgpu.js new file mode 100644 index 0000000..fa3851b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webgpu.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P","578":"H Q R S T U V W X Y Z a b","1602":"c d e f g h i j k l m n o p q r s t u"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC 9C AD","194":"0 1 2 3 4 5 6 7 8 9 BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB","4292":"YB ZB aB bB","16580":"cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P","578":"H Q R S T U V W X Y Z a b","1602":"c d e f g h i j k l m n o p q r s t u","2049":"0 1 2 3 4 5 6 7 8 9 v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B G BD eC CD DD ED FD fC ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC","322":"C K L SC TC GD HD qC rC LD XC sC tC uC vC wC","8452":"xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC ND OD PD QD SC 3C RD TC","578":"LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g","2049":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z"},G:{"1":"xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC","322":"qC rC oD XC sC tC uC vC wC"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","2049":"H"},L:{"1":"KB"},M:{"194":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"1":"EB FB GB HB IB JB","2":"I AB BB CB DB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D","194":"AE"}},B:5,C:"WebGPU",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webhid.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webhid.js new file mode 100644 index 0000000..0c9f1d3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webhid.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O","66":"P H Q R S T U V W"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","66":"QC P H Q R S T U V W"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC ND OD PD QD SC 3C RD TC","66":"EC FC GC HC IC JC KC LC MC NC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"WebHID API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webkit-user-drag.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webkit-user-drag.js new file mode 100644 index 0000000..ee667e7 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webkit-user-drag.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","132":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"16":"I eB J D E F A B C K L G","132":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C ND OD PD QD SC 3C RD TC","132":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","132":"H"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"CSS -webkit-user-drag property",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webm.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webm.js new file mode 100644 index 0000000..3d2bad6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webm.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E 5C","520":"F A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","8":"C K","388":"L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB","132":"J D E F A B C K L G M N O fB AB BB CB DB EB"},E:{"2":"BD","8":"I eB eC CD","520":"J D E F A B C DD ED FD fC SC","16385":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","17412":"K TC GD","23556":"L","24580":"G HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F ND OD PD","132":"B C G QD SC 3C RD TC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD","16385":"qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","17412":"eD fD gD hD iD","19460":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC"},H:{"2":"pD"},I:{"1":"KB","2":"qD rD","132":"YC I sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"8":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","132":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:6,C:"WebM video format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webnfc.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webnfc.js new file mode 100644 index 0000000..7965189 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webnfc.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","450":"H Q R S T U V W"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","450":"H Q R S T U V W"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","450":"FC GC HC IC JC KC LC MC NC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"257":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"Web NFC",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webp.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webp.js new file mode 100644 index 0000000..b108c19 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webp.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","8":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB","8":"J D E","132":"F A B C K L G M N O fB AB BB CB","260":"DB EB FB GB HB IB JB gB hB"},E:{"1":"VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F A B C K BD eC CD DD ED FD fC SC TC GD","516":"L G HD ID gC hC UC JD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F ND OD PD","8":"B QD","132":"SC 3C RD","260":"C G M N O TC"},G:{"1":"jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD"},H:{"1":"pD"},I:{"1":"KB 4C uD vD","2":"YC qD rD sD","132":"I tD"},J:{"2":"D A"},K:{"1":"C H SC 3C TC","2":"A","132":"B"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","8":"9D"}},B:6,C:"WebP image format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/websockets.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/websockets.js new file mode 100644 index 0000000..25891df --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/websockets.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC 9C AD","132":"I eB","292":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C K L","260":"G"},E:{"1":"D E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","132":"eB CD","260":"J DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F ND OD PD QD","132":"B C SC 3C RD"},G:{"1":"E UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD","132":"4C TD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","129":"D"},K:{"1":"H TC","2":"A","132":"B C SC 3C"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Web Sockets",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webtransport.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webtransport.js new file mode 100644 index 0000000..cecf4b0 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webtransport.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y d e","66":"Z a b c"},E:{"1":"1C 2C MD","2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC ND OD PD QD SC 3C RD TC"},G:{"1":"1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB XC 6D","2":"I wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:5,C:"WebTransport",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webusb.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webusb.js new file mode 100644 index 0000000..df5a38c --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webusb.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B","66":"4B 5B 6B 7B 8B ZC 9B"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB ND OD PD QD SC 3C RD TC","66":"rB sB tB uB vB wB xB"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","2":"I wD xD yD"},Q:{"2":"7D"},R:{"1":"8D"},S:{"2":"9D AE"}},B:7,C:"WebUSB",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webvr.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webvr.js new file mode 100644 index 0000000..c0b113e --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webvr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"0 1 2 3 4 5 6 7 8 9 C K L H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","66":"P","257":"G M N O"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 9C AD","129":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","194":"4B"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","66":"7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","66":"uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"2":"KB"},M:{"2":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"513":"I","516":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:7,C:"WebVR API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webvtt.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webvtt.js new file mode 100644 index 0000000..f2908e2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webvtt.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB 9C AD","66":"EB FB GB HB IB JB gB","129":"hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B","257":"0 1 2 3 4 5 6 7 8 9 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB"},E:{"1":"J D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC I qD rD sD tD 4C"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"B","2":"A"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"129":"9D AE"}},B:4,C:"WebVTT - Web Video Text Tracks",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webworkers.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webworkers.js new file mode 100644 index 0000000..ef651c2 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webworkers.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","2":"5C","8":"J D E F"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","8":"6C YC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","8":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z QD SC 3C RD TC","2":"F ND","8":"OD PD"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"2":"pD"},I:{"1":"KB qD uD vD","2":"YC I rD sD tD 4C"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","8":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Web Workers",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/webxr.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/webxr.js new file mode 100644 index 0000000..5f4852b --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/webxr.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"2":"C K L G M N O","132":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC 9C AD","322":"0 1 2 3 4 5 6 7 8 9 PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C"},D:{"2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC","66":"DC EC FC GC HC IC JC KC LC MC NC OC PC QC","132":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"2":"I eB J D E F A B C BD eC CD DD ED FD fC SC TC","578":"K L G GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B ND OD PD QD SC 3C RD TC","66":"2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC","132":"0 1 2 3 4 5 6 7 8 9 EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"2":"pD"},I:{"2":"YC I KB qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C SC 3C TC","132":"H"},L:{"132":"KB"},M:{"322":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I wD xD yD zD 0D fC 1D","132":"AB BB CB DB EB FB GB HB IB JB 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D","322":"AE"}},B:4,C:"WebXR Device API",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/will-change.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/will-change.js new file mode 100644 index 0000000..d8942c1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/will-change.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB 9C AD","194":"JB gB hB iB jB kB lB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},E:{"1":"A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB ND OD PD QD SC 3C RD TC"},G:{"1":"YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS will-change property",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/woff.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/woff.js new file mode 100644 index 0000000..eb70003 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/woff.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C AD","2":"6C YC 9C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I"},E:{"1":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z SC 3C RD TC","2":"F B ND OD PD QD"},G:{"1":"E TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C"},H:{"2":"pD"},I:{"1":"KB uD vD","2":"YC qD rD sD tD 4C","130":"I"},J:{"1":"D A"},K:{"1":"B C H SC 3C TC","2":"A"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"WOFF - Web Open Font Format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/woff2.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/woff2.js new file mode 100644 index 0000000..9dcef2f --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/woff2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB"},E:{"1":"C K L G TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I eB J D E F BD eC CD DD ED FD","132":"A B fC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G M N O fB AB BB CB ND OD PD QD SC 3C RD TC"},G:{"1":"ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:2,C:"WOFF 2.0 - Web Open Font Format",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/word-break.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/word-break.js new file mode 100644 index 0000000..5a503f8 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/word-break.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC I eB J D E F A B C K L 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","4":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB"},E:{"1":"F A B C K L G FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","4":"I eB J D E BD eC CD DD ED"},F:{"1":"0 1 2 3 4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C ND OD PD QD SC 3C RD TC","4":"G M N O fB AB BB CB DB EB FB GB HB IB JB gB"},G:{"1":"XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","4":"E eC SD 4C TD UD VD WD"},H:{"2":"pD"},I:{"1":"KB","4":"YC I qD rD sD tD 4C uD vD"},J:{"4":"D A"},K:{"1":"H","2":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"CSS3 word-break",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/wordwrap.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/wordwrap.js new file mode 100644 index 0000000..7293073 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/wordwrap.js @@ -0,0 +1 @@ +module.exports={A:{A:{"4":"J D E F A B 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","4":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","4":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","4":"I eB J D E F A B C K L G M N O fB AB BB CB"},E:{"1":"D E F A B C K L G DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","4":"I eB J BD eC CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z TC","2":"F ND OD","4":"B C PD QD SC 3C RD"},G:{"1":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","4":"eC SD 4C TD UD"},H:{"4":"pD"},I:{"1":"KB uD vD","4":"YC I qD rD sD tD 4C"},J:{"1":"A","4":"D"},K:{"1":"H","4":"A B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"4":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"AE","4":"9D"}},B:4,C:"CSS3 Overflow-wrap",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/x-doc-messaging.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/x-doc-messaging.js new file mode 100644 index 0000000..7dfb5aa --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/x-doc-messaging.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D 5C","132":"E F","260":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD","2":"6C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"BD eC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC","2":"F"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"4":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"Cross-document messaging",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/x-frame-options.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/x-frame-options.js new file mode 100644 index 0000000..e93b3c3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/x-frame-options.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"E F A B","2":"J D 5C"},B:{"1":"C K L G M N O","4":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC","4":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","16":"6C YC 9C AD"},D:{"4":"0 1 2 3 4 5 6 7 8 9 GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB"},E:{"4":"J D E F A B C K L G CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","16":"I eB BD eC"},F:{"4":"0 1 2 3 4 5 6 7 8 9 C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z RD TC","16":"F B ND OD PD QD SC 3C"},G:{"4":"E VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","16":"eC SD 4C TD UD"},H:{"2":"pD"},I:{"4":"I KB tD 4C uD vD","16":"YC qD rD sD"},J:{"4":"D A"},K:{"4":"H TC","16":"A B C SC 3C"},L:{"4":"KB"},M:{"4":"RC"},N:{"1":"A B"},O:{"4":"UC"},P:{"4":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"4":"7D"},R:{"4":"8D"},S:{"1":"9D","4":"AE"}},B:6,C:"X-Frame-Options HTTP header",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/xhr2.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/xhr2.js new file mode 100644 index 0000000..1de07d1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/xhr2.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F 5C","1156":"A B"},B:{"1":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","1028":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"6C YC","1028":"C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB","1284":"A B","1412":"J D E F","1924":"I eB 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","16":"I eB J","1028":"hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB","1156":"JB gB","1412":"D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB"},E:{"1":"C K L G SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","2":"I BD eC","1028":"E F A B ED FD fC","1156":"D DD","1412":"eB J CD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B ND OD PD QD SC 3C RD","132":"G M N","1028":"C O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB TC"},G:{"1":"bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","2":"eC SD 4C","1028":"E WD XD YD ZD aD","1156":"VD","1412":"TD UD"},H:{"2":"pD"},I:{"1":"KB","2":"qD rD sD","1028":"vD","1412":"uD","1924":"YC I tD 4C"},J:{"1156":"A","1412":"D"},K:{"1":"H","2":"A B SC 3C","1028":"C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1156":"A B"},O:{"1":"UC"},P:{"1":"AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D","1028":"I"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"XMLHttpRequest advanced features",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/xhtml.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/xhtml.js new file mode 100644 index 0000000..df172d3 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/xhtml.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"F A B","2":"J D E 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"1":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"1":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"1":"pD"},I:{"1":"YC I KB qD rD sD tD 4C uD vD"},J:{"1":"D A"},K:{"1":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:1,C:"XHTML served as application/xhtml+xml",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/xhtmlsmil.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/xhtmlsmil.js new file mode 100644 index 0000000..ad0b04d --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/xhtmlsmil.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"F A B 5C","4":"J D E"},B:{"2":"C K L G M N O","8":"0 1 2 3 4 5 6 7 8 9 P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"8":"0 1 2 3 4 5 6 7 8 9 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C 9C AD"},D:{"8":"0 1 2 3 4 5 6 7 8 9 I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC"},E:{"8":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD"},F:{"8":"0 1 2 3 4 5 6 7 8 9 F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z ND OD PD QD SC 3C RD TC"},G:{"8":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C"},H:{"8":"pD"},I:{"8":"YC I KB qD rD sD tD 4C uD vD"},J:{"8":"D A"},K:{"8":"A B C H SC 3C TC"},L:{"8":"KB"},M:{"8":"RC"},N:{"2":"A B"},O:{"8":"UC"},P:{"8":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"8":"7D"},R:{"8":"8D"},S:{"8":"9D AE"}},B:7,C:"XHTML+SMIL animation",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/xml-serializer.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/xml-serializer.js new file mode 100644 index 0000000..35cfdc6 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/xml-serializer.js @@ -0,0 +1 @@ +module.exports={A:{A:{"1":"A B","260":"J D E F 5C"},B:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","132":"B","260":"6C YC I eB J D 9C AD","516":"E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","132":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB"},E:{"1":"E F A B C K L G ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC xC yC zC 0C 1C 2C MD","132":"I eB J D BD eC CD DD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F ND","132":"B C G M N OD PD QD SC 3C RD TC"},G:{"1":"E WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC xC yC zC 0C 1C 2C","132":"eC SD 4C TD UD VD"},H:{"132":"pD"},I:{"1":"KB uD vD","132":"YC I qD rD sD tD 4C"},J:{"132":"D A"},K:{"1":"H","16":"A","132":"B C SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"1":"A B"},O:{"1":"UC"},P:{"1":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"1":"7D"},R:{"1":"8D"},S:{"1":"9D AE"}},B:4,C:"DOM Parsing and Serialization",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/data/features/zstd.js b/site/.next/standalone/node_modules/caniuse-lite/data/features/zstd.js new file mode 100644 index 0000000..d732432 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/data/features/zstd.js @@ -0,0 +1 @@ +module.exports={A:{A:{"2":"J D E F A B 5C"},B:{"1":"5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"C K L G M N O P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","194":"0 1 2 3 4"},C:{"1":"8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC 7C 8C","2":"0 1 2 3 4 5 6 7 6C YC I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C AD"},D:{"1":"5 6 7 8 9 LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB KB cC RC dC","2":"I eB J D E F A B C K L G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B ZC 9B aC AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","194":"0 1 2 3 4"},E:{"2":"I eB J D E F A B C K L G BD eC CD DD ED FD fC SC TC GD HD ID gC hC UC JD VC iC jC kC lC mC KD WC nC oC pC qC rC LD XC sC tC uC vC wC","260":"xC yC zC","516":"0C 1C 2C MD"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z","2":"F B C G M N O fB AB BB CB DB EB FB GB HB IB JB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC QC P H Q bC R S T U V W X Y Z a b c d e f g h i j k l m n o p q ND OD PD QD SC 3C RD TC"},G:{"1":"0C 1C 2C","2":"E eC SD 4C TD UD VD WD XD YD ZD aD bD cD dD eD fD gD hD iD jD kD lD gC hC UC mD VC iC jC kC lC mC nD WC nC oC pC qC rC oD XC sC tC uC vC wC","260":"xC yC zC"},H:{"2":"pD"},I:{"1":"KB","2":"YC I qD rD sD tD 4C uD vD"},J:{"2":"D A"},K:{"2":"A B C H SC 3C TC"},L:{"1":"KB"},M:{"1":"RC"},N:{"2":"A B"},O:{"2":"UC"},P:{"2":"I AB BB CB DB EB FB GB HB IB JB wD xD yD zD 0D fC 1D 2D 3D 4D 5D VC WC XC 6D"},Q:{"2":"7D"},R:{"2":"8D"},S:{"2":"9D AE"}},B:6,C:"zstd (Zstandard) content-encoding",D:true}; diff --git a/site/.next/standalone/node_modules/caniuse-lite/package.json b/site/.next/standalone/node_modules/caniuse-lite/package.json new file mode 100644 index 0000000..91ac1b1 --- /dev/null +++ b/site/.next/standalone/node_modules/caniuse-lite/package.json @@ -0,0 +1,34 @@ +{ + "name": "caniuse-lite", + "version": "1.0.30001787", + "description": "A smaller version of caniuse-db, with only the essentials!", + "main": "dist/unpacker/index.js", + "files": [ + "data", + "dist" + ], + "keywords": [ + "support" + ], + "author": { + "name": "Ben Briggs", + "email": "beneb.info@gmail.com", + "url": "http://beneb.info" + }, + "repository": "browserslist/caniuse-lite", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" +} diff --git a/site/.next/standalone/node_modules/client-only/index.js b/site/.next/standalone/node_modules/client-only/index.js new file mode 100644 index 0000000..e69de29 diff --git a/site/.next/standalone/node_modules/client-only/package.json b/site/.next/standalone/node_modules/client-only/package.json new file mode 100644 index 0000000..9af6d8d --- /dev/null +++ b/site/.next/standalone/node_modules/client-only/package.json @@ -0,0 +1,19 @@ +{ + "name": "client-only", + "description": "This is a marker package to indicate that a module can only be used in Client Components.", + "keywords": [ + "react" + ], + "version": "0.0.1", + "homepage": "https://reactjs.org/", + "bugs": "https://github.com/facebook/react/issues", + "license": "MIT", + "files": ["index.js", "error.js"], + "main": "index.js", + "exports": { + ".": { + "react-server": "./error.js", + "default": "./index.js" + } + } +} diff --git a/site/.next/standalone/node_modules/graceful-fs/clone.js b/site/.next/standalone/node_modules/graceful-fs/clone.js new file mode 100644 index 0000000..dff3cc8 --- /dev/null +++ b/site/.next/standalone/node_modules/graceful-fs/clone.js @@ -0,0 +1,23 @@ +'use strict' + +module.exports = clone + +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ +} + +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj + + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) + + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) + + return copy +} diff --git a/site/.next/standalone/node_modules/graceful-fs/graceful-fs.js b/site/.next/standalone/node_modules/graceful-fs/graceful-fs.js new file mode 100644 index 0000000..8d5b89e --- /dev/null +++ b/site/.next/standalone/node_modules/graceful-fs/graceful-fs.js @@ -0,0 +1,448 @@ +var fs = require('fs') +var polyfills = require('./polyfills.js') +var legacy = require('./legacy-streams.js') +var clone = require('./clone.js') + +var util = require('util') + +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol + +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} + +function noop () {} + +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) +} + +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) + } + +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) + + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() + } + + if (typeof cb === 'function') + cb.apply(this, arguments) + }) + } + + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) + + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() + } + + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) + + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + require('assert').equal(fs[gracefulQueue].length, 0) + }) + } +} + +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} + +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} + +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch + + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$readFile(path, options, cb) + + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$writeFile(path, data, options, cb) + + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$appendFile(path, data, options, cb) + + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 + } + return go$copyFile(src, dest, flags, cb) + + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) + } + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) + } + + return go$readdir(path, options, cb) + + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() + + if (typeof cb === 'function') + cb.call(this, err, files) + } + } + } + } + + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream + } + + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open + } + + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open + } + + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) + + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) + + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) + } + + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() + + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) + } + + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) + } + + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } + + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } + + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } + + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null + + return go$open(path, flags, mode, cb) + + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + return fs +} + +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() +} + +// keep track of the timeout between retry() calls +var retryTimer + +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime + } + } + // call retry to make sure we're actively processing the queue + retry() +} + +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined + + if (fs[gracefulQueue].length === 0) + return + + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] + + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) + } + } + + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) + } +} diff --git a/site/.next/standalone/node_modules/graceful-fs/legacy-streams.js b/site/.next/standalone/node_modules/graceful-fs/legacy-streams.js new file mode 100644 index 0000000..d617b50 --- /dev/null +++ b/site/.next/standalone/node_modules/graceful-fs/legacy-streams.js @@ -0,0 +1,118 @@ +var Stream = require('stream').Stream + +module.exports = legacy + +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } + + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); + + Stream.call(this); + + var self = this; + + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.encoding) this.setEncoding(this.encoding); + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } + + if (this.start > this.end) { + throw new Error('start must be <= end'); + } + + this.pos = this.start; + } + + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } + + self.fd = fd; + self.emit('open', fd); + self._read(); + }) + } + + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); + + Stream.call(this); + + this.path = path; + this.fd = null; + this.writable = true; + + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } + + this.pos = this.start; + } + + this.busy = false; + this._queue = []; + + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } +} diff --git a/site/.next/standalone/node_modules/graceful-fs/package.json b/site/.next/standalone/node_modules/graceful-fs/package.json new file mode 100644 index 0000000..87babf0 --- /dev/null +++ b/site/.next/standalone/node_modules/graceful-fs/package.json @@ -0,0 +1,53 @@ +{ + "name": "graceful-fs", + "description": "A drop-in replacement for fs, making various improvements.", + "version": "4.2.11", + "repository": { + "type": "git", + "url": "https://github.com/isaacs/node-graceful-fs" + }, + "main": "graceful-fs.js", + "directories": { + "test": "test" + }, + "scripts": { + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --follow-tags", + "test": "nyc --silent node test.js | tap -c -", + "posttest": "nyc report" + }, + "keywords": [ + "fs", + "module", + "reading", + "retry", + "retries", + "queue", + "error", + "errors", + "handling", + "EMFILE", + "EAGAIN", + "EINVAL", + "EPERM", + "EACCESS" + ], + "license": "ISC", + "devDependencies": { + "import-fresh": "^2.0.0", + "mkdirp": "^0.5.0", + "rimraf": "^2.2.8", + "tap": "^16.3.4" + }, + "files": [ + "fs.js", + "graceful-fs.js", + "legacy-streams.js", + "polyfills.js", + "clone.js" + ], + "tap": { + "reporter": "classic" + } +} diff --git a/site/.next/standalone/node_modules/graceful-fs/polyfills.js b/site/.next/standalone/node_modules/graceful-fs/polyfills.js new file mode 100644 index 0000000..453f1a9 --- /dev/null +++ b/site/.next/standalone/node_modules/graceful-fs/polyfills.js @@ -0,0 +1,355 @@ +var constants = require('constants') + +var origCwd = process.cwd +var cwd = null + +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform + +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} + +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) +} + +module.exports = patch + +function patch (fs) { + // (re-)implement some things that are known busted or missing. + + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) + } + + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } + + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. + + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) + + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) + + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) + + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) + + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) + + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) + + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} + } + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} + } + + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. + + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } + + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) + + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) + + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } + + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) + + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } + + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } + + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} + } + } + + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } + } + + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + return stats; + } + } + + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true + + if (er.code === "ENOSYS") + return true + + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true + } + + return false + } +} diff --git a/site/.next/standalone/node_modules/nanoid/non-secure/index.cjs b/site/.next/standalone/node_modules/nanoid/non-secure/index.cjs new file mode 100644 index 0000000..d51fcb6 --- /dev/null +++ b/site/.next/standalone/node_modules/nanoid/non-secure/index.cjs @@ -0,0 +1,34 @@ +// This alphabet uses `A-Za-z0-9_-` symbols. +// The order of characters is optimized for better gzip and brotli compression. +// References to the same file (works both for gzip and brotli): +// `'use`, `andom`, and `rict'` +// References to the brotli default dictionary: +// `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf` +let urlAlphabet = + 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict' + +let customAlphabet = (alphabet, defaultSize = 21) => { + return (size = defaultSize) => { + let id = '' + // A compact alternative for `for (var i = 0; i < step; i++)`. + let i = size | 0 + while (i--) { + // `| 0` is more compact and faster than `Math.floor()`. + id += alphabet[(Math.random() * alphabet.length) | 0] + } + return id + } +} + +let nanoid = (size = 21) => { + let id = '' + // A compact alternative for `for (var i = 0; i < step; i++)`. + let i = size | 0 + while (i--) { + // `| 0` is more compact and faster than `Math.floor()`. + id += urlAlphabet[(Math.random() * 64) | 0] + } + return id +} + +module.exports = { nanoid, customAlphabet } diff --git a/site/.next/standalone/node_modules/nanoid/non-secure/package.json b/site/.next/standalone/node_modules/nanoid/non-secure/package.json new file mode 100644 index 0000000..9930d6a --- /dev/null +++ b/site/.next/standalone/node_modules/nanoid/non-secure/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "main": "index.cjs", + "module": "index.js", + "react-native": "index.js" +} \ No newline at end of file diff --git a/site/.next/standalone/node_modules/nanoid/package.json b/site/.next/standalone/node_modules/nanoid/package.json new file mode 100644 index 0000000..a3d3f44 --- /dev/null +++ b/site/.next/standalone/node_modules/nanoid/package.json @@ -0,0 +1,89 @@ +{ + "name": "nanoid", + "version": "3.3.11", + "description": "A tiny (116 bytes), secure URL-friendly unique string ID generator", + "keywords": [ + "uuid", + "random", + "id", + "url" + ], + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "repository": "ai/nanoid", + "browser": { + "./index.js": "./index.browser.js", + "./async/index.js": "./async/index.browser.js", + "./async/index.cjs": "./async/index.browser.cjs", + "./index.cjs": "./index.browser.cjs" + }, + "react-native": "index.js", + "bin": "./bin/nanoid.cjs", + "sideEffects": false, + "types": "./index.d.ts", + "type": "module", + "main": "index.cjs", + "module": "index.js", + "exports": { + ".": { + "react-native": "./index.browser.js", + "browser": "./index.browser.js", + "require": { + "types": "./index.d.cts", + "default": "./index.cjs" + }, + "import": { + "types": "./index.d.ts", + "default": "./index.js" + }, + "default": "./index.js" + }, + "./package.json": "./package.json", + "./async/package.json": "./async/package.json", + "./async": { + "browser": "./async/index.browser.js", + "require": { + "types": "./index.d.cts", + "default": "./async/index.cjs" + }, + "import": { + "types": "./index.d.ts", + "default": "./async/index.js" + }, + "default": "./async/index.js" + }, + "./non-secure/package.json": "./non-secure/package.json", + "./non-secure": { + "require": { + "types": "./index.d.cts", + "default": "./non-secure/index.cjs" + }, + "import": { + "types": "./index.d.ts", + "default": "./non-secure/index.js" + }, + "default": "./non-secure/index.js" + }, + "./url-alphabet/package.json": "./url-alphabet/package.json", + "./url-alphabet": { + "require": { + "types": "./index.d.cts", + "default": "./url-alphabet/index.cjs" + }, + "import": { + "types": "./index.d.ts", + "default": "./url-alphabet/index.js" + }, + "default": "./url-alphabet/index.js" + } + } +} diff --git a/site/.next/standalone/node_modules/next/font/google/target.css b/site/.next/standalone/node_modules/next/font/google/target.css new file mode 100644 index 0000000..e3eb179 --- /dev/null +++ b/site/.next/standalone/node_modules/next/font/google/target.css @@ -0,0 +1 @@ +/* target file for webpack loader */ diff --git a/site/.next/standalone/node_modules/next/package.json b/site/.next/standalone/node_modules/next/package.json new file mode 100644 index 0000000..42a4627 --- /dev/null +++ b/site/.next/standalone/node_modules/next/package.json @@ -0,0 +1,337 @@ +{ + "name": "next", + "version": "14.2.35", + "description": "The React Framework", + "main": "./dist/server/next.js", + "license": "MIT", + "repository": "vercel/next.js", + "bugs": "https://github.com/vercel/next.js/issues", + "homepage": "https://nextjs.org", + "types": "index.d.ts", + "files": [ + "dist", + "app.js", + "app.d.ts", + "babel.js", + "babel.d.ts", + "client.js", + "client.d.ts", + "compat", + "cache.js", + "cache.d.ts", + "config.js", + "config.d.ts", + "constants.js", + "constants.d.ts", + "document.js", + "document.d.ts", + "dynamic.js", + "dynamic.d.ts", + "error.js", + "error.d.ts", + "future", + "legacy", + "script.js", + "script.d.ts", + "server.js", + "server.d.ts", + "head.js", + "head.d.ts", + "image.js", + "image.d.ts", + "link.js", + "link.d.ts", + "router.js", + "router.d.ts", + "jest.js", + "jest.d.ts", + "amp.js", + "amp.d.ts", + "og.js", + "og.d.ts", + "index.d.ts", + "types/index.d.ts", + "types/global.d.ts", + "types/compiled.d.ts", + "image-types/global.d.ts", + "navigation-types/navigation.d.ts", + "navigation-types/compat/navigation.d.ts", + "font", + "navigation.js", + "navigation.d.ts", + "headers.js", + "headers.d.ts", + "navigation-types", + "web-vitals.js", + "web-vitals.d.ts", + "experimental/testmode/playwright.js", + "experimental/testmode/playwright.d.ts", + "experimental/testmode/playwright/msw.js", + "experimental/testmode/playwright/msw.d.ts", + "experimental/testmode/proxy.js", + "experimental/testmode/proxy.d.ts" + ], + "bin": { + "next": "./dist/bin/next" + }, + "scripts": { + "dev": "taskr", + "release": "taskr release", + "build": "pnpm release", + "prepublishOnly": "cd ../../ && turbo run build", + "types": "tsc --declaration --emitDeclarationOnly --stripInternal --declarationDir dist", + "typescript": "tsec --noEmit", + "ncc-compiled": "ncc cache clean && taskr ncc" + }, + "taskr": { + "requires": [ + "./taskfile-webpack.js", + "./taskfile-ncc.js", + "./taskfile-swc.js", + "./taskfile-watch.js" + ] + }, + "dependencies": { + "@next/env": "14.2.35", + "@swc/helpers": "0.5.5", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "sass": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + } + }, + "devDependencies": { + "@ampproject/toolbox-optimizer": "2.8.3", + "@babel/code-frame": "7.22.5", + "@babel/core": "7.22.5", + "@babel/eslint-parser": "7.22.5", + "@babel/generator": "7.22.5", + "@babel/plugin-proposal-class-properties": "7.18.6", + "@babel/plugin-proposal-export-namespace-from": "7.18.9", + "@babel/plugin-proposal-numeric-separator": "7.18.6", + "@babel/plugin-proposal-object-rest-spread": "7.20.7", + "@babel/plugin-syntax-bigint": "7.8.3", + "@babel/plugin-syntax-dynamic-import": "7.8.3", + "@babel/plugin-syntax-import-assertions": "7.22.5", + "@babel/plugin-syntax-jsx": "7.22.5", + "@babel/plugin-transform-modules-commonjs": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.5", + "@babel/preset-env": "7.22.5", + "@babel/preset-react": "7.22.5", + "@babel/preset-typescript": "7.22.5", + "@babel/runtime": "7.22.5", + "@babel/traverse": "7.22.5", + "@babel/types": "7.22.5", + "@capsizecss/metrics": "2.2.0", + "@edge-runtime/cookies": "5.0.0", + "@edge-runtime/ponyfill": "3.0.0", + "@edge-runtime/primitives": "5.0.0", + "@hapi/accept": "5.0.2", + "@jest/transform": "29.5.0", + "@jest/types": "29.5.0", + "@mswjs/interceptors": "0.23.0", + "@napi-rs/triples": "1.2.0", + "@next/polyfill-module": "14.2.35", + "@next/polyfill-nomodule": "14.2.35", + "@next/react-refresh-utils": "14.2.35", + "@next/swc": "14.2.35", + "@opentelemetry/api": "1.6.0", + "@playwright/test": "1.41.2", + "@taskr/clear": "1.1.0", + "@taskr/esnext": "1.1.0", + "@types/amphtml-validator": "1.0.0", + "@types/babel__code-frame": "7.0.2", + "@types/babel__core": "7.1.12", + "@types/babel__generator": "7.6.2", + "@types/babel__template": "7.4.0", + "@types/babel__traverse": "7.11.0", + "@types/bytes": "3.1.1", + "@types/ci-info": "2.0.0", + "@types/compression": "0.0.36", + "@types/content-disposition": "0.5.4", + "@types/content-type": "1.1.3", + "@types/cookie": "0.3.3", + "@types/cross-spawn": "6.0.0", + "@types/debug": "4.1.5", + "@types/express-serve-static-core": "4.17.33", + "@types/fresh": "0.5.0", + "@types/glob": "7.1.1", + "@types/graceful-fs": "4.1.9", + "@types/jsonwebtoken": "9.0.0", + "@types/lodash": "4.14.198", + "@types/lodash.curry": "4.1.6", + "@types/lru-cache": "5.1.0", + "@types/path-to-regexp": "1.7.0", + "@types/picomatch": "2.3.3", + "@types/platform": "1.3.4", + "@types/react": "18.2.37", + "@types/react-dom": "18.2.15", + "@types/react-is": "17.0.3", + "@types/semver": "7.3.1", + "@types/send": "0.14.4", + "@types/shell-quote": "1.7.1", + "@types/tar": "6.1.5", + "@types/text-table": "0.2.1", + "@types/ua-parser-js": "0.7.36", + "@types/uuid": "8.3.1", + "@types/webpack-sources1": "npm:@types/webpack-sources@0.1.5", + "@types/ws": "8.2.0", + "@vercel/ncc": "0.34.0", + "@vercel/nft": "0.26.4", + "@vercel/turbopack-ecmascript-runtime": "https://gitpkg-fork.vercel.sh/vercel/turbo/crates/turbopack-ecmascript-runtime/js?turbopack-240417.2", + "acorn": "8.11.3", + "amphtml-validator": "1.0.35", + "anser": "1.4.9", + "arg": "4.1.0", + "assert": "2.0.0", + "async-retry": "1.2.3", + "async-sema": "3.0.0", + "babel-plugin-transform-define": "2.0.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24", + "browserify-zlib": "0.2.0", + "browserslist": "4.22.2", + "buffer": "5.6.0", + "bytes": "3.1.1", + "ci-info": "watson/ci-info#f43f6a1cefff47fb361c88cf4b943fdbcaafe540", + "cli-select": "1.1.2", + "client-only": "0.0.1", + "commander": "12.0.0", + "comment-json": "3.0.3", + "compression": "1.7.4", + "conf": "5.0.0", + "constants-browserify": "1.0.0", + "content-disposition": "0.5.3", + "content-type": "1.0.4", + "cookie": "0.4.1", + "cross-spawn": "7.0.3", + "crypto-browserify": "3.12.0", + "css.escape": "1.5.1", + "cssnano-preset-default": "5.2.14", + "data-uri-to-buffer": "3.0.1", + "debug": "4.1.1", + "devalue": "2.0.1", + "domain-browser": "4.19.0", + "edge-runtime": "3.0.0", + "events": "3.3.0", + "find-up": "4.1.0", + "fresh": "0.5.2", + "get-orientation": "1.1.2", + "glob": "7.1.7", + "gzip-size": "5.1.1", + "http-proxy": "1.18.1", + "http-proxy-agent": "5.0.0", + "https-browserify": "1.0.0", + "https-proxy-agent": "5.0.1", + "icss-utils": "5.1.0", + "ignore-loader": "0.1.2", + "image-size": "1.0.0", + "is-docker": "2.0.0", + "is-wsl": "2.2.0", + "jest-worker": "27.5.1", + "json5": "2.2.3", + "jsonwebtoken": "9.0.0", + "loader-runner": "4.3.0", + "loader-utils2": "npm:loader-utils@2.0.0", + "loader-utils3": "npm:loader-utils@3.1.3", + "lodash.curry": "4.1.1", + "lru-cache": "5.1.1", + "mini-css-extract-plugin": "2.4.4", + "msw": "1.3.0", + "nanoid": "3.1.32", + "native-url": "0.3.4", + "neo-async": "2.6.1", + "node-html-parser": "5.3.3", + "ora": "4.0.4", + "os-browserify": "0.3.0", + "p-limit": "3.1.0", + "path-browserify": "1.0.1", + "path-to-regexp": "6.1.0", + "picomatch": "4.0.1", + "platform": "1.3.6", + "postcss-flexbugs-fixes": "5.0.2", + "postcss-modules-extract-imports": "3.0.0", + "postcss-modules-local-by-default": "4.0.4", + "postcss-modules-scope": "3.0.0", + "postcss-modules-values": "4.0.0", + "postcss-preset-env": "7.4.3", + "postcss-safe-parser": "6.0.0", + "postcss-scss": "4.0.3", + "postcss-value-parser": "4.2.0", + "process": "0.11.10", + "punycode": "2.1.1", + "querystring-es3": "0.2.1", + "raw-body": "2.4.1", + "react-is": "18.2.0", + "react-refresh": "0.12.0", + "regenerator-runtime": "0.13.4", + "sass-loader": "12.4.0", + "schema-utils2": "npm:schema-utils@2.7.1", + "schema-utils3": "npm:schema-utils@3.0.0", + "semver": "7.3.2", + "send": "0.17.1", + "server-only": "0.0.1", + "setimmediate": "1.0.5", + "shell-quote": "1.7.3", + "source-map": "0.6.1", + "source-map08": "npm:source-map@0.8.0-beta.0", + "stacktrace-parser": "0.1.10", + "stream-browserify": "3.0.0", + "stream-http": "3.1.1", + "strict-event-emitter": "0.5.0", + "string-hash": "1.1.3", + "string_decoder": "1.3.0", + "strip-ansi": "6.0.0", + "superstruct": "1.0.3", + "tar": "6.1.15", + "taskr": "1.1.0", + "terser": "5.27.0", + "terser-webpack-plugin": "5.3.9", + "text-table": "0.2.0", + "timers-browserify": "2.0.12", + "tty-browserify": "0.0.1", + "ua-parser-js": "1.0.35", + "unistore": "3.4.1", + "util": "0.12.4", + "uuid": "8.3.2", + "vm-browserify": "1.1.2", + "watchpack": "2.4.0", + "web-vitals": "3.0.0", + "webpack": "5.90.0", + "webpack-sources1": "npm:webpack-sources@1.4.3", + "webpack-sources3": "npm:webpack-sources@3.2.3", + "ws": "8.2.3", + "zod": "3.22.3" + }, + "engines": { + "node": ">=18.17.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "14.2.33", + "@next/swc-darwin-x64": "14.2.33", + "@next/swc-linux-arm64-gnu": "14.2.33", + "@next/swc-linux-arm64-musl": "14.2.33", + "@next/swc-linux-x64-gnu": "14.2.33", + "@next/swc-linux-x64-musl": "14.2.33", + "@next/swc-win32-arm64-msvc": "14.2.33", + "@next/swc-win32-ia32-msvc": "14.2.33", + "@next/swc-win32-x64-msvc": "14.2.33" + } +} \ No newline at end of file diff --git a/site/.next/standalone/node_modules/picocolors/package.json b/site/.next/standalone/node_modules/picocolors/package.json new file mode 100644 index 0000000..372d4b6 --- /dev/null +++ b/site/.next/standalone/node_modules/picocolors/package.json @@ -0,0 +1,25 @@ +{ + "name": "picocolors", + "version": "1.1.1", + "main": "./picocolors.js", + "types": "./picocolors.d.ts", + "browser": { + "./picocolors.js": "./picocolors.browser.js" + }, + "sideEffects": false, + "description": "The tiniest and the fastest library for terminal output formatting with ANSI colors", + "files": [ + "picocolors.*", + "types.d.ts" + ], + "keywords": [ + "terminal", + "colors", + "formatting", + "cli", + "console" + ], + "author": "Alexey Raspopov", + "repository": "alexeyraspopov/picocolors", + "license": "ISC" +} diff --git a/site/.next/standalone/node_modules/picocolors/picocolors.js b/site/.next/standalone/node_modules/picocolors/picocolors.js new file mode 100644 index 0000000..e32df85 --- /dev/null +++ b/site/.next/standalone/node_modules/picocolors/picocolors.js @@ -0,0 +1,75 @@ +let p = process || {}, argv = p.argv || [], env = p.env || {} +let isColorSupported = + !(!!env.NO_COLOR || argv.includes("--no-color")) && + (!!env.FORCE_COLOR || argv.includes("--color") || p.platform === "win32" || ((p.stdout || {}).isTTY && env.TERM !== "dumb") || !!env.CI) + +let formatter = (open, close, replace = open) => + input => { + let string = "" + input, index = string.indexOf(close, open.length) + return ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close + } + +let replaceClose = (string, close, replace, index) => { + let result = "", cursor = 0 + do { + result += string.substring(cursor, index) + replace + cursor = index + close.length + index = string.indexOf(close, cursor) + } while (~index) + return result + string.substring(cursor) +} + +let createColors = (enabled = isColorSupported) => { + let f = enabled ? formatter : () => String + return { + isColorSupported: enabled, + reset: f("\x1b[0m", "\x1b[0m"), + bold: f("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m"), + dim: f("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m"), + italic: f("\x1b[3m", "\x1b[23m"), + underline: f("\x1b[4m", "\x1b[24m"), + inverse: f("\x1b[7m", "\x1b[27m"), + hidden: f("\x1b[8m", "\x1b[28m"), + strikethrough: f("\x1b[9m", "\x1b[29m"), + + black: f("\x1b[30m", "\x1b[39m"), + red: f("\x1b[31m", "\x1b[39m"), + green: f("\x1b[32m", "\x1b[39m"), + yellow: f("\x1b[33m", "\x1b[39m"), + blue: f("\x1b[34m", "\x1b[39m"), + magenta: f("\x1b[35m", "\x1b[39m"), + cyan: f("\x1b[36m", "\x1b[39m"), + white: f("\x1b[37m", "\x1b[39m"), + gray: f("\x1b[90m", "\x1b[39m"), + + bgBlack: f("\x1b[40m", "\x1b[49m"), + bgRed: f("\x1b[41m", "\x1b[49m"), + bgGreen: f("\x1b[42m", "\x1b[49m"), + bgYellow: f("\x1b[43m", "\x1b[49m"), + bgBlue: f("\x1b[44m", "\x1b[49m"), + bgMagenta: f("\x1b[45m", "\x1b[49m"), + bgCyan: f("\x1b[46m", "\x1b[49m"), + bgWhite: f("\x1b[47m", "\x1b[49m"), + + blackBright: f("\x1b[90m", "\x1b[39m"), + redBright: f("\x1b[91m", "\x1b[39m"), + greenBright: f("\x1b[92m", "\x1b[39m"), + yellowBright: f("\x1b[93m", "\x1b[39m"), + blueBright: f("\x1b[94m", "\x1b[39m"), + magentaBright: f("\x1b[95m", "\x1b[39m"), + cyanBright: f("\x1b[96m", "\x1b[39m"), + whiteBright: f("\x1b[97m", "\x1b[39m"), + + bgBlackBright: f("\x1b[100m", "\x1b[49m"), + bgRedBright: f("\x1b[101m", "\x1b[49m"), + bgGreenBright: f("\x1b[102m", "\x1b[49m"), + bgYellowBright: f("\x1b[103m", "\x1b[49m"), + bgBlueBright: f("\x1b[104m", "\x1b[49m"), + bgMagentaBright: f("\x1b[105m", "\x1b[49m"), + bgCyanBright: f("\x1b[106m", "\x1b[49m"), + bgWhiteBright: f("\x1b[107m", "\x1b[49m"), + } +} + +module.exports = createColors() +module.exports.createColors = createColors diff --git a/site/.next/standalone/node_modules/postcss/lib/at-rule.js b/site/.next/standalone/node_modules/postcss/lib/at-rule.js new file mode 100644 index 0000000..9486447 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/at-rule.js @@ -0,0 +1,25 @@ +'use strict' + +let Container = require('./container') + +class AtRule extends Container { + constructor(defaults) { + super(defaults) + this.type = 'atrule' + } + + append(...children) { + if (!this.proxyOf.nodes) this.nodes = [] + return super.append(...children) + } + + prepend(...children) { + if (!this.proxyOf.nodes) this.nodes = [] + return super.prepend(...children) + } +} + +module.exports = AtRule +AtRule.default = AtRule + +Container.registerAtRule(AtRule) diff --git a/site/.next/standalone/node_modules/postcss/lib/comment.js b/site/.next/standalone/node_modules/postcss/lib/comment.js new file mode 100644 index 0000000..c566506 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/comment.js @@ -0,0 +1,13 @@ +'use strict' + +let Node = require('./node') + +class Comment extends Node { + constructor(defaults) { + super(defaults) + this.type = 'comment' + } +} + +module.exports = Comment +Comment.default = Comment diff --git a/site/.next/standalone/node_modules/postcss/lib/container.js b/site/.next/standalone/node_modules/postcss/lib/container.js new file mode 100644 index 0000000..914c053 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/container.js @@ -0,0 +1,439 @@ +'use strict' + +let { isClean, my } = require('./symbols') +let Declaration = require('./declaration') +let Comment = require('./comment') +let Node = require('./node') + +let parse, Rule, AtRule, Root + +function cleanSource(nodes) { + return nodes.map(i => { + if (i.nodes) i.nodes = cleanSource(i.nodes) + delete i.source + return i + }) +} + +function markDirtyUp(node) { + node[isClean] = false + if (node.proxyOf.nodes) { + for (let i of node.proxyOf.nodes) { + markDirtyUp(i) + } + } +} + +class Container extends Node { + append(...children) { + for (let child of children) { + let nodes = this.normalize(child, this.last) + for (let node of nodes) this.proxyOf.nodes.push(node) + } + + this.markDirty() + + return this + } + + cleanRaws(keepBetween) { + super.cleanRaws(keepBetween) + if (this.nodes) { + for (let node of this.nodes) node.cleanRaws(keepBetween) + } + } + + each(callback) { + if (!this.proxyOf.nodes) return undefined + let iterator = this.getIterator() + + let index, result + while (this.indexes[iterator] < this.proxyOf.nodes.length) { + index = this.indexes[iterator] + result = callback(this.proxyOf.nodes[index], index) + if (result === false) break + + this.indexes[iterator] += 1 + } + + delete this.indexes[iterator] + return result + } + + every(condition) { + return this.nodes.every(condition) + } + + getIterator() { + if (!this.lastEach) this.lastEach = 0 + if (!this.indexes) this.indexes = {} + + this.lastEach += 1 + let iterator = this.lastEach + this.indexes[iterator] = 0 + + return iterator + } + + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (!node[prop]) { + return node[prop] + } else if ( + prop === 'each' || + (typeof prop === 'string' && prop.startsWith('walk')) + ) { + return (...args) => { + return node[prop]( + ...args.map(i => { + if (typeof i === 'function') { + return (child, index) => i(child.toProxy(), index) + } else { + return i + } + }) + ) + } + } else if (prop === 'every' || prop === 'some') { + return cb => { + return node[prop]((child, ...other) => + cb(child.toProxy(), ...other) + ) + } + } else if (prop === 'root') { + return () => node.root().toProxy() + } else if (prop === 'nodes') { + return node.nodes.map(i => i.toProxy()) + } else if (prop === 'first' || prop === 'last') { + return node[prop].toProxy() + } else { + return node[prop] + } + }, + + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value + if (prop === 'name' || prop === 'params' || prop === 'selector') { + node.markDirty() + } + return true + } + } + } + + index(child) { + if (typeof child === 'number') return child + if (child.proxyOf) child = child.proxyOf + return this.proxyOf.nodes.indexOf(child) + } + + insertAfter(exist, add) { + let existIndex = this.index(exist) + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse() + existIndex = this.index(exist) + for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node) + + let index + for (let id in this.indexes) { + index = this.indexes[id] + if (existIndex < index) { + this.indexes[id] = index + nodes.length + } + } + + this.markDirty() + + return this + } + + insertBefore(exist, add) { + let existIndex = this.index(exist) + let type = existIndex === 0 ? 'prepend' : false + let nodes = this.normalize(add, this.proxyOf.nodes[existIndex], type).reverse() + existIndex = this.index(exist) + for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node) + + let index + for (let id in this.indexes) { + index = this.indexes[id] + if (existIndex <= index) { + this.indexes[id] = index + nodes.length + } + } + + this.markDirty() + + return this + } + + normalize(nodes, sample) { + if (typeof nodes === 'string') { + nodes = cleanSource(parse(nodes).nodes) + } else if (Array.isArray(nodes)) { + nodes = nodes.slice(0) + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore') + } + } else if (nodes.type === 'root' && this.type !== 'document') { + nodes = nodes.nodes.slice(0) + for (let i of nodes) { + if (i.parent) i.parent.removeChild(i, 'ignore') + } + } else if (nodes.type) { + nodes = [nodes] + } else if (nodes.prop) { + if (typeof nodes.value === 'undefined') { + throw new Error('Value field is missed in node creation') + } else if (typeof nodes.value !== 'string') { + nodes.value = String(nodes.value) + } + nodes = [new Declaration(nodes)] + } else if (nodes.selector) { + nodes = [new Rule(nodes)] + } else if (nodes.name) { + nodes = [new AtRule(nodes)] + } else if (nodes.text) { + nodes = [new Comment(nodes)] + } else { + throw new Error('Unknown node type in node creation') + } + + let processed = nodes.map(i => { + /* c8 ignore next */ + if (!i[my]) Container.rebuild(i) + i = i.proxyOf + if (i.parent) i.parent.removeChild(i) + if (i[isClean]) markDirtyUp(i) + if (typeof i.raws.before === 'undefined') { + if (sample && typeof sample.raws.before !== 'undefined') { + i.raws.before = sample.raws.before.replace(/\S/g, '') + } + } + i.parent = this.proxyOf + return i + }) + + return processed + } + + prepend(...children) { + children = children.reverse() + for (let child of children) { + let nodes = this.normalize(child, this.first, 'prepend').reverse() + for (let node of nodes) this.proxyOf.nodes.unshift(node) + for (let id in this.indexes) { + this.indexes[id] = this.indexes[id] + nodes.length + } + } + + this.markDirty() + + return this + } + + push(child) { + child.parent = this + this.proxyOf.nodes.push(child) + return this + } + + removeAll() { + for (let node of this.proxyOf.nodes) node.parent = undefined + this.proxyOf.nodes = [] + + this.markDirty() + + return this + } + + removeChild(child) { + child = this.index(child) + this.proxyOf.nodes[child].parent = undefined + this.proxyOf.nodes.splice(child, 1) + + let index + for (let id in this.indexes) { + index = this.indexes[id] + if (index >= child) { + this.indexes[id] = index - 1 + } + } + + this.markDirty() + + return this + } + + replaceValues(pattern, opts, callback) { + if (!callback) { + callback = opts + opts = {} + } + + this.walkDecls(decl => { + if (opts.props && !opts.props.includes(decl.prop)) return + if (opts.fast && !decl.value.includes(opts.fast)) return + + decl.value = decl.value.replace(pattern, callback) + }) + + this.markDirty() + + return this + } + + some(condition) { + return this.nodes.some(condition) + } + + walk(callback) { + return this.each((child, i) => { + let result + try { + result = callback(child, i) + } catch (e) { + throw child.addToError(e) + } + if (result !== false && child.walk) { + result = child.walk(callback) + } + + return result + }) + } + + walkAtRules(name, callback) { + if (!callback) { + callback = name + return this.walk((child, i) => { + if (child.type === 'atrule') { + return callback(child, i) + } + }) + } + if (name instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'atrule' && name.test(child.name)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'atrule' && child.name === name) { + return callback(child, i) + } + }) + } + + walkComments(callback) { + return this.walk((child, i) => { + if (child.type === 'comment') { + return callback(child, i) + } + }) + } + + walkDecls(prop, callback) { + if (!callback) { + callback = prop + return this.walk((child, i) => { + if (child.type === 'decl') { + return callback(child, i) + } + }) + } + if (prop instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'decl' && prop.test(child.prop)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'decl' && child.prop === prop) { + return callback(child, i) + } + }) + } + + walkRules(selector, callback) { + if (!callback) { + callback = selector + + return this.walk((child, i) => { + if (child.type === 'rule') { + return callback(child, i) + } + }) + } + if (selector instanceof RegExp) { + return this.walk((child, i) => { + if (child.type === 'rule' && selector.test(child.selector)) { + return callback(child, i) + } + }) + } + return this.walk((child, i) => { + if (child.type === 'rule' && child.selector === selector) { + return callback(child, i) + } + }) + } + + get first() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[0] + } + + get last() { + if (!this.proxyOf.nodes) return undefined + return this.proxyOf.nodes[this.proxyOf.nodes.length - 1] + } +} + +Container.registerParse = dependant => { + parse = dependant +} + +Container.registerRule = dependant => { + Rule = dependant +} + +Container.registerAtRule = dependant => { + AtRule = dependant +} + +Container.registerRoot = dependant => { + Root = dependant +} + +module.exports = Container +Container.default = Container + +/* c8 ignore start */ +Container.rebuild = node => { + if (node.type === 'atrule') { + Object.setPrototypeOf(node, AtRule.prototype) + } else if (node.type === 'rule') { + Object.setPrototypeOf(node, Rule.prototype) + } else if (node.type === 'decl') { + Object.setPrototypeOf(node, Declaration.prototype) + } else if (node.type === 'comment') { + Object.setPrototypeOf(node, Comment.prototype) + } else if (node.type === 'root') { + Object.setPrototypeOf(node, Root.prototype) + } + + node[my] = true + + if (node.nodes) { + node.nodes.forEach(child => { + Container.rebuild(child) + }) + } +} +/* c8 ignore stop */ diff --git a/site/.next/standalone/node_modules/postcss/lib/css-syntax-error.js b/site/.next/standalone/node_modules/postcss/lib/css-syntax-error.js new file mode 100644 index 0000000..1693033 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/css-syntax-error.js @@ -0,0 +1,100 @@ +'use strict' + +let pico = require('picocolors') + +let terminalHighlight = require('./terminal-highlight') + +class CssSyntaxError extends Error { + constructor(message, line, column, source, file, plugin) { + super(message) + this.name = 'CssSyntaxError' + this.reason = message + + if (file) { + this.file = file + } + if (source) { + this.source = source + } + if (plugin) { + this.plugin = plugin + } + if (typeof line !== 'undefined' && typeof column !== 'undefined') { + if (typeof line === 'number') { + this.line = line + this.column = column + } else { + this.line = line.line + this.column = line.column + this.endLine = column.line + this.endColumn = column.column + } + } + + this.setMessage() + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, CssSyntaxError) + } + } + + setMessage() { + this.message = this.plugin ? this.plugin + ': ' : '' + this.message += this.file ? this.file : '' + if (typeof this.line !== 'undefined') { + this.message += ':' + this.line + ':' + this.column + } + this.message += ': ' + this.reason + } + + showSourceCode(color) { + if (!this.source) return '' + + let css = this.source + if (color == null) color = pico.isColorSupported + if (terminalHighlight) { + if (color) css = terminalHighlight(css) + } + + let lines = css.split(/\r?\n/) + let start = Math.max(this.line - 3, 0) + let end = Math.min(this.line + 2, lines.length) + + let maxWidth = String(end).length + + let mark, aside + if (color) { + let { bold, gray, red } = pico.createColors(true) + mark = text => bold(red(text)) + aside = text => gray(text) + } else { + mark = aside = str => str + } + + return lines + .slice(start, end) + .map((line, index) => { + let number = start + 1 + index + let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ' + if (number === this.line) { + let spacing = + aside(gutter.replace(/\d/g, ' ')) + + line.slice(0, this.column - 1).replace(/[^\t]/g, ' ') + return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^') + } + return ' ' + aside(gutter) + line + }) + .join('\n') + } + + toString() { + let code = this.showSourceCode() + if (code) { + code = '\n\n' + code + '\n' + } + return this.name + ': ' + this.message + code + } +} + +module.exports = CssSyntaxError +CssSyntaxError.default = CssSyntaxError diff --git a/site/.next/standalone/node_modules/postcss/lib/declaration.js b/site/.next/standalone/node_modules/postcss/lib/declaration.js new file mode 100644 index 0000000..a04bdec --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/declaration.js @@ -0,0 +1,24 @@ +'use strict' + +let Node = require('./node') + +class Declaration extends Node { + constructor(defaults) { + if ( + defaults && + typeof defaults.value !== 'undefined' && + typeof defaults.value !== 'string' + ) { + defaults = { ...defaults, value: String(defaults.value) } + } + super(defaults) + this.type = 'decl' + } + + get variable() { + return this.prop.startsWith('--') || this.prop[0] === '$' + } +} + +module.exports = Declaration +Declaration.default = Declaration diff --git a/site/.next/standalone/node_modules/postcss/lib/document.js b/site/.next/standalone/node_modules/postcss/lib/document.js new file mode 100644 index 0000000..4468991 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/document.js @@ -0,0 +1,33 @@ +'use strict' + +let Container = require('./container') + +let LazyResult, Processor + +class Document extends Container { + constructor(defaults) { + // type needs to be passed to super, otherwise child roots won't be normalized correctly + super({ type: 'document', ...defaults }) + + if (!this.nodes) { + this.nodes = [] + } + } + + toResult(opts = {}) { + let lazy = new LazyResult(new Processor(), this, opts) + + return lazy.stringify() + } +} + +Document.registerLazyResult = dependant => { + LazyResult = dependant +} + +Document.registerProcessor = dependant => { + Processor = dependant +} + +module.exports = Document +Document.default = Document diff --git a/site/.next/standalone/node_modules/postcss/lib/fromJSON.js b/site/.next/standalone/node_modules/postcss/lib/fromJSON.js new file mode 100644 index 0000000..09f2b89 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/fromJSON.js @@ -0,0 +1,54 @@ +'use strict' + +let Declaration = require('./declaration') +let PreviousMap = require('./previous-map') +let Comment = require('./comment') +let AtRule = require('./at-rule') +let Input = require('./input') +let Root = require('./root') +let Rule = require('./rule') + +function fromJSON(json, inputs) { + if (Array.isArray(json)) return json.map(n => fromJSON(n)) + + let { inputs: ownInputs, ...defaults } = json + if (ownInputs) { + inputs = [] + for (let input of ownInputs) { + let inputHydrated = { ...input, __proto__: Input.prototype } + if (inputHydrated.map) { + inputHydrated.map = { + ...inputHydrated.map, + __proto__: PreviousMap.prototype + } + } + inputs.push(inputHydrated) + } + } + if (defaults.nodes) { + defaults.nodes = json.nodes.map(n => fromJSON(n, inputs)) + } + if (defaults.source) { + let { inputId, ...source } = defaults.source + defaults.source = source + if (inputId != null) { + defaults.source.input = inputs[inputId] + } + } + if (defaults.type === 'root') { + return new Root(defaults) + } else if (defaults.type === 'decl') { + return new Declaration(defaults) + } else if (defaults.type === 'rule') { + return new Rule(defaults) + } else if (defaults.type === 'comment') { + return new Comment(defaults) + } else if (defaults.type === 'atrule') { + return new AtRule(defaults) + } else { + throw new Error('Unknown node type: ' + json.type) + } +} + +module.exports = fromJSON +fromJSON.default = fromJSON diff --git a/site/.next/standalone/node_modules/postcss/lib/input.js b/site/.next/standalone/node_modules/postcss/lib/input.js new file mode 100644 index 0000000..4b5ee5e --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/input.js @@ -0,0 +1,248 @@ +'use strict' + +let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js') +let { fileURLToPath, pathToFileURL } = require('url') +let { isAbsolute, resolve } = require('path') +let { nanoid } = require('nanoid/non-secure') + +let terminalHighlight = require('./terminal-highlight') +let CssSyntaxError = require('./css-syntax-error') +let PreviousMap = require('./previous-map') + +let fromOffsetCache = Symbol('fromOffsetCache') + +let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator) +let pathAvailable = Boolean(resolve && isAbsolute) + +class Input { + constructor(css, opts = {}) { + if ( + css === null || + typeof css === 'undefined' || + (typeof css === 'object' && !css.toString) + ) { + throw new Error(`PostCSS received ${css} instead of CSS string`) + } + + this.css = css.toString() + + if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') { + this.hasBOM = true + this.css = this.css.slice(1) + } else { + this.hasBOM = false + } + + if (opts.from) { + if ( + !pathAvailable || + /^\w+:\/\//.test(opts.from) || + isAbsolute(opts.from) + ) { + this.file = opts.from + } else { + this.file = resolve(opts.from) + } + } + + if (pathAvailable && sourceMapAvailable) { + let map = new PreviousMap(this.css, opts) + if (map.text) { + this.map = map + let file = map.consumer().file + if (!this.file && file) this.file = this.mapResolve(file) + } + } + + if (!this.file) { + this.id = '' + } + if (this.map) this.map.file = this.from + } + + error(message, line, column, opts = {}) { + let result, endLine, endColumn + + if (line && typeof line === 'object') { + let start = line + let end = column + if (typeof start.offset === 'number') { + let pos = this.fromOffset(start.offset) + line = pos.line + column = pos.col + } else { + line = start.line + column = start.column + } + if (typeof end.offset === 'number') { + let pos = this.fromOffset(end.offset) + endLine = pos.line + endColumn = pos.col + } else { + endLine = end.line + endColumn = end.column + } + } else if (!column) { + let pos = this.fromOffset(line) + line = pos.line + column = pos.col + } + + let origin = this.origin(line, column, endLine, endColumn) + if (origin) { + result = new CssSyntaxError( + message, + origin.endLine === undefined + ? origin.line + : { column: origin.column, line: origin.line }, + origin.endLine === undefined + ? origin.column + : { column: origin.endColumn, line: origin.endLine }, + origin.source, + origin.file, + opts.plugin + ) + } else { + result = new CssSyntaxError( + message, + endLine === undefined ? line : { column, line }, + endLine === undefined ? column : { column: endColumn, line: endLine }, + this.css, + this.file, + opts.plugin + ) + } + + result.input = { column, endColumn, endLine, line, source: this.css } + if (this.file) { + if (pathToFileURL) { + result.input.url = pathToFileURL(this.file).toString() + } + result.input.file = this.file + } + + return result + } + + fromOffset(offset) { + let lastLine, lineToIndex + if (!this[fromOffsetCache]) { + let lines = this.css.split('\n') + lineToIndex = new Array(lines.length) + let prevIndex = 0 + + for (let i = 0, l = lines.length; i < l; i++) { + lineToIndex[i] = prevIndex + prevIndex += lines[i].length + 1 + } + + this[fromOffsetCache] = lineToIndex + } else { + lineToIndex = this[fromOffsetCache] + } + lastLine = lineToIndex[lineToIndex.length - 1] + + let min = 0 + if (offset >= lastLine) { + min = lineToIndex.length - 1 + } else { + let max = lineToIndex.length - 2 + let mid + while (min < max) { + mid = min + ((max - min) >> 1) + if (offset < lineToIndex[mid]) { + max = mid - 1 + } else if (offset >= lineToIndex[mid + 1]) { + min = mid + 1 + } else { + min = mid + break + } + } + } + return { + col: offset - lineToIndex[min] + 1, + line: min + 1 + } + } + + mapResolve(file) { + if (/^\w+:\/\//.test(file)) { + return file + } + return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file) + } + + origin(line, column, endLine, endColumn) { + if (!this.map) return false + let consumer = this.map.consumer() + + let from = consumer.originalPositionFor({ column, line }) + if (!from.source) return false + + let to + if (typeof endLine === 'number') { + to = consumer.originalPositionFor({ column: endColumn, line: endLine }) + } + + let fromUrl + + if (isAbsolute(from.source)) { + fromUrl = pathToFileURL(from.source) + } else { + fromUrl = new URL( + from.source, + this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile) + ) + } + + let result = { + column: from.column, + endColumn: to && to.column, + endLine: to && to.line, + line: from.line, + url: fromUrl.toString() + } + + if (fromUrl.protocol === 'file:') { + if (fileURLToPath) { + result.file = fileURLToPath(fromUrl) + } else { + /* c8 ignore next 2 */ + throw new Error(`file: protocol is not available in this PostCSS build`) + } + } + + let source = consumer.sourceContentFor(from.source) + if (source) result.source = source + + return result + } + + toJSON() { + let json = {} + for (let name of ['hasBOM', 'css', 'file', 'id']) { + if (this[name] != null) { + json[name] = this[name] + } + } + if (this.map) { + json.map = { ...this.map } + if (json.map.consumerCache) { + json.map.consumerCache = undefined + } + } + return json + } + + get from() { + return this.file || this.id + } +} + +module.exports = Input +Input.default = Input + +if (terminalHighlight && terminalHighlight.registerInput) { + terminalHighlight.registerInput(Input) +} diff --git a/site/.next/standalone/node_modules/postcss/lib/lazy-result.js b/site/.next/standalone/node_modules/postcss/lib/lazy-result.js new file mode 100644 index 0000000..126f40c --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/lazy-result.js @@ -0,0 +1,550 @@ +'use strict' + +let { isClean, my } = require('./symbols') +let MapGenerator = require('./map-generator') +let stringify = require('./stringify') +let Container = require('./container') +let Document = require('./document') +let warnOnce = require('./warn-once') +let Result = require('./result') +let parse = require('./parse') +let Root = require('./root') + +const TYPE_TO_CLASS_NAME = { + atrule: 'AtRule', + comment: 'Comment', + decl: 'Declaration', + document: 'Document', + root: 'Root', + rule: 'Rule' +} + +const PLUGIN_PROPS = { + AtRule: true, + AtRuleExit: true, + Comment: true, + CommentExit: true, + Declaration: true, + DeclarationExit: true, + Document: true, + DocumentExit: true, + Once: true, + OnceExit: true, + postcssPlugin: true, + prepare: true, + Root: true, + RootExit: true, + Rule: true, + RuleExit: true +} + +const NOT_VISITORS = { + Once: true, + postcssPlugin: true, + prepare: true +} + +const CHILDREN = 0 + +function isPromise(obj) { + return typeof obj === 'object' && typeof obj.then === 'function' +} + +function getEvents(node) { + let key = false + let type = TYPE_TO_CLASS_NAME[node.type] + if (node.type === 'decl') { + key = node.prop.toLowerCase() + } else if (node.type === 'atrule') { + key = node.name.toLowerCase() + } + + if (key && node.append) { + return [ + type, + type + '-' + key, + CHILDREN, + type + 'Exit', + type + 'Exit-' + key + ] + } else if (key) { + return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key] + } else if (node.append) { + return [type, CHILDREN, type + 'Exit'] + } else { + return [type, type + 'Exit'] + } +} + +function toStack(node) { + let events + if (node.type === 'document') { + events = ['Document', CHILDREN, 'DocumentExit'] + } else if (node.type === 'root') { + events = ['Root', CHILDREN, 'RootExit'] + } else { + events = getEvents(node) + } + + return { + eventIndex: 0, + events, + iterator: 0, + node, + visitorIndex: 0, + visitors: [] + } +} + +function cleanMarks(node) { + node[isClean] = false + if (node.nodes) node.nodes.forEach(i => cleanMarks(i)) + return node +} + +let postcss = {} + +class LazyResult { + constructor(processor, css, opts) { + this.stringified = false + this.processed = false + + let root + if ( + typeof css === 'object' && + css !== null && + (css.type === 'root' || css.type === 'document') + ) { + root = cleanMarks(css) + } else if (css instanceof LazyResult || css instanceof Result) { + root = cleanMarks(css.root) + if (css.map) { + if (typeof opts.map === 'undefined') opts.map = {} + if (!opts.map.inline) opts.map.inline = false + opts.map.prev = css.map + } + } else { + let parser = parse + if (opts.syntax) parser = opts.syntax.parse + if (opts.parser) parser = opts.parser + if (parser.parse) parser = parser.parse + + try { + root = parser(css, opts) + } catch (error) { + this.processed = true + this.error = error + } + + if (root && !root[my]) { + /* c8 ignore next 2 */ + Container.rebuild(root) + } + } + + this.result = new Result(processor, root, opts) + this.helpers = { ...postcss, postcss, result: this.result } + this.plugins = this.processor.plugins.map(plugin => { + if (typeof plugin === 'object' && plugin.prepare) { + return { ...plugin, ...plugin.prepare(this.result) } + } else { + return plugin + } + }) + } + + async() { + if (this.error) return Promise.reject(this.error) + if (this.processed) return Promise.resolve(this.result) + if (!this.processing) { + this.processing = this.runAsync() + } + return this.processing + } + + catch(onRejected) { + return this.async().catch(onRejected) + } + + finally(onFinally) { + return this.async().then(onFinally, onFinally) + } + + getAsyncError() { + throw new Error('Use process(css).then(cb) to work with async plugins') + } + + handleError(error, node) { + let plugin = this.result.lastPlugin + try { + if (node) node.addToError(error) + this.error = error + if (error.name === 'CssSyntaxError' && !error.plugin) { + error.plugin = plugin.postcssPlugin + error.setMessage() + } else if (plugin.postcssVersion) { + if (process.env.NODE_ENV !== 'production') { + let pluginName = plugin.postcssPlugin + let pluginVer = plugin.postcssVersion + let runtimeVer = this.result.processor.version + let a = pluginVer.split('.') + let b = runtimeVer.split('.') + + if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) { + // eslint-disable-next-line no-console + console.error( + 'Unknown error from PostCSS plugin. Your current PostCSS ' + + 'version is ' + + runtimeVer + + ', but ' + + pluginName + + ' uses ' + + pluginVer + + '. Perhaps this is the source of the error below.' + ) + } + } + } + } catch (err) { + /* c8 ignore next 3 */ + // eslint-disable-next-line no-console + if (console && console.error) console.error(err) + } + return error + } + + prepareVisitors() { + this.listeners = {} + let add = (plugin, type, cb) => { + if (!this.listeners[type]) this.listeners[type] = [] + this.listeners[type].push([plugin, cb]) + } + for (let plugin of this.plugins) { + if (typeof plugin === 'object') { + for (let event in plugin) { + if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) { + throw new Error( + `Unknown event ${event} in ${plugin.postcssPlugin}. ` + + `Try to update PostCSS (${this.processor.version} now).` + ) + } + if (!NOT_VISITORS[event]) { + if (typeof plugin[event] === 'object') { + for (let filter in plugin[event]) { + if (filter === '*') { + add(plugin, event, plugin[event][filter]) + } else { + add( + plugin, + event + '-' + filter.toLowerCase(), + plugin[event][filter] + ) + } + } + } else if (typeof plugin[event] === 'function') { + add(plugin, event, plugin[event]) + } + } + } + } + } + this.hasListener = Object.keys(this.listeners).length > 0 + } + + async runAsync() { + this.plugin = 0 + for (let i = 0; i < this.plugins.length; i++) { + let plugin = this.plugins[i] + let promise = this.runOnRoot(plugin) + if (isPromise(promise)) { + try { + await promise + } catch (error) { + throw this.handleError(error) + } + } + } + + this.prepareVisitors() + if (this.hasListener) { + let root = this.result.root + while (!root[isClean]) { + root[isClean] = true + let stack = [toStack(root)] + while (stack.length > 0) { + let promise = this.visitTick(stack) + if (isPromise(promise)) { + try { + await promise + } catch (e) { + let node = stack[stack.length - 1].node + throw this.handleError(e, node) + } + } + } + } + + if (this.listeners.OnceExit) { + for (let [plugin, visitor] of this.listeners.OnceExit) { + this.result.lastPlugin = plugin + try { + if (root.type === 'document') { + let roots = root.nodes.map(subRoot => + visitor(subRoot, this.helpers) + ) + + await Promise.all(roots) + } else { + await visitor(root, this.helpers) + } + } catch (e) { + throw this.handleError(e) + } + } + } + } + + this.processed = true + return this.stringify() + } + + runOnRoot(plugin) { + this.result.lastPlugin = plugin + try { + if (typeof plugin === 'object' && plugin.Once) { + if (this.result.root.type === 'document') { + let roots = this.result.root.nodes.map(root => + plugin.Once(root, this.helpers) + ) + + if (isPromise(roots[0])) { + return Promise.all(roots) + } + + return roots + } + + return plugin.Once(this.result.root, this.helpers) + } else if (typeof plugin === 'function') { + return plugin(this.result.root, this.result) + } + } catch (error) { + throw this.handleError(error) + } + } + + stringify() { + if (this.error) throw this.error + if (this.stringified) return this.result + this.stringified = true + + this.sync() + + let opts = this.result.opts + let str = stringify + if (opts.syntax) str = opts.syntax.stringify + if (opts.stringifier) str = opts.stringifier + if (str.stringify) str = str.stringify + + let map = new MapGenerator(str, this.result.root, this.result.opts) + let data = map.generate() + this.result.css = data[0] + this.result.map = data[1] + + return this.result + } + + sync() { + if (this.error) throw this.error + if (this.processed) return this.result + this.processed = true + + if (this.processing) { + throw this.getAsyncError() + } + + for (let plugin of this.plugins) { + let promise = this.runOnRoot(plugin) + if (isPromise(promise)) { + throw this.getAsyncError() + } + } + + this.prepareVisitors() + if (this.hasListener) { + let root = this.result.root + while (!root[isClean]) { + root[isClean] = true + this.walkSync(root) + } + if (this.listeners.OnceExit) { + if (root.type === 'document') { + for (let subRoot of root.nodes) { + this.visitSync(this.listeners.OnceExit, subRoot) + } + } else { + this.visitSync(this.listeners.OnceExit, root) + } + } + } + + return this.result + } + + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== 'production') { + if (!('from' in this.opts)) { + warnOnce( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ) + } + } + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this.css + } + + visitSync(visitors, node) { + for (let [plugin, visitor] of visitors) { + this.result.lastPlugin = plugin + let promise + try { + promise = visitor(node, this.helpers) + } catch (e) { + throw this.handleError(e, node.proxyOf) + } + if (node.type !== 'root' && node.type !== 'document' && !node.parent) { + return true + } + if (isPromise(promise)) { + throw this.getAsyncError() + } + } + } + + visitTick(stack) { + let visit = stack[stack.length - 1] + let { node, visitors } = visit + + if (node.type !== 'root' && node.type !== 'document' && !node.parent) { + stack.pop() + return + } + + if (visitors.length > 0 && visit.visitorIndex < visitors.length) { + let [plugin, visitor] = visitors[visit.visitorIndex] + visit.visitorIndex += 1 + if (visit.visitorIndex === visitors.length) { + visit.visitors = [] + visit.visitorIndex = 0 + } + this.result.lastPlugin = plugin + try { + return visitor(node.toProxy(), this.helpers) + } catch (e) { + throw this.handleError(e, node) + } + } + + if (visit.iterator !== 0) { + let iterator = visit.iterator + let child + while ((child = node.nodes[node.indexes[iterator]])) { + node.indexes[iterator] += 1 + if (!child[isClean]) { + child[isClean] = true + stack.push(toStack(child)) + return + } + } + visit.iterator = 0 + delete node.indexes[iterator] + } + + let events = visit.events + while (visit.eventIndex < events.length) { + let event = events[visit.eventIndex] + visit.eventIndex += 1 + if (event === CHILDREN) { + if (node.nodes && node.nodes.length) { + node[isClean] = true + visit.iterator = node.getIterator() + } + return + } else if (this.listeners[event]) { + visit.visitors = this.listeners[event] + return + } + } + stack.pop() + } + + walkSync(node) { + node[isClean] = true + let events = getEvents(node) + for (let event of events) { + if (event === CHILDREN) { + if (node.nodes) { + node.each(child => { + if (!child[isClean]) this.walkSync(child) + }) + } + } else { + let visitors = this.listeners[event] + if (visitors) { + if (this.visitSync(visitors, node.toProxy())) return + } + } + } + } + + warnings() { + return this.sync().warnings() + } + + get content() { + return this.stringify().content + } + + get css() { + return this.stringify().css + } + + get map() { + return this.stringify().map + } + + get messages() { + return this.sync().messages + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + + get root() { + return this.sync().root + } + + get [Symbol.toStringTag]() { + return 'LazyResult' + } +} + +LazyResult.registerPostcss = dependant => { + postcss = dependant +} + +module.exports = LazyResult +LazyResult.default = LazyResult + +Root.registerLazyResult(LazyResult) +Document.registerLazyResult(LazyResult) diff --git a/site/.next/standalone/node_modules/postcss/lib/list.js b/site/.next/standalone/node_modules/postcss/lib/list.js new file mode 100644 index 0000000..1b31f98 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/list.js @@ -0,0 +1,58 @@ +'use strict' + +let list = { + comma(string) { + return list.split(string, [','], true) + }, + + space(string) { + let spaces = [' ', '\n', '\t'] + return list.split(string, spaces) + }, + + split(string, separators, last) { + let array = [] + let current = '' + let split = false + + let func = 0 + let inQuote = false + let prevQuote = '' + let escape = false + + for (let letter of string) { + if (escape) { + escape = false + } else if (letter === '\\') { + escape = true + } else if (inQuote) { + if (letter === prevQuote) { + inQuote = false + } + } else if (letter === '"' || letter === "'") { + inQuote = true + prevQuote = letter + } else if (letter === '(') { + func += 1 + } else if (letter === ')') { + if (func > 0) func -= 1 + } else if (func === 0) { + if (separators.includes(letter)) split = true + } + + if (split) { + if (current !== '') array.push(current.trim()) + current = '' + split = false + } else { + current += letter + } + } + + if (last || current !== '') array.push(current.trim()) + return array + } +} + +module.exports = list +list.default = list diff --git a/site/.next/standalone/node_modules/postcss/lib/map-generator.js b/site/.next/standalone/node_modules/postcss/lib/map-generator.js new file mode 100644 index 0000000..523b463 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/map-generator.js @@ -0,0 +1,359 @@ +'use strict' + +let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js') +let { dirname, relative, resolve, sep } = require('path') +let { pathToFileURL } = require('url') + +let Input = require('./input') + +let sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator) +let pathAvailable = Boolean(dirname && resolve && relative && sep) + +class MapGenerator { + constructor(stringify, root, opts, cssString) { + this.stringify = stringify + this.mapOpts = opts.map || {} + this.root = root + this.opts = opts + this.css = cssString + this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute + + this.memoizedFileURLs = new Map() + this.memoizedPaths = new Map() + this.memoizedURLs = new Map() + } + + addAnnotation() { + let content + + if (this.isInline()) { + content = + 'data:application/json;base64,' + this.toBase64(this.map.toString()) + } else if (typeof this.mapOpts.annotation === 'string') { + content = this.mapOpts.annotation + } else if (typeof this.mapOpts.annotation === 'function') { + content = this.mapOpts.annotation(this.opts.to, this.root) + } else { + content = this.outputFile() + '.map' + } + let eol = '\n' + if (this.css.includes('\r\n')) eol = '\r\n' + + this.css += eol + '/*# sourceMappingURL=' + content + ' */' + } + + applyPrevMaps() { + for (let prev of this.previous()) { + let from = this.toUrl(this.path(prev.file)) + let root = prev.root || dirname(prev.file) + let map + + if (this.mapOpts.sourcesContent === false) { + map = new SourceMapConsumer(prev.text) + if (map.sourcesContent) { + map.sourcesContent = map.sourcesContent.map(() => null) + } + } else { + map = prev.consumer() + } + + this.map.applySourceMap(map, from, this.toUrl(this.path(root))) + } + } + + clearAnnotation() { + if (this.mapOpts.annotation === false) return + + if (this.root) { + let node + for (let i = this.root.nodes.length - 1; i >= 0; i--) { + node = this.root.nodes[i] + if (node.type !== 'comment') continue + if (node.text.indexOf('# sourceMappingURL=') === 0) { + this.root.removeChild(i) + } + } + } else if (this.css) { + this.css = this.css.replace(/(\n)?\/\*#[\S\s]*?\*\/$/gm, '') + } + } + + generate() { + this.clearAnnotation() + if (pathAvailable && sourceMapAvailable && this.isMap()) { + return this.generateMap() + } else { + let result = '' + this.stringify(this.root, i => { + result += i + }) + return [result] + } + } + + generateMap() { + if (this.root) { + this.generateString() + } else if (this.previous().length === 1) { + let prev = this.previous()[0].consumer() + prev.file = this.outputFile() + this.map = SourceMapGenerator.fromSourceMap(prev) + } else { + this.map = new SourceMapGenerator({ file: this.outputFile() }) + this.map.addMapping({ + generated: { column: 0, line: 1 }, + original: { column: 0, line: 1 }, + source: this.opts.from + ? this.toUrl(this.path(this.opts.from)) + : '' + }) + } + + if (this.isSourcesContent()) this.setSourcesContent() + if (this.root && this.previous().length > 0) this.applyPrevMaps() + if (this.isAnnotation()) this.addAnnotation() + + if (this.isInline()) { + return [this.css] + } else { + return [this.css, this.map] + } + } + + generateString() { + this.css = '' + this.map = new SourceMapGenerator({ file: this.outputFile() }) + + let line = 1 + let column = 1 + + let noSource = '' + let mapping = { + generated: { column: 0, line: 0 }, + original: { column: 0, line: 0 }, + source: '' + } + + let lines, last + this.stringify(this.root, (str, node, type) => { + this.css += str + + if (node && type !== 'end') { + mapping.generated.line = line + mapping.generated.column = column - 1 + if (node.source && node.source.start) { + mapping.source = this.sourcePath(node) + mapping.original.line = node.source.start.line + mapping.original.column = node.source.start.column - 1 + this.map.addMapping(mapping) + } else { + mapping.source = noSource + mapping.original.line = 1 + mapping.original.column = 0 + this.map.addMapping(mapping) + } + } + + lines = str.match(/\n/g) + if (lines) { + line += lines.length + last = str.lastIndexOf('\n') + column = str.length - last + } else { + column += str.length + } + + if (node && type !== 'start') { + let p = node.parent || { raws: {} } + let childless = + node.type === 'decl' || (node.type === 'atrule' && !node.nodes) + if (!childless || node !== p.last || p.raws.semicolon) { + if (node.source && node.source.end) { + mapping.source = this.sourcePath(node) + mapping.original.line = node.source.end.line + mapping.original.column = node.source.end.column - 1 + mapping.generated.line = line + mapping.generated.column = column - 2 + this.map.addMapping(mapping) + } else { + mapping.source = noSource + mapping.original.line = 1 + mapping.original.column = 0 + mapping.generated.line = line + mapping.generated.column = column - 1 + this.map.addMapping(mapping) + } + } + } + }) + } + + isAnnotation() { + if (this.isInline()) { + return true + } + if (typeof this.mapOpts.annotation !== 'undefined') { + return this.mapOpts.annotation + } + if (this.previous().length) { + return this.previous().some(i => i.annotation) + } + return true + } + + isInline() { + if (typeof this.mapOpts.inline !== 'undefined') { + return this.mapOpts.inline + } + + let annotation = this.mapOpts.annotation + if (typeof annotation !== 'undefined' && annotation !== true) { + return false + } + + if (this.previous().length) { + return this.previous().some(i => i.inline) + } + return true + } + + isMap() { + if (typeof this.opts.map !== 'undefined') { + return !!this.opts.map + } + return this.previous().length > 0 + } + + isSourcesContent() { + if (typeof this.mapOpts.sourcesContent !== 'undefined') { + return this.mapOpts.sourcesContent + } + if (this.previous().length) { + return this.previous().some(i => i.withContent()) + } + return true + } + + outputFile() { + if (this.opts.to) { + return this.path(this.opts.to) + } else if (this.opts.from) { + return this.path(this.opts.from) + } else { + return 'to.css' + } + } + + path(file) { + if (this.mapOpts.absolute) return file + if (file.charCodeAt(0) === 60 /* `<` */) return file + if (/^\w+:\/\//.test(file)) return file + let cached = this.memoizedPaths.get(file) + if (cached) return cached + + let from = this.opts.to ? dirname(this.opts.to) : '.' + + if (typeof this.mapOpts.annotation === 'string') { + from = dirname(resolve(from, this.mapOpts.annotation)) + } + + let path = relative(from, file) + this.memoizedPaths.set(file, path) + + return path + } + + previous() { + if (!this.previousMaps) { + this.previousMaps = [] + if (this.root) { + this.root.walk(node => { + if (node.source && node.source.input.map) { + let map = node.source.input.map + if (!this.previousMaps.includes(map)) { + this.previousMaps.push(map) + } + } + }) + } else { + let input = new Input(this.css, this.opts) + if (input.map) this.previousMaps.push(input.map) + } + } + + return this.previousMaps + } + + setSourcesContent() { + let already = {} + if (this.root) { + this.root.walk(node => { + if (node.source) { + let from = node.source.input.from + if (from && !already[from]) { + already[from] = true + let fromUrl = this.usesFileUrls + ? this.toFileUrl(from) + : this.toUrl(this.path(from)) + this.map.setSourceContent(fromUrl, node.source.input.css) + } + } + }) + } else if (this.css) { + let from = this.opts.from + ? this.toUrl(this.path(this.opts.from)) + : '' + this.map.setSourceContent(from, this.css) + } + } + + sourcePath(node) { + if (this.mapOpts.from) { + return this.toUrl(this.mapOpts.from) + } else if (this.usesFileUrls) { + return this.toFileUrl(node.source.input.from) + } else { + return this.toUrl(this.path(node.source.input.from)) + } + } + + toBase64(str) { + if (Buffer) { + return Buffer.from(str).toString('base64') + } else { + return window.btoa(unescape(encodeURIComponent(str))) + } + } + + toFileUrl(path) { + let cached = this.memoizedFileURLs.get(path) + if (cached) return cached + + if (pathToFileURL) { + let fileURL = pathToFileURL(path).toString() + this.memoizedFileURLs.set(path, fileURL) + + return fileURL + } else { + throw new Error( + '`map.absolute` option is not available in this PostCSS build' + ) + } + } + + toUrl(path) { + let cached = this.memoizedURLs.get(path) + if (cached) return cached + + if (sep === '\\') { + path = path.replace(/\\/g, '/') + } + + let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent) + this.memoizedURLs.set(path, url) + + return url + } +} + +module.exports = MapGenerator diff --git a/site/.next/standalone/node_modules/postcss/lib/no-work-result.js b/site/.next/standalone/node_modules/postcss/lib/no-work-result.js new file mode 100644 index 0000000..a0609f7 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/no-work-result.js @@ -0,0 +1,135 @@ +'use strict' + +let MapGenerator = require('./map-generator') +let stringify = require('./stringify') +let warnOnce = require('./warn-once') +let parse = require('./parse') +const Result = require('./result') + +class NoWorkResult { + constructor(processor, css, opts) { + css = css.toString() + this.stringified = false + + this._processor = processor + this._css = css + this._opts = opts + this._map = undefined + let root + + let str = stringify + this.result = new Result(this._processor, root, this._opts) + this.result.css = css + + let self = this + Object.defineProperty(this.result, 'root', { + get() { + return self.root + } + }) + + let map = new MapGenerator(str, root, this._opts, css) + if (map.isMap()) { + let [generatedCSS, generatedMap] = map.generate() + if (generatedCSS) { + this.result.css = generatedCSS + } + if (generatedMap) { + this.result.map = generatedMap + } + } + } + + async() { + if (this.error) return Promise.reject(this.error) + return Promise.resolve(this.result) + } + + catch(onRejected) { + return this.async().catch(onRejected) + } + + finally(onFinally) { + return this.async().then(onFinally, onFinally) + } + + sync() { + if (this.error) throw this.error + return this.result + } + + then(onFulfilled, onRejected) { + if (process.env.NODE_ENV !== 'production') { + if (!('from' in this._opts)) { + warnOnce( + 'Without `from` option PostCSS could generate wrong source map ' + + 'and will not find Browserslist config. Set it to CSS file path ' + + 'or to `undefined` to prevent this warning.' + ) + } + } + + return this.async().then(onFulfilled, onRejected) + } + + toString() { + return this._css + } + + warnings() { + return [] + } + + get content() { + return this.result.css + } + + get css() { + return this.result.css + } + + get map() { + return this.result.map + } + + get messages() { + return [] + } + + get opts() { + return this.result.opts + } + + get processor() { + return this.result.processor + } + + get root() { + if (this._root) { + return this._root + } + + let root + let parser = parse + + try { + root = parser(this._css, this._opts) + } catch (error) { + this.error = error + } + + if (this.error) { + throw this.error + } else { + this._root = root + return root + } + } + + get [Symbol.toStringTag]() { + return 'NoWorkResult' + } +} + +module.exports = NoWorkResult +NoWorkResult.default = NoWorkResult diff --git a/site/.next/standalone/node_modules/postcss/lib/node.js b/site/.next/standalone/node_modules/postcss/lib/node.js new file mode 100644 index 0000000..d79dd56 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/node.js @@ -0,0 +1,381 @@ +'use strict' + +let { isClean, my } = require('./symbols') +let CssSyntaxError = require('./css-syntax-error') +let Stringifier = require('./stringifier') +let stringify = require('./stringify') + +function cloneNode(obj, parent) { + let cloned = new obj.constructor() + + for (let i in obj) { + if (!Object.prototype.hasOwnProperty.call(obj, i)) { + /* c8 ignore next 2 */ + continue + } + if (i === 'proxyCache') continue + let value = obj[i] + let type = typeof value + + if (i === 'parent' && type === 'object') { + if (parent) cloned[i] = parent + } else if (i === 'source') { + cloned[i] = value + } else if (Array.isArray(value)) { + cloned[i] = value.map(j => cloneNode(j, cloned)) + } else { + if (type === 'object' && value !== null) value = cloneNode(value) + cloned[i] = value + } + } + + return cloned +} + +class Node { + constructor(defaults = {}) { + this.raws = {} + this[isClean] = false + this[my] = true + + for (let name in defaults) { + if (name === 'nodes') { + this.nodes = [] + for (let node of defaults[name]) { + if (typeof node.clone === 'function') { + this.append(node.clone()) + } else { + this.append(node) + } + } + } else { + this[name] = defaults[name] + } + } + } + + addToError(error) { + error.postcssNode = this + if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) { + let s = this.source + error.stack = error.stack.replace( + /\n\s{4}at /, + `$&${s.input.from}:${s.start.line}:${s.start.column}$&` + ) + } + return error + } + + after(add) { + this.parent.insertAfter(this, add) + return this + } + + assign(overrides = {}) { + for (let name in overrides) { + this[name] = overrides[name] + } + return this + } + + before(add) { + this.parent.insertBefore(this, add) + return this + } + + cleanRaws(keepBetween) { + delete this.raws.before + delete this.raws.after + if (!keepBetween) delete this.raws.between + } + + clone(overrides = {}) { + let cloned = cloneNode(this) + for (let name in overrides) { + cloned[name] = overrides[name] + } + return cloned + } + + cloneAfter(overrides = {}) { + let cloned = this.clone(overrides) + this.parent.insertAfter(this, cloned) + return cloned + } + + cloneBefore(overrides = {}) { + let cloned = this.clone(overrides) + this.parent.insertBefore(this, cloned) + return cloned + } + + error(message, opts = {}) { + if (this.source) { + let { end, start } = this.rangeBy(opts) + return this.source.input.error( + message, + { column: start.column, line: start.line }, + { column: end.column, line: end.line }, + opts + ) + } + return new CssSyntaxError(message) + } + + getProxyProcessor() { + return { + get(node, prop) { + if (prop === 'proxyOf') { + return node + } else if (prop === 'root') { + return () => node.root().toProxy() + } else { + return node[prop] + } + }, + + set(node, prop, value) { + if (node[prop] === value) return true + node[prop] = value + if ( + prop === 'prop' || + prop === 'value' || + prop === 'name' || + prop === 'params' || + prop === 'important' || + /* c8 ignore next */ + prop === 'text' + ) { + node.markDirty() + } + return true + } + } + } + + markDirty() { + if (this[isClean]) { + this[isClean] = false + let next = this + while ((next = next.parent)) { + next[isClean] = false + } + } + } + + next() { + if (!this.parent) return undefined + let index = this.parent.index(this) + return this.parent.nodes[index + 1] + } + + positionBy(opts, stringRepresentation) { + let pos = this.source.start + if (opts.index) { + pos = this.positionInside(opts.index, stringRepresentation) + } else if (opts.word) { + stringRepresentation = this.toString() + let index = stringRepresentation.indexOf(opts.word) + if (index !== -1) pos = this.positionInside(index, stringRepresentation) + } + return pos + } + + positionInside(index, stringRepresentation) { + let string = stringRepresentation || this.toString() + let column = this.source.start.column + let line = this.source.start.line + + for (let i = 0; i < index; i++) { + if (string[i] === '\n') { + column = 1 + line += 1 + } else { + column += 1 + } + } + + return { column, line } + } + + prev() { + if (!this.parent) return undefined + let index = this.parent.index(this) + return this.parent.nodes[index - 1] + } + + rangeBy(opts) { + let start = { + column: this.source.start.column, + line: this.source.start.line + } + let end = this.source.end + ? { + column: this.source.end.column + 1, + line: this.source.end.line + } + : { + column: start.column + 1, + line: start.line + } + + if (opts.word) { + let stringRepresentation = this.toString() + let index = stringRepresentation.indexOf(opts.word) + if (index !== -1) { + start = this.positionInside(index, stringRepresentation) + end = this.positionInside(index + opts.word.length, stringRepresentation) + } + } else { + if (opts.start) { + start = { + column: opts.start.column, + line: opts.start.line + } + } else if (opts.index) { + start = this.positionInside(opts.index) + } + + if (opts.end) { + end = { + column: opts.end.column, + line: opts.end.line + } + } else if (opts.endIndex) { + end = this.positionInside(opts.endIndex) + } else if (opts.index) { + end = this.positionInside(opts.index + 1) + } + } + + if ( + end.line < start.line || + (end.line === start.line && end.column <= start.column) + ) { + end = { column: start.column + 1, line: start.line } + } + + return { end, start } + } + + raw(prop, defaultType) { + let str = new Stringifier() + return str.raw(this, prop, defaultType) + } + + remove() { + if (this.parent) { + this.parent.removeChild(this) + } + this.parent = undefined + return this + } + + replaceWith(...nodes) { + if (this.parent) { + let bookmark = this + let foundSelf = false + for (let node of nodes) { + if (node === this) { + foundSelf = true + } else if (foundSelf) { + this.parent.insertAfter(bookmark, node) + bookmark = node + } else { + this.parent.insertBefore(bookmark, node) + } + } + + if (!foundSelf) { + this.remove() + } + } + + return this + } + + root() { + let result = this + while (result.parent && result.parent.type !== 'document') { + result = result.parent + } + return result + } + + toJSON(_, inputs) { + let fixed = {} + let emitInputs = inputs == null + inputs = inputs || new Map() + let inputsNextIndex = 0 + + for (let name in this) { + if (!Object.prototype.hasOwnProperty.call(this, name)) { + /* c8 ignore next 2 */ + continue + } + if (name === 'parent' || name === 'proxyCache') continue + let value = this[name] + + if (Array.isArray(value)) { + fixed[name] = value.map(i => { + if (typeof i === 'object' && i.toJSON) { + return i.toJSON(null, inputs) + } else { + return i + } + }) + } else if (typeof value === 'object' && value.toJSON) { + fixed[name] = value.toJSON(null, inputs) + } else if (name === 'source') { + let inputId = inputs.get(value.input) + if (inputId == null) { + inputId = inputsNextIndex + inputs.set(value.input, inputsNextIndex) + inputsNextIndex++ + } + fixed[name] = { + end: value.end, + inputId, + start: value.start + } + } else { + fixed[name] = value + } + } + + if (emitInputs) { + fixed.inputs = [...inputs.keys()].map(input => input.toJSON()) + } + + return fixed + } + + toProxy() { + if (!this.proxyCache) { + this.proxyCache = new Proxy(this, this.getProxyProcessor()) + } + return this.proxyCache + } + + toString(stringifier = stringify) { + if (stringifier.stringify) stringifier = stringifier.stringify + let result = '' + stringifier(this, i => { + result += i + }) + return result + } + + warn(result, text, opts) { + let data = { node: this } + for (let i in opts) data[i] = opts[i] + return result.warn(text, data) + } + + get proxyOf() { + return this + } +} + +module.exports = Node +Node.default = Node diff --git a/site/.next/standalone/node_modules/postcss/lib/parse.js b/site/.next/standalone/node_modules/postcss/lib/parse.js new file mode 100644 index 0000000..971431f --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/parse.js @@ -0,0 +1,42 @@ +'use strict' + +let Container = require('./container') +let Parser = require('./parser') +let Input = require('./input') + +function parse(css, opts) { + let input = new Input(css, opts) + let parser = new Parser(input) + try { + parser.parse() + } catch (e) { + if (process.env.NODE_ENV !== 'production') { + if (e.name === 'CssSyntaxError' && opts && opts.from) { + if (/\.scss$/i.test(opts.from)) { + e.message += + '\nYou tried to parse SCSS with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-scss parser' + } else if (/\.sass/i.test(opts.from)) { + e.message += + '\nYou tried to parse Sass with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-sass parser' + } else if (/\.less$/i.test(opts.from)) { + e.message += + '\nYou tried to parse Less with ' + + 'the standard CSS parser; ' + + 'try again with the postcss-less parser' + } + } + } + throw e + } + + return parser.root +} + +module.exports = parse +parse.default = parse + +Container.registerParse(parse) diff --git a/site/.next/standalone/node_modules/postcss/lib/parser.js b/site/.next/standalone/node_modules/postcss/lib/parser.js new file mode 100644 index 0000000..e1e2e19 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/parser.js @@ -0,0 +1,610 @@ +'use strict' + +let Declaration = require('./declaration') +let tokenizer = require('./tokenize') +let Comment = require('./comment') +let AtRule = require('./at-rule') +let Root = require('./root') +let Rule = require('./rule') + +const SAFE_COMMENT_NEIGHBOR = { + empty: true, + space: true +} + +function findLastWithPosition(tokens) { + for (let i = tokens.length - 1; i >= 0; i--) { + let token = tokens[i] + let pos = token[3] || token[2] + if (pos) return pos + } +} + +class Parser { + constructor(input) { + this.input = input + + this.root = new Root() + this.current = this.root + this.spaces = '' + this.semicolon = false + this.customProperty = false + + this.createTokenizer() + this.root.source = { input, start: { column: 1, line: 1, offset: 0 } } + } + + atrule(token) { + let node = new AtRule() + node.name = token[1].slice(1) + if (node.name === '') { + this.unnamedAtrule(node, token) + } + this.init(node, token[2]) + + let type + let prev + let shift + let last = false + let open = false + let params = [] + let brackets = [] + + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken() + type = token[0] + + if (type === '(' || type === '[') { + brackets.push(type === '(' ? ')' : ']') + } else if (type === '{' && brackets.length > 0) { + brackets.push('}') + } else if (type === brackets[brackets.length - 1]) { + brackets.pop() + } + + if (brackets.length === 0) { + if (type === ';') { + node.source.end = this.getPosition(token[2]) + node.source.end.offset++ + this.semicolon = true + break + } else if (type === '{') { + open = true + break + } else if (type === '}') { + if (params.length > 0) { + shift = params.length - 1 + prev = params[shift] + while (prev && prev[0] === 'space') { + prev = params[--shift] + } + if (prev) { + node.source.end = this.getPosition(prev[3] || prev[2]) + node.source.end.offset++ + } + } + this.end(token) + break + } else { + params.push(token) + } + } else { + params.push(token) + } + + if (this.tokenizer.endOfFile()) { + last = true + break + } + } + + node.raws.between = this.spacesAndCommentsFromEnd(params) + if (params.length) { + node.raws.afterName = this.spacesAndCommentsFromStart(params) + this.raw(node, 'params', params) + if (last) { + token = params[params.length - 1] + node.source.end = this.getPosition(token[3] || token[2]) + node.source.end.offset++ + this.spaces = node.raws.between + node.raws.between = '' + } + } else { + node.raws.afterName = '' + node.params = '' + } + + if (open) { + node.nodes = [] + this.current = node + } + } + + checkMissedSemicolon(tokens) { + let colon = this.colon(tokens) + if (colon === false) return + + let founded = 0 + let token + for (let j = colon - 1; j >= 0; j--) { + token = tokens[j] + if (token[0] !== 'space') { + founded += 1 + if (founded === 2) break + } + } + // If the token is a word, e.g. `!important`, `red` or any other valid property's value. + // Then we need to return the colon after that word token. [3] is the "end" colon of that word. + // And because we need it after that one we do +1 to get the next one. + throw this.input.error( + 'Missed semicolon', + token[0] === 'word' ? token[3] + 1 : token[2] + ) + } + + colon(tokens) { + let brackets = 0 + let token, type, prev + for (let [i, element] of tokens.entries()) { + token = element + type = token[0] + + if (type === '(') { + brackets += 1 + } + if (type === ')') { + brackets -= 1 + } + if (brackets === 0 && type === ':') { + if (!prev) { + this.doubleColon(token) + } else if (prev[0] === 'word' && prev[1] === 'progid') { + continue + } else { + return i + } + } + + prev = token + } + return false + } + + comment(token) { + let node = new Comment() + this.init(node, token[2]) + node.source.end = this.getPosition(token[3] || token[2]) + node.source.end.offset++ + + let text = token[1].slice(2, -2) + if (/^\s*$/.test(text)) { + node.text = '' + node.raws.left = text + node.raws.right = '' + } else { + let match = text.match(/^(\s*)([^]*\S)(\s*)$/) + node.text = match[2] + node.raws.left = match[1] + node.raws.right = match[3] + } + } + + createTokenizer() { + this.tokenizer = tokenizer(this.input) + } + + decl(tokens, customProperty) { + let node = new Declaration() + this.init(node, tokens[0][2]) + + let last = tokens[tokens.length - 1] + if (last[0] === ';') { + this.semicolon = true + tokens.pop() + } + + node.source.end = this.getPosition( + last[3] || last[2] || findLastWithPosition(tokens) + ) + node.source.end.offset++ + + while (tokens[0][0] !== 'word') { + if (tokens.length === 1) this.unknownWord(tokens) + node.raws.before += tokens.shift()[1] + } + node.source.start = this.getPosition(tokens[0][2]) + + node.prop = '' + while (tokens.length) { + let type = tokens[0][0] + if (type === ':' || type === 'space' || type === 'comment') { + break + } + node.prop += tokens.shift()[1] + } + + node.raws.between = '' + + let token + while (tokens.length) { + token = tokens.shift() + + if (token[0] === ':') { + node.raws.between += token[1] + break + } else { + if (token[0] === 'word' && /\w/.test(token[1])) { + this.unknownWord([token]) + } + node.raws.between += token[1] + } + } + + if (node.prop[0] === '_' || node.prop[0] === '*') { + node.raws.before += node.prop[0] + node.prop = node.prop.slice(1) + } + + let firstSpaces = [] + let next + while (tokens.length) { + next = tokens[0][0] + if (next !== 'space' && next !== 'comment') break + firstSpaces.push(tokens.shift()) + } + + this.precheckMissedSemicolon(tokens) + + for (let i = tokens.length - 1; i >= 0; i--) { + token = tokens[i] + if (token[1].toLowerCase() === '!important') { + node.important = true + let string = this.stringFrom(tokens, i) + string = this.spacesFromEnd(tokens) + string + if (string !== ' !important') node.raws.important = string + break + } else if (token[1].toLowerCase() === 'important') { + let cache = tokens.slice(0) + let str = '' + for (let j = i; j > 0; j--) { + let type = cache[j][0] + if (str.trim().indexOf('!') === 0 && type !== 'space') { + break + } + str = cache.pop()[1] + str + } + if (str.trim().indexOf('!') === 0) { + node.important = true + node.raws.important = str + tokens = cache + } + } + + if (token[0] !== 'space' && token[0] !== 'comment') { + break + } + } + + let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment') + + if (hasWord) { + node.raws.between += firstSpaces.map(i => i[1]).join('') + firstSpaces = [] + } + this.raw(node, 'value', firstSpaces.concat(tokens), customProperty) + + if (node.value.includes(':') && !customProperty) { + this.checkMissedSemicolon(tokens) + } + } + + doubleColon(token) { + throw this.input.error( + 'Double colon', + { offset: token[2] }, + { offset: token[2] + token[1].length } + ) + } + + emptyRule(token) { + let node = new Rule() + this.init(node, token[2]) + node.selector = '' + node.raws.between = '' + this.current = node + } + + end(token) { + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon + } + this.semicolon = false + + this.current.raws.after = (this.current.raws.after || '') + this.spaces + this.spaces = '' + + if (this.current.parent) { + this.current.source.end = this.getPosition(token[2]) + this.current.source.end.offset++ + this.current = this.current.parent + } else { + this.unexpectedClose(token) + } + } + + endFile() { + if (this.current.parent) this.unclosedBlock() + if (this.current.nodes && this.current.nodes.length) { + this.current.raws.semicolon = this.semicolon + } + this.current.raws.after = (this.current.raws.after || '') + this.spaces + this.root.source.end = this.getPosition(this.tokenizer.position()) + } + + freeSemicolon(token) { + this.spaces += token[1] + if (this.current.nodes) { + let prev = this.current.nodes[this.current.nodes.length - 1] + if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) { + prev.raws.ownSemicolon = this.spaces + this.spaces = '' + } + } + } + + // Helpers + + getPosition(offset) { + let pos = this.input.fromOffset(offset) + return { + column: pos.col, + line: pos.line, + offset + } + } + + init(node, offset) { + this.current.push(node) + node.source = { + input: this.input, + start: this.getPosition(offset) + } + node.raws.before = this.spaces + this.spaces = '' + if (node.type !== 'comment') this.semicolon = false + } + + other(start) { + let end = false + let type = null + let colon = false + let bracket = null + let brackets = [] + let customProperty = start[1].startsWith('--') + + let tokens = [] + let token = start + while (token) { + type = token[0] + tokens.push(token) + + if (type === '(' || type === '[') { + if (!bracket) bracket = token + brackets.push(type === '(' ? ')' : ']') + } else if (customProperty && colon && type === '{') { + if (!bracket) bracket = token + brackets.push('}') + } else if (brackets.length === 0) { + if (type === ';') { + if (colon) { + this.decl(tokens, customProperty) + return + } else { + break + } + } else if (type === '{') { + this.rule(tokens) + return + } else if (type === '}') { + this.tokenizer.back(tokens.pop()) + end = true + break + } else if (type === ':') { + colon = true + } + } else if (type === brackets[brackets.length - 1]) { + brackets.pop() + if (brackets.length === 0) bracket = null + } + + token = this.tokenizer.nextToken() + } + + if (this.tokenizer.endOfFile()) end = true + if (brackets.length > 0) this.unclosedBracket(bracket) + + if (end && colon) { + if (!customProperty) { + while (tokens.length) { + token = tokens[tokens.length - 1][0] + if (token !== 'space' && token !== 'comment') break + this.tokenizer.back(tokens.pop()) + } + } + this.decl(tokens, customProperty) + } else { + this.unknownWord(tokens) + } + } + + parse() { + let token + while (!this.tokenizer.endOfFile()) { + token = this.tokenizer.nextToken() + + switch (token[0]) { + case 'space': + this.spaces += token[1] + break + + case ';': + this.freeSemicolon(token) + break + + case '}': + this.end(token) + break + + case 'comment': + this.comment(token) + break + + case 'at-word': + this.atrule(token) + break + + case '{': + this.emptyRule(token) + break + + default: + this.other(token) + break + } + } + this.endFile() + } + + precheckMissedSemicolon(/* tokens */) { + // Hook for Safe Parser + } + + raw(node, prop, tokens, customProperty) { + let token, type + let length = tokens.length + let value = '' + let clean = true + let next, prev + + for (let i = 0; i < length; i += 1) { + token = tokens[i] + type = token[0] + if (type === 'space' && i === length - 1 && !customProperty) { + clean = false + } else if (type === 'comment') { + prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty' + next = tokens[i + 1] ? tokens[i + 1][0] : 'empty' + if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) { + if (value.slice(-1) === ',') { + clean = false + } else { + value += token[1] + } + } else { + clean = false + } + } else { + value += token[1] + } + } + if (!clean) { + let raw = tokens.reduce((all, i) => all + i[1], '') + node.raws[prop] = { raw, value } + } + node[prop] = value + } + + rule(tokens) { + tokens.pop() + + let node = new Rule() + this.init(node, tokens[0][2]) + + node.raws.between = this.spacesAndCommentsFromEnd(tokens) + this.raw(node, 'selector', tokens) + this.current = node + } + + spacesAndCommentsFromEnd(tokens) { + let lastTokenType + let spaces = '' + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0] + if (lastTokenType !== 'space' && lastTokenType !== 'comment') break + spaces = tokens.pop()[1] + spaces + } + return spaces + } + + // Errors + + spacesAndCommentsFromStart(tokens) { + let next + let spaces = '' + while (tokens.length) { + next = tokens[0][0] + if (next !== 'space' && next !== 'comment') break + spaces += tokens.shift()[1] + } + return spaces + } + + spacesFromEnd(tokens) { + let lastTokenType + let spaces = '' + while (tokens.length) { + lastTokenType = tokens[tokens.length - 1][0] + if (lastTokenType !== 'space') break + spaces = tokens.pop()[1] + spaces + } + return spaces + } + + stringFrom(tokens, from) { + let result = '' + for (let i = from; i < tokens.length; i++) { + result += tokens[i][1] + } + tokens.splice(from, tokens.length - from) + return result + } + + unclosedBlock() { + let pos = this.current.source.start + throw this.input.error('Unclosed block', pos.line, pos.column) + } + + unclosedBracket(bracket) { + throw this.input.error( + 'Unclosed bracket', + { offset: bracket[2] }, + { offset: bracket[2] + 1 } + ) + } + + unexpectedClose(token) { + throw this.input.error( + 'Unexpected }', + { offset: token[2] }, + { offset: token[2] + 1 } + ) + } + + unknownWord(tokens) { + throw this.input.error( + 'Unknown word', + { offset: tokens[0][2] }, + { offset: tokens[0][2] + tokens[0][1].length } + ) + } + + unnamedAtrule(node, token) { + throw this.input.error( + 'At-rule without name', + { offset: token[2] }, + { offset: token[2] + token[1].length } + ) + } +} + +module.exports = Parser diff --git a/site/.next/standalone/node_modules/postcss/lib/postcss.js b/site/.next/standalone/node_modules/postcss/lib/postcss.js new file mode 100644 index 0000000..080ee83 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/postcss.js @@ -0,0 +1,101 @@ +'use strict' + +let CssSyntaxError = require('./css-syntax-error') +let Declaration = require('./declaration') +let LazyResult = require('./lazy-result') +let Container = require('./container') +let Processor = require('./processor') +let stringify = require('./stringify') +let fromJSON = require('./fromJSON') +let Document = require('./document') +let Warning = require('./warning') +let Comment = require('./comment') +let AtRule = require('./at-rule') +let Result = require('./result.js') +let Input = require('./input') +let parse = require('./parse') +let list = require('./list') +let Rule = require('./rule') +let Root = require('./root') +let Node = require('./node') + +function postcss(...plugins) { + if (plugins.length === 1 && Array.isArray(plugins[0])) { + plugins = plugins[0] + } + return new Processor(plugins) +} + +postcss.plugin = function plugin(name, initializer) { + let warningPrinted = false + function creator(...args) { + // eslint-disable-next-line no-console + if (console && console.warn && !warningPrinted) { + warningPrinted = true + // eslint-disable-next-line no-console + console.warn( + name + + ': postcss.plugin was deprecated. Migration guide:\n' + + 'https://evilmartians.com/chronicles/postcss-8-plugin-migration' + ) + if (process.env.LANG && process.env.LANG.startsWith('cn')) { + /* c8 ignore next 7 */ + // eslint-disable-next-line no-console + console.warn( + name + + ': 里面 postcss.plugin 被弃用. 迁移指南:\n' + + 'https://www.w3ctech.com/topic/2226' + ) + } + } + let transformer = initializer(...args) + transformer.postcssPlugin = name + transformer.postcssVersion = new Processor().version + return transformer + } + + let cache + Object.defineProperty(creator, 'postcss', { + get() { + if (!cache) cache = creator() + return cache + } + }) + + creator.process = function (css, processOpts, pluginOpts) { + return postcss([creator(pluginOpts)]).process(css, processOpts) + } + + return creator +} + +postcss.stringify = stringify +postcss.parse = parse +postcss.fromJSON = fromJSON +postcss.list = list + +postcss.comment = defaults => new Comment(defaults) +postcss.atRule = defaults => new AtRule(defaults) +postcss.decl = defaults => new Declaration(defaults) +postcss.rule = defaults => new Rule(defaults) +postcss.root = defaults => new Root(defaults) +postcss.document = defaults => new Document(defaults) + +postcss.CssSyntaxError = CssSyntaxError +postcss.Declaration = Declaration +postcss.Container = Container +postcss.Processor = Processor +postcss.Document = Document +postcss.Comment = Comment +postcss.Warning = Warning +postcss.AtRule = AtRule +postcss.Result = Result +postcss.Input = Input +postcss.Rule = Rule +postcss.Root = Root +postcss.Node = Node + +LazyResult.registerPostcss(postcss) + +module.exports = postcss +postcss.default = postcss diff --git a/site/.next/standalone/node_modules/postcss/lib/previous-map.js b/site/.next/standalone/node_modules/postcss/lib/previous-map.js new file mode 100644 index 0000000..f3093df --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/previous-map.js @@ -0,0 +1,142 @@ +'use strict' + +let { SourceMapConsumer, SourceMapGenerator } = require('source-map-js') +let { existsSync, readFileSync } = require('fs') +let { dirname, join } = require('path') + +function fromBase64(str) { + if (Buffer) { + return Buffer.from(str, 'base64').toString() + } else { + /* c8 ignore next 2 */ + return window.atob(str) + } +} + +class PreviousMap { + constructor(css, opts) { + if (opts.map === false) return + this.loadAnnotation(css) + this.inline = this.startWith(this.annotation, 'data:') + + let prev = opts.map ? opts.map.prev : undefined + let text = this.loadMap(opts.from, prev) + if (!this.mapFile && opts.from) { + this.mapFile = opts.from + } + if (this.mapFile) this.root = dirname(this.mapFile) + if (text) this.text = text + } + + consumer() { + if (!this.consumerCache) { + this.consumerCache = new SourceMapConsumer(this.text) + } + return this.consumerCache + } + + decodeInline(text) { + let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/ + let baseUri = /^data:application\/json;base64,/ + let charsetUri = /^data:application\/json;charset=utf-?8,/ + let uri = /^data:application\/json,/ + + if (charsetUri.test(text) || uri.test(text)) { + return decodeURIComponent(text.substr(RegExp.lastMatch.length)) + } + + if (baseCharsetUri.test(text) || baseUri.test(text)) { + return fromBase64(text.substr(RegExp.lastMatch.length)) + } + + let encoding = text.match(/data:application\/json;([^,]+),/)[1] + throw new Error('Unsupported source map encoding ' + encoding) + } + + getAnnotationURL(sourceMapString) { + return sourceMapString.replace(/^\/\*\s*# sourceMappingURL=/, '').trim() + } + + isMap(map) { + if (typeof map !== 'object') return false + return ( + typeof map.mappings === 'string' || + typeof map._mappings === 'string' || + Array.isArray(map.sections) + ) + } + + loadAnnotation(css) { + let comments = css.match(/\/\*\s*# sourceMappingURL=/gm) + if (!comments) return + + // sourceMappingURLs from comments, strings, etc. + let start = css.lastIndexOf(comments.pop()) + let end = css.indexOf('*/', start) + + if (start > -1 && end > -1) { + // Locate the last sourceMappingURL to avoid pickin + this.annotation = this.getAnnotationURL(css.substring(start, end)) + } + } + + loadFile(path) { + this.root = dirname(path) + if (existsSync(path)) { + this.mapFile = path + return readFileSync(path, 'utf-8').toString().trim() + } + } + + loadMap(file, prev) { + if (prev === false) return false + + if (prev) { + if (typeof prev === 'string') { + return prev + } else if (typeof prev === 'function') { + let prevPath = prev(file) + if (prevPath) { + let map = this.loadFile(prevPath) + if (!map) { + throw new Error( + 'Unable to load previous source map: ' + prevPath.toString() + ) + } + return map + } + } else if (prev instanceof SourceMapConsumer) { + return SourceMapGenerator.fromSourceMap(prev).toString() + } else if (prev instanceof SourceMapGenerator) { + return prev.toString() + } else if (this.isMap(prev)) { + return JSON.stringify(prev) + } else { + throw new Error( + 'Unsupported previous source map format: ' + prev.toString() + ) + } + } else if (this.inline) { + return this.decodeInline(this.annotation) + } else if (this.annotation) { + let map = this.annotation + if (file) map = join(dirname(file), map) + return this.loadFile(map) + } + } + + startWith(string, start) { + if (!string) return false + return string.substr(0, start.length) === start + } + + withContent() { + return !!( + this.consumer().sourcesContent && + this.consumer().sourcesContent.length > 0 + ) + } +} + +module.exports = PreviousMap +PreviousMap.default = PreviousMap diff --git a/site/.next/standalone/node_modules/postcss/lib/processor.js b/site/.next/standalone/node_modules/postcss/lib/processor.js new file mode 100644 index 0000000..92842b6 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/processor.js @@ -0,0 +1,67 @@ +'use strict' + +let NoWorkResult = require('./no-work-result') +let LazyResult = require('./lazy-result') +let Document = require('./document') +let Root = require('./root') + +class Processor { + constructor(plugins = []) { + this.version = '8.4.31' + this.plugins = this.normalize(plugins) + } + + normalize(plugins) { + let normalized = [] + for (let i of plugins) { + if (i.postcss === true) { + i = i() + } else if (i.postcss) { + i = i.postcss + } + + if (typeof i === 'object' && Array.isArray(i.plugins)) { + normalized = normalized.concat(i.plugins) + } else if (typeof i === 'object' && i.postcssPlugin) { + normalized.push(i) + } else if (typeof i === 'function') { + normalized.push(i) + } else if (typeof i === 'object' && (i.parse || i.stringify)) { + if (process.env.NODE_ENV !== 'production') { + throw new Error( + 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' + + 'one of the syntax/parser/stringifier options as outlined ' + + 'in your PostCSS runner documentation.' + ) + } + } else { + throw new Error(i + ' is not a PostCSS plugin') + } + } + return normalized + } + + process(css, opts = {}) { + if ( + this.plugins.length === 0 && + typeof opts.parser === 'undefined' && + typeof opts.stringifier === 'undefined' && + typeof opts.syntax === 'undefined' + ) { + return new NoWorkResult(this, css, opts) + } else { + return new LazyResult(this, css, opts) + } + } + + use(plugin) { + this.plugins = this.plugins.concat(this.normalize([plugin])) + return this + } +} + +module.exports = Processor +Processor.default = Processor + +Root.registerProcessor(Processor) +Document.registerProcessor(Processor) diff --git a/site/.next/standalone/node_modules/postcss/lib/result.js b/site/.next/standalone/node_modules/postcss/lib/result.js new file mode 100644 index 0000000..a39751d --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/result.js @@ -0,0 +1,42 @@ +'use strict' + +let Warning = require('./warning') + +class Result { + constructor(processor, root, opts) { + this.processor = processor + this.messages = [] + this.root = root + this.opts = opts + this.css = undefined + this.map = undefined + } + + toString() { + return this.css + } + + warn(text, opts = {}) { + if (!opts.plugin) { + if (this.lastPlugin && this.lastPlugin.postcssPlugin) { + opts.plugin = this.lastPlugin.postcssPlugin + } + } + + let warning = new Warning(text, opts) + this.messages.push(warning) + + return warning + } + + warnings() { + return this.messages.filter(i => i.type === 'warning') + } + + get content() { + return this.css + } +} + +module.exports = Result +Result.default = Result diff --git a/site/.next/standalone/node_modules/postcss/lib/root.js b/site/.next/standalone/node_modules/postcss/lib/root.js new file mode 100644 index 0000000..ea574ed --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/root.js @@ -0,0 +1,61 @@ +'use strict' + +let Container = require('./container') + +let LazyResult, Processor + +class Root extends Container { + constructor(defaults) { + super(defaults) + this.type = 'root' + if (!this.nodes) this.nodes = [] + } + + normalize(child, sample, type) { + let nodes = super.normalize(child) + + if (sample) { + if (type === 'prepend') { + if (this.nodes.length > 1) { + sample.raws.before = this.nodes[1].raws.before + } else { + delete sample.raws.before + } + } else if (this.first !== sample) { + for (let node of nodes) { + node.raws.before = sample.raws.before + } + } + } + + return nodes + } + + removeChild(child, ignore) { + let index = this.index(child) + + if (!ignore && index === 0 && this.nodes.length > 1) { + this.nodes[1].raws.before = this.nodes[index].raws.before + } + + return super.removeChild(child) + } + + toResult(opts = {}) { + let lazy = new LazyResult(new Processor(), this, opts) + return lazy.stringify() + } +} + +Root.registerLazyResult = dependant => { + LazyResult = dependant +} + +Root.registerProcessor = dependant => { + Processor = dependant +} + +module.exports = Root +Root.default = Root + +Container.registerRoot(Root) diff --git a/site/.next/standalone/node_modules/postcss/lib/rule.js b/site/.next/standalone/node_modules/postcss/lib/rule.js new file mode 100644 index 0000000..a93ab25 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/rule.js @@ -0,0 +1,27 @@ +'use strict' + +let Container = require('./container') +let list = require('./list') + +class Rule extends Container { + constructor(defaults) { + super(defaults) + this.type = 'rule' + if (!this.nodes) this.nodes = [] + } + + get selectors() { + return list.comma(this.selector) + } + + set selectors(values) { + let match = this.selector ? this.selector.match(/,\s*/) : null + let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen') + this.selector = values.join(sep) + } +} + +module.exports = Rule +Rule.default = Rule + +Container.registerRule(Rule) diff --git a/site/.next/standalone/node_modules/postcss/lib/stringifier.js b/site/.next/standalone/node_modules/postcss/lib/stringifier.js new file mode 100644 index 0000000..e07ad12 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/stringifier.js @@ -0,0 +1,353 @@ +'use strict' + +const DEFAULT_RAW = { + after: '\n', + beforeClose: '\n', + beforeComment: '\n', + beforeDecl: '\n', + beforeOpen: ' ', + beforeRule: '\n', + colon: ': ', + commentLeft: ' ', + commentRight: ' ', + emptyBody: '', + indent: ' ', + semicolon: false +} + +function capitalize(str) { + return str[0].toUpperCase() + str.slice(1) +} + +class Stringifier { + constructor(builder) { + this.builder = builder + } + + atrule(node, semicolon) { + let name = '@' + node.name + let params = node.params ? this.rawValue(node, 'params') : '' + + if (typeof node.raws.afterName !== 'undefined') { + name += node.raws.afterName + } else if (params) { + name += ' ' + } + + if (node.nodes) { + this.block(node, name + params) + } else { + let end = (node.raws.between || '') + (semicolon ? ';' : '') + this.builder(name + params + end, node) + } + } + + beforeAfter(node, detect) { + let value + if (node.type === 'decl') { + value = this.raw(node, null, 'beforeDecl') + } else if (node.type === 'comment') { + value = this.raw(node, null, 'beforeComment') + } else if (detect === 'before') { + value = this.raw(node, null, 'beforeRule') + } else { + value = this.raw(node, null, 'beforeClose') + } + + let buf = node.parent + let depth = 0 + while (buf && buf.type !== 'root') { + depth += 1 + buf = buf.parent + } + + if (value.includes('\n')) { + let indent = this.raw(node, null, 'indent') + if (indent.length) { + for (let step = 0; step < depth; step++) value += indent + } + } + + return value + } + + block(node, start) { + let between = this.raw(node, 'between', 'beforeOpen') + this.builder(start + between + '{', node, 'start') + + let after + if (node.nodes && node.nodes.length) { + this.body(node) + after = this.raw(node, 'after') + } else { + after = this.raw(node, 'after', 'emptyBody') + } + + if (after) this.builder(after) + this.builder('}', node, 'end') + } + + body(node) { + let last = node.nodes.length - 1 + while (last > 0) { + if (node.nodes[last].type !== 'comment') break + last -= 1 + } + + let semicolon = this.raw(node, 'semicolon') + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i] + let before = this.raw(child, 'before') + if (before) this.builder(before) + this.stringify(child, last !== i || semicolon) + } + } + + comment(node) { + let left = this.raw(node, 'left', 'commentLeft') + let right = this.raw(node, 'right', 'commentRight') + this.builder('/*' + left + node.text + right + '*/', node) + } + + decl(node, semicolon) { + let between = this.raw(node, 'between', 'colon') + let string = node.prop + between + this.rawValue(node, 'value') + + if (node.important) { + string += node.raws.important || ' !important' + } + + if (semicolon) string += ';' + this.builder(string, node) + } + + document(node) { + this.body(node) + } + + raw(node, own, detect) { + let value + if (!detect) detect = own + + // Already had + if (own) { + value = node.raws[own] + if (typeof value !== 'undefined') return value + } + + let parent = node.parent + + if (detect === 'before') { + // Hack for first rule in CSS + if (!parent || (parent.type === 'root' && parent.first === node)) { + return '' + } + + // `root` nodes in `document` should use only their own raws + if (parent && parent.type === 'document') { + return '' + } + } + + // Floating child without parent + if (!parent) return DEFAULT_RAW[detect] + + // Detect style by other nodes + let root = node.root() + if (!root.rawCache) root.rawCache = {} + if (typeof root.rawCache[detect] !== 'undefined') { + return root.rawCache[detect] + } + + if (detect === 'before' || detect === 'after') { + return this.beforeAfter(node, detect) + } else { + let method = 'raw' + capitalize(detect) + if (this[method]) { + value = this[method](root, node) + } else { + root.walk(i => { + value = i.raws[own] + if (typeof value !== 'undefined') return false + }) + } + } + + if (typeof value === 'undefined') value = DEFAULT_RAW[detect] + + root.rawCache[detect] = value + return value + } + + rawBeforeClose(root) { + let value + root.walk(i => { + if (i.nodes && i.nodes.length > 0) { + if (typeof i.raws.after !== 'undefined') { + value = i.raws.after + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, '') + } + return false + } + } + }) + if (value) value = value.replace(/\S/g, '') + return value + } + + rawBeforeComment(root, node) { + let value + root.walkComments(i => { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, '') + } + return false + } + }) + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeDecl') + } else if (value) { + value = value.replace(/\S/g, '') + } + return value + } + + rawBeforeDecl(root, node) { + let value + root.walkDecls(i => { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, '') + } + return false + } + }) + if (typeof value === 'undefined') { + value = this.raw(node, null, 'beforeRule') + } else if (value) { + value = value.replace(/\S/g, '') + } + return value + } + + rawBeforeOpen(root) { + let value + root.walk(i => { + if (i.type !== 'decl') { + value = i.raws.between + if (typeof value !== 'undefined') return false + } + }) + return value + } + + rawBeforeRule(root) { + let value + root.walk(i => { + if (i.nodes && (i.parent !== root || root.first !== i)) { + if (typeof i.raws.before !== 'undefined') { + value = i.raws.before + if (value.includes('\n')) { + value = value.replace(/[^\n]+$/, '') + } + return false + } + } + }) + if (value) value = value.replace(/\S/g, '') + return value + } + + rawColon(root) { + let value + root.walkDecls(i => { + if (typeof i.raws.between !== 'undefined') { + value = i.raws.between.replace(/[^\s:]/g, '') + return false + } + }) + return value + } + + rawEmptyBody(root) { + let value + root.walk(i => { + if (i.nodes && i.nodes.length === 0) { + value = i.raws.after + if (typeof value !== 'undefined') return false + } + }) + return value + } + + rawIndent(root) { + if (root.raws.indent) return root.raws.indent + let value + root.walk(i => { + let p = i.parent + if (p && p !== root && p.parent && p.parent === root) { + if (typeof i.raws.before !== 'undefined') { + let parts = i.raws.before.split('\n') + value = parts[parts.length - 1] + value = value.replace(/\S/g, '') + return false + } + } + }) + return value + } + + rawSemicolon(root) { + let value + root.walk(i => { + if (i.nodes && i.nodes.length && i.last.type === 'decl') { + value = i.raws.semicolon + if (typeof value !== 'undefined') return false + } + }) + return value + } + + rawValue(node, prop) { + let value = node[prop] + let raw = node.raws[prop] + if (raw && raw.value === value) { + return raw.raw + } + + return value + } + + root(node) { + this.body(node) + if (node.raws.after) this.builder(node.raws.after) + } + + rule(node) { + this.block(node, this.rawValue(node, 'selector')) + if (node.raws.ownSemicolon) { + this.builder(node.raws.ownSemicolon, node, 'end') + } + } + + stringify(node, semicolon) { + /* c8 ignore start */ + if (!this[node.type]) { + throw new Error( + 'Unknown AST node type ' + + node.type + + '. ' + + 'Maybe you need to change PostCSS stringifier.' + ) + } + /* c8 ignore stop */ + this[node.type](node, semicolon) + } +} + +module.exports = Stringifier +Stringifier.default = Stringifier diff --git a/site/.next/standalone/node_modules/postcss/lib/stringify.js b/site/.next/standalone/node_modules/postcss/lib/stringify.js new file mode 100644 index 0000000..77bd017 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/stringify.js @@ -0,0 +1,11 @@ +'use strict' + +let Stringifier = require('./stringifier') + +function stringify(node, builder) { + let str = new Stringifier(builder) + str.stringify(node) +} + +module.exports = stringify +stringify.default = stringify diff --git a/site/.next/standalone/node_modules/postcss/lib/symbols.js b/site/.next/standalone/node_modules/postcss/lib/symbols.js new file mode 100644 index 0000000..a142c26 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/symbols.js @@ -0,0 +1,5 @@ +'use strict' + +module.exports.isClean = Symbol('isClean') + +module.exports.my = Symbol('my') diff --git a/site/.next/standalone/node_modules/postcss/lib/terminal-highlight.js b/site/.next/standalone/node_modules/postcss/lib/terminal-highlight.js new file mode 100644 index 0000000..6196c9d --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/terminal-highlight.js @@ -0,0 +1,70 @@ +'use strict' + +let pico = require('picocolors') + +let tokenizer = require('./tokenize') + +let Input + +function registerInput(dependant) { + Input = dependant +} + +const HIGHLIGHT_THEME = { + ';': pico.yellow, + ':': pico.yellow, + '(': pico.cyan, + ')': pico.cyan, + '[': pico.yellow, + ']': pico.yellow, + '{': pico.yellow, + '}': pico.yellow, + 'at-word': pico.cyan, + 'brackets': pico.cyan, + 'call': pico.cyan, + 'class': pico.yellow, + 'comment': pico.gray, + 'hash': pico.magenta, + 'string': pico.green +} + +function getTokenType([type, value], processor) { + if (type === 'word') { + if (value[0] === '.') { + return 'class' + } + if (value[0] === '#') { + return 'hash' + } + } + + if (!processor.endOfFile()) { + let next = processor.nextToken() + processor.back(next) + if (next[0] === 'brackets' || next[0] === '(') return 'call' + } + + return type +} + +function terminalHighlight(css) { + let processor = tokenizer(new Input(css), { ignoreErrors: true }) + let result = '' + while (!processor.endOfFile()) { + let token = processor.nextToken() + let color = HIGHLIGHT_THEME[getTokenType(token, processor)] + if (color) { + result += token[1] + .split(/\r?\n/) + .map(i => color(i)) + .join('\n') + } else { + result += token[1] + } + } + return result +} + +terminalHighlight.registerInput = registerInput + +module.exports = terminalHighlight diff --git a/site/.next/standalone/node_modules/postcss/lib/tokenize.js b/site/.next/standalone/node_modules/postcss/lib/tokenize.js new file mode 100644 index 0000000..39a20a3 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/tokenize.js @@ -0,0 +1,266 @@ +'use strict' + +const SINGLE_QUOTE = "'".charCodeAt(0) +const DOUBLE_QUOTE = '"'.charCodeAt(0) +const BACKSLASH = '\\'.charCodeAt(0) +const SLASH = '/'.charCodeAt(0) +const NEWLINE = '\n'.charCodeAt(0) +const SPACE = ' '.charCodeAt(0) +const FEED = '\f'.charCodeAt(0) +const TAB = '\t'.charCodeAt(0) +const CR = '\r'.charCodeAt(0) +const OPEN_SQUARE = '['.charCodeAt(0) +const CLOSE_SQUARE = ']'.charCodeAt(0) +const OPEN_PARENTHESES = '('.charCodeAt(0) +const CLOSE_PARENTHESES = ')'.charCodeAt(0) +const OPEN_CURLY = '{'.charCodeAt(0) +const CLOSE_CURLY = '}'.charCodeAt(0) +const SEMICOLON = ';'.charCodeAt(0) +const ASTERISK = '*'.charCodeAt(0) +const COLON = ':'.charCodeAt(0) +const AT = '@'.charCodeAt(0) + +const RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g +const RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g +const RE_BAD_BRACKET = /.[\r\n"'(/\\]/ +const RE_HEX_ESCAPE = /[\da-f]/i + +module.exports = function tokenizer(input, options = {}) { + let css = input.css.valueOf() + let ignore = options.ignoreErrors + + let code, next, quote, content, escape + let escaped, escapePos, prev, n, currentToken + + let length = css.length + let pos = 0 + let buffer = [] + let returned = [] + + function position() { + return pos + } + + function unclosed(what) { + throw input.error('Unclosed ' + what, pos) + } + + function endOfFile() { + return returned.length === 0 && pos >= length + } + + function nextToken(opts) { + if (returned.length) return returned.pop() + if (pos >= length) return + + let ignoreUnclosed = opts ? opts.ignoreUnclosed : false + + code = css.charCodeAt(pos) + + switch (code) { + case NEWLINE: + case SPACE: + case TAB: + case CR: + case FEED: { + next = pos + do { + next += 1 + code = css.charCodeAt(next) + } while ( + code === SPACE || + code === NEWLINE || + code === TAB || + code === CR || + code === FEED + ) + + currentToken = ['space', css.slice(pos, next)] + pos = next - 1 + break + } + + case OPEN_SQUARE: + case CLOSE_SQUARE: + case OPEN_CURLY: + case CLOSE_CURLY: + case COLON: + case SEMICOLON: + case CLOSE_PARENTHESES: { + let controlChar = String.fromCharCode(code) + currentToken = [controlChar, controlChar, pos] + break + } + + case OPEN_PARENTHESES: { + prev = buffer.length ? buffer.pop()[1] : '' + n = css.charCodeAt(pos + 1) + if ( + prev === 'url' && + n !== SINGLE_QUOTE && + n !== DOUBLE_QUOTE && + n !== SPACE && + n !== NEWLINE && + n !== TAB && + n !== FEED && + n !== CR + ) { + next = pos + do { + escaped = false + next = css.indexOf(')', next + 1) + if (next === -1) { + if (ignore || ignoreUnclosed) { + next = pos + break + } else { + unclosed('bracket') + } + } + escapePos = next + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1 + escaped = !escaped + } + } while (escaped) + + currentToken = ['brackets', css.slice(pos, next + 1), pos, next] + + pos = next + } else { + next = css.indexOf(')', pos + 1) + content = css.slice(pos, next + 1) + + if (next === -1 || RE_BAD_BRACKET.test(content)) { + currentToken = ['(', '(', pos] + } else { + currentToken = ['brackets', content, pos, next] + pos = next + } + } + + break + } + + case SINGLE_QUOTE: + case DOUBLE_QUOTE: { + quote = code === SINGLE_QUOTE ? "'" : '"' + next = pos + do { + escaped = false + next = css.indexOf(quote, next + 1) + if (next === -1) { + if (ignore || ignoreUnclosed) { + next = pos + 1 + break + } else { + unclosed('string') + } + } + escapePos = next + while (css.charCodeAt(escapePos - 1) === BACKSLASH) { + escapePos -= 1 + escaped = !escaped + } + } while (escaped) + + currentToken = ['string', css.slice(pos, next + 1), pos, next] + pos = next + break + } + + case AT: { + RE_AT_END.lastIndex = pos + 1 + RE_AT_END.test(css) + if (RE_AT_END.lastIndex === 0) { + next = css.length - 1 + } else { + next = RE_AT_END.lastIndex - 2 + } + + currentToken = ['at-word', css.slice(pos, next + 1), pos, next] + + pos = next + break + } + + case BACKSLASH: { + next = pos + escape = true + while (css.charCodeAt(next + 1) === BACKSLASH) { + next += 1 + escape = !escape + } + code = css.charCodeAt(next + 1) + if ( + escape && + code !== SLASH && + code !== SPACE && + code !== NEWLINE && + code !== TAB && + code !== CR && + code !== FEED + ) { + next += 1 + if (RE_HEX_ESCAPE.test(css.charAt(next))) { + while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) { + next += 1 + } + if (css.charCodeAt(next + 1) === SPACE) { + next += 1 + } + } + } + + currentToken = ['word', css.slice(pos, next + 1), pos, next] + + pos = next + break + } + + default: { + if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) { + next = css.indexOf('*/', pos + 2) + 1 + if (next === 0) { + if (ignore || ignoreUnclosed) { + next = css.length + } else { + unclosed('comment') + } + } + + currentToken = ['comment', css.slice(pos, next + 1), pos, next] + pos = next + } else { + RE_WORD_END.lastIndex = pos + 1 + RE_WORD_END.test(css) + if (RE_WORD_END.lastIndex === 0) { + next = css.length - 1 + } else { + next = RE_WORD_END.lastIndex - 2 + } + + currentToken = ['word', css.slice(pos, next + 1), pos, next] + buffer.push(currentToken) + pos = next + } + + break + } + } + + pos++ + return currentToken + } + + function back(token) { + returned.push(token) + } + + return { + back, + endOfFile, + nextToken, + position + } +} diff --git a/site/.next/standalone/node_modules/postcss/lib/warn-once.js b/site/.next/standalone/node_modules/postcss/lib/warn-once.js new file mode 100644 index 0000000..316e1cf --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/warn-once.js @@ -0,0 +1,13 @@ +/* eslint-disable no-console */ +'use strict' + +let printed = {} + +module.exports = function warnOnce(message) { + if (printed[message]) return + printed[message] = true + + if (typeof console !== 'undefined' && console.warn) { + console.warn(message) + } +} diff --git a/site/.next/standalone/node_modules/postcss/lib/warning.js b/site/.next/standalone/node_modules/postcss/lib/warning.js new file mode 100644 index 0000000..3a3d79c --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/lib/warning.js @@ -0,0 +1,37 @@ +'use strict' + +class Warning { + constructor(text, opts = {}) { + this.type = 'warning' + this.text = text + + if (opts.node && opts.node.source) { + let range = opts.node.rangeBy(opts) + this.line = range.start.line + this.column = range.start.column + this.endLine = range.end.line + this.endColumn = range.end.column + } + + for (let opt in opts) this[opt] = opts[opt] + } + + toString() { + if (this.node) { + return this.node.error(this.text, { + index: this.index, + plugin: this.plugin, + word: this.word + }).message + } + + if (this.plugin) { + return this.plugin + ': ' + this.text + } + + return this.text + } +} + +module.exports = Warning +Warning.default = Warning diff --git a/site/.next/standalone/node_modules/postcss/package.json b/site/.next/standalone/node_modules/postcss/package.json new file mode 100755 index 0000000..d68db86 --- /dev/null +++ b/site/.next/standalone/node_modules/postcss/package.json @@ -0,0 +1,88 @@ +{ + "name": "postcss", + "version": "8.4.31", + "description": "Tool for transforming styles with JS plugins", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "exports": { + ".": { + "require": "./lib/postcss.js", + "import": "./lib/postcss.mjs" + }, + "./lib/at-rule": "./lib/at-rule.js", + "./lib/comment": "./lib/comment.js", + "./lib/container": "./lib/container.js", + "./lib/css-syntax-error": "./lib/css-syntax-error.js", + "./lib/declaration": "./lib/declaration.js", + "./lib/fromJSON": "./lib/fromJSON.js", + "./lib/input": "./lib/input.js", + "./lib/lazy-result": "./lib/lazy-result.js", + "./lib/no-work-result": "./lib/no-work-result.js", + "./lib/list": "./lib/list.js", + "./lib/map-generator": "./lib/map-generator.js", + "./lib/node": "./lib/node.js", + "./lib/parse": "./lib/parse.js", + "./lib/parser": "./lib/parser.js", + "./lib/postcss": "./lib/postcss.js", + "./lib/previous-map": "./lib/previous-map.js", + "./lib/processor": "./lib/processor.js", + "./lib/result": "./lib/result.js", + "./lib/root": "./lib/root.js", + "./lib/rule": "./lib/rule.js", + "./lib/stringifier": "./lib/stringifier.js", + "./lib/stringify": "./lib/stringify.js", + "./lib/symbols": "./lib/symbols.js", + "./lib/terminal-highlight": "./lib/terminal-highlight.js", + "./lib/tokenize": "./lib/tokenize.js", + "./lib/warn-once": "./lib/warn-once.js", + "./lib/warning": "./lib/warning.js", + "./package.json": "./package.json" + }, + "main": "./lib/postcss.js", + "types": "./lib/postcss.d.ts", + "keywords": [ + "css", + "postcss", + "rework", + "preprocessor", + "parser", + "source map", + "transform", + "manipulation", + "transpiler" + ], + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "author": "Andrey Sitnik ", + "license": "MIT", + "homepage": "https://postcss.org/", + "repository": "postcss/postcss", + "bugs": { + "url": "https://github.com/postcss/postcss/issues" + }, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "browser": { + "./lib/terminal-highlight": false, + "source-map-js": false, + "path": false, + "url": false, + "fs": false + } +} diff --git a/site/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js b/site/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js new file mode 100644 index 0000000..102e3ef --- /dev/null +++ b/site/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js @@ -0,0 +1,7029 @@ +/** + * @license React + * react-dom-server-legacy.browser.development.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +if (process.env.NODE_ENV !== "production") { + (function() { +'use strict'; + +var React = require('react'); + +var ReactVersion = '18.3.1'; + +var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; + +// by calls to these methods by a Babel plugin. +// +// In PROD (or in packages without access to React internals), +// they are left as they are instead. + +function warn(format) { + { + { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + printWarning('warn', format, args); + } + } +} +function error(format) { + { + { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + printWarning('error', format, args); + } + } +} + +function printWarning(level, format, args) { + // When changing this logic, you might want to also + // update consoleWithStackDev.www.js as well. + { + var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + var stack = ReactDebugCurrentFrame.getStackAddendum(); + + if (stack !== '') { + format += '%s'; + args = args.concat([stack]); + } // eslint-disable-next-line react-internal/safe-string-coercion + + + var argsWithFormat = args.map(function (item) { + return String(item); + }); // Careful: RN currently depends on this prefix + + argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it + // breaks IE9: https://github.com/facebook/react/issues/13610 + // eslint-disable-next-line react-internal/no-production-logging + + Function.prototype.apply.call(console[level], console, argsWithFormat); + } +} + +function scheduleWork(callback) { + callback(); +} +function beginWriting(destination) {} +function writeChunk(destination, chunk) { + writeChunkAndReturn(destination, chunk); +} +function writeChunkAndReturn(destination, chunk) { + return destination.push(chunk); +} +function completeWriting(destination) {} +function close(destination) { + destination.push(null); +} +function stringToChunk(content) { + return content; +} +function stringToPrecomputedChunk(content) { + return content; +} +function closeWithError(destination, error) { + // $FlowFixMe: This is an Error object or the destination accepts other types. + destination.destroy(error); +} + +/* + * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol + * and Temporal.* types. See https://github.com/facebook/react/pull/22064. + * + * The functions in this module will throw an easier-to-understand, + * easier-to-debug exception with a clear errors message message explaining the + * problem. (Instead of a confusing exception thrown inside the implementation + * of the `value` object). + */ +// $FlowFixMe only called in DEV, so void return is not possible. +function typeName(value) { + { + // toStringTag is needed for namespaced types like Temporal.Instant + var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag; + var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object'; + return type; + } +} // $FlowFixMe only called in DEV, so void return is not possible. + + +function willCoercionThrow(value) { + { + try { + testStringCoercion(value); + return false; + } catch (e) { + return true; + } + } +} + +function testStringCoercion(value) { + // If you ended up here by following an exception call stack, here's what's + // happened: you supplied an object or symbol value to React (as a prop, key, + // DOM attribute, CSS property, string ref, etc.) and when React tried to + // coerce it to a string using `'' + value`, an exception was thrown. + // + // The most common types that will cause this exception are `Symbol` instances + // and Temporal objects like `Temporal.Instant`. But any object that has a + // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this + // exception. (Library authors do this to prevent users from using built-in + // numeric operators like `+` or comparison operators like `>=` because custom + // methods are needed to perform accurate arithmetic or comparison.) + // + // To fix the problem, coerce this object or symbol value to a string before + // passing it to React. The most reliable way is usually `String(value)`. + // + // To find which value is throwing, check the browser or debugger console. + // Before this exception was thrown, there should be `console.error` output + // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the + // problem and how that type was used: key, atrribute, input value prop, etc. + // In most cases, this console output also shows the component and its + // ancestor components where the exception happened. + // + // eslint-disable-next-line react-internal/safe-string-coercion + return '' + value; +} + +function checkAttributeStringCoercion(value, attributeName) { + { + if (willCoercionThrow(value)) { + error('The provided `%s` attribute is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', attributeName, typeName(value)); + + return testStringCoercion(value); // throw (to help callers find troubleshooting comments) + } + } +} +function checkCSSPropertyStringCoercion(value, propName) { + { + if (willCoercionThrow(value)) { + error('The provided `%s` CSS property is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value)); + + return testStringCoercion(value); // throw (to help callers find troubleshooting comments) + } + } +} +function checkHtmlStringCoercion(value) { + { + if (willCoercionThrow(value)) { + error('The provided HTML markup uses a value of unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value)); + + return testStringCoercion(value); // throw (to help callers find troubleshooting comments) + } + } +} + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +// A reserved attribute. +// It is handled by React separately and shouldn't be written to the DOM. +var RESERVED = 0; // A simple string attribute. +// Attributes that aren't in the filter are presumed to have this type. + +var STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called +// "enumerated" attributes with "true" and "false" as possible values. +// When true, it should be set to a "true" string. +// When false, it should be set to a "false" string. + +var BOOLEANISH_STRING = 2; // A real boolean attribute. +// When true, it should be present (set either to an empty string or its name). +// When false, it should be omitted. + +var BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value. +// When true, it should be present (set either to an empty string or its name). +// When false, it should be omitted. +// For any other value, should be present with that value. + +var OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric. +// When falsy, it should be removed. + +var NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric. +// When falsy, it should be removed. + +var POSITIVE_NUMERIC = 6; + +/* eslint-disable max-len */ +var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"; +/* eslint-enable max-len */ + +var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; +var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$'); +var illegalAttributeNameCache = {}; +var validatedAttributeNameCache = {}; +function isAttributeNameSafe(attributeName) { + if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) { + return true; + } + + if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) { + return false; + } + + if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) { + validatedAttributeNameCache[attributeName] = true; + return true; + } + + illegalAttributeNameCache[attributeName] = true; + + { + error('Invalid attribute name: `%s`', attributeName); + } + + return false; +} +function shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) { + if (propertyInfo !== null && propertyInfo.type === RESERVED) { + return false; + } + + switch (typeof value) { + case 'function': // $FlowIssue symbol is perfectly valid here + + case 'symbol': + // eslint-disable-line + return true; + + case 'boolean': + { + if (isCustomComponentTag) { + return false; + } + + if (propertyInfo !== null) { + return !propertyInfo.acceptsBooleans; + } else { + var prefix = name.toLowerCase().slice(0, 5); + return prefix !== 'data-' && prefix !== 'aria-'; + } + } + + default: + return false; + } +} +function getPropertyInfo(name) { + return properties.hasOwnProperty(name) ? properties[name] : null; +} + +function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) { + this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN; + this.attributeName = attributeName; + this.attributeNamespace = attributeNamespace; + this.mustUseProperty = mustUseProperty; + this.propertyName = name; + this.type = type; + this.sanitizeURL = sanitizeURL; + this.removeEmptyString = removeEmptyString; +} // When adding attributes to this list, be sure to also add them to +// the `possibleStandardNames` module to ensure casing and incorrect +// name warnings. + + +var properties = {}; // These props are reserved by React. They shouldn't be written to the DOM. + +var reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular +// elements (not just inputs). Now that ReactDOMInput assigns to the +// defaultValue property -- do we need this? +'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style']; + +reservedProps.forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // A few React string attributes have a different name. +// This is a mapping from React prop names to the attribute names. + +[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) { + var name = _ref[0], + attributeName = _ref[1]; + properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty + attributeName, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are "enumerated" HTML attributes that accept "true" and "false". +// In React, we let users pass `true` and `false` even though technically +// these aren't boolean attributes (they are coerced to strings). + +['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty + name.toLowerCase(), // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are "enumerated" SVG attributes that accept "true" and "false". +// In React, we let users pass `true` and `false` even though technically +// these aren't boolean attributes (they are coerced to strings). +// Since these are SVG attributes, their attribute names are case-sensitive. + +['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are HTML boolean attributes. + +['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM +// on the client side because the browsers are inconsistent. Instead we call focus(). +'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata +'itemScope'].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty + name.toLowerCase(), // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are the few React props that we set as DOM properties +// rather than attributes. These are all booleans. + +['checked', // Note: `option.selected` is not updated if `select.multiple` is +// disabled with `removeAttribute`. We have special logic for handling this. +'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are HTML attributes that are "overloaded booleans": they behave like +// booleans, but can also accept a string value. + +['capture', 'download' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are HTML attributes that must be positive numbers. + +['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty + name, // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These are HTML attributes that must be numbers. + +['rowSpan', 'start'].forEach(function (name) { + properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty + name.toLowerCase(), // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); +var CAMELIZE = /[\-\:]([a-z])/g; + +var capitalize = function (token) { + return token[1].toUpperCase(); +}; // This is a list of all SVG attributes that need special casing, namespacing, +// or boolean value assignment. Regular attributes that just accept strings +// and have the same names are omitted, just like in the HTML attribute filter. +// Some of these attributes can be hard to find. This list was created by +// scraping the MDN documentation. + + +['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (attributeName) { + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty + attributeName, null, // attributeNamespace + false, // sanitizeURL + false); +}); // String SVG attributes with the xlink namespace. + +['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (attributeName) { + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty + attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL + false); +}); // String SVG attributes with the xml namespace. + +['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list, +// you'll need to set attributeName to name.toLowerCase() +// instead in the assignment below. +].forEach(function (attributeName) { + var name = attributeName.replace(CAMELIZE, capitalize); + properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty + attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL + false); +}); // These attribute exists both in HTML and SVG. +// The attribute name is case-sensitive in SVG so we can't just use +// the React name like we do for attributes that exist only in HTML. + +['tabIndex', 'crossOrigin'].forEach(function (attributeName) { + properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty + attributeName.toLowerCase(), // attributeName + null, // attributeNamespace + false, // sanitizeURL + false); +}); // These attributes accept URLs. These must not allow javascript: URLS. +// These will also need to accept Trusted Types object in the future. + +var xlinkHref = 'xlinkHref'; +properties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty +'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL +false); +['src', 'href', 'action', 'formAction'].forEach(function (attributeName) { + properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty + attributeName.toLowerCase(), // attributeName + null, // attributeNamespace + true, // sanitizeURL + true); +}); + +/** + * CSS properties which accept numbers but are not in units of "px". + */ +var isUnitlessNumber = { + animationIterationCount: true, + aspectRatio: true, + borderImageOutset: true, + borderImageSlice: true, + borderImageWidth: true, + boxFlex: true, + boxFlexGroup: true, + boxOrdinalGroup: true, + columnCount: true, + columns: true, + flex: true, + flexGrow: true, + flexPositive: true, + flexShrink: true, + flexNegative: true, + flexOrder: true, + gridArea: true, + gridRow: true, + gridRowEnd: true, + gridRowSpan: true, + gridRowStart: true, + gridColumn: true, + gridColumnEnd: true, + gridColumnSpan: true, + gridColumnStart: true, + fontWeight: true, + lineClamp: true, + lineHeight: true, + opacity: true, + order: true, + orphans: true, + tabSize: true, + widows: true, + zIndex: true, + zoom: true, + // SVG-related properties + fillOpacity: true, + floodOpacity: true, + stopOpacity: true, + strokeDasharray: true, + strokeDashoffset: true, + strokeMiterlimit: true, + strokeOpacity: true, + strokeWidth: true +}; +/** + * @param {string} prefix vendor-specific prefix, eg: Webkit + * @param {string} key style name, eg: transitionDuration + * @return {string} style name prefixed with `prefix`, properly camelCased, eg: + * WebkitTransitionDuration + */ + +function prefixKey(prefix, key) { + return prefix + key.charAt(0).toUpperCase() + key.substring(1); +} +/** + * Support style names that may come passed in prefixed by adding permutations + * of vendor prefixes. + */ + + +var prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an +// infinite loop, because it iterates over the newly added props too. + +Object.keys(isUnitlessNumber).forEach(function (prop) { + prefixes.forEach(function (prefix) { + isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop]; + }); +}); + +var hasReadOnlyValue = { + button: true, + checkbox: true, + image: true, + hidden: true, + radio: true, + reset: true, + submit: true +}; +function checkControlledValueProps(tagName, props) { + { + if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) { + error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); + } + + if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) { + error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); + } + } +} + +function isCustomComponent(tagName, props) { + if (tagName.indexOf('-') === -1) { + return typeof props.is === 'string'; + } + + switch (tagName) { + // These are reserved SVG and MathML elements. + // We don't mind this list too much because we expect it to never grow. + // The alternative is to track the namespace in a few places which is convoluted. + // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts + case 'annotation-xml': + case 'color-profile': + case 'font-face': + case 'font-face-src': + case 'font-face-uri': + case 'font-face-format': + case 'font-face-name': + case 'missing-glyph': + return false; + + default: + return true; + } +} + +var ariaProperties = { + 'aria-current': 0, + // state + 'aria-description': 0, + 'aria-details': 0, + 'aria-disabled': 0, + // state + 'aria-hidden': 0, + // state + 'aria-invalid': 0, + // state + 'aria-keyshortcuts': 0, + 'aria-label': 0, + 'aria-roledescription': 0, + // Widget Attributes + 'aria-autocomplete': 0, + 'aria-checked': 0, + 'aria-expanded': 0, + 'aria-haspopup': 0, + 'aria-level': 0, + 'aria-modal': 0, + 'aria-multiline': 0, + 'aria-multiselectable': 0, + 'aria-orientation': 0, + 'aria-placeholder': 0, + 'aria-pressed': 0, + 'aria-readonly': 0, + 'aria-required': 0, + 'aria-selected': 0, + 'aria-sort': 0, + 'aria-valuemax': 0, + 'aria-valuemin': 0, + 'aria-valuenow': 0, + 'aria-valuetext': 0, + // Live Region Attributes + 'aria-atomic': 0, + 'aria-busy': 0, + 'aria-live': 0, + 'aria-relevant': 0, + // Drag-and-Drop Attributes + 'aria-dropeffect': 0, + 'aria-grabbed': 0, + // Relationship Attributes + 'aria-activedescendant': 0, + 'aria-colcount': 0, + 'aria-colindex': 0, + 'aria-colspan': 0, + 'aria-controls': 0, + 'aria-describedby': 0, + 'aria-errormessage': 0, + 'aria-flowto': 0, + 'aria-labelledby': 0, + 'aria-owns': 0, + 'aria-posinset': 0, + 'aria-rowcount': 0, + 'aria-rowindex': 0, + 'aria-rowspan': 0, + 'aria-setsize': 0 +}; + +var warnedProperties = {}; +var rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'); +var rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$'); + +function validateProperty(tagName, name) { + { + if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) { + return true; + } + + if (rARIACamel.test(name)) { + var ariaName = 'aria-' + name.slice(4).toLowerCase(); + var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM + // DOM properties, then it is an invalid aria-* attribute. + + if (correctName == null) { + error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name); + + warnedProperties[name] = true; + return true; + } // aria-* attributes should be lowercase; suggest the lowercase version. + + + if (name !== correctName) { + error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName); + + warnedProperties[name] = true; + return true; + } + } + + if (rARIA.test(name)) { + var lowerCasedName = name.toLowerCase(); + var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM + // DOM properties, then it is an invalid aria-* attribute. + + if (standardName == null) { + warnedProperties[name] = true; + return false; + } // aria-* attributes should be lowercase; suggest the lowercase version. + + + if (name !== standardName) { + error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName); + + warnedProperties[name] = true; + return true; + } + } + } + + return true; +} + +function warnInvalidARIAProps(type, props) { + { + var invalidProps = []; + + for (var key in props) { + var isValid = validateProperty(type, key); + + if (!isValid) { + invalidProps.push(key); + } + } + + var unknownPropString = invalidProps.map(function (prop) { + return '`' + prop + '`'; + }).join(', '); + + if (invalidProps.length === 1) { + error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type); + } else if (invalidProps.length > 1) { + error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type); + } + } +} + +function validateProperties(type, props) { + if (isCustomComponent(type, props)) { + return; + } + + warnInvalidARIAProps(type, props); +} + +var didWarnValueNull = false; +function validateProperties$1(type, props) { + { + if (type !== 'input' && type !== 'textarea' && type !== 'select') { + return; + } + + if (props != null && props.value === null && !didWarnValueNull) { + didWarnValueNull = true; + + if (type === 'select' && props.multiple) { + error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type); + } else { + error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type); + } + } + } +} + +// When adding attributes to the HTML or SVG allowed attribute list, be sure to +// also add them to this module to ensure casing and incorrect name +// warnings. +var possibleStandardNames = { + // HTML + accept: 'accept', + acceptcharset: 'acceptCharset', + 'accept-charset': 'acceptCharset', + accesskey: 'accessKey', + action: 'action', + allowfullscreen: 'allowFullScreen', + alt: 'alt', + as: 'as', + async: 'async', + autocapitalize: 'autoCapitalize', + autocomplete: 'autoComplete', + autocorrect: 'autoCorrect', + autofocus: 'autoFocus', + autoplay: 'autoPlay', + autosave: 'autoSave', + capture: 'capture', + cellpadding: 'cellPadding', + cellspacing: 'cellSpacing', + challenge: 'challenge', + charset: 'charSet', + checked: 'checked', + children: 'children', + cite: 'cite', + class: 'className', + classid: 'classID', + classname: 'className', + cols: 'cols', + colspan: 'colSpan', + content: 'content', + contenteditable: 'contentEditable', + contextmenu: 'contextMenu', + controls: 'controls', + controlslist: 'controlsList', + coords: 'coords', + crossorigin: 'crossOrigin', + dangerouslysetinnerhtml: 'dangerouslySetInnerHTML', + data: 'data', + datetime: 'dateTime', + default: 'default', + defaultchecked: 'defaultChecked', + defaultvalue: 'defaultValue', + defer: 'defer', + dir: 'dir', + disabled: 'disabled', + disablepictureinpicture: 'disablePictureInPicture', + disableremoteplayback: 'disableRemotePlayback', + download: 'download', + draggable: 'draggable', + enctype: 'encType', + enterkeyhint: 'enterKeyHint', + for: 'htmlFor', + form: 'form', + formmethod: 'formMethod', + formaction: 'formAction', + formenctype: 'formEncType', + formnovalidate: 'formNoValidate', + formtarget: 'formTarget', + frameborder: 'frameBorder', + headers: 'headers', + height: 'height', + hidden: 'hidden', + high: 'high', + href: 'href', + hreflang: 'hrefLang', + htmlfor: 'htmlFor', + httpequiv: 'httpEquiv', + 'http-equiv': 'httpEquiv', + icon: 'icon', + id: 'id', + imagesizes: 'imageSizes', + imagesrcset: 'imageSrcSet', + innerhtml: 'innerHTML', + inputmode: 'inputMode', + integrity: 'integrity', + is: 'is', + itemid: 'itemID', + itemprop: 'itemProp', + itemref: 'itemRef', + itemscope: 'itemScope', + itemtype: 'itemType', + keyparams: 'keyParams', + keytype: 'keyType', + kind: 'kind', + label: 'label', + lang: 'lang', + list: 'list', + loop: 'loop', + low: 'low', + manifest: 'manifest', + marginwidth: 'marginWidth', + marginheight: 'marginHeight', + max: 'max', + maxlength: 'maxLength', + media: 'media', + mediagroup: 'mediaGroup', + method: 'method', + min: 'min', + minlength: 'minLength', + multiple: 'multiple', + muted: 'muted', + name: 'name', + nomodule: 'noModule', + nonce: 'nonce', + novalidate: 'noValidate', + open: 'open', + optimum: 'optimum', + pattern: 'pattern', + placeholder: 'placeholder', + playsinline: 'playsInline', + poster: 'poster', + preload: 'preload', + profile: 'profile', + radiogroup: 'radioGroup', + readonly: 'readOnly', + referrerpolicy: 'referrerPolicy', + rel: 'rel', + required: 'required', + reversed: 'reversed', + role: 'role', + rows: 'rows', + rowspan: 'rowSpan', + sandbox: 'sandbox', + scope: 'scope', + scoped: 'scoped', + scrolling: 'scrolling', + seamless: 'seamless', + selected: 'selected', + shape: 'shape', + size: 'size', + sizes: 'sizes', + span: 'span', + spellcheck: 'spellCheck', + src: 'src', + srcdoc: 'srcDoc', + srclang: 'srcLang', + srcset: 'srcSet', + start: 'start', + step: 'step', + style: 'style', + summary: 'summary', + tabindex: 'tabIndex', + target: 'target', + title: 'title', + type: 'type', + usemap: 'useMap', + value: 'value', + width: 'width', + wmode: 'wmode', + wrap: 'wrap', + // SVG + about: 'about', + accentheight: 'accentHeight', + 'accent-height': 'accentHeight', + accumulate: 'accumulate', + additive: 'additive', + alignmentbaseline: 'alignmentBaseline', + 'alignment-baseline': 'alignmentBaseline', + allowreorder: 'allowReorder', + alphabetic: 'alphabetic', + amplitude: 'amplitude', + arabicform: 'arabicForm', + 'arabic-form': 'arabicForm', + ascent: 'ascent', + attributename: 'attributeName', + attributetype: 'attributeType', + autoreverse: 'autoReverse', + azimuth: 'azimuth', + basefrequency: 'baseFrequency', + baselineshift: 'baselineShift', + 'baseline-shift': 'baselineShift', + baseprofile: 'baseProfile', + bbox: 'bbox', + begin: 'begin', + bias: 'bias', + by: 'by', + calcmode: 'calcMode', + capheight: 'capHeight', + 'cap-height': 'capHeight', + clip: 'clip', + clippath: 'clipPath', + 'clip-path': 'clipPath', + clippathunits: 'clipPathUnits', + cliprule: 'clipRule', + 'clip-rule': 'clipRule', + color: 'color', + colorinterpolation: 'colorInterpolation', + 'color-interpolation': 'colorInterpolation', + colorinterpolationfilters: 'colorInterpolationFilters', + 'color-interpolation-filters': 'colorInterpolationFilters', + colorprofile: 'colorProfile', + 'color-profile': 'colorProfile', + colorrendering: 'colorRendering', + 'color-rendering': 'colorRendering', + contentscripttype: 'contentScriptType', + contentstyletype: 'contentStyleType', + cursor: 'cursor', + cx: 'cx', + cy: 'cy', + d: 'd', + datatype: 'datatype', + decelerate: 'decelerate', + descent: 'descent', + diffuseconstant: 'diffuseConstant', + direction: 'direction', + display: 'display', + divisor: 'divisor', + dominantbaseline: 'dominantBaseline', + 'dominant-baseline': 'dominantBaseline', + dur: 'dur', + dx: 'dx', + dy: 'dy', + edgemode: 'edgeMode', + elevation: 'elevation', + enablebackground: 'enableBackground', + 'enable-background': 'enableBackground', + end: 'end', + exponent: 'exponent', + externalresourcesrequired: 'externalResourcesRequired', + fill: 'fill', + fillopacity: 'fillOpacity', + 'fill-opacity': 'fillOpacity', + fillrule: 'fillRule', + 'fill-rule': 'fillRule', + filter: 'filter', + filterres: 'filterRes', + filterunits: 'filterUnits', + floodopacity: 'floodOpacity', + 'flood-opacity': 'floodOpacity', + floodcolor: 'floodColor', + 'flood-color': 'floodColor', + focusable: 'focusable', + fontfamily: 'fontFamily', + 'font-family': 'fontFamily', + fontsize: 'fontSize', + 'font-size': 'fontSize', + fontsizeadjust: 'fontSizeAdjust', + 'font-size-adjust': 'fontSizeAdjust', + fontstretch: 'fontStretch', + 'font-stretch': 'fontStretch', + fontstyle: 'fontStyle', + 'font-style': 'fontStyle', + fontvariant: 'fontVariant', + 'font-variant': 'fontVariant', + fontweight: 'fontWeight', + 'font-weight': 'fontWeight', + format: 'format', + from: 'from', + fx: 'fx', + fy: 'fy', + g1: 'g1', + g2: 'g2', + glyphname: 'glyphName', + 'glyph-name': 'glyphName', + glyphorientationhorizontal: 'glyphOrientationHorizontal', + 'glyph-orientation-horizontal': 'glyphOrientationHorizontal', + glyphorientationvertical: 'glyphOrientationVertical', + 'glyph-orientation-vertical': 'glyphOrientationVertical', + glyphref: 'glyphRef', + gradienttransform: 'gradientTransform', + gradientunits: 'gradientUnits', + hanging: 'hanging', + horizadvx: 'horizAdvX', + 'horiz-adv-x': 'horizAdvX', + horizoriginx: 'horizOriginX', + 'horiz-origin-x': 'horizOriginX', + ideographic: 'ideographic', + imagerendering: 'imageRendering', + 'image-rendering': 'imageRendering', + in2: 'in2', + in: 'in', + inlist: 'inlist', + intercept: 'intercept', + k1: 'k1', + k2: 'k2', + k3: 'k3', + k4: 'k4', + k: 'k', + kernelmatrix: 'kernelMatrix', + kernelunitlength: 'kernelUnitLength', + kerning: 'kerning', + keypoints: 'keyPoints', + keysplines: 'keySplines', + keytimes: 'keyTimes', + lengthadjust: 'lengthAdjust', + letterspacing: 'letterSpacing', + 'letter-spacing': 'letterSpacing', + lightingcolor: 'lightingColor', + 'lighting-color': 'lightingColor', + limitingconeangle: 'limitingConeAngle', + local: 'local', + markerend: 'markerEnd', + 'marker-end': 'markerEnd', + markerheight: 'markerHeight', + markermid: 'markerMid', + 'marker-mid': 'markerMid', + markerstart: 'markerStart', + 'marker-start': 'markerStart', + markerunits: 'markerUnits', + markerwidth: 'markerWidth', + mask: 'mask', + maskcontentunits: 'maskContentUnits', + maskunits: 'maskUnits', + mathematical: 'mathematical', + mode: 'mode', + numoctaves: 'numOctaves', + offset: 'offset', + opacity: 'opacity', + operator: 'operator', + order: 'order', + orient: 'orient', + orientation: 'orientation', + origin: 'origin', + overflow: 'overflow', + overlineposition: 'overlinePosition', + 'overline-position': 'overlinePosition', + overlinethickness: 'overlineThickness', + 'overline-thickness': 'overlineThickness', + paintorder: 'paintOrder', + 'paint-order': 'paintOrder', + panose1: 'panose1', + 'panose-1': 'panose1', + pathlength: 'pathLength', + patterncontentunits: 'patternContentUnits', + patterntransform: 'patternTransform', + patternunits: 'patternUnits', + pointerevents: 'pointerEvents', + 'pointer-events': 'pointerEvents', + points: 'points', + pointsatx: 'pointsAtX', + pointsaty: 'pointsAtY', + pointsatz: 'pointsAtZ', + prefix: 'prefix', + preservealpha: 'preserveAlpha', + preserveaspectratio: 'preserveAspectRatio', + primitiveunits: 'primitiveUnits', + property: 'property', + r: 'r', + radius: 'radius', + refx: 'refX', + refy: 'refY', + renderingintent: 'renderingIntent', + 'rendering-intent': 'renderingIntent', + repeatcount: 'repeatCount', + repeatdur: 'repeatDur', + requiredextensions: 'requiredExtensions', + requiredfeatures: 'requiredFeatures', + resource: 'resource', + restart: 'restart', + result: 'result', + results: 'results', + rotate: 'rotate', + rx: 'rx', + ry: 'ry', + scale: 'scale', + security: 'security', + seed: 'seed', + shaperendering: 'shapeRendering', + 'shape-rendering': 'shapeRendering', + slope: 'slope', + spacing: 'spacing', + specularconstant: 'specularConstant', + specularexponent: 'specularExponent', + speed: 'speed', + spreadmethod: 'spreadMethod', + startoffset: 'startOffset', + stddeviation: 'stdDeviation', + stemh: 'stemh', + stemv: 'stemv', + stitchtiles: 'stitchTiles', + stopcolor: 'stopColor', + 'stop-color': 'stopColor', + stopopacity: 'stopOpacity', + 'stop-opacity': 'stopOpacity', + strikethroughposition: 'strikethroughPosition', + 'strikethrough-position': 'strikethroughPosition', + strikethroughthickness: 'strikethroughThickness', + 'strikethrough-thickness': 'strikethroughThickness', + string: 'string', + stroke: 'stroke', + strokedasharray: 'strokeDasharray', + 'stroke-dasharray': 'strokeDasharray', + strokedashoffset: 'strokeDashoffset', + 'stroke-dashoffset': 'strokeDashoffset', + strokelinecap: 'strokeLinecap', + 'stroke-linecap': 'strokeLinecap', + strokelinejoin: 'strokeLinejoin', + 'stroke-linejoin': 'strokeLinejoin', + strokemiterlimit: 'strokeMiterlimit', + 'stroke-miterlimit': 'strokeMiterlimit', + strokewidth: 'strokeWidth', + 'stroke-width': 'strokeWidth', + strokeopacity: 'strokeOpacity', + 'stroke-opacity': 'strokeOpacity', + suppresscontenteditablewarning: 'suppressContentEditableWarning', + suppresshydrationwarning: 'suppressHydrationWarning', + surfacescale: 'surfaceScale', + systemlanguage: 'systemLanguage', + tablevalues: 'tableValues', + targetx: 'targetX', + targety: 'targetY', + textanchor: 'textAnchor', + 'text-anchor': 'textAnchor', + textdecoration: 'textDecoration', + 'text-decoration': 'textDecoration', + textlength: 'textLength', + textrendering: 'textRendering', + 'text-rendering': 'textRendering', + to: 'to', + transform: 'transform', + typeof: 'typeof', + u1: 'u1', + u2: 'u2', + underlineposition: 'underlinePosition', + 'underline-position': 'underlinePosition', + underlinethickness: 'underlineThickness', + 'underline-thickness': 'underlineThickness', + unicode: 'unicode', + unicodebidi: 'unicodeBidi', + 'unicode-bidi': 'unicodeBidi', + unicoderange: 'unicodeRange', + 'unicode-range': 'unicodeRange', + unitsperem: 'unitsPerEm', + 'units-per-em': 'unitsPerEm', + unselectable: 'unselectable', + valphabetic: 'vAlphabetic', + 'v-alphabetic': 'vAlphabetic', + values: 'values', + vectoreffect: 'vectorEffect', + 'vector-effect': 'vectorEffect', + version: 'version', + vertadvy: 'vertAdvY', + 'vert-adv-y': 'vertAdvY', + vertoriginx: 'vertOriginX', + 'vert-origin-x': 'vertOriginX', + vertoriginy: 'vertOriginY', + 'vert-origin-y': 'vertOriginY', + vhanging: 'vHanging', + 'v-hanging': 'vHanging', + videographic: 'vIdeographic', + 'v-ideographic': 'vIdeographic', + viewbox: 'viewBox', + viewtarget: 'viewTarget', + visibility: 'visibility', + vmathematical: 'vMathematical', + 'v-mathematical': 'vMathematical', + vocab: 'vocab', + widths: 'widths', + wordspacing: 'wordSpacing', + 'word-spacing': 'wordSpacing', + writingmode: 'writingMode', + 'writing-mode': 'writingMode', + x1: 'x1', + x2: 'x2', + x: 'x', + xchannelselector: 'xChannelSelector', + xheight: 'xHeight', + 'x-height': 'xHeight', + xlinkactuate: 'xlinkActuate', + 'xlink:actuate': 'xlinkActuate', + xlinkarcrole: 'xlinkArcrole', + 'xlink:arcrole': 'xlinkArcrole', + xlinkhref: 'xlinkHref', + 'xlink:href': 'xlinkHref', + xlinkrole: 'xlinkRole', + 'xlink:role': 'xlinkRole', + xlinkshow: 'xlinkShow', + 'xlink:show': 'xlinkShow', + xlinktitle: 'xlinkTitle', + 'xlink:title': 'xlinkTitle', + xlinktype: 'xlinkType', + 'xlink:type': 'xlinkType', + xmlbase: 'xmlBase', + 'xml:base': 'xmlBase', + xmllang: 'xmlLang', + 'xml:lang': 'xmlLang', + xmlns: 'xmlns', + 'xml:space': 'xmlSpace', + xmlnsxlink: 'xmlnsXlink', + 'xmlns:xlink': 'xmlnsXlink', + xmlspace: 'xmlSpace', + y1: 'y1', + y2: 'y2', + y: 'y', + ychannelselector: 'yChannelSelector', + z: 'z', + zoomandpan: 'zoomAndPan' +}; + +var validateProperty$1 = function () {}; + +{ + var warnedProperties$1 = {}; + var EVENT_NAME_REGEX = /^on./; + var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/; + var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'); + var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$'); + + validateProperty$1 = function (tagName, name, value, eventRegistry) { + if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) { + return true; + } + + var lowerCasedName = name.toLowerCase(); + + if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') { + error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.'); + + warnedProperties$1[name] = true; + return true; + } // We can't rely on the event system being injected on the server. + + + if (eventRegistry != null) { + var registrationNameDependencies = eventRegistry.registrationNameDependencies, + possibleRegistrationNames = eventRegistry.possibleRegistrationNames; + + if (registrationNameDependencies.hasOwnProperty(name)) { + return true; + } + + var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null; + + if (registrationName != null) { + error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName); + + warnedProperties$1[name] = true; + return true; + } + + if (EVENT_NAME_REGEX.test(name)) { + error('Unknown event handler property `%s`. It will be ignored.', name); + + warnedProperties$1[name] = true; + return true; + } + } else if (EVENT_NAME_REGEX.test(name)) { + // If no event plugins have been injected, we are in a server environment. + // So we can't tell if the event name is correct for sure, but we can filter + // out known bad ones like `onclick`. We can't suggest a specific replacement though. + if (INVALID_EVENT_NAME_REGEX.test(name)) { + error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name); + } + + warnedProperties$1[name] = true; + return true; + } // Let the ARIA attribute hook validate ARIA attributes + + + if (rARIA$1.test(name) || rARIACamel$1.test(name)) { + return true; + } + + if (lowerCasedName === 'innerhtml') { + error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.'); + + warnedProperties$1[name] = true; + return true; + } + + if (lowerCasedName === 'aria') { + error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.'); + + warnedProperties$1[name] = true; + return true; + } + + if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') { + error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value); + + warnedProperties$1[name] = true; + return true; + } + + if (typeof value === 'number' && isNaN(value)) { + error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name); + + warnedProperties$1[name] = true; + return true; + } + + var propertyInfo = getPropertyInfo(name); + var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config. + + if (possibleStandardNames.hasOwnProperty(lowerCasedName)) { + var standardName = possibleStandardNames[lowerCasedName]; + + if (standardName !== name) { + error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName); + + warnedProperties$1[name] = true; + return true; + } + } else if (!isReserved && name !== lowerCasedName) { + // Unknown attributes should have lowercase casing since that's how they + // will be cased anyway with server rendering. + error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName); + + warnedProperties$1[name] = true; + return true; + } + + if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) { + if (value) { + error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.', value, name, name, value, name); + } else { + error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name); + } + + warnedProperties$1[name] = true; + return true; + } // Now that we've validated casing, do not validate + // data types for reserved props + + + if (isReserved) { + return true; + } // Warn when a known attribute is a bad type + + + if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) { + warnedProperties$1[name] = true; + return false; + } // Warn when passing the strings 'false' or 'true' into a boolean prop + + + if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) { + error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string "false".', name, value); + + warnedProperties$1[name] = true; + return true; + } + + return true; + }; +} + +var warnUnknownProperties = function (type, props, eventRegistry) { + { + var unknownProps = []; + + for (var key in props) { + var isValid = validateProperty$1(type, key, props[key], eventRegistry); + + if (!isValid) { + unknownProps.push(key); + } + } + + var unknownPropString = unknownProps.map(function (prop) { + return '`' + prop + '`'; + }).join(', '); + + if (unknownProps.length === 1) { + error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type); + } else if (unknownProps.length > 1) { + error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type); + } + } +}; + +function validateProperties$2(type, props, eventRegistry) { + if (isCustomComponent(type, props)) { + return; + } + + warnUnknownProperties(type, props, eventRegistry); +} + +var warnValidStyle = function () {}; + +{ + // 'msTransform' is correct, but the other prefixes should be capitalized + var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/; + var msPattern = /^-ms-/; + var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon + + var badStyleValueWithSemicolonPattern = /;\s*$/; + var warnedStyleNames = {}; + var warnedStyleValues = {}; + var warnedForNaNValue = false; + var warnedForInfinityValue = false; + + var camelize = function (string) { + return string.replace(hyphenPattern, function (_, character) { + return character.toUpperCase(); + }); + }; + + var warnHyphenatedStyleName = function (name) { + if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { + return; + } + + warnedStyleNames[name] = true; + + error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests + // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix + // is converted to lowercase `ms`. + camelize(name.replace(msPattern, 'ms-'))); + }; + + var warnBadVendoredStyleName = function (name) { + if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { + return; + } + + warnedStyleNames[name] = true; + + error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1)); + }; + + var warnStyleValueWithSemicolon = function (name, value) { + if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) { + return; + } + + warnedStyleValues[value] = true; + + error("Style property values shouldn't contain a semicolon. " + 'Try "%s: %s" instead.', name, value.replace(badStyleValueWithSemicolonPattern, '')); + }; + + var warnStyleValueIsNaN = function (name, value) { + if (warnedForNaNValue) { + return; + } + + warnedForNaNValue = true; + + error('`NaN` is an invalid value for the `%s` css style property.', name); + }; + + var warnStyleValueIsInfinity = function (name, value) { + if (warnedForInfinityValue) { + return; + } + + warnedForInfinityValue = true; + + error('`Infinity` is an invalid value for the `%s` css style property.', name); + }; + + warnValidStyle = function (name, value) { + if (name.indexOf('-') > -1) { + warnHyphenatedStyleName(name); + } else if (badVendoredStyleNamePattern.test(name)) { + warnBadVendoredStyleName(name); + } else if (badStyleValueWithSemicolonPattern.test(value)) { + warnStyleValueWithSemicolon(name, value); + } + + if (typeof value === 'number') { + if (isNaN(value)) { + warnStyleValueIsNaN(name, value); + } else if (!isFinite(value)) { + warnStyleValueIsInfinity(name, value); + } + } + }; +} + +var warnValidStyle$1 = warnValidStyle; + +// code copied and modified from escape-html +var matchHtmlRegExp = /["'&<>]/; +/** + * Escapes special characters and HTML entities in a given html string. + * + * @param {string} string HTML string to escape for later insertion + * @return {string} + * @public + */ + +function escapeHtml(string) { + { + checkHtmlStringCoercion(string); + } + + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + // " + escape = '"'; + break; + + case 38: + // & + escape = '&'; + break; + + case 39: + // ' + escape = '''; // modified from escape-html; used to be ''' + + break; + + case 60: + // < + escape = '<'; + break; + + case 62: + // > + escape = '>'; + break; + + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index ? html + str.substring(lastIndex, index) : html; +} // end code copied and modified from escape-html + +/** + * Escapes text to prevent scripting attacks. + * + * @param {*} text Text value to escape. + * @return {string} An escaped string. + */ + + +function escapeTextForBrowser(text) { + if (typeof text === 'boolean' || typeof text === 'number') { + // this shortcircuit helps perf for types that we know will never have + // special characters, especially given that this function is used often + // for numeric dom ids. + return '' + text; + } + + return escapeHtml(text); +} + +var uppercasePattern = /([A-Z])/g; +var msPattern$1 = /^ms-/; +/** + * Hyphenates a camelcased CSS property name, for example: + * + * > hyphenateStyleName('backgroundColor') + * < "background-color" + * > hyphenateStyleName('MozTransition') + * < "-moz-transition" + * > hyphenateStyleName('msTransition') + * < "-ms-transition" + * + * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix + * is converted to `-ms-`. + */ + +function hyphenateStyleName(name) { + return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern$1, '-ms-'); +} + +// and any newline or tab are filtered out as if they're not part of the URL. +// https://url.spec.whatwg.org/#url-parsing +// Tab or newline are defined as \r\n\t: +// https://infra.spec.whatwg.org/#ascii-tab-or-newline +// A C0 control is a code point in the range \u0000 NULL to \u001F +// INFORMATION SEPARATOR ONE, inclusive: +// https://infra.spec.whatwg.org/#c0-control-or-space + +/* eslint-disable max-len */ + +var isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i; +var didWarn = false; + +function sanitizeURL(url) { + { + if (!didWarn && isJavaScriptProtocol.test(url)) { + didWarn = true; + + error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url)); + } + } +} + +var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare + +function isArray(a) { + return isArrayImpl(a); +} + +var startInlineScript = stringToPrecomputedChunk(''); +var startScriptSrc = stringToPrecomputedChunk(''); +/** + * This escaping function is designed to work with bootstrapScriptContent only. + * because we know we are escaping the entire script. We can avoid for instance + * escaping html comment string sequences that are valid javascript as well because + * if there are no sebsequent '); +function writeCompletedSegmentInstruction(destination, responseState, contentSegmentID) { + writeChunk(destination, responseState.startInlineScript); + + if (!responseState.sentCompleteSegmentFunction) { + // The first time we write this, we'll need to include the full implementation. + responseState.sentCompleteSegmentFunction = true; + writeChunk(destination, completeSegmentScript1Full); + } else { + // Future calls can just reuse the same function. + writeChunk(destination, completeSegmentScript1Partial); + } + + writeChunk(destination, responseState.segmentPrefix); + var formattedID = stringToChunk(contentSegmentID.toString(16)); + writeChunk(destination, formattedID); + writeChunk(destination, completeSegmentScript2); + writeChunk(destination, responseState.placeholderPrefix); + writeChunk(destination, formattedID); + return writeChunkAndReturn(destination, completeSegmentScript3); +} +var completeBoundaryScript1Full = stringToPrecomputedChunk(completeBoundaryFunction + ';$RC("'); +var completeBoundaryScript1Partial = stringToPrecomputedChunk('$RC("'); +var completeBoundaryScript2 = stringToPrecomputedChunk('","'); +var completeBoundaryScript3 = stringToPrecomputedChunk('")'); +function writeCompletedBoundaryInstruction(destination, responseState, boundaryID, contentSegmentID) { + writeChunk(destination, responseState.startInlineScript); + + if (!responseState.sentCompleteBoundaryFunction) { + // The first time we write this, we'll need to include the full implementation. + responseState.sentCompleteBoundaryFunction = true; + writeChunk(destination, completeBoundaryScript1Full); + } else { + // Future calls can just reuse the same function. + writeChunk(destination, completeBoundaryScript1Partial); + } + + if (boundaryID === null) { + throw new Error('An ID must have been assigned before we can complete the boundary.'); + } + + var formattedContentID = stringToChunk(contentSegmentID.toString(16)); + writeChunk(destination, boundaryID); + writeChunk(destination, completeBoundaryScript2); + writeChunk(destination, responseState.segmentPrefix); + writeChunk(destination, formattedContentID); + return writeChunkAndReturn(destination, completeBoundaryScript3); +} +var clientRenderScript1Full = stringToPrecomputedChunk(clientRenderFunction + ';$RX("'); +var clientRenderScript1Partial = stringToPrecomputedChunk('$RX("'); +var clientRenderScript1A = stringToPrecomputedChunk('"'); +var clientRenderScript2 = stringToPrecomputedChunk(')'); +var clientRenderErrorScriptArgInterstitial = stringToPrecomputedChunk(','); +function writeClientRenderBoundaryInstruction(destination, responseState, boundaryID, errorDigest, errorMessage, errorComponentStack) { + writeChunk(destination, responseState.startInlineScript); + + if (!responseState.sentClientRenderFunction) { + // The first time we write this, we'll need to include the full implementation. + responseState.sentClientRenderFunction = true; + writeChunk(destination, clientRenderScript1Full); + } else { + // Future calls can just reuse the same function. + writeChunk(destination, clientRenderScript1Partial); + } + + if (boundaryID === null) { + throw new Error('An ID must have been assigned before we can complete the boundary.'); + } + + writeChunk(destination, boundaryID); + writeChunk(destination, clientRenderScript1A); + + if (errorDigest || errorMessage || errorComponentStack) { + writeChunk(destination, clientRenderErrorScriptArgInterstitial); + writeChunk(destination, stringToChunk(escapeJSStringsForInstructionScripts(errorDigest || ''))); + } + + if (errorMessage || errorComponentStack) { + writeChunk(destination, clientRenderErrorScriptArgInterstitial); + writeChunk(destination, stringToChunk(escapeJSStringsForInstructionScripts(errorMessage || ''))); + } + + if (errorComponentStack) { + writeChunk(destination, clientRenderErrorScriptArgInterstitial); + writeChunk(destination, stringToChunk(escapeJSStringsForInstructionScripts(errorComponentStack))); + } + + return writeChunkAndReturn(destination, clientRenderScript2); +} +var regexForJSStringsInScripts = /[<\u2028\u2029]/g; + +function escapeJSStringsForInstructionScripts(input) { + var escaped = JSON.stringify(input); + return escaped.replace(regexForJSStringsInScripts, function (match) { + switch (match) { + // santizing breaking out of strings and script tags + case '<': + return "\\u003c"; + + case "\u2028": + return "\\u2028"; + + case "\u2029": + return "\\u2029"; + + default: + { + // eslint-disable-next-line react-internal/prod-error-codes + throw new Error('escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React'); + } + } + }); +} + +function createResponseState$1(generateStaticMarkup, identifierPrefix) { + var responseState = createResponseState(identifierPrefix, undefined); + return { + // Keep this in sync with ReactDOMServerFormatConfig + bootstrapChunks: responseState.bootstrapChunks, + startInlineScript: responseState.startInlineScript, + placeholderPrefix: responseState.placeholderPrefix, + segmentPrefix: responseState.segmentPrefix, + boundaryPrefix: responseState.boundaryPrefix, + idPrefix: responseState.idPrefix, + nextSuspenseID: responseState.nextSuspenseID, + sentCompleteSegmentFunction: responseState.sentCompleteSegmentFunction, + sentCompleteBoundaryFunction: responseState.sentCompleteBoundaryFunction, + sentClientRenderFunction: responseState.sentClientRenderFunction, + // This is an extra field for the legacy renderer + generateStaticMarkup: generateStaticMarkup + }; +} +function createRootFormatContext() { + return { + insertionMode: HTML_MODE, + // We skip the root mode because we don't want to emit the DOCTYPE in legacy mode. + selectedValue: null + }; +} +function pushTextInstance$1(target, text, responseState, textEmbedded) { + if (responseState.generateStaticMarkup) { + target.push(stringToChunk(escapeTextForBrowser(text))); + return false; + } else { + return pushTextInstance(target, text, responseState, textEmbedded); + } +} +function pushSegmentFinale$1(target, responseState, lastPushedText, textEmbedded) { + if (responseState.generateStaticMarkup) { + return; + } else { + return pushSegmentFinale(target, responseState, lastPushedText, textEmbedded); + } +} +function writeStartCompletedSuspenseBoundary$1(destination, responseState) { + if (responseState.generateStaticMarkup) { + // A completed boundary is done and doesn't need a representation in the HTML + // if we're not going to be hydrating it. + return true; + } + + return writeStartCompletedSuspenseBoundary(destination); +} +function writeStartClientRenderedSuspenseBoundary$1(destination, responseState, // flushing these error arguments are not currently supported in this legacy streaming format. +errorDigest, errorMessage, errorComponentStack) { + if (responseState.generateStaticMarkup) { + // A client rendered boundary is done and doesn't need a representation in the HTML + // since we'll never hydrate it. This is arguably an error in static generation. + return true; + } + + return writeStartClientRenderedSuspenseBoundary(destination, responseState, errorDigest, errorMessage, errorComponentStack); +} +function writeEndCompletedSuspenseBoundary$1(destination, responseState) { + if (responseState.generateStaticMarkup) { + return true; + } + + return writeEndCompletedSuspenseBoundary(destination); +} +function writeEndClientRenderedSuspenseBoundary$1(destination, responseState) { + if (responseState.generateStaticMarkup) { + return true; + } + + return writeEndClientRenderedSuspenseBoundary(destination); +} + +var assign = Object.assign; + +// ATTENTION +// When adding new symbols to this file, +// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' +// The Symbol used to tag the ReactElement-like types. +var REACT_ELEMENT_TYPE = Symbol.for('react.element'); +var REACT_PORTAL_TYPE = Symbol.for('react.portal'); +var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment'); +var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode'); +var REACT_PROFILER_TYPE = Symbol.for('react.profiler'); +var REACT_PROVIDER_TYPE = Symbol.for('react.provider'); +var REACT_CONTEXT_TYPE = Symbol.for('react.context'); +var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref'); +var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense'); +var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list'); +var REACT_MEMO_TYPE = Symbol.for('react.memo'); +var REACT_LAZY_TYPE = Symbol.for('react.lazy'); +var REACT_SCOPE_TYPE = Symbol.for('react.scope'); +var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode'); +var REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden'); +var REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED = Symbol.for('react.default_value'); +var MAYBE_ITERATOR_SYMBOL = Symbol.iterator; +var FAUX_ITERATOR_SYMBOL = '@@iterator'; +function getIteratorFn(maybeIterable) { + if (maybeIterable === null || typeof maybeIterable !== 'object') { + return null; + } + + var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; + + if (typeof maybeIterator === 'function') { + return maybeIterator; + } + + return null; +} + +function getWrappedName(outerType, innerType, wrapperName) { + var displayName = outerType.displayName; + + if (displayName) { + return displayName; + } + + var functionName = innerType.displayName || innerType.name || ''; + return functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName; +} // Keep in sync with react-reconciler/getComponentNameFromFiber + + +function getContextName(type) { + return type.displayName || 'Context'; +} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead. + + +function getComponentNameFromType(type) { + if (type == null) { + // Host root, text node or just invalid type. + return null; + } + + { + if (typeof type.tag === 'number') { + error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.'); + } + } + + if (typeof type === 'function') { + return type.displayName || type.name || null; + } + + if (typeof type === 'string') { + return type; + } + + switch (type) { + case REACT_FRAGMENT_TYPE: + return 'Fragment'; + + case REACT_PORTAL_TYPE: + return 'Portal'; + + case REACT_PROFILER_TYPE: + return 'Profiler'; + + case REACT_STRICT_MODE_TYPE: + return 'StrictMode'; + + case REACT_SUSPENSE_TYPE: + return 'Suspense'; + + case REACT_SUSPENSE_LIST_TYPE: + return 'SuspenseList'; + + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_CONTEXT_TYPE: + var context = type; + return getContextName(context) + '.Consumer'; + + case REACT_PROVIDER_TYPE: + var provider = type; + return getContextName(provider._context) + '.Provider'; + + case REACT_FORWARD_REF_TYPE: + return getWrappedName(type, type.render, 'ForwardRef'); + + case REACT_MEMO_TYPE: + var outerName = type.displayName || null; + + if (outerName !== null) { + return outerName; + } + + return getComponentNameFromType(type.type) || 'Memo'; + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + return getComponentNameFromType(init(payload)); + } catch (x) { + return null; + } + } + + // eslint-disable-next-line no-fallthrough + } + } + + return null; +} + +// Helpers to patch console.logs to avoid logging during side-effect free +// replaying on render function. This currently only patches the object +// lazily which won't cover if the log function was extracted eagerly. +// We could also eagerly patch the method. +var disabledDepth = 0; +var prevLog; +var prevInfo; +var prevWarn; +var prevError; +var prevGroup; +var prevGroupCollapsed; +var prevGroupEnd; + +function disabledLog() {} + +disabledLog.__reactDisabledLog = true; +function disableLogs() { + { + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + prevLog = console.log; + prevInfo = console.info; + prevWarn = console.warn; + prevError = console.error; + prevGroup = console.group; + prevGroupCollapsed = console.groupCollapsed; + prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099 + + var props = { + configurable: true, + enumerable: true, + value: disabledLog, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + info: props, + log: props, + warn: props, + error: props, + group: props, + groupCollapsed: props, + groupEnd: props + }); + /* eslint-enable react-internal/no-production-logging */ + } + + disabledDepth++; + } +} +function reenableLogs() { + { + disabledDepth--; + + if (disabledDepth === 0) { + /* eslint-disable react-internal/no-production-logging */ + var props = { + configurable: true, + enumerable: true, + writable: true + }; // $FlowFixMe Flow thinks console is immutable. + + Object.defineProperties(console, { + log: assign({}, props, { + value: prevLog + }), + info: assign({}, props, { + value: prevInfo + }), + warn: assign({}, props, { + value: prevWarn + }), + error: assign({}, props, { + value: prevError + }), + group: assign({}, props, { + value: prevGroup + }), + groupCollapsed: assign({}, props, { + value: prevGroupCollapsed + }), + groupEnd: assign({}, props, { + value: prevGroupEnd + }) + }); + /* eslint-enable react-internal/no-production-logging */ + } + + if (disabledDepth < 0) { + error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.'); + } + } +} + +var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher; +var prefix; +function describeBuiltInComponentFrame(name, source, ownerFn) { + { + if (prefix === undefined) { + // Extract the VM specific prefix used by each line. + try { + throw Error(); + } catch (x) { + var match = x.stack.trim().match(/\n( *(at )?)/); + prefix = match && match[1] || ''; + } + } // We use the prefix to ensure our stacks line up with native stack frames. + + + return '\n' + prefix + name; + } +} +var reentry = false; +var componentFrameCache; + +{ + var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; + componentFrameCache = new PossiblyWeakMap(); +} + +function describeNativeComponentFrame(fn, construct) { + // If something asked for a stack inside a fake render, it should get ignored. + if ( !fn || reentry) { + return ''; + } + + { + var frame = componentFrameCache.get(fn); + + if (frame !== undefined) { + return frame; + } + } + + var control; + reentry = true; + var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined. + + Error.prepareStackTrace = undefined; + var previousDispatcher; + + { + previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function + // for warnings. + + ReactCurrentDispatcher.current = null; + disableLogs(); + } + + try { + // This should throw. + if (construct) { + // Something should be setting the props in the constructor. + var Fake = function () { + throw Error(); + }; // $FlowFixMe + + + Object.defineProperty(Fake.prototype, 'props', { + set: function () { + // We use a throwing setter instead of frozen or non-writable props + // because that won't throw in a non-strict mode function. + throw Error(); + } + }); + + if (typeof Reflect === 'object' && Reflect.construct) { + // We construct a different control for this case to include any extra + // frames added by the construct call. + try { + Reflect.construct(Fake, []); + } catch (x) { + control = x; + } + + Reflect.construct(fn, [], Fake); + } else { + try { + Fake.call(); + } catch (x) { + control = x; + } + + fn.call(Fake.prototype); + } + } else { + try { + throw Error(); + } catch (x) { + control = x; + } + + fn(); + } + } catch (sample) { + // This is inlined manually because closure doesn't do it for us. + if (sample && control && typeof sample.stack === 'string') { + // This extracts the first frame from the sample that isn't also in the control. + // Skipping one frame that we assume is the frame that calls the two. + var sampleLines = sample.stack.split('\n'); + var controlLines = control.stack.split('\n'); + var s = sampleLines.length - 1; + var c = controlLines.length - 1; + + while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) { + // We expect at least one stack frame to be shared. + // Typically this will be the root most one. However, stack frames may be + // cut off due to maximum stack limits. In this case, one maybe cut off + // earlier than the other. We assume that the sample is longer or the same + // and there for cut off earlier. So we should find the root most frame in + // the sample somewhere in the control. + c--; + } + + for (; s >= 1 && c >= 0; s--, c--) { + // Next we find the first one that isn't the same which should be the + // frame that called our sample function and the control. + if (sampleLines[s] !== controlLines[c]) { + // In V8, the first line is describing the message but other VMs don't. + // If we're about to return the first line, and the control is also on the same + // line, that's a pretty good indicator that our sample threw at same line as + // the control. I.e. before we entered the sample frame. So we ignore this result. + // This can happen if you passed a class to function component, or non-function. + if (s !== 1 || c !== 1) { + do { + s--; + c--; // We may still have similar intermediate frames from the construct call. + // The next one that isn't the same should be our match though. + + if (c < 0 || sampleLines[s] !== controlLines[c]) { + // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. + var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled "" + // but we have a user-provided "displayName" + // splice it in to make the stack more readable. + + + if (fn.displayName && _frame.includes('')) { + _frame = _frame.replace('', fn.displayName); + } + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, _frame); + } + } // Return the line we found. + + + return _frame; + } + } while (s >= 1 && c >= 0); + } + + break; + } + } + } + } finally { + reentry = false; + + { + ReactCurrentDispatcher.current = previousDispatcher; + reenableLogs(); + } + + Error.prepareStackTrace = previousPrepareStackTrace; + } // Fallback to just using the name if we couldn't make it throw. + + + var name = fn ? fn.displayName || fn.name : ''; + var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ''; + + { + if (typeof fn === 'function') { + componentFrameCache.set(fn, syntheticFrame); + } + } + + return syntheticFrame; +} + +function describeClassComponentFrame(ctor, source, ownerFn) { + { + return describeNativeComponentFrame(ctor, true); + } +} +function describeFunctionComponentFrame(fn, source, ownerFn) { + { + return describeNativeComponentFrame(fn, false); + } +} + +function shouldConstruct(Component) { + var prototype = Component.prototype; + return !!(prototype && prototype.isReactComponent); +} + +function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { + + if (type == null) { + return ''; + } + + if (typeof type === 'function') { + { + return describeNativeComponentFrame(type, shouldConstruct(type)); + } + } + + if (typeof type === 'string') { + return describeBuiltInComponentFrame(type); + } + + switch (type) { + case REACT_SUSPENSE_TYPE: + return describeBuiltInComponentFrame('Suspense'); + + case REACT_SUSPENSE_LIST_TYPE: + return describeBuiltInComponentFrame('SuspenseList'); + } + + if (typeof type === 'object') { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + return describeFunctionComponentFrame(type.render); + + case REACT_MEMO_TYPE: + // Memo may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); + + case REACT_LAZY_TYPE: + { + var lazyComponent = type; + var payload = lazyComponent._payload; + var init = lazyComponent._init; + + try { + // Lazy may contain any component type so we recursively resolve it. + return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); + } catch (x) {} + } + } + } + + return ''; +} + +var loggedTypeFailures = {}; +var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; + +function setCurrentlyValidatingElement(element) { + { + if (element) { + var owner = element._owner; + var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); + ReactDebugCurrentFrame.setExtraStackFrame(stack); + } else { + ReactDebugCurrentFrame.setExtraStackFrame(null); + } + } +} + +function checkPropTypes(typeSpecs, values, location, componentName, element) { + { + // $FlowFixMe This is okay but Flow doesn't know it. + var has = Function.call.bind(hasOwnProperty); + + for (var typeSpecName in typeSpecs) { + if (has(typeSpecs, typeSpecName)) { + var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to + // fail the render phase where it didn't fail before. So we log it. + // After these have been cleaned up, we'll let them throw. + + try { + // This is intentionally an invariant that gets caught. It's the same + // behavior as without this statement except with a better message. + if (typeof typeSpecs[typeSpecName] !== 'function') { + // eslint-disable-next-line react-internal/prod-error-codes + var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'); + err.name = 'Invariant Violation'; + throw err; + } + + error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'); + } catch (ex) { + error$1 = ex; + } + + if (error$1 && !(error$1 instanceof Error)) { + setCurrentlyValidatingElement(element); + + error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1); + + setCurrentlyValidatingElement(null); + } + + if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { + // Only monitor this failure once because there tends to be a lot of the + // same error. + loggedTypeFailures[error$1.message] = true; + setCurrentlyValidatingElement(element); + + error('Failed %s type: %s', location, error$1.message); + + setCurrentlyValidatingElement(null); + } + } + } + } +} + +var warnedAboutMissingGetChildContext; + +{ + warnedAboutMissingGetChildContext = {}; +} + +var emptyContextObject = {}; + +{ + Object.freeze(emptyContextObject); +} + +function getMaskedContext(type, unmaskedContext) { + { + var contextTypes = type.contextTypes; + + if (!contextTypes) { + return emptyContextObject; + } + + var context = {}; + + for (var key in contextTypes) { + context[key] = unmaskedContext[key]; + } + + { + var name = getComponentNameFromType(type) || 'Unknown'; + checkPropTypes(contextTypes, context, 'context', name); + } + + return context; + } +} +function processChildContext(instance, type, parentContext, childContextTypes) { + { + // TODO (bvaughn) Replace this behavior with an invariant() in the future. + // It has only been added in Fiber to match the (unintentional) behavior in Stack. + if (typeof instance.getChildContext !== 'function') { + { + var componentName = getComponentNameFromType(type) || 'Unknown'; + + if (!warnedAboutMissingGetChildContext[componentName]) { + warnedAboutMissingGetChildContext[componentName] = true; + + error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName); + } + } + + return parentContext; + } + + var childContext = instance.getChildContext(); + + for (var contextKey in childContext) { + if (!(contextKey in childContextTypes)) { + throw new Error((getComponentNameFromType(type) || 'Unknown') + ".getChildContext(): key \"" + contextKey + "\" is not defined in childContextTypes."); + } + } + + { + var name = getComponentNameFromType(type) || 'Unknown'; + checkPropTypes(childContextTypes, childContext, 'child context', name); + } + + return assign({}, parentContext, childContext); + } +} + +var rendererSigil; + +{ + // Use this to detect multiple renderers using the same context + rendererSigil = {}; +} // Used to store the parent path of all context overrides in a shared linked list. +// Forming a reverse tree. + + +var rootContextSnapshot = null; // We assume that this runtime owns the "current" field on all ReactContext instances. +// This global (actually thread local) state represents what state all those "current", +// fields are currently in. + +var currentActiveSnapshot = null; + +function popNode(prev) { + { + prev.context._currentValue2 = prev.parentValue; + } +} + +function pushNode(next) { + { + next.context._currentValue2 = next.value; + } +} + +function popToNearestCommonAncestor(prev, next) { + if (prev === next) ; else { + popNode(prev); + var parentPrev = prev.parent; + var parentNext = next.parent; + + if (parentPrev === null) { + if (parentNext !== null) { + throw new Error('The stacks must reach the root at the same time. This is a bug in React.'); + } + } else { + if (parentNext === null) { + throw new Error('The stacks must reach the root at the same time. This is a bug in React.'); + } + + popToNearestCommonAncestor(parentPrev, parentNext); + } // On the way back, we push the new ones that weren't common. + + + pushNode(next); + } +} + +function popAllPrevious(prev) { + popNode(prev); + var parentPrev = prev.parent; + + if (parentPrev !== null) { + popAllPrevious(parentPrev); + } +} + +function pushAllNext(next) { + var parentNext = next.parent; + + if (parentNext !== null) { + pushAllNext(parentNext); + } + + pushNode(next); +} + +function popPreviousToCommonLevel(prev, next) { + popNode(prev); + var parentPrev = prev.parent; + + if (parentPrev === null) { + throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.'); + } + + if (parentPrev.depth === next.depth) { + // We found the same level. Now we just need to find a shared ancestor. + popToNearestCommonAncestor(parentPrev, next); + } else { + // We must still be deeper. + popPreviousToCommonLevel(parentPrev, next); + } +} + +function popNextToCommonLevel(prev, next) { + var parentNext = next.parent; + + if (parentNext === null) { + throw new Error('The depth must equal at least at zero before reaching the root. This is a bug in React.'); + } + + if (prev.depth === parentNext.depth) { + // We found the same level. Now we just need to find a shared ancestor. + popToNearestCommonAncestor(prev, parentNext); + } else { + // We must still be deeper. + popNextToCommonLevel(prev, parentNext); + } + + pushNode(next); +} // Perform context switching to the new snapshot. +// To make it cheap to read many contexts, while not suspending, we make the switch eagerly by +// updating all the context's current values. That way reads, always just read the current value. +// At the cost of updating contexts even if they're never read by this subtree. + + +function switchContext(newSnapshot) { + // The basic algorithm we need to do is to pop back any contexts that are no longer on the stack. + // We also need to update any new contexts that are now on the stack with the deepest value. + // The easiest way to update new contexts is to just reapply them in reverse order from the + // perspective of the backpointers. To avoid allocating a lot when switching, we use the stack + // for that. Therefore this algorithm is recursive. + // 1) First we pop which ever snapshot tree was deepest. Popping old contexts as we go. + // 2) Then we find the nearest common ancestor from there. Popping old contexts as we go. + // 3) Then we reapply new contexts on the way back up the stack. + var prev = currentActiveSnapshot; + var next = newSnapshot; + + if (prev !== next) { + if (prev === null) { + // $FlowFixMe: This has to be non-null since it's not equal to prev. + pushAllNext(next); + } else if (next === null) { + popAllPrevious(prev); + } else if (prev.depth === next.depth) { + popToNearestCommonAncestor(prev, next); + } else if (prev.depth > next.depth) { + popPreviousToCommonLevel(prev, next); + } else { + popNextToCommonLevel(prev, next); + } + + currentActiveSnapshot = next; + } +} +function pushProvider(context, nextValue) { + var prevValue; + + { + prevValue = context._currentValue2; + context._currentValue2 = nextValue; + + { + if (context._currentRenderer2 !== undefined && context._currentRenderer2 !== null && context._currentRenderer2 !== rendererSigil) { + error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.'); + } + + context._currentRenderer2 = rendererSigil; + } + } + + var prevNode = currentActiveSnapshot; + var newNode = { + parent: prevNode, + depth: prevNode === null ? 0 : prevNode.depth + 1, + context: context, + parentValue: prevValue, + value: nextValue + }; + currentActiveSnapshot = newNode; + return newNode; +} +function popProvider(context) { + var prevSnapshot = currentActiveSnapshot; + + if (prevSnapshot === null) { + throw new Error('Tried to pop a Context at the root of the app. This is a bug in React.'); + } + + { + if (prevSnapshot.context !== context) { + error('The parent context is not the expected context. This is probably a bug in React.'); + } + } + + { + var _value = prevSnapshot.parentValue; + + if (_value === REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED) { + prevSnapshot.context._currentValue2 = prevSnapshot.context._defaultValue; + } else { + prevSnapshot.context._currentValue2 = _value; + } + + { + if (context._currentRenderer2 !== undefined && context._currentRenderer2 !== null && context._currentRenderer2 !== rendererSigil) { + error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.'); + } + + context._currentRenderer2 = rendererSigil; + } + } + + return currentActiveSnapshot = prevSnapshot.parent; +} +function getActiveContext() { + return currentActiveSnapshot; +} +function readContext(context) { + var value = context._currentValue2; + return value; +} + +/** + * `ReactInstanceMap` maintains a mapping from a public facing stateful + * instance (key) and the internal representation (value). This allows public + * methods to accept the user facing instance as an argument and map them back + * to internal methods. + * + * Note that this module is currently shared and assumed to be stateless. + * If this becomes an actual Map, that will break. + */ +function get(key) { + return key._reactInternals; +} +function set(key, value) { + key._reactInternals = value; +} + +var didWarnAboutNoopUpdateForComponent = {}; +var didWarnAboutDeprecatedWillMount = {}; +var didWarnAboutUninitializedState; +var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate; +var didWarnAboutLegacyLifecyclesAndDerivedState; +var didWarnAboutUndefinedDerivedState; +var warnOnUndefinedDerivedState; +var warnOnInvalidCallback; +var didWarnAboutDirectlyAssigningPropsToState; +var didWarnAboutContextTypeAndContextTypes; +var didWarnAboutInvalidateContextType; + +{ + didWarnAboutUninitializedState = new Set(); + didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set(); + didWarnAboutLegacyLifecyclesAndDerivedState = new Set(); + didWarnAboutDirectlyAssigningPropsToState = new Set(); + didWarnAboutUndefinedDerivedState = new Set(); + didWarnAboutContextTypeAndContextTypes = new Set(); + didWarnAboutInvalidateContextType = new Set(); + var didWarnOnInvalidCallback = new Set(); + + warnOnInvalidCallback = function (callback, callerName) { + if (callback === null || typeof callback === 'function') { + return; + } + + var key = callerName + '_' + callback; + + if (!didWarnOnInvalidCallback.has(key)) { + didWarnOnInvalidCallback.add(key); + + error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback); + } + }; + + warnOnUndefinedDerivedState = function (type, partialState) { + if (partialState === undefined) { + var componentName = getComponentNameFromType(type) || 'Component'; + + if (!didWarnAboutUndefinedDerivedState.has(componentName)) { + didWarnAboutUndefinedDerivedState.add(componentName); + + error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName); + } + } + }; +} + +function warnNoop(publicInstance, callerName) { + { + var _constructor = publicInstance.constructor; + var componentName = _constructor && getComponentNameFromType(_constructor) || 'ReactClass'; + var warningKey = componentName + '.' + callerName; + + if (didWarnAboutNoopUpdateForComponent[warningKey]) { + return; + } + + error('%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op.\n\nPlease check the code for the %s component.', callerName, callerName, componentName); + + didWarnAboutNoopUpdateForComponent[warningKey] = true; + } +} + +var classComponentUpdater = { + isMounted: function (inst) { + return false; + }, + enqueueSetState: function (inst, payload, callback) { + var internals = get(inst); + + if (internals.queue === null) { + warnNoop(inst, 'setState'); + } else { + internals.queue.push(payload); + + { + if (callback !== undefined && callback !== null) { + warnOnInvalidCallback(callback, 'setState'); + } + } + } + }, + enqueueReplaceState: function (inst, payload, callback) { + var internals = get(inst); + internals.replace = true; + internals.queue = [payload]; + + { + if (callback !== undefined && callback !== null) { + warnOnInvalidCallback(callback, 'setState'); + } + } + }, + enqueueForceUpdate: function (inst, callback) { + var internals = get(inst); + + if (internals.queue === null) { + warnNoop(inst, 'forceUpdate'); + } else { + { + if (callback !== undefined && callback !== null) { + warnOnInvalidCallback(callback, 'setState'); + } + } + } + } +}; + +function applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, prevState, nextProps) { + var partialState = getDerivedStateFromProps(nextProps, prevState); + + { + warnOnUndefinedDerivedState(ctor, partialState); + } // Merge the partial state and the previous state. + + + var newState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState); + return newState; +} + +function constructClassInstance(ctor, props, maskedLegacyContext) { + var context = emptyContextObject; + var contextType = ctor.contextType; + + { + if ('contextType' in ctor) { + var isValid = // Allow null for conditional declaration + contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a + + if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) { + didWarnAboutInvalidateContextType.add(ctor); + var addendum = ''; + + if (contextType === undefined) { + addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.'; + } else if (typeof contextType !== 'object') { + addendum = ' However, it is set to a ' + typeof contextType + '.'; + } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) { + addendum = ' Did you accidentally pass the Context.Provider instead?'; + } else if (contextType._context !== undefined) { + // + addendum = ' Did you accidentally pass the Context.Consumer instead?'; + } else { + addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.'; + } + + error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentNameFromType(ctor) || 'Component', addendum); + } + } + } + + if (typeof contextType === 'object' && contextType !== null) { + context = readContext(contextType); + } else { + context = maskedLegacyContext; + } + + var instance = new ctor(props, context); + + { + if (typeof ctor.getDerivedStateFromProps === 'function' && (instance.state === null || instance.state === undefined)) { + var componentName = getComponentNameFromType(ctor) || 'Component'; + + if (!didWarnAboutUninitializedState.has(componentName)) { + didWarnAboutUninitializedState.add(componentName); + + error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName); + } + } // If new component APIs are defined, "unsafe" lifecycles won't be called. + // Warn about these lifecycles if they are present. + // Don't warn about react-lifecycles-compat polyfilled methods though. + + + if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') { + var foundWillMountName = null; + var foundWillReceivePropsName = null; + var foundWillUpdateName = null; + + if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) { + foundWillMountName = 'componentWillMount'; + } else if (typeof instance.UNSAFE_componentWillMount === 'function') { + foundWillMountName = 'UNSAFE_componentWillMount'; + } + + if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) { + foundWillReceivePropsName = 'componentWillReceiveProps'; + } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') { + foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps'; + } + + if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) { + foundWillUpdateName = 'componentWillUpdate'; + } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') { + foundWillUpdateName = 'UNSAFE_componentWillUpdate'; + } + + if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) { + var _componentName = getComponentNameFromType(ctor) || 'Component'; + + var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()'; + + if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) { + didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName); + + error('Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\n\n' + 'The above lifecycles should be removed. Learn more about this warning here:\n' + 'https://reactjs.org/link/unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? "\n " + foundWillMountName : '', foundWillReceivePropsName !== null ? "\n " + foundWillReceivePropsName : '', foundWillUpdateName !== null ? "\n " + foundWillUpdateName : ''); + } + } + } + } + + return instance; +} + +function checkClassInstance(instance, ctor, newProps) { + { + var name = getComponentNameFromType(ctor) || 'Component'; + var renderPresent = instance.render; + + if (!renderPresent) { + if (ctor.prototype && typeof ctor.prototype.render === 'function') { + error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name); + } else { + error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name); + } + } + + if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) { + error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name); + } + + if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) { + error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name); + } + + if (instance.propTypes) { + error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name); + } + + if (instance.contextType) { + error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name); + } + + { + if (instance.contextTypes) { + error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name); + } + + if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) { + didWarnAboutContextTypeAndContextTypes.add(ctor); + + error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name); + } + } + + if (typeof instance.componentShouldUpdate === 'function') { + error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name); + } + + if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') { + error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentNameFromType(ctor) || 'A pure component'); + } + + if (typeof instance.componentDidUnmount === 'function') { + error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name); + } + + if (typeof instance.componentDidReceiveProps === 'function') { + error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name); + } + + if (typeof instance.componentWillRecieveProps === 'function') { + error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name); + } + + if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') { + error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name); + } + + var hasMutatedProps = instance.props !== newProps; + + if (instance.props !== undefined && hasMutatedProps) { + error('%s(...): When calling super() in `%s`, make sure to pass ' + "up the same props that your component's constructor was passed.", name, name); + } + + if (instance.defaultProps) { + error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name); + } + + if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) { + didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor); + + error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentNameFromType(ctor)); + } + + if (typeof instance.getDerivedStateFromProps === 'function') { + error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name); + } + + if (typeof instance.getDerivedStateFromError === 'function') { + error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name); + } + + if (typeof ctor.getSnapshotBeforeUpdate === 'function') { + error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name); + } + + var _state = instance.state; + + if (_state && (typeof _state !== 'object' || isArray(_state))) { + error('%s.state: must be set to an object or null', name); + } + + if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') { + error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name); + } + } +} + +function callComponentWillMount(type, instance) { + var oldState = instance.state; + + if (typeof instance.componentWillMount === 'function') { + { + if ( instance.componentWillMount.__suppressDeprecationWarning !== true) { + var componentName = getComponentNameFromType(type) || 'Unknown'; + + if (!didWarnAboutDeprecatedWillMount[componentName]) { + warn( // keep this warning in sync with ReactStrictModeWarning.js + 'componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n' + '* Move code from componentWillMount to componentDidMount (preferred in most cases) ' + 'or the constructor.\n' + '\nPlease update the following components: %s', componentName); + + didWarnAboutDeprecatedWillMount[componentName] = true; + } + } + } + + instance.componentWillMount(); + } + + if (typeof instance.UNSAFE_componentWillMount === 'function') { + instance.UNSAFE_componentWillMount(); + } + + if (oldState !== instance.state) { + { + error('%s.componentWillMount(): Assigning directly to this.state is ' + "deprecated (except inside a component's " + 'constructor). Use setState instead.', getComponentNameFromType(type) || 'Component'); + } + + classComponentUpdater.enqueueReplaceState(instance, instance.state, null); + } +} + +function processUpdateQueue(internalInstance, inst, props, maskedLegacyContext) { + if (internalInstance.queue !== null && internalInstance.queue.length > 0) { + var oldQueue = internalInstance.queue; + var oldReplace = internalInstance.replace; + internalInstance.queue = null; + internalInstance.replace = false; + + if (oldReplace && oldQueue.length === 1) { + inst.state = oldQueue[0]; + } else { + var nextState = oldReplace ? oldQueue[0] : inst.state; + var dontMutate = true; + + for (var i = oldReplace ? 1 : 0; i < oldQueue.length; i++) { + var partial = oldQueue[i]; + var partialState = typeof partial === 'function' ? partial.call(inst, nextState, props, maskedLegacyContext) : partial; + + if (partialState != null) { + if (dontMutate) { + dontMutate = false; + nextState = assign({}, nextState, partialState); + } else { + assign(nextState, partialState); + } + } + } + + inst.state = nextState; + } + } else { + internalInstance.queue = null; + } +} // Invokes the mount life-cycles on a previously never rendered instance. + + +function mountClassInstance(instance, ctor, newProps, maskedLegacyContext) { + { + checkClassInstance(instance, ctor, newProps); + } + + var initialState = instance.state !== undefined ? instance.state : null; + instance.updater = classComponentUpdater; + instance.props = newProps; + instance.state = initialState; // We don't bother initializing the refs object on the server, since we're not going to resolve them anyway. + // The internal instance will be used to manage updates that happen during this mount. + + var internalInstance = { + queue: [], + replace: false + }; + set(instance, internalInstance); + var contextType = ctor.contextType; + + if (typeof contextType === 'object' && contextType !== null) { + instance.context = readContext(contextType); + } else { + instance.context = maskedLegacyContext; + } + + { + if (instance.state === newProps) { + var componentName = getComponentNameFromType(ctor) || 'Component'; + + if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) { + didWarnAboutDirectlyAssigningPropsToState.add(componentName); + + error('%s: It is not recommended to assign props directly to state ' + "because updates to props won't be reflected in state. " + 'In most cases, it is better to use props directly.', componentName); + } + } + } + + var getDerivedStateFromProps = ctor.getDerivedStateFromProps; + + if (typeof getDerivedStateFromProps === 'function') { + instance.state = applyDerivedStateFromProps(instance, ctor, getDerivedStateFromProps, initialState, newProps); + } // In order to support react-lifecycles-compat polyfilled components, + // Unsafe lifecycles should not be invoked for components using the new APIs. + + + if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) { + callComponentWillMount(ctor, instance); // If we had additional state updates during this life-cycle, let's + // process them now. + + processUpdateQueue(internalInstance, instance, newProps, maskedLegacyContext); + } +} + +// Ids are base 32 strings whose binary representation corresponds to the +// position of a node in a tree. +// Every time the tree forks into multiple children, we add additional bits to +// the left of the sequence that represent the position of the child within the +// current level of children. +// +// 00101 00010001011010101 +// ╰─┬─╯ ╰───────┬───────╯ +// Fork 5 of 20 Parent id +// +// The leading 0s are important. In the above example, you only need 3 bits to +// represent slot 5. However, you need 5 bits to represent all the forks at +// the current level, so we must account for the empty bits at the end. +// +// For this same reason, slots are 1-indexed instead of 0-indexed. Otherwise, +// the zeroth id at a level would be indistinguishable from its parent. +// +// If a node has only one child, and does not materialize an id (i.e. does not +// contain a useId hook), then we don't need to allocate any space in the +// sequence. It's treated as a transparent indirection. For example, these two +// trees produce the same ids: +// +// <> <> +// +// +// +// +// +// +// However, we cannot skip any node that materializes an id. Otherwise, a parent +// id that does not fork would be indistinguishable from its child id. For +// example, this tree does not fork, but the parent and child must have +// different ids. +// +// +// +// +// +// To handle this scenario, every time we materialize an id, we allocate a +// new level with a single slot. You can think of this as a fork with only one +// prong, or an array of children with length 1. +// +// It's possible for the size of the sequence to exceed 32 bits, the max +// size for bitwise operations. When this happens, we make more room by +// converting the right part of the id to a string and storing it in an overflow +// variable. We use a base 32 string representation, because 32 is the largest +// power of 2 that is supported by toString(). We want the base to be large so +// that the resulting ids are compact, and we want the base to be a power of 2 +// because every log2(base) bits corresponds to a single character, i.e. every +// log2(32) = 5 bits. That means we can lop bits off the end 5 at a time without +// affecting the final result. +var emptyTreeContext = { + id: 1, + overflow: '' +}; +function getTreeId(context) { + var overflow = context.overflow; + var idWithLeadingBit = context.id; + var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit); + return id.toString(32) + overflow; +} +function pushTreeContext(baseContext, totalChildren, index) { + var baseIdWithLeadingBit = baseContext.id; + var baseOverflow = baseContext.overflow; // The leftmost 1 marks the end of the sequence, non-inclusive. It's not part + // of the id; we use it to account for leading 0s. + + var baseLength = getBitLength(baseIdWithLeadingBit) - 1; + var baseId = baseIdWithLeadingBit & ~(1 << baseLength); + var slot = index + 1; + var length = getBitLength(totalChildren) + baseLength; // 30 is the max length we can store without overflowing, taking into + // consideration the leading 1 we use to mark the end of the sequence. + + if (length > 30) { + // We overflowed the bitwise-safe range. Fall back to slower algorithm. + // This branch assumes the length of the base id is greater than 5; it won't + // work for smaller ids, because you need 5 bits per character. + // + // We encode the id in multiple steps: first the base id, then the + // remaining digits. + // + // Each 5 bit sequence corresponds to a single base 32 character. So for + // example, if the current id is 23 bits long, we can convert 20 of those + // bits into a string of 4 characters, with 3 bits left over. + // + // First calculate how many bits in the base id represent a complete + // sequence of characters. + var numberOfOverflowBits = baseLength - baseLength % 5; // Then create a bitmask that selects only those bits. + + var newOverflowBits = (1 << numberOfOverflowBits) - 1; // Select the bits, and convert them to a base 32 string. + + var newOverflow = (baseId & newOverflowBits).toString(32); // Now we can remove those bits from the base id. + + var restOfBaseId = baseId >> numberOfOverflowBits; + var restOfBaseLength = baseLength - numberOfOverflowBits; // Finally, encode the rest of the bits using the normal algorithm. Because + // we made more room, this time it won't overflow. + + var restOfLength = getBitLength(totalChildren) + restOfBaseLength; + var restOfNewBits = slot << restOfBaseLength; + var id = restOfNewBits | restOfBaseId; + var overflow = newOverflow + baseOverflow; + return { + id: 1 << restOfLength | id, + overflow: overflow + }; + } else { + // Normal path + var newBits = slot << baseLength; + + var _id = newBits | baseId; + + var _overflow = baseOverflow; + return { + id: 1 << length | _id, + overflow: _overflow + }; + } +} + +function getBitLength(number) { + return 32 - clz32(number); +} + +function getLeadingBit(id) { + return 1 << getBitLength(id) - 1; +} // TODO: Math.clz32 is supported in Node 12+. Maybe we can drop the fallback. + + +var clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; // Count leading zeros. +// Based on: +// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32 + +var log = Math.log; +var LN2 = Math.LN2; + +function clz32Fallback(x) { + var asUint = x >>> 0; + + if (asUint === 0) { + return 32; + } + + return 31 - (log(asUint) / LN2 | 0) | 0; +} + +/** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ +function is(x, y) { + return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare + ; +} + +var objectIs = typeof Object.is === 'function' ? Object.is : is; + +var currentlyRenderingComponent = null; +var currentlyRenderingTask = null; +var firstWorkInProgressHook = null; +var workInProgressHook = null; // Whether the work-in-progress hook is a re-rendered hook + +var isReRender = false; // Whether an update was scheduled during the currently executing render pass. + +var didScheduleRenderPhaseUpdate = false; // Counts the number of useId hooks in this component + +var localIdCounter = 0; // Lazily created map of render-phase updates + +var renderPhaseUpdates = null; // Counter to prevent infinite loops. + +var numberOfReRenders = 0; +var RE_RENDER_LIMIT = 25; +var isInHookUserCodeInDev = false; // In DEV, this is the name of the currently executing primitive hook + +var currentHookNameInDev; + +function resolveCurrentlyRenderingComponent() { + if (currentlyRenderingComponent === null) { + throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\n' + '2. You might be breaking the Rules of Hooks\n' + '3. You might have more than one copy of React in the same app\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.'); + } + + { + if (isInHookUserCodeInDev) { + error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://reactjs.org/link/rules-of-hooks'); + } + } + + return currentlyRenderingComponent; +} + +function areHookInputsEqual(nextDeps, prevDeps) { + if (prevDeps === null) { + { + error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev); + } + + return false; + } + + { + // Don't bother comparing lengths in prod because these arrays should be + // passed inline. + if (nextDeps.length !== prevDeps.length) { + error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\n\n' + 'Previous: %s\n' + 'Incoming: %s', currentHookNameInDev, "[" + nextDeps.join(', ') + "]", "[" + prevDeps.join(', ') + "]"); + } + } + + for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) { + if (objectIs(nextDeps[i], prevDeps[i])) { + continue; + } + + return false; + } + + return true; +} + +function createHook() { + if (numberOfReRenders > 0) { + throw new Error('Rendered more hooks than during the previous render'); + } + + return { + memoizedState: null, + queue: null, + next: null + }; +} + +function createWorkInProgressHook() { + if (workInProgressHook === null) { + // This is the first hook in the list + if (firstWorkInProgressHook === null) { + isReRender = false; + firstWorkInProgressHook = workInProgressHook = createHook(); + } else { + // There's already a work-in-progress. Reuse it. + isReRender = true; + workInProgressHook = firstWorkInProgressHook; + } + } else { + if (workInProgressHook.next === null) { + isReRender = false; // Append to the end of the list + + workInProgressHook = workInProgressHook.next = createHook(); + } else { + // There's already a work-in-progress. Reuse it. + isReRender = true; + workInProgressHook = workInProgressHook.next; + } + } + + return workInProgressHook; +} + +function prepareToUseHooks(task, componentIdentity) { + currentlyRenderingComponent = componentIdentity; + currentlyRenderingTask = task; + + { + isInHookUserCodeInDev = false; + } // The following should have already been reset + // didScheduleRenderPhaseUpdate = false; + // localIdCounter = 0; + // firstWorkInProgressHook = null; + // numberOfReRenders = 0; + // renderPhaseUpdates = null; + // workInProgressHook = null; + + + localIdCounter = 0; +} +function finishHooks(Component, props, children, refOrContext) { + // This must be called after every function component to prevent hooks from + // being used in classes. + while (didScheduleRenderPhaseUpdate) { + // Updates were scheduled during the render phase. They are stored in + // the `renderPhaseUpdates` map. Call the component again, reusing the + // work-in-progress hooks and applying the additional updates on top. Keep + // restarting until no more updates are scheduled. + didScheduleRenderPhaseUpdate = false; + localIdCounter = 0; + numberOfReRenders += 1; // Start over from the beginning of the list + + workInProgressHook = null; + children = Component(props, refOrContext); + } + + resetHooksState(); + return children; +} +function checkDidRenderIdHook() { + // This should be called immediately after every finishHooks call. + // Conceptually, it's part of the return value of finishHooks; it's only a + // separate function to avoid using an array tuple. + var didRenderIdHook = localIdCounter !== 0; + return didRenderIdHook; +} // Reset the internal hooks state if an error occurs while rendering a component + +function resetHooksState() { + { + isInHookUserCodeInDev = false; + } + + currentlyRenderingComponent = null; + currentlyRenderingTask = null; + didScheduleRenderPhaseUpdate = false; + firstWorkInProgressHook = null; + numberOfReRenders = 0; + renderPhaseUpdates = null; + workInProgressHook = null; +} + +function readContext$1(context) { + { + if (isInHookUserCodeInDev) { + error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().'); + } + } + + return readContext(context); +} + +function useContext(context) { + { + currentHookNameInDev = 'useContext'; + } + + resolveCurrentlyRenderingComponent(); + return readContext(context); +} + +function basicStateReducer(state, action) { + // $FlowFixMe: Flow doesn't like mixed types + return typeof action === 'function' ? action(state) : action; +} + +function useState(initialState) { + { + currentHookNameInDev = 'useState'; + } + + return useReducer(basicStateReducer, // useReducer has a special case to support lazy useState initializers + initialState); +} +function useReducer(reducer, initialArg, init) { + { + if (reducer !== basicStateReducer) { + currentHookNameInDev = 'useReducer'; + } + } + + currentlyRenderingComponent = resolveCurrentlyRenderingComponent(); + workInProgressHook = createWorkInProgressHook(); + + if (isReRender) { + // This is a re-render. Apply the new render phase updates to the previous + // current hook. + var queue = workInProgressHook.queue; + var dispatch = queue.dispatch; + + if (renderPhaseUpdates !== null) { + // Render phase updates are stored in a map of queue -> linked list + var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue); + + if (firstRenderPhaseUpdate !== undefined) { + renderPhaseUpdates.delete(queue); + var newState = workInProgressHook.memoizedState; + var update = firstRenderPhaseUpdate; + + do { + // Process this render phase update. We don't have to check the + // priority because it will always be the same as the current + // render's. + var action = update.action; + + { + isInHookUserCodeInDev = true; + } + + newState = reducer(newState, action); + + { + isInHookUserCodeInDev = false; + } + + update = update.next; + } while (update !== null); + + workInProgressHook.memoizedState = newState; + return [newState, dispatch]; + } + } + + return [workInProgressHook.memoizedState, dispatch]; + } else { + { + isInHookUserCodeInDev = true; + } + + var initialState; + + if (reducer === basicStateReducer) { + // Special case for `useState`. + initialState = typeof initialArg === 'function' ? initialArg() : initialArg; + } else { + initialState = init !== undefined ? init(initialArg) : initialArg; + } + + { + isInHookUserCodeInDev = false; + } + + workInProgressHook.memoizedState = initialState; + + var _queue = workInProgressHook.queue = { + last: null, + dispatch: null + }; + + var _dispatch = _queue.dispatch = dispatchAction.bind(null, currentlyRenderingComponent, _queue); + + return [workInProgressHook.memoizedState, _dispatch]; + } +} + +function useMemo(nextCreate, deps) { + currentlyRenderingComponent = resolveCurrentlyRenderingComponent(); + workInProgressHook = createWorkInProgressHook(); + var nextDeps = deps === undefined ? null : deps; + + if (workInProgressHook !== null) { + var prevState = workInProgressHook.memoizedState; + + if (prevState !== null) { + if (nextDeps !== null) { + var prevDeps = prevState[1]; + + if (areHookInputsEqual(nextDeps, prevDeps)) { + return prevState[0]; + } + } + } + } + + { + isInHookUserCodeInDev = true; + } + + var nextValue = nextCreate(); + + { + isInHookUserCodeInDev = false; + } + + workInProgressHook.memoizedState = [nextValue, nextDeps]; + return nextValue; +} + +function useRef(initialValue) { + currentlyRenderingComponent = resolveCurrentlyRenderingComponent(); + workInProgressHook = createWorkInProgressHook(); + var previousRef = workInProgressHook.memoizedState; + + if (previousRef === null) { + var ref = { + current: initialValue + }; + + { + Object.seal(ref); + } + + workInProgressHook.memoizedState = ref; + return ref; + } else { + return previousRef; + } +} + +function useLayoutEffect(create, inputs) { + { + currentHookNameInDev = 'useLayoutEffect'; + + error('useLayoutEffect does nothing on the server, because its effect cannot ' + "be encoded into the server renderer's output format. This will lead " + 'to a mismatch between the initial, non-hydrated UI and the intended ' + 'UI. To avoid this, useLayoutEffect should only be used in ' + 'components that render exclusively on the client. ' + 'See https://reactjs.org/link/uselayouteffect-ssr for common fixes.'); + } +} + +function dispatchAction(componentIdentity, queue, action) { + if (numberOfReRenders >= RE_RENDER_LIMIT) { + throw new Error('Too many re-renders. React limits the number of renders to prevent ' + 'an infinite loop.'); + } + + if (componentIdentity === currentlyRenderingComponent) { + // This is a render phase update. Stash it in a lazily-created map of + // queue -> linked list of updates. After this render pass, we'll restart + // and apply the stashed updates on top of the work-in-progress hook. + didScheduleRenderPhaseUpdate = true; + var update = { + action: action, + next: null + }; + + if (renderPhaseUpdates === null) { + renderPhaseUpdates = new Map(); + } + + var firstRenderPhaseUpdate = renderPhaseUpdates.get(queue); + + if (firstRenderPhaseUpdate === undefined) { + renderPhaseUpdates.set(queue, update); + } else { + // Append the update to the end of the list. + var lastRenderPhaseUpdate = firstRenderPhaseUpdate; + + while (lastRenderPhaseUpdate.next !== null) { + lastRenderPhaseUpdate = lastRenderPhaseUpdate.next; + } + + lastRenderPhaseUpdate.next = update; + } + } +} + +function useCallback(callback, deps) { + return useMemo(function () { + return callback; + }, deps); +} // TODO Decide on how to implement this hook for server rendering. +// If a mutation occurs during render, consider triggering a Suspense boundary +// and falling back to client rendering. + +function useMutableSource(source, getSnapshot, subscribe) { + resolveCurrentlyRenderingComponent(); + return getSnapshot(source._source); +} + +function useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { + if (getServerSnapshot === undefined) { + throw new Error('Missing getServerSnapshot, which is required for ' + 'server-rendered content. Will revert to client rendering.'); + } + + return getServerSnapshot(); +} + +function useDeferredValue(value) { + resolveCurrentlyRenderingComponent(); + return value; +} + +function unsupportedStartTransition() { + throw new Error('startTransition cannot be called during server rendering.'); +} + +function useTransition() { + resolveCurrentlyRenderingComponent(); + return [false, unsupportedStartTransition]; +} + +function useId() { + var task = currentlyRenderingTask; + var treeId = getTreeId(task.treeContext); + var responseState = currentResponseState; + + if (responseState === null) { + throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component.'); + } + + var localId = localIdCounter++; + return makeId(responseState, treeId, localId); +} + +function noop() {} + +var Dispatcher = { + readContext: readContext$1, + useContext: useContext, + useMemo: useMemo, + useReducer: useReducer, + useRef: useRef, + useState: useState, + useInsertionEffect: noop, + useLayoutEffect: useLayoutEffect, + useCallback: useCallback, + // useImperativeHandle is not run in the server environment + useImperativeHandle: noop, + // Effects are not run in the server environment. + useEffect: noop, + // Debugging effect + useDebugValue: noop, + useDeferredValue: useDeferredValue, + useTransition: useTransition, + useId: useId, + // Subscriptions are not setup in a server environment. + useMutableSource: useMutableSource, + useSyncExternalStore: useSyncExternalStore +}; + +var currentResponseState = null; +function setCurrentResponseState(responseState) { + currentResponseState = responseState; +} + +function getStackByComponentStackNode(componentStack) { + try { + var info = ''; + var node = componentStack; + + do { + switch (node.tag) { + case 0: + info += describeBuiltInComponentFrame(node.type, null, null); + break; + + case 1: + info += describeFunctionComponentFrame(node.type, null, null); + break; + + case 2: + info += describeClassComponentFrame(node.type, null, null); + break; + } + + node = node.parent; + } while (node); + + return info; + } catch (x) { + return '\nError generating stack: ' + x.message + '\n' + x.stack; + } +} + +var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher; +var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; +var PENDING = 0; +var COMPLETED = 1; +var FLUSHED = 2; +var ABORTED = 3; +var ERRORED = 4; +var OPEN = 0; +var CLOSING = 1; +var CLOSED = 2; +// This is a default heuristic for how to split up the HTML content into progressive +// loading. Our goal is to be able to display additional new content about every 500ms. +// Faster than that is unnecessary and should be throttled on the client. It also +// adds unnecessary overhead to do more splits. We don't know if it's a higher or lower +// end device but higher end suffer less from the overhead than lower end does from +// not getting small enough pieces. We error on the side of low end. +// We base this on low end 3G speeds which is about 500kbits per second. We assume +// that there can be a reasonable drop off from max bandwidth which leaves you with +// as little as 80%. We can receive half of that each 500ms - at best. In practice, +// a little bandwidth is lost to processing and contention - e.g. CSS and images that +// are downloaded along with the main content. So we estimate about half of that to be +// the lower end throughput. In other words, we expect that you can at least show +// about 12.5kb of content per 500ms. Not counting starting latency for the first +// paint. +// 500 * 1024 / 8 * .8 * 0.5 / 2 +var DEFAULT_PROGRESSIVE_CHUNK_SIZE = 12800; + +function defaultErrorHandler(error) { + console['error'](error); // Don't transform to our wrapper + + return null; +} + +function noop$1() {} + +function createRequest(children, responseState, rootFormatContext, progressiveChunkSize, onError, onAllReady, onShellReady, onShellError, onFatalError) { + var pingedTasks = []; + var abortSet = new Set(); + var request = { + destination: null, + responseState: responseState, + progressiveChunkSize: progressiveChunkSize === undefined ? DEFAULT_PROGRESSIVE_CHUNK_SIZE : progressiveChunkSize, + status: OPEN, + fatalError: null, + nextSegmentId: 0, + allPendingTasks: 0, + pendingRootTasks: 0, + completedRootSegment: null, + abortableTasks: abortSet, + pingedTasks: pingedTasks, + clientRenderedBoundaries: [], + completedBoundaries: [], + partialBoundaries: [], + onError: onError === undefined ? defaultErrorHandler : onError, + onAllReady: onAllReady === undefined ? noop$1 : onAllReady, + onShellReady: onShellReady === undefined ? noop$1 : onShellReady, + onShellError: onShellError === undefined ? noop$1 : onShellError, + onFatalError: onFatalError === undefined ? noop$1 : onFatalError + }; // This segment represents the root fallback. + + var rootSegment = createPendingSegment(request, 0, null, rootFormatContext, // Root segments are never embedded in Text on either edge + false, false); // There is no parent so conceptually, we're unblocked to flush this segment. + + rootSegment.parentFlushed = true; + var rootTask = createTask(request, children, null, rootSegment, abortSet, emptyContextObject, rootContextSnapshot, emptyTreeContext); + pingedTasks.push(rootTask); + return request; +} + +function pingTask(request, task) { + var pingedTasks = request.pingedTasks; + pingedTasks.push(task); + + if (pingedTasks.length === 1) { + scheduleWork(function () { + return performWork(request); + }); + } +} + +function createSuspenseBoundary(request, fallbackAbortableTasks) { + return { + id: UNINITIALIZED_SUSPENSE_BOUNDARY_ID, + rootSegmentID: -1, + parentFlushed: false, + pendingTasks: 0, + forceClientRender: false, + completedSegments: [], + byteSize: 0, + fallbackAbortableTasks: fallbackAbortableTasks, + errorDigest: null + }; +} + +function createTask(request, node, blockedBoundary, blockedSegment, abortSet, legacyContext, context, treeContext) { + request.allPendingTasks++; + + if (blockedBoundary === null) { + request.pendingRootTasks++; + } else { + blockedBoundary.pendingTasks++; + } + + var task = { + node: node, + ping: function () { + return pingTask(request, task); + }, + blockedBoundary: blockedBoundary, + blockedSegment: blockedSegment, + abortSet: abortSet, + legacyContext: legacyContext, + context: context, + treeContext: treeContext + }; + + { + task.componentStack = null; + } + + abortSet.add(task); + return task; +} + +function createPendingSegment(request, index, boundary, formatContext, lastPushedText, textEmbedded) { + return { + status: PENDING, + id: -1, + // lazily assigned later + index: index, + parentFlushed: false, + chunks: [], + children: [], + formatContext: formatContext, + boundary: boundary, + lastPushedText: lastPushedText, + textEmbedded: textEmbedded + }; +} // DEV-only global reference to the currently executing task + + +var currentTaskInDEV = null; + +function getCurrentStackInDEV() { + { + if (currentTaskInDEV === null || currentTaskInDEV.componentStack === null) { + return ''; + } + + return getStackByComponentStackNode(currentTaskInDEV.componentStack); + } +} + +function pushBuiltInComponentStackInDEV(task, type) { + { + task.componentStack = { + tag: 0, + parent: task.componentStack, + type: type + }; + } +} + +function pushFunctionComponentStackInDEV(task, type) { + { + task.componentStack = { + tag: 1, + parent: task.componentStack, + type: type + }; + } +} + +function pushClassComponentStackInDEV(task, type) { + { + task.componentStack = { + tag: 2, + parent: task.componentStack, + type: type + }; + } +} + +function popComponentStackInDEV(task) { + { + if (task.componentStack === null) { + error('Unexpectedly popped too many stack frames. This is a bug in React.'); + } else { + task.componentStack = task.componentStack.parent; + } + } +} // stash the component stack of an unwinding error until it is processed + + +var lastBoundaryErrorComponentStackDev = null; + +function captureBoundaryErrorDetailsDev(boundary, error) { + { + var errorMessage; + + if (typeof error === 'string') { + errorMessage = error; + } else if (error && typeof error.message === 'string') { + errorMessage = error.message; + } else { + // eslint-disable-next-line react-internal/safe-string-coercion + errorMessage = String(error); + } + + var errorComponentStack = lastBoundaryErrorComponentStackDev || getCurrentStackInDEV(); + lastBoundaryErrorComponentStackDev = null; + boundary.errorMessage = errorMessage; + boundary.errorComponentStack = errorComponentStack; + } +} + +function logRecoverableError(request, error) { + // If this callback errors, we intentionally let that error bubble up to become a fatal error + // so that someone fixes the error reporting instead of hiding it. + var errorDigest = request.onError(error); + + if (errorDigest != null && typeof errorDigest !== 'string') { + // eslint-disable-next-line react-internal/prod-error-codes + throw new Error("onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"" + typeof errorDigest + "\" instead"); + } + + return errorDigest; +} + +function fatalError(request, error) { + // This is called outside error handling code such as if the root errors outside + // a suspense boundary or if the root suspense boundary's fallback errors. + // It's also called if React itself or its host configs errors. + var onShellError = request.onShellError; + onShellError(error); + var onFatalError = request.onFatalError; + onFatalError(error); + + if (request.destination !== null) { + request.status = CLOSED; + closeWithError(request.destination, error); + } else { + request.status = CLOSING; + request.fatalError = error; + } +} + +function renderSuspenseBoundary(request, task, props) { + pushBuiltInComponentStackInDEV(task, 'Suspense'); + var parentBoundary = task.blockedBoundary; + var parentSegment = task.blockedSegment; // Each time we enter a suspense boundary, we split out into a new segment for + // the fallback so that we can later replace that segment with the content. + // This also lets us split out the main content even if it doesn't suspend, + // in case it ends up generating a large subtree of content. + + var fallback = props.fallback; + var content = props.children; + var fallbackAbortSet = new Set(); + var newBoundary = createSuspenseBoundary(request, fallbackAbortSet); + var insertionIndex = parentSegment.chunks.length; // The children of the boundary segment is actually the fallback. + + var boundarySegment = createPendingSegment(request, insertionIndex, newBoundary, parentSegment.formatContext, // boundaries never require text embedding at their edges because comment nodes bound them + false, false); + parentSegment.children.push(boundarySegment); // The parentSegment has a child Segment at this index so we reset the lastPushedText marker on the parent + + parentSegment.lastPushedText = false; // This segment is the actual child content. We can start rendering that immediately. + + var contentRootSegment = createPendingSegment(request, 0, null, parentSegment.formatContext, // boundaries never require text embedding at their edges because comment nodes bound them + false, false); // We mark the root segment as having its parent flushed. It's not really flushed but there is + // no parent segment so there's nothing to wait on. + + contentRootSegment.parentFlushed = true; // Currently this is running synchronously. We could instead schedule this to pingedTasks. + // I suspect that there might be some efficiency benefits from not creating the suspended task + // and instead just using the stack if possible. + // TODO: Call this directly instead of messing with saving and restoring contexts. + // We can reuse the current context and task to render the content immediately without + // context switching. We just need to temporarily switch which boundary and which segment + // we're writing to. If something suspends, it'll spawn new suspended task with that context. + + task.blockedBoundary = newBoundary; + task.blockedSegment = contentRootSegment; + + try { + // We use the safe form because we don't handle suspending here. Only error handling. + renderNode(request, task, content); + pushSegmentFinale$1(contentRootSegment.chunks, request.responseState, contentRootSegment.lastPushedText, contentRootSegment.textEmbedded); + contentRootSegment.status = COMPLETED; + queueCompletedSegment(newBoundary, contentRootSegment); + + if (newBoundary.pendingTasks === 0) { + // This must have been the last segment we were waiting on. This boundary is now complete. + // Therefore we won't need the fallback. We early return so that we don't have to create + // the fallback. + popComponentStackInDEV(task); + return; + } + } catch (error) { + contentRootSegment.status = ERRORED; + newBoundary.forceClientRender = true; + newBoundary.errorDigest = logRecoverableError(request, error); + + { + captureBoundaryErrorDetailsDev(newBoundary, error); + } // We don't need to decrement any task numbers because we didn't spawn any new task. + // We don't need to schedule any task because we know the parent has written yet. + // We do need to fallthrough to create the fallback though. + + } finally { + task.blockedBoundary = parentBoundary; + task.blockedSegment = parentSegment; + } // We create suspended task for the fallback because we don't want to actually work + // on it yet in case we finish the main content, so we queue for later. + + + var suspendedFallbackTask = createTask(request, fallback, parentBoundary, boundarySegment, fallbackAbortSet, task.legacyContext, task.context, task.treeContext); + + { + suspendedFallbackTask.componentStack = task.componentStack; + } // TODO: This should be queued at a separate lower priority queue so that we only work + // on preparing fallbacks if we don't have any more main content to task on. + + + request.pingedTasks.push(suspendedFallbackTask); + popComponentStackInDEV(task); +} + +function renderHostElement(request, task, type, props) { + pushBuiltInComponentStackInDEV(task, type); + var segment = task.blockedSegment; + var children = pushStartInstance(segment.chunks, type, props, request.responseState, segment.formatContext); + segment.lastPushedText = false; + var prevContext = segment.formatContext; + segment.formatContext = getChildFormatContext(prevContext, type, props); // We use the non-destructive form because if something suspends, we still + // need to pop back up and finish this subtree of HTML. + + renderNode(request, task, children); // We expect that errors will fatal the whole task and that we don't need + // the correct context. Therefore this is not in a finally. + + segment.formatContext = prevContext; + pushEndInstance(segment.chunks, type); + segment.lastPushedText = false; + popComponentStackInDEV(task); +} + +function shouldConstruct$1(Component) { + return Component.prototype && Component.prototype.isReactComponent; +} + +function renderWithHooks(request, task, Component, props, secondArg) { + var componentIdentity = {}; + prepareToUseHooks(task, componentIdentity); + var result = Component(props, secondArg); + return finishHooks(Component, props, result, secondArg); +} + +function finishClassComponent(request, task, instance, Component, props) { + var nextChildren = instance.render(); + + { + if (instance.props !== props) { + if (!didWarnAboutReassigningProps) { + error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentNameFromType(Component) || 'a component'); + } + + didWarnAboutReassigningProps = true; + } + } + + { + var childContextTypes = Component.childContextTypes; + + if (childContextTypes !== null && childContextTypes !== undefined) { + var previousContext = task.legacyContext; + var mergedContext = processChildContext(instance, Component, previousContext, childContextTypes); + task.legacyContext = mergedContext; + renderNodeDestructive(request, task, nextChildren); + task.legacyContext = previousContext; + return; + } + } + + renderNodeDestructive(request, task, nextChildren); +} + +function renderClassComponent(request, task, Component, props) { + pushClassComponentStackInDEV(task, Component); + var maskedContext = getMaskedContext(Component, task.legacyContext) ; + var instance = constructClassInstance(Component, props, maskedContext); + mountClassInstance(instance, Component, props, maskedContext); + finishClassComponent(request, task, instance, Component, props); + popComponentStackInDEV(task); +} + +var didWarnAboutBadClass = {}; +var didWarnAboutModulePatternComponent = {}; +var didWarnAboutContextTypeOnFunctionComponent = {}; +var didWarnAboutGetDerivedStateOnFunctionComponent = {}; +var didWarnAboutReassigningProps = false; +var didWarnAboutDefaultPropsOnFunctionComponent = {}; +var didWarnAboutGenerators = false; +var didWarnAboutMaps = false; +var hasWarnedAboutUsingContextAsConsumer = false; // This would typically be a function component but we still support module pattern +// components for some reason. + +function renderIndeterminateComponent(request, task, Component, props) { + var legacyContext; + + { + legacyContext = getMaskedContext(Component, task.legacyContext); + } + + pushFunctionComponentStackInDEV(task, Component); + + { + if (Component.prototype && typeof Component.prototype.render === 'function') { + var componentName = getComponentNameFromType(Component) || 'Unknown'; + + if (!didWarnAboutBadClass[componentName]) { + error("The <%s /> component appears to have a render method, but doesn't extend React.Component. " + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName); + + didWarnAboutBadClass[componentName] = true; + } + } + } + + var value = renderWithHooks(request, task, Component, props, legacyContext); + var hasId = checkDidRenderIdHook(); + + { + // Support for module components is deprecated and is removed behind a flag. + // Whether or not it would crash later, we want to show a good message in DEV first. + if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) { + var _componentName = getComponentNameFromType(Component) || 'Unknown'; + + if (!didWarnAboutModulePatternComponent[_componentName]) { + error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + "If you can't use a class try assigning the prototype on the function as a workaround. " + "`%s.prototype = React.Component.prototype`. Don't use an arrow function since it " + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName); + + didWarnAboutModulePatternComponent[_componentName] = true; + } + } + } + + if ( // Run these checks in production only if the flag is off. + // Eventually we'll delete this branch altogether. + typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) { + { + var _componentName2 = getComponentNameFromType(Component) || 'Unknown'; + + if (!didWarnAboutModulePatternComponent[_componentName2]) { + error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + "If you can't use a class try assigning the prototype on the function as a workaround. " + "`%s.prototype = React.Component.prototype`. Don't use an arrow function since it " + 'cannot be called with `new` by React.', _componentName2, _componentName2, _componentName2); + + didWarnAboutModulePatternComponent[_componentName2] = true; + } + } + + mountClassInstance(value, Component, props, legacyContext); + finishClassComponent(request, task, value, Component, props); + } else { + + { + validateFunctionComponentInDev(Component); + } // We're now successfully past this task, and we don't have to pop back to + // the previous task every again, so we can use the destructive recursive form. + + + if (hasId) { + // This component materialized an id. We treat this as its own level, with + // a single "child" slot. + var prevTreeContext = task.treeContext; + var totalChildren = 1; + var index = 0; + task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index); + + try { + renderNodeDestructive(request, task, value); + } finally { + task.treeContext = prevTreeContext; + } + } else { + renderNodeDestructive(request, task, value); + } + } + + popComponentStackInDEV(task); +} + +function validateFunctionComponentInDev(Component) { + { + if (Component) { + if (Component.childContextTypes) { + error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component'); + } + } + + if ( Component.defaultProps !== undefined) { + var componentName = getComponentNameFromType(Component) || 'Unknown'; + + if (!didWarnAboutDefaultPropsOnFunctionComponent[componentName]) { + error('%s: Support for defaultProps will be removed from function components ' + 'in a future major release. Use JavaScript default parameters instead.', componentName); + + didWarnAboutDefaultPropsOnFunctionComponent[componentName] = true; + } + } + + if (typeof Component.getDerivedStateFromProps === 'function') { + var _componentName3 = getComponentNameFromType(Component) || 'Unknown'; + + if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) { + error('%s: Function components do not support getDerivedStateFromProps.', _componentName3); + + didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true; + } + } + + if (typeof Component.contextType === 'object' && Component.contextType !== null) { + var _componentName4 = getComponentNameFromType(Component) || 'Unknown'; + + if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) { + error('%s: Function components do not support contextType.', _componentName4); + + didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true; + } + } + } +} + +function resolveDefaultProps(Component, baseProps) { + if (Component && Component.defaultProps) { + // Resolve default props. Taken from ReactElement + var props = assign({}, baseProps); + var defaultProps = Component.defaultProps; + + for (var propName in defaultProps) { + if (props[propName] === undefined) { + props[propName] = defaultProps[propName]; + } + } + + return props; + } + + return baseProps; +} + +function renderForwardRef(request, task, type, props, ref) { + pushFunctionComponentStackInDEV(task, type.render); + var children = renderWithHooks(request, task, type.render, props, ref); + var hasId = checkDidRenderIdHook(); + + if (hasId) { + // This component materialized an id. We treat this as its own level, with + // a single "child" slot. + var prevTreeContext = task.treeContext; + var totalChildren = 1; + var index = 0; + task.treeContext = pushTreeContext(prevTreeContext, totalChildren, index); + + try { + renderNodeDestructive(request, task, children); + } finally { + task.treeContext = prevTreeContext; + } + } else { + renderNodeDestructive(request, task, children); + } + + popComponentStackInDEV(task); +} + +function renderMemo(request, task, type, props, ref) { + var innerType = type.type; + var resolvedProps = resolveDefaultProps(innerType, props); + renderElement(request, task, innerType, resolvedProps, ref); +} + +function renderContextConsumer(request, task, context, props) { + // The logic below for Context differs depending on PROD or DEV mode. In + // DEV mode, we create a separate object for Context.Consumer that acts + // like a proxy to Context. This proxy object adds unnecessary code in PROD + // so we use the old behaviour (Context.Consumer references Context) to + // reduce size and overhead. The separate object references context via + // a property called "_context", which also gives us the ability to check + // in DEV mode if this property exists or not and warn if it does not. + { + if (context._context === undefined) { + // This may be because it's a Context (rather than a Consumer). + // Or it may be because it's older React where they're the same thing. + // We only want to warn if we're sure it's a new React. + if (context !== context.Consumer) { + if (!hasWarnedAboutUsingContextAsConsumer) { + hasWarnedAboutUsingContextAsConsumer = true; + + error('Rendering directly is not supported and will be removed in ' + 'a future major release. Did you mean to render instead?'); + } + } + } else { + context = context._context; + } + } + + var render = props.children; + + { + if (typeof render !== 'function') { + error('A context consumer was rendered with multiple children, or a child ' + "that isn't a function. A context consumer expects a single child " + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.'); + } + } + + var newValue = readContext(context); + var newChildren = render(newValue); + renderNodeDestructive(request, task, newChildren); +} + +function renderContextProvider(request, task, type, props) { + var context = type._context; + var value = props.value; + var children = props.children; + var prevSnapshot; + + { + prevSnapshot = task.context; + } + + task.context = pushProvider(context, value); + renderNodeDestructive(request, task, children); + task.context = popProvider(context); + + { + if (prevSnapshot !== task.context) { + error('Popping the context provider did not return back to the original snapshot. This is a bug in React.'); + } + } +} + +function renderLazyComponent(request, task, lazyComponent, props, ref) { + pushBuiltInComponentStackInDEV(task, 'Lazy'); + var payload = lazyComponent._payload; + var init = lazyComponent._init; + var Component = init(payload); + var resolvedProps = resolveDefaultProps(Component, props); + renderElement(request, task, Component, resolvedProps, ref); + popComponentStackInDEV(task); +} + +function renderElement(request, task, type, props, ref) { + if (typeof type === 'function') { + if (shouldConstruct$1(type)) { + renderClassComponent(request, task, type, props); + return; + } else { + renderIndeterminateComponent(request, task, type, props); + return; + } + } + + if (typeof type === 'string') { + renderHostElement(request, task, type, props); + return; + } + + switch (type) { + // TODO: LegacyHidden acts the same as a fragment. This only works + // because we currently assume that every instance of LegacyHidden is + // accompanied by a host component wrapper. In the hidden mode, the host + // component is given a `hidden` attribute, which ensures that the + // initial HTML is not visible. To support the use of LegacyHidden as a + // true fragment, without an extra DOM node, we would have to hide the + // initial HTML in some other way. + // TODO: Add REACT_OFFSCREEN_TYPE here too with the same capability. + case REACT_LEGACY_HIDDEN_TYPE: + case REACT_DEBUG_TRACING_MODE_TYPE: + case REACT_STRICT_MODE_TYPE: + case REACT_PROFILER_TYPE: + case REACT_FRAGMENT_TYPE: + { + renderNodeDestructive(request, task, props.children); + return; + } + + case REACT_SUSPENSE_LIST_TYPE: + { + pushBuiltInComponentStackInDEV(task, 'SuspenseList'); // TODO: SuspenseList should control the boundaries. + + renderNodeDestructive(request, task, props.children); + popComponentStackInDEV(task); + return; + } + + case REACT_SCOPE_TYPE: + { + + throw new Error('ReactDOMServer does not yet support scope components.'); + } + // eslint-disable-next-line-no-fallthrough + + case REACT_SUSPENSE_TYPE: + { + { + renderSuspenseBoundary(request, task, props); + } + + return; + } + } + + if (typeof type === 'object' && type !== null) { + switch (type.$$typeof) { + case REACT_FORWARD_REF_TYPE: + { + renderForwardRef(request, task, type, props, ref); + return; + } + + case REACT_MEMO_TYPE: + { + renderMemo(request, task, type, props, ref); + return; + } + + case REACT_PROVIDER_TYPE: + { + renderContextProvider(request, task, type, props); + return; + } + + case REACT_CONTEXT_TYPE: + { + renderContextConsumer(request, task, type, props); + return; + } + + case REACT_LAZY_TYPE: + { + renderLazyComponent(request, task, type, props); + return; + } + } + } + + var info = ''; + + { + if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { + info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and " + 'named imports.'; + } + } + + throw new Error('Element type is invalid: expected a string (for built-in ' + 'components) or a class/function (for composite components) ' + ("but got: " + (type == null ? type : typeof type) + "." + info)); +} + +function validateIterable(iterable, iteratorFn) { + { + // We don't support rendering Generators because it's a mutation. + // See https://github.com/facebook/react/issues/12995 + if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag + iterable[Symbol.toStringTag] === 'Generator') { + if (!didWarnAboutGenerators) { + error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.'); + } + + didWarnAboutGenerators = true; + } // Warn about using Maps as children + + + if (iterable.entries === iteratorFn) { + if (!didWarnAboutMaps) { + error('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.'); + } + + didWarnAboutMaps = true; + } + } +} + +function renderNodeDestructive(request, task, node) { + { + // In Dev we wrap renderNodeDestructiveImpl in a try / catch so we can capture + // a component stack at the right place in the tree. We don't do this in renderNode + // becuase it is not called at every layer of the tree and we may lose frames + try { + return renderNodeDestructiveImpl(request, task, node); + } catch (x) { + if (typeof x === 'object' && x !== null && typeof x.then === 'function') ; else { + // This is an error, stash the component stack if it is null. + lastBoundaryErrorComponentStackDev = lastBoundaryErrorComponentStackDev !== null ? lastBoundaryErrorComponentStackDev : getCurrentStackInDEV(); + } // rethrow so normal suspense logic can handle thrown value accordingly + + + throw x; + } + } +} // This function by it self renders a node and consumes the task by mutating it +// to update the current execution state. + + +function renderNodeDestructiveImpl(request, task, node) { + // Stash the node we're working on. We'll pick up from this task in case + // something suspends. + task.node = node; // Handle object types + + if (typeof node === 'object' && node !== null) { + switch (node.$$typeof) { + case REACT_ELEMENT_TYPE: + { + var element = node; + var type = element.type; + var props = element.props; + var ref = element.ref; + renderElement(request, task, type, props, ref); + return; + } + + case REACT_PORTAL_TYPE: + throw new Error('Portals are not currently supported by the server renderer. ' + 'Render them conditionally so that they only appear on the client render.'); + // eslint-disable-next-line-no-fallthrough + + case REACT_LAZY_TYPE: + { + var lazyNode = node; + var payload = lazyNode._payload; + var init = lazyNode._init; + var resolvedNode; + + { + try { + resolvedNode = init(payload); + } catch (x) { + if (typeof x === 'object' && x !== null && typeof x.then === 'function') { + // this Lazy initializer is suspending. push a temporary frame onto the stack so it can be + // popped off in spawnNewSuspendedTask. This aligns stack behavior between Lazy in element position + // vs Component position. We do not want the frame for Errors so we exclusively do this in + // the wakeable branch + pushBuiltInComponentStackInDEV(task, 'Lazy'); + } + + throw x; + } + } + + renderNodeDestructive(request, task, resolvedNode); + return; + } + } + + if (isArray(node)) { + renderChildrenArray(request, task, node); + return; + } + + var iteratorFn = getIteratorFn(node); + + if (iteratorFn) { + { + validateIterable(node, iteratorFn); + } + + var iterator = iteratorFn.call(node); + + if (iterator) { + // We need to know how many total children are in this set, so that we + // can allocate enough id slots to acommodate them. So we must exhaust + // the iterator before we start recursively rendering the children. + // TODO: This is not great but I think it's inherent to the id + // generation algorithm. + var step = iterator.next(); // If there are not entries, we need to push an empty so we start by checking that. + + if (!step.done) { + var children = []; + + do { + children.push(step.value); + step = iterator.next(); + } while (!step.done); + + renderChildrenArray(request, task, children); + return; + } + + return; + } + } + + var childString = Object.prototype.toString.call(node); + throw new Error("Objects are not valid as a React child (found: " + (childString === '[object Object]' ? 'object with keys {' + Object.keys(node).join(', ') + '}' : childString) + "). " + 'If you meant to render a collection of children, use an array ' + 'instead.'); + } + + if (typeof node === 'string') { + var segment = task.blockedSegment; + segment.lastPushedText = pushTextInstance$1(task.blockedSegment.chunks, node, request.responseState, segment.lastPushedText); + return; + } + + if (typeof node === 'number') { + var _segment = task.blockedSegment; + _segment.lastPushedText = pushTextInstance$1(task.blockedSegment.chunks, '' + node, request.responseState, _segment.lastPushedText); + return; + } + + { + if (typeof node === 'function') { + error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of from render. ' + 'Or maybe you meant to call this function rather than return it.'); + } + } +} + +function renderChildrenArray(request, task, children) { + var totalChildren = children.length; + + for (var i = 0; i < totalChildren; i++) { + var prevTreeContext = task.treeContext; + task.treeContext = pushTreeContext(prevTreeContext, totalChildren, i); + + try { + // We need to use the non-destructive form so that we can safely pop back + // up and render the sibling if something suspends. + renderNode(request, task, children[i]); + } finally { + task.treeContext = prevTreeContext; + } + } +} + +function spawnNewSuspendedTask(request, task, x) { + // Something suspended, we'll need to create a new segment and resolve it later. + var segment = task.blockedSegment; + var insertionIndex = segment.chunks.length; + var newSegment = createPendingSegment(request, insertionIndex, null, segment.formatContext, // Adopt the parent segment's leading text embed + segment.lastPushedText, // Assume we are text embedded at the trailing edge + true); + segment.children.push(newSegment); // Reset lastPushedText for current Segment since the new Segment "consumed" it + + segment.lastPushedText = false; + var newTask = createTask(request, task.node, task.blockedBoundary, newSegment, task.abortSet, task.legacyContext, task.context, task.treeContext); + + { + if (task.componentStack !== null) { + // We pop one task off the stack because the node that suspended will be tried again, + // which will add it back onto the stack. + newTask.componentStack = task.componentStack.parent; + } + } + + var ping = newTask.ping; + x.then(ping, ping); +} // This is a non-destructive form of rendering a node. If it suspends it spawns +// a new task and restores the context of this task to what it was before. + + +function renderNode(request, task, node) { + // TODO: Store segment.children.length here and reset it in case something + // suspended partially through writing something. + // Snapshot the current context in case something throws to interrupt the + // process. + var previousFormatContext = task.blockedSegment.formatContext; + var previousLegacyContext = task.legacyContext; + var previousContext = task.context; + var previousComponentStack = null; + + { + previousComponentStack = task.componentStack; + } + + try { + return renderNodeDestructive(request, task, node); + } catch (x) { + resetHooksState(); + + if (typeof x === 'object' && x !== null && typeof x.then === 'function') { + spawnNewSuspendedTask(request, task, x); // Restore the context. We assume that this will be restored by the inner + // functions in case nothing throws so we don't use "finally" here. + + task.blockedSegment.formatContext = previousFormatContext; + task.legacyContext = previousLegacyContext; + task.context = previousContext; // Restore all active ReactContexts to what they were before. + + switchContext(previousContext); + + { + task.componentStack = previousComponentStack; + } + + return; + } else { + // Restore the context. We assume that this will be restored by the inner + // functions in case nothing throws so we don't use "finally" here. + task.blockedSegment.formatContext = previousFormatContext; + task.legacyContext = previousLegacyContext; + task.context = previousContext; // Restore all active ReactContexts to what they were before. + + switchContext(previousContext); + + { + task.componentStack = previousComponentStack; + } // We assume that we don't need the correct context. + // Let's terminate the rest of the tree and don't render any siblings. + + + throw x; + } + } +} + +function erroredTask(request, boundary, segment, error) { + // Report the error to a global handler. + var errorDigest = logRecoverableError(request, error); + + if (boundary === null) { + fatalError(request, error); + } else { + boundary.pendingTasks--; + + if (!boundary.forceClientRender) { + boundary.forceClientRender = true; + boundary.errorDigest = errorDigest; + + { + captureBoundaryErrorDetailsDev(boundary, error); + } // Regardless of what happens next, this boundary won't be displayed, + // so we can flush it, if the parent already flushed. + + + if (boundary.parentFlushed) { + // We don't have a preference where in the queue this goes since it's likely + // to error on the client anyway. However, intentionally client-rendered + // boundaries should be flushed earlier so that they can start on the client. + // We reuse the same queue for errors. + request.clientRenderedBoundaries.push(boundary); + } + } + } + + request.allPendingTasks--; + + if (request.allPendingTasks === 0) { + var onAllReady = request.onAllReady; + onAllReady(); + } +} + +function abortTaskSoft(task) { + // This aborts task without aborting the parent boundary that it blocks. + // It's used for when we didn't need this task to complete the tree. + // If task was needed, then it should use abortTask instead. + var request = this; + var boundary = task.blockedBoundary; + var segment = task.blockedSegment; + segment.status = ABORTED; + finishedTask(request, boundary, segment); +} + +function abortTask(task, request, reason) { + // This aborts the task and aborts the parent that it blocks, putting it into + // client rendered mode. + var boundary = task.blockedBoundary; + var segment = task.blockedSegment; + segment.status = ABORTED; + + if (boundary === null) { + request.allPendingTasks--; // We didn't complete the root so we have nothing to show. We can close + // the request; + + if (request.status !== CLOSED) { + request.status = CLOSED; + + if (request.destination !== null) { + close(request.destination); + } + } + } else { + boundary.pendingTasks--; + + if (!boundary.forceClientRender) { + boundary.forceClientRender = true; + + var _error = reason === undefined ? new Error('The render was aborted by the server without a reason.') : reason; + + boundary.errorDigest = request.onError(_error); + + { + var errorPrefix = 'The server did not finish this Suspense boundary: '; + + if (_error && typeof _error.message === 'string') { + _error = errorPrefix + _error.message; + } else { + // eslint-disable-next-line react-internal/safe-string-coercion + _error = errorPrefix + String(_error); + } + + var previousTaskInDev = currentTaskInDEV; + currentTaskInDEV = task; + + try { + captureBoundaryErrorDetailsDev(boundary, _error); + } finally { + currentTaskInDEV = previousTaskInDev; + } + } + + if (boundary.parentFlushed) { + request.clientRenderedBoundaries.push(boundary); + } + } // If this boundary was still pending then we haven't already cancelled its fallbacks. + // We'll need to abort the fallbacks, which will also error that parent boundary. + + + boundary.fallbackAbortableTasks.forEach(function (fallbackTask) { + return abortTask(fallbackTask, request, reason); + }); + boundary.fallbackAbortableTasks.clear(); + request.allPendingTasks--; + + if (request.allPendingTasks === 0) { + var onAllReady = request.onAllReady; + onAllReady(); + } + } +} + +function queueCompletedSegment(boundary, segment) { + if (segment.chunks.length === 0 && segment.children.length === 1 && segment.children[0].boundary === null) { + // This is an empty segment. There's nothing to write, so we can instead transfer the ID + // to the child. That way any existing references point to the child. + var childSegment = segment.children[0]; + childSegment.id = segment.id; + childSegment.parentFlushed = true; + + if (childSegment.status === COMPLETED) { + queueCompletedSegment(boundary, childSegment); + } + } else { + var completedSegments = boundary.completedSegments; + completedSegments.push(segment); + } +} + +function finishedTask(request, boundary, segment) { + if (boundary === null) { + if (segment.parentFlushed) { + if (request.completedRootSegment !== null) { + throw new Error('There can only be one root segment. This is a bug in React.'); + } + + request.completedRootSegment = segment; + } + + request.pendingRootTasks--; + + if (request.pendingRootTasks === 0) { + // We have completed the shell so the shell can't error anymore. + request.onShellError = noop$1; + var onShellReady = request.onShellReady; + onShellReady(); + } + } else { + boundary.pendingTasks--; + + if (boundary.forceClientRender) ; else if (boundary.pendingTasks === 0) { + // This must have been the last segment we were waiting on. This boundary is now complete. + if (segment.parentFlushed) { + // Our parent segment already flushed, so we need to schedule this segment to be emitted. + // If it is a segment that was aborted, we'll write other content instead so we don't need + // to emit it. + if (segment.status === COMPLETED) { + queueCompletedSegment(boundary, segment); + } + } + + if (boundary.parentFlushed) { + // The segment might be part of a segment that didn't flush yet, but if the boundary's + // parent flushed, we need to schedule the boundary to be emitted. + request.completedBoundaries.push(boundary); + } // We can now cancel any pending task on the fallback since we won't need to show it anymore. + // This needs to happen after we read the parentFlushed flags because aborting can finish + // work which can trigger user code, which can start flushing, which can change those flags. + + + boundary.fallbackAbortableTasks.forEach(abortTaskSoft, request); + boundary.fallbackAbortableTasks.clear(); + } else { + if (segment.parentFlushed) { + // Our parent already flushed, so we need to schedule this segment to be emitted. + // If it is a segment that was aborted, we'll write other content instead so we don't need + // to emit it. + if (segment.status === COMPLETED) { + queueCompletedSegment(boundary, segment); + var completedSegments = boundary.completedSegments; + + if (completedSegments.length === 1) { + // This is the first time since we last flushed that we completed anything. + // We can schedule this boundary to emit its partially completed segments early + // in case the parent has already been flushed. + if (boundary.parentFlushed) { + request.partialBoundaries.push(boundary); + } + } + } + } + } + } + + request.allPendingTasks--; + + if (request.allPendingTasks === 0) { + // This needs to be called at the very end so that we can synchronously write the result + // in the callback if needed. + var onAllReady = request.onAllReady; + onAllReady(); + } +} + +function retryTask(request, task) { + var segment = task.blockedSegment; + + if (segment.status !== PENDING) { + // We completed this by other means before we had a chance to retry it. + return; + } // We restore the context to what it was when we suspended. + // We don't restore it after we leave because it's likely that we'll end up + // needing a very similar context soon again. + + + switchContext(task.context); + var prevTaskInDEV = null; + + { + prevTaskInDEV = currentTaskInDEV; + currentTaskInDEV = task; + } + + try { + // We call the destructive form that mutates this task. That way if something + // suspends again, we can reuse the same task instead of spawning a new one. + renderNodeDestructive(request, task, task.node); + pushSegmentFinale$1(segment.chunks, request.responseState, segment.lastPushedText, segment.textEmbedded); + task.abortSet.delete(task); + segment.status = COMPLETED; + finishedTask(request, task.blockedBoundary, segment); + } catch (x) { + resetHooksState(); + + if (typeof x === 'object' && x !== null && typeof x.then === 'function') { + // Something suspended again, let's pick it back up later. + var ping = task.ping; + x.then(ping, ping); + } else { + task.abortSet.delete(task); + segment.status = ERRORED; + erroredTask(request, task.blockedBoundary, segment, x); + } + } finally { + { + currentTaskInDEV = prevTaskInDEV; + } + } +} + +function performWork(request) { + if (request.status === CLOSED) { + return; + } + + var prevContext = getActiveContext(); + var prevDispatcher = ReactCurrentDispatcher$1.current; + ReactCurrentDispatcher$1.current = Dispatcher; + var prevGetCurrentStackImpl; + + { + prevGetCurrentStackImpl = ReactDebugCurrentFrame$1.getCurrentStack; + ReactDebugCurrentFrame$1.getCurrentStack = getCurrentStackInDEV; + } + + var prevResponseState = currentResponseState; + setCurrentResponseState(request.responseState); + + try { + var pingedTasks = request.pingedTasks; + var i; + + for (i = 0; i < pingedTasks.length; i++) { + var task = pingedTasks[i]; + retryTask(request, task); + } + + pingedTasks.splice(0, i); + + if (request.destination !== null) { + flushCompletedQueues(request, request.destination); + } + } catch (error) { + logRecoverableError(request, error); + fatalError(request, error); + } finally { + setCurrentResponseState(prevResponseState); + ReactCurrentDispatcher$1.current = prevDispatcher; + + { + ReactDebugCurrentFrame$1.getCurrentStack = prevGetCurrentStackImpl; + } + + if (prevDispatcher === Dispatcher) { + // This means that we were in a reentrant work loop. This could happen + // in a renderer that supports synchronous work like renderToString, + // when it's called from within another renderer. + // Normally we don't bother switching the contexts to their root/default + // values when leaving because we'll likely need the same or similar + // context again. However, when we're inside a synchronous loop like this + // we'll to restore the context to what it was before returning. + switchContext(prevContext); + } + } +} + +function flushSubtree(request, destination, segment) { + segment.parentFlushed = true; + + switch (segment.status) { + case PENDING: + { + // We're emitting a placeholder for this segment to be filled in later. + // Therefore we'll need to assign it an ID - to refer to it by. + var segmentID = segment.id = request.nextSegmentId++; // When this segment finally completes it won't be embedded in text since it will flush separately + + segment.lastPushedText = false; + segment.textEmbedded = false; + return writePlaceholder(destination, request.responseState, segmentID); + } + + case COMPLETED: + { + segment.status = FLUSHED; + var r = true; + var chunks = segment.chunks; + var chunkIdx = 0; + var children = segment.children; + + for (var childIdx = 0; childIdx < children.length; childIdx++) { + var nextChild = children[childIdx]; // Write all the chunks up until the next child. + + for (; chunkIdx < nextChild.index; chunkIdx++) { + writeChunk(destination, chunks[chunkIdx]); + } + + r = flushSegment(request, destination, nextChild); + } // Finally just write all the remaining chunks + + + for (; chunkIdx < chunks.length - 1; chunkIdx++) { + writeChunk(destination, chunks[chunkIdx]); + } + + if (chunkIdx < chunks.length) { + r = writeChunkAndReturn(destination, chunks[chunkIdx]); + } + + return r; + } + + default: + { + throw new Error('Aborted, errored or already flushed boundaries should not be flushed again. This is a bug in React.'); + } + } +} + +function flushSegment(request, destination, segment) { + var boundary = segment.boundary; + + if (boundary === null) { + // Not a suspense boundary. + return flushSubtree(request, destination, segment); + } + + boundary.parentFlushed = true; // This segment is a Suspense boundary. We need to decide whether to + // emit the content or the fallback now. + + if (boundary.forceClientRender) { + // Emit a client rendered suspense boundary wrapper. + // We never queue the inner boundary so we'll never emit its content or partial segments. + writeStartClientRenderedSuspenseBoundary$1(destination, request.responseState, boundary.errorDigest, boundary.errorMessage, boundary.errorComponentStack); // Flush the fallback. + + flushSubtree(request, destination, segment); + return writeEndClientRenderedSuspenseBoundary$1(destination, request.responseState); + } else if (boundary.pendingTasks > 0) { + // This boundary is still loading. Emit a pending suspense boundary wrapper. + // Assign an ID to refer to the future content by. + boundary.rootSegmentID = request.nextSegmentId++; + + if (boundary.completedSegments.length > 0) { + // If this is at least partially complete, we can queue it to be partially emitted early. + request.partialBoundaries.push(boundary); + } /// This is the first time we should have referenced this ID. + + + var id = boundary.id = assignSuspenseBoundaryID(request.responseState); + writeStartPendingSuspenseBoundary(destination, request.responseState, id); // Flush the fallback. + + flushSubtree(request, destination, segment); + return writeEndPendingSuspenseBoundary(destination, request.responseState); + } else if (boundary.byteSize > request.progressiveChunkSize) { + // This boundary is large and will be emitted separately so that we can progressively show + // other content. We add it to the queue during the flush because we have to ensure that + // the parent flushes first so that there's something to inject it into. + // We also have to make sure that it's emitted into the queue in a deterministic slot. + // I.e. we can't insert it here when it completes. + // Assign an ID to refer to the future content by. + boundary.rootSegmentID = request.nextSegmentId++; + request.completedBoundaries.push(boundary); // Emit a pending rendered suspense boundary wrapper. + + writeStartPendingSuspenseBoundary(destination, request.responseState, boundary.id); // Flush the fallback. + + flushSubtree(request, destination, segment); + return writeEndPendingSuspenseBoundary(destination, request.responseState); + } else { + // We can inline this boundary's content as a complete boundary. + writeStartCompletedSuspenseBoundary$1(destination, request.responseState); + var completedSegments = boundary.completedSegments; + + if (completedSegments.length !== 1) { + throw new Error('A previously unvisited boundary must have exactly one root segment. This is a bug in React.'); + } + + var contentSegment = completedSegments[0]; + flushSegment(request, destination, contentSegment); + return writeEndCompletedSuspenseBoundary$1(destination, request.responseState); + } +} + +function flushClientRenderedBoundary(request, destination, boundary) { + return writeClientRenderBoundaryInstruction(destination, request.responseState, boundary.id, boundary.errorDigest, boundary.errorMessage, boundary.errorComponentStack); +} + +function flushSegmentContainer(request, destination, segment) { + writeStartSegment(destination, request.responseState, segment.formatContext, segment.id); + flushSegment(request, destination, segment); + return writeEndSegment(destination, segment.formatContext); +} + +function flushCompletedBoundary(request, destination, boundary) { + var completedSegments = boundary.completedSegments; + var i = 0; + + for (; i < completedSegments.length; i++) { + var segment = completedSegments[i]; + flushPartiallyCompletedSegment(request, destination, boundary, segment); + } + + completedSegments.length = 0; + return writeCompletedBoundaryInstruction(destination, request.responseState, boundary.id, boundary.rootSegmentID); +} + +function flushPartialBoundary(request, destination, boundary) { + var completedSegments = boundary.completedSegments; + var i = 0; + + for (; i < completedSegments.length; i++) { + var segment = completedSegments[i]; + + if (!flushPartiallyCompletedSegment(request, destination, boundary, segment)) { + i++; + completedSegments.splice(0, i); // Only write as much as the buffer wants. Something higher priority + // might want to write later. + + return false; + } + } + + completedSegments.splice(0, i); + return true; +} + +function flushPartiallyCompletedSegment(request, destination, boundary, segment) { + if (segment.status === FLUSHED) { + // We've already flushed this inline. + return true; + } + + var segmentID = segment.id; + + if (segmentID === -1) { + // This segment wasn't previously referred to. This happens at the root of + // a boundary. We make kind of a leap here and assume this is the root. + var rootSegmentID = segment.id = boundary.rootSegmentID; + + if (rootSegmentID === -1) { + throw new Error('A root segment ID must have been assigned by now. This is a bug in React.'); + } + + return flushSegmentContainer(request, destination, segment); + } else { + flushSegmentContainer(request, destination, segment); + return writeCompletedSegmentInstruction(destination, request.responseState, segmentID); + } +} + +function flushCompletedQueues(request, destination) { + + try { + // The structure of this is to go through each queue one by one and write + // until the sink tells us to stop. When we should stop, we still finish writing + // that item fully and then yield. At that point we remove the already completed + // items up until the point we completed them. + // TODO: Emit preloading. + // TODO: It's kind of unfortunate to keep checking this array after we've already + // emitted the root. + var completedRootSegment = request.completedRootSegment; + + if (completedRootSegment !== null && request.pendingRootTasks === 0) { + flushSegment(request, destination, completedRootSegment); + request.completedRootSegment = null; + writeCompletedRoot(destination, request.responseState); + } // We emit client rendering instructions for already emitted boundaries first. + // This is so that we can signal to the client to start client rendering them as + // soon as possible. + + + var clientRenderedBoundaries = request.clientRenderedBoundaries; + var i; + + for (i = 0; i < clientRenderedBoundaries.length; i++) { + var boundary = clientRenderedBoundaries[i]; + + if (!flushClientRenderedBoundary(request, destination, boundary)) { + request.destination = null; + i++; + clientRenderedBoundaries.splice(0, i); + return; + } + } + + clientRenderedBoundaries.splice(0, i); // Next we emit any complete boundaries. It's better to favor boundaries + // that are completely done since we can actually show them, than it is to emit + // any individual segments from a partially complete boundary. + + var completedBoundaries = request.completedBoundaries; + + for (i = 0; i < completedBoundaries.length; i++) { + var _boundary = completedBoundaries[i]; + + if (!flushCompletedBoundary(request, destination, _boundary)) { + request.destination = null; + i++; + completedBoundaries.splice(0, i); + return; + } + } + + completedBoundaries.splice(0, i); // Allow anything written so far to flush to the underlying sink before + // we continue with lower priorities. + + completeWriting(destination); + beginWriting(destination); // TODO: Here we'll emit data used by hydration. + // Next we emit any segments of any boundaries that are partially complete + // but not deeply complete. + + var partialBoundaries = request.partialBoundaries; + + for (i = 0; i < partialBoundaries.length; i++) { + var _boundary2 = partialBoundaries[i]; + + if (!flushPartialBoundary(request, destination, _boundary2)) { + request.destination = null; + i++; + partialBoundaries.splice(0, i); + return; + } + } + + partialBoundaries.splice(0, i); // Next we check the completed boundaries again. This may have had + // boundaries added to it in case they were too larged to be inlined. + // New ones might be added in this loop. + + var largeBoundaries = request.completedBoundaries; + + for (i = 0; i < largeBoundaries.length; i++) { + var _boundary3 = largeBoundaries[i]; + + if (!flushCompletedBoundary(request, destination, _boundary3)) { + request.destination = null; + i++; + largeBoundaries.splice(0, i); + return; + } + } + + largeBoundaries.splice(0, i); + } finally { + + if (request.allPendingTasks === 0 && request.pingedTasks.length === 0 && request.clientRenderedBoundaries.length === 0 && request.completedBoundaries.length === 0 // We don't need to check any partially completed segments because + // either they have pending task or they're complete. + ) { + { + if (request.abortableTasks.size !== 0) { + error('There was still abortable task at the root when we closed. This is a bug in React.'); + } + } // We're done. + + + close(destination); + } + } +} + +function startWork(request) { + scheduleWork(function () { + return performWork(request); + }); +} +function startFlowing(request, destination) { + if (request.status === CLOSING) { + request.status = CLOSED; + closeWithError(destination, request.fatalError); + return; + } + + if (request.status === CLOSED) { + return; + } + + if (request.destination !== null) { + // We're already flowing. + return; + } + + request.destination = destination; + + try { + flushCompletedQueues(request, destination); + } catch (error) { + logRecoverableError(request, error); + fatalError(request, error); + } +} // This is called to early terminate a request. It puts all pending boundaries in client rendered state. + +function abort(request, reason) { + try { + var abortableTasks = request.abortableTasks; + abortableTasks.forEach(function (task) { + return abortTask(task, request, reason); + }); + abortableTasks.clear(); + + if (request.destination !== null) { + flushCompletedQueues(request, request.destination); + } + } catch (error) { + logRecoverableError(request, error); + fatalError(request, error); + } +} + +function onError() {// Non-fatal errors are ignored. +} + +function renderToStringImpl(children, options, generateStaticMarkup, abortReason) { + var didFatal = false; + var fatalError = null; + var result = ''; + var destination = { + push: function (chunk) { + if (chunk !== null) { + result += chunk; + } + + return true; + }, + destroy: function (error) { + didFatal = true; + fatalError = error; + } + }; + var readyToStream = false; + + function onShellReady() { + readyToStream = true; + } + + var request = createRequest(children, createResponseState$1(generateStaticMarkup, options ? options.identifierPrefix : undefined), createRootFormatContext(), Infinity, onError, undefined, onShellReady, undefined, undefined); + startWork(request); // If anything suspended and is still pending, we'll abort it before writing. + // That way we write only client-rendered boundaries from the start. + + abort(request, abortReason); + startFlowing(request, destination); + + if (didFatal) { + throw fatalError; + } + + if (!readyToStream) { + // Note: This error message is the one we use on the client. It doesn't + // really make sense here. But this is the legacy server renderer, anyway. + // We're going to delete it soon. + throw new Error('A component suspended while responding to synchronous input. This ' + 'will cause the UI to be replaced with a loading indicator. To fix, ' + 'updates that suspend should be wrapped with startTransition.'); + } + + return result; +} + +function renderToString(children, options) { + return renderToStringImpl(children, options, false, 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server'); +} + +function renderToStaticMarkup(children, options) { + return renderToStringImpl(children, options, true, 'The server used "renderToStaticMarkup" which does not support Suspense. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server'); +} + +function renderToNodeStream() { + throw new Error('ReactDOMServer.renderToNodeStream(): The streaming API is not available ' + 'in the browser. Use ReactDOMServer.renderToString() instead.'); +} + +function renderToStaticNodeStream() { + throw new Error('ReactDOMServer.renderToStaticNodeStream(): The streaming API is not available ' + 'in the browser. Use ReactDOMServer.renderToStaticMarkup() instead.'); +} + +exports.renderToNodeStream = renderToNodeStream; +exports.renderToStaticMarkup = renderToStaticMarkup; +exports.renderToStaticNodeStream = renderToStaticNodeStream; +exports.renderToString = renderToString; +exports.version = ReactVersion; + })(); +} diff --git a/site/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js b/site/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js new file mode 100644 index 0000000..1568365 --- /dev/null +++ b/site/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js @@ -0,0 +1,93 @@ +/** + * @license React + * react-dom-server-legacy.browser.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +'use strict';var aa=require("react");function l(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,c=1;c